bio3d/0000755000176200001440000000000014710271132011250 5ustar liggesusersbio3d/tests/0000755000176200001440000000000014707230617012423 5ustar liggesusersbio3d/tests/testthat/0000755000176200001440000000000014710271132014252 5ustar liggesusersbio3d/tests/testthat/test-atom.select.R0000644000176200001440000001042014707230357017577 0ustar liggesuserscontext("Testing atom.select function") test_that("atom.select() gets correct selections with various options", { # Use the curated test-purpose pdb file file <- system.file("examples/test.pdb", package="bio3d") # invisible(capture.output(pdb <- read.pdb(file, rm.alt = FALSE))) invisible(capture.output(pdb <- read.pdb(file))) # Select all atoms: omit 1 ALT capture.output(all.inds <- atom.select(pdb, "all")) expect_equal(length(all.inds$atom), 175) # Select chain A: return everything in chain A capture.output(a.inds <- atom.select(pdb, chain = "A")) expect_equal(a.inds$xyz, atom2xyz(a.inds$atom)) # self-consistent expect_equal(length(a.inds$atom), 98) expect_equal(a.inds$atom[1], 1) expect_equal(a.inds$atom[98], 170) # Select protein: omit 1 ALT # omit 2 'unknown' AA capture.output(pro.inds <- atom.select(pdb, "protein")$atom) expect_equal(length(pro.inds), 103) # Select C-alpha: omit 2 'unknown' AA # omit 1 with missing 'CA' capture.output(ca.inds <- atom.select(pdb, "calpha")$atom) expect_equal(length(ca.inds), 7) expect_equal(ca.inds[c(1, 5, 7)], c(3, 53, 110)) capture.output(ca2.inds <- atom.select(pdb, elety = "CA")$atom) expect_equal(length(ca2.inds), 10) # include calcium # Select 'N': return the number of all amino acids capture.output(cb.inds <- atom.select(pdb, elety = "N")$atom) expect_equal(length(cb.inds), 10) # Select 'unknown' AA capture.output(unk.inds <- atom.select(pdb, resid = "TES")$atom) expect_equal(length(unk.inds), 26) expect_equal(unk.inds[c(3, 13)], c(10, 94)) # Select 'ATOM' record: omit 1 'ALT' capture.output(ATOM.inds <- atom.select(pdb, type = "ATOM")$atom) expect_equal(length(ATOM.inds), 129) # Select first 5 CA atoms by 'eleno' capture.output(ca5.inds <- atom.select(pdb, eleno = c(3, 10, 20, 27, 42))$atom) expect_equal(length(ca5.inds), 5) expect_true(all(pdb$atom[ca5.inds, "elety"] == "CA")) # Select hydrogen/ligand/water capture.output(h.inds <- atom.select(pdb, "h")$atom) expect_equal(length(h.inds), 77) capture.output(lig.inds <- atom.select(pdb, "ligand")$atom) expect_equal(length(lig.inds), 67) # include "TES" capture.output(wat.inds <- atom.select(pdb, "water")$atom) expect_equal(length(wat.inds), 5) capture.output(ion.inds <- atom.select(pdb, resid = "CA")$atom) expect_equal(ion.inds, 170) capture.output(gdp.inds <- atom.select(pdb, resid = "GDP")$atom) expect_equal(length(gdp.inds), 40) # More string test capture.output(bb.inds <- atom.select(pdb, "backbone")$atom) capture.output(bb2.inds <- atom.select(pdb, "back")$atom) expect_equal(bb.inds, bb2.inds) expect_equal(length(bb.inds), 31) capture.output(cb2.inds <- atom.select(pdb, "cbeta")$atom) expect_equal(length(cb2.inds), 36) capture.output(npro.inds <- atom.select(pdb, "notprotein")$atom) capture.output(npro2.inds <- atom.select(pdb, "protein", inverse = TRUE)$atom) expect_equal(npro.inds, npro2.inds) expect_equal(length(intersect(pro.inds, npro.inds)), 0) expect_equal(length(pro.inds) + length(npro.inds), nrow(pdb$atom)) # omit ALT capture.output(nwat.inds <- atom.select(pdb, "notwater")$atom) capture.output(nwat2.inds <- atom.select(pdb, "water", inverse = TRUE)$atom) expect_equal(nwat.inds, nwat2.inds) expect_equal(length(intersect(wat.inds, nwat.inds)), 0) expect_equal(length(wat.inds) + length(nwat.inds), nrow(pdb$atom)) # omit ALT capture.output(noh.inds <- atom.select(pdb, "noh")$atom) capture.output(noh2.inds <- atom.select(pdb, "h", inverse = TRUE)$atom) expect_equal(noh.inds, noh2.inds) expect_equal(length(intersect(h.inds, noh.inds)), 0) expect_equal(length(h.inds) + length(noh.inds), nrow(pdb$atom)) # omit ALT # Test on combination of select capture.output(comb1.inds <- atom.select(pdb, chain = "B", resno = c(1,4))) expect_equal(length(comb1.inds$atom), 33) # omit ALT capture.output(comb2.inds <- atom.select(pdb, resid = "GDP", elety = "PA") ) expect_equal(comb2.inds$atom, 135) capture.output(comb3.inds <- atom.select(pdb, "noh", resid = "TES", chain = "A") ) expect_equal(comb3.inds$atom, c(8, 10, 12, 16, 17)) capture.output(comb4.inds <- atom.select(pdb, chain = "B", resid = "GDP", operator = "OR") ) expect_equal(length(comb4.inds$atom), 117) }) bio3d/tests/testthat/test-clean.pdb.R0000644000176200001440000000565414707230357017224 0ustar liggesuserscontext("Testing the utility function clean.pdb()") test_that("clean.pdb() does nothing for 'clean' pdb by default", { file <- system.file("examples/1dpx.pdb", package="bio3d") invisible(capture.output(pdb <- read.pdb(file))) suppressWarnings( invisible(capture.output(npdb <- clean.pdb(pdb))) ) expect_true(is.null(npdb$log)) npdb$call <- NULL npdb$log <- NULL pdb$call <- NULL expect_equal(pdb, npdb) }) test_that("clean.pdb() does renumbering properly", { skip_on_cran() skip_on_travis() suppressWarnings( invisible(capture.output(pdb <- read.pdb("1tag"))) ) invisible(capture.output(npdb <- clean.pdb(pdb, force.renumber = TRUE))) resno <- npdb$atom[npdb$calpha, "resno"] expect_equal(resno[1:10], 1:10) # A PDB with 'insert' residues: Should do automatic renumbering invisible(capture.output(pdb <- read.pdb("1a7l"))) invisible(capture.output(npdb <- clean.pdb(pdb))) resno <- npdb$atom[npdb$calpha, "resno"] expect_equal(resno[1:10], 1:10) # Renumbering for each chain invisible(capture.output(npdb <- clean.pdb(pdb, consecutive = FALSE))) resno <- npdb$atom[npdb$calpha, "resno"] chain <- npdb$atom[npdb$calpha, "chain"] expect_equal(resno[chain=="B"][1:10], 1:10) # Is SSE update correct? invisible(capture.output(ss <- pdb2sse(pdb))) invisible(capture.output(nss <- pdb2sse(npdb))) expect_equal(as.character(ss), as.character(nss)) } ) test_that("clean.pdb() relabels chains properly (fix.chain = TRUE)", { file <- system.file("examples/1dpx.pdb", package="bio3d") invisible(capture.output(pdb <- read.pdb(file))) # remove chain ID pdb$atom[, "chain"] <- as.character(NA) pdb$helix$chain <- "" pdb$sheet$chain <- "" suppressWarnings( invisible(capture.output(npdb <- clean.pdb(pdb, fix.chain = TRUE))) ) expect_equal(npdb$atom[npdb$calpha, "chain"], rep("A", sum(npdb$calpha))) # A case with wrong chain labels but consecutive residue numbering file <- system.file("examples/hivp.pdb", package="bio3d") invisible(capture.output(pdb0 <- read.pdb(file))) # Manually renumbering all residues pdb <- pdb0 pdb$atom[, "resno"] <- vec2resno(1:sum(pdb$calpha), paste(pdb$atom[, "resno"], pdb$atom[, "chain"], sep = "_") ) # Label both chains as "A" pdb$atom[, "chain"] <- "A" # Update SSE pdb$helix$start[pdb$helix$chain=='B'] <- pdb$helix$start[pdb$helix$chain=='B'] + 99 pdb$helix$end[pdb$helix$chain=='B'] <- pdb$helix$end[pdb$helix$chain=='B'] + 99 pdb$sheet$start[pdb$sheet$chain=='B'] <- pdb$sheet$start[pdb$sheet$chain=='B'] + 99 pdb$sheet$end[pdb$sheet$chain=='B'] <- pdb$sheet$end[pdb$sheet$chain=='B'] + 99 pdb$helix$chain[] <- 'A' pdb$sheet$chain[] <- 'A' suppressWarnings( invisible(capture.output(npdb <- clean.pdb(pdb, consecutive = FALSE, force.renumber = TRUE, fix.chain = TRUE))) ) pdb0$call <- NULL npdb$call <- NULL npdb$log <- NULL expect_equal(pdb0, npdb) } ) bio3d/tests/testthat/test-dccm.R0000644000176200001440000000454414707230357016301 0ustar liggesuserscontext("Testing dccm functions") test_that("Correlation matrix from NMA", { ## Calculate correl mat on a small protein file <- system.file("examples/1hel.pdb",package="bio3d") invisible(capture.output(pdb <- read.pdb(file))) invisible(capture.output(modes <- nma(pdb))) invisible(capture.output(cm <- dccm.nma(modes, ncore=1))) expect_that(cm[1,1], equals(1, tolerance=1e-6)) expect_that(cm[1,2], equals(0.4380029, tolerance=1e-6)) expect_that(cm[1,3], equals(0.1407395, tolerance=1e-6)) expect_that(cm[1,3], equals(cm[3,1])) expect_that(sum(cm), equals(57.71768, tolerance=1e-6)) ## Check multicore DCCM invisible(capture.output(cm.mc <- dccm.nma(modes, ncore=NULL))) expect_that(cm, equals(cm.mc, tolerance=1e-6)) } ) test_that("Correlation matrix from XYZ (dccm.xyz)", { skip_on_cran() ## Calculate correl mat on a short HIV protease simulation trjfile <- system.file("examples/hivp.dcd", package="bio3d") invisible(capture.output(trj <- read.dcd(trjfile))) invisible(capture.output(cm <- dccm(trj, ncore=1))) expect_that(cm[1,1], equals(1, tolerance=1e-6)) expect_that(cm[1,2], equals(0.997, tolerance=1e-3)) expect_that(cm[1,3], equals(0.992, tolerance=1e-3)) expect_that(cm[1,3], equals(cm[3,1])) ## Check multicore DCCM skip_on_travis() invisible(capture.output(cm.mc <- dccm(trj, ncore=NULL))) expect_that(cm, equals(cm.mc, tolerance=1e-6)) }) test_that("Correlation matrix from PCA (dccm.pca)", { skip_on_cran() ## Calculate correl mat on a short HIV protease simulation trjfile <- system.file("examples/hivp.dcd", package="bio3d") invisible(capture.output(trj <- read.dcd(trjfile))) invisible(capture.output(xyz <- fit.xyz(trj[1, ], trj[1:20, ], 1:ncol(trj), 1:ncol(trj)) )) invisible(capture.output(pca <- pca.xyz(xyz))) invisible(capture.output(cm <- dccm(pca, ncore = 1))) pca$z <- NULL invisible(capture.output(cm2 <- dccm(pca, ncore = 1))) expect_that(cm[1,1], equals(1, tolerance=1e-6)) expect_that(cm[1,2], equals(0.627, tolerance=1e-3)) expect_that(cm[1,3], equals(0.632, tolerance=1e-3)) expect_that(cm[1,3], equals(cm[3,1])) expect_that(cm, equals(cm2, tolerance=1e-6)) ## Check multicore DCCM skip_on_travis() invisible(capture.output(cm.mc <- dccm(pca, ncore=NULL))) expect_that(cm, equals(cm.mc, tolerance=1e-6)) }) bio3d/tests/testthat/test-rmsd.R0000644000176200001440000000333514707230357016335 0ustar liggesuserscontext("Testing RMSD function") test_that("rmsd() gets the same results as PyMOL", { file <- system.file(c("examples/1hel.pdb", "examples/1dpx.pdb"), package="bio3d") invisible(capture.output(pdb.a <- read.pdb(file[1]))) invisible(capture.output(pdb.b <- read.pdb(file[2]))) invisible(capture.output(inds.a <- atom.select(pdb.a, "calpha"))) invisible(capture.output(inds.b <- atom.select(pdb.b, "calpha"))) rd1 <- rmsd(a=pdb.a$xyz, b=pdb.b$xyz, a.inds=inds.a$xyz, b.inds=inds.b$xyz, fit=FALSE) rd2 <- rmsd(a=pdb.a$xyz, b=pdb.b$xyz, a.inds=inds.a$xyz, b.inds=inds.b$xyz, fit=TRUE) ## with pymol "pair_fit 1hel and name CA, 1dpx and name CA" = 0.293 rmsd1 <- 1.386 rmsd2 <- 0.293 expect_equal(round(rd1, 3), rmsd1) expect_equal(round(rd2, 3), rmsd2) }) test_that("rmsd() with ncore>1 works properly", { file <- system.file(c("examples/1hel.pdb", "examples/1dpx.pdb"), package="bio3d") invisible(capture.output(pdb.a <- read.pdb(file[1]))) invisible(capture.output(pdb.b <- read.pdb(file[2]))) invisible(capture.output(inds.a <- atom.select(pdb.a, "calpha"))) invisible(capture.output(inds.b <- atom.select(pdb.b, "calpha"))) ## check if ncore > 1 is really faster time1 <- system.time(rmsd1 <- rmsd(a=pdb.a$xyz, b=pdb.b$xyz, a.inds=inds.a$xyz, b.inds=inds.b$xyz, fit=TRUE, ncore=1)) time2 <- system.time(rmsd2 <- rmsd(a=pdb.a$xyz, b=pdb.b$xyz, a.inds=inds.a$xyz, b.inds=inds.b$xyz, fit=TRUE, ncore=NULL)) ##time1 <- time1["elapsed"] ##time2 <- time2["elapsed"] # expect_equivalent(rmsd1, rmsd2) expect_equal(rmsd1, rmsd2, tolerance=1e-6) # cat("Speed up by", round((time1-time2)/time2, 1)*100, "%", sep="") # if(getOption("cores") > 1) # expect_true(time1 > time2) }) bio3d/tests/testthat/test-gnm.R0000644000176200001440000000374014707230357016151 0ustar liggesuserscontext("Testing gnm()") test_that("GNM", { "mysign" <- function(a,b) { if(all(sign(a)==sign(b))) return(1) else return(-1) } ## Simple test with PDB ID 1HEL file <- system.file("examples/1hel.pdb",package="bio3d") invisible(capture.output(pdb <- read.pdb(file))) ## Calculate modes with default arguments invisible(capture.output(modes <- gnm.pdb(pdb) ) ) ## NOTE: all following reference results are from Prody ## Check first eigenvector U2 <- c( -0.020, 0.008, 0.026, 0.052, 0.069, 0.086) nowU2 <- round(head(modes$U[, 2]), 3) expect_that(nowU2 * mysign(U2, nowU2), equals(U2, tolerance=1e-6)) ## Check second eigenvector U3 <- c(0.050, 0.064, 0.084, 0.110, 0.105, 0.145) nowU3 <- round(head(modes$U[,3]), 3) expect_that(nowU3 * mysign(U3, nowU3), equals(U3, tolerance=1e-6)) ## Check eigenvalues eival <- c(0.342, 0.804, 1.108, 1.277, 1.416, 1.617) nowEival <- round(modes$L[2:7], 3) expect_that(nowEival, equals(eival, tolerance=1e-6)) ## Dimensions expect_that(dim(modes$U), equals(c(129, 129))) expect_that(length(modes$L), equals(129)) expect_that(modes$natoms, equals(129)) expect_that(modes$temp, equals(300)) ## Orthognals expect_that(as.numeric(modes$U[,2] %*% modes$U[,2]), equals(1, tolerance=1e-6)) expect_that(all(round(c(modes$U[,2] %*% modes$U[, 3:ncol(modes$U)]), 6)==0), equals(TRUE)) expect_that(all(round(c(modes$L[1]), 6)==0), equals(TRUE)) ## fluctuations (NOTE: Prody results are scaled here by the thermodynamic factor 3*k_B*T) flucts <- c( 1.379, 1.370, 1.108, 1.425, 1.044, 1.202, 1.315, 0.976, 0.855, 1.173 ) nowFlucts <- round(modes$fluctuations[1:10], 3) expect_that(nowFlucts, equals(flucts, tolerance=1e-6)) ## Covariance # vcov <- c( 0.368, 0.293, 0.118, 0.032, -0.019, 0.037, 0.032, -0.040, -0.039, -0.020 ) # nowVcov <- round(cov.nma(modes)[1, 2:11], 3) # expect_that(nowVcov, equals(vcov, tolerance=1e-6)) } ) bio3d/tests/testthat/test-seqaln.R0000644000176200001440000000270614707250016016646 0ustar liggesuserscontext("Testing seqaln") test_that("seqaln works", { skip_on_cran() skip_on_travis() skip_if_not(check.utility("muscle"), message = "Need MUSCLE installed to run the test") ## seqaln with one sequence. should remove gaps seqs <- c("X", "-", "-", "A", "C", "A", "G", "K", "-") suppressWarnings( aln <- seqaln(seqs) ) expected <- c("X", "A", "C", "A", "G", "K") expect_identical(c(aln$ali), expected) ## align two sequences seqs <- seqbind(seqs, c("C", "A", "G", "G", "A", "G", "K")) aln <- seqaln(seqs) expected <- seqbind(c("-", "X", "A", "C", "A", "G", "K"), c("C", "A", "G", "G", "A", "G", "K")) expect_identical(aln$ali, expected$ali) ## add a sequence to the (profile) alignment seq <- c("G", "A", "G", "K", "-") aln <- seqaln(seq, profile=aln) rownames(aln$ali) <- paste0("seq", 1:3) expected <- seqbind(c("-", "X", "A", "C", "A", "G", "K", "-"), c("C", "A", "G", "G", "A", "G", "K", "-"), c("-", "-", "-", "G", "A", "G", "K", "-")) expect_identical(aln$ali, expected$ali) ## test 'msa' option if( requireNamespace("msa", quietly=TRUE) ) { capture.output( seqs <- get.seq(c("4q21_A", "1ftn_A"), outfile=tempfile()) ) aln <- seqaln(seqs, outfile=tempfile()) aln2 <- seqaln(seqs, outfile=tempfile(), exefile="msa") aln$call <- NULL; aln2$call <- NULL expect_identical(aln, aln2) } }) bio3d/tests/testthat/test-aanma.R0000644000176200001440000001561714707230357016453 0ustar liggesuserscontext("Testing aanma()") test_that("aanma based all-atom NMA works", { skip_on_cran() # skip_on_travis() "mysign" <- function(a,b) { if(all(sign(a)==sign(b))) return(1) else return(-1) } ## Simple test with PDB ID 1HEL file <- system.file("examples/1hel.pdb",package="bio3d") invisible(capture.output(pdb <- read.pdb(file))) ## Calculate modes with default arguments invisible(capture.output(modes <- aanma(pdb, pfc.fun=load.enmff('aaenm2'), mass=TRUE, temp=300.0))) ## Check first eigenvector U7 <- c(-0.066793729, -0.053883268, 0.001891979, -0.036738304, -0.047565978, 0.001753576) nowU7 <- head(modes$U[,7]) expect_that(nowU7 * mysign(U7, nowU7), equals(U7, tolerance=1e-4)) ## Check second eigenvector U8 <- c(-0.0006820437, -0.0063015252, -0.0172583581, -0.0208773865, -0.0077078236, -0.0197741642) nowU8 <- head(modes$U[,8]) expect_that(nowU8 * mysign(U8, nowU8), equals(U8, tolerance=1e-4)) ## Check eigenvalues eival <- c(0.012147, 0.016651, 0.025490, 0.034212, 0.040073, 0.048434) nowEival <- modes$L[7:12] expect_that(nowEival, equals(eival, tolerance=1e-4)) ## Dimensions expect_that(dim(modes$U), equals(c(387, 387))) expect_that(dim(modes$modes), equals(c(387, 387))) expect_that(length(modes$L), equals(387)) expect_that(length(modes$frequencies), equals(387)) expect_that(length(modes$mass), equals(129)) expect_that(modes$natoms, equals(129)) expect_that(modes$temp, equals(300)) ## Orthognals tmpU <- crossprod(modes$U, modes$U) expect_true(all(round(diag(tmpU), 6)==1)) expect_true(all(round(tmpU[upper.tri(tmpU)], 6)==0)) expect_that(all(round(c(modes$L[1:6]), 6)==0), equals(TRUE)) ################################################################### # # Test with reduced = TRUE # ################################################################### ## Calculate modes invisible(capture.output(modes <- aanma(pdb, pfc.fun=load.enmff('aaenm2'), mass=TRUE, temp=300.0, reduced=TRUE))) ## Check first eigenvector U7 <- c(-0.059992473, -0.053860808, 0.002632462, -0.038492062, -0.060252657, 0.002212016) nowU7 <- head(modes$U[,7]) expect_that(nowU7 * mysign(U7, nowU7), equals(U7, tolerance=1e-4)) ## Check second eigenvector U8 <- c(-0.008837969, -0.003401558, 0.018160517, 0.018834639, -0.002279249, 0.022343009) nowU8 <- head(modes$U[,8]) expect_that(nowU8 * mysign(U8, nowU8), equals(U8, tolerance=1e-4)) ## Check eigenvalues eival <- c(0.005865, 0.007781, 0.010644, 0.015755, 0.019162, 0.020037) nowEival <- modes$L[7:12] expect_that(nowEival, equals(eival, tolerance=1e-4)) ## Orthognals tmpU <- crossprod(modes$U, modes$U) expect_true(all(round(diag(tmpU), 6)==1)) expect_true(all(round(tmpU[upper.tri(tmpU)], 6)==0)) expect_that(all(round(c(modes$L[1:6]), 6)==0), equals(TRUE)) ################################################################### # # Test with rtb = TRUE # ################################################################### ## Calculate modes invisible(capture.output(modes <- aanma(pdb, pfc.fun=load.enmff('aaenm2'), mass=TRUE, temp=300.0, rtb=TRUE))) ## Check first eigenvector U7 <- c(0.067011206, 0.053922543, -0.001093240, 0.036319837, 0.047227389, -0.001719102) nowU7 <- head(modes$U[,7]) expect_that(nowU7 * mysign(U7, nowU7), equals(U7, tolerance=1e-4)) ## Check second eigenvector U8 <- c(0.0007543764, 0.0061986220, 0.0164859315, 0.0207461840, 0.0078183773, 0.0195714639) nowU8 <- head(modes$U[,8]) expect_that(nowU8 * mysign(U8, nowU8), equals(U8, tolerance=1e-4)) ## Check eigenvalues eival <- c(0.012450, 0.017159, 0.026374, 0.037100, 0.041601, 0.050559) nowEival <- modes$L[7:12] expect_that(nowEival, equals(eival, tolerance=1e-4)) ## Orthognals tmpU <- crossprod(modes$U, modes$U) expect_true(all(round(diag(tmpU), 6)==1)) expect_true(all(round(tmpU[upper.tri(tmpU)], 6)==0)) expect_that(all(round(c(modes$L[1:6]), 6)==0), equals(TRUE)) ################################################################### # # Test with outmodes = 'noh' # ################################################################### ## Calculate modes invisible(capture.output(modes <- aanma(pdb, pfc.fun=load.enmff('aaenm2'), mass=TRUE, temp=300.0, outmodes='noh'))) ## Check first eigenvector U7 <- c(0.0218632, 0.02019693, -0.002396826, 0.01873891, 0.01699585, -0.001568454) nowU7 <- head(modes$U[,7]) expect_that(nowU7 * mysign(U7, nowU7), equals(U7, tolerance=1e-4)) ## Check second eigenvector U8 <- c(0.009318529, 0.001879826, -0.005183737, 0.007078334, 0.0008036141, -0.003830362) nowU8 <- head(modes$U[,8]) expect_that(nowU8 * mysign(U8, nowU8), equals(U8, tolerance=1e-4)) ## Check eigenvalues eival <- c(0.011278, 0.013931, 0.01582, 0.023749, 0.030427, 0.039051) nowEival <- modes$L[7:12] expect_that(nowEival, equals(eival, tolerance=1e-4)) ## Dimensions expect_that(dim(modes$U), equals(c(3003, 3003))) expect_that(dim(modes$modes), equals(c(3003, 3003))) expect_that(length(modes$L), equals(3003)) expect_that(length(modes$frequencies), equals(3003)) expect_that(length(modes$mass), equals(1001)) expect_that(modes$natoms, equals(1001)) expect_that(modes$temp, equals(300)) ## Orthognals tmpU <- crossprod(modes$U[, 1:300], modes$U[, 1:300]) expect_true(all(round(diag(tmpU), 6)==1)) expect_true(all(round(tmpU[upper.tri(tmpU)], 6)==0)) expect_that(all(round(c(modes$L[1:6]), 6)==0), equals(TRUE)) ################################################################### # # Test with outmodes = 'noh' and rtb = TRUE # ################################################################### ## Calculate modes invisible(capture.output(modes <- aanma(pdb, pfc.fun=load.enmff('aaenm2'), mass=TRUE, temp=300.0, outmodes='noh', rtb=TRUE))) ## Check first eigenvector U7 <- c(-0.0229911, -0.02044615, 0.002491489, -0.01944523, -0.01711079, 0.001397449) nowU7 <- head(modes$U[,7]) expect_that(nowU7 * mysign(U7, nowU7), equals(U7, tolerance=1e-4)) ## Check second eigenvector U8 <- c(-0.005763786, -8.247862e-06, 0.00534345, -0.003811432, 0.000763913, 0.003948311) nowU8 <- head(modes$U[,8]) expect_that(nowU8 * mysign(U8, nowU8), equals(U8, tolerance=1e-4)) ## Check eigenvalues eival <- c(0.011579, 0.014595, 0.016808, 0.024449, 0.032666, 0.040224) nowEival <- modes$L[7:12] expect_that(nowEival, equals(eival, tolerance=1e-4)) ## Orthognals tmpU <- crossprod(modes$U[, 1:300], modes$U[, 1:300]) expect_true(all(round(diag(tmpU), 6)==1)) expect_true(all(round(tmpU[upper.tri(tmpU)], 6)==0)) expect_that(all(round(c(modes$L[1:6]), 6)==0), equals(TRUE)) }) bio3d/tests/testthat/test-pca.R0000644000176200001440000000231014707230357016123 0ustar liggesuserscontext("Testing pca()") test_that("pca functions works", { "mysign" <- function(a,b) { if(all(sign(a)==sign(b))) return(1) else return(-1) } attach(transducin) inds <- unlist(lapply(c("1TND_A", "1TAG", "1AS0", "1AS2"), grep, pdbs$id)) pdbs <- trim.pdbs(pdbs, row.inds=inds) gaps <- gap.inspect(pdbs$xyz) ## Calc modes invisible(capture.output(pc <- pca(pdbs))) ## check dimensions expect_that(dim(pc$U), equals(c(939, 939))) expect_that(length(pc$L), equals(939)) ## check eigenvalues Lexpected <- c(1.964689e+02, 1.715903e+02, 7.091482e+01) expect_that(head(pc$L, n=3), equals(Lexpected, tolerance=1e-6)) ## check atom-wise loadings AUexpected <- c(0.013422274, 0.023879443, 0.022779307, 0.023490288, 0.006308588, 0.010057694) expect_that(head(pc$au[,1], n=6), equals(AUexpected, tolerance=1e-6)) Z1expected <- c(-3.555218, -12.081135, -4.602888, 20.239240) Z1now <- as.numeric(head(pc$z[,1], n=4)) expect_that(Z1now * mysign(Z1expected, Z1now), equals(Z1expected, tolerance=1e-6)) Mexpected <- c(30.12193, 67.76449, 43.36594, 27.01919, 69.66411, 44.47434) expect_that(head(pc$mean, n=6), equals(Mexpected, tolerance=1e-6)) detach(transducin) }) bio3d/tests/testthat/test-read.pdb.R0000644000176200001440000002133114707230357017043 0ustar liggesuserscontext("Testing basic PDB structure operation") test_that("read.pdb() reads a normal pdb file", { ## Simple test with PDB ID 1HEL file <- system.file("examples/1dpx.pdb",package="bio3d") invisible(capture.output(pdb <- read.pdb(file))) expect_is(pdb$atom, "data.frame") expect_true(inherits(pdb, "pdb")) expect_true(inherits(pdb$xyz, "xyz")) expect_equal(nrow(pdb$atom), 1177) expect_equal(sum(pdb$calpha), 129) expect_equal(sum(pdb$atom$resid=="HOH"), 177) expect_equal(sum(pdb$atom$resid=="CL"), 2) expect_that(sum(pdb$xyz), equals(44657.12, tolerance=1e-6)) expect_equal(sum(pdb$atom$type=="ATOM"), 998) expect_equal(sum(pdb$atom$type=="HETATM"), 179) expect_equal(pdb$remark$biomat$num, 1) expect_equal(pdb$remark$biomat$chain[[1]], "A") true_mat <- matrix(c(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0), nrow=3, byrow=TRUE) expect_equivalent(pdb$remark$biomat$mat[[1]][[1]], true_mat) invisible(capture.output(spdb <- read.pdb(file, ATOM.only=TRUE))) expect_equal(spdb$atom, pdb$atom) expect_equal(spdb$xyz, pdb$xyz) expect_equal(spdb$calpha, pdb$calpha) expect_true(is.null(spdb$helix)) expect_true(is.null(spdb$sheet)) expect_true(is.null(spdb$seqres)) expect_true(is.null(spdb$remark)) }) test_that("read.pdb() reads and stores data properly", { skip_on_cran() skip_on_travis() datdir <- tempdir() suppressWarnings( invisible(capture.output(get.pdb(c("3DRC", "1P3Q", "1SVK", "1L2Y"), path=datdir, overwrite = FALSE, verbose = FALSE))) ) # "3DRC" example PDB has a CA calcium ion and a CA containing ligand. expect_error(read.pdb("nothing")) invisible(capture.output(pdb <- read.pdb(file.path(datdir, "3DRC.pdb")))) expect_equal(nrow(pdb$atom), 2954) expect_equal(sum(pdb$calpha), 318) # expect_equivalent(aa321(pdb$seqres), pdbseq(pdb)) expect_equal(pdb$xyz[1:6], c(24.317, 59.447, 4.079, 25.000, 58.475, 4.908), tolerance=1e-6) expect_equal(length(pdb$helix$start), 8) expect_equal(length(pdb$sheet$start), 16) # "1SVK" example PDB has alternate location indicator invisible(capture.output(pdb <- read.pdb(file.path(datdir, "1SVK.pdb")))) expect_equal(sum(pdb$calpha), 313) expect_equal(sum(pdb$atom$resno==47), 6) expect_equal(sum(pdb$atom$resid=="GDP"), 28) # multi-model structure invisible(capture.output(pdb <- read.pdb(file.path(datdir, "1L2Y.pdb"), multi=TRUE))) expect_equal(dim(pdb$xyz), c(38, 912)) expect_equal(pdb$xyz[20, 1:6], c(-8.559, 6.374, -1.226, -7.539, 6.170, -0.168), tolerance=1e-6) # one atom cat("ATOM 1 N SER Q 398 48.435 21.981 -6.393 1.00 56.10 N\n", file=file.path(datdir, "t1a.pdb")) pdb <- read.pdb(file.path(datdir, "t1a.pdb")) expect_is(pdb$atom, "data.frame") ### write.pdb() invisible(capture.output(pdb <- read.pdb(file.path(datdir, "3DRC.pdb")))) write.pdb(pdb, file=file.path(datdir, "t1.pdb")) invisible(capture.output(pdb1 <- read.pdb(file.path(datdir, "t1.pdb")))) expect_identical(pdb$atom, pdb1$atom) expect_identical(pdb$xyz, pdb1$xyz) expect_identical(pdb$calpha, pdb1$calpha) # multi-model structure invisible(capture.output(pdb <- read.pdb(file.path(datdir, "1L2Y.pdb"), multi=TRUE))) write.pdb(pdb, file=file.path(datdir, "t2.pdb")) invisible(capture.output(pdb2 <- read.pdb(file.path(datdir, "t2.pdb"), multi=TRUE))) # SSE, SEQRES, and REMARK missing in write.pdb() pdb[c("seqres", "helix", "sheet", "remark", "call")] <- NULL pdb2[c("seqres", "helix", "sheet", "remark", "call")] <- NULL expect_identical(pdb, pdb2) ### trim.pdb() invisible(capture.output(pdb <- read.pdb(file.path(datdir, "1P3Q.pdb")))) pdb1 <- trim.pdb(pdb, inds = atom.select(pdb, "calpha", verbose=FALSE)) expect_is(pdb1, "pdb") expect_equal(nrow(pdb1$atom), 228) expect_equal(sum(pdb1$calpha), 228) expect_equivalent(pdb1$helix$start, pdb$helix$start) expect_equivalent(sort(pdb1$sheet$end), sort(pdb$sheet$end)) pdb2 <- trim.pdb(pdb, inds = atom.select(pdb, "protein", chain="U", verbose=FALSE)) expect_equal(nrow(pdb2$atom), 593) expect_equal(sum(pdb2$calpha), 74) expect_equivalent(pdb2$helix, list(start=c(22, 37, 56), end=c(35, 39, 60), chain=rep("U",3), type=c("1", "5", "5"))) expect_equivalent(pdb2$sheet, list(start=c(12,2,66,41,48), end=c(16,7,71,45,49), chain=rep("U",5), sense=c("0","-1","1","-1","-1"))) }) test_that("read.pdb() reads PDB with ' in atom names", { skip_on_cran() skip_on_travis() datdir <- tempdir() invisible(capture.output(get.pdb("1H5T", path=datdir, overwrite = FALSE, verbose = FALSE))) invisible(capture.output(pdb <- read.pdb(file.path(datdir, "1H5T.pdb")))) sele <- atom.select(pdb, "notprotein") expected <- c("TYD", "DAU", "SO4", "HOH") expect_equal(unique(pdb$atom$resid[sele$atom]), expected) sele <- atom.select(pdb, elety="C1'") expected <- "C1'" expect_equal(unique(pdb$atom$elety[sele$atom]), expected) }) test_that("read.pdb() (cpp) gives the same results as read.pdb2() (old R version)", { skip_on_cran() skip_on_travis() datdir <- tempdir() suppressWarnings( invisible(capture.output(get.pdb("1H5T", path=datdir, overwrite = FALSE, verbose = FALSE))) ) invisible(capture.output(pdb0 <- read.pdb(file.path(datdir, "1H5T.pdb")))) invisible(capture.output(pdb1 <- read.pdb2(file.path(datdir, "1H5T.pdb")))) expect_equal(pdb0$atom, pdb1$atom) expect_equal(pdb0$xyz, pdb1$xyz) expect_equal(pdb0$sheet, pdb1$sheet) expect_equal(pdb0$helix, pdb1$helix) expect_equal(pdb0$calpha, pdb1$calpha) expect_equal(pdb0$seqres, pdb1$seqres) expect_equal(pdb0$remark, pdb1$remark) ## 1TOH - more remarks suppressWarnings( invisible(capture.output(get.pdb("2TOH", path=datdir, overwrite = FALSE, verbose = FALSE))) ) invisible(capture.output(pdb0 <- read.pdb(file.path(datdir, "2TOH.pdb")))) invisible(capture.output(pdb1 <- read.pdb2(file.path(datdir, "2TOH.pdb")))) expect_equal(pdb0$atom, pdb1$atom) expect_equal(pdb0$xyz, pdb1$xyz) expect_equal(pdb0$sheet, pdb1$sheet) expect_equal(pdb0$helix, pdb1$helix) expect_equal(pdb0$calpha, pdb1$calpha) expect_equal(pdb0$seqres, pdb1$seqres) expect_equal(pdb0$remark, pdb1$remark) ## multi = TRUE invisible(capture.output(get.pdb("2EYB", path=datdir, overwrite = FALSE, verbose = FALSE))) invisible(capture.output(pdb0 <- read.pdb(file.path(datdir, "2EYB.pdb"), multi=TRUE))) invisible(capture.output(pdb1 <- read.pdb2(file.path(datdir, "2EYB.pdb"), multi=TRUE))) expect_equal(pdb0$xyz, pdb1$xyz) expect_equal(pdb0$atom, pdb1$atom) ## rm.insert = TRUE suppressWarnings( invisible(capture.output(get.pdb("1FUJ", path=datdir, overwrite = FALSE, verbose = FALSE))) ) invisible(capture.output(pdb0 <- read.pdb(file.path(datdir, "1FUJ.pdb"), rm.insert=TRUE))) invisible(capture.output(pdb1 <- read.pdb2(file.path(datdir, "1FUJ.pdb"), rm.insert=TRUE))) expect_equal(pdb0$xyz, pdb1$xyz) expect_equal(pdb0$atom, pdb1$atom) ## rm.alt = TRUE/FALSE invisible(capture.output(get.pdb("1RX2", path=datdir, overwrite = FALSE, verbose = FALSE))) invisible(capture.output(pdb0 <- read.pdb(file.path(datdir, "1RX2.pdb"), rm.alt=TRUE))) invisible(capture.output(pdb1 <- read.pdb2(file.path(datdir, "1RX2.pdb"), rm.alt=TRUE))) expect_equal(pdb0$xyz, pdb1$xyz) expect_equal(pdb0$atom, pdb1$atom) invisible(capture.output(pdb0 <- read.pdb(file.path(datdir, "1RX2.pdb"), rm.alt=FALSE))) invisible(capture.output(pdb1 <- read.pdb2(file.path(datdir, "1RX2.pdb"), rm.alt=FALSE))) expect_equal(pdb0$xyz, pdb1$xyz) expect_equal(pdb0$atom, pdb1$atom) ## ATOM.only = TRUE if(FALSE) { suppressWarnings( invisible(capture.output(get.pdb("1FUJ", path=datdir, overwrite = FALSE, verbose = FALSE))) ) invisible(capture.output(pdb0 <- read.pdb(file.path(datdir, "1FUJ.pdb"), ATOM.only=TRUE))) invisible(capture.output(pdb1 <- read.pdb2(file.path(datdir, "1FUJ.pdb"), ATOM.only=TRUE))) expect_equal(attributes(pdb0), attributes(pdb1)) } ## read PDB with 'insert' suppressWarnings( invisible(capture.output(get.pdb("1FUJ", path=datdir, overwrite = FALSE, verbose = FALSE))) ) invisible(capture.output(pdb0 <- read.pdb(file.path(datdir, "1FUJ.pdb")))) invisible(capture.output(pdb1 <- read.pdb2(file.path(datdir, "1FUJ.pdb")))) for(i in names(pdb1)) { if(i != 'call') { expect_equal(pdb0[[i]], pdb1[[i]]) } } }) bio3d/tests/testthat/test-read.all.R0000644000176200001440000001106114707250016017037 0ustar liggesuserscontext("Test reading aligned PDB structures") test_that("read.all() reads all/select PDB atoms properly", { ## Internet access required - test skipped skip_on_cran() skip_on_travis() skip_if_not(check.utility("muscle"), message = "Need MUSCLE installed to run the test") ## Test with 4 G-alpha PDB structures pdbdir <- tempdir() suppressWarnings( invisible( capture.output(pdbfiles <- get.pdb(c("1TND_A", "1TAG", "1AS0", "1AS2"), path=pdbdir, split=TRUE)) ) ) invisible( capture.output(aln <- pdbaln(pdbfiles)) ) ## read with default options invisible( capture.output(pdbs <- read.all(aln, ncore=1)) ) expect_is(pdbs, "pdbs") expect_true(inherits(pdbs, "fasta")) expect_is(pdbs$xyz, "xyz") expect_is(pdbs$all, "xyz") expect_equal(length(pdbs$all.hetatm), 4) expect_is(pdbs$all.hetatm[[1]], 'pdb') expect_equal(nrow(pdbs$all.hetatm[[1]]$atom), 35) xyz0 <- rbind(c(30.074, 64.434, 42.910, 30.390, 68.173, 43.382), c(38.552, 16.715, 60.576, 41.952, 15.364, 59.564), c(NA, NA, NA, 8.994, -26.463, 7.153), c(NA, NA, NA, 55.761, 11.671, 39.809)) expect_equivalent(xyz0, pdbs$xyz[, 1:6]) all0 <- rbind(c(30.848, 63.431, 43.718, 30.074, 64.434, 42.910), c(38.238, 18.018, 61.225, 38.552, 16.715, 60.576), c(NA, NA, NA, NA, NA, NA), c(NA, NA, NA, NA, NA, NA)) expect_equivalent(all0, pdbs$all[, 1:6]) resno0 <- rbind(c(27, 28, 29, 30, 31, 32), c(27, 28, 29, 30, 31, 32), c(NA, 32, 33, 34, 35, 36), c(NA, 32, 33, 34, 35, 36)) expect_equivalent(resno0, pdbs$resno[, 1:6]) b0 <- rbind(c(48.05, 40.48, 38.06, 29.55, 25.63, 23.82), c(40.32, 31.04, 23.50, 15.42, 13.10, 13.73), c(NA, 51.59, 45.39, 31.58, 29.26, 22.08), c(NA, 88.56, 65.25, 44.64, 35.89, 25.72)) expect_equivalent(b0, pdbs$b[, 1:6]) chain0 <- rbind(rep('A', 6), rep('A', 6), c(NA, rep('A', 5)), c(NA, rep('A', 5))) expect_equivalent(chain0, pdbs$chain[, 1:6]) ali0 <- rbind(c('A', 'R', 'T', 'V', 'K', 'L'), c('A', 'R', 'T', 'V', 'K', 'L'), c('-', 'R', 'E', 'V', 'K', 'L'), c('-', 'R', 'E', 'V', 'K', 'L')) expect_equivalent(ali0, pdbs$ali[, 1:6]) sse0 <- rbind(c(' ', ' ', ' ', 'E', 'E', 'E'), c(' ', ' ', ' ', 'E', 'E', 'E'), c(NA, ' ', 'E', 'E', 'E', 'E'), c(NA, ' ', 'E', 'E', 'E', 'E')) expect_equivalent(sse0, pdbs$sse[, 1:6]) all.elety0 <- rbind(c('N', 'CA', 'C', 'O', 'CB', 'N'), c('N', 'CA', 'C', 'O', 'CB', 'N'), c(NA, NA, NA, NA, NA, 'N'), c(NA, NA, NA, NA, NA, 'N')) expect_equivalent(all.elety0, pdbs$all.elety[, 1:6]) all.grpby0 <- c(rep(1, 5), 2) expect_equivalent(all.grpby0, pdbs$all.grpby[1:6]) all.hetatm.xyz0 <- c(8.943, 83.379, 38.955, 2.309, 67.529, 27.056) expect_equivalent(all.hetatm.xyz0, pdbs$all.hetatm[[1]]$xyz[, 1:6]) ## read with multicore invisible( capture.output(pdbs.mc <- read.all(aln, ncore=NULL)) ) expect_equal(pdbs[!names(pdbs) %in% 'call'], pdbs.mc[!names(pdbs.mc) %in% 'call']) ## read protein only invisible( capture.output(pdbs.prot <- read.all(aln, rm.ligand=TRUE, ncore=NULL)) ) expect_true(is.null(pdbs.prot$all.hetatm)) expect_equal(pdbs[!names(pdbs) %in% c('call', 'all.hetatm')], pdbs.prot[!names(pdbs.prot) %in% c('call', 'all.hetatm')]) ## read with select atoms invisible( capture.output(pdbs.sel <- read.all(aln, sel=c('N', 'CA', 'C'), rm.ligand=TRUE, ncore=NULL)) ) all.elety0 <- rbind(c('N', 'CA', 'C', 'N', 'CA', 'C'), c('N', 'CA', 'C', 'N', 'CA', 'C'), c(NA, NA, NA, 'N', 'CA', 'C'), c(NA, NA, NA, 'N', 'CA', 'C')) expect_equivalent(all.elety0, pdbs.sel$all.elety[, 1:6]) ## Error handling expect_error(read.all('pdb_file_name_is_not_supported')) ## If one structure is not readable, print warning (ncore=1) and write NAs ## for the missing structure. taln <- aln; taln$id[1] <- 'dummy' expect_warning(capture.output(pdbs.missing <- read.all(taln, ncore=1))) expect_true(all(is.na(pdbs.missing$all[1,]))) ## If mismatch between structure and alignment, print proper error message taln <- aln; taln$ali[1, 16] <- 'A' expect_error(capture.output(read.all(taln, ncore=1))) }) bio3d/tests/testthat/test-get.seq.R0000644000176200001440000001102614707230357016732 0ustar liggesuserscontext("Testing get.seq()") test_that("get.seq() works properly", { skip_on_cran() skip_on_travis() skip_if_not(requireNamespace("httr", quietly=TRUE), message = "Need httr installed to run the test") outfile <- tempfile() # NR # Use mixed RefSeq, Uniprot, and PDB Accession. ids <- c("NP_851365", "P62873", "1L3R_E", "5P21_A") capture.output( seqs <- get.seq(ids, outfile=outfile, db='nr') ) expect_equal(length(seqs$id), 4) expect_identical(head(seqs$ali[1,]), c('M','G','A','G','A','S')) expect_identical(head(seqs$ali[2,]), c('M','S','E','L','D','Q')) expect_identical(head(seqs$ali[3,]), c('G','N','A','A','A','A')) expect_identical(head(seqs$ali[4,]), c('M','T','E','Y','K','L')) unlink(outfile) Sys.sleep(5) # NR # Retrieved IDs may be different from the query; shoot warning # In the following, a GI number is converted to a PDB code. ids <- c("829581541") expect_warning( capture.output(seqs <- get.seq(ids, outfile=outfile, db='nr')) ) expect_equal(length(seqs$id), 1) expect_identical(seqs$id, c("pdb|4TND|A")) expect_identical(head(seqs$ali[1,]), c('M','E','L','E','N','I')) unlink(outfile) Sys.sleep(5) # NR # Another example that retrieved ID changes is when query ID is from # a different database. 5X3X has both "A" and "a" chains in PDB. # But in 'nr', they are coded as "A" and "AA". # But the server behaves weirdly in this case: # - input '5X3X_A' or '5X3X_a' (bio3d calls toupper() internally) # gives either A or AA randomly. # - input '5X3X_AA' does not work anymore. # # Comment out because of the random behavior #ids <- c("5X3X_A", "5X3X_a", "5X3X_AA") #expect_warning( seqs <- get.seq(ids, outfile=outfile, db='nr') ) #expect_equal(length(seqs$id), 1) #expect_identical(seqs$id, c("pdb|5X3X|AA")) #expect_identical(head(seqs$ali[1,]), c('M','T','P','I','L','A')) #unlink(outfile) #Sys.sleep(5) # NR # Some wrong IDs. # OK, wrong chain ID, typo ids <- c("4Q21_A", "1TND_E", "1L3_E") expect_warning( capture.output(seqs <- get.seq(ids, outfile=outfile, db='nr')) ) expect_true(is.logical(seqs)) expect_equivalent(seqs, c(FALSE, TRUE, TRUE)) unlink(outfile) Sys.sleep(5) # EBI - uniprot/swissprot ids <- c("P11488", "P62873", "TCPA_YEAST") capture.output( seqs <- get.seq(ids, outfile=outfile, db='uniprot') ) expect_equal(length(seqs$id), 3) expect_identical(head(seqs$ali[1, ]), c('M','G','A','G','A','S')) expect_identical(head(seqs$ali[2, ]), c('M','S','E','L','D','Q')) expect_identical(head(seqs$ali[3, ]), c('M','S','Q','L','F','N')) unlink(outfile) Sys.sleep(5) # EBI - pdb ids <- c("1TAG_A", "1TND_B", "3J3Q_0") capture.output( seqs <- get.seq(ids, outfile=outfile, db='pdb') ) expect_equal(length(seqs$id), 3) expect_identical(head(seqs$ali[1,]), c('A','R','T','V','K','L')) expect_identical(tail(seqs$ali[2,]), c('K','D','C','G','L','F')) expect_identical(head(seqs$ali[3,]), c('P','I','V','Q','N','L')) unlink(outfile) Sys.sleep(5) # EBI - pdb # Double-letter chain IDs are not supported. # So, for example, "3J3Q_10", "3J3Q_aA" etc. do not work. # # ids <- c("3J3Q_10", "3J3Q_aA", "3J3Q_0") # expect_warning( seqs <- get.seq(ids, outfile=outfile, db='pdb') ) # expect_true(is.logical(seqs)) # expect_equivalent(seqs, c(TRUE, TRUE, FALSE)) # # Smaller case chain IDs are not supported (because the internal # case conversion in get.seq(); Does the server supports smaller cases?) # # Not all chains are available from the server: # ids <- c("3J3Q_A") # expect_error( seqs <- get.seq(ids, outfile=outfile, db='pdb') ) # # In the following, the result will be constantly "A" (not random as NCBI) # ids <- c("5X3X_A") # seqs <- get.seq(ids, outfile=outfile, db='pdb') # # Returns all capital cases only # ids <- c("5X3X") # seqs <- get.seq(ids, outfile=outfile, db='pdb') # EBI - uniprot/swissprot # One of the ids is wrong. # Note: all sequences after the wrong id will not be retrieved. # The behavior for 'pdb' is different: only wrong ids are not retrieved. ids <- c("P11488", "P62873", "P999") expect_warning(capture.output(seqs <- get.seq(ids, outfile=outfile, db='uniprot'))) expect_true(is.logical(seqs)) expect_equivalent(seqs, c(FALSE, FALSE, TRUE)) unlink(outfile) Sys.sleep(5) # EBI # All ids are wrong - choose wrong database ids <- c("1TAG_A", "1TND_B") expect_warning( capture.output(seqs <- get.seq(ids, outfile=outfile, db='uniprot')) ) unlink(outfile) }) bio3d/tests/testthat/test-fitting.R0000644000176200001440000001063314707230357017033 0ustar liggesuserscontext("Testing fitting functions") test_that("Fitting still works", { ## Test fit.xyz / gap.inspect attach(transducin) inds <- unlist(lapply(c("1TAG", "1AS0", "1AS2"), grep, pdbs$id)) pdbs <- trim.pdbs(pdbs, row.inds=inds) gaps <- gap.inspect(pdbs$xyz) rmsd.mat <- matrix(c(0.000, 1.792, 1.903, 1.792, 0.000, 1.881, 1.903, 1.881, 0.000), ncol=3, byrow=TRUE) rownames(rmsd.mat) <- basename.pdb(pdbs$id) colnames(rmsd.mat) <- basename.pdb(pdbs$id) ## Test rmsd() expect_that(suppressWarnings(rmsd( pdbs )), equals(rmsd.mat, tolerance = 1e-6)) ## Test fit.xyz() xyz <- fit.xyz( fixed = pdbs$xyz[1,], mobile = pdbs$xyz, fixed.inds = gaps$f.inds, mobile.inds = gaps$f.inds ) x1.expected <- c(29.72513, 64.03389, 42.98273, 30.15516, 67.73641, 43.70090) x2.expected <- c(NA, NA, NA, 29.28225, 67.23703, 43.05571) x3.expected <- c(NA, NA, NA, 30.17547, 67.15645, 43.46491) expect_that(head(xyz[1,]), equals(x1.expected, tolerance = 1e-6)) expect_that(head(xyz[2,]), equals(x2.expected, tolerance = 1e-6)) expect_that(head(xyz[3,]), equals(x3.expected, tolerance = 1e-6)) rmsd.mat <- matrix(c(0.000, 1.659, 1.814, 1.659, 0.000, 1.697, 1.814, 1.697, 0.000), ncol=3, byrow=TRUE) rownames(rmsd.mat) <- basename.pdb(pdbs$id) colnames(rmsd.mat) <- basename.pdb(pdbs$id) expect_that(suppressWarnings(rmsd( xyz[, gaps$f.inds] )), equals(rmsd.mat, tolerance = 1e-6)) expect_that(suppressWarnings(rmsd( pdbs, fit=TRUE )), equals(rmsd.mat, tolerance = 1e-6)) xyz2 <- fit.xyz( fixed = pdbs$xyz[1,], mobile = pdbs, fixed.inds = gaps$f.inds, mobile.inds = gaps$f.inds ) expect_that(xyz2, equals(xyz)) detach(transducin) } ) test_that("struct.aln still works", { skip_on_cran() skip_on_travis() if(!check.utility('muscle')) { skip('Need MUSCLE installed to run this test') } ## Simple test with PDB ID 1HEL file.a <- system.file("examples/1hel.pdb",package="bio3d") file.b <- system.file("examples/1dpx.pdb",package="bio3d") invisible(capture.output(pdb.a <- read.pdb(file.a))) invisible(capture.output(pdb.b <- read.pdb(file.b))) invisible(capture.output(aln <- struct.aln(pdb.a, pdb.b, write.pdbs=FALSE, cutoff=0.1, max.cycles=2, extra.args="-quiet"))) rmsda <- c(0.293, 0.229, 0.200) expect_that(aln$rmsd, equals(rmsda, tolerance = 1e-6)) expect_that(length(aln$a.inds$atom), equals(112)) expect_that(length(aln$b.inds$atom), equals(112)) expect_that(length(aln$b.inds$xyz), equals(112*3)) expect_that(length(aln$b.inds$xyz), equals(112*3)) } ) # A little bit more tests... test_that("fit.xyz() gets the same results as VMD", { skip_on_cran() skip_on_travis() if(!check.utility('muscle')) { skip('Need MUSCLE installed to run this test') } invisible(capture.output( capture.output(pdbs <- pdbaln(c("1tag", "1as0")), type="message")) ) inds <- gap.inspect(pdbs$xyz)$f.inds expect_error(fit.xyz("string", pdbs$xyz, inds, inds)) expect_error(fit.xyz(pdbs$xyz, pdbs$xyz, inds, inds)) expect_error(fit.xyz(pdbs$xyz[1,], pdbs$xyz, inds, 1:4)) xyz <- fit.xyz(pdbs$xyz[1,], pdbs$xyz[2,], inds, inds) xyz <- xyz[!is.na(xyz)] xyz0 <- c(41.063, 15.667, 58.826, 43.041, 17.479, 56.113, 44.826, 15.317, 53.571) # VMD results expect_equal(round(xyz[1:9], 3), xyz0) }) test_that("fit.xyz() with ncore>1 works properly", { skip_on_cran() skip_on_travis() attach(transducin) inds <- unlist(lapply(c("1TAG", "1AS0", "1AS2"), grep, pdbs$id)) pdbs <- trim.pdbs(pdbs, row.inds=inds) #invisible(capture.output(pdbs <- pdbaln(c("1tag", "1as0", "1as2")))) #inds <- gap.inspect(pdbs$xyz)$f.inds # check if ncore > 1 is really faster time1 <- system.time(xyz1 <- fit.xyz(pdbs$xyz[1,], pdbs$xyz, inds, inds, ncore=1)) time2 <- system.time(xyz2 <- fit.xyz(pdbs$xyz[1,], pdbs$xyz, inds, inds, ncore=NULL)) time1 <- time1["elapsed"] time2 <- time2["elapsed"] expect_equivalent(xyz1, xyz2) # cat("Speed up by", round((time1-time2)/time2, 1)*100, "%", sep="") # if(getOption("cores") > 1) # expect_true(time1 > time2) detach(transducin) }) bio3d/tests/testthat/test-read.cif.R0000644000176200001440000000437514707230357017050 0ustar liggesuserscontext("Testing relationship between read.cif and read.pdb") test_that("read.cif() reads a normal pdb file", { skip_on_cran() skip_on_travis() ## Simple testing file <- system.file("examples/1dpx.pdb",package="bio3d") invisible(capture.output(p1 <- read.pdb(file))) datdir <- tempdir() invisible(capture.output(get.pdb("1dpx", path=datdir, format="cif", overwrite = FALSE, verbose = FALSE))) suppressWarnings( invisible(capture.output(p2 <- read.cif(file.path(datdir, "1dpx.cif")))) ) expect_is(p2$atom, "data.frame") expect_true(inherits(p2, "pdb")) expect_true(inherits(p2$xyz, "xyz")) expect_identical(p2$xyz, p1$xyz) expect_equal(nrow(p2$atom), nrow(p1$atom)) expect_equal(sum(p2$calpha), sum(p1$calpha)) expect_identical(p2$xyz, p1$xyz) expect_identical(p2$atom$type, p1$atom$type) ## offset for eleno between pdb and cif format #expect_identical(p2$atom$eleno, p1$atom$eleno) expect_identical(p2$atom$resid, p1$atom$resid) expect_identical(p2$atom$resno, p1$atom$resno) expect_identical(p2$atom$o, p1$atom$o) expect_identical(p2$atom$b, p1$atom$b) expect_equal(sum(p2$atom$resid=="HOH"), sum(p1$atom$resid=="HOH")) expect_equal(sum(p2$atom$resid=="CL"), sum(p1$atom$resid=="CL")) expect_that(sum(p2$xyz), equals(44657.12, tolerance=1e-6)) expect_equal(sum(p2$atom$type=="ATOM"), sum(p1$atom$type=="ATOM")) expect_equal(sum(p2$atom$type=="HETATM"), sum(p1$atom$type=="HETATM")) }) test_that("read.cif() on a multimodel object", { skip_on_cran() skip_on_travis() datdir <- tempdir() invisible(capture.output(get.pdb(c("1L2Y"), path=datdir, overwrite = FALSE, verbose = FALSE))) invisible(capture.output(get.pdb(c("1L2Y"), path=datdir, format="cif", overwrite = FALSE, verbose = FALSE))) # multi-model structure invisible(capture.output(p1 <- read.pdb(file.path(datdir, "1L2Y.pdb"), multi=TRUE))) suppressWarnings( invisible(capture.output(p2 <- read.cif(file.path(datdir, "1L2Y.cif"), multi=TRUE))) ) expect_identical(dim(p1$xyz), dim(p2$xyz)) expect_identical(p1$atom$x, p2$atom$x) expect_identical(p1$atom$y, p2$atom$y) expect_identical(p1$atom$z, p2$atom$z) }) bio3d/tests/testthat/test-nma.pdbs.R0000644000176200001440000001303114707230357017064 0ustar liggesuserscontext("Testing nma.pdbs()") test_that("eNMA works", { skip_on_cran() "mysign" <- function(a,b) { if(all(sign(a)==sign(b))) return(1) else return(-1) } attach(transducin) inds <- unlist(lapply(c("1TND_A", "1TAG", "1AS0", "1AS2"), grep, pdbs$id)) pdbs <- trim.pdbs(pdbs, row.inds=inds) gaps <- gap.inspect(pdbs$xyz) ## Calc modes invisible(capture.output(modes <- nma.pdbs(pdbs, fit=TRUE, rm.gaps=TRUE, ncore=1))) ## check dimensions expect_that(dim(modes$U), equals(c(939, 933, 4))) expect_that(dim(modes$L), equals(c(4, 933))) expect_that(dim(modes$fluctuations), equals(c(4, 313))) ## structure 1- mode1: U1 <- c(-0.046380187, 0.007816393, 0.078933552, -0.041820111, 0.009819448, 0.047598954) nowU1 <- head(modes$U.subspace[,1,1], n=6) expect_that(nowU1 * mysign(U1, nowU1), equals(U1, tolerance=1e-6)) ## structure 1- mode2: U2 <- c(0.007819148, -0.005717370, -0.051933927, 0.002265788, -0.013386437, -0.039409712) nowU2 <- head(modes$U.subspace[,2,1], n=6) expect_that(nowU2 * mysign(U2, nowU2), equals(U2, tolerance=1e-6)) ## structure 4- mode3: U3 <- c(-0.13697744, -0.05401178, 0.09615700, -0.11026525, -0.01510157, 0.05796091) nowU3 <- head(modes$U.subspace[,3,4], n=6) expect_that(nowU3 * mysign(U3, nowU3), equals(U3, tolerance=1e-6)) ## structure 4-mode1 - tail: U1 <- c(0.009820174, 0.004566910, -0.055544781, 0.009938013, 0.006707436, -0.068154672) nowU1 <- tail(modes$U.subspace[,1,4], n=6) expect_that(nowU1 * mysign(U1, nowU1), equals(U1, tolerance=1e-6)) ## Fluctuations: f1 <- c(0.3657288, 0.2196504, 0.1449100, 0.1217517, 0.1130416, 0.1007862) f2 <- c(0.5295304, 0.3004094, 0.2011062, 0.1401276, 0.1205508, 0.1011349) f4 <- c(0.6488982, 0.3079024, 0.2166070, 0.1504672, 0.1282899, 0.1029634) expect_that(modes$fluctuations[1,1:6], equals(f1, tolerance=1e-6)) expect_that(modes$fluctuations[2,1:6], equals(f2, tolerance=1e-6)) expect_that(modes$fluctuations[4,1:6], equals(f4, tolerance=1e-6)) ## Orthognal expect_that(as.numeric(modes$U.subspace[,1,1] %*% modes$U.subspace[,1,1]), equals(1, tolerance=1e-6)) expect_that(as.numeric(modes$U.subspace[,1,1] %*% modes$U.subspace[,2,1]), equals(0, tolerance=1e-6)) ## RMSIP rmsips <- c(1.0000, 0.9174, 0.9441, 0.9251) expect_that(as.vector(modes$rmsip[1,]), equals(rmsips, tolerance=1e-6)) ## Multicore (same arguments as above!) skip_on_travis() invisible(capture.output(mmc <- nma.pdbs(pdbs, fit=TRUE, rm.gaps=TRUE, ncore=NULL))) expect_that(mmc$fluctuations, equals(modes$fluctuations, tolerance=1e-6)) expect_that(mmc$U.subspace, equals(modes$U.subspace, tolerance=1e-6)) ## Calc modes with rm.gaps=FALSE invisible(capture.output(modes <- nma.pdbs(pdbs, fit=TRUE, rm.gaps=FALSE, ncore=NULL))) ## structure 1-mode1 - tail: U1 <- c(0.04397369, -0.01400912, -0.02123377, 0.08124317, -0.02660929, -0.02619898) nowU1 <- tail(modes$U.subspace[,1,1], n=6) expect_that(nowU1 * mysign(U1, nowU1), equals(U1, tolerance=1e-6)) ## structure 1-mode1 - tail: U1 <- c(0.001300939, -0.053317847, 0.011292943, 0.003307034, -0.071684004, NA) nowU1 <- modes$U.subspace[938:943,1,2] U1[is.na(U1)] <- 0 nowU1[is.na(nowU1)] <- 0 expect_that(nowU1 * mysign(nowU1, U1), equals(U1, tolerance=1e-6)) ## fluctuations na.expected <- c(3, 4, 1258, 1259, 1262, 1263, 1266, 1267, 1268, 1270, 1271, 1272, 1274, 1275, 1276, 1278, 1279, 1280, 1282, 1283, 1284, 1286, 1287, 1288, 1290, 1291, 1292) expect_that(which(is.na(modes$fluctuations)), equals(na.expected)) f1 <- c(0.59967448, 0.34438649, 0.20382435, 0.13350449) f4 <- c(0.3335200, 0.4255609, 0.5941589, rep(NA, 7)) expect_that(modes$fluctuations[1,1:4], equals(f1, tolerance=1e-6)) expect_that(tail(modes$fluctuations[4,], n=10), equals(f4, tolerance=1e-6)) ## Calc modes with mass=FALSE and temp=NULL invisible(capture.output(modes <- nma.pdbs(pdbs, mass=FALSE, temp=NULL, ncore=NULL))) ## structure 1- mode1: U1 <- c(-0.04043330, 0.00730273, 0.07000757, -0.04520831, 0.01130271, 0.05337233) nowU1 <- head(modes$U.subspace[,1,1], n=6) expect_that(nowU1 * mysign(U1, nowU1), equals(U1, tolerance=1e-6)) ## structure 1- mode2: U2 <- c(-0.002813312, 0.005765808, 0.039807147, 0.001667637, 0.014587327, 0.038682763) nowU2 <- head(modes$U.subspace[,2,1], n=6) expect_that(nowU2 * mysign(U2, nowU2), equals(U2, tolerance=1e-6)) ## structure 5- mode3: U3 <- c(0.11324262, 0.04220159, -0.07597465, 0.10267147, 0.01483591, -0.05261675) nowU3 <- head(modes$U.subspace[,3,4], n=6) expect_that(nowU3 * mysign(U3, nowU3), equals(U3, tolerance=1e-6)) ## Calc modes with mass=FALSE and temp=NULL and ff="anm" invisible(capture.output(modes <- nma.pdbs(pdbs, mass=FALSE, temp=NULL, ff="anm", ncore=NULL))) ## structure 3- mode10: U1 <- c(0.03630660, 0.03078575, -0.02376714, 0.01906218, 0.01110582, -0.01361602) nowU1 <- head(modes$U.subspace[,10,3], n=6) expect_that(nowU1 * mysign(U1, nowU1), equals(U1, tolerance=1e-6)) ## structure 4- mode1: U1 <- c(-0.04113844, 0.01096919, 0.07368620, -0.04250786, 0.01320282, 0.05550216) nowU1 <- head(modes$U.subspace[,1,4], n=6) expect_that(nowU1 * mysign(U1, nowU1), equals(U1, tolerance=1e-6)) f1 <- c(0.3630744, 0.2768045, 0.1996179, 0.1766148) f2 <- c(0.5231570, 0.3519813, 0.2331503, 0.2003372) expect_that(modes$fluctuations[1,1:4], equals(f1, tolerance=1e-6)) expect_that(modes$fluctuations[2,1:4], equals(f2, tolerance=1e-6)) detach(transducin) }) bio3d/tests/testthat/test-read.ncdf.R0000644000176200001440000000352314707230357017213 0ustar liggesuserscontext("Testing basic operation with NetCDF trajectory") test_that("read.ncdf() and write.ncdf() works properly", { skip_on_cran() skip_if_not(requireNamespace("ncdf4", quietly=TRUE), message = "Need ncdf4 installed to run the test") ##- Prepare files trjfile <- tempfile() file <- system.file("examples/hivp.dcd", package="bio3d") invisible(capture.output(trj0 <- read.dcd(file))) time0 <- sort(round(runif(nrow(trj0), 0, 1000), digit=3)) cell0 <- matrix(rep(runif(6, 0, 100), nrow(trj0)), ncol=6, byrow=TRUE) rownames(trj0) <- time0 ##- Write out <- try(write.ncdf(trj0, trjfile, cell = cell0)) expect_false(inherits(out, "try-error")) ##- Read trj <- read.ncdf(trjfile, headonly = TRUE, verbose = FALSE) expect_output(str(trj), "frames: int 117" ) expect_output(str(trj), "atoms : int 198" ) trj <- read.ncdf(trjfile, cell = TRUE, verbose = FALSE) ##expect_equal(trj, as.data.frame(cell0, stringsAsFactors=FALSE), tolerance = 1e-6) expect_equal(trj, cell0, tolerance = 1e-6) trj <- read.ncdf(trjfile, verbose = FALSE, time = TRUE) expect_equal(as.numeric(rownames(trj)), time0, tolerance = 1e-6) expect_equivalent(trj, trj0) pdb <- read.pdb(system.file("examples/hivp.pdb", package="bio3d")) inds <- atom.select(pdb, chain="A", verbose=FALSE) trj <- read.ncdf(trjfile, verbose = FALSE, first=10, last=20, stride=2, at.sel = inds) expect_equivalent(trj, as.xyz(trj0[seq(10, 20, 2), inds$xyz])) # read single frame trj <- read.ncdf(trjfile, verbose = FALSE, first=1, last=1, at.sel = inds) expect_equivalent(trj, as.xyz(trj0[1, inds$xyz])) # multiple files files <- rep(trjfile, 4) txt <- capture.output(trj <- read.ncdf(files, headonly = TRUE)) expect_output(print(txt), "Frames: 468") expect_output(print(txt), "Atoms: 198") }) bio3d/tests/testthat/test-get.pdb.R0000644000176200001440000000253414707230357016713 0ustar liggesuserscontext("Testing get.pdb()") test_that("get.pdb() works properly", { skip_on_cran() skip_on_travis() ids <- c("1tag", "1tnd") # Gt tmp <- tempdir() suppressWarnings( capture.output(files <- get.pdb(ids, tmp, verbose=FALSE)) ) expect_identical(files, paste(tmp, "/", ids, ".pdb", sep="")) expect_warning(get.pdb("3c7kxxx", tmp, verbose=FALSE)) expect_warning(get.pdb("1tag", tmp, verbose=FALSE)) suppressWarnings( capture.output(files <- get.pdb("1as0", tmp, verbose=FALSE, gzip=TRUE)) ) expect_identical(files, paste(tmp, "/1as0.pdb", sep="")) # expect_error(get.pdb("aaaa", tmp, verbose=FALSE)) }) test_that("get.pdb() with ncore>1 works properly", { skip_on_cran() skip_on_travis() ids <- c("1tag", "1tnd", "3v00", "1got") tmp1 <- paste(tempdir(), "1", sep="") tmp2 <- paste(tempdir(), "2", sep="") time1 <- system.time(r1 <- get.pdb(ids, tmp1, ncore=1, verbose=FALSE))["elapsed"] time2 <- system.time(r2 <- get.pdb(ids, tmp2, ncore=NULL, verbose=FALSE))["elapsed"] expect_identical(r2, paste(tmp2, "/", ids, ".pdb", sep="")) expect_identical(list.files(tmp1), list.files(tmp2)) # cat("Speed up by ", round((time1-time2)/time2*100, 1), "%", sep="") # if(getOption("cores") > 1) # expect_true(time1 > time2) unlink(tmp1, recursive=TRUE) unlink(tmp2, recursive=TRUE) }) bio3d/tests/testthat/test-cna.R0000644000176200001440000000313314707230357016125 0ustar liggesuserscontext("Testing correlation network analysis") test_that("cna() and cnapath() work properly", { skip_on_cran() oops <- requireNamespace("igraph", quietly = TRUE) if (!oops) { skip('Need igraph installed to run this test') } ## Simple test with PDB ID 1HEL file <- system.file("examples/1hel.pdb",package="bio3d") capture.output(pdb <- read.pdb(file)) ## Normal modes and cross-correlation matrix capture.output(modes <- nma(pdb)) capture.output(cij <- dccm(modes)) ## network construction capture.output(cm <- cmap(pdb, dcut=4.5, scut=1)) suppressWarnings( capture.output(net <- cna(cij, cm=cm, cutoff.cij=0)) ) expect_equal(net$communities$vcount, 129) expect_equal(igraph::ecount(net$network), 608) expect_equal(max(net$communities$membership), 5) expect_equal(igraph::ecount(net$community.network), 9) ## and path analysis capture.output(pa <- cnapath(net, from=3, to=53, k=20, collapse=TRUE, ncore=1)) expect_equal(length(pa$path), 20) expect_equal(pa$path[[1]], c(3, 2, 39, 54, 53)) expect_equal(pa$path[[20]], c(3, 2, 39, 40, 84, 53)) expect_equal(pa$dist[1:6], c(3.427, 3.521, 3.821, 3.847, 3.868, 3.965), tolerance=1e-3) expect_equal(pa$epath[[10]], c(9, 13, 245, 253, 320)) ndg0 <- matrix(c(0.65, 1, 0.35, 0.8, 0.45, 0.1, 0.3, 1, 0.5, 0.35), nrow=1, dimnames = list(1, c(2, 3, 38, 39, 40, 41, 42, 53, 54, 55)) ) capture.output(ndg <- summary(pa)$degeneracy) expect_equal(ndg, ndg0) skip_on_travis() capture.output(pa2 <- cnapath(net, from=3, to=53, k=20, collapse=TRUE, ncore=NULL)) expect_equal(pa, pa2) }) bio3d/tests/testthat/test-atom2mass.R0000644000176200001440000000431614707230357017276 0ustar liggesuserscontext("Testing atom mass functions") test_that("atom to mass tests", { ## Simple test atom.names <- c("CA", "O", "N", "OXT") ##masses <- c(12.01, 16.00, 14.01, 16.00) masses <- c(12.0107, 15.9994, 14.0067, 15.9994) expect_that(atom2mass(atom.names), equals(masses, tolerance=1e-6)) ##masses <- c(42.02, 16.00) masses <- c(42.0168, 15.9994) expect_that(as.numeric(atom2mass(atom.names, grpby=c(1,1,1,2))), equals(masses, tolerance=1e-6)) ## Should end with error atom.names <- c("CA", "O", "N", "OXT", "CL2", "PT1") expect_that(atom2mass(atom.names, rescue=FALSE), throws_error()) expect_that(atom2mass(atom.names, rescue=TRUE), gives_warning()) ## Simple test with PDB ID 1HEL file <- system.file("examples/1hel.pdb",package="bio3d") invisible(capture.output(pdb <- read.pdb(file))) invisible(capture.output(prot.inds <- atom.select(pdb, "protein"))) invisible(capture.output(pdb.prot <- trim.pdb(pdb, prot.inds))) eletys <- pdb$atom$elety[ pdb$atom$type=="ATOM" ] expect_that(sum(atom2mass( eletys )), equals(13346.39, tolerance=1e-6)) expect_that(sum(atom2mass( eletys )), equals(sum(atom2mass(pdb.prot), tolerance=1e-6))) expect_that(sum(atom2mass( pdb.prot )), equals(13346.39, tolerance=1e-6)) ## Try center of mass at the same go coma <- c(-0.4991111, 20.5858389, 19.2604674) expect_that(c(com(pdb.prot)), equals(coma, tolerance=1e-6)) # coma <- c(-0.5829897, 20.5306061, 19.1081465) # expect_that(com(pdb), equals(coma, tolerance=1e-6)) ## Add custom masses atom.names <- c("CA", "O", "N", "OXT", "CL2", "PT1") masses <- c(12.0107, 15.9994, 14.0067, 15.9994, 35.4530, 195.0780) elety.cust <- data.frame(name = c("CL2","PT1"), symb = c("Cl","Pt")) ##mass.cust <- data.frame(symb = c("Cl","Pt"), mass = c(35.45, 195.08)) expect_that(atom2mass(atom.names, elety.custom=elety.cust), equals(masses, tolerance=1e-6)) ## mass from formula form <- "C5 H6 N O3" masses <- c(60.050, 6.048, 14.010, 48.000) masses <- c(60.05350, 6.04764, 14.00670, 47.99820) expect_that(formula2mass(form, sum.mass=FALSE), equals(masses, tolerance=1e-6)) form <- "C5H6" expect_that(formula2mass(form), throws_error()) } ) bio3d/tests/testthat/test-pdb.annotate.R0000644000176200001440000000730214707230357017743 0ustar liggesuserscontext("Testing pdb.annotate()") test_that("PDB annotation works", { skip_on_cran() skip_on_travis() skip_if_not(requireNamespace("httr", quietly=TRUE), message = "Need httr installed to run the test") expected <- c('3R1C_X', '3R1C_B', '3R1C_C', '3R1C_D', '3R1C_E', '3R1C_F', '3R1C_G', '3R1C_H', '3R1C_I', '3R1C_J', '3R1C_K', '3R1C_L', '3R1C_M', '3R1C_N', '3R1C_O', '3R1C_P', '3R1C_Q', '3R1C_R', '3R1C_S', '3R1C_Y', '3R1C_T', '3R1C_U', '3R1C_W', '3R1C_A', '3R1C_V', '3R1C_Z', '3R1C_a', '3R1C_b', '3R1C_c', '3R1C_d', '3R1C_e', '3R1C_f', '3R1C_g', '3R1C_h', '3R1C_i', '3R1C_j') invisible(capture.output(anno <- pdb.annotate(expected))) expect_identical(rownames(anno), expected) expected <- c('3R1C_A', '3R1C_a', '3R1C_B', '3R1C_b', '3R1C_C', '3R1C_c', '3R1C_D', '3R1C_d', '3R1C_E', '3R1C_e', '3R1C_F', '3R1C_f', '3R1C_G', '3R1C_g', '3R1C_H', '3R1C_h', '3R1C_I', '3R1C_i', '3R1C_J', '3R1C_j', '3R1C_K', '3R1C_L', '3R1C_M', '3R1C_N', '3R1C_O', '3R1C_P', '3R1C_Q', '3R1C_R', '3R1C_S', '3R1C_Y', '3R1C_T', '3R1C_U', '3R1C_W', '3R1C_X', '3R1C_V', '3R1C_Z') invisible(capture.output(anno <- pdb.annotate('3R1C'))) # 'sort' because sometimes PDB returns chain IDs in an uncertain way... expect_identical(sort(rownames(anno)), sort(expected)) expected <- c('3R1C_A', '3R1C_a', '3R1C_B', '3R1C_b', '3R1C_C', '3R1C_c', '3R1C_D', '3R1C_d', '3R1C_E', '3R1C_e', '3R1C_F', '3R1C_f', '3R1C_G', '3R1C_g', '3R1C_H', '3R1C_h', '3R1C_I', '3R1C_i', '3R1C_J', '3R1C_j', '3R1C_K', '3R1C_L', '3R1C_M', '3R1C_N', '3R1C_O', '3R1C_P', '3R1C_Q', '3R1C_R', '3R1C_S', '3R1C_Y', '3R1C_T', '3R1C_U', '3R1C_W', '3R1C_X', '3R1C_V', '3R1C_Z', '1CDK_A', '1CDK_B', '1CDK_I', '1CDK_J') invisible(capture.output(anno <- pdb.annotate(c('3R1C', '1CDK')))) # 'sort' because sometimes PDB returns chain IDs in an uncertain way... expect_identical(sort(rownames(anno)), sort(expected)) expect_warning( invisible(capture.output(anno <- pdb.annotate(c('3R1C_A', '3r1c_a', '3r1c_q')))) ) expect_identical(rownames(anno), expected[c(1, 2)]) invisible(capture.output(anno <- pdb.annotate(c('3R1C_A', '3r1c_a'), unique=TRUE))) expect_identical(rownames(anno), "3R1C") expect_identical(anno$chainId, "A;a") expected <- sort(rep(c("ANP", "MN (2)", "MYR"), 2)) invisible(capture.output(anno <- pdb.annotate(c('1cdk_A', '1cdk_B'), anno.terms="ligandId"))) expect_identical(sort(unlist(strsplit(anno$ligandId, ","))), expected) ## Test cases without ligands ids <- c("6AXG_B", "1AA9_A", "7L0F_A", "6AMB_A", "121P_A", "5E95_A") invisible(capture.output(anno <- pdb.annotate(ids))) expect_identical(paste(anno[, "structureId"], anno[, "chainId"], sep="_"), ids) expect_true(is.na(anno[1, "ligandId"])) expect_identical(anno[2, "experimentalTechnique"], "NMR") ## Test cases without 'source' ids <- c("1P79", "4os7") invisible(capture.output(anno <- pdb.annotate(ids))) expect_true(is.na(anno[1, "source"])) expect_true(is.na(anno[3, "source"])) expect_identical(anno[1, "macromoleculeType"], "RNA") expect_identical(anno[3, "macromoleculeType"], "Protein") ## Test cases with duplicated 'sources' ids <- c("5TOK") invisible(capture.output(anno <- pdb.annotate(ids))) expect_identical(anno[1, "ligandId"], "NAG") ## Test error handling expect_error(pdb.annotate("1234"), regexp="No data retrieved") }) bio3d/tests/testthat/test-aanma.pdbs.R0000644000176200001440000001416114707250016017365 0ustar liggesuserscontext("Testing aanma.pdbs()") test_that("aanma based eNMA works", { ## commented lines: ## update after changing from ff=aaenm to ff=aaenm2 ## new mass weighting approach (~may 2016) ## test updated 24-08-16 skip_on_cran() skip_on_travis() skip_if_not(check.utility("muscle"), message = "Need MUSCLE installed to run the test") "mysign" <- function(a,b) { if(all(sign(a)==sign(b))) return(1) else return(-1) } pdbdir <- tempdir() invisible( capture.output( capture.output(pdbfiles <- get.pdb(c("1TND_A", "1TAG", "1AS0", "1AS2"), path=pdbdir, split=TRUE), type="message") )) invisible( capture.output(aln <- pdbaln(pdbfiles)) ) invisible( capture.output(pdbs <- read.all(aln)) ) gaps <- gap.inspect(pdbs$xyz) ## Calc modes (use default forcefield aanma2) invisible(capture.output(modes <- aanma.pdbs(pdbs, pfc.fun=load.enmff("aaenm2"), ncore=1))) ## check dimensions expect_that(dim(modes$U), equals(c(939, 933, 4))) expect_that(dim(modes$L), equals(c(4, 933))) expect_that(dim(modes$fluctuations), equals(c(4, 313))) expect_that(dim(modes$rmsip), equals(c(4, 4))) ## structure 1- mode1: ## U1 <- c(0.04766153, -0.007993432, -0.06513697, 0.04313399, -0.008026397, -0.03755748) U1 <- c(0.04785697, -0.007613113, -0.063552590, 0.043594060, -0.007665827, -0.037405791) nowU1 <- head(modes$U.subspace[,1,1], n=6) expect_that(nowU1 * mysign(U1, nowU1), equals(U1, tolerance=1e-4)) ## structure 1- mode2: ## U2 <- c(0.01151413, -0.01098311, -0.05809988, 0.006112359, -0.0164621, -0.04298916) U2 <- c(-0.01051829, 0.01169047, 0.05700469, -0.00545407, 0.01683833, 0.04307286) nowU2 <- head(modes$U.subspace[,2,1], n=6) expect_that(nowU2 * mysign(U2, nowU2), equals(U2, tolerance=1e-4)) ## structure 4- mode3: ##U3 <- c(-0.1188249, -0.05850153, 0.02082409, -0.09123394, -0.02270938, 0.00987617) U3 <- c(0.113108253, 0.057547242, -0.013566069, 0.088356656, 0.025218140, -0.006994051) nowU3 <- head(modes$U.subspace[,3,4], n=6) expect_that(nowU3 * mysign(U3, nowU3), equals(U3, tolerance=1e-4)) ## structure 4-mode1 - tail: ## U1 <- c(0.009886232, -0.0006358995, -0.05189479, 0.009095127, 0.0005291993, -0.06936025) U1 <- c(1.008168e-02, -7.579627e-05, -5.113142e-02, 8.872045e-03, 1.126475e-03, -6.340656e-02) nowU1 <- tail(modes$U.subspace[,1,4], n=6) expect_that(nowU1 * mysign(U1, nowU1), equals(U1, tolerance=1e-4)) ## Fluctuations: ## f1 <- c(0.4259852, 0.3173786, 0.2339003, 0.2126361, 0.1965271, 0.1865991) ## f2 <- c(0.5467513, 0.4003687, 0.2712613, 0.2266669, 0.2006127, 0.1855429) ## f4 <- c(0.8295543, 0.4094441, 0.281545, 0.2527504, 0.2091488, 0.1931585) f1 <- c(0.2937191, 0.2410464, 0.1696626, 0.1553645, 0.1328955, 0.1237624) f2 <- c(0.4076411, 0.3114183, 0.2020671, 0.1662545, 0.1409823, 0.1274508) f4 <- c(0.6278258, 0.3151669, 0.2104897, 0.1819106, 0.1426998, 0.1333115) expect_that(modes$fluctuations[1,1:6], equals(f1, tolerance=1e-3)) expect_that(modes$fluctuations[2,1:6], equals(f2, tolerance=1e-3)) expect_that(modes$fluctuations[4,1:6], equals(f4, tolerance=1e-3)) ## Orthognal expect_that(as.numeric(modes$U.subspace[,1,1] %*% modes$U.subspace[,1,1]), equals(1, tolerance=1e-6)) expect_that(as.numeric(modes$U.subspace[,1,1] %*% modes$U.subspace[,2,1]), equals(0, tolerance=1e-6)) ## RMSIP ## rmsips <- c(1.0000, 0.8988234, 0.9627764, 0.915605) rmsips <- c(1.0000, 0.8927, 0.9600, 0.9158) expect_that(as.vector(modes$rmsip[1,]), equals(rmsips, tolerance=1e-3)) ## Multicore (same arguments as above!) invisible(capture.output(mmc <- aanma.pdbs(pdbs, pfc.fun=load.enmff("aaenm2"), ncore=NULL))) expect_that(mmc$fluctuations, equals(modes$fluctuations, tolerance=1e-6)) expect_that(mmc$U.subspace, equals(modes$U.subspace, tolerance=1e-6)) ## Calc modes with rm.gaps=FALSE invisible(capture.output(modes <- aanma.pdbs(pdbs, pfc.fun=load.enmff("aaenm2"), rm.gaps=FALSE, ncore=NULL))) ## structure 1-mode1 - tail: ## U1 <- c(-0.05024617, 0.009081938, 0.01764626, -0.09325497, 0.01754876, 0.01996309) U1 <- c(0.051308400, -0.008862397, -0.017957255, 0.085623903, -0.015406574, -0.018774554) nowU1 <- tail(modes$U.subspace[,1,1], n=6) expect_that(nowU1 * mysign(U1, nowU1), equals(U1, tolerance=1e-4)) ## structure 2-mode1 - tail: ## U1 <- c(0.008412425, -0.005413275, -0.06655021, NA, NA, NA) U1 <- c(0.007581776, -0.005342612, -0.060598339, NA, NA, NA) nowU1 <- modes$U.subspace[940:945,1,2] U1[is.na(U1)] <- 0 nowU1[is.na(nowU1)] <- 0 expect_that(nowU1 * mysign(nowU1, U1), equals(U1, tolerance=1e-4)) ## fluctuations na.expected <- c(3, 4, 1258, 1259, 1262, 1263, 1266, 1267, 1268, 1270, 1271, 1272, 1274, 1275, 1276, 1278, 1279, 1280, 1282, 1283, 1284, 1286, 1287, 1288, 1290, 1291, 1292) expect_that(which(is.na(modes$fluctuations)), equals(na.expected)) ## f1 <- c(0.9114199, 0.4010512, 0.2977837, 0.2202269) ## f4 <- c(0.4401748, 0.5743443, 0.6644086, rep(NA, 7)) f1 <- c(0.6954173, 0.2722280, 0.2242001, 0.1581307) f4 <- c(0.3369227, 0.4506579, 0.5365029, rep(NA, 7)) expect_that(modes$fluctuations[1,1:4], equals(f1, tolerance=1e-3)) expect_that(tail(modes$fluctuations[4,], n=10), equals(f4, tolerance=1e-3)) ## Calc modes with mass=FALSE and temp=NULL -- use aaenm (not default ff) invisible(capture.output(modes <- aanma.pdbs(pdbs, pfc.fun=load.enmff("aaenm"), mass=FALSE, temp=NULL, ncore=NULL))) ## structure 1- mode1: U1 <- c(0.04185427, -0.007185472, -0.05865138, 0.04704491, -0.009310229, -0.0432674) nowU1 <- head(modes$U.subspace[,1,1], n=6) expect_that(nowU1 * mysign(U1, nowU1), equals(U1, tolerance=1e-4)) ## structure 1- mode2: U2 <- c(-0.006541777, 0.01006403, 0.04607164, -0.00293836, 0.01800689, 0.043626) nowU2 <- head(modes$U.subspace[,2,1], n=6) expect_that(nowU2 * mysign(U2, nowU2), equals(U2, tolerance=1e-4)) ## structure 4- mode3: U3 <- c(-0.09327228, -0.04605804, 0.01065858, -0.08065877, -0.02255212, 0.005277435) nowU3 <- head(modes$U.subspace[,3,4], n=6) expect_that(nowU3 * mysign(U3, nowU3), equals(U3, tolerance=1e-4)) }) bio3d/tests/testthat/test-nma.R0000644000176200001440000002441714707230357016147 0ustar liggesuserscontext("Testing nma()") test_that("NMA", { "mysign" <- function(a,b) { if(all(sign(a)==sign(b))) return(1) else return(-1) } ## Simple test with PDB ID 1HEL file <- system.file("examples/1hel.pdb",package="bio3d") invisible(capture.output(pdb <- read.pdb(file))) ## Calculate modes with default arguments invisible(capture.output(modes <- nma(pdb, ff='calpha', mass=TRUE, temp=300.0))) ## Check first eigenvector U7 <- c(-0.05471209, -0.054333625, 0.001052514, -0.041171891, -0.049232935, -0.001588035) nowU7 <- head(modes$U[,7]) expect_that(nowU7 * mysign(U7, nowU7), equals(U7, tolerance=1e-6)) ## Check second eigenvector U8 <- c(0.064185522, 0.027349834, -0.024359816, 0.011493963, 0.029426825, -0.014397686) nowU8 <- head(modes$U[,8]) expect_that(nowU8 * mysign(U8, nowU8), equals(U8, tolerance=1e-6)) ## Check Mode vector mode7 <- c(-0.092579348, -0.091938941, 0.001780978, -0.079838481, -0.095470057, -0.003079439) nowMode7 <- head(modes$modes[,7]) expect_that(nowMode7 * mysign(mode7, nowMode7), equals(mode7, tolerance=1e-6)) ## Check eigenvalues eival <- c(0.013383, 0.013933, 0.022355, 0.025518, 0.029944, 0.033954) nowEival <- modes$L[7:12] expect_that(nowEival, equals(eival, tolerance=1e-6)) ## Check frequencies freqs <- c(0.018411826, 0.018786352, 0.023796192, 0.025423975, 0.027540704, 0.029326863) nowFreqs <- modes$frequencies[7:12] expect_that(nowFreqs, equals(freqs, tolerance=1e-6)) ## Dimensions expect_that(dim(modes$U), equals(c(387, 387))) expect_that(dim(modes$modes), equals(c(387, 387))) expect_that(length(modes$L), equals(387)) expect_that(length(modes$frequencies), equals(387)) expect_that(length(modes$mass), equals(129)) expect_that(modes$natoms, equals(129)) expect_that(modes$temp, equals(300)) ## Orthognals expect_that(as.numeric(modes$U[,7] %*% modes$U[,7]), equals(1, tolerance=1e-6)) expect_that(as.numeric(modes$U[,7] %*% modes$U[,8]), equals(0, tolerance=1e-6)) expect_that(all((round(c(modes$U[,7] %*% modes$U),6)==0)[-7]), equals(TRUE)) expect_that(all(round(c(modes$L[1:6]), 6)==0), equals(TRUE)) ################################################################### # # Test with ouput from MMTK # ################################################################### "calpha.mmtk" <- function(r, ...) { ## MMTK Units: kJ / mol / nm^2 a <- 128; b <- 8.6 * 10^5; c <- 2.39 * 10^5; ifelse( r<4.0, b*(r/10) - c, a*(r/10)^(-6) ) } ## Vibrational Modes invisible(capture.output(modes <- nma(pdb, pfc.fun=calpha.mmtk, mmtk=TRUE, addter=FALSE))) ## Mode vector 7 (mmtk: modes[6]) mmtk7 <- c(0.009399498664059314, 0.009162216956173577, -0.00018940255982217028, 0.008013487647313355, 0.009521462401750403, 0.000300410055738782, 0.006725323170414416, 0.00613075811499374, 0.0007167801244317134, 0.003911230038334056, 0.0031036402193391484, 0.00011224732577516142, 5.015756380626851e-05, 0.00122307913030356, 0.0005064454471294721, 0.0014876013838084666, -0.003968053761191632, 0.00020389385408319644) nowMmtk7 <- head(modes$modes[,7], n=18) expect_that(nowMmtk7 * mysign(mmtk7, nowMmtk7), equals(mmtk7, tolerance=1e-6)) ## Raw mode vector 7 (mmtk: modes.rawMode(6)) mmtk7 <- c(0.05535176862194779, 0.053954464078107375, -0.0011153538121951093, 0.04133856415826275, 0.049117637874840574, 0.0015497023155839553, 0.04227251082807122, 0.03853532867244931, 0.00450537391343214) nowMmtk7 <- head(modes$U[,7], n=9) expect_that(nowMmtk7 * mysign(mmtk7, nowMmtk7), equals(mmtk7, tolerance=1e-6)) ## Frequencies mmtkFreqs <- c(0.18417800523842359, 0.18804324107310424, 0.23820080688206749, 0.25592672017449125, 0.2798133442063071, 0.29367413814307064) nowMmtkFreqs <- modes$frequencies[7:12] expect_that(nowMmtkFreqs, equals(mmtkFreqs, tolerance=1e-6)) ## Fluctuations mmtk.flucts <- c(0.00195060853392, 0.00113764918589, 0.00167187530508, 0.00175346604072, 0.00151209078542, 0.00130098648001, 0.00133495588156, 0.00107978100112, 0.000924829566202, 0.00109689698409) nowFlucts <- modes$fluctuations[1:10] expect_that(nowFlucts, equals(mmtk.flucts, tolerance=1e-6)) ## Energetic Modes (mass=FALSE) invisible(capture.output(modes <- nma(pdb, pfc.fun=calpha.mmtk, mass=FALSE, mmtk=TRUE, addter=FALSE))) mmtk7 <- c(0.010350805923938345, 0.009267077807430083, -3.701643999426641e-05, 0.008268033266170226, 0.009606710315232818, 0.0003705525203545053, 0.006767227535558591, 0.005694101052352917, 0.001077079483122824) nowMmtk7 <- head(modes$modes[,7], n=9) expect_that(nowMmtk7 * mysign(mmtk7, nowMmtk7), equals(mmtk7, tolerance=1e-6)) mmtk7 <- c(0.05478481030376396, 0.04904884735365174, -0.00019592084498809212, 0.04376109816000157, 0.05084645641420892, 0.001961262696318724, 0.03581762420652206, 0.030137773647408828, 0.005700773021792685) nowMmtk7 <- head(modes$U[,7], n=9) expect_that(nowMmtk7 * mysign(mmtk7, nowMmtk7), equals(mmtk7, tolerance=1e-6)) ## Fluctuations mmtk.flucts <- c(0.00195600136572, 0.00114595965451, 0.00168855332538, 0.00175330685712, 0.00152428233485, 0.00130978174806, 0.00134381308059, 0.00108408194319, 0.000924316154921, 0.0010985505357) nowFlucts <- modes$fluctuations[1:10] expect_that(nowFlucts, equals(mmtk.flucts, tolerance=1e-6)) ## Energetic Modes (mass=FALSE, temp=NULL) invisible(capture.output(modes <- nma(pdb, pfc.fun=calpha.mmtk, mass=FALSE, temp=NULL))) mmtk7 <- c(0.05478481030376396, 0.04904884735365174, -0.00019592084498809212, 0.04376109816000157, 0.05084645641420892, 0.001961262696318724, 0.03581762420652206, 0.030137773647408828, 0.005700773021792685) nowMmtk7 <- head(modes$modes[,7], n=9) expect_that(nowMmtk7 * mysign(mmtk7, nowMmtk7), equals(mmtk7, tolerance=1e-6)) mmtk7 <- c(0.05478481030376396, 0.04904884735365174, -0.00019592084498809212, 0.04376109816000157, 0.05084645641420892, 0.001961262696318724, 0.03581762420652206, 0.030137773647408828, 0.005700773021792685) nowMmtk7 <- head(modes$U[,7], n=9) expect_that(nowMmtk7 * mysign(mmtk7, nowMmtk7), equals(mmtk7, tolerance=1e-6)) ## Fluctuations mmtk.flucts <- c(0.000784175524735, 0.000459423765829, 0.000676953612192, 0.000702913785645, 0.000611096147848, 0.000525101264027, 0.00053874467886, 0.000434616530213, 0.00037056523503, 0.000440417096776) nowFlucts <- modes$fluctuations[1:10] expect_that(nowFlucts, equals(mmtk.flucts, tolerance=1e-6)) ## ANM eigenvectors invisible(capture.output(modes <- nma(pdb, ff='anm', mass=FALSE, temp=NULL, cutoff=15))) anm7 <- c(0.041345308400364066, 0.03345000499525146, 0.008604839963113613, 0.03755854024944313, 0.036973377719312125, 0.008638534251932818, 0.033187347539802, 0.022779436981185324, 0.004702511702428035) nowAnm7 <- head(modes$modes[,7], n=9) expect_that(nowAnm7 * mysign(anm7, nowAnm7), equals(anm7, tolerance=1e-6)) ## ANM eigenvalues check eivalsANM <- c(0.84962016107196869, 1.0327718030407862, 1.3724207202555807, 1.7545168246132175, 1.9606866740784614, 2.2429459260702607) nowEivalANM <- modes$L[7:12] expect_that(nowEivalANM, equals(eivalsANM, tolerance=1e-6)) ################################################################### # # Test mass custom stuff # ################################################################### mc <- list(ALA=500, SER=1000) suppressWarnings( invisible(capture.output(modes <- nma(pdb, mass.custom=mc))) ) mass.expected <- c(500.000, 500.000, 500.000, 131.196, 129.180, 157.194) expect_that(modes$mass[9:14], equals(mass.expected, tolerance=1e-6)) sum.expected <- 28564.36 expect_that(sum(modes$mass), equals(sum.expected, tolerance=1e-6)) modes.expected <- c(-0.128550854, -0.069409382, 0.011821391, -0.056729257, -0.076231424, 0.004736013) nowMode7 <- modes$modes[1:6, 7] expect_that(nowMode7 * mysign(nowMode7, modes.expected), equals(modes.expected, tolerance=1e-6)) L.expected <- c(0.007375, 0.009036, 0.013007, 0.015084, 0.020111, 0.022608) expect_that(modes$L[7:12], equals(L.expected, tolerance=1e-6)) ################################################################### # # Test build.hessian # ################################################################### sele <- atom.select(pdb, chain="A", elety="CA") xyz <- pdb$xyz[sele$xyz] i <- 2; j <- 5; hessian <- build.hessian(xyz, pfc.fun=calpha.mmtk, fc.weights=NULL) subhess <- matrix(c(-79.568546, 80.648662, -19.298073, 80.648662, -81.743440, 19.560037, -19.298073, 19.560037, -4.680438), ncol=3, byrow=TRUE) expect_that(hessian[atom2xyz(j), atom2xyz(i)], equals(subhess, tolerance=1e-6)) ## Force constant weighting weight <- 0.5; fc.mat <- matrix(1, nrow=length(xyz)/3, ncol=length(xyz)/3) fc.mat[i, j] <- weight; fc.mat[j, i] <- weight; hessian2 <- build.hessian(xyz, pfc.fun=calpha.mmtk, fc.weights=fc.mat) expect_that(hessian[atom2xyz(j), atom2xyz(i)] * weight, equals(hessian2[atom2xyz(j), atom2xyz(i)], tolerance=1e-6)) ################################################################### # # Test extracting effective hessian with 'outmodes' argument # ################################################################### out.inds <- atom.select(pdb, 'calpha', resno=5:124) invisible(capture.output(modes <- nma(pdb, outmodes = out.inds))) U7 <- c(0.022538557, 0.016313285, -0.007462564, 0.024520684, -0.005453823, -0.015629021) nowU7 <- head(modes$U[,7]) expect_that(nowU7 * mysign(U7, nowU7), equals(U7, tolerance=1e-6)) eival <- c(0.013868, 0.015537, 0.024559, 0.030261, 0.039459, 0.043531) nowEival <- modes$L[7:12] expect_that(nowEival, equals(eival, tolerance=1e-6)) } ) bio3d/tests/testthat/test-aa2mass.R0000644000176200001440000000137314707230357016717 0ustar liggesuserscontext("Testing aa2mass()") test_that("Amino acid mass tests", { ## Simple test sequ <- c("ALA", "LYS", "TPO") masses <- c(71.078, 129.180, 181.084) expect_that(aa2mass(sequ, addter=FALSE, mmtk=FALSE, mass.custom=NULL), equals(masses, tolerance=1e-6)) ## With Terminal atoms added masses <- c(72.08594, 129.18000, 198.09134) expect_that(aa2mass(sequ, addter=TRUE, mmtk=FALSE, mass.custom=NULL), equals(masses, tolerance=1e-6)) ## With 'custom' residues sequ <- c("MLY", "HMM", "UNK") masses <- c(156.225, 10.000, 20.001) expect_that(aa2mass(sequ, addter=FALSE, mmtk=FALSE, mass.custom=list(HMM=10, UNK=20.001)), equals(masses, tolerance=1e-6)) } ) bio3d/tests/testthat/test-cmap.R0000644000176200001440000000171714707230357016312 0ustar liggesuserscontext("Testing cmap function") test_that("cmap() works properly", { ## Simple test with PDB ID 1HEL file <- system.file("examples/1hel.pdb",package="bio3d") invisible(capture.output(pdb <- read.pdb(file))) ## Calculate contact map on a small protein invisible(capture.output(inds <- atom.select(pdb, "protein"))) invisible(capture.output(cm <- cmap(pdb$xyz[, inds$xyz], grpby=pdb$atom[inds$atom, "resno"], ncore=1))) expect_equal(length(which(cm==1)), 285) expect_true(all(is.na(cm[1,1:3]))) expect_equal(cm[1,4], 0) expect_equal(cm[13,129], 1) ## Check multicore cmap skip_on_cran() skip_on_travis() trjfile <- system.file("examples/hivp.dcd", package="bio3d") invisible(capture.output(trj <- read.dcd(trjfile))) invisible(capture.output(cm <- cmap(trj, dcut=6, ncore=1))) invisible(capture.output(cm.mc <- cmap(trj, dcut=6, ncore=NULL))) expect_that(cm, equals(cm.mc, tolerance=1e-6)) }) bio3d/tests/testthat/test-deformation.R0000644000176200001440000000374714707230357017706 0ustar liggesuserscontext("Testing deformation analysis") test_that("still works", { ## Simple test with PDB ID 1HEL file <- system.file("examples/1hel.pdb",package="bio3d") invisible(capture.output(pdb <- read.pdb(file))) invisible(capture.output(modes <- nma(pdb))) #sums0 <- c(59.89283, 141.39431, 109.09525, 122.52931, 172.63766, 317.01506) sums0 <- c(180.9078, 198.6242, 318.4639, 379.9139, 479.9795, 473.1810) defe <- deformation.nma(modes) expect_that(defe$sums[1:6], equals(sums0, tolerance=1e-6)) expect_that(defe$sums[1:6], equals(colSums(defe$ei[,1:6]), tolerance=1e-6)) }) test_that("fits with MMTK", { "calpha.mmtk" <- function(r, ...) { ## MMTK Units: kJ / mol / nm^2 a <- 128; b <- 8.6 * 10^5; c <- 2.39 * 10^5; ifelse( r<4.0, b*(r/10) - c, a*(r/10)^(-6) ) } ## Calc modes file <- system.file("examples/1hel.pdb",package="bio3d") invisible(capture.output(pdb <- read.pdb(file))) invisible(capture.output(modes <- nma(pdb, pfc.fun=calpha.mmtk, addter=FALSE, mmtk=TRUE))) ## deformation energies of mode 7 (using MMTK - with PDB id 1etl) #def.mmtk <- c(1306.17014108, 524.571239022, 66.6665951865, 820.62710645, # 154.703500149, 754.482784094, 382.993752804, 173.118373857, # 287.880418213, 205.968139938, 466.277540766, 814.845931887) def.mmtk <- c(38.416002, 9.468705, 36.652248, 23.372066, 28.379588, 22.746524, 35.267401, 58.006941, 48.556190, 46.155725, 92.189766, 75.059341) ## calc deformation energies defe <- deformation.nma(modes, mode.inds=seq(7,26), pfc.fun=calpha.mmtk) expect_that(defe$ei[1:12,1], equals(def.mmtk, tolerance=1e-6)) # mode 8 def.mmtk <- c(92.87263, 142.04833, 208.63627, 77.01778) expect_that(head(defe$ei[,2], n=4), equals(def.mmtk, tolerance=1e-6)) #mode 9 def.mmtk <- c(250.2483, 183.0401, 362.0342, 255.6288) expect_that(head(defe$ei[,3], n=4), equals(def.mmtk, tolerance=1e-6)) }) bio3d/tests/testthat/test-pdbsplit.R0000644000176200001440000000541614707230357017213 0ustar liggesuserscontext("Testing pdbsplit()") test_that("pdbsplit works", { skip_on_cran() skip_on_travis() path <- tempdir() invisible(capture.output( capture.output(rawfiles <- get.pdb("3R1C", path=path), type="message") )) invisible(capture.output(files <- pdbsplit(rawfiles, ids=NULL, path=path))) expected <- c('3R1C_A.pdb', '3R1C_B.pdb', '3R1C_C.pdb', '3R1C_D.pdb', '3R1C_E.pdb', '3R1C_F.pdb', '3R1C_G.pdb', '3R1C_H.pdb', '3R1C_I.pdb', '3R1C_J.pdb', '3R1C_K.pdb', '3R1C_L.pdb', '3R1C_M.pdb', '3R1C_N.pdb', '3R1C_O.pdb', '3R1C_P.pdb', '3R1C_Q.pdb', '3R1C_R.pdb', '3R1C_S.pdb', '3R1C_Y.pdb', '3R1C_T.pdb', '3R1C_U.pdb', '3R1C_W.pdb', '3R1C_X.pdb', '3R1C_V.pdb', '3R1C_Z.pdb', '3R1C_a.pdb', '3R1C_b.pdb', '3R1C_c.pdb', '3R1C_d.pdb', '3R1C_e.pdb', '3R1C_f.pdb', '3R1C_g.pdb', '3R1C_h.pdb', '3R1C_i.pdb', '3R1C_j.pdb') expect_that(expected, equals(basename(files))) ids <- c('3R1C') invisible(capture.output(files <- pdbsplit(rawfiles, ids=ids , path=path))) expect_that(expected, equals(basename(files))) ids <- c('3R1C_e', '3R1C_E') invisible(capture.output(files <- pdbsplit(rawfiles, ids=ids , path=path))) expected <- c("3R1C_e.pdb", "3R1C_E.pdb") expect_that(expected, equals(basename(files))) ## ID does not exist - expect warning ids <- c('3R1C_XX') expect_warning(capture.output(files <- pdbsplit(rawfiles, ids=ids , path=path))) expected <- NULL expect_that(expected, equals(files)) ## multi=TRUE invisible(capture.output( capture.output(rawfiles <- get.pdb("1UD7", path=path), type="message") )) invisible(capture.output(files <- pdbsplit(rawfiles, ids=NULL, path=path, multi=TRUE))) expected <- c('1UD7_A.01.pdb', '1UD7_A.02.pdb', '1UD7_A.03.pdb', '1UD7_A.04.pdb', '1UD7_A.05.pdb', '1UD7_A.06.pdb', '1UD7_A.07.pdb', '1UD7_A.08.pdb', '1UD7_A.09.pdb', '1UD7_A.10.pdb', '1UD7_A.11.pdb', '1UD7_A.12.pdb', '1UD7_A.13.pdb', '1UD7_A.14.pdb', '1UD7_A.15.pdb', '1UD7_A.16.pdb', '1UD7_A.17.pdb', '1UD7_A.18.pdb', '1UD7_A.19.pdb', '1UD7_A.20.pdb') expect_that(expected, equals(basename(files))) pdb <- read.pdb(files[1]) expect_that(nrow(pdb$atom), equals(1230)) ## non standard amino acids: invisible(capture.output( capture.output(rawfiles <- get.pdb("1cdk", path=path), type="message") )) invisible(capture.output(files <- pdbsplit(rawfiles, path=path))) invisible(capture.output(pdb <- read.pdb(files[1]))) invisible(capture.output(inds <- atom.select(pdb, resno=197)$atom)) inds.expected <- c(1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578) expect_that(inds, equals(inds.expected)) } ) bio3d/tests/testthat/test-vector-funs.R0000644000176200001440000000133114707230357017635 0ustar liggesuserscontext("Testing vector functions") test_that("Vector functions", { ## vector normalization x <- 1:3 x.norm <- c(0.2672612, 0.5345225, 0.8017837) expect_that(normalize.vector(x), equals(x.norm, tolerance = 1e-6)) y <- matrix(1:9, ncol = 3, nrow = 3) y.norm <- matrix(c(x.norm, 0.4558423, 0.5698029, 0.6837635, 0.5025707, 0.5743665, 0.6461623), ncol=3, byrow=F) expect_that(normalize.vector(y), equals(y.norm, tolerance = 1e-6)) ## Inner product x <- 1:3 y <- diag(x) z <- matrix(1:9, ncol = 3, nrow = 3) xy <- c(1, 4, 9) yz <- c(1, 10, 27) expect_that(inner.prod(x,y), equals(xy)) expect_that(inner.prod(y,z), equals(yz)) } ) bio3d/tests/testthat/test-mol2.R0000644000176200001440000000514514707230357016242 0ustar liggesuserscontext("Testing basic PDB structure operation") test_that("read.mol2() reads a mol2 from zinc", { ## Simple test with aspirin file <- system.file("examples/aspirin.mol2",package="bio3d") invisible(capture.output(mol <- read.mol2(file))) expect_is(mol$atom, "data.frame") expect_true(inherits(mol, "mol2")) expect_true(inherits(mol$xyz, "xyz")) expect_equal(nrow(mol$atom), 20) expect_equal(nrow(mol$bond), 20) expect_equal(mol$info[1], 20) expect_equal(mol$info[2], 20) expect_equal(sum(mol$atom$elety=="H"), 7) elena <- c("C1", "C2", "O1", "O2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "O3", "O4", "H1", "H2", "H3", "H4", "H5", "H6", "H7") expect_equal(mol$atom$elena, elena) x <- c(-1.4238, -1.3441, -1.4532, -1.1519, -0.9822) y <- c(-2.5790, -3.9491, -4.7933, -4.2739, -2.8882) z <- c(0.6434, 0.0976, 0.0938, 0.0032, -0.0844) expect_equal(mol$atom$x[1:5], x) expect_equal(mol$atom$y[6:10], y) expect_equal(mol$atom$z[16:20], z) }) test_that("read.mol2() reads and stores data properly", { skip_on_cran() skip_on_travis() file <- system.file("examples/aspirin.mol2",package="bio3d") invisible(capture.output(mol <- read.mol2(file))) f <- tempfile() write.mol2(mol, file=f) mol2 <- read.mol2(f) expect_equal(mol, mol2) }) test_that("basic atom select and trim of mol2", { skip_on_cran() skip_on_travis() file <- system.file("examples/aspirin.mol2",package="bio3d") invisible(capture.output(mol <- read.mol2(file))) capture.output( sele <- atom.select(mol, "noh") ) expect_equal(length(sele$atom), 13) capture.output( sele <- atom.select(mol, elety="H") ) expect_equal(length(sele$atom), 7) capture.output( sele <- atom.select(mol, elena="C1") ) expect_equal(length(sele$atom), 1) capture.output( sele <- atom.select(mol, resno=1) ) expect_equal(length(sele$atom), 20) capture.output( sele <- atom.select(mol, "noh") ) mol2 <- trim(mol, sele) expect_equal(nrow(mol2$atom), 13) expect_equal(nrow(mol2$bond), 13) expect_equal(length(mol2$xyz), 39) xyz <- c(-1.4238, 1.4221, 1.2577, -1.3441, -0.0813) expect_equal(mol2$xyz[1:5], xyz) }) test_that("converting mol2 to pdb works", { skip_on_cran() skip_on_travis() file <- system.file("examples/aspirin.mol2",package="bio3d") invisible(capture.output(mol <- read.mol2(file))) capture.output( pdb <- as.pdb(mol) ) expect_equal(nrow(pdb$atom), nrow(mol$atom)) expect_equal(pdb$xyz, mol$xyz) expect_equal(mol$atom$elena, pdb$atom$elety) expect_equal(mol$atom$x, pdb$atom$x) expect_equal(mol$atom$charge, pdb$atom$charge) }) bio3d/tests/testthat/test-core.find.R0000644000176200001440000000152614707230357017237 0ustar liggesuserscontext("Testing core.find function") test_that("core.find() works properly", { skip_on_cran() attach(transducin) inds <- unlist(lapply(c("1TND_A", "1TAG", "1AS0", "1AS2"), grep, pdbs$id)) pdbs <- trim.pdbs(pdbs, row.inds=inds) invisible(capture.output(core <- core.find(pdbs, ncore=1))) resnos.1 <- c(202, 206, 209, 205, 203, 201) resnos.2 <- c(332, 334, 335, 336, 337, 340) expect_equal(length(core$resno), 313) expect_equal(resnos.1, as.numeric(core$resno[1:6])) expect_equal(resnos.2, as.numeric(tail(core$resno))) xyz <- c(16, 17, 18, 19, 20, 21, 25, 26, 27, 34) expect_equal(xyz, core$xyz[1:10]) expect_equal(sum(core$xyz), 234006) ## Check multicore skip_on_travis() invisible(capture.output(core.mc <- core.find(pdbs, ncore=NULL))) expect_identical(core, core.mc) detach(transducin) }) bio3d/tests/testthat/test-overlap.R0000644000176200001440000000330414707230357017034 0ustar liggesusers context("Testing overlap functions") test_that("Overlap functions", { ## Simple test with PDB ID 1HEL file <- system.file("examples/1hel.pdb",package="bio3d") invisible(capture.output(pdb.a <- read.pdb(file))) file <- system.file("examples/1dpx.pdb",package="bio3d") invisible(capture.output(pdb.b <- read.pdb(file))) ## Calculate modes with default arguments invisible(capture.output(modes <- nma(pdb.a, inds=NULL, ff='calpha', mass=FALSE, temp=300.0))) ca.inds.a <- atom.select(pdb.a, "calpha", verbose=FALSE) ca.inds.b <- atom.select(pdb.b, "calpha", verbose=FALSE) ## Set new coordinates of pdb.b xyz.b <- fit.xyz(pdb.a$xyz, pdb.b$xyz, fixed.inds=ca.inds.a$xyz, mobile.inds=ca.inds.b$xyz) pdb.b$xyz <- xyz.b ## difference vector dv <- difference.vector(rbind(pdb.a$xyz[ca.inds.a$xyz], pdb.b$xyz[ca.inds.b$xyz])) o1 <- overlap(modes, dv, nmodes=(modes$natoms*3)-6) expect_that(o1$overlap.cum[(modes$natoms*3)-6], equals(1, tolerance=1e-6)) expect_that(o1$overlap.cum[1], equals(0.2786508, tolerance=1e-6)) o2 <- overlap(modes$U[,7:26], dv) expect_that(all((round(o1$overlap[1:20] - o2$overlap, 10)==0)), equals(TRUE)) ## Calculate modes with default arguments invisible(capture.output(modes.b <- nma(pdb.b, inds=NULL, ff='calpha', mass=FALSE, temp=300.0))) r <- rmsip(modes, modes.b) expect_that(r$overlap[1,1], equals(0.704, tolerance=1e-6)) expect_that(r$overlap[1,2], equals(0.286, tolerance=1e-6)) expect_that(r$overlap[2,1], equals(0.289, tolerance=1e-6)) } ) bio3d/tests/testthat/test-dssp.R0000644000176200001440000000473314707230357016344 0ustar liggesuserscontext("Testing dssp()") test_that("SSE assignment still works", { skip_on_cran() skip_on_travis() if(!check.utility('dssp')) { skip('Need DSSP installed to run this test') } ## Simple test with PDB ID 1HEL invisible(capture.output(pdb <- read.pdb("3ERJ"))) sse <- dssp(pdb) ## helices sse.stored <- c(17, 37, 58, 101, 19, 37, 58, 101) expect_that(as.numeric(sse$helix$start), equals(sse.stored)) sse.stored <- c(18, 9, 14, 8, 16, 10, 13, 7) expect_that(as.numeric(sse$helix$length), equals(sse.stored)) ## sheet sse.stored <- c(3, 50, 75, 93, 3, 50, 75, 93 ) expect_that(as.numeric(sse$sheet$start), equals(sse.stored)) sse.stored <- c(8, 6, 4, 8, 8, 6, 4, 8) expect_that(as.numeric(sse$sheet$length), equals(sse.stored)) ## With RESNO=FALSE sse <- dssp(pdb, resno=FALSE) ## helices sse.stored <- c(16, 36, 57, 100, 134, 152, 173, 216) expect_that(as.numeric(sse$helix$start), equals(sse.stored)) sse.stored <- c(rep("A", 4), rep("B", 4)) expect_that(as.character(sse$helix$chain), equals(sse.stored)) ## sheet sse.stored <- c(2, 49, 74, 92, 118, 165, 190, 208) expect_that(as.numeric(sse$sheet$start), equals(sse.stored)) sse.stored <- c(rep("A", 4), rep("B", 4)) expect_that(as.character(sse$sheet$chain), equals(sse.stored)) ## With FULL=TRUE sse <- dssp(pdb, full=TRUE) expect_that(sum(as.numeric(sse$hbonds[,"BP1"]), na.rm=T), equals(2127)) expect_that(sum(as.numeric(sse$hbonds[,"BP2"]), na.rm=T), equals(1355)) expect_that(sum(as.numeric(sse$hbonds[,"NH-O.1"]), na.rm=T), equals(12017)) expect_that(sum(as.numeric(sse$hbonds[,"E1"]), na.rm=T), equals(-315.8)) expect_that(sum(as.numeric(sse$hbonds[,"O-HN.1"]), na.rm=T), equals(13347)) expect_that(sum(as.numeric(sse$hbonds[,"E2"]), na.rm=T), equals(-313.4)) expect_that(sum(as.numeric(sse$hbonds[,"NH-O.2"]), na.rm=T), equals(11859)) expect_that(sum(as.numeric(sse$hbonds[,"E3"]), na.rm=T), equals(-51.2)) expect_that(sum(as.numeric(sse$hbonds[,"O-HN.2"]), na.rm=T), equals(13076)) expect_that(sum(as.numeric(sse$hbonds[,"E4"]), na.rm=T), equals(-53.6)) expect_that(length(which(sse$hbonds[,"Chain1"]=="A")), equals(112)) expect_that(length(which(sse$hbonds[,"Chain1"]=="B")), equals(105)) expect_that(length(which(sse$hbonds[,"Chain2"]=="A")), equals(115)) expect_that(length(which(sse$hbonds[,"Chain3"]=="B")), equals(108)) expect_that(length(which(sse$hbonds[,"Chain4"]=="A")), equals(116)) } ) bio3d/tests/testthat.R0000644000176200001440000000004614707230357014407 0ustar liggesuserslibrary(testthat) test_check("bio3d") bio3d/MD50000644000176200001440000006147514710271132011575 0ustar liggesusers6c3d825f73a0f4d2a0e7eebf4bd5f5c9 *DESCRIPTION 45cb41b55c7a199f4a53b89549099320 *NAMESPACE b732a86512c9f3c37a058093b39e338b *NEWS.md 5d2c9874a418b707c4e12d96087fbe77 *R/RcppExports.R 5e199f7bdb3b2dac728d499af72a66cd *R/aa123.R 3a1c88e13bfe0be7c84120618822e090 *R/aa2index.R 9001e662a699bd605fd71d37ab6b783c *R/aa2mass.R 4885bccc6c6f90ae732f4228e4d2982d *R/aa321.R 136ef786c6ea8b94ac8e6c38316a32cd *R/aanma.R 4dd420d5576ff7b15385cb4e23070195 *R/aanma.pdb.R 9203c05378158366800fbf1f4a9e9acd *R/aanma.pdbs.R 8a2d7097e2f56c21e41f4532d20b41b9 *R/aln2html.R 5c8ebbfce8f16b6521644b2f5cb396c5 *R/amsm.xyz.R ef880390ae3f58420b0ab4121506c05b *R/angle.xyz.R 8bbe09682fd79a8cdf9ecd409923f0c1 *R/arg_filter.R 3870b339a62143463ffe0e037b41134f *R/as.fasta.R 99ce62a5cad5b025855f2f8e174f398d *R/as.pdb.R 29d38e33c2e2798192b9860ce3ff9c39 *R/as.pdb.mol2.R 735f3ec1cd23c14ff58380b5b2c1a549 *R/as.pdb.prmtop.R 209e33ae16d4d9b25880946ada95f3c2 *R/as.select.R a178e265e7a83136b94398d6d2e85411 *R/as.xyz.R 1ad61b9c92f5e0abc66f15a97831b1ef *R/atom.select.R 05c3ac3502d26d964bad1216c25fb724 *R/atom.select.mol2.R c87e5ffd9a2481698200875e09758034 *R/atom.select.pdb.R 178384007753ddf9965cf5ed6183f103 *R/atom.select.pdbs.R 472881c06fa417e3342cd7d3f6dbb00a *R/atom.select.prmtop.R 6452eb305af0761adbd1a0e58d661ee7 *R/atom2ele.R 17a8373e8df1a455dc17192f295bfb21 *R/atom2mass.R 48a555c4bee0d0dd3c02418713af7a87 *R/atom2xyz.R 0c8a1dadda8ce2e8a2a9ca2de0125dd7 *R/basename.pdb.R 46dc0dd398308a651bdb007b88416647 *R/bhattacharyya.R c5af3447d6746e0544490d7fdb9040b8 *R/binding.site.R d216833257b72d8919350d6e84f1842b *R/biounit.R e2a8b9de4eb5ea92976f2cd3f214f836 *R/blast.pdb.R e30e78857cdcc09122a065928319fd1f *R/bounds.R e1889cc2c0e3a6f4d6edb848d252d8fa *R/bounds.sse.R abae5f5457ba8820a71069b82b8e5600 *R/build.hessian.R d466ea5cf94d1383b2df41cb5e695735 *R/bwr.colors.R 3e5027282efcdbcb0cee6308108d285f *R/cat.pdb.R bad94ca1330e847c7207826aa802d5cc *R/chain.pdb.R 95252639136c31154fb453b8a585af23 *R/check.utility.R 081ab9198e86dafb1122f3df3ba3833a *R/clean.pdb.R 77bf6f8c3ed1e2ae5b82da30c5fea159 *R/cmap.R acbd558702c931c73a8b0040cb21ca12 *R/cmap.pdb.R 59bd3ce7f893392b424cb7625b6a5b38 *R/cna.R 7c5098bfa91b96cfb2847c7794883862 *R/cna.dccm.R b434f392be51d2d4f00046046b07e547 *R/cna.ensmb.R cba0743256885480bae528191dbf27af *R/cnapath.R 6624ac64efb374dd2e0896326ea811f9 *R/com.R e00189a7a762151be9f33223a236a63c *R/com.pdb.R c2fdd1f28bdef7d151e51b340a84f278 *R/com.xyz.R 786907c3ba7816f42bb9bfbc44222405 *R/combine.select.R adc8ba00d757ae235f46787889d12cca *R/community.aln.R 7162e7da956bafb2c40385d31eb314a0 *R/community.tree.R 6b063f818fa98667191a4069019c216d *R/consensus.R 0530ddc97b7d04bcb2612fc117af0210 *R/conserv.R e167699e38ddeed0b09eb0c396075a8d *R/convert.pdb.R b32b403008982a8c148809adc06f8b98 *R/core.cmap.R f0bbfe1c4c4463dcafdc126619617acc *R/core.find.R 5a2e60494f76459eeb447bbd65f584a9 *R/cov.nma.R 63cac65301a42de99972432b1c7c081b *R/covsoverlap.R fef75828e128d284e8ca624977e44960 *R/dccm.R d09f37402425958e25d133c2dd229f99 *R/dccm.enma.R f41d92e86f92802cda8592a70e296701 *R/dccm.gnm.R 57437256a88ba8b90b47ab9e18fd147c *R/dccm.nma.R 23eaf0d596f3476d788742a3349a4e1c *R/dccm.pca.R d91b246892e32c43275c30647ce65525 *R/dccm.xyz.R 96286e9d868f5c4f6e059689acff33cd *R/deformation.nma.R 1beb2e06307b69059f64d6524ae68bcd *R/diag.ind.R d9885c3180310f8b8778ee222d632567 *R/difference.vector.R b4724d94d0fdfd4c75681308a67dffe5 *R/dist.xyz.R 7cb9b6c73a0110974aff88392d089d28 *R/dm.R fd217d92c369bd9026049a02ffa14e5d *R/dm.xyz.R 9bcc4353cde242101d7ce9c54fe33aa9 *R/dssp.R 10343dc3bb6980664a5df9cb6eddb1b8 *R/dssp.pdb.R 1e468e2685c24dcdc0a2974760c1a081 *R/dssp.pdbs.R 9f9aa73363a01367436a9941c20e412c *R/dssp.xyz.R 8e116ead75a3792026291a58fc50227e *R/entropy.R c60b8e4b0b3933d0ef586305fccac69e *R/exefile.R 83a16eebc26c7c1fdf0b7979cbc4a79e *R/filter.cmap.R ef71c2e6b7602fffefa6e0470d6cf45b *R/filter.dccm.R 5eee2af1c1b9b9e818e854afaf60f16a *R/filter.identity.R 5819acbe37a406c25ed69b5068b428f3 *R/filter.rmsd.R ee379599d8254472d6df82f8ff595439 *R/fit.xyz.R 7f0c0d6133252ca6896fd8f6d9cbc369 *R/fluct.nma.R 0de666eb85a3f7f72b94bd37b15791ed *R/formula2mass.R 228a1e2d7bae2b06cb955dc2849228e8 *R/gap.inspect.R 7e1043b7e2ece35717f40879ceeeef54 *R/geostas.R 851bd26aa2a5f9fe7c37e2d5b3556376 *R/get.blast.R 41a1e8d12c0efd27858a761de5cac412 *R/get.pdb.R 6485e39f2963c8b0fa1fcc157d6ad3cf *R/get.seq.R 47addc7fcd0744086985af22e2b862cd *R/gnm.R 1ab7a0ea647f9cbd5794af9d3636cd0f *R/gnm.pdbs.R a4650a718115f929a223abf936958772 *R/hclustplot.R f6b38088f3046794d87363462b97c6ac *R/hmmer.R a1c7b2c881e3b27c86678708818782d4 *R/identify.cna.R 9face02e76a999d40e7d3c8f47d45565 *R/inner.prod.R b8eaf3135026219319f713351f3913d6 *R/inspect.connectivity.R e98eaffc9877f0b00818c04bc36bd40a *R/is.gap.R 46766d6ca465170d8cd8bc96513eee7a *R/is.mol2.R b133ffa086b43005b943f9a2f0450579 *R/is.pdb.R c5e4dd60572e029d5a99aff57a12814a *R/is.select.R ff4bae24762c94c65b4c10d9774a76ee *R/is.xyz.R f3a1ce298492f7992b91429f9a65154b *R/layout.cna.R 74e549c90c82575fbe6244218df80790 *R/lbio3d.R 40f1a5ea30049046032402c4b73e3f67 *R/load.enmff.R d6fd5c79cc8300c03b80f69ac8404bca *R/mask.dccm.R 8919406e86f3472e4feed5dcb3037231 *R/mktrj.R 9de0863253f48da4d6c43af988fbe42d *R/mktrj.enma.R 7ba177c301ac5950f189337668d0b14c *R/mktrj.nma.R 8e53c99a9c6385c3d37c0fd4f6170777 *R/mktrj.pca.R d7ed0d61455e1b71a749685e0b7a7894 *R/mono.colors.R f4fc89df3e865cf4220e6717fe500bdf *R/motif.find.R 489983bdb7185d46ab76029409646ca2 *R/mustang.R 5cad0ac0f01ee0e00c0451c3245feef0 *R/network.amendment.R 8d1844c9a1b04949d3e74ca4e559ef89 *R/nma.R ae4ce06bc71f20c2384460a6b47bec6e *R/nma.pdb.R 22d0d3fc55e3913ee83801c24fb8e071 *R/nma.pdbs.R 274c79ff0feeb26e8dda4bb052154378 *R/nma_funs.R 70d776448b5ed1c49b1d15b12d5e5db0 *R/normalize.vector.R 1f8acdc2387bae8073ffd6dd4f817dbb *R/orient.pdb.R d5031efe05fbe7d9479ca11aeff7a2a8 *R/overlap.R bfb07d8049ba981029b5cef22eb8b367 *R/pairwise.R 62256d8b7089775e90288f10c833d060 *R/pb.R 6e76c8e31335687df8b369a1bdb3f57d *R/pca.R feda760575734d91fc5369f1294a703d *R/pca.array.R 964e746cc789e91cccfdf3c2f79cfd5a *R/pca.pdbs.R 84c8023e33a4752ca0044234df7ef9f8 *R/pca.tor.R 0fafa8786086504978300303eab268c8 *R/pca.xyz.R 686f736ce04df6c11eb5b496e83e3eb1 *R/pdb.annotate.R 92030f163f3d67913fb7a1b9b57be15a *R/pdb.pfam.R 026945ae25900ec0a924501a99fafacc *R/pdb2aln.R c653c556af553f30ddaeaf2466a69a49 *R/pdb2aln.ind.R 159761971c152bf2db899a25a7754ceb *R/pdb2sse.R 38f860744b4c046f20bc48c8a79b2821 *R/pdbaln.R 13dc32cf8bba028bd221a1f250f419a7 *R/pdbfit.R e8c7d4d37eea6e88fec1eb94482e3b44 *R/pdbs2pdb.R 52008285c2a3d82504a914ae54b7fef9 *R/pdbs2sse.R 3a9e52c15521ad9349e878e392d9aa1c *R/pdbseq.R 84f13855d8297308a5cfb58e63f43da0 *R/pdbsplit.R 7758d93051e9c763dc940893213f357f *R/pfam.R b50eb47056bfa7568bdd97482808de4e *R/plot.blast.R 86be6e01618d198115bcd4b59e8da3ae *R/plot.cmap.R 405b39a11f3ad341d229977ab6012385 *R/plot.cna.R 5f37909e7127bfda49e14dbc8e9ce4f7 *R/plot.core.R af64d552da748ff4311bc6dcdcf86293 *R/plot.dccm.R b797ea804a7649c70974d5ce7d28ca81 *R/plot.dmat.R 8fe618fdd7b9d92e61002bdc0f35f774 *R/plot.enma.R c8a33f3c13fb9fe2e1152655c6c16fd3 *R/plot.fasta.R dccf527bd23922cbef6ff1209b9496b0 *R/plot.fluct.R 76eb4ca559a6d9c93d795cfb3b9f0262 *R/plot.geostas.R dae1f890d18936dffe91bdf08830e114 *R/plot.hmmer.R 96ce31a0a82978d5e81866671c00f772 *R/plot.matrix.loadings.R 119543f73aa719e47a54ee1b1418fc94 *R/plot.nma.R 0d553d0c777fba08972d519c854d12d0 *R/plot.pca.R ceca3cfe8aadbc4ac81d8cb23ef8f665 *R/plot.pca.loadings.R a0110652e10e3b8634be2998e54c7a7d *R/plot.pca.score.R 1ae081a21e5b24c73f7a4cb6357410bf *R/plot.pca.scree.R b44899b6b43adf43fd010a9faf160ddc *R/plot.rmsip.R 8e198ecfacb7f24eca13082d1ca19dcb *R/plotb3.R 6d64ba753c41667a9f45f73810b978d9 *R/print.cna.R efea2031c5476d8714166c6ac612cdca *R/print.core.R d36bd215d9fc19dee5911ff92cd429ee *R/print.enma.R 963c784e8e86027a377b13bc333b01ff *R/print.fasta.R 1f34d5688cd4496a9b22cb58dd33066a *R/print.geostas.R 1547e70322d8525acaddbc42d0269c6a *R/print.nma.R 82dceefd5f52949a08489965d718db12 *R/print.pca.R 6ca64945413d2668612d10860d5d2be3 *R/print.pdb.R cde3ee5c511a32f80759a997d811a93b *R/print.prmtop.R 1a5f62d5aa393ebddcb43f70c5b36941 *R/print.select.R 586a84798de867b332fe10af487a4546 *R/print.sse.R 5cab345f774a13ba6147967a5d902a27 *R/print.xyz.R 48a31b7ffd4c43170f3ae1e87537c329 *R/project.pca.R 9a13e6bbe9316d39ccb36a5bf980c23d *R/prune.cna.R 15c04b14fa0e879be09ea48492d6fde3 *R/pymol.dccm.R 37ff368a1c16edd47126ed0a13f75495 *R/pymol.modes.R 65d6cb0ca2fb46cbeee7d3f08192f1e2 *R/pymol.pdbs.R c9f6375dde9166fb35832e0e7dd48fe7 *R/read.all.R 4f6fbb9bd10eb009ec555583c8c65661 *R/read.cif.R 23e0e05cbb55e57f91cf69b331f9b39a *R/read.crd.R e992c6a2601ea9188eb30f15d2023d4e *R/read.crd.amber.R 5e91c75f612d033c3edf6eaf88312661 *R/read.crd.charmm.R fd8e9b898c250ccfe77782489eed48b8 *R/read.dcd.R fc5751a6dc90b7345c5cff9b2f2dbb2c *R/read.fasta.R 61fc2552fc4769508339662dd5b62b36 *R/read.fasta.pdb.R bc664fc717b560c83a3eee4d6972e4f7 *R/read.mol2.R eddc09241d5064deceb16ed56264d355 *R/read.ncdf.R b23630ea3657e24d520aba1c585e8f49 *R/read.pdb.R 5c81d409990b6eba721cc160a833446e *R/read.pdb2.R 69b73edb0238dabf39cd14f0afe45190 *R/read.pdcBD.R c88e499f2e478f7e15453c19374e344e *R/read.pqr.R ed58c2fade5372f69a398f211c8f81e3 *R/read.prmtop.R 9d6d66eb18a8533831a0bfedcd2453cf *R/rgyr.R 8dce578e11588b72651d4fa775a3e318 *R/rle2.R ded56142e753b51c44283dfff308b8d9 *R/rmsd.R 46fa1ef681dc41ce4054a0fb8b9e339c *R/rmsf.R 1f9d56bce23f0ba1a46c27adef9f5e38 *R/rmsip.R 9213954e43f1c8b542bb051cac91769d *R/rot.lsq.R cd2c33f5f607e1531abd7c6488bed778 *R/rtb.R 7810801163901688ee3cab960c83f316 *R/seq2aln.R 5c1439bc3e3cf6da7b010c1c796dc4bf *R/seqaln.R 5bd5ce11e71b9a75a87e3dc71deadd17 *R/seqaln.pair.R 6b313bded9b39072693f189cee48c6fa *R/seqbind.R d0643c9813d7168e8fde6b129da1bf36 *R/seqidentity.R 11659491aee16827ee1b026a6b287274 *R/setup.ncore.R b265ab922ed09417822b6bce32d57452 *R/sip.R 573372f565bb10e9a426d37d68b9eee3 *R/sse.bridges.R 324b201de4f40e9617eb8f80d6ad8c6d *R/store.atom.R 4ad767749c167d3f8dd2dc6c30325e23 *R/stride.R b99422fe7b442863aca6042552724b74 *R/struct.aln.R 02b9229d7c25dfe12356d97abc055c25 *R/summary.cna.R bd03b69f4fed8a847683eb614adabf48 *R/summary.cnapath.R c75b67a9b7274163e06567328630a4a2 *R/summary.pdb.R 9592f26c110e4456bc5712d123b80848 *R/torsion.pdb.R 02ecdf3e7234170d2cc17cefef944ac4 *R/torsion.xyz.R d657629f5eb86376fa71a061b78f5305 *R/trim.mol2.R 61afb6d0d8211337b78b748e90fe8685 *R/trim.pdb.R e38b1fe038cc8153ba8967c93e1bd937 *R/trim.pdbs.R 7f585f9541a0e392a23eb381d6653e36 *R/trim.xyz.R 8d3ccf7b583e943a9e46c3c4af39267f *R/unbound.R 72c5a4d149aeeb907ec7e4cc45e2ae60 *R/uniprot.R d5d3df69651197f3f0547daf0e613d1a *R/var.xyz.R 6edf654c5a36ccb0db5f5226b2d40616 *R/vec2resno.R b323eb922cf8f9036d515e605b7cda1e *R/vmd.R 61b12b6a8496c648f79006f61936c78e *R/vmd.cna.R ab10921b668e85514e04075664439293 *R/vmd.cnapath.R f8814744b4feae467bc874c5f617fe25 *R/vmd_colors.R 91577affd2d5930b392467972a3598ab *R/wrap.tor.R 09cb8f145e08d41466a11b90c9fd6b8a *R/write.crd.R 47c309cafdd3923790727f5ba4f3264c *R/write.fasta.R 1e1b0227e7768f3147548f04d61d7032 *R/write.mol2.R b1e0b5a0e37995a494cf65c7b7cb78b7 *R/write.ncdf.R 8015083d683d1da1e5dc76906e93256e *R/write.pdb.R 548106c98ad8bf2b3b63686d9b7947ad *R/write.pir.R a97c9312ea73b4e105a583707d4a5578 *R/write.pqr.R 9e57938c5fa7ce30265b29e8750f4810 *R/xyz2atom.R 98844a8d357b5252b450e9e40e702643 *README.md 88d467a60ba0d2effedfdbe0a61ad481 *build/vignette.rds b4187321783b82378e3f9be255107088 *data/aa.index.rda 7448b9c2b4cfb706700635d36566a0bd *data/aa.table.rda 7d55fffdd06d238f83012dffdab1d452 *data/atom.index.rda fa83e2ac0f558f03e525c98b46597781 *data/elements.rda a895de8af57cb0ccc8c4dc32a1911f6a *data/hivp.RData bc06c7fcb03535dbc7f0d1e1b3a1f345 *data/kinesin.RData 1a009064df11a8cb036d86a398669efa *data/sdENM.RData ff5d52ecf3f780cbc5c693e87895aacb *data/transducin.RData 9c7346600e9e15eabbf6db7f04b6fb53 *demo/00Index 78e18dac008a0095a72e33647296befc *demo/md.R 5115f75c59507335aca02b35327f2324 *demo/nma.R 37555f4c7b54f97ed5466b49a958a176 *demo/pca.R b7e58ea62baf621f669d3afd84de90f2 *demo/pdb.R 4123bc4cfdb4f374e91160de39697b58 *inst/CITATION c1ff9ff92aedf699779a4ea75a71ec35 *inst/doc/bio3d_vignettes.Rmd 63b65d4b1916861873f81b0433de00ba *inst/doc/bio3d_vignettes.html ea4074c1ad01d8237901b03688f91fec *inst/examples/1dpx.pdb 83ea2593e2c4021492c564f437f0072f *inst/examples/1hel.pdb 7275ccf3f0ab303ae18f01617f420056 *inst/examples/aspirin.mol2 a919bcdc124d3860979252b045358337 *inst/examples/crambin.inpcrd fe8c318484c84e12a0e921c62c08c29d *inst/examples/crambin.prmtop 13633a8eddafb92595c4c0fcbcf22aff *inst/examples/hivp.dcd c9ae51f55e66796d9095b12c2cedc2ea *inst/examples/hivp.pdb b97811463e69c24e6ed8ca61cae7fe3d *inst/examples/hivp_xray.fa 35d529053130d3a6a9d02956cd68abfd *inst/examples/kif1a.fa 962f834069acd3b4fad3fbafe30cab65 *inst/examples/test.pdb cdffbec11fea0886a52591d8650fefc1 *inst/examples/transducin.fa 89fb7d71149c8b40c36ae78f0f676535 *inst/matrices/bio3d.mat 738fed81a10b6bfcc3fe72d96e49643b *inst/matrices/blosum62.mat da8648797ac7625cb14af0741eb80340 *inst/matrices/custom.mat 8ce757a60ee4b6fb9c1dd4ad611352d6 *inst/matrices/emboss_properties.mat 10899946c2edb54f64d77fda863120e7 *inst/matrices/pam30.mat 80d78a8630e33427108c62548dc8ea85 *inst/matrices/properties.mat 4eca44c2cbbe16f4c1920e5c5b5fec6b *inst/matrices/similarity.mat 11a6667645407124ad81fbc0b5c8fe0e *inst/staticdocs/index.r cb64ce5deabbf4baf259db74cff7e38f *man/aa.index.Rd b58366535e4316def8b4618edc13a951 *man/aa.table.Rd 139e181206344995bd0d1d80c7d7659c *man/aa123.Rd 6dc1b206df39ff99949a27f6212c475d *man/aa2index.Rd 1a9206737603466d327ee69ec3a66c24 *man/aa2mass.Rd 6eb71c3d14e610c32922f09a9b8a0846 *man/aanma.pdb.Rd 2022fea6a3f4a30c7f07b64296434d6b *man/aanma.pdbs.Rd a5514ac0ca96d02ff905c0da79bf6e8f *man/aln2html.Rd d4f87a2c9c4344b5e83f155f4c8e11e6 *man/angle.xyz.Rd b938b57f3b0f1e5bc88dc3064a0617dd *man/as.fasta.Rd a4ded5c3c7849eb05d69769341201829 *man/as.pdb.Rd 9be4f170fa002fb27e8e94ebbb440e95 *man/as.select.Rd 83141303adc7a82321f5513341f8731b *man/atom.index.Rd 66da56130bd14995f92b06253a5cd9d7 *man/atom.select.Rd 7f9a71bdb779f0d99f4e2554e7026eb8 *man/atom2ele.Rd 7aae340706c32acbd2e58762741703bb *man/atom2mass.Rd 7e752beacb85941f5ef50ee69a8dc7da *man/atom2xyz.Rd 71788475bc11e8b02f7ee4390ba439e7 *man/basename.pdb.Rd 29c5ac74c5b69f1fabfa396f54592f46 *man/bhattacharyya.Rd 4944562de84e12cbf0984f5e56016eff *man/binding.site.Rd 03a166aa1b0333e1a948d2bba1d9f89f *man/bio3d.package.Rd cfd0f63ac0a57012fde611c5622c5d10 *man/biounit.Rd 4ce022e382b5ad08a4f764cd87d8f11e *man/blast.pdb.Rd 9ca205b70db6da407022e6e8e3df592b *man/bounds.Rd ea341f109c60380e96fc0b5fc73166c5 *man/bounds.sse.Rd e583167d79325233586ddb72489aee62 *man/bwr.colors.Rd ebaf46fa27bfd05dc5942e64d43ce547 *man/cat.pdb.Rd d8dabecab54c6c493ce63dd083f20d30 *man/chain.pdb.Rd 2fa034ee371c6082702a19c92b70eb79 *man/check.utility.Rd 2be124b96e86049abda95e7630fbd6c7 *man/clean.pdb.Rd 3562365fa2850b531d6c52fbc8db3b19 *man/cmap.Rd 096cd872df7a4baabab4faae39ab2f61 *man/cna.Rd 2d4dc733dda48d5e908f372deebc2378 *man/cnapath.Rd 777dcd532b2b2dc80209def7d64ac530 *man/com.Rd 1cea06bfbdd42f7234addcff9a7b820d *man/combine.select.Rd c0a6d970ca6159a5e2253a1a3cbbe4a0 *man/community.aln.Rd 572dfd76b011e1c28c8a2b07f6a24461 *man/community.tree.Rd a452eb11788c87bb9691a661d345d056 *man/consensus.Rd d75b4dd2fd167c244c62d2f2dcd51967 *man/conserv.Rd 2b82724e66f9241d2447506aa0aeba67 *man/convert.pdb.Rd 32847e4b713b4bafa54b3aec1105dd3c *man/core.cmap.Rd 492f806e1cdce14dd4b722611400eb14 *man/core.find.Rd 599c676a63178db798ce860fe23d5fa9 *man/cov.nma.Rd 8f42632b8d3049280b4c636c7cc5eead *man/covsoverlap.Rd c7152000fe9db3ad35b66ca4583ee5d7 *man/dccm.Rd e8444b390af39397ff632e19815e7503 *man/dccm.enma.Rd 7ad611b96c658065d2d4ab3762a3c261 *man/dccm.gnm.Rd 311bebef8345101d068fd8ac64f474d2 *man/dccm.nma.Rd dc65d93d537ee12a8352589f620f4e7a *man/dccm.pca.Rd 8120798ba72dc3a81810cbecf2af23f2 *man/dccm.xyz.Rd 7c1fdc4408d2875de7a7597816d232f4 *man/deformation.nma.Rd c923b626ecfa0810c4ed642ec372cb8a *man/diag.ind.Rd 913b46273cfb376ea575391d0ee17feb *man/difference.vector.Rd 679eeb81251cf1c0d339bf1daba92a6d *man/dist.xyz.Rd 2db2e1b17e7ad7ca4121dc8b69479643 *man/dm.Rd a1c07deee5b4b77cfe5a97f37afb6d63 *man/dssp.Rd 8756af3faa9d144be4f192fde9c1640a *man/elements.Rd 4d4179906785d741e4ff180391d3599a *man/entropy.Rd 571c99819307cafcd0d7410f0df82488 *man/example.data.Rd 691f07b387b01e083dc507780677f744 *man/filter.cmap.Rd 77cb80df3dfd3a4b3880354b72513449 *man/filter.dccm.Rd 5fe3188b87cda4c0bf39c59680715635 *man/filter.identity.Rd de1dd34d923f2bd6d46ea41397d6a4f3 *man/filter.rmsd.Rd 0bf2b40399bf52f94eb1898164fc43e2 *man/fit.xyz.Rd e7e8d1f2f4c6eb26e4656bdfcfeef3ed *man/fluct.nma.Rd 1ffc100dfdffa67dcccfd30544913950 *man/formula2mass.Rd cbe6a6f50db0ecfb66fa2c48d9f3e470 *man/gap.inspect.Rd 17a181aa475088fe3ce2a2f6fbded9ac *man/geostas.Rd 0139c450bc4b652c748cad2c61197598 *man/get.pdb.Rd bf6f1d06b451d361e1665b6c009eae90 *man/get.seq.Rd 0b96e2e65c1d4d7d70d37835c687892b *man/gnm.Rd 1560274da20f8df6d1c90ada44a2f53d *man/hclustplot.Rd 1aa6ebb16bfe8baf51566d66bdce3031 *man/hmmer.Rd 174d45fffd551d6a79684bcbe74594b7 *man/identify.cna.Rd d1db147f827dd27adec412411efb1b7b *man/inner.prod.Rd a6e0dbb5bbbdd54641f51a13468365ac *man/inspect.connectivity.Rd 86678483ad473128779e86d25f800840 *man/is.gap.Rd fce94b808315219a039e5fd5087aff28 *man/is.mol2.Rd b70ea5b1c25fdc58287a5a2f92f507a1 *man/is.pdb.Rd 5b8b6e9f18c4acf77ea4e8fc1231a6c8 *man/is.select.Rd f2cd959d3b0bd3cd16ddff0f00318276 *man/is.xyz.Rd ea59632bc1ae69ba8bcc5a5e1769eb9c *man/layout.cna.Rd 060c0199ec1ba752ab79d7a43456209c *man/lbio3d.Rd 7ba02458e721a3eb7791c88c4ad76138 *man/load.enmff.Rd ed04174d7e8bfb984f244cad3090d274 *man/mask.dccm.Rd 1638a12b0d2a05ef9fb6462ca359c9ec *man/mktrj.Rd 6d35bf7937245475755873e99eb9b198 *man/motif.find.Rd 7ff174dfe08c8c4c30fd8c28a26f9ef2 *man/mustang.Rd eefc403b0fbba56f8e94176dc7353c67 *man/network.amendment.Rd ff784266ea44d4239431ed6ab22357cc *man/nma.Rd 393d48481b2a670707acef6fb4c8c2f8 *man/nma.pdb.Rd f51b887c1ff7b6178e092505d85b0609 *man/nma.pdbs.Rd 6f18fd042d34d3ef235f7ebc5759a61e *man/normalize.vector.Rd 2b0bd333a160bb8bc683c8650e7f0fdd *man/orient.pdb.Rd ee0c1d7ffbf7de55827341ecb861e240 *man/overlap.Rd e8833cb53be9a897b63dee8e0e7da248 *man/pairwise.Rd 6b30dceb8f37b251feb5ab5d3f56afee *man/pca.Rd 65c547dd3cff5352b29ecaa337a00f6d *man/pca.array.Rd e436c1892ed7b3430ff6a6e9a9c98471 *man/pca.pdbs.Rd 818f18c8b96cc71126a52e969f53a6e9 *man/pca.tor.Rd e77c15fae3222f9a632644f3152f4ef3 *man/pca.xyz.Rd dd7f68c8404f62e23b08f5c8a5fd4ad2 *man/pdb.annotate.Rd 5be6f31a7292bee0be3cd10600844d73 *man/pdb2aln.Rd 3abac689ec64769ff39e4c9d7a8cf639 *man/pdb2aln.ind.Rd 1db84d282bcfbb2d8d08e10606768b4d *man/pdb2sse.Rd 2ec1fbfae80fb0dc74fc39c0d5c31419 *man/pdbaln.Rd 811cc4d61c4ca9b60bc88d7304ec2106 *man/pdbfit.Rd 37131ba0bb18840fd787175d073735bc *man/pdbs2pdb.Rd 9af1b77250c2376faf568991b2d2bb80 *man/pdbs2sse.Rd d89918dde86aff7cd1e03600f640a018 *man/pdbseq.Rd 0f5f8241ff4eed029d4de0376d3d9451 *man/pdbsplit.Rd 6d07b414a2896edf8527005aea0cb728 *man/pfam.Rd 1c05f8fb997568f134f8285f2e61d44f *man/plot.bio3d.Rd c2fc3a3fc68b25960fadfc01856d6891 *man/plot.cmap.Rd 0fcc32ac9ebd7913b29339c59b2c0fe3 *man/plot.cna.Rd b93f1f7706d412ea33d044ff0b331375 *man/plot.core.Rd e983addd2c909060b66007af0df30909 *man/plot.dccm.Rd b25abe5c5c275ff51d8b8249cfea136a *man/plot.dmat.Rd 89081aa2e053d47877dc8bcd962907f5 *man/plot.enma.Rd a14759a107ac7956f786117a70be390f *man/plot.fasta.Rd 7138ba6823879c2483e3a8cea972aeb9 *man/plot.fluct.Rd 1d336234f2c664954aa84a2241c4b9dc *man/plot.geostas.Rd a3f5d4c511425d3eda4cc9f50b73923a *man/plot.hmmer.Rd f7f5a8f59c15ca7c81fa2d5935120809 *man/plot.matrix.loadings.Rd cde80be2caee0007d3aae194170a4373 *man/plot.nma.Rd 799f03f06c73b55b22b68cae1ed24d1c *man/plot.pca.Rd c6d01fbaab9a9a055e0358186a5215d8 *man/plot.pca.loadings.Rd ae438e3711efafcf3b92f50cbc4ce171 *man/plot.rmsip.Rd e7e2d8b3a9289ec0b75b03e97e6cd713 *man/print.cna.Rd 5199c78f35bcb8aade5e662e4cbf968e *man/print.core.Rd fbd2570538e2c23bd7a8992291f3ea23 *man/print.fasta.Rd 9cd68565f972204cd7a130537019529b *man/print.xyz.Rd 84648862fc42e524d2136b413f71b251 *man/project.pca.Rd 7c4cc0978c045b12e39747381f5912be *man/prune.cna.Rd f7b5b7a8587ea525f4f93e48ec8f2435 *man/pymol.Rd bbcd9a2272643a6a21624b9ac529026d *man/read.all.Rd debe46ba72c904999884f3341ab3e0bf *man/read.cif.Rd 2019088967922f8588c3946894828f35 *man/read.crd.Rd 37641daa7c9a3bfa6bd833c33eedf763 *man/read.crd.amber.Rd 3dc8f92914650dc903118e42eae2cf5d *man/read.crd.charmm.Rd 033136ba003643685b20aeb67fcf94fb *man/read.dcd.Rd 0ee24dbc69145726044f89efe451a8f9 *man/read.fasta.Rd 6983f3fae407723979e68be3dca6984f *man/read.fasta.pdb.Rd e464eb9cba639e23986c61444c65ad93 *man/read.mol2.Rd ba1caf18d75c10689c3fcd877bded386 *man/read.ncdf.Rd 62f8fd25c2b04663b7643f972baf2528 *man/read.pdb.Rd 1cf75072e5ae62fb86e8f6a9d657771a *man/read.pdcBD.Rd 0887ebefae1756a3809fae6295eaf424 *man/read.pqr.Rd 19cfaabdd6fe27c701c729dc6e83112a *man/read.prmtop.Rd 79013a8ec584885f09a233236057aa6b *man/rgyr.Rd e916b3a1dc4123b0b80b2c0c2939c3e1 *man/rle2.Rd c4492034142d3bdcdf23d75f6d4fbf02 *man/rmsd.Rd 0edcdcabf8263e255f8b8fbb6385e4ee *man/rmsf.Rd a271c09d4ce2e24c86fcafc5fa66edaf *man/rmsip.Rd 3ef8d4666baeaa9f66b846e55a90a724 *man/sdENM.Rd 3e804c81607cc5f7b0ed1ba8a46f8dde *man/seq2aln.Rd 721d6e39789d8d7c92cefaf5250befea *man/seqaln.Rd 7c4ed004c061ce35cb349d6f83eb5372 *man/seqaln.pair.Rd 678abd82bb014d24f3372cc7e2b299aa *man/seqbind.Rd 482e3d9e6896cee6f90f3d2767d6f214 *man/seqidentity.Rd 25cfad04dae510fb7f6014aab50909ec *man/setup.ncore.Rd 8fdefbb073ef2fd752b62d5dcb2c8a32 *man/sip.Rd b9c1625f98df791d0a4e76604a09dda7 *man/sse.bridges.Rd af3965c5649462ca5c5c1778140242da *man/store.atom.Rd deefcaa2eaedc194c820f5d0ad055632 *man/struct.aln.Rd 151fcf06255a20a98385267bd58e6bf2 *man/torsion.pdb.Rd 248b1c0a1ef257bee492f8ae7866e3e4 *man/torsion.xyz.Rd 6b60ea4ab1b2df24c0434f4289b9aa55 *man/trim.mol2.Rd 63ce6004ceb8bcd8c1a5bf17ab642f28 *man/trim.pdb.Rd 46b164a4619290bad96ee94d3d413a68 *man/trim.pdbs.Rd 52149be72b4031fc5caf28fc8ae5ef79 *man/trim.xyz.Rd 67c2777942274c48a7271290b6e23928 *man/unbound.Rd eaa8ce55814e03c1b385a195b90f6a29 *man/uniprot.Rd 8d1f856736a9fb3121a0dc347b65d70c *man/var.xyz.Rd 77cc057f3957a606eb0f899a98170541 *man/vec2resno.Rd 6c6b8f23a003537ddebe105e5deed14a *man/vmd.cna.Rd 2180250f10d808b67fb61cb50fea8e91 *man/vmd_colors.Rd 1bd7706fbadf8fc9c50b0d6b66bc4fc8 *man/wrap.tor.Rd 60e33d64bcdcccd61b03a46f94a37c93 *man/write.crd.Rd 417985fcd4a559a790919c01d32d105f *man/write.fasta.Rd 9f23868cb6336228b1a59ba814014e5d *man/write.mol2.Rd bdba01d334d362c4d19eebe205766ab4 *man/write.ncdf.Rd 2a2fcb599770b578ef1a7b2dfe41b003 *man/write.pdb.Rd 533fda198810c4ab8ff56cc1fe038fa2 *man/write.pir.Rd c7677ab73f130aad76ccfb9be8724c7a *man/write.pqr.Rd 643a19368d05858392470da9b59f22bb *src/Makevars c05726c470c480cb2288fa04e5b81b64 *src/RcppExports.cpp 1358a5ca323fe8cbd5883151808c2838 *src/convert.h 4311765ab076cb1f4b1e96adc4b29c18 *src/gzstream.cpp c32e16a810b222875c935750f705e675 *src/gzstream.h e9f4b892d2ef97fb8276dced2905266e *src/init.c 99408ab5e21920e6249cb9a8229dadae *src/read_cif.cpp 6580911a047279f2ce6cba55b91b9779 *src/read_crd.cpp b258fea92497a8e3f84692bd2b52fbee *src/read_pdb.cpp fbac5722a584bdd47928b5ffebfba3c4 *src/read_prmtop.cpp 19aace048998023dc6bda812f696bfaa *src/utils.cpp 1539d29f6aeb429787b8aaff9cab2693 *src/utils.h 7ffe3e756f90cee9d1c7a3a9504c8775 *tests/testthat.R e562ac9c81e2be76674885a50d7daef9 *tests/testthat/test-aa2mass.R 1c9b5c113f5a3df53f41556673cd35c2 *tests/testthat/test-aanma.R 7f878035bf9900e2f622cc1426167b58 *tests/testthat/test-aanma.pdbs.R f4a44448a8ae2a889fe195f7ac7bc89c *tests/testthat/test-atom.select.R ad7f0e5862c60ef29595c538f79b6ea5 *tests/testthat/test-atom2mass.R daa3ef9e24b87d51f1d69be2ba73e385 *tests/testthat/test-clean.pdb.R df734a56c16ed2286c2a22404610e44b *tests/testthat/test-cmap.R 87d3b42efc165f69f4a49e20484ad3cb *tests/testthat/test-cna.R 36b28b709f967ac73ffbddd875581c1c *tests/testthat/test-core.find.R 43444589d48a434fa0d98b0be3821bf6 *tests/testthat/test-dccm.R 47f12cf7b78fbb0babfbddbebe98d58f *tests/testthat/test-deformation.R 0fc53ca2b7b7cf3f3133ed23552c792e *tests/testthat/test-dssp.R 8deaca65abbabc8af816d845e65822c9 *tests/testthat/test-fitting.R 90f83f900951fb2294367293dd4df599 *tests/testthat/test-get.pdb.R 90e16d53132ad7fc937e02c14682c5f5 *tests/testthat/test-get.seq.R 8279591f9aff5854a242050dc08a49c2 *tests/testthat/test-gnm.R bd4c0b6b923391b510e290a6f4cd643e *tests/testthat/test-mol2.R cf8eea920886aee022a6364974d74d7f *tests/testthat/test-nma.R 049cd8b11592a79053243d7ea1071045 *tests/testthat/test-nma.pdbs.R baf983dfe1b2cdc7d191936c5b90fa84 *tests/testthat/test-overlap.R 40ceba65a3f1831a50bd9807b54285da *tests/testthat/test-pca.R df7d9aaf12a419ce83143f7516262f45 *tests/testthat/test-pdb.annotate.R b0a56a2947afca64021c5d6fbd15f106 *tests/testthat/test-pdbsplit.R 2eb7551f69ebadd7fd35efb927e3bbac *tests/testthat/test-read.all.R 1cd2162d0c7bdf7bb7baf644c38dc51c *tests/testthat/test-read.cif.R 1ee43a8502f9b637cfcee4687cc4dc8e *tests/testthat/test-read.ncdf.R 75f30d421298d40f771594fcb3d9b21f *tests/testthat/test-read.pdb.R 61e0586230215210805dae1af57be23a *tests/testthat/test-rmsd.R b3d7a549a98a2bfb6de0b1c736f6c090 *tests/testthat/test-seqaln.R 6df4c57a5670a44aacc181a2e01b8b72 *tests/testthat/test-vector-funs.R c1ff9ff92aedf699779a4ea75a71ec35 *vignettes/bio3d_vignettes.Rmd bio3d/R/0000755000176200001440000000000014710164273011460 5ustar liggesusersbio3d/R/print.prmtop.R0000644000176200001440000000464714707230357014275 0ustar liggesusersprint.prmtop <- function(x, printseq=TRUE, ...) { if(!is.null(x$SOLVENT_POINTER)) sbox <- TRUE else sbox <- FALSE cn <- class(x) natom <- x$POINTERS[1] ##nca <- length(which(x$ATOM_NAME=="CA" & x$AMBER_ATOM_TYPE=="CX")) if(sbox) { nres.total <- x$POINTERS[12] nres.solute <- x$SOLVENT_POINTER[1] nmol.total <- x$SOLVENT_POINTER[2] nmol.solute <- x$SOLVENT_POINTER[3]-1 natom.per.mol <- x$ATOMS_PER_MOLECULE[1:nmol.solute] box.dim <- x$BOX_DIMENSIONS } else { nres.total <- x$POINTERS[12] nres.solute <- nres.total nmol.total <- length(which(x$ATOM_NAME=="OXT")) nmol.solute <- nmol.total } cat("\n Call:\n ", paste(deparse(x$call), sep = "\n", collapse = "\n"), "\n\n", sep = "") cat(" Class:\n ", paste(cn, collapse=", "), "\n\n", sep = "") cat(" System information:", "\n") cat(" Total number of atoms: ", natom, "\n", sep="") if(nres.solute!=nres.total) { cat(" Solute residues: ", nres.solute, " (of ", nres.total, ")\n", sep="") cat(" Solute molecules: ", nmol.solute, " (of ", nmol.total, ")\n", sep="") } else { cat(" Solute residues: ", nres.solute, "\n", sep="") cat(" Solute molecules: ", nmol.solute, "\n", sep="") } if(sbox) cat(" Box dimensions: ", paste(round(box.dim,2), collapse=" x "), "\n", sep="") if(printseq) { aa <- aa321(x$RESIDUE_LABEL[1:nres.solute]) if(nres.solute > 225) { ## Trim long sequences before output aa <- c(aa[1:225], "......", aa[(nres.solute-3):nres.solute]) } aa <- paste(" ", gsub(" ","", strwrap( paste(aa,collapse=" "), width=120, exdent=0) ), collapse="\n") cat("\n") cat(" Sequence:\n", aa, "\n", sep="") ## other residues if(nres.total>nres.solute) { unq.res <- unique(x$RESIDUE_LABEL[(nres.solute+1):length(x$RESIDUE_LABEL)]) unq.res <- paste(" ", gsub(" ","", strwrap( paste(unq.res,collapse=" "), width=120, exdent=0) ), collapse="\n") cat("\n") cat(" Residues in solvent:\n", unq.res, "\n", sep="") } } cat("\n") #i <- paste( attributes(x)$names, collapse=", ") #cat(strwrap(paste(" + attr:",i,"\n"),width=45, exdent=8), sep="\n") invisible( c(natom=natom, nres=nres.total, nres.solute=nres.solute, nmol=nmol.total, nmol.solute=nmol.solute) ) } bio3d/R/pdb2aln.ind.R0000644000176200001440000000125014707230356013676 0ustar liggesusers"pdb2aln.ind" <- function(aln, pdb, inds = NULL, ...) { # get the new alignment; also check arguments internally naln <- pdb2aln(aln=aln, pdb=pdb, ...) if(is.null(inds)) inds <- gap.inspect(aln$ali)$f.inds ninds <- which(naln$ref["ali.pos",] %in% inds) ca.inds <- naln$ref["ca.inds", ninds] if(any(is.na(ca.inds))) { warning("Gaps are found in equivalent positions in PDB") } inds.a = inds[!is.na(ca.inds)] inds.b = ca.inds[!is.na(ca.inds)] a = list(atom=inds.a, xyz=atom2xyz(inds.a)) class(a) = "select" b = list(atom=inds.b, xyz=atom2xyz(inds.b)) class(b) = "select" out = list(a = a, b = b) return(out) } bio3d/R/nma.pdb.R0000644000176200001440000000532114707230356013125 0ustar liggesusers"nma.pdb" <- function(pdb, inds=NULL, ff='calpha', pfc.fun=NULL, mass=TRUE, temp=300.0, keep=NULL, hessian=NULL, outmodes=NULL, ... ) { ## Log the call cl <- match.call() if(!is.pdb(pdb)) stop("please provide a 'pdb' object as obtained from 'read.pdb()'") if(!is.null(outmodes) & !is.select(outmodes)) stop("provide 'outmodes' as obtained from function atom.select()") ## Prepare PDB ## Take only first frame of multi model PDB files if(nrow(pdb$xyz)>1) { warning("multimodel PDB file detected - using only first frame") pdb$xyz=pdb$xyz[1,, drop=FALSE] } ## Trim to only CA atoms if(is.null(inds)) { ca.inds <- atom.select(pdb, "calpha", verbose=FALSE) pdb.in <- trim.pdb(pdb, ca.inds) } ## or to user selection else { pdb.in <- trim.pdb(pdb, inds) if(!all(pdb.in$atom$elety=="CA")) stop("non-CA atoms detected") } ## Indices for effective hessian if(is.select(outmodes)) { ## re-select since outmodes indices are based on input PDB inc.inds <- .match.sel(pdb, pdb.in, outmodes) pdb.out <- trim.pdb(pdb.in, inc.inds) } else { pdb.out <- pdb.in inc.inds <- atom.select(pdb.in, "all", verbose=FALSE) } ## fetch number of atoms and sequence natoms.in <- ncol(pdb.in$xyz)/3 natoms.out <- ncol(pdb.out$xyz)/3 sequ <- pdb.in$atom$resid if (natoms.in<3) stop("nma: insufficient number of atoms") ## check structure connectivity conn <- inspect.connectivity(pdb.in$xyz) if(!conn) { warning("Possible multi-chain structure or missing in-structure residue(s) present\n", " Fluctuations at neighboring positions may be affected.") } ## Define force field if (is.null(pfc.fun)) { pfc.fun <- load.enmff(ff) } else { ## Use customized force field if(!is.function(pfc.fun)) stop("'pfc.fun' must be a function") } ## Process input arguments args <- .nma.args(pfc.fun=pfc.fun, ...) ## Use aa2mass to fetch residue mass if (mass) { masses.in <- do.call('aa2mass', c(list(pdb=sequ, inds=NULL), args$am.args)) masses.out <- masses.in[ inc.inds$atom ] } ## No mass-weighting else { masses.out <- NULL; } ## NMA hessian hessian <- .nma.hess(pdb.in$xyz, pfc.fun, args=args, hessian=hessian, pdb=pdb.in) ## effective hessian hessian <- .nma.trim.hessian(hessian, inc.inds) ## mass weight hessian if(!is.null(masses.out)) hessian <- .nma.mwhessian(hessian, masses=masses.out) ## diagaonalize - get eigenvectors ei <- .nma.diag(hessian) ## make a NMA object m <- .nma.finalize(ei, xyz=pdb.out$xyz, temp=temp, masses=masses.out, natoms=natoms.out, keep=keep, call=cl) return(m) } bio3d/R/fluct.nma.R0000644000176200001440000000207414707230356013477 0ustar liggesusers"fluct.nma" <- function(nma, mode.inds=NULL) { kb <- 0.00831447086363271 pi <- 3.14159265359 if(!"nma" %in% class(nma)) stop("fluct.nma: must supply 'nma' object, i.e. from 'nma'") if("VibrationalModes" %in% class(nma)) mass <- TRUE else mass <- FALSE if(is.null(mode.inds)) mode.inds <- seq(nma$triv.modes+1, length(nma$L)) if(min(mode.inds)<=nma$triv.modes) stop("'mode.inds' should not contain indices to trivial modes") f <- apply(nma$U, 2, function(x) { rowSums(matrix(x, ncol=3, byrow=TRUE)**2) }) if(mass) freq <- nma$frequencies**2 else freq <- nma$force.constants for ( i in mode.inds ) { f[,i] <- f[,i] / freq[i] } if(length(mode.inds)>1) f <- rowSums(f[,mode.inds]) else f <- f[,mode.inds] if(mass) { f <- f / nma$mass s <- 1/(2*pi)**2 if(!is.null(nma$temp)) s <- s*kb*nma$temp f <- f*s } else { if(!is.null(nma$temp)) f <- f*kb*nma$temp } return(f) } bio3d/R/cmap.R0000644000176200001440000000705314707230356012532 0ustar liggesuserscmap <- function(...) UseMethod("cmap") cmap.default <- function(...) return(cmap.xyz(...)) cmap.xyz <- function(xyz, grpby=NULL, dcut=4, scut=3, pcut=1, binary=TRUE, mask.lower = TRUE, collapse=TRUE, gc.first = FALSE, ncore=1, nseg.scale=1, ...) { # Parallelized by parallel package (Mon Apr 22 16:32:19 EDT 2013) ncore <- setup.ncore(ncore, bigmem = TRUE) if(ncore > 1) { # Issue of serialization problem # Maximal number of cells of a double-precision matrix # that each core can serialize: (2^31-1-61)/8 R_NCELL_LIMIT_CORE = 2.68435448e8 R_NCELL_LIMIT = ncore * R_NCELL_LIMIT_CORE if(nseg.scale < 1) { warning("nseg.scale should be 1 or a larger integer\n") nseg.scale=1 } } if (!(is.numeric(pcut) && pcut >= 0 && pcut <= 1)) { stop("Input 'pcut' should a number between 0 and 1") } xyz=as.xyz(xyz) nxyz =nrow(xyz) if(nrow(xyz)>1) { pb <- txtProgressBar(min=0, max=nrow(xyz), style=3) if(is.null(grpby)) { nres <- ncol(xyz)/3 } else { inds <- bounds(grpby, dup.inds = TRUE) nres <- nrow(inds) } if(ncore > 1) { ## shared memory to follow progress bar iipb <- bigmemory::big.matrix(1, nrow(xyz), init=NA) ni = nrow(xyz) RLIMIT = floor(R_NCELL_LIMIT/(0.5*nres*(nres+1))) nDataSeg = floor((ni-1)/RLIMIT)+1 nDataSeg = floor(nDataSeg * nseg.scale) lenSeg = floor(ni/nDataSeg) cmap.list <- NULL for(i in 1:nDataSeg) { istart = (i-1)*lenSeg + 1 iend = if(i= pcut ) cont.map <- matrix(NA, nrow=nres, ncol=nres) cont.map[!lower.tri(cont.map)] <- cmap.t if(!mask.lower) cont.map[lower.tri(cont.map)] <- t(cont.map)[lower.tri(cont.map)] } else { cont.map <- array(NA, dim=c(nres, nres, nxyz)) cmap.t <- matrix(NA, nres, nres) for(i in 1:nxyz) { cmap.t[!lower.tri(cmap.t)] <- cmap.list[[i]] if(!mask.lower) cmap.t[lower.tri(cmap.t)] <- t(cmap.t)[lower.tri(cmap.t)] cont.map[,,i] <- cmap.t } rm(cmap.list) if(gc.first) gc() } rm(cmap.t) if(gc.first) gc() close(pb) } else { ## Distance matrix (all-atom) dmat <- dm.xyz( xyz, grpby, scut, mask.lower = mask.lower, ncore=ncore) ## Contact map return(matrix(as.numeric(dmat < dcut), ncol = ncol(dmat), nrow = nrow(dmat))) } return (cont.map) } bio3d/R/fit.xyz.R0000644000176200001440000001722714707230356013231 0ustar liggesusers"fit.xyz" <- function(fixed, mobile, fixed.inds = NULL, mobile.inds = NULL, verbose = FALSE, prefix = "", pdbext = "", outpath = "fitlsq", full.pdbs=FALSE, ncore=1, nseg.scale=1, # to resolve the memory problem in using multicore ...) { # Parallelized by parallel package (Tue Dec 11 17:41:08 EST 2012) ncore <- setup.ncore(ncore) if(ncore > 1) { # Issue of serialization problem # Maximal number of cells of a double-precision matrix # that each core can serialize: (2^31-1-61)/8 R_NCELL_LIMIT_CORE = 2.68435448e8 R_NCELL_LIMIT = ncore * R_NCELL_LIMIT_CORE if(nseg.scale < 1) { warning("nseg.scale should be 1 or a larger integer\n") nseg.scale=1 } } ### Addation (Mon Jul 23 17:26:16 PDT 2007) if( is.null(fixed.inds) && is.null(mobile.inds) ) { if(is.list(mobile)) { fixed.inds <- intersect(which(!is.gap(fixed)), gap.inspect(mobile$xyz)$f.inds ) } else { fixed.inds <- intersect(which(!is.gap(fixed)), gap.inspect(mobile)$f.inds ) } mobile.inds <- fixed.inds warning(paste("No fitting indices provided, using the", length(fixed.inds)/3, "non NA positions\n")) } if (is.null(fixed.inds)) fixed.inds=which(!is.gap(fixed)) if (is.null(mobile.inds)) mobile.inds=gap.inspect(mobile)$f.inds if (length(fixed.inds) != length(mobile.inds)) stop("length of 'fixed.inds' != length of 'mobile.inds'") # if(!is.xyz(fixed) || !is.numeric(fixed)) if(!is.numeric(fixed)) stop("input 'fixed' should be a numeric 'xyz' vector or matrix") if(is.vector(mobile)) { # INPUT is a single vector if(!is.numeric(mobile)) stop("input 'mobile' should be numeric") if( any(is.na(fixed[fixed.inds])) || any(is.na(mobile[mobile.inds])) ) { stop(" NA elements selected for fitting (check indices)") } fit <- rot.lsq(xx=mobile, yy=fixed, xfit=mobile.inds, yfit=fixed.inds, verbose=verbose) return(as.xyz(fit)) } else { if(is.list(mobile)) { # INPUT is a list object if(!is.numeric(mobile$xyz)) stop("non numeric input 'mobile$xyz'") if( any(is.na(fixed[fixed.inds])) || any(is.na(mobile$xyz[,mobile.inds])) ) { stop(" NA elements selected for fitting (check indices)") } if(ncore>1 && is.matrix(mobile$xyz) ) { # Parallelized RLIMIT = floor(R_NCELL_LIMIT/ncol(mobile$xyz)) nDataSeg = floor((nrow(mobile$xyz)-1)/RLIMIT)+1 nDataSeg = floor(nDataSeg * nseg.scale) lenSeg = floor(nrow(mobile$xyz)/nDataSeg) fit = vector("list", nDataSeg) for(i in 1:nDataSeg) { istart = (i-1)*lenSeg + 1 iend = if(i1) mylapply <- mclapply # for(i in 1:length(mobile$id)) { mylapply(1:length(mobile$id), function(i) { ### pdb <- read.pdb( paste(pdb.path,"/",mobile$id[i],pdbext,sep=""), ... ) pdb <- read.pdb( full.files[i], ... ) res.resno <- mobile$resno[i,core.inds.atom] res.chains <- mobile$chain[i,core.inds.atom] chains <- unique(res.chains[!is.na(res.chains)]) if(length(chains)==0) { ##string <- paste("///", ## paste(mobile$resno[i,core.inds.atom],collapse = ","), ## "///CA/", sep="") inds <- atom.select(pdb, resno=res.resno, elety="CA", verbose=verbose)$xyz } else { if(length(chains)==1) { #string <- paste("//",chains,"/", # paste(res.resno, collapse = ","), # "///CA/", sep="") inds <- atom.select(pdb, resno=res.resno, chain=chains, elety="CA", verbose=verbose)$xyz } else { # indices for each chain inds <- NULL for(j in 1:length(chains)) { #string <- paste("//",chains[j],"/", # paste(res.resno[ res.chains==chains[j] ], # collapse = ","), # "///CA/", sep="") inds <- c(inds, atom.select(pdb, resno=res.resno[ res.chains==chains[j] ], chain=chains[j], elety="CA", verbose=verbose)$xyz) } } } pdb.xyz <- pdb$xyz #if (het) # pdb.xyz <- c(pdb.xyz, # as.numeric(t(pdb$het[,c("x","y","z")]))) if(length(inds) > length(fixed.inds)) { warning("Looks like we have a multi-chain pdb with no chain id: ignoring extra indices\n\t") inds <- inds[1:length(fixed.inds)] } xyz.fit <- rot.lsq(xx=pdb.xyz, yy=fixed, xfit=inds, # sort!! yfit=fixed.inds) write.pdb(xyz = xyz.fit, pdb = pdb, ##het = het, file = file.path(outpath, paste(basename(mobile$id[i]), "_flsq.pdb",sep = "")) ) return (NULL) } ) } return(as.xyz(fit)) } else { if(full.pdbs) warning("Need 'mobile' list object for 'full.pdbs=TRUE'") if(is.matrix(mobile)) { # INPUT is a matrix if(!is.numeric(mobile)) stop("input 'mobile' should be numeric") if( any(is.na(fixed[fixed.inds])) || any(is.na(mobile[,mobile.inds])) ) { stop("error: NA elements selected for fitting") } if(ncore > 1) { # Parallelized RLIMIT = floor(R_NCELL_LIMIT/ncol(mobile)) nDataSeg = floor((nrow(mobile)-1)/RLIMIT)+1 nDataSeg = floor(nDataSeg * nseg.scale) lenSeg = floor(nrow(mobile)/nDataSeg) fit = vector("list", nDataSeg) for(i in 1:nDataSeg) { istart = (i-1)*lenSeg + 1 iend = if(i 1) { warning(paste("Multiple entities found in alignment for id=", aln.id, ". Use the first one...", sep="")) } idhit <- findid[1] ##- Align seq to masked template from alignment tmp.msk <- aln$ali[idhit, ] tmp.msk[is.gap(tmp.msk)] <- "X" dots = list(...) dots$outfile = tempfile() args = c(list(aln = seqbind(tmp.msk, aa1)), dots) seq2tmp <- do.call(seqaln.pair, args) ##- check sequence identity ii <- seq2tmp$ali[1,]=='X' ide <- seqidentity(seq2tmp$ali[, !ii])[1,2] if(ide < 0.4) { warning(paste("Sequence identity is too low (<40%).", "You may want profile alignment (set aln.id=NULL)", sep=" ")) } ##- Insert gaps to adjust alignment ins <- is.gap( seq2tmp$ali[1,] ) ntmp <- matrix("-", nrow=nrow(aln$ali), ncol=(ncol(aln$ali)+sum(ins))) ntmp[,!ins] <- aln$ali ## Add seq to bottom of adjusted alignment naln <- seqbind(ntmp, seq2tmp$ali[2,]) rownames(naln$ali) <- c(rownames(aln$ali), id) naln$id <- c(aln$id, id) } # original alignment positions (include gaps) # and CA indices of PDB ref <- matrix(NA, nrow=2, ncol=ncol(naln$ali)) rownames(ref) <- c("ali.pos", "ca.inds") ref[1, !is.gap(naln$ali[1,])] <- 1:ncol(aln$ali) ref[2, !is.gap(naln$ali[id,])] <- atom.select(pdb, "calpha", verbose=FALSE)$atom # remove X naln$ali[1, naln$ali[1,]=="X"] <- "-" if(!is.null(file)) write.fasta(naln, file=file) out <- list(id=naln$id, ali=naln$ali, ref=ref, call=cl) class(out) <- "fasta" return (out) } bio3d/R/mktrj.pca.R0000644000176200001440000000320414707230356013475 0ustar liggesusers"mktrj.pca" <- function(pca=NULL, # pca data structure pc=1, # which pc to move along mag=1, # magnification factor step=0.125, # step size file=NULL, # output pdb file pdb=NULL, # reference pdb object rock=TRUE, ... ) { # args for write.pdb ## make a trjactory of atomic displacments along a given pc if(!inherits(pca, "pca")) { stop("input should be a list object of class 'pca' (from 'pca.xyz')") } if(is.null(file)) file <- paste("pc_", pc, ".pdb", sep="") if(!is.null(pdb)) { if(is.pdbs(pdb)) pdb <- pdbs2pdb(pdb, inds=1, rm.gaps=TRUE)[[1]] if(!is.pdb(pdb)) { warning("Unrecognized 'pdb' object. Ignored") pdb <- NULL } } nstep <- c(seq(step, to=mag, by=step)) zcoor <- cbind(sqrt(pca$L[pc])) %*% nstep ##- Bug fix: Fri Jun 15 14:49:24 EDT 2012 ## plus <- apply(zcoor, 2, pca.z2xyz, pca) ## minus <- apply( (-(zcoor)), 2, pca.z2xyz, pca) scor <- function(x,u,m) { return(x*u+m) } plus <- sapply(c(zcoor), scor, u=pca$U[,pc], m=pca$mean) minus <- sapply(c(-zcoor), scor, u=pca$U[,pc], m=pca$mean) if(rock) { coor <- cbind(pca$mean, plus, plus[,rev(1:ncol(plus))], pca$mean, minus, minus[,rev(1:ncol(minus))]) } else { coor <- cbind(plus[,rev(1:ncol(plus))], pca$mean, minus) } coor <- as.xyz(t(coor)) write.pdb(xyz=coor, file=file, pdb=pdb, ...) invisible(coor) } bio3d/R/pdbs2sse.R0000644000176200001440000001331214707230356013332 0ustar liggesusers"pdbs2sse" <- function(pdbs, ind=NULL, rm.gaps=TRUE, resno=TRUE, pdb=FALSE, ...) { ## Log the call cl <- match.call() by.resno <- resno if(is.null(ind)) ind <- 1:length(pdbs$id) gaps.res <- gap.inspect(pdbs$ali) ## Use SSE information from pdbs object if(!is.null(pdbs$sse) & !pdb) { message("Extracting SSE from pdbs$sse attribute") if(rm.gaps) { sse <- pdbs$sse[ind, gaps.res$f.inds, drop=FALSE] resno <- pdbs$resno[ind[1], gaps.res$f.inds] chain <- pdbs$chain[ind[1], gaps.res$f.inds] } else { sse <- pdbs$sse[ind,, drop=FALSE] resno <- pdbs$resno[ind[1], ] chain <- pdbs$chain[ind[1], ] } if(nrow(sse) > 1) { h.inds <- which(apply(sse, 2, function(x) sum(x=="H")) == length(ind)) e.inds <- which(apply(sse, 2, function(x) sum(x=="E")) == length(ind)) } else { h.inds <- which(sse == "H") e.inds <- which(sse == "E") } if(by.resno) { h <- bounds( resno[h.inds], pre.sort=FALSE ) e <- bounds( resno[e.inds], pre.sort=FALSE ) } else { h <- bounds( h.inds, pre.sort=FALSE ) e <- bounds( e.inds, pre.sort=FALSE ) } sse2 <- rep(NA, ncol(sse)) if(length(h.inds)>0) sse2[ h.inds ] <- "H" if(length(e.inds)>0) sse2[ e.inds ] <- "E" sse2[ is.na(sse2) ] <- " " names(sse2) <- paste(resno, chain, sep="_") out <- list() out$sse <- sse2 if(length(h.inds)>0) { out$helix$start <- h[, "start"] out$helix$end <- h[, "end"] out$helix$length <- h[, "length"] out$helix$chain <- chain[ bounds(h.inds)[, "start"] ] } else { out$helix$start <- NULL out$helix$end <- NULL out$helix$length <- NULL out$helix$chain <- NULL } if(length(e.inds)>0) { out$sheet$start <- e[, "start"] out$sheet$end <- e[, "end"] out$sheet$length <- e[, "length"] out$sheet$chain <- chain[ bounds(e.inds)[, "start"] ] } else { out$sheet$start <- NULL out$sheet$end <- NULL out$sheet$length <- NULL out$sheet$chain <- NULL } out$call <- cl class(out) <- "sse" return(out) } ind <- ind[1] message(paste("Re-reading PDB (", basename.pdb(pdbs$id[ind]), ") to extract SSE", sep="")) if(file.exists(pdbs$id[ind])) id <- pdbs$id[ind] sse.aln <- NULL pdb.ref <- try(read.pdb(id), silent=TRUE) if(inherits(pdb.ref, "try-error")) pdb.ref <- try(read.pdb(substr(basename(id), 1, 4)), silent=TRUE) sse.ref <- NULL if(!inherits(pdb.ref, "try-error")) sse.ref <- try(dssp(pdb.ref, ...), silent=TRUE) if(!inherits(sse.ref, "try-error") & !inherits(pdb.ref, "try-error")) { if(rm.gaps) { resno <- pdbs$resno[ind, gaps.res$f.inds] chain <- pdbs$chain[ind, gaps.res$f.inds] } else { resno <- pdbs$resno[ind, ] chain <- pdbs$chain[ind, ] } resid <- paste0(resno, chain) resid[ resid == "NANA" ] = NA ## Helices if(length(sse.ref$helix$start) > 0) { resid.helix <- unbound(sse.ref$helix$start, sse.ref$helix$end) resid.helix <- paste0(resid.helix, rep(sse.ref$helix$chain, sse.ref$helix$length)) h.inds <- which(resid %in% resid.helix) ## inds points to the position in the alignment where the helices are if(by.resno) { resno.sse <- resno[ h.inds ] new.sse <- bounds(resno.sse, pre.sort=FALSE) } else { sids <- 1:length(resid) resno.sse <- sids[h.inds] new.sse <- bounds(resno.sse, pre.sort=FALSE) } chain.sse <- chain[ bounds(h.inds, pre.sort=FALSE)[, "start"] ] if(length(new.sse) > 0) { sse.aln$helix$start <- new.sse[,"start"] sse.aln$helix$end <- new.sse[,"end"] sse.aln$helix$length <- new.sse[,"length"] sse.aln$helix$chain <- chain.sse } } else { h.inds <- NULL sse.aln$helix$start <- NULL sse.aln$helix$end <- NULL sse.aln$helix$length <- NULL sse.aln$helix$chain <- NULL } ## Sheets if(length(sse.ref$sheet$start) > 0) { resid.sheet <- unbound(sse.ref$sheet$start, sse.ref$sheet$end) resid.sheet <- paste0(resid.sheet, rep(sse.ref$sheet$chain, sse.ref$sheet$length)) e.inds <- which(resid %in% resid.sheet) if(by.resno) { resno.sse <- resno[ e.inds ] new.sse <- bounds(resno.sse, pre.sort=FALSE) } else { sids <- 1:length(resid) resno.sse <- sids[e.inds] new.sse <- bounds(resno.sse, pre.sort=FALSE) } chain.sse <- chain[ bounds(e.inds, pre.sort=FALSE)[, "start"] ] if(length(new.sse) > 0) { sse.aln$sheet$start <- new.sse[,"start"] sse.aln$sheet$end <- new.sse[,"end"] sse.aln$sheet$length <- new.sse[,"length"] sse.aln$sheet$chain <- chain.sse } } else { e.inds <- NULL sse.aln$sheet$start <- NULL sse.aln$sheet$end <- NULL sse.aln$sheet$length <- NULL sse.aln$sheet$chain <- NULL } ## SSE vector sse2 <- rep(NA, length(resid)) names(sse2) <- resid if(length(h.inds)>0) sse2[ h.inds ] <- "H" if(length(e.inds)>0) sse2[ e.inds ] <- "E" sse2[ is.na(sse2) ] <- " " sse.aln$sse <- sse2 } else { msg <- NULL if(inherits(pdb.ref, "try-error")) msg = c(msg, paste("File not found:", pdbs$id[1])) if(inherits(sse.ref, "try-error")) msg = c(msg, "Launching external program 'DSSP' failed") warning(paste("SSE failed, ", msg, sep="\n ")) } sse.aln$call <- cl class(sse.aln) <- "sse" return(sse.aln) } bio3d/R/atom.select.mol2.R0000644000176200001440000001143114707230356014673 0ustar liggesusers.match.statbit <- function(pdb, statbit) { if(!is.character(statbit)) stop("'statbit' must be a character vector") pdb$atom$statbit %in% statbit } .match.elena <- function(pdb, elena) { if(!is.character(elena)) stop("'elena' must be a character vector") pdb$atom$elena %in% elena } atom.select.mol2 <- function(mol, string=NULL, eleno = NULL, elena = NULL, elety = NULL, resid = NULL, chain = NULL, resno = NULL, statbit = NULL, operator = "AND", inverse = FALSE, value = FALSE, verbose=FALSE, ...) { #str.allowed <- c("noh", "h") #if(!is.null(string)) { # if(!(string %in% str.allowed)) { # stop("Not a valid selection string shortcut.\n\t Please use 'h' or 'noh'\n") # } #} cl <- match.call() pdb <- as.pdb(mol) if(!is.mol2(mol)) stop("'mol' must be an object of class 'mol2'") ## check input operator op.tbl <- c(rep("AND",3), rep("OR",4)) operator <- op.tbl[match(operator, c("AND","and","&","OR","or","|","+"))] if(!operator %in% c("AND", "OR")) stop("Allowed values for 'operator' are 'AND' or 'OR'") ## check input string if(!is.null(string)) { str.allowed <- c("all", "protein", "notprotein", "nucleic", "notnucleic", "water", "notwater", "calpha", "cbeta", "backbone", "back", "ligand", "h", "noh") if(!(string %in% str.allowed)) stop("Unknown 'string' keyword. See documentation for allowed values") } ## verbose message output if(verbose) cat("\n") .verboseout <- function(M, type) { cat(" .. ", sprintf("%08s", length(which(M))), " atom(s) from '", type, "' selection \n", sep="") } ## combine logical vectors .combinelv <- function(L, M, operator) { if(operator=="AND") M <- L & M if(operator=="OR") M <- L | M return(M) } if(operator=="AND") M <- rep(TRUE, nrow(pdb$atom)) if(operator=="OR") M <- rep(FALSE, nrow(pdb$atom)) if(!is.null(string)) { M <- switch(string, all = M <- rep(TRUE, nrow(pdb$atom)), protein = .is.protein(pdb), notprotein = !.is.protein(pdb), nucleic = .is.nucleic(pdb), notnucleic = !.is.nucleic(pdb), water = .is.water(pdb), notwater = !.is.water(pdb), calpha = .is.protein(pdb) & .match.elety(pdb, "CA"), cbeta = .is.protein(pdb) & .match.elety(pdb, c("CA", "N", "C", "O", "CB")), backbone = .is.protein(pdb) & .match.elety(pdb, c("CA", "N", "C", "O")), back = .is.protein(pdb) & .match.elety(pdb, c("CA", "N", "C", "O")), ligand = !.is.protein(pdb) & !.is.nucleic(pdb) & !.is.water(pdb), h = .is.hydrogen(pdb), noh = !.is.hydrogen(pdb), NA ) if(verbose) { .verboseout(M, 'string') } } if(!is.null(eleno)) { L <- .match.eleno(mol, eleno) if(verbose) .verboseout(L, 'eleno') M <- .combinelv(L, M, operator) } if(!is.null(elety)) { L <- .match.elety(mol, elety) if(verbose) .verboseout(L, 'elety') M <- .combinelv(L, M, operator) } if(!is.null(elena)) { L <- .match.elena(mol, elena) if(verbose) .verboseout(L, 'elena') M <- .combinelv(L, M, operator) } if(!is.null(resid)) { L <- .match.resid(mol, resid) if(verbose) .verboseout(L, 'resid') M <- .combinelv(L, M, operator) } if(!is.null(chain)) { L <- .match.chain(pdb, chain) if(verbose) .verboseout(L, 'chain') M <- .combinelv(L, M, operator) } if(!is.null(resno)) { L <- .match.resno(mol, resno) if(verbose) .verboseout(L, 'resno') M <- .combinelv(L, M, operator) } if(!is.null(statbit)) { L <- .match.statbit(mol, statbit) if(verbose) .verboseout(L, 'statbit') M <- .combinelv(L, M, operator) } if(verbose) cat(" ..", sprintf("%08s", length(which(M))), "atom(s) in final combined selection \n") if(inverse) { if(verbose) { cat(" ..", sprintf("%08s", length(which(!M))), "atom(s) in inversed selection \n") } sele <- as.select(which(!M)) } else sele <- as.select(which(M)) sele$call <- cl keep.bonds <- matrix(as.numeric(t(mol$bond[, c("origin","target")])) %in% sele$atom, ncol=2, byrow=T) bond.inds <- which(apply(keep.bonds, 1, all)) sele$bond <- bond.inds if(value) return(trim.pdb(pdb, sele)) else return(sele) } bio3d/R/mask.dccm.R0000644000176200001440000000216614707230356013452 0ustar liggesusersmask <- function(...) UseMethod("mask") mask.dccm <- function(dccm, pdb=NULL, a.inds=NULL, b.inds=NULL, ...) { x <- dccm dims <- dim(x) if(is.null(a.inds)) stop("'a.inds' must be provided") if(is.null(b.inds)) b.inds <- 1:nrow(dccm) if(!is.null(pdb)) { if(!is.pdb(pdb)) stop("If provided, 'pdb' must be a pdb object as obtained from 'read.pdb'") if(nrow(pdb$atom) != dims[1]) stop("If provided, 'pdb' must match the dimensions of 'x'") if(!all(pdb$atom$elety == "CA")) warning("Non all-CA pdb detected. Ensure that provided 'pdb' match 'x'") if(is.select(a.inds)) a.inds = a.inds$atom if(is.select(b.inds)) b.inds = b.inds$atom } else { if(is.select(a.inds) | is.select(b.inds)) stop("a.inds/b.inds should only be a 'select' object(s) when 'pdb' is provided") } if(!is.null(a.inds)) { tmp <- x tmp[ a.inds, b.inds ] = 666 tmp[ b.inds, a.inds ] = 666 inds.rm <- which(tmp != 666) x[inds.rm] = 0 } return(x) } bio3d/R/pdb.annotate.R0000644000176200001440000003737214707230356014176 0ustar liggesusers"pdb.annotate" <- function(ids, anno.terms=NULL, unique=FALSE, verbose=FALSE, extra.terms=NULL) { oops <- !requireNamespace("httr", quietly = TRUE) if(oops) { stop("Please install the httr package from CRAN") } if(!is.null(extra.terms)) { message("Currently 'extra.terms' is not supported") extra.terms <- NULL } if(inherits(ids, "blast")) ids = ids$pdb.id if(!is.vector(ids)) { stop("Input argument 'ids' should be a vector of PDB identifiers/accession codes") } ## Basic annotation terms (note 'citation' is a meta term) anno.basicterms <- c("structureId", "chainId", "macromoleculeType", "chainLength", "experimentalTechnique", "resolution", "scopDomain", "pfam", "ligandId", "ligandName", "source", "structureTitle", "citation", "rObserved", "rFree", "rWork", "spaceGroup") if(is.null(anno.terms)) { anno.terms <- anno.basicterms } else { anno.terms <- match.arg(anno.terms, anno.basicterms, several.ok=TRUE) anno.terms <- unique(anno.terms) } anno.terms.input <- anno.terms ## Check if we have any valid terms remaining if( length(anno.terms) == 0 ) { stop( paste("No valid anno.terms specified. Please select from:\n\t ", paste(anno.basicterms, collapse=", ")) ) } ## force the structureId and chainId terms to be present req.terms <- c("structureId", "chainId") if(any(c("ligandId", "ligandName") %in% anno.terms)) { ## force ligandChainId req.terms <- c(req.terms, "ligandChainId") } inds <- req.terms %in% anno.terms if(!all(inds)) { anno.terms <- c(req.terms[!inds], anno.terms) } if (missing(ids)) { stop("please specify PDB ids for annotating") } if (any(nchar(ids) != 4)) { # warning("ids should be standard 4 character PDB-IDs: trying first 4 characters...") # if(unique) { # ids <- unique(substr(basename(ids), 1, 4)) # } ## first 4 chars should be upper ## any chainId should remain untouched - see e.g. PDB ID 3R1C mysplit <- function(x) { str <- unlist(strsplit(x, "_")) if(length(str)>1) { paste(toupper(str[1]), "_", str[2], sep="") } else { toupper(str[1]) } } ids <- unlist(lapply(ids, mysplit)) } else { ids <- toupper(ids) } ids.short <- unique( substr(basename(ids), 1, 4) ) ## prepare query baseurl <- "https://data.rcsb.org/graphql" anno.terms.new <- unlist(sapply(anno.terms, .map_terms)) anno.terms.new <- c(anno.terms.new, extra.terms) query <- "query($id: [String!]!){ entries(entry_ids: $id){ " query <- paste(query, paste( sapply(anno.terms.new, .string2json), collapse="\n"), "\n}}", sep="") resp <- httr::POST(baseurl, httr::accept_json(), body = list(query=query, variables=list(id=ids.short)), encode="json") if(httr::http_error(resp)) { stop('Access to PDB server failed') } else { ret <- httr::content(resp) } if("error" %in% names(ret)) { stop('Retrieving data from PDB failed') } if((!"data" %in% names(ret)) || (length(ret$data$entries)==0)) { stop("No data retrieved") } ## Generate a formatted table ## Also taking care of merging data for unique structureId, ## excluding non-requested chain IDs, formatting citation, etc. data <- .format_tbl(ret, ids, anno.terms, unique=unique) if(unique) { rownames(data) <- data$structureId } else { rownames(data) <- paste(data$structureId, data$chainId, sep="_") } ## include only requested terms ## (NOTE: need to modify for future support of 'extra.terms') col.inds <- which(colnames(data) %in% anno.terms.input) data <- data[, col.inds, drop=FALSE] return(data) } ## map a string to JSON-like input parameters .string2json <- function(x) { x <- strsplit(x, split="\\.")[[1]] if(length(x)>1) { paste( paste(x, collapse="{"), paste(rep("}", length(x)-1), collapse=""), sep="") } else if(length(x)==0) { "" } else { x } } ## map from old terms to the new ones .map_terms <- function(x) { switch(x, "structureId" = "entry.id", "chainId" = "polymer_entities.polymer_entity_instances.rcsb_polymer_entity_instance_container_identifiers.auth_asym_id", "macromoleculeType" = "polymer_entities.polymer_entity_instances.polymer_entity.entity_poly.rcsb_entity_polymer_type", "chainLength" = "polymer_entities.polymer_entity_instances.polymer_entity.entity_poly.rcsb_sample_sequence_length", "experimentalTechnique" = "rcsb_entry_info.experimental_method", "resolution" = "rcsb_entry_info.resolution_combined", "scopDomain" = paste( "polymer_entities.polymer_entity_instances.rcsb_polymer_instance_feature", c("name", "type"), sep="."), "pfam" = paste( "polymer_entities.polymer_entity_instances.polymer_entity.rcsb_polymer_entity_annotation", c("annotation_id", "name", "type"), sep="."), "ligandChainId" = "nonpolymer_entities.nonpolymer_entity_instances.rcsb_nonpolymer_entity_instance_container_identifiers.auth_asym_id", "ligandId" = "nonpolymer_entities.nonpolymer_entity_instances.nonpolymer_entity.nonpolymer_comp.chem_comp.id", "ligandName" = "nonpolymer_entities.nonpolymer_entity_instances.nonpolymer_entity.nonpolymer_comp.chem_comp.name", "source" = "polymer_entities.polymer_entity_instances.polymer_entity.rcsb_entity_source_organism.ncbi_scientific_name", "structureTitle" = "struct.title", "citation" = paste("rcsb_primary_citation", c( "rcsb_authors", "rcsb_journal_abbrev", "year"), sep="."), "rObserved" = "refine.ls_R_factor_obs", "rFree" = "refine.ls_R_factor_R_free", "rWork" = "refine.ls_R_factor_R_work", "spaceGroup" = "symmetry.space_group_name_H_M" ) } ## Return a formatted table/data.frame .format_tbl <- function(x, query.ids, anno.terms, unique=FALSE) { x <- x$data$entries pdb.ids <- sapply(x, function(x) x$entry$id) chain.ids <- lapply(x, function(x) { lapply(x$polymer_entities, function(y) { sapply(y$polymer_entity_instances, function(z) { id <- z$rcsb_polymer_entity_instance_container_identifiers$auth_asym_id if(is.null(id)) { id<- as.character(NA) } id }) }) }) nchains <- sapply(chain.ids, function(x) length(unlist(x))) nchains.entity <- sapply(chain.ids, sapply, length) # ids <- paste(rep(pdb.ids, nchains), unlist(chain.ids), sep="_") ids <- rep(pdb.ids, nchains) chainId <- unlist(chain.ids) out <- data.frame(structureId=ids, chainId=chainId, stringsAsFactors=FALSE) if("chainLength" %in% anno.terms) { cl <- lapply(x, function(x) { lapply(x$polymer_entities, function(y) { sapply(y$polymer_entity_instances, function(z) { cl <- z$polymer_entity$entity_poly$rcsb_sample_sequence_length if(is.null(cl)) { cl <- as.integer(NA) } cl }) }) }) # cl <- rep(unlist(cl), unlist(nchains.entity)) cl <- unlist(cl) out$chainLength <- cl } if("experimentalTechnique" %in% anno.terms) { em <- sapply(x, function(x) { em <- x$rcsb_entry_info$experimental_method if(is.null(em)) { em <- as.character(NA) } em }) em <- rep(em, nchains) out$experimentalTechnique <- em } if("resolution" %in% anno.terms) { reso <- sapply(x, function(x) { reso <- x$rcsb_entry_info$resolution_combined[[1]] if(is.null(reso)) { reso <- as.numeric(NA) } reso }) reso <- rep(reso, nchains) out$resolution <- reso } if("macromoleculeType" %in% anno.terms) { moltype <- lapply(x, function(x) { lapply(x$polymer_entities, function(y) { sapply(y$polymer_entity_instances, function(z) { typ <- z$polymer_entity$entity_poly$rcsb_entity_polymer_type if(is.null(typ)) { typ <- as.character(NA) } typ }) }) }) # moltype <- rep(unlist(moltype), unlist(nchains.entity)) moltype <- unlist(moltype) out$macromoleculeType <- moltype } if("scopDomain" %in% anno.terms) { scop <- lapply(x, function(x) { lapply(x$polymer_entities, function(y) { sapply(y$polymer_entity_instances, function(z) { types <- sapply(z$rcsb_polymer_instance_feature, "[[", "type") s <- z$rcsb_polymer_instance_feature[[which(types=="SCOP")[1]]]$name if(is.null(s)) { s <- as.character(NA) } s }) }) }) scop <- unlist(scop) out$scopDomain <- scop } if("pfam" %in% anno.terms) { pfam <- lapply(x, function(x) { lapply(x$polymer_entities, function(y) { sapply(y$polymer_entity_instances, function(z) { types <- sapply(z$polymer_entity$rcsb_polymer_entity_annotation, "[[", "type") p <- z$polymer_entity$rcsb_polymer_entity_annotation[[which(types=="Pfam")[1]]]$name if(is.null(p)) { p <- as.character(NA) } p }) }) }) pfam <- unlist(pfam) out$pfam <- pfam } if("ligandChainId" %in% anno.terms) { lch <- lapply(x, function(x) { unlist( lapply(x$nonpolymer_entities, function(y) { sapply(y$nonpolymer_entity_instances, function(z) { id <- z$rcsb_nonpolymer_entity_instance_container_identifiers$auth_asym_id if(is.null(id)) { id <- as.character(NA) } id }) }) ) }) } if("ligandId" %in% anno.terms) { lid <- lapply(1:length(x), function(i) { x <- x[[i]] lch <- lch[[i]] chain.ids <- unlist(chain.ids[[i]]) if(!is.null(x$nonpolymer_entities)) { id <- unlist( lapply(x$nonpolymer_entities, function(y) { sapply(y$nonpolymer_entity_instances, function(z) { id <- z$nonpolymer_entity$nonpolymer_comp$chem_comp$id if(is.null(id)) { id <- as.character(NA) } id }) }) ) id <- tapply(id, lch, function(x) { count <- table(x) x <- unique(x) count <- count[x] x[count>1] <- paste(x[count>1], " (", count[count>1], ")", sep="") paste(x, collapse=",") }) id <- id[chain.ids] } else { id <- rep(as.character(NA), length(chain.ids)) } }) lid <- unlist(lid) out$ligandId <- lid } if("ligandName" %in% anno.terms) { lname <- lapply(1:length(x), function(i) { x <- x[[i]] lch <- lch[[i]] chain.ids <- unlist(chain.ids[[i]]) if(!is.null(x$nonpolymer_entities)) { nam <- unlist( lapply(x$nonpolymer_entities, function(y) { sapply(y$nonpolymer_entity_instances, function(z) { nam <- z$nonpolymer_entity$nonpolymer_comp$chem_comp$name if(is.null(nam)) { nam <- as.character(NA) } nam }) }) ) nam <- tapply(nam, lch, function(x) { count <- table(x) x <- unique(x) count <- count[x] x[count>1] <- paste(x[count>1], " (", count[count>1], ")", sep="") paste(x, collapse=",") }) nam <- nam[chain.ids] } else { nam <- rep(as.character(NA), length(chain.ids)) } }) lname <- unlist(lname) out$ligandName <- lname } if("source" %in% anno.terms) { src <- lapply(x, function(x) { lapply(x$polymer_entities, function(y) { sapply(y$polymer_entity_instances, function(z) { src <- sapply(z$polymer_entity$rcsb_entity_source_organism, function(z2) { src <- z2$ncbi_scientific_name if(is.null(src)) { src <- as.character(NA) } src }) if(length(src)>1) { src <- paste(unique(src), collapse="/") } else { if(length(src)==0) { src <- as.character(NA) } } src }) }) }) # src <- rep(unlist(src), unlist(nchains.entity)) src <- unlist(src) out$source <- src } if("structureTitle" %in% anno.terms) { title <- sapply(x, function(x) { title <- x$struct$title if(is.null(title)) { title <- as.character(NA) } title }) title <- rep(title, nchains) out$structureTitle <- title } if("citation" %in% anno.terms) { citation <- sapply(x, function(x) { aut <- x$rcsb_primary_citation$rcsb_authors if(!is.null(aut) && length(aut)>1) { aut <- paste(aut[[1]], ", et al.", sep="") } jrnl <- x$rcsb_primary_citation$rcsb_journal_abbrev year <- x$rcsb_primary_citation$year if(!is.null(year)) { year <- paste("(", year, ")", sep="") } citation <- paste(aut, jrnl, year) if(length(citation)==0) { citation <- as.character(NA) } citation }) citation <- rep(citation, nchains) out$citation <- citation } if("rObserved" %in% anno.terms) { robs <- sapply(x, function(x) { robs <- x$refine[[1]]$ls_R_factor_obs if(is.null(robs)) { robs <- as.numeric(NA) } robs }) robs <- rep(robs, nchains) out$rObserved <- robs } if("rFree" %in% anno.terms) { rfree <- sapply(x, function(x) { rfree <- x$refine[[1]]$ls_R_factor_R_free if(is.null(rfree)) { rfree <- as.numeric(NA) } rfree }) rfree <- rep(rfree, nchains) out$rFree <- rfree } if("rWork" %in% anno.terms) { rwork <- sapply(x, function(x) { rwork <- x$refine[[1]]$ls_R_factor_R_work if(is.null(rwork)) { rwork <- as.numeric(NA) } rwork }) rwork <- rep(rwork, nchains) out$rWork <- rwork } if("spaceGroup" %in% anno.terms) { sg <- sapply(x, function(x) { sg <- x$symmetry$space_group_name_H_M if(is.null(sg)) { sg <- as.character(NA) } sg }) sg <- rep(sg, nchains) out$spaceGroup <- sg } # Filter the table query.ids <- sub("\\.", "_", query.ids) ## allow PDBId.chainId inds <- lapply(query.ids, function(x) { if(nchar(x)==4) { which(out$structureId %in% x) } else { which(paste(out$structureId, out$chainId, sep="_") %in% x) } }) chk <- sapply(inds, length) if(any(chk==0)) { warning(paste("Annotation data could not be found for PDB ids:\n ", paste(unique(query.ids[chk==0]), collapse=", "))) } query.ids <- query.ids[chk>0] out <- out[unique(unlist(inds)), , drop=FALSE] if(unique) { # Fold the table based on PDB IDs out <- tapply(1:nrow(out), factor(out$structureId, levels=unique(out$structureId)), function(i){ out <- out[i, , drop=FALSE] labs <- colnames(out); names(labs) <- labs cols <- lapply(labs, function(j) { if(j %in% c("chainId", "macromoleculeType", "chainLength", "scopDomain", "pfam", "ligandId", "ligandName", "source")) { paste(out[, j], collapse=";") } else { out[1, j] } }) as.data.frame(cols, stringsAsFactors=FALSE) }, simplify=FALSE) out <- do.call(rbind, out) rownames(out) <- NULL } req.terms <- c("structureId", "chainId") out <- out[, c(req.terms, setdiff(anno.terms, c(req.terms, "ligandChainId"))), drop=FALSE] out } bio3d/R/seqaln.pair.R0000644000176200001440000000075314707230357014030 0ustar liggesusers`seqaln.pair` <- function(aln, ...) { cl <- match.call() dots <- list(...) dots$extra.args = paste("-matrix", system.file("matrices/custom.mat", package="bio3d"), "-gapopen -3.0 ", "-gapextend -0.5", "-center 0.0", dots$extra.args) args <- c(list(aln=aln), dots) l <- do.call(seqaln, args) if(!all((seqidentity(l))==1)) { warning("Sequences are not identical, use seqaln()") } l$call <- cl return(l) } bio3d/R/atom2mass.R0000644000176200001440000000235314707230356013516 0ustar liggesusersatom2mass <- function(...) UseMethod("atom2mass") atom2mass.default <- function(x, mass.custom=NULL, elety.custom=NULL, grpby=NULL, rescue=TRUE, ...){ if(!is.null(mass.custom)) { if(!all(c("symb","mass") %in% names(mass.custom))) stop("'mass.custom' must contains 'symb' and 'mass' components") inds <- unlist(lapply(mass.custom, is.factor)) mass.custom[inds] <- lapply(mass.custom[inds], as.character) } elements <- rbind(mass.custom[,c("symb","mass")], elements[,c("symb","mass")]) symb <- atom2ele.default(x, elety.custom, rescue, ...) M <- elements[match(symb, elements[,"symb"]), "mass"] if(any(is.na(M))) stop(paste("\n\tatom2mass: mass of element '", symb[is.na(M)], "' unknown", sep="")) if(!is.null(grpby)) { if(length(grpby) != length(M)) warning("'grpby' as been recycled") M <- unlist(lapply(split(M, grpby), sum)) } return(M) } atom2mass.pdb <- function(pdb, inds=NULL, mass.custom=NULL, elety.custom=NULL, grpby=NULL, rescue=TRUE, ...){ if(!is.null(inds)) pdb <- trim.pdb(pdb, inds) atom.names <- pdb$atom[,"elety"] M <- atom2mass.default(atom.names, mass.custom, elety.custom, grpby, rescue, ...) return(M) } bio3d/R/write.mol2.R0000644000176200001440000000570014707230357013612 0ustar liggesuserswrite.mol2 <- function(mol, file="R.mol2", append=FALSE) { if(!is.mol2(mol)) stop("input should be of class 'mol2' as obtained by 'read.mol2'") if(any(is.na(mol$atom))) { mol$atom[ is.na(mol$atom) ] = "" } if(!is.null(mol$bond)) { if(any(is.na(mol$bond))) mol$bond[ is.na(mol$bond) ] = "" } if(!is.null(mol$substructure)) { if(any(is.na(mol$substructure))) mol$substructure[ is.na(mol$substructure) ] = "" } raw.lines <- c() raw.lines <- c(raw.lines, "@MOLECULE") raw.lines <- c(raw.lines, mol$name) if(length(mol$info) < 5) mol$info <- c(mol$info, rep(NA, 5-length(mol$info))) mol$info[is.na(mol$info)] = "" fmt <- paste(rep("%7s", length(mol$info)), collapse=" ") raw.lines <- c(raw.lines, sprintf(fmt, mol$info[1], mol$info[2], mol$info[3], mol$info[4], mol$info[5]) ) raw.lines <- c(raw.lines, "@ATOM") fmt <- "%7s %-8s %9.4f %9.4f %9.4f %-5s %5s %-9s %8.4f " for ( i in 1:nrow(mol$atom) ) { raw.lines <- c(raw.lines, paste0( sprintf(fmt, mol$atom[i, 1], mol$atom[i, 2], mol$atom[i, 3], mol$atom[i, 4], mol$atom[i, 5], mol$atom[i, 6], mol$atom[i, 7], mol$atom[i, 8], mol$atom[i, 9] ), mol$atom[i, 10]) ) } if(!is.null(mol$bond)) { raw.lines <- c(raw.lines, "@BOND") fmt <- "%7s %5s %5s %-5s " for ( i in 1:nrow(mol$bond) ) { raw.lines <- c(raw.lines, paste0( sprintf(fmt, mol$bond[i, 1], mol$bond[i, 2], mol$bond[i, 3], mol$bond[i, 4] ), mol$bond[i, 5]) ) } } if(!is.null(mol$substructure)) { raw.lines <- c(raw.lines, "@SUBSTRUCTURE") fmt <- "%7s %-8s %-10s %8s %4s %-6s %4s %4s " for ( i in 1:nrow(mol$substructure) ) { raw.lines <- c(raw.lines, paste0( sprintf(fmt, mol$substructure[i, 1], mol$substructure[i, 2], mol$substructure[i, 3], mol$substructure[i, 4], mol$substructure[i, 5], mol$substructure[i, 6], mol$substructure[i, 7], mol$substructure[i, 8] ), mol$substructure[i, 9]) ) } } write.table(raw.lines, file = file, quote = FALSE, na="", row.names = FALSE, col.names = FALSE, append = append) } bio3d/R/vmd.R0000644000176200001440000000005014707230357012367 0ustar liggesusersvmd <- function(...) UseMethod("vmd") bio3d/R/conserv.R0000644000176200001440000000656714707230356013302 0ustar liggesusers`conserv` <- function(x, method=c("similarity","identity","entropy22","entropy10"), sub.matrix=c("bio3d","blosum62","pam30","other"), matrix.file=NULL, normalize.matrix = TRUE) { method <- match.arg(method) sub.matrix <- match.arg(sub.matrix) ## cat(paste("Options are, method=",method,", matrix=",sub.matrix, ## ", norm=",normalize.matrix),"\n" ) if(is.list(x)) x=x$ali aa <- c("V","I","L","M", "F","W","Y", "S","T", "N","Q", "H","K","R", "D","E", "A","G", "P", "C", "-","X") composition <- table(x) unk <- composition[!names( composition ) %in% aa] if(length(unk) > 0) { warning(paste("non standard residue code:",names(unk),"mapped to X\n ")) for(i in 1:length(unk)) x[x==names(unk[i])]="X" } if(method == "entropy10") { return(entropy(x)$H.10.norm) } if(method == "entropy22") { return(entropy(x)$H.norm) } if(method == "identity") { ## Identity (exact matchs score 1) freq.aa <- apply(x,2, function(i){ i.freq <- table(i[i!="-"]) if(length(i.freq)==0) { return(0) } else { return( max(table(i[i!="-"])) ) } } ) return( freq.aa/nrow(x) ) } if(method == "similarity") { #####cat(sub.matrix) ## Pairwise matches are assigned score from a 'similarity matrix' if(sub.matrix=="other") { if(is.null(matrix.file)) stop("Missing argument: similarity requires a 'matrix.file'") mat.file <- matrix.file } else { ##mat.file <- system.file("matrices/similarity.mat", package="bio3d") mat.file <- system.file(paste("matrices/",sub.matrix,".mat",sep=""), package="bio3d") ##mat.file <- paste("matrices/",sub.matrix,".mat",sep="") } mat <- read.table(mat.file) colnames(mat)[24]="-" if(normalize.matrix) { ## Karlin Normalize o.mat <- mat n <- nrow(o.mat) for(a.ind in 1:n) { for(b.ind in 1:n) { ab <- o.mat[a.ind,b.ind] aa <- o.mat[a.ind,a.ind] bb <- o.mat[b.ind,b.ind] aabb <- aa*bb if(ab==0 && aabb==0) { mat[a.ind,b.ind] <- 0 } else { if(aabb<0) { mat[a.ind,b.ind] <- ab / -sqrt(abs(aabb)) } else { mat[a.ind,b.ind] <- ab / sqrt(aabb) } } } } } scorecol <- function(col, mat) { freq.aa <- table(col) unique.aa <- names(freq.aa) missing.aa <- unique.aa[!unique.aa %in% colnames(mat)] count <- 0; score <- 0 for(i in 1:length(unique.aa)) { aa.i <- unique.aa[i]; freq.i <- freq.aa[i] for(j in i:length(unique.aa)) { aa.j <- unique.aa[j]; freq.j <- freq.aa[j] ##sim <- mat[aa.i,aa.j] if(length(missing.aa)>0) { if(i==missing.aa || j==missing.aa) { sim <- 0 } else { sim <- mat[aa.i,aa.j] } } else { sim <- mat[aa.i,aa.j] } ## number of comparisons if(aa.i == aa.j) { ncmp <- freq.i * (freq.i - 1)/2 } else { ncmp <- freq.i * freq.j } count <- count + ncmp score <- score + (ncmp * sim) } } return(score/count) } return( apply(x, 2, scorecol, mat=mat) ) } } bio3d/R/dssp.R0000644000176200001440000000005414707230356012555 0ustar liggesusers"dssp" <- function(...) UseMethod("dssp") bio3d/R/pca.array.R0000644000176200001440000000323314707230356013466 0ustar liggesusers"pca.array" <- function(x, use.svd=TRUE, rm.gaps=TRUE, ...) { if(!is.array(x)) stop("provide an array of matrices") ## Log the call cl <- match.call() ## Construct the input matrix for PCA x <- t(apply(x, 3, function(y) y[upper.tri(y)])) if (any(!is.finite(x))) { ## Check for GAP positions in input if(rm.gaps) { gapC <- colSums(is.na(x)) == 0 if (sum(gapC) > 1) { x <- x[,gapC] cat(paste("NOTE: Removing", sum(!gapC), "upper triangular gap cells with missing data\n", " retaining", sum(gapC), "upper triangular non-gap cells for analysis.\n")) } else { stop("No non-gap containing cell available for analysis.") } } else { stop( paste(" Infinite or missing values in 'x' input.", "\t Likely solution is to remove gap cells with rm.gaps=TRUE", "\t or remove gap containing matrices from input.", sep="\n") ) } } dx <- dim(x) n <- dx[1]; p <- dx[2] mean <- colMeans(x) if(!use.svd) { ## coverance matrix S <- var(x) ## eigenvectors ("U") & eigenvalues ("L"): [ U'SU=L ] prj <- eigen(S, symmetric = TRUE) L <- prj$values U <- prj$vectors } else { ## S = Q'Q, Q = UDV' Q <- t(t(x) - mean) / sqrt(n-1) prj <- svd(Q) L <- prj$d^2 U <- prj$v } ## fix negative eigenvalues ## (these are very small numbers and should be zero) L[L<0]<-0 sdev <- sqrt(L) ## scores of "xyz" on the pc's [ z=U'[x-x.mean] ] z <- sweep(x,2,mean) %*% (U) class(U)="pca.loadings" out <- list(L=L, U=U, z=z, sdev=sdev, mean=mean, call=cl) class(out)="pca" return(out) } bio3d/R/RcppExports.R0000644000176200001440000000122314707230356014074 0ustar liggesusers# Generated by using Rcpp::compileAttributes() -> do not edit by hand # Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 .read_cif <- function(filename, maxlines = -1L, multi = FALSE) { .Call('_bio3d_read_cif', PACKAGE = 'bio3d', filename, maxlines, multi) } .read_crd <- function(filename) { .Call('_bio3d_read_crd', PACKAGE = 'bio3d', filename) } .read_pdb <- function(filename, multi = FALSE, hex = FALSE, maxlines = -1L, atoms_only = FALSE) { .Call('_bio3d_read_pdb', PACKAGE = 'bio3d', filename, multi, hex, maxlines, atoms_only) } .read_prmtop <- function(filename) { .Call('_bio3d_read_prmtop', PACKAGE = 'bio3d', filename) } bio3d/R/read.fasta.pdb.R0000644000176200001440000001535514707230357014373 0ustar liggesusers"read.fasta.pdb" <- function(aln, prefix="", pdbext="", fix.ali = FALSE, pdblist=NULL, ncore=1, nseg.scale=1, progress=NULL, ...) { ## Log the call cl <- match.call() # Parallelized by parallel package (Fri Apr 26 17:58:26 EDT 2013) ncore <- setup.ncore(ncore) if(ncore > 1) { # Issue of serialization problem # Maximal number of cells of a double-precision matrix # that each core can serialize: (2^31-1-61)/8 R_NCELL_LIMIT_CORE = 2.68435448e8 R_NCELL_LIMIT = ncore * R_NCELL_LIMIT_CORE if(nseg.scale < 1) { warning("nseg.scale should be 1 or a larger integer\n") nseg.scale=1 } } if(is.null(pdblist)) { files <- paste(prefix, aln$id, pdbext,sep="") ##cat(files,sep="\n") toread <- file.exists(files) ## check for online files toread[ substr(files,1,4)=="http" ] <- TRUE if(all(!toread)) stop("No corresponding PDB files found") ## Avoid multi-thread downloading if(any(substr(files,1,4) == "http")) { ncore = 1 # options(cores = ncore) } } else { toread <- rep(FALSE, length(pdblist)) files <- rep(NA, length(pdblist)) } blank <- rep(NA, ncol(aln$ali)) retval <- mclapply(1:length(aln$id), function(i) { coords <- NULL; res.nu <- NULL res.bf <- NULL; res.ch <- NULL res.id <- NULL; res.ss <- NULL ## edit for shiny version if(!is.null(progress)) { progress$inc(1/length(aln$id)/2) } ## edit end cat(paste("pdb/seq:",i," name:", aln$id[i]),"\n") if(!toread[i] & is.null(pdblist)) { warning(paste("No PDB file found for seq", aln$id[i], ": (with filename) ",files[i]), call.=FALSE) coords <- rbind(coords, rep(blank,3)) res.nu <- rbind(res.nu, blank) res.bf <- rbind(res.bf, blank) res.ch <- rbind(res.ch, blank) res.id <- rbind(res.id, blank) res.ss <- rbind(res.ss, blank) } else { if(is.null(pdblist)) pdb <- read.pdb( files[i], verbose=FALSE, ... ) else pdb <- pdblist[[i]] ca.inds <- atom.select(pdb, "calpha", verbose=FALSE) pdbseq <- aa321(pdb$atom$resid[ca.inds$atom]) aliseq <- toupper(aln$ali[i,]) tomatch <- gsub("X","[A-Z]",aliseq[!is.gap(aliseq)]) if(length(pdbseq)<1) stop(paste(basename(aln$id[i]), ": insufficent Calpha's in PDB"), call.=FALSE) ##-- Search for ali residues (1:15) in pdb start.num <- regexpr(pattern = paste(c(na.omit(tomatch[1:15])),collapse=""), text = paste(pdbseq,collapse=""))[1] if (start.num == -1) { start.num <- 1 ##stop(paste(basename(aln$id[i]), ": starting residues of sequence does not match starting residues in PDB"), call.=FALSE) } ##-- Numeric vec, 'nseq', for mapping aln to pdb nseq <- rep(NA,length(aliseq)) ali.res.ind <- which(!is.gap(aliseq)) if( length(ali.res.ind) > (length(pdbseq) - start.num + 1) ) { warning(paste(aln$id[i], ": sequence has more residues than PDB has Calpha's"), call.=FALSE) ali.res.ind <- ali.res.ind[1:(length(pdbseq)-start.num+1)] ## exclude extra tomatch <- tomatch[1:(length(pdbseq)-start.num+1)] ## terminal residues } nseq[ali.res.ind] = start.num:((start.num - 1) + length(tomatch)) ##-- Check for miss-matches match <- aliseq != pdbseq[nseq] if ( sum(match, na.rm=TRUE) >= 1 ) { mismatch.ind <- which(match) mismatch <- cbind(aliseq, pdbseq[nseq])[mismatch.ind,] n.miss <- length(mismatch.ind) if(sum(mismatch=="X") != n.miss) { ## ignore masked X res details <- seqbind(aliseq, pdbseq[nseq]) details$ali[is.na(details$ali)] <- "-" rownames(details$ali) <- c("aliseq","pdbseq") details$id <- c("aliseq","pdbseq") resmatch <- which(!apply(details$ali, 2, function(x) x[1]==x[2])) resid <- paste(pdb$atom$resid[ca.inds$atom][nseq][resmatch][1], "-", pdb$atom$resno[ca.inds$atom][nseq][resmatch][1], " (", pdb$atom$chain[ca.inds$atom][nseq][resmatch][1], ")", sep="") cat("\n ERROR Alignment mismatch. See alignment below for further details\n") cat(" (row ", i, " of aln and sequence of '", aln$id[i], "').\n", sep="") cat(" First mismatch residue in PDB is:", resid, "\n") cat(" occurring at alignment position:", which(match)[1], "\n\n") .print.fasta.ali(details) msg <- paste(basename.pdb(aln$id[i]), " alignment and PDB sequence miss-match\n", " beginning at position ", which(match)[1], " (PDB RESNO ", resid, ")", sep="") stop(msg, call.=FALSE) } } ##-- Store nseq justified/aligned PDB data ca.ali <- pdb$atom[ca.inds$atom,][nseq,] coords <- rbind(coords, as.numeric( t(ca.ali[,c("x","y","z")]) )) res.nu <- rbind(res.nu, ca.ali[, "resno"]) res.bf <- rbind(res.bf, as.numeric( ca.ali[,"b"] )) res.ch <- rbind(res.ch, ca.ali[, "chain"]) res.id <- rbind(res.id, ca.ali[, "resid"]) sse <- pdb2sse(pdb, verbose = FALSE) res.ss <- rbind(res.ss, sse[nseq]) } ## end else for (non)missing PDB file return (list(coords=coords, res.nu=res.nu, res.bf=res.bf, res.ch=res.ch, res.id=res.id, res.ss=res.ss)) } , mc.cores=ncore) ## end mylapply retval <- do.call(rbind, retval) coords <- matrix(unlist(retval[, "coords"]), nrow=length(aln$id), byrow=TRUE) res.nu <- matrix(unlist(retval[, "res.nu"]), nrow=length(aln$id), byrow=TRUE) res.bf <- matrix(unlist(retval[, "res.bf"]), nrow=length(aln$id), byrow=TRUE) res.ch <- matrix(unlist(retval[, "res.ch"]), nrow=length(aln$id), byrow=TRUE) res.id <- matrix(unlist(retval[, "res.id"]), nrow=length(aln$id), byrow=TRUE) if( any(sapply(retval[, "res.ss"], is.null)) ) { res.ss <- NULL } else { res.ss <- matrix(unlist(retval[, "res.ss"]), nrow=length(aln$id), byrow=TRUE) rownames(res.ss) <- aln$id } rownames(aln$ali) <- aln$id rownames(coords) <- aln$id rownames(res.nu) <- aln$id rownames(res.bf) <- aln$id rownames(res.ch) <- aln$id rownames(res.id) <- aln$id if(fix.ali) { i1 <- which(is.na(res.nu)) i2 <- which(is.gap(aln$ali)) if(!identical(i1, i2)) { aln$ali[i1] <- aln$ali[i2[1]] warning("$ali component is modified to match $resno") } } out<-list(xyz=coords, resno=res.nu, b=res.bf, chain = res.ch, id=aln$id, ali=aln$ali, resid=res.id, sse=res.ss, call = cl) class(out)=c("pdbs","fasta") class(out$xyz) = "xyz" return(out) } bio3d/R/store.atom.R0000644000176200001440000000376414707230357013713 0ustar liggesusers"store.atom" <- function(pdb=NULL) { atom.names <- c("N", "CA", "C", "O", "CB", "*G", "*G1", "*G2", "*D", "*D1", "*D2", "*E", "*E1", "*E2", "*E3", "*Z", "*Z1", "*Z2", "*Z3", "*H", "*H1", "*H2") ## atom.greek <- c("N", "CA", "C", "O", "CB", "G", "G1", "G2", "D", "D1", "D2", "E", "E1", "E2", "E3", "Z", "Z1", "Z2", "Z3", "H", "H1", "H2") if(is.null(pdb)) return(atom.names) colpaste <- function(x, col.names = colnames(x)) { apply(x, 1, function(row) paste(row[col.names], collapse = ".")) } getinds <- function(atoms, ref = atom.names) { sort(atom2xyz(charmatch(atoms, ref))) } repadd <- function(num, nrep = nres, toadd = nxyz) { c(num, rep(num, (nrep - 1)) + rep(cumsum(rep(toadd, (nrep - 1))), each = length(num))) } atom.data <- colpaste(pdb$atom, c("elety", "resno", "insert", "chain")) atom.list <- matrix(unlist(strsplit(atom.data, "\\.")), ncol = 4, byrow = TRUE) res.data <- colpaste(pdb$atom, c("resno", "insert", "chain")) res.list <- unique(res.data) coords <- NULL # Changed for PDB format v3.3 # blank <- matrix(NA, nrow = 13, ncol = length(atom.names)) blank <- matrix(NA, nrow = ncol(pdb$atom), ncol = length(atom.names)) for (i in 1:length(res.list)) { res.blank <- blank res.ind <- which(res.list[i] == res.data) blank.ind <- charmatch(atom.list[res.ind, 1], atom.names, nomatch = 0) + charmatch(substr(atom.list[res.ind,1], 2, 4), atom.greek, nomatch = 0) res.blank[, blank.ind[blank.ind != 0]] <- t( pdb$atom[(res.ind[blank.ind != 0]),] ) coords <- cbind(coords, res.blank) } natm <- length(atom.names) # PDB format v3.3 nxyz <- ncol(pdb$atom) * natm # nxyz <- 13 * natm nres <- length(coords)/(nxyz) dim(coords) <- c(ncol(pdb$atom), natm, nres) # dim(coords) <- c(13, natm, nres) dimnames(coords) = list(atom = colnames(pdb$atom), type = atom.names, res = res.list) return(coords) } bio3d/R/read.crd.R0000644000176200001440000000053714707230357013275 0ustar liggesusers"read.crd" <- function(file, ...) { ## from tools package: pos <- regexpr("\\.([[:alnum:]]+)$", file) ext <- ifelse(pos > -1L, substring(file, pos + 1L), "") if(ext %in% c("crd")) { class(file)=c("character", "charmm") } if(ext %in% c("inpcrd", "rst")) { class(file)=c("character", "amber") } UseMethod("read.crd", file) } bio3d/R/com.xyz.R0000644000176200001440000000073714707230356013223 0ustar liggesusers"com.xyz" <- function(xyz, mass=NULL, ...) { xyz <- as.xyz(xyz) natoms <- ncol(xyz)/3 if(is.null(mass)) mass <- rep(1, times=natoms) if (natoms != length(mass)) stop("com.xyz: length of input vector 'mass' uequal to number of atoms (ncol(xyz)/3)") com1 <- function(x) { xyz <- matrix(x, ncol=3, byrow=T) com <- colSums(xyz * mass) / sum(mass) return(com) } com <- t(apply(xyz, 1, com1)) colnames(com) <- c("x", "y", "z") return(com) } bio3d/R/summary.cnapath.R0000644000176200001440000001501314707230357014720 0ustar liggesuserssummary.cnapath <- function(object, ..., pdb = NULL, label = NULL, col = NULL, plot = FALSE, concise = FALSE, cutoff = 0.1, normalize = TRUE, weight = FALSE) { pa <- list(object, ...) if(!all(sapply(pa, inherits, "cnapath"))) stop("Input should be object(s) of the 'cnapath' class") if(is.null(label)) label = 1:length(pa) if(is.null(col)) col = 1:length(pa) out <- list() # store node degeneracy if(weight) { node.deg <- lapply(pa, function(x) { wt <- exp(-x$dist) uniq.nodes <- sort(unique(unlist(x$path))) tbl <- rep(0, length(uniq.nodes)) names(tbl) <- uniq.nodes for(i in 1:length(x$path)) { tbl[as.character(x$path[[i]])] <- tbl[as.character(x$path[[i]])] + wt[i] } tbl } ) } else { # read node numbers on paths y <- lapply(pa, function(x) unlist(x$path)) node.deg <- lapply(y, table) } num.paths <- sapply(pa, function(x) length(x$path)) if(normalize) { # node.deg <- lapply(node.deg, function(x) x/max(x)) node.deg <- lapply(1:length(node.deg), function(i) { x <- node.deg[[i]] x/num.paths[i] }) } # find on-path node by the cutoff yy <- lapply(node.deg, function(x) x[x >= cutoff]) onpath.node <- unique(names(unlist(yy))) i <- as.numeric(onpath.node) onpath.node <- onpath.node[order(i)] # generate the node degeneracy table o <- lapply(node.deg, function(x) { x <- x[match(onpath.node, names(x))] x[is.na(x)] <- 0 names(x) <- onpath.node x } ) # replace node id with pdb resid and resno if(!is.null(pdb)) { ca.inds <- atom.select(pdb, elety="CA", verbose = FALSE) resno <- pdb$atom[ca.inds$atom, "resno"] resid <- pdb$atom[ca.inds$atom, "resid"] chain <- pdb$atom[ca.inds$atom, "chain"] lig.inds <- atom.select(pdb, "ligand", verbose = FALSE) islig <- paste(chain, resno, sep="_") %in% paste(pdb$atom[lig.inds$atom, "chain"], pdb$atom[lig.inds$atom, "resno"], sep="_") resid[!islig] <- aa321(resid[!islig]) o <- lapply(o, function(x) { node <- as.numeric(names(x)) if(length(unique(pdb$atom[, "chain"])) > 1) n <- paste(chain[node], paste(resid[node], resno[node], sep=""), sep="_") else n <- paste(resid[node], resno[node], sep="") names(x) <- n x } ) } names(o) <- label out$network <- label out$num.paths <- num.paths out$hist <- lapply(pa, function(x) table(cut(x$dist, breaks=5, include.lowest = TRUE))) if(length(out$hist)==1) out$hist = out$hist[[1]] out$degeneracy <- do.call(rbind, o) if(normalize) out$degeneracy <- round(out$degeneracy, digits=2) if(plot) { opar <- par(no.readonly = TRUE) on.exit(par(opar)) layout(matrix(1:2, nrow=1), respect = TRUE) rgbcolors <- sapply(col, col2rgb) / 255 rgbcolors <- rbind(rgbcolors, alpha = 0.6) ##- for path length distribution y1 <- lapply(pa, function(x) hist(x$dist, breaks = 20, plot = FALSE) ) par(mar=c(4, 4, 1, 1)) plot(y1[[1]], freq = FALSE, col = do.call(rgb, as.list(rgbcolors[,1])), border = col[1], main = "Path Length Distribution", xlim = range(unlist(lapply(y1, "[[", "breaks"))), ylim = c(0, max(unlist(lapply(y1, "[[", "density")))), xlab = "Path length", ylab = "Probability density") box() if(length(y1) > 1) for(i in 2:length(y1)) { plot(y1[[i]], freq = FALSE, col = do.call(rgb, as.list(rgbcolors[,i])), border = col[i], add = TRUE) } legend("topleft", legend = label, bty = "n", text.col = col) ##- for node degeneracy y2 <- lapply(pa, function(x) unlist(x$path)) if(!is.null(pdb)) y2 <- lapply(y2, function(x) resno[x]) if(concise) { # re-number node to get more concise plot ii <- sort(unique(unlist(y2))) y2 <- lapply(y2, match, ii) } y2 <- lapply(y2, function(x) hist(x, breaks = c(seq(min(x), max(x), 1) - 0.5, max(x) + 0.5), plot = FALSE) ) par(mar=c(4, 4, 1, 1)) plot(y2[[1]], freq = TRUE, col = do.call(rgb, as.list(rgbcolors[,1])), lty = 0, main = "Node Degeneracy", xlim = range(unlist(lapply(y2, "[[", "breaks"))), ylim = c(0, max(unlist(lapply(y2, "[[", "counts")))), xlab = "Node no", ylab = "Number of paths") box() if(length(y2) > 1) for(i in 2:length(y2)) plot(y2[[i]], freq = TRUE, col = do.call(rgb, as.list(rgbcolors[,i])), lty = 0, add = TRUE) } return(out) } print.cnapath <- function(x, ...) { dots = list(...) if(is.list(x) && all(sapply(x, inherits, "cnapath"))) { if(!"label" %in% names(dots) || is.null(dots$label)) dots$label = names(x) names(x) <- NULL args = c(x, dots) o <- do.call(summary, args) } else { o <- summary(x, ...) } if("plot" %in% names(dots)) plot = dots$plot else plot = FALSE if(!plot) { if("normalize" %in% names(dots)) normalize = dots$normalize else normalize = TRUE if(length(o$network) > 1) { cat("Number of networks: ", length(o$network), "(", paste(o$network, collapse=", "), ")\n") } cat("Number of paths in network(s):\n") if(length(o$network) > 1) { cat(paste(" ", o$network, ": ", o$num.paths, sep="", collapse="\n"), sep="\n") cat("\n") } else { cat(" ", o$num.paths, "\n\n") } cat("Path length distribution: \n") if(length(o$network) > 1) { for(i in 1:length(o$network)) { cat(" --- ", o$network[i], " ---") print(o$hist[[i]]) cat("\n") } } else { print(o$hist) cat("\n") } cat("Node degeneracy table: \n\n") if(length(o$network) == 1) rownames(o$degeneracy) = "" if(normalize) print(format(o$degeneracy, nsmall=2), quote=FALSE) else print(o$degeneracy) } } plot.cnapath <- function(x, ...) { arg.default <- list(plot=TRUE) args <- .arg.filter(arg.default, ...) do.call(print.cnapath, c(list(x=x), args)) } plot.ecnapath <- function(x, ...) { if(!inherits(x, "ecnapath")) { stop("The input 'x' must be an object of class 'ecnapath'.") } plot.cnapath(x, ...) } bio3d/R/aln2html.R0000644000176200001440000001104314707230356013325 0ustar liggesusers`aln2html` <- function(aln, file = "alignment.html", Entropy = 0.5, append = TRUE, caption.css = "color: gray; font-size: 9pt", caption = "Produced by Bio3D", fontsize = "11pt", bgcolor = TRUE, colorscheme="clustal") { if(is.list(aln)) { x=aln$ali id=aln$id } else { x=aln id=dimnames(x)[[1]] } if(is.null(id)) stop("No $id list component or rownames for the alignment object") back <- ""; bold <- "" #bold <- "font-weight: bold" if (bgcolor) { back <- "background-"; bold <- "" } head <- paste("\n\n \n \n \n", collapse="",sep="" ) body <- paste("
\n") ## id <- paste("\n
",dimnames(x)[[1]],"    ",sep="") #- id justification # id <- dimnames(x)[[1]] len <- nchar(id, type="chars") pad <- NULL; if(!all(max(len)==len)) { for(i in 1:length(id)) { pad <- c(pad, paste( rep(" ", max(len)-len[i]),collapse="" )) } } id <- paste("\n
",id,pad,"   ",sep="") if(colorscheme=="clustal") { # Clustal coloring al <- matrix( paste("",x,"",sep=""), nrow=nrow(x)) } else { #- Color by entropy score he <- entropy(x) score <- he$H.10.norm; score[ which(he$freq[c("-"),]>0.6) ] = 0 rn <- cbind( (score > 0.4), (score > 0.575), (score > 0.75), (score > 0.9) ) rn[ rn[,2], 1] = FALSE; rn[ rn[,3], 2] = FALSE; rn[ rn[,4], 3] = FALSE al=x b <- matrix( paste("",x,"",sep=""), nrow=nrow(x)) l <- matrix( paste("",x,"",sep=""), nrow=nrow(x)) m <- matrix( paste("",x,"",sep=""), nrow=nrow(x)) h <- matrix( paste("",x,"",sep=""), nrow=nrow(x)) al[ , which(rn[,1])] = b[ , which(rn[,1])] al[ , which(rn[,2])] = l[ , which(rn[,2])] al[ , which(rn[,3])] = m[ , which(rn[,3])] al[ , which(rn[,4])] = h[ , which(rn[,4])] } #- Dont color unconserved positions if(Entropy > 0) { if(colorscheme=="clustal") he <- entropy(x) execlude <- unique( c(which(he$H.10.norm < Entropy), which(he$freq[c("-"),]>0.6)) ) al[,execlude] = x[,execlude] } #- Dont color gaps ind<-which(x=="-",arr.ind=TRUE); al[ind]=x[ind] cat(head, body, file=file, append=append) for(i in 1:length(id)) cat( id[i], al[i,], sep="", file=file, append=TRUE) cat(paste("\n
\n", "
", caption ,"
\n", " \n\n"), file=file, append=TRUE) } bio3d/R/seq2aln.R0000644000176200001440000000113314707230357013151 0ustar liggesusersseq2aln <- function(seq2add, aln, id="seq", file = "aln.fa", ...) { ##- Add a sequence 'seq2add' to an existing alignment 'aln' ## Adds at the bottom of alignment cl <- match.call() if(!inherits(aln, "fasta")) stop("Input 'aln' should be a 'fasta' object") tmp.seq = as.fasta(seq2add) if(nrow(tmp.seq$ali) > 1) warning("Multiple sequences in 'seq2add' should be pre-aligned") dots = list(...) # fixed arguments dots$profile = aln dots$outfile = file args = c(list(aln=seq2add, id=id), dots) naln = do.call(seqaln, args) naln$call = cl return(naln) } bio3d/R/get.blast.R0000644000176200001440000000564314707230356013500 0ustar liggesusersget.blast <- function(urlget, time.out = NULL, chain.single=TRUE) { if(substr(urlget, 1, 5) == "https" && grep("Blast.cgi", urlget) && grep("RID[[:space:]]*=", urlget)) { rid <- sub("^.*RID[[:space:]]*=[[:space:]]*", "", urlget) names(urlget)=rid } else { stop("Illegal link for retrieving BLAST results") } cat(paste(" Searching ... please wait (updates every 5 seconds) RID =",rid,"\n ")) ##- Retrieve results via RID code and check for job completion ## (completion is based on retrieving HTML or CSV output) html <- 1 t.count <- 0 repeat { raw <- try(read.csv(urlget, header = FALSE, sep = ",", quote="", dec=".", fill = TRUE, comment.char="", stringsAsFactors=FALSE), silent=TRUE) if(inherits(raw, "try-error")) { stop("No hits found: thus no output generated") } html <- grep("DOCTYPE", raw[1,]) if(!is.null(time.out) && (t.count > time.out) || (length(html) != 1)) break; cat("."); Sys.sleep(5) t.count <- t.count + 5 } if(length(html) == 1) { warning("\nTime out (", time.out, "s): Retrieve results with returned link\n", urlget, "\n", sep="") return(urlget) } colnames(raw) <- c("queryid", "subjectids", "identity", "alignmentlength", "mismatches", "gapopens", "q.start", "q.end", "s.start", "s.end", "evalue", "bitscore", "positives") ##- Expand 'raw' for each hit in 'subjectids' (i.e. split on ";") eachsubject <- strsplit(raw$subjectids, ";") subjectids <- unlist(eachsubject) n.subjects <- sapply(eachsubject, length) df <- raw[rep(row.names(raw), times=n.subjects), ] df$subjectids <- subjectids row.names(df) <- 1:nrow(df) ##- Parse ids #all.ids <- strsplit(subjectids, "\\|") #gi.id <- sapply(all.ids, '[', 2) gi.id <- subjectids all.ids <- strsplit(subjectids, "_") pdb.4char <- sapply(all.ids, '[', 1) pdb.chain <- sapply(all.ids, '[', 2) ## Catch long chain IDs as in hits from "P12612" (e.g "1WF4_GG" => "1WF4_g") if(chain.single) { chain.ind <- which(nchar(pdb.chain) > 1 & nchar(pdb.4char)==4) if(length(chain.ind) > 0) { pdb.chain[ chain.ind ] <- tolower( substr(pdb.chain[ chain.ind ],1,1 ) ) } } pdb.id <- rep(NA, length(pdb.4char)) tinds <- !is.na(pdb.chain) & nchar(pdb.4char)==4 pdb.id[tinds] <- paste(pdb.4char[tinds],"_",pdb.chain[tinds],sep="") ##- Map zero evalues to arbitrarily high value for -log(evalue) df$mlog.evalue <- -log(df$evalue) df$mlog.evalue[is.infinite(df$mlog.evalue)] <- -log(1e-308) df$pdb.id <- pdb.id df$acc <- gi.id cat(paste("\n Reporting",length(pdb.id),"hits\n")) # sort hit table according to mlog.evalue df <- df[order(df$mlog.evalue, decreasing = TRUE), ] output <- list(hit.tbl = df, raw = raw, url = urlget) class(output) <- "blast" return(output) } bio3d/R/read.pdcBD.R0000644000176200001440000001272514707230357013503 0ustar liggesusers`read.pdcBD` <- function (file, maxlines=50000, multi=FALSE, rm.insert=FALSE, rm.alt=TRUE, verbose=TRUE) { if(missing(file)) { stop("read.pqr: please specify a PQR 'file' for reading") } if(!is.numeric(maxlines)) { stop("read.pqr: 'maxlines' must be numeric") } if(!is.logical(multi)) { stop("read.pqr: 'multi' must be logical TRUE/FALSE") } # PDB FORMAT v2.0: colpos, datatype, name, description atom.format <- matrix(c(-4, NA, NA, # (ATOM) 7, 'numeric', "eleno", # atom_no -1, NA, NA, # (blank) 3, 'character', "elety", # atom_ty 1, 'character', "alt", # alt_loc 4, 'character', "resid", # res_na 1, 'character', "chain", # chain_id 5, 'numeric', "resno", # res_no 1, 'character', "insert", # ins_code -3, NA, NA, # (blank) 10, 'numeric', "x", # x 10, 'numeric', "y", # y 10, 'numeric', "z", # z 8, 'numeric', "o", # o ### 6 for pdb 8, 'numeric', "b", # b ### 6 for pdb -6, NA, NA, # (blank) 4, 'character', "segid" # seg_id ), ncol=3, byrow=TRUE, dimnames = list(c(1:17), c("widths","what","name")) ) split.string <- function(x) { # split a string 'x' x <- substring(x, first, last) x[nchar(x) == 0] <- as.character(NA) x } is.character0 <- function(x){length(x)==0 & is.character(x)} trim <- function (s) { # Remove leading and traling # spaces from character strings s <- sub("^ +", "", s) s <- sub(" +$", "", s) s[(s=="")]<-NA s } # finds first and last (substr positions) widths <- as.numeric(atom.format[,"widths"]) # fixed-width spec drop.ind <- (widths < 0) # cols to ignore (i.e. -ve) widths <- abs(widths) # absolute vales for later st <- c(1, 1 + cumsum( widths )) first <- st[-length(st)][!drop.ind] # substr start last <- cumsum( widths )[!drop.ind] # substr end # read n lines of PDB file raw.lines <- readLines(file, n = maxlines) type <- substring(raw.lines,1,6) # check number of END/ENDMDL records raw.end <- sort(c(which(type == "END"), which(type == "ENDMDL"))) if (length(raw.end) > 1) { print("PDB has multiple END/ENDMDL records") if (!multi) { print("multi=FALSE: taking first record only") raw.lines <- raw.lines[ (1:raw.end[1]) ] type <- type[ (1:raw.end[1]) ] } else { print("multi=TRUE: 'read.dcd' will be quicker!") } } if ( length(raw.end) !=1 ) { if (length(raw.lines) == maxlines) { # have not yet read all the file print("You may need to increase 'maxlines'") print("check you have all data in $atom") } } # split by record type raw.header <- raw.lines[type == "HEADER"] raw.seqres <- raw.lines[type == "SEQRES"] raw.helix <- raw.lines[type == "HELIX "] raw.sheet <- raw.lines[type == "SHEET "] raw.atom <- raw.lines[type == "ATOM "] het.atom <- raw.lines[type == "HETATM"] # also look for "TER" records rm(raw.lines) if (verbose) { if (!is.character0(raw.header)) { cat(" ", raw.header, "\n") } } seqres <- unlist(strsplit( trim(substring(raw.seqres,19,80))," ")) helix <- list(start = as.numeric(substring(raw.helix,22,25)), end = as.numeric(substring(raw.helix,34,37)), chain = trim(substring(raw.helix,20,20)), type = trim(substring(raw.helix,39,40))) sheet <- list(start = as.numeric(substring(raw.sheet,23,26)), end = as.numeric(substring(raw.sheet,34,37)), chain = trim(substring(raw.sheet,22,22)), sense = trim(substring(raw.sheet,39,40))) # format ATOM records as a character matrix atom <- matrix(trim(sapply(raw.atom, split.string)), byrow=TRUE, ncol=nrow(atom.format[ !drop.ind,]), dimnames = list(NULL, atom.format[ !drop.ind,"name"]) ) # Alt records with m[,"alt"] != NA if (rm.alt) { if ( sum( !is.na(atom[,"alt"]) ) > 0 ) { cat(" PDB has ALT records, taking A only, rm.alt=TRUE\n") alt.inds <- which( (atom[,"alt"] != "A") ) # take first alt only if(length(alt.inds)>0) atom <- atom[-alt.inds,] } } # Insert records with m[,"insert"] != NA if (rm.insert) { if ( sum( !is.na(atom[,"insert"]) ) > 0 ) { cat(" PDB has INSERT records, removing, rm.insert=TRUE\n") insert.inds <- which(!is.na(atom[,"insert"])) # rm insert positions atom <- atom[-insert.inds,] } } het <- matrix(trim(sapply(het.atom, split.string)), byrow=TRUE, ncol=nrow(atom.format[ !drop.ind,]), dimnames = list(NULL, atom.format[ !drop.ind,"name"]) ) output<-list(atom=atom, het=het, helix=helix, sheet=sheet, seqres=seqres, xyz=as.numeric(t(atom[,c("x","y","z")])), calpha = as.logical(atom[,"elety"]=="CA")) class(output) <- "pdb" return(output) } bio3d/R/normalize.vector.R0000644000176200001440000000062314707230356015107 0ustar liggesusers"normalize.vector" <- function(x, mass=NULL) { x <- as.matrix(x); dx <- dim(x); if(dx[2]==1) x <- as.numeric(x) if(!is.null(mass)) { if (dx[1] != (length(mass)*3)) stop("normalize.vector: incorrect length of mass") } if(is.matrix(x)) return(t( t(x) / sqrt(inner.prod(x,x,mass)))) else return(x / sqrt(inner.prod(x,x,mass))) } bio3d/R/basename.pdb.R0000644000176200001440000000071314707230356014125 0ustar liggesusersbasename.pdb <- function(x, mk4=FALSE, ext=".pdb") { ## ##- Extract PDB basename/identifier from filenames ## like "basename()" for PDB files ## E.g.: ## basename.pdb("/somedir/somewhere/1bg2_myfile.pdb") ## Will give: 1bg2_myfile ## basename.pdb("/somedir/somewhere/1bg2_myfile.pdb", TRUE) ## Will give: 1bg2 y <- sub(paste0("\\", ext, "$"),"", basename(x)) if(mk4) { y <- substr(y,1,4) } names(y) <- x return(y) } bio3d/R/orient.pdb.R0000644000176200001440000000335214707230356013654 0ustar liggesusers"orient.pdb" <- function (pdb, atom.subset = NULL, verbose = TRUE ) { ## x <- c(rep(10,3), rep(0,3), rep(-10,3)) ## write.pdb(xyz=x, file="t1.pdb") ## write.pdb(xyz=orient.pdb(x), file="t2.pdb") if (missing(pdb)) { stop("pdb.orient: must supply 'pdb' object, e.g. from 'read.pdb'") } if(is.list(pdb)) { xyz <- pdb$xyz } else { if (!is.vector(pdb)) { stop("pdb.orient: input 'pdb' should NOT be a matrix") } xyz <- pdb } xyz <- matrix( xyz, ncol=3, byrow=TRUE ) if (is.null(atom.subset)) atom.subset <- c(1:nrow(xyz)) if (length(atom.subset) > nrow(xyz)) { stop("pdb.orient: there are more 'atom.subset' inds than there atoms") } ## Center on mean xyz positions xyz.bar <- apply(xyz[atom.subset, ], 2, mean) xyz <- sweep(xyz, 2, xyz.bar) ## Determine principal axis S <- var(xyz[atom.subset, ]) prj <- eigen(S, symmetric = TRUE) ## Mke rotation explicitly rh system ## z <- xyz %*% (prj$vectors) A <- prj$vectors b <- A[,1]; c <- A[,2] A[1,3] <- (b[2] * c[3]) - (b[3] * c[2]) A[2,3] <- (b[3] * c[1]) - (b[1] * c[3]) A[3,3] <- (b[1] * c[2]) - (b[2] * c[1]) ## Rotate z <- xyz %*% (A) if (verbose) { cat("Dimensions:", "\n") cat(" x min=", round(min(z[, 1]), 3), " max=", round(max(z[, 1]), 3), " range=", round(max(z[, 1]) - min(z[, 1]), 3), "\n") cat(" y min=", round(min(z[, 2]), 3), " max=", round(max(z[, 2]), 3), " range=", round(max(z[, 2]) - min(z[, 2]), 3), "\n") cat(" z min=", round(min(z[, 3]), 3), " max=", round(max(z[, 3]), 3), " range=", round(max(z[, 3]) - min(z[, 3]), 3), "\n") } z <- round(as.vector(t(z)),3) z <- as.xyz(z) invisible(z) } bio3d/R/atom.select.pdb.R0000644000176200001440000001661714707230356014602 0ustar liggesusers".is.protein" <- function(pdb, byres=TRUE) { if(byres) { return(.is.protein1(pdb)) } else { ## possible option to issue a warning when the two methods diverge sel1 <- .is.protein1(pdb) sel2 <- .is.protein2(pdb) if(!(identical(sel1, sel2))) { sel <- cbind(sel1, sel2) sums <- apply(sel, 1, sum) inds <- which(sums==1) unq <- paste(unique(pdb$atom$resid[inds]), collapse=",") warning(paste("possible protein residue(s) with non-standard residue name(s) \n (", unq, ")")) } return(sel1) } } ".is.protein1" <- function(pdb) { aa <- bio3d::aa.table$aa3 return(pdb$atom$resid %in% aa) } ".is.protein2" <- function(pdb) { resid <- paste(pdb$atom$chain, pdb$atom$insert, pdb$atom$resno, sep="-") at.ca <- resid[ pdb$atom$elety == "CA"] at.o <- resid[ pdb$atom$elety == "O" ] at.c <- resid[ pdb$atom$elety == "C" ] at.n <- resid[ pdb$atom$elety == "N" ] common <- intersect(intersect(intersect(at.ca, at.o), at.n), at.c) return(resid %in% common) } ".is.nucleic" <- function(pdb) { nuc.aa <- c("A", "U", "G", "C", "T", "I", "DA", "DU", "DG", "DC", "DT", "DI") return(pdb$atom$resid %in% nuc.aa) } ".is.water" <- function(pdb) { hoh <- c("H2O", "OH2", "HOH", "HHO", "OHH", "SOL", "WAT", "TIP", "TIP2", "TIP3", "TIP4") return(pdb$atom$resid %in% hoh) } ".is.hydrogen" <- function(pdb) { return(substr( gsub("^[123]", "",pdb$atom$elety) , 1, 1) %in% "H") } .match.type <- function(pdb, t) { if(!is.character(t)) stop("'type' must be a character vector") pdb$atom$type %in% t } .match.eleno <- function(pdb, eleno) { if(!is.numeric(eleno)) stop("'eleno' must be a numeric vector") pdb$atom$eleno %in% eleno } .match.elety <- function(pdb, elety) { if(!is.character(elety)) stop("'elety' must be a character vector") pdb$atom$elety %in% elety } .match.resid <- function(pdb, resid) { if(!is.character(resid)) stop("'resid' must be a character vector") pdb$atom$resid %in% resid } .match.chain <- function(pdb, chain) { if(!is.character(chain)) stop("'chain' must be a character vector") pdb$atom$chain %in% chain } .match.resno <- function(pdb, resno) { if(!is.numeric(resno)) stop("'resno' must be a numeric vector") pdb$atom$resno %in% resno } .match.insert <- function(pdb, insert) { # insert should be NA or a character vector if(!all(is.na(insert))) { if(!is.character(insert[ !is.na(insert) ])) stop("'insert' must be a character vector") } ## NA and '' are treated the same if(any(insert=="", na.rm=TRUE)) insert[ insert == "" ] = NA if(any(pdb$atom$insert == "", na.rm=TRUE)) pdb$atom$insert[ pdb$atom$insert == "" ] = NA pdb$atom$insert %in% insert } .match.segid <- function(pdb, segid) { # segid should be NA or a character vector if(!all(is.na(segid))) { if(!is.character(segid[ !is.na(segid) ])) stop("'segid' must be a character vector") } ## NA and '' are treated the same if(any(segid=="", na.rm=TRUE)) segid[ segid == "" ] = NA if(any(pdb$atom$segid == "", na.rm=TRUE)) pdb$atom$segid[ pdb$atom$segid == "" ] = NA pdb$atom$segid %in% segid } atom.select.pdb <- function(pdb, string = NULL, type = NULL, eleno = NULL, elety = NULL, resid = NULL, chain = NULL, resno = NULL, insert = NULL, segid = NULL, operator = "AND", inverse = FALSE, value = FALSE, verbose=FALSE, ...) { if(!is.pdb(pdb)) stop("'pdb' must be an object of class 'pdb'") ## check input operator op.tbl <- c(rep("AND",3), rep("OR",4)) operator <- op.tbl[match(operator, c("AND","and","&","OR","or","|","+"))] if(!operator %in% c("AND", "OR")) stop("Allowed values for 'operator' are 'AND' or 'OR'") ## check input string if(!is.null(string)) { str.allowed <- c("all", "protein", "notprotein", "nucleic", "notnucleic", "water", "notwater", "calpha", "cbeta", "backbone", "back", "side", "sidechain", "ligand", "h", "noh") if(!(string %in% str.allowed)) stop("Unknown 'string' keyword. See documentation for allowed values") } ## verbose message output if(verbose) cat("\n") .verboseout <- function(M, type) { cat(" .. ", sprintf("%08s", length(which(M))), " atom(s) from '", type, "' selection \n", sep="") } ## combine logical vectors .combinelv <- function(L, M, operator) { if(operator=="AND") M <- L & M if(operator=="OR") M <- L | M return(M) } cl <- match.call() if(operator=="AND") M <- rep(TRUE, nrow(pdb$atom)) if(operator=="OR") M <- rep(FALSE, nrow(pdb$atom)) if(!is.null(string)) { M <- switch(string, all = M <- rep(TRUE, nrow(pdb$atom)), protein = .is.protein(pdb), notprotein = !.is.protein(pdb), nucleic = .is.nucleic(pdb), notnucleic = !.is.nucleic(pdb), water = .is.water(pdb), notwater = !.is.water(pdb), calpha = .is.protein(pdb) & .match.elety(pdb, "CA"), cbeta = .is.protein(pdb) & .match.elety(pdb, c("CA", "N", "C", "O", "CB")), backbone = .is.protein(pdb) & .match.elety(pdb, c("CA", "N", "C", "O")), back = .is.protein(pdb) & .match.elety(pdb, c("CA", "N", "C", "O")), sidechain = .is.protein(pdb) & !.match.elety(pdb, c("CA", "N", "C", "O")), side = .is.protein(pdb) & !.match.elety(pdb, c("CA", "N", "C", "O")), ligand = !.is.protein(pdb) & !.is.nucleic(pdb) & !.is.water(pdb), h = .is.hydrogen(pdb), noh = !.is.hydrogen(pdb), NA ) if(verbose) { .verboseout(M, 'string') } } if(!is.null(type)) { L <- .match.type(pdb, type) if(verbose) .verboseout(L, 'type') M <- .combinelv(L, M, operator) } if(!is.null(eleno)) { L <- .match.eleno(pdb, eleno) if(verbose) .verboseout(L, 'eleno') M <- .combinelv(L, M, operator) } if(!is.null(elety)) { L <- .match.elety(pdb, elety) if(verbose) .verboseout(L, 'elety') M <- .combinelv(L, M, operator) } if(!is.null(resid)) { L <- .match.resid(pdb, resid) if(verbose) .verboseout(L, 'resid') M <- .combinelv(L, M, operator) } if(!is.null(chain)) { L <- .match.chain(pdb, chain) if(verbose) .verboseout(L, 'chain') M <- .combinelv(L, M, operator) } if(!is.null(resno)) { L <- .match.resno(pdb, resno) if(verbose) .verboseout(L, 'resno') M <- .combinelv(L, M, operator) } if(!is.null(insert)) { L <- .match.insert(pdb, insert) if(verbose) .verboseout(L, 'insert') M <- .combinelv(L, M, operator) } if(!is.null(segid)) { L <- .match.segid(pdb, segid) if(verbose) .verboseout(L, 'segid') M <- .combinelv(L, M, operator) } if(verbose) cat(" ..", sprintf("%08s", length(which(M))), "atom(s) in final combined selection \n") if(inverse) { if(verbose) { cat(" ..", sprintf("%08s", length(which(!M))), "atom(s) in inversed selection \n") } sele <- as.select(which(!M)) } else sele <- as.select(which(M)) sele$call <- cl if(verbose) cat("\n") if(value) return(trim.pdb(pdb, sele)) else return(sele) } bio3d/R/inspect.connectivity.R0000644000176200001440000000215314707230356015770 0ustar liggesusers## Useful for checking the connectivity in a pdb(s) object "inspect.connectivity" <- function(pdbs, cut=4.) { xyz <- NULL; ids <- NULL; if(inherits(pdbs, "pdbs")) { xyz <- pdbs$xyz n <- length(pdbs$id) ids <- pdbs$id } else if(is.pdb(pdbs)) { ca.inds <- atom.select(pdbs, 'calpha', verbose=FALSE) xyz <- as.xyz(pdbs$xyz)[1, ca.inds$xyz, drop=FALSE] n <- 1 } else if(inherits(pdbs, "xyz")) { xyz <- pdbs n <- nrow(xyz) } else { stop("Please provide coordinates as a \n 'pdbs', 'pdb', or xyz matrix format") } if(length(xyz)<6) { warning("Insufficient C-alpha atoms in structure to determine connectivity") return(FALSE) } is.connected <- function(xyz) { xyz <- matrix(xyz[!is.na(xyz)], ncol=3, byrow=T) for(i in 1:(nrow(xyz)-1)) { d <- sqrt((xyz[i,1]-xyz[i+1,1])**2 + (xyz[i,2]-xyz[i+1,2])**2 + (xyz[i,3]-xyz[i+1,3])**2 ) if(d>cut) return(FALSE) } return(TRUE) } cons <- rep(NA, length=n) for(i in 1:n) { cons[i] <- is.connected(xyz[i,]) } names(cons) <- ids return(cons) } bio3d/R/plot.pca.R0000644000176200001440000000304614707230357013331 0ustar liggesusers`plot.pca` <- function(x, pc.axes=NULL, pch=16, col=par("col"), cex=0.8, mar=c(4, 4, 1, 1), ...) { opar <- par(no.readonly=TRUE) par(pty="s", cex=cex, mar=mar) if(is.null(pc.axes)) { ##-- Overview plot has been requested par(mfrow=c(2, 2)) pc.axes <- 1:3 ## Variance per PC for axis label annotation p <- paste0("PC",1:3," (", round((x$L[1:3]/sum(x$L)) * 100, 2),"%)") plot(x$z[,1],x$z[,2], type="p", pch=pch, xlab=p[1], ylab=p[2], col=col, ...) abline(h=0,col="gray",lty=2); abline(v=0,col="gray",lty=2) plot(x$z[,3],x$z[,2], type="p", pch=pch, xlab=p[3], ylab=p[2], col=col,...) abline(h=0,col="gray",lty=2); abline(v=0,col="gray",lty=2) plot(x$z[,1],x$z[,3], type="p", pch=pch, xlab=p[1], ylab=p[3], col=col,... ) abline(h=0,col="gray",lty=2); abline(v=0,col="gray",lty=2) plot.pca.scree(x$L, ...) par(opar) ##- Reset par for subsequent plot to this device } else { ##-- Score plot of an individual PC pair (e.g. 1 vs 2) has been requested if(length(pc.axes) != 2) { stop("Input 'pc.axes' should be NULL (for overview plots) or numeric and of length two (for individual score plot)") } ## Variance for axis labels p <- paste0("PC",pc.axes," (", round((x$L[pc.axes]/sum(x$L)) * 100, 2),"%)") par(cex=cex+0.2) ## Make axis legend text a little larger plot(x$z[,pc.axes[1]],x$z[,pc.axes[2]], type="p", pch=pch, xlab=p[1], ylab=p[2], col=col, ...) abline(h=0,col="gray",lty=2);abline(v=0,col="gray",lty=2) } invisible(x$z[,pc.axes, drop=FALSE]) } bio3d/R/load.enmff.R0000644000176200001440000001116714707230356013624 0ustar liggesusers## All-atom ENMs "ff.aaenm" <- function(r, ...) { a <- 7424; k <- a * r^(-6) k[k>1500]=1500 return(k) } ff.aaenm2 <- function(r, atom.id, pdb, ...) { # all non-covalent interactions a <- 7424; k <- a * r^(-6) # intra-residue res <- paste(pdb$atom$resno, pdb$atom$chain, pdb$atom$insert, sep="-") myres <- res[atom.id] intra.inds <- which(res == myres) k[ intra.inds ] = 200 covalent.inds <- which(r < 2) k[ r < 2 ] = 1500 k[k>1500]=1500 return(k) } ## Coarse-grained ENMs #"ff.aaanm" <- function(r, cutoff=7, gamma=1, ...) { # ifelse( r>cutoff, 0, gamma ) #} "ff.anm" <- function(r, cutoff=15, gamma=1, ...) { ifelse( r>cutoff, 0, gamma ) } "ff.pfanm" <- function(r, cutoff=NULL, ...) { if(is.null(cutoff)) return(r^(-2)) else ifelse( r>cutoff, 0, r^(-2)) } "ff.calpha" <- function(r, rmin=2.9, ...) { ## MMTK Units: kJ / mol / nm^2 ##a <- 128; b <- 8.6 * 10^5; c <- 2.39 * 10^5; ## Bio3D Units: kJ / mol / A^2 ## In case of unreasonable CA-CA distance if(!is.null(rmin)) r[(r 0), which(inds.k12 <= natoms)) ] ks[inds.k12] <- 43.52 ks[atom.id]=0 ## should in principle not get this far ... if(any(is.na(ks))) { stop(paste("Incompatible protein sequence:\n", " Paramters only exists for standard amino acid residues")) } ## sdENM FF is in arbitrary units ## The values given were arbitrarily normalized, so that ## the average kappa (over all amino acid pairs) is equal to 1, at d = 6 Ang. ## scale to kJ / mol / A^2 range: ks <- ks * 0.0083144621 * 300 * 10 return(ks) } "ff.reach" <- function(r, atom.id, ...) { natoms <- length(r) ## units in kJ/mol/A^2 ## Table 1 - line DHFR #af <- 6770; as <- 2.08; #bf <- 0.951; bs <- 0.0589; #k12 <- 860; k13 <- 26.7; k14 <- 17; ## by correspondance with Kei (29 aug'13) ## line 38, page 1644, 2008 Biophysical J af <- 4810; as <- 1.7; bf <- 0.872; bs <- 0.068; ## avgering over table 1 k12 <- 866; k13 <- 28.7; k14 <- 24.16667; ## Calculate default interactions ks <- (af * exp(-bf*r)) + (as * exp(-bs*r)) ## Differentiate between k12, k13, k14 inds.k12 <- c(atom.id -1, atom.id+1) inds.k13 <- c(atom.id -2, atom.id+2) inds.k14 <- c(atom.id -3, atom.id+3) inds.k12 <- inds.k12[ intersect(which(inds.k12 > 0), which(inds.k12 <= natoms)) ] inds.k13 <- inds.k13[ intersect(which(inds.k13 > 0), which(inds.k13 <= natoms)) ] inds.k14 <- inds.k14[ intersect(which(inds.k14 > 0), which(inds.k14 <= natoms)) ] ks[inds.k12] <- k12; ks[inds.k13] <- k13; ks[inds.k14] <- k14; return(ks) } "load.enmff" <- function(ff='calpha') { ## Bahar "ANM"-ff if (ff=="anm") { ff <- ff.anm } ## Yang Song and Jernigan (PNAS 2009) else if (ff=="pfanm") { ff <- ff.pfanm } ## Hinsen "C-alpha"-ff else if (ff=="calpha") { ff <- ff.calpha } ## sdENM else if(ff=="sdenm") { ff <- ff.sdenm } ## REACH else if(ff=="reach") { ff <- ff.reach } ## All-atom ENM else if(ff=="aaenm") { ff <- ff.aaenm } ## All-atom ENM else if(ff=="aaenm2") { ff <- ff.aaenm2 } else { stop("force field not defined") } return(ff) } bio3d/R/amsm.xyz.R0000644000176200001440000000611514707230356013376 0ustar liggesusers## class DistanceCalculator --> calculate() "amsm.xyz" <- function(xyz, ncore=NULL) { if(!is.matrix(xyz)) stop("'xyz' must be a trajectory matrix") natoms <- ncol(xyz) / 3 atom.pairs <- natoms * (natoms -1) / 2 ## Distance Calculator ## returns a list of 4x4 matrices M <- .amsm.distCalc(xyz, ncore=ncore) ## we use 'list' in this version of the code if(inherits(M, "list")) Mlist <- TRUE else Mlist <- FALSE ## assign the atom mov. sim. matrix matrixCorr <- matrix(0, nrow=natoms, ncol=natoms) maxEigenVal <- 0 ## solve eigenvalue problems ij <- combn(natoms,2) for ( i in 1:atom.pairs ) { atom.inds <- ij[,i] if(Mlist) { ev <- eigen(M[[i]]) maxDist <- M[[i]][1,1] } else { ev <- eigen(M[,,i]) maxDist <- M[1,1,i] } maxEigenVal <- max(ev$values) hei <- 1 - (sqrt(maxDist / maxEigenVal)) matrixCorr[atom.inds[1], atom.inds[2]] <- hei matrixCorr[atom.inds[2], atom.inds[1]] <- hei ##matrixCorr[atom.inds[1], atom.inds[2]] <- maxDist ##matrixCorr[atom.inds[2], atom.inds[1]] <- maxDist ##if(max(ev$values)>maxEigenVal) ## maxEigenVal <- max(ev$values) } ##matrixCorr <- 1 - sqrt(matrixCorr / maxEigenVal) diag(matrixCorr) <- 1 return(matrixCorr) } ## class DistanceCalculator --> DistanceCalculator() ".amsm.distCalc" <- function(xyz, ncore=NULL) { if(!is.matrix(xyz)) stop("'xyz' must be a trajectory matrix") ## Parallelized by package 'parallel' ncore <- setup.ncore(ncore, bigmem = FALSE) ## used for vectProdSum vectPS <- function(xyz.ab) { a <- xyz.ab[1:3]; b <- xyz.ab[4:6]; m <- (a[2] * b[3]) - (a[3] * b[2]) n <- (a[3] * b[1]) - (a[1] * b[3]) o <- (a[1] * b[2]) - (a[2] * b[1]) return(c(m,n,o)) } ## used for matrixPSum matrPS <- function(xyz.ab) { a <- xyz.ab[1:3]; b <- xyz.ab[4:6]; m <- a[1] * b + b[1] * a n <- a[2] * b + b[2] * a o <- a[3] * b + b[3] * a return(c(m,n,o)) } for.atompair2 <- function(i, xyz, ij, M) { ij <- ij[,i] inds <- rep(ij*3,each=3) - c(2,1,0) xyz.ab <- xyz[, inds] vectProdSum <- rowSums(apply(xyz.ab, 1, vectPS)) matrixPSum <- rowSums(apply(xyz.ab, 1, matrPS)) suma <- sum((xyz.ab[,1:3]-xyz.ab[,4:6])^2) ##M <- matrix(0, ncol=4, nrow=4) M[1,1] = suma M[1,2] = vectProdSum[1]; M[1,3] = vectProdSum[2]; M[1,4] = vectProdSum[3]; M[2,2] = matrixPSum[1]; M[2,3] = matrixPSum[2]; M[2,4] = matrixPSum[3]; M[3,3] = matrixPSum[5]; M[3,4] = matrixPSum[6]; M[4,4] = matrixPSum[9]; ## symmerty M[2,1] = M[1,2] M[3,1] = M[1,3] M[4,1] = M[1,4] M[3,2] = M[2,3] M[4,2] = M[2,4] M[4,3] = M[3,4] return(M) } ##atom.pairs <- natoms * (natoms -1) / 2 natoms <- ncol(xyz) / 3 M <- matrix(0, ncol=4, nrow=4) ij <- combn(natoms,2) if(ncore==1) { all.Ms <- lapply(1:ncol(ij), for.atompair2, xyz, ij, M) } else { all.Ms <- mclapply(1:ncol(ij), for.atompair2, xyz, ij, M, mc.cores=ncore) } return(all.Ms) } bio3d/R/dm.xyz.R0000644000176200001440000000655314707230356013047 0ustar liggesusersdm.xyz <- function(xyz, grpby=NULL, scut=NULL, mask.lower=TRUE, gc.first=FALSE, ncore=1, ...) { ## Parallelized by parallel package ncore <- setup.ncore(ncore, bigmem = FALSE) if(ncore > 1) { mcparallel <- get("mcparallel", envir = getNamespace("parallel")) mccollect <- get("mccollect", envir = getNamespace("parallel")) } ## function for multicore calculation of dmats calcdm <- function(r.inds, core.id, xyz) { j <- 1 out <- vector("list", length=length(r.inds)) for(i in r.inds) { if(gc.first) gc() dmi <- .dm.xyz1(xyz[i,], grpby=grpby, scut=scut, mask.lower=mask.lower) out[[j]] <- dmi j <- j+1 .update.pb(pb) } return(out) } xyz <- as.xyz(xyz) if(nrow(xyz)>1) { ## dimensions of final array d3 <- nrow(xyz) if(!is.null(grpby)) d1 <- length(unique(grpby)) else d1 <- ncol(xyz)/3 dms <- array(data=0.00, dim=c(d1, d1, d3)) ## multicore setup if(ncore>1) { jobs <- list() } ## run calcdm() for each core pb <- .init.pb(ncore, min=0, max=nrow(xyz)) core.ids <- sort(rep(1:ncore, length.out=d3)) for( i in 1:ncore ) { r.inds <- which(core.ids==i) if(ncore>1) { q <- mcparallel(calcdm(r.inds, i, xyz)) jobs[[i]] <- q } else { dm.list <- calcdm(r.inds, i, xyz) } } .close.pb(pb) ## Collect all jobs if(ncore>1) res <- mccollect(jobs, wait=TRUE) else res <- list(dm.list) ## list to array i <- 1 for ( job in res ) { for(mat in job) { dms[,,i] <- mat i <- i+1 } } } else { dms <- .dm.xyz1(xyz, grpby=grpby, scut=scut, mask.lower=mask.lower) } class(dms) <- 'dmat' return(dms) } .dm.xyz1 <- function(xyz, grpby=NULL, scut=NULL, mask.lower=TRUE) { ##-- New distance matrix function with 'grpby' option ## dm(pdb$xyz, grpby=pdb$atom[,"resno"], scut=3) xyz=as.xyz(xyz) if(dim(xyz)[1L]>1) { warning("multiple frames detected - using only the first row in xyz matrix") xyz = xyz[1,, drop=FALSE] } xyz=as.vector(xyz) ##- Full Distance matrix (could use 'dm' or 'dist.xyz') d <- as.matrix(dist(matrix(xyz, ncol = 3, byrow = TRUE))) ##- Mask lower.tri if( mask.lower ) d[lower.tri(d)] = NA ##- Mask concetive atoms if( is.null(grpby) ) { if (!is.null(scut)) { d[diag.ind(d, n = scut)] = NA if(!mask.lower) d[lower.tri(d)] = t(d)[lower.tri(d)] } return(d) } else { ##- Group by concetive numbers in 'grpby' if( length(xyz) != (length(grpby)*3) ) stop("dimension miss-match in 'xyz' and 'grpby', check lengths") ##- Bounds of 'grpby' numbers inds <- bounds(grpby, dup.inds=TRUE) nres <- nrow(inds) ##- Per-residue matrix m <- matrix(, ncol=nres, nrow=nres) ij <- pairwise(nres) ## Ignore concetive groups (residues) if (!is.null(scut)) ij <- ij[ij[,2]-ij[,1] > (scut-1),] ##- Min per residue for(k in 1 : nrow(ij) ) { t.d <- d[ (inds[ij[k,1],"start"]:inds[ij[k,1],"end"]), (inds[ij[k,2],"start"]:inds[ij[k,2],"end"]) ] if(!all(is.na(t.d))) m[ij[k,1],ij[k,2]] <- min(t.d, na.rm=TRUE) else m[ij[k,1],ij[k,2]] <- NA } if( !mask.lower ) m[lower.tri(m)] = t(m)[lower.tri(m)] return(m) } } bio3d/R/filter.rmsd.R0000644000176200001440000000237714707230356014047 0ustar liggesusersfilter.rmsd <- function(xyz=NULL, rmsd.mat=NULL, cutoff=0.5, fit=TRUE, verbose=TRUE, inds=NULL, method="complete", ...) { # k<-filter.rmsd(xyz=pdbs$xyz, cutoff=0.5) # k<-filter.rmsd(rmsd.mat=k$rmsd.mat, cutoff=2.0) if(is.null(rmsd.mat)) { if(is.null(xyz)) stop("Must provide either a 'xyz' matrix or RMSD matrix 'rmsd.mat'") if(is.list(xyz)) xyz=xyz$xyz if(is.null(inds)) { gaps <- gap.inspect(xyz) inds <- gaps$f.inds } rmsd.mat <- rmsd( xyz, a.inds=inds, fit=fit, ... ) } r.d <- as.dist(rmsd.mat) tree <- hclust(r.d, method=method) h <- cutoff n <- nrow(tree$merge) + 1 k <- integer(length(h)) k <- n + 1 - apply(outer(c(tree$height, Inf), h, ">"),2, which.max) if(verbose) cat("filter.rmsd(): N clusters @ cutoff = ", k, "\n") #ans <- as.vector(.Call("R_cutree", tree$merge, k, PACKAGE = "stats")) ans <- as.vector(cutree(tree, k)) cluster.rep <- NULL for(i in 1:k) { ind <- which(ans==i) if (length(ind) == 1) { cluster.rep <- c(cluster.rep, ind) } else { cluster.rep <- c(cluster.rep, ind[ which.min( colSums(rmsd.mat[ind,ind]) ) ]) } } return(list(ind=cluster.rep, tree=tree, rmsd.mat=rmsd.mat)) } bio3d/R/atom.select.pdbs.R0000644000176200001440000000446414707230356014762 0ustar liggesusersatom.select.pdbs <- function(pdbs, string = NULL, resno = NULL, chain = NULL, resid = NULL, operator="AND", inverse = FALSE, value = FALSE, verbose=FALSE, ...) { ## verbose message output if(verbose) cat("\n") .verboseout <- function(M, type) { cat(" .. ", sprintf("%08s", length(which(M))), " atom(s) from '", type, "' selection \n", sep="") } ## combine logical vectors .combinelv <- function(L, M, operator) { if(operator=="AND") M <- L & M if(operator=="OR") M <- L | M return(M) } cl <- match.call() if(operator=="AND") M <- rep(TRUE, ncol(pdbs$ali)) if(operator=="OR") M <- rep(FALSE, nrow(pdbs$ali)) if(!is.null(string)) { gaps <- gap.inspect(pdbs$ali) M <- switch(string, all = M <- rep(TRUE, ncol(pdbs$ali)), gap = apply(pdbs$ali, 2, function(x) any(x %in% "-")), gaps = apply(pdbs$ali, 2, function(x) any(x %in% "-")), nongap = !apply(pdbs$ali, 2, function(x) any(x %in% "-")), allgap = apply(pdbs$ali, 2, function(x) all(x %in% "-")) ) if(verbose) { .verboseout(M, 'string') } } if(!is.null(resno)) { L <- apply(pdbs$resno, 2, function(x) any(x %in% resno)) if(verbose) .verboseout(L, 'resno') M <- .combinelv(L, M, operator) } if(!is.null(chain)) { L <- apply(pdbs$chain, 2, function(x) any(x %in% chain)) if(verbose) .verboseout(L, 'chain') M <- .combinelv(L, M, operator) } if(!is.null(resid)) { L <- apply(pdbs$resid, 2, function(x) any(x %in% resid)) if(verbose) .verboseout(L, 'resid') M <- .combinelv(L, M, operator) } if(inverse) { if(verbose) { cat(" ..", sprintf("%08s", length(which(!M))), "atom(s) in inversed selection \n") } sele <- as.select(which(!M)) } else sele <- as.select(which(M)) sele$call <- cl if(verbose) cat("\n") if(value) return(trim(pdbs, col.inds=sele$atom)) else return(sele) } bio3d/R/print.fasta.R0000644000176200001440000001147614707230357014050 0ustar liggesusersprint.fasta <- function(x, alignment=TRUE, ...) { if ( (inherits(x, "fasta") | inherits(x, "pdbs")) ){ id <- x$id ali <- as.matrix(x$ali) call <- paste(deparse(x$call), sep = "\n", collapse = "\n") } else { ali <- as.matrix(x) id <- rownames(ali) call <- NA } if(inherits(x, "pdbs")) row.desc <- "structures" else row.desc <- "sequences" cn <- class(x) nstruct <- length(id) dims <- dim(ali) gaps <- gap.inspect(ali) dims.nongap <- dim(ali[, gaps$f.inds, drop=FALSE]) dims.gap <- dim(ali[, gaps$t.inds, drop=FALSE]) if(alignment) .print.fasta.ali(ali, id=id, ...) #width=width, #col.inds=col.inds, numbers=numbers) else cat("\n") if(!is.na(call)) { cat("Call:\n ", call, "\n\n", sep = "") cat("Class:\n ", paste(cn, collapse=", "), "\n\n", sep = "") } ##cat("Number of ", row.desc, ":\n ", nstruct, ## "\n\n", sep="") cat("Alignment dimensions:\n ", dims[1L], " sequence rows; ", dims[2L], " position columns", " (", dims.nongap[2L], " non-gap, ", dims.gap[2L], " gap) ", "\n", sep="") cat("\n") ## Attribute summary j <- paste(attributes(x)$names, collapse = ", ") cat(strwrap(paste(" + attr:",j,"\n"),width=60, exdent=8), sep="\n") } .print.fasta.ali <- function(x, ##limit.out=NULL, width=NULL, col.inds=NULL, numbers=TRUE, conservation=TRUE, ...) { ##-- Print sequence alignment in a nice formated way ## source("print.aln.R") ## x<-read.fasta("poo.fa") ## print.aln(x) ## ## file <- system.file("examples/kif1a.fa",package="bio3d") ## aln <- read.fasta(file) ## print.aln(aln, width=40) ## print.aln(aln, width=60) ## print.aln(aln, col=c(10,12,14,22,90:100), numbers=F) ## ToDo: ## Does not work if alignment contains only one position (one seq?) ## y=x; y$ali=x$ali[,1] if ( (inherits(x, "fasta") | inherits(x, "pdbs")) ){ id <- x$id ali <- as.matrix(x$ali) } else { ali <- as.matrix(x) id <- rownames(x) } ## remove any NA values ali[is.na(ali)] <- "-" ##- Trim to 'col.inds' if provided if(!is.null(col.inds)) { ali <- ali[,col.inds, drop=FALSE] } if(nrow(ali)<2) conservation <- FALSE ##- conservation cons <- NULL if(conservation) { tmp1 <- conserv(ali, method="entropy10") tmp2 <- conserv(ali, method="identity") cons <- rep(" ", ncol(ali)) cons[ tmp1==1 ] <- "^" cons[ tmp2==1 ] <- "*" } ## Check and truncate possilbe long ids if(any(nchar(id) > 20)) { id <- basename(id) if(any(nchar(id) > 17)) { id <- substr(id,1,10) } id <-paste0("[Truncated_Name:", 1:length(id),"]",id) } ##- Format sequence identifiers ids.nchar <- max(nchar(id))+3 ## with a gap of 3 spaces btwn id and sequence ids.format <- paste0("%-",ids.nchar,"s") ids <- sprintf(ids.format, id) ## Format for annotation printing (see below) pad.format <- paste0("%+",(ids.nchar+1),"s") ## Format for conservation annotation printing (see below) pad.format2 <- paste0("%+",(ids.nchar),"s") ##- Scale 'width' of output if not specified in input call tput.col <- 85 ## typical terminal width from system("tput cols") if(is.null(width)) { width <- tput.col - ids.nchar - 4 } ## Make sure we end on a 10 block width <- floor(width/10)*10 ##- Work out sequence block widths nseq <- length(ids) nres <- ncol(ali) block.start <- seq(1, nres, by=width) if(nres < width) { block.end <- nres } else { block.end <- unique(c( seq(width, nres, by=width), nres)) } nblocks <- length(block.start) block.annot <- rep(" ", width) block.annot[ c(1,seq(10, width, by=10)) ] = "." blocks <- matrix(NA, ncol=nblocks, nrow=nseq) for(i in 1:nblocks) { ##- Sequence block positions <- block.start[i]:block.end[i] blocks[,i] <- paste0(ids, apply(ali[, positions, drop=FALSE], 1, paste, collapse="")) ##-- Formated Printing of annotations (numbers & ticks) and sequence blocks if(numbers) { ##- Annotations for each sequence block annot = block.annot[1:length(positions)] annot[length(annot)] = block.end[i] annot[1] = sprintf(pad.format, block.start[i]) cat(paste(annot, collapse=""),"\n") } ##- Sequence block cat(blocks[,i], sep="\n") ##- Formated Printing of conservation (stars for conserved columns) if(conservation) { annot2 <- c("", cons[positions]) annot2[1] = sprintf(pad.format2, "") cat(paste(annot2, collapse=""),"\n") } ##- Ticks + numbers again if(numbers) { cat(paste(annot, collapse=""),"\n\n") } else{ cat("\n") } } ##invisible(blocks) ## Can be useful for plot.fasta() later!! } bio3d/R/plot.rmsip.R0000644000176200001440000000072414707230357013720 0ustar liggesusers"plot.rmsip" <- function(x, xlab=NULL, ylab=NULL, col=gray(50:0/50), zlim=c(0,1), ...) { ##opar <- par(no.readonly = TRUE) ##on.exit(par(opar)) if(is.null(xlab)) xlab <- "a" if(is.null(ylab)) ylab <- "b" image(1:ncol(x$overlap), 1:nrow(x$overlap), x$overlap, col=col, zlim=zlim, xlab=xlab, ylab=ylab, ...) mtext(paste("RMSIP:", round(x$rmsip, 2)), side=3, line=0.5, at=0.5, adj=0, ...) } bio3d/R/pdb.pfam.R0000644000176200001440000000520414707230356013275 0ustar liggesuserspdb.pfam <- function(ids, best.only=TRUE, compact=TRUE) { ##-- Annotate PDBs with PFAM hits from RCSB PDB ## Input 'pdbid' can be a vector of ids with chainID: ## ## pdb.pfam(c("1bg2", "2kin", "4q21", "3kin_A")) ## ## There are often multiple hits to a structure. The option ## 'best.only' will keep the lowest eValue one only. ## oops <- requireNamespace("XML", quietly = TRUE) if(!oops) { stop("Please install the XML package from CRAN") } ##- 'ids' may optionally contain chain ID (e.g '3kin_A') pdbid <- ids ## keep a copy of input 'ids' for later reporting ids <- toupper(ids) chains <- rep(NA, length(ids)) standard.ids <- nchar(ids) == 4 if(any(!standard.ids)) { ids[!standard.ids] <- sub("\\.pdb$","", basename(ids[!standard.ids])) chains[!standard.ids] <- substr(ids[!standard.ids],6,6) ids[!standard.ids] <- substr(ids[!standard.ids],1,4) } url <- paste0("http://www.rcsb.org/pdb/rest/hmmer?structureId=", paste0(ids, collapse=",")) xl <- try(XML::xmlToList(url), silent=TRUE) ##- Exit with NULL if PFAM annotation page not found (cant load) if(!is.list(xl)) { return(NULL) } ## Else process and order data.frame df <- data.frame(matrix(unlist(xl), ncol=8, byrow=TRUE), stringsAsFactors=FALSE) colnames(df) <- names(xl[1]$pfamHit) df <- df[order(df$eValue),] ## Add ID in from of 'pdbID_chainID' and PFAMname_PFAMacc df$ID = paste(df$structureId, df$chainId,sep="_") df$PFAM = paste0(df$pfamName," (",df$pfamAcc,")") ##- Optionally keep top hit for each structure only if(best.only) { df <- df[!duplicated(df$ID),] } ##- If chain Id was found in input keep only entries for that chain ind <- !is.na(chains) if(any(ind)) { ## Exclude entries that match PDBID but not PDBID_chainID filter.id1 <- ids[ind] filter.id2 <- paste(ids[ind], chains[ind],sep="_") filter.ind1 <- which(df$structureId %in% filter.id1) filter.ind2 <- which(df$ID %in% filter.id2) filter.ind <- filter.ind1[!filter.ind1 %in% filter.ind2] if(length(filter.ind) > 0) { df <- df[-filter.ind,] } } ##- Check if any 'pdbids' were not found and add a blank row to df missing <- !toupper(ids) %in% df$structureId if( any(missing) ){ warning(paste("PFAM annotation not found for pdbid(s):", paste(pdbid[missing], collapse=", "))) blank <- matrix(rep(NA, ncol(df)*sum(missing)), nrow=sum(missing)) colnames(blank) <- colnames(df) blank[,"ID"] <- toupper(pdbid[missing]) df <- rbind(df,blank) } ## Optionally rtn a subset of data cols only if(compact) { return(df[,c("ID","PFAM","pfamDesc","eValue")]) } else { return(df) } } bio3d/R/read.pqr.R0000644000176200001440000002003614707230357013323 0ustar liggesusers`read.pqr` <- function (file, maxlines=-1, multi=FALSE, rm.insert=FALSE, rm.alt=TRUE, verbose=TRUE) { if(missing(file)) { stop("read.pqr: please specify a PQR 'file' for reading") } if(!is.numeric(maxlines)) { stop("read.pqr: 'maxlines' must be numeric") } if(!is.logical(multi)) { stop("read.pqr: 'multi' must be logical TRUE/FALSE") } cl <- match.call() ## PDB FORMAT v3.3: colpos, datatype, name, description atom.format <- matrix(c(6, 'character', "type", # type(ATOM) 5, 'numeric', "eleno", # atom_no -1, NA, NA, # (blank) 4, 'character', "elety", # atom_ty 1, 'character', "alt", # alt_loc 4, 'character', "resid", # res_na 1, 'character', "chain", # chain_id 4, 'numeric', "resno", # res_no 1, 'character', "insert", # ins_code -3, NA, NA, # (blank) 8, 'numeric', "x", # x 8, 'numeric', "y", # y 8, 'numeric', "z", # z 8, 'numeric', "o", # o ### 6 for pdb 8, 'numeric', "b", # b ### 6 for pdb -6, NA, NA, # (blank) 4, 'character', "segid", # seg_id 2, 'character', "elesy", # element symbol 2, 'character', "charge" # atom_charge (should be 'numeric'] ), ncol=3, byrow=TRUE, dimnames = list(c(1:19), c("widths","what","name")) ) trim <- function(s) { ##- Remove leading and trailing spaces from character strings s <- sub("^ +", "", s) s <- sub(" +$", "", s) s[(s=="")]<-"" s } split.fields <- function(x) { ##- Split a character string for data.frame fwf reading ## First splits a string 'x' according to 'first' and 'last' ## then re-combines to new string with ";" as separator x <- trim( substring(x, first, last) ) paste(x,collapse=";") } is.character0 <- function(x){length(x)==0 & is.character(x)} ##- Find first and last (substr) positions for each field widths <- as.numeric(atom.format[,"widths"]) # fixed-width spec drop.ind <- (widths < 0) # cols to ignore (i.e. -ve) widths <- abs(widths) # absolute vales for later st <- c(1, 1 + cumsum( widths )) first <- st[-length(st)][!drop.ind] # substr start last <- cumsum( widths )[!drop.ind] # substr end names(first) = na.omit(atom.format[,"name"]) names(last) = names(first) ##- Read 'n' lines of PDB file raw.lines <- readLines(file, n = maxlines) type <- substring(raw.lines, first["type"], last["type"]) ##- Check number of END/ENDMDL records raw.end <- sort(c(which(type == "END"), which(type == "ENDMDL"))) ## Check if we want to store multiple model data if (length(raw.end) > 1) { print("PDB has multiple END/ENDMDL records") if (!multi) { print("multi=FALSE: taking first record only") } else { print("multi=TRUE: 'read.dcd/read.ncdf' will be quicker!") raw.lines.multi <- raw.lines type.multi <- type } raw.lines <- raw.lines[ (1:raw.end[1]) ] type <- type[ (1:raw.end[1]) ] } ##- Check for 'n' smaller than total lines in PDB file if ( length(raw.end) !=1 ) { if (length(raw.lines) == maxlines) { print("You may need to increase 'maxlines'") print("check you have all data in $atom") } } ##- Split input lines by record type raw.header <- raw.lines[type == "HEADER"] raw.seqres <- raw.lines[type == "SEQRES"] raw.helix <- raw.lines[type == "HELIX "] raw.sheet <- raw.lines[type == "SHEET "] raw.atom <- raw.lines[type %in% c("ATOM ","HETATM")] if (verbose) { if (!is.character0(raw.header)) { cat(" ", raw.header, "\n") } } ## Edit from Baoqiang Cao Nov 29, 2009 ## Old version: ## seqres <- unlist(strsplit( trim(substring(raw.seqres,19,80))," +")) ## New version seqres <- unlist(strsplit( trim(substring(raw.seqres,19,80))," +")) if(!is.null(seqres)) { seqres.ch <- substring(raw.seqres, 12, 12) seqres.ln <- substring(raw.seqres, 13, 17) seqres.in <- ( !duplicated(seqres.ch) ) names(seqres) <- rep(seqres.ch[seqres.in], times=seqres.ln[seqres.in]) } ## End Edit from Baoqiang: ##- Secondary structure helix <- list(start = as.numeric(substring(raw.helix,22,25)), end = as.numeric(substring(raw.helix,34,37)), chain = trim(substring(raw.helix,20,20)), type = trim(substring(raw.helix,39,40))) sheet <- list(start = as.numeric(substring(raw.sheet,23,26)), end = as.numeric(substring(raw.sheet,34,37)), chain = trim(substring(raw.sheet,22,22)), sense = trim(substring(raw.sheet,39,40))) ## 2014-04-23 ## Update to use single data.frame for ATOM and HETATM records ## file="2RGF"; multi=TRUE; ## file="./4q21.pdb"; maxlines=-1; multi=FALSE; ## rm.insert=FALSE; rm.alt=TRUE; het2atom=FALSE; verbose=TRUE atom <- read.table(text=sapply(raw.atom, split.fields), stringsAsFactors=FALSE, sep=";", quote='', colClasses=unname(atom.format[!drop.ind,"what"]), col.names=atom.format[!drop.ind,"name"], comment.char="", na.strings="") ##-- End data.frame update ##- Coordinates only object ###xyz.models <- c(t(atom[,c("x","y","z")])) xyz.models <- matrix(as.numeric(c(t(atom[,c("x","y","z")]))), nrow=1) ##- Multi-model coordinate extraction if (length(raw.end) > 1 && multi) { raw.atom <- raw.lines.multi[ type.multi %in% c("ATOM ","HETATM") ] if( (length(raw.atom)/length(raw.end)) ==nrow(atom) ){ ## Only work with models with the same number of atoms) tmp.xyz=( rbind( substr(raw.atom, first["x"],last["x"]), substr(raw.atom, first["y"],last["y"]), substr(raw.atom, first["z"],last["z"]) ) ) ## Extract coords to nrow/frame * ncol/xyz matrix xyz.models <- matrix( as.numeric(tmp.xyz), ncol=nrow(atom)*3, nrow=length(raw.end), byrow=TRUE) rownames(xyz.models) = NULL } else { warning(paste("Unequal number of atoms in multi-model records:", file)) } rm(raw.lines.multi) } rm(raw.lines, raw.atom) ##- Possibly remove 'Alt records' (m[,"alt"] != NA) if (rm.alt) { if ( sum( !is.na(atom[,"alt"]) ) > 0 ) { first.alt <- sort( unique(na.omit(atom[,"alt"])) )[1] cat(paste(" PDB has ALT records, taking",first.alt,"only, rm.alt=TRUE\n")) alt.inds <- which( (atom[,"alt"] != first.alt) ) # take first alt only if(length(alt.inds)>0) { atom <- atom[-alt.inds,] xyz.models <- xyz.models[ ,-atom2xyz(alt.inds), drop=FALSE ] } } } ##- Possibly remove 'Insert records' if (rm.insert) { if ( sum( !is.na(atom[,"insert"]) ) > 0 ) { cat(" PDB has INSERT records, removing, rm.insert=TRUE\n") insert.inds <- which(!is.na(atom[,"insert"])) # rm insert positions atom <- atom[-insert.inds,] xyz.models <- xyz.models[ ,-atom2xyz(insert.inds), drop=FALSE ] } } ##- Vector of Calpha positions ## check for calcium resid and restrict to ATOM records only # calpha = (atom[,"elety"]=="CA") & (atom[,"resid"]!="CA") & (atom[,"type"]=="ATOM") output<-list(atom=atom, #het=atom[atom$type=="HETATM",], helix=helix, sheet=sheet, seqres=seqres, xyz=as.xyz(xyz.models), calpha = NULL, call=cl) class(output) <- c("pdb", "sse") ca.inds <- atom.select.pdb(output, string="calpha", verbose=FALSE) output$calpha <- seq(1, nrow(atom)) %in% ca.inds$atom return(output) } bio3d/R/plot.cna.R0000644000176200001440000001305314707230356013325 0ustar liggesusersplot.ecna <- function(x, ...) { if(!inherits(x, "ecna")) { stop("The input 'x' must be an object of class 'ecna'.") } n <- length(x) if(n == 1) { return( plot(x[[1]], ...) ) } if(n > 9) { stop("Plotting for more than 9 networks is not supported.") } opar <- par(no.readonly = TRUE) on.exit(par(opar)) if(n<=6) { # N x 2 nr <- floor( (n-1) / 2 ) + 1 layout(matrix(1:(nr*2), ncol=2, byrow=TRUE), respect = TRUE) } else { # 3 x 3 layout(matrix(1:9, ncol=3, byrow=TRUE), respect = TRUE) } par(mar=c(0,0,2,0)) invisible( sapply(1:n, function(i) { x <- x[[i]] arg.default <- list(main=paste("Network", i)) arg <- .arg.filter(arg.default, FUN=NULL, ...) do.call("plot", c(list(x=x), arg)) }) ) } plot.cna <- function(x, pdb=NULL, weights=NULL, vertex.size=NULL, layout=NULL, col=NULL, full=FALSE, scale = TRUE, color.edge = FALSE, interactive = FALSE, ...) { ##- Function for plotting cna networks the way we like them. ## Returns the plot layout coordinates silently. These can ## be passed to identify.cna() ## ##- Examples: ## plot.cna(net) ## plot.cna(net, pdb) ## plot.cna(net, layout=layout.cna(net,pdb)) ## plot.cna(net, layout=layout.cna(net,pdb, full=TRUE), full=TRUE) ## plot.cna(net, full=T, layout=layout.cna(net,pdb, full=T), vertex.size=3, weights=1, vertex.label=NA) ## ##- Other options: ## \dots can contain all ?igraph.plotting options, including: ## col=vmd_colors(), ## mark.groups=list() - A list of vertex id vectors ## mark.col=vmd_colors(alpha=0.3), ## mark.border=vmd_colors() ## etc... see ?plot.igraph ## AND ## vertex.size: Node sizes: V(x$network)$size ## vertex.color: Node colors: V(x$network)$color ## vertex.label: Node labels: V(x$network)$name - use NA to omit ## edge.width: Edge weights: E(x$network)$weight ## edge.color: Edge colors: E(x$network)$color ## (also vertex.label.color, vertex.label.cex etc. ## see ?igraph.plotting) ## ## Check for presence of igraph package oops <- requireNamespace("igraph", quietly = TRUE) if (!oops) { stop("igraph package missing: Please install, see: ?install.packages") } # if(color.edge) { # oops <- require(classInt) # if (!oops) { # warning("package classInt missing: color.edge is set to FALSE. # To make color.edge work, please install the missing package. See: ?install.packages") # color.edge = FALSE # } # } ##- Determine which network to plot along with node size if(full) { ## Plot the 'full' all-atom network y <- x$network if(is.null(vertex.size)) { ## Scale up the node size to something visible if(max(igraph::V(y)$size) < 10) { igraph::V(y)$size = igraph::V(y)$size + 13 } } } else { ## Plot the 'coarse-grained' community network y <- x$community.network ## here we will leave the node size as is } ##- Determine edge weights and scale values for plotting if(is.null(weights)){ ## Use weights defined in network weights <- igraph::E(y)$weight if(is.null(x$call$minus.log)){ ## If '$call$mins.log' is NULL => -log option was used in cna() ## so we we will revert back with exponential here weights <- exp(-weights) } else{ if(x$call$minus.log){ ## Again here we have 'minus.log=TRUE' weights <- exp(-weights) } } ## Lets scale the weights to lie between 1 and 5 # weights <- (weights - min(weights)) / max(weights - min(weights)) * (1 - 5) + 5 if(scale && (length(weights)>1)) weights <- (weights - min(weights)) / max(weights - min(weights)) * 4 + 1 else weights <- 10 * weights } ##- Obtain the plot layout coords if(!is.null(pdb) && is.null(layout)) { cat("Obtaining layout from PDB structure\n") layout = layout.cna(x, pdb, full=full) } if(is.null(pdb) && is.null(layout)) { cat("Obtaining estimated layout with fruchterman.reingold\n") layout <- igraph::layout.fruchterman.reingold(y, weights=weights) } if(dim(layout)[2] != 2){ stop("Input 'layout' must be an Nx2 matrix, where N is the number of communities") } if(color.edge) { # vec2color <- function(vec, pal=c("blue", "green", "red"), n=10) { # ##-- Define a color scale from a numeric vector # return( findColours(classIntervals(vec, n=n, style="equal"), pal) ) # } vec2color <- function(vec, pal=c("blue", "green", "red"), n=30) { col <- colorRampPalette(pal)(n) vec.cut <- cut(vec, seq(min(vec), max(vec), length.out=n), include.lowest = TRUE) levels(vec.cut) <- 1:length(col) return( col[vec.cut] ) } colors <- vec2color(weights) if(interactive) igraph::tkplot(y, edge.width=weights, edge.color = colors, layout=layout, vertex.color=col, vertex.size=vertex.size, ...) else igraph::plot.igraph(y, edge.width=weights, edge.color = colors, layout=layout, vertex.color=col, vertex.size=vertex.size, ...) } else { if(interactive) igraph::tkplot(y, edge.width=weights, layout=layout, vertex.color=col, vertex.size=vertex.size, ...) else igraph::plot.igraph(y, edge.width=weights, layout=layout, vertex.color=col, vertex.size=vertex.size, ...) } ## Silently return plot coordinates #class(layout) = "cna" layout <- layout } bio3d/R/entropy.R0000644000176200001440000000421614707230356013310 0ustar liggesusers"entropy" <- function(alignment) { # Calculate the Shannon entropy score for each position # in an alignment if(is.list(alignment)) alignment=alignment$ali aa <- c("V","I","L","M", "F","W","Y", "S","T", "N","Q", "H","K","R", "D","E", "A","G", "P", "C", "-","X") composition <- table(alignment) unk <- composition[!names( composition ) %in% aa] if(length(unk) > 0) { warning(paste("non standard residue code:",names(unk),"mapped to X\n ")) for(i in 1:length(unk)) alignment[alignment==names(unk[i])]="X" } len <- ncol(alignment) freq.22 <- matrix(0, nrow = 22, ncol = ncol(alignment), dimnames = list(aa,seq(1:len))) freq.10 <- matrix(0, nrow = 10, ncol = ncol(alignment), dimnames = list(c(1:10),c(1:len))) for (i in 1:len) { freq.22[names(summary((as.factor(toupper(alignment[,i]))))), i] <- (summary(as.factor(toupper(alignment[,i])))/length(alignment[,i])) freq.10[1,i] <- sum(freq.22[1:4,i]) # Hydrophobic, Aliphatic freq.10[2,i] <- sum(freq.22[5:7,i]) # Aromatic freq.10[3,i] <- sum(freq.22[8:9,i]) # Ser/Thr freq.10[4,i] <- sum(freq.22[10:11,i]) # Polar freq.10[5,i] <- sum(freq.22[12:14,i]) # Positive freq.10[6,i] <- sum(freq.22[15:16,i]) # Negative freq.10[7,i] <- sum(freq.22[17:18,i]) # Tiny freq.10[8,i] <- sum(freq.22[19,i]) # Proline freq.10[9,i] <- sum(freq.22[20,i]) # Cysteine freq.10[10,i] <- sum(freq.22[21:22,i]) # Gaps } entropy.22 <- vector(length = len) entropy.10 <- entropy.22 for (i in 1:len) { # entropy_i = sum[i] (P(X_i)log2(P(X_i))) entropy.22[i] <- -1*sum(freq.22[freq.22[, i] != 0, i] * log2(freq.22[freq.22[, i] != 0, i])) entropy.10[i] <- -1*sum(freq.10[freq.10[, i] != 0, i] * log2(freq.10[freq.10[, i] != 0, i])) } out <- list(H=entropy.22, H.10=entropy.10, H.norm=1-(if(max(entropy.22)==0) entropy.22 else (entropy.22/max(entropy.22))), H.10.norm=1-(if(max(entropy.10)==0) entropy.10 else (entropy.10/max(entropy.10))), freq=freq.22) } bio3d/R/convert.pdb.R0000644000176200001440000001443614707230356014041 0ustar liggesusers"convert.pdb" <- function(pdb, type = c("original", "pdb", "charmm", "amber", "gromacs"), renumber=FALSE, first.resno=1, first.eleno=1, consecutive=TRUE, rm.h=TRUE, rm.wat=FALSE, verbose=TRUE) { ##-- Check the requested output format is one of 'type.options' type <- match.arg(type) ##-- Water and hydrogen removal inds <- NULL if(rm.wat) { inds <- atom.select(pdb, "notwater", verbose=FALSE) if(verbose){ cat(paste("\t Retaining", length(inds$atom),"non-water atoms\n")) } } if(rm.h) { inds <- combine.select(inds, atom.select(pdb, "noh", verbose=FALSE), verbose=FALSE) if(verbose){ cat(paste("\t Retaining", length(inds$atom),"non-hydrogen atoms\n")) } } if(!is.null(inds)){ nrm <- nrow(pdb$atom) - length(inds$atom) if( nrm > 0) { if(verbose){ cat(paste("\t Removing a total of", nrm," atoms\n")) } pdb <- trim.pdb(pdb, inds) } } ##-- Renumbering of residues and atoms if(renumber) { if(verbose){ cat(paste("\t Renumbering residues ( from",first.resno,") and atoms ( from",first.eleno,")\n")) } ## Assign consecutive atom numbers pdb$atom[,"eleno"] <- seq(first.eleno, length=nrow(pdb$atom)) ## Determine chain start and end indices s.ind <- which(!duplicated(pdb$atom[,"chain"])) e.ind <- c(s.ind[-1]-1, nrow(pdb$atom)) ##- Assign new (consecutive) residue numbers for each chain prev.chain.res = 0 ## Number of residues in previous chain for (i in 1:length(s.ind)) { ## Combination of resno and insert code define a residue (wwpdb.org) insert = pdb$atom[s.ind[i]:e.ind[i], "insert"] insert[is.na(insert)] = "" resno0 <- paste0(pdb$atom[s.ind[i]:e.ind[i], "resno"], insert) ## Ordered table of residue occurrences tbl <- table(resno0)[unique(resno0)] n.chain.res <- length(tbl) new.nums <- (first.resno+prev.chain.res):(first.resno+n.chain.res-1+prev.chain.res) pdb$atom[s.ind[i]:e.ind[i],"resno"] <- rep(new.nums, tbl) ## SSE if(length(pdb$helix)>0) { # chs = unique(pdb$helix$chain) ch = pdb$atom$chain[s.ind][i] if(ch %in% pdb$helix$chain) { h.start <- pdb$helix$start[pdb$helix$chain %in% ch] h.insert <- names(h.start) t.inds = match(paste0(h.start, h.insert), unique(resno0)) pdb$helix$start[pdb$helix$chain %in% ch] = new.nums[t.inds] h.end <- pdb$helix$end[pdb$helix$chain %in% ch] h.insert <- names(h.end) t.inds = match(paste0(h.end, h.insert), unique(resno0)) pdb$helix$end[pdb$helix$chain %in% ch] = new.nums[t.inds] } } if(length(pdb$sheet)>0) { # chs = unique(pdb$sheet$chain) ch = pdb$atom$chain[s.ind][i] if(ch %in% pdb$sheet$chain) { s.start <- pdb$sheet$start[pdb$sheet$chain %in% ch] s.insert <- names(s.start) t.inds = match(paste0(s.start, s.insert), unique(resno0)) pdb$sheet$start[pdb$sheet$chain %in% ch] = new.nums[t.inds] s.end <- pdb$sheet$end[pdb$sheet$chain %in% ch] s.insert <- names(s.end) t.inds = match(paste0(s.end, s.insert), unique(resno0)) pdb$sheet$end[pdb$sheet$chain %in% ch] = new.nums[t.inds] } } if(consecutive) { ## Update prev.chain.res for next iteration prev.chain.res = prev.chain.res + n.chain.res } } ## clean up 'insert' pdb$atom$insert <- as.character(NA) if(length(pdb$helix)>0) { names(pdb$helix$start) <- NULL names(pdb$helix$end) <- NULL } if(length(pdb$sheet)>0) { names(pdb$sheet$start) <- NULL names(pdb$sheet$end) <- NULL } } ##-- Format conversion if(type != "original") { if(verbose){ cat(paste0("\t Converting to '", type, "' format\n")) } ## residue and atom types from PDB restype <- unique(pdb$atom[,"resid"]) #eletype <- unique(pdb$atom[,"elety"]) ## In future could determine 'input type' based on resid/elety ##- Check for non-standard residue names if(verbose){ not.prot.inds <- atom.select(pdb, "notprotein", verbose=FALSE)$atom if(length(not.prot.inds) > 0) { not.prot.res <- paste(unique(pdb$atom[not.prot.inds, "resid"]), collapse = " ") cat(paste("\t Non-standard residue names present (",not.prot.res,")\n") ) } } ##- Convert HIS resid his <- matrix( c("HIS", "HSD", "HID","HISA", "HIS", "HSE", "HIE","HISB", "HIS", "HSP", "HIP","HISH"), nrow=3, byrow=TRUE, dimnames = list(c("d","e","b"), c("pdb","charmm","amber","gromacs")) ) type.inds <- (colnames(his) %in% type) conv.inds <- !(colnames(his) %in% c(type,"pdb")) his.d.ind <- (pdb$atom[,"resid"] %in% his["d", !type.inds ]) his.e.ind <- (pdb$atom[,"resid"] %in% his["e", conv.inds ]) his.b.ind <- (pdb$atom[,"resid"] %in% his["b", conv.inds ]) pdb$atom[his.d.ind,"resid"] <- his["d", type.inds ] pdb$atom[his.e.ind,"resid"] <- his["e", type.inds ] pdb$atom[his.b.ind,"resid"] <- his["b", type.inds ] ##- Convert ILE CD1 to CD elety and remove chainID if (type=="charmm") { ile.ind <- atom.select(pdb, resid="ILE", elety="CD1", verbose=FALSE)$atom pdb$atom[ile.ind,"elety"] <- "CD" pdb$atom[,"chain"]=NA ## strip chain ID ## Could also add a SEGID via call to chain.pdb() function pdb$atom[,"segid"] <- chain.pdb(pdb) } else { ile.ind <- atom.select(pdb, resid="ILE", elety="CD", verbose=FALSE)$atom pdb$atom[ile.ind,"elety"] <- "CD1" } } ## END type != "original" (conversion) ##-- Convert hydrogen atom types (unfinished!) if(!rm.h) { if(type=="pdb") { pdb$atom[ pdb$atom[,"elety"]=="HN", "elety"] = "H" ###!!! ADD Many MORE ATOM TYPE CONVERSIONS HERE !!!### } if(verbose){ warning(paste("\t Additional hydrogen elety names may need converting.", "\t N.B. It is often best to remove hydrogen (rm.h=TRUE)", "\t before building systems for simulation",sep="\n")) } ## Add other atom name conversions here as the need arises... } return(pdb) } bio3d/R/is.select.R0000644000176200001440000000006014707230356013472 0ustar liggesusersis.select <- function(x) inherits(x, "select")bio3d/R/cna.R0000644000176200001440000000030414707230356012343 0ustar liggesusers`cna` <- function(cij, ...) { if(inherits(cij, "matrix")) { class(cij) <- c("matrix", "dccm") UseMethod("cna", cij) } else { class(cij) <- c("ensmb") UseMethod("cna", cij) } } bio3d/R/vmd_colors.R0000644000176200001440000000230414707230357013754 0ustar liggesusersvmd_colors <- function(n=33, picker=FALSE, ...){ ## RGB numbers red <- c(0, 1, 0.35, 1, 1, 0.5, 0.6, 0, 1, 1, 0.25, 0.65, 0.5, 0.9, 0.5, 0.5, 0, 0.88, 0.55, 0, 0, 0, 0, 0.02, 0.01, 0.27, 0.45, 0.9, 1, 0.98, 0.81, 0.89, 0.96) green <- c(0, 0, 0.35, 0.50, 1, 0.5, 0.6, 1, 1, 0.6, 0.75, 0, 0.9, 0.4, 0.3, 0.5, 0, 0.97, 0.9, 0.9, 0.9, 0.88, 0.76, 0.38, 0.04, 0, 0, 0, 0, 0, 0, 0.35, 0.72) blue <- c(1, 0, 0.35, 0, 0, 0.2, 0.6, 0, 1, 0.6, 0.75, 0.65, 0.4, 0.7, 0, 0.75, 0, 0.02, 0.02, 0.04, 0.5, 1, 1, 0.67, 0.93, 0.98, 0.9, 0.9, 0.66, 0.23, 0, 0, 0) ## Setup color indices max.col <- length(red) inds <- (1:n) if( n > max.col ) { inds <- inds %% max.col inds[inds==0] <- max.col warning( paste("Colors will be recycled: input 'n' >", max.col) ) } cols <- rgb(red[inds], green[inds], blue[inds], ...) names(cols) <- c(1:n) if(picker) { ## Draw a pie chart to help with color choice if(n > 50) { warning("Chart will likely be crowded, set n=33 to see all colors") } pie(rep(1, length(cols)), labels=paste(inds, cols), col=cols, cex=0.75) } return(cols) } bio3d/R/dssp.pdbs.R0000644000176200001440000000274614707230356013516 0ustar liggesusers"dssp.pdbs" <- function(pdbs, ...) { if(!is.pdbs(pdbs)) stop("provide a pdbs object as obtained from pdbaln()") dots <- list(...) if(any(c("resno", "full") %in% names(dots))) stop("arguments resno and full not allowed in dssp.pdbs()") gaps.res <- gap.inspect(pdbs$ali) sse <- matrix(NA, ncol=ncol(pdbs$resno), nrow=nrow(pdbs$resno)) for ( i in 1:length(pdbs$id) ) { ##- Check for local and/or online PDB file to run dssp on file <- pdbs$id[i] toread <- file.exists(file) if ((substr(file, 1, 4) == "http") | (nchar(file) == 4)) { toread <- TRUE } if (!toread) { stop(paste("Corresponding PDB file could not be found for entry:\n\t-", pdbs$id[i])) } tmp.pdb = read.pdb(pdbs$id[i]) tmp.sse = dssp.pdb(tmp.pdb, resno=FALSE, full=FALSE, ...) ##sse[i, which(gaps.res$bin[i,]==0)] = tmp.sse$sse ##- this old way (line 30) will have problems if alignment contains ## only a portion of the full PDB structure read on line 27 above. ## Thus the edit below uses residue number and chain id from the ## alignment (ali.names) as a reference to populate the sse matrix ## from the PDB dssp result (pdb.names) ali.names <- paste(pdbs$resno[i,], pdbs$chain[i,], sep="_") pdb.names <- paste(tmp.pdb$atom$resno[tmp.pdb$calpha], tmp.pdb$atom$chain[tmp.pdb$calpha], sep="_") names(tmp.sse$sse) <- pdb.names sse[i,] <- tmp.sse$sse[ ali.names ] } return(sse) } bio3d/R/filter.dccm.R0000644000176200001440000001434114707230356014002 0ustar liggesusersfilter.dccm <- function(x, cutoff.cij = NULL, cmap = NULL, xyz = NULL, fac = NULL, cutoff.sims = NULL, collapse = TRUE, extra.filter = NULL, ...) { # check cij format cij <- x if("all.dccm" %in% names(cij)) { cij <- cij$all.dccm } else if(is.list(cij)) { cij <- array(unlist(cij), dim = c(dim(cij[[1]]), length(cij))) } else if(is.matrix(cij)) { cij <- array(cij, dim = c(dim(cij), 1)) } else if(!is.array(cij)) { stop("Input x should be an array/list containing correlation matrices") } ## Check input is built of simmetric matrices if (dim(cij)[1] != dim(cij)[2]) { stop("Input 'x' should contain symmetric matrices.") } ## Check xyz and set cmap if(is.null(cmap)) { if(is.null(xyz)) cmap = FALSE else cmap = TRUE } ## Check dimension if cmap is matrix if(is.matrix(cmap) && !all.equal(dim(cmap), dim(cij)[1L:2L])) stop("Input 'cmap' does not match x") ## Check cutoff.cij if(is.null(cutoff.cij)) { cutoff.cij <- .cij.cutoff.guess(cij, p = 0.95) } ## Inspect cij values with respect to cutoff.cij and contact map if(is.matrix(cmap) || isTRUE(cmap)) { # check factor vector for multiple networks construction if(!is.null(fac)) { if(!is.factor(fac)) fac = as.factor(fac) } else { fac = factor(rep("a", dim(cij)[3L])) } # check for calculating cmap if(isTRUE(cmap)) { if(is.null(xyz)) stop("xyz coordinates or a 'pdbs' object must be provided for contact map calculation") cmap.args <- list(...) if(inherits(xyz, "pdbs")) { gaps.pos <- gap.inspect(xyz$xyz) xyz <- xyz$xyz[, gaps.pos$f.inds] cmap.default <- list(dcut=10.0) cmap.args <- .arg.filter(cmap.default, cmap.xyz, ...) } if(nrow(xyz) != dim(cij)[3L] && nlevels(fac) > 1) stop(paste("Input 'xyz' doesn't match 'x'", "\tSet fac=NULL for single network construction", sep='\n')) } # convert cij to upper.tri matrix for internal use pcij <- apply(cij, 3, function(x) x[upper.tri(x)]) ncij <- tapply(1:dim(cij)[3L], fac, function(i) { # contact map if(isTRUE(cmap)) { if(nlevels(fac) > 1) cm <- do.call("cmap.xyz", c(list(xyz=xyz[i, ]), cmap.args)) else cm <- do.call("cmap.xyz", c(list(xyz=xyz), cmap.args)) } else { cm <- cmap } cm[is.na(cm)] <- 0 cij.min = apply(abs(pcij[, i, drop=FALSE]), 1, min) cij.max = apply(abs(pcij[, i, drop=FALSE]), 1, max) filter <- (cij.min >= cutoff.cij) | (cij.max >= cutoff.cij & cm[upper.tri(cm)]==1) if(!is.null(extra.filter)) filter <- filter * extra.filter[upper.tri(extra.filter)] ncij <- array(NA, dim=c(dim(cij[,,1]), length(i))) for(j in 1:dim(ncij)[3L]) { tcij <- cij[,,i[j]] tcij[upper.tri(tcij)] <- pcij[, i[j]] * filter tcij[lower.tri(tcij)] <- t(tcij)[lower.tri(tcij)] ncij[,,j] <- tcij } # if(length(i) == 1) ncij <- ncij[,,1] return(ncij) } ) if(collapse) ncij <- lapply(ncij, rowMeans, dims = 2) if(nlevels(fac)==1) ncij <- ncij[[1]] if(is.matrix(ncij)) class(ncij) = c("dccm", "matrix") if(is.list(ncij)) { ncij <- lapply(ncij, function(x) { class(x) <- c("dccm", "matrix") x }) } return(ncij) } else { # Filter cijs with cutoff.sims and return mean dccm (dccm.mean()) if(is.null(cutoff.sims)) cutoff.sims = dim(cij)[3L] if (cutoff.sims > dim(cij)[3L] || cutoff.sims < 0) { stop("The cutoff.sims should be a number between 0 and N, where N is the the number of simulations in the input matrix") } ## Filter by cutoff.cij and sum across simulations cut.cij.inds <- (abs(cij) < cutoff.cij) count <- array(NA, dim = dim(cij)) count[!cut.cij.inds] = 1 cij.sum <- apply(count, c(1:2), sum, na.rm = TRUE) ## Mask cij values below cutoff and average across simulations cij[cut.cij.inds] = NA cij.ave <- apply(cij, c(1:2), mean, na.rm = TRUE) ## Mask average values if below cutoff.sims cut.sims.inds <- (cij.sum < cutoff.sims) cij.ave[cut.sims.inds] = 0 ## Could use NA here if(!is.null(extra.filter)) cij.ave <- cij.ave * extra.filter class(cij.ave) = c("dccm", "matrix") return(cij.ave) } } # Estimate cij.cutoff as quantile Pr(cij<=cij.cutoff) = p .cij.cutoff.guess <- function(cij, p = NULL, cmap = NULL, collapse = TRUE, collapse.method=c('max', 'median', 'mean')) { collapse.method <- match.arg(collapse.method) if(is.null(p)) p = seq(0.900, 0.995, 0.005) cijs <- cij if("all.dccm" %in% names(cijs)) cijs <- cijs$all.dccm if(is.array(cijs)) { if(length(dim(cijs))==3) cijs <- do.call("c", apply(cijs, 3, list)) else cijs <- list(cijs) } if(!is.list(cijs)) stop("cijs should be matrix, array(dim=3), or list") if(!is.null(cmap)) { cijs <- lapply(cijs, function(x) x*cmap) } # return quantile Pr(cij <= cij.cutoff) = p out <- sapply(cijs, function(x) quantile(abs(x[upper.tri(x)]), probs = p)) out <- matrix(out, ncol=length(cijs)) c0 <- seq(0, 1, 0.05) if(collapse) { out <- switch(collapse.method, 'mean' = # sapply(rowMeans(out), function(x) c0[which.min(abs(x-c0))]) , sapply(rowMeans(out), function(x) c0[sum(x>=c0)]), 'median' = sapply(apply(out, 1, median), function(x) c0[sum(x>=c0)]), # sapply(apply(out, 1, median), function(x) c0[which.min(abs(x-c0))]), 'max' = sapply(apply(out, 1, max), function(x) c0[sum(x>=c0)]) # sapply(apply(out, 1, max), function(x) c0[which.min(abs(x-c0))]) ) names(out) <- paste("Cutoff (p=", round(p, digits=3), ")", sep="") } else { dimnames(out) <- list(paste("Cutoff (p=", round(p, digits=3), ")", sep=""), paste("Matrix", 1:length(cijs))) } return(out) } bio3d/R/struct.aln.R0000644000176200001440000001521414707230357013706 0ustar liggesusers"struct.aln" <- function(fixed, mobile, fixed.inds = NULL, mobile.inds = NULL, write.pdbs = TRUE, outpath = "fitlsq", prefix = c("fixed", "mobile"), max.cycles = 10, cutoff = 0.5, ... ) { if(missing(fixed)) stop("align: must supply 'pdb' object, i.e. from 'read.pdb'") if(missing(mobile)) stop("align: must supply 'pdb' object, i.e. from 'read.pdb'") if(!is.pdb(fixed)) stop("align: 'fixed' must be of type 'pdb'") if(!is.pdb(mobile)) stop("align: 'mobile' must be of type 'pdb'") ## if indices are provided, make new PDB entities if ( !is.null(fixed.inds) ) { if(length(fixed.inds$atom)<2) stop("align: insufficent atom indices for fitting") #a <- NULL #a$atom <- fixed$atom[fixed.inds$atom, ] #a$xyz <- fixed$xyz[fixed.inds$xyz] #a$calpha <- as.logical(a$atom[,"elety"] == "CA") a <- trim.pdb(fixed, fixed.inds) } else { a <- fixed fixed.inds <- atom.select(fixed, 'all', verbose=FALSE) } if ( !is.null(mobile.inds) ) { if(length(mobile.inds$atom)<2) stop("align: insufficent atom indices for fitting") #b <- NULL #b$atom <- mobile$atom[mobile.inds$atom, ] #b$xyz <- mobile$xyz[mobile.inds$xyz] #b$calpha <- as.logical(b$atom[,"elety"] == "CA") b <- trim.pdb(mobile, mobile.inds) } else { b <- mobile mobile.inds <- atom.select(mobile, 'all', verbose=FALSE) } "xyz.dist" <- function(v) { a <- v[1:3]; b <- v[4:6] sqrt(sum((a-b)**2)) } "resi.dev" <- function(xyz.a, xyz.b, cycle=1, cutoff = 0.5) { k <- matrix(xyz.a, ncol=3, byrow=T) l <- matrix(xyz.b, ncol=3, byrow=T) devs <- apply( cbind(k,l), 1, "xyz.dist") m <- median(devs) std <- sd(devs) cut <- m + (2*std) inds <- which( devs > cut ) if ( (std < cutoff) || (length(inds)==0) ) { return( NULL ) } else { cat( " Cycle ", i, ": ", length(inds), " atoms rejected", "\n", sep="") cat(" Mean: ", round(m,1), " Std: ", round(std,1), " Cut: ", round(cut,1), "\n", sep="" ) return(inds) } } "remap.inds" <- function(pdb.init, inds.init, inds.trunc.atom) { ## Map back to indices for the entire PDB given inds.full <- NULL inds.full$atom <- inds.init$atom[inds.trunc.atom] inds.full$xyz <- atom2xyz(inds.full$atom) inds.full$logical <- atom2xyz(seq(1, nrow(pdb.init$atom))) %in% inds.full$xyz return(inds.full) } "parse.pdb" <- function(pdb, gaps, s, i) { pdbseq <- aa321(pdb$atom[pdb$calpha, "resid"]) aliseq <- toupper(s$ali[i, ]) tomatch <- gsub("X", "[A-Z]", aliseq[!is.gap(aliseq)]) start.num <- regexpr(pattern = paste(c(na.omit(tomatch[1:15])), collapse = ""), text = paste(pdbseq, collapse = ""))[1] nseq <- rep(NA, length(aliseq)) ali.res.ind <- which(!is.gap(aliseq)) ali.res.ind <- ali.res.ind[1:length(pdbseq)] nseq[ali.res.ind] = start.num:((start.num - 1) + length(tomatch)) pdb$atom <- cbind(pdb$atom, index=seq(1, nrow(pdb$atom))) ca.ali <- pdb$atom[pdb$calpha, ][nseq, ] at.inds <- ca.ali[, "index"] return(at.inds) } ## PDB list for sequence alignment pdb.list <- NULL pdb.list[[1]] <- a pdb.list[[2]] <- b ## Sequence alignment s <- lapply(pdb.list, pdbseq) s <- t(sapply(s, `[`, 1:max(sapply(s, length)))) s[is.na(s)] <- "-" s <- seqaln(s, id = c("fixed", "mobile"), ...) gaps <- gap.inspect(s$ali) ## Parse truncated PDBs at.inds.a <- parse.pdb(a, gaps, s, 1) at.inds.b <- parse.pdb(b, gaps, s, 2) ## Fetch indices for fitting (truncated pdb) at.a <- as.numeric(at.inds.a[gaps$f.inds]) at.b <- as.numeric(at.inds.b[gaps$f.inds]) ## Indices for full pdb - done with the truncated ones a.inds.full <- remap.inds(fixed, fixed.inds, at.a) b.inds.full <- remap.inds(mobile, mobile.inds, at.b) ## Perform the initial fitting fit <- rot.lsq(mobile$xyz, fixed$xyz, xfit=b.inds.full$logical, yfit=a.inds.full$logical) rmsd.init <- rmsd(as.vector(fixed$xyz), fit, a.inds=a.inds.full$xyz, b.inds=b.inds.full$xyz) cat("\n") cat(" Initial RMSD (", length(gaps$f.inds), " atoms): ", rmsd.init, "\n", sep="") if ( write.pdbs ) { dir.create(outpath, FALSE) fname <- file.path(outpath, paste(prefix[2], "_", 0, ".pdb", sep="")) write.pdb(mobile, xyz=fit, file=fname) } ## Refinement process rmsd.all <- c(rmsd.init) for ( i in seq(1,max.cycles) ) { if(i>max.cycles) break ## Find residues with largest structural deviation exc <- resi.dev(fixed$xyz[a.inds.full$xyz], fit[b.inds.full$xyz], cycle = i, cutoff = cutoff) if ( is.null(exc) ) { break } else { ## Remove atoms for new round of fitting exc <- atom2xyz(exc) tmp <- seq(1,length( a.inds.full$logical )) exc.a <- tmp[which( a.inds.full$logical )][exc] a.inds.full$logical[exc.a] <- FALSE tmp <- seq(1,length( b.inds.full$logical )) exc.b <- tmp[which( b.inds.full$logical )][exc] b.inds.full$logical[exc.b] <- FALSE ## Build new xyz and atom indices a.inds.full$xyz <- which(a.inds.full$logical) b.inds.full$xyz <- which(b.inds.full$logical) a.inds.full$atom <- xyz2atom(a.inds.full$xyz) b.inds.full$atom <- xyz2atom(b.inds.full$xyz) ## Fit based on new indices fit <- rot.lsq(mobile$xyz, fixed$xyz, xfit=b.inds.full$logical, yfit=a.inds.full$logical) if ( write.pdbs ) { fname <- file.path(outpath, paste(prefix[2], "_", i, ".pdb", sep="")) write.pdb(mobile, xyz=fit, file=fname) } ## Calculate RMSD tmp.rmsd <- rmsd(as.vector(fixed$xyz), fit, a.inds=a.inds.full$xyz, b.inds.full$xyz) rmsd.all <- c(rmsd.all, tmp.rmsd) num.resi <- length(which(a.inds.full$logical))/3 cat(" RMSD (", num.resi, " of ", length(gaps$f.inds), " atoms): ", tmp.rmsd, "\n", sep="") } } if ( write.pdbs ) { fname <- file.path(outpath, paste(prefix[1], ".pdb", sep="")) write.pdb(fixed, file=fname) } a.inds.full$logical <- NULL b.inds.full$logical <- NULL out <- list("a.inds"=a.inds.full, "b.inds"=b.inds.full, xyz=as.xyz(fit), rmsd=rmsd.all) return(out) } bio3d/R/plot.enma.R0000644000176200001440000000601614707230356013505 0ustar liggesusers"plot.enma" <- function(x, pdbs=NULL, xlab=NULL, ylab="Fluctuations", ...) { if(!(inherits(x, "enma"))) stop("provide a enma object as obtained from 'nma.pdbs'") yval <- x$fluctuations ## SSE information sse.aln <- NULL dots <- list(...) ## reference structure for SSE and resno if("ind" %in% names(dots)) { ref.ind <- dots[["ind"]] dots[["ind"]] <- NULL ## Note - plot.fluct use plotb3(yval[1,]) for base plotting ## Lines 54-61 checks for NAs in yval[1,] to trim SSE ## SSE must therefore correspond to yval[1,] ## ref.ind != 1 might give wrong sse annotation in plot warning("reference structure can not be set") ref.ind <- 1 } else { ref.ind <- 1 } ## use first non-NA in col as ref.ind if("col" %in% names(dots)) { col <- dots[["col"]] if(length(col) != nrow(yval)) stop("length of col doesn't match dimension of x") if(any(is.na(col))) { ref.ind <- which(!is.na(col))[1] } } ## check for gaps gaps <- gap.inspect(yval) if(any(gaps$col>0)) rm.gaps <- FALSE else rm.gaps <- TRUE ## check if pdbs match enma object gaps.pdbs <- NULL if(!is.null(pdbs)) { if(!inherits(pdbs, "pdbs")) { warning("argument 'pdbs' is not a 'pdbs' object (as obtained from pdbaln())") pdbs <- NULL } else { gaps.pdbs <- gap.inspect(pdbs$ali) if(rm.gaps) dims.pdbs <- dim(pdbs$ali[, gaps.pdbs$f.inds, drop=FALSE]) else dims.pdbs <- dim(pdbs$ali) if(!identical(dim(yval), dims.pdbs)) { warning("dimenension mismatch between modes and pdbs object") pdbs <- NULL } } } ## trim pdbs object if rm.gaps=TRUE if(!is.null(pdbs)) { if(rm.gaps) pdbs <- trim(pdbs, col.inds=gaps.pdbs$f.inds) } if(!is.null(pdbs)) { resno <- pdbs$resno[ref.ind, ] if(is.null(xlab)) { xlab <- paste0('Residue number (reference PDB: ', basename.pdb(pdbs$id[ref.ind]), ')') } } else { resno <- NULL if(is.null(xlab)) xlab <- "Alignment Position" } if( "sse" %in% names(dots) ) { sse.aln <- dots$sse dots$sse <- NULL } if(!is.null(pdbs) & is.null(sse.aln)) { sse.aln <- pdbs2sse(pdbs, ind=ref.ind, rm.gaps=rm.gaps, resno=TRUE) sse.aln$sse[ is.na(yval[ref.ind,]) ] <- NA ## see lines 54-61 in plotb3.R } if( "rm.gaps" %in% names(dots) ) { warning("'rm.gaps=TRUE' might result in incorrect SSE annotation") } ## Plot fluctuations do.call('plot.fluct', c(list(x=yval, resno=resno, sse=sse.aln, xlab=xlab, ylab=ylab), dots)) } bio3d/R/dccm.nma.R0000644000176200001440000000631514707230356013272 0ustar liggesusers"dccm.nma" <- function(x, nmodes=NULL, ncore=NULL, progress = NULL, ...) { nma <- x if (missing(nma)) stop("dccm.nma: must supply a 'nma' object, i.e. from 'nma'") if(!"nma" %in% class(nma)) stop("dccm.nma: must supply 'nma' object, i.e. from 'nma'") ## Check for multiple cores ncore <- setup.ncore(ncore, bigmem = FALSE) if(ncore > 1) { mcparallel <- get("mcparallel", envir = getNamespace("parallel")) mccollect <- get("mccollect", envir = getNamespace("parallel")) } ## Inner product between all pairs of residues cross.inner.prod <- function(a, b) { mat <- apply(a, 1, "%*%", t(b)) return(mat) } ## Calc initial correlations for a subset of modes corrmats <- function(r.inds, core.id, nma, corr.mat, freqs, progress) { for ( i in r.inds ) { mode <- matrix(nma$U[,i], ncol=3, byrow=TRUE) corr.mat <- corr.mat + (cross.inner.prod(mode, mode) / (freqs[i]**2)) if(core.id==1) { setTxtProgressBar(pb, i) } if(!is.null(progress)) { if(i %% 20 == 0) { progress$set(i) } } } return(corr.mat) } if(!is.null(nma$frequencies)) { freqs <- nma$frequencies } else { freqs <- nma$force.constants } if(is.null(nmodes)) nmodes <- length(nma$L) else { nmodes <- nmodes + nma$triv.modes if(nmodes>length(nma$L)) { warning("'nmodes' larger than the number of modes") nmodes <- length(nma$L) } } ## Initialize progress bar ##ptm <- proc.time() pbmax <- nmodes + nma$natoms pb <- txtProgressBar(min=(nma$triv.modes+1), max=pbmax, style=3) ## Allocate the correl matrix corr.mat <- matrix(0, nma$natoms, nma$natoms) ## Which modes to use for calculation mode.inds <- (nma$triv.modes+1):nmodes core.ids <- rep(1:ncore, length.out=length( mode.inds )) if(ncore>1) jobs <- list() for ( i in 1:ncore ) { rinds <- mode.inds[ which(core.ids==i) ] if(ncore>1) { q <- mcparallel(corrmats(rinds, i, nma, corr.mat, freqs, progress)) jobs[[i]] <- q } else corr.mat <- corrmats(rinds, i, nma, corr.mat, freqs, progress) } ## Collect all jobs, and sum matrices if(ncore>1) { res <- mccollect(jobs, wait=TRUE) for ( job in res ) { corr.mat <- corr.mat + job } } ## Basis for normalization a <- vector('numeric', length=nrow(corr.mat)) k <- length(mode.inds) ## for ProgressBar ! inds <- rep(1:nrow(corr.mat), each=3) for ( j in (nma$triv.modes+1):nmodes ) { v <- nma$U[, j] * nma$U[, j] a <- a + ( tapply( v, inds, sum) / (freqs[j]**2)) k <- k+1 setTxtProgressBar(pb, k) if(!is.null(progress)) { if(j %% 20 == 0) { progress$set(k) } } } close(pb) a <- sqrt(a) bn <- a%o%a ## Normalized correlation matrix corr.mat <- corr.mat / bn class(corr.mat) <- c("dccm", "matrix") ##t <- proc.time() - ptm ##cat(" Done in", t[[3]], "seconds.\n") return(corr.mat) } bio3d/R/mono.colors.R0000644000176200001440000000024014707230356014051 0ustar liggesusers"mono.colors" <- function (n) { if(n<2) stop("need to ask for at least 2 colors") n=n-1 col <- rev(gray(0:(n) / (n))) col[1] = NA return(col) } bio3d/R/plot.nma.R0000644000176200001440000000156314707230357013343 0ustar liggesusers"plot.nma" <- function(x, pch = 16, col = par("col"), cex = 0.8, mar = c(6, 4, 2, 2), ...) { opar <- par(no.readonly = TRUE) on.exit(par(opar)) par(cex = cex, mar = mar) layout(matrix(c(1,2,3,3), 2, 2, byrow = TRUE)) if(!is.null(x$frequencies)) { freqs <- x$frequencies main <- "Frequencies" } else { freqs <- x$force.constants main <- "Force constants" } if(length(freqs)>=100) n <- 100 else n <- length(freqs) plot(x$L[1:n], type = "h", pch = pch, xlab = "Mode index", ylab = "", main = "Eigenvalues", col = col) plot(freqs[1:n], type = "h", pch = pch, xlab = "Mode index", ylab = "", main = main, col = col) plot.bio3d(x$fluctuations, pch = pch, xlab = "Residue index", ylab = "", main = "Fluctuations", col = col, ...) } bio3d/R/read.pdb.R0000644000176200001440000001674014707230357013275 0ustar liggesusersread.pdb <- function(file, maxlines = -1, multi=FALSE, rm.insert=FALSE, rm.alt=TRUE, ATOM.only=FALSE, hex=FALSE, verbose=TRUE) { cl <- match.call() if(missing(file)) { stop("read.pdb: please specify a PDB 'file' for reading") } if(!is.logical(multi)) { stop("read.pdb: 'multi' must be logical TRUE/FALSE") } ##- Check if file exists locally or on-line putfile <- NULL if(substr(file,1,4)=="http") { ## cpp function can not read from http putfile <- tempfile(fileext=".pdb") rt <- try(download.file(file, putfile, quiet = !verbose), silent=TRUE) if(inherits(rt, "try-error")) { file.remove(putfile) stop("File not found at provided URL") } else { file <- putfile } } toread <- file.exists(file) if(toread & basename(file) != file) { file <- normalizePath(file) } ## Check for 4 letter code and possible on-line file if(!toread) { if(nchar(file)==4) { cat(" Note: Accessing on-line PDB file\n") file <- get.pdb(file, path=tempdir(), verbose=FALSE) } else { stop("No input PDB file found: check filename") } } ## parse PDB file with cpp function pdb <- .read_pdb(file, multi=multi, hex=hex, maxlines=maxlines, atoms_only=ATOM.only) ## remove temp file if we downloaded it above if(!is.null(putfile)) { file.remove(putfile) } # if(verbose) # cat(" ", pdb$header, "\n") pdb$header <- NULL if(!is.null(pdb$error)) stop(paste("Error in reading PDB file", file)) else class(pdb) <- c("pdb", "sse") ## convert xyz to matrix if(pdb$models > 1) pdb$xyz <- matrix(pdb$xyz, nrow=pdb$models, byrow=TRUE) pdb$xyz <- as.xyz(pdb$xyz) pdb$models <- NULL ## set empty strings to NA pdb$atom[pdb$atom==""] <- NA ## give names to seqres names(pdb$seqres) <- pdb$seqres_chain pdb$seqres_chain <- NULL ## fix stuff that should be NULL instead of empty vectors if(length(pdb$helix$start) > 0) { ## names are set in cpp func ## names(pdb$helix$start) <- pdb$helix$inserti ## names(pdb$helix$end) <- pdb$helix$inserte } else { pdb$helix <- NULL } if(length(pdb$sheet$start) > 0) { ## names(pdb$sheet$start) <- pdb$sheet$inserti ## names(pdb$sheet$end) <- pdb$sheet$inserte ##- remove repeated records for the same strand (e.g. in 1NH0) pa <- paste(pdb$sheet$start, pdb$sheet$inserti, pdb$sheet$chain, sep='_') keep.inds <- which(!duplicated(pa)) pdb$sheet <- lapply(pdb$sheet, '[', keep.inds) pdb$sheet$inserti <- NULL } else { pdb$sheet <- NULL } if(!length(pdb$seqres) > 0) pdb$seqres <- NULL if(!length(pdb$remark350) > 0) pdb$remark350 <- NULL ## Remove 'Alt records' if (rm.alt) { if ( sum( !is.na(pdb$atom$alt) ) > 0 ) { first.alt <- sort( unique(na.omit(pdb$atom$alt)) )[1] cat(paste(" PDB has ALT records, taking",first.alt,"only, rm.alt=TRUE\n")) alt.inds <- which( (pdb$atom$alt != first.alt) ) # take first alt only if(length(alt.inds)>0) { pdb$atom <- pdb$atom[-alt.inds,] pdb$xyz <- trim.xyz(pdb$xyz, col.inds=-atom2xyz(alt.inds)) } } } ## Remove 'Insert records' if (rm.insert) { if ( sum( !is.na(pdb$atom$insert) ) > 0 ) { cat(" PDB has INSERT records, removing, rm.insert=TRUE\n") insert.inds <- which(!is.na(pdb$atom$insert)) # rm insert positions pdb$atom <- pdb$atom[-insert.inds,] pdb$xyz <- trim.xyz(pdb$xyz, col.inds=-atom2xyz(insert.inds)) } } if(any(duplicated(pdb$atom$eleno))) warning("duplicated element numbers ('eleno') detected") if(any(is.na(pdb$atom$resno))) { warning("NA values for residue numbers ('resno') detected") } ## construct c-alpha attribute ca.inds <- atom.select.pdb(pdb, string="calpha", verbose=FALSE) pdb$calpha <- seq(1, nrow(pdb$atom)) %in% ca.inds$atom ##- Parse REMARK records for storing symmetry matrices to ## build biological unit by calling 'biounit()' remark <- .parse.pdb.remark350(pdb$remark350) pdb$remark350 <- NULL pdb$remark <- remark ## set call pdb$call <- cl ## finished return(pdb) } ##- parse REMARK records for building biological unit ('biounit()') .parse.pdb.remark350 <- function(x) { raw.lines <- x # How many lines of REMARK 350? remark350 <- grep("^REMARK\\s+350", raw.lines) nlines <- length(remark350) # How many distinct biological unit? biolines <- grep("^REMARK\\s+350\\s+BIOMOLECULE", raw.lines) nbios <- length(biolines) if(nbios == 0) { # warning("REMARK 350 is incomplete.") return(NULL) } # End line number of each biological unit biolines2 <- c(biolines[-1], remark350[nlines]) # How the biological unit was determined? method <- sapply(1:nbios, function(i) { author <- intersect(grep("^REMARK\\s+350\\s+AUTHOR DETERMINED BIOLOGICAL UNIT", raw.lines), biolines[i]:biolines2[i]) if(length(author) >= 1) return("AUTHOR") else return("SOFTWARE") } ) # Get chain IDs to apply the transformation chain <- lapply(1:nbios, function(i) { chlines <- intersect(grep("^REMARK\\s+350\\s+APPLY THE FOLLOWING TO CHAINS", raw.lines), biolines[i]:biolines2[i]) if(length(chlines) >= 1) { chs <- gsub("\\s*", "", sub("^.*:", "", raw.lines[chlines])) chs <- unlist(strsplit(chs, split=",")) } else { # warning(paste("Can't determine chain IDs from REMARK 350 for biological unit", # i, sep="")) chs = NA } return(chs) } ) if(any(is.na(chain))) return(NULL) mat <- lapply(1:nbios, function(i) { # Get transformation matrices mtlines <- intersect(grep("^REMARK\\s+350\\s+BIOMT", raw.lines), biolines[i]:biolines2[i]) # Get chain ID again: different trans matrices may be applied to different chains chlines <- intersect(grep("^REMARK\\s+350\\s+APPLY THE FOLLOWING TO CHAINS", raw.lines), biolines[i]:biolines2[i]) chs <- gsub("\\s*", "", sub("^.*:", "", raw.lines[chlines])) chs <- strsplit(chs, split=",") if(length(mtlines) == 0 || length(mtlines) %% 3 != 0) { # warning("Incomplete transformation matrix") mat <- NA } else { mat <- lapply(seq(1, length(mtlines), 3), function(j) { mt <- matrix(NA, 3, 4) for(k in 1:3) { vals <- sub("^REMARK\\s+350\\s+BIOMT[123]\\s*", "", raw.lines[mtlines[j+k-1]]) vals <- strsplit(vals, split="\\s+")[[1]] mt[k, ] <- as.numeric(vals[-1]) } mt } ) chs.pos <- findInterval(mtlines[seq(1, length(mtlines), 3)], chlines) names(mat) <- sapply(chs[chs.pos], paste, collapse=" ") ## apply each mat to specific chains } return(mat) } ) if(any(is.na(mat))) return(NULL) out <- list(biomat = list(num=nbios, chain=chain, mat=mat, method=method)) return(out) } bio3d/R/write.pdb.R0000644000176200001440000002701614707230357013512 0ustar liggesusers"write.pdb" <- function (pdb = NULL, file = "R.pdb", xyz = pdb$xyz, type = NULL, resno = NULL, resid = NULL, eleno = NULL, elety = NULL, chain = NULL, insert= NULL, alt = NULL, o = NULL, b = NULL, segid = NULL, elesy = NULL, charge = NULL, append = FALSE, verbose =FALSE, chainter = FALSE, end = TRUE, sse = FALSE, print.segid = FALSE) { if(is.null(xyz) || !is.numeric(xyz)) stop("write.pdb: please provide a 'pdb' object or numeric 'xyz' coordinates") if(any(is.na(xyz))) stop("write.pdb: 'xyz' coordinates must have no NA's.") if ( is.null(nrow(xyz)) ) { natom <- length(xyz)/3 nfile <- 1 } else if (is.matrix(xyz)) { natom <- ncol(xyz)/3 nfile <- nrow(xyz) if (verbose) { cat("Multiple rows in 'xyz' will be interperted as multimodels/frames\n") } } else { stop("write.pdb: 'xyz' or 'pdb$xyz' must be either a vector or matrix") } # card <- rep("ATOM", natom) card <- type if (!is.null(pdb)) { if (is.null(card)) card <- pdb$atom$type else if(length(card) == 1) card = rep(card, natom) if (is.null(resno)) resno = pdb$atom[, "resno"] if (is.null(resid)) resid = pdb$atom[, "resid"] if (is.null(eleno)) eleno = pdb$atom[, "eleno"] if (is.null(elety)) elety = pdb$atom[, "elety"] if (is.null(chain)) chain = pdb$atom[, "chain"] else if(length(chain) == 1) chain = rep(chain, natom) if (is.null(insert)) insert = pdb$atom[, "insert"] if (is.null(alt)) alt = pdb$atom[, "alt"] if (is.null(o)) o = pdb$atom[, "o"] if (is.null(b)) b = pdb$atom[, "b"] if (any(is.na(o))) { o = rep("1.00", natom) } if (any(is.na(b))) { b = rep("0.00", natom) } #if (any(is.na(chain))) { chain = rep(" ", natom) } chain[is.na(chain)]= "" insert[is.na(insert)] = "" alt[is.na(alt)] = "" if (is.null(segid)) segid = pdb$atom[, "segid"] segid[is.na(segid)] = "" if (is.null(elesy)) elesy = pdb$atom[, "elesy"] elesy[is.na(elesy)] = "" if (is.null(charge)) charge = pdb$atom[, "charge"] } else { if (is.null(card)) card = rep("ATOM", natom) else if(length(card) == 1) card = rep(card, natom) if (is.null(resno)) resno = c(1:natom) if (is.null(resid)) resid = rep("ALA", natom) if (is.null(eleno)) eleno = c(1:natom) if (is.null(elety)) elety = rep("CA", natom) if (is.null(chain)) chain = rep("", natom) else if (length(chain) == 1) chain = rep(chain, natom) ##if(any(is.na(chain))) chain[is.na(chain)]= "" if (is.null(insert)) insert=rep("", natom) if (is.null(alt)) alt=rep("", natom) if (is.null(o)) o = rep("1.00",natom) if (is.null(b)) b = rep("0.00", natom) if (is.null(segid)) segid = rep("", natom) if (is.null(elesy)) elesy = rep("", natom) if (is.null(charge)) charge = rep("", natom) chain[is.na(chain)]= "" insert[is.na(insert)] = "" alt[is.na(alt)] = "" } if (!is.logical(append)) stop("write.pdb: 'append' must be logical TRUE/FALSE") if (length(as.vector(xyz))%%3 != 0) { stop("write.pdb: 'length(xyz)' must be divisable by 3.") } check.lengths <- sum(length(card), length(resno), length(resid), length(eleno), length(elety), length(chain), length(insert), length(alt), length(o), length(b), length(segid), length(elesy), length(charge)) if (check.lengths%%natom != 0) { stop("write.pdb: the lengths of all input vectors != 'length(xyz)/3'.") } o <- as.numeric(o) b <- as.numeric(b) eleno <- as.character(eleno) resno <- as.character(resno) charge <- as.character(charge) charge[is.na(charge)] = "" if(!print.segid) segid = rep("", natom) ## Inserted Jul 8th 2008 for adding TER between chains ter.lines <- (which(!duplicated(chain))[-1] - 1) atom.print <- function(card = "ATOM", eleno, elety, alt = "", resid, chain = "", resno, insert = "", x, y, z, o = "1.00", b = "0.00", segid = "", elesy = "", charge = "") { format <- "%-6s%5s %-3s%1s%3s %1s%4s%1s%3s%8.3f%8.3f%8.3f%6.2f%6.2f%6s%-4s%2s%2s" if (nchar(elety) > 3 || (is.character(elesy) && nchar(elesy)>1)) { # if (nchar(elety) >= 3) { # if ((substr(elety, 2, 2) == "H") | (substr(elety, 1, 1) == "H")) { format <- "%-6s%5s %-4s%1s%3s %1s%4s%1s%3s%8.3f%8.3f%8.3f%6.2f%6.2f%6s%-4s%2s%2s" # } } sprintf(format, card, eleno, elety, alt, resid, chain, resno, insert, "", x, y, z, o, b, "", segid, elesy, charge) } ##### To write SSE annotations ##### format.sse <- function(pdb) { # format 'sse' component in a pdb object to include resid and length lapply(c(helix='helix', sheet='sheet'), function(x) { sse <- pdb[[x]] if(length(sse$start) > 0) { ref <- pdb$atom[pdb$calpha, c("resno", "chain", "insert", "resid")] refkey <- paste(ref$resno, ref$chain, ref$insert, sep = "_") insert <- sub(' +', '', names(sse$start)) insert[insert == ''] <- NA skey <- paste(sse$start, sse$chain, insert, sep="_") insert <- sub(' +', '', names(sse$end)) insert[insert == ''] <- NA ekey <- paste(sse$end, sse$chain, insert, sep="_") resno = data.frame(start = sse$start, end = sse$end) resid = data.frame(start = ref$resid[match(skey, refkey)], end = ref$resid[match(ekey, refkey)]) insert = data.frame(start= names(sse$start), end = names(sse$end)) type = ifelse(x=='helix', 'type', 'sense') length = match(ekey, refkey) - match(skey, refkey) + 1 return(list(resno=resno, resid=resid, chain=sse$chain, insert=insert, type=sse[[type]], length=length)) } else { return (NULL) } } ) } if(!is.null(pdb) && sse) { lines <- NULL new.sse <- format.sse(pdb) if(!is.null(new.sse$helix)) { xx <- new.sse$helix format <- "%-6s %3d %3s %3s %1s %4d%1s %3s %1s %4d%1s%2s%30s %5d" for(i in 1:nrow(xx$resno)) lines <- rbind(lines, sprintf(format, 'HELIX', i, i, xx$resid$start[i], xx$chain[i], xx$resno$start[i], xx$insert$start[i], xx$resid$end[i], xx$chain[i], xx$resno$end[i], xx$insert$end[i], xx$type[i], '', xx$length[i])) } if(!is.null(new.sse$sheet)) { xx <- new.sse$sheet format <- "%-6s %3d %3s%2d %3s %1s%4d%1s %3s %1s%4d%1s%2s" for(i in 1:nrow(xx$resno)) lines <- rbind(lines, sprintf(format, 'SHEET', i, 'S1', nrow(xx$resno), xx$resid$start[i], xx$chain[i], xx$resno$start[i], xx$insert$start[i], xx$resid$end[i], xx$chain[i], xx$resno$end[i], xx$insert$end[i], xx$type[i]) ) } if(!is.null(lines)) { write.table(lines, file = file, quote = FALSE, row.names = FALSE, col.names = FALSE, append = append) if(!append) append = TRUE } } ##################################### if(nfile==1) { coords <- matrix(round(as.numeric(xyz), 3), ncol = 3, byrow = TRUE) if (verbose) { cat(paste("Writing 1 frame with",natom,"atoms ")) } lines <- NULL ii = 0 teleno <- as.numeric(eleno) for (i in 1:natom) { lines <- rbind(lines, atom.print( card = card[i], eleno = as.character(teleno[i] + ii), elety = elety[i], alt = alt[i], resid = resid[i], chain = chain[i], resno = resno[i], insert = insert[i], x = coords[i, 1], y = coords[i, 2], z = coords[i, 3], o = o[i], b = b[i], segid = segid[i], elesy = elesy[i], charge = charge[i])) ## Inserted Jul 8th 2008 for adding TER between chains ## Modified to be consistent to PDB format v3.3 if(chainter) { if(i %in% ter.lines) { # lines <- rbind(lines, "TER ") ii = ii + 1 lines <- rbind(lines, sprintf("%-6s%5s%6s%3s%1s%1s%4s%1s", "TER", as.character(teleno[i] + ii), "", resid[i], "", chain[i], resno[i], insert[i])) } } } ## Changed cat() for write.table() as sugested by Joao Martins ##cat(lines, file = file, sep = "\n", append = append) write.table(lines, file = file, quote = FALSE, row.names = FALSE, col.names = FALSE, append = append) if(chainter) { ii = ii + 1 cat(sprintf("%-6s%5s%6s%3s%1s%1s%4s%1s\n", "TER", as.character(teleno[i] + ii), "", resid[i], "", chain[i], resno[i], insert[i]), file = file, append = TRUE) } if(end) { cat("END \n", file = file, append = TRUE) } } else { if (verbose) { cat(paste("Writing",nfile,"frames with",natom,"atoms"),"\n") cat("Frame Progress (x50) ") } if(!append) unlink(file) for (j in 1:nfile) { coords <- matrix(round(as.numeric(xyz[j,]), 3), ncol = 3, byrow = TRUE) lines <- NULL ii = 0 teleno <- as.numeric(eleno) for (i in 1:natom) { lines <- rbind(lines, atom.print( eleno = as.character(teleno[i] + ii), elety = elety[i], alt = alt[i], resid = resid[i], chain = chain[i], resno = resno[i], insert = insert[i], x = coords[i, 1], y = coords[i, 2], z = coords[i, 3], o = o[i], b = b[i], segid = segid[i], elesy = elesy[i], charge = charge[i])) ## Inserted Jul 8th 2008 for adding TER between chains (untested) ## Modified to be consistent to PDB format v3.3 if(chainter) { if(i %in% ter.lines) { # lines <- rbind(lines, "TER ") ii = ii + 1 lines <- rbind(lines, sprintf("%-6s%5s%6s%3s%1s%1s%4s%1s", "TER", as.character(teleno[i] + ii), "", resid[i], "", chain[i], resno[i], insert[i])) } } } if (verbose) { if (j%%50 == 0) cat(".") } ##cat(lines, file = file, sep = "\n", append = TRUE) cat(sprintf("%-6s%4s%4d\n", "MODEL", " ", j), file = file, append = TRUE) write.table(lines, file = file, quote = FALSE, row.names = FALSE, col.names = FALSE, append = TRUE) if(chainter) { ii = ii + 1 cat(sprintf("%-6s%5s%6s%3s%1s%1s%4s%1s\n", "TER", as.character(teleno[i] + ii), "", resid[i], "", chain[i], resno[i], insert[i]), file=file, append=TRUE) } cat(sprintf("%-6s\n", "ENDMDL"), file = file, append = TRUE) } if(end) { cat("END \n", file = file, append = TRUE) } } if (verbose) cat(" DONE","\n") } bio3d/R/uniprot.R0000644000176200001440000000444214707230357013312 0ustar liggesusersuniprot <- function(accid) { oops <- requireNamespace("XML", quietly = TRUE) if(!oops) stop("Please install the XML package from CRAN") url <- paste('http://www.uniprot.org/uniprot/', accid, '.xml', sep="") tmpfile <- tempfile() download.file(url, tmpfile) ##, method="wget") xml <- XML::xmlRoot(XML::xmlParse(tmpfile)) node.names <- XML::xmlSApply(xml[[1]], XML::xmlName) ## acession inds <- which(node.names=="accession") accession <- NULL for(i in 1:length(inds)) accession <- c(accession, XML::xmlValue(xml[[1]][[inds[i]]])) ## and name inds <- which(node.names=="name") name <- NULL for(i in 1:length(inds)) name <- c(name, XML::xmlValue(xml[[1]][[inds[i]]])) ## sequence inds <- which(node.names=="sequence") sequence <- gsub("\n", "", XML::xmlValue(xml[[1]][[inds]])) ## organism inds <- which(node.names=="organism") node <- xml[[1]][[inds]] organism <- NULL tmpl <- unlist(XML::xmlApply(node, XML::xmlAttrs)) if("scientific" %in% tmpl) organism <- XML::xmlValue(node[[which(tmpl %in% "scientific")]]) if("common" %in% tmpl) organism <- c(organism, XML::xmlValue(node[[which(tmpl %in% "common")]])) ## taxon inds <- which(node.names=="organism") node <- xml[[1]][[inds]] taxon <- NULL for ( i in 1:XML::xmlSize(node[['lineage']]) ) { taxon <- c(taxon, XML::xmlValue(node[['lineage']][[i]])) } ## protein node <- xml[[1]][['protein']] fullName <- XML::xmlValue(node[['recommendedName']][['fullName']]) shortName <- XML::xmlValue(node[['recommendedName']][['shortName']]) ## gene node <- xml[[1]][['gene']] gene <- XML::xmlValue(node[[1]]) ## dbReference inds <- which(node.names=="dbReference") dbref <- list() for(i in 1:length(inds)) { node <- xml[[1]][[inds[i]]] dbref[[i]] <- XML::xmlAttrs(node) } dbref <- unlist(dbref) type.inds <- names((dbref)) == "type" id.inds <- names((dbref)) == "id" dbref <- data.frame(type=dbref[type.inds], id=dbref[id.inds], stringsAsFactors=FALSE) out <- list(accession = accession, name = name, fullName = fullName, shortName = shortName, sequence = sequence, gene = gene, organism = organism, taxon = taxon, dbref=dbref) return(out) } bio3d/R/read.fasta.R0000644000176200001440000000331714707230357013622 0ustar liggesusers"read.fasta" <- function(file, rm.dup=TRUE, to.upper=FALSE, to.dash=TRUE) { ## Log the call cl <- match.call() ## Version 0.3 ... Thu Apr 26 19:17:09 PDT 2007 ## uses scan instead of read.table raw.fa <- scan(file, what=character(0), sep="\n", quiet = TRUE, na.strings='') ind <- grep(">", raw.fa) ## seq id lines if(length(ind) == 0) { stop("read.fasta: no '>' id lines found, check file format") } if (to.dash) { raw.fa[-ind] <- gsub("[/.]","-", raw.fa[-ind]) } if (to.upper) { raw.fa[-ind] <- toupper(raw.fa[-ind]) } ind.s <- ind+1 ## seq start and end lines ind.e <- c((ind-1)[-1], length(raw.fa)) seq.dim <- apply(cbind(ind.s, ind.e), 1, function(x) sum( nchar(raw.fa[ (x[1]:x[2])]) )) seq.format <- function(x, max.seq=max(seq.dim)) { fa <- rep("-",max.seq) fa[ c(1:x[3]) ] <- unlist(strsplit( raw.fa[ (x[1]:x[2]) ], split="")); return(fa) } ##seq.format( cbind(ind.s[1], ind.e[1], seq.dim[1]) ) store.fa <- t(matrix(apply(cbind(ind.s, ind.e, seq.dim), 1, seq.format), ncol=length(ind))) rownames(store.fa) <- gsub("^>| .*", "",raw.fa[ind], perl=TRUE) ## if (to.dash) { store.fa <- gsub("[/.]","-", store.fa ) } ## if (to.upper) { store.fa <- toupper(store.fa) } if (rm.dup) { ## remove duplicated seq id's ## dups <- as.numeric(duplicated(row.names(store.fa))) dups <- duplicated(row.names(store.fa)) if (any(dups)) { print(paste(" ** Duplicated sequence id's: ", row.names(store.fa)[dups]," **",sep="")) store.fa <- store.fa[!dups,] } } output <- list(id=rownames(store.fa), ali=store.fa, call=cl) class(output) <- "fasta" return(output) } bio3d/R/rgyr.R0000644000176200001440000000377314707230357012603 0ustar liggesusers# radius of gyration # xyz: length 3N, 1D array of atomic coordinates, # M*3N matrix, or a list object containing xyz # mass: length N 1D array of atomic masses [amu], # or a PDB object having masses stored in the # "B-factor" column rgyr <- function(xyz, mass=NULL, ncore=1, nseg.scale=1) { # Parallelized by parallel package ncore <- setup.ncore(ncore) if(ncore > 1) { # Issue of serialization problem # Maximal number of cells of a double-precision matrix # that each core can serialize: (2^31-1-61)/8 R_NCELL_LIMIT_CORE = 2.68435448e8 R_NCELL_LIMIT = ncore * R_NCELL_LIMIT_CORE if(nseg.scale < 1) { warning("nseg.scale should be 1 or a larger integer\n") nseg.scale=1 } } # check xyz, vector, matrix, or list if(is.list(xyz)) xyz <- xyz$xyz if(is.vector(xyz)) xyz <- matrix(xyz, nrow=1) #check mass array and load masses if(is.list(mass)) mass <- mass$atom[,"b"] if(is.null(mass)) # assume carbon mass <- rep(12.01, ncol(xyz)/3) if(ncol(xyz)/3 != length(mass)) stop("The length of masses doesn't match the number of atoms") rg <- function (xyz, mass) { nAtom <- length(mass) mc <- matrix(xyz, 3, nAtom) v <- replicate(3, mass) * t(mc) com <- colSums(v)/sum(mass) recenteredpos <- mc - replicate(nAtom, com) rog_sq <- sum(colSums(recenteredpos**2) * mass) rog_sq <- rog_sq / sum(mass) return( sqrt(rog_sq) ) } if(ncore > 1) { RLIMIT = R_NCELL_LIMIT nDataSeg = floor((nrow(xyz)-1)/RLIMIT)+1 nDataSeg = floor(nDataSeg * nseg.scale) lenSeg = floor(nrow(xyz)/nDataSeg) rog <- NULL for(i in 1:nDataSeg) { istart = (i-1)*lenSeg + 1 iend = if(i1) warning(paste("Alignment with multiple sequences detected. Using only the first sequence")) seq <- as.vector(seq[1,!is.gap(seq[1,])]) } else seq <- as.vector(seq[!is.gap(seq)]) return(paste(seq, collapse="")) } alnToStr <- function(seq) { if(!inherits(seq, "fasta")) stop("seq must be of type 'fasta'") tmpfile <- tempfile() write.fasta(seq, file=tmpfile) rawlines <- paste(readLines(tmpfile), collapse="\n") unlink(tmpfile) return(rawlines) } types.allowed <- c("phmmer", "hmmscan", "hmmsearch", "jackhmmer") if(! type%in%types.allowed ) stop(paste("Input type should be either of:", paste(types.allowed, collapse=", "))) ## PHMMER (protein sequence vs protein sequence database) ## seq is a sequence if(type=="phmmer") { seq <- seqToStr(seq) if(is.null(db)) db="pdb" db.allowed <- c("env_nr", "nr", "refseq", "pdb", "rp15", "rp35", "rp55", "rp75", "swissprot", "unimes", "uniprotkb", "uniprotrefprot", "pfamseq") db <- tolower(db) if(!db%in%db.allowed) stop(paste("db must be either:", paste(db.allowed, collapse=", "))) seqdb <- db hmmdb <- NULL iter <- NULL rcurl <- TRUE } ## HMMSCAN (protein sequence vs profile-HMM database) ## seq is a sequence if(type=="hmmscan") { seq <- seqToStr(seq) if(is.null(db)) db="pfam" db.allowed <- tolower(c("pfam", "gene3d", "superfamily", "tigrfam")) db <- tolower(db) if(!db%in%db.allowed) stop(paste("db must be either:", paste(db.allowed, collapse=", "))) seqdb <- NULL hmmdb <- db iter <- NULL rcurl <- TRUE } ## HMMSEARCH (protein alignment/profile-HMM vs protein sequence database) ## seq is an alignment if(type=="hmmsearch") { if(!inherits(seq, "fasta")) stop("please provide 'seq' as a 'fasta' object") ##alnfile <- tempfile() ##seq <- write.fasta(seq, file=alnfile) seq <- alnToStr(seq) if(is.null(db)) db="pdb" db.allowed <- tolower(c("pdb", "swissprot")) db <- tolower(db) if(!db%in%db.allowed) stop(paste("db must be either:", paste(db.allowed, collapse=", "))) seqdb <- db hmmdb <- NULL iter <- NULL rcurl <- TRUE } ## JACKHMMER (iterative search vs protein sequence database) ## seq can be sequence, HMM, or multiple sequence alignment ## HMM not implemented here yet if(type=="jackhmmer") { if(!inherits(seq, "fasta")) stop("please provide 'seq' as a 'fasta' object") ##alnfile <- tempfile() ##seq <- write.fasta(seq, file=alnfile) seq <- alnToStr(seq) if(is.null(db)) db="pdb" db.allowed <- tolower(c("pdb", "swissprot")) db.allowed <- c("env_nr", "nr", "refseq", "pdb", "rp15", "rp35", "rp55", "rp75", "swissprot", "unimes", "uniprotkb", "uniprotrefprot", "pfamseq") db <- tolower(db) if(!db%in%db.allowed) stop(paste("db must be either:", paste(db.allowed, collapse=", "))) seqdb <- db hmmdb <- NULL iter <- NULL rcurl <- TRUE } ## Make the request to the HMMER website ##url <- paste('http://hmmer.janelia.org/search/', type, sep="") url <- paste("https://www.ebi.ac.uk/Tools/hmmer/search/", type, sep="") curl.opts <- list(httpheader = "Expect:", httpheader = "Accept:text/xml", verbose = verbose, followlocation = TRUE ) hmm <- RCurl::postForm(url, hmmdb=hmmdb, seqdb=seqdb, seq=seq, style = "POST", .opts = curl.opts, .contentEncodeFun=RCurl::curlPercentEncode, .checkParams=TRUE ) ## check results from the server if(!grepl("results", hmm)) { if(verbose) { message("Content from HMMER server:") message(" ", hmm) } stop("Request to HMMER server failed") } add.pdbs <- function(x, ...) { hit <- XML::xpathSApply(x, '@*') pdbs <- unique(XML::xpathSApply(x, 'pdbs', XML::xmlToList)) new <- as.matrix(hit, ncol=1) if(length(pdbs) > 1) { for(i in 1:length(pdbs)) { hit["acc"]=pdbs[i] new=cbind(new, hit) } colnames(new)=NULL } return(new) } ##fetch.pdbs <- function(x) { ## unique(XML::xpathSApply(x, 'pdbs', XML::xmlToList)) ##} ## workaround for 'act_site' tags that can not be parsed ## XML Parsing Error: not well-formed, e.g. for 1h1h_A ## type = hmmscan and pdb = pfam if(grepl("act_site", hmm)) { lines <- unlist(strsplit(hmm, "\n")) actsite.inds <- grep("act_site", lines) actlen <- length(actsite.inds) if(actlen>2) { if(actlen%%2 != 0) { stop("Bad XML format") } rm.inds <- NULL for(i in seq(1, actlen, 2)) { rm.inds <- c(rm.inds, seq(actsite.inds[i], actsite.inds[i+1])) } hmm <- paste(lines[-rm.inds], collapse="\n") } else { hmm <- paste(lines[-seq(actsite.inds[1], actsite.inds[2])], collapse="\n") } } xml <- XML::xmlParse(hmm) resurl <- XML::xpathSApply(xml, '//data', XML::xpathSApply, '@*') resurl <- paste0("http://www.ebi.ac.uk/Tools/hmmer/results/", resurl["uuid", 1]) data <- XML::xpathSApply(xml, '///hits', XML::xpathSApply, '@*') pdb.ids <- NULL if(db=="pdb") { tmp <- XML::xpathSApply(xml, '///hits', add.pdbs) data <- as.data.frame(tmp, stringsAsFactors=FALSE) colnames(data) <- NULL } data <- as.data.frame(t(data), stringsAsFactors=FALSE) data <- data[!duplicated(data$acc), ] ##rownames(data) <- data[, "acc"] ## convert to numeric fieldsToNumeric <- c("evalue", "pvalue", "score", "archScore", "ndom", "nincluded", "niseqs", "nregions", "nreported", "bias", "dcl", "hindex") inds <- which(names(data) %in% fieldsToNumeric) for(i in 1:length(inds)) { tryCatch({ data[[inds[i]]] = as.numeric(data[[inds[i]]]) }, warning = function(w) { #print(w) return(data[[inds[i]]]) }, error = function(e) { #print(e) return(data[[inds[i]]]) } ) } data$pdb.id <- data$acc data$bitscore <- data$score data$mlog.evalue <- -log(data$evalue) data$mlog.evalue[is.infinite(data$mlog.evalue)] <- -log(.Machine$double.xmin) out <- list(hit.tbl = data, url = resurl) ##class(data) <- c("hmmer", type, "data.frame") class(out) <- c("hmmer", type) return(out) } bio3d/R/bounds.R0000644000176200001440000000264414707230356013105 0ustar liggesusers"bounds" <- function (nums, dup.inds=FALSE, pre.sort=TRUE) { if(dup.inds) { ## bounds of concetive duplicated numbers s.ind <- which(!duplicated(nums)) e.ind <- c(s.ind[-1]-1, length(nums)) return(cbind(1:length(s.ind),"start"=s.ind,"end"=e.ind, "length"=(e.ind - s.ind + 1))) } else { if (!is.numeric(nums)) stop("must supply a numeric vector") if (length(nums)==0) return(nums) if(pre.sort) { ## should we pre-sort... nums <- sort(unique(nums)) } if (length(nums) == 1) { bounds <- c(nums, nums, 1) names(bounds) <- c("start", "end", "length") ## Edit here to return matrix (not vector) ## following dssp bug report from Yun Liu ## Fri, Apr 29, 2011 return( t(as.matrix(bounds)) ) } bounds <- nums[1] nums.start <- nums[1] diff.i <- 1 for (i in 2:length(nums)) { if ((nums[i] - diff.i) != nums.start) { bounds <- c(bounds, nums[i - 1], nums[i]) nums.start <- nums[i] diff.i <- 1 } else { diff.i <- diff.i + 1 } } bounds <- c(bounds, nums[length(nums)]) bounds <- matrix(bounds, ncol = 2, byrow = TRUE, dimnames = list(c(1:(length(bounds)/2)), c("start", "end"))) bounds <- cbind(bounds, length = (bounds[, 2] - bounds[,1]) + 1) return(bounds) } } bio3d/R/aa321.R0000644000176200001440000000242414707230356012416 0ustar liggesusers"aa321" <- function (aa) { # convert three-letters amino-acid code into # one-letter IUPAC code, for instance "ALA" into "A". # new residues should be added to through the util/make_aatable.R script aa1 <- c("-", ".", "X", bio3d::aa.table$aa1) aa3 <- c("---", "---","UNK", bio3d::aa.table$aa3) convert <- function(x) { if(is.na(x)) return(NA) if (all(x != aa3)) { warning(paste("Unknown 3-letters code for aminoacid:",x)) return("X") # mask unk } else { return(aa1[which(x == aa3)]) } } return(as.vector(unlist(sapply(aa, convert)))) } ".aa321.na" <- function (aa) { # convert three-letters amino-acid code into # one-letter IUPAC code, for instance "ALA" into "A". aa1 <- c("-",".","X", "C", "G", "T", "A", "U", "I", "C", "G", "T"," A", "U", "I") aa3 <- c("---", "---","UNK", "DC", "DG", "DT", "DA", "DU", "DI", "C", "G", "T", "A", "U", "I") convert <- function(x) { if(is.na(x)) return(NA) if (all(x != aa3)) { warning(paste("Unknown 3-letters code for residue:",x)) return("X") # mask unk } else { return(aa1[which(x == aa3)]) } } return(as.vector(unlist(sapply(aa, convert)))) } bio3d/R/rot.lsq.R0000644000176200001440000000425314707230357013214 0ustar liggesusers"rot.lsq" <-function(xx, yy, xfit=rep(TRUE,length(xx)), yfit=xfit, verbose=FALSE) { # Coordinate superposition with the Kabsch algorithm # from Acta Cryst (1978) A34 pp827-828 (to which equation no. refer) # yy is the target (i.e. fixed) xx <- matrix(xx,nrow=3, ) x <- matrix(xx[xfit],nrow=3, ) y <- matrix(yy[yfit],nrow=3, ) if(length(x) != length(y)) stop("dimension mismatch in x and y") # mean positions xbar <- apply(x,1,mean) ; ybar <- apply(y,1,mean) # center both sets xx <- sweep(xx,1,xbar) # NB xx centred on xbar x <- sweep(x,1,xbar) ; y <- sweep(y,1,ybar) #irmsd <- sqrt(sum((x-y)^2)/dim(y)[2]) #cat("#irmsd= ",round(irmsd,6),"\n") # generate the 3x3 moment matrix: R (Equation 3) R <- y %*% t(x) # form R'R RR <- t(R) %*% R # diagonalize R'R prj <- eigen(RR) prj$values[prj$values < 0 & prj$values >= -1.0E-12]<-1.0E-12 # form A A <- prj$vectors # make explicitly rh system # A[,3] <- v3cross(A[,1],A[,2]) # inline the cross-product function call. b<-A[,1]; c <- A[,2] A[1,3] <- (b[2] * c[3]) - (b[3] * c[2]) A[2,3] <- (b[3] * c[1]) - (b[1] * c[3]) A[3,3] <- (b[1] * c[2]) - (b[2] * c[1]) # form B (==RA) (Equation 8) B <- R %*% A # normalize B # B <- sweep(B,2,sqrt(apply(B^2,2,sum)),"/") B <- sweep(B,2,sqrt(prj$values),"/") # make explicitly rh system # B[,3] <- v3cross(B[,1],B[,2]) # inline the cross-product function call. b<-B[,1]; c <- B[,2] B[1,3] <- (b[2] * c[3]) - (b[3] * c[2]) B[2,3] <- (b[3] * c[1]) - (b[1] * c[3]) B[3,3] <- (b[1] * c[2]) - (b[2] * c[1]) # form U (==Ba) (Equation 7) # U is the rotation matrix U <- B %*% t(A) # here we apply transformation matrix to *all* elements of xx # rotate xx (Uxx) xx <- U %*% xx if(verbose) { ## also apply it to the subset, in order to compute residual x <- U %*% x ## estimate of residuals frmsd <- sqrt(sum((x-y)^2)/dim(y)[2]) cat("#rmsd= ",round(frmsd,6),"\n") } # fest <- iest - sum(sqrt(prj$values)) # print(sqrt((2*fest)/dim(y)[2])) # return xx centred on y xx <- sweep(xx,1,ybar,"+") as.vector(xx) } bio3d/R/read.pdb2.R0000644000176200001440000002266714707230357013364 0ustar liggesusers"read.pdb2" <- function (file, maxlines=-1, multi=FALSE, rm.insert=FALSE, rm.alt=TRUE, ATOM.only = FALSE, verbose=TRUE) { if(missing(file)) { stop("read.pdb: please specify a PDB 'file' for reading") } if(!is.numeric(maxlines)) { stop("read.pdb: 'maxlines' must be numeric") } if(!is.logical(multi)) { stop("read.pdb: 'multi' must be logical TRUE/FALSE") } ##- Check if file exists locally or on-line toread <- file.exists(file) if(substr(file,1,4)=="http") { toread <- TRUE } ## Check for 4 letter code and possible on-line file if(!toread) { if(nchar(file)==4) { file <- get.pdb(file, URLonly=TRUE) cat(" Note: Accessing on-line PDB file\n") } else { stop("No input PDB file found: check filename") } } cl <- match.call() ## PDB FORMAT v3.3: colpos, datatype, name, description atom.format <- matrix(c(6, 'character', "type", # type(ATOM) 5, 'numeric', "eleno", # atom_no -1, NA, NA, # (blank) 4, 'character', "elety", # atom_ty 1, 'character', "alt", # alt_loc 4, 'character', "resid", # res_na 1, 'character', "chain", # chain_id 4, 'numeric', "resno", # res_no 1, 'character', "insert", # ins_code -3, NA, NA, # (blank) 8, 'numeric', "x", # x 8, 'numeric', "y", # y 8, 'numeric', "z", # z 6, 'numeric', "o", # o 6, 'numeric', "b", # b -6, NA, NA, # (blank) 4, 'character', "segid", # seg_id 2, 'character', "elesy", # element_symbol 2, 'character', "charge" # atom_charge (should be 'numeric'] ), ncol=3, byrow=TRUE, dimnames = list(c(1:19), c("widths","what","name")) ) trim <- function(s) { ##- Remove leading and trailing spaces from character strings s <- sub("^ +", "", s) s <- sub(" +$", "", s) s[(s=="")]<-"" s } split.fields <- function(x) { ##- Split a character string for data.frame fwf reading ## First splits a string 'x' according to 'first' and 'last' ## then re-combines to new string with ";" as separator x <- trim( substring(x, first, last) ) paste(x,collapse=";") } is.character0 <- function(x){length(x)==0 & is.character(x)} ##- Find first and last (substr) positions for each field widths <- as.numeric(atom.format[,"widths"]) # fixed-width spec drop.ind <- (widths < 0) # cols to ignore (i.e. -ve) widths <- abs(widths) # absolute vales for later st <- c(1, 1 + cumsum( widths )) first <- st[-length(st)][!drop.ind] # substr start last <- cumsum( widths )[!drop.ind] # substr end names(first) = na.omit(atom.format[,"name"]) names(last) = names(first) ##- Read 'n' lines of PDB file raw.lines <- readLines(file, n = maxlines) type <- substring(raw.lines, first["type"], last["type"]) ##- Check number of END/ENDMDL records raw.end <- sort(c(which(type == "END"), which(type == "ENDMDL"))) ## Check if we want to store multiple model data if (length(raw.end) > 1) { cat(" PDB has multiple END/ENDMDL records \n") if (!multi) { cat(" multi=FALSE: taking first record only \n") } else { cat(" multi=TRUE: 'read.dcd/read.ncdf' will be quicker! \n") raw.lines.multi <- raw.lines type.multi <- type } raw.lines <- raw.lines[ (1:raw.end[1]) ] type <- type[ (1:raw.end[1]) ] } ##- Check for 'n' smaller than total lines in PDB file if ( length(raw.end) !=1 ) { if (length(raw.lines) == maxlines) { cat(" You may need to increase 'maxlines' \n") cat(" check you have all data in $atom \n") } } ##- Shortened records if ATOM.only = TRUE if(ATOM.only) { raw.lines <- raw.lines[type %in% c("HEADER", "ATOM ", "HETATM")] type <- substring(raw.lines, first["type"], last["type"]) } ##- Parse REMARK records for storing symmetry matrices to ## build biological unit by calling 'biounit()' remark <- .parse.pdb.remark350(raw.lines) ##- Split input lines by record type raw.header <- raw.lines[type == "HEADER"] raw.seqres <- raw.lines[type == "SEQRES"] raw.helix <- raw.lines[type == "HELIX "] raw.sheet <- raw.lines[type == "SHEET "] raw.atom <- raw.lines[type %in% c("ATOM ","HETATM")] if (verbose) { if (!is.character0(raw.header)) { cat(" ", raw.header, "\n") } } ## Edit from Baoqiang Cao Nov 29, 2009 ## Old version: ## seqres <- unlist(strsplit( trim(substring(raw.seqres,19,80))," +")) ## New version seqres <- unlist(strsplit( trim(substring(raw.seqres,19,80))," +")) if(!is.null(seqres)) { seqres.ch <- substring(raw.seqres, 12, 12) seqres.ln <- substring(raw.seqres, 13, 17) seqres.in <- ( !duplicated(seqres.ch) ) names(seqres) <- rep(seqres.ch[seqres.in], times=seqres.ln[seqres.in]) } ## End Edit from Baoqiang: ##- Secondary structure if(length(raw.helix) > 0) { helix <- list(start = as.numeric(substring(raw.helix,22,25)), end = as.numeric(substring(raw.helix,34,37)), chain = trim(substring(raw.helix,20,20)), type = trim(substring(raw.helix,39,40))) ##- insert code for initial and end residues of helices insert.i <- trim(substring(raw.helix,26,26)) insert.e <- trim(substring(raw.helix,38,38)) names(helix$start) <- insert.i names(helix$end) <- insert.e } else { helix <- NULL } if(length(raw.sheet) > 0) { sheet <- list(start = as.numeric(substring(raw.sheet,23,26)), end = as.numeric(substring(raw.sheet,34,37)), chain = trim(substring(raw.sheet,22,22)), sense = trim(substring(raw.sheet,39,40))) ##- insert code for initial and end residues of sheets insert.i <- trim(substring(raw.sheet,27,27)) insert.e <- trim(substring(raw.sheet,38,38)) names(sheet$start) <- insert.i names(sheet$end) <- insert.e ##- remove repeated records for the same strand (e.g. in 1NH0) pa <- paste(sheet$start, insert.i, sheet$chain, sep='_') keep.inds <- which(!duplicated(pa)) sheet <- lapply(sheet, '[', keep.inds) } else { sheet <- NULL } ## 2014-04-23 ## Update to use single data.frame for ATOM and HETATM records ## file="2RGF"; multi=TRUE; ## file="./4q21.pdb"; maxlines=-1; multi=FALSE; ## rm.insert=FALSE; rm.alt=TRUE; het2atom=FALSE; verbose=TRUE atom <- read.table(text=sapply(raw.atom, split.fields), stringsAsFactors=FALSE, sep=";", quote='', colClasses=unname(atom.format[!drop.ind,"what"]), col.names=atom.format[!drop.ind,"name"], comment.char="", na.strings="") ##-- End data.frame update ##- Coordinates only object ###xyz.models <- c(t(atom[,c("x","y","z")])) xyz.models <- matrix(as.numeric(c(t(atom[,c("x","y","z")]))), nrow=1) ##- Multi-model coordinate extraction if (length(raw.end) > 1 && multi) { raw.atom <- raw.lines.multi[ type.multi %in% c("ATOM ","HETATM") ] if( (length(raw.atom)/length(raw.end)) ==nrow(atom) ){ ## Only work with models with the same number of atoms) tmp.xyz=( rbind( substr(raw.atom, first["x"],last["x"]), substr(raw.atom, first["y"],last["y"]), substr(raw.atom, first["z"],last["z"]) ) ) ## Extract coords to nrow/frame * ncol/xyz matrix xyz.models <- matrix( as.numeric(tmp.xyz), ncol=nrow(atom)*3, nrow=length(raw.end), byrow=TRUE) rownames(xyz.models) = NULL } else { warning(paste("Unequal number of atoms in multi-model records:", file)) } rm(raw.lines.multi) } rm(raw.lines, raw.atom) ##- Possibly remove 'Alt records' (m[,"alt"] != NA) if (rm.alt) { if ( sum( !is.na(atom[,"alt"]) ) > 0 ) { first.alt <- sort( unique(na.omit(atom[,"alt"])) )[1] cat(paste(" PDB has ALT records, taking",first.alt,"only, rm.alt=TRUE\n")) alt.inds <- which( (atom[,"alt"] != first.alt) ) # take first alt only if(length(alt.inds)>0) { atom <- atom[-alt.inds,] xyz.models <- xyz.models[ ,-atom2xyz(alt.inds), drop=FALSE ] } } } ##- Possibly remove 'Insert records' if (rm.insert) { if ( sum( !is.na(atom[,"insert"]) ) > 0 ) { cat(" PDB has INSERT records, removing, rm.insert=TRUE\n") insert.inds <- which(!is.na(atom[,"insert"])) # rm insert positions atom <- atom[-insert.inds,] xyz.models <- xyz.models[ ,-atom2xyz(insert.inds), drop=FALSE ] } } output<-list(atom=atom, #het=atom[atom$type=="HETATM",], helix=helix, sheet=sheet, seqres=seqres, xyz=as.xyz(xyz.models), calpha = NULL, remark = remark, call=cl) class(output) <- c("pdb", "sse") ca.inds <- atom.select.pdb(output, string="calpha", verbose=FALSE) output$calpha <- seq(1, nrow(atom)) %in% ca.inds$atom return(output) } bio3d/R/trim.xyz.R0000644000176200001440000000054314707230357013414 0ustar liggesusers"trim.xyz" <- function(xyz, row.inds=NULL, col.inds=NULL, ...) { xyz <- as.xyz(xyz) if(is.select(row.inds)) row.inds <- row.inds$xyz if(is.select(col.inds)) col.inds <- col.inds$xyz if(!is.null(row.inds)) xyz <- xyz[row.inds, , drop=FALSE] if(!is.null(col.inds)) xyz <- xyz[, col.inds, drop=FALSE] return(as.xyz(xyz)) } bio3d/R/pfam.R0000644000176200001440000000216714707230356012536 0ustar liggesusers"pfam" <- function(id, alignment='seed', verbose=FALSE) { ##alignment <- 'full' ## seed, ncbi, full, metagenomics oops <- requireNamespace("RCurl", quietly = TRUE) if(!oops) stop("Please install the RCurl package from CRAN") cl <- match.call() format <- "fasta" url = paste('http://pfam.xfam.org/family/', id, '/acc', sep='') if(verbose) cat("Fetching accession from", url, "\n") if(!RCurl::url.exists(url)) { cat(url, "\n") stop("Url does not exist") } accid <- readLines(url, warn=FALSE)[1] ## download alignment url <- paste('http://pfam.xfam.org/family/', accid, '/alignment/', alignment, '/format?format=', format, sep='') if(verbose) cat("Fetching alignment from", url, "\n") if(!RCurl::url.exists(url)) { cat(url, "\n") stop("Url does not exist") } tmpfile <- tempfile() success <- download.file(url, tmpfile, quiet=!verbose) if(success==1) stop("Download failed") if(verbose) cat("Alignment successfully downloaded (", tmpfile, ")\n") fasta <- read.fasta(tmpfile) unlink(tmpfile) fasta$call=cl return(fasta) } bio3d/R/get.seq.R0000644000176200001440000001124014707230356013151 0ustar liggesusers`get.seq` <- function(ids, outfile="seqs.fasta", db="nr", verbose=FALSE) { ## Download FASTA format sequences from the NCBI nr, ## SWISSPROT/UNIPROT, or RCSB PDB databases via their gi, ## SWISSPROT identifer number, or PDB ids. oops <- requireNamespace("httr", quietly = TRUE) if(!oops) stop("Please install the httr package from CRAN") db <- tolower(db) if( !(db %in% c("nr", "swissprot", "uniprot", "pdb")) ) stop("Option database should be one of nr, swissprot/uniprot, or pdb") db <- switch(db, nr='nr', swissprot='uniprotkb', uniprot='uniprotkb', pdb='pdb') ids <- toupper(ids) ids <- unique(ids) if(db == "nr") { baseUrl <- 'https://www.ncbi.nlm.nih.gov/sviewer/viewer.fcgi?db=protein' } else { baseUrl <- 'https://www.ebi.ac.uk/Tools/dbfetch/dbfetch' # check if API works url <- paste(baseUrl, '/dbfetch.databases', sep='') resp <- httr::GET(url) if(httr::http_error(resp)) stop('Access to EMBL-EBI server failed.') } # fetch sequences ## Remove existing file if(file.exists(outfile)) { warning(paste("Removing existing file:",outfile)) unlink(outfile) } if(verbose) { cat("Fetching sequences from\n\t", baseUrl, "\n\nPlease wait", sep="") } else { cat("Fetching... Please wait") } ## do multiple requests if # of sequences > nmax if(grepl('ebi', baseUrl)) { nmax = 100 } else { nmax = 500 } errorCount=0 checkInterval = 3 checkInterval2 = 300 # wait longer if blocked by servers n <- floor( (length(ids)-1)/nmax) + 1 for(i in 1:n) { if(i>1) Sys.sleep(10) # sleep 10s before sending another request i1 <- (i-1)*nmax+ 1 i2 <- ifelse(i*nmax>length(ids), length(ids), i*nmax) ids1 <- ids[i1:i2] if(db=="nr") { url <- paste(baseUrl, "&val=", paste(ids1, collapse=','), "&report=fasta&retmode=text&page_size=",nmax, sep='') } else { url <- paste(baseUrl, '?db=', db, '&id=', paste(ids1, collapse=','), '&format=fasta&style=raw', sep='') } resp <- try(httr::GET(url), silent=TRUE) if(inherits(resp, 'try-error')) { text <- 'LOST CONNECTION' } else { text <- httr::content(resp, 'text', encoding='utf-8') } retry=0 while((grepl('^LOST CONNECTION', text) || httr::http_error(resp) || grepl('^ERROR', text) || grepl('Nothing has been found', text)) && retry<3) { retry = retry + 1 if(grepl('^LOST CONNECTION', text)) { if(verbose) { cat('\nLost connection to the URL:\n\t', url, '\n\nRetry ', retry, ' in ', as.integer(checkInterval2*retry/60), ' minutes...', sep='') } else { cat('\nLost connection. Retry ', retry, ' in ', as.integer(checkInterval2*retry/60), 'min...', sep='') } Sys.sleep(checkInterval2 * retry) } else { if(verbose) { cat('\nFetching sequences failed from the URL:\n\t', url, '\n\nRetry ', retry, '...', sep='') } else { cat('\nFailed. Retry ', retry, '...', sep='') } Sys.sleep(checkInterval) } resp <- try(httr::GET(url), silent=TRUE) if(inherits(resp, 'try-error')) { text <- 'LOST CONNECTION' } else { text <- httr::content(resp, 'text', encoding='utf-8') } } if(grepl('^LOST CONNECTION', text) || httr::http_error(resp) || grepl('^ERROR', text) || grepl('Nothing has been found', text)) { errorCount = errorCount + 1 if(errorCount==n) stop('No sequence found. Check the ID(s).') } else { ## BUGFIX: remove the space between uniprot ID and acc. no. ## and so both will be read via read.fasta() for checking below. if(db == "uniprotkb") { text <- gsub("(>[^ ]*) ", "\\1|", text) } cat(text, file=outfile, append=TRUE) } cat('.') } cat(' Done.\n') # check if all sequences are downloaded successfully. seqs <- read.fasta(outfile) if(db=="nr") { myids <- strsplit(seqs$id, split='\\|') myids <- sapply(myids, function(x) { ii <- match('pdb', x) if(!is.na(ii)) { x[ii+1] <- paste(x[ii+1], x[ii+2], sep='_') } paste(x, collapse='|') }) rtn <- sapply(ids, function(x) !any(grepl(x, myids))) if(length(seqs$id) == length(ids)) { if(any(rtn)) { warning("Returned sequence IDs may be different from query.") } rtn = FALSE } } else { rtn <- sapply(ids, function(x) !any(grepl(x, seqs$id))) } if(all(!rtn)) { return(seqs) } else { warning("Not all downloads were successful. See returned values (TRUE=possibly failed).") return(rtn) } } bio3d/R/read.crd.charmm.R0000644000176200001440000000306414707230357014541 0ustar liggesusers"read.crd.charmm" <- function(file, ext=TRUE, verbose = TRUE, ...) { split.string <- function(x) { x <- substring(x, first, last) x[nchar(x) == 0] <- as.character(NA) x } trim <- function(s) { s <- sub("^ +", "", s) s <- sub(" +$", "", s) s[(s == "")] <- NA s } if(ext) atom.format <- c(10, 10, 8, 8, -4, 20,20,20, -1, 8, -1, 8, 20) else atom.format <- c(5, 5, 4, 5, -1, 10,10,10, -1, 4, -1, 4, 10) atom.names <- c("eleno", "resno", "resid", "elety", "blank", "x", "y", "z", "blank", "segid", "blank", "resno2", "b") widths <- abs(atom.format) drop.ind <- (atom.format < 0) st <- c(1, 1 + cumsum(widths)) first <- st[-length(st)][!drop.ind] last <- cumsum(widths)[!drop.ind] raw.lines <- readLines(file) head.ind <- which(substr(raw.lines,1,1)=="*") head.ind <- c(head.ind, (head.ind[length(head.ind)]+1) ) if(length(head.ind)>0) { raw.lines <- raw.lines[-head.ind] if(verbose) cat(raw.lines[head.ind],sep="\n") } atom <- matrix(trim(sapply(raw.lines, split.string)), byrow = TRUE, ncol = length(atom.format[!drop.ind]), dimnames = list(NULL, atom.names[!drop.ind]) ) output <- list(atom = atom, xyz = as.numeric(t(atom[, c("x", "y", "z")])), calpha = as.logical(atom[, "elety"] == "CA")) class(output) <- c("charmm", "crd") return(output) } bio3d/R/plot.pca.loadings.R0000644000176200001440000000154314707230357015130 0ustar liggesusers"plot.pca.loadings" <- function(x, resnums= seq(1,(length(x[,1])/3), 25), ... ) { # Plot residue loadings along PC1 to PC3 if given an xyz # C-alpha matrix of "loadings" (e.g. as returned from # 'pca.xyz' such a 'pca.trj$loadings') # For more info see 'pca.res.loadings' # # To Do: add gap.cols options if(is.list(x)) x=x$U pos <- resnums*3 op <- par(no.readonly=TRUE) on.exit(par(op)) par(mfrow=c(3,1), mar=c(4,4,2,2)) plot(abs(x[,1]),main="",type="h", axes=FALSE, xlab="Index Number", ylab="PC1") axis(1, at=pos, labels=resnums) axis(2) box() plot(abs(x[,2]),main="",type="h", axes=FALSE,xlab="Index Number",ylab="PC2") axis(1, at=pos,labels=(pos)/3) axis(2) box() plot(abs(x[,3]),main="",type="h", axes=FALSE,xlab="Index Number",ylab="PC3") axis(1, at=pos,labels=(pos)/3) axis(2) box() } bio3d/R/inner.prod.R0000644000176200001440000000132714707230356013666 0ustar liggesusers"inner.prod" <- function(x,y,mass=NULL) { x <- as.matrix(x); y <- as.matrix(y); dx <- dim(x); dy <- dim(y); if(dx[1]!=dy[1]) stop("inner.prod: unequal vector lengths") if(dx[2]>1 && dy[2]>1) { if(dx[2]!=dy[2]) stop("inner.prod: unequal vector lengths") } if(dx[2]==1) x <- as.numeric(x) if(dy[2]==1) y <- as.numeric(y) if(!is.null(mass)) { if (dx[1] != (length(mass)*3)) stop("inner.prod: incorrect length of mass") } if(is.null(mass)) mass <- 1 else mass <- rep(mass,each=3) if(is.matrix(x) || is.matrix(y)) return(colSums((x*y)*mass^2)) else return(sum(x*y*mass^2)) } bio3d/R/trim.pdb.R0000644000176200001440000000476114707230357013335 0ustar liggesuserstrim <- function(...) UseMethod("trim") "trim.pdb" <- function(pdb, ..., inds=NULL, sse=TRUE) { if(!is.pdb(pdb)) stop("input 'pdb' must be a PDB list object as returned from 'read.pdb'") cl <- match.call() extra.args <- list(...) if(length(extra.args)>0) { if(!is.null(inds)) warning("Multiple atom selection terms provided. Using only argument 'inds'") else if(is.select(extra.args[[1]])) # to be back-compatible with the habit calling trim.pdb(pdb, inds) inds = extra.args[[1]] else inds = atom.select(pdb, ...) } if(is.null(inds)) stop("no selection indices provided") if(!is.list(inds)) stop("selection indices must be provided i.e. from 'atom.select'") if(is.null(inds$atom) || is.null(inds$xyz)) stop("selection indices must be provided i.e. from 'atom.select'") ## Trim atom components atom <- pdb$atom[inds$atom,] ## Add calpha indices if non-existing if(is.null(pdb$calpha)) { ca.inds <- atom.select(pdb, "calpha") pdb$calpha <- rep(FALSE, nrow(pdb$atom)) pdb$calpha[ca.inds$atom] <- TRUE } ## Trim calpha indices calpha <- pdb$calpha[inds$atom] ## Trim xyz components xyz <- trim.xyz(pdb$xyz, col.inds = inds$xyz) ## Trim SSE components helix <- NULL; sheet <- NULL; if(sse) { ss <- pdb2sse(pdb, verbose = FALSE) ##- Trim sse vector calpha2 <- which(pdb$calpha) %in% inds$atom ss <- ss[calpha2] ##- New sse new.sse <- bounds.sse(ss) helix <- new.sse$helix if(length(helix$start) > 0) { ##- add back other components add <- pdb$helix[!names(pdb$helix) %in% names(new.sse$helix)] ##- match sse number in case some sse are completely removed add <- lapply(add, function(x) x[new.sse$helix$id]) helix <- c(helix, add) } sheet <- new.sse$sheet if(length(sheet$start) > 0) { ##- add back other components add <- pdb$sheet[!names(pdb$sheet) %in% names(new.sse$sheet)] ##- match sse number in case some sse are completely removed add <- lapply(add, function(x) x[new.sse$sheet$id]) sheet <- c(sheet, add) } ##- remove 'id'; Maybe we don't need it? helix$id <- NULL sheet$id <- NULL } output <- list(atom = atom, helix = helix, sheet = sheet, seqres = pdb$seqres, ## return unmodified xyz = xyz, calpha = calpha, call = cl) class(output) <- class(pdb) return(output) } bio3d/R/as.pdb.prmtop.R0000644000176200001440000000412414707230356014275 0ustar liggesusersas.pdb.prmtop <- function(prmtop, crd=NULL, inds=NULL, inds.crd=inds, ncore=NULL, ...) { ncore <- setup.ncore(ncore, bigmem=FALSE) if(ncore>1) mylapply <- mclapply else mylapply <- lapply if(!inherits(prmtop, "prmtop")) stop("provide a prmtop object as obtained from function read.prmtop") natoms.prmtop <- prmtop$POINTERS[1] if(is.null(crd)) { warning("producing PDB object with no XYZ coordinates") crd <- as.numeric(rep(NA, natoms.prmtop*3)) } if(!inherits(crd, "amber")) { new <- list() new$xyz <- as.xyz(crd) new$natoms <- ncol(new$xyz)/3 crd <- new } natoms.crd <- crd$natoms if( any(c(!is.null(inds), !is.null(inds.crd))) ) { if(is.null(inds)) { inds$atom = seq(1, natoms.prmtop) inds$xyz = atom2xyz(inds$atom) class(inds) = "select" } if(is.null(inds.crd)) { inds.crd$atom = seq(1, natoms.crd) inds.crd$xyz = atom2xyz(inds.crd$atom) class(inds.crd)="select" } natoms.prmtop = length(inds$atom) natoms.crd = length(inds.crd$atom) } if(natoms.prmtop != natoms.crd) stop(paste("atom number mismatch:", natoms.prmtop, "(prmtop) vs", natoms.crd, "(crds)")) resmap <- function(i, type='resid') { if(i==length(prmtop$RESIDUE_POINTER)) j <- prmtop$POINTERS[1] - prmtop$RESIDUE_POINTER[i] + 1 else j <- prmtop$RESIDUE_POINTER[i+1] - prmtop$RESIDUE_POINTER[i] if(type=='resno') return(rep(i,j)) if(type=='resid') return(rep(prmtop$RESIDUE_LABEL[i], j)) } resno <- unlist(mylapply(1:length(prmtop$RESIDUE_POINTER), resmap, 'resno')) resid <- unlist(mylapply(1:length(prmtop$RESIDUE_POINTER), resmap, 'resid')) if(any(c(!is.null(inds), !is.null(inds.crd)))) { pdb <- as.pdb.default(xyz=crd$xyz[,inds.crd$xyz], elety=prmtop$ATOM_NAME[inds$atom], resno=resno[inds$atom], chain=as.character(NA), resid=resid[inds$atom]) } else { pdb <- as.pdb.default(xyz=crd$xyz, elety=prmtop$ATOM_NAME, resno=resno, chain=as.character(NA), resid=resid) } pdb$call = match.call() return(pdb) } bio3d/R/print.nma.R0000644000176200001440000000163314707230357013517 0ustar liggesusers"print.nma" <- function(x, nmodes=6, ...) { cn <- class(x) cat("\nCall:\n ", paste(deparse(x$call), sep = "\n", collapse = "\n"), "\n\n", sep = "") cat("Class:\n ", cn[1], " (", cn[2], ")", "\n\n", sep = "") cat("Number of modes:\n ", length(x$L), " (", x$triv.modes, " trivial)", "\n\n", sep="") inds <- (x$triv.modes+1):(x$triv.modes+nmodes) if(!is.null(x$frequencies)) { freqs <- round(x$frequencies[inds], 3) cat("Frequencies:\n", sep="") } else { freqs <- round(x$force.constants[inds], 3) cat("Force constants:\n", sep="") } i <- x$triv.modes for ( f in freqs ) { i <- i+1 cat(" Mode ", i, ": \t", f, "\n", sep="") } cat("\n") i <- paste( attributes(x)$names, collapse=", ") cat(strwrap(paste(" + attr:",i,"\n"),width=60, exdent=8), sep="\n") invisible(x) } bio3d/R/as.fasta.R0000644000176200001440000000164214707230356013310 0ustar liggesusers"as.fasta" <- function(x, id=NULL, ...) { cl <- match.call() if(is.list(x)) { if(is.null(id)) id <- x$id x <- x$ali } if(is.vector(x)) { if(any(nchar(x)>1)) stop("provide a matrix/vector of one letter amino acid codes") ##x <- seqbind(lapply(lapply(x, strsplit, ""), unlist)) x <- as.matrix(t(x)) } if(is.matrix(x)) { if(is.null(id)) id <- rownames(x) if(is.null(id)) id <- paste("seq",1:nrow(x), sep="") if(any(id=="") | any(is.na(id))) { id[id==""] <- NA inds <- which(is.na(id)) id[inds] <- paste("seq", inds, sep="") } if(nrow(x) != length(id)) stop("length of 'id' does not match number of rows in alignment") rownames(x) <- id } else { stop("provide a sequence character matrix/vector") } out <- list(id=id, ali=x, call=cl) class(out) <- "fasta" return(out) } bio3d/R/print.core.R0000644000176200001440000000124314707230357013671 0ustar liggesusersprint.core <- function(x, vol=NULL, ...) { cv <- x$volume; cv[is.na(cv)]=min(cv,na.rm=TRUE) cl <- x$length; cl[is.na(cl)]=min(cl,na.rm=TRUE) ca <- NULL; cx <- NULL; cr <- NULL if(is.null(vol)) vol <- 1 ind <- (cv<=vol) ca <- sort(x$step.inds[ind]) cx <- atom2xyz(ca) cr <- sort(x$resno[ind]) nc <- length(ca) cat(paste("#",nc, "positions (cumulative volume <=", vol,"Angstrom^3)"),"\n") if(nc==0) { cat(paste("# Min volume is",round(min(cv),3)),"\n") } else { print(bounds(as.numeric(cr)), ...) } ##NextMethod("print", x, quote = FALSE, right = TRUE, ...) invisible(list(atom=ca, xyz=cx, resno=cr)) } bio3d/R/print.cna.R0000644000176200001440000000147414707230357013510 0ustar liggesusersprint.cna <- function(x, ...) { ## Check for presence of igraph package oops <- requireNamespace("igraph", quietly = TRUE) if (!oops) { stop("igraph package missing: Please install, see: ?install.packages") } ## y <- summary.cna(x, ...) l1 <- paste( "\n - NETWORK NODES#: ", x$communities$vcount, "\tEDGES#:", igraph::ecount(x$network)) l2 <- paste( "\n - COMMUNITY NODES#:", max(x$communities$membership), "\tEDGES#:", igraph::ecount(x$community.network)) cat("\nCall:\n ", paste(deparse(x$call), sep = "\n", collapse = "\n"), "\n", sep = "") cat("\nStructure:",l1,l2,"\n\n ") i <- paste( attributes(x)$names, collapse=", ") cat(strwrap(paste(" + attr:",i,"\n"),width=60, exdent=8), sep="\n") #print.igraph(x$network) #print.igraph(x$community.network) } bio3d/R/atom.select.prmtop.R0000644000176200001440000000051014707230356015337 0ustar liggesusers"atom.select.prmtop" <- function(prmtop, ...) { if(!inherits(prmtop, "prmtop")) stop("provide a PRMTOP object as obtained from read.prmtop()") cl <- match.call() tmp.pdb <- as.pdb.prmtop(prmtop, crd=as.numeric(rep(NA, prmtop$POINTERS[1]*3))) sele <- atom.select.pdb(tmp.pdb, ...) sele$call <- cl return(sele) } bio3d/R/print.xyz.R0000644000176200001440000000162414707230357013576 0ustar liggesusersprint.xyz <- function(x, ...) { ## Print a summary of bio3d 'xyz' object features if(!inherits(x, "xyz")) { stop("Input should be a bio3d 'xyz' object") } if( is.null(nrow(x)) ) x <- t(as.matrix(x)) cat( paste0("\n Total Frames#: ", nrow(x), "\n Total XYZs#: ", ncol(x), ", (Atoms#: ", round(ncol(x)/3,3), ")\n\n") ) if(ncol(x) > 7) { s <- paste(" [1] ", paste(round(x[1,1:3],3),collapse=" "), " <...> ", paste( round(x[nrow(x),(ncol(x)-2):ncol(x)], 3), collapse=" "), " [",length(x),"]", sep="") } else { s <- paste(" [1] ", paste(round(x[1,],3),collapse=" "), " [",length(x),"]", sep="") } cat(s,"\n\n") i <- paste(attributes(x)$names, collapse = ", ") j <- paste("Matrix DIM =", nrow(x), "x", ncol(x)) cat(strwrap(paste(" + attr:", i, "\n",j), width = 45, exdent = 8), sep = "\n") } bio3d/R/core.cmap.R0000644000176200001440000000762014707230356013461 0ustar liggesusers"core.cmap" <- function(pdbs, write.pdb = FALSE, outfile = "core.pdb", cutoff = NULL, refine = FALSE, ncore = NULL, ...) { ## Quickly find core positions that have the largest number ## of contact with neighboring residues ncore <- setup.ncore(ncore) if(is.pdbs(pdbs)) { xyz=pdbs$xyz xyz.inds <- gap.inspect(xyz)$f.inds res.inds <- gap.inspect(pdbs$ali)$f.inds pdbseq = aa123(pdbs$ali[1,]); pdbnum = pdbs$resno[1,] } else if(is.xyz(pdbs)) { xyz <- pdbs xyz.inds <- gap.inspect(xyz)$f.inds res.inds <- xyz2atom(xyz.inds) pdbseq = rep("ALA",length(xyz.inds)/3) pdbnum = c(1:(length(xyz.inds)/3)) } else { stop("input 'pdbs' should either be: a 'pdbs' object as obtained from 'read.fasta.pdb' or a numeric 'xyz' matrix of aligned coordinates") } if(is.null(cutoff)) cutoff <- 1/sqrt(length(res.inds)) cmap.default <- list(dcut=10, scut=3, pcut=1, mask.lower=FALSE, ncore=ncore) cmap.args <- .arg.filter( cmap.default, FUN=cmap.xyz, ...) cm <- do.call(cmap.xyz, c(list(xyz=xyz[, xyz.inds]), cmap.args) ) cm[is.na(cm)] <- 0 dm.default <- list(scut=3, mask.lower=FALSE, ncore=ncore) dm.args <- .arg.filter( dm.default, FUN=dm.xyz, ... ) distmat <- do.call(dm.xyz, c(list(xyz=xyz[, xyz.inds]), dm.args) ) distmat[is.na(distmat)] <- 0 if(!is.na(dim(distmat)[3L])) lt <- apply(distmat, 3, function(x) x[lower.tri(x)]) else lt <- as.matrix(distmat[lower.tri(distmat)]) # mask <- apply(lt, 1, function(x) all(x==0)) # vars <- apply(lt, 1, var) m <- rowMeans(lt) vars <- rowSums((lt - m)^2)/(ncol(lt)-1) # vars[vars>0] <- 1/(vars[vars>0]) # normalize vars to solve numerical problems when some vars are very small vmin <- min(vars[cm[lower.tri(cm)]==1]) vmax <- max(vars[cm[lower.tri(cm)]==1]) if(vmax > vmin) vars <- (vmax - vars) / (vmax - vmin) else vars <- 1 # ignore weight # vars <- 0.5 * (cos(vars * pi ) + 1) * 100 varmat <- array(0, dim=dim(cm)) varmat[lower.tri(varmat)] <- vars varmat[!cm] <- 0 # calculate eigenvector centrality based on the weighted contact network ei <- eigen(varmat, symmetric=TRUE) if(refine) { # find all possible "core" positions in the top 10 PCs rsmall <- 0.01 U <- ei$vector[, 1:10] U[abs(U) < rsmall] <- 0 bcalc <- apply(U, 2, function(x) all(x>=0) | all(x<=0)) if(sum(bcalc)==0) stop('No valid eigenvector to define core atoms.') core.all <- apply(U[, bcalc, drop=FALSE], 2, function(x) { core <- list() core$atom <- res.inds[abs(x) > cutoff] core$xyz <- atom2xyz(core$atom) core }) error.ellipsoid<-function(pos.xyz) { S<-var(pos.xyz) prj <- eigen(S, symmetric = TRUE) prj$values[prj$values < 0 & prj$values >= -1.0E-12]<-1.0E-12 vol<-4/3*pi*prod( sqrt( prj$values ) ) out<-list(vol=vol, U=prj$vectors, L=prj$values) } if(length(core.all) > 1) { sv <- sapply(core.all, function(x) { if(length(x$atom) >=3) { xyz <- fit.xyz(pdbs$xyz[1, ], pdbs, x$xyz, x$xyz) xyz <- xyz[, xyz.inds] sum( sapply(1:(ncol(xyz)/3), function(i) error.ellipsoid(xyz[, atom2xyz(i)])$vol) ) } else { -1 } }) sv[sv==-1] <- max(sv) core <- core.all[[which.min(sv)]] } else { core <- core.all[[1]] } } else { core <- list() core$atom <- res.inds[abs(ei$vector[, 1]) > cutoff] core$xyz <- atom2xyz(core$atom) } if(length(core$atom) < 3) { warning('Too few core atoms to do a proper fitting.') core$atom <- res.inds[order(abs(ei$vector[, 1]), decreasing=TRUE)[1:3]] core$xyz <- atom2xyz(core$atom) } if(write.pdb) write.pdb(xyz=xyz[1, core$xyz], resno=pdbnum[core$atom], resid=pdbseq[core$atom], file=outfile) class(core) <- 'select' return(core) } bio3d/R/read.prmtop.R0000644000176200001440000000101714707230357014040 0ustar liggesusers read.prmtop <- function(file) { cl <- match.call() if(missing(file)) { stop("read.pdb: please specify a PDB 'file' for reading") } ##- Check if file exists locally or on-line if(!file.exists(file)) { stop("No input PDB file found: check filename") } ## parse PRMTOP file with cpp function prmtop <- .read_prmtop(file) if(!is.null(prmtop$error)) stop(paste("Could not read", file)) else class(prmtop) <- c("amber", "prmtop") prmtop$call <- cl ## finished return(prmtop) } bio3d/R/read.dcd.R0000644000176200001440000002460014707230357013254 0ustar liggesusers"read.dcd" <- function(trjfile, big=FALSE, verbose=TRUE, cell = FALSE){ # Version 0.2 ... Tue Jan 18 14:20:12 PST 2011 # Version 0.1 ... Thu Mar 9 21:18:54 PST 2005 # # Description: # Reads a CHARMM or X-PLOR/NAMD binary # trajectory file with either big- or # little-endian storage formats # # Details: # Reading is accomplished with two different # functions. # 1. 'dcd.header' which reads headder info # 2. 'dcd.frame' takes the header info and # reads frame by frame producing a # nframes/natom*3 matrix of cartisean # coordinates #===DCD=FORMAT============================================== #HDR NSET ISTRT NSAVC 5-ZEROS NATOM-NFREAT DELTA 9-ZEROS #CORD files step1 step zeroes (zero) timestep zeroes #C*4 INT INT INT 5INT INT DOUBLE 9INT # [CHARACTER*20] #=========================================================== #NTITLE TITLE #INT C*MAXTITL #C*2 C*80 #=========================================================== #NATOM #INT #=========================================================== #CELL(I), I=1,6 (DOUBLE) #=========================================================== #X(I), I=1,NATOM (SINGLE) #Y(I), I=1,NATOM #Z(I), I=1,NATOM #=========================================================== dcd.header <- function(trj,...) { # Read DCD Header section end = .Platform$endian # Check endianism check <- readBin(trj,"integer",1,endian=end) # first thing in file should be an '84' header if (check != 84) { # if not we have the wrong endianism if (end == "little") { end="big" } else { end="little" } check <- readBin(writeBin(check, raw()), "integer", 1, endian = end) if (check != 84) { close(trj) stop("PROBLEM with endian detection") } } hdr <- readChar(trj, nchars=4) # data => CORD or VELD # how big is the file 'end.pos' cur.pos <- seek(trj, where=1, origin = "end") # pos ? end.pos <- seek(trj, where=cur.pos, origin= "start") icntrl <- readBin(trj,"integer", 20, endian=end) # data => header info # header information: nframe = icntrl[1] # number of frames first = icntrl[2] # number of previous steps step = icntrl[3] # frequency of saving nstep = icntrl[4] # total number of steps nfile <- nstep/step # number of files last <- first + (step * nframe) # last step # 5 zeros ndegf = icntrl[8] # number of degrees of freedom nfixed = icntrl[9] # number of fixed atoms delta = icntrl[10] # coded time step cryst = icntrl[11] # crystallographic group block = icntrl[12] # extra block? # 9 zeros vers = icntrl[20] # flush to end of line a<-readBin(trj,"integer",1, endian=end) # should be '84' line tail ## cur.pos<-seek(trj, where=92, origin= "start") # position 92 rm(icntrl) # tidy up # Are we CHARMM or X-PLOR format charmm=FALSE; extrablock=FALSE; four.dims=FALSE if (vers != 0) { charmm=TRUE # charmm version number if (cryst == 1) { # check for extrablock = TRUE # extra free } # atom block & if (block == 1) { # extra four four.dims=TRUE # dimensions } } else { # re-read X-PLOR delta as a double cur.pos <- seek(trj, where=44, origin= "start") delta = readBin(trj,"double", 1, endian=end) seek(trj, where=cur.pos, origin= "start") } #=======# # Title # a<-readBin(trj,"integer",1, endian=end) # flush FORTRAN header ntitle <- readBin(trj,"integer",1, endian=end) # data => Num title lines title<-NULL # store title & date cur.pos <- seek(trj, where=NA) ## 100 for (i in 1:ntitle) { ### ==> !!!nasty hack due to invalid UTF-8 input (Jun 5th 07) !!! <=== ### ll<-try(title<-c( title, suppressWarnings(readChar(trj,80)) ),silent=TRUE) } # OR: title<- readChar(trj, (ntitle*80)) if(inherits(ll, "try-error")) { warning("Check DCD header data is correct, particulary natom") ##cur.pos <- seek(trj, where=260, origin= "start") # pos 260 cur.pos <- seek(trj, where=(80*ntitle+cur.pos), origin= "start") } ### == end hack a<-readBin(trj,"integer",1, endian=end) # flush FORTRAN tail #=======# # Natom # a<-readBin(trj,"integer",1, endian=end) # flush FORTRAN header natom <- readBin(trj,"integer",1, endian=end) # number of atoms a<-readBin(trj,"integer",1, endian=end) # flush FORTRAN tail ##cur.pos <- seek(trj, where=276, origin= "start") # pos 276 #=============# # Freeindexes # if (nfixed != 0) { # Free (movable) atom indexes if nfixed > 0 a <- readBin(trj,"integer",1, endian=end) # flush FORTRAN header free.ind <- readBin(trj,"integer", (natom-nfixed), endian=end ) a <- readBin(trj,"integer",1, endian=end) # flush FORTRAN tail print("FIXED ATOMS IN SIMULATION => CAN'T READ YET") } if (verbose) { ## EDIT ## R version 2.11.0 does not like "\0", just remove for now - Apr 12 2010 ## cat( sub(" +$","",gsub(pattern="\0", replacement="", x=title)),sep="\n" ) cat(" NATOM =",natom,"\n") cat(" NFRAME=",nframe,"\n") cat(" ISTART=",first,"\n") cat(" last =",last,"\n") cat(" nstep =",nstep,"\n") cat(" nfile =",nfile,"\n") cat(" NSAVE =",step,"\n") cat(" NDEGF =",ndegf,"\n") cat(" version",vers,"\n") } # Done with Header :-) header <- list(natom=natom, nframe=nframe, first=first, last=last, nstep=nstep, nfile=nfile, step=step, ndegf=ndegf, nfixed=nfixed, charmm=charmm, extrablock=extrablock, four.dims=four.dims, end.pos=end.pos, end=end) } dcd.frame <- function(trj, head, cell) { # DCD step/frame data # read one frame from the current conection 'trj' # which should have been already through # 'dcd.header' so the "where" position is at # the start of the cooedinate section #============# # Free atoms # # Uncomment the next two lines if reading cell # parameters only works with CHARMM DCD files # if(!head$charmm && cell) # stop("Cell parameters can only be read from CHARMM dcd files.") if ( head$charmm && head$extrablock) { # CHARMM files may contain lattice parameters a <- readBin(trj,"integer",1, endian=head$end) # flush FORTRAN header u <- readBin(trj, "numeric", size = 8, n = (a/8),endian = head$end) a <- readBin(trj,"integer",1, endian=head$end) # flush FORTRAN tail } ##cur.pos <- seek(trj, where=332, origin= "start") # pos 332 #========# # Coords # if (head$nfixed == 0) { a <- readBin(trj,"integer",1, endian=head$end) # flush FORTRAN header x <- readBin(trj,"numeric", # read x coords size=4, n=(a/4), endian=head$end) a <- readBin(trj,"integer",1, endian=head$end) # flush FORTRAN tail a <- readBin(trj,"integer",1, endian=head$end) # flush FORTRAN header y <- readBin(trj,"numeric", # read y coords size=4, n=(a/4), endian=head$end) a <- readBin(trj,"integer",1, endian=head$end) # flush FORTRAN tail a <- readBin(trj,"integer",1, endian=head$end) # flush FORTRAN header z <- readBin(trj,"numeric", # read z coords size=4, n=(a/4), endian=head$end) a <- readBin(trj,"integer",1, endian=head$end) # flush FORTRAN tail } else { # not implemented yet! => cant cope with fixed atoms } #===============# # 4th dimension # if (head$charmm && head$four.dims) { # CHARMM files may contain an extra block? a <- readBin(trj,"integer",1, endian=head$end) # flush FORTRAN header seek(trj, where=a, origin= "current") # skip this block a <- readBin(trj,"integer",1, endian=head$end) # flush FORTRAN tail } # Done with coord frame :-) #coords <- list(x=x, # y=y, # z=z) if(cell) to.return <- c( u[c(1,3,6)], (180/pi)*acos(u[c(5,4,2)])) else to.return <- as.vector(rbind(x,y,z)) class(to.return) = "xyz" return(to.return) } # Check if file exists if( !file.exists(trjfile) ) { stop(paste("No input DCD file found with name:", trjfile)) } # Open file conection trj <- file(trjfile, "rb") #verbose=T head<-dcd.header(trj,verbose) nframes = head$nframe natoms = head$natom # blank xyz data structures # format: rows => nframes, cols => natoms ### ==> !!! Insert to read big dcd files (Sep 29th 08) !!! <=== ### ###xyz <- matrix(NA, nrow=nframes,ncol=natoms*3) if(!big) { if(cell) to.return <- matrix(NA, nrow=nframes,ncol=6) else to.return <- matrix(NA, nrow=nframes,ncol=natoms*3) } else { ##-! Insert to read big dcd files (Sep 29th 08) oops <- requireNamespace("bigmemory", quietly = TRUE) if(!oops) stop("Please install the bigmemory package from CRAN") if(cell) to.return <- bigmemory::big.matrix(nrow=nframes,ncol=6, init = NA, type = "double") else to.return <- bigmemory::big.matrix(nrow=nframes,ncol=natoms*3, init = NA, type = "double") } ### ==> !!! end big.matrix insert if(verbose){ cat("Reading (x100)") } store <- NULL # fill xyz with frame coords if(verbose) pb <- txtProgressBar(1, nframes, style=3) for(i in 1:nframes) { curr.pos <- seek(trj, where=0, origin= "current") if (curr.pos <= head$end.pos) { to.return[i,]<- as.vector( dcd.frame(trj,head,cell) ) if (verbose) { setTxtProgressBar(pb, i) # if(i %% 100==0) { cat(".") } } # print(paste("frame:",i,"pos:",curr.pos)) store<-cbind(store,curr.pos) } else { print("Premature end of file") print(paste(" last frame:",i, "nframe:",head$nframe )) break } } # if(verbose) { cat("done",sep="\n") } if(verbose) cat("\n") close(trj) ##class(to.return) = "xyz" if(big) { warning("Returned a 'big.memory' matrix that is not fully supported by some Bio3D functions.") return(to.return) } else { return( as.xyz(to.return) ) } } bio3d/R/atom2xyz.R0000644000176200001440000000021514707230356013400 0ustar liggesusers"atom2xyz" <- function(num) { num3 <- num*3 c(t(matrix(c(((num3) - 2), ((num3) - 1), (num3)), ncol=3))) } bio3d/R/community.tree.R0000644000176200001440000000375014707230356014574 0ustar liggesuserscommunity.tree <- function(x, rescale=FALSE){ ## Check for presence of igraph package oops <- requireNamespace("igraph", quietly = TRUE) if (!oops) { stop("igraph package missing: Please install, see: ?install.packages") } if(!inherits(x, "cna")){ stop("Input should be a 'cna' class object as obtained from cna()") } rescaling <- function(membership){ original.comms <- unique(membership) new.comms <- c(1:length(unique(membership))) a<-1 ## index to keep track of community number for(j in 1:length(membership)){ membership[membership == original.comms[a]] <- new.comms[a] a <- a +1 } return(membership) } num.of.nodes <- length(igraph::V(x$network)) membership <- c(1:num.of.nodes) merge.table <- x$communities$merges membership.table <- matrix(NA, nrow=dim(merge.table)[1]+1, ncol=num.of.nodes) membership.table[1,] <- c(1:num.of.nodes) num.of.comms <- c(num.of.nodes, rep(NA,dim(merge.table)[1])) for(i in 1:dim(merge.table)[1]){ comm.number <- num.of.nodes + i if(merge.table[i,1] < num.of.nodes){ membership[merge.table[i,1]] <- comm.number } else{ change.inds <- which(membership == merge.table[i,1]) membership[change.inds] <- comm.number } if(merge.table[i,2] < num.of.nodes){ membership[merge.table[i,2]] <- comm.number } else{ change.inds <- which(membership == merge.table[i,2]) membership[change.inds] <- comm.number } membership.table[i+1,] <- membership ## i+1 because the first line is where each node forms a separated community (it will match also the modularity values) num.of.comms[i+1] <- length(unique(membership)) } ## Rescale community number starting from 1 if(rescale){ membership.table <- t(apply(membership.table,1,rescaling)) } output <- list("tree" = membership.table, "modularity" = x$communities$modularity, "num.of.comms" = num.of.comms) return(output) } bio3d/R/gnm.R0000644000176200001440000001471414707230356012375 0ustar liggesusers#' Gaussian Network Model #' #' Perform Gaussian network model (GNM) based normal mode analysis (NMA) for #' a protein structure. #' #' @details This function builds a Gaussian network model (an isotropic elastic network #' model) for C-alpha atoms and performs subsequent normal mode analysis (NMA). #' The model employs a distance cutoff for the network construction: Atom pairs with #' distance falling within the cutoff have a harmonic interaction with a uniform force constant; #' Otherwise atoms have no interaction. Output contains N-1 (N, the number of residues) #' non-trivial modes (i.e. the degree of freedom is N-1), which can then be used to #' calculate atomic fluctuations and covariance. #' #' @param x an object of class \code{pdb} as obtained from function \code{\link{read.pdb}}. #' @param inds atom and xyz coordinate indices obtained from \code{\link{atom.select}} that #' selects the elements of \code{pdb} upon which the calculation should be based. #' If not provided the function will attempt to select all calpha atoms automatically. #' @param temp numerical, temperature for which the amplitudes for scaling the atomic #' displacement vectors are calculated. Set \sQuote{temp=NULL} to avoid scaling. #' @param keep numerical, final number of modes to be stored. Note that all subsequent analyses #' are limited to this subset of modes. This option is useful for very large structures and #' cases where memory may be limited. #' @param outmodes atom indices as obtained from \code{\link{atom.select}} specifying the atoms #' to include in the resulting mode object. #' @param gamma numerical, global scale of the force constant. #' @param cutoff numerical, distance cutoff for pair-wise interactions. #' @param check.connect logical, if TRUE check chain connectivity. #' #' @return Returns an object of class \sQuote{gnm} with the following components: #' \item{force.constants}{ numeric vector containing the force constants corresponding #' to each mode. } #' \item{fluctuations}{ numeric vector of atomic fluctuations. } #' \item{U}{ numeric matrix with columns containing the raw eigenvectors. } #' \item{L}{ numeric vector containing the raw eigenvalues. } #' \item{xyz}{ numeric matrix of class \code{xyz} containing the Cartesian coordinates #' in which the calculation was performed. } #' \item{temp}{ numerical, temperature for which the amplitudes for scaling the atomic #' displacement vectors are calculated. } #' \item{triv.modes}{ number of trivial modes. } #' \item{natoms}{ number of C-alpha atoms. } #' \item{call}{ the matched call. } #' #' @seealso #' \code{\link{gnm.pdbs}} #' #' @author Xin-Qiu Yao & Lars Skjaerven #' #' @references #' Bahar, I. et al. (1997) \emph{Folding Des.} \bold{2}, 173. #' #' @examples #' ## Fetch stucture #' pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) #' #' ## Calculate normal modes #' modes <- gnm(pdb) #' #' ## Print modes #' print(modes) #' #' ## Plot modes #' plot(modes) #' gnm <- function(x, ...) { UseMethod("gnm") } #' @rdname gnm gnm.pdb <- function(x, inds=NULL, temp=300.0, keep=NULL, outmodes=NULL, gamma=1.0, cutoff=8.0, check.connect=TRUE, ...) { pdb <- x ## Log the call cl <- match.call() if(!is.pdb(pdb)) stop("please provide a 'pdb' object as obtained from 'read.pdb()'") if(!is.null(outmodes) & !is.select(outmodes)) stop("provide 'outmodes' as obtained from function atom.select()") ## Prepare PDB ## Take only first frame of multi model PDB files if(nrow(pdb$xyz)>1) { warning("multimodel PDB file detected - using only first frame") pdb$xyz=pdb$xyz[1,, drop=FALSE] } ## Trim to only CA atoms if(is.null(inds)) { ca.inds <- atom.select(pdb, "calpha", verbose=FALSE) pdb.in <- trim.pdb(pdb, ca.inds) } ## or to user selection else { pdb.in <- trim.pdb(pdb, inds) if(!all(pdb.in$atom$elety=="CA")) stop("non-CA atoms detected") } ## Indices for effective hessian if(is.select(outmodes)) { ## re-select since outmodes indices are based on input PDB inc.inds <- .match.sel(pdb, pdb.in, outmodes) pdb.out <- trim.pdb(pdb.in, inc.inds) } else { pdb.out <- pdb.in inc.inds <- atom.select(pdb.in, "all", verbose=FALSE) } ## fetch number of atoms and sequence natoms.in <- ncol(pdb.in$xyz)/3 natoms.out <- ncol(pdb.out$xyz)/3 if (natoms.in<2) stop("gnm: insufficient number of atoms") ## check structure connectivity if(check.connect) { conn <- inspect.connectivity(pdb.in$xyz) if(!conn) { warning("Possible multi-chain structure or missing in-structure residue(s) present\n", " Fluctuations at neighboring positions may be affected.") } } ## build Kirchhoff matrix K <- cmap(pdb.in, scut=1, dcut=cutoff, mask.lower=FALSE) K[!is.na(K) & K > 0] <- -1 diag(K) <- - apply(K, 1, sum, na.rm=TRUE) if(length(inc.inds$atom) < nrow(K)) { # calculate effective Kirchhoff ptm <- proc.time() # cat(" Extracting effective Kirchhoff..") inc.inds <- inc.inds$atom kaa <- K[inc.inds, inc.inds] kqq.inv <- chol2inv(chol(K[-inc.inds, -inc.inds])) kaq <- K[inc.inds, -inc.inds] kqa <- t(kaq) K <- kaa - crossprod(crossprod(kqq.inv, kqa), kqa) t <- proc.time() - ptm # cat("\tDone in", t[[3]], "seconds.\n") } ## diagonalize - get eigenvectors ei <- eigen(K, symmetric=TRUE) ei$values <- ei$values[length(ei$values):1] ei$vectors <- ei$vectors[, length(ei$values):1] if(any(ei$values[-1] < 0)) { warning("Negative eigenvalue(s) detected! \ This can be an indication of an unphysical input structure.") } ## keep only a subset of modes - including trivial modes if(!is.null(keep)) { if(keep > ncol(ei$vectors)) keep <- ncol(ei$vectors) keep.inds <- seq(1, keep) ei$vectors <- ei$vectors[, keep.inds] ei$values <- ei$values[keep.inds] } ## fluctuations kb <- 0.00831447086363271 f <- t(ei$vectors[, -1]**2) / ei$values[-1] f <- colSums(f) * 3 * kb * temp / gamma ## make a GNM object gnm <- list(force.constants = ei$values, fluctuations = f, U = ei$vectors, L = ei$values, xyz = pdb.out$xyz, temp = temp, triv.modes=1, natoms = natoms.out, call = cl) class(gnm) <- c('EnergeticModes', 'gnm', 'nma') return(gnm) } bio3d/R/formula2mass.R0000644000176200001440000000165014707230356014222 0ustar liggesusers"formula2mass" <- function(form, sum.mass=TRUE) { errmsg <- paste("error while parsing formula. \n", " provide input on the form: 'C3 H5 N O1'") if(!is.character(form) || missing(form)) stop(errmsg) eles <- unlist(strsplit(form, " ")) mass <- c() for ( i in 1:length(eles) ) { ele <- unlist(strsplit(eles[i], "")) inds.a <- grep("[0-9]", ele) inds.b <- grep("[A-z]", ele) num <- paste(ele[inds.a], collapse="") char <- paste(ele[inds.b], collapse="") if(nchar(num)==0) num <- 1 if(length(inds.a)==0) inds.a <- 0 if(length(inds.b)==0) stop(errmsg) if(nrow(bounds(inds.a))>1 || nrow(bounds(inds.b))>1 ) stop(errmsg) mass <- c(mass, atom2mass(char) * as.numeric(num)) } if(sum.mass) mass <- sum(mass) return(mass) } bio3d/R/plot.geostas.R0000644000176200001440000000051614707230357014232 0ustar liggesusersplot.geostas <- function(x, at=seq(0, 1, 0.1), main="AMSM with Domain Assignment", col.regions=rev(heat.colors(200)), margin.segments=x$grps, ...) { plot.dccm(x$amsm, at=at, main=main, col.regions=col.regions, margin.segments=margin.segments, ...) } bio3d/R/read.cif.R0000644000176200001440000000652714707230357013273 0ustar liggesusersread.cif <- function(file, maxlines = -1, multi=FALSE, rm.insert=FALSE, rm.alt=TRUE, verbose=TRUE) { cl <- match.call() warning("beta version of `read.cif`. please use with caution") warning("helix/sheet records could not be parsed") if(missing(file)) { stop("read.cif: please specify a CIF 'file' for reading") } if(!is.logical(multi)) { stop("read.cif: 'multi' must be logical TRUE/FALSE") } ##- Check if file exists locally or on-line putfile <- NULL if(substr(file,1,4)=="http") { ## cpp function can not read from http putfile <- tempfile(fileext=".cif") rt <- try(download.file(file, putfile, quiet = !verbose), silent=TRUE) if(inherits(rt, "try-error")) { file.remove(putfile) stop("File not found at provided URL") } else { file <- putfile } } toread <- file.exists(file) if(toread & basename(file) != file) { file <- normalizePath(file) } ## Check for 4 letter code and possible on-line file if(!toread) { if(nchar(file)==4) { cat(" Note: Accessing on-line CIF file\n") file <- get.pdb(file, path=tempdir(), quiet=TRUE, format="cif") } else { stop("No input CIF file found: check filename") } } ## parse CIF file with cpp function pdb <- .read_cif(file, maxlines=maxlines, multi=multi) ## remove temp file if we downloaded it above if(!is.null(putfile)) { file.remove(putfile) } #if(verbose) # cat(" ", pdb$header, "\n") #pdb$header <- NULL if(!is.null(pdb$error)) stop(paste("Error in reading CIF file", file)) else class(pdb) <- c("pdb") ## this should be cif perhaps? if(pdb$models > 1) pdb$xyz <- matrix(pdb$xyz, nrow=pdb$models, byrow=TRUE) pdb$xyz <- as.xyz(pdb$xyz) ## set empty strings to NA pdb$atom[pdb$atom==""] <- NA pdb$atom[pdb$atom=="?"] <- NA pdb$atom[pdb$atom=="."] <- NA pdb$models <- NULL ## Remove 'Alt records' if (rm.alt) { if ( sum( !is.na(pdb$atom$alt) ) > 0 ) { first.alt <- sort( unique(na.omit(pdb$atom$alt)) )[1] cat(paste(" PDB has ALT records, taking",first.alt,"only, rm.alt=TRUE\n")) alt.inds <- which( (pdb$atom$alt != first.alt) ) # take first alt only if(length(alt.inds)>0) { pdb$atom <- pdb$atom[-alt.inds,] pdb$xyz <- trim.xyz(pdb$xyz, col.inds=-atom2xyz(alt.inds)) } } } ## Remove 'Insert records' if (rm.insert) { if ( sum( !is.na(pdb$atom$insert) ) > 0 ) { cat(" PDB has INSERT records, removing, rm.insert=TRUE\n") insert.inds <- which(!is.na(pdb$atom$insert)) # rm insert positions pdb$atom <- pdb$atom[-insert.inds,] pdb$xyz <- trim.xyz(pdb$xyz, col.inds=-atom2xyz(insert.inds)) } } if(any(duplicated(pdb$atom$eleno))) warning("duplicated element numbers ('eleno') detected") ## construct c-alpha attribute ca.inds <- atom.select.pdb(pdb, string="calpha", verbose=FALSE) pdb$calpha <- seq(1, nrow(pdb$atom)) %in% ca.inds$atom ## set call pdb$call <- cl return(pdb) } bio3d/R/plot.core.R0000644000176200001440000000173514707230356013520 0ustar liggesusers`plot.core` <- function(x, y=NULL, type="h", main="", sub="", xlim=NULL, ylim=NULL, xlab = "Core Size (Number of Residues)", ylab = "Total Ellipsoid Volume (Angstrom^3)", axes=TRUE, ann=par("ann"), col=par("col"), ...) { if(is.list(x)) { len <- x$length ## hack!! fix later x <- x$volume } else{ len <- rev(1:length(x)) } xy <- xy.coords(x, y) if (is.null(xlim)) xlim <- range(xy$x[is.finite(xy$x)]) if (is.null(ylim)) ylim <- range(xy$y[is.finite(xy$y)]) ## opar <- par(no.readonly=TRUE) ## on.exit(par(opar)) plot.new() plot.window(xlim, ylim, ...) points(xy$x, xy$y, col=col, type=type, ...) if (axes) { ax.ind <- c(1,seq(10,length(x),by=10)) axis(1, at=ax.ind, labels = len[ax.ind]) axis(2) box() } if (ann) { if(is.null(xlab)) xlab=xy$xlab if(is.null(ylab)) ylab=xy$ylab title(main=main, sub=sub, xlab=xlab, ylab=ylab, ...) } } bio3d/R/binding.site.R0000644000176200001440000001030514707230356014161 0ustar liggesusers"binding.site" <- function(a, b = NULL, a.inds = NULL, b.inds = NULL, cutoff=5, hydrogens=TRUE, byres=TRUE, verbose=FALSE) { cl <- match.call() sep <- "_" trim <- function(s, leading=TRUE, trailing=TRUE) { if(leading) s <- sub("^ +", "", s) if(trailing) s <- sub(" +$", "", s) s[(s=="")]<-"" s } if (!is.pdb(a)) stop("must supply an input 'pdb' object 'a', i.e. from 'read.pdb'") ## workaround for NA chains if(any(is.na(a$atom$chain))) a$atom$chain[is.na(a$atom$chain)] <- " " ## backup of the original pdb provided a.orig <- a ## two PDBs provided if(!is.null(b)) { if(!is.pdb(b)) stop("'b' should be a 'pdb' object as obtained from 'read.pdb'") if ( hydrogens ) { if(is.null(a.inds)) a.inds <- atom.select(a, "all", verbose=verbose) if(is.null(b.inds)) b.inds <- atom.select(b, "all", verbose=verbose) } else { if(is.null(a.inds)) a.inds <- atom.select(a, string='noh', verbose=verbose) if(is.null(b.inds)) b.inds <- atom.select(b, string='noh', verbose=verbose) } } ## one PDB object is provided else { if(is.null(a.inds) & is.null(b.inds)) { a.inds <- atom.select(a, "protein", verbose=verbose) b.inds <- atom.select(a, "ligand", verbose=verbose) if(!length(a.inds$atom)>0) stop("insufficent 'protein' atoms in structure") if(!length(b.inds$atom)>0) stop("insufficent 'ligand' atoms in structure") } b <- trim.pdb(a, b.inds) a <- trim.pdb(a, a.inds) if ( hydrogens ) { a.inds <- atom.select(a, "all", verbose=verbose) b.inds <- atom.select(b, "all", verbose=verbose) } else { a.inds <- atom.select(a, string='noh', verbose=verbose) b.inds <- atom.select(b, string='noh', verbose=verbose) } } if(!(length(a.inds$atom)>0 | length(b.inds$atom)>0)) stop("insufficent atoms in selection(s)") ## omit hydrogens if any a <- trim.pdb(a, a.inds) b <- trim.pdb(b, b.inds) ## Calcuate pair-wise distances dmat <- dist.xyz(matrix(a$xyz, ncol=3, byrow=TRUE), matrix(b$xyz, ncol=3, byrow=TRUE)) ## atoms of a in contact with b cmap <- apply(dmat, 1, function(x) any(x <= cutoff)) atom.inds <- which(cmap) ## return NULL if no atoms are closer than cutoff if(length(atom.inds)<1) { cat(" no atoms found within", cutoff, "A\n") return(NULL) } ## get rid of any trailing and leading spaces a$atom$resid <- trim(a$atom$resid) a$atom$resno <- trim(a$atom$resno) a$atom$elety <- trim(a$atom$elety) a.orig$atom$resno <- trim(a.orig$atom$resno) a.orig$atom$elety <- trim(a.orig$atom$elety) ## return all atoms in a contacting residue, otherwise, just the atoms if(byres) { resno.map <- apply(a$atom[atom.inds, c("resno", "chain")], 1, paste, collapse=sep) all.resno <- apply(a.orig$atom[, c("resno", "chain")], 1, paste, collapse=sep) atom.inds2 <- which(all.resno %in% resno.map) } else { resno.map <- apply(a$atom[atom.inds, c("elety", "resno", "chain")], 1, paste, collapse=sep) all.resno <- apply(a.orig$atom[, c("elety", "resno", "chain")], 1, paste, collapse=sep) atom.inds2 <- which(all.resno %in% resno.map) } xyz.inds <- atom2xyz(atom.inds2) ## check for chain IDs tmp <- unique(paste(a$atom[atom.inds, "resid"], a$atom[atom.inds, "resno"], a$atom[atom.inds, "chain"], sep=sep)) resno <- as.numeric(unlist(lapply(strsplit(tmp, sep), function(x) x[2]))) chain <- unlist(lapply(strsplit(tmp, sep), function(x) x[3])) chain[chain==" "] <- NA if(all(is.na(chain))) { resnames <- unique(paste(a$atom[atom.inds, "resid"], " ", a$atom[atom.inds, "resno"], sep="")) } else { resnames <- unique(paste(a$atom[atom.inds, "resid"], " ", a$atom[atom.inds, "resno"], " (", a$atom[atom.inds, "chain"], ")", sep="")) } sele <- list(atom=atom.inds2, xyz=xyz.inds) class(sele) <- "select" out <- list(inds=sele, resnames=resnames, resno=resno, chain=chain, call=cl) return(out) } bio3d/R/core.find.R0000644000176200001440000002356614707230356013470 0ustar liggesuserscore.find <- function(...) UseMethod("core.find") core.find.default <- function(xyz, ...) core.find.pdbs(xyz, ...) core.find.pdb <- function(pdb, verbose=TRUE, ...) { if(nrow(pdb$xyz)<4) stop("provide a multi model PDB file with 4 or more frames") inds1 <- atom.select(pdb, "calpha", verbose=verbose) inds2 <- atom.select(pdb, "nucleic", elety="P", verbose=verbose) inds <- combine.select(inds1, inds2, operator="OR", verbose=verbose) tmp <- trim.pdb(pdb, inds) core <- core.find.pdbs(tmp$xyz, verbose=verbose, ...) ## map to pdb inds full.ids <- paste(pdb$atom$elety, pdb$atom$resno, pdb$atom$chain, sep="-") tmp.ids <- paste(tmp$atom$elety, tmp$atom$resno, tmp$atom$chain, sep="-") core$step.inds <- which(full.ids %in% tmp.ids[core$step.inds])[core$step.inds] core$atom <- which(full.ids %in% tmp.ids[core$atom]) core$c1A.atom <- which(full.ids %in% tmp.ids[core$c1A.atom]) core$c0.5A.atom <- which(full.ids %in% tmp.ids[core$c0.5A.atom]) core$xyz <- atom2xyz(core$atom) core$c1A.xyz <- atom2xyz(core$c1A.atom) core$c0.5A.xyz <- atom2xyz(core$c0.5A.atom) ##core$resno <- which(full.ids %in% tmp.ids[core$resno])[core$resno] ##core$c1A.resno <- which(full.ids %in% tmp.ids[core$c1A.resno])[core$c1A.resno] ##core$c0.5A.resno <- which(full.ids %in% tmp.ids[core$c0.5A.resno])[core$c0.5A.resno] core$resno <- tmp$atom$resno[core$resno] core$c1A.resno <- tmp$atom$resno[core$c1A.resno] core$c0.5A.resno <- tmp$atom$resno[core$c0.5A.resno] return(core) } "core.find.pdbs" <- function(pdbs, shortcut = FALSE, rm.island = FALSE, verbose = TRUE, stop.at = 15, stop.vol = 0.5, write.pdbs = FALSE, outpath="core_pruned", ncore = 1, nseg.scale = 1, progress = NULL, ...) { ## Itterative core deffination for lsq fit optimisation ## (core positions are those with low ellipsoid volume) # Parallelized by parallel package (Fri Apr 26 16:49:38 EDT 2013) ncore <- setup.ncore(ncore) if(ncore > 1) { # Issue of serialization problem # Maximal number of cells of a double-precision matrix # that each core can serialize: (2^31-1-61)/8 R_NCELL_LIMIT_CORE = 2.68435448e8 R_NCELL_LIMIT = ncore * R_NCELL_LIMIT_CORE if(nseg.scale < 1) { warning("nseg.scale should be 1 or a larger integer\n") nseg.scale=1 } } error.ellipsoid<-function(pos.xyz) { S<-var(pos.xyz) prj <- eigen(S, symmetric = TRUE) prj$values[prj$values < 0 & prj$values >= -1.0E-12]<-1.0E-12 vol<-4/3*pi*prod( sqrt( prj$values ) ) out<-list(vol=vol, U=prj$vectors, L=prj$values) } if(is.matrix(pdbs)) { xyz <- pdbs xyz.inds <- which(apply(is.na( xyz ), 2, sum)==0) res.inds<-xyz.inds[seq(3,length(xyz.inds),by=3)]/3 pdbseq = rep("ALA",length(xyz.inds)/3) pdbnum = c(1:(length(xyz.inds)/3)) } else { if( (is.list(pdbs)) && (inherits(pdbs, "pdbs")) ) { xyz=pdbs$xyz xyz.inds <- which(apply(is.na( xyz ), 2, sum)==0) res.inds <- which(apply(pdbs$ali=="-", 2, sum)==0) pdbseq = aa123(pdbs$ali[1,]); pdbnum = pdbs$resno[1,] } else { stop("input 'pdbs' should either be: a list object from 'read.fasta.pdb' or a numeric 'xyz' matrix of aligned coordinates") } } # First core = all non gap positions res.still.in <- res.inds # indices of core residues xyz.still.in <- xyz.inds # indices of core xyz's new.xyz.inds <- xyz.inds # indices of core xyz's xyz.moved <- xyz # core-fitted coords throwout.res <- NULL # non-core res inds throwout.xyz <- NULL # non-core xyz inds remain.vol <- NULL core.length <- NULL if(!length(res.still.in) > stop.at) { stop(paste0("Insufficient non-gap residues in alignment: \n", " non-gap residues (", length(res.still.in), ") <= 'stop.at' argument (", stop.at, ")")) } fit.to = rep(FALSE,ncol(xyz.moved)) # Preliminary fitting fit.to[ as.vector(xyz.still.in) ]<-TRUE # on first structure # xyz.tmp <- t(apply(xyz.moved, 1, # to find mean structure # rot.lsq, # for next fitting # yy=xyz.moved[1,], # xfit=fit.to)) xyz.tmp <- fit.xyz(xyz.moved[1,], xyz.moved, which(fit.to), which(fit.to), ncore=ncore, nseg.scale=nseg.scale) mean.xyz <- apply(xyz.tmp,2,mean) if(write.pdbs) { dir.create(outpath,FALSE) } while(length(res.still.in) > stop.at) { ## edit for shiny version if(!is.null(progress)) { progress$inc(1/length(res.inds)) } ## edit end # Core fitting, (core => pdbnum[ res.still.in ]) fit.to = rep(FALSE,ncol(xyz.moved)) fit.to[ as.vector(xyz.still.in) ]<-TRUE # xyz.moved <- t(apply(xyz.moved, 1, # rot.lsq, # #yy=xyz.moved[1,], # yy=mean.xyz, # xfit=fit.to)) xyz.moved <- fit.xyz(mean.xyz, xyz.moved, which(fit.to), which(fit.to), ncore=ncore, nseg.scale=nseg.scale) mean.xyz <- apply(xyz.moved,2,mean) i<-1; j<-3 volume<-NULL # ellipsoid volume if(ncore > 1) { e <- mclapply(1:(length(new.xyz.inds)/3), function(j) { error.ellipsoid( xyz.moved[, new.xyz.inds[atom2xyz(j)]] )$vol }) volume <- unlist(e) } else { while(j<=length( new.xyz.inds )) { e<-error.ellipsoid(xyz.moved[,new.xyz.inds[i:j]]) volume<-c(volume,e$vol) i<-i+3;j<-j+3 } } record <- cbind(res.still.in , # store indices and volumes matrix(new.xyz.inds,ncol=3,byrow=3), volume) # Find highest volume (most variable position) if (shortcut) { if (length(res.still.in) >= 35) { # remove four at a time highest.vol.ind <- rev(order(volume))[1:4] } else { highest.vol.ind <- which.max(volume) } } else { # no shortcut rm one at a time highest.vol.ind <- which.max(volume) } if (rm.island) { # Exclude length 4 residue islands check <- bounds( res.still.in ) check.ind <- which(check[,"length"] < 4) if ( length(check.ind) > 0 ) { res.cut=NULL for (r in 1:length(check.ind)) { res.cut <- c(res.cut, check[check.ind[r],"start"]: check[check.ind[r],"end"]) } highest.vol.ind <- unique( c(highest.vol.ind, which( is.element(res.still.in, res.cut)) )) } } # rm position from "new.xyz.inds" xyz.exclude <- record[highest.vol.ind,c(2:4)] inds.torm <- which(is.element( new.xyz.inds, as.vector(xyz.exclude) )) new.xyz.inds <- new.xyz.inds[ -inds.torm ] # Store details of the residue we excluded tmp.vol <- sum(record[-highest.vol.ind,5]) throwout.res <- c( throwout.res, as.vector(record[highest.vol.ind,1])) throwout.xyz <- rbind( throwout.xyz, record[highest.vol.ind,2:4] ) remain.vol <- c(remain.vol, tmp.vol) res.still.in <- record[-highest.vol.ind,1] xyz.still.in <- record[-highest.vol.ind,2:4] core.length <- c(core.length,length(res.still.in)) if(verbose) { # Progress report cat( paste(" core size",length(res.still.in),"of", length(res.inds))," vol =", round(tmp.vol,3),"\n" ) if(write.pdbs) { # Write current core structure write.pdb(file = file.path(outpath, paste("core_", sprintf("%04.0f", length(res.still.in)),".pdb",sep="")), #xyz = xyz[1, new.xyz.inds ], xyz = mean.xyz[ new.xyz.inds ], resno = pdbnum[ res.still.in ], resid = pdbseq[ res.still.in ], b = round((volume[-highest.vol.ind] / max(volume[-highest.vol.ind]) * 1),2) ) } } if(tmp.vol < stop.vol) { cat(paste(" FINISHED: Min vol (",stop.vol,") reached\n")) break } } # ordered thro-out lists ordered.res<-as.vector(c(throwout.res, res.still.in)) ordered.xyz<-rbind(throwout.xyz, xyz.still.in) rownames(ordered.xyz)=NULL vol = c(remain.vol, rep(NA,stop.at)) len = c(core.length,rep(NA,stop.at)) blank<-rep(NA, len[1]); blank[na.omit(len)]=na.omit(vol) ordered.vol<-c(rev(blank),NA); blank[na.omit(len)]=na.omit(len) ordered.len<-c(rev(blank),NA) # sample cores (volume < 1 A^3, < 0.5 A^3, or the final core) if( min(ordered.vol,na.rm=TRUE) < 1) { a.atom <- sort(ordered.res[which(ordered.vol<1)[1]:length(ordered.vol)]) a.xyz <- sort(as.vector(ordered.xyz[which(ordered.vol<1)[1]: length(ordered.vol),])) a.resno <- as.numeric(pdbnum[a.atom]) } else { a.atom <- NULL a.xyz <- NULL a.resno <- NULL } if( min(ordered.vol,na.rm=TRUE) < 0.5) { b.atom <- sort(ordered.res[which(ordered.vol<0.5)[1]:length(ordered.vol)]) b.xyz <- sort(as.vector(ordered.xyz[which(ordered.vol<0.5)[1]: length(ordered.vol),])) b.resno <- as.numeric(pdbnum[b.atom]) } else { b.atom <- NULL b.xyz <- NULL b.resno <- NULL } tmp.inds <- which(!is.na(ordered.vol)) c.atom <- sort(ordered.res[tmp.inds[length(tmp.inds)]:length(ordered.vol)]) c.xyz <- atom2xyz(c.atom) c.resno <- as.numeric(pdbnum[c.atom]) output <- list(volume = ordered.vol, length = ordered.len, resno = pdbnum[ ordered.res ], step.inds = ordered.res, atom = c.atom, xyz = c.xyz, c1A.atom = a.atom, c1A.xyz = a.xyz, c1A.resno = a.resno, c0.5A.atom = b.atom, c0.5A.xyz = b.xyz, c0.5A.resno = b.resno ) class(output)="core"; return(output) } bio3d/R/pdbfit.R0000644000176200001440000000224214707230356013055 0ustar liggesuserspdbfit <- function(...) UseMethod("pdbfit") pdbfit.pdb <- function(pdb, inds=NULL, ...) { if(!is.pdb(pdb)) stop("Input 'pdb' should be of class 'pdb', e.g. from read.pdb()") if(nrow(pdb$xyz)<2) stop("nothing to fit. < 2 frames in pdb object") if(is.null(inds)) { inds <- atom.select(pdb, "calpha") cat(" no indices provided. using all", length(inds$atom), "calpha atoms\n") } if(length(inds$xyz)<3) stop("insufficent atoms to superimpose") return(fit.xyz( fixed=pdb$xyz[1,], mobile=pdb$xyz, fixed.inds=inds$xyz, mobile.inds=inds$xyz)) } pdbfit.pdbs <- function(pdbs, inds=NULL, outpath=NULL, ...) { ## ## Quick Fit Fitter for PDBs ## was called 'fit.pdbs()' in model.R ## if(!inherits(pdbs, "pdbs")) { stop("Input 'pdbs' should be of class 'pdbs', e.g. from pdbaln() or read.fasta.pdb()") } full <- ifelse(is.null(outpath), FALSE, TRUE) if(is.null(inds)) { inds <-gap.inspect(pdbs$xyz)$f.inds } if(is.list(inds)){ inds=inds$xyz } invisible( fit.xyz( fixed=pdbs$xyz[1,], mobile=pdbs, fixed.inds=inds, mobile.inds=inds, outpath=outpath, full.pdbs=full, ... )) } bio3d/R/motif.find.R0000644000176200001440000000037514707230356013647 0ustar liggesusers`motif.find` <- function(motif, sequence) { ## return indices of motif within sequence position <- regexpr( paste(motif, collapse=""), paste(sequence,collapse="")) inds <- c(position):c(position+attr(position, "match.length")-1) return(inds) } bio3d/R/is.mol2.R0000644000176200001440000000005514707230356013070 0ustar liggesusersis.mol2 <- function(x) inherits(x, "mol2") bio3d/R/vec2resno.R0000644000176200001440000000063314707230357013516 0ustar liggesusers`vec2resno` <- function(vec, resno) { ## replicate vec based on concetive ## similar resno entries if(is.pdb(resno)) resno <- resno$atom[,"resno"] res.len <- rle(resno)$lengths if(length(vec) != length(res.len)) stop("Length miss-match of 'vec' and concetive 'resno'") if( sum(res.len) != length(resno) ) stop("Replicated length Miss-match") return( rep(vec, times=res.len)) } bio3d/R/pymol.modes.R0000644000176200001440000001164314707230357014061 0ustar liggesuserspymol.nma <- function(...) pymol.modes(...) pymol.pca <- function(...) pymol.modes(...) pymol.modes <- function(modes, mode=NULL, file=NULL, scale=5, dual=FALSE, type="script", exefile = "pymol", ...) { if(! (inherits(modes, "nma") || inherits(modes,"pca")) ) stop("must supply a 'nma' or 'pca' object, i.e. from 'nma()' or 'pca.xyz()'") allowed <- c("session", "script", "launch") if(!type %in% allowed) { stop(paste("input argument 'type' must be either of:", paste(allowed, collapse=", "))) } ## Check if the program is executable if(type %in% c("session", "launch")) { ## determine path to exefile exefile1 <- .get.exepath(exefile) ## Check if the program is executable success <- .test.exefile(exefile1) if(!success) { stop(paste("Launching external program failed\n", " make sure '", exefile, "' is in your search path", sep="")) } exefile <- exefile1 } if(inherits(modes, "nma")) { if(is.null(mode)) mode <- 7 xyz <- modes$xyz mode.vecs <- matrix(modes$modes[,mode], ncol=3, byrow=T) } else { if(is.null(mode)) mode <- 1 xyz <- modes$mean mode.vecs <- matrix(modes$U[,mode], ncol=3, byrow=T) } ## calc all vec lengths (for coloring later) all.lens <- apply(mode.vecs, 1, function(x) sqrt(sum(x**2))) ## output file name if(is.null(file)) { if(type=="session") file <- "R.pse" if(type=="script") file <- "R.py" } ## use temp-dir unless we output a PML script if(type %in% c("session", "launch")) tdir <- tempdir() else tdir <- "." pyfile <- tempfile(tmpdir=tdir, fileext=".py") psefile <- tempfile(tmpdir=tdir, fileext=".pse") pdbfile <- tempfile(tmpdir=tdir, fileext=".pdb") ## start building pymol script scr <- c("from pymol import cmd") scr <- c(scr, "from pymol.cgo import *") scr <- c(scr, paste("cmd.load('", normalizePath(pdbfile, winslash='/', mustWork=FALSE), "', 'prot')", sep="")) scr <- c(scr, "cmd.show('cartoon')") scr <- c(scr, "cmd.set('cartoon_trace_atoms', 1)") ## define color range blues <- colorRamp(c("blue", "white", "red")) ## Arrow widths w.body <- 0.15; w.head <- 0.2 scr <- c(scr, "obj=[]") for ( i in 1:nrow(mode.vecs)) { inds <- atom2xyz(i) coords <- xyz[inds] ## For coloring (longest vec has length=1) tmp.len <- sqrt(sum((mode.vecs[i,]/max(all.lens))**2)) if(tmp.len>1) tmp.len <- 1 col <- blues(tmp.len) col <- round(col/256,4) col <- paste(col, collapse=", ") ## Main vector tmp.vec <- mode.vecs[i,] * scale ## For arrow head if(sqrt(sum(tmp.vec**2))<1) norm.vec <- tmp.vec else norm.vec <- normalize.vector(mode.vecs[i,]) ## Set vectors arrow.vec.a <- (coords + tmp.vec) head.vec.a <- (arrow.vec.a + (norm.vec)) arrow.vec.b <- (coords - tmp.vec) head.vec.b <- (arrow.vec.b - (norm.vec)) a <- paste(coords, collapse=",") b1 <- paste(arrow.vec.a, collapse=",") c1 <- paste(head.vec.a, collapse=",") b2 <- paste(arrow.vec.b, collapse=",") c2 <- paste(head.vec.b, collapse=",") ## Arrow body scr <- c(scr, paste("obj.extend([CYLINDER", a, b1, w.body, col, col, "])", sep=", ")) if(dual) scr <- c(scr, paste("obj.extend([CYLINDER", a, b2, w.body, col, col, "])", sep=", ")) ## Arrow heads scr <- c(scr, paste("obj.extend([CONE", b1, c1, w.head, 0.0, col, col, 1.0, 1.0,"])", sep=", ")) if(dual) scr <- c(scr, paste("obj.extend([CONE", b2, c2, w.head, 0.0, col, col, 1.0, 1.0,"])", sep=", ")) } name <- "vecs" scr <- c(scr, paste("cmd.load_cgo(obj, '", name, "')", sep="")) if(type == "session") scr <- c(scr, paste0("cmd.save('", normalizePath(psefile, winslash='/', mustWork=FALSE), "')")) ## Write PDB structure file write.pdb(xyz=xyz, file=pdbfile) ## Write python script or PDB with conect records write(scr, file=pyfile, sep="\n") if(type %in% c("session", "launch")) { if(type == "session") args <- "-cq" else args <- "" ## Open pymol cmd <- paste(exefile, args, pyfile) os1 <- Sys.info()["sysname"] if (os1 == "Windows") { status <- shell(paste(shQuote(exefile), args, pyfile)) } else { status <- system(cmd) } if(!(status %in% c(0,1))) { stop(paste("An error occurred while running command\n '", exefile, "'", sep="")) } } if(type == "session") { file.copy(psefile, file, overwrite=TRUE) message(paste("PyMOL session written to file", file)) invisible(file) } if(type == "script") { file.copy(pyfile, file, overwrite=TRUE) unlink(pyfile) message(paste("PyMOL script written to file", file)) invisible(file) } } bio3d/R/check.utility.R0000644000176200001440000000226314710164273014365 0ustar liggesuserscheck.utility <- function(x = c("muscle", "clustalo", "dssp", "stride", "mustang", "makeup"), quiet = TRUE) { utilities <- match.arg(x, several.ok = TRUE) missing.util <- sapply(utilities, function(x) { rtn <- try(.get.exepath(x), silent=TRUE) if(inherits(rtn, "try-error")) { TRUE } else { FALSE } }) ##- Check on missing utility programs - Deprecated # if('dssp' %in% utilities) { # utilities <- c(utilities, 'mkdssp') # missing.util <- nchar(Sys.which(utilities)) == 0 # missing.util['dssp'] <- all(missing.util[c('dssp', 'mkdssp')]) # missing.util <- missing.util[-length(missing.util)] # } else { # missing.util <- nchar(Sys.which(utilities)) == 0 # } if( any(missing.util) ) { if(!quiet) { warning(paste0(" Checking for external utility programs failed\n", " Please make sure '", paste(names(missing.util[missing.util]), collapse="', '"), "' is in your search path, see:\n", " http://thegrantlab.org/bio3d/tutorials/installing-bio3d#utilities")) } pass = FALSE } else { if(!quiet) cat("External utility programs found\n") pass = TRUE } invisible(pass) } bio3d/R/consensus.R0000644000176200001440000000213214707230356013623 0ustar liggesusers"consensus" <- function(alignment, cutoff=0.6) { # Determine the consensus sequence for a given alignment if(is.list(alignment)) alignment=alignment$ali aa <- c("V","I","L","M", "F","W","Y", "S","T", "N","Q", "H","K","R", "D","E", "A","G", "P","C", "-","X") composition <- table(alignment) unk <- composition[!names( composition ) %in% aa] if(length(unk) > 0) { warning(paste("\nnon standard residue code:",names(unk),"maped to X")) for(i in 1:length(unk)) alignment[alignment==names(unk[i])]="X" } len <- ncol(alignment) freq <- matrix(0, nrow = 22, ncol = ncol(alignment), dimnames = list(aa,seq(1:len))) for (i in 1:len) { freq[names(summary((as.factor(toupper(alignment[,i]))))), i] <- (summary(as.factor(toupper(alignment[,i])))/length(alignment[,i])) } cons.freq <- apply(freq[1:20,], 2, max) cons.tmp <- aa[apply(freq[1:20,], 2, which.max)] cons.tmp[cons.freq <= cutoff] = "-" return(list(seq=cons.tmp, freq=freq, seq.freq=cons.freq, cutoff=cutoff)) } bio3d/R/network.amendment.R0000644000176200001440000000713514707230356015253 0ustar liggesusersnetwork.amendment <- function(x, membership, minus.log=TRUE){ ## Check for presence of igraph package oops <- requireNamespace("igraph", quietly = TRUE) if (!oops) { stop("igraph package missing: Please install, see: ?install.packages") } if(!inherits(x, "cna")){ stop("Input x must be a 'cna' class object as obtained from cna()") } if(!is.numeric(membership)){ stop("Input membership must be a numeric vector") } if(length(membership) != length(x$communities$membership)){ stop("Input membership and x$community$membership must be of the same length") } contract.matrix <- function(cij.network, membership,## membership=comms$membership, collapse.method="max", minus.log=TRUE){ ## Function to collapse a NxN matrix to an mxm matrix ## where m is the communities of N. The collapse method ## can be one of the 'collapse.options' below ## convert to the original cij values if "-log" was used if(minus.log){ cij.network[cij.network>0] <- exp(-cij.network[cij.network>0]) } collapse.options=c("max", "median", "mean", "trimmed") collapse.method <- match.arg(tolower(collapse.method), collapse.options) ## Fill a 'collapse.cij' nxn community by community matrix node.num <- max(x$communities$membership) if(node.num > 1){ collapse.cij <- matrix(0, nrow=node.num, ncol=node.num) inds <- pairwise(node.num) for(i in 1:nrow(inds)) { comms.1.inds <- which(membership==inds[i,1]) comms.2.inds <- which(membership==inds[i,2]) submatrix <- cij.network[comms.1.inds, comms.2.inds] ## Use specified "collapse.method" to define community couplings collapse.cij[ inds[i,1], inds[i,2] ] = switch(collapse.method, max = max(submatrix), median = median(submatrix), mean = mean(submatrix), trimmed = mean(submatrix, trim = 0.1)) } if(minus.log){ collapse.cij[collapse.cij>0] <- -log(collapse.cij[collapse.cij>0]) } ## Copy values to lower triangle of matrix and set colnames collapse.cij[ inds[,c(2,1)] ] = collapse.cij[ inds ] colnames(collapse.cij) <- 1:ncol(collapse.cij) } else{ warning("There is only one community in the $communities object. $community.cij object will be set to 0 in the contract.matrix() function.") collapse.cij <- 0 } class(collapse.cij) <- c("dccm", "matrix") return(collapse.cij) } x$communities$membership <- membership x$community.cij <- contract.matrix(x$cij, membership, minus.log=minus.log) cols=vmd_colors() # if(sum(x$community.cij)>0){ x$community.network <- igraph::graph.adjacency(x$community.cij, mode="undirected", weighted=TRUE, diag=FALSE) ##-- Annotate the two networks with community information ## Check for duplicated colors if(max(x$communities$membership) > length(unique(cols)) ) { warning("The number of communities is larger than the number of unique 'colors' provided as input. Colors will be recycled") } ## Set node colors igraph::V(x$network)$color <- cols[x$communities$membership] igraph::V(x$community.network)$color <- cols[ 1:max(x$communities$membership)] ## Set node sizes igraph::V(x$network)$size <- 1 igraph::V(x$community.network)$size <- table(x$communities$membership) # } return(x) } bio3d/R/covsoverlap.R0000644000176200001440000000363214707230356014154 0ustar liggesuserscovsoverlap <- function(...) UseMethod("covsoverlap") covsoverlap.enma <- function(enma, ncore=NULL, ...) { if(!inherits(enma, "enma")) stop("provide a 'enma' object as obtain from function 'nma.pdbs()'") if(any(is.na(enma$fluctuations))) stop("provide 'enma' object calculated with argument 'rm.gaps=TRUE'") ncore <- setup.ncore(ncore, bigmem = FALSE) if(ncore>1) mylapply <- mclapply else mylapply <- lapply cat("Calculating pairwise covariance overlap coefs") m <- dim(enma$U.subspace)[3] mat <- matrix(NA, m, m) ##inds <- pairwise(m) inds <- rbind(pairwise(m), matrix(rep(1:m,each=2), ncol=2, byrow=T)) mylist <- mylapply(1:nrow(inds), function(row) { i <- inds[row,1]; j <- inds[row,2]; a <- list(U=enma$U.subspace[,,i], L=enma$L[i, ]) b <- list(U=enma$U.subspace[,,j], L=enma$L[j, ]) val <- covsoverlap.nma(a, b, ...) out <- list(val=val, i=i, j=j) cat(".") return(out) }) for ( i in 1:length(mylist)) { tmp <- mylist[[i]] mat[tmp$i, tmp$j] <- tmp$val } mat[ inds[,c(2,1)] ] = mat[ inds ] ##diag(mat) <- rep(1, n) rownames(mat) <- basename(rownames(enma$fluctuations)) colnames(mat) <- basename(rownames(enma$fluctuations)) cat("\n") return(round(mat, 6)) } covsoverlap.nma <- function(a, b, subset=NULL, ...) { if(any(missing(a), missing(b))) stop("provide eigenvectors and eigenvalues") dims.a <- dim(a$U) dims.b <- dim(b$U) if(dims.a[1]!=dims.b[1]) stop("dimension mismatch") if(!is.null(subset)) { if(subset>ncol(a$U)) subset <- ncol(a$U) a$U <- a$U[,1:subset] b$U <- b$U[,1:subset] a$L <- a$L[1:subset] b$L <- b$L[1:subset] } sumb <- 0 for( k in 1:ncol(a$U) ) { tmp <- sqrt(a$L[k] * b$L) overlap <- c((t(a$U[,k]) %*% b$U)**2) sumb <- sumb + sum( tmp * overlap ) } return(1 - ( sum(a$L + b$L) - 2 *sumb ) / sum(a$L + b$L)) } bio3d/R/project.pca.R0000644000176200001440000000231414707230357014016 0ustar liggesusers"project.pca" <- function(data, pca, angular=FALSE, fit=FALSE, ...) { if(angular) data <- wrap.tor(data) if(is.null(dim(data))) { if(ncol(pca$U) != length(data)) stop("Dimensionality mismatch: length(data)!=ncol(pca$U)") if(fit) data <- fit.xyz(pca$mean, data, ...) z <- (data - pca$mean) %*% pca$U } else { if(ncol(pca$U) != ncol(data)) stop("Dimensionality mismatch: ncol(data)!=ncol(pca$U)") if(fit) data <- fit.xyz(pca$mean, data, ...) z <- sweep(data, 2, pca$mean) %*% pca$U } return(z) } z2xyz.pca <- function(z.coord, pca) { if(is.null(nrow(z.coord))) { if( length(z.coord) > ncol(pca$U) ) stop("Dimension miss-match: length(z.coord) > ncol(pca$U)") xyz.coord <- (z.coord %*% t(pca$U[, c(1:length(z.coord)) ]) ) + pca$mean } else { if( ncol(z.coord) > ncol(pca$U) ) stop("Dimension miss-match: ncol(z.coord) > ncol(pca$U)") xyz.coord <- NULL for(i in 1:nrow(z.coord)) { xyz.coord <- rbind(xyz.coord, (z.coord[i,] %*% t(pca$U[, c(1:length(z.coord[i,])) ]) ) + pca$mean) } } return(xyz.coord) } xyz2z.pca <- function(xyz.coord, pca) { return(project.pca(xyz.coord, pca)) } bio3d/R/build.hessian.R0000644000176200001440000000743714707230356014350 0ustar liggesusers"build.hessian" <- function(xyz, pfc.fun, fc.weights=NULL, pdb=NULL, ... ) { if(missing(xyz)) stop("build.hessian: 'xyz' coordinates must be provided") if (!is.function(pfc.fun)) stop("build.hessian: 'pfc.fun' must be a function") ## Coordinates xyz = as.xyz(xyz) if(nrow(xyz)>1) xyz=xyz[1,,drop=FALSE] xyz=as.vector(xyz) xyz <- matrix(xyz, ncol=3, byrow=TRUE) natoms <- nrow(xyz) ## Check provided weight matrix if(!is.null(fc.weights)) { if(!is.matrix(fc.weights)) stop("'fc.weights' must be a numeric matrix") if((nrow(fc.weights) != natoms) || (ncol(fc.weights) != natoms) ) stop("'fc.weights' must be numeric matrix with dimensions NxN") } build.submatrix <- function(xyz, natoms, fc.weights=NULL, pdb=NULL, ...) { ## Full Hessian Hsm <- matrix(0, ncol=3*natoms, nrow=3*natoms) ## Indices relating atoms and columns in the sub-hessian col.inds <- seq(1, ncol(Hsm), by=3) ## Weight indices inds <- rep(1:natoms, each=3) ## Convenient indices for accessing the hessian inds.x <- seq(1, natoms*3, by=3) inds.y <- inds.x+1 inds.z <- inds.x+2 for ( i in 1:natoms ) { ## Calculate difference vectors and force constants diff.vect <- t(t(xyz) - xyz[i,]) ##dists <- apply(diff.vect, 1, function(x) sqrt(sum(x**2))) dists <- sqrt(rowSums(diff.vect**2)) ## quicker ! ## pfc.fun takes a vector of distances ff.names <- names(formals( pfc.fun )) args <- list(dists) if('atom.id' %in% ff.names) args <- c(args, list(atom.id=i)) if('pdb' %in% ff.names) args <- c(args, list(pdb=pdb)) args <- c(args, list(...)) force.constants <- do.call(pfc.fun, args) ## Scale the force constants if(!is.null(fc.weights)) { force.constants <- force.constants * fc.weights[i,] } force.constants <- (-1) * force.constants / (dists**2) ## since we divide on zero, ensure no Inf values force.constants[i] <- 0 diff.vect[i,] <- 0 ## Hessian elements dxx <- diff.vect[,1] * diff.vect[,1] * force.constants dyy <- diff.vect[,2] * diff.vect[,2] * force.constants dzz <- diff.vect[,3] * diff.vect[,3] * force.constants dxy <- diff.vect[,1] * diff.vect[,2] * force.constants dxz <- diff.vect[,1] * diff.vect[,3] * force.constants dyz <- diff.vect[,2] * diff.vect[,3] * force.constants ## Place the elements m <- col.inds[i] ## Off-diagonals Hsm[inds.x, m ] <- dxx Hsm[inds.y, m+1 ] <- dyy Hsm[inds.z, m+2 ] <- dzz Hsm[inds.y, m ] <- dxy Hsm[inds.z, m ] <- dxz Hsm[inds.x, m+1 ] <- dxy Hsm[inds.z, m+1 ] <- dyz Hsm[inds.x, m+2 ] <- dxz Hsm[inds.y, m+2 ] <- dyz ## Diagonal super elements Hsm[inds.x[i], m] <- sum(Hsm[inds.x, m]) * (-1) Hsm[inds.y[i], m] <- sum(Hsm[inds.y, m]) * (-1) Hsm[inds.z[i], m] <- sum(Hsm[inds.z, m]) * (-1) Hsm[inds.x[i], m+1] <- sum(Hsm[inds.x, m+1]) * (-1) Hsm[inds.y[i], m+1] <- sum(Hsm[inds.y, m+1]) * (-1) Hsm[inds.z[i], m+1] <- sum(Hsm[inds.z, m+1]) * (-1) Hsm[inds.x[i], m+2] <- sum(Hsm[inds.x, m+2]) * (-1) Hsm[inds.y[i], m+2] <- sum(Hsm[inds.y, m+2]) * (-1) Hsm[inds.z[i], m+2] <- sum(Hsm[inds.z, m+2]) * (-1) } return(Hsm) } H <- build.submatrix(xyz=xyz, natoms=natoms, fc.weights=fc.weights, pdb=pdb, ... ) return(H) } bio3d/R/get.pdb.R0000644000176200001440000000640114707230356013131 0ustar liggesusers"get.pdb" <- function (ids, path = ".", URLonly = FALSE, overwrite = FALSE, gzip = FALSE, split = FALSE, format = "pdb", verbose = TRUE, ncore = 1, ... ) { if(.Platform$OS.type=="windows") gzip <- FALSE # Parallelized by parallel package (Tue Oct 15 15:23:36 EDT 2013) ncore <- setup.ncore(ncore) if(ncore > 1) { # To avoid too frequent access to PDB server if(!split) { warning("Multiple-core access to PDB server is not allowed. Reset ncore=1") ncore <- setup.ncore(ncore = 1) } else { setup.ncore(ncore = 1) } } if(!tolower(format) %in% c("pdb", "cif")) { stop("'format' must be either 'pdb' or 'cif'") } if(inherits(ids, "blast")) ids = ids$pdb.id if (any(nchar(ids) < 4)) stop("ids should be standard 4 character PDB-IDs or 6 character PDB-ID_Chain-IDs") ids4 = ids if (any(nchar(ids) > 4)) { ids4 <- unlist(lapply(strsplit(ids, "_"), function(x) x[1])) if (any(nchar(ids4) > 4)) warning("ids should be standard 4 character PDB-IDs: trying first 4 characters...") ids4 <- substr(basename(ids), 1, 4) } ids4 <- unique(ids4) pdb.files <- paste(ids4, ".", format, ifelse(gzip, ".gz", ""), sep = "") get.files <- file.path("https://files.rcsb.org/download", pdb.files) if (URLonly) return(get.files) put.files <- file.path(path, pdb.files) if(!file.exists(path)) dir.create(path) rtn <- rep(NA, length(pdb.files)) if(ncore > 1) { rtn <- unlist(mclapply(1:length(pdb.files), function(k) { if (!file.exists(sub(".gz$", "", put.files[k])) | overwrite ) { rtn <- try(download.file(get.files[k], put.files[k], quiet = !verbose), silent = TRUE) if(inherits(rtn, "try-error")) { rtn <- 1 file.remove(put.files[k]) } else if(gzip) { cmd <- paste("gunzip -f", put.files[k]) system(cmd) } } else { rtn <- put.files[k] warning(paste(put.files[k], " exists. Skipping download")) } return(rtn) })) } else { for (k in 1:length(pdb.files)) { if (!file.exists(sub(".gz$", "", put.files[k])) | overwrite ) { rt <- try(download.file(get.files[k], put.files[k], quiet = !verbose), silent=TRUE) rtn[k] <- rt if(inherits(rt, "try-error")) { rtn[k] <- 1 file.remove(put.files[k]) } else if(gzip) { cmd <- paste("gunzip -f", put.files[k]) system(cmd) } } else { rtn[k] <- put.files[k] warning(paste(put.files[k], " exists. Skipping download")) } gc() } } rtn <- as.character(rtn) names(rtn) <- file.path(path, paste(ids4, ".", format, sep = "")) if (any(rtn == '1')) { warning("Some files could not be downloaded, check returned value") return(rtn) } else { if(split) { rtn = pdbsplit(pdb.files = names(rtn), ids = ids, path = file.path(path, "split_chain"), ncore = ncore, ...) return(rtn) } else { return(names(rtn)) } } } bio3d/R/pdbaln.R0000644000176200001440000000767614707230356013065 0ustar liggesuserspdbaln <- function(files, fit=FALSE, pqr=FALSE, ncore=1, nseg.scale=1, progress=NULL, ...) { ## Log the call cl <- match.call() ##- Quick and dirty alignment of pdb sequences ## pdbs <- pdbaln(files) ## ## ## 'files' should be a character vector of input PDB file names ## '...' extra arguments for seqaln ## ## Improvements to include 'atom.select' arguments (chain ## spliting etc), formalisation of 'pdb.list' into a specific ## bio3d object of multiple structures like 'pdbs'. ## ## pdb.list[[1]]$atom[1:3,] # Parallelized by parallel package (Fri Apr 26 19:24:18 EDT 2013) ncore <- setup.ncore(ncore) if(ncore > 1) { # Issue of serialization problem # Maximal number of cells of a double-precision matrix # that each core can serialize: (2^31-1-61)/8 R_NCELL_LIMIT_CORE = 2.68435448e8 R_NCELL_LIMIT = ncore * R_NCELL_LIMIT_CORE if(nseg.scale < 1) { warning("nseg.scale should be 1 or a larger integer\n") nseg.scale=1 } } if(!is.list(files)) { ## Check if input PDB files exist localy or online toread.local <- file.exists(files) toread.online <- (substr(files,1,4)=="http") toread.id <- rep(FALSE, length(files)) toread <- as.logical(toread.local + toread.online) ## Check for 4 letter code and possible online file if(any(!toread)) { toread.id <- ((nchar(files)==4) + (!toread) == 2) files[toread.id] <- get.pdb(files[toread.id], URLonly=TRUE) cat(" Note: Accessing online PDB files using 4 letter PDBID\n") } ## Exit if we still have missing files missing <- !as.logical(toread + toread.id) if(any(missing)) { stop(paste(" ** Missing files: check filenames\n", paste( files[c(missing)], collapse="\n"),"\n",sep="") ) } ## Avoid multi-thread downloading if(any(toread.online | toread.id)) { ncore = 1 # options(cores = ncore) } cat("Reading PDB files:",files, sep="\n") pdb.list <- mclapply(1:length(files), function(i) { if(pqr) { pdb <- read.pqr(files[i]) } else { pdb <- read.pdb(files[i]) } cat(".") ## edit for shiny version if(!is.null(progress)) { progress$inc(1/length(files)/2) } ## edit end return( pdb ) } , mc.cores = ncore) } else { if(!all(sapply(files, is.pdb))) stop("'files' must be a vector of file names, or a list of pdb objects") pdb.list <- files #ids <- sapply(files, function(x) x$call$file) #print(ids) } cat("\n\nExtracting sequences\n") s <- mclapply(pdb.list, pdbseq, mc.cores=ncore) ## check for NULL in pdbseq output ## (this would indicate no amino acid sequence in PDB) tmpcheck <- unlist(lapply(s, is.null)) if(any(tmpcheck)) { if(!is.list(files)) { err <- paste( "Could not align PDBs due to missing amino acid sequence in files:\n ", paste(files[tmpcheck], collapse=", ") ) } else { err <- paste( "Could not align PDBs due to missing amino acid sequence in PDB:\n ", paste(tmpcheck, collapse=", ") ) } stop(err) } s <- t(sapply(s, `[`, 1:max(sapply(s, length)))) s[is.na(s)] <- "-" if(!is.list(files)) { s <- seqaln(s, id=files, ...) files <- NULL } else { id <- unlist(lapply(files, function(x) { if(!is.null(x$call$file)) x$call$file else NA })) if(!is.character(id)) id <- rep(NA, length(id)) nams <- paste("seq", 1:length(id), sep="") id[is.na(id)] <- nams[is.na(id)] if(any(duplicated(id))) id <- NULL s <- seqaln(s, id=id, ...) } cat("\n") ## added progress argument for shiny version s <- read.fasta.pdb(s, prefix = "", pdbext = "", pdblist=files, ncore=ncore, nseg.scale=nseg.scale, progress=progress) ## edit end s$call=cl if(fit) s$xyz <- pdbfit(s) return(s) } bio3d/R/biounit.R0000644000176200001440000001346714707230356013271 0ustar liggesusers#' Biological Units Construction #' #' Construct biological assemblies/units based on a 'pdb' object. #' #' @details #' A valid structural/simulation study should be performed on the biological #' unit of a protein system. For example, the alpha2-beta2 tetramer form of #' hemoglobin. However, canonical PDB files usually contain the asymmetric unit of #' the crystal cell, which can be: #' \enumerate{ #' \item One biological unit #' \item A portion of a biological unit #' \item Multiple biological units #' } #' The function performs symmetry operations to the coordinates based on the #' transformation matrices stored in a 'pdb' object returned by #' \code{\link{read.pdb}}, and returns biological units stored as a list of #' \code{pdb} objects. #' #' @param pdb an object of class \code{pdb} as obtained from #' function \code{\link{read.pdb}}. #' @param biomat a list object as returned by \code{read.pdb} #' (pdb$remark$biomat), containing matrices for #' symmetry operation on individual chains to build biological units. #' It will override the matrices stored in \code{pdb}. #' @param multi logical, if TRUE the biological unit is returned as a #' 'multi-model' \code{pdb} object with each symmetric copy a distinct #' structural 'MODEL'. Otherwise, all copies are represented #' as separated chains. #' @param ncore number of CPU cores used to do the calculation. By default #' (\code{ncore=NULL}), use all available CPU cores. #' #' @return #' a list of \code{pdb} objects with each representing an individual #' biological unit. #' #' @seealso \code{\link{read.pdb}} #' #' @author Xin-Qiu Yao #' #' @examples #' \donttest{ #' # PDB server connection required - testing excluded #' #' pdb <- read.pdb("2dn1") #' biounit <- biounit(pdb) #' pdb #' biounit #' } #' \dontrun{ #' biounit <- biounit(read.pdb("2bfu"), multi=TRUE) #' write.pdb(biounit[[1]], file="biounit.pdb") #' # open the pdb file in VMD to have a look on the biological unit #' } biounit <- function(pdb, biomat = NULL, multi = FALSE, ncore = NULL) { if(!is.pdb(pdb)) stop("Please provide a 'pdb' object as obtained from 'read.pdb()'") if(!is.null(biomat)) remarks <- biomat else remarks <- pdb$remark$biomat if(is.null(remarks)) stop("Can't find 'remark' records for building biological units") ncore = setup.ncore(ncore) cl <- match.call() if(!is.null(remarks)) { # check max number of copies ncopy.max <- max(sapply(remarks$mat, length)) if(!multi && ncopy.max > 10) cat("It is slow to represent many symmetric copies as separated chains\n Try multi = TRUE\n") # Are chains treated differently? nn <- sapply(remarks$mat, function(x) length(unique(names(x)))) if(any(nn > 1) && multi) stop("Can't store as multiple models as separated symmetry operations are performed on distinct chains within one biological unit") biounits <- lapply(1:remarks$num, function(i) { # the transformation matrices mats <- remarks$mat[[i]] # applied to the chains chain <- remarks$chain[[i]] # number of copies ncopy <- length(mats) if(!multi) { ## save copies as individual chains # The original copy stored as spearated chains biounit0 <- lapply(chain, function(x) trim.pdb(pdb, chain=x, verbose=FALSE) ) # available chain ID repository chains0 <- setdiff(c(LETTERS, letters, 0:9), chain) jch <- 1 used.chain <- NULL biounit <- NULL for(j in 1:ncopy) { mt <- mats[[j]] chs <- strsplit(names(mats)[j], split=" ")[[1]] for(k in chs) { bio <- biounit0[[match(k, chain)]] xyz <- rbind(matrix(bio$xyz, nrow=3), 1) xyz <- matrix(mt %*% xyz, nrow = 1) if(! k %in% used.chain) { ch <- k used.chain <- c(used.chain, k) } else { ch <- chains0[jch] jch = jch + 1 } bio$xyz <- xyz bio$atom[, "chain"] <- ch bio$atom[, c("x", "y", "z")] <- round(matrix(xyz, ncol=3, byrow=TRUE), digits=3) biounit <- c(biounit, list(bio)) } } biounit <- do.call(cat.pdb, c(biounit, list(rechain = FALSE))) # # temporarily write the pdb of biounit and re-read it # tmpf <- tempfile() # write.pdb(biounit, file=tmpf) # biounit = read.pdb(tmpf, verbose=FALSE) } else { ## save copies as multi-models # The original copy biounit <- trim.pdb(pdb, chain=chain, verbose=FALSE) xyz = rbind(matrix(biounit$xyz, nrow=3), 1) ll <- mclapply(2:ncopy, function(j) { mt <- mats[[j]] xyz = matrix(mt %*% xyz, nrow=1) xyz }, mc.cores = ncore ) biounit$xyz <- rbind(biounit$xyz, do.call(rbind, ll)) class(biounit$xyz) <- "xyz" } biounit$call <- cl return(biounit) } ) # end of lapply(1:remarks$num) ## multimeric state nchs <- sapply(biounits, function(x) length(unique(x$atom[, "chain"])) * nrow(x$xyz)) mer <- c("monomer", "dimer", "trimer", "tetramer", "multimer") names(biounits) <- paste(remarks$method, ".determined.", mer[ifelse(nchs>5, 5, nchs)], " (", nchs, " chains)", sep="") # if(length(biounits) == 1) biounits = biounits[[1]] } return(biounits) } bio3d/R/diag.ind.R0000644000176200001440000000027214707230356013263 0ustar liggesusers`diag.ind` <- function (x, n=1, diag = TRUE) { x <- as.matrix(x) if (diag) { !(row(x) > col(x)) + (row(x) <= col(x)-n) } else { !(row(x) >= col(x)) + (row(x) <= col(x)-n) } } bio3d/R/blast.pdb.R0000644000176200001440000000430014707230356013453 0ustar liggesusers`blast.pdb` <- function(seq, database="pdb", time.out=NULL, chain.single=TRUE) { if(inherits(seq, "fasta")) { if(is.matrix(seq$ali)) { if(nrow(seq$ali)>1) warning("Multiple sequences detected - using only the first sequence in input object") seq <- as.vector(seq$ali[1,]) } else { seq <- as.vector(seq$ali) } } ## Extract sequence 'seq' from possible pdb input if(is.pdb(seq)) { seq <- pdbseq(seq) } ## Run NCBI blastp on a given 'seq' sequence against a given 'database' if(!is.vector(seq)) { stop("Input 'seq' should be a single sequence as a single or multi element character vector (as obtained from the pdbseq() function)") } seq <- paste(seq, collapse="") if( !(database %in% c("pdb", "nr", "swissprot")) ) stop("Option database should be one of pdb, nr or swissprot") ##- Submit if(nchar(seq)>30) { urlput <- paste("https://blast.ncbi.nlm.nih.gov/Blast.cgi?CMD=Put&DATABASE=", database,"&HITLIST_SIZE=20000&PROGRAM=blastp&CLIENT=web&QUERY=", paste(seq,collapse=""), sep="") } else { # mimic the 'Automatically adjust parameters for short input sequences' option on NCBI urlput <- paste("https://blast.ncbi.nlm.nih.gov/Blast.cgi?CMD=Put&DATABASE=", database,"&HITLIST_SIZE=500&PROGRAM=blastp&CLIENT=web&", "MATRIX=PAM30&MATRIX_NAME=PAM30&EXPECT=200000&", "WORD_SIZE=2&GAPCOSTS=9 1&", "THRESHOLD=11&", "COMPOSITION_BASED_STATISTICS=0&QUERY=", paste(seq,collapse=""), sep="") } txt <- scan(urlput, what="raw", sep="\n", quiet=TRUE) rid <- sub("^.*RID = " ,"",txt[ grep("RID =",txt) ]) urlget <- paste("https://blast.ncbi.nlm.nih.gov/Blast.cgi?CMD=Get", "&FORMAT_OBJECT=Alignment", "&ALIGNMENT_VIEW=Tabular", "&RESULTS_FILE=on", "&FORMAT_TYPE=CSV", "&ALIGNMENTS=20000", "&DESCRIPTIONS=20000", "&RID=",rid, sep="") blast <- get.blast(urlget, time.out = time.out, chain.single=chain.single) return(blast) } bio3d/R/aa2index.R0000644000176200001440000000366114707230356013306 0ustar liggesusers"aa2index" <- function (aa, index = "KYTJ820101", window = 1) { if (!is.vector(aa)) stop("aa2index: non vector argument") if (!is.numeric(window) || window < 1) stop("aa2index: 'window' must be numeric and positive") if (window >= length(aa)) stop("aa2index: 'window' must be smaller than the sequence length") # Use LazyData to import data - changed Jul 23, 2013 # if (!exists("aa.index")) # data(aa.index) aa.index = bio3d::aa.index if (is.numeric(index)) { if (index > length(names(aa.index))) { stop("aa2index: 'index' number does not exist") } } else { if (!is.element(index, names(aa.index))) { stop("aa2index: 'index' name does not exist") } } x <- aa.index[[index]]$I[aa] if (window == 1) { y <- x } else { n <- length(x) y <- rep(NA, n) w <- ceiling(window/2) if ( (window %% 2) == 0 ) { from <- w to <- n - w y[from:to] <- sapply(from:to, function(i) mean(x[(i - (w-1)):(i+w)], na.rm=TRUE)) if (from-1 > 0) { y[1:(from-1)] <- sapply(1:(from-1), function(i) mean(x[1: (i + w)], na.rm=TRUE)) } y[(to+1):n] <- sapply((to+1):n, function(i) mean(x[(i- (w-1)): n], na.rm=TRUE)) } else { from <- w to <- n - (w-1) y[from:to] <- sapply(from:to, function(i) mean(x[(i - (w-1)):(i + (w-1))], na.rm=TRUE)) y[1:(from-1)] <- sapply(1:(from-1), function(i) mean(x[1: (i + (w-1))], na.rm=TRUE)) y[(to+1):n] <- sapply((to+1):n, function(i) mean(x[(i - (w-1)): n], na.rm=TRUE)) } y <- round(y,2) names(y) <- aa } return(y) } bio3d/R/bounds.sse.R0000644000176200001440000000640614707230356013676 0ustar liggesusers#' Obtain A SSE Object From An SSE Sequence Vector #' #' Inverse process of the funciton \code{\link{pdb2sse}}. #' #' @details call for its effects. #' #' @param x a character vector indicating SSE for each amino acid residue. #' @param pdb an object of class \code{pdb} as obtained from #' function \code{\link{read.pdb}}. Can be ignored if \code{x} has 'names' #' attribute for residue labels. #' #' @return a 'sse' object. #' #' @note In both \code{$helix} and \code{$sheet}, an additional #' \code{$id} component is added to indicate the original numbering of the sse. #' This is particularly useful in e.g. \code{trim.pdb()} function. #' #' @seealso \code{\link{pdb2sse}} #' #' @author Xin-Qiu Yao & Barry Grant #' #' @examples #' \donttest{ #' # PDB server connection required - testing excluded #' #' pdb <- read.pdb("1a7l") #' sse <- pdb2sse(pdb) #' sse.ind <- bounds.sse(sse) #' sse.ind #' } bounds.sse <- function(x, pdb=NULL) { if(length(x) == 0) return (NULL) strings <- names(x) if(is.null(strings)) { if(!is.null(pdb)) { strings <- paste(pdb$atom[pdb$calpha, "resno"], pdb$atom[pdb$calpha, "chain"], pdb$atom[pdb$calpha, "insert"], sep = "_") if(length(strings) != length(x)) stop("pdb doesn't match x") } else { strings <- paste(seq_along(x), NA, NA, sep="_") } } else { if(!is.null(pdb)) { warning("The x has 'names' attributes. The pdb is ignored") } } lstrings <- strsplit(strings, split="_") resno <- as.numeric(sapply(lstrings, "[", 1)) chain <- sapply(lstrings, "[", 2) chain[chain == "NA"] <- "" insert <- sapply(lstrings, "[", 3) insert[insert == "NA"] <- "" id <- as.numeric(sapply(lstrings, "[", 4)) sse.string <- paste(x, chain, id, sep="_") # bounds doesn't work, use rle2 instead rl <- rle2(sse.string) inds <- cbind(seq_along(rl$inds), start = c(1, rl$inds[-length(rl$inds)]+1), end = rl$inds, length = rl$lengths ) # inds <- bounds(sse.string, dup.inds=TRUE, pre.sort=FALSE) # sort segments based on sse id (i.e. keep the original order of sse) ind.order <- order(id[inds[, "start"]]) inds <- inds[ind.order, , drop = FALSE] # helix h.inds <- which(x[inds[, "start"]] %in% c("H", "G")) if(length(h.inds) > 0) { h.id <- id[inds[h.inds, "start"]] if(any(is.na(h.id))) h.id <- seq_along(h.id) h <- list(start = resno[inds[h.inds, "start"]], end = resno[inds[h.inds, "end"]], chain = chain[inds[h.inds, "start"]], id = h.id) names(h$start) <- insert[inds[h.inds, "start"]] names(h$end) <- insert[inds[h.inds, "end"]] } else { h <- list(start=NULL, end=NULL, chain=NULL, id=NULL) } # sheet e.inds <- which(x[inds[, "start"]] == "E") if(length(e.inds) > 0) { e.id <- id[inds[e.inds, "start"]] if(any(is.na(e.id))) e.id <- seq_along(e.id) e <- list(start = resno[inds[e.inds, "start"]], end = resno[inds[e.inds, "end"]], chain = chain[inds[e.inds, "start"]], id = e.id) names(e$start) <- insert[inds[e.inds, "start"]] names(e$end) <- insert[inds[e.inds, "end"]] } else { e <- list(start=NULL, end=NULL, chain=NULL, id=NULL) } sse <- list(helix = h, sheet = e) class(sse) <- 'sse' return( sse ) } bio3d/R/exefile.R0000644000176200001440000000765614707230356013244 0ustar liggesusers.get.exepath <- function(prg) { paths <- list( pymol = list( Linux = c("/usr/bin/pymol", "/usr/local/bin/pymol"), Darwin = c("/Applications/MacPyMOL.app/Contents/MacOS/MacPyMOL", "/usr/bin/pymol", "/usr/local/bin/pymol"), Windows = c("C:/python27/PyMOL/pymol.exe", "C:/Program Files/PyMOL/PyMOL/PymolWin.exe", "C:/Program Files/PyMOL/PymolWin.exe"), ver = "-cq" ), muscle = list( Linux = c("/usr/bin/muscle", "/usr/local/bin/muscle"), Darwin = c("/usr/bin/muscle", "/usr/local/bin/muscle"), Windows = c("C:/Program Files/muscle.exe", "C:/Program Files/muscle3.8.31_i86win32.exe", "C:/Program Files/muscle/muscle.exe", "C:/Program Files/Muscle/muscle.exe", "C:/Program Files/seaview/muscle.exe", "C:/Program Files/seaview4/muscle.exe"), ver = "-version" ), clustalo = list( Linux = c("/usr/bin/clustalo", "/usr/local/bin/clustalo"), Darwin = c("/usr/bin/clustalo", "/usr/local/bin/clustalo"), Windows = c("C:/Program Files/clustalo.exe", "C:/Program Files/clustalo/clustalo.exe", "C:/Program Files/Clustalo/clustalo.exe", "C:/Program Files/seaview/clustalo.exe", "C:/Program Files/seaview4/clustalo.exe"), ver = "--version" ), dssp = list( Linux = c("/usr/bin/dssp", "/usr/local/bin/dssp"), Darwin = c("/usr/bin/dssp", "/usr/local/bin/dssp", "/usr/bin/mkdssp", "/usr/local/bin/mkdssp"), Windows = c("C:/Program Files/dssp.exe", "C:/Program Files/dssp-2.0.4-win32.exe", "C:/Program Files/dssp/dssp.exe", "C:/Program Files/Dssp/dssp.exe"), ver = "--version" ) ) ## user provided full path if(file.exists(prg) & !dir.exists(prg)) { return(prg) } ## try to automatically determine path exefile <- Sys.which(prg) if(nchar(exefile) == 0) { if(prg %in% c("pymol", "muscle", "clustalo", "dssp")) { ## determine os os1 <- Sys.info()["sysname"] ## use guess-paths defined above exefiles <- paths[[prg]][[os1]] fe <- file.exists(exefiles) if(any(fe)) { exefile <- exefiles[which(fe)[1]] } else { exefile <- NULL } } else { exefile <- NULL } } if(is.null(exefile)) { stop(paste0("could not determine path to '", prg, "'")) } return(exefile) } .test.exefile <- function(exefile) { prg <- tolower(basename(exefile)) if(grepl("muscle", prg)) { ver <- "-version" } if(grepl("pymol", prg)) { ver <- "-cq" } if(grepl("clustalo", prg)) { ver <- "--version" } if(grepl("dssp", prg)) { ver <- "--version" } os1 <- Sys.info()["sysname"] if (os1 == "Windows") { success <- shell(paste(shQuote(exefile), ver)) } else { success <- system(paste(exefile, ver), ignore.stderr = TRUE, ignore.stdout = TRUE) } if(!(success %in% c(0,1))) { return(FALSE) } else { return(TRUE) } } bio3d/R/filter.identity.R0000644000176200001440000000222714707230356014725 0ustar liggesusersfilter.identity <- function(aln=NULL, ide=NULL, cutoff=0.6, verbose=TRUE, ...) { #k<-filter.identity(aln,cutoff=0.4) #aln$id[k$ind] #k<-filter.identity(ide=k$ide,cutoff=0.6) #plot(k$tree, axes = FALSE, ylab="%identity") #axis(2,labels =c(1,0.8,0.6,0.4)) #abline(h=0.6) if(is.null(ide)) { if(is.null(aln)) stop("Must provide either an alignment 'aln' or identity matrix 'ide'") ide <- seqidentity(aln, ...) } i.d <- as.dist(1-ide) tree <- hclust(i.d) h <- 1 - cutoff n <- nrow(tree$merge) + 1 k <- integer(length(h)) k <- n + 1 - apply(outer(c(tree$height, Inf), h, ">"),2, which.max) if(verbose) cat("filter.identity(): N clusters @ cutoff = ", k, "\n") #ans <- as.vector(.Call("R_cutree", tree$merge, k, PACKAGE = "stats")) ans <- as.vector(cutree(tree, k)) cluster.rep <- NULL for(i in 1:k) { ind <- which(ans==i) if (length(ind) == 1) { cluster.rep <- c(cluster.rep, ind) } else { cluster.rep <- c(cluster.rep, ind[ which.max( colSums(ide[ind,ind]) ) ]) # max similarity } } return(list(ind=cluster.rep, tree=tree, ide=ide)) } bio3d/R/aanma.R0000644000176200001440000000010714707230356012660 0ustar liggesusers#' @rdname aanma.pdb "aanma" <- function(...) { UseMethod("aanma") } bio3d/R/write.fasta.R0000644000176200001440000000253714707230357014044 0ustar liggesusers"write.fasta" <- function(alignment=NULL, ids=NULL, seqs=alignment$ali, gap=TRUE, file, append = FALSE) { if (is.null(seqs)) stop("write.fasta: please provide a 'seqs' or 'alignment' input object") if (!is.null(alignment)) { if (is.null(alignment$id) | is.null(alignment$ali)) { stop("write.fasta: 'alignment' should be a list with '$id' and '$ali'components") } if (is.null(ids)) { ids=alignment$id } } else { if (is.null(ids)) { n.ids <- nrow(seqs) if(is.null(n.ids)) { n.ids=1 } ids=seq( 1, length=n.ids ) } } if(!gap) { seqs[is.gap(seqs)] <- "" } if (!append) { ##file.remove(file, showWarnings = FALSE) suppressWarnings( file.remove(file) ) } nseqs <- length(ids) if (nseqs == 1) { # change for shortening lines (<=60) - Xinqiu cat(">", ids, "\n", file = file, append = TRUE, sep = "") cat(seqs, file = file, append = TRUE, sep = "", fill = 60) # cat(">", ids, "\n", seqs, "\n", file = file, # append = TRUE, sep = "") } else { for (i in 1:nseqs) { cat(">", ids[i], "\n", file = file, append = TRUE, sep = "") cat(seqs[i,], file = file, append = TRUE, sep = "", fill = 60) # cat(">", ids[i], "\n", seqs[i,], # "\n", file = file, append = TRUE, sep = "") } } } bio3d/R/mktrj.enma.R0000644000176200001440000000672614707230356013666 0ustar liggesusers"mktrj.enma" <- function(enma=NULL, # enma data structure pdbs=NULL, # pdbs object s.inds=NULL, # structure ids m.inds=NULL, # modes ids mag=10, # magnification factor step=1.25, # step size file=NULL, # output pdb file rock=TRUE, ncore=NULL, ... ) { # args for write.pdb ## make a trjactory of atomic displacments along a given mode if(!inherits(enma, "enma")) stop("mktrj.enma: must supply 'enma' object, i.e. from 'nma.pdbs'") if(!is.null(pdbs)) { if(!inherits(pdbs, "pdbs")) stop("input 'pdbs' should be a list object as obtained from 'read.fasta.pdb'") } ## Parallelized by parallel package ncore <- setup.ncore(ncore, bigmem = FALSE) if(ncore>1) mylapply <- mclapply else mylapply <- lapply if(is.null(s.inds)) s.inds <- 1:nrow(enma$fluctuations) if(is.null(m.inds)) m.inds <- 1:5 if(is.null(file) & length(s.inds)==1 & length(m.inds)==1) file <- paste("mode_", m.inds+6, "-s", s.inds, ".pdb", sep="") ## check dimensions to determine rm.gaps if(any(is.gap(enma$xyz)) & (dim(enma$U.subspace)[1] == dim(enma$xyz)[2])) { rm.gaps <- FALSE } else { rm.gaps <- TRUE } if(!rm.gaps & length(s.inds)>1) stop(paste("enma object must be calculated with argument rm.gaps=TRUE", "\n", "for trajectory generation of multiple structures and modes")) if(any(enma$L[s.inds, m.inds]<=0)) warning("Mode with eigenvalue <=0 detected. Check 'mode' index.") nstep <- c(seq(step, to=mag, by=step)) zcoor <- cbind(1) %*% nstep scor <- function(x,u,m) { return(x*u+m) } myMktrj <- function(i) { coor <- NULL ind <- s.inds[i] for(j in 1:length(m.inds)) { mode <- m.inds[j] u.inds <- which(!is.na(enma$U.subspace[,mode,ind])) if(rm.gaps) xyz.inds <- gap.inspect(enma$xyz)$f.inds else xyz.inds <- u.inds plus <- sapply(c(zcoor), scor, u=enma$U.subspace[u.inds,mode,ind], m=enma$xyz[ind,xyz.inds]) minus <- sapply(c(-zcoor), scor, u=enma$U.subspace[u.inds,mode,ind], m=enma$xyz[ind,xyz.inds]) if(rock) { tmp <- cbind(enma$xyz[ind,xyz.inds], plus, plus[,rev(1:ncol(plus))], enma$xyz[ind,xyz.inds], minus, minus[,rev(1:ncol(minus))]) } else { tmp <- cbind(plus[,rev(1:ncol(plus))], enma$xyz[ind,xyz.inds], minus) } coor <- rbind(coor, t(tmp)) } return(coor) } ## do the calc coor <- mylapply(1:length(s.inds), myMktrj) coor <- do.call(rbind, coor) class(coor) <- "xyz" if(!is.null(file)) { if(rm.gaps) xyz.inds <- gap.inspect(enma$xyz)$f.inds else xyz.inds <- which(!is.na(enma$U.subspace[,m.inds[1],s.inds[1]])) if(is.null(pdbs)) write.pdb(xyz=coor, file=file, ...) else { write.pdb(xyz=coor, file=file, chain=pdbs$chain[s.inds[1], xyz2atom(xyz.inds)], resno=pdbs$resno[s.inds[1], xyz2atom(xyz.inds)], resid=pdbs$resid[s.inds[1], xyz2atom(xyz.inds)], b=enma$fluctuations[s.inds[1], !is.gap(enma$fluctuations[s.inds[1],])], ...) } invisible(coor) } else { return(coor) } } bio3d/R/plot.blast.R0000644000176200001440000001022414707230356013666 0ustar liggesusers`plot.blast` <- function(x, cutoff=NULL, cut.seed=NULL, cluster=TRUE, mar=c(2, 5, 1, 1), cex=1.5, ...) { ## b <- blast.pdb( pdbseq( read.pdb("4q21") ) ) ## plot(b, 188) ## cut.seed=110 cl <- class(x) if("hit.tbl" %in% names(x)) x <- x$hit.tbl panelplot <- function(z=x$mlog.evalue, ylab="-log(Evalue)", gp=gp, ...) { z=as.numeric(z) plot(z, xlab="", ylab=ylab, col=gps, ...) abline(v=gp, col="gray70", lty=3) pos=c(rep(4, length(gp))[-length(gp)],2) text( gp, z[gp], labels=paste0("Nhit=",gp ,", x=", round(z[gp])), col="black", pos=pos, cex=cex, ...) ##"gray50" } ##- Setup plot arangment opar <- par(no.readonly = TRUE) on.exit(par(opar)) if("blast" %in% cl) par(mfcol=c(4,1), mar=mar, cex.lab=cex) if("hmmer" %in% cl & "kg" %in% names(x)) par(mfcol=c(4,1), mar=mar, cex.lab=cex) ##- Find the point pair with largest diff evalue dx <- abs(diff(x$mlog.evalue)) dx.cut = which.max(dx) if(!is.null(cutoff)) { ##- Use suplied cutoff gps = rep(2, length(x$mlog.evalue)) gps[ (x$mlog.evalue >= cutoff) ] = 1 } else { if(cluster) { ## Ask USER whether to continue with clustering with many hits nhit <- length(x$mlog.evalue) if(nhit > 9999) { cluster <- readline( paste0(" Note: ", nhit, " hits, continue with TIME-CONSUMING clustering [y/n/q](n): ") ) cluster <- switch(cluster, y=TRUE, yes=TRUE, q="QUIT", FALSE) if(cluster=="QUIT") { stop("user stop") } } } if(is.null(cut.seed)) { ## Use mid-point of largest diff pair as seed for ## cluster grps (typical PDB values are ~110) cut.seed = mean( x$mlog.evalue[dx.cut:(dx.cut+1)] ) } if(cluster){ ##- Partition into groups via clustering ## In future could use changepoint::cpt.var hc <- hclust( dist(x$mlog.evalue) ) if(!is.null(cutoff)) { cut.seed=cutoff } gps <- cutree(hc, h=cut.seed) } if(!cluster || (length(unique(gps))==1)) { ##- Either we don't want to run hclust or hclust/cutree ## has returned only one grp so here we will divide ## into two grps at point of largest diff gps = rep(2, length(x$mlog.evalue)) gps[1:dx.cut]=1 } } gp.inds <- na.omit(rle2(gps)$inds) gp.nums <- x$mlog.evalue[gp.inds] cat(" * Possible cutoff values: ", floor(gp.nums), "\n", " Yielding Nhits: ", gp.inds, "\n\n") if( is.null(cutoff) ) { ## Pick a cutoff close to cut.seed i <- which.min(abs(gp.nums - cut.seed)) cutoff <- floor( gp.nums[ i ] ) } inds <- x$mlog.evalue >= cutoff cat(" * Chosen cutoff value of: ", cutoff, "\n", " Yielding Nhits: ", sum(inds), "\n") ##- Plot each alignment statistic with annotated grps panelplot(gp=gp.inds) panelplot(x$bitscore, ylab="Bitscore", gp=gp.inds) if("identity" %in% names(x)) panelplot(x$identity, ylab="Identity", gp=gp.inds) if("alignmentlength" %in% names(x)) panelplot(x$alignmentlength, ylab="Length", gp=gp.inds) if("kg" %in% names(x)) { tbl <- table(x$kg[inds], cut(x$score[inds], 20)) tbl=tbl[, seq(ncol(tbl), 1), drop=FALSE] cols <- seq(1,nrow(tbl)) barplot(tbl, col=cols, ylab="Frequency", border="grey50") box() legend("topleft", rownames(tbl), col=cols, pch=15, ncol=3, cex=cex*0.8, box.lwd = .5, box.lty=2, box.col = "grey50", bg = "white") tbl <- table(x$kg[!inds], cut(x$score[!inds], 20)) tbl=tbl[, seq(ncol(tbl), 1), drop=FALSE] cols <- seq(1,nrow(tbl)) barplot(tbl, col=cols, ylab="Frequency", border="grey50") legend("topleft", rownames(tbl), col=cols, pch=15, ncol=3, cex=cex*0.8, box.lwd = .5, box.lty=2, box.col = "grey50", bg = "white") box() } ##- Return details of hits above cutoff out <- cbind("pdb.id"=x$pdb.id[inds], "acc"=x$acc[inds], "group"=gps[inds]) rownames(out) <- which(inds) o <- list(hits=out, pdb.id=x$pdb.id[inds], acc=x$acc[inds], inds=inds) class(o) <- "blast" return(invisible(o)) } bio3d/R/plot.pca.score.R0000644000176200001440000000264114707230357014443 0ustar liggesusers"plot.pca.score" <- function(x, inds=NULL, col=rainbow(nrow(x)), lab="", ... ) { # Produces a z-score plot for PC1 vs PC2, # PC3 vs PC2 and PC1 vs PC3 if given a # matrix "z"that contains the column wise # scores obtained from PCA 'pca.xyz' if(is.list(x)) x=x$z # output from pca.xyz() if(is.null(inds)) inds <- 1:nrow(x) op <- par(no.readonly=TRUE) on.exit(par(op)) par(mfrow=c(2,2));par(pty="s") limits<-max(abs(c(range(x[,1]),range(x[,2]),range(x[,3])))) print(paste("axes limits: ",round(limits,2),sep="")) text.offset<-limits/19 plot(x[,1], x[,2], # pc1 vs pc2 xlim=c(-limits,limits), ylim=c(-limits,limits), xlab="PC1", ylab="PC2",col=col, ...) abline(h=0,col="gray",lty=2);abline(v=0,col="gray",lty=2) text(x[inds,1]+text.offset, x[inds,2]+text.offset, labels = lab[inds]) plot(x[,3], x[,2], # pc3 vs pc3 xlim=c(-limits,limits), ylim=c(-limits,limits), xlab="PC3", ylab="PC2", col=col, ...) abline(h=0,col="gray",lty=2);abline(v=0,col="gray",lty=2) text(x[inds,3]+text.offset, x[inds,2]+text.offset, labels = lab[inds]) plot(x[,1], x[,3], # pc1 vs pc3 xlim=c(-limits,limits), ylim=c(-limits,limits), xlab="PC1", ylab="PC3",col=col, ...) abline(h=0,col="gray",lty=2);abline(v=0,col="gray",lty=2) text(x[inds,1]+text.offset, x[inds,3]+text.offset, labels = lab[inds]) } bio3d/R/rmsf.R0000644000176200001440000000217414707230357012561 0ustar liggesusers"rmsf" <- function(xyz, grpby = NULL, average = FALSE) { if(is.null(dim(xyz))) stop("input 'xyz' has NULL dimension") if(!is.null(grpby)) { if(is.pdb(grpby)) grpby <- paste(grpby$atom$resno, grpby$atom$chain, sep="-") if(length(grpby) != ncol(xyz)/3) stop("Length of 'grpby' doesn't match 'xyz'") } ## Cov function changed ~ R.2.7 my.sd <- function (x, na.rm = FALSE) { if (is.matrix(x)) apply(x, 2, my.sd, na.rm = na.rm) else if (is.vector(x)) { if(na.rm) x <- x[!is.na(x)] if(length(x) == 0) return(NA) sqrt(var(x, na.rm = na.rm)) } else if (is.data.frame(x)) sapply(x, my.sd, na.rm = na.rm) else { x <- as.vector(x) my.sd(x,na.rm=na.rm) } } fluct = rowSums( matrix( my.sd(xyz, na.rm = TRUE), ncol=3, byrow=TRUE )^2, na.rm=TRUE ) if(average) { if(ncol(xyz) %% 3 == 0) d = ncol(xyz) / 3 else d = ncol(xyz) return( sqrt( sum(fluct)/d ) ) } else { if(is.null(grpby)) return( sqrt( fluct ) ) else return( as.vector(tapply(sqrt( fluct ), as.factor(grpby), mean)) ) } } bio3d/R/filter.cmap.R0000644000176200001440000000244614707230356014017 0ustar liggesusersfilter.cmap <- function(cm, cutoff.sims = NULL) { ## Convert list to array if(is.list(cm)) { dims <- dim(cm[[1]]) if(length(dims) != 2) stop("Input 'cm' should be a NxNxS 3d array or a list of NxN matrices, where N is the number of atoms and S is the number of simulations") if(length(unique(c(sapply(cm, dim)))) != 1) stop("Matrices in provided list have unequal dimensions") cm <- array(unlist(cm), dim = c(nrow(cm[[1]]), ncol(cm[[1]]), length(cm))) } ## Check input dims <- dim(cm) if(length(dims) != 3) { stop("Input 'cm' should be a NxNxS 3d array or a list of NxN matrices, where N is the number of atoms and S is the number of simulations") } if(dims[3L] < 2) stop("2 or more contact maps required") if(is.null(cutoff.sims)) cutoff.sims <- dims[3L] if(!is.numeric(cutoff.sims) | cutoff.sims > dims[3L] | cutoff.sims < 1) { stop(paste("Input 'cutoff.sims' should be a number between 1 and", dims[3L], "\n ", "(i.e. the number of simulations upon which filtering is based)")) } ## Sum across simulations and filter by cutoff.sims de cm.sum <- apply(cm, c(1:2), sum, na.rm = TRUE) return(array(as.numeric(cm.sum >= cutoff.sims), dim = dim(cm.sum))) } bio3d/R/rmsip.R0000644000176200001440000000576114707230357012751 0ustar liggesusersrmsip <- function(...) UseMethod("rmsip") rmsip.enma <- function(enma, ncore=NULL, subset=10, ...) { if(!inherits(enma, "enma")) stop("provide a 'enma' object as obtain from function 'nma.pdbs()'") if(any(is.na(enma$fluctuations))) stop("provide 'enma' object calculated with argument 'rm.gaps=TRUE'") ncore <- setup.ncore(ncore, bigmem = FALSE) if(ncore>1) mylapply <- mclapply else mylapply <- lapply dims <- dim(enma$fluctuations) m <- dims[1] mat <- matrix(NA, m, m) ##inds <- pairwise(m) inds <- rbind(pairwise(m), matrix(rep(1:m,each=2), ncol=2, byrow=T)) mylist <- mylapply(1:nrow(inds), function(row) { i <- inds[row,1]; j <- inds[row,2]; r <- rmsip.default(enma$U.subspace[,,i], enma$U.subspace[,,j], subset=subset) out <- list(val=r$rmsip, i=i, j=j) cat(".") return(out) }) for ( i in 1:length(mylist)) { tmp <- mylist[[i]] mat[tmp$i, tmp$j] <- tmp$val } mat[ inds[,c(2,1)] ] = mat[ inds ] ##diag(mat) <- rep(1, n) colnames(mat) <- basename(rownames(enma$fluctuations)) rownames(mat) <- basename(rownames(enma$fluctuations)) cat("\n") return(round(mat, 6)) } rmsip.default <- function(modes.a, modes.b, subset = 10, row.name="a", col.name="b", ...) { if(missing(modes.a)) stop("rmsip: 'modes.a' must be prodivded") if(missing(modes.b)) stop("rmsip: 'modes.b' must be prodivded") m1 <- .fetchmodes(modes.a, subset=subset) m2 <- .fetchmodes(modes.b, subset=subset) dims.a <- dim(m1$U) dims.b <- dim(m2$U) subset <- dims.a[2] if( dims.a[1] != dims.b[1] ) stop("dimension mismatch") if( dims.a[2] != dims.b[2] ) stop("dimension mismatch") mass.a <- NULL; mass.b <- NULL; x <- normalize.vector(m1$U, mass.b) y <- normalize.vector(m2$U, mass.b) if(is.null(mass.a)) o <- ( t(x) %*% y ) **2 else o <- t(apply(x, 2, inner.prod, y, mass.a) **2) if (!is.null(row.name)) { rownames(o) <- paste(row.name, c(1:subset), sep="") } if (!is.null(col.name)) { colnames(o) <- paste(col.name, c(1:subset), sep="") } rmsip <- sqrt(sum(o)/subset) out <- list(overlap=round(o,3), rmsip=rmsip) class(out) <- "rmsip" return( out ) } .fetchmodes <- function(x, subset=NULL) { if (inherits(x, "pca")) { U <- x$U; L <- x$L; first.mode <- 1 } else if (inherits(x, "nma")) { U <- x$U; L <- x$L; mass <- x$mass first.mode <- x$triv.modes+1 } else { if( !(inherits(x, "matrix") | inherits(x, "pca.loadings")) ) stop("provide an object of type 'pca', 'nma', or 'matrix'") U <- x; L <- NULL; first.mode <- 1 } dims <- dim(U) if(is.null(subset)) { n <- dims[2] } else { n <- subset + first.mode - 1 if(n>dims[2]) n <- dims[2] } U <- U[, first.mode:n, drop=FALSE] L <- L[first.mode:n] out <- list(U=U, L=L, mass=NULL) return(out) } bio3d/R/rmsd.R0000644000176200001440000001402014707230357012550 0ustar liggesusers"rmsd" <- function(a, b=NULL, a.inds=NULL, b.inds=NULL, fit=FALSE, ncore=1, nseg.scale=1) { # Calculate the RMSD between all rows of 'a' or between # the single structure 'a' and the one or more structures # contained in 'b' # Parallelized by parallel package -Wed Dec 12 11:15:20 EST 2012 # nseg.scale - to resolve the memory problem of using multicore ncore <- setup.ncore(ncore) if(ncore > 1) { # Issue of serialization problem # Maximal number of cells of a double-precision matrix # that each core can serialize: (2^31-1-61)/8 R_NCELL_LIMIT_CORE = 2.68435448e8 R_NCELL_LIMIT = ncore * R_NCELL_LIMIT_CORE if(nseg.scale < 1) { warning("nseg.scale should be 1 or a larger integer\n") nseg.scale=1 } } ## from 'select' object to indices if(is.select(a.inds)) a.inds <- a.inds$xyz if(is.select(b.inds)) b.inds <- b.inds$xyz ## function to fetch xyz and ids from input getxyz <- function(x) { xyz <- NULL; ids <- NULL; if(is.pdbs(x)) { ids <- basename.pdb(as.character(x$id)) xyz <- x$xyz } if(is.pdb(x)) { xyz <- x$xyz if(!is.null(rownames(xyz))) ids <- rownames(xyz) } if(is.matrix(x) | is.vector(x)) { xyz <- x if(!is.null(rownames(xyz))) ids <- basename.pdb(as.character(rownames(xyz))) } return(list(xyz=xyz, ids=ids)) } ## set xyz and ids for a ax <- getxyz(a) a=ax$xyz; ids <- ax$ids; ## set xyz and ids for a if(!is.null(b)) { bx <- getxyz(b) b=bx$xyz; ids <- bx$ids; } if( is.null(a.inds) && is.null(b.inds) ) { a.inds <- gap.inspect(a)$f.inds if(!is.null(b)) { a.inds <- intersect(a.inds, gap.inspect(b)$f.inds) } b.inds <- a.inds if(length(a.inds) != length(a)) { warning(paste("No indices provided, using the", length(a.inds)/3, "non NA positions\n")) } } if (is.null(a.inds)) a.inds <- gap.inspect(a)$f.inds if (is.null(b.inds) && !is.null(b)) b.inds <- gap.inspect(b)$f.inds if(is.vector(a) || nrow(a)==1) { if(is.null(b)) { stop("No comparison can be made, input was only a single vector 'a'") } } else { if(is.null(b)) { # Pair Wise Matrix 'a' if( any(is.na(a[,a.inds])) ) { stop("error: NA elements present in selected set") } nseq=nrow(a) inds=pairwise(nseq) ni <- nrow(inds) if(ncore > 1){ # Parallelized RLIMIT = R_NCELL_LIMIT nDataSeg = floor((ni-1)/RLIMIT)+1 nDataSeg = floor(nDataSeg * nseg.scale) lenSeg = floor(ni/nDataSeg) s = vector("list", nDataSeg) for(i in 1:nDataSeg) { istart = (i-1)*lenSeg + 1 iend = if(i 1)) { if (length(a.inds) != length(b.inds)) { stop("dimension mismatch: a[a.inds] and b[,b.inds] should be the same length") } if( any(is.na(a[a.inds])) || any(is.na(b[,b.inds])) ) { stop("error: NA elements present in selected set") } if(fit) { # Parallelized / single version b <- fit.xyz(fixed=a, mobile=b, fixed.inds=a.inds, mobile.inds=b.inds, ncore=ncore, nseg.scale=nseg.scale) } if(ncore > 1){ # Parallelized RLIMIT = R_NCELL_LIMIT nDataSeg = floor((nrow(b)-1)/RLIMIT)+1 nDataSeg = floor(nDataSeg * nseg.scale) lenSeg = floor(nrow(b)/nDataSeg) irmsd = vector("list", nDataSeg) for(i in 1:nDataSeg) { istart = (i-1)*lenSeg + 1 iend = if(i0) { if(!is.null(inds)) warning("Multiple atom selection terms provided. Using only argument 'inds'") else if(is.select(extra.args[[1]])) ## to be back-compatible with the habit calling trim.pdb(pdb, inds) inds = extra.args[[1]] else inds = atom.select(mol, ...) } if(is.null(inds)) stop("no selection indices provided") if(!is.list(inds)) stop("selection indices must be provided i.e. from 'atom.select'") if(is.null(inds$atom) || is.null(inds$xyz)) stop("selection indices must be provided i.e. from 'atom.select'") new <- mol rownames(new$atom) <- new$atom$eleno new$atom <- new$atom[inds$atom,,drop=FALSE] new$atom$eleno <- 1:nrow(new$atom) new$bond <- mol$bond[inds$bond, ] xyz <- as.xyz(mol$xyz) new$xyz <- as.xyz(mol$xyz[, inds$xyz, drop=FALSE]) new$info[1] <- nrow(new$atom) new$info[2] <- nrow(new$bond) new$info[3] <- length(unique(new$atom$resid)) new$bond$origin = new$atom[ as.character(new$bond$origin), "eleno" ] new$bond$target = new$atom[ as.character(new$bond$target), "eleno" ] ## substrucutre if(!is.null(mol$substructure)) { new$substructure <- mol$substructure[ mol$substructure$root_atom %in% mol$atom$eleno[ inds$atom], ] if(nrow(new$substructure) > 0) { new$substructure$root_atom <- new$atom[ as.character(new$substructure$root_atom), "eleno" ] new$substructure$id <- 1:nrow(new$substructure) } } ## new ids and rownames new$bond$id <- 1:nrow(new$bond) rownames(new$bond) <- 1:nrow(new$bond) rownames(new$atom) <- 1:nrow(new$atom) return(new) } bio3d/R/dccm.enma.R0000644000176200001440000000443114707230356013434 0ustar liggesusers"dccm.enma" <- function(x, ncore=NULL, na.rm=FALSE, ...) { enma <- x if(!inherits(enma, "enma")) stop("input should be an 'enma' object as obtained from 'nma.pdbs'") ## Parallelized by parallel package ncore <- setup.ncore(ncore, bigmem = FALSE) if(ncore>1) mylapply <- mclapply else mylapply <- lapply mass <- TRUE if(!is.null(enma$call$mass)) mass <- enma$call$mass pi <- 3.14159265359 dims <- dim(enma$U.subspace) if(is.null(enma$full.nma)) { if((dims[1]-6)>dims[2]) warning(paste(dims[2], "modes used in the calculation of the DCCMs")) } myCalcDCCM <- function(i, enma, na.rm=FALSE, ...) { if(is.null(enma$full.nma)) { if(mass) { freqs <- sqrt(abs(enma$L[i,])) / (2 * pi) fcs <- NULL } else { freqs <- NULL fcs <- enma$L[i,] } if(na.rm) { inds <- which( !is.na(enma$U.subspace[,1,i]) ) U <- enma$U.subspace[inds,,i] } else U <- enma$U.subspace[,,i] dummy.nma <- list(U=U, L=enma$L[i,], modes=NULL, frequencies=freqs, force.constants=fcs, triv.modes=0, natoms=nrow(U)/3) ##natoms=nrow(enma$U.subspace[,,i])/3) class(dummy.nma) <- "nma" invisible(capture.output( cm.tmp <- dccm.nma(dummy.nma, ncore=1, ...) )) } else { invisible(capture.output( cm.tmp <- dccm.nma(enma$full.nma[[i]], ncore=1, ...) )) } .update.pb(pb) return(cm.tmp) } ## do the calc pb <- .init.pb(ncore, min=0, max=dims[3L]) all.dccm <- mylapply(1:dims[3L], myCalcDCCM, enma, na.rm=na.rm, ...) .close.pb(pb) if(any(is.na(enma$U.subspace))) arr <- FALSE else arr <- TRUE if(arr) { ## convert to a 3d-array dccm.arr <- array(0, dim=c(dims[1L]/3, dims[1L]/3, dims[3L])) ## collect data for(i in 1:length(all.dccm)) { tmp.cm <- all.dccm[[i]] dccm.arr[,,i] <- tmp.cm } } if(arr) { avg <- apply(dccm.arr, 1:2, mean) class(avg) <- c("matrix", "dccm") out <- list(all.dccm=dccm.arr, avg.dccm=avg) } else { out <- list(all.dccm=all.dccm, avg.dccm=NULL) } return(out) } bio3d/R/plot.pca.scree.R0000644000176200001440000000235414707230357014432 0ustar liggesusers`plot.pca.scree` <- function(x, y=NULL, type="o", pch=18, main="", sub="", xlim=c(0,20), ylim=NULL, ylab="Proportion of Variance (%)", xlab="Eigenvalue Rank", axes=TRUE, ann=par("ann"), col=par("col"), lab=TRUE, ...) { if(is.list(x)) x=x$L # output from pca.xyz() PC <- c(1:length(x)) percent <- (x/sum(x))*100 cumv<-cumsum(percent) #xy <- xy.coords(x, y) xy <- xy.coords(percent, y=NULL) if (is.null(xlim)) xlim <- range(xy$x[is.finite(xy$x)]) if (is.null(ylim)) ylim <- range(xy$y[is.finite(xy$y)]) opar <- par(no.readonly=TRUE) on.exit(par(opar)) plot.new() plot.window(xlim, ylim)#, ...) points(xy$x, xy$y, col=col, type=type, pch=pch)#, ...) if (axes) { axis(1, at=c(1:8,max(xlim))) axis(2, at=c(round(percent[c(1:5)],1),0)) ##axis(1) ##axis(2) box() } if(lab) { text(c(1:4), percent[c(1:4)], labels=round(cumv[c(1:4)],1), pos=4) text(c(8,20), percent[c(8,20)], labels=round(cumv[c(8,20)],1), pos=3) } if (ann) { if(is.null(xlab)) xlab=xy$xlab if(is.null(ylab)) ylab=xy$ylab title(main=main, sub=sub, xlab=xlab, ylab=ylab, ...) } out<-list(pc=PC,percent=percent,cumv=cumv) } bio3d/R/aa2mass.R0000644000176200001440000000575714707230356013152 0ustar liggesusers"aa2mass" <- function(pdb, inds=NULL, mass.custom=NULL, addter=TRUE, mmtk=FALSE) { if (missing(pdb)) stop("must supply 'pdb' object or vector of amino acid residue names") if(is.pdb(pdb)) { if(!is.null(inds)) { pdb <- trim.pdb(pdb, inds) } sequ <- pdb$atom[pdb$calpha,"resid"] } else { if(!is.null(inds)) warning("'inds' has no effect when 'pdb' is vector") sequ <- pdb if(any(nchar(sequ)==1)) sequ <- aa123(sequ) if(any(nchar(sequ)!=3)) stop("must supply 'pdb' object or vector of amino acid residue names") } ## Define residues masses if(mmtk) { ## MMTK (for reproduction purposes!) w <- c( 71.079018, 157.196106, 114.104059, 114.080689, 103.143407, 128.131048, 128.107678, 57.05203, 137.141527, 113.159985, 113.159985, 129.18266, 131.197384, 147.177144, 97.117044, 87.078323, 101.105312, 186.213917, 163.176449, 99.132996) aa <- c("ALA", "ARG", "ASN", "ASP", "CYS", "GLN", "GLU", "GLY", "HIS", "ILE", "LEU", "LYS", "MET", "PHE", "PRO", "SER", "THR", "TRP", "TYR", "VAL") mat <- data.frame(aa3=aa, aa1=aa321(aa), mass=w, formula=NA, name=NA) rownames(mat) <- aa } else { ## Read data matrix mat <- bio3d::aa.table } ## Data frame with column names: aa3, aa1, mass, formula, name if (!is.null(mass.custom)) { if(!is.list(mass.custom)) stop("'mass.custom' must be of class 'list'") new.aas <- names(mass.custom) if(any(duplicated(new.aas))) { mass.custom[duplicated(new.aas)] <- NULL warning("duplicate residue name(s) in 'mass.custom'. using first occurrence(s) only.") } new.aas <- names(mass.custom) if(any(new.aas %in% mat$aa3)) { dups <- paste(unique(new.aas[new.aas %in% mat$aa3]), collapse=", ") warning(paste("residue name(s)", dups, "exists in 'aa.table'. overwriting with provided value(s).")) } for(new.aa in new.aas) { if( new.aa %in% rownames(mat) ) { ## Replace residue mass mat[new.aa, "mass"] = mass.custom[[ new.aa ]] } else { ## Add new residue to data frame (aa.table) nr <- data.frame(list(aa3=new.aa, aa1="X", mass=mass.custom[[ new.aa ]], formula=NA, name=NA)) rownames(nr) <- new.aa mat <- rbind(mat, nr) } } } ## Fetch mass from data frame wts <- mat[sequ, "mass"] ## Check for missing masses if(NA %in% wts) { inds <- which(wts %in% NA) unknown <- paste(unique(sequ[inds]), collapse=" ") stop(paste("Unknown amino acid identifier: ", unknown, sep="")) } if(addter) { wts[1] <- wts[1] + atom2mass("H") wts[length(wts)] <- wts[length(wts)] + atom2mass("O") + atom2mass("H") } return(wts) } bio3d/R/hclustplot.R0000644000176200001440000001004214707230356014003 0ustar liggesusers"hclustplot" <- function(hc, k=NULL, h=NULL, colors=NULL, labels=NULL, fillbox=FALSE, heights = c(1, .3), mar = c(1, 1, 0, 1), ...) { if(!inherits(hc, "hclust")) stop("hc must be of type 'hclust'") if(is.null(k) & is.null(h) & is.null(colors)) stop("provide either k or h to function 'cutree', or colors for manual coloring") mtext.names <- names(formals( mtext )) plot.dendrogram <- get("plot.dendrogram", envir = getNamespace("stats")) plot.names <- c(names(formals( plot.dendrogram )), names(formals( plot.default ))) dots <- list(...) mtext.args <- dots[names(dots) %in% mtext.names] plot.args <- dots[names(dots) %in% plot.names] par.args <- dots[!(names(dots) %in% unique(c(names(mtext.args), names(plot.args))))] mtext.args <- c(mtext.args, par.args) plot.args <- c(plot.args, par.args) ## set default and allowed mtext arguments if(!any(names(mtext.args)=="line")) { if( fillbox ) mtext.args$line <- 0.5 else mtext.args$line <- -0.25 } if(!any(names(mtext.args)=="side")) mtext.args$side <- 1 if(!any(names(mtext.args)=="las")) mtext.args$las <- 2 if(any(names(mtext.args)=="col")) mtext.args$col <- NULL if(any(names(mtext.args)=="at")) mtext.args$at <- NULL ## set default and allowed plot.dendrogram arguments if(any(names(plot.args)=="axes")) { axes <- plot.args$axes plot.args$axes <- NULL } else { axes <- TRUE } if(any(names(plot.args)=="xaxs")) plot.args$xaxs <- NULL if(any(names(plot.args)=="leaflab")) plot.args$leaflab <- NULL if(any(names(plot.args)=="xlab")) plot.args$xlab <- NULL if(any(names(plot.args)=="horiz")) plot.args$horiz <- NULL ## print(mtext.args) ## print(par.args) ## print(plot.args) plot.labels <- TRUE if(is.logical(labels)) { if(labels) plot.labels <- TRUE else plot.labels <- FALSE labels <- NULL } if(is.null(labels)) { labels <- hc$labels if(is.null(labels)) labels <- seq(1, length(hc$order)) } else { if( length(hc$order) != length(labels) ) stop("labels must be of same length as hc") } if(!is.null(colors)) { unq.cols <- unique(colors) grps <- unlist(lapply(colors, function(x) which(x==unq.cols))) labelColors <- unq.cols } else { grps <- cutree(hc, k=k, h=h) labelColors <- seq(1, length(unique(grps))) } hcd <- as.dendrogram(hc) cols <- labelColors[grps][hc$order] ## set margins mar.default <- c(1, 1, 0, 1) if(all(mar==mar.default)) { mar <- mar.default mar[1] <- mar[1] + ifelse(plot.labels, 3, 0) mar[1] <- mar[1] + ifelse(fillbox, 2, 0) mar[2] <- mar[2] + ifelse(!is.null(plot.args$ylab), 2, 0) mar[2] <- mar[2] + ifelse(axes, 2, 0) mar[3] <- ifelse(!is.null(plot.args$ylab), 4, 2) } ## colored filled boxes below the dendrogram if( fillbox ) { ##| plot.labels ) { layout(as.matrix(c(2,1)), heights = heights) dev.hold() on.exit(dev.flush()) op <- par(no.readonly = TRUE) on.exit(par(op), add = TRUE) par(mar=c(mar[1], mar[2], 0, mar[4])) if( fillbox ) image(cbind(1:length(grps)), col = cols, axes = FALSE) else frame() if(plot.labels) { do.call('mtext', c(list(text=labels[ hc$order ], at=seq(0, 1, length.out=length(grps)), col=cols), mtext.args)) } } else { layout(1) } ## dendrogram par(mar = c(ifelse(fillbox, 0, mar[1]), mar[2], mar[3], mar[4])) do.call('plot', c(list(x=hcd, axes=FALSE, leaflab="none", xaxs="i"), plot.args)) if(axes) axis(2) ## labels when filled boxes are not drawn if(plot.labels & !fillbox ) { do.call('mtext', c(list(text=labels[ hc$order ], at=seq(1, length(grps)), col=cols), mtext.args)) } ##if(!is.null(sub)) { ## mtext(sub, side=3, line=-0.5) ##} } bio3d/R/aanma.pdb.R0000644000176200001440000002701614707230356013434 0ustar liggesusers#' All Atom Normal Mode Analysis #' #' Perform all-atom elastic network model normal modes calculation of a protein #' structure. #' #' @details This function builds an elastic network model (ENM) based on all #' heavy atoms of input \code{pdb}, and performs subsequent normal mode #' analysis (NMA) in various manners. By default, the \sQuote{aaenm2} force #' field (defining of the spring constants between atoms) is used, which was #' obtained by fitting to a local energy minimum of a crambin model #' derived from the AMBER99SB force field. It employs a pair force constant #' function which falls as r^-6, and specific force constants for #' covalent and intra-residue atom pairs. See also \code{\link{load.enmff}} #' for other force field options. #' #' The \code{outmodes} argument controls the type of output modes. There are #' two standard types of output modes: \sQuote{noh} and \sQuote{calpha}. #' \code{outmodes='noh'} invokes regular all-atom based ENM-NMA. When #' \code{outmodes='calpha'}, an effective Hessian with respect to all C-alpha #' atoms will be first calculated using the same formula as in Hinsen et al. #' NMA is then performed on this effective C-alpha based Hessian. In addition, #' users can provide their own atom selection (see \code{\link{atom.select}}) #' as the value of \code{outmodes} for customized output modes generation. #' #' When \code{reduced=TRUE}, only a selection of all heavy atoms is used #' to build the ENM. More specifically, three to five atoms per residue #' constitute the model. Here the N, CA, C atoms represent the protein #' backbone, and zero to two selected side chain atoms represent the side chain #' (selected based on side chain size and the distance to CA). This #' coarse-grained ENM has significantly improved computational efficiency and #' similar prediction accuracy with respect to the all-atom ENM. #' #' When \code{rtb=TRUE}, rotation-translation block (RTB) based approximate #' modes will be calculated. In this method, each residue is assumed to be a #' rigid body (or \sQuote{block}) that has only rotational and translational #' degrees of freedom. Intra-residue deformation is thus ignored. #' (See Durand et al 1994 and Tama et al. 2000 for more details). N residues per #' block is also supported, where N=1, 2, 3, etc. (See argument \code{nmer}). #' The RTB method has significantly improved computational efficiency and #' similar prediction accuracy with respect to the all-atom ENM. #' #' By default the function will diagonalize the mass-weighted Hessian matrix. #' The resulting mode vectors are moreover scaled by the thermal fluctuation #' amplitudes. #' #' @param pdb an object of class \code{pdb} as obtained from function #' \code{\link{read.pdb}}. #' @param pfc.fun customized pair force constant (\sQuote{pfc}) function. The #' provided function should take a vector of distances as an argument to #' return a vector of force constants. If NULL, the default function #' \sQuote{aaenm2} will be employed. (See details below). #' @param mass logical, if TRUE the Hessian will be mass-weighted. #' @param temp numerical, temperature for which the amplitudes for scaling the #' atomic displacement vectors are calculated. Set \sQuote{temp=NULL} to #' avoid scaling. #' @param keep numerical, final number of modes to be stored. Note that all #' subsequent analyses are limited to this subset of modes. This option is #' useful for very large structures and cases where memory may be limited. #' @param hessian hessian matrix as obtained from \code{\link{build.hessian}}. #' For internal purposes and generally not intended for public use. #' @param outmodes either a character (\sQuote{calpha} or \sQuote{noh}) or atom #' indices as obtained from \code{\link{atom.select}} specifying the atoms to #' include in the resulting mode object. (See details below). #' @param rm.wat logical, if TRUE water molecules will be removed before #' calculation. #' @param reduced logical, if TRUE the coarse-grained (\sQuote{4-bead}) ENM will #' be employed. (See details below). #' @param rtb logical, if TRUE the rotation-translation block based #' approximate modes will be calculated. (See details below). #' @param nmer numerical, defines the number of residues per block (used only #' when \code{rtb=TRUE}). #' @param ... additional arguments to \code{\link{build.hessian}} and #' \code{\link{aa2mass}}. One useful option here for dealing with #' unconventional residues is \sQuote{mass.custom}, see the #' \code{\link{aa2mass}} function for details. #' #' @return Returns an object of class \sQuote{nma} with the following #' components: #' \item{modes}{ numeric matrix with columns containing the normal mode #' vectors. Mode vectors are converted to unweighted Cartesian #' coordinates when \code{mass=TRUE}. Note that the 6 first trivial #' eigenvectos appear in columns one to six. } #' \item{frequencies}{ numeric vector containing the vibrational #' frequencies corresponding to each mode (for \code{mass=TRUE}). } #' \item{force.constants}{ numeric vector containing the force constants #' corresponding to each mode (for \code{mass=FALSE)}). } #' \item{fluctuations}{ numeric vector of atomic fluctuations. } #' \item{U}{ numeric matrix with columns containing the raw #' eigenvectors. Equals to the \code{modes} component when #' \code{mass=FALSE} and \code{temp=NULL}. } #' \item{L}{ numeric vector containing the raw eigenvalues. } #' \item{xyz}{ numeric matrix of class \code{xyz} containing the #' Cartesian coordinates in which the calculation was performed. } #' \item{mass}{ numeric vector containing the residue masses used for the #' mass-weighting. } #' \item{temp}{ numerical, temperature for which the amplitudes for #' scaling the atomic displacement vectors are calculated. } #' \item{triv.modes}{ number of trivial modes. } #' \item{natoms}{ number of C-alpha atoms. } #' \item{call}{ the matched call. } #' #' @seealso #' \code{\link{nma.pdb}} for C-alpha based NMA, \code{\link{aanma.pdbs}} for #' ensemble all-atom NMA, \code{\link{load.enmff}} for available ENM force #' fields, and \code{\link{fluct.nma}}, \code{\link{mktrj.nma}}, and #' \code{\link{dccm.nma}} for various post-NMA calculations. #' #' @author Lars Skjaerven & Xin-Qiu Yao #' #' @references #' Hinsen, K. et al. (2000) \emph{Chem. Phys.} \bold{261}, 25. #' Durand, P. et al. (1994) \emph{Biopolymers} \bold{34}, 759. #' Tama, F. et al. (2000) \emph{Proteins} \bold{41}, 1. #' #' @examples #' \dontrun{ #' # All-atom NMA takes relatively long time - Don't run by default. #' #' ## Fetch stucture #' pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) #' #' ## Calculate all-atom normal modes #' modes.aa <- aanma(pdb, outmodes='noh') #' #' ## Calculate all-atom normal modes with RTB approximation #' modes.aa.rtb <- aanma(pdb, outmodes='noh', rtb=TRUE) #' #' ## Compare the two modes #' rmsip(modes.aa, modes.aa.rtb) #' #' ## Calculate C-alpha normal modes. #' modes <- aanma(pdb) #' #' ## Calculate C-alpha normal modes with reduced ENM. #' modes.cg <- aanma(pdb, reduced=TRUE) #' #' ## Calculate C-alpha normal modes with RTB approximation #' modes.rtb <- aanma(pdb, rtb=TRUE) #' #' ## Compare modes #' rmsip(modes, modes.cg) #' rmsip(modes, modes.rtb) #' #' ## Print modes #' print(modes) #' #' ## Plot modes #' plot(modes) #' #' ## Visualize modes #' #m7 <- mktrj.nma(modes, mode=7, file="mode_7.pdb", pdb=pdb) #' } "aanma.pdb" <- function(pdb, pfc.fun=NULL, mass=TRUE, temp=300.0, keep=NULL, hessian=NULL, outmodes='calpha', rm.wat=TRUE, reduced=FALSE, rtb=FALSE, nmer=1, ... ) { ## Log the call cl <- match.call() if(!is.select(outmodes) && !outmodes %in% c("calpha", "noh")) stop("outmodes must be 'calpha', 'noh', or an atom selection by 'atom.select()'") if(!is.pdb(pdb)) stop("please provide a 'pdb' object as obtained from 'read.pdb()'") ## store the original input PDB pdb0 <- pdb ## Define force field if (is.null(pfc.fun)) { pfc.fun <- load.enmff("aaenm2") } else { ## Use customized force field if(!is.function(pfc.fun)) stop("'pfc.fun' must be a function") } ## Parse additional arguments args <- .nma.args(pfc.fun=pfc.fun, ...) ## check and prepare input PDB if(!is.null(hessian)) { pdb.in <- pdb dims <- dim(hessian) if(dims[1]!=dims[2] | dims[1]!=length(pdb.in$xyz)) stop("dimension mismatch") } else { if(rm.wat) pdb <- trim.pdb(pdb, "notwater", verbose=FALSE) pdb.in <- trim.pdb(pdb, "noh", verbose=FALSE) lig.inds <- atom.select(pdb.in, "ligand") if(length(lig.inds$atom)>0) { ligs <- paste(unique(pdb.in$atom$resid[ lig.inds$atom ]), sep=", ") warning(paste("ligands", paste(ligs, collapse=", "), "included in normal modes calculation")) } } ## reduced aaENM if(reduced) { pdb.in <- .nma.reduce.pdb(pdb.in) } ## Indices for effective hessian ## (selection, calphas, or all (noh) atoms) if(!is.select(outmodes)) { if(outmodes=="calpha") { outmodes <- atom.select(pdb0, "calpha") } else if(outmodes=="noh") { outmodes <- atom.select(pdb0, "noh") } } if(is.select(outmodes)) { ## since pdb might have changed, we need to re-select 'outmodes' ## outmodes points to original input 'pdb' object ## inc.inds points to modified 'pdb.in' object inc.inds <- .match.sel(pdb0, pdb.in, outmodes) pdb.out <- trim(pdb.in, inc.inds) } natoms.in <- nrow(pdb.in$atom) natoms.out <- nrow(pdb.out$atom) if (natoms.in<3 | natoms.out<3) stop("aanma: insufficient number of atoms") ## Masses for weighting the hessian ## Note that mass weighting is done in rtb() for rtb=TRUE, ## and in .nma.mwhessian() when rtb=FALSE if (mass) { masses.in <- atom2mass(pdb.in) ## for residue mass resids <- paste(pdb.in$atom$resno, pdb.in$atom$chain, pdb.in$atom$insert, sep="_") ## group masses if outmodes contains only one atom per residue if(!any(duplicated(resids[ inc.inds$atom ]))) { masses.out <- unlist(lapply(split(masses.in, resids), sum)) masses.out <- masses.out[ resids[ inc.inds$atom ] ] } ## else, use indivdual atom masses else { if(length(resids[ inc.inds$atom]) == length(masses.in)) { masses.out <- masses.in } else { warning("mass weighting could not be grouped by residues") masses.out <- masses.in[ inc.inds$atom ] } } } else { ## No mass-weighting masses.out <- NULL; } ## build full hessian H <- .nma.hess(pdb.in$xyz, pfc.fun=pfc.fun, args=args, hessian=hessian, pdb=pdb.in) ## extract effective hessian and diagonalize if(rtb) { ## effective hessian H <- .nma.trim.hessian.rtb(H, inc.inds=inc.inds, pdb=pdb.in, nmer=nmer) ## mass weighting + diagonalize using RTB ei <- rtb(H, pdb=pdb.out, mass=masses.out, nmer=nmer) } else { ## effective hessian H <- .nma.trim.hessian(H, inc.inds=inc.inds) ## mass weight hessian if(!is.null(masses.out)) H <- .nma.mwhessian(H, masses=masses.out) ## diagaonalize and obtain eigenvectors ei <- .nma.diag(H) } ## make NMA object m <- .nma.finalize(ei, xyz=pdb.out$xyz, temp=temp, masses=masses.out, natoms=natoms.out, keep=keep, call=cl) return(m) } bio3d/R/pdb2sse.R0000644000176200001440000000516414707230356013155 0ustar liggesusers#' Obtain An SSE Sequence Vector From A PDB Object #' #' Results are similar to that returned by stride(pdb)$sse and dssp(pdb)$sse. #' #' @details call for its effects. #' #' @param pdb an object of class \code{pdb} as obtained from #' function \code{\link{read.pdb}}. #' @param verbose logical, if TRUE warnings and other messages will be printed. #' #' @return a character vector indicating SSE elements for each amino acide residue. #' The 'names' attribute of the vector contains 'resno', 'chain', 'insert', and #' 'SSE segment number', seperated by the character '_'. #' #' @seealso \code{\link{dssp}}, \code{\link{stride}}, \code{\link{bounds.sse}} #' #' @author Barry Grant & Xin-Qiu Yao #' #' @examples #' \donttest{ #' #PDB server connection required - testing excluded #' #' pdb <- read.pdb("1a7l") #' sse <- pdb2sse(pdb) #' sse #' } pdb2sse <- function(pdb, verbose = TRUE) { ##- Function to obtain an SSE sequence vector from a PDB object ## Result similar to that returned by stride(pdb)$sse and dssp(pdb)$sse ## This could be incorporated into read.pdb() if found to be more generally useful ## if(is.null(pdb$helix) & is.null(pdb$sheet)) { if(verbose) warning("No helix and sheet defined in input 'sse' PDB object: try using dssp()") ##ss <- try(dssp(pdb)$sse) ## Probably best to get user to do this separately due to possible 'exefile' problems etc.. return(NULL) } ## An empty full length SSE vector ref <- pdb$atom[pdb$calpha, c("resno", "chain", "insert")] ref <- paste(ref$resno, ref$chain, ref$insert, sep="_") ss <- rep(" ", length(ref)) names(ss) <- ref ## loop over 'Helix' and 'Sheet' symbol <- c(helix="H", sheet="E") for(i in names(symbol)) { sse <- pdb[[i]] if(length(sse$start) > 0) { for(j in 1:length(sse$start)) { chain <- ifelse(sse$chain[j]=="", NA, sse$chain[j]) insert0 <- ifelse(names(sse$start[j])=="", NA, names(sse$start[j])) sse.ref0 <- paste(sse$start[j], chain, insert0, sep = "_") insert1 <- ifelse(names(sse$end[j])=="", NA, names(sse$end[j])) sse.ref1 <- paste(sse$end[j], chain, insert1, sep = "_") ii <- match(sse.ref0, ref); jj <- match(sse.ref1, ref) if(any(is.na(c(ii, jj)))) { if(verbose) warning(paste("The", i, "No.", j, "start/end with non-protein residue.")) } else { inds <- seq(ii, jj) ss[inds] <- symbol[i] names(ss)[inds] <- paste(names(ss)[inds], "_", j, sep="") } } } } return(ss) } bio3d/R/bwr.colors.R0000644000176200001440000000156414707230356013705 0ustar liggesusers"bwr.colors" <- function (n) { # Derived from the function colorpanel # by Gregory R. Warnes if(n<3) warning("not sensible to ask for less than 3 colors") odd = FALSE if (n != as.integer(n/2) *2) { n <- n + 1 odd = TRUE } low <- col2rgb("blue") mid <- col2rgb("white") high <- col2rgb("red") lower <- floor(n/2) upper <- n - lower red <- c(seq(low[1, 1], mid[1, 1], length = lower), seq(mid[1,1], high[1, 1], length = upper))/255 green <- c(seq(low[3, 1], mid[3, 1], length = lower), seq(mid[3, 1], high[3, 1], length = upper))/255 blue <- c(seq(low[2, 1], mid[2, 1], length = lower), seq(mid[2, 1], high[2, 1], length = upper))/255 if (odd) { red <- red[-(lower + 1)] green <- green[-(lower + 1)] blue <- blue[-(lower + 1)] } rgb(red, blue, green) } bio3d/R/gnm.pdbs.R0000644000176200001440000001313314707230356013316 0ustar liggesusers#' @param ... (in \code{gnm.pdbs}) additional arguments passed to \code{gnm.pdb}. #' @inheritParams aanma.pdbs #' @rdname gnm gnm.pdbs <- function(x, fit=TRUE, full=FALSE, subspace=NULL, rm.gaps=TRUE, gc.first=TRUE, ncore=NULL, ...) { pdbs <- x if(!inherits(pdbs, "pdbs")) stop("input 'pdbs' should be a list object as obtained from 'read.fasta.pdb'") ## Log the call cl <- match.call() ## Parallelized by parallel package ncore <- setup.ncore(ncore) if(ncore>1) { prev.warn <- getOption("warn") options(warn=1) on.exit(options(warn=prev.warn)) } dots <- list(...) if('outmodes' %in% names(dots)) { warning('Customized "outmodes" is not supported') dots$outmodes <- NULL } if("keep" %in% names(dots)) nm.keep <- dots$keep else nm.keep <- NULL dots$check.connect <- FALSE gaps.res <- gap.inspect(pdbs$ali) gaps.pos <- gap.inspect(pdbs$xyz) ## Check connectivity con <- inspect.connectivity(pdbs, cut=4.05) if(!all(con)) { warning(paste(paste(basename(pdbs$id[which(!con)]), collapse=", "), "might have missing residue(s) in structure:\n", " Fluctuations at neighboring positions may be affected.")) } ## Number of modes to store in U.subspace if(is.null(subspace)) { keep <- length(gaps.res$f.inds)-1 } else { keep <- subspace if (length(gaps.res$f.inds) < (keep+1)) keep <- length(gaps.res$f.inds)-1 } if(!is.null(nm.keep) && keep > nm.keep) keep <- nm.keep if(fit) { xyz <- fit.xyz(pdbs$xyz[1, ], pdbs, gaps.pos$f.inds, gaps.pos$f.inds, ncore=ncore) pdbs$xyz[,] <- xyz } #### Prepare for NMA calculation #### ## Fluctuations for each structure if(rm.gaps) flucts <- matrix(NA, nrow=nrow(gaps.res$bin), ncol=length(gaps.res$f.inds)) else flucts <- matrix(NA, nrow=nrow(gaps.res$bin), ncol=ncol(gaps.res$bin)) ## List object to store each modes object if(full) all.modes <- list() else all.modes <- NULL ## 3D array- containing the modes vectors for each structure if(rm.gaps) modes.array <- array(NA, dim=c(length(gaps.res$f.inds), keep, nrow(gaps.res$bin))) else modes.array <- array(NA, dim=c(ncol(pdbs$ali), keep, nrow(gaps.res$bin))) ## store eigenvalues of the first modes L.mat <- matrix(NA, ncol=keep, nrow=nrow(gaps.res$bin)) ### Memory usage ### dims <- dim(modes.array) mem.usage <- sum(c(as.numeric(object.size(modes.array)), as.numeric(object.size(L.mat)), as.numeric(object.size(flucts)), as.numeric(object.size(matrix(NA, ncol=dims[3], nrow=dims[3]))) ))*2 if(full) { if(is.null(nm.keep)) tmpncol <- dims[2] else tmpncol <- nm.keep size.mat <- object.size(matrix(0.00000001, ncol=tmpncol, nrow=dims[1])) size.vec <- object.size(vector(length=dims[1], 'numeric')) tot.size <- ((size.mat * 2) + (size.vec * 4)) * length(pdbs$id) mem.usage <- mem.usage+tot.size } mem.usage=round(mem.usage/1048600,1) #### Print overview of scheduled calcualtion #### cat("\nDetails of Scheduled Calculation:\n") cat(paste(" ...", length(pdbs$id), "input structures", "\n")) if(keep>0) cat(paste(" ...", "storing", keep, "eigenvectors for each structure", "\n")) if(keep>0) cat(paste(" ...", "dimension of x$U.subspace: (", paste(dims[1], dims[2], dims[3], sep="x"), ")\n")) if(fit) cat(paste(" ...", "coordinate superposition prior to NM calculation", "\n")) if(full) cat(paste(" ... individual complete 'gnm' objects will be stored", "\n")) if(rm.gaps) cat(paste(" ... aligned eigenvectors (gap containing positions removed) ", "\n")) if(mem.usage>0) cat(paste(" ...", "estimated memory usage of final 'eGNM' object:", mem.usage, "Mb \n")) cat("\n") ##### Start modes calculation ##### ## Initialize progress bar pb <- .init.pb(ncore, min=0, max=length(pdbs$id)) all.modes <- mclapply(1:length(pdbs$id), function(i) { if(gc.first) gc() pdb <- pdbs2pdb(pdbs, i, rm.gaps = FALSE)[[1]] sele <- match(gaps.res$f.inds, which(!is.gap(pdbs$ali[i, ]))) sele <- as.select(sele) if(rm.gaps) modes <- try(do.call(gnm, c(list(x=pdb, outmodes=sele), dots))) else modes <- try(do.call(gnm, c(list(x=pdb), dots))) if(inherits(modes, 'try-error')) { .close.pb(pb) stop(paste('Encounter errors in ', i, 'th structure', sep='')) } .update.pb(pb) modes$call <- NULL return( modes ) }, mc.cores=ncore) ## Finish progress bar .close.pb(pb) ##### Finalize calculation ##### for(i in 1:length(all.modes)) { if(rm.gaps) { flucts[i, ] <- all.modes[[i]]$fluctuations modes.array[,,i] <- all.modes[[i]]$U[, 2:(keep+1)] } else { flucts[i, !is.gap(pdbs$ali[i, ])] <- all.modes[[i]]$fluctuations modes.array[!is.gap(pdbs$ali[i, ]),, i] <- all.modes[[i]]$U[, 2:(keep+1)] } L.mat[i, ] <- all.modes[[i]]$L[2:(keep+1)] } if(!full) all.modes <- NULL ##### RMSIP ###### rmsip.map <- NULL if(rm.gaps) { rmsip.map <- .calcRMSIP(modes.array, ncore=ncore) rownames(rmsip.map) <- basename(rownames(pdbs$xyz)) colnames(rmsip.map) <- basename(rownames(pdbs$xyz)) if(!fit) warning("rmsip calculated on non-fitted structures: ensure that your input coordinates are pre-fitted.") } rownames(flucts) <- basename(rownames(pdbs$xyz)) out <- list(fluctuations=flucts, rmsip=rmsip.map, U.subspace=modes.array, L=L.mat, full.nma=all.modes, call=cl) class(out) <- c("egnm", "enma") return(out) } bio3d/R/plot.dccm.R0000644000176200001440000001524714707230356013501 0ustar liggesusersplot.dccm <-function(x, resno=NULL, sse=NULL, colorkey=TRUE, at=c(-1, -0.75, -0.5, -0.25, 0.25, 0.5, 0.75, 1), main="Residue Cross Correlation", # pad=0.022 helix.col = "gray20", sheet.col = "gray80", inner.box=TRUE, outer.box=FALSE, xlab="Residue No.", ylab="Residue No.", margin.segments=NULL, segment.col=vmd_colors(), segment.min=1, ...) { if(!requireNamespace("lattice", quietly = TRUE)) { stop("Please install the lattice package from CRAN") } colnames(x) = NULL; rownames(x)=NULL ##-- Customized axis tick labels if(!is.null(resno)) { if(is.pdb(resno)) { ## Take Calpha residue numbers from PDB input ca.inds <- atom.select(resno, "calpha", verbose = FALSE) resno <- resno$atom$resno[ca.inds$atom] } if(length(resno) != nrow(x)) { warning("Length of input 'resno' does not equal the length of input 'x'; Ignoring 'resno'") resno=NULL } } scales <- NULL dots <- list(...) if('scales' %in% names(dots)) { scales <- dots$scales } if(!"at" %in% names(scales)) { xy.at <- pretty(1:ncol(x)) xy.at <- xy.at[xy.at <= ncol(x)] xy.at[1] <- 1 if(is.null(resno)) { scales$at <- xy.at scales$labels <- xy.at } else { labs <- resno[xy.at] labs[is.na(labs)] <- "" scales$at <- xy.at scales$labels <- labs } } dots$scales <- scales draw.segment <- function(start, length, xymin, xymax, fill.col="gray", side=1) { ##-- Draw Annotation On Plot Margins, used for SSE and CLUSTER members ## draw.segment(store.grps[,"start"], store.grps[,"length"], ## xymin=xymin, xymax=xymax, side=1, fill.col="red") if(side==1) { ## Bottom Margin grid.rect(x=unit(start-0.5, "native"), y=0, gp = gpar(fill=fill.col, col=NA), just=c("left","bottom"), width=unit(length-0.5, "native"), height=xymin, vp=vpPath("plot_01.toplevel.vp","plot_01.panel.1.1.vp")) } if(side==2) { ## Left Margin grid.rect(x=0, y=unit(start-0.5, "native"), gp = gpar(fill=fill.col, col=NA), just=c("left","bottom"), width=xymin, height=unit(length-0.5, "native"), vp=vpPath("plot_01.toplevel.vp","plot_01.panel.1.1.vp")) } if(side==3) { ## Top Margin grid.rect(x=unit(start-0.5, "native"), y=xymax, gp = gpar(fill=fill.col,col=NA), just=c("left","bottom"), width=unit(length-0.5, "native"), height=unit(1, "npc"), vp=vpPath("plot_01.toplevel.vp","plot_01.panel.1.1.vp")) } if(side==4) { ## Right Margin grid.rect(x=xymax, y=unit(start-0.5, "native"), gp = gpar(fill=fill.col,col=NA), just=c("left","bottom"), width=unit(1, "npc"), height=unit(length-0.5, "native"), vp=vpPath("plot_01.toplevel.vp","plot_01.panel.1.1.vp")) } } ##-- Main Plot p1 <- do.call(lattice::contourplot, c(list(x, region = TRUE, labels=FALSE, col="gray40", at=at, xlab=xlab, ylab=ylab, colorkey=colorkey, main=main), dots)) ##-- Check sse if(is.pdb(sse)) { sse <- pdb2sse(sse) sse <- bounds.sse(unname(sse)) } if(length(sse$helix$start)==0 && length(sse$sheet$start)==0) sse <- NULL xymin=0; xymax=1 if (is.null(sse) && is.null(margin.segments)) { print(p1) } else { xlim <- p1$x.limits ylim <- p1$y.limits uni <- 1/(max(xlim)-min(xlim)) pad=0.02 ## This should be setable! padref <- pad/uni if(!is.null(sse)) { ##-- Adjust Top and Right margins for 'sse' xymax <- 1-(pad) p1$x.limits[2]=xlim[2]+padref p1$y.limits[2]=ylim[2]+padref } if(!is.null(margin.segments)) { ##-- Adjust Bottom and Left margins for 'segments' xymin = pad p1$x.limits[1]=xlim[1]-padref p1$y.limits[1]=ylim[1]-padref ##- Format margin annotation object grps <- table(margin.segments) ## Exclude small grps less than 'segment.min' grps = names( grps[grps > segment.min] ) store.grps <- NULL; for(i in 1:length(grps)) { store.grps <- rbind(store.grps, cbind( bounds(which(margin.segments == grps[i])), "grp"=as.numeric(grps[i])) ) } ## Margin segment colors if(is.null(segment.col)) { segment.col <- (store.grps[,"grp"]) } else { segment.col <- segment.col[(store.grps[,"grp"])] } } print(p1) if(!is.null(sse)) { ##-- SSE annotation if(length(sse$helix$start) > 0) { ## dont have a pdb$helix$length if( is.null(sse$helix$length) ) { sse$helix$length <- (sse$helix$end+1)-sse$helix$start } ## TOP draw.segment(sse$helix$start, sse$helix$length, xymin=xymin, xymax=xymax, fill.col=helix.col, side=3) ## RIGHT draw.segment(sse$helix$start, sse$helix$length, xymin=xymin, xymax=xymax, fill.col=helix.col, side=4) } if(length(sse$sheet$start) > 0) { if( is.null(sse$sheet$length) ) { sse$sheet$length <- (sse$sheet$end+1)-sse$sheet$start } ## TOP draw.segment(sse$sheet$start, sse$sheet$length, xymin=xymin, xymax=xymax, fill.col=sheet.col, side=3) ## RIGHT draw.segment(sse$sheet$start, sse$sheet$length, xymin=xymin, xymax=xymax, fill.col=sheet.col, side=4) } } if(!is.null(margin.segments)) { ##-- Cluster annotation ## BOTTOM draw.segment(store.grps[,"start"], store.grps[,"length"], xymin=xymin, xymax=xymax, fill.col=segment.col, side=1) ## LEFT draw.segment(store.grps[,"start"], store.grps[,"length"], xymin=xymin, xymax=xymax, fill.col=segment.col, side=2) } if(!outer.box) { grid.rect(x=0, y=0, gp = gpar(fill=NA,col="white"), just=c("left","bottom"), width=1,height=1, vp=vpPath("plot_01.toplevel.vp","plot_01.panel.1.1.vp")) } if(inner.box) { grid.rect(x=xymin, y=xymin, gp = gpar(fill=NA,col="black"), just=c("left","bottom"), width=xymax, height=xymax, vp=vpPath("plot_01.toplevel.vp","plot_01.panel.1.1.vp")) } } } bio3d/R/rle2.R0000644000176200001440000000146414707230357012457 0ustar liggesusersrle2 <- function (x) { ## This is a modified version of base function "rle()" if (!is.vector(x) && !is.list(x)) stop("'x' must be an atomic vector") n <- length(x) if (n == 0L) return(structure(list(lengths = integer(), values = x, inds=integer), class = "rle2")) y <- x[-1L] != x[-n] i <- c(which(y | is.na(y)), n) structure(list(lengths = diff(c(0L, i)), values = x[i], inds=i), class = "rle2") } print.rle2 <- function(x, digits = getOption("digits"), prefix = "", ...) { if (is.null(digits)) digits <- getOption("digits") cat("", "Run Length Encoding\n", " lengths:", sep = prefix) utils::str(x$lengths) cat("", " values :", sep = prefix) utils::str(x$values, digits.d = digits) cat("", " indices:", sep = prefix) utils::str(x$inds, digits.d = digits) invisible(x) } bio3d/R/dccm.pca.R0000644000176200001440000000430314707230356013255 0ustar liggesusers"dccm.pca" <- function(x, pc = NULL, method=c("pearson", "lmi"), ncore = NULL, ...) { if (missing(x) || !"pca" %in% class(x)) stop("dccm.pca: must supply a 'pca' object, i.e. from 'pca.xyz'") method = match.arg(method) modes = pc ## Check for multiple cores ncore = setup.ncore(ncore) ## Set modes to be included if(is.null(modes)) modes <- 1:length(x$L) ## If modes are negative, take modes complementary to them if( any(!is.numeric(modes)) || any(!(abs(modes) %in% c(1:length(x$L)))) || !(all(modes>0) || all(modes<0)) ) stop("Incorrect mode index") if(all(modes < 0)) { modes <- setdiff(c(1:length(x$L)), abs(modes)) if(length(modes) == 0) stop("No mode is selected") } modes <- unique(modes) nmodes <- length(modes) ## Calc variance-covariance matrix over a subset of modes vcovmat <- function(r.inds, pca, vcov.mat = 0) { for ( i in seq_along(r.inds) ) { vcov.mat <- vcov.mat + (pca$U[, r.inds[i]] %o% pca$U[, r.inds[i]]) * pca$L[r.inds[i]] .update.pb(pb) } return(vcov.mat) } ## Calculate variance-covariance matrix first ## ## If contain $z, straightforward if(!is.null(x$z)) { q = x$z[, modes] %*% t(x$U[, modes]) vcov = cov(q) } else { ## Initialize progress bar pb <- .init.pb(ncore, min=0, max=nmodes) if(ncore > 1) { # Parallel jobid <- rep(1:ncore, ceiling(nmodes/ncore)) jobid <- jobid[1:nmodes] ltv <- mclapply(1:ncore, function(i) { j <- which(jobid %in% i) if(length(j) > 0) { m <- vcovmat(modes[j], x) m <- m[lower.tri(m, diag = TRUE)] } else { m = 0 } return(m) } ) ltv <- colSums(do.call(rbind, ltv)) vcov <- matrix(0, nrow(x$U), nrow(x$U)) vcov[lower.tri(vcov, diag = TRUE)] <- ltv vcov <- vcov + t(vcov) diag(vcov) <- diag(vcov) / 2 } else { # Serial vcov <- vcovmat(modes, x) } .close.pb(pb) } corr.mat <- .cov2dccm(vcov, method = method, ncore = ncore) return(corr.mat) } bio3d/R/read.mol2.R0000644000176200001440000002243014707230357013372 0ustar liggesusersprint.mol2 <- function(x, ...) { cat(paste("... Name:", x$name, "\n")) cat(paste("...", nrow(x$atom), "atoms in molecule", "\n")) cat(paste("...", nrow(x$bond), "bonds in molecule", "\n")) cat(paste("...", nrow(x$xyz), "frame(s) stored", "\n")) cat("\n") i <- paste( attributes(x)$names, collapse=", ") cat(strwrap(paste(" + attr:",i,"\n"),width=60, exdent=8), sep="\n") cat("\n") } "read.mol2" <- function (file, maxlines = -1L) { if (missing(file)) { stop("read.mol2: please specify a MOL2 'file' for reading") } if (!is.numeric(maxlines)) { stop("read.mol2: 'maxlines' must be numeric") } toread <- file.exists(file) if (!toread) { stop("No input MOL2 file found: check filename") } atom.format <- matrix(c("eleno", 'numeric', "elena", 'character', "x", 'numeric', "y", 'numeric', "z", 'numeric', "elety", 'character', "resno", 'numeric', "resid", 'character', "charge", 'numeric', "statbit", 'character'), ncol=2, byrow=TRUE, dimnames = list(c(1:10), c("name","what")) ) bond.format <- matrix( c("id", 'numeric', "origin", 'numeric', "target", 'numeric', "type", 'character', "statbit", 'character'), ncol=2, byrow=TRUE, dimnames = list(c(1:5), c("name","what")) ) substr.format <- matrix( c("id", 'numeric', "name", 'character', "root_atom", 'numeric', "subst_type", 'character', "dict_type", 'character', "chain", 'character', "sub_type", 'character', "inter_bonds", 'numeric', "status", 'character'), ncol=2, byrow=TRUE, dimnames = list(c(1:9), c("name","what")) ) trim <- function(s) { s <- sub("^ +", "", s) s <- sub(" +$", "", s) s[(s == "")] <- NA s } split.line <- function(x, collapse=TRUE, ncol=NULL) { tmp <- unlist(strsplit(x, split=" ")) inds <- which(tmp!="") if(!collapse) return(tmp[inds]) else { tmp <- tmp[inds] if(length(tmp) < ncol) tmp <- c(tmp, "") return(paste(tmp, collapse=";")) } } ## Read and parse mol2 file raw.lines <- readLines(file, n = maxlines) mol.start <- grep("@MOLECULE", raw.lines) atom.start <- grep("@ATOM", raw.lines) bond.start <- grep("@BOND", raw.lines) subs.start <- grep("@SUBSTRUCTURE", raw.lines) num.mol <- length(mol.start) if (!num.mol>0) { stop("read.mol2: mol2 file contains no molecules") } ## Fetch molecule names and info mol.names <- raw.lines[mol.start+1] mol.info <- trim( raw.lines[mol.start+2] ) mol.info <- as.numeric(unlist(lapply(mol.info, split.line, collapse=FALSE))) if(length(mol.info) < 5) mol.info <- c(mol.info, rep(NA, 5-length(mol.info))) ## mol.info should contain num_atoms, num_bonds, num_subs, num_feat, num_sets mol.info <- matrix(mol.info, nrow=num.mol, byrow=T) num.atoms <- as.numeric(mol.info[,1]) num.bonds <- as.numeric(mol.info[,2]) atom.end <- atom.start + num.atoms bond.end <- bond.start + num.bonds subs.end <- subs.start + mol.info[,3] ## Build a list containing ATOM record indices if(length(atom.start) > 0) { se <- matrix(c(atom.start, atom.end), nrow=length(atom.start)) atom.indices <- lapply(1:num.mol, function(d) seq(se[d,1]+1, se[d,2])) } else { stop("No ATOM records found") } if(length(bond.start) > 0) { se <- matrix(c(bond.start, bond.end), nrow=length(bond.start)) bond.indices <- lapply(1:num.mol, function(d) seq(se[d,1]+1, se[d,2])) } else { bond.indices <- NULL warning("No BOND records found") } if(length(subs.start) > 0) { se <- matrix(c(subs.start, subs.end), nrow=length(subs.start)) subs.indices <- lapply(1:num.mol, function(d) seq(se[d,1]+1, se[d,2])) } else { subs.indices <- NULL } ## Check if file consist of identical molecules same.mol <- TRUE mol.first <- NULL mols <- list() for ( i in 1:num.mol ) { raw.atom <- raw.lines[ atom.indices[[i]] ] if(!is.null(bond.indices)) raw.bond <- raw.lines[ bond.indices[[i]] ] else raw.bond <- NULL if(!is.null(subs.indices)) raw.subs <- raw.lines[ subs.indices[[i]] ] else raw.subs <- NULL ## Read atoms - split by space txt <- unlist(lapply(raw.atom, split.line, ncol=10, collapse=TRUE)) ncol <- length(unlist(strsplit(txt[1], ";"))) if(ncol==9) { txt[1]=paste0(txt[1], ";") ncol <- length(unlist(strsplit(txt[1], ";"))) } atom <- read.table(text=txt, stringsAsFactors=FALSE, sep=";", quote='', colClasses=unname(atom.format[1:ncol,"what"]), col.names=atom.format[1:ncol,"name"], comment.char="", na.strings="", fill=TRUE) ## Read bond - split by space if(!is.null(raw.bond)) { txt <- unlist(lapply(raw.bond, split.line, ncol=5, collapse=TRUE)) ncol <- length(unlist(strsplit(txt[1], ";"))) if(ncol==4) { txt[1]=paste0(txt[1], ";") ncol <- length(unlist(strsplit(txt[1], ";"))) } bond <- read.table(text=txt, stringsAsFactors=FALSE, sep=";", quote='', colClasses=unname(bond.format[1:ncol,"what"]), col.names=bond.format[1:ncol,"name"], comment.char="", na.strings="", fill=TRUE) } else { bond <- NULL } ## Read substructure info - split by space subs <- NULL if(!is.null(raw.subs)) { txt <- unlist(lapply(raw.subs, split.line, ncol=5, collapse=TRUE)) ncol <- length(unlist(strsplit(txt[1], ";"))) if(ncol==4) { txt[1]=paste0(txt[1], ";") ncol <- length(unlist(strsplit(txt[1], ";"))) } subs <- try(read.table(text=txt, stringsAsFactors=FALSE, sep=";", quote='', colClasses=unname(substr.format[1:ncol,"what"]), col.names=substr.format[1:ncol,"name"], comment.char="", na.strings="", fill=TRUE), silent=TRUE) if(inherits(subs, "try-error")) { subs <- try(read.table(text=txt, stringsAsFactors=FALSE, sep=";", quote='', comment.char="", na.strings="", fill=TRUE), silent=TRUE) if(inherits(subs, "try-error")) { warning("error reading SUBSTRUCTURE records. check format.") subs <- NULL } else { ncol <- ncol(subs) if(ncol < 3) { warning("insufficent fields in SUBSTRUCTURE. check format.") } else { warning("could not determine field type of SUBSTRUCTURE records. check format.") if(ncol > 3) colnames(subs) <- c(substr.format[1:3], colnames(subs[4:ncol])) else colnames(subs) <- c(substr.format[1:3]) } } } } ## Same molecules as the previous ones? mol.str <- paste(atom$elena, collapse="") if ( i==1 ) { mol.first <- mol.str } else if (mol.str != mol.first) { same.mol <- FALSE } ## Store data xyz <- as.xyz(as.numeric(t(atom[, c("x", "y", "z")]))) out <- list("atom" = atom, "bond" = bond, "xyz" = xyz, "substructure" = subs, "info" = mol.info[i,], "name" = mol.names[i]) class(out) <- "mol2" mols[[i]] <- out } ## If identical molecules if ( length(unique(num.atoms)) == 1 && same.mol == TRUE ) { atom <- mols[[1]]$atom bond <- mols[[1]]$bond xyz <- t(sapply(lapply(mols, function(x) x$xyz), rbind)) xyz <- as.xyz(xyz) out <- list("atom" = atom, "bond" = bond, "substructure" = subs, "xyz" = xyz, "info" = mol.info[1,], "name" = mol.names[1]) class(out) <- "mol2" } else { out <- mols ##class(out) <- "mol2s" } return(out) } bio3d/R/dm.R0000644000176200001440000000324014707230356012204 0ustar liggesusers"dm" <- function(...) UseMethod("dm") "dm.pdb" <- function(pdb, inds=NULL, grp=TRUE, verbose=TRUE, ...) { if(!is.pdb(pdb)) { stop("input 'pdb' should be either: 1. an object returned from from 'read.pdb' or 2. a numeric 'xyz' vector of coordinates") } if(!is.null(inds)) { pdb <- trim.pdb(pdb, inds) } if(grp) grpby <- paste(pdb$atom$resno, pdb$atom$chain, pdb$atom$insert, sep="-") else grpby <- NULL d <- dm.xyz(pdb$xyz, grpby=grpby, ...) class(d) <- "dmat" return(d) } "dm.pdbs" <- function(pdbs, rm.gaps=FALSE, all.atom=FALSE, aligned.atoms.only=NULL, ...) { if(!is.pdbs(pdbs)) stop("Input should be a 'pdbs' object as obtained from 'read.fasta.pdb()' or 'read.all()'.") if(rm.gaps) { dots <- list(...) if("grpby" %in% names(dots) && !is.null(dots[["grpby"]])) { if(length(unique(dots[["grpby"]])) != ncol(pdbs$ali)) { stop("rm.gaps=TRUE not supported for non-residue wise grouping.") } } } if(!all.atom) { dmat <- dm.xyz(pdbs$xyz, ...) } else { # set a new default value of grpby for all-atom distance matrix dm.default <- list(grpby=pdbs$all.grpby) dm.args <- .arg.filter(dm.default, dm.xyz, ...) if(is.null(aligned.atoms.only)) { aligned.atoms.only <- FALSE } if(aligned.atoms.only) { # only consider aligned (equivalent) atoms gaps <- gap.inspect(pdbs$all) pdbs$all[, gaps$t.inds] <- NA } dmat <- do.call("dm.xyz", c(list(xyz=pdbs$all), dm.args)) } if(rm.gaps) { gaps.res <- gap.inspect(pdbs$ali) dmat <- dmat[gaps.res$f.inds, gaps.res$f.inds, ] } return(dmat) } bio3d/R/pca.xyz.R0000644000176200001440000000723714707230356013212 0ustar liggesusers"pca.xyz" <- function(xyz, subset = rep(TRUE, nrow(as.matrix(xyz))), use.svd = FALSE, rm.gaps=FALSE, mass = NULL, ...) { ## Performs principal components analysis on the given "xyz" numeric data ## matrix and return the results as an object of class "pca.xyz" ## Log the call cl <- match.call() xyz <- as.xyz(xyz) if (any(!is.finite(xyz))) { ## Check for GAP positions in input if(rm.gaps) { gapC <- colSums(is.na(xyz)) == 0 if (sum(gapC) > 3) { xyz <- xyz[,gapC] cat(paste("NOTE: Removing", sum(!gapC)/3, "gap positions with missing coordinate data\n", " retaining", sum(gapC)/3, "non-gap positions for analysis.\n")) } else { stop("No non-gap containing positions (cols) available for analysis.") } } else { stop( paste(" Infinite or missing values in 'xyz' input.", "\t Likely solution is to remove gap positions (cols) with rm.gaps=TRUE", "\t or remove gap containing structures (rows) from input.", sep="\n") ) } } dx <- dim(xyz) n <- dx[1]; p <- dx[2] if (!n || !p) stop("0 extent dimensions") # for mass-weighted PCA if(!is.null(mass)) { if(is.pdb(mass)) mass = aa2mass(mass) if(length(mass) != ncol(xyz)/3) stop("Input mass vector does not match xyz") q = t( t(xyz) * rep(sqrt(mass), each=3) ) # mass weighted xyz # re-do fitting: iteratively fit to the mean mean <- colMeans(q[subset, ]) tolerance = 1.0 # convergence check maxiter = 10 # maximum number of iteration iter = 0 repeat { q <- fit.xyz(mean, q, 1:ncol(q), 1:ncol(q), ...) mean.now <- colMeans(q[subset, ]) mean.diff <- rmsd(mean, mean.now, 1:ncol(q), 1:ncol(q)) mean = mean.now iter = iter + 1 if(iter >= maxiter || mean.diff <= tolerance) break } if(mean.diff > tolerance) warning("Iteration stops before convergent") xyz <- q } # mean <- apply(xyz[subset,],2,mean) ## mean structure mean <- colMeans(xyz[subset,]) ## Faster n <- sum(subset) # Check number of columns if(p > 3000 && n <= 0.4*p && !use.svd) { cat("NOTE: In input xyz (MxN), N > 3000 and M < N\n", " Singular Value Decomposition (SVD) approach is faster\n", " and is recommended (set 'use.svd = TRUE')\n\n", sep=" ") flush(stdout()) } if(!use.svd) { S <- var(xyz[subset,]) ## coverance matrix ## eigenvectors ("U") & eigenvalues ("L"): [ U'SU=L ] prj <- eigen(S, symmetric = TRUE) L <- prj$values U <- prj$vectors } else { if(n < p) warning(paste("In input xyz (MxN), M < N:\n", " Only",n,"eigenvalues and eigenvectors are returned!\n\n")) ## S = Q'Q, Q = UDV' Q <- t(t(xyz[subset,]) - mean) / sqrt(n-1) prj <- svd(Q) L <- prj$d^2 U <- prj$v } ## fix negative eigenvalues ## (these are very small numbers and should be zero) L[L<0]<-0 sdev <- sqrt(L) ## scores of "xyz" on the pc's [ z=U'[x-x.mean] ] z <- sweep(xyz,2,mean) %*% (U) ## atom-wise loadings (norm of xyz eigenvectors) ## Skip the calculation if the input is not xyz coordinates, ## e.g. for PCA over correlaiton matrices (see pca.array()). if(ncol(U) %% 3 == 0) { au <- apply(U, 2, function(x) { sqrt(colSums(matrix(x^2, nrow=3))) }) } else { au <- NULL } class(U)="pca.loadings" if(!is.null(mass)) { mean = mean / sqrt(rep(mass, each=3)) out <- list(L=L, U=U, z=z, au=au, sdev=sdev, mean=mean, mass=mass, call=cl) } else out <- list(L=L, U=U, z=z, au=au, sdev=sdev, mean=mean, call=cl) class(out)="pca"; out } bio3d/R/gap.inspect.R0000644000176200001440000000200014707230356014010 0ustar liggesusers"gap.inspect" <- function(x) { # Report the number of gaps, ("-",".",NA), per # row (i.e. seq) and col (i.e. position) in a # given "alignment" 'x' if(is.vector(x)) { gaps <- is.gap(x) inds <- which(gaps) f.inds <- which(!gaps) gap.pos <- as.numeric(gaps) gap.col <- gap.pos gap.row <- sum(gaps) } else { if(is.list(x)) { if(inherits(x, "pdbs")) { x <- x$xyz; warning("Taking $xyz component (NOT $ali for which you should use 'gap.inspect(x$ali)')") } else { x <- x$ali } } gap.pos1 <-( as.numeric(x=="-") + as.numeric(x==".") ) gap.pos2 <- as.numeric(is.na(gap.pos1)) gap.pos<-matrix( colSums(rbind(gap.pos1,gap.pos2), na.rm=TRUE), ncol=ncol(x)) gap.col <- colSums(gap.pos) gap.row <- rowSums(gap.pos) inds <- which(gap.col!=0) ##f.inds=(1:ncol(x))[-inds] f.inds <- which(gap.col == 0) } output=list(t.inds=inds, f.inds=f.inds, row=gap.row, col=gap.col, bin=gap.pos) } bio3d/R/seqaln.R0000644000176200001440000002337714707230357013105 0ustar liggesusers"seqaln" <- function(aln, id=NULL, profile=NULL, exefile = "muscle", outfile = "aln.fa", protein = TRUE, seqgroup = FALSE, refine = FALSE, extra.args = "", verbose = FALSE, web.args = list(), ... ) { ## Log the call cl <- match.call() ## alignment to fasta object aln <- as.fasta(aln, id=id) ## nothing to align? if(!nrow(aln$ali) > 1 && is.null(profile)) { warning("nothing to align") aln$ali <- aln$ali[ , !is.gap(aln$ali), drop=FALSE] colnames(aln$ali) <- NULL return(aln) } if(!is.null(profile) & !inherits(profile, "fasta")) stop("profile must be of class 'fasta'") ## determine path to exefile test <- try( .get.exepath(exefile), silent=TRUE ) if(inherits(test, 'try-error')) { success <- FALSE } else { exefile <- test success <- TRUE if(verbose) message(exefile) } if(grepl("clustalo", tolower(exefile))) { prg <- "clustalo" ##ver <- "--version" if(!is.null(profile)) args <- c("", "--profile1", "--in", "--out") else args <- c("--in", "--out") extra.args <- paste(extra.args,"--force") if(seqgroup) extra.args <- paste(extra.args, "--output-order=tree-order") else extra.args <- paste(extra.args, "--output-order=input-order") if(verbose) extra.args <- paste(extra.args,"--verbose") if(!is.null(profile) && length(grep("dealign", extra.args))==0) warning("profile alignment with clustalo: consider using extra.args='--dealign'") #if(protein) # extra.args <- paste(extra.args,"--seqtype Protein") #else # extra.args <- paste(extra.args,"--seqtype DNA") } else if(grepl("msa", tolower(exefile))) { # Use bioconductor MSA package for alignment! if( !requireNamespace("msa", quietly=TRUE) ) { stop("msa package missing: Please install it from Bioconductor, see: ?BiocManager::install") } if( !requireNamespace("Biostrings", quietly=TRUE) ) { stop("Biostrings package missing: Please install it from Bioconductor, see: ?BiocManager::install") } if(!is.null(profile)) { stop("Currently profile based alignment is not supported by 'msa'") } if(refine) { warning("Currently 'refine=TRUE' is not supported by 'msa'. Ignored") } # Write a temporary FASTA file to disc tf <- tempfile(pattern = "bio3d_aln",fileext = ".fasta") write.fasta(aln, gap=FALSE, file=tf) if(protein) { inputSeqs <- Biostrings::readAAStringSet(tf) } else { inputSeqs <- Biostrings::readDNAStringSet(tf) } # Alignmnet and conversion for Bio3D if(seqgroup) { order <- "aligned" } else { order <- "input" } res <- msa::msaMuscle(inputSeqs, order=order, ...)#type="protein", order="input" #res <- msa::msaMuscle(tf, type="protein",...) naln <- msa::msaConvert(res, type="bio3d::fasta") if(!is.null(outfile)) write.fasta(naln, file=outfile) naln$call=cl return(naln) } else { prg <- "muscle" ##ver <- "-version" if(!is.null(profile)) args <- c("-profile", "-in1", "-in2", "-out") else args <- c("-in", "-out") if(refine) extra.args <- paste(extra.args,"-refine") if(protein) extra.args <- paste(extra.args,"-seqtype protein") else extra.args <- paste(extra.args,"-seqtype dna") } ## Check if the program is executable if(success) { os1 <- Sys.info()["sysname"] success <- .test.exefile(exefile) } if(!success) { if(length(web.args)==0) { stop(paste("You do not have ", prg, " installed/working locally on your machine.\n", " We can attempt to use the EBI webserver if you provide an email address (required by the EBI).\n", " Please note that the EBI states (see their Terms of Use):\n", " 'Using fake e-mail address may result in your jobs being killed and your IP, Organisation or entire domain being black-listed.'\n", sep="")) } cat('\n\nWill try to align sequences online...\n\n') default.web.args <- list(email='', title='', timeout=90) vnames <- names(web.args) vnames <- vnames[nzchar(vnames)] for(v in vnames) default.web.args[v] <- web.args[v] web.args <- default.web.args if(!is.null(profile)) stop('Sequence-profile alignment is not supported by online web service.') if(!grepl('@', web.args$email)) stop('A valid E-Mail address is required to use EMBL-EBI Web Service') naln <- .ebi_msa(aln, email=web.args$email, method=prg, protein=protein, title=web.args$title, timeout=web.args$timeout) if(!is.null(outfile)) write.fasta(naln, file=outfile) } else { ## Generate temporary files toaln <- tempfile() write.fasta(aln, file=toaln) profilealn <- NULL if(!is.null(profile)) { profilealn <- tempfile() write.fasta(profile, file=profilealn) } if(is.null(outfile)) fa <- tempfile() else fa <- outfile ## Build command to external program if(is.null(profile)) { cmd <- paste(args[1], toaln, args[2], fa, extra.args, sep=" ") } else { cmd <- paste(args[1], args[2], profilealn, args[3], toaln, args[4], fa, extra.args, sep=" ") } if(verbose) cat(paste("Running command:\n ", paste(exefile, cmd), "\n")) ## Run command if (os1 == "Windows") { status <- shell(paste(shQuote(exefile), cmd), ignore.stderr = !verbose, ignore.stdout = !verbose) } else { status <- system(paste(exefile, cmd), ignore.stderr = !verbose, ignore.stdout = !verbose) } if(!(status %in% c(0,1))) { stop(paste("An error occurred while running command\n '", exefile, "'", sep="")) } naln <- read.fasta(fa, rm.dup=FALSE) ## Delete temporary files if(!is.null(profile)) unlink(profilealn) unlink(toaln) if(is.null(outfile)) unlink(fa) } ## Re-group sequences to initial alignment order ## (muscle groups similar sequences by default) if(!seqgroup) { if(is.null(profile)) { ord <- match(aln$id, naln$id) naln$id <- naln$id[ord] naln$ali <- naln$ali[ord,] } } naln$call=cl return(naln) } ## A client for EMBL-EBI multiple sequence alignment (MSA) Web Service. ## - 'x' must be a 'fasta' object. ## - 'email' must be a valid E-Mail address. .ebi_msa <- function(x, email, method=c('muscle', 'clustalo'), protein=TRUE, title='', timeout=90) { method <- match.arg(method) oops <- requireNamespace("httr", quietly = TRUE) if(!oops) stop("Please install the httr package from CRAN") # oops <- requireNamespace("XML", quietly = TRUE) # if(!oops) # stop("Please install the XML package from CRAN") # Check number of sequences if(length(x$id)>500) stop("Number of sequences exceeds 500.") baseUrl <- paste('http://www.ebi.ac.uk/Tools/services/rest/', method, sep='') # check if API works url <- paste(baseUrl, '/parameters', sep='') resp <- httr::GET(url) if(httr::http_error(resp)) stop('EMBL-EBI msa-API request failed.') # submit a job url <- paste(baseUrl, '/run', sep='') seqs <- paste(paste('>', x$id, sep=''), apply(x$ali, 1, paste, collapse=''), sep='\n', collapse='\n') format <- switch(method, muscle='fasta', clustalo='fa') resp <- switch(method, muscle = { httr::POST(url, body=list(email=email, title=title, format=format, tree='none', order='aligned', sequence=seqs), encode='form') }, clustalo = { httr::POST(url, body=list(email=email, title=title, stype=ifelse(protein, 'protein', 'dna'), outfmt=format, dealign='true', sequence=seqs), encode='form') } ) # check for errors if(httr::http_error(resp)) stop('EMBL-EBI msa-API job submission failed.') # get job id jobid <- httr::content(resp, 'text') cat('Job successfully submited (job ID: ', jobid, ')\n', 'Waiting for job to finish...', sep='') # poll job status every 3s; stop if "error" obtained 3 times. # will also stopped if time out. url <- paste(baseUrl, '/status/', jobid, sep='') checkInterval = 3 errorCount=0 time = 0 status <- 'PENDING' while((status %in% c('RUNNING', 'PENDING')) || (status == 'ERROR' && errorCount < 2)) { status <- httr::content(httr::GET(url), 'text') if(status == 'ERROR') { errorCount <- errorCount + 1 } else { if(errorCount > 0) errorCount <- errorCount - 1 } if(status %in% c('RUNNING', 'PENDING', 'ERROR')) Sys.sleep(checkInterval) time <- time + checkInterval if(time >= timeout) stop(paste('\nConnection time out. Check your results from following URL:\n', baseUrl, '/result/', jobid, '/aln-fasta', sep='')) } if(status != 'FINISHED') stop('\nJob failed. Check your E-Mails for more information') cat('Done.\n') # check result type url <- paste(baseUrl, '/resulttypes/', jobid, sep='') resp <- httr::GET(url) # types <- XML::xmlToDataFrame(XML::xmlParse(httr::content(resp, 'text')), stringsAsFactors=FALSE) types <- httr::content(resp) types <- as.data.frame(t(sapply(types[[1]], function(x) x)), stringsAsFactors=FALSE) if(!any(grepl('fasta', types$identifier))) stop('Returned results do not contain FASTA format.') # get the results type <- types$identifier[grep('fasta', types$identifier)] url <- paste(baseUrl, '/result/', jobid, '/', type, sep='') resp <- httr::content(httr::GET(url), 'text') tfile <- tempfile() cat(resp, sep='', file=tfile) aln <- read.fasta(tfile) unlink(tfile) return(aln) } bio3d/R/cna.ensmb.R0000644000176200001440000000101414707230356013445 0ustar liggesusers# ensemble CNA calculation optimized with multicore cna.ensmb <- function(cij, ..., ncore = NULL) { ncore <- setup.ncore(ncore) cijs <- cij if("all.dccm" %in% names(cijs)) cijs <- cijs$all.dccm if(is.array(cijs) && length(dim(cijs))==3) cijs <- do.call("c", apply(cijs, 3, list)) if(is.list(cijs)) { net <- mclapply(cijs, cna.dccm, ...) class(net) <- c("ecna", class(net)) } else { warning("cijs should be matrix, array(dim=3), or list") net <- NULL } return(net) } bio3d/R/com.pdb.R0000644000176200001440000000133614707230356013132 0ustar liggesusers"com.pdb" <- function(pdb, inds=NULL, use.mass=TRUE, ... ) { if (missing(pdb)) stop("Please supply an input 'pdb' object, i.e. from 'read.pdb()'") if(!is.pdb(pdb)) stop("Input 'pdb' must be of type 'pdb'") if(is.null(inds)) { xyz <- pdb$xyz at <- pdb$atom[, "elety"] } else { if(!is.select(inds)) stop("provide a select object as obtained from 'atom.select'") if(length(inds$xyz)<3) stop("insufficient atoms in selection") xyz <- pdb$xyz[,inds$xyz] at <- pdb$atom[inds$atom, "elety"] } if(use.mass) { m <- atom2mass(at, ...) } else { m <- NULL } com <- com.xyz(xyz, m) return(com) } bio3d/R/plot.hmmer.R0000644000176200001440000000041114707230357013667 0ustar liggesusers`plot.hmmer` <- function(x, ...) { allowed <- c("phmmer", "hmmsearch", "jackhmmer") if(!any(inherits(x, allowed))) stop(paste("please provide the results of a hmmer search of type:", paste(allowed, collapse=", "))) plot.blast(x, ...) } bio3d/R/write.pir.R0000644000176200001440000000471214707230357013535 0ustar liggesusers"write.pir" <- function(alignment = NULL, ids = NULL, seqs = alignment$ali, pdb.file = NULL, chain.first = NULL, resno.first = NULL, chain.last = NULL, resno.last = NULL, file, append = FALSE) { if (is.null(seqs)) stop("write.pir: please provide a 'seqs' or 'alignment' input object") if (!is.null(alignment)) { if (is.null(alignment$id) | is.null(alignment$ali)) { stop("write.pir: 'alignment' should be a list with '$id' and '$ali'components") } if (is.null(ids)) { ids=alignment$id } } else { if (is.null(ids)) { n.ids <- nrow(seqs) if(is.null(n.ids)) { n.ids=1 } ids=seq( 1, length=n.ids ) } } if(is.null(pdb.file)) pdb.file = rep("", nrow(seqs)) if(is.null(chain.first)) chain.first = rep("", nrow(seqs)) if(is.null(resno.first)) resno.first = rep("", nrow(seqs)) if(is.null(chain.last)) chain.last = rep("", nrow(seqs)) if(is.null(resno.last)) resno.last = rep("", nrow(seqs)) if (!append) { ##file.remove(file, showWarnings = FALSE) suppressWarnings( file.remove(file) ) } nseqs <- length(ids) if (nseqs == 1) { head = "sequence" if(pdb.file!="") { head = "structureX" if(chain.first == "") chain.first = "@" if(resno.first == "") resno.first = "FIRST" if(resno.last == "") resno.last = paste("+", sum(!is.gap(seqs)), sep="") } head = paste(head, pdb.file, resno.first, chain.first, resno.last, chain.last, "", "", "", "", sep=":") # change for shortening lines (<=60) - Xinqiu cat(">P1;", ids, "\n", file = file, append = TRUE, sep = "") cat(head, "\n", file = file, append = TRUE) cat(seqs, "*", file = file, append = TRUE, sep = "", fill = 60) } else { for (i in 1:nseqs) { head = "sequence" if(pdb.file[i]!="") { head = "structureX" if(chain.first[i] == "") chain.first[i] = "@" if(resno.first[i] == "") resno.first[i] = "FIRST" if(resno.last[i] == "") resno.last[i] = paste("+", sum(!is.gap(seqs[i,])), sep="") } head = paste(head, pdb.file[i], resno.first[i], chain.first[i], resno.last[i], chain.last[i], "", "", "", "", sep=":") cat(">P1;", ids[i], "\n", file = file, append = TRUE, sep = "") cat(head, "\n", file = file, append = TRUE) cat(seqs[i,], "*", file = file, append = TRUE, sep = "", fill = 60) } } } bio3d/R/cat.pdb.R0000644000176200001440000000615414707230356013126 0ustar liggesuserscat.pdb <- function(..., renumber=FALSE, rechain=TRUE) { cl <- match.call() objs <- list(...) are.null <- unlist(lapply(objs, is.null)) objs <- objs[!are.null] if(length(objs)==1) if(is.null(cl$rechain)) rechain = FALSE else if(length(objs)<1) return(NULL) if(any(!unlist(lapply(objs, is.pdb)))) stop("provide PDB objects as obtained from read.pdb()") ## avoid NA as chain ID na.inds <- lapply(objs, function(x) is.na(x$atom$chain)) if(any(unlist(na.inds))) { na.inds <- which(unlist(lapply(na.inds, function(x) any(x)))) for(i in na.inds) { tmp <- objs[[i]] tmp$atom$chain[ is.na(tmp$atom$chain) ] <- " " objs[[i]] <- tmp } } ## save original chain IDs ori.chain <- unlist(lapply(objs, function(x) unique(x$atom$chain))) ## always assign new chain identifiers ## and bring back original chain ID later if rechain=FALSE k <- 1 chain.repo <- c(LETTERS, letters, 0:9) for(i in 1:length(objs)) { x <- objs[[i]] objs[[i]] <- .update.chain(x, chain.repo[k:length(chain.repo)]) k <- k + length(unique(x$atom$chain)) } ## concat objects new <- objs[[1]] if(length(objs) > 1) { for(i in 2:length(objs)) { new$atom <- rbind(new$atom, objs[[i]]$atom) new$xyz <- cbind(new$xyz, objs[[i]]$xyz) new$seqres <- c(new$seqres, objs[[i]]$seqres) new$helix <- c(new$helix, objs[[i]]$helix) new$sheet <- c(new$sheet, objs[[i]]$sheet) } } ## merge SSE info for(i in c("helix", "sheet")) { sse <- new[[i]] if(!is.null(sse)) { coms <- names(sse) names(sse) <- NULL # avoid nested naming in results inds <- which(!duplicated(coms)) for(j in inds) sse[[j]] <- do.call(c, sse[coms %in% coms[j]]) sse <- sse[inds] names(sse) <- coms[inds] new[[i]] <- sse } } ## renumber residues chk <- try(clean.pdb(new, consecutive = !rechain, force.renumber = renumber, verbose=FALSE), silent=TRUE) if(inherits(chk, "try-error")) { warning("cat.pdb(): Bad format pdb generated. Try rechain=TRUE and/or renumber=TRUE") new['helix'] <- list(NULL) new['sheet'] <- list(NULL) } else new <- chk if(!rechain) new <- .update.chain(new, ori.chain) ## build new PDB object new$call <- cl ## remap " " chain IDs to NA values new$atom$chain[ new$atom$chain==" " ] <- as.character(NA) ## check connectivity chains <- unique(new$atom$chain) for(i in 1:length(chains)) { sele <- atom.select(new, chain=chains[i], verbose=FALSE) tmp <- trim.pdb(new, sele) if(!inspect.connectivity(tmp)) warning(paste("possible chain break in molecule: chain", chains[i])) } return(new) } .update.chain <- function(x, chain.repo = LETTERS) { new <- x chains <- unique(x$atom$chain) for(j in 1:length(chains)) { inds <- which(x$atom$chain==chains[j]) new$atom$chain[inds] <- chain.repo[j] if(!is.null(x$helix)) new$helix$chain[x$helix$chain==chains[j]] <- chain.repo[j] if(!is.null(x$sheet)) new$sheet$chain[x$sheet$chain==chains[j]] <- chain.repo[j] } new } bio3d/R/plot.fasta.R0000644000176200001440000000474214707230357013670 0ustar liggesusers"plot.fasta" <- function(x, hc = TRUE, labels = x$id, cex.lab = 0.7, xlab = "Alignment index", main = "Sequence Alignment Overview", mar4 = 4, ... ) { if(!(inherits(x, "fasta") | inherits(x, "pdbs"))) stop("input 'x' should be a list object as obtained from 'read.fasta'") if(is.logical(hc)) { if(hc) { ide <- seqidentity(x) hc <- hclust(as.dist(1-ide)) } else { hc <- NULL } } else { if(!is.null(hc)) { if(!inherits(hc, "hclust")) stop("'hc' must be logical, NULL or a 'hclust' object.") } } ##- Setup plot arangment opar <- par(no.readonly = TRUE) on.exit(par(opar)) if(!is.null(hc)) { layout(matrix(c(4,2,3,1), ncol=2), heights = c(.1, 1), widths = c(0.3, 1)) par(mar=c(4, 0.1, 0.1, mar4)) } else { layout(matrix(c(2, 1), nrow=2), heights = c(.1, 1)) par(mar=c(4, 2, 0.1, mar4)) } ## 1: gap, 0: non-gap gaps <- gap.inspect(x$ali) mat <- gaps$bin if(any(mat==1)) { mat[ mat == 1 ] <- -1 mat[ mat == 0 ] <- 1 mat[ mat == -1 ] <- 0 } else { mat <- mat+1 } ## re-order matrix if(!is.null(hc)) mat <- mat[ hc$order, ] else mat <- mat[ seq(nrow(mat), 1), ] if(any(mat==0)) col <- c("#FFFFFF", "#9F9F9F") else col <- c("#9F9F9F") image(t(mat), col = col, axes=FALSE) by <- pretty(0:ncol(x$ali), n = 6) by <- by[2] labs.x <- seq(0, ncol(x$ali), by=by) labs.x[1] <- 1 at <- labs.x / labs.x[length(labs.x)] at[1] <- 0 axis(1, at=at, labels=labs.x) mtext(xlab, 1, line=2.5, cex=1.0) at <- seq(0, 1, length.out=length(x$id)) #labs <- x$id if(!is.null(hc)) labels <- labels[hc$order] mtext(labels, side=4, line=2-1.25, at=at, cex=cex.lab, las=2) ## cluster dendrogram if(!is.null(hc)) { par(mar=c(4, 0.1, 0.1, 0.1)) ddr <- as.dendrogram(hc) plot(ddr, horiz = TRUE, axes = FALSE, yaxs = "i", leaflab = "none") } ## conservation bar on top of alignment cons <- conserv(x$ali) ng <- rep(0, length(cons)) ng[gaps$f.inds] <- 1 if(!is.null(hc)) par(mar=c(.1, 0.1, 2, mar4)) else par(mar=c(.1, 2, 2, mar4)) #if(all(c(0,1) %in% cons)) # col <- c("#FFFFFF", "#FF0000") #else col <- colorRampPalette(c("white", "red"))( 10 ) image(as.matrix(cons), col = col, axes=FALSE) #if(!is.null(hc)) # at <- 0.4 #else at <- NA mtext(main, side = 3, line = 0.5, cex = 1.25, at=at) } bio3d/R/as.select.R0000644000176200001440000000071214707230356013466 0ustar liggesusers"as.select" <- function(x, ...) { cl <- match.call() if(is.select(x)) { return(x) } else { if(!is.vector(x)) stop("provide a numeric vector of atom indices") if(all(is.logical(x))) x <- which(x) if(!all(is.numeric(x))) stop("provide a numeric vector of atom indices") sele <- NULL sele$atom <- x sele$xyz <- atom2xyz(x) sele$call <- cl class(sele) <- "select" return(sele) } } bio3d/R/pca.pdbs.R0000644000176200001440000000072514707230356013303 0ustar liggesusers"pca.pdbs" <- function(pdbs, core.find=FALSE, fit=FALSE, ...) { ## Log the call cl <- match.call() if(core.find & fit) { warning("incompatible arguments- neglecting 'fit=TRUE'") fit=FALSE } if(core.find) { core <- core.find(pdbs) pdbs$xyz = pdbfit(pdbs, core$c0.5A.xyz) } else if(fit) { pdbs$xyz = pdbfit(pdbs) } gaps.pos <- gap.inspect(pdbs$xyz) pc <- pca.xyz(pdbs$xyz[,gaps.pos$f.inds], ...) pc$call=cl return(pc) } bio3d/R/read.all.R0000644000176200001440000002172614707230357013300 0ustar liggesusers"read.all" <- function(aln, prefix="", pdbext="", sel=NULL, rm.wat=TRUE, rm.ligand=FALSE, compact=TRUE, ncore=NULL, ...) { ## Usage: ## sel <- c("N", "CA", "C", "O", "CB", "*G", "*D", "*E", "*Z") ## pdbs.all <- read.all(aln, sel=sel) if(!inherits(aln, 'fasta')) stop( paste("input 'aln' should be a list object as obtained from ", "'seqaln()', 'pdbaln()', or 'read.fasta.pdb()'") ) dots <- list(...) if(!'verbose' %in% names(dots)) dots$verbose = FALSE ## Log the call cl <- match.call() ncore <- setup.ncore(ncore) files <- paste(prefix, aln$id, pdbext,sep="") ##cat(files,sep="\n") toread <- file.exists(files) ## check for online files toread[ substr(files,1,4)=="http" ] <- TRUE if(all(!toread)) stop("No corresponding PDB files found") ## Avoid multi-thread downloading if(any(substr(files,1,4) == "http")) { ncore = 1 } if(ncore>1) { prev.warn <- getOption("warn") options(warn=1) on.exit(options(warn=prev.warn)) } ## make default selection if(is.null(sel)) sel <- store.atom() blank <- rep(NA, ncol(aln$ali)) blank.all <- rep(NA, ncol(aln$ali)*length(sel)) # for (i in 1:length(aln$id)) { rtn <- mclapply(1:length(aln$id), function(i) { cat(paste("pdb/seq:",i," name:", aln$id[i]),"\n") if(!toread[i]) { warning(paste("No PDB file found for seq", aln$id[i], ": (with filename) ",files[i]), call.=FALSE) coords <- rep(blank,3) res.nu <- blank res.bf <- blank res.ch <- blank res.id <- blank res.ss <- blank res.in <- blank ## all atom data coords.all <- rep(blank.all, 3) elety.all <- blank.all resid.all <- blank.all resno.all <- blank.all hetatm <- NULL ## ##coords.all ## } else { pdb <- do.call(read.pdb, c(list(files[i]), dots) ) ## Always remove hydrogen pdb <- atom.select(pdb, 'noh', value=TRUE, verbose=FALSE) hetatm <- atom.select(pdb, 'protein', inverse=TRUE, value=TRUE, verbose=FALSE) if(rm.wat) hetatm <- trim(hetatm, 'water', inverse=TRUE, verbose=FALSE) if(rm.ligand) hetatm <- trim(hetatm, 'ligand', inverse=TRUE, verbose=FALSE) if(nrow(hetatm$atom)==0) hetatm <- NULL ## Following works on protein only pdb <- atom.select(pdb, 'protein', value=TRUE, verbose=FALSE) ca.inds <- atom.select(pdb, "calpha", verbose=FALSE) pdbseq <- pdbseq(pdb) aliseq <- toupper(aln$ali[i,]) tomatch <- gsub("X","[A-Z]",aliseq[!is.gap(aliseq)]) if(length(pdbseq)<1) stop(paste(basename(aln$id[i]), ": insufficent Calpha's in PDB"), call.=FALSE) ##-- Search for ali residues (1:15) in pdb start.num <- regexpr(pattern = paste(c(na.omit(tomatch[1:15])),collapse=""), text = paste(pdbseq,collapse=""))[1] if (start.num == -1) { stop("Starting residues of sequence not found in PDB") } ##-- Numeric vec, 'nseq', for mapping aln to pdb nseq <- rep(NA,length(aliseq)) ali.res.ind <- which(!is.gap(aliseq)) if( length(ali.res.ind) > (length(pdbseq) - start.num + 1) ) { warning(paste(aln$id[i], ": sequence has more residues than PDB has Calpha's"), call.=FALSE) ali.res.ind <- ali.res.ind[1:(length(pdbseq)-start.num+1)] ## exclude extra tomatch <- tomatch[1:(length(pdbseq)-start.num+1)] ## terminal residues } nseq[ali.res.ind] = start.num:((start.num - 1) + length(tomatch)) ##-- Check for miss-matches match <- aliseq != pdbseq[nseq] if ( sum(match, na.rm=TRUE) >= 1 ) { mismatch.ind <- which(match) mismatch <- cbind(aliseq, pdbseq[nseq])[mismatch.ind,] n.miss <- length(mismatch.ind) if(sum(mismatch=="X") != n.miss) { ## ignore masked X res details <- rbind(aliseq, !match, pdbseq[nseq], pdb$atom[pdb$calpha,"resno"][nseq] ) #### calpha[,"resno"][nseq] ) ###- typo?? details <- seqbind(aliseq, pdbseq[nseq]) details$ali[is.na(details$ali)] <- "-" rownames(details$ali) <- c("aliseq","pdbseq") details$id <- c("aliseq","pdbseq") resmatch <- which(!apply(details$ali, 2, function(x) x[1]==x[2])) resid <- paste(pdb$atom$resid[ca.inds$atom][nseq][resmatch][1], "-", pdb$atom$resno[ca.inds$atom][nseq][resmatch][1], " (", pdb$atom$chain[ca.inds$atom][nseq][resmatch][1], ")", sep="") cat("\n ERROR Alignment mismatch. See alignment below for further details\n") cat(" (row ", i, " of aln and sequence of '", aln$id[i], "').\n", sep="") cat(" First mismatch residue in PDB is:", resid, "\n") cat(" occurring at alignment position:", which(match)[1], "\n\n") .print.fasta.ali(details) msg <- paste(basename.pdb(aln$id[i]), " alignment and PDB sequence miss-match\n", " beginning at position ", which(match)[1], " (PDB RESNO ", resid, ")", sep="") stop(msg, call.=FALSE) } } ##-- Store nseq justified PDB data ca.ali <- pdb$atom[pdb$calpha,][nseq,] coords <- as.numeric( t(ca.ali[,c("x","y","z")]) ) res.nu <- ca.ali[, "resno"] res.bf <- as.numeric( ca.ali[,"b"] ) res.ch <- ca.ali[, "chain"] res.id <- ca.ali[, "resid"] res.in <- ca.ali[, "insert"] sse <- pdb2sse(pdb, verbose = FALSE) if(!is.null(sse)) res.ss <- sse[nseq] else res.ss <- blank raw <- store.atom(pdb) coords.all <- as.numeric( raw[c("x","y","z"), sel, nseq] ) elety.all <- c(raw[c("elety"),sel,nseq]) resid.all <- c(raw[c("resid"),sel,nseq]) resno.all <- c(raw[c("resno"),sel,nseq]) ## raw <- store.main(pdb) ## b <- cbind(b, raw[,,nseq]) } # end else list(coords=coords, coords.all=coords.all, res.nu=res.nu, res.bf=res.bf, res.ch=res.ch, res.id=res.id, res.in=res.in, res.ss=res.ss, elety.all=elety.all, resid.all=resid.all, resno.all=resno.all, hetatm=hetatm) }, mc.cores=ncore, mc.allow.recursive=FALSE) # end for tryerr <- which(sapply(rtn, inherits, 'try-error')) if(length(tryerr)>0) { stop(as.character(rtn[[tryerr[1]]])) } coords <- do.call( rbind, unname(sapply(rtn, '[', 'coords')) ) res.nu <- do.call( rbind, unname(sapply(rtn, '[', 'res.nu')) ) res.bf <- do.call( rbind, unname(sapply(rtn, '[', 'res.bf')) ) res.ch <- do.call( rbind, unname(sapply(rtn, '[', 'res.ch')) ) res.id <- do.call( rbind, unname(sapply(rtn, '[', 'res.id')) ) res.ss <- do.call( rbind, unname(sapply(rtn, '[', 'res.ss')) ) res.in <- do.call( rbind, unname(sapply(rtn, '[', 'res.in')) ) if( all(is.na(res.ss)) ) res.ss <- NULL if( all(is.na(res.in)) ) { res.in <- NULL } else { res.in[is.na(res.in)] <- '' } coords.all <- do.call( rbind, unname(sapply(rtn, '[', 'coords.all')) ) elety.all <- do.call( rbind, unname(sapply(rtn, '[', 'elety.all')) ) resid.all <- do.call( rbind, unname(sapply(rtn, '[', 'resid.all')) ) resno.all <- do.call( rbind, unname(sapply(rtn, '[', 'resno.all')) ) hetatm.all <- unname(sapply(rtn, '[', 'hetatm')) if(all(sapply(hetatm.all, is.null))) hetatm.all <- NULL rownames(aln$ali) <- aln$id rownames(coords) <- aln$id rownames(res.nu) <- aln$id rownames(res.bf) <- aln$id rownames(res.ch) <- aln$id rownames(res.id) <- aln$id if(!is.null(res.ss)) rownames(res.ss) <- aln$id if(!is.null(res.in)) rownames(res.in) <- aln$id rownames(coords.all) <- aln$id rownames(elety.all) <- aln$id rownames(resid.all) <- aln$id rownames(resno.all) <- aln$id if(!is.null(hetatm.all)) names(hetatm.all) <- aln$id atm <- rep( rep(sel,each=3), ncol(aln$ali)) colnames(coords.all) = atm atm <- rep( sel, ncol(aln$ali)) colnames(elety.all) = atm colnames(resid.all) = atm colnames(resno.all) = atm coords <- as.xyz(coords) coords.all <- as.xyz(coords.all) width <- ncol(elety.all) / ncol(aln$ali) grpby <- rep(1:ncol(aln$ali), each=width) if(compact) { # remove columns that have NA in all rows rm.inds <- which(apply(elety.all, 2, function(x) all(is.na(x)))) if(length(rm.inds) > 0) { coords.all <- as.xyz(coords.all[, -atom2xyz(rm.inds)]) elety.all <- elety.all[, -rm.inds, drop=FALSE] resid.all <- resid.all[, -rm.inds, drop=FALSE] resno.all <- resno.all[, -rm.inds, drop=FALSE] grpby <- grpby[-rm.inds] } } out<-list(xyz=coords, all=coords.all, resno=res.nu, insert=res.in, b=res.bf, chain = res.ch, id=aln$id, ali=aln$ali, resid=res.id, sse=res.ss, all.elety=elety.all, all.resid=resid.all, all.resno=resno.all, all.grpby=grpby, all.hetatm=hetatm.all, call = cl) class(out)=c("pdbs", "fasta") return(out) } bio3d/R/rtb.R0000644000176200001440000001140514707230357012376 0ustar liggesusers.diag.rtb <- function(H, blocks, xyz, masses, ...) { ## mass weighted Hessian if(!all(masses == 1)) { m <- 1/sqrt(rep(masses, each=3)) H <- sapply(1:ncol(H), function(i) H[,i] * m[i]) H <- t( sapply(1:nrow(H), function(i) H[i,] * m[i]) ) } if(nlevels(blocks) == (nrow(H)/3)) return( eigen(H, ...) ) MASS <- tapply(masses, blocks, sum) # Block mass xyz <- matrix(xyz, ncol=3, byrow=TRUE) ## block center-of-mass Rc <- tapply(1:length(blocks), blocks, function(i) { colSums(xyz[i,, drop=FALSE ] * masses[i]) / MASS[blocks[i[1]]] } ) ## Gram-Schmidt process for orthonormalization schmidt <- function(p) { p[, 1] <- p[, 1] / sqrt(sum(p[, 1]^2)) for(i in 2:ncol(p)) { ov <- apply(p[, 1:(i-1), drop=FALSE], 2, function(x) as.vector(crossprod(p[, i], x)) * x ) ov <- rowSums(ov) p[, i] <- p[, i] - ov p[, i] <- p[, i] / sqrt(sum(p[, i]^2)) } return(p) } ## RTB projector building (can be parallelized) P.blocks <- lapply(1:nlevels(blocks), function(i) { myblock <- levels(blocks)[i] iatom <- which(blocks %in% myblock) natom <- length(iatom) m <- masses[iatom] M <- MASS[myblock] # equilibrium position relative to COM r0 <- t( t(xyz[iatom, ]) - Rc[[myblock]] ) ncol <- ifelse(natom>=3, 6, ifelse(natom>=2, 5, 3)) P <- matrix(0, nrow=natom*3, ncol=ncol) # translation P[seq(1, nrow(P), 3), 1] <- sqrt(m/M) #xx P[seq(2, nrow(P), 3), 2] <- sqrt(m/M) #yy P[seq(3, nrow(P), 3), 3] <- sqrt(m/M) #zz if(natom>=3) { # rotation rr <- rbind(0, -r0[, 3], r0[, 2]) P[, 4] <- 1/sqrt( sum(m * (r0[, 2]^2 + r0[, 3]^2)) ) * ( sqrt(rep(m, each=3)) * as.numeric(rr) ) ## x-axis rr <- rbind(r0[, 3], 0, -r0[, 1]) P[, 5] <- 1/sqrt( sum(m * (r0[, 1]^2 + r0[, 3]^2)) ) * ( sqrt(rep(m, each=3)) * as.numeric(rr) ) ## y-axis rr <- rbind(-r0[, 2], r0[, 1], 0) P[, 6] <- 1/sqrt( sum(m * (r0[, 1]^2 + r0[, 2]^2)) ) * ( sqrt(rep(m, each=3)) * as.numeric(rr) ) ## z-axis schmidt(P) # Orthonormalization } else if(natom==2) { # check the line direction and choose the least overlapped axes to rotate. ax <- rbind(c(2,3,1), c(3,1,2), c(1,2,3)) ax <- ax[which.max(abs(r0[1, ])), ] rr <- list(rbind(0, -r0[, 3], r0[, 2]), rbind(r0[, 3], 0, -r0[, 1]), rbind(-r0[, 2], r0[, 1], 0)) # rotation P[, 4] <- 1/sqrt( sum(m * (r0[, ax[2]]^2 + r0[, ax[3]]^2)) ) * ( sqrt(rep(m, each=3)) * as.numeric(rr[[ax[1]]]) ) ## first-axis P[, 5] <- 1/sqrt( sum(m * (r0[, ax[1]]^2 + r0[, ax[3]]^2)) ) * ( sqrt(rep(m, each=3)) * as.numeric(rr[[ax[2]]]) ) ## second-axis schmidt(P) # Orthonormalization } else { P } } ) ## effective reduced Hessian (can be parallelized) # H <- t(P) %*% H %*% P H <- lapply(1:nlevels(blocks), function(i) { myblock <- unique(blocks)[i] iatom <- which(blocks %in% myblock) P <- P.blocks[[myblock]] crossprod( P, H[atom2xyz(iatom), ] ) } ) H <- do.call(rbind, H) H <- lapply(1:nlevels(blocks), function(i) { myblock <- unique(blocks)[i] iatom <- which(blocks %in% myblock) P <- P.blocks[[myblock]] crossprod( t(H[, atom2xyz(iatom)]), P ) }) H <- do.call(cbind, H) ei <- eigen(H, ...) ## map eigenvector to 3N space block.bounds <- c(1, cumsum(sapply(P.blocks[unique(blocks)], ncol))+1) vecs <- lapply(1:nlevels(blocks), function(i) { myblock <- unique(blocks)[i] # iblock <- which(unique(blocks) %in% myblock) P <- P.blocks[[myblock]] crossprod( t(P), ei$vectors[(block.bounds[i]):(block.bounds[i+1]-1), ] ) }) ei$vectors <- do.call(rbind, vecs) ei } #' @param verbose logical, if TRUE print detailed processing message #' @inheritParams aanma.pdb #' @rdname aanma.pdb rtb <- function(hessian, pdb, mass=TRUE, nmer=1, verbose=TRUE) { H <- hessian res <- paste( pdb$atom[, 'chain'], pdb$atom[, 'resno'], pdb$atom[, 'insert'], sep='_' ) if(nmer > 1) { rl <- rle(res) g <- rep(1:ceiling(length(rl$lengths)/nmer), each=nmer) tosum <- split(rl$lengths, g[1:length(rl$lengths)]) rl$lengths <- sapply(tosum, sum) rl$values <- rl$values[seq(1, length(g), nmer)] res <- inverse.rle(rl) } blocks <- as.factor(res) ## atom mass if(isTRUE(mass)) { m <- atom2mass(pdb) } else if(is.numeric(mass)) { m <- mass } else { m <- rep(1, nrow(pdb$atom)) } if(verbose) { cat(" Diagonalizing Hessian with RTB...") ptm <- proc.time() } ei <- .diag.rtb(H, blocks, pdb$xyz, m, symmetric=TRUE) if(verbose) { t <- proc.time() - ptm cat("\t\tDone in", t[[3]], "seconds.\n") } return( ei ) } bio3d/R/arg_filter.R0000644000176200001440000000253014707230356013723 0ustar liggesusers.arg.filter <- function(new.args, FUN=NULL, ...) { ##-- Simple list filtering for duplicate ## function input argument removal and validation. ## ## new.args = The new default args that can be overwritten ## by those in 'dots' (i.e. user supplied "...") ## E.G. "new.args=list(col=mydefualtcol, lwd=3)" ## ## FUN = Function name from which allowed arguments are checked ## and used to limit output of this function. ## This is typically only required if there are multiple ## (sub)functions to be called each with other specific ## things in /dots. ## E.G. allowed=names(formals( mysubfunction2call )) ## ## dots = Full user supplied updated values typically ## this is the extra /dots values, i.e. list(...) ## ## sse.default <- list(coil="gray", helix="purple", sheet="yellow") ## sse.args <- arg.filter( sse.default, FUN=sse.vector ) ## col <- do.call('sse.vector', c(list(pdb=pdb), sse.args) ) ## ## Returns entries of 'dots' updated with those in 'new.args' ## that intersect with allowed FUN input args. dots <- list(...) ans <- c(dots, new.args[!names(new.args) %in% names(dots)]) if(!is.null(FUN)) { ans <- ans[names(ans) %in% names(formals(FUN))] } return(ans) } bio3d/R/trim.pdbs.R0000644000176200001440000000377114707230357013520 0ustar liggesusers## Use for trimming a pdbs object, either by removing structures, ## or by removing columns trim.pdbs <- function(pdbs, row.inds=NULL, col.inds=NULL, ...) { if(!inherits(pdbs, "pdbs")) stop("input 'pdbs' should be a list object as obtained from 'read.fasta.pdb'") ## Log the call cl <- match.call() if(is.null(row.inds)) row.inds <- seq(1, nrow(pdbs$resno), by=1) if(is.null(col.inds)) { gaps <- gap.inspect(pdbs$resno[row.inds,,drop=FALSE]) col.inds <- which(gaps$col < dim(pdbs$resno[row.inds,,drop=FALSE])[1L]) } if(any(col.inds<0)) col.inds.xyz <- atom2xyz(abs(col.inds)) * sign(rep(col.inds, each=3)) else col.inds.xyz <- atom2xyz(col.inds) new <- NULL new$id =pdbs$id[row.inds] new$xyz = as.xyz(pdbs$xyz[row.inds, col.inds.xyz, drop=FALSE]) new$resno =pdbs$resno[row.inds, col.inds, drop=FALSE] new$b =pdbs$b[row.inds, col.inds, drop=FALSE] new$chain =pdbs$chain[row.inds, col.inds, drop=FALSE] new$ali =pdbs$ali[row.inds, col.inds, drop=FALSE] new$resid =pdbs$resid[row.inds, col.inds, drop=FALSE] new$sse =pdbs$sse[row.inds, col.inds, drop=FALSE] new$call =cl if(!is.null(pdbs$insert)) { new$insert =pdbs$insert[row.inds, col.inds, drop=FALSE] } if(!is.null(pdbs$all)) { col.inds.all <- which(pdbs$all.grpby %in% abs(col.inds)) col.inds.all <- col.inds.all * sign(rep(col.inds, rle(pdbs$all.grpby[col.inds.all])$length)) if(any(col.inds.all<0)) col.inds.all.xyz <- atom2xyz(abs(col.inds.all)) * sign(rep(col.inds.all, each=3)) else col.inds.all.xyz <- atom2xyz(col.inds.all) new$all = as.xyz(pdbs$all[row.inds, col.inds.all.xyz, drop=FALSE]) new$all.elety = pdbs$all.elety[row.inds, col.inds.all, drop=FALSE] new$all.resno = pdbs$all.resno[row.inds, col.inds.all, drop=FALSE] new$all.resid = pdbs$all.resid[row.inds, col.inds.all, drop=FALSE] new$all.grpby = vec2resno(1:ncol(new$ali), pdbs$all.grpby[col.inds.all]) } class(new) <- c("pdbs", "fasta") return(new) } bio3d/R/vmd.cna.R0000644000176200001440000001525214707230357013141 0ustar liggesusersvmd.ecna <- function(x, n=1, ...) { if(!inherits(x, "ecna")) { stop("The input 'x' must be an object of class 'ecna'.") } if(!(length(n)==1 && is.numeric(n) && n>0)) { stop("Input 'n' must be an nonzero integer.") } if(n > length(x)) { stop("Wrong index of networks.") } vmd(x[[n]], ...) } vmd.cna <- function(x, pdb, layout=layout.cna(x, pdb, k=3), col.sphere=NULL, col.lines="silver", weights=NULL, radius=table(x$communities$membership)/5, alpha=1, vmdfile="network.vmd", pdbfile="network.pdb", full=FALSE, launch=FALSE, exefile=NULL, ...) { ## Draw a cna network in VMD ## Check for presence of igraph package oops <- requireNamespace("igraph", quietly = TRUE) if (!oops) { stop("igraph package missing: Please install, see: ?install.packages") } if(is.null(weights)){ weights <- igraph::E(x$community.network)$weight if(is.null(x$call$minus.log)){ weights <- exp(-weights) } else{ if(x$call$minus.log){ weights <- exp(-weights) } } } if(is.null(col.sphere)) { ## Get colors from network and convert to 0:17 VMD color index col.sphere <- match(igraph::V(x$community.network)$color, vmd_colors())-1 } else { ## Check supplied color(s) will work in VMD if(!all(col.sphere %in% c(0:17))) { warning("Input 'col.sphere' may not work properly in VMD - should be 0:17 color index value") } } ##-- VMD draw functions for sphere, lines and cone .vmd.sphere <- function(cent, radius=5, col="red", resolution=25) { ## .vmd.sphere( matrix(c(0,0,0, 1,1,1), ncol=3,byrow=T) ) if(ncol(cent) != 3) stop("Input 'cent' should be a 3 col xyz matrix") n <- nrow(cent); scr <- rep(NA, n) if(length(col) != n) col <- rep(col, length=n) if(length(radius) != n) radius <- rep(radius, length=n) for(i in 1:n) { scr[i] <- paste0("draw color ", col[i], "\ndraw sphere {", paste(cent[i,], collapse = " "), "} radius ", radius[i], " resolution ",resolution, "\n") } return(scr) } .vmd.lines <- function(start, end, radius=0.2, col="silver", resolution=25) { ## .vmd.lines( start=matrix(c(0,0,0), ncol=3,byrow=T), ## end=matrix(c(1,1,1), ncol=3,byrow=T) ) if(ncol(start) != 3) stop("Input 'start' and 'end' should be 3 col xyz matrices") n <- nrow(start); scr <- rep(NA, n) if(length(col) != n) col <- rep(col, length=n) if(length(radius) != n) radius <- rep(radius, length=n) for(i in 1:n) { scr[i] <- paste0("draw color ", col[i], "\ndraw cylinder {", paste(start[i,], collapse = " "), "} {", paste(end[i,], collapse = " "), "} radius ", radius[i], " resolution ",resolution, "\n") } return(scr) } .vmd.cone <- function(start, end, radius=5, col="silver", resolution=25) { warning("not here yet") } ##- Set alpha if needed scr <- NULL if(alpha != 1) scr <- paste("material change opacity Transparent", alpha,"\ndraw material Transparent\n") ##- Lets get drawing ##radius = V(x$community.network)$size ###radius = table(x$raw.communities$membership)/5 if(!full) { scr <- c(scr, .vmd.sphere( layout, radius=radius, col=col.sphere)) ## Edges ##edge.list <- unlist2(get.adjlist(x$community.network)) ##start.no <- as.numeric(names(edge.list)) ##end.no <- as.numeric((edge.list)) ##inds <- which(end.no > start.no) ##start <- layout[start.no[inds],] ##end <- layout[end.no[inds],] edge.list <- igraph::get.edges(x$community.network, 1:length(igraph::E(x$community.network))) start <- layout[edge.list[,1],] end <- layout[edge.list[,2],] ## weights=E(x$community.network)$weight ##/0.2 scr <- c(scr, .vmd.lines(start=start, end=end, radius=weights, col=col.lines)) } ## full network if(full) { ## Calpha PDB if(!all(pdb$atom$elety == "CA")) { message("Trimming provided PDB to calpha atoms") pdb.ca <- trim(pdb, "calpha") } else { pdb.ca <- pdb } if(length(x$network[1]) != nrow(pdb.ca$atom)) stop("Mismatch between provided network and pdb") ## Edges edge.list <- igraph::get.edges(x$network, 1:length(igraph::E(x$network))) start <- matrix(pdb.ca$xyz[, atom2xyz(edge.list[,1]) ], ncol=3, byrow=TRUE) end <- matrix(pdb.ca$xyz[, atom2xyz(edge.list[,2]) ], ncol=3, byrow=TRUE) ## Edge colors and radius col2 <- match(igraph::V(x$network)$color, vmd_colors())-1 names(col2) = 1:nrow(pdb.ca$atom) col3 = apply(edge.list, 1, function(x) { if(col2[x[1]]==col2[x[2]]) col2[x[1]] else 16 ## black }) rad3 = apply(edge.list, 1, function(x) { if(col2[x[1]]==col2[x[2]]) 0.1 else 0.25 }) scr2 = .vmd.lines(start=start, end=end, radius=rad3, col=col3) scr = c(scr, scr2) } cat(scr, file=vmdfile, sep="") ## Output a PDB file with chain color # Use the chain field to store cluster membership data for color in VMD if(!is.null(igraph::V(x$network)$color)) { ch <- vec2resno(match(igraph::V(x$network)$color, vmd_colors()), resno=pdb$atom[, "resno"]) } else { ch <- vec2resno(vec=x$communities$membership, resno=pdb$atom[,"resno"]) } write.pdb(pdb, chain=LETTERS[ch], file=pdbfile) ## Launch option ... ## vmd -pdb network.pdb -e network.vmd if(launch) { ## Find default path to external program if(is.null(exefile)) { exefile <- 'vmd' if(nchar(Sys.which(exefile)) == 0) { os1 <- Sys.info()["sysname"] exefile <- switch(os1, Windows = 'vmd.exe', # to be updated Darwin = '/Applications/VMD\\ 1.9.*app/Contents/MacOS/startup.command', 'vmd' ) } } if(nchar(Sys.which(exefile)) == 0) stop(paste("Launching external program failed\n", " make sure '", exefile, "' is in your search path", sep="")) cmd <- paste(exefile, pdbfile, "-e", vmdfile) os1 <- .Platform$OS.type if (os1 == "windows") { cmd <- paste(shQuote(exefile), pdbfile, "-e", vmdfile) shell(cmd) } else{ system(cmd) } } } bio3d/R/print.pdb.R0000644000176200001440000000022114707230357013501 0ustar liggesusersprint.pdb <- function(x, printseq=TRUE, ...) { ## Print a summary of basic PDB object features y <- summary.pdb(x, printseq=printseq, ...) } bio3d/R/summary.cna.R0000644000176200001440000000322014707230357014040 0ustar liggesuserssummary.cna <- function(object, verbose=TRUE, ...) { ## summary.cna(net) ## y <- summary.cna(net, file="tmp.tbl", col.names=FALSE, append=T) ## or just write 'y' to file! if( !"cna" %in% class(object) ) { stop("Input should be a cna network object") } size <- table(object$communities$membership) id <- names(size) memb <- sapply(id, function(i) { which(object$communities$membership==i) } ) ## NOTE: Perhaps the memb should be names() of which inds ## rather than the inds themselves as it is curently? ##memb <- sapply(id, function(i) { names(which(object$membership==i)) } ) ##- Format as condensed vector for printing if( is.numeric(unlist(memb)) ) { members <- rep(NA, length(id)) for(i in 1:length(id)) { b <- bounds(memb[[i]])[,c("start","end"),drop=FALSE] single.member <- NULL for(a in 1:dim(b)[1]){ if(b[a,1] != b[a,2]){ single.member[a] <- paste0(b[a,1], ":", b[a,2]) } else{ single.member[a] <- b[a,1] } } if(length(single.member)>1){ members[i] <- paste0("c(", paste0(single.member, collapse=", "), ")") } else{ members[i] <- single.member } } } else{ ##- non numeric vectors can not be condensed members <- unlist(lapply(memb, paste, collapse=", ")) } ## Output silently as a list tbl <- data.frame( id=as.numeric(id), size=as.numeric(size), members=members, stringsAsFactors=FALSE ) y <- list("id"=id, "size"=size, "members"=memb, "tbl"=tbl) if(verbose) { print.data.frame(tbl, row.names=FALSE) } return(y) } bio3d/R/dccm.gnm.R0000644000176200001440000000435114707230356013276 0ustar liggesusers#' Dynamic Cross-Correlation from Gaussian Network Model #' #' Calculate the cross-correlation matrix from Gaussian network model normal #' modes analysis. #' #' This function calculates the cross-correlation matrix from Gaussian network #' model (GNM) normal modes analysis (NMA) obtained from \code{gnm}. It returns #' a matrix of residue-wise cross-correlations whose elements, Cij, may be #' displayed in a graphical representation frequently termed a dynamical #' cross-correlation map, or DCCM. (See more details in \code{help(dccm.nma)}). #' #' @param x an object of class \sQuote{gnm} or \sQuote{egnm} as obtained from #' \code{\link{gnm}}. #' @param ... additional arguments (currently ignored). #' #' @return Returns a cross-correlation matrix. #' #' @seealso \code{\link{gnm}}, \code{\link{dccm.nma}}, \code{\link{dccm.enma}}, #' \code{\link{plot.dccm}}. #' #' @author Xin-Qiu Yao & Lars Skjaerven #' #' @references #' Bahar, I. et al. (1997) \emph{Folding Des.} \bold{2}, 173. #' #' @examples #' ## Fetch stucture #' pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) #' #' ## Calculate normal modes #' modes <- gnm(pdb) #' #' ## Calculate correlation matrix #' cm <- dccm(modes) #' #' ## Plot correlation map #' plot(cm, sse = pdb, contour = FALSE, col.regions = bwr.colors(20), #' at = seq(-1, 1, 0.1)) #' #' @keywords analysis "dccm.gnm" <- function(x, ...) { if (missing(x) || !inherits(x, 'gnm')) stop("dccm.gnm: must supply a 'gnm' object, i.e. from 'gnm.pdb()'") # variance-covariance matrix vcov <- cov.nma(x) # DCCM corr.mat <- vcov * 1/( sqrt(diag(vcov)) %*% t(sqrt(diag(vcov))) ) class(corr.mat) <- c("matrix", "dccm") return(corr.mat) } #' @rdname dccm.gnm "dccm.egnm" <- function(x, ...) { if (missing(x) || !inherits(x, 'egnm')) stop("dccm.egnm: must supply a 'egnm' object, i.e. from 'gnm.pdbs()'") # variance-covariance matrix vcovs <- cov.enma(x) # DCCM all.dccm <- apply(vcovs, 3, function(vcov) vcov * 1/( sqrt(diag(vcov)) %*% t(sqrt(diag(vcov))) ) ) all.dccm <- array(all.dccm, dim=dim(vcovs)) avg.dccm <- rowMeans(all.dccm, dims=2) class(avg.dccm) <- c("matrix", "dccm") out <- list(all.dccm = all.dccm, avg.dccm = avg.dccm) return( out ) } bio3d/R/pymol.pdbs.R0000644000176200001440000002156314707230357013704 0ustar liggesusers## takes a vector of residue numbers and generates a string ## e.g. (1,2,3,5,8,9) --> "1-3,5,8-9" .resno2str <- function(res, sep=c("+", "-")) { res <- res[!is.na(res)] if(!length(res)>0){ return(NULL) } else { res1 <- bounds(res) res2 <- paste(res1[,"start"], res1[,"end"], sep=sep[2]) inds <- res1[,"start"] == res1[,"end"] res2[inds] <- res1[inds, "start"] res3 <- paste(res2, collapse=sep[1]) return(res3) } } pymol <- function(...) UseMethod("pymol") pymol.pdbs <- function(pdbs, col=NULL, as="ribbon", file=NULL, type="script", exefile = "pymol", user.vec=NULL, ...) { allowed <- c("session", "script", "launch") if(!type %in% allowed) { stop(paste("input argument 'type' must be either of:", paste(allowed, collapse=", "))) } allowed <- c("ribbon", "cartoon", "lines", "putty") if(!as %in% allowed) { stop(paste("input argument 'as' must be either of:", paste(allowed, collapse=", "))) } if(!is.null(col) & !inherits(col, "core")) { if(length(col) == 1) { allowed <- c("index", "index2", "rmsf", "gaps", "user") if(!col %in% allowed) { stop(paste("input argument 'col' must be either of:", paste(allowed, collapse=", "))) } } else { if(!is.numeric(col)) { stop("col must be a numeric vector with length equal to the number of structures in the input pdbs object") } if(length(col) != length(pdbs$id)) { stop("col must be a vector with length equal to the number of structures in input pdbs") } } } ## output file name if(is.null(file)) { if(type=="session") file <- "R.pse" if(type=="script") file <- "R.pml" } ## Check if the program is executable if(type %in% c("session", "launch")) { ## determine path to exefile exefile1 <- .get.exepath(exefile) ## Check if the program is executable success <- .test.exefile(exefile1) if(!success) { stop(paste("Launching external program failed\n", " make sure '", exefile, "' is in your search path", sep="")) } exefile <- exefile1 } ## add support for "prefix" and "pdbext" dots <- list(...) if("prefix" %in% names(dots)) { pdbs$id <- paste(dots$prefix, pdbs$id, sep="") } if("pdbext" %in% names(dots)) { pdbs$id <- paste(pdbs$id, dots$pdbext, sep="") } ## use temp-dir unless we output a PML script if(type %in% c("session", "launch")) tdir <- tempdir() else tdir <- "." pdbdir <- paste(tdir, "pymol_pdbs", sep="/") if(!file.exists(pdbdir)) dir.create(pdbdir) pmlfile <- tempfile(tmpdir=tdir, fileext=".pml") psefile <- tempfile(tmpdir=tdir, fileext=".pse") ids <- basename.pdb(pdbs$id) ## include stuff in the b-factor column bf <- NULL if(as == "putty") { bf <- rmsf(pdbs$xyz) } else { if(!is.null(col)) { ## RMSF coloring if(col[1] == "rmsf") { bf <- rmsf(pdbs$xyz) } ## color by index of pdbs$ali if(col[1] == "index2") { bf <- 1:ncol(pdbs$ali)/ncol(pdbs$ali) } ## color by user defined vector if(col[1] == "user") { if(is.null(user.vec) || !is.numeric(user.vec) || length(user.vec) != ncol(pdbs$ali)) { stop("User defined color vector must be numeric and the same dimension as pdbs") } bf <- user.vec } } } ## use all all-atom PDBs if they exist if(all(file.exists(pdbs$id))) { allatom <- TRUE files <- pdbs$id ## align all-atom PDBs to pdbs$xyz for(i in 1:length(pdbs$id)) { pdb <- read.pdb(files[i]) sele <- atom.select(pdb, "calpha") gaps <- is.gap(pdbs$xyz[i,]) pdb$xyz <- fit.xyz(pdbs$xyz[i, !gaps], pdb$xyz, fixed.inds = 1:length(pdbs$xyz[i, !gaps]), mobile.inds = sele$xyz) fn <- paste0(pdbdir, "/", ids[i], ".pdb") ## store new b-factor column to PDB tmpbf <- NULL if(!is.null(bf)) { gaps <- is.gap(pdbs$ali[i,]) tmpbf <- pdb$atom$b*0 tmpbf[sele$atom] <- bf[!gaps] } write.pdb(pdb, b=tmpbf, file=fn) files[i] <- fn } } else { ## use pdbs$xyz to build CA-atom PDBs allatom <- FALSE files <- rep(NA, length(pdbs$id)) for(i in 1:length(pdbs$id)) { pdb <- pdbs2pdb(pdbs, inds=i)[[1]] fn <- paste0(pdbdir, "/", ids[i], ".pdb") ## store new b-factor column to PDB tmpbf <- NULL if(!is.null(bf)) { gaps <- is.gap(pdbs$ali[i,]) tmpbf <- bf[!gaps] } write.pdb(pdb=pdb, b=tmpbf, file=fn) files[i] <- fn } } ## load PDBs lines <- rep(NA, 5*length(pdbs$id)) for(i in 1:length(files)) { lines[i] <- paste("load", files[i]) } ## line pointer l <- i ## Structure representation (as) if(as == "putty") { lines[l+1] <- "cartoon putty" lines[l+2] <- "as cartoon" lines[l+3] <- "unset cartoon_smooth_loops" lines[l+4] <- "unset cartoon_flat_sheets" lines[l+5] <- "spectrum b, rainbow" lines[l+6] <- "set cartoon_putty_radius, 0.2" l <- l+6 as <- "cartoon" } if(!allatom) { if(!as %in% c("cartoon", "ribbon")) { warning("'as' set to 'ribbon' for c-alpha only structures") as <- "ribbon" } lines[l+1] <- paste0("set ", as, "_trace_atoms, 1") l <- l+1 } lines[l+1] <- paste("as", as) l <- l+1 ## representation ends ## Coloring if(!is.null(col)) { if(inherits(col, "core")) { core <- col l <- l+1 lines[l] <- "color grey50" for(j in 1:length(files)) { res <- .resno2str(pdbs$resno[j, core$atom]) if(!is.null(res)) { selname <- paste0(ids[j], "-core") lines[l+1] <- paste0("select ", selname, ", ", ids[j], " and resi ", res) lines[l+2] <- paste0("color red, ", selname) l <- l+2 } } } if(col[1] == "gaps") { l <- l+1 lines[l] <- "color grey50" gaps <- gap.inspect(pdbs$ali) for(j in 1:length(files)) { res <- .resno2str(pdbs$resno[j, gaps$t.inds]) if(!is.null(res)) { selname <- paste0(ids[j], "-gap") lines[l+1] <- paste0("select ", selname, ", ", ids[j], " and resi ", res) lines[l+2] <- paste0("color red, ", selname) l <- l+2 } } } if(length(col) > 1 & is.vector(col)) { ## add more colors here cols <- c("grey40", "red", "green", "blue", "cyan", "purple", "yellow", "grey90", "magenta", "orange", "pink", "wheat", "deepolive", "teal", "violet", "limon", "slate", "density", "forest", "smudge", "salmon", "brown") for(j in 1:length(files)) { lines[l+1] <- paste0("color ", cols[col[j]], ", ", ids[j]) l <- l+1 } } ## color by RMSF if(col[1] == "rmsf") { l <- l+1 lines[l] <- "spectrum b, rainbow" } ## color by index of individual structures if(col[1] == "index") { for(i in 1:length(pdbs$id)) { l <- l+1 lines[l] <- paste("spectrum count, rainbow,", ids[i], "and name C*") } } ## color by index of alignment if(col[1] == "index2") { for(i in 1:length(pdbs$id)) { l <- l+1 lines[l] <- paste("spectrum b, rainbow,", ids[i]) } } ## color by user defined vector if(col[1] == "user") { for(i in 1:length(pdbs$id)) { l <- l+1 lines[l] <- paste("spectrum b, rainbow,", ids[i]) } } } ## coloring ends lines[l+1] <- "zoom" l <- l+1 if(type == "session") { lines[l+1] <- paste("save", normalizePath(psefile, winslash='/', mustWork=FALSE)) } lines <- lines[!is.na(lines)] write.table(lines, file=pmlfile, append=FALSE, quote=FALSE, sep="\n", row.names=FALSE, col.names=FALSE) if(type %in% c("session", "launch")) { if(type == "session") args <- "-cq" else args <- "" ## Open pymol cmd <- paste(exefile, args, pmlfile) os1 <- Sys.info()["sysname"] if (os1 == "Windows") { status <- shell(paste(shQuote(exefile), args, pmlfile)) } else { status <- system(cmd) } if(!(status %in% c(0,1))) { stop(paste("An error occurred while running command\n '", exefile, "'", sep="")) } } if(type == "session") { file.copy(psefile, file, overwrite=TRUE) unlink(pmlfile) unlink(psefile) message(paste("PyMOL session written to file", file)) invisible(file) } if(type == "script") { file.copy(pmlfile, file, overwrite=TRUE) unlink(pmlfile) message(paste("PyMOL script written to file", file)) invisible(file) } } bio3d/R/nma.pdbs.R0000644000176200001440000003154414707230356013316 0ustar liggesusers## Two options - both calculating modes on the FULL structure: ## 1 - use k <- kaa - ((kaq %*% kqq.inv) %*% kqa) to derive hessian for core atoms ## 2 - return the full objects "nma.pdbs" <- function(pdbs, fit=TRUE, full=FALSE, subspace=NULL, rm.gaps=TRUE, varweight=FALSE, outpath = NULL, ncore=1, progress = NULL, ...) { if(!inherits(pdbs, "pdbs")) stop("input 'pdbs' should be a list object as obtained from 'read.fasta.pdb'") ## Log the call cl <- match.call() if(!is.null(outpath)) dir.create(outpath, FALSE) ## Parallelized by parallel package ncore <- setup.ncore(ncore, bigmem = TRUE) prev.warn <- getOption("warn") if(ncore>1) { mylapply <- mclapply options(warn=1) } else mylapply <- lapply ## Passing arguments to functions aa2mass and nma am.names <- names(formals( aa2mass )) nm.names <- names(formals( nma.pdb )) dots <- list(...) am.args <- dots[names(dots) %in% am.names] nm.args <- dots[names(dots) %in% nm.names] ## Limiting input if("mass" %in% names(nm.args)) mass <- nm.args$mass else mass <- TRUE if("ff" %in% names(nm.args)) ff <- nm.args$ff else ff <- 'calpha' if("temp" %in% names(nm.args)) temp <- nm.args$temp else temp <- 300 if("keep" %in% names(nm.args)) nm.keep <- nm.args$keep else nm.keep <- NULL if(!all((names(nm.args) %in% c("mass", "ff", "temp", "keep")))) { war <- paste(names(nm.args)[! names(nm.args) %in% c("mass", "ff", "temp", "keep") ], collapse=", ") warning(paste("ignoring arguments:", war)) } ## Force field pfc.fun <- load.enmff(ff) ## Check for optional arguments to pfc.fun ff.names <- names(formals( pfc.fun )) ff.args <- dots[names(dots) %in% ff.names] ## Set indicies gaps.res <- gap.inspect(pdbs$resno) gaps.pos <- gap.inspect(pdbs$xyz) ## check for missing masses before we start calculating if(any(pdbs$ali=="X") & mass==TRUE) { resnames <- c(bio3d::aa.table$aa3, names(am.args$mass.custom)) ops.inds <- which(pdbs$ali=="X", arr.ind=TRUE) unknowns <- c() for(i in 1:nrow(ops.inds)) { j <- ops.inds[i, ] resid <- pdbs$resid[j[1], j[2]] if(any(!(resid %in% resnames))) unknowns <- c(unknowns, resid[!resid%in%resnames]) } if(length(unknowns)>0) { options(warn=prev.warn) unknowns <- paste(unique(unknowns), collapse=", ") stop(paste0("Unknown mass for amino acid(s): ", unknowns, "\n Provide mass with argument 'mass.custom=list(", unknowns[1], "=100.00)',", "\n or ommit mass weighting with argument 'mass=FALSE'.")) } } ## Check connectivity con <- inspect.connectivity(pdbs, cut=4.05) if(!all(con)) { warning(paste(paste(basename(pdbs$id[which(!con)]), collapse=", "), "might have missing residue(s) in structure:\n", " Fluctuations at neighboring positions may be affected.")) } ## Use for later indexing pdbs$inds <- matrix(NA, ncol=ncol(pdbs$resno), nrow=nrow(pdbs$resno)) ## Number of modes to store in U.subspace if(is.null(subspace)) { keep <- length(gaps.pos$f.inds)-6 } else { keep <- subspace if (length(gaps.pos$f.inds) < (keep+6)) keep <- length(gaps.pos$f.inds)-6 } ## Coordiantes - fit or not if(fit) { xyz <- fit.xyz(fixed = pdbs$xyz[1, ], mobile = pdbs, fixed.inds = gaps.pos$f.inds, mobile.inds = gaps.pos$f.inds, ncore = ncore) } else xyz <- pdbs$xyz ## Fluctuations for each structure if(rm.gaps) flucts <- matrix(NA, nrow=nrow(gaps.res$bin), ncol=length(gaps.res$f.inds)) else flucts <- matrix(NA, nrow=nrow(gaps.res$bin), ncol=ncol(gaps.res$bin)) ## store residue numbers (same as pdbs$inds[,gaps$f.inds]) ##resnos <- flucts ## List object to store each modes object if(full) all.modes <- list() else all.modes <- NULL ## 3D array- containing the modes vectors for each structure if(rm.gaps) modes.array <- array(NA, dim=c(length(gaps.pos$f.inds), keep, nrow(gaps.res$bin))) else modes.array <- array(NA, dim=c(ncol(pdbs$xyz), keep, nrow(gaps.res$bin))) ## store eigenvalues of the first modes L.mat <- matrix(NA, ncol=keep, nrow=nrow(gaps.res$bin)) if(is.null(outpath)) fname <- tempfile(fileext = "pdb") ##### Start calculation of variance weighting ##### wts <- NULL if(is.logical(varweight)) { if(varweight) wts <- var.xyz(xyz, weights=TRUE) } else { dims.vw <- dim(varweight) if(all(dims==ncol(xyz)/3)) { wts <- varweight varweight <- TRUE } else stop("incompatible length of varweight vector") } ### Memory usage ### dims <- dim(modes.array) mem.usage <- sum(c(as.numeric(object.size(modes.array)), as.numeric(object.size(L.mat)), as.numeric(object.size(flucts)), as.numeric(object.size(matrix(NA, ncol=dims[3], nrow=dims[3]))) ))*2 if(full) { if(is.null(nm.keep)) tmpncol <- dims[2] else tmpncol <- nm.keep size.mat <- object.size(matrix(0.00000001, ncol=tmpncol, nrow=dims[1])) size.vec <- object.size(vector(length=dims[1], 'numeric')) tot.size <- ((size.mat * 2) + (size.vec * 4)) * length(pdbs$id) mem.usage <- mem.usage+tot.size } mem.usage=round(mem.usage/1048600,1) #### Print overview of scheduled calcualtion #### cat("\nDetails of Scheduled Calculation:\n") cat(paste(" ...", length(pdbs$id), "input structures", "\n")) if(keep>0) cat(paste(" ...", "storing", keep, "eigenvectors for each structure", "\n")) if(keep>0) cat(paste(" ...", "dimension of x$U.subspace: (", paste(dims[1], dims[2], dims[3], sep="x"), ")\n")) if(fit) cat(paste(" ...", "coordinate superposition prior to NM calculation", "\n")) if(varweight) cat(paste(" ...", "weighting force constants based on structural variance", "\n")) if(full) cat(paste(" ... individual complete 'nma' objects will be stored", "\n")) if(rm.gaps) cat(paste(" ... aligned eigenvectors (gap containing positions removed) ", "\n")) if(mem.usage>0) cat(paste(" ...", "estimated memory usage of final 'eNMA' object:", mem.usage, "Mb \n")) cat("\n") ##### Start modes calculation ##### pb <- txtProgressBar(min=0, max=length(pdbs$id), style=3) ## shared memory to follow progress bar if(ncore>1) iipb <- bigmemory::big.matrix(1, length(pdbs$id), init=NA) ## call .calcAlnModes for each structure in 'pdbs' alnModes <- mylapply(1:length(pdbs$id), .calcAlnModes, pdbs, xyz, gaps.res, mass, am.args, nm.keep, temp, keep, wts, rm.gaps, full, pfc.fun, ff, ff.args, outpath, pb, ncore, env=environment(), ## edit for shiny version progress=progress) ## edit end close(pb) ##### Collect data ##### for(i in 1:length(alnModes)) { tmp.modes <- alnModes[[i]] modes.array[,,i] = tmp.modes$U L.mat[i, ] = tmp.modes$L flucts[i, ] = tmp.modes$flucts if(full) all.modes[[i]] = tmp.modes$modes } remove(alnModes) invisible(gc()) ##### RMSIP ###### rmsip.map <- NULL if(rm.gaps) { rmsip.map <- .calcRMSIP(modes.array, ncore=ncore) rownames(rmsip.map) <- basename(rownames(pdbs$xyz)) colnames(rmsip.map) <- basename(rownames(pdbs$xyz)) if(!fit) warning("rmsip calculated on non-fitted structures: ensure that your input coordinates are pre-fitted.") } if(ncore>1) { # rm(iipb, pos = ".GlobalEnv") ## remove global iipb variable options(warn=prev.warn) ## restore warning option } rownames(flucts) <- basename(rownames(pdbs$xyz)) out <- list(fluctuations=flucts, rmsip=rmsip.map, U.subspace=modes.array, L=L.mat, full.nma=all.modes, xyz=xyz, call=cl) class(out) = "enma" return(out) } .calcRMSIP <- function(x, ncore=1) { if(ncore>1) mylapply <- mclapply else mylapply <- lapply n <- dim(x)[3] mat <- matrix(NA, n, n) inds <- rbind(pairwise(n), matrix(rep(1:n,each=2), ncol=2, byrow=T)) mylist <- mylapply(1:nrow(inds), function(row) { return(list( rmsip=rmsip(x[,,inds[row,1]], x[,,inds[row,2]])$rmsip, i=inds[row,1], j=inds[row,2]) ) }) for ( i in 1:length(mylist)) { tmp.rmsip <- mylist[[i]] mat[tmp.rmsip$i, tmp.rmsip$j] <- tmp.rmsip$rmsip } mat[ inds[,c(2,1)] ] = mat[ inds ] return(round(mat, 4)) } ## Calculate 'aligned' normal modes of structure i in pdbs .calcAlnModes <- function(i, pdbs, xyz, gaps.res, mass, am.args, nm.keep, temp, keep, wts, rm.gaps, full, pfc.fun, ff, ff.args, outpath, pb, ncore, env=NULL, ## edit for shiny version progress=NULL) { ## edit end ## Set indices for this structure only f.inds <- NULL f.inds$res <- which(gaps.res$bin[i,]==0) f.inds$pos <- atom2xyz(f.inds$res) ## similar to $resno but sequential indices pdbs$inds[i, f.inds$res] <- seq(1, length(f.inds$res)) ## Indices to extract from Hessian inds.inc <- pdbs$inds[i, gaps.res$f.inds] inds.exc <- pdbs$inds[i, gaps.res$t.inds][ !is.na(pdbs$inds[i, gaps.res$t.inds]) ] inds.inc.xyz <- atom2xyz(inds.inc) inds.exc.xyz <- atom2xyz(inds.exc) ## Generate content of PDB object tmp.xyz <- xyz[i, f.inds$pos] resno <- pdbs$resno[i,f.inds$res] chain <- pdbs$chain[i,f.inds$res] ## Fix for missing chain IDs chain[is.na(chain)] <- "" ## 3-letter AA code is provided in the pdbs object ## avoid using aa123() here (translates TPO to THR) resid <- pdbs$resid[i,f.inds$res] sequ <- resid ## Build a dummy PDB to use with function nma.pdb() pdb.in <- as.pdb.default(xyz=tmp.xyz, elety="CA", resno=resno, chain=chain, resid=resid, verbose=FALSE) if(!is.null(outpath)) { fname <- file.path(outpath, basename(pdbs$id[i])) write.pdb(pdb.in, file=fname) } if(mass) { masses <- try( do.call('aa2mass', c(list(pdb=sequ, inds=NULL), am.args)), silent=TRUE ) if(inherits(masses, "try-error")) { hmm <- attr(masses,"condition") cat("\n\n") stop(paste(hmm$message, "in file", basename(pdbs$id[i]))) } masses.in <- masses masses.out <- masses } else { masses.in <- NULL masses.out <- NULL } natoms.in <- nrow(pdb.in$atom) natoms.out <- natoms.in if(rm.gaps) { ## Second PDB - containing only the aligned atoms sele <- list(atom=inds.inc, xyz=inds.inc.xyz) class(sele) <- "select" pdb.out <- trim.pdb(pdb.in, sele) natoms.out <- nrow(pdb.out$atom) if(mass) masses.out <- masses.in[ inds.inc ] inc.inds <- list(xyz=inds.inc.xyz) } else { pdb.out <- pdb.in inc.inds <- NULL } ## Build full hessian bh.args <- c(list(fc.weights=wts[f.inds$res, f.inds$res]), ff.args) args <- list(bh.args=bh.args) invisible(capture.output( hessian <- .nma.hess(pdb.in$xyz, pfc.fun=pfc.fun, pdb=pdb.in, args=args, hessian=NULL))) ## extract effective hessian invisible(capture.output( hessian <- .nma.trim.hessian(hessian, inc.inds=inc.inds))) ## Mass-weight hessian if(!is.null(masses.out)) invisible(capture.output( hessian <- .nma.mwhessian(hessian, masses=masses.out))) ## Diagonalize invisible(capture.output( ei <- .nma.diag(hessian) )) ## Build an NMA object invisible(capture.output( modes <- .nma.finalize(ei, xyz=pdb.out$xyz, temp=temp, masses=masses.out, natoms=natoms.out, keep=nm.keep, call=NULL) )) if(rm.gaps) modes.mat <- matrix(NA, ncol=keep, nrow=nrow(modes$U)) else modes.mat <- matrix(NA, ncol=keep, nrow=ncol(pdbs$xyz)) j <- 1 for(k in 7:(keep+6)) { if(rm.gaps) modes.mat[, j] <- modes$U[,k] else modes.mat[f.inds$pos, j] <- modes$U[,k] j <- j+1 } if(rm.gaps) { flucts <- modes$fluctuations } else { flucts <- rep(NA, length=ncol(pdbs$resno)) flucts[f.inds$res] <- modes$fluctuations } ## Progress bar if(ncore>1) { iipb <- get("iipb", envir = env) iipb[1,i] <- 1 j <- length(which(!is.na(bigmemory::as.matrix(iipb)))) } else j <- i setTxtProgressBar(pb, j) ## edit for shiny version if(!is.null(progress)) { progress$inc(1/length(pdbs$id)) } ## edit end L <- modes$L[seq(7, keep+6)] if(!full) { remove(modes) modes <- NULL } out <- list(modes=modes, U=modes.mat, L=L, flucts=flucts) ##f.inds=f.inds) invisible(gc()) return(out) } bio3d/R/bhattacharyya.R0000644000176200001440000000502214707230356014430 0ustar liggesusersbhattacharyya <- function(...) UseMethod("bhattacharyya") bhattacharyya.nma <- function(...) bhattacharyya.matrix(...) bhattacharyya.pca <- function(...) bhattacharyya.matrix(...) bhattacharyya.enma <- function(enma, covs=NULL, ncore=NULL, ...) { if(!inherits(enma, "enma")) stop("provide a 'enma' object as obtain from function 'nma.pdbs()'") if(any(is.na(enma$fluctuations))) stop("provide 'enma' object calculated with argument 'rm.gaps=TRUE'") if(is.null(covs)) { cat("Calculating covariance matrices") covs <- cov.enma(enma, ncore=ncore) } cat("Calculating pairwise bhattacharyya coefs") sim.mat <- bhattacharyya.array(covs, ncore=ncore) rownames(sim.mat) <- basename(rownames(enma$fluctuations)) colnames(sim.mat) <- basename(rownames(enma$fluctuations)) return(sim.mat) } bhattacharyya.matrix <- function(a, b, q=90, n=NULL, ...) { if(!is.matrix(a) & is.matrix(b)) stop("provide covariance matrices") a <- ((1 / .tr(a)) * a)*1000 b <- ((1 / .tr(b)) * b)*1000 ei <- eigen( (a + b)/2 ) if(is.null(n)) { percent <- (ei$values/sum(ei$values))*100 cumv <- cumsum(percent) n <- which(cumv>q)[1] } # ca <- det((t(ei$vectors[,1:n]) %*% a) %*% ei$vectors[,1:n]) # cb <- det((t(ei$vectors[,1:n]) %*% b) %*% ei$vectors[,1:n]) # d <- prod(ei$values[1:n]) ## use logarithm to avoid numerical underflow log.ca <- determinant((t(ei$vectors[,1:n]) %*% a) %*% ei$vectors[,1:n])$modulus log.cb <- determinant((t(ei$vectors[,1:n]) %*% b) %*% ei$vectors[,1:n])$modulus log.ca <- as.numeric(log.ca); log.cb <- as.numeric(log.cb) log.d <- sum(log(ei$values[1:n])) # ndb <- (1/(2*n)) * log( d / sqrt(ca*cb) ) ndb <- (1/(2*n)) * ( log.d - 0.5 * (log.ca + log.cb) ) bc <- exp( -ndb ) return(bc) } bhattacharyya.array <- function(covs, ncore=NULL, ...) { ncore <- setup.ncore(ncore, bigmem = FALSE) if(ncore>1) mylapply <- mclapply else mylapply <- lapply dims <- dim(covs) m <- dims[3] mat <- matrix(NA, m, m) ##inds <- pairwise(m) inds <- rbind(pairwise(m), matrix(rep(1:m,each=2), ncol=2, byrow=T)) mylist <- mylapply(1:nrow(inds), function(row) { i <- inds[row,1]; j <- inds[row,2]; val <- bhattacharyya.matrix(covs[,,i], covs[,,j], ...) out <- list(val=val, i=i, j=j) cat(".") return(out) }) for ( i in 1:length(mylist)) { tmp <- mylist[[i]] mat[tmp$i, tmp$j] <- tmp$val } mat[ inds[,c(2,1)] ] = mat[ inds ] ##diag(mat) <- rep(1, n) cat("\n") return(round(mat, 6)) } bio3d/R/sse.bridges.R0000644000176200001440000000406714707230357014025 0ustar liggesusers"sse.bridges" <- function(sse, type="helix", hbond=TRUE, energy.cut=-1.0 ) { if(missing(sse)) stop("sse missing") if(is.null(sse$hbonds)) stop("sse$hbonds does not exists. run dssp with 'resno=FALSE' and 'full=TRUE'") natoms <- nrow(sse$hbonds) if(type=="helix") { sse2 <- sse$helix stype <- "H" lim <- 4 } if(type=="sheet") { sse2 <- sse$sheet stype <- "S" lim <- 2 } if(length(sse2$start)==0) return(NULL) ## character array of SSE membership simple.sse <- sse$sse simple.sse[ !(sse$sse %in% c("H", "E", "G", "I")) ] <- "L" simple.sse[ sse$sse %in% c("E") ] <- "S" simple.sse[ sse$sse %in% c("H", "I", "G") ] <- "H" inds <- NULL for ( i in 1:(natoms-lim) ) { if(simple.sse[i]!=stype) next; paired <- NULL if(type=="helix") { paired <- i+4 if(simple.sse[paired]!=stype) next; } if (type=="sheet") { ## bridge pair info paired <- sse$hbonds[i,c("BP1", "BP2")] paired <- paired[ !is.na(paired) ] if(length(paired)==0) next; } if(hbond) { ## H-bond info resid <- sse$hbonds[i, c(3,5,7,9)] energ <- sse$hbonds[i, c(4,6,8,10)] energ <- energ[ !is.na(resid) ] resid <- resid[ !is.na(resid) ] inds.tmp <- which(resid %in% paired) resid <- resid[inds.tmp] energ <- energ[inds.tmp] dups <- duplicated(resid) resid <- resid[ !dups ] energ <- energ[ !dups ] if(length(resid)==0) next; for( j in 1:length(resid) ) { if(energ[j] < energy.cut) inds <- c(inds, i, resid[j]) } } else { for ( j in 1:length(paired) ) { inds <- c(inds, i, paired[j]) } } } if(length(inds)==0) return(NULL) mat <- matrix(inds, ncol=2, byrow=T) mat <- t(apply(mat, 1, sort)) pair.ids <- apply(mat, 1, function(x) paste(x, collapse="-")) mat <- matrix(mat[!duplicated(pair.ids), ], ncol=2) return(mat) } bio3d/R/cov.nma.R0000644000176200001440000000261514707230356013152 0ustar liggesuserscov.nma <- function(nma) { if(!inherits(nma, "nma")) stop("provide a 'nma' object as obtain from function 'nma.pdb()'") dims <- dim(nma$U) cov <- matrix(0, ncol=dims[1], nrow=dims[1]) tmpU <- nma$U[, (nma$triv.modes+1):ncol(nma$U)] tmpL <- nma$L[(nma$triv.modes+1):ncol(nma$U)] for(j in 1:ncol(tmpU) ) { cov <- cov + ( (tmpU[,j] %*% t(tmpU[,j])) / tmpL[j]) } return(cov) } cov.enma <- function(enma, ncore=NULL) { if(!inherits(enma, "enma")) stop("provide a 'enma' object as obtain from function 'nma.pdbs()'") if(any(is.na(enma$fluctuations))) stop("provide 'enma' object calculated with argument 'rm.gaps=TRUE'") ncore <- setup.ncore(ncore, bigmem = FALSE) if(ncore>1) mylapply <- mclapply else mylapply <- lapply if(!inherits(enma, "enma")) stop("provide 'enma' object as obtained from nma.pdbs") dims <- dim(enma$U.subspace) mycalc <- function(i, enma) { cov <- matrix(0, ncol=dims[1], nrow=dims[1]) tmpU <- enma$U.subspace[,,i] tmpL <- enma$L[i,] for(j in 1:ncol(tmpU) ) { cov = cov + ( (tmpU[,j] %*% t(tmpU[,j])) / tmpL[j]) } cat(".") return(cov) } covs.list <- mylapply(1:dims[3L], mycalc, enma) cat("\n") covs <- array(0, dim=c(dims[1], dims[1], dims[3])) for ( i in 1:dims[3L] ) covs[,,i]=covs.list[[i]] return(covs) } .tr <- function(mat) { return(sum(diag(mat))) } bio3d/R/pb.R0000644000176200001440000000231714707230356012211 0ustar liggesusers.init.pb <- function(ncore, min=0, max=1) { if(ncore == 1) { return ( txtProgressBar(min=min, max=max, style=3) ) } else if(ncore > 1) { mcparallel <- get("mcparallel", envir = getNamespace("parallel")) mccollect <- get("mccollect", envir = getNamespace("parallel")) fpb <- fifo(tempfile(), open = "w+b", blocking = T) # spawn a child process for message printing child <- mcparallel({ pb <- txtProgressBar(min=min, max=max, style=3) progress <- 0.0 while(progress < max && !isIncomplete(fpb)) { msg <- readBin(fpb, "double") progress <- progress + as.numeric(msg) setTxtProgressBar(pb, progress) } close(pb) } ) names(fpb) <- child$pid return(fpb) } } .update.pb <- function(pb, step=1) { if(inherits(pb, "txtProgressBar")) { i <- getTxtProgressBar(pb) setTxtProgressBar(pb, i+step) } else { if(inherits(pb, "fifo")) writeBin(step, pb) } } .close.pb <- function(pb) { if(inherits(pb, "fifo")) { mccollect <- get("mccollect", envir = getNamespace("parallel")) mccollect(as.numeric(names(pb))) # mccollect(as.numeric(names(pb))) } close(pb) } bio3d/R/xyz2atom.R0000644000176200001440000000011314707230357013376 0ustar liggesusersxyz2atom <- function(xyz.ind) { return( unique( ceiling(xyz.ind/3) ) ) } bio3d/R/dssp.xyz.R0000644000176200001440000000076114707230356013413 0ustar liggesusersdssp.xyz <- function(xyz, pdb, ...) { if(!is.pdb(pdb)) stop("provide a pdb object as obtained from function 'read.pdb'") if(!is.xyz(xyz) && !is.matrix(xyz)) stop("provide an xyz object containing the trajectory coordinates") sse.mat <- NULL dims <- dim(xyz) for (i in 1:dims[1L]) { pdb.tmp <- pdb pdb.tmp$xyz <- as.xyz(xyz[i,]) sse <- dssp.pdb(pdb.tmp, ...)$sse sse.mat <- rbind(sse.mat, sse) } ##sse.mat[ sse.mat==" " ] <- "-" return(sse.mat) } bio3d/R/com.R0000644000176200001440000000005214707230356012360 0ustar liggesusers"com" <- function(...) UseMethod("com") bio3d/R/pca.tor.R0000644000176200001440000000045414707230356013156 0ustar liggesusers"pca.tor" <- function(data, ... ) { data[data < 0] <- data[data < 0] + 360 data[data < -180] <- data[data < -180] + 360 data[data > 180] <- data[data > 180] - 360 ##cat("Rescaled (-180 to 180) and corrected for periodicity\n") data <- wrap.tor(data) return( pca.xyz(data, ...) ) } bio3d/R/as.xyz.R0000644000176200001440000000035114707230356013040 0ustar liggesusers"as.xyz" <- function(x) { if(is.vector(x)) x = matrix(x, nrow=1) dims <- dim(x) if(!(dims[2L]%%3==0)) warning("number of cartesian coordinates not a multiple of 3") class(x) <- c("xyz", "matrix") return(x) } bio3d/R/dccm.R0000644000176200001440000000037414707230356012517 0ustar liggesusers`dccm` <- function(x, ...) { if(inherits(x, "matrix")) { class(x) <- c("matrix", "xyz") UseMethod("dccm", x) } else if(inherits(x, "array")) { class(x) <- c("matrix", "mean") UseMethod("dccm", x) } else UseMethod("dccm") } bio3d/R/print.select.R0000644000176200001440000000122114707230357014214 0ustar liggesusersprint.select <- function(x, ...){ ## Print a summary of atom selection object features if(!inherits(x, "select")) { stop("Input should be a 'select' object, as obtained from 'atom.select()'") } cat("\n Call: ", paste(deparse(x$call), sep = "\n", collapse = "\n"), "\n", sep = "") cat( paste0("\n Atom Indices#: ", length(x$atom), " ($atom)", "\n XYZ Indices#: ",length(x$xyz), " ($xyz)\n\n" ) ) ## Add call if( length(x$atom) != (length(x$xyz)/3) ) warning("Atom and XYZ Indices Miss-Match") i <- paste(attributes(x)$names, collapse = ", ") cat(strwrap(paste(" + attr:", i), width = 45, exdent = 8), sep = "\n") } bio3d/R/pca.R0000644000176200001440000000027014707230356012347 0ustar liggesusers"pca" <- function(...) { dots <- list(...) if(inherits(dots[[1]], "matrix")) { class(dots[[1]]) <- c("matrix", "xyz") UseMethod("pca", dots[[1]]) } UseMethod("pca") } bio3d/R/geostas.R0000644000176200001440000001156314707230356013260 0ustar liggesusers geostas <- function(...) UseMethod("geostas") geostas.nma <- function(nma, m.inds=7:11, verbose=TRUE, ...) { if(verbose) cat(" .. generating trajectory from", length(m.inds), "modes\n") trj <- NULL for(i in m.inds) { trj <- rbind(trj, mktrj(nma, mode=i, rock=FALSE)) } gs <- geostas.xyz(trj, verbose=verbose, ...) return(gs) } geostas.enma <- function(enma, pdbs=NULL, m.inds=1:5, verbose=TRUE, ...) { if(!inherits(enma, "enma")) stop("provide an 'enma' object as obtained by function 'nma.pdbs()'") if(!inherits(pdbs, "pdbs")) stop("provide an 'pdbs' object as obtained by function 'pdbaln' or 'read.fasta.pdb'") if(verbose) cat(" .. generating trajectory from", length(m.inds), "modes\n") trj <- mktrj(enma, pdbs, m.inds=m.inds, rock=FALSE, ...) gs <- geostas.xyz(trj, verbose=verbose, ...) return(gs) } geostas.pdb <- function(pdb, inds=NULL, verbose=TRUE, ...) { if(!is.pdb(pdb)) stop("provide a 'pdb' object as obtained from function 'read.pdb'") if(!nrow(pdb$xyz)>2) stop("provide a multi-model (>2) 'pdb' with more than ") if(is.null(inds)) { inds <- atom.select(pdb, "calpha") if(verbose) cat(" ..", length(inds$atom), "'calpha' atoms selected\n") } xyz <- pdb$xyz[,inds$xyz] gs <- geostas.xyz(xyz, verbose=verbose, ...) ## map back so that indices matches input 'pdb' if(verbose) { cat(" .. converting indices to match input 'pdb' object \n") cat(" (additional attribute 'atomgrps' generated) \n") } gs$fit.inds <- inds$xyz[gs$fit.inds] resid <- paste(pdb$atom$resid, pdb$atom$resno, pdb$atom$chain, sep="-") grps <- rep(NA, nrow(pdb$atom)) for(i in 1:length(gs$inds)) { gs$inds[[i]] <- as.select(inds$atom[gs$inds[[i]]$atom]) gs$inds[[i]]$call <- NA tmp.inds <- which(resid %in% resid[ gs$inds[[i]]$atom ]) grps[ tmp.inds ] <- i } gs$atomgrps <- grps return(gs) } geostas.pdbs <- function(pdbs, verbose=TRUE, ...) { if(!inherits(pdbs, "pdbs")) stop("provide an 'pdbs' object as obtained by function 'pdbaln' or 'read.fasta.pdb'") ## identify non-gap regions gaps.res <- gap.inspect(pdbs$ali) gaps.pos <- gap.inspect(pdbs$xyz) if(verbose) cat(" ..", length(gaps.pos$f.inds), "non-gap positions selected\n") xyz <- pdbs$xyz[, gaps.pos$f.inds] gs <- geostas.xyz(xyz, verbose=verbose, ...) ## map back so that indices matches input 'pdbs' gs$fit.inds <- gaps.pos$f.inds[gs$fit.inds] grps <- rep(NA, ncol(pdbs$ali)) for(i in 1:length(gs$inds)) { gs$inds[[i]] <- as.select(gaps.res$f.inds[ gs$inds[[i]]$atom ]) gs$inds[[i]]$call <- NA grps[ gs$inds[[i]]$atom ] <- i } return(gs) } geostas.default <- function(...) geostas.xyz(...) geostas.xyz <- function(xyz, amsm=NULL, k=3, pairwise=TRUE, clustalg="kmeans", fit=TRUE, ncore=NULL, verbose=TRUE, ...) { cl <- match.call() xyz <- as.xyz(xyz) if(!nrow(xyz)>2) stop("provide a trajectory (e.g xyz object) with multiple (>2) frames") if(verbose) cat(" .. 'xyz' coordinate data with", nrow(xyz), "frames \n") if(!clustalg %in% c("hclust", "kmeans")) stop("'clustalg' should be 'kmeans' or 'hclust'") if(k<2) stop("provide 'k>1'") if(fit & is.null(amsm)) { if(verbose) cat(" .. 'fit=TRUE': running function 'core.find'\n") invisible(capture.output( core <- core.find(xyz) )) fit.inds <- core$xyz xyz <- fit.xyz(xyz[1,], xyz, fixed.inds=fit.inds, mobile.inds=fit.inds, ncore=ncore) if(is.null(fit.inds)) warning("core indices not found. fitting to all atoms") if(verbose) cat(" .. coordinates are superimposed to core region\n") } else { if(verbose) cat(" .. coordinates are not superimposed prior to geostas calculation\n") fit.inds <- NULL } if(is.null(amsm)) { if(verbose) cat(" .. calculating atomic movement similarity matrix ('amsm.xyz()') \n") amsm <- amsm.xyz(xyz, ncore=ncore) dims <- dim(amsm) if(verbose) cat(" .. dimensions of AMSM are ", dims[1], "x", dims[2], "\n", sep="") } else { if(!all(dim(amsm)==ncol(xyz)/3)) stop("dimension mismatch ('xyz' and 'amsm')") } if(pairwise) { cm <- 1-amsm } else { cm.tmp <- normalize.vector(amsm) cm <- 1 - apply(cm.tmp, 2, function(x,y) x %*% y, cm.tmp) } ## hierarchical clustering if(clustalg=="hclust") { if(verbose) cat(" .. clustering AMSM using 'hclust' \n") dis <- as.dist(cm) hc <- hclust(dis, ...) grps <- cutree(hc, k=k) } ## k-means clustering if(clustalg=="kmeans") { if(verbose) cat(" .. clustering AMSM using 'kmeans' \n") grps <- kmeans(cm, centers=k, ...)$cluster } ## return indices for the identified domains inds <- list() for(i in 1:length(unique(grps))) { inds[[i]] <- as.select(grps==i) } out <- list(call=cl, amsm=amsm, fit.inds=fit.inds, grps=grps, inds=inds) class(out) <- "geostas" return(out) } bio3d/R/chain.pdb.R0000644000176200001440000000756614707230356013451 0ustar liggesusers`chain.pdb` <- function(pdb, ca.dist=4, bond=TRUE, bond.dist=1.5, blank="X", rtn.vec=TRUE) { ##- Find possible chian breaks ## i.e. Concetive Caplpa's that are further than 'ca.dist' apart, ## print basic chain info and rtn a vector of chain ids ## consisting of the 26 upper-case letters of the Roman ## alphabet ## ## chn <- chain.pdb(pdb) ## pdb$atom[,"chain"] <- chain.pdb(pdb) ## ## Distance between concetive C-alphas ca <- atom.select(pdb, "calpha", verbose=FALSE) if(length(ca$atom) <=1) { d <- 0 } else { if(bond) { nn <- atom.select(pdb, "protein", elety="N", verbose=FALSE) cc <- atom.select(pdb, "protein", elety="C", verbose=FALSE) ca.labs <- paste(pdb$atom$chain[ca$atom], pdb$atom$resno[ca$atom], pdb$atom$insert[ca$atom], sep="_") nn.labs <- paste(pdb$atom$chain[nn$atom], pdb$atom$resno[nn$atom], pdb$atom$insert[nn$atom], sep="_") cc.labs <- paste(pdb$atom$chain[cc$atom], pdb$atom$resno[cc$atom], pdb$atom$insert[cc$atom], sep="_") # Check if N-C is available; if not, use CA-CA distance hasN <- rep(FALSE, length(ca.labs)) hasC <- rep(FALSE, length(ca.labs)) hasN[ca.labs %in% nn.labs] <- TRUE hasC[ca.labs %in% cc.labs] <- TRUE hasNC <- hasC[-length(hasC)] & hasN[-1] useC.labs <- ca.labs[which(hasNC)] useN.labs <- ca.labs[which(hasNC)+1] sel1 <- as.select( sort( c(ca$atom[which(!hasNC)], cc$atom[cc.labs %in% useC.labs]) ) ) sel2 <- as.select( sort( c(ca$atom[which(!hasNC)+1], nn$atom[nn.labs %in% useN.labs]) ) ) if(sum(!hasNC) > 0) { # Use mixed distance cutoff values bond.dist <- rep(bond.dist, length(hasNC)) bond.dist[!hasNC] <- ca.dist } else if(sum(hasNC) == 0) { warning("No valid N-C bond to check; Use CA-CA distances") bond.dist <- ca.dist } # if(length(ca$atom) != length(nn$atom) || # length(ca$atom) != length(cc$atom)) { # warning("Peptide bond atoms (N/C) and C-alpha atoms mismatch. Switch to bond=FALSE.") # bond <- FALSE # } else { xyz1 <- pdb$xyz[sel1$xyz] xyz2 <- pdb$xyz[sel2$xyz] d <- dist.xyz(xyz1, xyz2, all.pairs=FALSE) # d <- d[!is.na(d)] # } } if(!bond) { xyz <- matrix(pdb$xyz[ca$xyz], nrow=3) if(length(ca$atom) == 2) d <- sqrt( sum( apply(xyz , 1, diff)^2 ) ) else d <- sqrt( rowSums( apply(xyz , 1, diff)^2 ) ) } } ## Chain break distance check if(bond) { ind <- which(d > bond.dist) } else { ind <- which(d > ca.dist) } len <- diff( c(1,ind,length(d)) ) cat(paste("\t Found",length(ind), "possible chain breaks\n")) if(length(ind) > 0) { cat(paste("\t After resno(s):", paste( pdb$atom[ca$atom,"resno"][(ind)], collapse=", " ),"\n" )) cat(paste("\t Chain length(s):", paste(len+1, collapse=", " ),"\n" )) } ## Make a chain id vector if(rtn.vec) { resno.ind <- as.numeric(c(1, sort(as.numeric(c(ind,(ind+1)))), (length(d)+1) )) ## Renumber residues first, in case that original resnos are not ## consecutive crossing multiple chains res <- paste(pdb$atom[, "chain"], pdb$atom[, "resno"], pdb$atom[, "insert"], sep="_") pdb$atom[, "resno"] <- vec2resno(1:length(unique(res)), res) resno.val <- pdb$atom[ca$atom,"resno"][resno.ind] resno.val <- matrix(as.numeric(resno.val),nrow=2) vec <- rep(blank, nrow(pdb$atom)) if(is.na(resno.val[1])) { return(vec) } else if(is.na(resno.val[2])) { resno.val[2] <- resno.val[1] } for(i in 1:(length(resno.val)/2)) { sel.ind <- atom.select(pdb, resno=c(resno.val[1,i]:resno.val[2,i]), verbose=FALSE) vec[sel.ind$atom]=LETTERS[i] } return(vec) } } bio3d/R/print.pca.R0000644000176200001440000000156714707230357013515 0ustar liggesusers"print.pca" <- function(x, nmodes=6, ...) { cn <- class(x) cat("\nCall:\n ", paste(deparse(x$call), sep = "\n", collapse = "\n"), "\n\n", sep = "") cat("Class:\n ", cn, "\n\n", sep = "") cat("Number of eigenvalues:\n ", length(x$L), "\n\n", sep="") inds <- 1:nmodes e <- round(x$L[inds], 3) p <- (x$L[inds]/sum(x$L)) * 100 d <- data.frame( "Eigenvalue"=e, "Variance"=round(p,3), "Cumulative"=round(cumsum(p),3), row.names = paste(" PC",inds)) #cat("Eigenvalues:\n", sep="") print(d) cat("\n",paste(" (Obtained from", nrow(x$z), "conformers with", ncol(x$z), "xyz input values).")) i <- paste( attributes(x)$names, collapse=", ") cat("\n",strwrap(paste(" + attr:",i,"\n"),width=60, exdent=8), sep="\n") invisible(d) } bio3d/R/mktrj.nma.R0000644000176200001440000000407514707230356013514 0ustar liggesusers"mktrj.nma" <- function(nma = NULL, # nma data structure mode = 7, # which mode to move along mag = 10, # magnification factor step = 1.25, # step size file = NULL, # output pdb file pdb = NULL, # pdb structure object rock = TRUE, ... ) { # args for write.pdb ## make a trjactory of atomic displacments along a given mode if(!inherits(nma, "nma")) stop("mktrj.nma: must supply 'nma' object, i.e. from 'nma'") if(is.null(file)) file <- paste("mode_", mode, ".pdb", sep="") #if(nma$L[mode]<=0) # stop("Mode with eigenvalue <=0 detected. Check 'mode' index.") xyz <- as.vector(nma$xyz) nstep <- c(seq(step, to=mag, by=step)) #zcoor <- cbind(sqrt(nma$L[mode])) %*% nstep zcoor <- cbind(1) %*% nstep scor <- function(x,u,m) { return(x*u+m) } plus <- sapply(c(zcoor), scor, u=nma$modes[,mode], m=xyz) minus <- sapply(c(-zcoor), scor, u=nma$modes[,mode], m=xyz) if(rock) { coor <- cbind(xyz, plus, plus[,rev(1:ncol(plus))], xyz, minus, minus[,rev(1:ncol(minus))]) } else { coor <- cbind(plus[,rev(1:ncol(plus))], xyz, minus) } coor <- as.xyz(t(coor)) pdb.out <- NULL if(!is.null(pdb)) { if(!is.pdb(pdb)) stop("provide a 'pdb' object as obtained from 'read.pdb()'") ## guess the configuration of the nma/pdb object natoms <- length(nma$xyz) / 3 if(nrow(pdb$atom) == natoms) pdb.out <- pdb else if(length(atom.select(pdb, "calpha")$atom) == natoms) pdb.out <- trim(pdb, "calpha") else if(length(atom.select(pdb, "noh")$atom) == natoms) pdb.out <- trim(pdb, "noh") else { warning("'nma' and 'pdb' mismatch. Input argument 'pdb' will be ignored") pdb.out <- NULL } } write.pdb(xyz=coor, pdb=pdb.out, file=file, ...) invisible(coor) } bio3d/R/plot.fluct.R0000644000176200001440000001342314707230357013703 0ustar liggesusers"plot.fluct" <- function(x, col = NULL, label = rownames(x), signif = FALSE, p.cutoff = 0.005, q.cutoff = 0.04, s.cutoff = 5, n.cutoff = 2, mean = FALSE, polygon = FALSE, spread=FALSE, offset=1, ncore = NULL, ...) { ## check input data if(is.vector(x)) x = matrix(x, nrow=1) if(!is.matrix(x) || !is.numeric(x)) stop("provide a numeric matrix or vector") ## check colors, which also define groups of input data if signif=TRUE if(is.null(col)) col <- seq(1, nrow(x)) if(length(col) != nrow(x)) stop("length of col doesn't match dimension of x") if(any(is.na(col))) { x = x[!is.na(col), ] col = col[!is.na(col)] } ## check for significance calculation if(signif) { ns <- table(col) inds.signif <- which(ns >= s.cutoff) if(length(inds.signif) < 2) { warning("Insufficient samples to calculate significance") signif = FALSE } } ## extract some values from '...' since we still do some plots here ## These could be removed after merging this function with plot.bio3d() dots = list(...) if("rm.gaps" %in% names(dots)) rm.gaps = dots$rm.gaps else rm.gaps = formals(plotb3)$rm.gaps ## gaps positions gaps.pos <- gap.inspect(x) if(rm.gaps) yvals = x[, gaps.pos$f.inds, drop=FALSE] else yvals = x if("ylim2zero" %in% names(dots)) ylim2zero = dots$ylim2zero else ylim2zero = formals(plotb3)$ylim2zero if("xlim" %in% names(dots)) xlim = dots$xlim else xlim = c(1, ncol(yvals)) if("ylim" %in% names(dots)) ylim = dots$ylim else ylim = range(yvals, na.rm = TRUE) if(spread) { ylim[2] = ylim[2] + (offset * (length(unique(col))-1)) } if(ylim2zero) ylim[1] = 0 if(! "ylab" %in% names(dots)) dots$ylab = "Fluctuation" dots$xlim = xlim dots$ylim = ylim ##################################################################### if(signif) { ncore = setup.ncore(ncore) # op = par(no.readonly = TRUE) op = par()$new on.exit(par(new=op)) pairs <- pairwise(length(inds.signif)) ## get p-value and q-value for each non-gap position p.all <- mclapply(gaps.pos$f.inds, function(i) { p.i <- apply(pairs, 1, function(j) { inds1 <- which(col == names(ns)[inds.signif[j[1]]]) inds2 <- which(col == names(ns)[inds.signif[j[2]]]) p = t.test(x[inds1, i], x[inds2,i], alternative="two.sided")$p.value q <- abs(mean(x[inds1, i]) - mean(x[inds2, i])) c(p, q) }) c(p=min(p.i[1, ]), q=p.i[2, which.min(p.i[1,])]) }) ## p-values with gaps inserted pvalue <- rep(NA, ncol(x)) pvalue[gaps.pos$f.inds] <- sapply(p.all, "[", "p") ## q-values, i.e. difference of mean values, with gaps inserted qvalue <- rep(NA, ncol(x)) qvalue[gaps.pos$f.inds] <- sapply(p.all, "[", "q") if(rm.gaps){ pvalue = pvalue[gaps.pos$f.inds] qvalue = qvalue[gaps.pos$f.inds] } sig <- which(pvalue<=p.cutoff & qvalue >= q.cutoff) ## - start plotting if(length(sig) > 0) { ## Plot significance as shaded blocks bds <- bounds(sig) ii <- which(bds[, "length"] >= n.cutoff) if(length(ii) > 0) { plot.new() plot.window(xlim=xlim, ylim=ylim) ## to show bricks for single site significance adjust = 0.1 rect(bds[ii,1]-adjust, rep(ylim[1], length(ii)), bds[ii,2]+adjust, rep(ylim[2], length(ii)), col=rep("lightblue", length(ii)), border=NA) ## add this for plot.bio3d on the same device par(new=TRUE) } } } if(mean) { # calculate mean values and replace yvals = apply(x, 2, tapply, col, mean, na.rm=TRUE) col = unique(col) if(!is.null(label)) label = unique(label) if(!is.matrix(yvals)) yvals = matrix(yvals, nrow=1) else yvals = yvals[col, , drop=FALSE] # correct order change due to tapply # still keep the same gaps in first row # this will help plot SSE in plot.bio3d() yvals[1, is.na(x[1, ])] = NA x = yvals if(rm.gaps) yvals = x[, gaps.pos$f.inds, drop=FALSE] # trick to leave gap position unchanged. # Won't affect plot because plot.bio3d() only picks up the first row # All plots in this function should be done with yvals!! x = rbind(x, gap.mark=rep(0, ncol(x))) x["gap.mark", gaps.pos$t.inds] = NA } ## Plot fluctuations if(polygon) { spread <- FALSE dots$type = "n" do.call(plot.bio3d, c(list(x=x), dots)) xx = yvals[1, ] ylim2 = range(xx, na.rm = TRUE) if(ylim2zero) ylim2[1] = 0 n = bounds(which(is.na(xx))) if(length(n)>0) xx[n[, 1:2]] = ylim2[1] # color for polygon n.col = do.call(rgb, c(as.list(col2rgb(col[1])/255), list(alpha=0.4))) polygon(c(1, seq_along(xx), length(xx)), c(ylim2[1], xx, ylim2[1]), col = n.col, border=NA) } else { do.call(plot.bio3d, c(list(x=x), dots)) } if(!spread) { ## Plot all lines for(i in 1:nrow(yvals)) lines(yvals[i, ], col=col[i], lwd=2) } else { unq.col <- unique(col) for(i in 1:length(unq.col)) { tmp.col <- unq.col[i] grp.inds <- which(col==tmp.col) off <- ((i-1)* offset) for(j in 1:length(grp.inds)) lines(yvals[grp.inds[j], ] + off, col=tmp.col) } } ## legend if(!is.null(label)) legend('topright', legend=label, text.col=col, bty='n') if(signif) out <- list(signif=sig) else out <- NULL invisible(out) } bio3d/R/pymol.dccm.R0000644000176200001440000001572414707230357013664 0ustar liggesuserspymol.dccm <- function(dccm, pdb, file=NULL, step=0.2, omit=0.2, radius = 0.15, type="script", exefile = "pymol", ...) { allowed <- c("session", "script", "launch", "pdb") if(!type %in% allowed) { stop(paste("input argument 'type' must be either of:", paste(allowed, collapse=", "))) } if(type %in% "pdb") pymol <- FALSE else pymol <- TRUE ## Check if the program is executable if(type %in% c("session", "launch")) { ## determine path to exefile exefile1 <- .get.exepath(exefile) ## Check if the program is executable success <- .test.exefile(exefile1) if(!success) { stop(paste("Launching external program failed\n", " make sure '", exefile, "' is in your search path", sep="")) } exefile <- exefile1 } if(is.pdb(pdb)) { ca.inds <- atom.select(pdb, 'calpha', verbose=FALSE) bb.inds <- atom.select(pdb, 'backbone', verbose=FALSE) xyz <- pdb$xyz[ca.inds$xyz] ## If more than CA atoms are provided, assume its enough to draw cartoon in pymol if(length(pdb$xyz[bb.inds$xyz])==length(xyz)) ca.pdb <- TRUE else ca.pdb <- FALSE } else { xyz <- pdb } if(missing(dccm)) stop("correlation matrix must be provided") if(missing(xyz)) stop("cartesian coordinates missing") if(is.matrix(radius)) { if(!all(dim(dccm) == dim(radius))) stop("dimension mismatch. provide a 'radius' matrix with the same dimensions as 'dccm'") } dims <- dim(dccm) if((length(xyz)/3)!=dims[1L]) stop("unequal vector lengths") if(is.null(file)) { if(type=="session") file <- "R.pse" if(type=="script") file <- "R.py" if(type=="pdb") file <- "R.pdb" } ## use temp-dir unless we output a PML script if(type %in% c("session", "launch")) tdir <- tempdir() else tdir <- "." psefile <- tempfile(tmpdir=tdir, fileext=".pse") pyfile <- tempfile(tmpdir=tdir, fileext=".py") pdbfile <- tempfile(tmpdir=tdir, fileext=".pdb") ## Build the new PDB or pymol script in a vector scr <- c() if(pymol) { ## start pymol script scr <- c("from pymol import cmd") scr <- c(scr, "from pymol.cgo import *") scr <- c(scr, paste("cmd.load('", normalizePath(pdbfile, winslash='/', mustWork=FALSE), "', 'prot')", sep="")) scr <- c(scr, "cmd.show('cartoon')") if(!is.pdb(pdb) || ca.pdb) scr <- c(scr, "cmd.set('cartoon_trace_atoms', 1)") ## define color range blues <- colorRamp(c("white", "blue")) reds <- colorRamp(c("white", "red")) w <- radius } else { m <- 0 } ## mask lower tri of correlation matrix dccm[lower.tri(dccm, diag=TRUE)] <- NA lims <- c(-1, 1) intervals <- seq(lims[1], lims[2], by=step) ## get rid of interval around 0 if(!is.null(omit)) { i <- which(intervals>(omit-0.001)) j <- which(intervals<(-omit+0.001)) inds <- sort(c(i,j)) intervals <- sort(intervals[inds]) } for ( i in 1:(length(intervals)-1) ) { lower <- intervals[i] upper <- intervals[i+1] if(lower<0 && upper>0) next ## make the positive and negative distributions symmetric if(lower<0) sele <- intersect( which(dccm>=lower), which(dccmlower), which(dccm<=upper) ) if(length(sele)==0) next f <- matrix(FALSE, ncol(dccm), nrow(dccm)) f[sele] <- TRUE inds <- which(f, arr.ind=TRUE) if(pymol) { scr <- c(scr, "obj=[]") } else { m <- m+1 chain <- LETTERS[m] } for ( j in 1:nrow(inds) ) { x <- inds[j,1]; y <- inds[j,2]; if(x==y) next val <- dccm[x,y] ## corr coeff k <- atom2xyz(inds[j,1]) ## resi 1 l <- atom2xyz(inds[j,2]) ## resi 2 if(is.matrix(w)) w2 <- abs(w[x, y]) else w2 <- w if(pymol) { a <- paste(xyz[k], collapse=",") b <- paste(xyz[l], collapse=",") if(val<=0) col <- blues( abs(val) ) else col <- reds( abs(val) ) col <- round(col/256,4) col <- paste(col, collapse=", ") str <- paste("obj.extend([CYLINDER", a, b, w2, col, col, "])", sep=", ") scr <- c(scr, str) } else { a <- paste(format(xyz[k], justify="right", width=8), collapse="") b <- paste(format(xyz[l], justify="right", width=8), collapse="") val <- format(round(val,2), justify="right", width=6) res.str <- format(x, justify="right", width=4) str <- paste("ATOM ", res.str, " CA ALA ", chain, res.str, " ", a, " 0.00", val, sep="") scr <- c(scr, str) res.str <- format(y, justify="right", width=4) str <- paste("ATOM ", res.str, " CA ALA ", chain, res.str, " ", b, " 0.00", val, sep="") scr <- c(scr, str) str <- paste("CONECT", format(x, justify="right", width=5), format(y, justify="right", width=5), sep="") scr <- c(scr, str) } } if(pymol) { tmpa <- gsub("\\.", "", as.character(lower)) tmpb <- gsub("\\.", "", as.character(upper)) name <- paste("cor_", tmpa, "_", tmpb, sep="") str <- paste("cmd.load_cgo(obj, '", name, "')", sep="") scr <- c(scr, str) } else { str <- "TER" scr <- c(scr, str) } } if(type == "session") { scr <- c(scr, paste0("cmd.save('", normalizePath(psefile, winslash='/', mustWork=FALSE), "')")) } ## Write python script or PDB with conect records if(pymol) { write(scr, file=pyfile, sep="\n") ## Write PDB structure file if(is.pdb(pdb)) write.pdb(pdb, file=pdbfile) else write.pdb(xyz=xyz, file=pdbfile) } else { write(scr, file=pdbfile, sep="\n") } if(type %in% c("session", "launch")) { if(type == "session") args <- "-cq" else args <- "" ## Open pymol cmd <- paste(exefile, args, pyfile) os1 <- Sys.info()["sysname"] if (os1 == "Windows") { status <- shell(paste(shQuote(exefile), args, pyfile)) } else { status <- system(cmd) } if(!(status %in% c(0,1))) { stop(paste("An error occurred while running command\n '", exefile, "'", sep="")) } } if(type == "session") { file.copy(psefile, file, overwrite=TRUE) message(paste("PyMOL session written to file", file)) invisible(file) } if(type == "script") { file.copy(pyfile, file, overwrite=TRUE) unlink(pyfile) message(paste("PyMOL script written to file", file)) invisible(file) } if(type == "pdb") { file.copy(pdbfile, file, overwrite=TRUE) unlink(pdbfile) message(paste("PDB written to file", file)) invisible(file) } } bio3d/R/is.xyz.R0000644000176200001440000000005314707230356013047 0ustar liggesusersis.xyz <- function(x) inherits(x, "xyz") bio3d/R/setup.ncore.R0000644000176200001440000000221714707230357014055 0ustar liggesuserssetup.ncore <- function(ncore, bigmem = FALSE) { if(is.null(ncore) || ncore > 1) { os1 <- .Platform$OS.type if(os1 == "windows") { if(is.null(ncore)) ncore = 1 else stop("Multicore is NOT supported in Windows (Set ncore = 1 or NULL)") } else { if(bigmem) { oops <- requireNamespace("bigmemory", quietly = TRUE) if(!oops) { if(is.null(ncore)) ncore <- 1 else stop("Please install the bigmemory package from CRAN for running with multicore") } } if(is.null(ncore)) ncore = parallel::detectCores() ## parallel::detectCores() returns 'NA' if the answer is unknown if(is.na(ncore)) ncore <- 1 # Following lines check R internal varible for potential limit on multicore usage # Normally it does nothing, but will be helpful in running `R CMD check --as-cran` if(ncore > 1) { chk <- tolower(Sys.getenv("_R_CHECK_LIMIT_CORES_", "")) if (nzchar(chk) && (chk != "false")) ncore = 1 } } } options(mc.cores = ncore) return(ncore) } bio3d/R/dccm.xyz.R0000644000176200001440000001003114707230356013337 0ustar liggesusers`dccm.xyz` <- function(x, reference=NULL, grpby=NULL, method=c("pearson", "lmi"), ncore=1, nseg.scale=1, ... ) { method = match.arg(method) xyz <- x # Parallelized by parallel package (Wed Dec 12 18:36:39 EST 2012) ncore <- setup.ncore(ncore) if(is.null(reference)) { ref = colMeans(xyz) } else { ref = reference } dxyz <- sweep(xyz, 2, ref) covmat <- cov(dxyz) if(!is.null(reference)) { # moment instead of covariance mxyz <- colMeans(dxyz) covmat <- covmat + outer(mxyz, mxyz) } ccmat <- .cov2dccm(covmat, method = method, ncore = ncore) if(is.null(grpby)) { return(ccmat) } else { ##- Group by concetive numbers in 'grpby' if( ncol(xyz) != (length(grpby)*3) ) stop("dimension miss-match in 'xyz' and 'grpby', check lengths") ##- Bounds of 'grpby' numbers inds <- bounds(grpby, dup.inds=TRUE) nres <- nrow(inds) ##- Per-residue matrix m <- matrix(, ncol=nres, nrow=nres) ij <- pairwise(nres) ##- Max (absolute value) per residue for(k in 1 : nrow(ij) ) { m[ij[k,1],ij[k,2]] <- min( ccmat[ (inds[ij[k,1],"start"]:inds[ij[k,1],"end"]), (inds[ij[k,2],"start"]:inds[ij[k,2],"end"])], na.rm=TRUE ) tmax <- max( ccmat[ (inds[ij[k,1],"start"]:inds[ij[k,1],"end"]), (inds[ij[k,2],"start"]:inds[ij[k,2],"end"])], na.rm=TRUE ) if(tmax > abs(m[ij[k,1],ij[k,2]])) m[ij[k,1],ij[k,2]] = tmax } # if( !mask.lower ) m[lower.tri(m)] = t(m)[lower.tri(m)] diag(m) <- 1 class(m)=c("dccm","matrix") return(m) } } # This internal function calculates the N-by-N cross-correlation matrix # directly from a 3N-by-3N variance-covariance matrix. .cov2dccm <- function(vcov, method = c("pearson", "lmi"), ncore = NULL) { method = match.arg(method) ncore = setup.ncore(ncore) if(ncore == 1) mclapply = lapply x <- vcov ccmat = switch(method, pearson = { n <- nrow(x) np <- pairwise(n/3) d <- sqrt(colSums(matrix(diag(x), nrow=3))) ltv <- mclapply(1:nrow(np), function(i) { i1 <- (np[i, 2] - 1) * 3 + 1 i2 <- (np[i, 1] - 1) * 3 + 1 sum(diag(x[i1:(i1+2), i2:(i2+2)]))/ # sum of diagnol of submatrix (d[np[i, 2]] * d[np[i, 1]]) # divided by product of standard deviations } ) ccmat <- matrix(0, n/3, n/3) ccmat[lower.tri(ccmat)] <- unlist(ltv) # make full matrix ccmat <- ccmat + t(ccmat) diag(ccmat) <- 1 ccmat }, lmi = { # rm:r-value matrix cm <- x l <- dim(cm)[1]/3 rm <- matrix(nrow=l, ncol=l) d <- 3 ij <- pairwise(l) # list1: marginal-covariance list1 <- mclapply(1:l, function(i) det(cm[(3*i-2):(3*i), (3*i-2):(3*i)]) ) dm <- unlist(list1) # list2: pair-covariance list2 <- mclapply(1:nrow(ij), function(i) { x <- det(cm[c((3*ij[i,1]-2):(3*ij[i,1]),(3*ij[i,2]-2):(3*ij[i,2])), c((3*ij[i,1]-2):(3*ij[i,1]),(3*ij[i,2]-2):(3*ij[i,2]))]) y <- 1/2 * (log(dm[ij[i,1]]) + log(dm[ij[i,2]]) - log(x)) (1 - exp(-2 * y / d))^(1/2) } ) list2 <- unlist(list2) for (k in 1:nrow(ij)) { rm[ij[k, 1], ij[k, 2]] <- list2[k] } rm[lower.tri(rm)] = t(rm)[lower.tri(rm)] diag(rm) <- 1 rm } ) class(ccmat)=c("dccm","matrix") return(ccmat) } bio3d/R/cnapath.R0000644000176200001440000001412414707250016013220 0ustar liggesusers# Correlation network suboptimal path analysis # # Reference # Yen, J.Y. (1971) Finding the K Shortest Loopless Paths in a Network. # Management Science. 17(11):712-716. cnapath <- function(cna, from, to=NULL, k=10, collapse=TRUE, ncore=NULL, ...) { oops <- requireNamespace("igraph", quietly = TRUE) if (!oops) stop("igraph package missing: Please install, see: ?install.packages") if(!inherits(cna, "cna")) { if(is.list(cna)) { paths <- lapply(cna, cnapath, from=from, to=to, k=k, collapse=collapse, ncore=ncore, ...) class(paths) <- c("ecnapath", class(paths)) return( paths ) } stop("Input cna is not a 'cna' object") } ncore = setup.ncore(ncore) pairs <- NULL if(is.null(to)) { if(is.matrix(from)) { pairs <- apply(from, 1, function(x) list(from=x[1], to=x[2])) } else { # all other nodes as sink to <- setdiff(seq_along(igraph::V(cna$network)), from) } } if(is.null(pairs)) { from <- unique(from); to <- unique(to) for(i in 1:length(from)) for(j in 1:length(to)) pairs <- c(pairs, list(list(from=from[i], to=to[j]))) } ## Initialize progress bar pb <- .init.pb(ncore, min=0, max=k*length(pairs)) ## optimize ncore partition ncore.out <- ifelse(ncore < length(pairs), ncore, length(pairs)) ncore.in <- as.integer(floor(ncore / ncore.out)) paths <- mclapply(pairs, function(x) .cnapath.core(cna=cna, from=x$from, to=x$to, k=k, ncore=ncore.in, pb=pb, ...), mc.cores=ncore.out) rm.inds <- sapply(paths, is.null) if(sum(rm.inds) == length(paths)) { warning(paste(" No path found.\n", " Please check if the network contains isolated parts!\n\n", sep="")) paths <- NULL } else { if(collapse) { paths <- paths[!rm.inds] cls <- class(paths[[1]]) coms <- names(paths[[1]]) paths <- lapply(coms, function(x) do.call(c, lapply(paths, "[[", x)) ) names(paths) <- coms if(length(from)>1 || length(to)>1) { # sort paths ordered.ind <- order(paths$dist) paths$path <- paths$path[ordered.ind] paths$epath <- paths$epath[ordered.ind] paths$dist <- paths$dist[ordered.ind] } class(paths) <- cls } if(sum(rm.inds)>0) { warning(paste(" No path found for some source/sink pairs.\n", " Please check if the network contains isolated parts!\n\n", sep="")) } } ## Finish progress bar .close.pb(pb) return(paths) } .cnapath.core <- function(cna, from, to, k=1, ncore=1, pb=NULL, ...) { graph = cna$network # which path from the list is the shortest? select.shortest.path <- function(variants){ return( which.min( unlist( lapply( variants, function(x){x$dist} ) ) ) ) } # does a list contain this path? contains.path <- function(variants, variant){ return( any( unlist( lapply( variants, function(x){ isTRUE(all.equal(x$path, variant)) } ) ) ) ) } # first shortest path k0 <- suppressWarnings( igraph::get.shortest.paths(graph, from, to, output='both', ...) ) # if no shortest path found, network contains isolated parts. if(length(k0$vpath[[1]]) <= 1) { # cat(" No path found.\n", # " Please check if the network contains isolated parts!\n\n", sep="") if(!is.null(pb)) .update.pb(pb, step=k) return(NULL) } # number of currently found shortest paths kk <- 1 if(!is.null(pb)) .update.pb(pb) # All shortest paths are stored in container A in order dist = sum(igraph::E(graph)$weight[k0$epath[[1]]]) A <- list(list(path=as.integer(k0$vpath[[1]]), epath=as.integer(k0$epath[[1]]), dist=dist)) # All candidates are stored in container B B <- list() # until k shortest paths are found while(kk < k){ # take last found shortest path last.path <- A[[length(A)]] tmpB <- mclapply(1:(length(last.path$path)-1), function(i) { spurNode <- last.path$path[i] rootPath <- last.path$path[1:i] if(i==1) rootePath = NULL else rootePath = last.path$epath[1:(i-1)] # Remove edges that coincide with the next step from the spur node on # those shortest paths stored in A that share the same root path here g <- graph for(j in 1:length(A)) { if(length(A[[j]]$path) > i && isTRUE(all.equal(rootPath, A[[j]]$path[1:i]))) { nn = A[[j]]$path[i+1] ee = igraph::E(g)[igraph::'%--%'(spurNode, nn)] if(length(ee)>0) g <- igraph::delete_edges(g, ee) } } # Remove all edges that link to nodes on the root path (excluding the spur node) if(i > 1) { for(j in rootPath[-(length(rootPath))]) { ee = igraph::incident(g, j) if(length(ee)>0) g <- igraph::delete_edges(g, ee) } } # Suppress warnings because some nodes are intentionally isolated spurPath <- suppressWarnings(igraph::get.shortest.paths(g, spurNode, to, output='both'), ...) if(length(spurPath$vpath[[1]]) > 1 ) { vpath = c(rootPath, as.integer(spurPath$vpath[[1]][-1])) if(!contains.path(B, vpath)) { spurPath$epath <- as.integer(igraph::E(graph, path=as.integer(spurPath$vpath[[1]]))) epath = c(rootePath, spurPath$epath) return (list(path=vpath, epath = epath, dist = sum(igraph::E(graph)$weight[epath])) ) } } NULL }, mc.cores = ncore ) tmpB <- tmpB[ !sapply(tmpB, is.null) ] B <- c(B, tmpB) if(length(B) == 0) break # find shortest candidate sp <- select.shortest.path(B) # add to A, increase kk, remove shortest path from list of B A <- c(A, B[sp]) kk <- kk + 1 B <- B[-sp] if(!is.null(pb)) .update.pb(pb) } # stopped before reaching k paths if(kk < k) { if(!is.null(pb)) .update.pb(pb, k-kk) warning("Reaching maximal number of possible paths (", kk, ")") } out <- list(path=lapply(A, "[[", "path"), epath = lapply(A, "[[", "epath"), dist = sapply(A, "[[", "dist")) class(out) <- "cnapath" return(out) } bio3d/R/summary.pdb.R0000644000176200001440000000770314707230357014056 0ustar liggesuserssummary.pdb <- function(object, printseq=FALSE, ...) { ## Print a summary of basic PDB object features if( !is.pdb(object) ) { stop("Input should be a pdb object, as obtained from 'read.pdb()'") } ## Multi-model check and total atom count nmodel <- nrow(object$xyz) if( is.null(nmodel) ) { ntotal <- length(object$xyz)/3 nmodel = 1 } else { ntotal <- length(object$xyz[1,])/3 } nxyz <- length(object$xyz) nres <- sum(object$calpha) chains <- unique(object$atom[,"chain"]) all.inds <- atom.select(object, "all", verbose=FALSE)$atom prot.inds <- atom.select(object, "protein", verbose=FALSE)$atom nuc.inds <- atom.select(object, "nucleic", verbose=FALSE)$atom other.inds <- all.inds[! (all.inds %in% c(prot.inds, nuc.inds)) ] nprot <-length(prot.inds) nnuc <-length(nuc.inds) nresnuc <- length(unique( paste(object$atom$chain[nuc.inds], object$atom$insert[nuc.inds], object$atom$resno[nuc.inds], sep="-"))) het <- object$atom[other.inds,] nhet.atom <- nrow(het) if(is.null(nhet.atom) | nhet.atom==0) { nhet.atom <- 0 nhet.res <- 0 hetres <- "none" } else { hetres.resno <- apply(het[,c("chain","resno","resid")], 1, paste, collapse=".") nhet.res <- length(unique(hetres.resno)) hetres.nres <- table(het[,c("resid")][!duplicated(hetres.resno)]) hetres <- paste( paste0( names(hetres.nres), " (",hetres.nres, ")"), collapse=", ") } if((nprot+nnuc+nhet.atom) != ntotal) warning("nPROTEIN + nNUCLEIC + nNON-PROTEIN + nNON-NUCLEIC != nTotal") cat("\n Call: ", paste(deparse(object$call), sep = "\n", collapse = "\n"), "\n", sep = "") s <- paste0("\n Total Models#: ", nmodel, "\n Total Atoms#: ", ntotal, ", XYZs#: ", nxyz, " Chains#: ", length(chains), " (values: ", paste(chains, collapse=" "),")", "\n\n Protein Atoms#: ", nprot, " (residues/Calpha atoms#: ", nres,")", "\n Nucleic acid Atoms#: ", nnuc, " (residues/phosphate atoms#: ", nresnuc,")", "\n\n Non-protein/nucleic Atoms#: ", nhet.atom, " (residues: ", nhet.res, ")", "\n Non-protein/nucleic resid values: [ ", hetres," ]", "\n\n") cat(s) if(printseq) { ##protein if(nres>0) { prot.pdb <- trim.pdb(object, as.select(prot.inds)) aa <- pdbseq(prot.pdb) if(!is.null(aa)) { if(nres > 225) { ## Trim long sequences before output aa <- c(aa[1:225], "......", aa[(nres-3):nres]) } aa <- paste(" ", gsub(" ","", strwrap( paste(aa,collapse=" "), width=120, exdent=0) ), collapse="\n") cat(" Protein sequence:\n", aa, "\n\n", sep="") } } ## nucleic if(nresnuc>0) { na.pdb <- trim.pdb(object, as.select(nuc.inds)) aa <- paste(object$atom$chain[nuc.inds], object$atom$insert[nuc.inds], object$atom$resno[nuc.inds], object$atom$resid[nuc.inds], sep="-") aa <- aa[!duplicated(aa)] aa <- unlist(lapply(strsplit(aa, "-"), function(x) x[4])) aa <- .aa321.na(aa) if(nresnuc > 225) { ## Trim long sequences before output aa <- c(aa[1:225], "......", aa[(nresnuc-3):nresnuc]) } aa <- paste(" ", gsub(" ","", strwrap( paste(aa,collapse=" "), width=120, exdent=0) ), collapse="\n") cat(" Nucleic acid sequence:\n", aa, "\n\n", sep="") } } i <- paste( attributes(object)$names, collapse=", ") cat(strwrap(paste(" + attr:",i,"\n"),width=45, exdent=8), sep="\n") invisible( c(nmodel=nmodel, natom=ntotal, nxyz=nxyz, nchains=length(chains), nprot=nprot, nprot.res=nres, nother=nhet.atom, nother.res=nhet.res) ) } bio3d/R/identify.cna.R0000644000176200001440000000250314707230356014160 0ustar liggesusersidentify.cna <- function(x, labels=NULL, cna=NULL, ...){ ## Be carefull with input argument order ## - 'labels' can take any input and screw up priniting ## e.g. if you pass cna as the second argument! ## Should this perhaps be able to take just a cna object as input ## - Possible if cna object has layout defined ## - Could take extra layout option for custom graphs ## x <- plot(net) ## ## d <- identify.cna(x, cna=net) ## d <- identify.cna(x, labels=summary(net)$members) oops <- requireNamespace("igraph", quietly = TRUE) if (!oops) { stop("igraph package missing: Please install, see: ?install.packages") } if(dim(x)[2] != 2){ stop("'x' object must be a Nx2 numeric matrix") } x.norm <- igraph::layout.norm(x, -1, 1, -1, 1) if( !is.null(labels) ) { ## Use input labels inds <- identify(x.norm[,1], x.norm[,2], labels, ...) return( labels[inds] ) } else { if(is.null(cna)) { ## Use standard labels inds <- identify(x.norm[,1], x.norm[,2], ...) return(inds) } else { ## Take labels from cna object!! labels.all <- summary.cna(cna) labels.short <- labels.all$tbl$members labels.full <- labels.all$members inds <- identify(x.norm[,1], x.norm[,2], labels.short, ...) return( labels.full[inds] ) } } } bio3d/R/pairwise.R0000644000176200001440000000203414707230356013427 0ustar liggesusers"pairwise" <- function(N) { # deternine the indices for pairwise # comparison of N things (where N = 'number.of.things') # Used in function 'identity' # # A <- read.fasta(system.file("examples/kinesin.fa", # package = "bio3d")) # # N<-nrow(A$ali) # # comparison indices # inds<-pairwise(N) # # store score in 's' # s<-rep(NA,nrow(inds)) # # go through all comparisons # for(i in 1:nrow(inds)) { # s[i]<-ide(A$ALI[ inds[i,1], ], A[ inds[i,2], ]) # } # # reformat 's' as a NxN matrix # mat<-matrix(NA,ncol=N,nrow=N) # mat[inds]<-s; mat[inds[,c(2,1)]]<-s if (!is.numeric(N) || N<0 || length(N)>1) { stop("pairwise: N must be positve numeric and of length 1") } pair <- matrix(NA, ncol=2, nrow= ( ((N*N)/2)-(N/2) )) start<-1 for(i in 1:(N-1)) { end = N-i inds = start:( (start-1)+end ) pair[inds,1] = rep(i, end) pair[inds,2] = (i+1):N start = start+end } return(pair) } bio3d/R/atom2ele.R0000644000176200001440000000576414707230356013331 0ustar liggesusersatom2ele <- function(...) UseMethod("atom2ele") atom2ele.default <- function(x, elety.custom=NULL, rescue=TRUE, ...){ if(!is.null(elety.custom)) { if(!all(c("name","symb") %in% names(elety.custom))) stop("'elety.custom' must contains 'name' and 'symb' components") inds <- unlist(lapply(elety.custom, is.factor)) elety.custom[inds] <- lapply(elety.custom[inds], as.character) } atom.index <- rbind(elety.custom[,c("name","symb")], bio3d::atom.index[,c("name","symb")]) # Why atom names starting by "H" are directly converted to "H" as follow? # x[substr(x,1,1) == "H"] <- "H" symb <- atom.index[match(x, atom.index[,"name"]), "symb"] is.unknown <- is.na(symb) if(any(is.unknown)) { if(rescue) { ## vector of unknown elements unknowns <- unique(x[is.unknown]) symb2 <- rep(NA, length(unknowns)) names(symb2) <- unknowns ## format element names before matching spl <- strsplit(unknowns, "") totest <- lapply(spl, function(b) { ## remove numbering from atom name (e.g. FE2, C4A) inds <- grep("[^0-9]", b) if(length(inds) == 0) return(b) j <- bounds(inds)[1, c("start", "end")] b <- b[j[1]:j[2]] ## First char to upper, remaining to lower case new <- NULL for(i in 1:length(b)){ new <- c(new, ifelse(i==1, toupper(b[i]), tolower(b[i]))) } return(paste(new, collapse="")) }) ## match with bio3d::elements$symb totest <- unlist(totest) if(any(totest %in% bio3d::elements$symb)) { symb2[unknowns[totest %in% bio3d::elements$symb]] <- totest[totest %in% bio3d::elements$symb] } ## try with first character to see if it matches elements$symb if(any(is.na(symb2))) { na.inds <- which(is.na(symb2)) totest <- toupper(substr(names(symb2[na.inds]), 1, 1)) if(any(totest %in% bio3d::elements$symb)) { rplc <- names(symb2[na.inds])[totest %in% bio3d::elements$symb] symb2[rplc] <- totest[totest %in% bio3d::elements$symb] } } ## stop with error in case of un-mapped elements if(any(is.na(symb2))) { stop("\telements could not be determined for: ", paste(names(symb2)[is.na(symb2)], collapse=", ")) } ## inform user on mapped elements warning(paste("\n\tmapped element ", names(symb2), " to ", symb2, sep="")) ## include matched elements to original symbol vector symb[is.unknown] <- symb2[ x[is.unknown] ] } else { stop("\telements could not be determined for: ", paste(unique(x[is.unknown]), collapse=", ")) } } symb <- unlist(symb) return(symb) } atom2ele.pdb <- function(pdb, inds=NULL, ...){ if(!is.null(inds)) pdb <- trim(pdb, inds) atom.names <- pdb$atom[,"elety"] return(atom2ele.default(atom.names, ...)) } bio3d/R/mustang.R0000644000176200001440000000446314707230356013272 0ustar liggesusers"mustang" <- function(files, exefile="mustang", outfile="aln.mustang.fa", cleanpdb=FALSE, cleandir="mustangpdbs", verbose=TRUE) { ## Check if the program is executable os1 <- .Platform$OS.type status <- system(paste(exefile, "--version"), ignore.stderr = TRUE, ignore.stdout = TRUE) if(!(status %in% c(0,1))) stop(paste("Launching external program failed\n", " make sure '", exefile, "' is in your search path", sep="")) if(!all(file.exists(files))) stop(paste("Missing files:", paste(files[ !file.exists(files) ], collapse=", "))) ## produce cleaned CA pdb files for mustang if(cleanpdb) { if(!file.exists(cleandir)) dir.create(cleandir) newfiles <- c() for(i in 1:length(files)) { tmpout <- paste(cleandir, basename(files[i]), sep="/") pdb <- read.pdb(files[i]) sele <- atom.select(pdb, "calpha", verbose=verbose) new <- trim.pdb(pdb, sele) seq1 <- aa321(new$atom$resid) seq3 <- aa123(seq1) new$atom$type <- "ATOM" new$atom$resid <- seq3 write.pdb(new, file=tmpout) newfiles <- c(newfiles, tmpout) } files <- newfiles } infile <- tempfile() tmpout <- tempfile() dirn <- unique(dirname(files)) if(length(dirn)>1) stop("All files must be in one directory") files <- basename(files) rawlines <- NULL rawlines <- c(rawlines, paste(">", dirn)) for ( i in 1:length(files) ) rawlines <- c(rawlines, paste("+", files[i], sep="")) write.table(rawlines, file=infile, quote=FALSE, row.names=FALSE, col.names=FALSE) cmd <- paste(exefile, "-f", infile, "-o", tmpout, "-F fasta") if(verbose) cat("Running command\n", cmd, "\n") if (os1 == "windows") success <- shell(shQuote(cmd), ignore.stderr = !verbose, ignore.stdout = !verbose) else success <- system(cmd, ignore.stderr = !verbose, ignore.stdout = !verbose) if(success!=0) stop(paste("An error occurred while running command\n '", exefile, "'", sep="")) aln <- read.fasta(paste(tmpout, ".afasta", sep="")) rownames(aln$ali) <- paste(dirn, rownames(aln$ali), sep="/") aln$id <- rownames(aln$ali) unlink(infile); unlink(tmpout); if(!is.null(outfile)) write.fasta(aln, file=outfile) return(aln) } bio3d/R/nma_funs.R0000644000176200001440000002345514707230356013424 0ustar liggesusers".nma.args" <- function(pfc.fun=NULL, ...) { ## Arguments to functions build.hessian and aa2mass bh.names <- names(formals( build.hessian )) am.names <- names(formals( aa2mass )) #rtb.names <- names(formals( rtb )) dots <- list(...) bh.args <- dots[names(dots) %in% bh.names] bh.args <- bh.args[ !('pfc.fun' %in% names(bh.args)) ] am.args <- dots[names(dots) %in% am.names] #rtb.args <- dots[names(dots) %in% rtb.names] ## Check for optional arguments to pfc.fun ff.names <- names(formals( pfc.fun )) ff.args <- dots[names(dots) %in% ff.names] ## Redirect them to build.hessian bh.args <- c(bh.args, ff.args) ## Arguments without destination all.names <- unique(c(bh.names, am.names, ff.names)) if(!all(names(dots) %in% all.names)) { oops <- names(dots)[!(names(dots) %in% all.names)] stop(paste("argument mismatch:", oops)) } if(length(bh.args)==0) bh.args=NULL if(length(am.args)==0) am.args=NULL #if(length(rtb.args)==0) # rtb.args=NULL out <- list(bh.args=bh.args, am.args=am.args) #, rtb.args=rtb.args) return(out) } ## extract effective hessian for RTB approach .nma.trim.hessian.rtb <- function(hessian, inc.inds=NULL, pdb=NULL, nmer=1) { if(!is.matrix(hessian)) stop("hessian must be a matrix") if(is.null(inc.inds)) return(hessian) if(nrow(hessian) == length(inc.inds$xyz)) return(hessian) cat(" Extracting effective Hessian with RTB..") ptm <- proc.time() exc.inds <- combine.select(atom.select(pdb), inc.inds, operator='-', verbose=FALSE) pdb <- trim(pdb, exc.inds) inc.inds <- inc.inds$xyz kaa <- hessian[inc.inds, inc.inds] ei <- rtb(hessian[-inc.inds, -inc.inds], pdb=pdb, mass=FALSE, nmer=nmer, verbose=FALSE) if(any(ei$values<=0)) { warning("Not all eigenvalues are positive!") } inds <- which(ei$values > 0) kaq <- hessian[inc.inds, -inc.inds] kqa <- t(kaq) ukqa <- crossprod(ei$vectors[, inds], kqa) k <- kaa - crossprod(ukqa * (1/ei$values[inds]), ukqa) t <- proc.time() - ptm cat("\tDone in", t[[3]], "seconds.\n") return(k) } ## extract effective hessian ".nma.trim.hessian" <- function(hessian, inc.inds=NULL) { if(!is.matrix(hessian)) stop("hessian must be a matrix") if(is.null(inc.inds)) return(hessian) if(nrow(hessian) == length(inc.inds$xyz)) return(hessian) ptm <- proc.time() cat(" Extracting effective Hessian..") inc.inds <- inc.inds$xyz kaa <- hessian[inc.inds, inc.inds] ##kqq.inv <- solve(hessian[-inc.inds, -inc.inds]) kqq.inv <- chol2inv(chol(hessian[-inc.inds, -inc.inds])) kaq <- hessian[inc.inds, -inc.inds] kqa <- t(kaq) ##k <- kaa - ((kaq %*% kqq.inv) %*% kqa) k <- kaa - crossprod(crossprod(kqq.inv, kqa), kqa) t <- proc.time() - ptm cat("\tDone in", t[[3]], "seconds.\n") return(k) } ## mass-weight hessian ".nma.mwhessian" <- function(hessian, masses=NULL) { if(!is.matrix(hessian)) stop("hessian must be a matrix") if(is.null(masses)) stop("masses must be provided") #cat(" Mass weighting Hessian...") #ptm <- proc.time() dims <- dim(hessian) natoms <- dims[1] / 3 if(length(masses)!=natoms) stop("dimension mismatch") masses <- sqrt(masses) inds <- rep(1:natoms, each=3) col.inds <- seq(1, ncol(hessian), by=3) for ( i in 1:natoms ) { m <- col.inds[i] hessian[,m:(m+2)] <- hessian[,m:(m+2)] * (1/masses[i]) hessian[,m:(m+2)] <- hessian[,m:(m+2)] * (1/masses[inds]) } #t <- proc.time() - ptm #cat("\tDone in", t[[3]], "seconds.\n") return(hessian) } ## wrapper for generating the hessian matrix ".nma.hess" <- function(xyz, pfc.fun, args=NULL, hessian=NULL, pdb=NULL) { natoms <- ncol(as.xyz(xyz))/3 if(nrow(xyz)>1) xyz=xyz[1,,drop=FALSE] ## Build the Hessian Matrix if(is.null(hessian)) { cat(" Building Hessian...") ptm <- proc.time() H <- do.call('build.hessian', c(list(xyz=xyz, pfc.fun=pfc.fun, pdb=pdb), args$bh.args)) t <- proc.time() - ptm cat("\t\tDone in", t[[3]], "seconds.\n") } else { H <- hessian } return(H) } ## diagonalize hessian ".nma.diag" <- function(H, symmetric=TRUE) { ## Diagonalize matrix cat(" Diagonalizing Hessian...") ptm <- proc.time() ei <- eigen(H, symmetric=symmetric) t <- proc.time() - ptm cat("\tDone in", t[[3]], "seconds.\n") return(ei) } ## build a NMA object ".nma.finalize" <- function(ei, xyz, temp, masses, natoms, keep, call) { if(length(masses)>0) mass <- TRUE else mass <- FALSE xyz=as.xyz(xyz) dims <- dim(ei$vectors) dimchecks <- c(ncol(xyz)/3==natoms, ifelse(mass, length(masses)==natoms, TRUE), dims[1]/3==natoms) #dims[2]/3==natoms) if(!all(dimchecks)) stop(paste("dimension mismatch when generating nma object\n", paste(dimchecks, collapse=", "))) ## Raw eigenvalues ei$values <- round(ei$values, 6) ## Trivial modes first - sort on abs(ei$values) sort.inds <- order(abs(ei$values)) ei$values <- ei$values[sort.inds] ei$vectors <- ei$vectors[, sort.inds] ## hard code 6 trivial modes triv.modes <- seq(1, 6) ## keep only a subset of modes - including trivial modes if(!is.null(keep)) { if(keep>ncol(ei$vectors)) keep <- ncol(ei$vectors) keep.inds <- seq(1, keep) ei$vectors <- ei$vectors[,keep.inds] ei$values <- ei$values[keep.inds] } ## Frequencies are given by if (mass) { pi <- 3.14159265359 freq <- sqrt(abs(ei$values)) / (2 * pi) force.constants <- NULL } else { freq <- NULL force.constants <- ei$values } ## Raw unmodified eigenvectors: ## ei$vectors ## V holds the eigenvectors converted to unweighted Cartesian coords: V <- ei$vectors ## Change to non-mass-weighted eigenvectors if(mass) { wts.sqrt <- sqrt(masses) tri.inds <- rep(1:natoms, each=3) V <- apply(V, 2, '*', 1 / wts.sqrt[tri.inds]) } ## Temperature scaling kb <- 0.00831447086363271 if ( !is.null(temp) ) { if (!is.null(freq)) { amplitudes <- sqrt(2* temp * kb) / (2* pi * freq[ -triv.modes ]) amplitudes <- c(rep(1,length(triv.modes)), amplitudes) } else if(!is.null(force.constants)) { amplitudes <- sqrt((2* temp * kb) / force.constants[ -triv.modes ]) amplitudes <- c(rep(1,length(triv.modes)), amplitudes) } } else { amplitudes <- rep(1, times=3*natoms) } ## Temperature scaling of eigenvectors for ( i in (length(triv.modes)+1):ncol(V) ) { V[,i] <- (V[,i] * amplitudes[i]) } ## Check if first modes are zero-modes if(any(ei$values<0)) { warning("Negative eigenvalue(s) detected! \ This can be an indication of an unphysical input structure.") } ## Output to class "nma" nma <- list(modes=V, frequencies=NULL, force.constants=NULL, fluctuations=NULL, U=ei$vectors, L=ei$values, xyz=xyz, mass=masses, temp=temp, triv.modes=length(triv.modes), natoms=natoms, call=call) if(mass) { class(nma) <- c("VibrationalModes", "nma") nma$frequencies <- freq } else { class(nma) <- c("EnergeticModes", "nma") nma$force.constants <- force.constants } ## Calculate mode fluctuations nma$fluctuations <- fluct.nma(nma, mode.inds=NULL) ## Notes: ## U are the raw unmodified eigenvectors ## These mode vectors are in mass-weighted coordinates and not ## scaled by the thermal amplitudes, so they are orthonormal. ## V holds the eigenvectors converted to unweighted Cartesian ## coordinates. Unless you set temp=NULL, the modes are ## also scaled by the thermal fluctuation amplitudes. return(nma) } .inds2ids <- function(pdb, inds=NULL) { if(!is.null(inds)) { paste(pdb$atom$chain[inds$atom], pdb$atom$resno[inds$atom], pdb$atom$elety[inds$atom], pdb$atom$insert[inds$atom], sep="_") } else { paste(pdb$atom$chain, pdb$atom$resno, pdb$atom$elety, pdb$atom$insert, sep="_") } } ".match.sel" <- function(a, b, inds) { ## a= original pdb ## b= trimmed pdb ## inds= indices of pdb 'a' to keep ## find corresponding atoms in b ids.a <- .inds2ids(a, inds) ids.b <- .inds2ids(b) inds <- which(ids.b %in% ids.a) return(as.select(inds)) } ".nma.reduce.pdb" <- function(pdb) { pdb$atom$resid <- aa123(aa321(pdb$atom$resid)) ## Selected side chain atoms ## Using whatever is furthest away from CA, including N and O atoms. aa.elety <- list( ARG = c("NH1", "NH2"), HIS = c("CE1", "CG"), LYS = c("NZ"), ASP = c("OD1", "OD2"), GLU = c("OE1", "OE2"), SER = c("OG"), THR = c("CG2", "OG1"), ## "OG1" ASN = c("OD1", "ND2"), GLN = c("NE2", "OE1"), CYS = c("SG"), ##GLY = c(), PRO = c("CG"), ALA = c("CB"), VAL = c("CG1", "CG2"), ILE = c("CD1", "CG2"), LEU = c("CD1", "CD2"), MET = c("CE"), PHE = c("CZ"), TYR = c("OH"), TRP = c("CH2", "NE1") ) pdb <- trim(pdb, "noh") sele <- atom.select(pdb, elety=c("N", "CA", "C")) for(i in 1:length(aa.elety)) { resid = names(aa.elety)[i] elety = aa.elety[[i]] sele2 <- atom.select(pdb, resid = resid, elety = elety) if(length(sele2$atom)>0) { sele <- combine.select(sele, sele2, operator="OR", verbose=FALSE) } } #return(sele) return(trim(pdb, sele)) } bio3d/R/aa123.R0000644000176200001440000000151514707230356012416 0ustar liggesusers"aa123" <- function (aa) { if(any(nchar(aa)!=1)) stop("Provide a character vector of individual 1-letter aminoacid codes") # convert one-letter IUPAC amino-acid code into # three-letter PDB style, for instance "A" into "ALA". aa1 <- c("-","X", "A","C","D","E","F","G", "H","I","K","L","M","N","P","Q", "R","S","T","V","W","Y") aa3 <- c("---","UNK", "ALA", "CYS", "ASP", "GLU", "PHE", "GLY", "HIS", "ILE", "LYS", "LEU", "MET", "ASN", "PRO", "GLN", "ARG", "SER", "THR", "VAL", "TRP", "TYR") convert <- function(x) { if(is.na(x)) return(NA) if (all(x != aa1)) { warning("Unknown one letter code for aminoacid") return("UNK") } else { return(aa3[which(x == aa1)]) } } return(as.vector(unlist(sapply(aa, convert)))) } bio3d/R/write.pqr.R0000644000176200001440000002032214707230357013540 0ustar liggesusers`write.pqr` <- function (pdb = NULL, xyz = pdb$xyz, resno = NULL, resid = NULL, eleno = NULL, elety = NULL, chain = NULL, o = NULL, b = NULL, append = FALSE, verbose =FALSE, chainter = FALSE, file = "R.pdb") { ## For Testing: ## resno = NULL; resid = NULL;eleno = NULL;elety = NULL;chain = NULL;o = NULL;b = NULL; het = FALSE;append = FALSE;verbose =FALSE;chainter = FALSE ## pdb=mt; eleno=eleno.new; resno=resno.new; file="t3.pqr" if(is.null(xyz) || !is.numeric(xyz)) stop("write.pqr: please provide a 'pdb' object or numeric 'xyz' vector") if(any(is.na(xyz))) stop("write.pqr: 'xyz' coordinates must have no NA's.") xyz <- as.xyz(xyz) xyz <- trim(xyz, row.inds=1) natom <- ncol(xyz)/3 nfile <- 1 if (nrow(xyz)>1) { warning("write.pqr: no multimodel PQR support") xyz <- trim(xyz, row.inds=1) ##natom <- ncol(xyz)/3 ##nfile <- nrow(xyz) ##if (verbose) { ## cat("Multiple 'xyz' rows will be interperted as multimodels/frames\n") } card <- rep('ATOM', natom) if(!is.null(pdb)) { # if(natom == 1) ## make sure we are a matrix # pdb$atom <- t(as.matrix(pdb$atom)) card <- pdb$atom$type if (is.null(resno)) resno = pdb$atom[, "resno"] if (is.null(resid)) resid = pdb$atom[, "resid"] if (is.null(eleno)) eleno = pdb$atom[, "eleno"] if (is.null(elety)) elety = pdb$atom[, "elety"] if (is.null(chain)) { chain = pdb$atom[, "chain"] } else { if(length(chain)==1) chain=rep(chain, natom) } if (is.null(o)) o = pdb$atom[, "o"] if (is.null(b)) b = pdb$atom[, "b"] if (any(is.na(o))) { o = rep("0.00", natom) } if (any(is.na(b))) { b = rep("1.00", natom) } #if (any(is.na(chain))) { chain = rep(" ", natom) } chain[is.na(chain)]= "" } else { if (is.null(resno)) resno = c(1:natom) if (is.null(resid)) resid = rep("ALA", natom) if (is.null(eleno)) eleno = c(1:natom) if (is.null(elety)) elety = rep("CA", natom) if (is.null(chain)) { chain = rep("", natom) } else { if (length(chain) == 1) chain = rep(chain, natom) } if (is.null(o)) o = rep("0.00",natom) if (is.null(b)) b = rep("1.00", natom) chain[is.na(chain)]= "" } if (!is.logical(append)) stop("write.pqr: 'append' must be logical TRUE/FALSE") if (length(as.vector(xyz))%%3 != 0) { stop("write.pqr: 'length(xyz)' must be divisable by 3.") } check.lengths <- sum(length(resno), length(resid), length(eleno), length(elety), length(o), length(b)) if (check.lengths%%natom != 0) { stop("write.pqr: the lengths of all input vectors != 'length(xyz)/3'.") } o <- as.numeric(o) b <- as.numeric(b) eleno <- as.character(eleno) resno <- as.character(resno) ## Inserted Jul 8th 2008 for adding TER between chains ter.lines <- (which(!duplicated(chain))[-1] - 1) #### #### ## Edit: Sat Aug 1 14:48:48 PDT 2009 #### ## for speed imporvment and for #### ## implementing 6 character atom numbers #### if(nfile==1) { coords <- matrix(round(as.numeric(xyz), 3), ncol = 3, byrow = TRUE) if (verbose) { cat(paste("Writing 1 frame with",natom,"atoms ")) } coords <- matrix(round(as.numeric(xyz), 3), ncol = 3, byrow = TRUE) lines <- matrix(, ncol=1, nrow=natom) ## Four format otions: regular; elety > 3; eleno > 5; eleno > 5 & elety > 3 ## cases nchar(elety) > 3; nchar(eleno) > 5 cases <- matrix(1,ncol=2,nrow=natom) cases[(nchar(eleno) > 5) ,1] = 3 cases[(nchar(elety) < 4) ,2] = 0 cases <- rowSums(cases) ind.1 <- which(cases==1) ind.2 <- which(cases==2) ind.3 <- which(cases==3) ind.4 <- which(cases==4) atom.print.1 <- function(card = "ATOM", eleno, elety, alt = "", resid, chain = "", resno, insert = "", x, y, z, o = "0.00", b = "1.00", segid = "") { format <- "%-6s%5s %-3s%1s%-4s%1s%4s%1s%3s%8.3f%8.3f%8.3f%8.4f%8.3f%6s%4s" sprintf(format, card, eleno, elety, alt, resid, chain, resno, insert, "", x, y, z, o, b, "", segid) } atom.print.2 <- function(card = "ATOM", eleno, elety, alt = "", resid, chain = "", resno, insert = "", x, y, z, o = "0.00", b = "1.00", segid = "") { format <- "%-6s%5s %-4s%1s%-4s%1s%4s%1s%3s%8.3f%8.3f%8.3f%8.4f%8.3f%6s%4s" sprintf(format, card, eleno, elety, alt, resid, chain, resno, insert, "", x, y, z, o, b, "", segid) } atom.print.3 <- function(card = "ATOM", eleno, elety, alt = "", resid, chain = "", resno, insert = "", x, y, z, o = "0.00", b = "1.00", segid = "") { format <- "%-4s%7s %-3s%1s%-4s%1s%4s%1s%3s%8.3f%8.3f%8.3f%8.4f%8.3f%6s%4s" sprintf(format, card, eleno, elety, alt, resid, chain, resno, insert, "", x, y, z, o, b, "", segid) } atom.print.4 <- function(card = "ATOM", eleno, elety, alt = "", resid, chain = "", resno, insert = "", x, y, z, o = "0.00", b = "1.00", segid = "") { format <- "%-4s%7s %-4s%1s%-4s%1s%4s%1s%3s%8.3f%8.3f%8.3f%8.4f%8.3f%6s%4s" sprintf(format, card, eleno, elety, alt, resid, chain, resno, insert, "", x, y, z, o, b, "", segid) } if(length(ind.1)>0) { lines[ind.1,] <- atom.print.1( card = card[ind.1], eleno = eleno[ind.1], elety = elety[ind.1], resid = resid[ind.1], chain = chain[ind.1], resno = resno[ind.1], x = coords[ind.1, 1], y = coords[ind.1, 2], z = coords[ind.1, 3], o = o[ind.1], b = b[ind.1] ) } if(length(ind.2)>0) { lines[ind.2,] <- atom.print.2( card = card[ind.2], eleno = eleno[ind.2], elety = elety[ind.2], resid = resid[ind.2], chain = chain[ind.2], resno = resno[ind.2], x = coords[ind.2, 1], y = coords[ind.2, 2], z = coords[ind.2, 3], o = o[ind.2], b = b[ind.2] ) } if(length(ind.3)>0) { lines[ind.3,] <- atom.print.3( card = card[ind.3], eleno = eleno[ind.3], elety = elety[ind.3], resid = resid[ind.3], chain = chain[ind.3], resno = resno[ind.3], x = coords[ind.3, 1], y = coords[ind.3, 2], z = coords[ind.3, 3], o = o[ind.3], b = b[ind.3] ) } if(length(ind.4)>0) { lines[ind.4,] <- atom.print.4( card = card[ind.4], eleno = eleno[ind.4], elety = elety[ind.4], resid = resid[ind.4], chain = chain[ind.4], resno = resno[ind.4], x = coords[ind.4, 1], y = coords[ind.4, 2], z = coords[ind.4, 3], o = o[ind.4], b = b[ind.4] ) } write.table(lines, file=file, quote=FALSE, row.names=FALSE, col.names=FALSE, append=append) #### #### End of Edit: removed big chunks of old code #### } else { if (verbose) { cat(paste("Writing",nfile,"frames with",natom,"atoms"),"\n") cat("Frame Progress (x50) ") } stop("REMOVED code for multimodel PQR as these files dont have much support") } if (verbose) cat(" DONE","\n") } bio3d/R/sip.R0000644000176200001440000000267114707230357012407 0ustar liggesuserssip <- function(...) UseMethod("sip") sip.nma <- function(a, b, ...) { if(length(a$fluctuations)!=length(b$fluctuations)) stop("dimension mismatch") return(sip.default(a$fluctuations, b$fluctuations)) } sip.enma <- function(enma, ncore=NULL, ...) { if(!inherits(enma, "enma")) stop("provide a 'enma' object as obtain from function 'nma.pdbs()'") ncore <- setup.ncore(ncore, bigmem = FALSE) if(ncore>1) mylapply <- mclapply else mylapply <- lapply gaps <- gap.inspect(enma$fluctuations) dims <- dim(enma$fluctuations) m <- dims[1] mat <- matrix(NA, m, m) ##inds <- pairwise(m) inds <- rbind(pairwise(m), matrix(rep(1:m,each=2), ncol=2, byrow=T)) mylist <- mylapply(1:nrow(inds), function(row) { i <- inds[row,1]; j <- inds[row,2]; out <- list(val=sip.default( enma$fluctuations[i,gaps$f.inds], enma$fluctuations[j,gaps$f.inds]), i=i, j=j) return(out) }) for ( i in 1:length(mylist)) { tmp <- mylist[[i]] mat[tmp$i, tmp$j] <- tmp$val } mat[ inds[,c(2,1)] ] = mat[ inds ] ##diag(mat) <- rep(1, n) colnames(mat) <- basename(rownames(enma$fluctuations)) rownames(mat) <- basename(rownames(enma$fluctuations)) return(round(mat, 6)) } sip.default <- function(v, w, ...) { if(length(v)!=length(w)) stop("dimension mismatch") return(as.numeric(((t(v) %*% w)**2) / ((t(v) %*% v)*(t(w) %*% w)))) } bio3d/R/stride.R0000644000176200001440000001312014707230357013075 0ustar liggesusers"stride" <- function(pdb, exefile = "stride", resno=TRUE) { ## Log the call cl <- match.call() infile <- tempfile() outfile <- tempfile() write.pdb(pdb, file=infile) os1 <- .Platform$OS.type if(os1 == "windows") { shell( paste(exefile," -f",outfile," ",infile,sep="") ) } else { system( paste(exefile," -f",outfile," ",infile,sep="") ) } raw.lines <- readLines(outfile) type <- substring(raw.lines, 1, 3) unlink(c(infile, outfile)) raw.loc <- raw.lines[type == "LOC"] raw.tor <- raw.lines[type == "ASG"] phi <- as.numeric(substring(raw.tor, 43,49)) psi <- as.numeric(substring(raw.tor, 53,59)) # DEBUG: SSE length is inconsistent with the sequence length; # Read ASG instead of LOC lines sse <- substring(raw.tor, 25,25) cha <- substring(raw.tor, 10,10) acc <- as.numeric(substring(raw.tor, 65, 69)) res.num <- suppressWarnings(as.numeric(substring(raw.tor, 12, 15))) if(any(is.na(res.num))) { ins <- which(is.na(res.num)) res.num[ins] <- as.numeric(substring(raw.tor, 11, 14))[ins] if(resno) { warning("Insertions are found in PDB: Residue numbers may be incorrect. Try again with resno=FALSE") } else { ii <- diff(res.num) ii[ii==0] <- 1 #Consecutive numbers at insertion residues ii[ii<0] <- 2 #Jumps at possible chain termination res.num <- res.num[1] + c(0, cumsum(ii)) } } # res.ind <- 1:length(res.num) # res.name <- substring(raw.tor, 6, 8) h.res <- bounds(res.num[which(sse == "H")], pre.sort=FALSE) g.res <- bounds(res.num[which(sse == "G")], pre.sort=FALSE) e.res <- bounds(res.num[which(sse == "E")], pre.sort=FALSE) t.res <- bounds(res.num[which(sse == "T")], pre.sort=FALSE) ## sseInfo <- cbind(resIndex=res.ind, resNumber=res.num, ## resName=res.name, sse=sse) # start <- as.numeric(substring(raw.loc, 23,27)) # end <- as.numeric(substring(raw.loc, 42,45)) # chain <- substring(raw.loc, 29,29) # # sse <- substring(raw.loc, 6,9) # # h.ind <- sse == "Alph" # g.ind <- sse == "310H" # e.ind <- sse == "Stra" # t.ind <- sse == "Turn" # # sse.type <- sse # sse.type[h.ind] <- "H" # sse.type[g.ind] <- "G" # sse.type[e.ind] <- "E" # sse.type[t.ind] <- "T" h.ind <- h.res; g.ind <- g.res e.ind <- e.res; t.ind <- t.res if(length(h.res) > 0) { res.ind <- which(sse == "H") h.ind[, "end"] <- res.ind[cumsum(h.res[, "length"])] h.ind[, "start"] <- h.ind[, "end"] - h.res[, "length"] + 1 } if(length(g.res) > 0) { res.ind <- which(sse == "G") g.ind[, "end"] <- res.ind[cumsum(g.res[, "length"])] g.ind[, "start"] <- g.ind[, "end"] - g.res[, "length"] + 1 } if(length(e.res) > 0) { res.ind <- which(sse == "E") e.ind[, "end"] <- res.ind[cumsum(e.res[, "length"])] e.ind[, "start"] <- e.ind[, "end"] - e.res[, "length"] + 1 } if(length(t.res) > 0) { res.ind <- which(sse == "T") t.ind[, "end"] <- res.ind[cumsum(t.res[, "length"])] t.ind[, "start"] <- t.ind[, "end"] - t.res[, "length"] + 1 } if(!resno) { h.res <- h.ind; g.res <- g.ind e.res <- e.ind; t.res <- t.ind } sheet = list(start=NULL, end=NULL, length=NULL, chain=NULL) helix = list(start=NULL, end=NULL, length=NULL, chain=NULL, type=NULL) turn = sheet if(length(h.res)>1) { helix$start = c(helix$start,h.res[, "start"]) helix$end = c(helix$end, h.res[, "end"]) helix$length = c(helix$length, h.res[, "length"]) helix$chain = c(helix$chain, cha[h.ind[, "start"]]) helix$type = c(helix$type, sse[h.ind[, "start"]]) } if(length(g.res)>1) { helix$start = c(helix$start,g.res[, "start"]) helix$end = c(helix$end, g.res[, "end"]) helix$length = c(helix$length, g.res[, "length"]) helix$chain = c(helix$chain, cha[g.ind[, "start"]]) helix$type = c(helix$type, sse[g.ind[, "start"]]) } if(length(helix$start) > 0) helix <- lapply(helix, function(x) {names(x) <- 1:length(helix$start); return(x)}) if(length(e.res)>1) { sheet$start = c(sheet$start,e.res[, "start"]) sheet$end = c(sheet$end, e.res[, "end"]) sheet$length = c(sheet$length, e.res[, "length"]) sheet$chain = c(sheet$chain, cha[e.ind[, "start"]]) } if(length(sheet$start) > 0) sheet <- lapply(sheet, function(x) {names(x) <- 1:length(sheet$start); return(x)}) if(length(t.res)>1) { turn$start = c(turn$start,t.res[, "start"]) turn$end = c(turn$end, t.res[, "end"]) turn$length = c(turn$length, t.res[, "length"]) turn$chain = c(turn$chain, cha[t.ind[, "start"]]) } if(length(turn$start) > 0) turn <- lapply(turn, function(x) {names(x) <- 1:length(turn$start); return(x)}) # if(any(h.ind | g.ind)) { # helix=list(start = c(start[h.ind], start[g.ind]), # end = c(end[h.ind], end[g.ind]), # length = ( c(end[h.ind], end[g.ind]) - # c(start[h.ind], start[g.ind]) + 1), # chain = c(chain[h.ind], chain[g.ind]), # type = c(sse.type[h.ind], sse.type[g.ind])) # } # if(any(e.ind)) { # sheet = list(start = start[e.ind], # end = end[e.ind], # length = (end[e.ind] - start[e.ind] + 1), # chain = chain[e.ind]) # } # if(any(t.ind)) { # turn = list(start = start[t.ind], # end = end[t.ind], # length =(end[t.ind] - start[t.ind] + 1), # chain = chain[t.ind]) # } out <- list(helix = helix, sheet=sheet, hbonds=NULL, turn=turn, phi=phi, psi=psi, acc=acc, sse=sse, call=cl) class(out) <- "sse" return(out) } bio3d/R/mktrj.R0000644000176200001440000000005614707230356012735 0ustar liggesusers"mktrj" <- function(...) UseMethod("mktrj") bio3d/R/seqidentity.R0000644000176200001440000000610014707230357014145 0ustar liggesusers"seqidentity" <- function( alignment , normalize=TRUE, similarity=FALSE, ncore=1, nseg.scale=1) { # Parallelized by parallel package (Sun Jul 7 17:35:38 EDT 2013) ncore <- setup.ncore(ncore) if(ncore > 1) { # Issue of serialization problem # Maximal number of cells of a double-precision matrix # that each core can serialize: (2^31-1-61)/8 R_NCELL_LIMIT_CORE = 2.68435448e8 R_NCELL_LIMIT = ncore * R_NCELL_LIMIT_CORE if(nseg.scale < 1) { warning("nseg.scale should be 1 or a larger integer\n") nseg.scale=1 } } ## set labels for output seqide matrix ids <- NULL if(inherits(alignment, c("fasta", "pdbs"))) { ids <- basename.pdb(as.character(alignment$id)) } if(is.matrix(alignment) & !is.null(rownames(alignment))) { ids <- basename.pdb(as.character(rownames(alignment))) } ## continue with ali matrix only if(inherits(alignment, c("fasta", "pdbs"))) { alignment <- alignment$ali } ## calculate similarity instead of identity? if(similarity) { alnTo10 <- function(x) { new <- rep(NA, length(x)) aa <- c("V","I","L","M", "F","W","Y", "S","T", "N","Q", "H","K","R", "D","E", "A","G", "P", "C", "-","X") new[ x %in% aa[1:4] ] = "V" # Hydrophobic, Aliphatic new[ x %in% aa[5:7] ] = "F" # Aromatic new[ x %in% aa[8:9] ] = "S" # Ser/Thr new[ x %in% aa[10:11] ] = "N" # Polar new[ x %in% aa[12:14] ] = "R" # Positive new[ x %in% aa[15:16] ] = "D" # Negative new[ x %in% aa[17:18] ] = "A" # Tiny new[ x %in% aa[19] ] = "P" # Proline new[ x %in% aa[20] ] = "C" # Cysteine new[ x %in% aa[21:22] ] = "-" # Gaps return(matrix(new, nrow=1)) } alignment <- t(apply(alignment, 1, alnTo10) ) } alignment[is.gap(alignment)] = NA ide <- function(x, y) { #### Edit by Heiko Strathmann #### Wed Aug 4 10:48:16 PDT 2010 #### Fix for bug with all gap sequences r <- sum(x==y, na.rm=TRUE) t <- sum(complete.cases(cbind(x,y))) if (normalize && t != 0) { r <- r/t } ################################## return( round(r, 3) ) } nseq <- nrow(alignment) inds <- pairwise( nseq ) ni <- nrow(inds) if(ncore > 1) { RLIMIT = R_NCELL_LIMIT nDataSeg = floor((ni-1)/RLIMIT) + 1 nDataSeg = floor(nDataSeg * nseg.scale) lenSeg = floor(ni/nDataSeg) s = NULL for(i in 1:nDataSeg) { istart = (i-1)*lenSeg + 1 iend = if(i0) { j <- 0 for(i in 1:length(x$helix$start)) { if(j%%5==0) cat("\n ") tmpout <- paste(x$helix$start[i], "-", x$helix$end[i], " (", x$helix$chain[i], ")", sep="") cat(format(tmpout, justify="right", width=15)) j <- j+1 } } cat("\n\n") cat("Sheets: ", length(x$sheet$start), "") if(length(x$sheet$start)>0) { j <- 0 for(i in 1:length(x$sheet$start)) { if(j%%5==0) cat("\n ") tmpout <- paste(x$sheet$start[i], "-", x$sheet$end[i], " (", x$sheet$chain[i], ")", sep="") cat(format(tmpout, justify="right", width=15)) j <- j+1 } } cat("\n\n") cat("Turns: ", length(x$turn$start), "") if(length(x$turn$start)>0) { j <- 0 for(i in 1:length(x$turn$start)) { if(j%%5==0) cat("\n ") tmpout <- paste(x$turn$start[i], "-", x$turn$end[i], " (", x$turn$chain[i], ")", sep="") cat(format(tmpout, justify="right", width=15)) j <- j+1 } } cat("\n\n") if(is.null(x$call$resno)) resno <- TRUE else if(x$call$resno=="T" || x$call$resno=="TRUE") resno <- TRUE else resno <- FALSE if(resno) cat("Output is provided in residue numbers") else cat("Output is provided in residue (sequential) identifiers") cat("\n\n") invisible(x) } bio3d/R/var.xyz.R0000644000176200001440000000111614707230357013226 0ustar liggesusers"var.xyz" <- function(xyz, weights=TRUE) { ## Calculate pairwise distances natoms <- ncol(xyz) / 3 all <- array(0, dim=c(natoms,natoms,nrow(xyz))) for( i in 1:nrow(xyz) ) { dists <- dist.xyz(xyz[i,]) all[,,i] <- dists } ## Calculate variance of pairwise distances all.vars <- apply(all, 1:2, var) if(weights) { ## Make the final weights wts <- 1 - (all.vars / max(all.vars, na.rm=TRUE)) wts[is.na(wts)] <- 1 return(wts) } else { return(all.vars) } } "var.pdbs" <- function(pdbs, ...) { xyz <- pdbs$xyz return(var.xyz(xyz, ...)) } bio3d/R/torsion.pdb.R0000644000176200001440000001143114707230357014047 0ustar liggesusers"torsion.pdb" <- function(pdb) { colpaste <- function(x,col.names=colnames(x)) { apply(x, 1, function(row) paste(row[col.names], collapse=".")) } getinds <- function(atoms,ref=atom.names) { sort(atom2xyz(charmatch(atoms, ref))) } repadd <- function(num, nrep=nres, toadd=nxyz) { c(num, rep(num, (nrep-1)) + rep(cumsum(rep(toadd, (nrep-1))), each=length(num))) } ##-- List atoms form each residue of each chain atom.data <- colpaste(pdb$atom,c("elety","resno","chain")) atom.list <- matrix(unlist(strsplit(atom.data,"\\.")), ncol=3, byrow=TRUE) res.data <- colpaste(pdb$atom,c("resno","chain", "resid", "insert")) res.data <- sub(".NA", "", res.data) res.list <- unique(res.data) atom.names <- c("N","CA","C","O","CB", "*G","*G1","*G2","*D","*D1", "*D2","*E","*E1","*E2","*Z", "NH1","NH2") atom.greek <- c("N","CA","C","O","CB", "G","G1","G2","D","D1", "D2", "E","E1","E2", "Z", "*","*") coords <- NULL; blank <- matrix(NA, nrow=3, ncol=length(atom.names)) ##-- Store coords as a 3 x Natm x Nres = [xyz,atm,res] matrix for(i in 1:length(res.list)) { res.blank <- blank res.ind <- which(res.list[i]==res.data) ### --- Start Edit: Wed Dec 8 18:30:07 PST 2010 ### blank.ind <- charmatch(atom.list[res.ind,1], atom.names, nomatch=0) + ### charmatch(substr(atom.list[res.ind,1],2,4), atom.greek, nomatch=0) ### ### Bug Fix for NMR structures: make sure we have no Hydrogens atoms.noh <- atom.list[res.ind,1] atoms.noh[ grep("H",atoms.noh) ] = "H" blank.ind <- charmatch(atoms.noh, atom.names, nomatch=0) + charmatch(substr(atoms.noh,2,4), atom.greek, nomatch=0) ### --- End Edit res.blank[,blank.ind[blank.ind!=0]] <- matrix(pdb$xyz[atom2xyz(res.ind[blank.ind!=0])], nrow=3) coords <- cbind(coords,res.blank) } natm <- length(atom.names); nxyz <- 3*natm nres <- length(coords)/(nxyz) dim(coords) <- c(3, natm, nres) dimnames(coords)=list(xyz=c("x","y","z"), atm=atom.names, res=res.list) ##-- Torsions for selected atoms co <- c(coords) chi1 <- torsion.xyz( co[ repadd( getinds( c("N","CA","CB","*G") )) ] ) chi11 <- torsion.xyz( co[ repadd( getinds( c("N","CA","CB","*G1") )) ]) ###chi12 <- torsion.xyz( co[ repadd( getinds( c("N","CA","CB","*G2") )) ]) chi2 <- torsion.xyz( co[ repadd( getinds( c("CA","CB","*G","*D") )) ]) chi21 <- torsion.xyz( co[ repadd( getinds( c("CA","CB","*G","*D1") )) ]) ###chi22 <- torsion.xyz( co[ repadd( getinds( c("CA","CB","*G","*D2") )) ]) ## New catch for atom name CG1 of ILE residues chi2.ILE <- torsion.xyz( co[ repadd( getinds( c("CA","CB","*G1","*D1") )) ]) chi3 <- torsion.xyz( co[ repadd( getinds( c("CB","*G","*D","*E") )) ]) chi31 <- torsion.xyz( co[ repadd( getinds( c("CB","*G","*D","*E1") )) ]) ##chi32 <- torsion.xyz( co[ repadd( getinds( c("CB","*G","*D","*E2") )) ]) chi4 <- torsion.xyz( co[ repadd( getinds( c("*G","*D","*E","*Z") )) ]) chi51 <- torsion.xyz( co[ repadd( getinds( c("*D","*E","*Z", "NH1") )) ]) ###chi52 <- torsion.xyz( co[ repadd( getinds( c("*D","*E","*Z", "NH2") )) ]) omega <- torsion.xyz( co[ repadd( c(4:9, 52:57) ) ]) alpha <- c(NA, torsion.xyz( co[ repadd( c(4:6,55:57,106:108,157:159) ) ])) phi <- c(NA, torsion.xyz( co[ repadd( c(7:9,52:60) ) ])) psi <- torsion.xyz( co[ repadd( c(1:9,52:54) ) ]) ## alpha c("CA","CA","CA","CA") ## omega c("CA","C","N","CA") ## phi c("C","N","CA","C") ## psi c("N","CA","C","N") ##- Old Output with redundent angles (e.g. chi22 etc.). ### out <- list(psi=psi, phi=phi[-(nres+1)], omega=omega, ### chi1=chi1, chi11=chi11, chi12=chi12, ### chi2=chi2, chi21=chi21, chi22=chi22, ### chi3=chi3, chi31=chi31, chi32=chi32, ### chi4=chi4, ### chi51=chi51, chi52=chi52, ### alpha=alpha[-(nres+1)], coords=coords) ##- New reduced output with only one chi per sidechain position tor.collapse <- function(a1, a11) { a <- a1 got.a11 <- !(is.na(a11)) a[got.a11] <- a11[got.a11] return(a) } chi1.F <- tor.collapse(chi1, chi11) chi2.F <- tor.collapse(chi2, chi21) chi2.F <- tor.collapse(chi2.F, chi2.ILE) chi3.F <- tor.collapse(chi3, chi31) ## New table/matrix for output tbl=cbind(phi[-(nres+1)], psi, chi1.F, chi2.F, chi3.F, chi4, chi51) colnames(tbl) <- c("phi", "psi", "chi1", "chi2", "chi3", "chi4", "chi5") rownames(tbl) <- res.list out <- list(psi=psi, phi=phi[-(nres+1)], omega=omega, chi1=chi1.F, ##chi11=chi11, chi12=chi12, chi2=chi2.F, ##chi21=chi21, chi22=chi22, chi3=chi3.F, ##chi31=chi31, chi32=chi32, chi4=chi4, chi5=chi51, ##chi51=chi51, chi52=chi52, alpha=alpha[-(nres+1)], coords=coords, tbl=tbl ) } bio3d/R/pdbseq.R0000644000176200001440000000100514707230356013057 0ustar liggesusers`pdbseq` <- function(pdb, inds=NULL, aa1=TRUE) { ## b.inds <- atom.select(pdb, "//B////CA/") ## seq.pdb(pdb, b.inds) if(is.null(inds)) inds <- atom.select(pdb, "calpha", verbose=FALSE) # inds <- which(pdb$calpha) # inds <- atom.select(pdb, "//////CA/", verbose=FALSE)$atom if(is.list(inds)) inds <- inds$atom if(aa1) { aa <- aa321(pdb$atom[inds,"resid"]) } else { aa <- pdb$atom[inds,"resid"] } if(length(aa) > 0) { names(aa) <- pdb$atom[inds,"resno"] } return(aa) } bio3d/R/aanma.pdbs.R0000644000176200001440000003216214707230356013615 0ustar liggesusers#' Ensemble Normal Mode Analysis with All-Atom ENM #' #' Perform normal mode analysis (NMA) on an ensemble of aligned protein #' structures using all-atom elastic network model (aaENM). #' #' @details This function builds elastic network model (ENM) using all heavy #' atoms and performs subsequent normal mode analysis (NMA) on a set of #' aligned protein structures obtained with function \code{\link{read.all}}. #' The main purpose is to automate ensemble normal mode analysis using #' all-atom ENMs. #' #' By default, the effective Hessian for all C-alpha atoms is calculated #' based on the Hessian built from all heavy atoms (including ligand atoms if #' \code{ligand=TRUE}). Returned values include aligned mode vectors and #' (when \code{full=TRUE}) a list containing the full \sQuote{nma} objects #' one per each structure. When \sQuote{rm.gaps=TRUE} the unaligned atoms #' are ommited from output. With default arguments \sQuote{rmsip} provides #' RMSIP values for all pairwise structures. #' #' When \code{outmodes} is provided and is not \sQuote{calpha} #' (e.g. \sQuote{noh}. See \code{\link{aanma}} for more details), the #' function simply returns a list of \sQuote{nma} objects, one per each #' structure, and no aligned mode vector is returned. In this case, the #' arguments \code{full}, \code{subspace}, and \code{rm.gaps} are ignored. #' This is equivalent to a wrapper function repeatedly calling #' \code{\link{aanma}}. #' #' @param pdbs an \sQuote{pdbs} object as obtained from \code{\link{read.all}}. #' @param fit logical, if TRUE C-alpha coordinate based superposition is #' performed prior to normal mode calculations. #' @param full logical, if TRUE return the complete, full structure, #' \sQuote{nma} objects. #' @param subspace number of eigenvectors to store for further analysis. #' @param rm.gaps logical, if TRUE obtain the hessian matrices for only #' atoms in the aligned positions (non-gap positions in all aligned #' structures). Thus, gap positions are removed from output. #' @param ligand logical, if TRUE ligand molecules are also included in the #' calculation. #' @param outpath character string specifing the output directory to #' which the PDB structures should be written. #' @param gc.first logical, if TRUE will call gc() first before mode calculation #' for each structure. This is to avoid memory overload when #' \code{ncore > 1}. #' @param ncore number of CPU cores used to do the calculation. #' @param ... additional arguments to \code{\link{aanma}}. #' #' @return Returns a list of \sQuote{nma} objects (\code{outmodes} is provided #' and is not \sQuote{calpha}) or an \sQuote{enma} object with the following #' components: #' \item{fluctuations }{ a numeric matrix containing aligned atomic #' fluctuations with one row per input structure. } #' \item{rmsip }{ a numeric matrix of pair wise RMSIP values (only the ten #' lowest frequency modes are included in the calculation). } #' \item{U.subspace }{ a three-dimensional array with aligned #' eigenvectors (corresponding to the subspace defined by the first N #' non-trivial eigenvectors (\sQuote{U}) of the \sQuote{nma} object). } #' \item{L }{ numeric matrix containing the raw eigenvalues with one row #' per input structure. } #' \item{full.nma }{ a list with a \code{nma} object for each input #' structure (available only when \code{full=TRUE}). } #' #' @seealso #' For normal mode analysis on single structure PDB: #' \code{\link{aanma}} #' #' For conventional C-alpha based normal mode analysis: #' \code{\link{nma}}, \code{\link{nma.pdbs}}. #' #' For the analysis of the resulting \sQuote{eNMA} object: #' \code{\link{mktrj.enma}}, \code{\link{dccm.enma}}, #' \code{\link{plot.enma}}, \code{\link{cov.enma}}. #' #' Similarity measures: #' \code{\link{sip}}, \code{\link{covsoverlap}}, #' \code{\link{bhattacharyya}}, \code{\link{rmsip}}. #' #' Related functionality: #' \code{\link{read.all}}. #' #' @author Xin-Qiu Yao & Lars Skjaerven #' #' @examples #' \donttest{ #' # Needs MUSCLE installed - testing excluded #' if(check.utility("muscle")) { #' #' ## Fetch PDB files and split to chain A only PDB files #' ids <- c("1a70_A", "1czp_A", "1frd_A", "1fxi_A", "1iue_A", "1pfd_A") #' files <- get.pdb(ids, split = TRUE, path = tempdir()) #' #' ## Sequence Alignement #' aln <- pdbaln(files, outfile = tempfile()) #' #' ## Read all pdb coordinates #' pdbs <- read.all(aln) #' #' ## Normal mode analysis on aligned data #' modes <- aanma(pdbs, rm.gaps=TRUE) #' #' ## Plot fluctuation data #' plot(modes, pdbs=pdbs) #' #' ## Cluster on Fluctuation similariy #' sip <- sip(modes) #' hc <- hclust(dist(sip)) #' col <- cutree(hc, k=3) #' #' ## Plot fluctuation data #' plot(modes, pdbs=pdbs, col=col) #' #' ## RMSIP is pre-calculated #' heatmap(1-modes$rmsip) #' #' ## Bhattacharyya coefficient #' bc <- bhattacharyya(modes) #' heatmap(1-bc) #' #' } #' } aanma.pdbs <- function(pdbs, fit=TRUE, full=FALSE, subspace=NULL, rm.gaps=TRUE, ligand=FALSE, outpath=NULL, gc.first=TRUE, ncore=NULL, ...) { if(!inherits(pdbs, "pdbs") || is.null(pdbs$all)) stop("input 'pdbs' should be a list object as obtained from 'read.all()'") ## Log the call cl <- match.call() if(!is.null(outpath)) dir.create(outpath, FALSE) ## Parallelized by parallel package ncore = setup.ncore(ncore) if(ncore>1) { prev.warn <- getOption("warn") options(warn=1) on.exit(options(warn=prev.warn)) } dots <- list(...) aligned.modes <- TRUE if('outmodes' %in% names(dots)) { if(dots$outmodes == 'noh') { warning(paste('Non C-alpha atoms are selected for output modes.', 'A plain list of "nma" objects will be returned.')) aligned.modes <- FALSE } else if(dots$outmodes == 'calpha') { ## use default select, i.e. 'non-gap' C-alpha positions. dots$outmodes <- NULL } else { stop('Unsupported "outmodes"') } } if("keep" %in% names(dots)) nm.keep <- dots$keep else nm.keep <- NULL if('rtb' %in% names(dots)) { rtb <- dots$rtb if(isTRUE(rtb)) { if('nmer' %in% names(dots) && dots$nmer!=1) stop( paste('Currently only nmer=1 is supported for', 'RTB based ensemble normal mode analysis') ) } } else { rtb <- formals(aanma.pdb)$rtb } if('reduced' %in% names(dots)) reduced <- dots$reduced else reduced <- formals(aanma.pdb)$reduced gaps.res <- gap.inspect(pdbs$ali) gaps.pos <- gap.inspect(pdbs$xyz) ## Number of modes to store in U.subspace if(is.null(subspace)) { keep <- length(gaps.pos$f.inds)-6 } else { keep <- subspace if (length(gaps.pos$f.inds) < (keep+6)) keep <- length(gaps.pos$f.inds)-6 } if(!is.null(nm.keep) && keep > nm.keep) keep <- nm.keep ## Convert from pdbs to pdb all.pdb <- pdbs2pdb(pdbs, all.atom=TRUE, ncore=ncore) ## Check if some structures are unavailable keep.inds <- which(sapply(all.pdb, is.pdb)) if(length(keep.inds) == 0) stop('No pdb file is found.') if(length(keep.inds) != length(all.pdb)) { warning(paste('Following pdb coordinates are not found: ', pdbs$id[-keep.inds], sep='')) pdbs <- trim(pdbs, row.inds=keep.inds, col.inds=1:ncol(pdbs$ali)) all.pdb <- all.pdb[keep.inds] } ## Remove ligand if(!ligand) all.pdb <- mclapply(all.pdb, trim, 'protein', mc.cores=ncore) ## Non-gap position for each pdb nogap.inds <- mclapply(1:length(all.pdb), function(i) { pdb <- all.pdb[[i]] pdb2aln.ind(pdbs, pdb, aln.id = pdbs$id[i], gaps.res$f.inds, file=NULL)$b }, mc.cores=ncore) if(fit) { cat('Fitting pdb structures') all.pdb <- mclapply(1:length(all.pdb), function(i) { cat('.') pdb <- all.pdb[[i]] xyz <- fit.xyz(pdbs$xyz[1, ], pdb$xyz, gaps.pos$f.inds, nogap.inds[[i]]$xyz) if(!is.null(outpath)) ofile <- file.path(outpath, basename(pdbs$id[i])) else ofile <- tempfile() write.pdb(pdb, xyz=xyz, file=ofile) read.pdb(ofile) }, mc.cores=ncore, mc.allow.recursive=FALSE) cat('done\n') } else { if(!is.null(outpath)) mclapply(1:length(all.pdb), function(i) write.pdb(all.pdb[[i]], file=file.path(outpath, basename(pdbs$id[i]))), mc.cores = ncore) } if(aligned.modes) { #### Prepare for NMA calculation #### ## Fluctuations for each structure if(rm.gaps) flucts <- matrix(NA, nrow=nrow(gaps.res$bin), ncol=length(gaps.res$f.inds)) else flucts <- matrix(NA, nrow=nrow(gaps.res$bin), ncol=ncol(gaps.res$bin)) ## List object to store each modes object if(full) all.modes <- list() else all.modes <- NULL ## 3D array- containing the modes vectors for each structure if(rm.gaps) modes.array <- array(NA, dim=c(length(gaps.pos$f.inds), keep, nrow(gaps.res$bin))) else modes.array <- array(NA, dim=c(ncol(pdbs$xyz), keep, nrow(gaps.res$bin))) ## store eigenvalues of the first modes L.mat <- matrix(NA, ncol=keep, nrow=nrow(gaps.res$bin)) ### Memory usage ### dims <- dim(modes.array) mem.usage <- sum(c(as.numeric(object.size(modes.array)), as.numeric(object.size(L.mat)), as.numeric(object.size(flucts)), as.numeric(object.size(matrix(NA, ncol=dims[3], nrow=dims[3]))) ))*2 if(full) { if(is.null(nm.keep)) tmpncol <- dims[2] else tmpncol <- nm.keep size.mat <- object.size(matrix(0.00000001, ncol=tmpncol, nrow=dims[1])) size.vec <- object.size(vector(length=dims[1], 'numeric')) tot.size <- ((size.mat * 2) + (size.vec * 4)) * length(pdbs$id) mem.usage <- mem.usage+tot.size } mem.usage=round(mem.usage/1048600,1) #### Print overview of scheduled calcualtion #### cat("\nDetails of Scheduled Calculation:\n") cat(paste(" ...", length(pdbs$id), "input structures", "\n")) if(keep>0) cat(paste(" ...", "storing", keep, "eigenvectors for each structure", "\n")) if(keep>0) cat(paste(" ...", "dimension of x$U.subspace: (", paste(dims[1], dims[2], dims[3], sep="x"), ")\n")) if(fit) cat(paste(" ...", "coordinate superposition prior to NM calculation", "\n")) if(full) cat(paste(" ... individual complete 'nma' objects will be stored", "\n")) if(rm.gaps) cat(paste(" ... aligned eigenvectors (gap containing positions removed) ", "\n")) if(reduced) cat(paste(" ... reduced all-atom ENM will be employed", "\n")) if(rtb) cat(paste(" ... rotation-translation block (RTB) approximation will be applied", "\n")) if(mem.usage>0) cat(paste(" ...", "estimated memory usage of final 'eNMA' object:", mem.usage, "Mb \n")) cat("\n") } ##### Start modes calculation ##### ## Initialize progress bar pb <- .init.pb(ncore, min=0, max=length(pdbs$id)) all.modes <- mclapply(1:length(all.pdb), function(i) { if(gc.first) gc() pdb <- all.pdb[[i]] nogap.inds <- nogap.inds[[i]] if(aligned.modes) { if(rm.gaps) capture.output( modes <- try(do.call(aanma, c(list(pdb=pdb, outmodes=nogap.inds), dots))) ) else capture.output( modes <- try(do.call(aanma, c(list(pdb=pdb), dots))) ) } else { capture.output( modes <- try(do.call(aanma, c(list(pdb=pdb), dots))) ) } if(inherits(modes, 'try-error')) { .close.pb(pb) stop(paste('Encounter errors in ', i, 'th structure', sep='')) } .update.pb(pb) modes$call <- NULL return( modes ) }, mc.cores=ncore) ## Finish progress bar .close.pb(pb) if(!aligned.modes) return( all.modes ) ##### Finalize calculation ##### for(i in 1:length(all.modes)) { if(rm.gaps) { flucts[i, ] <- all.modes[[i]]$fluctuations modes.array[,,i] <- all.modes[[i]]$U[, 7:(keep+6)] } else { flucts[i, !is.gap(pdbs$ali[i, ])] <- all.modes[[i]]$fluctuations modes.array[!is.gap(pdbs$xyz[i, ]),, i] <- all.modes[[i]]$U[, 7:(keep+6)] } L.mat[i, ] <- all.modes[[i]]$L[7:(keep+6)] } if(!full) all.modes <- NULL ##### RMSIP ###### rmsip.map <- NULL if(rm.gaps) { rmsip.map <- .calcRMSIP(modes.array, ncore=ncore) rownames(rmsip.map) <- basename(rownames(pdbs$xyz)) colnames(rmsip.map) <- basename(rownames(pdbs$xyz)) if(!fit) warning("rmsip calculated on non-fitted structures: ensure that your input coordinates are pre-fitted.") } if(fit) { xyz <- fit.xyz(fixed = pdbs$xyz[1, ], mobile = pdbs, fixed.inds = gaps.pos$f.inds, mobile.inds = gaps.pos$f.inds, ncore = ncore) } else { xyz <- pdbs$xyz } rownames(flucts) <- basename(rownames(pdbs$xyz)) out <- list(fluctuations=flucts, rmsip=rmsip.map, U.subspace=modes.array, L=L.mat, full.nma=all.modes, xyz=xyz, call=cl) class(out) <- "enma" return(out) } bio3d/R/dist.xyz.R0000644000176200001440000000476714707230356013417 0ustar liggesusers`dist.xyz` <- function(a, b=NULL, all.pairs=TRUE, ncore=1, nseg.scale=1){ ## if 'a' is a vector (or matrix) and ## 'b' is a matrix ## compare (each row of) 'a' to all rows in 'b' ## if 'a' is a matrix and 'b' is NULL ## call 'dist' on 'a' ## if 'a' is a vector and 'b' is NULL ## make 'a' a 3 col matrix and call 'dist' # Parallelized by parallel package (Fri Jul 5 19:58:32 EDT 2013) ncore <- setup.ncore(ncore) if(ncore > 1) { # Issue of serialization problem # Maximal number of cells of a double-precision matrix # that each core can serialize: (2^31-1-61)/8 R_NCELL_LIMIT_CORE = 2.68435448e8 R_NCELL_LIMIT = ncore * R_NCELL_LIMIT_CORE if(nseg.scale < 1) { warning("nseg.scale should be 1 or a larger integer\n") nseg.scale=1 } } if(is.xyz(a) && nrow(a)==1) a <- as.vector(a) if(is.xyz(b) && nrow(b)==1) b <- as.vector(b) if(is.vector(a)) { a <- matrix(a, ncol=3, byrow=TRUE) } else { a <- as.matrix(a) } if(ncol(a) != 3) message(paste('ncol(a) is not 3.\n', 'General n-dimension Euclidean distance ', 'between rows will be calculated.', sep='')) if(is.null(b)) { return(as.matrix(dist(a))) } else { if(is.vector(b)) { b <- matrix(b, ncol=3, byrow=TRUE) } else { b <- as.matrix(b) } } dima <- ncol(a) dimb <- ncol(b) if(dima != dimb) stop("Dimension miss-match of input 'a' and 'b'") if(dima != 3) { warning(paste("input does not have three columns: assuming you want", dima, "dimensional distances")) } if(!all.pairs) { ## distance between coresponding rows d <- rep( NA, max(nrow(a), nrow(b)) ) ind <- 1:min(nrow(a), nrow(b)) d[ind] <- sqrt( rowSums((a[ind,] - b[ind,])^2) ) ## return( sqrt( rowSums((a - b)^2) ) ) return(d) } else { if(ncore > 1) { RLIMIT = floor(R_NCELL_LIMIT / nrow(b)) nDataSeg = floor((nrow(a)-1)/RLIMIT) + 1 nDataSeg = floor(nDataSeg * nseg.scale) lenSeg = floor(nrow(a)/nDataSeg) d.l <- NULL for(i in 1:nDataSeg) { istart = (i-1)*lenSeg + 1 iend = if(i0) if(any(unlist(chk))) stop('Two or more communities from the same network are in one cluster.') ## rename grps to make sure the group number is assigned based on the rank of ## the network in the network list in which the group appears for the first time. ni <- as.numeric(sapply(str, "[[", 1)) ci <- as.numeric(sapply(str, "[[", 2)) minc <- tapply(1:length(grps), grps, function(i){ ind <- order(ni[i], ci[i])[1] c(ni[i[ind]], ci[i[ind]]) }, simplify=FALSE) minc <- do.call(rbind, minc) inds <- order(minc[, 1], minc[, 2]) rl <- rle(grps) rl$values[] <- match(rl$values, inds) grps <- inverse.rle(rl) ## Renumber communities and update 'nets' col <- vmd_colors() ## use vmd colors for(i in 1:length(nets)) { net <- nets[[i]] inds <- which(sapply(str, '[[', 1) %in% i) mycommid <- as.numeric(sapply(str, '[[', 2))[ inds ] mygrps <- grps[inds] names(mygrps) <- mycommid mygrps <- mygrps[order(mycommid)] # sort new grps according to old commun id # update node color membership <- as.character(net$communities$membership) igraph::V(net$network)$color[] <- as.character(col[mygrps[membership]]) # generate renumbered membership new.membership <- as.numeric(mygrps[membership]) names(new.membership) <- names(net$communities$membership) net$new.membership <- new.membership # update community network if(!is.null(net$community.network)) { # community.cij <- net$community.cij # rownames(community.cij) <- mygrps # colnames(community.cij) <- mygrps ## community.cij <- community.cij[order(mygrps), order(mygrps)] # community.network <- igraph::graph.adjacency(community.cij, # mode="undirected", # weighted=TRUE, # diag=FALSE) igraph::V(net$community.network)$color <- col[mygrps] # igraph::V(community.network)$size <- table(net$communities$membership) # net$community.cij <- community.cij # net$community.network <- community.network } nets[[i]] <- net } # return(list(dismat=dismat, hc=hc, grps=grps, nets=new.nets)) return( nets ) } bio3d/R/plot.dmat.R0000644000176200001440000000376514707230356013522 0ustar liggesusers"plot.dmat" <- function(x, key = TRUE, resnum.1 = c(1:ncol(x)), resnum.2 = resnum.1, axis.tick.space = 20, zlim = range(x, finite = TRUE), nlevels = 20, levels = pretty(zlim, nlevels), color.palette = bwr.colors, col = color.palette(length(levels) -1), axes = TRUE, key.axes, xaxs = "i", yaxs = "i", las = 1, grid = TRUE, grid.col = "yellow", grid.nx = floor(ncol(x)/30), grid.ny = grid.nx, center.zero = TRUE, flip=TRUE, ...) { if (missing(x)) { stop("no 'x' distance matrix specified") } if(center.zero) { if(zlim[1]<0) { ## make levels equidistant around 0 levels = pretty(c(-max(abs(zlim)),max(abs(zlim))), nlevels) } } mar.orig <- (par.orig <- par(c("mar", "las", "mfrow")))$mar on.exit(par(par.orig)) # Color key if(key) { w <- (3 + mar.orig[2]) * par("csi") * 2.54 layout(matrix(c(2, 1), ncol = 2), widths = c(1, lcm(w))) par(las = las) mar <- mar.orig mar[4] <- mar[2] mar[2] <- 1 par(mar = mar) plot.new() plot.window(xlim = c(0, 1), ylim = range(levels), xaxs = "i", yaxs = "i") rect(0, levels[-length(levels)], 1, levels[-1], col = col) if (missing(key.axes)) { if (axes) axis(4) } else key.axes box() } # Matrix plot mar <- mar.orig mar[4] <- 1 par(mar = mar) class(x)=NULL z <- as.matrix(as.data.frame(t(x))) nums <- seq(1,ncol(x),by=axis.tick.space) if(flip) { ylim = c(ncol(z),1) } else { ylim = c(1,ncol(z)) } image(x=1:ncol(x), y=1:nrow(x), z=z, zlim=zlim, col=col, yaxt="n", xaxt="n", ...) #xlab="Residue Number", ylab="Residue Number") axis(side=1, at=nums, labels=resnum.1[nums]) axis(side=2, at=nums, labels=resnum.2[nums]) if(grid) grid(grid.nx ,grid.ny, col=grid.col) box() } bio3d/R/read.crd.amber.R0000644000176200001440000000126414707230357014360 0ustar liggesusers read.crd.amber <- function(file, ...) { cl <- match.call() if(missing(file)) { stop("read.pdb: please specify a PDB 'file' for reading") } ##- Check if file exists locally or on-line if(!file.exists(file)) { stop("No input PDB file found: check filename") } ## parse CRD file with cpp function crd <- .read_crd(file) if(!is.null(crd$error)) stop(paste("Could not read", file)) else class(crd) <- c("amber", "crd") if(is.na(crd$time)) crd$time <- NULL if(!length(crd$velocities)>0) crd$velocities <- NULL if(!length(crd$box)>0) crd$box <- NULL crd$xyz <- as.xyz(crd$xyz) crd$call <- cl ## finished return(crd) } bio3d/R/write.ncdf.R0000644000176200001440000000730514707230357013656 0ustar liggesusers`write.ncdf` <- function(x, trjfile="R.ncdf", cell=NULL){ ##- Load ncdf4 package oops <- requireNamespace("ncdf4", quietly = TRUE) if(!oops) stop("Please install the ncdf4 package from CRAN") ## Error checking if(!is.matrix(x)) stop("input x should be a natom by nframe numeric matrix of coordinates") if(!is.null(cell)) { if(!is.matrix(cell)) stop("input cell should be a 6 by nframe numeric matrix") } nframe <- nrow(x) natom <- ncol(x)/3 ## Define dimensions frame <- ncdf4::ncdim_def(name="frame", units="", vals=c(1:nframe), unlim=TRUE, create_dimvar=FALSE) spatial <- ncdf4::ncdim_def(name="spatial", units="", vals=1:3, #c(1:3),#"xyz", unlim=FALSE, create_dimvar=TRUE) atom <- ncdf4::ncdim_def(name="atom", units="", vals=c(1:natom), unlim=FALSE, create_dimvar=FALSE) if(!is.null(cell)) { label <- ncdf4::ncdim_def(name="label", units="", vals=1:5, unlim=FALSE, create_dimvar=FALSE) cell_spatial <- ncdf4::ncdim_def(name="cell_spatial", units="", vals=1:3, unlim=FALSE, create_dimvar=TRUE) cell_angular <- ncdf4::ncdim_def(name="cell_angular", units="", vals=1:3, unlim=FALSE, create_dimvar=TRUE) } ## label <- dim.def.ncdf(name="label", units="", vals=1:5, ##??? ## unlim=FALSE, create_dimvar=FALSE) ## cells <- dim.def.ncdf(name="cell_spatial", units="", vals=1:3,# "abc", ## unlim=FALSE, create_dimvar=TRUE) ## cella <- dim.def.ncdf(name="cell_angular", units="", vals=1:3, ## #vals=c("alpha", "beta", "gamma"), ## unlim=FALSE, create_dimvar=TRUE) ## Define variables time <- ncdf4::ncvar_def(name="time", units="picosecond", dim=frame, missval=1e+30, prec="float") #"single" float coor <- ncdf4::ncvar_def(name="coordinates", units="angstrom", missval=1e+30, dim=list(spatial,atom,frame), prec="float")#"single" float if(!is.null(cell)) { cell_lengths <- ncdf4::ncvar_def(name="cell_lengths", units="angstrom", missval=1e+30, dim=list(cell_spatial, frame), prec="double") cell_angles <- ncdf4::ncvar_def(name="cell_angles", units="degree", missval=1e+30, dim=list(cell_angular, frame), prec="double") } ## cell.len <- var.def.ncdf(name="cell_lengths", units="angstrom", missval=1e+30, ## dim=list(cells,frame), prec="double") ## cell.ang <- var.def.ncdf(name="cell_angles", units="degrees", missval=1e+30, ## dim=list(cella,frame), prec="double") ## Create the file if(!is.null(cell)) { ncw <- ncdf4::nc_create( trjfile, list(time, coor, cell_lengths, cell_angles)) } else { ncw <- ncdf4::nc_create( trjfile, list(time, coor))#, cell.len, cell.ang) ) } ## Write data to file if(is.null(rownames(x))) ncdf4::ncvar_put(ncw, time, c(1:nframe), start=1, count=nframe) else ncdf4::ncvar_put(ncw, time, as.numeric(rownames(x)), start=1, count=nframe) ncdf4::ncvar_put( ncw, coor, t(x), start=c(1,1,1), count=c(3,natom,nframe)) if(!is.null(cell)) { ncdf4::ncvar_put( ncw, cell_lengths, t(cell[,1:3]), start=c(1,1), count=c(3,nframe)) ncdf4::ncvar_put( ncw, cell_angles, t(cell[,4:6]), start=c(1,1), count=c(3,nframe)) } ## Define Required Attributes ncdf4::ncatt_put(ncw, varid=0, attname="Conventions", attval="AMBER") ncdf4::ncatt_put(ncw, varid=0, attname="ConventionVersion", attval="1.0") ncdf4::ncatt_put(ncw, varid=0, attname="program",attval="bio3d") ncdf4::ncatt_put(ncw, varid=0, attname="programVersion", attval="1.2") null <- ncdf4::nc_close(ncw) } bio3d/R/lbio3d.R0000644000176200001440000000006114707230356012756 0ustar liggesusers"lbio3d" <- function () { ls("package:bio3d") } bio3d/R/layout.cna.R0000644000176200001440000000476514707230356013676 0ustar liggesuserslayout.cna <- function(x, pdb, renumber=TRUE, k=2, full=FALSE){ ## Return the coordinate centers of network communities ## as defined in "x$communities$membership" 'membership vector' ## using Calpha's in 'pdb'. ## ## If k=3 the xyz geometric centers are returned. if k<3 then ## multidimensional scaling is used for k space ordination. ## ## co2 <- layout.cna(net, pdb) ## co3 <- layout.cna(net, pdb, k=3) ## all2 <- layout.cna(net, pdb, k=2, full=TRUE) ## plot.cna(net, layout=co2) if( !inherits(pdb, "pdb") ) { stop("Input 'pdb' is not of class 'pdb' as obtained from 'read.pdb()'") } if(!k %in% c(1,2,3)) { stop("Input 'k' should have a value of 3, 2 or 1") } if(inherits(x, "cna") || is.list(x)) { if(!full) { ## We want community coords membership <- x$communities$membership } else { ## We want full all-atom/Calpha coords (check network for number) membership <- c(1:length(x$communities$membership)) } } else { if(full) { ## Assuming we want Calpha coords - this is a BIG assumption! membership <- c(1:sum(pdb$calpha)) } stop("Input object 'x' should be of class cna") } ## Renumber 'pdb' to match membership resno indices if(renumber) { pdb <- convert.pdb(pdb, renumber=TRUE, rm.h=FALSE, verbose=FALSE) } ##-- Check if the number of residues in 'pdb' equals ## the length of 'membership' vector notprotein.inds <- atom.select(pdb, "notprotein", verbose=FALSE) if(length(notprotein.inds$atom)>0){ num.res <- length(pdb$atom[pdb$calpha,"resno"]) + length(unique(pdb$atom[notprotein.inds$atom,7])) } if(length(notprotein.inds$atom)==0){ num.res <- length(pdb$atom[pdb$calpha,"resno"]) } ##-- Calculate the geometric center of each community n <- unique(membership[!is.na(membership)]) cent <- matrix(NA, nrow=length(n), ncol=3) a <- 1 for(i in n){ inds <- atom.select(pdb, resno=which(membership==i), elety="CA", verbose=FALSE) cent[a,] <- apply( matrix(pdb$xyz[inds$xyz], nrow=3), 1, mean) a <- a + 1 } if(k != 3) { ##-- Multidimensional scaling for 2D or 1D projection ## note. dist(centers) and dist.xyz(centers) give same answer if(nrow(cent) - 1 < k) { # e.g. only two communities cent <- cmdscale(dist(cent), k = nrow(cent) - 1) cent <- cbind(cent, matrix(0, nrow=nrow(cent), ncol=k-nrow(cent)+1)) } else { cent <- cmdscale(dist(cent),k=k) } } return(cent) } bio3d/R/seqbind.R0000644000176200001440000000173214707230357013236 0ustar liggesusersseqbind <- function(..., blank = "-") { cl <- match.call() objs <- list(...) are.null <- unlist(lapply(objs, is.null)) objs <- objs[!are.null] if(length(objs)==0) stop("Incompatible input") if(length(objs)==1) return(unlist(objs)) is.fasta <- function(x) return(inherits(x, "fasta")) are.fas <- unlist(lapply(objs, is.fasta)) are.vec <- unlist(lapply(objs, is.vector)) are.mat <- unlist(lapply(objs, is.matrix)) if(!all(are.vec | are.mat | are.fas)) stop("'Can combine only vectors and/or matrices'") objs[are.fas] <- lapply(objs[are.fas], function(x) x$ali) objs[are.vec] <- lapply(objs[are.vec], matrix, nrow = 1) max.col <- max(unlist(lapply(objs, ncol))) extend <- function(x, n, add) cbind(x, matrix(add, nrow=nrow(x), ncol=n-ncol(x))) objs <- lapply(objs, extend, n = max.col, add = blank) objs <- do.call(rbind, objs) out <- as.fasta(objs, id=rownames(objs)) out$call <- cl return(out) } bio3d/R/is.gap.R0000644000176200001440000000041214707230356012763 0ustar liggesusers`is.gap` <- function(x, gap.char=c("-",".")) { if(is.pdbs(x) || inherits(x, "fasta")) { return( colSums( matrix( as.logical(is.na(x$ali)+(x$ali %in% gap.char)), ncol=ncol(x$ali)) ) > 0 ) } else { return( as.logical( is.na(x) + (x %in% gap.char) ) ) } } bio3d/R/dssp.pdb.R0000644000176200001440000002742514707230356013334 0ustar liggesusers## NOTE: ## We do not support old-version DSSP any longer ## Please update your DSSP program to the newest version "dssp.pdb" <- function (pdb, exefile = "dssp", resno=TRUE, full=FALSE, verbose=FALSE, ...) { ## Log the call cl <- match.call() ## determine path to exefile os1 <- Sys.info()["sysname"] exefile <- .get.exepath(exefile) message(exefile) success <- .test.exefile(exefile) if(!success) { stop(paste("Launching external program 'dssp' (or 'mkdssp') failed\n", " make sure '", exefile, "' is in your search path", sep="")) } ## check atom composition - need backbone atoms to continue SSE analysis checkatoms <- TRUE if(checkatoms) { ## check on backbone atoms inds <- atom.select(pdb, "backbone", verbose=verbose) tmp <- trim.pdb(pdb, inds) resid <- paste(tmp$atom$resno, tmp$atom$chain, sep="-") musthave <- c("C", "CA", "N", "O") incomplete <- sapply(unique(resid), function(x) { inds <- which(resid==x) elety <- sort(tmp$atom$elety[inds]) if(!all(musthave %in% elety)) return(TRUE) else return(FALSE) }) if(all(incomplete)) stop("No residues found with a complete set of backbone atoms") if(any(incomplete)) warning(paste("Residues with missing backbone atoms detected:", paste(unique(resid)[incomplete], collapse=", "), collapse=" ")) ## check for non-protein atoms inds <- atom.select(pdb, "protein", verbose=verbose, inverse=TRUE) if(length(inds$atom) > 0) warning(paste("Non-protein residues detected in input PDB:", paste(unique(pdb$atom$resid[ inds$atom ]), collapse=", "))) } infile <- tempfile() outfile <- tempfile() write.pdb(pdb, file = infile) cmd <- paste(exefile, infile, outfile) if(verbose) cat(paste("Running command:\n ", cmd , "\n")) if(os1 == "Windows") { status <- shell(paste(shQuote(exefile), infile, outfile), ignore.stderr = !verbose, ignore.stdout = !verbose) } else { status <- system(cmd, ignore.stderr = !verbose, ignore.stdout = !verbose) } if(!(status %in% c(0,1))) { stop(paste("An error occurred while running command\n '", cmd, "'", sep="")) } ## ## For Debug (Tue Aug 3 18:22:11 PDT 2010) ## -- Following multi chain error report from Heiko Strathmann ## outfile <- "2jk2.dssp" ## outfile <- "4q21.dssp" ## trim <- function(s) { s <- sub("^ +", "", s) s <- sub(" +$", "", s) s[(s == "")] <- NA s } split.line <- function(x, split=" ") { tmp <- unlist(strsplit(x, split=split)) inds <- which(tmp!="") return(trim(tmp[inds])) } raw.lines <- readLines(outfile) unlink(c(infile, outfile)) type <- substring(raw.lines, 1, 3) raw.lines <- raw.lines[-(1:which(type == " #"))] ## delete chain breaking lines aa <- substring(raw.lines, 14, 14) if(any(aa == "!")) raw.lines <- raw.lines[-which(aa == "!")] cha <- substring(raw.lines, 12, 12) sse <- substring(raw.lines, 17, 17) res.name <- substring(raw.lines, 14, 14) res.id <- as.numeric(substring(raw.lines, 1, 5)) ## dssp residue IDs res.num <- as.numeric(substring(raw.lines, 6, 10)) ## Residue numbers res.insert <- substring(raw.lines, 11, 11) ## Insertion codes res.ind <- 1:length(res.num) ## Internal indices ## names for output sse vector ins <- trim(res.insert) ins[ ins=="" ] = NA names(sse) <- paste(res.num, cha, ins, sep="_") if(any(res.insert!=" ")) { if(resno) { warning("Insertions are found in PDB: Residue numbers may be incorrect. Try again with resno=FALSE") } else { ii <- diff(res.num) ii[ii==0] <- 1 #Consecutive numbers at insertion residues ii[ii<0] <- 2 #Jumps at possible chain termination res.num <- res.num[1] + c(0, cumsum(ii)) } } if(full) { ## Difference between sse res id and internal res indices diff <- res.id - res.ind names(diff) <- res.id ## Beta bridge partner residue ids bp1 <- as.numeric(substring(raw.lines, 26, 29)) bp2 <- as.numeric(substring(raw.lines, 30, 33)) bp1[bp1==0] <- NA bp2[bp2==0] <- NA ## Convert from dssp SSE residue IDs to internal residue indices bp1[ !is.na(bp1) ] <- as.vector(bp1[ !is.na(bp1) ] - diff[as.character(bp1[!is.na(bp1)])]) bp2[ !is.na(bp2) ] <- as.vector(bp2[ !is.na(bp2) ] - diff[as.character(bp2[!is.na(bp2)])]) ## H-bond records hbonds <- split.line(split.line(substring(raw.lines, 40, 83), split=","), split=" ") hbonds <- matrix(as.numeric(hbonds), ncol=8, byrow=TRUE) hbonds <- as.data.frame(hbonds) for(i in seq(1,7,by=2)) { hbonds[[i]][ which(hbonds[[i]]==0) ] <- NA ## Convert from relative to absolute residue numbering hmm <- res.id + hbonds[[i]] ## Convert from dssp SSE residue IDs to internal residue indices hbonds[[i]][ !is.na(hmm) ] <- as.vector(hmm[ !is.na(hmm) ] - diff[as.character(hmm[!is.na(hmm)])]) } ## Bind bridge pair and H-bond records to one matrix hbonds <- cbind(bp1, bp2, hbonds) cnames <- c("BP1", "BP2", "NH-O.1", "E1", "O-HN.1", "E2", "NH-O.2", "E3", "O-HN.2", "E4") colnames(hbonds) <- cnames if(resno) { ## 2 col matrix mapping the res.ind's to res.num and chain id tmp.map <- cbind(res.num, cha) row.names(tmp.map) <- res.ind ## Add an additional matrix holding the Chain IDs hbonds <- cbind(hbonds, data.frame(matrix(NA, ncol=6, nrow=nrow(tmp.map)), stringsAsFactors=FALSE)) colnames(hbonds) <- c(cnames, "ChainBP1", "ChainBP2", "Chain1", "Chain2", "Chain3", "Chain4") ## Add chain IDs for each entry tmp.inds <- which(!is.na(hbonds[,"BP1"])) tmp.names <- as.character(hbonds[tmp.inds,"BP1"]) hbonds[tmp.inds,"BP1"] <- as.numeric(tmp.map[tmp.names, "res.num"]) hbonds[tmp.inds,"ChainBP1"] <- tmp.map[tmp.names, "cha"] tmp.inds <- which(!is.na(hbonds[,"BP2"])) tmp.names <- as.character(hbonds[tmp.inds,"BP2"]) hbonds[tmp.inds,"BP2"] <- as.numeric(tmp.map[tmp.names, "res.num"]) hbonds[tmp.inds,"ChainBP2"] <- tmp.map[tmp.names, "cha"] tmp.inds <- which(!is.na(hbonds[,"NH-O.1"])) tmp.names <- as.character(hbonds[tmp.inds,"NH-O.1"]) hbonds[tmp.inds,"NH-O.1"] <- as.numeric(tmp.map[tmp.names, "res.num"]) hbonds[tmp.inds,"Chain1"] <- tmp.map[tmp.names, "cha"] tmp.inds <- which(!is.na(hbonds[,"O-HN.1"])) tmp.names <- as.character(hbonds[tmp.inds,"O-HN.1"]) hbonds[tmp.inds,"O-HN.1"] <- as.numeric(tmp.map[tmp.names, "res.num"]) hbonds[tmp.inds,"Chain2"] <- tmp.map[tmp.names, "cha"] tmp.inds <- which(!is.na(hbonds[,"NH-O.2"])) tmp.names <- as.character(hbonds[tmp.inds,"NH-O.2"]) hbonds[tmp.inds,"NH-O.2"] <- as.numeric(tmp.map[tmp.names, "res.num"]) hbonds[tmp.inds,"Chain3"] <- tmp.map[tmp.names, "cha"] tmp.inds <- which(!is.na(hbonds[,"O-HN.2"])) tmp.names <- as.character(hbonds[tmp.inds,"O-HN.2"]) hbonds[tmp.inds,"O-HN.2"] <- as.numeric(tmp.map[tmp.names, "res.num"]) hbonds[tmp.inds,"Chain4"] <- tmp.map[tmp.names, "cha"] ## Set row names to "RESNUM-CHAINID" row.names(hbonds) <- apply(tmp.map, 1, paste, collapse="-") } } else { hbonds <- NULL } # column numbers of phi and psi are different between # the old and new versions of DSSP phi <- as.numeric(substring(raw.lines, 104, 109)) psi <- as.numeric(substring(raw.lines, 110, 115)) acc <- as.numeric(substring(raw.lines, 35, 38)) h.res <- bounds(res.num[which(sse == "H")], pre.sort=FALSE) g.res <- bounds(res.num[which(sse == "G")], pre.sort=FALSE) e.res <- bounds(res.num[which(sse == "E")], pre.sort=FALSE) t.res <- bounds(res.num[which(sse == "T")], pre.sort=FALSE) h.ind <- h.res; g.ind <- g.res e.ind <- e.res; t.ind <- t.res if(length(h.res) > 0) { res.ind <- which(sse == "H") h.ind[, "end"] <- res.ind[cumsum(h.res[, "length"])] h.ind[, "start"] <- h.ind[, "end"] - h.res[, "length"] + 1 } if(length(g.res) > 0) { res.ind <- which(sse == "G") g.ind[, "end"] <- res.ind[cumsum(g.res[, "length"])] g.ind[, "start"] <- g.ind[, "end"] - g.res[, "length"] + 1 } if(length(e.res) > 0) { res.ind <- which(sse == "E") e.ind[, "end"] <- res.ind[cumsum(e.res[, "length"])] e.ind[, "start"] <- e.ind[, "end"] - e.res[, "length"] + 1 } if(length(t.res) > 0) { res.ind <- which(sse == "T") t.ind[, "end"] <- res.ind[cumsum(t.res[, "length"])] t.ind[, "start"] <- t.ind[, "end"] - t.res[, "length"] + 1 } if(!resno) { h.res <- h.ind; g.res <- g.ind e.res <- e.ind; t.res <- t.ind } sheet = list(start=NULL, end=NULL, length=NULL, chain=NULL) helix = list(start=NULL, end=NULL, length=NULL, chain=NULL, type=NULL) turn = sheet ## ToDo: Add "type" for turns and strands too... if(length(h.res)>1) { # if(is.null(nrow(h.res))) # h.s <- as.matrix(t(h.res)) helix$start = c(helix$start,h.res[, "start"]) helix$end = c(helix$end, h.res[, "end"]) helix$length = c(helix$length, h.res[, "length"]) helix$chain = c(helix$chain, cha[h.ind[, "start"]]) helix$type = c(helix$type, sse[h.ind[, "start"]]) } if(length(g.res)>1) { # if(is.null(nrow(g.res))) # g.s <- as.matrix(t(g.res)) helix$start = c(helix$start,g.res[, "start"]) helix$end = c(helix$end, g.res[, "end"]) helix$length = c(helix$length, g.res[, "length"]) helix$chain = c(helix$chain, cha[g.ind[, "start"]]) helix$type = c(helix$type, sse[g.ind[, "start"]]) } if(length(helix$start) > 0) helix <- lapply(helix, function(x) {names(x) <- 1:length(helix$start); return(x)}) if(length(e.res)>1) { # if(is.null(nrow(e.res))) # e.s <- as.matrix(t(e.res)) sheet$start = c(sheet$start,e.res[, "start"]) sheet$end = c(sheet$end, e.res[, "end"]) sheet$length = c(sheet$length, e.res[, "length"]) sheet$chain = c(sheet$chain, cha[e.ind[, "start"]]) } if(length(sheet$start) > 0) sheet <- lapply(sheet, function(x) {names(x) <- 1:length(sheet$start); return(x)}) if(length(t.res)>1) { # if(is.null(nrow(t.res))) # t.s <- as.matrix(t(t.res)) turn$start = c(turn$start,t.res[, "start"]) turn$end = c(turn$end, t.res[, "end"]) turn$length = c(turn$length, t.res[, "length"]) turn$chain = c(turn$chain, cha[t.ind[, "start"]]) } if(length(turn$start) > 0) turn <- lapply(turn, function(x) {names(x) <- 1:length(turn$start); return(x)}) out <- list(helix = helix, sheet = sheet, hbonds = hbonds, turn = turn, phi = phi, psi = psi, acc = acc, sse = sse, call=cl) class(out) <- "sse" return(out) } bio3d/R/vmd.cnapath.R0000644000176200001440000001703714707230357014021 0ustar liggesusersvmd.cnapath <- function(x, pdb, out.prefix = "vmd.cnapath", spline = FALSE, colors = c("blue", "red"), launch = FALSE, exefile=NULL, mag=1.0, ...) { if(!inherits(x, "cnapath")) { if(is.list(x) && inherits(x[[1]], "cnapath")) { if(length(x)==1) { x <- x[[1]] } else { x2 <- do.call(mapply, c(list("c"), x, list(SIMPLIFY=FALSE))) x2$grp <- rep(1:length(x), times=sapply(x, function(x) length(x$path))) class(x2) <- "cnapath" x <- x2 } } else { stop("Input x is not a (or a list of) 'cnapath' object(s)") } } # Check colors if(is.character(colors)) { cols <- colors } else { if(length(colors) == 1 && is.numeric(colors)) cols <- vmd_colors()[colors + 1] else stop("colors should be a character vector or an integer indicating a VMD color ID") } if(!is.null(x$grp)) { if(length(cols) != max(x$grp)) { stop("Color length does not match input x") } cols <- lapply(cols, colorRamp) } else { cols <- colorRamp(cols) } file = paste(out.prefix, ".vmd", sep="") pdbfile = paste(out.prefix, ".pdb", sep="") res <- unique(unlist(x$path)) ind.source <- match(x$path[[1]][1], res) ind.sink <- match(x$path[[1]][length(x$path[[1]])], res) ca.inds <- atom.select(pdb, elety="CA", verbose = FALSE) res.pdb <- pdb$atom[ca.inds$atom[res], "resno"] chain.pdb <- pdb$atom[ca.inds$atom[res], "chain"] names(res.pdb) <- chain.pdb # make VMD atom selection string .vmd.atomselect <- function(res) { if(any(is.na(names(res)))) return(paste("resid", paste(res, collapse=" "))) else { res <- res[order(names(res))] inds <- bounds(names(res), dup.inds=TRUE) string <- NULL for(i in 1:nrow(inds)) { string <- c(string, paste("chain", names(res)[inds[i, "start"]], "and resid", paste(res[inds[i, "start"]:inds[i, "end"]], collapse=" "))) } return(paste(string, collapse=" or ")) } } # Draw molecular structures cat("mol new ", pdbfile, " type pdb first 0 last -1 step 1 filebonds 1 autobonds 1 waitfor all mol delrep 0 top mol representation NewCartoon 0.300000 10.000000 4.100000 0 mol color colorID 8 mol selection {all} mol material Opaque mol addrep top mol representation Licorice 0.300000 10.000000 10.000000 mol color name mol selection {(", .vmd.atomselect(res.pdb[c(ind.source, ind.sink)]), ")} mol material Opaque mol addrep top mol representation VDW 0.4 10 mol color colorID 2 mol selection {(", .vmd.atomselect(res.pdb), ") and name CA} mol material Opaque mol addrep top ", file=file) # Draw paths cat("\n# start drawing suboptimal paths\n", file=file, append=TRUE) rad <- function(r, rmin, rmax, radmin = 0.01, radmax = 0.5) { (rmax - r) / (rmax - rmin) * (radmax - radmin) + radmin } rmin <- min(x$dist) rmax <- max(x$dist) # turn off display update for speed up cat("display update off\n", file=file, append=TRUE) # find start color id for new colors cat("set color_start [colorinfo num]\n", file=file, append=TRUE) if(!spline) { col.mat <- array(list(), dim=c(length(res), length(res))) conn <- matrix(0, length(res), length(res)) rr <- conn for(j in 1:length(x$path)) { y = x$path[[j]] for(i in 1:(length(y)-1)) { i1 = match(y[i], res) i2 = match(y[i+1], res) if(conn[i1, i2] == 0) conn[i1, i2] = conn[i2, i1] = 1 r = rad(x$dist[j], rmin, rmax, radmax = 0.5*mag) ic = (rmax - x$dist[j]) / (rmax - rmin) if(is.list(cols)) { col = list(cols[[x$grp[j]]](ic)[1:3]) } else { col = list(cols(ic)[1:3]) } if(r > rr[i1, i2]) { rr[i1, i2] = rr[i2, i1] = r col.mat[i1, i2] = col.mat[i2, i1] = col } } } rownames(conn) <- res colnames(conn) <- res rownames(rr) <- res colnames(rr) <- res k = 0 for(i in 1:(nrow(conn)-1)) { for(j in (i+1):ncol(conn)) { if(conn[i, j] == 1) { if(!is.numeric(colors)) { # col = as.numeric(col2rgb(col.mat[i, j]))/255 col = unlist(col.mat[i, j]) / 255 cat("color change rgb [expr ", k, " + $color_start] ", paste(col, collapse=" "), "\n", sep="", file=file, append=TRUE) cat("graphics top color [expr ", k, " + $color_start]\n", sep="", file=file, append=TRUE) } else { cat("graphics top color ", colors, "\n", sep="", file=file, append=TRUE) } cat("draw cylinder {", pdb$xyz[atom2xyz(ca.inds$atom[res[i]])], "} {", pdb$xyz[atom2xyz(ca.inds$atom[res[j]])], "} radius", rr[i, j], " resolution 6 filled 0\n", sep=" ", file=file, append=TRUE) k = k + 1 } } } } else { k = 0 for(j in 1:length(x$path)) { # get spline coordinates # interpolate at 10 points evenly distributed between two nodes xyz = matrix(pdb$xyz[atom2xyz(ca.inds$atom[x$path[[j]]])], nrow=3) spline.x = spline(xyz[1, ], n = ncol(xyz)+(ncol(xyz)-1)*10)$y spline.y = spline(xyz[2, ], n = ncol(xyz)+(ncol(xyz)-1)*10)$y spline.z = spline(xyz[3, ], n = ncol(xyz)+(ncol(xyz)-1)*10)$y # spline radius r = rad(x$dist[j], rmin, rmax, radmax=0.5*mag) # spline color ic = (rmax - x$dist[j]) / (rmax - rmin) if(is.list(cols)) { col = cols[[x$grp[j]]](ic)[1:3] / 255 } else { col = cols(ic)[1:3] / 255 } if(!is.numeric(colors)) { cat("color change rgb [expr ", k, " + $color_start] ", paste(col, collapse=" "), "\n", sep="", file=file, append=TRUE) cat("graphics top color [expr ", k, " + $color_start]\n", sep="", file=file, append=TRUE) } else { cat("graphics top color ", colors, "\n", sep="", file=file, append=TRUE) } for(i in 1:(length(spline.x) - 1)) { cat("draw cylinder {", spline.x[i], spline.y[i], spline.z[i], "} {", spline.x[i+1], spline.y[i+1], spline.z[i+1], "} radius", r, " resolution 6 filled 0\n", sep=" ", file=file, append=TRUE) } k = k + 1 } } # turn on display update cat("display update on\n", file=file, append=TRUE) write.pdb(pdb, file=pdbfile) if(launch) { ## Find default path to external program if(is.null(exefile)) { exefile <- 'vmd' if(nchar(Sys.which(exefile)) == 0) { os1 <- Sys.info()["sysname"] exefile <- switch(os1, Windows = 'vmd.exe', # to be updated Darwin = '/Applications/VMD\\ 1.9.*app/Contents/MacOS/startup.command', 'vmd' ) } } if(nchar(Sys.which(exefile)) == 0) stop(paste("Launching external program failed\n", " make sure '", exefile, "' is in your search path", sep="")) cmd <- paste(exefile, "-e", file) os1 <- .Platform$OS.type if (os1 == "windows") { shell(shQuote(cmd)) } else{ system(cmd) } } } vmd.ecnapath <- function(x, ...) { if(!inherits(x, "ecnapath")) { stop("The input 'x' must be an object of class 'ecnapath'.") } vmd.cnapath(x, ...) } bio3d/R/plot.matrix.loadings.R0000644000176200001440000001411114707230357015664 0ustar liggesusers#' Plot Residue-Residue Matrix Loadings #' #' Plot residue-residue matrix loadings of a particular PC that is obtained from a #' principal component analysis (PCA) of cross-correlation or distance matrices. #' #' The function plots loadings (the eigenvectors) of PCA performed on a set of matrices #' such as distance matrices from an ensemble of crystallographic structures #' and residue-residue cross-correlations or covariance matrices derived from #' ensemble NMA or MD simulation replicates (See \code{\link{pca.array}} for detail). #' Loadings are displayed as a matrix with dimension the same as the input matrices #' of the PCA. Each element of loadings represents the proportion that the corresponding #' residue pair contributes to the variance in a particular PC. The plot can be used #' to identify key regions that best explain the variance of underlying matrices. #' #' @param x the results of PCA as obtained from \code{\link{pca.array}}. #' @param pc the principal component along which the loadings will be shown. #' @param resno numerical vector or \sQuote{pdb} object as obtained from \code{\link{read.pdb}} #' to show residue number on the x- and y-axis. #' @param sse a \sQuote{sse} object as obtained from \code{\link{dssp}} or \code{\link{stride}}, #' or a \sQuote{pdb} object as obtained from \code{\link{read.pdb}} to show secondary #' structural elements along x- and y-axis. #' @param mask.n the number of elements from the diagonal to be masked from output. #' @param plot logical, if FALSE no plot will be shown. #' @param ... additional arguments passed to \code{\link{plot.dccm}}. #' #' @return Plot and also returns a numeric matrix containing the loadings. #' #' @seealso #' \code{\link{plot.dccm}}, \code{\link{pca.array}} #' #' @author Xin-Qiu Yao #' #' @references #' Skjaerven, L. et al. (2014) \emph{BMC Bioinformatics} \bold{15}, 399. #' Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. #' #' @examples #' \dontrun{ #' attach(transducin) #' gaps.res <- gap.inspect(pdbs$ali) #' sse <- pdbs$sse[1, gaps.res$f.inds] #' #' # calculate modes #' modes <- nma(pdbs, ncore=NULL) #' #' # calculate cross-correlation matrices from the modes #' cijs <- dccm(modes, ncore=NULL)$all.dccm #' #' # do PCA on cross-correlation matrices #' pc <- pca.array(cijs) #' #' # plot loadings #' l <- plot.matrix.loadings(pc, sse=sse) #' l[1:10, 1:10] #' #' # plot loadings with elements 10-residue separated from diagonal masked #' plot.matrix.loadings(pc, sse=sse, mask.n=10) #' #' } plot.matrix.loadings <- function(x, pc=1, resno=NULL, sse=NULL, mask.n=0, plot=TRUE, ...) { if(!inherits(x, 'pca') && grepl('pca.array', x$call)) stop('Input x must be a "pca" object obtained from "pca.array()".') args.plot.dccm <- formals(plot.dccm) dots <- list(...) # args <- dots[names(dots) %in% names(args.plot.dccm)] args <- dots if('segment.min' %in% names(dots)) segment.min <- dots$segment.min else segment.min <- args.plot.dccm$segment.min if('show' %in% names(dots)) show <- dots$show else show <- as.character(args.plot.dccm$show)[2] if(is.na(show)) show <- 'full' if(!'main' %in% names(args)) args$main <- paste('Loadings of PC ', pc, ' (', round(x$L[pc]/sum(x$L)*100, 1), '%)', sep='') ## compute the dim of matrix M <- nrow(x$U) N <- (1 + sqrt(1 + 8*M)) / 2 is.wholenumber <- function(x, tol = .Machine$double.eps^0.5) abs(x - round(x)) < tol if(!is.wholenumber(N)) stop('Wrong dimension of eigenvectors detected. Check the input x.') if(is.null(resno)) resno <- 1:N if(is.pdb(sse)) { sse <- unname(pdb2sse(sse)) } else if(inherits(sse, 'sse')) { if(!is.null(sse$sse)) sse <- unname(sse$sse) } if(is.character(sse)) sse <- bounds.sse(sse) args$resno <- resno args$sse <- sse ## normalize x$U[, pc] <- x$U[, pc] / max(abs(x$U[, pc])) lmat <- matrix(0, N, N) lmat[upper.tri(lmat)] <- x$U[, pc] lmat[lower.tri(lmat)] <- t(lmat)[lower.tri(lmat)] ## mask diag tmat <- matrix(1, N, N) tmat[diag.ind(tmat, n=mask.n)] <- 0 tmat[lower.tri(tmat)] <- t(tmat)[lower.tri(tmat)] lmat <- lmat * as.vector(tmat) args$x <- lmat if(plot) { do.call(plot.dccm, args) ## add grids draw.sse.grid <- function(sse) { # vertical grid.segments( x0 = sse$start, y0 = switch(show, full=1, upper=N, lower=1), x1 = sse$start, y1 = switch(show, full=N, upper=sse$start, lower=sse$start), gp=gpar(col="gray80", lty=2, lwd=0.3), default.units = "native", vp=vpPath("plot_01.toplevel.vp", "plot_01.panel.1.1.vp") ) # horizental grid.segments( x0 = switch(show, full=1, upper=1, lower=N), y0 = sse$start, x1 = switch(show, full=N, upper=sse$start, lower=sse$start), y1 = sse$start, gp=gpar(col="gray80", lty=2, lwd=0.3), default.units = "native", vp=vpPath("plot_01.toplevel.vp", "plot_01.panel.1.1.vp") ) } if(!is.null(sse)) { if(length(sse$helix$start) > 0) { ## dont have a pdb$helix$length if( is.null(sse$helix$length) ) sse$helix$length <- (sse$helix$end+1)-sse$helix$start inds <- which(sse$helix$length >= segment.min) # sse$helix$start <- match(sort(sse$helix$start[inds]), resno) # sse$helix$end <- match(sort(sse$helix$end[inds]), resno) draw.sse.grid(sse$helix) } if(length(sse$sheet$start) > 0) { ## dont have a pdb$sheet$length if( is.null(sse$sheet$length) ) sse$sheet$length <- (sse$sheet$end+1)-sse$sheet$start inds <- which(sse$sheet$length >= segment.min) # sse$sheet$start <- match(sort(sse$sheet$start[inds]), resno) # sse$sheet$end <- match(sort(sse$sheet$end[inds]), resno) draw.sse.grid(sse$sheet) } } } invisible( lmat ) } bio3d/R/plot.cmap.R0000644000176200001440000000523714707230356013511 0ustar liggesusersplot.cmap <- function(x, col=2, pch=16, main="Contact map", sub="", xlim=NULL, ylim=NULL, xlab = "Residue index", ylab = xlab, axes=TRUE, ann=par("ann"), sse=NULL, sse.type="classic", sse.min.length=5, bot=TRUE, left=TRUE, helix.col="gray20", sheet.col="gray80", sse.border=FALSE, add=FALSE, ...) { dims <- dim(x) if(is.null(xlim)) xlim <- c(1, dims[1]) if(is.null(ylim)) ylim <- c(1, dims[2]) if(!add) { plot.new() } else { axes <- FALSE xlab <- NA; ylab <- NA; main <- NA; sub <- NA; sse <- NULL; } plot.window(xlim=xlim, ylim=ylim, ...) inds <- which(x==1, arr.ind=TRUE) points(inds, pch=pch, col=col) if(!is.null(sse)) { ## Obtain SSE vector from PDB input 'sse' if(is.pdb(sse)) sse$sse <- pdb2sse(sse) h <- bounds( which(sse$sse == "H") ) e <- bounds( which(sse$sse == "E") ) ## Remove short h and e elements that can crowd plots if(length(h) > 0) { inds <- which(h[,"length"]>=sse.min.length) h <- h[inds,,drop=FALSE] } else { h <- NULL } if(length(e) > 0) { inds <- which(e[,"length"]>=sse.min.length) e <- e[inds,,drop=FALSE] } else { e <- NULL } if(sse.type != "classic") warning("Only sse.type='classic' is currently available, 'fancy' coming soon") off <- c(0.006, 0.039) if(left) { ## Determine bottom and top of margin region bo <- min(xlim) - (diff(xlim)*off[1]) to <- min(xlim) - (diff(xlim)*off[2]) if(length(h) > 0) rect(xleft=bo, xright=to, ybottom=h[,"start"], ytop=h[,"end"], col=helix.col, border=sse.border) if(length(e) > 0) rect(xleft=bo, xright=to, ybottom=e[,"start"], ytop=e[,"end"], col=sheet.col, border=sse.border) } if(bot){ to <- min(ylim) - (diff(ylim)*off[1]) bo <- min(ylim) - (diff(ylim)*off[2]) if(length(h) > 0) rect(xleft=h[,"start"], xright=h[,"end"], ybottom=bo, ytop=to, col=helix.col, border=sse.border) if(length(e) > 0) rect(xleft=e[,"start"], xright=e[,"end"], ybottom=bo, ytop=to, col=sheet.col, border=sse.border) } } if(axes) { box() at <- axTicks(1); at[1] = 1 axis(1, at) axis(2, at) } if(ann) { # if(is.null(xlab)) xlab=xy$xlab # if(is.null(ylab)) ylab=xy$ylab title(main=main, sub=sub, xlab=xlab, ylab=ylab, ...) } } bio3d/R/pdbs2pdb.R0000644000176200001440000000623014707230356013306 0ustar liggesusers"pdbs2pdb" <- function(pdbs, inds=NULL, rm.gaps=FALSE, all.atom=FALSE, ncore=NULL) { if(!inherits(pdbs, "pdbs")) { stop("Input 'pdbs' should be of class 'pdbs', e.g. from pdbaln() or read.fasta.pdb()") } if(is.null(inds)) inds <- seq(1, length(pdbs$id)) ncore <- setup.ncore(ncore) ## Set indicies gaps.res <- gap.inspect(pdbs$ali) gaps.pos <- gap.inspect(pdbs$xyz) if(all.atom) { if(is.null(pdbs$all)) { # check file paths saved in pdbs$id if(all(file.exists(pdbs$id[inds]))) { tpdbs <- read.all(trim(pdbs, row.inds=inds, col.inds=1:ncol(pdbs$ali)), verbose=FALSE) if(rm.gaps) { tpdbs <- trim(tpdbs, col.inds=gaps.res$f.inds) } else { tpdbs <- trim(tpdbs) } return(pdbs2pdb(tpdbs, inds=NULL, rm.gaps=rm.gaps, all.atom=TRUE, ncore=ncore)) } else { stop("With 'all.atom=TRUE', input 'pdbs' must be obtained from read.all() or pdbs$id refers to existing files") } } } all.pdbs <- mclapply(inds, function(j) { ## Temporaray file fname <- tempfile(fileext = "pdb") ## Set indices for this structure only f.inds <- NULL if(rm.gaps) { f.inds$res <- gaps.res$f.inds f.inds$pos <- gaps.pos$f.inds } else { f.inds$res <- which(gaps.res$bin[j,]==0) f.inds$pos <- atom2xyz(f.inds$res) } if(length(f.inds$res) > 0) { ## Make a temporary PDB object if(all.atom){ f.inds$res <- which( (pdbs$all.grpby %in% f.inds$res) & !is.gap(pdbs$all.elety[j, ]) ) f.inds$pos <- atom2xyz(f.inds$res) all.chain <- vec2resno(pdbs$chain[j, ], pdbs$all.grpby) if(!is.null(pdbs$insert)) { all.insert <- vec2resno(pdbs$insert[j, ], pdbs$all.grpby) insert <- all.insert[f.inds$res] } else { insert <- rep('', length(f.inds$res)) } xyz <- pdbs$all[j,f.inds$pos] resno <- pdbs$all.resno[j,f.inds$res] resid <- pdbs$all.resid[j,f.inds$res] chain <- all.chain[f.inds$res] elety <- pdbs$all.elety[j,f.inds$res] het <- pdbs$all.hetatm[[j]] if(!is.null(het)) { xyz <- c(xyz, het$xyz) resno <- c(resno, het$atom[, 'resno']) resid <- c(resid, het$atom[, 'resid']) chain <- c(chain, het$atom[, 'chain']) elety <- c(elety, het$atom[, 'elety']) insert <- c(insert, rep('', nrow(het$atom))) } write.pdb(pdb=NULL, xyz=xyz, resno=resno, resid=resid, chain=chain, insert=insert, elety=elety, file=fname) } else { if(!is.null(pdbs$insert)) { insert <- pdbs$insert[j, f.inds$res] } else { insert <- rep('', length(f.inds$res)) } write.pdb(pdb=NULL, xyz =pdbs$xyz[j,f.inds$pos], resno=pdbs$resno[j,f.inds$res], resid=pdbs$resid[j,f.inds$res], chain=pdbs$chain[j,f.inds$res], insert=insert, file=fname) } read.pdb(fname) } else { NULL } }, mc.cores=ncore ) names(all.pdbs) <- sub(".pdb$", "", basename(pdbs$id[inds])) return(all.pdbs) } bio3d/R/as.pdb.mol2.R0000644000176200001440000000275314707230356013633 0ustar liggesusers as.pdb.mol2 <- function(mol, ...) { cl <- match.call() natoms <- nrow(mol$atom) pdbn <- list() allset <- FALSE resid <- strtrim(mol$atom$resid, 3) chain <- NULL if(!is.null(mol$substructure)) { if(all(c("root_atom", "subst_type", "chain") %in% colnames(mol$substructure))) { key1 <- paste(mol$atom$resno, mol$atom$resid, sep="-") rownames(mol$substructure) <- key1[ mol$subs$root_atom ] resid <- mol$substructure[key1, "sub_type"] chain <- mol$substructure[key1, "chain"] allset <- TRUE } } if(!allset & length(unique(mol$resid)) > 1) { warning("insuffient data in SUBSTRUCTURE to set residue and chain identifiers in PDB") } pdb <- as.pdb.default(pdb = NULL, xyz = mol$xyz, type = rep("ATOM", natoms), resno = mol$atom$resno, resid = resid, eleno = mol$eleno, elety = mol$atom$elena, chain = chain, insert = NULL, alt = NULL, o=NULL, b=NULL, segid=NULL, elesy=unlist(lapply(strsplit(mol$atom$elety, split="[.]"), function(x) x[1])), charge=mol$atom$charge) pdb$call <- cl return(pdb) } bio3d/R/angle.xyz.R0000644000176200001440000000145714707230356013533 0ustar liggesusers"angle.xyz" <- function(xyz, atm.inc=3) { if(!is.vector(xyz) || !is.numeric(xyz)) stop("input 'xyz' should be a numeric vector") natm <- length(xyz)/3 if(natm < 3) stop("Need at least three atoms to define an angle") if(natm %% 1 != 0) stop("There should be three 'xyz' elements per atom") m.xyz <- matrix(xyz, nrow=3) atm.inds <- c(1:3); out <- NULL while(atm.inds[3] <= natm) { if( any(is.na( m.xyz[,atm.inds] )) ) { ang <- NA } else { d1 <- m.xyz[,atm.inds[1]] - m.xyz[,atm.inds[2]] d2 <- m.xyz[,atm.inds[3]] - m.xyz[,atm.inds[2]] ang <- sum(d1*d2) / (sqrt(sum(d1^2)) * sqrt(sum(d2^2)) ) ang[ang > 1] <- 1; ang[ang < -1] <- -1 ang <- acos(ang) * (180/pi) } out <- c(out, ang) atm.inds <- atm.inds + atm.inc } return(out) } bio3d/R/clean.pdb.R0000644000176200001440000003356214707230356013444 0ustar liggesusers#' Inspect And Clean Up A PDB Object #' #' Inspect alternative coordinates, chain breaks, bad residue #' numbering, non-standard/unknow amino acids, etc. Return #' a 'clean' pdb object with fixed residue numbering and optionally #' relabeled chain IDs, corrected amino acid names, removed water, #' ligand, or hydrogen atoms. All changes are recorded in a log in the #' returned object. #' #' @details call for its effects. #' #' @param pdb an object of class \code{pdb} as obtained from #' function \code{\link{read.pdb}}. #' @param consecutive logical, if TRUE renumbering will result in #' consecutive residue numbers spanning all chains. Otherwise new residue #' numbers will begin at 1 for each chain. #' @param force.renumber logical, if TRUE atom and residue records are renumbered #' even if no 'insert' code is found in the \code{pdb} object. #' @param fix.chain logical, if TRUE chains are relabeled based on chain breaks detected. #' @param fix.aa logical, if TRUE non-standard amino acid names are converted into #' equivalent standard names. #' @param rm.wat logical, if TRUE water atoms are removed. #' @param rm.lig logical, if TRUE ligand atoms are removed. #' @param rm.h logical, if TRUE hydrogen atoms are removed. #' @param verbose logical, if TRUE details of the conversion process are printed. #' #' @return a 'pdb' object with an additional \code{$log} component storing #' all the processing messages. #' #' @seealso \code{\link{read.pdb}} #' #' @author Xin-Qiu Yao & Barry Grant #' #' @examples #' \donttest{ #' # PDB server connection required - testing excluded #' #' pdb <- read.pdb("1a7l") #' clean.pdb(pdb) #' } "clean.pdb" <- function(pdb, consecutive=TRUE, force.renumber = FALSE, fix.chain = FALSE, fix.aa = FALSE, rm.wat = FALSE, rm.lig = FALSE, rm.h = FALSE, verbose=FALSE) { if(!is.pdb(pdb)) stop("Input should be a 'pdb' object") cl <- match.call() ## processing message ## stored as an N-by-3 matrix with columns: ## FACT, OPERATION, IMPORTANT NOTE log <- NULL ## a flag to indicate if the pdb is clean clean <- TRUE ## Recognized amino acid names prot.aa <- bio3d::aa.table$aa3 ## for residues and atoms renumbering first.eleno = 1 first.resno = 1 ## remove water if(rm.wat) { wat <- atom.select(pdb, "water", verbose = FALSE) if(length(wat$atom) > 0) { pdb$atom <- pdb$atom[-wat$atom, ,drop=FALSE] pdb$xyz <- pdb$xyz[, -wat$xyz, drop=FALSE] log <- .update.log(log, paste("Found", length(wat$atom), "water atoms"), "REMOVED") } } ## remove ligands if(rm.lig) { lig <- atom.select(pdb, "ligand", verbose = FALSE) if(length(lig$atom) > 0) { pdb$atom <- pdb$atom[-lig$atom, ,drop=FALSE] pdb$xyz <- pdb$xyz[, -lig$xyz, drop=FALSE] log <- .update.log(log, paste("Found", length(lig$atom), "ligand atoms"), "REMOVED") } } ## remove hydrogens if(rm.h) { h.inds <- atom.select(pdb, "h", verbose = FALSE) if(length(h.inds$atom) > 0) { pdb$atom <- pdb$atom[-h.inds$atom, ,drop=FALSE] pdb$xyz <- pdb$xyz[, -h.inds$xyz, drop=FALSE] log <- .update.log(log, paste("Found", length(h.inds$atom), "hydrogens"), "REMOVED") } } ## check if 'alt' coords exist if(any(rm.p <- !is.na(pdb$atom$alt) & pdb$atom$alt != "A")) { pdb$atom <- pdb$atom[!rm.p, , drop=FALSE] pdb$xyz <- pdb$xyz[, -atom2xyz(which(rm.p)), drop=FALSE] log <- .update.log(log, paste("Found", sum(rm.p), "ALT records"), "REMOVED") } ## Some initial check: ## 1. Are all amino acid and/or nucleic acid residues ## distinguished by the combination chainID_resno_insert? .check.residue.ambiguity(pdb) ## 2. Check and clean up SSE annotation pdb <- .check.sse(pdb) log <- .update.log(log, pdb$log) ## 3. Fix pdb$calpha if it is mismatch pdb$atom ca.inds <- atom.select(pdb, "calpha", verbose = FALSE) calpha <- seq(1, nrow(pdb$atom)) %in% ca.inds$atom if(!identical(pdb$calpha, calpha)) { pdb$calpha <- calpha log <- .update.log(log, "pdb$calpha", "UPDATED") } ## 4. Fix object class if it is incorrect if(!inherits(pdb, "pdb") || !inherits(pdb, "sse") || !inherits(pdb$xyz, "xyz")) { class(pdb) <- c("pdb", "sse") class(pdb$xyz) <- "xyz" log <- .update.log(log, "Object class", "UPDATED") } ########### ## following operations are on an independent object npdb <- pdb ## check chain breaks and missing chain ids has.fixed.chain <- FALSE capture.output( new.chain <- chain.pdb(npdb) ) chain <- npdb$atom[, "chain"] if(any(is.na(npdb$atom[, "chain"]))) { log <- .update.log(log, "Found empty chain IDs", ifelse(fix.chain, "FIXED", "NO CHANGE"), ifelse(fix.chain, "ALL CHAINS ARE RELABELED", "")) if(fix.chain) { npdb$atom[, "chain"] <- new.chain has.fixed.chain <- TRUE } else if(clean) clean <- FALSE } else { ## check if new chain id assignment is consistent to original one chn.brk <- bounds(chain[ca.inds$atom], dup.inds=TRUE, pre.sort=FALSE) new.chn.brk <- bounds(new.chain[ca.inds$atom], dup.inds=TRUE, pre.sort=FALSE) if(!isTRUE(all.equal(chn.brk, new.chn.brk))) { log <- .update.log(log, "Found inconsistent chain breaks", ifelse(fix.chain, "FIXED", "NO CHANGE"), ifelse(fix.chain, "ALL CHAINS ARE RELABELED", "")) log <- .update.log(log, "Original chain breaks:") if(nrow(chn.brk) == 1) { log <- .update.log(log, " No chain break") } else { pre.ca <- ca.inds$atom[chn.brk[-nrow(chn.brk), "end"]] pre.log <- capture.output( print(npdb$atom[pre.ca, c("resid", "resno", "chain")], row.names = FALSE) ) log <- .update.log(log, pre.log) } log <- .update.log(log) log <- .update.log(log, "New chain breaks:") if(nrow(new.chn.brk) == 1) { log <- .update.log(log, " No chain breaks") } else { new.ca <- ca.inds$atom[new.chn.brk[-nrow(new.chn.brk), "end"]] new.log <- capture.output( print(npdb$atom[new.ca, c("resid", "resno", "chain")], row.names = FALSE) ) log <- .update.log(log, new.log) } if(fix.chain) { npdb$atom[, "chain"] <- new.chain has.fixed.chain <- TRUE } else if(clean) clean <- FALSE } } ## Renumber residues and atoms renumber <- FALSE if( any(!is.na(npdb$atom[, "insert"])) ) { renumber <- TRUE log <- .update.log(log, "Found INSERT records", "RENUMBERED") npdb$atom[, "insert"] <- as.character(NA) } else if(force.renumber) { renumber <- TRUE log <- .update.log(log, "force.renumber = TRUE", "RENUMBERED") } else if(has.fixed.chain) { ## check again the ambiguity of residue labeling chk <- try(.check.residue.ambiguity(npdb)) if(inherits(chk, "try-error")) { renumber <- TRUE log <- .update.log(log, "Found ambiguious residues after chain relabeling", "RENUMBERED") } } if(renumber) { ## Assign consecutive atom numbers npdb$atom[,"eleno"] <- seq(first.eleno, length=nrow(npdb$atom)) ## Determine what chain ID we have chain <- unique(npdb$atom[, "chain"]) ##- Assign new (consecutive) residue numbers for each chain prev.chain.res = 0 ## Number of residues in previous chain for(i in 1:length(chain)) { inds <- which(npdb$atom[, "chain"] == chain[i]) ## Combination of chain id, resno and insert code uniquely defines a residue (wwpdb.org) ## Here we use original pdb because we assume it should at least ## distinguish different residues by above combination. ## We don't use the modified pdb (npdb) because all non-protein residues ## are assigned a chain ID as "X" after calling chain.pdb(); ## These residues could have the same resno (which are still in original ## form) as they may be assigned different chain IDs in the original pdb. res <- paste(pdb$atom[inds, "chain"], pdb$atom[inds, "resno"], pdb$atom[inds, "insert"], sep="_") n.chain.res <- length(unique(res)) new.nums <- (first.resno+prev.chain.res):(first.resno+n.chain.res-1+prev.chain.res) npdb$atom[inds, "resno"] <- vec2resno(new.nums, res) if(consecutive) { ## Update prev.chain.res for next iteration prev.chain.res = prev.chain.res + n.chain.res } } } ## update SSE if(has.fixed.chain || renumber) { ## Must use original pdb to unfold SSE sse <- pdb2sse(pdb, verbose = FALSE) if(!is.null(sse)) { id <- sub(".*_.*_.*_([^_]*)$", "\\1", names(sse)) names(sse) <- paste(npdb$atom[ca.inds$atom, "resno"], npdb$atom[ca.inds$atom, "chain"], npdb$atom[ca.inds$atom, "insert"], id, sep = "_") new.sse <- bounds.sse(sse) if(length(new.sse$helix$start) > 0) { npdb$helix$start <- new.sse$helix$start npdb$helix$end <- new.sse$helix$end npdb$helix$chain <- new.sse$helix$chain } if(length(new.sse$sheet$start) > 0) { npdb$sheet$start <- new.sse$sheet$start npdb$sheet$end <- new.sse$sheet$end npdb$sheet$chain <- new.sse$sheet$chain } if(!isTRUE(all.equal(npdb$helix, pdb$helix)) || !isTRUE(all.equal(npdb$sheet, pdb$sheet)) ) log <- .update.log(log, "SSE annotation", "UPDATED") } } ## update seqres if(has.fixed.chain && !is.null(npdb$seqres)) { tinds <- combine.select(atom.select(npdb, 'protein'), atom.select(npdb, 'nucleic'), operator='+', verbose=FALSE) npdb2 <- trim(npdb, tinds) id <- paste(npdb2$atom$resno, npdb2$atom$chain, npdb2$atom$insert, sep='_') chs <- npdb2$atom[!duplicated(id), "chain"] names(npdb$seqres) <- chs if(!identical(npdb$seqres, pdb$seqres)) log <- .update.log(log, "SEQRES", "UPDATED") } ## update amino acid name naa.atom <- which(npdb$atom[, "resid"] %in% prot.aa[-c(1:20)]) naa.res <- intersect(ca.inds$atom, naa.atom) unk.atom <- which(!npdb$atom[, "resid"] %in% prot.aa) unk.res <- intersect(ca.inds$atom, unk.atom) if(length(naa.res) > 0) { log <- .update.log(log, paste("Found", length(naa.res), "non-standard amino acids"), ifelse(fix.aa, "FIXED", "NO CHANGE"), ifelse(fix.aa, "AMINO ACID NAMES ARE CHANGED", "")) tbl <- table(npdb$atom[naa.res, "resid"]) tbl <- paste(" ", names(tbl), "(", tbl, ")", collapse = ",") log <- .update.log(log, tbl) if(fix.aa) { npdb$atom[naa.atom, "resid"] <- aa123(aa321(npdb$atom[naa.atom, "resid"])) log <- .update.log(log, " Converted to") tbl <- table(npdb$atom[naa.res, "resid"]) tbl <- paste(" ", aa123(aa321(names(tbl))), "(", tbl, ")", collapse = ",") log <- .update.log(log, tbl) } else if(clean) clean <- FALSE } if(length(unk.res) > 0) { log <- .update.log(log, paste("Found", length(unk.res), "unknow amino acids"), "NO CHANGE") tbl <- table(npdb$atom[unk.res, "resid"]) tbl <- paste(" ", names(tbl), "(", tbl, ")", collapse = ",") log <- .update.log(log, tbl) # if(clean) clean <- FALSE } ## update pdb$call npdb$call <- cl ## is the pdb clean? # if(clean) # log <- .update.log(log, "PDB is clean!") if(!clean) { msg <- "PDB is still not clean. Try fix.chain=TRUE and/or fix.aa=TRUE" # log <- .update.log(log, msg) warning(msg) } ## format log # log <- .format.log(log) if(verbose) print(log) npdb$log <- log return(npdb) } .update.log <- function(log, fact="", op="", note="") { if(is.null(fact)) log else if(is.data.frame(fact)) .update.log(log, fact[,1], fact[,2], fact[,3]) else rbind(log, data.frame(Data = fact, Action = op, Note = note)) } .format.log <- function(log, format = c("print", "cat"), op.sign = "->", note.sign = "!!") { format <- match.arg(format) if(!is.null(log)) { log <- apply(log, 1, function(x) { if(nchar(x[2]) == 0) sprintf("%-40s", x[1]) else if(nchar(x[3]) == 0) paste(sprintf("%-40s", x[1]), op.sign, sprintf("%-12s", x[2])) else paste(paste(sprintf("%-40s", x[1]), op.sign, sprintf("%-12s", x[2]), note.sign, x[3], note.sign) ) } ) } else { log <- "No problem found" } log <- switch(format, print = log, cat = paste(paste(log, collapse="\n"), "\n", sep="") ) return(log) } .check.residue.ambiguity <- function(pdb) { ca.inds <- atom.select(pdb, "calpha", verbose = FALSE) c1p.inds <- atom.select(pdb, "nucleic", elety = "C1'", verbose = FALSE) inds <- combine.select(ca.inds, c1p.inds, operator = "+", verbose = FALSE) if(length(inds$atom) > 0) { strings <- paste(pdb$atom[inds$atom, "resno"], pdb$atom[inds$atom, "chain"], pdb$atom[inds$atom, "insert"], sep = "_") if(any(duplicated(strings))) stop(".check.residue.ambiguity(): Found ambiguous residue labeling") } invisible(NULL) } .check.sse <- function(pdb) { log <- NULL if(!is.null(pdb$helix) | !is.null(pdb$sheet)) { if(is.null(pdb$helix)) { pdb$helix <- list(start=NULL, end=NULL, chain=NULL, type=NULL) log <- .update.log(log, "Helix is null but sheet is not", "UPDATED") } if(is.null(pdb$sheet)) { pdb$sheet <- list(start=NULL, end=NULL, chain=NULL, sense=NULL) log <- .update.log(log, "Sheet is null but helix is not", "UPDATED") } } # if there is problem to generate sse vector ss <- try(pdb2sse(pdb, verbose = FALSE)) if(inherits(ss, "try-error")) stop(".check.sse(): Unable to generate SSE sequence") pdb$log <- log return(pdb) } bio3d/R/print.enma.R0000644000176200001440000000277514707230357013674 0ustar liggesusers"print.enma" <- function(x, ...) { cn <- class(x) nstruct <- nrow(x$fluctuations) dims <- dim(x$U.subspace) if(is.null(x$call$rm.gaps)) rm.gaps <- TRUE else if(x$call$rm.gaps=="T" || x$call$rm.gaps=="TRUE") rm.gaps <- TRUE else rm.gaps <- FALSE if(is.null(x$call$fit)) fit <- TRUE else if(x$call$fit=="T" || x$call$fit=="TRUE") fit <- TRUE else fit <- FALSE cat("\nCall:\n ", paste(deparse(x$call), sep = "\n", collapse = "\n"), "\n\n", sep = "") cat("Class:\n ", cn, "\n\n", sep = "") cat("Number of structures:\n ", nstruct, "\n\n", sep="") cat("Attributes stored:\n") if(!is.null(x$full.nma)) cat(" - Full 'nma' objects\n") if(!is.null(x$rmsip)) cat(" - Root mean square inner product (RMSIP)\n") if(!is.null(x$fluctuations)) cat(" - Aligned atomic fluctuations\n") if(rm.gaps) cat(" - Aligned eigenvectors (gaps removed)\n") else cat(" - Aligned eigenvectors (gaps not removed)\n") cat(" - Dimensions of x$U.subspace: ", dims[1L], "x", dims[2L], "x", dims[3L], sep="") cat("\n\n") if(fit) cat("Coordinates were aligned prior to NMA calculations") else cat("Coordinates were NOT aligned prior to NMA calculations") cat("\n\n") i <- paste( attributes(x)$names, collapse=", ") cat(strwrap(paste(" + attr:",i,"\n"),width=60, exdent=8), sep="\n") invisible(x) } bio3d/R/write.crd.R0000644000176200001440000000577614707230357013526 0ustar liggesusers"write.crd" <- function(pdb = NULL, xyz = pdb$xyz, resno = NULL, resid = NULL, eleno = NULL, elety = NULL, segid = NULL, resno2 = NULL, b = NULL, verbose = FALSE, file = "R.crd") { if (is.null(xyz) || !is.numeric(xyz)) stop("write.crd: please provide a 'pdb' object or numeric 'xyz' coordinates") if (any(is.na(xyz))) stop("write.crd: 'xyz' coordinates must have no NA's.") if (is.matrix(xyz) && nrow(xyz) == 1) xyz = as.vector(xyz) if (is.vector(xyz)) { natom <- length(xyz)/3 } else { stop("write.crd: 'xyz' or 'pdb$xyz' must contain only one structure") } if (!is.null(pdb)) { if (is.null(resno)) resno = pdb$atom[, "resno"] if (is.null(resid)) resid = pdb$atom[, "resid"] if (is.null(eleno)) eleno = pdb$atom[, "eleno"] if (is.null(elety)) elety = pdb$atom[, "elety"] if (is.null(segid)) segid = pdb$atom[, "chain"] if (is.null(resno2)) resno2 = pdb$atom[, "resno"] if (is.null(b)) b = pdb$atom[, "b"] } else { if (is.null(resno)) resno = c(1:natom) if (is.null(resno2)) resno2 = c(1:natom) if (is.null(resid)) resid = rep("ALA", natom) if (is.null(eleno)) eleno = c(1:natom) if (is.null(elety)) elety = rep("CA", natom) if (is.null(segid)) segid = rep("seg", natom) if (is.null(b)) b = rep("0.00", natom) } if (length(as.vector(xyz))%%3 != 0) { stop("write.crd: 'length(xyz)' must be divisable by 3.") } check.lengths <- sum(length(resno), length(resid), length(eleno), length(elety), length(resno2)) if (check.lengths%%natom != 0) { stop("write.crd: the lengths of all input vectors != 'length(xyz)/3'.") } b <- as.numeric(b) eleno <- as.character(eleno) resno <- as.character(resno) resno2 <- as.character(resno2) crd.print <- function(eleno, resno, resid, elety, x, y, z, segid="seg", resno2, b="0.00") { format <- "%5s%5s%4s %-4s%10.5f%10.5f%10.5f %-4s %-4s%10.5f" sprintf(format, eleno, resno, resid, elety, x, y, z, segid, resno2, b) } coords <- matrix(round(as.numeric(xyz), 3), ncol = 3, byrow = TRUE) if (verbose) cat(paste("Writing CRD file with", natom, "atoms ")) lines <- NULL for (i in 1:natom) { lines <- rbind(lines, crd.print( eleno = eleno[i], resno = resno[i], resid = resid[i], elety = elety[i], x = coords[i,1], y = coords[i, 2], z = coords[i, 3], segid = segid[i], resno2 = resno2[i], b = b[i])) } cat("* CRD from bio3d", file = file, "\n") cat("*", file = file, "\n", append = TRUE) cat(sprintf("%5g", natom), file = file, "\n", append = TRUE) cat(lines, file = file, sep = "\n", append = TRUE) if (verbose) cat(" DONE", "\n") } bio3d/R/cmap.pdb.R0000644000176200001440000000310114707230356013264 0ustar liggesuserscmap.pdb <- function(pdb, inds=NULL, verbose=FALSE, ...) { if(!is.pdb(pdb)) stop("provide a pdb object as obtained from function 'pdb'") if(is.null(inds)) { inds <- atom.select(pdb, "notwater", verbose=verbose) } pdb <- trim.pdb(pdb, inds) xyz <- pdb$xyz grpby <- paste(pdb$atom$chain, pdb$atom$insert, pdb$atom$resno, sep="-") return(cmap.xyz(xyz, grpby, ...)) } cmap.pdbs <- function(pdbs, rm.gaps=FALSE, all.atom=FALSE, ...) { if(!is.pdbs(pdbs)) stop("Input should be a 'pdbs' object as obtained from 'read.fasta.pdb()' or 'read.all()'.") if(rm.gaps) { dots <- list(...) if("grpby" %in% names(dots) && !is.null(dots[["grpby"]])) { if(length(unique(dots[["grpby"]])) != ncol(pdbs$ali)) { stop("rm.gaps=TRUE not supported for non-residue wise grouping.") } } } if(!all.atom) { # set a new default value of dcut for CA-CA contact map cmap.default <- list(dcut=10.0, collapse=FALSE) cmap.args <- .arg.filter(cmap.default, cmap.xyz, ...) cm <- do.call("cmap.xyz", c(list(xyz=pdbs$xyz), cmap.args)) } else { # set a new default value of grpby for all-atom contact map cmap.default <- list(grpby=pdbs$all.grpby, collapse=FALSE) cmap.args <- .arg.filter(cmap.default, cmap.xyz, ...) cm <- do.call("cmap.xyz", c(list(xyz=pdbs$all), cmap.args)) } if(rm.gaps) { gaps.res <- gap.inspect(pdbs$ali) ndim <- length(dim(cm)) if(ndim>2) { cm <- cm[gaps.res$f.inds, gaps.res$f.inds, ] } else { cm <- cm[gaps.res$f.inds, gaps.res$f.inds] } } return(cm) } bio3d/R/overlap.R0000644000176200001440000000235114707230356013256 0ustar liggesusers"overlap" <- function(modes, dv, nmodes=20) { if(missing(modes)) stop("overlap: 'modes' must be prodivded") if(missing(dv)) stop("overlap: 'dv' must be prodivded") if ("pca" %in% class(modes)) { ev <- modes$U mass <- NULL first.mode <- 1 } else if("nma" %in% class(modes)) { ev <- modes$modes mass <- modes$mass first.mode <- modes$triv.modes+1 nmodes <- modes$triv.modes + nmodes } else { if(!inherits(modes, c("matrix", "pca.loadings"))) stop("overlap: 'modes' must be an object of type 'pca', 'nma', or 'matrix'") ev <- modes mass <- NULL first.mode <- 1 } if (nrow(ev)!=length(dv)) stop("overlap: unequal vector lengths") if ( ncol(ev) < nmodes ) { nmodes <- dim(ev)[2L] warning("nmodes larger than dimensions of 'modes'") } inds <- seq(first.mode, nmodes) ev <- ev[,inds] ## Normalize vectors - mass-weighted if normal modes are ev <- normalize.vector(ev, mass) dvn <- normalize.vector(dv, mass) overlap.values <- inner.prod(ev, dvn, mass)**2 cum <- cumsum(overlap.values) out <- list(overlap=overlap.values, overlap.cum=cum) return(out) } bio3d/R/is.pdb.R0000644000176200001440000000013214707230356012760 0ustar liggesusersis.pdb <- function(x) inherits(x, "pdb") is.pdbs <- function(x) inherits(x, "pdbs") bio3d/R/plotb3.R0000644000176200001440000001036114707230357013012 0ustar liggesusersplotb3 <- function(x, resno=NULL, rm.gaps = FALSE, type="h", main="", sub="", xlim=NULL, ylim=NULL, ylim2zero=TRUE, xlab = "Residue", ylab = NULL, axes=TRUE, ann=par("ann"), col=par("col"), sse=NULL, sse.type="classic", sse.min.length=5, top=TRUE, bot=TRUE, helix.col="gray20", sheet.col="gray80", sse.border=FALSE, ...) { ## Check for gap positions gaps.pos = gap.inspect(x) if(rm.gaps && length(gaps.pos$f.inds)==0) stop('No data to plot (all positions of "x" have gaps).') if(is.matrix(x)) x = x[1, ] ## should support matrix in future if(!is.vector(x)) stop('Input x should be a numeric vector') if(!is.null(resno)) { if(is.pdb(resno)) { ## Take Calpha residue numbers from PDB input ca.inds <- atom.select(resno, "calpha", verbose = FALSE) resno <- resno$atom$resno[ca.inds$atom] } ## Allow "gapped resno" input if(any(is.na(resno))) resno <- resno[!is.na(resno)] if(any(is.na(x))) { tmp.resno <- rep(NA, length(x)) tmp.resno[!is.na(x)] = resno resno = tmp.resno } if(length(resno) != length(x)) { warning("Length of input 'resno' does not equal the length of input 'x'; Ignoring 'resno'") resno=NULL } } if(!is.null(sse)) { ## Obtain SSE vector from PDB or DSSP results input if(is.pdb(sse) || inherits(sse, 'sse')) { if(is.pdb(sse)) sse <- pdb2sse(sse) else sse <- sse$sse } ## Allow "gapped sse" input if(any(is.na(sse))) sse <- sse[!is.na(sse)] if(any(is.na(x))) { tmp.sse = rep(' ', length(x)) tmp.sse[!is.na(x)] <- sse sse <- tmp.sse } if(length(sse) != length(x)) { warning("Length of input 'sse' does not equal the length of input 'x'; Ignoring 'sse'") sse=NULL } } if(rm.gaps) { xy <- xy.coords(x[gaps.pos$f.inds]) if(!is.null(resno)) resno <- resno[gaps.pos$f.inds] if(!is.null(sse)) sse <- sse[gaps.pos$f.inds] } else xy <- xy.coords(x) if (is.null(xlim)) xlim <- range(xy$x[is.finite(xy$x)]) if (is.null(ylim)) ylim <- range(xy$y[is.finite(xy$y)]) if(ylim2zero) ylim[1]=0 plot.new() plot.window(xlim, ylim, ...) points(xy$x, xy$y, col=col, type=type, ...) if(!is.null(sse)) { h <- bounds( which(sse == "H") ) e <- bounds( which(sse == "E") ) ## Remove short h and e elements that can crowd plots if(length(h) > 0) { h <- h[h[,"length"] >= sse.min.length,,drop=FALSE] } else { h <- NULL } if(length(e) > 0) { e <- e[e[,"length"] >= sse.min.length,,drop=FALSE] } else { e <- NULL } if(sse.type != "classic") warning("Only sse.type='classic' is currently available, 'fancy' coming soon") if(top) { ## Determine bottom and top of margin region bo <- max(ylim) + (diff(ylim)*0.001) # 0.1% to <- max(ylim) + (diff(ylim)*0.04) # 4% if(length(h) > 0) rect(xleft=h[,"start"], xright=h[,"end"], ybottom=bo, ytop=to, col=helix.col, border=sse.border) if(length(e) > 0) rect(xleft=e[,"start"], xright=e[,"end"], ybottom=bo, ytop=to, col=sheet.col, border=sse.border) } if(bot){ to <- min(ylim) - (diff(ylim)*0.001) bo <- min(ylim) - (diff(ylim)*0.04) if(length(h) > 0) rect(xleft=h[,"start"], xright=h[,"end"], ybottom=bo, ytop=to, col=helix.col, border=sse.border) if(length(e) > 0) rect(xleft=e[,"start"], xright=e[,"end"], ybottom=bo, ytop=to, col=sheet.col, border=sse.border) } } if(axes) { axis(2) box() at <- axTicks(1); at[1] = 1 if(is.null(resno)) { axis(1, at) } else { labels <- resno[at] labels[is.na(labels)] <- "" # for gaps, no label axis(1, at=at, labels=labels) } } if(ann) { if(is.null(xlab)) xlab=xy$xlab if(is.null(ylab)) ylab=xy$ylab title(main=main, sub=sub, xlab=xlab, ylab=ylab, ...) } } plot.bio3d <- function(...) { plotb3(...) } bio3d/R/torsion.xyz.R0000644000176200001440000000231114707230357014131 0ustar liggesusers"torsion.xyz" <- function(xyz, atm.inc=4) { if(!is.vector(xyz) || !is.numeric(xyz)) stop("input 'xyz' should be a numeric vector") natm <- length(xyz)/3 if(natm < 4) stop("Need at least four atoms to define a dihedral") if(natm %% 1 != 0) stop("There should be three 'xyz' elements per atom") m.xyz <- matrix(xyz, nrow=3) atm.inds <- c(1:4); out<-NULL while(atm.inds[4] <= natm) { if( any(is.na( m.xyz[,atm.inds] )) ) { torp <- NA } else { d1 <- m.xyz[,atm.inds[2]] - m.xyz[,atm.inds[1]] d2 <- m.xyz[,atm.inds[3]] - m.xyz[,atm.inds[2]] d3 <- m.xyz[,atm.inds[4]] - m.xyz[,atm.inds[3]] u1 <- (d1[c(2,3,1)] * d2[c(3,1,2)]) - (d2[c(2,3,1)] * d1[c(3,1,2)]) u2 <- (d2[c(2,3,1)] * d3[c(3,1,2)]) - (d3[c(2,3,1)] * d2[c(3,1,2)]) ctor <- sum(u1*u2)/sqrt( sum(u1*u1) * sum(u2*u2) ) ctor[ctor > 1] <- 1; ctor[ctor < -1] <- -1 torp <- matrix(acos(ctor)*(180/pi),ncol=1) if( sum(u1 * ((u2[c(2,3,1)] * d2[c(3,1,2)]) - (u2[c(3,1,2)] * d2[c(2,3,1)]))) < 0) torp <- -torp } out <- c(out, torp) atm.inds <- atm.inds + atm.inc } if(atm.inc == 1 & natm > 4) out <- c(NA, out, NA, NA) return(out) } bio3d/R/difference.vector.R0000644000176200001440000000134314707230356015201 0ustar liggesusers"difference.vector" <- function(xyz, xyz.inds=NULL, normalize=FALSE) { xyz <- as.matrix(xyz) if (dim(xyz)[1L] < 2) stop("xyz must be a matrix with two rows") if (dim(xyz)[2L] < 6) stop("xyz does not contain sufficient coordinates") if (dim(xyz)[1L] > 2) { xyz <- xyz[1:2,] warning("xyz has more than two rows - using only the two first") } if ( is.null(xyz.inds) ) xyz.inds <- seq(1, ncol(xyz)) if ( length(which(is.na(xyz[,xyz.inds]))) > 0 ) stop("xyz has NA values") a <- xyz[1, xyz.inds] b <- xyz[2, xyz.inds] if (length(a)!=length(b)) stop("unequal lengths of the two coordinate sets") diff <- b-a if(normalize) diff <- normalize.vector(diff) return( diff ) } bio3d/R/combine.select.R0000644000176200001440000000245114707230356014501 0ustar liggesuserscombine.select <- function(sel1=NULL, sel2=NULL, ..., operator="AND", verbose=TRUE) { cl <- match.call() sels <- list(sel1, sel2, ...) if(any(sapply(sels, function(x) !is.null(x) && !inherits(x, "select")))) stop("Invalid atom select(s)") rm.inds = sapply(sels, is.null) sels = sels[!rm.inds] if(length(sels) == 0) return(NULL) else if(length(sels) == 1) return(sels[[1]]) op.tbl <- c(rep("AND",3), rep("OR",4), rep("NOT",4)) operator <- op.tbl[match(operator, c("AND","and","&","OR","or","|","+","NOT","not","!","-"))] # Print message if(verbose) { msg <- switch(operator, AND = " Intersect of selects", OR = " Union of selects", NOT = " Select 2 (, 3, ...) is subtracted from select 1", stop("Unknown operation") ) cat(msg, "\n", sep="") } sel <- sels[[1]]$atom for(i in 2:length(sels)) { sel <- switch(operator, "AND" = intersect(sel, sels[[i]]$atom), "OR" = sort(union(sel, sels[[i]]$atom)), "NOT" = setdiff(sel, sels[[i]]$atom), stop("Unknown operation") ) } sel <- list(atom = sel, xyz = atom2xyz(sel), call=cl) if(verbose) { cat(paste(" * Selected a total of:", length(sel$atom), "atoms *\n")) } class(sel) = "select" return(sel) } bio3d/R/atom.select.R0000644000176200001440000000007214707230356014022 0ustar liggesusers"atom.select" <- function(...) UseMethod("atom.select") bio3d/R/wrap.tor.R0000644000176200001440000000251314707230357013363 0ustar liggesusers"wrap.tor" <- function(data,wrapav=TRUE,avestruc=NULL){ wrap180 <- function(x) { x[which(x > 180, arr.ind=TRUE)] <- x[which(x > 180, arr.ind=TRUE)] - 360 x[which(x < -180, arr.ind=TRUE)] <- x[which(x < -180, arr.ind=TRUE)] + 360 x } if(!wrapav && is.null(avestruc)) stop("Average structure is missing") if(is.vector(data)) { data <- matrix(data,ncol=1) return.vec = TRUE } else { return.vec = FALSE } avestruc.i<-avestruc datawrap <- NULL for(i in 1:ncol(data)) { struc <- data[,i] if(all(is.na(struc))) { struc <- rep(NA, length(struc)) } else { if(wrapav){ avestruc <- wrap180( mean(struc, na.rm=TRUE) ) } else { avestruc<-avestruc.i[i] } difvar <- avestruc - struc while (length(difvar[ as.vector(na.omit(abs(difvar)>180)) ]) > 0) { struc[which(difvar > 180, arr.ind=TRUE)] <- struc[which(difvar > 180, arr.ind=TRUE)] + 360 struc[which(difvar < -180, arr.ind=TRUE)] <- struc[which(difvar < -180, arr.ind=TRUE)] - 360 if(wrapav){avestruc <- wrap180( mean(struc, na.rm=TRUE) %% 360 )} difvar <- avestruc - struc } } datawrap <- cbind(datawrap,struc) } if(return.vec) datawrap = as.vector(datawrap) return(datawrap) } bio3d/R/deformation.nma.R0000644000176200001440000000420214707230356014664 0ustar liggesusers"deformation.nma" <- function(nma, mode.inds=NULL, pfc.fun=NULL, ncore=NULL) { if(!inherits(nma, "nma")) stop("provide input of class 'nma' as obtained from function 'nma'") if(is.null(mode.inds)) { nmodes <- 20 if(length(nma$L) < (nmodes+nma$triv.modes)) nmodes <- length(nma$L) - nma$triv.modes mode.inds <- seq(nma$triv.modes+1, nma$triv.modes+nmodes) } else { if(length(nma$L) < (length(mode.inds)+nma$triv.modes)) { nmodes <- length(nma$L) - nma$triv.modes mode.inds <- seq(nma$triv.modes+1, nma$triv.modes+nmodes) warning("'mode.inds' was modified to include all modes") } } ## Check for multiple cores ncore <- setup.ncore(ncore) ## calcualte deformation energies for a specific mode def.mode <- function(mode.id, nma, xyz, ff, natoms) { mode.vec <- nma$modes[,mode.id] ## for normalization norm <- sqrt(sum(mode.vec**2) / natoms) ## better work with a matrix mode.vec <- matrix(mode.vec, ncol=3, byrow=T) def.e <- rep(0, length=natoms) for ( i in 1:(natoms)) { ## distance vectors between a and b rs <- t(apply(xyz, 1, "-", xyz[i,])) ## differences mode vectors vs <- t(apply(mode.vec, 1, "-", mode.vec[i,])) ##rl <- apply(rs, 1, function(x) sqrt(sum(x^2))) rsq <- rowSums(rs^2) rl <- sqrt(rsq) ##l <- inner.prod(t(rs), t(vs)) / norm l <- colSums(t(rs)*t(vs)) / norm k <- ff(rl) l2 <- k*l*l / rsq l2[i] <- 0 def.e <- def.e + (0.5*l2) } return(def.e) } if(is.null(pfc.fun)) ff <- load.enmff("calpha") else { if (!is.function(pfc.fun)) stop("'pfc.fun' must be a function") ff <- pfc.fun } natoms <- length(nma$xyz)/3 xyz <- matrix(nma$xyz, ncol=3, byrow=T) if(ncore>1) hm <- mclapply(mode.inds, def.mode, nma, xyz, ff, natoms, mc.cores=ncore) else hm <- lapply(mode.inds, def.mode, nma, xyz, ff, natoms) ## Collect results and make a matrix to store results hm <- t(do.call(rbind, hm)) sums <- colSums(hm) out <- list(ei=hm, sums=sums) return(out) } bio3d/R/nma.R0000644000176200001440000000005714707230356012362 0ustar liggesusers"nma" <- function(...) { UseMethod("nma") } bio3d/R/pdbsplit.R0000644000176200001440000001354214707230356013433 0ustar liggesusers`pdbsplit` <- function(pdb.files, ids=NULL, path="split_chain", overwrite=TRUE, verbose=FALSE, mk4=FALSE, ncore=1, progress=NULL, ...) { toread <- file.exists(pdb.files) toread[substr(pdb.files, 1, 4) == "http"] <- TRUE if (all(!toread)) stop("No corresponding PDB files found") if (any(!toread)) { warning(paste("Missing files:\n\t", paste(pdb.files[!toread], collapse = "\n\t"), sep = "")) pdb.files <- pdb.files[toread] } ## Parallelized by parallel package ncore <- setup.ncore(ncore, bigmem = FALSE) if(ncore>1) { mylapply <- mclapply prev.warn <- getOption("warn") options(warn=1) } else mylapply <- lapply ## Faster method to fetch chain IDs in a PDB file "quickscan" <- function(pdbfile) { fi <- readLines(pdbfile) fi = fi[ grep("^ATOM", fi) ] chains <- unique(substr(fi, 22,22)) chains[chains == " "] <- NA return(chains) } if(!verbose) ## Initialize progress bar pb <- .init.pb(ncore, min=0, max=length(pdb.files)) if(!file.exists(path)) dir.create(path) "splitOnePdb" <- function(i, pdb.files, ids, path, overwrite, verbose, ...) { ## edit for shiny version if(!is.null(progress)) { progress$inc(1/length(pdb.files)) } ## edit end out <- c(); skipped <- c(); unused <- NULL; if(!overwrite && !verbose) { chains <- quickscan(pdb.files[i]) } else if(overwrite && !verbose) { invisible(capture.output( pdb <- read.pdb(pdb.files[i], verbose=verbose, ...) )) chains <- unique(pdb$atom[, "chain"]) } else { pdb <- read.pdb(pdb.files[i], verbose=verbose, ...) chains <- unique(pdb$atom[, "chain"]) } if(!is.null(ids)) { ids <- unique(ids) ## Match 'ids' with 'pdbId_chainId' combinations tmp.names <- paste0(basename.pdb(pdb.files[i], mk4=mk4), "_", chains) tmp.inds <- unique(unlist(lapply(ids, grep, tmp.names))) if(length(tmp.inds)==0) { ## Skip pdb file if no match were found unused <- basename.pdb(pdb.files[i], mk4=mk4) chains <- c() } else { chains <- chains[tmp.inds] } } if(!overwrite && !verbose) { tmp.names <- paste0(basename.pdb(pdb.files[i], mk4=mk4),"_", chains, ".pdb") new.name <- file.path(path, tmp.names) if(all(file.exists(new.name))) { out <- c(out, new.name) skipped <- paste(basename(pdb.files[i]), " (", paste(chains, collapse=","), ")", sep="") return( list(out=out, unused=unused, skipped=skipped) ) } else { if(!verbose) invisible(capture.output( pdb <- read.pdb(pdb.files[i], verbose=verbose, ...) )) else pdb <- read.pdb(pdb.files[i], verbose=verbose, ...) } } if (length(chains) > 0) { for (j in 1:length(chains)) { if(!verbose) .update.pb(pb, step=1/length(chains)) ##if (!is.na(chains[j])) { new.pdb <- NULL sel <- atom.select(pdb, chain=chains[j], verbose=verbose) #==== new.pdb <- trim.pdb(pdb, sel, sse=TRUE) ## Multi-model records if (nrow(pdb$xyz)>1) { for ( k in 1:nrow(pdb$xyz) ) { str.len <- nchar(nrow(pdb$xyz)) new.name <- paste(basename.pdb(pdb.files[i], mk4=mk4), "_", chains[j], ".", formatC(k, width=str.len, format="d", flag="0"), ".pdb", sep = "") new.name <- file.path(path, new.name) xyz <- pdb$xyz[k, sel$xyz] if(length(new.pdb$xyz) > 0) { write.pdb(new.pdb, file = new.name, xyz=xyz, sse=TRUE) out <- c(out, new.name) } else { warning(paste0(basename(new.name), " has 'xyz' of length zero")) } } } else { new.name <- paste0(basename.pdb(pdb.files[i], mk4=mk4), "_", chains[j], ".pdb") new.name <- file.path(path, new.name) if(length(new.pdb$xyz) > 0) { if(!file.exists(new.name) | overwrite ) write.pdb(new.pdb, file = new.name, sse=TRUE) out <- c(out, new.name) } else { warning(paste0(basename(new.name), " has 'xyz' of length zero")) } } ##} } } else { if(!verbose) .update.pb(pb, step=1) } gc() return( list(out=out, unused=unused, skipped=skipped) ) } outdata <- mylapply(1:length(pdb.files), splitOnePdb, pdb.files, ids, path, overwrite, verbose, ...) if(ncore>1) options(warn=prev.warn) ##### Collect data ##### outfiles <- c() unused <- c(); skipped <- c(); for(i in 1:length(outdata)) { tmp.out <- outdata[[i]] outfiles <- c(outfiles, tmp.out$out) unused <- c(unused, tmp.out$unused) skipped <- c(skipped, tmp.out$skipped) } if(!verbose) { .update.pb(pb) .close.pb(pb) } if(!is.null(ids)) { ids.used <- NULL; nonmatch <- NULL if(length(outfiles)>0) { ids.used <- sub(".pdb$", "", basename(outfiles)) tmp.fun <- function(x, y) { ifelse(length(grep(x,y))>0, TRUE, FALSE) } tmp.inds <- unlist(lapply(ids, tmp.fun, ids.used)) nonmatch <- ids[!tmp.inds] } ## Elements of 'pdb.files' not in use if(length(unused)>0) { unused <- paste(unused, collapse=", ") warning(paste("unmatched pdb files:", unused)) } ## Elements of 'ids' not in use if(length(nonmatch)>0) { nonmatch <- paste(nonmatch, collapse=", ") warning(paste("unmatched ids:", nonmatch)) } } if(length(skipped)>0) { warning(paste(skipped, collapse=", ")) } return(outfiles) } bio3d/R/prune.cna.R0000644000176200001440000000406114707230357013500 0ustar liggesusersprune.cna <- function(x, edges.min=1, size.min=1) { ##-- Prune nodes based on number of edges and number of members ## prune.cna(net) ## ## Check for presence of igraph package oops <- requireNamespace("igraph", quietly = TRUE) if (!oops) { stop("igraph package missing: Please install, see: ?install.packages") } if(inherits(x, "cna")) { y <- summary.cna(x) network=x$community.network } else { warning("Input should be a 'cna' class object as obtained from cna()") network=x y <- NULL } if((edges.min==0) & (size.min==0)){ stop("Must specify a number greater than 0 for edges.min and/or size.min") } ## Identify nodes with less than 'edges.min' to other nodes. nodes.inds <- which(igraph::degree(network) < edges.min) ## Identify nodes with size less than 'size.min' ## cant use V(net$network)$size as these can be scaled ## so we will use the summary information in 'y' nodes.inds <- c(nodes.inds, which(y$size < size.min)) nodes.inds <- unique(nodes.inds) if( length(nodes.inds) == 0 ) { cat( "No Nodes Will Removed based on edges.min and size.min values" ) output = x } else { rm.vs <- igraph::V(network)[nodes.inds] cat( paste("Removing Nodes:", paste(rm.vs, collapse=", ")),"\n") ## Print details of removed with edges if(!is.null(y)) { w <- cbind(y$tbl[rm.vs,c("id","size")], "edges"=igraph::degree(network)[rm.vs], "members"=y$tbl[rm.vs,c("members")]) w <- w[order(w$id),] write.table(w, row.names=FALSE, col.names=TRUE, quote=FALSE,sep="\t") ## Residue raw network res2rm <- as.numeric(unlist(y$members[rm.vs])) x$communities$membership[res2rm] = NA } d <- igraph::delete.vertices(network, rm.vs) ## Will probably want to keep an edited old community object !!! output <- list("community.network"=d, "network"= x$network, ## UNCHANGED!!! "communities"=x$communities) } class(output) = class(x) return(output) } bio3d/R/cna.dccm.R0000644000176200001440000001773614707230356013271 0ustar liggesuserscna.dccm <- function(cij, cutoff.cij=0.4, cm=NULL, vnames=colnames(cij), cluster.method="btwn", collapse.method="max", cols=vmd_colors(), minus.log=TRUE, ...){ ## Check for presence of igraph package oops <- requireNamespace("igraph", quietly = TRUE) if (!oops) { stop("igraph package missing: Please install, see: ?install.packages") } if (dim(cij)[1] != dim(cij)[2]) { stop("Input 'cij' should be a square matrix as obtained from the 'dccm()' function") } ## Check vnames/colnames if present. These are used to name nodes if( is.null( vnames ) ) { vnames <- 1:ncol(cij) } if( length(vnames) != ncol(cij) ) { stop("Length of input 'vnames' and number of cols in input 'cij' do not match") } colnames(cij) <- vnames ## Check 'cm' contact map if present. if(!is.null(cm)){ if (dim(cm)[1] != dim(cm)[2]) { stop("Input 'cm' should be a square contact matrix as obtained from the 'cmap()' function") } if (any(range(cm, na.rm=T) != c(0,1))) { stop("Input 'cm' should be a binary contact matrix as obtained from the 'cmap()' function") } if (dim(cm)[1] != dim(cij)[1]) { stop("Inputs 'cij' and 'cm' should have the same dimensions") } # convert NAs to 0 cm[is.na(cm)] = 0 } ##-- Functions for later cluster.network <- function(network, cluster.method="btwn", ...){ ## Passing arguments to different community detection functions btwn.names <- names(formals( igraph::edge.betweenness.community )) walk.names <- names(formals( igraph::walktrap.community )) greed.names <- names(formals( igraph::fastgreedy.community )) infomap.names <- names(formals( igraph::infomap.community )) dots <- list(...) btwn.args <- dots[names(dots) %in% btwn.names] walk.args <- dots[names(dots) %in% walk.names] greed.args <- dots[names(dots) %in% greed.names] infomap.args <- dots[names(dots) %in% infomap.names] btwn.args$directed <- FALSE ## Function to define community clusters from network, ## cluster methods can be one of of 'cluster.options' cluster.options=c("btwn", "walk", "greed", "infomap") cluster.method <- match.arg(tolower(cluster.method), cluster.options) comms <- switch( cluster.method, btwn = do.call(igraph::edge.betweenness.community, c(list(network), btwn.args)), walk = do.call(igraph::walktrap.community, c(list(network), walk.args)), greed = do.call(igraph::fastgreedy.community, c(list(network), greed.args)), infomap = do.call(igraph::infomap.community, c(list(network), infomap.args)) ) names(comms$membership) <- igraph::V(network)$name return(comms) } contract.matrix <- function(cij.network, membership,## membership=comms$membership, collapse.method="max", minus.log=minus.log){ ## Changed from minus.log=TRUE ## Function to collapse a NxN matrix to an mxm matrix ## where m is the communities of N. The collapse method ## can be one of the 'collapse.options' below ## convert to the original cij values if "-log" was used if(minus.log){ cij.network[cij.network>0] <- exp(-cij.network[cij.network>0]) } collapse.options=c("max", "median", "mean", "trimmed") collapse.method <- match.arg(tolower(collapse.method), collapse.options) ## Fill a 'collapse.cij' nxn community by community matrix node.num <- max(membership) if(node.num > 1){ collapse.cij <- matrix(0, nrow=node.num, ncol=node.num) inds <- pairwise(node.num) for(i in 1:nrow(inds)) { comms.1.inds <- which(membership==inds[i,1]) comms.2.inds <- which(membership==inds[i,2]) submatrix <- cij.network[comms.1.inds, comms.2.inds] ## Use specified "collapse.method" to define community couplings collapse.cij[ inds[i,1], inds[i,2] ] = switch(collapse.method, max = max(submatrix), median = median(submatrix), mean = mean(submatrix), trimmed = mean(submatrix, trim = 0.1)) } if(minus.log){ collapse.cij[collapse.cij>0] <- -log(collapse.cij[collapse.cij>0]) } ## Copy values to lower triangle of matrix and set colnames collapse.cij[ inds[,c(2,1)] ] = collapse.cij[ inds ] colnames(collapse.cij) <- 1:ncol(collapse.cij) } else{ warning("There is only one community in the $communities object. $community.cij object will be set to 0 in the contract.matrix() function.") collapse.cij <- 0 } class(collapse.cij) <- c("dccm", "matrix") return(collapse.cij) } ## Store the command used to submit the calculation cl <- match.call() ##- Take absolute value of 'cij' cij.abs <- abs(cij) ## Filter: set to 0 all values below the cutoff cij.abs[cij.abs < cutoff.cij] = 0 if(minus.log){ ##-- Calculate the -log of cij ## change cij >= 0.9999 to 0.9999 to avoid numerical problems ## (-log is too close to zero) cij.network <- cij.abs cij.network[cij.network >= 0.9999] = 0.9999 cij.network <- -log(cij.network) ## remove infinite values cij.network[is.infinite(cij.network)] = 0 } else{ cij.network <- cij.abs } if(!is.null(cm)){ ##-- Filter cij by contact map cij.network <- cij.network * cm } ## cij.network contains either the -log(abs.cij) or just abs.cij. ## (the default is minus.log=TRUE) ##-- Make an igraph network object network <- igraph::graph.adjacency(cij.network, mode="undirected", weighted=TRUE, diag=FALSE) ##-- Calculate the first set of communities communities <- cluster.network(network, cluster.method, ...) ##-- Coarse grain the cij matrix to a new cluster/community matrix community.cij <- contract.matrix(cij.network, communities$membership, collapse.method, minus.log) ##-- Generate a coarse grained network --## if(sum(community.cij)>0){ community.network <- igraph::graph.adjacency(community.cij, mode="undirected", weighted=TRUE, diag=FALSE) ##-- Cluster the community network to obtain super-communities -- OLD VERSION ## clustered.communities <- cluster.network(community.network, cluster.method) ##-- Annotate the two networks with community information ## Check for duplicated colors if(max(communities$membership) > length(unique(cols)) ) { warning("The number of communities is larger than the number of unique 'colors' provided as input. Colors will be recycled") } ## Set node colors igraph::V(network)$color <- cols[communities$membership] igraph::V(community.network)$color <- cols[ 1:max(communities$membership)] ## Set node sizes igraph::V(network)$size <- 1 igraph::V(community.network)$size <- table(communities$membership) } else{ warning("The $communities structure does not allow a second clustering (i.e. the collapsed community.cij matrix contains only 0). 'community.network' object will be set to NA") community.network <- NA clustered.communities <- NA if(max(communities$membership) > length(unique(cols)) ) { warning("The number of communities is larger than the number of unique 'colors' provided as input. Colors will be recycled") } ## Set node colors igraph::V(network)$color <- cols[communities$membership] ## Set node sizes igraph::V(network)$size <- 1 } ## Output output <- list("network"=network, "communities"=communities, "community.network"=community.network, "community.cij"=community.cij, "cij"=cij.network, call = cl) class(output)="cna" return(output) } bio3d/R/read.ncdf.R0000644000176200001440000001234614707230357013440 0ustar liggesusers`read.ncdf` <- function(trjfile, headonly = FALSE, verbose = TRUE, time=FALSE, first = NULL, last= NULL, stride = 1, cell = FALSE, at.sel = NULL){ # Adding option 'at.sel' to select a subset of the structure using # an object of class 'select' # Currently file open in SHARE mode is not supported by NCDF package. # Multicore support is suppressed # ncore = 1 ##- Load ncdf4 package oops <- requireNamespace("ncdf4", quietly = TRUE) if(!oops) stop("Please install the ncdf4 package from CRAN") # open files nc <- lapply(trjfile, function (fnm) { nc <- ncdf4::nc_open(fnm, readunlim=FALSE) conv <- ncdf4::ncatt_get( nc, varid=0, "Conventions")$value if(conv!="AMBER") warning(paste("File conventions is not set to AMBER", fnm, sep=": ")) return(nc) }) # set first and last frame no for each file # used for time/frame range selection flen <- unlist(lapply(nc, function(n) return(n$dim$frame$len))) frange <- matrix(c(1, cumsum(flen[-length(nc)])+1, cumsum(flen)), nrow=length(nc)) if(verbose) { if(length(trjfile)>1) print(paste("Reading ", length(trjfile), "files")) else print(paste("Reading file", trjfile)) print(paste("Produced by program:", ncdf4::ncatt_get( nc[[1]], varid=0, "program")$value)) print(paste("File conventions", ncdf4::ncatt_get( nc[[1]], varid=0, "Conventions")$value, "version", ncdf4::ncatt_get( nc[[1]], varid=0, "ConventionVersion")$value)) print(paste("Frames:", sum(flen))) print(paste("Atoms:", nc[[1]]$dim$atom$len)) } # read heads, cell, or coordinates retval <- lapply(seq_along(nc), function (inc) { first.atom <- 1 count.atom <- -1 if(!is.null(at.sel)) { if(!is.select(at.sel)) stop("'at.sel' must be an object of class 'select'. See 'atom.select'.") atom.ind <- xyz2atom(at.sel$xyz) first.atom <- min(atom.ind) count.atom <- diff(range(atom.ind)) + 1 } nc <- nc[[inc]] frange <- frange[inc,] ss = 1 ee = nc$dim$frame$len if (!is.null(c(first, last))) { #check frame No or time if(time) { btime <- ncdf4::ncvar_get(nc, "time", 1, 1) etime <- ncdf4::ncvar_get(nc, "time", nc$dim$frame$len, 1) } else { btime = frange[1] etime = frange[2] } if((!is.null(first) && (etime < first)) || (!is.null(last) && last >=0 && btime > last) || (!is.null(first) && !is.null(last) && last >=0 && last < first) ) { # if(verbose) print(paste("Skip file", nc$filename)) ncdf4::nc_close(nc) return() } if(!headonly) { timeall <- btime:etime if(time) timeall <- ncdf4::ncvar_get(nc, "time") ss <- if(is.null(first)) 1 else which((timeall - first) >=0 )[1] if(is.null(last) || last < 0 || last > etime) { ee = nc$dim$frame$len } else { ee <- which((timeall - last) <= 0) ee <- ee[length(ee)] } } } tlen = ee - ss + 1 conv <- ncdf4::ncatt_get( nc, varid=0, "Conventions")$value if(headonly) { ## Report only header information return(list("file"=nc$filename, "conv"=conv, "frames"=nc$dim$frame$len, "atoms"=nc$dim$atom$len)) ##time <- ncdf4::ncvar_get(nc,"time") } if(cell) { celldata <- ncdf4::ncvar_get(nc, "cell_lengths", c(1, ss), c(-1, tlen)) celldata <- t( rbind(celldata, ncdf4::ncvar_get(nc, "cell_angles", c(1, ss), c(-1, tlen))) ) if(time) rownames(celldata) <- ncdf4::ncvar_get(nc, "time", ss, tlen) ncdf4::nc_close(nc) return( celldata ) } if(count.atom < 0) count.atom = nc$dim$atom$len # To solve 32-bit limitation problem with large trajectory file .check <- (3 * count.atom * tlen) / (2^31 - 1) if(.check > 1) { .nb <- floor(.check) + 1 .nn <- floor(tlen / .nb) .ss <- seq(ss, ss + tlen - 1, .nn) .tlen <- rep(.nn, length(.ss) - 1) .tlen <- c(.tlen, tlen - sum(.tlen)) coords <- sapply(1:length(.ss), function(i) ncdf4::ncvar_get(nc, "coordinates", c(1, first.atom, .ss[i]), c(-1, count.atom, .tlen[i]), collapse_degen=FALSE)) } else { coords <- ncdf4::ncvar_get(nc, "coordinates", c(1, first.atom, ss), c(-1, count.atom, tlen), collapse_degen=FALSE) } if(!is.null(at.sel)) coords <- coords[,atom.ind - first.atom + 1,] coords <- matrix( coords, ncol=(dim(coords)[2]*3), byrow=TRUE ) if(time) rownames(coords) <- ncdf4::ncvar_get(nc, "time", ss, tlen) ncdf4::nc_close(nc) return( coords ) } ) if(headonly) { retval <- do.call("c", retval) } else if(cell) { retval <- do.call(rbind, retval) ##retval <- as.data.frame(retval, stringsAsFactors=FALSE) } else { retval <- do.call(rbind, retval) ## take every "stride" frame retval <- as.xyz(subset(retval, (1:nrow(retval)) %in% seq(1, nrow(retval), stride))) } return( retval ) } bio3d/R/as.pdb.R0000644000176200001440000001223714707230356012761 0ustar liggesusersas.pdb <- function(...) UseMethod("as.pdb") as.pdb.default <- function(pdb=NULL, xyz=NULL, type = NULL, resno = NULL, resid = NULL, eleno = NULL, elety = NULL, chain = NULL, insert= NULL, alt = NULL, o = NULL, b = NULL, segid = NULL, elesy = NULL, charge = NULL, verbose=TRUE, ...) { cl <- match.call() ## which input argument to determine number of atoms from input <- list(pdb=pdb, xyz=xyz, eleno=eleno, resno=resno, resid=resid) nulls <- unlist(lapply(input, is.null)) inds <- which(!nulls) if(length(inds)==0) stop("insufficient arguments. provide 'pdb', 'xyz', 'eleno', 'resno', and/or 'resid'") ## check content of pdb if(!is.null(pdb)) { if(!is.pdb(pdb)) stop("'pdb' must be of class 'pdb' as obtained from 'read.pdb'") } ## check content of xyz if(!is.null(xyz)) { if(!(is.numeric(xyz) & (is.matrix(xyz) | is.vector(xyz)))) stop("'xyz' must be a numeric vector/matrix") xyz <- as.xyz(xyz) } ## if pdb is provided use it to determine natoms if (inds[1]==1) { natoms <- nrow(pdb$atom) } ## if xyz is provided use it to determine natoms else if (inds[1]==2) { natoms <- ncol(xyz)/3 } ## else use eleno, resno, or resid else { natoms <- length(input[[inds[1]]]) } if(verbose) { cat("\n") cat(" Summary of PDB generation:\n") cat(paste(" .. number of atoms in PDB determined by '", names(input)[inds[1]], "'\n", sep="")) } ## set value of 'xyz' if(!is.null(xyz)) { if((ncol(xyz)/3)!=natoms) stop("ncol(xyz)/3 != length(resno)") } else { if(!is.null(pdb)) xyz <- as.xyz(pdb$xyz) else xyz <- as.xyz(rep(NA, natoms*3)) } ## generic function to set the values of remaining columns of PDB .setval <- function(values=NULL, typ=NULL, default=NULL, class="character", repfirst=FALSE) { if(!is.null(values)) { if(class=="character") fun=is.character if(class=="numeric") fun=is.numeric if(!fun(values)) stop(paste("'", typ, "' must be a ", class, " vector", sep="")) if(length(values)==1 & repfirst) values <- rep(values, natoms) if(length(values)!=natoms) stop(paste("length(", typ, ") != natoms", sep="")) } else { if(!is.null(pdb)) values <- pdb$atom[[typ]] else values <- default } return(values) } type <- .setval(type, typ="type", default=rep("ATOM", natoms), class="character", repfirst=TRUE) eleno <- .setval(eleno, typ="eleno", default=seq(1, natoms), class="numeric", repfirst=FALSE) elety <- .setval(elety, typ="elety", default=rep("CA", natoms), class="character", repfirst=TRUE) resno <- .setval(resno, typ="resno", default=seq(1, natoms), class="numeric", repfirst=FALSE) chain <- .setval(chain, typ="chain", default=rep("A", natoms), class="character", repfirst=TRUE) resid <- .setval(resid, typ="resid", default=rep("ALA", natoms), class="character", repfirst=TRUE) elesy <- .setval(elesy, typ="elesy", default=rep(NA, natoms), class="character", repfirst=TRUE) segid <- .setval(segid, typ="segid", default=rep(NA, natoms), class="character", repfirst=TRUE) o <- .setval(o, typ="o", default=rep(NA, natoms), class="numeric", repfirst=TRUE) b <- .setval(b, typ="b", default=rep(NA, natoms), class="numeric", repfirst=TRUE) alt <- .setval(alt, typ="alt", default=rep(NA, natoms), class="character", repfirst=FALSE) insert <- .setval(insert, typ="insert", default=rep(NA, natoms), class="character", repfirst=FALSE) charge <- .setval(charge, typ="charge", default=rep(NA, natoms), class="numeric", repfirst=TRUE) ## make the data frame for the final PDB object atom <- list() atom$type <- type atom$eleno <- eleno atom$elety <- elety atom$alt <- alt atom$resid <- resid atom$chain <- chain atom$resno <- resno atom$insert <- insert atom$x <- xyz[1, seq(1, natoms*3, by=3)] atom$y <- xyz[1, seq(2, natoms*3, by=3)] atom$z <- xyz[1, seq(3, natoms*3, by=3)] atom$o <- o atom$b <- b atom$segid <- segid atom$elesy <- elesy atom$charge <- charge atom <- data.frame(atom, stringsAsFactors=FALSE) out <- list() out$atom <- atom out$xyz <- xyz class(out) <- "pdb" ## should account for new resno and chain #if(!is.null(pdb)) { #out$helix <- pdb$helix #out$sheet <- pdb$sheet #out$seqres <- pdb$seqres #class(out) <- class(pdb) #} unwhich <- function(x, n) { out <- rep_len(FALSE, n) out[x] <- TRUE return(out) } ca.inds <- atom.select(out, "calpha", verbose=verbose) out$calpha <- unwhich(ca.inds$atom, natoms) out$call <- cl if(verbose) { resid <- unique(paste(atom$chain, atom$resno, sep="-")) cat(paste(" .. number of atoms in PDB: ", natoms, "\n")) cat(paste(" .. number of calphas in PDB:", sum(out$calpha), "\n")) cat(paste(" .. number of residues in PDB:", length(resid), "\n")) cat("\n") } return(out) } bio3d/demo/0000755000176200001440000000000014707230357012206 5ustar liggesusersbio3d/demo/00Index0000644000176200001440000000026714707230357013345 0ustar liggesuserspdb PDB File Manipulation, Searching and Alignment pca Principal Component Analysis nma Normal Mode Analysis md Molecular Dynamics Trajectory Analysis bio3d/demo/pca.R0000644000176200001440000000470314707230357013100 0ustar liggesusers### ### Example of PCA on a collection of PKA structures ### and a large collection of transducin structure ### ### Authors Xin-Qiu Yao ### Lars Skjaerven ### Barry J Grant ### require(bio3d); require(graphics); pause <- function() { cat("Press ENTER/RETURN/NEWLINE to continue.") readLines(n=1) invisible() } ################################################ ## # ## Basic PCA of related X-ray structures # ## (requires the 'muscle' program installed) # ## # ################################################ pause() ### Set temp dir to store PDB files tmp.dir <- tempdir() ## Specify PDB identifiers ids <- c("1cdk_A", "3agm_A", "1cmk_E", "3dnd_A", "1q8w_A") ## Download PDBs raw.files <- get.pdb(ids, path=tmp.dir) pause() ## Split PDBs by chain ID files <- pdbsplit(raw.files, ids, path=tmp.dir) pause() ## Sequence/structure alignment pdbs <- pdbaln(files) pause() ## Find invariant core core <- core.find(pdbs) pause() ## Fit structures to core region xyz <- pdbfit(pdbs, inds=core$c1A.xyz) ## outpath="core_fit/", full.pdbs=T, het2atom=T) pause() ## Locate gap containing positions gaps.pos <- gap.inspect(pdbs$xyz) ## Perform PCA on non-gap containing positions pc.xray <- pca.xyz(xyz[,gaps.pos$f.inds]) pause() ## Plot x-ray results plot(pc.xray) pause() ############################################# ## # ## Larger transducin example # ## # ############################################# data(transducin) attach(transducin, warn.conflicts=FALSE) ## data 'transducin' contains objects ## - pdbs: aligned C-alpha coordinates for 53 transducin ## structures from the PDB ## - annotation: annotation of the 53 PDBs ## Note that this data can be generated from scratch by following the ## Comparative Structure Analysis with Bio3D Vignette available both ## on-line and from within the Bio3D package. pdbs <- transducin$pdbs annotation <- transducin$annotation pause() ## Inspect gaps gaps.pos <- gap.inspect(pdbs$xyz) ## Previously fitted coordinates invariance core xyz <- pdbs$xyz ## Do PCA pc.xray <- pca.xyz(xyz[, gaps.pos$f.inds]) pause() ## Plot overview plot(pc.xray, col=annotation[, "color"]) ## Plot atom wise loadings plot.bio3d(pc.xray$au[,1], ylab="PC1 (A)") pause() unlink(tmp.dir) bio3d/demo/pdb.R0000644000176200001440000000324414707230357013101 0ustar liggesusers### ### Example of PDB file manipulation, searching, alignment etc. ### ### Authors Xin-Qiu Yao ### Lars Skjaerven ### Barry J Grant ### require(bio3d); require(graphics); pause <- function() { cat("Press ENTER/RETURN/NEWLINE to continue.") readLines(n=1) invisible() } ############################################# ## # ## Basic PDB file reading and manipulation # ## # ############################################# pause() # Read an online RCSB Protein Data Bank structure pdb <- read.pdb("4q21") # Whats in the new pdb object print(pdb) pause() # Most bio3d functions, including read.pdb(), return list objects attributes(pdb) pdb$atom[1:3, c("resno", "resid", "elety", "x", "y", "z")] pause() # Selection of substructure regions with 'atom.select()'' function inds <- atom.select(pdb, elety = c("N","CA","C"), resno=4:6) pdb$atom[inds$atom,] pause() # Simple B-factor plot ca.inds <- atom.select(pdb, "calpha") plot.bio3d( pdb$atom[ca.inds$atom,"b"], sse=pdb, ylab="B-factor") ################################### ## # ## Search for similar structures # ## # ################################### # Use sequence aa <- pdbseq(pdb) aa pause() # Blast the RCSB PDB to find similar sequences blast <- blast.pdb(aa) head(blast$hit.tbl) pause() # Plot results top.hits <- plot(blast) head(top.hits$hits) pause() ## Download and and analyze further .... ## raw.files <- get.pdb(top.hits$pdb.id, path="raw_hits") ## files <- pdbsplit(raw.files, top.hits$hits, path="top_hits") ## pdbs <- pdbaln(files) ## ...... bio3d/demo/md.R0000644000176200001440000000352014707230357012731 0ustar liggesusers### ### Example of basic molecular dynamics trajectory analysis ### ### Authors Xin-Qiu Yao ### Lars Skjaerven ### Barry J Grant ### require(bio3d); require(graphics); pause <- function() { cat("Press ENTER/RETURN/NEWLINE to continue.") readLines(n=1) invisible() } ############################################# ## # ## Basic analysis of HIVpr trajectory data # ## # ############################################# pause() # Read example trajectory file trtfile <- system.file("examples/hivp.dcd", package="bio3d") trj <- read.dcd(trtfile) # Read the starting PDB file to determine atom correspondence pdbfile <- system.file("examples/hivp.pdb", package="bio3d") pdb <- read.pdb(pdbfile) # Whats in the new pdb object print(pdb) pause() # How many rows (frames) and columns (coords) present in trj dim(trj) ncol(trj) == length(pdb$xyz) pause() # Trajectory Frame Superposition on Calpha atoms ca.inds <- atom.select(pdb, elety = "CA") xyz <- fit.xyz(fixed = pdb$xyz, mobile = trj, fixed.inds = ca.inds$xyz, mobile.inds = ca.inds$xyz) # Root Mean Square Deviation (RMSD) rd <- rmsd(xyz[1, ca.inds$xyz], xyz[, ca.inds$xyz]) plot(rd, typ = "l", ylab = "RMSD", xlab = "Frame No.") points(lowess(rd), typ = "l", col = "red", lty = 2, lwd = 2) summary(rd) pause() # Root Mean Squared Fluctuations (RMSF) rf <- rmsf(xyz[, ca.inds$xyz]) plot(rf, ylab = "RMSF", xlab = "Residue Position", typ="l") pause() # Principal Component Analysis pc <- pca.xyz(xyz[, ca.inds$xyz]) plot(pc, col = bwr.colors(nrow(xyz))) pause() # Cluster in PC space hc <- hclust(dist(pc$z[, 1:2])) grps <- cutree(hc, k = 2) plot(pc, col = grps) pause() # Cross-Correlation Analysis cij <- dccm(xyz[, ca.inds$xyz]) plot(cij) ## view.dccm(cij, pdb, launch = TRUE) bio3d/demo/nma.R0000644000176200001440000000401314707230357013102 0ustar liggesusers### ### Examples from NMA Vignette ### ### Authors Lars Skjaerven ### Xin-Qiu Yao ### Barry J Grant ### require(bio3d); require(graphics); pause <- function() { cat("Press ENTER/RETURN/NEWLINE to continue.") readLines(n=1) invisible() } ############################################# ## # ## Basic usage # ## # ############################################# ### Read PDB and Calculate Normal Modes pdb <- read.pdb("1hel") modes <- nma(pdb) pause() ### Print a summary print(modes) pause() ### Plot the nma object for a quick overview plot(modes) pause() ### Calculate cross-correlations cm <- dccm(modes) pause() ### Plot correlation map plot(cm, sse=pdb) pause() ### Calculate modes with force field ANM modes.anm <- nma(pdb, ff="anm") pause() ### Investigate modes similarity with RMSIP r <- rmsip(modes, modes.anm) pause() ### Plot RMSIP results plot(r, xlab="ANM", ylab="C-alpha FF") pause() ################################################ ## # ## Ensemble NMA # ## (requires the 'muscle' program installed) # ## # ################################################ pause() ### Set temp dir to store PDB files tmp.dir <- tempdir() ### Download a set of DHFR structures ids <- c("1rx2_A", "1rx4_A", "1rg7_A", "3fyv_X", "3sgy_B") ### Download and split by chain ID raw.files <- get.pdb(ids, path=tmp.dir) pause() ### Split PDB files by chain ID files <- pdbsplit( raw.files, ids, path=tmp.dir) pause() ### Align structures pdbs <- pdbaln(files) pause() ### View sequence identity summary( c(seqidentity(pdbs)) ) pause() ### Calculate modes of aligned proteins modes <- nma(pdbs) pause() ## Print a summary print(modes) pause() ### Plot fluctuations plot(modes, pdbs) pause() ### Cluster Modes simiarlity heatmap(1-modes$rmsip, labCol=ids) unlink(tmp.dir) bio3d/vignettes/0000755000176200001440000000000014710164351013264 5ustar liggesusersbio3d/vignettes/bio3d_vignettes.Rmd0000644000176200001440000000465514707230357017040 0ustar liggesusers--- title: "bio3d Vignettes" date: "Sep 22 2016" output: rmarkdown::html_vignette vignette: > %\VignetteEngine{knitr::rmarkdown} %\VignetteIndexEntry{bio3d Vignettes} \usepackage[utf8]{inputenc} --- We distribute a number of extended **Bio3D vignettes** that provide worked examples of using Bio3D to perform a particular type of structural bioinformatics analysis. An updated list of these can be found on-line. At the time of writing these include: - [Installing Bio3D](http://thegrantlab.org/bio3d/articles/online/install_vignette/Bio3D_install.html) - [Getting started with Bio3D](http://thegrantlab.org/bio3d/articles/online/intro_vignette/Bio3D_introduction.html) - [PDB structure manipulation and analysis with Bio3D](http://thegrantlab.org/bio3d/articles/online/pdb_vignette/Bio3D_pdb.html) - [Beginning trajectory analysis with Bio3D](http://thegrantlab.org/bio3d/articles/online/traj_vignette/Bio3D_md.html) - [Enhanced methods for Normal Mode Analysis with Bio3D](http://thegrantlab.org/bio3d/articles/online/nma_vignette/Bio3D_nma.html) - [Comparative sequence and structure analysis with Bio3D](http://thegrantlab.org/bio3d/articles/online/pca_vignette/Bio3D_pca.html) - [Ensemble NMA of E.coli DHFR structures](http://thegrantlab.org/bio3d/articles/online/enma_vignettes/Bio3D_nma-dhfr-partI.html) - [Ensemble NMA across multiple species of DHFR](http://thegrantlab.org/bio3d/articles/online/enma_vignettes/Bio3D_nma-dhfr-partII.html) - [Protein structure network analysis with Bio3D](http://thegrantlab.org/bio3d/articles/online/cna_vignette/cna_vignette.spin.html) - [Introduction to Ensemble Difference Distance Matrix (eDDM) Analysis](http://thegrantlab.org/bio3d/articles/online/eddm_vignette/Bio3D_eddm.spin.html) - Online protein structure analysis with the Bio3D WebApp ( [PDF](http://thegrantlab.org/bio3d_v2/download/webapp-tutorials?download=22:bio3d-webapp-pca)) - Online Normal Mode Analysis with Bio3D WebApps ( PDF | HTML ) There is also extensive [on-line documentation](http://thegrantlab.org/bio3d/reference/) with worked examples (and their output) for all functions and a package manual (in [PDF](https://CRAN.R-project.org/package=bio3d/bio3d.pdf) format) that is a concatenation of each functions documentation (without example output). Note that for information on Bio3D development status or to report a bug, please refer to: https://bitbucket.org/Grantlab/bio3d/ bio3d/data/0000755000176200001440000000000014707230357012173 5ustar liggesusersbio3d/data/aa.index.rda0000644000176200001440000021635114707230357014362 0ustar liggesusersBZh91AY&SYW¬¶YÄÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿá€Î^Œð('Ÿa‚Àx‡=AW{UógÀ}> B•€ ’B€€ H‚R‚’‚…¥ TA”v>æB¤Q*!ç¼ÞÓ qDU¨‘DíÝb‘=×Ͼ} E¬½×¹â+Ð+çßpsÞÍÓ„óšöPA@hKѶ4ÔãÎîÁ†U D„€H|Û}ØAx€¨@ ƒ H• ”UU "QBh" /C]ª(…Ö :,jÈ’1ó禼ÁP0@"p4ÉÖ@: TìÆètºeLÁ¹Ææ€@ -¬ÒhQ,¡ºhv4$r cEñ÷h’” )"” ’ªEB PPe §¬” øxi@ ÈQçÌx€zÁ 3h¹mçß}àê›`h|öÁ$E*AèUDÐЀ94jö ‡#@_|Ô>õ–¤J fÊÐi@>NU*”JŠt:­¬èà %im €k|õ÷WØ•@hÕ|@P4Ði ˆ…ÖT"‰èܵ_úpÈ|ØwpÀ‚·È½^»Ð=QUãÞgzà¥TQBTI@ªPî§z÷Þú ­oz}0{É_fJ^úûž’KÏ{¾¾›5RP(¦±ï¾nõJ¤¢û4Tˆõ÷€èŠx@€&&šLÐ L`š`ŒM#L¦ÄÀši¡èˆi= L“ÓSÂdє𠆔ôÔô&iÄ4M4ô@ÔñD šM4hizÒdcHÔl§‰©§¨õ2¥6¦54Ø£ÔÚLO)êi螦Mdz™ ž¡§¦IêhÓj žI©  €hJz$H‘!ªžB&ôÔõ3SÒ›Ph`A£G¨õ ¨Œ€ 4ƒFF€h†€4ГÕ%I&€š§ê Lš4Éê&M4ÐѵLAµ  ÐÐ2¡ˆhÑšhÐ €h &™h$ˆ&‚hš` £Â€L 0& ¦™4h4i©´4LLÒž˜&M¤ò ˜™ ‚Ÿ¦š €Ó‚$‚  MOIè O!0SÊžÔžSÓS2‡¨õIâ†É”Ò4šiäCÔ£Ô?JPzžIêz†@éê=@@ÿÃmüÕùɯÀÌIß¿öéäEÎ_ ÷^täWíy»¢¿Î[U?¨j%‘ÅxäÛ·d‰!Vd‡l¾}Ï7^¾<žW’ï%I·Ï'%| ¯ñ®ãú-áöˆ‘MQ™R¡Ádä |1tºæ^ñù Oo·çŸãôûÞ¿Eºìºìt²ÙF Im+’9ÊV¿C ¶]?K0Ì>pO©ô÷ö^]¶ÍýXŠÖ_%†6'ôÏò-Eiÿ5ͪ¶Ü`5×Vc|÷»95àä„ÁžÒ»‚°ñümÛÿ~œˆeLßÚÞâz;BŽ i`T\Â!¿‹ÞÌ®“çÇ–Y­IaÇÏ&¢L̆ŒCL„R,“êN½KƦ˜ç%€@!šëÐ3å¬uËzDDxŽâ2»:4àá¢M*ÎiV!\ekQ,ÃEîjé21§>*«ë-S¶Ëçò_ÅZ;À›uÎ 2ÔKjÈdª…r2r9 |y¸bù”æäåÅÊ’8x˜¬06aÔêAI=Æùj`da:†“­z̪e³"eµA“³Ok'‹QJhMÇëµñ\f˜ƒ©Ý[Ø2¶´ƒº}. äÈãÄ—(—ÝÛ³ÔìtíK˜î/SÁÞï6»iõ»MÖŽ·¸—ºÁÁﻼ}ç¸Ø˜1yÖxQëºÛ¯ ÀŸ>]4ýΊ1n²ƒ&ósêÖ—_F¯…Hù~tkÍ7—ÐÃNO/[Ï|lô5Ùæoö0Ï;ÁY¶öë8î÷¾M–y“ãô¬ÛjÇkæ5üœôßžé’s¬'O-m•ÕÈ_G5yk%pä·N iËÎÕˆæ#HTÛ¢hµ›vÇmÇ©ÞRþë]Ç™,ÕÔ‘?l¶>zX.î7­í¬xÇŸ‹yÁ¿¦uíܺnOSÖçs½^[ÞsyþÇMIÃóœžN»­Åˆ·gUåæÞà`€R–Œ!#$MÐÝ›Â=Dàðôû½ã"’®'L÷7`(Ÿ‚rï|‡ó'Väå‹÷„?¡ýüK4ǤKç“>Ò‹÷ý€„a烿ìΖïó!ô¢Ÿ²Çûç›åü¥@ƒ% /½WúCH¾DÏf'2à‚¿Âe¨Îü„H&Q­ –|Xá{¥9;yVfŒžeCŠ52f''¹j >’IÄ¿mÂÚÜ €"âgê÷³õüö»vÂër´ö³ ¥†ý=Œ±žP?ÒïæÌ1P8g¬®¡ªQ\$TEYߊ’QhiE஡ôPAn „– ¶“F‚’’ÒVKmZЍխí³ZÝbÆ Ò6 T°1$ÀÂŰØ JôÀ„D u!@]d*Ëb–"YAd²U‘ÈPB%€F–Yl 6 ††“„sYT>¶/YÒE*¨AB£Wàÿ“×ô·ÚüØÕ+ùNUÎÕ¹¢ÆŠ£cX¬h¶ÆÖ1[^·ï»vÞkG¥¹b+_,Û†‹±­Ø-¨)5ŒX-ÅcV4HF]Ò^i‘V /EldÁ“,ÂüDÒ´ Vyûÿàøpñ¸'T½ÞÆÜneAK%[&˜DKº'Nšlœ<œ#R¿rÖÛ¹rþä›Yúÿ‹ƒßpÀø úØ e Ó½iÔ Ç‚g ÷Á¾à›c"~ÀÌÁâï“p3¨n¨~頻Ì5œ†ŸÎóE×à&ÊQ¡”á´Ù9èî.üè…Ùá&´ÏìÁµÇm<´5’>¢ôüžî:tñ×^»+úŹÝßÓÙ}µM ævðÎ6Þ—ªýZî_ÆîÓ‰ˆÚ¼ó㵸}÷ —€ ™Æsýò‡¸ó×±€Ân ôð>I.k‚ÆÈG\„rÄA@u£ (æYZ­òÀF»ôÚ=ñgªm]‰\õÚù'§i¤¼xûé¾ÝîZ×–y{'4ƒV=õ#|C²}žffx`ÿÜÐDDsB¨Hˆ€‚l]DÕé(A-¦œ„ˆÔ’E5 äÛå;µ\ÔUæ¾£^[^÷E¾}kQ¤Å£MLÊàA0™‡ŸžÚ \ °FÐBA<Ôk%`ƒä±* NUšˆ íÅï¤é»?æzæ§›ø<]Ÿý|^+Ôy-î 6Ã÷4'Ë¿÷ö|ýà}ŠEméYï—û$üßêÿ“òWþømŽïéûÄôG¥óƒòÏN=Ä¿¨ïÙ×ü×Ão‹Ìlßòõ-<WñNïÛ®Í+i0¿küG¸¿R͵‡Ý~Ö›¼Œ\¯£7>¶ë}Tc¼—K”ÏÉûßáòûM.-k:ÏëÑÕ¿moÞ+ÅÔÍú»2îôn59¾æù¦ÃÉß&Öâž“v°ËÎàþOÄ÷?Ñø= ÷û:7¡É.Mz½io1|Ú[Íñn_ zŠÇéù…¡ ßÔ¾žm´¡7ÒåÖσÌí‰åð¬ÿÇéV©~—Ã¥´þVÇ;öñ‚äß‹™w6>ïͿƬÈlY7m› Ò—Oâ jîORÌb¶¦Èœñl LÈ a±±æ J—N¸>qïw]´Ý­5Ð8iŠñQA¥…¸ïÅ¡kuýeâ9÷ºß­N 2Ò=‰‚£3Héo•=š/Ž}‚—OIõÅ<â, 攘ÿ'´ú›ˆB§º•®úëÎŽ¸°ÚÁØÂxp­).{Õçlg„¶Núhªå×uúõ…˜3ÿ;ö)˜hÇøQ¶ÞõÌÁšœ Œ_ ÌÂD$¯gVk¢\ÇÚÑy[+\÷§qŠ,¢­„a¨…Ñ& · )PR "4ˆ€Œ‚E%(ªôîß;ïSÝßööäÿgyØÙ£S×ìåÃí³xúe^,•D“WÑCÐÈ3@?òŸ¡ZBýÏyÕâøº7_7°í.ÉÙxSÃ_÷Ÿ»÷|}Çwßßsa»Åíø“~\>{;:ûž7ØÛÿçoƒ‰°úíñÿ—ê_*®¶ëƾÞgyùmo&ûÁämþˆï¼<9Zâíè¹ûm¶ûÈêû®¦^†ãÐÕwó»ÏÓýÊôöº¹uŠñßq?¡åv±ÓÖã{©÷Noikêít¨€;6ò;,ð{éü…txÐ ›ªÝB*Ûû}É w´áî½PAELp½EtÀð@Ûàš<€ÿÀ´>8¦>€Þt@Ù€àñ€ è€@ô @Ù€ @ýÐJ¡ùàBxßuE‚Ip+y‡Àºì2êõþ jd£$/½Sðå>?·°èGé\Ž5Å,">Ä©¬{ð7ýóGóc'¡¨|zfe[QöŸ°pD­þ6øÁ|ílÁ'¡ÁX@‡ò÷npºPyüYðãuÉQÆD6Y Ÿñ#væ0ÓÛ ßÍ»bÙq|¿>úA8ÖÏNy¥Í¢d†©ªzç(ºé ù‚†ï1×¾"{qfG;¾Ø/Ñ<ò¦Ç%ÜqA–èu¡ÐÛóSÉ ôíSÔ´ï­·IéѾL¨äý³l"’žîÌ›=¥'—0@Q;È‹º/æyªDÚr‹™Q¢¶ÃÔ˜j©¢õXÜ?¸:a› ÚТ ­a¨CiU§²Ÿ´Ÿ)T½2F”À”úKš\Ú›§ªÅN\ ˆ3AÊÕÅLHŠhŽv„RäÇ\U4 :°Š˜Øš&e©S§yf‰÷ç·Ò¹Ý–G°¨ï·™ñºÞµ¸sM’GXº¬Ëðÿar<~f¿«~WçæýÛâýM•=]ÖÛ®¿BEÎA›râŽ)»DúHššvaÁë]FíÆÛ‰ {¶ìÏÊoæ‘g(YÑ×'ÞL±Ð TõHçYÆ´)<§­›!Äû>[ž~cng\ñSÚj‰èB9ÂL&} ûüp(Í3JN` 3’VŒÚþÊ熴8=NúÑv@D ú“YŠâøœZ{i% ´@Úp´ž=ò½ÜMÞ!<ø?NG ªVuÖwÄ €d‰8wûUü#}Ê··óz_^ŸÇvèl¥¯uΟ´Ø¦ó˜|b&+•à/ÁQŽÉÙ…1ãz¦cI <ÂPMÁÒ‡B$髊G©c$m„)GVÕ. DÖDh€I‡o9ç«—›K°†l³Û»8_6&á [vÞ¤{Ì!÷Ë\‘f)j!pu‚¤8(Ë„ ’\Úógϯ…qþCÙ̆ë$ZèkȃH_Kö>dŽLžò LÁCÔé3do_$jœ˜I•f`—'¤Ärâx Ì!ÏÖ¬ E«#*y|žb©­G;9S#iãeðQ& Æ(…¶~4nŽø¥•ò>+xö:ÛäŠí µÁ},Ä =½¾f/’H² ­”ÛÐ’N’„S ˆƒRµáÏß´M³`Æ¡ ²ŠM,©7åÚuãŸN<ðõD’ãö¬Ýnsv…BX¹=CvaRhÅÖ¹_VQ‹î\W»jl!¤Xºí÷a]õgM/6ÖÉ|Ÿ&%qŒ}Ë|zê¸~œþ>õ/Dë¾ Crað÷vT³dû½Î½›,’CûíŸC9óŸ©KòááÉí&äÁK°•m!]µçÞù–þ÷º¹+¯-²ÛsÓóä\¿7*(ª¸òb°ˆæ(yñÊÒr)X”„FLŽ?pÄQ®mˆµI“ì YôL¶;ë{ÉÉÙG<µ+aŽFÅ!É,‹ÈQ;#¤ã[ÍÓMq’NÛ[K°Í~²hØCïŒj>¦GÛ†–?Œ™÷ò™3ã²¹ "OL=CñÆçÊ|˜|ßIøG5PN33\S/ÄŽŽDú¿ÀMsXÇ=1<_Ò¾Æûz­§G^nçQ]“i!Ø„@¯ë áÑÀ÷’ÂrGZ«i|XDwäjÄDÓÒPG_aŒ4“‡Õä>o€÷ñ= êBˆ§Ùr9‹ã|˜í¶+Q«D³¦†ZP÷ ¢¤`룓I#EL¬1Ûhñ Û í;PdÁ!Ôd+´øB£²}…-HçòâëÇá/%“Žäɳ+Øžþâf½ÞSd&Û“ÉG#“M¹êC®üé‘ÌñúéÁ_®ŸNI°‘FB$v?¹#égÕ®Û@"Ív'Vg»ÂFú½‘õÖ).V¡ Úöé‰X‘>„å?$Þ~%‹d§¶6uê}ŒÍNÑ÷¹®"ü’qú—‰fÑÔÚâœfq&kíSÛ™¨§yC¯§œœ“¿„Ù¼÷øÛžoK…õv‚M¨É˜ *˜•-4 ˆ蓈lÅÂ<·'Vk `Æh™q³´‚ç‰\È‹‡Ya1d#'Îä³ÖÌ×¼˜zpˆfö±3ÕíÈzU½²µ~ÏÉÝxvm¶›¸Ù$û¹¯rŸè`˜M¤!Kº QÑ a\&:ž¤8Û!àBAÒQŒ¯ÞSá üƒâOØYŸ™Ò-Œí¹ëdw"ÑÖ/9ôi©¿(–Ý6; ––¶bVÓôVÔŒÍXˆÒÅ -#¦O×Àn¸@8Zidünõ@x3r_‡uãY˜(øz“ IÀ±®NæÂøÖòÅn:ˆÚEÜn·çÏ·ÓÒW€ÁùC">ÎFïäý[®"ÎJ½ÿ.È+jõœLñÈ$[%­"–@L‘œJ•ñ%†Ûã<åròKŠLŒ_­jÔó’zó†ì{p¬bYD¨Ë@8l» Ô×ÒÇÊO'lGgË6ï\5e£¼ü ï:„z°‚9²g®$r¬}-`Þ”5ˆ~¤4޳¤+z•î²g}·¿½Ó|ƒz÷Ž·¹5´·]j=s Á ¯\xJ˜c9µÍa¬¦ðPÈæ—OÄH&T‘"ØŸlˆ$žbYŽ!pF…0ˆ îù—eÏCÝâï1s_&$i´§d52 ì%`ãòžô†ˆ²G ä®®}ÍŠâ9Þž–1•g»Bx1Åq…ßAZࢂ+ÝÚ²>1‘Á<•‡Cb©Ò –¯#Ôê°õ÷Ø8ƒ¹žUqam=TX‰ïÚ>¾áÑ¿ñtYaínDÕx8=P’;'À¹¢:ÀiðE›s ÈZ)³Êll°ooíÎnkpæÎ¾Ã}q,¦Çûr®¢‘Ö_Z‚H}«nÄNáü5†I¦ss*çƒd9ÛNQ£dAlö<›ž\ð¤gºD+>L­™Éøç½(¢#Ø)õ29axÏRNÜ¢òDrJYm”—;Xë[³¾§Ã½O>g£PÒ'ÎÌáng8¦ÝɨQ…áÙ•7”\‘gp€€E9_=FLã®]™9zcÈG”´ñÈr̃fâgJ¯€`4…Ô a vŸlÄðãråpÈi–«@_õ¢t™4ñçšz6jEËjªÈÀñåÈ^gî+³ÚwaćŒõ#úFžŠ×Èe˜8u†v¶r¤_BâùpOM‡ìraäæPøl3­ûhuñ뎜Ïb9‘Û¯F7ÎnCº7¸92¢~žÕLÛáM)äĽ㢅.Ç%Hˆú¾"‚BäŒ5†A¯¬S³ïöa]Ð\üåßÛlQç S?@õô»ŠDêO0›¿u"(×S:øž8yØ,=2’dzËWæ›$ñit˜šL@e@äô$ý_ÄBH¸+ ‚,¤i—;¸BC@™Èò—SÔq½Kéž>,…~¦Ä’ûgÄ/͘¸ÎоCåKfsÔ–k/&½äÀy’XGßÂ=½¿\ï[l$x]Sèv½‰‰êvFOŽ‘PUÛÜ“µïÈÂ!"I!*¡ ì"ðQ’,í˜äƒ0{\Ì©JP@¢CÆy‡f.D©·ªçß¹ñß§YaÝÄA:‰[:¦H[‡ôÔôjäwH‰VÒ'…Wwá»¶õ­Q, Ëw³“m’0˜‘ɲU?McãšÔbÏ¥—ÒZƒ6e¯RÏ9K9GaÍ'Y•픓dM}·¿/7{,‡<Ò‘ì’B}¦³Õ–^ܸÎ3¾%h“`W_KÇ[»3ð MqòßV ^É۳ݥ:>-:´Î½ÒŒ Ò: ¨CÛåKeZYö¤ûÒCÎzòî¼52$|b¼s®fs\}2ç–W«ûeç;Ý, oÝB9íÉíí~’í9Ü„a‹‹ »ÃmÐRÏÉÜ0:Yá½ÍÇF-¢H2J¬ü†#ZÕq/à[GÚ<óLU-}Öä-!<õs½ÇId´ /5BfÊ2(,"­Ñ’3¥ÃH,hU],IA|¶;šÑéh›XSEN¬TAM@ €ŠÁUPø‰òhAÜ ¥’* µ H*­ ÛUw.µ[¬ÖÓ,U³«d–¹ouÕnêääjÄŸ¤ÖÑd¤–¥ Ì8f0 DDl‘“òð9õ‘çíøÌÀÏJ¨>Ù±$$RfNíÝѬZ.’WM\¹ÊäîµÝÖܹÑÝ·K—J Ø—pœÜ¹.¹Ý„£.îÝwá ww2îæ¹pénlˆ  :RI8Pj‚ÈH˜ {‡ šÔ·I/‘)}ZµU»tÉ¡“‘Œ˜ˆÄûýÁXAÀˆþcóùOE,§ÌøÖU¶E¯¡V¶ûBd±ZBÔA±ŠÉŒb* ‚Ôl›ŠÅF-%Ô–ƒTFf#VŠ£lmDlhÖŒ”Ri–Lj!4–ÑIUVúŸD&dsåœÙŠ(üØ* ‘Ŷãcirƒ!  fAH¡2d#’d€I “&ƒ $‘a2IÎyëºöôÌL.ÜÝ4æîÇEŒØVA!I’9 ˜áˆÁIŒ 5´‘‚H1™#‘’K+rs#,ÌbÔRI¯-wuÝÖæ’æÞžO2#ºã\Ý4ch¨÷yZ¸äÞõézšIÝs)®ëËrõZ¤·Ž$iL­’$‘T‹,rÝVæ¹AË›\Ú!–Á"È ¬F)$HŽç\\ƒ]Nã“®ºîNå¹wÜv:\\ÍÜwaÛÝss¹pî8Î:tKº.êíÎs·'Wprºé˱Üvæë˜‹§.'s¹ÒíÜîés¸°•ÝÇtävuÍÜPŠîuØ’2! $‚âÉ©$ÈŽE“0ç$vîn›®ÝÎáÅÝrs¸‘‹"I"H’B.GT„2Bιw½v{»ŽáÍÑÝîp§\pÌîî\s®®g4®uÜî;‘΄®Í]v.äd„2d“ !‰ "ÄRHÁŒ‘ŠÈLb„˜ÆA‘’Dd]Ñë®\wv¸„nh.k]ݵ¢Ñ­òùhѬʓoÅ}}z¾¾/•ó.×!1ò²1„I DŒb13Ñç§§w\´¶åW¶·cD”õ2ò¥×www:»»®Õ×WÈá!s›®tåÎŽL™rB#"ÉE$IBAd„“"F.,Ä‘ÌCŸZ~Ìd ªñ¦  @)ѯï/o…±øËãn¿t_h&I¨WGa‘DT ìBUUL ü/â‹÷sy°PG3á„B9‘Ku[¿•s|ENN L1m-*©Æ×/™W/†ÛrÅ»ví«–QV-|–ÅXÚ¹¨ŠH¼Ö¹¼·6Ñb‹j5Fµ­ô·h€§ûÿØzr~Ñû’äR¶õó\Š\.!×ѯ·¤ú{UäXˆ¨µM4‹m»kÃê¼E «DIA¡`¹òç’ì>ž kð- B H¤€üP,!V²~sÃ'邇þzktü?îà» &VT‘”9B((Ã%¯o*2†ûšã=UÝdÓâ×nAÿÛÖ½ç®×7¶Íöªþã÷>ªù,„PkåUj¿!KZÕSi'Eô·_âª9¿£ø, ó±‚(dL•—Ö¥ 3wz¯m²×¦3Ûmh_è« „ìûËĺ$Œ×,`] Œ$øÁÛÁn[ŠPè 'Ã׬ågì»–¿ö¶k3ަ…JÖÈ÷‚!8MÅqv. ¤¯x'3LJ]¼°îü¦ƒ™ÌÅ-eƾsíPÄI_ZØýiåóÇò²+¹òÁüáök’a1æÃ“˜AB0DA}ƒZmô¥ñ¼÷3¹‡¥æ?’n5ù’Dz„ÄÏ[˹œîK³1ÄDC311 „CˆŠ_á_:¡%ô·Ç_²ß¡®Ü_ßð¿ÇîN‚×A I7ܵµ¿X–¶ÉDTÚij6±h©-£3AD&"«µÚ’)27•¬mf—¿òê垬îÛmÛ¿/É{\ÉÉ¿·Ë[Ú•Õµ !$ƒ#$d"/2ó'5úÿ_±·ìÀ àã‰@ŒO·*DÉþÐ=ìmq"©$¯îþÖ‡ I„rð´²6ð,¶=! !FHEžà2 ¾€ xÝd@³h*œ÷Ãè:"À/þþÝ äË‹$æî*ο,im·¦¢Ãá— ˜ž×åê:¾7×¹Ûfù,‹™ ügðØm‘3Tæ` ‰$Š€Æ$‰)«V”­¬[TjÔjÚ-µ¬ZªÓKhÅj6Ä€"Ï‘ÈXU± B@`ƪúKÿ>WÝ>÷¿»g ®ìÅ€ÊÉ–ÆaE?-ÕÍëTïµí¹4Ûì´Û˜:ÒæÖ)‘¯üwݺ¼±ùÏÉõyi¿à«èUëozóZ¢ %Ä#%ª£ ’XA9§âŸ3óýeè§4—¡S@Dâ(lï$d Tx•hÈHiˆTo ÆÂxÏmæ»›ÂÆx˜Gž¤®–ßtnX¨´ËßæÃdÑeY¶­Wk{µyFRbÑ6$¤¤ÆQa’Œ”l„i¦‰m&ÛJ4Ù&¦šQA’‹A°¦bhH±$$a†I¤É`¤ÙA6@¢Ì’d‚”„ÄŠ(”Ô¡‚4V‹J(Ô„"H X´$–î²ùCêí¹U9Rð]ú'lÀmä?zV·ú»‡m‹¥üü)„“T˜‚­UŒOÐäS˜˜Á›ýö÷µäv±W„ "!A©@Ê=××Ë»ºýß,Õq_g·ÕË_JÊyh}•CTÈÉ»¿À©E{¾=^Kw¢ó CðF±Õ ¹âÊ©Òé5ªÕjðž¯^¢ó@Oµ(—QßÊ .Mm"R ’H„’‚FFK [`–"ëÊ4jêËsRí·sbÏÀö×#mê߉ëÃøO·G‘P„’w¨£Ñ¿œÿŸìu!õ&_5+»>®ØÛ\‚‰–&d3ýE%Àh¯YÀ¡hFF1©S͆ІÐ=5­ð~·5O•nÜÅùåëRVÛJÞ©D½ÙsÞ‰ûö² ÒMýÕ¹ôwÙÄŠ.Èo$IûÏצëѤÄ[…˜‘¨:^Rã;SÙimÙOeÎüƒØäs…ö3H:R2ðF¤Є‘÷`‰¿þ-¯Hm  rÿðw}Eâî0L¤2Fƒ,iK0²ÚB@ŒT =´Î‚Ðõä?6‚F8E­UYp†HØKá$øêo¹bXæ¾ÞÛeƒ›º0ÄMÍvóq‘À£på¢ õB=’”¥¨@¨Dhˆg6i"¾ˆÑhñURÎ2}ÿÚôûèÙ&ã?q‡?;Ì¿ÆH{þ σâkÃa+2§Ú?“y¡ó°²²ù6@À«ù™ü×>~k×7º‚P·ûÅX‘)Ò"C‘(ƒ) “.oÙA— >ÑO)ÿ4[ãÙŠW«Êù¾K¼N]VÖ6Œ’D~0ŠaÁÜ*†É$¡Óà»I¦Óé&X¨¥ÐVD$! ÏŸlãôøQ]zì#)®É.nú´7ˆ-Ñ‘c"Qt/±^b‹D— µQúçË廯ê?§ëöYþgRdíŒà°b~üü3$“*Yü´Ð^/áhr¡k.ðÜ`‘E†|ku/Ç£#ñÌwÂh°¸1ÔÁð/ÂOV¤’AºgrüÜ=˜zÃáÂ?=“<‡Å$SJñõÖŧÏÁp¢BÓ eØ 8ÚøÊø-3*¥­ñzÔ7)²C”µ.ø²dÈá8! ÈRƒµ[’×ô¡öAë4\Ä >¤s1=ŒÜó+3=9‡¿#ä€ù@ž…pqR6Ûm5̤¹“¾¦Ð– |)/¶;b€`2œ;#”™ýg—ƒk|+'»ùÒdôÙwTñ›¹:v&[&,o|_pþa¥÷ñ=Þ¿ãà¾,ñ¿Â²1BÕGa>¯ù<‚}9Ÿ\¦õ ‚Ñ:#¡9ºo¨uNœ~DzßÄÇÎñ¬ ôá>Ö …̱à˜ƒÜiÏ ‚@ßIü.8íùˆî›ß?y­ÿý¿SûÎ2t8Ö¹~xóªE­yµÝþú•ì]Àíä4fkø÷ð6¢³œÜñäÁcîoÕ>Ô’šµZ›|mWµCY„’W—\‹n•Ó¬kò8ûgBy@M'Xçl p—ŒfºÊílÖû± òPå•—ihMK ˆêi?š«\­í€>ì92ÏX€8³¤Àñ=ú9¶@™ÛÝhf† 4aCå"lpÌŒÍ Å[¡&•Ðæ'šxµÒ˜Á¸>ˆUø$"À"0#AE!Ô ¨a°Ä„pÅ¥HGe’Ö¹œÁˆX$ß«˜HYa¦\+˜A¹VãrbÐ Â(ª©í‚­:çðwwð4SñöØ9Nrœ±PáÖÉ‹"QQMŸf ÎL¸#Ú\lŸ}¸T3@Ø$rfY *™ÑésœR€ÁÃJÒ¹¯SúÝ%ół֠J ‹¶l˜ßÈ9|Ã` BÚ-ý)Û”%jø¥®&t(°‰ iNí6²9kpÜ*ã”!I0H„>˜‚yóç‡.Jiª*inü£õo˜š0ZˆçÊ„/¤O¼÷À:˜üàóï§ç|¼…„š/b½H^·´Ê¶òZúÁÏ¡K¯ÔW·ˆÔ7Þ­… à4 y¼…Î A2ÁøÂð VºÝ=ñÀ¨€<'cn¶@¯ ›œQïµõ_ö4''jêZaS¢ªI*Š®Ï 9`â¹àO#æ)àlòto§ÄÈFX܈umÔÉ¢Ü^M4¦ƒÑòÓ¥ÀŽÝN[©sk»Ílƒîß–m¦FÙÅ^Ë{€G¸jX½Àl@¶D2ÚŽ,ú¿@@Ш™S­gc%ŽJzà:†£ò}ÏcçtAÕ€G-@ ò³d$% j<‹”HUoå®0ÿË£Ë1(ž–C`€qùþFÀ(H«R*§Ì駸P,0²/K#v#=}öK¢ìôÉX_€TX‹EÂǾ)àÀdHÅGc3€uqŠB†Æ)3šsž“ÊõÇ‚{oÆÀ+I˜'±a5’oPô„Â)˜Ä’I бϡ•{é€ Á"<žÛÖ@ˆ2qجŠç°AÒñâ96äÄuÀŒ#©ï_|ŒÒêéeµƒó´½§çRgQÓ ÂTÃÈS 'ã…_},œD¾G©WÆÀ|ÖjÂûÈ”ž¯iBaøý ŽÐããÍ|8wÐéóÒ­?(Õ&pXì)Z¬>ó| ¦Ÿ6¡¸]²SåèF¸;œ t‚Üw#Ê‘XoTÁK°ŸÝ[;ZŒ†š+ R¡ÖÅÚÀPjY,'Kœj<@ÞƒB#*¥ÌSxEmªc­ÃòŽ÷ùÿCd‰Ÿ¤§Ur”©ô‡ážš¦[x‡¾H–ÁÎÒæa[‚#j»mH?Ì0HÏäýÏo3à,õû:¬>M|ŸØsžYÙM|J ø<(|C“‘4?'oLd Nr®çor¼Y¼.b¢1cL k4—‘€Á.A½‚ì;·1 °5°¬0¹È´ hbeÎ|"]‡KR¬ Îgæsï6ŠPø„("†¬6H€%∂Zå¶Íо[²|õ°~tÕ4|€ÂY!ß±pr –üH/?´·R”èGDå/Æ#C¹ØÌÕò:þM¨<(ïÈÕ{›Qt%7^¢KHàÖÓP°‡Ž×$Œ$Œ$d$ŒdddÐ÷ëä>ð÷æÎÕù%°MPÔpxƒêþ~éªÃžö këÙ½˜†å§|©b‘¤¼,ÜkŽn›'€ AïkA¢7Ú;´›[¥BätéV A„ˆÁŽâ Œ·G,A6 dyh ¹âóø½ghxð5Ê„ðMPè·¨D`zÊ;‘|ȇ°¤Ø3ÑBàfÙ©RªUµðZ°ÜZÂêê±°&uzÝŒ³¡,A8ØÁžQÄLÖEÉ‹ð›wÐÀK¾Šh»ßæ;÷¶š9­°`ÀÖoM¬ë'V9¬³aHÆä4Å+/N}qš-‚ :ÔhŽ¢P REs1EQApÏ©ß>8[o§3³ˆB–¹j=‡œ–9"O\çÐr Η;çP 8d9ÛvÚX)-®MP5±êV“À›Lsc :iñ$r„°xÄÈ ýÖƒfÕEzƒK…#b†§¼ª ÀêË_†ƒ?@¡ð|ˆ\~R\%ô¼•]ÂUº¸¼9tÑ,öM”ØyͽŽ<ÒþžðNgpè.å{u£ –Žaµ†Ëë:ê¨~G_˜7.zÀÔ(mÏ6,yài´ÒV´|éHÙˆÀ±).£IMÊJ0Ài´J'37øåÆ … „þŽƒ”.x]Ê}k4ÎÝ[àxÌë•B®—pUr]÷—’Ët -HªGéûò€´ ó‚¶Óì‡ÕHbÔy–°pØJ¸ÒÈ”’‘ªÔKÒT A¹.–ëoÏ9é-¾º=j‚öÐ,¤oájëA»`hxa4LÜ"„ÊP;…¢‡°ÜÍî6ßEÃVÎŒç¾ÁÁ¾ûgØ(çº å¡[û§WæäªõíAòUÛ{K’³ÔÁÏbƒ#º\Ï À¢Ùæ‚é`£IVuo…ÍÃD6¹§Ó(ÐyÃô×(ïÈå5 ¶MíÛS6ƨÀ4ȵmß"ÏPåÇØ¨\4ÔÎhÒ}þ¹£ÉÇC©~XpЂ©–…Om¬!a(‚€ïÕ°[)޽°¿%%Ü:P¹¡ò³ÛW¢CDÛ›!£ Þ©5 à ÷³—Øs‹­ð¹ j7F °õƒeá4pXjè[òꬄº%¥ª–ޭɰ-4ŽVdš%) ‚*?šöÀ2ä…ÚMžÐ7;<Ï¦ç ±ÏPû=NBXC‡‚µ0jݬ°˜‘qUE9D²mçI¥Jhd€@sêîXÓ&rùönX¯6¡ÏMúhu?")¡o¡Jll2!Õ¦êõ r¸Ê·N±0a‘+Äê/]­ªh:»‰!Á ^€µRÄ,×/± ef£v·`tÆ,škS¡Y) µ½”¤MÈ&R A‡PÛг Féä™tÛ)c Ð’ X*Œ„ã«J… ¡MÃ0¼¸•HÆØ òÂ…ÃD QÓµ»ÔÃ×’AHn—47C¤C´é»A‚(bœxæÙÈâÖ ‘˜@š[ÃÑÎÆáÙ—Iž<&—LÜrº¡`ä7iÔK+²¡ ¡à†p…»–lŒ NÖPÂÜt§JÅŸÆ+Küoo'¥_ÃRÚ¦­ód1áª7Ó¿ç“tòÐ,“JÁZFã¹ÚÆéÚgÓ øõðÜèøïö®-m¢¡ ¥:Ûd}ŸPj×züªïãj¸Cá’½§x„Ôv­fKÓkKsmBÉ¡é=ÏçüËÐåPûŸ4;n“ …zÞ÷“Ù^ÍœÍ}ÁÂÅîa÷S‚ôσH|?¡a_s€DmB@ ÑJ×CáýÆšatt$d¢ŠZ2‰Dd,¬C¬®8^{OU¦-‚×\š€$tÅ^¸\ÂD‡–m?BFÏ5 KS—$dÚÝAÎÝR2üNð>_ÕýQwºñ¸ôµ¯¡^ À&T ™$d Î,m. æþ° ˜£yL…A°¤^C÷¾¯A¤úÝG ‰ÉIn-hB …CýeDž"wÏ}û<ßz{ÅKÕÝÅ(ð" &%U yM&[k7­â:ú+¯µ­{ˆTÅB5‘ o‡mñø»f%*,"É!'W hGyö9ž~ì1NZo`g'îÏuõ¨qú-uõx8T0Îhæø#<ßZ\7 £†IÓ¶Qº††wúð‚]tŒŸ’&›Ið AP)Ó•§Çó×Zw1dF¢BŠ)Q¨A#„@$dQ4ÅÚšj"¸n´ëͧ’Å+*ê—[8©‹NFÌrˆîâ[îÿþp~à ®—^XÞü»5Ø-†TJöÆæß*_/Ke¾¿Ã(™ª¼ã:̤€;0n3gù%bÛX]L¯[÷¯_á½à†y€xq!1-þ3 g@®2 ó‡Øä…ÖT”e„ASÈš•5_„µ*P¹lYJŠX}JTÇ U1ˆ$ZßÊUØC m›Úûßkó[ Ö9šßÍct{^SlÃoÑoù? ðOƒ æQ€ '¦oï—š Ïö_-³ñ¯w°¿Çßêö÷ú”ë$dd FO«ó¨¨Î#–²+|PU6¼G Óœç^_ºœý‡ÒT úåD\@BÒ?Ì!¯ÊÊFö ‚ÝN8 e¨Ñ¾‡î5jÉ®ù_›­±£Ëªº‡ê™t›oÔHì Òάšµº1­ô×C: Pn»šÕ±”¶uS*è ³¨9uJŽÀèÆ&‚è!£“CCST@ÐÉ“ŒñL”›‘Ù ÜDÑodÔw zÞèd×D£hjµšý ±d÷vé3‹YʾˆL¡ÝÐ!Ö”ÜqĉŠp_FÃ3Á>ˆt·Îïgx¢ÃW+ï®”BcpÇZ’ȵ®#móÁËâør'u|B“[ë{®o 2¹ÞìÊ;®b zž \>.w•Yaßêg#¢“qÒªB;‘Ң˨æöæé´ö¶zq‘Pª ‹Ú™)`åäÆE-…0(j©7ØF;‹Í¶6 áq“œoQB7tÐÍñ•B½Ûà^ ÷{߯ ª,a™ÎÙ…¦òÖòó3}ƒTÛyüdÜ®zcû\ƒÙãs;[kZq¯éþ"ÿmÔ{OV+‡ŽsgÆ¡ ­ú¬ãêþÃÏøÿÛvÜ;‹õêöÈ.”w“omQéj8Æ¢@7ÞùÏ[âÿ^7ë½—ý?yðDä  „±g“Ó¸»î@ ‚웚ùr”Höš‚ó¥? àb¨>P>'•>)åîAl‘‡÷x%Ñ "(lü=Ÿæ|ú(˜\P[Vä>…eK¤ÀIçȘfŒµ koæ‡Ñgéá˜ðÁ1÷Î22†¢øºýTÁ¡±yÁc„ö‹Ò°#u ‹­nÃj¢“fͶ÷w,è}[’<ƒ\2÷ jѸw«ÐId¦ X+F± ìåüŽz¹2Û•-©p2bbj.î¶K‘½ ¥ƒJ¯ô¬èHâÍ+jQ²¡di„ÓÞú¹ð2d">0<ãМt¯äÄÕ!Ì 6Hx“BÚB.Àö©2XOå6 ¾SÜü¯ÄËàü­±Y»|”­Ò‚z¾gátù€×æc ‘ÛkÕI )` ’áÈp†ÖÑmt±Æ¾SDÔrñvöuLë¢ÄÓLÃS nmt×iˆ6gŠ„BÆq6+Àðdýp“j¥§TZp—Vxa=N™]Jš°¸5MÀj!«‚á«Ø>lûu Aף׿€mô9'Ì[颞r–èvþvôNÊ>,#à”‡Œ×é¦Þ’ö;"hv2jïуwº<'~¾†Æ7O´…ßPïÑÒ"pC9m¡ :¾³)íã€;<%#õ Ô u{.tMÇ`ñ 3³±õ€M!T6J{±§ÐK=z¹ˆOxv{'(øû*ÀœQäuC“®µá=x- Ð_ª}²çýBð`´ q=/kp=îÇ`ªž :›ôÑ‚9:¨õO‡G\”{º‡âl‰6OWl#枯/yÑóõ>Àñ/’lmü»‡)âöˆgZ(îø‡®‡ÞUƒÆÐCdK=í¨HZï¿lÔ¯µžï»ûý~:%­o¬½þŸØp è%ðÑ0£m¦Ù[‹¦‡ì}oÉõ^Óm‡¨Íb*yóÀïF4¨Ò R‰HXTþ] O7£³&ïq½ ˆšyć ÷W0«Å¤)0´ZÈP …̇¼” £¥›4d(8w°›¤tܬîÂÎÎ6-FqjFåB)¸lêã]ªrõ,é‹Â‘ÚìK"gŒ m›€Sa¥ ²ës.öÔfÉ¥c?.ûØ0›lÝ4Ʀ(Ô†¥Ñº5ßRÀÖ#„,¨ZÉ›  8>ÝÎwV†ÜÀhOm±{ý>ÜÚ‹ˆŽQ.Ç»Q±ã]ÃÍ… R9c”g?YÝuqƒ^.‡å6ëLJSËA5*'áOu~‚˜Øïw?„p' ‚ ø\*N:Yþnù†šæà_-ß?cãü[O­Éñœ>8d ±îê¥Ãmse^üÙ-ÒOuûÀ£åý —ùNv7ƒ"Üás‡ñ?ãodiú+òzócszTùûèyù§š¡ÌÜ6$Ó•¸‡§¨’BSœÿ?n[ëö°V;Éþ‘tçŒÎOgá'~ é:]ÀаU°{W)=¯%µâ;÷%饳œ^lÊ3u‡9ÉíÃ3±2—«Ä5Ï^èð~ÈߺŸF½N] šÙ.ô@ðëží¼l8vwN@¯%Ípª‘ÛÊÈyHÛDØò3Ï+ähšßI÷‹–° ¡âö<:úp›½í§·'VÂüø²FÂik6qdõqÚïn@ÌÑq¢ÔÝúßCÈÕÆ­Ú»½ÚÒPFqÕMWñ}ŠÒ®\´}«ðœ›æ¯´/“Û°ïWìóÏ×Ðô>µ*}dÈuÜ·Üûh DèhSæ‡Ü-÷¸û~{§Ül¦ÐÏݰiáºïzd4+Ù+ŽˆógžrvÀNE›b÷MSræí{—õVIúû$ûæß^Ø8Y 3[³†^PPlðLS1”Â×ßÊÝmn…iM D?J†Ÿb…&ÇuîÆó úwö©íLà£'¼ £ù_^ß&Èõ9>©~áÙ§¦†Àoôø³ç€üöZSFž\ON4êt,¹ÛŒj>½õÙî7xNÙÔçŒx›=ÿK p¦ t9ð/Åǯz|4 ,þiãN¦)ð#´qèÕxlU“Æ-G‹¿“fƒ~庞^6t0œl±…ûŸ“ÕÜBá±á·Ôé^ÞZÜîø X1ú>_¶ÀxÉñ,ÀDô'êøŸc¹~¬=ÿɺÈuøÀË<:U…„‘`‰–˜ø-i‡Þý ixÚñLÄ¿oªä¬½ï º!¹Þ,aå°½‡ß™ñÛ†±!ZKI _pë«e,HF¢²jf% Œ‰ Ä !"@‹#µ:K!D,”À1N#bx.‰êN+41Ù¾ü–ǪÝÉ™•1ƒmÏ–ÙmÕ55‡N½Ý¼ïuæzŽIî„Ll#„Àrô8FN¡Âc)³¡| ¢·J¾^T°&WO{«E§ÖÕñ¯¢¶ß}ûÔ2h b£R[,µ$‰Œ•’ÂÆÌ4Pkn«_KãêWÏÜRí×;®Ôs§+…Œ×.¹v`k”í·píh¹69]9¡×$)6‹#–EÉ.Ñ×tDG9å{ MyÑW Êî;¹\âîÚ.îÚæÎë²évA¹×v—u—w#2ë¹Øë¥‰M·2NèÚ+IŠîGP\:¹]ÝuvUÍÖc*鯮ê+¹ÝË·îéG]Üvç;·&Mì=îš`bÉ“ÊwO;snñ{®ôæ…ÔÍ%·{ÞLf‹yœt¶w]GwjòÝ)/-ÐÍ™]p·uÖÒb,iÝ´mÉìâOWwœ’—»p1¯*{×µËnëuk×»[^wvÞZ÷ºç©j‰Gº¸bÔi6×–ÛÞãuÝ»8 £†»ºæ–-Ùºî6å4Ûrç9.·YÝB›nî·g,îÕÓk›‹µÛS®ªSj¹rº›b­ÊØÛW1ɨ«»‘˜É ™dFTȦͳkâÛ|úuæÊh è5k 0¹òb’MZ6Ú-«E«ØLF6Ú¢ÖÕZ¶5±«Z­E£mµ£FÖ¶*Á­QkmF¢Û[QkmƒlVª¤´TZŶØÖÚ“E­ªHA&5-cÝÖÔt3µs{̾2õºªÞTT“¨ÓË8E@9Gq±’ĹÝ=©ˆ‘³¼”œÜMVa7qµ$Né»Í‘y©…½ºŠÉ¨fÓ­ÒÊÞщxÆS–§//$MÍí»)2rFÌ —$]­N*µl"YÆiB›Ä1IÓe2ã(m äÄÆ³ZF&dC«F÷J…7TF:B„ä ¼qã‚¢‹bR¬ÍÃE’#r„ &nD3’Û„!ÆM‰må(°íÚ&²‚rn°ˆ4Nn[‚. FcvQš3Ý ³.œ·@€«# ‰vbom]¹Pf¢ÉU†ÎFÁv(î´™µ„˜Ü"^ànž÷ VðL›³gq3—$C"b -ì)sU(ÜmºÇI+¼©aˆ+ÛkmÀ·© Ép\²I1iÕ“S° okmAL˜‚i ©ÍY$ÊW!Lk.¡8sD‡¸Qsc ˜uCy D\ß:’5Z@„ÔÛ}yî{ò^5%íDjth¹jQZZzjî‚8Ùk[K#nỦN"çnˆjòT¹F2%]iŒlA¨ot0ƒ-ˆX€‘Ò)9x`=±U‰('1Sxª“V³q[&œÚ,R·BVĈ­¡7)a» ¢2Žžî· Ý­°6ÃÞØª†¨Ô\D”£ í½­e!wt#p$ŠŒ,RÛ“ª–ƒ¶‘j¡‰Ä47Ttf\›neʈÝ\o3)^ò`]aª®#YáîìÅ^S˜EZÞUX¶ÝÔdÄÞâhÝÑ0ÔŒA9VˆŠzÊEÖ¹¨Å™°UYª(Cgw L1âLÛ¼˜ÉŠ[ÌP ·²–@¶æ$TdQŠÆJ…¬PÎCGDRÂï1ŒÑ“¢÷lŒPZ[U‘FwUm L^eQ¡Ž^€z-&¬F¡ªFŒµ«YSWPB"’$4LÎX*p›‘›jKÑ4¬\iRJfFÔÆH­#XŠLC0… wl-Öfê…Šn«3#"N[‚EY-“„†à5œÙlµ½ÌΦLH¢Ê€œÔj7L<„a ,ê\^Ö¬’‹ÀHª”eQŒ9S˜°Å:ÕP‘’2&Í㹩e¶B›uNvçh™e´†÷r†Ë“° LU¡dFö[«œ€iÓc!åM˜ &„DFY4fé[sŒa‰šµ™““4,Šôƒ”Bº¥ÌbŒˆ­êv"%)7½­Ñ )‰Ü»*v»uY+N”©(]ê&ÆaܶèI‚,IÞP ;ÖÓ8å5lŇ'"ž’ÕÙ2åDC3«»QŒ‘TDÄ ÚVæ7fôš'Jãèö©žýx{$ƒ5"7!k5ž/¢xûÖŪYæä é\©RC)‹LI#ò]Föòa’3-YºÝ:h \ÆŽ'F'fè:ɺ ð™–âž ¬r¨K§Ž Stªå,ІP‡ÅK,"@US¸0Õ‘H„M! rê¶*£zE°†L- Z léên·Cz¨;eØ¢°, K,á2&¦Žs›ë´¼-o{5Ýöîžô^òQÞæ¯z­¹Þê¡I{v·EQ ƒpÄ)iïE6ÞwÍ•æDÙ9ïhYn§:ú‘–]Bº‰,FèRŒË•Tòæ¨Z¨@d¸—(-o7¤2 FbÎÁQz4ë(S‹J`ä¬`ÕÕTÄ(‰¦;%CW½ÊrÐl‹¬p º‰Õ“ÂMÎ,¢®ðD •5DVܸ‡¶èd©¹2ãA !.oyyR&!î…f€ @'iA¢ BJhJ‚ƒ-ÂqT]d6I¹ZÜN¡‚æUjåhšVÙÍäD”Rª†$Ù#D$4¤\š· 3ypkYt졳{Ö1(Í•3bÕTÜLÔTEF]L¹¸­ËÁ‰â€^y†v77±D°^'ZÌpà]H³8êÄn‚¤!;½êJB] Œ—»¡S«†Û)&‚ˆbͽäfòv :1½î¶ƒ{PÍmÒx˜Öª©£¢ab[Œ4„1¹®¢¬N•ÁDN•é1]™C Ëvõ;BÎ5V¯RuTeEÐ²ÅØ‹u†CXy2Ä"!y²Ó«–ŽT(ÍÞ‘j 'cDd¸e‹Ð¨@œn¥ÛsbŠ·jãíÁBÚqjʱjóX²(³žÅ qªÁ¶í4÷âíN)Í“jhÌJ©Æ%\Ì¢Šan.õwe»{(íDd“n7ÚÁ‘„Yj6ë{6ª£!HÉT•“hFF¡mÛ=ï71D]jª†8j¢2VåfÞFÔ˜ZÞ蹇¥Q{X†Ô ¹bo$ì; Æu‡*Q åZ«¨ P¹Œ¤2›ÐMZÓyÌ#µs·½Ä¤w£åÝä9Ò]X{k2OIöœu×|C6†ÄšÌg!C ÷ Š˜Obn´ ŒÞë'’*QÕ¸ƒËª¤ÌÖŒ‹ªµ‡zQcs¸xî½Ä™BTo7dÄJÈ%L¨˜:;‡±oJJ! јHD-;­¬ âNd“0iaGu¶ Í«ÝTˆjp^˜p›(fiÖfÈra'ˆL饹DÝìD¸a$„=é-Émì¡jcP!²ê•@@‰;·Q‘FØÌl8l•ɪUu äM)–à0[)ê”æ :S¸X1Ä!76÷86쵎‹É 1[ªÆeØHj*L^î¤ÌÆÓ‰fõ¹ÞÅaŠh@s’ÁoDF„— "³kÌ’í­Nm»ÉYjniÊ@¨˜ƒÎ<œŠ©Q6ØXÃYVA6©ÌY¢ñÕnÄ’Ý ŠÛÁ$±q Ák½Û¨x`P;nIÛ.éØ[¤X\²îfAÔ(énaˆrvž´!os*„\¥»Ç•å*­âÞÅ‹Ä/'íÕ]Œ$]\„äF±±êa˘€Tmn-8½îsß_~¸ôáãÆúåO¸ú?UQUÄÅ´šwvÕÔ¨¨ØæîìU–F’J6Ó5%¤Ø5f¦YLØÕŠË*i£µ¤i¦£jeLšl¦1RZ–mŠ2̘šh *÷ÇN‘Óœ‰»¬¸èb6j…åÅL8ÚGkYElKÇ•º„78b–â³0™˜¤PÞ²j¤ fwZ“£Y…¢¤…ÎÜÅX] ž¸1ŠI£äóNötkZ§4g½‰cEíçw|Ч#35Šq„ÝÝ*o6zï#,K¬B$+dÙH„oTâqAq-‹")΄˜¤¢ÞÎîæˆ™½ ´#ÚÞÎLBN6aÔÅܰšfÔ½ T¨TïDBU"# 1ªXj,ƒm˜l˜C(§.H˜jˆ«pSìÒ‹©4‘AÃ4k`Öói^,A¨´ÜôR©¦Á•«*IIÕÔ:¦&ÛzÙQckSŒ[©HJÓ°‹Dïhnm©Ä’gm"AÁ&v"g}pg½ ‰»yéÏ;Íãèë§b\æã§Nê–•‡&bá•e] Û Ý³ŒXa‡@µP›:-¸‹—31q¤bª2ç22-‘VÐÁBΨ)Y*kU8-pÁ`ÌV‰m‹b±Û¦mYjžò`$I0¤§H€ð#¥H˜[4`FÛ¨5j7qPææA¤ƒŠÌa¢ Œ„.[ M l·Yjmîs’ìðs›ßQs¯+no›ÃœñLóÞ™éï¿XgªCß&DQMr-¾©,jRvÛ¥8£!îÐÉØÆ¥X©&ZË£AE„¡U)‰©[•VÃpKÛh ç1‡4¢ 0[i´¤(…šˆÑũŨ¹{¼¡‘ÙɆ÷g3y4ÙÇšN9V<“6YÂÆnÉÉ´–ì»Ó‡º¼ß\r÷olÌ¡lÈȆh­i‘,#rKIÝÎìîB ÞË4æ›ïJç)®=K±ÒÑ‹’É€E%M¸ÇR…*p胓[ÓˆCfAdf-`dÓQ…DeÂD2–lRLᣌF ¢Ý¸˜{Æé8y*!ÙIjLndÌ—A„›xÞª‘ääi²¢œ)YAyÉ€F!n“ÊÄJ U]ØÛª°q±RšÅ1EÒ¥VäŒVœP¨ÜèNRŒY÷‚:[RöeÒ:f !ZB‚ Ìj#+Íæ÷¶NîFÍXq#k1Á&–ˆ'J¡¸©P ©d+IA¸ºØ²VÖ˜#zLìÙ²&¢*œ[ÝQ 72檳 ƒŽf™ÐË@kgHÆÚ“º‡•­m#EÚ¬0NÊŽonv¬ž¦æžkÂYi½Énµ7eJ—›ÚÁw8DÒ £k­¨ÑÍ‘°lâÔX»ÜJ‚¨¢VÒô¦â‰‹yBrL ÕêbA“ÅnL žÅ0pÝo{Ó2•Ônš›Pjå]aq«‹ÞËp¨ @gNîrŒ!@IК¥¸Æ i†¥ÌDÅA‘Rb'RÒ‚Ô[»¡q–Ñ–2„B2jC‘.Sˆ€­]Ó¹ôúìñ“fÄR*Ù:l¢‹ß}’n‘³z"‚£OP©qŒeH“:T!SÕ#%BÊ.cP‡0˜Ù±F.¬ÍJf¶ñ(ÙÎró–:"6)æzÕ›á¼róUrÜM›ªÀ¦§v&R*ÐGHHPMíZŒ4´K!g-X/0Jƒ@ŠˆÈ"àcZròØ&0`ªÜhé2D]”ªúÝ);Í99»“°S+G£Û¼8‡¦êMÂa)¢H–L©+FÈ·T÷râ¹/“‘å”{ç¯Rxd^I$bÍÞi‘:KF`5 ´Àõ`F`²¢ ˆYh eAo6·*ÖåÊ„'XdÓ™Fê‹„ »[ CP„dêÊšÉ"&BrÁd%bú¦šêäB8Ž"`ㄜ÷g0Me¦‘’V†í@f. Ò(Bfe‰ºNaÄã1Ä_§I¾]ÖÇ—{âb/fÒ ¤A<œZT’`¡†gy­µQ êÁ$'5P- vD$DR[7PàA1iª‹Ý ª!‘eÝX¹µ'+A ê$U’ÙŒ‰tL’VÂX–"a­Ò’$Óª·¤6LÛ±áÔ&,%•mPRÄЛZ–iÞ,¨*2¨£DÛ†£máð°¡Öo“—™·#{ïaM«  ¥‰·<âûXçf¥®/\‰ªoQÍA<÷è=ú¢õâ*Gú5CX-ÇKjm&ÝÍrɪ‹vÞ"ä÷;µ+RbC5Zª¢…ÄØÀ2N IX(’,ìÛÙÊ+A#hÖ²ÈoAÀV!0N€2b”Ñ™0!¥ÒÖZ*F7¢D!ƒFªtìÐÁ ˆÓ5e2œ†&Tê³ ÔÀǦa®Þxž$ä!æž*zêâêËf‰ ¢÷”×ÇŒ-H÷¹æg­;3ÍÐç3‚!äD鳈—x›9IHP’S/ 5ª"/6.ȹ’*Þ¸IáÉŠ‹=sÒ.)ã0¥y}bIVŒ  rÒ"t.?=kèµµªÈ‰m` ¶ª‹E­£kj6­hÚ‹U£hÑ¶ÆÆ5¶-j+m™ºµè¯¿§ãŠF5D’!¨³xÁÊ:l; n) ˆ&`©" È¢qq¥³kЋü‚h@ fl @]b‰ êbƒ tÛª^ٔȦ` È "¤‚€áW­5ßcì¿eé’(’(5MD”š‰”QlPи` Ì–¦=@£‚\€Ì!»c‹¦Ã@’(ŠªŠ DëÁsvŸ(™6"ºÁD‘[|ô/²›é`¢|‡P åŽ„Np¶Š¤‰"HªHÈ(H¤ˆ‹Í߀-e(8w@ØÙPÖ F†§Zô÷V@"â )$" ƒ"p ”"¸%ºÔÁ,XÆQéÀR€&º\ó£2<ÿ?áPš”´E4É©wHÚݬúANaÝ0kÙ:#kö¦*¨ À3f!P@¹ ‘¨ÇƳWÐo7Ôk†5óNmÆ6‹k͵]-­MWÂܶ¼¶ÕͶ­\­«sÑFåjÅ\ØÖ1 ÕÍ[UÍ·+k•µ\­Urˆ¶Òl+kÐÛš­h®UmæÖ¼Ö·6ØÛjæÚØÕrµnZË“j*ÜÛU°mºjò­i{¶ƒcJTlZ¶5Êךµ7ºÜ»×gvæ5¹y¶­‹TmEhØÚÛ°³»DcZÛš ÎêºmͱT]/wwuΈîÚµËmy\Õ·5«›W.jºkš¶Ñ\¶Õͱ¶Øµ–DvJ¤ÕÛQ¿xVÙ˜,](5>ßì9°è´A®×X’_ƒ£Ðæe`WyócØ÷6UóøÔcú +h€/>·ÎX%„,«#UD$µ>K`  {Þþ£Á 9öÑ={oŒ ѹrööUÑœâΓZ á9Bè÷¿^ljá!{úðáÔt8›ÀðséÐËs*5¦ì±äke)„xèÜ ºØ5C®ºNÉX7 @Ýš4˜OPðøÜú¹p7f<}ïºl­kYá"Ç´kÑ{Ýz‘Lu.gs©7–åጥŠÒ^ÞŽk´\fÆL.ZŽ(Z¹r¸ITQm•È+•LRŒ.\Œ„ªÚæLªâ+$¸Up)!›G¼¥=nìžñ»¹2H÷wN;É™5ÁxQ½ä—oã“8Få&dÁ2À(V—ÑUŠØ ¶b.ÅIÁc£+´êíÉtín²×lÝ·;E¡\뎛§:íËu¤Ý]uŽÓ®Ú6ìÚå8•„’ ` ÌYµÑׄ¥ Øg)A‘ 6|Õ 7l˜16µ]^LµËk³nç[[š«r¶¢Ü­Êª.FÚÆ·6ìÓº¹«t»º×Ä 0cÑBI©PP•Hö€ºsæã¨eσ³7,œž¯W§”’Uº‡›ÀWQy÷XìfŠÖ‚EŒ ²Y°ÚP6±yx–!1SûŠÁÜ^9z¦Œ°ÚÙl†ÄÓ…;€g&Ši¶46sÆ ¾ ÙPÝL½Ñ— I¯ëbÁj¢­E¡RÖ^ãÎ&Hõ:KÝÄy;§k™vÖ¹™DowQ&ct׳Ù/;žW—BórägkÞæÌ+lÃ*!dŒ á àŒI¼¯Mtvá‘ÜíÞí‹sÝpj¼®Ê‹ÖíÙ/M’ŸIFƒY×28 „2̨¸[!„BB"UÅqÊ[L$p®V؉\’Ul‹’À¬ÆŠò®³Ízìu ^ºŽmÜîèÚŽt‹Kº6®Í0#i»×w#C®­v¹®!W5\{º5îÞ÷0ÚEaM%B-S@Åb¬Znn¹QÛ7ºè—6ØÚ«­ÝO­€F(mÀ¼²ŠåÊ=#¹Êo5]r!0ñ” Ö[TàÃ’Ö7 ,o´x0V`t8Þà×& GCv¦m\òð&ûѨÖàgrr0lŽŠlïn51’üæƒTÝ48ûðµË­F«í‡ ®úYB/5 p(lqŠ>`*z øןzƒäúÛÄ ~:h( º¨§¾‘N‹äžˆ\?´†DÔ|°ž³>¤šƒ•e,ÓâIò½TT!Á«V¹«ê-\¶126Õ X6¾kš6±­AAªKFÕê’HÉb…¨Œˆ’€4GšpfHžbë°Põõúä’lY]ÔÒ×Ò2îÀø…À$É”HÔPÉŠIøÃ¾ .Þ¸Ñ0µÁ×P4N+ûW¢qÌæƒ›îS0F“,¨’î»W*ãn–é-ÍEйIÌWWR䥘RîwníuÊìlºS¹-wnfÊåĉ æ·A7]V.ÁPWuÉ*TÃFµš•ŒëwM®Fžêï)‡Vh[s]îÒlTTTÜÕŠå’&A1Òs¥3e#¹Å6,Jªƒ ¢‚TDd@“cÛHm`.Û¦íK`p—}(1» [¶À[] J/ÆÆhÀC‰”½¶wy°úß°”@­Ä: Ü:ª µ@àØ Ð5Dþ;õÐ ›lÃ@™l×äéZ!ªc„ä°(Ž Ëš®'æÓdØLñ @z¡:®úô@×`Àwzê/G§ ‘N†g#ü³/¯öÍ9NA2°Òt¹c…‡138 I@D$_ò…¢‚æAZ‚ —KáhŒ‚+¿…¬µã ²cz™9(åõ$ØH¦ÉHma²^­À¨’”3µ‚8O M6Ý€45JM‹§w†ø ¶/Aœ£†Êl; ®‰®ÿ¼a°çc'’@/¦££Êzj›kÉË!­T’$d`ÂЛZ¼ÊÄ6÷nØ'k½Tõ;ºJ2PTRõNØÖöœ˜jPš0©íÕpSdM©²‰%]ۦɗ»ušR¦÷YKFí®ÝtV]®dÖ´®Ò”R™¶–…Hììk·\Tm$M»-·R-®ê䤪]¬®Û4Ù M¥4²w]]Sš·3vºí+—Y¹hpí¹­n\´ÓsX‹U‹ZMlXµ‹²”+©@E¤F CDf¤Ñqô5~;î_ÕÑQ—5Ò&e Fé²Èøì&äÈX®Î“ƒ°C6EBóWt. dwNÆžÿ ÿ±©f‚‹BŠ%.KP”iL\ˆË`‹…°`ÏNmîeÞö÷£ÞvÍÝ›"º;rrÓ&FIOö5öïŸnh]Ì Cz?ÄôþÊ,d`B¨JbBF %J¢Š * Â"ÔvÔÔ<<–UxÆãº»¹Ò·‡Ëåû0°Bš«6¨Ú͘[‰1˜ä2€’@€£ÆhC pÈ}u°Ç“Ñß}Úš¾FꫯÜks»†ðr#¡B-†åæqÖIÇ X*8o“€×ni¨s8]wD•Òè7w–eK&l‚à9–)6¤Ö]Ê8¾¢1_öðYMÝð½ZZ@EÝ—F%„6n Ê[‘Ë¡Cvê¶ÛÇË&9ƒ…a#‹0:]F0’¥,îè‘#!F@I ž¢Cž‡ŠñÊ¥úuöU}/·ÿ;‘—C©²bN\“MŽ&ÝRc!Ü꺈%uÔ”›¥Ê—w6H²m“cV*-ŒBJŠ¡(“•%B4™&2“#b€«_KëÊ>ˆìˆì{¶žŸ'0½ZBöª*ö {×ǘôÍͽ$ÅÌ¥µr “M,+¬@€´™#4S&2båÅ‚\b$X¾ôÌ7^ºßFÊPfîc*Kh1‚¹rBËŽnÛ]ñÝ\±PVf´”6jçwnFšmL¢¥fi˹mH¨ÚD$)Õ;t€mÑùr¡|¡@¼‡]=¾}¾=ü}xÀ—Kb7…7 ä»i{¸±Z«Š1¬KLb/JˆtálÇ#$Ìn3u5œ]â%äšâ'L™Ì9MÝÃŽe±ásƒ$$t Ô!0µ™ÚG¼¬st2aθ¹{Ì`Áç4î^p‰'æÎ÷e¤Â¦( L$Ó]Æî]•w7jg½]ʺ D„[£Ç¥4†cYé®Mt ãü_où,v•v8•0Õ"‹uZ¥33ƒ4¿÷„Ð÷f‡–ºT_‘€zMáç $T^`«DA*)Q‘KE¼Q £_ Ä¢mƒèÅe1¿æSÆ»¿Sµô…ñA-®Û5ª]Zí|ú•µ*YBH²“* „¬&I‚Ï·ÛœåÉ‘ŠªŒ`.f ™÷Ì3áÒŒ†Ó$¦ptÙ衭Ƙß[‡Ù‘Vððßjþ í/á¾ßíˆ\ª+N¸ .›´ÔÅËEµ×;`Ž8‰ŽDŠ®\€&$šq+s1˺"á*&åì2sLã Ê*‹Ý6/åÈfLÈð“]›†ç0o ÉUÅTºÍÔ¦ƒ „)¨Ð²ªœZ3w$$rnëy 5Òr°.ES $ÆîḔ‰™Su&»wŒ ¤M!­¦mÑ0Ý ˜ƒs+DLÉdËf8¦ènÌ›Uͺí,¦&&I$—¹»J%§·»ÆÙ'½Â–F\lÈ â*(ŒRd =«Õ7¼{«Õåt÷¹·,Q;µu—6éfhs¶#\«×]³»¥ Æwu)2fwu%†f HÙܦ«µ-–ræår±©evS·Yko­õþ§Øê }4vK»¬§$„ŽLˆD‹ !a%b¨á—»®ÝÛ]8læé»®åÎW9¤7sn•Òænt@™³ î¹54Ìwk™ÝÇnÚä\Ý7\ÑrÝu™]v刕Æç\.ëuµÄf;»œ­Ír¤ÌÁ6ºç.EÝÜM%Ýt1AI»»&åÛM òcº]3nõÞÁy½îòá&£F“{»\ÜÑ¢f$£MÝËD¤¥dÔIˆÑ"Il‘`LLÄK5Š“i„œÚé®”NêO5æÕÍ·^«‰©6*åk–ÅK®¸^ôÞº*Si &-&ÊDczî×—™Ý«Ç»EÊáQc{×=Ñt±ÄÑ®×uÂ\ººEÓXܼŷ6j&™¨2ši¬¹¶Ô6VŨµ’©‘¬‘±l%š˜ÑFbY›˜™” 3$Æ … LX2“QF"c(ÄI4‚H«#+%1‚˜ ²(È‚2(R 4œ¢õŸlÍ3½&aϧ~>ßùÂý$«  ‘†,…k©­Å11G$–«VfD—$¥Ç!pŽi(šä\›–60\Œ,a,!ºL°Ê’+a+ Ä¢É`µ¥E  nè@ó¡-Ñ-ê-Ê O)—C_žÉöþÌI‚c©(bÔ D#—5Âf1À‹“tØ%L ¤,åÛ5#’ܬœ†éƃ nYI*¢€pjRqæUË¢´¥Á"CÜí½º‹Ý½ìxæÇzV–‹–„E* „ˆ‹'{Öëzc½«»6ìòa§Yíîa!k$$ )§Æh/«uð7=ç’|*‡š¡Ù;«Ë¯é}ê—$•*T© ©aÌÖ íÛª(šäÉfe¶É#BÆ@=Úuº¾­~s£ÓAº!Ü ¥Ÿ‡Çï{~]íh. KÑFh*$M&lʱ)r娫¶+×i ‚£„‹X+!&i -4M³lq4pÐ Ò«gD¯$#ªaH⢊¯)¤Ý\Lw)s·‹¸É&…ˆp¯yò¼y¶¼×–îuœš:r%&ììɈݮ·NΑÍÈ\©qîïYÈ,»hì»rÉJë˽{»Tk\ÚÆÛF¢Æ¬‹×·=Îö§¨ô`gÁ¹fÊû¾_[IDGf5Êæ2Ýœ¦JBk¥‹§.¦•Ýt¹ÂËvk­ÜÓ!Ú'0íuÎêì4ÖÆíÝu+¶'RæÖíJ"¨H@‚!èðÅCGM]UxãòÚú_cé±®©enk™±S4¢š»§uI,Ú”“d&s«»®b¢æäk³»]Ým¨¦AY dE@Ù ‡uô]“”0§³¹]DDéǾz¼ÿCÙkËØ¦!P–îVQÏ/|uÍ|-Ý9É s%„ˆ1Á*`¦"aiÉwqN1Ì\Pá’‰+ag6›ð÷1@åÓb‹é{¢ZÌ*\“0€ä)EÉ`¸8ÌÆ“3nkrjÊYe(‚VͦaÈÇ*DeH…È0`$p™‹…Ë,J®#c+‚QåRW•ȼ±DÞíç{ªòzðcuÛ§.Ë«·nÝ"[­ÎÓ©Nv¦îk»q2,§un®ë‹®ê²jœ»bÚZºëºècX‘¦l1a 5 iR’iŠ“2")’-j×Öú›jû+§“Ѳž®¥§yÛÙÞBda)! $bbF0¡m>ÁluYx+úï¸Ë}]ƒ”võåñ>gúDj[ÎßtÜâôa†BqÞÚñOúJ@ dŠDbM¢-%˜È¨Ûȃ!$½‚Ú ’.º©£s`¤ ÐÀèg%Ííß0¥ !!SëªK,j¡®´X—7/ÈdÜ4Z!Ø ›ôGcM©É}/¦Ç)°²° dÉ_'Øö~q ³$™ @…håbŠ®3–ëw[¸ë&’»7O8›¥ÇSŠ’¯x×m×v*æÝvîÌVæÛ›2·R×+%Å-4Ì"H±Q9›’&LªUH»ºmu+•Í›šé»­Dmu“#¸$®n;¹LÓvîèÝӘݕ×;b»¹ÓršîZìs Ñ·k•®i§7dåÝ]ë‡9·Y×EÎmÓ»¹ÝÕÒÅ ìæ³´ÝÝÚKmwtçIKŽXº¹ Š;6SR54Ved‘Šʃ¶Š¢ÉiS1R©&Ù–Q©ŠSf†’¡5ЍÑ"ƘÌѵVúÙ’ÄSÞ˜0…Á»tâ€$"[4'n‡`ëó|¬‘@Š4¾Ñ+—CäÁ¸ñùûü²Fä™–öÜWA˜3M×fîWÜP€ºš+ª ™JF™wbÖ-Z·Ï|×ÓŸIÄ3$šýžŽ1”…„Fˆ´V¥ÀŽš<êVÎ9(SD¦OY±ÚåÚ{^™IwuÔ•ÝÓ-¤ÛnÔ™£u{·¢õÖ¸Ô™¢Ñ±¶jIj"¡mR)1±L‚aI£L$c0#$„"àSVˆœgØ,!ëø\Npÿ+‰Ȱˆ1ýÏp&ÌÐÇ60¼‰ÒÍÂðèlâ~ !$"B$!,ËÞê“ h&œñ‘Ùb‰M^šˆ—n*ÏŒ‘T"(6K" ‚ޱÎh¹ .)É€Ì7ïëéò PÀ„¦tãÝÞîÊÔj65Ýq·T§»›»WE&(£j¦¥«jöûÐDÑ¡LTi>aû@QO9û+áüºþrÅê ôÿäJAÌLäàõz_Ü¿ u¦ »¬ÐÁóIàÉ»ž§ÖÆæÔzÛ4[ö«Â¹Ju¾Ø=®2ñ1\ÊSÙæñˆ šŒ# ¶k5m-¥’­÷n®«hж $PâŒôM Á€šm8à3~K„è)$Pˆ©Üu/롇œŸÞ¹FÛ¼"™dgSÈV˜ÑfysľÿÀxþ{¬…«Ê4ZÄ•[6ålêÚüwç?5ü/Ê¡÷¾íþ,!ú/âïìÏrYE0þ[Ý1e_ü%Æ¡p'éT±ñ1Òð­8„7-r?¸¾$~9tµ¥÷Hjk¬ðmjŠ)ÕI”ÄFº —RÄFˆ‰Öˆ¤S-_ùÂoÛ;ÞT¯ÆÂ‰NZJ_˜??K#½|BªŠÿ—Ÿ~§'…Øy_Qª×ÝÚž`•  µVP´5‰u¦žµ9úm6nši´Ú­0(¿†H®¾©‡I3íýp6‘ÿzå§*É»{n¶*•(˽٢ÿü‡kúcÚ¶Ÿ‹ËÕ›„:ªú—âÅŒŽ°±™Ø+qæäeÄÁ¯™Ç—Sðövo¿×õÿ#Ù—|¬?n!%À€Æ¡2@4 n"¹ÈdÛŽ*díx+åò>×+F^ôï÷ôì]¯gm4ÀÖbY?%ŸÐ±“w"©yn/îL¶¥:No$ $ûY=ßý×±‹•†;ËóWfBW½k°±b®ìz|ìh_ÊDßײ,ŽŠ­—Iôw­Áx-NÕì>—ãëãõ†ik:вnªœúx¶\™‘Q¯¹K0ëî{¬8ãõìºÊB•žµrëëÒççðñ™ÞÏ…ûY¥ÝýÇ?|Õ¿KJ‹ðX”]È}·ëfb¦þ?ËVÌÏ—3ÆUl4•=St3{ÄÛ¾ÝïÞöØ#’c›(x¶Èˆ1‹¼ï:>NÆž½Xa#>~?¼Ç±‘¢;§ É!âöÄ¿ÉV•™uЗ]Ð'VÝ%Y`.×±éSù<ï²ø€„ߪ3|ºû5âz¨Wmùù¾§’íOùûÝÀÍÝ&i—‹…ôõôü^\»=ðïr¥AbP Ñ·Ð–óµ4“PF:r…اaÓ³åpþŽš¾CõF¯QGXÄæšþ~¿O¼ì¼Ü`ͤ#Du œÅMí±Oùó:ÏwƒÆÒ~;aþ®¼•EVZ4¼L“òüÃýoÅÑÜuÝ~Åîo¶¿ë¿›W‹f®ô¯†,IÆóü¯Tô_ãó}~߃äérÿ¿]÷TBZ¤a‘² ˜†FH!®¥˜5ZÞ‘ÿ¯oöóm~d:nßîêîw˜Ìëã7ºÐívßýd»Ç³fÝ&(ykžèï[~¥oñý×ðy[®ñT-Ÿïøybœ=i´ÒÄ«SqÐ[p`ñ<î.MåÙ^ܽÖÖ÷'‡Q§ÃpÜRà ï!ÛÊÞcgðÇ?ò?“¢½i¢:W3s§9Œ­éø|¦y<¡ÅG‡ƒJ½›nÒìU¤ ¨VúµÃ e£™«ƒÊ¯âö›‹¡j¦˜Û³}n·µçëº[ŽË{í» °l>Ò£m4ö[•nKÓf¼êü½n—ûª «û&p¤Ì,#Þ$†2T ƒ P BC!º"é[bwOþ÷‡ÇÚǸÝ@ÊlÏ ÈtÞõÎÒ ööÌø=ZýÔcwœÙÓ¬t³+ [V-P÷¯™ÓãrÍÔç¯'Ììº=¿ºî׷ͲqBIм{Ó´\9¹–|½>&^-Õ'³Âž·8úù½(;g|ÜÒîðQ„¡cÃoí¹Üü¬ xPì&…yq¦ugÞ$2´²áí6½cª¬u‘VÓ>Û4l¦ñÓljfhg:ð!ƒïá÷>_w­Ô¡Ï rš&%!ëLÆPa}K–Ú›&s‰ýSˆ°^akÐLÜøÞ>—ˆÖ‡7S6³×«.£?ÕÞW±ÛãÏQ0bÙ 2¨í&­´‰äòÜ¿¹Ï‡L íAƒk²p—WmNá}Ÿ…4ð—PžuÓ) ««¥Râü—ƒ21æ/MCIuÍ”V¿)Anv2PÉäûŸC¶éâ†8ìÊ‹ðéU·½yñÚ+¿çn27EƒV”¬JTdÒç^M.Ÿ‹{îÃL!ê %´uµ•jà·¾ÇØü³çzjtx»ê/øá,*VPD€‰‘W” “°æû•Zà&ŧ%ƒ"MFfˆƒVâ!ãÑOï)‘ Pé F­j#‰ÙCN»fð-™¸3Y8`¥*ÁÀm®‚ên…x~gl8ù\6K¡Œ«|l±ó…áÜþzêËTÑIš„Cp eu˜êG* MŲÕQ,úxv‹HÛ[hA":`âÄçåâxíàt‹¿Â ‰Û5(±ê5VmÔpWh’òài‚^3f•| ü]9î½å’šˆ ¬á‹l™¦ ´ûÖ¢½ÏÂÒíîUsy“Ìšì§‘yÜà6§;‰ðS¬¢\ÔãAÇØëk+TÔs½õÞ*•/õÌ!!ˆ*b ‚Eƒì°O®yß› l‹ëÞÙ÷ÊKÐ÷'¬ùšÐt˜_ ŒHDû £ËÓârphÎáqÇ×Û& p¸ÍŒÓwÛ„—%õÕƒX,Ÿ5v ªc‘öMg2 ƒñ»V`h_V?|ubÓUB7Ub¬iº+­ïtÙa/õ~çËÁñ)¿Rk¨ËC }ÚÁµà*˜¡pßbE±µ/÷¸ïî}m¦:"Ë'¯^ä¯0(5ê5gx9šÏfê dOèñ>'¤µb§Võ„«ÛNSÕ>Ya|lµyÂ[Y±Ùv]T#ÝN¶L¬Un¹«Ö »uY+¡ Ùï‹AÓy~û›¯—†Þ®\ÙãpéWSŠÁ¸Þ xZ¬'9½¯qÓØñ<^Û¾ô|ÿÂÚ¶ý¬›[mÚÏ»Yó3>’ܵ¦§Àõ¦áô}_·\¬Ûê0ÖA0˜€É†µJô€¤xЪÍe·0Á¶ G·ß’Œäð9f _XC"“Q(Ç~ ½M`bÁê9ûŒD;_=H€,Æ”ãš.9—ˆ°GÈÆ¶õ…T…†ëÈ6`ôÙîRyJÕZ Q˜Ï*š²ájür"S>.¨zÊù>_PÇÜž.Ñ>Çóæg‘M²‰E®çãFR–½OWwVÅ7˜ÉxxÙc_6°Î>é¬G3”F³$ €D¹UcY ôÖæ#í¥êj0ŠÀ Ž)Ð&Fb•V†HšF4„ÈFUÊÔ|„Ï«hlúœos#80àfÚ‘\ª“æŸ4у~Ês‚°¶UÛS2Íäñ”ACÉb(º„Ñdt! TÅÈ¥ ‚Ä *á¯fpm[Aû§Mqòj@°Xca"É+"F+ÉqÏuºãmdÙ¨–šS×§ÛŸbxár婿mQ£Ž…(ÆA‘Rå1”¤~%»—ì»ub±,åhª¸â²©Ý¼-W#F­JQ(G †£ŠŒ±""”À¾×4¥‚ÔUi2Ú~g‰û….ˆÇ3,p¸;^)íŠlh_F4ÍUB+S—z)üórÚö1$XZh(±`–*òpyžJ/›f ãÉšaÉ­RDußn™88ÚØEä ÄÒbŒLSmÜΉf0‹a!Y=H™I°Sí×lÄT]W™?›ÝåÏÁñ]™uóÇu"|§áßYºù™Q*OÈÌ€¥úÏ<ÑhÒ]·=ë>G×ü¸ôwòmˆäp;ǰ»Îíº$³ä·±¨Ö Õá~¦'N¶…c ‘ PHkšŽ½`÷EbÙÏ Ø´)T¥ ÍíR‰mˆèÉ÷þë³àà¦:cV{¯MðF¶ö•¹KÏÜ}J"Š{‡ƒš’þG=–ëRW$úk!ÕÉG`– T‹Õ‰ÿ Â@nS k4#QöÃy‚ ®-RUÆì¸,¹ì˜f‰‚â ¹r-“EÆgƒT¤ß©æÞGmÅ¡<l/µâ||;ùHp^ÔToÂ\ŸsÊ÷\ÜíD±q%šµŸ»gÄvzvΞÆuüÉå­õµ‘ÃïòädXî°—`µö­tÑ jå¬ ê/ GoœÎUœ^ärî5p¯oe;«h ‚»†ïRµZÃ_4n.&w¾. ”EA5Ršå½!iv ÉaiàæªÉ°9 ´…𡤘W¶:Õ¢ àO»ÃÒ«ì®»Š…ë¯ õƒN"bb ì¸6^>18}¦Ï•µ¤Û ~*U0"S[ÑâÕ“\£½ 2åZ5 ³hRÃ Ë Í¥â"+xÁ0”ìæå PÈ9Ê+”¹ý ÌvóCŒ,u+;ê r^ ¾gÑîGšl›®¥Ž¦s~!Â>Ð…&"Ã…lRIRȦðäµp奩Œ^DÂhˆ½3›¢‘†$2‚7°ÅÄ,íQ¼ó[5"âT—žÇêT`²Y8…°D{ý©ç¬<´#C7UÏÃ,\“ÆûŸtò"«0$I ¤‰ÂZ½"»Ü8úÖ<%}…ýÔ_^æœÂÔçϯuQe-s*!GÅ~¤ôlTz!tÏ(Qñºq‹/ªôB1P=¡z. X¨oÓ#vw"LUÁå)©2ÑÁH©êQò…I˜ËÈ·u.›ÖÀ¨¤ˆ´mjÄØEõúM:¯á<,Z e®‚Á^t8ó¹ö XâÇ®\ù¡‰®Q«~e(¨C&'‰/î·ú ôž Ùùhtíø_ÀˆÎÆš%T:‹ê'ì(”°b €‚PZ»nrèòÇ6ôZèPÐÜ †[žBÖ©¶eQ(E}¹ã)Nwr Ã6~x0VE³ž„¢/˜Þ(ŽèƒÈí…5&AH„ J” u ÏJð)Ú[v HŒP“_83¯ÇKyW& ¼ð^žÎ¿`»Ó¥.üv.¾]Ê푌 b­wF21i#5ã.Rt[;¶ˆ)%%Ò5ÃC#I Â@¬JÒð5O:¸ÁA7«rTDT—”ZF´"JùÊsRµÖ¹oQjÝš~)B˜§ŒXô.hÁã6þÅ…PY18…Øç†D͘ls3!•kÇÅÄïÇcæ.gº×Ÿ:O½ v“‡ÒŽ& „{T©ßwÝŸ1mc©2„EEÀ£Ü(“Óט>n#ŸYçMÜ 7h±ô¬F÷Ø$ 6dþs>/Y6ý ÐÖÅ£50•‡"+T°a¨…·©% «HЭ.•î+ŠCÔöÙâdoÑ1^ºÙfùþ?£ÏFç°q–êP0ÞâR=ðuºs¤VzðòOåç¾çîû_V1 ÐéQ6‹@½­ jV¤T‚Ä5à"¹ ÄŠM2BÛ}ŽÛ‰ÇñUÅg{ýsÐ] ÓÁ¹²ÑÓº‡†“˸AS±¯h)\çªDÉn^â<®g,ç>M²¼Ó“6Oµ‹6 ‚Ô¶Œü#»Ýç¾ËõŽMX(¹O5³}ÐažÇ·Úã6m‚p¹–GF”¯cÒøÚ‰gžëbTû†X Ö0TXúL€é• ÝyŒqš˜ÏQÇ_ ùýïR’á •Œ?Y«ðÊòÖº¬ã¡ÊÇ-m?QÝGìôÏéÉGƒ³Èò¡­Ï…˜'WÀ‰¾ôûÁçøE1F¼êø¶çnt÷X Ñ+£ ÷Z“‰ì.,Wt×ÕÜóÌ–&âpæˆ,@]È?’o–e›µƒ}F•.P Õ¯“’dë—ŒQçcä×>#ÕÞÞÍ{‘Û“iËßõ}ælQÙf@'êÌÁ½Êñ‘bŠü¯OÌJ_[ö½œ×lO$B9 ²S›)%‘êLŒRÔ° ×S©À—¾×à²2eVŠU§ð%÷uWsõ* ˆ§@Š” !L¹`k[SQF œ=i­´Z!½ã™/_Ö çW™Üq.À!‚ìVÔ^zÑŠ¢GÞÝÙ!jº+tˆ*bÍæf….™¯¾f@b„Iô7r«M¬T¢ |Ñx" 0a€¯Õ¸–ÓiΡ¶ )R„jzŒ&Xµ5 Ã6œžW¨÷kZ£^4*x¸dŒý‹Ô '-Ð.4V´b `“(c E|ÖÙ3 „KÛê¬1*˜vˆ“¼žÛT’Š÷J@˜ÑËñøÙÖãvã'ÑKeÓÕðsÏ µ‘Ò7ÊqU*R”j°ABgØvžŽmO5Pb{¥C¾æ^=6FQe[Xj[@{Ù˜´ˆÎlB³O›µ3T¼R¿¯\ë˜ÚèP'¡Lz#^ÌGéÇ^ìû¾ŽàwX‰Ðè;ÂÄ(æåêöuSÁÜî:áÞàÀ¦´ÛÉLc“{ÒÐW%Lœ1U Ek:Ô(rö¢?\U·®æ·\ßeT¨P€Š‹Fc¹hÀ Ô"6oiÓŽððêÁ¦ƒ1 TIcDÄYˆ›”u  ¬V§ ~9;Òü~óêÍjåþÌÏœo¦s 6Á¯Q ‘ôîjÔA+Ê?34z3á¢xcŽ)†øä„j^ÃN5ƒ…±Ñ2Ô ‚rq†^‘KYDýŒ(ï…[U¬j'P © aV$ØDã … æDãÆÇR¹zUºœ²ê·w4Á¤W3"ïeVžM1gXK›åy57ÀO Lؤd«-j&ÐÕ*¤7€ŒœLœ\o¦~‚Õf–áÛm5(fñ€"DBJõ:Îåò÷m~.âþÀá¦ÇªÁX €ÀÎåæDY(Nº16:ã3ÎΦ¯ ¯Gá®q¨ºnÖ^¡‚‡…7Ó°Å-¤Á´kP ÀÙ@~õarؤl®Q@e"Ô/áï;)x‹˜È]AúU•«º­tòc-ƒ;•ü}•œâ FE‡sÀÏ fïO|¹ø[w |-¶¬XIª’ ¹ÌÔ‡€fµšýŠõþëS‡ªÌ첩AØû>åÉsAñâ²% †h¬¦ˆ@*µ¹Ü>Nò‡.Ææ×Ì¥bò#°=`j‘eñiS[Ýlä&òû^pønØ^a‘Ô¨s*RŒÖU+:ÁÆW©ír‹â ×ãEòÄ/A î™Öi‡²UZøUšÒ¥XQL|yLÊÆòV¾Sˆ5€1šU©ï6"¤S„¥*@˜½Ð›sB°#žòrÑø½ÇžgØt&ãÃZ«ÙLÀéN(d !XwüÜÍÖÖ“Ö À’´M`qê¯ážÑ²Á8¶Nª†ê"”VZ RµW(鸖CË鑃y~$¡Z*xN IÉ`eB‘pZ4ˆd.»~ÔjÝÆ‡Âw¶x1ó"»ÖíT{Ýû?ip0eCô·ã×ó•ÏÙ¥c~¾O3 p%RÐA‡fíÐÔ?] —ŠÉÛ/nhŽ;$BÆ\äiðEˆÖ[CQZ¾Ifã{qÙ?xKW/™Ý)CÁYã}'¥M˜ë†2UÏ^ƒ¾Ö‚¯dS€ÓR-â@“‡ƒ$Íï+Èe×p®bÎì[¢P;žS§\ä1²2œõuðãP_‹˜8 ¨@æXmŸžKr5EnñJ™Íèhïs±•M&|)‰H8°*ŸÝx:©½Þ~ëÿ'àã—Kõ~Ú}Ï–ÊìqÞlȪÂpÈ„-yš± Øc” âáZqbʨ‘XšÐƒÍbHƒ7™?Ûï;[z¥•#X•Éà£Ô±—Ù@FË£ É.Nú/z¾6ùü X°e"B  ZO­»¡U··´ÜÌÇOHž›Ìòj#K³7¼µ^ª:]Ä·7‚ùpüEöT7ÛöWPû€„ d!¬*K^9>BûÙX<çì®D‹.Z‚ÁÓl­…ó´P Ü=pyíƒ#þJ™,­•á0eRxcŒÂÐèy9~·AzåÈ£¯öÑø×+þ—YZ°·$hkubר·çBƹ©`¶ýí×Z>>÷ Ù»<œ_ 1m»ªÃ{5áh‚ÝÒðÕIðb_!K{´ÔÒ—Zv„a¹ŽìÚø4É`Ë;ÛìÁ»ûù¥ZÀƒVYÞ¿z÷5Á‘vùÊ“ñzìñÐxråêrSA¥Kì¬à*i7ŽkËënöWhi9[˜¾…MÄ„<~»ö-™|«-îã6ÊÊ"]#¹^.ë³rÌ9À‚­= ë7ÉV{QájŠ«Œ7äÑåÅ__Çég‡¼Yob/¾ëi•m<ÝDŒ·DCK€›Z}Í>V¾›2ÃÆèëàÃ}Rˆ¾…|št÷k `Ń¥ãC±é´øz]kwÃ,øîMòWò‰c¯ž%‹Áal³‰}àµ[׫ zthМÿ^í¯u‡ ku8ƒ7!úóOßÒߪV3·ú¶¥é Áàûì3ÍÛM\Ûñ÷{Ëv©Üê3%ü>j°³µ?GÛx–ÖÂŒ#¢¢¥QšD©†ÒœÜÄË’*ò itƒg=>ijróœ»W”EÝŒ¶~ÞزH;âônÝ[sà¨õlTË"ÞßóŸæy^RÑ>äiéeÝ]g ÕÚÚãïù³žxÐa*é쨂ö ì õÕÏàíŒ3û1þ ÄLDe.9ÌÏVSºP6i+•Ÿ™£ŸŸ¡7\%¸/FVéWF¸÷Ç=7³[¸Þà83˜ìÅpHu%¡A¸¬¢Þ 5üMë¼Z]kvCo‡uŃ>bÄ„¼±á/¢stžeñÌ’·­=uµ5=²É ‚¦ÚùÎ_ vøañ§%l?aOš µÝrxÇ0­¥¾*D×?ÔØãÏÌÀ€;øÃã*ŽÒUÔÍè²®C1åÇÎå«o†­tž£½ÎŠ).¾Ø(­ŒêŒý—eöïÛ¯™ˆ»Ï÷5=(£ÐØïÑ‹®Pò‰N¬w} ~êvxCévNɹåc÷Yí|KÇÐ}.ÃÜöIäúo°ÃUëp”{X÷™’ñ^®Ü¾gC²±v×\°±Šß k×ÐÕÞïí?ÚÈÌ>sŒNV÷fÅu8ÿ)ÊÔdGF[™–%-q.[KrNâ!ÝV Öî•WgñÝ쨕O}ÙAb²ãô°à~lþGŒ¿ ^lõ¨Nj;DeÍg¥——ÇàwüÎ÷˜%šxÍöåE$¸q‡Ït«ù¼–\’_ÑMü¯oö!Ýn>,®?G]ôͤT5aÂÛ×b…¼€ÜÕD:ûþ‹úƒo…Ô¤z¯Þôuƒ…¨*sú<>IúzYï¹FeÂå«mÒßò¬êv>ƒTÀ¡®)g}á^ᾂ Ûéâý. ÿ¶ó¸®w*Yw#˜UÄÅ©É_ʦ-WoÄÉ}ûo?ðÕ6û¹Ë’…Sóß[ú5ëý–sû½çÉð¹µN¾¶¾‹Sß)žw×ï%¦^Þ¤«ÈÞ“µÚ6 õv¾æ¿349Úx^ŒóSï¦äó¹í J®/xMë‹Â¿¤ RÞù°Ï\›BEe%«fº#ôúö̓7¥ô¯Á_݆¿eê¬>ê܃)Ùáé–…eðÄœM—«ÑgGpù;øÂòö+äûï'mLº%†ó{Pø×þ.óod8—uëúžDH~§ÁãÆû¾?Ù쟢’í¹{gÃô³Õ¨ëΑÝv^gÞ§y¶än½¨lè£sæh«®§ i$6ÇÑÖôøž§þú}¿/Ÿ“Ãèø[6'RßðUëùÍù¶jqºþwˆ}^ÁÔ ¬æv/³meïÈÛvû½Él§‚¾Ãgß]›Å_ò?ö~ÿËÜrý%q¾[7rÕÀé?÷wýp3kÒŸØìå[/-NÏ/§*ƒ°ÔÑèæžG À0Þ((ßðÞýÿ#ÌâK­Ü®~%:£‹Æ#VIe סäò»Ÿ{Í×ÖÉö¼Ç‡¿o3ï8/îýnÃmÍŸë/w²œ%î9`Æv„:æüUWÃíf‡ˆ¿v|ºæñ0åæìv~o}Üy]Ãèèð}¯§¯Îñ}m}PÓòqdò¥Ÿà7™×yš9dx\Ðçû}÷cöÌèì†âÔƒe¢09˜Pó5Êáò{î º»ùs$À&]¯ÄôýÎ…[¿ñD•(døÙ&óÓ õ'UªórÆÌà·š¥QÒßZù¿ÁÈX¨ú¬5D¿mGk ³&Ó²‰Ã™& àMÙ˜†‚h&\ ý'W}7q%h.„"¡È>*{㑾›UDàÄBÞðrù¬aÕßøO¢ 0ã–G˜ŽKá~~ÔÀZТ{ <6´LÈD=É—[Ûm}[>·àq~½¸WÕñLy·†dÜbbm2ÀÜæ´Ü‹Í3§[ñ±°ûy}œÆëîèrm¢ÏVà· ne½ƒ$+¡¿Ö8F8U#q»É»7Í£ÚùÒâØØ¾›'ªÄÝâÆ»¥+U¥Ž'jå—o¿ô¾­Ñäƒ!óíõ½oŸÖãYV0Û8ïMa›زgͬª i»Ùúåî.ñ¡ÃêK󗩮͊C^²ÑUtãê“ØRࡸýãÑàUï#IÔÖÇÊÊ]Ÿ‹õõ>¯“ðË[åý köaºo×ÉM›j´aME–Ôf\)·¬^×©á £»ôhËñæÜl…a ÔMÓTì©«]Û›†]Û;ÿ\»Ï;ÓÅV¦1¶j.Ëm32±k,[ÔH¥†Öw:ýN˰åý}ôÍ蜧aèáXý&`ã_0ÄCg ¥:aíÎ?½>tßO´—£t÷ÚB]Þ*Ò‘Û Ún– …r¸ D@©0áfÝ eL9!‘@ÑÄãýzy_A}Ÿ¸õöÓ((‡oG¶·r8§V<nI% <®Ô¸~7ŽyƒL¦Ð:Xµ5sÞ;œißòwÝÇÉ]©v”1 d[4îŠ Ã^i_ž^b?árß_s[jtédï¸kÎûðW À]×ñ¼N_¿ÉKÁ¢÷+.^ÝàWs‡œìù\½ïÝ*ü˜ÁÕh¶Öb»ë>à´–Ùíe«K…rå>ç›U4¨@ßEtEŒwj3r»_]I`øãL¸æsVƒŽ. n·•Á¥ÔÚø)õ8Ýw‘ïH&Gœ†¡ÉÂåU€¤Ä0q0E÷š…[m#F·LÁŠ Ò3îö™ª-D Ó˜Ý Ô¹x}þ¶˜W8Ïlàzë•wÝMp£—5sWa=´Új æj¡I/£²ÎÛ+´aÍnÌ#‰uÅTW‚%[JÈݳ€Ó«ÀëvQ¢Z8÷O¯Rå¡3i[UØZëAOjf§AÁÓ$á<¥…²GÐJ=•YžËsË6sV^õ@åU°ôºeÀÚT]FïÕïo©Ù¼˲£‘ôæš¡㦥»Ú@Ê"Ê:èÙn­×9óm±/îŸUò붺Z¥²¥ªÃÈpqˆ ‰bbAcBæä"eLàUj‚á*ÞmŠ$·1 â i4¹o‰ô0°ÃKž¤)öiSŠÛ»%XÆvë±`Qçe¢0žM:¦¨£2kÌ¡“„Ì ¡‡ÚRލC ÷³p *ºÏ`Ôß#Û¶ƒ'£D †‚ÚÆ@ 6VÈ ÑrƠ–A•®@ TãÄ“ 0ãU"ºj%¶g`HLì$€¨`c„j'bŠÎ‡5)®{_uTFi†¡UÖÚŒ쒫 H¢ ³ ¡EˆPbU")Ä •,„¡s’›s ÅÍP. xÒ){Ž¥ _‚¤¢aƒ£BYyÜÊ]3A“ßj¤%•7Í]R”cçÏ1Ä ’`YH±h‚ŒfqÇ{.¾š^Ám7U½d÷“1Nø2¶UÚÒº¸¤§¨å}»öbé«έ}µ3$è»›lÅuS†DjÎ4’ŠñAq2VO8R+ór=·J0UC3ž"¾}”¤ä˜ç™ãŒrÞ­³Oµ·)ö<ˆÍ ¦BÀ¤ÇE¥N‰£Ú¸ •/sM*µ¶Y†ÀðÔ¡±)–Ü1ÃoÝ{ý÷ÏûmCÿÛÍøa÷ûÈí¾ŠÅÿËP#é¹Lû¹ÊòKæ ¿šèÑDõbš‘ƒl€;“Svèl”œ—ÝBA#Ÿ·ÚÚÝ;x;* ÆÜ¸.^ýïâ&ùœ'^|×yÕP&`sÊ@ãkp¯‚!hƒ€J“ù³‚± 6ІT Åž8­² ¦e·18Nûm !m\8£*3* œ'a#0¹'¹ÖÙk( XrÕA²Òœ^5î2œ‚“‹eTÌcr¨)ª¸²ºïšž·]ý¥ÊŠ^yà“JÞš€ª¾‚DYS~ æÙU×b§®€ÜáJÒ¾²¬ˆKáL.\¸ÜçÂvZËžÕγ¶š‰`Á€Ãõ-UŒ“c' ڛ΂lºé`!@%e”–@ 3T,\eaÕ„h6“€¥¬Í¢A)ƒ!jÂ3Jú*%A÷½àሀ­Îžk£Eï‘¢OdÎŒì ÆT´¹ c b°š "YF‰e½·NèŠãY‚Æ Žá‘¯m"†ÞØ[‰Éc¤«HB5kb × =G!ÛbF> `Í3;”u…0 šQxaS[;Q¨Â)„I•MR-ðÃbæ+8@+¬¬rd©k„ùª9±Bbìeµ8*Ux bÚ P 2*â‚”!56Ғ¶ެS,ä¡fn§Æ5dÜéÂZÆxT2N‚RIDõÝKVÚï¥&%Ý+V3m›nÃOØîlf1O'Uˆ(¦)V8T—@"ÅÁƒ[Ž­äÎS|:ÅB¹Uˆžåâ¤32vøxn ÿJÃ<“Û?Ë»=jÅ=m•…ј B`gõ1/H]È…)|²„¤6¶ü%ëA“‹;i¹$\±sC-aPÇ9¯30!¿²¯52ÁpâÕ)GJù«UÏŠÚ±¹VV"·Nm‘µ;³É<"û¤O°}c‚ „x³à7S‡ÌuÆú÷z0Y=JÀÛM/@Œ0Ú vÕ+Æ1BgBõM«& Ä]$Ö”„ &ª ¸™ÂXµ-ªWS…Q¾4¤!A¦Oïå¥üçûlœG2˜úcÆÚN:»ÞbNlt¿_KŒ•Fë-Y‹V¸ ã=tœ¬šqKálnu¸Sj±Ç¹yð)=á|¡Dy׀㗩ñZÞvõc#±¬S¯Kò¿ àæuîMtïtS^i‘Dtªø„”¡TÕK†•ÈpÉ’,JâÅq @qáf eÂ¥ƒœ@"at )"†Až¦Ì¦²–Ì'šaIÞ° T$ó*ˆ¡ºÔø›¸'KÁ¿¯‘"¿îçÄ®›Zýköp~³Íwºñóñgéªaðöô>®ÿYú1À)ˆR:Q"0$#^{4½²½€ðÎFoÌLV–e­s';Vs)¥§ Ì«'kL–¦SªT¬vE¯F6wÈ÷ÙÏ1‘àºð‡…ødtõN¨Š€BÛ•kaHÚ2zR‘ÒfúJIfK“Ît5e²¡ëÔaÁ=Tºê‚™Z6 2ÏŽ—°#~# ãS¹ÌÂ$e9+éRYQ˜2üFÒQ›ð6eåuÕW#d`É2ˆ® ÊS BÊZ,¦å´@ÈÓT(Ëb¶©ëX¢{/FVp{Š$.À—™$ ¨"Bu›ꘃá¾õ @X“Æè¶–²q‚ç)+ „ -¾vŠÊª¥1) AuPtÂÚG 4O2ÊèO[•]5Ì}!J¸Ç‹Š,:òV<2Ây†W°±R8(\ªºW¢(q(K©Š\¥(„‚8 ŒÄ—‡ì–BÚŸUÆ£ÙõX‚@#üЇ®Cð꙯`xõåWŠVcÍÄAð>L)¶Å´ýR)Äóèï±w^ª‚ôòß=¬a!x¾Ü}šóôúÖ¤]zjÇ|ªëÌO(2|¼´'ë ¤GAšÓùÈQ·â„nñHI©=©.Ñö[Oª’ÍÊz½vmŒœ¿<©´Y$È$FºÜE“Jl“9‡ß\‚+œúyºâ›’Ø÷ïð«ÆófØí”í‹õvñw.>96féš“êL/Ó%pPPgnNm[ño3Õ¹Yt€ÈÙõÒ*¸ ØoÁ û%j2ò¡ˆ®Ð^TÅOþÿ„¹À  ‰öf:%ž6ÛäãÆqt x°`   Ú•C¹û×SüHŽÛ*—6lªhÜ|c‘9Q\A€B÷EÀÐt5­ë®èXYຫúaÛ¹–ÃÛÒ/¾7>NåKtò×hn:‰ã,ü/é~¤üÚÀðn‘öáÍúßì076Â(ƒÎlé,o@ â8e Ðè æ…#„^E0í•N9È ði¸áÝãÐ ñ¸ÞÌÉ)`Ž*–ǰcÚ‰´H+‘€M,™-Äu|®¯“Ûû>ò[0Í(Ûy@ºÆaº«w”õǃÇÇyß;Å2=]áКpn\;%›`r =S„aŠs‡.Ë”*á^x­„fª]ÅSUSQG.H\AËá• YW;ÅÌP¥=¦Ý‚!@È!×yÇlÛ»‹ËLÚN1(èIéÁT71@’Iüp•íý'Ã}­ßK±+ó}ªªÁî;«ñ]æ‡áX“¯uB‡ˆ&b°C$7ùË2ƒ¤‰Uê}Zgqø1ÈÁ)2ȪçÌ»”›æz(EI.A@Õ"œ9‘ЦÉR‘’IJ4šj)‘,`’ÓjÚùUkñU¶¾kZ­>é 5Š-b‹I‘-E@)–„ÆŠ‰I*ß5[õÝZß=«{}‚«¯aΈP.³fS`F-@ U‚×aÁŠLÕ:á¹ ƒÊ›"̳—:¼®²\ m¶3_$äEŒV1"ÀéÔuj©zaDx *ƒJ",5 €Q”cCTÕˆƒDD¡T¡€ ›ÿFN 4aZbÍ›ŸªAz¡ÞX÷\bÆ&ñï\wK’žª0²v’׺˜{#ÙÃÙ‡ôž-ß:ëÐB)û×YÖˆ pxÒ€YžqÝiµšÂiÜØ¥$‰ Æ(wŽDÖ½¢¢k’—»S`ƒ´oP²†ÄAÁ`ôB`%@Šn#$}:P´z«-‚Е nJ>ëJ\Ø…Ý­ÖMdÓE^'m¦¥Ö6‚½PA|ÿXÃà ×Ý(pzÜøþ8Åú¿¡H4Ê<Ñ­Õ§„í^×¹î¹ W‡ã2ÚCÅvaĺ>7‡» €îŠ6j^3ÉN™æôk”ñ¼—ßz¯±îíïv7ûxÀs[¹ªâà Œ–Sj2š¦šÑ¤³(­¢¾Û=¾ï)jµöµ«^äj"¥’Ö©¾³Ê”!”°Pmm‹QV¡!4h&̵µ}¦¶¿ ­¤“júv·Ð¶õ¶ÖðÚ•Ff4Í-0•#±‰lÖ’“jH¨ˆ Ç‚DKóCt¨„Ä DAè~X -"n€ÈÒ&¸~â xóÂÞ€† ˜ï8‘4oEÔòXºa{&Ÿ»êsá5µÆ‹„†ÃVcXkª Í÷ì¾Î S£(äXâozÍøÊ½ƒ:(ÒrT5ÀÅU´±ÃñZ €‘y4½,X×ãÜ …=¤¡ÙÝ×ܨ\º­j«t@Ä8Á…Ù™‚ðA3H¦ÝPáß ”¶ÕMÈ$T¸×Š‚7Ž&·VT7€îÕM¢(š;H„a@ÂÈ… !¸€¶Dûüh(`E. ‹f”R ‰°ì|Ác«ù€ˆ—"OºWr ÁðýÚÑ@MˆÈ @¤÷Á€;O¶hqùù[ó36n¿]8è<§ão_É V„”tœ~¿ZëúÏ/%½È;[`/ éê mº È;¢’J±\Uétü¿S¯ äF;pü†¸;‡v° 3œ‚˜Ó´@ш)Ǫ‰H–7`®¥¯Hˆêƒpâ=&45ŽÁÛ8”@Þ ™BmÁT<r‰Qna45TúJP3Ìõ¦ £ÔE¸•x”ØŠ·iràhbiú¯5IÕ&ý)0.'gÕ&ÛO¹ÁðŸ”Æ!Ád+gt`üÿÛÛÛAi^ÆßVúÄ ¾‹”{G¶µÇ6 W¿ÙP4(ð" !¶ÜmÁÜœ.°B5T”š‡:’ì郜«®æQ£´×1ss§ uµ­@?uPÃt°*PsÕ!ü¤ÉÃ*ªMˆûìÌÕ/@Ký„tÇnŒ@#{MÎÛtÕ}íW6µ&:«ªæ’ŒM͸ë]j®m±FbDCvñ8Ai*¯3UJTÜ€yà 5'XC—ó³Ùõ\Á…¯Y¾J“~Àׇü…V^êÂæCŠèºŽ»R{œ+˜ÉvŽç[ÓR_x{P°ƒg=Pã³ÛÃØŸŸšðps+ÌyK—î»Iº|‹ë\á 2HÈ,ƒã¹Ëþ7ÜÕ8zpÅ¢êî §— ÙE+=b®¾À”mÙÇ|LxüÃç;!"@cÖ#xðQ8ƒFqÅ€0(äÈMŸÈó¼¢×ÕÌ€ë=Ç’”sWWÅäU i‹¸C@¨hÕþ*ód"|qSÈEd$Q‘I‘<—©·¨ð‡çßæožÐððzé/¬¯¡{€¼Ìžš..x9¾z¦‹ÐïíV^ÍÞéÄRcCá¿Ö»ºÞÉÎnæ Îí×È›ÖtáŸó!GDÀ‘&þ’ʈõŠ"×ÞBF"!ÿ¡ € ÚOÆ@J!<%ðO·ý™Nª ÖIó~u…ïù~Çêçê>¯3¼ƒß½¥¤¨Ô©çT^Ö³ ë1î îÒý¯¹¨»ŽÖ"‚ *»eB›€@Ðí˽‘Áe„H0R!1ë•K(.ܽU¡çÕ{5]ò¨9@Ê€‰—™ {0Ò(ˆèUW’PZN1A0 &Ÿ&~ë@¨dTrŸ8¥Â)¢P/@î‘" & .\fEPh@)ˆ6Ë@ý®oºÀ\ãï­aEÏPùÔíÞô^†ºÜ~/bô†¶'Q ‰–€èëCÙv}/Lfçm²ž/@ôH xÄ RYHIÑ#W P'NY<¢\\’m±íÙ@ F¸`b^mlៗløŠ1+Wß? )±QRËY¡6`€m„AôÙï™í;.%’$ Hͦ[)™±ª£i6" FAŠŽ i=J€èCh¢+Ÿ£4ºgx®€Aõæ!òü2¨š["åŠnÓùb8ëF)–",”EL±«Mãpª±ÒqÓ™ð2´Èå ³µkŽ$ð(§Ü×öÓöèD÷ V…‘[Ay`@â6'-š# êEDºûkEàÑ:S¨Šf™pÉ¡® QnW‹rsa¾ß_vZ r@™à 0`ãLÓ ƒäñž¯ mdñþ_½èýX¨à烼¯Û6¡úò_.sG7¸}ísf@•Ñý9C5G^*k݈`à69a™`ÒÛ¡ ñÊá2«/à|£j`wI¢b›ÃþÏ‘'£ôW=Ï¥hˆ“â#@¼d$^ì(@Z€¡¦Øbtïø´Üð}Õ' —dt“0ø€Kª } ï»ÝÁ}íã ²($"H ’¹Z‘?¯ëùNsÊÌûEµ–Éj~m¿GÄÇs#>v ý¥VÙˆçÄËb;ÿ•–|ÄyÈf:àâ”1Õ;ücñ’Ÿ®É4ÜeóyóÇ~9 Tž°öù|ÆããLf]4¶ö=¾¯Å{{‡‡Eà\ t=ð€ B0EŒÔ` Csîz„ëäâ?aÁêw‚nnž°.‡Ìîz)|«ñF/v°ŽßŒu^O½sÌ{nw  ²; ¿³Ñ÷ ƒx)º'5€@÷K,| (Gà‡°Dó†ÂÃüáïz°}±¥î§Â'B P@Døšy¯Hí˜P$C׸¾„2 mº’>0.Ø`§!µµn|Ä”‰ì™ nãEÙ3vÄF­÷Ô°áž°‰`0\Â+ÐržÛfjY÷Æ8(ÙtbÜ ?ã ‹*™BÁK[ÐÔfq€€9ð² ¢¯ .¸š y§Ù)O£G1"š“@ Ôs€ÜW¨£§»§"x´¿Jü^Éòª>C ÃAÛàO |÷›&F}aŸyöâŸþT¼Wîû@+³SÒ§"¹­2›ð¸ø@¢ÁýÂh áaÇùäÓMp¸¶7:Õ.º@ÀÅ®ËÖh áTß1÷ÿ7Eè4Ò›ÿ_Ó=Ïw§¬¬sP3y`ÏEý¨èÝØÒ°¢ë7 pï¯ C AЍCvÝHð¹U·fݪ]³À)‹šyŒ–KZ‰!S(RôUüŽ×@Þ” aƒl\SœV B$J—ß Rqò.~HÙ4iÝ@ØÚ!à_JUØ"¢@è†ð¿ê«Ã€»Lž“R¢Q³œ“(ˆ‚gÁ(ÏôØ´o„ ò¢hj¡¬ (û;§ÈÜ~Ò,#œ¾£2v²‘I¾»ôTÅò(YÐ8¤(B A>P¦€BI(%@žÔ7JPùt ´ÁÈ„˜<«^…-5+ez»]¦Ù’ÞÚÛÝ-ƒô[-šcÔÀ]5°0IX‘XÂ2$BâðP¦A$îì©`Í%! †ê©ÈÓaÅtxÑJºÓ42÷b³vš‚°Š ÕK¡¨u‘6Æ-Sè–3j @ƒqM£³Ðɱªj² Á \£ Ñ…ÒŠºAþvèM0êˆÁÙ6Ü»”`6[NN %ÌT( „(©A˜…¢¥¢LÑHÀ½PÉ ‘¦ L©ÂP1 >·‡†@Á7Pñÿ£ÃÏûW» óÉLsU™Pp±V|u«Ê¶5V«éMµb,"Z{UŠ‘8  ©¤¨Ö5›®Õ×SNήí^×…¦›·Kp™( Š‰b5C;˜Å×]X®²Ú÷võRݦ¶ê×Ëv÷šØÔõÚêÓÕîízU¯6ö×·Z“IktÖ•Š D€Ä&Ûü·Î²‰MhÆÐnÊÄ ¸êA@æHNH úó]TA.˜ Äø*!€ÈeA<;ŒËŠ=ÓBB 2²B1—ï#ùYuK@¿«¾¸.~äˆÐê«mï aÀf@iG{pœicBérèÕ°%‰ƒg@ÐØI‹èRüC@Sg\‹±îðœí`ÐåÙˆôÝPø¹ F‘PV:å,¬,R±b1¡¥JB1BŠMÂpýñî \H*°Û¨}KG€¨y?ÞÓù‘ñògÊÆu{’}ñ-Z-^™¨ùáWtÇÕÆ©¨³2¯& V4ÛDûÆBf TƒD}R´—æJ øç7ÐÁ|-*ëšÅõçe°[“„¸1CG@±@Ò®:»ßH— V¨Â:l´D%á¢}1 B(™¸ô%ç¨"hw±a-k ÎvÀMÅ``Ô9>´ì\ ¹ç±£¾ú‚«%T‰UEQ©Ø4:©},lJݼ–4ª|pçžq¡œ¸ëPNá}>S<ÏbÍÖ²ÌˈIfå²vªê`µD`Q(MÈžpØ·¸–Ö 0ì7Ë:á\(.–6Â_`¸’›ÙËh›Š tq°YÃ"æjÚ¯ÍMÃVŒL„Ñׇræ,0°ä ‰‚±ˆ…× TÐÓR]P³sÿ×ò7g¦8ì\Ž»ã/X Fçx ¤IÔ:~ï»áÂùô¢q¿ oœ¡·)¨Z0Uacw‹q N+Ð4ÌoGîíCíÄ!oÎÀšµæÀÑâ4$9ýg:£Ý–Ô1ËÃØ€”,§:#¡ÓaÆ.« X ehCð,ä :Z&ÁxŠþ)OÂÏĽ`5ûN@ ÈAXõt5Ôt‹ÛK„v#sÐm.aa€LðÖ;Þj³×\8ŠÖ$ËšÀ^CL›ãå CmB¾|·Â8×]wǸWZ@õ‰ªp·8üÉõÈ ïî¤À ðXªÚRªb¨Ÿ”fM— ëÂÁ;ó1  á¡è™cò€Ÿ0tPˆ ª@æ"*hsÇ¢Æ\lrô‚¡³I° pêUõîÖ>¯ÝjzÍ5¥*™P‘"|ˆíççݲ|€xŠúARBBaAHõˆ~ä³k1óùÀ~v¨ÔÃÜø‹ð£§SPr"yê'£Ÿ”dT‘¿Ÿ N„ø)ÎàÈÚ&(ãÚ›šD[à V@°žEÝö CÖªQPH°šß*Ók¨²Úih­š¤ ”oزùôqú>•håº@ù5ذ€D´œ|ásÀùàÙåS±ð±àO®€zÛê—R‚䦞 ‚â>ª¤ºáÕbhš È/´Óºêèæxø² ÝòŠYõ#õô9Hʇeètg(BDBNÄÑkH$ŠaQžïB$dH@÷Ê&º07vQǰ_‘ÍÙZÓe1“×fèçSbŒ±‹$Ot¸;!h_MÜת÷z”ûŽt(]Rÿm/³p¼CUX!íUNMŒ¼‚y™ÈÔ %‚ë³òE$º¨âå_°j‡Å~ .@÷F…ø€u6K¨–I t ð)‡G­5B`S„D‚Lø³4ÈzÁÙùÜ/‚¡å¨¥ÚC‚øû`ýìíó”Ÿ"|¶@ì›QPÃIW¶HÚbøE¿¿5jÁHF§!‚Z ÍÂS„Â,…¶—ºU°Pu¯Ë™CcB@YŽáÚo¼¼È.¸dö e ÊÉŒ!CÀè[2Žæ÷0 6`† Lဉñ§™ê u¶ØJ¶C‘¬§™¹×AÝÏ_ Ø ãÏ4žÑâHh{ a`Xˆ¤ ˆ|NJth‘/3Œ²íLÀZBÚ¦¹Ø¥g&ˆbF¬ ¥‘úâZ×,êÀöº©æÏ|D$c0 xÑä±<‘l„8Ò—˜‹ä¹Þïn­@@ÁÑ¥CÖyú³ªaì=‡ŸP4 û»(ODÙ,xy þP hH ïî_fêž)sýÇÜ;Dÿ;÷~ÁPSæ„@"pŽ ÈÍÅN«€p î b±‡­ `¢@ESU¤áÞªÎoºbyÓ#ÞteÕœ6ï41Z#f];žÙŸPyA xü  $PÉKßɦYˆÀ»Ì+Ð6!EãlSg–[ B@HE`„Šd•ȆBÄl>4¤æò“¹Æ"Q•@ê’A$ u ­J[BeLÛ_‡o¼_…¶®ÔÕf ä¬Daþt:ç j@ ¿C/½-|(HBÚô¿ WZ¾4¯]ÁÞ´Th[4ݬ™ ±¦+Uh´Pnj9D€[†µ„ ÔA?Ñêië5¥òÞ‘,çQѧa0ûúÆ‘Â1(D…ú=ùÌ4g~}ÒÜt©Ù—µ‹@=Ðkå²~ÄqÂÅ ‰‡¨‚™RÍ q‚RAWªh:¡NÔ2xvF”5'kCdçØ×êÂP¦@"@¿Òt BÐ 'Ø|_A¸?¿‘©6•+f›SY­‹F’ÌB ,$‘Ь„` e' ²U÷_[o²¾Ï·6¢YAŒŒ¶MCZKêÓ>¬Ù’“fË@‰X$¡ÝÑ`RªÑD>`:vê†AèÀl—Ê!Gð9±”¡" uG("_Gúè×p1¦CÉŽ¢g„;œ¶7'ÕÖJDU¸Ä{]Nå>£ëâ/¬bbŒq˜$ƒaÐùÁôïJñ~߯Áê qTêùÌhì¢ jÅÁ4ªfÂF!‰4 ‰Ï”#Û¤8ƒ«´¢í8›ÝjØL³0Ø@;‚ðÐ5iÞ縜Q€ã6µeC&.Lˆe¥èèMíÐÕx4)ÐÇNn¨\šY=§eà[ƒ3Õëàa5kÌþ¾Ÿ’ [£¨³m’0RSLF¾Š¡"¡Èiû€âÀ0 k¢Øõ!¢¯çþרh  7h—†ëö`âõÐ3”¥7!ˆg{Õ Ì& œë¦¦›“]ü$͉c"pXËJO€^Æö* Q ζBÍì—ÀQúÛ!£ ¦Ò0»HB„‰9¡ø"îDªšPI!Œ $‘‹=À¦G#Ùâ'ã!¸žÂ„øCÄ}´"…ÖI§‡“Ç2C D(;”Òýù’&“r™JMÜ*[&ïØ6ÙkæÚ$ó ¡D¿à=båUrm<Ç­–,GP "¬àZÁH$“͉؛6h]à¹+;Ç,Á„ȉô‹a”,]OÖÓDäÀõ~asö®‚P ¹4ÞÀyÃØú¿¯À4Ô4ÙúÂïá~9´ðùC({ÍÐa "˜0"êß!˜Æ–°¥Rê3݉CHÙ :„£*p7 €Ðœ@8L)µŠß•«Ólø‹„ €DêZÙUwuw[¶¦×P´V_w¢€ˆ{´h Ú ,*$j‘¢Û^Á.´,€‹A ‡ÐÒ>1³ØÊ_ÖQLÒÝR¶ëi*T ë+Û©+-‹GíÜMjÞ^ñ6 Ld6w –é~-*.­PÔùfçÇѯ µJê¾V¾ÇÌò¿±[)ä ºT’ xGìv=jánØ ë9±g¬ €˜ö– ;`žA1béâCys†ÓÖP0 aaa:6þ{ŠQó‹Ýûq‚E,ÝCPPò†È#êˆ})¨hÅRÆk%­&Ú¾­¦¯}p®=âÚsÒ$îý³ÝCqx€¶ˆ‡F#HLŠw’Fq‚ Rmôå]5ZMµ´•­¤¶Èí$/dDLš§Á…~Z9 BQ´N±>SÑö†ÈôlˆP­Ã§×ñ‡Œ°ó-æÀà,‚@·'Õ”<]ý¿¬ƒõ ¾hr \:>¥î)äð}ÏŠ!éÛ!Âz‘6ó<Œ£pÄ( º¢tP?:@ãäÝCï'³7<” 'R‹7éI`,ҷ؉E{£Äì\NPL|x~„ÈlY‘y楦Ѽ¼’)Ši4”šáª˜ Bdp†‚ƒŽå¡R.L°°H6‡CÔ}féIÝ!h(HÀ¸´·‚œD1WÁl>jÊH.#[Áy@ Ć7'#KþËæ7šlBÚÕzCq¹àSAp¨f; ‹¾øžâ‰ñn®¯¸½ëU¹üöhS>"°ô½¨Õ@p™Û !4± šFL4ØÉ¾ÅÀk sXIJ°KîhÚ(^2œ*=!”’à°´Æ Q) YŒˆãT"4R¡qÄ…Ÿ³åÐÜHì¹8 }ã(¥‡s*‘È÷>C;3È_ëõ8Ó=ÔÑKœhàç„6Ø¢ +"&!tbшЖ– ” €Á´¨ÔEÄ´G¿0q–!‚´/oq€5 ™?À?eshhèU5‚¼+b‘V])J;®?¹ë×óh 5zš§@lèž$Ì!æ  N*<‘É8 ˜¤VH 2!Ð)I<‹ó(ä01UT¥4U5‘.21rQÅžÒˆmµ5CA¢úpµ[¥,ÕJ_À[¦PŰìCK&±*뼸ô  ¼?¨r´Å ’q‰£9RÀRrxÃ3 èД@Ì¡,Àš{€óOF!§çÑî ©cÄ(È €8€P½¬4x¥.vt[z?3e83BCÅ@6ሕF”V‚4°HBBK–÷BË6" Y–ý3 ‚qºû ‡\†¦Í*èÀÔ”f&Y‰Ú€Gnµálv#J•Xl¨TÏß/¾Ä`øµe(lA]PÄ÷px¹gïÃaÓESd¼hè?9þd=èØ|?‰d¿ºD=ô¯r¸Uq=Ï?ó?‡Kàé7X1ÂhC^AÑD!"Cc¤¤Ü—l ÌRËg˜ÞÌ ~)AsäFÑ[±‚Å: oáŸp`GW2±”e£«Ä ÂÀ«Ô³IòØå'•’•.—ŽÀjê˵A¤Q[ YJ7„† úâ–…°`½ Ð"x:ba‚e†ÂÀpÂFð$È®ÔÀ%öè˜`n‰eˆ:)¸ºe?ØÂýÆ„ BÊ:6õæŽÀÔBˆs•³ Œ•šËR¶&ÛSYY¥¶©¥sDB‘ÌX ®'4·UuO˲—½¯rÉHÈêçFåXû¹¸Àï¶êð' ÷$wMÏñZ@èúC— PŒ è+ãÊ{‘BI«’:ß-üÐᤂ(¸äÄ\É‘ žìpRÑÖå„=lØ-Eà"Zô/{¥7dE°±*(B.hÒØƒ#Š R”©Ý U(D¨‘±j´ '¥6½•Fa—!%©n,šš¼ºÛ»[µf­}Ì‚.ª…’à”¶%‘  ¤¤Á-½Ti³VŠÛ6Vøøío-Db%®ƒïÜ£SQˆÐ´P19€©ƒ€õ2!1ƒ÷¸`SšmêõKµKQ½WUç²Ú_JnP2LqÄ&˜¡´ša&a¸RlP¬­Ú !Š–BY-Y§ÎrbäKÐ%*¨ˆ4ù¶±òw…0 GP‚u­È¡¼@´P°¨ÑK0¤ „ˆI?Üî7LNL–}ãoSB`LƒŸ *ÁjøZJJÓeª¢²½lݺ½¨Z 6@ oH YTö°@µ4*7±ZŠ­² ÑH])²5d‘F’ CÁ2£€pJÄT,Ž—jã´@±,YË;–Oâº4¡†…?QÉŠÀaŒ~j@x ¡Ðe µ‘øBèX0/z¸,¢ÆçŸ¨:Œ;¡„cKDZ2‚!PD`SSÀ$Áe«42÷.›¡(˜‚l,.E._€4Pp 8K¶"`ò|Z »˜÷º …’v¡J Ô…”j¨e—%ÅÑŠ—ÖµóüÚ¥-¬•¢¬hŠª*µó6ã©4Ù¶†5K0úýnÒÍL¥Ý«]}Læ»uåQjô+®çZ›­½®Ój¬%2Þ)`2˜oŠŒ„¦A1H@ $¶K°aZQÂ8‹I%°>´Â%^ŠH/V¼‚d¹±•°j—1ÌGÑ!!Ó¨¥DJ½žÜÒ"y·Í¿ñø¾.Q €}-ßÅr ráAo>Iâ¯_²“ºÕ3êoOè· 0 ¡çH@û¥y]*ñÒ…ì±-)½Ÿ¼DÇ™¡–éf!îÉA—r€ýG4@ÚvaƒA§à6o\)´E\•ua¤PMÝ"¶?x¤ šáR’>bá#s{³ ›ÀÄ4ÎUë ¡ñÇ*_™…,ƒ¦€paÂä3QGW9( `žv ½<†Ä˜d ЉÐõ ºÛP7Sý=<ÀÎ-ÓÎ×O¾\ þðˆ¸R($ˆŠqiÌ™JßTÑT9;¦*{¢þÒ kÙR™‚enw}cðó{ƒYjýJúÖûû–K©* š¼_TÝTúФ½°?ÿÐ?|häý"ðŸB5SX"l|ã€>[b¬˜²kE©´gͪùµ Eç#‚ ¯!¢ ‘²4£«" ¢ƒE‚”‘S¬QKÀ‘T,‹¥#@6Ưiíß7ÑÚëR¥S-JY"4”ÓrÔ-” è@0£’ -ãcs„Aˆù$>ÇöÄ“4ÿ(h2xEŒ‚È1H0"1G§ÕÔ êy>¨>q[ùžºu‡x! a#Ï4ÄèÀ—(ùLîz‚r‡OŠà¨EøžÐÇi$ ΪI2"q8H%„: wSgfÆ}³§Ê¶¾Ø/$8jáP"Šrpû”Èd¿@_²°…Å÷o¨NÜ2:­$Qd@(hDõBY~‡¢ä}÷> zx z/Ð d‚tyÒꋬ'¯cåÔ1Æ}7ؽø»Ý;ƒbȈ&CY);n/Sï§.û¼š*B 7gÞu~Ùe.‘ôõ‡ª76÷þ!!ö¼Àånh_ÙŠ°ÄSª¡sæñ=E@‚¡ÛÆÈná+{Ï~ÿwïˆ'üÚÓñχä<=l¹2A¨`giìhðk†ˆôçG‚üƒ€Äf@)©CdÊ´ `9ÂÕùöq/ô0ùt@;«”}Ø: lR1¢ÿP±Á!úacPG× }bAqt  ÐK"*ÙBÝJCKNݼA5ÎŽÆ€[p2—€d*”»l:)—äÌæ+pX;¦¡µœà†^n„dV*T‚0 Dè“S%Äì›\èPZ© ‚Žë8#õ¥µtÕVü#[jêÊaZ“l-—gfécã?2*¤Vƒ/"Ãù ªý¸‚H)û TRCéI'ãª>\eÓåKþMw¡Ø^&«ñ„×÷ NÄrØ?´Q¿ñÝ‚ göQÇçµ}vz|ÓÈð8»ýéÔõZÊ*‰ £w Édæ'¥hLÉdIS›Þo­*uÚÇ®÷†×iv”ù¯ê^FÇPaS%ô\yþOãøõ_zï}~ÚmTefÿËô™ßý6¬ÿ=xÒï©|ÒÉ=·€ˆ€å˜ÇT‡ˆSÝiu(°5wjuXô˜ë¶ ‰¯€Çñå |Š.ø´Ý› 85T7¨ÒœHÄ,' ôqÁXA.8h2Û®n\Ý$xL…‚$ f§t·«o¥Uí9½Wµz¹¬¦ª‹!J,PÞ…½EÜ îÀè=5þÝʳ×ïóëÏ¢øÔ¤Ô6[@Ó© ²ØZQ(ÀlfÈÑB+‹ *À•!è‹`…‚ÀJÖ6E9=¾E%¼÷ßdñCsØ ˜AÈÔpàÈ @‹@õˆ«¹z63¡œ»è•ZÓV¢­•M¶[)*Ôª È ƒ",€Œ"ƒ·u=mÏyÔ{†‹±ý_™Üòt¡ì@ –**wµ%RÒ…/J– â,°©bP¥1(‘3ÁT†¬Ä[€â AjJ`ŠÐ>x¼ôïíz/a@•µ,z†a†! é"•AK À€ø ¢@Â!0‰ö¹†Êà}'Ù9:Ç0d2[ElŽ9 æ'Û$b¢?M¯ðÇ߯¯YžRŒÅ}ì¸"¤…Q{ v ›‰Ð…sU„¸Â0`@‚…B2AÊ’QCˆ }š¦´ž¸Âz{èZùË,Œ‚Æ)œY,SUGÂT@‰;kƒà—½6ѸÿØ/©¯vIÑ ë †Ê\Y$ Ü`kHUA¹Vˆ£n|‰M(X Á¨ ?[ιš š„L ¹h ,Êñº'[‹Ú¸É]ხ› Fá%‚ñ •KsqÚÃQfZRZmfÁ"4ÂÍ–4¶@¸pc\͘º)Å‚ÜLØ).° s]rqllJ„‹l¥¶/¹“÷»˜MC6€iµô"`†mÙBíøSNIQ÷°x„á6u²úÔ«ˆ,-ÈPp…%-™²Ób+1(HuB®¨þë|ÂjÛ‘¸ú/“æÕ‡'@¤ƒ°Å°$†a°Ð ‡™€e8›@ÓL/׃¶"Š$ó \زA,*PXCÁÈ·2‹#£I]L¶è_UX&‡ÌY^°ÔD¡Š€nªº!rÖ"C¦édIÕ2ˆX`lÁëÈlXÞV ðM*!h  `ö ‡õÇÖE3r`2X²À>Àø aÀü!àEMî³Ñ®@7²Ë… DåÁd i}@r‰°§nŠúЗpŸ`h=ˆ‰ár‘ ,– ¼‹¨Úèa@´¸PÑÓÓÅóþµ¬¦ß­mÓkétß³pŠœ†Rœ²ÇwÔ9Gvn¦é®ÁûÛ¢lÄïI@¾AÈô[¨övl(^2 ¤ˆF)tB ù%é °‹B& ½­Ú/]Á±Ö ú2€r›¶X†ö%¬F£ˆ… A+Ôi–×F€ëtoêÃyqŠ\À% OÆ»ÏlL‡Ht¤Ôy 4¸™8æzCä8Ãté›Ù\Z*5,—ñWVkcP,jZ•ù#¦Œ''Ô7Mκ&ÊH X7?‹q|`E‡@Ñ..¨ÔX²ìEOLw‡´2 w¡¹Á‰Z…VÄ Br%GT5¡t M0Ä"?­RèëCã§!£Mƒp)Li >Kb‹è‡“ `4$ì–¦=‹Â¡! vB¸ÁˆHS£Ì{%בrFBIÕ…-wël¤Ë©yã«îeà„»×z¸©¹…ã‚ÍžS?‘¢RŸïâhCo°X´Wh€–ã‚â覹! Ž¬% ºš˜R=HC£º\,pQcD.M*¹`OdtÉ‹UÁ^`,‹`ÔЌҀ)ÆRÞãÃBÒ€EM†t)‰DlJ-$•‰ ôS­.e‰ [I¹@)‰— (XªZ–Á°’€µ%%Šb L,0JX¬B%ˆ;Jo(r` ¦¡rᤊf(aÌrŽL1C`dÀ …ÉA),†8aCƒI’Ã@Ðîfd : ~H— 5‚5VĤìМ»=€è`ÂãR2 h#à ú˜/pÔ§ qÔJG£öý|I!#ñ¸90|œP—TÈDÔî&÷L «‚€õ…–D$ŒY„  U‹”¿½ž Š„cMNH3b„ €â‚€Æèa°0`¡€ò¤€$€‹ì9 A @Õº T(@Ù-Crº´ØÎˆ˜íòHTL~)áÿ£çE¼ÍÞ]p¯…Ùc@ÖÉFf€Bmn m íìtP4˜‘]Ò¸ö ²Uj“ÂKC0{†C%'šÐ1!F€Îò~x§a‚*geÕ B@‡P #š> €Q²Qtýg>3Ù3Q:¦ê5±©²–¤Œ$#‡²4¥ÐúÀ5 CÖðNPî„w@<3¦…™ÉB$$B* Ü7 ,€ã8#‘ÜD93Žätúƒ78°)áÄ‘î©÷ êx?'qˆÜõ˜(=¹y]X^òÎ6´õ¬5X) ÃN±P‚¡˜ hiC±@š D„NSª½ûê á Ë0©¨ì«áâÐ2W·6µÆ÷ny¹ð@i쿜Ñ]Ï“àn}Á(>T<†áÜ,œêO¥þÈr§µ 1HBHœ¸KrPp"jvÜ'ùо.ŸÉøÛ칓- jhˆÛrµzé„¡Ì<¼N:(@ö<õµ]|RŒÂˆlD(P2œ¬ ”üK!@å93¤„# .±œ˜[ÞFÂÑfÃHÏ1‹fˆQÛfá0¢‘?í@|ñöb+Þ ÐÏUêîU÷7QCïAP |s“-P‰tå‘cfp opƒiÅéS‘'OÇA0QñcðØàl)f*Š .¦€z `§†´!C‘cHÐ*3(¡£ ŠæŽI¨Ê2^ ÏÝ€ ÀvM Ylá9á×Å%é›ÍÏ6 =¯]ì»;­ØÅC±$£Cüw èõKªM¥ˆ‡± !ë.‘ÂæB4Uà•k ‚ˆìÀ)`­Ó*£(ÃEËQn-Ò4¼o!¡Žtú®¦Ràib|:€U‹‚ßd´u®at¾›DTv8âkG4Šô¦Mg,„‰³,2RSiFªQK5’£A‹e1}]~[îTû-e‰DÜPÚ„Õ KùÔÂá JsFžç36¦ šˆƒÄèrâÞLƒõÏ×íü¬{Á8E‰Ð¬lÓ¬K¬–K&ÑÕQ/u$T)Šãé= ¹¢käÄGÿa¶À_úñïAY=|iš7ùëñWê¬?ÙÊùô[Æÿ†/Áö¼OÇ¿÷{¿§ë|yׇ^ƒ…ÙIôÖÂRÜ#á-ÂMD"Y˜˜3}jd¨0U»žŒ*ª  ûÞ©ïe ¶|ߛ㰕•{âÜ…¢Ð8WóeZ棅,-IE„‘¢JÇ÷6wíZyuÛcÏ¥´—’kµ¿ÝÚ¡Ìß9ÜäqD`ÄS1½‰ËýƒüOÕsGõý:øQGäü(×üÿÊS~{¾~‡Ýé~+0Oíÿ²Í%I‹Ad" 0ÄI†A-ÃÊš¤³^ûÂ']bB‚ÌATÙ‡ÝncÚ½™ã}½®§@.ªº#¦ýïú{3{~;ÃêÒ‡¿ë‹!ðnè8žsÇ(羊KçÄÛ»ÞxX *ðA@NHˆù<§Ø÷§Ÿê°F¿Hž»’ó»'äýÛ@ö¬Î ®º•K&Wy8Xˆ«ýº •¿ñzÎ ¨ÿçEó>/uÊøgž;j²~7Î-ÿGû¿Ìú3âb˜uò?RSûŸ¹üoAÿ±]Ø4™I«Ô^zkª`¶Áýf#pzŸ:ï{û¿A®ô(솟Ë_»ûüþ·­ÐßkmþŽ8m¾zc¨•¿Jì7ݰ1ì¸Ký´â?ËŽ××ìW¦öÐùQG¦“ÞR¾ß€Ž>*R§øõ¾”¼½öoüQU;cíûº>Ñ^Ï¥0X(ªo<`P̈»Ï¿ýÓVõp$"BB@Œ’O,ˆ žïÏW÷Ú½iicáËî»ìÕÝLÿ›î•4ìŸï؇X~‹o«Ñ÷{™ù÷`b¬ö•{n^O‡ó'm¤4Ó?Ki-Z2>^£úm^—A©ðò+è £"’*I BI>'þXÖcÿ}È †HH"pâhD%'+ãùΣ±ÛŸû¯E9çîý·àï°(† û<­æ·‹ ‰ôYT3"ƒÅtÝ¥€!útÞ÷îwB©Ñ/Çøô‹ñçÀºR…è*˜‡_Ì~ €Lÿ›ï¸Þk‹ýـ§BŸËïáÒm.$ Åt>z”kšÆn<ŒÜNôÛz=äñߘñ"‚Ÿb¼ìÎoMÚÒÔ tñ$ÃŒ¸Úe({ß|R ©âu:äQ@÷^Cã‚t÷q6ß[îÛÚ³Üõ×Ì,/µJ£ÈÕI!ãùÂúì^ý7ÎrãùÔŽhæDÐü|5Ù“‘ ‘àLˆ»? A(ü—ÌB}¢7È©‚ŒÕ2¼!üd¢=å‘üv=݇›C»ÏǹÇäTßÇÅú"ô}ïÔN÷©½„€m¼•ÿ[C'½ûr©î4ÝdôÚ‘~ <¹ÞòŸæ[½ç¨Tç‘6‚ÿLyÕ•„TÀbåòÀP=4ATÆÅF~Â(¨ÖÍ” *;ßÑ³ëø’T?Î}Iu|«¸_»†ü"¦’í Ÿ £û1©Ï@?…çÿ½_°Æy»¾Ù¿y8IÚùü‚ÿûªg·ê—‡WàYp8ú*®…‰D@X\cRºäç*E •Ç\bS(鶃ëÂÊèø~s6‘ÜMÁꈙȼŠ"0¢ÏNí†n·ÑÃ&poG|(³[u2A4¹bw9£U¸³º‡za’ELø95tDwOÜnMgÅp…ÒAŵ ôΈF™Jýxy=¹ý;ÂŒdþçl5B£\OSÔÕy…ŠîZ¹;í¿ÛáPgö|9 ÷Ëc†dÖuHÄCa+.zp`xRòC6º‘= aèE…}Š™ÆÖ¾j¨×`dn™…‰Ä/°*¬‡ÂÒ•óY‚Ôªiè ²ÄÏìK§x6¹‚™½ÝNÀ¹X4{2é6d “EEï0»¸Bnš|WO‘®„î‘–ï^z´Ž‚³4«ÃWûØÑÆÍ±÷c]ƒÝÑÃxÍ\Àª¯Úö²¯f<‡þu_C7ÑôH<ßÏù8ÿ#~º£ÁD.ï¬%2aAùR™6-ªóÄ\SP~<°Ì|bàšA/’H¡«k‹"‚pT óSÁ•8{Ö­û36`vÞê6yšõÔMZÿ¢DNÅì|í«HQÿ¿é/£òQé2­„Ä,é0R+aÊAì?«äs_'³ú_sïýÔË~®°æg}÷ü®\geð}¿ùwŽQµý¿H <ÂóÖüé`, ½ ×(…‡8üËT„ˆ¤‰ÁeË›¢@HÌ6{ÿ÷£W¾Øåß@SÂ9_‘þ³ûå?#ïô„ÞÙý綉뻪9dDCö4Ÿ›Þ(ÔLŒº§ó?yU¯ð*Îïú…ÃDéè–Â=ä”»«³‰Cdå?.š='*ùñ>ïç$’¨ÀA'?h„Ò0ë‹§_©ÓÍŸ¼»ý7ØýÙýí±øœ±Ç¾.ºº—ýЙ+2°­mjP¨=÷¿xS`Óìûo¯„ÿŒa× ^ÀóA§…à ÊPŸ· H QåÆ{úüL›$tò;1]µ®AdÐUTá¢ÖÛñ-µ­Ûx¤BŒ3Cô¿í|Zƒ÷./ü.£iÙ÷ÇêOqØ]ënëKÿùwò€\@Z”JÄ !œño>åùß>î‹Øx¸}wºÆ#ÁüüÌýNÁ;¢}½Àì‹ìZ0À{EŸÑŽï]µø:ïWŒá±ÈHI$ H²t¨Što礪þ€²%‚ø)ínÿ;Äå/Äõ´ô–2Ie»ò5£ÿËjŠy¯ÙË?ø~³û/¿Òà5ò`¥ H*Òu4¢ù=žÔî·DãC­ÊÊ;ÕCÖ÷ÜW\½m}ß…ÇL(]1a®âIüz«]kíò4ÝõFl›»·œ÷¼ÓPÂÉ™™f—šÈf¬í™9Ÿxþéâñ8¡ä`Ϊó˜ïÐøÿˤÎ쵎hæ}«Qª59¸tµ©Ö‰üBEý•Rw•£…ßVUè €¢&Ëd¢®ÒÿÏÛá0¡…“(ø­·å}úÑ}rÎþ“Òÿï§@ú®÷Ôþõè/€û"%œJ×Õú׿íµ/â/‹î/`1°ÊBÝ?ØyŽx8IGú”ˆsê¼\+¢‚!@áU}üEÉÞL…„h_æöΫåWãæy¯ü¾>n^Ç[œÝ¼€ˆSèn ©àë7öA¸BØpÁ%DA eú/¸Ý|ªÒþ¥kô7oƒl]H#Ñ[ûCÌÍüŠ+É«žå¨ôOŸ÷Ìþâªú·Ê a¦–1 ÷•ÿ4ðŸ¬ûÊ’ ‚i ?»ÜþOÓ¬ß]æ/-ü[ŽúåºÌ ýáõæjˆçtÍ€"’,ÓÿJ:9MZ§l-©>µŸcû>?“¹:ªR 'ö¥ó$¢ qË›¬úÅ-‹üÙ&ÑO÷ñÀòu­hs R#…bOˆl;£±õ·÷k4ŒOMoç%ïºà2/¿aš  xLéP->£V´òÐ?Îî{¼>Þù‚n¸³º=#úß}«V;þ³kPÓªì±n̦SÎÿ6ζZðè4#QA ØÀ9TZJ¡J^ÕTAJ£Ðotp¸U.¹¡ ÈšI2"ï\9J~›ý׳ðºýgñ¾ zu¡Ôèhhfeô®?Mp#h€WõRlYýX¹ÿWÎï>l%¤I€Õ3"‹òSE{ (ƒ¿'Ôôöl4 ˆ=e‹…€0 Šcb«üõ”Cîÿµ_ÿ^qßÒ%‘$„ $d$ Ò •]òІû÷w>ó}kÅ÷r e@SUY͙ٚÉl¾'úàá<6¿ð;Ë¡Q: ùÎTóļο£˜X$k¡å1ú{Ár ˆoós!#$#$’#²¯ÿ|÷Âì9îóòôWoÎ ¿ýýÅñ8¾/Áüÿ­ƒÒ¹S‡Þ•gT¡?Ûÿçë ]ý;æúœ%J0aA¸L%—£ÿj¾ª¥@H !2‘¤>Çú}OëWÿqtFÁúöSíE^õµ޲ë¤ò?`³1Ô_lz4±ÉK)™ ­¡ƒåëu¿Ç‡ãk]üËÆ¦¹qÍ^µXÕ`‡°à_d»9€©ñÐÔÐßÚ‚¢!@Õ¨nÒxC-gJ ¥8|Kÿ/ú• ˜%JL®ïþœgs¤Ú,Á‰IsqËN| ŠþN!2Ûh”.`ø_¹µX.¡1¸]Æ¡a~õq"ÕÈÈ Õ[Gš× ‘×éôfÖ\Ôÿ·ÛÓ,1_GåkwÝfJ»ðf‰]4­nFÖ÷û~äá¬*Ê“(_:æ;ØÏ÷gZÙy™Dôå[”¤$ó~ÿÂÍUÐÉ[-‘Oú ­7Úd@^ÓÆÌ¶ŒË­Ã­+¢ì'ð¶üõ#ã˜Cö?« V~˜USêÕXZ ýÝž¾ÒÅ0š±EíÄ¥ÿ_òÙßuú.Ž_¥P.ZêR°óð%­i5O“ƒ«ÕÒë°Å•ÒTðì;x¬_ƒk¥ MÇ>ØH?š#b2RºsàÔǘÂ:îŸvyW¥Š‡[´×¬KEÜ01KdJKI}Ó l°mI“ìûïØ±™å³H»N‡#Õ£àà¦Ô•/ê]¥ý¹(e~¤6rߣ nû¯Ðç"»rÍÇËM³†Ìôœ®ÖŠÖˆüãйSZ69Ùá›Åœ:}ä·@D9ÓO7EìÕ][«Ç¡<´ÀXÕo3ô>7yü5Ï´JáËçw~UuºÇát.™\%Ðí]f’™ð™Q€…yÚa”fb¶v¼WTlCf¤¸¦µ/ü]ÍÜãÛ>ü|\ÙlÖŽÆÆe|}Hi¶ðšÙF<ަf޶JVÛÜrTÐì>ÏŒ/ÛÓ¥¶)/¨Ú嵘>ám‡Ê@Ñû{n„í¢3¡s;I{M=>Êš;Ÿ¾t³Q`UƒwÝ/»Ï.ðã}¸«‘H:&C¥MÐRÔ³b GÕÄìŸûæú|rÄãÿ¯¼š½j¨ÛiÂl8ƒ¾Ó¢ŒŽÃNOÉå x…ZÅjŽ­ WˆEºýôÊ¢ó³Cé÷ž;ÿ¼¥v΋£3ßr-kWED‹3îÄ„”®.ÎcüÖd)9©±ÊcÁÔÒþ‘¹ wü;d\ö ÍžÕ_ÄE/Y'¼öŸV‚¯?çbäô+«¸P”=óâféèóR9-Ã¸Ä •aú©Žóusp °Ä+Éø‘8±.K}d íÀ²®gº·œñês³Èï¾Aé\ÈÅ?eŒmÒVÛÛ®eQ¥¼”[o~¿Wç‹é¼Þ¸5.¦«Ó\a‚ Þw´.…E‘$¯®îhAè§tÉxèÔˆt´²‹\üyë/¸lˆÝqx›5Ômºì´Qv H9Ä0Daâ¢\ú½Ð+›ÜsÁ¯G&'t´jö3:Ö£žM¹—Á ?¥öî¼û@of:EqM®Ž`uF»DvÉ’/ ³œóž¸H’6¶&¸Ž;'ÍÇYá‰ON§§Ô2}´³·E'dWS'© –÷’åkÙ¤f ‹sÚB±" Þø=d¤aÄÊn“뎇cs®„t. ß—IÏ%Ó{GGFb;•í0Gƒç…^EV“æEF CÅ=Œs‰í›VFð&A®5ñ£¦.{×tİ®{¨±wØÒ:ÍuÔt- ’Ró ôvrsk}x•´:à˜—cÑøÐê_qëÏúi¹®ïaxûû¨è‘Ó䆺ýEÅd?%•Ó¥p4°!jüüÌ•„ÂÒBK”A[lÊM]Îi¥I„©kç&®×ˆÂ¤|›žøˆG¡¨ç»·}f{ÙôŠÍnÇj‚¼õ)Uv09•~SÌtÐú¾mÇ%~)¡½óݹ˾Ø"Pø^…¦g?mSTMÉ⇦=ÚxøÈ¶å3>÷ò§èúÍçåÔT$•Óƒ~Ì_µ œ;k}l3)Ò˜gѦÛ{eóv%˜!YXˆ{P:ÖCfè× »;Ý!U¹Û¸ÖÔµóŒÒÄ±Æ @ÔQꢌ,³^É·ÙÚàTL[,äng•Ó$A UÆj-jìiÖÐÛè;8¢WÀ±<Jch ÈÒ3i(ˆÒ$árø*NKTRµÁùž^Ö@³Ñ,žÅÅŽ%±M#I–ô!ž¤]e*ýM85¬W,“”Ú!åjÌ  œ‡'6–÷88ÓúÁëìâȹÊdçúµ ÖÓoÝ­ËìœåT0æÀ®ã™à_PJ29¹b@4ª}Œ™9Ë­5ñ¶È…¡A»qž†E‡6–§›v¬Óˆ7Õu1@ $ß|»ýÍÔcpI³š·ÜÕoìó>žûûŸÆÇèžÐûwÿ28þ´ßú˜³²‡ð~Ðß~nñöÜõ’ë—û3Ü`¾¸“©^ŸdÐ;‘Õú¤ôvwAS8+u¢,XAy\wÃwÈ6€o÷³¡ÎŠ‘€è"Ô#0°â1ÂýœŠ‘uØ.ß±óÝd *ÄÚÚK„)ŠRPö§FÐå2õáÇ‹™EŠ~kÍ2k““…®ÀÇÒÐ5#   ÀVÎUò:õРxÏKe¢ $M#¬,ZBŽþ„žpÿ»ÄÍÐ!,$ '+ú<׈]øTP;Nä?×â›Ï·ó>Çûm{³àb÷þž®ÿS·«uL‚I'¸¢{ÊÝPàÚ53«” ‚Èð˜r<ϵŮ{j(}IcäŠ7aʄД Q ²DT‹þ=³T¸?ÈóXuÇû9ŸÃgÀÄŠ¿ô~°ô¾]_¢š_½D>­Q¿ƒûõÔŽò,b7 â*QVø¶ºë÷û<5Åý=Wÿ…ãH**"3Y]õŸü»æóÓ ƒ¸8N¦Â–>´ºI! ²Ä2Míª©¿.½½ZÛóÝé—„‘!V"ü_S Ÿ±ÿÛ…D·Ë°T<ÌG(ÉÚÕY¦¿Â›*BÓà“²¸ë‰É„Òw_’îoÃ챦[mäϦ*Ü–¸ƒÖ˜y,j ™*‚T’ƒ!FI×ÑdCÎ\XåCïñÚ¯Êwº¬ŠåÚþäëêGËö»ø¿WÅ1–“/Ók n:iøiD:péâyüxi‹ !xcDP¿)t¾ãÕ[¯EÛ“1$•&Ò" •9zò×ó2ªÄž((ó!ÊÏyäiCÿ°ºöþçâgýNP†Ê¢;ð,ƒ•*5‘µQç>MYiñD¬ БȟiݽkVµÿO÷?›ûÇä}kög݈_úT@›£r˜q(Æ¿¯œÁ†b¨/¿yÏþWÄ¢P•Ú­à}ú§úW\ŸÑòÜKðÖ`‡ÀâsiW£Ý•OPt"OÙw¿·Üÿáré±¾>ÓÊçþMÁ5<1$L)$ÁEÑÍ«²ÎªC,@ˆwUQ ãæV©ôø‹$õ6‡¤S"}yÓƒÙy¨z^¡h¹.gȇ ©o”ü[Œ–C@Ï3ésº6÷“‰xRŸÝ_ê töDÙ—÷‘Özïê¡;°Nâ©Ø& ÎdyWœäl´§Æ·Ó°'zÀlÏУ„²½W5kýå„" 0b޵vÌÒcg,·c·yÖ47„M³X%¨Ü_Ûþ¨ ¬ž1ž_à•§)ËSÓ#KóÈÝm¸XÄØÞâ·ó>ÌhÏc¯Ø-Í=áÊŸñŸòy¿ÚÛli÷u¤{c%–„1À­Â÷j{ˆ…ÃÜ«I§¬ZêPƒÏTHíìж5ËkKf/[Úí!ç¾#$Œ"ÉF¢…ÏŠ•G_ ¬E°Q±¡‚+´VßàfÄ€Ñ~?âÖ× bâ|ÏÿL» ~þ ‰Æ= ¾<ýGÓ?ýóä¹ò+¯ÁuÀ†Q\g’ Ç×{—y¹‡|a[|ÛñpTÐR,ü7\ÄA„H²$ߨx{óðxw*î uD3léG¨¨›D™¥BHÂ1 šùUr½ªrMR¥óßmû'ìÿ‘ý7ÍôýÍ>~¸’IDÁ„"HK•Ž´=¯Ñõ>>ÒáVÙA{;‹”[ ÚvÝEQ éø>~}û´’H€|ÛUu¦Úü/¯ LQ"gu_{½vÿßíý^E ¤fÀißwóÒþzk‘MœœÍöÄ ‹ e"[oÆÝåí¶nlJ4_âÝõ=ÚM"‡ïYº`“ö( ~=î·Øw–xŸG ÂíF+z?;~eY†i I$¬ûøÀ3”,!'ªçë!‚>ª¥èa}þ>i?åtÅ9†þŸ>Ùç㈞ӱó®¡û„‹mn5ö†<”)LßS9]Üóó'}ïô:aì\Õâó¥î<ß™y_}73Ö÷ ÿf‹ëDD¹/ @0>>m´ùwqä/íøA;ˆ¢H €È$ùÔÔ’N*n>í*¢;Á P¡,‘0Þ¶«üíï"ah…)ÔÿÙuÔ$„‹$cø†N|~ÇY:¢8n¸Tí}÷EÝe ¢ä1fYD-ò'Ìê}ŸÏõ~ËêdÄ‘¬l–+(“B¾–Ö»ô>éHÉcFšï—\<®BL•ÈÚŠRt§Kî>]”K(íö…€[<® Tq1Ó# H‡´…”~ó.ò´Ñ‘ ¯:ùÅnps»ŽûNv9Èˤ„’BBl˜ˆ?Jj¼ôô—]¸‚4ëù[_Cj­|ÿFþÃfÂ'¶·~êÕy’ôK”‘H/Åþ.¿K" <«ã'NúZ_³²‹TTF¹ õ›ß«ôê?Gç0Â|ÿJ>kb¾›¥¢®KÕxOôf7Ýt§q=%ù)áj|Þ“_ÌýMšm"Öh dÑMŒ)ÙUK«IoÚà.Å/¿yø…íìÇýÍ1éëÓ39óø~* ¼VA!CýÏßÁ," èÍd„‰ÒË·®m¨_á¸j…¾ìúþß”š3Á•$Å¢ $a•íJ?½H— %EDI †+•BÐpôºÚzÈ(öŸß±åå2: j‰¼!Í„’X E(KøÎÜÛcmÌŠÖOé®»ò®V§áÿ?ëR7Pª•ü)=Vû©¸ªšÜ7@o¡óÌkIfÊ—k[ªÜÁ±°BZ=/[½ÝOèã{»ñ0ýß§ÑA:y•œçÉ„µÔ,SE2ümù«×¢ dA¢¤!¡PûÿÄz^g¯||ÛmìXÚãù‚DËŠe 1úÿ‚í| Ql¤oÚ_ã¯5°bÕ%4‹XŠüFšß˜vÜ­W½"rω8(€œœåÄ.¾Â¶0ˆÝÖ¯øÿà.µä˜±jcf,Y 0†Ú hÊ6 i)…dGÞW-¨XÚ0d3,Qm¦)Lh¨¨ŒLM‘mRÅŠŒd­7ËjšÛvŠŠK(F™¶Ù´m£V¦ѱRJ¬ÛRRgúRÝ6Ú–Ñllk#m©”Ûfª–-Ã-TÚ¢M¢m6´ÚÙ[M¢Ú¦«#kJÑ¡ªÍ´“VÍ´Z‘Z¡µ¦’ªÊÔ?6Õ«ª³U¦Ú’iH HAŠ„T`‰B ÅM¶Í¬SV¥m6µ6ÖL¨ÛZQkHªÍm)-¬­¢ÑH5T­J5lÖ×üë”+ X(E‚„¡€jÔµa%µCZ’V´­‰ZËiµR¶UeTÖ‚(Tˆ¤ Ò(°¶V¤­©¶ËZmnU¢¤ŒA#H*ÀV(D"ŒAb°P ¬ uꪒ¤a€þ?¡íwÃôxjäxG±Øyü9U}›CÁH/šQ$µ¤¿sKN4tvý¥îIJxáÍãw£`|Ü7¿Z dïÞi㢣³Ÿ”ÝU<Áa!Q™õç'ÎPD>øˆEÚ¿Âj†qú1•;ÇŸ•í@[ƒëx÷Ш|Ÿ/Úö“Üàñ£í}ÇOè_pR#h™ÈfFB2èQ ¤£Ün&e{T¨y!íÎI9­h~7ØW²=ßýG!ð \Œš»+³3°ˆ;m°AL«6Ú[RÕ•©«e­m0‚¬ˆ,‚¬ˆŒ‰Š6Ú–ÚjÙµ³jÊ×ç… °FR 0°*4+‚E*б‘U€µiVm¬Ö½íª«½[MZ*°F"‘SÛüª,ÀHÁRke²Kjš²$ÕSj‚±("ÀX«b¡Š$‚¤AŠ„¹è`­½émJ«ý;í»{µŠEYm¥´­•e[-_îVÒÙZ•€$Š„ˆ,@‚ V R¬¶Êß}—U¥h•RÔÛi[®Õ»jVÍTÛRÙ[*–©¶)µb¦´5ioÿ[«fXD‚±Cèƒ(qgƒðTW…p)ú¿ÑÅ‘ØmÕÙV DH²5›MT¶j¥S+hÔªZ¥+fÙµ™«,ÚÊ›e·Û7mMom.¶ËaµšfV³l¿2éZlµ––³Sm5•³^ֵݕe6¦²ÖYMe”­fÒ¬Ù¶e²Ò©Œ¨¶‘-𕆕L4XÖ°×ü^ÖÚõ·¥²¿,ºÙ6©-L¶ZY´bÖ“FÓ~OµºS)úI»fYfÚeb¬¤kBB"¿Ì(8ÊÉžÏr ‹¯¾þ› j×Ñú5%±j(¤ÔšÒm”üîÛý^½1¶ÛÔ”†4•¨±¯Ÿ„Zò¬Z w¶««Ó H§ €2$ © aÂsZ^DzÀ¸Ý¥o«*±U¶RARFA„@¨=!Òü’ã¡©xƒ|€ûé†óÑ^©vAÔ p$Pé&ö_Œû÷WÉ­bÕ â¶ºªæþ:[q+IòøÚï6+´Qª1WåÿöïÀ~ òŸgô5ó«QX2•hA EÒ‚ro+ÿ7çÜóôþò¸K(û1†\#$© )Rá‚´6€2 ¹ "¥*…#b´‰M 6 ¢6Ç›k˜ÕÅíö¶©[¡øÎþK»í_iþ|?—øÿyª$è#úºUŸ·qûu cýeÁrš*ýóSÒ~áÜž¾‹N¶¦ëž“ÙÓ{küý¿áåç{Öª1«§¤ƒFß”D,îŒßå¤VúW?H\Ú/—îÔ|‚ñO¾ûµ¿ãÏo…3|ÏqO–ö¿ôÒ>ëŸbpð…XFóÐ'žI ø­‚ëµE[Ùè (?b¤#HªˆìÃhE @ÐRP ¼Sr]‘@! .€r% –D"¥~¶XPÐÀK¤’!*¿þ€þ½—Gp wKôÏâ˜Eqˆx°,…‰”Qü0®ê€H©ŸT¤º]d¨²HT@‡÷PÔPŸ»ï¾È]$Aa?J*t}k¸£´½/Pžò¨'‰ˆAC”C”°P–"’ JˆO„P5a»½¿Çö']à{,8’O[* H$„ˆH€~´Eì÷Ý{Å^{ï·Ö³ÏÈ>ãµ+ޝ¨¦¦VR­T©j%K)þ,]Rñ%ÔJ«Uø½0o¾¥¹âtÍÿsL­ÔïXø{»ª¿7ž®†óëýŸŠse(/¿`ŒƒÆåóL`èŸ×SçúÆÿ¹Ý·Öçzµ ©Ïçë5TÊTPC›«`Kl lÔêõ€úÔoÔ.¤½ ü3‘üyûÀN@M Vå‡\“ô™„g}ߨwÎ0þ>ú{Bþ0É÷±g„ä¯Ùc̈ö=Uìë…r/¶WíÛìVµ¯Øì*¢=EŽOú “_˜Ü¢úUüå²<ÉnÏ㨠õ¡ û “7Zòçò ªÇç¹l€²!ÐØØ ØØHÀ¾Óå~(÷Gy#ŽFy0ÊCP‚òHØ=’Ëáù8JE¯1ë/ªEÔ?塬_­hv2þ£]…³>’o³¿?ÊP€ò@”¢ü­ýý•¿EôsÎÂùÑ8?çy|Æù¢®'½Pû ³[վ﮿½Ü_½Qîƒ2¯oíÇïe÷·ÚÉö;ŠªŸõQÏ·¢Ž§Â®»ß:ÞŠjßßµkì(êúU˜=¼>ýÓvfÏ÷Šã7ÛU€=¼~ëºU}ßjWaד¿º®~/ûx>õz÷w¯gªv«E½¯ëïß¶·;‹ë¾íþV{ÿ[îoŠË¾oµc†и˜ì)¢|ÝWµg†)õg°Ý²ÛÎoµGè/D/ߨ·ˆúÄ}å7úÍúÿ­þý§ô}ïyÆzþ©çŽo¾.ü]}EÕ£ö÷ô÷}ë+®û<ÖS¨Ü¿+¿¹&(0þ{zŠM®Š<ñþñ/ÊW•SØ{×Bå±.£¼¢¶+TnAÇ Ð_=ú«Z–PF{Ž_AÇy\:Ï :þŸ‹ë“¤óÆ*õ 9?º¨ç :®Z޼±Œ¨7çÇáø8c”¨ ê«~×âãã!g<ÚOô=LµþxœŸ öÇö¸°¹ªrƇÿMyE•£VDyÈ)¨}Aú¾*‡ÿyy¢ÚŸ—« ÚO ÿ#NRSAÔŸ‚óSÿx|äLÂù)\_¢ÒNM¥½J»ÉjßÖ~–)õf…þ¹¼É¨?õ&³ßª¯½³¾³ÞYߦw–,g£ýlïc‡)ËÿÞvýU{ Ï4ôö™BÏtÔ›)û6»Ù¾¿l¤hvÙYñØQ˜Þ獵ùsBÿ³|žoWC¡¯˜ôÌQñë+ù’?o'ìSm_€]ªõæ°?ÙóÓ`Ï4ÈÆ~ḩç§ãütø=õf2¢þLÔŸ ;gBÿlFØ1òx<³öo:êOý>úgBÎLÖ[ˆ=s wäÎQ±¯Ðy]ˆÝ_½o@=~ÏôOû5r OE]ǾÕîb³·¨vªØ÷Ýí(@ÿt ;¸¬bÏWýõ½í+À®éÆß(?ô?Ë™Žz<¯‹:žùºXd¿ÙŽBôóü,La÷ E¿…ÙÁëÄ_µ§0;ŠM/üšmZD; ÐÏëã·®wÚUT{ °C\_þi{ °C\/pü¯^Tí+²]Ù½â»@x1ÙYˆ}<Ï µrf„~_{‹lßj¯ŸÅeWQ¯WÿšÞ¿©ï[¯Çߪ§¨×÷¢Êû«÷ÅÕÿªzŠK~¡òBÿ¦ÝÈýÞ÷éÅ.¿¹õúQ¾ï}ýd=…É÷oŒß*ÿ;Ë-ìýê{²o–_\rUä‰÷²¿&ÿ»Éáö\ÿ6yEmWèù‚ô¤¿ ÿ ò·ÿ Œ›jYöçeç…®‡]_=wµ^ø7Ö+ì|AÇUËŒð{.ì ùsQ.êÍE=ñý†QCUòÄ÷0Õrhå|TÏMíÿ1/î[ÑXí±|Q½¬¥‚õTð[ùoEEUžÜ_ÅÖÿ¶ùA°ÝŠ~pìô/£f1£V1£öwBbBÝ"¢ž 2ï­ ¾[W *ßíßÂ?8ÒÿðOÑø¿%ÿ.öTû/CÉ?‹½ÔþKPòcboµ%?& þ݆’ÿ|¼%ÿ](xyÿ-(ùï@ÁÇûÑPòß…‚—÷£¡äßAÁ¯+n”ü;(øuÅ’âAÁŸ+n”ü³(xuÅ’Ÿ®¸PR¼(xtÅ…’âAÁŸû^(ù¾h¢ö7Ѹˆ()ÃÿG¨€Æ ¤ ÿsü·‚и”‚áÿ®04."JŠˆáÿNUòß 8çUùn_ñÞ AÉ_Äðï‹‚7÷½Ðø;£ä1üÏQðßTѸ”¨`ø±PÞcøƯøpߊÆÅ„’Ã,¼» P”ü`þÏ¢àÕ7ÿÃ(ù‡0üï¡àÉ @Øóß Ç¿â»ýS¨ñ_‚Æÿ?EÓÿ2”ü úƒcøwFÙÓÕ~0Ôø—ÑøAÓ %?†þ þ_‚²ïGEÿ%4ý‡QRLZÌþ¡¬xPðçŠ 5þ!4.f4ý‡PRLZÌþQV¼(xtß5¾3'4ý›()"†‚á ìÏQðßTQ£4.M @IZ†‚²oCÁ‹+*j AÓP¢‚ð›ùnsaÇ\È™‹z_ñÝeÄBùoŒÆ © æëWSá¹ >óÀp\ðÀ˜ç£d^*ÿ¢¨ü þ!UÞ€1c¾þ¾ ç'öÂqÎÿã¼ίãüþÍy-üý™¿kr æ}=ù{çŒ0Æy ÿâ÷¢œ÷ÁߥÇùû¿7Žöœ_ÇyüÝš¿³òw4~ÏÊÏ|ŸÃyœ'~'8Èßßx_2~^äû^÷8¿—óÕT÷±æï¾ü½ŽßûŠ} O𠜟Ëùfœ—1íù;2?‡ñ} ¯“¼Îð¼â.C™¿»ó÷9~ïÊÏe|ßÁ×E8oŽò2Í|\yü=߇òóÕLnãæhyË!gìæï_ü>Ó~-3A}œ_!ÍG –›‡ó¨·ö[˜ç£eΣþ ”- Çv®„¾åh·Ç- Ïö¯„>+uø9Ë+PÏvXBî*5´ÓÈÇÕðgê-b»aŸ%ô¬‚+M´ƒŸÖ°“yÉ `ï"à*豂žÕðßvÚ ~ÃÓxì\\ ùÖðß~­…=óPÏ ~-ZÜ_ ;ÖAÞ|Ô3ÃñÅ@ø»~®ƒ’y¨?Ö ýZ”×Á> äÛ¾Åðw­ êÁ.É*Ô«Üúз. õP¶…}¶8n7õ!o]8ê» ^àIÔ‡vðo1ê¯Åñuh?lá¿-êÙÁ»·ùhò|صX–kà÷ZôÃ:—Až!ð:䡞½˰g¾q>š— ÞRàrØký°g­úá¯$z!Çòíûò@.Çå£ÃØa ;€K g)ü]ù«¡×:öhÂØ)ÝÄÛòm¡Ïíí!מË2Øc„¿óqÞ ¸þ-…}Ë`ïrÔ·€]V³vYGÀ^´_ $è ÚÛ¢-ì±Ãx³Ç8¶çrìÄ8uÀ8t„¼ùo\;—jÂnsØ {W@Ÿì\©–«Pß íWCž5꯽ka¿D{laŸ-ìµCØ3æÁ~Èw€=Žã;çã¸p‰þÃØm»V¢ý*œ·‚œÕ°Óz×@ïZÈ• Ÿ%(Ûâ¼-êÛažÙcž:`ž:`¾9¢½#ƹ#ì1. …Ý&°ÇW@¾p¥ìG=+ø»vÙ¨Á~øµþKÐNÂö ìˆöŽˆƒæÅBÈY¹Ká¯%Ž¯Ô„8n%…Ðg£; -ü‘`}” ž#ÊŽ¿ŽðÓ þ9…å#ç£XBîJc臟V¡Ð=6ðo ìZ ¹ØíˆãŽˆ—Æ£Ƨ3ôp^"ç§ð÷LKÈ_ ;WÁ>+Ø»úl o Ú­ƒ/纠ì"ÊPãs=üXo‚öÐÃy¢œ'äŒöÎXg\°Î¸`¸àøzø³z×c^®Ç8åN¼ÞÃW Ž»ÂoWsØòÒØ \,€¶è[)ì„=vðÓòía¿ô: ¾âæh „'Èwe„?®¯®æh·T;+`¿ôÙ¡ì!Ïö9`\8@ž£ñuÄÏPGÙ z'>¾jcŠú(KÑRô“ô2ú¼á‡ƇO䕲(Ká‡ý-åùóòØ/Œ Œ_¬?¾ðÏ—Ûã¸t4ê£ÿ}+a¿/âê‹þõ…¾ˆ³/úÉ~û†á¯ì÷cý°Ûúý Çqô–¡Þm‡=~Ðë‡øøá¼7Æ»1Ž«á—Ÿ‘þ˜oÞˆ¿7ƽúÛóÌýä…v˜Oþ“Ññ÷Æxõ~çþ˜Gþ¦@ÖÌC;øï¯œ„|Ä×q°Ã8´ƒ?šÀPÈC?ùcÞúC_€úlQßíí`·=Ú;`\:Ànô§?ÆUâ€úvhg'ƒ<ô§ƒ1Úcœ þ{0ÏíPßñ±7ÅyŒ‡È Àú}ˆS€:ñ €/ˆO ì·Cü| ×ã=ã%€õ#.°+P?±ÎÛA®ôûcóG{¶ñb<bý „= ;ÄÁë“ìóáy ÿ}9næ@ÌËø€qÀq̓Œ³@؈u:vÊ ñôƺæ|à§/Ï'ÄÕ~ùãzíõ @ˆ~ àqÿ±^ÂÏ@¬°;q ÂøðF?xcþøÀOøï‹¸úÂ?ߨ ¿üá¿?îü±ÞÀþs ø¨ D?b½ „?7Aê@¬×Þè/5 úÁýã‹ñâ ÿ}±.ùÁ?øá‡uÂýá~óǸô‡Ÿð/q€þôW ®sð/ã2ú‚Œèoô«Ö÷A¿ù¢?|±ÎøÁ?øã‡õÃý㯠”áoü @\ 7ý?ó`ôa}‚¿A¡°ëŽû |1^|1ný0_üà‡Úû¡_üÑ_þ˜'þð3~ ÿƒ°ÎÁþ ¬_AðÏã×ç}eУ„]~hç?ý±îúc^øÃîØ ¬ÿAlÖŠج–R¾îb¼ûa<ú¡¾æ¥?Ư?ƹ?ì Â:;‚1.‚Ñ^ðCªÄ:á‹që‡ñég„ˆ“Žû`ô…_ôƒ/ìõƒ½~ðß/þ`ÜûÃ~ÄÙv`<`>A~ÆOû~ ʃ@ô_0ôc~óu ëo·@^¿Ÿˆ€>8ïƒuÉz|Ñ_¾°Ûvû¡ü0ïü1ýù~:»ŒÐ€ñˆñˆ~ ”ù¾ã1öa>q¿…Q/˜× ì Æõ1íB 'ãOЏzó}âáƒú>2ôäûbøbœùÂO?øé‡þôƒŸþê@~~B;Ø€y»01ŽÑï˜ßÜ×A°+ëNú9ý„zÁXgƒùú;ƒÃЂñ;}4€ëƒõÛò|ù~ ãÐ~ùÁ/èÀ< €ž€øñˆþ Ä:ˆør`\Ao)ý„~ B½`^ÿC°/ë£úÍí}0¯}ÑÎóÇãÇ—ý€]/ê@øˆñˆ~ „ŸùÍùAX_ƒx݆Ÿ!<^±Þ…ðú¿}PßóÒW(†Á>¬X×Ñÿæ@ôK üÂ| ‚¼ Ä!þÁÈÁúÂÇ1.|Pß'öàzà‹ñæËÏ¥XÇ1Ÿ1ÞawÆÚ¡_ƒx|†a_ÿ'oc )¯_¼ÞAŽÆ«/Ö!_Ìû@Œë@Œ›@¬A|Ÿ‚ù{Cø>ãoì—â¼·:ãÄñ÷†o^oBðÃóßóÏã—×yŒûØ’ýj@̯ Þ|½æù 9¾è/_)äÈ€èŸ àÇ\?6`½Ü ļڀñºã}ƒ&ñt7†á8úuüuC¿¹CŽ;úÉþo€½ПÍá/ÿžÿ~üp‡~w 0í1/6`<–G»–@M ÿŽúÇ ãÍv»#~L€XïÕÑŽ'K È¿§ãf ļq˃<øç}°noÀ:¿ã§ä´j³\Ì_·PÔ‡ž 8¾!>©ÄsCù«ßKc}õ€€@Ž÷Ÿêþ–êï?qÿ°ªü¹¢þ.óç â×ýU^]/”U¢Ê_ý~ʪûÙ«îÏ>å¯öýFYukÕ}¡‡ üÕ~Ç(«î󫺟® Ê_íWž_í;‹ó_í#‹ó#qþ«}^q^uÖÑ8_ྪ8?ç™7(ö[Åù‚ö]ýjŸUœ‡óãqþ«}Dqþ«ý?q¾Àý=qþ«};q^ußÊÉ8ÿÕ~ˆ8ÿÕþ}8ÿÕþu8?ç¿Ú‡ç ÜNˆz_í÷ äv²|üj&´ÿj ´WÝOæ«ýQо¸§¼°ßÓýНŽößú»®÷w‘ç ýW¿Šö‚Gö"¿í äU£ý<´/Œ÷)~í™Çü6ægÍG{æ11oˆy8Ì_á,ó\™ÇÊü:æ·1ŸŒùYK¡ŸyBÌËá|kÎOæ|]ÎKåΧã|7ÎOcž1ó…™Ì|_æõ2o—y¸ÌOd~ óð–C?ó˜gÅyÜ+ Ÿów9_•ó99?’ó9ÿóó˜ÏÌó6˜7Á¼ÎË_ ýœ‡Í¼oæu¯‚~æ]3šùŽÌdþóߘ‡Æ<0æ]1¿‰y$Ìã`ó8_žó™_Î|qæ[A?óH™É7óª™Ï¼ú™_Ë3ó€™O˼Tæ…2?“ù‘Ìcbód˜/¼æ ðþ¼oï À¼æõ¯ƒ~æÝ3O^ðÕ¡_ð¯a‡àÿÂÁc…]Ì·|%¼O¼¼|¼à} x_Þw€÷à}˜ÇÏ|zæ±3?œyÕÌOfž/ól™?Åü"æÙ0ŸDð+à¿Èû‡ÿb¿ø/ö9€ÿbø/øõð_ð½á?ó›Ïþ3¿ƒùÌ;àü6ÎKã}x_Þo÷Mà}x¿æù3žyçÌß<#ø/ø%ð_ðà¿È³ƒÿ"¯ þs¾çyñ¾b?øÏû0ð~vðŸùýÌ‹g~9ó ˜ïÃüæ0/ƒùœÈù{œwÇys¼/…Ø_þ‹}à¿Øgþ ¾ ü<ø/øðŸóü8O÷±ûNÀ±ïüûÀæ71χy2Ì?±‡ÿÌÃàý,x_ ÞÏ÷Ià}oþ þü<ø/x%ð_äCÂÞ¿BìÿÅ~ð_ðÖà¿à+ÁÁ£ÿœÇÉy—¼ïóÀû$ð¾Ìd^óÀ˜Å|"ÁÓÿ¼_„Øoþ‹}à¿àcÂGø/xfð_ð•à¿àßÀ±/üûÀæË3ï“yÌïc>óº˜Å|#æùð¾ ¼ßï7 ö€ÿ‚7 ÿßþ Þüü+øÏû(ˆ} à¿àùÃÁ†ÿNð_ð:á?óó˜§ÆüünøÏ¼eæ÷2ßÕþ3o‘÷/àý˜çÏb¿ø/øòð_ðÐá¿àWÃÁË…ÿb?ø/x÷ð_ðÙá?ó´™ÏÌü^ÞO€÷`¾?ó÷™oϼxÁG‡ÿ¼€Øþ ~>üç}Ä>ð_ðëá¿àñÃæó Þ=ügþ½àÃÃæÅ þ9ügºàoÃæq ~3üüUøÏü^Ág…ÿÌ÷üVø/x•ð_ðAá¿à3ÂÁ»„ÿ‚gÿ™)xð_ðá?ó!/þ Þüg¾¢àÂÁïƒÿ‚ÿ™'Xì¼?ø/¾ËÁÁ„ÿ‚—ÿÅwAø/ø‚ðŸùnðŸù|ÌÓãï¨ü”¿[òwFæºÃÁ+„ÿ‚ÿÅ÷Xø/¾ÂÁO„ÿ‚ÿ_þ‹ïºðŸ¿£òwOæ5 þ"üçïÆü=˜¿ç2¿Qðá?ó?þ3OQðá¿à)ÂÿïÆO„ÿ‚wÿ_þ ¾üü:ø/øjðŸyÌgdž óü˜—Ç<:湉üWø/òDá¿àEÂÁ„ÿ‚ÇÿŸþ ¾üy¾ð_ä¿ÂÎ38úEäG£8O—y®‚Ǫ Dþ‡à"ßCð‘Ï!x‡ÈË4ó˜™̼bæ%2/yxÌocžó¯8ÏžóÓ9o›ó”9?—óY9O”ó19ß‘ó EþŸñühÄ_ð&Á»CüEÞ8çI#þ"ŸVÈù ˆ¿Èo4"þ‚—ø ~5âÏüIÁS4"þ‚§†ø‹|vÎßFüEž¯Èyªˆ¿È»”ÁÿFü¿ñùМ?DüE'âïDü™Î|oæa2¿‘ù‚ÌÃc>óʧÀùûœ§ÎùÙœÏÌy¤ùný_¼tÄ_ðÌÕˆ¿à)"þ‚‡‡ø žâϼ,ÁAü¯Àˆø3/^ðàM€ˆ¿à£#þ‚/‰ø > â/ørˆ¿à§ þ‚×€ø3ï^ðê¥@Ä_ðIÁ{Düñü8ÄŸy<Ìaþó*˜?À|~æé3ïžùôÌf~.ó[™/ÊóN˜—Áû(ˆ}±â/ö @üOñˆ¿àï#þ‚—Žø ž4â "þÌϼ%)ñ<Ä_ìÓ€ø‹}±â/xüˆ¿à™#þÌ“b>óe˜wÂüÞ‚÷yà}xÞ7÷/à}˜—/xíj@Ä_ðÁsAüy? ±_„ñû$ þ‚ÿø Þâ/ø?ˆ¿à« þ¼…ØOñû0˜Á#BüïñüÄ_ì#ø‹}ÁOCü? ñ|Ä_ðF±?â/ö=@üÈ¿ày!þÌ#b¾ód˜—ÂûNð~¼ŸïOÀ¼æÕ1LðªÔ€ˆ¿àß þb_Ä_ì€ø žâ/xZˆ¿à!þÌ£á}ľ ˆ¿Øñ|PÄ_ðÁCü ñçýÄ>ˆ¿àûK€ˆ¿à"þ‚g†ø ^âÏû&ˆ} Á÷"þ‚ÏŠø >#â/ølˆ?ó¯x?Þ—€÷`^?óí™ÿË|Yæ‘2_’y‚/§DüÅþˆ¿àÓ#þ‚WŒø ~*â/ø†ˆ?ïo ö@ü?߈ø ^/â/xˆ?ïW ö0"þ‚'Žø Þ5â/øÂˆ¿à‹"þ¼/Ø/@ DüOñ|jÄ_ðræYò¾b?Ä_ðãÁ?GüOñ|_ÄŸùþ̯g><ó×™_ÎæI ¾¢ñgþ¢àªÿ¿ËÿSåû©òùTyy‚W‡ø3¿NðáLˆÿŸòÜÔ®©©ü|·òÀz@æ±1ykÌWc~š.ùh†@æ1ÏŒye½€ÌdÞó¤¿ X‰q<ê©ò™˜Ç4eæ1oˆù>â÷ÏPüšÐ|Týý2±Ï?ù#ÌüØÇ| æY0o‚yKPùœÏùíbá°|ä|f‘GŒvâw€"¯ç9SäS¢,ò±ˆý§ÍóQäÅá8çUqþçɈüÈå|‘o`„¿_}‡/ÕUz¾úNy&¾ËcÞˆïð Ö3ñ]ë‹øn D{ñýíÅwkÈß©±Î‰ïÒ2 ÖñYùâ;pD>Šï¯Ð'öÅñB¿K2¢¾ú>‰þßaŸø®¿Ä>XÅ÷.¬kâûÖ%ñ íÅ÷ø%ö½„ñÝöˆïèO~ï/Þ»£žØWý!Þkòû$ŒñÞ v‰÷QðK¼¯á÷(ü>„ßsðû ~®äçØ-ž›!O<‡¡,î³ù¾„ï÷ø~НgðC\ÇU¯»ª×_Õë0cA×c¾îòõq×1 ¹þýáú!®|]`ž²êúÏ|cÁ3†ÿÌ+æëó|yýgÞ+óL§§ç#ó™§(Öaÿæßyd„<æý1ÿŽynÌëë1ù?ÌËùj]VÏGæQ0oyœwÏùìœ'.ò°?‘Oœ—"Ÿ6"Eþ)ô‹|NÈå‡ß» ßÄû ~¾„â¹ñÏÅüËë5ê‹u›Ÿóøyv‰ç5^×ùyLäç-^ßyýæç&~âç^·1ÄóIAÏ%ªÏ'ŒT~‹ç~Náç~.áç~îÀó&®ÿ×õ£¦â¿ß®~¿Ž”âçþ§,—¬™¥K*þ¯„¢E–Y<}Ñìß)¢ê¨õKáØUT,¡Åhó:ü‡.ÿ¡Çèóü‡!ÿa„?JjiŠ¿´Ä_Úâ/ñ—®øKOü¥/þ2Š¿„m¡C[èÐ:´…m¡C[èÐ:´…m¡C[èÐ:t„¡CGèÐ:t„¡CGèÐ:t„]¡CWèÐ:t…]¡CWèÐ:t…]¡CWèÐ:ô„=¡COèÐ:ô„=¡COèÐ:ô„}¡C_èÐ:ô…}¡C_èÐ:ô…}¡C_è0: „¡Ã@è0: „¡Ã@è0: „C¡ÃPè0: …C¡ÃPè0: …C¡ÃPè0:Œ„#¡ÃHè0:Œ„#¡ÃHè0:ŒXG)-MMåŸZÊ?µ•ê(ÿÔUþ©§üS_ù§òOCåŸJmZJmZJmZJmZJmZJmZJmZJmZJmZJmZJmÚJmÚJmÚJmÚJmÚJmÚJmÚJmÚJmÚJmÚJm:Jm:Jm:Jm:Jm:Jm:Jm:Jm:Jm:Jm:JmºJmºJmºJmºJmºJmºJmºJmºJmºJmºJmzJmzJmzJmzJmzJmzJmzJmzJmzJmzJmúJmúJmúJmúJmúJmúJmúJmúJmúJmúJmJmJmJmJmJmJmJmJmJmJm†Jm†Jm†Jm†Jm†Jm†Jm†Jm†Jm†Jm†JmFJmFJmFJmFJmFJmFJmFJmFJmF¿ßc««)ïʵÐTüë×ï¯ûõûýÀ_+êýþ¿ÿ‡‹ýúþÑýo*þÞ[ 5 5Å¢ô¿âÿÏŠÿØþAü-¾¢Ñÿù÷-n_Mº?¬u*Å?´ý¦âßYrÌ¢®f¯~½Š¥ØS_S³§~‹Åg†¡f_}}ý¿Vü½ÐK§ â79ø¿âÿcÅâ±ßqZý˜ECMÝ>*7E˜°(jjþáæS¥ØW³Ÿx2þÆâ÷_Tó_^å€ÿÃÿáÿðø?üþ'Ìÿ@Tò‹ZþžR¸¬”þýCþ.3sÉÂ%ËøÄòù«ߣ˜?•PÃÎïã½.Ó&¢?%nÌø-czÊmXmOëÞ”[ú’æ‘û•)Ã`iö Mí)‡* QkbGq9GÌr–¤dßK'Ô>‘\çœÍ¾£ñ”y*7¸›ÅÊÕ¡C«Ý-)mí®CîKæRŽ÷¸9¯ÕGSìð.O7nΤ”Ï+s[ì¼@Y3÷]yo>e®Œ·´neæNÙ9LwåÊå—w {O-à¿•RfŽnõÉk8åTªëáñ¢>ÉG•‹Þq™žÔ¾­·?ùWŠño÷¸]RÉ›tªÓûU$ånº¦UO=ŠÖ1ºtæn/’[ž>0=±Åß)÷Ûüä’WmР]Ã}ô(^Íuï¥ú”^+x܈²”0Ü¥Ù¼ s(mS×ûëµLéßUýkÑj”òºÔy«=‡(gËëy•³nRNôØW#— ¥ô‰f¶®)Ã)»ÝáóZ7ÌItdá£ÑómTimJuìr¼BFe’º¾ä…UC’ð5ÒpO9±÷¥{®ô¢Œñy¦¯u ¹¼D5‹ð”ý)7Éîî’¿Ì-9fóº×ç—Umz…Qü˜4­œM)Ó€úÞHÙ«f'ÚNiCßvÕûµ/¥úí³ì6`=Z}faÞÎ$«çm¹3à=,}:a‹úcJ™µÙØóX3Ê©=¯Ô%J‹¼1ÓH¾—’;®;ü|0¥]u¶m e]ðÊ´8ïFw×êܸgLIv~-~’Ô¡T‰Ä­Áû™”Ò)ÂyOFEZù?¢‡7I»õö£dõ_ê]«F²O¶cnl@i á·'½YN9õ7$VÖëL©#«{ÎÙµ‹’JFL´²ÙI ýš5íàߌROÍêûd2e|˜ñ*ωä_>Õ¿KÑ_²éooߢ;=ïxºaBÑ¥?6¸<÷$E^¾­y"Œb­KÔñÍØG÷£Ù§~¦çþWο§”êA©ûfEQfͼ!#N¡'õº3/–äχní¹k)¥¾ÿY`SJ|Uwñ—6{(>|€ö‹˜Æô¸ÇÖ~ŸC¤”î9iíÎ{õ)óâÞèzŠxùŒ²,÷&e%T<9ÂÛ‚r*n®²» ]³­56®Jmжö÷xmJ¼r?n«ÖTJò©ØÙõ¦¥v½ò¤_Û$ÏËt¸±-rrï¸zF¥'•»ÏÛ,9GÙmº®K§,ËS¬Ÿ|¦ì^gnýBòPçúÆ–‘¼”¾ü]Ü}Êìº.(ZN©CôU?KIYVuøHŸ>Œì¶Í†Òºíh¿ã5åVtxë½ÿ"å~ìÐdö•Žt1øîyïqtצޮ­“s)¾ŒáÒ¤S)Ù4çÝØ¨pÊy66ÐNÞŒ²# ª„Gz‘|·ßÀmF”ž¹òSÝ =)ííñà*]KQf¿iK^49H9&­GWlÛ’²zUSï­ˆï½zîFví)ebI û“”rìµS­²½({Ô‘àO–¯é’ëêÁsÖt¦;%úöîpï-=š[rà–)CR÷ãd»$ÿ¼¹ÿ4ë…”c7 ¦ûóZ”5¬âÆ…Ñ%)Ǻ͙kõ^Sö<Éxÿ…)õ@`oIÔbJíS:6Üö e¹Œ|vã²]Ý<$ö½ÑMº¿¼ñƒF‹S)¹¥öŒQ'")}•«×~¤\c¿Ømæ¼ÝØ„òÛPV³ û^ž¢Ì[£Úõ7D9žÍjY”ØN§e±qÁ5)}ÒD“aê$·[çW=íÝx6¼ášmÛ)vïOg&ä. ä‹÷†´šuƒž´jæT3²:åŽ_¹â׊ž”ÑÓlýÖÆI”fõÛ.“Øû”¾¶öBÇþ(ûÚ¡´ÛÑÍYWìWôÒ¦Ømƒ"ö[é|ß¹k9S=(÷Ḽ“ë¦eꬑå(·º÷þyÃ(7pÛœrÃSŒÛ¸í²L 樌վwy*É+UYãdI¹5H;ì ÜÞûëµ^¦EYÓFù]šøˆÒwîÿµ×Ê6”¾ÔÝÔvž>¥ûq°ÊT¬Ë#O,ìû¾"ÉÛl÷j~´b<Î;ᦥÉöÙãA)íb.¨œG²Ûuý7*Æ¡ôh½Äj2Êš~kÜû¶étoí²-:ï^ÒãógNöO#Ù•gcçÿÖ™r¢ìÓL¶¸Sn™R¯ª¬]J¹õûÚìøB¹ÓÊÝyêõˆ²v«í|· ޲êu°¯SÅ–2¶Ü ¼ºÖвì;$\œZŽäþÝn¼L¥ìcï¼™¼r—õT»õ¢å<®QA#éÉÇn7,áR‡2ËÅ?Z7Å›R¯•ZØGGRš?° Í[@‰Òþ‹úì$™þð£åk¡TõNµ§þBYÁ‡Þì"#ù–73>ŸÝAï¯Ï«ßé7’5vMõÍyE1W›¶Ûq¢E• ˜|´)źºeÔ Õ DsÓ•RC’9-mXóå7ë¼à {:ô Ì|›G_æ$Õi”­˜®Ook~¤[ƒ–öuK‡"×8>¬}%“ߦØ7·¬CÉ[º9ØÔ+An¬ñ¨Ñäî.ñ÷P£ÜÊ3[ŒUŒ£ÀIyîÌ¥´; Zmߪ¸® oýÌÌŽ²"N¥õ¼Ð…²îŽÒh$§'êïî4é½—äI§¼*ÛŠR›gkÔ5íA²}véwz:SÔâ®~eueô°Fó­;äç(I}æ±±Ž(®_g­omo©˜ï.Ž7uvQöo-]ŸÔ§ÔA¯wʶ¦Ü®÷;?nJg»½˜>+s*E}±skÕ‹$ër­äœS”f<=àÒnÊQ] ,C¹ïÖò°¨DÙyWªn[šD™µ«/i˜1Ž’Êºu{Ÿ\qß³ûÎM}Å:96jÎǃ¥éä ô“æ3úÓÕY5Ý<úO£(׃Gzª¡GdöìlÅúå¶·¶Ó4JÛÛué6óÚ”)¹ÔºdÖ9Jd°¶sJ¶·}Ã{锿]åør¿ ”òf\ íÀ×”ñóÎ…Ö|IòêQ=)wÁÀ&k6ͧÜî‡õì/u¡ì;ÍkªIòซe(úO'ò kJ½{öMM­Þt¬ûjguŸSt}ãû:ÇЃglÆi(îó&ýt;Ë[›²·Øþl¹,Œ’mÇ„H´Ì(%ÓyÀáq~3¬òF¯F­è±g_‹Ñµ{PJ¥áÃ’:ê’ìòì#ËÔ)=L:Yº£$É/ûX¾%ʾju÷ãÏw(kåÁ°ã¦[)ýaÅ ¶µ ŒŒóŽçnR\úÖl_s¥¾Møðlíy:¼,(ݳú{ºÚê…ÛÄ»ŠûÞ‡ö®m:ö¤”g#FÔŠ¥œ”YÌž?§_3µ››_Ñ£Ú]ÃjF(îsæ~á–—AÑúdz6ݧ‡^.“ÞŒŽ-šÖ×á©â~춇_uÊé;©Õœf”ü!1çàGJ­^f‡ö›S${Þx´ÖÑ×”æwÑÙfS4eT›º¸ÚÙö”v·A“O§ÓÑ5ßMˆ¬F·šþ\¢üº^³™tNì|JéóRZ ¥¸˜-«é¨¸¾ö:´iµEéÄ™UË.C‘Mê®.µÞ…nTðI;1t(E6›-k0‡5|Ø\¿c#J¢Š·ãß®G=ÊuÚV®Tî³ræG º˜Tý„ã̆tç¡4úü¡ôPënú-¢¤~)uKþ¤xîØdvG2æµâ~´éÝ%‚)¹ìX3›(Š‹Ê>d¬{…’Ö¾Öê¥)=¬—z7gÿ}JÚ*µðHR\ß+•œ¹Âê!ìäó¾â£útõŽ…ÉÑ_ä•á¶c®YMJ)óëóñŠë üÉþí¿PzÖ“+s")ÍºÉÆy{WP´DÞÅÌr4EG¶µZlB×+$î[?“.D>ÒLßîv›œÔkþLzàå–DV”\Gíp âz’Ö¡ûàÊûr)mZäF½Á”ÐÔøøá)Y»NÅQg-(îÙ‘U™ê”|­{ýŸÖQÜ›]q½<œNèdîîîT‹®Þ «W¢©žâú×É¥óe Ji³2xdXkÅx[¶Ug¥¿×¾ûø%\Ïš¶x#=téyñu'7ºÑú±mÜ„ºíóhÕ©ýæté¤Öë;UâéÂ'Ã{³™e.™±ÓeÅoíÙ6ÚPq¿xžÒO¿8§¸î¯Ñ¶Õ ¢Lç™eß}®A¯ ì¸å³.%K'vÛ»¢ûd't¬V•G8-žp%‚ÒÆ$U¸ù¥…m<:ÖìT'ºçæøŠ—)rü\ýHÅómb¹žv#3)ýõÓ?÷(Oéi«^rY,Œ¹ö²,Eôõ~Û¿'E>/Q±Æ¤tùTB•å¥t«^ùs}gÕ¦{kVìy¹ÑnÚ­X³ ]1ß§d8VO§äµu®¯_@¹K>$»H¹ïƒJ§Ï¢Ôë.ÜÓ¡ÔÌÊ>c|GQl㾕žoR<7ï?¦eyô ¥Øëþs»et´y•7Öu¬é²yÚ¹¤5û(ÒÏÂnÈÖV”h9§ÍÆ»ú”8»} ï¤Jñ¶‡ÕÉKíéÂ^û‰«Z–§k ŒF:ïEg­ó¬ú/¡k:w}¯x8уRKWÌèÚ‘tR¿:ïPMʺoó€OM(«üÀùW_΢¬®K<ï®;¨¸ÎQƒ€ 7(~î+Ïå—ïQJÌ›ž¾ê?QŠzDðŽõ(»}·ë‰e.“¼ûë)íwv§ƒ GUõm=Š.˜¯t9¹·<ݯ㦹"{EW°6Œ­•L7¶Þ©²¬i:㥹خYºn`{èeÝHºQ}xˆÚàù±z•Û¤}É”x¹±VIKÅõó7u}?’gÆ?ûz;%{s¢ËÌ Ê0‹¹b©˜¯¶k-†Î£ìÁÎ¥g§½¤¬ïŽÅž0¡œ_êd_¬n¦¸_ëøn«´>4õƒg¼ ]±k?ëÜ­Gt§Ut7sí ßëÓåCRG:þÜÔ=Éܘ®¦ºþª¯yîåùíõf EÔꚸ¸9¥d:íX2–Ò?6j³v;¥N<±³Ù7’Û/XìVs"¥©Ÿ 1Û:›2ÛŒ?þÔ·*¥¯þ8o·Å3Å:’îºdFe7Ýqýa¤1eþêpk@óW”¬V7"²"åN¸¼!áÃ0zÒ­\ðáW¿RÎóÈnŒ¢=©‡4ΦóYæqFïPøô!ëºÚ˜Ò_ÏÜ£UªÐõÉš½c~nKÑ£¯gh™Aq/ú<þåÝ\ʲ3ïìv «Bï…’1õ(½^ÒʶžC)ûP“•—fQÊœÎvKM²(µÕéaR™â¾òn™eKúÞ¥ŒUyÝVÝU<ߺöð0;Ya߃~ó.(ž£ª=9:lÆʹ0ÑûŠénÚÛ¿¶<´¬&[]6§þº9åöć]ÛÑÝæv=޾iH‰'^fî‹8O²©Æº;»)î—í·ŒYâ ¸~fÑ–ï0¡” K[ô¸v‹dפï“S\7o œ¹®ÌuÊy8¦QJÒ}Êi—X×tb$Éþ<Ø«±åœÝïì-¡CfåGß:¾‘®ÿ6íü•ö¯èÆg7õnϵéa«¡ÇºµK‰[ºŸê¶a åÖ›qGóìÊp9kQÅó ÿxõkU&QJ­f&ãÜ-)y´ŽÞõÈç$3:õ±GÍé”jºšíŠÁ”;øþ4¹‘'™õyì­:¹Q…ºmªSÄŒWºmªRŒFÿÖsnRºmä¢w{.Pöü†£nŽ>Jéw•¶¼EYÖûëøF¢ä ;ïn¹’Ræ5¶|ÝŒ’­ËJ¹ò†Òc¬êUÔ’RnÁå¬iEò[冟P<ŸçvÝŸ­¹f=ÞØ³\ƒ3†tñ鋳ë«$Òë妇´ÙFIw-FìyFÉÇïÙ6Zõ‰dó¦î¾#†Ò†-ŽoÒâ"=n¶²oÆë”Z&ΡÚñ”rÐrs¿”ÝãMàÅÔö”ÛÂÿ•atå”iߢuk_:yöçÃÇ“\èRb@ÛVÇoS¬—y÷>ƒ)éIâC×”ðps•~#é‘ñVµÏkIsw.¸¿¨ÅZ¦­òiS’’ªì•kY†ç8FJc-¦V¬_Ž„yϸÝÊ—®×Ì»ôn³„"vëžÜS¢¥üZ¿RËÆÃ)£·ï¾’ “(cóF» )uŒÙ ‹-•éA—³jUß´¡¸þ©­všSŒÖžŒP3’ŵѼp¿ ¥¶¼t?.påz6X9þÉn:ó2⤛/Ýlâ¤>h}JšôhRhÄzJ‰w•ÿ¬xNô{|íÃ’ôD{ùO}f¢ÔJ­«m3Ф¤…ŸÇ½L½D·mìh»«…"®ý+½šÜ‰"Fè’i×Tq_1gè—ã£IÖ¶FõG~UÜÇ…ÖóÛx‘Ž˜y½mßí)Ýüí·‰Ë_÷¡è^K«?·„R´6†„šýF©5ƒ/%¬šEi+J­4»Eñ²’Ç®D±7*Z[H“éº\2qðNtÛ³äÀGÛSô¤Î;gwI¤Ô. hݽFYµcœ®ÿR‹.V›vâþºµµNÃì¾(±Fú.«šH–ö2èÃBÅ}~cyK­F$oÞíÓ‘¾ŠçªNƒÞ¥'UjU¢<ÅÔÈjýB÷0ÝW¾m\¦EíXÇÒè1ɪ»4 tWܱ9w¦ÿt:{åf×ê«é~€Æâ©cRÔ¢ÙÝWlŸª¸>Eüê ñ3e'?íTÑ—’ÏÆn:÷jžb~Ù>Û³¤>EÎÔ>:þÓ.Š}§¼†Ú1Å|l–æ]–htN~®¸ÏÙ½Ï È.h–ò¸´+@q}ò×|/C²Šƒç/¿EÙë^7©¹“rZØslP %Øæ´ÿÕ§4Emšk³uPÝ>5eë—Uo(.nˆw…ðK÷^¶lÚ‘M”¬3$¡¾m7Ê]޿ߌ™‡èªî’àÀ³·)Ê"z”zï—”:óÞo¥Sª’|ôÔ\Ï™cHîR©ú›Ÿ)½VcçgæRôêr'j-± £òãºQŒ·í:åïuv§äeAS:­¤´‹wViCY6·j¸³7]_³½ÌÍikéQjµ“›ަôe¥Gè'¸RF½]ò*«PʵK3›lWÜßô/ìW?¦Ä‹k⺛œ¤¤þ[¯ëözKÑmj_s:[ƒd»ÂºÍQ¬SjÐÌ [Êj5áѺäùt§ztûÃ%·Òã–òΣ§QNË_ï 2¡ÌØ•ë$T'Ù9›ÒIw\(űÉü²î­(YOÍ,én,e%Œ_×ú0åDöÜmÞp/=©ìà=îÚ"ŠHZ¶¾Õ=’Unæ9,o8%¦U¼Víx%ü:xá…«úó²I³tçFŠõ}Ñ¥-÷œÏ7ÛF|~šM9Þ÷–èN˜J÷Ú7õya=kפ þ73úe|mJzúéo›)kº,þê‚Etýí2³vc»“lÈ-ˤ·›HÞ£ÆêöéAÖSVëu(­V`Ô#)qêÉÈ>·ûP欑š‹ºQÖIù€ÏiOI^±Ü»š^UHUËïõîaô0æÚÉÑãSÖ¾:ËÛœÙ@ ¥†:}ÚCò»5­ëEÄУ~žM}¼˜Òs”¾Ó£œ¶¾É}Ç¥\§]¿t¨<‚ÎÓw «oD);{O¹¦xŽŸýìäÒÑÊ}öp‚ý+Ê<°gHY;Êìy6bìžê”3üÖ¢FëÌé~œÍÒí*Pb–éhµ3ŠûÕ‰Ú*ŸjEußi÷|Û•2jÚUèVO‡²÷:ÍI·ö¡ÜiáV’ö”sH»îÉr)Û:õù ÅsyýsÉ9‡¥ÓGdqä%k9ìtg å”ë8ï0¥/tŸrxŒâ¾}Îùß|F´#ùÒå ÚíW¬öFèzŒ2Ÿ×÷H+žÒÕ:Œøée§OÎ 6× óª;z §ÌJ±c›nšL©}{]OŠ9AéÒaŸz—Ö œ«ý[Y>ÚK¹íÇæäE)î#ËM°ÿPÞC1~]¦6L¤ì}êëOY·—˜Óg9eONйók,e†æjŸuSá×NÓöNs('yÿî~‘ó×¾U›TèAY—ô2+ÎL¤X‡,º@²-—†?âE¹)Yý¹ºS|iK¿w!Ï)ÙþlÉ/ΔµÛ;ÝbtÅÌ?gsñ·×”|±Yií0Å}̾'HÕ)*õ—©§SÜçíîÿv{?ÅóZƒÝs.íQ¬ûAf[f¼:JQ×÷¯ñö0§¤Aå7þì˜J¹½º9¿&¥Ä ûu¹Ð›2ºvqs|‰âµ™17y ¥ì:FÿýpzR¥å¼Õ3Õ)gãÕˆl¯ÁÕuè‰äŠ7÷u’NoUÜgnvKY_òî\Õ¸r«!eUN¨|¿š?¥¸ 99rtJ{b5$©çYJ÷wȩëôÀÀ¨Ù†‰HvGÇn_CÅýïÕGó–Qz¿²zë ¦,çÒ!_&ס”¤ ¾+Ã×+ÆU攺?SN×ä 5»Ï£œíŸZv]µ•Ò ë†jt™D9V¹×-ºk¸ga%µxŠkRö¢ûè-”9~ìá·“|r5çJŽ”¦=Ç_bòˆR¬îÚTØŸJ±³lyN¥šp £}gŠùÅ=bŽÃV’íxúÚüÒCÊ:Rwꇬ2$ß»ëݾ͔ê_ûK£Å³HvÝB}ƒÃyJÕ8¨.3«H™Á]6Ù·Ó£;gÞ/[vè=^ôÅTïæ+J¯øé¶e·S”bóKý•qS(y粈±WÉ^SûÆBJ²>Øøö<}J*|©Ì¥”Òu¬¯¼qÉë?×a½”Rfûęޟü8·`=J™ÜzâûO”z ¼’Ýo­)sæó'3]ϵÁ§sbÛÝ!yxËÜñC®QnÏžoÚ§o »>÷êø¼yO±‹›¶´q¢¤^.e§XSì‘’Ÿœ ûÕ ŽéM³ŸÛϬݒjU#ÅÅšÒLŒ¶žk¥¸ß‰ÝÐq"e ÞuwØôV”6pÇŠÚg¢(1æ'³ÚÒܲn½7+î3º½5yã¡x^Ox×í e>¶¹ût…¡‡ž]©JYO“4ËŸ¥œyÛû?u¤kýºÄ~¸’I1OË X°žè9¯¥ÑlJ4´Ä¨ã=)9Þ#9¬RUÊüX«Uîžu”“»²g_Åz-Ùð1æ3eL¬Üa˜b\¬ML>²i)eMmpyy÷Q”ÓqÈoÇûÕ&ù;SÝ”´ ”þªöþèꔪw©sÏFV”ôT×?±?‘ìseù/_´(]ó¡eŸiM)·K5‹‹Ý\(¼ÙÛIC—ÒÍÉv×ób'RܼíWû®©F²ÕÚ®ú×¥¬*›/~é?‡r{%^® ÌìK c9S¶ôø»·µ~¢´k|ΤT?ÝË©M ÔH<¨X?£Ûž;Ý]‹äÃ|ÎÅÈ唹åÓ‡çÓ)µC«fKRú½/³¤]ד¼§¾Oà;Ê>çZÝã§)%r<û®P¡o•c“ér£735¶¶¤È=_†&XÌ Ì9~ÕÊ¢¬g¯r/êEé)Quë%Ræú§wíP¬ïWެò¯™@¹SŽÉìö\ñ\nØxϹ2”pgȦN'ãpî…]ý^Çî军Šû«tÓ~²çOéÖ¦{—G·ú‰’wÅm6£+å8hŵxÜr-Eé¤l›F%gÿ2…žhš^¯6‚rj•ð^Ò22ª=}9¯SŠ­·{X¦ÄFñÜxÒ«ïúw$wð™»íÖQÊx·¹Â»Žw(ųßú˜Vî”;»o³­iƒ(Y?#jTÿÖŠçÙzÁûv<§¬®“?Úò…²Ï™½³’b¾„LŸõb;e:¶›šcüŒRã?µw³)MñÓ#rNt Ø32µe#wQFËj!Á]»PÎ “9q?)®S»o™Ùþ”r&Kt÷UzA¹f¶.<Þäe]Žöv T\¿ä/ ÖU¢¬j OOÉQ–I}{yRN?·ë›ÞÞ#¹ß€Ã¹ÏRšÍè©_ê. ùºwWGÿ|ˆâ+O;«·« ¥[û.ùåiʽì|ªf-}ÊmiftitåÔÞ£ÿyxUÅúµÝcÇkOzÒðvRó ÊýußÙá[·SÖÕÊy}/eQÚÇÕ½gKc(õ’w–Và1JK{ÓdÇñ—”mp8Dïó Ê­ü$®~ê Êx¶¬î3êEi½ÛÎL_§¡x~O þuä^J<õñÖ \ÊØQòˆ¼ß,Ê5¢–]Kv§ÜƒU"\î÷¢{ó÷Õœ8­#%MoíeK²CïÕ.uiJ9N:+ÖµT<Ïßnq(^‹žT<¼óÝÊö÷ˆ9ÕúeûnžÖïš‹âyfÌç·;,H"²6Ñ€reIÉWê)ÆË ží5騘AíÏ4§´;Ë‚-vt¡”';nM_CIm ©I² Í¢îÞVÌóá[άx²®ÔÊ}¿â4åz{â]\KÊêÿ<ª÷mÅsÔšà I+‡RŒtÍè6z')ºæüÚ»ž~¡¸v»&ý2ü%=¼Þ¶e=^7åõ¶á (í~ä„«‡(kËêv×CGQºŸÕçÈÅúÕ5¤tÒftã±lBí;éqkå„Y%(iTçƒ?¿KSÜÇîÝ62m×>s‡r­ÎתGÙwBÇ?󲢴ϦæUÏ<¢´¹ÏWî¼|‰²+ê°ðEs’ZÞçÚ1Å<Ž™±à‘µâ¹lF©wó¼}éñNùÚ°öï)jÊBõ롸Cö+}‰›¤šÐs=6™¾ÛwÈmJíèl®xN¨]ÇÕv÷1’mp¼5@1›tíZÙH:`mýæ(úÖŠ~£+ÙÒã¬vŒ ¢ŒÌƒ«ür”ž–èT6â=e¦hlsŸ䕷׾ÒCq¿4OâùlJJ›ötAìókµ?÷’{Æ.zà¿l‰C­ŽYvEÒÇè–3£“Õƒ žôHo~¿Qï=)yÕHíc)a‡Fï¶5)«äâã»»ÐÍ; ’h„>E•z޻ŗJôøÜº[S÷øQæØ×{ÜëEòk›Ž6ýµeE^þ9x½â¹¹êÛ³»Ó (eâåa·Ÿ?WŒÛ­·$‘¼w[­ ºŠçÈã+”Ÿ¹Ÿ’{½ìX·iIº×±ß›‰#u(Â­å´ VFyÿ–ǫե(~õb÷kµîì^H·½çäŠ~ªi£Û°%%)¹¿ÿLÅs»¼ìÜäÀDºÒ½[Æ•³céAíÄë;ù‘,yêÓÍŠçŒM:ÉSLIö¦ó¦,+J=XÒo»Ï>JzÝ»îåE”ý¬ã¬–­)úÑ)xõ-…ýv¥7ÏEÑÅ&S$&ܦ;'î™Ìq¾Fñ[šd?•’TÚ±ÒïÉïß¿O•Ô¼GOúmnXÎŒÒÚî½ÞzºT1nm>®Z~“Rž÷œq{ÔP’»glúuÒ’Ï|¸<Ô_ñ¼W.1js5SÊ4³®RùªâyóÅ…F/M)­z«úû?(ž/-tмD¹53Œ=í¢³·,>¯Ï*E·GµoýÎn=ŇtzÑlì2’5ަjo)wËÐ .ÏPÆ‘œºk’7Q–ùÈÑõZ>§ÇÁ™ÛºoPܯ<¬súž7e©ï}f8-‡2úí‰0Ÿß›rîå]úÒù"=¸Øû£B~N¹Åº5Mß“üF£_¶Ô­xл2¯’bùRfGÅy”ûùÕM«!ÏèÄç÷ëjËFÐí»y/Õ/¾¥èñ¥¯ª>•ÒÛ•wn6tå6}ö`Á½s”òö¾õTÅýuï-!û\§8ùÂ1¦©·)Å}×ÝÖg&Rú®. ?ßSÜ?ÖK.­ˆ»üí±έû(îGW—0‰/«¸ßnó¤iº.åfÿ4ܰíÊê4äúË—çéXpsy@µét}¬åèävô(vBý²IM)m°äI…8¢Ç ߽߰’Ro7™¼¿EDŒú½_‘Ëvïy|×gJ_÷fÀ„ (åÚèºO¯"Yû»o^Ow*W‘?è\’nôŠ‹ŸfÕ™®D\êüö²3ÝvÛ¨_yMÅú4¥ÄˆUA”²µÑ ›ÝÁŠë@Xú«mï(cNzéý}O*îc‡Ä6(íN²Õ¬7¡¤úÕ2t§. Ôê>k–2¤°5Ö/?^5§[‡— ï8–bî#Ã)»)m_^æmź:¬sÅ3^)#ëvõ‹×PÜüÊ·8ùRü¨Í‡?_¥›{“®·ïC—gÞ(ù0¹!E 22ü 6EÏ‹kú§ ¥žTKìqÃ2O,Ÿ™¤¸ÿÚòx¬´lM’5«ž¬9¿/%w}ñ&³N%Œ>b]ýaWJïë`»trÉfí:uÓéºåá“ô¢‡v쾕­xî™0#´Â¶hÊÝçù«4Ÿ2ÃwüÔ¤ŽÉZ¥ZTC þKÝ?N [Ï*hN ìD£«þ4rÉhºâºçã³KåéJiýKçwZRtâä==ì)î÷š®jØìe½c¤ñj&åvôlC®b=óпáÄ=”|УqJùæ:GÞ`d)JY9´Û‡ZŠûÎn·º6œ?²/œ¸åÔ®ÄD… 8E‘Ç¥dT“’ÂJ¦]Ö€2·Í•nB™ÕK©ëνC š]®–‹ ûÖoõû}çQ]§9]IßßDçÝ×ýTÝŸxк´Ç,º{o—̚1$“í¯4éÂDJ‘›>8ó“eŒ:¿àÒ}Åu,ÖÈÛÅðÅ_Èñô¥÷©ôÅÿW}ʬ™­Ýjæ":J»\¼W ¥ËZ5*6ÉZB‘‰Ý´”çPÒËè¤õSR u®hq•"²~zbׄ.V;5czyº:rRcí:»é|ƒA†OzN7[tðqÙiŠz0ðd·#)úiiéüŽk)ÓnCKé˜f$÷¾ºQ#¸Ÿâ¹êp…éo(Ë"{yún}J(YÃbVÊ J_{ªÕ´Uc)-´…Q¤ñ0ÅóûÓܽ+¼èPÅ%‡=ð¡KC¿¬©•­¸/θ8áúÛ3ß³ãݘöts`÷¸×î÷è¬Ä+Ü~ëUº–6¡vÃV%éfV­£Ñ;OSäo»wv´È Yd›™y6”<Ç5ó µ d'·L—’;(Û¢jNÕ¬…”±¶_M«¸Ê1™1ìS¨býÛWâõìÑtÔiÇé˜ÝëéZƳ›mOפ{Uš9ß§']XØ10ûÂ~:æ{kì…+èÚì-Ñý2=è~ùÚOªvŒ¦¸2]½º/5¢Œå:SnLQŒ‡ÔX£>™Šû÷õ}}RŽž4n·¹ÛQÅõÿ³uë¶ÞŠûßFcÝj5W<¿.[/·jKÚÚŸ:u'ˆ.”zÐtÊ=º°Ö¤|3í•t!þr•S¿ ¦_7?°b]÷•¼±x% šk§~ñåDí™h½¼-e½›Ô¨o‡³”›¸éèycJŸ2¾Ù\¿~”®«Ñïü–”Vá”yÿÙ£(óŽìÐñð4Ú?uµÇ‘7©¾¡ÇNóƒmèÖ&%_9RÄìÞÏÕïL²µ®Ïê ÝM)¦å\dŸL(ýnÛ•Ú/ëܼóúṼ‰©CZRšÎñ´Çž)çÉ §NµÐa—Ž5Š£ÛµM/ïX&ˆ’[Øhê í¯¸NÞ5Ì>D)oR=ÆFO ùÂà‡®wŸÓ‘&yþ§ >azúŸè¾fèÂ/=:Pì†<à¥1”ñ~d©ê£ƒ('iXÍs¯lñ˜ZÅqe—ܯß`±?¥h=¼õâ€âyeÓu7·rW)¥G°OÞÌ“”žá²jTÝûŠûÝFòŠ7èXƒ-ña‹úÒ•êO³ôj<¦ˆÇ>c½Žß¡äyþ·.ï‹¡´nkîþÜá¥ô¿Sòèç‘”Ù"0ЯùJþXöQÙKŠûçÄŠ5’“¶Qúš”¨IwH~§·w˜g/:™hᢗû„.¯ˆ»WÆü#Åwê¯Y…dw¿ÔÏqo¡¸Ï?u²DX:%4Wõ‰z=¾xËéY½Ý·8|G»£(©ÚÔ{5®9“¬¦ÏÊãµvQzÔµ]ýíJГZLõ*\¦îko¤›}Êν—B‘^BŸH¦4£­‹§-˜DYÇOßÒ¤ìI>-bÊî¡´•Ûe{Z$SÔÌšKuVÈèa¿_´–jl¥¸~ œöŽ’úfî]A©¿Uíº¨=åìªZsÌ tvé€g=4~¢[q[Û)ì\¿f²tæPJ¸ö£a[ÅýÃVûG“r¡ÇçÇ/ZÕ˜no\ßþéÆtY´¼îÄãt—ïO9•'R©_ŽœÖ&Ù…6òØQg)Ë?ú·ÖæÑ±.«G\I§[—çÜÛ¶µ5Åênh×)Mq¿fÞñ`óÜ@JË~ÝÊo­Ïïoì¼O ™u¦%&'S|•%ÎêgªÑ­Òö ߥˆjsÊ9 ©<ýRJ|žØ~±^ ʪzÐ5 DJáIÉΧ§–§ûÁU7Õ˜®K»¸g´1‰¢ìú³ýÇ—7¥Ç#šW*»¢gjÚÿÚ§Ý)ï”py¬œâ½kv›èäOT<4à8¥î.[z~ƒãtÅëþ Çôãé¶09À¢¥ÌÐXn’y²¦Ì<4Žä§6%´úP•ÒãgœM–¤StÜ“Aæ÷wSôlÙñ§ÝèÁCílõgåH½¬öM@Jw©kôú†/å´>ku‡ªtµV›W§J/£Ø©Ž[¦uK ›ýåÆ*žïŸÝ¼ù¡g{JË6Þ±Eеêe¥¶Œâ®z5Ò6¤Øöm£={$RR›9áÛË*îõCGôŸ¾ž2¯2Š›XŠn…ßM\¸l8Å•xsߨæ”å¦WA{ûeÊýåØ’ê†£èñóöµfŽ%ÙnÝ*%zô¡în»ËÚºRb‡kÆ5ÙEÉ­|»¯ó³¦ŒFof{ì¢Ûñ&ãË–žFI· ÇŸ\ö+å\}vªÓ¨”2óä’jã/RÚÃmQ2½ Jî±Pk›©eèNÚ®¿JñÜìòêЯÖÓH¾åljùùºtïáði©—VSò—úZ-)ñmŽ›t½Âû>Ûb#FPÌýj¶G&5§dÝ¦Ž«B)ýêwª÷FŸä·ßé|~‰"V½®9=­‰"ŽæéÊ)¹Ùè7êݧ”G½)_‘2ª·Žž§Õ„®·^âX]Ûb¼†ýú®û|™â?u=›bD©íÇ×=[g4E|ºÐ¶|oÅú3IG+bõ6J»°É\XSº®×·ÞÍÐ×Õ÷LÝÄÚO(ù¡Å#«ió(í¢ÉÕÃ'Ñ… ¯œíÏÓƒG}rçŒA=r–«e@©¼nZ׊¢µ ¿u¥ŒŽ‹åäO§gô½í£~‹nØO²ßß‚bûô¸ãÚÆ‚RëÔ¨³£-¥núõçƒ(÷ÑÚc&­ËS¢ÏÙÏ¥4‡Y ÝDqÓ4^²ŸRöמTc{ʬd•àGÂâ?ÐíL‰Û–<>õ¦9å69òây9Š©÷óѽ>PjÙoLº\¥Sý¦?<¯B”ãË®œ=î¼ùŒ8µÒàÔ=Gùw†\cüýý÷‡=kuš6mþÜeÓÍçM³œ½lùü%‹§M뤢¥Œf'ÃNš_ *êPXrÑl5µR¿›V1Ÿ¼§VÂx^8Ó+‚Ô§&ˆ}` ã Øâž·ö'†þy=u®oüŸÛ}k}®W«ú|ž·ZÖP)7RA l®‚-U·öoä-œyK= ~õyëgíBÚ›À?ÞÚYµ} ÿ´€&P«ˆò‡C®IúL¿³¾oÔ;çGý¼uö0É÷±g„ä¯Ùc̈ö=Uìë…r/¶WíÛìVµ¯Øì*¢=EŽOú “_˜Ü¢úUüå²<ÉnÏ㨠õ¡ û “7Zòçò ªÇç¹l€2o=oììä­èù'IxKú¾Óå~(÷Gy#ŽFy0ÊüÓ%CP »Gr9<G©è5fýEµ£ˆú‡¢<”õ«Í.þɶ«°qÖGòmö÷GyÊPˆ2ÿÀ·ö÷WþÑÏQ8? çGãühœçñÅ?EPÔõ¤÷jav«Ú÷Ýõ —û«7Ê}Pæñõ­ýø½ìþV;ÙaGQõ³¾"êáùVÔñTØu÷[Ç[Qíû»v€E]¿ ³‡×§Ú®Âìù^qüf» °‡×ïo]· ²ï[í*ìzòW×Õïeχ¢^ïþîõLÕîoµ³¨×ãïuýýÛöbgqÝ7°ÝßjïËýMqÙ÷­vÌГ=E´ƒ¯ûªöðOþÍ@}þ©©²ÛÎoµGè/D/ߨ·ˆúÄ}å7úÍúÿ­þý§ô}ïyÆzþ©çŽo¾.ü]}EÕ£ö÷ô÷}ë+®û<ÖS¨Ü¿+¿¹&(0þ{zŠM®Š<ñþñ/ÊW•SØ{×Bå±.£¼¢¶+TnAÇ Ð_=ú«Z–PF{Ž_AÇy\:Ï :þŸ‹ë“¤óÆ*õ 9?º¨ç :®Z޼±Œ¨WàO+3JTõU¿kôÓË€}S­¯úSÍÜž ´ Ÿêd¹ªrƇÿMyE•£VDyÈ)¨}Aú¾*‡ÿyy¢ÚŸ—« ÚO ÿ#NRSAÔŸ‚óüÚ||äLÂù)\_¢ÒNM¥½J»ÉjßÖžš{êÍ ýsyüÓß“Qo2Ûù­ú Ñ;ë;ë¥ñmzgÉòq6ÚÏÖø>v˜²üïm×_µúLCÿhŸ)ôLG½™²o³›íûËöHŠfW‘í‘…éýnz ?'ô?Ëçùöwõð8úŠIÏ¿¾’/ùóvÂ>ÕöØ¥Z{jç§âü4Ø3 r§±_8nªÄùé8?~Ï@½™Œ¨?õgÂΙÐ?›v̆<Ϭ‡ý›ŽúÓC¿þ™3“õbÏȹsTì+t^b÷WïPß3ýÓ~ÍÜ‚ÆSQ×±oµ»Øì-ª*ö}w; Ð?]CÅ.«ØóU}oû °kºñ7ÊýÏr¦£Ï뢎g¾.Ùo¶£ý@æÕ¨ò/ŠÊŸàßRå 3æÛYàï«p~b/çü?λáü:ÎáïМ×Âߟù»&ç¡ð÷gÞד¿wqÞÈcœò÷/~/Êyü]z ¿ñ{ÓéhÏùuœÇÁß­ù;+Gã÷¬üÜÉ÷9œ'ÌùpâwR€cüý÷%ãçE¾¯áuó{9_MukþîËßëø½¯Ø÷úÈù¹œoÆy#Ñž¿#ósß§ð:Éë Ï+ΣåuFðJ¡¯P>)äÄ]€2Wä÷Ú|Ãë×Ô_ùü½Ðíø>…×s^Çá¼9Žów>~O,öía¿QΛ‡åã2”ù»;Ÿã÷®ü\Æ÷|ýX„óæ(/ÓÌÇåÇßÓø}(?_Íäö8nö·rVÀnþþÅï3Íá×2ÔÇùÒ|´`¹y8z+`¿…y>Z†á<ê¯@Ùz,açJè[Žv+pÜú,aÿJè³R‡³¸õ,`‡%ä®RC;|\  Þ"¶öYBÏ*è±ÒD;øi ;™—¼ö.®‚+èY ÿ­a§ êá7<ÀÎEÀÕo ÿmà×ZØ3õÌà×b 5ì±Áùµ°cäÍG=3_ ´¿káç:Ø)™‡zðc Ú¯Eyì“@¾-ì[ ך ì’¬B½zÀݨ}ëÂPe[Øg‹ãvãQòÖ…£¾ 굞D}Øaÿ£þZ_öðÃþÛ¢žü·{›ö(χ]‹eù¸~¯E?¬ÃqIä¯CêÙ«¹ {æç£p ê-.‡½ÖaÐ{ÖJ þJB¡rl!ßq°/är\>: €¦°¸z–Âßå¿z­Ãa&ìØ-A¼m!ßúìÐÞrí¹,ƒ=&@ø;çÍ€KàßRØ· ö.G} Øe9«a—uìEûµðG‚~‘ ½-ÚÙÂ;Œ7{Œc{.gÁNŒSŒCGÈ›ùfÀ%°s©&ì6‡Ý°wôYÀΕjù¸ õ­Ð~5äY£þØ»öKÔ°ÇöÙÂ^;ô‡=cì‡|Øã9ްs>Ž›—Hà1ü€Ý°k%Ú¯Ây+ÈY ;­¡w ô®…\ úY‚²-ÎÛ¢¾æ™=æ©æ©æ›#Ú;bœ;Â3à’PØm»q|ä[WjÀ~Ô³‚¿«a—ì‡_ká¿í$lÊŽhïˆ88a^,„œ%»þZâøJMØãVRØ}6ê°ò× ÖG ê9¢ìˆñë?àŸSX>r>Š%ä®4†~øi ýÐcÿÖÀ®µ+ÝŽ8îˆx9a<:a|:Cç%r~ Ï´„ü•°s쳂½«¡ÏúÖ Ý:ÈsÄxqBÙÉ=Î/ÎðóD9’óXø{(¿_¶„¾•· ~Z¡ž5ÚÙ ¾Æ©Æ…3ürÆ8uŽÈGÎcæ×Ãõ&h=œ'ÊyBÎhïŒuÆëŒ æ Ž¯‡?ë¡w=æåzŒSÎ3å<#gØí 9Îy{\B8¾ãg=ô¯7šaÿJર|´‚ßÖêùhùNhç„þtF8C¯3Öøá‚û_q¶qY?¢VJaG8ì€Ö8oû×ÀÎu°O;œ0œ Ç ~8Ù5 ä¹@Þz_;Öïõ8?òBÞ”—¢_,MàÚ­ŠÈÇÕk­ ?P ü\ÿ$+Aÿ:¢¾#ä9Á_' ãÈñu†.èŒ#¬óëáÿz.c.€} Ñæ(/…žeÀåyðõVBß*ôÃjØg ?lÐn úaü‘À^ ÚÙòýê9"žŽ°× óÏ ãÆ v8›á ô»˜Ãá'#ä¯G¿-Ѐ߰Óí—Já7p…Z>Z-!%䮂=«!ÏvÙ ýø¹Î~ã¼vØBž-æ‰]h>ÚCž=æ‰ô; ¾Èu ËG'´s‚~'ÈuƼt†Ý.¼®ñú?\1~@îBØc¹KQ^\¡ž@KI>®ŒÈG+ؽZ3­MóÑí×@ï:“|”ÀN ŽÛb>ÛAŽÆ…=Ú;À^Ôs¡?0Î1>œ°:ñú yΰÇóÁ~®‡œõè?Wøç 9 ÃÑ/ðkiú¸r,€–Røók¡ôK¡ÏVáŸÚÙC¿=úÁv9 ¾Æ•£ v:ÁN§Pø ¹Î˜®°ÇãÂõ]ÑæÆðò–W žÐòm!ÏóÖvÚ!ö¨o¿ ×õò`?ƃ#âãÄë=üwÕâ¸+üv5‡Ý(/€ÝÀðÇh‹þ°•ÂNØc?í!ßö;@¯ê; nަ@èq‚|WFøãŠñêŠñhŽvKe°¸öÛAŸúÁòìaŸÆ…ä9ª_GÌsWèq•Ccn;ò`pÚÙc<ØÃWÄË•ãÁÇa?ÿQýÞc\;—W@¿üvåñ)†#€ï®èsÔ[¦¹@WÄÍ•û~¹A¯âï†únˆ¿›ýë¦ Äxpƒ_nè7Øí†8»Á7ÄÛ ýäÿÝàìwƒî°ËrÝaŸ;ä»#Îná(Ãnwèu"nˆ“ÊîðÏÝ»Ü#€2Ôç2úÁñpG?º£ÿÝa¿{^>zÀ~Øåû= ×ò<Яš@ô«‡1þ{Àoøç»=Я úÏþz <Ùøï ;<¥@Øã‰~õâ2ìó Åq”½ Çv{¢ÿ¼Pö‚^)·‡_ža8²ì‘všÃNØåvèOèõBÙ ç¥Ð+]„=ðÇñòDzÂ>/”½p^ª D¿J÷ ñ÷@xÈ Ï¼PöÂy)ü•ÚÑRœ÷®yl7Æ•'âí ?½PöÂyi7 x˜¹ˆ³7#s ô{äA¾)ÚA®w#à üö†ow èD{o¢Ÿ¼·ÑÏ^Ð+5:_i.êk/}€ïÒ3@È÷n 4ÂM [Ì_)úI ÿ¤áÀ—hñìƒqâƒñá«9¦¨²ý'E?I/¡Ï~ø`|ø„A^i û‡²~HÑßRž?!ý¸ðÁxðÅúã ÿ|¹=ŽKG£>úß·2öû"®¾è__Øá‹8û¢Ÿüà·o(þúÁ~?Ö»ý ßzüGoêÝÆqØã½~ˆÎ{c¼ûã¸:~ùIùèùæø{cÜû ¿ý0ÏüÐO~Qh‡ùä?íoŒWøç‡qîyäo d}aÀ<´ƒÿþÀY@È÷G|m;ŒC;øã  …<ô“?æ­?ô¨¡ÏõíÐÞvÛ£½Æ¥ìöAúc\ ®¨€ñ`‡vv2ÈC:£=ÆYâ¹°'óÜõí{SœÇx€Ü¬/Ј8¨¯ø€ñˆøÂ~;ÄÏrý1Þ0^X?â»5€ð#ë¼äú@¿?Ö1ÿp´g;ï€0 ÆS Ö¯@Ø(ò¸C¼±>ùÀ>ž§ðß—ãfļ €ÿ'×<èÁ8 „ýX§ag  úOo¬k>ðÇ~úò|B\ýá—?®×þX4€è§'ð/ëe ü Äz»× Œoôƒ7æüôÿ¾ˆ«/üó€ðËþûã~ÀëMì0ò8ÿš@ôC Ö«@øˆq¤ÄzíþòQ¢|Ð?¾/¾ðßë’üðƒ~X'üÐþè7ŒKøÿ‡è@â:ÿ1.ƒ /Ȉ~ðF¿ú`]ðÁqô›/úÃëŒüñƒ?~X?üÐ?þš@ þÀŸÄ%zÑoð#0öAOÖ÷ ø û°ùà¸úÇãÅãÖóÅ~ø¡½úÅýåyâ?àGú?ëLìÂúÿ|0~}pÞW=@Øå‡v~ðÓë®?æ…?ì€]èÁúÄö`] ‚½Ájù(åë.ƻƣêûa^úcüúcœûÃÞ ¬SA°#ã"ýá?¤ê@¬¾·~Ÿ~æ@ÈóÃ<ó7J<ÿÀ°#ñ F?ó}5ßB¾ãZŠy$åy„ñæ‡ñáù~˜'þ<® ?ýŒxC^0ââ ¿=aŸ?o`œJM˜R¾ÏQÂ?MÈU"ÁhŒxc}ô@¿yÂ_OÌ3/ ô`|K1¾¥¡ÀèEü¼á—7®+Á¨,b FÜ=a·'üỗ^¾o×òxÀ¸–b>x#~Þ¼N"~ÁX—‚eùÂzPß~yÂo/ØçÍ×Ä%~…ÀOØåy^!‚ù‚8xá¸ú+8ˆñ}!Ï!迌/u æ•òƒÑÁ¸ Æ:Œ¸… ]Ægú'ëKˆ äb\y…¡=æq0ü Æõ%ëXæAˆ&Јu#qáë ÆW0Ú£~°9ã8ã88íaWâb äõ ãÈ_ ¿üÑAЄþ†¼`ôk0ækp(0ˆu+ã=ã7ý‚vÞèu ÖK¾îò<ĸöÃxôÇxòçûzô³?ì @üp2J€ð;ñ†Áð?ú‚1O‚aO0Æyˆ9õB ×ýïƒ8ùà¸ÖA_èñE?øÂ^?ØëÿýÂáƽ?ì÷GœýawÆcæSäaü±ÿè· <ø¡DÿCo0æG0_§°þ†à|ä…ðû‰ø‡qáƒó>X—|¡Çýå »ý`·úÇóÎóØŸï§C°;Àý?èÇ@)ï[0ƒ`OæC÷[8õ‚y}0ÂÎ`\CÐ.zB0þ¤ˆ«7ßg >¨ï#C?@¾/æ/Æ™/üôƒŸ~èO?øé¯äç'´ó‡Ý˜—°+ã1ã(ýˆùÈý‡q»‚°î¡ŸƒÐA¨Œu6˜¯O°38 ýù!¯!°ÓG¹>X¿}!Ï—ïÇ0}á—üò‡þÌÓè ˆ€?è¿@¬sˆO ÷Æuô™ÑoAè— Ô æõ?ûB°>ú ß|ÐÞóÚí|1|1~|ÙØ€ñ¨„¿OèÇ@ø™ßL„õ5ˆ×møÂãë]¯OðÛõ}0/}5`ìÃzˆu-ýhD¿ ÌÇ È B‚àoüü¬O!|ãÂõ}ò`®¾o¾ü\Šu,ó)ã-vaü¡}ú5ˆÇg8ö‡ðõqò6šùúÅëäø`¼úbòżĸĸ ÄúÄ÷)˜_!°7„ï0þ6À~)Î{«1N¼oèñæõ&?|1ÿ}1ÿ|1.|yǸ}!yЯÄüÚ€qàÍ×kžßã‹þò•BŽ ˆþÙ€ñ±~lÀõcÖË @Ì« ¯0Þ7hOws`Ž£_7À_7ô›;丣ŸÜáÿØ»ýÙþòï ñï׸Áwèw—ÃÑóbÆcy´k ÔòïมÜ0ÞÜa·;â·Áˆõ^íøw²´€ü{:n¦@Ì·<ȃîзëö¬ó0~jAN 6ËÅüu E}èÙ€ãòç“ZA<7”¿ú½4ÖWبä8pÿ©þ>˜êïa©þþ÷û¡ÊŸ+êï1® ~Ý_åÕõBYõ÷'ú üÕï ¬ºŸ½êþìPþjßo”U÷±VÝzÊ_íwŒ²ê>¿ªûéš üÕ~µáùøÕ¾³8ÿÕ>²8?ç¿ÚççU÷aóócpžyƒb¿Uœ/hßÕ¯öYÅùq8?ç¿ÚGç¿Úÿç Üßç¿Ú·çU÷­œŒó_퇈ó_í߇ó_í_‡óSqþ«}èp¾Àýè4€¨÷Õ~_¡@n'ËǯöaBû¯öB{Õýd¾Úí‹ûwÊ û=ݯøêhÿ­¿ëúwyÚõ»¡h/xÔh/òkо@^5ÚÏCûÂxŸâ÷@ÑžùpÌoc~Ö|´g󆘇ÃüΣå¼SÎÃä|Cæ™.@{æ 2ïù{ÌÇc~ó·˜?Å|%æÿ˜¡=óPp9ùÇœ×Ëy°œÊùœïǼVæ«2ÿtÚ3”ù’Ìwd¾"ó™Gȼ@æý1Ÿo1Ú3ÿŽùt̃cžóĘ—Å<'æ1ßf ÚsÞ²9ÚsÞ+çwr>#çûqþç§q~çoq¾óv™‡Ë2óŽ™WÌóâ˜_Æü.æY1ωyEÌßá¼~Î{çüoKèç¼^Î{e6ó­™OÍühæ;3¿yzÌwc¾ó¾˜wÅ<'æ1oƒyÌ;à¼ü•ÐÏyØÌûf^÷*ègÞ5ó¨™ïȼAæß1ÿyhÌcÞó›˜GÂ<æA0O€óå9/œùåÌgþ·ô3”ù—Ìcd> óñ˜Ǽ4æ1ߊy-Ì+a^ó8ŸóÔ™·Îm Ÿù‹Ì#dóæ˜ÿÃüæ¯0¿ƒyœÏÏùíÌ»g>=óä™ÿÎüvæs3¯šùÌk ŸùµÌSe¾'ó-™÷ȼCæ1¿†ù'ÌÃ`¾çß3ÏŸùûÌËgÞ=óê™ÇμóµÐϼkæ33˜ù´ÌKe^(ó3™É<&æ1O†ù"Ì‹`žï/Àûð¾Ìûg^ÿ:ègÞ=óä_úÿvþ/ìÌaþó2˜Áy€œ¿Çywœ7ÇûRˆý%à¿Ø—þ‹}à¿àÛÀÁÿ‚ÿ9Ïóôx ±ïüû.À±üg~ó|˜'Ãü{øÏ< ÞÏ‚÷•àýxŸÞg@ðöá¿àOÁÁÃÿ‚WÿE>$üçý+ľð_ìgÿo þ ¾ü<øÏyœœwÉûQð>¼Oï;ÀüAæÅ1ŒùPÌ'<øÏûEˆýà¿Ø7þ >&üw„ÿ‚gÿ_ þ þ üû"À±üg¾<ó>™Éü>æ³1¯‹yQÌ7bžï»Àûð~bø/x³ð_ð-á¿àÍÁÁ¿‚ÿ¼‚ØÇþ ž?üüaøïÿ¯þ3?yjÌóâýxßÞ?€ùü̧g~2ó™'˼QÁ‡„ÿ‚ÿÅ~ð_ðóá¿à=ÃÁ¿…ÿ‚g ÿ™_Çûˆýà¿àåÃÁï†ÿÌ[f~/ó]á?óyÿÞ?€yþÌCg¾¸àiÃÁ†ÿÌ e$ïC ö €ÿ‚/ÿþ ~5ü¼\ø/ö€ÿ‚wÿŸþ3O›ùÌÌïåýx_æû3ŸùöÌ‹|tøÏûˆýà¿àçÃÞ7@ìÿ¿þ ?üg>¿àÝÃæß ><üg^¼àŸÃæ¡ þ6üg·à7ÃÁ_…ÿÌï|VøÏ|_Áo…ÿ‚W ÿþ >#ü¼Kø/x†ðŸù˜‚÷ÿþ3Rðá¿àýÁæ+ ¾!üü>ø/øðŸy‚ÅÎûƒÿâ»ü<@ø/xyð_|„ÿ‚/ÿ™èÿ™ÏÇ<=þŽÊßAù»%gdž¡;ü¼Bø/xð_|…ÿâû'üüDø/ø‡ð_ðá¿ø® ÿù;*÷d^£à/ÂþnÌ߃ù{.óoþ3Qðá?ó?þ ž"üÿnüDø/xgð_ðá¿àûÁÁ¯ƒÿ‚¯ÿ™×È|Fæ 2ÏyyÌ£cž›È…ÿ"Oþ ^$üüGø/xŒð_ð á¿àëÁ‘ç ÿEþ+üç:烣_D~4ú‡ót™ç*x¬š@äþ'ò=ïù‚wˆ¼ ÁóCçÅ‹¼tS çi£Ÿ9¿y´‚‹~üS ùA‚?‰¼ÁWDþçÁ‹|ôP çi#N‚/Dþ“àu"Jð*‘W$xŒÈÿâ|sÎÿæ¼"æá2o–y®Ì[eÞ(ó?™·É|KÁ“T"þ"¿œóÂÕœG„ø ^¬ñg^(ó9™‡Éyú"_žóל…ø ¾­ ñç|wÎWy^œW…ø ž¬9óÀ·<^ÄŸó±þ2¯ñ|È0 â/øaˆ?óœ˜/ÄyÖœŸÌy»œ§Ê¼aæÿ2?”yŸÌßd&ó*™Ǽ4ÁS"þ‚ÿƒø‹|oΓFüE¾¬ó*æ% ~1â/ø½ˆ?óT™oʼQæ2“ù–ÌGd¡àù!þ‚׆ø ÞâÏ<"‘¿.r~ â/ò^¥@οDüEa(óêæC3™ùÇÌ+f^"ó™‡Çü6æ‰1ÿŠóì9?ó¶9O™ós9Ÿ•óD9“ó9¿Päÿ©ÁFüoñ¼;Ä_äsž4â/òi5œŠø‹üFc â/xÙˆ¿àW#þÌŸ:â/ø’ˆ¿à"þ‚/‡ø ~ â/x ˆ?óî¯^ DüŸñ¼GÄ_ðÁCü™ÇÃüæ0¯‚ùÌçgž>óî™OÏüaæç2¿•ù¢ÌÃd>$ó™/(øzj@Ä_ðXÁc@üïñ<}Ä_ð„Á[Eü/ñ÷7"þ‚ׄø > â/øˆ¿ØOñ<Ä_ð¼Á_FüŸñ|QÄ_ð)Á_Büïñç} Ä~a@ÄŸùþ̧gþ;óЙÿÍüjæ'3ß—y´Ìge~)ó=™Wż#æã0ï„y¼‚Øñû þbßÄ_ðôÁSGüñ|_Ä_ð½ÁBü_ñû) þbŸÄ_ìC€ø þ>â/x鈿àI#þ âÏü,Á[’ÁAüÅ> ˆ¿ØWñû þ‚Çø ž9âÏ<)æ1_†y'Ìïà}!xŸÞÇ÷aà}xÿÞ7€yù‚×®Düÿñ<ÄŸ÷“ûEh±Oâ/øÿˆ¿à}!þ‚ÿƒø ¾ âÏûQˆý$±ƒ)ñ<"Ä_ð^Áï@üÅ>ˆ¿ØGñü4Ä_ð“Á§AüoñûC þbßÄ?0ˆø žâÏ<"æë0O†y)¼ïï÷Àû)ðþÌûg^óǯJ ˆø þ â/öe@üÅþˆ¿àé!þ‚§…ø ^âÏ<ÞçA움ø‹ýÁEüñ|0Ä_ð—ÞAìs€ø ¾¿ˆø ž!â/xfˆ¿àE!þ¼o‚Ø·ñ|ÿ0 â/ø¬ˆ¿à3"þ‚φø3ÿŠ÷Cà} xæõ3ßžù¿Ì—e)ó%™(ørj@Ä_ì€ø >=â/xň¿à§"þ‚oˆøóþb¿Ä_ðóˆ¿àõ"þ‚׉øó~bS â/x∿à]#þ‚/Œø ¾(âÏûˆý¤@Ä_ðÄÁ§Fü/ñgž%ï; ö@ü?ñüsÄ_ð´Á÷Eü™ïÏüzæÃ3ùåÌóf^´à «ÁëGü¯ñÄ_ð,Á;Dü_ñ|HÄŸyÌçcž¤à+ªæ/ þ :ñÿ»ü?U¾Ÿ*ŸO•—'xuˆ?óëΈøÿ)ÏMíššÊ?Áw+¬dóט·Æ|5æ§é™fdÞó̘WÖ Èü°À!@æ]1OJ𛀅ñ˜Ç£ž*Ÿ‰yLQf¾ó†˜ï#~ÿ eÁ¯ ÍGÕß/ûü™?Â|Áï€}ÌÇ`žó&˜÷°õ˜Àùøœß.öËGÎgyÄh'~÷(òJqžó1E>%Ê"Ïë€ØÚ<E^Žs^çqžŒÈ\Îwù&@øûÕwø‚P]¡ç«ïô˜gâ»<æø/b=ßÕ±¾ˆïàÆ@´߯Ñ^|·†ñëœø.-býß™5/¾G䣸þ }bŸQ/ô»$#úá«ï“èñ]ö‰ïzðKìÓ‰uP|ïº&¾_a]ß™Ð^|ÿ_bßKÈß=`ø.þä÷þâ½;ê‰}åÐâ½&¿O¸ïÝ`—x¿Äû~ÂïCø=¿¯àçJ~þ‡Ýâ¹òÄsÊâ>›ïKø~ï§øz?Äu\õº«zýU½3t=æë._Oq3š«áß®â:Á׿)«®ÿÌ72ÿ‘yŠbÆñoþGFÈcÞóï˜çƼ.±™ÿüœ¯Öeõ|dó˜Ày÷œÏÎyâ"ñùÄyù(òi#òQäŸB¿Èç„\΃yЍ'òýPO¬×XWDžÖ1‘'¦ 4‘υq*òµ¸=®b=çõš×iØ!Öåp ìyKhÿU¾RA¨¡‚Ð+ò™ŒðG¬ó¼žóº ;E~üy6¨'òh ï«¼Èy2ègÎky(Ò|y8/ò `§øîŽuD|¯.h]Åý}ßw±¾ˆï¼¼c½äï}â;Ö5ñ½ë΋ïX/ù=¿x¿Îïµ!W¼§å÷¡üÞ‘ßÿ ¾â=¿×â÷O²|ïsø½ úM¼¿àçKØ)žÛñ\Ìϱ¼^£¾X·ù9Ÿç`—x^ãuŸÇ$@~Þâõ×o~nâç!~Îáuó@<Ÿô\¢ú|ÂØAá·x^áç~>áç~áçz¯æº÷R}J ¯³0ï@g’Õó¶Üp–>°Eý1¥ÌÚlìy¬åÔáWê’¥EÞ˜i$ßKÉ×~>˜R‡.ˆ:Û6…².xeZœw£»kun\È3¦$;¿?IêPªDâÖàýLJéῼ§ £"­üÑÛƒ¤ÝzûQ²ú/õ®U #Ù'Û±76 ´„ðÛ“Þ,§œú+ëu¦Ô‘Õ=çìÚEI%#&ZÙ줄~ÍšvðoF©'Œfõ}2™²F>Ìx•çDò/ŸÇjŽß¥è/Ùô··oÑžw¼NÝ0¡èÒ\ž{’"/ßÖ<F±Ö%êøfì£ûÑ‹ì‚S?S‚óNÿ+çßSJõ Ô}³¢(³fÞ‘ §Ð“ú? Ý™KòçC·öܵ”R_ÿ¬?°)%¾ª»øK›=>@ûELczÜck¿Ï!RJ÷œ´vç½ú”yqot=E¼|FY–¿{“²*žámA97× Ù]†®ÙÖW¥6Å [û‹{¼6%^¹·Uk*%ùTììzSR»^yÒ¯m ’çe:ÜØ–@9¹w\=#‡Ò“ÊÝçm–œ£ìˆ6]×%„S–å‚)ÖO>Sv¯3·Æ~!y¨s}ãGËH^J_þ.î>evH]-§Ô!‹NúªŸ¥¤¬«:|¤ÇOFvÛfCiÝv´ßñšr+:¼õÞ‘r?vh2ûJGº|w¼÷8ºkSo×Öɹ_ÆpiÒ©‹”lšónlT8å<h'oFÙ‘UÂ#½H¾ÛÇoà6#JÏ\ù©n…ž”ööxp•®¥(³ß´%/š¤“Ö£+¶mIY½ª©wVÄ÷^=w#»ö”2±¤……ýIJ9öÚ©VÙ^”=êHð'Ë×tÉuõà9k:Ó}{w¸÷–Í-9p˂Δ!©ûq²Ý’ÞÜšõBʱPÓýy-ÊVqãÂè’”cÝæÌµz¯){žd¼ÿ”z °·$j1¥ö)nû„²\F>»qÙ‡®nûÞè&Ý_ÞøA£Å©”ÜR{ƨ‘”>áÊÎÕk?R®±_ì‰6sHÞnlBùíG(«Ù„} /OQæ­Qíú ¢Ïfµ,Jl§ŒÓ²Ø¸àš”>i¢I‡0u’Û­ó«žöŽn<ÞpͶí»÷§3rPòÅ{CZͺAOZ5sªYrǯ\ñkEOÊèi¶~kã$J³úm—Iì}J_[{¡cÿ”}íPÚíÇ‡èæ¬+ö+ziSì¶Aû­tH¾ïܵœ©”ûp\ÞIŠuÓ2uÖÈr”[Ý{ÿ‚¼a”¸mN¹až$_™½üY%]’oÏN³·å¾\þ¡÷ýz”éÔË.Ó­ ݯ‘,¹ç²›ÒnjíÕ§ÉMž »ÝX“rå[=ÊÖœMògå‡ÿ–òŠâoO»±° ed—}ï¨=†Òöí>ýŪ?eϽjß¿ìÅqÇ›³tÃ)µ~J¹£µ[QZÉ›ã†O:GqË~iù¢Û`Š›qîÉénÃ)½jø„Àn}I^Ã7hWÏ“”ݶáK³L/ÊztÆtæMÅúzoÖ†Á!g)÷ê¾Å‡ãQn©:–•¶S–÷¶+6G)ó‘yí\¯£”utÕ«ËQfBðÔÄ”=zaí£º£(+pô<ƒ®)½Ì¸¿þ6–r–¾¨ºÂ{7ÅøT©1€.SZÙžm JGQ®ßØ·;Ÿ)ÆmÜv Y¦e×rIó»<•䪬q²¤Ü¤ÆvPnïýõZ/Ó¢¬i£ü.M|Dé;÷ÿÚkeJ_ênj;OŸÒ}8Xe*Öå‘'ö}_‘äm¶Œ{5?Z1ç¿pÓÒäûlñ ”v±TÎ#YíºþãPz´^b5eM¿5î}Ûtº·vÙw/éñù3§ û§‘ìʳ±óëL9Qöi&[Ü)·L©WUÖ.¥ÜúÇ}mv|¡Üiåî<õzDY»Õv¾[GYõ:Ø×©bK[n^]kEYö.N-Gò@ÿn7^¦Rö±ÎwÞLÞG¹ËzªÝzшrר ‘ô€äc·–p©C™åâ­›âM©×J-죣G)ÍX†æ- DiÿÅ}v’LøÑòµŽPªÆz§ÚS¡¬àà ov‘‘|Ë›ŸÏî Œ÷×çÕïôÉ»¦úæ¼¢˜«MÛí8Ñ¢ŽÊL>Ú”b]Ý2j†jP¢¹éJ©¡Éœ–6¬NŠùò›u^ðF…=úf¾Í£Œ/s’ê4ÊVÌ ×§·5?Ò­AKûº¥C‘kÖ¾’I‰oSì›[Ö¡ä-Ýlê• Œ 7ÖxÔèNòaW—ø{¨Qn匙-Æ*ÆQ़wæRÚŽ­¶oU\׆·~ffGY§Òz^èBYwGi4’ÓõwwšôÞKò¤ÓG^•mE©Í³5êšö Ù>»ô;=)jqW¿²º2zX£ùÖòs”¤>óØØ Gׯ³Ö·¶·TÌwÇ›:»(û·–®ÏêSê W‡;e[Sn×ûŽ7¥³Ý^LŸ•9•¢Æ¾Ø¹µêE’u¹VrÎ)Ê 3žpi7e½:߬b4eر]á5åØ4s^Ø|!¥W“ì[¹j Åt3ìû̱E5 ŽÚ«èÇûž›çh[+úóÕêmÏbžÑ£‰«=F-¬D©‹º_ªvОd#Ì›ÛZNWÌŸOG«NûH7ö¯^ñ%=µ¨1ªú>’5’Ç·³éOi^ää†Rö«™î^‡Sîýò›¶±§ƒÙKeï(gx…/NÆS¶Ú%ã Qj¿¨‡·”"Ùíáeý™ePáÐôÕU)«VОás§PÆ‹ ˆÑvÇI(wéqì*El¶lÖ™î_kÐ7ú>=°4Lÿ);ÊúŒº²‘R<§ØJ5§ìÎ _žh™Hi¦Oãïô,E—¼"t;uÜI‘eš„Ÿ®D ó‚KÔ;¡¸Nt»ä?·¯bÝksea³”{¼ÖÅUÏ4Inúdè©Å»(§líéû׎£ÜÑ-oEY¬äϱ?Qª~µÉa¥])­ê¶ç®”cœÜ­LumÊí´mç½6tÁÞ/jÁÅ‘t-!q–VE3Šz»yò‡]³)a“ûýmIv6"}^ÓG”ãÖÓ=fÃ]zÒájÝ­>RÊ/ã-¼öO£Ìì#éAíæPòOš#n÷¢ÌŠÓ{<½GòêéV£kQ†áé® ö¾UÄu“ñÞYŸ(wÓÅ.–¡ÜwëNyXT¢ì¼+U·-M¢ÌÚÕ—4ÌGIeݺ½O®¸ïÙ}禾b5çãÁÒtrPúIóýé꬚ný§Q”ëÁ#=Õ¿Ð#2{v¶‚býò Û[Ûi¥ííºt›ymÊ”\j]2ë% 2XÛ¿¹ ¥ÛÛ¾á½tJó®r|¹ßJy3.ÐvàkÊøyçÂGkH¾Î$yõ¨ž”»``“5›æSn÷Ãzö—ºPö‰æµGÕ$yp\‹E‡2ý§yе ¥Þ=û¦¦Vo:Ö}µ³ºÏ)º¾q‹}‰cèÁŒ36ã4÷y“~ºå­MÙ[l¶\FɶcB$Zf”’é<àð8?ŠVy£W£Vôس¯ÅèÚ=(¥ÒðaIuIöaYö‘eê”&,ÝQ’ä—},߯e_µºûñç;”µò`ØqÓ­”þ°b‡ÛZPFÆ€yÇs7)®}k¶¯¹‰Rß&|x¶ö<^”îYý=]mõÂmâ]Å}ïC{×6{Rʳ #jÅRNʬfÏŸS‚¯™ÚÍͯèQí®a5#÷9s?pËË hýãYƒîÓÃ/—ŒIoF ÇMëëðTq?vÛï‹:åôÔjN3Jþ˜sð#¥V/³CûÍ)’=o¥ôy)-†ÎR\ Ì–ÕtT\_{Ú´Ú¢tâ̪e—¡È&uW—ZïB7*ø¤:”"›Í–µN˜C>l®ß±%QÅ[ ž*®¯!¶š'ÊÇP†Þ¼˜(EGcQßÕ(ÑóâY?鯔Ò@R¦ƒÙ#J¾=çÈÉ‹ï(µÙœ~ÓöZЩZ¶óÆ4~B×OUW\)èaµúÞñëËQêºÕ{žE9GêŽ]輄d5Ç›/¤G×½ŸñïF×£å:m«@W*÷Y9ó£]Lª~ÂqfCºóP}þÐz¨u7ý–?QR¿”º%R%m•Zx$)®ï•JÎ\aõvòy_ñQ}ºzÇÂäè/rŠÊpÛ1׬&¥”ùõùxÅuPþd€ö‚_(=ëÉ•‡9‘”fÝdã¼½+(Z"ïbf9š¢#ÛZ- 6¡ë÷-ŽŸI¢i¦ï@w»MNê5&=ðrK"« J®£v8Pq=IëÐ}på}¹”6-r£ÆÞ`Jhj|üÀðƒ”¬]§â¨³÷ìȪÌ@uJ¾Ö½þOëÆ(îÇÍ®¸^N't2wwwªEWo…Õ+ÑTOqýëäÒù²¥´Y<2¬µb<‡-Ûª3‰Òßk_ˆ}ü ®gM[¼‘ºô¼øº“ÝhýØ6nBÝöy´êÔ~sºtRëõ*ñtá“aˆ½ÙLŠ2—ÌØé2ƒâ·ölm¨¸_× ÇWvÜòY—’¥»íÝFÑ}²:V«J#œO¸Aic’*ÜüÒŒÂ6kvª]Š¿ss|ÅË9~®~¤âù6±ÜGO»‘™”þú釟{”§ô´U¯ 9H,Æ\{Y–"úz¿íß“"Ÿ—¨XcRº|*¡ÊŠòRºU¯ü¹¾³jÓ½5+ö¼ÜèN7íƒV¬Y®˜ïS2«§SòÚ:WŒ×/ Ü%’Ç] ¤Ü÷Á ¥ÓgQêŒun„éPjfeŸ1¾£(¶qßJÏ7)ž›÷Ó²<ú†ÒNìuÿ¹Ý2:Ú¼Êë:ÖtÙ<í\Òš}éga7dk+J´œÓfã]}JœÝ¾…wR%ŠxÛÃêä¥öta¯ýÄU-ËÓµF#÷¿¢³VyVý—Ð5»¾W<œèA©¥+ftíH:©_w¨&e Ý·yÀ§&”U~àü«/gQV×%žw×T\ç¨AÀ…?÷•çòË÷(%æMO_õŸ(E="xGz”ݾÛõÄ2—IÞýõ”ö;»ÓÁ†£ªú¶EÌWºœÜ[žî×qÓ\‘=€¢+XÆÖJ¦[ïTYÖ´ñÒ\l׿,]7°=ô²n$ݨ>å´K¬k:1’ä?ìÕØrN‡îwö–Ð!³ò£oßH×›vþJûWtã³›z·çÚô°ÕÐcÝÚ¥Ä-ÝOuÛ°…rë͸£yv e¸œµ¨‡âyмúµ*“(¥V3“qî–”O@ñž3?Ÿbfº»ª{{º¦:T¹´QÔðé°ñ Úmèâ„“¯Êìsé³"õ ;àâ¾á ÚÝÒ‡˜§¯nïhZIñ „õ> EÉŽ[§œ|%Q)›;¬ý›¹‡Ï‚²I+r;u‹â.ΣùoÇ·^ÎV¥¨OPš6nµ}Ð {ÃíÒnÁoô3… ©×¯[Ïžpíö‘‹QEž[¸»O¨DÈöµ:Ê{<•æy¿ÕÑî¼M§BþÖ+=TeöZÑ’ðeiËU!Û©lm@ïÚPÔüó©S=(~ntaì4?à[8ÎSlÛ.÷_˜Ø#âUžÇ~8à©'´¯¬ÕJ¯·mܽãdà µÇæ+öƒÌÙƒÂ.î`»1ÉAØ2Ë#þ”*Ä(Í:5m/$nÕ^4: [ð"\TƧìõžOv²ïüŽâîÁ@ÜÕðË¥Ñ2»jàîqÛÆ&ÓÈÙ{ÔjY-„=_i_„„é ûä¼!ãøØVNÅÀiîÙ>d—ì{üÛú;·LÀí¸ÇCö)¯ƒ´Ýj+æYäAÆòÅC×›'ÓO©×·ªQ‘ÑÓŠPr;{ÿ76²÷kó³“+ÛBº•æå_" ûcRC5…+²÷!¤K™}ÈÛ­§6¨ä…ì;çĽ=;!Z½ŽwlÄn™~ Vÿèg ÅqÛ–®NѦ·]_«‡ƒ¤ç”“WÆeAÁfI¿ëu!cÿ’õ‡Ç…A⹇¿­}99üÝ‹…œ‡ù—öC‰Ö„‚¶› AºÚÄx¡Õx ½24äv"d8fš)| \«”—uK›Ø|žÔÇjˆ=7wî+ðT‡]¹k%…Ìu ®ª®t„,ƒ†Ó‡Lõ·cZ S킇=sûïq†²}+›¶Ïá§=Ú‡„ø Çê=ž¿ò¹J×öGšÏ¡îÝ/à·‰7]7JÆZu:&û¾Ù=üBÛ~ÈŸ°IõU È)ŽYoÜs?p™ö»'³¿\½gœØž¥Ã9ûÍ„d÷9NýOšANùòQçZ´¡¶Õb…Ù÷‹MÀ+÷uÅP³!g¨é5(29¯=â=dönùÐãv àDœ»ÓZ6NÍlVüÍ ì13SÉRHjžÙïbíÃPÜ]<ÈHº_O™´ÇÙ ›´*hœ;ëë%yBé¶NKëïê%: ¶EÉÙ ,˜1£µëE¤?aßþ4”7Ùê?ýárH-Zu~Gà4éâ3éùd(,S|¨õ ®·‹~  Y¯;uámï ß—ÇLñÙ7G§|}*‰ÊJí™ó ¥_W³¯v©Pr5ù[Ï9PlÞã^·Æ!P²Þ}zÈÇ(køhEëcà‘ÆÁ¬ÙËVBæ‰ívÜ$³_¶^¸iø Ä[œ^|Áƒ„¥…Ù:1ë¯øtgD.ðŸtÿò’Ž:ö±ß× ÝGžo`!ˆÜ’߆§F“¥ÇZ¤„ÂÒWÙoiše¥Ñßiå¹NFPbçk6²Ý¨\òÕty‰º—lì\ÚCÒìÃû“f?è›R¡C-ˆ›rñh}§†½Q°2°ÿ[àž×Y4kˆÝ/àÞˆÇþ£ç€lç¨ð™EfP2î¡ò«£û@Ò1ÊÇl’$¥ÏXÒäd inäß-¸†Ý;¼ºÞÊ'N´¾¼èÙNKÔ„t³G­èÍÎÕe)·öÈÆñwª}Ý f³aôˆî!£n¸¹Ö;(¨Å]–2¼5ðg%¨.¬gµ«GÙÍ ƒkßö3»7«óÍ'…ì‰Ifó¤À½¾7>bÈ"à5}=$ºÞ¸zh·ÂµðhJ·Mu+Cƒa[ÓÜ>PºiÓ§@ÍÚ 9ryWÆ0¸¿(bvt0dæXe¾Îm %ÓÝ|úòpr,[ñïlûZ ΄§¢÷ûA<¬Åº~³¶Ãá£.;´ L5$#éÓT(œw-}Tâ(,šª¾¢À„×Äc¾–=±bƒ*¾M“¡ôöÄ$ÈËzxÍ|F1Ï´ZÝûÖ^(¨3q«Á—“ NVqm“šùÆùÏæ¯ždù5¿: éX2zºH="Nõo2òlt=Ï·5€Òð‘sãÎËìøÅÏ®­2wé³¼™îI. 8wr‚ §/†ßNµ8Ù$“–wØdi9ëWíÛ …–æ ·dß«³4g6¹Ñø­?h?ø*[¶ÑÑikžkHçßsq«å’ š­¯5è"Wj2»¼íÉE?ÈÅÙãxé”hܺè‘4 $ ßgo³¹<»]s/N“}·[ß}0¥/ˆW­n×÷¬lüpŸi~nȼh;=_#x ƒ>§öú"Þi¨½<±i¾Í{Ò=4ζè¼pGˆ/ʺ <¿I_FÖUÉ“Nù§AÚÏBòó fžã÷Y§v¥Zo= œãOßÚÇæðRëyŸ„õ@‘ñáÌà·üÖaÅ"àÄ;*ïÝz¸j‘Ê[E„ÞïÞW’n}tp¸ð Š—³ÔyüxŠ_ o@éúSmsæBI¸Cê£ìTÈiì®®ùÈŠ\#;&ÚèBQÐØz±¯ tˆE ¸cˆÛ>µé¿ÃJä~[`…ç—½º³ì8ä—Îé9ëãàž»×xËËž °zQnå%³kCoJ²û&ø^wéŒ A:|ø»~¼½Ò*àÝGÈ^ѹ»Ë”xÈðóõ¬?ײ/ÕN-.¿ iÍ ô/O y¢îV-»C±Y¥ž®PfjpøNÙ÷NöÙ¬Ýfp|Dò¤= lìñ5-oe@aV/Û…Oú@ž¤þΑd߆ïMßyËìõ‚üÃ[À¿xåÀÐ29y_x× „O‹Ôë…ÞIøóc&O·ÁCãÁÙŸâõ´Þ…ÝËöBÞÕá6Ý CḉµÌ¢†CI®wÉùÆÍ@ðYµ‡ôä&H‡–"·ƒ»?g}ada“þ“dýbcaÉ¥ý«@8¯ÝýÕCÍ@2`ÂË(ã– þ`©]ZÖxoZžÍl®\ØAÃ;¸@ÑSíàBÎ×&âSß4€§žç4j~gVrŒ1ô„{]Þ×*š¸ ÏÙÿ<{äØ{0zƒpÖiz 4i ¦b¾™XƒÔhDa´ßˆb ¦-ß"¿¨ïU{AÙûò¬€«Õ¿WФ%ðÛiQ)?3ûܹ9TÄ“îd‰Å 8øåÓ‹É%ÀíßcŒíÊHà¥|[ä7dˆ‡ë„|é뇭£n½"?3ƒËFøàcË#3AnQA­Ù{µ€»ÔÞ¤WÌBªe‡MxýJf¿¥l ‹—§ê/Þaá‡]Ÿô¸e>éJ¡µWh_\Ô\H|F;Ÿ«Ÿ<¥ŸToõ¾na”éá(Ù÷ö×&°¬/ßÛ£` ¤\òLÉ =ï¿My۸럯ªß`=ˆÌWñ®êÉÆ÷î{¼jë¯SÌëìQ<à–ùz,á$8¢G}¿¤€`ؼöÇMdé»)Ìv)QI“èø/z ik˜Q¸â^&=ûÀÒOåœ(•AÁH7éý7ƒ@’o¶>Âo”÷Þ —«  â+I'KŸ5I·C^b+Ù÷“êâ“Þ'Œ ¼v¢½Ø7 ø§‡*Ö_Ýx×|›ðŽ#²lÏ¶Ý b³¤'¾vÙ :×htÓ+sà~‡wVj‡»CúÉo ‚À:h«Rà |öFzÿËà•f(j·)Áާû"ŽËÆ÷¸KkƒU @:÷Ò%á ™]®ßñäz Ù4aÿÀ«²~¸$úÑY»·ÚòzïcÙ÷ÏÒ˜óâ)$ìO¹oÞ£”DäNì²pH¶jät+6©ã¸tݱ Zß¡öâSs¡\Ýöâ…) Q­å¿²{𕞾¶X²Ûœ˜$p[/³¯ùŽÞñÄ[–M¸ ü}¥>Æ;²zìéâÑ]—ƒ]~†™IO™=Û&ôÌñ 2g|þÁo êh½8¼±ì} ‹ä-zu ÛúΓ=nî—~;××…Ü©’«CwCö-Ž‚ÃÔàwW 2$¯L­szÉôÔ‰Ë Çž‚dŽ›ö™Æ¯@jûä°]T×÷¼ÄAc.J_´‡²õæó¾µ^âM˜¹¹MæßÖ‰¨<×À•§ž¶éýí7TTuAÚÝÖ Öœ’–'u¿Nn&¿Žyëåí‹Ûïéõ3·'>ÂMžŽBÙçu#ûe7Ö_¨rÊÊÞu:õDzÃt¾^i“òœ¶Ü…ÀæÐúŒ€²‘}¬x›Ôdö;7ôúÔÓÀ?¯øð)ð×¾$6^Rè>¤öPF6MõL)KϨ̚?ŠŒÉuõÝ œ bw‰Çn­5›ºËìùÄnr5 \ñbø‡ãÁ öκÑ3Dæ?ô”Ù3Ó¾¾?îâ0¿  õ@Ê)*‰k#ë/ã†÷]Þi€ì½ØÓïÎ5{(Kru<>J×\p˜·ŠúŒ›Ð$383»d$'ÊÞóÉo9aœªôãš› ½ðþꇜî 4y‘12QfGmÝ3Ûy"dùm0ï­s 2U–¶Œxú rúFÌ>5ù ß±¹{ošûöèäeP––>óÁE\×7þð‚\¾¦Kdã×°ºEºÀ£'Fœ™-“ Ý;Áyæ¢ZPd6(òȇ2Ùw¼þió>ÏA°yãÅȬ$ºÜUUÉQÒ¡Ï|] ì«¥}³[ùP¶ä…søýX5¾ÐßîUW[=êáÙ{œµpY¾«Ì.[Xçƒ ‡‹7žï÷2æÚ)Çw<9¯&Ú×…ÂNÜq3‡ï…bÓ''$whˆW¨½ÌNhÙÊkó‰+ÀÙ»--cŒìýí4dH[‡©p÷ÜÆ¶ŸìŸ@fÂc󯛡X8%úøÔ=ÀDvlzê2”ë×X?õ#xc:®¿ â&ÇZÆ “}/Ù¸ù<›ÛÊæ?]–ýâ!dœ•ÆîâGÀ“`‡•[U@zý5EŸ3»CÖÂ.Oöú@¾ÎRc³>P²Éeªæ+ (8®Öο k¯6c¨'™j¿t$HRžÇ~åcWø–•/i°B[Åò#ˆu8u°µ¹ÌЉ³i,G¾Õ;®8å9H¿¾yì2á\ýúqSKÎHL~þZ9æ=dΨÓqmóyÀëÛp{—‰“@ÚùÙ“e)w€ö>ÍužìûzäÁ°3íâ!Gl7Í’›¥»"’{Þš¼ˆÁí¶}M‘}?¶)©+ûÝÅï¯<ÚÞs”ì{t]-ÓÜú²ïíÞåyÚ õš¬ßçNˆýú.\ í*Þ­´â-œÌKZlüì™mëu†²ñnårŠgéø¸× ¸‰æœí©©f_­fl„œiœú§`p”&Ü笅Qvîå› t:­0z›ì»|Û 3ôdö¥ ïÆ–EPz*¾Iã\àßYpöš’ ÿ|k{MÖ-‡¥Æ¯„+õû«Ýk ‰*á¢áªÖu\š’Å™žY>ûþ€V ¶ zõ¶/ðgì|b8Û2ƒ›îŒ³Â“¦GÖÕíxxý•g¾™M—5<¥íœ ŒüBÁàzm›²í|HG?Ú«›±_&Ï™Xç— dòUO³çiPöjÚ¾Á#>CYû…1‡f‚À¿ÖyE {¸Y²ôžËÄðØèÆ’§iŠPXè𨈯ÀÛônÌÌ™3¡ô¡yëY7×§Õ˜³C쀤&MÅOÕ†G#rrç» ‚¸ÔØAïïo‡´g‰Æ ÕeãÓÜZSÖîÒî®?*ÓçyoŽ~¾5¯îÙÑ×dß±²ÛÕÝœÏ1 ®û/AQ[%¾ö¼eÀm°Áá‚>œßàúúó{xtxr{, +ï èÏ=egž ÎiÊÆÕIƒoù~¾0±yLüÈYÚdÖA@È5;pñ«ÑxÌ?]ßoÜ·zT;¯¤=¤ŽÓ›09R2mr:¿ èÜk …ÃíÁÕÕ¹VE²ï¯ƒÅ~õU€Ó¥y‰úÒÑP2äÕ;A+ ˜_rmž7x& ‘­’wõ•4[µæA¼Óűs–€¼™ÇO$ˆdvÏÌ…‡ÍéŸë~©Á ¸w¼W§VÀéÁu«ü ¼ƒWíú<ž5RŸ2RÍ›õšºÒâ¼N~~ÛâêêÆÞ w‚ÌÂ9'‡¹w}ïu^Û¾Ë+¾Ÿf öÆ ¤CóŸí•ÊÆÃiyÁíg„’H »BÎ!kq»©u Ôy¢á'UÙw§aÂöKçÃyQôÕþ—•61õ¤Gm÷(:_›7Ñ¡Ž]–úï‚æu”µ—$AúîÁ¤Bšë»qf¿}w^ÖöØ-†8Þ™ÜNZO yzVÎÐBH›éZ×{$§Ìü&PÉçlãÙѳ TlùäV/à›Ý]›&ÓcÙþžú -òô‰ðF5þ|]*"ÍVËá2Dxú¯÷5Z(v®„ôÂ¡íº‹%Pô:³èUÛPƒ@ª°W¹^N'ˆQº±pACx0uvGÍV'àn»qúO{½€ÇÝ Ç|v¸ OÆ^3¼42ŸÖõ[:`#¶ìíî7­ ˆýìS 5–ÙU]価£h5ï„.ÔnḨtð6Þè1­”êfn4If¿?•ž^ã מô$b'~Û *’}ócfÆ'%BÖRŸÉYýàñØ¡9ow¥Àm7ß{î‡Àò™-Û÷¨ …ª—3ÃoBúËáùÀIïmõ|}”X{ â ”xìxÖ>"Çf’fB;ào4VqÉI‰éTþ¤/‡dãß™Zo›Ãeã7³N쀇ügûÜT”¦.Ý5¢í„ˆ¢Ï•À‹è¸|x¸ø`¦±ÀÒ¶,o6 rê ñºÊø«µæ>š+ëÜlƒQÙ÷ûŽÑ×ç6€òŽ}^–éÿ¯®=ûøË¾;XìTí*³_6åŠ]úÀ¹>î7n$íè:å»;ÏMè¦ »h:Ctîý¦7^އGcßv½ºû(d{©ýhÅB(·d‹rL,H2NÎr]Ý„fwÝÿ6H ÷_¾kä ¼¹3º, 2ž¶šñ݃O ¬Ñ {“Åf Hâ\ˆºWgç­ó¾ôŽ ÷ö ·ì ç:Õ~k° Rt§í àlôzÖjâ (µlàÉùb ¼ä>Κ¯eãœÍ]Ý}GdïÁ,nLXw(ÓŠ*+ö‰Iù+ªçà¢ç€':äÀ££ú^€„e#ÛvÕq„‚£üû7…Ç1÷ÊÙ<†åêö,¿#Ógó–ª$5ô(¸o!†\ÃYÁ߮鸉»£€{¢~Ý¥í¢ Î7íÑ6^¤ï´+Ùí¨¥ ÕV› ‚(¯ÔjüÄߨ_ÐãS3àå.¼]âÆƒÌœòqöi' s1'ªÿÍð$OS¤ü¬p2Z>öžgkƒ·AÒgò¢uý›ÁÕÞonÔu€ìyÛÎ7,€ÒõgSXÈìûgÞʤ“flë6 ²]Fe¸(8@Îî¾4õ!»_ŸLŸa…PÔÛúÞ±ú²ïEÝCSLìA¼™Aά:p/¹ÐÎa2äÔŸõøŒYWîÔi¤yì>HO]YÙ\ß Š_ŒqWµ²Î í¦µ†‚'»vž¨¿Ù û÷ß0½S”ôº)Èø:>yG@b®éŒúuçCQ‚þŒk×AòàÙfí ÔêÚJ¥1P–w4ƒ£Ã‡’avG-µ€¯=û˜îZ™ÝìùæÂu×ù >x›Ûp©6¤äMžÏ]%cvU͉ž«/o{ÀÖb†› G'('À#÷Ù›sÏvƒìQÃ’¼z;·•êX­ã}€{`Ï×±û€drPßM|/¸¶Ág¸åÑCð8{¿£•Á1(h¿Ýáæ‹|(™¤Sgçâ± rZêž?öDÏT¿»v¡7dõ«Óü© 8o¬—Šš¥)mºÚ ñÝn¶T;ćbõ<îµP[èt,Ü!ûÎríöá¬2pºq늾yAÖë!Ë&Ý—éUûg³[AyófCÏw”õëÚײËJ@Ø¿Å2 ‘!”u¾c;<rƒšV_f—­ÙøÌ3©'¨4ä‰lÒüWL{6„€Û_?NÞe[õ7q?äÌ?×Ñ!ì,”žm9»Å±V ¯±Ç¥ žœÏéøD{]Y|ã]WvºöêEÈjsäòé1Ÿ€[¿Ö;ÓÁàÉÜ ywåÊÕÂópõ/]b³¦âD\o©˜§õ¬ì¬^-Ÿeé‡ö6Yªúÿ_ÅÔ]î²t‘\)ÝuYé-V××°ÐZKk€öB]ÍÖVÚ´ô5 t/Xd¥¡oýÿ_~ýßUæ?%«óÛñ¾Ft¼Ïh3ú¥˜I›Üðºâ !ã{•|“ObÆG1RÆ'+ùh¥òü°<Œ°Ë£ØLnöHÑ—ëõ ºËÛŠålµ¬ ›É§/R·CXÞ=|Žé™˜T3 cl1ÂkôJ1X6c9[чª;ÓQÌôJ±›(Æ ÅŽÚ‚í²‰ÊÁzRlÍXÞfôK1©¶à5ÅÞ¡L›1ÅDÚœŠÏ±œ-ô}’ºcûOcòuL¾É'2ù:Þ‚í´…| c»lÁòÝQ¾í(߬ù†¦Ø§äë•bŸPÌô» ù{ ?ŠA¿ëC>ï)–Ũ¡˜2ä[š|éRŒ?&v ÊG1ݘX:XŠC1סkÔ*¨µ^«#lOò‰N±ô(öÊ6,gQuÆúmÃzP &ö ÊA±Cȇ9Å¡X’:(ň Ø[‚bcR &VŰñCŠíë…å{aùX?òí¾ ë¿õ^+WÐ(ïz¤®X.Å absb;Æò=±·c>잘~ãs¼>=,+(ãCû!ù’ö@ÑN©tÊA±„=ð¾ÕßçõX^U±B(Æv¬¿õŸó”bmQì§E÷*èb¬ã#å'êÖXûùP +L?ï[¢\Ó0ý",ß’ÊÁrâsK¤ é9¥Çrgc¹³1ßl,Ÿb€Xâó…xÞ§˜–('Å ±Äræ`>'Ó J>Î=ð9ù8ßN¾ÏQ>gÌ·éÚóÔ ùnW¯ ;èdzYXîvì'.XÏøû’/uOJç‡râõ\ª/棘$s±^žøûz¢<;p¼Øõ÷ÄtÛ±?{>GŠüÉÇ>ùj÷ÄvÙŽéÈÇûvzNåS>¬—'ö÷øž’Ï~yßð䃚|–bŒ†@¬/Åp¢˜‰Lì-äO±¡(–Åc|jS $,?ëO±°(+夺C˜bQ¬zŠáL1b™µ8ÎSl_ŠeE±¤(1‹‰bp¡s_l/ŠG±(öY–G±}™dT/”be‘/rŠmE1ÁÈ79Å£ØUL,,‡(ù*§˜Y¾˜ŽbøpðóQl[?äã‹||ÉG=]«ã5ÝG~Llyê(Ó¿k|±3±I°ßQlxŠÝîkŠrÂûX.Å@¦˜î~ø»P,x&ö<æ£ô#ž‰%¿ùÜgb»Sýðwõ!ŸüxŸbÂûœÇûÔn(›ÛÝïæÃïKƇ?ùô·GŠú˜|þSL+ŠùN1a|Q?PL,&f<ÊëO1\ð»ÅóùaùLŒüý|S‘r0RÔW¾Øÿ)Ö€¾/LŒyJo„éQ.7¼¿ ¯·Òw~Ÿya~ŠíàeYA·a>o¼ïý‰É †T¹‚ºbù#i-RW,‡b¹`>Š9ä†ãÅ>Ú‚ü·bÿq§zÐ÷7¶ûF,‡blR,FŠ%L1 )–+Å`db|b:&¦&ÅVÀò™˜Ç~HQ>ŠÌĬÁöÜŒåx™VP£ ºé,gÍ!L‡õñÂzz¨#U¨ CbË8`¹d;–³Oü=)Åš¤˜©Söw1”ñ÷¥Ø½[•báx!ŸmØ.Û-‘búMœ ê†×ì‘bºXä³-)ÖÛë³ùlÀô[Pþxßß/”ŸbR­»‡ËÙ€rlÁ~áŽòìxŽùð½_…é) ÅJabÒ˜"E~ëð¹òÛŒé(¶7ãùØcùÛi¤X¨o™ØðؘXì8^1±Þñ÷¥X÷Dé9ň¢òPÿPÌ¿ ÊÄ`¦ßÇkŠ)L±\ð÷§˜îX^ ûX?ŠÉ´Ç¨‚RlJ?SL‡ï5Ŷ§˜™»”‰Åä†Ï!M­ Û<ùPŒzŠUM16)f3sÇwŠÉI1í°<Š©ÅÄpÆz11±‘?³ å“yJ±©)V13Ûb'S,Y?e¤(¯þ~øÞ"ß@Ò×hÏúaûbûøaýüüb;ûÞÃkÒãØ}é;õoöŠe½þyÝ‚ãç¦óÔËwÇú»Óû¤†Ó»c½¶`»¸a¾Íø»mÃv ØBLì!”—b?Q "ŠITQŒŒâ8è‡Ï)Öz–C1Ì)7Ål§Ùò1v)6-Åò Äö Âñ1Óª (§£=ÖË©RÌï|(&àSl”Ûß;ЏŸoÄò]°|ЏAËÇzmÆ÷Þí<–‡í³ûõ&,‡bnÄtÛð¹½:^c:7”k#ÞwCù\±~Øÿ(vN¾[¿7)öp¾—L b|(†/Ŭ§ïLlbl?ŠQO±yƒñ½Æö ¦ßùRlt7”ËuÃ|nXo¼¿ëå€í³årÇúïàTP/?¤Øo½0½½2R¼¾‚n2­ «0ŸòÙù(öÖ2”3ÓQLû`l_&9Ž“žb“a}ƒ±ý)Æ=Å^¥­KP¾Å÷*èäK1âV£|Žx­QuEy·aºuêx¿ó Û5õG–@úK­‚Rìë`ÌG±)&m )Rû êý'Û#ûg~ÿR¬ZŠˆra9ÁʘÛ‡bã{ÃÄ”ÆúPÌiŠ¡M±zƒQÎ l§`²cñw N1 ™Xåd/b=(¦8ÅXdbdaÿ  ñŒÚÅ)Ö;@.æW>§˜èLŒ0´W±(&yæ Ä÷+å Äz¢³Ñÿæ§yW7äOéñý Âú‘=ùƒÔ0öçÝô=IãŽ+ø;b;RŒ3¦G€õ ¦ï,?Û+i0êç‚p<£ØdÁ¤ç©ßb{`º`LDãéúΧy_#¼öCyiþÛ7ß÷ÝT>Ö7Ó‡`ÿ¾‡å!Ÿ*W)æcb¶a¹XŠÝ€éýɾNÅû¦˜¯ýéwÆþN±çBð;„brúcÿðG¾þÏ‘âø³Û ¯q|÷§|ç‘âïàã=Ũ®PA×`:G¬‡¶ƒÖƒbä:ãµ£_uÇ÷ØÝ¨‚®8„×4Žc;ºc½—#?7,gòYƒÏ9ÔÓmÃþì€üì±”ÓÓ; _”s5–ï€õ\åy`9ò1u·ã¸æé7«ã5–ë†ýyÖ“‰ˆãÓ.,—b'2±)¶ÓN”bî¤ï0Ô£›‰µ‹ü™XtØÿ˜˜Ø>ËÑÓÛc½6¢\±^«nÄôö–”b'¯Âk{NÝŠ´â5—µ#Ê¿šò㵋:Rä·æ^£<[‘ïVl/#äGåb>{’“ÊÇû^ø~¬ÆrWS:ä» ù,Çrð¹sj]‰×¶˜+–O±«×`:GºÆzS,êm–(öë•$Çy¤˜~•)Rµ ºóoÅßyò¡˜¦^Ï‘â{¿ë±J)–»ù¯¡û˜n5–³Ÿ¯Âòð©#Êåˆù×`º•Xße(¯[µÇôëu+öçÈg+–³ߣ-öHñ=Ú‚ÏÝ1ÿüýܱßnÁû›±Üe(çfÌO±a—ÞC>('ÅtÝ‚õ_ò¬à Åô+°›ýâû´ùØ£¼ò1d×b½½ñ½òÆò½ñ9Å0]OõŽùðz-¦ß†å„ ~ Áüa8ïE{'Ë AýG±=ÃPO9¡ük1ÿzuä‹ýÅë»5µ‚®T« ¶(ÇR¤ÛQžõÔ.XÞfºÆ÷ÒÖ¨‚R¬vŠñ¾Ë¡á>Èßï‹z*Û%ù„ ^ ÁòBèûúRì!ø½A±M÷Ð÷~'`=÷`;ìÁï˜ú¡ùCü®  ù_ìgþØ÷àxL±R)Æ6Å¥˜£ƒ4å À~D1W)&+Å^ Šãxµ~§`ûQìÕ=tσ±Ý‚‘oò Æñ#Ó-p« ë°=6àµæ_‡|7øUÐí¨—Ö¡ÜÛ"ŠQï|<¿¦wFy*è6ì/n8nCê†òPÌe;LïŠål;_A׫ay$¾oÎ(—òÛ†×Ûð÷Ú†ò®ÃzÙa=í°þ+1½-^;¡Û0ýR¼ï†ýwò±ÃúSŒè•(—ʹ ûçºCX¤Ûñ¾'Ös=ÖÏŸ¯ÇòÖ#§çÈÛw½)^#?7lÿÍXž#–·ëI1µ—cù+P>[¤K1ŸʵÓy¢žX¾¾W>Xž/½×©Hñ÷ðÇqÉåôÁïäçƒï“7ÖÇÛ Óãs?¼±¿xc;x£|ÞØ¿½QNo¬ï4,gšQ]È© ÆX¿i(·'Þßýc,>ßùFÒµ2æÇrGáý‘xm‚×£ðz^{b?ƒ×&ø| RŠínƒòPLug¬¿ Êgƒõ[JïoÂô¶xíø¼‚zØ#Eý`‡õq1Å|êHñþ2äo‹r.Ãòl‘Åxß„ÏIN*åݤ\A×Rù(ÇrÌï„ü–#¿Xž=Ýw« Ûðw݆ü]ŸcjÝ…õÚ…|va?Ú…ùwaù;‘¯?Ž«>8ŽùÑ}š‡D}á‡ã·7þn~ØßC±ÜP¼O±­ƒhœE~Á8Ž£^Øã~êíÝh›â5öëÝ4/ò£¾ óC~ØßC1_¾WAX=xÍ“cûã÷~(̓c»¡}ç‰ï©KjuU® kás,ÇÓ²‚:ÛWÐøþïPCŠïµ“:R¼ïŠÔå9–‹íäŒõÚŽ¿›'òu5ÂüÈÇÓ;!'”k#¦wCù½Pßúc}}0½?êsoäïGv2¶G>÷Çùü®ð§ylÏÔ ZÑ|²kü=Ch=Óàï·‡(ʵù… Ü!ôý†|°ßPÌø0°yc;PìsйŒåá÷MÍg`þÝFHiÞû­)–gõ±Àt3ðz:=wÃûøÜœÒãsS¼ïy¨‚ÎÄû;°>‹-1¦3Åò̉bzO¬×<*ÏËA¹g`zkä³Ó9s*è:å º!µ‚z¡œkñ¹–ã|¾‚nF¾îH·àï·ß³­jHÕñ>öwwä¿åuGê…òx ÝŠòo¥ôØ>ø{y#?_¬—3¨ïühüAy}°\?œñÃzú`?ðÇï:º¶D>Tîs¤¤¿í1ö“zð}B¾Aø]†ýËÇ;_¬_E÷”ýn÷*è|¼^€õž…õ³R« Sðù¼?ó™áõ8|nF÷±ÞSñþTL7ïO¡ç˜~1òYŒé&b¾Ex½¯£|ñþ"¼žOå`¹ó‘.²¬ ã1ýd¤KŸ)–;é,Ç óÏÆûã‘N Šå,àTPkäcù¬ñù|¤6˜ÏËwF¹ñþºçÔ¯]Õ‘š"µÇtXžòsÃçnØÜÿNÌ¿ÓïD}µÓ¯‚zãsäçŠ×ÊxõòÁ~åƒù}0¿–ëƒüýq¼óGþþ¨?ƒQ¥ùV´sƒ‘0¾çÁX~é_š?F;3õ}¾O¡(W¾§AX¯ ºráû†éÂ0]ÛhOîEj€r Cº@ )]c=½ñz¶Ã.'vÞÃk—vGz¨‚îÆúì¦õ37vã8‚ãV¶S–‚üÂÞ÷Åû¾8®…¡~Ûk_AûãóŠj0ñ‡*J‘QU¤ÊHÛ ÕCª‹T©=ÖoRäãh‰ÏS+èZ?¤˜n-ÝŽ´B #e¤ç‘bùëß:L·ë½SAw`»mÇôžØn[0ßf¯7#¿-XŽ;~OlÁ|[±_¸ã8¹Ûu;öÿ (—'ý¾XîN¼¿ËÛ‰õÛ‰ríÂq{]ãwÏ.”#¿[ö¢Ü´Ž€ýf/~ç \Á´Kóø;)WÐüŽ Á÷)ßËö |{h½˜¾o°°œ0|_ÃP._zÿŸã}ZF>a¦˜îRl§½Xß½–´¢™Œ4‘6DÚiO¤Ý‘öEªŽT©ÒÁH‡"DÔ­‚ÎÀzÍÄû3*è,¼ž…×s1ý\L?Ÿ/@¹b½bº…˜n¦[¤†˳æTÐ%Hmð¹ >wÀ|ÊÔõ|Ý€|6`ù1ÝlÇ-©ÔûßV¼¿ûéV|ÿ=°?{àï³Ëߎù=±žø»zâý8NîÀzï°GŠýØ ËÛ‰ríÄzíD~;±ŸíÂç»°ÿìÂzîÂt»Ï.ä³ ùìB9vq>¯ Þ˜ÏÛ)¾o>X__ê§ÈÇåòÅ÷Èëï‹ùüh}Õ)–ãOïößš<„”Ö5Qb=ñ} D9ñ½ Âñ;ˆÞS|ƒh}ëDvéMäŒòï&»€ÞgüýCèý%ûå %ûÑ)íÿ@½†ãHéEL†|ð½Â(=þþ{•‘b½öª!Åßg/Ök¯:R”{/ö›½8níÅùÙ½8QHçÜNà8wòq=ö)¶ßQì¯GQ®ãXÿcFx]ñâ]N­ Wš!Åv<ˆõÞãjD_Ì_± dtí»#*è>ä³ó¨8èct¸âÀ9?tËÛ‡zöãÓ¾ ÚNít ûIø Ì_1ÁÊì« û–æÝÁkìgû°œýø»´G¹{"_7¬ö+ÚÏǬûÓ<¢ýˆ‡°ßÓºä>²kÑNÝó-Ç[ Šü°=hó¢~z~ì'á–ôæ;R1±dtË¥ßíjŸ ʬ‡)TPÚ×K”Ö…h^˜æ¿h=‰ÎÑü4Ù4JöQ[¹ûd0ŸÓy ²WÉ¥cÎ !¥sE–˜æ[€÷—ÈÝ'}Cö£¯0ÿ!}Fúôé?²óȾ£óHTÙë4Ÿ0G.ÉKó ò”ò3÷‘?o"»Œæ'Jr"¥sST?:oDüi~X~þcš¥ß‡æK(ÕŸîÏ‘Ë7Sî>̓Ð< Ù½ ¥û('Ù¹To²ƒgÈQ²£©>4ÿM÷©~Dgc9ÔÎ ñ9ÙŸ´žGóÔôýAçÓÈn¦ße.RêÔN4¿C”ú õ;jgš¯'Jý—ΩÑ<½4ONë-Di]šæ³—"_ÚÿAõ¤÷‹ö×Ñ{Cóⴾ̼—øœÎÙ‘OßktþÊ¡÷Žä¦õO¨^tŽÊ§s¸tÞ€êÅŒWȾ÷ÈN¡u4š¥ïBÚCûhߎò¡u5²¯è<&ÍûÒ¼Í/к5­Ò9_Zÿ£}þt„浨ÿÑ| }gS§ïoš§$Jó.ô¾™*üw>º¦ùE3ÌGýšò_š¢ût-ÏîÓ| ÍßÐ|Í[Q½è>å§úP94ïĤG:ލÂ_Óó±rÏéþ$¹t4žPù4?Fóµt®‘ì”éréhÜ¥÷—욦û4LÏ©ÝåÇG²ƒh\ ÷œÆ)Ò3”Ÿ‘—ž?ÌOúÆ Ò+Œ}†÷齓Ÿof®þ»>Ì|#¦“OiÜ¢q˜Æsêf˜Ï¯i\¤v¦ñ‚Æ3*Æ9ÚwAóŒ}ˆéh|¥ñŠæ-iü¡ñ™Æ:¯Lã3¯¨†å¤ùZf~ùÓ~.*—öõÐ>ÚoDëGÌx`)wË£ñ„öѾešO¡yt:¿Hë±ô¾ÒûǬŸâý1Hi}Vþz‚¥yhúýé\;­ã¥÷œÖG`:Zß%ÿÆr÷i}˜Ö›åË¥ucò«Aû(GÈåcöYºÉÉ!/Ršg¤òŒäøý.Þ§y¢4Bõ# 4ßO×&rÏWA ä(Õ›i,‡æõ«ÈOóˆ$Õ˜ÜsJOó:rT_î¹üõ`¹k=¹tòéåË‘¯oUåTU®ž•çSU}èÚ Št”jWAéyUó¹ÔŸäÓQ¿,—žúÁwîËÏ£Ëß—§TÈÝ—ç?BîZ¾C¹kæ½rûïòè½ß4>É—Kí#/§ü{!ßß«zä©üï(¿ªþC÷‡Èå£ûò¿?ݧö&—˜ÜsùqéüøEã&Ïô]RU¿Ô’»–Ïh<“ïòã™üïÍŒr|äû•Oò›È¥\Å}y¹åïÿÙtòÏ©þšr”žS;‘üòí[Uÿ&—N^y~ß“[¾üªäÕ”K÷GùWU^Uã[Uý¾ªrþ(ߪ(­CÈ¿—Ô?ååÕ¨"Ÿ–Ü}ùö‘¿/ÿ{WõûÈË)OåŸËË)ÿ¼ªò辺ܵ¼S—£Uä“O÷=*/Ïý]«ê$/½_òã}/~OùûUõ?*Wþ÷Ô‘»–'åÇùôUõת®)õßïéùv2B:LŽÒsÒ#Ü*¨ü÷5µ+Ù´ï‚öOÈ~oÜ"Gå¿Óèw¥}ŸUéÝß}ÈÕ¾'äõ©¼¾’ÿ®–׳CåÒý¾rûï生¾OHžr”ô5Qª7Qæû)ÍGÈÏ—Ð÷Ùc¦ ÿMiþ‚ì3šO%{™æ˜uW¼&»šüpÑ~ š°D*¿¯‡ö:!%?Tä—úÇ@9ªŽ´*}%?V¥O©Sÿ•/ŸòËó—§òㇼEý’~gºO¿'É!_îŸW«’K>ÉGåS”Ïäë!ÿ¾}K÷Éž§q€úÍKÑ>–ª~Ï?:WÕ.ßû> ~ ¯7åõåW—{.ßßäíHy½#ß>òãž|~ùq§*{D~ܮʓÏ'oÐ{0å£ïiâOöÍŸÊÛ Ì¾z¼fƼ/?ŸLóu´_•YÃû´®Fþ(åß[ùöaìIä'ooþÎŽÄt4n2ó3Hé=œ ÷œÚéwã0QLGób4_ÌÌ7c½¦â5­¿0ûr1ù ¤ö ö!?:´ÿ†hUß=åÒÑu¹kyJéåËQGª+w¿{”žÓû-¿oˆ~WC¹ô]娼 ýDò󔾪rºÊåøô½åÒ÷–˧SEzº–oùëïñ(w­-—_]Nz.?Ve¾3ðšÞozŸi}¡ªv¬ª>ÔÕä(¥ï]Åõ÷øTõ\¾Ýè>õsM¹kùýhÔ^ßû}äû·ü{%Ÿ¿¯Üu9ª!—Nþ;X~ÞI¾ÿQ9ôTÕNß«—Zõú^9U½òzRþ{šÆWâ[•ßÓÛòrÊëcy~òrS;µ‘£ä®)Ÿüû(ÿ¼ªrªê—òüåÛOþ¾|?çÓ»Š|ò㥼üòüª*ï{õ«Šö¬"ŸšÜs’K¿ŠôUñW“£òýCþ{ˆ¾+TñšÚU¾¢òý±ª÷@¾VÕ_åû¼H×d}CvK¹üªr´ªßK^ùôò×äîWEåߢԿՑêËå«J^Ê/ßÎòã€üûSÕxVÕû"?NWÕߣÊr”î«ýÁôUÑïñ•/¨òù«*¯ªö¿/?^W%GO¹kùßO~\‘ÿÞ¤þ¡,GåùÈ?——_>]WU/ùòäû¡üsåï<—ÿý{Ê=¯ª¿“ü”¿*ùªâSUý«ê×”¯*>òí$oW•^Mî~Ã*®ååjø*ÿ{v¨â¹|‘çÿGùVÅç{Tž]«ÉQjO…*òËß—¿®ª}:|'½|ý«â¯*÷\>üsy9‰Ê×§ªûßû¾WŸªž•ßþlyòrÉ×ç{¿ßmÿïñ«â9·üݹK¹ôU=—Ï/Ÿî{ù˜ûD«¯ºäúžœTÞ¿šþ{×ß»ÿg©¼\´Ýþ,¦¢OMý>UÉ÷WÏ?Z¯ªòÿÕúÿÝ~A× µ›)(Ôr«<ÁAj„ó-ÁçLí«'´~BþÉé ºõ¥ýâäW‹üѺ9;“_Ç—ßGJ~úÈÿ&ù#$?†´O[ ÓÓ÷O£sõÊxMþ¥(.í·BJ~2iŸ8C¡}öäo“üž‘¿L³{øóѾzòcIþ)iþßé*¢Èg•>GJ~H퉞ÇúQ:”—üiR< äOçú~ç÷ù.§r,+(ù©"ÿ˜L |N~Øi’âOÐþxòói…üiß­¯‘_TŠ_1å£õJŠWGþ)nsŽÑËÃç´‚â’LE>t…ü£ŸRòçIñLÈo#ÍGSš7gü"ò£OqòÈ¿/ù µÇ|´K~¼h]’Î;:×E~¤È¯0­ Ñ>ò7E~îè\ù½¤õJòEq>È¿ž•󼂒5òSLëÖäö¿?òo4¯)îÁ4#,å¥s`Œ¿”ü9`:g,‡üÎÒù®Õøœüª‘ŸQ:‡AëÔä€ÎoÈǯ£sªL;ÌOçB(îƒcüé üŒ¼¦ó•´ß†9·‡Ï`9 °|yÿ'‡Îå øv´þ.®Î­Rü7Z§¦ó•o–WÕùUæ|*Þ§ó•xŸö0çÈðZÞïí?0ÅkS¼¦óX´~?)­ÇÓþ'Ú§BóòûZä÷«Óü¦üþ;ùõ8ùy]²/äì7æû‚ü5“mòL~!¢\Œ?@LG~ýfà5Ó¡óitÎq •ëWAi¿ík 8 4J~¡éü3Åõ£x†´ÿKäÇkòWKç¢È'ùß ¿§äçšöÍ&ŠÏÉòt¼O~2i³oƒø£\ä_œüQÓ%ùS¡}žä'ü¡¿IZ/¥}14ßE~éü-ùÑ¢x’ä_–‰‹‰ò9c¹ò~0Éß5Åäs³äwŽüà’?úÕTÖ‹üÑ’ÿuÆ/4]cúµ ˆÿŠ0]gÑÒß^লÿ¿Ý¾‡ô·`Ñ¿ù¯¸g´·¢0:‹"{Æ½Æ ¤æH±šŒŽQH ‘ê#ÕFÚiw¤X rGDîŠ(Œ.¹µ&·É†ÂFÛ ŸFaG(l …‡¤ðµŒÛ‘óHÏ =„Ôé.¤žH·"uCº©RlÆí ¶¹/ú[#l'ÆÝ¶¹ c܇a;QøÉß¹QÂöaÂR¾F*E*DZ†ÛÜ•R. ÃɸsÁö`ˆ!Åö¡°\î‹ «i‰ëKá—)<6³BïTº3A¹(Œ'^/ 3Dá(Ì…¤ð+äþšÂPr§Ma9(Ü6¹ñ$·›Â3nıތûuäGa{(YˆRu¤ø;2nÊñw¤p–œÂˆ1áŰ?S8?&Œ¶>D¡‚Rx ›Ä„SÂþIa¢÷ 9Hï!ÅveÜÛ!?&ü ¶'ãågÂÖ¡¼¾,Ð )æ§01Lì×äæˆqóžŠr?Iá[üQ^& ‰%R¬¹‡fÜb®GŠïŸRµ Já3É}%…a%7šäVŠÂSSG ŸIa ·WX.… pJ^€ÂRx £Fá3É-?çŒyÀ„!ÀkúÌ^ˆùHMOÃtt<>OÉÜ›‚×øù¡P¡¢ïºž9:ècžÒ]—ÉÊÏöäèÞ]sðäöÏOÞuˆ¾¥Ê3èîªvë ›åißµ}>1sæ§“w_‘„«¯¾;gºèË8_×»Ó Û˜,»rç®öŒ»c.ÚÝÕÞ/U·oñFM]8z÷NSË)x2û¶:LIVqî4 Ì)~yÖæ³>,¾x×õä­e°|–uI« 6º:ïo¹òÀöIg—]¥°f¡Jú5Hƒµ/v”†XÕ…MK¦9¼Ý'€-[ n½}‘Û÷%Xm^Òv´žàx9vŽR†Ÿ•&/×ë¾w{¦ùî… s·ÒÀÿøUÁŽ; ÀæþéÆŸ !Рi·þk!pt^‡ŽJ!øîŠIúÂÇêo„Ю«–4¼¡f}‰|a j¹jÙ‚[(òׄ½œRáV·zp Õô†3\[¡E‡â׉¦À¡}=Žxs7xwB^³v§þp8pŇÙOÁáÌãb5vÁ‘üÀ‰knѱ}{l·€#A/÷îÓk G"»ïôÝ}޼èÓó^­=ptáDûÑ\áèÕŽg=“4á˜U 4ÛŽqÝ~£Qop«<@’Ço5¼&…ðZwó4„ðˆ—Fƒ„ôÜù~Àkˆ«¼i1D\긣g³'‘v´×в¡p"7¿~êùp2£±—8WN¶ ¸R÷.œ©;Ù×aÄ8ãºrihýcpFøÉÞùò8kž¦eº}œÛ1©WGˆä­}Sö±œï?KA}“:œø@Ú«=\XgÓÚ¨)\l£ªè$“ã¢ï™=gb5à’á§e-TàÒÕ®æÍ^Âe–ÍgÛÁ•¾3; 5<WJo~±ľ¹µ«Á4¸ß Å¾ò—Oà¾Ù‹–gN-‡ûW¾Õé ZqïZ]ï0 âÆ† ê´ †¸‡çŠàa“¹õ×NãÃÃPzKºEAüØ ®&cCüÒO§ 5†Gu–ÎÛ ¶\¬kz};”žyÿ-$¨Û?ÓW|Lnï|d‰-ZG_ I©ó:?;´RôÚ] R2ÜTnwƒÔÎg}—žTƒ¶iÓf‡Cêb÷ š‚!u}½Éß6Cjlî´xǧVoÔ²¶†´I>+F/èi¾DÓ¬AZ´ÚÐ:…Šö<ÿå ½S }ˆeÏ·M¤îauv¬Q4¤'ŽôöÌ®éüŒ¦‹£á‰!ÙæD[xâu·Ù­ƒ]àÉ;ußÅšg ÃhÃùç fAÆQÓsÏ»ºAFa—œ&«½ ÓâÒôÖ½º@æ×.ÃL7@–ûÐ÷µ®Û@VR¯‰ŽSu {\ÞÉ:ÇëCöž17ﴌǀÐÇ/¥S|V˜=4rÕ67[ܯäªy­|Õrµm^½Ù¹ÑZ.빯z«;9A^‡UòMP`RÛàIóePšp1ñV Y?Nì5q3…лqa½Hóiy¸.}5möl΂à®M>C‰ÊäÚ«"@IdAó¬ˆ"(If|<JJŸÞ»¿Q %ÏŽ$ž¥J˲6t]¥ïÝ;õ@ ¥ÃV=Qÿ²JGkF<›ùJg9:ÑJçY ‚™žPÚOq€á((À+U2Õ…¯®eZKêBIHºz`³úPrÃCŸá¡ÏðÐgxè3<  †‡ÃÀáaÀð0`x0< ģކºz埕jVþ©Uù§våŸ:•êVþ©Wù§~埕Ü4*¹iTrÓ¨ä¦QÉM£’›F%7Jn•Ü4*¹iTrÓ¬ä¦YÉM³’›f%7ÍJnš•Ü4+¹iVrÓ¬ä¦YÉM«’›V%7­JnZ•Ü´*¹iUrÓªä¦UÉM«’›V%7íJnÚ•Ü´+¹iWrÓ®ä¦]ÉM»’›v%7íJnÚ•Üt*¹éTrÓ©ä¦SÉM§’›N%7Jn:•Üt*¹éTrÓ­ä¦[ÉM·’›n%7ÝJnº•Üt+¹éVrÓ­ä¦[ÉM¯’›^%7½Jnz•Üô*¹éUrÓ«ä¦WÉM¯’›^%7ýJnú•Üô+¹éWrÓ¯ä¦_ÉM¿’›~%7ýJnú•Ü *¹Tr3¨äfPÉÍ ’›A%7ƒJn•ÜdCIÅÊ“²û… À~!TüÅ~!°_•²_ ìû… ð/þBøm¯J-…ß¾*¾h+‹òâEK«-\¼Æyñâ+¯^-7çÐÓ5uX¼|¥ÓâEK¿ú?3üÏÌ÷ë/_ìP™ªÁB‡¥ÿ‘IqùÊEŽv –®qaî,^¾p±Ãj›¥öx§ÞŠË™ õ¬V:®XƒWØ-Y)Ël³¼BÒúßäjÔØjåòåŽ+–®Yºø·]ƲO£:*¿1Q¨X”­E“1x¯þýÛ³¦Ì„¢üD'Mð`â*ÏÉU5A%7!Hü¾ƒ?zè{çúåùUy.¬C|ÕVu›êÙðÿæ÷½ó&Už£ýƒ|‘ŸŠ‚ªä[Õï÷½s½ß«¿<ýï Œ|UžÇý£~!ä鮂¢luQÎ:•øó0X‡ÿ$~ÃW|VïµÀ×ñÂùo‘tS—Áؘ¹46þís©cðÛ¿ÿxªÿŸOKÎ\ê«ë«3 ºü?ü£ÿJlüÿð—ÿ•X[}„ñˆÊ§ÃuÕÕ‡ëþ£Ñºº•—¿]ŒÐú§Ú£ä¤ú¢ÔÕÿ«‚£ÕõÔÛÝôÿµŠ‚Bì­þ¶Ûñ·!±þ¯÷ëΚÿ‘†žáóÿê4u]Ý߯z÷­VÚ­t «—®[ü=«–ÒONßp| êLÜjðå$ÎŒ4= TrD6‚ü\¯Ó±m¡ì̉›ß\L Ù}ŽSÿ“fãpªû+Ãñ ¸¾5aL×7p¯ÈÏÌಔèò3ÌLzBî‚TÉÕ¡»¡LËþÙlçVr“‚©ï¼xé›5’)Ô­ìÿ¿¥®÷Õ7¿çÇê9¾¬¾aõ «oX}ó§õM£oU˜=õ—.qX`o£Àh¢ºò)ê©Ô¨^ñ°üÃîšVê ´èjÐV×^4@[wÁ Z ÐÐÑÒÒÒÐ_d¥i½¨¢púÿ}1êüvxzóRc3*üEÈ7ÿŸÏ?—œôóýU¹ª òrPwb®±[ýt¹ääøUA¯ÛOç+÷»üU9h˜¨^éXüj q¬¦å üÕñô»åÊ©»j/ÿ¾/$ÇïîÿNýþü¨öø» ö¨i9?ûwù·€¾ƒjZŽJüö%Ùð·/I:QÛ¢âÿºm¸héòŠe ã‘NÜ*+ü¯ÿõá\›¬EVVË™õ“k–®U`>¢C»C;=ýô”1å¿I°>Õ ÷ñ_ò˜€´½ÒÉž#Sèï ,~9€´n¬ú¥´&À×[%·¿H ñ…N[=Az#GrÉVšWJc·^Uøb­;ëÏ\έiùY°`Á‚ÅnHC O߬ÿ'ºCÙÆˆ »V.‰ÿtë·ÊæŒ=Az‚ôFöäÁO÷@éWgi·ðèš® ,X°ø±¡Õ™ÛÎ)KAàœë:nÓ"Hç†OÒ¶©¾Xœ·º?Í;1öé Ò´f^jeÞã‹ïäš® ,X°ø1IãÖÞÞ¯Ú‚8*£AæñûPÞ2QçlÉõߥÃy'²'=Á¬o÷-î[TâN[|“Î䓎AÇpŸ[+,X°`ñ«€ì FOÞÈÔ2ˆ½•<ÄN7Ï-(Tªi9Y°`Á‚ů²'=Az#7©ÁË¥%7k×®oû35-' ,X°ø5@ö£'Ho0gþNŸR¿¦ådÁ‚ 5ùõ ²'=Az£`²g›hk(Û?$m‡†e ŠÌ‚ ,~!=Áè f?UÐ݇™ Pú¶Î]—“@rð­Máã?]¾$ÓâÍÔ•7Ëv³Wédõ½xWã‘=ˆs÷\²Kšò#êÄ‚ ,~Èž`ô³ŸJmøûŒºšÀÝ68ª¿ ˆ/į|åÒþ»å‰Ï¨mŸ’ì4¿“q#€?ã¹eLJýA,®¥äxoáϨӿ ú"-Ú’|᥵§¸UÓò°`Á⟠ƞ =Az#eÔ©µ½Gœ‡Üie’eA y cA´n÷⢠Ǡlâû!:×G7茓ᘵ¿î–Ýósƒ€ÓÆß)|w4äÕ½YpP¹J0ò¹Ò¥¦ëùOHZN ª«eé¬ Ä§¡dÀøÖ“ï†wⲌÛ}JAí+p¼»³¦ådÁ‚Å?4ïÄØ¤'Ho$oÔzýÜжuëåÖ ¸nn;Û}´‚Ò©Á«‡Ë¨~FºKp>ä=çg82J”Oµy¨x8_6[ŒÝ×Ê î%Î~·º¦ëù¿´Ý[ØDgp§6÷±Žˆ€¢Ú©³\Ö‡Cq—Îýƒ»÷ªÁ¢Ñås@85ÿ湈¿}µPŸ!³9 Þ'&Ô´ü,X°øç€æ{‚ôé¤áI¾7™BfÝÏíî/¹é!÷Õ¯ž‡l×Z­ùg -sù–PîW(Øw÷#”6ßÃ=³(*Ï'Lµ›ûÓêQÞ¶×ÄðçÙ?‹ßˆ_L<<´½­Q¾Ã’ãGÄutÅrÒ@П»iO¦¸–_ T¾ EÂsc›mý ÅOóÒ ®‡²¡Çû[e9RÅ­ïýÏÆ€ôsÿN‹ãüÌ:°`Á⟠f}‚æÈž =Az#&4ù¤xätH^ß&âð)äÖÓ_Ut#J,%,2îä™EÈñ[·Qº^Ó{é¾ >4ö¨ðÎ_Z7eï£B›©ãù+_uЉiOsÅ>Ý”? ¡¤<4³”¥´Ùe°¥”Ϊíèè~ J¯¼õP­?Df—B¿8U©/X°`ÁâGYǦõ šw"{‚ôéX¯uã­7 ‚¤Z£GöOyùKj=¸lðÝZž³e ˆ¿0™ïj÷Ãå–l£²ë…*')î³Ë¬ ×Þ·¶ùÇŒ£ ²q›l·¸çBFºe¬î¨ºÙ÷6—ƒÐsê³G÷jZ>,XüûÀìw¢ulZŸ y'²'HOÞxp`BöGƒÇ¶ºã“+¸PÒ]s¡ÙÕtàÍŒ _·ñsµË)5 ʾÚÛÄ}- »Â.3ϼ¾‚³¾&ã@âÓEÕ±Ö±êæ[ÓþMNvN¨ ðfÏ2í^Ä[65/ûPÓr±`Áâßæüí‹¥ýN´ŽMë4ïDöé ÒžMn¿áè1È>ÝëÖLé2(‰I™ÐcÑ£&wy.*éÍ™ké ç5×}~¿šð‡Ûî8ܱÊ\^F˜f§ocK»m&ç@ôðBYbñ…š– ÿ\0ç±éœŸ }±´ß‰Ö±i}‚æÈž =Azãñ¢8÷5#4!ûè¸Ô³.Z >sç¡džwµÉ-Í›þüšÚgk9qMmÒæþg—=ŸT]åÿªiÈQë“|@ì,Zý¬±6ˆ‰ §nÒ׫?LkScr yöš–‡ ,Xüš =Áè‡SÝ_ޝi¹X°`Á‚ů Ò•zcáò›†“×ìÞÌÃÑ?Œ¯¸Eàžˆá×@Ô§ýk[/óoYZ=â”E{LJÝþÃåHœYq1çHë´râ7>Bÿ£qëõ.ƒ ß¾¥Ô÷2/¯}sÿɄΠ+Ü÷£êó]9Eæv-/k›0ÄÜFoÈ>àÕ›¾ïúK ¬zÕlÿ‰š’‹ ,þ,=ÁÄhÚb ܇²úÃ{ëÕͨ6>Ò ‹÷áϺ€(ç˜#G "Uϲ ûó@¬hÐtƒ‡H[œó3êüÏ—;òl›ž œo;+xág¯pî ¼U»,7Ûè/ðÒVAO½j7ú£"ˆ{œþfifuÕ«J¹$[lîF?‚2qä¨ÃYÞPÚ7;rY“çÀvL;xß àú]nS¨Äá‚„éûð~´<,X°`ñwAö£'˜øâj}x ÅwoÝÐ7)NÜ3‹¥/$ýÌôà.Ö«ó¦éÆUß-_Ú6*pýño ß é©o>O(„X–Â6ýÝ[5Ý üƒClt¡{ÿ‚˜y @løè5DW%½›s¤Ã^uIq‹FjEO@lqL¿–g+4ÈÍß4׸ëØÒÒÒ®Oœ=_…~&+Æ„Gwò冪—€«¶Ã£å¼S ½Øþñ`ˆ¾[øõöŸÖKÀÿoÓvàKàtôâJÞ@ÖƒÎ}_í—9cæ\î Ù^;ù*‡Ô ÐÞÒÙO_ 8«Ú7à½t}ºOVïþ£BïŸÿ›uQ«"Îðzš¨^íþˆY°`ñ¿&žÆ)bî£_ñÊë ?€ÕÎí FOÞH·ÊØ,A Ò7lËk'€Â÷¥î]ZAÉAíëÛÔ~ô£ Þ-†‚xÒƒ•ÁÕæîðË-m·êf1B¦gf?Ê’èõ8v¸A“{>³ÝÂÔeãƒ0yʵb(WþÔiäéŸ&Ÿ¸èæ¥7õ{·«H­µå0àœÙÂK¾2V ª¯Í¼]ß"e«+{/AéÀÛ® Ǻo¶ç¶ÇZ zÙÝëÙî¶À÷æâ@‘+H‡¤õвüYò³`Áâ×÷ãÙ1÷)þú'±?L²'HOÞ¸møjÁ"Á<Ȱx~¸Y p?¬m}c+Î-ØûËÌÃàòƒ¥¶Š™ œrü˜ìk¼¦å!€d}—ív]퀧ävÆyíÈ2ÔýlÛ0ÈèšqZfg¤ù°Öt•ÙoÖ}–õ òg­ó6³k ÜåCc•"Ý3žëf§ }ðår³ù¬}Á‚Å¿L|lŠ{Êij«ˆSĤûÁ~Å™y'²'HO0ñ7òLšÜS| O8ÝZ˜5?œâܾëM ,ú•d·ôˆÞXí:÷öHÓÆtîí-½Å«8?,ÞH&7úÖáZ.ˆb¢-®qF^˜:ÀIœÌ¯/³3„z.,X× „ª{NN^ò;¿Ž? Àµ'Õ|KpBĞî<€ÔN]³Î‚´‡z£3Óà‰“>¯—ˆ…c9£ÌâöA©ÏÜ-7¸ö ÔþõÕî…Pfù47ixš’Ÿ 5(oÛkbøól:-›ëZþ•‰MqO)žÝOŠSĬOмÙ¤'˜8±¾©Ú„Cz½HÓ{7CMh­6WÛA™alð’ÑZ î7N¿K7F©Æ¬}¦þ£åþ]=Ä–åo¬ˆ¨¬Wý– Înœþ³åHÍ8%d8§ö‘l5µ^ÀÕUšs¾®”™p¾à{Ĩİ^sÍßçx4|‚Nïš™ ¿@4âVâåìo 0ž¿òU§HŠý³ãžÒ:6³>AóNdOž ½í”±,f*<,(\¤¡h ïÌù± öÞ8·Sy6óA²sø®¬½É?\þòþZ‡÷ø ¥§f8úžÑ%Þž¾ÖPÒK?%qŒÜý4ÄÍy.jæªÀ׿9dÙé÷ Y¿ßèô¢/ Ý3xÌØzÕ&ôæÞŽAô<®ÙÑUE hÙ|e{þt(ªw!!ñŒÊ N$=Ö b‹ ëÏ‘u«‹/ ,þ¹ñ¡ímò@bÚÓ\±O÷—‡Ö±q}‚™w"{‚ôékãx×ìšÀƒE*;½MæC†Wä¥áÊß lŸÝn¤¢€ó§[zÌÿiò—²ê¨}K¸Åö¬-¼ãô6št5î¤ÓýÚ§ð Ì¿iÔê ™PúnzÈæ±o$Ü.ãno2-Yg6ü/ó•.ÛiÃþ¥ zQÇ=v0ˆ®†Û·4SqhN·åø2ûA+=Ò«p“o¿SÑYufÁ‚‹š€ü~'f}‚æÈž =AzãÊÐuÛ•n@ü¾ƒî­fMƒ' o­Ÿ®Ö ¸³{% ý5Atpó'‡ó?\þ’ÍÓÂÜ4l¡T°}ÌÅéA5©É>ß= Øg´£yËaPÚxò¤¢ÚÀùä ºä  ¼ó~süŽ×ñý§÷Ùð—ùЏ$>’BçÈóQ–‡—§ØÙÑnÀ籉’î¡ÿh•~*ûû¾àÓ³w«³Î,X°`ñ+€YǦõ šw"{‚ôé‹{x>Í?ƒ¯vÎJ>¹yî^½ ‡ÒgS ¦¨fÿ09%¥‹úÛ¾x¶ ¼ü–CΫ¤N‡ä%_¦ì|·LÝ(á¾=i÷éõÊi¼.PpeùüÑ[ŸwH¢wÐ`e˜dÏîaÝå/óç…~*”D~nózÇ5ßÝÎ‹Žæ—ßBYPÌöõû3¯4o…Òí~P–ܮӗ+ª³î,X°`ñ+€ÙïDëØ´>AóNdOž ½qyCñ‡™éJÐùH­†›F@Öкþx6¥Ý&.âT›|B½Ý¶*Û ì̈ û×A†VŽ­’¨¤wj½®ÎOxÔ( ìêĉÞe1§g5ä·Ïëª; bB»§“¶Yýjì¿-?@Ç&«4”j©-}N }bnù]‡ÒvnõúÛæCI¢õ¥k1€ÛÅÚxþiÇê¨; ,XÔè<öïîã¾XÚïĬcÓúÍ;‘=Az‚ôÆ ÕÍ6Ó:–CüŠyʃ’ÞAžR[ÿÜ €»i]ÌóEY^É¥ÖvÛW§ÅÅ\ËP;È÷+Øâ3ò¥GA\“QÎVŸÕ ¦¨ùÕmVí!)Ï/óî…ã§‘ÌK(2.m]»Wgì·Mr›ööïµÞoç?úwNS+Jê[دπœ Ñ#í8(ÚøvRז׆›,9›E‡ý½‹ö¨qm«5.y—/ ,Xü,0þÐoÇwÓã~'ZÇfÖ'hÞ‰ì Ò¤7"|TÌo ’M/ŸCçñ%¶*PZïú‹Ër@\~v·æ²SßåÏ–ÇåIҡ̵Ó>›Ók ÓM<ØÖÉ2Óû¸Ø…šB|£Â3+r­ :ãâ¥.º[!ÙpNш¥VðÄwg¸ð¡¤•ÂÅo(ë?t|“3Õ~®Êæ§ïS; ¢ÎMŽ„ÍVŠf·!çÙ¥µ‚e(y8´m¯MÓ@”jçuruógÁ‚‹êF¥¿Xôˆþþt9¸ŽMë̼Ù¤'Ho\Õœê¡ η©ÕY²½zºï¥½C§žï ¢çkÍþÞGÍèìâOP /œ¿bäyy;p'<êY¼9g¦ò×Þ8k±×4Þ&5Í…è/úaî¶Vaï¶0Üs!äÞ'S? xwwóÕºoÐܬ±§zZó?äl·ªÿák (Ž;ààWm(ñ›ex6û(dŽ PjÅ©+fÆ¥BÙ´¢F¿ýåõ,X°øY`üŠ“¿Xôø·ËÅõ fÞ‰ì Ò¤7Îï»la{c Äæ&=ž¡xÒg,ÑM/‘@aƒÏ>[¦ €÷öé§#ïll³¸ ‘ïh—õðu}Híÿ>Ûd8¤¿¨¥Øbv;¸£ éš†~ЦáÑ‹ZBʆ5'_ïÛÝ÷¬Ù°ŒÅ>sùÛšó dc«8£Ë@ºòSÉô¸êhÃÿ³þÒ¡v~ wá¦èGçµ€+h0-Ð ²;Žnüb¿”ž½¢átù”]=½ëH_‡% ,XT*ãO _qô[måãú3ïDöé f]¼kÓw®­\á¾}Ù¢ g =ÈqË„Ã= Ðɺ÷¾d](\ܯ›QcH}?ÌåZl?ˆ>í>km÷†ðp™ÁÔígßÀm—ç.&+á¡Vr`œ·<©³jÍÂ!àÉ@å6T€?ñÌ1_:°áØ¥^ÿåõ’?]á•>É›"ÿ ÚíŽ~¹KÞø¬¾Ÿ¥Yï†*÷‚RåÔÐãÃÚ€¨Ÿa|a½û úvn¿ð¡?K>,X°ø£ 8E‚üŠW;ZŸ y'²'HO0ëíÍšö4ƒh{gÏk§BZ«êkDc ³‘«~¶j <:œÔÔ¡ó0¸å«¾b‹I}ˆ×Û|áuëtxÔ|r˜Âø¥ºníÎÙgJ ð~GÚN<(|¹UYW/¨ºëó§ë/äN¾ýö]ywu°ÕàÛfÝÓK—éÓÍ'Ú€hüöº‹Ë^ƒð܇+ÙWMkZ^¿@rª•(¦¹-ˆøpدoMËÂÅ‚âOT¹ëØÌúÍ;‘=Az‚9¿qaÞ'Ÿ\OˆÛÒoÑ„|Hê‘ih¯Y÷N þT4¢^Xî*²7‚\¯ëºê‘ò<(ÂìÝXÈÜ­:¤pEW(Û-ð8¾ÒxŸÛM\¿ñ§ùSù€;ëjx—O;Aì¾lÅN•YP¦|'Ìöðbôžõ4°ðÖ}¶9áø $—x^+V[¼*ÿ›QçãñyéF ¸¾5aL×7 Uhš®Ò™÷÷|büŽB¹aƒÐ‹o®ƒäEú«üGf5)3‹(NÑ+¿b›YŸ y'²'HOÞ8ùiœrXGÜÚç|¼÷LØ4d½%DúH/7m ñsÔGf陿ñ|Ío !çÕ¨âS–€p‹ý ç†ÈÆÝèÚYy:?ª>ÀkSäÜÇg"ˆ.túÜd•J­mYe*n›“ü8­ $¹žÃÊÑÉÀ_ûÜpmò½š–—EÍ$^üí-æÈôÄc›hm+•_ž´p.H¢gùÇYþ2qXü;Añì~8ZǦõ šw"{‚ôéÓ&-Ňê«Ãuõ%mívÃ㹉³ò†ô…ä®[†]~× ¯¾œI½ œyFÚᆜ-ÿ_…Ì®88måVÆŸ!pE4ÅÇM¡tïªnÃ&ç¡ßÇ’—­€›0ÖjS½xäMëPZ”V“2³¨y€¤oakËYé >òu¼oÇ­ ¹yèìv·š–‹Å¿÷ô‡ó¡ýN´ŽMë4ïDöé Òlš'Díƒø—óïÆõ{¾îT6|¡ y=&^1ìk…‡Þ0Ü{¤m&©ß^ù£ëñg¢1÷…ˇù€8x†ò泡Tµ‹éô]NPb®¥Ÿþ87>SY\˳ó7¯ÒñióÅ?Ü= ,XüYP|ìV>Ÿ`öÅâ~'ZǦõ šw"{‚ôéK‹¾ZÌÕØ wïwhÔºwsH]øF;r}3ÈR3é©(y ¼ÍéË?œŒÑÒöfÍ/ÿ¨úüYo_D]§˜ ºžm˜qJ…'ïî ¥6íBÞv×úãJãÞ/Ë¥¢†_MËË¢fÒaã´ÛÐÄ &_ÍXÒ!gEêvÔ´\,þéƒ3+.æ\`® ró7Íõ¯v>t›ÎÙÑù ÚKûh›Ö'hÞ‰ì Ò̺ø¾á ÚÝÒ‡˜§¯nïhZIñ „õ> EÉŽ[§œ|%Q)›;¬ýRÝõù«ŽÍÜ‹CgAÙ¤¹ºÅ@qçÑü·c[/g«RÔ'(M·Ú>h ˆ†½ ‰áö«iyYÔ,@Ú-ø~¦$õúuëÙ3°¦åañïHë´râ7>Ò‘gÛôtÐîÃ:v£´t@Ú„oÕÍb“ãžþéòÉ¿ùí óØtÎŽÎOоXÚïDëØ´>AóNdOž`âoÜ>r1ªÈb w÷é•Ù¾öCGy‡¢òÂ<ï·zÕÛj Úw ©ñTÈßz¥‡ªŠ–„/K[® ÙNekz׆¢æŸGHêAñs£ c§ùßÂqžbÛ65-7 ,X@è4n½ÞeÎ7 Š•¥]Ÿ8z¾ Ä!³Ÿ÷OZÂ¤ÃøØ¼\ôK~É¿ùí óØtÎŽÎO0ûbq¿­cÓúÍ;‘=Az‚™§:ï¿0±G Ä«<ýpÀ ROh_;Y«/”^oÛ¸{ÇÉÀx¦¶]ÑiÍÿ£øöméV`Üi¶k6'ƒo+4{×rL¸‘.áö¥q’ÈÔ89½Õ£Óš·{lZNÈ~ú´sžQÎîaÁ‚Å/äÛ·”ú^^øÙë#œ{C¡ŸÉбáP–4@¯Ç±Ã ¸ü`©­b&p3òÆÔaòaÜÓß•Gñ'ȯ8ù‹%?€ä߉üvÐyl:gGç'h_,îwbÖ±i}‚æÈž =AzãÖëÔwn†ð¸“‡ò¸&P4;ö¡ÔPšëå7ùë7?ü´r ”k®î5jÑÛ¯ÜÆ=•ޤC‘Ý×鯹±Ða߀ÍÝdzϤñ›9!ÕlÊ`Á–ÎßÞzâ·(sàôiÑ|Ì¥ë :x¨Mо˜% ,XüY€ðòÚ7÷Ÿ\Þª]–›mt£;ùrCÕKÀ šÜó™íN9~LRà$Næ×—é±eùÄ+"˜øØ÷”âÙQœ"Š?A~ÅÉ_,ù$ÿNä·ƒÎcÓ9;9oÈ8>¶•“A1pš{¶Ùõ$ßÖß¹e²àïògÁ‚‹ O½j7ú£"C/¶<˜Âä){Ô:ˆ™çBÕ=''/™ ’ú-œÝ8Jz©ó§$Ž€‚qzMºš2ñ±)î)ų£8E‚üŠ“¿Xôø·å§õ šw"{‚ôéÛq‡ìS^i»ÕV̳ȃŒå‹‡®96J6¦^ߪvDEFO*þå}(Pr;{ÿ76×có³“+ÛBº•æå_" ûcRC5…+¥ҥ̿>äíÖSTòûOœÑÛ³óïÖŸ ,~@Üûàô7K3A|ðݯ·C¹ò‡¤N#OW™^ ¸`äî§)Àtº_û”ßü…v4o9Œ‰MqO)žÅ)¢øäW¼šüÅÒ:6³>AóNdOž ½­^Ç;6b7¤«ô³Žâ¸mKW'€hÓÛ®¯ÕÃÿ4IÏ)'¯ŒË‚‚Í’~×êBÆþ%ë ƒÄs[ûrr&ø7º 99ó/퇭 m7‚tµ‰ñB« ßçÀ‚ q]ñ‡œÿ¿ nÎsQ3W…2ÿ¦Q«ƒfBiãÉ“ŠhCÞ§×+§ñº0ñ±)î)ų£8E?(þ³ŽMë4ïDöé Ò´W††ÜN„ ÇL3呯k•ò²ni3›Ï“úXMû~;x6nþîÜWà©»r×J ™ë\U]éY §™ÐžÓj˜2h”8ì™Û3”í[Þ´}?èÑ>|duן ÿ\€øÅÄÃÃ#V ?wÓžL1G()ÍlWÓr}À׿9dÙé÷PúnzÈæ±oóÉAtÉA ®,Ÿ?zëS(Å„vO'3ñ±1îéŠgÇÈ…ûh›YŸ y'²'HOÞˆßp¬Þãù!Ÿ«tm¤9ðêNÑ-ðú~;´‰7]'ÓOc­:ÓìÝÃ/´íÇü ›T_µÑ€œâ˜õÆ=÷g‘ùg¿{^Pæê=ãÄö,(ÎÙØoæj,Xüs’¶{ ›è îÛ_uÇvî„åוoCYJ›][úÈÆmF°Ý¾š–³*€dý~£Ó‹¾ÿH¸]þÆÝÀ;ï7ÇïxmàIô¬ ¼°ÍêWÊÆÅý¶InÓÞÖ˜œ¸ŽÍ¬OмÙ¤'Ho$»ÏqêÒ rÊ—:×¢ µ­+„Üù]¹B›€Wî늡0fCÎPÓkPdr8^{Ä{ÈìÝò¡ÇíÀ‰8?v§õàÎlVüÍ ì13SÉÒšh,Xüo$-§Õ‰ÕîÔæ>ÖPø¦õŠo½OB‘ðÜØf[?Cé¬ÚŽŽî×€{.d¤[Æ àßäd焪¸íŽÃ‹@rÔºÁ¤÷?Òý1ƒÇŒ­âM¦%ë̆ƒø~€Óûl‰IöìÖ¿\ü„}ûÓPÞd«ÿô‡ø¼# ,X@Yú#+ñi(ª:Ëe}8äÞ£ù*«#?ÍK7<ºJ¯¼õP­?¸£êfßÛ\¼Ù³LûŸW†2——¦Ùi v­~ÖX»¦ëñ¿ZŸ y'Æž =Az#µhÕù=R€Ó¤‹Ï¤ç“¡°Lñ¡RÔs(¸>Þ.ú.d½îÔ…·½^]{0ÅJ6òõ©$þ)+µgΫéz²`Áâ ú"-Ú’|JŒo=ùn(wéÜ?¸ ;lü5Ìʆïwü-ˆÌ.…~qz BÏ©ÏÝñ–MAÍË>ocK»m&ç@|LT8ít;›>›”ØQ½¦ëõOÍ;‘=Áè Ò)ýºš}µK…â«ÉßzÎbó÷º5’õîÓC>@YÃG+ZSÓõ`Á‚Åÿ>@üZZ{Ú[À¸,ãvŸRà^5X4º|ð|fo OiûÝü¢‡Ê‹/€ôõêO#ÓÚ€T|Ø»¾ÊâŸ!û¿Œ=Az‚ôÆ#ƒY³—­„Ì Úí¸ ¸ï·^¸iøJ¦×^|Á«i¹Y°`ñÏ£}Žww‚pjÿÍsĜΦӾ¦åbQf}‚æÈž =Az#aia¶†N äú+>Ý‘ üçÝÿ<ªiùY°`ñψ¿}µPŸâ3§†ÉkZž;˜ýN´ŽMë4ïDöé f]ü¨cû}m¡Ð}äùö‚È-ùmxjdMׇ ÿ€øgÁûÄ(^›âïRÅ­ïýϲþH˜svt~‚öÅÒ~'ZǦõ šw"{‚ôé'K+´H=…¥¯:=1Diše¥5]O,XüsÅmÂNÔéçþÇ ¨iyþé`üvÐyl:gGç'h_,íwÂulZŸ y'Æž =Az#£¿ÓÊsŒ ÄÎ×ld»+ Q¹ä«éÂÎS±`Áâ_.ÛiÃþ¥ zà’üùHðB?J"??@Ç&«4úwNS+´Æä#±äü;‘ß:Mçìèüî‹­²\œwbì Ò¤7u/ÙØ¹´‡¥Ù‡÷'Í~Ð7¥B‡Z?³î,X°`ñ#’-6w£ýé|Ò¡uÜcƒÐ9ò|”åaà6¯w\óÝ (ÕR[>úœ”Ô·° ^ŸeóÓ÷©Áv«ú¾¶éÇP;¿Õw‚‘‹âO_qòK~É¿ùí óØÌ9»?v~‚æ{‚ôé¸)ÖwjÙ+û¿îyA³ö€Ø­ñî vþ‘ ÿ3‘¹]ËËÚfP&Žu8ËøãmÚ| ⢛—ÞÔïQe>é‡M7¼ƒèj¸}K3àå)ö_v´p^t4׸ü }bnù]‡œ Ñ#í8(èlunr$Çpð«6pnŠ~t^ „CVú$oúÛëÕqO1žÅ)¢øäWœüÅ’@òïD~;ð<öŸæóNŒ=Az‚ôÆãÿQŠó?@¶sTøÌ"3(÷PùÕÑ} éåc6IãïÖŸ ,~4@bn£7d”öÍŽ\Öä9p:zq%o€ÛU¤ÖÚrHÖwÙn×Õø¯ö¤šo‰bò‰žÇ5;ºªÄ¡9Ý–_àŸ?Æ&JºÊ‚b¶¯ßŸ ¥íÜêõ·Í‡¢o'õxm %š­Ín;B‰ß,óÙG+h0-ÐLV.´ÛýÄ‚ÜÉ·ßûÓò‹vçhj<•‰MqO)žÅ)¢øäWœüÅ’@ôïôwývмcOž`öS¥ÏXÒäd inäß-¸†Ý;¼ºÞÊ'N´¾ÌÆKbÁ‚Å/ àÕ›¾ïúK à ;¦¼od=èÜ÷øÕþÀ9³…—4|;ð”ÜÎ8¯Ýœ±ç°+@j>À)!Ã-›¯lÏŸ#­ôH¯z ô­ÒOe?ð•æ­PºÝJ­/]‹ùym¸É’³ióìÒZAˆ2dŽ PjÙG7~±_r—¼ñY}?Š®¼»:Øjpg] ïòi'ðÚ9÷ñ™b÷ƒÓVn­¢1÷…ˇùo_D]§˜ àØÌ½8ôxäo½ÒCU‰OßVhö®7›âžR<;ŠSDñ'ȯ8ú‹­öv¥y'²'HO0~Ôõl§%jBºÙ£ÖGôæçê²”ˆ[{ lÒ;Õ‹¾nÕ- ,Xü]€dÕ«fküO×ïr›BÙ¸›q™3fÎåαbHP}mdê~¶m¤pêšu~pjÉVSëEõ.$$ž7ùö;‘À}_ðéÙÆ»P–ܮӗ+€ÛÅÚxþiG(:ìçè]´JmÛkÓ4(NõX13.JÏ^ÑpºüJ³Þ Tî|Û¬ûazé2ý°lÅN•Y ºÐés“UBFNqð å‡MgƒÐõl«ÀŒ²quEn§n1P´$|YÚrUÈ1áFº„ÛCêB“ÆoæTÆÇ¦¸§ÏŽâaü‰åWœÖ'˜y'²'HO0qb7Fè¾2ꆛkí±ƒ‚ZÜe)Ã[V‚êÂzæLyµ«GÙÍ «n9Y°`ÁâÏ„ ¦ìÃl¯|•Cj×¢ëáãâ;Ñ!4ã´L¤=´Ð™\]¥9çëzAYÁ‰¤Çº£¿[®¨qm«5.y Jµóº?ʦ5zü­ ”]=½ëH_(UN =>¬ p7mÞè8ÑÊ”ï„Ù^ ¥Öƒ¶¬2W4AS|ÜJU»˜Nßå%“Çww†â.ΣùoÇB¶SÙÚ€Þµ!Kã$ÿ©-¤šM,ØÒ2g _<¸‰qOv<;ZŸ`æÈž =AzãڷƃýÌnÀÃÍê|óɲzML2›§ îõ½ñC¯éë!ÑõØýÖ,X°øe…ö–Î~úZP¤luÅbï%Hó9`­éÚž8éóz‰xPfÂ=ú‚ïb‹ ëÏ‘uÿ6?Q?ÃøÂz÷A4~{ÝÅe¯AÐ{FÔÓÀfÀíqs’§”î]ÕmØÃ(1×Ò‰O¥6íBÞvn½œ­JQŸ ¨ùçR§zÀÉé­ÖòÛ[OüeÜÁvc4’‚äÛú;·Lj|]€Ö'˜y'²'HOÞ¸zh·ÂµðhJ·Mu+Cƒa[ÓÜ>PºiÓ§@ÍÚ 9ryWưš® ,XÇcUûæ ¥o»&ëÙoÖ}–õ ÇrF™Åí‰Q‰a½æšÕÆO<ôíÜ~áCAxîÕ쫦À[÷Ùæ„ã3(I®ç°rt2pú},yÙ 87>SY%®õǕƽƒÒ´q«íƒÆ@ñs£ c§ù·{lZNÈ~àôiÑ|Ì¥ë l™åJµºä¬.Ðú3ïDöé ÒwãEÌŽ†Ì«Ì×¹-¡dú¡›O_ÙœÜËØ8,X°¨qï¥ëóÐ}€7ÛsÛc­ÈŸµÎÛÌ®1”úÌÝrƒkÿÃùK.ñ¼V.ÌþÚç†k“ï7a¬Õ¦zñÀµ<;óšñÀËri£¨á¢aïBb¸ý€oá8O±mú´sžQ~Dµ Ú÷ËŸk õ fÞ‰ì ÒLœØ÷¶}-†gB‚SÑûý Öb]¿YÛkZ~,X°IÿQ!‚÷ÏAô²»×³Ým»|h¬R¤;ˆµ}µ{áÏ—'oZ‡Ò¢4ŽO›/6¨ñ¸‚Õ f}‚æÈž =Áø§>ºá²C ÊTC2’>M­i¹Y°`ñë#¶vvñ³†“_–¾¾¨þÇmšÓª­|þ7ë¢VDÀ÷æâ@‘+p¦ØwÝì´Ê,Ÿæ& ¯ÒGÃ'èô®.~ÿVÐ~'ZÇfÖ'hÞ‰ì Ò¤7 ç]K•8ª¦ågÁ‚ Îðzš¨þ¤CÒúGEY‚ôÁ—ËÍæ®i¹þé ulZŸ y'²'HO0zC°hªúŠÚ–› ,Xüš =Az£¦åaÁ‚ ÿ`õ ,X°ø3`õ ,X°ø3`Ö7„×Äc¾–=­iyX°`Á‚ů Ò¬½Á‚ ,þ {C¬ØàƒŠoÓš–‡ ,Xüš =Áè N†jÐÛ“jZ.,X°`ñk‚ô£7ò²^3ŸQ Â3­V÷¾µ·¦åcÁ‚ ¿=Az£ ÎÄ­_N‚8YŵMjµÇbÁ‚ ÿ› {‚Ѥ7òóŸÍ+^<Éòk~tjZN,~e€¤O`Éèé õˆ8Õ¿É”š–‡‹ ²'=ÁÌSÙèzžok¥á#çÆß âÅÏ®­2w«²é³¼™îI.?Qt,j 8wr‚ §/†ßNµ8Ù$“–wØd_Ór±`ñ3@ö£'Ho¤å¬_5¶o#(Zš+ܺâYš3›ÜèÁäã·þ 9üýà«lidØF D§=¬y®5Y,ª ÏÅ­–;H.h¶¾Ö #ˆ\¹/ªˆÚÞ)‘\ô«iùX°¨ 0öé ÒY£8{/}‚[=’¦¤áûìm6g·kîÅiï ÌúîË€)}A¼ju»¾g½jº,XT'€ï>ÓüÜ+ xÑvz¾F.ð}NíõD¼9ÒP{µš–‹šÍ;1öé &þ†MómÞ“î q¶Eçýs€;zD|QÖUàùMú2²®H˜ôpÊ?]Óõ`Á¢:Ò~’çF h0ÓýSCoàyµç¶/ѧѻÛL7abq-ëQ«kZN,j4ïÄØ¤'Hoˆæh%]ÏÁ!é…~ÂÇ :nÙÏú¦åfÁ¢:’’³'ŒÓm@Ørt³N†0VG hõÓãű`ñ¿fÞ‰ì Ò¤7²×o B4pÆN~:פ¥Bã|¯]5-7 ,X°ø9`Ö±i}‚æÈž =Az#·®SЇ°Pâ~»žÛ©í <áÏs4—Ôt=X°`Á‚Åí‹eö;Ñ:6­Oà¼cOž`ÖÅ—ÞYóò-”Ät©«y~H.žé§\ÓõbÁ‚ ?´/–ö;ɯcÓ¼cOž ½‘Á=5ïæKS(=aòþ˜ñš¬ ,X°¨yмcOž`æ©Ú°Ž=’=¶¾¹\Óò²`Á‚‹šÍ;‘=Áè ÆÞˆ?»ÁßÛ¾¦ådÁ‚ ¿Èž =Áè¢q ÷ÙÆéC¨‡~5-' ,X°øµÀè Ò…3#GþÁ;½ÆÇÖ´|,X°`Áâ×ÙŒž`Ö74O-\R2 Ê® ™¦ûqrµñ+oÚÝf•2s-Ù÷ Uä;¾ºÊgÁ‚ ?dO0z‚Yß2ñj‰â#(UYtó0Äv–îhô‡Ë&=P‹KhÂ&MÒ”‚¡Ôsµ©æõ ¬ÜeBÑðÛÀó7íKü¬ ,X°¨~=Áè Æ?•žA—½³ö'IkË™öÉÀ–o³Õá»åñŒëëäµÂíuþÍi¥E{ïíÁ9ÁÜÖ½Œ@2¤$Ze¨ÍϨۿ 9ö¥ûµ‡§ßúÚàÙÀßwêJ“ 5- ,þ¹`ì Ò¤7’õOÚ5VÈ…œNõcv™Á ‹‹kŠA-R¯z$áÏ™<ÝVÓõaÁ‚Å?̼Ù¤'Ho<4œý)NYOë]ؽl/ä]nÓÝ`1Ž›XË,j8”äz—œoÜ ŸU{HOn‰ÔyøèZîÕ.§ÈíàîÏY_™kada“þ“v€`caÉ¥ý«@8¯ÝýÕCÍ@2`ÂË(ã–ÕÍÿGÄ,µKËïM˳™Íõ€«;hx(zª\hÀùÚD|ê›ðÔóœFÍï\e9ÒÁJŽ1†ž?Sv,Xü;À¬OмÙ¤'HoÜëò¾VÑÄUðxΖøçÙ³ ÇæØƒÑ”€³NÓk Ik6=óÍĤF# £ýÖT»œQlÁ´åÛAäõá½j/({8`w@žpµú÷J‘´~»1- #-@šÙçÎÍ¡ÕÍÿgÄ“îd‰Å 8øåÓ‹É%ÀíßcŒíÊHà¥|[ä7dˆ‡ë„|¨v¾ÒÖ[GݬîrY°`ñÏAå:6®OмÙ¤'½QägfpÙ|lydÆ È-*¨5{¯p—Ú›ôŠYBµì° ¯_U»œ’¼”­aî 9Uñ '>ìú¤ÇÍ(óIW ­½ Dëüâ¢æòª›oM$>£ÏÕOžÒŠOª·z_·0Êôpˆ~mâ+kZ>,XüûÀìw¢ulZŸ y'²'HOÞx°¾|o‚1j5ÊÕm/îP˜òÓå¨Öò_Ù½ øJO_Û dÏc²`ñã߉üvÐyl ,Xüh0z‚±7šÌ¿­Qx®+O=m÷·Ë—Þß~CEU¤Ým bÍù iyR÷ëäf ~Ìûø[(oŸX4Ø~Ï_/ÿú™Û“áƒ&ÏGÇ ¡ì󺑋ý²€ë/Ô¹eeï:z "½‹a:_¯‚´IyN[î¿[¯?,ÿ™Cëg0ÊFö±âmRŽ 7ôúÔÓÀ?¯øð)ð×¾$6^Rè>¤öPF6MõLñ³äcÁ‚‹? ²'=Az#eé•Yó@Ñ‚1¹®¾›sá£BìàÎ ñØ­µfSwÔKìv!÷ǽ€rŋᎃ(Ø;ëFÏh˜oüЄŸ¦}}ÜÄa~6ê”STצJ{$ã†÷]Þiˆºíéwçš=”%9„: ¥k® 8ÌÛE}ÆMh’™œ™]2’µ€;ùà-ç±Ñ ŒS•~\s¤Þ_ýÓ½zZïÔ[hò"cdâ.(Ùºg¶óDÈòÛ`Þ[çdª,mñôäô˜}jò(*¿cs÷"(Þ4÷íÑÉË ,-}惋 <¸®oü!3à¹|M—lѰºEºü,ùY°`ñëâÙ1qŠ(þù'±èɇ~;þ6´'=AzãÑ#ÎÌ–IîàBÆ\;åøŽ§ çÕD;㺱P؉;næð½PlºàDà„Dà ñ µŸü–­¼6Ÿ¸œ½ÛÒ2Æ,A§!CÚ:LýÙõ`Á‚ů&žÅ)¢øäWœüÅ¢ÀêöïÄØ¤'HoÜ=·±í'û'™°ÆØ¼ñf(N‰>>u𑛞ª1ÿRP®_k`ýÔ̵€7¦ãú«Á nr¬eܰ5%—<@jãæóln#(›ÿtYö‹‡qV»‹O‚VnUéõ×}ÎìY º<Ùëù:KÍ>ú@É&—©š¯, à¸Z;ÿ>* ¬½bØŒ¡lüW,þÅ`âcSÜSŠgGqŠ(þúÿarмÙ¤'HokbeRqý%%!…5U,XÔ@œ}6k÷€Y ØXXriÿ*&>6Å=¥xv§ãOü0yh}‚æÈž =ÁÄmjÈ»mOZÆG Nɼo–€p¿–wÉ\Ë%ß?Ày7h¿ÐŸ‘µƒŽœÞž·#[ß_¢guï™/³›û=¾“Q“2³`Áâ×çµ»¿z¨ðÛiQiAñ±)î)ųûÑqŠh›YŸ y'²'HOÞˆé4oYaA"$]M1µÞþr^ü2Û}”œk|Ü9¨¸A“oÔVÿiq[¡Üø@ï¶PÖçt|Ï~ 4YÿyíêÇPúbøÂD³‰ ÞÅß}ö'&½Ø*oõ¡à¿¼?ëË%nP˜q@ɶ›3›6y…;¼¶„²æ­\Úžý"§'Óc«Ì/UáyçGüh9Y°`ñë$&¼Œ2n ÒÌ>wnýÃûŽ~˜<¸ŽMë̼Ù¤'HoÜNpüºCXÍúõü°eä† |ÕÅÂ83Aé}!HNŒö|ñ·÷çþaùù—$­7”ì¡ýTó6Ý_@q¨àèнÞÀËk)¹™âBåÓÏôçK€o|2Õ~éH¤<ý6(ÊÇ®ðÿ,¬SmrH¬ÐV±üâGNlmÒ~:q6O÷[½ãŠSžƒôë›Ç.X¿^,X°øÇ€Ö'˜y'²'HOÞ¸úõ㦖œ)˜üüµrÌ{ÈœQ§ãÚæó€×·áö.'´ó³'ËRîüpy¹aïÓ\çMƒ²‘Ã䋇±Ý4Kn"”îŠHîykð"·Ûö5xŠmJêNÕñû+¶÷Uír/­«eš[Äz—wæiƒTÔk²~Ÿ[ 8!þõë»ÕÍ ,~Ðú3ïDöé ÒWB»Šw+-€x 'ó’[ ?{fÛúE¡l¼[y£øárÏÒÿðq¯3p;Í9ÛRS;ZÍØ9Ó8õOÁ à(M¸#ÎY %¢ìÜ;Ê7AètZaô6å¿ÍW2¾í…z X$È»±e”žŠoÒ8×øwœ½¦¤ÂÂð/ßÚ^‘žå°Ôø•ÕPU,X°ø¥Á¬OмÙ¤'½Q¿¿zн¶¨.®j Y÷Ç¥)Y~÷å³ïhUmòˆm‚^F½í ü;ŸÎv€Ìà¦;ã,¤ð¤é‘uu;ž€^åÙƒoAfÓe Oi{'(#¿P0¸^Û¦l;ŸÒÑöêfì¯6y‹ÎÄ:¿l%“¯zš=Oƒ²WÓö ñÊÚ/Œ94ËþµÎ+jØW?,X°øY ¿8=®c3ë4ïDöé Ò7K–Þs™¸ÝXò4M ëñx›Þ™9sæß–¿ô¡yëY7×§Õ˜³C쀤&MÅOÕ†G#rrç» ‚¸ÔØAïïo‡´g‰Æ Õ¡Øtn­)k÷@éáWן…rÅó¼7Gÿö¹GF¾5¯îÙÑ× pÜ„ìvuwçsŒ‚ëþKPÔV‰¯=op›lp¸ _]üX°`Áâgñï„~;þx¾Šulf}‚æÈž =Azãü×ןØÃ£Ã“ëÜ`Yyg@î (;ó\pN3çóM¤xË÷3ð…‰ÍcâÇ@ÎÒ&³zB®Ù‹_Àcþ颸~£à¾Õ£Úy%í!uœÞ„É‘ši“ÓùU@'à^S(öh'®®Îµ**úk­öÿ'ßÁb ¿ú*ÀéÒ¼D}éh(òê • Ì/¹6Ï<“„ÈVɬ_`,XüÏ Ò_,úDÿNº\Ǧõ fÞ‰ì Ò¤7®­< Ùª5â.޳läÍ<~"At¸3jt4¤g|®û¥þNoàÞñ^Z§×u¬ò;(ð^µëóLHxÖH}^È@H5oÖkêJsˆó:ùùYlCˆ««{7Ü 2 çœæÞ Fv^Û¾Ë+¾Ÿf öÆ ¤CóŸí•êUOkþíR:-/¸ý¬“Péݱ´aWÈ9d-n7µ”:O4ü¤Ú† CÚ/ÿ£ø³`Á‚Euñ+NþbÑàß.×'˜y'²'HO0ö†(új‚GˆËÊ›˜zÒ£¶û ¯Í›èÐÇ.KýÆwAó:ÊÚK’ @}÷à R!ÍõÝ8 3gH?uYÛc·âxgr;i=äéY9Co!mV¤k]ïEœ2ó›@% 8œ³gGÏ‚R±å“[½\ª£íþX;˜Ý]›æeÙþžú -òô‰ðF5þ|]*"ÍVË–<,X°`ñWAñ'ȯ8ù‹­¶òq}‚™w"{‚ôéËáé¿v"Ü×h¡ØI¸Ò ‡¶ë.–@ÑëÌ¢WmW@Q Rt|©Â^åz9 FéBÆÂ áÁÔÙ5[€»íÆé?íõw3óÙá&d<{ÍðÒXÈ|Z×oé€ Ø²·»ß´. ö°O-Ô¸ºê÷ÝúKÂ/6ºÈ}BGÑjÞ ](¨ÝÂqQé8àm¼ÑcþZ (;ÔÍ ÝhHö=•ž^ãû³äbñ¿œj%Šin ¢ÎÇãóÒ@â5ÌÛÞbÎïÒI‡oÐnCv ~£Ÿ)¬ YYüû@~Å«½\\Ÿ`æÈž =Azã‚âñÚ“ž@ìÄoTEÝ!33>)²–ú HÎêÇÍy»+n»ùÞs?ü–ÍlÙ¾Gmx,T½œ~Ò_žàÈNzo«çëC ÄÚKݪ»>Pâ±SàYû8ˆ›Iš 퀿ÑXÅ%'$¦Sù“¾iç3µÞ.6¯i9YüñÁûõÁõ­ cº¾Qèc›hmô-lm9+½2]BƒÉW3V€¤^¿n={Ö¤Ì,þ=ø^ü‰¿]>­OмÙ¤'{ÃãøÍ¬;à!ÿÙã>7U ¥i§KwG ‡h»!¢è³p%0Á":..>˜i,ð†´†-Ë› È„œzC|‡®2þj­¹æÊÞ3n¶Á(Á/x;F^ŸÛÊ;ö=`xyð¿ºöìãï¢;U»Î¡Ã¦\±KŸš–“ů™žPhš®b¥òË“Îñ‘¯ã};nežK‡œ©oØQ“2²`QÝ ulf}‚æÈž =Azã\÷7’ö@tòÝç¦@ôFÓ†]4!:÷~Ó/Çã±o»^Ý}²½ÎÔ~´b!Œ[²E9&$'g¹®þåÆ]~˜ÝatÿÛ -Üù®‘'ðæÎè²$ÈxÚjÆw>²F7ìM› ‰s!ê^YMËËâ×HgÞß[ðiH¢gùÇYžÉÍCg·û»Õ´\,Xü 0ëØ´>AóNdOž ½qvÞ:ïKï¸poï°pûÈÞp®Sí·Û uñÈAwÚÎF¯g­&ž€RËžœ/¦5]¿? à%÷qÖ|=¸6wuCö’ÈYܘ°îP¦UVì ’òWUÏÕ´œ,X°`QS`ö;Ñ:6­O0óNhOž ½qÑsÀ“ ràQÈÑ } /@²‘m»ê8BÁQ~ý›Â€ã˜{åì^Mׯ*€4,W·gù¤8Ì[ò¼pk}]= Þ(é¶^]g¢ p:&ë¹-¾¥ï¸Þ™3Alšç•üÃü³øß”6½øæzMËÁ‚Å‚âcÿ°òéüí‹¥ýN´ŽMë4ïDöé Ò—:AúÝ^ÑpoæÞ„e_ MýÝ·aý!{ïsµÐUYÀÿ8µNsó= )š¤rçÍæUŸ? ௞ÉmºmˆjŸÕm·"J5ò^K‚Òýñ;w6x¥ÃBž[]ßs­Yë4(7Öî V|TÓr³øÿÚ;ï¨(®"*"EP,Ø•XÐÈöµÝX ÄX@EÀ† jk Q±wŨÁ†X ö‚Þ·wDìXà3ÉÞyÞ÷Ë›cÑÅd~çp–Ýýͳx÷Î>ÄS·&]?š²‹îÿèTmê…ƒÄ-ÙätÅpP¶‰ˆØÒÚÄoÌò̓@Vh^_\´ä‹$;¼“A“ÜwãñuÕfŸžB¡P@7=}ïŒx'Ð=zqèÞý KŽœ{ è\¶³ÍÁþØØ÷ôo{°nžÇÆsvx~ï‹Åûp÷'pÝ ó Œä¼xáÜp®®®ÏÉI©ôr»gôÊíZD÷+k×ü~ZÐÅK0>.‡‡Q–%Ö*(¾–´¼´ÑAÈ ¼r ãé×Pd5>¥þ­ ²ÝoòŒ[1nßC‰Ý˜ Ü:× = …BYøé¾Ë"@uÓâ‘K¢ $s:ï•/urôèÒõä4öÇþó﫯‹u±¾ÖíÀóØäœþüÞ‹÷;á>6îOàºæ'Hÿ5‹ûG~µ îö«)˜’"ë»D—yˆA&Üè3ÍTñç“x¹çÓüŸƒÚ{S›,³C Ù/:ÔF þ¶ß°çˆ Ïõ°ó7-÷BŽ_ÿ³>å þÁEy$$¤-]£gvmŒ¥í×3þr] …BùX€ªæ I]½™ßwÒ†,(ê0ÐÝ"óÈ*&Y^È¥¼³…?o©åË‹eäö=ýÃ÷źâX/ëb}'¬Ûç±ñœžŸÀûbõ÷;á>6ÙŸÀu'Ì'0N~ßô/íÕò HÊÙ[XØñÝ÷ù•‹Æn𠲋ß:|ýi>Ý_Î)î ËûE8_n–;s^3¸·ke§‡»ü -8Scïi1›¿ÐZxAÁ¹ÃÛNgèj{M¶çEPmÍ|ìxlê§š'…B¡¼PY<<§ÉiâF•sÄi•qÿdSÊB~ºž‹ý nô ‰×õ!÷ÊÈ}:¤?6ö=Å~vاûO`]q¬‹u±¾ÖíÀóØxÎîÎO}lÜŸÀu'Ì'0Nýnó"…b1äÖ›µÂú‚$™†E4}5RçM9¾NÙñ6)áÛK@¶+—Š@µØün€õýªž…B¡|( Vߨ¥Ï:É^4?ÿ¤C÷\pÔuO8ÍxÒš© ›öž÷X»Fž5„ìY«FY[ûøˆÔ~A˜eUy) åcó.œÜÁ­øT7ìt¯æœÍÀÙýn±&×ôí༓3Œü.)ëíwÏs0G*÷õܹ–ôÇÆ¾§ØÏû‘þúºâX/V_ðƒçû¸î„ùÆ Œ—[¼ ~%êÖŽx{Ì2[F¦vß]’|÷ýJ‹Ðx.Š«é^ïoÏCa\ž{ø[%ׯ¹òÇÄð k t 9Ùq3.7: YǾ³ðMì…e…¹õAe·jÛŽ zý …ò©EINc©èN¼ü¹<§í{Ÿ¯Y£ˆ:ëýäy ´çS6‚dMÌ}Ç ^¤?6ö=Å~vاûOèëŠWU½XÜÇÆý ²î„ùÆ ’o‰Wœ_Ò"-£êûr ¸ÛEûa nqãÆõiw–ÉãáÁêâms­@â×rö0å-PçIü ~o¿?М‹*h÷Úä¹~ÅßÉ!3§d`PÚAÈœ$Šw:¿ÒóXjëÒZ Ê npwmÈÃí…Ïïlm‡¡ç;Ñu( …ò§Õ ˜ûC|ÛüYƒØL>h†lº”¥Ñz^ï4þy³£·n…ë¡Ô €¾ 7o$6α:;÷’õy®Zæ±ìxé­ï{ú±ûÙ‘ùé÷±Éþ®;a>qãÆM»öÏΙCöøe{|z€dalj­‘1ïõ(JïÞ}Ý»ÈtCF/kÓ²Cûe„Cζ›ëXÈîÔ!s]¯B(j?ùÊ~³ ãE{¸ù®åmOaŽWý9P(”ÏÐ4~8Õiå 80§Á… r¿ìí Ê=o_— ƒvKÈ1³ï'ÃÚ”G‰•_^ÍË3wV8öÕ·GŒ\–YƒÎåÎN^F”˜—?ÛWn¸ùý¶Mö'pÝ ó Œ7’®Ü/œ<r̼îõl ªÕÜ:¬ý¿;/ºÃgfÙ<¡¸¬˜ÿHäÔ3îÕÒ׬>h¶t:9-Õ<Äí6÷\²e(šÝU¯}oü¡P(41Ù1åGwƒdÒ¦ÜJ_7(Ìúbº_z(zÈÙZè uj×ú¬8[¾¶»Ð”½Æ7=à¶Gzš›Ín ÚU‚f‡.Õ4ôu P2 pãUµÿžŒûظ?AÖ0ŸÀ8qã^î°Ñf¦>P”$ü»:o ½Yz®‹gø'̲} dyû2D\ˆ{ÍpÞ7 Ž÷~޼ΠvâìÐì¹(­À1ĵS(”Ï ÐîÛ¶û¼½ ÝÚ Ò!p"ŸöäÒ´§5[Ñw7ˆ*,4‡+AžR9qC÷• àÆÛê6æÞ¡E O¸YéþBÚmÉîQ]~ÝÜ„¼†¾®ÏÜŸÀu'’O`œÀ¸‘’7ÔGš8ÄýÃyÎm¡ð¥võ†•ïòа~û²S= +Íjé)ïÖ æ p?ªH\wiô‚š{åìŠW‰†¾N …òùr}tËnÞ º=×zç—!_2ÖÑëÕ[™÷x9ìÅZwÍû¶ŸO ÐôæmÚQê=Ëa¨ÅWo¿å¿{}ÖôØÆKAýÝ”«wº?õB“I‡Çúºþ)àºæ$N`ÜH÷ÜÖWÖŠ=‚Æœàh@ÜjÄ‹ôFi q:íð¢¶9(l3§:77ôuP(”ÏPì:|Æ¢OH[ÆY‹¦›ƒôØ•ºß?v¹¬ ?§Ç…÷¾^㙜¾~F6ù½¤ëô“+<>î¬ÿ½|ãÆÛ޳–Ù°¶@Öú!?~íÞ¤Òà&[2‚îü·WêŸzÞ åŸ(#»E…uä‚Ò¿¬ÄÕ4Pœ<³»§ï-CÏ‹òß0ëNú|ãÙß°;æ¹úš%äÔ{S0dO,¨Æ–ù˜¾ÁÐó¦P(ÿ<@y^›Ý1tÑkO”Þ ÷ár¿îcãþ®;a>qãFrÔŽþK“ X1`lèqWÐ6ÜUK´€ö­ P(Uh®´Õv¿ª‡E]kF^]7«¹×z„z^ÿÈ9;@×»÷‹Nò ýéÑ~·‡Ë =Ÿä<6ž³Ãóä¾XýýNú}lÜŸÀu'’O`œÀ¸‘1µk§² JùòMøÐ9lôêfèë¥P(”êhÕš~bôG?¿ýWaêb}'}Ý<çìðü„þ¾Ø?|?ýºÉ'0N`ܸ³õjÅ2ȽâKßK 4 ëÑ»¦úS^3…B¡Tg@9Q™wîû‰ïþ=šò¸(&ËMc]@½§xä3ÛO6ì?uű^,ÖÄúNX·Ïcã9»?y~×H>q‚Ô§ª±š×¹ä^p¿°ùñPÜlV6YÑåS| …R•€Öuõí¨—) ( ¶/…> r+Ëè{o h²ü¦å/Xõþ×× äØNxªSó‡åšäðm‹º¹ë@<ôçpÏGiP8Ð=»‰éµ²w pÉ×y[›z…çåi‰i«@ûÓÉ:'¥/>ø:HßS}?;ìS„ý'°®8Ö‹Å:€Xß ëvèÏcÿe¿~݉ä'H¾ñfó’ŠŸW@nüÃU%Bvm±áˆ½n …BùT€fKÿ“º²¦ ëÛÁ_¾¤%ˆEn÷ 2¿åS7nÝÔïÖ•Ž«Êø9ýkûÇ2¯«U˜±Ûjhî8Þc?4»Û—´s@qÉ76Áª%Èž|½«[Ÿ7 zsÍhAÔ)wòBÙP ⸵Í$µ[ƒ,[¸1\ª¹êÙòƒ¸îóÞùëâÎ%—“þØØ÷ûÙaŸ"ì?uű^,ÖÔ×wúк¸îDò ŒäÜßÛ«j÷Až7Û9uþ>] â iñw} …ò©ÙÂã+í§hª4òìð#µaшöÜ(þI³øx§W óy8-»ìˆû<ílß„¼N9}if=‹› ëĽ1µîЩ¿*èpT…?½­lœ²¦~×¢½z@Qc+gü4(qjM^wȉž¬i2¼ä^Õy;®¨Ê½\œ.ŸnG.ϱä(f‘Ö[6 $nÉ&§+†CÃ(ËkdøÛ~Þ#"ý±±ï)ö³Ã>EØëŠëëÅVùçª_w"ùÆ rîëÒènôsÈp¹`_Ø ÄysóC}¦‚ìÚ°›'ò«z> åŸè|'ß²?ÿÉ|š%å7Güx¤ƒÆïÝ®ƒLÛ€1+!cÜ ëÛÍCF¬.q"R:»¾ðÎÑ‹/£T¡k¡0ìÉU‡§@ZYó€¹Ç#Puq¿ýôéePó'ôJ½= ”›;ÔfÓ¢à»%Å5¼¿ $!ƒ{¼¶ëò~u+·žå|ñ¹v>óF‚z®¥ÖR5JšuÜÝãôvÐF¾ü¹¿´)Áã§ÁUTöVŸNíR$ë\Wfµ[ªîcåï©ü`Ÿ|KhÅí í\––Ñß ´l²±ƒ-ˆO™Äºù÷Õ÷o6ܽ”:[ÅWkói?ê¿ ÞïDö±q×0ŸÀ8q#ëi÷™·’?»øH¡P è&¹´Ú+Xeï§î¾Ã´È½(›wïÞ8x8¨L{î:ÙqDaUy(¿÷;á>6îOàºæ'HܱƒJ½Czþ …B©ž`œÀ¸aèùP( åó€ä%6–=7kmèùP( ¥z‚q‚æ …Bù+|Ce’”-z> …B©ž`œ ù…B¡Pþ L¾áTš³º‡¡çC¡P(”ê Æ 7ÄE-.MïmèyQ( ¥z‚q‚ÄÜ-6•½Ì¼@>gqix²£¡çG¡P(”ê‰7 lkKŒ«ºüÅg†9Ö6ôü(”ÏÐu©}”ñhű]TûzuÊßó '0nnºXñjèbý0Ñiàà(CÏ“B©N€ÎçJèwÆa 3âX÷3 ¬5&ìuíµ jàbÙ¼N/CÏBù˜`>AâÆŸcÍ‚wÄ‚$¶wýý A=Èy{hÁ–ß½^yNÙcî!Pù½’Úºök×>ilˆk¡P>6 =Á²O¨Õ ”eGå;ç‚b˪¦Ò¦… Jä*Íýi$Ê¿Ì'HœÀ¸‘~<§Y:çK(Ü7«øÜ‹Ö k~qÇ“²Z 3Mìz*ÍžNNí¶eHî‚K&‚&>£VæZ‘ò”ǹ»‰:‚z´lOK¹Ñ—oR¿(õk—mF¹z~Š! ùÆ R·Ñ§ô R3ãúÝÿõÀ¨N [sbͬ) Ôûig*”4¸ÇŸ5ôuP(Uh;l»Œ ÊÞSG²uãKbíÉ  –ÕEµÕ½bãÉýfzžŠ!Àu'’O`œ ùƸÂ-¾y—A uÝšÚ£&?·:F“7ÛÉÐó§PªÐ-9ìdáÚ¡I3–z>Ju„¬;a>q‚œ7512ªýKŸ•zï~ÞnþöóËãf¿ Ȉ8XÄÁ"q°ˆƒE,â`‹8XÄÁ"6q°‰ƒMlâ`›8ØÄÁ&6q°‰ƒCâà‡88ÄÁ!qpˆƒCâà—8¸ÄÁ%.qp‰ƒK\âà—8xÄÁ#qðˆƒG<âà8xÄÁ#>qð‰ƒO|âàŸ8øÄÁ'>qð‰C@⇀8Ä! qˆC@â‡8„Ä!$!q‰CHBâ‡5œ»ve†ÎÌÅ ÙÌà ¹ÌÇ ùÌPÀ ›3csflΌ͙±936gÆæÌØœ›3csfl,ÆÆbl,ÆÆbl,ÆÆbl,ÆÆbl,ÆÆbllÆÆfllÆÆfllÆÆfllÆÆfllÆÆflÆÆalÆÆalÆÆalÆÆalÆÆal\ÆÆel\ÆÆel\ÆÆel\ÆÆel\ÆÆel<ÆÆcl<ÆÆcl<ÆÆcl<ÆÆcl<ÆÆcl|ÆÆgl|ÆÆgl|ÆÆgl|ÆÆgl|ÆÆglÆ&`lÆ&`lÆ&`lÆ&`lÆ&`lBÆ&dlBÆ&dlBÆ&dlBÆ&dlïþ+ùí‚Ù»cýõý}»üúÝâ×oäñþÓŒŒ,*{É/2Á¯$fú§Ô œ4'dVðtý¯uýgÍœ970`NÀ¤Ùú‡lð¡Ð.ÿýÜzÌ~ñü‡ò·¡©¿ïŒÿï›3³@ßÿ1+òçw&ýuVüŒB÷äHþbio3d/data/elements.rda0000644000176200001440000001266614707230357014512 0ustar liggesusers‹í; tU¶•¤“t4A «Y;(›¢€H½¤³JÚt²¤’T’†^B§îàã¾ .ãˆ_FYd@™ADÅ BYÂ’ÿ^¿{_Wrüß?ÇÿçŒ}ÎÍ«·Ô}w·*u‹³J‡G–FJ’,GS¡—†`ú'H2H´5ªvÕ¡:=u’Òö£)\CÁ+ñ_ï^:Én¤J!ŒB8»—ÃÁðGQè÷^ xb(t¥p†»;…b)ÄQˆ§@!‘B…ë)$SH¡J!BO ézQèM¡…¾úQèOa…Q¸ÂSBa(…a†S¸‰ÂÍFP¸…­FREa4…Û(Œ¡p;…±d „B…L & Y²)äPÈ¥G!ŸÂÆQ( PH¡ˆÂx f wR(¦`¡`¥PBa…‰J)L¢0™Â]¦P˜Ja…éÊ((Ê)TP¨¤ R¨¢PM¡†‚ 3)Ø)8(8)¸(ÔR˜EÁMêWòP5¢ngid7ô:»øLþÇ‚œB€¾\ é2äÛø¨‚ý@®Loq Ã$NƒOLwaÀw4èçNàÙ 4Ê — W ÈšÙãu ßé C&›!À3³'f“LßÝ@'tÄdËlªÈ•Ù³™T'“³A {èé|è–Ùý  ¦&S¦ûpÐ-³Q³Ä}‡é+ôÄì‡Ùó#æÌO˜O¤Iܶ™=2;cöÉì…ù³ æW̦™}2ÿ`vÄ|‡éšéœé~†Î¯ÃìêlÕ^õÂhpF…¸ªWvqåWnqU'®<â ñeâP¦"®TqU#®lâj¦¸Â-‚L8dHL•âJ 3U‰+A±IPlr‰«Zq%¸0 .LBYåâJÌfÍÅ«lqo¶˜Í|çàPŽ /G’#nÍ å †rñŽ <ÊHòyB?y‚³<¤$(‡òâJÈs„B „* ü³B&…‚ÌB±¡Ø¢PPRˆ¶T„CEb‹"!Ø"®H°X$(èŠPeAãqh¼àÕŒCf±ƒYì`;˜…üͯY°hÆkÌ |Å_± ³X¨¢Xˆ¢XXt±J±0 Y:‹ð7‹@lè,BA¼E ¶â­‚P«Àl˜­³Ug˜­ÂW¬¸GP \„”xkü—µþËYþK¡è x1–ŠKëqrM”NMvë¢Th…]©Ã %BW•Ráq±C CâA“‰-b¿ç±/ŸŽ¼½öå/"å RÞ»ó‡Dê>ï`îÊîÄëOénÓ㤠ôcª|?q›2@nYé»ñÈm_øɇînøÃ^f¯ˆûOú†Så&>.·ÜäûÉç`üô/²múŸ—[9ýò%Ù·Ëm0ßø°½Äé–/s{Ç/èùÖ¡žšsÙ‚<éþ ¾ÏñýåóÜ_}lËA.€^Á?Ú´¸îÌ·ƒuÚ׿á/À_åÝ`/»¸ÊgÁ>OÜŽô)D> ò?ã‡Á¾?ùüýâ<´- ?´ófôGÐOàmâþG$À‡úBÿC¿¼ô‡uØ¢?ŸÅx|á¸ð/lo Ø‹èC{âø³Ü ã`?þ8û_„ø‚ñ ííéDÿÕÛ¯žŸóÜ_ý}¾¯ˆsA‘€N‰Ëå‡þ.w‚:Á¿D ôu@‡ha_ä÷2ضȿЌ_ù þÀ0މVEüúÐÿ/Â>зŒc~9À9€vüééo»kúЮþŸ¶¿úë¯þú«¿þ ûk3Ì£|Ú!ÏD¿@ý¡^0oÁ|íì•£ŸÜ/ûÔ>‹Hp_»¾:: ÿ ½ƒüƒÁN…^ Õî¿¢…ý@oD‚8tøzåùÈ—`ÿ!p_Ðq]`GW¥ûho|_:8=$ˆÛÚú º¢@ž¡Ðâs æó!ÜHàu!€éáöJ‚!N]Á¨GˆÈg0ÈôK‚a_äã þõò×ñ}ô+!oˆ?r'>éž[¢€OxŽø‘/ì_Ž­Vºòe:¶L ÿÈ|˜~jÞø#c ðå}ÈsŸ«ÁOáéò?ÀõsàŸÅÇ? cqSÚ‚U òV˜à ¦%‡IÒæ§ ëý Ió^ÜMé¤Ï‹·UN¾þMÒ?t^½=½†Üâ¼ê£›ÈÎUwMûÞùìäÞ#?"7–v½7‰ÜrYy²ûã_‘‘E<†ŒnËé±M"cz²\Øñ%ÛšWµ<åcBŒ¾`N2Ö´5ÚŸEL­¥1å…»‰éѧã.F²"øxμ»2³Ï­$¹§Z÷§ï$çkRÎé-Oãô”oçgIyÇ—± &âãß,._¾z©4ó~å’-ƒÝ_]G*æ¯6B&jòá.ÓÞîNÔå¬{/Q4…=öÞû¤j<Ç_µ´d¸rÏõ¤êç¯:çÅõ”2R½•Çòš°æ×Û¤¦ü>Jè.R³ôä%SÇTb»Ž¯·=jê˜òä.b~g¤Nw}–ÚBfÝ3ogn€¶·v·—ñÖ42ùÞóˆý`Ÿ“;‹dž{VÄ4Ç2>ï½8a½³!°uÁ¸ ÖÕÆ@ tÔ…ÖÕ¾-ÐUÛÄÛYôçg=-àŸµZ˜wÃ~n¸ßÍõ!ýä»DÈ[ñäÐ8‹ŒÐ‚³-šŸeâþ“ËžÅw}ÐïÀ\î3ÀÙø.L>9vô17Æg‰KÃã3æró`&wÀ<æD—sCÿ»:ÌA€¾pÈUŒ:zNÁýø¬„ïÐZ1Âý‘OÇœC—#‰\»s$Ì!t9F(äLãËÇ`|lj¹o3äòg€ÿ3|_!×3<}x¦ó÷uïFñYñ¬ð“ÏBÎŒïNñ$øÒó¯—ƒŸÉ<#‰œMäPW±Ï# ‡°?ò¯£G<+¢ýà3<®û™­ôËÿýuŽI_ÝIF>3}ߟßx‘ôx2aGøôZ’þêÈÓ7ï]NÒž[èY7ã~ÒwANä †’»zÿÐó 4fÎó3Í«È0û˜¥'>\EF<ÁϽî¨Ývß“$åéÕuÇß®!qÍ|}Zá/–¼p;éÝ:tý5'ÞÜ~È€Óôô™L†üöøö($]§4xÏ_N'ñôîêe­$q,??’Æós%±R›°ƒ$ÅfI^7ƒî^$uñµë¿}…Ô‡zÓƒjIy¼ßûCNL$)ŸW}šq†¤¼‡Ü$®3ïþíO&©ÏÑS8¶‰ôZ¸YéFÆ“^Ž~êåP é·lE妋#É NºjÀV³zÒÛ;ïY@b·.üæÙóƒHüùß÷Yy„$>’ÜýкÝ$)‚·×O[šd|>˜$CœKžÕ÷Xýž’üù±ƒo=²Œ¤½y_ÿÞQõ$¥(œ i¤gûîÉ þׇË5¹¬_±µléy+ÏÒ \½c¶˜¶”ôÏô²•$ºïê¨è~ï“îû¶~÷ò‰-¢lËGHl¿e­3×’ßóó:6ûI,Ë.b&± ûÆmüàU»òÞ ö³©$~‘:h÷f…Äyn_Óëe·Ñ%Õì”ÄÇÒ´Á³ŽÄ;󎾖ÜHâ×­éõÒâz’`( ¢"=ÞIíyãœá$© 1ä?ß=FR†2ñµ‡6‘TO$µ„¥gCHZÃ]o9Dzž¦YÃìIÏãL™$½Ž-¼Dz7pû‹wnoë±ÚC’W0uGäÞœþ´Ý>º…ö¹Ÿçy1wÌ:`û³‰ôð‰ý.ÒâkÂèhš¸PýÂ3Züß6õ}`I>IˆéöúÀ¡%$>‘Ÿûq‡ÛÝHÜ…ao1±Ðgrã±hPäƒï›>¸x¶Î`Ïäç†íx^>xùš°ú ¡òÙo“Nç:QàÿÒ—~gÊÍÛCßýôðCrÓ¦~uÙyÛQÝýMºv=¼«Äùƒ@×Ǽñ|}Äò¸ðóØ þOã(äåßBž|} |4BþפÃÿä«_s¼(<ñ?l¿†õŸÃ»ìÿWx&îG:õû!=‡€îãº}vÂóÀç<¿ø¾ÖáC="ßßCˆrÝüïùmƒþúÀ|ù§~ònØÛ @ú+¶ï‚ñIh_ø?$äøü£}-ò¿S÷-†N??I7ê ãÚÑ÷ G½=c‹v‚rE>ðy åŽúE»= ôãs"Ú'>_¡\ð[ |=-¾©àþŠþѤkõãGtþ„þª÷[|žB;ÇqÔÇ!àGéG¾wêæ…¿‚]éñúÐÞÑ.î‡-Îc‹ã¨¯€Fàc«ŽA¬×ÿí ñcœÀsïCý¢="ûÀèž7/Ú?>Ç¢_ëéûß¶(wÄñýH¯Œ+È/êýíõ‚òÂù½`¿gÑŽ°ßÀ÷òÀ}žFè£õúý ž¯¯ÿ'0ç¶:{—~ù÷WŒMÀ®ÅßþŠëôþŠqâT`þ¢÷/1®‹ëÂßÁ>Ä:á¯`ÇÂ^ íÇ@ê õ€ãG0žêüõ„îüCvÅïóÈ/úúÍÕüóã8ð~œÇóå{Dç§è:ú¯ G/ŸÛb¾‚qdÈãïÀ/æ z»Áo0P?ßA¿ð¢ï Œ{‚?Ìß—Wy?z;¾¢Ås íMgw¢þú>0éã Ò‰rÂ8yÊ ó”Ã:X¿ðb<~íRG°ìYQ+`ã³b6ÇŠ Øú¬€6°VPÀžÙÿŸØÇúì}n™ä/Ž`…¬8‚)°"€Z‰ü?Jâ¬8‚Y$HþâVœ€Å,†° VüÀŠê€FVPÁÞq²"VtÀ Xa{>f¬`€=›²ÿ—± VÁÞ¨ÇHüÿ„,>0_cŬÀƒ6°¢VÁ XA{6d…i/v`oÔYq˱Xq+‘5•Ì t/{ðô㟙?“í]ZÅa€%Hå0nÀÂ=C»ÛtÑK¿nÞÔéO&À‰[g>C‰™,‰.‰RO*IÏcŠg$fÏbÆ JÍIÌ95çÔ‚]kkŽ×h%4jš›ÒÜ”¦¦47¥¹)]°Ê‡j½?KœïmûÓñýmþXî¢/—Sý»m«Ä½z`ßܿ;Ý}£‘“,:`¹¹KÇUžðûô>0ùPpì?æ> ãE;y’üþn›Ú¼w5kýÛìëIŠŒw}+6ûÍöÁ¿Oïšášéö5:¾¿Í’íζµë ÿnÌê;‡þmöMwŒ(œWÒ§PUÎĮߧ·5ÎïrŠ÷ŸŽïoóÇ*"ܰçóß<´k«ôsêÿmöí”ﮥ-éó<¡eGä~Ÿ^EÛ±Umm:¾¿ÍÊÔ~¹–h‹¿Û&Ìû·Iß–ù·Ù×ö^Î¥7aü憎O/_&íöoËÿ´rTÙ*½+gþnwtŠ?$/ù·Ù7ÑÜ»wWT1˜,›6˜`òûô^õþáùà?‡÷,¿p]brMú»Mýd¬+¼vӿ;í‰ÜDH‹²¨C¼-¿O鷺Ç{·ÿœ|ϸÑXšÕýï¶‘iÝ“clÒÿ6û&ïÙRßԀűÍ»\|Ÿ^û‡%YÏ?ßßæ98Xw¥ôß×0”<ÔY¾c˿; GøÊù–½`Z·[7Zð÷éµ™¹>žø§ãûÛü±<›ºõÓ×ö¿Û4!šÕÙÁóÿ6û¶[ìÞܺÏ–iKOn=ðûôš´º±ÖòOÇ÷÷ýÝ•—·2Wüݦð»TøÝPÿ·ÙW/ípËÞ9–Ì󄺈ߧWg[VÑkë?ßßæ‘p?·äã¿Û†u ëZ«TþmöMß›»_63³tf¾Øý¿M¯™¸p„˜—ÕŸŽïoóÇòxoÀ½'¤¿ÛÔ`Õ³GxÖþÛìÛšl÷[/ñÌçtײž¶û}z¥­HlÛÜþt|ßßóI%áñuþn“Ƭ?0ür÷=¾7·m_Ë…?†ãL˜7¿ ]úm~i ”ß·õeüÓñýmþ“G(çþ¾O ä•Gýy=’~¹Îäk{ý uÑ×10½ÖÈiô¾L3KÔiGÏþ6¿ÌÖÞ˜_¥±úOÇ÷·ùcõ€õøU¶]·©÷N'¼³ýeÝ4Y›Æé7‹¶OËî­âª³){™ý„Ó¿Í/Úa.kÕ¯S:¾¿ïïnϳãŸÿ9Ob$IÓ+¹nã¤ê™‡š‹¶¯ž¦Ø¼×TÌx=.sÖfYOjõâõî_9~ø²×ŸŽïoÛ'cBdvWÂßmÊ„~‘[»Æ/×™ μ|v»oÑöME_Êmd3‰Õk⫹Á¼¬×ÿáÑ›‹×Âÿ`ù¾ßvêOK°Ñ\9š4ýw›ZüÚùÝ£+¿\G=÷\Ey›ý¢íÓXâ²9^Þ ¨ 5o KÖÖöÛ1‹ÖKàs¨æû·=?ð_¾O¦%±¶Êc)·I•þœî¿\·ñcSÃÞ…_æ¿Ô£Ö»ùæåÕ»À|ýŒH¾ö0·;³4EìÂâõ¶]Z)œ²óOÇ÷·í“qFŽpÌOÆÚßuo¦ÿr9˃æËU‹¶oöõÆòî®X0ÿøÆû+ß °<ܱ}®nÑù4˜[ø¯ŠÛ¿}Ÿ¨k7,4LþÓžç½>îñëu+^™¶1-Þþ­™1`Á¼¾Û±¥,Þ ¿`Ök]¼Þ®°/F³¿ü{û¿E‚)%hÒa«#4^Fä5éåY¯àè _®Ó¨(»ö%|Ñ÷kA+ìR? æ+y¤ÄÜó¥U³œ¼¿Aï£Ëoëÿt|ß>¹H~zÆÉé÷N9(ƒ©TÇö¥×Í+«=|›|hñü´«Y—ÒGó»º3f`¹n}œ6¶x½)é»^$ý¶çÿ´›æÐGiï‚À~xŽ¢ý¨ù‘y_¨±„Á—[|ÏOW§Ý2xf¢¬^Ú+›Àœ‡¨’®³kñz/ÀºÏ×þƒòˆ€,ÙobÃ@Š?ÒÔT5$žã}ÿ¼ÏÊéNgÔãÏO5&/Lƒ)]…5~’LÇ‚]Ä. -^o ýòèûÛsSÿåûdºêT<Ó[0ªpO|]¸ Ìšä5}ù½îU…Ÿ÷@ç¢í›QcOijŸŽ9á"ËÁbõé2âòÅßç0s<º3ÏéOÇ÷·í“Í)ósƒ†z`Ï!w¿3Y¨VÏF%^¾ûõº–èwCon*«È{˜©ÐÛ¸ì;À¬c‰•%óâõNœ‹ôíêýÓñýmûddºÿ§x³.ë\ /¨Ù[rÍO­_¾¯ ª.g«Îå-þú¤~\ùBZ±=˜äö\`& 'Õ¥/^/= 7«÷ðŸŽïoÛ'ó0·óa0v «L¤‚Ù¬”Ô—m¿ô̦ZÓ±xûæË›¢²¾Î…£™jÛÚ}`¹t[‚²èsærÁWÏ,ú¼ÿw‘@Õ¯»ðf§Øyß~™^6y1þçì~Y¿€MЙ«ûÇ9ÏO\Ož¬sÛÝŒ®b£`þýʽÔç|‹×{ÒþŒXÙÖ?ßß¶Oä]FÚO©âÙy› ½@²8Ö[úËû- ~öëù¾®E¿_š ÛMæN•‚©œdÄSx ¦›ô™·.Z¯ÆãÓ¢¼Ç}ûï"ÁÄûàznÛ.0®¸pÍêe˜öZñ„Õþò{xÀbo”ÿeÙÅ_G,nÕM‰‡$€e­3›µ+Xewoifúeýk½cþ ¯~y_åÿ ÔƒV+­lLÁ6ÏY!e‚l¸+*Öì2û5¯ÄZzÌ+\Ù^0ÙûàŽ…Ì‹>çE ÿ2þ`ñó‡:ËæÅï“¥@$§QJ=XsRYք士2ýþ3Xwè­nþÓñýmûdM}=ÚêØ Ôg’;ïl+Ñiu§ÊÀ_®³Šu)èz²è÷žÁêçžç¤•b`¦p¶•çÙO0ËÛëxmÑÏ™ƒÕ z‘ŸÚ¢óûÿ. wqS6úf‚att˜4iˆÚF3Zßù½‰ e¼[3nNvÑöµË:î×Gª‚±ÛñÍ&Y`œ":[¼è÷NA;YþcÞ»˜?ßß¶OfO’-<ƒ OUkÛK0?*ýñXÅ/ßç˨ó evËÏOgc7Ç‚µTÇÏ{ùš`Ýù¬c´Ðhñç‰åjÁ‘5·þt|Û>Y†p”ÆÇ¾ªtËã´A°œ/ñýxã—Ÿ§ƒUHZùE©ã‹g÷zPÓ(˜l:%}|[˜|8vÒSžeñzëš>lþøŸ³O²gÃÎÚ}@t‘«cgV¢À\ÒiMÖ_ó ϳÛK¾,žŸtRÖp/MÊç"š í;ù8qãâ߫ґöÛë´øç7þ»H0û°â~ï!0Í ddèË¡õY¿‚…㲓Þa‹ß'‹‡r[Û]`ÅXæ½ùËy°ÊËe¿·x½õÅ̲"ÿt|Û>Y†zûm÷lª¹ 7ï)°¶¹ú_ß7²ø¦Õ¸aô—ŸüÚ¾ÿãoiI`\6]±¦Þ Œ?Vq[.úý`°t?~üÑ¢ï?ýw‘oÃÞ¤‰ºÑq©œÖ]10ŒRˆeùöË÷™ACç]WŠ‚Ë¢íkÆÔyqš¨9ÿµêèíl ¿Zu¤I~Ñï‚æêw‡˜VüÛ¾ã¿|Ÿ,®I¿×º Ì£–•û5Ë>±7b]~ý÷Jø¸ê¦ýÂâÿîíÔû†ŒßÕƒ¡-Ý~n`uu´Õâë'K©$µ¦’?ßß¶OVÌù†ö–@•å)\51 –¬<§féb¿Þßeq'.þþœô„¿Qu­!ƒÉ·ÃF?Áä³Á›¾S‹ÎÒ" ÏÁü·}ÏŸ–@ÔÝâ- †òk?ˆs”ñÌÄÅï—õ hž ÌhW\´}-ßí)ƒo£€ÂaV°f P„"Žœ¢-úycÐÞP™e¶èÏ1ÿ»H°ø(¸Â)|ÌCG¢i}`qý«“¼gæ¯Ïá›4¹UämßZ0ëYþŒ7ØÐmn‹©¶½„²…ììâõJµ—„ÿéøþ¾}òe¬7 x6Ö1Õë^Í€ù}îPÞ_>ç ± ³þ‹æ°xñÅ/o`˜Ü¾®¶²?Lå?° ]\üý‹VW þEÿýw‘Òq !¦@œ2X·aåg0èËÌ9mUóËu:ÏCÔ›~^´}ÝOÕÇÒ|Mñê…êÈ¢ï¸:Ž.^ï>«ã_>'ÿ‹‹³v›¬DÆÁ\²â£šÝ°LI±ô¦ÿús +Øí[zÿ5æwBŽn½`£ÞQïÐrlœCAYüàâõ¾½üáQøÌï¹€yIX)9Ò¬ê3IË|µÁ‚/Ôâùã_ßß3ï5}§±jñ'º*oZ„ZÁh¨X-þ\2­{[öî—ùæ¯õ*ÖÇ%™üçÔOßY)¶%¸öÌDÉ#€s>á†;y ´­VJÐ{O,ھΗûýO÷ï’Ⱥ¼®Â@:Ë­{×ò—߃õk½I¬ŸU¥~Û÷˜þi VÑe;è°xr¶@Á© ¬íW,È_ûe¾V¬Jã‘·ÿ¼‘å÷•ÕÔ9°Þr?çLæW°Þ{.{×õ‹÷kɉQöÎïk˜g[m>í©VÉ[Â&ŠGÁ‚mB€Iá×Ï—›‰äîyV`±hûf'­Ç‚˜^1ÿm?ãe{™/.þ}w³“{¼‡—þéøþ¶}"šÄêô‹p!ÿé²r’*Îh2–ýòù~ÐLö—½ùqÑöµ(»ž­ÔCŸš€5.kÀ°(ÿ«ïâßÒ¬ãØÈ´bÝŸŽïoÛ'+פVÖh°Ôv<mmV£ÞEÙþòó?°¾yQpýÍE¿Xç*Ìîx6–qIºý`cúl|íý_Þ¯ÿµ^x\õÜì?ç=53}ëk.`É(«l ÌvçøW füzݺ”«¤„ÅÛ'‡©/4‰©òª¡wŽ`BþòuKÿ/?§üµ^]·¢žÉßöý˜Z‚Á•æZ÷R €W_7*ùz0 žïúõ:ÑzÙ¼9†EÛ×9B˜|j†=VÓæÛ^áȺ—ëýûS Cjl-òøÓñýmûdY&>¸þýk°·X&ÆE+!ÖòO~ù{ÈO>,Ë­Tm߯É1So¨k•iQûå€ºŽ£ÿ‚Æâï—ÛXGfv¾)úÓñýmûdº±+z:å„ôÛ¦g¾ÙEù¶ÿrYÀLyÁ¦_Þ_úµžö*+¼Âí—vA¨·ŸÓß¿+º!/¿?ûå÷çÿw•`–úxý*°abf #VuuõÁ™ƒ¿¼ 6³«;ŽNþK¿uÅ,íQư>0ZþVj¬/Û^d#”€uC’˜˜È¿\wÀføB'ž P7Lå\ª^4!xÙâýš¸+Fiøû9D°úacuéÍ¢Ÿ ýcûd|ÁùÁºG=`²ŸÃÃ&ÂõÌ„OÍ+~+:kœÿåûaòñJE)9(“]oε¥å§H›îø0 º ãÈò/ïÝ‚I`èáÒó`lÄ´×Új)k: Î\ܾxÞ oÚñ¥¿å\å$©]ÿx¼õ×|,þö&ôWç|áœI½ÃG„¶½4f¿ÙØW —}×Y¬ZyÍÍa&h)èÝÈ—uÍ®ƒAåÇwY@/Dê[tËA»È/=¿ü\ ô#"¤]Mþ%}‹R:%Ð ¸¹üqè½8ïp=¼ ô®ù?2¼„òjе~ÚY~œ úŽÍß®È»ÔØ{5 5®:Ö3fññbqYWð÷ûî`p|}~ð·}è>¤N®æÿ?Ž옘_ótÕú\5þûû0À†¿¥è}V؈7]m}b Öï=Š’¸FÁzB­½EîÖ“ÇŸnz£…yÇ9ÿk£Ès²Z‘)l@åξ~¢KlbO0ªb6=àñ×¼²à:0 û¯çÃF±B¢•Q¬gN«xL‚ÍÆÑ3Nwõè…Ñ·ü_°žë³ü‘Öa+ÒÕK€ªlÿN& ¨UÇo];ÂÔKÙ†-¶‹Ž#Õ4¡·¾âïçÀúUSg•Póï»^,KyÀàòüž}°1æú^‚qèN«Þ–ÈþϹ޵wÐøÒZ ÜŠ¡ØM^JÉ©¥ /ö¢´ä20Šý½4 ˆr½µJ何j3`”ÇX~8}˜¤ðŽ_`£+³7„ûÍ+Kú­?Înø—~JÕ~-JGP6-Ýöz;P¶æz¶Ê=×rq•M`ìpõ©M Pœ/Uæõû€I°£ä±\P’òŽfÔ%qFW´cñ¼'Ï{tì“ÿ?¸VE^¾ç÷íeÉîiù¤ÿãïê€Ñ¼Îþ›+ÑÏâ“°¿Ïô·>[®tôCn¦ªI‚¾ä2ËÎì Oÿêï`¡úÛ]³¡eô¬î-”Š‚¾Ôõ{Í3– wÿüÌ'Ç= ïxØs¬ô’úå<*6àºtuJƒ ¯h§Ù/Žë„}‰™ÇþùC½-³gïK@ÿþNBRÆ4èW×\ÙdÚ zýŸOìn}×–;*î»@oA¡ØÿûwÐ7\nŸúoöeÓŸ´ƒ^³Œ-{à1з±{øl‰ èÛ[…;7§~ÚÒ3gSл•§wÙá_îó‚>Kù·Ë•¶ gÒ'ì úæõm¢_AßÅ·¨à;ô4rïn8úÄïºSýv ¿ùÖÙÞ‚ Ÿåã(FÚû/úô*‡T-ý—ïmÁëBjßé:èk\m˜•ä}%BÀ ®Æ¿E_ŸÏ³EÜåœ?HA¶èôä]žxïp GÞý W!q;|³Ê?ç|ÅšÀÓG­€ºn¥Ã¥¥%`3Êk`¨ö l†xä†nj€ÍÇâ!-ǰ™–¾Ï•6ïE¬,¤Àæ~úǯ2R@¬˜àÇ:·-Ç›_Sl¾eç” ?›'íŽ}y8O­?¹íÆ?纩0—)v)Ø >>÷›—žÅ»ÍQÀ]Œ7ÄÀf’½ì 7+P—¶¼¼Ÿ}qÄé\Ýðq™,áq ›æŽh·ÃëÊü^,\¿¨šgWodª’צ…¯`sgy¿ï¿¼Oùá%ß{[ÀæœÐ›©diÔ¯ö)0(l¾ëß=zëê\»_ñ0P™ÎvnëcD\áá—x2Á¦—»|2ð_ÞCëtÓóÿå9D°ç“•’@ÿ¼/ßNØ6ÇÂ[ÿcîЛý;Ò®· ¨kË<ï´Ü‡á¹ÿœÃŠ‘-ÄDuä—¶Ÿ[S½€2ÔÎÄ|Rº0üÜó>Ϭ0N \xÐùà.òÒók QÏ<"É}»+Œ ³Zk¤€’õἦ®?Iém €‘Pø†%ëQÿIý`A¡ÎõÆïwö¿éJÿÏš3”î_–0Z½éÕ M䱇{DÛV€‘ó}Û œ‹¸k¤¶(1 %"Ê//Á:ÛiŒŽºð¾öáòCÛ,s}@îQRŠÊΗ·Rþ•Oøk뾦veà5ûžÞ¨O³íÆ·k@q18õñÀ Äj©äá£MÇ^¼tJånõP,Û¾miÿÊ_Q燗$ÿËç@9ðŽÙ¯…´ƒ#U@¹úÒ¿aßÊÆ˾dÞi ”/ŸMø3Áh™¿ üÔøgüÁÓK ÎåÊô¸U[Îßý:$ÛÏÏù@Ç:é«¢èÈÞ`5kбPà¹û]t\ê”Õ#Ì@Ç4PêÀè+ª™´o«Nt7}¥Fþ3cXúOeºÔ`?•5qXtÈFoý¹@GEë¹x3êS{hÚ7#L¼6 S°Çˆ£ tò­R"¿ìíâµ»ûD[@G쾿ôdh?¼Ã×¼0 :‚Qe¢h¿]];l<t(µ;Åí<@g©Q8ñí(èJJt­pÂüH¥Ñ²Rtˆ® ª5ø½h?3ò¯¿ÞÇeÉ@õëéJ[êÖ¼¸í^ÜU8•¿÷¢9(Ìðà.±*KQ¨hÑÌó10òi8dqú8Ù\{võg5Q¥ÛŽKù`û˜æœG1y¯ ÎIÜ ”O;ï°n#O®Îä+±`Ĺ+õò.0Šp1<\€ó}iß7s¥‘õ.ãHóõ`´ÜÝÖòòârs¶B `¤Y'pþ,Ê8W¿£ÔRñM¼ÈG_½|ñv?e‹6º^Í#¦…ÉmZØ^ZèBA^"«ëÙJÊËþOm»<ÀHœáýU¹•`ÄxÙò³Y®ÉßI¸ FŽ[šßèþÇÏ6ÎcÈ»ÞÑ^õÕŠì.ˆçžßÎ'‡Àˆ7™Í×<ì¼Ãúy7±0Y×Ô®¾çÌ®ÿ/þ\G¿Ï‹ü¾¬pŠvŒø&Žìjûg\fSÿmf{0b¥§Ý?Fš~¦/5B1úV¦hßèõmŸyÄéðuíÅ•ˆ_o¼i¿‚Yuñv‰0#jTxî Fæ|^Kùÿ9§aÔ‰8ÁÐ>ßìVì$ÚvOÞ½d¸Ú·®ÙŒÏ‚v.±å!íhçeë3¯z Úº/_/im—× ãå¸Þ‹áíãäM7VÍq¼m“RšƒŒ ê̺¹O´ô.!(mí Ÿ'º•8~ú@íÕ£²È×ö0”V!_ºr±ÑÝ@[î¥=Ç´²ßWÄ–€¶Þõ˜bé í›Åù]àhwŒ5éÔƒv•Œ©ÇÄvÐÞÒt”5»´£óOÆò>íýÉW%SÑW˜H"€¶Ôι)\oÃRí5u´ÉÒǯ¥!¿Ê( o Úž%9ºlA{Û–Zæ~aÐþ”9µùo[Æ[µIÐ>E¸M¹ƒ~ߨˆfíjŸunq† ÍÚ4p:v´•÷ s½p­ùú¡?@[+ïcaì2Ðæ]û ö.ê-|âND¿ÂœìDZQ_ˆHOGh§P]ƒ8ì°Ãx¾²½^¶)´-ë×\Ìí;[»¦S¸Nýýý@³9ˆ _ÐlgäHÕ@3^½3!lh†¼~Ë'ä€F™6’KÒšÁô©x‘ý@3 j¾ô:h2šCDk )|6”¾shÚ´1ÍÚ @3º¬}hæI¾ÇÍ :¤÷û`–´Ñ“P É~ï'hmš¦R+G7/Ð4VªQQ¯ãå” K mœ‹'äáü­¹Rv¯€¦#,çv= çG¹Ü«1àÛ¹ˆm@S±¿öñú ùNMöíÈš÷ü{¢Ýe )>è™phrVb÷bqž1Df-ÍLAÿÁ  ) NRß8!®íŒ—Å£qž|ý¦u@“º\èOqxôÃ¥ˆ£çèI&” „.Mµú²¬Ž8ÐwÒ?æF½?¿ï¹‚ëEÞñ®´Áxì‰a® B½CæAÉÓˆ7é†úú+ÇÇåI§u€F«ªËÌ@ÿhÊç1o¢Fu$i ž;ë…¿ôÝ4QŠwNO Ž·;Ø“ÿÉ/Ž>üëÆPŽŸ¸»Ô5(©eÜNË:RÆÇN»å ”“Y'ÂÎ`)dE?y_†âÉõ¯"ü"›ï'P”{ý‚ë´W·{˜µHÏ Â<ÇnSzK,P.M°ì:¸(ÒæAñ@Y3‘m7 7žWg™ÑŽ›Þþ‹K€²‡v$‘ õI­R?…ù”Ö‡cƒ7€ÞÖcKZ¢ ¾ºÆ7ó³·ò|ï<·Òh+±ó¶Ÿ?–¿eŸý›ˆ @ ë5“¹”Í¥ÎK1ÝzõÌP-(é§B]}ˆù¤ý¹d5Äîéó± @!¤­©F=¦®:ËmòTõ°`“+PÔHy~ŠXVÕ®ýº@‰o!½°fJ¸ýŽRÔ{ÿ¬q)ÆÍcaz#ÞÕÑ%Lg²=íI“v PŒ_”0ªJœ¾k—‰P’¯§}9€q)ù˜º ãúÈpJw(¶Ç×^ÑÀ¼°ÌNúé9¬ïåæŽù[¢Ÿ«Yœxþ~O 4×ȯ¢/M§HÛ}…Õ 1ÿƒû‰th§LÕŽ˜€¦É»jÑF iAkºp74f9¼ÑM.¿ü®±(3ã'­@“ÿ%›ÎAÐør„:ðº 4µvhzf𦢕LÄM[дÏ>{õÍ™+žD½bjToîÇ ¹þ$1}‚4y¹M¶‚¦¶FÿÕ˜(ÐèX)a]8Vx·J4}™jù@“þ‚=¦Ø4e’·Úéƒ&÷lšæ ÚYÏù³Y24ÞUú‘â÷Š´(÷PNm.K^Rš<|+ü³Ÿ‚Ʀ$ ôãíN77gÐøx-2=l h̬XhD’Bô6º¦PŃw‚@Ó-Á­øthŠGMrµ¿«7>.IUE¼ g*Ž@£î{^`ÀgИá<µÇß°7mC?ûÏiÙƒ¦nA°%æ·šëîOujM‚¦æ2§!Ð\Æà°+ño¢n¬¨~ŒûHƒæVý¨ÐÀ-èw®í÷™K ÉrFim hÃÒ³ Çœö޾<› ye8úÚ^<ï¯y„¾Î"o ßZZÙ†ç~3Þf)òäkéÑ‹C@ëÙÆóçwñ¸²h/žÜÙ¶hoï‹È[c{¦¶éÑ  ~q${§müêJ¦é@{df[eß ´ç¬<½ÈGOŸ²]]Žüñúo™ÕÐz¹çµ ‘¿Ï_Ð~Ê©ž—‰@ë© 7°£mÈh½F3òë“ûOH?6ç¾}ÔfJv™"Ô×SKF>|ö³+%^ímO5TMÚûŠŠÖf@ëœò(: ´WÏ_h í^I—^3ñÈ]ŒÉíڃ„.A”nŸ*ߢäÜÀ~Œˆë$£­ × Þ§®ÇZ=ÑΖ¦œk\@ëV 9!ŽGìÎ<džÑß(£ž.ˆ/7oMÿnl»»î×`|—ÜïÚl—ÏÝìŒÇ [ù`Ôèr(+Çe|ʯÄẕj¶·¯¡ß Vw# }¼ëòÅÌó3Rê 0ŠÍŒÚ‚yÑ*Å Œ¶¿™|óó ™ÇŸ9€‘ë ýÐëìï>wù.ÖÁEÓ·G<ÃüäâÒO_£Áhý•j͘çD=Î(hê£À3C®`œÓ¿Òu)yU~‘Ì‹uôÒ¯.÷8Àˆƒ©'»ó­UsçžÆ<è{&ë¬k¿×x|yžF¦ é7&0Ÿl—³A¾šsSʺ²Œ$.ìEþé®N) ð£ðoýNÇÑΆÈÍÇÁH¥T`æ­ æY¤«½êÀˆ°pÓÌ Û;·«<ëÀ82õ„êNÅ‘..¯A½èxã´wë´'·w%êóúƲ: Ô¯ÔÄ=&»€úé]>Y$P?ûÃw9_&¨éT>ƒí>›¹‚#A}WõìÄP“lêYkên2gÚú@Ýõ„—ñó- ÙÓ½yÉ3PßÛÂví˜%êiðÂËê¥þw|õúèÝò“ ^ݸ£oÔ­\üyÞ7‚ºû²šNƒºT^vt¨‡Oöž\¸ƒ–ì5]‰~¼ênÙæ ê×ãFÍœ@ý@n3Æ;m\ìâÈ}Pß¿gs³~1ƹ`ÅúÆåˆÃÕye;'úßù© ý,¥år¾êÛÔ6ø»?Û=—¸ö£l¬7? ¶Ñ«‹½Ûa»"®(& lCwO´æ’Á6BW«†1û‹wìjÛ„9♇¡`{èö=+±}ø ݲlÃ{.Ø1mÔ!Y¶»åÚ–¹€m¤º©/ûvìOâŽU> ¶ûŒ¥GgPï^—ú½ïÁ6Œùå.ïÝh_5øT¢¶ÇHó2s`»¿¸ëØuWı}ùd×ueFí|¶±ßt,rÊÀ6&µšlŸ‚mK×Ö /´w/¦!Ðç}Ø:¡}õœzrËhâ¶_rG„ûä+~Á6iÐäå:°=(¤'wçÚù–σmœw¦vþěŨë`ŽøõBtŽLÝú q|_×…ý¡u7ö6£¿C4¡ÙÕ`»s@O6þâ8A*êÇx­ øŽýé¯t¾s¡=æ7;~ ÞfG®°õÉ.|"é¶ÛÙïæµŠãø^â|>êMqñ½2¶¶/D­[ï­|ì5@ʪÄL(ü®;ZyeÆ ž[=±?NõìÊj©ú±c@Y—dÀ/‰yǃoVÅù­ES¬„Åê7òyp–¼/óE¾‰ {ÛF€²ª‘w=7®ãåûúð êøv€.¤䯂uü ½@~™Uãܼåúý 𾮢bäG6]«õ–ùgsGÑ ÷¹šö¤€Üž)¹­DÈC{4B¶•ùN„˜Iä  ˆš­ï{á髟,\€üY/îk[¿\³Û¯䯙×ò®eý^s;- ±M§ÌnÀùï¾)ºœò›­«$TÊ€ü é>9ö¯¯ÑíUÏò4$™…Ò€üº,¼èœ-Û²î^tÀö·PWo_įŸìÿýžèUòªóS?¿ù‰¦I-óF›$¬ÇY­D:âT0®k÷ݼ Aó"¹5—€<ó­uãîŒÇåç?nd ž¢ˆëgÐN·}Sô)Œo¤Ùƒ(Ì%Ñ3¦P=¨aÞRª—ŪÓO‚jâ…»37A5«7´°FToíazòTÏuÕ«Òx@5²ëtÒ[cœÿ¦Óᚨö7&y”ƒjËñæ™N º7û^šçkP“y>ß‹ýÉ,ïíÕåÙZêø¶þ›ZpÞº{M™§Außw½€†ƒ J×q½wQTsöÜŸ­ÕMõEWÜG»ù9IÇk@µÈ{reñ ¨^{Úü3TSe''ïáÙ( vZ¢²²¬ÀNWËÃýª.¶tWlá;²×Z›GE`gÝÈk¬@;SýŠz8ïJï”úÂ\?Ó*ÀÎð†üÑÞ ¸.ÿ¦½Õ:°ÓãÉp¸—ŽmÎU§z…Ñ®¸IQì4zFËU‡°­¢Î¾ªçmJ>Ã-z +M?䀲¡,·9â²Èž_0Aɳgò€âÌW "Ew%oØK°S/êí,A? XŽ}¿ûõ5I]‰¸\/î>øÛé<^ í¨÷eðµW/°˹àhÿò†ˆŠÍ8¾]ñ|n®§'®ÑA¶M+‡²ÀNÍ=°lÉFÄ}6¤u¯<¶7Eœ4Ã8hE\2wÇuy-c‡÷ëàê¡]ˆÏúUdì°ÓñÈÛm/ƒrÇøAë&°ƒ6®•†Ñ»WU ÇÁNÆ‘{™Æê¨ZŠþ:Î7ÐYÚœ¨ˆënnãðØwL#„[€bï1ûdì۾?$`ÝéÓpëëîz ø=üY¶ë5¿}› W”Åò…ÇžÌËöoŠn™÷ʨ•Üí@qNeîÜ”ׄî9äAÊ–/[^zi…šÊÖÛû(žz'/\| †vÝÓ @ÙÉQ{]~(¡†Ó_k_%š:dw[(!‰&a°¿ÐЂó¼=1&ðüP<^XísÁz²¶¬o7®2Î;úÇk=†4·àü7Ïëööa둎XÞ¼¹ßâ¯ÏCNîiÃzÕY#@¤zÚùš^í„þÆJ •£½ÈÄG+U±>öËØq÷ Ö©Þ†=§¶§á¼íZ™­Xoû½»sˆ(ÁR©…XûÏE'ñ%`Ù™GÇWẩôk'©Ü,ã²·Z¡ùN-Jµã»ß¼Âx¬òuåNÁù׋u´¡ β[™qß–u[mÄ(‰üI¡ÌQÅö·M?@eã_ÿ©ŠG¨ [Û¶5Ê“8tAÅÜÖá\¿,¨ØE(hΊ£ûHÁ87¨x÷;µy€ …wZ»Æû‹Ö%%ß­K炊|›üÅâ ¢¼EêdU¨Ï8[鬕5¢¯ßu•¬¬ƒS'¦@Eíc”‚ЦŸ™P=¨¬wÔþá›*.~òî” "ùÄåDó¨¸åñµŒ¼úƒ fãr bÄ!sÂWT¼¾Úì^ð¹´²’×Ë@EâÉYOnÂÏKPá^½w›í{¯7=Êï­”—h€ Ÿaí,ú±Á->NPT´Ïžü±ì$®n#{ˆõ3­¾©¨_µ¼uò¨è¬¾–ŸŽøE®¤QÖgãº7KP¿ùš¸xPþ¡õ°í¨ˆž^N¾Q‰ã¬3»1^[%¶ìË 7ξjP^ØžêWc‰òÜ…»¦™ "åSÏ?€ó˜í†¬QëÓ©K¾€ŠÉCqP1¼7-týÿ!Æ4‚¼—ã„” v…ß”×?ÇvÕkJŒ#Øeòj$=°K³Õ2R:vY±ZË—®ÀñÊÈ(g°;÷E¾¹­×é½*a»\ñJé’§`w¦­`8yóô&q‘Ìd°Ëø9 wfÊbÑo2¡`WzÝÆëØ‰_üÒ1€R}E¡ž÷Kc®ÏÊÁîjÎ<Õû/šeT»+’¡çÇ× wÙ\øðìŠmED4Ãq~gX#òÜYþ‚‡©(ÏäQpÃu¯¦ÇÉÊ`W1ù!m¥h`†ÿ°;>5vZ)ì.¤ÝìÜŠú Ä÷8H _]Žþq-rØ•ö¯:;qõ’Oœ;ÎŒþÕ¼Þqó+ØUrÎQN!î¨ë?oE}Ñ]ˆçbþávðÄùµ­%†8ïZpÔ ¾ïØ_Cy¯R‚~¥ÆŽÄ#îå–[Æð:–º®+Ùã²óú×)Œã™è£®ö¹ˆÃÜ…í¡Æçì’–-¥8í»œ3þùù}|=òî¾ –÷™³éLá×m»3` d.£ØÂ'˜'­/rþúƒdá}#þ_ê€ÌíÆfºz¦èo»Û0¿Ó‘W=o) dCs¿ÏF@&äº%Ü›ò*C¡Ç ßÌ~Ü®}ò0×oˆí² ÅÒïC@–½ª˜È–deõcÂÊ@V/8b}“ Èd½°w0Òxª{qô(弚û®ƒvüÄÄ%0“bð9>dK ‹ŠœŽïìÖ»…ùѺOOŸþ‰vTsîJ`¾§í1+— ȪŸWYïÅ|J·Aû”ÊÏV_QÄ|q#ï…KS·ÑþüÑg•á(s{¿ð§"~YnÕž}@–ø¦h;d}´ÁȤõ“ @¦‹«;ѮإØ5è·ÊÍ÷˜×mLüx€l`õ6yE(µòhJ{1_“ÜÑfÍâø•Ï]#d¾Ó†RV ìž0Åx ò'ŠYqS;÷´WvQû,ærï}?Š`ܨ½¹ü† GâG‰¶½ Ü-Œ5*L±§÷\åWp¾sósP®ã¤îÛ›Ê÷秃øjqž»ÕÛ¬“ <­ñ¹Zˆ ÊŸS«•=Ï€òí¦·~=<†y(7ºëÄ/<åÛ¹:»EFPÏɬӕ¯î¬™Žåa•Ëc3¸îˆ, îó+ùëC¶ƒrüêÀ^ÑP>%)H;Œv”NhI Üõì;µ”//Hw#OýT\ª,ÌÊ­eÇXb0QvÛ¯ÓPÏ¥êÛÖ \É¥:=ñi.hüž³í‰SɇB%+«³È³k.ØœåŸr’‚A¹¤”/+ý(ÚáH¿p”«_[üHuå'O¶¬»ÊŽú”WÊC?÷ÝP>tÙÅþŽ(´‹UG>¶?xú¨õØŸÕ¯xqÛ7²Ó_€}\Í,ëÚ °©*mzö ÊUׄã2Yé–L`Ÿ¢{ÅoÊ—u[>ƒ}Ò‡ËKš}<ó§ µN°?˜)À”2ö± ÇL‹ÁþÐóÝ›zgÀþôfRÎq_´Ç›ºžU ¥YÏÎ#`v4Ä¤Ä ìs篿½ öé•3£À>Û;,Õ% ìOÄ Ýɽƒó'&[—‚}†8“0 .µÓâúø _êÚÁþŒJ齉DÔ7«cW€²ïÝì’I°ô8vԤל—”Jûã'4§É8?…°t ê#j³qp}fô»»qÇÁ>ùçcVû `ŸÇ‘K®<ýe}­8ÿ•”4!ç¿Í“ ß„ýväˆô œ7©b"Û<Ì{SÄ/‹K¶ê9±âã3K Œcsü'Ä3é4¤wq,'Ûa\-Y(H˜Çøœ"‘\0>ÇÏ+x®DœâF;ÁÞwç²e3ž@Þ-x:|äצ;,²È»óe¶9Üb—ñÓ·@Þ»NKY_Èrž=—‹òRî›>äâ7ÚIG·òš]*×r¬«¨ø%<χöýü‹<z²´4È“ìNqcÝy$ïh‹¡Þ‰|!xþµ¸¼OåòáÕù/]ÎùtÊå† ê»å „uï‰gºÏT¬€|FûBRÔSœ¿<:­ÈÇÚ^2bÝ{\¯|i¡>âÊ<’•€õfÔ€ûêh g512}B>/¾§Ã4Þš9Í&m½Æ-´wdÛÝŒ£nÁÊ4´wµnûÕMh]n•ÕPòþ뾑)(Ñ:¯&‚RÐm÷åï‹ÌŠõv(Ù6¯9iJ’«}£sAI~-OzL(‘JçüÀukn&Ÿø|”Œj~ì›”%‚vfj(ùŸ9Æ|õPßF™å'’ËîØ¯Ž ØÖhºCV%õA¿P+]Ô+¤•–ŠOsÔu€’ʵTåg 8µ¼õ¹¤(ñG“·²‚×þÐò\P¼±WÏHŽ”¬ÉŽ6¬TPJ¾ûvgX(¥ªñ»J:UËwí%YMGAIkû)®íî[ÏdJ‚ö=ñÛ£@q¤k§Ö6´óHd_° (™¶;ïgS%MÁ{,ŽïAIMäùØÇ!PœOoHfA”6ÝLùä‚ëcß¨ä° î+—•ƒ’Æ“‹V_ž’®®š â,,‘©Óø™%‹…‚o´Š…ÆgzúÙôïáц>´£r[â(m›Òü’_JY^ŽƒÒÊû=JMc Äþê z<Î+vdkó’º…–#§‡Ð-BòlÛ –<Á tÃå¡©n ëî1·?tòi÷wYØ®4ò”tʼ/apе+E5½û±ß$s^7ç=µ|û è&ɳ–)@‡µ:¯÷ŒÝÈÕµ£¢èVcËzÅ€îàåv2;ètïböX= ['¿ÏÓ¬Äö‹/,®ˆç*[MN!Ðí=ôàâ°p"]üÙŽzÜ— Àõç[ý?¯ºÝ繃£ 8oöøÈæÕ@wþfš¹èî{¯úù èNÏÏmF¼d‘öÎΓ@ßäòøÎs ›®}šÂÊ t‹¶{áRìWÓZ—ôÍÙïø?:iYåUŽh—=#yaq©(O`|6©ò{+bÛIÌ€c]"¶©+_ø}ëŽþÉ3=@·íÒOázŽñáß—úä#Ú1Œ4Â|ˆnrÅÔ“!ûC$¬o >"+÷*Œ‡Å}zÒS&¿[Zðö<Îï{SÃÿ÷a’ë‘qÐ5¾n—ÑíÒá¿îGD)º½À,>Hg†ê¶)G:3¤ØÛ­ÙA=^@:wòœàã* e˜ó;Òm…Ö‹ wt¼õ¶l5’·ÊåËT"sø0H—¶)ÌMh)ëÂÈÄ’H ¿Ðç£ø)!¤ü~ÀO §_O GÉÝUè÷Hyë>…²xñÝŽsvä ŒÐ+z¹Hû¸Þ~žKUH’RšƒxxÆ· ?áüÒh ]7$®aÂô_Ÿçò!3àm˜ô4Ú;fø¥Ê€°WÇ«}o.Nž¥ !kÏv¯¥é@pþáÒ{lþ@÷~²ƒ&ÿŠ tqí27$!o¤™ý› >s24î¬@ýÑ»‡–ªáÆHšýp NìÚ&_¬ ƒeç5z†€àÐ÷ÌUºdSw<Ø:  çë*>™B±ÝO/×iÙÆ=Š 38¿æE?Èt±/á¿“~“éËn +M2?ÑܲbÃ_¿éê"®áØŠˆd ˜ø4°ôÕ¢þ»Ù½èO»‘k"u/öEKÇÌæƒLú­Š® n©‘g¯`Bþ¤/Åßdf>ß•žŸ‚ÿÍQ‰ Ó|ÛfÙæ H4ÓÞg ôJ÷¨A:Í~Üæ„ý…óo³ø€ =é\QRŠö6­7_Žq©Ò•'Ÿ‚d¥æÜÆ­X©Nû;Æ9¯éqïãh ”­ }㎠Ç>xïÂKYÁ•†h?×l]"ú96f{0dÚzÏúˆõ€Î6' .3ꉚúÐ †!ÁG@•~Á;ü0Ð_nlu5•ú0¯¤×²u@¶kóöm ?Ö/Û¸ùñQÓ™‘0œ÷ÌKì(žÓ‘î^æ7@½“àTvõÜž©Mú‹ê³k_Õºè–z¡ŒW>y\7o½›©èWKÜü„ãÃEüOôy€þÄ×UôâAœ×°Ksì;Ð{ØÇ{«/û‚Î.ðùáx_—¯òu O”Øð¦œúx‡.Ð?hmCýsvãã×Ôp<”÷“~*êX¦ñÒè_£ØäÙ¶½›þöj?âíæ]ÊŒüõqÛÃolÚØfU9œ> ô§Û,.¡¿Kª.¯Bž{¾òLÇ?e÷òúûwe9â8ïÓÚŒUö6@ŸyVÈ6oô)ÏÍK‘¯{2ø©|ˆ÷tð·w3ßÝͳ›>!ž‚X+äçIµ ³Z8ÞÅíÆŠq}Ë£eôœŽë$å ðzÑËcSÁ{×q>WÅó-Ú=²Åù¡ùÞÉ®M@º¹1ÅöP"žÛš€>ä³ÛÕE×pÞmá6“ÑÃÈG$¯¸žSv#‰J<Ÿ{šòØÉ3„¨ÈkÕ‡™UÔ€ÔPÒgš¬¤k7l"둜ü^G¾IÛr›ÿ¤<|Û&‚Y€ä9ÅqåÃeä¾/!MK€tP¢3à2+"mçË’ÖéÐÖ¥Bô&ä©FÝkF@J 2g£§ ýõ~»¯pàM![Äר)yíÚZ•` ä¯û!Ì &@ª­žúñHùc½×Óƒ-èçŽVý=–@ÚuY0#ÁHQ7s·nCÞ¿vŒG¿yW%*ÉØyiÂt:/úõõ¦‘E.Â{ÙÝÎá¼ë¾õaȳKãøU‘Ï"øK7 _OYÚOMc±"oLýŒ+Ïî‰Wœ@J±l2GþnìW^2…8ÿPÛž¤z™…ÈY´_aýÊbý¾¼¿¢f)κžwrŸ¤Ž{5|^Ò]E6©HËÁÓ$Pb¦SŒ½òf v4Á:oÄÄdÄY>”r€…g~K„6ˆYÌ…«³Nƒ˜nŽ o鈵#š^Y…ý\9ÍA¬;îrŸüYöPÌ—tF¬êzè鲓hgçÖT‚ Ð÷qµL¸¡½ë§¢R5€xçªo`1ÚåØ`+s詽îüíÈËiã4¾Ç˜Ÿek}þØnŒ~ Ò¿YÖýœi®kòrÁ&6«7,@¿£ôY¨ñíèdÏ# ô=µ‰§ßŠŠ&Y¼×Ýo™CäÑ3@§»çíJ@|Èð—"?­7k»…z¨àùYv|«ß6Q gŽD>Ì;è¸ÿ*Æ¥üȎג˜_&É5i—zìÆP^ŒÃWaÛÈËgl^EÓq}*§³ ^÷·îvÉËúékG_¼ºÿå B÷Ì_4ŸüæÔ§Üëjƒ|´= ]<—QÊÝÉl˜÷ºEÅ|f?ᵺÙ> Å!}HêÒ¾<Õ;)x™ö48IiOÉ–M÷‘·¼ê¬“IÁ;?jÒ0¿ >uûæ-ÁŽ Êšq^ÂI»ä7UÕ` ¹ö ?ÎGžuþ¤­â‹rå~“) é_”¨åÏ’ý1òÖˆ{@¢-ÿ0¤†xŒãžÞ)\‡<ééT×´ƒôa]üA 9¥\õ¹$ÿÉ&¡yäi¿Ê«®¹¡<ÐwÚó§°gCžÈÏjô‘{G®úǯ‘Þþ”­x†xï^°’ªÄxìRKo‘+6«Ðn¥‘ÜÒc_A„žüN™ðD—¯É_×8ö21cܯ {-cD}—ï]4`Ç:Oq¹^Ð9¬KUã?³¾lºzšÐž_]‚YŽëð8 Îæ]3&7!Ïe7m½5Ö£J,½‡¦°.ÓÜ´#Òçhû=<œ„u¯ÔÖÂÇ$¬{ýÞ‘±Î5ì5;Œu²&ïKßt#rŸ"€¥W#óKbŽÄàòsh?‘7mAëXÚÎgxî ”gùXj©ì‘ +ÇzïnÊ ?©ßÊ=¸Û¾{*ðú@‡\µˆÌõ³‚³Y'±NÐq.7ºÞµã¯?cþ¤-¿|ÞëÖ°iǯ˜TœP-Ü t9Ô¾Çê@ßh6Ï‹vZžžMżPýEeñIäO•ÖÖý¬·µ$OÁ7Äc>sÖã£_5du í<ßAÄN7è°®H{~ [>ÂüX…2–…|ªt™-™ýVá{ùÆùRÿ{{Ì4ês}àOgĺ[ô²f湊w9ªôñ:š_¥žc\U¦>ÅœAÔŽ=!q¨ ëß uÞwH@ìþëùòd >¨‘èâ-©d*ŸF KôÚqàØ³ˆ[€øRÖ@<)ëÖÿ9 ˆw]~$õZ¡¹Óy@,òî­ëžbëEkÖ+¸þŽòú6‹P Ö.Ÿ¯ýPÄöæÑ° ¦3ËDû]Ï.@׃¿ß{ ƒþtT^ñÜμÄR Æ®‰åïpb"ÍY\äú·}ÒÅ" ˆç#Ã(Oñ¶‡É¥ñóØ_-ϵˆÕLöé†3@¬ø,ʈz³½vúî²b½Èè=u@l1)JའĎôá±r6ô+\$úÊoÔ®ë€qβ2ù$ÄÌñj¢Š'\ÅFô%@Fä¯Ç#†Aº7¾¯|ƒ&H?ÞûäC[ H_!8üxÁ Ò1û,v‚tl·éH¿¼3»îHß°o…X®{bÛ²" d<sGÚž‚̺ŒïX®ÎÈãQåJ‹£1 cTw^c¯È„ë¾Ë¤/;Úžêç!°­^¯ÿÁ ÎÎ\Ÿ†zßî?}'d䣖?Lé‘Û·ð\J?ž¿­k+ú£¹Žé‰ËÝŠkæ@úƒ`YÓ5¡\Od&fÎÚ”xîcœOÿþdØúÚÏ'‚ô5“9Ý[@ºô¸ÖÆo§@fÙ¨†ùæZÑ‹vþV¼ ¤¤¤vŒ… ÿêú›zÑßûŸÚQ Ã|ŸqåEmf(+ªÀóÃùWп7sC@º›-9¾÷È(é=•ëB<¶ÕÚ‚Ý ý‰ðˆ#:dD•†bA†}I k½È0~õOÑRébAŽ´2Äk;LíÃ!Ù0Ë=.‚ó–Ú‰_péë˜7¸`}¨XÚZ¥t)MÍ÷ýÈGªK-–ßÃúWõÊÔnÌg”Tzdnã¹ßØ^]òfÛŽ>1Ÿ·]ljKñg¬%óÖQö]¡–xë=…Ø}GÎb]«:ÄäÙ„u¦|ýnGä)¥§uu\­ÍyŒu¬È²Q·xäQæÍšÒ+€.úŽ{ùH5SôP"ò•pæ¡ÆÇ¸þ”rHò„pǾ§Yé@².udBžÍ;ضëhÙzç:cäSB‡ó:.œ§øs|ß6%ä-5–îëþ’•DÍÑîáÃnS¨ÿiã1´+ôá›~-âß6)ÑpÙw‡>Ú;ÁcØŒøÔyÓ¹°®U6Š×^…¼(qä=èÊç·Æ`ž©r´C¥óK•¾ŸñÈ÷ŠJË ˆG„D´SIzþ¦T¤Ã?K÷ /u«¶ûô±ã«ïßi7º‘HûõI¹ÎU"K<ŒD>zªsàH›ûêYWœéžÊã§ÄÝÐŽ‚U*Ú?ùm{ÎÄWe.ÙY€×—Âu´+È·ÎÇN}Š@þŽºBc<Òû%~öNƒ”Iþ¼EJØS޹HϽNr„s";Øëlõ\kö&柯yF=)‘©öFv‹ÈÝ`oø¤›ßq°×àpÛ—1 öšå)+>É`¿ëšMþd°'Õ9X¶×[Éì<öÄáõz>´ãVÑj‹ó(dƒ^°W~úd§c(ث̊{k{­ëñÙ8#”sUì7Î0ÕÁõ³WDU¤°Í9ƒëRøãV€½®Éå¡È£`JCšj(WšQ\ÿ²?X—´nú1xÖ}…)Ê>U [â;*Ó§rqÍ6_P¿öªŽ9OrÔ¸þ=úÉêÕš„~hS…lÑžcÖøÉz°Ww©›aë{µ»]:YçìDãâ8ž0œöæE–jؼ)Ê8ˆöÙµ…&êp=ûAÝ^]´[ñ<0þ΋`Ð\„ãg£áu2ârm~¹â+ØKÆ)íoæÆõÑŸÎqázÅ3Ǥ´iègÆÖ”W{p_NvfdÜz÷׋׌Ÿnȼ P£´÷‹$@}Ç»fE€šð O*)(%˜O¸nùªÔüÀÕÁ¶'殄\Ò ¨eJ/!œOŽºP~ÈÇæ6òÚ W):Àåâ†îÕ_©Äòk>Æ'…ä|’‘2Ì(Y25ât¥³Ø{/\_üpyÉûi€ÒêÔSñl$¿^ í6‡#Þ¿”=¸þÊ‚Á@uö¿9îpó„T·ªöG ]Þý :W(ùM@å"=þ@£kÛ&15´ëß7ã:ú‘5/¸.½xDy¥GY¾w#ÀÅ´·ûô*ÿ ~öûѯpWèÂxåôîÙ>Žr]‡˜(â¾ül|k ×YQZGO¢]¾kÌE·ßî|o. P6}Ôô¯ñ•–—Eª>(Êâ1Ý”Y—Š~5Ü‘wĸ‹»oóÁ¸1,ûÆqq_üÎÿ ¯dä13ÈË2±›Ö¬®ˆÕ#KIÚ7úù'+î•ùu>fBQÆí–#*@xäû˜zä: ’œŽa¤­Ü=²U1²²£4å¿RhÌó×ç$i­¯Ž^Yƒ@ÉïµUÝ¿DÏd­˜{î?ݲËò¶|ç:²Ä3ÊíO× ]ÂQï®@=¾Îɇ d÷ênP ©ÂöƒZE0u¾æ8 ncv^â„W%gÓ+p^vê÷šN ZŸîóµ d7_›ÌïÈD;W×[îÚ²^V]Å@Ö°/ôóUNå:µ‰ ¯²V+y– açu_êÃ| ô~\ã+Œz†.‘>ˆƒ¬ìÏ•§tP¹t]v¨êV*«Kõá=·½ÃõuXsJdíâo¤ÞÞ ²nG“‡ƒ@Ö”ÿ9ü-Ȇd6çÉÉA÷;K!ú-:ß´ÚýÈj̾FûFî ÄÍd¥ól$„§û$¢“ƒ@V¼;õa2®»Çì 0·üWt¸AVîÑ<ƒè'°kùë1°k\zgu?Ø5]P±(»ÖKÂ;ÊÎãx»û§³(-{œ0¯¶k¾/µÆ¥åÎl¥I°»wþmrñc°k;?¡èÁ…zº4Ø`ÿ7®JûÔ šu‡eÆÛµ´³Ø/¥?q?%ká×§(C­YÑ^óæªºx°k7m\s ìj'jœ©ù`×}žÿÞë°«ß”³~ˆçoIÏï¿vw]¼'¯!.޽_¾v£,ÞqÄó;Ø=°øþ-?®“à~ú0Û2•lP?Ûd;Ó&°{æûL.ù8ØÕiî1ìûv7·íäÝ}ìî~Ö²FýUî!ßkÀîÎÕ¸ ž[pÝŽÇ[rO"®Žkã5=`÷t…kÇSWÔ_Eí/Ø=Î~ãyóÚIç=›8 v]¶ÏúåÁîF•ÍÏ`÷HpÓ÷šÃ`×ùLtNg)ÆÉxfîƒÚo=>·vU1aì%hG›g&5ýÜnŸÿl úÇ%çe;ŽöâÝZ¬ÁP]ü…"_.dŸ2bC]јû“°¹åkt/BתCÞOÁPGÞË=Ô M_TÉ ”!Å~ÍJß00´2¸Æ/†z }"ÍÀP&£îÓÃ:ÔûÍEœç+H.jCý`'Í&0Ô/-p~ †´Ù†âù븾ÛIŒ–††;Þú1ÞÃ?Îd+æa[£æÜ#Y0´Ù'”R †f\~ýT70´÷ä¢íPC*÷—v0Ômƒ+4´ÏA&^tÀuM…½¾ËÀPS±dþc*úÃhõå ΃Àf¦Ù(_Wå´Åá:ƹ3[·!¹écÿð]œÿfƒ‚@"®ßÙ}õ?Z*ÀuDà 2ˆ“ù¤Ùã¯8 ¼öV Âx<³Ü¯ †ªGn FÍ`Ûßà’âS.N¼šñ -껌>ç€!©û;͈_ä»iŒ„v#_ÊÜF½Ãe¶#éϹEoMÁPCóíMzúi!æñ& œGÕ¬—ò&“—á›@¢Ý´ÆM$n½å´‰*)+ÖG a+às÷>€„öÞ-a™§@b“qgußX—¶Þb¦$T·=§ÜÀuŠ7=Q>õÝo {Ò îv桞úç«~ðÄݵ¯ÔD@â~Gâ)vX½?ù^Hxt¿9™ Û?[mÞ±$øØ>ßϦƒD˜ˆWÂä?eå0ó±$VÆÑÙQ³Ú—Çií ¡þ}@¤i$ÊuvOy€Ä•ZŒW Q0Â$d*i~¹ ÝþbÌf6 ‘ãk–#Õ¾“÷ö‚ךæèŒÛåC×&j0¾C½êyœ íÍŸ¤¾×ýÈi}ö ìþ×û¹vü¯|.^çÀ¶Ÿ¾ýz”oyÄñ<óÓOè÷áyçïV˜mAž!Ô`évb÷l1Õ;‘ê‡8TÀNRuè…Ÿ2Ϋ÷t"áxT®Ÿ;!šîi&°ã»ý)üÔ_ï#d/)íF>‘Ïܽ=ϵ\Ëh¸Ø)¬t÷/;-fê‰`°>ÖêÒ¤…ëßäe¨Ôè•IKÿ1°“ÙûvüÆ#°Ó¦°.v²ç\/}±@)ôˆ§MÇ Æ†zPŸ”tÖ°ΓKš^ë€öÅMw~¡"_Éqe¼¨Ûv\!bÖ0 ~mí½°“®;ôp-;Ø©m¼ºº ì?µê~££•n_5i(5ßE¢Ek»´ÓúÁå'ú¯p!«@™ÛV?7õF#Noèw–»åçµ§%ÀN1úûsÄ-î z2. ÇßÌjÙ¢”LIº‡üe·Žk¿yþ;´/Óq!b ãN×½¦»ì$&whÑ21N¾‰Úîxîè­UZŽœ`èzâ”îÆØ«)É|aóó^íðCäë{÷!Ī™nD}r1 «6£þÏ2ÎaÇq^ÓÛòïÈ[Þ59Á`èyÖd‘'œ>5Jl@ž¢m÷;ÊÜ‚¼ú®é(µy*§Ž£õ5Îßõ-KŽŠ’”©š| Ý8‚´ò‚¡y\þÏM¶ˆgà‰énöx_èΆÎ7V6x`û¸² ÆßÐ<8èÎ_<¼)úœhÄú1n—©Ì‚ëüg·¹>CoâqÍ1ÄWyß¡ýõì{Ê?¸ }/ùîpÃ@ÑïÕø°_¢‰rÈ ]2ßĸ¯C¿9·ÊW2è_Ùæ'­ey{ƒ¡#ãxóø0ôbÏ9Õˆ¼iÞ¸IûÞ:”G_.Ǹu[Åbÿ~…bù¥Ãh×å¶Ès;´šëË·edèüû2$e¹ìF¾j«qS3ˆI6ŽÆë¡ 1ò©°³ÏkÓ-SäÚnûôˆ×È‹/HÉ/@âžæ›*…Níê3ˆ<2ËøM§T$>ŒþØa†íÂÞnÖú x²ùÔ_|ÔÊ\ul%3HÌûå½lYŸÚÔVjɃÄË$Q'Ñ´³T$»C$ú:W‡†‰óô;\Þ† qçý¶ƒ8Èzãjv$úKïz³ü@~±çµÞ© ’ÄD¼¹8Hòóh¯ rÉÕºqÄdXÃÆOCÞøTð¾.$&{><—I@;ï¿âæ-h߈¼õ$,s3òÖט­}«-Ab?'ˆ½m‰øÏ[mÇAR¨¤xó|5H̸t™ë6HLÍ¥2b^!a»“8t$Qn¨a\Ÿ< šÂëϨö¦á'§^µÌtØ~Õ0o)ú¶?[?\î~ ¶ß’8Œ×/Áv°øè»p°cT欥ÛR{JVQÁŽE&~ ¹ÛÇ·_±ü¶sBŒ0ïcˆº>&ú×|Û¾Uc|¸þž‹…vÌã§òñ<3ª0–]”Æu‡/–Ì¢¾oÅ{1eÛ¥e/Àö;é °ò&#Ë~ze Ø~’N{r l?Ÿ„J¾°}ï+¸a”ñRº–è ÝÍÁý+nƒ›w“§-Ês×|ÇÆÐnU×%—í`Ǥ¬í毈zO™òo»e›^K>Ä<ŠáB ûP)Ø~ì¯<{| êãb69ì…¸ò·¯“B;ß\xô–e€íü©eô78þdÃú äfûµCiÇУû} è“BÖ]{nÔ›ÅR~Gqv\ ¢½¯}¤ÍËõŸC„¼>ò ‹•Áë äÇån7EMÁn)WšòÙ’¾Ìì2°Ý›ORÅ<˜-ü,ïÚcˆ+?¾Uø:Ø~±¥ÇžÄøDvZù`×ÿóETa™ó¬ŠXçîLh0cØVÉvÀ¯³,Ј ÀË«Ål¤ À× á‘µ @@^øá(€Ýךw Žáº’³ÇI [E •p³™ø±Õû#|hå"Å /Ë£=>v 9 €ÃK’+ô6úp‘q9ÖÑQg¼©K°Þ K¹¡‰ue@õP}í'ïÝ.MvIòßX·`ýš\4r ×õOØxª*ò_\Ž2\mÛ°@4›_êË!€½?[è‰4‚¯’J÷«-LëQ?áú¬?½ÞÔ×ya|AÛú®@ÜóÄ%Õ¸nuéƒg1“׿æo¡½fïÉØhl=›­pPŽôHû=žKžÚ…øGw~óŠCÿ3Ú^c|‚¸‰¬PO˜¸'Ç þ2OãšYôCwûî›DŸ³_¤>¢Ý–§—÷þ}bwÎlß·&TBàˆÆK*#@òU¥ö|Ä-à¯2´ä¥C*„›òA^mò€Y¶ÈkÑÙxؼ²íàx5'ÈsVV{/;òBCË^º¢Œ Ôùp䉕¯ni·£Ìßa2ûäÍ:ï|[>r„ô¹øÞ‚¼NW¤–ȳ½ ‘äwy×Äü}/@ì«u§@Þ`­Gb êSß=R·ö6Èkן÷» òKê©¢% ϳ®›kûÈý¨Óå QCý§<ˆ²q /¸¦ä4‡1ÈWDR”A~÷Öå·o°€üNMß°'kAÞ_GȪEä}*¼®ê€¼î€zzÈK¬Ý¦}ò»²¾– ‚ÜHè¬ø_®öþAhȇ\_ò¥þÈçº:—ݹöPv6™:×äsæU¹g;;ú¶žù£«w³Kƒü¦“¡Ê|ý o¹KpMýJ«èÚºä=r÷¹UÅ€Ü=ÒQ÷½ý ÷DÎK"9ä÷͈‰²«ƒüæU\>£þ oQÖÈârׂ#ÛêAž[c#µjÈ›¬1o£‚¼Jà‡Z!g‘»_¬$¶5û¿ö‰vƒm·¿Þ7°½õ•WsyíÎܤLØÖïÊ¿î"¶ ƒ/84»À¶©ñçOQJ[ý«*`{ÃòFèI'lçkœlEþl$(;Gƒmk_ k+ê[F¾šQ…íüÆ•ÑPß·‘œ=Ø_»š,wB¥„]0ß8ös¬ý¶•×O¹=øa¶·¹W‘ÑnÇfºH'ØÞ UqÅlëtë3£ p~¼~kIض_Ù]•M@Y:³7a9®_x:©~µnähð9…ø>í÷NG^j<Õ3dɶ÷f^TÕ‚íu¡] Šj¨'p?÷Ï(ÔëëEÛ»Šîo‘oLÉ{Å—#þu¯÷òâuàöYS»³`Û¡{»»®l[†ís_a<*qư¡üÃüïÐN„>ï:%ŒëT‚ÏØ,Î ?ºI ýëRÞvå Ø¶½ÛójÇ›‹Ç’ïoOæ¯õ@»Éï®ÏcÜnÊ~º±ñXɳº=ÛÇ;ýHa’Ù}}ÄE€LÂ#£ã%ÛÉî3ÈÉ~,ך'Ny–wæãùæ%¼‹¶Åszª8óÀ¥®åŒ®3e!úƒWþºÿUgœ:‡ü—lÎçzê1ž÷K"W•œî]óØ¡û£šw2\­ê5@~¼q¯rí(@M›UÇÌ€s0SùàÚú¤Kp¼B³ú@Ÿ=ÚQ:á<ùà›%eïEY´ ⸞éÒ]Ø¿/ûæ÷Iä«ññCÓùA·®Õ{¤DÄâDþ+ìËߨ‚øÒdœß—]Å~†™}æè×ù ååv—ï”[Ž!Ÿë\9Ò PÔ}Z¶Qõ—¥}¹mxÆÊ-ngÜúøeëdúÃÛqÀ> 'Zôëy€ôò×o±_%ôî,ú“Ôž}†y³Üèm?Šñ|,¢©pl!XÒXåÞ3ÄJ¼Þ5úThñ*WXÇž‚û°ün¼9ƳÉH‰uâjú¤w‘?ç šWIáæÿ#¤lå¸k4:MYÞm¿‹t LJ]«h¶¾}%@øÞr6£V û/, ÙÀ²r{oSp=ó‘YP…~îº@¸ Q6„U +ïiìU„þ5Çž†€,[tüJ ¾dŒ¶ylŒvmÿŠ?·Ú Fd‰·D.ŸwYÕÏå÷nƒì2¿ðò®- Ke¶ZΆý²Þ¥¡µÚ¸^ªGëIÙã¹_:²‚4dÃúM5çAv›¾OrúÈž;Çã_²\|Ÿj¿ÝBßçÙÏþˆãо3^æ~@èº}@C}dɳa›·Y,é­Ö7¢Ë¦,áåœN‰Ã6=Ó9m¶d­¶TOÕ‚lê“Cá  kQu Eÿ4ÈFÐ>QêÙà‡bxÃA¶ ÈWTh×ó˜´{«¡fÂWQxdE[3Vs³ƒìjæ¯#ò «sóg-cÆQõÑ:!3]©0^ÔÄ ²Ú "1ž+>¾ ÿŠq´(zÐ^¶ü…C¶Ÿ‘WV[Ývó¿õÄ+Šâº«uÑÖèŸÜ¾°E˜gòü­÷gl_‹iÑÂu5ëÜ/7 l´MêÀ¸2H*~Ôâ» sÏ0$~h+0±ât]šÚa N†{?6 âÚüŠGÌ@=qKç ü4¸-†KP†Zƒ!ËmÍ<¬_—® ?é&Ä—íwJ–qpº>ûqâàL–._E¿©“·CîÍÚóé`(´ÏùUäg0}fÁ8uˆßóöYí-Cž…jÔ»l4­ÔëPA‡E×^¡˜¬yŸ'Ökï‰Lec-&Ó#Í¡ˆzé<›Kq ùÃú8¬s«—Í™£)ù„®‚á ‘Þ{Þ@œWþk„8&Ï lkÁ:xã¦êÀp•JèIf¬ÏWò^JδB<òŽŒ6`¸îQÌm- ´çt8¬7 ×Oµœ*wâŒ÷7íюHQ_4¿Zï–XVÄo­Ìž×p<§\T ýð²½ËŒvym잢ݠ‰ÄÒP ŽE˜Ú­wǸFðOÒDÁpM{TÐu- þôÏ$­C‰Ýœ#`ȧû)(L ˆ-B×l‰¼{õׄa]xTF„Ñ$^m^u¤²$’&8;¶`=JZëx‰×±»Æn‚ăhÏÖa&œïì"s$î×ìÖ]ƒõïŒñçá¿î·eKš`×q‘ªÝ? M—}µä@’õõ{ifœw5á[çÆ1TptnRIݘC‘AoA’:Ts.jH.ã(;í>’2»äµ§±ŽuRºï5ƒ]£?×#ÞÑX±fz+Hô"ÔëN™DÏ- ɷפ¥Ù õR{‹a¿ ï¡gòA’±Ç°éÖ¹o¡iŸè t—zÒg¶$Þ7ª?2¯É•ù¦3Gj@RøzðÕ¨·š#×X+$Z€Èr¬“¶+úwbÍÎv2Ð$)Œ›£o€$Ü9šF”I'Žõî·°½Î°q¸G>ÍÕƒDIý¦Ó¬ËÓI̓I É&N¨Î‰Ÿk‰k.»€$!jøeH4ô©_±$.s±²‰áaO•¬ßY¼ÍL}ÚA¢ÎË‹¼Bh×þú\Ch—d+Š”v³§‡ív2ÐnÎ+ÔoEòVÝ9hµb‰¡ƒ¯ÖøåãÌ’ï@k)?XhÍ×sNlZÇ¡ª¬n- Õ«¨s©Äí~ÚeóéRœWØûTh;ÐZ$dëbûe\ ¦1ÐnÜ=¿L h·ì8ôóírË«©Ò\e «¦%âYŸ6õÐ^ÑѯœVÁf$µ ƒóæ([;Z—DæÅà`´kë<'ä´.Ï¥äÕ@«sêá=4xó³-Ö#Ο ‡ÍÑv7ç­—Mpü‡°å‹< ]í"®ÜX…Ò`šuáÐ|ät˜Ð¾¤ƒà½B\×e`½eí ˆË O­fC;ÉàÐÚ®µ~k‡ó¯(ñqÎaû3ç™x U±4:tbnˆÙ^-~M)Ð3Þ#¾¾Øôlô«EÏaEâl’1£ò£ý¸÷媠5Òò¾íÊ%ʲ  ”¹S9oQÿÅ| þ}?,ÔW70À<¨JôXŸñÀí†î5sW®¥†ôbV'½çw[H­bÅ<èy²øH)Ö›m×Ò·ù Ïx¼ÊÁüFŒÇZü¯ÏO¿u2ÐÆ|M<!ˆüb¯ÖY¼\W'³ù˜y·œŽ¶?ØÁš£Ÿ§{š=±nB“ÿ1ûàY®Ø ’!Ú³VèÙ‚RîDB(ÆktKÛ¬»ÛFçg·#ŽKN öÔ,€›š«¥—"Þj݈ç[OhT@‡ë»&{ r¼ì|| óÇMt•h¯ö¦TÍ-NÕÂêiÄdªª õ €l8ƒ³¬Àuõ\Òç¶Zó©ºÁi˜¨Fi¬ü²æW+‰aO0i´¾jå²›fU\û[0¿¢QçëÔxà8 ²š‡yßYÃÒ™ùÈNcdëŽÆ¼'G‰"]yV|XU® æs£Öü½o@6*1Êçç=àÿvŸ´dCŸû¯ÊÀEÞ.¾˜æ ´òöl—Ÿò@òµÔ7&lñ¦åë†JÞÔ—pdåù6´{Ñ«çñ#ìOÞRýÜý­¾b® ´ì§© þ ?ý×÷G¼ýA•ÇÅÛïþ«µÃ߀þ'w®÷{@Àˆ·ü‘(è÷.rgÈýJ;*·_¦‘Æwd2è/|‹¯>­ìU+•ƒ~AÄÖ7² ß—`v-óè7&³³_nÂ6¡Cþºš7¼ý £¦` ê¦¾_‹ô'ÂèìûŠÁ`}¢gõ"Ôûzgz`ˆ×õ*Ë¡~S1–Tk0Ð˸îw lª @ÿí@§B$Jnõ4Ðÿ©;qà-ô?í1ãÈX¬µ÷wFÚ€þ‡VuW¬—ôGXo¯ÿ¸õ³º¿ Ýýï¥3Ëc°MtYߤàˆ&ŒÇx«mÇçæŽ²–Z0àØ¾söÃèO¿ùin+èã°ßÃúí¾761bÿfž¨È/ ?9X|QR ÖD¥y︎z•òØ¡ÿ#E£:—+0žÏ·JËFƒþÓ”Ý!¾Á±Â.ÄíøØYK 49ƒš™´ù"gíѲųe¬Ê’Aq¡hïuŽ PlÍæk Å¢œG—ÚA±JjònÙcP¬Ü³Çÿ(žayn¦ÃŠ“±c‘"Á x¤Ùªñ‚:(¤ø½0} Š;cU ÚÝ@1Yž¬às³¿èjU@±ÃÄÚ‘u)(ºEn.MŽ¥%®”/“YyÉýé Püº+!«e#ê/RŽm½J+ÔN zû‚ât^íáù Ä8z£k;(ɸ éܾJk?G‡xÊà<ÌÛ1}(¿^\q{Oin .ÅÛRŸdfúAñ•WµY“7(Þé͸ëèJ ï’¯?< JK3=„ dAñiø×&~PürbO Ÿ6(‘e8…XФ1ó4VP¬ð‡x#P¬å¼çÂ.Н»Nþ|4Š?Ê_ø|ù JlÞš[ª@ñqÇ¡T§~ÄõZ(‚¢{Òù¸}Œ X÷îtا¿ìV–I¦rÒ†¢ãÇ_¾Å΂A›G^ßÐ÷:š Ø3âÙ’¼÷¡Ç‘y6”ēʖ/ %ŽÚ ñSxΤþz=wÐTàŶ۹¢&ÌŸ™=…ÎwMÙü{y.Ð6›ë¿fšzrÙÏ@Ìû´õYò/M3fÛ´ æmð˜ñ´<žg…eÞ[¶a~¤²,îC*ž_e~á˜|> ÉŸn˜= 4i•OÕQY¨_7ýŒÉm )%Ž0øMÖ;ÚqJ hA'ö¸ÈMN¹¾ÖŒhzMÕKGö¡^¾¸):Ðtv«:¦ MuÅæ{õ)@ÓQc/ÁÀø¼4BÇ“ý÷ðz ±É†VŠþin2:gW†8>ßU¢]eÆo³?ˆ .Ì5}B»ùÿŠÃæ¦9´£5œšŸ…xù¯uO¬(ÿkŸPÎÙŽä¨àèÜaGÂüÎé% c~’ŸÂÅÞ„y`îq‡5€[ 8g…yVåÛä‚=‡F=¡óBóEß{˜§´ê½á¸è}v·©>À¹ÛÆûe1»"#açÌ´¥3àò—ñWV­(Çnzä(»:”÷ä;(ù¥:bÞxâPÒzvÄUÎãsÆ àÊÿ¯6ˆkaË)žuM7lö¼ŽÅþ¡´$b0âIâóâ¿ p~¨p‹âÍx•°À páL>Îo¨c 9ÎŒãgz\7£ŸÜß™ÏHä1+Úˆ£]ç›!Ã'® »éÆÙbž[£ÿþÞk\½ñú#œµ %®µ¥œ¡ hauâ¾4€9›£Rì?KßJyÌ3Ïê¼ï®ïKM ÄæS©ëó5¨¤è&ç__ˆBbUù_U ¤’O¹öà¼è¤G1‰˜ï-_&ZaX „´Úy)Û×ù{Eaiæ¶9+ (-õ× ayÇ»5M/ lƳ ,{ô>m,BáŠhf |¥ãÓè·QË»%ŒÂ@ ÷®¼Ëo²|?j,0ƒ¹c ÖcqúF="eÔ¿³Á $‹ŒmŸ½¡]ý@¸žþÕñaÙT$E”ž[wÐ =@fL’mó–k7É(…¢=ÏðÁûkqÚy}¯¶, íßUhüÌ ÙÅMºŸÇ,êyæÃÝöK¼€ÀÚ¨´¡¨‰ÅßÞøj¦ÇÊÐd  ]rîóCU”Z•‘®ú@=¶²EàâIl‹.S5¸ÔÓ–©ý@=™¹’oö¶^çÛ7Ôã‚ëOÚaû0åƒlPÓDÖ¨B½ZÞaÓ(O}‹o;Ô#³î+ƒ¸zxø£’÷.W„qXvVW­ù×ãZ=}àöP|ÍiäÉIÕ,yÄÿ>/r“;ÀU¯ß¼Ðí„WbXoóöïæ"˵”Ãr¯Bîxg<˜³;4~:£oMèc? n>údþú8÷LÈ(û™¾ýÈh&úŒµ€Ì/fâû9ÙõŽëÄB+Èøµ‹Úš”ŒlZ_²%È,Ëû°ô˜ÈltW‰—6«ýƒ"F ÃX$rš,2k*÷ ÊWQ‘]'@fÛÏ´`Ûï joºÛ³d\;XÅV9¢<*Ñuë&È$×›t‚ŒªFèÈŽ§©.K=ë 2"ßÜVìYŽóT_Œ< ™z»bë÷ôw±äÎ…³ ³•vj®d¼¿l¾±~döÚ׎ù€Ìá÷?Ì<±_Uª¾pÙ2)±æ_vý‹p“çé?2·•5>*üD½þOÝ’QÊå깯ŒSLèI1;fó ‹nÈsG>·7c~]k2Ñn²È2;„§[Ÿ…ƒô§ÙÛUqŸ­¥w¥„‘ïb•Æ$Õƒtƒ=éÌ2È8«+^q™âUï{COLzÖÖl–m clËÌùФg·cgA}év"¯àuaÛ [“î0È<¡ïΤ¡~ýZ7~"Pýþ×÷ïQý[}`Ö ù"u´ÏÝžÄJ;m<Ÿ{¦cî;}FÙç'À|ýQ¦–y%Ahµ{S8žW“ƒCzàáûqÂSœw:ÝÃ{ ¨{­©QI\†<Æ*¿ƒ7y@Q{Å&GÔ«Rí3/¼å9±[ÓÛÖ¢S»o ãWø _šU›£]oâ+Äçmí±Ûyùˆ±låÂa\§9×ýyò–í±Ù’í¨ÿb©y q÷.£¡QWÔ’_ùõ> †ï4DžÜ‘³å<â#ûçTÕâü¬¶œÄK·žd¨Gþ|ôò'â p=³qê?øy]À3´;;UÜíˆû.mg‘ó9½Çö޵ÏÝý×tyô0_ î•ù>- ‡×>ú-"â“Ø®  Ô¾‡*Ÿo¢ÿ[מžb}Ö¿ßÛúŠ /𾕞Ø÷”ëLVwÞÚ¬¹¶ñV?ý¥Ü‡º˜~‚>÷Á·‡ƒÞ·ã–ÁšF ÷¤¬³5ì;èk¯ïé8Ç zÓa»ãA笠ä¾Ò~Ð_"YÛ/$úk92o*}=Έü@Ô¯·Ç[¨ô9Äšxn¼½ñ# e)X§Êç|}ecú«C¥Þ+Ì€¾ºú’(ÿRÐ'|~üDKeSÒŽFÐ׌08ýÎ ôån9¶Û¼Æ~ëRí»æ —qúÝê«ñ çŸðI ôûÈÍ›AŸ¿D‡Q]ôê†Ëg[€Þ÷‚céDÐ{%ØŸvHô®%>bÆzKßø´ú§É /ž)Í!núúf_§ ±þ§´Èš^½ÔÖÛuK@¯ûsôZGœÇ:ÌtKú èe_—‰~zÕ9+˜a¼&›ápÈJÐW¦Æ+p½…xªgMè}hØKuM½®I¶Xô×ÖùrFû ЛÝ[÷MúÕ ÉhÿÔב%m /ÅÕ»ëÉŸ;Ÿs%šúô 3Pr–á¥ØñkåPPÚ÷Z“%L ”öˆ{øz ”3JÇ@icC ÌÇõç­ßûÔ€’¿”XÐ3PâŽ<¬äJ;ž 4n¥ýIAÆ0|Æ:Ór/@É=dªhÅ6P:ý9cÁ¼”Ž=‹Œ¥{"î8M×ÐZP’g˜HoºJqëN%ªPﳯŸe{@)‡ XK¶dÕáŸ˜Çøÿ•—¿ª§ wÞL,žß“êe_!j¯³HÜ Ô¹ù´ÛØÏ:<ÖyKÈY†ˆÝx® –rË ?~ÞêeBÞšiâáùëwWŸOÕv*½Ò÷Ì ¨®oŽÈ¡þ±ÔÏÈgÛË3ìCÚÑÇ›T†¼TOKÇzŽê'ždú_Ÿ1OG{;äBb¾N )Ú"䆸B5ï¶Õ /Hy?üòJxוL”Úª(²ê 0ÛñÒ'jâo;­¯wídõHF\Û'LóRO!ÿR+™)8²Õ#Ë‘_\u™ç @ݵôÊ—%È¿»˜nîòCßµåeáÎt´ëGptèjpçÊKײ‘§Ø§ƒF1? ;ÿü'ù/‚A¼õSúùôàŠe·þâ÷Á+ÞèOÔ³§OÐÎxº÷{äÙ ÷Õß1O3¨Þé„<½Gã˜Qæ“›yÊ••øq|K£˜ôŽ«(X¬D¿Ãì I•8~dò—ïÐsþëùˆS çÕÌdwä%èùV}YV›zîï–éo÷=ŸfK,õœB²ŽE>½Mòû€Y_Ù…\ qìýøÙ%¯?Y;-fÅNµ‡iû…Rõ¶[`ÖÁ« ðg Ìþ\gIËÑÁy\tÖeMÁñWÖ¸Õ=€¤^ÑÈåø çûûð_Ê ˜µï‹k³EêÆ=þ`Vö#ôØýw`¶TáØtƒŠû²¥aÓOv Éþ ™8ÑŒûѺÃMWÇ9ýÕ€m$õ;t¬C~)(„¨Ñ`Ãý‹~¤9>~o€¤•yëš¿Œ¨ßRTþüÿï[ÝV×O–÷øAw¤± ª  tÿfýÙ zŽ¥2Uë »d¤úÇæèÖùؘî˜Þ›Ì  н–93NìÝꟻU¼šA·¦,]Et+ û;®ÅƒîÝ ƒc$iнÐê¾y;K®ž‘ü zòCQ v '®»£#ô#è™.™}š §ôyUB” ôäÆx‘@÷ç© ßü ÇÖÏ©¦V zÛf}”Žš‹í½ôÏoq>dަË_@·îú£VeèVio;Oxã<ÆfË~Äã5>ô8MÍ»§ [–*~á‡è‰<î-¶‘ÝÙ‹êƒnQ‘ljDÐãæïSÞ‰ûQx^H*Áô„ÛÊüžežØ¶# Þ@÷Ã2ÿ“áÐ}{ì–Û»VÐ}ø ÂÓo/è6Þnù~÷m@ÙØF6 tõrxtºîü9eÑ>\Ç”¯ã¹Ðãúróè¡tÐõe–³ŸgÝÑm/¢ñº~…ëǹÞî—DçáOý GRhn"ƒn¸Øó³·ìèÿû\ Ö3Œ^õ×ðýÏ´Ó_úd>Ø1h0k¿Ç|á:ôÂ1è>?Âð MSZÂ@ù¥wû Eg2¥ÕÇM¿ŠJõÓnÇ€Ò{§Š5“ðß¿îå±lãÿÕsž8ê»Mñ8[T·,‚ÇfSÇ¥½xžÍ`~T>ž÷TâÎŽ›@4¿yæ ðüÊTz€t¬åËÒwäs[óÔlo¼ÉK˜Ø®p.ÑÙ*“Ü#ƒD«<œýÀø£¥Ä3€)þZ 1 øû–3ˆEþá[›ÄÆÞŒGp·o7}þ@t¤¹ãy÷vÌ÷11Ë?X Õdc³~@BFìí[ >ì >-uˆœ=×ây]gesßxž<âξK&–x?M“*å9@Ü;Ó§±gˆ¶Ë´¼½œgXÍ$ÎË_P¢†ˆ©sbGoíbØüÍ®Å@\:F·0ð ˆê'ùCs@¤¿ ßÄ/Ã+güpyù·ÄÀmÜ`x0‘ ÷Ü7â,€Ã]å%•¨?s¡8¾½Ýõk8f½#6F_"5ììxäÂÅ~—ÿ—Õ®Mº@ÄÙ%Içh‚ö]®<ÚŒŒÙWnßm©ö]/ „A[ùvõ÷Ý1 }´­N]!´ íÙÒ#™A+§äÛ5K:Ð6º¾ü;ü,hnxsÅ>¸ ZÇ÷ÿxÅ: Z1ÒßëAkk±+ÛМ|þêEÉ!Ðìg6Oúå šEé6‘6 }D^*‹Å´íXt¹£AûOrãÕjÐöº½14%ÚV·ë±­†¿'wÝíD—Í1Y°™nŽZس´SŽ%Øxž­݇ÏÎ8ƒÖ gÏ#ö>Ð:ög0(°´NL=,-·UU»n–×9uã\|^þ×@ò+iÐ&)ð°ÌmE†nÃ)*h97y›†jƒö3zcãM5 •ko¨É{´}_}f.ím”£Z+ eo¥;Ù1ZÛI# ìê UòéÌKêhQߨO.Ö« kiù‚ uSJæËÎïÛ—œâDÐV‘;¸Ú.%ó/:ó@óªØ?çg õ;æ$ml'hÕšI+‚ÖtŠáx´7ôu%¿dv¶Î»Qũøÿûüå¢çùÓü@¹ükuà P.\8weÏM $¤Þz½kÉi‡ãû3õsUZÈm \y9›"“Ž×kÚa"PüÔ¤¦éB€r­á•âÂ|>’áÔ? $¿"Þ—Ûàóͼ_õFrnL×IÇ ö<øñ"P"êu©ß·%6Ü(ÍÜ(W®²ÄÜ›¡gJÂù%ó©`5ÃóR äÝå|H­Æ—ã@ ªÿ—Šã¥ÕÕ®Åùì¨MÄûjøzsvï¨óóã¥@¡òœÀcðÝ %Ì­#Eª/_Ó%ÎN|ÏÈ$ÎÃÙãÉÚ> ¸ŸÙ½©ù.ŽO‹ûG}”3¥·RZÎ%4TÍæñ5 œ8sñ’É. ·/øUwï{Øc](1wF;¿Äʼn>I’þ P\Öï‹hâ~›Î~÷(þ:Û7_Ê îãÇ0‡sª=*·áy¾ý­7æý€Ùžzʲ÷·}¤!yï;³£XG»Æ)ù(7C”eÀ\ì¿Ï?…ƒ¹ÁÕo`. ú›¡q˜sF嶬Üo™pòÁ£^˶"0§<ÿ½I ¿ISµ¹ /IÕkgÀÍI# ë`ÎìÔº›?xæ7Õï>ŒãÈ4èþøæâ9ê¹E‡Àœõ“iæ59€J99 |×dIj0î(KM97µ€­õŸH|à ÷œuáø*± `êÜ–•Ôh€3ïMP ð~—ÜDÆ%0§Þo °ñú¦‹K1À®GKÊ1û1oúY¶p‰cÎ2©Ÿæø®¨dô5Àú¹scdÀHf›Ö!Ìù »Óßg1(iç*p] KææxŸwß UŸ¸µ¼6ÉÅÎäæ«ŠóÖÉ37<óè¶WÆølÑÎòºÚJ‚C ñõ§J+v帾‡þ͵/“lÆ‚lÀœªaôÝÞÌE+¶¹ßR¸P?Ð廈óÏòmËï·Ý’¸ŠóŠÓíŠÆ»?:ྠž¿åþ³ K jþßûÔŠAõjç'¡Ý6 :Fcšù&ª±B5÷¨¥ Æê®r/ T{vZú¿UßeÝkA5cñ£•5¨&>üš nÊÅ×)ö²Š be}Ý#ÎTÔÌMK—‚êt¹yÄú P¦Ç¼¶@õHÈ÷Y¬“UÇ/l‘ÙvT;lgìvŽ‚jC%7AªN¶ôÕ=Æëqû$@%‹â¼|ÔÆúºAÍoseßæFPiÍ;ç  ÚÚÍŸ‡ó®>íÃ]6ªg9ë¼µUIïËÞ]o@USà=¼u—¯íßž‚jäTžO½*¨ŒÞì–„×Ñ1©y£/ ’ùØ_ß Tævé¶ >‚.'eRTï$­ÎNéêþÙžÃÜx Õ{UæjË[Ø4ˆ‚šfß°ðÙo ªçnCìVÆy”Þ•Í9;Ñã~Tßýz6·T–9¶q[ªmû9_ÜW6'a³âm .ÞûÏ+T_l?þék"¨Mç ØóÔl%ofp¨¹ý«}%MÛƒª Õ—Ávè2é€ æÛ²ôÆæ`»ò7›­ulÇ}†'íò!¹ß ¨]‹a]ŠŒ_¨mPÄÊv¬`§9T”‹ù!Ìnþƒ(,…–L€"ZÁ«&ˆu™\Ùεr„çK*½çœÀûU«åàûÝvêÌÁÏ0 æ¯/)Î-x :ñ£ ëH:™A'|\ïxÿ­&>Ž—óÖÓÛY_™Õ@áç ;â ”­®Ê™!˜·[CeùúÂí`ë}Úç¡öë²5PøÒ^ßcŠÉfêñ5 ð9_®&®ÄÌm@a0Ü}F˜ (œRžÑ˜ó"|^’oo…½¶Ãõš ίH[-Mlûh;B°Îd8Övv´(z¥ £˜›{õ³j¬§€¢¤¯¼}€(âa{C„0¹È_5”Rð|÷ ”ÿæ MZ`n*}lòÀõò£×[™·í¯?3ã•–@‘tU¹”­Aéž}çóq~ =}6X¿n>Òy¢!àüwá ˜+çºî9h¶ly]:þëûäÛ™Ü[ö@Kî?¬SO.½ý D oÉt Ö/ÂeѦXßÕ˜KbIMÔ¥ )/auŲÿÌMïàÉö`¬ÜíEJû€8b²“¿è{žš*¤?blÿM¯<Öm—Ž{Œc}£’d_? pZ‘~óÓF™üM“XEùÔŒÆë/ÕLlç¼  x—­qÈÀ…Ëýyî Rõ îS@¤°Œ¸«giñ§çüc  ×Ð ×iºô^¸à$i—ZW¬Å€ôóA¯§¬6€ÏéŠ-˜—Œ¦« Èq+oÎLLã0nH“|ß Ä—6ÙˆÏ.@$¯!ÍØg¯€XÐ- •|]qñx äCÔyæþ ½¼ú>ÆH¯¬õȃ˜§:E®ôûZ±Ô9óff@Ñy•bzÜŸ’Üg‡p^›žÊTÏàë…ŠB»ÎÛm}çÛ Ž‰lÁ:–^Í®d @’¢¸ByŠ/ÿ{ß§;(6Ç ïªIÅ@™×¦A±h,ÿ’µ&(Î>›‹¬ÅÎþe»Õ PÈßÓ'Ÿú÷»K˜?vżôzNq!¿9ìêìïŠ`ÊÌÊÊ-ã]=ó ¸ù€ßvPdÝrgä(ÂÐnîQPb½Ñ¬0ÚŠ.H-Ú³9#éœ"@‘s­uz+(v”,ÝëÓÁñæJ–÷âŸ[{<4ÏRt,“€½(ŽÊ¨LúoÅïá롳õ ØròiWËWPT=sÞŠ_Þ?95\ M,úz,¸N 5¤ ¹G r(>é™—KPL®ø´ÿ¼ (¬ r<ÜÇJ[êËß‚ÂPž».—(ÖëÐ&ð>GŒ©íø8ÊϦv"/§@¾• (08øì즿ì?>=C ¨`f‘ý¹ºÓÓOŸÅòÌ Ë,e¼ŸÍˆ“­?(>Ï—enERÁ¯l2(YÌ¥eWhƒbAwdƒbÃ:G‘Ñ7P2‰ð쟵ÅK¾iƒü@)ø?AyLêWqJñ Æk¹@)Ü¢dù) (¹ôîÏ1O #>Z ­¥ó$¥`(ï~¬eaÕ¤9»çÖIC¼ ,Xÿ EÒuƒ9 | °‰söÊW¦ta@ùPô‡áPZO8euÊÛëùÔx{ TT«Ü¨rJ½ ÇŸS@)û¡#"³( §'•€RÙ±~Ÿë¿â)¦Še;?ië{¬£Ú¥'ç]üÏ'rºlæÄc’VV æO›á¥K2Ò-±øæº(P:ö5×âx=?Fó“Ò÷Ñu)æÞo×¾µ£8ï÷PU(”ž¯§1¯ûw.\•ÏJ£‹K–7Pª¼£¸bðººäKwœ÷W¾s1ÏÛÔ¯€óéâ˶iˆÃ~t @– ”ï–^7Ã…ò‰ÞñŠÖÅŸ÷¾í Js€³;Þ7w”fö ÷þ4a÷÷¿ô~ÖÑMU=Ѷçpž¿ŠD¯bn7îò:†õiS £…‡$"ÿ}?lÚÉóìù¯ý‘íƒ@þ§—¸Kói“§­‘@þÒþ¡ÔjÈ5¾?=jsìgÍÿ)– H' nŸ¥ùØŸ[qÜ&@îÛ)”ïÍ„PNÛA#3 wÇ|Dv@½È× äùZññ /¯Ô«;áqðEwXp§Y­JOáPÕ;€¼þâÒÉ@Ì3SF“*s% ~e­r‚ôøëÝ o 84Æ‹†i½\Yƒ{H9L)ºßô>@Vܤ Hw€Ž…-HŸž=s Ÿ:p²D,È‚MaáìA@Ð/ѧÇùø¾2Ùdáý¡+˜Û…ÆùÈ?|Ƨ<;&¥4„ë^׸{ïs­5â§ù> õ®²neý¤î8!ƒS¬@*¤Û-aN2×ø÷-já@n:T{¸9ȳb]±M¸/ß^ò†ãþôd¼:Ê^¤G!v3q¸&[èêXZØqÿû­æ¯æ˜±£²/ä×a ?òkg¥qýÿÞWã â“G~fÑ@\S¨ö£¿ˆ(Ýñà\:ˆ<ºP÷._w—oTÑ ¡ûŒx€xiðáß] wíü(Ç?}êTw^‰Ä<>åI<1)ú8‡[gA,äÆÏbjkî¬ïNQWÿùIi_±²²HuñqÍl?V—fõãt±»oTÜm@¼äÒFöÑbæß’^ ‚„„—{’ÃH JÿH{âmŽEÚà þBõ°æû)¿uÝ7æoÎ;ææGÅm v)ãÜøÈ?+«*V¿,âW?å7áúZoÚ˜Íñƒø¡ûA¼ƒ ¶¼KãÀë 6r¼ûeW,H¼Ü6óçÄ$ṳ̈ôªA<ž½'ÌÃÄë•*~x¿J…\´$H¨?«œrÑá×Vy ¶­¢ùQÔ>§$qLc]#:i±Ùm7Îó˜kÔÜ_FÅYª ~‚§êx Ä&É|øæ‰‡åY9²;@|’ý å%ž?¦kd'½®ÚŠ>>]'7 `]Õx ÿ—ïë5žW¬›êc<ßÎ`NJNú‰ï¿ªçCE°¾j K#_Çz­ÉzSìæä@z¿Q%PÖÚõ¿9,‚Ý&_^šÍ üßtâC¾ÿ_=þŃïûâ3ým˜#Ÿ( Ÿä/áû]Ö_:S (åÓMWܰÎy·7 ¶s¤bvÄûþf |í+ÂPj§mϤñ㼦¢L¯`=æûß{PöQI%Α¯/Uõ:ßwC­Zmñ@¸}ÏP¬B@X¼]«4 âÜÝöÅœ@|%Ä:œÇ€ô]I‰Õë›m£’% @¾wA£àÑ<‚Û—»¤€Hô³l¢¡§èQá ÖxŽå[ã}n2ºUã8~«ØÄä§&VÕ–˜;fC[Ëi.˜G!,|WÇ{s·âü µO? ˆ´VQ×m¶@œ"HÜ©é@6œzÚ¤ÿȺzš±ŽX®n½‡¹Æ˜{Ç“ëÍȆÊb }8ôü̾d T$"·«@ÞC§åý–ȯý'žá|£o ûtˆ¤ÛÑO) ç—ìÑPÀzÍûÖÉ!µP –e2ðsáTø§#ºIú ›ð|“PÝE¬ Iûþ ­5áÿÙ#n×o1šTœr²ùÛbÅZÌ÷¸º?¢¿»€œpí8‚€|g¤f]¥ˆ¼Û¿§û\²ä¸ÅF×ÙÜ?ÄùþøßI¯ŸÚ¸OrÓML]À{ã‚=§'ð.>=Ò%ðøŽž–Ú婼Oƒ†SNî> ‘Ý>ÀgJo/ÄPм£Ð—GØWý÷}–/±tj4›¡a_yYëÓõÿŽÛÏ¿ø†G6‰-·¾cqPvÅc=ÃX½ v ë@y×ÄAìIŒ¼ i@Ù2eÙËŽõ›Â$_OÝgì÷>}­žÅ.Uè{ÐýîòÛ ì/ Ù¹‹`; Ÿz×Éû¼hmÚ°u=•{”↑´e«ö•ßîEúíÒãj¡Ö3`ûÖã½+ï ödžm/Çp>Š«ååØ¿¶J{mžÀc„UÒïJ (ÚµÝÃÇ"U§ŽèEþ-gŽŒ4P Ÿ{u¶c¿)KÞz;_Çû©4ž‡÷9ds û_-Ã=ïcßc?š*øPst›¼æ› e°­þ0亱l'„ä…Ì_Eeš¶×sIæîb ?7ôc0»O”Ö«E••>¨?ˆéêÁרk¦6~SÃχŸ.¾ûu¬!s¹¾(~®˜Y¼-Ä ¶ƒÃiŠqÝ›O ÷dã¾”ìÈú. ¶ã<¢?>ÅøÊôØ“-Øg1+þÜ, o]öø@Ï?›„­ïâFÜe “ JO¾»†ùä÷ÕW“sçJ²‘¯ý«BE–@bÚ£|jÛ,Ó òx1D=Yñ/ò‚ZGC8çf·vb ÈPöº¡"‚õ Â!‹FÌÆbrX"öŸé5¼Y`äô÷÷Å_JÉú™Rq\mÍØ6q °.§9ÿ¿ÏEùrïbW§Vö•íþ'Ü.é³×È™°+@ÐTëf1¿˜¯=TŸÂëF£Â§€¤.äÙ]sÈ3†Ü“±OeS8pfÑÈF _ڄ׸í™[YM„GTï+¿ ÓÇQ™8ùãýuûŒ) ûgö¬]žòb̉¢ï@¨ 4:VÚqÖõ¦ˆ—d—ÒÆ70-Ø¿:x™©gäÕV.ìgOhG+ò¦ÁŒ@æ¿ýž@ö2 :zsòÂÔÇë؇§$e¼0ÄÏᎨjF ÿy™Åÿ'€{]½éï<1ü߯ e‰±ÝÎ|‘Ĵ¨óE# F†^½Î-Œ$~¿2—t#&#ÓÎ4ÕÒß)½[ÝéˆIKÑ½Ç 1ë&±í…èÏé?÷ëdÑõœùΩ³tDÏh")úb$Ñí×z(ýÝÏ·G_¶ŒZ1Ÿòãc­,1ÿµ­£Á€ŽXøYÛ¬C̵eßSi!–FUŸ}æi!¦)ϸ$6gËžOcÞÐ!V‘À™Rf?bòz²¤~Š,1×dòE¦»˜;ñð”âlñ»)ŽCsK1äzVZ8<‹˜Ö¡ql1wî»\$1yç…1‹>±tÒã®Þb|xðßA~DŒlðãAÄFÇU:â—tÔ‡WX™Šs‹š!®ê¸¸møSå3çw¹ñ§6ou> ÿïgгœEô“CŽ\y„ˆñƒÒifD þQ³ž¾IŒ'ì ÑBÄ´ìÂçÇmYÄÄFü€:Åzö"‚$K,”,S~§CÌð„ÜeÁK,†}¸‘q±X)÷¸í,KL±æ'S'1Çþ÷>€_@‘҈ߵ9 ó*ÇŠbr(Òÿ–?oeÁ¼:wÕÞë#‘ 2ßP˜DÆ:œÜkÖÏ„9p-#YsP­è†^Ö5JÛÎ5àõâÊBc|XwñߨnòÆù¾’x7Ql»¼Xýf·ƒíä4?/ÖqBý÷“X—ÂÊ 2܃õ›Ž,×Ó§`ûFÚwx9Ø®ˆ·7a^—a2G`ê¼tî"{ö¿ÀW¸Ì:sVÌÏéØä*å>~eL.~ÒJ˜‡¯Ïå\º=z H¶2:A!;D:¸¦°ý$˜~š:>"?fùÛ~¿¹å ¦{Ëís/³a޲#@:w«Ql·0”yÈsúT ÍTH<Ê3öØ—]^ `ÆøCU< ûeU–z«j MŽÒ)yY{ÀÓnæ ˜&­{±«*c}šù¨v‡˜²§$®×Ù ®=¡˜¯n­o:÷È`ÞÕu׋X‚Y؉ߥóÃ`V|¾D{/˜¥v—š(©Ztüwú6îë¹`Îëû%†¥XYfŸløæ¤Ë¯O*×ÀLÃÿKÀ™`&³!è(Tf;â>¼Ìf”¸ÇÏñxïIô—örÌíqa7ÆH0«(¡5l¤DÙE½œB 9ËþøÓdŸwGN9>®œúïëšû*G '÷Š/GVŽz¦ÍŸýU9)võøŸÛn•C…dïŠËP9¦öêlÕg¨üÃ^*âý®¯ò×‰è ‚t‘•¿j,üúd+'Eì^?Þ/[¹ x/öloåÜB·åÑbJå¼|®Íkù¾Ê9æ<ÁüÊŵÏI÷Ûf*ëBžŸ7úMWY¿gA%b’®²wßC}deOÿÇ·{ꡲý›I‹4UŽVíÉ{™UùEСC¿;²òùÇLc2á,¾RIWùK~(R©­¯²2É^u«ì™pù°UtÛý’x‹*Ç)¢Þ­rÜZ8MÌ3²ò'½þ>ŽºÊ%7Æ;#+'ãƒÕ/-ÑU»ìžó¥«|qkT‚Ïùu ±]Õ©l,xæ6YÙ§Ü7 1Y•mrÛ Z¡²‰Óî½f1]åPÃB“’~Vå tiã㲕Ÿçõóå ¼^Ø:÷^]åŒñšërº[å×¥üÇßé*GžoýPâV9û„±š"+?Æ}jõÚKW9<2ð‡+*ëw®¼XŒ¬|c•xì¦-]åû¾ÍûÎÑeÏï'Ä÷£-}@T>PÌ7íC]w-ƒ^Se^ò"ùäL¨O®¨á}>7 VþÄ:ÒëöÉ1aö³J™ mØo÷2ýh¨’Ž’¹{à×Áá,{ ÿß‹Ý<¸®v­ÓžØgj|5çŽPb5c݉⠰°6KÝ¿Šë+b\>‹õìâ%n¹£øú#ÕÿùçñÄ®ÿ¾÷þ™mÔ€9@ƒkáÞ³“Ž›R…NtUYÿmsº_5³—Ÿªõt{Ö"¾”“½þØÏÞoVÈûŒýþû"Ÿ—e@̺¯1_¸ˆûÝ{æá ~Ñß/¶=ó8ÿ¨8£rÀÎ,Ï„ˆ³`Îlš¯ÑhBüýß)ŸXÝe9°q°…X^_Zù´šJ,fîqÏØÖB¬$ÛpÕôKú'wa}Òþ7Û>ë WGÅx"‰¥€ÐŸ'܈¿íûþ“³ˆyö¢Dž @Ìå-·J`Ý3ñG+i$’˜UúÜgMGLõðì¹ÂÄÒæéܽW±îâN»ín/KÌ~ T_ÁºÒmrÕƒäF,Hs¥Ñ¿æ.¦—kÀ\ö„Fiéæ ‚i{˜9_ÌnâÆ÷óÕR»ë`®Ù¼›^ÌY-{Ò0¤sàÔ¾æ¡úoDøwd>Z=î· û ×7çÛ`ÎàÑ+²³àß’LŽÌIùŸÿi>ÆñûãBùÁœµüìéä"’Wêãpì·ßÖäðoÕP V§Ü>ÐlkA»æl»”åƒ9‹póP¶ ˜GÍ%žïÅ<\ÞYkÌ ptÔÛS`ÌÉ̇'CÁ\pó¥¦p0EöD€mÏΪ{^sÆñµO=Ì’ÅŽQ“ï¾Jj_z“ æ;4ègü÷>7/5öL€œ¦e6 ÌÉOŠ©äôh€×¯9WKþ]í?`®ÅRã3;æ;kÔ¢&pýõž©s‡ž³E¢—¢Ì?µÊ„lÊ:1ˆ÷ïlV½1 V/Ûnƒ¯ßË¿}©Çùýݰà0®ûVyD¸'木ŒâñB0gâýu0Ù̵Oå_+'þ{½Æ[ìkM^^Ì"~ךOíQÄ>¬‚W'C®³›2yÓG ³š³¿SAD›·óSaE fYOØ¿t#FV\‡þay#Íö¾lñkæä@¸+ñ“Spâ-æâXïaë7\}Ĥ\Sö_ñÝÑÜ‹"ºÜƒÕ\¦#º·tޙľ0ºýœÌû,âÇp݉| ÷§l]r#ºB¿ì Á~›ñìõ½ÖnÄŒÃå¨7b4j!°ÎûHC —[ÝtĘÿÓšm?d‰ ŸÚ{ÇNâ¼êµùÓ1ä¦% ß1|Mçtò]ìÍ\k2"‰~3“~…‘D³¸ §ñÛëÒ‰z ºßöYà>ôˆÿ9„ˆßw»·DÃv)~ø91´ËϬP–¨»ó¬_Œì¾;§§ÙýÀ.¼At0Zü¶›#5qœïÜ"õª`wܰ;ñ(ìŽÉ[ÝiÍÇqkŽ –)Ý‘@6~tìX«.Çccÿ‹˜›ß¿*w»-‡U v‚HÏEŽ7#`§E‰yc‘ v1òÆÌ`'yÒZm4ìŒÿÿêsì’ÑŸ}fÚ`wy‡Îëç`çb±Øœh‚ó½½´ìŽVû‰Ôž»ÀݳêG°sl\òdÇ×E.ö÷ŽZ‚ö×ÇE%¸¡á¹Ø.ûdÖ* vßëÆ.¸ßáŒêØÉÛk)¹Û¶öEwqüSJÔp|ý¤ºÂºÎ×5°DüäaÜ7™ú¤ˆ ° m¡½¹vçLZJXñq2³víœg,}¶iì.„\ì(;Q¥Ÿ¼Oüÿû\ŒÜ‹I|ž«ðígÛ×`'k½…”¸v¾Žo‚;€`üïû–u°.ÙüA0 ë·cäâ§â ’>cíömnàq!YóâÎæiã ÀJ]öý‡Ü¦ÏêYñ©„Í{ ¯œžÙû±ÿÛ32«¯8ßNL‚s$AQUÈ}ÒÒö¬"ˆMßO±}ˆå¨~ïS*b C¢á3ˆõæZÙöÄb±ÝME¬ç]b*6!Ä^¾§ú˜b Ts­èÅó£d*–Ž"‹òé¼À\ÄvŠûÓ¥ÄN)ùià‡XÝ£Ö¶´ á%3YÄÞ<È—©4ŠØÝ|ø­:»U}Šâ˜,bͽtr´±_¯?ÿ#®±vì}Õ,7ƒØóß韲Âq$’⮨b >Hyó·”Ð*E,LoµÍwàø… [G³y„lïÀ b9}v÷ãŽIJ¨PY£ŠX=Š"ó§#¦ÒÀÀùä>Äv,âÃôd.â ½\kÆñŒ‹?ø‰ Äøì¶‹Î¢bK¢ÖÈÜ A,–tŸ¶–bÛ)~cý¾b²©¿G‰ïÝCÓ–8nUךgH.b5Çù©21y ŸLêCìž£ææ§qßÜ¢ž„-à1±Óu; !Ö‹|þ¹ˆ==.eL ÷ËF‡+ûÛ>ÜÿÀG}éKˆåÎaÄqÇ 1U¦÷ܳÍGI+ 0×Rª.¼Ç÷-·Í†;¾/÷¦HŸsÃ|« ŠZ¹ vÖwC'òž¹â¥”Ê;`§§™úg 쨯·Oû'‚݉- áêµ`ÕØyè]æFX¦ÔŸÛ8.KÑ>>®m›ó·ìÄu…|¼²véOq\Ê9e ¶ ôÌë±øa_:4qëiÐQÌ—U£µ\Xÿü]µ À:”=CKç«ÖOÛºèáó–±;dñ¼ÒŽÕÅò­M`çS0}ŽçyGÛQ'° ÉÖl°³úÊ,òìœßíýÁ~ì¶9¹P}±ÿzÛ8]î‹õ(Úàú’ƒóZÙÔpè1¾Þ²?Ÿö sí7R¼6çQm›]2{ñŒ,î‹¥ §};Þß„ËEø.ÖcûŽ±Ù¯·ƒÝÎå{vƒñåðÙ5Ì;—# -çŽãÐí;ß÷þiá˜ÿþ4­ü!°óÎlqWÆzö»Ijï,ÎÃ:–üK«?¨Úê‚}ûØ@è«zܯ½äÇ;³ñùÿÞÿB/ӽصx˜b&K\Ç0:i{p+5Q‰ KÂ@PyÖ+¬±Ÿ\¸/_^kÀû³Ê÷w?CY~kùn°8þȹÂ-Ëî—¹Þ¾®! „Ì_li`pÚàùÄ]fÑp6 r×:¿eñôÁ/ky eùد‘Bõˆ°ÉqG %\´¡íKB©ñÚÎ<œç~£ ˽Æ@œI°}¼ 7ó&ÂLÈ3“œ+0?â÷g2ðb_΋.\mUÿ‘ wÇæ®˜{ó)‰4ú. ÊÎQêéÈÑ ‡’± *õÍÜ ¨)ÑóÃ@3껩!–²Ÿßv/¬¯Í˜t¹¡ÅÕQwˆ²Ð$ƒSÏ{|ýqê ¸wÐOßµÂûÉÎ4*VÝò P±±å ,o)ÙÈw¿ˆ´ÖrÌÚû–‰u ß/~üÀ¦ˆDç2b·9ç,£v˜àçЉ-óɧ¼8÷›¿¿ëYÖß˹|gÃÿ>þD‡ÆÈV‡"½ðšÆ²S'b’šãi©ÐA ×èxOý›AŒÍ‹Wsîu"F‘¿¤–Ц™ü“rDÿÏò†ûe?Dÿ]5Eh‹*b¢|b®ò AÌ&Ñ;NÊ"&ÍE³W©¢ˆqÖõáU7Ä2\m›E‡˜Ÿ½u)½¯ƒ˜Ï20l ÷CÌþ ;6b0b߬ž]œk=Ýb–›…X|Õøõ«S·¥Æ|‹b<ù±ïvh)¢/è=S·1žÌ̸Šß^q|ˆîxó¯°´©X#(ú¸¢÷M Lg.EL¯®™Ö$ MnlwY–[ï”錮*b1Të± nA›8¾œ2Ý`E›Xõ¶&a>f1 ·z!¦Ÿ-ó‰1nˆyj~’k—¢Ë?õÊPl_åúÒð-“7ÄÀ~þk™'Þ‡ÛóÈ+£ÒÊõW įÄôï2ÝæcÐ?Û¿5£ˆ1òT¿õËĬÂXºXèL‡µ_`^J'^¸“ˆ¡æúžRQÜwŠjkžn5‡žE Ç Æóbîµü÷5¾§Á®wkžÙ9|_ÖTs‘  ì>ÉíÜ…õMëþM¼¡v`W1S$uPaFvÏ)¬»êƒÏýjÃÜkàÌîß; vk6éü…`×üðVØ£°ûðdAMì,Øu>íìÏ»Ž˜ÙOÁ|`Wö:ع1ìl†›ÎŒ‚­iCЧ@°ÓÔ+ø}ó4&jÛûöK`§{òw­Žwüƒþ¸ð Øm¾c‡u—“£M† æoìwÎ5̵º¶Iž]8ôff÷§`—¯Ò¾hv/ÃæµŸâ}Ë>ñ'?«ÇçãÓ«N€Ý šñ/[¬ûŒy‡ÒoÃ:/Óýb7æ{9MãšA5Øe±ê1b}Zñs.ÊëEk1³Q 5°s8“Ìi†ùV´z)Ôóü‘mÀgƒY°«M ·ª»’äPÕ%¬óž¾YyìÃý_,`§÷§KëæúOÍÁ"˜¯õ_ëÏ7ã¼>i\¨Ã|Ý‘^{:ë¾Â>u«©1ÌiÿŸæ‡1§)]´ëñ¼/Çn$ËyÜBûÈ"‡†hbÌíä–Û΀¹Å~¯ëæñ`|—óÕqC0ßu|òûÇ>0Ocâ½³ ûÝwÕö†öKo£SÆ´ÿ{¶QÛW^0ßôÁi¶<Ì ÛO,³bßÙhN­˜s…WzlŸÀ<ò6A»g æÑó¬ë{†À<öÃljöÅws)USxJòÄÝ×MEíñ|[K®.=}ì«{ùX㟂ùÉ€cO;®€ùèlú.?ìJ„B¾à8 _%b]iþ–î;ÎãÚÓ;þác`þÆ0o|2 ú›òõk>`žuå™ @ä¼W:{5˜_gýþðz:˜Wþí»å¯æ#õ¤¬G0'ⲟìÀ¾ü/5±ÞÌå:×{Àü¢pbQ'˜6} ­Åëü“›ûÁüYo 7Ï0ÿT«MJêÆõÚ QfÇþ~æKÚí0Žbç‹Ãum\›`Þtûö·'ªâø!ª2%ç"Á\ï ë~na0÷,Ø¢a¿æ§éÕ.¶o€ù÷'mûD+ç3ÿûþr¿Ê¹Ì“–n•ó»ºVZ*—^»§ÕÆõU.²Í[™©\ÒPa¿öÞ¯rE„aAæŒlåüéʾ-•ËioÄ:ßêT.ø üñ«\Î(ö—eA•KïÂýx‰üÊE‰]‹”U¹àðP¨Öj¦ryNâæ¥&T¹òâp¦låÆy7÷ûj~ˆ.ÞýåŤÑÊuÛKÞÖ· :ý¦Ó‘ù~•ëû´Â.?w«üGý¦ä[ˆ×KÅ»òã|Ͷ–èáüX“b2Z*©l;,—Ü*ÿ¸›7 ÅçežÚQ{Y¡}oÚÀž÷žný[°§^î¥ßz ìÜ$çØ[Èm“æzöbêþÜÁ^ÙSïêv°?Tog)Ïö7¯G7lû[¦¶wíû`4Ûe™öçØ5û±‚ýy ÃEvœW|Ûe.ñJ°?µr÷3Iì…»ßã{~O£W^-Ûy}PÆÞ”ê܇[q‰Æ6x¿ëCN`¯qgþt:>UxÁ‹×Ÿ ð8èž7¹•´ çóûаÏ>osGøZ/îƒßÀãå>¼ï¡]¡}í¸I{6ÞázRrŒ žâ|-dŸ ÆyÌ·yþ‹×_Ý—¨6묋ö+w{Õ¢ña&UÜ÷eþcâ³QÊ¿C¾­d’ËoÄ$5ËœÅzJwø(g‹€Ó+)eR€¥÷q"¬§R9äuô4ŸÊ"]÷9d{ùóÀéT¶=õÇß2«ìøž9¡‹×öèäÇl­›*PÃq.6Þ]uxà¨vRß ÇŠ¢§t ë­žîú–€«ªE¬«ì»¦vÐ~bŽü¼Ööà’²ó)ƒ €ËQBO½Ž‚¹¬ni›èC€Í7J•ïèˆô¼ Æù¾c*ÌDþYJ¤Î2€7¿ ¦g±€ã}+B>,ˆóá4؆€˜‘¸hÆ PåìÊ#ó žUWùZ0˜‹>êºç©(ÎýˆöjZ£¥;ÿöþοæîƒŸ…å´¤¢h€¦/'kòp½E%Îc¸oìäz°}É“µò¿ªßÙ“e`eÕçÍ@X]‘§ëÊ-™‡>¿ÇýlvV=9`ßõ<¡*¼.5XMIñ4ÀóŒhª€Ïˆ7›#~çÿ>V3ƒøõâ?ßûÀ‰ømb+Øä#›édÅH€¥ì‡Q)à ßr’ tµø "~Ú,gLÐGÄï¢CÏo<®‰éY(Ì GkWKb‘@€î‡BYQÄox/gâG>â÷yyô¸Žc^Ê´²O lÜù”¬˜‡9õÛå\—àýÞerÒA$hèî.óL ê_R\ÉB‚î‰w;Ä&@RÐZàW$ ±ÿ¾¤C âoâ-_$‹øÚžíX2h@|‹QmÌ_óŸè³;›Oç"¾Fß`+}ˆ/~Ÿ‘ë)œG¡¢ÞÕˆ÷qêÈE‚EvÖFqåHÐIÓëűRħø]uÃq*¹&Ë"~sA×ec$p²3ÿ§r*Ì8^ñHñ–Égí4E¼9Çj ß%#¾«±3ï¾áýs÷ˆù!Þh~óêt$¸ÉúÇÑ-–ˆ?\ŸnøŽ·!ò EþìuGHÀIìJnÜ$Õ%û²÷Ÿ‘‡æd^ŠøÖ¾Ô?Ú€ø{²G~hk"¾§ÏÓ¥.x€}î·µ¹×;ÀþaS™Ow#Øßß®h\ö×cìk>âë׫,ªµñ}z-%¥[ópì´C=æâ}W†À¾‚µoâ¾ÞI1tåû’×}ÎF˜/yÙ×ðqñ™˜¯6˜?E Ïz_&ƒý݇í&]J`¯x¹äÜ<Ø+Ò¢­ƒ½™ò¾á°?Á±çaè°7äÙó´£ ó­èÝo¼ŸØþ?mŽ‚½Ö?•Ïì`„9ã” Ø?~öÆ´sëIk…æoH·w<šúÏî.9˜Saž ²±˜Ï÷f mÂp|¥yS}Ø¥…)_–ûmÈʨx7ØÇÞè­ÆÜKàn0û+³Cƒvÿp~›F£$jÁ^·†ý³1?æê©›W½YÀþd›áÎûr” é¿ï3"¥DØÿÄû2‡ž0¤}²ýð4~>$›¾ ¨ûWcÏ\’p_þ¬,Tã>?½¸yÏU+ÌÓmÛ{#]ñ¼Å‚Õk`/ôÑë¦ö̽ևÊÈ`ï§åk¯n „ÿÉ›—ì€8xKš$ÉIvvUì_lºÌäæFcÎÏ@Ž‹Ï-]ì‚ÆñÄdð¨Í`ü¤¿F·½Þq=øQ—É+ Ÿäó›PÁþó½|z‘Ì ñ•kÉÃ~ïÒ­â¾uØ7ZüÕb? ä©–ØÓË@ž|Uö2YÈlO㮿¹ „PÉñMÿ}L{ò´¢%¦õz<’$ O„ª;ä„ÁaC•âÆ¾¼Ô¥Ã¯ãI¶z:7dÞùñR7 £?ÞV}tQ ÙB àšÒNtcëO=©ú¬'£Þ*I{ Pœp.úõW€!j¸Æûyì•xf€óRrlgÅýr<ºßÙਓﮌX¿ý}Û¶É÷Áº©rîC ðÁ‹ng±Ï^jéÐH(=²t Dï÷œDòqx. y’« ¶Á²tG'@zÎ0SžbýøßYˆ5Õ­qö!6…kÏy]t%â$ƒ‡b&,?B‡8~š´Tz!#­æ+rx^µbìÆ•Äaþwýz>bYóû½Ã‡Œ³<ƒV b¿¸=Êp ¶SšèÌJb Q3\éDì‹Ïë§#^×ëÃ’‘>x´öE_ñpÕ¶¯Ôµ ÎÈb£üTÄÓsus¦"î¹sés¥¥ˆ+·s0¸Xw™tù5 +ì{+ÄÖÙñqÓbû[t~s™Õ:¥ýûKÄ^<™Ð¶î‡Ø¤yÅ›† ö_Pu£–±Ú~9älâÓ¼E7Ðÿñþ =|3±¼õ{ðNÉ ±ö_àŠMEœŠŽ^OrZïÄC¡8OÑ/¹ÿ¤Eë'ˆ¨-E¬‚ ‘F?eÛ–ó/{égûÐÉ¢]tˆå.åm¨6/âŒüÍê{1 ±ŸuKÞÇŠ8ˆÆHÙ/Ä>™U윅8r´ŸÔU«"ž§moM5ó{çÉ[ì}nˆëÌçH¯`YÄ9šJlâL@¬k¦FòÁá…âÏÍâYàP¼§ÿÛâ&|¬í»sb8Ü[Y‹e? ’Û‰bp¸]«);yÒÎu†f|‡×:‰ëݪàÐÐ!Î6_í\ªjgÀ¡Œíeæï}àðTüƒnÁs|¬^ª¡†ùTh)ÜÞ6 OÎ\»ª–{Æ%‰pØAç24a¦b[l…ÀÁ?ýFž 8lù¨î9 óJÞ¿6×l?¤Ð‚ׯ_Äño W_ꯇWöÞ;Á¡ÄåºfÎóšq]çp¸ëÿ<rïrNÝ ùq¿„HWÁáÊÓOõ.€ÃÞh¾Ì©pð`8ÐFc‡‡*+µž/À!çÍ4ÈûqÐÚ\?ìºX~©â: †[?Ä€ÃõOÔ 5pHÙxÜ«SŠãuD>ÿ´ë=—«?8d\½\ÂV|Ÿº™_4²sÅ"â;²s©ñ® ó]É_K·^Â|ºôøÈ‰€Îg÷ísË„˜˜#ü`w5ßðýì8æ’#Œ94Sw#ûÔ¯?Š"±_[þdÊ9Z Ðó+[?(`ìeØÀ>Ì%g¿OÉá}4°‰pþrbÑ£g ö£ ü©bò`Îß~ß¿¨àu˺g¢˜o=c;5°X<ûÀ& `ý–½ï‰x0÷’€û,˜g×–e¿aÿ|å«ùè1CÌͯ‡Äðñ@ªé‹/øX¬¢4såâ³§7ý~8\1tø"Êk7pÌw&ýÜÊ æ|eϯ̃y‡Ñk7¼þÀü23öË}–/´ÇÅPÉmÞÖYìù`NgzdÁê.Η?㟛 ÎëÜNc˜ÿ’au‚:Ïžyw –ä ‹ìh%\ÃØ“wøò¿ áxY¯ªØ¢Bp~í6­ÿ½w¸´ïêïäËÓÅÆlkæ97‹±¦×ñdò7úß×ú«"ÖMŽZQ-ˆåÛ«?äÌ-õ¾„7¥¹ˆís¹ëNÌ9”þ’çq*b?åO÷ø b}(çb`3ƒXi%ã ^ˆ%÷@n"¾Ïÿ¢‹§‡r»Œ£3ËõtÄ:cÝyá/bƒ±®$oÿ·Wê±-ˆËUa»Ù^Äu¬<ÛdyâÐ:ÒžFOAœ_%e·ó`îôÔ¡Í^ˆË%û6ióô¼gCçz)bó’$\ë†93oõ- sõWÛ4æÛ‰ûYqþÕ>A+Kˆ]dK›T¯bË®½Æ!…ùxìºý\ æûâÛWYÄÍGÔì}‹wÎçxJb¹ºy¯†§1b6f^c¶B‹šM(¬ˆÓ²îœ"W*âÒã8<|׫zÉ·H÷¿ß_Ó©d…v"Ö+» .IŠ"¶@Öˆ?8ƒX]‹4æ–hãsƒ-ˆM(âÍÛ ^ÄV¼?;ó1úÞ5\Ç]¹Ý’Õ£ˆóq͆ó4+b»m¨{ì€(â¸Xðé«(b_°¼vÝ&±x~ýÁð:¾þ÷æ“àÐvEé°æ\W„ÀQG|ÜRcÛ&ÉŸM¥5b=R;”X²ϯN;Õv뛦÷}ä±™ú’·[à58¬ýŽeÁçgèl¶Ã:𧉋$ Ï“äg©.‡_“LÛä´À¡™'jß¿xpp—íøÛ]‡Ý5è ÏÖ÷þW±î¼ühüîßkàख़Ðì÷½¼SŠÏû8885´x*fƒÃÑ zéã0v<ðnüƒó ²=ðHÃTªs%áÉ«D¼oq̆œ +8¼ëc7oÇújHÿî/Í৉ä#0×ý«Œ’Á!jø×™c˜Cn ì²ÄÛ7d=ˆ9ý¹§êÔ¤2ÞOroÊÌÓ lÙÌ­ÂþWþ)ü˜gKô“Ÿ|p?ªÚEÓqžåGöOR>ó s'07¿}Ù. Œ9þe°9gf ÆkwÛW3€Ã0‡IÉÌÿ‡_Ó¿°^ôˆ$éšáº¿ŒgOÁQp8`ô"+»ŽͽĈõrá–Öï¹Æ@öZ¨N9¨ä0ý#%%@¿PL‘¿¤•ÞUÊö[,ûU‹|Ò¼x¶†Y?]>Ý©ÿßç`ƒf$€tÚ~攦+†rµi—Î"M›½ËNÝ2-÷Q÷,¥ÆÜF-j±ï+§xª¤9`84€SÈ'Òš‹ €ôV7Wö­‡'<Ú W€ôRCÀ2¬ÈÏo}yÔ¦d­„;€¼E¼(ˆÂ c)ï·g@òÌ99pH®•Ýü^@6[¹ìî¤%+ŠÎÒ7 “m“ïŸÀÇß댜ªÒŒyt[ß= ¹=]Ú´ý«Õ_L Þ²ýÅå«is¸#&¤âø½ÃLا3ÊO5iÌøæƒŒ% _éе²ñàý¡& S…R´€¬ž¾ôïO÷Oh± Š)ã;5±©&ø ký. =I·Lû¤p“nû8×_òef@¦, x4©È:·:ØÈreÙ¬Q׬k¤T{—7f_‘6yÅ ûHöh™ ì/yfš‚Æ’X³R¢ÓDýù¦ÊW±í¼‘¡~ä#’Üâu°ˆ†}ØÏ®×ø°{Ïnÿ²¾‰ß¬õr `E’G´ïh>z€$»‚±ÜV®ÉX $B¨ôiH"âfT·~’²§[®f›Á£dâÈ’Ь°OE’ÃL"ûõ’ §oò CR¤#·iÂyHòbÏíN$I*в¿‹óЛ¹Ê¼ÁŠ$‚¹Ò^eàø‘ÿåÜFL:;f¤Bý^åHⓈLÔìŸ/…iœäÁy9[&]ÈBR !¦CƒHjúL‹À_:$^Í·ÿ¤Žç×â¦Ø×ç®(È6¦!É'[ÍÒÔ–éãóúØ×¯Íœ‘WEâg¦ßzâxâÞó³G‘ÄçÔ’ÛJ‘ø©;­#ñ–Hò¡µ”äz’°áÚctI² ïìD’µE7Ò?"‰‰ORßÖ )º‡Ò‹’x^jêh_#’L<ÝáIÆõº†:¼`Ä_LJK¾¤•ù¿÷Q¿*ǡӬº†øØÒŽùˆ8lô‹>ÖÆë,vÕÍØa}ÕŸ•°nz|äÈÈf:p(r¬üûë´®‚݉ ˜[޶-¢XG~¸ìÿ.uýîÍtÂ:ÏVó·9Ö‹ß¹<^ì/o©•$<ÆØ…ô-‚Ãà<©àÆvÌ™{W·bîýa£wP ªTùݵ qxÝTŒÓc̹†ÍJð¼ºõ*2‰à0ÙKˡ‘Ž-5â@å^Ê?‰9{Ïq]Kë²¢Ês˜°Îí?w¥§ëÌŽ:’ ^¿úž…ü sk¶¿;ó»¯$Ò¡Ú¨|çø•]ü7ÿ¯7@UkI;0t¨rÇØöÇ Ué°µìa¬Ÿ³Ô]MØÊæasú¹Ö‘â´x¿;õjÔ+~àÐÛx ­”ùèÿé=rƒ@y?Ϲr\Çœk¨-f^ u|sïØT†ïß.®mî…@®¸vtöK1|‹³QO€ä9%ÒÍäÏ •Vñö@úVuÐô£Ù_K¼Äv™4²rTQó7Op}9Š÷skÓ4²¾K󥺟˜gS×êåñýýuÒ>1ÈÖ¢ÅG–¶锈§ÏG"¥# p¼ÉUí@Ú8³é+ÿüd²+ó®‰áúëV̱M{ l^Gšâ:‹ç•¶%fy‡±­ØƒQ ¹¿ôæ´_Ò”ïQbaHŠLO¾nÉò$_Ÿ€žgûBtc»"»Ì¬ûô§ŒÌ ¬¤ãw½ÎÒ…G¨>Ë@š,÷;\dy-=M£Í˜ï?£®js™Ç˜8)dG«çÞB@Šõ/u¦ùéz]˜o >^ ÖçÒ›²&CÖ< …VÝ}‡û:ð݃/–söhÄqÔ¤Õ›wßí 2—ä±½Bé˜ÿ*–œ¥Hì__î…Ĕݬ+_"Ñ* ï†,$N /ïyGÁuÝQÍ<$n¶›ãaø$nþ7i&²‰¹½Ë,˜hA¢gÃÃG=f¨óÉïô:Hœ8Çôè˜,[û”ºˆè‡ë¦½·‘˜¬Q³ï(;öírÄ Ì¡³âE\3HâHš¢I ’p¥T-ŽG¥ñ¨$›@$qC¢"CÄËҜ٠ŠHRñ¤Íž9N$‘»[Ö®sŠÖ/#l‰ ìÛ}è把ï‘KHlž;î±=æq³•hIžGxù„ô¨"±Ö¬Üsk8®»¶Ìü”éµ<çy$ñ*»,ï¿/<Ëø]VDbfmÚoÿû÷G/¿Ç˜G¥ÇÆÚõs‘DGÓ3i0$6ºC' n‰½Jàéö$–°¡¼X…—û®tK—"±'GwÂuµ›|fÅ}í-Øn¡ÄIÖ‘b ÷ sTçÃóæ:S%4$‘¤šùõ©?$¾ÿ¹õ§O‘HbÄ·)ÕŽŠ$|Òé·† ёǂ¹¿Kzç/:êí«M”X ÞåŸ)ŒÁ÷}Ê.•€†L ¦Y|ß,ØÔˤbÿÀW@½&Å_rʨϿ¿- Œj…íÛËN@ý’3}ðé_ >;£ý²“ Ô‡Fùg¹u€šWÛU”²ÔÜ¥×\‘<@Í.¾¦üà>P5/oÑÊÉÁc­>e` PU¯†}ȳêþÒ¾Uý@Õõ¼7~øPØýYUݪÌÑo¶xÞÂ@ ¤ì¬LÝŽóöåê½ÍR¦Ú‡x’g^íÈÉBÜç+Ÿ`?\ÒHŸ˜Š8¼íÌÌc_­7Ÿðkâ Üï~“„çm º• —€8¿Ct“.â¸zôþ©]KˆKý盜!¼ïlSä'€xàt{ð‡Äq¨¶G¤ûã<­Ÿ‰Ñ}ˆËJ||ÃÏq‡®Ý7Äy½ÐÌÍGœ.§¥£q¼ŠøqÅYÄA[~êR‡û´Õ¡•¥~öù[[ÃŽa_J›böÖA쎅|wZB'wª¿›Î;rBƒûÑ(â8q‘×íz â ‘¼>܉8UXîÆ8Ss™âä#:Ä-ÅþžòCl3絿Fƒ#çŸÐGV†íöIàÈÃ?¸°doF×Á‘I«Î!¿¨9ÒAŸñý¹`_|õø!pÜ´æõr¿08jmNÊV/G½ãbaÌ à(½Å„o©v>§<ÔGM–í&à(Ö±v±MÙÈgbú¨jÉÇëæ¡ÿ„ˆþE ælŸøµiP›ße<Á}0Ü^!ÔÚbí«ËÇšÑÁò¼ëÌ,ÑŸ2¢î@í‹âHþúÙ#ÿæ§GŽ‚V)o:§p¨¶s'P'ÑNÄü[¸‡t}q]|OnovþÔq—[Ç0Ÿ‹ç(@­Vä¯ú Ôµ{Ñuå@]Q‘ZÚÿ×;ïL–<ù”ࢌó,Üddú7 ¯¿Îæõ¨#Ô×Á?™qŸÊÏ´‹Áûˆ¥´´MuLør˜Ÿ48²°g$\Æ}ØvÛç©Æ+k3ÝŽRûk®€£ÄÅ!žÄr >^1Wx‚ûbSluì3査g˜…îOðÅ7ø9²(g~ÆqˆR^÷½­s@t«UûQašÖþø)Ö íñS@˜yWZîÁþÏ‘ÎÆ€µ4æe¼'€ØèlÄëh¬»¬é6òWhöfR1øÄž+ìw¾q´Õ' áä#çc"†Ïïp{QþˆÇ«Ç‡ÑWô<7ˈžR{ó@D‡ Ûì 7¡£ž Äé5«ßÙd7IiýÍ¢%ß~ g:E%++?§êEŸÄÁ±q„ÇS¤oÊÃ@\-/Ÿ]ûï÷ºÄŸy¸ŽÝ 9ìÿ)ŸÊIB^¶2xR-¬À Ìyã­g(Ë-@$³ÖSÜ|8Krþf¡Òôðä7@lô¬{pˆ#z<¸Ä¾-§…3_všM¬þ³TÙ3r¸¨qJg¼ï×Éï¯È«ïW]:~«ØÛ¹r€› ÷—dãa¢0 ä…Ìo´S˜ëMãÎÃýÙzßéVÞ[ ºäÍyËq'wkr¥Îb¿]êüïçÔ‡„L/H”æ!¡‹­ÁÓS²HXpïýï©Hh"a§fn:zõÒçÎÛ4$T“µsë|Þ»gñ„"øÂg™ke†„dl Â,‘pßœª¬"Þüþómm<Ÿ5¸L?ƒ„¬²ËÅs‘oSüÁ\$Ü¡rÅ^l 7Ò§» HèåÁ´qÝA$(”e[ˆã7­¾òðöçàg>ú Ç©N™ÜÙ‡„µ?¬ßˆ¿„œK56«"Áõg¿ÆOô!Á?1ƒ#ût0»Fø?¼ÔèÈAñT$|­‹j.$‰„ “®+ð"áfÔE©A‰7£L“‘HFùºó•}Hèê?“ ÏaHÈñÆHVŽã:ê<—‚óßû7V㾞xíÛMÓƒHhuô©‚„¢[Ï­e=@Bqgõg³pžŒFo#¡K6_ʪðz¿[7˜l‘àð²¤×º(ZÞ}\ðX'ÖòiÁý“Pý¸¢æ„%*Þit%#!tÜ'.¥ §Ð΃ÖA$¬£&+5žŽ«D+ n[ãûñÿÞ#騲Z×èŽr ,YI1à¨À&¶ì‚yuŽwÎ@ E«ì¾ˆdƒ#?5m‹,åçG=û€£)Ùg9dw³·ˆ~Gˆ dî¨Å|+ê,£ƒU…†¿¼Ç-’éfw?áø|ÏM]1Ÿjw¿cYÂ:©ÖIþ—öÇsû Ôßcî$žw´ýÔOùÚôîuƧGÈO¨o Zùe”€ú6÷ëȳ=@ý½z‡ÝoÍ •ÿûž0Gò¦Û9ø¾rdxŸa˜3Œ}Í3KeàȽã\˜èp$š¾’çÀ‘žH±yu×w.ámÏNux©Ì—9ו|Õ—sp±ôq—o)æ¹B˜ª æ\½ÕŃxþÖ'?CvâøNLñ;qÞ £EÞRâà(ì_öIa+ÿéÆçÝÃŒo‚ãægzåK¢¸î^e· NàhmQ&-gÔ·mGRI•ªäK 6Ô¯ÐÜ©¸ß2—“Ž—áú|Òö®aZí´pû×yp¤Óc³Îf'ÿïóf÷TrVÁ,–‘m© fÜš[7Ÿy¦ËÓ ä`ÚÂF¹r=̾iY°ñ¾ã¶ÔÔf0½a-ÎCù fÏÈ?Ø: fÒ™Žs?ÀÌÔäUù >Îá}š f#@ñ§™·õ-Ë0KL›Ó9 fñ?´vx^ƒ~L‹˜UFHtÞÚf–Gf>FƒÆ ë`fë®t1Ìfî8Kg«á¼”ï}ÌF`Ú¤îtŸÌvTØìwâÀûY÷Ûšã8ιì>7ÁôFj› ˜Ž'WGoŠÓÏßëäˉL¹±‘fæ[øƒY'»òt,˜þU¸ z·L?Õª§^~¦K,ö¤¾`&VKµ ï³-l¾ f `F=4ýõ-˜íxuZÌÙ×¢ŸiiíþsÇ·é µž¡f˜®­½ßg: f›ŽÜZÏÓ‚Å#¦eœ`vÁþ.OLÎëY®ÑÕ£`ÚäYjQfûêª'„-Á4ä!'-®ÉÖý÷{Ât$û’þ±ó™T$û%hà­P’cîß’–eƒäøî&þ{É®­º¤vÉö”¨D²ÉççFìw ™]I¥t$°@Ú²‰Émùd3š¹ÉIÓE ó"Ù܆åÈj$û¢ß¥OÉ É>îöŒxÔä¼y,ûãù‡Ø»ŒÒp\t~½¯Û"ã]¨5…dûxS”wâ<Œޝ › ¹ ¬Í/–ð:š¾\eÀ$'rC<ÐÇëëy(cŒd¿¯³{7‰#9~³ýU Hîot°Ï ’Kì÷ÙúÉöÐ0D["9Ÿ‡'Vlðu¯êݧôÌ\ºçea ÞGÙ¦)ñ#Ùûf·ì:_#¹–oY³pýÞäõœHv`Ž%Oê3’ó<ßm‰×Ë~»é¨5’ã°–Ž?‰äR2¶üóGrìÊŠekóHîŒÉftÜ ÉÞdÉ5‹ä‚C”¤WÜ‘ÜéÄ éBÜHvBgÓ‰Gà˜\î}~¹ã>ÖV‡ˆãÅÎM‚éø¾9wŠoé(8†¤ü“úƒï÷Àg9_ÜÁ1ÔÊŠSô8FÿTÔš6ǧ'yNáuyuñúE àøˆùÁŽå p¼¾{°o´ïgŽø®z€ãål[üÓǤ¾V®X÷iyf PB0Ì _º£NœfýfÌ[7Þ³ R‹˜›œj¯†#u1s1pëP½›† ˜’ï›cvš‚£Ó•ÛüK§Á1å‰ñN<þ¯ªdG×®ýö®˜cÊÿ†K`Îx”|×¹0þI=1)z#„yYVþ³8îÖ]ø;‹õ©çŒ >7æØ1õŽÈýàiœ‘l…ãiFs‹§Ë€ãö^»ÞH\¿•ãêÄ3Ì±Ü ¹€Up \rM‹Gß*&ùyœ/­wÓwÌ»‹Ä†Aò[pLK“Š®Ç{mC-ûð±ÆÑCµøysãã¥è! pT,õ“¿Ža×Ëw:ã~ó(|úç!Õ×(v¦÷CX=€dd¯ÿ^ÌzÈÇ×ù¤Ò¦€lyÁ!×¶H?]&+ôïéyä›ëC@º"׳ïc'c6Ž~ð.òì©òØmø¼¨ýÔ;× çîtõYÄë&‡ç#¢4«~øÊig }ÿÇžûH¿¦ÿ 52Ãq¦Ëûô€ ©|ülcªa¢¤OtÁª«îÆÅî‰yôB©2÷¹ Keë*ÓÔ¬ýʪ_4Çù×68 äál?5 Û—|y<HÞwéZp©ûÍ—A…-@*Ô;jk˜ äMû*Yv)Ò§îbH.gìŽ<$¿ãw»O`ݦݓý”ï#&&×Ð9öà‹Ó¬@zP`¨}$Hü¼ºq~æ@ò÷ÝÁ{SÇeôÚ½÷©Ýžô¾zf&zÆN,©­¬XY-HÓ_Í.ii×mÏ/e@JtµWVR5ÜzE •Çù¤½Ê†Ì{¾âºx§Ç) ÅèH²r²©”òm¤ŸãqK•`öÒýÅá}GÃg HÌdÅéÎú åÚ8ñ»‰œôÝäç†ÄV~=x©‰HXÕPZ˜îí (¡\$ºKjןWùHt§08'—#1;åù‡xýÄúá1VH,õS@Ëd*4x¢á¯Ä¶.‹D¢zîãgÍ ±÷}\M’H¬ps\bj>‹Î;]e€×¹Ê]}&ˆÄžõ«µnÖDbqc;=*ßE7ä“™ŒÄÿˆv¤?HGb)á÷w#ñýú ‡)Hñk!$¾­µíÉaÒ|§"â *ädÛ¹„øî+ÊbÝ¿‡§hñý(âgQcHÿøÜ«:óYïÍG? ®Ô Þ!él× *âWìÌÒàÔAüò!iˆo¨­òƒq9â§ûdõíΧ‡JÞ|¤ñ¿¤”YüCü”ðZ c$ ß^ЀøI%z7迺éïÖRÄ¿ZžÝ`…‚X+_;™!Ikï{ž}HÀÇôfÎ#âW{¯.±ú ÜÜ}™ßÏÿѦ1ì‡ø—.Ü·Büܯ÷â;|t»NHâ_çLé&‰øMŽœ®ÍÀuøÃ±Ê”H$ ×ÇSªä‡”î??9Ÿ€ø w'˜”Z"*ãZ 3ÄŸj=f±Žëÿ*¼@7a‰øÆöxñ×™¤àÒ™‰ûÙÃæ®q.ñ%.84²F"þ'ƒpÝã Z•9ùˆß9ô£ÆùR$ Rù;Ö ñ¥ÍvÚ ‹ëQÌJ@óÝ—&Ÿi4ÙnÚÌC 3:ayó Ðîß)šÕ4×à&cæð»}u¾hÎé^¤[S@K¾þÍù4^Yhmcº ¢W7NÍï,»Š|)ÐBòÃÏ'$-àô¶k_K€vÈÅçÖ¡ Ñµ‹p~6À¼°& ´ö+ø»õyk iß $Å'ÃîÕ9K@S)‹åÇ?§Êù.¡~PÞ5hwYt›â´ض"™[Lf}t‰„9fÓz7óŽö;JIëЂƒ7÷ê?P³¼l~MHc·Ræ·Ì úïg;0·=^“¬;f‘¥¸üs˯9¯ û.çþ+71×…$=7Œšåχÿͤšq‡+Ð\>=<}?/=¿#’„yf¸¤¾TÅ‹óáÜK}f´(¯kVÊ/–øù¢ôëpÜŸo—4kÆ€vŽ¡«¯×ÁðTÀ÷­ÐŽ‹zå¤â:%VÒœÓÆLgy´þ5Ðì+N<ÙõLüãé;…Ú@2lIØ”’$ûW²µï¢€Ä×.ÆÞN³öµÏςك—m–/Ütdôxð¸<›lêûøÌÔKÈ—¹€älo¸Ý$HìÆÂ—v¶€Ù?rw°ÖMŒ{TÂâ/‰ÙmÄÞ;ÌVœgl4Ò+QºÏ‹@*ˆTRÉž5(L«ŸH5Z\‚,—±Ò*©º‚uӒƒÜX¯¥9…”â<7[¦¿e¤‡ï³_ï]Âî¸â`¶®'çpµH,™¯…Ù_õ˜I³8Ÿ²tûñþ$©C˜Á¬ël/ÇE¬ï„Ç{O‘8¼kûѤçy@àSpí$§l®¼Óf`ÖÜÑô´Ì“£ÜkIrQio®ë)ÿ§ÝÒØgœ0JÅuè ÎÙáëi6_…mÁlŠ×vÖ[ ÌBníDÝð|›¾›I3@¢-Ë´@²12Ý)/ФE´ÅF­´ÅÞr×:$Ý—²0[¡¤Ý˜Ü[ÊpÞ÷îoèà} Þ;I7Ä"™ª]~;ˆd•Ñù½7Ìøe¾ ^$•½çAŸO2¾Î~¿Å5 IǺhÝý’ŽdŽÙ[¹Ÿ`E2FEù:Ò5HªluY`ú#’^"›^íPDRçó›òŒ‘d×ä‹Ñ=€dìbûó6[#™Ã¼ŠCHf3GÙȾH–'•‘õ6’±ç»°ý®ÿ•ÿ¾øUc$•lâùÕ׊ÎÎ :HÚ<÷£° '’®ëÛvÓ;4CªpŸ¿1¥4Z<@RÕ¢}Ó}@ËýïÅwõ@{næÜ.´‡·T„í¾ácɽոq?$wî“!Ð2Š9ëõn-õðNe5|Ÿ^e'-0–­~±];š´ÑŠXÚ/ ÕÜùø\s¦X~²Oh¯%ÏÌÉÆñ¯Œžùœ ´{ÚY¬ËxUÙ5>ß×rñ1 ž˜º âŘ¢Y2§vàË>öø|Ðñô ¿f ™ŠgˆÇ Í*øã,Ö¡G7=xW‡9R±3¦/Vh•®Ý:{ sF3$¢ó(:j.úªÐ.õf®²Ú{Q߯ú˜keÍ^aÎÜh*؈Â<ÔÝ‚ã]œÉ=fÛ´P޲·žßöâ«¶æMpÖÈÅ_@;¶óFß[ ¡ïmÍvÚ©3±çÞèí Ç®Ÿ±x•¿ïê1·}7'HŸÄ|Îïè¨Å\®0ÌÖÿ÷maXðëÝšKέ @«£ÆQ7„ë)–ȬÅ}‰M¿0à4£{чža¾£ªåy®/\½µëË0ýï{|[†ÁTÖv5JnLí}«À”.ê„U» ˜Ü˜:üãC>˜œ«w0Š Óã¢Á—»À4Û†õôï`0Ñîî~¼L}¶Þè°»&K5ëþ/'ÁdqŸ¹˜´˜Œ¿¶9m &«O¶Ùåû‚É:ËZ¶E˜6îçxËù%$_&¼·I£ÉM o´¬ü›y£Q$ߣ’¿ó~’¿Ø?¦s•É71šwóy yQ㓟¿Õ“@;Éï8qœp3¢'Ý]í/tÁ‰E¦¢®ºœ6©UͼÇ:iië²F!8Ñyz´_hä•è˜?à¤/ai‹çéŸøFNgOJl'éÖÝ>2ëà$sÿØfp~­ÑñÈœO;žú¸hOMŸ•vlÁ< Hf¤çÚ+Ÿò¿±?îpÊvÛ‡ubÑÞ9×ṽo³Þ\Xfœb`Úc¦÷> ø¸›ìÕz œDøåÆâøb¼?ù€Ö{{^‚ónÄ#ä%ÖYSÒÞ—„$ÀITBaï­ ÌšQ¡Èf •öh Æ|n¾Û=sò=ÐÆ¶Û7×îÚ¬u¹â68ñ}?…vb}÷òtùÀ?Ì»7dy©à@û~µ5søc¿–þ$æì<«OæèÔŠÜ5 G.sSë\çáßµÖ¸Þ×Jo]'—;ÙÀIÖõ¸uœä >>JÃy>Œ•.Î2Á}Íùò„yy«ðÍu¬ƒKqýQ•ÀùœQZ%©9濟Ó# ;}º¿·oÈG6o¸Ybê%݃9 =è½ÔfÌ ¤+׿ _ýäcƒÝî;&\–J$í$«Sçyú­€|+ã¡`•k_Œ/Å™C§Ê2ÂHsUó™][´öÆ*›Ý HÓ£t”¥B ˜‹Ç¼Of±©oåÎm '~²öÓûä¹³ [:C€ûåçûS/ÐΓÛûåS[b?«²´F€“ïs Ÿw9×S\ ¤‘åÿ©ó›j{>7ÙŒ,<Òí Óc «sò–Øþ2«g[ÿÇW©J•²…EQið Ÿ.Ê];è¤åãÂ…Iv@Þ³¾Mú'Þîˆ}U夯òâT|=ªü‹­²ÞÞ 'áº|â™þû»G#Êò›ÏY@æÉR›ùÈÜÐ÷¿°¾{õZÒ\HïîQf¼äµeC×¼m *aù/ªùex¿ò…Ÿ<^Õ߀ÔH©)r\Ò‚Ë.<_¦Êmå£tûKö*ïF¢ÿûاQÓŒ>òb‰jŽOy+"Ñ-*w–­‘hTÁC‰Rc$úòŽxëi|žáÛW¡ÛŠHDtKÀºF)~Î ‰$ÍÜ<·TƒD}U›Xæ=Hyè}{„Dæ" ~ú!‘êð£M‘ðFON׸ èvûüµ‰8­ÒÑ×AÂÎùòEéúHø‹FáéˆT$Âá 1FšGÂ%ßÛK"Ñ“(/é s2ÀøG¢ÚÈaÓÙQ$Jf:\å…óÜú¯\Ó±‰ËÞHÉ)ÎGâõÏõ‘XÛ‘Þ€ŸyH~‹~y'ŠÄ¯dq }D¢—n_èàÎE"g5’g¾X"±{AÀ%Ž„ ºÌ–'#±Sì;%—èñØmg#‘äDß…A$ö”£r£¸‰ÍfgL+y 13+m>"qÓzóüwHÌ ½}ùM «¬*éùïï! —OÔlsC¢™äŸùX?ŠV\î¬Éy€DvNÏóÖGb ŒaoœŒ‘ØMŠCùHô ±xìÓb$¶§C³ÔZ‰¼/) ³Ð§ÛÿýZCœ2£Û²øJÁ顿Zh„8¥?3½§ËNœn²™àÿBüéÌÉ‹—ï«âë‰û=?œ§wiíÅÒåàTÙݬ֎ïëâHónCpz ó^³ð 8éÄFõàù¹‹ï/o«§Ú[öž'匾›‡à¤*ì9žÇÃ2ÌÿfÀÉv 0Šþ 8ižü©qz8Q.Ô„Š¼'É¢‡æ»<ÁIkó5prg¨Ýõä8%Oém»Žólóé+Âuœøl¹ûË8ùeݯN¡‚ ‘sàt/FäÃKÌuûmŸVã1wtû*–¸ÀiDZ¤ÆÕNp pj_ºeéú(8e÷dSnà>|P ËàôäWY6Yœrêœ{óñè0>þ×½eÌÃê/î'ËÝWÁI|oû“t5pÒaL»ŽK=6˜WKÿ}_Fÿ`+Ã÷ñ›‘œþG@~‘“Dm“²¬ÿõò*Å:ÒuKï¹*ífÄv ÏÒºz§€ôåm}• ä–Ë_Gùžáñ}nÍø~6bR²Sr„bÓÒµl Gm\xdðÈ»ð}˜¢ðªÿçÍ_x:ƒ$nJá#œÐ@ŸDηEÑHk œ_'þä”â§ì…ù‹@Øe…±”¹c›Q[Ä! d$ì÷6r-mÿ®Œ÷@®3éd­òë]ÇŽk¿rºçèlp/»-̬ٕ€ÜedKÀó³zE<¶Ó½z °æªd5äåêÀO@n}r†ÜšƒùÞA¸oòé×gf¯šÁºøÎñõW ?b1º£1ä¾·~¹Oˆ×äk*ë?Ÿ+•3òE?Ö;«@æb‚Zm̱g½^/ÿBÑR=¡4öþý K‡1×W«RÚ€~@×(ȆûÊ.äóD«‹ª Î@þ’k[Ç"…ŸJϲʾ#Ñèÿ¾€O‰úÑ}¿&Ò‚DTØžÿéƒDŸps §"Ñ’­ 17“Ù³é0g"O¾K·ÿˆD_sd4ð"áþwaµg1ÙŠÍo|ÆÜ õÛµ¦‰D>;É]˜‡Dn7\S¦"Q'zë—ûH©wW¤'é—Y{!™ŽDš2jô*“‘ÈMz¦ä>$Ñ ØsòŠXªÄ"‘ª4JÂü˜Of!)Ï 1¿f fÌ¡þÂm©¯‘Hžî¥¢á$rkºÐa×ÿ9q¦Œ "‰Ãei{m‰/htZè{!Q.fm÷\$®–éÛ³0$f^^={À ‰I ùz˜!ñ‘G;ì:‘ðöôãgš8‘˜Óã¹Ñ N$ÊÒÛÿ¾óûÖìËÖ©d$¾óÉýˆpN$žô,çSvç•ØtÝtÏ¥“nÂq¼óŒLø²˜™ßÞ×?0— jñÒ!шý¶k›ññ—ooƒ¯Íãç@-S„™(M6–p6Cbo¯V3`.®¶Èø~Db3çÙOê#Ñ…÷"ÁÕià4ôßçö‚ÓçOÎŽÜàÔ#dNÀºîgG÷ÓMêàÔ²pí'j§fõÛnÃîàÔèôIîÏ=púÔ¼²®•N³_ãdÁ>ÁO>œà´´c;8MN¹F°€ÓôÀø¾ Nã{ 雲À©;Å••vœ®Îö(ÎWã‘¶­Tœnjó¤ò*ƒSÙz,ÿVKpÊØF§ñs²àÅ…ƒç1W¦˜¨`îjpÀØ!pzÄêoøfœæ}¯gâüþRG &°®«]é?X‡~<½R_üœZ/Äq1 €Ójoõê7pzõ¡w×'ÌÙl×ô€Üà”çÓí§Œ×}ßÐ̧—){¸iz8ïrížÌÿM㇟c½–¶_>¸dœª¶}~ñœò»£L1ßÛW‡gbŽ·sÖï°çÅñ;~ N‹'ç‘+8-»šsŸ†}œ~—7åÃ>f¬m«`K~ù3Ú,8Ï[]Po§ai^éF pŠ(²ŠŸù€y.Nx&⾨åclºÃÿç&s »Gƒ±¿e  Û ¦Â.TúX0 :¸nÿûÔÀ£¥F/ìÀ”ßÛ¡þš˜R%‹I40aQ\e%kƒ© æVø¦ô"ü‘Ú0ùíË–ë|LÚbøœžÖaŸÉo7qLîóH¬<ûf{: ÿ3²Fb¡F=˜qÅ,¹+•ƒ™±¯ÛlÁ 0S8u}ÞÌ òA"˜~´Ñ·à ¦vvïÕ¯îÓÀþ ¯ãcéÖã²Ó`ê7<Ô¦Šým¼`Êñì%ŸßÓ´zeî%˜Ú$üÚ0RSÍ÷Åÿ¦3§êûþ¿Ìd Éœyîd¼\‹„$ wŒRI)*C„$4RI’$2„$ÒNÒ$ÉP¦¤!šdN¿ýþ|¿þÙsÎ>k¯µzìçy½êÞs[³€ÚQý'Àꭦ쫥A Šë”¸¿®#Ô½¯tæ'"õ½|é%7s:Sko°“ `ú©¯æk³’rCê›ëj"•‘ºµhëò5s¤>;)¡¯ˆ4Lßœ­Ú]ŠÏ/‹œsÇy[8ñ_;’„ÔMrãjÆ…‘Ƙ¹—Š+?Ò4IJ“‹”Aš2ß7»ÛÊ"õý·fs§¼FŒÖ×¼UQHCQÝYº£©Lº9Ο…4ÎEl¾ÊŽ@j§ÝUôiØö~¿§›‹Ô•ñ©F¥"uÒXô»y¤qUæÖºº#H£!jñˆ!}\×&œ‘FÏ’GØÒ¨<6—U iPƒ¹Ï¥r#õ†*’5H½˜LÕ^}x»ì÷[Ügg³ïWJ°?.ò)¾‘ƒ4¶¬‹\í„ú¿¹Û7žHƒ0æø»Äip^Ô«ù,)_Žb¹°O´_ Ñ€%ª;–Œ¨õçk…ÔÖ ýxÿÍÜʽàƒ÷1—GLËæ[öÊ¡D`Y³sÏ®ÖFy·:ñ `}àº,…ÉM„_`©‰§ÿpÖê“U†L/ÌÇwäwr˜KÏÕ'…ú×óe–G¹œæNÝüUåt`N]ˆ˜ÙƒyúÊåååsXÏ}}{:«íÖ‹}žaǯaýøcr© óæ“ì׋/pþ†mº¯–fðºþPÂ|šJ)˜8ù˜ëõÿ`®/¹ü2š» ,òw Q…cÀ^žljľ¾ãÂÝc»l€ùmý\û ¬ó~Ç2ïÏaÎ}ͺGôØ ,ñSŠ×e`={&%¤àÎ3bõæUxýÑ5—/á8}×Âlù·Ë°óñ`qýÚøè|>>}Ã0®_I¨‡8ç7av%‚,»5vt`YÆçšÂ}KŠ8¸ÛÇ¿÷j¯ ®C¦{çØY\ç>ä}˜Ÿ"µ˜óÃã"q:x'ÿ÷ý\= švì‘~À‡÷±V³ì?ÌC»lIÊí.°Ì{¤/¢–;ë¬jº½œÈ.iêË–Iž°hé®ç²¼ÔPõíÚh¨†æÆªr@U˱˙¯-¼æ`ù¼ylò%,¿¿{°œäV9ï¿<¡«Lžú3+ÁêiCÿFY°ê üÁ\Ü9uXÁr=Xý©ÝyÜŸV+ß|LÞu¨G/Ív•]×yÄE¨»T\kïbNz+–?™ðêþ¶ñ¹˜Û טe‹óH%Ì?ÊÇ<‹i Ûw¨Œ“f¬ #°R—m¶}Ö36¿_5lÔã°ý˜SsÏ][ÀòQaÌÂî+`ù!ôÛëË@ÍU?©L¾TÃݵî@Ý‹rËÞ_êÅÉ7¦aŠ@ÍØSï>Ôà?Ÿ“êÁ28èj”Ã$P­þ\lQ³jûš‡†26@}QþDø>~N¸]nœ“­+âÙSã P}û³ï+‘mÇx€šXøúL„3X¾ú1}8; ©…ý÷ª:¤¾Òéx£©Ut.E¾9‚Ô¦÷+̺þ´x sC±m’…;RkZ½Ç/Û©¹i„/¿sBjÖ>,à±æÊº]­Hí2ÇFdÚ©u§-|—ÉBj%¯,V,îDjÍj^ÂëZÁ€Pâa¤ÚºJòm©R}§s»©>‹ îÝÜŽT3žKMz¤"5®Œ¼CVHµ°óþ}þ&¤îæð¨çæfÀ½&‡W¾H-ß….ó¼ ©«iÛ#`^NüÒ¶ EêüçC$çú¯ã 8ÿ¥Hù÷^ µß‹›ÝC0G/Õ588⼯ kµ#5rÌZž7Kø¼ÙG‰t¤úSgãIRgéKF„b>«º\«¯Äy3ôËÛ—Ó‘zøÚô}Ü_‘zÖÉ…Ú}˜×Ï.mô:×I±îËÄÜòöxá¨×ŒÔφzmHm¼\¹®Î÷“ÙÔç†y-úÚ"2÷720$ô¨%R›©òØØŸ'í]-O"‘º™îû6¤î+šfÚœ‰Ôî¾ÝÖ©ÿ^;Ç‹•T`eE†ÿì(ÖI9×5‹{uA ÃÕ; X‡âfTJ?+©=©9ó¾î&›Yó X}ò½®x_ßæ~ˆùS)¥w•³ŸÏtü'ï¬ònµ)ágÀ:“þ)$X™‡Ê"Æ}€¥7£àr'®ÍÊK× "ÆsÖ{ßï›d<¸$É‘±³™>óÇ\ð;³[|žo../ ¬­òuÛøq¾Õ‚?¬Ö¹¸sËW+µíŽvžj9°X¦÷†W˜+(*pG®'ûí²/:Ž—v¯gù¹ò™Ã6ÌŸM•¶c˜G;Xf¯Ž+xâ‚Bp=®oÍ‹ØÍ?€EJU-œS-ýeª’°ÜVš?[),çÐõ?úºµ·ñÛº•-À 5±ùŠëÚ(Á½Is3uGΆÐ|œW¨c$ÖÃ…/EnÛ*ër'Kç+îwÞ Âåpß½™Kh;°’{ÇúNâçÃâ.Ü_ãóR›Æ½åBX¾ýßïÃþ÷§hßÞÇ„w-ÜÚsn+>>8ú¶ÿÑM°ÎçJ)åë~É–ëV?€v8{õú-ƒØo ŽÚµÅå>¿Ë@{½ò åhÒ¹{‚>@sp´_x´5§äSŒd&x9[Ïj•¾·t `…’ð®¬\ _ 2uÀ¦/6cÕ@(ÀªGn?å`Ó ’úkcTŠ~s{€ÍÞöŽøùy uïëµÛÁ´Ü o\w­Ëôpœª5ù¤3C&q1íí÷¶aßþÝù€h#b×»öglAñ…=ÐJ­ù/½›´–…ä!%€pÏ›|òöA§Sw,hvG®¾}ÌŸ…ZÓÔm QF Î(êm2+€õêК¿UéŠ àbÅmiÕ ˆv Цkú‹­qá+ײ0XwÞ|þì >.Ûœ¾ŠÞ6ŽGX?cfÁÆ>ê­ë»x =wuŽ_W 6©/켄}òãFîd}Sì÷K?ÑÐÚ+zGÁh\½_,Žz!¹ÿþöZ;’]b<œ…äþðr$›‘|þæ8µ/*H~oéGåÏ÷‚ÔžÈØuØÏ™\ÝwßÉ~j5— 9V§£) ÉÑ>.8Æ\ùL;õn+’×îZ %!¹x;$:ä…äÏ^=æªä–«B†x ±O,8<ÖLwtý&d·GíȲB²š=ôs*qHv¸MˆþAÉîxmÖ4ªä;XŸóó‘BHÁ&“+xÞ‚—ŒìvE$o;w‚t¹ É;ó¨¤\kFŠ•ÌÏAáH‰U믂”44Lo8ó"ù-b/ÔÒ‘â> ºè<ö©%ç“‘ò~}­M)žˆþkÒ†}sÑiÞ/§–|iÒ üs$¿‹Çà’“üùs}÷4RÜ®x/~•R¤ÇF•K …Û6%-'ÊñzÄxÄôA ½×ûéFÒHa¯¨óžK¯C©è3ÍBòª¥F£AHþh•p¢Œ ’«[µùã7ì»WhŽuR˜Ø·3„«)¬sºÞ²„¢ö… ù"ùW¢³ì,`‹vü,Yü lñwZŒåZ`‹<ÐÄ·ØóíS'§€Í6`œ ¬?óúå´ÝÀZ8þ°ö)°W¼´r¶®ê;å‹ãÀ6=0#áÉÂÇËkþ~û l…”ÂïV½ÀVs(3‰úìÕëß`žÀqÓ¿|žÑVÁ]²J X7Í«Äëññ[¥•â ÀzϺt0IX îÜo¾r«çÜ¢b~°ÎÏ4v`¿x+ÉÛSk°§þo’>°%~Äð1m€-yÓâϧY`[ÔÎÖ÷­‡/01‡ÿIÿýº…ØkEBÜiÖèI– æ^‹¾íõˆ‡Àzrò=¥iXcIkfFÊ€Õ‘“ªsJǃ5y¥Õ˜ãÜ“U{âõ èh[Î`}^##ƒõ\W`KÞA`ý=$/Päl®Ñk§Mß«Û1,Lå<°WÅ‹>Xý´Ž>r@¬ZuŸ'Åé€U7×YŠ+¨KG»ó3c°.áÛú7õ5X_’Þ’~¬ží"ï(Ã~¯ºoüWXë5ŽçbÎY=[W“]«V×]aáçN°JhYT:VþukŸÉÈè%{žX ´‹/3WÏ a~ÍG\Åú‘f_‘¤óÈ h‡¾ßäþ5 4WÕ£Ñt ¥¬‘Š8 ´µô½S¯ÛÀúPDÌQ•Ã`-q]Å^¬#þ©…rÿ÷þ€¾˜e·`m78š_Ák2—t ;XïÎY9VÖ·œÙM†ãó»Wõ„M¯Å+KõØèqäÌÔp\å÷ å¸þ›Û®^aa}ùó`ÿæoëÀêý*©¾¤A°>2Óì'JkÇÑ̳͛ÀÚ¸þѪh>ï%x5< ¬ƒ5G[ÀZÃ&i«#?XÝØ“eû¬}¦þFýü4õ~Ïôu`½l<¼¦¬ã£^Þ¦ý믕Û.kŽÊôŸ7›¶ºÿ›>Õ¬ÙùwÓÁjÃcHµÛÜuXWxì¡—ÀÇcÞ›‘šTðjboR-Žêø2Ý…Ô¬R|ds‘ê¬zôÙX×Ù˜lxH¥²0û_]Ri¥økó#ÕT…ò&S¤Z'ð1pëºílIú¶¤Úsáªý0RýòâÈ•©¤’îXœ›¬…TR?•W%I"•i–‰ö£.¤Òè]=*u qÓñU(©j¤TŒUÓj×É/š—çšfO|Í_?¤ònùõT€ R=¹­ ˆT…T•-}S+±Þ’ZºÓ÷(©»|ôãdÚò“’¶SHõì9uÏóíH]Lú'ùRmÏâ;r³©VÒ×︼„Ô>=ÈäF!åóMªXHu_ðî“ü H5VŽqàR5°™}>ˆõ[Àº¬7_‘ÚP†úÙE¬çªnl¯-DêkÜþMyžAjµÊGâ¾_kj[”ûYŸÌ­ÑˆTÉno½òêŽW£nºH¥7•2¢ŠûÉ\%ügRóSƒ¨=‡ê¯‚žHms}C·"R[û¤!ÖóÎí¿÷ÌÇ›ù0èþ6¼7½ù8èÇm2UšÀ¶Zt¹—޹V¡ëû4Ø–ârÿ^n¶Ñ,ë`H°ßP}רöÖú³ÓÇÂk:ß[ l¯í7ʾÛÿØÆ»Iw€íñ™ZyÝض#ôVšcÞŽØ¥üÃã»%Ƽïß“}ëpÜ`YÏS}ÀkœÊÚUlý­§ µ€5ñ~Ýæa6°¾ö/,[:`DéØ;›µ}®JûpE굜‡Á—ДòçÀ¦p‹N¸d+kZ€Σ]ô}ØÊOkZ`®­z/42KÁõÑÚ˜ U^ÏxEÞEÒ°ÑyÝ%°îžµçý Ô¿¼cKõÏä¶á0ìO nI;t¨w‚ö…û/5çuž»b=PÞŒ›ø›TÀ3Ÿ>®Ë“Ne¹Ùb`iSñ“´âX^{»N7=,Ï{j\ Ö˽“¤™`É©o²Çu*ŠmÙS –ƒÆ'ÊÀrÇjÑìGw¤(„u&ƒUŠ«Ò·K'•;÷¬SÀ¢Çe[@Ù°ø‹lÈd°XÞ.±Ê ,«»kölËÈU9Ýq¸o>ÏœÐg°¬â÷–ºí–á_Oåÿ€¥çÏñÒÃ+À"»¶ùÎȰ,¯þG«*}‘+øû!죋[vvË Ï¤K5¦*²Í0ä?XÆîŸú±c¨.×^ËËÃDU«4>°Ø²‹ÊECÿ}¥iE¿zi':Ž4UF‚wâ MúåË×ü3‘¦ñíÓEHó‰VHö;¤12ê¯ي瑞…õCj¿Éu5 xþË÷—Ù’H£íÄØP“;Ò˜ z7Š4žÎ¼|˜Ÿ4퟉q¬Ešúi(ØoÞ(9Øýó)çtÎXÒÔ^ºWxçSAˆU# ͳ½Ä^ɤ1Vº×WiM‰92=‘ÖF#Áû'k‘Æ‹ÌâÝ æÈ…`/¤1ðätà¯q¤ðx"I-i×|Í2HÑAÚ§oê°¨jH+¢f0”£†´mW¹ò§@Z.e‰ÊIiZú²¬Îd#íä%£w)H}¾@\ìÂ=¤ù*1ôIú3¤ùËÐËcê ÒÌ PÊÁqwu0Wv*"mkñ½Ã_ÖbÈ©›¼ø8/£s¥¬;ÒVÊóm>„ëœsýÔ6Í4³VGŠê~Bat×ô¤Ùä(!DCšk¿Ý[õæÓîäs4¤½öå•N8¯È´ÀU·ãVCÁ†Õ*_‘f¼G™ÿÇX`ÿþïwP°y&|«ð°ßÊî*Xö;£§6’ÀîN;M0Äׯ|ò»ýØm’û$°Ûoq9ñ Ø‹Ñ 'ÞâãÖŠžäPàð;œ,½óØ?…¬Œüñq¨ã«]sÀþ$¾YNs©Å„®÷J`Çf.‡½ÎöÑjåÅJ˜3ZCE˜«9_$ÞQ`ï]-pƌ쳯w5YÄ׃6†®ÄÛºÝeüO$°Ïk.júà¼_×—|HŽx“™¦ðQ`_lwed;¿ôí«[~À¾Q2ös½°;²ËuËß #Û΃ß7(طϺH¦Û[gW?°‰»ÖØ»2çøø¶°úüŸ*«)—ìïÃ`uºs¦Þj°zàε®™¨œOå…/€Úa%lÝiŠ9ñg¥¤Â=°ù¨¸Ñ¬þT•êÈÃtUî@[8U§ŠÇq[‘Ëh¬5Uî—-ìý+í¹ý@c\•š¿ûûʇ‹g5€õÛ#[}´°žÛ`ø&¬^Ë dæ‚5%z1+¬zí~N¼+ëw$XÁêã_…®Ÿ•`µ\s³Ë¬ ¬÷¨´Å³|Àj¾Y%!ðд/®¥z°‰PÕÒ}ý¬Þq¹d¯ê«õGTî|«ÃOßþ¬N¤­´Õk×Là¢?X‹xýMÆý™ïÔ4÷•ë­žVÁ’¦`Íó$4¤é XͨIêûŠÄøŽW`­|÷¡ô°žëkKfuÕ‰wÃe9`õ6³ÊþrXÜéÔöÀº[¡à—àä°î=QºØ§ÖJžß¤Ý:]£;!êŠãù5ÞK#NnGü‚R–SEW ².m3Ï)_¤¼×º£Ì+ ­å¹>tû»/ ÇÊÔ§‘’ÝBùP¤¸žnÊê`¡µÑÍ·«Ì‘bªŽj_ôR2ëÊ:ªƒ”¤<ÎgÜwAJ½’D^¤ôŠ9|s{öËDƒPEìEx{.ÝQDk-þ6 …g!%—Ýáöhí>õ½YÒHéyY“êwA¤BìP˜C*]‰µ–¯!¥0ëÊ0Rq=2¥fa”š¶¬5/GªY1{®ž“@j¢Œ½_6Ê"5^ɽÏÛÊýÑÛ µHõÑ2xô "•óOê;þ”"¥·R yeÓHµ¿Ñôê>åk·Ë­½}åÚÂRqN|ù"8­-;nqªš€T£ôv<¦9#U¯ùÊŒRUU¼v8g'RQövH@ª×wJPT]‘Šz³×eR6Z»MUÎÁ2)äÛæußc¿<»iMÓÚ2ÌõÍ=¡›£¤ö1S8RIg¨ìwÎ<¼Ï¼‚ï烧"Àaåqñ›âþè]¥œŽóÆ/ÞÀÙãÞ¥÷ëà§Ö°7Í8Úd_ÎÿÀÏ—ìÍ)•;q~g¢_æGä´ÙÆ'@{}¹ÚPŒ´k)çô˜¼@‹§m7öß´«æ‘²âéØm ø¼ÿ>X·Ä_Íšó󆓻^Íóáæu95`ìê}Òɨ•n*œØs@sú”ûi'Ð c£$è8žü¡e#_E ñMðuùֵޙ¥n»t,¾$…𑈫öö[~Þ6‹ ›xmÞÈö÷W] û ÞÓc?Øœ!¯¶ÅñPú«¸£L샣û£l°Ñæ;Ûá9Yö)3Üè ÐêEŸ°‰ž@»éÙ}¬hwvVØß›½ ÁöæW€ÖXÕ=cù€ëÜ~vè¸è/­ÆÀZ@n¬¨v¾=ÁKíÜpñ"æð¡Á¿÷ÁÆî7aë_ =+X>÷`7Ðò)üìÓ6<õÕy†¸ßø›ËíÆŽ[b>.Gú^ŽÚlÁùå°Ù?¬¿  6‘:³A©@ë?Èõ%lÒbŸ¼çúï~ÃÚ…E°9uiÇÎ^ =¼,k“ 4‘qƒûõÝhuæ/@r2]L‹…i$“{…‡ë™9’™då6+"’ÙßÏ ´Æû½GCÉðH}§K"+ÖÜ% i$}úI؆]\ØG&Z°SbÑj“…CÔšd´ú{ p9B«OÚtkÜÀó5óö¾Åcm3j_’Q×>—è„dVuuC²]›dîæQL—´DÒ $ߣ2íG@kªÔΨü0GrÅ>®vþHa¿»hGÎ=´ÆO!øáÀ $×m——ŒóV!NÔR-Ü;·š…”ž¾2©Š”ÌŸ{ÀhFr7c°NS ü’båïKÕ f˜ $ûÍòEde3R¢¿%”+¥£Õ•–·C— HÎõœÎhK’Ky±Ïɉ²LèûK ô/²‘bèáÈÖx/¤˜{àÏ[. RÚ¤RªßEAŠ¥Áï~[!9êñ¼úèd$ë5ðJ9LȽێ=*HV5&äD®Ÿ¤Ý€Š¹¯Ã}¿7w )œ3Ú.0‚×Ù´‡þš#…"Ò‚G‘’•l7¨¿vD×ßß÷€ãŸ2¥´„÷éæNQ­¿y˜gÆÅe€ãÔ¡¾±•œõ3¼c·ivéÐ2p6¾Ì8fnœDs·ÂwM°U稟»¾pb}®IÂ\ ºŸ÷Ï'Tøn©8>ú™÷÷Cç_9Í• É?חއgõõŸ–á8­cRsÇ€³a¡ùXÖG"!cZ7ÞdzS€Ã—?µ2·8Še´‹À1ü¾ºy…ëÚÐ"f.» 84µü2‡GÀñMqx{8Û¥*]lc¿”k œð6É*­DàœtW}¼Ÿ?=/ê’yœôÅ–¡GÎ9qƒ@¸kzOOâ>ÝX¹ÆÆ?_εþ;&ŠŸ;Sõè­p,{¨£—T€þ÷wíúB Æ†4”\ÔM5ywãP-¿ËW,é³:`yK_*Ù – ö,€*çèæ.‰}Ý »û|`ÁØjYnY Ty ž‚d^°üð7Òð-Xþü6.pB,¿Uxv´€eØV‘«¥}`º) ï¢?X ?_êx ÖÊÝäz¬³*2:ÞÅ:NÂï•^U ÖkçOèÿ÷½7×3?^:`¿µÓéãX¾Ûôƒêþ¨ãѾíeuóÉeõØg@Ýÿ|¢†YÔ {É‚ÞF|̱ÿ²ï1XùN#ZPOEÿ­–ÁúîYæÑ`oððDÊ? ú;‡¤•cùöîÜÉd Šÿ¾Ø\T›ù E`%ïsÒ4¨)WhvgÕk®vÐ:¨¹[‚#°/'5&šàó»m¦ð­Ë—>kõ2Z½Òž¶q¨ÅE“L-ÁŠþêúAP«D‡²Jq]zš´pþOd"5i`åí·{¬ ¨‘d?ŸÃunYx›[‚TyÎaÅׇԙ.¿&(H5µp[U.R½pëdüóP¤jtÒ^À1©q½hì³JBª3}®/Î!Õ¥TÿsgªÊúºËkNµ#¥¼GÛ·¶#•™aÁ/¢üHu«åžË2H•ä—'/ŽÇ=;ö|à;ƒTqk‰ 5þ«faÕ~8.5û“=R7ß`ýñER;b¸'¬­© %دr  µJW¡WÉùHÝÃð Gûè›uz§jŽ 5âäÍÖ4¤v¡$M­õRù×v¶ûBók’š‘fEI؉SHóˆ_ŠmHÝ×)¤Î‡iJ¼7å;ÅÔçšÜ›÷»#õ2+>ñ{¿ð}¥Ì°a1Ìï[² ™¸?Úl‘R·X|,×b„Ô>×]>žŽã²<ÇèHcÖPô iŠôë:j…4½ÚŸ;xý@š«ãÌͱTûÓ~a¦ ©K¿³ù×…T97óŽ» 5ê%Éä-R™J?ü÷}¬Fl†‘F@kÈ$ñ Rײ¢M#’ã1¯jAëÞ7=˜sþ{í(æOþhÜJM!à”ýóy]> œ»Éþ÷sõ@øPÀ p.ÎÜØ¹뫌î-žö˜c'sØ;0ÿ^s}O?v¶v¦3N»[S€óĬ=û{ pZþ(]ŠÃxð{»r5Ö_å±ÅÚaxÞnNvAäyàøx3ú 8Þ%7 Ç×'Žâº{N8;¼C/Ëày)ë»ç—¼°NZ÷þ_4æ†í÷D+Eàöúëóß×m¹ÝGn8£O»‡÷a%i›-`ÝzÚUm¸·8ç'ê/ø:çY´*-Ë8®÷~J¤b.»LzËb®ìk-Å}Hœß™Šuix´Jú2ηÎÜ:úÖi¾i‚^øzŸÜU[Ì×C37=ú0O)íu2XgfYÍwóaýv…R±§ì6p‚yßÛœ‡™ç8¼¿óØìLj æß²Œù®›ë€3,üí^*pfjs¶‰aÎê^ÿA‘NÅÇ}+×ãç'ï×ÌÂiàXêsÒÁú0W¿ÏñXô}t¬Ž‹¿3Z.9×À¢ÀK;+®,ª6«ßY æÖºÆ‚`Áe™}¿Å ,üoN}= -6õ¿„kÀÜáÎÈM¥Ç`ÒòóÒ"$ƒEœ¦zøG°ð zúpX„ï1ÁúÙb×&³Ô`Þe¢þ­¢¨WÖt<Ôm‚WkéõRˆ2•)Ô³Âzj”& f+•دY Ôw:|O%eKçÅ1:X1 ?/¤úõcÚŠ²H5À+Å“¾©§y÷\d« õÝ«trhæH]+xmé¹:¤ùiÈ%¾©Þy^Qy¢óï³äÒü¥¬$#ÿ¤çYö¹ÚµL÷ =Àþøe{<Ö'"”µî¾€#”™3ºŒu ïaEÀÙõáîÍ›xŸÛ¬‰ÛUÄ…uáú‰©Þj¼oùãú»ç±^;û¥ÀëB3ÊmsŽ?ö‘éóÚCqÀ~#²ZO²Øí¢'>ûìAì¯÷â¸ï[ºdý‰¼ùKo0ö¹›û]žöcŽÓTp:°ï³JuÅÅÝí÷Ü=À ë¾ìž]lp¨ÚÉûNû{õÎè¾Ï¯yür°—çÃùwc]æl*þî°GÿU¹{Â\»ô6æ!µþ¯ì/¿ŸvØüˆŠýå9vÍÖ]†aί=×Éo¬úÉvÿîØª¾AìÏ e_L«àó»uoÆñw®ßÝ·çmì¼…_û⺒ç$PæÛŒy¹Ï€ù•çßÍ‚ÙuN†¥Óš«žl­Q0u¿PÐ\×f+÷Ôg=ÃëÞ€6 ç=èÁ'ˆ`úêiÒºc/p}ꇪÀl«íƒÓíN`:æd±­í˜-.t’si`atâfOÁ<˜ÞÍOúš‚ë]>‰¹l|Ã½ä’ ˜žˆŠ?•fažK:Ý0]ØïÎe ‚ãï H™3Éé…êq`¶¦‰û>Ì€io…^n˜®½ò^ʧ̈‡–Ãy;À,ûHÁÛÌö¼OR:…óœ¸ù¡Y9ÌâÝš7éȃéhIk“§˜Ýõ9›–¦Å-u£ þ`Ê_ñµj­ ÒþïµØUÊHÛ0d}»f ÒY%˜Ý6uig¸/å‘AZO/œó‘@Ú]A·Š½«vïôûýk‘v¶~ÒsÔ€4]7ÆÞBêÇßÿHôGZãÝ‚.¤½îpàt#ÒæÛb$ÿ±i»¯oòAÚ[.½ìHW¼t]àh,ÒYøÉcñ£ éTìXðrLGºÍë÷Iº"Wœµ»¤‘îfiªáÒÍÛ)S컄tÇ´•^d!ñþ~½ýUHgàqÀÓZHÇúq1Eé-\šÌ¬Ez‹«ý›—¾"½¯ú¿7( í¿C—´2‘Þ¿”ë¼ËH÷Ǝ¤÷ò+¹éù8žæÊE:&ˆ’íËHçñJ÷=yHDZ|ç•-‡ŽÑ·æíÑ©H¯\ˆ—«È éµ÷d% K ½¯tÖ·Ý@z³V.hǹíÔuyР餹^“HÉA:Ãf°µ÷uLÈÔÈ>é„(–ËÝDHûíê§ßrœîß“ªÛîè†Çñ3H·6}¡#®én˜Tù4ŒtlôÈrKÃÀ^ü¿ï}²Û\M¼v·{lhÉ{Ép2çÞ$°?ŒÖ.‹`}Þ£zÆ/Øou ¬Sñþß}iË3%Ì»þø34̃%¹îôKáÀQ»]v,÷ö¯û6ðÝÄû]dàÆQA ìçt:f"€ýëeàùM À¾\wÅÇÏK »kâý]ö+o¸ß ÇŸ>÷7P Ø·¾mþ—Å…‰nV`ŸOì>üÕØñu_Òº€®WqØØóŽ6wðzeÍÊ€]ü¦)>Œìó€9ëcÀ®Iì‘‹ŽjJÞÌœgAQú® ìò±òê;+ñ¼ô.Òßr`—¨º.¼¹‡×yœ?Ÿ´ì¯Ï³MO›à<‰¼œÚ ìÂŒÆuS8K±¾¤O`Ÿò™ÕYùsx M3þ°hÜ6ö9鉛åUÀ?(m¶|×/îÞŒýù•“²†x\Þ/yÝ󿨟›•‚ã|º¸”pØ“žÎ;°³.è¾.Åœ=vKìk~>4Pç‹s€ò7ôÚ;a˜(}—ûr÷:P ×dXk%%RæÁš <½gæË<ïwfPð=P2ŽŸÎï©Êæµ’¼R@r{)-æ $ ¢mÿðy–³2!íPœ†nò7GáãSé–3@¡7¦ÿ›®rÍB…ëñ¯`¦mxMÅ)Ìäw4»ÖÓóÓbqÞ`Ús÷“ÕJÌ_sËÏÜ®˜/s;ô„ÊÁäsë£Üå@yrW¼ùß PĦ©«ºƒ‰oüëÓÛH`bóbs¼¶˜¬~¶òå#Púê|‰ÀDˡ̡"LdÓêFì4Á„¤Z- ¦W'næùækôT´¾ ¥÷$Ÿø§f íþpEQ(ö ëF\Gû÷ÏEE`²ÿm]Æ60ÑzSó~ L$˜á7É=`²gÜï]+˜W,ÇXÉ FÀÖR. ¬^èúÚ( &+¹_¼Ø¦Âä‰mN*`rzFde”3îwÌíLî·Ë—¬"ƒ‰‚µüúç÷ÀdD¡úÕy <¬OÌÇÏÒNQ…¸r¤[ÿß÷ø1OÜ6­ÉlDºY‘Å̲H÷ð¼ï+g¤+ÜûÒò_ÒÝ÷Bœ@´Dº?^Æiù`®œ1:&Í«´¥ön(Ø¿€tr¤£kN†bž¹¦¯}ç…ã–lv1Æœ"Ç î NEº²ßyDÈ#]׉ƒŸµ¿!}s­üד‚Hß u}£@ ÒÛú*vZPé+r•¤!½¨®WE<‘¾Mu¶Ä_¤÷óˆé‰éCH?ê…wPs(Ò Œåëm~‹ôH©Gº07*‚~'\ä;úgQYÌácÚ¾#:¤»hyÿ÷ìÒxêvdfégé]pµ BzƒRÞ½ÍHÿ Ñè4Ò»£sÒõõ!`ëaY>Šy¦ãëk±€õ‡øÂÝÃ#_€­»f°¢ä¿Ïo|m¿û Øb{ÄñÈ•af kì•mgæ€í#XJºŽyà¸.”a l糕;N_¶uzþ›¿?MíHÚ™ŽGïM#»Ï[JßP*/X­èðgQ'`½Jc<¯ ¬;^OÄüà;sù`ó)`}®ÜúNëªßoŒ|ÖNóе#À*Rm ×Ù«¾cæøÌÕÞv e°iYÑwX‡q¼ØÏ®ùøúûóz<W€5x´ÿ³P-°]‹~ZW«¥æ±ƒ…°¬¶½|+¬éFMõð}ÿ ˜ëþ•Ã-›pžÞŸªÀó7wñŸëÖÛ}äôãvÀjè³ ¬ê \_¶Xà¼%ˆ»˜IÀú¢+0ˆï/¨"‰Ÿ'’C ²æÀ¶<ëd½Œû²ûÞ¸z7°.KÿùŒ9ï|íí Ó“Àj(î,¼‹9'ÓÈï`…ëú'üÝk X×¶¥ó2ÙÀš/¹ãñ)È»þ{Ÿ¥î”m¨t2ð.áROD®ƒŽäD{ni+Òö§+YE}ÌÈ´ÈçסQ¾Y¥X8HÊq²NT*ïˆiþCa˜ß$•œM>¤"|Ê I@Jï6Ò^x &Ç}3Æ_‡ƒIôÁòõ@©Z`go±žËfœ€RgÞÓ;÷L¨!G{30‡\¶ÕŸ©¥ÙSh· ¬²òÞ6šÒ ¿T|Îõr È•oNù¨äôųk§¼u[ð 3TVÕå9KOõã¤%o…Ý]ÏÅʡٯÞg+Àt•W„·8÷ܖ앲ðSfŽo-¥ƒ 7p€TvT%ûŽ?/7vfÅVùb[¯PÃ* 'ÜýäP4äþøu,ƒE Ÿugþ÷½Lòé³ {Bt~MrHÛ ÛëQ©‘Êþoyò–¡@›ú:s È~¶è¡@nW¹0”1äS“±å>¸N»Ê±ŽCø¾§Z ›ôãÔú‰¼*Ì¡^™zËH»]^À lét_q \S„t¯>«ME:,ê nJ!ÒI1w«¬ÔAºÌM‚Ï‹]žÖÞÃ.nHÓ·ðЄÈN¤2šÑd€tžup‡j!Ý ›ºŠBT޳ —‹"B:§&*»4ÎíîÖQ¾<¤;vÂ=-éNÚo‹jšBº¹ñŠN>V˜3‡Ó_ýNÆz§nöâ é5 Oœ®Cz²­Ä^ÌU=²ì¹ïùH×–Ÿ;Ç sõ)gÛ6y¤S%×›k¶€ôzMÏÍYä }êØþÁf<*ªßªÀuíu÷HáBú~Ù+ç¿áü×ý –+BëÜE¯6ù"½'+´Q\®T-ÜjFz"áÇŸžÇuk>^åå‰õ§õ›±GXß…ïw ¤7µ²pçWnò3Í—…ô ;Uda½ù†ëà8îkìÁV¤û¢Áp1Ûé)ÒŸµh ÝK¦~;]_ ];‰ô¿Hï\îNC„ù‡ÆgÈqHw~œ¯'ê?z°¾$ é½ÿëôøB°Wý÷Ø_˜o¿—÷¿ë6÷ÛˆúÕ—ð¸ï¢Ä`}{À]T ¬o%ú•7kxv Oò+°^^?íŠy#}8û÷o¬ãö};Ûl®wŒ"¼¯eÏnzƒ÷ó™Ç濦0';‹üVa8z7à/æƒõõÃÿ~á}q¥ˆEÀñEÕ]2ð}Ræâûù5&—¹&ÒX–©ŠõD`LÉÖs"·ië\Ð*`צ4 ’€½zñUú Ø~·°˘S·gÏnœÄù½‰6òÍÖÐÞ?E»±¥)÷>%©«ë@°­¬7æ”@ñûV`M$LÖµoµ•âºñ’Ï8æMû¶›—U±cxåæå3vZoú Ìßv9sìËX•·%cpüÕ5ü\‰ÀêÙ¨s*s³¼?vÍÍJ` »*W>¶æú؆’ `ƒþ>!‹<`›ÊÍ;Û$4Q³×yw뎈–õ¸ß*ÏXBé˜ë×v ¤û+tÄ#ÿ~ >w ŒÿûØòåÛ`dÑq߆B0šÌ¸ÿwYž¾ èp ®P8"ÃC^ióo`Ôñi¹Wý"÷EØ:Zí}=õ>âø L Å>‰}Fg’h¹ö`.£sFŒ¤<êê“ ÀÈì;ŸÄË<0¼»Ûí#Û®|®ÕÁÜlBGâ\ð½=Â;‰DWÁ—u7€ðkõb_°à ²,;6!).çl!Ó֖ЮTQgPAFx<ød€ñT’—þQ0Îxy«¯ŒÙyZ³Ç~‚ñ‘ò»ׂqÉŠ¦…ãÕ`ָܵIî/ TÖ‹Þå$ûg›ŽUñz¡…Ú)I0º¯6¾Zâ+®[ñ5" ýùTÖmÆÌ†S—Á¸Î½ø`ç-0>Î#×€ ö߿׌/å ŸÈ㳣ߴ…Áð¶X„ÇŒ–f—ÞZ %O¬=€à’`Q~¡ ŒmµÎz_ïOµ«ªn`œyKºæÎ2¢È»û ÁXÌ1]q2Œèå:I‡ÁñûåjCd4ív ûy2~Z»á°"h¶½èSOFÆ}m-o ã«/VÜÉBž¾ Þß¡AKz§†?2xÊmÑl!ŒØ_öV­“E¸K!‚SÞ†nÖ3d|zŠe™‡ãp‚‚Í«püß¼ñË…‰ˆ°çq‚¬X&"ì,þ©Z‚^^\ÛA@¿ÛÞŒZ"œ«Û[(ˆ¿C‚Æ;¡à0+1VêÌg,y"‚ªçÀÄ™*œÿV¾2þÚbð¸V^m~^ô4¹/GZŸÈFDþá¾äOˆÀ¿;yÇjDúS"S‹ù Ù§«±Yôsµç"¼¶®™Üë‡Ò¹Ù]üÙˆY%~H€k¤¿NòkEÆÝײ%ž!BiãTä\+"ô…]jŠÌG„*ÒÝ·z¦ˆ0ïòÛó´",5—’Í ]:"?r ×±`uôÏ "”/Û·_ðE…oÛ qÿ\ξTJG„”ÂoqÅ-«NeEDH[—놈Z~‘zz¼ˆðx¯ZsÛ°Úþû=€¬_L^ÒÖg`¡u*Œ;󃞗ØÓ ¬üÔé-­.ÀÊ‘1Ø}X™ ,ÇCÀJ•^;V‚9ÖÀÌSø¬Ëé)×k4ðÁšòç˜/ÿ$w¼{¬Î-FŽî˜w¯( ûdk€u.f†V»X;d[_ùk[%q™þXYrã2¯¿ ]¼¢&'¬‹ÏW—p>b.ËíP@¾'°lìë%Wl–e»yh°jFª¥8-˜Ïs*51bìÀÞ ,¿‡'wþ¸¬pÒ&‘wòÀúñíA¿°vÿ0Q¾‰óOûg5ºsæâ•Žx½-Å3›c½F~¡yö®;êünn¬÷<ß”7¨Íaõ«÷ãøñû*lßkýYG•WöÀÚÿ—•À+ ¬àæèaœgðcì?Yµ¦IiX'~ä»xTëÁ…öÇß;±~Þóœë2^ç?å‘ ÎÓsÖ,Jt×q0­àÏ`¹ûÙkµ±9ó‹‰%î±ÞWg%þûõ'­q0rL=÷dÆ ŒDLE¤×ƒQ‰øZ¾in0”ü(:^ ŸžÍsY‚ñ&jã¿Õ`ü(K!ߨ ô¢o< Ûò ”¦\ÚÀ¨å‚àÇMq`”3ÝS£É†% ­1:zu‰í–`Øœ¹ßOâu¥^eìÝ DõŠGWÄa6æµÓE_ ®úZÛ½*#üáï£xÖd—Ä^ 0Ï$ÃÃÁÈÅ)q«Ð2e?\¾ÖrŒ*öŽzœã›ÙZ:¿ñù­Å‡ÍÍ ÀȦòÚW¯i0 m”ÌüÆ«cžìç᣺°ûfr€°ÙÎvÂ;Q90üíß%˜rŒÎ‹_í(Áùz ;CÅs«ÉÏÀ˜£tÀg5EÏOî8 F¹2ŽgEúÀxUaߥë$0:» i±e`4öUÔüW1šê&óÌ ‚±›zü–”Û˜{Ì,Áç~@ÐÎãÖøZ‡çwFy·Êb=b,¥ë5¡/a«°~Y¬ã>!{ØäGF;°|H‰z…u‘Šƒùæái¹£·ãyóÖ´â`ozÿtsâã ßË~ØÏÆ2ÆC±ß5>ñáe@&°I _î[IË”ÜtX“ò—ËÝĺèß®d¼^é…¹™•1ÀzMY[ƒý5·Ï³™ÖQ²ÓCM˜#3'Î|‡¹è¿Ã& ó&²˜Üb~Xºl¸®S°®ZÙŸ—xØæ!ù¼°¼d1yÑ!X…_ÂZB0¯o­ÙŸñtûøš „˜§yÔUM˜çOõÞWbö=›Ö~X!|Hò-ξ«YB¼êäÉf0Qî_9~Qˆ›Ú›ODÜbï!Þ£¶Ë@<¾šŸË$ ×¶ý³’Ìɇ-…X§úü³Í<|ˆyY£ÿÎq)aGQeîÏ| õ‡Îÿµ‹¢~©Åu$Ó3Œ‰ @V™Î¾È¤+ÍëÓ±®_ ø= HïÆJ>ß’T³tÜÏ@jØfÖ<¤•ÙnGœ1—«íƒf>!ŠE?æPËÞZ–d;¢piéG–"Êšç*£,DþØð`Óí,Dn67 =€(›7½ß½¤‚(÷lÇâ’Bé÷Ùs£†ç9w5è§¢CLúîq#ŠYaüµ¶BDþשwí-"?­Lîÿ("æÃe‚åzì~ßøiD¹Õxý¾æOL›j¯¢œbGF Êþ@Ç?qQˆÒù{B"¨QJx“kåY)·ýõ9Dñ©´ÛÇtA§ÛWÔóD…;WÀ½¹Q~Øw¬é-2‘”kpFÈD³µëA÷6D1>•Ù½)QòœEÍð(³¶PI™‘´9{ü¢<ÒÉñNÎEKgñå<;¼¾Ä~rô/Dî1~eã(«f_®Åë6¼®æšB”ŽÝ3óC5ˆr_nó½F|þïdÏËÃo¥Ÿc$Û†(9æ+÷ýèÂy~ï^*lB”Já³/pœó =9ˆâ¨\ð;Qú(Ûl6Ù#ÊÂZ5µEˆr1ðæL:®ûí•aqDi|ÂJ'c¾¸þßûËY„ÂsŒòÛÀRSp¹â¹´9~Ýg)¼å?~¸zÿ$°D•(s>{%½I?!ô°´_—…­Ä¢I¤.?æräÂOX—m+?ösùF?ɽXÞ©j–‡±ï¤)~”hΖHÏ‘ÞFÀ|æÂ¾¦õ’G'®æMÕÍ™ŽÀÒxë¾C|0—4ß rc$9b™°˜ÌÆýÐ]ÑÀÌm!; ijI°ïˆæ¢î/åh_wû¬Ùö “À¬éÖŽÊÄ×ø7¼Ëf+ÃüãÚÀrvñ˜«åÇ×W‡dfsäÔÑCë€ù“°sñ~)0oöä×N5Nó¬Äú“gÉä{ú'`>§_ߥ4Ì7¤­ Ì¢@æùÝ™À̸®x«˜¯2“[V½æãµ\[²¯³ )­­sRþ“¸Š,c¥_ÜOÇÁ7OÞbžnjÑb}Æ}Dº¡ÀìÛ/êÓYÌI¿+…yŸ;4 çy­%dÛ/0ÿÎžãæ²d•Jó¥b æF(¿¸œ„}ŸË›MÇydsüÝ9@t*ü ºDŠÞ¾'¦x2“¯ìÅÜxêÁL #áý`¢„ÇU«1äox@Ü]H+~[ÚÍþ’è¦Çk&‹ø:l{?1c`ð’$Y­½ü"˜[Ò%¬î(1ø–ó¯mE@š”¡ˆ“ðo‚%›€˜ßè\Øå ¤ø9RY‚=Ž—(ú¡‘kÓ†û©˜_!nD0÷ààÙ7˜ßznw^>€9¿­:"ƒÄŠÁk–³˜{Ÿ²´Æg×Q‰q¤W ÄáÀo—Ú1çU2¯{¹÷Z|Íuì¯y.ývu=¤02M- sÏàðt¿aþ¹¤ñóA……hÌÅOsŸ @DÉÿûÜ2‘ÿjNÇäDx“Rx«±… \°Ï|ÿÄVÖÍ nT¼T솈µ¶¹ û°¤åkV`ŸçJ8õóœ<",Î…‘T²QêQi~G¹æb_¼|cÛ­X.Dh÷Ês?³ ûÃK!¾gåñÒëíïðúW–ª$ÃÑqqÝ~>"†„Ä\9G@ÄMQê›å|1“gºsËjÄ?Ž#âãÃñZÒåˆhÿür` ?"Ú=¹~%š ‰åÒW¾Eľ¬EÍ:Dâ½záÑDœ qþcQˆˆä¼òéÓ8îàx„A>"×Í~zªˆHjY••5­ˆøÜQe¼ÕœVŸ|ˆͪÄ1܇í/LàcþsÅǾáã—_‹ye¾!â€Ý»öp|\}¸ Á¶ÿúz({BWÈ%"DŒ:´{GF"Ò‡¥~ã~ž)6³<ˆaé³ 9ˆHã|:Ò~ëk^ß«D"¶ÊLÙ脈g3#ÿXðâ8W ã—–1cÓÚ§½N˜7D­±ˆÿÞÿöbçñøÀzY9ìÖˆ÷¹å_Ú`¾=!ûüZ=æ‡C´Q0; [ЋÝÀ|ýLÈclÏû WysëýúÒÚØÏ)Z’Ó,"€µò]÷>^¼l'bÌÙk ægÙ=vÀÇÆ˜‘Gíå§M€7”v>˜9K]·‚·áuvùÚ½f‰êcÛñÓÀlq®2èæîÈÉÀ<ÒŸ;­(Ëæ‰ý÷d„0¯fÄNÿ°Ú,¹’y`u‹½?~˜©ß[°ñzçü/Í.ê‹ûDëµ…^`†})kœæ…· -<[YvÖ~™3‚ï‹6=º· ˜Ç.Œ¿ÿÍfûˆ“Ÿv0Ÿ´+w楎stñýár_¶5Óç»þÛ¤+ÀL+q¼±IsðmGñ‘Q`;S]82¸›wïM|Ì]œ-€%”¦˜êñs¬téÓ“MÀ’hÒyj²˜@Ø•4œ†¹¾FöPÉz`iý’–ÂÛFôÛDRy}œû{D$PÊŽ+ßÛ2ä¿ü×aŸHѵ¬°Jx ‘$¡¿]@Þe¿Ø/dÓ„¿×ʲÿÎn¤¯”«KKÇ‹0´ò| ¨Ù§ä½ÅY ¨v›û åÅ,÷¸]y/E)H€|Å|©uX ÈÍúßNW€IÅ^ûZ%i0)ýã7#£&§$ ‹F2Á$ÁâìÛ~[0ÙÜ·ÂJ L¾ªF½Éʇ©®Ž_@Y±SD+N(þqÅ{â€B&+iþi »¡g]È .уobnÖL­¶î-Àu©r“vãºTkt«óLü^·êµ=(·ƒµ™Á›Àt)KY+@ÈߥÍ^‰ìJÿð  ßÜjÒBÌÒü·O×õ €Âç°ªãrÙ¦¦Ÿ'Ëqmÿ]äXWà„Ð~ ÿ”pÒ=)  ÙØžq ¯qùîüQ È¿2æ÷^Êy¹‚-7qß2³²vlЊðзë[ò¼˜Ô¯ÜœO÷:\?oÚçw­þ@ᢖÒ^E¨-ËdéÞ¯ÿýÁûë5}CÒ…\D¬âòÔ:‰HÒjþǰϓ{2T†9õ„ßÛ±*‘hú?cµ°oäÍÿB@ë5«‰B—ÛWw‘D²µPJ+"‰)¼Ê¿†9õ§í嫿DL¶ó >·–¤‚}ò÷u®E·°^üÖ²kŒbŽH‡&äO`¿zìЖJË(ì¿Éýv‘E¤ ûLJ¸¸ifYH² ‘棞„n·Ä>וíÎg…}u¸ÞböÑGš_Ü{p ‘ >”e3”ù[du°Ã8"}ó~íŠã\¹|lùy"×RWC¤ËP‹„°– ¹p‘/$Hµç½@$’Weyöù/Ëh¾Šî8$Fß#D2ÑÖ=7‹ã]¿Ð<ÊŽÈ9Ë{}^"DöçÜ‹Ü]…ÈO ¹=Òj9›v\µ{‘îKÿª:‚HíiÕ[%qß~•£'š5¸ŽDÕMâ¸þSkÎP¬‡éðÇžSïˆì´‡r÷ >?~_õ ‘æ>\‹ð*G¤ò¯Þ¢e`Eÿ·Ÿ°;šš:4²¬Ð×âÿ"Ü€qìñW'`ùæn5 Ö¶õG­tµð±e÷öY°ÒÞ0°Îºv³Ôìö—…A¹êRÀªŽ97S¬<‘\ñ…À:3,ÐùÃM)U/€ùkJì0ß¹lyòP˜=Åkt¼ÞKà‡Ê³`[`Ù‘òÃþRRè‘-Ö!,ÓG¾.÷€Ù+=œz—€õÑc.­ãøzB×@ÎËïê“Þ™D`¼pƒ ÝÀœJ ü¼úåâï×åõžéøñX[ÿÚóòó ‡7n5Ö‰¼‰öÒ]ÚX·n¬o;áÌßDzïb'uò’Ž÷9`yHj¦~æs±„ÿ[ Ÿ?½ýz†"æû‘­Íþ˜¯ÂBWýq¾Ü'Ã$c´1Ïî›×záüö-ާ(ãû)qf…3X‡Þ?{§* ûâÒù¿ÅÎÀ:jþ;UXǧŸekÿf³+ìÎÃð×¾æÀ|˜á~?G>LÈTß¼zëêk`Vøßï»SÀ´Kß@=¹ÌÖ´R.—ƒ™œFìÙLM޶Ïm “åÖûUÐÒøL,L{º•ÓÁtŽ™x1ÌÔ÷‰^:ë¦YªŠûW}ÓÀ—VŽŽ!`š|"ÔYê˜ÿ~šðïR˜OÝ{>½¹Ìï|&6'‚ù­s–Û— Áü¤lE€O X¨?S0E”ï«O_ý‡}åÏ'¥çvbŸwK«ÏúXöyŸÔß5`ÿÆ;y‘‰RÈÞ097dò®ÉHCÜ™8'ßÔQÆÇ. fÖ‡"“×'·&! z¡£±¤†L¶Dä†ÕK#Êï²m¤ÅFìG_žÉn9„LÆÜtÀy ¼xÏuçQý<´¸™*¦™ü|TƒLú7¶&Œ–"×ÅÖ–|dB¹½}çéµþü¢S2 ðºü)iûpÞce+”‘ ýýÀ±ÃÃÈ$ï»ØÏËÈÄöÝ™ø~7Ùᕹp¸·«$ã}Æà•={˜ŸµêÊóãJG¿eÌ÷Ä7—c}õÌïú·W•Àl“—¬Øù˜/—¸­®âë#Žú×:ÏËkD>zaX:n¹>jXï=Z³Ø}ë›cêûÍB€9íS{üU'0,çðzoÎ}J¦šñ=¡¬ó4ö In¼L†ÆÉ[›½™ìG\˜0÷lü¢é®ÌÌô_÷o`ý©xáîd 抮û˵=XÿMº…®-æëËiÉö˜=GGö`_J~ôbäö‡úZží;L'לּ‹X> g²ÙÀT*-œÝµ˜låÉÉ$`Æ­{7ùf¬·°>ó'0wišè«`]Ù/½ˆý¸ó†7ÃX‡ú-ý]‡u¢Ü“µÛÿ.Süûgu›€isDP/¤˜¶²…_7`¬hXÀ£¦‡ýîÃo•{D°_eVFÜÃןœÞn~ó ¸3ÜŠõ\[f¯‘”0ÍX׈À ÙZ%k‚uêÚ¹?«~aß«¾aEånì¯Ù‰P}Ì ÿû<¬˜}Iðás"¿HHu ˜^Ñ4UQùw¢+åÝM0½vyó¥`nWºgôÀ‚¯ãÚƒ ¬ÿzV ”‚Yì;“g˜'µrgÚìõÀ쇶«$sTŒ¹`vDÈôÐnfœ@\Ú!°Pœ.£L…TüÑO—cÁüK­xœŸXÔmò¹’n \ Á76‚`Ñ®°)}Ì£»ä[T­qžüôMGÁ\ؽOéÔz0‹æIàDg‚Y…ç ßÀÌö¨Mÿ-˜ÎûÕ\Ì3áM‰ ˜“'÷ÚXþ÷9çðŸKkÀÜhd4â·X¾ÉÙn– ¦SI’AÅ+À\ypm5!Lÿ”/’ÓÚŸ7£ƒ`v|mÓºðb0}M/#íð3µ¾}šõº`¶‡µµQŠfºáW=ð¼úÛ÷ÞSörÿiãH0sΚ8À¼ãÄ…ºr+0kozZMH³yÉþTe0÷Ûs{ðÐZ\G Û~üy„H;Þ/›Ð©f—äs¬Ûú¿gýD¤mFý¤ÊBDÚk=að! Çß¾I ¯÷´é› „H/îq4áya»žv‹Êàû:¶<É[@¤T‚ÞÝA¼Îæ/‹38/ïÀ6¾ˆÞY™ºë¨HSû©ïxP‰cWNáó Û}þ}Edͽ´Ðv¬ŸL üŒÎ#²%¾·f'"mÒû+ö ß?"ÁW«Í…Hµ% …r#ˆL[u-`/ö›ÍÇ÷…Ç"’F÷Ï•Ù͈t5Mÿk0^wÝœÀú¸~G‡}ÃYXñîÞwûãoe-«°|l˜äÃ…×ûô„¬…u£ÐÒ¿ªN\WÔµF½w¸O¾wi«³õéÂåo«5±~ÎÒ|ܳ ë8›oá8_~¿J»¬ƒËاÉñüˆäéòsÿg¸ÿ:¡[Åq_¯ùq-0‡´=«±Äüɯ ®ÀûZA|ÛùèטKüIq2ÀãîÌÆ¾MðÏD¡Í20%|·\¾ýœÜ»,ʳ6`9T¢ösážûÉLܼ#˜ë3Q÷m}`šœš‹ëÄœ4½ù1£˜²Üš§n#f7Oo30bgŒÏ­Æ-áÇ?s€1åµkìÆ0|¯»~è0†$jh `$ò¯.|‹ësÆ]áÉ>]7`®”{ºµëFã+]·Be€qN2kjLÙÓCÑwð}%õ|A;ö`ýK™ëæÆñ;NVíFYѺœ0^õÞ¿´>¹¶Ç'2j€Q#ôw»x40æF~ LßÆêø­†`ÜQù.KƱ0‡ñ‡À8tª4|ø0 BM?œY…ÇÞ5Lë~`Ä¿|=ã…u×íÕ§ñx­yŸ@0Uy&coSzwÞcá`8Þ;¸ï0ǰ¦¹ñ.ºsÏ1®Ók2C¨÷%üîçL`\™¿×æºÿ½¿ÜÌ.oy/¯çf—¾|­¹fû‘mES`ú®£ùP!˜žÝÆÊn`6¹yöIõG0wÊW‹4 &FzµVž`öîg€ÓK¬}ŠG<Ùf)aEžãó”æi)y03J‹K+³MNÑ~Å`ú®Â8.Ì÷ör"¯qÀ|krÉ¥³,0Ÿ-5^êæ&ßÛ6VÒÀB+çru*˜ou{ø³Ìî]ߎ¹möáï7SÌU%á›$¬›6 ¸ð~Ø ¦ƒ¿÷ I8€éž[Äs`&øÐb×Ö©ª¾“‚%{À´zìù¯Š»`šÆs{,Džg‡‚i·d9wb+˜K3lÍ’%ÁôåÖ*×I`Ê*aèî<ffG* üÿû…ĽwX¿ömÈÌŸpÄ•|gÍÁ:wPæ¶Ö×QÌÛëöïÓ]ÝgtTä°¼©š»rÌU­ƒotY|kàŸµm8e…ß»H`¾CVky؉EwI2ÀÜç^YÃÁ0{’j«À,Npõç+$DÐçÙPÇAÆ~yÚî?›‘q¾¤÷~û,DÐùø¥ún-]yu‰$ÞùV'"€BqW\¾ooWk5 s*ï6õàcÛ·UÁqÙ߈·ÈÏ\Ì+*AØõ¼Ñ:"H'Ó£þûœK0O¥á"tIø¯LF„ž§K‡¾,#‚ío~¸“Œ뵚/H?C„ ܤÌëzˆà'_еo®V~Jøó(îVuÆë±®Ì\vlC„Í/ÿy:å!‚ÆJ—ÈDô™¼Ög<€ˆÇ·MFJø#"ÛÁ„7çµÕq •£…ˆôÙM GñºéןdOˆ!B÷¸‡½m:"*„sshAeÕüÇWñzõ]÷~EËßómý"ÿå·þÙƒRDt±¡þé8„ˆ¦"ïÏÛ!¢Ø9•¶”DL¾}!A½UÊlf«dábÆ÷ýäpD8¶/û^"¤n°rʲD„'†%YŒÜö±àlDèü+Û¼ ÷còôÒ•N;D8*ðmó­N „ !‚^®ñ>^`fÿ÷xŸ¦l|γå 0ÿ}#»ÌS3BÂíyô ¯Í^Ì¿ºÖýXU§ØïÅúìDß¹ wìÓ&êóð>þP¾%î½10ï{ïøpÏ/,mΘfÑÓÅRŽX?“Kk±Ž:uÏ»½lï;ß½ƇMZ…y Ôö½¿ë+ô^±ß·æóyOM&0.g6`*ìÝ·4ø ˜¢B3}äϘ£+ N'}ÇùU‡}ý¸˜—lç9xÑßq¬ßdˆÓáW1ÏýŽ5Ý{ÌÓOÞåÄœæR²õ¾`ˆùÝÚ2¾ ç£7>–Êy}ûß}¬é´g2þûw<±ß/¡w·'ÇÕßk}óžë²ëÄóZ`üxôŠßsM™ù ¯Í ë´§„Øy`ÌÎ?Úõ˜1~61±î;zè6¿ÖÍiÀøÏ#;Ì-á:YX‡ \m’5æùÙëƒz˜ç¦ uXþ÷»áA`)“¸]ËF ,¹F”ŽR]Áâ[L…õ°ðŒ+ÉÛ5 +*ܸýKÏ ;?›$€åŒÃHÊC0+Ñ·«ãËi¼bßUÐÅ幘Ï#®k¾oÖÊõ^"0 ,ÝíÕÿ°ŸN¸ÖT„õ]{ÛŽ`'ÌÃWâ¹ûMÿûÝž ‹„©y`>h=þO8Hoë˜A0™~·sÜX³À¹ú÷0íÎýÝj¢‹÷¿Ÿ¼ûNWç°‡fXÿýl–õ¾ ˜;ö¾šj©À´"T…Ö3Y#àæÌï yW‚èX¿ýš¨qÀzn†çKY=^W¨úM&ö‘ ¯ŽòÖíÆ±‚bWì³exfë…1•Y¥MŸn“'³æœêE`nò£4\õ«iÜÎ$`üûº’§?d¾™ÿÌJÃúsòj „0ºä_ÿ æ Q¹L`,=ò»ò„¯Çí®ÌÚ Ìýá!±1¸QîG?´bþ]Š0È)Ç~ÖsûWö1ìç7…dà:_T™S0WG›[&Kñ=-hÑ ?_øÔ.ýÚ=‰u³ÆWÝJ°öøïwšÁ*L:JMç>XE}u·ô«ØÌ襱ÿÞPÝ´òÛ/ ÆúýàI]Vooý­»ö¬cWyIÌKúª³-nÆ`•°ç¥É7° ´hˆbq¨Q¢s2ðßÀ=EDñ½Hy&ŒÈ÷¿}q‘À딤K+8#r;'àÙ0æäR~ø2ŽŸjímjŽ(¡¼÷Îiµàº?þÎ^F”Þü §¾¹ Ê᪓w©àûO˜,]òDäá^ßâ-Dþ¶‚q¹szîdp°$7"Ÿå?oàê€(GÏ\ðEŠ¡¨Ñ_ˆünö“YùDÑ;­{È ‘©tšA0ÞhEt-ãýªš:®x„$&_<ÞÞ~ræ$0ž]—ùÏkœÔ*:á Œ†ógéG_ã«#õNÕy`ÚHrÈÂ:ÍÛ?‰WsBŽY&„ù0:O¼‘ŠçQåãMߣ¿¬¶ÖGó¢gm°U<Ðßõν9±è½=;÷eµÃDy˱ÓÀØ%¿»Sù0ôŠÎœ/ÓFãö?o!è§/5û«P÷’±?tu7ò;iŒËÄs­–xÞ½ÀmúKOÁ§h0°0 aFqCÄ`È8œ²À¸tAÜ™³è3Ú1/:aȈøpë3kó̳»œpÜ}þ‰o€áŸ¡¥Œˆõæ/x9g»HìëdýÕ+VýW› Ilп¼óÎü7 é›|ªcØ‹¼}Låp|=Ö‡'°Ÿ^Ù>ûê:0Rü½F?«cÿ}8*ÿT7ö±eÑ]Øç×WHÇzO1É9sú 0Ö¸tpù•Ê=󳀡p•¾9÷ÝsUÂSU°ýÏ@5€Õz®ÓÊvÙõŸdPÇEaîí¥;Eoênjâ­ïD°*òñtî¸ Ö׎‘-±OdðØŸåk—–[D—o`¥b—à³÷XYïäR×òê·×»½¬jk—{UÞÇücÙ\ÁLÌG¾5Ó'I`Å}BÕÆóÃ×ì?x¦¬¹7Kï+ƒ¹óê·Ý1Ù¯³¦­Àjý蛎2P;ìn ­xV)«TÖ5µk”˜Ô`Û«öU¢„–(`ÙõÏÖ²~'PÍ>&I®ÃuT8Çp‚åÇŠ3QKW0¿nÊPLÓ¦2ýTúŽ0P¹ZúìU€Õæ&Þñ]i`9¿é“­ëÂמbþm`0•ñqŸ§m1ëÓÙ«»/ÕHmVÀX¨üöcvç°^#36µ}Ë£žó•šu׸ƒ‰ûÂ9;·WëÚÇÏ׫zày¤’·é˜×A÷Õ®huWïÆÁQ¼ÖPßï¸ûiÇs°¢9Å…(¯A„ìÿÞóñ ~½/¦t!¥S¹”ª-ÑÇÒ¬U¡öõÇMØ×¾QÜ®U•Å]z|±?«¸h+ps ¦½yî!¢¹°µö“¥DoFº"BÉ«}/¨þˆp*ã¶A¡"DîøÜˆ}ä‘·&)ø|eûÁf "Ü=ã“YT…”#ý<ŸÁ«â¦Ý…Dìww®8ÈÁyyÒµWœšÛzL°ï‹|Ç Æ>š0ûËÝÃÄaì‹ä sáñ× ùlÂ'DTºÆ0·;…³e{Òn¶"‚X|Iûßÿø.3ÊÁ~¹$îž_œ"ôv?;"ª†ÕæÔ!ãv'!!\w´Ñó—Ñ58/ï Á$<Ÿ’é%¶÷¡²Jç]ÿBdÙû]…ˆ†“Ç6Z"4þyovN0µÍfÁ˜ìxE×§5f»ó•4"¬7‹n BÆŸè‡5c‡±ÏWT°ðBدÿ{Dñx׉¶äþñz¯b"¸‘aF­œhw>0þ÷{Ÿ&ÀHº“úk 0J›µVá}ß)zxó"BqÇö æ‘‘~èü`ÐÒ˨àà}||erÚ 0ž˜+N<ÆÀ.—œ»qýdôN 0Ò Y=Vù8 Òq†Ãú|¾GwÍ9ôÊM7þ%.½ÊõwSä Ï6儯aîÈm±ñ[= ôŸ¬˜wÏhÀP¶ýxÆÈó‘byõâY ¿O49ýÙj:6$ún`ì.?~Tó+²{qÝvÌ%¥ôi™_@ÿsû‘ǹg@ÿ7¯ôß÷m»%%za^é†\ºÃ ô‘µ»"ñu™]äy¬?ùòì>Ä|krèœ_Ó.g=y%ÐÇNÈ“µ]€¾ ÐÉ¢“>ô8FvzèãÇG8X_òò9“&ñõÙ¾8Í—€þéwgLu=¾ÿkÆ“ØÇïÞUjiŒàýtOÜß=%;+Çç€q¬ž³_`èƒÚW^¾Âœwû2¹ßè}›t¾ñóý㸤 ­”Mžv~kËÿÞC VǤlÅý¿bdz­õò"XùMæhöu:IÿÃf¼¯«Ëæ¼én`µvÏûÈÐlBWx¯ËÿndzÖN;/>HüV)i±ÑX§äÕÍ‚•—HdŸ'óÄýZ8ƒ¬$*ŒÍÎb¹Už÷o7æ\“äÛJ÷MÂî*`1 n0ôó`F˜‘ÖÍ"'¢V‹€µÔëƒÓBÀ*f«TÂo~°ú¢KÃ:ÒЯ°ð¯ Xñ½PÖq u<‡ð¨¯”+ÿª˜€•àXÁç¬_W×]D÷}€zuç}ÕÁJy'A½hÎ;»’q'ÎMœ«oÜ–=úG´ý]²PU ‡Õ“N•ø:1{e@½Ç{>ñö ‚Vx`ŽƒøƒEìÃ'U¯˜ß: VŠÿþ8ÊNõ¬r°¿0] ˜VÎ÷eTó–ó`µŸ+¢™]ÔﭽȬE&.<?VÒïôêÀZ)™:üt7X%3>ßíÀõUþÉR9…y$EÆŒqqOt¥O5ÏyM`^4Ÿ¬ME÷ô†ð>{÷˜½PŽnsc)Aˆ $ô$ïX 2¾rôoÂÒ2Ìõs?—‹VNfÅ܈ \žšs¹ „4nßÄ<äT“‘•EÆóiŸ ÒìÑ{BæëŠgˆ¸c²ø¿3"ì¨?3&ÿ³ÄzËóp¼ óBÏ,£y?0$KU¼•±ÝuÉІ Yk²IO/Ögwn]\׌(ÇÂMVÇ€‘¼._¹ó´ú=µMª+í2 ˜#ÚÆëL%±N4…ãûÅ~z1}øE`mùs7Èi{‰ <_+1û570ÌéJËaÿ°>Û¤´×5Å“ý¾ß`îš½ÐrÆÚÝáÒïciÐúEëN^¢º—f+Ö©±ü³+¢¡ûO~ÉëN©U„ø«Qy²ägKŽssú‡\¼~_ü˜æj™ÕÐÐM÷þt¤ ßwúCí0~ÞàGÆK5ÌýýRíݘ›¶/Ã6Üù ŒÖ·IúáÕÿû]¡+`s먌sÀ_°É¿\m'’ 6yò^r÷‚ÍÚ;ûhŸÏ0òŒ£d ï¿>íкFs#û·ß=ÊF±›ÕGS™l°iô%…¾›»ºßS„À&ù¾I–HØÄˆ'q§LMZ`ô§iu€XÝÕ/"¶mÍ—°ÑAò΀Ì-—¹v(e<¸êðpËÚݤCÛ&õ¯¸6‹†L1ôöös ØL\(f[€Mƒê‡¿Î`“éÄÕuæØÄnûÂ÷ÕŸÿ<Ön®6•g}çDÁ†Qp|ñáØ UŸæƒ$°hÕ¨7h›«:ü›ƒ*lR\_‚Í!¯emo&Ð^Ÿã]žˆ›Ö‰ƒfY6`ã/Dn=À&éÙQA·÷`ó@éÚ‚¿'Ø\:™›á‡ën{x™<õl„¿ë½!6ƒóµ ú†æo?3¥„ íËq>Wkb|Æã8÷lô›*±!ëM;U§ìàݲïÛî&°¹¾OªSÚ‘Íþï÷ÔH¯f5ÞG»#²ê•É™·ˆðy}æ<‘öÔ !rqá.?"³Ù!÷ƒTyû»½çýiêyÙŒ†"»…f5¾@ä3ÛþXd!Dv¢ï*­ Ad놠ÄvD¦U÷º]vBdJ¼§÷ JÈ‹·§[je¿÷•½’ˆ|ѹ#ßò"Ÿ«?}˜Ó‡ÈHÒ|mY("—î=w¢9ûàk%bÎ xì9›)ˆÈ®JbK€Èó¹ÒíWd¹úzëC¥qD©´ÿ7È’E”/±Ç†Mê¥ÐâÑìV<éùd¼n®ø?u»D±ûæVðûr^ö¦÷~žˆÂ®ò[yJ×é$±ÏûνOw~Å>Ú›mÉqAä™mé§±ϸØãߌ%hîêÞâD tZ5–)‹LøVüü©Ù…([E¬Ï`íy÷Ç˦D~ZaØ!ÈÎÍÚÇ"ògQ[Æsìsë\ÉW®*"r½¿Âµ1Ü·ù°#.ãxþËnoÞD\ïËÓTÙ*ÌÙ°c¥6MØÿý÷ïFxßÚrnen0®T¼\€‘%ñV±oÆœ¿ÛĤm€‘ªtÁW¥¹7ןºwï_þ,U̳#þاýÙܘq² ûbÍ_b0îJ_Ù{ëÈŠMW6Àó‘âÅyÌzÛ*¡J@§û;v èL'ÙÛ2±@¿ û¥ýõ¬Ö*\Îz–«Íwïç@ï:t'¼Ø è©ZJî½!§`³?æâŠ9‚0TLÛ0'†£S×bÝuÚ¯®Wè¹Æ6b]YòoSæ˜ãKË~Õk@”»Iú‰Çs#7ýÎɈt —xt©.by´Ž˜ëWïõÜw™ô›zXá|k·ÔðñýHX¡­7ö» 7‘m³€^$·x©=oÝŸ4 èIçêêš/`¢¢Éæ×ÆÍRXŸZÜoi;n yéjJ•90œ7¯ÎW= ôS=ÇÈjT K_ÿ²ë®³/ª¸çÐëË ìÝÄ€áôaÈúð0ÀÐ1É gžWè,Eaã~µ.¸tl`Ÿ¥Q€òÀú¯7F[q-l¿É@w?pñÛ ›í[ÔµÀÆ=Äpšu`ž±]p‚sXä/@Î q'5c€½I¬»œ¾ª‡Ûü0×bå{7$¥Xü€ù'6éðÓàhB=;ç@×»çÃ0™êÂ'Z( Ç‹Šñ¼„R6ˆGK}i[‘±7ÇS?Âù± ßOZµKÇlnËM쨛£{Õx.Ƭx¾}òï}ÌÑoºB§09¹ãËçN‚ÍòÄ_‘m—ÀÖõIXÑÌú¨ãÅ»qÜÔµœ®q°iÿqgWý ÐÆRÍÖµ·a¾õþLþ^6ïë$Jc¾å>ö˜¿¢6³ õÊ÷8`sóÜÙe|ßô÷—Æ 3`ãÙLfïZ «¾Üw <Ýsuî‹ê3£ØL<|IÈ7ó¾€=ücß*°™o:lûY y?¸¢ë7~¾iïF€„c‘æ‡!’§Kb§"qžݰù„HaO¦C«å)–ë}õ–eDJ$Zr!Rs¼Ñ§Ãüˆ—Ô³G*‘ü„Ý.Ï–"ÒÏT½g07cb›déYÀñöÕ:ˆtíéáGøzàvýUùjˆÄ:_šö¡‘\‹7]Æñê÷ƈtYÏdPY‘¾šÅùòñ"Rÿ¾C’¸?gí-ž`!’‡éÒ Û*DJº®8õ ‘Æyî ë}E$ÿÜøÙ ‘Š~ÖPc›YLö§µƒ"öK}|½ Çåí~¦RšŽó s™Ùp÷eÅÉÈI1DY¬ô;‚uê×ö¶IÛ@DZ?ò"»nïìæNÒÀ¾ïÎïu³úsøØ?¾@¿gµp£y‘¹'Dà5Ðï;^š”îÃû»»ÔÙàÐku=ßÒÞÒ´Éì桱HÆ÷ ð~žl “Åç‡ r/Í2€Þ¶39¯j?ПmÌâð«ýéc^wÌ‹Î_‡#Yà™m.«"Õž]žxžøžýä+nú*¶sg‘ xö*/n?†ãI\þöÎ"<_åE¶p}ÏimÝ‚‘@'¯lM¸‰}êÞxÑUç¿rïë')àÙµãGifx½çoLøžß×Ij¾›Ç¼Ëÿ°J£<ë>l)²oÁñLn}ãžÓwÚŸŽZ‚çˆßþ¼”p ;±Z’Wæqfkõªð^v,yjž_@..H<}µù²èžwÇì,.Æç˜†3¡@<¿J)ê%ÏG® åTÙ"yè{ ~½.Áý ³f¥¢з”ØQ'ô¨ó;ÃÀ³s µzÆè ¹‡Ê{p¾¯bÏ#<þ¬ß”Q…ﳇùyÌ£ÿö“3BÛx~Þ¢g­aÃ1§d[ •F‰É;V-PóÞ±¨+@Û@êöNÍÚM…–‘ª@k1$äŽlëy³¨¨‚\°þ¨¿¸Ó óÕöò}Çó¡@;Ûåüùçi~½ò>®y°iäX󀵸ä«ßE–@ÓI· —ušà÷«ºž[æyóàóã;–úx¿¯ê Ù¥jÝ ´ÆB¶—W-é—YN(Ð^év~Œ86WT™*u€w°Lñ9 #(³G×âzæÅÿu)í›SsÍÖ¯‡¿§-¾ 6fÒnدCð;Ó…¯Ÿáÿþ?· >ša7ÖÕ #c‰L‹ýÈÈCÊúp©,22-¡G}x†ŒZUúoA>2’¬<½°¾– 5 ˜}CF]3·ë·#£Ý›„6E !£«ò'sÕç‘mÑ#rßozÌ',.÷‰maQa²Ò!’6ŽŸ£QðÊ%•(ó0æñ:tEë|; 2réË1ÇëÕ]»ÿÖ1Ìkf#C×Õ±B=ÈÈÓ–8Ž‘Ñ> þÛnÓÈp[økæÂ02|p‚‘Ÿ4ŒŒôµŒ B‘Qì(ÔlFFœÏJØ_ÎÇÜÍÆ~Õ({w…ð+ dl¶Ý<%ó2úùáÈ ]"2ü õÁ›%‚ oÆËWܽŒžd't6ç"ãsáâFÛpS©NZ‚Èhë0§;:6™\óÆëO™ÎŒ™â¾ý´ZÜ‘+ ãUøï8¹!£¿ßò"ã¤ò¯ù ƒ×[Þxí7Øõ€ ÿn^%:®ûbZôÅzý•¶$r!C­Ê­r-éÈpÑ2²XgéÞ4‡„ wl3±92…9å'OÂ:žÞ?LÚárè­ÞFVb½Ô1DÜ,þsŽûWÄ̽כèR¬ wïï›|‰ýÞ*þmþZÀàÛ³¢åÐçõ>dqéýSÎåÝ%XÏü`„ö|ŒÂ~vGTz.æçïrÉ‹/¥À³úXõ³ƒñàYsËÍúýqðìÞyçË>¬÷V5¹*ñõ§Þßy7ó}e•ÄPò(x.e6D‰a=%™Rù`3Ð]§Jq¼@–w÷³Û@O[E¡U®:ÿ¶\³ž˜—5©\½x~Í™ ½¬«*n7›cîýyÛt?óKü·Y9æïD”hÑÒ] û•Îh=]á{ñSÌ5SF[â}ð|/¬»Þwóh8ÒÉ‚žSaû:ãî]<ºr-Ð×´mQY‡ûÉeG•­úÙïS7eÊ.vG¡Ðu ŸéòŸâúÑØ¦z§I g Eybîþ¹GðÜ„Ÿž1¤_>ƒçìkªúF[ Kí](KúûüÍñ,°5ÿï÷ ë°ß{»ýù2Ø®üûÁ0fÖ]÷¹Xbý–ý§E£4ë >·I¯!°U{ï¶|›l#Ï­ oŸÉ?7Ê0Ïž«ûUm x=sð%Ç  ßgz xû:ùö:U€–F½®‹¡ï åwùDV?÷óó`ŸÏ´ÖcÄ™³Í¯ÜÎü!Ñ‚ýàA3þ)H[‚ÂD²†>h§T®6;ùþž÷Áx$y€d¢x%Öê'¦ÎÞ›×ÜTV<æãƒêÞì‚o¢ùj\o±N\y2±6l|SUwµ‚MOùvØ ¾Þ`ð €û|þnSi_?òo, )´- i+‚ÍiÿƒwùÁærP·wYØ<šÕ]z}îÒ›¤è—1XÎÈ1óÆyGhýu;@û"ðÛëcõ ¥ç³ëàŒÈ†û¸žÍ¿îÃçu7Ý›(}#î÷Ô쀽›r4o0Àå¹:gKK\¯Þp X-ØnU|2I}—ÿ{ÏG("l¥[ëp#ÂwßG{ëQüLU2—;"ÔÛ|\wJ j“ç<¡çªÅhV{žôÓnA·§Ïû=‡‘±ãfcÂÎvDäY[+÷“€Ï®§ñ7% Bß!ã ë\Dx?ü·|Ù¤ >;WŽ#‚õgÍ—Šˆ`¦tgùp:"[þ•)‚Ûþu½X@„‰[-H ƒù;zB}˜ÇÙϲý‘qWÕÓÆ¯xž×¸ìÚH.D ¦®ŸkEÆÿâlÀy:—1âYȸóEÜ-Ç dœ{7ßš| äèlEÆ×m%x1ÓËC{œ†B‘±J?ƒ 2îoyÆùö52[#/É"b×zg]%7D$û˜ïì@Æù ’åbÞ õû‡ùü¨?Kt•"2¾³Oë›k2J`Yñ'¸ âæí¯ývˆã 0w½Vôðø#Èú©¨O>ˆ(¤»;»å<’¼í„ o1%9.!#»ŸOîÊGÆ^ßîq®A†— OíL`}ä¿çSЗý§î¬’ú›„˜tÉ›˜kJ/>˜Zbι öð½/> ~Vè³Rs(þÀX¥±2GÁ[¶ŸÝñ0û¶•÷Œ£*€Á7Ÿ¼Øð ªm¬j±ÏåI:*è± ®Ì=’ûîCÔä÷‰àéÜwòúc>ðtiiyAzž®°¢š.B_¸)<_ Ór&Ó€¾Ú<úPփ涧¿'i€§G„> žîæžç¬û“.tï¼O.b~.ÇÝr©ºŒä¹ðßlðüm÷°uæó×üõß8Ž÷Òè?'ðc…È$gë¡Ò`¤stÛ× ÛQ¤™Py$¹d‘•#¾Žú­ ò¢”µó¸_néAºÄ¿÷"䱎d:"hÛ…õçøåú/Ì[_s ³WX÷š·ݵÁþ–Af(]ù_Ü#œÝ³ï¢Q9"D^ß|{o"3¹4Ú$!‚}ƒÝÌ0"XXÏæaû—)›jˆ°Ïàw¼Ì2"´‰•W6cÿ©óßû÷òîôºâòÝXŸh–›†ë]QòÅ'Ö  œû'ôèjáoxWnt¢ÖŠ8t·×<6ß±î+ÈJì-ÂþðN yÉ^èÛJ»Ž(¸Ý7\DZ¯Ûf-ßž‡G½~›3)@¦‡­%íj²YýíYq ^¸5fŒ}§Øý"­ÐvÜåd8‡Mˆíô¡‡@ÛÓ>þb(¨ÅŸ}k=®µöv]^iÐOdT&߯ú­nÄJ,dsRbtÌœÔò'í5#¢@½7Wæø©¨ÝGÄOíQb`×àS ^×½íí»h|›þ„þÁ¼ÓiÜÜsþPŸwð{=°µ­ä®ƒx—ôýGÐèõ@h¦]*ì:€zùg}ePó®±ÞH\jS²A¿Pï/‡ìÏ?Ô‡%oN;ã¾40Vø¿¹gi]¼Sþжª}ÌZS•Ö|Îï¦ßakb1ИڃBó£q|ƒ*³bv ­œÕy‹õµï£= Ž`•èÿÛV»ênõ}R+可HæŸb‡·È{°¼ï4¿C,_Ïd7ŽòƒÕÙ³ÜÏ‹µå±¼¢KÀò¨Õñ‘oø|²p½m+Gï!çÀ*¦·Xâµ XY7Ó?F¹ƒ•úã¥_/1ÿÞ¯ÄJ¼K•§ÿ˜¶cýØ{ðKXžü·eOAX1+md ½ŽuNލn²)X®}¼{ªÛðÝWø \¦¤•ÛæÀz¥¨zŒ×óH!ááƒã`y¦`‡€‚À-뀙åÎnÒKÕÆ‘´äÀòìn9¬C}%süZpÀ×M^B`åi wß3ë¼õ´‹`Ã¥BÙ¨®†ylr4t\ v¶(‚¥lSuX €·1§ºû[?Iähë@Qpóµ3åc1/‚ò‚Ý‹Þ5°ü±ELûßÿ:OX/·‡$º¥ýn—`©¼ÐQ7\ °ïØ‹{ÂBÔJιSvn˜\I$`ýʶ@ô X³k“ãÎ`w£)¢ýÖC—D´Î²!Ât×É”|Dd,ž°YrCDÇOÉ…*6ˆèZ^ —…ˆêUSa ˆðm£«O"*Wÿ«BuˆPkì½ïC"ƤGr·FĦǟô¿7"búÈÆÎ){D“Žùl¤ïµ“éöÑö‰g#Õk(‰¯ ©9_1Ö¬ÕAjòlR5+HwÃ}ÚþqC¤úð€o4! Ò><>ÛŠŸ…øÓØºê ±é†kHùÃߥ® Dxb—ÑÒˆáí ‰#¿:'Ùäi¤b²•‘ʧß* RHµÙùÙy±N¤Æ{ßÇ!UýÇŠv½ˆPsttF¹éNMIˆÄV# ÇÅÂ,¤¾òÚU¥BÞ¿Ì%± õäw;تzÌ‹,aµb¤þÔï ÷¶8¤>‘üì=Òø´Ñ™WëžÓáA1+@;ç¨]O´ZPÚ¾>}¬ƒŽ|êF°Ï;©ôôÞ· …±Æþè^ÚñêÛµ¾-S(àíÉ` Òöë»ßÄz¦EãŒå^ å¯,òàñî3‹{ØG^œÌs[sÚUG„Ü@+Ú|íÊê' “—/ãó}P2øu6POqx5ßêÔ¿PãÄR ^’šŠ®þ Ôþýù‡1Bý½öb@µŸŸÁ:•¶rû±ožÐ4n%ÜbšZþñ P»6lsMê°³ãˆ×@ß#Ðßl4žãª¾‚Ó@}•ñï>æVV^L^N æ‹ÆÕß8Ÿù…å'E€Öýv‡lm Ð"³$ì|jåMg¯§Î@-´ ŸêK7B׋1 vô5Åõk§c å9P·+èêØûi¿)Ü¿¤v÷¥¿@só;,·s#Îgæ¾™x0PŸ¿]ìÍš­|@½f Pm¬_zX Ô’=̧Â_•\¬ª?0Ôm_ÿ?xhó[xNŠrƒeÞ{±³šØ·Þлv÷æÃ1%ýÅרÿÚVó*\ÁR,q)µuXJ*ÌŒü.Ëþ]gıþcøÞ%xâsþ°¥ óÐGC}‰Ü–»n’óBÆÁ2³øIn'XÎ^¬&€¥Ó–øa¶ãŒö3%¤ÃÜë–¾€´ø}~¦|NB:?¼ºw|uÅ:«PËÈ ë¡Äµ‘Ñ›£H'-gÏ‘³"H»;­ëdTÒ°¸ ™„´$·N~°$ ~ÆqÛëgâ±oä.“™Æ:¬~Ë‹3ZHÍvNcVƒT…÷W³¦"µ'–#±pi==kÒK@Z#/¯ù³Œ”Ù~ëVÍ!åƒÉ‘ÖZ‰H¹PJæçQ1¤³C|áò#C¤|rïôGSˆ •-ເtϪx]’´GJOÕ$†®-!Õ˜S#F:Hëƒ^ã5ûj¤Ãh,$’tUL.Ȭ`Þ~;Ìï”V‡”äTû e;.+¤w¦úiõn¤xÈí qS#ÒJíÿx½/iX™X|éáÃ\-9à9gˆÔNd9X9´%jÎ-^ÉDjí²¬­¹Hu¯eë²2 Rcùô´ñr4Rµµæõi÷GZÕYoä—1zþûwÔoñyeœþ=êTÔoO8 Ô§¹©¢€:*Yôá;PÛy죶Âç{—gãI- . óœy4pâzèŽ}™ ºæhPÿU+Ú²eumŶó@]Ú´hüð}ZxÍR+ЄYÝ–‡2Á­Û«D\WÜ^e®ËÆ[Ý/7=ËY ²Ÿ> Kx nOtûûDŽ•ùÛaÑRU JhÚ%f*V¾dðûN±BÏóïÊêóaßå=@ êãVõÂûéDÙžÆ< ?+ÛzóîÅáñ!œ‡íц˜ß[€úý¬œ‚æ¸ÝybcVÀ nò ‡ö³NçžéÜePú ÐüHó ÷J‘c©Í·Þ½´ùˆ@ým¨›ÉÔ÷_¤n6Çuiw”êõ[×Õ;öpF~ðÏháϯw…Eq½¬ÁÊU˜cõñ¡ž3;€z>±ØË£¨Ÿµ¸4=ºA¿Dû+'P}˜³¡)u£‘¼Üx,PEä„ö9Dbýû 4%‰Vþûó' °ª*Yðh«ô^Î"¯%°2!Ù ˆ_+cËS.;€•ìÁÊ3SX-Ï*ºêÖ&ªOã6`YÓd¤³¬þ,\8 V;44þ&?«#Ïî­î{‰u¤ÎŸWG©`å`}*öõXµm´º,+–ƒï_/g‚å0|éÞ3`éxQnÑbs×3âÙ±‡`)ð¸çFc+XVï39`¹ÔNvÌË›ïX€îŠóEìc#bví<‹ýïÛ[N§±_µK·m< –¹‚,‘" ö»±)ºüåN`™.ñ|QG Õ+yïÌùQþ]ko=Á²Ãßóá53°‰pâ›~°>äËuë6ů}çEþUîtd–Ëø^ßéÌõÆé{aùØ?Ý»û.|Ýüö…ðX¾÷|bÖ^?ty}ûµ¹spª9äç6°¬®ò×'”€¥Öžé°²Y;_²ë߉ȱ}»·€åüãf©•1°|oêÓÜÙ –ï†ÙåuU‘ê_+´A©†¦žü]GªAç*OÏ"Õž#[L÷å#ÕJ½Øv#Õny™$¢R~ðêG.>ÿG¥Ø»w#ïïî϶t"¥÷_ߨR­þA|²3 ©NÓÞÛ+Î!UºÐ H¤ºíµvâ[g¤¨3vã)Õ¨6JÑhH©-ú⦮HÕÞësâÏn¤ª”·/벋“»Y):H•Ƚѹ·©©j_ë›Ãzï1çùùî4¤äœÎŸ,”iâgKïô å½Ë«Ô2j„fªÒ| Öy?šïãFª®wñÛ •^ÞBñg¤:jÚyãf.R›zzMLf©)œ)ú°ç½MoÚzô)Rø~ÒÝço%R5_…;-yH5®Ã7ø R½±§0z¯R}Öq¹!•ßá¦â¯¦jF½QÔ˜Rº~ddœ©üaôxFAª‘ ³7uÄò|Gý³%¤îv©Ÿ.’Ô<¸âð©–=ïe,¤ %s9s-1¤ö¶à¸·!Öƒ^ñ*a1HãÌ@1]©ÜyÉ}3ëÉÿ>Ÿô°^âÞ%µ.4‘ª¾—G±.ãì/rß§4 u!ÒAì Ÿß­Oš*IîâÑ éª2ožÍšÍá/¼@ËJõd‰½4ûù‹'±^²Ý]§Ö64+·Æð‹•@³“ /ühŽO•_/·¬ÛŸî3ó€[fä÷C†àÖj^jܾLºÎ l·†/ßö(Ô€ÛÄi&µj'pS­³U7ÓÇÇgSdzwùÑ¡3‚@Uof–áѪ™  Û#VÌ‹þˆÑu  4¿tÿŸÏV 0c.‘.”Ú€uçãÛ-‡×ÀíáRnãóÕytß]ÌKÕ­ô®b]™ãóðín̳éò¢Ðý p«ÞðboR¸Í¼ ¡b~ ´$¼ÿ«nkL þ *Å–Âât¨\{eWê€Ê;T,pëÂorÚφÚbʵ͂Ü^î)ý;¹ Ü®Ú,uå/c]7uÉÊ– ܔ䧟Ú·äO?¿ d€›*×ã$ÓàfØúb² ëÂë}œmœÖ`õñÿäÞ۴ݯß«ñùnwÌ·SýW„¾½«Èd‡ÝO°þÙö…+|X¬Ö¤>Š6µë»ãI^ X/Z¤¨gƒÕ¨õßgÚÁêhn¯WÁ°º²Üô;ĬÎ%%ÜÖ«…M×ÁªóOk\Ë#°ìì,zŸƒ9ÐÆJäŸK÷êÌë̘{ÏöÉôK‚¥Çùö¸ ·Áràbõ«ø@°âÞêkïX¦mØ¿‰› Ö‚1Ý¢\~`ÙÆ,>eð,[ ySáf|7ÚëØù Þ»ÿ—_þßãÿ?G¤¨vì8Ÿ|Îÿ×yüïñÿyľ]üúɤþÿ¯óøßãÿËÏÉ’bOG ÿãý°ÃHá~À â¥`¤Z_ó~)2i<ò_@ŠÜ‡vr‹!Ev«‹RH‘u+ɪk)èÜú¸êŠ”Ä?]çùéŒø]>]¨DŠÎº¯î./ Eòˆ±u¥R¨[íJPlB —̤”V"…S‡4C­7`hÅ_è.‡”ùË 64!Åo{ÆjØbÎàÕƒ…ÅHéìÆhˆ=Rü›z³ä ©W>¥ŒGÊ·ý·íUêDŠÿfÊ×>t"eÕ|ñà sH±n·ëÓŠ |ÿ’êm>s¤äyüú¹’È«'.LlHIúÕûÍÝHñ÷Bγ‰y¤¬hUiÌ„”:ÕÊîO'"Å)ñ?ºõ"8çíÇëבb¿HšÚ¶&¤b^X"*Ž”„˜™>iEŠ“ó¶Hñsý&Rü³èz®ëV+Áÿòõ/þ1uç¿1Þ™ðŠ)]ûRû„» )“ ï+ÄùªoÌ;õ†„T¤Š°ÚÌCj×Bžè|CJÅ/Í—Ùe°ÎŒw9¨”Š”Ã¹—ÖŒ¼‘ê?%¾§§ºúò?a ÔÎ÷lÙXçôN͈ÛŵF©+C{ ¨Õ6}Oì@- Ž.ÛŸ ÔÆè¬ÉÏØÕZ- \j‘Ï´Y­:P;¤ÿöáuç7rŸKj¿ìÝ–g»ð8!¼µ¨¥ÿª—õ­¹»Á,l_zÄqs?l_-ѸôÜL2ÖîÞÆ¾s«Ô¿®àf0Ïv7ÆÜh67Wž(Âö#†ÉpãX2g"bdßku˜·K×ß³ƒ[e8—Á&¸ÝµÍ7öY·û‡^œõËÇ>ö¡8œÆëò„DϹ–ƒ[é?ö¿zOÀͶµÃ#šïw­¥ë2ÖíßçÅÆp¾Ú/Ý^aý¸N]=«Ònüô;¿Š#Ám[tc’D)¸•g”Íý·Üg%¤Á­eñGfÖ«JÆMf°®ð7¾÷¨‹©S™³XÇ-W)Ûî·®ÈBËf¬[¯;Õÿ ·Æ “&7¶âgÂ)“X÷Fõe<0‚í—oN·!\§×­†3/j|åPoË4Xžþïï—cq1-S­cÖ#«)ùÁ’H{Úñ¾ì¿s×–¸ˆ¯Eë®ÝqøuËÛîÞoþX7ùaï°í}EíA9°’Ò6ÓMK‚Û¯RN°ô¬Ú6––¶Æ†8Nze,K>X¹Þ/v¤„¶ß ÜòŠÀºîPÑŸ°Ó‚dº«,>?Ìj;Sp1Íœ8®`Τ¹³€Þ¤~^gµg¡©oÝþaÓK-¤^´þìÒÙD¤¡ú“X=Ô)bz¢]H­âzê¡l\g¦[±ëDÒx»ªùcÎi¤MG¾E^Üïts˜FlmC¨SRÿL[kç„4R¸¢ÖÓ†›»¦WŽl|qª3¨)ÿ}O×W féHõª«áñ@E`Î! ?&‘lLÄc•ãú Ìã‹çÔßîjLóâ€zšPo <ÿ|¨¿–~d`xs;ñÚc ^çªH `ßÿ60ê2Ž{/ïù] Þhïñá‹Ç>Nÿfþw9ì[Ï<>¸÷ ¸í~ìz]ñ6¸EÌåß¹ñÜö¼ÙÚ.wÜ8xï²nÀ\ÜsÅÐûcâeþVv &u,η§ºû+4¼Á­¿5Kb\ܪ¾ÝËtû×CŒƒ˜gÓj™åxÝ7ÞËw{/ƒ[¾´\È?`ëµÔn‡Úø½AÜ^åÜ.©Äù—¬Õ(}Ç\?cË+€ýihïÖä3pó¿y1(ǹU©š†ÇÂÔ³³Ì8~»§ž}/Þ/ÆšzNêÔS {~]X·©Jb¥8±HuŸ—õà†qZX Ûür`êpSûÇÁn·/’Ù¹Þ‚›â÷z¦ä÷¸ÞBEV€ÊjVÁQwÀ© ÿ×ùÁ4:€yä°"Ô(~±}è0‹wÏûÜM‹[÷T<$mãÛ}ÿ ÀŸ[{À¬ðvÕwgE€×»¾}I‹Éå7j¿GÄUØ/ iƒÅ×¶TFÖÎ Íe1[ñ~.»ä—bÀœX}é‚U˜«›æ+J]³íÁ…¡ì«`îú„ÙfˆfÌf$ÞóR7©ÂÑh0㽺]½¿ÌNäû<<ãp¬Áê ˜Yˆ•‹('‚¹¤Ry{¤/˜ß9ôÕÌÏ ]`»ÕBûÊ3,`VµkˆÊæû¾k®Éƃéi…ƒ/º…Œ¾TWÐs0¯Û<" °ßxº¼å!XÄçÿ®¹Ìîd<ƒóóí³Ú@ó+w}+&Á<ÿâmÇ3xŸ2¾;š¶ùÙzÙdù{`Áâ´…Î:òB^Rç–Á¼/vŽæÌ®_VyγÌ´„ ½–ÀLÍÛ~§˜ŽS("`æwÅ:ý¸˜æ–Ý}Bﳋç÷½: ¦mÍq¬ô+Hýüý½ ¤Ö+Óô,{©ß‡f¿ð9¯ñœÝø«©_œ½þÕ¸©Ç¬‰ñˆQðùôË!BêYç)¢ç‘ú½ŠW—5‘ú“¿ê}ÿVú|Ûì?q¤>{ŽÕ¬e©‡‡'^;R…Ô©¬?2 [‘zÜð¦üêz¤1ÂZùá.Ò˜7.y„4Z¼#ÇwK!Må²À³öJHcÊò¿Ì¤Ò´&!…4ª5þ<Œ8Œ4θ²îŽBŽû.uÕÒúÏ®Û-»øÆëÛ6ë[ð:É7ÇŠûñ¼=ýŒ*c¤qàéw¥!q¤±Å71ú‚~_·rÖ#Í\Qi5W¤Ù¶£¶n×ÓÊÂ:T¥„ÔÏý± »Þ‰Ô_æyüÛ¿Ž4ÙÅ”û¯á|ç‚è<î"H½±OØÃ©ÉcòeVC'Û=}Žä",•TÎÍ‘úà¿\%r0Ò`mò}\€4®N]IW@G†ÎoŒA‹!'QwÚ¦i…Œô]ÌiÊ;¡»ðüVñu•¥H#c!¯ŠóqøÐ×Kù@øŸç‰:ñ~Ä\âP'Û’wýsê›î5‡±n{õ@÷|¡"PŸÿn´þë£oD0Öu ÷?Æ:pUÌ«\ý,PǹÈ#4 .ÙªQ-±ÞùzÿDÅ|Pg;RŽýú„ã{¼¼àíÔ±Øk]Œ[à6-T¢;õÓø/»OR€*!}§Å§¨úT¯¬?ŇR\.yÕ̰±ü§8>ÿ«Î—Ý1?þí¦^æj¤èÙ;W1ÿN›Û‰'Ÿjb p•ƒ+PÕ8 ’6bn=jOŠcIqàmãjé,õ@•Ž<òõ× n>Í<01T%yæ7žÏj±|جÔ¨ ±›v±5¯E¸×stî!¿aw.ÎïέÏ:@sÀ?­…ÇœÙå•@µÔÙüµß¨æ4‹b"Ö¿Šê¿Þ/õjB\£™P7x_rJÇŸ ®{UGðüs"ÞgöïÅzzŸ™úU òHÔvpÞªÏ\Ì£àö÷÷¹°‰( rwøn´ÄóÎkåo53 ±³š,ÁtÙÕÜBJÌD·-¼dÒÓ]B 7ô¼Á”–z(œ# L%жq¶¶€YB”„ÄÞ`®m°)à_Ë}9qÙ`~é•]ܦ¾Ñ›=|À´ìù€Ó×(0˜¹’ö4Lck¾>mÓ?{¹§4Áäæný<É_`’¹»Õ8‹L˜µ2ÒÎy€©–à…§.€qiwœïù00õFþ”‚50þ·<"×4&áCwƒ™\úa±¦`ÂÇ,%9^ &çoòÌv¾“m« ÒáÿÀD.\ãòT-˜<¤vêGßúÍ®]e`¢^7y£û ó¶ë¯®’ñþüÃ;Xq^ާž™Ì1 K‹õ“ü¯`üçÜJÎ{üñ¡Z0žÉ j+<&ª]'·±”€Éå½Þ¹Š`m/Ñòœëwë[D _¬À÷DDºuhÃ5Dþh_u¨÷S&\þæ¦\h7"œü~ÆN([(B„uÞ#ÃÞˆÖAzà¿÷°¨=(UÑB„‰Ô\¦ˆ@›µ¹ï2Š×ïüò•k|l$xWpüºèð‡ïm3ØÑèÕfÏT>;!"Ëá' †v)Û¼ZFÄ-‡n/YF„É«Ÿ4+çáϹ[ÔxDˆ»Ãôn*R¤Ø%ã:Z[v„m>Žλ/ WO!‚ß+f‰r¼ßá}ß*ðº8–=I:eˆÞ¿]´~m¶>ð” @Ä`?G»F)D°Ž’ÌôCJ²"|Aº‹ªY/eqÝwýüÖV‡÷½’^kŽfwòãº9ø½×76!Bl–’ì,®ã„ ]›Õ7D013Øå†ûÁ›4SÇûpg#G³:Ƈœ7 BË÷ØÉ§ˆÐœhóÜeû¥7êïF„¢ú»¦®íxÞ·=¶;ñÏã ‡â¹çzˆ¨|Šþø0PnS÷`ÿÊž¹ó PïóõÕxôµ.&zñ æ]±yéÒø%<2YLþÁçùVÊÈé >þ§p?snŒëÙï12æ¤SqP‡¾4RvaøRãÀïhÌMÏL?°žìéÉûf†ýð¡V¾‡eà¶T°72,Üþ|O­ ª†]V¼3Ô­yql»›€ª)Íu’sÏA`Ï5ìq—ɪ€GeCP·_¨äº„õdK^ÚÌI Þ#JL®ª`®í}iÚ‚õ&ùÌœˆm;PuóžtÇñïÞþ¸(T!³á§þUËÓ”_Ë~ ã§c>’¯÷MþÜÔ€MÒi—õ¤îO¥—ÿ€*Ç[~ç¡öÝ:Œ%¨"»š ´pžl=LMµ8½Ò®ònÌaÂÈ‘–£¸›Þù²]ÆŸ#ÇgoŸý„×_m|&®Šó»Ë¤÷ÆÛ¨¹q†»¿a?]qØñÞ]\§´y wÇM î4³xú`PY’>”Äã}¤¢2ÞËÌ5óÔ­£Ÿ·€ÉÀÛ¿¿ÚIå´¯ _˜`—ÑW×&ãùU ˜7¿½µñÛnq`0õ Ëú™î¿-e’`Ä:|BÙ‘Œuɳ´:& ׫«‘`-XÁaœ&Ò Ã¼LÂö$f~&OÿÿÖó£ºh­–àÍ`TT>õìioùH9„ytaŠ|dj ×™þ&¬1Ÿkµ-Àh²Z‹1‚9`÷\ÙÇ=¶ãŒÔ”-½\=­;#Fc ªGªQì#˜8˜§]mN£šÛ·^?“œá®íßð~ÅKgÔß‚áUõ™Üר¾ªFnj‘L¢`´ßËQì ž—r•«Ø ?×ú'ÒÊšFý Š)î`¤kªŸ Æ"2¼ûZðýõαǟæÀèp¾Ø‘è“x}@té%*‹6DNo*£„úüå60úô6é±g&û¨•æÔ ѲBõá1DÔùï{Báõ~»úÃöˆx Pér>–oòõi’ˆ¨ñnYk&7lyyàPæD™Ý fÌ‹}‘CRo0Ör‰‚ó­!¹,cî9~RÙTÆ…}¨˜G¾œWCœ1¯â/`ŽÙ…ß—ºˆùåI¹hø¨Fß#O9cL¸fz6¨Þ,ßRD}€J;n/<ð?Ϻ+¨¿¨ùó¦ “j@-¿üáHú  Zß zX…ûý-ZU sóS‹¼Á *Ö™ÿÌ„s’€š:–à+ùi&¦Ó.muãŽ3Ãw0/oJ&WìÃÿó{à ~X½ †²D9G0`(³ïuŠƒ-I)‹S7Á@è¤Ã³×†`˜¹í3Ç  óf_á}»ÛÖ×:‡ÀHÐëÈÆƒÎ`Pê`š—Òí9/dåˆ`mÒêÃö j¹e£†Á•§\È:(ÜÎ/V{Aÿß;¦cè A{ÖÌÜ(Sã:å×@÷ðPê­R0pê,OQÊÞã)z@‰ºK©2ƒ×&ﯿŠ¿ä»“@Qº(ûb­ô¯ßõïä}oßA?ÿ‚GÁ×:Ðoi”%f‚þ£eæ[gRAoT޽<ÇÏ•:{ÔL ô«Üφü“٫ߦß4—> zƒïRÝ„@ÿL\k“Ì%ÐÏ:§]*ªúåÝ‚ë^| ÿž°\c›úaœgy:q>׎Å;<ýôû!g;É@ÙžÀ¶™ì —x_мèwùÉ{~™õÝË 8Ím\׌ýžW×=|Rbg‘•Ó}(©ÒÞ C@ “¥ÆÏÄ 2ùw÷{1|¾~Ú:¹[…È {¼k÷GdÊW¿úf"sd˜Æ_Ad%“?^ OÙEçzÚqDvãòwÌãE¤VÇêoU"ò¦G3i'øÙw´˜ã"ÍÙžZÈá‘ g½iµK£1N ‘~ì¿Tzm‘ä"‰ãÙ»äšð.#Ò"eõ ‘çOEH!²Ä·Ö[¦Yˆ°ãY"ƒ‘M'çÔk!2žüä×AœÇr޾T"½Ó”öwRA¤ù‘¾"ˆÔ½hüˆÇ‘>ñᆱ€H]©fM±eø:”ú(ž‘²ß,»ˆó"òÞºCuAΈü²ŒW½HÏ6kì;Šû°Xìȇç?i–zÿß{ŽV £ˆ4§ñ3A–†Hw"½™í¼)Îøm<5‘z߇¨Ä}x}Õ’©¹ ‘n$–®ä âùŸ·› DzµùªyïqD6û}Ë­‘7ǽ:ڌȒZÜfQ¸^“V[f—PD}àu¥_» ~·îFä÷F÷‹ rº|ÊS I ålëýyû/в/ò~ßÿhy#çÿî0Ú »ƒBqª@»ë˜áдS¦~§‘ eŠÎ·-…k”öà Іʗ?Å~ZIDβùI ÕŸã´ îZùßQZ¾ø~ßÊÖSå@»žQ[|v3Ð.ÿëõDØ×Ž}÷~¹‚}ô˜«K¨ïÐÔL®*ZnÚí}±yÃ@ÓÝõçÆ  Y/üR:ƒù»>jkŒõÛ—mû,u,¦Y¬]rhÇ.L•«Áñ¿M¶¼º 4Ö_:ù‚€ÆÎqR5shƒ&t$y€võú¾#r"Ø—o²_Šš…­¡µ¶5Ð6 ´nóD@#ÐO1 lØŸüÌš¿sU¹»ЄÏݹ&ó™|ð”ݨkiR}˜WÓÂÑë„H )çP y 4nÅ¡„d þŽï“øôhAwôçpO7ýÝô±hOJŸÊà>ç:uY:­ò^ð˘A 1…:)ã³2$lÄù=§têÚ]WÖ–µ ÷ÊÆÐY6á™~µ¬ ¾€•„ì°­‘Å<«H ±W #>µZß 0zp»ŠJ{ å¶v1ÑV0ÚæÚ(ã—†:#×xú®€¡_ÕÎgÜ ºu𝤲ƒÁêqÞ7ë`¸“³FÅ´ v•³±KÀ`ï·q` Þ}&ÎY Åü˜ã‰,sÁP^FÑA¾ NmPŒÓ9û(훊óÁ0«·{M(ÿ’wN¨à<5Ê8Ήç%ƒÒ‘=Ò ëÇ66Õ¥~ëõï€rÿ(l’ P\ßÚÛªíŠvÔ)öÞ!0|92m+}(=ú1)Z`øfìÞe/çÏ‹¥­= Ú§õÁ#Ìc^S³ßûV€â¹Gœi“P.J³^æÀ몑sÕ:Pö‹îÞþúP¾¿‹Z÷ŠAá «,g tsxZ]ƒŒ!sxMÊß­WÍ^Ì¥ñìüÏÃ` ÕpuÉÕ(“Ôƒ ;½Á d=½úC<8kt‰¼xŸ#ÓÖÒ*ˆ°é‚ˈ öYìC®¥ ÂÝÏÏœ¿ ‚FÇßt9¬ÇLîÆ†©v!‚0ÃøúÓ>D°²L¼†ýœ½ö®¢ê§HW`úíµÞlD°  G„]-jÞqSÞU8Š}1ßÌ_þl ÒízéäºÍé–vlž7”jÍêŒuÕ‘[׫©Ø³SL¼³!ä¾´«/7"èÏóÀ Þ'ñ‰,sI.¾ýæãk3´RaÏ翜Å[BÂÚH!N¶*ØÇî±0,ÇñýÃ<2ÄþVîåõU^œ¿nýÞ‡§EDêÖi‡nnë>‚÷›–o­QFÕˆ¶_ÃóH÷óžó;%äî‚Äœ‰Fº_»Žž ¶Çñç=ŸGþý—w«5"ݱGÇÊãq>w|7ñÁºp÷®WgÖñ:¿É»‹ˆ ùoC†/îÿ­ÞPœG½—@2ÖŸ†[98²°•ø6líœ;NƒåBÞ?é]`&ÎÓjÓt8tMSbáþŽOòqÏÚÊßs< ô.›brmµ¶ØâÐ/ -o5¦R—öƒUu9N hSH÷¯,ùö<ñ<{pÿ t-gv_ý£@—N¾°ý%'Ð¥’×¶ÿ:¡B’)蜟gÒÎüÖ2ÚÆhz,2í0¬ÜÊ–š—êxÑТ)ö;Ý1o_“Û‹ùÚœ°†ù—¾K`PõÐìå*gpÊño[UÐ2ªÏžÝT ´ž£“¶ý¡@[«¼ ¬‘ ´ƒ»ÿ>æ¹´ð¯ìܻūp^# hß-ýž>Âuù,óü™yŽï›äl¯z´˜%¿M¸®8.2ûÌ÷[·Ýó 0O[§U+½Ô í?xæÐN¨iŸ½@óÍñðÞˆ÷¡»øOËcÞÇþÞ§Šë:éØºßØh~J¡k-{€ö¼‰Ãó‹Þ7«ãBgÐæÓö/ÅŸ3Óœ øóåߟR«N íÜwôï¼¾DÍYÝóï¥\ûQf y=˜Pþ­ ´7s•ì‚N`|ò¿ï'ìcΚÀ—*ÿùÌ{_#äÁènºAà«a0 üœ~{EŒl£ª_Wq9²Ü„úÀ„ÔÅ*ò  ÔœåRÁ¸&÷ü–Öç`4²”ýúýñï¢J§‚Qް1ãÜ&0JÖ3w™•£•uï_ÊX/zîЕf#_ ÇÇ•`$'NoýxŒþÆo”ø FL·4Dð+¸ð ŒvF ’ÿ€á‡{Röa.ÎÍ{×Tà8yÿX¿ïÃï; |`xùAÙöEÌÍ㎮G ÿq;']ìG)ñ8ÍŒmã›9lM `øû´ïJ"rOoŽ},†NŽ&ðº+Úï÷>Â×Ì,*×ïâyœ.<À†õ)»vX‘¼k²‘;þ‘üKe€áGo®{§Àèbó•÷ 8­VM¥ÑA0¬û¶µ¶æ  f,¢¼ÀðË.¶ÒsoÁ(²ª½Ëè4¸êýÜ+†g(?­YFëíÕFHã­|î´àq¤É{sã-¤)±#ç)ÒÔ=>yqiJ1÷[ø+ ÍÙ÷Æ®HóRÎÄë‡ZHÃÄîdU=7Ò|ð¦]è Ò¼ñ¡àûi%¤¹ÍxˆH£&ôa鋤±ÛÒnòrÒ¸d&æ×Š4CB/ç"ÍgÜÔr¤©Oð¿ýRi¾Ï”Yl# ÍÄäKW ‘–Ù&7¼ö+¡€&)¤I™M¿¼Õi>Δ9þiL¨ÍgI|Aš§#lŽË!ñŠ}MÊæ·ÏÉ4¤1«+dæT‡çE÷ï_³B÷TöŸfwBš«2ÛÔˆÓHkQ½vÛ¾L¤ñú›ážD-¤¹Ï`ØömÒôtÝãúu ©¯ªü1ù(Ž4師¤pü‡åÜQA{’ ?†Ç!ûZ™E¦žçS×\¤p>í*k(Òt26sXÂyª÷~fÂýhzÓ;ýו»ƒ»š™ in-æa݉4“jÛ2æR¦ÇÖ Î&=¤5¾ò'ÇÓµ7W,šBš£1ttKhÿý{B¬—¶¼°vÆz¤á… ÅÒh5>hwßÐnJÍzu&`]xhÊâ~æ’>‰ÿ~7ÐJ'2Š6ímvØð£]@kÞñå§:ÖUï¶òkÀ: yytcÜž8\õsòÁdÂ~û8 Ý˜\4‰õ½¨Áo4º0üÙÑËV íí >+ŸŽJNæ‚òû–àp É»ÖŽõ¡íöÄÌÍ¡šU?Ì››ücS€ÖâuW¹Cs´¬ËŒëÚ*"ù^ëU—L›ìOq=Sö§ƒÈ@3fŸìrÆßâºjâ}+Üä °n½ 9óý<Ð(ëÛÍær±Ô° ŽÆ:Öäúæ³ÿ€¦%íœùVhîñqTÌi·Ñè’|a ‘µG7-9-í*·\Îÿö±<‘P¬«~¬H’pýŸ §m'M]Ñöß8Žzbhga2Д¸<]ÈšP·½IÔЂ5'Ú§W°_üïŸÕüƒÛ6F”+›Á ÇZ’›m 6¿Òl»Žu×JáZV5Pîý »¾ñ:*úŸ!÷€aNJèÙfì+ƒîsfM€!‹ƒ†ÅZ,Xe½òjÁºå¹RTñ/0Pú¥(tý<è±°³±¹Á¡g&Uÿ}Ïìèè–T¡i tƾª=QŽý/ù¥Ç+00z¶ ($‘Ã!’QX''ö2Í%½L‹õó= dN¬Þ;ÝOæEÈÝØ÷†ÿuµŠJ~Æ ý&Pœ[c•›Ú€"üZ9öÁO „¼Ol|Ç Bo6ƒþªæ±7b> _¦´TÍÉ Ë*½Z@IÚõ¢*ê=|Ø™Ò4‰uwYìúõPìK5•ƒ~ß;‡ñyÐÿñ‰Ù$ûÖ"ΉñX Ðy,6RŠÎ®à°:@)T‰ºÄ’ú5²ÛÞtŽ`]ù÷êÝ*@y$7ÏXïŠÿ ¾öÑÌ>§ïãû§?1öËdEE]ö†¾$PÊTŠ„X°?¾Õu©õîP ÿ0i|JBºÿã5¾zH—Ç``Ù™ éöxd§#Ý—=œn  ç7iüü`][ë.I•ǾlX§‰+G n@:¾öiŸ/‡#Ýñ»gܱîâlÜ27ŒŸ»†¬*ÝCºtEU¿ ¤Ó1»õò:Ê»‰ûWÒ%ö·ˆìDºzI§ü 醭¤É)àñê—Ú±á:¤{ÄÐ&NF ëÑ®£—îšÁ[ž{kH÷Ì“ú8¿ø„‰™œ HW…ÿÛ=q¤ký¬lè,;,Vf¿D®š¿¯Ü¬/³¹)Ú¹Hç½XÊü%&¤WÏò¾çÉÊ,¬k­ƒ…SÙÆHçðÞͳ†HW²ÄåµBºi  BLH»Ž–,Ö>tú©Ÿ~ÕŠ#çòšK"H'‡e\Þ#ét§öPÇðõ÷»rÖ—ž"/ãºýj]Hw§HÓ^¤ówÓ¨àì2a2ºšM H·®ûÊ1Ò5WÔóÍEº/óæõªq?ô‚oU#ÝÖ“Å^RH×îã&9í¤ëh‰=ÐþçïËé¬fI¢j“@ûý8þ´yÐ9²ËâXï²Ü.ŒõÑ´Î5d´M;Óì1×?¯u¼»týŠá£ËX×ñˆ î} t¥“ʯ ƒÎçèhRt wjwË. oø÷å€>>Ç¿<^Ë^Æ<¼ùq[ɳ7@+*J¼DìÚ€~cÀ¯5¬?+ùòãoaÿ|¶ó¡æÅ°cþÒ¶¬‡ )óƒ<ö×gd”ù.íOÖlƒÖ™V¿É@7ÒaçÅþñ9Ñè Ö Çù‹ø0?¯­Ôüj›ò!Ìf‚A;ö¹ýÛ»=>íýoéÄó¸ÎoŸ„²a.?}’+P2‡ëaM¸¯„¹xsj^IÓsÕåÞ£X¯•ÏÛ—HúíŠE®b3Ö¡]>ŸåÂ5€öR§AÃëÏKË+²g¦ñú}zY@W‘–5wºÑŽÔGs€N¾‘¿èÌ t@»’w¯à:,³§.„à>¿Ú‘ÄÀ×t‡ûÏþãn”EÁ}ÜJý—w‡A_â¾[ïÎÜ3è³™…= Ý=ÛÁOg@íÏYá) ¿ØdVfîú[Kg¶Ø)€þkrëí³Æ@zA3 W­}Á Ö{?‚ÞÁ1}«ôí W•6*­žß±Nž«s wàÖçw«{@¯0ë~¢ èÑ– râøv!ñ{.^=Þ«Moý@oñ`Êo+ ÷kK×õì}É¥ë ¿ñýC1ì3@Od¬³DAô¦ ^øòÚ´í?'ùonrö×(Qýr »HÊlçׯyûûMŒé¹èhc’J*Éߤ}ñ¸cw(¯Pèwø®ÙÏÜ|%€Ç^ ôåŒwmý äó7úÓ4¿.[ÕdñÔœ!@Þ^{·R¦»©@wãžz´‹ÁkÁý@ðÜ/k ô•÷ël[Ì€~Ø€g¬`ÐO„ôíó~ô¸zmùAg ÿøøèãvÌùC†"oÆ~a4ºão Ð/9Oô_zäõø¶¼ïà‰¤% ÷F§P%î=0áÔjC.УŠD.=õzp²¢ü‰‹@÷â?Ü'Ȇãxî5îÁõ&=e¶üq ßÏã´û³†×³}ÚÍŒ?F(wWžfýwíóGj$ /Tä´¨€;sVü¬(þ|ñ§q³Ú½²´9ךèûÔ?ÓFÏÝ¥ûìǹ" ß)eLýÀz£ªRîéµb lä2ÍÉŠƒ§ºß0èÿ î`³€~¬VÓê7èï±p¯·ý”†âùµã’`@·Wùdå zr/˜~Ø ”€“¹v"Ë@á«tb÷öŠçÑXÿ@yr¢Ç+ô‡·ïÝ숟*1‹Ûe²ØÊÒþ-P>é{n3”ƒqÁ})—ÀààÚÖ¬@ñÊiWbÁ×’ÝýÞå±ÑNºP¨õ\ .+@ù%oŸoË]"y›ÿN ÈWâùú)eg¾b~%ô™^{ ëHsk`5ý_îÎa¦ù Ÿ²O+ßôß—WOÅ¡skiÓÐ_4–¡¬6ƒùÛóáFÐoøøãÃå; ÏËýìèWÐ/Wããáûú—®4‹Ú6~Oø²¤è¿ØíãÉúµJN[ïÔE²9,y1ô¯ÌkÊ‚þòˆõØXP®~þ^'ö(ú*þ›ìí°Ž<~•”ûTv¶»3è7èÿn­¡¹ûõ7›Á:Ø“õuêDèÃ@¦I”.R»ËçÎ&ž„T³ešäS‘ZsKÃÑŽóHíh²Ý‘>¤¶E×mERqŸúŽï?õ6¶ú¦Ô–&bžŽ@ª|¯Ð½†HÍ–ñHí­~®Zµ#©åv?øã8ŠÔXÍ7lráFªM ƒ¹»‘êç ZÜÚ‘Zù±sÆÖHíÞ?âŸ.^¼Oñj[Ða¤Îôö•J›R;³ïê3ë¤nu~ȃ ©i†hˆá¸;¬2ç8“Ú••‘”” Hµu‚³, ©©hlìßÔ^æI“4â:O¤ñ'¡¤ÎÊG¿vŒ‚ÔX¤g^‘YZ4 &së µGAv&“†H}:gõN^'R£ýzf.î“R¸/ ƒ9ÉîHõ˜Ì‚—=7RÓaF&¦H-îaË­¤æCêVþ^Ôb2Þ©òáü#Ó³˜ð}Ú~±M¸µÐ¡OGô2‘šÁ×s<,¸•îQEqmHÍï¡÷¨j8îÃ1..Ë2¤f¬C96\€ÔŽœþ´\—…Ô¤4ÞÓÆë“=j)ùñH¿ÂŠþŸ»ÙÿþÜ=saÏÆA [ \X»ú\ó¤/rŒŽùÐ3òt¹?íBðyl »ïeq è/î}ÜEâ÷ä‰×e¯¾hÛȼ´sïൿ.ÿ0OóK¹}þ«œ¢7пv~ã½¹ˆã¤ýLÂç|Ÿ.aëÖ™û9XÖ²TžÒ3í{üÐËšÃ}b˜zøTs>÷7ß3­j(Ý{ð æ¢WÁÂé@?S9¨è ôYR—´¸0gUŒ® buºÁRv#æTúR«ÄðÌMC_ ýd ·9³Pþè§3=ža^ž•êöz'×qõ!æuº¡QYïÌwlî¿÷±ÎkëÝzh`ýÜîÇéc2Ëâ@=QLˆëzXÖñÚ@¿¶aQâôܼÏ+"@ø|]“ˆõÞ»d˜\÷—û~ó?}©Ý3¯ôîÇ–dö˜ƒzö|ÂXûþ 6ï>ô*a+½ž˜ï¾Ãuó€¾çNñãk¿þèô¹0ûu0°¯þï…Ë@i)Þã3o}çWý•: ¤^>rù¢P(öF–_䀢ìsþý›%0€ÏRF¾`P;s£ÏYôæV§™¿¥¿q~èž_9}P4æPоzâóž5Wâ³(¡Ÿ3§s°Ÿ»yͲvÌ Šb¼ìpœk¿µ©ʸUM²¼½kÿþPFxƒÏ+Oƒ!×{Êò^(Çýøµñ¼k‹?F1o úù¶šaÞ_N^Ä9ÿCð®ùÌW\NN€}q¯`: PbZï†oÇþô„3ÿos  ’þ‘CÃÇ|Âà‚ë(!Ñ(`ù¥l»{1Wwå¯ZaŸªÑ¡ä³”¿áèñ¿¸ŽŸu—ÿ8æì3ö÷íÕá½—€råCññ"ÌçCÌņR<¯Že{OÙŠ\0`­2\ôŒÊ †~tnPÜ¿<ý¬þ×ùæÝà=ÌÿHÆ÷û>¸lwž ÿÁ¾¼>áâ9C¼/‚â¥>Hõz•6} ©P¦§¬þ •oË2ø¼K?:Ø#ƒT²e¶ìðC*mYƒøê>«ËªƒÁHuŠì]àÔ8ÖòÇ»‘J«‚ãà1I¤ºGúË^§¤êÔçwMJ ©¤? \#‹#åÕÛeŽãì{U£L‰C*sOß¾]@ªì*“V’sHe©ÄÑLr©’y`êV Ré¯:º=n©Éäߜ܉TèÇÎâ<—•B’ͧ*eÏÕ­ÓÑHåìqÕÍÍBHåÝ=ãÝîSHe¢ùä³sJHUR2êpÞ¯g‘E;‹©è&/jnjC*´·mÒw#•yÆý2"¤®4øðÔ>¤rá’y´+©¼lõ“TÆ¥ë\f‚²Å¿|ñ¯nHÅX!v¬~©œožÊ"¶#•ƒÙïãÍ‘JòÏçmŸDÊ“J×Õ¸®ÚùÞ|ç¤ÒøÒ‘ø5úuàü³v:Žñ!•7µJüJ…žîþöP¤Êµ»ÉœR„TÕ3Ã…òªÊ›Ÿ³=’øç0q®@6 ©UýÇxõÏísŽm·^h";ïÿŸj|'‰yXLhj«éÄúGùwøÖSñÓWe°Î‰7óšÂº-JÞ6*BŸKF„cÝFÞäÀf ô–øÐO˘_÷m¯ªÉ%½.ägxÂI¬[´Þñçú9©Sç®ÝÑãÍOòY ÛK±ýöMÀzKôèþxÿ‹*ŠR°Þ;‘°—ËÙèɲWub? aÍŸ€®n¤÷ Ûè[Þßæü‰u’i³S+ævçåwßyù»FXgÊ5ýô÷9ÐÃ?«rEcŽ¿YE`~º>N*À÷SÏvLpýd¸®¯Ã=ÌŸÓÔߘ›NÛŠÿ-bYú8òÖ»t ÛQ¸w`êïz}bô*Ðw×§“åð|ûT»ð!¼Þ'´ö¦!ÖŸ·;‚t±Î³UXÚ‰ù6Üÿ_üGf>‘;1§ß¾ØÎ×ôa­ëû…pŸÞ14ŽëàúyùY»0Ÿ/ïŠ8¬ tçÃ1Ÿuâ})å¸þô´-ÞØwÝ^ N¶Æ>ÎI¢A`ÈN¶K–ô$ ͰÖg]Ò-kõ'å‡t…·z_`óoe×,±9£Ø¹ˆo߯ï:‰€ÜÈ%“èŽã‰0}®™õ2Û ¸{@Zi¸6ö3Hr¯¨ ™7ÞäùãúW-aß7x¿“5î'ÕÝ,Âú1vUpÈjgfºl=û~¡‚Eì3YÊeÏ$ÌÀýQûîµÛt« D -8{©v?Ò·§ìG„{4jXŸhU ¤ݘ¡Ø/@fõ£ÿÒ³‡{$¶:ibKé3»` ÕúOîâÆ~|‰³´¾Èb…éÎ&ìë»58㢀ô´¢õAf²s’æØßi‘/Îj€¤n}-î%\×ïc÷C”€¬¸‹´öÒHëlI?ôqýRÌÚæš@òßä±3eH%õ{ g±·µ2tv²à‘^¶“@º¾W.{öÛr}…}LE@ºïÍ.¦|È6›\7ù™_ÀGÐQHAÁ³afiþ÷ëòjÒ8M9©xü<ÒT¼÷Òúr5Ò$¤)Ä{#ÉšgZq|Hãùþô2n¤ù}ðTŸ./Ò|ý7DÉ!ë-…ïOH£-&%˜‹ i&ò˜ÕßrBšÔb¿º!‰ø¢Ÿ!ÝH£R}¤&siüìS FšÑÉwjý§‘fè«™† Òd,„tò2–ÜÔž×NåHs›ßFïÕP¤Û³«Yã-ÒŒ áö݉4O–ŠÕÆûò,¦.E!ï£Ù¶ws‘¦Ú6Ý+§ðº0!ÖúǦH³Öê(ãeÒ¼šâhΖ4îT¸ð$â|^î¸ëî…4¥{lr‹2‘vYiè7ù¸Îͪ¸>âp÷P¼ÿ”ûUW¤¾lòIlHãV™â©MKH“‹;³þžÒÜäpóôüÒL4žÂõx>y˜%‚4÷[ñ”‰F#M¶¨sÇ~â~Z{œ<| ç×Ky»xÇucñ78Ð…4¯&ñü‰ßíž#Í+côÏíHsïÉBóHóŒKhCG#Ò xü2ÿ÷5ÇOóÀñJâÊG+p߯õk‡z:¸û.±Ê?Ûî–ÕëÍGuÀÝddH₸ë'¼wÝ ¬Äs{Áý ìAgìÛdöÝØô ÜO¸%œ±ã÷ý~ÍäÍBàrýΉþýàN/(T+ÒwÃo¶ææÁàÎv·úùA¼»<Ùïoг—°ÛÜÍ”KŠ?Dàýœû98ÁÝ¡Šÿ¶ ææ¼[%m?öãﮒÅy03/=ÊÛ8Ø=îçÚ^&Êã}Åïn¢»ÔþüZönp—}vU¯z¸§d·­émw>BâתhœGEêåõyp7ºÐÜ¿Œuë&¡‹j"¼àÎ:øSȼÜw7} ;ôåOßÙîƒûfůyÜià.¨®/›ô¿æÉ—Á]g<ä#ý¸«æCrpž çßR®€»w•¡·Ýp½GµèÀý»ÖÚø`ܯ>^8}÷=“ÛÒ'ûõõc_.xº‚»ëÜ‹Ãå»±_?”Ìy9ëíû±Cà®8#®¤}ãÔßÝïøî˜K•4ÂÍ'Zh@¼çíaÂDµ×΃»¿Qudã¶ y¨…žhNÀç9ïÖÑ] ûçÜŇ=z@\=üWÿ5 Ÿ}Šxù~ˆm¿‡m&±ªfMCˆ'w8ßmbÅàÓCI ý¸Ÿ¼WseZÐP‡‹ ¤ƒÜ1D›Ë@Ö-á+K@òŠÓŽ2-ò)ç³£ž@òa×NÈâŒE¨šÞìêgÇq_þæ•õââGµ´±B f'ê©©õÑ{$»ª×ˆOIq¶@lÍx.ÄóKÉÚ÷9@ˆoBWO™žÀCN!™ –TÝ|˜HcœÜ©CŸ€xâ´Öl¹Yš/\àÿÄ{‘Èã‰=O»žâÝÌ¥ŽöÍ@ì¶pX&e1që­ܯ·±;q¿˜Ém…o˜Õ]Óƒó¥]Ôˆ1Û¤ÍSÛUŒ§€xvׯL|ÿ`¾"¢Xña¾dë—ƒ@¢þ«¬â·³„[v|@’žû t©‘þû}D.RUؤ—%€}hîÙÓEÃX‡ŒµH7p5"Õâ€<'G¤z9aR–y©V‡§LØ6dû÷ !å§”­Î³Hu2ÚñtßRS;TsÜû4])»· ÕÌC' Ì‘jòè‹_8nÄÑ· ÇðúógƒþfŠ`n&nðx‹ýžmD„"µ±žYÎì£ÉëÂSwÝÚr*`]Cj,Ô®qâùwã£òï´"5IëmJ1Øw+G&ñßGj1ªuKHËeWV#Rw¹Ÿ¿éX R—KyTP}v×IÂØ`)R›ºpYve©•<×8"‡4TÞ+µ°®4ã†õ™êƒ×3ìƒCHÍÝ®ýcÖqó^ݵUAª‚Ï> Å>¶œyIˆž‡Ôš_=øX¼ŒÔ*:ãeL±?¿óbž!‰ÔžGL_ Bj óG©#Øo²‰7›@j×í”÷ÃuZr“"Õw–­¡[±ßoŽ‘¶dSÁqNGÖ½MÀy9‰™ýÁõT×iéoíFjNfUÇ×à{î?n¹ ¹áñè×sUÀ}ÝsûÅÆp¦mJäÁãŸÀ•ÕVpï{ÖQ:PîM»¸‚^‚‡àüé];«ÀýýÄæÊIð,^«›œösÔ}þà!ÌqñNàð`y%¢VpÜG¤|)}©à~yaoå>×——?sò`5Ÿ¤˜`N½¿áehŒ¹ÐÝ}pÜßý%½c޹öâ”ÿÇ«à~Êô@Õœ ¸_Ê(²&Ê;œ‡ÈEË¢íà~'SçcηÚNiwf ¸7 <·ñùåí«xÿÊNâŽí˜oµÞŽÛh¸NdErŸD¼‚óK5´Iã™Erë>e¤¨úw÷@s1’§=ÿ3äƒäBöµzHH^$m¡?[ÉF^ú|š-ÉyŸõŒDò¥åÓ|þH~Ÿì†héx$Àq¬øÉ'=s¬ŽÁyÆmx)!)‡ä~qg’5ÕpsžgáþÊéPžîZAòÒ¥n’Çv"¹Žýc¢¯‡q?»—f{[‘üñ‡™þHž[Iiõw’<ÙÜ'Ú…ä+Jò40WþûcB¬Cnðó? ÄÎØ#³A¾ÌÁH¡±äÇy±R¤PË87䑇–Š/ÔH"ŧ“¯[~B O|C£x‘âIÆ5¤€8½hÙH!^€µ·4ÇaµÞƇä&ƒ¶ª ÓûF$âÂCgrûù%wŒò݂ڒd®F`Z ݱ)4D DÝ‹^mÞH!,e­uïRfáûÚ›‘‚èVœÍëx^M©œ-)ý|À&ÔÉUm©Ý€äŸïܑҫ…LËh=INH!*êëˆ3^w`‘ö¦¨)œYQÏ<5ž§Œóa®ÿ ãÞm•Šùî vq …ßaÜŒnn¤ ^kïßäßOÅ Hãç¥ÇÓ$/W!…ž'üãÿÔÂcóÖ¿éóH!F3ݲ7 )Z‡ßé÷^³ÐÂ~¬ZV†"ÙÀ½Ãž¨²Ý ܇ò¿þKkÆ\ltn¯—÷ÇËñ*'Á½ì½¤Ÿ)Ö%ùS#9Ñ[Á}âÔîú¬×ЏnÃëVn>²;91mü*ƒŒÏó·b=î?¦xÞ*…kâ5¸?ü~Qý(si}ï¤z wmU®gÇœü¾®?Šù:$²åÉöS8ŸíÞá>XGÈ#ÙGà~²²æÆR5¸ãOiÇÝóÙÞZûåïdŸ `ö·üJïsUp/q¾¬J¬çŠÒÇGñú·ÁO|~€ÿÉRgm¬yØÓêð}맘‹5›”Zò§Á½”üñià5p÷ãõOLwÆ}ùº'Ê1G×Vq>Ùß9žÇóØ$+ƒ~cÿ˜4þ‹×7]Ôû$¥ŒuãQ¹^:Ö—éöÉcÝÚ'mÈ£…ûµðêSèÁX»8<”¢"–G¿°b," sëWÞ¶Ö÷±®ÿómó>FÝfÛ)üs 4ö sõÇuÔEzsaÓßžº²õ7~NÞÝžW•¿«;õ/‚ö_VC²?èˆNðlMìÝw7cÞ¥aã‡aмhEŽÊ~ e‹zÉJÇ4@gÒe˜»_¯ÿ÷úÅ€NäµbA© ó¶ˆñž:‰ÙS¾ZQlßùÔ2¢Hc‰z5ò‹ã6VqQý¥ŽËæ> ܱëïÅþqËÇIýC „ž/ÿEÝ7œRß¡ÐÉ´-¢ tû%ôý"`¿½ÿÑÞ Ð}î}ºf§>èx«ßW[ÝWÇG2y›A·"ÊßÖt?mK®ìmÖ«ˆ]ˆc;BÅùÚ@÷Ó`Ñãˆw>bã èî¸-}#{tYBŽ—µÝb#‰3áTÐ}ø(°‡Å tG…C5¾ÆAz8CI{7„öž?f ºw ~ ܬ«\Ä¢iÐ5ßϼ„]U‚EÁÞãÚÞŽ ³úþ¬÷ß|?Þ[ƒiè†]Ørª÷Õ—û‰ÉLè>¹ÆÈ"•ÎùW/äÓHÙ É@Šs‡ÕãÒ»ÒÅp®¤ôˆ)Ý–¾€”|Guü¾ %¾ÃA~EHù¬iÓ+ï/HEQåûÙÌ™pÊím:HY ¾õ"¥ánfßq¤,#Þa¿ä‡”±ŸhàÃë#™Þ±!¥#OÚiO"ò‚ž‡]RèÑ;Þ÷ )7ïRfªG*κ'WVòýHÂÁb¤r+âW»Š)R.õ‹þ„”{ú¢œ2ÛÑu¾oHi¹’`y£T•ž¹î¹ŽT8ª5n·.!ã&Õp+5¤bXËžÁ9‡”®ØÚ=›Â¾|>^8Û)£Ï£‘J÷êWRå2É)×ví±FJ“_=šð¸±ìfr)±&³ï" ¥SÉ|'·,à¼2ímBÊÕ©¨)—s¤EŠ!åÅñ_a}æHE™·„ÆÃ@JùŸ<ŧ òÞ, …¤|¤ü‘|cBÚ )ÓÌô¿ò!¥ÂIºüxR. ÝÚä°)WÍ?¤oAÊI•æz+£8¿)¦ÕÅh¤<"½ôkÈ <þ{¯Ûð¸£ù¥û²ò.Ã5ðhywèzóù%K‚GAñbà‘FëÜxç=x$pTEF1À£³éöªs:xÜú"T}žððJ¶Ê>Ù¡yœ˜÷Eø´jÇu±k Rà‘söæý]oÁÃó‡ä®àa¬}ë”xlYxnŒóo;Ü1C'C#Í÷€GܧGêÔXðH¶ü=÷Ï8fg¼û/x|UÉ9ž}qŒ@oÆëSà‘Îy)àqéaÞ‹n¼®Pl‹¾0ŽðŸoÔAð¨æ¶äYÑÇ|Ù÷<Ž6K3êÀãdÒ¤«æVÐfçKÞßÁ㊧£gx\68£OÁ#°»¦hm7xÔ°^r&¤áúyl:Àã7r†ß€ÇÌÛÔ!Âfðø‘ë,(ó ÇWuX?*„÷c½þ)ü*¾¶]2Kê+Cë¥üÜ—’Íwo˜¡ý¿ïÀ±IV~×-„é ^|-L’F\@×€;"ò†5èºFdÏ,B¤Õ§”¿ @xœ‘þØÐ´Ž)*ù¿Ý.‹ñDÌ ò‹ÖêE Èëª?uØ >ßÁÆ Ð]8Z¼šº¥ê†øå»Ùê9GhÊ/†€xb¼SÄH¼$M.^ ˜½J< Ä¿-ºìWÀ¨õŠ3¼Dglû¸ŸáÍuƒñó@ˆá{÷d«+ʨ¬½@8Öòü}G)¶ö×À×ç¿üÖ|ù^¦±êC,@H<`<3›D¢ÉM±ÃWT®Ð{å/ásb̾ T/ÿ<~ 󩾡‹st¿ô\ö¾ÉBž–ážõ Ä  ®%!:èÌì*žßÔFx³K ¥¡l¡5¸‡²Ïl-`Ý´Ûâ/ãq¿¶îŸ :'D ƒÍ¤]Ñ@øµ‹$s çã #…{ÈvEðŽã=ÜWE'Í4 JJ.ÆïBê·îïß߀nSצÀó{±³kH:[9äùÅ$'˯ÍɼŽä˜ ˜_‰C2ûR*‘,¯9eö•$“}Øï]Y3/Ú=„6ÿÈ9T¾€d{]R³†£‘;”N!¹“ kÙm‘,£f1aê-’yÈZÈíŠdŸṠF‘BBsáYÅ,¤p:¼Ý§É1ݪ=ŒBKu¶M;#yOÎ[‘Ô/Hán¿ÂÓ;‘¼ÇýRñ¶u$Ê[⦃ã40‡by8ã4«;ö‡£–òRPRº|#¬)ðÙoe§G!Ýã_§"‚œ­ÿ© [ì{zýÂñ,SOÿZFŠM®ž ÂH~ðV´áì??=?ƒ÷óɲUìF²$zmÕvo$·­¡î@íº¤8ÿ;)°-¾ù>…÷ÍÜÐVŠõ£Ù¾¡í:H«Á$㨒+ãéýn…ý¬È¦¼ùH¾R¼=»H Ék³óTëœ]íDÌGg$7•~­ÑxɧõAò×ÒtN­#1¹Ï‹ƒ»‘üã<Ç™ž>`øÿù Ðó6µÛØ¿¤ƒ±ò—bŒÃK9µk~ÀØÚ«íú?÷Œk“ïý c9ZÉuc`¿¿åFüEÏw¯€a½Wì ÍÉÑ5W­¢ç¢X˜tщo äqla‰Oõ 0œso®)CA‡Æˆ÷Wæ.úžPŒí…‹¥&;Ñ-ͽiÀð¨å»QøîYvrÀ¬Xü­ 뿎Žü³ó¹½ç‘qºâlÕ0²íßK†Ý1ë§sxúÔ¹FÀpãUäú Œ’Ö}­8_«iÝà \—ûÇ£O´Žáy* W?â8[܇O_ÃÜú3¤e¦KÆIYþæF5`Y§»JAá~p¸z Õä#üFEÜ\>îKŸ¤ ¼06<©U|8 ºmÜëâYÐ5 ŠùóA ´#¯Y%‘ýwöKÝ­_B*{ç@«~ÏûÐüœiŠk°ë>•õúWrÕ óòÝæ¢ë® i×qyývh› t]óíù)¤ÐAÐîÞu¦²²´“R}þ‰Öö•["(´iSÿôžaNyxËü8„uë÷™¬¯ó@phÌQ®©ׂüGÀà²,^•†¹’.óÛÆ^æJ$Ò½= Sû%ñzÏ^ЙIúvnйìQüÇåèþ-<Òàa:Û›ŸmãKbþyHž~ŠC飒[NÛ#ECò÷ê¸äÇ |ñëIb9’rZzÙðÉ ÿ;þé(¼øWv%3)ì¬gZ(.G²í§zŽ2D|ýfWÅôÝHî÷ñ/ç}ï!yûí÷"ùHnÏœ÷/$ï@LMÝÿW&O'b½XX{91z\;¾q)|ùcš$ʇuUõ€".×»s EÖ'G;™"sÃ^ªè2RøKýõ¼¯É÷&;“æ"o òTÌ‹º?Á›ñ¼É¢ëâÕH1WBÞCD)^ê¼óY)ÉkE’Öêz‘âý7.ú7 ?­åQýF¤ÄÖ¶vúöÏ÷EÂ5J³‘üê‹§ìû5‚“¦âë$¿7ñGÆ¡zÌ9õâ„óÁHѲæÏµ.¤i;{1Ê)Ê” ¦×@ŠT;µ÷´!ÅBcÁ;cõH~±"ïhöÙ«9;bBâƒFõ[¤À4ÀDx„û±_&íY®ý;†¹ù®¬eÊûùª÷µo±žz3ÀŒç¿hÛÌg3 ŒEoËsÛ€ñ.&ZnïF`¼ï˜{øÑ³ÉT¼0ÿ^‡ö‘Sð}Ÿq½ž=Àè¸it5VKv÷>cågÐ×{ÀhKÒ³UaO^SÉ—ãøþkæÖËÀø;÷›øÁ?Éþç7rc`Wëú–\`ì­#^ïF¡}mÆn ¼þí¸6£ý5OŒðyïŠñ˜ãhÆ+éÖú“;1×Â÷ž(ÚŒã~å‹€qIaSþP ÞïWŒà;]ðÜ‘ö2çñT=k—æÕ«ãWîcŽö6»‚Ñið”Ö` ¸ŒûGÅ#¶ÝF'õø¶\O&ûè¼ßö¹Ÿg¬q†tGÞ8ž¬g¶¯ èÝ0?óïý) ù¤'ØK}1ñäŽë@²%LþšÄf[•©ã'€t5†¼SHñÅŠÅû€ttvƒwÛªŽñ8)éxÑ2ã¸Bì¦D2[øøÒ”`|+‚ÖíûuÈ´ÓäÂY ‹§˜š= R–åðú¯$ åþ¨‘`ô))•ܧÈ6WÜörF)Aïé÷|ÄIgí‹Ç¬Ö¯ñ FÒ—·š'y¦!ÙMפ¤ïaž‰þ ùôÑÉ„Gn|Ä@2 f‰lrHvÌ+<¼cÉærMVë1!ÉoÏ3 óß÷ÞHu!™«ÁÚ/{*‘Ì¢ô^$#[á‘<³€ÇDÝcþHÆb\{Ùß ÉÅÕuôÜ9äÎp¸Ÿ+Àzм:,Ö…ä¾èз<|‹äÈ ·í¶;!y–ʧvøa}d÷øúh=’;õpu!Ùì§ϖ‘œŠçaå¬ÿˆœµäÍQH^Wâ˜ÃævØæ&ßr!$oØnY…dÝÿXØš„äÖÞ¿Íh$ ï› nH¾ì«mK<’››O²1nD²b·CR✤ÃC56$˲O ˜B²Ñ ÷ÒúÔÜWη¿ÅÔ¼;§Õ#C$×öÈò÷/Ìy›ã„ =ÌcK•­3‰HNãñæñ¸.ÞK›«’;Ìàlù·Œä$Ø•yß"Ù€b.¢Xgª$È44!¹˜|‡äd/$·eÚpT’;+ÞÞ-«€dŸoí(¯†þï™7†ôÞ¨3_ݰÞ(‘|zë]kþ/ƒ-ÀØ$+¤;Ì )+O™@`LgœBåÀàt^ 8= 'ÉkŸ;ùýûã…íy5Üx]Â…cœ8Î<Ï­¶uÜq‰#Æg†¡bðP§]×ã@m¶Ä×q(Ì\ëA'¥OŽ˜oR¿Üm ÕGJb4`d½YtE<¦/E˜™ázI¹_¯ýåÄu1þ•›Ç‹LµhöÀàWµ½Œý¼ÞÐÿ|•žRö‘¤ø)лyÞÖš© ôün}d)9äæ-ãaq•˜? #¥xþ‘Ý™ÞЯ7.mÛdÅmÊ QгXû“R z>œÂ4Ðs¡(ÖwzƒqÍì‰å5ÐÓŒùÛý—ÈNÝÛ—ï úCŸôÏN›‚þûÜ !-+ÐOG! 9 ÿWî¤pÚ4è§¶\µJöŠD@ÑûÎÐ?*÷<5²ôÚ¦íù ×ÿ‚(ÍúŽïªé}>רG;ñóü[ž»@/\æ®î Î+ûæ‡ï;@o-Ϩ³g ô^ïÒ9ßvôWß 7$¥,>øïž ÐKúìfÙôî51ŠŒ¶‚žÞkÙ_¹ 'yf<½~÷ÉxUkqôîŒæ‹ €^Á)ç mxÝhúyŸ³þ WùàóEéVÐË`ü,Þ ä—Û()a7AŸéDWš×yÐwÓ,U|ÚúrnÛdz@ïáŽV=-З:#î] ze"|³YÛAßço”jb8èµhw.†…ù£Èã«$lþß{ \‘€»¿pn0êÚw×™‰ Ñ¥M{*Þ"Ánwç)ÓHðÖs‡´ÏÓHø¶Ô¹mœ†HÄêT¾»=âåÚúM¿¾ ÙØÑ¨ë„„¬‚_×Ä ¡[9ÞÊØ`Âë:ü=H0pVo> ÈGÓ-بnêά+íHÔ°Ä`û»4$’sãê÷Ø $úø ߥJ^$b'a»~j‰9ä§?UDHd¯ÍKÏ4)h¸Ú·? ß«,$wº"á-2g­í‘p7]çýž$úYîâÁþ|$¦"ögaï2½/Á–6€„ÑG WS$z/»!½x‰4ïŠt£×!qQgÍI5$*À’³ãM¶½â{3= {ýÙ`S ‡„Xí玫”#¡Ÿv½6 8_¥™·EåHô!5¸Á³‰ŠÍ{÷`‰®Zyœª3Eb2ßû™õµ°sƒmO)9ªñMÈïWŸºlîX„„¿Z/ï Äñ96m|ÄgDZz€D’Ùd«‘ˆùƒ}l™H䯩§Ÿ§!ád–ò{>Ø_òý÷½á7ÁîÚr}¨_k„Ê9`?(t¢åèùzðø9 þÜ¡Ø_f¬”h ásÊKª· ÉÁ)¬Ç4Jø-_`®m4¸‹ý¡R™Ìf¬çÄ<ÿ»c¿)a&@ÑžPZ‚í÷¹ß˜6*½Ç;·±sŠñèe2“‡9è¿Í-`suÐk` <Ï”÷‹.€ÇŠlØAíYðè})+©“ u¦Žý£ràÑ$Ã7i CO^}~)ÌÕÜgíj•àñÛ ß›70˜–®=v|ˆ9õhÓÌÌSÌß—OJºØÇ¾^Ÿl­åÁ¡¼ï§ù÷¨Âq̵mqºßpüËŽJg·ã:Z>üómÎsÖ¿ûüÁcÈοèÂñ³Wr—‡ÁcLûØíëᘗ/Ïæ:a~4“ÎUƒGßÓÉ´/dÌAŸßw’±¾$î9YU†ë§vÜ+9‡9h_4Èä€ý²“å˘oÇV¸n;C1¾>øÁãí÷+Û)‚G=©‚üh0X#:2ßR^Ýöïgd€äuLªõ½7r<ß}½H;˜Æ3ÜgøPK<ðë2äv¼JTÁ:h¦IÉHH·©Gf‰@ÔTx<í Ä1—c<¹@2êä:¼‰H2±{F™Ö€¤“v ûwҦş¼ÏØÙ-Ï)ä˜MF^[>ù¸ÿ«¤âÕ?ß?À‡ø,¯yí31Dwf .Ö!©WB·ªBOºòO©ú4ÄÏñ#ë9gu£:Ò¹ˆý‰ì­¬/qˆ—vÔòö(ñÜ¿PŸ‘\‰xj*Γ¦Ï]Ÿ.Í Ä½È÷íÎÜ(â¹~ºÃ§!!w¢yŸ"²í@'Ÿc¾þ¸Ù™–†„¦ßxÔyó"AÿK[R‡ð†‰ôÀ.$0vf0Ï 'ÖœWÅœXèñÝ<Šê™ñ„"K’öÏØª‘°±uÎSXµ¡ŠËZ M2ýðþV‡øk5ß9bµûÎR$`p›;ÚÚ }xļ֑„ ¬Ç|L‘PÖaÏ>ÌÕÚ§Š5$\u¼+6 Ä¨Ë E6"d¥Ø)$Èï³Y¤‡œ½îÇ(o@|/“÷"ÁgY6Tq\ï벯±!‰µKS³é݇ڸ®w®rKñyýcàØVòó´“w$±Ÿ[ê=ãÚŒ}纺ܥÃâÀª£…]ÆÔºœKÞ%`ô1øUvãÍ¥ò[ïÀsSj÷©“Ø/»&‹E'߆CF_üñ¯…££žl$•öëØ÷q|%åë…}æ³s 1~$`|Õïû‡ýózQ˜ÿT0> ﹊}ò䙼À|™ÝôûH¹%mq×äoúÏ"ðTy×?þˆ6|¾­zû>L£¬NtßÖã?÷å§às÷ßyºdÖäç\Ø÷Þ>ʤ–Y®½^qæna$Û.Ì…+Î(^\Áþ÷â§áÃ|xÛ3±_ÃÞiüMGÂg SÛó×ÉÈÞ+ß*éqDÃÅ4Ì{‰ScBxÿ¯vVF¯ù)<¡ ÷¿©%w‹è= ¾¿9á¬S‚þûmÄn|¾·ì®° @›öäÜéCv|ãÕRįԻØûlñ?/;l„Ÿ»|³Í3fB‚<§fÙ’û­íÊâ{™tÑÔñoi˜{ºÞŽøŸnùÆq×m\:ò]h3â»áj={Eñ‹,Ô°†Æ!A«ƒ{žxáó¾- ùÝÆH0ZÜ娡ü"Íp$°r†òï¯[ÿZCDHP¼ÇìÔÞuæ+_Ê‘Àë<‚x¥)´ØÄ²ûkAåþËYúâH¸úGÚ»€õè ëb=$œ÷ãN`~\ ‡L>RCÂ: û…¹pþö©_bœÚe–0.…„y?•˜GLÅg_j”#Á¢{Î8`~Uæä+HBq¤ÏúíHØp>}ðV)Ncùµƒ ëÛÂÈ¡wo‘pËÚË8þý¯mèm0¼mÅ©8Š ¥|WB‚Þßr¢t nð^ýr$n¦¶ëáü?]3ÖÄÜ éÜáHPÅØßÁóYFFÔØe 0Š®VÍí»ž,çn(ûž¬.¿ôšÑe'j«Žuk5ÏÕº ×Çî|Å–žüçžìÇþµ›Íî|i#0š~E<‹u`“ÈþÜ˜ç¯ Ø~nƽ53¥¬ÓVªžÖìÆûæw½9®ÆF]üÙŸ‚Ö¸OC/ÃÄÝñ5ùvÖiƒ‹c4œÏˆÏÃñ'µÇÿ¹ÈcmÛŸöˆ&ðÜX°§ê<ÅOÕ²zÍa¾=r?Çe„?/¢¯J*(ã†^ì%ŸMÀX Tú”#'~Zæ|®óØ©é{5¸ò©ý·,€2ðŸÜ«Ê‹ggvzÈ%~¤|§•PNÅÞü)°ú•yÏ«ö‚þÏÍ¥R)¶@1•3Jóú;öз÷6^ñ¹aÖœ››FBëlå`Šò©ã[e¥â rAç˜P”œÓ|Vý}Õên`d”×ÖÁ`‰ä-ÄƒÝ ›'/6ƒA\®/ç5&0Hºa¿£U êëÚo—¶€ÊéL{J œVtÿ@±2”ïàÍÊBDÒ^­0 L¯¾Ûsµ (ƒ·2ªNeÿ¾K.’2@9{¨sìyPÖŸMôõJéE¯mùA`°óÈÖ$‚¡@¼—ŽŽ7ûz) (Ǩ~@ñ=ëóó®£5Öï!îÏýŠÿÉh äÔÕÍÔ×ådÂsÉ7 ´óæÈ´ÊÅýLg9¿e¯C ¢PøCJÖsä€rWGª`I ÌäÇ•n†ƒfzP±+Pš¤C·º€× Ú]…P Tþ­¤iâ:)¦½òIñ@I|›'>þôó6ÔÄ-üBÌÿ}­PDeó_5•‘K1½­r¬KCL_Óc­Øç¹}Ï‚ñ@óúú¼Å>í|Äì®#ÜRˆyYpO‰&£yñÒ¤çáGÞÍ+E#*Îoðº½îÛÙÓ±«—¯Ä5¯?R}IhþûµÌ©¦…©ùŸLnÕ£…9Är>Ȧ=Û±œ«0@,ÌtÕ‚Ò4Äfos]„µ1·¬Üþ°º±ñÈþ›†˜åûù¿Z«!–›7 D²ÓyûŸ_æ#ÕÔ-¶G!æ™>_+›öØ:q¼,3èñ›B¥Þ¬AILˆi¯®ôÂá9Äæ wÔA+ ±„ñ‹PǽøÕ-JÄž²¥äé´æB{Œ4±ÜÌ®Ðüo|ÿ ]±1iÚžõ}»ŒØwøýÞÍæŠØó?G][b 6j•2WĹ¡À¥ü¨+âØ ¦ù€»±¸'y´ >Ço[7ãzÃK>—øW"æ·ãݹ¿q_ÏŽ1t>×!ææ—rùaSˆ•íñDtb:è£OÚåX"˜†Æ˜›×ãèìCyú¹ÍBoǿӦÝg°¾ØèÉïÎ ~žêw”1ðX5Þ å•À`ùõíòê2ö£™6³aß79Nu¯=0T‡ïûl`ž‰| †œa\°+Ö+"¶QÒÏZ€!þ`ƒ` Öa›õŸ7Ðð>ß&ÜócÀããÚcðǽ…o°ïL¬˜?ƒãmœ¼¡vïû³Ã¼_ŸûkMK^쇽ãg~`ßùb×;?)ðø Üue—-0(s ­1ï n¹Õ˃}-»áÛìÓ®˜yçà<’f`^Û^ËðÚý'O™l“(ÞïÆ–Ëׯâ}Ú‰OY“ÁaUZ£[‡ý«PSÐZ>ö§ç;deœÁ£?iÑéÀ$xÌ ~NúïÏ™ÙfY*Œ&ð:£Åk=¼Îà¿T`ˆ8@°M9‚Ì’f90ÈÑg|næÃRïö‘-X?;æË¸? ›Lý5Ì]».WßÛÀc°gï‡s¸¯9$¼÷‡]l¸î!nS­¸o÷‹ìÊS/©ò øœÇظ&â”dËË©øœ=cáúƒ¼.luâ ?ý;~±3(úOÃòE§l»Yƒ 臑³-öà8\#ì*û¿e·OàéÍÕ@QëJtõÑÂó¤x›B€Bˆ#s1ã}Ø×®šæÀÀü¢øÉÂ0Й5=}r/pT½éh<Œùö†âu¸<Çäð{90°UUîÃñ^² ³½JJèz‘¿¥0P²E&¬¥öÿ éÌã©ú¾>~3ÏSæ)S¦J\Ük>+®kŠ I¥(*E’¥R$™B)•DDº›$IHÆ™C™eîÙßç×?ûuÎÙ{íµ–Îû|>ÜᩌI W6ÝûÄ”sÚßeÌ1Ÿ·U9”>ÊêóþÊÿ€ò¾ÈS°Ÿ?Ðé𮩨|YÛ?žjZ©†'iÇ-58Ãyµkã£ßçÍ€"‘%½,? ™¼×m0_£w¶µÉŸÆû.—úÅc¾ùÍí¸ù_âw·ªö P—Ös`½Fq ö:vv t›¶V¨}³Êi«lÿ/ t±†iÀõ| õRõÀœÜ› æ„Ïg·œUeÁœ3îÛûv( +O“¦0}µOç€nº‹WõÒ1øßÛÝËcOSÂfOõƒ'¢î/Q€ú#FýÌŸNü‰´1JØ!GLH8Ò/ï%ú%„d=¢ï¾®ÕÜ®0b)g¸ås«?1>ñã–Gñ[²Å?_]ŽøumuË„ñÛu}Ñõ ¦öžÔ=FLT0ß6W”#¾ªöø¼%Íö;U&Ž#¢¹õûA­ˆ0âåË“¹z$¢íؼåѯ@ä6µ†ããï-´³Y‡Âä’¶>…DüÜn÷IK+ŒøñøùVñãú-CŽ[ˆX]Nç½ c|ô⮬0Æû¬Rí‹ëˆ_ûÃSÓüÒ‰¯¶y,O·"â›ÑÏ•ÿHŒ6îvû%`$Tß©jõ'Cü·/ô-Š+û„qt”d¤ƒ•‹»—ˆœš`ŸÀt#Çs.—·‘DTõÏ¡‰…1êO[r ceIÏ*Çù½ˆÈMÙ“Nü/#&*"Zèmš%ˆè6½½’‰ˆÁŸ¯uçg{‰¶šç5ȈÚ$Ï'— ID7å—RZyñåòó÷ÑßÈo›•¥2#±> ýï»Á!jqz=¯8DØÏ‡\þ5Jvér=Ö!GK]²]±. H Åúĵ'c}O8¸˜p¦‡ÛÍÖÉjà¸}ï„>Í’ÇY÷Çë-+¶ãùWË×O#||¥nd SXÅY È‚ÇRÕ;Ò& £«x©¹t\¤ØŠÜzkíWa%Ð1…¢„ ´ÿLküXûîúw¹³ “šc’œ:§Øßqë’@ÇÉòz›ÏQЉÖRìÜ~ tôNßù— ºÛ_¥t¶€®¸Ï˜±“ènº,:'@w]LÜ O èê˜EÅd»®úýqÛO‚Î8oc>™tü _UEëƒÎù‡—€ÎÏOÚ÷”ðx¸ê¨©èÜ«¼òVå#ÞÏ*ÖŒ6 :Y£OÛБ:ÙwÎtžìÙØ‹ù¢«Ü%Э׺—b9¿ÅãóG–̱ï²Rl­“ËÇg#q½±Y¡wé S™gú¨¬t ¬šÍ‡‚ÎÍ®–ƒÛdAg0Bk¬çQšà@ÁqÎ~Pi¢h€Ž¢ùL¾D>žg'±Þ;t–NÏDqÛàz*R&A§ÆÑ½]‚ tâKbÓKqžk®WGðØlÎwb!÷oëÀÔ~)Ðþ¡ët`ïbä¿uËÀ<»ø30âŽ1‘÷äHÃ! FÆSH£oˆÉËÔWlûÓ‰Ñíg´“Ïö¿Bù+`n ­«Ôÿ@ÀT³’.0¾@L2 6YÆ’ˆ)ž0æÀxâÏ–¯:Cé½Äd±ÎÞ`·xb¢'vÁîŽÇgø¨qe’` ¼W8€÷u˜zxôªÑ'ô‘!åìFü¨½c;·ŒˆAÙí¦@|lX»z­ ÿÜ‹%Q½Õ!±a ó)êazÃèÍ:uqµ­—ø¹e±Öï bÝYr¯ëø]Ǭ!G @Ú†5<¿ïˆC‡G165Üyˆn¿Ó£Õ8/Ä1¢…¹we!ðÏvD|Ùó’É"‰øzëáÀŸ$p”ÿï{ï.‚ã–=ú›z—ÀQFq\M®T$èæ#çxäXË#p”Pª“¸ƒýß¿UÖ“Å£­Õ›_xþîÍ/¹‚£qúbû ·›0vwƒ£rèÉEìï”´ùÏúÃÇÇ®¤­ác·‚p˜©~=øse¶Lië-G¡çUÿàxò´Gò»…7ùù²lGQL«—à°œ´·ÀA~›ÙdѰO^<²Åµü=8ZÄÎÜg Å£ƒ”ö¥ÿ~Ïgîq<Ž:%±î\ÀQ÷—ùÊt8x¸RP{çÑí×V‚ã‹1eÍXÃñs¥ºx2Àqó‹í.‡¶ƒ#«Zíž¿+a¢ú@4Þ7g˜ÿî“€KÁÏœÛà¨87%²ÅבßÃòïsOÈzÿ 8RåM«¶‚ãz#ɸ~‹ì*ËâVp´–>òކç»–}6ëŽóX$mÊhG χӡàð÷Q?|ïÇ}Ü¥æÙwÖì³o‚Øƀ€¦58nú÷âgP›ÿûõž0Pß$Ç^a°õQªSjž¿ßŸ¶=@tØ%GŒuïˆÔ军@¥~#çm*Jñ¡çX'l„Èk¥@• Úp¶î=P½ ³¿æîªíÊ>Ɇ·@5Ït1¸½Tw£"% L]™÷ØuÞPŠîùí@Ó³%oþ z%ÿ‚–õã܇=o{Ak‰vò;è‘îœw÷> ÔOJS€j÷;õY†=P¡ä ›^P›|[¸YâQ$©Ç8¨'¡{úìP=²IÌÖ5.=ŲôX*Vy qíÉη Ç}á1SO-è½wwÚPϯÜ.ß”a–·ÅÁ8/¸ØÉE2ÀúÓg4îGPï²Ëdǰbÿýù“ì£J ÚL"ÅtõÅ=æ °ï@½TùX)¯3¼Ø©}õNßÉÞFœ7Õ ý.®c©6oO®“”馋׿Ûeÿëµ)PSÎ/á~§ûÄö?¤õ-ý!eû{ÛÂ+òc@y~÷x~d5ñ÷Šl‰õX<1YÆÄË@ÄtqNº^à$1ÇÆt&l2˜{Ó#âFL#i›Ö,MbÆYáÚÃÿ'ž²5+ÑrÞì4‰¿ùZÑü@Ìé=ˆ~µ·‘˜U1lO–#æ·NN?#e>³Ý¬ó'þ6“ì<÷LG|¢NÕáq˨‹b1›ù-IZB“˜âK¶äz—O̵÷zîeÂy} 9½–NÌš­½LÔ™$&ÉsZ Ýø:çp¿4‰ÛP„N¦crl‹§Ýˆt›£Ó?-^ÝfÖÆ\µœrÙ‡ˆ©êàu/ò0wåýÙÇE"¦7m»J‹'~ëÞœ"Gô£…Ýžå8_E—v +b\¤.‚¸…uj‹'KùvMbÎjëì_F¢_§ƒhÃÛ…Œîöõ#ëÔ’×ö`Ïv #†ð±eìBÄ俏 í¿šÄäüR}IÊ$1¾Z½rF"þ˜_T½þ?2ÊÒ¯µä3ábÃéùÄÐ-ÅÎLŠ`;ÿ"Œ±žL8=þá÷m¼Ÿù67¦¬o…dÎ-c]úŒÆ¨¹'SëÙ~ Ãõ‹’®ãzX÷Šì8Å…õñ˜Ú¡¦}à|±Ú+ëÁÇÞÛ.”C>çÅq~wpx$ÌdËÀ:.w@élÖÕÖ4KÜÇ„—ÞìçÄu2‡ŠX‡=ä}\ q=Ó¼§·‚Ãÿ~¿gpLLR,Ì BÇ–÷>ƒ]]¬!Ö _Ù~hG-èÿ*ý´Î¸ ôÛ›¸.©‚~éóÛòí oU§eüþ#è_\o ÑQžWO ‹Á€ïï´–rèìW|þ2ç–,I¼NiöÚÅ0¸ly‰¼ñ „gÊÎoƒd"버x™¾úå ¤Û\QZrƒ$£­›ZOá<½Šß¸à¸Ræˆô§“î„_ø‘á‰2]›Á ¢S¤’lR³Š¨õþ;ú:\—v®^Óö£`p§Ü\à€4˜—·p €Á}ÿ#äÁ0è9Ô:RkúrÓÑL| Ÿ\gU]ÝúSË<¡ƒ _aëqt± xÒ³;4΃iÐåK ûÁ@¤¤bùÄ8øî5¸xãX¿ª_H[ý¯á½_½.þ2$=ÔŠ·2LçÁ åÙDš rskïïN;¿ÁY0ØëMäYÁVoù"ë`08Rä_èý ÖwŸ ú˜ú»X”_÷|Á¯ÿý˜l¯`[YÍ•t.ËÊ1¯ÑFî[ °¤3#¤ õW¾ÆŽƒ C»úy³xø³ÿ‡-% 89bæÉ ŽDÔ×û€`~ðŠP~$JÍî£ß A?Û”‚`ÇÔ©è„%Lߢ!Â…³vÆÈç€àÝ+Ÿ+á ȳÿy;k7óNHyÐ ‚~iJ² HŽ<àg9ó}íCöÀ¿,’Øì k]¿e’€þW3SÚð†ödGÏ/ù¢?=QÀ#ô+âð³:à^Hp¸¬5 üõè… ð´\4Ù÷[2ÕŸlÂ>J éz${})ðÜ ¿%_Ú‚į eLß$ðÛ†Aq¸:º/hT5–Ù«çIS¨ñãàiûÎÿVøäDØÆÔOÔ"»É$ླྀ¼ ƒ€Ò%îÅN àëg9½×$wÝýuÆô®ôÿ°ÁûßÍ §â<2l×=ÞŒ·/Ý%ApsÁ놅xàÏ"¿“ÿa ì×S5°̨E—×cýôO¦}óe8ÒSN ûÓ±C{Ý;Á¡i÷iñ²8pøî×%«xŠV9¥ïcÎ4îºó74hÉM‡yÅàÇÁaܪ£#ójBÆè¼iÖgÏC¢ÓîÃ*)y±È¦×eëšg‚CÇ- þV3ph‹ahè(ƒÃÈžC¥Ø§~TÌkÁ||ù‡™ƒÚ«-s ø|ë&.¶ph d8˜aßøÃmÀöG$8òHí^ŠMG¾SμÃ~w‘év‡,‰uUìËàÈÜY:aŽ’‘å£rxÿÛ9Ÿ~°ÃÀ—ÏWó;ð¾K'‡ô)à°äT`¿Œy:¸ƒáú¼×U”íÅý¨•;SÍ‹óéßþÐr÷cúXwuöéã9ÿc±¾d îatYŽ'ùžÅÜü³ÉyQÙT¼e³SÀQ¶os«…'Ö•lÎeož€#?!Ç‘$‡óž“ÝqçóC‚c»8 ÎÅ(ù]‡ÎÏaoÄ%Á¡9àµÑ(ÖÕs»'¦ùOaù¯³4#ódž›„‚—ý sG¶g>.Rãà ;×&–ÞMz†n{#ç úÁàÏ•ë#Q‘`HÙ§Þð” 9îdíPÛ“&_~áÁ›gÞÇh€á(Fœ…ÞXïôê¨0nê ‡p0ŒüuLM© Ͼ¼2à†bªI~‚áqÏþt50lØ»éPí^¼®Ö¯š†Ç¨»†'îá¾ÇÏiyŸÀ`Ú¬AÚ» מ¾uy†+;ªõ«{Áð%{AOžWWÊtA ›ç"e†ÁHçFý7¾ß9«(Q†]®b¹*`X¬7ú4 ëSËD…1ŸÐ£Mžy`èù4·ÈótµûÆû¸Nõƒ§ù‚a™éùˆ`xÁsÃéi^0bóãj»†rcϼÛÀ,U÷Ti 5Ž:{ä7žÏpˆyàFZ—Ê’΂‘Æ‚\ú{0\t»wñô.ÜÏ7‘A^ÚíãçNÃkWŸxsC;[‘%0H5ÓðÍ!þý÷¶OOÌÆL™æË’ˆ•[{ÿŒLË»Ã^ÄbEKýô·9MbÑ•ÿ¨Í‚Œe¹»ùHÄ¿Cë>9íè%þEïû&àLoÑÙ•#@ûW¢Þ$bßÂ&cÐXm‘>>µ‡$ïO«ò~xP“XÞÂܶA“øg¡Â*ò!Xå¼=,ë4MM:ˆÕƲa@ºo5ϼ@,±îµÊ3v#fwj×ÈVõ«Fæ&‹VÄ‚ÏþW ºéĶ7Yï{‰ñ=£›Í¨éįÙHG݇$b|SV…üŠ1¿á~zy#1±k8®ð¯±ØÜwEù Þwe“Ro:1~Ì?®«OØ.O #æS2/j·ø«×,Ìßü×ÿ¹ü‰q†¹ÒˆßÁiê´SnÄ”·}„2K:ñû©:SäS¬óz ß^äè%†'ë.ã>žÖ>®¾“D,4lýœN,:¹ï¼þˆåÆéSOvkK;ô.œ ¦}زn‘ˆ%©žµ½ÄìyÓZ=b)Ì­æOm8Æý§Ë1?RG)¯¦‚ãm÷Êg>ƒã5Þ1­“àšÈJŽÇpaž±»Øz¹üxé‡ýcˆÞp`?8>{Ù–åysĬs¯‡ƒc’²ôÿ+à˜P²á4 ûÈÛkorq¼”µ>µÀI|¾{×[¶*p<ñí²ãÔp<%pò(8žKôN e‚ãùHCÏýüàh~¾ëÞçæ”ˆçÚ~ç¨Ê+òo ÏG\;œ޲‘Ѭ:8>ê50Æþ4^èŽéVœo•£)˜‡ª×¿øýDz÷†‰ \ïÇÌk‹’àx&¨‚qç{yÕèf-æS­ýòø}||Ö¬/ºŒt$º•£?~õ!ìó(1_Šñõ˜Pëm·Ÿây?%Öôpü5¥(/pLÛd*Ò°/¤Noò‘Âõ¦Üd«Âý*Ö ÏüŽ}xÉM³„ûÁ1/›³8æ{9Oêà8§I‚•˜³YSîYr€ãÉ;»{ØwŸ<£ÐóóúöÝÏû¶rƒÑÔÿ¾WÈX]ÿ¤{¿/óÖQ¢7׃±ñGú³$O0ò5—ÿøFŸµ¿eÅè€Ñ½Ñ#±ï5ò+RuúÑF«bªÏþDƒQ´”åûø‡`ô-=³áæ10zOvI|F·˜^Ÿ£Ç]]¶÷1W¯éwcÝG·:n˃±ŽàUÆ­Ç`|3KüÓ06hxU? Æ÷™×ÿ{øŒ·($‰ƒ1§¡Ûå`Tu>&Ï Œ.IÉõãKjygJåÀ8r™ÄžF³k΃q™`4òã™o¡?«<ÚÈ% Æ•®ëß΂1ÏÖ'^ÓÁø¡ˆòõJO0NþÞ§—Fó1_‚[Àhï§E&î10ê3Ýù›ÿ-Å{¸eúIã>É6½•wc¾ç§|÷À¨•!xñ2iÑÆ-Ûð>]ŸNMÑ“ˆÏ Rá`T,·1Æú3ñ*|`œ¿µ¢¡¶ŒK9Oo’]ã°×ü¼ÃÀhú¬ÄûÈj0&ówKëƒÑ©ßÍ2ßÁ(rq­(MŒ T·sˆÍ÷³ûi $F§é‘ˆ)ñlKð±ý<$Fnô± Ÿ£ÈYßÃB™Ä¨Ëîﱞ#ŠO£owID»Æ±º²D<ýãrþ!‰¼àÝF¼5ZÕD #žI‡JéU“ˆ ®ôy³Î0¢¼þèžïá$FRJA³l3‰QMT¿€}aíØÎ (ì?·ÕX¨‡¿ ЧÕäˆÞuŒ[¼£aĈk¥ S‰hŒêx 0>Ùz¯•„M+Ž~1&ˆñƒì3ÚÑŒ®3m ‡£Ÿë…û¯ñtFÿþ¬\ÿô0FßÄíã6[QÙÇÊ4Eb´ìÞ!ü9ŒøèX“¡WF ¼J•pcôÍÏ·å ÃVøÂ£Y`4ú(½3âûRžÊ%3\ïd®Ày·0ÆOÖ×ý~»€ñ3qéÖ|½£#&´•#>6AgÔˆ0FS&0Æ×é'0k“»—9gHŒ7d—EÁ¿$F¾ù‘‘ûÎ$¢h‘è¹½…D|4;0A’c4ßã¾dbˆf—o«eñÀhPîM Çý*»ìªš“‚ýÕÜÿÞ¯áÈÌù/áö§ãûvºÁú&%}è<ö§ƒ§wZº‡^¿Ûg™€C=-Ñ }zÚÝMõÒ°®úx(õ§8rÞ[x¶ß§$ïñžZ”®cå:õÐFíðT  ·´ÁûÔ]nÚ •wïÞÅþ°’TÛžw ÞwÀÙ >Xÿþ7Ñ;Ž÷ýn‡÷¿‡l7õØ~‰ø»Ýõ88t?î+¦+'s¥ÝWÀay8T%ŸÌgý†ùì0k]Þýå”rÛKÎà°råfd*8ü Îcèàør‰“¿±žÝqO»ë¸1‰–þE¬?9?ÈÄûÏÅXŒS^á}Ã3W‡OCU@5ëÑIašùß°•ÔºúëÖ© ’'8ü©³°³Åýyêw>Ë ûä-¥cþ²û„} Å|åȹû5×ûïIîûó ¸O¾äŽ+7Àásùñ“—±/Ÿ‰S÷QoÇúR1Ü$¼ ŸOÛüÇù2§^h ÄÁÿ^·,Ä™O7Ëk@ì‰,ÊeÞÄÃ?JŸ¸€Ii±òsbݧC³k`ÒYÝ1èL^¯O˜| &5ƒõ8?“•%‘'>±¹¶X¿‚wŸþ¶OR@mÚ+a³މNËU0ɼ¶ƒç×u Rûǟב¬Ñ~ëW¯NÚZmÑ¢{ËPù°-ý­Ë¿žàÿÐÓÏ™çâ€8%1¿í˜´KøvÜÊ“åßñWĦØÇd¨Ú ÄΙ4aÿ[@?WÕ/žÞWÊ”€p¡9ŸüÌ D·³ÅŠGewu_úDÍÊYìo‰11ÇíiÏ0òµè­“Îáû3C€`óå÷+“Ñ8g¬ êQ«¨uÆ@8Øýþ浈 RyÑY .IÆvìlÄç·ˆ5ëðâ>q;©Eg‚I’w¬Té{ <öö²Óð~v] ¢sï°×7<¦å¿Z:Îóüñó/ïqä°çׄ |ü| «`Ò_¼—kHLœ¾õ¸ÑwCÿ½|O7Œøn“®C"~¾zþÂr}:Ñÿ"ÖéÐ17¢Ç,¥åE‰è°½ú7€•ûþ¹æ½@Œ«ÚÌU¹}W î§LbÝÓ¢r¼‘ÇØoö]}XŽøùD:¹Å§—T=Ñ7ˆ!±µÂƒÒ½ÄÐI[z±²ª=ã).G¬$¢ÕmñrÄÒ÷òK¦­ˆå5QêÞmñÄ’äÐÞ]þX—µ¨×Û"bj§vü´ý÷ò–X‡“Eâ‚8¬ˆ_G ~þ#FÆ5Š8Ñ”®eýºŸNmוųp·s bxSü-ÉC½D]·4o"‰˜þ²Ù#6»—XzÛ;\•O|i“~h†õ[ïÏçWÈžu…{Ï#bÆ3ObgG>1·Xw‡¼×hf ‹uÆ?vÕý\ä€èù>™'¦F´òD»Fm #º˜o\¿FôÞwYT@įܾÅ][1ÇÖÀÈw#†)üµ‹÷1dsû;þï:ñÓË[c ÷]©xIׯ—˜JÉnø§ŽûoÆZhV%GŒÑì.ǵbî‰ü÷±nø>U~%±óK.8È$=™ë|,ÅÏÇÁ;¹¨Ók8¬C±{WƒìRÙÈž³àÀëºeTŒ×e &bÁaË¥77°ÿTä¾ÕžYÒoîÞ¥›ÜŠY•à°ñÙ°sB¾ªíô ]°†‚«­÷À~èúú3Jüxì%ÓvXƒýJtüéøY° ξv:ìľ®›1Â×÷$ë}Çóf´*ù£=q^4§V›-8ß[¾D|Âyåö½ÿ; ÇùÞ Xƒ;[Ûù/à ¤·á@æ·øÛÌ-…Ž¿÷Ô’} Ø÷-yÜ>ïöÓîŽ~­J8{zu+æŽ÷Þ¨§ÀA”Ý)©i_¿ù轔ط0 ùŠ×s"Bu;/µŸˆ]Æñ7m˜{V ŒÕ–x~òŽ~ìßE2Dûqjx>þ À}aæïx“ Réúæõ4œÏ¹Ï›çÁ~êB_ƒG:8¬g—jdÂy¤ÿZ¿ÜŒÏ÷uÞ0¢›m&3Ú)Œø‘zÈì({ñkû-®ZWÌ«¯Kg¯V1:•(‡ˆÑöjƒÓ"$â—i½k1ÊköX¨ÙøáTú&j ë¾-î+* D ÿ zX‘—N|¯3Ø+‚õ[§²#“Ö`dœªRž 1^è£ÙèÍ$"£ì›@®ë»“¥Ðû‰0F±…á ƒ˜3E³YÅa½Äð£:ÛùˆˆZÌRÎNÂûÆbo·ÆºµÛ®™¤õè?ç?Ìg°_¾{üéÀQhàç6IbÜ}à÷±K“D|¶R÷ÕY$1BØþ}O#â·\ >Ÿ¯kmt×Ñ,Ügr ?Þ[»N¯´a›:ã"…ˆÎ·ô ƒHD‹ÖW)] >¿s¨’Düˆpl=F|ÉP\Â:Sõ"¼yŠÀžN„ü¾yìݪ„ÊQ Ø|5ªÅŠù³ïŸ^þ¾V°·¬ÈÛZ ö;eúpóýÑÔœã‡ÁÞQ£:Óñ"؇h,Ëvs€ýÉ¢¾Ãá`,Q@c}Øv¦=ú ö~Vé¬l›ÁÞ»z¿õ®'`È»,Ï8ìµ8\ÜDÀ^óü;b¥ ìõ¸›¼6 ýî°Ú9A°'d¥H)€ý¶ª¸;#`¯;L*JÀqtöz^k{û««ýÜ`ïÎ|‰!"óßpÊì-<-½‹qÞ߇™ð~ô¹?F+?ÀÞçÎI>©I°7K´9á­öT…±ÎÏÄ䮪í7\¯EÈó?8%ðæÑÁ;%Ó’l8¿¬ gKWÁ^[ÚøH6渭ùñ ìMªÐŽ»`ïÔc™%CÅýpÿ6…}º½Áø²™‘Ø»†³ß«µûÀ»;®öàþÄèu,|ÀyXÜRïÁÜ?¹a¥&RóÖ6z€‰ )¿È`"ËÐÚ›ÆK¾i‹“ÀäfO‘”÷"˜\?ÖÏWùLlôkéÉ”¤Îu`ð3*Bác×}Ð&ê*÷R4ð|æ¨óÁÄ‚•|`'˜ð˜|4‰ Ãû|0ëcqíÏ&»ñùË®mÏá|:¯¼Ò¼ &FÃ:¡'ÀD’ü´rÇ>\ß!mÃÓE`R¶h¢ÏLT2ú”I`B·Ô¨}Ôc?‚I3ÿ ñ÷¿oA¹“OÌSÄh<äˆÙÓRm'$ˆ¿ —~N4[3OD~#§³{ô¹Ç#`þõ@u,wœX¹×4KOÓ$V²U*ÏWMi‡èK‰ëÄ_5§ ËznÄ‚Çþ01¬W²èQšw±®c§÷šI'–¦¶Y–f‡ÓèdöŒ^`z/¹ÞÚÌob§Œ7©³ü¢~Ì0ÏHÕ,ôóEwáîû@zÜÑ£$æì»Ç,ˆ…|Žîa+D,%^åWiÀzñø›é&+b~Ãê³IšÄüÖn¶¿ˆXàúà¸[ª‘XÞY¯|ô"þò ŸšŽì…u‡~œ1Åûó‡zr Zë®›NKRö^š­šÄâ™ã{*ëýIìzÂîÇzÀT6i1õ½‘XÔì~-€ã·‹ ù ±$\¸Ä½ªI,<ì(KÏ'¦k?$À DÌêLœ¤]µ"Þ½R?÷ÌŸX~*µ"z‰åõýŸÞéY‹~*å’þÄB¥úæãÒ{ßèÎôtX§2Ýöæž9ñ¯ä²xþxba÷ÈqÏ‚0°óÿïû5RÀî¼ðüŒø(ؾ¿O¼k;ïýœLgsÀÎ󕉥Å&°;(T_XvñÔ‘€Ÿ`ÐúéˆÆV°Kê# ô»ë= ƒm2`wùÚœNqØ]ÌðvÑ6£—ãI`wåLæöÈ]`r$Øjg-ØÑI‡Z?|;ÛëçÌw‚[¼dÛ‰y°;Ùy_g»÷TLìŽp=PSÏ;—Ð\¹T[°s•ÚGêo»c.ë²ÒN‚ÝYÉÓŽlxLú‘eúì¼ê3uÊÀîhL(½È×£¾UŒó‹jre‘ v‡h{[³Î€Ý"ñoW‡ÎGÉS}`ç«ö AhÏßv:ý>Ø]ÐxÌöì¬ÕšŽ÷‚Q©Õ¨ Þßä›ý×M<$Nã5Ø_ö&vƒÝ9;Uó”í`G³Ôþ ¾Ÿï˜yý çq]SnÛ° úËâ>|É!ƒ]Œ“oFa0ع?¬Ãù—þ{êão=q· Ço:ºíÕ Ø •‹«Ã|È n^)“ QÙ„±TÌ?ã¶sú`âZpz¯ð¾Ÿ©i.€‰’wõëSê`âmxyKÃq09ºusi/wXT¥ï½Ð£ì*`b+qÈdILt»¯5ðâùV3SܽA˜'{2»ŠÇæ®ò`Ÿ,äT0&cga¾öd°L·Áo”pÀe L¾Î®Êm“µ—eA,ŸÁäË'ûÑk˜‡wª­á|¯0mºÒ‚9$¾=ÍÙã0˜©t{°©aþ½µñ½&ìÑö­Ouqþ)ÇÿíÃ\ßôûZÅ9ÌŸõÎ>¡˜¯…e_+Bº€Píh»Æ…ùh’иq/Žç½5óO¿1ætŸÉV/a0 R>¥f &Q¶VMâÌ©DKÅëÜ`²9‰ÆóÖ­èä©ßÁD5ç çÅ~¸¦Øñ#˜pœùXV9?uñ³aû-ܯoI€ë ”£¦½Páz¡ƒ`rïVb»˜ðJµnDª`‚†õ…Ï'‚IâËÜ[FÀ8í`ª¢A!v©ÎUÞðAJ§Ú5äg2òÙ;‚õ»íÃü’@p3—F»8FZ仯ê€ÐaG©f ~åw­¡:¢®úN 0É'á^>‚ÏËÚNÛ‚¾“æùK} 4òç jé†õ Ÿ4TAÈçé·A÷RRY–4LøB”½²n D5²×(ÁÅ/³ç–/‚à¬Í¸S1Mpú3 ‚¹•G†4ƒ ÍÞîkìú{¸N÷ Y|ШÔ¼Ÿ\#ª:UÂêßÍÚAÐZ³l¢n' ™úÞ<‚Œ,“.‘5Ϲûò*–—TVžAjD¾œt:Ú?ÞÑvÕ„¸JÔ2Èëô«ç ä:Ó&ÆTvÿÿ¹nŠ`G<»ü&Ùì(EË÷Oƒ˜Ñ•ÁŽúk…cXìt›b÷ãëÈ!÷=ækDÇ"¾_ÅX êÃñýZ¾CCß÷‡¤ü½K1'ì¶šÅS17¢-.ԃݞÁ/[¿ºéê™IŸt°c£´_“ÄœâL]ýþsApï&Ýg¿ÀnSþëWNE`Ç]ž²ãÖ°q^?gz ì˜]¯µébpÆóϦ‚LëíoL˜‡ViÍÌó>x¿ÎÖŠÛÀÎléá`Â,®'ø·« æÊîÏo_sbF»Ì°áëüGœÀñ•Ú>;;ûÂðýa·crVTsM…¿ºé‡1Ø9]ÿO/Ù1™™ÛKýÀùÞÍfö ìvñ=:Ÿ‚ygròUP7Îkó¸êœ×®îšG[1Gµ£šªqÿ\޽®a¼Å|–mßð’v‡ÔÉciçþþƒÃ Ìßç˼ñ¾â5\Ûò“fŽ: v,znM`Çs:ë©#æ(ñýì¹À>0:Þ!zuÅ•ÿ°ó(£3c×?#ÉÇ‹°ÞŒÄ¿éÐýžÏ©±–gGÁðÒVÆÔA0¬Ø&{,‚ #<ïuмÀ4Õ,ã FR_> áêG·(A2IïUðÝÊ F†•&;ÁˆÃ{ d¸Œ˜6+ ìp#® ÎÍãò`8½çu$K4ñ?Zº¤†ƒ¶Y•ØÀHøð¾?Çkq>ž»wç¶€áÏ=Û£-§ÀÈ€‹%ÓJ _—×ÍÆ˜‚ažUK¯=Þ³>tÿUæJüÛ6†%Ÿ/ݸ—†·?M¥íÃke:IOÿ‚a©ðÎGëYË 0|5¦`¢ýŒôk“ãûÁ0–jXH?ëtë?s ×y’$˜¢Áð†“;·~:fÆU‰Ê|Äù4)üm«Ãr“ÄQiv0ü•òÇ ¨ÏjðÃy¸š¹IƒáT2w v¥³E”Öà¼õ _žÙFºŽaåWkÁЇ«@¬ôqK9`8b;0ð¸ 3¢Šn™…Ë2âþ[`ÑÒ2ýÈ̯îiÙdKòirsa,°4¼Ñ¹ÊÅ,eGbn¹ÛK¹Þ‰°q`™ã¼¹ß% Ø^¦Í*l6Ö“¼ÖÓâÀºá_-᬴ìÙ£Õ%Àšó8OÃQØEVbõ‚ü•³Á÷—”°*Õ¯›SíVëU¿¶Í]Àì—uŸ¥+˜JîYÙ¿Ì º]¾X0 “ nï³æ[a±‡ï ³„š‰®†&°Œm:`’¬Z[¿g«grÁ÷G¸güýL²ós²9°JRÕÖ_”Hc4¬—­V¯W/lV]&¡CžÀâÉîëÖÌ:Ë®+œ,³¶ô4=foÓTî У•á5U ‡ yÿbúå7Kéwd€ân1"„ÇîGßÞ¤=ˆu„)æ=Ð#¥õvöÇýe¯cåº@¿’Ÿ× ôừ: ßë—=CÇÇ)Ëž3@¿•ó1c‡^ÑYsèdú©À èºw'6=«ú^Ÿ÷1™µ@?Ü8G½tP²‘uº¥iÎR¿е; ˜|€®/Ù÷ÇÛÇ~AðK<Ðo·4Z$’ž—ìwƒô`ÙòÔ<œorÅÎe ‡Znž+zòbÚ³]¯€~ªiÑ@–Ç2‚ë5w¸sää¼NN.‘cè)iÇÇD€oý&› têÜSi2Žozt˜_×yúñÕÉZ ÐýÓØâ¸Q§•üÅý ›ÒSñû tßÃ.®£@O´ŽŽùïû{yìÚÜ€žî÷”±Þ è)Y^1ú8nzÖêöŸ»€n¨î¤# ô³©æZ\`ðò¿/’ŒƒÚŽuµo2Á ð\¸ùîÿ^—vI¢øзs¯gü› ]iíZ0x3ý}h«ŒŸï”êÞŽ÷ÿLÀà"¡ïûú1ØvÜñpòƒ@åîñE~0¸lqÍÄ8 Ò’?…4~ƒ»z.ÏŸ…€aYnp²ÑÌ‹fW=ñ}n–þ¦ø='ž9.õºéZeõ|ËÁüȶf§±RÁ0g³áûã`è+°yœe ·è½6O©Ýüý6ª``°;º£žzí9`p¤©æ†Ø10¸Uùî}ŒìÊßGû¡% ñ~Í`¸3kÑ忨'tñòK`ððÌîüy†¢¢*üǾƒÁ¡¦«,Œó`¨{†O´óMzç«.în0ø1¥•º ÂíM÷çñ€AVãbÕ¦`pÉÃ3 |\­îúv ”=%è–¿Àà8[‡¢Ã:0¸PžvIçgäšK»Ö$Ä'Œ1W+t\¶ƒeVݵm0üp÷æû¸ÞS¼ÌÞÛÀ@êŽgö4ãçïS{Ʀ]·š0–c ÌØñ÷‘ý1KÄ®Àè?o(æÆø9ðõõ5AÄÜ¢­vºšÄÊðx|0©—Ñh(|÷2‰Ñ­:Ö¬>Fbôml¾ØóžÄèuV?škÆhÿ|½íS(b”ý­Ûõs•Äèl– ßvdz ²>ÓÕËè-¨O;ï“ήOÔ¾·KŽ1ö0ÁGÀ1úŽçj»1†žÄè\5“cü °T1êe lÚý¼ë¦£ïY5ÿª2btŠŒº)m ctVsõ†ò!Æoýù9 ¥tÆï/É÷忾µÐCÑýÂÆx`”ÄLå‘§Àèk; %òŽÄ¯$Äè%®[qîeôïötMÕ1òÔÓMþb ­c>Ⱥ-1âÇæ{ô«cÈs’c‡}/c˜9…zOÑñuWtC0>«ï7Og |Òk} ?¯ï·/”ctÞ~cr÷óªäÖq7F÷ë'Å9ÝaŒ~Ïp1 1î߉HåÏÇþSèܳ[·å tbßËþO[½å?Ýñ€]Å<è fσå¾}ÕA)~OЧ.>鑹 ôù_ëÍnda}Æ11Ó+Šõ[ºðG°“Œv¤ŠuZÂ9×ìëÈ‹ÂØI1Õq^Æ~–SGEn“:Ðs“S¤_?z^YM<²ú{‹ejjÐÛNÅ¢` 3TR×›gýˈli5æÆË-'^dB=ôZÊÛi‰L¼_7­ÇûS©y½†Ö'@9ô½ ö}të õý蓇kf)1¸Î"É—Bž@L»°'ü%Ð+oóQýô†ou]ë‡þK›Oʾè!›ïã¼þÕ÷Ä`þ¼X© z‹óQU2YÀüØ8ÕàòèÝZòŽ¢øüòäÞÝ|>ûÛàHz×ëu¿Î½Áºtî-”a]+l’ÔHœçÁÙX_ŠKsqÞIÂcâõÎsûžS’zy9èK¶£O<>³ø|Ô söÍ=«Jo Ïøõ}Ør—…Ž'Æ‚Äûb®Øy0`/ˆw>Âú¯î{[²š‚~M'Œ‰úg'Z2¢@qQ쬵¾oOsH¹‚>ç÷Ú#cû@ÿnYÁúÛÑ ÿš©KÁuô_–:”Zý< ®M1 ŸÍ™h+©úù;ÕN² ‚AiI€_$æl9£ízÁ)0€PÁ­š˜*Åkñ¢``AØý¡ ŠyøzJƒ÷Òì DY”¯X`¾~<©™‰÷Õ¿½ï€ èß.>ÆT-úOÉ»·¡"пï~œþô+7Q|=Aÿ‚ÏðÆâÐÏMúá¹†× îIC`Ð{¢Ä-î-èמRl©#Á欷ŒM;A?qÏŸ–  ?qáÍ/MÌMvjà†¸\_×;+è?Üÿ»jÇèwžó{³‹ãÚ¯–\ ‚~AÉ0—B+^ÿÆú°ôc不ùXþÏs¢K›³@¿'o¨§ ôÏ·SŸ‹a.žnŒh{ðð'Gp‘ù'ô¦È‘WѱœºFb|­ ²ÞŒ£-ÑÂã¯C£å’pÃ÷b ªüZ7ä…1jH¹å¨âýö^WˆßLb ÿœ·÷[ïÆøHÖK{»Db4X¬{c_Gb¼?˜£•N"ºw{¾[¨ #Þ»ŽÛL%‘Uvô:c‰ñY»xè æhõꦇ»mÃ_Â’œ§É$Fc²¾?/0¾V4ÿ²1Œøø¢ûWš(‰ÑêªÒfMÁñg›ŠÃÜÓIqš$QÇöaTÌ,ŒQ½—+šs9Œ‘/—ÖÀaKbÔïÕ´}F ¤t2#°Ûð¿ïé²ãÛždÙ‡ýøÝ#ï€ÿµ÷÷Y¶cÞÕ¨¯Ôgcš6žz3„9²­I¢õÐW¢T’uðý»9@‹ÌŽýPÒ¡“½`§x¬îù æ¨D¦ÉÙì&ï ¬Ç~XZõ.«Ö‡« vL3ñ}}âÓ=m<ª~›|ëôæçíLÆXGÝ(wÈ[ôúa¹/a@o™ìÊÑÂ:óí“‘¾ûW0÷&˜k;0/î|çŽó7Ùå»å%ØÉ=zî\ƒyÑG)/Äy÷í½bQ9‹ãuVÏôc.ιʌÛ½wãåŸÌ“˜¯¹M!/Gð>,bÉUXö\cìáÀúê“çlö_ì«ïVÐ/:½äþñÈ#8¿wÍëªhœx} M{N çÛþÃñÁ4æ’R /ó5 OÌF“ÇùZ< É`͹¥¥ms_ºZæ•s-Ø©unêSþvÊwò5nÂ}qHw,ú׸0쟹ÿ´E àçÀƒ»ÿ*`þ-éøkc¯íà)ž? ”žNÒyl@9¶73„m (ÎÒö­ €îdžâç+è~°ÒrkrÝw7­2ÞpEÛ¤lC(q;åß5‚®ýŽä׿Awä°2ŸÃÐ]T;:·ãèþ}¸Sgð.޳“vfjt‡§OÿxXº£·÷%ê寯ü&% ,<¼X`”AKOí•ü³”[««®r@L2WŽJrûeÿd¼ÎÚjü%P®œ‹¼§TºÕú œÃcãó¹Ï›A÷gÿe~œG]½Oôƒî¼PXêávÐ-µlè´Æ×=B7H¹åpö›¯‡¨@å4|=(ëÒµäwűKúŠrèÖÿfóp¨ øV4¬“Ê®Ë wå”Aw¼“ñ™ º=çú›âë€ÂzÎùwëvÐíÎûüçÑ>\§þùKùš Û>üüC›Îëðó+ã@á¿Å\éë•>}ïÅðqÐ}ÃR|‘5(ÅñÉ×W@·ËäD\\,>–¡¤Oyå¨YÖRðyÐõ)ð~fHÌü÷q,5½ÄLcßìéD̉²{°k3-3ì¼aÄì.Až>e1¿AÇ@@ÚŸ˜ÔÎã¨ð“#¦Î©°7MË»šO>V#fj¶8¹&‘ˆ³ˆV‡1;mĸ,GÌ¿róV³"æ¯ÈðO’ˆÙÞÂNoîtb6§®äø³¿^´zO,†'—:ø\¾±¯Pä›×HLZk²èDô‹Ë~S.rÄßóµzfëˆ`Ù›JÃùºÚ7ÈM sw3MˆX3j£ÚŠùÄtøÂ‰w{1Õåà•ßÄÂW>‡7{¬p=šÜ§"Ó‰ÅçâBüDïî‹ñ§IĜѽ5fuœÿÛÒTÇ[@L³îqó #–#Xœ>ðùó‹ln¤óçÙ•šîãúê.©©´àü…êsºß‡Óir×¶nÂýâ¤,¡þÄ”·äy‡Ã@üݲ»$÷kziÒö³\#1³c‘ïçÎIâoþ?çšÄßÕÃ×s’则YåqCMb¡áé7"óv»«ßN .Wãh%t½A·mÑz@W uUuß tõs ýNw®š‘y^å'ÐE«žÈŒq]Úüþ„gйD C ?]BÜ»mË  ›©ÌòúÆ ¾Q!ì‡7µýJ>ØN9Qþ¶Í!zR›À¶>Äo`žŒOQ~~:[Ø$µ€}«™Ÿ@.^Ïyösˆùf?“3æ%Ë‹Ô!Øßêó…ŽÌzƒíZAÉʰ¸ß”ä ¶#G6ëÈàù¤½gZ‚íØjúØá«@—‘h¥k7à<©å,|ú`Ûap¿lïÇTvrúÀN°ÚÕ@Û°Á¨ó+Ð9¢¢dXÛÁöï2lŸºr²Ž¢…Ð)9'¢D–€¾[ v†bßn&>r:Íûæ]QûþX‚mÕ)Ä÷öî÷6†[é6°mw•:ŒûR[é)‡¹*à̈áŠÍ>;1 PÎl -|”mÿ&tÄ`n¼èéœÅ¼û«ÿ”tóL Ö¼Ê-ZTP,m¤”‚îéQu9Ðý£M»_ º_,T>ÕÝÎëñ®=˜?ë”Î|Ýés³½ @QŽßhvÐ(ƒ9V}j@:$];‰ù#|-ò(æKÓº)ßnf œ‰Öâ Äüû½™©ñ5P>”IuÆÜ{H®JæaJ»á®ü+˜7úΡO6n¯Oc¦APÖOìËÇçß]Æù-ïÙ¾n tcˆÝ‚¯ñùlr®Ÿ PìʾVêæUa½“z™±õÂ@yÓk·ytŸ†»–Äû_’Õ<Íô?šŒ.nÃ\¹7S|(bú‹–ß²éY¯îû\¯@¹.C(¤éI'Ìã3G¯¥ùîÁÜ rxô˜ tJ··zb.»¯r¼Ýâj±1|PÐǶ“¯Ÿcli©Ù”êa¡‚ dèÜËýܺÑQ“é—Xé¿ñMKg¬M¼Š›=(ÀX‹V|Ò0ÝËø÷cë‰ÆÚKû䇤|Æj Ì¾kÞ­s<Ø)oŽHŽc=Ý“ŒijKökè—jæ9DÒïKŒ Õ0þ6ž²‚×5ýü­ê¥ÉXÕ_ùÝ8ÉX“§|Í×%!ÒñGIÉ%ˆäÏgµ·+±òMòßeb’Üßsw1V&„*Ý^¥#&ꬎ0ÆR•Õg2Ž£œtBpp’ñoOêž Æê‡yßY{7Æš1‹ÖúÏaˆ´[qpóÍ$D:FH®UE$Æ•‰õ~Œå&οâêaŒš¬6꓌Õ7Û¨Ãqþˆõß›†«ãšŒµ]WUN‡1ÖT7Ÿ»¡”HŠ™ßz¶0®ýVmg¬ýù´÷rþ$c¥”¤SŒµs| šgc-{|ÅØ&‘Ýh}‹çõ.ä$¸1þ%ð›oˆg¬TŸÞQŽëU©S¹%ØŽH7–.œÄõ¹“$ì…ë£Ù™]{IŒµÊ~•:9\çG×ýâq½ŒÕ }ŸÑ°cywÛÇÛB“`ûëòm1`[ët²¨à+æI%ë˧¹˜/_ÉßÂÍÀ–Ñ~öêí;`‹ößÍÈŒÛ'óNráû5V_\il‡'FŸ­Jƒmïòãà;°Z|ºU¿l»¨g½lðy‹°}ã©ø˜ƒS†¢„ã…üý´¶A" 3Oƒmðîc ,À6Ië®p?Þ7ÕÞ ÆÒ lãž”ié-€íúš:3°=}í΋þE°=1'»òs'„Ã5t3Øv«ß³] ÛŸ5»•Ïmæž±Á‚`›u£ ¿ lÛ%›ÛAVµ"?°½ñêÞc!`{«·Tg@lo²p;öáy­Ö§¹»Á6¡,!õ2Ø–k‹ÞsÇ|=¥¹þVìo°=××—ðç7!!ô¶l£ß Á$°-üž?À‰çå¿*ȶܶ÷â"ÀöÝs4  ¶í²µaO1OY ÆN‚mÿËó:WpßfùÊ Ýpý¯üô]1/ßsg”ƒ­ÿp5ÂçO*°mÀ¾Þö?£ÜŸ ¨¯YÄo–õ‹¼îÝ_z@ýXqJìz P‰ë[”¬Ã€ºcyQ3î:PUÊËC·€ÚõhøÅúƒ@]~ôå—læVÀæ‚W€ú¡Ž‰C®¨æ.Ö¦zà_â³ êÍ…˜?ÝÔó&b˜‚ú´ðÆé[‘ ÇéeªK=Ö´½Ë÷f€š|_;êg!>ŸtáMò% ^¶8L°ÊžfÕõ†ä  '~ÏÉß« ¨Ý­åC¹ t÷fc ¨Ô}gjÓø€j4ûÔ³ÙoT~uo¨"…v¨!™7^á<ÿ> :y ¨šb‡Õ£{&M,ôâ7¬“îÆù?k~ùYê"èùn‹žMgªÁö'ûÏ¥õæA>¨‡ØN.é*m´MH ¨WÔnÞ—ñ꣉ñÒ“@=nÑuWä2PKIç\2*ŸÝ}³8qâ™vÜÇmÇÉy̦@Õ`ç½{âP×ç~2n­ê"o!Û•óøXºö^ÜèÉ «ªê|ê¯ÞÊ›mK@Ý’ï+;]Ž„þÿï„ÂH0VK‡ÞŽ 9Re9`¿ð…ð©q$ø£›i;Ü{fÂêÙf$„´\XÉÎHè {!4#~6ßåãã½HÐYP Õ} ɬx8>“FB;øŠ#AîÞ ˆQ‡ÇÊ?›ã‘ Ë±éÖÊ$´{Ó¼Þ½íHÈ*pX_A t„©8Ô5#¡/=I¬|‘@øX8᱂„zÒÉî‘âHà‰Ú)GÚc$(0¼w# ¹³iI ¯›¿=bþ§ ò\½s"± 1ÙºJˆ#!òê2Ž¿ã§ÞëCH kŸ¿IBBÊÊk{¤q¼Vö½E©Rã#£¸>jŒ÷-K|‹Äé+Õ:#Á ;t’h⛣ä™ìÁëïoxNÅ×÷ͦ|úë‹Kýö^ÎÃ}RÞéýìå,²Ìš40G‚EèÊ£íHàK|/oø"?ýBÐ vÅq=®Æýc>w‰‘@ùÖŸ9+“H ú{B‚tXKð1“ƒÚ–($(¼ñ¶”ó XøS¾ú°è!ÿû\º¨G(ÐOŠÉK<žº¿r#K8Ö1Γ6A…f@wÚõ§;èG.|ï:Mf™Åê(Ð/ÅïÊÊÅ~Ðïx¹×¯Z _q7rzWô³_CCúññÒÁ„«ßtXŒÁq´[oœÂú†Oçéìkyëæù±îÉ\9tû:7™ Õ@qùÿ´Ê¡¦šXÙMTm÷äݦØûÔ8Ð-™íÙ¤º7ƒë,ÞÄþëÛª¤óO øô^’ì]q“ ƒÈiì Qæ„ÒÖ=:]L—ù±Î‹è5Ó”ÝïÓ–Sƒ% û;ZFŽûK!9”ú (^qž»€â¶!y³<ÖsÜåw½yŠrñøþù/‘øxÛa®¾@ ¼“}Ì{ÏÛÍL¢ ……éÙüý×wÂØåû³!t¯¿¤½~ƒ@÷ö!í$*èV™Ÿ±¼‹óùŸõ«ûÑdî“ÊØŸ1‰MýÝ\­Oׂ®‚nṄJ5iÌ%çAíØ×NvÜYuhþi©›X¯f\6(^ÝÆô33¢±n“ï0ÏÝg¾{[`}ûñ„©ûæI píTÚ«ëþÈY=…ýï”´MfËeÐÕVæÜ{t} d|ðúwgyŸøØ€îëoû,ÿ”ndÓÐ4ûzÉõ * – ðBï#ëi:ÜüŒëgùÁ,VZºWÔ¾óÈ5#®ÿ>Æ·©qŸÈù­ÝK{ìI’ÞÇ-¢‹×?8]íuϯP®ï9xŒŠbÎÃþ¹Ü!Àß èÞN^ìÆþÑòó6¡@_ß*æ||løjŸ8ƒõf}íô¦½"øø†€^æËùÝ·÷šb>ÇÊ)ÈbnñXÒ(sØOs4lô[‡óz‡>[rýPŸõÚ#Ÿå›y“ø- KmÑ>›‡ý,ï±ö+x>¿Ï’xÖ«7$=n`Î’õ-þ¼öÛÖ¦kEÉZ8Ïúï·T^c^¿#ȘOsÆ“ÑÁw.kç(}Õsñ÷Ñh쟗Þ$2§§]¥‡\):ýokJ£6®¿AMúô£ž³ŸÆp¿Ž^O{eŽëø™õ…Œ}úÙo2ë±nþñͱjÅû]¾Îæsx½”ÏïÔj1 Wþ÷( w›T Iû¹¼œ<<€l¾/¿ªð·ê9ŸÞdZŸºüŹØ[ÿ²êJÉA •ù‹g¼}È—fœãR€¼Kµã{'ü uúd{mý—€ìéìy|6È·Ç´Ÿ¶yb©JÁµÈc¿x¼$ðü»ÿl¶ìíuEÜ×åSEs~ù— ´·¬æ}­rÎ&ÎÁ›@Î}9¢öŸ7ØÖ,ýÂÈ<‚iÔ•e s¹úü>ä}Võ>¥Î@¶JoЬ²×¤xÖ¯ZÃlkßg€l¼ï¸øé! ;?™mßÚa/J*ƒq^‚¶äÏ ­4èõ¥5 È[ÒÝòׄ€”í‘´ÈG".¾9Úd}¶+Ë›ñz7Ù‡ñ, @Ž›ô&-°Ù5áŸYÝó‹YT Õh"µç(h͉ԟçÿ d¿>·A ëôïP¿ï‡ó}í_á€ó.)ž¸[ZË7¾Ê¹ePûõ¸;óŒoűï²t`•œ÷â5ôt’~:‚¸C‚aýÁý­®ùãâvØÙ’¶€¸Âw»­Œ8™î<ýÒ¸€ø¥zóØ ñw”äGÌ×<;¦ñ^zk2sà ñ[Ë÷÷ácÃ¥Í&éÁˆ×{¡Â0ÓqÓÖ’ïlÄ#9"-‡¸ºßê×ú§#®ÛÎ>Ý¿€8fy•âzÏKæLáŠÄiùÈ1 !Þœñ……|ÄNµãzÝ‚ùà¼!›Ó~ñX†÷=ÖDœ¼'\Ò©ªˆ“e™‹_qÝÑó}½HB\æ/%¾hDÜ«¥ã§ÍVÖ)\Gó?»ñˆMXOÜc\ m´ 9yE!ŽÝö bgF×D-™çâ3M–ÄTúÑ>±§ŽGr`~=Ìü•è„÷»È#qù%ŽÛ¤å‘ä…xM>&å6"ÎñÍ‚ÓEˆË+¹õä„?âxV)åñ' q7òHZ†áø½¥$ùU\Ÿ—ê™)ŠbM–°žâ@œ®î”¢úIľ­èßïK$Ä–w}gû»|Ä/'Éó=„ý›±ÿÃ6n°µ~BW5[·Cá·¥±¯ôþ¥WF= ¶{­¸’‚í>Æo>¤ ¶F*À‡ý¯šª´P¾OOÆO­z­¢“톭¬`¡—ÔV†9uBÒû¶E"ŽŸ¹Yjs"øþ›£Á[Àv[S«Ãï#@[tŒH TÚÂÌÖ"Ù°k.³Þ„ý¢¦b½…ZØ*5¦šý¹ ¶ f•— í÷–!Mïã@ë4½õhÓöyæÕ)`ë3ôô;ö»~Æcí+`+ýd—aèyœÏ«Ó:ØÊN}a2Þ‹ý£8Ï÷²Y°öÜÃ4rlU½÷ž‰Áç¥c£ÐM[¹è·¿mɃD+“[8&±òhƒ}Õ33ó@ûk»žb-#°|lè Ø²¯k«vù ¶—/jb«­ü-T´l¹Š*»#›ÀVﳉHíá¥Ù0qa\¿#‹Õ*öߊ†ÏbŸïH³ŸÏÚTÜÏüd ØîÜx.í.Ðþ|¿‡pÓ™®UØëw9Z©¶hM¡¾hë›U°4ƒ¶˜Ú×~>ø~Wì7žzäg¡öž2˜{ç• vOSAÛDÐèêíç«ä¾X:朑Úû_ -/ù,²'ÈùËÛªY€üpðû c ¯Ïˆ}óÈ1U®Ü=N Í%ñ¤©V´/‹ßÑ”4íàw/N¿©ò²øGEÚEk±á”×@®xb¸Ò2Ú…üYC—dA;È0õíÙ1Ðv.N­ÉvÏ’#@.;`+Z äwÃ,¬Kû€<³Ç¼ó¿<¾FäïN7m¡··[›6yoRÆF•EEóôùÉ'q÷U:ëênžµz Úõg=†s@‡[¹×,é"?=ð¢]òü¢íýñ£@¾§,z`–Èõ<5Û,F@[ý¹yÛ[ж]œm;ä©ìïîÕcs>ÿäÓo•R*p>Çê*¹o̹6Cwä1>ÁA™~äØëWh¿( íz>s¬ç=?[#ÚG¹¯ÕûÚn̳oÚØ@[’ÅBHê8’úÿ 3B’Îï J7#ÉîŸ{]ò‘d5ñX®’,=Ñuÿ["iÑÀ‡O¹Kô¦óÜ6+$eN-Ÿ‘@2뺌OmGRG]æÿmx‹dŒƒ½cn"$)mÿd»a’èV§h/ i¯?»8Ù#äË_Ô¬—HÒþöò|P ’ŠL©?§Š¤ÊèÅ™,Hz›Ä'Þò,$™ò£ò‘„¤Lfƒ†¦Þ"IµláéHΔçÖË&HòدcŠ•ùH*ÞâDp{’²8.±+‰'J;/Õ‹$5¸Å>à± ‘Sm¡Ií²Äó?ø¹œ+DÒ¹ïFÄg}‘TÑóô-’â¾–Ðu8 Iî6¾zÞÀI+;·ÖÅ"©¬ÅßœïZÒü³ßaH‡òpì6î÷ʧK™‘¤Üaª¬[ ’d2kŸa$Ë5¤l¯š¶¾ÿ½¾ÜlíÔ”?û ƒ­“ª3~ÞÛ:·¨¹&ÙíöÛBZ `»§ô] ¶ZÆ´$^Y°ÝéV½œ³ ¯?tnºâyëI¼K˜sÑïU&;ÀÖ%’õ lûÞyTŒ¹à¢NS®Þ¶DÓÉÿÝïkUs7»ñ}©ÜÏ0l7FÆ î{`K©é5gyƒ¹*Q*à8¶ê3ÞBÍ’@[_Ùʦ´±ó-ï2Á–Ûq˜©4 swt>7s;‘²|×ssþÁ«8žðØÚ=gÌa ߸G_{1—Ch½Óxÿ«·Kb®hàçB‡… >¾È—ûG]sVaòÜ~®Xʹͺ¯[ÒŽè—ª@×[ö8ŒôïŠð~ºâ·ßú\ÄãC/÷¥<Ðå¼»èw/tB^ÚK O¬¹"¯Ag£ ú`öÐuhkhl²ÝvÎûÇô@»vgå­[¾ {ñæÍÓdй- öm÷9Ðy¬™®1Ÿ :¯;üÿ5Î#®c¹‰³ ËSZmœá¯Çîk,XÄ7Cÿr«@{ðŸ xF€Î‡-f íçA»`¯;—Z>èÌ}yÁLÂûßúqa…¯£×&ÛqtÝæß-΃/ã_Ž*Žo³¸.‰:{äŠXæ«HG¡»è8~øjÚïîp%†²€ŽÌÐ㕊B椋’Œ±?¶²Ì·¿ã_¯£Xß5ݰ›âL¯ @Çisóï%KÐÙš¿§Ps±ÈËúÛfMÐÌc>9[:–²!!*x¿P×TÃ¥_ CK?Fû:§t•ލµƒ—ZAŽæô„~×E#БQ>z´«_Ší®ÎnÅ?  s^Ñä…hw¢¢·t®ºè±î˜£½¼z†ý cÈo(m†äÿÿçtÉ*tD¸!yò6ƒ"7 $ׯû)TɽýPd÷<Émù)L8!ùâ.îû¯X‚6¿á’ÜS÷9~É»p¸FÉ—µ„t¨Gò'v^>ÄH^LÎ4å(’ë=ƒä7¹¼|ûœÛ€5û×$ç˲Ž~¦ÉæÌÿت‰ä•t^t„ Y‹}Š7üÞîmEÙІ‰­‡þI#Y¾wØ_q yíáñ”\hè„ÑÓ$7*m½Ú_ä¯ì‰_­FrÕ̵êD‘Ü£»g½-‘œÌÕN/öt´¡ÞíMB26óÖÎH¡Ýe¨~»9ÚPõ5°z!É•™|á@r^¼y¿Õ‘¬È–+ŒRO$wÕqòS} Ú4{ÕYÏÿ´ãOÛ†$$·ùÅáîF2’Ëû9i êä6ùö|–ÏCrÕf½çq~ñŽ_•=¼\ƒS7’ûnx÷Õ&$—{gÎíÒÚÀmx$8uÉIíØÄ’6¤? tkØŒdíÔ‡ºp?šŸ ñ;Eíç=üï>ЪÇúSN„á±T›wç? 5Еö9Û­ð›™ÐòÍUÎjò-iøÀ°M >Ö¿1ëòh]þ®ïôní¥éåÒ ýÕJ(äÂqlÿz3mZ÷¯[Ýöéð=QNq =¾­µOhŽ»âmºßÍéáA %~³=oŠã>¼±ÿY_>ru4Æ£èƒRh'$ýçÊFÛó+ýÐoŠß)дvÈÖÜ'‹õÍŽCÁÏ[ñVå´ -rÿ%-ä»|ý1ÌÍ?—ßYãýNh¹R-û€–6«æÚÎÚ Ç… Ó@‹1T$Úñ:yÉQ !7•||¡éc™7ÐÎË|˜Ö^ÚC¤èÆ4gû ü@»n]yÇçq¶k¯÷/ÎK!iÌïû>OAµ÷³«ãÛ¥£Ô¿Ÿ’ZVudð \×IÙk1G¾qæms(Ðî¼³}ŽuFÈߟ‹uS¿JÌžÛ@Î*­Û¼¯´&d$”¦‚VßUσ u?kçã<Ðæ¸ÂÇw‘ ´Óþ)ƒ–ÂU³@ËÐY{Q¥Œu”ìž b7 ïyßtNfȦ/„ÞŒ»y[ÏŠW)öÍùã÷È ÕÛXwe´¾Š²E ù«\)ûE)YÈ#Ÿõ@ó-sÃwvO S¿eצ=­¦gÓ¾V‚V|̥݉e Íþ\º]¦´Â?ihüÚ Z?LBªÒAkÀM÷ÙÂQк“Àb›aZß[ìWýš‹Q¡yµg±/3þrÓ4é~OGùqdÏþOX—2YÖmìmÖ¨MB.L õ„'¥œÍ´üù :•ñèòââî}ž ÷:cÑø.Î{y:{à hõ=Š×­æ7‡s•4,víbT6¾N=ÜóD´h.¤åƒ uMRn_°hm'Rx+´œ¦“äþ±Öü˜”ä¹·8>›…pè9Ъí;ä+¥ Z¹’ާĶYÔö¢XÖ-$þßË,㌸EªŠ½«|™0wì1‹Zr¦Æ6"1GÓT7ž$š8§eW‹Ä{®I…IK#‰#önHx›j°Ük$±{¾MO0I°ïaÞS§„Äïtf–ø›#±k¹ª%JHtðZ@ëÝ.$Nùõ Át‰¾ßš\ÞãDۙ̿*- Ñ”|¹Ì U$!h íÖŒDJ%-ªös ‰­ ïC÷âyœ”­ŽSâHÄ`Ÿ¸?Bâ½…´ÏF$$ú¯·E¾Y‰o"¼¨bÁHôqM'Èê Ѥꨋg˜ôçÇü!aHô¶­ÇUHA"û:f.&È!ÏWÇì<#T'œ/á@¢†ÊWÖØ„‘ؼÊô5#$œ´RŒDLsÎ_vöEb–·}ˆu HD’4±ój 1?ÚŸq.‰ >ˆ¿Ú‡×­wxÞa‹Dzèžâ»Å‘˜iœðû$ο²ýºücÜq%ð|$Î78·o!±_]­9ŒI$YË‘›¡gú䥰)­—pú6ó'ª]þ[/Öù©hêguÄ1W ]@;,lšXS†3Á¦¥=óSîU°éŒy¥Ó4*ë‹tõf°i>:l,6¿˜v¦¼›Ž×'•ãyO\XO‚Íûž·þ7±ÿæ]ÖÏûk 6oœX_cÀ¦ÑÑF'ÕlÚ·<+Û 6?¼ÇçƒÀfâBÌã°ù1<~([l>ÕêsÕ¤m½F†Z8æ¬R§˜®å# íU©Àyv/ï×P¦5+»Üä6ÏÞO;¹lVª%´ Àæ]Eø{Ø<|îÞ}Ehœÿ"Æt)ÿñCøÜÏ í¿bm' Úr9áì·î`_úl±¨ùiO“úÂCd^á]Ú÷ífÿsío«eÌâ Õ}ùì[®Í ôLÿ¤§)¯pÝO¹Î>ßÖ]Èi÷ÇÄ*º€œôÎIð"hïKB}K© mìwu(0´u·…˵ÙÁ3kçˆh4îùm¤ä ƒwy‹ƒvàKå¨Í{€ö*ûʦ€= ûA[8éÑSä‹ã‰W޹Ïùïî’˜7k •ï­ìýa ´ë…Èc|;@›üK¿V?töWV²CØç~X6/µr¡Úögžø8zTsÃCì[¿ûéeá:Âzn ìÓÕ†]Þ\Nm)_;³æ5жúpé”ÑÈß³Y;C<²¯T¹•Vöµü¢×n5Ù°V°…å¿ïÙÕÊðŠüäa“Ë2…9@¾Ÿã™~ïךËzgê5h3‡fÏ6ò¸ÛÂËO"HÜf*wy؉OœöImÁ¼Rl ¨àAâ'âÞŒ&"q‹Ãݘ_s×´ÞQÄAFçŸt$Iû°`åì€DÏǬ ]ÙŒ$ØJ¥fœ-‘ÄÛ³×ßÈÆ#‰O¿]4CâÔ3æ¢YHìyŽÛ›($¾â{ë%W’0´q×aàQ£Y#SûI­: æi(ï“ǘk2ÃÛ.œ³B«ö/‘xCÁìqÌEqÙß•:d¼ßݨÀê‘$¾îkÄ©*aìGÕ ×M ±ð’ý³ƒ€yÛß>ôó&Üãp•†ל­¸k­‰DŸg®&[༞‡/D‹›#©”g- ‘˜•ͱ÷©˜»Y‡ß»™# Ö¯[ÆÏ—k<)‚$ÜŸ‡¤œ4G¢©Bû¶Gbn×XF!HìäÙ¸ÃùãHüti¼©øf$º0Äjò ‰+å |Úá‹Äß[Í;lïEz®¨-Ë ‰ß½=œó DY}OØ|È Š=¹l*÷¿i=ñl 7XaþîXíhÏÚŸî%öœ‰ì@c|©¼Œù³®-Ã¥ÍÝòƒä+1ÌÕã¿«ÿdb.'Æx`®-ŒñìÁ¼g]=Æv»hìŸüÙÌ$0—¼nÊL ƒMOÀ5¶b°Y4ôz.66ËÇ"²c.ã¼s‚ntOMÌßöÙåkxÝ*‹ÍãV°™Ùöºr‘4m“¥-Ö瀶Çᠹ¢ä^@;ø°Ëú®Æ%·ß`óv@ãS{ÐŒUž—ˆE€M“+±©ów1õÒ÷KýDÿ+% tþ÷ºe R}‡Õâ€2%z&†o(tÈ å@9þø[%ëN è]S¾nº¨á´’í·ú £hÏ;ìoX;n?° ¨N1¯Ê]²¯‡Åç7^û«À2èPNDÿJ»ç ”€_£aU@å¿ÖkÝí ”ÉÚCŸ3õ€2ÖRô£ ó5=Ý{÷5PU“:ƾ»­„AözT°ŠaŒJnÛÍ› ¼1æx¬YÔvºQ2P4®_:h wц‡Wñ¼ŽzsÃɇ@¹š«ã{èP¾Éù®¹÷‚î÷_é75y€Rôcïúg© ëDHÝó<Ô;"8îÂYWöL Nx6wÁùÛ¤„1Å“•¥ ”m»ïßÞ”›H”Òs (?[üWq_&ž°«à}jÔ”àüùƒ³9µÒ²›ž»DSʦÕÚ ìÿ“PQÁ RΨ‹8PT¾ +‹å¾×5cM ìð<âê' ”ôÁìØ÷Pªìä3v%­Ë öß]¤øßÛs³›‘âÒõó5÷Þ!Å3PGŠ54ó\ºR|Y”øÊ )&Œ¼·–”CJÏöÕÊÉ"¥"÷‡mçc‘‡/Fáô=H‰Gýø©ÈY¤äËãslx)\G~Ç‘bÚÛ#¢û×â‘KµïÞ!%ÖáßÙí¥H L#¹G’—}ÚÔ¤ørˆ9Û”Žma3žLFŠÙ‰yÛ‘Ò©MjFÞ…Hq­¢toÐs¤˜QšZ²ê†”ïß*o?ö;Ù´)~-}»ÿÙN¤èA<‰×{‡æ0‰z!Å‘ø?®¼>HñÃ)•-·Â/á[G8â8“Ú¤úf´ñªŒEŠ»ýŒ¿Ë,!¥µ¢ģ‘’¨9zЋ¯Õ;õHlÆù{ØÁþ)Œì}fC@ «µ=nGº‘¢Û¼ÐΤؙôKuÒ)Ê:ÎÝ;ü)Þ?14a‹ûŽÂ>XIƒWäSuRˆ9WRŒó5vfm—CŠ/Ì*®{± ÅZᜠÃbßãT»P2R´{ÌöûÄRr*wižPý¿×—MF{]N >VÍÓ—ãrš”ÕwáuV˜G*SQñýw%#ûs Øü"²œ¾`®lÚÒpó.kX~¬ë¾Æuú˜#Á+0·$è¬Âo0?e·V|ñbÃcÜ˃e°™Û9-¨âŽu£3wÖ]Ý[·6á}FÓL±oÖëøv¼~ëÐgle[±^ÔÈVV:ûl~¾Û§·Ì6]Ç׉.ãêÃ6¶x Ù]½²6´ËS¯¤kßcÝÙ[)Sus"wÄ7E¬Û\úIà|}#¥Ü˜sSij¡JÙX‡nÌgÞˆunÌb¬W4ÐxÞœÅ>Vbåòl óêºÀÃmJ`32¼WÍR ÷aø…% ±¨çHåÀç]ù£’íp_ŽÔ†WCÈ—ÿ¸{ÉÒÏËwí˜ÖNÍøg@ x¼ýÄ0Ö‘þ {¦F°_~ÿ°<© lzg†gÏ­âçL#益¯IÆ)j`Ý:¸?ÿb/ÐL¯œóÃ÷qÑÿ>/Œ²6y3îÝE ,mˆmy ŠžC|ò>Ì­¡Vi}i Ègî îfê5=?ãfIÐ㸮?5ºgþŠV±µÅP1ñ‡PŽº¹^¹Ò ”úÁµ²$/ Ü1Ô =(ÅÜ‚]:LG* …Qã@yvá ß] ä­Ý|`€¹ôõÖ—k«ëêwxÄà èÞÝpƨ‡¼¾,À ÈS«8òÁc©×0wG,¨¿+A·/A¦ŸÅ(w¶ÊŒa.6,ϼRƼÞ/}ägPJVìÞæÅƒî7ìãóE€²KNedO5èÚﺖ¬Í z¼ÇŒT§1‡×Lu®‚ž!i§ š÷½a+º¥Ë7Úp¾tß1; Å4·×Žï8P2u6ÔÅæõ»}5¥]é~m£Pf‰ò¢@aÉú»óM–)äSPœMàöÚ P¶n| et(@6›ZË-éwÌMAwjLôÎÃÞ¯èÛSÜ¿(V½Û]±@‰«rŽÖ@J:o}..Ö!%n‡m.‹o1¯Þ¥4ð®!%æËU§òð蕽ԃ¹ÑŸþzëWa´‘C¤ïƧ´ñ¥ä³}QHÑ9mCžØ Úh¼u´Ñü Rzmw¦ðGRª8ÅšnŽÙžÝÅ}1{ExŠ)EÇ,+ É¡ò›Ÿ§‹™ |±]Û5ÐFæ}sÍJH™gàÏgóh£¬÷]¤|!GüÈRºº&¥% H‰7ð½˜G Úèsowj¡·eá”æ×׉ G0ÏÖ”æâú#ÅESíZ_¤¤"tAQ3)Õ=3*œº¹§ø£B|Üøs0©¤,Žþ\Á|ïû=v¸mTÿ^ó8)å}âîçDŠ—²{°îTÖÞõÅèBŠ;=—åº1¿8[WV4‘b[|ºí æè‡µ¢âHqè£ÂJRÊîJTó@]^½¹õWm,[¨.: ‰6nÖ; ³mtHÓ:T쉔..Úßy‡ŸEÁ©¹{‘Ò3K}þ§øù!ÿu£Ÿg7RÖí?D-À~-ð¿×—3ÀÆ[îÚA¹^°9ÚϹ6Çx}ÊlÛò7Í‚³ÎÄ•XŸhÔxÞñÁ÷½é¹.3Ö×`á— î¸l¼¢=+˜™p¼³"ö{0}ÄåoštƒŸÃ^5S°9²Ú>ûJ£±2›Xì ¹Çâr;ñXËÝ)ƒu” ³‘â 6‡8>6VGøŸ(aýC?q-~¬§·o¼Å}¬'}bMVð>òk×4 ½Áæœɼûßñé¿)~`#·¸õä¼êz¦Öü`£n~?û^:ØÄ«íÐ+îÁ]îFaŽÚHìz|lÌŒ]2ÀFëgòö×ÚYlÁÆCòŸ,ذ¶2oûÏ_««ŽÖÄ}QúbÇ´6|ß_„ͺ:Àq<¡tUŽ>uÈ©—¿¼Ãü+ nÁ¸Èî Ð]V’z÷/tå~l¼µº’!×´?bYIœ±MoùA5Ö' {ãÀBìÐÝt \V,t>´l<ìºûõ÷ò>ƒò×>^ ó‘ðº¸= ´»ŒS¿ÿ{_œù£œY;Ð5ÓäÓx3‚õgð‹y± «E L‡ò¤%1Ì÷Ù˜Õ}É ƒv•Ud&€Î¨—Œi®szcø‹=u »Ñ==ÝFtÕvŒu/NK“ó÷nÐñÝ·þ‰>VÛVÚ:)‡?Þ¸fºì.w_´³€®pÖëùüí Ë¹[:bhtVœ3£·Rp¼X ù¬`ÐiÙWHå)ÏîÒ}Hå›E~˜RùJ¦ •’ ›>,G*}òÿ ’ÊÏÁ¥ê&M¤*lZübN©ôïmøw mÜSvûáËn¤ªú%åR)f⺺7 ©r¿u‰.¯B*¼4™éþHÅ‘/á¤i-R^s­­œŠTC?è¼”<‡T/½ 5»¦‰T/”f-!5 £]Å ªgð—ޤ׹Ý!µ©rt^—(âA*ÙGæÞ|ÙŒÔҿߟ^CªÌfÑÛVq^w‹ÇŠž§ •!Wέ•%He5 [} ©Ìn´õ Gª Ù„ñ>ÒÍã±H5uצ™2!¤¦þì«a‚R±¿ôi)9 ©±ª®‹Gj7ΤìmK@*zcÌ¿7G!Õœ˜¤©6H…íDöù”!¤ü€\°ôò R «\ŽÁyôÝ:?Ä„T´²NḦŸ“‚Çî"Õñæ7ÙžHÍ*!yû¾I¤&¬Ó02ŠëË=1~,çÛtÕÿœ‡3RU~À÷ËÎ ©ü!æ2o!óëgñÏã¡Âñ[/‚uÙo¤6ëB¦;Mke`ýq×ó-*`ý’éËñÛf`åË*ñÀ ¬_$Þ¯µk“8Ó;K`ÿíÎU|ß>Ô¾Úþñ§Ç@™Û?êW9Œ}k­ËË= ×û‡ÿQ‘1P™„ &ü^‚¾\ûÎÒ¥@uô|—Ÿ6”³±cïß‚ó³¦L‹vìoiCÆ_±þ{Uç õ9(uÅÝO¿1ã)´q¨: ¹7WÿÓ*‰;<€Rú hˆ& T›çA‘ùA@]çX¦ÿê P_¾çòéê“Z±].#@½­°1¶ƒÔŒÁÀ(Ùj vJDœÖKjò±1^¤ðhâAÁf¬wlâÖ3‘ë³xˆ"…@ò½‚%HQÀƲM<)¬ô]ñA ʹU#-ªHÁ!²ì[Y)’½Í%h"…j§5 ‘‚LsF_Rør¡¯-ÉGî1LȵE B‡® t#yÙŸ7¶?A +‡¶Œ E&=3µ«FHað°ZÜIQ¤¤°5pôÂf¤¨tõkÎ2RÒ$wÆûÞ¿W•ÏU‡È”sÛK±Ý.Ŷz)ò¾¦k÷b~­÷ƒ§Rè¬°Š¾YŠ™»,."…O …s%O"KßË…êH!!N™šŠ}±þKkƒ$RÚr/¾•G)äµ2’oã>„ð/Á~[iéBW“’èèSø:RülÌ_w)(F»ç“#ù¹Þ£)H¡bS°Çìã·jdB {,;ÎF"ÅǦÆÝJHélÝæw—^#Ųµ9«:U¤˜Ê¶g_¿½·ï÷^B U^²â½¸_¡eïS˜¡\<z“*žý”3m­Û•âºÁÁãПY ømlùóp (OZ·¯{¾TžÅö¸$ Ú×ÝÁTßOÚ¾îeÊ‹LÌÏ݉Õõ… {“ïåÒw% ~Þn—””¿—ƒþa^TúŽzÆ}£Aõ (…BÚÞÛåÑÄ¿…s± Ïþó%x/èÙÜìõ)½ųú/.嘫BèsmKqw]Õ˜¥—¢!Ø×ÿî1úÝúÚ¼ö?‡AoùlÞm½¸ýºo®c£t9„åvKR÷í:ÐËŸKùô÷ž7¸/hÛЛažg¾zMNüi´ÐßÃÁr–À¼ú\p©; @Ïü­ì)  tn²hê?”9oŽ­e¼°®¾óUXååð¦‹@Y‘i](¨ê}ºìi @R™©\zõ¨]ÍoHŠÏŽEü¶’ÚÁÖš2¤ÈN½_ݤaýTvg ’üY¬.<$3´.}^æA’¤¯·-O#IxvÝÛ&‰ÞH2PTE’Þw® Ém¦‚‹˜’qº*‰\YH"¸¸ÀQ„æ¬h}™’8R™xµ_¿dý*_IZYUœ.A’ýë“îÔ!éfùÝF–Hj]hʆyO$½dü¼“¡„$ù9[«Íj„IÊê›ÃHzä“–ø£$$y|áB§Øf$uçõm=gœ_ØÍ‹÷u‘ä©X*:…ó®Fœ”ƒUH²—ï[pM’T1Ô÷¹ëŒ$/ùQÞù"™íWVäý¤oêéHjøN©Åh’6ÛvzzI˜]_ÈïER7ù´ó·y"‰K’·³žG GšÖ)²'®ó\&÷ŸGëO:’x¹r²þ!žß•)ò™ÿ(’nx¶x`Ë ’–oý^ÃIu‡±×Ö ©ü[Ëô°Y$¹aöŸÓñ($¹uÎú›ƒ0’øúZ,]°IªW•&ø"iñèå`NÌ-ô¿Ï[¶®úZ&–ðë¶}ë·–”ƒuyÑÏæBÌ«ç,½"2 XwÅ8mªêëX.åwK˜kYÞþÑx>²ófX? b.×5ëê!ýO~¬÷¤$;íÃ×{:Üò pž8‹9O°¾µ¦ÓÕŠ÷u-Ùîx¬¾ÛC| ëÉKÁi`]@«œ—ÇóÓ/˜Õ¯ûÖO %8Ž­øf'¬é ±ÓÂãX×}Ïýö° ¬¿ý?™ŒãôW¬>Öw>ù×s¿Ã:l“Äñòd°¾goö>¬ÿô¬ÈŒàýË12Àú‘jŧõXß^‹¸9GÜëŒ Q7L1§¯¿9ûB ×ÝØÒ5ïŒuŸÏØÚîe|Ý£+éh<ær|C¡ -XG­ŽÌìoÃuþ¼¶©çë|ëìw¬3o¬°¸‹õqñSq_¾VŠ| åÅþu²¤ö• öµÛ™”Oƒõ¯†ö΋¸®‡ÆÏmiXוoèg¼k'Ÿvk‹H¬'Ÿ:øùà~|¶)«=Öÿ¾ïSôN}¾þôø.ï½Pà Tñ<—#X‡qù¯Ãú“ê`ù*_çùxôÃ'fЛõºªøt¿íçM½ «™‚{0Ÿ^SKêÍ€z,ÊûÁŽh|_ÛP‡‡Ú€*&}®Þ¢¨7ü¾ŸKjÓ¿³¤J vœÚtsë¾¹i¢I&ÖUŠg¸ßbÎDq7àþé¹Üò¦îê³FûÁ²p v¥z-‹q€¾>ýW+3+PEYex€¯š2zé м4z&ÿ¾Bè%Žy·4²aÿúò¡u!èSmwýèþÈK‰½õÜ»·)aÞõxíëábýÔ8‹gïƒ@Oàò€¤9æ;}q­©¨Æ}ö«dSÐ3Ûîì.oz7¯\ ½Eý&– —rO¢ÒÚô†•Ö)FI5ÁÅðËFœ×ÑÄ+Í»¿õL‚RTt Ö‘7M²V€êí«ôÉ s<Éb¡ë¾›J3Uû°Þ›ž‘²ÄÏ£_Ž[»/ݪ§ÆÀÖæ:ÄûßÛs’ï–éEâùˆ—ëüÇäÛQˆ‡gÑÉû\ â ÷]eð: ž­ƒ– Qˆ+ƒ­«âpâXçÇüªW±«&&… †!.©g¹;5WŽÚiñ[ˆëIùjOÑQÄéæý"'~q¸Š\¸ãÊ8ï4ñ=ÄKùÛüê¤?âùaaQ^ƒxSÏ|yáøç#»Mfã/§ºÅÍtØ`sƬ[qßÍé-íE\| ¹5Iˆ?qQçO¥âQÑà(oD|ÎR!¢Ñéˆ[ÀóÉ­Ä)º£òyâîŒ*º™x¥ e€8•²ü<$Ä í2…ø?Ë7ÞdsCÜÆ²ö âˆ×²p,òkâOUMÖ7ÁñÈ£:7ªpž5§wÌË!Žwü7oü2GÇ=ž©g,à}¼+ÏÄ“K:6–„8oØuª=Ä/E]—Û €øÍtÄÙµ#~•ï¹ü¯Â_»ù|ëÕtÄçJÕnb{Œ¸Ãë˾Š#®å^Ê·÷#ˆÛÓNÅ+qÉþ˜A¼úÙö°1¬Ú¸Œý³ÀÚø“¹¤&d8õ–ïßý=Ý¥`}øv¬é;ì}O6Ÿïkërk |ŸV¿uì ö¿Y¬˜?'/¦‡mÅ>4û•ûÅ3S÷FÖ;¡G®[tà1Њ˜ÛãÖŽíU;낵¤÷—9°–’ÑûP€õ¢QVVõˆ¾ïy¯;7<k“SÂ)3³`mÑ[°pµ ëÈúÓ¦?ðu él/°Þ>ÖîF¾ÔxÖ— ¬S—"^—äáõœ¼”<ß¶ëÚæM+`í²µ{êÑSÌCtêô1¼Þºu ûìOç>Ù¯kÃè¾vì­¬÷î[׃¹jॳ뵫cq2˜¯ê/¶Šß²ë­\‚ž ˜›vÜŽ+Ç}²r9zìÙ XŸß‘#€}ie÷·Û`m·/Ox½XßüÛsð,æäm†SÕÃ^ìÿ¥ZÜÂ|}Cº“s¬“êí¦ncŽó?ÜÓ6‚°OÞð”ßsXà¸`ºL*XK®ì~û ¬/—îໂïóÿ¾ ð/Hz<“Øó ô›3 K@Ÿçó5v}~Ða$Þ¿tô \.ò;Šþßþî=~ _ç¹r7§ôäò©›­À€ÙÍ=cÿ,èår?ØâBƺËGrsG6è†{½ØìzDð w èÿKßOõû¿/;Ùdï²²×qì‹sŒÎIÃ[C¤”IR©¤B% IZ $¤ŒJÈ(¡ Ù)RF¿»ÏïÛ?ÏÇë~=ïçÒ뺯ëáxƒ Ê8êa5Óàô~á Xý±×‹ØöTÛ» †®°ÚÑýŽá›Ið÷þ»ç¡¿`õ¨53bFVWOÞ^j«á‹Ó“ u°‘»Vø\‡Ô+,©h¬v]þi›ë‘jÝ<.X»7?rÜóÖÛ׆¿~Í ¸\sˆ¾^Öó–¤rò¾ßšƒÕ:£êæ%«`}éfZžlV,¹íÐ «Aí¯zÞÁÊîŽÔ³acP¬ÐpýÖ«1áÙcœu°öv×Ñóè…õ‰¬ªž`½g|,³^Ö·Ýí¥îÝ€U”ì3Ýô{„_ʶ:×ëÁJ7õµîÙ­Ó„UÆ–ÌŸº¤ÎjŸ @}þÈS:¾r௨ªüÖ¹þ÷WåWÅá ¯žÊ¯ßvZ°6ÄVöëéÜÙØØSùé´Öy÷ÌØÊojitƒØÊžU‰Ç÷¨fUöÝÌ•™"þƧÓéZj•ýÅ¡‰\•ß¾{PùQ´^7WœÄï¿­ÑsI­râfrû•Ç=•_N<¾î:[9¶<-GíuOåxŸûm‡'É•ƒ­Ú^ TU~oNÉ?ú§§òýûxé.fUe÷Jé³ó×V~½vTêRV刧ª©m_Oe~™Fç.µÊq8‘¶sÍ•ã 2Å™U•?6¤þм;V9VR©WKîó ½ßÿ•ý9ù«o‰®­Œ»6ü©÷À£àDé³g6ýFjUåhè;‹—»²À’ý÷=(ÀÝç±ïÎ9°$õ ¯hekuj²ç XóÛ¯Ž=å!VCUeõJ°æ©æìÐÈKZ|&ZbXûX{cÀÒütÇIÝ,=Îíê›zä:Ödæ¢&XºÂ±!‡þK­jªD,œÄy¥¸®­ÌzóÕZÑ;À|fUJ‘¯ócâ¬ùf¢ÿä½}q ÌÞˆ·®yZ`޶x 0‰õ­;ú£?Ÿë?é'¸üžºÚÝ,Ç‘[ŒÅ ÄÒNMs €%8ñRÀõÉsÜãt°X¬¦2R¿½œÜÃæ»`‰éfi'ñVo~æ'…™ÞÂ<ÒÏC÷»1_ÀâIûÛ,’–¾ˆçÇN¢G_³,9ÿ>6:SLâ.˜Ü-WMü8i+ƒ™¤/+VŸÊq°¤–SjS¯‚Åç˜[óL,óF…ì2%°¨ß6q¸–ƒµì Ï—OÁ¢ŸÑeh]'öÆÇ®c/Á,wÒ™Næ¶[Â3”ðËÊEÛo¤©€ùÒãtXª•QÖ!ª°ý÷µwJ°Þ{Sró7X;øÔœe\ƒUMO¥„ÅyX/hÚç~…«vù3M¾Â°Îûo·îø{X?(=ê-+#§«ÖÇíƒ&íÖÀ*¯ôf‡€¬¦y¹3ù`uï@àte0¬ŠWv¤„Àz+óÆâ.'X§ºÌ#ÖÿÛù悇5 ™Ýf?Š«E`µŠ:±î—¬ 2Î[ú§-Œ€õ®K­¶¯S`S`xHµ| V]oÍæÁªSÙyrö¬?Þ ¹³ÆÖG÷Œ÷€õ—E+žìÏ•O9÷‘Á³°¾õËÐfE.¬$Òž¡~õZÊç÷wÀFâ¿ ŸCaSm¶³„k!¬W,ÏóH„µ³t{ñ¬Ò¨2û\ÉþC)R?aýaöÕm}ØðZawœàÞ¯¨ø ³ØÈ,N[Ú kM®ÉM ^?š¿>kVï'„ Éõ !k¥¬n3ó…îÂÚtmYés²þFöAºj,¬·Õ+p*‡HýØš¬3kùè9î÷gÁÓðïßOðìê=9äHO~Žª¨P3x½yB¨çôÁ3™Ê/wµ¼oCúñä.x†6î¹Ô^¬Ï?mNäÉ–BðÆô*÷>ËÏ•û?RúÇÀ£M3Ýô»|/yy˜ƒïûß‹b3àíÜ’<ùn'æõZÎr×—€{Á#¥Ä•=à.[J}¿‡áðwòA¸i1À}\ïNÕJ7‡õ 3åâà¹tпæ%üÑÙó´¤#Á%¸N‚ºXÜ!—B‚Ámµcý}7ð| TC÷/Ý;'m}Á}K<¯xœøõëðÞßr|Ÿ~,W_ îPÛ“Õ'æbOJ–#õV¶¸ûà×§›É±Ôpz¼?ݽ¶¤[)…à>¿\îo¼1øžv4ª ‚¯ox×¢)_𜠥Û’x¤bÁ·WŒÝûª óbךè`ÞÂØìL›sà’è”™«Ç¼uýï“LÂÀ­ºÍùæcðV©Q/ä‚×M”¶¡: ÜvvY*Ið@àÑÊÖd‚£{÷2ÂJèÆL«÷\ø›¬;MîË7*‰÷½Yœ»ƒÌe Ã¾õ™ËLêöÛT0$±Íé„ç}Þ¢‘í–øºqãw÷ÀRÉÏ©K+Î[Î÷+9hŒ‘Í`-²ÕÑú²•àבµ%‚Ä_çyÛßd.{ÞÔZ‘¼<þÕ\ê`Iغì ëUœNü‹A7˜x™ª©=Ÿ“VÑ¡«ROÛ6€*ÿ"8ÒŠèµO܇ʹCA½'eW–•ê&íW³ oЍOMõŽpsBµ,o.Wt ÙË¿ «•>í°,Qu°!úö¼‘xkÌ6P/»mŽ9¾ƒèQë/Æ xAMnð_`‰ß}Zío¨gvæX¸ü¶üð2=P“<ÿâ÷ÔÌ“Šƒy  ~S4\ ûï}Î+å½ßóÂr,—=EôôПå ~t—wíõ¼É…¡EÇAíNè8Þ: ˓͔oÏA­Œ_•-Otfá›`¾- nñ*5!ç±ïݯ‡£À*_êÙéþ:P·'D²H=븦¥-f@åo_rÍè¨>ÌZ¼Xê ð Ήo„×¾ò¾åFôòPÛ×\EÂgzÏdß'q‹Ô$`YU•)(QKê¼ø`ú,K/ßmZ5ªì~hù‰€ºýJØò´`P©fï<§BãƒHŸÃŸ––y*ü2â˦ëý÷ñ½¾`ÈFuÞÿ±ödâ^nsìåŸßúBö`q ‹þZȾôý bu»:_º¦CNØë>Õ”ì{ó ¬¢~²ÏÌG$F²X0g¥ÚÙei¥_l(cÍDüÑØ9Åõkó!ûdIt]ÓfÈt:9Û™ÁŽ%]¹9Í~ð—2+?±ú·ÿ Íîï£Ø<,LˆЇLMÅN{f<ä”nÊÌ ÕbáÉÒa%±`ÈýÛb¤É ™Øíot ª!Û *cÓ Ùç¼…LH†ú»åo.L”âÉ]\)û¶¬ï“©;’f3R©Xx#ñàÅ»3}x|‘Ý8?æöÊ÷?‡…íE‡Ö¿ŸƒÌ^3—5B…XøfÎ÷ƒR7äNŸ¹%p˜ riõ6Aî=u®»ó\$dmÆx~.˃N]ùìé ™õõçWŒaaÒ¾?§öWaán½>½¤fÈðµ˜þ5{½ƒFb;!såTˆœ#d­“ª·4@¦˜>i³÷8d‡ŒÏ5ÌöŸí(„§Pëq »|úbšKø˜ºâ¹#Èó©/¤µ4ð#õGßK®X€¥±q÷Õ#`É]•Þ×Eðfñ÷Åc™Ü`¹ŠÍÔË¡çšæÅ9°¬Tlµ RÀ2òX¾ªu’¬§wî=¹†¬G_}´,í[º!ùëÁ,NçÊ#úîn¨êÔ‚7o¦ìG“Áü¶H0©©Ì&Q³·o ÏꞘØëAôlýWJëúA0ßuX}M":µ/+?Aü áq^9Y5$Ï´’ ‚¿wÃ~ëu‚ÅooÅ·£ ,‘yj»ÎÊ“~æÒOŽ>¸Ð‰æ:æÛ }¡åÀüðõ¸Ëa7‚;#Gw#ç@æðÛÙBR§žÚ–Ì$0K]Äk—‚Yq¥™R¶‘àPã-‹Cµ$î‰o«~}$¸vYnÁ"‹Åû¸äïºkâßçá –á÷Ûï¾ù]Ý-PNðÏxª!\ý™w‹÷݆°ì"‡”ôœ þÒò\ZÈ}úê}Ÿˆ®¯I£$ôm }&û/4~ –R\äò´V¢[ÿý]M¬•GøéAí°ê®²q(nUbàÀènX=7½ ÷fV9“Û½~­õу ¢ä`Í÷]¯ö>á-‰# sl)°ÞxUöŒt"¬6¶ô›Ã*n‡­¹e¬bÖG^~ûV!‡Lã–¶~ue­ÄƒX4î\yë%YÔåFDß¿ç7îU «º_[õ†Ü ?Ü~Wÿ2ѯ×t~Ê1ü`v?­VØÖoòÎŽÀf]ÙOéÿv ®:«åJ¾·a½¾{63HÖÒÃa–¼!º÷ ÿ¾> ¢Ÿßþ ó¿ëÅ4¡ei'`²yä>?¬¾~äíÔ‚u2ß UÍOØ„ìýè¶Öj‚ŸÂÿ €õºú˜s†»`­cÅáñ¹Nø×ŽEg7Ü$sX([SBìåN+—즸6¬Ö¥ëw²µ¤Ä Ɇ °º[ópûáy°Êuñîp%:w÷ù§ò‘°º1œAúº±³ë,ÍÖánc¢›·~y±ßšðÖÒ6‹Î‘ýM›O¤±!û¼ê ä6‚Ge¦CÔôDÈ®ô¡mÙn Ù_G¥'F®CNÈ胭ÐsÈÙ\7ê…ìSiùK«c ¾¬XÂ]h¹âGŒéH‚3k™¯g—@öõuÛòtIÈ©í´;Ú² òó¢¬úªŒ!t¸´¦…‹Üß}ÅXmdûOj°ÅM!;Ðrwô–4äBÄ{¸ÊîCæcâ—à÷A3¥í ºYHðìàuëk_f.7®Ø¹x‹ù6ä\–á›(Øp›àsåì²ÕE_ {—Ï2}!r|[¤4HýïWœ3)ÛÙGOôI¼û7çîBnc½®»¶9d#ÞîzYbLð,R!”39CéÖ%=½)àv‰ð"ñ \³cÃ!w†V=ùÔ9Ѱ#ý/äfWÔ®Xºr—W03ß¼'}Ю?k€ì£š_8 ^ñéÛ›8ÈJgúðîƒlaÿ–ˆŠùމŸéÛÙkCùáÜig³;YUAN5@°ù³ßðýÖ 2ošé]§ ½ÃJ'çÅʈà ,°åþ½@¢lžSyoÍŸ¦ÕVk ¶X°rþw7²þðÌR¢cÙ|Yë•ûÀš ¢êܺöîÛž«lÁÖÝpŒáÒ¶ÆJ§ÍH°•ùÎ?ª»¶Ô GVS>Ø‹Åg’vpÀV «/XÂMâcÙùå1`]Pçbk§•¡¹ªZЬrn}¢³Ûâné%¬»š¼Î‡.¿¸¹¯4‰ ÖÍ‹•ãN`7Z'ï&<³|«iš¨<‰!L›[5Žê&lÖHçNʺ°¾=žÉ!¸;rÒ:ï~.ØIí˧Àú:¨öKqXO…y¶~yV}j—!Ñ“ã"å£~D¿vG¶ªÊ[Àìºìˆ5X—q%x+»Û-æòf°~._½/˜àÚД(„4XÓlµùYþdýÝÃg}§FV=4P%ý‹%ØOð‘ù]®©è[ú塽·ƒÀVš½¼í˜Øò‘=²Ò÷ÁÊoQ˜½B~ ŠîÜÝNxiÎä­V#›‹¯d§’¹qÕ%))Gzòßë÷¿¹RrWrö¨i÷(êÏÏ€j>ll¸°Ô•ÌrÎÆ­ Ò7Ö¬©µÇ\Ð(;§úÔiæ²ù¢°’ÛX«ý$ÔÏá/j$ «>y± ÷ á³ø37² Ôà0áŸo@uþ&&¸e Tƒ×áл ®åºm«AÎCÛ2g;Âû^/#zŸ¯å«ã‡~XÉD›j5¾?®{W <ÿ~­ñJ<Ïjüþ³æ€Çbâ¥ê£ðÜñzUç°¼||LLRÀkôÄhóã)ð¸šC·¼êù‰îÍÁû$Ü¿ª±<ª7Ç,ûÁ³_Jáé– ðnK8ÖÈ ¾õÆN§ÔÀßò±ô» <»MNEŽnïü†¯~'&Ú½çÒOð.¬Ÿ3žwÜæÕùŸ=¿kë½–~̳”?êß"^ÞÑàØ¢xðy(”ÏïÆ<å¶0s⧦sEf³1x~v ¹=J/;þ¦¥á'ð ¤N.‰ÏÝAðnˆŸÆØø«â|p½W“m­—QÕÇM«ÞTå·Žúñà.2×¶ªwí/cëTðmß»ãżŸàùã":¤¿üRg3«¶‘õyŸ\ôΑ¼^ž…‚çpñ•ÿâ6€O¢ÅF àNþö—¢ žsæuZ^DÿË„*8¹’z¼2ÓË:ÀÓØÌØZž” ãqo¢sïïJ6°ïzŸþ‹[Iœ—_×ÿóYé3ñ`[ýß{ Œµ÷nóÛ40EèO?Øæ6ä lƒ1ÝsƒmÄÿÀr‰;؋òÔMq¾§×¾lÏ5\"-§Á¶‰vZ#S ¶ëx£€H ض­0-_6ýù¦Dÿ²mú·\ås$ñ(wMVlë¥Óú•N`5( µ¹ßë‹P¢pÁ=°y÷xcJpk£ ¤è{°þ¸\}Lð¨¹7Jð áKï"ÄÍÞ¬ù¯à ›¹ÔììhØ,Õê þ˜»–­påš[Óa‚»ë”7|vsÑÜ®Jî+ØlšApw‚î¤Â}¬s®j9Ú`/ñùêýlÅ''OG~cî¤ €õÖOdñá±½î×ýó ~j,ÞÊçÁ­/·k摹½§ ζf‹’÷i’·ð£Êç>°Û Vn]¶Ãù:Á‡d~¬›„vë€í±ÛÜT—ÔÍpÒ~ç VGæ×¾óoI>å^VX¯>j>#<²—YRjylëäßóŽ—Âª½ú¤ŸÎ¬,ã)gƒa=ïêg—¸9X%þæ{R«B­mýϯÃêÊô»ÿ¯£rÝ <Å kû†qÃI°òo¼ÿ,v ¬÷íöK¢Ã*ÐúM±•-¬.»ž«›PƒÕÊáAV á}&z‡Ÿ[ÀZ)hÃ_÷o°êQ×wfž¨ôÆ='V™ãGf4/ÃÚyjÕ.µ$o¥R5c)¬Ü(Rû o³·=²åÉ£–"õ¶6K>¾XË ««2Ç.]%þ·Œ|–xë—VŸ-¬†µ¦Šì£wí°f'V%®ƒÕNÙµ¢ŸIýÊAù3\°:÷úÌúd·63ªv´FÁzÿ«'Þ“°1¨· ˆ˜k‘lS½Xo£?W5Ükîß6"+Ó`-Û0ÏF4ÖáùɇÄ`½çP„šÖö\d$¿ãï¾ëSÊ`5–týÔ¬²¿j¦Ãê<×Ô­sÄ&¨Í-ÖáõåÂÁóÀÚI¹WõÜmX5ƾ¬ |vÍ‚«*¾°Ž[WܨLæûËÓu¨ á]ÿÞf ‘û×=äwBä™xð&³ˆ„|’.7‘RÎ¥{ŽCäK`…²áˆ¸6¶îÈõ×Þ>_ˆahHþÙ ±ÜCI\§ ‚‰ MI/¤¹|·ðˆ¦è¼4þ±¢ý©î7å B)úzýG7hüàñŽÅƒÄõÂY:l'ôµ} Ìßî:´Bæ\¯†—0 äÿd²8ÂÂëïM_Ï_ ѵî{ ¼9åñÄÁ›X0,3ÿwwÔT§I¬.èðߠо»]òyéqsˆ*ù¸®…ßÖGÅâJ3¨øO˧ó[Œd”xÝ0ÿVéÕM­ˆ™/¼¶n+DîhÅ8 LAXæÒÆÍÆÂXðÚÅ?€ž ¡a·Â_µAl¦·PÔÄâb'g4‚!jQ±î°x>DÞ<’„XØ5u\õÖ¬°ëg5C˜yòë÷‡JÔÙÄ€pÐ2›(º„Ï„—½‹“¿5ú¶FùÕ”\gHú*vøjy¢Ûœ¢N£BL{Yßµ%c`ý{]sˆ<ÿ!ªïz~¼yqZÐðÁ5 |„ ¨|`Mýøñ~²ŽåJbU”æ¶þóiâY{9ynãO¦ú~°çmQÿ[ý¬YµçÔ×WÿÚ_ÛEî÷š¸<³%|ÈõKjU&Á7ñkz²äùŽà)ZKx×~Áüçå`ËÚí@Ö‹ù×è5½yòÜ®ÿ(³`]MsãÝ& ÖáÕ½½‡.߯ÍYV™çä± $îLgá^å"’÷eñŸãD§÷‚öHƒðÄwsν`õT}9aE곯U }Fø\{¥­ß°Ò¶Ø¨¥~õ-*¶è÷/›åÄ}NœS73®Èë¯ù†}%+þý}EÆå*9bç-Ïo"ýÐhÂD—öäO=­Jx¢çËñ`õYÆÄý üï}¼öˆÌ/°æ6[Ežúëk¿Ï‚{Z¥¯òþvÉcϤ¹^f¿X˜Ìéb×É@ Rÿ¥½wÁJd½çóë!ü’»ÿó;¢‡?ÜPù²+vKÿ}?á(ìN^xñ³v»RßSdWÁvÚL"èn ì´×Äšœ~;‰„´ˆæØÝQdS½…a—½Â·p·lŸø>m²„]óûµÞï aÛ ÿßâ/¿v¿}%l‡šs¶…Áö·:ß±#lØþÜR#ê »ÁßéÇÜ…`÷mKj`øØ-¢äìÚm »[T{¹øa§¹cáÏêc°{º±àáJ:ìF»ö–îÞ»¿ãǼ\ û¯·åo„ óô¿ïɳ“¸2æ7ì #^ÞãƒÝ%ÿû}Ëë`÷¨aãPËQØ~ýéðÄ=Õ{‡+ÛY‘ç*)ص÷•y,X@êI?³öG®ÑŽð|€ÝåÒ.'¯ÀîÏDÔ“{O`—ÀRÏ­NƒÝ Á½üZÙ°kK¹”åš»<ÿ}o®aêÝÕI?R߉r%~EØ­?"”äs‡ÔôHzëCØ ?ñ,x»œÌµ9_:{ìdy¹£oî„݋̋Žù°s=e¦Û?»žÜ¼TIì~¥GüL¹ ;¦Ô-¯1(Z¯±pØ7ÅÏJ7B¸Ò èm~È$!Š&¹¾Åì‘òœ xµöØÅã¹PôÑÿmãSEÏ^ÛñD5(®IžŒ¶‰µàAÕ¦8(^öÊ‹‚â)[‘ø½?¡¤Ü¾æ±gÏgw &A‘&ÒçëùÑ )ó‡žÿÑdî믨æínP°eÔïy¶ "ÊVQâ È”LvmRƒBxÆG=ÛçP ®¸t„ …Ž÷oÕÒõ¡ð0qý‰éP¸Ûç”6ÅqѯåR,Ix˜æ·Ôs·y$ÅBEîöt(ß¼/îù–í3Ü3æ¿ÒãïTÙ%Q¥Ž¿×Ö@1óév|:…Ɔb•Z pùhÇ^Ñ¿½ÌIÈqJA ?-äH?>ŸöÚC±×ZlÁMk(Öè ­‡’mÅÑé¥ÝPäâÙ±û.†ø³4x„ wµx4HšÌ‹rÍøÚ(îúÚgâAê·Õáô#óß¿]nÕk(Ü> õi ŠöÑ¿gˆ¿ññöyµ½`oûw@­;¼öôâ#°w¼:åÚJlL£ÿfbuBSÒÁÞr¹¨êíq°ƒ—) .ûw]N-FØq›³%g_}Ìé@Þv*Øûö;w. ìÝ:ÛyÄËÁÞœÛtŽäY$b¶m>Øa{¾yæÍ-<¸RöKÑwyŸÖ¿&*»¨æ}û0Ñé׿Ï:Xƒ½Y v»P5ؾÛlÿ^ 'ñ¢†ÔÓ>º®¾¯§Œ“ü{öÞ±|CúÆAÛ„÷†½-\©väkïù…„7o[~6óõ ’7ž’M'8·wí§º°°£e Úý]Àޝ\¤OâìW:ä7uÌM6Ô#Œðú—`[”ÈJ™Ó€ÙÙvÃt‚£2ÜÛ.­y»¬ìÙ¹Ÿ^ç"v·ï!8½0ó0éÓòîäWƒVØÏz »åï,#¸¯²»Òó‰ãÏ#åGð*æ”í²pwØmÙ½îM(97Bø®®†˜”TÜ{ÀvrSõØؾ°øísô9lkÂÝSöŸ$8lR`xVvÛ$6Ì‘zE®ºxœ+*%Qݰ;Ÿd&NðRa pä ¤à_üÎRK_4Ð_P uíþ@M eÐ!\v¡Rš¼+E¹ å:í©Þã ÉB\Ÿß…ä‹n ª[å¥+ )N9uP¥Råkóª¿@Ê#Ô`}ÄNHÍÞ²f'² íu,öÝü^H¾ ~ï]1 ÷ G>/* ±â™–ï¯HH2îOi¦>‡DÇ¥Tom$¾äTöòæ@B®ðåçrHÜ^¿.gW$$ÝåKaéC²Áên×ó›>º“É©þ75oÖAJj‹ôãDHVÄøí2?É«>ÎE?I?5Qö¶«ïBêè¢2§š)HxoK‘=ñŠ–Kƒ9Ú˜Ø[ _HQsƒ3ÎTC²¨µ­“MÄxÚŒ$ÿ›#)r÷ò![Ê'XE,«¸RÇÿ)¤.oV­b@²æ¤å•-§!e~Éd~$cE~K06CònþöÊâ]bhÝRz± RF&ÊKCW@êVÝEÞá×pQ à•Tž“ÛˆO $ž»róo…D“íj[¯q𮦵ÿ{Ï'áåâà˜ùèì¯ýŽ}¨ ïhp,¾5›rm&VrºÒj>8FÈhZ»œ%yo?,Çäñ•öÕ;Àq¿Z´²~—×7û|KÁ¡e¶¿ðmǦñÂ9Ýpîy%¨\Ǽ6|AÜ~pL³ó%ö^»¥Û_òí]b% úR.‚ÝGUZCø gÞ—{‹Nv”ÖÙaì1ê\ø™c`¿ÞÕKpyàå©äÖàp»sMØvƒã*ìåñ>–بnÙrpt~o¦õ’ú¿l Ê’낎«¬Àq® žCÖ‡.¹ç1À~Ç¿?Þ^ìoíGå¸H]KŠ Æî÷£˜#ø>t9™CþÑÑA¢;¹d4ã×€ýYÁíú_up´G3¯¿ Gkj{úvÒWÍ5¸àèJ¿­%ó[loÀ5µÛÞPEp£R=÷ígYÁBǹ'àÐ?;QfÁqk¬à¶9öÈQ›7àØU¼p7 ì×¾â[ÂUÀYÉ™¬[\–}›b[Y¡/ƆíΙø'óa»h¢É…] ›w‡ ç—MÁæGKH{{7l>öPô§ÖÀvcí›å Ça›òÀüKlÚkô7fÖõ†¦z— › ß·­Ž °ùò–~AÛ‰X³§XÓ°åû¶CÒ˶þ´Ëɺ„/-ºYÞPC윛r‹lÓù³þm;’½vv« lÓJY,%~Âe1«r½a;Ñ@ [‘Døä3#Þ6Â'ET]¯ÿ-Í]­R½6’K„튪pÿÔ Ø:9Nÿ{•ôÅ:÷½dlÊhˆ6xÀÖÅ/Ÿšô¶Ûƒ?ü~$ ;þý÷ß½Ûc¢b ã ïU<’j³â"lU7?!÷…?N?Ù›Û3ãùÉa«¿ñ–fþk×âLGÓ5آɽ»Gæ±±Ù¬ ‹ì‹:4|C™ð:¹ G†5u°ØÿÛûÄKØ|õùY|Å6ÃZÜ*B£d¾éZz_Ï•Ó:wülþ||°W®ÕV…í‡;ãgÍÍÉü„$ÚU§À¯õ-²mN¼¹)ν¾aà»kSM=ž¡¹»‘â¾à »ÖÈÎÏϺÈÐå›àYoµ¶áñß,.0«”¾]ŽgÝ«À?O¶+û>ð4ï–^µv<ö¯´¢‚Û¥ª¡-¼‡ç1ÿ}>fëÝI‘ûæ\º«ô¹æ´­|g“1Oƒwž+橱Î݈©—]Þ»ò'Éà ûûv]èÌ8ø;?½ó–<ÿ5Ô5ûK"ߨ<»«+,l u} ˆ¾°¼ŸÏ»/¼z¼‹wzÕ ž?óº]Œ“ÁÇõü´dw9ø\¨/Xkýæ^ët±zæÖ¬]µ2¼ã]ûØ’jàó=}à¹b xVrÚê]Áµ"æ‡Úßµà’Lµ^V¶|Ö{––Êoߦ][ï†O%M%J&<Ñéc_ËÁû¸sìVÝæ »ü8p$|‹:=ȯµÙ¡®{¤ÎÂÎn;•Àóƒ74;s9¸Òj„2ž”€wÈ{εDó’þÈKûÆbž|˜Ÿ¾ÖxÞ©uÎ ø$ýïã{üäy—ó8sâ¹î{°tö28Jµ_Ó ß‘uÅ…/äõÁYXÈ¥«û©k<ïLãÀQ ¹ìBž_ýÏÌýæ7%ŽyÎ?Hð÷e6³ŒàB…îÀJCpÔ¯8.I%ñŒ3èQd])_ã‹I>Ø×Îߺ¶_ìëC¦ *3[«¬Dpfš¯ª…ð¨‚Y}»Å°›ÔN§{Ÿ&§þì§ß¢$4Àž5kÚ©Cp»(œf¦ õÆwr­võš}©Cᣕâ¦Ã‡æ”×I¿Çré%»pÒß–è×I`im<ý‘ðϺs—{lj_,•QMðI\'}ö,‡øoÈß@xß½•†o ÒÁ~¶<'‚_Ù¢´ï;‚£òìs¢ ‰k”ežÕŽæÞFç32à(//›ÿÁ÷q“Õˆ?ßöc(Á5íe<\'½›;“: ®>x$vÑìâ¿Þî°!õ;ºG ]XsõH|"صyüiådŽç¥ïñkÃaùÒ2¢ à°‹“À‰ì…ƒñ‡0.8Ø÷îôª?Qûï%7—²aÿ!ñTÑÒOpØ3öÔ¢´…ŸJj>)¾ë þ"Ös8ì ˜g¹S öÙ«Ù§&ß¾ÝhÉçí~°ïÎ76Ÿ/ûAßÊÿÁ!œï@íd.Àý“÷»•ØÅ'ï…ÃÎzÆòÿÅás0礅6S•›/óÏTy ‡™þܼ¦ 8¼Øéÿ;@ó;fÑŸOꛤ|¼/û‘ÆM5V—à3½©Oqñ ?€C‚Ðb³ÎHØ×­ÑýâAö¯>˜«¿ðPÓ€Åÿæ†7 Žp¸@Eç¶Ã€ü-׸ݹp0)Ë£èIÂa ãdÀ]pˆ¸é-x-èöú’zcÎï_Ì­‡Ëjg³øBàp²#ío/.e®jÝá êWÕ…¾p°Û¸:›Ûö£œÆÊ!ØOr©ô«4þ1u¦Bpȃx§êô<8pùÆî.!óð81òà8^¯ëì¡NgÓ˘àkW#ø‡Åæ¡wÁvñÄ‚•ä¹ôyõà€¸g5ü^}8Bðà é û>ðmÖßµõH0~zì¢|ÿ»ü“Ü{îB°åï)·õ=à=xãO!x“˜_ ”À×Ïèê'xãò0s÷Mð]xååëCð.ò`ëö¬*‡9÷bƒ1{‚wf ²òÿ%ƒÇTç«÷W_Ì“J¹{äÁ7á”ñÃBp­z±DŸà£ÐÆ<ɵäÇ×d¬[ü:…à©s¶¼ÕfÚû=÷A@ñ1ëu À·Î¿HäÅOð\Ý¥¾!¥M?¶7ƒ?y¡Ÿ¬æŒÃtÁÏ_Y˜­óðÍ A¨Þ€8…¶øY6‘ºwj1Ø ‡Ù×á/‚;vÓ‚^;‚ãÖ—Ÿ l"þÛ61²R ûôóL7x+ÏZõ€ÿûÖ îSÁà®{úþ¾é„·,¶rïjŸûwÎàQ_ð¾Ë2¼äÂ-còF}3æm+ýTMÎW…fs¼ß÷=S]Lúý»øÛùŸaàùºü4˸œ’Ÿ7"ÏùãAÛ ùeà×lè%<íѦ¹³–‘à<ì4ŸÞÎ}ñÿø§¯€“8OwΜkbaSYà¼f6×.XNg\qy9œgÓyÃyàÔïñ¾™$΋5Gþ»NR\èÃBÀ1îŒ÷‡H=–ª«T…Šá˜ÐfuÌŽ+ESVèÂÑÙúÍ"¢;#wé}šþûy¸W hÈú˜æSGÞ¿–½4ò@ kŸ«É€#OÄEæ ðbÈG·+øZ;£ü¶ŽK¾ ã¡©9ݬa8*I¦^uÚÇÍ99Gús¥ÔÅìf8®OX’w±ŽÙ·Iù‘ývxû¡˜X+ÓÄEú¶TÚ=Çü­ùÅýM Ž;9ÂüûâÖЄ£îG>^Å@Kþi+…ÌÅÚê;e¨)H.$Dæ™s&$ø©Ÿ¡p„Ôë{æÐU-’×ëýp˜7ð1tqUôAð*Ý4ÑOö“KÖ]„,* £çWg\ŒþÅ,p¥gtØzÞó_žk6½ÃáWÆi»™M p—·?þÜ.c%z’)áM·“V6€Û|×Û¿îàÞyò ŽÙ†ðæVç$ß²ÏO8üÏ|yÆØaB¥¯|}K•Ä|0Gáb¬Ã”SRrû˜ÃLÌ-‹àƒpø¹j/ªBÕ¦þ85m9Xå0wðöºí=¿5®ìý÷y®ù{_<š÷»Ïî ÛÅÁ#û¦}`ƒxªjÆizjàL²¸ îѹ´-þ\àI]œ„pü>œh\å0¢¯¨ôí,‰'[Õcr• ÜÅó½r^d9üÙ˜ª´„¯µ­‰6v·/¸,Æå0UÃvÖ‹ o %(ëÁuŠl¨Kz!xÌD*¶œ$y–¥Y|%8u⥃àiyØK«‘sç«U¬i]¹óÛßô‘s¤y¯òpM>¸Ï/Òý﹚Ã\¶ífyÂ7xøö Vé5;Ìrk,ñie8ü¾S¶Ü(€yùOè¬@¢³þPGŠåÝ™;ÈsšWéÇþ¼œÓ-|Ÿ¶~–ö5>¦~ 8g"çþ;Dxб{T þ[›C'£tªÁ±ÊºØáÎy ýÎb—çüÍô'·5u2‚èéìà×_“Áñy÷âY«.Øã_o[´ûG°€Á|:Ø­õ[üÞóV¯1ì®–²÷i°§zNH•)ýë:þ>s82i=êïU‰®v­oÚMôsþåŒÞ6’?_ÜS¸GŠà–Á§¢ƒÜàœ:~®ž›øÝ¸°6Üî!Ég,åÍCìã#µ{ˆ¾=Ñú´î-س¥Ê×ÈJôŽŠí’‡Z¯¦NŒAò˜O¹¿Z7Rë,8m•-W <욤=vŠœ çܧìkû\ÁZpîm¢Ü8"HÎÛÓy~ÏÁ9S£õŒà£Ÿ¬É²•õà\XºBËð ÏÅÎÕþ—åáø9ÅìÉà€yÍ$ß ©ÛíAàðO\ìþ4JxiÓØ­àܵo½¾NƒµWG/Ãé÷±€‡¶/àÔ7¤´uMœÊ¸vž†Ó“'ŠŒ¯ÁéAa]Šc(hâf[d+#A³×[|^ N©ÚÑ¡Uà4u:0|ÔNçO¿¬ÞW§Â±M·†vÀéÖ–¼Õ…pºýõjÇv9ÐøO('6ë‚f0^4ó†Bì‰Â2  œpÿ^¨š®Æê§÷àôiÏ©-.KÈýl=×#^ Iû<$ûxáYšÎl‡Ü"38å-M<Û §œRJð8}¹P£{`3œªë6¤üô‚SïJ£ë pÊ>=ÚCÖ˼ÆÌRàÔ]¶¢¨<4ûî;c[à4ªÏ(#ñ…ŠÌ%Fj‰_ø¥QMÒ¯üżɸ~ÐÄê¾—Í$s¹.ýc=œ:÷u÷‡Ó¤ØAýº3$ÏMkÞO±púfÞ|á¼™W#C¡§¡ÐÁ§D;e­® ÚJê»ÆÈ¾½ÏƒÌWmñ%hª®óf»á”ɳ'G49‘__Œ@íô ¬k€SMç‰I¯!þѵ@:j âa"…53ûûaî÷Š\+.^Uáæ·#¢‚¾}Çê;3ßaæà AgiD˜²y ­ùàŸ\_³þy,Doó›t|ê‡ð§Ú׳ŽCÔ7ðÄäm[ˆze[œUƒ˜ú[>‡?æ?çÆ5»½×:üòÓ7˯røqþÙ̵ B‡¹«Óc’wžËY¨íÉrÞ?IpÉ·é–×Öf‡ß¶ñ;ëø’~*µ.¹–Kôe•¼ w!FßfØÕxb–©ÖÍDßHôfJñBx¬ïLÊë1ˆïc¸7C¤`ús­` DÚVhJàuÞ­ì½)…ðNõ»n¦8Ä7‹``;B+‚_œk†èåi¡ÐSñ£e1u nsePÁ’M†h¿?‚öÇCòŽyïÜ ±¼Ÿ½Ê¶B¬ßÕ©DÀâŸÕÙ?¾ôB$Wø}W,¸>oS|¬i Ñ—5÷Op|!úŒ¯ËxDÃ:.š™V9ü™º§èá¾¢ÛþìåNqø]]jàz‘àþÖáÛ8AÖýãÛø}–ÃÛAïß Ãà½Ì+uÙíïðvK¢Þ{ì o‹,¨Ä$x›eé3Õ…·qe’óC%pRüËîuÁÛæYWq“/¼-ùl}ŸÀÛ¯Ë?)c7¼)Úx>;‘}_ÿ|R„7m™ÎKxÛÞP9OxT˾{'ß\]WvãsÀIp‚†%ù\ˆÎÍO8dAt„š‚ýÃß‚>&xþi>hôTð­PÎïçÁI¸š“wð6ßÔo1x»?Jê‘ õKۜѿ o¯îèç²$¯fb€«s2¼í»sj¶¾·]AÚkÅhxS×,¨HÜŽÛÄ6ZÝ}Â'³dV==Kö=p[ÝFxjï¢ìâ Òß‚™“¥lÁa5Yxj‚sò¬—‘§ ¼ ’Ž>Íþoöûy/¿í$ùk"ÃSH¿t{Y3#RGoSVáV²ßcxS á•¿jJ…¿m&yó ;݉¿Yn|Äá&bšúšÏ‚³góäÒãûáí¢¸iGh8Û/*sòÉùrÈÜFǘìsœK î]å­Ìa=^ЭºÜQ]ÊíúÏë L(tSòA›mõO._ Ú÷ÏVAoÙÙÞ¾ô5Å¿A›ÉRÏÞºkVRô. }´Ú'yœàÙ3 ûs ýt׬û‘ÚĘrqRè×½©ý ÷ôs}âö½{³ÐÉÓ. ‹Ô©´ÁYücÁÒmÐË–4½­„3ïÒ3¢ÿÿ:ÇîÝî ß«æS¼ú}å¡roÐZ¾DFí•8ûÃéLÐ¥Õs,]Ýÿp¥§4èFFÝôozªòŽûß“¦+@¿pêáž²? ÿ´°1ž,Ý`ÉÀµ(ÐCž/¾ÅEön§·«‚þñþs¾+RÎÎÙ”€öûÐòxQ!ÐF}ïLk}ÙŠw9…$OgAáœèÊKY¯ƒ®ÑôBþô8èB§&ÇÉü¾Š×þ¬›mø´)¡hŸü¿×,½tAÖ‰¼TrmsÁ0ï™ov¬ÏÒoÅÇBõŸ +([½|¹ òÿ>vòSG޳_ôC>§üyé²ÈÄ~ýa9™ŠëaÚJ-ÙûöõÊ#¹»ÿ4¹:Ç ·þ>af é’õ»’W­ÂÂi—àÒ©ÍSþÕ”5Ä€r/ׇüСÿÞ߇B]‚•´<Ÿ7ç|¹QÓ=ŽŽù ”‡C¶kì`í¶›M±’æû¬yªAÂÌÍã§Q>Uï+€|êûB3QQHzúÔH\ßGúXUtç.Ä«Sœ=Ϊ‹WuŽ2ˆžÛE%8ºñÎÄæ§„·îýxv7Á /?ÿcDÚ8Nëœ{ZëÀ(/á=â'ö{Z\ ½Ó¾ª Ž­ºWFÔpÚ?ܪW"ºðuèZcw¢/uëÖ÷}ÛüHóÑ›5{4†€ÓÔnräý9â§ù(ÿÔA°?¥ýØNxàâÈÚáÂg»ÏýçLtߕ.›“søWN鋲m„w‚èü}§x‰¾o ¹åúÄèâþ¦ÿ\ˆÎžÒÌ=µŽàù罬ÒWs€ž“ áÉQKW–žZ"ài¿G˜äÿ/AË’ôYû¦½¤]ˆàöߦ§,Ò‡Á#ÁÒõà´z%×]+Ùhù!a'Ñù·W/ô%?ŸZ‡e ·ó?ñq)œ½Ƥ]çì°Eú§4œÍG'Öƒ³åò4ÿ#æäºkHìö8׆D õÀy"&µMf#œm6íýp{Î/8})&§á,|ÿ’“t8ËÞ5|sÊÎRáeâ]—à,3ôëÈ–X¸, 2^üç«Á‡6G®†sn´ï­í·áÜ4³H™ÄW9Z&òΉ{~ÞrΩŸ».}˜óŸ§¯Ü̃sïÇm…Êp™gÿÅÎô¹g;®$Yƒ>ýu:ßNÎt³—ÏuIßÿûØñíf셌Ͽß? @V¾£t`†<¯â%Ö½K‚ü³ù¦Æ¡Ð ï·sÁZ(ü<îêç G½µ&ãîPªãŸ?È: …SŠ×–BñŠû‰ÿf [Všr‘³r·{w„X§ü8—jPyÅ„bçR5H1:×TŸ†Ô}ÑéÚ#ÕÖ¾FùzaÄÏ6]™Õ‡ÔáAõoÆS½‹ÓŠ#!é8¿Hè+â4çZÙCì?ï¯xÙ…þõ3Ú ûE*n¥ÞÈö>š·¿®r—„…^¶@ν6SËMmzû=_ rrÝÏ•AnÿŽ_’¶G%úªãMARÈPãðÖqÈY½§Ý„ì‘ý™©Þñ~ðs…Êl ÄåCV?ŸŽ¤üáϦK {ºÎè‰ÂS’w@b!“Ùã/êŽÙô@6Fʲmü'äÕt»“å: ÃûÕ}_y”¶´q¨‡œÿúî™N‹¼FÕÙ?Ùß fj÷!¦_ß'a|²Ÿ3ýúÈ$-Y%9›Êöh‡¼¸Íu®•pÆþ}¿ûw‚‡õ¤T¬ÈóØûãÀP¼ùØÒ|lxóoÛ—øïÚ/wO&Ñ“&Ëcùc×ÃÛ‡Q%p2œ¹]û}à½iW Á›Á;wŽÕ^6Ü,Ót…\¯=ÍsÄœ¡u­íÕ¹”ÛöŸ– xTk*A¿fö‡Œîå|^àðâÞ_¥c`¾ñt ‰èn‹/?Š©à¸–.ÐKgåš<£UDž¤ÆšÿûýÉß2·‚Ç•ÄÆ†]&:³GIÀ?ÄÞüŸbM¬?ü»T§"4ïyz•£<ÿ‘õ‘6Í$°fû³ìû¯ÿ{HtùÄý˜ó‰Î1Ki•'ºù±l]ÁÝæÄ;Ù%ßÀˆx^ìIæ`ª4ñíéGòm÷(ÁçáÃ* Cà|б¨¡|þ É¨TU':8â¡X±}¿=³Ö½$¼Oõó£D¢§IÍê–‘¹ÍþºíûŽèú~Õ¯L¢›'—ÖZßEúd‹Ÿð'ú¸Ï>é5 œ9ã¬[¸þïýqp5t»¤»Î®ò´_jËÓà2ö£nø¯\ýù¨÷ïÃ¥Oü¼FI¸fœ Ÿ¥¯ëÆì5=ÿ¿?Ÿr—yÃÕ+©í³Â1¸ 4*¬ý¢—‰ÊÅåumpMZbuŠ.?ÞÝ)Ï|×»ÃMm\àêÿ}ï|›¸®¼bV“×#—‚FÀ5Åqn¯V \ õ¾ÚpÝ*µ•#3צ¡Γõ'Ô×—óWÁµÊ3~`¿\Úƒ¾zì{—6¶ÿô¸jÜ%vH®bf“ž*SpÕ»lð‹;\ÆÕÖ̯K„˯=±Ú1p½Es[På ×óo‚ò¤²÷º¡Ú$Qü JÛ‹&Û å_1“kM¡r9£ØÈ *|?·>Ú •­­Òóé¼PY¬ðUê*m "PóVþ´$"j¥•CÙ>P}½/¨µ½ê¡Ì·ÿU˺çèwã&”w%Ûý*%7ߪ‡ZùËd×ûP)R–{û²*ÿEY‹ßö…²HçÊmö}s,ŒÌáÁe¶ÿ%¨…fÔ‹”CmU×f  ú]c»þ=Ô†ò%¸;CeÅy GL‹ÄG3?”m#ùÅ]+„úVǘn­ ¨MÝ;ÊÅý¾öB]9'pÙž‡P9¹èËíTö'מYõãÞDg- þ÷>p¨kl¯¬ÇÊpü×-pRS—i\-z7äÎG‚7¹Û§­ Áù\˜ßÎE ›‡ãD‡ž½­k¹`/8•‹ ¦Ò‹õ÷$ œ&z¸‡+qÅ=âgäõüí>p’ÞÝ­¾Ht¤zÄJȺPXkc 8¢“:¦ýŠ`…´ÍIå‚ýºh.òþC°g']¿+ìû[[¥ë´8üõçÏ[“ÚzìžXoŠà_ð=:Kðçþv³›ãWÄRÔnƒ“ú*B÷m+8ˇ>çV»ª\'ÆMß®…›h‡$×c¸™{x>î!öüâKË‚à¶hí”Ý…p“=|ÅÏRŸ\Ï­ vû|KTï6¸i¤û']‡[È賿MàcßUéónñúj/{çÁíKëká–õcbǦ)¸99:ܼ8·¨Š4·Â óŽ _`ÂÍRÀÓi nÁ¯žóî"ùÎïKÙØ ·…#:v&Qp 8l àª7Zèæ„÷«àtáªM¦+Ü ¶F$Ú7=­¿dãà¦ìèG‹†Ûaeá ¤>/ŸÁVòÿÒM¿Ý~áI‚Ë=¶ 4‘ýZ&?†ßdÂͯܵQBnêSËê6ª9M-Xé67ïœásÒgà¶!uáqöN¸y(¹¤V&øÅ1:4³®¯)‰†›Åî Ïõ9¤~­]«rIýº cygHœ¨â›KcI]};º™¤\ã;­ûnÚÇJÆ9Üp£œÐ ‡–Ä¿çé%´¶=r+û -¹(ãø£¾Ðz‘ÿýeÂwh¾ß“# míýá6Wc± {Yxº"´~%ŸVZÌ€ö]“u^j¶Ðúý[åW/´·ðNZ>µ+\ÝÖºÞ„öý±‘h÷ûÉ’ø'JÃæçr %¶CÅ¾ë ´$“ÿvt©AS¦ð°B‡$´b¶„¯yñšfòU{ä4 µ`ÅáÁ5Ð’.Zî¨VÍ#‡æë¹-ÿ‹Ú ;¡-Ÿ¾é’y´eû/ûØA+äËÇß¡€ÖáY‡°H´Ü¼d⻡½ŽKGOZšz•rË g”&á Íö¬û7‹•¡uºÅýZv ´.*ì~~ù&´‚ùê“WÖC34z·Ðõ),nx&gðrZŠ&ƒï‡VÔÛåò<Ð =0@›„–ûc õ5hM¤Õn:ÀÖ&.O+cyèn~=¿Tڇ얺ø KY²4žôóØS;fp4÷lìÏ:3 m3ë9ñ×ÐRKîÓz_ÍÓæS[×A{ÀÍ}7Á™Ž¶Ù÷Án]¾CQ¶€àÎËô3÷%Án7©a9|»Ûw¼û`±3DRÁ^>·U³£>ºþŽrb£š„Þ¥Ø5A ¨&8f¸8ù«š¾¡Hb·ïûþšà¦òmºØïçÝ×ûöâ<º&ìÂÞ„û3Ä– [P²ìâ]Þ?Á®háéøìW/V]Œ²!þ'ÂyÖÜ»bIÉlªØgüød€£=<”ô-‰Ö-ŽkÀî ¬±7¢ƒ3ïE å9©·c‰À˳•óRjy7ƒ=zâW‚°5ص]1†9%$¿AÊ®®`¿×l}avTÝrY¿ùͺ¼[‘`—Ï{¥mñì-®Õ÷ž¶€ÃSféþ„Äɽj}왟”»÷Èß™&}'çÂ;ˆù”[@Y­[Ž’ÚY;)r®¨+‘ÿŽZ¶ñR8ò&^k"¯€}MÝñQÁY)ãË%+Á¾ùI¸séãatÎ|Â5öð×¶\;÷ï÷O¯ázñý›‚ö„GÅW‡°;ázXë8ð/\‹ª\è†kÎKCïÃ?á:ÍÅ9T×°:¹›…Ùp=qMÇf§\ƒ>ÿ¶ˆ%ÏyÝÞÃ/.€ëkιFr}Ùñ¥ò\?ù˜¹GTµl»¬#‰“qXßîb-±7DG3 _J¬þ^kNêy¤»-{®¹~¿|û /{¾ÛFÈ“ ®•ÛDz,ŸÂõÐ/©ü,ÂÓšzNDÖzËWÇ?‘ 6çö^pm×x$c±®o‡¥å>Ûÿm»ë÷@¸¶í=–Ím׆ÎOÕ‘Äï’yPÞ—2¸ÞS‰°Úu ®SòÌ1¸fE «Ó¥ázüDLÔ2%r½4õÌ2¸YÅéÈÐÈœ4<šæÉ$õØ¿t=‘ ׇª~<3„ëçD¦ÞÂOpmõ`Æ(Pázòгžô÷>:Xá©çãN©ë-áúå£ùç=%¤¯Ú:®Ý;Éþ¯Æà:@+þV±„ÄâÂüÇ«Î$ ×çAý¿WÆ.¿²‹‚¶ŸÈ…S‡ ŒK+ö/ƒÖÏ+ç³L6B›]ó×è)´-lwuÜͳÄB‘МZU\ûÇZú£,j꡵Nnóh }ögB[m˜öÇo'´uÏØ»8m‚V¿†‹õ1Oh]¾}sŸC4{ïp.ý<Í/ŽK—‹ç@sÍQ9^9h™W]l+á†æ†·õûí} YÝé$~²ZPˆ\q„MŠBÄœázh-ëË&þ—_5¹ûˆ‘º+=“]>CËõÄ>%S!h¹Û8Û-§r+•ÛÐz*•–y€ Í<ŸÏéÜÐâþ0°K5Šà¼³œ¸ú4´¹ê·fAëå7JôЧÐzžp-Êb´Vuäzf|ö\ºh[:´˜CŸ|NoƒÖj—«Ïçü¾pÅí2Ù§òªr%WÁ­¡Ñ“ºG •æyiWH5´k.(u9<HY•¿ìïÓ3¢ŠôAkËdýDœéW jß<7heìHÓ~ØLúœQ”<ÍÝNUºÛb 5•1RàV¶êÿÿ;¶lÞåU™“`ëÞð:¹cØÒ-•âá`kv”HT‚­qtûdð XµVVSÓ`ÿgò+ÁŸàSÏÝÏèß÷iKoëÈ—ÛÁ°Saٿ·ŒßÛjéßÏÏjÁ¶z´%ê:Ø´î7óeƒ­¯#¤ómØoÛžMN¡v±1’×a"oq#Á{ /æ&’i²o¨ºØÖ÷˘š¯ñíMo¿ð/ohƒí­¿õâ~Q°Y*Nó‰^6 |=¹i‚àsb NŽ4؆|×|³øIœÞ‡•¯Àv\=©uà›éŠÝCªy`/áéÿ­¶ŠÜ¿¿½“é6å¿_v{ûnÎfËö­(-Ý#Þ ¶E@ßó §³ºžõj°·•m$üŒy6—+ê™[²—5©ƒ²ãÎÓàË`SÏŒûícè¾9˜Ô=ßòã|°=¥\FÖ]'îì'~¶Ëz~ô&sÙÑöÆŠà©e¹a‘9™Ór¾24°½Ž¿ë" —Õ_‰Ð%ºvýÛÜ€Ãp ù22GÛWÿ¤ÅpÙÞ¼¶ñ2/\þû´\Nã\v$>Vm\þÄ%Ÿ/.‹OÔ©¦º˜ÿéôA_¸Ô%Ï,?¸.oOY}³{M¬ ÇÓõ8\¾ 1/dçÃé2÷wÀeã}±/Áù³×‡MU$¤Ñ0¿³\fHjÀ…rø§™_ \Ä{†íïMÁù•{Gȧ­p±>gº° .Mg=Ù—Á¥Eó]†¿5\"b5ÿ Â%ùòmÙ6 ¸ûz§×¢se7òé0á²§Ê?d›\Tâ_~¥ï.ß…KôK‹ÿM$o¯1:ªá¢ølë´Ð\,oÎ[ºCèUsJCpÙ'Y-(Oú݄޲Gd.‡˜ê¡p¹¸ômÔÏŸp · ¯-R‡‹öceƒsƒpé(̩ܿ¿ i‘Q'\†^)sÿ°‡Ë+º‰¦)¸,¸ç~ŽÌyÄ¿|vñ2¸•Ÿíi?ç–=¹í¡dM¯¾¯ý_Ox× ú¿Ç¹µ/„>ý’žý§œ›‚þxÆrýâ¦Í}ê)è'‡ìcêÑ¡g”ÐuÂ.z·íâëE¡·¯‚Ø臉ükÿý²ËbÝN-Ð/ØÔ4øúG±'áO3»(6|z楜дmгZ_t•¯K>O òÞ“^uÄÑ%£ÕXÒºÁp‘å.èY+¤ÛÚBïl¹¦}+–üp´Q:#½óö¿Ôš¸¡¿ŒëÄèå4è3¯¦ý¼ ½Rv›çüÐKUÜè½kU«9ÜÎÐ_¥ÕUœ¡…%¾­Í&÷÷xû¤îý½hÚ©³gG ÷¬¨ô£Ø6èÛ?žÈôn‚þ.‘Öý»+ ¯Ö¶wî0ô‚44¼H¼ƒ7 ÷quA/ïJ²Ú†jè©lT{©õz;ûýT‡: W–ÑvãB,ô×wÐu“¡_Ë·ïdj=ô·g\)yV ýÓ-‡çœ¡7§À¥­½Jó(ùÎfèëHYø;f>· ¥º CîKG úÚ.»Éƒµÿÿ¿Ï’­Ø Y·¬£^¾¦Ó`EÙro Š뀳BF:¹³çº¬ìW°|»”ÃsÀº?;¿öß÷_?z:âf XÕSÌŸ·ÀJ[!'aó¬K‹¯ 'RÁJ}ñ˜bžVº¯Š1ã>X¹«Nš¾R!yß”|Ý@âŸ=\–#Aü³â^IÈÛºsûæ Äß:sÆõ0Xפš7g\ëä.Æ\é°îºJtè‚unîªëYr¿=Éþ3X·;n¾rƒÔÿ9àòFr})¶å£ês°ØÛìš]ÁÊ=,Ú™Ö™ŠˆÆs°Ž™¤ôŒý+žûLÕ°2Ÿ½J}Iî¿;«t›ôw:{ÊN‰Ô¹]F»í‰÷™»î/©3Ý_Aû˜"ñûâ©ÇUMÖ¹•GªÈ|¸xô»‘õUô;”m`]œ·?ª„ØKOöîéµ+?ÝòÝ^2¯¸îMä\aånMJ¯%õû¶Îv ¬ aûädI];+ì€U”ßš»¬›RÏe ª~ü{ϼ\Vh\i€ sç½GÔ§pq™ì÷ÌÍ€‹MŸ=\B¬ìþ忼óc¬ýöÃy@ð‚\n\ ¬|6ÂEãÜ‚U"Šp9¥khvà_öÓ€ƒô‚?Yž~ÿJ{Å ‹ÂE`T]ãO)œŸˆ¾~öëœk9füv8<œ/Tí/O¿—Á-g[úaXôï toðìjVÁÔ¼ˆ•Ýö †ç–pÝóiƒa͋ϫ>¤ÂðÂî 7 ca¸Û¹îˆE: œùËyíU`¶¥Xi¨[Öålð\ NbµU9«ešå3` kb(cùA㫲 ;aP¾1v+å ª÷=‹'þG6½‘ÿ ƒ[÷‹S‚AÏÕMŸ`0¿ì‚ÒÝ%0°Ëñ9ê탑˚YbO¯ôm}æƒL…¸"‡Ÿ08$÷_Á{ìÏ¡—&J€nùÅgSô;37°86e5$oÁ€µÞzUˆ ôÓ®Oq%P¡ÿûFÁ/s^8>þž›¢%¥cÊ0ÈÏ—åjWƒacÿãÉýw_‡Ÿþ=ýÙµõ—»¡_®ôõîèoi8í}¶Kå¥Ê%ä|¸\ Ek‡{Aß[Š /*÷UeVÁ l8rµ}8 –´V¼ó‚ˉ,®ÑT,«ÈÌüHò¥KSÒ`Ý•Àâ…¡‚—÷ín[¤ò…3žÂà$+B³ˆ<ç<ÿxD*XJÒè÷æýÝøÑ€àŒøm«YX²ÌÎ¥ô§`I9¿ù8WCüìW\~—–È«+KŸ¨‚µàb×¾ºu`)—ý9 æôêÙ•`ñš”$²Àâê)·{ªÖü³Ÿæí%V5wTü˜}[÷ó~ó mÃPÎA0ž²Nƒ9!’YDóÇqûì¥Éd?›þñM˜¿[¼;«6’z‡£>ö€ùDZ™«©žÔù*íœ6ÁÑœ7KKõÁœ[“/*HpQüúóƒÖÄï¢]Z`ñi¼zBÖøÍ[=Á™SçæF0?±"vðfƒ%qv׉ݤŸyæƒQ5ÏÅldß}Lê[?úºYödŠÍsÌh4®9,9:%õd.¥iš—cÉüœO+¾:–ÐÓÌUr¤ßîË= æ}•þßœ˜S§ö}ýô9ï\>_þ°¸·YøS@¿e¤p©b7èé§÷ ?ÿ`{Õo#è9Ö‘Ôy¡ ç÷¾¨OwýÚ¯·6 sA¿t?¹~~è×3¿Ë?“½IØÃåø&Ð[mB|¢ÁYéÛ²+Fàl˜'f´Î ”«<ÚgêÑz÷á gR{&IžíÇ;†PAÛÐ_aýôàyÑ}^# ï[êXxý:èÑ1î‹ý@O<¼èÏ@1YxŸ]t ôˆçû"˜_IþôÍîÃ9œ®!RÙKìéµ÷+àÌ}å©ã8«ÜpYtÞ΂”¶]8ϳpÿzQ|®ÐÐo½ß+H}õYñ‡¿ƒ>{­Óþ˜Ô“xàÁ¢«¤oÉ+ž Ÿ*¥í=iÓŒá.â§ŒùÉ) O_ðXHâuÔ½ ‡¬³‚crèèqü9öC u.Ê…3eÿâõp>ý6-ìR,œ8>)¸û ÎôéùQ*Ý  µçNµ…óÎE+oë’¼*“ƒo¶€jÏÃ:žç“^åmœm0éÿ÷gŸÿ›˜Ïÿr#Ln6t¬Vu€IC†ŽPÃ{˜4ßSúÔÚ “ª3¿†¤Áäö¼ ÁÎ201:~6ðQL–r• GÔÃÄvJÝÁ#&{оe-"~íýËF¸a²Âýä~âÇT»uT&[uÎkñ[•º½÷>L6®QWþ /¯ôåŒ`r<«(íì ˜ˆ&r;>¢ÂdµN¯‰‹ÔÞèèæ“Ø®[ëÖ¯ÉÁµm×çÃÄO¨`…¹±žf&¥10¡xG+È€ñ'‡RºŽ©ïÕPkg LL.ïÚZãì¨+ÿ¹ÈÃdMuH£.‰ËñP›wŸøIúɺÀä\Óç( ÒgבÆ'ºY0‰<ÿöó®­0Y¼ÌžyIÆeWèäÃD\dÇåÝ0®YaÕIk†‰à©ßþÝ ab¼^Ùi?&=:—¤§ÅaâÒøÃ0V&»®Ÿ/ž“ÐÂãË/:¥èIå-0©ñ]MúÒwW:vÌûØ s)R_Ü„þ}®(˜Ä¿ÝŸEðcÅâwF ™`z/x6(šæJŸíû‰ÕO.su…¯þ{r-°neÒ>0½d6¿ÐsUíxŒÕ0}ƒîì¹VææI®µT‚_«$8SäºÔ¿Çè6¹>”šYDâ¨vÕý!¸´âªŒèÄS0õÏ´œÌvÓ¨àXºª˜¶¡;No]Mâûýïs*˜ö›çYW ¦Õ'½‹&$ÿZWßP3²_´xäñ(˜¬ˆÞc—‚¹nQŸd‰˜kU5öÞ‘Ó=ù!m»ö¿úû< îƒé±»èèî`²µ ö“±è|æç~r½$s# ˜´´[#‰ç$û¦±÷ŲÁ¤Ío(2Ó¢·yÁŽ0be9•; Èý «¤×)ÉÜuèÑn0ýy?욈#þvǽ¯ø>ד…Át–€C™ßZ©ÓoΓy<˜:Jê“u5î!xëõfs”Ìç/“³”̇_©/Nòrï g¾ÀC.?H¼º½iÊÏž¾cK¹×‚?ßM.2=‹zBå‰è;[Ì£Hœ#å¢ dI=‘1^©“ÄïÃC™$iÐÏ<²,’Ä=1»“¾œðN7‘ׇç~yÓáùåèí>®§¯&y ?7¨‚ôã‘%¿iœõd²¦Õ‚~7RHèóbÐoˆ¬©çú úù§ @¯ß »®äå×µÜô ô7ó7îU$ϳcËÂ@?}Þ;|ËJÐk›>è=¬½ôë†#ëdÉù ZøCTôwÝb§ÔcA¿Ýu%wÛ.ÒOHT‹ÑÐo(«fÀY\Ј2úÏ%Æuä<ÈøårÔôý3ú)²¢p–—T9þøïòˆ(Ð'8ks¡ðPéëjÞxÌâLë=ò.†Â47!ð—ÌTßPoßy3ڷ¡dýû&ýe‡6Àô«oeL^;Lò¬ëaÁlC{ÔÎ%Ïa¶~Eéë ÿ`fÑŸ!83µ¥ÇûÁLçIµp Lgþ„ZWÔÁl[EË >6ÌBBd|^ÃLir_è^˜ÖUq}y Ó¦E!ªýC0m®WR‘†il¾cL)L_ôs/Ë#v”¹´05¨«¨Û ³%ˆéN3-Ñ…N:—`zqH64šÔáxႎƒÌXOÞ®-¢ÃL¯òŠ é÷G—÷®¨B˜ú4ß•¾¤Lü..ØÊSÛÛ)ËÇŸÀ4[r–èAÓ7biœɤŸ¨²ÇÿÕ÷\º¦ïgc¢’:¿äP]ßÃ4µFLÕ¨–Ìê:8kÓvO±Ï k`–`b%|f;'Ì,ÿϧo¿ýpŒoÿ{A,£¾F¡ïÀøý„úNë ŸFi/Ô&ÁVmþÎ{€Ü‘X·_ŒÏžG¿°V‚ñóÀéŒÂQ0F* ­€É3qözë ¹NZúN>”Ä=ñ]!`/Ùוÿëjb½ÚgFûñüï{Àø¸;$[¾ŠXžy/1rß´G-ö4c´‘ŽñÝ`|)’ ¸“ Æ ÕÛ'ãm¾³_œÁø¡ã¦|¤.ÆŽ±[_ÀΞY:» Ìù&î¸r1tàfÙÏXOö*'DŒÿEºŸ…Á˜;lâ=’Dêûdàñs‰ÏÇXAî¿ÿ½6Õ.ŒÉs™K¾²À˜–‹ê'çcjýpæ8Ýjn§n2ÁèU|¾ö±8ɇ"ýˆÔýÝ(YÎ…Ô1Íê82LâÍé zÊ’u•w ŸÈþŸ6º%½KÀäu©”;¹Lnúò‹éçEöÜæãïàÁ4×92jcJ*Á9îÂøëà 0Zb¤•‚<éû"O‘ú/ –ïÍûß{> AÛ¬óçÛ5kÐV,uY`šË“éÙת ±dÔ~¾Í±yK¬œ(hôÁÄõ÷hRo<+¯Íi~á­°>âŸëÏËZðžöôô bûªPA Rµ«¬ #×AÏý€¶ªÖzÝÎ8ªl×Óø²Ì´¿ASþ&¢¿yœýrZ0šÊÛÕ®¾pš‰æy´ç hò©Ò‹«ASN¯×%uÍ¿:ìß7ZÞæÖè@'в…®Ú šs-æòJÐü¶…Öh{“º£’ü „A;ÕwÍ«ˆø/îî¼ý 4kîûóšÔàôåmê1k7Ð(z³Z¯à4ksœ%2šØ”åEåиêNDMûËɾ4ÐlBMß¹ƒ¦[ý7Æ{ h¢»ô I^úxºÄÅ9Ð4#OË.ç€6ïT#gM™ï‚hÉ­… ížü¾‹Ô¿njØjJ ´K½ûw%õ¬:x&Ÿ´¸×Œ«ß’9Xoå;HlG†ó¿ÏW8þÚÿ!”ÿ½'ñ(ƒ§ç¼×´€r§V^¼y3(Å+ÏÍë¥Á–ɯ’ÊÝL‡[õ 4?ªˆ‚EÁå³Á¶ž°xo•ùæÀrXÔ–%ù6‚·à‡õÃfP.ºÇf­·ÅòJëÛ"1P8B²QCq VEm9OâÝÚôzðŒ5(·•7®^ÊN]Û‚} ¸Ù-ZÓž ÊÉ‚Ž^%’O=àÃP®yÊÅi€r:½ôy÷)P¬¶$žZ ‹ï/UƒÖƒ"vÜÒ2Û3mêŠÎ•°¸yÚIذ³æöOéù ð p܈¿WÜßE!¿@Ù·Û¬âY_mó÷×öpX/µjÅt®½•gŒä knºCæ±YàIìvPEל³8‹¸ƒÏ/…Å“-K’óÙÂ[áSñIÀ¢eGQÖžs ˆHkµç7²3;·~=©Çèuj+éÃ÷tÔyPlì¹’!‹»µN~7Ï‚’31éGâεmáÏåþ}{[Pξîxð¡Ï·<ª‹ÀHÜvö„×{b˦üw•qìúÈ›H‚ÇõNm§ƒqR´ôkG]Ž8HßãH óîí»`DO…llcOF¼éa‚—g•Ÿ| FŠq°¾î7²oXóx/ñ;*0¶óI/é¹§œÃÀ<ö>—™ÆN¿Å®ÒÑ`Dü >ŸGðíˆ`¯ûOŸ¹3EöiìÙðDŒÈ·\”÷±ÑuµÕ§Y0â:ûÎy}c»“VóàO0rim"xvk߸”Är0bžä¨µ#õI>M=éO¬àªŽ~f™cßÉÇúÊ¿cÃŒ2\7‘8%Ï£#}À8¨ñQ¤OŒm'¸÷ ê‚qêì½ ?\ˆÿžµaÊW•ª—eNü)n_Z Æ'¡Ï,‰½³ÌYBƒÌÁfñ©÷`ŠdÕ9“y& võؼéC'F#À¸4±áp>·* S²È¼,œ…e‘yè—Y| ûÎ…òŒj#@Ű÷ë’Ç >þø 0ò_\ Þ§~:ÕIpúìdcv N­÷ÜþK\§ZM7ž›?àTÉî<@t³Ó½ hŸN85®µ½® §mC¼-z¿à”W‘]%§KKÒEztáôunâÚ„;œ¦6oµ^§¾2]'ƒ&Òõ]“ĉHÎŒ †SÔõèàGpŠN42_§¬Z œÖn–4™šƒÓ#‰¡u:pÚ²ïSüâY8eŸS–£~$ûÆþ3ôƒÓê³S‰¿ .Š ‹\z@ò꨷×÷©hú lNõϾOì^§B–¨`º*œ&˜&5¦pJþÕñ}€ NuµüËKÒàäw‡5d³“ì[ÞëœBê©Z¾|N'¦5î>üN+%,R|§†|fåI¿ 䛼Iœ¼+jùpÚ»8®7¤N×Ë+‚KËà”5ÿm¬_?œö9‡5îÚ §ÒêÜê_àô1Ëäæn÷EÐþå\pzØ/ÚajKüŸRôÉÏÏéÈÕ·pÊ ]xœôµ×ãÁ‘Àõ -ô¯I?é jÙ¿?Ð]ꃕWÿò{€ZXuËæB¨UîA!&·A}àP”@ü,Þþû¨ÏÏMÌ7=ê¼<_ÁŒ1Pµ†ú?:*1Í;æ#jÞÓ·ä# Æ léöVÕ×á”íp7¨+›x$6ƒº˜S²£1Ô[a+^­t#–[veÔ³•:Z{9 ®âzøÞ–ÄÉÝË¥²VTj„zîó… 05‰º|Ô×ûþ(HƒªR(¦r¢–·”,$_ð*¦ò£Y2 T_óî¶¥°|v3WTÞ/‹ïyÒAÕü¸ÀM·–1mÒV»,@?tSÔÝ t\Ý`Ùlú{mÑ.PõÛë»EA½Úhåß÷ŸlíùMæâÙ³öo,KS ^–mƒå4mÇÝV-XfR\ZKH_Ü/1­O*Í´±Ž] j¦OòPœm™*ËH}àáeP×ôvëÁr还>ã fš¸¬•~}4'?Ôx~ç´Pßèl®újË}1{qCø•ãQËeµÄz«Ü$8õÖ¾{§å Â3¸ü’gˆí?±ÀòÚmÂw(ß_ŒüúôøçÚ˜B0ž„yk=ã§¹•èsFsçû¾/ÿx\¨èX5á;}êùjÖ‚Ñønp#OþvÍ„–²êÝ#ÁxGß#”Bð¢;²U_˜Ø¡© ªñ„ïˆ_¢î"ûýÕÃÂKÈõ§yà À(Ö½òn ÁÓÎë"ôÁ¨ÚÈRßBòÌzm½¼ê±‡/r­£ëJJ5Ōלq§ý¿¾È=`Lú±þ*ó‰ð×Ö MK€ñæb¼^ám"÷Ý&8ÿñbeé³äƆ{ßI¿i)µûÛˆÿËKM§”Àhzèü©PŒŽŸ‹L§ÈyÐ&1=Öõ’ÄÙ\ª“³•ð6£ÞÄ&‚·Ÿ‚ž>ä#ûiË5ù^Å–7W‘ü;»/nÿDæ,²GåáMÙžòÒ`<ü/~…Ô¸g‰¤÷çfži‘û]³Cêd>óW¹lh€ã¿ãéƒ5ƒTùCNÑõîHÍ'_8z~ñdLÛÃÑýõø ×&8:Äub:Î?.êH/&ûª?ÙWúÓ«4ƒõÊà¨Äüí|èw¨d´Žóÿ8ÕmQƒ£ã¾ú°;õD“(¹à¨\M[`'G¥{®Q~p4¹Ù|Ù‚ô-5¹ÖšG§ï«–PüI;¹6ÍK£G̃mŽd©éC)Ép4 -|wœÌ)õ¥ÇãŸpTqoˆ}DúÝs÷¬çzR§Y™P˜3l]ÿýÝç#Øúµ¥ûÓžÁÖ?1}MŸl×—înZÛë't×À6H¬ ]4¶»"ûƒVÁæ¢k§‹ìl*u+ Â&µ|flË)خܿ?=³¶Ê——?h¬„ÍŸÁw}]Oa3q¾byzlJS¨­2‰°uß³eè~?l—݉U<Þ[ÔÈüõ 6´6:*­‹œæ/­ØÔ^-m]VHâé×ß8Û Û¾Ã:yJ°¹¾./!ç=lÞÌ`Œøkù“fa›’ØäbQ lÜ-í"·‘úR]¼àlîZl¨†\€•^‡5lÕN媸|'q_›Ì¬â… {Šg¾­lmœÎ}³¶Ú _ŒaËeR:”^HêÊœú´ð.l\ÊN¶!6™«¾Ä”ÁÆòìɆ±~Øoé[”›B˯¥4Ø2)‡ÇÇþåÿêýãÎlú´vÉ?Û [þç_ôuÀæàòßnÕÂÖÄ×RÎ86í¿2{§È<”+¶¤ÍÅÁv¿SæãŸr°Ñù±}w5k ðžT'³´\j±#ûvÈU‚ñdlÞ &áyÍ´Ç™ÿÍã±ràöMŸÿ'º}f ÉOdøsíOT0ò&üçÌÑ:õj0^D§ÖÞJ!¸Tôç/Ñ‘…}Ër>÷XЦÆi5ñã‚Ù`ÝÑ™K%úò¸å‚QÙWâõŒ<÷™Gó³»ñæ¿ÇÝ7ÈuÐ&ß>0RÝlö½ºFù…·JEO®}ž™ÙÆ]MkïíH½ñgsmãªÂÃ83‚'g¶ûµªuƒq~i±6O ©ÃðtþÍ%`díŒ[5Cú¹™þÀs!Ñó×~¹\ñÑ#;¢cðá­·Ó"lõ´ë¬‚I¼µ¯õ;ŽÃ¶¹òU߯:ØZ­É$xa3ó'Œàçac§¿£†°eÓ#dMõ‰¿ì¹~ ØÑ“Ú¸O‘º ÝNð Ã6B󇋨,l~¯~ö=Î635}ÖK¬ac.†‚3'ž¼I‚M·òhb¦lv9o¾t@¶{d6lSƒm¡W¡Í6]BgApç†çW÷’zØnÍVäÜÏ*Ü.‚kë¯N‚ ã™ùŽ‚“m¦§Oq`ãa÷ÇÑÉ6 -¼÷gýà ÀöQCŠ—4éŸg’òøLl"¢úŠ`{HÖ\P\6ýG¾Þж…ô¯¦Eºe°¥yd{'?&?ÅÁcîµ°sÙ¾¸§î<ÁkñËã-GÀðºXd JxŸÏÇrðü[z:c&ç OÅ|o­pl¶y±+‡èÇÀ¥‹Œï€sGüß“D—.ÿ¥¯Ú §ðƒƒf[à„{ß·_{ §ósËF;Cád]t¨ÇôœbmÝwsIÃIHØOaœèØe‹ì<%|ðÞcí_‘}%Ÿ®ž$õ„žÊŒ»'‚ö¹m$OgË4Wœ,Ì“D=‰NV9üìQÇa8­.Iª|Hú—ÿ”ÄÈ}Óâó§ZÁɽ4k²eœŠUý#ýÆGv^l.‡SØ£M?ùÈ}1§–z›Q2ÿþ›jó‰~ÖŠ]–úº NfÒÅ+<ºûÇ–ï$Ïß¿ßçn€MŠ’4µÙ6çúeÉs¼ûég~Âs’*ÖÐwÁ桜ìoiIØÜÛqêõ9°î]ydž? 6šBfN÷aõʪÄn6›ìB·½¹›Àê9é?°q;ñË€™EøÍæýÃüLØøE”ußï!|éÝ<±‡Z°IN÷ºìHðÂ>Uw#E6&ö Œ!Jö?8jnEpFUeåú€pÂ+Ó\Ò†VÁ¦(Õæ©#YOÜŸ³ø‚;l¸S·ò¾ ¸eÇÊýµ†ð0™”®R7¬ŸìÑ|ä:ÙÔ®%u6j jýU`}-~itM#lV;Å5E>ö“ß½¢Ö¯O, ÔŽ!ó°©HÔ ¸ôúeõÞÍ%?¿<`¬!õ8pIñ9Áúb>gÉÛµ°þñy5oX&¬Oº$»¢ëï³åü“¤N»Ù¨£š°yG¾Ê(… ÿ‘Z™òØPÜÎvlÍÇÏõÔ¯€õ°¨å[*Á㮓i‡.n†ÆMÊâa’÷Qý±4Ò_{æJ5'Ø(ýZÊuLñ3;Ë7Ç€©*ÇkÍ&·Ðî7U•Ä vsÇM€ÉûÔØfˆèÛYê¾v­ód½,õúK‚s÷-á ¹DôçȘE=ѽ/÷G.K"Ï÷ôÚ_CŽ`ŒÖÐ=‡7]·ˆG¿u ŒŸžk‰ßñcŽw?ûA•==Æ{?-UöUâçåWÐEtê+óMïȵÓ&™«zäúËå÷#„7>£ú®ßMü{éíµk'_»ƒ£Ó`J ˜eZF9_Ìm¤1šèRuÇWôM„ŸF^{ÝEôå+y‡<0~ØšjT¹Q˾Ü~žè϶çz :ûžÜjöõ&úôÚS.Þ„ß}ÜîàGx`Ç.ø ÿôldU÷éÓ„ï®Z³VY‹ðâSìg~žêÒ»P#Žì¯Ø=EΑwåWƒ ޽ߖ™Nttÿjuñ ÂóFTf¯À”..ÜAðî'žº€ðËÇ'´‡'?]/|ìp#é·fÁ¡Ô¯ÿ~’¶úVõY2Ç+®qïÄA;üïãF± ?óìi|0h©O+ŒÃãA‹¾Øà.? Ú>iÐCø@ÛÁñd¹‚vr߆±5¡ üWÒ¯œÚ¶€=?=«@ÛØi Z.=Ÿâ^ZÎÝï§/î-±æûS£Ý ¥Ï6¶nm¿RÙ½ç7AcH%o: sl6qÉÐ2¿OoPÑMJ6jXnhWÜ„¶yƒ¦öw§Ý^мŸ°n½u-àÞ…YrÓ¨}ì›G@[Ú:ìlLâ˜hhÿiïÙƒ %ÐÝ~–ìÛèÒLüoê½ÙIâü—Õx–&ÚÙÒ¹‘à›ÿ~x[´Pµ±‡æ ÐLo¾¡?ÍRw¥ÕòЄZ¾Üx 4£Eö?L!ýÝTÚjÚ÷ܨ5 yxGÓåA y |×Å´`Çuõ^€¦{ȯA±˜¬g …9žaqݧ¹>Þs¤0“Ìaç\ÎúIÐlÅ”gj"@»õ“j¥6Fú¹šÂ0üDê>Ê?ÅÒ-*ÿhŽM*¨ ‚&ZßözåäïåñI ž‰µ/«ÔVa۲Û@íz»¦vÁWPçÜï#uP n¶ðí,¾Ð#[/ƒ*þðÜðò3 Ê<Ëm”u»wÓ5û Æ°·Ô~ªÕOP,î7‰wæNXq=¨Þš¡IËî‘xaÎë“äA½³X!qhTÿ. Os@õµ±Öd°@]÷°„¯1Ô¥ÏcÓ²·€úÒO88î$¨ç— ¤ÑEA ÞóeûP³ÿÚ°Ô³E·y.ÂrÎ ÎÀÛ–ekŠ‚TÈ>ùãÜÿÙƒjF¹³÷ ,Kš_꺿5¢Óñ%m ¨ÉŸÒ—Ä_:%²ò3©ç…þgI?P‹Z¼Ó¹ ^œª_Q~Ôõ·%Ÿ ðÂòƈ›ã*MXÎ~õ¾!“ Ë«F™î°|‘—0¥TIêß6…Ÿ >tM,ÎÕÆÿóÖ£  º¦6½ u—ÊÒ§ŸÉ¼´R|€:ñ–rvórPÕ?ì.ÿ±\oÿÉ £‚Z3¤—#Nu¬BÝeþ,Á£ WúØ“¯6^~û–èÂ}ü[‰`|ÿöŒ‡›ðÑKzÆ·EÁ®¯÷¾GôÛÏ‘ •ýßÈsnb¤4mFÛLdo€Á‰Ë·{¦>NDmyVëKpË.Å,ù ÙŸrÖýã20&_jmXLòÕIÍžúJøÍ;fòµ¬=¾ú“sñëÉn67Éû¾âuûk0Æ-¤ˆî{¿2Ó·1–àOyåÚ›_¾.”k #xRaðçÑÔ*0…—þw©‹IìØ'éSDO·µ^v­q!z{ý[YrÝbÒ¹6’àÞŸGæœçDoNv ÞJêLŸ‘±"øû&ɪ¸»ŽÄ¿eø­ûì?œ´~q”ðÛû/jjDÏ¿Üì<Æ[…îd>íWÙwFok»&~ëÁÃWª´è!’§QÔÑŽôÿVRµá á·«ÝxHðîGÂÊ9‚ÿã[åO|,!çÆäç)!0>½õ%|¸K­r|Žô7Î M ú½ûÑÎ¥ËÜÉþ¹A©¾zrî܉ü~Jô9r@mýÁࣄ§ ßÓmÜ9NýÚ)fyãè™Ç?ߣô»p±Ç—@Ћ“)2»‚A÷YY æz|žâ­ù+@ÏúîaÕ9 ú+–åÞ Aïú¹ªQ6ô ×Më%ÊÈºßÆ÷ƒ~´d[ÀQÐO•:?Øúé3‹¸ÄÞ­?ä媺ç}¦›ñ,ñ¯Ù­"azàÅ’y+]@H^¹;ô#—”7 qno2(*všÔ»üÄŠrbo6-;üô“CSzìÈæ2º8©O4ß/A ô´êôõ鉠S»Ë<½d™ïüfCÐÂBD¢D@/|Ý}ÿÊrrý­È[•Äßîþh1É×Q|¦^ô} 4nÒoTÿ%#^8/xè«”h ÊÀ¿/’l¥ãö¡ ;Pî¯2M-¥Mò—è(_—-½J¥=æct(w­;8U­ „VŠÕî%zR¥ø= ”¢Ë©•S| Ä\jÿfÜÊyqƒ\ äîÙ¡ÔI®Ÿ<]Õâ£3;iÊ[ÓñŠT'Pž=ÌX°½”S×_®M'qÎìb$Zhr¾Öï§¼ (Åí ï3@ùuäø£“ |KÞ½·U”âñß}'ùŠªç“ë½¾¹UOAÙÑûqîy4(·Ò$\ÃAÙruñk¹¯ lÞ>·ñ(z™¶½¤Îœ¨õ!?A)»†«÷«Aq)9†#a |Ø”Ø×¾ ”÷áõ/nŒ¾¹sGÆu@IëúðÆ×µ™+Îe]å¶Z¶("sIÂŽ òꉨ“üÁ#»–lå/íÏÕâ)P" %.’õ=Í5 õqPŽgîÖxèOêYøa°\ðsÅÆP‚þXóX>‡%ï§oÑI ;±}å $†Í>|zÌÚïu›fÓ”¬ÇöwÄ*Ÿ*÷/³Òm³ûWO0+x«"ZÀ|ôìm¶´˜ÕÆ;ïÜóV•nP˜:MÆÕéÄ/ôJ¼Ï˜OZ·¤½"û#,½æÿ§Ógÿ*ƒYãÄÙæ¥äB†{˜7Ò@â\<¥ý/O•–rÝŽ0‹î¬ò!×qï ÒrÁ|4¾PÌ«·vÇœ+¿\Õy0̳\{óÍëïÙ)¤Þöéû%z`Þž6Üt=Ìœ{»Ïκop=¨ÛIê|fþœçû0/;.Fê¨yš–vî3˜×ßUŸ‹ºfÉÒ¿·I]¹ïJÏ$þ!ý¸ÔÙîì³xÊqED0©³J †æãÿõ=SázÄ¿m`$Bxðµñø„S¿Á,4é™"õT[œ\µ£”ôÿ3WÜÌú7æZv`¶P¸è¹ÌR®0Êr0óÿ¼è±"~ç¶5î8LêqußHú4²J=é$éwïšw§—ûïß‹>^ƒ~ ··D$ôD¯6®ƒù–/nc3ázÛV¾b< íù1šzôðȰU¼Õ5tXßMA·9ÃãG$è–ÃÕŠMS3yVç“çŸ'±iyÞ£¶MÖZÆ|UmänÝåÌAç7«ˆkÝŽåÎ*οí ú2©¼ò¼ËN/ÿAºïˆèâklÐe¦å=4jA7¼`™Dp VE[óH]&Q¾Qñ ß|w@Мàttc.]ô¬‘ýWÌ~„+5vƒ¾õå¡@§(‚?ìiW*ÁÑÏìô‡d]½1{ŠàϙۿR@_ÙØ´¡9tÑÜ8Ë?I Ó’×–$x)ýû^lÏ:ЩêMû:ȼvI/ªÞ :ÓBïæ£}ÿêyà'h úΔݦo@÷úúxì/Á}»…5‰}¤ŸƒáS§žƒž#¦'Nðþþúk’ÿ`sQ=èKuf‚ž»,Ò[ t#-íï—[ÈœÜçg||IðÜ´×´¥ æ•ÿþüé6̯‡9þ>/óõ~ÿ¤ëާºý߉P6Q ÙÙŽãØëMçç+ΰ ÊH’QiÈJH²B*$$Id„dW!¤Œ Ùeüîç÷íŸ÷ë^ï幯Ïu=œÏ™ëƒ]þowù‚¼i²%<Ê¡•Ww检9oò{Ú-©vpø+Å! ¾Q;QÃLE~xgYÄMça®8žÅ×O†k§×¤7ÿù§"R*x'nbdgN\é«ëâ‹€»¢.zKp¡ü~äÉ$Ài˜rоoŽ?•›n 8¥w/úÞ€ú·¤ó÷¬Å{œ•›ÿpƺñ÷fTûyQùi=_<û p·:Ê¿ñ\¼|@ÉMÀö¦*T|Üë<1?«€óq[ó`OÜãAÆmëÇ€»ïKKäœïlÝ_}a°ýï÷f`ƒÅîÑÿ~lÊú¹ƒÍþâ<¿Ëh]”gA̤2ŒÃžÕØþl_\—WŠ¥b:b§ÀF›l¬fç 6’/Îð©½BöÓ(;³؈«UYL‚ ÅÔBÒlÄÆ®]{6{ÍŸãö‹ Ë¿ëË4ØH$ˤª­lêVÅ“zꥢ‚ÎÕŸ¼\6»móL—®Íœ“£h,.Yþ1†å­{bLu?²lŸ–è`Ãï4Ù`° åÇËÚulø&z«#ÿ»¢ÒõóÀ†û§ÔU2ØÈë\k‰Ð@ë+×=£|÷›ÙüTK9áÃbBPÝÕ=ŧ/—‰§…Øðj‘¿J(£|MT6‰GP>Å3|wÁF$öf™ëØì¤\;hSæ;Îv£üÅÛ‚RíP]ò³§>ä :V kÏò#Ûö:û‡ ò»aøõ†4ØìHº‘ùbùioõEçy Ë|ߣ|ß^ÝqRõ÷˜q„þ">þ÷yBQ ¸8_¼- „‰Èü¦@èf òaB«”‘ÐA ´³½R7`B×)¶³x œoÞ»´vÁiUå‡,€pÚquÞ– aY Û쀰æÛxU}?Ï++mEqG¦ç!FÎfúWÎèáTÂ图 xDuOà€pÕ]Ƚíw‘•ÏñBüìÇš½@ð„•üË@8'ð®ý°<Bâ M€àš8¸ž"Äûî¿kòâ¾2Ã’‡@¨b:ÏZÏ „úÁ¦"k T³Xk¦âAÉ´•1@(ŽÅ8„'œZ/¾Aïá§’äև’L èNîpÖÂÍrÜ5^ 8⳯ ¡¸þ}®¯váÝð ] @xØá›-‚ßЧؾ. |ø8ÜQ|ùÝ£ýòõG@mt í›Qù|Â÷5…÷ÚÌÕ€È%Ååí„oôß¹E-@z?Wõå?VøÁý;¼÷¶d !úÔ»Xî n{-˜ž7Ø­ÿávô®îýtÀv¬²_p]u.‚±‘ß%PŽØdêê|qVË+v€m‹¯~; Ø2ÇÉ ók€ýàà¦5û°uV7”C|["Ÿyù­ ñ¹¾(l’mIè~À~9ãÊ´åØ)Çԅί€}fŽYÏlg…½T`ÝÏý;Ò¼ Ø—áÁi'Öowˆr¤ `›NÈa^v(C\´Cå·#첟`G¨ä›¦€M÷Muü Ø´]Ïü<lœÄZéöuÀz=ÇßsEñ‚ˆ±ag{s<“ß°>'/¾ìáÎEó­]è¥Òh}Ééä$`¿}šå±ìkUlû¶‡€}Sè§rY °þÈ2FõÑS¼=í‘Ïâ ÊCï«|âA·<`/ù~žÏÍl’€Œª«²kE%ã:?!–ÖïØo&R€Mý•øG'åÕ=Pâú õßÃ%ì©:'9ïíØw¼°¨Î»æ´˜«"²O"ù%Ø|þß{ lF·iºž¿6#?û²L>}~<Þ#`3Àf[qÏlúÛm=‘A¶ü·iÕi°ùéÏŸc6ó¼K—6€Ê,}°ÅZ}Äv&l:V·â¬‚MïÔÔ¹³ßÁ¦{³ä ù Øü0|$žÝ 6__-"¿_/ ð/½FþJη"œúñÀä¨ÂÛï2že•hüTâ€áä÷ò#ÕH”硚냶h»%oo>ÊwH‡L5Dö «ú^„?÷Wè_~÷¥©\›.ÿãŸ'‹ÀæÃÈš3¡ÎP’ç+ÈOÎkWPžÃš¬¿†¯ÈõEFƒÍ¯Bý«1»Ðø×S‰óÁ¨þß9ϺP‡ªµ-—QýæÖq`óéxÂN=O´¾6ŘBqµÅ#EõQÜä¼s2…È¿æ€Õôøzªjº(•½]Ö´¾ÉT†Ó›6Ãéå¨u°ißSXÆ?Žü ˜Á¦ï*_¡êûw©;¿ò¢|O¿ÚëcøYáÌš€Àÿ9©Ö4ø¥’ô}G]?—¥KÑ~øß11 ïë?­µK§„ðËcÙlbH7Z·ÒDºñM/ìÇnüÛÏÉÖµb@ØfTÁ• –#xˆ•@`væù½_ BJ,÷bþþiÓŠrZ â_Œ áüí€/Ó¿WúqégÑîÆL¤K3º9´V%ÿ:òN˜Ò…êíï_«¯Ä“v"\ÅvÄJ`·íÙ\‚šÿV30OÛ‹ï#þ6—6¶NFÆ›!ÒðÝ‹/VªGŸãe†?Œt÷ „³J€ŸÑáüÒºˆt¼ý‡G?Ÿý8~O: ð[’œxž3HOû^aÿôõEýâ¸ØY ì\ëŸÌFñ™Åw‰lAå@à˜Â[N ëᣨޤ®uôœ!h+á.;Vã±sàª÷õ.å=â@PÔ÷ ËÌÿ=¡`J2Þ¥]ÏL*“Ù0ƒg¾ã¹3½í¡@`~‰5ža‹LØô/•³¨Ö·ÂÜj{¦Ÿ©sµ]÷‚¸$Sú|î6«`|ž[|˜™'V;ÎÞL­1'/Õ0…Æ¿ž6"ÿ¯§Spü'Sýí=Nj0÷E%nÞ˜yn ‡m+`b´{n¿éLßÕ­k·“Ó éxÀô(N:˜hâ® å«€yvèþx 3`^p7–‘Ly|Ø,û-À|Rž–÷Ì‹ègãQޙÅÊÊ€I»ÑȦ˜”¢•S“g›8óÓ05–}[îì€éO zq‚Ú­7gP&íüœ‰òo³½6Ö˜Üë¼=lü¨¾í{j°OY‰Û‡Éh¾Ôš¥-¨ÁrÁÁ£ÏPœÚoÄQ~GÔ]ZkzÆàÊ•U& &Ž?qX¨qÕ«ë~@õszùWÖ¨W›•~Û£x]b£Øa ^®´{LIC–IXãHòß[®Å@~²“¿¸ù z…ïxŸªäÎД](>¦[ª&@õU×> T7¹ÂLïÍÿ¾§·fZI¨ùŸÛ€zý"¿×B!GZëÎå |»ÞØÆÓ‰‡Îð¡õpçš Flùô Õç)¢¨¿!j¡Ä" žŽ©n_^êM9öl«JÔgCAÇ.'äÇ’ËérjlŸ®j‰>†×¾HvLá·^¯IK0fÏšÙ¥ƒ¬Ú¬—Q–S’öa1=k(µgµ/žñk¹³ „©ÇÅYJy@X 1º©å„¥ÝÝÂö4dS:þPÓ¸ý}øËïq@Üy芢@;^´vÿB71Âx‹ì¡W™\%@*3§õƒßg,íPÜ‘]ִѸqùЗK@è¼:ê$xá³eùcÄ?«ÇS M@Ü3&œôê$—oz^¦ù»ÜšEÄ“Š?ÿ7>Ô÷ ¯D±š–t ÌUH¼‚êcìú¨„÷‡?0£ñÁ}»­“P¾ýu«©µöÉ„ÄG¿c¾eÜ­EýIgÖP»‹øë¤5 Ÿ9¦»Ä/j£ý¿®D´sS€È»‘µŠøàÌWíèqd5c¹4€È8ì_(©Ç±ž‘h%‘׉7tAÉp¿þ‘XP~Èfv€ JŠžV/$R;í§Ø%(=ïÇLñÖƒRñîk7²òAéøIÏõ°ePœº^¨4‰â…MZ´s€6tÁÈ”<]·ýÒÅUùiI'PÚËÙ»åÉ%…â‹Y·A‰Ñ|šk”.(ÆoÜ!’mÖ«ÈrP*pbíɯ¥®@WÊ_ ôr;¡1åÛ½µ‡i@”Ò¤úrïò’tAï­: PŽ'pÄ ÿ÷7ýJì@ÉK;°™Ã”útol¤O€ÒALÛÛœ"PœµÝÒ<2ŠkOV¯wbUèâ›8<(µýÐoÆ Šy¼ZÇ@équþe(%9¹2í Å9Ù›ïF~üýßç5¨&Ž×öpÉï냤  ·ýæz´AòçD€¶Ÿ5š©¶h/}œðú@Sܧëõih 鿘"€¦mgð³†Ôõõ2Ñk@]ñ”>4æÏ¡‹ißV½x8Ý4½—ÂYf&UÛñ÷.ФµŸ©û#öc£eÈ2=úÀV4å;,#@ÃÄïV¬¼ ´}7×y€&*eí’üh2“¼þL8 ±`Òìj çtóv§ãe)+  ‰]­4¨k׸ƒwÁA”GìúŸ`<Ðö4q{Ù…â3jÊ-£ø«VŽ)æÈþìüsí-ÐÄ;“¤©É¨^ÍïR‡P½‚v‚üúçå6þÁÑ4uñá/µ«@ãÏØèØ¶€òØ6Ù#qh}èµÑü'¥(üÐDnÆ ¡¾ì{¯Ï™MÛ;ù^1Cd—¢úÝïm[ìó9Ô¿}?Ü@þv‰nxÊofeãb1Ð$›ÃsNÊm§¼w§%’]óOÖ ô¾~:ºêw5ß"}«w5ú(ºŒ¡_Ÿõ%¨#¸\âù@ªv!íS[{fóbÌï’2eb»d1ŸÃù±HOªz~Ûvé7;TGo¤ýª(ŸáŒ3[lßv x9p‚2ÒÛ~ñŸw#Ýwá¨îü­¤‹•>'„”ÐO^}‡øRü-+‚0Ìf¨^BùžÝ6î qSÿ3 øÝ™áŽâY–Kõ¦á˜Å½Ñ¡§H§Žqdž <Ŭ,9„*AÑùVÏm´~økßãÑ@¸x¥T½_ 6¼µn:·ÌÃF YßÁMJ§û—2ÊçSĨ@!lŸµ6ë1Áèïš ê‹¥E|‚¦„§ÖÎwÿ«ãÀY¤_õ}ê,ø:àpÓPÜÉÄÍ·O•ÑüíÊ‹ó¨í÷LEÿ^j*j©Ÿ›BpO×Pâu:÷[òN ~Lôò…;s¢È“”Œö‚|},Ž;â(qF¾Û‰Å3‰éz‡AAuÓIoàÈŸû¶hrÅ K’œð¹¿ZÜä‰ 7*À™`rß¾Uâÿ |j]Ÿsƒ\¿Z/xÚüR×÷ÛNƒü“]2¦F;A~GCæ}æ Pð¦Þû]Š ËN}ÿr.¿ªýÒAÁƤ47&ä~[_ÄO‚<û¯7oA^¸ÙÕrÁï>³è7€üÉcyŠAñhʳÇ|‚ ”©y‡Õ ÷¡|”§¦NÕ "ÈÜ£~y}”pxøRV òÇï=+gÅÆµx?Tï•2>÷àfÏÉã–|´²ÿ¾žÐh/Äw¥fØ£±¦«PhЪ®I+­Ö¨áÅÍ«@«‰JZŽCø³)“ȯ~hßíªV¾ \ëiPù–t¦ò?²Ðým|ГؾŸ‰* ZÓ«]yV§#øUÙ§'3`ÂV¼š\/ž{Èe €öê/ÿ}Ÿ$´oQí.áã3…š­ä|”±hWÜ÷úýZüjƒåÊë¥Îåò> }R&­è}BV'°ékÐZZ£¿Õ›m÷wÇD-К-ߨ±!¼û¡dÊòyÿƒo’ ´|!ówÇQœ§<Ô,Ñ  }Þ'‹gFõ%ô¤¦ÞOEýX¾½hÙƒGw üÞ|ûühßë¬>í£†Xë-ô<è?&µG¢ùÝ6ÉU´V¾W;ÜPüò„<6 tnÌ`Üdw+Zg=ëÒ†ð¸³R¡)¯ååìiqáo$#ôÔ))4Ÿßͳ´+B¾Ùi±@K²ê+ZaAy‹WXD>"ï5~ô„B|Èmºš+ˆ¢rŸËM3€¨dób& DÕ=&—·Ÿ"æk‹²`eŘ3‹¼€è1ŸÐtÙX»? l“@´Í YŒøÉÉãÕÅi@äÚm7sç5%ÆLO¢ðò 2ñ7˜²oSÊM ¶¹(N È[ÿs bFà sU3‹¹8iæqÜ·6â„2å)'ˆ{?€¯ÿdVH(Iñk'O½ŸU[ñ;I5ˆîŒýLg¢úh¥}à+ â·vª¤"q]óâcÜ},—-Q>Ñ™½öŸ€Ø:ô¡ðˆ?nõå—ÑFô¾ìã1 ް„p±†ñã­ÛNî¨/…K:ePÑÇÿ½ÑëBýX®ä¢üµ¼‹ûÔ€H(êCñÈê-âÒ@T6¯”¡±Î×à‹Ý Òÿ½àE|OÂÖªJç(%OM »¢~ ñ^¨S¥gΓ½@¤Žå¤€¸1çƒêû73&r%ˆ»öŒõ¾>Rë¿ãOŸ+©ÞOä=¶ 5P•ûÚì-HsTš]\|Rƒ×k9mC@jÆ`ª¦Íäg1¯ºk/‚lía!×ó’|~úDôà mÿÒB§Œ}LAwüŠÓµ ýØYÃø’ HK½v[ º RÓW‡RnßÙì¼ uåMOÿ.Òœ·ï<¬e™ª¦0V•aisx öõȰäS“ejA–]÷NÉwùœíÌ{Âd¾¹ _Àƒ´\רÆ1H–ìÜs%¤¹ÿæ¼Â-‚Ô,䉌ˀTÅ:ž3Ù ¤o„œ8¾€ö e5L€t¿Ã§z,HÏE×ÿ³riñŽ_;î€ÌÅbÕ&²p‹±÷ñÛ&âûgäœãR!]¬Ÿ%Qæ¥ÿ^˜é½W¸yÏÙ´Óq޿޳ 5ç™Yò¤É§ >ÁÁûKí–à Â³ÉlcifwÊ}Ãø‚ÎKOTriÊ7®9Œ´«\¾ Ò¢ÓÁšòù ½Âú̓ã=ȼcá }Ö Ò¯ý–úÒµ€îó¿÷-ÓÏ 1©@÷[Mú9&Úuÿv û—ñ]À~fþÄý˜ï@ÿ¶;X‹öY•ò>*º/QÈ‚, ôÒ÷“OJƒîAó² áºWÃå‰qI °wñ+º÷éO\Šõ@¤H9Õ#¿ ö:·ýü £òV@÷ ª¤ýÊ‹sÆ$ kÿs=‡ú>oÓq®^„·vAºû*Î…ÿÎQñèº~Æl<@¿ZD©ŒÉA¶ºá¤2Ѓˌ¢—˜—;r܀ʓ¥.¶ ô0sÚ)¿.¬Ïçç_€lÇÁ{i¹Vxhó»Ô;¿#?öŠ— Ã^íÏS¾×ç9€6•̳ø¨è Â=»{Ä€~¹Èüåa G¿nOiD~Ÿ1N´¢zƒÂšeóªî”êæyñ Ð#N f°“Q¬{Žýºô‹yý<÷˜Ä.›ëtÜï'SŸ6ÐúÞ°”) ý|ó²æ5ÐÖâ¨)NhÿÍíF£F@x"tSq;>_t>õñ §ÞRR41 |âm”›Eú³gÝ¥.Íp÷LožDzOÍ»7éWÊv~Ò€tâ_‰E¹~ LÚ÷|E:·Í~µ$«éSÇý=~–Hîµp‘D6£¥3+á…âÚð‡q´®ü2¨ „¾}þ¹ÕhüÙÌ{®éêƒýçC®!Õæp-–„œ+–­9¿€èõ¢b°ç<ÂÛú–¤GywäìBçT¾¹ÍýB?ézéÆŽyÏåšÿÞ¯§gÍEñ[¿$ÿ;ô±”è¦ÞO ü¸:TìŠøU‘³óÅ OõDsaÂ먜Y+Šç§©« „^¥AÞþ@x¸Æ¤•†êlM¥Ž.Býhùøõ¡!àþÑ8tÎ_bÃP£¬bå—~ Å"|ˆŸÖ±·m„å‘[Ÿ…xæü0-?ñÂY­m¹G6ѹÛë ^㌠|êÕÒÎÛ‡b§vðÉj_ Þ•5ÎtâŽIŽò*8X}ènØ.8ȾçLÎ#=8x=ß³÷[1È~*?s¢Ød¿/ŸÙwüu%^Pt–x§„pñæaìÅ7_@Zzáïõý í²ûN¿Èz<ζ²Ïž…ì?å ²¥ÒÊ-Âz ›7ÐV» "EQœmxရ ÓfK8úá¹LPˆä+j„’@ôÝ'¦i»98plžo˾ÄMާ_ÉgŸ”™ƒêA’6­ìý'ÄôŠ·5$¸l¿Òèõ…1í´d¿;²÷±§˜1å KIñP3ȶ¬¾"‚ì<í§ev*ÈF³Ê §)€8y.Ž…? |o8uˆ² I5®Ïq îýΠ0ë ¼«³yxDºŠ#?<õ‘¹¨gÔ‘D½·•'$=²š›Ìççá @À'*ª3ùòò>d#kÅÇ0pðkÑÝæ:¾g’±o²¹Tl4@¶Ü¡ë:ú9ÉŽƒîSéT´0ç  Ù®£ý19å )Ëü¹Û¤tÞ¿RŒÙ¤§kÿCŸüÚIÃzôÍ“çu€aâ}/oxÁ7ÿBÃø¼^‹ÿ,0Œx4ö;ÜFNm¬äÎ4¾øÍâ ’NøØ†À8Lå&•ìˆún§Ðº•|¦é `“íØ_+ÃpÇ¿áO “¾œ5@¸ôiê÷õ w;¯FÞú÷ÃVKÓþ¦t¶¤áT½ËrûÐÛŽÙ.°u½âEoRÐûk/¿”zt•û&„Á+À ?Ó75†“¾ö'`X]!œ½Œò<™ëŸT) ‹#ÉT^`¦«¯;ãhõ#â„ëŸU²½”–€Þø×\2pŽúçÊøp?·*ÊÂŒaYûü ÂÕ‡-]ݲ)@Ï\—Û5; Œcã΂õÂÀ°aáÁ[Æ‘»\rÇEÑy¡wïSÞÃöˆd¡Z?̤%Ÿ{vÑ…fÊSÀ aîþŒñ@öשÝÀ0•Ÿð  ~dö²|±Gyæ3›­½æÊ³Ø@mÔŸ?áߘWAŸöl`Eºï¿¯ûtF:Ðî“‚1ÒÚÍçtÿ{oBµ¼+¥ÒßïÞ¼€ðð Øï½xίw+UXÁT:%B$ñ‘¨ÌcEüñ`êËš¼6~ÂL÷X䶈;c€°7c ¨,d…¸vƒéþ޲óSìˆßÄŶÞF|ó¥/% ˆOÔð§ ·Ð}ÏÕã}‰xÑ®í•q?€(Åò+¯)LëñŸ!¾ô7Ð#ý×cNï?Sh „]¥Çqn«@`?¯ð@áØÁDŸa£‡@0Z+äÒA:>åã,ë0ÔÔ9²¯d!ýÍ÷ßï]ˆ¬ÛIb?ÏQ.î®ÎÅ:¤Ç÷q´ÇÍ1P9ÌÖåÛF”gCc·» Yº@ȼtóç¤Ç`gÝP±­»m·_-üþO׎ >òØ|à üÚ³W€GûÃ=#«±Þþê6å1þðr´6Ôç_×x"<–ä{2ùá˜&›ÅO䣾ce&þ‰Ó£Æì™ëì`*Ѳ_ÅøygÓÝÆ )¦„î]È´¥þÚžL;Ü7A¢j[×Ã[ 1T®+a^ oåó71ןc:~z»(ô ö/ó|ãCÙx^¤S¯8Ž7í&ƒÄž³ï@âk[Eǯ t>ì‘¶$HT“ØÅm>€¤Qݳ¶¾ ³¹É "}Ëg4ƒ@$s]Ó£âö‚,U‚å Jevcô·ƒ˜£K2Ÿ>hƒ²žü85g8 ’'ÖµgD$…Ú…vœ¹ðâ “«Ÿˆ‡¼}¶Í÷#Hì׿ãXó $D1ãÖâ ¹Ï^{Å$l¾«çeÆc|ÑËEÕgåŽ Í‰BG–¿5äÆùÃÙS ã›}êÇ?Ø_±Ôá±ìÂ}ËÛ¢…Ðùöqî3 Þ/'ð'È$t{û͹A¼À–¤âæ§Z–"‚ÌÊ×»VÃtHòw¡‚Ä„ƒ†&$گьãQÞYó"»÷Ä´Ôo#‰.y+›Ò/ Ž}^ K8 ¢›+ï½C@òà ç/ŠüÀøïï,;€1Tbç`ºŒÏÖZ†ûñkåXp#ºŸ?µŽ¹½MƄ·ÊPI` zOñ9xãM(¯öO`$ã¯ìý’ Œ©Œ“|âh¿ûÔR‹ /¹‰fã÷¥Êú m`L/žåÌ}ôô4·³ÇÎÂaFe$â›oÌwëùÝú_ÏÄûœ’¼©hÞaìNZÃ3ÄÃä·¾Ò?¤ºQ²ôKa¿X~©]?Å>öí1`Ì í’ÇŽc~€Êº‰ðú3Ñø¦¹-Øn`~@áЯÑí¶¸óÀ؊ّ¦¶¬cià„ð-æÈ^÷@økh‰ðyÁœòiNÅ}7˜À ŒkÕ}ÌN_Nܵø¡ë)Ð3Zv¦5ÑùŠcµÀøv-ý_² 0þ,÷ÕhQQœ_•¬¡þ\Ðÿ}£ ·Ê|è@oŠlH(>Œ•¾ð©ÔWÀX½MÈExüGûîåЖœF̦ÞcñÑòŠC9Ðíü·&Qý~§T#çQ_çÂÞß}@ˆúï ©C€ø÷ªÒ „[Ï¢Üÿ ¡‚ÿçµÿÞw\ÇFʘBuA˜f'˜’™¬Õű«ï¯Ã0=»÷mÅtO2ÙG¦€ðZ¨h7ñž†Û¿³áíæ×¤ªs@(\¾UrHwþ¥w¾JÓ&™0qy90mÈÏa“’W}ln1ðÅB)+B`úUè{ÎWÈrD•i*ù{>o>‚C-ŽF8Éä@÷á2ÄÓ*ö‰dvCüO’QåŒx^dwMå!v¸ÚŽ Õ÷ÓÜê©¡Än×C|íÉ·—ùÚ&`Z/*çu>Lg›1]ûoKê‰À¤';Çè8¦Ïô¤u‚žTwÖ„ëá=åûˆõY„Äó‚âm÷œ#IWAëäñûh?HUúÉ[>€øß˜Né΂hqk"HÓmŽQ †ŸñXå„ Gy„Sµwo7x ɵkóHä‰E~–~âM&:Þ5@Â.áSLï}òn žhGxáùë´ö‚2ˆým¾|@X ¤¯ïÏÉ·Bz0:QéñÍH„Û*¼!–ò u˜¢£µ}$5Â¥ÙC‘Ž®;0:rà!H9ð>¬›ñgC[Ô}É qÁãüZ H> ™ä4]1‰‡™¥b« 0¶ucÍ+ Ä=¯¿–ûÆ’òoûRçAêL­ºˆg2Hžré}X„æ_Glå?ƒ¤Ò‚ТŠHxž_Eãô{½Úɨ´‡n‹AÚ.ÕɪŸ‚샱úÌ(N䕸 v$„&‡ Åþ‚´™Ïà>T‡nÜ@Hî6•(yÒ·uh¬‚%;Æ]ŒÁÖksFw¶lÏ?QÑ/mÛ±BtW°½YëË83„Æïõ’¾Ò€ÑšiŽ-ŒÛäÍM˜¹¶~Õ}åf`ûbgVñ&Ø^VÑŸtÝ ¶WÃÊ?F®‚íuÛC7{ÑùÒŠ¡ß5ˆ½Z¶öIƾ’þ‘gyÀ®œ½» ôå?}ï¿Ü?|ß?áŸEtëo„+ò;J]~áLjô<Ðuè/о1+Ë„CÉ>EòEz`{oçvÂLØ^¹1º`û@ïÍ„£؆góü½¶l“:?ß>ä¶O>®õ>ÿ ©lûy­vŸê@;k‚Öýzïßµ@¼õŽyÓ$â™›ÿr‹Z>³Y¥L·ÊœÛG÷ï½.F}y^öq?Š—|óÉÍ[WÁöZ@Æžl/ÄRq=,h?gFxõ5`œŽz¦ª6¶wEŸ°„#{†Ù±3lãìêg½š‘nÖhê §¡±ôÁñ ‡î“§¯_¯º"qy¤ù-ØÆž¬ŒJ>Äiô€’â¤cäå8 . +9½kSÎâ_eÄ㸠Ÿ\ŒS6¾®ì+@æÀ®K?âS~;ñ@¬Ýô/ìSÓ*Ž,ÛÓÊ`*05ùç ˜iÙõ`LÞÿ­ïâæ€aüà Ÿ~÷ðŽ(ÙFÊ_×O {õVþ­Y {ß0t—O²Wü`77È,މ¯l:°Æô›(÷±îIo ÷ÓÎì&C ÎÞfÖâ,Žºc§ÿ´(jâ׳?ì÷ŸS®4Q•m ®;òþ ˜î¿rL·ÙV>sæ²xÆ+Ç'Œ‹>,|¨ ùQÔuŒRcWÙ«!M ÿ}ܽ! ÈrÖ†*ß~¡yŒËô> .⯣{Mì|³pUlgZ§;ìÀ”…ÇÀäp˜*FN­svIý_aÒq GLñUÎÉá`ºÃHAá*˜ò;œÿËz(§fÉÙ7ÀTPžuý¾+PR¬H] ×ùmŠ·?fO]y þÿõåHïÉWj©±{Ïšö¼]„“²¥÷Ú Aܬãñ¿_ ¾ãS}¹Ü›–øf󆃔óâýQPÞœ}ê‡9¿c÷F áÀ3E‘Åe¿ò“æ§,gß@ü;ëY®5¿Ë«842ÚnIÂôdvïi‹|·úeQp‹âH“ÞÛ="ìKk>’ ¶ïûðµìK b8›gU¼âúÞ‚A Æ#Ü|÷…âc¾:co–A6KbRãÁk±™QéLÿ RVË_ï}aÕßµcbÙ: cï<=“2Á“?üú]@l{\øÔl ˆÜ´š?þ[DXDºô¥XI\b¢Øg ªº€QûéåèÒmÇö¸ÿ Âo¬Wì? ‚8ÇL˜¶R?ÒÙšAÞn+ îþýŠW%ÂáPÜwdz òcþÇõjC¹r¯Í¨ñdû{m‡ÆRÀ–ý¿¯‘L[6N1± tow†Vè+?[! _A¸%ºeU; ¶ÂéV.RúÀØþq¤¡$l}ù €¾3“×ös`çÇqÐÿî8òW$¼ž ¶{y•¢œ=Ñ9ŽdÜÕ °Ýã¿Ï®ÖXíü·€îvÂCýÐo~³z›”ƒìʆVÔ ï’–G¼§Üq÷åì@O½½êxÂhï]„¢¥-üTkïQ¤#i>ñÛÞ€­*M Þ°lUÒLíäƒí®¸Õr{^°Õζî;‚ƃ ÷Rn€­¤KZŒ„تÿ±žóáGzò¡³z\ÒÓ5ïtÑç¶âÔ…_å>½1R\Œô2n9f›q.нIÅ¿­‚î~èd0ë)°ÅÝ÷ìKmAý‰nÓ»Þ¶Òj¼"Ç^€-DZs¯W1O«Þ /¤%Ýsè/Y::€­Òdäë¿(Ϥ¾/…ÈÊžÀw¶·íã?åB*ŠŸY>õhË+gó¿Íw#³éå/°•âgë¼Ô$«ÿþ~¯Häi?—Ùd(úéê'f ŠÓå~„xÇòLã;# 9¬Ü;ñ¨ Håª ´¶K@Ú(4ž¦OÉ–=CÑzãèN Ïø³e\¤È[×oýü¤›Â:ÊÀ‚üìvíá”·ž3Ï…#—w›(»žpöêEñ~"»3 (šAâΧ9€"Ýí- .éLn†˜ÝÀäš÷Že½e›Æó#@‘Étˆå»ˆòŽŠ¼,x ùÍ3’Ùí@ÒµpáXK@ñ®{ýq`Ò!“þ×hng`â_&áÑ‹¹@1QÉ?ÿ¸(n§ªž,ì’ª ÿª"ŠoÈ^åÞ€pÞ9?hœ¬ÜÛýq·€²ð†i—4âƒ]F½€$[¹‘úê'4^Æè #œs zT E!>û('øb0/¼½ÂÎ ”ÿÄù£¼N/ Sÿû~K÷ã"n{mä¡Òl¢¾ f F-Ÿ;)”èò'ÌÎØ¾íwʰ¬àÑ üÌ£/±ƒ”Àwß)ŵgHWAê í´&¤ª_¿¹Î R‘¥+ç@ªïͳS‹L õØ]î¹d×õxfi hõ0Ow T‚ïk½»O)ÌÞ(Á½ ÚñZkÒ’ž|P±Ò9Av÷Å@!ä4[­¬„ìkkcÄ·n¦gM¤t€-sö¢m ضïùkþÀö× _È#`hª/Ú&#½güæ-Uå ²*¦ŠÈî$Ü{å¶"Î{Fx&ÊÃW÷èÉ?©bö2@ÿq¥ÑëÇ w&>‹^úßSœHç~¼úúB©иž7ünÜÔ¥X¹‡BHÏ~ÚX[>Žø£·?I* ŒS ÍióÀ€:¥ÔO`¸98W½†Vv„Å&«>²SÀp–8pôš!Ð7‚Çãùßd!|Áî-†Ã^XÜ.¤ÇçjMŸ‰ƒ-?]£0 ô— /BÐã]½_uR€ql(ÊsC¡;6N£ø¹·Î^ß ÃÕ …ɽÀPѿͅðXdß®w˲@ϽÎûJ õÓVÌê~0â™ŒŠŒµ$.`Xe°¥UäOÈo7Ó9`Þ'‹Š H´Yê„Þ>·¶Ÿèçð½uZNLþ{-v ˜þh ý1^¦Ó!OSÞq­}=$ ºåÃr? ñ8鼨BzÓùðÙìTÄÃ.o†T¹ ¾ó{÷Çr û÷es§˜®ìˆYÍ©Bûs'Ü¥ €$bÃñQHܸO»)¯jÚe‚Á¬[~É kÌ>å_/öå³— V ÁìÃ5. !0ëÔáýD³áÕQ—ÌÁœ%G|»ó2˜sE];Îs (ï¾~¶$"<ûbá>éíùú¯<ªHoÿcœ–GþIBî7íèwÄÔœiþªHÛ#þu—‡ }}"6«`6cÄ`Ýfå‡ó…Áô—ñ`(~Í"~¶ƒi3~J1ƒÌÆŽKœo9fƒ‹>Ö‰‹`º øôÈCÔ¯™ƒ« íju­ØBúXpA8¢GLW—¶âLÝÀ´®¼9(8Ìc˜Úãz§$Örð\µÄõ ïçúIôÈûg`.´“ÿî¡ó[ÚýÒ¨ͽ:µé%(î/öÐ a¬ÇÐ}SPŽ?}®Y›õ®ø·, €iÄKHr‚ÂÁË+& 0«?ïi& _Y¿í9 ²Žo²ü”Ç@E}ÅäAµ"`Lì§å‡@é¬O`Ša(€þüaš!(tõ¼3™jÅc§ðþAñH8“xÔ`vÛI]{*Ó¯±áæ½ 2@¾Ý5© ˜ÇÛÏH“s„ë‹Ó#1ÀµÙ{gÆ—±ÿ˜A:ÈÛä5m39z¾L~®¨h&|ñc…‡‹’¾ûeA!Y8íIé&Èï;t¤/äSƒãI‘â ¯ke5‚ø¹Âô¨&Fä?Øç¢݌٦êÀ¼s(Ѱ’ùàÒ¢j™ RG n[?ªñòÚÛ¾‚êÓ•åSÛA± û×ý% äÇ”Xÿæ)üIK1o£s ÿúסGâ@^q_Wò£d¿#s~Šs0rï½–øþ‘²H;I­ ðÌ«ÐÂï:(T­x?á= Š»Âm)b1 pÜjÙ… mÇ{ÊÒ>ƒÂ¾a1Ý»ïáàkY™:g(ö× ŸƵ•ýBáÀˆ3n þ¢…lOÒ»§‘¶Ãòê®.`d×_Õ‘âÆƒÎ³7ò¾ý¹ó•óî†ÀøwMÍ5ñ8©¸|AįN?oñFÌΪbÉ#À¸éœ*ćxÓ­c/àÇ€‘ÈÓs$ø-0^žíÜ1ôŸëÁ1¢,@ÿEdïÊú Ž3Êæ§ï[•©™ Eø¢ ¿·TdÛ,8ãÜö¤­÷ÇžM =µí¡s‹#Š-%ñ 0î ±ýLúŒ üL%áó“öñ#r«ÀxñF-@;ÕqÔºP ù»‹é…ïu`äsWŠ©ò3Úûá²<‡j 0êfïørãöî3•±YÿrÓxè#ž!+-²ÀÙ¡–ÿ”…ƒË9ˆ·ö¾Ý<–ŒZ‹äÁ»×ð(_Û…ðø¥ ±ÂßÑ] –€>œGó6ñDór›¥C§sLØN ~¤õÌ>Úó%m¶~0R¹&ËŸ­t›…Ã1 e;ýÞÂEy÷HÝÙ4Ûú麯±La¦ïÊi0]÷’ŒÈ«GyûkÞG¸Á|,²& Hû0÷ ösioƒ'‹2Š#ëþîßõ$0'óRî¾Ó »r_!¤k}í<þþôrž—éÑ"`.Z¾]ëÓ"˜Gœ­ m‰ßDÇÕ+`úÛ87L" H¼ W q„k YgÝÁ´ÜלÓö6S9÷¾¾æM½2Ẁ¤í¢y}÷$â£.6ÅHGk²h…b¦ÁœjqÑWø6ê[ÏÚ^±ë`NPÊés¼â7ÎKú@2úqÍ£ä ÿÃ=„‡ýŽœ½ç ÂJÏôÆ@QÐãݧ½ÈF»~OæÙ Š˜3Ž™Ø|Ó!¥ìR gwúŠê0`Î? ;ƒjZž­Ë äÝ<úà(†ç½øJìŠsR¿ï‚âïMi˧€­_ËiëŒ cxÄ%0ö´ï¯œcòFc0KÔÕ¹wOóúdžá?€I±(o^D8¤Wz/x_=(3¯í±žT5wú^u£Z„g‰¸ùÎfÒdA8tÇä×ã^¿°ûëÕ÷9 o­  KjÅìÈK#î-Ä{ë?Lßnqm²<¨=”™›» òO‰èXu€Z_„1ß… ~R÷ÃÔ¯÷€apûÝ¿Lµ7OÈÏýyR×å òåEÄAI ?i4°ä]ÃìWÏ€|™IKÊÕlP–Èôjï_À ê¬]ÜEø.E5 EÙ^÷ÏÛ¼AѺ%$’cT#†RšAq‡ê«€‘ÎÜö$æ(µû]}{Ò'¦öËœÜDxñß{|uÐ}Þ=4ÔiŠî¥Ù§5¼:0ÊI‘éÉÀxSøò«)ºÏU‹qŒox µM©ŠÿEüeüÞ¥ÌoÀÐ?ª98Ñ Xǰ“粂ÆÎDÇ–H>IC÷]ž,‹p#[ÇgîÅk`¬h¿Úsèü®Ã‘R@pŠ?tEÍÃ}ºïÎ3ÿç°nÐ-o¦ÙÔ1}áïëM ÐDÞŸù6 ÔÍcO¹ŒbÑ'%òÖá_.÷Ë\0æ<Ò[óÆã^¹'.ç,ýÆ"LÜò¿hŒ§WÓ£ž#ü¾/y@kÏ [wó2³"k—büà60²,+¯ïG oæØM·Eùð7?YI„g[œ/Ý>Ñ€eH—gûúÛ Éß¿š†å€r`+˜wP¼ï®£xNjüNE`^ºû¸¢Ì×åŽIÚ£~ÊD0»…ÿEi‘vMP4è¥>ŠwÞµÜ1HÅG®W_Åz÷‚ü7v X.âÑ/º ŠBVn ÍÏ@ý9SÏ0ÁÔƒ6Š–bœË$ò|„ :Ltb&(xûŠTØàAÑÇýÞ‰]P´S©=›j:Ì,¶l Ü©ùÞ·ì-`’î}hr#zYЂ}¶¨DçÔÉH”‚Ê^/©Ûe@þ÷ýþ§H7+Ýýór½¬øµ§ŽŠ|cÉ&1¾Ê]š“Ûê£Ík7Në€jx-ë~ª#(ê%®½xE ´^xÜø# ¨q}³¯åzù·Ïáû€þzÉSÜ·(Jíèß ô/tÙoEßû‚ Â:éÐØ9 ßÜ̦«…ÂL+/Ú ä3õ»UJ…Ú…·•`¦¶7Aÿ1˜VKœßf䯅'õo ²s([”F¸`qlnÈ‹6×%«Àüd£5W˜yKê=IGöõ¡ÍŠ`¦‚«3#]3™É˜Fž&0óˆ~ÐáùÌ_íHZă™A93ßYv03笕¼æÆŠ;MÖüÛ%ó$õ!òoè1a@rAÖenëX &5ó¹ÞõòÝ@þ+f£b‡æË~)¬T÷Ù ÕF³sk`vgÈØæÉ ?ª [¾„töò^÷Š&`V@w<üdÌÔ}¿ïó³Ç~Æ ÎùiÓOÑK ß>$“kƒü~c;DPœÒ ßew ·zì?ön/˜ÅÐÔÔu‹Á¬’ó=k-PXÞø÷ûòy]çNŒ=þÆŸ3âõ¢þ¢/èy1™v²ÌÈReבwY¿grèPöžÙÀžŒÿßÿ„øÛÃ]—>µz!½95´Ÿr0©lî‚Qosß);þÎ`n‡®*³¿À}M“Ô²ízy=pg²cÕ4AÝÜQâŽ`Ô¾=Þ–õ0¤Ë¥+ˆ¿ÕÌçͤ‹æiµîb9¨enˆ(üjlš]:ß³fsV}Í ÔbgÃ÷µêî•"Ëk võëÞ*¨Ý‡Ôß‘ûAe7c£O7”»°}É5vmCÛsÈ¿ü/ª3écùgcbª€‘<ÔüL30Ü’ªuÞ :šeØeŠêò_êÆz#~*›µÓà áïCmy}›-À²í.©eÕÍþ‚}üjØÔ é¼(P›Ø÷‚_¬ÔŽ»Ï‚Ú®§­/tŽFÈEE¡Ã0â~œ—^wF»Äýû¿ÇœÈ‹82˜mìf¥óé ¶Þûå©< °lvg?ßEºýÝÙ‡ñ¨6WÄ&¿ËÆc.§>ê(¯¾¸êÿ;0îÉ\>Ë Âç­bt ”]fâ~ŒëÚ=…BÐs‘̽‰ðãY7§)O4º×ÜŒt“û7rþäYôø^tÏÅÞ¼Í tŒU¤åï#@÷ø€çÊ zÐáIГKÝØN¾z¼û=¤@¿R—.¨ô[|MÚ™Ìh¾€çñîZ ßk·yœìt1ÇKºíÄnô,0Wºýí÷9<Ð ó¿Ü˜C|ìÝzÃ16 ªûTP3 4§ÆG¡Æ—fqRt0åqòžÒ?»Ÿ@Oªزûp–nÞ†pV©3Ëö± ‡ps ß¿{>ÿâk ìë±*òLdK‰F@§'üV•@¸nÇm/€Eù>ÏêêßBüì„Øð…‡<@ÿnSqr¯0ÐϳU7^DyÞ?ãÿ7õe[ÊTõ$ÐsüþûûVzIœú­Z„{·’SmC8¨^—KÑú„ó’N/ÊSÍÇñáÜíUæƒy2¨OúeU÷ù€~}èô  Yî=TðòŽÒÁÍtK ñ9 b#4³ÉJì<ŠóxEú°Ý ýþO4æE%Öü^?+Ü ¤ÙK.#]¸õQúÒ[Ë#Þ›,ˆ¯(ý…îëéùFÉ?ß>MšãÀÌVuýN3Ho¯$Ÿ#}ùC›H_ü¤~#ÒGçcÚ¹ÛÒY`&øå´ÿ.:PŒt±Œíü@1ìZ?¼v( Sç<Ëj€"àæX„ø+Ãþ]Íó‹êÖ9$!~y‡'‰‡á/Ë™sW̤ÜÛŒmRëÅ›i@z?`Wsà¨Æ•I¦f]_¤Ï«¾íêü…Ò—Ú´À?@Êi½üŒžMòѧ1 Ðvür×(RÚ+3;Ä ¿ó­=zÜfÚ9×lšo<+ŸÕÓg'î‹ Ýõt<ì—¤°{Ó@t.©Èt?/Ò÷e_ó2o)eÿÏÎK5èyàžóWñµþë—£‚ä4ø>UÀ± Hý³ïBX€4àÊq(f½¥Ô MŠœm÷ x»Õ˜…Åqض‘T¤¥ïâÏnu.«¯z'€z.ç7ÿ*P§QË\«lAÝz{ÀÕð'ÏÖm®½Òuï¹®åê€9e~·gpÒª?qê€û^T¯x‘pbå¯×òÂ{o½Byä`ó·² Z‹@s]¸¼×Ôeöy=¹ý p„"&¶k€ƒ\¡ç¿ú‡{÷](pe':ùËÏn²ìò/CmÀw<œ±\Ï»×…ãç«QÞäŠøžZ«ŠZŸ¨ÇkФ¶Ç¯êýø*`Û,ß*Ò~Ö»Ò®[T°>ÊÃ/Õ«8+÷9°c/ñÜ왩ƒ{÷:Ý`:ø8hÀIáNW9ÀÒ*ß;øRA}‡|$YÔÿÖœs"ÞÜ—¾Û3nŽÓvöe#`ýâ¬Ò€õdxí°Bq²ÖÖ·I–±PËä4 Ø ÃßåÄú|†Øôe à&VßÑ Ø º ¿1`?G;Äkz¶)¦†»žX»ófi™ñ€åýÙXÃ3ÃòXPë)H ¿ êÛw“&÷µýÝ÷ Ù&­*öFÄï~†D¼Ï½oñczmCÈÞ W¬{Óh¯.ÜzVôèÒ^“t= 7?ëýZ ts©žC!7ÒÌýþežE¸7}Ö7„e`Ì…ðaÙ`d¶ñHƒ/<5T  ª&ÛWí«Ýíšú·Ø6¢sÞZë$ \•ot— tÉW÷m*8€V¿åÙö´|«ïû®Fñî˜zœùÀÅ÷®¬/];¼áQôceï.ü«ÏÍFùŒ]kTlú]釉þGÒ žÍd ]%Ê1¡A èX¤‡ˆ§>7ñ.øŽp3<[œy ñÅ——Ÿ‡ÚmbGêÞDTwwÿõŽâL 'æn;³}èäöjŸe„KX–;H/§ŒÜ:ŽÎ×pç T ¼^羧دmöé7+^„Ï÷«ì¡çGšåžæGˆ/^ñ¶[ãZöŠ€Sb=òwç™*+ÐjÁrñ{Zá 'yºñÂÚO E@ùïã¹ÿ~…Ê~>z(t~ŽóÏ2ùð…– |Z—¡"=‹ûÑßÚnfÝNÖãN@΀âÊǀ|73ýŠ6ȱ³©o;[¢írË“­(Ç,£RíšÐ½–ŸVí—ŠA«yÂ!¤CÆd/#>#á¤õÖ©̤¸ÆN * ¾wM23ñGfvÕÑ:0ÃÍå¾™3.+ýÒÌv ü Ÿ |7f"7„‰HgFge üåÖ–{ ,¢Ç"xX(‘?䡺¤ Üt´nþû¬UªË&±+ÉU(*-‘™¡ˆQ¬kLèˆGZÎö²ª¼Š´ü,úäüÀ‹ÇW?,àq×>q̶%j³QUÀLY‡Ü°ÊŠpØÃýË«=@Ù¡X>D¢EJ9ôS£,âÅ•ÝgBb‘¾wè’¾Òˆôîý"ß´0û{vëÇMħMö¸ G¢¼6©¾ñ×ìÝ»†îIeÂlÈ¡ã%PD$ìAyOœÕÜï˜íý§)Ù‹öy_4;ÕØcˆî©Š6Ôµz§à4`éBŒ´Šw€µbªëàDx<Ò©üÝÛÓwk²Ç[+Õ´³›ZŸÛÂŽ(4‚¶ýçæÅ£‘ õ貋ÕöP;ÇKT~r ÔΛèÕOúV2<"˰JÙû AkçµzöÜP¿d¿mNjái¨cÂv]PÿÞëGÌÀÅäÐlÖ¬@ýóÇ|Ç÷Ò€»Q¸WU:ÔÇuDE„+@ýÑ56™€iм×|I°ó¨‡dï¿ã5åë.¾jœm)÷’Ò¼ó[Ý0ã÷U­µ@-éWõÙLPÛƒø 9Ô—¿óèœ\»Ž'g€"`FUë9?*€fù¨ÆÜ)UÐüí+4Mpâ]†–Z~ ~SôxæA_PczrPèØÀ¬‹zÚLWfÞq˜óŨ‰‹Ul¯Ášû¶Ð¥£ ù+áeíÅ€{Tr+T¶Ôî0oŒôüµdgSbÓ!P£–ßâ(= ê›…æ¯ÜµD¶1°Ÿ@xÉjÃô¥Ôï„.ÍʬÉñiœÐ~Š7¤=þ´%ÎËçé@[ëÑËoõÚØ5©wçÐzýì°ç]I#‰Mxu€w·'Ðmèt^®÷H¯eÞ*B÷øvLƯ¤ UªifHhíÁ²¿WÆ tûÄ£õsÖñ÷Q×n Ÿùûâ@z7PgV^Ö&?êŸ]†,™$ JÕM¥Frª_Á h»æhjʱáG€:5;9¹|¨=}<—8ÝõÄ#}ä·~ðÌψ=@«û8R`Î ´vIåËåÈÖq= –ãZ &ò¬K"ÐÊ=_Ïœ< ´Š—¾=ÿ 4#ÉÏ¥T,Ðཹ£B*Ð:­Ùƒ ÿsú£?0ôØÇœ¤†¢ÿÞ¯À£²v¨“'5ÅYÞ¢ú¢Ý嵑þmÜŸf¤]´¶=¥'Úÿ{™õ›¨_%q:Ho'¹OFÊÖmÇ÷C…µç«nGð]Ó@çý¢Ä¢|“/ª¹¨µ¹d7?Ò÷ua¤ÁD þÜMªúºÔÏÜ—÷²Äí“@Ü^'2™ϻ |Ð=c““e¨'ƒÙ~îùjP¶"%29&²Zf3Íø”µ“dy„Ó‡þ\ÒœòÃ6+Ìi@î)dqö  »N£ë7¤;ê?ê…¥«ÓÐF'(äd4‚ÒÓ,íÁýáW¾ É(Ÿ†h¤ÅeàŽºu˜ ·æy ìÊ·›³åÀLúòxÀ'tîÙºáò“<ظLeÊgåýöšˆG]Ó5´\J½å§w±œÈöS»¦ïåѳ€ÅÝ@©žýâ…ô¥¶à¯vè ´e–½I®JÐ]V·GˆÏ%jKÄ!}­}Îôp'P¿Í>ýñËí ¦±ä_#©” ”gÖn7(øûû«QýqtáóÿýÀ1×js $¾'õ?9â/rqk¡zrß=ðD<öÝžkÁæ¿Áìš¶ šïïp|úXÕ-«N@u½rYõ Bû+þÅ9 :sÑ9>¦É‘ΔL¡~iÝÏšDÏ‘qÍOcfI ~÷¿÷x€zÅÉ‹>ƒúYS«„?ÏËm8Îé ê©Ï¸]¥ @ý¼êý%Ûë€]ÕøñÐù#h[PÆ.(€vo’¤(‰ÚJ?iÛ%´AÝ9IÙôÔm †?ŽýÐɾ)„k“Ø¢B áê| ÍÝë›;ƒAýÚ‘ªe¾ý'ýÊœ@}µŠS$ö;¨[>´ãŒõ‰’ØН@Ýl”#ÕÔíªŽnŒÓ@ã@gÛªP=¨¬±M±¿@v«ÌÀó â}Ÿ¶7s½ì»3é2Ë…€} ?òøË@]¾TôzÂßçÞ=»ˆò¼½ø’ϲ pLÚ¹ñQ€Mÿ*êúA40WïÍ^ëwôç•ý€Û!~´¹ê[õœ?²¿ ¿L:Ù Ûž&ˆÿ5¨ÛtÔl¹Ïl§``[íí¯‡X€Æs±©—E_«žˆ”ÏBù¥Ž¤ÇºqH0ù/ªcþßuPwð=gòiõ»HËsiõ-ÙÉõ{²cóÃ̃ îÎ}¸chW9ɯԑuŽL¸´‘Eš#ÐÒsßÞÙ ´àñ`V[34^¼ø÷"£K9ç^!ô"°Cç о?bõß´½J§>à€f­d|c ñ¼þ› ]½HŸî-ì—ø ´=ß<¿\ÚúêP·i É¶tOUÚ#+'Ñp hæœgúôï#ûsšÄŒpŠÂ“×ExôÞÅGoN ®f%>°Œꜧ²o.:wéôüª+ÐìõÝ.÷þšV\Ó­“@ó±ôŒWdškˆ…Þ…@sþs.zhô›ïEZöÍA,˜í!²Œ…¦x€f3:TzSÕgØÎyHhaqã¹û<¯¤X(±>šœ”Ý@Â+®›î-M@;†ñËŰí´½WGÐüõ„2€æÉ~î–2?Ð.IüýŒþû¢•\¬?_} á9ÓÒ¬$z~м£‡–Q/÷¥p¢ú´ê]8\€úã’øÏïFÞA!tüWç~cgA6TçC~±×H×[É^{Y dÿ­µ×€|uÿ8ÈÁâ-gð¬@>aFùÄ]d']ö"  ;Üûõõé wš0f –`ú³_`¶cÇIéwý`vÒüàæÁZ S#ìÂ9KÌøås.æ:íö Ç1 #ã×"ˆ÷U³Õ¼;ʤÕ+gƒgÞÛºyu— µÄ…)1™í¾ˆãk”¾á-ùé9¤ É_9‘^Õ¿wºH ´¿)Öˆgµ¾o d·ùH:ÛOâ ;Þá/T:dQßJÑrs «,ôÅ…!¿ÇºòxQ/Œé=Òß]Ÿß°M¢<§ì²òÑ Þí¯·™oóihÂïìH½EHç mQ'Ä€Ô•¾ûŠÃ2þØ+£/™õžÿqµx ï׌Øêež -xï d¹ä7¼,­fÑ5éù …‹Û°@~ö£+Ë õïhkZâ‘”áIe…@&Å.þì²R‹¡àîC@Žn;ߦäZÕÆ^—< Ínwj@?‡ãM› ¹ðßßGD‚æ"rõ‚f·<›F–h~! ¸VI‚æ¼õÜÖÐìËÑ}üw 4u&;@˨Bgù(h]‘¿ôZ&ÏKg¶'ƒæ­ÛÊ»–æ@ÓñÐ…A~ Ð2à`öÞZ±áÛŸé‹·Í!—{ Ù¶nùVìÚªW]1h6ð*›€–ÖåÂŒÐ,òÚsˆæ Zû° 3»@£Û;ûLˆ;hnÛ“Zƒ Yèî^šNºZ_4)(Þ×nœº8hjœ}ow+4U]<ª¿ƒ¦ÐIѲ ép„­ç­h’]—W¾;‚æ.wŒi ´°gž>ÖM^íøŸDA³nðVú™ÐLzój{hI¬}ª|„øÛüVñ–õUÐTá)V½lšêV.¶÷S@ÓåìŠú$qß›Ü>Ð4h–Pør´Ø‹Ìò¶ 9Ç5º¾ò4/hØtj ý3=ò 4£ö†_p€ÆÏRq>h¦§Þ"Ÿï#…†žÆ&ÛÝREmмŽ=Twñ¼ÉÿþlùÐþáÞÙŸ{´åìƒýã@ßÛ1øÍ|ÜÜÆÂ¥±³{ú'€ÖrT'ßðÐXè]Ýh¿ÒuÕYßóßîóGxÙ»$±WØhŸé/å> }øUQÒéÌ MU.÷„#ºùêÐÑZtþñ±8ÛJÄ/*)¼V@¼Ðí×P,ÐZ7™¿4 =]çüð\7Ð>(ÿä}€ø[ÑÁ%šÒ eýˆÆáv† Ïtuh£—"Òo-¢üŒeS"ß¾‰cÖ1ˆ}|Õ¢¼½h 8°—hn?öüA|ôݲœ»!ÐÞÆííZS5¼<‹p¹“˜8ë‡ø£·­ËäU„“!÷¥ÖÞ¿è,¼o™Œòu¼Õð¼]µ_š¹h=&ýÅóÿYŸòk:²C9Î_Öþç]äºýh×Ìå Zï-÷˜^“<´þÍÅîz”×F<¸@hÕuJü0@»ÏöWk=:#S¶i« }«:úe,ñå”÷Îeˆw·ÞrF÷JGˬ1wÈ,æ§ô_Yw±œuYÈšWâïN ýª`ÉæÓ¡d%Y' ¹¼8‡öÛ°Æmn¡:ë0G šÌõnªžc/麗œÊAû3ú1ÍfŽêýƒJA* ÝÏ;­ñ‹ Ú³†·"/µöf}Æ…ˆ Ãz™Ï4$´eOøÞsº º*!{X^£s¡CË‚—@—åXÖG³Ю8õÍ%²´³:Ö*îŽM×H™%tR„nñ¶‚nbÆ?>.^Ð~[abqØ´Ë÷˲íW”³²†é £7£X|Í ´ß1Î)t IìÆaì݃ sEæK ý°1tÇKÐN ‹Ñû»´yÈ72íP;yŠ—‘-e¼Mè휾„€; ½‡, ŸíìÍý놶 sXÏd"K´ZßœÃhƒ.ö€]C7tooYDØWƒŸüyAÔ¯U|é}= õw·K¦x!hs›ÙIÈ€öî¿G2ýRAkõzAèõm 57`æts-âÅsdAçà|kªóÝù/bÚ¬ ýi`A«ñ-h7Iľ›³mï-#4ÐÞø%®Ëj HðW½ÞDu.u-_íîbå*~ éþ÷µ¬uˆ-ˆ˜ºl)¼šWÝsýýÚý¸B YÞô#¾cP£p%¹ hò©ôÓ—ŽÕÃF•íS9PÊá?íAã»ÿf¸EÞM½úå˜âiFÕÁªˆ—éùÔõ}E<ÉìµÖ@›ò ù·kÑýg‰zËôïжeÕøÞIšò´ÚP:‡ûœ*òñ"y[õ/€¦B°0ç¦MŠkÛ®g@ÛcÜÁöS éB_/²JâS½|lãG`æ.Çél í§†W.!üãy4ó~áÏÍcâå(/xx|íŒ)Ð8[»o œ•øZ’›(4M»_»Ïd;ºÏÒ2ù=÷ûz#²c4Nþ= 4~é±Ëö@ݺwZµñ¾^•Ó<(¿½N˜Ñ‹È œÀ n–"[c3ðWj¼ðT†Ò§*÷M,QÜ}Ú¹ó?Q:É'w·"~zh$¨5ñ8éÝË‹@ã-œ¤ê£}šWËŽ=ŒCó…œî‰>¸õZ = ÏÎfмïq‹O@á?nÝÇ?”o? r!\ûB _üéFÛÁŒ?HÇRÌÊX ˆ¤{/˜¼ ÛºH= —ÿã«V ÿ+Ω ø WŒ²– `ç± Ê#û§·!È¥W®“ð#¼ø,n'Ò…;Œ¼î¿AºŽ'cZYéRQçŠ4)„ s#CMºx (|xçäo³ÜçâdœÃ/c¤ äßÚ,»'¿9¦Ð~ÿ=¤÷Y_æ šŠ`]ZnÕ8ÊïgÐzîa œÝŽ]¿Éš¹š‘¿'Å™m›hÏ„êÒ=i¯Ní·Wƒ•lÍõŸ@>vÔ5pRÈ¥ës_Î7uþx2u(2ý/WÅP¾8¾K'Qý¡ÓÎ ë@aQ_, tÊnn™³ ¨Nýï¹÷GœnL4MŠlst”FŠ{ÎѹŽ(˜BÏYï¢úȘ#©Èo>äg™ïŠÎ‘0Ó*Ä‹ŸR»?@x÷'øÖƒÓ¨?²‡pìÙ¬ ‡ÿïûŸ¼@ïùîþüuyгN ÈÍ‚žC·BÍ}Gлýϯܖz‘y¼LFù ÛϤƒm¹zùb“+"y ·Õ5Z̽†ªœÖ gm­þ"ô¨{§ÓýAÏNû±ý‚èu8‡/ÞîýÚ0VfÁ>Ð7Ùê¾›zb3¯<Šr@WÂ|R‚äz32£r, «÷¶Æñä_Л÷yâ†pUl`ó"Þåu¤Z~`ôƒ¸OÒ( §e2¾¡®zšÅ² c/¸ŸýwÉtÂöå5Öƒn„Ü:“j-èÙ<»¢9 ºÇ# A÷ñsQÊß Ðší5™¯]ŸmʬŸ%A?wH¤,Qôyy÷4ð€Þ¡r¾gãÐùOBá¡Ðõ¾:xyÒtÏÿ+-°]}¢§—??è†çè\V ‚®Ž`Ÿü7Ð1|õôY|•$AïØpö¸/èÑúßн}%Öá" G¾.rìèå¨o…Ñ6AÜ(¯:›@Ï£óíÕ} WŸ}«Z Ô²rë©b@ý´1œaÔ7r3GZ}€Z˜'9¤ô ¨ï½TF#€ú,&*^W ¨Oqk槬Àf«ù˜€à *¾ L Ou7^3ï «îä¼Ñ Ô–ÙÃV‡€šsÆr{×% ¾”T²LöF÷*RÖœ¢öïÚv ^ÖÒ¥{ê5¸±{s×U ¶Õ0IÜêÅW¶¦î(¾$Ë3•z f%þùꨎðõ¶E¥ÂkÙŒ•Ç!ò@­>¸Í‹ò¨U̽c(~<æßëC#@ ï jóGþ¢®E­¼fjÍöuf…  &‰ï’á"¢¸î¤îêyMò6<'P£5ýOßšš÷¸C-Ð58ŠQž©õ×2yÿóGQý€l{@áD1Ú_ª‰Ÿj`×{¦ûhÜaïéÔXÒö†×ª_WŽÜ—ÿ ÔžªSĵÿòüÎv® ¨•qS[j@M~úîýEq >ôo‘ÝQ‚úÎ>îäÚÔŒ|çÂèçðHµl–õ z.Ô«DßFúUên«ô0%X³OÿDz k=ÕÇPBºm5{©ñ ù Ãè«èJâï~Ú¯…Ö?øçF”é’¸6›`=ž´ñd~F:0nï÷ko“ï**åžIC<ìÞýWs«@æ÷‰“¼DC:rWŽTG%^­ …c‘Î¥­-ïÒ:ë¾Ý:šH?7=Ò°/©ï=â•Õ¡ÇÕ¤4Òóõ·š§{ì5´¯ÁÓYéÁB6 Æäq¼®Å¤üÙq éó}¯ÂÇ“ñ@>øíG'f7ÒRKíˆO®ê”œ¶Cùä:\ˆDºWÿéð®›h]Œú[…ã÷7Gã¶é†WúìU¤?,­ÈþáÒ[%³ˆ'rÔ<¹"dž—£U+H?ï²#Ä þº-ÇŠƒøcˆ‰îÄGù·¶µ-¢þL¸ÝˆÊ>xëË'{m€¬úÜsŒô»ZÒiža”·Ìe¾ªæ } Ô2¬Cùh^Žö=~b*ýtþHT…âÕ@÷Ô“Rstÿã¥쟃®Kˆk,ùâib³Ê輺A,Ë[Ð¥ð\°3ÿ‚ð"RoÞÎtc1i$‘DбLQ¡rÇc­‘ óø¼¨QÚ+²®÷t.íàÊ«1]¨7\>tt )[Ç7‹A·ÒÄ º6S¶¡>‚®–Ó'ùÐÕT­¿úõ'è¿òü­´:éK¿*:÷€N†¢ïû~TYéD’å6Щ–Äç×(‚ÎèŠiƒ“!hÏ՟ι:µ§N}(]kËì½ÏgA7iE'N$tƵ7ü š@§T&×_âèd¿·Ò–Fü7w·†…tbo¥eÝAû º©Ñ¾ ãµç\ô è¦aZíb±(Ï> =®TÐ5˜çæ6Eù GYݽº"“a6M. ‹g$óa]Ç"¼›?Âebð|¼ÂOÕÌþiœ ë–¹¦fTÔµ'ÿ~xEµŒ »ëÐvx ¾ÃXõoŽë|‰8ж¦¼Ü Ôy\ÄÒ¶@{Ã|mëPÓž¥¦JiµøÓò. >_xG±÷êFZzâÏd™å±_Û^éï.Žô(óÊ-j?Â×^öÝyß‘eLí6@¸°y2Kv¨¿¦UgV·µ½ëO3ÿPÇp¸ ÔnÎOW¸Ó€Ú?¨8ƒA¸ö­†r”ó0P$Ü=…©@cJ9œ’| ÙÐEÑè@<¾ÏV áÛèÍOQ$säçcµû®S¨ž»³..Ðù/Ïa  Þûù\¨ù•ižòI@ýiqúãW!t.CÜöæP§–B¹žNµ«¤wü—û“'GMûr´8€:ö‡æÙòÿ¬øïÜe´?7k²os=“Fýê0l9‡ž ›†o~ñ!üb {ö†ñAvjã$PûXÖ¡çÈxl(^ é]&=í†Sÿ€Úgm ׃â,.)Ÿ ^×ÜÁS`z =ÊmÀÔý[™UE˜†´1ê{ÀÔç¡„CŒ˜ºý¼ñþŒ5²©£økh¾wBç¦J¥š¸605àÕgPÁT9Ê¡’L#ަZÃa0½‘V¢¦§¶^aø![!ɱ°¦zä³WÔ¸ÀÔ2©È°ì<˜R•ä&*ÒÁôH@ýñÙs`*{¬ ¿|L½.8/–Gc\G1L…å_•µ¨‚)}Ï9ŽìI0Õ ª~òƒL8õGŽq‚©ŸÑù·'ÌÁôD?"1 ¦ç‚7?œÓ³-µC¡ò¨®mjç~)ÃxOEÌ0˜Þ4 {³ ¦‡™g,÷~SKCO/mB¥EL_½Øåsàú‹]-¨n£ñå3 `jOûkY‡üÙTÜrÖǃ)!™1=[¦gânûºLF"Ž%Ç‚é¡yÂ]0uŒ=ã¬Sö^gn!0 uÐ Dõ]\pœ@¿ Y DúŽlÚ†c oh”žŒòÆïbs¼ úбßNÍ þÇÇÄë=AuY §ßfEuÞ?§Ñ‹êü¬ðj×+ÄkÏvÎW-5õ¿ßkà€úx[dÍ;P3e*>›ø5ýË”Œ/â+÷«,‚×Ñü¿î•,KÄ—t¢Õë^„ê™Êf#>ænnúáPÔlíd:—VP®ÿ¡¨Ù—·uDü'U#Ëc?º¿éð2×5ñ¥­¥êH„+i&½n¼ˆ?¥Vd£~P3ZÛ…ýj‚ñûž"„§‘û¿ŠÉT¾j…øÑŸ+¯\™Q|Gý¼wQ¼õWï_`ß̵îcÈ_úÞåþ#šh¿­hÖ¥´>6qæÙ”wÏv[2Â÷Çþ2vEl/òç[1äŽúžeé|È•h– 5¥È«%ñÚÚP»vÄ ï‹ï8Ú Ä]ÿ}ÊA n ;"’wˆ":ÌR-Ñü’˱t 2¼h7„5’•⟠îY矟Bf™ÎçÓª@(rPh¸ „ &w? ŠÖ.½ TDû,èk¼c@dOŽ4¿7xÿ¡7h_Ö6Õ­S@øú機ò üP¦ß’»‚âKĬ¯÷!ãÚ‡wš @Æ?úZ „ǹ ï=BÎçÑ`ÝÛh¿YåÄ! ¼¸±CÜåi–i« Ä}©¿ÊÑØÃî‹iŠšPòò3yøåÔ¬ÅQE‰e)@økÞxRˆü´ÝyK@”ŽÙº6: „Mç'Ìúÿ½‡5èŽý @èÈz<(8„ª¹œ„V ²üæxº²€êøhRs‹A]ÛëŽa¤̘€(´œîCAupä&m€0Pw`äB–Z«_øCñ…¥Â•ªP~o½x%€°p„lœ„òië}ïÜ€ÈUÖ(Ùs¢.êM¯£:?5z „ Áèß³ Ûüß{¨A÷‘2ˆøÅ#|ûÕKÕ ;),õrtçŠÓAwVú™ÅEÐm™mÇMpƒžÔWæ> 'ç½°Z€tàáС§GA·-é×ô tGÔf¤q ;x+øÏn÷¹jç¯Ï”×¶‰I‚îw &žÇ@w¼Ih±á'è&¦h‰iF:^–úMƒnÖשf¤#›ÜiEÍñ ûã“ZäËÐÛ~â­Ê«¥FÝùÍKPõeÝÜ*lÕP+è¦?Ê¿îpÙÒ/­C@÷å1to”GœÒBŸ'èÛöÃà&èfF]ìSAþrO:îiGó,éûÖêáÕ:zÛ¼½»ˆú*¡á€øWï·–J‘ß}<žn¼ ›Z5K*Cþ¢f.)¸¡¸QêÂrœ[(o}KÓçA »¼xhxt¿96¤G€îMg¶x¡aÐÍÆzõ¿Cqw{r¢ø[ùéŠZˆIE™A|ïeâMcè~YÍŸ;Û º•ž®ëšÈŸhÚ}}üoî£q¶ûÕàX IPKÞ4‰ÓŠ›û¢õí-eãX ‰î ÿÉx4ìçŒÐ¥Ó@Sùb©ÅšÞÓ}±{ €&Cûh+ñ;~õP¹ÐÄ-ÿ(?> 4±0Fõàéh¾è»74GõŒüÿþ^”·R_ò\†¿ñQ¾¨ùeÛã­à ´C§DÔœ€¦¿ç—†ø'C)G~61»~¢8KúS»åµŒzpÕq3ã³²Q9‹÷Qʜ忞m?fûÍ"ÒÇÎÛ5›€¦ôNc*î<ÐŒ|ªj?4M]‚±ò_<ö?)™¨¾K–=HOËŽïYåEc«¾›F'‘ßødT¿\&óúW )Ø)8W¢þX_–ýCBñ¼+ÍR·Ð>;ÃÓ‘­:P°€úfßÍå£4iñ»rœ9@“ürzÌÿ)Ðt‹ XüQ¾_#N{£~4‡>Ùú Ô}âC#â³Rç£áàKÿ{-v6àÓ-nE¹þÉ5ÝegQÀ?®yØ®O|úZÒÚÀ§Ü—±Ÿñü3Ùl—þ߀Ov:6Œöß+ÞÿÍðwßE ›¾³—ùBÉ Àûž²°OüƒÙÁsjÈ¿—J£ù9ÀçsÍ=™€ÆN·âJÿRÙ¥oeà›pN{h½¼Vêп tÎr‹.ðð/2_'ÿÚ7—Z„ö^àIgþU8s”ª'e„“b„òS*LÛr|꽦gWQÝ~{à‹œc¾&ó>‡m&J åYM ÕEq†ì—Fþõù?\B~bGëyŸ¾DõZ½ÙyIðÙí¶A'÷"[÷áß[”Ïa3Œ¯7àƒ§‹ó9#KÙ#Jý€?µ¿'Îçòû…{én|Êé*µXÐ6üï½£  ‰˜¾u ÚÂÇ{ö‡³6rÀP6´®r›Yk }$½@óÀiЦì»Xò´¯>û㢴ÝgÙÆJ @û¶êcSÐVQW7/m0°uøUÚ¸øCZÑs -¢zìÍE_ÐöVa;;ñ´´n²ìimÉÍ¿D@ëOÓ“{5å ÍÁÓ.Ù6 Ú,•2Wjž‚ö.mÇúž³ ­tV^ç‚h+Ÿz™»!Zÿ³O›è€Ö´Ò œ«®@x2*DÏþ´ Í!ßS€ÖÿÁŸtÅùñ¹Ó½.Ås~呜ö§¾(ýÈ´Þ¬ŸU×·­©ƒg»²Ã{ï !þd¼sk‡ò:6ýôòßS̽2,´ú…zG›öÊÜ6S”ïàöÈå/‘Ù¬µ7(Ÿã7â#‘ÿvQ" Åëáç"}Aø3šXþÑ8hŸËOfßEþC­¶Ç~@v¸!ù—š÷;‘î(Žúò,¨±$Ë1éXzŒâ´kÆTWþ÷½b;?­y»½ß.d#çÙÊž·Tÿ *²í›ç>%£ÿ>÷LtåÕGcoåÄ{¨>¾F™’ ½sþt9Ý3ò¿^ÑxÀ› ½S.n¼ý#çÁtÿÈÉNÛÑ}´çèY£Þ£8®q5ðgê¬v;þÖêà/äW<:G¼O•»Ë àOˆtŸì¼Ý`Q1µð6©‚]q©€×§\ý‰ðã¤Å6u™<ÀΧµÜDöM’ú[WÀÇW+D]øƒð‚-ü†Ì%À‡<4JÙ@øð§t ñ1|¨—ìó ú€÷·}I ”¼''W¾ÁÀ3Êe¼³eŽß*_óÚ~à àcè“+Wø?…h(þ0}Rað—å”~òj>b`´ªÓŸÇG¸ú÷s~êÙ[ºóãh=@{'ó6À_²xÒ!²ð ³9„­ÈtùŠð+h^ôçÓFdÏ$œÔ@ù™ñÈ*ÔÞÏg¯`B1²£Dÿs¿œtÈ3á¨;œƒ#Ò%Tì@xïzU`hßY´ÏšÇgÎðn;ï:Žpò®…3Æî¨ßU—]É€§¬(F~ÍxÙ_=Û@Óz?¿÷êÐÓá&ÏϤv³¡}ûfþhÉx¿ a¦L>Çžò÷I“⣢J *hý”ÉÓ¬~0™ÒK]ývL–BÿÈ{¬‚ÉÇ}¡çKÖÁäÝÇ#!?ß÷_˜uÿŠöW*‹Õÿ“Éûšö-0éºMyæ¬v°YLúÚ¿|ìg뤙^äG·äùI”ÿàÕn+‰`Òö³‰p õ¯@Šj¿åƒò|øAè*'˜¼=c>öÝÙ¯‘&-')ñ`2Rð¾ õµ·òå ´žïð9¥4Ô4—ê‚·ûÉÒnÐØ±Ty±~pK<®2]€›sl.ðÔÜ<¯}JY h(ßòM˜¦nˆÝ™qŠpm9êÜÉ€[<§MÚÈÜ´ î`{ à~+_(kÚ¸±R€Y%àúã’ŒwUƒÆÞlÌÉ?^€+™ÛöRpÏVèÏQœê½ÿÎéçÆööa{PDãþ2£þS(î¥çF³ €« ªw&è.C²@ èZ·Ê)“CçûŠd'ÐþŃ»Ê®]:@¨¸ÖI£Þ½€´Õ<Å\c—ü*s+àZÜFBò—áävBp߻ދô¡}ÅùÑñi\iLØ—€kJ4 òì¼Ä¡ ¸WoS—&²Q=Î8—W‹èü«þý‘¸{ -Bù òû¢“öØ èMÿ}¿{Ðßsê>{vè ª§?èj½9àdXÌU ·ì× z[JËøí È2¢ÕÈh¾”aúè³ê«z×€þq[åÚ *òÓ%3^‰ü.[es½ò@¡š¯µÊH:¨†ÖŸÔVn(½å‘ï§Þ·h߯Cà yäÇEß(žù jJz<üM½¶]ú§ÀL0]úç+DÁ ô÷jõã§•Ó9Èïd!u ÙºÝæßÕÑy5‰çj-hß©¾É`”/Û×ÓOþ†ü:I0Õõ|å~´.òÇ´©`}è}ÝÖbs(ߎî+jEÆh?NO³éʯôè¤í”Ô,sù¡ýß…ÖVÑz—é dw$|n@ÖRÜöÅЧÞìùç›dœ}°ôÖê5¢ÇÍÿú*è€zýÉ›Yb(Î;›ýr””ÇÁXÁÏ.¨î+Ã4ôsx+ú‰Uyèý;WU§Pß;|ŸÊ½*Aý+ ±75F÷ïŸ×0ÉŸ»·KáD­Ñ,û L^»aòNü“j¯„›Ëõ`ÒºÎgQ’‚Æ«RÂoçÁä‹GÒÉïÞÿT <•ƒpÅ_çFƒ˜Tàœoð³Ùge¬Í_Ö‘ˆÃ ûî@àj/“'öíB8 ˜ °ñÛ ü0ü™GªD~¾”5`“ºe}ÖÙ`òá„câØ‘ÕðÝ(>ù.nxLš¿`Åîm‚âÜÛ*¾…pðÅ}z®4¡³ >æÈ¿‹ó?[t¾;@oxJÕÙ?õý¤+ZÿÑ4|¢áz¦zM³5w0˜™P}í7·ñQ.–7sâçâPŽ©[{‚ÎG´îL“á=9ùñ¨nž°Èg¨¾Á|¯ç­þèy +Ìá€æ­*Z™‘¿ß{Ë ;P¾#?ïÔ“7êí&¨îúŽ/GDkŽÍ,xFõê™Ê–îBû®Ù<Cù]×=Ћð¿ÁÞóϾóèÜ]î Ë;·Ž&¹Öæ¿ïe,îÕ]² °d}Źçù€•s¶Öw8XÉдù;Ê€•‘ 8¤_XÛ‘Ù£J»Ï/ÞÌþ!¨-™Jv\ì®ßï ÷£yÿÓDÝÝ ¶‘îò#þ `9T寖WœWÉ×ùIoõᵿµ’¶ B ¶òá‚&nԾ钣?  óy;èµ±œýj>€Ýó\ ÜRAmVÃŲÂÔúDí{vX–Å›™Í#­ß¨ Àž,׋æ À² ª¶w ¿j§/¿¤–ù¹Víö# ¶Õ[Ó÷Ô‡uÇÕ@í[÷m³I´ßtֳ˰ü”×ø;K(SËŽ“h~Ö¿¢ÔÔ [ΉڃZ÷Á¯ÅP½¥:ÚÆ)€Ý¡éJ}ÕXÎ+Eº±€ezqõy°<¨­¯æ(صMÍÌ„Ÿ@­KòÆW±Ï 6-HÒ]sµ™Õ¹óV|h_×h_¨ÍïûÙûù6¨­^²L2xÖ5Å„% Q~¹Ç/^AçÖ_h}ŒúôßÿÄ ô%9£´2tϦꮱu´}|ÎÔ‹þè¿|Uø>ü(º2AAãoŠnÍ’IG4™¾ÜÑÞÙö‹¦ZTøý§ntJì<ÐÇ")*·~ñuóíAcº6§áa Oè¶Ä–þúŒú§Ô‚,?2ýá:§Ôúç ½é&ûñR„¿ ùç¤>MRÕªãïý·ñÙ¯¹ŸÑXrbâïC´Ÿtý¼~.ÐGtLò¤F>쎭ë¶Bë‘ß·<{>úzÖßGíû˜òJ‹ù‹K8Z†òÙµÖ0Œæ›z¹‹ÿ«ã²:Ù|Š[œÏ§uÕ!’ÃaNDùÎóv°%£º7CëßƆÈÊ-j‹’Qœ«‰fß»‘çgÊ*'Ñ9¾×—‘ÿŸV|§ÐzýE»u²›—dqïǶnõŸGëâ½³ˆ'Òçþq]4GýöðÛøå•â¯Z ôy·ìæÿÞÿ0ÐiÍ9Žæ*柃ñÿäa0¾`óÅôÖ0>ÇV¶‚)cÿÒÛ²M`ª9Yk Æ©³Â—âÁønåxZ>',y>ï>‹là¡W6À84Î/÷æ<ßù¢ôIŒÃsŠ¿œžã 5­º0öNùÃýŒýôÔú[;À8ê[Í¥—‘%Ê'•”ƒqLÎP31ŒcUIÎO×ÀøöÛÃÁsy`çoΗ‚·¯zã+Áøª½‚0ç&Å]d‘ãêoR}…Áø”àÅŽ÷u`œtñö]‹½`œ˜{cWŸ:ÿþQQÉ :çŰ¿Í Æ©J اÛÀøæQzøpg7:\@ñ3·«G¢óšñ³Ž(/Ñ‚`/J,JH@–ÏJm¬ùSIJ| Æw[ưÅÏÀ8zW%ñøN0¾ó¡Rt×ò#Xpº*í—ö·ß<‚úëxs&Æa3ΟÞ£õÁ–¡t TÆ+Œ¯?¾ôBõã²ËÝ# ¼`|1vo#ÒáÆ!¬+6¿Q~‰£u væ¿÷ïI€Ú‘:Žáßü ìüÝÇTÔN>öf5SÓTtÿ̰y·š]IÁCµÚ38²ªŽÏßÀø¹ä¢ÁR€ÌœL÷·¯j7p½cPsøj‰›@µÞxTŸ@Ùds³p"@S2¿;ý¶žz»Õ÷!š'Ìõ=÷§à–’·Ä÷ ˆû¥OÕ¹ˆçêï‚ënïZ?aP'V~û>¨|VþSýé~þu ž:rñT¬·‰Þ€~Êížµ…%!î½õа.+~[2p¿bßšó:A€»“fe÷òoFšÈÿÁ|§Ç/¨Õ`^ìÕol(¢\ïpVGÿšbEWj@#òœá––BЈ¢•…öŠÆéLÙg¿@cÕ>”)4ÌMÎ(óûƒ†·î÷jÆÐ80­à4Þ ê÷J„æ£@½Õ&AÐP¦‡V:«‚Æú‰'2( Áµñe–hpГhò> ±Ñ¯*vp½dVT9êÛÃXŒH¡ îîÿ•q;+¨«Wì}*³ý|¾¬Ú_ êJyðÑfÔ˺%ö¾uÞC;ïºÉ‚Ú´_Ôq[=P¹AçõêÒ:N©2PœÜ>¼ê±÷×ßšVõtž#{nÝõöæw;“@ýbÇGÃC î¿Ãî¥V ¨³O¤rA}纜CN^ ñàzsþP§\ëñõ¬ k í2¨Û5¾9› ê&Ëa/ZxЯšsµ!®“ë{8òÑîsr›”¨ÏpG¯Äƒú.ƒuÖ*îˆ;+yØî¨k^^ª@7Ï.¿Û‰yÞÍ\8dj êÅ´ 1ÿPãÈ+n N —³g½ êë¾åd¿Qµ—Ùfmf_Pïõå­2ÀýcÁ\ÆC p/Õôyç=ëµ ¼àþYè„‘Õ¸ºÖª³ø÷Wœ_ _ñ-îivÃsá~Ñ•,p_ˆy:˜ˆvII’Êìà>ôW¥.òß÷%Ð îß×Ýÿ”ƒ<øi€«ù‰:¸|—­f3Àsa–¡ã(ßkUù…âþ„Xï½¾hÜÿ2%ε ܇+äö ÷ÎU¢¶žß9¬ž îŒ)~‚û öèß÷’½¿Ýu6Üû:k\Ô ÑnÉyÏfMÌ«|4âÄ.ôG´÷Ƹ½ÎçUQ¾ûcR™¯=¢ýV¿šwMèß´$´o¸µÊŒ¯\@ûI;Ñ&wÔ:f†Ï…ª¯)Ÿÿ&TÙŠÄÐϸܑsòŸÐßÈ‘ÊÆ¸V㸴,‹ñu½žª ¾»˜¼‘§§Ú¯–z‹£Žž4ž×ÄjÔ#_÷|j û†zRÏÎ.A©lò7ßÜ'M¬ßÚÿÃï¢Ënîm^AÍÁgÀâÙ¿×-ƒEqÊ1Õ°hŠ®` ¬‹ñ>ãîŒN°øLc콦I§kñ¼[¤»› –"›b*ƒÅïéôþ‚ƒ`É‘—‘¦¿,¾³ý8Æ:sùÜ;€¥°צ \3×»kÀ¢íœÅïº[`ɸ9ŒâÀ’ù·ßµx°\·êwdG,X¬¦Ùž‘¶ÁµIÌâk;°S~SŠý¹ÅOa)¶ ò`É+duô Úÿ-¶ÍÂóo.·‚EoŒêË`´gP?ü,ÙvúÈý‹¥§òÁR€á†xaXJ¾£ÄÔ对cs¯ÀâW‘äÅJ°u·Ô9ì–\Lñ”COÀRÉtíD€âh+9 zï†7oÛ†ö<‡¼™Àrýñ1ÛÙu`)(²»¸üXü÷êGœÌCl¼ÆsZnVX¬i'¸á¹šûC¬÷t±àíõÿò~п~ß°ä§Ë^y –|­;_QG¼àâi–RëJ×óÈÅ×ýfCÉ møßóIÛ®Ÿµ‚Õ´ ²?<0m±ãŸBû—A[¡ÿ'y´U¦-F@[iN:? ´ª–ˆf'$AëÛƒþSƒr •M8Ò±ŒúëŒ+´oo­Õ1ÁÚ+—@[ÈZ;@À´z_9_i™mîÓêF¿CAËfÅûÛthmì{~´öÝzà÷u ´Ætžòåuƒ–ÇPŸëFКÿ°9Ç¥Õ'1EIÐÜ®m¦ZwïÖ’~m¶‹­Š Í²5ïº=ã¨$>­óžö_öè‚VÓë­LÌ@+S>¬ˆg3huTùrž»Znßv%[7ƒVŽr]âh5›v‡Ì•‚Ö Këï@Ë_’²gîhi¯µìþ Z†?çÔ†Pï_.âéÌ£zOÖ;oꮌ3æÍµš¥ZåN;íM@+úÐxPóYÐò ´iõ´¾dª5>ª­»Ó2P΄õ~¾Z _g=Aëº×¯OŠ eÿÔßœZü±O‡°‚ÖȹÞþßÝ@ñ~ÙÍ/nC§%^ PBÜÂÇ5€â³ Ööמ¬ÆZÕ(פ$"H¨—úé>ÿ! Ðd íÅsÉý Òa@¡9Ú;º(;hi­@ñ8?]ø£ýÓxÏ\:”]Ï¿Ö; ü>3¡Ì”Ý©ùwou¡½Z¿í_ıovþ “Úÿ•¨“Áóô=h·ïÏP¼ÍPö2]¼àê…ú#Ëìd Z.)@i¾TŒ?QdÏþ(;û¢Ñ¡~TÌÃÓßæU²K#ž?vd1ŠsÄã=’[Ð铱7ÑþÙráÄëyy`£P‚Vý1Ïà?iuÄÿ(ð3êíNÚ þë<æõàÇãÉß(ëÅÙª€âÚѪšŒö[-_ÇF»\^ŽÈWˆûrd2PöÜ\}߀ú³p“ý{h,Ç"·nå ƒ@9¸ñZÉFÄ7àqæúÔ?ýë{;Æcâqøõ (Û× 3å ƒi‹ü°–h˜6°Ui«-ƒé˘c‚ý©`ú!S¾¼ñ0˜ÎþÒ&|3Ói?Éå÷*`úué¡ïµ80êÜ<ðÌ×V~÷ÉïÚGU&˜±ÙP®FÑÁôož™–+˜ Ž Ûu Lçmü—ºÔÁt%ùª×°%˜É ¾Á{0Sâ?b³ÌÈ -' ™ˆíK…û`f¤™?by÷Wæù¸ªÀÌ8@؉ðÌ]¼‚{·ƒ™ÎwNGc/ôÓz*ŒF3ùæ=¿šÑ²uwëF0“äªuðñ3ß5þk;ÀLCËaãiôÃ5qGâ:úù¶BŸ‘3•õÞG³Í×Þ—93W‚sJ?˜©¥'ì3ý?©úxî8UÞfzÅj¯ ÄÁôæ<—¬¥X/ƒÃ`oÀ03[>ãt~ã‰Z9§™ô™ªÃ=V`&¾ýÊÌdÓ™2ñÜ„^jøãe$&+Ö`'–ïÚ÷€™¡™sïÒ)0sè»=²„q«£Ç˜„Ae׿¿kƒÊ¶ÃÉãk¿AåhœV5ATÌvÔpì*!"ߪT\ö³ýå]zÕ;“9P~U~ÿh±(ÏYûɃr»>ç&PÙ¨¶t½£T8¿Ž™Ÿ#Š|§í MPžœ`šû*›ÃÏ¥-ú‚²“hk´6(;Û¾çå³Ú/·_YÖU‹Þ |˜™¢åúT6±Cªª(»*&r¶«‚²¢á‹”Û²›ZAT´X®¼ywTT|O7³Üå9uGkr:(ŸaWØVoÊ ¸×ÔÓ@ùá¾ ÐìPþf!ž Ê'x‰ÆMƒòcµQ¹Pþì´î¾ÅuPÎ}ðë Ç)P>OX}ÔÐÊFïLõ_T2„½ôMÇõÀÆÎÀú|ôÃw·I˜TøÂ5x>σòH†;É”ïž •­ÀóðC?þXT€r\Þè£{@yÂIRõ¹?(Œ¿É¿$*,?"Õú@yëã"Õ¶÷—Œ¢ ”w¼kÛõ@YéÚÜìý“ <p"rœ(yÿ®S=PÒÏL*å,¥°;Vyñ9PЕހ†Pîü(÷̾”üýò÷2€’kƱÔ4 ”,FµŒ1 älyÿX (IUŒ_oYìí>øÏ?æ‚v /;¡^Q¨àÛ Æ‹oÔãÛ ”ÇÛZ7®}:6“‹RîÓšPûüBJ§uþ*òÄᯗošå敦‡×€’æV_¸ˆ|ð@S(Dñ¥?MßÎ{ (™3ùOY€’í2xèPnß«nqD<[ö?3>ŽzoÛ5«‚’¼a³ ò_†ÍÊjó(Pn,û›3.íeX‡øŠ6 bžâ‘‚ò–ï°@m,â›’­Ï:ˆ~úš·ÝAžÍ²ü`ùë,ú©3 ÿ7´ßOE¥‚Ý'Ì;ãQme!òWÞµ•®;Ðÿ±ÒXäÃLá½pÄÑŸÊÐPˆþ½^ ªåzýÀ‡w›QºueÄ—cœí,wı>_O„ YƒÉàß÷iºA´°Å²LF~N“÷!ìw½YP6³^+ “ò«ÛßS¾VÏ8V“_>¤¾=j`2é70Ñh¦› -:ƒMÁäwJÍîE<hà©©Þ ¦ÂqO6{‚É—ëùÑæÆ`Ò­Ö˜ÿ— &¯6ÿÍ“·'2)JÀ¤oÓ{9˜Ô‰s ¾>é>l“ÊûJÂA½ˆ«„yKèI0ù©rvoå0ùÛ—½cÏu0YΔ$®€É6‘äÄ™[ê<å¦ëسŽÉBß Œ÷ç»src"˜,®’è¸ÓA÷>³ÝAœë«}èã-°`[f9at ,¤»«®~Âø/ü8cÖÀÂ"¯HE=åSi¥ð`¡“g{;«,vð‹»ÜÞN!n«8gn =O6¨ ¶"ÖÃ8O뽜? ˆx’ oݯ êö¼QR&XλýF÷EvÕ¦œÅõ{·‡mM`!!Ù£¨æļ°ýc`a;~ÊÊÙ,L¯œ"Êà~Ž„è[Ô÷xØnò}™vV€ïU;.AÌ'°ç5±‰ ‡Š=Ž èí|­Ì¿z8àfˆõ ܨvü˜ÿ¼dnµñ¨>b;mà ‚þ+sêPKú÷÷Ü!P3o•ú) jñ>^ä;µøéLÇøŸ –j%Né5ˇ@í²Úü•Ò÷ vÒhÜjçýA¯â ¨å)ʘ5¡ÞMÎYEPs›qõa5Íö”¢ýq vnca¨Y/3ð,¬‚êÇ7© Ú±fÙyTWäÔ[Ÿà9AzöJr¨qYmØÂðÔ zFwÏL‚š có»[º zåÔcb°2¨í¿\¿·@í -!‹KÔ>µE.¤‚šê ǪñVPòˆ@ÿ–¢Œí ¦Ã~šxOÔô×ηj'ƒj«ûã—ïAõ«Ýw—æ[ º¤ª4>‡y=o[¹gj¦‘]¯ @M@,KðS¨N‘;7ƒ_Ëtù!;Ì£©i›`.¨)Ðr:·WêÓÏ‘ÎÏAíèÍ6V.¬“œý¯óhÏ4•˜X‡õÜ5–võ *¨í5eipœÅ¼ž<Ú¹.T'.l¿²†úwº)vgAM¾Cͦ8T÷Æ.ľ[Í~^|àÞ= ŽŸìù½P Ô±?°P‡rÜÞ\Jêigkëm Ž¾2ÊÜe‚ç´åó[ð|ë„qË.\sÕ^:s¨}§j£÷|Dý[S+ ìidŠê ŸðÑ8G ~Íî^Hêìæ9KåP ¾sËïàäêëž›¿õÕ«톷(/OW ÿ—b{%g‘÷^ïpÒßÌÔÖu¬Þž@m×2m4¶j/ñü®.ä…MÍ÷ê1^û~÷˜bŒSP} ¨#¢æö È»߇?Àx#ƒ®ó™£@íôÎ4D{÷\ó÷@í¶¿#É} ã!Þ@¾{[étó}÷‹!P¨ý[˜z¬µëy¥žÏÄÇÄăy¾]H ƸýZÎ _vϽ£†|6ä¨e{o=Ö3ÙÙêjP‡Ç?<×Ç|åªîê#/,ì^wyìÝ'ÍWåˆ'®s¼ ýï¬ÓÚ|ýT[¿þ„y¾÷ –b]ÞzŸòÍÆçÁðP{(>/Ìþ}>ì{07·]ØÅâ æT©‹ ëÁÜf‘±•yHýS8oG˜k8êdì?æÄ-1=O΀ٜˆ¾¸Îm“9JÖó`öm¯Ã7o0·w,ñãló-s×oU&‚¹fÓ©€~0×®õ¯/]³Y¯°20ëóÛ«jf#¥jM‹8ö,Mí®ûfµzYé‰`6ï¼Mjä ˜Õ”i³U€Ùmãæv#œN+*zàüù›<¿¹°ÌU¾wuísUË%J.˜›æÇõ ƒ¹U¼ô@˜ëÄDâ½5·éý!KosrÏù¯ïBø žkú`öFzZvã0·{“’u±̹Õ2êÀ|]†h²U7˜}Øø74çíW– 9›Ÿ`~ÛUãæ«ÀÜàNTâR9˜ȃ]rÀÜñL|ã "˜ëmÎÞðø˜³ŸÚÄüÏ•9‰ƒ?÷ƒ9­ÅSí›ÖEEm&Ê Ì-¶Ò³Ž‚YnÛª|’;˜‹;tF(‚Y–ÄšŸ=ÎÍÎ{Õš‰ùÙ¨?µÆ×ÈùgžúJuPàVnc•ù•Šë­Ú °Þ*ööòmša»Z8AÁpž§Ðvô~, Oñ€Âåãnì_ u¹µ>:|G–B å1È¿¥3»€|Ú¾xþç: ßkï#áU_`œ ~ø䫪&3ý±~®iû‡÷f€OôÞG×@þ·ß‡/æ;å¢.f7 ò3Ö·+Äç°ÞÑ›a=SÜïÑ„PÏ÷h$Î)ò³ZÞªcw@Á( uiÈ{ýõýYˆuJó®´;4‡¯cY4·Œsj@sÙTqF0hÛ‡9ÎhJmÛ¤ÓÖ)1 9ùùÎ`жZu©1MqyéË,/Мécg¯m‡DàÌÕzôwROhNbª¶;:æ¡öôJ#3ž¿ŸŽTUWWí3І®UÇ£±>ƒç€fȱËþ$Ð ,n¦ñƒ~æ€:Ð ¯Jx_6?74Óͦ«lœèï{¾ h[ä\³;®ÍÞ5‹Å(ùŸÿ°)¥ý@£œÎá̰ÂuÀ†z3Üwux%;zïÝÉ?ÑÍ~ƾÐ_@Û|Uþ oâNy¨ d´õY³M§PÎøß?À 4kvQÑRÔÓè :» ë°ÅŒÌ¯õRH;d° ã/ÞÎÁº©ôïû»ã1ñïÑï¼³Í.Lc…U·ô£´ûf’4÷ݾӳOÑOa7ÇnÄm›¶'¢ŽúïE¾¼QûšÂ:Ì»öQ…8Ö)$–.åfþû»»™ûqŽä»ûÀìÒÃÕïW?å+¦u¿̶öOÑ ÁÌG\Ÿýª2˜é}óÏSi_…™7ïÁ4ÚháR³+˜ž]ÛGÄyÌ,µ¦äãoä‹L•#9û~€ÙIŽž]že`ïÙK½ifÊgÿ|Ó``Ù„ÒÎÝÑì4˜F\ÿURLUŠKšÕSÁ4>7¯÷®-˜ª±<7=kæòÞ‡»Šp¾ä_zõççÅÜÒ¨áT0£®\\Py„RÛnç¼$âp¨h¿f¡ýñ¹f;•C…{ƒYZ‹p7òç…'œ­%`zÇߎÁLL­¨± ¸o7+3r½ýžúý¦ž fB·¸¹ÁÔ¡oÿÏ7U¾Ÿy¸Ø Ìü]YEž€™³ØUƒ)0Û•P»ñ˜í{ÜL_ ÁúDUÚÚõó¾oqL‚`ºV`a`Ë f9;O‹€YÒ‹!˯`»-øÆ_ŒÇÛ›pùH0Ö»Î×û˜ŠÝò,“Ï6rȃNÊ=¢Á£ }{â_cÒ㇮>ŸyÒGEç®tuú÷š =ÖKÙΑ ÒMé2,\Í Ã¶'QÌj¤w„6ÜŒié”/b[RúAzä’ß…Ü:öz{çB ž;ŽåFWAÚö§°Ö-^ÜoIªwiÒšlÿ‰s õÔ'NÉ! ¤ èâbS@Z!èäö×ÏAZ¯x÷î·h·£ýe.?H+_{Qa©R‹Ý±×ûN‚?wCùZî>3èsìH''ÿ.‘éóÎŽ£G„@Z¥ö íú*Kc`%ºTõÏ'Sûˆ }Zk£’ã#Ö:=º·óHE冘1ž”ý­W­ Í°Ý ”Ú@F@­û÷@H3áèá)ÓÂSõ 5î&]^* Ò͵K€ô‰{{ÜC‡±ºmÂXHù& zìÁó‚'í×õ~tŸۊÛ@:u“rœ"Hï“’!™ètœÃóeþ íí¿Ï^¤Ùö¨ç Ùƒ´<Ÿ: Ò…«l—*@ògL¯’<➨¿×Š}Ì„þþdüð,÷5ìgÞo<ú¡å.ögt¶c›-úùÝŒ¯Ì ~’¼Þ¤ h³WNGM]k¹ã¼Ðt6þª\ G»”ßo‹úPONèêq ~¼ÑÝùû¯éSì×¾ÛÅžj¨F)äÒõùTœüÆéuÐÄ”ÇojߚĒP¥ò… ¹ådžÀRâß÷»ŸKþ ¦…ãõ`ñ÷ÏŸkŽ`©ydg¶pXrçNUÀR}º*o–,µ¨NA—”q.up%4î+ÃÒ`þ‚3r°dX‚XàZ Xš^´+7¡€¥àø›7<`©dÄ\(i ¿o³¤ûã\ÙÕÔ‘‚s(URÍ-æ Xœñeý50‰sÞ@Ìʉ°ˆ´û˜‡ýÓßçÍä’À¼ã†xT?'˜÷Ž[mñÆyræö¹´ì `©fm¥p+ñŠÕ<²K.¢£ÓÌ{ÄûÙ^Z»,YT¾Š>K§s­‡eÁR§ªÓý,X$ë?qÀ9õaß…z°ÜÈSžÆ‡ó÷熩߾˜7Nj戛â`Þuì»ÙŸXZò6ð‹ƒÄG±°Í–š µwËíKiËèïè‡ð9Ià;•×Þ” CÒ¤}Ù þÛÎgÿ“·v%rî$ˆìJ×Ë(O‘óƒÛþ$Å€ÈÍŒ„°•~U·=´‡è "»§%ñÿ¹¨ñ¹n‘.æ#r2ÇAèê~/éÞ{ )üãÂ9ß iznNØqÙùþæàЉM”Á½@¼ýÛãl ^‘ +µÍ$2»°$ƒÄ¶QƒÈjfÎ4V ú& ¢^µ%§©X‡3RŠ­- 9*ýL~Æ$:æoEíæ¡¢+IZ'¢@xHχ›ü$ô?Ý*ÉxŽ~”š§,@bG°ÿ©. ^¨VüÛý…ä=;_â[ÄõuyÜ@2äÅú›UˆÝþýOÚ{¸«š›‹¼&#•ýt‘DQÿë}¡z‹ô]qù¾çH½w%>õßÔ¬ —bCúñþËÿûœD ©\Ëho`ÅûÖŸeáù å(Ÿ,ËÐ4>ý ]þPÍ¡³'êÐB,o¾cj:÷'©‹‘Ø/…äöÙƒ=Ðnz°jÖ>Â{[)VË…~d?Øå?õľ°¶»›ï0ÊíÛèbߦ›CæÏˆÚ´Þ³§œx>³É/t?öƒ_TÊÒªÇÖoª_VZ´Y¡ wí €6XÂájd ´¥ÕÍ÷l2¶¢þJß±hq„£g¶ÂxY¹'°¯“oÐpþ²hÚ¹7]Æ~)ã•ìXÊM* \w0¡ƒŠ®_€¦9ùâ–Ö  }t,àAÿÔuûö Ðôl"C—vÞð'Õëâ:w¾Ê h/‚/Wß‚ø&5l‘çÛ~\ŸšVá¢ÓFÌçô5‡Ë?p}ƒß$·hô€­±‰ø\8¼YæLE1ö§÷“ü"{¦|Ü:/Qëš±¡ò öŠA”Kz˜O>;•’4}†–CüÈÿ˾}#a_¹<TwûB>C¦·_€`ÿßç±@ý¥Ó¦ƒ@ è64´VÁ[¾ØÅö=l+¼ö´R!̤wæ1½{eðžg{ó)àûªÝ,o€D”7ñ#êùŸÑIâÂÞ(© o# Pã¾ö©; ?õ;3mÏ€@^6:ºûXžô÷?{,ƒÕ7ïMˇQ+·ŸË„­ ÏÏ‚åý§ý"ÛÚÀ2ñ¯Ù×/÷Àb•s}ðd Xä$°ÍéA¢Q›˜š‹qn©È¾ñÂÁ®Ç½£/àV"#á|÷wÔH!Ç®f­75@8²nêõƒ]ˆc’(Ú“–‹,%¿ßËóR™[€°ã‰’D$ú­ÎK¹'‹y—ÙÜ)HËÀFÿ餇øa\O4ù¼k(nšq eg{°ˆù‰ænën± rÎ åGP;}±øñõ…‹ïÙ@â°ôl1ÄÖNÖÉ -õ'+@¬k™Âx"Y«Ûý¬:@øì‡¡x7f}IÅ~L<{W½† ˆ›Ñ| è –%xÈåå¯&k VšÒôúÒ,ˆsÞh.‰Ñgê¯Ì2‘SÔ-~=ñ†¼ü»A|øÜÅßwÝA¯ÕÂH¬ ÄK̬ 6,ƒø5E¯QÄ“2d¡í0¢¿Ÿ)”°óD¤ —“[P³þ=ŸÔPþÖ¼¼„238íŽ+Psv鞪ùÔÛΑώ.ãÚ½Û«ù‡7fæâÚ5 CIöWœs¨óOÍ¥L²€–““>¼ ¨É?e,´¤P^yb,’Ô”ú“Ý)@MÒùÚ7> ÔÆ×ý²€nÀzøqn!Ð7/Jõhû}}éA‹'´žõk_~ºn@Šô†c@ë¤æèMÞ:9úD¼Š,Ð÷\îdߊýiþû¥—½@½P-ó0ûÊÖ¬á5_ Þe¹Ì&Œñˆókïój!í Û1s ¦™ˆÏu­b>‘¹ k›®:*í„2Õ(—c¨wVý‡'·’µÌ€:°ƒvqùó‰‡Áá¥R ›=›K}…öyáò f_ì,ÔujÁqŠ·ÜPóg¸ç€Z½¼0­}òü‰ªŒØç>ñXõûùë~êÙ® &f)EùE ‹gÎü’@'}÷êÎúgßóaí÷$æjÛfô½¿ÎðýÄ~6:Ÿ8ô“ĉ «œ—@ì_Û¦ÆqˆoÙþøá½&þ˜>ÎÃÞÄ‘ãU˜8Kª&±gˆÞ²vïc…eçl÷¿òv1–B!sAù‘ .„†êGqþö/Z»>ßW ï5YâG‡ªå€-@ü töBf.Ε0².áUèt3îËúÄþ „Lÿ…#2ÈS©•»½Û9­Lb‚îñ3^½~4Ħ8ÞAœÖ&œ2¾@üÄxeFø5¿ˆšþ>Ä)·=Ã@\³ï®ößÄÁOO}3#{Í&gÄåù²[Ì* '›ÿ½ObõGF&‡ØsÓ•„€øNˆsPQˆí¡ÛýÃü€põhŒd1ò§ñÃÆ †'ínšÉ ÖaËN9·"Œß.é~è1¿öÒƒ,ñ “íåž. Þ¸õíx&»,êrï)qåY°¤Æ™ç 5ä¬â÷Œ#Ñ/C€@[ù¸_ãÇo×>Š‚YðÍò? ËŸŽ¹Œõq†©†{u;ðüÿý¹ÀãøŽxð¡ð¿¿Rð1®igö(/à~e% ¿íp«¦G[ÎvK+—žšïYà>”]°eG °rñxqÌœ–e IË^À%gÓ¼NÎKRnÓ Àc#}àÎiEà>¼=u¨ Xuo{÷¼ xúµý%ωæ?·üïRsø|¤(ð;rP…ï¢ÜzcL ¤oòFsM1ߨŢáÀàWËOJ¦‰9/¾K߀Û)Î(þ­-p‡UÍ”ðöÀóÒ“fÒÀQßøKåÈ>àèY1~Ùrx¸Š÷R˜»Mí€rØà§gë‚Â@àâýìóÉÀ)wx éb°p_»#£"ëžô}jò{܃Ÿ#󔇭ºØÂÉmÀ¹câ½ä^ö3¹oÀq¯þÒ³'àŒÉíÍò]n­AV/XÏäÅr¸¸8)Ýw ×íß‘éNÀ•˜yÌqÜ ¸¤Ï÷e/áÏŸq#}àQ?ÿ•¡äð½ok µ~÷“Ç‚¾È¯ú÷i)œo5þ}?!ηʭI?ªÚúôOÉ  ’Òw­˜5ÕÆÒ9iM¨Vòq”di ~86ßüá Ð3ú¯Åè …ÖxŒÛ èW]öIxUý9ϱëñè÷ß¶ @•]8»f¼¨ŠoöHÒpÎ;%p–¿ï%Ðù·ý8…}#ßµÇLžA@íÔØä}héFäõk8/~q|ò9ë&Ð2%>½XýØò€m\ò6 ¿]h–.ìšÓ)okÑh ÊwÛ& OËšµMï|TǨí']·Õ⻩þ³—@5 hw~{¨›ÝÖykÿËki”9M û½W7MÖmìiSò¿¾T Ó°(öy%žu ÿþÎâé™·hQÓ|öœ†Ø—݈q5xTÂr¨Yò,ù™ôæ¤0 no;­‡þÕÌÂy×ôò×ïÅš8ïëOPêî9RÎåTí¥³e_€ªUÔ/³^ãu|*%´ï)¦û'a½–x34Ó€6ÏA¹v-èãÜϧ]€Ê¤³’A­Ò¿wQ³é)dþª¼‘&ö2qyX&éÚxÉ ŸN¨ËI> Iù}ÞŠ$Yuˆ«¢H~ݘ¢D,×_”/«žj÷ÄY ùLð*øì’ƒj‡G“uÕ}åäu÷YÙÕ1 IñìÎ|‹|9òáÃÝ^ ~_™”Àx̃&é@Ó[{õˆ‹2[/¦d ï6½g×\Dyó¥½F@tJª¼Ö" $ÑKæÞ\y@RM=±û<âS§Ute_’ë$AeìÇÛF®¢ž¶Fùý/+@ lzº HÛ>ˆr~áÿ‰> w8ûlöÏ^þêóÌ$$0wBî9òÍãTŒÛõ$´11ˆÑ·=úFÎÉʽ¤«ð ´Ò´?Éðœ«Úµ 9EÎ7^m’ZvÙä—@ìæˆzºO õCEÕ‹*DKü[#$ï‹›s°ô\E;9 ú) žÅõŽò}7~ãóÆnÂzkà) :ßO±Ï ’3}#GZ?Xÿ{€>Äÿºz8Tó.Æäƒ@y[§Þ<¨ù,\ï·þyµP !*°–ç‘o\ù›,“¾ûTžanËéoÀPnvkQð‘óι5™/WFè Ϋ<ü¡^ ÉÀŸ2Fs.WÖ‘šäq`ë¿yïb:làa‹¸,E… ~Bæ§´y`}Ò}¡Å|}ØÐ¡ô˜EÖ{.}¬™l&LßIN 4ÔrOj’ Ö¹ïby­xóÇã‹û €÷¶Ãf݈{ÀÃtýiŒo·%ÎÑ*xÉGK³§_¿'?ó³Jaàw·7/M‚=_N¿ûì´Ç‹,Ç&bèêfÀ¶CñÜ’“Àhiè"ÍŒ¯)kìØÌaŸþÌÿ^GŸQQ/àYJZ]ÿ;xjƒºNÏXïÕñ÷Eû/ÿÔ»[QÀpŸØØ{ïðzf ÈóŸCçÛýÔiäw¿YÛ+ÀWSi%ÌIe­»¯"¯>çÝm¬ l7dyÖ¹0ç%¡› Àt²Ãµ¨ÇBÆmJøâõx 2¨aêW.9Mõ,¥éöŠ-P#H®?w]j|7﹘ó@ ºÙvFsèG÷žõ`ôšõÅwâ{ö+…&"Ž}Òž ¡„›@uOþ9è“T?ö½ëï"zêÇ D#ŸÔ™Ô¾{Äôû*ŽÜÂ'PzýôŒÙ ôóg~„Ý=ÿØm _3»wènJ¥T£1 ŸÒ~^]‘OJ…îZŸZ«Op|P·nX—·§¨[íŠéŒ@M=!Ûò ûÓp‚#íU%POž ÙŽz–û>`_{ìYнí@OYX¯sè‰^í-Þ¸sÏKùµpw¹Hð¾h=7Mh»ÿ½Þhh{ùü¯àzË®—:vèÄš¦î§>Œ½À ´@óáÃ_؀ΓùGIë$x˜eìgºÖƒŽ²Ðå?*0ÜnÇ9qr¦ÒLh–¥RÍå@>·W6Ðl_ç žZÜZ[Uý_ í±yètÃ'ï jWô†,“ºt€Î47'ù`‹‡´7îó“vØmgÚçãMïjƒÇigµÒ|_ Û¿<å`æ 4½áÈÛÃM@Óß2¶%ûÄS·}ª¶îšï¥ýÚŘO¼ßÊ…ƒˆãÇeÔórRºYñè/¼sœú t—ò”ôtäQÏÛÛ…¿Y}Ûg‘ÜLÌ£fCsÉþ@{㣺N+è™iRåmaƒõ ùÐâN¼Ð®ƒE)мG ·«$íŒh¾[]#ÐÚ^PQåZÖð–ŽJÄa›+t:ÊhvG¥`ë¤9(Ï! ´WŠ¡úÆ™hwýG?æ3žgLÈz ÙÏvl<Š8 x9CÅüêßÇG(ù¹†ýÕÃxï¯_^ð òS¹¯¢\Ë@n –E¾zt^pÝ-a Ó7–>Rgˆñz?¼çý‘Ñm%@Ö?_ÿáÃ<ß’Ÿˆ2¹yô˜æªÂ1 7ëf ÞÂû?°þûu6 Ç9♈÷?[í’ºn Xå”^0á3«¸›'ƼÁÊ€Ic.¬2÷çË•€ÕnéSËü«•,sk ȱÖ[ÒyÐïÖ•Ü´ WTðõ¯b¼ZÁm{Ÿh ÿðƒû69uy¥/é¯\*mòÇIKÍ ¢ÈÓ Y£K`UYA®`D>?¼Lf>¼ ä°ÔŸŽÙ£èO¹¥† ë±Ûe·uÀK°:9{™ÿÙ5°Òù¶|«ÁÈeÃ&ZÈ‹±ëħÞ?r¡§ÌPz$óýx×Ó±[µwo9d›Ç‚ª@>ãß{e’ùôÉ­$Ï;@~Óî˜ÕKòdq²š*Öaá7=¸ ÈuoVãÔñ¹Á˜ùþw2ë êTyÌûXbþNàý÷²° [ॹy97¯sZ [*𦲦²x±ïý5QÇðþ¹=Ó`wg  RA^вe_övù<\c(´Ä4Ã…FEœ€Çü2ç´{ ð4çûtìgžÙ[EWjx8·繎WƒëÞôôgéõÁ- =a?šz¥dn™Ê-ä'tB¿Rœ,Èd0l÷ÜœÒ1Ì'É ½Ÿ!àHá¹ÄëêX ®ß=¤™Å×g]°ô¶à Xœ[ß<×S/•¥O©cÆþ[¢À£ÿrÙò@ðNFu÷˜¥ïNŸÇ 'óA†BÕ =xdʦŽL ?%“ƒü»S@Ã%÷7+p}¸ÇP ï.­Kºz¤y”d’jίîî£Ãö ÀË)~L5&xîֱܑö+<¢}TyÓß">Üy‹ß?;Žwd硳#mÀ[•±·sç=àÍRìû|´Ón?³«@jvã—ŠÎÀã¾Ø©zµ¤º½=æÌ 2ì_í"²ãò¡_ñÏöÿ¯ªÚÃÛñ)}¹@{V’)WŽÒÎÅ0©ïå‰:)S ÕÕìˆy4ôÝr1–ÏýŽÉüÝ{{pþ³¾dqè½—ÿŽÚý0ظ¥h"»”ñ~祗(K¥-ÍgQ£g7ί¯6Í>‘ºÈ:7iÍ÷(Ù#Y6]ˆqgü‚6Ðæ8IßG}§w¥ÁèŒíÚ·qþËŸT=wèmò·}YÀùéFö©o»€V­>À‹ü=ñ…zµ9¥[ÅÇaäî\õ¼´õÈ_ýYJp½÷PŒÈ=äÝôÆ…N „’vóm&©òïVf G_Œ8oatÑˇ÷d­ü’åÆ-E@×mº<šLÚ‹3I†Írèïð¦´^2ÐF<:™Õ‘gßý,•N :îÄd 3¨<ÏB>ûæ;VH*ÚÝæ{œÏ žÉ-Œ5 ^¦K+éhßÇ>±ûèF¶·ÎrǶȴïëÕŸ@ï14N$í¢ÿRÈî2œ;3jpáü*òhywøc Î%¹ÊZâÜÅ«¬ÖÏo$ÅœuÆ 1Õù½ ˆÀ>ä`z&áï›{÷¸Sáû“Øuxîôª°$‹ ›sÁ#@2Ø—í×wH‚÷> Íá«o»Y‘sç?õ;lÍçüøÙ=""Ÿœ}×xnÈE¢Äý "@.I|mZ[ 䟽•™òwÍ»[v 9H00´yKXWa ¿ˆóÛ¿L;ñÉØ2ªÌçXåâKÜ‚@⟴r¦‰›-W(ê<—gÿœ³;¤}ÝQ}>@Òe¶Yмþ°$üÁ™& w;¿qã÷â/ó1-8W‹¯þsbyíø,òNã‹È}ÈsOÑ$<Ö7®9ÄAέ?ÌÉ@â¡òR.U¡|õüeÅÖŸ;èqGKˆ7Lþ”¿@ßQ~´DêÏ/b’™ÃCëú@²ýõc;g*cjt¬3k$1xÙ¸Ÿ{?„PŸÞ²D^4éÎïJ®e8»‚Ø¿—Gè邸}ùàûÄÄNE[¶ÎƒØ.›[eçù¢­œN1©s‡K6RAº(·òŒÏ ¨Éjñ—L9÷à n;ÈñjÕ ÅŒ€(õï y“M j‘\ÉwBD w,•ö‘ïBû§o¸BÛ£áøP )Ò…“™ zo“Ó¯õ dš°·¸u™zI öë@)òÄ –¿á H9ºÁRÏ7œu-O»ÊõŒ¯.ý{ýÈ ;_¬å"ˆ+‰Çu¸ãmùO0Ÿrõâ\ &«_‘µZ¢/¼?©•€øÊλÂ@lU³äó"(9}•°n”¥»÷H”*iS¦3(í£ê£¢¸î£šF@Þbö«(t'Ø,Z€XÌ¡Ca1e f7ùå†i·)»¢©Gй>¦ƒÔ‡A—XÅ{ ¶õ’¯sÂ*ˆåxK™ï1Šõ}×ñd]¦î ôkqÍáË£æm °¯z ¦¿D/&±©•ÞEa±ÐËŒA¹öÌn©.•#—&ˆô=ù_gt®&!Z@?¡“Xn<ôÓ:Ïk#Ï„«ùìKúñ–4vAì{ÆEx•ûM¾ä]”ИôzËFwÍ}àÁÇÿ%Cû¸=µÍT‹F Óßrý-lºo ka,Ê]šÞ­ß.ýœ/{Äê] ?q[¦Û™½îÝЭCF@¯´Ê9…üyýÔ÷#âθ¯8]?»è'*n£ýå«‹I©gþÑâgàÿXʛǹØÇóOl…нÙΞ¼ƒóhlˆ§ öq ®ìäÄù9z‰AÙùæUyrÇk ŸYï¾Ó‚èí!ÕOKÃÞ9òîEæ}Å|–T{èËçÉáõ8WçÞå'޸׉_ž—úkÑþMµ@?¹ë»ÝçÚo—ý3èQ"rÇ=6\È?ÓèågîݵYôl‡QJ°;ÐÏ^z,èÓôý,Ç9Æ‘ý£…ú&­BïI”=]ÃdÄp ÑëœÈÏXŽx>Ö5Õ*îºJî¶N yýû ªË@"W\*¿ðH6æz¯."ܒÃNqÃÄ. © uޗ݇ü ³M0ycK±j²ç]Ý —¼^ ´jºZTöÉÛõäüH ŸÒž‹º T›âˆÒÑ·¾Ç¾a<áqíf- gîäòcûäÛLuŸ‘++7ñor×è8°p ÏŽ#é`Ôaœyvñ2ŸñÛÿÐò¶’[³ïØönŒäR¤SiÏ)êù;õë@ÒÙÊ߀òðÀ[¾=nÈ/qGZspNN3Ìa,dEþs½ÙKù€ý©¡¦ Èåôÿ%¶Þî|Äû?Ï̈‰z^ï^™ù]ãyû :P]U¤ýíwåd­üÇç– Ü‹s‰f.TЈ G^2/ÑóÃÛcçoñÓÀ~åÛ@:ÓÿIùw§E?γ±¹~_RÀJh?ᜠòž™ÐŸ‚¦›ÈÃ,<ã7L0ÏÒˆ÷hçšÉn˜‘ ré÷Øt?ƒÜÍädáN +œïëÙ rw¬‚ßõ¹/Þ_MP^­Û~û]ù†1Zo•@ýôÜ=•MAyï¡Ê¶¸— ¤¾ú‰|äöe)mvE9t­9äv‚¯Õ=ôë6­xŽqäÂsuN=Õ¾/£'wjê†Ü€¡2PSÛU¶¦Ã*c)v_Œ‚šRãÈîÇ 2ɧ7ñf#¨² nÑ5³AžÅmž ?§l[]£r?XÒ’]cPZ«d?à¹ã¶ÃDzAî¨C<¹ùÈ©e?°ùoŠc6<#WJ6ÿ4¨E ûD³€êoEã¹t39{cÈ. DñÇ@ÉÇõ«ÇÝ‚M Ì¬)µâpT;fR>K”‚\¹€¾P› ÖcôÏ#.Èõ½ 7™érЇ9PÈ©ŽÝçrL¿~ÌšÞ¹ –•û&g@n”uÉÏ‚äžg**ƒ¼Àl³ñT#¨Pbïkz‚Ü“ÕßI¬÷AÕ¸D3)3Ôv ìâ¤l¹™¥ìʽq@{6“¸ï(ÐzOæ¹ ®mÐÿ‰)ômò0OϤ?ÐÆõª¶àü%Äzoû'œ;G¤"³õ€n˜ó-¬è¦ÕvÉC@÷œlcÚ€ác¯† ô{H²¶èІ Yøxïã¾ ñÚ³yôó¼µåÞkªú™}ȯTWõNÿl Û F‘ £¯Ùn:ùèä[u o¦¼,GžØRÕôè´·5…JÈZŸÓïvíåÞœZ=œo_ÈÈÔ5,c•ȳÝûCˆé±8ŒýåBÏy¾¿Øÿé>σÏ@ûøÈOLaÐÖz¶—Æ9Wˆp² ûÒiŽ#±@W¦§8tcŸÙ—46Šó°Ì–_[£n!NŠéÜìÏÆ¯äɼûçoØ´8ýK¿KÚTõ[Øì_¥$Ÿù°ÍÔ‘“- ûáÖÍ×rÇ1ÿ‘…Cd¬ëȣ˾gÏ`hºóñe"ÐmÔÞé¿MÀ>ïgh¢ 1ÎÙ”¥¯Rø¢–$ÝZ“zþ7S6 mù÷þ\Þ_}…-GìËŽê G}Å{˜VZ³, $-«õŽ›•±Or Yo$;ƒ [~Iîr Wö=o¬­—/O1ùó®¾Lô3—t¨ïµ›>Ÿ®ÔK ™Ï§Ü¥1#¯²°0Ôx _8È.ka?fØôaÑùÔ"É¡åùg íè²¼”Ã$jð§3 1@ò(ªépÌ’Ó ãÓIÄc[ E>¢T?xyyØf¨þýOÔß{¬S¯âÊ Ùõæ @ 8ÿ‹ý,âqžÙ}[MHêç—Â~Ícÿ;”éQ$Ž5¶‰gÐ>8ãuò¿3åá¼5®;›U¿UÉ2YÓ) ûÚ-W›+"/i«*¥ð÷aì›9Ä)‡i›àöoGÑcb>(^ý{?`ÿfËü÷A5òœÇ® æ¶WãÃ~káöÇfçÃ%Ð?§dq ò£i›Ókagôÿñî¾D)Pü÷©9Z¢ ø‰Éw˜Í_¨Ì¯Útbfô±AnPüõ©D·"k[5|ï%ß!JÒa}Pš¹QjÊ–ã¨55 ðûO‘;öo®m7‚@ñâ*c“ 3(žèkœ.D;.èýáÅ¢Â}S^6 <,vPh;”'èõæY Â5Ò¿" JkOí®å?x¤ÙÊŒ )Õ5’ ¼ç‰Á¼B#(WÔÉl5¥Ä¢ñ™'ß@qÀÙ02‡Šcñ§XTbA±Î&áà2/œ|òTÒ]—l7ê%>ß­YÊ;A‰©ÿvèõtPѨj®¾ ”_±œ7…,Äépòl†=(ÅŸ|Û)Œõ0úûóú¯¶´ÈÔ¯årLJ‚‰Š]ç{(‹ Ø™÷À~4çTNÖ †‚âñR·Ó¤ZPš$Ç*`¾­‚^Ÿw6‚Rnô—®'Pü-ÕîpÚ½w;<—Å>¥˜£‡Z0oî½µ# Ä,&©±m(|w{ëóhöú¾@PLˆJ™"\Ú¥Ÿÿ~a´DS†k¬@»\­ÝÛ<’œºË‰Á hWŸ½sçÔ¤¢–ûOvK[òG8οñ˜‘®ÎŸj=£´sÚÝ`zÁv†$\o÷ËaÁ9:ñ@Šqñ ¥|eÝlphéí¡Éç€ÖQ-j½ÍçNÆ_ë:¯yÞ‘Z¶ÄÖÊìa =a¸fW8´œWµù±v@«/X<>ñhmQÝ«;jð¼åTq*Î…ç¸"î/Ò€v¶&zƒË,ê¿õò(î&¬“äÄy;±g€óéMÕBn朷ý&¾mDÞª{ç»7«ý¬øºj5ãùÊ.-¾í¸?ýæ}7âÊŽê}˵ 4¯ú;IOÄ[I¼ÿkÐRR L×0ïð¦õÌ‹]µcuh™Íþ Ÿ vG"FÚí®Æ¥{X‡<æmÊ>@»¾øhƒì¶8hG¢p®¾ù:Ǿ-ç\M®=3ÿ~XŸ"(‰ñdŠ«l$ÖÞ{æ¢ÎU …ˆÝV(:„Ücµþák@¨\Y˜w0Bò/ÂdÝ Üàîôû„óÍÎúº;€p5ö¤ÑÓ dŒ]²=„ÑÑ‘à øÿ-}¦„jµC$ã$ ”ö­B©Zô€A ¤Sµ+%!£&ýé‰õ@È©¶¿í@xàûeG;Ê~ë\½ö? ×o¯Âô3Zÿ"F.«?q›˜ù“÷žáÉЪoI^¦Å~½ê„ûÛœ¶Š£_¥ÞídÄå% ºýå^뾉qJbz ìW^νøW@xܳµÃ OXíÞÑð›G:Ëë3>’357áÊ/«t! œÕÃEÅu‰Dó• *T*®È3¡»ÖY² ýíÞ>·éÜ¿xsB‹oqí~Ù: ëQxIÃÅäb&ŒƒÒ€ò÷µìß½˜ïŽùÓß0ŸG“sW6Lá6_…qÎ$î,Xê- ¡ëj°2/žgÓË8Tž#¾¡t#&^ ¼2l;·#íçRDý2A)ù¿ïRbÿ¸ïÝç= Ò·"Y JÖkx¼ž¥‚iQ“KxŸ/Üc:ÝA¥ ÎZmœ4SÙÜ&AÉ*€~73 ùlÓ–˜÷q>½A“£¡~ªé =ƒ:(QÝ ”ƒ’àíЋ³K Dš[þ#Ê9¾žŽ—‚rz\þêŽPîû{""”}‹FFT:@ùqîó™á7 |hD³a±”¾ ¤7,²Ü Úv=ä½4…xÛ-g¼O•¿µ ”†è/$òAÉ#ÈÕö(é±<J ágN¾j¥Îã›[º¯¹i›Ø,ƒò ñtM"(geϯ“¥­¡õ¯õ‡@)e´ÖÅR”Þv‡æuõƒÒË]?Øna–;xœN%ÒvÃ}=×@éPt¡ßÕMøøsÐýA(mÛôõ·ü?ýÙx³)œŸO†á2(•~›*œÄçE·Œoì=Pª>tID<”žÞWÅ Ê‚¿êVA©?˸°Ì”Ý·M–_e…ÇGÃ%´AéRai<¨™ÿñõ–F½dÇPÓB¶-tyá:o¼òuPs”n­«ZjÁ,ÄèPï÷Wß`êÛ±ý©¯qͱ'Ô¨7Z¹½©QOEòæ•B ^•r—ŸÅµFœZî2PóØ<ÝŽ[õ®¶ðS¢%P‡½É‰ç=€:ê²ÙËn¨õ‘©$÷ @-©¿º|¨/®ÝßéÈÔÒ ÓGÍŸÚ–QUy£¨ïŽ.W~Ôçå»Î¿½Žq7O+„mB)׿÷e2âÉÖº1mÔJÍâ ›ïZ´Ç§ îP 6O)¢œa·éÖ@ûÅ%}B8P_¾ˆõ’j¡ß Üո߹=dæ1ÆÛ40z¨‡ÿö"PGŒ® ÞÕBû‘)WÖvÔŸYýï}½·VE¶a\aóZgÌ·Böñï¦(ë>ˆb¾¥÷R·5÷ØSn®¬ƒ‘R ; ¨w®s¸4ÔIë©£¹X÷â:ù‡{vbž)ë^6¨u0„»Ï×ñú‘‹oðþþûýž; Þh!uàÊ<ùCÍBLˆùï•eãòε¦V—y 4®ØZÊ<ôæëu òÈjoñ·›@\Ç@~üd'*Θi*E!/Ù}'›ƒöÇûv/!‰ÌÆÉü`ÒûÆ„wd²{=‘ßmv*nÂ[œ÷9 ¹JFV.uáW,½wãS ò¾¬N@¾3Ò0L·ÂÔJ¡/ùáY’z]ò&Oýô[Œ—ÁpMyºŠ©Õƒs ò _fiüä¥Í"hW¡¾O3ç:JÊ\Œ"ïÿ9uèÿäbüâ½ËóõyÆ©Y?ôÚó«ì\íê¢PD\¿x?âdlºgø'ØÇ">!ÿ•öŸû3@¸§ÓÔÛæ„›ËJu•|™ú€ð¦wsîˆ âü9©8‡q+.I#ÿ–® «BÑ­WÝ2Èë6MG·‘òÍ€Ö[ ÝÏèSµŠhZ7;}¾¾ 4{Ü-Õr@3Cu—hªhþJM(P-¹á« | ÿ·ÏÔü hºÔ;§ fñþ:5yÐ4¼uC2q4Û#'íkwƒæn™ïþÄ +%«%ó4C^¯H”P@3‰ïÁBþ8h¾é<¥ š7ؼ¨ÍL‰ÌÈÓXÇÊçŸ?‘z±žkw ûâzókX×&Ú·íkˆ÷ÓJ;hé_ñ¿šÃåoúv]ÍÔ»A‹!@Íþÿ˜#¿¹^á»+ü1c¦{¦÷CÛX ä·²oÞð@>¹EÝq}¨©w‚Œ¢Ú€útÖ2¤U÷ï&ygÔÛ9²½G¢Ñîõµ¹\o¼×¡/ûæ)è×»loóPÓ_wçm¿Œûntä³Göc'‡¢ìT‰góD~ª;ŸÏn‹þ-¿ !Ï•–ÍïD¾Íl_8ôjyÄ'Å·2¨åìo_Ä á¹MYêÀQÄ·ÏbS(P3â«7­lA^58ûc$¨÷˜çLÅO‹¶qôÜE^Ì=ôù2W/Pó?¯ö3!Ïß»)*­.…ú— ªl¸ñ¼7Íüò^‘Ç–è÷xž·Ãg ¨ b"Zù0î½Ïâ-æi÷ÖöÝ:ÌÛ¹.fÇ¿×y[%­¯õaÛÎ>2âU dÍÅçEÏRw=òaÌ•, g¬KQÅo}ÔùË´ý#Ö!…]+†Šy‰\pºwùôõÍíÆ‡±qõíbZ–ïði8¨)wë̛ʀÀ¸ïH©t3XdU¯îoXÉjºïc°ì`¤™0¥fÕý‚07s—Ó û-†dïÏ…rÙ³°o)•:êøZûO*D>cß’Ñ”80#±­ð*ö{ MÏÞpE¹½l „ L[êKÔ0ž²Z˜ò s«©8 ûD1ÖAõ* zÝ–rǾHtÄ©üT³©cÍ¿ç<·é`¿Å©ŽÏ˜·5éx›á¿@èYåa:ú]½n–ñÄÇN§ü, šýd ðëNXDU-Àg¶µ'>@PùmòM½j›¢V#3ÑÿÛã›·GŒvûîb˜ÜQî9ï aOß;ïBPæª1å ,dÅd1ϬEɉ²øëãág« îâˆï¶^ˆQŒ÷|RyÃʃ¿Xº±dKµÙê†ú»Sn&ÿÀ8ž£ù X.“ó~tV/#˜ÂSͱ^l?@Œq ‹{Õ¬7´oç¼lˆæíýKU íAÛW»ä¦¿ heØÞ% Ú"œÆm© âèåʈz©£ð‹tx'UE‚YAûVq³äƒk -ã¸}Öð7hïŽ~ùs´iÒ~W™¥@{—kÚý!”û‹Ù¹Žƒ¶W|{ìtv‡ÏqןÃþA']…=dP ´?ðÚT“:±–QÞ1s #X}6Âê8èèóÜMGU+ÝýG@ûêÓ‘ýžA;¾I™eî-hGëø¾ÝÝ ÚÁ&ŒK2- }¬‘=Zd3hïÓñÚ åÚyCjâíí æ–g°Át®jd1‹ ƒŽý·‡E¯x1ÏÃÌ”×@ûìù7gv©/ëTûЮ‰à´;zt¶Z^x“Ú'Kù¹ 0N½PÖÏ(¬KôËÐNÐ8“ì˜ÚuÁ½ ÃA;Sæ]ÍN ÐþÜãÛì¶´ÏMü4€v(Í瘓 h—•ÍXrÈ‚ŽÈÙ5±Æh7%vý!Ð1ý%cÇÀ:®ù4¥J!´{®˜éµhVÿÿÀ0 ‘Ûj›ÜGi›uÈ €f»Gþz5΋d»ì7¿;£®¿h&aÇz3¶-.g MM¥wö=hÖæo–ƒ•F x¤© 4‡mqÏõò€¶%{ß £³@Ûz‚¯áÆ©ãâªÆù—|iÄ<çC³Ç|Åz¢@Ó ŠîvUí}ÍwÔ7¸ÚÝb߈ëÇ'êd€f¾MáHÀ ´WRx|'hö¥»àþ„æ*Îí[?nrÃxýS¶Œ³µõìŽN\ßʳúr ýl/ë 3Ÿ^_zØP2¼ù4;j¿óÄA|À%ßñýÚl¿1~hÊ_(ç™ß·ú×c˜Ÿ™»°µÖ'Ðzpý]¬ß&ÖˆÓèo[ß͆GX'k+ƒM;ÕÏv‘øÛ•@³a­+ò–Fý——ɧ°^Ûv<潩‹þ¥OzõÉ£þ–z~÷—x~½Ï`nh–•‡OœÇó©»?0MoóI#î ZOìù½Drpñõ[@4 _d/ ¢9§[È× ê‰ÕégQ3¡ÿ´¾6­ÎÎkœ¢ŠpˆÑ÷%]übÓž½Þíg D—MùZO@Üò;j[}>ú žvÚrˆªÏ<œûDg·Ô³«@´ãÛê›üˆ6û•j-Ha§N”ÿâîù»Ovÿ¢ûåÕ—G¸oÓë¡èªx°è³'¯] "¨õ:þˆŠ %²®¥(¿n’zÅDûŠÐ:Æè?G¤Ü¬ˆ–vC)'ÎbEM*gôHºÅü6Ñã¹±XŒ¾ÅxÌ®ï}"áö<ÿð75ÈßÃ| Œ ñÜéÐô‚B;w¤†3E±>nÚM"n@4=X׿|qDÞ?5‹8íeë}:„€hœÞþ\ó5Úð7 ûUó–Ò£ã¨_>>}äõß —žÄó¶­ëÔ0CÇS¿w¢_[vA2·¼^œŸ¢­]%'>׈rù.\Øšÿÿ`ÐønŸ¶8y4Ø}Y’ª@Ól*uEèh*^¯`MÁÁ¾¤YÐ$’¾|×ðÍ3ž[éД“%úœ˜õ©j•/W@Ó²JÚhb4֊ךéî ‘¿ÿ§…hÌø¯Ÿ~g¿‡=Öô- ÿ¹î´' ¥á²I¹´êƒ•íìÍúg¨ôŸ‹L¨èG|¿67µøšà žáºðþ [h’óêb ã›ÇmÐÿ¡oÂÝY É¬ýɀ暛e…®¸ƒÆÒùzonWм*6¶~`4er]&¶ýÃÐ ÷þ¨Û÷4«5ÃtŽ€æ%¾{O2@Sˆðó’@%ö¯³#ÝüvØg¦Óx†£Ãy»@“C¼R_R45’Ý’Äû@c±|`UaûÜ]Ý–¯Î0¯ýA쟷½¬rîÂz6zÌã¡ir1qê#hz¿ð¸à{ÏËï°ÞUÀŸC¼ïûÚ Ù6c<ƒöß‚U­£ËÑŽÍ ì·Ìe<À9Óÿƴà>ðÏJ Å>ï!«J’öMÕl´}쳪®l<ÚÒ}–‘éß~ì‡Þö<šŸÇyO'JËå?íÚÀÓüÇý<þ©–‰}ìS©)bé-œ{%ŽgœÆþÊEŠ!³¨í¦É§pýêjìà ìϪÏöìÃ:Ô¥½¬jKùª^cök)ßVža¼ž@Žæ|ìÇÞJoü‰}êã®qUœï«øÜ×[aötËê½@mÌØ°ïö‘Ï*­n(b_ØØ{ià,â­=·Ø–Ôš†z.Ô{Àq$ÒõÚ~}Ž8_qn˜¡~÷ó5ž8 ö°ŠDZc~ù .~¤»ã6%a@ªøäg¤ËüJž@JQx!ÿìÊ eߘq Å1oy;Ÿ¤ü‡¨9¢@ºêvy Hµ”ë÷ãp=NýòyHEJú¦ú@ʃ·ž»t•ÓMܵHg4º=K€t§Ý–ša ¤r–ñ͇€Tj£ó` ^§û¾â‘R—Òž™@”¾ÞKw‰@êçëQ|†8ë¸ÛŠª€ôäT«lt#ªø‡}v°)ü$ÛÁ2 E’שäÊÉ7Q¢_ˆRÎß¾ÈÝ$ %nŒÕ¯GüM¤ÙZ ¾Èr/dÒÈà ¹MŒ¨§%«Söíø"¯¾EœDÊûž> ½òþtÈÅHOãy¶]Ò•~ãcæ˜Wú—°4 ýÞ,Š~r¶ÐÔsÑÿ†ÖÓ—™tÏÈ3éU î·ÅG®<RêV×ä @JîŒÉмŠ2e©nxHÕ"¤6”âši!ë|¯ÔñÑ*Æy´¦u(ðNù8g¹I‚ö Ã--ß@»>$¡­G ´ßî]Ï_£ Ú_×]ûÁú´?$ 3{i‚öbÉ,“²h-ÉwÊûb?4Ì%f}ŸTïWaì cò·.™z‚σ‡ZѾƒ[4é(h?a‘±»Kí•B vÒUоñPüg h¿3õ%ÌüEªŽ@ÇÌ]gI›:Zþì(nkíÝ:žÖs ´‡TGvÆ~r0kýç#  #¾í·æóåã°Ç6ìïzw‹µ ƒÛÆ —oíí_ž}ë2Ä«wÛ¡µñZ¤J£Ÿþ}%ÜK˜Ÿª»‹êýˆ¯ÕYYĺ_rP<·t”ÿÊòó2c*Þ¯u*G2¦eQõNlOPæí+²r:gq™÷O”–$e†qèáMä– Õ¦m]@ù*vöŒÿ% |áRwÊ÷® )‰ ,èo›ÝZTƸ£}@Y*•óó¨Êß4νÏ_å×ÎãKa¡(wU á¾WËTeÚ?t€5íÞ‹ˆMûc\=9ÏK;€²vQýO>ΙLûÜ¿úEýI–µ•¨?;sáÑzÄ»£èÇ9 2ÄºÖ ‘€òs…¿ÑíP™—Þ`žB=®– ¸¼æGšêßE}qãXÌ{yg„¯+ÅxZ;GË €òûïS{ö~ ÌnÒIcìB}ç~ý¸q̃1ºZWñ0oÕŸÊ걟G_²u½¦Îûž½¸þ›¸h΀yíóçöŠA?<;_2cÞ?ój?D;·zV®èÇߣ·ó˜/¸¨JE=C3&öh_TÁ2CCÜå“ F?ñ˜ Ú> Žýûü½ .lLbLú«ßîý«ÙP Äa&r\?ögŸ?ûLâl³÷Ÿ¿w[¨ò&ì’T™šØè¸.` ’âôï…?}¨O¿UðˆÝaç`?6(:­Ád ÄÅ0†ßÆþý½s.p}1Ö¿´/ü$-#H]\½#Ý $‘ÉuiÈ»ŠÖeºñ¡Ý•ؼµï@bgÜFs:$F–¿ {Ø—|¾uã0˜Ùæw^âÌÞ, ì÷~i_ɸÄI‡-3vÌ@ì7*i¾ë/õVú$öž+n’:ãkM“2 N ûW°ý^²ÿúXB®Ô$"_nRÏ —ÉD©À|hûÕÁ¾-|jÖ@üèÆT}úß Í¤œ A{}å°r”î~·/W`^æãNöJ@üÒ2E(âСu)à‡8xÝz¾*±Ó'&_Óë XvHÌý¬.^™‘Âø‡Ï‡Zc|ACï ¾tåI—§‚>÷¿ßÃn½¥˜U±I'Ðg®Lpݬúʳ:~¢,ä_`ã}ÃãO³A_*Ãké;Ðhbêpñ}ÍDNáöm ÷ü×=yQÐß| RP÷E‡Ë&g@ï÷óy•^>Ð Öþº zCºÑ oïè“|ôÍc Õ®‚þMÚÕ 2 Ä5U"¹úŤÛ!ᦠ"h^”|ô­xRî>ým1-RŒ /¶1Mò!ÆSY½jyLqìû1*Ý ú‡fp3 ÿõ6ª¶j /ûJ¦÷Êè;_\Ïúúzú‘µ[r@ÿÊß9—XÐ/L†«é×@_Î[ð»ÝzÐçzïób ó»ätâïÐ'¼‚£Z$ÐßÏÿ:¯1ôeGR`~2º¯.#ïëË é¬··}³ãAÛ¿k€¾þUêØ«E¬kî”H%èï oÞ|ØÏo½úÄ»Œò¨¨tC-è[žèRö}£¹Lc¦ Ìï€ùrþ<œîòØú¿³¥=}ÚvZf&Php¹3 5J?õÁå@=5ØrP¢¨G_¬»QŠýɉ"Gwc †$ä¶UcX]÷¥j¨Ç:GmŒq}ªöãÚt$P÷¼¾Æ·„}Ñ©ÞOäêÏh×á0sð;PÏüÖ®{ºÔÓþþì@ ë|c„Ž~®I8ýû¼ÎÀ5Ö¢TE ¸Ÿ©©Fy(ú.Ÿi0Päñª ¼jÐî‘Ý›‘W8¼õÜP÷ÅZ´9ìÆu-Ue+ö™Á_Ö´ žå|²Ä¿÷§]¢—²³êN´ Pc.V^ŽÂ|v’º¨Œ¨w\²}y/€$QˆöOˆn‘÷ƒç¼:±ŸóWÓg} Ô“ lÇ4¦°>Ö¿ªlD\žÕoסþÉ^ E^ô{Jż‹]ÉÈÏ'MK3°O=xúÀo˯X—ÃÃn ¡ˆëÕœ¼Œ/Ú×YV<ÑÿÛé'¥ØÇéÿ¦„øƒ¶*ýZê~»p¿ùG@=¬oh;ºĦŸóñy.陊Ã7 ÖàŠfŠbã}ÿ¿#Ûøø“O<ÞǧþfwÞV±U:XšçºeNæ}<<@âPüšÛýçÀTß[ 䟵ùð¼ßÃß*Î~bÇ‹èOxÿ-=…fò€¸FùáçÙ©°ÉqäI¯þwØ/{gDL§Õ€8aù¥ty¥Ïx¦iÿ˜J/[àü8uŠ6½óß÷Œd¤NC~xøkëz䋚º%šXõÍéJ°ò”ÎF¿çzíÿû^óŠ©Íö@lpMÑÑé@^×ÿº´ñ5ò²£âЦ¿¿Ü×éÿÿéoöîâ׿ôaœ7'ÂÆw·á\=slÇäñ©ãÆÈ[‡ž,ãóa$sî¤-®GÞyÏWÊ"ž|¢²Ë䯎À†@¬_$õžâÍ/"OÿDž«B8Ÿ¿9‘¦ñõjžm.ZA»©öÖ"…p¬ÿþÞÆk(¿˜þD6D<~¯8¥°îE¢û^Q§Aï•g÷Ö.Ðë•>¿ibôZƒõïî¼z“RŸy€Þ(ϾÙ?@ïq‹ÔºkçA﾿€Ê;ÐK·4Ýå* z—Ç•þähîÚ{9És@o^&ZûQ½¡ƒ‡ÿÌg€Þ¥† ­×ÐÏË­øÞŽ×ÉAE ¯vôŽ…ð}ÐW{ƽºú·ì£sâ˜@_K6wˆpÐOdVîr’}ÝÛÏ‹ˆÈsÜ÷ ϰ;åßezO—X{b¼úËÊ7D8@ïÙvÊ'íäßæ«Ì, W3öQôÊ7r‡Æ1bÆ}úÐûÈíúùæém­0Þ= ñ­eEÕFÐ{pþ›Qÿ{Ì?ÖÁpàè5^çÖzú mB%®¥ œ|AVTëqtJª4ôZL½Ó­ìFœËî—±¤^UÀ¹¸ìØHÕ5äßJÕ•òî8OÒz¢‘ÇëŒåÓ%[0¿r’f;òìC!ñ#ÿþNûX¤¶Ã_çÑÈívÌKæ„¶—â?”ÿ—þqϼÖCûÊmѸ_»ÇÀl ÎÇ:b7|éG9ø5û²Òá¹\§4Œkp1TçãÛvpíöÇyÛÕ:ÐýÞÖ¥Ô”Šb>W£ÍÌÐÏ•f² ògÃ^j òp­[Ûa|î1öIš¡žØ‡ò‘¿x>¿bVñÈ/`Èåä% WÇÒ•æªÐ/³›";Ÿy_¡ÝRòÅ7¬<_çÖŠxÿï« Ô5fZùñvíb@~úÕÂäÓ _»tNÚÈ:†—Ù0n‚Ò9žÔñ¹¤qŸ¾^ÍŽ8KHŸOmÇuðŸI»~ ×8o‰Eýyùjß& ßozG-Pò£ãSß#W€\ÙΓ¿Iȯg>ÌØ‹ø\Kò5²hP'K‡Îæ?/ra8Kû•÷Qî¿ïw×Ó“)P´=Ž(Çíwðþ o’{£bzëÕ¶_öÊ=®²3×AhqîȬè~òä¿0 zFŸÚÍ:JA·×«èï+Ð;ðûƒ2ú=Ø×¹Ýt¿þb ML=Vê-9qÐ}|×·ê”èRy,ÛtôŽ=<|Q#ûB–§aK’ ÷êaŠÐá`Ðç,½ƒüã±ùø-2èÙ| &`|{–áF·LÐýiÃpŽEtçoY³´ÔãÚêñ븠gMé¶Oê=×ug}n?=í N\B~v‘30@¾Úî;¥?( úü[çŽùƒþº|ôÐSõ?bÎd ºKepùŒèm­Ž«² ½À²Íš —Ã[½gñn• Ðàüz&+/dø‚Þ;×aýÝ7b=ç·­ Gʦ{T z4©›¾œF{¡ÔwÁˆK“?ÀXõeskm±ŽÚÜ* 6ègQ¹Ê zÊ ¡ÊÈÃzö÷ô®~=[YÿÀù(ÝA½ý>Qg0ÂCÜë$Pº”&¹Žà\Ývd^³´(íM9Ù3qßïMŽãC”gU×'åué.Ù]sï€ÿ›ˆ-@éTö+üuýšÏ¸½y”çÙîÑu÷ÒOßÒQR ”QÙ$ùoˆ;:=¦óyÅ^ÏW‚þøWà æ}·ró_M  19Æë0åÅïýÆRX·Šw±NÍ{½â\û¼‘Wn’€rdþÇe%Ä­®ö²œ(59÷WJö¥ãèøÆÔƒˆC‹%ÞŽŒçFÕ–pŽ}§E0ÂzRw<ÑnC=î•˸ÿFf®+çÿ±ýRDáf°R.3¦òø€•ljR±í°R,ÝsÿÃz°’V&Ø‚•ä)ìs`%qÕŸáÍ[°Ò¾À¤³° ¬Œ÷“GêÁŠ–Eõ;ÿ¥ËE·?“`%~P}òS°’Û]8ÿ%¬ø~/ŸÅ}ÕÞÖ’`¥ù|A¯Ì ¬lwnâèh+›Yk·Ÿº`å¢å<Ö V{Êù—ÁÊéû ¤€Õ•{ÖÀÊ@X·ñ—+X‘ëN_Ð+ÝW“=æ`Å+Á:ó`¬øk˜UNp‚•ñAæõRÌKf߉h°R7¨T"‹zLo’E ÝGXc¼[—ƒ¸ÔÁÊ£™…ÇqªÒ½Šßw‚•Òf£SÚh×që‚·'XÙ¥.TÄ~+×¼¸ #˜Wã&¯ô/X§ò¿gì…ÁJƒ{¯4} ÖÅe.@±qÚ§ÐÁJ‹0ã/öOÏñõÖU´=ýç½ã?PøG¹%ÖŤÕ{ ëo¡kºÓë;®÷ØÐ¬tÞ|>ºû æivã±}ôˆoÕ…Í«Yÿ>ˆ dJ‹¾u¬€Áz÷&Ò¬;°ü ¼W¬›ÿ0œÛ§œí1DÎ40°øž¸aò9lžúÖ¼úË ôÅMtóq½Ú¥¹šó öì}z øž”°yÐÝÖÃå#ˆîOÙÃ:›gwjü”ïbò ÔÛ™Ñ&ýH 2GÌC À )I¹›q ŠƒÞlð¥ƒAzκ``ÊAdÙHÀxošùlnÂæ~ÎmÛ À€+ªýJ#Õâµ``~ÛW²ìØ<¢ìs FN¬j¡ý¨£™*P†ô¬qÝ–;<}­Á+õÀ:½&0PüUs›i=lžþ}î{ù}´ÓŠ'Ô³o‰m_KÀÀ3åJÍâ00~p­^H ´“äÖ±t¼Åà8y¶r5ɂɵµÏ›,À@“²¸'Ø hz¦.wa}ŸžËn΃N6ôe0P›¾Öîêzy¿®^?„õ©³»|jú7±ýZ¹ ®x^}€ñ™ß~á÷Z”🛣”ãVÚµ€¡¤Äº ”ÐMÍS€ÙÍñ4Ù(Ñç"7zåŒ|ÙIÙ@‰ºT2¶¶(qJŒ‚®xcó8^Û"…ÑŒemО ¤µÄ”ÒVz‘G¢ï¬ÿÊåœÏ‡ãבãvÜpõðGyHšiyïøåÊä v¡Çt€œ0·—Ä ”K2}d¥2Q°+Óõ ‚Ôì‚Wêü~7[Œ3U¾&kŽr‹À!jÆé—µvnEœÑZþMuèÿ„•PN•øsð Gžm’0Cœ;eyÆr>“ã†5à~oËVÌã´ó–hBæ±Çäù úMPp߆ö ºJ8ÑÎH–ÕØëæ\»køÆé˜l_Rø”Ãù‘§".ä ¶W`Üó»va~û÷ØÉ `B˜ÎÜèÇúìrcÄ51Q)í_]†ì%‡ïÂ>Ýÿì]qh½…vøs9g>Uæû²F_±´ü÷Æ ËzôåÊGYJòC”Ý) ‹0[ Yí¸mÜÜ÷¨ýèµdå·Ù„±O$×Dn}Ëd+Šç±™d {¸Gr™`ßÈ·Vg;sí|/4ÌYzkDî+Õ™£#ªlçyoÆ‚ dbGsr3I5õ·œ¬rÕ+å‘" Ý3‰³ØÇ)¾þÜŠ~œ5b~hÙÐ^ø×W5´óp°ûdOò³±o”àLD|ª›·ý{?¯|ηI +5$o{ôÈé§&/Z™;çÓsã q:|d­"t €l^ýëB“)e$uÔ÷]²âµìù§Ù@ŸgùÅy È&Ê}7˜1î¨_9Æ“{LšÇþL‚(NÏÈA)Û<­Ÿ dUÝâ ¿!î!Ñ}XO‘Ƭû{1?±ø2ÅÀ¸_2ÒQ6ä$?œ²ðƒ† fXP°4•À~Qz7gOü"µ­NíN¾‚qyY)õn¸î\·zm/ÿ{9ì.02£öŽ|xFVë2} ÁÈå"ís‘Gv>âU#»ezC…=íŠÙ¯.F\†qî5"V¸PÀðñë%kïÁè¬Héób[0Ú;âÜyªŒ$OyHÝ#MÚÅÖ¨~0üÅ«?2ëF¥_P7rƒQ¾ž Ã:0–ž4’ £²Ò=‚ såçn3£VÑ|Þì"0:µ#û"?â‰ax±‘²ŒHGvfÀÈ«ëTØ­Ç`ä§y9+oÏ[Þ„.¢]tCªfÏI0 ˜c¦Ÿ£È'wÆ÷#žÂKë¿0¥‚±'ñ§Ñ190ÖZ¯ñ>qPzoí—1Àü;¶ß£íYMNãè/¬R_HŒîk8‹²€QìúûÝŸÀhß…†ƒ©Xƒ+-ãÓ`”y¥ñÇ/¬Ç1Ý»³`äü3üê0J©7{¯vŒ<É¥•>`´ŸÁ»uâùñ#2ÂŒNÎý¬z‡úï}êgÐÿƒ„†^k0 =x(Î¥Œl^~\Mªô¿×ï%U~²áfø4P•®•û„¼ÁýÍÞöUqUðÕŸ·@U'k~Õªf~M|™4Pu/» >ª™íØÔ Z­†Ú¦ T-ž•6šPÅt³å*Ñ_Ì¥—&@5¸OÝhï T¿±&@Õ gï-`ª~θ; ç^‘ÃFYŽ8/Z¼­:Ã~¨Œâ¤=ó@%—1FiI"ƒ¨'Št ÊÀçÍç*÷‚qño,îG½ãǹ\a&¤Ñ"¨GúB1JîG ù¸¯ÅðÀ>çt®Þ‹F ª8-ŸÄyZÊþÏDÖS 3…tŸtÁ¼®,ß/’ª¤Žê'ö@U;Å*HžªjªÞÛ†tÌûµõ‚P•Ž ® Ÿ7{uסޡ‘ò" jï2ãæ¹qÿ¤Þy‰s¶ÊønŽ.M òå®SùXzI¡· ë,%ÛqÅñ»]ùs ýÏÝ“öŹWAUÂGóVpùÅÂà TÑójå/0n(“ÂT¿1üûäÅS{‚µvy™¯wCÎ ʪ--ò«ó7G Ý ÏŠ|ø½¢äúv°b•µw»ò Èk¸èºgÁJäš./ òÕ«"î} ÿ:¿ãM)»Ô»jœòÌÖñ·ØGÊò8u(ù§ƒKj+ÞóE¢«µ/[Ys^^G>Xb#ÐÕW{øß)àÜøëÀÏäâQÄij¹kFý–¾SzVë…Xî3#ß4q½öMµÁ¹7Ì(a÷I ³Ln4@^±ù“†úË7çö õ5Ù_9( äA¡ñ[½Á¨/`1•„óuï¡ä5œ+ãuÉ"Î8|ÒíÇ>“±ÊñÙ' Oú¼i}ä˜za>}UÒžŽ˜çÄ|å%Öå“óÈ3v´¬ò][çþ³¤® ¬ÓÒGÖ‡Tœ›Ç>ÞzùþÚÇ}­GéÊ· .ÓJôÇð3mñLYiÿÆù·C4çþ<Îo9ž²GI ÎoEKsi8Î$>úŒýáø.•ØsÊ@ù õ,pû¸×—â H"èw&ÎÁä8ââ:-ï}ìÏ“Êш;ûÝš°ιü’uï’×Iò·-©ŸÄVØ‹þß]¼ÿNó¶~@|¿„ëÂ5Ô<Èzþ/Σs¯3¼"ñ¼Ë”R¦‹ùÔÞ=‡ýrÙêÁ÷¥ð½xâ6qSx}q¶:o !"nrO8öÑE²ÑÅ0ϽT‰\:™«Çyºï¦ÇWÃÀúžòRãå`}÷ ””BXß ¾cp4÷ý¹§…˜PVþÙû.¬³¯Ùí»@뇪ç¾uã»þÇûöá¹z§²O.X¿Þdä­¨ Ö—7”Àú±/S›©,X_­êmYñë;>¶¡ß.†ù§3OÐn£hã°.2¾©PË Ö‰U.Õ?ÆÐ.ØcªíXçÎy½:ÖM¬³EG\ÁúYP>T¬ëJL,çýÁº,èè^µj°>b(§ñ¨å0½Ý¹¬3R¹¥Ÿ"^—²ó5f˜—a¤ÙCÔ¿È»3G—¬“$ôž;Š8+("Yn`}Û>¼4]¬3E%ŽuÚÇ8US°®~ï\ƒx΄뷢Ÿ|î=æŒ[À:9”WK´õEFχ`œæÉÖÃ+`:¤:|óMMmÛú¬KO±I9}DÿîóÉ¿ÓÁúÚôï=ÕFh—Á6¡…ù^8Zž/ÖOÒsçÀ:‡v9üe8Úé ™Àý&ýñA=°N9hpà#3Þkû÷ ó¸Ë4 _4&;®†ÅË—âÅ£Á02q¥(˜†×õ4³–{Áð÷o…â .0róÕÀ'Qïû9Ñ÷€áwü]âWÁHãØºæza¼¿ój¬åD0Ì\•1Ãk‰ÏO®ƒáþ—²m±ÿc>\|œŒX“øú±«åáþÔôŒnŠmšÌ=FÝ¥/rjÁh¬Ðì“öQ¢kùF›~ZûGmA¾‘\Ÿãü w{±±ÊCï›"iÎÈ›Ç6\£u©šÃ?ÍÀppíJâD&¾6- ŒÝq ×·p~£–›"f{±ß]pôWfäÃwºLˆ÷üQ­VG0ü&±‹µ•Œ=XÕUÅ|ë®·(¾ŸÃŸ;–¹2ÁˆMþØû20bâèZOˆ#–÷;•!swnWé ‚‘ÚÌ¡saQ`áFryç†e&×SÍQ6ÿeî{ † îMWfÀðSкƒXOÃÛ]s ØŸ²ž¹›SÑöcN#`˜N9û9Ü'þû^V÷÷cn}wÀ}LgU=!ܧcíýF?€û—Ò]J{žƒûœ8Ïñ¬Ipÿñ|òÅ"p_6Ro îK +/ʀ°â«QîË©?JQÁ}êÖjoõ pÿ^¿RV„v&wäGÚ²î‘å¥ïàþa<â…°&Æ îy¿îCO^äm,D?3 ;>o÷¯šM'åv…9L·?y'¸OêùsÖ‚ûL§ˆOm!¸4U³>÷÷Ï*VçoDiv[$1ž¾q[þo”/4v˜ˆ‚ûʵÏürà>r’v~ õ vœAÿÏSïS2ÂÆ¿ñâ^ê®Æ8c^G_»  ÿ{Y¿™÷þ‹ÿ=á ÚÏÙ.ß÷Ïnï÷sXŸýÓÏã~êŒ÷gZ•= ÷µ· È”`ÝæÛC¬o‚û`ž†cúm³¾òËëmýÓeª Ü¿• ÖÜjAÉeä/€ø…Óã­Pîê¢Àó„Ô ¬õÿû~wkÝô¶„ÒF°6ù*—xeNúïðV°6¸}(A" ¬Åø“N.ë¶™,¹ÀZÅ/+Ùõ´¸"®šh€uÈp^öXK=pëkóC~`½YRÝ÷é%°6þ³¡lòÀÉ. ¬§ÀÚò—NPÞsKø¸ï±7Xk󞈵ëã2×¼ÁZ#ÏFùaïnÏ̳¨g_Ö¶êw¬]S>¶&пòÓG·ÊÀÚtSålt X›©ìØTT"ùѽGúì òй*í ò¯WdÈ7 ôócõâk{°ÖI8îù¬iAÅöƒµã5ÃPä} § ª„`¬‡Ú‹·]]¨Ï¼\yŸ¬IÖo%e/€õ6Í’ðŒÿ+8¾[ ¬)vw;ß”ƒõFÊ@ƬX+\þò© qj3nð8ˆ~*6GFƒõ–Ëæ„Ð_ËÁv1¬Û¶–¥Û't0ÏËwCŽ{`^1s%A `Òüßû5LÚ’숯Á$+Õßeï%³$Ãã`Rt¥ºˆ &ÃÑë×ßS¾ ²5F`:27xôâ0-ÿ´º¦à¦Ž»C8†ÀÔO„pÔ×LV7 $Mäý¥/‡²ÿÞ—„leI(‘- ²ÌXÆ ÇNÊ>3ÈN*![E,YÒ¢d+’dOJ›”$ÙB)©$e—Pö%~§ïç÷üs^÷ý>ËuŽç¾æ:13@þ^ïœü ãŸýjwòãkWz©€¶ÆßÇ{ ­õò2hö ‘«É© [FöqÐ^mmXKÁz¿Æ;%§j@›,äz¦´ãîúñËùfç‚êÀ Ÿû¡ã•`ä³¹C»6£ßµ_çdA[dÕâ4€6‹Þ§uÿ*‘6ô!~Ûw玂v{õõá¿hg¾–}Tom.±k†@¾ÛW~@UÈ¿t7°ßêí÷ŸhvÔ…ÿÊ(Ùb´…Ⱥú-@[‚CŠùg4æã8*vJ´·—y„·ô‚¶hÿÄã'ü -Sÿ\äA{¸wiß¿úý—Su.yÔo¸ú»çžþV-WmÕ©lZ«@nÑûïö!ÐÖtùúœohߨ¦awØÈ$³&}äEü1ñùcÝÅõÈ#+ÇvQ‹Ò€Áúû1W…òÛtVÞÄSä1.¶6±E`lœÊ¥‡£NÒÊ=&ADý§>dÔ÷_ 0¨šÏbèäþîw¨ƒ6º²¶ ãóýã^¹1ŸoßÁ|<ÀØòòcÈú³üWWœVŒ †ogꀾzq9V3ÄW·k¥vâó6`®±r,ªç‘o–3·ñoÚôµiN£©—ÈO™;ÿñއ‚âû_hõÛsÕ1O®ÖÁÑØý˜5]yíýšä8òÏœçJt âpægå÷F¾ÌìwV†ˆ½Ó¡Zì‹y<±¯ùw¶v[&Ÿ06ÙÒ‹þKǺU“Ç‘?}¶!Îù[†å¥hãM ƒP'3Û,O®O@\[¦Ü¸q~OøeiòÀàZ»ð•¹è]L•ã¸ÿÑÇÎéﶈÇ×;K  ÿ=ËÐoU@ÛK‰=µ€/§›^ébž’œ°/Î`dãÇÒ¡dŽuu8o €Q+ñ{Ö5a?è2„û¨ü›ÑF9Ú+ïh¥{ÁHæ’ìG™ÁÈPÓ-ø¶Æ)ÈkÜp#ÞK!^ÁHMë¿ O*‰ŽoŒ¾3Fƒ‚ö×ÄŸ­¿sû#0"8õ˜*€Äò’UÀÈÏKê¨Èe0Òß-I÷í<Ôﲡ çfYÝ]‰sù+›nŠõ‹ª_Çëm/¥˜–pd¯ ‰p~*¼j ï=ÁHäIKù‰Œ_i%þÄùˆT4Þ’F µ{]ŽJXìÆRª™Ûµf%6‚Q´aâ}gAÄ'—vèuPJÍ*]Hº@¹¥ŸþÑ*(9þsL¨s)9Y7#JC€’ñÖD~öP w‰kÐ?efàï•_¥@Ù@´¾¡Ôí»Ó[^ ýkÂÀþ êyÝ]H; ”ɉ›U‡³€râEäž'wF­×zÃG禳Êí|ïYE,Pù»ç÷Þ&xª!6ÔÛGhƒ‚+@×LÓøl ÔÂU¢#€²r·e/ý3P·9ÏV[ ”;NÛÎåÜ>²ªÞPÛ£¹Âǀʕì¨KÂxŽ—l,Ë@™Ø™æƒxWˆ"¯¾ ây ÉW‚ÔoÇk˜D¼€ú5o|Þ((ýÊj ‡ü€RÍQ©ºx(?GýÉ@=Ϫ~—¨Þ¾óÁÿM`¾òF½d Ì¯ìÉpuÊjLïÑY@åQ;7t3 ¯¯ •zÏáœTªŽÙb?nÕ’QJ@y]êÇ“‚óxv3eÕ¬ñ}¬$e*tËôŠã*P>$¸çT©eiý¥¿°OÉå=òiì@ù¥úÇ"®ÿ~LáÀˆÈaœ Ä=+è—ÈèCA`Ä•rʱâ^Ì¡2w÷T‹{ V¸ï%ïÈΤ"O ýNñÜŽû›Xç€s?0¾ xË=oÆ9¡kvÌ7ÑÛï¼àT£òp 0ŽÖJÈnîF~‚Ñë+:À¸`h%ýèZ>¹ÝÖ¸žö·XFÛH´—î¹§¯ÉMYÓpï\S®8›ŒXóìž‚×À¸ø¥6÷Ç£í5bßqŒ3ÿ î•Au–Ó’1ß™ÇÁ±»ÑÍì‘A<ʬ%Ï™á&sNù(º2/5ãΨ¯¸æ#ÏV÷Í»[#ÕË·YÊ«™Ž#Õ'Õt÷øû]—#?—5 Y#Ƥ%ø]/0âM»amL¢bÿ~_#¼Õz ÷ø„ÓÞÎIÀH{þ¥ôt.0N©G&àœ<³6s?Æ¡·WÜŸãýñþXÄöuN%ö}ð³*CüæçÙpPõóEíú¼‡ˆ/tqØãÊ[0Žÿ÷ñF9`«¿IäÎ,ê-U6ß}Ž`|A¸\@$Œ#•¼¬PϽ´“rÆ}ðìãø8À„E8ã ¿ ¿Èü¥nLvyóB™ƒ¨“ŽI|uG˜±å÷I%Ü+Sß^Rb6ã±ÜÅÎñࢀ¸wú*-1¡Ž»°ø1ÔõéÐ#'0>õ(øì®¨?‹ú=šãvãÇ­WpßËÉá?tŒ[´ˆÌ¡~ÌvÝ|›u“‡ï¡å6܋ݎj=Å}ØûÀÆû‡Q¯:+7Æ:‚õ“Ëú¯âùÜC¡쨣ÈQÒ÷Ž NÛª¦€ø8;ÓhÆ`ö-ûÏI~0Ž:æ=põÝɇ;¢rQǤqšÎ¬`¼Ü–û½ÀØÓ(èü™L0v½Áµ¾ ÷bŸÉX¹ü Ô¥²ñ¶b¸3n*ÿx„8#S«5:aþNM`ì3Çg‰{k̇׃ªÀØžzÓõ䜓6¯6…ÆÑÒoyþíÍko‹E±Ï©]1¦¨ãXs„íÀãk Ú~OåëQgñ,}ÜçáÚ—¾ï|ÛÚŠ½ + A[­aÂK·´ßÌçÊhZ‚¶—Ä•£Æ™ ÝyçÙ¥RÐ6Ö<ê„Pøê»Øµ%A;Ý2ÝìGh·©ñªmÇçëÄn 7ÅŸ¬ MBÇ£˜HíÙUV²… ò˽۷_O¥+m›é¿çýµ=$(ÅEƒ‚øú«ýiš`ÛÕŠzÐûÆÓ?˜§W|>‘Ë´ù7ú|ÚUÚ¼¢cÁÈ+LÛÒ–êH =h+šÎ‹z¯ÒïMû¹âP&wùœ5OBú(#ï=¤:ÿUö"©{@õ•ML¦öv 9 ^±G¼oeV|Š‘µvÔ²\ËAþþu‰¾¥û ùôIèhÍþNß„zn²tŒ/C´J½J^.öÈÈ™O/Þ€öе¡‡¡@Qß*XUŒõiæÜ×ßH€¶m3qñ—2hçÍ]˜”F¼\»Vš0ϩ夻—pCÑÓ›xP÷=k³ý& Ú N KΨg¦òþýÁЧ¿黌¢Ž9ênõ uŽ- ÝÂývÊ+V0÷¸‰DÁ·÷€!©ðô‡uÀÐÞô6/êBç.=²w0èUÄìÈ£;r·‰ŠbÜÂ3Ù$KÔ{ z?ýÖáþçÂõç>ò€bîYV;c`lWÙ©-³ ¡Æ[¡|•Àà0³ÕVF@UQ…B<0¶»}\Ž@>KuT±@¾äØnúü7Z.Æš´JÔC™‰¬â'Pgm¹×Œ{çʨ@Ô{`ð1©•ºŠ8ŒŸ®û >È2uFÝ:úú€|¬Ê?§ÞôH‹ÔUÝ SOY Ú NYö‚NTU>K¤P#^’6”Z5Ö>ÙøAè$†³ºÌªƒÎKA¾¢£ú cnxgË踱kÝ?ptš'6¬½gêÊ©Æ<б™^*éß:ÔgbÔ„` îö6Iéš«Át5cÐ9ûS`Y@"Eöî'VÆÇ š†ì1õ>> ;vÓ`¸—:ïØ¶ð2ó€ŽâzÏ}•ªRÕÕu¸¨yKy>å5GÆX†Wt¥íÌÉÅj +(ñÅJ=tê/7©ù€ŽVmž½R èòKŸïÉà~˱‰@yt–5 :Wî‡x¥T%ƒçîX¼ÝNtƒ„Ö缞]Ÿ¾žÁŒßÄ÷’¶£t%wš0]ÙÞŠ¸Ðݼ;ÓŸ»tU¶Â‹5nÐ9î'ïªê€õcVÖɇ€Ÿr…äa6 Î_Ü·T :wëøæ2ƒAçïàšÔ»R¿ÿn‘é‹ZÇ=2@Gâ;ÕëX%èìa:€ûTfÄ≷@¿u‰›¥ï0ЫϧuÙã>ö¼çÜå›ñ~‰Ãï‘}@Ïyr煉3ÐvÿÞUÈ ôžŒÞŸ¼y@Ï Kqð¢â~»§Ïü],Ð+=UÊþÌ=ñ擯Ú@èÚ.¯Bú•ƒ68¿Æ}Sxö‚ÄÐk{w};è ô%)W¿Í½`©ž+õ¢›âÞLз{ÔË¢Ú©)ùeg6â:ÌÓiuèO#:oýYÇbÉ,Ð WÃWÐy¼zËd!7ïy´·Qáúk­çÝ?ˆ‡pôàÃ^ 7å=J×yôÆ,úõ^ˆ;»Ç­èuýëNØÉ`~Ç·Ó&òسBãUìûï óu ‘ØïÅ7>Ôýe†ªÖ¨ Îaõäl?îÅ«2¶·qßn<ç–\ró¯*ý<„~fÍ+Ô,œÛz­ @OÛ;!ô”þª}¸×Ö|²ß¯…sh¨ø­ä ô‹V·.á<¬ê´uýiGä: œ×¹›üÛMrÀÌ—]Efô$˜©F‹E–„ƒ™£©Î˜­Stç3»1Χ{›ÀÌÁÔõÚZíßËÚlv­”Sêe§á»†`F;&àã`Æ}m‹Ì¦«`¦0%Üž f&áýܧÜÀŒÅî{¦ô>0«¦íÚÚýÌŽÔPLŽôƒ™Oñù”q 0=Ó6ì6Þ¦óÍ"çÿèƒiŽ´@ý¬)˜ŽûK^½f»KlwB<ÑñûÏ{ƒ™ÿ޲©/˜mÛÕúþ¿»`¶]ã™3˜~»AÏ×Ó‘ÝÞ·¸ÁL1n˜]ÈÌøÝ¶ê˜c±n¶¶t0-»*¹Ÿ‹¦/2ŒÿÔ!îZ“’)ì›aóí˵$0#ÿáÕ°ÓµÃa§ìÀô·^}ÐÞ,0}£'I"#Oµ0­)}0Ó†Mƒç4BÀtXôè Ùë`úÈWÚZ³Ì´:Û (a^‰uþX€™€ð º!˜)/—Ä“ÓÜ¡Î]ˆŸR<$˜ fòUlOÛ~€™Fbã¢t1˜¥¾x1“$f›e4¢IM¸þ{}JŒLø÷&ÜãÌ«“ÖÇy¥ˆE>ƒˆºÈzÇ€èI ò͸Ø.¥rï/ÕI@Mt|Ú×ÛÔ ‡2|€R·A¶dó{Ü¿™D =íÈk¯É¸þÇy=öF3P2ÛâÙ¸·¢¾s™1À½îÄÐøŒæS Ÿ8~¯ä<ò’bBÒJèl<)¶è‹ü¹³ ãâIÜe„‰ì@•‰¼})6÷ÄWM͹R bpzs´¿~ÚÄÄ´‚–ÄŽ/ážÎx¨rrCW¦6å÷Ø þXÏ8>g‡úG êV­_9:ÊÞý¦?®‚޶ ³öÒA ÔK‰]øÚ©OOOÔåÑ_³çØçÕ¯ki‘WUÞ̾¼‡¼}«SÃ÷h#ωCù€JP}ÈQìTyalOPu³Üogt¥Ï-ÔUØ(ƆíÚ@^+›âÊ:f/®»€ºSÝÏÇ_¨ž¢¿=€¢sjG˜.ò¹„v`n PîPµ”Â<û¾‰íÞ¿ï:´&éW?yòöA9L%ºhã¯úL&­æM*Õâ9Ъ&»RÆ»€6yâÙøGô_~Îæ‘€çÌ[¶U«}û®Ñ;{2€6b™.’T ´Ú¬\Ò¬@+É«<©9´gµZþC@[3~Gyshãõ«?(xt¯¢R»ÝÞ@²8÷JÕh]Ú³ÜY€öMÞð“2ÐÚu€ÿ²“¶:D#󒿃 ¨>¹ƒžÊ@e%ð?ªCX›Åz䃽¯žšS*Ó†k/2÷Õ"@>UÆï3é¦ÓæP¯1ÜÛÄZìüã¸3P—+j&ŠšÀúÚô¨‡^éøl? Ô€«÷jÞ/År•Òú0(Y7/Z—åNÊ›íÈ{ ã}ìÄL R6*ñ,ìªøÕ_쥂@ÝÜqöÛ”*P7ŒŠ< Ü :üé<ñºxžC:ǨõÊЃêéÀn ¸•ç{œµAÞœû¡zu«Eã^óWÞ@ýO‹ú"¼yíÆv®³º@Ýs£r¦n ¨:›Þ62JꪭœF*yz¦öp7^ÇïæÝŽ}ý÷Ǧüž$öÝ™e‰¯#óo­”Ö!ßíÐ<Þã ÔÔ‹NÊé?pß"ˆðjtx»ÇÊ9 - ô$U‰iÊÔi h…ÞøŸÐ/†Î]Ú}»--ñ98Æc´'¼‹7] vKèë/.䫇WZОÝïyrBh·….Åçµõ„æê¨9ò(Sðîk&@»&Ì9P´K/“œ–Ñq<íÛ@ö™##ϼ»ayBùªãÁ¶¬uÝ@+ø(jÄÁ ô ´{ñ†Wðz î™W*ÐYýàåÚ´§Yä¯ü€ÖðުƩ hsõã‹•ˆûF¦ŠZòÃdï5s ½p4íaÁóé;\55xýV¦^Œx6”›3ÿZqHè·xô3ۜɴvâö4äŪ7ý³)ˆÿ¼¾;Î(ùSºhýv¹ÕÌû±¿]);y>íÁîX«Ç:¯¦ú`à:Ö_÷õÓ¬YPà‘ŠüvCÜqë,ÐîêíÝžTu—vr_Ù´ìŒÁªR@Ë”Èlýh¹‡ŒsÔ·!“oÌZÎ-kâ^€¸OiI ­yý€ ú_ùɺ«ÍLNLþ{Ã;˜x¿ …Åàþuüë§Þób`i=¹² &n¿ÈsçÁ$@õ­QM7˜Ú¨Ò?¼ 3y%Ïùé”Ö1ÕÁ0yÙ>¹£Ä L|dï|Á}×·ca`LL¿Ù_1C«5Ý2Q&ÍËü\ÛÁ$æµhœ” ˜œIv _ÓÅ:é&ï/`Ü0I¨=D Lìqð¿WÃý4©±†Žç™ñ2GÀ$þ­2ñÞ¹Q&,è&G§jf`'âS2¬;†ûòÕ-- ¸§Þy8ú°÷Ðû¶&ªc]`²çñ½ôÈZ0¹60pL¢>M$wÄà>}Ó_jì ˜”ñ«N‚IÊáô*—çXGõç,G0ùF)¡ií“"é±5<÷íg½tqÛó[þ &—*´Ná|r–éF:8¿‹Îk$<¯á-N§ˆ¶ÁšK`²ÿsÎ:¾X0±Ïè]¯ûLBKµž«›€ÉeΧ›fÊÁĽîqIå+0¹ñòB¤Ý0¹`”;SxLœÅæ[ÉL‘ÿÞOx kÅšRûå –påBf€ðà§¿.ø?¬5][³nËðÛ“0U½ºãŠ*¸GCU&9@À‹_¬óDÀåYÕÒ vº?{x_bži]{Ÿd€à#!’Çö *³‰Ñ™Š«OÑ: ¦äï]öÓô¸kÏé|Á ãÓ¹ªcU× CeêÓ0oý£ó;â¾Ä‡ðÝåfUiŠÉ íÅÞÄ]•ë"ÎŽÍ$ÞÇ>ìvìG¼ØsËᬹæïÝ7$ü:'¹Z†øoñ]VÄ¢=%ÿº°ÑÛ°z¶àp^Éð9<ÖÈ<ó S(}Yãƒb” Øx‘ï'¢}û±Nû5ëÓçl½w®ÛpòÀƒ|yÄuê`¨äb6âçûÔÉ„sÜŸŸ˜aÀÚ£¾& ÷lÿ/’¦×d‡ ({ñ#_)Äë=×7Ç"Þ3égkÚÏávñÝÝÏ€Öýïß÷Ž¢n*’øêØ ´Þ—‰ßôo˜œiéóaÈ gž^¿ÆƒºåÎr°ßN ïþè5x=ìrÿ~Œ œ»?D›ú! í½}Îfó™%.×?F]dèðD´hï‹Ï'¾ÖÅøŠ2çÎe [ ëW>AÝøgÇ#Ÿ}@û•½(_‚|U-Å8±ç? óZ®»–|XÀ¶ÙéÐ9?—X>ø§ŸÞ¦ë:÷¼Y Ÿæïª_n{‰ñ©ï›¤–Q/Ê |“ÕCý4#õåø‡õ—O¡N”Œ[ñyõOþQî? ´O‡"•@{^¥í¿ùú÷JíÝćÈÇ,KüõÈÿS/÷³D=÷s3ùŒâ˜ûüTlï¼­]uõYé‘: 9Ô…n!›1ßCqI×âûp{½O'ÖqÙÁ¢‚×›–YžEÝû0¬¼_':¿_žýy>j¤­›Z‹¼¥Û<ö½P=b÷x3Ω Dñ¼OkCÚÐQ ólª\äíÀëuBÅñù¼yVü±Lä\4EUÑšÙÈ]<¥ &Ž·òë×ÒÁä@ä¹%N䫃ÍŸBÀ„GÔ,êÓ.³Ã_|2ÀÔÐúa¼Ï0MÕâõ¤Ø‰*oä>ç´÷|YÁdÝÍ>2òóšÇ½òÏ`RÖ­vôj˜(ÍJi¬b=•þÙÜA)0î;Æü­ÜLÎRLÁxhßæÍWK?KÇ b?<â/ëIbǾ-ߘug©ó߯¯ƒÉáÅö± ÈÓ‡ËîWÈD~íá_PC^q ÒXŸøùÐò·òYÚ"öH˜è¹þýuá˜H|3¯òÅ>mùZõ)t0aļ÷Ež½ð lí¸+˜Ðãån#³X)w€É¾Hc…‚`¢%P~bqI½ïá.Â|j»4¬~ûƒ‰å„ çä=E󿽫`"˜A™<É…xNɾA¾6 PáUBþ6­2ÿî]&ƘÛqÞ¶_šSÍÎ’j+˜¸~n´Y&+Åê«`¢Ý±ºåš-ÀÏ߃¢zGGÅòÞ¦Lùý-øËið¹U`q{\Aý3€ò»ˆ2Ú Ç 1sŠ4…¡Gm ÇÃ&ð­\ ôô„Ž3ßøžqhâòE­Ó96?€¡DÝùŒ¯ãÊå{{–ã’yï—,œ“ªTg˜“à¹ú«`\L€õÇ,̇@o“ù€–½@3ùœo%À êµsŸ~€Þú/)a÷ô’~=ýy÷©›°à9³Û™CŸºŸ›¬è¼\÷ŽÍà5Å^‘\ P_ïÊq óR¨‚ÀjšØCÖ£å’M[î«/étÚ×ü÷}0OϪ«í$@ƒJÎ~Ók8ß•W|öˆûµ¿<Ëù·’]‹<ÜùQ Î^èm¼È¤Œ×Sk¬³6 Ç"ü¹UõÐX? ž!0ÝÜǵ‡ñ`7Åzp¤õ‹Xò£]Ï×m›–^¹Ï:°[ÌÐs+Äç”ñÁ0=$ 쎎þ=sñØ=³ˆ:À4¹cNnż`7Ö#“f…:kk€ÑÌÝ_`7LùeðCóÛ÷õ_J³¸› ò);SéèSô[ù£•ý9Øuš%ÿÎB~RºzüÊí °R±èªšHÞ,wDØ-MÕ»4åãßÇÊ"&Zn®‹û8ï±.v3Ô£›?1Í=’D¿ýù·6ã>¹®dzE¤hL±5wŽƒÝ§//¿»Ù¬Üu{RÀî]oð6]Y°û+¾‘?ÃìVŸ«’¿€Æ™ü©I y“©¸Ü"É q¸±|ù}Õ‘AìÖxvÕž™Ç9mÚÔ$÷—½,‚-pK}¢I§_àœ>&Ô4R±_˲œK`÷iánqH ú—´¨vÝÊ0Û¤=ιÇÇhV2ëÕ›Ÿ7» ÛÏ}÷ÏcÂõ@“=ˆúÜnm¹›™þŒ_™ÿû D0l$% Éæ%–ËGˆ`Üfu%uUŒ_äpVÝmãÅ¡œøªï`œ&tšã>ŸbºöË>d0>úã–åw¬±uýŠãoµ»}'Áø—Àlê4ãÖ7âß-åÁ¸üÆ÷¦c!`\Óeñ¼Œ§ z±—ÁxbùÔƒµ`ÎÈ]ô ã1æ×¦_sÁ842¹ÿ òŠÆk—.ŒÇß~:<êÆÏTƒfP'R߯&¬wã×Ucqm:h+>¿¸ëÚÅÖ_¼ &œ«Üû²žƒñ¬üH§q7wß Ó/[‡~ý¤¬¯À8U¶¶ýàYäÁÕûü¨/Yîø ¢~“ÉŽ“uAÞMYW©…ºOjÜ”÷æ0^õ¶É?÷öW—µñwozµïw(ög±Åå].|ölãvæp0^q.´9*ÆMq5é©©`\yÙTIü7¨SÜŒó\neÄ}Á¼œßS»ÇÀ¸'ëµ×÷Ÿ`<Õõu+Œ?N¿³‘?‚ój‹,äÉØgY:©ÎÁI²! sz= æ@çžHÕM[1Ði¦ÇUÙ¿g&t7ynÐéZe¶¿Ñ:.Êþ× :Q™·TRe@§\)íúCM¼&iÞLêÓVj~·N‚âÜaGkй¾döŠ)tºseí óÒ|÷Ò*ÖÓSÞEƒûÂ?µ‚ŽY´ëº| й¢ð"`ãÕS׉„‚NåH‰W â8ØÖà:ŠÃÓe˜Ç;¼’^ŠñÅßF` tì ¬S3kŽ:G9Ð17åܲŠt­wåé&ƒÎ>©ñ¸K sÈäEAtx‚¿: ^upˆ$cÑ7ÆjóXWmì,Éù.èˆùŸ¿Ôô¯Ne]ßGÐ1Ö_J=êIͲkg™@‡&q9‡Õër„ €ÎÑ­£<‰ sÊk¸ö¥ö‰ý؇>бá](_úìÎÜÐ)ëz-æR:'8$Ç'™A'#›ßßÎtîäí“´Ü :Ví'.àóÿï÷í`÷2ÉæmþØÕjkÜ|Ý„<á3K!ásÝbØú]Èìj{}•Þ‡¼ñUͯw ìŠÞX!Uï­œÄýyéôÿ!°{ãÀµ÷u»ŽmºvØ=±4m»Fɪ=øÏ)´ŽfÓ@>ŒéKõÂzC¢÷‘W_Ö³õ}ú ´ Å!ÇjÂÁîÅEóWâÏ‘x&SÕ1ÏGå3vÛV°~Ù]¦7`7š­áŠ<ó®nîÏú/h_¿·»¶Ä“–hg~í,pG>-’_íþŽ8s/îyüï3ùìÓmľª®Îµ¼Bß6h »öQc¾¢q°ëÿ毊ýuÊ•Ëi‹€ÝäÀô†>¬û#ƒ0{ûؽžØ½ëòWÓ¥”ÕþH°k8¿¿uñµþ˜T‘ »·žTÂ?ƒ]ïîÞχ°ïjêõ°«W*~ÌWŒçsª;pN¡7œBþv_Üðù­)éõùSÞØçgÂ8'ÆÍžÕ6Ù‹õßlmÔ¬Q£ßÿûž.£ýÉ[FVÁèDz7ïW0Zýx&¬' Œ†›.ò‰ÚÑXnc¾u7Íñ,ÕƒÑÜÈQgG}0úìänFz Æ<ü7gÅ<ÁèW®ö a  ¶+|: Fß6~»pÇ Œ•^²"0™(ÙTþ‡~Ù:OeäÀhêï«ÊôûOo¬­Œ-¬L){¬Àè×™†e0Þ?_^íF“žÚÑÐO,Fá¢o[”÷}ÛF­9õÍh—\Ö«¨"Ž8®Ý—æÁXØ=:Í Œù?û³VF€Ñ'öwtå'`4³·$Ôy3Ö9.ÌjÆ'çn¾; Æ7º¿8޲bó`ì“ëõÝÈË›,{À˜OüÌjK s_¸±NIŒÙoýlþ9N­±hDc½ ûvu€Ñô§Gf;ÁxÓIï¤}ɈK"·0>Œz8¾?{F#œËñe 8“ŽÃOÁh)p8kXñ¹ïÍcŽÃy›MT‘ÏáÏ¡u˳à{`ô¦+O Ô t|ÿýýžèĬŠHàsvWÆA4Ÿ? Ù#AÙÈoË\|Vø|ŸYz¨?„<ÉD~¾t §ûT/T€Îù8{'äM=勇@Ç3mŸ4 òƒ·üX@~’õ±ü°V :{rã?¾‰Òs›©ú!ÿZÿkA?3á—ƒ‹ÈW›o‡ ÈÙƒéÐ(ÛEUÐÙYП‰|AâýS˜×¶-ð¼T è¸*ðH1Gšz’œË1¿^ùÃËK #-[49IÝ‚vº±ÈC†šð€FÃ:rü;¥ƒŽÂéÐúΠ#°ýqMÖk£ÁuÌ·EéáÍБ)ßÃPôÁ|ʬ÷ž ¯}÷ô¨˶Ê'MègsÄç*ö¯ü}Xø_œ\-êÏUô¿õg©lt¸>åXÜEþÐÙ ˆÛÆîÙ™çi cï¯Z(ä :ª‚~”0Ð!ÛŸaqêH«ÿƒ'œ« 7¡ËtŽÝ:•‚õiLÆÛðuÀ±QÎê%¾ÞPOØŠr'#ÏýïóXì^4‘“’ö€]9é÷îr|žwèM)8‚Ý«®ç‰Lb`W9 ¯³ˆülóÞìÎi‡?B>¬Ì{'Qxùÿøƒ¦÷ˆ¿öÏúÇ,È»"µ\¹¨7ûòŸÎu»G Ф1òø÷ºu¼ëo"î/U‹øzñ¸&¦Ý% Ùÿ}‹üvœ½f¸ †L¹ô«Vn`¸-æT< ™Û™h[4Áp}Ǹíà ¼ÿÒg8c wX™}4rƒùõ}«O8ÁP&÷_á60ä´ç>5ï†ë>³nðƒ¥|ÅÏÒÁ`èÅ‘æóv`(?°}ª‹ 7æ^ÜÏÔ†\&šåš`°ï:À †76yÁT©Å½0%ðÀM0änÚhS‡u¤4 ®c߉ÏÌ÷ðÁtñç [›Ààï®*ŸÏƒ!Ëé¸Â3À¿àÚªj#Ì”tþÜ †Î$ÌeðƒÁªÄß?¸LNzœ &€ö·ÚÝE?ƃöp߈!× ¬ß3üF ´gn¿ï¶žWúÂ,ù£² ´?ó]Ú1Þ£'¿>4í‚kKhÿrÝ>ÌÚËŸ3Êr~ƒöÜýŸ²¥Ù Ý5f]FzÚ¿E–46„‚ö§bÑ5xŸmòæ6ÍuŠqá}û­G½ôÅA{íÖ%sÐn ~J Ïóè8QÐþy@F¢u´ë»JcXô1~qé&ÐþèÉô—ãWb2ó ýTÖzyíAû)Ñò?ŽÐnÉÛ•ÚK|Ã_î!žÕ Á"—m =-/üɽ û 'óÉ=ÀóÕë¥Û =þ7>Èã»èª¬µ ýçùÍoEZh=Ÿ„hÏì}W®m ÚƒFµ3.¦ ý2°äƒvP䌸Ÿ½åÊV¶.jå*P¸ .´Ë£Ÿ—hÁª&Pø·n?Ó4Ï_+d4§¨Îq Ñ%4õ³ýñ¾Ó‡¯@; Û¸ïÖ*ÐÜsö»Í•xrCЈŒ­•<@‹V°ì~´äõ9äqòJKê¸wz*•L‹vÍ©;Sq ýœB¾’~ãžú¿þ’ÐÎUô°Gá^{>­£å¡8Ðü¯Õ¦:ažsÌëž-lî`Jp&Ðùü%QÏÒ’èsŒT-¡y^/} hÔŽ®À|ºoäªD¨ØÅ2 ´ðéʹšl E6™º€vÊP‘éÃWÄ«õ&´%hÖ ˜v\·²åoÐN[ø)nÀ½9Þ†ÅíÄ: ¥¶'§ÜÚ†¸¦9—íb¯oé∲ ®Ç¾Cm?fǼE®9˜7’§±^d^;Ŧs½EûAúø=u ÝÀžÕ"´üÞ ›ç|º»À] ˜6–ê5ZŒD©È”Ö9vw§©м%_ž¤ãÏãòÔ=vEÄsQ=•Wq‡o˜Lz ÿ~O¸Œ¡W_}»-ZI“I`p´0ø:îKV5ú¢Ÿý‡MLÈcž›õÿæ]ƒs6v¼ÏîAD@ž¯Ù0Ø«RŸ"| üfn›œ§ >á2O0°þ¤ñgø6ž÷ìÛ¢« ^w_ܼô-UY B” ¦zÁà@ºñíô»»#jó‰Q0ðeÎÓ31ƒ”çÆëœÀàó\TÝoÌÿwøÄ&´9¬ßÔÁ f//±³íÖ…<%#0ˆ4é9Ì8b×¹T'‚A¨Ð2—¦xÿ(V®[ƒ3×ó’ç?»ßþâϬaÏ”ÍB¿2ño‘kØ÷+/Öÿýæ@ òêù‡D§“™`pé0«ƒf4œ¬­2‘`Bûž§¸æ3DIZ9øº‚Á‰QòÙ¹`FÜ—{€s3r?¦Ãvkæ[±¿`9ï§î`—»yøøãëg/‹3_ü³908ì|r³âöyíMºÞYô»ªžÏ•4çžkïlóïs|…L7±÷ýá äÈ=„Ì<3´dE²Ñ<™m! ÈÇ_SÊœÊ"~'~ÈŠ_€lYrMù”·, ã}§Y|¯5пâë÷\ »ßß¼Ê dÆè¡·V“'Àþ ÈÛõïžäʲˆ¸¬¡È¢D³#?–°^«­ù¸ ·5vÉha]êËË,@ÞEkM€¼kdú§¾ù=›qYßGñà ›Õ]|€xý–ä_Ã@¦8€4ç_ M’“2»0.U>kä wî?³óh-”Ìç5Y‚°QÃMÈ’4m Ÿ™×}«;“+æ1ýýqÕn¼6Ú deÅ‚ˆ ‹çÉϾì²ð ›Ä›Ÿ1_cJŽr"å¤Ïª¢âùÁÏ»„¯ÌÎàö“Sx#äsð2¾²P«ù¹»ž@V*øÁå„yëÞe“ÕѦ\ž½)dèP×g.²tEè/× »²B÷ÕZ 1DnToFÞ›’žtWšù§ÍÝQÈS¨-M-@³]÷áÏæí@³äîÈöF´´ií´š~´kwÐöI©àsJKÎï¿4+j¾›Â1 ék¯9Jú ŒHž…4<ç”îT›š½^S;¾.Ó \Ƶ‰è×Å6zy‡˜¤<ùTã74G\~4mÓŒ®‰ ™X>¬~V| ·…—ñÚi0m0hÖDþü‡’@#ï™[w7ýGÿìÄzj§˜qïÖ;¢!ÈÓº'YCΕcýW©+÷ÖðšÏê‚™'ž¯»ÓÜæ4#•´†Ê"Äa6q®ùŒòX÷Ð^ìKÇÉøf"ÖH~øõ(ÎeÌRnû¦ò9¶þû½µ®²³ò®ñö’ÀX¿×DH­ÎF…LAk í½phg ò¥ÞsAs7 <|‚º€¦wa_´Æ/Ìúœþ4³Ï§. nÇãÆX/‰ý¹Ü ÄÕ{æÇ0ökì‘}Xônÿû÷r=ÐKi¸6ô.‡½ú< z‚Ò@ﮫÎüiôóá”`‰½Ü[GoªÙƒÞWc±£è×[yœéÄ'Ð{Ø2&ezMjZÇ@ï&}ÇáåzÐËhYuÓ½”Êl?«@¯ /@Ÿ¼ zÝã¤Û%i ÷Ù{íÃô^·øÞu뽑˜¿§½^€Þ‡¿Û«Îñ‚Þ”\=±@¯ãóPIüèuª×±Ýz zM™Õ<Â<Éö´ƒ^E|ÓaÐ$œöô~JrŒô2ažêK"™ WwÖ(!H óÛÿ4¶žF?Òg¸èÍÝVï¶} z?¢~:<ﻸ½Öcþ† ¹á 7ùþ¿uû¬Ao¡mŠ#«ô¾ç““0þðz-Ãxа ³ÕAÜ=”ú„ýØVáÝÁ.Ðkþ`ökÞóÍî› ¢ýžÝ·ôÚSîúÓ Ð²ŸÜøÊñÝ©~†ók¢®öaÍ[×ö=þçW÷Ôõ6ÎK‹i8t4Vÿ÷½¬ Ka:éñ )$Í‘­NÁ.;«RÐø#ÕÛ{Š4¹‹ï2Y€¦]<ï€æÆÂò„ Д8#ӯזÏ.pF‚¦lÀ‡³5† i°ûä™ì› ©¸ßöýå Ð$ßàj=ä„ñ¶’ýb ñóÚ=É“• 1žxÙûÊЮ«S„ù÷Ò 9ožM.þ»ézì ©@ùøÕX4E–Â5›Þ¢ÿ;ºZÀÐøÄJª²C¼µ÷)ïÊAs“nëÅn%ÐÜ&ÐÀ¸Ä¿&OôM9¹î ‰ 15Cš?\šb潡w–@cd’j¦áƒq• ×kƒæŽ3œ7{g@£&Oï¦F7Ö™NiŠÔDü¾_w'‡€æî•hýEÐ=AÓ®Å:¼šõ}¨'5Õ„õæA§+‘¬8ϿⵖahwÙü×|óZ‹Ä°·ƒÆræ§ ÐXlеÂ<ªí£›A“¥w\}=q„Ì'Øõ`¾ÝÄœËÏ?óï6©â\Ž$|s@]²ðïï÷wæž$XCÝ7Õ{}"ò×ìU¥µ9n´9G|Ë™€6™ÍÅtü,ž;>ýs$ ãvç«u¼Ú¯¯nF@®¿—ê @[ú³oÄÓ hóÊ,+‡Q¯MnŽ;pùúÅÎKœžÄ:iÒ—V‘ÇFŽèPcÿFv;½Ü©‰ñûcëñ¼²¼yùj”ëãºÐ~Y[ ÷í·Ûw§Ÿ¨G¼^_÷C¾^üòòtêÊ¡};üÕQ× UõLíÛ´Ÿä@Kà}·ê7; ´‰!m­ßx®¾omõäd)×M Ô¡¿ê,ÍŽýB¦Hò ê°)NK5mG -WÄM¢žüɧÀ> h3j¤^.Ô¥s~T½Ã@gmš{À‰ç –Þ·È¡gzðõ`BÏß/~qïcß*‚ùô¿¼¬ïB{.üyu4©é9Îu2C)Bõ>æ±X¯î”Ž}à¿]/…xwý6ßÁ†þÃ¥¡!ˆ—íàžü&œÕÞƒmûzþ÷9P§¸-ˆù+À0²ªè €ÏñÏbÒú?‘£¨ ßK±¯Îèü†% Çôüþ‰Æ €¿£žñ€ö ‡ÕN€‰ªà„Ok Sì¥gôæ^Ž>{ àÛ*ÿÕdK€9Joæ Àróo.´g‡$§V¿·»DÅÌÆÝ=a+ °²ý÷[$¼µ_K?Lþü)UE‡¯L§z)žF«!þ\àÆ•WŸ‡¼ÍÔ䌼Ça󥘱ôXOgí¹„ñ²ÅŸ„Þ,ýþ–¦zœÇ+ª»¯ØhóUO'ÑŸýg÷ Ð[¿ÍÇÖä.æÕÔùíí†sx{+ôÐÀÌÔþ·'ñœ§Œ)@Ïô6êî8ZÍöÅôkãÐãftˆŸ@žæshuIǼ-”ú|"ÀX]ßäS?/Þà?5ê¢öe””M ÃùpÅ?øï÷±óä m<Ï·oúžðëZ_é›N€ŸUdÇ,$ª³¿ß€dúþïôc I.´ŒT¿2p.y¾¦ÝH"%ÁÞJ¿€¤ÉɓԦ$ÛÔÎg7Åñþ®»,£>@2¾{Âoìœà~ÏE<ß{0ì¶y=L’ºïÞ’÷·€db ¿¼=²7dÝ I8…Ñ+Ô$>äÜ›³Hª@ÛN¸$÷¿ùñÝt IuºÞˆ’Íé¯X#>΃/-7‰S's6­Hr}ÁïŸð ŽÂ¹¦ƒ@“á›s—’NpÙóº@2Ò$™RŽñ #ƒ!þ@’îV5;í$½ A¦Çõ@î}öàÌkì·ÜX$ê#tŸ›î_Òz—O¬s @bÝ”Ÿà\…}K¤ÎF¼oÆw»>ÉD­]¨HZ íYyq~œû2K°?ëDg> 6ܾº®H;ùsyOä!î[y·¢Ú`ø¶ÏooÔ‰CÓò§Þ iûm¡ÅŒ|<÷¯éõXAûX¹`wØ‹÷·UIa6A³þ&ÐJþ½=whw8…3Q÷å+™ ¯Ç}°¤›òZ.h·ôøXýñù¾2|šˆ{Ý-þqOp»óX›ÿê³ >;§O@»AŒ¸sQï󨹃Ïÿå£1È;·‚2^ýû;¿^çȘ?wòê§M–÷;B\õb^«K”aЊ/ôõù¢>ÌÛWq² y¡T&› Á‚x/~¾ŽøJ5¤$·™ ®oª‘¨ßrD†O!¿åÕÄú…=ļ>Y =¸§ìˆÀÿ i·>Þ¹å¼hEO…ÞF½•'ÙÑ¢ŒûåQ]7¦Ä3'1t÷Ðüfï8uÜ£‹¿GÔI«¡ÙõÂNQ¼î"ŒˆNþ»_þºÌh|çÞÕãëÄmW'NÜÓ ’¢ î5:oƒó«îwcÁ×…â¢ø3/ƒÐ^Ù‘qýo÷²!O¨i~+x†¸Ì´Ø&ðu¢à­ÁäÔÓ·ÂÄæ+PGf´dW ÏÝbÑHVÂy~‘Z¬ëƹޔßp téF7[jÐZ¼ðJ]ŽÄÏQW@7¨ºŽì¿ tk_ñwenlÄ1 ¶Ð=î°…oS"è~ŽK&ÝÝ›2Uuîn\€íÜ%¼ömâ~tË·>NØ'ºÉóL²A7õó±XwÐ=¡Ö[µáè^Ë|#mŒ~7ŒÝ.ÿÝšTß“lS û¡qG,?è>Ì8·D•ÝoœÈÝÇÇ‹®)¾Àü|-s¶@7›è¨©[º¯2ï‰÷€îËÔüîÎÐ}Ã"5´út]î~¥çº„ô5¼ƒ@÷jî¼–1è¾–èöíœݧÌ69g>‚nuÁX¿Kxý3¹3Bt‹/È®U #^ÛŠª Û9Ëuxn€32¿LÇñ½]9#ÀuÆÞŽ20þ1ûü®I´ï=KKÒA·R¸@ijtoMyîû…øëÒ.,؃îå'uê/È ›“GªàÂ:ŸXv c¿­›x†¢ÿ·=î™Á [Ñ»ÿaÎ-E™ï€Ø"è,µx,Dáÿ}î(q•«Â³ˆœ¢OfƒÚÔ‰mr‹ã ö»;¹rî¨Í?˜™j‹7b²JÛ@mÕïþ¾< r[½Í.²¢¹ùäž6Œ¿uc•k=ÅõŒFtnQé—Í¡,¼¯ tïuï@$©žsôÜjsb\~B@m64é›·þž!b} ­ÀÂÏ@ÜèÔ=8wóLÖïžbÁ:/Þõ{¯œÒ|D¶rÛ3‹€(ºu½ñ·ôkIÕÑ¢Pu“xe†Ø&CR€¸å€Jˆ5tE™èþ'¿ãë'ý°‘µÞX Ð=ßUg·yÝûùK±-ë€îõ`dðçK´ç6E .Ý­üÍ Îûxþ(U1½ã^’̺MB²Og1ÆóßÖ(‹ÃsÎècVÕhé2a›d€îÞñëËM ;Æ”v]KÅë} º;· å2úöœˆqÕK/Ãå¾?èžâÚŒ+w¼ï„þ|N•U@?dzh÷~úáµsÍt »ˆÝõ+Bk¦÷c›#ÐÏ,–¹ÝCÀÓñÄ6Ì÷»4)û ZÁ;l ‘@w}xd0Ðæg2iaÝÚ“ž)¾@w²šØÉk tŸ«ž»ƒÄ0Ÿû—U û…2*eÆ1N°Üá©+а鳩X`¾ŒÍœ~wp,‡#uö"ÞÝ4¡¬4Ì«Ä4Â6K&)¯mégyÎmÝN‡´YŒ§Ê¹ Âø'LE.ËXÿÔ­Š§ÐÞ°*’ƺ—·Ïd nïó/ zcüÏ/…Ò–@·Û¯g[v¨´ÚKN²3@•=°zÖ³¨Îrn)N@õ|xHÃܨ~’5¨•¾¨ÅT÷bënU >;(rú#7Pž?b{üPÕT:C­€ bCaaÕáì=gGÌëæöYèPÍ_²ª€ªw9$ñç &Dõ±îjJÓ§Sûš9±<õÞ¨%i@}pg§ ^ŸVH·~øÏ™›™ú¹€?P4À3Ô¸Ìq#N@v^éšÔ˜3w$ñ5GéÙЇ|ÌÿÛ ¥zíBccKPƒI£öý¦@M&SÖ bÜñj“y f,& Þj¶Ë$Ë.u þ绳Yô;PÓºªg{z}é{QäN Öû¦›gõ†@AŠÆ@Í=ûÅd”¨Q×e=êµ`U^ +<Íb(5«Þ¸{¯âÜÒraô=Pà |ä(W€zNsŠQô¨‰1>=E/zMîÓæWöØWÏŸ°@m æÏÈäó_êY‚ñ]á  8ï£ÊÕÿöÜ!Pnø=ïk  |#Ë¿£Þ”¯7¹óõr~íÉÄyPΖìt lD{~Ip§+(?¹ØþG3”Ûµ>¨»W€ò{ÿð ýË \“±¥|(êüzt§:(7iS}»ÃA¹÷¨ú7©S üngåq~CP¾c*`§U€VŽt×%”;S?­å¾” /öª€òóê¿.ñ1ItX0+(·Lhz±ý÷›>?€¸ûŸÉƒ$(¿6½¤–!ʯB]³Ïáý¸Ê]c遲¹A¹¼W~ÝÌMÌ»¶´Ø×†ø4x&Û?`þVù|ØGGöiµ0Äý¢;ÈÕó(—¨xdäyý©—žÊƒr­.õI (×ï®Ü¹á5(åŽþ{ì1(W~ÑØ¬¦ˆöE‘Qž;â‹°úïÖ}Ì'¶<Ê/¯0þ;Šóþb™êÈCåy¿yå1ÿãø[ßõÇñçðs)ÞÑ”Ë6¾Ð; Êq"&íû$Îü¿ï Í5Êd)áþ*1_­‹ö¨ÄÀOÔ#³Q}CoPoÍnø°ë¾=úmܰ—’ûßs#™óÇq¿‹ cjÂýpv¡> p/>ýÃà ÷º?l[6dj}ýÄY á<îoßÅmw m^ã©Á}q²"žõo^“6ÔBæS”^=q¯mâYqß •X½Œ~þ‡ì’po\ÌntõE}¹ÂmtâÚNÜm½xP§M¨$}mE?ø/ÏÕ]î{)ñszÝ ¸w‹v.ú·OîÝ}ÁuëïXž·‰¨#—Ì6X~Ãkê³Ü=k@[å‹24ø·ß¿õ3ûÔløsû8Ödõ*¸½ú,çUûáçxåÁÏ­c?èè1†{ùâ³4ÛXwiééßû2ævùòŽN£¿X)‰{öÂýx©^Ô§³oþTn@¿™]k¶«\hc-Fp)™øÅ_×=ˆyJ늇È7æU½ûúþçýÃß@)s’­MJ¦Ìý-åö­ºHs ¼~(þqö:P:÷ä]=”Ž™©î¯@iÜþÎd£5P…N•¿ Ê·¡Þ( <¿ÿÜSÝ(\|CiûòDÍZ³å5Pêž—Þ]˜ÊÍ¡íÏ.¼JÉùÜr–Y ¼;·¯$\ë|1þ´ã^.D}ÙŽu<º?[ yÙɽËã@yæÜ`̓çÜ<&@ùþ>u¯âémÞ›÷ñ8æï¹ýµe=P^]va½Ã”QÅ]?¦C2¹uÂ7ö§<Â˨Žá?ðÝëЬç3 dþÙrÕÍ´ÿ¾g#Žÿû’‚®Áô=ÿÀ= Ü{ÔÑ{ê â>ûõÓyRË-ì!V¼Qí˜)*¦dÛêÏ!îÌÚ+t Üå·ýn„–×·|ç€pr€ößz> ÛÔ6¹¡ýKÒÎ3²@¸¡˜ït¿bÇoYB¥få Ÿ \V½÷9yEƒ¬7m€OY3ñEœ—òW’K€ðÜAÞØ^qÖU>Bc„î„þ÷ÇzXì!%ý35CÇ/Ð:JÆ>%¦ÿHpÁ÷.‡Þö½ˆ{Ó©Í{E0Þè«X*œ~•´D7ËŸ1¨³øþ÷{Bú&S 1òo  þVý™:‰÷¼éËË\@ßòû=·9êAÁɹ¥Ñ*nshBÝÇo\V±„:EØÖò;Ë0úýJVsèÇ|®ó0%÷Ûßl«ªAÿÖP‡whÓï§¾óÄóÇû-ƒ]tø.ïS6 ïh9Õtèân•Ma Ì“ÃömèbÒ÷Nb}ÞHšíÌa¼¶×¿ït‰!R׫°rHèÛž§~'ŸFëìYtë‰d‰Ùtý@ƒ>ø^ˆ8®}~§lôí‘çO6](b,Ês;Ö«4ŽcŠ×âáO=ú€.pÕgåüYÌ{e¡²;ñ¾ùKèÀ|qšÿ>wa{‡Å³æL¼ÿèeaa зòu²±¡ŸÀ·ëÎDìwçÏD±e>ÌÇsk|GÖרë}•ŽõqcÝmŸö?½ºó-Åî% ŽÛÆÅïUõý"¶½‰F½,zeótÒ<ÚôŠ «ÉˆïïuZ-öߨw˜ÛÈæÌ\f•N@V;`˜ÿÈÄë¥67 Û<ØÊž äCn<Ì,@vý}šã“/]´J¬ßù¦Öå(ÍG@ŽÕÝlPæä#¼á}ŸÐºX\‘›Ð²—'Ëûr…v”ywm‡N;­8»MÄ€u÷MGÚ G6‡ßòQ1Ü;È~ͱÔcj@¶è{w×®ȶy™Ì/€.«NròˆÝÕ­@>wK I´ÈÇ”5C2Ç€–fÒÅ'ä”ãsÜ_Lœ¸salÌȧú5oÕ9¨¿õäâ gº:ýÖ=ŒýÖ·H9Tå¬áw §÷’wÌ_rŒHH”·&Ýÿ³5ÿõý›î^ÎÄ9°UœÇù~«ÔºÀä«Óí“qû|‰óíÑ©X÷æú3/í€|mÝÀqÆ•ú]ž}9؆Ø9z`_w?ã$ï•¥cÞÊn—Ü5<__«R¦äÀ ¯ùrqÎ!ã¡–å€|¶6¬ÒÌñki®®×eÑŸ_®ÊëÿæÚ|G½ÁU5Q‚:‡Ãºó¼(s»K“Qomä‘w;Œz©î£üê²^3÷c]PÞ«›41ÑÊ›"?T¨F€²D޼nÜfPÞ•¶èŃúLîëÆÀ©nPV}}ŽCS”ecÚ¾’2AyÇŸaR%(‹¼1zã‹zKܰ¶îU((ÛweÙ+²ÑtôÁ¶8PÞ èæ *( tq‰Â|b#WOÕ‚²¦lš’êJ•Þ3sÞƒ²²µ¨5ë6ü ¥2è¾;²ÊBÝÔ$<çewÙÊæ¯û…ö®àu¬zˆØnP6øÊ&:ÍòݪëöyP¦~ËÔ¾ ÊNG6½žiegªâžëYˆ¿2ã ”5Ö¯×IÄ>{VÔŠmР穊£.ÖÉWʼb…ø8;SÇžP«ìëº=ûuˆËù¬p˜ú·.²¯DãÜî¾ÒS@}»SiàÒKìW\øö}© Ìù¶Ó÷Î]4V—óÚ_œÿîñ^q|>uX„RBp4Úø´âò–e•üb/'^›vDèf¬z–>V@7¹t-> ùÇ %r¬ ùÉL·úˆ>ÿ†.ÚQ­â@·øo·™tsï¶0õxna,u èúnmJø|ïë¾CÎEÞ2l9MïÁ=×!¥©©÷X–Áo¿áž75¦~÷;‹K›¼gqo ïÚ°´óL¹òâ¾M#zžiD±S—øØ€ ÈGÆ.Û[¬—IòÝØ0´Ÿ-X-)X›§Zâ×ÈdÀýÝ’rùe+î¹6§´ä$`ßýÇÜ#™Ñ?ĺê1Þßg ¸ù×ζù/ù*^SšóNž9UUø8Æ ¿ÏËtëí÷îX²ƒ†ãöRviÐмúwùh˜š9µì;òÞêPAã” 3gX"hù[n¿{4­Lw‚FÃìÔO.ÐÈRp5; aÙ©‘ µ \mží~4No{f)ÇJž · ‡×Wo[Úƒ†ïwS–]ó ñàCHÆ__Ðxè¬Áx ‰>±Ë[ÆÍ=>pŒÖuZ• q¹Þ{U©4®‰^+>ë /ÇŸôE<[Ξ5X/­á¦v’-âHö¯>a OI´î[âyâÜyÜï4R‡VÙú@ã†Ë›f£<Ðh^hÿ2W47³Å¸Â·o„RA£îâ#Zo,h”õ¦¿þ¸4’5%\Ý_ ¾Ù‹;£A#—«ïZ¦7h´†k4Ö2ƒÆs©O×_æ‚Æ“ëOøm7ƒÆ}E«-Yî Q{~Q|B4 t©+\@#asúØиºI» ëݘø:©ˆ»+Š7342“î²|‰8[?]9ˆþ!ëø1ï65ÅÜvиk-yý÷÷ú÷ƒRù‹biåaÙ ÔD¤ù 1ÈÓÔì,û@>¡È¥œäߺ¾'+ä'Å/žÙò?_·mz˜òmýýNu, ·_&@¡ä|Ìoµ²ù;Œ-¿l@þöÏQ¤í ߪAÏÉüòeGÞH¦ƒüŠÿsý¢Ÿó‰+xQòg†•U¢«ëI‰‹‚ì±ïºÙû€`Ä1f×Óòí“ ëÛNaÝ€§ÍžÉ ¿:tsæ È‹–i\&ƒü»œ¤G¯@þEáY ȿɿe¿½ äO'V¿ÍB»Rêhˆ:œ (^ àù\ÕNA' ðë&t§øƒüTæ_'3€À,Ö•qõéºÓ{»š¥€pô[÷û|Ôi;z6ôù?ÆS>E`ª1s}=È_a¸Ü¸tä¿–žoúOï{úñ˲ü€~ǃÚ¿›-¼Ê_ò×ösÝaǹœùÑãÊòkœ·Es_¼• Þ.òO;™ÿèÍ| Ÿl„QÎUêÈDô=ï¦бwõ ™kÐþîàû¦ è,_m7>t¶„'AFÈw̪o÷ßÝûj™7ù`£Ñ|^;¯^  D}VËRýºôËiï1îo–-;Þßè$öùÞI ¯ËìÌpA=ýIúÖû5 o[6oŸB$°¤zyCP¬Öê—ê)?û?й˜ÓHKÈgÛDþ–¶â»anÐ;ƒñFÚF?‘o¶äÜw“ÇëeþÛÇ‘‡7Šøª”xôë«.ò#»«zê4.½„Wx_wƒ{êÍÍF›£ßG‡côG¨Ã^LÁï!ô÷`þë<Ã.Ø–â tž‡Ç‘w9¦øæ˜P×ùZ¿AÝÉ—&&±Qû_ßÒOæSÐ_»nÓàsìÛ‚nk€zŽ¥Áƒ½ñ¼Oß_wuÚƒòí¬±.­Pk·;Ð9õR¶ ®dËhªPPE½|ði‚ÎGúâq£DÔ­œlÇ'ŠPwG2Š®`=a.Æ©Ã1¿1›íb!ÿN?6ºÙľ ­ÌÄ` ±©Ÿo~×$Þ1æÛI²@Úñ«GFò8$W^­uí’Ô‰Ó×LäÝï¦ H¤ˆ|ÓV' )—kÔI¬ÒV¯J@‘M'diÉËR!ˆ‹ú޹5@bù<¶Q0H²b{RÎL`^®GGož’à=k/Ò&‰Ï›"0þ`¹ñ(Ö{—ê8‹v[Ê™ÞÏ@Òtj źÑî…‡e憵~g’®ç©~ó ™&¤¬¯CK8-£Ÿ$¢ÙñÊ® íÚÞàbá$ßgwŽ;x‰ù:}o2dþŠêô¬É‹ÿa†w4 öËÓ’Þú®7Ío$žiì ˆ3l&Ê÷ôä4Ÿ» uHvÕG§|è@Òç®;ÿ›H–Ñ÷U$›€d=þcŽ$‹ ²°ó;€$/ÙóºEHj|䦽8WÙž ~O°î¯î½Þ@œÎý³aó žÙÄôâ\6MPÖIEÏÔ3Hû:ì¼­ð.H÷’tÃ¥€ _Øf’Q7H×Qt.Gz€ô½ß…Ú_NâùŵKõ ýœšž•’ Ò¡ƒ®Ï½ZAzº:3lÃv¾fÄéŸ)Òw^­y¨ƒô÷Iî—†9 Ý¡T]‘T Ò?®xf{?é™Ú§o) =nØšV! ÒSâ6ïŽ*ƒô’—û¯O1 ýiTÝÔAÆ‚]qf˜d¤¸X+AÆt¨0N™d8…Mrpô2÷BÛ£ Q 2îóé9ã ²ˆsˆKU1ÂëÜy}ñN» 2A|ý+_Ò‚@†™eú5qdÖÕ†f+¸‚Œb˲ýyÌ+ïuýÇa}rÍùÆm±º>æödÌ_%´lN=ûø¤ ãÐá‘/½2ëÇš2llAzRb›ÿÁ)ázæU­¢2[è!Ñò =Ÿâ'Tê…ç)5›?ó‚ôƒ½c–Uó ]óòáŽú2î:;!ëÒoõ?è?×Gœ/µxK@úݼæé~ìkCZÃìLþyj¹ÙçIµcA÷È'bñ‹Ð ózÑÝ7QÇ•5‹Ë_Dr{±53hèwZ¸4rP=5ûˆU ôòÎ+—7ÊgÒ› W±~û€Èîõ·7Ö4Êâ>Z©‘¼‡ yüžå`ë>ÜëÃûrÅ®@—Ä_y~ë?-¼oð ÷òû¯‹üšT€~kÛÏÿ>oêÞ» .|}(?Ý•ˆzòÑ7Ÿmƒ¨—ËsŸºÙ$ý©TÞ¸êKŒßNn:‡¯w².>àÂý»$MïröuG®[µ ÷æÆ¢™øzPf|òÊ+Äõì»ÕÞ}Å@¯sE½Wš‘ÇÓ$êv<±þyÔÃN½OçÏõkß$¢óAý²±Ñµ‘ /×N»¡ê™|9žWö‚z~áå ™  žDèRH²õÔg£2y7AýÌ+¡×çð~­ä'ƒ= ÷Ÿ½Ë+&P?íùtá"¨Çò6Z¬õ@÷%"o5¨ïO o¹çöz5\i. .xE¡IÔ ÛÇGe6ƒzäüs« SP?To5êá êÖ”ÜK Î0 Èõók¼5zÁÕ"‹¶$ì}ñ›–ì¸> êWnµ¿˜çõ³ç¤Îäù‚z™Õ>Yç ~#‘ÄõMÔO¨gÇyM€z“ä†,*ö÷å?¦ß{ïQÀ—Ÿ õf§Ë¬÷ŸÁÖAÝ@û–„5¨ßt¦s¢_Ylò‡VPÊt¨˜ Ô££\÷™ƒzáç ¡Æ‰˜ÿUlTÒ"öí£WUæ ê7}_„§·úÂUáÕc8'ådëû§@ÝX73G²Ô/úï„㜋^cõPwyL ÿP ê~nLnWÔðìŸàcæólYð_×ãŸd Ä] `žjÂÝúÞ¥£¾@HϽò»µÞ ø¥Ké×èa/¹ó‡z"ê!V« îl x[v„FüÀó…ºëß,œ! s³Os(hÉáǧ'\†xßÃÖêQ/bî[¾N³B¤íÙ¤, t_ø:Å„ÓãvÇ…€Ð_wöb\5GÝOǯˆk½±TL7>-ýrÿ„C·OqäâýÆ >Ÿ€P¼Oç¨Ƈ/ôlÌeBlñíÍáµ@8¿ÅvÜï.×Q™nŸÂUî’sR€ðUÞÄoš•e¿¯sbÑÔw›ª6aZ•ÁÖ0„Üq®¨ƒ™@¸³®Ó;+¼ ß\±ÏbÛßµ5Ó@(*½{æ 4e<ÇùäçL‘ãP/¾Y©ÞõÐçe6/ŠzÑÁ4Áõòì×ÛÝÆ §äæõ®¸¡œSÚdÊž)ϦœPÊ–Ú˜ƒó6wÝ¿uQm+ÞuÜÀ°ù÷>µ"`@nÄR]#0öŒ™ÛÊcïÃQ*s0Ìrê®çâ}aæ?gšayÃmyW"0ì¥CÎ `üîÑkÿ>WØôÞ³ÓÅ.À°Zùì5øm c9¸&¡îüœè÷#åíþ!ÌÓί|C†de…€ádµáÃÔ/`¸ú‹*\ÀüýÛb Û€qˆí#oÌ2æ ™._> ÇÙ̸œýÀð¼Í9¢Ò ڨǣ5ôó¾§ÒÖ‡¾?» ºªRÒç£è_¯•Ùm‡ÖH8Ó3 ñF°tøO`¾ëö±`€yX·)iÂk3ÒjöŒo­SzØ {±¯z˜Çé§À)Z Ú“_þÔ¾†³TôѪœKÁ¬B€<ƹe}¬¼ ‹¥Þkÿêl_m‹ÇøÙ³oõ°¿Ú½­8Gšÿ›kXßÂFRtú³¿5cù7Ç+ô'%ãÀððŽú™rÏEyk7þŒý®yKKX×s"v¨û¸üÏ‚zNýµ‚~|Nu^{ãóŸ÷'ÿúQä¡‹²Áî&½ ž¼`YÖê×k$Þ¾»‹Ï»Ô¹"i|ÎoËvzƒz‘®ƒšòS¡‘Á¬D,¨¿zEQ6fõÊd®[/ÙAýõè~§ÅIPopÖšá< ê¥ò­­È¯¿ÚÛf£@}4ø}> ¨¿ê Ì•Á矕âSQêï]ÓTfv#™´ûå=A~éßblŽ<ÓÎáã)AõÇ߯®]ˆõñŸUóõA}êtwj¨W¿r3WE^y§[7ˆùËU££æAýÍ ý®häÝñåÁ°Þ[oòåLÄ©Qδ>¯+*öÓdAýÓO 9^uP¯°·*©Â~F†H\;±¿í´ qµ ÞõŒÙ¡yó­’h´`0¨7oÛö7ùÖ½<Ëǯê}’°—yìú“gIC4̤Yd~'¹{pþ:ñÅøzRw8ÎóΡ|„½f‹Z§»nPoÉ)LËÀ××2Þ‘˜o¢è@Þ(üûôò¼.P¤Ž)¨ÌV‚¢JH\™ÌKP¨Õ)¾\ŠÞ±CÎ@q{yèÓ×< ðÙ½dc°(ŠüâüfÒŠfÞ‰ä ŒpçéO´;6Šëýeàyuè7P¬5œÐõg€ÂˆCâÃo} ˜ÿSÑ1h(æN+¥báïxÑ~PÔk~µüì!(6ÚÞÕ®?Š{D– §çA±º¡Ï}@ññlT4w+(:¥?•» Š÷‡h£‚x_,Û#+­¤ÛÝ'¼I h™$óŽÉËÃz¬ ¨@Vþ5Šú2†M÷9ðþpN÷÷P„œ1å˜/bîm(}Ok +¤‚b‚„i¾£(úPM_P¥@ÑcߦÔoPìzk¾&\ŠA¹?_>(ÅC„LïÃJ ¸m¬ñ‡ó2(Җ븟pƒâ>RÐÖcã ù(/ÙãCó?nÕyŠ»ö ÿ—OÃy}â-±wÅÃMŸÆ7©ƒâ‹e§{‚[A¡{m¤Ââ (æ@I4(žäÛ䧈ó‘¶g\É ÙoÏEþÑRÑÕ­†¢âˆI$’͔ǖÈrËNœÐr‘»úïC%]äƒ-Þ—PxÅ®™ µ0¢B½0”Öw õâµbØA}ä’÷©0´Xr‰¬x.<˜ã·ò~&%»"/d¸_F^uxevHyóÕÓ?k3À ˆæQ˜ðþxm6÷G`(D*v;… ?¨Iö\DÞñ Ø8óý²çvCsK[Q>04H3õ#Ù}}|qˆóÖÙöåb`(?{c›6ˆ~í£b0Î¥spË7`$‡*ŸG?’sv2ÆËØ”l ù÷½F=œTÄ-Ùðs ë>Ù˜?ûû‰ògÉ'c߃‚ÈOJ5žYž^˜¯3+V@ óR4ê)ÅúÞÙMCµY¸ÒyQƒÖ™¿0‰×ß9²cV€±›ç÷×ß9ˆ+átÔgäGÛÒyÜ;j+Ìÿ¾GÜôpé,kìß»Y4óY¿Ö‹’Õ±ŸÑª/“96Œ€ê}Yu«êÛþ¿ž·s@u`ásêûlô«õã˜òÕùÄ%‹Ã‹ ÆùøYà\?¨­ûs÷Èö4PeÌuIšhÃ5£ } Æfh^ä7j òßk6öÚֿη­‚êßUjÔ,ïvïx j¦W®ço•5A£±+e±Î㼃tP“®œÇ„xrÏ;˜‚Ú–ÝÂS1ßYY1óËx}äâŽLP3ïíиõóæD‰6/éèçìP“Ëpî¶ÅóM·U“œ1Ÿa“ñ«s n yö Æšò“oHÔ84Ãnد5á¦ÆeêP“1L`r¸jÌB—Ʊ-Ù³c¿/‚ÏþÊWÏR@M™îxßñ þOãj|̸ÔÄWè;°Î'zmá¨)žØtˆ T'»bnÜŠµmþžµÞXWpFTàÍ ¨qi‘Ÿ¨ÑAMdç$ߣPN~³™ñˆž>3Qj;˜®tu`ŸêÎ>Œ  &?NXéÃ=쟎(™#WŸÏg˜‚ 5BôÅ]Ü¿ÚûÅ~Ê(€Œoö¤s^(ÈðæGpœéªæ´ÌÏ¿q_4¦¬^׼’ûæ×]@F"âIÚEÜÛ¾ŸÒIòÂ}°$–ýLÈç¦êÇ €ô›à»/&€Ì͇AÎ;.€LRjbÇf!Iä<£+ïÒ?wÝÏgð\¶ú³›ÆÖwé1™ëŽ_ —‚Ì]—Íâ± £¹{ïô-Vyü®IL$dÄê™!néËwXÖ%€Œ†[ CòÈH ¸7AFN䌻üw<×ÈzEÇk£}ëJÜïWnüugß 2Äý¢Ï6,€ ƒvOÏ/O¶ÖŒ[²éÆÐÍ/©ýqTY ¾rÁ9ý—}àx?ÈìIûR­¶d(t¢#ö«^8œû÷ôõVú[Lè s±iý}Œƒm*Q78têuaœÏù•|ÔQAñr9²žX§ª{O™!0\ò^× ÿ»}”ßÕ÷ñ»®¯ÆáJzU‚Ö 3K¾šŒ#àü¼yÏ[*Üf8-å¬þ%Ì£ü|ò?äY?ùúŸ²Xß½Ì+ÀqUO—°þoBš⹸?Fõ¬k¶SçéµsïÎÑÙõ˜^üãùÃÙ"áE?q"˜¡Õ„|6G^yðu¤në òï« G›³·¤³T¾Ú‹ŒË¤ƒÊJäÅ_¤lP™JµÓ-UÙœw ªšÇ‰kÙU J" sUYî–åÈUPáð_WŒ¼I ivûÚ‰ùpö§yªøD/)Rã2ï>Êi•ñleeäÓMõ4|UÞ´ Ù@ô#¼ÂË,*|«åNP@uGØâ6ïŸèÒ'!T>‡^cn™Ã¼î¦¢×¡]³³UN‰ˆæ{ý ºñö󸙠Ê"üf‡2¨²ëóê/…€Ê’’­bâPhܹñ:ôÇxŽ€*׸•Çç)´÷Þóv*Û­*v•ìû‹¤ÿ³“ Òõtuwý{PÝ-#´e7Îi­‰×;s¨ 9Ï×Tšb>ó 9O:¨*=º»»&ãxÔC®.ƒªµ ýí÷PYˆ‹ÒBÜ5=•´8§ÅâZäqy;ó0®P¥^ó?ÉΊçïrÉík ò{>ó¼¯^‹³;.W€*«Cä5Áàò}} _´ H_ÝüïÔ ½ÿÛü§µj¶ß0,ç@:¸©6¬êHQ½È ÒQ*»ßi/€4=_Bëê#þr°æàH3Þ:ßí”B^“2öŸri‰ÿî³Æ‚´‚œ…©ä3zŸÌê¼÷H«˜<Úh ÒÑ'vebÞ%·š½ ío½ô÷9HkdÖÏñÞéLÛÀƒ|ª‘hÌJé2CŸKÄ“ö–¿¡õH¼WLÜ…¸Ê ½è¬ÑOl¿¡Ð æoé •#Nڌۋ1ô³–½â€{‹´÷hòsïí ­¯ñøËï*6à8ó¤µl4}z€ôùz­ñ“ }Ê}ËŽp¬o½‰ïâø41Ûqr/H§°ík}Ò.ûóÂT‘Ÿ½=$L™—@:”/.â´7H6|ŠUÀøC [v€tÌI«ÎÞd/^¤=F¼¢ÔQX‚Ñ8H}›æuÁ¾N Àß|ôžÆiÐÒ†¼—^·a3C#ùdQ¬×|Ždó¤^nHm{‘_Wãö; E\¸ÏØKçôƒ½äÙ[½áB`¿C­çh/ØKÜvØúÏå'õ–ÙÀžàrÌýØ«œV[¨{Ž\ñÝ`/Þ²{¢/ó‰RjÏ’Á^iDï°x=Ø+ÈÎkµ‚½è“gr†À^vöÅc·ƒhÃ%åv}ǺäÚr/"Öãø¡¦òó¿h0¼õý•74øéƒ=1œdüãÖKÓ¹hV¸ŽF|Ã|BY/¾¯Ë{áuã:ýI`/uÎE˜G ñrš: qc~‡6%šâQÛt”ÍûZºnåÖöŠBÚ‚ÑïVÏÀøU°ß ‘]w…1~ÝuGÛ@ÄS´mÒ1q$…{ ÿ®7,i7бNËhë§ßi«[{Á?›•N¥#îË…bGkÁ^†r(? ìåtÇîØ þÚ£î¯èÏúÈ1ûß<+÷ÛÖ<ûíA· $40Êà’ö!±Lâ½öÊNüÁ^Ã=¡;y ìÕäßä„”1ýßïŸLXv°ÜÉ(ˆg½ò¿- Ä‚ž÷?²€˜ÖPyJ¿ˆ·Ã,ܬ€ø!t·ðU †nÝô±ý*%Š/N÷¢h'õœ²N5îTâ¦=+i@t`„Äï> ÄܧZߢ[€xBîF˜°OÇ31]Ø Ä˜—ÃÜåD º¸…Fޢɕ½vˆÇ"ÕûÉ/¼6l+¢ŽÙµ¿Î@´ÞÃbs¬ˆ±¯u×_Sâ=ÂþF m´…áÏ”#€è×Õÿ6ˆ§}ýe7ƒ'ßߣg1§)ê«Ìoô3qÙ8 D­Ûçž {Ñ|æÊAOÌw{8ü­çúä¿L@4îIed:ñÒ9Y%Ñ:¬+h3R¸ˆyU/.Y—ñâÚ% ©m@̾.fØÏåÔÓW‚™˜r~@b‡}ŽøGÞ1âñ ×ä˰N¶&Ë[ãwxÿöµÂ8 >î¹ýÐˆ× "’¿Ñ?Þ|âë BéT«$öí!¡‡@íbP_¦h ((ý{@):­iuívîñò É  ·ÃWzÈ««œŽZ€‚ÄŸ3l<@xw=hQ±²íM7û6ƒ‚VºÒs1.Pdcò»õÓ yQæ–Ÿ|;ù)) Å›Ä¦× áwuÙ6…Pplg9šûuw^…ÆÐpÁ•.¶ „¢[ c9P0é <µÅ eV:¢R, @xN’`ÎÅ:‰f§[°£m’ TrúùS Äx–ßãÂ9µ}NÊ•@øá¦¨xØ¿Ê+Òv÷áû ÂF§b ÄÖz¾òÂX¾--k¬ëÂv1/ñãˆcɲhÓÆUPÐô»ñ‹¨ ¶78D@aëa­ÌKÉ@è½§6!„ýOu<Ùmˆóa78Óº „#_KâðüÑ[µí§A»÷¸Ï¢8(æ”é@xîöû°ò<¼våDeº¡Í ˜ü-„{ƒ¬ªŸ`~=_ãýcØ?÷FÕzPûñ<ù:?f mÃ+U@A{Qæê`û³‡‚î‰7‚ý·?>¼ûKw‚Ø™ÁþœÑê{Ø_nÜÜûÌ­Ì·ÎVQ°¿@øÓ(^ŽçË÷O­N‚ýÕ}­ú×Á>šÞ/£‡|‘~$®áÁO°¿n1LãDI­7º†þ‰ºb-Ñt¬WÇ77‰y¯­Ôú>F[°ûåɰ¿ÑR™}Lì£XÝÝ\‘Gnf{÷EÖ!kÝïxžk/ß{± ýÌ_mÙíŒu—7ÿÚ6öiLsBû7Sÿö§Ëa݇Rõ‘ÇÒ»Ž_°Ï¶žìbû¼&·xwä±Ë¿´'0Ÿaà¶Ðd°OŠíðwÑDœ>mö·÷ƒ}J,çÓ‹ g¯qî¿XGhz¸Ï¯õ~8¹H€ýÅs³~Ä“²9ôZó°?5W‘_³ò¬È³XW8ʇí$âØüd;‡Ø_Ó]-¿î‚þs µå?x?‰¸+m–œÙç[OÁ>ó÷Lôª2Øç¬ZF¾»™±}m/ö©“qõ¾ŽdÔÞoеþŸ›cj“éò·‹ý@­U{Û¸ƒ Ú'„Á"oPëÊyä}ƒÔÞF>®Vµü™Ä–ÌPË–ÐŒt'ƒÚÍ?R#‹»@íXTu‹¨µ7.O>sµ7—táø»@¡`!Ô¬ž±€Ú½w?Vµ³¯‹Nšâþ˜ô~ßÏß ö|}Pa!ž°~Ùöã¨%µ}0+À½õÀ­Õª1P»ìeε/ÔË”:¯FZÓ“‰ñ³¸®ÚÄÏ jï:N´ÖÞµÌO>p|µ7ï¾Ý<•je‚~.KE 6®éʳ Ô&ÂÏXuZŠæâÉ-¸gè<Û‰x#2ǵZ•_rÎI­MJ÷ÎeœCÊ>Oú#ÜCS'v aý_ÍýRÞAí댬kj°·ÂíösO9pŸ-»}ÑЋŠy®©É{€ZåÂ!Êý× öýûoéàœ3óGáÄ—9w–|Ô¢Ö‡JµÇšdΟ¸w'Í<ÑÙ2jž•¤cãn 6V8bf,roþ}½ÆÈÙÔtîåùrþ¾›o49oÇ’í5÷@.0ãšSÈÅqÐ2wª‚ì1E™¤Fc?1µ 65 ï´¸ûRJ&ÈGt\sÚ< ²÷¬;kr@v±ñ’ÈØFót:?y½ ä@ÝŸm[8È] &t ‚ÜæÖ:¿‡C Çf(Êú¡£*µ ,¿Ï~$¹ëg êK%€2ám6ËÑ- ìî%ÞS ʾ®7ïýû;ÔMRå­`wË»ÀolˆWolj‡(ï¾0"·c”•6~›e ùáô¦LPæÉá=4YÊN¯¸wÄiƒ²½ÃmçDœKR䇖~P¶¿Ñ=x”¥âfv„…‚²ð !>Ä'áìa_Ê6;(cד@ùàÒ P6¸¹û~×IØ];q®F”U2ÞÉn…Ý«·¿*êÂî;ï›é?e‡¤ òb2Hñüûw£`<æoöJS$¿½aîɦºÌtÛ· YÏ1䒲ǜeG@2Pòê&¯ÿ@ÊÑúøÔŒH¥t'hFñƒÔÆ¢ÏëPOKjlÙ=½÷H W.4aÉCþ•Òƒr 1yÆ k±$kbf?xbês7Y€dÏ>?Ÿ%T ¸»Çh¤ÆM?kÅr$UôëU72‹qΰH©?»-Ljƒ”Ò3§H 7|\ùMn”$mª6?˜‘I»D˜_ H&*¯m;ú$OÈ_öŽ(I§Ã;./üI…A“m éÊîÓŠý¨ß—ñÂóÂÎÃÜ ¼Ë^ºVv$“™4L“/ƒ”›çÅWÉJön»ßArøZäcí ÙFm‰\ß’¥QI'É ™æ)%½' $½’y¬’±þ™ÏÇØA*1æ Óõ÷ 9>§>ך¡9!îà [möåéOpÐ3t™ÐË õ•À’δõ…68¸…8–.]5Gjâp°údÀ' ú߬|ÆÀÁètA•58w›³É8¨¯ºÖÌ´ö€ãz´>æÜÞ„ö~©ð68˜‡ªK_Ÿ÷ 1÷œO˜¯ë çŠ8Ð7y­jtãýÜø•gÁA›¢”¹ñ&8è¨ï>ûáÚ›·ÿ÷öÎÖÍlWEœ¿Ëb´­0þ?ÑŠ/"ˆ/²|$|¨ uo£¿»ùç›/c°?zs×Ç à°çø†›§3À¤>¢§ÆYzGT ÀÁ¡$nž 8xÚÛ©Š6â}ÃÎó²Ø_—ù¹âJÏTC\–eóªq.Ó ²C'1ß‚ÿ$_8ص?žïÄù˜Y4Œ ü†–Ëýu8‡+Îía6à`!ëj ‚8âäþÓà`CÜ!¿OÙýÊß‚ó·q;¹f*?þ½¯f TJ©LY¶×A¥iÚe™pTúûêæð¼±ûÎ`a¨Ôëä›¦ŠƒÊäå;bYAe÷Vžu›AE¾©Ú¹TÜw[Eî!ƒJù>ݧçr@å‰Û»ã6¾ fd+.*EÔ‹~?2|¹Mõ ¨lïÿÀ<×*½—ÆùZ@ÅÇQ1 È”ÇO¼µ3ð•Hòèm¬»µ¦íJi*(¯nÉØp'Td£^iï•3œí#ÇAåú‘˜¨Ä‘M4úã*ÿ%\HÕ^_£‹¬BN r¸?&ßÂT>UOkzõƒJ|‚´²t(â*Ê(’x*FŒæ§þ tà®Ü¥pP¹ØWrGÿ¨Ø™Ö_òÓxú3[P‘jÚœê¨ÄÄwy€JÂ1"SÙVP‰•cæà•“w m.ÕƒŠ=eík6Îå„ÐÐ&eP±ýÉWñkTºMì&[σJ©øÓPyv®åí(âݤzàsÖ¹’´ê~â.¨0©³Ì{ƒ Ïa¥2P¡ÊºŠÒAúÿë=™¢¦³Gó÷‚tf“ü®/ =êÝèFÿ2'†^ìQéW©~WXAz^cÈ‹ý5TÎ\¾2ÔýæÕ°‹ç¯ïàº= ­ô²k'H;ÉŸßÝù¤ MƒX9߃ô¡à{6ê§¼sῬf~¬’Q_ÂÒ%vÅ“Žƒ4£l,óqÛµºSÒÆ÷Þp~F®*®ˆƒ ñÔV»´ç*(½šXWFÿã²HójïÊi.õYß—Ž 5´OñÕç6ŠÍœI)ýRK[oß!o6‰çn¾y¤^¬ =<«Òr_EªRdAº;?ágäaŒ›Öý®†yU™(®å] ݶnb¶)¤tu|bJ@úÅø,ó¶« õ[µñá C–­‰ã¼Z R£—w®læ©ÕÁ•e¦  BÏèéUß7_ÿé÷§øTAšÉϼZg¤×kÏ¢€TVM¶ý*H÷úœ®Æy+¹²7ò€ŒZà·íC8§39ÕiK+ }€ýJE:òPî¿u;'ñX¥ùC¶ ÷Àû?àîÕþ¥ ’¤OM"Ï¥¶iù¿ª‡ÛbaD"^ß!Ÿ‰)‡kvŠ)©Æ'¬ï+¹W ½¹­Üà‘´Ì½î8$ço~qÒ¼¿ŠÀ!åïʺ\pÈ©*™yÍ7YŸŸüï3ÚywY pˆ£.ñm³‡36+«ïÁá‚IÊgä‘üÏÝÿåCÉL«Î-ôËb a~¬ ññw‘—Ïœè>Á{qWð,(‡Ìÿ²â‘7ÓÿöœX‡ür•-O¤ô78ĬM/®½Âüj6¯÷&ÃÅTNë|ÄÕÙ̢̊¸¥?lkD¾Îjr¥±$bÿÖ*£óØ_ò“×Û‘§/î‰ã(—Eÿ‰M¤‘p¸œñÛ=õ_Êç9æÀá’úø5õtœÏÅo`Ý ƒc ™h=u˜Å3ïlu9…xí#MßMàuƒ´e‚'αÇqÿ^œCÄÚГRp(lÔÚ˜GÂóÝßÂ7ý’Õ¿ß»ÿ׎‹§ x½G:s´H:Ì+¡ê@’©¡+€H;ßþV‹%ãs¤<³#fõXí*{ÿÔ ãgúHš>ñUSA@Ò3Œ±â|\ξŸ@|¨EÐ?‚y‰ìÛù§Xhóâã› æŸ.HÌâà/u›Ôg@¼ùÀhæõ; q3åI$äñÁÑ<þt f²ßÿ±ÄT½xƒfC ¾ê½Ã̶ ñ5r5¢] ["ì»]h{;Öm‰‘+œâï˜Ð© )~Ûmî}H¢·î¨TŽi³ºØ%iu Þ™Ðo)ÒÆ¹uç¿ÿâ kgÃF vïŽ9ç)…uF_œÑqbÕ¥¯g>i{Ÿî¥@œ—À§ããÖh_ønáÒ†óÆÙô{@lÉJç_]b…ý™ÃE'€ØÃ©ß$˶œb5Î5á ‹ä í£R1ÿ Å›å›84oÛNþÄkßC5]dxU5ij ˆ_¿ð¶°áµAZ4«8(ÈóIþfe¯M„n®»B­Aá²ûެô£@˜gº7¡~ÔÛýuj@aæ?‹çyj °–~¼QM«ˆ?l€ÏÌ&Ó¶š‡Üÿýû݉¨£ê@H+°²dÏûçÊêoï€Âíj§ÀO p7¬ãž(¨íãAa/¸'‚¨]IèëZP8™ý›õN+(LûŸ—;÷íørYú(TfÔ=™B ÿÃ7m@v ^‰0ùöémôà,÷¼µ1ß»ä×X‹´AD»n]äOš­Ý; „rÒs±®  /Ñ÷Ûäg¢Ë·´Â³ëJ%p8Ç}eÓ(—m·S…³¦Þé_A>_l2YùþGI‚ ?&¿g‚§äÃO„­áʵôrþË pi^8y1øË‹ÊŸáïÚuq <aŸ*~òS?OJf…ÈÃüDy ÄyÖ0€Â¯yŸ– èõ&’G?áü^ŠüàHúßû ù žÚ·¯G±ë =­ÀqW,W˜)+8náv E?1¦^ŸæRpÜÆõß@éEpÜøåu]F88rÕô°÷´ Í/ŽÇí÷†í 3Àq«ùí?žÛÁQ`jü<ëO¬ã,-: ŽâŠ Ûㆀ?'+þ‚ã:3H†8r¼_/7ŽÜ—¹$0žË%ûÆñ)pd]Ü\ãÓŽ‚ê oèþàÈûî뮽x¿]Þñ_\X®…âàØ÷òZžàùÞãਨõjà§8J†|ޖю¡¯S÷u‚£Ä­ÓMœºà¸ÅÅ;òïYpä ô³dUG©k}íÌ+X×b›©4öϛܼÀ~™w(ë=‰ö?3Ñ óõñ ØŽ2þ6o¸…ý}‘&ö UªþÓmü…óéî‰oœÄùüÞ¿Û³ óŠIÍÉb=‘ŒGŽ Îï»^I¼Ä:Ï›ÍO#^ÕÄ‹ŠÁQTÈ &¹ýœÌ„Ãpî9W£Kpžë%ói¾í“ày ­Ï ¸év;3¨I“óÃÇ·€TÜ:1ÄU¤’GÛø‡ä)÷º*ú6?ýJý³H|óneâ@'ŸØ$pH¯Ä«­déé&÷Øç¡@:^m¦¼à ¤¡÷ÏŸ•é–€äèãTä½>þ¾Ç‘o–Ì—=€äpvЍd$95µöÁ@Ú×ɵQ=H¼ôqö! ;úóÚ 5%öÒ’¯ 6§ð4Š~»çýA|çH¯‚‘_Zã'‚nçé=¿¼pîw¤~ŽYÒãáuJœÈwU'“ûþ)ì`µvY„_wóú ©rKhyv=ìän`?!+¥áãûø×»éyÞ&ÄÙ§®ã„}|“‰ÛÓŠ¶¶ea›úw ½õkÜãbøüÿK_u÷¾OTR!$$•H–3f33ܲ„V-f *RÖ6$RYÊ’(Jd+„,IEö§Åšˆ²•%ûR„²eùÝ}?¿çŸó:ç}îuæ\çºzÆLÔ¿ï[é6¯‚·þiêÓO@ð;j}/õsn Õ=lW>§]jC½ŸrÂîçõd 4)‚Ÿ_B³ç;"ÚÿÖü¥~Ä;µùîM¡þ_*ßðÌ”¼‰«Ù€ ³Ó+¾{‚ ë¶ÕZ!©,$îóm $wþ)ûâ „Ó!3»ÐïYuu @8ù[x®° !&§¸ï^áùU‘ùÈSWÝÚÕBùþ«ƒÍ* ´bù€ 8È« „å § ße@ý]>¡ªó[¾²x[ê l>q*-Ô[¿ôÞØºýY£â> ا8KebÞ2ú?Î ¡Áëb¼{¬¡0)` ìÂMŠfþ“7 ^ÜÒ(„ Ù/–À~É·<¢Jƒz©rÜ››£@8‘Ð5^„ìÛ±3—pÉäÌÀ¢Že¶mª ‚ÍÅÄøÜRP_ õßå „ˆ¾§÷Ú þ{±¿š«ªß:¡EL×vs/4—‰Z…"ßjûßçÌ‹Û÷?ÿ»Ìç†cï‚yÓßCì¦[`^Ýkúj9ò¤>hTóº<¶ä®v0sY-ëY˜×ÈŸ¬ÕÄñmf~™ÞÚ ÎT"ï©jÌ<ÌQózÞÖÂÈßgèv/A¾Soq®ýÃ0/œÖšÞ„£m„–6Æ{÷WcÙÁ%h·(|µsÇümßP¿{é›Â”Â1Ò¤°ÅÌÿ›³—%ZaÜ7›7Z7`\^—oF`^Ù¯÷ùòÏO¢Ü¯w‘/õ Â'‘Ç~^.6ß‚ë!Þ®`þqbHVíæãì5)XŒ~¹©P7y+´|݃z¸ŠÖJ>†|ðã ÔÑU!$±A`^±Ö-4G Ì[îÊv”Øâsc“«¢ïq<Ó±eùpWMIPY:ökö`­òäæë¥‡‘6ùé5†Äá¾›¬·’ݘ¯O„ÓCìC Ñxÿ'ä•í³±µWëpÔq%¡»bf@ÓOc»M¨£=w ¬ºÚ¼Ó&Œ÷И;?O<BÛ¿ï³ÂÈäHhBâÊÏûEÄõ–oCÞ†HÞûÖ‘@¨™<+çŠ:=x™êp¡$³¥á~¨÷£Ö]= ÑÝm „€È2gâÛ™S£rq‰@H¼’q ßw„ÈœÛs€ðîÆ»î3Þ Ú+€ðö½ì‰¿ˆCÑ;ŽÇý‚ûʇ^Ϙ@ËÙz›×’g#& PY·|“¢ >¬¿]Šù|°¹°ˆxýÔUí÷Y <Œ{ï7ø-ÅL‚ÕbÀ…MtÄëù&×É&ÄÑœx‡v o<üô7âôîI#%m. F/ùŠ~M™¾}m8žÝÀD¼)-K¼¶Ã ë^Áã•æË•3—U<ÐÖÒõY€ã¸vï§«KAõÆ!‡€«XÏ“@räR ¯¥Ô¼sÂÓäË…ãèÿoøÆN¼ê$oêÂYÝŸk±?U[x‹ŽažB´–®ÂxoŒ£ù±®o¥‘…S‡€Àrجd…<ïÿ~WùF¦%s£Üyàþ·¦FêpŽãŶ©ÀÍ-Wøº ¸%°Mü`p LzœW÷‰ü®° pŸšVjŸnÞjk˸/E5nü2ps↼“€[d*šù y`~´ÈŽhäMùίÿ$7õuÞO^·påï¶õ:Zܧ÷Nç\ûç÷häðk3ÿôœðý ܳ¹“mwûHùqüó>x¥ óÐêb–7+5±+À¸/ë'Ö¾nkÆa2Ö×}w§¼ ®ØÒoŸÂ8!≟Ö·pÕôð±U˜§ýøwSìC‰çÙÌOÈ'Ÿ ¼9àeÜ×Åýµ)øüÑæÂËûpý]À[äqÿÝ?<åSŒöºS~š3XŸôÙ³—/¾Íæ·>ûE{;‡~ÊTNÝÂçmýÎiè§È$t¬ÃĨà>Ï«¬uæ·B»ùu5>À­pº|X ë;–¸û›©Æ»û˜=ø¦J¨èçu.†Û}kr´³g:Ðsæ|U@÷4°Úv è¿‹X¦ÝLçyŽ|Ð÷}ør÷!âš×tjN`о,E¼ú¡[Ÿ¹Nè^ÆÑᫎÝäúíö]tY©cGÌÇp>1úá=ЃâêB."®E‘Ædó¹3òEÔf oTŽóòýè[Û´ X@û™ŸTöÀèB+îMÜhÚü!S’–8®“öƨÿÚ aÓÇE@w±ÈæžÃ:–+H6ŒsUñ¼øO ìZ(Áú´É¥e*O€îÓ;rºÅè;kaa}С¯ žo èRf÷ÿ¾Šv‡Éï€N¦·öž?´Å±ÙÓ@+RôëHÉZí†taU [Ý«ôÈ À¾Ìýv‚²‚ ¬ãHú¯Î”ow-ð+b^Ákú ½ ü¦À9Äq?(ÿÌ^óEx”š½j•ÌŒ›Î±ÙÓÜa¡þÄ·ˆ™¯ö»R€›TúçÁG<Ñ+Wß /nd’ö7= à> E>B½’ß:˜¬ÜØŒlžÝ/{˜ºLi/po<{( ܸҨ{ÑÎjÊòêÆ{'XÁ/’ñ9µš¼ìpV¸–nw®ÿIÅÕªˆ_ׅ˹!zñÇŠ"®)Úr¿ˆ÷J‘îŽÔ}Á]û¼¿âè{_žu1¸QoÜÒå‚w}[ìÄý†Fa<éÁ}À}xì¥ó}ÄUÂYýÃO0Ÿ]î…V,àÆÜŠýM=Œñwð¯ÖýwøðùÝ%ŒªqvÈtÐr÷çÝÝ’Œ8|[û÷'â–G¥ú-ݬŸÿCZ'âg|_WŽYÖ¿?pQ¸‰ ¼79rÿ¬úßà¹`óëï\wö8öÙcøŽœ<ög1!zš‹~j,÷Ù\Ùc ëtÒîŸA=~ëühôi `싾]È òYÛΦ ƒu5õòºÏÀØW`gR00ø½].¦Cõ¡çx÷ÐúõÌÏöhq| ]v‚ÖÛ¬;Žz² ÕûH媴60<$:)ýçÁ›ºÜy „ó^Ó¼üÀ°³XwYÌ;nð·ì-ÛÜ·ëS¿ƒÖч?|­¡$ÿ¡®!Ðz¼|ï„y6hµ~UÊ£m­—¶¢Ú=2  [á˜Z~ê†cŽ€Öä®`iË"`èu.¼÷àlUí; ·*Ù… À¸ì//{1Fr??¯Áuîß™äÉ›ÀpÖòÞ=“…õš>|8ÔZÕϺeÒ¯`^Ê¥Š³¡BJWk­O%…â“ «@×à‚V†éçyôãqíÑ( Ç/¾ÌÂ~9,v|Ä÷Ã÷*›£}»^q>€Ö»5Kç­b±v£“›J0<óz-§ÿãc–ýðAŒ—Ø;ÐZ—n-Ÿx& ³o¯ù¾9VŒÜá+ u“ ôWë’Q ï=NµÿÿýjŸö¸úþ× ê‡ÑÚ@Ã.Sÿ êŒ_[Ñêûûö[:i:¹fr¯–¨ûØ|]÷L Ôn=šÞêê¯ìþ<™ê´{‹ER V™MwO‰D;~³à»@}Wùð  Î'ôËd@­lÎYÛ;Ô>.ûa{ Ôb¸‰çcÂ@MšÌNmPKÓã7êl5›ª{…Õ@í>Ï;wæP+ßG:öà)¨ýwæÎ9Pû~ÎvE,Ô&Ò/Åú×€ºÎçO*ÆûAy÷ û_¾‚þ·?†Í‚Úóé#í™/A}}OÃó ´·3m—^°5®Ò’¼>¨õT êØµú‰á'¾€ú¦|¾»+AmøH&w;æåž9¶<ÔWô;Hu–x«jû¨óV:/%X‚Ú»üÃG7IºýB©üìç\NvÝZeP_zÞ5öjú}E«æº€zN óáËs ö~ñ`;s¨[É ‹‹:ŸðëëåhŸU0ªƒõVpµoôdƒÚA1­ƒ;ñÜn3ñ—Åó*3ÎPê²®”™ÌxG.påÚ¶ÒîGw½ÀºòeÀ•MÓtßéëBÆçÓ»v÷¡AY]%\ž#NÉŒ=°£ Ÿê¿òã"»y\¸*c3ÎM²Z—ÔWú¯‰óZ<ßêçÞmF~$d•´Iù¡H¥ÖÐÄMAågNïz»¼÷f­3À]²^ yèáËVS_ ð?· ÈWxV?îê{I1²kÑÞöŒØæ+ÌCI± î&_9ÞsUÀ•f&©WÙÖ0±mÍ¿¼êxc‘gm"ÞèkAt[^‹×è¿àål âµä>²ÇÜ%ôK«½&ÍÁùj©\јgmÁÂÄi¾ãÓ禰îDcÞ²6s/ï¡_æ—Èä—ŠÞå'×K}ÈéF¼–:È÷÷â¥hyÛ2Ý7èO¡sùܺ°œr?®{¬î`˜ ½Jt–%Ö-+ðãfð2Ì«éå~à.ýåmï®[äW«Ñ­ÄñÊ`}÷ø14³Xïí¤%&k€UM:{\· X)­µÆuÀÊŽ3W»#¬«W÷5DkéÖâİ=MªQÖµ#k¼ýƒõ5kCÙ cô[ò|Ü´XÏêªÖ;yÐŽ+Ö« þ–oÒ€µn“MÅåt`‰\¥¾p—Ö9CI+}`íïî|Ÿ,§c?Š~yëðj¶ñÓV`­ý)"Û-,ù»B[޻˅ªýs= X…÷šOÄoÖ‹‹Å]¾U‘Yž™ÊVÝÅÝ{–Ta|9âýˆZŒßœPðëã·E¿Q¢JaÀ:øaY‰]°b6‰{¸xëFç²æ0ôkâu5Üç[õÕIi!À22­:'ê ¬ÛbŸ©¾Ã8¯™´c]/U;æL«æ5óžs°uþoÕu`íÈÍïxÛ,™O‰J[€õÙÄæƒ°JÙÂ.é÷°_*y}³O€¥l²Ä¢y=æÏVvù/Xš¶FæëKÑÊzïI\—“Êj˜â¿_‘|* ÄVY³% ¥@ZÖ0d¬É $Åm !Ÿi@œmRò Òúr¿[[€¤BsPébIÞ»|éŒ?.§ ýÁ Ħ.ÁY‹C@ìõMµ ˆÿl3Lµâõ¥ìç‡+˜·Æ·aõs †ì«xÄGF›gë8sòÛ/ÿ@Úõ#ÿe&{¢ÃB~â¸Ô­Ðï:ÖØK çb~â›”MÏÿû;½éï1—(­ÆÜ$ (*a@ Ï3–¾¯‡þÇfÌW‰q@ùÀÖœd ©ÛQãn„ñ·Åã’8:ÜûXCbÊÑ=üz€øgFâý²C@÷ìªå߀}ÚÉÇ@lµ½ýûsRRèD.¿>-;‚ù*k”‰ i]M÷é³­@ÒŠ¸P‘×õÍ ¯ÃñÒ2÷ˆSAe{/7#žöåå º¦°©dÿmàžW«Y°®{`lÁÔ½®;–TD^õ‰˜ÌoÜ‹QfQgظÏO…ñ×y`äÑ•Ÿk½qÿVæí‘²ýÕÆ›Àu±[s¬yškRšå"â˜þð•,ä_žŽ3¿U¿®¬Q¥H#Îø»ê•F"=]r~ú¡%ÚG&Ÿ"î»Îû‚yyF¯Ü¸ö(p')J-Èÿ®¾x1Y­Žs™ûêáˆgÎB­v È]î~ëÜ k´±¾ {È6ÿ!ϼx°[`òÖ3N‚ÒûCÐ^ùã»:YÌ_z‘·gûw‹ÁÀ¾¹XµÞø‹Ïƒí=Úùþ$ÿ³g̽5Až|ÙÔßi‹pVý©Bþ}'%²yËì߯cÜUe<–]Ë\úâQ`)çf$k½£§Jf žÙ!dXº³³_ór­·Ä`¶×d=¬ÊæÏž›Ÿe|+Pqü°öŽÊŒÌôóÁžÝ’ˆgŸ„o¢Ž`1eÔøI¸OIø{Å>`þ=.ÓöqkëúsBFG€µ§³ÿòÊóÀRu8/QƒxB[ñ²ï…=°Ö”E¯uìæH³g‚ßqÌkwòľ_Àây¶ÒBv ú«íÖ>ÌÙ'{6Z³K2+¦ë0'ŽÛ5W!> T‘ìï”óÓ„ÌÅGˆ+¶ŽÙƒ¸»±8ô ú¼£ÿDô°„³åbXío®î‡•$0ë–ôš¶Ksl~‡šF0¤W‹ó7±²ëå°ø÷Hdå››ù±ˆŸY:eIÕêô‘dÄÉ_Òû•(e@rP|Ð&6$J¥ô;ñp ºédWGJ#®Ùô¼b#>Åo¿2¹ñ,Ö¿k ¢yˆÜžåÖÍ?òÝåa×h»zäÄÍ8ûI;Ä%.¾îzÀâÂ¿ïø [WåéTƒÅÙè½ús9`aŸ–@°6 ;÷ÖD°8}u+¿}X8ö —í}6Ô„!!`a‘Å[±,v»®¼¶f-XœY4Ì|º÷Ó™r¾á`qjøúÃ'¸>>(vy×MÊïØû‚‡ºÔ,á`qîqóƒuBç¹ò’E9ôÏ“s•o+X‘Ü\îàóq¾ËÆŽ`q¨¯ÿW>Ú;ì¯6}ñÌãU:/ãX±Þ{î7Æ[¯•ž†ñ‚ýwçâþ³{Õ1?×'½êµXXÎNƒbì[‚nƒ ëL¨;¡5‡óÙëîÇ8ÑŸ6~¾\újŠs…£yï§Ñ_©£æÛ¼ûÒPXìœ:—Œ~.\½òÍø0oÿïÿ?1ù›7«Si±X°=‰ÌÕÞ’7Íc(+XNö:0WήÝ, LS§uå'e±9jZ2y0ž}<®[Œ7œ:ÿ‹«€¹g€•« LøSµá|30І›2O s•â¯ê«ˆGÛ†÷¤¨£Æpl[·0ªŒíÒŠ;)86þRê<0x£M*Ç€¹5„r¸Ñ˜Î.Œ»rÀÙ?‘:ô3Šo³~SJWàáRÄ!©Ü¡\g`JfëºDÏãõ›/8¾™5Oü…vOnè¢d‘0šŒ7~øL¢SvìýûÀÜæaë~G ]Ã{¢ïa¾_ Cž&ŸÆ‹7ߺך£byk¬*êõ™9¯<÷i` º¹-÷wFCÁîj䟌¦_Ã;-…€ÿpå³oÛ‘jnˆúÔûØAÂy¬óÈ¡ÛÌ~`næÉ¹ÈF'7-¦BëuîFÁ'±Ã4ÄKµ4«õžÞÀ˜T±d½F·ÏÍv“aŒg©yó7P¶ÿã{€²cÝÓç•b@†Dй <â ­Èì }ûÎþþ~ <ÐK–ù²(½~Ûå<¥T84¶ÿ P7í=÷J(n¤ V•E¼íèk7 $D]ÿn”}Q1=Ös@1U¶ acê{4¬¿õrTÈž=mÑòï‹k–ˆ9¹µ^“7Èõ3oŸìrVrø»¯®@YI¼'?^+Ñ]éË’€²î™{‹Pww$6ÅŒÇom±P8ÔmV>åàëH³q ZVÖÿKŒæñlŠ“§ÃªN ô/`_z ãÅXø˜u{ñ4¬Û‹inÌ[ ”µ{\¶š6Ås »ïý ²éßÝ€y~1Üg~,®L]¤ >{ÿ^˜#c¹DÒRX§øÃ«/Áâú¬ÒöÃïÁ¡o0Ÿ²Ï¡U8Ÿ‘¯vFܵ½þÂX³×-æãÓ–£V@cë·¿_ÿÌmù4ž·¸ïRÆóÀ8uNóÃq|®˜fÕ™Œ“Ûå¶ý~Œ[[ŠJ9¾ 5Âù-µU´bÕ—0†©#éßyU:1®9Œ ÇRÓYÐj›‘¨x Œ¤ž%µ/x§å~F˜ëíÔÛ½ÀðÕÜ5`¸ç|¬‚³ˆ;yÓ5~SqMbÎ2@±QO{|õ€Q£¸ß ó­—/Ì]Ø ŒûÃ¥«èÇŸ—ìʸãóxϱ´¾ÎJzä‚VÐP؉èë õýýý$â8x䊂Vj…ÙÞ•ÀQÞ®½ñënÞ2¡®Ï 5ëÔ.>ª Œ£¾Ú˾ÒM´Çý —%aœ‚*e: Uœû>õlhUòûN­æ[ÉíÒŸ@ë‘0¹ë-hÏñΊÃ]´´io0nþ¼öÌGóf¥-˜‡˜»‚Ï\'0%îY~Åþ¦È·L1¦åŠ>ë'¯Öþ”Kî¹çà¹]Øcz®ÏùyþhÅ¥¸Ï1o§cPêsûªà=;ŽÛ  nm-*Äó¯bn•ç}(:^³ž’xÎYûø—Ê ìkˆ7hÊî’u»Æ%}Ÿ5ŠËz¿þ·ˆGϽ?v:#þI„fÙ…ϱ§ÿæ÷æZˆPΜîÑ÷G®‰ÏŒuß~2 ÆrJ1.gû+ ØÏn’mäe½ŠE¤2P¶9èIë¨à¸ï\Û7ÄÉãE_€"OºPtÈ3ÞNRá@žlý³Òç§]EC/%ºÒ4¿÷P޶ùàû‹r£‚ýèâ  ¬iÜ\‚yKþq4·Áþ¨ßÐÙã‡ñßöaŸV}º¿|'â`uÌØßK@aÇÖ¡?îp5áéU X$ž’НŸ‡qxU‡ÃS¬ÃÞZ­]NñùZn_ æïFJ[zû[j*¸c?/ûoîýñ¸•­*üÀ­)1Ò# >+ùh=—Ü7>ß8ÃúÀ­¨V:u´ ¸ÿY} qî“Y¯´=͸ÏÞúÃ~àFÿ”Œþñ ¸ë—îö¬ÄýNÓ¬v·åšÙÐÚwÀ-Önù–®¦åÿý迟¢}©o˜·É ÐZ³ŠØ k€öÅ ø‚J$оËÒv4­\]ÎqL hý÷v7EwíTS¬³°8ОFÅÚ]Û‹v:çÝ(@{÷ô]!òú JºÚo½ÿÓÚ hß|-jè¾áiWe(úŸ‰’8~ã>ÐÆ§iżL ÍV•Tú9]PÂÄŒ®´õ÷Ï·ßúêç=Ç~õ]nʨýr,Ð×Ïî8Z›tþoRª{/íh_XÐþ*úµìB.õ[£Å0?Ú&oç³Ò@sCövçC‰òB5‚@3¸V½Ñóéç7ý$ žû´; Pn ´ykƒ™#›€6‘b™Ý— ´âŠå™XÇ«£~µÎ@;ÐílsçœíKÒÚ>£5û˜Û@Û;2¢(Ü´=ƒ·6é8­©¯÷€‹ÐFðVei¡}²j›Àw Ý™P­ÉZ¼ö û—–@çëÍNÍxƒ}~¼êÒ‘·@W¼'dÏÄ:{¤+m®]§éÓ˜P6Pß½¾*êÔC|$#Íõ@ÕØbtéö' Êm¶ü\W Ôk¥S¾N ¾þ¹3mç1 Ò¯¹v|Šš·—Ξ‡û–-/ì(ô%<–ÂçÊýð×Ì<¨'o½,Õæ ŸýÎ{é5²¬ÿÐìV ÖŸJx}¦ðßïkç?HšÄŸ¨€º& ºî¨$6òÕ!s·ð 9 ž:Ô|çVPí¤¤Î®Ú&^ùÑ‹4 ùOUZ&͵näxK(PRÓÙÔd×¢¡3Oêé°ËgÖ¨Žžõáë€úpmnŠÊP¯4Ùåþª>wPžý¨ç¥÷˜[ܪAÎZ÷c€ê$ì"h¾ ¨®mzh.´eõQÏØÆ@íxeGż,ž ”_Ô]'E¬ßõìóß}S€þö‰áÆb ú¿8·Ã¹¨_;[®ÿšhÏ—Ã…/:÷™—n>¯œUß"Ôû¶sÂovuØ³Öø›@1{êéß Ô{éa¦ÌN´7껣¿hjª Ûé¥@ýÔq~¿¾XðùË˜Ž…rbV®ò©ƒÄ/¨³Ö·Öo¥ƒ…ÒÈå¥Õõ`!ѱQBì+X¬üRúZ í–Í,—º: ÜïÑwwã(<’ÍÊXòšòÛ~ ÞÝ,´kûãC`AV‘ŸÆ<¥v>¼ï¼,Թƻþ¢Ý×ê]¿PËèk¼4Ø ÜÙ¥•£Ó¨yJCÃÔQòýáͦ)‚aTéBá&àþZ¨¼pü Xl:0£°ÂóT¸“~s¸3Ÿ [¿®Ín¸ì„Ï7³º­¢öa~ÙïÏž» [vUêò½îèÃégO÷wØ)¥Y@ëÖË äa¡ÿ5ïFž©ÌLÕ=õ¸: Žd à’ŸI¿Ü.²Š¬àšš²¾?Æü7^ø9©É \É[ÃËO!¯Û´k¡§. ¸Z.‚+Ú1þšww7!cTÈ ˜W_Ë<åèpi7eË´˜ÀU»ãÿëó³Î֬ڢÕÀ5wkr4FË äÓ¼<‡y”ô¹#‹ñÜçøß‰õ¿ÏGÊ·ÑºÜ $/e¿ö¬D qGÌ{?|Ò³UšÅV@r¨Y=exH6¢2×RM€Ôš³÷â;Ÿ)nNÒµ½±/µÎ)äùÐ(o9ªlYÁoe´³¾ø¡‚bÎDœ¨½ š«oÇç®õõ0Þõ-)ñ¨÷OZ¾T¼Üˆyåˆëÿ R+Ûƒ¬Òšv«/‚¦\²KløÐ§¬L-ÕÒg3ú˜l<šŠ—Φ›‰ðãÌ•âj ±ýDŸøiËRÆ›«3@òµœqâ\Õõ²#G{³ëòœ)ŠGνÉÑo‰LùÐä­a)ï–RØ•g^Ý@ ´Ô9óNëý°¦Vê'Ð6î¬Òr‘þ“¾@Ú8T«ò÷ jz;¶H²/«ûþ\Rr;kÔEHmy³4 Ý‘Qày± HTSƒ2·‹@òÕYÖÙ4—h¯¸¤Œ®oJišÂÞ¦'.ûiP‰æ­ýë-L¾¿GÈ×¾¨K?(B7wò³Þg {=œŸ}ÀFüní¾p"歷¡ï¨#¥6Ä»áhâ¤ñÁuñöâñf‘q מ þ»åêÛ¯:ɈǬó6ýé²éCÚx }wõ€¼f¹õES¼Fv'}ü‰ö ÛºóèÍ@Y.<$ Ø ä–Eq¤»¨swh‡»æà=õ±KÎè5›î®úæŠ÷QW²þúËó@ñ3nÕÿù õ³nçÔ c _"ÜÞù ÈWÚVÄ{œÍ…õ ‹@óÖªgÚ*Ž@&Ÿ_“pûß÷œù:°@Ó3ÃÉÀÜÈ®g.MðvY¹ún‰ h~Y›«ôþ5P8.¦æYb ôºg@N·²Ãý1.QÚïÖ‚æÞ4£•7ñõLºôÌÐöhN'ŠÔßÿç_#£–ë ðP FPï¯Ê›^/«†qN¸0’2¬zØI£ÃÈ|kƒ\“gð~+ÿbÓ)”={Ó]™x/²w·.XY¹u>÷Ñî D}œôS¾ ä~A#i`>EçˆØìó_²iÚ9y`>íh²®Ì'eø=’÷‚ù ½¢T[ÌGG—SOÀ|®ËWøÄ0ÿ¢—ZqV Ì?Ë, xæ½»Öšù˜“vk÷nôc;ò¼ÁÌ?V«5°ÐÏ¢iVe‚ ˜ÿXm‘àÞæóæfø/—Ç#Š13€~owKv§ƒùŒV}â·)œ³‚~œ @®ý™ùb¸ÿ°Ìæõ¨‡—8?* \°^Šq]žßz ÌûnÈ5ù‰svñ±%A`þéÖ6™kÇÁ|dŸ’â Ô¡"žztìóúëeç¤1×Åã»À|v33ïÃE0o7rc[îó¿D埂ˆÃ«Ë»þý~·ùLüþ-‡?ຆ뼀-˜·MWq7üóÆ/ZìS‹`Þ¼®å•ÆZŒãÍ”Xs×5êžV§"þ½M›\‹¸¿Ìj$4“æM¢!Fâs`þJ+·¢h˜'èf°d°C ¯¤ÀåßvÙý®ÏË5îKÀzfDŽ• ¼® ™E]»<òþ÷}, q:.+áíÒ!ÏüÝ@(qãù"’gÏ»aðx¿SX)ôEÏ ŸrÂäGñök0<Îë¤_üó“N2 ! ïß“TÜñàÚ 4_XöL õñK³i ±Ï—óú¿ß@ nÌÿïú¥Çifõ¡J}¼Nà-h¬P×ì ´ÝµõãÑ ijbÛ“bиEÎ ÈØ€Æ³êûžA ±‰ðÁò>4Üöä^}®sæõ5˜ß•téG¿!XáÃÕœc@ð’yïg! RGºwåñáÆ5UcšÆ_c}éÑ7Ðc„7=BÎ!†@ˆs,.ŸÂ)—“†ÿþ.âÜzA;² ¢UžÎ”záQÐVõ+ áã [­èRÅiX·0ó¦Ï;Рíàîãô‚†„ÖÛ“W?€†ð½›ôÜ÷ ¡ºêáýnÐØÜc&rS4Âן%¡©>~¦vW]ªâÍßÇâÄ'77»Î_âñê ¢´( Æ4Ÿ(§ïbÈx}ßX9ÏŒEî†e@œù¥°† ˆ .õ#îàº>ýàqÖ÷¯ðž¢t·l)> ]žNÿÄâ–­Oo\ £¼JM·±ä¾ÑH]k<Âø=ÝXD?ìÔ  ÄȦ¡¡'†@̸wÛî]=_éŒ}ÁÑI0}³ØhäiR yãAC'f¥^¤hLE5|q 4jZsü"…±_‰'î¥Êq¿æ×OT? îþu²Ãÿh†& åíÒêô¦¯éš@üðÝþÎù Ûio|̈§ß¼]‰ï£ŠïoÇ€ÆÞ×°ŠYƒ}%5¼·«ª…›@cœWªçöõGJ¹…/Y—M7û‰ƒF˾õ Q*55³¸4>ˆ·*>|$ñˆØöÑ@¯N—\ÙļWçxl﹨š”p;ИsožØ­ æ <øß0º1rï 0¿»‡TZ æ·¼~ðÝs÷ñ³«—y`•W‘)˜ŸuK¿ÙûÌ/Ü8À.ÆñP›óð=0ç‡ÎŽ€¹÷±Ð©¾å`¾?D)¦ý7˜Ÿøu4qÎâúá±ô“¼R'ín ìß¶¸ÌCœ®™QÁõÄÀ¨ÄÑ›ÛX[ç©ÿU#þ]9°e®Æ9x|Wï!0(©}þÚÌÓ»v»mĸռ/*ºÁÜB¦ýë,Ú;ºU\LxæÇëüjwªù¹úgU‚ù£Õü±`ÎáЊ¬®`žýï³ÁÌ=öXË‚¹=÷0yhÌc¯éSùæaBF[§®rü•æ~_ø,Ûƒ¹Íµ['?¢½ÍÝõü‡¬.Ô~QÇ8/»Â‘w™s\&dp=ìï¹;•÷Qá( qÕmä~K»1Ú©* !^ž:´Î»ì˜ûÆGlÝšæwöäÜ ?ù8ü¨}Œ¯C…¦e_˜_[a¿E߈wî½{ DSæã_R2øþêþc ĽÝÍñ|ÁíKTÑF ê_Š0]ðÄ÷×ç=Ðh´úјþ4Þ³yïâûäÕaî‘GÜ7ÔøÌÂ4êTUƒ~/Q>ñNä ªÞççý¾Ä û}NÃ)ÐàL]ð” w^R0¾ßÙä Þ¾€F¯ììò±6Ð8§“_±4*ä£Vñ­”q[ÏàTĽMãÛS+€ÈSžgÑ Dþ®ê-@\Z]øqDüŒÐ²Á@ø^º7£í"h,ÿ*˜uÉ 4þ–JÅl ù=]>¡ ¡¡xÌ[4ÒK÷ö2ñ<­«›*?ˆç{ÝlI³S;æ¡ýãàùðHµU_á<îd%Y:âåfkƒÄÉ_¹G'ºÕ®¤˜ðƒŸÉÚ×Ï-ACE÷qº—Ö¿—´¨! ]·™ÅÄþ¬<ñϯFÈ¡iEeÐøCVìÀº ZD.LcþBÒ›áþ£[»~\œû–ÿîc²¾zý\k¤«×µŠ#O5Tíˆ÷Òëåù-?€ä°Ij)ùtÛ›q×ç¸oÅÆfä™ò%}·®Òñ6M—ß@ÒùË\ˆû4i6ývg€´u9c®èòÝy±|Þ. ޏxµ—ɜߩ|ò;ò-_?hšÍ•û³ñ|’›œÏÒÛ•/ ?‹ãÖo°mÒ™“CO€ôÞDT>ý*hª²R‘@“'AÙ,ÀH *'®ö /~ãÛ/m =5ˆ=\·H{¾ìú|sH<þþ }PgxÜ è’²Áw+³­@ì^£ââzH™Áa¹ Õ@Š,Ú·GçK6)0P'ÜZ%›Z¤$Ú¨ù!ÄŸì·ÂGò€tû€ÈÑ©X ÖÏ¿óL""ïï_þö$6•§yDÉàݵÕ/{€äçÖ¢sßõD¥cºæç×£)Óø?¬ÐÒªÄ×%*š[ºÏ®þûy£ç§ªæ¬@Úì °©-4å·5OcÝóûÖ6í¹zHnq¥…pÞüûwسÀy½ª?È 8ù?Æ ç™¥ÊѽÀ‰Ï™(ïù œÇ£õÛ>NÜ]kï)àDÄYνŽN”ÉÙ0š9püÃB²EÀydºëæ²Ià¸Ì–ö¦ÝNà®EѧÊè÷¤k•Epžîßo›øï{ü¨Jñ&À)RZ¶¤ýÿ½|ì^/pžß(OÖÂø_uÓgÛ€“™bsÅ8™g¾|·îÁçii7¿u§öœÓ ÿ]˜G"â4œ;g-÷<º œH…•.~ç¶KØ•·FÀ‰•=pÒ8%)ƒ*À èLõ|½897üèaÀIYp¹ÞYœ0͸©—·1/þ'߆ԀS°xdah-p2vP.™('yWdvpn¾ôm^œÖî<~—ÐîIüó×s_OkªÂûðf_ö'+ô³/óÍÅàä)ºß\NŠÁߊXGhÛºu¬À‰}.•¼ûqéð+£ÿ°åwvÎbîˆ5‰mÂ:ùÖ^q1źZ̧n€†Á¿0 å£×nT$aÖt¢` „Î÷x€Æ’4Û“ùö@˜’žz·g ÏgŒJû!öÃ×(aM ¬‘½yX8R¯Ð€Ðwú4„zËîçµp>mgz9å…jZyÈß–{gnË^Á9¯­Te H_8ö=ù“öæ’Âc ¤Z$œœE~)èp•SžG=<@`Ej5÷<‚ŒÕÞêã¸^™zôfú?!YÕrã;<Ïî1<Åú–‰c~@P»¶Æxy“LP¹¢ ò¾ ëÚÞI‚ìã½A þ·ùýZ^] ì¯N{©¼ ¦”+·cÞYõ'°ÇϯLVÂuq¡—yú@X_#”Y‹õéÈe‰Ý¥î#$M“#Î\ ìÝ9õbÖªkvçi£Ó ÜŠ¼ôê æŸ¦~.×ÏÎ,?÷ó;)-°¦÷5øï{8©>BòÚäÉçèçåÁUÉ@’ÝØ^ëµA*gú€ôÂw™üÔÛIónm.ç€tޯ챞[áί–!@ºôjQg΃34sÕœ€ä<Ôrp âã•2«À6ÄCŠ+ÕªCHåB¼³O#&êPÿ¤³ÿñ5´ÉøÇ’J@r:ÒQà¤øêû—P’Ždy$#–\ÒG|Ò{áõz³n¦ÜþµqF_ÓÆ¯ñïšÜM•ˆ'·$Ç_üF:©RsS8 HµÉÉŽJ‘èAÒÆÑ^Ö“Ò $¯¶¼ÖÉìBÓ OÄó{…k"'1Ž!}íM @rYêî¤Ã\•ÎD …GKëÀ¹ÿÅë ËT¹æm‹xu7rôPâ§yõî¬:O Y÷ÊÌy ¤ÓÒEˆëäóÃi|-Æqcg/w_†¸8Ìn9¡$÷%Ÿ­ôÒnüëá§Ø¯×N—ñ|L²7G¥Iò­èƒgÛSÔ%€'ïSL2Âü¿™Î„â=ÓÉSówH–·Ûë·nÒ¨ŒÁæM`w>®ìÖ1Å©ø`·œ”æíõvÃ%[K `—Î9žôöûg?®*vù EW~`—ìiû|bØÿ%1Ýì'O2j2]ûQó[«°£Ânç?Év^»è¥õ\`·5(®¿bìC![ >{f)ÑŸ0ì_G7» Ž{ÈßK^ÁØŸL}Ù´`¸u¼Û†q~+¸]~ìþ‰#aȋأá–1ç¢=1úìFÏ2`¿‹òtvõY€LÌóñά?VÀ®:+!êwØ,üÛ|‹=p¥Wóä$æ{}hF2ýGžãÀIô/[²Ïë\!ǧËìk•õ71Þ1n“!`w8 Ji,Å>Ö~ß< ì2Ðßy÷ߪm]+ŒóήÁd`×uŒ//vQÛ[zWÚKe||ì®ë„ѽX÷»­n.ÿ~GèE[’ûæ».æç°§n¯Àþ%Œs¨Îÿ5«MjuYÇ+XT¾’'Ї€*µÜ·¹½¨¦»Ò-úq]ävÇ7rP ßú‡¥õðvgÿ×F@•¹¾Ä0ÔÍß5Q˜?ß2ñ{õ‡ÐŸIz™Ó Ö1³¼(9¨ Õ¿SZöõ$OZ–uP%¶ß¯ëªžö¯ÎÅ *†9¹¤Šõˆ›ìf-´ßï¼ê“g Pƒuj„·RÏ=43\·óòç:ÈèUÕ#Øâ¤3ö§ònÇ}[ î5úRqýÍÏ”â>›äM—K¨PþÅã4æɳû¥6¨ŠæÐ”3P~›rÇ$ìÒµá|ó×T êÒxôŠp¿­¹ƒ+æ-¼>Ãtë;b}¼NG¨kÜW±›ÑoñŽ!A])`g‡îëbœv¾¸÷¶ýˆ ʪç|Ó€ý(E(¢Ïñ³´¸óý®À.0ÉQ¼ì”ÖücébÀN´ï=ûPØ×}W{}ÃÈîG$°_…[eñN;.äÝ•2<çóYb5xÞ‹fÏ›#î|¸3wôâcÞ»|µa8Þ<2’"ƒ¸(#¸<@ ÷/½Ð7ê…8¬”r óË{lúq¨,py½Ë7ÌóCoò‘·¸Ÿ÷}m âd†þÁH¦>Ž ùrÏn`gµÌJìkÀü`õ`H<°ŸZ¼U•¡¡¿U¿^Xb}›B¯œÃ|>;·wØ|Gü~“Âc€y<ñ“ Miö›kÙ»Jpüâó+}ê_ìœò$‘ìÍxljáuÂºÞ *TÃ<‹{ü³0þ´º’€Ò¿Ï¿ÿûó\Ш:ÑŽ<ßiÓ×UB¨ËÜõ½VÆóûfB&˜‹ú××äÆÎÓxã7Y±·ñhñÖË“_¸Ï«DôâL}¸bÉž ^|^¦R§„çýR·éÁ ©|»fsˆ>úWVÃLÒîÅÉÑ­tý½ÔÙçèìlý DãõîçªÄÐÿÁÜäv{ îº1‡º9îQ÷qtPÎ8vâ„sHy'êïS—êo nDFE_è²bxq+qS¤ýqêéuwrÆâí_$"A@SœŒYzhÜG¶EÅýÿ¾ÇæwG.ÐLÓÍŠâ€ö2”‘¹êÐDÏ´ý¾‰¸’Ï>‹ûÆB#€¶3I· 4ËŠk¡J4ë~£˜)¿¦=U´šì±÷#ŸßM¯EHRœ 4!ÍáŸßáþ±#ãç¸OûÄîèŸ@s[Fútý]¬Ÿ—’*šÌއû“¶^Ôæ{”ÐŽBÇÙ@[«}Í*K hGÅ J·€¶ê¼ðó?š@[:1¼ÅXhòvÏäE¶Ûžrá—,Ð6’#vÆÏÍ÷Ô¥ÆÉn éš~ðºÕŽõÍîÌž3ڞöÃØ—§Ï—–MM©lÿ,ó$Ðä„Ç™ý¦ÿVk,o!Ф¿ªj>Åx6ûßÜÝ\ŠùxXÝ•@<ìá±Ó¼wh<†;ŽxóMäÌd»ö5âKH€0â÷T48 4[‘ëvÁó•„ê. ‡iú§Q§Ýù÷ùMÔ£»Æ"ÿýîDåɹ~1Ôqá\eÔYÑ–öK<¢¾½ùÞÄ8¾¶¯%çòÇÅ)Ô{G}”N[p€c¿„瓤p#oîÛf œà;×wÍ¡Î¼Õ 0ˆãi…‡;£Q·h6;-¢Þ{˜×9¼ ÇãqwpÌ]Êã"ý8ár>µTÔÛ¹r òGp>Oþ³µ8 ÷ô3øÑïíú­½ ø\.}ëYŒ4Ïïq uõõ‡VåP?‡,|òò/êY|Í=OQÇïáAÝ|}­örÔÓICœf0ïÜ)‹;? °®kÁFß²±[ÒcGþýžF’ÝŠ¿+QçšNÏÉÔ¢^N{˜üóHwí(Ñ-ÎÝ]±Ý¹Éè7ðÏóïðyˆ‚ìhÎMòò_)`:]C½ü´àZÑ´/ö¯»ÀÂé"ÚÕi:Uåǽ1gw?ã,óh²|º¹Ì¹õ=ÆËº¾D!û§µíÌ0pB¢B yä€ó‰PBÍ’§D Ê’¨[¾-SèRâãçN¨cÎÞ-Ó¶vRÂ÷CÚPÜyª÷‡ÏH©Í¿vÝC}á,äkƒzÂwZfuEÍÄŸgÿ~/ñÒI•zÔ;«Ÿr̬,Zž{ãF(ê/ª¢ëö õF|šB?™S‘e¨»ÒÂök{¢ÞHúµ“R ¤ñÊü:S@zpnÜÞwH†Y«ÄŽ ŸiE5+Ôy~Ä‘¦ò£¼œ¢v¢ŽÓ)~¤\‚q—\KM‰@ÝõÆ 2Ôˆ“¬ÓÂ7„Q¿}|›¸ÿò‹…dÔm6õ­ÌûB\áTø ~_bÖÖ$m¯y·† eä¶-A=sËêȼÅ~ÜÏ2ˆšZ…ú‹´¨­$Å-v/‚qŸiãå>‹ Y8xy#Ÿü‘ñçÚ6{ôóeý¥«ÛP‡ž)Vñ6FݤbuÜiý7ñ“L´û˜Ÿxõœç1!£CüX×TÔú¯M¨ó¾‰2[°?a±Ý5×€d4ËKX¤ŸEáÃ@~öïóA@/ÿ"y_ȇö»W^Ô²ËLT}/÷©ÅÑ?ù¨lè%ÿáºY´ùF½”yK=C}3ÉëI@®¾ú®©ç%w¬¹|EïÍü›Vò™õ^qJ€ì(Õ±)_ÈnyŒ 3ƒ@޾º áÈwÓòKwY+z}8IÈT–ôÝÈrEKÏ_Š2×çÑ~“m@Ž<¡í`ä󦽑¢@¾ÄNܸü,ú™$læà˜}¡«÷‡NµžäãoØ$m²…¾þ/å¬Cc*Oc%×Ö>{%d£½Î›|2x²âÄ~¬Ï^!ü]?»ï´²ý™u9ýÊÀ¸áž‰ïNùÜÛZê¼3úK7p}mäÃë·fâ~öê¬çþÅ»hð«ýl˜Ï6z ä 3–¶Ùþ@v®» Ö ämÜ‘ÿÔÑ.çMWÈÆÙ+Ï`[g™XoøÚûø~'gЧÝÕêÁ:_Ý«‰öK¿DÞ¿œ*•%«Œñäí]¿`œ7×Ö2·§8Ì5ñâBî|¹íÄ pÒFú—–<Ʊ±¾©ŸœÇ2" #x~˾fî]œüï™{¦€Sê»r4®ý_¸Û0u8•›~úü œl[?1¥8fÚ ½ÒÁõ>ûó >ùŽ}XÆ‹~~G!n”>+ä߆q+…‚­‡u.üq8åìÚ"ˆWYk‹dŸ¼ÅøŠã鈫åqsj\ ÎýÆç÷Å’õw«ß ¾¯†ùƼ¿¨ó8ñQÆÛµSxäðKú¸¿KÐétpJÄò[gkèÆóÀyþ1.Œø]Æ-¶¼;„ö§”ÞNjÒ÷÷O0Ÿ”1ßúÌ»p¹˜9Ú'Õ Ýù¦‡þç‹åŸ¬Æú½BÇj%0ÿSÞdWcþ_Y.vˆ‹«M"±¾ÂMÔW^x¿”¬4³àÃ}% QˆûÓŸ ñõ6½ªa ”m¹tŽÈQ lúrxÇ‹û@1Ÿ({(²SŸŸgfeýÜ–Û¶|> zÛ¡(¼¯Â„ºñý¼à²#eß|?4®ËoÂ÷ñ´g{Pøíü‚¶Ly¦ ß!W"ur¬áÓ* ÿŠÛú­ (» Cþs¿mý,+?c hfÈGךeoëÓ i@Ùúdâ«5Ž+oQš½è8/Nô#üŠRÃh*PV¬ÞÖã/„û_¶$b>ЉB–Y8nßÊkœï÷ÚÒñ’í@N_t¾Ö‡ï×O’ûk· EBrB>ÛÈ ï´ý5ÌŸtÐs¥ÖÓXÃr÷sê“'@QÕÊ]öb(’»zí/yÎjÍ_"K­}FÊÓоÿ¹hë¿ÏsèMµZòŒÐ\Ð#¼ÏS‡sîpû±|ÑÙMÈ“ UYŠJ@^4J¯B<™ÈÛ6}úP–glØP‰ýXöýu¦0Ö'²&là Pè g‡eÇ€²Ztðà(¶zU+.ùË¿ïñey¤¸të_û3Æ›¦‡Æm¦Ö-òGséñlÄÞ/éG€ÜT>è'äçkmˆòëQõ°1 'è¦!.=ª¹7ó_·W¬Ó~b?rx 5ãþ•YçÅqß[iw­SϱÏBÔT»qŒýIà‘Äz _2rNŸ!ã5âÀ;÷ºÛÈ¿Cwð}²9ŽshC¬ò~ýãŽb£w˜ êÄ ³#³q¨ß¦.Mö$»vz^t°ßýöV »¾œ'/¼ؽß/kíâEÝ}T“‚ú³wc¡ÉaÔ#[ #€=¸Z°z·<êF•GO6ú ý©éNQe`e>8ýFãædhþû÷®!«»íaÝÀî8çØú_°[æÆç›.»rRwt³Ñ¿[_%ì÷¡ /¶=Ã|^hG¢ÿ:é÷áï¦1þ™Ì§£18vrS%Ã1nàœÊÇRÔÙ‘YJtœ«ùÚ7r°.+¤ë[ Vþû=ð–>µŽS1ß‹ª­‡óPf¯Û‹y|•JvÃmdë£1@½“@·¨˜ªû)·ñ/…@=ýÇÃp1 ¨QúÌ|O î4‰´ŒB»ðm;/„9ÕBäQðýN ný+ÓÔ#ý·ÍVç5Ha›ëk uóEº§Õï»ÕÒ³§zÕfÏõ;Íè—ëÒÊäjq0çeK*P¯hz‚óÂÕQ†‹@M‹“õ¸¾÷ùÒmi@½dªÏÇê¯öÞßj Ô—.yê@5WžU¾T½´XŸq Ú6}>œˆºðˆÞ¤Ø5|nrl’å€þŽ%Ð 'ÝzáûñM¿0·Þ1§ä ^+ÏJ­:Ôà+Z[2B€úÀÍÁÄM ¨!¯Uÿþ]Œ]Fl¸Ãꉻ¿bšŠ±/WhN–7J;=û4´¨NuÁi_jêùx0Æ4Ÿë+>×:‚ù&«f{¶5ál¯7@Áý-‡<Ÿ^øSº²Ëè®.'¤QÑÞ¡)EÈèO LY58êö¦• ½‰ÚDv“z®|þè³8¼üÊ,ûæÿå?ƒ›@wN¸)·èþ/W.Þ5úݶz2ÝèµÑWÏ}‘z|PP2æÓbtHªŠôj½.¶+@‹Çp@@( 8<Ó¥·,wþjšü7‹ü‚7Îæ8Áس§\)«ÎrV½Jæ|þp{?âʤ²·iâÏÀ/—Ue)ˆ3…J+ºS;Òs?:¢}:…û:8«DÊ{f:Ãï(#Ûq8KïËìtÎβÆý¿ä_‡½O*¬µÄs}_Þì‹ pÖÞ3tcTcÜ¿êÖ5ß#J M·c{úDá¾äG«(ËtÙÇýMâþbòÂÕ÷ü§÷ àþ„µf[‡ç\ŽÝsïöï”Í1‡)Àžºp£—»ìùìo^!ß” èV|ÝŽs—.íË€#̯ÿ  ëçýUñ!í'£?¯ˆöÂ3Îû ÀY“8>¸ Ø3ϺyƒÊ1~®HïEÄÏÙææóë³p¼B}ÿûöû™zrûp†°Çgº;0ÿßR.£ˆzÕ+Žõ.þÈf{á}0J[aüóú³øDÚ‰ú|…Ù²ÛR·€#Âß¿æÙGàzrÛz_c_Ò6ˆóbžº¶-â%@[÷ïû#špœ­Qß}¨-BNˆmÉ '|ÎßÕzKñn1Où×àÐÖꬦ˜ÚêÝk§$€º0®}ÏúßßmµVëßjÏàŠOê€&›½õÍ1Q  ïkÓ}Û†óû'?IumGxôÃ{a@ˆpx74žŠ‡Ûy/õá‹ØçÔû@Ûù$ÝqÃ1ă³%¿{œ¶×®úXZ?P´ÅÎjµïËO-ç§@ínVl*Úš6“o1þ²êKY¦Ë€úN|èÚß 6Ö·^#\j}¢éïâŸ@}Ñ3_jÝ:軇¸õÜèq߈ Pç7ø3D\›`ÈoŸ“NA‹OƒÚõñïý¦)´‘¾îe/Î.eôƵ|¥Äïž\wÕ-j‡ƒ’”é 6ˆ[´f«bÜjµqÄãžÝTÛˆÿÕ“þŸ–¢¿Üç"[~¡ŸWÔô ühK$ÂKìïŸ WÏýjÞ›´„èCØâ… +9 NMÜX¡Œþ%ÎùlÛ´_ÿûcúÊÆW•7m€YÕµ4 è+<l -£ª=íÃóÊË‘÷ÐÎZkð6Ó¨y  ~,ñ Eû†àÄKKV_-¶û´úsÄäïî@ûâ ï´œ®¯km\Åæ÷­| ÕDÓw¦ÅmñôÛE|ü>¸Þ›ƒû¬3º–â~ª\rÐÞ“ÖœÚÓg3îFˆ[Kc&T€®}âweо]{ÅZ嫌5÷p¼ÚÆÀ÷W¯Î®eÄÓ%bäÝÌZ¬«E°è@<Ð>ìØÒ·oó±çÙhu6ì3“¡@«2^•‹~†‹¿ÆÔðmöÌÞ¯kÖ¥›wöƒÐù¾‹¿¼e´ëÆžâÛ@k·Xa£y Ÿ«ó3ÇÖ´½˜êëñÉ/*Y†ñÏçHZ¨íÝÙ¹~@[ˆ?*Pu~Úþ,pò,ÖûgÇ×'Û€ö¶Äßõí  4‹—e°þϧÜ袎[T šÎ¹nåxû)¥¶Ïëp>ÿ÷8 Ú––’ÀiŽ*ÊÖFükÜOxº£8_H;s¶V§éª¦Û}à¼?~:üO?긺ÑOeÔ©³‰yÃYÀÉq¸TwõfëLÝõëàß 7ÙSÀéŒ2µN·Õƶ«W€Ó®˜b€øX®ôúΓ.]o×6ù§gËå´­Àùxý`™.âNŸgZÊ7Ô“7ÏO]Dýâ»ÿöŒêÆ—Fe–‹èïCâß´HÌsÙ©Ä·Â8Џ8·á¸*«â®×·¨|;€úµ¥kߤøà }Ê À:ÎX…˜¡½Í•u#ˆ3-Š6¥Êâþ«ow‘°žæé 57ŒÛ}Ó­yͬw\~»Ö*ÌGTºä-ö¡Qso&ñßï\ʦ÷×¹ ¾XR œ[ çd–£žŸY_—ðëQ®~žNÁz¥ºªX£Ý˜rÖêáêΆöû€ÓñÊäêÈEàt){€s»ø|Äç.¡‰Ó» QW´-{æ¼ý¾rðÞûOç"(8¿>ðx$Пï¬yº ï5Áàˆ%×€þ_ÃuǺxo?ÛÅâ†=–6þv¢èg·Ýõkå ŸHèüÞ„÷~á)zb¿Ð}$Nˆªá½{ðU ŽÑ_=ÿüDO_“€þ+$³ŸÌzÚ‹­¥û?à½yì³.ò뚉Šðô=)s±@âUuíhËI ×YžåÓêC{kjøqä5¡ïò¡n'ÞÓŠ|×ÒS€žùÛrù><ïOVlâfÝrÅ6™[@ß­gy&¿èg‚nÃxܳ_ý»°X^è6‰•Ç=YÚ#HVèö/3ŒzŽ=kÅÈU‘»|ï»¶`=%§Æ¿‘_TW¹¯tÜgõö@?2¬K‰8ôðïo¶;Ð-œåôƒ€~˜OKiôÐSŽŸNEþqwÂ×'è~ž~å@¿tö몊@¿±*TðÎ8æ/¥qÒBó˜e¡ßì¶3‹\ì³Ì监O ~Ž0Ê=›= ¨‡£ï³Ü¥â¦UtbQ(7Ï hÅ%\›zÖ(×\¦w‡¢^w5«°.Ù” vz $ê2sù5»\ªâþõÓÜé³@ñÐíª(Åý¾•ý|]Ÿâ¸©øìPbVÒýûû}Ûùm.¢@Iû¤Ôí”Hµ‡Û;yòŸœæßtK 0?&ªÛå‰ÎZ/´7ºEP*Ê{Ýþ  |›$e-ñÀçæï„»åÒ‡néÇ7â'%ŽqZ×ZO%kB¥,ë$P _·Xa=]tî¼UšM£¿ì¼ßÃM‚hàÍì£` <3ü¤ð@(ñôú1!sÌ+eÝ^ $ç. >é ”·cWú€ûI-b ú½+ôwÁePî´Y?ƒñ*³¸ýûòà”ƒ|J8P2åWk %=tÕaÙ«@ ]¯¾ñÀ  –ަB¶²D& ˜'ßcçïC?N·-ù€yXïúñÏÀ4}µJÙ¸ ˜òÇ mä€ 5¹N71?-á§¼ À$Ëmß««Ì¥‚ÑÓÅÀ˜ûTËy>LѦÆNÀ”¼–KÆßKN;°^±eåÄ¥À$ì–‰HE{CÍm!ùÀÜ ¶'@ï0%·ñ‘“Sê¿1¦ æGÆŠ~cp¡î#Þ?Œ?W8pq_Ëm´ã}±ÇóO=0WW^h¦Jò-Wx‚ÏÅyÿ’€)'zný76öoÊ£Êüöçì¹îXÓÀ>Ûâ0·ö¯lÜ‚})0ÝM¾ ÌíO®öªb?´fõf­oiMó“yú@gfÜùï÷7 oèsiûƒx*”V–û.+zV|7êLÁÐ~ÅÈCø…/>ÑSùÇ ß„Ö!oºí*Â?Búª>ÚÍ»ÈÃìjƒ+Öñ(ꄲÐ&ûJ4BP¬>ºyÒB«Úu %ê܉Äc¥ƒ­Ñ ;J™S~ ´\— 2Þ Vf®^f4äS)WNX >57;àÕ>ˆ÷]šNö!¼Y­j«^â= V0ë¡{èRoÅöÀû¾ElrâÐ÷h^RlÆûòq´³Z®×Zwñ]Kª¡ú Æu¼¼ªPo|#Û×á=mÌTÍx‚£¼Žþ‰Ḋɧ9͇ýñ¾²ø0è:¿–ú>Ä~0ŧš¼7cÞo8Üíxÿ’ôeînúÄRçóèÏÒBzQïo;zݨèz¬–ëÓΘï‡u ñ¾güÖu%á}­Ñš±÷Ð5Ô4>™}Ÿ¤uÌi¼Ÿ-ïÉ>õü‹u.žÛÕ…<üèÒSY?Ê€ýß1ÝëÔ=À®ä>H½ ãâ.ÁAg`¿ y”7=ìWž>šU/qTJ¯x%ì˶œÇ€ý"7óIá$°Ó[œ­×ãóKMwQŸ•®6F¿á}FfUÀ.³;Ë›ì"ÇñKQ/—‡›5Æ»˜?É$Ò×ýn ÷Àxå Ýa8&Ç®)2ökO“÷Zçpüþu¿E Úí—m@ÿªÎÛ¼Oà¾ìSëÞ -š?(“[ŠþH Û/`oöÆ:Ýì Ý  ö?íÍ}ÔåOÓ³rÏ»ž8¥ý¬×» ÷ìA½úênÖ¥t5`¿Ü±ÁÑtë2õÿÕûÏîó¤|ïi`Wml?A@{)õ@ U¢7®Â:ÏŒíÝ:ˆvL¾Ô»•^’ÌÕ[1¿ÆÏû¤Ò1ïc™ŸWtáþýº‰•¯p¾çM¨—öÅ“X” ì½kÇïÄçï* w¢CímUýÖ¿!¤ëñãRÖ‹!`}ü›]ÌžëÔ]•©À¬ÏÌšþÌWÒЙÑÌé÷ëCw—óñž}Sùú”Jßì5`ö ªñD$áóY£é—À7/ݬ "Ûz·3[mé^—`6 žZ¹˜©˜pú)Ÿ¢¿Þ¤,©ƒKÞþ¨æ×å®%Ç%€Ùçÿ Ò»€y#ùE¶ð"°ö÷÷z\ZÌÀöܪ¹ÕÀR¯<5wXK¥µUÞ 7ú=ü@E+üÛôñ¿x`~yQ=˜í×o¦n=Ì's<µ‡½€ù0,ÂsÒã®ÎñuæÍI¿@Õd`¦ Ùò|̦¯íªDâYƒ˜P„2Öõ.Åü@ âð«ßë·È³%_;AqëÇÛ§j À|/ÄøŽó¤^RËe`æs׬^‰qëw“Þ» ~†Iþ½5‚x—«íšeÌáå#=³è¯÷Æ·ã˜Ï ãLÆâö[ƒ¾ˆA`ÖNT›,6‹·LíÌ2ÿ#â­òÀZvÆÒ×ûß½? ˜M[æ£g€ñFl_Œëf³0Jçd´aÀHY’¢q¯Iéî>Œ‚K÷xÌÓ€­rîÅñëh×÷C‘’ ³GZMqÀHÚÒÔ1÷9"ÒÁ7ã°û|%®§£.ÿŒ|ÇLkÉOÀH £Ê9.ãí•àG›QäªqJÀï•˽€±…µÉ||í‘ /og]ÏXúk±Þغ€÷Ôvõ10>µŠ7Œ7#UõaÌ5`dù>ð(F]ÆŠí·¤€ñõÖëé_þÀø~3G,mÖ®Ù¥ Œ4_þ3|þ좇±0:þið F}bkÂæ`|>ô–x:ÃáKF¥Ôð˜ïà¥äìÀhv9"kØ}±ŽŒjã±/¯€Ñ{Vðˆ:¯ j7gáýõº'Ça>ß.`"ŒªŽ:ãn|ÞC\ý  ó|R25/•Œ}P*ÔHÆø£®ïßYŒ>Çw  ˜Û6ž7-›ÆX‰wR™ ò”ß3ºêL-Hä;ò˜ù ßnO#¯1 é•uFþrãѧ¨ûŽ¿UФàxBûk¿­pØ“ŸäuŽgï‹,fÚÞæ(¹*ùOYèêà#ô“®ëq®.g§ÁÆù€]7Þ§ãGÏÜGÿ~ó$Ô{vYo¨ ä9zÍâÈ+/T_lˆBžU¡ò×Tä.Ç-êŠó)äG¶së‚yÙe+/}ðW¥3®;–ã¼°¦×ùÖ‘Õ½ü=ò»GùíU¨‹OG­¨˜zƒëä{ŽÈëÜøBâ ç<õ[È×›8*Úí)Â})2Ý/OÇbøÚ*ŒsJ×KÚõµ»w«@Öéä¸Xø“€yÝÝAvDZ¢|Aé4öo#A&õ¿Û­«‡AóÉ ´Ù•ˆöoO ™;`Üæ>Çßgpœiøy×zÿk,À8—M×ç /=ÿÔíšòd‡%>ªñ?0^ˆÂƒs¬óåxŸò¾;¡ÓµæÀj*q¼2Û¬)·Bõ°T`%7‚påG`e-»Ö™T,¿CŠqâ€Äcn¬„ñTÅ23`]6ñðÖYÎG«®À*9ì ¬}Ur'»;€£ìý¢ X×ïìs«–·ÎÀŠÇ¿€ÕëYå¦< ¬x{§^K`¥nù¿`,MŸ>?Ú¬ÜM a`™Å|k¸ýð mºüXeï×´0Gõº-êé}G`]œ _ëó–KƒéöŒWÀr+<é·'Xì|›;6Ër†"Öí…ñg#Õ2ÞËYcØÍ_XV¯-sªeñà}X*Ú˜.jË4+ä­ÍøMÜÇô7ŠÂúDl'+ÚC.ê¹3ÖýõrÚ¨8æÕBú+wXÜ‹An.qÿâÝö•eÀ2O¸â·ù3>OÚ}Û2X¡QùcGÇþ« sœÂ¾ð|’5¶Å}’¢Äª<ô»T¯¶ÒXW¶|W Á>ÜþøXÇ®Xz/ €õrÚ2E{°Îxu ïõºî¿û)è*¬¤-;y÷¸<æ)@^røŽG-y‹£qç“ÃÕ@·Þ¸÷ÈuäK›R])ÈÇÜÖ=49¼„ÈCWCÝ/ÒSd¢xè·öu¦-ﺇîu#O û¾ËÚâøèmÒ–=ºéÛ3>-_Ðï YÓ/kQ׿|¦‘ºèç6ø7·4Sìßï9yßÜl=‰[ñ-ôüP·ËÙ°óÐCÌrn´#¿:®»!Åè ÐOºóØçˆ~¯´ÒÅ_ݵ±-íù(Ð/° »ÏÎ= µ ˜¸ è— ²Gß ¯óÛ·>c’‹|L4í›’&Ð*l¿™¼6Ö«~˜Ý„û·?‘4*GÞÙö&ç.æç§8õèáMäcN'Kia­gt#ÿtZå—tûá•›s{y/g•´þ›( ß‰Õ’“B¿G÷Eè5Úýš¦8éS*Ð#o5¬1 À¸Mz{€îî>rîj(ÐoSö!?<Ï“pzf7Ðï+$ú`9‰J.p†¯Ì¶Ë}NÏ»o¦²>Ài­Q?å0 œþžþb#à4ÏZsõå§®ƒçgïÚω Ü"§Ûl_éyOàtHÇWœÎÀõÒˆWÃfʳ~¡}€ìÐrÝÿ®vÏ¥ïî¯þjLÁ8ƒ­; P'7·8( Þkî{-¸ ÷É„<³D½=øÍ¸q±òJlžÿÉ“ 饫€ó=â¯÷âfKà¥åÀù2ðó¦7pz«,jw_ÇñòíÀåü_{ùBÖ pÆR¦Q—~û±d%pú ùþ©]O0ßàˆ­ª]¸¯Šç\ßQ*â†xÖ0o.W®yNYĨ–g¬êèÉnèßoy‡êè!õ$îË&´ÛüóŠâà7‹óžÇ1ÞXÛÃjŒãV2¤‰úÿë‘ÀQMÔÑV×oÂñËådŽ~ÑG­ð~V˜»V€8=v{ y: û“º~M"öï{k»ÚÔí ü†r»Ðïç½á Ëþ÷=ó°¦÷Å¥>èü™JÛ°`Żĭ›öð(èß ñ¿nCÌpЙ=å£ßptJ®ð{gë‚NžL­|‚ètì|¾ŸýçŠoÚå¬@gRØt’±tæ‚^ǤíÂ{‹Wϯü®4´{)€À·ˆÐSÛV <%\/§.òï<ˆydZ/>2Gÿµ?ᾄGÛ×,ÉJÙm,:¿^H4h ‚θæSÏ=AçS®Îˤ:ÐiéR3YøŨKÐ O¢Î'€Î.›6%?Ö•Û¾ÆÏ€ÎC[O>Z®Ë„Þ=ï:]¥{Wf΋…gF°ŽÜ/´~ÎÇÍsùËqþœr;!tF ¢é|^ uv".h-è$E.¬çÃ÷ƒÎ£\ÿ ,¦m:=Þzí>FÎíEè¼ÝxÉ9ÝûÐi9ÿ/¯Ù²×Ûl°ÎÎãþKs1/Â1»°ÎÏÏËŸÝ…‹#g¦uD¿—,ò­÷–å¶é×@ë’ŒûV‚º´ñê¢Á#  ©WœrFü[Ù¼ä{#Ð~Z¸nªaíGà ùÞ@­¹õ¶hÅÎÒÃ@+8§d6‡úØ6‘zÑèª)_z¾ÏbþÙ²ßè/è¯<¡ hýVÎgVíïÍ»‚ßÑ~ZwªDdÐÉ%öyʯp®±ûuÄKMÓGEiéhŸèÙ8rõöÞd;¶ з_³~»r-Ðþh½,šÊÚH𒟲OЀÅö%e@_‘°f÷m ¯Ù<¶^˜t™Â Ëyö}M÷¿n¨·åÕ’€ÎýÁ^c[ƒºöc͡ˈü’ðu¤ý)ºðéW)Öág°ã!â›\¡:£÷ˆ7í##~ \9¸HšÄ>¿´tOFݾ‡+^Žø+é˜â¦±q[5ë¤êiÚéƒ/E1ã‡Ö!^òo>}í'ε¯ÊF4]¤¯vï‡å«â©ú @W\2&Á+‹ñV5G ¾K>»êºrýQ_;äEëÿ÷{5ñ-G y¤#tnKöÅõ!ŽÉ¦"Ð]îxÊ!YŸ÷,qøÕ4ígèòÄûŒÜb€® ½<¿à›ý嶹ߠ»¶þÅ9­2´SWfÝóÝ%úbk®AWÕÀG8 t7›änâ ]…â"×ÓÑŸGeØè,èjœWѸðSžÐÄùº[Ú¥DÅ_ƒ®èwÆÊX6ÀŸûª7–]©ÇÆÁ=öó®ÏÉ‹ï y–yŒŸØ£%àÐ/¹T¤$ `†ú6ý@+Àw‰‡ºG¾Ž­¬äèδ¥”<XàDØ%˜‹Õ5=„ù‰×™^Ìéø[ueN>ûsK1a·Æß¿wñ‘Úßyù@Ýýíð C#«?­ªb`¼<×ÌyÆ2ÿ(­`6#aŒx íÝDÛÏ_øqþNT¹ù¿ýÙ[dAW°ËR( ë[rÿÙÁs¯°ŽT¾3 +Bܺ#öèò>*ÖšnÇñSûR?#`ÈQ—¾ÌãWŸ¾Lÿe+-;"é£~/ÿ"êç”(æî_¸ïÚÃßü2ªÀ Q­ÑøÓÌàÎ Å7ÎÓšxwü»8Úo•þèÌI‘o¨×=[x²Æ€yCJ3£ÉŸx™z=Àg©‚^0cÓ¼çó¶yéå‹1Àl³.ÊäÊ3þçŒGÖN`~˜u¯ý„ú?«¿OêO70_n?ºƒ˜ Ìš˜OÙ3Ü^ùYæ|Zù|¾æÆ«òîOÕpù‹Ï³û*U"€Y0Í;¡„yÕ]“xí„õñíÉf^Úæ¡`ìsbD¹å=¬»&ºúŒÑ+`–²÷¦,³ÈÚÎOã÷Y4fHlvKÁ?¡ ì"ªœû9+³#ªßûíÙæª¾Y`çÍ8ð¥ãø²ó£AC°+çë(À®·_٬߄öG 3T5€=x*ëQ °ß}­ \ø€ö''Ufp¿µ•pü^`ÿ7ò÷Ç>[`7›Ÿ¸+cÏ[K¸f»êîöŠÃfÀnºjþéÝ `Oõ÷þìäû=ëÉð`/~”Êæv«ì™J…>ÌÃLñWº°Ë–ÒTsýùʬ×|¾B¨_!Øí<ª[ößvw›L&»cLÿ0MØoé}S vϱU ÁÀ®©¯Õ{àûg{½D- òwÏ•»ðR¤ÆS`Jk±IívoÄ‚é2`zQ»í'î_azËð°¿¼¹”:`·éUÆ:Û¦íç‹ÐÎUÒ~(ýwn_ ìêwZQ¶¸¯…ÿœp9ö«ÁËë¨ÃaÜŸ*Ñ»F×%äYëáºðÕbu^\ßû‹%$†u^šëmyŠù“ÎHÆÓð|Fã1ë"îݼ 0êFv-Äó–emöî%Ž­±å¼Ë—Öï9¹Å`JOƒàpqÉëæºkõÓSžÏ·“A—Jí¨;t àƒ@Ö¾«|ø¼yÃóÙˆ;ÎùO›Ñî¸ïÌÂ}Ä»ìÍNUg0.ñâgJއèV§µ§_WEª[ænx[ùÒQ¹t…º¦nÿ‹¸ðƒµ’öñHÑÒÉî!âÉÕ¾™Ý—·Ö¯É°ýЏÅÿd\² k+úýж¬Õ`Ðbš.ùàÍ–•Qkƒ1%äîx"@Yš‚Q @oÜí/Ðïïà÷S¡ˆŸ‰sÞ Oû¨3tñ­¿o‰âäB>=º$¼² ³Ô{¦p+@ŸêúmcFŸuÅøí+–('`½ým~lA<¼Ü<¾á@ÇÁW¬e;1ŸÐù+ÊÅXï9-vn˜â¥«®XßøÒÝüv¬çÂØ>ۀɧ)™‘Ê]é:ÕÇ€õŸ[Ömž·¼/CŽƒöš!yyrhËíéªû¬.Þë„€õMÝè‡O h¯Ú°÷PÐS`ݽ•³6XÁ_sî· ‹]Úò'›F˜áþ¦í–KM€5üLàßçfXï8åYè/_ ÌW×{*x„5.aüú4ùÐfZÞ2P)G;›åÚÔs m^oqø°FJ ¿íÖlè‹ë‡ƒ@{‰–ä°žæÜ&çÝVÿ¹ã9è¯ÐrES/°>¿x9™ Ïél’Õ˜À/Ýœ¬?lÚÞhë¿óü‚KÜA['ÏnÏ“nÐVüÝápXMv éì#Àª˜[%»¤ X}£ü­>;€5¸~ÃüÊË -+–”ä†û®«>6ôÖ‹No§UXWÍÇLU¼Yqª?d¯bþ§£[mA›o©ù×®ãhß[GÛ„qçëœãK€U¿6<ýp)°Æ¦šHK±å½OÅÑß/›*v­7°4”D¾ŸÖâžöì¥ß€•|Î]$uhNJßÁßÈÏnöë·Nij®(àÄ \SC=]æäz ùV,Í_™u 8‰Æm™dä‡9+³¯¢>-ø¨ t38µ›\ 9Ày ûëK!pRª×åA]÷@ª ¡ùÎ=oÝ ó¨sºd¥u€óhÝgöÊ“ÀIÎÐù{õéÓiñ õô»Zy­ÀIÏiŒ·µR¡e7]?Ì ŸŠŸ+KYœ‡Ã+y—¸¢¿3jgL_å8ß8Å9Ç­‹G€SÚ@x÷8%{ç|,ç±¹Ð]#Ô“¦¼’ß0^Ö¦ÒOÔ›ÅEƒ«‡“g6×,8Q/†‚õ|δ"×÷_4j:`‚ù•/~%÷ ˆ¼õ]œW…éá÷mSè¯e3ƒóKgõópÞ>ñþV2p2¾LÛ‰b,œ]®²þ}ßöÝm·0_Õæd¸œ¢w £‘$œ[Ê=¼Ø‰þ]ò›øÞ¢ýº[´×øºÄn·í|£ýµù²†ˆüæôl»Ü‡~Ð=Ë£Òd‰<íèü¾Õ ˆO—Ú.zÝ][’~úÙnÐu®N<®ºœ÷¤Ïé1 káôð]kè¼Æ-—VݤßÁn5’ kZ vYt½"Z:¸~öc´k¯èÚÖo1·ÝÌn>ï0èžC+‘Ý‹+—xºŒŒo£§—€î^9—„i´W±÷¬ßÛº»…ìN /òøì=£ º~§šµ¬ì@×]¶äÍÃë8L†)b^ç{¥V`üÐúv¯9ÐÝßG¼ß ºÇã7\YYºÖBⵕX_ÿRçMÈ;+îqÄ*@—y¾¢µ®tO|噺9ºž…»,:BA÷̙շXï±S}{Ð=Â>ö  ý  ÏÃ8l9ŸÓÈ‹9q¦‹ÉÙ˜÷Ëé°’ÐÕÿÛ¯#¸€ug(™`ÏK\ó ý9h|{åŽ}¤ù + ?Þ¿A0,ï=èºàå[Šq.¥Sg¶ÜÂñ\Ý.¬Û÷`óéWWA7ÚYÕbò<)|™,©³ûÈÝ~äzºaü ÈWô³/–!Oû‘º• Lum‘ŸO˜À´kï’/Ø ŒªH©oƒÑsáSÔ »ÌGT¢ŸHîòÏœÿ™ç4S,½8Çm˜KNL O㿸e¥éGoÎ-ßi»QÇÞ¢D¿LhÇõ¢[çMQ'¿›Ýž~ïâÅ–ÑÙVIıLý÷¨KcÎñ jŽ{àùŽvo¯%m@=ZJå ^„hç×n@Ý›v»O„xôð<ûõoÄפü‘óÿtoð¹Ó‰›0nê¼s÷ mÄu5¥¿‚ÿð{¯°õF\×qì{…øfüñ÷÷œGü:ˆô‰ó¬£ê²q#â°‚ÅF êÒTsõS¼)8R½­ÿïû©ÄÎŒ!N§$¶F¾KÀ¸G%ñîÄ¥±bÿ>Ê0þhô8átÓiçgÀ¹{!eÙ˜ÿ£êÇ…Ëð^ˆÐÛªMÎÏÛ<|þý=sXmz3p\Ü3.Á×A¤ ôþïsËŸ@OîÇŠfº4è­N(©= z[M{-C–ƒž’˜ÍŒÏMГ—ξ&zbÕVïL5@où¾š¸. ·ôªb×%[ÐcêþGôª„³AÇúTAOqìžúÒó 'ãpÙVÿ8Æ©Q °v=u±·5Ñ ·][5UqèiÜÍ<%;†ä¬=AUa’¨?ìxèöØ3ôZgîfêƒÞfëÁ=GpLÞFÁxòý©SY 'õ8!ïÃaôï|Þ'íèñdV.¹ˆy ŠÊdÞã=Iˆ¤Ïi˜¯ QWªý-k5•.€ßþûu¶ vü¨jÚ¼wô$þÞäOB?y+ºmsAO\ítò73رP^J-ÿ ;_Yî§ÃŽ¿gyml:pÝ£Ög'ÆyýÃbÅìßí¶Ïó°c&hÓŒÏÚkS¶¥0~S‰ˆyˆF föˆƒÞúºoÕ~á ÇËj³û‰}¿–Tö?è)È0Øøûì[õÇ û¯ ¸£Áäèm‹›ØbäÚÿ÷½9{A;úó~9^'ЮKØA\YÚ ºBn~ Ý~ÛòéÎLl‚A»ÈîØ_mÇßñkN _ ¯”¹›ñ´E?ÞRˆâ€v×~QµŠ ý<ºoûgÜ_IðøÚ‰ ô–€¶©6ádè¬Z­4“ :ËÈïõn׀ޑÅð-J h¿^gþqçcÐáz)ŸRí‰yñŸAW@;UCª0ö,hgˆì¬R ísU>?J0ÏŒ ÏÈáfy¨WµWƒvƒoÈÕK{r ó¨£.©@õ³Q' è7ÛÍ¡îê±Xëqu§äí]ÿ¾jhÙ:ÂsÔ“‰žk⾄r¹ZÀ^””^ϰŽ˜KÃÆ·|ïvÏéŸAÅï9ÐóãÈ&ã9Ζ\"з ô*l¢èõ8·š,ѽ.ÇíÒ†ÛA/âÑÑþ×ô—g> g©Z{H ñ5¨Ð$ÖóèY94Þq™FoèáLÐ{Ô³á>ñëñ¦dKY+Ð˱ìžë\ z ¢jE;£p|`stø.èùtžYm½kW˜•wÔA/f*Ýßz ô®oÜô×}ô¼Œ÷Æ4 ƒž9}`ÿ$è¹EgE@/LEu‡Î3s­#M?cRR—1ÑO@oVÖW5Ð{°ýÐò; ç»þÔ‘jô磧ð©{ô¼;—oš ÃxJ®É§š°ŸïÍîÖMáþ††Sè~ ù6 ŸÛ®æMÁ<ŸkØf†vqO~–‚^²í—ÀÆAлëI-î½Ôb—÷ÝÖ ÷ÄôP$…¯C͈þñÛgº¶\€‚‹û¹Š"·?S÷?s¸q¼™Â× örfmêò«k߸UX<pÿó¼tBZЉû¢D3oå?`Û_Ù¾Zà©£÷š=—Pó^[a©h R©´h¸ p§kîìa#AÙf[Ô݉:3çEÎÕ¿Ô¬A½>·öø$@ÉL‹Fú €¾'Ê{OØtÿ™ýD½w<Õÿû?®2K* •Jeeï3qc„Hα’TBÉ(d$¢%df„‘½¢d'+#‘TVF$!E©èwõ~ýnŸoÿ\·ÇºÖ9ûó~çt ¾¿Ê0z™€º?⯃¡æk—¾Íž¿œ8ÔQÍpüßç¾ÿoÅ8‰Ÿnó#¿óÚ¦;Ÿ‹õЦxãw€…³½Ï»È#é<ë2 ÿïuÒ*?И9›Z÷[Ÿœ¤éƒV“ºr¬Ð h†p³¤­íÕ2C¹:º Õã)`²yhå24tAÛðý¸XùiÐÊÓ±{ïdÚBÿÖ;­­ã2Ó¶;ï‚և˓TÐÞ=ûz rìm‰Š¶;‚¯•0’)Zí“Fq+ ®êrÂïh…[—sq€V0Ùá¨hyЗš”~ƒV›z̳‚RÐZÕ'¿ý¿g±Ú?Æ Z¼ßþɴƽô¥%L@ë‘¡ \ÖE¡´ˆLƒVƒ;# y‘Vë šß½&Ъ%uFâyŸU6.¶R å5c¾°b Z5õeõ ÕŸ¤ºsmúQ¸¯³ŒçC?¿º{Ç´¼kÄ~O;VÝÔÈ雨‡ª ñ5µy U9s–…ã h=ÙÒÝäZ¥î#ÅØ¯ Ú4:Æ}25æ˜Z}"[Î`^ã:‚ò´ï •ÿãhñ÷)Ðj~ÜP:¸´Fªc¬ä@«“5÷õ"huOç¹¶ýßëD‹âÖ«°VÚ­¼“ÍfhœjyÅ´Q—°ƒ‡Öñ©ÂÇÕõ±Ûa¶™Ÿ¨KžtpÉãL‡èéR =ÿÒÉX½ÐQá_ñh½¶ë÷)­G']/v=žxpÌh¼¬¥,qKÜ$ªrÐ>mSœjDk¦ø}–èäÍ ß ,Î[^úU½è´èkñ÷}kñ“´=©s@s´”ÛøhÍ©ËÙ›€V³–-fEhUœÚ/UY€ö­BàóÚh#ëÊÛ@{+e'´óéöY2ÌÚ´Y¯™ó@ß¶ïjô_ o;$ó\ó¬û\¼·h+EW@«Û~IñÅIŒÛÇ;°¥è,‹f‚k6ÈÔžÊÚp÷Q×,´i`®töòYGni HmØ ´þ÷»–±þTÖÄ@»¯!ðÍCômx.1 Ì+ä<>Á~T­Ñþ㬠æÏÚe’0NñI ×tßè7¨†ýoØäñ2òÙeÑ1Ù`^ûöE§âZ0÷ÚºF~XÕ<Œ\î­èØ@v‘~Кø–ë›nÚ¼$´’ õ2/+?L´¦:r?½ômÂq¿Š‹x/7Nkp€öpó`Y´G0µI c]mäöñ+Œ÷÷(h ~ ñg­¿w’LýÛoêø%®íÑú%%¼ïi"=ç÷ÖŸÒÚ“ ZG’¸6H‚–e›°ÓëÐ:&yÆwùhJ~åi…ñÖ«Å<“ïm»>ûUWh˜glsƒ° h½ñ>¥ƒ¸ôVaµæ–@ЊŸ?Và Z9Ó<¿‚@ë a±p¡×ßõí݃8ù8nžæ.ZwÙÎJ&/‚V’…ifæ›wʌǎø Î3ÎüˆCM©ß»°?¶Ïù>®Æþ\ë6|ãÔö6Z™êGÎçæƒVAj _¼h=Œ§&±dcýÝ»Ž:‚6ûÁIáAk¾š|ÉÏ´†,ï4_­_÷½Õ?#Îúé_qm´·ØOÚÝÞ Úl‰½÷~Ï‚öÚK×õ;¤AÛæNžúÚ³¸Onn‰õ8Іþâ¿ …½þöÆ‚hÓ"VÛÖTã½í¹¯s«qlæª÷1+ ý”¹^tã)âÍÓA)[ ;–\Õ¾´ß†*e?´€÷x0ÖÔhoø37™Y­I}>мñèBðÅ}说žòl‹ Ð×:úozn}d ë% §×·I'S~¼ûˆ½”Ð~ô'Jq¬ÝCüé‹€@Wص2“¿è6ÑGåâÙ@“æ|~oÐfèë÷ëŸúNýÄòã@òv.áiºÒÆÜ/Ë”Í#¾É>ø”*îã¶æjô–¯Qˆ[q†ñDÄ¡GÑO{cÏÌÔ;R¤^€ùÕ8ó•rn0œ¼.U&æ7œLÛæa!:|ÒŽ`ž ÐSÛç æåsOTãzÒM^߈wùj~ú¨oEÒç2Q'› 7ô-"rMÀ<…÷ãÃÛÕ`ž|Ôù„Ï?è €m¸¾#hÇz¬¯f}ßÕEÄߨIŸÇêˆÏ•£GëœP¿§¦§|é@뱚“§ÌŸÌzž”’ó‚Õ>›Û1Ÿòʯü+`>pÄQón>âE…r6 >5-Þ}ÿ~Ÿ|èzåw0/Ýäà*®„ñ¶µŽ£®ÎWéá4só2†þÁº;`ž6ö­í<êÚ¼ „³QïfþyûÁà˜?VR˜»‡}©àcMB<Ϊ¯´LÆ> ¯*åÅçPlãö1/q¯?¾ŽyÿþžZ+Ðÿ”*l|A“仾F ßó «šÈJÐ\Mý)°BMÂd²ïüN ÷E?Ö­;³ÎïÌÞý­E×ÐV«!þzQ÷ä…ô÷8'’ŠºOºô¤Ê.[ Ú¨ŠOM›Jß' ¹©€Ý(­ 4y¥ß_wÆ÷gàˆWŠ2@÷SêÖÑ•ú•‰B:¯~vM›ô½bÐT5zaý´e9¦6ê¦TŸ`ï¥H ÿ­0fæ€&˱¿û+T^»Ù—7ù Ð;O&ú·½Õ™Ô1Ü7ùÅ öÐß5î>ô ƒ“wúþôÚ•-ÅN@o—™<éº[u¶E÷.ÐWšGƒ†½ Â÷ð êOŠ®÷W&ÞŸ&ÿ«Ãf<@o¹ÜòqW2Ðß¼Ôþrð%лkëRnîz±¨åC[ÐJ‹Àû¡¹YÙ÷̤+h®zÑ›UúÇ›Í|hrs1Y6a_MÜ›±O¶ÀÙm ©dpfv´ ´Om_­.ÚN7· íÍ&çPÍØ‹ é¶3>"Ž šÞ¹%ÄQ÷›Eˆ š•Ésn©è§+2C0ûñ;£Æ+y͹o+?A³WÇûë]¬ãƒŠ›#Ư"ýŠÄ¾æáå­ìͤœèk:¸~ëÏîhg ÷s<â×GþzÌÅÖxy·iÌŽh´ÆBúQ¯7¯°ãÇçˆ´æ¾ ãZÐb±_¸ÿ´ö²í÷sÆzËM+¶FŃf±s´:h~>ü'¥uýç`!gÏ ù#£Ëº+4çƒZžnøšÓ[U…¿øƒOzºØ0hö¯Ý«~ ´¨j¡‘WçÒeÕÐüpè[ó:ÐÌ6+À:úµâ oo‹-ã64 mFyBñü€Í‘¬h_þɨpÍoâÄù]@k£©BªÎ[¯o±Æ>Vi«^rÍeKËôÀRÐü½Í»×Æ4ÿ¼Ê+¼0ZìÞG @ó}Ám»jÔÛù\3£ç@KÔ3lmY*hÞPغãå!Д}ùºøÞ0¿ôïÿ»Ÿ@³–hÇ{hÑ&Z—ƒüÈ™r”qçDÁÆî0w{¦·[ qïÆÆ‰®-s`m³­wè.˜Û}é(óóOzÝCž—À¢…÷»87ÃÒMÌêÝ…‹Eñžóo…\³L[f5 æFåŠ×ö”ƒ¹±ô˳Ω`N|÷ó ò;·,% ßG`®9ÿù`>˜ŸÞS@fâºFþø‡\Q0Ë‘¾ûî)æ¥õ0ôB.âñÜ÷Ÿ÷Ò0?^F\ú¶ÇíõñyòäbTøÜøÌŸ;+'[š¶‚ùÁKFê…?Àì¦æqïûÇ‘/~Ï24ÐzÖÿßþÅ¡OðphÆ8²±q ž˜žzÊŽ÷ŒcIDóÛh> qßo>ô[Èê;ǯiЬ91FEÿ¿›ô8®ýoÚ߇‘ ¹Nv‡YihF9Oß§£?q‹ÔS+дY¸×S³4ï²v«º ß)ÊþÕ@ŸëmÿSøÞ§|Æ©q5Òƒw3ò“Ž)‘ùkxOÎ&L¯ÔÍcÊåë@ÓJéâlæ¬ã—Ý@Ý+д\­õ±HçÃ"×÷ Žd¯áï-DœÌ¯Võp¨íúGŸrñÞäMª{ šíÿ¾{5h^>ZTçõÜ–çÕÖ¸š÷*Ogâ½ 9|vZz#hÆMûËåfÍ‘Kù¢ž é¾Z¾ü!âOU\Øæ7 çäšyóÉ‘Ÿ†Á¬ÒçÃþ|>0‹à úºf—ŸâŸQp>œ^ð¼ñmû‡WS0KÚ–hf}ó¾êÂ7ÁLöm7gH˜5}Úõ"Ì~<ñ®qS³î°XŽìC`6¶‹ó¤Þ}0‹:¬ãÞ+fÈçN\³Ï}Yú»´Áì~©BJž˜ÝKpßëIÇxC§÷¼³ß —¾é!¾E ”ªx‚Ù§pÙs·ïYBÿ*õæl0ýé¡ö@ÓÌÊÛ®xö«à¾áúëçÁ,wo6ï/30«¾|zS7˜5ê8Jά`~Ù¡‰ó `š•í×:feöE¿GöY¬Í/ã(*˜eDH سƒYÛƒÕ«n¨ƒYzÉNÊ+mqˆ| fu¶,ÉÛ¬Àì /K°Æ:Jï–ÝAË%æ³Æj|¿§ví /S­Õ%=. ²®Žf‚Ïá÷Éò½+È"$®¶¾Z6­Y6ZóÈwvmw~ú´X³ÚJ‚椒²C>/ɦÆ;“Ç@óñ޵‡™,ÈG„[û‹QϾ¹{ù¬Þ$êádæqùç uU‘ в uP¡{áQ%hÜŸ1{´ˆ’z¾Â¨¯Í¨†‚?@+¢XëÐN1ÐÊ ÙáZÁ‚YúÌOöµ£B eì±.ø¼!h¹Ux¦L`=·ÝÆ~¡nš[qHD¬õ-%u óâ°6}ªŽøí(ô,´N°?s}ÚZ»=dªn€ÖÙ}5·˜ •=Ïxu1ukÀášµ åh™<ÞŠù2±I+@ýkÕž(j©‹¼¨ÒX•aZjò9¡tUœ×ã—Ü´.íåÞ¢ÒZ^9ÕŠñ UÅåzþDh\ësÝùÃÓSÌ›,¨›¿&†˃V_É{žËAë~ŸŸ hùîKõªhCf%±P´œ„ްñ]¨«z;6¸"U¶ï 5ÿê\ú§ˆæêdž‰täôš¾í~Ú¨S׳·Ú ­=y#ÅqMGîkƒòã4ÏÍ•PÎSÆ]î^˜T6ÚÃE–7¯O£ž¶u $ åw­I-ÚK•éK9k€¶´0f6g ´š4›% Ðj-¶Y¿ÚxÍØ¨Æg =–,eñˆÚ¥ã–ÍÇü€vû—¡Mêl]ú©Ñ Õ¯S»Pw×ÊWj0ÿk¥g¸{€ÖΓà~ hå›`WÂW ½;&´qPh­o|–sÈ8/prÌŠh>„€?»PßwÜäú«‰~εí³wÑÿ?M:"}¦ç3/°~ŽÃóÒ…]Iè§9R¨+ThÅÅï„mZדo­+€Öç4ßh, ´½CTÏÓ¸_`KßÌОFfcíÍw‰ÈsÏ1¿£³ýN‘Gµçk±Ú¯Ê 3«öó§l,Í̬£ÏU:€™éš…ËÕ`z)G2'Œ>ÄFfØ‚a3áÇèiœ¤>1ó3óÕ 5qü`Z­$}UaÌlºúåÚÁlŠžòçÕ0Ó÷™i³Ó/m&ÚäÀŒ·îÓm60³RIõ•³µÎVeRÁÌÉÜñ¸Dî‹,½¯»Ììš2ܳÀÌKý¸Ûù.Üqýâè-qC“ ˆ³6fu¼g2f^Ü»ó~¸ÍñËg~¯¢æçK oJÛfÁÛRž¬REœr¯ú fAÚ‡N ³C5¯Ç'o‚ºÎŒæ`ü,iŸoÁÌáÝå)a0»4øŽÿ&âÏAç'¸ïûu¥Ô||Ý™Û>ø¯“Ù•„/2iˆ£û+'Ï·ÌsŸÇqD0KÒÇ«è'à Éí$˜|ö%×l3ç|ÆSÄáSk÷‹©œÃ:Ï ílæ³s»®ÿÐGœw=hT6ÜŒõR…Åu¢µL,x5fÍF •͈»ÁÝeklο¯cA={+†yRŽŽ<¡Ñó¥ò~æðµÙ‹øü«¹0P4K³”|ƒfúïSó)Ó@g°´­jÍ/Oó".ãû±«œçò»ëyl›ž£Þ(ô?‘²ŒºäÒ˜FåCäQ&«x•ÝPÇímsø§hòËAs”WËèjh¾tæ‹EùÚgèê~Ív[ ý5W@‹çùð®ÏȺŸ^|üÛ4ý6øþ Í_äÜÂ]¨Kû†ª¡^ZòÈq¿ëšßå+ª‘—Ì¥…$§´€æ ïxÐZÔ/ íÉ‹Eö µãûjÆ~ä/?b‹~ >â(^]óŸï Ç/îáxšÃSÉ»7׺ٟzˆ:ý'%lˆÿÃÿû=ЪM´ ;±/¾üÀáš³Fnt@½öpnåö±÷­]¢ËIœ¯džºšïX< íl¨§yt»çÌv_øtuù¤v±9ò·éßÏb]ó Áý¨ÛÆ$½”B^b±î<—6ò¼?"Ý@;õï÷OÉ@»Øòå;hV¬bv±ˆKÌu9~xHúcB@;0ý,}ÏМ=NãÇû¸.æO§Ø"Ðþún¶˜×KÃV@;êÙb]â´Cç·û¬A<Ò=¨­Ñsh¶žê‡^ÓfúISŠG h2rųƒ@“Þïc¶h»…%¾±šl¬t¨ð% )µÌ®þ’ ´ +ûJvgMþeæŽv í¡ï¹Ùð•Ä~á½ÀRÞû«C?Ç"-T€¶}„é3ˆþwT „ äMü«'GâÈÖ?}’ü€&X÷íò/šÄºL'aÌOlgãYžtÄí{Yš·°kT½d½Žáùn‹ŸqC@S`¤>*z 4êƒ×”DÄ»íJËñµˆo¼R­f÷b>ñùÝÅ@Û9Òaq¹8Ï9Øb<‚¸šªÐÈke9qÞ6Z‚×hüomÊT 1¾|ºR‹ Ðt^žYó ëÜHN ýÅþ((^kY¶ÇúåZFN=ĺï,‘Çhþ÷¹e3"Ÿ{Œ,ÞÇ}ädmF:˜ik_‰©DÞCö™2Ñ3ú¡î¬÷{ÀŒVQõFÑ LÓât–ŸG‚Ù¶V¡Héw`¦däª#fÆ)Bï÷"ÒR‰ïžþf >]MΆǼDù®Ùž;g)´BÄ¡6­ÛˆoƧ:Þĸö9ª‹Ñ`¦6L>Ž|JäûºÞ2K0“– eŸSC>™ÁqTÝ/= ¨ŸÌÊx¶Ô9¬úÇeÑúRí«ê); vÖ‹€zù€Äx§*¨×djÖª`Üà¢û”í˜OÉ µ)± žöñɦ%ô[à+#’AÅõ”g—z†@ÝîÃɘš@P¬Ë9ÐTêmoGŠ×Ýõ©ÓŸ?îíõ,ªL¦²¨Ç¼ºµ`! ê9$ѽõ  ^xgUÀ¨5¨;zIŠÞtõN¢ÑÐÖùêívYn9PwÑ>aÉêþ•çlä‚@½êöî=–7@}¶nm®n&¨‡»<<ƒýRÒüì2‚¼Nú¨ÿâ/<¯2«©ðóÑØÍ™^¡ƒu_×ù—×—]6™âs#ÉhèŸN–i©pÓÁç éå[’ºæ'ÐâY…cöå·Z>èg“@±‹0âááæªñ@3ªöl.%¢.xùñŒøw ]Ÿ½ÅËV4Ïb©}®ˆ_©sý9í®UÈÜ¡Ô-ŸD7±mhôÒ}Ôïò7Êê!o0?÷¥í•+ꊑßÞ-¨^è7ZÌ¢NÈÛX¦= ´¢c÷Ns»-Ù-n´‰h‘W›é¿¡îarôN¢ßC+4‰, Ý·h‹™X…yìr E÷zn>€x|£µ*¹÷¥Æý¸ ´kWÃ÷nÄ|˦öl_cŠþŸ_QØ‹ÏíœI£IàFÜþl_ŽÏéü‡’ë§r0^ÒÛë¶?pŸ‚[8êÅHrŸG=ñþ÷³É¶8o;˜QŠ<$Ði­ÍÓO˜çžõ,A¿–P¼c단¯¾õ׬)CªT0¯<>BQ>ÿsÖÇåX­pwup!ÖûþHáÏe Ý{VºÄNýÇÏVW6£.¼ýëãgMÌË.°ü}Ð"N4œC^vݺ¥‚ûp Øù`=~jÖÂÈS.Ÿ5¹zTuà}Ååûë@­æ¿×IÜ^“×jC :ú6‚Z‹aºÚÔ¨=ºl7Új“ɾ¯NA}ƒÍ‹‹?Aíƒ7?!ÕÔÞi=/9r ÔÆé«•Í‚ÚÙöÎôc¼âjþÆØjDô÷ʱpw ¨}Þðœ¬øÔîVóôœ•µûÙOý5û°bûD̃þg¼¹Ô‚ä¾€Z—êâ‡Ý  vscÛ‹ÖzP3®£ƒZÔV‡_F{@Í®›!ÁíjÇš$ ´ðÜmZ¬KK¨Ý’ð•1Újù96olA-ZâLñïW Vp%æ<7¨yÙ^Žt_µ¸{¼t@-QDb\õ*¨]c›þnÔÚÓµl@-aÿÕnCYP+9j|èh:¨eÊœßaj©J+LÊA-9>áŸ%ÖóŠ2Þ8~åwÒ·žµ –k·º0~JefÉiP»¸¥fñÓfP»¡¿ =@­hz‰µsÔê_UVš¬E %êE·A-púÝ@×k¬söÔ:Í; –ô}Ô'ý˜Æþûüž˜]4w ¦Y2o~½¦ñ,~á\C`šwxÈíâ_0Í1é•_ߦ¥)-«÷€émŽ/ϵ³ê˜oص]«¨ñ`útE!em:h¼ÿÇËÛ@ãæ‡³ÛCA㛽Šð¿ÿÏÏõ3,Ý@:ÜÁaR`ƒpÕº¾:Ðhò`ž&îðss¹ªàçC¯:z4¾Ÿßï?  êâVÚú]›V9ˆ uüYÑ xkØuL¢ŽòÊx€Õ؉0»^€Z‰F€Síû~^8é<Ÿ¥¹ àGúŽÁßÎ'Í/ì¿À°e‰50j);‘ £•Y¨½ À3ú‘øÅ—Þ«VIª¸ŸŽ*gÙàº6_n?æaeÿó=ž7—«³Î¸PêTpŒÀ11ýÏ“£çyã™kNœ­-‹¹q̸‰ì:pàIu[4ÖsbKÔ‡-x®¬ÑôæÜw;•½7ýëÜú~Õ ýÿàö¹ûœïäFÌu8^|6(8$jå„õé×æç‹¡µvÝtRÀI¾i»îæÛyŽÝ8\Ð}ó{£}»ò ò±ƒKw’GñüôÄ›Wû”“N}rüß;JÙRÂQ¹mÈ}¡· >@~$¿*ö5Û{ì'ÌÖ¹¸zÑ=¹ÈuÙuy~yªÕQ¥è&Pv×K?Þ,Å%ÉE UÓ:vȵòDÞï@nãÌ>2}ý\ù=qr PÖ<³R}”Õ9ÏíîV……³V¦oȯ…5ƒìeÜ4“vÌãÇ%×Rs+ ˆR¯y7}òÒÜ&·[#èÇÝž_³ ãç¯ürïŸÊõì˜ç`¹ˆô^{ °º=­›òϬʷ,.@Ù4åyú[H¹²ïŽ:®§?oÒ`ò—äü)Ž@þËýûЙ pì:ôèÃ;¹ƒ¯ ÞòïN»l×£&‹&Yó1Lç©WŠÃƒWÂv/×§ (ëp']òÊ՘엹@~þcàPØpñ$¤`<_›Í ý@þv Õû¥<ÿ\È`ÄaÝOåÖÄúrçV¾¾ò¯ŽYÌ«AóFr [ØM%¾Š…{“([<âÆô€Ü¶Ôj0ývkËNc¼÷¿íÏôçÑÀtj0ìvV3˜þ˜r>?ŸŽã+ó(Ä¿©ˆ+_¶ã=˜¾öÉJL?ÄŸä9¦¯q–ü¤€éD‰º'öß´‹_ë•Ç;0*?Òn°¦#ËÍD‚é/ÿ œ;Àt¶(\FGL?W®Õ¶ÓOQmìâs`:8×ÏÏEÇy~ŠWF1˜¯Œ÷7 ý´OSY¦‹ßJRŠÀtáÐtS Lg:;ª£¿†MšˆŸÔ„$Û°®‰…½7ÒÐÂ¥Í7§ÇCE‚üÀ´ßŸE?óá~CsÃ}K¥pb]íw~.(`œ1±¼ÍXךÜûwɇ:JåÓ¯ÁN¤_wrëRÝÆl‡ômì•yÊèf̃[Ô® yøØÉŽ‹ þ?Zîêkûÿˆç¼õ½›FÓ4ç@]y¸xË}Ô ò:7Ööºiä…|¾PºÍakŒúb¢›f¦†çÓŽý® Ø ê´Ëµ–¶- ~t.“Ûè/¨Ÿ58\êFr2ž1k@9Ë\\eêì ‹îW@ÝuçÁƒ÷@ÝC®µçîQP¿¬¨5sËÔ}òÆ/GÞÆõ¶þ¼öPQ|ˉ玺×k/\õã¦Æ~Å  îÜ`÷PõWΦ AtÔ]™5MÅS¨Cއ„} @Ÿæ¹Qú>ÞÖ-‚ºÈ"Næó'Ì»L¨™òã'ê˜|Ïë[1Ïø_Ò'PÓuüÀzuÎÏCߌNú¥Éîý¢Õ‡ ñô¨W§Õ0¥+q_ˆ¤Ž4ê'?è{ûÃ5…/PžƒzÒÅ­¤Hô÷Pt}Y ê(9g8ê§dÁ|K­¸Ù°î«ožO,€úµÆ¦Ïc@=@íÄ\MÖ•{RYRÔÍyÍ9Z1_Ÿï‘[×#?#ÑSoÞâ¥ÿ} ¹Ü{瀸çÉG¿ç@LZa×mùDŸ“‹g¯-Ñ+‘¿a§/‡zl^lbAEKpâ v½¼ vˆ/Ÿ¤¿Ó+bêÁÁüÉZ fœX, ½Ä¢À€&£C@¼0¢pXãcçD4I Þ5÷;{EˆéI“º‡‚0~’ü‘“èOýê/€˜×*¤÷¹ˆuži«SMqÝÉöð‘ ÆpgÄ0bã¤Ìåªp VüVªz¯ħ—ûžúX¹Ph•UŒûß²KŸ²Çõ©òÏp_þ}™kkË€˜{4ù÷S Æ7;_›CycMrâb@|òE<2hˆ÷Îëö(bá‡é €qvX:Zˆ‰Á ÎÙ@|~o­‡ˆåU$¡ Œ[ª‚õÞ½šä˜†ãX=Õý¡8NvûÆ}î'ïïvgÿ¦ Äœ_–·bß6Ê6G¼Ä¾½®®ebýVÍÍîXw¾wÜàÄ^ F›­m´—ië™*YØŸ¿2IÇ4ÀôІßÄhkÞòwä#~ç}ó‘oÜe^Ù}ùÇ–ž*ñ|ä#mfo½‘Ç\Ù·:?½yTz¾ßÕãÈ[ž=¶D|‹½-?üó'ò*µ6MŽ_`z.Ÿ_tÛ0=¿·ôË.ä9W-­3(¾`PÊ×ûqÆ3³¢ÒJL½¸–ÝlõÁÔãlÛ–¬I0uf혰@>è¹fÊ|/?˜:ü|Ÿý yš÷¹\©Ü]`zÑÖ5Sý ˜ž5¼¦ñkϳŠËË?@{Èjݰ ˜ºó(q¨#^z2ð©[ÈvÒ¾µ8/«xÚï&˜ž ›½̃ûD_Z¼ÄñÏZÇp=>Ulÿ4˜ú/ðä' í?q-Àzô†ïuäyªûxßç'èSWNÛ Äá3 o¬ÓÛ¾óÃ"â¸[wâk`g¿âšç…e{©çh{›u*÷|œWÅ_C¼õ~U¯þ|Wý…aäÅ®­š_Uâün–“ '1.ï«LòAµ·3”E ˜w¼å¿º(q"5"Ùò¤í†™LP¼ÿ{ý(9 Ré@©>˜Á)±(Û¤ª˜ÿ-ý=@åVtWÔ>”s Q<ÕS@©à-bµïJrž|°(w>g&|Æçyaj“Se.ú9¬júS ¨"Ú6êêÊwE8š ¨k9‡×u³U^’öfbPYg#~ìÁy¥°îGѸ_R°Ê²Á(¿ýí«õ‡€ºN黼Ü>Pòïï0ªI÷:핽ƒë3.áùÚÑœÇAåÙž>»«›Ae@@”g+îÿ9öITrÂ-÷ƒÊ‹òÖ…#AepL¤Ö@ ×YÍÓ†ØA¥+hµ7T×s¼•>º]‰Ý4¨ürÉ©\~ºíÉïkƒJ‘‹ÍÔ¿¿ÿX™®S‚6–¸¼ÏTÞž=ð[Tz÷7m~-*û† A¥­øÊŽó¸ïA楙 ò1åÏ[NPißQ¤ÅS *Ó<dW@eD¸¡ë‘¨äëCó¬¯ÖÚ„…ûò‡¾s–á¹ÇI)؇é¸Ë #˜ÿôî0¥yPùÐV,„ùÔ¦ÝM4VAÛA¶ºý ûH9˜b*ÃŽ¦ôÑÏ•§÷†‰ òÊlÇâö.ŒÇ>ÿÚ'û¸*ËWzóÜk|Þý;ŽÔ–UœA%»F·¶ók”É/º…¼åSò¤Šc¶Èã&F:c¿L´ï_9CÓ÷ïrì#.¾à6ðC»jÃ㎃`ÚS$båsyÞ·æc¬ˆ_•R·N N~köbã“m`ÚèÁlLAÛ9”ºRq>ÌÇÚ«LÛ º§ñž·ÆJDv ¾¶r¬±äÎA?æëQ'V=Ùu3¤ù¢9‡eÿ±+Wú©wO¾¸ª LŸ½tßÓùTt§ ;˜>‰ Ðë3ÓÇ3g':gÕ_UZÒÅ8Å*‘)¨“ëù¢0~3³åµ ž?½’9†¼´]hî<æ]Ë$V´[€iõ£âíÓÀ¶¢Èësε†à¾îkÍeÈW;ÖÚyF¼nx¥ôhk ž+å“Þ¹÷]Æ:÷Å$KYÉ&ôRjèbÆ;¥yÁyï‹íýmøÜh†‘'#Bè÷ÈÝ~2ö©þŽìiÆÕgüì˜ÓêÎAû [œ¯üø„û'˜6Õ„õu×dŸ=ûÿ¿Ç7Hgj Zs{€tiíw•¯h;/ÿ¸ ¤p éþ2¾^(üठ®z÷öiæèV¹'@ ^Â>¤@¥ø±×ª@J\O<²T¤Ã[k¤Ì€ty•EÇr<_ت É«LWñ!†ÓÃ•Û €ô–’§_ýHÓ2.®Òìà¶šQ@šº£–K~¤¯ž3.Þ“@šlJa·IR§Ã×/€4æs®'EHo6¾ŒÒÇ-á5³µ@æ°h3»Ý duãº;qìßÊ[BÒ«kuÚ£ù8Þ‘Ø8¸‚y/_Ðek2wƒƒÌóe }=ÂuýnKïlÒ/öbÛg2@zióíåU5 -6Ý,D^LÞv½,Ò~7•ÌM í²ìµìÈy sªìoݤe¾‹¼«±o §ÂŠ´€ÔHzÆ ¤öåwúÃ@úT&fõõz$š‰£^b¯e]9 5uä$ʟǼb‚|KEÔ²ù;À ]—ýºo<{þ}.l ÚŽŸEQAq¨^ˆzKí‹éÍ# ØÆÁRÙ»ûj\Cú‚Aq$ÂsüçPÚa»V©U”vŸ_Ñ\ JlÅ_[gƒâR‰ëç΃wY —Ϋߚ;ŠŸwö>Ù"J,zé—Æ@I¨ŠõÈÃ.PÚ¶$)^ÍJœ5Oí$½@iÝýiÜŸ} bQg¾½U+ÄøÃ‘†§§@±ûzõè…~Pìÿ¦4üã4¶é‘2Aiã°}qÔæ}v_J¤ (>7>8‘‹ûªÅ”Ž—ãz§”L·%(N©}“;ZŒ¶5>à0(NvF¾÷ÌÅñ O.é€âËú{k—dAñ}Èåj¹\¬O<Áëç+P’"­½ùç¾½xq+ž;½|oc (Ž)ÖÑM"@±ËCËã ;(¶ôlã3 ƒâÇ=:L6¬Ë•U¸çÓþ åÅ9N† ´õŒo³G(~¡Nü°xŠß<—µ2oà>á—œK'0ï¶Ç>æaÊ5Åq ˜ªÕGXIà½ÖþÒXþLoý‘¦dƒ­«ÜÀ”b1l3 ¦DÕÃ…×PÇ©Îø¨"¯“ßWzùÑ;†ù§©¤frÑ8êW’Xןk`*õI!í5â¨j¼æ'ä5ª%ÍË¿pžû®OÞo±°{_¹DÓ¾.ìmSÙ®g–kÀTúo*ùá»öí§¹8¯:fXŠçB'?xRq&1xu Äùç,…~õFœDÞ&ÄQyñCúÙ¾O1ÈKU »3‚0¯·ýº‡¶,bÇi;0•¡90¢_Å£²{âñ¼ìR£[áN0•òØâ+0ÝËœª\ƒ8%éëÔEB¿i žˆSbîó<ª¨Ãå=µÞÙˆq¸ÓßàûØT<”¾Ò‹x­´‚·:¢Ÿâ’A¼¸žCúòu ýs[ÉÞEÜ–¯oîcÓ}ß5>,a={«û*¯£¾»$¿÷ù ´[‰þ%O+H)Ùúû6w¬Ïäøê>O 3¼ŽÛùÀ9ã=b¬iD S‰æÈ´aüš-oþl²éñ]¦¥$ ŸËõ;æ‹ñÖÇ©lO²qË÷¢ˆ-@†¯]OmOYÁ¸Í¤çé3C} ˜‡ñ؇7€lrŠÎã€ý³aKÜÙd=FÀ'v&ž _½¿³ûùæsìÕ2 {Ûîˆ`€ìõ?¸²¹ÖËÝ|²5žÅâ {·×7;ÿÈ^k…M¯A6ÓÉA¼%d+—ʶ,œ†ŽÑ V;½>õxÈñX؆®Ù/)‹t~ì§ïÜ56á˜çÝÑI½_*;’ª²ï¦ÿ8ß¹áÛ:Ü Ñ¦í%¥€ìà…§Oö©ì¯àˆ°# Û+eø†²MK9g¿Š€l½Ðhf úÙU²±¿¹^´9Îö)OO"ÈmJ¿G©­Ùô›] å ›)²eîìœs 'xn²pµ%ÈVJ?ºÊ²]©ì[ƒû@¶»ÜöÙmw:œ}IdSGà&ß.mðϹöäøó¾Ê<‹9•í× <ÙºѺÑw°_¥éïNGìð— ¡¨zÍ0t¤…T€lÀ¸îk Œó‰zè¦$ÈŽŽµ°§¼Ùo9ý¼ ût÷˜ÅÉ!ÛÇWnÝ>²¯oZô¯²Ÿ×~ˆ{2²³Ýº¤½XoŒrÐö3 ·«~ÏIa0Y´ÿ÷L~G­ Š“Ÿf}šÀäÇ·“ÊcÞ`²à9]8å€ûŒ³4¿È€É÷«¯¯Ü“¯†—«´§pÌÊ J¹&3œ^³9TÜ?/o¹ÏŸ•k|óý=[ÿÖÒ÷•ÍÚ¥}Â}MÆ—­šqÌÕ§5 &ß´«‡1þ7ÎaV±G`òÉáØ™~g0Y6¹#·~NVÆu".­\g5É &Wi°ßù—gÞ'm0e3í ¹yL׸1­’nb±IQ”VÌׯNÖ”ãÌŸÒ^VÂ|¾žÓ“¹¥v1=`²ôK¾ûƒÉ³šõ©5`ò«P}g‹æó”Áä‹Zÿ„õ}ôàâ°øÏó.Æ}Xþ•fòc:ñ|Ü·£‡Ð_•­÷Y¦\Û`²²ë‰[¢žW©v(A‹û}ÞÐ…ù*H¨qÅáy‡im[¬wóƒ «0nN̺¥r¬³C¸àb æÃ*•®À‚~ú++¾“I‰.‰ÕÈ›Lÿý8ÂHšêRº-tª5|â%ZMmιî @²ìþõè`>îKý’3мj×¾Ö¶;Èï.ÆÌ";÷ž¥-í })zÈ•U•ù¯HKuðù$ÇÚ-õk¸øãðoäsz¦wÆÔ8tt.Ϙ«ýê=*’ÀýÇV13:=€d’Qä²ÛHºú”©¹ É;žzfþí—^KŒ'+½+7â ”ÚL~rz‰ª÷÷ßf QniP’þ¦}=/€¤áûÀá,Z9ñ­ãiXÿä|?˜å›˜Ç,ñü–S·~Ig×x¶% ©è…}ͤ2ª﫤ú{Ãʉ 1Üs÷Y#ßÔšP°wļk]R/ZxI&øÉÀÿ£æ¾ Œ÷¦?²  ÇÎeÛ‘—Z—±p#¶—ø²v3Ö/UÙºNÐíƒGGïµa?ž¶F²Õ‰œî)GH"·Û%w c}1;¿KbŸÂË«å"ôø}ᙯ }&ò´{¡(HSÈÑ%ÔË m›Ï·éì9>7ŸÂ/ ÒÇýˆÂ¼ ­¹õ©p×frBŒï HßÌè’’þÒ1Q|&»@ºe<|pÍ!öµÈO(ti£—ÖÛwt†>þÞ K¸“cCéÈ¢‹îÜ íªIŸ“é‹k™ ár íÎOÙp]¤Ïzû׈ƒt|Ï}uÛõZ5ãdŸÙ.ö¤k*ŸXõ¨‚ôÃ÷u$ò"HçtÇÊ¿ºÒÅ)Öښà }`cÖ¡Uò ­PW½"|¤u¯¼´ê؉qâþ> _ ÒBI÷“>‚tèŒöåUiwVcS8®ÛÈiq bžGÿ¤ƒôùå´„”Ó˜CîǤH? ¾xYÒÇ_º´^a]$㈀}“õŽž’éCµ½Ï\AZÜyM‹uH=2ñpú"Æeñø9…þ>ÿî ÒöÑ}¤ö˜_}±}¤µ>ç6Wâ8^sܤKùnmMžܻ&c‡õÉX¼³ñ“s¹œ bˆGAŠ¢JxOkŸB<ópZöp¨×¢[áx=ÔlNƉ»ÛÁñhg¼C»eN¿ú(˜\пð»$LÜÊKõÆ"ÐoBÃåêt´ÛZü×Ôãºdö€?2WçØGô&ÜÇE –þƒããêBEˆW^íÔÚOÒ`â¸YHóL¼u?%'H‚‰güß0 Ä)_› å».êÚt±a~®aQG.áüòø ´~˜<ø¸èM=½7 ãyÈç~+(Äót?Ä7Ô ë›pŸggö™s¯où`âÃOÔŽ¹Š¶â‚ý¾%09Óϱ¾ ûàÈ»îóÁôúk ¯žgm±®›Às;ì6ߘ“ó.é†r˜ÇAÞ3 í—ÝøÞ ôã%ÖøéÈ0qo:œˆûznþùÎóÖûÞÏcžã¼J‡`¼Û}?ïÀ<ïGÖÆaœn™­Žq}uOAöá"ßî¹Ã`b±:È} ¨Öÿ}/6õÈÝ»!úI@5" 6d«U§RÅ7M¨VqO~fÕ—gó8Pw­÷P;»¨g˜Ž\ê …Ë©¬§€zöûÅ5r]@ÛëÔ:ÂÔ½bÇŸJvÕEÂÝÏðPIÝU ÔƒÒovo5ªÁHZÈ? jE˜¼è®ê¹âû]È@eºiî] Tý`ƒ9ÙI ’½$>6ZU1l[˜ÛÌ£´íµPU¾ë±õ=êN’é…’9 î!hÝÙ"ŠëO”îÁ¼È: o00ÍÔ~Œc.¡Sí@=:”7ŒxKUpŠ›2Âýâ Ÿ Ç€J#$}؇qt®ߪwð'cì‡ ;·wÎKÌ7Qw—}"Pkåê–Åùj}Í´¾½)r_€j“ùàË& P(- Â>öæz‹ÈõÔ®-ôtÌ_j£ëCì§ÔÏXK‹2<'—,VáÔíBq"óŽXç£û¤Ø l>ýÑüz„#zûoð7q}3ˆ¹ 7$eL‚˜]JÛ‘ ×@Ì$ó÷Ã_¹ v•ýç}‡tó)ÙÕvÖÄ..¹,!b7õ®hG~"è7Ø$6&[{¬XNÉ.†ŽbeÚÜ oäEÛžÈ:º#Ìšºøoßq±5ÑÖ8¾ëÝuNLvT/™ªB»Ê屘+˜ˆ‹E³Ì ^ ï¿s!ùæ–r¥Œõˆ_|X³NicÜõŸ7AüÝû»÷²{ æÉ3–c‰y³q,M"¾l¦<‹Ø‹x#¸æ»äeSŒ#û+cy¨°ÝÁPäyâ³µ_|‰XÏá{7#^òF~½†ì£@Ò®/i4Ÿ0+X‡}ávéIA\ÝÊùq~‡D•°2ââNÖk3!Å`²ç²¡q*ýjÕðK²á:ß6.µ>\÷µ­¸¯ˆù_þöFùó†,y«ü+¨£þûÿ¹d'8¦úLõ¢¶ZÇ/Ô¡Fô¹²­¨?Å\!Õ{V€|–c%CÈGDér÷ÙÓdŠuNõ諒.½Ý¨7uý½½Q×2ýkNÿ= ä듹c*€|klø™Ô7 »TM(]²ÍÎOÅOë1ޤÔj=3 »·][­díÚš;9€l¹½õ¸ø/Ô‰ûŽ·²Ùîé‹~¨sµ7R–Vùà*w‰[ ;ÿ–’{ƒºÙ=âPñsuÌ‹0ž}õ®ÔUÑ\Ôù–­nu†¨k›âož­²[å‡ã‡QG[÷<a:ßMáýÙo]@>~²NoÀ ȇ(ãÚ†€|ê'Ì&¢_ŃzáÒo0JoÜ5ÔÝ' Ÿ+êÅ¡î'l\h4Aÿ–gÜØñòz@¾lxéÇ3@æzgýCФ”þý#‚dßUï «l‘¢+¾ï)û¡£­A ebc·D¼RGÒøÂ‰ e+w=†¯$ßelKbX‚”ЦÐ&UvLá¹J©‰É§= ŸsÚ(ûuØtÍŒ˜GmüÀó—K8fÙ6kÔ•¼€ûë“OfàùøŸI&0ä>WˆhãXoèUø`V¸½z‰~ÉAÕI7p}¥jv.Ïí.åÞ¡Žù¼?1I¯À¸74W{Äõ÷Ë4;V`Ve¦Úº½fM¨×‡ù `æÄUÝÓfsñ…@A6´ÝYÛ×Máy‡Uv_L€ùDGRáíņ9wGô D;½^èÅþ<Š) b_®)ßœœzƒõ¶ó·éÀýÎ)Æe@hÙ®O[‚³Ó}$dþ÷wà @ºìäTîF 1z]ËqæÈ8­!u Œ_ÈÜ•Ô)ÉË¥.ÏJ‚LñÍ{“AÆRçÛYÞ,‰¨põP`銽ώ·‚LΆ©cU² CŠztäï©)VK½Ÿ 2ù=²ñjû@†w÷ÄK ÈȨœ¢,ñŒÜ}úž_$qQ’n5{A¡|]ôCo™Žë.“ÆçÌ C¾?­t dÒûZ~8™‚Œî€9÷ö¹úí \Oû­Ýà 2!¯^ôþß?¬eëAæÂÄÁý¯q}íºåm¥ sõ2sKãȸÿ=•¾ªdtV-M’0~\øÌÌK/àÄfa6¬oú~ClÈ;ø,,÷Hϲõt®DLÌæ•jVŒ¦M긨2}þé—AæÞV¥× SJM¾™ðdÂ=o\^3 2QÏŸ<êÀ¾}{=>Û2þáJßÃÌ@æfž×«¬wë3“hœ¯È±‹ñ™µ!ZbŸJ@&á9×MñùÃ÷(cÃÿ~QØŒqoíc;_ãíøtûä%œ¨ÿµ£ûD¤£œ€ñaó¨6¾ß$.hƬ֘ε@`| :³âçˆc͈ç=h‡”äwÛcD<6ôòW`|ô%"¯b|ä)ÿÈŽ~WäC}Øtž¹3óÛOΩã9™¿Ïô1õAØ`‹î§miáIÆ'}®$½U·ûÇïjœï¯ÞZ+ŒÒÞ¥èwê÷9.`L º)yómõÚ¼ê&ú Ö"žhÅxcÏ?M¤`}–ë£v¢?þÁÌ¥£_Nìžq0æy>,.Óm«•ë(0Üö7 áyÑã]$`Ì5V^º¾ý¨p™¶F`¾aÁŒÉi´Aá:;Dqÿ*7EÝ=À|Ù5¢[ŠóµáBE¸?µ"±P㈖î½YŒ±}÷c*0“m}~¬§C”ÓÝ ó¹¼vïýNû©i–0¨Š¶ ™8n°1‰ÖűÿÏr þïujb¿ö IIO Öïuu âÛÉNøz;ìtÞÄÆs=QÕ™@lQ,HñßÄx»ë=¢~@,ù*$Bžbï˜ïX9®ßßaȯoÄÖA V&gFñ¡ìÌ/ØÝSÄ^ÉñýÄJë:ŒkK¼ø™ÄχzËNËq4üþ±=w€8¯Þ”~ˆUùßÕVñk~r†*?ûîI5ݼ $§° v126z Ä—ŸŠ¸†CXÕ4ך$ÄâÊûë[ØÐ.$öøßçÖ=®ñÀëÝÄW¬7|뚀ØÌÐ{Ð4Äß­¢i@Ú’ôö‹@X~Š©½Æ¾T‡®«ÜÄÇ,Û¤vãþÃ÷rý‡þ}ž+$Rgˆ¹£”‘±ÞK)?Bˆ@lúxj ¿ §œ §Æðük§Ö3Ý5xþZÖ›ÐAÌ/çÑǾ@|Ê>Ÿqïƒö¼(byž#ãè þÝÛçŠçF½J÷ѱ¾×ç`„ݲðñd% §e)ë¢n€BjÃŹ=ú P¸öW=_?(äíø1Ø mѶÉoBŸrxÅ`(_ÛÔ@·…›kʬ^ªƒÂúëž»xAaä¸G±õkœw8´øz#?†Oé€Â}§ô,2(8o‘Kû¦ vkO]£D€Âñ…ãW à÷|>ÄV.­å…4;ÑfÁ·  ïõ¥ìÍuP°ç¥HØl…Û›u*è¶ à¸Îè÷€Bî×sµÛq\ T¿>}T$g¼%Ënc¼8‡ë2 ŸÀf©Ú ‘ælXwþx0ñz#ú¡_ßÎj ·Š½œw›€‚ȱѵñD™Æ p’™¼ù(Hæ[Ëm™…x®îu:÷@!ÅL™G/2‰Ê:w«ÐŸUºÇiP(ÝmöªÔ„Úam:(„õµLÈažõ%_êfoBòZÕ“,¦˜g±Õì¦÷ àFø¡¯ù–m¹»i®¥¤•g€ÂLw—'¿¢íJ§J0þýxÏï/§ãôs¼‡¯¿(õínF;—XLC!âËï×-Aöhc/ï¹ú¯f6üž‘Áû˜fÚ5ˆø1ö½ñEŸ60z×;Þ{ÿ݇G‹—ÚnGô²þÃ6ÃI+`4öø¯¯£ÙR?n0ãì.ÍH•G«2dÁùÏ]mn5BÜ5öâûúã](PéíG¿®ù˜OŽáÄÙ~ÒUKÄÍg¥!=ˆsÎfF•ˆ“%?#>õ®Ók|úƒùºo£óPâ/&âZϦÕloƒ0^5Ï<+ÆïÞsYãñŽ©ßÉÂùÀè[õ|VŒ—oúŽÿ¯ÎöÆn`tÝ $¸û£¿Ôêª$ô×ÏÕy÷0ÞU|­ƒx÷~åû™òbôw¬}¥*ÇÛmË1^_ì§93Àx19%†ýíXr¾‡xÖ“¨œû‡yîý¾µ Æ¡ÜÛ„}k]½¬°†÷É–-ììÀó…gj:~£¶j«âý`PýßÇÂX@5®Måm›¨:•-ZÆöj ÁË“¥á zz÷"çæÓ êð<Âåã<¨:µó|_•!+å¹iaPæÿì•¶T%CJÝ­T@õĶ‚¯; êlp-¹ªT]?ÊýÕÅñö÷*»)ç@õúbjØïPÕëkßõþ ¨j:}ª.bUsW…A1^PÊÞâ1i ª6Žƒ> ª˜î>îªÇ¬“e.€ª:½6|)TïQÙ˪ú©" íÞh™!¼ö ªö0Ç^:TiGØN,ÓA•2ká{ ç™ö}á÷@uÃÈ­C‚XANÔ/ô³O£c÷þPU~f<õv¨^Þq(ÃØT/ؽ+ª[Þ¿Z”Õõ*ƒýœ JÐ,iÛªÔŒa[[3Påîª{ ªZäO¬ŸÐêÇüýT-iÝßâ‡yŒ–Ùöa½„@ZzøFPÕx¢múãªüj;ûð#¨ž÷±Ú$| T·ßŠÐǾ zv ðQÒ³Õ+οodË‚âÌ[þ«R¬ øëį=BŸAño¿åª(Pœ»=Î9 ‚ã'zÖø€û™¬‡9PÚBн¯õkz{§™Ž øý¸§›©2(Ö{®µ[%Ñ·ŸqþA¹š<õÛ@I6ôÔ&c PbÑQ-WºŠÝ–«‡Ï‚âà=‚ÒŽ<´ÎÁ $xã¬åõ§ ØÛ0Èþ”øŽÕg] År#»¡ÕûAñMØuf5(öH?úŽóô¼¬ÑPZ“÷> a(®”üV6êÅoO}ü…ù»^Ésëh‹e¹: J\'7ý2ÕÅiÛ¤ÂÜôÿ=²®ï5(¶†ÈrýÅ‘•õ·H ø‰õËÛc 8©T×p=(Ndt¥«úâׇûyä0žã÷´Ow1Þ£ˆ×_œAq™~."d?;t>üŠ}Jû›üÇvÜþgºAi{ô…oPòÛØž<ŠÌGçz$°?‰÷íûAq±.+!ö-(þH ˜²ºƒâó†ñû#ø:Œ<\>Yð ¿œ‡Á0Sþý¼\˜ÅMv¦bÀ,¨Î‘hû Ìì¢CòÕÀÌÏþøÀÔ[¦´µ``Âí‘ç¿PßñGÇG=öþˆP3êÂtöù§!ܯÊ&7Žã7‡tùhkñ¯!Ô‰ž­Y¶/y¿àì:IÔµù='hò¨óòuâ4üµ€™eÚW®q­Õù®ªÀÌU85]síÞùgì\À|ÀIž™bGú†à=ÌTÁ¡ Ô‡O­üzBnÿÓ…0šÂ‡ù9†&(8¡Ž’Ùx¼˜ߘv-¡^Í­;a袊VgŠ]ç³O[õP繩qfc}¥—E¹÷áz|nA¼ž}Ô`Œueì°¯{‰ùϬ•Ä÷ÅéùJìk´¯an1Ì-Ϩ ŽVìizaˆu¯ýþd/ 6’ÛŽõ¢ÞÖåUðµDüø÷},x“Nœ¤_ÅÆ&ÿ=ÉxïŸN,¨Ý™ÅJ0=0óó7gŶb…ø|wúPlؼŸÂP|wÇsxˆ ŠWȬ††x9â¼bAd•(›-޽8°Æ‹ƒœ;”‚bþ)Ðíè/gñpq1(¶¼<¹ŒûòThJ‡Añ¦·ÏßëuOŸæ’W"¬5±d€âã›—3I¸Ïl| [C•6Ès<Å'cåóûøA±ê¹üVíWˆ«UKïW=Åg+Õ‘*v]Í_D»çŠç7¬Ï/TAïú?½~GÆ- ¦#>V ^–9 ŠeÇ¡jöŰö‘q>(=bûU Š b»% yAqØfÎ=qíU剱ºS 8*lçóñzâÍFØŠ7cDÍ0¯Š_sƒb;Ç'šï0(Eg® ´Çþi|ï§{`¾NÛkŒAñÑcÞ÷;¼0ŸÙÆõ£‘hÕÉ•ïÐFš“E¯(Pí>v ˜¾ÿýÝp¦¯«ÔËx_ƒ7Zܽe Ì€&mMú~œO8Jºœ ÌKÝÙ¦ƒˆþ:êöD0½¿s¦WÇæ5 §yÙ×luè)œ'v IÓë蛈CÞ‹“J/+Ðvµy,eÓÃAN¿+ ˜A">O«3ðÂÒã|;Œóð{ùâ0]ÍkbÏaù±ú."0ÏE‘Ö "^x&åûö!Îùf_=÷€é" Àöý,îÓ=#ýê(ZmÉ j·€yÁÒ»Àv0Ï¿J«^~‹ù—Ÿ'ÿË+~R1˜~½_¿¡?C»Ì,γå9(©cwãrWpý{hUŽ,úSš0Œ3Ckþet÷yn”kCœò “fåŸG[Çÿ»¢˜>‚3y*÷÷±â*ÌûâB¦^öË׉r˜Ççsó*ÝïÆNõÃõ÷¡î©ˆË~‘2ùq¬v{·KŽù¤•Ñž ]°|ã‚ûÖñŒ|æÕ¢îsyŠ@1ÿ÷w…N…¼É³è÷* ¨pð˜×k…ôIúΧ HÎîo2ŠXȯé8{ ì[º'úã+[RúêJg€<÷kñôÅ) °í>ë\™ Q‹Ü:™@ÙÉ­ÃP]Äs‹„äo…UiÞ˜8î7ìÿä…iÂØ\ Ï?µŠJÂó»žë¤lòòrÈ‘*žg¼[ä×Ûü'‚pä­G¢ýŽùwÓÖå¿êšð?”òlÉÙ7pßö²ˆÉc@Ù±ïÜ_ýÕ@ž6Q*¸Å¿aÞ7z€²FÃhµ!W¬tT×a}lâFvEdÚìoI)¿ÛdæyXëFËÌ[ûâbÚ€Âέùh?o¾òýÎ%UíòòßÁñ™6 h³¾È6ÊŠo_‰ÅY lü{ñ¢À ¬º|rúF Pä]4þxûÛ¹ÆòA뿼ÕM¼W€²Ëa%¾÷mWü´à®îêxò1P–½/”:(“‚x-´I ¼¯õ¤zñ4(ë]Šþð}'(ÛõžÄîe£0ÎÇŸy@Ù%¶ïðÂEPö:CmKóå›kvn°ne‘“ò§ùë@Ùz1ŠKé({Ô¹®€2½æ˜èõ4Ó¤ûÅÏò6bßÉw+ lÊ~¹ž#”-΄ȣ>SÖù´q£~<(Ë‹òŸò‰ý |{AYMOïÁæ P6.·¡ì˜Ç|>=pý8 Ê{¿Ú—‡óZ¢Ò7l lÎòÚÖ ”}tùöi ì¶VA®¥”ý£a´D”oUëŸÃúžEè6®Ç¼¬ïsÆá9檚U!% ¬|cÏôÑRìO£ùîU l¶‹ß”PÊÇŸ%°®ås.Ùl.é˜ïzª¹€(a÷=yëñJàõîC»¶›¯Ë”½·èDËFbBr6Ö¢ÿ©àžõTPVɬÛÇîŽù¶È[€²ÉÃ'çÖcNoÕ:üqë¹\3vw’2F™KÀ¸xNô꽌 §O¿“Æ}¶õ¥rÀ¸÷ø­Ê³­ÀxPÜðýêÔônãäÔÙ‹.ÖÏXpÓóÙ#¨C¾~IÕFŠSE…w0’ïܺhöIǤlÌFÿwNwªñ#:¾u„!†û‡:ˆáéÀÈZи~' Ïe_)ÐÆíûZ„š1nÑ…’lÿümã·Å<…¬­.Åxn©‡^_C?ß%h£ÀHãº3*õáŸUÉ+D]š*Ù¢ÁÿÏÁ&žÔ“wÔ=¾ŒóÂþœ­t¬⇶ î¾Û̱Æ%ÏÝü$Q‚yz—÷ âøùN¿¨ï wfF<Æ}b³&XG…ˆ¨¬>úý¹«bƒ7î›YAžÁ¸çP|0 õzšPè–ZìC)JrüúûYô\Ô×È>¿wíÚ9Æè7ýgžÅŸM8Ü,m†zú®¤|7K8žwÞú{¢ „½mÌ+³ö–J†30²×3ì“<\óïÏte¹PÉá q¬ }/O:˃|ÌO9©Ï<…e-ÃELÖë¾rQúùíé@ÿ1f'ÏÒâq›Ÿ™m@ŽŒ[M‹e Ÿ»%ë×D9³ÿÈã’"ôŸÄ§¶ë"PTE­äëGœ¿oaù. ÈÇ Ï ÞËòQ‚½QâÓ“ón_iùدÙG¼@N·ùÚô» È:çö0ϨžÒdk Û={ú)m‹ÕÞÖZùòÃË)_Tìó.èdz` 3§žA{¿Ì0ñÉêÂŒAB C¹•Þ;`}gž̇b=‰ù ;~ù°ÉùøY Ÿw?’ºFÈA&’·“€\S3°ƒÈ^i)z+ ¸®'¾©— ä“Jµ¼~CÎs)oòõSÕõwv9kuèǽ»|3zå.ϧJÒ¹Ê`˜Ù„xêÍûê—¨oKËšh`~öΗ­ßùþÇÅCÊȵþ}M"ò`~C'^ä­Á‘ROp4(dÖè +Ô]ÐGÞéúÃæAòî…kÚ.“@8^*/Ÿ3 „hÓp½Yä“|›IW Ÿ ¶Ôl‚­aÔ†T䵪9Oî·!/?ø6pjÝ&PýË&1uçÁnr­‘ òÔ(e§èr ˆ»¯v“ÉÕŸ·Ÿ›WôÁLž÷¼›46½Õç,‚\K)˜ØA¾ì âXäØ ØŽüXˆyñ– ÌÛW8‡<7°@°½z ê«Uì"rÛ€¹~>Q_U˜<»z±r#¿Ø+ ˜ÜuU7æÉ[»7ïm80ùÌ®ðíE¾³ÏE–ß Ìm•Ãv‘Ïp úòO<&×ÏwC÷‘çðÚÿæ’³&ûç0+ Ì5sM–$¼Ï?.ﺈº–—íïo´™0:ͦDÔ,˜«Oz&ë&«E°[» 0×úŽ>^¦à¸Ï-rK0ù½¬û6uc±ô÷¹ó•( ZÜ‹q6­yn Œß¾üs¯6¢]³mwk0~§´¸ öj}oáT`,ñú4Œ<À|»o]IëÄøÕÍuOÑ_×Z"0þ&þ¹`¿ ópåtýŒe™¤ödìÇß„âÍ4 ôû‚]õÜ~³üæûÚVÞ\paëú|ÕqëS`²”xÖZ"/]3ÌѾ„|w­ãI3mOôwõÌ…€KX§NëãZm¯Œç¨r«pÞ8Þ=ù(û±ù£€¹¹ÊÈç«0fÇ_ ìÏÒÎÿ:Hœnþmã@b¹Óð .þÜ´¦ˆCq¯íZøáUmwa1¶´¬^ß|ˆç‡¸ÂÄYæ|ˆ4KÂèÄów€$¸!Ø(‘mÊŽ‚Ù qQî 9• <¸ùõêø|Oë ` †ç=»¦ ˆqÔ·­²@|ã;2øˆ®Φ&9±]#ÎÁN ˆV£í]X¹4e}ˆ’}Ec@LK¿uL9ˆ á¤.Œ'{ýÜ_‹X>¼”â=)™¿ìã@|rˆç•·ú)–´Ägƒ {}+_v—^û ÄÊòCÆ& æ*þà«çbÙ'±ì5d &élZóïÿ¥Ï¿X\bA¬ÖË7Y@¬ùö!ð sŠŸŠ^þˆû>O?ûN÷ôá:±a/ßz ^¸]üTâ=«ÿè^úëÄΧ2»ßf±in )ˆ]ub—/ªq ÐFg×a Vq¬é, ±yqÃå¯@¼ý#›h¸ˆKí“·y?îüû»¬E@p+liAÉž¹’„RÁ™¨Ât äé¬9¾Bú™ùD% $†[´%'!ƒÈþ §—¤Êd€ÐÆÞ'xó Jž ø¶K! ϹázZßTó-y ¤û‰ã¨ëóïöÉ< „Û|=?&wbü3ß\ÏBäßÉb'Ä;?I3Á[@(¬žúŽ6˜véd êò”U7•žâþhÆfK[ <Ÿxw® ™ ÊÜ" ±zmVBMû—ÄEÌ¿ìŽwø7Ä©ŽO[ä\áEƒÃÓ_.XOT¥Ãä>ôï8Êj¸>¹¶íÈGÜßþÕ“Žø^¸KœxX Ž]ÿ‡gÆ.¶Ž}ˆoÓ¿åÇá‰ë©6qÄé*™mýe©@x¥kê Šûd}{Îãó#Ï-Lç$ö¯¨T)©íBw›?ö§Tâ5ÿm ”sPâ&0Þ›þ{y߀PÿŽ]kŒ „еÄŠÄ—>|òB˜]@y7ân®YÏú•ÏÀ¬ý÷{w`¶0Æî €Y_Zøë00ŸœpW×ÙÌ:ݯòEL`>ç-r¸ ÌÖ¼/$Q§>ï˜V‰C½Y5UÇ›…º·öòùÏ©À¬Üñù¤†®k*¬9+ÌÇÂ~ ôóÙå€1ÍWÀ,X~™Óq㬶ØwÓ­ö2{œ&0«ý`»?îïçªÛò˜¥·YGŽ >-sN~爺³’|·/ò_žífÂ9ÊÀ|´y º2÷o‹kËÕE[&øºB˜å¡ÛÇ#0^¾Ê¿DÔÝE’]PÏ?þ³Sð(â÷ãÕeÔ¯U¯ÔêDaÞ™¾Ý?€YâèývuqÝ-·ã«ŠpßLÎU\/;Õb;qŸnám5Cü~Q³>¯ ûsì t3öç±Øà)`3??i‚ë_ý‰Ü˘ÿ‰M9اZíü)ÊγêîÆz£kÇPß0ŸÊ72îàùäKvDÄóêí)¿Šß¡åö>Œ}h©í}@AÝ.«ûS (çðeÒNŠƒßÍúJ2P·i~G}{ÔYÜ;)(¶¦·„Ç$â`×f¥”[ZÂüë€bÅ×/w»ϽwU+ÿ‰ú6ØÉpÊ(¿ÞÜ”Œ¹ß.9 DÏR•|%’÷–¼Z…4Õêc¸_Lú°²ã;Ô›¼ÛÞ…E·zÃw WXÔĸ¡Ë§›÷¢=v›b:|Q Ÿût PøÝÆö~9 Îå–£WŸe÷lï‘'ù¨?Ûm¢äeë‚ Ýuä¹7´3“@¾RÃÿÈóì¼»‹1Žº1r€2‹üÓÉpëõ¾Ó@÷Hã;¢Œçd¶²™¿Š€†Ëê¦m@Ùâi”Ј矉F£N槤¼Rʦ†-¹wqß*­¹iÔ±[nKHÂzžìÖ< ”=¿vþ\uõrìM‘¨c54®| Á~ÐâŸˆŠŒxdWÄPŽÕ~vØÜ‚zx7·Ã¹µ@¡noY@ MžŸ%¯¡ß€½?Ô¶å’Ä®Lvä1Gÿýþ‰ùÕNÖË‚xÿIäJ2ÐZ•Ù®â‡ü-ã¼ÿ/@°8ø;šy•‘o-ef5ò§Ú°•†—xnõEä?“+ÞNiÈc:Bmý´Ç×ík‚5ünæ ä{>³Ÿà}>ú™¦»÷!Ú€ïÌŽáTK¼Gò#£”þóµï0îÏí7o"ÿ9ô\_ŠqÌøÞŽ}7ÁÑJBBqÈ5ó÷¢“ÎD|X%ŽøqŽSÙ5a ùÒ_»›0_+ä­¦2óC8}llš€ûO.Dùóa¾/:s7Á®0:2e ìoõ–4ù÷óÕG)Vt ˜ûK¼Ü<ë’¾S\bâº-¥ûpÔà„×Ãç@`f}¼‚¼×Þ”#;b ù”×ò8Ö{è™Û1ÄÁ“N¤Sij·PsûrûÛgôC[8—xó7•j½Ž¼‘çgx¼BÈãñuØÏâÇ® ø|pþÁ—r<ÇOV÷#Nª®û$> LÙÿ¾¿œ©’üâ´u90UcÏé߯{.7gÞ L/ï Ñ:J¯{Q L"‹àmaÄA¿ÈÛøwçîÞÿ ÷ÏìæËBÜ?Œ‚Úwhn¯¹êBåQÆ ®Ü>㤤ê;¢,yÏDƒºÓü¶Qq<¿{8çle¨Û®}(q@Ô–VÉ}–uÙR‰}BXOßèÙ¬cµð¯z¬‹Oå×Ìwì4tõ½û³cüþ¢Ÿß*•0ŽHû‡·Kc .6ÛD­%ƒºÔ®[ûúF‹È©Ÿêf©\¿69ºÍPÏšÔ¦Ü=­Aýd¦i'¨kß§¾óu­é‰g‚ÑnOZs>ëhûœµ:Ô‹ü-ö/p™õ?Kúh%gÓ~ H‹.ÔO™¥fLÓÛHË-\Ö ýb‰.dN¯ag3 o,kݰËÈ»uÃ.Yé§ZÛ Çf ¯wázÜýÈk—EhöÆxÞúÓ3Ã@z+ÿÚìi.Æuæ:Ñï•«%:€ô;}4@ç;†·ç˜Î©kŠƒ¦^¤Ïkv¯jÖR¿×þuÁ@z±:”Žþ5ºˆTyûIªPü »œá9òÈgí2•ÞäÕI_#ÍðüV£=#Š@–>æòãA ·>ìðøR‚u¶GÎ~«²)+MϱŽRߦ¨©1ªÿV<êŠrm ß”{XWÓë1ö1 Í·Âò uÎý:ŠyúùŸ®çÒÑøŸWßúêÁ1ÔÝŠŒ=£Ø‡eÆÝœ'ò@V‹1ŽÈ¹¤/Vu‘#Ø¿–VÆœ©Û¤î_ñÒÔË’éP }ë»1r{ÈÂnKv§W£ŸA•Z3K sç¬OÄs5eSŠ=᪉ú3f‚“úØw…z)vóÀHßê`&Œ;1Žë>lFòÉ’_QÀxhc*q+áqŠö×>ã¶Óhç|0’6)Hy#•uë[UÔƒw$lK<%Ñï~•öœß8>·¡ø“0®Ë“*é#ýûý«¯#­¨yªíÆeÐ|’ Œ[ÊMÚñæèwz¤&uàÍü†5ÂÀ¸úUoK ãžïê#¿wc~{K“~M#ŠõõåV`Df}¬ÓƵjå÷;ZqE¢âüH0Æ{¿µˆŽyÆœ<»#u-1öòúKºÆ‘‡ú4nëÊ—qŒóànïé»8¾›«X‹::²´“!ÇŒ°»¿d#ÞMœYŒý‰(TìÃü"×½¹~ý&0"Î[îÝ„q;É«okáxCQ–ÆA¬CFøÝö·èoƒÁùõ˜'¹½Gâ802²ñxîj°B£0nèy|“·Æ¼zõoÜØ†y4Ü ë ëM7*E}›¶^¥ƒšˆ¥P.§ ¨‰:ù,…±ÚnªÌUŽDPãýôáVŽ6PWvtµêŸûòoBq^¥Ã¨]ލ䲳]Ê@õÚÈnÔ›A«Ãþ¦áú%ÅMâ ¦5vpî+ ¶EžÊïj²k o55ÉBÝùÜ_ Þr=¾ª¨Q…o”$€úŒÕ^¾{¨FÞ«Yúy:¾mëüP]½|ª&€z7srû# ÆÖŸ0p¿ ÔȬ„FK{ vÚÝÞúe+P;ÆHVÍ™@­ÙœÓð'¨]éÕt1NèÏÔMËÏ@mÍFÒKâ PE ¾RÑê«›2µ×{òRe€Úä0È+Á82$[ñW@½äÄú6ý'§jêìYyΉpj©É`îG\Ï/M/­éÇ:øäÕÜ€šc±tçæñøJïà! ÞxvÚ¯n-PßiTNÇÚúa6ñ *Æ_8ápv ¨CC¿¢¬€šÅC|·y PÇ’ŽWÛ]ÂxÞðãÖ}#uJóå}?7ÿ·¨ÿ}Žó`Ì_·üTšì›¨WÜØŸV“@Õ|—Ü›V‹ë¢¿]ŸqÕ|yÓßKê8f.Ë.z•)n~m÷  úøرþ0P»$·óîãJWˆªöxõKšÜ‰ø„c+Êð÷Gb@5“ Kæ® íö,oê‘‘ÁæX|Ý´ÃbÎRêÿù}7TžóeÂÎh‰dtÇp>Ä?8¨§,Þ/E¥Õ¹«Á9Ö¨gšõëNõð³úJ º>_÷ûvÕOýÌ«|?-v=f‹çò㮟1j{Jó¦x¬gÜŽ­ ûÊø‘ûèP÷Šùëc^‡ó¦4±/Ú’57°>á!UÎ. Ý~5ì*öó¤x˜jPý~KLŠà¾ÃuWW€º¿Ð‘´6¨†%ÕO°^¦T?]åPb×ÖÞÂ}ž*9›ÚnU·_€4¿¨¶ÍV¥ôðuùq•ù@5¸mõШ–:E5f_ÐÏ)Q =Ô­¦ÿý]V桚U:!ŽÀ´ñxq»åΟõ7û‚:ì¸ö§Õ`[ïA[‡ºØåE† ‘*îÏzxOÖ˜G³“ru£ñʯ._pÿ!9–sÀ´oÚá­r˜fÞ]||È—ŽR*È8¦©‡ühE^vrN6óÄü+®Õ¨«-ü®È{ ŽÔûÛÄÑ€ñ…8oF^g"˜|Rýgk ŸÀsw¸~ùÍ£í|H?àLMqE#. .Ðô\ê'Öì¦q|½Q§žÊéêÛ“‹3|ˆ#}FJß@gݤé)I|?q<äxt¯PÇÙÏ9 SŒ,øAMâWÊ/|߯øoþ&Ô_å¬oÇ­*Zb5™Æ{Å1b'u¨Ö›‚+ßàûýXSšgúo´qXáªú¦‘ÆÞ@mà5ê. 'ÿ~|¿ß§¼Ýñ ¨'†º/Ø•.•ý’P½ ðéÜkÄÃù)¬ï€êϺyNÙ¨wdÍz†ðÞÝüUáâÃôý{·0¯K]]Õ&@­˜®»b…~“?rJ"n;[¼Ñ Te¡Óñ4~ ºè«Ý“ Tµù¥ëŒã@UÒêèscÅû¹î­®O@=ûlðXá^ ú®»N3“Ƽ8Ý3 ¿5|û-9Ä3_'ËŠÆm@Me~xúñ¸êK±ηmt­ËIBÜÔÜYj‰÷ïµÄ³ýs¸:ùÝÝ ûòüÖU_T”Ø@û”ñ/@ñnªn½x(º®¼•Á9@±£u­ [”þ£vÒ!pÿðë;ÿžÎÈÃì¯ý ×~¾D ¬Þ©z€ uÚƒ¥÷{^Ž3òeãÓ­¶À¼£Tön˜IîY‰¦ˆW©§ÏyS€™ðáÔÝ]-ÀÌ»8Pº1¸¿cxê0CµöN4x3:.Òa«!0oïx´]Ì ï+ÁÏ3®ˆò=q.~bý…Ù `Æ\|ß¾ÙÇÛu½|q|»¾ìæGe`¦´Î]a ®»”Sÿ;± çù½:³óZÅV•¬}À Z~ú4ù¸ ï4êòÞ«¢â×пtØIÕ§˜Ÿy«Â ÄÕØ‘C¡7ö…?ã„0#tý²«Q''>º»l30¯Ç=ý¼Ûóå˜K9†q’„füÞ$㹊Ýsrî˜Wšagûjô›‘pCe ˜7G¾Å–ça§“uï#«ãN·ãúÄý•ûŸÐêWê ~E'Á~&¯^U¼¤ˆ~™6å¯×£­OžñD|MÈË{¦ÆÌ»‘ ýÿüÜ׉ @¼®Ñ)à_ÂüNZ“QõîÒÎ]<†}²³Å°ûKx{üc2Àîß¿÷@{Æ6Ž:  #u':@A–¦ã @Üìrú3€ê¶MI¶ö(ÈC]6ÔX¬:1»ÿÊ-áË©eém83+"Xó(Ÿø _Ä>ñ¬@C—k=ê;ÐS¶pݰ4ŠDÊž寲*å®xZZßPÄ þ}GuÐèù¾¿-ò€¬·×šs¬É÷rAcAÿöÄzEÐø“:´mht—œúøNÏ?Þ£óq €S´î¸—+KÈ#Z!+79ߊ4ŠËŠ'”GÄ©n‡Óé¢À7U©ák_ÐϤ'ñk×ЛK´N»¯Fy2¦¾‚Æß¾ìöÝk@£Oar‡Œ h4ÜŽÕ¼À:_@tÁý þö9Õ¸ïö°|éVÐrÚAhGÿ£ü6{Öäi¤l‹•%ðmØÙû>möUî÷_±Ë~8ï||íH h|–Ûý¨`×}Éú#ÐøÕ—(¼-4~žŸQ¹S€óÁÄ=Íøüù§s‘—x^,(Äç‡þ[å5õ @–Í_mªâîLïÌ, ºFšGFŸ»¬§){2Ù8ç÷Ÿ“â##/¬“6Fþ£Š[Ê­j¢±~Ý«·@Ýn”)™‡¼R®Tµ~;ònõ0âW¿ š.Võ[ÙÕ8Q÷±çc Z8îp£"¿{þ¢4ö<ò›§ãGµÓvJúÕÝ+³T yæ)¡kìȧ!•s§Þ! L º'8!~uòWE¾¾wÔeìïOÄ}cÌCÓIÜ2y®ËHÆJ ÊÞ˜zq†ü1ùÌñJäW_?³Ð¯¦«ˆ¬.*auòî>\?Ø"½ÿ,ò´­g±N£xNµzC ,ÏÞo¿TÞÑø6¥îånøù¡ðY‡¯È E/Šº)âsË­ŽûS&æcUùÚäÔK îéj\oQ T©Ê~gvA|î–8ð âsôVÌðŠ>ìÏÉGpì >÷bVg¥ñ¹Í´*Ù˜|¯³N¥ÿý½OÆ£R„*0ª•v_O Æ“þ%&;0ž y³ù2ŽçŠÐlQÿƒíܱ Ô³›{fcN¢^]ǽyõfÁ9GÔw÷„(‡£YòwÝðmô»½a8 ç)çPÇUm˜Ï°ðF™*MvÁ ×ïßòZ ŒÚÑ;N§ÿ}þåÜß¿ëÿ£œÿÝf=Œ—NxÀó-upޭϬ˜_'Gá·t`¯¬ó#t£æútånÌ«pÛÈì!ô{ÖñqÄ0JËFúǜп^goÚ¬ã¯kɯsÀÈ®d|ûUŒ|÷Wi¨oËoÍý±ŒÖû\XÆK<ÿ~WV„ Ú²íþ7Q/goÂÛ…~Žîι¸ýîñS¼„ý0;/lqÊ>ɪ•£²=/ò'æG«‘}ûëTr®¼lŒyšô¿¾‹º¾*%`öÖÉÏh±žÁù×ÂJ»¢°É·»°o‹ßBý}?票œ4Öõ2ØÇó¬‘ù} qbÒ½P¸!`iÌþÜ¥ü ÙÐ×ÐùþO@ÇV&ŽßæjíÆõ÷š\åOÔ‚w'œ"éD™šO!Ÿ‚ÛcK±Ù~œý»Öóúa«mä>Ð27[tù@o¨bÅžQ€â•Ý­\1&ßWóø¢U»—´U #Ëúü â•ç·ˆ*Ýf€ª7ÍÞugÒï°Ýy pm‹oÆM|ns* ñ$ˆ :ÿàõ9“/‰—0/ëÑÐ €ü YwÉ{˜?_„Äo€ŠuÞŒ6€Ñχ­|Êbª¶Q°žþ/°¾«u%ZW_4UÇl.žÎX] áòèÔÏTÿS³é«nE¶d…5ÔU¸ø>”ÈÞ0÷ÈÓŠ9<ö s°¼,: ü*÷ Ç€õé³Áì8N Ùã„ytJíá)h½³2áU‹}YNTŒK 2M>€qÚD©Ïþ Ÿkª÷ž+6Ä®<( W|~dBýu4häG^ùyà0htq]®}…þjÍ4´|ÛFíúûEÐxæ¦àKh·•>/úeÖ1ó½7@#¢!§Wx3æ.ÂØªó­êiØ4ˆÏ'¯oìq?Gs´ æãcd÷KÀëÝv@0R4½¿] _ ‘M'ÿ´‚F φ¨Ç0î!›~É ÑTü"Èàh$¬>øó)‰9DUÄ ò†«‚FåÁo‡Bñù—U–ç8ˆÏßœf¯/§AãS_ÔEÂ7ìdzÖÉ‹ˆO bŸ¼{7\ÚÁ§ vuþ¿’ñþŽ •—£U1èþYÄ…V9J¾5âG§y§FZ1âÊ m{<0Jì Ÿ­/ÁûºÝDaë`´÷ø”9à¹}¿UmÆs®±]ˆÏ·nda #!)ké'âJ §¿ö* Ä„Ì3Àx)»¾Q ñíOÏu¦Û«"c”Îþì|äÕÕ÷ƒ;,n dݳq—;’Œ&‹'›YÁmñ¥@ îÝ … ‹¶øBq(,EJ)îVØ"Å)Z(úþ—ûý%lHiè<Ï3ï~>íáff®œ{ÎïȵÙw¹Lìœß­}ÝÎÎ÷ 3ù,ßnÍ}ê¦Ê©^œÓ½õ—ÿtúÿø‡ç¯â”ÿàÍþp’ßÄ.ºv½cþéôû‡–¬=ýf§½W7x9¹b_àô±oïü²ƒ_{•¬ZäüîÚ?uí¹ëù&vqSàõ_bbwÎ9¢ã€Ëœúlõ¿írþ¾å¶cZœqýñiïiþg¾óÏ¿ø›ƒs×VœwÝ9|¸þî¿ßÑçЋj;WàÙÍ{ïô×sotêÙø£eÇ:vàz÷ÙGŸéàÝ}O¾:ÿ@{æú¿n°ƒƒó—?òÏö98?ó©š}npðóìÕ¿*|wž‡ÿþØö&vÿ¨¿-:cW{ò¥G×05¯M[uýÀ ¦æ_5{&w½ÔñÛ Où`‡,cV»á’­_j45ÏÏ)½çÎkMÍò­>Þ»þcÖ¹ °q«S“SyÌÕ‡ÜnjÂ[í¼ú¯ö65¾ßœ¾Ãñ޾Ž.^¸´äT§ž _ð¾Cw?ÿ®Ð"c6{ðè/?[ßÔôîõï»Ö]fjì1ÿÑ9_™šÃïˆ7<4f­=¿^ÿŸ'™š_î²³?mÞÞæèËꇼúÚ’ËLÍF?y¯·ëMÍm§¿ýáµûššöº™­2˘Qç~0úìlÇ¿k*¹l×VSóyÍ%îv6fÒ‡…ÏžmjÞýÍ+³n=ј­v¿÷þ··túóBeÝ…Ž>|t]®ÿKÇ_óí»øþ?65ÿžóÅÜgœÁU½Õ÷LÍ §º ü“vFtæv~S³ÿÝËO~Í)¾aÖÙ‹»¾Œ{}Ïß8ã_zí!Ok^[pwý¿qü¾Økÿ8¼ÒÔìvjñ5/lojî|"¶pÁ§Ÿ'7›×:þâšû¾5Ùßç³vy«òSýúsWüãê1ŽŸúžçþþdª¿¬ÏŠÝ6ÓÁ­i«ŒÝøJSóÌM®e—»œñ¬Ø_îàrµïÁIs?| V=ÝÁÍŠ_ßüþa£ÿuéj'W\dLþéïí¹ÄÁéì]¹ê¸¿:ߟÿËUßßÔ˜©·ßpåôÇ}fáy:ó3vÇkn)¬vüÎw;§]éЛ7+\îàÊ›¿½ü/Ó^0æ¤+ïûÉ%ÆTÍûsÝ[Îïªvž·ø®€1S>}ñÖ¿eÌ.ÉÛ xzw<¸»~]c’cóöüÃÆì}î'_W:þmõ;Ÿ~uÉþÆ„¿Ú|Ü*3þÅ£6š³Äñë÷¹wÓÅÎ÷ò–ß´Å…w9´êáÚÆõœñüþÀëkœø#qÞ9G;vÁÿôãß·–ó÷¼NÊzÞ©ÿ¸÷Ÿñ³3®96w›iÏ÷¿ò‰ó½†3Z^l_î”›1þÇŽwPu™Û‰S²¿ÌúÄñ¿«Ž¼å€®3Æ}ñ¶[V8ã­<ñ…§×žjÌvûÝúûûG°ý™?ÆøÔi¯þ½’IŽ?>yÝï<Õ±»Êß|¡Ã‰‡ ¾>Àu÷¯Œ9àÎÝ[ {^zñÜíãÎ÷÷ÏÙðÒ‡¦;õåtÄQNü³ù¡cš7­vâ­y£CMüD÷#;ĶqâÃóë~»Ôùû¨Ð&묈_—Mzó7Nü·Í”n¸ÙÄÏ{q×eå%&¾×oÿ8º­‰6ó€Ë¢N|¹÷Á·gRëÄw-‡pêá&~þ_¯|ù«µœøñÜßOzîLçïù[>™ãÔ·ã¾]•<Áiïï§ŸòèÉN8vÛØ³þàÄsgo{ó¨|'®ÜýšÍ0ωO/ßô‘ÍV1ñ9 ®x¤óŸwßÕ¿~éy'ž:±à²l'¾üxƒërâÉ“–¯øûú&~ê Gíõ’Sï©O=r§ËÄý|›§:ñèñÕû<Ñ÷„3Ž9r‡Ûé÷1SØïªqz »/aâ‡<´÷¶UN\ø¡ù½É‰GOªÙø™-œx¸âš6)s>ÿgÞ­±¸Ç>[›sõë&¾ÿïn\cÅ~˜£WmÛ?ú±‰PuÉäœú:õ¾ìqú½Öã[lèŒç„.›kœ¸÷è»ß}®Ñ‰Ëg̘ùdzMüâÞ1c?؉çï<Ä÷Îy&¾ó9«.Ê;̉§/œrÅwšx÷G|~ÎÑÎ8k9ì¡"¿ô…+†œxôõ÷æ$ùâ‰ûOãZ¿ºìŠ_9òøfûkîcw7æÃ£ŸßâMÇOzÙL~y5Gß>?#þÛ¹Žüþö–w®œ{²1gGä6Úñ¿ÖÛe‹£·4®MϾ붱¥ŽÿuÊÔs÷~И&}ñø#7óÞ~¿lhøÊ˜C>?á‚)»:~×-kž½ÎŽ_—wú_“‡×jïŸxÇzg³Gd±c¼~m\±ß›_Ó±î4ÏõrÏiŽý8;ò¹{CS}ƒÙà Ÿ25«mð˯–f›š8gbü—¦fíeOg¿þ„©É‹U¾^þ´©)>ñ¥ ®ÜıžïtìGã«…îtÆÝW¶GùDÇnnùÂ}﹯15'¯sPMV“ó÷·/̾4hjÞúç¨Ð;í­óÑ×ÿvü¾õüå68åq‹l9f‚©½áñ[líØ÷Ø-ÿ\þÁEŽ=}úÜ¿ìàØ¥K/ï+ð=ëØßUÖ™<:éŒg»›wúwͯn{…©9äs.ûÚ±Ë[ÞØó×·×45 ÿÆ——Žwì×ÛŸ°åÿßÞí/Ç9ü8øÉdU÷^&>í›D¬‰OÚªé⿬aâc7ÞìØèTÏi›öuÌÁ· 7tóŒwóóáõ§<1ñâ á+ÎtÊløÑ·•šøÖ_|´öž&>5~ýë‡:8šûÙ7Ù°ÃÄnxvâ¶8õ¾Q«zÎigÙ‚y3V°÷]WNÙÏÄ·[÷첂 &¾ýê'}ùîçÎïýïÿ»L|¬™ÙÿÚÚħ?¿Óë…Îç럵gå Çÿúxöú5]èôkâ 5.7ñêbåm2ñ’+ö¼ÿ\çûãÝ7ßÁ½I3sç]câÛNýÍÍ{:ãÙ`‡+OþÛÃ&>ãÖ¼çotð7Û·8üðÍëšøÄ£³ú¶Ý×éßïsæüÃgâþ·ÿ1ñ·šxaý×…[_àÔsݽãοÜ÷>¯ÞýÊx§¿|äU˜xÞ…·½ûv·‰ùÄuòj¾¯qÖÁ[ÏáÓûmõÁ\/ßb“1G]é´sä-÷ß?ÍÄËN¹ã¢Š&§ßÝç}£‰>êo ݯ™ØW/¿Åá_~éV.Ç/~/rÃ3¿å”O[âwp;øâ[ÛíÐ`Ü‹VèÓVÆ}ÁýyÙ7”÷ÕÝ07wUãþÕý±Ûöj3îÓEûN»Ö¸Oyý²Õ_›dÜg»9ïrã6{mXîøùîà×oü7ã.kßTä|ÿ†œë?µÇùÞZÙù«jÜ Wן”ëÔ÷uh³øŽÆ]|說ßògãn;yô›æw²x½q·\í´3çËíooÜ›äùoÏ4îÓÎ~îìuŽ6î ×=ÿ…#{‡üã|ï÷÷~yî}v¯5®ÏG]pÆQÛ÷‰œ4½›ŒûäC#×ìp¥q°Ú£“7»ß¸{?»Êì|¸qïê~eƒÕ×7î3ϹáÓøÅÆ}Ì”íû&ldÜ¿íõïvùãœQ[p»Óî^{Tÿéüfã^·tsr¾ó»Ž’K#o÷Œ·,9g–qÇZç|pèžÆ}hhÚƒï÷A·nÖzÖ'ƽï¥/¼¸qï~Á/w®ºÈ¸¬¹èÉÀÞÎïï:ù¶‰k:ßk—Ýà6î³vúâÑ3—÷ááW~»ýu,+0îÕ ^,jšîðwõÓ®¯ü»q›[ò¹Ûÿ.οío÷a}þ—çüÜì÷]eÌKÿRº™cW*Lî÷ëBcžl™ÿÄî?¹{í«9ö籋}´¾S~è¬ç/ÙØ˜s®/¸fó[Œ¹æÞ3ïíØ­.ªÛºb‚opõ.:þýç½rðÎçWNßâÙ¿ó’ë›'y´1§6·™ãÄéÏüõ믓¿7æñÕNúÕŸn3æØ·(ÛÆ±w~tX}ÂQ¼Gºî™ôÏOŒyuÒ…Ï|y¶qmôô§nš¿EŽ»)q­1ŸýiÕ£÷:ÒñûöÙôÃ3¿÷èi‹›÷»Ð˜_ï¼×ñ—lbÌY{Ÿøúø÷ÿ4Ëù·ÖùÆÜõçOÖz÷ cfûòØ ÙÁÿòQwNkpÆ{áç:~Øiûþ®å”.cnoxoÝ?óÉžó6qìêWsç'’oóFéŸ.zàkc~¹þÝçsüÖ½þi¯tü³§Ç]}ë‹í\¹{ÌUŽýyc­mnnrüÄû._öÆŸŒ¹ÜU´ÚCÎßoºæñ+²»}Í£ïÝÿ»k‹jÖ|Õé×Ý:ù_uת±Ã)Nýϸ«§îáØÑß/_¿ÕÄö¹oÙQ›ìebs^¼ê“óÆ˜Øž{ýéÕm:œ¿?{Ýõk:ñäñ¿=±“Ïí»Õ5GSjb‡ß5éì?.7±Ê§/>¤óm yçn´š'7Þ}ûq §˜Øwü3w§§Lì„·ö;Ɖwç.÷?sí6&¶ûºGß»ÄÄ¢om’wä[&ÖyTÓ)lêЩ›ïsÏ›u@]×*›˜XÍù§nè´³ÿ1»/¸v}ó¯rþ_Ÿ9ÙÄ ÎÛæÄRö^uÝ®þ»‰ÙôÎÝÓ5±y—ŒÙè‘+L¬k“Ð]×™XûÛ³¯ 9ñiKï¸ò'ôó/¶×¿÷¿&6ûÌOÿúv¡‰…?¿ôŽUßhç€%›|ɆNÿ¯ªžò~Ô©ÿ³Õ¶Ø§z_Oé>%ÛÄ~ùÙùfç&§ž)Ï4w8ã*®xàÇÎÇöžskÇæÓLlÚ‡o|Qã´»_Ùèßïô´‰Þåí·5îoî‡uÂÿYGì7ËÁ—ɇ'ߟûªqÏ\ý¶qwfìýÏý_ø‡q9#Þîøuîšõ¹ýç÷Z‡åŸ{Ýׯ½ý„-ÆçŸlÜëOüèªÍÞ2îÚ?ž4zÞÎÆYëë¯âàãÄ}nÛãÊ·;›?ÔgÍ6îòëoô^ô ãú`Ê•½ Ï×{÷ÔÞ•í|^üÔ’æ;ŒëºK_Ê>z'§žqÙá‹R㺬<{ë÷g×âSþî¹ÖÁ.»GîÆõÉÕO¬÷šÓï¾àE7­qðgÎmu;?îàïuϾµÊ–Æ]¹Éw=ôP?ÿÜÏ­öϧÞ3îЫÇ7wwøcV‹­åôûcÕºG9ý{uɲ¿Ì4®Ç/\sö–.ãÞf‡#Ž{x®q½P¾ËùîéΞxDßkÙŸ6(o“eÜ-NyÊyÆ=~½óþ`ÎìoÇõÕKËÞ¸ÐáWNtò¹¿wðtrݜՎwìÊŽ—¯þúAŸY3kÿݾüâÝæ,5®Ón_£i\¡c?ÎÊ}áÅC«ïò“·]ݱGîᄄemo_ýxMVôÏ™&×ñÆíùÅ|ìð§ìàœ¥ËþÖݲ´;ß¡Gfÿj¢ÃÿÜîçk^wEù¢}ïxÐwyCà^g~§_µÊ¬m’Æ]úæoϸÐù]ë—Ÿµü3àô÷ôõ'5]ó¯åÆ÷«y»í³ºcgZþíÎüì¿Ý§œ{¯3Þ#wÞdã[{§©G>t‰SNîô駇;¿ëÙfÚ±Û½lÜ'üï+:®wø{Øæÿè[׸çýî—Á±W×Ol65g3ãÞ|VrÑW8õœxø‹ë;ödÚÔÍo\Ò=ÐßòýsÿÒàØ³^Øròr‡õ'^Xz‹#‡ó·}ìo|fÜS®¼n÷ß8í†WÝm­ãœùÞóÙW”;önÚe[üaSÇ.=¿ãÂú{«W'6ýúSçûï?¿éU?Çx?j›‹ÕÎ@{s¹ÿWcvæ³yÊ1«žåôçËßöMtø1yêã9ß%ÊΜcÜ'l|Aç9Ž=4»þüÝzt㤞Ï71n_mwx÷^ã®>þøš,_wôŠ‹æMì­_Œš¶ödûú«÷¹¤}ʬŠÆÑÿ×oPsÖW&¾ê»ç”œ: ß×ôÎ6GÌ2±ÛŽÙ©õƒ‹M즹‡…>9ÆÄ×Þgì왎?3ê¾oýÜ©çýU×ìxñ7&öò»]÷_äàìÅ«TüÜW&öªK½G9þÎ3œquÇ£&öü¥çþùÓe&veÙö§Mï3±Þ[²õkKœz[uË3±›8ìŒWÿlCïjcÚ«L싃¼óË‹LìþñÍ~ãûÛ•×wªSÏ¢¾`Ö &öú¢'öúÃôþþÆWÿÅe/û¼¼ü꺰ƒ§¯M»õÔËšØÓ±ç§ÿõ2{òâýÿqÙq&öεïºàHÏúx¾ï¡Z§ÏûÀ’±î˜qM1Û<õ˜cŸ?;¿Üµ«qÝ}VS™ï~ãÚþÖy»_±žq}vî_½´«q¯]·õ-å·8¸uê' N/qäó´-Ö?óÃþ¾~\ÅË9»׃kî^¿û.ÆõèŽcvÞáãºb±ùtÓ-êz`“ƒ_5®Ú»—öeܸ.?p—œå[WÍÑí8ʉOxã±­7ºÞ¸^9Ëï^q½zí‚1³ܺ÷ÀÚ§:Ægž\—?}Ùñ¿^Ýçj|~˜3 ÷;~ÃÓQßg/ý˸þ\}ùçÛóÏ“7­ØïLãúÛ!7ïzåkƵ¶;=Õ¸nùÃk%åû÷Ø ÞiÛ}£_W:Ÿß¸G-ݲò™½Œ{ëϧ'ÿÖ¸‹^=dÏBÇÿ½í¹/Ž¿ÄgÜ“ÆN9þü­ôº`é­Sû¼Ýx³è:ïqôÿÚÖwúõyöÑÛ>àØ‰Ò¦Q Ÿ;Ò¸7ÝãñKó¿tÓµ·hÓõŒ»é“µ{.pðeƒ_ÙÍ·†Ãß×ç÷|z›3Ž_û«ûÿåàoþÅeÍrøÚsë³ ?ÚwYå_¸ÔÁÑè¯[ÆŒ3®ßúô‚ñg8ý¿ éè;*~ßýܸßûy˜p…ÿ\‡ï{šnÛtìwùöjü°¥Ç;ã§eñ×ívúÝ2ñ¥Öç{»wÞÝzg{³î´ç8¸9nëÎ%9¸?þõ¿Osðñ˜ wû÷ÑN¼²½kÑ>»êûüé}*vþܸþuÖ¬; >ù.î…Î<ð®ÇùÛú‹?¹Þéß뇭ZvßšÆõ÷ò;:v8Þ¸>:ø¼Ü-§:xúqͤóöe`¯†y¯wâŽ_‡Nuü¾^|Ë.=—àÁ5KW<`â‡ý¢kÌGšøá¯­wÁ +î‡zæÚÝ8í¨3>}øGÿN|îÎâ#ïøÝ¾cŠÿ”gâs{ö=ý·/˜¸o–ÿÌ'Ž[tËië]åÄ{{¶žxî-˜øis^ýËöO˜øÁoùzóG&Þú€÷Å3›M|ÞòùÏÿåc‡~´lÏ„o_´Õßw:ȉ£ÍÍû_¶s—‰Ÿ{nϨ­Î3ñÀÄ»ö}ó~'î»*¶gÌÁÓ£^Þpâ‚Q&~ɨ{OÞßÄzåÙ}»]Nÿ=UþSœzرnyí1ßá[|ñøÈíóœzóî+ |âÄ{½üôý—íôÿ½MvßÓ‰sÏ{£áíÓ71ñk›Oþä(g<_zäEY•N/Xõ»ÞÄ›¶}õðœð@}Go6êÆøæÎïŸÓÄ»Îô~}Ë#ÿ¶º!zð8?ó'v»‘‰ï¾Ù˜C|1'.~jŒ¹Ç±+ǾþjÑ,'íÿJÁfšø1Wí×·é£óþÎü žZ·ÒxB|8s׋gâ×Ï=~ãþ ö»#ýGãéh?÷¸²õŒgÊ«ÚyøÀï^ýàæ;w÷çÿ>¦ñá^ãÙª«tƒ³Öqê¹¹`QÓKÆó› öH^µ›ó»];Ž<~¼ñ¬~ê3»øØ„‚žìóŒ§f³/¿¸Ô©ßûÉ×ñh³ñͺð£«BŽÿV¸~íÖ¿1žì÷½çGŸ®ìÙwÝg–:q¸ÌÙ3úŒg×möÛ÷cÇ>ïùÕ¿ÍþÀxÓW/wp̳÷ÞU«Ÿü7ã)kØóý—îþß<óÛ.\§cšñÌ[åúÿ½‡ñÌ-ÍÊûtOã)~áŠ÷v;Ó¸—m:½Ôñßf÷û7¿\Íx¢Õ—ntÎã~á´C_­ûÜxNÙ±ò¯[ä ÔWxÌ¿Ïîrê+Þâ©êÃøn{5ç¹ÚºÆ¸ìì)_ëðñ¬7î¯qêÙ³f-j0ž‚­j¾¸ûã>÷÷Üy{Øxö™tUùLw®;û¿îü>yΟ7YwË~^qŸå‚Áí|W÷?áöÓpϵ›oµ·¦8¸ýÂKý·j\×^î9ªÒñ‹Ö^kÝYæìß­qá97^æ|ïªQ37pUÇŽ­ë+9ÿ ãúGaÁýá{\þÇÖKvüÙ/Ÿ}·ÅÑû?L·Õñï:8ôäf«}ÔãøÛo·£3N÷±ÿ|eÿÏ»õPKðÉ™yÆõØ[Á].qêíØÝºê)Æôϵ:ñõWÍÎùÍwqï²g]´ÌÁÅ5?;xÑ>Ž÷ü¬ð/÷-·Ý}ç¿øÞÛ›~Xtæ“Nüùæ#§-~Èxâý®ü›tÞåwxèÀ÷F_Q¼ÛºŽ}^miî‡Û¬?<ßÖ¿qÏ“ü•qÝEâÌO;ôÆÍ§úvÙϱO[;í0'N8á•_tÛîÜùűw9ó¶fÝ…Ës;Üöô{^9 Ÿ«~ÄšãŸÿÞyŠÝ\«ÿrÛò[±ûv8Õñƒ®^åÙ¿¿3±Ützñ‹ŽTøÈÔý²¾wß×½®ò {iÓëÖøàDÇoZåÔ}®ÞÓÄ®;$º×¢Wìg©úû¯xõó?^wͧg9ñÞ»«ŒÝÈñßÞøç¾ìø¾oðäË;;ñò/¶^þèûŽ?wEýßÑmâÛžzÚ8§ý¿œ½æMÓ/4±çqpqü½×Dùî<Å–Ozká­NûÜæ¶Èñ+ï¿ú7wOºÜÄ®*¾ô÷«~>Àâ½nØnÛ*Ÿ¾æïmëüî7'Ôu”~íěǴvmÞ1ð½­ÊîÍqâÙ7¶ŸüÖîGÏ·…/Ìïžÿ°Ó¿={ä1G:tÍ'Ϻ%Ëñë.Ë®]Ãñ“ãŸr鎿ýç¶içùWsâä†ãžšæŒ÷ò¦‹K>Ý_·ò$ÏéG¬ñ½óäÝö¥Óê¶¿` {iîSGoÝ&·_ÿëÕŒ·"´øÅï!—™[ïîøžÿ™[>êg¼ûmøÊÚN7ÞOúKÓƒ§ïâ¯_Ù~×"ã=ë‚›÷ëú»ñöþíÿºÏ‚Ã[/éè2ÞäŽÅÓ+_7žÓ?¹óØ+7žçj'<è:Áx oìîàôg¿Ú½ù†Æû«¶ãκ©Çx¯}ÿÔž1Qã½æ‰7z¦T~·ÿ×Þ1öš7Ï3Þw² w»¯×xOüû¿od¼Í篻߯ÖÀ«Ï7|Àµäã½h•{~#`<·ßþê#ÏÿÅx/~üàšn¨ïò­Wy»é,ç{k¦?V0<ßâ£n?sEÆ{Î…=}ï¼i¼Çj¼Õç|¾æ¸ô÷¼Û#¾úþyÊ[ãº>5 ÏñÊG>ÚvãÙzëßEO÷g[ìÛ÷«³çÞ»¯]méã^ZÑ9qÃg»••ûyËuÃÖïyºìüc üÑž9Gäç¼[™37Üàiãé[ëßSG×%íëÿyé Æ½¼ÚwÇ•£Œû_wUŸü›ïÄ›ýýÛG]óÉãZzÎQ—o{ó@½³Ç<µÝïôɵ÷o·ýè=ƵIÎ[¾¹Þï­rΖïxK¿[ïfÿuêQ¿ÿ^þy’‹XåÁû¾Ë×ÍÛOï­ÞÉx.ŒÎêç5Þ¬à/,¼ÑxNÝô²¯ïão­Øg¹ë÷ãÞ±G‚»õ”·½býß:ÙD?Ë«.Þà@}þ¹³\ç/pp©û±wž¨øÞ.7ædmáÄ“;_üÌ?¯úðõÇ7rûæ—µ”GÝÞ~ÜÃë ÔS´vö-£rðïéKvœ=ÇÄ N+^ZåÄϵ‡¯¿wWkëþÓ…Zsøþçž›}vûê&úåuü®lÜÀß<þàÒ ë”ëß:¶+ËÁ£²Õsr(øû’Ç®Ør¿U¾[oãǦî´aÛø^â’ßnwXÍwÿ¾ÑáUÛ½Ò×{N Îwøºíš›¬{›Ó¯ä&Ooþdÿ÷j__ñ®Ðß/ÑûÿxÒ|ô¼=å·k4Þl<_ù·ÿæÑÆ{ÕF-o»Àxîÿãmû¾w纽…±ww›®Ý?~õ;qÍ€\¹ë^u`~½ÓÎølÁª»ÈíÛ×þ}Ï N}Ç/Ù÷ùÏŒ÷ÈžSzo œÚYTâàË´‹×<3>|ýÓ^Øï¬Å6ÞCŸ;ç˜_Ïèß¾[ܹÁዾ·÷SùGÿªÅxüØ)ÿÐïÚM?ßï¬éû}·Þ¥\×ýïåŸwã}>ùbcÿwþîþŹ—øÜÆë]½íØã72îg?ñí}þ`<ןöJÁ¢Uû¿g¾Ñ§Ý¾¯ïÖbýùfôMÆãóÌþsޙƳūW—ló\3Þ_ÿ%÷´ yò~qæSÞ¶>Ïëg¿3æË‰¿[ïž—fÇ·àÓ*ÿ¾vyN¥ñn63PynþÀ÷Vß({æVï8¿÷-8óýïõ‡þ§Qã}éÁÍ~hñÖÏÝäÔÍ>5Þ÷kæ\ú cw7¼þÔšÏÀ—¹+ÞÊÿÑõGgouÈM{ßl¢íï6®ùùû&êÿ:`Ùwñ,µW®ÜljWÿp£¿¼»Çð¸Pp}ù:—l8Pοê¹Uß0P¾ÿÈ%'œñœ‰·™³ó®Þg þµO©Ytà¹&>冫ÿí®tóýGó1öôá]…¿Znâ {e±âþ¬× f>1ïŸuÅ­××ôë¯ñÍZ±Nx宿v›/Ûƒã/5µ{ܽíüO=¦ö†WÿîÞï’ïÊKó§ß`În¦6ÿ¹“oy={Øú<‰ã&ÿãÀËÊ;-ïËX—ðnÛ[·ãžï®c#«ÍüËÀßר<¡iÍõŒ÷ð?ŸüÒ9ÃÖÿ?•Oî®ãŽ»ÞÁ›½üÄÔ/_uâµÛîßkýŒw··ßØâÍû¿Wu÷ËñO|îÇëka㕾Þ÷ç™Û¶}ÀdãäyÅf¿üÙÆS8îòó.l<'ŶÙÛ›ç¡{ËC9ƳÆÓ\´v[ºùþãùxÁ•½¿ùðör›ûò÷‹ŒgÿsO½oÆ6z÷À7y£]ä½_nõ›‹jMd¿¯›Î;r”‰tÏ}áëÛ×þÙÆýèæ‹:î5ñmcùËÞîÏŸ˜øŒ·OŸ´ÑQ&^ýÉn/^û½ñÅÿ4êøyG_Z¾þ@üßèÔÿ´ÿ±&>z¯ü#b‘ÜÛõ×οïÄïß/O?»äÖy¦véø»ŸËw|Ӣϳðg÷³‰£¯¼kS—sðŸo4G®}േÞ]x¥©Ë»kë¿ñYºùþãÇõî1[¾ý›OÆ3vßÛ³VÁÔMyÀôNˆ«Ë¿9îþ£í¯ñNì½jµµN5îwïújï­ÆóhÛ9S*¾7¯ñŸë¸ý?¾jõ?ÐsËSï?¶JÄxöX°ûñ>œn¾Ü8;_¼áùÙèÝAÿüí53†Í#[Oä”?¾õÎæ[šFÏy§mñ·OMÃGKNÌ߸8r¹©]ÒòåS›¤›¿#7Î+Üc³Ýê/—^tÞ}ËŽÚüÇ׳æÓùÏ¿uŸqÝš¨yòRã¹æâi[¾~ïÏßÿ¯>ß!ë¨õWïÛ«<Ÿ3!ÇÔn³ÍDÿÏþÜíÿ׿©nýç7¿çõãø–ß¼Wó£ëi¸íÍOž°‹ o¾ôêµ:/4á>í;ùŽKöþÇv|íŽ]¦”õ—£ç=sÿ¨WrMôùº…õ×ì•nþŽÜ8÷»ñ±5&ÝÖ_]6¯}ôåëüèz\WLÚ`µwLÝ®¶ÿã¾ýŒïê.þÀõ£ýûÝ®çý¯ßøÁ}êØñ˜Ý´ï 3^ž{Þütów䯹ü¦œ½Þ{á?®Ç{Òü¶Ý?|иܷwŒÞhñøÈÄ↟žêÌÄ-³Žxd ¾8áñçúLí>·M<¤¦ûçnÿ¿6Ou5}Ò~ê_ÿãzÂo>ÙpùesMx»Úê–¯k‚·{ÿôüoüìýWßzú#›쿈mþFò¸Ç¯6±]ÿÜûì;§›¿#7NóhÇœ{&üÇõ¸^ž~åÔÝ®4ÞÞCw}«ûKã7{õž7îç÷Ë=£¦uËØhÙ}íÛÿò=ô˜ñrÃ;ûÒÍß§û˾z.p‹ÊYY«¯êüÇ*Y«g­ãÐÕæíº§C6pþ·âÏEÎÇ}emç+{ÍÞsÇýœÿÞ”ïúæ»öó5ó Þn×J%÷J%Ï@ɵÒ7]+}Óµò7}ß,hÎÍøì›’{¥Ò@uÑà ’÷[¥ÐJŸ…¾Õž¯11ðY~kC|Pi Ÿ¡`Û·jYQê¯%¿±>ÿ[¿[Qêÿ¬ÐWøì›Ò@Ï|‘oý.Ïå‹ * |Óˆ|ë3_]àÛ¥€ë[­û‘^ç·»× -ƒJãsû¿ÝŸo¥Rà[\*ˆò•j‰7›×ñæoñ³ ®ÎµRáo6ž»Ri¥j¿5ïùÞÚoóÚ) ÌCsaûJ¼þ?ó~÷JŸ5*õóºÀS²BB²²¾¤kÌÝcö~û¡«J“ü ýrÏÙûï»ëûËU7ÌÊ µü‘tY–ý÷Sÿÿé‡Þþ ýÿóô?fño¸òÿ§ÿ3hÍ7t`^—nj6³í‰Žt½éæïˆ'kåñ .ÿìíoeÛézÓÍßÏÚ+gpùgo´mOt¤ëM7Gl<£VÏàòÏÞ~¶mOt¤ëM7Gl<ƒpü¿ëf¬mOt¤ëM7Gl<ƒpü‡âúHá¿oë±qp}馃qü‡âúHá¿™hëLGªÞtówÄæ){åñüP\)ü7“m=ƒéHÕ›nþŽØ< ²?×G ÿÍTÚDGªÞtówÄæi}ø¡¸>Røo¦Óî :Rõ¦›¿#6O?Ñ>Œ˜É¡ÝAt¤êM7Glž~¢}1;’K»ƒèHÕ›nþŽØ<ýDû0bv$vÑ‘ª7Ýü±yú‰öaÄìH>í¢#Uoºù;bóôíÈّÚDGªÞtówÄæ)þ ¢?ôwÿqû…´;ˆŽT½éæïˆÍÓO´#fGŠhw©zÓÍß›§ŸhFÌŽÓî :Rõ¦›¿#6O?Ñ>Œ˜)¡ÝAt¤êM7Glž~¢}1;RJ»ƒèHÕ›nþŽØ<ýDû0bv¤ŒvÑ‘ª7Ýü±yú‰öaÄìH9í¢#Uoºù;bóôíÈّ ÚDGªÞtówÄæé'Ú‡³#•´;ˆŽT½éæïˆÍÓO´#fGªhw©zÓÍß›§Ÿh†ûž©¦ž^»bpyØï¢ÿñ¸Õ3RõþÇýç*ý¡í}çï5ÔÓk7P [þúócP=#Uï­o¸ñ ‡ó#M¿Óž†öf§.ÿ@úñÿÈßÿÐú~h;?õóïÃùŸšž¡iïøÔåIÆÿÓ~ÿCë©v†­wœÿÙ©kÚ;9u9Ãèpxø_£®ž¡iïôÔåL¥&+=Ô= íÍM]ÎT:Âxúƒ©{Ú[˜ºœ©4]øë†ö–¦.g*MÞz†¡½•©Ë™JÓ…·Þah¯I]ÎTêîIõC{½©Ë™JÓ…·µÃÐ^êr¦Òtámí0´7œºœ©4]x[7 í¤.g*MÞÖ C{©Ë™JÓ…·¾ahokêr¦Òtá­oÚÛ™ºœ©4]xë†ö&S—3•¦ oýÃÐÞy©Ë™JÓ…·ahï.©Ë™JÓ…·ahï©Ë™JÓ…·ÁahïüÔåL¥éÂÛà0´wÿÔåL¥éÂÛÐ0´wAêr¦ÒtámhÚ{hêr¦ÒtámxÚÛ“ºœ©4]x†öºœ©4]x[? í=>u9Siºð¶~Ú{rêr¦ÒtámÃ0´·7u9Siºð¶aÚÛ—ºœ©4]xÛ8 í=3u9Siºð¶qÚ{vêr¦ÒtámdÚ»$u9Siºð6b†¦½¦.g*MÞFz†¦½¿O]ÎTš.¼,šö^žºœ±4+=4: í]šºœ©4]x†ö^›ºœ©4]x†öÞ˜ºœ©4]x†öÞšºœ±4+=46 í]–ºœ©4jÒCcÃÐÞ»R—3•¦ ocÃÐÞ{S—3•¦ ocÃÐÞûS—3–f¥‡Æ‡¡½§.g*MÞÆ‡¡½§.g*õ¤‡Æ‡¡½O§.g*MÞÆ‡¡½Ï§.g,ÍJM C{—§.g*MÞ&†¡½¯¤.g*MÞ&†¡½¯§.g*/KM C{ßN]ÎXš•Ú4 í}/u9Siºð¶iÚûQêr¦ÒtámÓ0´÷ÓÔåL¥éÂÛ¦ahï©ËK³ÒC›‡¡ ¿§œ©4]xÛ< ]¸zêr¦Òtámó0táÚ©Ë™JÓ…·ÍÃÐ…ë§.g,ÍJm†.•ºœ©4]xÛ2 ]¸Yêr¦ÒtámË0táV©Ë™JÓ…·-ÃÐ…£S—3–f¥‡¶Cf§.g*MÞ¶CŽO]ÎTš.¼m†.œœºœ©4]xÛ: ]8=u9ciVzhÛ0tanêr¦ÒtámÛ0taaêr¦ÒtámÛ0taiêr¦ÒtámÛ0taeêrÆÒ¬ôÐöaèB“ºœ©4]xÛ> ]èM]ÎTš.¼m†.ô§.g*MÞ¶C†S—3–f¥‡v CFR—3•¦ o;†¡ ©Ë™JÓ…·ÃÐ…­©Ë™JÓ…·ÃÐ…©ËK³ÒC;‡¡ “©ËÿËèáï­øÿµÎÿëKÞvCÎK]þ_Fæé?¬/]xÛ9 ]¸Kêr¦Òtámç0tá©ËK³ÒC»†¡ ç§.g(~þú?“š.³â?Ògg»†¡ ÷O]Î8Úciºìb×0tá‚Ô匣Ë,M—]ì†.<4u9Óè¬,Êi¢³†¡ {R—3ŽKÓ…»³†¡ N]Î8ÚciºpwÖ0táñ©ËG—Yš6܆.<9u9Óhwå4ÑîaèÂÞÔ匣ÆÒtán÷0ta_êrÆÑKÓ…»ÝÃÐ…g¦.g]fiÚpwºðìÔåL£É,Êi¢ÉaèÂ%©ËG³-MîªýÁtá…©ËG¥éÂ]µ?˜.ü}êrÆÑ¤¥iÃÝäÐtáå©ËG{ Yi¢=CÓ…KS—3Ž.f§‰.š.¼6u9ãè2¨I]64]xcêrÆÑåÐdšèò¡éÂ[S—3Î΢ܓªöÓ…ËR—3Žf[š.ÜUûƒé»R—3ŽKÓ…»j0]xoêrÆÑ¤¥iÃÝäÐtáý©ËG{ Yi¢=CÓ…§.g]ÍN]24]øxêrÆÑeP“&ºlhºðéÔ匣ˡÉ4ÑåCӅϧ.g“E¹'=Tí¦ —§.gͶ4]¸«öÓ…¯¤.g5–¦ wÕþ`ºðõÔ匣IKÓ†»É¡é·S—3Žö@³ÒD{†¦ ßK]Î8ºš&ºdhºð£Ô匣ˠ&MtÙÐtá§©ËG—C“i¢Ë‡¦ ¿H]Î4:7‹rOz¨ÚL}O9ãh¶¥éÂ]µ?˜.Z=u9㨱4]¸«öÓEk§.gMZš6ÜMM­Ÿºœq´š•&Ú34]4*u9ãèhvšè’¡é¢ÍR—3Ž.ƒš4ÑeCÓE[¥.g]M¦‰.š.ºœiÔ^k—•6ÜUûƒé¢ìÔ匣Œ?]¸«öÓEãS—3ŽKç.KUûƒé¢É©ËG“–¦ w“CÓEÓS—3Žö@³ÒD{†¦‹rS—3Ž.f§‰.š.*L]Î8º jÒD— M•¦.g]M¦‰.š.ªL]Î4ºcåžôPµ?˜.2©ËG³-MîªýÁt‘7u9㨱4]¸«öÓEþÔ匣IKÓ†»É¡é¢pêrÆÑhVšhÏÐtQ$u9ãèhvšè’¡é¢DêrÆÑeP“&ºlhº¨5u9ãèrh2MtùÐtQgêr¦Ñ²(÷¤‡ªýÁtQ2u9ãh¶¥éÂ]µ?˜.š—ºœqÔXš.ÜUûƒé¢]R—3Ž&-Mî&‡¦‹öH]Î8ÚÍJíš.šŸºœqt 4;MtÉÐtÑþ©ËG—AMšè²¡é¢©ËG—C“i¢Ë‡¦‹M]Î4ºsåžôPµ?˜.êI]Î8šmiºpWí¦‹ŽN]Î8j,MîªýÁtÑñ©ËG“–¦ w“CÓE'§.gíf¥‰ö Mõ¦.g]ÍN]24]Ô—ºœqtÔ¤‰.š.:3u9ãèrh2MtùÐtÑÙ©Ë™Fm:+m¸«öÓEKR—3Žf[š.ÜUûƒé¢ S—3ŽKÓ…»j0]ôûÔ匣IKÓ†»É¡é¢ËS—3Žö@³ÒD{†¦‹–¦.g]ÍN]24]tmêrÆÑeP“&ºlhºèÆÔ匣ˡÉ4ÑåCÓE·¦.gÝ5‹rOz¨ÚL-K]Î8šmiºpWí¦‹îJ]Î8j,MîªýÁtѽ©ËG“–¦ w“CÓE÷§.gíf¥‰ö M=œºœqt 4;MtÉÐtÑã©ËG—AMšè²¡é¢§S—3Ž.‡&ÓD—M=Ÿºœit·,Ê=é¡j0]´M]Î8ºšL]>4]ôEêr¦Ñݳ(÷¤‡ªýÁtñ÷”3Žf[š.ÜUûƒéâÕS—3ŽKÓ…»j0]¼vêrÆÑ¤¥iÃÝäÐtñú©ËG{ Yi¢=CÓÅ£R—3Ž.f§‰.š.Þ,u9ãè2¨I]64]¼UêrÆÑåÐdšèò¡éâѩ˙FíõNYiÃ]µ?˜.ÎN]Î8ÊøÓ…»j0]<>u9㨱4]¸«öÓÅ“S—3Ž&-Mî&‡¦‹§§.gíf¥‰ö Mç¦.g]ÍN]24]\˜ºœqtÔ¤‰.š..M]Î8ºšL]>4]\™ºœitÏ,Ê=é¡j0]lR—3Žf[š.ÜUûƒéboêrÆQciºpWí¦‹ý©ËG“–¦ w“CÓÅáÔ匣=Ь4Ñž¡éâHêrÆÑ%Ðì4Ñ%CÓʼnÔ匣ˠ&MtÙÐtqkêrÆÑåÐdšèò¡éâÎÔåL£{eQîIUûƒéâdêrÆÑlKÓ…»j0]4íÛ*u9ãè{Ð¥i¢ï MûF§.gÝ7‹ò²ôPµ?˜öe§.geiºpWí¦}ãS—3Žf[š.ÜUûƒißäÔ匣¹–¦ ws‡¦}ÓS—3ŽhVš¨šöå¦.g@G¥‰F†¦}…©ËG“Ðì4Ñäд¯4u9ãè|hnšèü¡i_eêrÆÑ¨Iíšö™Ô匣½ÐHšhïдϛºœqt 4™&ºdhÚçO]Î8º:?Mtéд/œºœqt´'MtÙд/’ºœqôahošèÃCÓ¾DêrÆÑåÐ%i¢Ë‡¦}­©ËG߃.M}ohÚ×™ºœit¿,ÊËÒCÕþ`Ú—L]Î8:ÊÒtá®ÚLûæ¥.gͶ4]¸«öÓ¾]R—3ŽæZš6ÜÍšö푺œqÔ@³ÒDÍдo~êrÆÑtTšhdhÚ·êrÆÑ$4;M494í[ºœqt>47MtþдïÐÔ匣=P“&Ú34íûžr†ÑÃß[ñÿkŸ>Üíšöºœ±4™&ºdhÚw|êrÆÒùi¢K‡¦}'§.g,íI]64íëM]ÎXÚ›&úðд¯/u9MtÀž§«KÒD—MûÎL]ÎXº4Mô½¡ißÙ©ËK—¥‡ÚtÐwiß’ÔåL¥éÂÛýG Mû.L]ÎTš.¼Ý?{hÚ÷ûÔåL¥éÂÛýs‡¦}—§.g,ÍJ5CÓ¾¥©ËKG¥‰F†¦}צ.g,ÍNMMûnL]ÎXš›&:hÚwkêrÆR“&Ú34í[–ºœ±4’&Ú;4í»+u9ci2MtÉдïÞÔ匥óÓD—MûîO]ÎXÚ“&ºlhÚ÷pêrÆÒÞ4ч‡¦}§.g,]’&º|hÚ÷têrÆÒ¥i¢ï MûžO]ÎXº,=ô€¬¡ißòÔåL¥éÂÛF Mû^I]ÎTš.¼= {hÚ÷zêr¦Òtáí¹CÓ¾·S—3–f¥‰š¡iß{©ËKG¥‰F†¦}¥.g,ÍNMMû>M]ÎXš›&:hÚ÷EêrÆR“&Ú34==+uùGÒþýÆ?ñ÷ÿsÚ‰ü(:П÷»ïÒÞ¡éé«§.ÿH:ÐߟöûÛÎÏ×^òGÑ~ü¸ß}—.šž¾vêò¤ßåÛûý÷Õûßooþí|·ÝùCþn8úýß[:4=}ýÔåH¿ÛÿöýŸú½áùöãú=|{=)Ûî{?¯‡¯Ù ß ]þ>ú}õÿØv†ûÞ÷ýý‡~g8|ýþv{©oeú}ß¾¾‡õkèòýûÿ:¸ÿÃsÉOßµ #7žå´³|Pÿ‡þûÿúCÇó}øúcq÷ç×{ƒúÿí¯ü÷ÿíô»ã\ö“Æ÷cíÈõÿÀ¬•ûOyðßÿ·ÓïŒó'âú÷áéÏ×ÿQ+÷Ÿòà¿ÿo§#5žÁ8úß²æÀì•ÚQyðßÿ·ÓÁãÉÊZ}Õ¬¬U¿v 8ÿsþ;«(+k•9öï«­øû¦ü}Ô7Ÿ­žµŽC×ÌK4x»]+•Ü+•<%×Jßt­ôM×Êßô |³ 97wà³oJî•JuÖEƒƒJÞo•B+}úV{¾ÆÄÀgù­ ñA¥~†‚mߪeE©¿–üÆúüoýnE©ÿ³B_Qtà³oJ=óE¾õ»<—/6¨4ðMO ò­Ï|uo—®oµîKDzßþí^46´ * ŒÏíÿv_|¾•Joq© ÈT¨%Þüm^Ç›¿ÅÏ‚º:×Ju†¿=ÚxîJ¥•Z¨ýÖ¼ç7zk¿Ík§40Í…í+ñú[üÌøÝ+}Ö8¨ÔÏëOÉ ÉÊúÊþoÕ ³²ÁŸ¬m;_í»r³_ü=ÝZÿÿijjv~ï‚§Ö­Ú'Ýýøÿ455»üå×οßô—wW°â_ºûõÿéÊÔìšõÍ¿yº¹j¾£aÿµöçžô\˜ØFT>̬}Oëœüñéæïˆg§Q+ážÙñÕíoŒ¾uÌ­ýÙw¯‹*»hDÛ5]¥NmÛߘnþŽØxæý{%?ÂÌ=ì¿OÿÇâÜÙ5ߨ'³Ë7Ê™–G˜}2ÇÌ<Å÷±íVvZümøÝˆÄ=&úÀ7ú™nþŽØ<%'3Afç]¿ Mó?lž¼íßÈÿ®O}㘲qßè± úƒìã÷Ö»vDâ†ÿ)ÔÌZ`ý­]Vž›ÿñÃì“×?B¸ç²òQ_š;"ößÄ6ÿ¯æ¿~öyêö[}Úé#ëo5mõƒøojÎXÉŸÿÉíÇ/³~Lþ¬oüã½tdüÈHôÿÔú§ik÷ú¬>µûÃôÉŒ>áÇTØu :Dü4Ýí¿º>ó³ÏÓ¬+Ç;_lýòÈ­?,~òœ32þsSð~šâ'ÿ#ƒ{ñÎoêK7Glžš'ټͼwlœ=ë­÷W#çìiíRùuÖŸðÝ<2þIddâ°ÿ)Ô4aíøÜ¿Á;“˜ùƒÖŒùåÈÌS¬Áês‘]O1µ#äï7ŽLþ?…šÖÓlœ™¼Òâ^ì¼d¹gdòñÏl|ëNX;U?Rvo¿ÿ[y#ò¦+¹âYÆòÂuã™u8o²x[7Ûêud§‘™ÿhÛˆä5þ§PÓ´©õ³š~ÏzÝ¿ÐøLõ§#’—1ñû¬>Õ€{õ¯îÍÿ?µßÍ´WZ?«sëwµlòÃòÕËVüǾk=r±µ‹•ànp„ò{õ“þo­»·¾eãÌ®ë÷5ïüƒÆg\#³?ÈÄ.µúäŠ[½ŽÌ¾OÝãÿ–_Þfó?¦õk'Z÷ÿAy1Å¥ÿ9??³zìw}Ù+>øÏõ4ú›ÿ[qnkÏ7|17ÙõÔæ~žÈž|çï —µ3 -=iqmÿËÄíþ[SâþoûÎÊï-_y_bëŽÿ#ò}Z·3±v¼‹÷µè‹ï0OÖ>e×1¼“íß[V±üìè±ëuñ3X~ϵþ¸bâØ™ÆÕ¬ýÄâi”yë¶ë&&‘´í5/µrRò‚£ü#„§‰èJrdf]9¢q¯©},%ž˜î³m.±ò>*ã%ßì˲ã®%cž±zâcùã²reì²Óº&q7yæµÙ®WÿY_µûMKõJã4ò‚sFÛvæDm;QòuõØüB„ú‘“Ž˜'»ÎdZÙQy¢íñy‡ŽwÛîŸ1uÄ[Maûý¦÷ì¸#Ól'ÚvCÈG´hÈù7þ«‡Æ…ãnf½¥ó‹•â:SKÞ8ü¼mv`e¹è:‹~¬log-;nÏ?mÜj,_M9ógv·¿+Ç•ôØq5åØùIœj¿)¶zY;Á~/dqÈ4½nç%n÷m›*æyö8[ïìˆý¼þC‹cO¬Þï°qQhË·æÇ¨Ïî5MyöóʽÐÿ­l=nëWÏÊûjŒË櫌 ýKؼ¸IìlÛ gÄlžÐ¸ì~ÓðÐJycTr\hå»ÿó:;&aþÉ{l^Ëx7²ýÿÍò· ¾†K!rT¾RÌT±Äs¹¥e[¹+,ÿ‘×Bä5üc?‚‰ðýó]>øF#¯ð!f,ÿŠì>ÓÍ|vmûå_`ùâµùjS»Ü޳nkËÈ©v>¢Ô±ûLÉß-¿}ðµ„}}åÇÙþ/³õ¸ì>'“ ^ʧèËvœn+¿¦ܨß]÷ZÚ¶ü? U䃋l\hjúìxêXçŽ_ƒýDÜç OÈS+í„á_„ßEûVòËL™Í÷˜*Ú)"4 9È%ŽÌaÂTæ¯~¢ÕŸèÞöû‘,?óÃìÇX¹‰Ü`ç«ÀX¾uýÁÊí¬,ö£lf¿oÖ³zæ¶q³qƒÇ!â¥È–í:Š)·yã9ÈÖ?³…vÀ­O¹˜ß’‘wô!Riÿ^vß’)¤Ÿnä¤=/ÂŽÎ×TÎCO«ðk\ÔŒØñ¹˜WúB/cÖ¿4á:;ŽzúÙøúEÞ§„y¨Ùž¼¦Õs3þåi~àÇ4ô¥žùñG…ߥ¿Ì· ÜŽ4ÒBúÑ:a^ì~@Sθ]Ø=ƒ]ñc¯ÀÁzWÂïªÕoÆ‘žÍ”^¼måg:óÞ@?ÃÓíßK˜×Zò†ãì~cìþX“øÂ~Ï­ßL÷s‘‹Éð±y+»Ñþ> þ»ø¾yÓö;tºWÜþ¤íW~ÕÓ–Zðù¨±û‰Máý¶?“ñò)ÈÏ4ôº¼«Wœi×SMÞ~¶,ýŒØü¸iŸsÑûvkŸM;ú_ñg;þR»ÎTó½ ì¾Ïú?&„œÕ¢÷…ÈI9ò3þæÀ§à´‹qM…Ÿaô;n0ß®­oœô{Góá÷$pe*ý‹í¾{“‡>†Àcùaä¡M9Š/±ß Ó~Àú­¦aªíWóm¶½üœ ~WN·ûLx0õ×¶“àG< åÚï‡ð7„ӥس0ó©vó™÷VìM+ø­ùÑï*°'eŠcÁ«àQö{u«Øþâ–b'À·IÈÓ$ö#¹‘Ÿ™· xïÃ.ä¢Oü‰±Œ¿üg—û¥ýÞüµIÌ{6|+` ¿ û ]ÌŸ‹}RAð=‚?¶~ñÑ¿0öºéY+ß9àB |ŸÉ¸Æƒ§3èçdü´ÉôLJ^†±÷‘5,_§óy!~MðLÛ^Ю‹›Ü#™§ñ–­¬#•!'å´[Jýeè™Oô%û{ï.¶ßùø ùàÁ8ú? y^¸ÐŸmÑK?zäÅNå1¿®Á5üZãiàï¹àêDñ »°rœK¿Ê˜¿h¶ý½¿æ*Ë—€]‡11ô4¤~1/Æ›@þ¦1ŽBü‚‰ðg89ƒþŒAN&ðûÈ<ð»±Ü/OEvÿ °î|Øöw¸Ôbó ¦…8¥ÿ£¹(aÜ¥Ö?5uØÇñ·ü¦2ä¯ }ž å‚{ÙôÇÕhû—- ùvÛ<»É¥=ƒ½ÚŽù¨AÞb¬‹JÎ&b—ÆC·CÎò°åò+Ú¨;â’}ENâ7ÚöC½È?zäóqâDô»”¸Uú2‰þå‚‹ÛS˜¿Zì¼ ¾5áï¿<ñã5ôà·¶Ÿ3‘òí-øëÅàZ)zPÞ•#'µ¬óûä§ ÙØõ\ø3=ÈÇ_‡¼ÖçÇ3¯µ´ç&ÞÉ/*ð‡ÆƒïUøõuØÁ\èd>GY¸—Ï<#¿aðÁ`O þLyÁΙ:pÑ¿ùìSrZC½yŒ2z•ƒ\M .‘ᦞø¿ßòs:óPˆüÖ>hÛ©ÃNæ3îfâºfÙÉ rX^ãÿùG!oàƒa\ô¯XvUþó6–ñ¹˜—)ô¿9÷WNCÜØ‹,~WŠý b¦ƒgðKÆ‚/ãèg¹ð ûTßc¨ßo°s‰ñ÷hÇ}®Ó<Ús›&½¯–¿%½Asñc4o“Á‡0ú!?ÄßKУbø­ásHrI?ãcˆ/»2ä->Owrøýx~7Ž~³¯ßOh οQŠŸçCè_¸ØLÞ§™¼D ó$=*‚EÌ[8¶Žq{ÑÓbð¹ þŒgžÆ!wÛ oò·Ç0/ñ‡¼¯âD7r5Šy+|Š—à›ü½±Œwä0ýžÂïЃž»àCˆv"qô‰x*t’í§yŽcG À»2ðhvx<ú;‰öƯc±h€¼¨ç6üEÆ[ Ÿ}äü´“Ë<4Û}r¦¹Þö»Œïç)oFÜNþ¬ß¾Õ¡O•èq8TÆ YünÆëÂßÞ ½Wüç…oã±»UØ—­‘ë*ðN~ötô@z´=õ«½±ÒÏ­WnǸÀ=øÀº¦‰O¼Í|Ðû:üòÄ([o!óQ f cÑÿ èéXü¶qô»†öCèKœ›‚ÿø±‹>âˆ)èS¿Až®ü*b^K…gÄU~于¸Ëà'ç`7s±×ãÀÙÉ­eŸÈk쀾բ‡¹äk°› oåèMí­ÈüO½càß¶´— _r•_YjùSÃ8 ~\¿2Nþ;„]ñ#o>p^ùÁiðµ„ù†=‹½Ï<–>ѯzòVQøg¾r™ï\~`Ü!âî\üðü¬p³ 9+Óoö½˜ q“u–:é“øÉ¼Žƒ_Á½±È¹AN&‚“ücú˜‹|xioxæoÃò÷àÿXåAѧ1Èq>õýàS ¸Xƒ^ì^QOù¦8|Q¤ŒqGU†þŽ¡þ ”ð3Ì÷ë°OØ™2ùIØ—zè ÆÛ̺yósäCo3¯eøcåÊCÀ:öÿ{ÁwÅÓô y…Ñ´³…üYêŽð÷}ÈÛ4øé!ß–Íï*‘—|Ρ<\­¼r\„<¨×`' þ¥Ÿþ%4?äKƒà®¾ÆÑåAŠð“sÑSù›“˜ÍÛê·åÔ÷qõjö÷yàD%ý ËÊÍ$Žm©°õ´0Ÿ´S‚V2î ô3@¶–xÃ?1Qß“Ÿ>LÇ2¿ÕàÃ8ɳâ:äw†ð;=<­Áo¬U^}’MV;Ê[³NTŽ6€ó¾äÈÏzI½çÁ1+ç³»ÙÏgð»é5ý“ÞL†¯š·ñàˆ¿!Ê>º(ý.P¾}ã…i ßZwhÝ—üÑ,ì5ã¯`Þ”®Á„ñÃýÈu€ö ÁW™åÓæy*㟫hwšò]èM¹Ïãw^ø5¾¸i?€ýžOÅMc~¥·9â#8Ä6´cˆ×ý²?ÄE!ì­Ö‹ä¹”7šΖ /Â×1ÌÓDäo ã'»R‡œE~e—¯¼œöÕ‘ïŠda¿ào+ë.š/ƒ½ª7]à‘ëüAóNøñç‹—pP~Û4æg´ü6ü©lô­úê[íï¦ãº±ãáKùÃ0벯SÀ± ´§ünžüìfù0Z§Ažd›ø¾òêõäg•Ó:ëTì‚ð¥=ØNùqø:ùO½Ìc%zПJðgÜàp˜x<‚ÿ-ûÞ ¶‚‡.ùC䱺À¥zòWAìnyªbÖK*±ÿÊ·M"Íf|Uا­WøRÏøfß»˜Ç àˆi²ã®}ØÊMó!¼ŽÛD~;ý-·´O¨<4Œ#¿š™ç8^ŸRÞ=ÍgZgËÎáÿÍÿ€_4–ï‡ÐçFäšý‰¦ÜCþÄŽ+RMœŽ·‘gjƒÏôßÃúŸyô¨GN‚àIygÅZÿ˜Œ_¡üÐX楚ϵÞYÇþ]ëì3âå0šÿˆòAè×tì°Ö­FÁ—<æ­œù¨…5èô*€¾·<Ìú¸×€>‡î±óÓRnù!*‡ Gÿ:öh|ÏçZO"7ÊÃj}½¡íÖ£ðSãï˜oëí ÿY ¾Ô¡µàsyó÷0r[ N»èï4ø”‹Τÿ5Ô?9ŒEÁCù½Aô¸€yeå=z2ëöàl~X>zºí•+çG\ò?X÷1ȱANø¿Z' 7D°ý©G¿[Ÿ¶ó_ˆŸWE»åü~ ýœ^j¿ÄxêâDpß´ÎÛÌ|Õ“'«?ÖŽ3Œ}o¿‚¸ ©¦?E¬ËMÇ §Â“éô?"¼ÂŒW­ýÈeùŸeûSJž²ëNËç.ì“ücz`\òÊ ¬ „Ñ‹r*ÜÈE¾ à[ráF~”OŠ=€_LK™ßzT‰^øÏ`|×Ùß•k]}.&þT¥uy¡ì¨|r“V\ÙÆïˆßµ߈þwÀ×røä:ž||ÌQÞÿ.qæ1¯ÚoÔ6cß\؃ZÅWÈk‚x¸ 9è^l× ŽûEñs”Ç£ï±ëÑ'øýÊ~ހ߅?ÅèWqF8(\,‚ÏñÄ™Ì[ íF‰#<à“¸?rþ ý,€¯UÂù¹èG€ÏcÄóÜob<Ê£Ñÿ.âàö ~.z@~¸?°’þxà·‹vJ‰×”¿)eÞK‘×.ð)Ž<·ï@ÞŒ~Dˆ£ãÈeóƉ?•¼ÊêCò4+7Aųìï ƒWÔ—ðãw¶Ÿ7å0Oà[~ßJæË€“Þ7‘wü‰qPýÓ¾´vÑLj'ïiý:}ª¤­ºÁÇØ1VNº°ÿ^ö=x…kàÌ,Å—àUs¯m_ëüôKûWÊi¯\ÍÇ(^›¡|=þ^+~¦ÆÙ¹ñ/•WŒ"ÇMøÁ%ðuûáf¡wa䡜®Gè_¼¹K×GÈWé<Ô ì]>üÑ>ZùßøK p¹ ¿µZù´ ì¼h]0Àü¶œÊº1ýÊѺó3?·JöïüÅØy/ýQ¾°®}K°ÎQýëÄOÖºFóRJ?¦w3˜—àë$hyÒ~ÀöuÁOôRv7Ú _N$¥Ýî=l=ݬkÔcç—Ëbš¦Ø~׃›‰+Y?ÜÇÊW › ÎM•—¨Õ:r• Ô„~iß|”¼ŸöhhóAäÅß‚W3”ŸBJ  äU¢È£¹R\ÂÎ"®­Ç7a—/v^`ùYH? i¯@ñ vjãÕ>ž àA3zÛÔcñ¦ E~E{CŽ¡Qöû³í€Ìì­-Ÿ‰g´¼{ý›pÇÎO#zÛLüÂ.$èÇ$ätù¹©Ä!^þ®õ¯æ3,ßZ6ÇBoàgû}Ó¶Û‚ZÀ8rð×µo.›ryÉúj”·Öz1Ÿð¯gƒ'ømäÀ×Σí÷Kø]ó4“qL%¤<èüˆHãb<ÍÌ“¿,Ì|DYwjÂïRþd6~Èìøv‚å¿öåG~gùª¸« }Œ OmÌkð"ÛocÑz÷dæg"þœ~*m[ÀÝìX‹òÆäuš^±üi"žÑyíÿR¼¦8·þÄßµõ¶îGÜDœî¡]?ýêb|!úÑÖŠ½b¼|¿+’^)¯Ïß§!Šã'¡oqô3Œœ ×½•öwõÄk1ü†¦›Y/esðëçÌ ßð¬ý<†ÄüG”ÿÇÿˆ`‡šÀÇüU~a84yÒþ=7r1•ï7Á§&òS™Gá®Ö‘=øQÑÅ–o¹üNùÏlÚÙ {˜‡ÿàÁ¯S¿!NsãÇiwÖê¬+Õ}‘O-m‡ŸŠcÑÓ<ð{:rØŸ/çóiÌg”ßÅï@žÁ½ ¾çÅß “w.±õÁïä¾vž’]äQˆŸ"|&?ÕˆŸßŒ~EÀ{Í[@ùCôwó¤¼ñÚwlù³=x¨ùižiÇ;{¡}nøí[`å%´Šý{>õN“ý¦œ…^å"gu×’÷9Üã÷nô3~Í"of¾›Á‡(rß>y¨Šè.¿›É¼+O–wø0œòÙy‹ƒK¿¡\¯'‰2îð/¹qî¶åùñ Bä—eçšðω¿äeú×)ÿbçAû߷Ư†êFþ¶'_šxÿ=žÉ÷£§€{´Sî6’WÕº÷Tå§)oüæ ¿uèGûìÆ.¸É)&?"Œ¿ÙL|WÛƒä¨<˜‚æbÖÚ“vüaÖâø ð½ÿ2!ŸþÁ_íoš®L€ß“Ñ'íŸl™@ýàŠüû ð;Œ~5à¿!oàc'~L-~gßó¢Ê DYŸªÇN騭øÞ ø˜¯~ƒÇÕðÃEüçZ>ažÀ—Ƚø—à]âUËo- ®)Dï&0þ¢ÂchôïøãÂ=òšÓЧø Ζ_[€ÜµáÇ·²îÞ?OÄ.p×åÝ Ý jüOØv=äÁtÆ8ú'yƒžV㋟!ü¼qèTéóAØæWço<Øùþ}–øøÝ¦´›þT ßÚ­FGI~;È?è^“x7ëzÌw{©óìÊ+‚SÀ­ëN§ê_ÿúßoÁ^ÏDïJÀ ù5~æ'ŸõƒÖ?ØÏ[‰ë´ÿÐ…^¸à“Î7Dö²ýÖ¾ö:øY ßÜøeŸà‡ÎÑVÁ—-—ÎE·Ç3~Í“òínÖ7]ȯö L!~œ¾<æ­,Š¿b(â<{kjù¼&Þ€|ÇÉGÀÝëP¨8þë<Äø<ý 3ßÚ§ØüŽÇ\ìn~;éǯWœÒ²>ëbȳì¼öaWH˜ïFìTþyJ˜Ïlä=‹œhÿ×X橚|Ø”ýÈEýœŸ óî£ñ'ÈAÝþÌ~‰ìöXƵú¢séZÿj ¿ò7 yÕ q•îÐ~7­†ðÓtOTñUíi_—î­˜†4?u|h€/ÌcÓ/lrñƒ ‘g?ã Á—BøÕL¾¾™uù2ôFùô*來ö‘wÝKàê²r¡{Í<à¦ÎÕNß´¶û2>úäœN>qâ›iøðµ{\Hœ¦uŸlìÚ†àÍdä¸ýiÄoªÿjrí¯yörmòEä‘‚ôCú¤ó=UÔWÁøÂï*@>+é·p>€žyÀµìëtðGûÉuN,Ÿ8£†ï5bo´O¬÷ÐóåmÈÏ7°.'½Š“g*=´W ÿg0¿¹ðOû$&aÏ”V>¬½˜¼>Ÿçá—çø›_ÒĸšðÓªÑWÙÛ æ©?4ø˜oùÚÇæÏ”?P~O÷ÃNÕ€ ã™Ú3mÙÏ<ËŸ5‹m;ÂOÅqùÊï¡SäW¡w·ò;lŒ4Ú­¦5à§î¯kf¾t^¾5ŒÁ铇¿—a´Ÿ=~ÍÄ>L7"ØÇúÓN?ó‘ëå±À½€ü=òMÙï51o•ðUûÿ*É;H¾Cø+õ¬sì«öG—£'”×§&ÒŸjø;>ÖòûëB¹ø/Ü3lÖ…¯Ú®ý\º‡L÷È/×9\ô¶œÏc£ˆ¿ð«‘›óßJ|Ôzqh=öC÷KÃwy˜ròí9ài!í*¯¤¼Yûʽ‹¦õmæ~é>¸0~Ž9Õ=Íð¯ûZƼðî)#«ÄÖ#ÿøAžñãÉV0ÿòó¦3¿c…«È㌫ ³Þ!? Žgó=ícUœ›¿”ÕýBc”7ƒ?åÌ[ ~T5~U vÁO»­–oAâíìfÄØvâÌK¥òƒ…v|å”§2Î"ô+<ÔºKø+ËÇøÛ]‚_(»†þ„~i¿ç#‘ϼ4áß$ðçË·ö_W@«™'íw«o]ä ¼èa9ö`r¢ûÝ&€_ý¸ÎÔ"7!ø¯seädöÈíR^ ?}2öiœòSÌsr[‚~4UÌS5øég^ÛÈÃê¼§öù6°®ÇŸ-çsûÑy®éà@1ò??gó§|î=N^1¯“ ÷Ê¿é\zû™° «þ}†öLqátå©ÑOÝCVH»:§Ã>ÙIäBû¡;‰‚ÈY#y½(¸œˆÙz+‘á’›zòãjÆUBÿ ‘×~²Î›%iOû® )×ãÇ>"?¾7uØ~4Ñüð"‡Ú߬x¦\‹ ç~úÒøñG´/¢˜þç€ã5ÈW þ<„Î?iÛ‡Üi¿Ný®ã÷:o>“qgÆ!·…Ä%èë,­k€—üöá´ƒCº Š\Fã¶æ-l?e¿}¬»¹Ð7åó´·I÷’„Áó·myöI¶^ù:—Ü xt7[¸×D^Uq !¦ó•Êo»‘¯Fp°þ)/ÆÏÑ;“ñ³ú×sá_5öN÷rÖQ_~äó{Ýû©ý >ì£?LûG´ïLþûh¾?“ù)F^fmL^™8Èh½¾·¡×ÚÇkûQ|É:‡Á W{9Sù6æ¹»¡ý³¼b:É{Ïe¿ÃLæ9—8¡‘qú‘Ûð)¿¿·ó馿>æWçuþ\ûÃÑ›züÝW ó[Ú7 u¡)´_C{šGù íC(Ä?­gÜ9”½ðE÷ëä+Ÿ†¿4‘z³ásÿ9âÀ6pÈ ÎiŸF¼èBÞåëÒí4_ϼ€óAøàfÝ/ŸøJçeËù])ø£ýú³n·ß›³yp~*üRž[÷ÿ•*A^MïàJûÏ#oÚ¯w¢Æ–£ڲãwºÇr:x˜ NK_µ?6€]ÒþÅ_1ð©”y¯'¥¼ŽòŠ[r‘c[Þ×òûnä¡V~€ö…± {‚­·9m:ÞÊi¼ha]×\këÑ=^âÒ"pRç.ËÁï2ü"å:sí÷çÄÁo䬈xEùtÝk!~4)¿çF.ò»‰ÿ|è¯üÂx/~ÐæøIÈkõ*Ý«PŠ\•ߺo¹¿;@9QmëW>;¾6ùFøì郒³|ð[÷öæ‚ÏŠûÜô{ζuä÷ëèŸÎw%+ȳ`›.e½ˆ}ÍøIüÍ´ãõ2¯:ŸV‹Ðþíg­'Þl9ʶ³Ó6¬ƒ€ËEä‹t‹ö éÖ&Ö3šÑKݳÀŽæÑ‡&¦ÛïÇÀÈ äÑi/Èüçã‡(.Ån¸À•i²Cð=þòعÈÝÄÝØá:䢎¸¢ˆþåIÀMí'©`<ô¯í%ÛZâUÑ óÖA= k‘Ÿù%ù"ôHûc•/Ò:©ö(_êguFyœØÎ¶ä›¶¾]:À5ô­Xù_òŽ!æ·¿µyhf¿—›¸&ˆÜèþ‰ãjºÂÊu”õš(¸9`> ÑcÝÿ®ü¼ÖóóÑÅÿº—¦FãBÿ ù·(xá!NÓ}¢’·Bòc:_¨ûæŒc6ýð‚û^â%åÓºeG°›Í¬çj_n Të" à¡ùÏc|â~Ý,¢\˜½šýÝÎOÂðF÷RF6$ßM|¤óõMô»iü!ìpÌÍxüàVœù‰7FЯ옋ü[.ãѽì¹à€ i’æ‰õ+½g$|Œ|aç» |kÇ ë EÔ«ûtv¸]¦õFüœYŠ/ˆK•Ÿ  §IÚ«—îEå‡táoGþ\ó¹î‡1ø9Åø›ü]û-f—Úþî\k¿W޼•1Žò }%øÃM¯‘7Ž|j×Êüó‚#~âŒ&ä9ŽþÖwFðu^Eú¢û›Õy’\ð1Œœ%®c}û%Ž~Å+ÉßcJÀ§<ò¤àîT­¯€CuèËœ‘wäTç©GØïÍoÇYO?›Ø—™`¼º'R÷aE~G~…y˧=Ýã%¼ 7ò˜Õ£Î ß<ü|ÿ©.ƒp®ùnêµßo:Ô~ßà7è¾^7¿ó‘Òz¤öyÔó½(x®}¦ÚÏUô8ëäø½z'IyÅ ­ã‘GÑ>$݇U¯uhþƒî?Ö}šÚgUÍ<º±¯sy7ɽvc—ä ’óÈ߃>QŸü¥ÎUÐä6B|åBÿ‹Ñ«jÚ/W~©¹›?vÌ"o—cb;Ø¿—3Ž–]m}-³,Ÿ=è[¹ô"¿ýë4€SØ£ø¿ÉÖãcüÊÛ”b/ªݳQ@Þ?Êü'ð ó£û²<øñér-¯9,‚ò[úïñÀ¿›M>?ÞMþLûËgcwëу–ÃÑ+ü½.ìœîi–½ñg” 7†~•·TÒ¯Øöwò#敳^G|¢uØ8õĉ*ÑÓÖ;¬œ´2?uøõ´¯{sCøim¿²ýÐþœ(¿o"¿ {ÉÊÐ?w!GùÑ=¦Qìwùj—üH>W^¤ƒñĶ"® _¬ój¥Œ³˜y~‡ÑGí÷ÕûSnòöAägvvýnÿŒ<ÅŸ-ŸŸVGGN¶ß×¹å©tŸ©Þ¯(ïj½Êþ>ù'æé7äݱâæ8qr?ºb™Oë»¶þVìW-xÆ~ï‚Èy ~WrÙ@Ü— ßº» =¬dÞ íiý±½ŠžmÇÑD}g=ødÐËðYqkö¾ˆÏunº¼…‡}µà쎗à'ñ}½Ç¢x/Éxu.¥ýj»Àò¥;?By ÆcÀ%íë¨bÔW‚~u`ù¡óK;ηý+B?´ÿ1ŽžÇÑG·jÅ/iÏôî¡ö£ë¯ñv3þv«ð?3N¾À…~#§…àV9r]MýÚ¯%þkšNÀç:ìžöûµ‚×:'£õ—ùýð]ù)½/àÁ>Í>Ãþ^û]ZgÅÍù-¸‡Ù‚\¶~J>ƒøÇE»z‰‡PLþ…Á/ Sļ%fÛv’ä=v\l¿_Âú`%y®x9úÄ:Šî¡j&ÞL\£umÒ{‰~ÚkÆj!Ÿ† ì©öõå1Ä7:wP…~å2Ÿò’ òÁ•ÇYþÀmûš<ý+UþSù<äi*|×ý¦^üò.Öo”7Õ:V9˜‹c—›iO÷ÏÂ?t—7 §ÚW[ŠÔ~Æ"Ú׺@×Ì7|˜ûü,âaóÍû™&ôþL3vªY~8q›îýѺ´*.Fýä—u®<º€¸{]€ü(1Ü)`|U´¯uè6Ö©t?¢O‚äcæñæ3ÚnÄgá*qK~,ú›ô€·è§Þ‹m"ÑÅ>8üŽÜÊ:ñc óëf}§”ù*AŽš7¶õÍú»•›yöÅþûÜ ¿×ùJcÓ~œf¥=y=y´üöÑOjë´õù‰¿#â'ôOë©Eøz?§»ªõ¨¸Ö„\‰žûá×dâ„8òfàS.ó=û—‹ß—ÎÖÈϤà²ö i½&€\$ß·| ‡ù´6âÆNòs:—¹Ë¶ëÃþ)Ÿª¼lòWŒÕоv’˜s‹íî#®ÆŸˆíhåJqbv³¥„¸ˆ<£½Ó:w¿Nó¤õÄfôZïuEð'õ>…öwa'u/‡îÛ–ýH?±wUà®îéÔy£8zêÃÏ*&Îл9ØOŸª .Ñ);É÷Üø}Aü’Ùü.ˆŸ•€¯-àJ§òP싈¬O¼ˆ_]JÿÜŒGx•O-A>¯½˜M^Tç:‹ñk¢×Ø~EWKåߌa Ô>Uío«Ã^ÄÏÇ?g^|ØSÙ§vZûu?lþ¶ÞEÓyðò‰ëÁô®|š‚¾èýE?q¦æy*õèSí÷Sž¶;8«ƒø†øË­uMüá$ë:âã8ö½™|Uñïk›FôÆC\_‰ê¾ê ðWy‰881 &ù$8ŒÿT…¿¨û‰¢Øƒ}o¡}õ§nmä{ìÿÒ=Mð]ç¶õN»î{ `?f §Eô?Wþþ²îMmlBŸÈkjŸg-ýÔ}+zGÛ\€—Ú×= ?Göª?ÿ‡Ò¶…-ëüGx%ÉkŠâÊVh;þ¥Ö=‘ZǪFÏ=[â§ò÷røØA¾¼û3ç·ös7üuËþ3îß7àyý“ÿYGý~ôI~„îW‹á?6/'È÷#àVœÈCo Á“BøVÅx&€ßQü¯æû±ÿ|_yÃhx<#8'»-{”‹ë=êì™ û¸yݯäE^Bäi“sÀA~ßyÊÆ?oÅ®áŸ6 §uè¯â'ñe ~dþN¢ÙŽ¿»?÷ø]Øëa£È=ë™¶·É¯wÕ‘§Õ}Ñýï^¿èصím?ë³í|è~ÄFÙuå¹°ãùè ¸1Vñy­fæQ8D?´Ÿ²öu®„üžö½ÉŽIoõ> >vSµÈ…ÞõQž¨ ;ªuÔØû÷VÆÓº”¸Üí[yLü¢ZðÈÅß‹ÉW¶b/fϰò>Ç…ßÁçÒ›8¸(ÜsagÛ>²ýhÃÞà—îoÑ>g[ˆ ÷]Ê¿c—âä£àA.ö»ÿ|xoð·ôNEymbýëÏìc©¦|Ã×rÙiæ½{¨ûktߢ¹ëxÇ΃Þöá·5`:n!„Ÿa?Dg­­·ÍgåÊþë¾´zü,½cêGŸõŽ©ÖÁÚЗ9Øáäì9ú¬¸'Á:W¼ªŸºˆ»ºÎ_9oÒH~]ûj"رø“Ä/Õ{²oÍàdò®}¢9Ø 7öHùƒyµfüàBü‡fìœü©ÈÓv<º´?H÷Öc''1ÚÏû‡“NXë|D®”?V~±›qGÀÓr™DÚ‘3ÏQösWiÀ¿1›3Oä½Äßô±¸8¹ œUží}[»÷Û~ëÝ/ùÅnÖg»_b‚¿GO°ý®ÇÏŒà'Çùû,ü×.ü•ÖQägéòÚ‡‘ϼxèÎÇÁ×–×mÿJÑŸvò‡aì}SÒÖ}Þþ¾{]‚^F{ð+ŠÈû4UÓÎÀ<¡÷ýï `G»±ÏÚ÷ 8±9nwÜOÛ~†å/Òn5¸áUE>AqyyÒY¬ã$Y¿óÏsá¿ÄÑWɯü©îS­žv“7Š!çØÍFâ/Wm¢?mÓ‰ãÛXgd¼­às…â p¨ùªe÷ĉǛñ/ªñW:ÉsE›¶G‰£ðtžC|¨Â¾çwÚçÝÄ:L'ë!ä[ï EÑ£YGÛ¿k¿rëP­ÈQ‡òŒS÷¶„ðt/ƒÎ¯xˆc*™ÏvhÇ%¶½ÙƎüêÜJŒüo¹®ÏælÌï>Çþcùý—åC#|‰ÜÌüäÛ~t·ÍFÚÀ¡Vüš­Çñ¹î+¨%>/SÞ ¹oa^=àk2åu›ü6ì§þë<¾ {ªõV8Øô¬íwyú0ó¤s.QúÕ}Ÿm?ú0¸€¼v,´Ÿwà¿»ðÏ•/ 2?zŸÊ£y:nåõØ~œð.YŠ¿Q‹ýˆbWbØ]7ø:‡ü‚ò‚²Cz﫼ƒî¥ž~&±£Iâ˜Vð´…8º =Ô=éz°¿D÷WÇÑŸæmýè['òc¦ ýkÆßt¡§%´/¹Õ{áZ¿H0¿»l‹?¸Cø#Qâ*å±£ä¥ÛÀÝ$üî°ñˆðóÿÓÿ™Ôt°Þ¡{5ܬ‹Ôš_Èê¿Cû6ô¾_!Ôw W³YGÑ~czÖHþ2 Žäy.ùÔ¹¬ƒÕ“ So˜xEïP´‘‡HâGtb÷ZÉwio!¿Ï'Ϋ$Ò=óº·?VbÇ¡õ±p¥…üZ€¼I'¸ôžt8ZNäoT€oº—³?7H>€¿¡ýYä“"ð¿m¼ý}wy\üåJâ Ýï­}1zg°½.õîXù”Y{Ú~'çá៹—Øù®W|ƒ½Ò>î9Û[~ÏÙ¶§ûÚ‚àN?Eï…ë¼u÷ŒçÛßf𪻨÷ K‹*úïW ‰Ÿ£ð·Iö…ñ7×T›ºo²?My5í3ª n)Â鼪>ê½ ?òãljfcW"ÄUm—'Âçü å9é°jôIq¾Ÿ|P3xUG~¤ÿÛy–Iòϲƒ¬s´#ÄcåÈ©î#ö Ÿº/»ˆy)Ç¿ÉÑþ-úÑu¦¿nÖÑ]ðGë-Qü¦øþì§ÃŸí~ßöŸÑ½zuðɼ7¿¶7DgY¹Mìà‡UÒ_óÔûÇ.Ú©!þm`^bà­KquÄÊQ1~{r¬÷ft¿v%þ@5ò\Â|yÿ‰þâÏ!ÿèÇk™/ÝÇ™D.µnÙò…×Ö'¬\è݆ Õºå›îm,å÷zŸ¼œ|²îÓÑ="]ŠŸW³r¡< ¸[ï4Åá‹¡î-m}Ý|ßM¼]Ë:y-|ö!ŸÚßœ`Ÿ@þÅ«ÁwòUèu•æ ¹ªa<ºïª^qëbºQïÏUòû¾§ù1àJ9rSÎ÷ʉ«¼È£öAt6¡‡è—õ“ëmÚ¯ ¼]+v¸ucûýNùÊã"/ÞÅvüØÅmUŒWë¡íä?ç²tvµí§îÓ^Ĉ+bøÓÜë¼ÎÖß%{æCnj™û‚šñï›×Á¯EþãäÅÁñR~§õ¨rñê{l{Ñl½z/´;¯õP?ö®¼”îûÐ}üÅøÏEè­¯ô®õœ“É'°ªüOˆ8oÎù¶¿õ;Úþ¶¯´2o]óXÇÄNxn°íÖàåc׋ˆ…º¯»ù/v<à×ìMl½øƒÂÑ(ùÙè¦à~Z;¸ÛŽ~ô¿‰\kýÒKþ¨é(;ï‰5-ßBäô®jþéþ$½[ªuøJÆ9}!/Ê;è<“ÞÝÓ=õ̇ÿ¯ þçgYš‡œO@_K°Ë:·ÝÕNGžËźRp¹ýýì Ñ/øÚ‚½L ×]ÊÿŸ{ÉWè^ß\ìÎ+ŽÓ}±Z_kÅŸê"/[Àø]àp£ì þ¥ömµ“¯k¿ÖöS~¢ü}í÷Öû¹qüŒøôÎRòœ‹ä¢G3‘»Jôb*ødÞчäÄO^+—zõNf)ã*až„+3™÷éÈ]ú¤ó*õüÎ0zg#H9 ÿCô7Š3¿àˆÎ³ëÝÚjåí‘#ËÒ{¤Óð;›YÿêØ×Ö;×>4aʈ[<È_;Ã,†¶½gûß«°ïú] ~…¹ŒïeÇeœºßPï¼+ï;?E÷#̤¬ó ºG5„Ž ‡Ú×ZË<ë}ÜöL÷ˆè^VŸÎ; —²Seòƒ˜‹Ò½AÆ;—ü®Þ­ˆwèÝØÎÁ)â2ùº71OýÇþé<ŠÞŸ’çíÂNÌfžtOS~dDùrìFyp¦¿¡9õ€ÛÊ/¹Ïö&–´õûñgÃÚïu²Öu'K•ÄãÉ+k¿\#vYç¦êðkógÿ öÌ_å÷¯»ó÷-‘¯bô°Tùjìgñò¦Aò°³YGÔ¹êØ•PòøäL1vÛý¯ }ÝG§ów:ß=>ĈϚY_M^GÜÅ÷ ™z­ãàG _Íø9ͬ“Uƒ.òùnøØN–¼s»¥ýjaäB÷Wç ÿ:ÿ©yÒ9Ÿmù^¼mÈÆÎ€;^ò+²k^ü /û tžöOûÇtO¦ÖG*Ð×.òÿ•ày5r¨}–ÝÄAä6Š~*ÝŽŸ©}DµØÓrüìþwð“Š(OA?uþ\~Xr~íËÞÖ«}ôXët­øå­èeÿ~œ—í÷<ŠOËWÎçF±µW‘§Í³ý®å÷zÿRç§õ~Œüî1Ø¡þT¸V{‰ß…÷ì—î’?•K¼¢ó‰“•aÇŽáT£ÇºçR÷NiDˆ8.†?¨¸³xLú©ý>z6ýÊÃïÑ»Á½߉ÜÎ&ÏV x=U>"røÎøtŸl ý¬Áþ颾iÿs‚õ“(¸\‡|×ã7Õ`fhßò«ûùµ?rÆÎéœt1ú_Ç÷ôNO~ˆökßÅ âG½³²òQ ÿµÿ-†]©—ûïçTœ»3öüj"NˆžoÇߎ¿T^ºñkˆuÏ©ì‰ÖÁ¦Ãìq;ë]·±^†~–‰Ûq4 ÷ºç¥ >5¡g9­‘Ýf}H÷†'ðÏ"àFý o´²ž ôÎÅT濺v$ˆ<4à÷èýVù¼ÉàJ˜uD7xWˆžê}JÝ­{ø´ÿYþBò¤ý Ê ë\h7ö+D=M¬×é}ïvðX÷“ä¶ |Èžë½Ü|ðL÷q)ïÕŠÜÍ~ˆ|:|+Äí·×PÝ×´Ô~ÞDÞQçÌ¿¹á“ ?Kç{#äekÁYïÐù)Ý;4“x¦ÿ¾küޱš'íóAoKhO÷.êÞæzø©}Œ:g7~êžÍ¼©¼1~…αT#oøÜ¥üqUyk$_ÖFÜ¥s¿^ézT¾(ž×{ܺ_ªéMû½ò#széý©¤ßzG$¾”Óïìw v΃ž»ˆïjÑ xŸ ˆ“÷÷3Þ濊ùÌGŽuo¾î1è§ü³0ú¥÷ˆªÀ#ݳ]N¾\ë‰ý÷b€Ûº×Rq”ôVëŠçZ‘ÿtïw{”ÄêÞ~½“á{m‹Éóbg=øQ’çpUû´uŽ2ÿ:ú þ ~Ü\Ö d_K§ð«öw ê#_Óĸš±ýô€÷^ü݇¡|f‚õ“XÔ~ßG¼%ÏUD¼¨{8u~&»PƒœŒEÿÃøGÖ¿tߌÒ~ýôW÷ˆRŸîËÔý¬•÷C>½Øó6ò>Ê ãø›qGvAïq'ÈkG™¿6ìI9ú\˼ë¼q>öHçî‹„Ø/Ý;Ö±œ¼ð¯‰û˜÷räIëÚWX Ž7£gÍÊW³®¢w}\È…ö5è]Îqu€|`ÿ¢}™Îüë“™àY ò“ >„ÁòQ<‰—¼Ø·¿¯ƒÿòƒrðק‡©èq õø‰G;ð{k”—@àZñe¼kÒº­•»¶ íøKí6²Kè»ö©‡Hß-¶_-ÄÓséOrª{eçC_€CðQïÝ'ØÇa”÷Gï\ø³^ì`<ËòGïCkŸšÞ­`^ôþTÿ;ÚZ'âû9|Oû„#DZžK\ç'¿W?#‡è£ÎA(~š€?%?R÷›{±7Ý’æÝ ·ô¾û<ø$œa~?µòø¯Ú¯÷TòÀ‡BÚÑ9µäE÷µo¾‹µm}ºÿB¸‚'õǯ!O‚]Òºœâ~½sàwô®n4ÆßñÓà_üR£s‰*±ïcÑÝ'Y¾é]{¯p“y§~ì@>ú6™yÝ–y-DÎ…s‰ojà§ÎÀvù•øq1ô=ú Û~3þu•ôšøJy^Ýÿ¯}ï:/£ûPCÌC;å9—ÙzúÏ™£Gp=À·úÕ´†­Gï¹°ã¨düº*º~öª®‹ü+vWë“Ñ¿™Œw"ý¯—¶bþü̃î,b~´®¢÷5u®ÚàOçèÜÍDú½Žoåøªš~µ— ÿä×jø¾p»mó~ÆÐçF­çÜO¼õQO%ýÍgþ”ÿ-$ŽÈCÞ£ŸZ¾´¯ÏÅ-bœŠwƒàMø1[_1z£wšˆóJ‘3ö² þºÀI¯¨GúïÜßòKz¯û¸Ç3_ãOx=†xÔ?Õ@þKïˆø™—æEçwÜÄ5ò¯¦Ò¿IÈãÚÊ—¡§f7ü-â-ßkàg@÷¥Ôã_Äàs#þE ü­Aþk‰ûªÑó|ò+º¤~ç‚zÇ#º ?‚øFy䙨‰ù²~§û˜k[>$(—ã7¸àO…üXðAïDÔ£oAì_øhȯLB&óý”ß#Ðû¹µàGè}ò/È«î›Õ½îÍñëÉ è^ïIÈÅ8ÊÓÎt¨ÖóZÈ_JäO×vìŽÖ'cŠ7޵õ6Ë¿Ãß×;Ž•à…üZá¶Þ¹Ìcþbø‹mð;y”íwñj¿óÓŸ0òXˆ¿‘ ?™àïåÌK5x,>U‚#zç/üäûèƒÎÃN¦zmœì8ò°óªwˆôîk>þ¹Pÿ=ØÝÃ[_§¢ßcáÓø'Ó¡UÄí»Ø~ë}­×hý«ßËÿ|†]¤Ý›P‰œù Z‡×þ=ÃÓ¹áŸîK餿³µx ÷„ô„î= ¡×zÿ½ «™¼¾Î±è=€rpEûyú牼N#v:€ž—Ò?ùÊûè½ Ùñ5Á§:ü³¸£%Ð/íkòá¸È(¯W…ŸY,üC^ôŽB œH¾dë+bùÌ£Ÿy×¾¼büI·mrá¯!Ï•ØKíC)‡ÏŠßuþ½ýw=aù”‹6»¥s.ÙÐø©{Æuß_ñný‚Ç3™·Z~§û0…{3¡zlSæ_÷Kº°óMMÄ¥ä¥\ø?AÖ š6°ãhÔßÉ[ùÑ»þw-ð=à™‡y”¿¦÷q+ð‡JáGäzôy6ò¦÷¢t€\ñã‡Wà5³?¢™¸µTû5gå-´~b^ônRìtû½Já ú•§üÉ ê5ÄyôSû›ô^r!q½Ö‹”ÿrãoë}·2ÆŸO\4ƒÏÇ2^­»íOØy"ÿâÆT¾¾ùTpyƒ×¡&Û›4ä_Ý´ï"¯T¾ª½RáãbbèO\ÏEo4Ns °þªýM ¬Ü6=fÇ'»¦{zt³’þ‡°/Ú÷C•‡Ñ}ÿ3§ÞŸšHœ¯Ïs(»©WýÊÇŒ£'Êwð«tN¿„82—y™†_0ûP®¸>é^'íãÔûͺW°ù ìù³0þOùŒá) ûûtO”Þ‘¨€¯Åàk!¸Yü:ȶ—¼ÈŽ«ÿ>~â—:ò:uȽîEkaœ-àl1~¾òɺW@û„”wÓû'ø#z÷zõOE/òhwøYÃüçnÆë‡ó‘Ãv3Aï€UËß¿ràÛ$ü²-i_÷0êÇ–¯úmðoƒøEÍ’¿ ­ÉxYŸ‹‘ï)Æÿ×{Œ•ÈãtäAû€‹Ñ·Jò?‰m˜oò³7·|˜Âüj_º?»‚-Zˆ;[V±ŸkÓ OýþzÂßò+?ÑmÛ)FßK¨W÷¢è>ñ)È‹ÞUÃ|èþYßÓùÐØ{¶ŸºWJï0á‹îÛV|8þeã?•ã—èžÄÄhô¼æB)ÄOkÂo¯Ç/㟰Ñ#Èÿj}?±Rrˆ¾i¹u)½¢waåtÿÙŽ+¾ÈÒ½l~ü¦ð¼¹|žbÇ]J\UŠ½Ð¾ÝkÄÿóc?°³UøIÊô¯»ÓÎø¨÷˜´N®sµÄáÒ¿¸?»\ ?ki?¿s:ãÿ•->i?iõì„‘¾Ðn‚|m=þpðìýŒ‘+”+Τ~ç/ÅÒý‡…øi>­kÿt’W•¿ZŽÝòÇëޙʵ˜'ÖYš×Ñ¿rú£û Ë‘ó0zä§?õèÞ3Ôº¶êÉEÎô¾j ò–‹Ñýüµà°p6Bü>‰yöÁ'—òwÈM1ö]ym˜×Ræ_ïÛ7€o²ûòËõn•üÁÆ­{:Cà|\ù|âx­§êþ[½ëQÄ|äj½¹­C›ˆ;u/¨î“,eÞu_§Î1U¢¿Í'Û¿7Ÿh¿_¥üv» >è<¦î €?º‡Nqe1ã,ÇNä#çz÷Sçñ´/Ì‹½Õ>°bÅi%ŸA=øá§Ý|ô\÷²NE¯¶†Oº×Myª0ó¡÷)uN{І6àÿ׃;ò÷Ì{±üEìy8?…ñåâé½sÙˆœé}§Î}íç3Á½?ä}ûÂß…gÍàcó ØYp¯þU€óò㕇Ó=[za<~Ú ø5ƒñæbÿ¶Ã_Ð>ßm˜÷:âÁ:¾§|¾mß=ÊîMþ’ø+‡qc¾6¥<»PÄ8õ^ŒÁï•ß¼ÕÊE õê¾åz~d|ñ§íø ¨_|ÒûoÚŸ‘\é}ì‰Ìo„¸)NVç0§óºg¯Žß…ȧÐNó›ÄQø¥Z7н“Ú‡%³Ü÷3z·ªý|M‚¯Óñ'Ó¾î;ÕÊÅ/ÈáûÊÊŸ÷j}}ÕºÌâ Ì“Îä¢åàJÿ{VàS5žJ>BóDœÕ€Ÿ¨õ©Ä ò;øÕ´[„=T^LëPÓ™·ÉŒ³amÛŸxÒy9û^à›üxÛÒ»näoZ¦Úz[&ƒßÄñUȽîƒÔºŠÞÕöƒÏz7ºDþ6ý›Š\eÃÏ à¢Þ¯]…yôÑoó¢}(UàÅd~ïÆ/ñ0_yð{*ø¹ó³=¿›¿®ûÕ´·Fë…àJP¸7Éþ®^yrìƒÞjÂÖ}W•ò“ÀƒñŒk*ã˜L?' ·Qæ#´ýø¯ýz§PïÔ·ùæQï•÷Ú®´üнqКñ¯Îu3NÉsýA}yøáòóÆ!Ñ7Xw$ߨ‰*$Ö¹?óAïJ˜ïÖ[m=­çØþºÉ?êž 7ëKUèc„<¿î¡7Øa?rå¡Þ‰àætø¨ý’º?j&|–_¢wg‚ó5Èó$äÁ«|qªüò)øÐÃÑÔŸ‡ýÑý,±wÀ;ÅÛðSï'u2aä>ò¾ío67vXyÒ™ô[yŸþ÷sé×vŒW÷Åéž Êò}Ø‹:òJò“µ/)‡y?v_µŸ¦œˆmŠß.éü½î]˜µë¨Øç(rf=­…üœÎU”Ñ~ÙÉ+ç% ¿ò*:_¹×~ž@Î:ûúaŽ"Î^øq/Ëïbø×±†íOûÛ¶Ÿ>¾ï?üä‰\ÔÅÞ齿Zò”òkáO8W€¿9~üØ W‡¬JX?pòûîS+áw:ï©scø^¹âKâ¥~©‹õí Ñ^w>ýÀ/‹’'m$_«w†çô¿ƒ¦üžü p\ò3»·ÚØ'ò|z/ÎxìïÂÄ ~ŸKýàCãô¡çô(€Ÿè¥1p?B<ïGžêà³_ö¹Ö»-zOË…µì+~I¿½‚x\ï{êp½ïß‚œä¡gºßox«óÎZ¿’wÕz”Þ×ao“Øeù{qòÚÆÑ *Ð3Ý«<ŸÎQcǵc:ýiƒŸ-ȳîÑ+§>p¢; ýºW¤‹x¤ë<ìx£ý!ðLûÞ›fY9!ýïˆÒN„yÕ:d™ò\òù\ë.Ñu-Ÿ¢I+רÝp;r„ý½êm¤ÚÇ^€>äaŸfj]}«…ÏØ=½c¢÷tÞ)yx޾6o…^½jÇ¥û‚ ñp%ý.»ˆþL'3qò‡ºÏ«ëÛ½³S<¥è›ÞMíÂé¢\'¾™/~Zœ¸¤Që3ä9|Ì‹Îä3…è‡ÎSëþÝëÅψâïéÞ›ýÕz_ë8AøS‚þä2?SøÞvà` ãV¾µUú?uk\è&?&®ˆ/·íD°omw°Þ?î"ŸY޽ÓzÀ åð3'ƒïü½ëØŽ?§ø©ûŸbØv´NÛµ­­¯“qÕQ-|¯èž‚ÄYð•<Þ'Ô»^ìµüâ©Ø Ž3Á‹Âå£uŽ^÷Õ#ø²OâÇ$ø¥ü…î/×z`ât;/ºÙ0.ÅÉuðïðšÚY/Ê²íµƒ›%േüL5ýÐ~Ò\ø‡Od¼Í' oíàPñ§Î'…‰«ãØ×2üˆYäfÑN¾Ôâ_#_¿ }~Qì®ÞÙÒù·ã*RÞ¹+SÜ?3IqxÛÍÊWó¹œúýØù£åZ_grßCåðË¢›€Wàƒü¢ ó˜DŸÃä›·´ãVþ ½…uü9ƒ]­P¾{_L{Eèådæ-A?£¿$_¾ýÊñŽî ˆàçį'Ï…>é^ŸäÄuðAó¤{Ýä/uO…îÇÔ}·zO&žè¾ƒ?êÂÞiÿHò»Ñ~¿œÂ~D°õ(® ÿÿxMï­”Ð}jUÌ“W~.¸ÚJ<)ýr1Aø7ç0üpä¶õyäèAäþj_£æYû§rÑåÿ´>£õÚÄ¡¶¾¦-ìï;°ó.íÓ@¯#×€»´_~èýÄÙ|?„Þû°OaáÃåöwmàÞaÏ¢äšðƒ\øôуܹ/гþ•`ýЈ¡Gõð·ž|@ì#ü俽Q~уÿêÿ¢Œ'î¸è›¼Þ—ŸëEŸÐwÝÏ™Àlg]²ü.Æî!ï:ß/?/=™ˆİïMØÓ$ü×:½ìK¿_çãËñg¿i?Ÿ}¯í·âMíà ï†ðƒÛ{Ðcä5}Ò9µfÖã”Ô>c·â§åØqò@‰Íí<7…±_Ì{x-ÿ!F=-Ê+±ÞWB¹|î/Ò>¦ñJ÷Ãäðs]Ìw€|çÜ“ˆ·w´óÝ~¶ûݽÒ=øÊ÷è#½ó¡{I”Ç×¾ÅÈ“ðþtaÿ«¯ù©ÇÅlý’¿ä¶œ¤^ùmüXú®ý´Mä#3Áýˆo°3zÿXûQ?ÉŸÕ¹£|ä&†žéýÝB~ùÐÊ|×û?ü¼üÍþsÚà†ü?Ýaý³‰|Zÿ=Ÿe¶=?ò5ç.;þx¯óÊøO…ÄCÅZ@o&ã/+O6~*]Í~¯¹j'®¨Â?ó‡)ÿÇ*`“;ØrrM;:‡à'~©Åþ‰£ò»×8òêAþuîF÷¼ë&½¨ócЯò¿„yÂ/`gõ^aã¶^?óž¬sÿ©/¿¼\Òºzˆ|D¿½Äö!¿ÝàˆöË7 /oAŸ°‡“´ž^(ï"|Ó:éDôk¬òbès?1þyAäOïgÖ3_±{Éo0¾®×,¾wÝlåOçÉûï©ÁŽ(ž‰áÿ7€Qì‹Ü®'ß0þOáï:§¤sæo>ÆÀíÕ¾&í_Ò{^º÷~¿Ÿˆ¼Že~Æ("»ÒŒ]ç‚Wã"®ðã_u±.à'/{ÅöWû}u¯šî«(C.ôîû$ä0}›„#Ä|F>a¿ycÝ“§s˜’ó1È—Î;h\ÚŸ#o8 ?$€Ÿšßt¿­Oùü_íÇCv ø“G{.ü…0gCRÿº™Î…ÌbüÖsu~Zþ{]†½ÖýS±3ð§ÐŸ‰àŸÆú-v;­{ õ>z{ƒ:?ªsÚWQ{)y>p ~˜ggVÜcªàŸoU[Ïxðmû‰«ÛwÅ.ãÿG?Ãÿ%׊?§{•ËñßfÒß øßSh_÷L`üÊc†°‡|_ïÅT‚_º(Ê:óÝQD޼ðCëÚT§8ls;ïzW·‘qŽ¯Ç‹oÄ­^ô/NÞ¨½®À/òIßÀ<úÓÑ?üÉ>Õâ·zèîÿ_µ^§{å?ºñ“Ç2Û"Ï:ïWNÿÇ gº‡¥‘vuŸªîœu¯ŸÎƒŠ?cé—Α®¾M¤Ý@n«ˆ{ ñ†?¸¿9ˆ_A_Êë‘çBìg)ù–©è›ÞÕ¾ß)Äã‰ë•×Öº‘î;.„¿Ú«÷SuOmö«ÜkŸdåÉûoð¹q_‡^1Ï Ø9å'4®BøåÇ*ÎCv \ŽÞký©aM;.½ã1 ¿Íƒ}Ù< #בMm?r¨gt |ݹÖz¼ð_y"ûÔ},~ìpëbû» þQƒò0Ô¯óæÚçVE\§}lcñ#¦JNh_÷Ãà»Þ3Ô{7¹È“Öëty˜x\÷n´>ã÷x”?@~ ñ½ë ~/ÿïTÛ?yÉrä¶û¹z±-ýÞBö‰v6d>ÂàdøXû=á…‡<Á8äRë¹:ß=þåïÙø7›ÃíÛÖzx¡ø­÷ËÖ=ñŸÉ/†‘7½›’À.Ld|º?%;8†þLQÞMO´_§¾Ä޲ýÒ»—¹Ì›Þ…T>H÷Ô·“h÷Úö”SÞ^û°]ð¡ýb/|Ø¿ÚÑ9êqè‹îÇÙ;UAÞ{ ø«ýêõàÙÆçf\ÙøOQ+ç}ônÚ8Æ!üÛDy ðD÷ ‡— òíG/ÚÈ×ëÝ­òÂÿ‹_ˆ_‚=Ñ{—¥È…ü¦©Š»ÝVóéW~VdÛŸ88[d—k¿".A?ËȵŸî±~èÁïÒ{S:Ç'ÿ¢9 “/Ž€GºïXñÄ$äVû¢tþ]qÖ&ð·}ª'®(âs½O— îIε/³;;…ñL‡oºU÷Ub7̯î0èâ¥VòAäBr¯s1ä¦ù+a|åŒ{ó¢{‹wè· ýНO>ŠõÙÍ'óU_t¯Fóß Þtâ_ù´îÇúƒñ‰ÃtÞ=^DY ¾é=Ø#Ý¿—«ý„ÈÛ¦è]>Çv3ò5ûFÀÁþýZcÀôYçsñ#uŸeëÈ.ô®‰<¸!~­¦½7Û|)ú$¹güõÈeŒø«¿Lûó+ð'§(„½“Ÿã®EÀIáWë£ùØÿ"ä¨Nñ<ù½/:k‚ý^×ûäe˜Ï(y‹Fâèh.~=þR$ÇRÝ«U€¾ä—Óá¿ÞáÔy%Ýç0Iù™ lÿ_Xù« œÀ߯büQä®|ÔýAÓ¨¯ýÍüÓ^í‡Y¯Ô{µÕÈ{\oÁ?×}ýïÆ`bÈe>úQŒžéüÐDÉ ò¨{ÜàA”x¨5üÆoXçÆÞæÀ¿zZÿtŸò,ävÖ³ôqÆÉGEîwLüÁÊeìÛŸ8ãÓù–jäAöQ÷÷ä¢÷:Ï“?¬uŦuì¸ä‡ÅOg= ùîd^ÚÈŸèrí+A¾u´»¨÷ƒt„!>×½¹zϽ³’y#’¸œõ'ð1ŽÿS,¹à÷Z.‚ßý÷8¢ÇÊ{ê>ò–S-¿Z—`ߘWÅeAäÑG»ºÇ5y1ë‹,"äïãä¢ÌKbòRÛ¿7ÃßùŠbìÁÿÓ>KÅ¥Ì[rªsDMØÇfôY÷DÆh߃}L’·ì&ï[­ùg*ˆcŠÁ½Bø§w­ëø»ÁîêÜˆìÆœlû}—l%ٌđßBâ½Û«{­Kh¯DvIy_òäQòƒâçVôV|Ó;7aôÛÏï_Í&ï3;®Éî°žÙ(}b}1®õ{üÊü¿äL÷àg•‚“ºG¬\-’Ýx~°?Kû9´^^Ôþ{[_8\Ý+Ao*À—bä¶ÿ¡{Ø…Þ×àè=ÝóÑMüÕ~ðQ;1ìŠîÊcù\~*ܯ¾ìù/½ÑÈúBœýQò…è¡Ö;ë‰Suß}>yÄäŸìï’7Ûv݇f=>J\.û¥}µ~ü¾‰øíåØ݇¬û®Šø¼ü̓ÿº÷¢iÖã‰{½àn!ý OÝÄEÅÌOìõꜛޯÑ;?AüJ2Š×™÷ô5Î4¢7‘+lý úYB¿uo§îË™Aœ–Ã8g2¿zçÁOYï(^—>Vã§5¿êpÉa7ëfÝ×[þÔcz- h¿kð?EnuJçáô¾™ökå!'3Àíjü°iŒ'qòº±¯öÃùÑwÝ»¥ý&í£m¿óá·Î…iºî½*QÜ !?ÿZv*„½oÆ_ 3oìS#úÒ„_UJ½²»%Ô¯{gúï³—K˜Ý÷&«÷auŽÎ7Eˆ«ñ#´¾¥w½º?´õד¬g´¯·ü•Ÿa]çõHüKïK–¯¹äïŠðÿt˜Öguâ"û»øv¼eàŸ|D9ó¯÷‹:Ð;­ëkß\!¿Ó:žÞÁ¨#.óàGè27þ¹üÀ–ì<Ô?Ëxà—µð÷Rü»2ôHý¾iÝ_çòðCÃøÙQìd#~m%ó¦÷Ù´[ï?é¶ncùÐ ßBŠ÷È«;Gr&¿§÷àµÿG÷ë ݘ‡>é}3Ý— ÎTþ¸y c¿j˜ÝÇÚŠ\ê~rÙuÝ¿q™òßĉEàÞ?+†5È›ò ¿ý~¿À“(r§¼¹ì¥Þƒ•PŒý,Vþ•z\àsðAò’È»¿ß¾é}Êvâlí_aG#ìè"ÿ©õñZâÝ˪÷÷t_çÖrñoôÞ¬ð,@ÿ͵ô¿M÷#Ç%oÔ3«Áþ¾‹ø²ßòrÛnýÕVnÄõÂ#½çEŸCð;B}EÈ•ÎÊÞÖàï1¾yc½ã®û¢ìÓÐ{9aâ°ÖÕí¸ô®“üc½÷”Ç<ô BýýïXßð¤}›Å¼êÞ’(x™dåbÖZØ%p\ïïj?k¸ëŠä¿ó½|¬GN¢~ô“ø¥¼¡·qô¢‚öfÏÍ"_XO¬¼t#ùï ö.J¼&ÿOõE6!.$^Ò{1ŠSuoµ&q y"å À•XáÊë,nô´UëGà¯òÊGQ6Ä ÌKÿFþŽëw–_ Èó,ìU#þMŒxE÷ÄÎBNtO˜îÿp#z¿Hï´ê½ÉRúÕ²¹ïZçÛï{À«(y8Ý{­wÔ]èS÷óÄQÌ óÛ¿Ÿ‚þ†‘ïþùÆî7!§:¿Co«É×xÐ;/öº†¸¨FùVìrÂ.øšZä2ÿjáo”¸; Žé]Ë ê«ÆþÈwº_£‹üÿØ=hߺñÉ£âŒ'þ)|"ŸnX/Ðy¾*æIï»é£"Æ'4"¿,F^»ZþãK ?‰×m;5àÒÜV;®9ÏÙöêYçðWÖ“÷ÔyµøÃÏ‹ÝßœgÇ7K±Ÿ²çºŸ°¹þêkÙ'z=†¸¹Õ{ó³ˆ# þCýÔ{ǹıÕÄ9~ä,º£ýž›ui÷­ÄíM¶vòšèC?3†þͺÿ‘ùóÏÐúPâ!åð÷õ.C ;} ÜO”ÇÒ:|ÜJ`ÿeÿ様à .òÏ„ðouL 5ÿ£Øõø'‹È÷c/+˜KÑßãXyŠÃwÝg߀¿U¥ü$þm'yåì}1í•(N¿kè·Ž`<¬Ó*Žj`¤‹ùoDNÄ™1ìß,p¦„üˆò¹z§Aû"t|íOϺL÷ÿFàCöÅ‹¿e}'F}ÊÃÏÞÞ–õ~¬ù¨%¯ë#NöÁÇ(r£8½ÿ¬Œþù°{Ú¿›K}ºo½Š¸K÷°Åbà%ùþRü#ù3ºÿ¤¼n}¶§¼˜î‡ËÃ.ig9öÝKœÚDÙÍïÜð»žßµ‘Ïn _µ‰ãOÛr'ëååZV¾žx GûQÐ#áEzS¾4bŸ£Ô§svµøË1ò-Ñ_ÙyQ}Éߨþ&+±à»Wqß«W£ðQyØ0ù [ðÒŸ\üå\æCçPu?ú$ô&*ÿ„¼Q9qe¹î¿ïsú.\ÉE/󑟱ð¯\÷À‡ÈTüì˜ô6̼´ào4`'¢¬«Dˆ¯:–Ø~j_X1~…ÎÛOÅÞπߓÑwÝG¥û,ø’÷2pÔ‹ÿ¦õòãUÞtÖÛà/vÂK=ŠÛ½²Ûä×ÃÈW=~_í” ¯Ú÷2üQþu:üÓýæ[á*>‰4Y¾!~ä}ú_K\ÚŠý)gµîžýŸ }ôS÷‚JOt/‚Îs‡ˆÓâÄûÂ[ÝãЀ¼é=ÉMã“<ŽçûÚ‡;‰që=*½ç,¼ñßN"º¯£¹­—?‚|wãOÎbý§<ô2¯ü>Ù_Ý".ó#ßzGHyiø1z¯s*ŸWƒ{ÙÊïA~ëžNåsórVŽçš˜¯<ú=…ùÖ}Nc­÷ë|{û`È3ë4å×áÇ“ òû0ùÍvø¯ý…zÏ/?BãÓýÜÓÁÁþýòè¯ö£w‘'ÿRO¬ü~ñæ,ú§øAïéþ)Ýó¦sm?ÂøQÚ¯• WËS%oø]º?Tùˆlä¾ÏÐ_í£ª%¿3…z$-ä¡”ŸÎüè¼Úhð†ü æ?‚߯{9 þz½Mà6P_ýlÀÏl=À~®sø5zßH÷Hߦ!‡º/†½W¾(μÀß"ì{??Jñ;“ÄÅIôׇ]ôÐO/þ¼öóÕã§Æø~{Ÿ‡žèiôOù­Bâ½µ óa=)‚ÜW"':w^ιø};ò›?f0N½§>?TùÐä¿ù<ô ~Èo_i~>2_:'7š?Äÿ·Š±s3äïñ÷™ôG÷ÂLwãä×Ú°k]W’·AîtOiüªCÎôNErü‰öï²ßÚ¦{Yµ¯,Æ:öHNÇÐ^ú®óMzß]ï`Vƒ¿ãÁƒv/‚Üì~ÿY÷5Dw×ÇöséäXï¥LF È×”!÷z×D÷ááúÕ…}ÓŸfâЖÝl;MðOûÜ$ãÑë±´¯}!i7¾t"Ç]ø·sïTðNïÅøYgÓ=ÕijÉGÌfüŠWˆ;B̿֡t^«üh|]üü+Ýo&\Ö{Ú' g±-‰ûÄß/Zö³rª{tèÇœ5,§ƒ›:¦ýrÚ¿œG=^ð¿ü„î=0à™îÅN‚aì};òÞ~‡•ã8rZA"»%ŸRŽ–+Ÿçß‘ ݯóºÉ*+¯s™ïÚˆ+ˆó‘ÇëCuø9z?nîrÛŸykÚñÅÈé¾YíÐý½°^ƒ~´â‡÷´oOçtÿcþgz7Ó;h3´~„ýÛñ϶;Ÿ N2Å_Ú«÷ŸôŽÑÜ l=sÿ`iÿUç:ðìh/e=¤Øö;Nžl-úSCð£Œøµ >dã7%È×ÄþNñ;ùº/7Ä:V{¡}åðOïÊ”‚óZGÕ~#ùE•|_÷ˆjßT‚þhžÜä!"äeu¿\l~ú¥ülÿþ3æE÷‹èÝèhµåƒö¹æYû«µ¶…þ‡Y/Š#/]·’¿ÎÁ"žÑ~ÉC)ú£{cK°3“ñã;ÁÇ.ÖMºÑ‹bæ[ç °kâçB~?÷:Ë÷¹äÃt®É~øñßt>V÷;·ƒ£ è…ÞÙ+i<øCåÄýº—z êÏ#¾Áït1?zç—t_Tr‘Oq¦öb‡t޾œ¸#¬uãul=Úw"ÀßÓ½M!üÉEó;|óÝ¿ož¸p&ú_ xŽ<ÓDä^ç›^³|i£\ÀïÕ_­‹×ã?jÿãœ^Ëÿ9ÇÒoâyþW-|ö’ß ?´âOè>„bü?¸7|íß_Œ|Wƒ Éi„y5“ìxk…Ï̟⪶vpyTÞC÷Ž£=í‡Õ>¨~¬îï5qÛoåÁË™'â©zì{z‘@^KñϪð¯uO‡ðWïoèF½'Ñ >Æé'8§ûYKÑÏú©}˜ªoþ¢Ös}Ÿ°Ž€½®ÅÞ{]ö{ÚÛ>)þÕ>rÍÓ4pµy×}g5ÈGß­f¿¹þI>ð[ä7Õbß;°çÚÏ£wÌr©w+ä°»®u¢nü3åóu?¶æ)Žœ„°cý÷†!ÍØóBÊeèÞ'ë¿§?9?l ¸ÜJü×rqÍXðšyÐ{ä1âÒþšÞAžƒß9SïMºÁÉZâÚZìI˜ñ¶b夎y©A¾êÀYÅÙ¹è§öø4Ž|©îõŒ|B^9ò"WzŸL÷ñ¶#çzŸR÷„ÍÄïø+À½«×‚?à?]s³;m½Í”âà‘î…Ô{Ö…Ä·ŠÛËñt®^û«´n9ñ·óûøg=°T~ ùl­óGÙ0 ~În²ý™ßåÓ: ú s‡~ßÿŽy)?ã¬DžëGá‘ÎMhEùû<æ;ªu øìb½¿Ž8NyJ~Nۓ䣨_ë¦ùø¿Sнƒä>ß¶§}znpW÷1*¿× ÿÂÌ£î—lR^‚¸§˜qV0zÏq:r£8J÷LV~<Ò¿ù\æ¡ý‹^dëîˆ?K;³G‘/ÿ¼Ìƒûê!žò2ºŸ<¦¼6vA÷)ŽŽ~hB~¸4¾ê|e=þ’öÇùÀ×Rì˜ÿòŠÄ ùZïáóâËÑŠãdgñ'=¬Ã¸ð+\¬›hŸvâòcÔë'ÿÇ®´)®†Ï†üfrR þRó¥uÝäQ÷޵c¿ô¾\-ò¬se±O‰ƒ™¿Ù³¿Ÿý{[ŸÜðÒyeíS×9&Öct¯€ÞCò.·¿SÞMùÅ9Ÿ¬u ö 4ò=õù°K.ü²JâŒnø£ýµùȃüWÝY‚?ªuá&ük—üJÉ7rØÌ|†µ^síO3v¿£ÛöWû9õ>…ÎkjݬX~ r§ó·ÚçÕD>*1ßò© »X§¸¼Œ ÿºgr6ög6y ü“?¬ûó½Èk GyQÛßzøY©8–8Dïœé>=½Ÿ]ݾGé·îC×{Ê>ì€9œ‚¿³°Ë:_ õ ­sMÐþô; ¼ ó+¿Â…=µnhçUë¾ô*ñ*þ9~»ò(5Ê/ÃÇð­yÔ9í×Ѿ´zÚ‹‚ãÚïêAÿ¢ð=Bµ¾ßœu#GzÇÔ…ÿáFo½ø:-U^¦ýÕ¾«~Yñ r¥{¡ôy#ø[Ïç%È¡½Õ;=.Æ×F>¤y¼æjžWÿýËø_qâIp5†uS'lF/CÈQyˆ¶“ÇÌÃÿ©BîŠßDæCï¾èý©)ä©‚àpˆý2!â…bðÅß"ä"Ä :§Ø½ÔŽ¿{?Ë77rR ÜÄ næ'ˆ¾7h]à&ürù½ÈÃ4pIïŸè¾­×ŽÅ¿m`|º×Yq–ô@ëYÒŸþ±ðf:þýtø19Ö=öÚÇg¿Lìú$l^HÜ=Ò}¥ð½íp È…\k¿Ð ú™‹Ÿªý“à_ŒuJ~Vd±G>ò_‹~è~Õþcò û=:·às…âNÆ¥ûÔCÄ;áƒØ·@½È‹ |œL<>ƒxTyã*ø»5ò÷|Ĺȃö1åÑ®ÞákB¯rÐ›Éøoº·u ú™~W§·’_оãþsÔä_d·C|DÎÂØÕVø­÷ÿônC ãÔ~Ê™Š¿ùûxüc¬¥Ÿ^æYþª›qêÝrÝ3=;ÕŽ¢ór•È¡üÄ*ä· ;îà µÛújOeÑ'Cÿ'‚G3À‰éð½þnžú‘ï«vžgÈOc“Á³þ8õ ­ËI& ϺçCú¬ýÝõ´¯óW:—„ÊS†ðOý¬„O3í”0óóDœ9‘zó±_z¯]ïŒé¼@|Ò:„üVöHÁř؇ð»…ßW1ÿeø•̓Γë<‰îR>[ç™´uãÕþ:ÝG¬sY’³:ò†òÿsß Ç[cŸµ¯"ŒýÏEžÆ3/Ú«{àfÊ®£~ú+¼ÐýÜAæ1:ý‚>ä4À|6!ÊãTaÇt®Uû©f€ã’Ó‰üNûÚäU¤Çùøã5´«ógõÌ·òoÍ¿C^XϨRþûSÊ÷u¿ºî¹Ô}½^ø£s–5ÌKÿ½Lâ§ÖÀ¥°ÛŠtœâ.݇µ%ßwƒûõȵö­ŒuܦôW÷91üZáž¡½ zyÀ¶ý̃î/Nxð[™¿rÍz¯õX½ÿ¢}Oò÷‚Ô"ߣ÷Õôþˆ‹ú}”ëµ.@Þ·i_â‹ [®Âÿ($î.un¤­Å_R¾c*ú¡û´ÆÏÂ×ñØ å©õ.«;ê"ÞÒ»¿ÜÙœ)aÞ7­ìïF3OÛÁ/ám¾òÊ¿/kÿ¥îe×{k!p¸Žþו°~ƒÜáÏè\W!z wŽsÁ7áõä̇ߤ{<¢ÈÙ4Æ¥÷ÉêÈÿ(ß­ü^âDâqÚ×¹àð©9V~ZùQ½Xƒ¼­Îü(?ª}¼3éßxæKëtkó=òn¤wŒS~Ù&ŠŸñ‹ƒè{.ý™À|o Þé~ìþ}?ÄQºŸRïH»g<•Þßa'je'Á½xUÌø ~k)ú?‰vôNö4ôYïÔ!‡>üº8ëýÚï£wˆëè_hÉÊù‚¸•÷Êáƒîgè¿w ûPG\ã%®páWèoäéNƒœ¬nè>PÒ{W:·7•yp“·r#×:§¡ûµvø¤û?úß]z}%_$ÏË—òاÿìÕzãÄ×Èm ´y’=Òù«ÉÌ“î•PÞ4Œ\Äð‹õ®³Áîk¿ò"Óù{ùÓýw%è³îåþé}ŒZâèZüGw¯¿JpHù­ñð{,ø,ÿ®CøæoôžÒ$å °ÿÂ1+«S}ŸH=ºvsú¯ûR åO"w96àeþF´í‡°/zï¦nââÌÅ+/¯œïS¼­}çZ·‘¿®ó´aä1NÞ[ûæjkó§|½ö15AØQÝÿQ̸µÎ§¼Lñdy4å3+Á½9…vtß«î17ðWï"i?² }ÔûÀîÍ­œlŒÞÕá·k³@ù^äU÷ßmª<ñšæ³ÿ>Æ«{f•ˆ)¿‡žøÈé}ÌHÿ Z~ôUq“öËŸž¦¸¼Ó½]ÚÿÑŸ§ÁÎÕ/~ô¡˜yošƒábù¬À?”Ô>/½S‡ß_§xbmÛ¿RâÇ™ÊG0o“Ð[?§?bÛ3øgzÇ«ˆïiŸá¶è“—8Aï?Ó®îÉÑ>OåËu¿üdø×t¶-»Á{7yÏ0õF$ø)>øU^5½çY‹Ÿ¯ýa9ЧÀ½“©{±î$O&~ãGä(_¦w ð£€úOÛö·Ûúußw1ú’«õ_ìdr'Bç5tRç5t¯¿î»×{(Ú‡º¹ò²è½ò׌Kë'ºÄ^Õ_Ë–¿4þè~çôIë;^âGó4~ùWäó°W‰MØ—°óC¾¥–yÔ~ÓJÉ«ðAyLòbzOû´õ~p;£ûZ˜×bìöQבòã×”òýfü¯æNö`uÊLÙcü›:Ù'pZï±ê[É#?™O¼1Mþ¬òȽޯs!Ï:ßF^ói×}ô":W#¿ ø3šúõ.§î/ÓùMC<í¢þr›È¶óÆîøÈ/×*_Œ^U _uäy…;3ÑßRú›ÏøuVç5â/[>µÞkçuŠòô×û>ëoÈ·ÞnÁßla¼º‡¨Pyæ³”¿×½Éz+y¹èdô¼“͇tÏÑ$ìU5x·-räBŸ<â?ãÔ>&å¥uï½ìŠp;ÿr2z´9ú¨<Œò-è ‰cÛøÛÁò= Ÿüô«ÿ¥¼,Ãoн›ºïKû +Ý£÷qÚðtß×ìÙ¶ù·ùèWùô:ìM%¸Ý¾½•Ëvìv‰ô;¥}’%ð;€>‡à{‚qä£/Ú—Z‚½/$ß<“ñɯþy_å%JðÏ¢àœGvÃM| ÷Ô ´¾Íx6–¼+ÿ Îvª}æÍ(ŸLüW¾ý’ßDuoXåÅä5ˆÿ+у<äº\~ãÖ~­ä5–Ÿ³ß°|JúX—‘]Ã.kŠ9ÑúEñUz®û?ªÝ7 ýAô$¤õGÅá䤧ÕÊ[ ûô`*ó]GV‡ÿW…^D*Y"Þ^G¶üV<®xF÷mÎxeçcà•öËè~Ýc®s‘ÍÈUýѽH!øFO+‰C«ñ7•—(@¯ÊÑûRìp[ž;ÙþnîÓ–Î[ÿ|PÞ'ˆüˆ|øó³XϘžz°Ÿ»µO~T1’³ýÐ==ø EŠã‘wóW5›Z>j¿DüÖ;fzTï{F±÷pCû *é¯îÓ*&ÞË¡^ìn~VóQä9ð“d'ë‰s[ñ3¤aâýFpë ø‘ÜU¬ûUtÿZ²Ùò+IÞ!Œü+/ÄqGAìH$iù£s~zǨþè>R7ú£üâ–)øÒÇ0ó¡uý üìp€ö»ß·fÿþÛ–åçá÷Ȉ0ÿsv±åæ·†q4ìf?OÖý!pSçÓ¢ø½²§üÝë¢ýÚ.òFö»¸£]È1;ͳü™‹xÐSÝ ]¿`e~40®YäÉge[¾ËOõh=„¸¯{¨wàt¯[üªB=ðÁOÜ+?®|wc'ËÀ}WôÃ7­¿ëþƒÄ}–? ØÍì¶›zëÈ_UÁ'½Oк~B8¦ü~ ¸Ùˆ=i>Èò7Z\+K¼Ñ<á׳ßscÇtÏŒ›ñÔ ßzÏgGÎmí´íÇÎðUòëc~Á#½»¦¾.ð¹‹þˆ— ü¬ã{ÅÈ?^üm ~Ö}©Ú?æEµÏË͸tn¦yjçêÅ·š'½[)?¯]ü&¯è¦þ2øT€¿FÞÈçœÓðÇå1? ð§ƒßGÁsÝËØÈ|F#½·SG>Rûåu^D÷ë”ö½é5íñRO5|Ò;ºÚ/Ñ*|к~;y¶yö{Ú÷Uýò“—Ñ>Oí‹jCOÚþl¿_~”ƒ_%È“Îïé]`½¯%9«âwôWy„‚“Yçg¾ ~C6~QmûE>Byžß×½ð‘ ì÷b¬—éuíÚÄ<é=D7ù%½ß™€ÿ5à€Îéêü^Bù7Ú×»°õðQï$—*¯Âï*ñÓ4¾"ð?9Ëg#•äS'Ùú:šìxó‘Kùõµø‡AÚÕùd½s©ó8•ø“Ú¡}áº\¸$;§}˺:ŸøHûóßNW–¼€ö1x#àó¬ýU汘ö´ÿQ~W>ó19Kœ?y×úh-(†_SÃ÷ô>\ {Рü6ñ}XëÄ3ÚßãB_´ï,—vtŸêtâ«)ü=Aþ.B¾;>ÃoÓûuȃÎ+•ÒŸ–Å–Ÿ-ØQÅ¥¥ð©„ßkDï|™?ÙIå•äïi?þ äløUkÝ]çB\àH®Ö?Ñ#Ýs]‰]Ð}Uº'|ò£wü6wtNXﺿ+5ÄW!ø¯ˆC´ï7ˆþ4À÷Rúááûåèâøþ|9ú:q7Á¯¨‹õ,Ư}ˆFv™ö¤¿:wПZ.Á_RþFqzP¿äWè=žr¢s_ÒCíÕúÆ$øeçöðÑ[H¿J÷hðçt_»êU¼–‹<ˆzt ò[Œ]Ô=çÊ‹ë^Ðæ3$¾1NÝgTîkÝPï]#GZw×ýýçÖÑÛàÖLøÐ¼ 브[ï*ÞÓý8!üÑq“îlg[±§5ô·˜ñêU½s ï¦û’"»Ùq•¢gº¿Hû­'+Ÿ­¸|Ü=¨#Oâa<ºg¦‘qhŸ¿Ö}äiòà¿î=™€ß<¼/EʧØgöûŠC ùîþý{ðO÷!<öïºÏI÷•Á7íS\?M¸ƒ<éꉊ‹¦¯Ì·8üÎA^´ÿ1þñc ÑÓêi¹üůԺ‰p°½×½±AÆSû ë{ø¿•ô{¬äŠñh›ÖקЮWþ5þŒîsò+ÎüëÜ®ìE>ò7‘yš Ÿô.oý,ÆŸ÷áoj¥‹|ŒÞCÿZïÖ»ï:gÝH¾Gç³ußÿkï=à$¹ª{ÿQfAÂBB ­6ióNܼ;Õ=ÝÓÝ;MØ$mÐ*€ÂŠ•06ü=$K+ÖZàÙÀ#=Mx€±À&˜g²1vÒNv2ž{øß•þ¬8èò3vÃã úiš|6Ó×Oçk¯£Ýê?C®sϳÜw#·1ƒMëmØÇ…ùõ¡x{«Ð3´Nb)ýzùÜ‚<)Ñ.=ôÈ|ç¨wůèå^ósƒ?ñó]FNj=‡Ö1j}„â¢i”Ö?®e>ä×kž´°q½‹v•ÇRx½ŸOÅÝÞý~þw¿=›öÑz´ëþ»þŠåí¡Á>5Ê©8¾Z'ÛzÒåÔS÷YæµuÞS/~­ãï¢é׊¶žZø¾â3ª+®[™þ"=&¿.Ç8WìðÛs/í:‡[@ΖÑ7åÏH3þ(N¼Ö£ê|Ì6ü‹’ãCð@=µÿCç~h}tþÌÑïöЯwÓ“ô#­wÚ®y$ôçžÇ‘cþFëlÒŒ#«?Šß­«‡ÜT8íOÔ9ÙŠ Ñ _Z_•¦CßöëI~*­cÒ:¾Ë5¿‹>¢ù ­ŸO°n"A{ËQîÂ.ô;ôÙ¬Ú÷×üï–ÿÎÏ—ü\YúæauÎÑVê=WÙ;Þ{í€ñb+ò2C}ð×Ð7ÖÓŽö<‰~E?OáïJPî$åëÂÞìE>åñï 4ûïuÊ/G=¯@ïP¼Æ6üPÒ®Bnj½{Žþ¹•tû©Gé1òËêô¼¡³ïöøíKñy¥Ï*>…äv;¼K¸ñI<ËNWмü³´‹nìÝ7cW2h>Aó‹Ðït¾rí¥ü3ê»?ù?}í¿ÕyŸ}è1Èá!ÆïìÅ%ìÁîMÓÒð—dÜÓú·VÆ×ýøW®Æ/±÷Eþ}y‘FOf=Gi…Ÿ~+õ³ÿLÿïû¾æ?ƒþï½²ZLq•ÿkt;öþÒ.äczf+íg3ãºæåwAë ȱ~ìÃüä%ðvÁßþ,ã7oC®J>hÜV|ÁAäíý!Iù´¯©»¥”öóÓ¸Øo#”kµ>¤ÿAó¤é¯úõ­óÄ´ßOçÁìG®_MÿÚûj?]­KÕ~ÊaúQûi9ípß#~y÷Q^í§RéáIx“ßi¸Ç¯GÅUìB^ô0¾Km¥­G¿ßN?Z†}RDô1l%ýþ­KÁãÞ>æAÑ´®Zv¯öª?¥¯Š­u‹Ú§ÝÏø04ê_ûiÿŸôEvÓ{°çRØQIÆ©DÉ¿vRŽfôÇëÉï}~9÷wúßѺfÙkÃü÷ Ÿ÷ëQþܽè{ß OÈ—zPZëÐó[üò–˜ÏÎ#Oº°¿úh§Ò¿Zi—´/Ù‰:ç8ϸ݃ž¥s®ò¤«¸ YxÞMûV?Z^£yŽ¥è'ŠÛªuÖ#Z¯^‘d<À¿2 _ýwúõ“_è÷Û!ôðÑO!×É_å“ý¨óÙÒ³ñ;tPÞë.öÓß÷Eÿý‡±»yÞGþGH§Ôæ×ëJÚÅ>äõ>ÙÌ‹k=J7z[»=Ÿòùb|+¼ÙÞM¿—¾ÚÆ{ÑÛ¶P/òKuèýï±Aþ úeáÙøá3Ã8¨xx›éGíÈ‘vä™ü–ŠgÕþs5í4A¿Ð¼¼ÖAîäûâIç© oõëcôÅØ¿ŒOôó4þ&ùÏ4ŽkÿÞFôÀ”kßÿwûðs&ñSõÓ^FßÊ÷ïµ?hßGý|ï{ýš~#{<ÓKþÐûò¿aø_Ðgá3Íü@ ;`í]ç|j]¤üRÒëŠø ß!Áx—'ŠO;€<ÛC;ñðÿoà;6ð;¿zá+ŒßèIô;ÙýŒ»×úí¡9U ÝÑúùß!ù†ÕyÂòqz”üç:¿UòD빆ñÛë<í#ÈbŸ 3ž–˜Wn§~÷úË{{/ðßÓ|rJó”» ý±_z>zoá(öúOý½ùÙJ»kCo‘]§¸ù—áKû’ûiŠžR½ýÎÏ×&ü2Á9L|oùR¼þ ù׺eÅ!I ?úðÃîÄÞïG?Ñy´%ü-£_öùÐzS_¶•ü)>•γTœŸuÈÉá3±ÏWüFm´³4ãW™q_úÞzÆû=Œ3{Þ‚ŽüJñ}­O ¿eïoú±£¶`m§=¬dœXG~›™oØJ}^—Ÿ3K»ê ýh^_û]åå^òNç-­•¿ŠtÿNëþt>DàCŽõ!wÊØÉZ?­ušùçûEÞh~'ý0rAó6ø7s]G{Ó9D%äµìcÅÒ|sõœ‡‚ôzäïèM~º:ÏUqA=Æ™mè»’[ÝŒ—½o`^9!=ãÿräâ8¬$ߊÃs‘ìP¾Ÿ–~ÍsÅ/‘ŸPzÛò]ñ,5ϵŠþ¯ø-ÔÏzô‰Aüã²7tαâ·ƒyôë~ò3"?õ {^ñ—å‡Þˆý±ÈJü]ä'Cý(îäb×Gïòó!§µ~bù2¤öÎ8»zØ‚þ ùønøÓþŠ$ý]ûË6À¿ÎY_Bû¾ >u~§âBdÈ—òÙÂwºðÿ^öQì3ì­ÿ^o˘?Ñ~íKÈÏZڅα-üÿªýŽ ô9­C¤¿õ¢Çu3Næ§åïÞ@éB_i'=éeíØ­Z² =@û‚=‹ø‡´nLå×xœG¿j¥_”è‡%ÆËÍ´›è©›h÷Šóš†‡,ßKQÏè[íð°˜v°Œv´ˆïlGï;ŸvžÂO˜¤Ýj\öÒBúÓV¾“¥Ý6ÓÃÏÓÑ/›摛eO#_<ùEÐÓzhýؽèCÚG˜%2ãÔ:ù³ÓmôÅÇÑyš«d'Ò^u¾Šü=”o-í8‰^Ø#ÿ/ß]IþuNkQò•z‘¿}íQç²¥±×o;åh¡j½ßb¾»˜ú],}öötú¯âæ$±»šç´ƒð&¿j/r{ å^L¾u®Šâ‡(Nñ2äPQë#d‡"'´¿x€~Ô‹^ÑMûÉÀùRÿ{´×¤æµ>9¯¸ØŠƒ±Œñ:IýÈÿ:~OÊ—D¿È`Gj_â³þ´Ú£qMémÀ?×J=§Ñ;uþ¦Öù¯–Ÿ }Iç¾éœ°%èe´C$ÿü­Z‡ÜM>.¤Þ“Ôcžtþ¡â->9tí£UíU~Sú¡ü‹:Eû:øN/ó¨ùc“Eô¤õ´:GRç6#OÏIñh6Qixí§ÞOFçFu3^RŽäLá—ø“àezN;íPq¹WÓÿR´C­kJ ·\vwµ¿u1åÐyŸWò¾Ç¼ÚEüNû¢;ñ{qÝ.Ó<0~¤,úF3ýi íõrxº”ërÚâ²HÐ>Ví£Ÿ®Hº½Œ#Ýü^ûí ÌŸvo­WÑ~~Å;ÕúJ¥¯ø&iþžÅž-0Þ¯¢~´$ Z?£ó9‚ó ;™—¥ÝʯÙ} x”ÝØ…]øÑÓÝè蛑{Ú7¡øk—Ó®×CëõŒŸŠŸÐ‚½˜¤ ø®öÅæ¨÷uð³”ñnòo ¿—\×9QÝj'Ø¿ZÏÚC9ŠØG}|7ˆ¿@ù WùåPÜÙa±W4)C3rEç9§Ñ³´K£§}ÍŠ ¨õ’{ò+ð_h>^çPiÝŒÎMo£_u3?žÆnê†?Í3˾\Jÿ^F: ‘+ü<]rûIóñk‘û™Çù¿×øæÑÿ»±[Zx)å\B;¸‚þ¤sÝäö©p¯ùÊÞ<öó¨}”3C=è<á³üö¼™ú–h#ýz íCñZпß$C¾´¯ª„þØŠüÚJ»T\íËjGî·uÞ–ì­sYO¹o©^»ø}ŠqQzW3ïéÜ‹¥¼·˜þ+½TãˆÎ)IÒÎÛÑW2ȧ  üöò}ÅCÓ|£äÎ%ª'ì©MÈ„Ö-ay”_ñi‡ƒÚ×%=)ýexúrv§}@ÔÏrú­Æ+å{9z®ÎKÖ¸WÆ$9¹ûSñþ©§õÈ—Ò.?%ÚµÖ£´À_òZq«2èÝôë4ýir§v¾Šv¶ü.¦]zØóË(O’~“@ÏR¼?°äß|¾t®¡ôÃÚ©âH.E^M:Š‹­¸LYäsùꡯh}Q‰zëc\ÍRŠoTx§_ÞÍŒK]ÔËä†ÎÒ¾´`}9ò_ókƒè#ôÅ9Þˆ>Ñ ?:Ç¢ƒòé§¶Ð?;·âSvlNòNö5òx)ý0XŸOÿÑy¶‹èíq‘ì?ò¥u_­ØiÆñ+x¿‹òtÓoÛŠ£´œü^ˆ]ÜN;—_Vë µONúLþÇüà yÖƒIñQ Ø­ ÚI»âùi×zGÅi†,ó*ƒ”èBüšAÖ9Ó:OQû‚JË×.ÂN×¼ùÙŠœÙL»Õ~ ýoý$ð3ѵÿ]ç)´ §%i÷Á¹í²ÿ°3w°Ÿ÷ÿzY7züäâejŸû2øØD>äON0þ'ñ÷&ð3ôS¿åßÇÞE÷‘ùKŠ/¡ŸãïS?Ó9jÚw©õüäŸE~àßFÏ/¯ÆÏOýjn7¼Ï÷¯Š£PæïeùgÐ;¥mEž)>I–q'¯t°‡å7oWûBþ蜔ä3üçKåï¤~ÓÒ)g?ú¦ô—̧Ÿal”½…DrYñ Ô_ù,¿nã`ãÀöôþÊ`ÿ ý$K¿/7ÑŸ¨§í~þ›VÚÎ}Ôº0ùCúÐëóJùªÆÍ ø³?ð륀¼ÞB½–™×9¶ ôŸ­²[°×7Ò{4ÞQ¯ýÒ·‘óÚߦx™­²Ë‘?IÚÝ"ú‘Ö¦h7šç룼—“n‚q+}ØÎïÖÊ¿B;XJ=JžtЮ4.蜡®­ä†ÈW?|ª^ÿ¸øjx—C?ÝN»ÑüÊfäiùh¦½æ³~=ç±3w}Ã/¿Öûj^,s'þ ôj|”¤O0®'°Ã¶QNÉ¿Mð¡øÄÝ´K­wS;R|¨fù×èw+(G‚t®D^uS¿ÒOûÇV ¯uÒ¿²Ø ­ØSŠo¬x–WÒ>;hŸÒ‹¤$©'Í“÷s-b¯ô£ßõÑî³”»x óöèQ½¼—BŽoB^j?ŠäˆÖí–þÅ¿–Ÿè—g7õ ó&5ÞedÏ==ù;ä(Þ¼w!§Bç£+Þwò58W»ÂÃo©ø È¡È-_¥uŽ-Œk:ŸMvºâ/hh½æûÔ.¨oÅ3jGÑ:7ÉWí»OQþڧλּ\?úÊÈÓü÷˜—R¼­‡(Ñη!Ï´>ï›à­‹ö¯s6À×õ?B?º{U~…4õ”£~´¾Sñ†Ñ—†ŸÂøA¹ä‡ëúýòí~¹ò?D^0žÿÖÿ{NþIúQßQûO»Î?à¼Xô Í—i~g¹GÞÈxÐJzm´+­»Ôú3ÅÐùNÝè•Ú'Òoì_Ê…>¦ýiEêe›ÆOò­uä?„Oé]-ÈAÅE)ÌòD~5õíSÉoñó©õâCØ]CÔƒâ®m£Ýn¡*tNóºÈ[#Zµþ¥—ñᇵOBþ9 õ!›¨ï~üjŠ›¥¼:Op#éµÈO­ñ€~²9©}vCÒ“¢·‘Nã\ñÿ2oÌxÚ‹ÓúÏ ø´O3Ã}žzUÜ®òÍ~=”Y§ s¶ ‡5϶9©u›ôªÜ·üü'é§ÛÑÃuÞb ÷Š÷ ¸ŸÒ£×DzÉzæu÷›±G³È‘nìúõäOzJ+rá ú™âJn§ÈŸ(ÿ;ò®»&ÿ¿½ôÞ>Ž_"û×~þ‚óÞÈW?vWòWq!·“îÚG3íA~ ~ÚÛèßûßS<ú´øÂþÈ‹wæ#Jô·Òóü÷7Q®ÍÒw‘+›yOúˆÖ{Ë¿ÛEýl/W·óú³ü{èý­ÈÿßÓ9nëI§ÿìÕ/z‚â¦kŸQ ãøúÿbÆ‹õšç¤{àÕ£Þ ôuê³@;Ð:"—§öØO;H ú°¿º°›unŒ'»ŠôtžU‘ùþâƒþ{;ÑÇt~ŒüIò#X¡õCWùõ }^ñO7£ç(Îõ6ê[çç˜Ïè!_í)I=*n³â‘·É¿F½µ /ËO¨øû›‘=ØkËÈOêÈÇý~ým þä'Q|Dù/6#_7£V`ß!´>Bq<ŠÔO~>ùYz.ÇOAÐzWé?]È+­ Ñ:âÍè¯:7[çÊæ‘£´Çõð+ý!Ǹ§)øb\z¯ÿûõú>|(Žèfìÿ4¼eø~ó°ÞÙÈ… ýçíäCñ«Õ/uþûSi÷²;»i§ò»ô¢/.DË0žkÞk£ìäq ük?¡æÕÛñ« P?Iê==¡¸ê/Ýÿ /:g-Áßsô“.—ð¡õ:WñÀù{ï yIýÈÏ’ãû…ë±c(×Ðý)=‹~¤8&Ú‡¹‘ôR´+¡*Njþ°V~¿ŽñXq×=äärúI`ßÓŸ•¾Îû|Ï“¤“àýõÔ¿Ö 6çüòŠÇ§s° ÔSBr>zÐóŠ_Å>”ÜEßß\çÆ¦%Ÿd7óÝMäKq 6 Gš?‹ôÏ>ÆÅÑ'WiکεÑüºÖyK¯ÒúÙ´kÅ¥UÜÓnúæ»úÑû’ØG)úUõ¨öÞ*ž®„'íWM“ß`>öØjê9‹~Ô¥vCþ5ÓŠÞ»Bö¦üYŒsù7úïi?£‡_"‡½Xz…ÿ÷ú]=»{*ß݈žCŸ’^Õ)?$åÚOÈvSÑc¼¡lF>å¤/1~—£:?z„þ6òüÈo/¶¢W{ÒËÑßu™â"ähŠ'¦xLŠ_¢ñÎÃ?%ÿP7úLrLûK ø‘¤õ!/ y?¿[ÑO¿=V~í[PóÑ j/ŒsÚo\¦ßä_=Ø_½è_æCr¼ß‹¼Öùk:58Ç~70þæ_J{¡¿•ß¶Ñfü¥Ý Ñ>·a?ïØîßï`¾Îc’§“úHо4ïÝOú…»ðKÑ¿uÞ‡Îaë¤Þï[þ_íÏ!7ú5¾1Nh—ZÇч¼—Þ£uŸ›ÈçzÙ‹è…²§µÏq˜y6}[veìvM9Û‡|d^±(=ý,‡?_ó™ö`ÿí6ì’VÚ_ñóð„ÞRú;¿Þ÷2Gÿè†ßr¿“ñe„qu„þ¥¸éIÚ±âO'¨ç,õ#ûoü§ðKvKo€§õ\³»µEã'~Œæ6#?ò´Å×ëC>æÛð‹açµÓnýŸúÙÂ{:·Dz„'ÿ2zI–vY¤(nKì+ä\¿ŸôÁ^òßK?ìb¾'M; Î- Þ ÃøƒþÌoOª÷­”£;´¿bYß¡^G%î÷¿§}IÚ‹ÚηÝ×K;É#RðÛ¥þë©wÅïê¤=­F>öð|»m rRqgoº¨uúãX°NùÓŒ?d;z½Ö½–¯€Ê´;ä^á,üŒ”Kçö#§ò¿b¾Qí†|uÿ9Áø­}Û²[ÔÐ/ûèÚ§£}-Šc¬q¯„½­õk#Ø#ôÿ­ü]ójZ©ùqÍ+ä¸×ºŒNÙë/ñû+ãàBäA3÷ÈË«àKç ö3¾·ÊA>[à_òvqWûõÛå/â½KdOÞfî‡^D¹ø®âu+«æ—r„@ûíÁ,À§Ö/HÿÓ¹ìŠ ¥ýæÛñ¿µ ·ŠØ eôš]ôOïžå;Ò÷ËoÁÞ¡ÜÃŒ'ÔWãH‚þ®ýÚß%ùÙƒ¡÷ Œ ŒÛɨ?xn¡žtâßiN/íPzcýkð|øÅ—“?×&ÉW䩿‹WÑOoWç™WÓ|nþéWEì•Æá úc/ãSáýô'xì‡ï4ã§âÄ*Îõvú¥â° +þÁ0ã’Æ‡íŒ¯iüå÷¡GSÿš§W|ÙåÐT¾Á/¿Î‘”_\ýv‹Æät?QÞ4¾•ö§õ Š×ÕÁxÐBÿOòŸkŸ‘ô¦È‰õ¥óе§_ëXäßÅ$?”â,j¾:A¿‘œVÜí$ý-KÕ|v¯ônƃ,ú·öã¥åÏGné<à²?Ñw7¡½f{c¼¹¶;]zH†ï mÄŠ~\Äþ+bLjÔã&úƒüiúa y’¡|Š7» =múŽÎ-^„>æ!ïVð»ã@Šþ«ýáYôHŇMк±{ÚHõª}R‹‘«ëù{'ö¶ÎOÂk‚ñLç/ä—{ñûg®Çï‚üÕ¾éŠ[•¢|Š›“d<ÙL{mÓwéŸ:Wv˜þ¢xa=Ô«Ö}áÒþÌò¥„ýºžïn@éÜ2­Lc?hýšÆáõsÆï•ð± ù¶œv¨ño5ãVŠ÷µþYë ²¼ßBÿPœ"GÐB=¯¦ž—ÓµÏJçÈÊܼI /<æýr´“⃾|ѼSù›b¼+Ò3Ô‹â©§Ég'óIú¡ÖjŽÎQÎà/¹–ù:¾¯}=ø Ê[±û‡üz+ý9óX”«vœ F95?¬szu®…ü„mÈå-â ½a5í^ý«½_ñ÷RèýÝè•­²S™/èྟvÞK>[Ñ?V!W2~,¤µÏ׃·^üúJ'ßÉâ¿)¼¿~Ä ~'Q¸½ÿN¯üåøŸ63ŽnGŸ¼_¦ùjì¥~xì§^—Nqpº±#KòÑŸ‹·ùíºˆ|Ô~ßíòá7ÏЯ»iÿŠk­xðÔ›Ö•è\ê%ò{QoW"¯ÌçwÑΚ¿tÇ%Èkí ÍJ¤®¤?Iÿ¿ˆ~ª} ›IWçzv¢è<ˬêAþ>ü#:/¢y6ˆ_¼‹~A¾*nÈzÒÙ„kCni¿`?zyúL½r½üÛÈ Åë(|Éÿ¾æ ¤W@¼ÿUýKqîÓä³ }5¥ù%ú­æ[–Àó2äÈéŸÈÍ+iw€üöâ…è+:çFóé-Œ‡Ëi—ÁŸöh_âú™ÎKñÔÏУ2´“Aú‘ô$í7Hóþ þ©ú¸ìR›ÝŽœÔ:-­#Öù¾:/0ˆÃýrìúMò?G{/Ðn·ÐÏJÏfœâªy«ÍÔkõ¨ý„]ôcí‡×ü´Î{]©ýò‹/¤ýnC]Š×õ–En§d_•ð·ËŸ¤s6’V‹èÝ´¿ ùÒzéÉÞç—·µ}1éocœS¼ev.=LõžEî5iüÇÎOã_\E?Uü^[})ý\ç(ȾP<»í«ªýÒ‹òèš7Î`·(^Ožò&Ϻ7jŸ­è±‘ÓZÿ¯u¢=èIéõâ 9£r)^­ÖÛm;Š[òy•¿T~yï s–Òü>‡ÞÔÅ<ÕêYëMÁÏÓhßWÒ¾¶Ã“Ö#'©·ãà ÞïæýË(·üj½´Ç Þ²ä*òåÉü~í­ü«¿v"WåË¢ŸgðKdыӴÓ~¼Âýü%°ßRò¿Â“ÆgÓ‚\X+;WýÞû_×ÓŸº'Õ> ûßÛÀw‡‡ñ¯n"_ôçvú±ÎíÆÓø݃?z;zJ;}õ ýÔ«å×å~Ï_>ƒþÑL{ê#ýe²ñ›šýôšÑ{VK¾ÀûåÈ·Öqö¹ÎgÕ>XÅ‘T\ì"|Êo¡ýš,܇;Jç—뼯úÓfÆ=ÅA]I¾úx/‡½›¡ÞÚÐût¾ˆâxøŽÎׯ_?ü_èŒGÛåGCÑzIù‘sÈÃnxÙŒž‘‚ïð ñi í¸“v~ýFçL«Ÿ®¥ýä?W"/»ùûåÐþeéSK‘OBîéœáÍðQÒ|AñÚµ.?1‰<Õ9ríèÝò›# ä£v4LÿOá£}Fqó¶ —¤È·Ê£¸¶òÃ1¯¸=m%r(Ø÷‰ãbxÒy¹Š‹³†ç9æSÞ~ùúµì,ÅY"y‡|kAþoÄ®ÜU¤\ŒZ7‘c\Ò:áüU’³=Èóâï{òߢ?mE>h¼ÖÁ*Îðê¡„¿[ç/g±Ÿ7Ò¾2ø‡úè§Eô…ò;J;Mùõ±•ú’lýQvNíHþ ±]v~´åôíkTü!þ%¿\·äö¿Ö) ¬–_½=ÿ ô)êGz¹öÁjŸyýHzCFþ"Æé/:§HöQ/í0…^Þ‹Þ9D?L1®ô"=Ê/{Sþ­_l%ÿ#ßõó£}Òª/íÎQè¡Å›üühÿÊÎïùïíDng\K¢o¡ÝêàWíx ÏsÈ C£õNJÿïjþa¨‡ïÁ·Æ§Uè«hW[øný¢HÿM`$¨§ì¡Âþ}?ãF†õ"г8„#EûîÁ£}b:gMçò®#Ýfäâä†Î}ÖþmùO{èwùí~}ýþ±›ñd÷ó°¨ÅÃÖ|…ìÌnÚCþLækûÁzò³~®Â®Ñ>xðå”§_ö:zP+v†âo·ª?ÀCáEèQȹ•Èß•ÈÇËh:wÓCE¯H0Ž&¨×äGñþ½ö›f.õïuõð?àwGêïœ'‰ðHWñø´^wo?”üâØGZçÝC¾Š¼_’>„ü¾šr_}¿"évc¯hE7|ê<ºÂg}Þów1~ ¯é¼Œeòc“n+ú‰â|\†œ¤ýŒkè?ý”Gë@’ŒëCÈ í§\£y x{ ãÄzù ¹À¿ÄŦ<½ùÇüÖÅ‘‹;èÿƒôËB+ú9ü¤ÈâMèœØ|à÷Zÿ\ÜP=/Ò(ÿÂÿûãJ;¿ß÷Vÿý}ÿû=¨9¥s$ú(·Î+þ/üïÔ§Öƒõ¾ü®§_%¨ÿ–扊¯C/FoÕþ¸<òS¼ê܉¼ßFþPãÁZxÓºr­‡+Ó.»à§ ¹¡x¼C´«<óƒÈ¡}ì»/xèDnÎyƒW8«š'ÅÊ2®h_I0_‡>v9»'þ‰^ª8ÝŠÇ7òxÿ½á˪Ƿýèû}G¯—eüÎ#÷2ôËÂß1ïy¿_î¾3‚¥sDµO¥y®ýŠ—á}×/§Î±)¡g–w´?¯˜ÇΤ¾F¨Ÿ½‹ýt:hßò;¬‡ß6ìè­è :ÿ`„v”¢ß¦ð_÷Ãïðiô2z†â–ï’_½“~†œèE¾(žAŸx¡õC{N¿b¼Ûÿrü½ÈÙßÅ>OíûÛ÷6ÿwûîòó+=®¸›{镯Aηù¿ßÃx¤õMø!ûàAqæ¿Bþc¦ý„%ôÝÒÇüúNÉ?‚1@Øw¾ß®öb¿i½‹Öé!ÙåÚ/WĺãJÿyŠö"‚Ö‹îz.zùÚï»i—»)o‘ü+ÞFúžÖß Jß”¾A~öý‡_oû/õw93€¥Ìïv çŒ`—¬Çotà+þûÞì×ëãAù¿¾ûßà· o»°Ë÷ ¯Ž ÷ ÿŽü~_µ¿Ë£þ2È«$ùÐþæ!ô:Å O¡÷ ½ÄÏŸâ/x–Ÿ«ñÛl@´ ‡è\³ùÐ;†oôóµÿ9þ÷¤kßIÿ¿Pôpéý»Iw×»ýz؃Ý_$}ñÔCÿÔúË~úÕä|Žï@ìz½ŸÎu@¿Ç¯_º†þDÿAÞË¿q€¸ô.ež‘ü—sþïûhoA"½ÝÈñ‘73ßI½õ¡O¬“½ŽüëBïÓù-ð9ô$üõè;ŠK¢}ÃýÌãìýr~ªu2š‡êÀþiã^ñü†Ñsþy‡¼M#úé{dg¿øùÙÁz’=¯ð¿W@ÿ+ j¬â+ôðÝmò¡ìµÿý‘Õþûö2®Ó‹èçÃøa†i§‡÷>ˆiŸÉ.ß~ÆsÅ©Q8­;k•_^í}nypúf?ý~÷ãð›ÃËÈmþû£è »Ñs÷ Œ+Š{ÒEÌQNÅ¡“Ÿeï´ÿ+|Þv3OÄ…GOR<¡ýL{Ôžn#æŸ ŒÝ”³ð^¿^JÌw•Ð+‡h÷Úg‘Ænl¦jk åI2^(þºüÐ…GýükÞ­ø5ÿï]ø<IŸýŽ_K¡~ÙFz+ÐÛtN‡ægËèÉIìfõï~ÆÁô‡Aú™ñªôCä=ówß¿`ì5Ê—B¯\O½mDß(Ð_3ô÷½Œ»hϽŒ§ì½!ú‘âµíø²ÏËŽÏøéª½iÝö9ö¢¿ôð^?éË~ß‚Ý#ÿÒ*êKqÅ[iß:Ïì)ÈïAúQ?ö¿âzöÐOäÿÉPþ2íIû©VSß«ÐÛžÂßµÎc›ü¬îç7±Õog²ÛûÐJè{øß´ŸZñÕv>ůÅgèGŸ×¹Õ-øo´o-XÇ(½ÿXŠ~<òy¿>?-G{/ÐîÊèÝZO:Âø;‚þ¯sÏ3ò›3¤¥§£'õ0>j=SòUëˆW ¯Ú¨_S(ÿ—âøæŸ†ÿ“zÕþÐý\~ñý"Ÿ¢r­F¯Òz&­—Ð>ù-ÈüÇð[ÉB;éÃoXÂß ø2:_½;nôíøoéYúÖm4“Ÿ­ÈQÙ¹ÍÔc?ò2…Þ4H»ÝNÈÑ÷KŒ_ë‘ CŒ¿AürÒÓ~®-|GñoSü=ƒ_/A»YI}¬%}ÅíºŠz[Ç{Z÷¨¸t:窛~Ó&^úåZˆ=ØI{R\¨6ÒÓùHKéÇ‹©—Æ÷ÆÁ öºæ‹<Úy/zoñ,?ý>Ú[š~’á÷#òŸÂo÷i~zÛÐË×ÀËfü\Úªóç³È;ͯý…ßoÅC–vÜÇóóZGYõÿ.y¢8¾:ÏWçÏj_p7íOqÝr5vhúÔä³â /¹¤š'ÅñUûJÑO´_ ù7þüÞH}ªþš)—Î7VÜà§h—úÓùØIÍ«\Ÿ;@ûq È kÄ_ÀŽNP?èE)ÚíFäû*ÚSòH~­È£^Ê¡ý•ñ¶ÓÞ´¯¬Wv>þÙï¥'úé•зµ² }c=òGqÓÈ1Å¥Ðz6ͧ*®£üBËð«.B.iëÓi']ôó·JóZÈÇ+ñ·¤è'Ø +?ZÝ/‘îEüNû¸µn þäѾ<ün9äia9þUxïÞ„Ÿ“ö9”Å.$=ùíZ‘Zg ó–!W®”~Á¼R¹˜GP|iÅìÑü úT3ük½r‰vºÞ×#µµEã”ä¬Öà?^Ãx­x*‹xïø¹”úßÎøu%í.Zw´œüê<­ (G9š¢œë¨¥”gí¦‰qZë™µŽ·ˆ]¢xšò#ÊO_¤>ûà¿›ñMó…ŠK¤õÁ9\´c_ª}#Z·½ˆôRšF®Ž"ßO9‰üÎÑŸä·”?ˆzѹ Û‘£Ò7Ñ:èÝØ]äKú êg9ã™ÎwW\eÍËnƒÿ§hþ?fõ¹†úMÁó•ðÐIùµ_Xë´PqÂ/áûÍÒ·WŠü|jžÒc\½SÒ|Šü\èaÚ§Pf~@ë2<ôŹ~›±ë–QþEŒ=Ô«Æ¿|“_>Å‘Q\§õ%¿z ù,ÿ’~Í{šOQ\Díwkƒ¯,ã¢ÎÙÕyò«63~+ÞãÈÇ"ä‘Î?Ÿre‘×iøÖþ%ýø2úýòŸ¡¤ï/¡Ý.dÜ~ã¼Öͬåï½ø=ôm?bŽvUÆ_ÐGÿ‘ý¡ý“C<_ÚwÒJ»Ò9£Z§õ•W!ÿúè·}èÕeôÄúÕ&ÙÈ­§oÓúìæá 'žîÿNû™·Ð®§»ñ8üÖ9G´ÿv1ýEq¡tþ…ìX­‡ìaÉâ¿Öù“]È·EØ‘:—½›þ´†qDõ°„ï]JºŠÿ¬¸p:g%¡ùCúYŽv2ü*ÿ{½´Ÿ~é¡ÈËô;¿Šã½½k õ#ÞÖŒ“Ç=ÔίÔúyí×Kð,ý$OýʾFÞßí—Ë£\›y¯“ô7Ó{gºá½›zl'_ ÆSµ'­3Ò¼®æ//SÿÆo¤óÔš‘iúç•È”ìKÖ/4#?'Sçú\‚P\»VîÛ4îáÏ–ÜÊ!Gñ×õÒ~uþE{it ó´ôoÿùz¾«xY-ãÊ»ñ'ƒ}­¸9äÑFä¡Ö=öàÒ9sZŸ=òCÖ³À¯âÉèü@ÍOo§¿öâÇËÐnºŸÈ8@ùoXç“,¥\‹¶¡w-Ä~À߬sÙtnb7rOûœð–GR¼Þ¥Œcj¿:7~-õµtÔ®<ô=.Ç<Î0ùìÅ~ïc>Tû›Gßã_7P.íSü ÙOÔ×:›è³YÊÙ‹?¦ˆ=²QíÿTþ¤þ^é£çøùÅîb|Þ*½y¡øÚo—ƾÑ<ûzÚƒô«¥ÔÇRô˜UÔã6Õ/ýiù:€ÿ¶Cã.ýº ¹Ü=QÀŸ¹y¼ù§øûW¢Ï´ÂÃä¾Î7I ß*®N¿¦Ý«|}èÝêiÇÿòÿ®øm)úq;rZë§µ^GçÝ-éù²4®q?ˆwC9ÄS;¼ QßCø=%¿e_i¼ÚBý*ÎLÿ“öiµ0)^Â|g9ý}›ž“ŽühZ7·ŽqZóM𼽬øüQ¿¥~è×+áë|úÅjô­÷‘_\zžG¿¾0tvmO·ÿ¾ÖSê¼ÏÔG}£ï\¥öÿ«¨íwÍâo×:bÉS'”’Ÿy\"¤7ôg>ïCÔ{‚ô¥?t"Ï·ÒÏ{$ïÐó³øaå/ØN{ZW‘ÏEÒ#èzÞ#ýø³~>›Gµ>ú ôÅe¤¶ÿ¥ÈëÈ˧Ò>ˆwœÃñ×ð„üQœ©¡/øùîEþô¢?d±÷FÉ·â²&Iw~zíŸÔ9 Ò×Ón2ÈÁ>êc€v·÷º±óðï”ßëi#7ùß‘…ö®y ¤ümØÓâ;Ëx§v§¸`:¿Oëšám5ßÝ.;˜ñ¯ŸzïÇNÑ|l/åÐ:%­K/Üæ·› øV!wÖ"//£+¥ï‘NùBô=ùðÓKßBÎöQ¿=È5ñ¨ó65Nk>x3õ©sFµMíhvY}oñ?ßLû&Ÿô/\¢Ý¬§Þ†‘w#çÒNÐeȪý2Yʧu슧/=grWþù‹µoÚC_X«ù_Ù øAÄwïEØcü]ñzùnýw%ú‰äÜåÔ—ôígÐ>yù9‚ójÈÏÐ'ðG0Žk߄ΩӹΛÑÒ´ ¼’üi·ò­sìó¬³Ð:´þ72¯I~»iÏ´ÿâ°_Å›úCÿ»C¯Eo•ÿ ýEûܶ1ÞõâÏ׺”æ Ûiï[ЖÁÃrô‹È£NôÐóŸ{™7Pœ#­+ÌÞŽ?yáýœò2·"/W3.¬ Ýj?a3¼µqMÛ÷=ìTÙ5Ø¿CÈñ^ü#}ðšÃþ…77¢yFÉ5䣹­u–Ëi§½Œ§Š#YèñùÒùœZ¿ÙO=)¾˜ö­ŽøæÏ.ú¿‡s´Å©(a—+.FŽq1ØO¿üu¿·òýø÷wà×HÃWy™F>w¡öbÿõ0îçiWíÌ»+Γö]hK;üu¢).‡æK'6^¬ùxüiø¡²ð$ý4ˆëI¿jçÚB}ɬxCC'ä´ÎUíýã´ìî_ ÿÿû»~ä×Ï&ÙùðØžµFã>úVùY†Ý—åô룜öÿ.½¤ >‘eäœâ´Ë~…oùW;Ñcµ>(ý¬x!9ì>ì7å_çL¬cü[ÜZO½n']­ ¤=ô#÷6¢ôÑÞå‡W»+ÝìßËO%u®âæ¶Ò.4ÿ¤ó¹šE¾ö!׆ÿ{Ú_?þ¿ì¶ÝKýò+^k9µ™v¶Ž~-¹Ò"¹‚ž[@îd‘CŠs´‘ö§øSùµØ¹ø}oô~ú£ò¿ãÜÆ8DÐ>~­+ìÃ_ÃîÑ~Ê$rm­úùTœêí”çið:H;è¥Ýoæ¹âq-¡§ÐÊÔs~ùÕåÕüÓfäOž~DóÐÕ_´^´ïK~}ôÓnÅãnüV:÷<‡¼ØÎûÍÈñÔ†þ°šv2@¿àùòKv©x×zíÒ?úõ¢xZ»³»h—ixVœ6­sObO÷1^ö#r<×úþÝLþ÷Bë¶!Ö1^jýé í@~rÅ¡Sˆ­øÉ‹ŒšŸ¡ÞÖÓ>Z5ÿMz)ôò{ñ?ÊîÀOѼ–F}õá— ÿïÙå糓ö&½-œn£þ‚s_h7Š¿§ó¿ÿaþµÎPûï ègeÆß¾ûoýûÝß÷Ÿ§ÉŸâ g°›Ò¼?ð0ã zFá¿Ým§êœrÅ¥RÜ.ë¹ ½Lñ(ŠÌ§Þż­ä!z¦Î ×¼D¹­ý]íŒ3[ÐS‚¸´øI“èo»¥Gü¾_¯ ôæìúäD?õ¯v3€~wõ i‡´×ôw­cÑüÃfÆíhýxõæ—[çíý*úzx7z]Æ×'ä?AûI gF™ùTu~wѾóO÷y*2yõ«åI–q¶ÛïÇ“ÖÛµïf¾9×¾˜Çÿ¾ý2^° ½°´´ê»Þ?_8-O=ãäÞ¾õÓ½¶Ù/÷Þ_à7ÿmu;ØI9wùãʤßç\ȱö³¼ªz»ÄóÒûvù¼i¿eÂo“~?‰MøÎuø×®Ãî¾ö£Ur+ºüï­Ö·SèÇÄm¬wý†VÎáŽj=¢ô¥)õ•I¿s½¿@×;øÿ|ytð­óÃSq{•½œÃy•õ®ßðÊùþPêÓ;ˆ½~]Á×|»Ê¾ˆ®?ý²ZÌâŸÈ?'ÒñqÞyªî?MMgžÞÔtú£ÇoÎ;þï8nêhj:m¿ÿ÷3NüýBþ~þcÏÎlZpüzvKy uM¢ê.Yu×5v—¨úe¢ê—‰ê_fÆ~Ù6ÜÜ<öì±»dÕÝØ7» =ãîRw½UÏz+ÒË –ÇžµŽ”ÆÝå³·gGÅWNÜ_iìo­xïÄ]ð¬=ÓQ{öØÝXÎ2ùŠ÷Z™â¸»±_våòÏ2ݹʻ\¢"õL9?–ëÖ•¹nw7V¾d¶2/™LÕ]®¢–Ú ¹Öqwc_) WÖui¸¢>Ûº»Ußì«,m©¹ê®*…tï­ƒ©te]¿ãa¸}gU]WÔgk.›¬z68î.¨ë¶® 'ZHSÓïü§oõ¹kbAiˆ. G(ˆ$fð—ºä'ºlÔ·€§rÏMOÑ%á§NÏMMÑ%áщPMCRèãWïz‘£û²k`Ž=7ôn>Å*‚èŠÜ¨`âTÓúøeäFAîì4™ÐÉž„ž„#D&Žq5 I¡_sllui΂ìä ¦×ÃÊOqrzŽP˜èª¯¶<ÇüÔ%Ï΂9ö”Ð{Á‡‰š’p„‚è€k Uÿä ô$¡ :0q¦¦I“ÐgXr“ƒÐ“p„‚S§çNt?†î-ב1×O{ƒG$‰#޲ÝnG,ÄŽÌ_8"Ç 8âM5P æ¸..ð;ÒsY.Ø`ÀÈm`àÈÐo àÈä”#žöSça îÀ‘-K¢Ž¸Ñë 8â(3pdè7pD€82ÔÚ˜pĉj RàHc3pÄ êHm4jµ.烘àÈè` àÈQG¼ ŽLN5Ö-;B®#ƒTc×& D™ytd¹`c€@>;bšv®#“SŽDoh ìãØápdãCc€ VÑÞ D‘$*AXûsY3˜›nâë5}9ºlÌØ^¡AvÄ©b àˆ)äH›o ˆeGT!‚²Ù0)pD’Z·#C¿#ópD¯k ¬ÄpdæÑ@ˆ ˜rdµ#.÷ÆA(9G¢ñ;²|º1@ -;Òsh–ÑÞ „&váúG&@ë Ö„ôÀÎ-»ióõ¹sœ÷ ^GÖt9R½MÆ‘¼ ¨i™Í MÆEÑ@ˆ èÂŽhËŽ8îsôPåñP$ïpD€4 ^Gæs±sì)ÁwÑÞ D&™Oi0ëm N rmV¨ñ€kQ[YÃÐ èÂŽk Dh27€#Yc€€\GÖQˆ8¢´ˆŒh\àÈ0a ÌQ6‘#v®(€#*• ,'†#NQGìnG|;‚Zuĉa àÈD†A0ŸÛe q#ëý D±È Øî˜£%|Ç·(€#:€#ÞQGšzƒGaˆ8rÆ(€#¾×ÀĉoG2VSVY3` àˆeg àˆÃ@ÀSÈ@À'†(€#k© GÀ;l°Ð΋̀5G,2QGô:G ÃÆŽb¢A—qD€ˆ829åH›o0àÈ´²(€#$g q÷q8ârÌÑôü~e7@}ç» $oÀ=VÏu8bþ7´eG¼ ¢Ž(Tލ—‚ÁבQÆ@ÀmÙ@À÷£#FDc«ÕS8ââ6pD[6"ÔfG& D™œ2pd •#¶CƒGÚ˜(€#:€(€#† LôÖ%ŽŒ ¨ 82Yo àȤލ— ™ò3pdè7pdæ1k Ðm qM40p¤ˆ8âŒ5Hh8ì+qdAˆ(€#{—±sÜ"d¦Ð©YâˆÒ ¨Õ~ ‚1×b àˆön 0l q# B p$&G2682Ÿ{ꀾyLË;×@À‘ù\QG–rˆ8"@ Dq‡0` &0b q#ÛI DY{` Ðe q#3¢Ž˜Û¢ŽÌ_Ødý©Ù²d 0G}lâ̵w€#æ¶jŽXd¢slޏb œÌqÈvDç7pRàˆ^g àÈ6aQGÖéˆ̱ã;²ãÉ@%œÌ; 4.p¤±ˆ„µ‰Û€; Ø+äˆEf àHc30Hã`õ£#«} DÑë 8i¢ œ" ,0G…Ê‘˜i*A@®#Q[ DÙn àˆ$1pd³¡(€# ž(€#k Dæèšvdp1P v¢øŽDt9ÁD– 4pdãƒ(@tîG¦6Neàˆ^g àÈfCQ€. ™¿0˜£1ëH) œX¸æsÜâHìY•À+Û@¤`ŽëŸËܹ¾ãˆ+¦ÁÀ§qƒï8ÒØ Dq”ˆ8â(3˜ã¢tGJaà¤À‘ieQG,2QGÚ˜(€#.nQG\Ü ¨ 8âp3˜£ëˆæ`à¤À¥Ý@`ŽÞKG¶³¨7²a Ràˆ^g àˆ‹Û@À‘6fÀÀ)ÂZo<ÇrŽ,90pR0ÇyG|)¢sìøŽ,ó3pRàˆÒn àÈNRQ€9º¦wpì8¢×ˆÌq:ع“G$‰(À××9r’Nƒ9Z@XÎh\0Ç!Û'ª“G–Oˆ8â(3pD¯3pÄ"30'Fã€G,;QG,2Gj£Á€#J»#µÑ`À½Î@ g q#+u "sÜŸpd]Jc€ÀCåH3pd›°(€#˧ñíˆÌÑ j ó¹Žô\!‚ÀqÄCe àÈy¾Ž˜ÛŽ€9îÏ]Òw ˜8Òe •# žA°6Õ÷£#+Ê •#’¤1À7²Gœ¢ŽÌ<ˆ8²fÀ@À‘]-ލ"‚‰Ý9Æ¡2à2pÄýèÈhc€ V‘$¢Ž,û1pdù´û äF6jŽQ€”ÆŽ´±†u•ެ°uÄÓÞÀ‘E>"ŽÌçØF°S8â13"pD€ˆ8ÒØ D1· Dñ‚ˆ82:ˆ8â3pdt0pd¦#r¬1€#œ0XÓè‰6Ʀ˜•bMô©¦Ðì6¡¬™ÛëÁ|N„M¬Þè’p$õ‰‰N‘š2])æ“ܰ~<“ê «€}3HtŠÏ$¸Ê?ž]Z5¥^SZ³Kt&•9Çzž]…O1ÌÌqp™É—gò—šÅÔ4¬§æ–Öô<”tŠDë’Ÿy3Q{‚G]sKkŠåîóY䉉Ö7?uKš™Û§8¶`>Ë51Ñúæ§.`bIkè'‚Ù)0¡ƒ9*oB/éËæ³\­o~êvŒý¥éÌÓ›šNôøÍyÇÿÇMÇÿ¾ßÿû'þ~!?ÿ±gþ‹g·”R×$ªî’Uw]cw‰ª_&ª~™¨þefì—mÃÍÍcÏ»KVÝ}³»Ð3î.Uq×[õ¬·"½Ì`yìYëè@iÜÝX>{{vT|åÄ]ð•ÖÁþÖŠ÷NÜÏÚ3…±gÝå,“¯x¯%‘)Ž»ûeW._ñ,Ó«¼Ë%*RÏ”óc¹nÝY™ë¶Á‘qwcåKf+ó’ÉTÝå*j©­kw7ö•Òpe]—†+ê³­»;Qõ;ÊÒ–š«îªRHWðÞ:˜JWÖõñ»1†ÛwVÕuE}¶æ²ÉªgƒãnëÚp¢…45ýÎÿwúñVŸë9Ž–x+f&!&Pïz™¿qžŒºª³ÏË<æÕ•ëœÛ|øÝcö²¼†ê]ï!óç’þrÂÿ}rbõ®÷ùçÀ¯Áñ¢žOåúÒ“À¨w½7pÿç0 ÑÑÕ¸>3—ìÓ?cÎ_i`bõ®÷°ùshü›}^æ1¯®\]ì&?k.’Kú‹ùÏfÑ$g­óE£šþYc‘f=gþôΉ¥'‡!&Pïz™?“Ÿ1½:¨¿˜ÿ³ö"E2þM+§gs–ë3Í÷Ä%#.ˆ×i‹*œE]ÍcF£czžWŸN]¼i­¯ù…Žg+êìM‘NmY˜ÈðôãÓŒž–³E÷áäºÔü "¾^ß:#3JuòR Ng,Å œ9œt²À Aƒ 4hðÔƒ3rœ485œ''²ÁƆ.4eƒÐrR_s-_8¹Ÿg–« 48W8ù&5ƒg ]æcð¤Œ;tA"Œ=taá‡ÁØÃÉ÷148cèÊúƒ±†.ègc3} ÎN£§î°”® Î º  ƺ æ4hÐàT±h œ1tAÍŸ2è4œ<²KÐõ} #b(ÔåùâàÔÐ…5 #€åEƒgóÙ@Åva•ÁØC69Í`”A'¡-é?5aÈzuý d0ö°¢EuÍ‹4X¬\oä€ê3=t`òÑàTÐá8è‚'Ýàä°Âöwºà$18tazxZè‚Ø68tb¢Çà|ÁP×ñWÌr¹ l¦….ì}08t¡•X3Š=tA?3{èÂ*ƒi¡ “§‚“‚jÐàŒ¡ q Æ:1×1tAÍ78tÁ“n0öÐýÌ`ì¡ Ñ`<¡ úŽéF±‡.Ìîl$èB«6{è„LcLüz°‚!WN6oèÀÀj0öÐ…ˆo´/öÐ… ™i¡ « N€ûÔ\h%ÓB'Fƒãaܦf º]X¬2-taïƒÁ °b|sÁÿ`0ž°ÂoäÂ*ƒi¡ އûš]X^KX/ƒîÀ¸-é7è:tA8œ7U|#–ÎÕo[Ìœ'Nþ±Y¦6¿™œ;´=üC€•‚Éo¨ÁØCìùé ~ºžÁ °rPs@ï3OX9ëé@v Æ:  ÆVZ€ègã ]˜®m*¹þj¾Á °òÈb«Œ'¬˜áwa!ï´k±]˜‡48Vìwá Òi¡ {å N€–šrg:iä‚78V¶( Gƒñ„'LîBVÔÄ65-xôø‘|¿ÂiäÂæ¡éw9Ðïâǵ¡pWØŒ9\X>-t…ƒU°B…uã„+ƒ ž¢ð„ÞªAÓ®n^¡Êb ßKgZè‚_½1`¨>âŠÓÊœð[ô XÂÊ–:֢܅.HDƒ`…›Æ…Å:vNè¼ÁP{wÅw]0Πƺ0ÆÚüyì¡ ;Œça ²Á`U,³úOÛüy^Wã+^×(øšô›SL†Î'g“f™ʟ#ˆ˜»)Ò#{Ó~pòÖ3ê:“ª2³é©Xœ®ßή™T¤=cRf^1éér’ „\™ÿ2¨éÇ5™}y² œm “×ö´œÍ®3ÈDèU{*ƒèìÌ€q۸ܺ•  0`àÔaYA³K´¦Œ…•çÙÙr5½5Ç: ëƒóëµ0`À€ ÌL᚟ ˜ÝwfòVtyžcæ£ûNc«  0`À€ 0`À€ ÔDçRŽkâ`Š:œâÇ5M„Uœy¨±Ù}Ð5r 0`À€S ¬Aa>‡›Ð“pä;óP«êŒÜF® 4$˜Ouב"8€³¦ 0`À€ 0`À€ 0`À€ 0`À€ ˆØr/w@èÁj"×Z‚Ëä:²Çе/ϱÂ\ 0`àÔ1ÍÃRrêRQu©Þ9>ó™Ð5ذr蹎t 0`À€ 0`À€ 0``>ù–ÄšÜúf#¬Ôÿß‚Gÿ7ƒjžÉ_æ“ÛÐçQ#¨ÝpÞšíwŒÛ™¼>“Ga±·5TBMi0:¹³k™ó0.6<•¡“[_õ%wJ 1oW7¯Nô•ºôÂЇñ9Ž{§ Œ4`ÀÀ<G,úè4g f 0`À€ 0`À€ h 7¬Œ9ûåº8Ømâ îä0`À€ 0`À€ÂrbÌÑwÖÁå˜Iý„¾´Õ5rµµ¹F®‘G#rçaJ¢Á&æ“\ 0à88u$X%u¶ÆÑIê¢P0`À€ 0P+pD)5%¹‘kÀ€ ˜7P_ßr]JêH~bMîg=ÂúÎ<ÌÔ„^™süñ|V” 0`À€)€kæIt¥«¢«L 0`À€ æSQŒN3wä;S|yŽFÄì4üÙÙ)3yºM%5“ʬ)Ž˜É 0`À€ ¸ Òuu)ÎLÞªé7Sü¥¦"×”ù°>h`Ö5oÀ€ 0`àTó©ÎÎôp??5P5}Ѐq&–랟èIJ#c· 0`À€ƺXv3y«¦ßLñ—šŠ\S棫CMó»°ß€‘;ÿen3K}išÉ¦MC5å9º­Fõ%wŽÕkä¹Fn]v/ÖÔ¥8Ñ%]³qÌ®ë…ÎÎ<Û¨Ñ}rCJ¸NAr­\ 0`ÀÀIÁ<øç³3)WMßq ÔäBqÍ»;Ÿ-³¦ü„õãù¬LGÈuœÊ5ŸñNqrg·à!ô$¢{=,v 0`À€ 85A¬µåXg~€#Ž—ÙecŽä)ZËŸuhä¹±#·&aeäÖZuq$wŠÌ×DJXêA¬É ½€Ñe~Žß©K ‹ÜÆsÔŸ§øNM_+Œ\AèJ©#å2`äÆÔ$§ ¥&±<ñ;&–ëNnMß±1·îÀÈm``äV‚°¬ìº¸ª&‚‰³f³ËüÄïLñå‰ß©) 0`À€ 0`À€ 0`À€36+T÷Ì×¥ÂbyâoÂj6ó9qVk™‡VzýL‘Ã)È"ÑUTXi…UáΊe#×È5rOArmÌ”åÐÉ5` "0ëYšXSV1ʪ#×€ 0Ð ÖZJ¬3?Ÿõ3¾™¸PæÓ9zŽ|Ç€ 0`À€Ne`¶UƒÐ³ûËù™IVgòzMeŸÏŠšÏrEGîK–ë,t êŒÜùé_§¹Ž ýÑ•"¬Jˆ®2C§Û¢¦Ö¹aU¸³š•#œ¹F®‘kcn­_+‡®‘kÀ€ 0`À€ 4˜£§¢¦ï¸æ+ëƒÑU‚#.A1F® 0`À€ 0`À€ 4˜‡Y!1%·¦PÓ£èZÝ<”«.ß™‡Z­oZæ¹óššB¤sVå›<¹É“™y Ì¢kHoŠŸÎ½RçÐW¦OmúJ˜¾D‘X{7põ:“^9Ÿ¼…\®F欆 Ê&Ô8ŒÕZÔ8ò5ysŒ> õïyÆ—‹×Ð dtÕ‡®3Ooj:ýÄÎ;þï8nê8þ|¿ÿ÷3NüýBþ~þcÏüœÝRH]“¨ºKVÝuÝ%ª~™¨úe¢ú—™±_¶ 77={ì.Yu7öÍîBϸ»TÅ]oÕ³ÞŠô2ƒå±g­£¥qwcùìíÙQñ•wÁWZû[+Þ;qÑËüvè›g~ì—¹üÍé×<ý¯ûºÑ­· Ÿå¥_û“w~kÕ+½Ô£ç\ÿíOðR·þéáîõïðº¾ñÖßÞðÂ׵û¢'œý£ƒ^òß¾ô´žë%ïüëE¿Ý‘ö’Wž÷'w¿z…—ø«£oj{í³¼D±§ó]¿ù–ç=4|ç§þr¯çýɪû¾þįzžwׂÿ½+çu~eÓg–½æzÛ·þú¡¶Þö?»ó}ÉWü£·í;Gw¾òìG¼m“e[¿èmý‹®¯^»ÑÛºbã{.øÛ{[^±è3Wmû¬·å ÿüÙWìyœ·ùî³ÖŒnZìm>íÃÏüƒ½M÷Þ³à’¶”·éÜ=]qóAoãËžvæŽ_Üãm\zæ‡Ï~ÚS¼ >÷¢MϪ·akyÛKnXà­ÿJï'o}…·þð?\÷—Ÿ}•·þ÷:þÏ™ÜãuüÕ;ïxëÒ•^GáÉ™ô;Öxí?~äÈ7{oôÚ}dÁÙ}×Þþã·þ“Ïzm_î/?´v±×ö¢?øñºõž×¶êHÿ³Ö¾Õkýçç^vÖÿöZŸ÷„ýoÝ/¼Ö%ÇŽ~ñŠ-^Ëç[>qõÛ®õZî¿ý®w®Xîµtò¾ò¦¤×rú_¾´ë]òš?tñ¡•ï¹Ëk~þßýüÕ‹ŽxÍí·ýçÚ½u?8ëŽ þ¹·îæm ¬ùµ·ö—ù[þõœóÖùæî»üoí“nØ÷ïÞš7w¼ðÜŸyk¶üðïï\“òVü]+Ï<óAoõÁ¯tÜú‚—{«Ïúß·çmÞª×ÜùÙŽk×{«ÖÞòÉ#×~Ñ[ù‘öKýâõÞÊ«sõÈ_ç­ø¯Üðú®÷V¼tèG/úþjoÅæÿØúÖŸ<â-ÿÚYÿùƒïÔ[þ¢þ»·þô>oùU[þæý?}¦wÕÿó«~r·wÕsø«OoÑ¿ö/Ý~Ó…Þ¢Wýô´;›ú½EWoÏýì¼#Þ¢+žñ–<Û»òë…§~ê“ïð®|ý'{w¹Û»òúï§7¾é4ïÊu?þÅyõÞÂuÁçï·ð¯^pÉ-g½Ì[øœ¥/ú)o¡×þ܇Yç-<÷Myϧ7xW¼lø·¬ŸwÅšËϹòœzOÛë½=ßðž¾ø«ï¸ø£[½Ëßøè›|ù•ÞåË×~lÓ·–y—½þП?ïÉÿŸwÙÚßÃGÞ|÷´wÿú+Ÿ{÷4ï¾ì«Å×{—~ë’Rá½Koßý†ç|ð{Þ¥ýþ«¶n¿Ó»ä‘oÙñcï’uoØÞÙòJï©zý'K­óž:¼ýâ]oügïâÿxþ¢×|ó3ÞÅ/8úžö÷ÿ?ïâË^{ÇÃjóžòîîïþÃÃ7xOÉ'¾4ºàGÞEß- <íŽo{=÷Uÿó¬z-|oSnñÝÞ“ÿú㫎xOÎ}àò¦W¾Õ»ðßsg¾íá½Þ…/zé¯.¹Ó»ðÉOÈßwï#Þq÷ùŸøà=Þ_x냧{OúåßÞóóÔBïI¯øÂEù©÷¤–×>ïè;^âÿÉá·<ô××yç_÷™—Ýö©·yçŸ~ðüï?qØû½]Ÿ{ÓO¿rÔ{âkþôÇoûåO½óþÏ¿]¶wÿÅÞyg[pÕ…OôÎíîéÿýëïxO¸{í7Ó©zÿÀײ¿ôoÁ÷>øó¿Yü-oÁÚýüGÞðïq/zýÛ÷ ç¼s¾ø„Ï^ÿ¦¿ôÎi¿}dzs›¼³_ýåw¿ï…ýÞYþäÕ¯þÞ5ÞY{ÿ0ÿœw|Ù;óoÏ¿òƒgzg.ÿì{üßýÜ;ãåWÜýòçxgœù/¾ýáÇ{§ßüƒ²çß½Ó~üõëv>ìöüGÊ/-ßävÆ‹ßò¢Õû½¦?Þ]ní¼ÎkZõËg±îÞõºÇüC¡ówìYö¹uwþöWŸn{àá:;š¸íÏ‹¯ëüÍÑ_|õkoïüõWÖ¼ü¹×>Øùëµ/>çÓ _ßù«?>øëoySç#ß<ÿ‘w½iEç#=×¼bôðÚÎ_¾kÙ+6½û÷:ù”+¶6]rYç/îýù+þiô]ÿõO/~éo–ttþ—×y`Ã'žßùŸo}ÿþKÿuAç>åyïX}ôªÎŸ¿´=ÿÄ…_éüùEWë´OÿaçÏ^±åW¿rçÏžºá¯.½ºó§¯[Ù½úËßèüé“^üÝM¿Îw>ü²üú¶—/ë|øÊÑs>±heçCïXð¤5×]ÜùÐÖß]ýËÿ ó'þÜuwŽëüñ—~Úü__éüñã>xé9ï}iç¼M÷}úE¹Î¾à΃ÝÜÑù{àû+ò{:ðè·ÿéjéüAéEïYùТÎÛ ^ÿé ^ÙùýG>ýÆ–v~ñ«Þ÷¥ó:¿·ãÏv|ü´Î{ë¿ÞßËû{y/ïïåý½¼¿—÷÷òþ^Þ¿†÷®á÷×ð»kx~5ϯæùÕ<¿šç{x¾‡ç{x¾‡ç»y¾›ç»y¾›ç»x¾‹ç»x¾‹ç;y¾“ç;y¾“ç;x¾ƒç;x¾ƒç£<åù(ÏGy>Âóžð|„çÃ<æù0χy>Äó!žñ|ˆçež—y^æy™ç%ž—x^ây‰çEžy^äy‘çžx^àyçyžçyž÷Ÿ×[°«×&écÆ™¸~˜ë ýkÐOõ÷…\›ü«ÆesŸ4ΩßküÓø}øÆyÉ ïÒsÕ¸*ùr˜k0þR?'çù;ùœ‘þpˆ¿k¼Ò8èGä[ãm —HWãÆ?É+é5’“½ÜKžò‹¿K^IŽJ®J_“Ü‘~Œ»<×x|˜«ä˜äÔßÓ8,9(¹&¹)9«ñSò^z¢ä¥ä©ä¤äéxy¬ñWòUz¦ä²ô`üV¾ôœ÷}¾Ù¿J¿•^"½"Ï{ý|Gzÿ÷²4^JßÕ¸ÙÇsÉsé¥Gh<”¼ä*}ª_é,äª÷IWãk ×<À÷øî ¿GŽOÐ[úHGúô€ñã»ô럤?H/Ðx%=CãŠô¡Wé ‡¤7hœÛÇïÆëùÒÓ¥?K¯”¾YâïÒw¤ÿhÜ ôB¾'ýl¼ž(½Lã¬ÆÕ z×^~Çw¥‡¹J_ Æg~'}Pã²ôBé¯~Èw¤ßú5ù•>ÞËwîhæ=žKo<ü ÷ú>ùý*=ÿ0éÊþ“Þ÷²eÿÞq>¿#²ƒeïÉŽ8Ì{²{ø½ìïN~/»Xv˜ìçÀ^W¾uå}ÙͲ¯do&½ñväaò-ÿ@ìÓ¸òÏeÊØóü^öà—P9?Ì•ßÉ1ÁÞÕïâJzI¾#;Ý#}¿'¸OpŸä¾‹û÷)îÓܧ¹ïæ¾›û ÷î³Üg¹Ïqíáï²eçv/ù ìbÞ ìfÊ+»Zvv`wó~à§à;ƒï~¾øAø~à'!ùQäW ü,¤+?ÒaÞ;Ì{‡yïvÞ»÷nç½Û›¹’ïÛÉ÷íäûvò};ù¾|ßN¾o'ÝÛÉ÷í¤;éßNúw4é?ô1žKÿ üäCúS`O‘þxÿô éAÒó¤ÏH¯¾èWä{¼¼–ÞèiäSú…ä¸ôƒÃÜoGÒO¤o~ ç=é™ÒÕO¤ÏH.þ¬f¾Çïe?ÊžÔx(½@úžä‡Æ]ÏÒK¤·I¿“£q^ã¿ä«ôÉ·ñã™ä¼ÚŸô#éÒ¤7Jÿ“Þ&ý0Ð3 Üâ;Òä¿I?“~5Þn–~%ýOú­ô5'ÒK4®JOÔ¸ø_‘î5ÎI¯ÏHËëžßIï¾+½Ezœô_é“ÒC¤7J)(]~¯qPúßx¿‰ô9éKj!ßãwÒä÷3ú5ü6*¿Ûǽô4éçÒw¤—Jÿ•ž"=èWé{¹J? ô9®Ò{Æûee¿IÎ~@½Ï}àŸz€t¸—¾-»Izéx¿žô4é—ÒËÆûɤoI”þ#ýLúO‰t¥—I?—ž'ýZvNàÏã÷²(ùÕ8(½úŽC¤Ëóýü]ãÈx ìÙ‰g4îIϺƒ{ƒ²çîÈûWÙײSdwö,ïÉ>•½"}Hú„ôÙÝÒ=†ïó¼/½Hã¾ôBÙáãõ+Ù×Ò›¤§ó ”Oz¥ôGéO‡=Òy«òûÏÏçûʇÊËï4ÞŸŸ]'ýUú¤ô)éãõ®$÷Ò+¥‡ÍYïâ~¼þ%ý_þùQf«oó ¼Ì“ð~ØúV0ïEú^O>¤×Yß ìÙC²·îðÓoòÃ%O½öÀß­]p%ýêvñ÷5^O æ+x>^ïG•_t¼>?Þï'ý[zN0_Ãï5ÎïåyàgâwÁ|¿ô½÷ ÿ:Þß²÷ƒù(Þü&¼¯ñZãtà·àýÀ_ÁûÁ8Êû?5.óm¼ÌÇñ¾ô¾`^ß÷JOþo¯äªû·ø×»^•çwñü.=ëû¸’ß»>Éõs\¿Ì•rÜõ}®qý¥½›|ßý8®çs}*WÊs÷r®Í\7r¥œwg¹æ¹Žr¥üwßÀõ×çp¥^î¾—+å¿—rÞK9樂÷RÎ{)ç½”ó^Êy/å¼—rÞK9PÎ#”óå”ÿNÁY  8ç*гo½éŽ›.çì›Þrýí7œ,ς÷<´öÆ[®UÈœ3÷Ý~ëÍ#ø<î@KbmÅ£sNÜ=^pâ¶ò»?м¶£êþ_ÆÞy‚ÿÿ­êX>§q~üøC¿kj:ýÄß¿¨ŒeÊù¹ÂT 0ªïÎν¦Íú<ÔY-y˜öµ>ö¬ƒ×Î žuý³¼¥¶›¨¿îÍÜëhFÅ™Ç:­5?3xµÖOžÛ•èZ½0Sʯ^ØŸ©ñoOJôu¯^Ø•8ñïÄàa×þàœã°âËÓvêsûPõKsùÛãúKéÊüœ÷ØãR±|üƒíSýñ ]¥ñ;ɟΙò–¶¯—\yª?ž1¡.såñiMúàœÌÀtõpÎ8ÖgZ}Êë$÷ã>[Q ÿ—ùquœì›XñãþxòìW—d§ÈÊÉ~2>Oç„×ÎNJêI8Æ_E=œì'{;.ZI."•VrÒÔ¦¯³é^›­ääù,g't{üéÖ"Ý*…S1Òíùõÿ¯g¾}ßí2lÏ:pëM·>KÆM7^¿oÌ=û±¶5Ñj#ù ~Q)Ö·4}üø}·Ürëñ—o¼õ–&Âìþÿ0˰cF£bio3d/data/sdENM.RData0000644000176200001440000002625614707230357014071 0ustar liggesusers‹Ý} ]Õyæë}ï~½·ºµ‚;qybä»R™sƒíÄÆÁK9vÊÉÈ2E2ãD+eB…Ñ™²ŒÌfƒY%±cvHbv!ƒ‚ö}éVKÝR«[š~÷ÿ¾£êÿêpßrﻯ¦«ÄÛïýîþåû—sùÂ9_YØü•æL&S©™þW]3ý´¶zú?U™ÚLÓôcÝ7/8÷sçMÞžÉüÚlÍãÿ§ëϾ÷O7<ýQ¦á¦J{´m÷Îúû?Üjßµäc_ÉþÑçÒÆ£ÍÁ¹ÿýí_®µÍÿüµ÷yòŸmë§îîùß›?6.'¿ÚWGî8¾ó¶áΛ~6iëû‘?ü°ùÛû®¿>øƒÇRÇ—½gÅ·þÕvýñ¢ûìÏÚÆï,yôOÿÎfoŸ–æ×~Õvÿí±7Ïxy{zòÛÐ÷ï«nµÝ·+m6›‹ö_yá7mçäÄ÷¿ì¯õÕæ›‘ií<ïÕCeÇ×¼¾ù7ß¼žúgN^yáÿ¼wþ3vּǾõüêÙž¿]{îÿn{þ¾~zŇø½²á{·ÈÅvýVîÄOÙ®œ:þ´gýÊ°íÿ–s@WÛúÖ@1õ¼'wâøêsÞå‹GmÇêÀ¿Øþ`¹Ǿ'‡æ¢öŒ~~ïÿû™zRðgsb¼Á¶.]75ºö“¶éËÁú'§S×ï¾ýüþ3…ówoûýÙw5žeû>ólN3mGàÆÏ·í9Øû¯´í9­hþMÛöŸøîß׿ÛÎÿìϧÿ^ˆÝÿ€æºUÿ@ônà™s+k›§{mÝð{Ù;«s+n;Εïµã{=ñâ´Ï k;¦½Ê´+±íÓ‹9½¢¶å[Á¶ÿO‚…´ux]• þlϬk¦ÿ®µ]ßœ6Ÿ{ÂfÏÌÚ-?ŽW2¾¹ÿezYgße³X¯Öœù>}íô7Ú.|¯3‡öÜé¸ýìÀõô¾è‡ÍBŸÛƒ·çÙ*ñûEã«ÎyßE¿e³9mû•Ýf2¸ì3m'Ö­ŸwN‰ŸÉ~@ô! Óüì¯Ì>È•ò낟oέÎy¯ÙŽiíVñÂãô¦Çk Nÿ%ÛóÔwsl§Ä3õmË…çOÝmkÅN̾é¨ó™go·³!Çl•àÎö`§­oÝÔaÛ¸Qü}GW4o|ƒ{øSÛ‘ÓÇ¿mÜÛ ¸lì»òìÜŸsà ì|\Wâu~ß9ÖÂÏg!ÿL`N¶ÙQÑ×AXhŽÄ×÷ç‚§ëüÜá϶Ո'ÐÚK#üxÛ‹A@´mð× r°ÿÜÎÁy;Ûsñ/Í>Ïæ¤Ýó×¶þ we ?§ßgø½øæîíýf~¬õ»².ó€g¨izùn¶ƒ7‹}½Üfoyõî{¢ì¤‰>tâz;s^þóûìì¿Î þ*{ÆÏÿä=xâ´<Äf¿>Û¨Ó…N¿ù8=Ê®™ùyû{…ß´@¾ÄÁÎëEî­rݶïF‘ï¬É@1ì,Äw¼¦Ý©ønça}.†~ w0ø³õÐÃþÄnÚ âíͩ庶‹ðÆ.È3+úh&áçxþM9CzÎöàz:õ­·mð¿}”Ã-!Ù΋äzšÅþÒâwÑü@â»99\pÚxBø: Ÿ-àùY×´q9|MàMµb¯æ$ã…àN_#ì¿{Uà¨lâ~óy@m»ÄÓ´ð™1‰÷fXø©Ùо÷ØLÎ}¼wÌÖ‰5Ç„–]~m»ø‚­‡­‡_î†ÿ¨—xa¦7r%ˆLùÖÝÏ÷¿?L¶<´ƒñIò Û žÕýVà˜í»…_%ޝþ³këÇ_ÜÐo~5·œçØN‰7fòÛŠÇcð«™µa°ý9vñ·‰áëÝŒø&vlÆ…ÿØØq øJU@_ÿÂ=vIxjøÍìŸ'’Øf¬k›bÌ Äá&ÄÓ:äGðC-à ½R·1ˆcýàMñâ´m¢oæðô_b›ïix_޹™©ãï0㜯Ø>áo¶<¯÷Vá¡gŽŠ`³ÿ$„%û—IÄçî¯J£ø“ÁûÄïõý…ðÛj‰#f¸ê¡‡ÐÓú†o‹¿4'¿õ¾~ ~Ý#ç1SâÏò·ß¿”8Ñ.yÙ…¸ÑóŠøín©šaÄ»þŸˆlB]“úÐ"~Æ6Bþ³á'ë¥Þi냯Ïr¯û¥N‰¯ëX^ß&u6Û)úgNˆ=šqäaYȯ~‡yTs>^`«°­À;»ëŒ|¹uÐYË%/k ~¾È‹¯Ÿ¿“|ßL!~´‚¿wÂNk€¯IŽg|]Ö­ú5ý¨®ì?ˆ~Ö\#|£yb5ì+û9‰—]ÀÙ»,(7m7ꈷð'¶ ñ¶Cò^³‡ù;äÓ(yšmBÜ‚?Ü–K—¾«Ù¸Ô‚õnCž^‡øÞˆº(åÙ‚8Ñ y¬Ãׇ¼¹ ¼¿ùÅЇÄo,¸OøË~ÚüÜê!µôïðƒ?•÷{†Doêp½8O3ücì°ùó\œ¯›üN.Ðfå:Óâw‘öQ'úo3riã ákxjF‘ÔTF_ÁáË"…½š1äͨ£¥Ž¯u‘ñƒæ(Ö»v_•ó:g¼’>³qcüÈdP8ÛŒ!žîD}f£Äû²Ëu“.à; ×,ñÕL¡µ~»VüLùÖuÐ.ÔÉûo¶ÀŸöw ¿Ë þ²1Gú_‰ãkþaëG«Q'oÞiNJ=ÁA½¨ uû^‰×æd²ò´ˆ¯ÄÇ,êñM_þ1—8g» ï¿!u¼Nð¨ñO±ãk?j„üjo7[Å.ÌÄ×að¯Ôˇ†%_ê“þ‚9Z_á«C=®uøcÀÛ¹¶ÃŽ¿ u9Ôé†ÀïjÁã›~]ú´Ù«…çŠÇ/Ù*ø—ÃÈ/F¯9$<ÉŒƒo–ú²Ë?zP™ßjBý¶ ëP…ë«–ë+_øJxS/êÖYØk“ð>3}¬Ã#òK×?êý¶Ô©ë¿×Ëú›£{»ä¡ã«G^Q#þÄœŸn_ê@ýò€øm›AŸ¡ ïmß#®2bÆÐ7©Áu·oÊ_ò¬Æ‡ÐG½CêROµ Rÿ5ÛaÇÌÏÚaÏ5gF¾o†eýÍì(ƒã×K^dŽƒÿ¡o‰¯–õ ÄßqÔa0cûþ«¼®:ˆ¾ xsêpµÌVus}›jñCföÖ zêxRÝ fôù§íAPƒëí¥="~´Ëûfx:W á::ð½Aü>Ë~ûÙˆ7¨Ô¡¿Üˆßg/‘×èS…ðµ#®Õ£®ÒøÐŒx1(¿3‡ ¬ ö£_Ñ}úï¨5ÚO¶¡ž° ëœaßù~?ëÐßV‰§âýâBêÝÿ]üEµäæ°ä=¶ò@?±áÒGì“9Û|­<£rë‚üyÜÎÿoN OêüOÒwìÄçMÐoôwÒâw‘öÑ þlFä6ž¾A䕨ô_šWß³løæA¯úGæÌ¨"òN;ˆ¾ï\ø­Ù˜»O] þ.5|5âÌ$â| êxÝŒ¼n—ØcÙñõ¡^Û…úéœn‰§½oKŸ¹NêfRøíº}Ùð-?<}޹ˆ»³eÞ¶ƒ‡ÎùoÁŸ…¸0X8Âäõ¼­ÿ™gê¿Lêd}ð÷ó7 j@\jA|@ÝÈö}5¯8_4¾!Ö›„÷Ú3Ðw™ |ø¼ rìF¼™…õžƒ82 ö;¾Yà%Õˆëg ÔýnÉëz8÷„zÚê” P›}’¾ ëö±áãœEq³úÕпÝyÍ]°\xÁ|Øûê!³Ú‚Àig þ’ñ5ÂZÁ›ÚÇÁ?²’ç˜qÈ‘ßk@¿³óZ/H>Ѐ¹úLðgëJ[w;ücÁž‡Íb½ºÿJüß,ðâ“졎þ®o¯íÆü§“û’Ç ‚ßÁÚ9EÍ…º¸Ö>U?úèÏI ý‡ZÔ¿çB® 0—2û¨ð¶AøŸ>ä'Vø7çGº8ü{Á…æ¯Uúd¶u¢ì݃¾J×'1_„zp§ø=;ÿÑ·Îß‘ßͼå,ÄËþˆhînÔ£ÛpðõH|œ»iÀüÔ<©ÓÛ_Fßs}ìWõb®mþå’pŽvüzúۿЇü¡ü¿û ’ôÀÎz¤.à÷Ïèï±î2ršƒóÎç\òÎY‡ÅNæÃOÎA=d`»ÌwaŽhú1ð0ê`èÓôcž Ç¥ŸþÂwæ‹’ÍÆ|æì±ËÙX÷6ð‡ãÈÛ±^ÄÓ¹ rN zAÕ¾Æ<øÓÙà›­’¿Ù!ðAœ¯AŽwÊ>°¾-’oÛÔàwºQ®Ãb÷ Ìû¢Þ0ý.ø•.äÃM85ì½ë³¨Þp½]ˆKóuoÌßõ¢Ÿ5™ìü@Éþ¹J®×ŒÉº¥G?š1ômGÄO›cååw‘øPDZð&Wç½IŸ­‘|Ý“üÝL!žf`ÿ™t÷'™2wkvcþeýò¨W;6ëÞ[–z}ß!ÌìGy¯ð³yæ[Ì&ÔåW‹m}ka“èã¶ ^Ù ¾×š þl-üa=êªÍâß—ß1ñ󿤨­9ùM ~Œu<äÃ5˜'ª—¸dN&Û—µÕ¨—V¡~õÊZð¢jÉ‹Ìnô2+ö7˜)¼_•LÿÜDü©ÇœÓNÔï§`ÏGP¿ÛÄúði›¿<‰ú?ê¹f_¼ýN3!yE~3Š~åør½Äm³Mú.æ ¬³™Â|Óê͸›AU½:–ýˆfBx±Ù‡ó‚?¤]cnÒìÆüì$êãôa‡Q_=†ÏG°Û%¯6[KÛ§b&püÑ#sü2·¥4“³[ðök87Ò„¾Ò(x û ¨{?`¢¿³÷îÓò»H|ÇÑËü‘9޼ý"³UìÖŒp_ ô’uß*ØM-üûqøƒ#˜/G.,±þoŽÀN'Ч9 ~Y}{Û ç-ìÃ"ï<†ºHrÜÝAw7ô}³zq ¿~’Í@.Ç¥m&`“ÈתñšñdùbÓ¢`ÞßLÉ£­A¾‘~4H7Ç G$ßtú:ŠyÍ£ï¼ÎÖ!ÿͰo‚y#ìk²Â§ÍQÔ¹ÿ~²¼»sÒ»ÛÏW%ù¼9¹AŸlúŒu¸ž¶ÓÏ›#’ï™ÃÐçQୢ߀ß9„y„#È‘÷™“ yOüâÌY5Ó߀Ŝ€žcžƒ<«Zú~§â/ô…ó_£8O=ðMBÿöÃ__÷QÐß©Cÿ%??ŒþF ~W ÿz}¥*äY­ˆëØÏRóiñ»HûÝ&zd&*sŸ¼Ù ûGýÛ츟6.‡úºqu^頻u7û‘gÀûØ_•¹Os¬<û¼ø6Àî/x ó8O¶`ãéì£2»Á¹Î#ˆ¿»¤>jˆ0O‚Ïœ~R6|G9ß;>„ý4ÇPÿ¬¿z~||¶Zæ7Ç·ûS7ßaÌ]ìB¾¶Wö[˜ ˜o؃ÏÉc·H¾C¸ïÁ¨ð7ŸsqµAê2f#æ7 þÖ`ßÀ©çš1é³ÇŽoæO·£Î÷ ð’ͰæÃ{Áç^9&3*s"fsD;ñz‡ØSløÞ”ú¿9 9n¼Ë8øÏV¬ï[Â3Ì ®0þ÷ôà ð¯_›ˆgŸŠÙõ›DŸòüÉNä»õ8ÿVðô-ðC£Ü·À¹rèñAðåíð c¥Í›7áï¶a.i3òæsŒ{¯Ÿ‚×…<÷‚7ïÁu¾¼`‹$*f;üü¡âê .oÁõ®þeF¡g[Py ÔÉ÷ÂÏl…]žüÀ÷^Ÿz~é—ðc/!Þ?•Î}Ì:ô³Ø—yq„yæðÿ—ÁöI)¾C˜³Þ ~¹rD½ÞL"/zu¨à¯'ãÙ߉o3êÄ›á_Â>â݇8µ~õUîÿAŸ¾6Ùù@çÇ·!~3ÏÜŽýÒ£°— ÐË×_`?»°|1v|ocñvð"îŸ|¸Â~ž@¾¾õÏèKüëñ{8ÞýæuðÞÀ'߀üX7Ú\¯ƒO"®2ß;Œ¼`öïŸØ#©d|äÇÌs0çm¶ ¯ ÞŒ8~„uØÏnøõ]ëFÞ‡@ê´¿â×|yú4ÔCêÛfèáˈ¯÷aÈýMÈq+â$ý;î;e¶¡ñæú‚æš>êÝ[X§uàuo¡ŽµúùKð;âÙ<“þ|+ìýäñ/ƒ¿Žø´ ÄeÖ±^AþÊ~,ëJ¬î“ïñ~R®n4½Ü‰úÇ6Äñ·‡¬Ÿƒ=J>tJ~àÏà'f'q}¼_Å/‘ìD=æ(âñväWç~¬õ„ŸoF~=º qç0òŽ£˜·«‚ý‡?XYÜ}ïÊÆ_~~w¯Ô!ÒÆ·~î ÔMVUF_Ááûòß›¡Ç·ƒOýHâDêøÖÀþ›;‘Çß ÿ÷Dºy§¹þãûð/+ ¿ËðþÕx}a:sŒæbÔ/¾ 9Þ†õ&εð#K §w\ËÜzÞøÈ;Aüåú> ¿s#7"/yõ´’áË!|7A~k0_çü x*äe.þðþ3ð¿À¾‡?ŸC<ÿp<~DÞAû¾ ë~œ¹ñôi‰‡±ã£þ¿ˆù‚ûÑw¹r£^ÒORÞÿ޼„öìÿ19Nlø¾?r'ì—ë÷/àía_ì2øïËÁ7)7êë}ÈS¯…üoŠ'n:9ÝŽüæÈéFœo5øÑuÊ­C|§ÜÖ¢/r®ƒkJ»?‚YŠõ¥îŽ+a¯«Á÷¹¾Î¾Á³o®»P§çç÷¯ïÊâìÈéÓXg®ÏÝÐGÚ1í—úø®‹ëúcèízC»º úpMaþÓɉv©_s=‰ï>ð`ð÷>åw=ôó6Ô%îG}‰zĸ™§<ÝñèÁ_œPŽŒƒ”ïƒè×üò|ëÈïóxÔkê¯æ#¯ õÇä ÷cŠ|“z÷<ò^—qæeÔ3ïÆõ=y=¾üòdêáãÈû©/ή°N/Ÿ~?Ó'®'ã×gòbÚ3åEÿý ò€—3ÁŸY‹¼ãaä+?Ãñ(ϧ ·GPÿ| ùííIÑS‡<ÏÉú}ŽwäÁëxyïëÈ£@Þó ®‡þž|÷aþù„ÓÛLJžÁñé§ž‡^,‹·Þ”X|Ãõ¥'„ïèׯÂäéâ*‰÷²wÞ÷U6|´sú{Ê‘~ñ)5|Œ¿”yj;¢ÿ¼¸¸|Î÷j姉›rå÷ásÚ5¿Çü‚¸hÿ+”Þ.-Lžîzy|Ohß<þ•§ó{”³þ=×z@ýÌ3¹ë¿N­ù4y´>߽ʮ˜gпóxÄÅëÓzré;ïSq8¨ÿÔC®ù,¯›xŸÀºù¼Î臮RzÉ<‚úóàé÷ù¹ßÝ¥âã1íTÛ'ýëIÏ¡ŸCûz ýoðºy>æ›Ä§ÎïðQNôcÄÇud\¡žóü̃™'Þ‹8Íz‘^wÊKóaþþÈŸv@Üeæ#ûÊïŽÂî»]6|Œc—ÎôWiã ù?®7í¢BÖÝÙqݤâ?økjøè×h÷\oÆ ÊwQJù‡‹OXß‹UB¾êêk3û³‰ã£ß%Oæ:Ó_=‰z9ß§ŸNý.ϯïSüŠz@Þ€ëH Ÿ®W]¥ìùQô߉qõ1ÆÇ“ÑO_)7¾fþI{¡½3¾ñzB+’‡F®/yíãrÅK.Vu;ò2Æê몙ù|Éø(/ž¼BóàKï`=“¿'o ?àu§Äýçºß«ù yÆRõ=ò’ËNæíüsq8Ýq©_<ÞåªÎ¡åò}•7ó{:1_93쟗Î\GhÇ‹U½ˆëÌu_©ò‘%*¯×ùužúéìTç;—©~ñQNôÓ—*~K¹7¯—ß#NêuTþAýú‰ÊyüÕªÈïÿû-ˆ—<žþèê™zçøóöøxÿ̾‚ÃG¹1Î’g³>ôÌËQ¯ˆs úyý·ÎÖ¨ºç·¸nÄÍxÃïéþýÏÿŽÃßhOeçW”ó£éþ ¼ø˜©iãrøèÇ.Uzs}eàtýMÖ£X?¥=>rÿƒöÎG7U<);>=§AÇu¿NñÒùHÁøXoz@ù/ò¹g±o…úIÿ÷|™ò®+åuƒª¯‘'sÝØÿ/±¾-?œõ­[a/”+ûñ¼ƽg0ŸÍï­y_øØý3çÈ/÷Y¼\ÍyðûŒÿk±ñéx÷'¹8ÈøÇøÈü‘öAù1.Ó¹ù!ÅÇn:=)ñÐÿ]¥ê‡œ—¥^òûä=ÄËùÊ“×Uà¼w}‰ƒþ†Ç§½2ÿe=—ó2+”¼y<Ú¿ê×߸Δù:ùà*•ŸÐŽ(W®7ñÐÎõÜ%ò–‚×—¿×ýjÝWãçÔ‡•j¯Uù1ó(Ê“ç‹àõõønU}Χ‘ïë¹þNç•\]Ï!n>FÌ«;<äÃÔoæ?`_ ןþ姸?õŽóU÷@Nºß¥óú/ê÷N/O‡c=ú\Î÷±¾Æõ¡<9Wƹógq?®»›‡ÂõP^ŒóÄǹAægjîÎåϺ_J{æ|•ž'_ƒøÁó±ÎµFÅÝggÄõgÞGÿI9Ü9sž=-~iyêijø®P}­˜ëw%ã£^ñ‘~¸Ræ¯T}ÁŃÛfú¿Ôð-WõÆ/=Ç‘Vþq±òëz?yq9g]4>úIöÉèø¾®›?ï}¼ø”=8¼ŒKÔC¾Ösî ×oBsÄK?Îx@¢ç OïI¦Oãx'æ¦Üùõœ?í…|‡}17Ýo]ÄÅA]—#ÎÛ•=»>’â£wÎŒïqí›tÇWó(n5ÿÓsÔ‹[”Ÿâõ ÿ+åÅó®Prdn±ò7ÔGÚõ*Õÿ"¿Ê³îÅÇã¬Qù ñò‘vK\ÔCÝ'Y¥úÚÚïèçÝïÙ§¸\Õ±‰OÏ_éý"º´RõñôœužõE7®T~†þðÚ™¼Æ½O^Îïë:=ñSž+•iýcw<âàqÈX×Òöñ¬Ê«èŸÈ{©zΑçákÅóCøè'®˜io.§ßÐs–¬·0b\d>Cœ¬3ï“ç/SuµÿËáû¡š—Òý î{tõ„™ñÂñ1æ9nÿø¯—}%~ÎãQþ¼.î¢ß+s=´hÿRæ}³yãc¼ þU˜åíÿ¸^zî¼þ™Ç'ßÔóüô<Îõ3åšÇˆ°÷Svªú=<.øAh8çO¹®ÜçÀë!/&æÑºÈëòõ?x<ú úò{ÞgƒÇåz±?ócUŸ#~Ýç$âvó­Ê<)×éðåEÔÖ}™ÇÐ~Ø¡Ýr?åÊãè~åíâ”Ú/ô0î7sÓL{L‹ßEÚõ¶ÈúHâøV(ÿ\aòôÕ¿+¦ÿÁùÖ ô\á=éÞ:/tTÕuÊŽþ‚ö¬çØ)Ïe3ãUÙð‘1žÑoÑßÑ3^1Ζ©Þpª.9]¢êfwªý¿ÚÞ¯KÖŽ\|w÷Gb>Â8¹©üÒÕ›ø»„öý8ùé}Æ—*þ¢çó)WÆÿ[gòþØð-WõWmó þNŸ‡ó\”/ûÌctS×g(‡5ª?ɹ[ÆÿïçPv~E»Léþ¦‘ø¸njN'm\ß åU|JãótÝgöìû*>ÆÕËfê¡{_ÝW%µõ¥ý“G¹ûí¢E¼·&³À‹r£¿Ñý®»U}Òå)¢‰ãÓ<™vL~À¸¬çí§ÎçBüRß§‹qUï«fÜqóÝ í?×÷E¢=PNÌãh7‹Ô÷U?!n¿ªèyÅ+UÞ©ïæç”ücÃÇã.Q¼’üø5Ï×û¾õÜP‰÷c ÝgCã%_"­‡>ž­î'UlýƇׯó\®3õxô¾ êÆu™Òçã{(ÿÐ},êÿ…Êoó{ú~‹—¨|€úÀÇ¥3í,ïøÁãé×ê~5n½õýÁt>¤ó%m‡yÎ-‡Ž£óßëT^®ë z q«ºvè~ :¯Âï½ü€8µ½2îéëÿWÄeâd~ÀëÒö¢å«ïçÁûž¯Uù¯K÷ ùšûÆtüežÇó꾎^=ç¿RÙåÀ9²«fêoZü.oþW©ù‡¶û “g¨nVa8~ê¹[ÅkRçyí~±ò‹)é§[Ï«Uü">ú+ˆOíß Ý¯…~‰¸U=q|ô»zþZÇßýi–§·¾É8Â|NçÃôïê¾’‰áÓsò\gæZ~zÞCÝ7'vûÐ~P×£µûøØ’™ü"¶ø¡ãñxì7ôÿ+ÑþýÂxü|(¯¸P½VþÏ]×Uç}ú~à|]ìü•^Ç%ŠŸéýzÎNûIç©õ.øþ»ú:uñåË•ò­¯Îç \w}¿Þ½O.RøX—Y®®Cå“!yêóEõ?tJŸu‚¥ÊNY'f^A¾¡ëLÄ¥ã?÷øÏP£ó^ö ôúê9ÆKUŸd™Ò]—å÷t_CßWï·Ñõ }ÿ¸å*¯Ñù‹žSæuðõ ·êo†æ—Tæ¾n'?åoÓÆãʯ¦+?4¯Š)~–ŒOÇ m÷)÷iBq‘z$îóSê,š¹žn}ùþ…*^•¹ßâôGÚO«¼¸\sb¡þ–¶“U굎s ÷;CõXÍ7èÏu|§\U^˜ñð}?P_ýS×…c__Íó¢pk½Ô¼5¦¸â¥:^53®8|+Ó¼{q<þÓˇ}~Ñ·î:Ñ×]dÜtÇ[¡üœÊkBù¥ßûêEæs!¹h¿¬îßÒm7ÚŸûòš|û>½Ñ¼A_çCÚÏGÈ/ߺr(ÏÕöȾÆ"µŽº¡ïŸ ã¥^wÍG<óêÞ¸ ëWzÝõýÁô}¬}u¾ï‹£jÝC~Ö—_ê¼DÏíëüÅ÷ÈãòwÌ34^^ožzš:ÿ«¾ìŧÓÆ²í*dÝ]i;VußÔð鸠ãIþ>v|Qy‡öÿeÖOïü W)ÏõéþByÛ¯ÖC>2?ÖrUþ<1|”‹ž·Ñó!š§¬PוPâ)ZïÔ¿Ÿg=Ì{ü(þL~ªý§Ïèãç¹î¡õQõhïüZ„ ù-}mžúMè<úø:ÞéyÚ(\Ô_~Äï«ýN¡øá»N]?ÐòÓ|LÛîgi}Òq_߇ Bxh¤}”¹n›7>í*-ÿÐvYayR¨¾¡í>åûxó"ý}Òö¡ñ„üX™q†ü¿ŽS¾ùˆ¹àØ×W×I}õ]O¾’¸üt}‘ëíãz^(!yzëã¾¼ÄWßUrMÌÿi9ùæ¯|sB‹â]ww<ßô=jÞéáu¥Ú{ˆêã/UþFçGQòWø‹^ßó=ÇõÉÉ—×éuÐ×U ÎP^›/>_^á‰;Å®{è8¾úš>OÔúFÅË<ùRHŸt>è˯Pë¬û¾~ODží•Ÿo]ÕþÐP\ÖòÔuíÿ}ç Þ>Õ¯ Å_^°ÂãW|sy:®,ó¬O:ÏJ‰7åm¿ËòÓÓÔði½ª°|.nŸ¿òÅû”óÎPüðùÕ´òŸ?‹ˆe__Òuâ,ÓýÙòW ­ÌuðH|:þðý<ó£¤ì(g´?¤å­Ö#r}u]Гo…¾Ÿ¯Ü|¿Ó¯SâMÅÚoÚxòõiãòâK‰‡Fú?_ý1åýIÞ¸Vb\JÊ>âŠK±¯¯Ï?i^Ãë)Ó¼ed¼×õ?Ï÷Ççéëkñ:qýÓøÇ|¼Pÿ.fý,Ô.BøyDáôñeO=;6ÿ§Ï§q{=E®{¤_öåQüÞãß‹Î?|8¢äëÃáÃ[ ÎÈóûê/yö³"å•DåG‹=Çê_Få!íõ/Ú¢ô+êûž¼"2ÏÖýßñµ\ôºøòµ¨:§—ïzcö÷IÇß´ñäëÿÒÆéŸ+g¾~«Rå—6Î|ãejóW¾¸éóÛêý²ãóùψ88>ßœDT}7aœ‘ñÖWÿÓ¼!!;Š´ß|ë÷=Ž _žvë͇"ô¶\þ/d×Q¿/Ñ/EׇÃgO1ûÏB¯?îÇ’õÏ÷¾O~1ãô®OÔzEõßò]÷ÿi—ZNº¿àóã¾|$ÊÎÈøå³Å ‡¯¯#rn4fŸ4¿JO¾þ%m\ùú¿ŠÃ§õ·Òæ¯*LžIÅ¥Øñß<þ¾ìò‹™Äf…Ê5!yF⊊ÞP6ýKyÝ+…‡¦%¿Rq–K~ÅâLJNùþ¾lòË÷:<ß‹]~ùúɯ¯`|Q}¯(?Y¨ü•ÿ,Z~1ç—¡ã¨ã¥Åï µ´ñäëŸÓÆ•¯þU ¾?’:¾„âgâòKgÑþ¹Lû½ÊÍGʵ¾åòóE󑈸Wnÿâ•[Äu”MÿJŒÿiÛGRù\lø’gZøòÅ™6¾(œ%û¿˜ìLJÓ}îëODùÎ|óÏë¢ý_‘~°\ö”6ÿKO¾ö›6®|ýK¥ãKg¥ÛQ¥Û{©¼$u|)˳Òý|lü !œiñ¦JÁW*Îrá+g¹ñŠ3-|ùâL_δqEáLOδq$íŸÊÍÒÆ“¯þ¥+_ý«t|iã¬t;ªt{¯t¿Téþ³Òý|ɸ%‹³Òãf¥Ç÷ØñxÖ»Xœ•ΗÒ—/δñEáLWΤì .œ•Šü¥Åï¢3ê/m9O>Ç'çóÉçùä |òE>ùŸ|™O~O¾úÿö!¾qŸ,ä“òɇøäÃ|ò>9›O>Ê'Óê³>àžåž-tÏ>èž}È=û°{ö÷ìl÷ì£î™;ÇBwŽ…î Ý9ºs,tçXèαÐcáÙÓÿ=‘û÷ÿãÇ „Tbio3d/data/kinesin.RData0000644000176200001440000045460414707230357014565 0ustar liggesusers‹¼ý <–Û×?›g2ÏÃmžçY¸—éæLQÆB£„$"iPH…&¡’dТ侒¤R©$™+Sež2{/çüßÎóÿôž÷ùéyþù|:ûìëÚ{¯ûúîµ×^kïµ×Þbî¬ÁäÌDAAAEAMMIAEþ/ úJ  F4¥Ü²3bWZ‚ Í¢ï©×Sô;úoÓÿ·˜¯º·¿†§çϬZOEýŸ·‘z;þy«îºû¿fãuþk6Â7ø¿f÷jûxîø/MùEþ×·{Ô¼ÿKV#ÄÇ÷¿¾õÓÿ¿ þ_t£Ã#þKË~ÑÿW6x'š¥ f£ °ñ;4O±þ4ïš‚#שÅäoLÿ[íýÇt-ìöïöØõÇé2âle^þqºŽ5nk:Iüqº8•kLÒKœ.©hfÒ ÌáÓu 'ò÷ˆÏÿyœ/ľUøþüÓµn,Jµíùãt·ÌšeÐÖùó8[mïh#·ÿy~¾ï\PìþúÏó³•~·ƒ÷§k~*ˆ Ãöçqæ(V2 þóü|Gà}iYæ§kÖ;T÷ü”òŸ—>ÇžË[ÖÿqºöSöûšž þy~Þ-µcîûÜŸçg·T·îº?ÏÏ»‚v¥zÜûóüœ7.*ÉøÓ% èçâ®ÿøó8g,zÞþãtM múó8wjœ³¯©ýórãÍ6È*Õûó8ß·rÞnóçåe¨=ËŸÇ™(à¿Cüó8¹÷ξCõÏós˜ìþë=ç\QË3Í?NôÒ'* Nþqºø^ödŸ?s]šB`é?N×8Á*7îmܧKŒü*R³WíÓµ{k2O [øãt±^¥º’N{ÿ<ÎÛížöšþó8ßÔ£’­þóülUJ&“þ¼ÜHß|÷\£âo×7Âé¼=°÷ÜÆå†V±Éè÷ߥ‹è´’6ݰÞ›7W‡ùíÜðïý/UÉ=‡ Ï+€ÿrR}6óúoÓ~„ñSÚÆùùBsŠŒè߯Y7"\ù2k݆é8 / R¿³DL ɆÇ ß´jõV~üA·a;l¯xZ_xiõÛ8k oy¬”²q~f¦­ÝÁùÛßk¹VþØœyuÃõ[84ÃÜ’›îæ“-wË$7ÎÏ4?àF‘Ñoã¬uöÅzØ0]½œ'i¬¿­oÞzú Œ,߆ëY|>[ñûýklyï€âwÃã,[cBJ=üû8[˜Ê16LW{í©ñDy×o/!¯ÎæÖÝ Ï+@°"!>~Ì¿MÛÃwÖ¿áus°9[áy)ö·í}D=Î%&P®`ÃtuvNÿm;ð—Öˆ¶B®Gdê¢eÚ¼az?ë^Q½+u¬aÃõ¬ß}Á«mýmy…¨ ŽÚf—oçÔœ/6<þÁyw°0÷æàß7§Æeúmº›—ÔŽüØš´q~>¦å]u¡ù÷q¾¥³¦Å·gÃt5õ|uŽc~û{‰–+ªºmJ®guOÖx‘”úûr#®ÁP³á}\°4Ü~oËo㬼'ã~»»É†éª#N£Žæ‹p&<8ï´áõk „Ó· þ>Î:´»‚¥6< _Ͷ]ã·÷aÙ=…íô ½¦«±6ÕEùù·¿—p~‡_¾ËÆç‚IkʪßöWÍßOGy*µngÉ3ïÛ½5~géS†#‡Þ1nœŸ¯îº“ÿûüü¼p4fyãrãVÜvž;¿M×(΂OÇãýKj,6äÜpÿüÄYÆèêy©L— ÓU:èpÿ«:Ço¯µìiÆ–Ôo®‡§¡xYñûò l>¼J4lÜ8_œ:í0úÍæ·q–pÔ2}Ò¸qœkoÐ>úíï%ÝvyÛµá} ìÏU:üÛûÎ`|¸×bDõÄÆér|ëüéÖoã,`øâàç†éªPfÛºíØúûrce±I9Í~ãü¼öTÃÚoï[áVÜø&® û¡újѹû»gAJ³ë*ó_ßO³Æ-3¿/7Rß[<Û0^`eÕFÎþíõÀº*E=Þ°> „‚÷§çè~ÛáM>´]eÃt%sõØv¹ýö÷Úܱ’‰yÙ²q~~,_÷tçoÓ…óºÒGk6Þ¿ó¼MÛ~gÆ·ÃS÷¦7>ïË;j|1¡è÷ù¹¾›ü„_kã|µ%AÍ>÷ÛtM(†¯ù~¯Ú8ÎæE!W$Žþ.]ì+gÏ•€³}¦+màUª®—ñûü@æ.4}¿ñï=7Âë ½aýè~.ò¹Ìεa»¬zN¼ ¦C~›.ó®ìžWîÅ®'ÌW~r~â÷ù9 î£ÏM‘ïùxÉRÊßÞßÓ´ôÐϲ6NW–¡ì둩ߦ˚#O¥¾ÿ·éÂŽ+o! o|üzòç=Ïæü}œëÍÏV~Øø8Âu+K?¬ÿmàà ¾ kÛp=êågLã¾ÿ6]¢°šu¦O÷Æù9œQ[\Ðò·éšïœ}p/íö†ëYøã¿Êÿ¶#°Û¬¬Õ‰Ín¸³Æë³Yuâ¿s‚O£bö†÷c€pbB¥bPâ?çÃä¦J}çM€ÿÁõ6h€,^b˜}B6¼¾ æ ¸ÐEõOOzíÍ»÷¯çdZü}ml!BévùŸ/ð®dÍÒ§Ú0]Öüß—Ÿãû‰mDB„Þî_Ë›¦„—aÀ‚V*ë´ž('o´;lÛ8?3ð Ÿû©·ƒÅ#rÉC×Çy'6v4ݬ„üvUÞ[KW‹(—K÷—•2ü|nñ?ÇùÛÚõ}?¿¬¤üÔ#Øîÿ[yò¤ÙÙ:i-ò,OÝùŠj`o|ßira¾xýûà¦ÿxÛ~ü~À½S?Ûý¬¨‘.þßÇ]aëÊô] 0ÿ¼s‘úV!Ô?x^Íݸçf/±ÿñ¸+·cÖŒ ÿ´Kj0lêpúwºúë| ¸¾R¥+‚€c­rULã î[å[ŒXÿsœ/ž£2u9ýOÿ½ý”ð¯þvëQE*ü0B±Û=„|y;&Ùwt_ˆð:Ýìn¸éûŸÒ%O÷*<õâ§¼B(ü<ºÎèüÿá+ÑjûïI€#2‡dÞü›³W8D%Ô±S$ýÇûf@`zœY1ÝòO»ÛUžŒVfÿ;> H"gÈy°°pÔ s ŒäÇË`nÊ`ò[øÓ5ítßz*ûçº5ÚŒïæ³eþgοäFÂNyœVaz‚û2ä@Å<Â(¸7íQÐ|žûdçVî´éŸë1;o[ãMÙØÿÞžm4ügöΙò@¹€)X©·›/§+Õ¾úkµÿñ|MbSFÿàÌm^,ÿ¯ö0˜º¡lu;˜•>âöç¥3›ëjÌÀìqvïÃ/z˜±(<ÖŽ¯³J{ú¹wÁì–'•¹«˜:Ö¦³‹ÿ§Ü5‚\ðˆØ¿âÌbrL—ØØ„PÞ;´¹ŽÜ°Äêþ"(žüƒ=4:Nèû›üiZ9Ð;©¼º³‹•€áG¨ã¢ãc}Éyn¡+?õX„6úÐT¸Ñ¿ÚY`ÁóÅáÇ«vÀ©hÚ™þ+ŽA÷úlÀ½çÎúÊý«|¸eȦ åSúV¶ø®òR±zk&XÅ¿±kMÛùÎý1|+p÷ßq޲ÿ~Dô˜|°'øeéÇY×@%0eý|b~éÿ0ãl<Ú2&# b—ßIg:iºLÏPÓ~X,ÓqçÕ€0yÞKÇËÿË~˜|ÍJ¢1Š$÷» 3¨"Œ|¼½LØŽ5‰§^C4Kþ€Ü/|û.æ/sÂ(~%()•aÅ$QøxžÄ 9- ßھÚu³ a®P aøE@X®ìØ—Âá 8[w¹ÙúS€[a¸WÊ8°³)Ï:¸ÎÅ2Ç _ÎÇîM_Ñp/àêo.ï® \“ècå}€k“yVáb8Ýs©›gò7ó&é&Ẁ{²ü$åF)À™½µ»ãBgJz/~Ë~€.z±ÙK*¼#hºâÇ÷(LÔi’îhùΘTW€ã…œ¦LðAã!Ÿ+'˜°²’ÄDYB䇶sÜÈÚ>¬ŦÆZ7³“ÿþ³ òç–/“c¹äÉ¥H>ݰò{%͆óìäiÊ^Õp[+2¹®TC¤ÈÓÁš†lÃä.ÌT×Kž4ò„ì ÝmŅ䩨È>«è0r‹qþ •9;¹S‚­îÈ%/òôÍ1šÛÇ€<·]ôŽ‹¥yj/+U5yRU+OÌžp6ÕëŒ8¼SKD#àŽõ$Q ø9·íœ§úÜwÕõêmSÀÕΖs‡Vgþ~~ù-ŠëÓå/e'gÖÌñ5pÞ±d¡í­4¿´qœý Mé›{€3Õû±bÌ 8ìãͯkοŽ4`m…A£*°8yŠ3iº©Ù8µ°þóŸ\^öØéÄÑÜnÀ6¾«Ð¼œ Ø„¯ˆÕ mÀÆé즎%ÖÃÝ_H8°¥9•vÈÅöÙ½P´KÃ~§Ã¾?42Œý´²\3[i‡íÊm"Ï^˜Àö][`:¤a[9#ïNM`‡¥µ°L› ±-,[>¨È¤aŸyG\bž웳Ì}ö$/l̫녲cßÝ›ûzÉÛªfQžÜ‚mÛh_RR–] ê2_£Á²u@`W‚7XNnã« åÛîÛ33Ê`ùäzÀÍ-3`Ùã%𱬸2ýk>€åëí¶Eð‚å ÃTó8 | ²ˆY&ÁæÒ’·aó%õ¡—³°™|­}—±%lþÁ¼vVå"l~ÌÓLE- ›ïyä[/ŒÁæ‹ÜžGºoÃæ‘1{­'Ñö^*ÛvªÂæg—O»W›k>äš¿p„Í÷ýÈ¢1Ø·ÊlÛhø&°-|¾ÑûZ°ùA »ª(°u»¸¿žÓˆ'çºìëÛºí8þÚí\öYûTbà öc²/…¶j÷"ßÊp<¶\­Å¢ö;éX Ø&¦;A]^Ø'ö¤—¥Eéª;ö†*[ÏžfÇËÅuy% VT‰w$ž‚åÜ6þí{ÝÑçx¢ é2X>î4ªÜJ+ökǾ専Oê}ݲ,°b‰ÿ¤Ãg–MÁý÷ÁòM,ç›\°œg+<¡–ãÏG¬e›Ÿœüæ÷¸€Ö;GAêýSüÔã< 42ô0 _´=sï:èïá-Îñ½ú¡Si©ºã &ê²Ñv)”Î3§F Ò\ÿ“š³ßƒ]öaÇL“€òâ¡.ŽœãØå-ùQ²ì@»ÝI:hÊj™³Yð1­¶yC€§§ú:GzxîîK|Ý£€j¬mœ´í¬uqU ÚåÓ ½'FAûÉkéÑSy ý†í†Ÿ¥hßk0¤:eÚïzgqt9h¹I)ŒÔEÐ>¯°ãî~MÐn’:í[ÚuÒ„¨o­ ýM3áøVЮ)Æ+ïmí¢oý÷w ýjf0O*}Î!Ñù–»ò΢@Q rÝŸz »¶ç5Kƒ ‚]óŠ9ëq¸»²ÔØ€y[ ›ÝÎ&€¢Ðv¾UÊ(£#úƒ¡@q;95md»œrϤ^]È÷~‘ƒ]uÜ‘‘£Õ”a3KÜ@qDCÚïü- hÝ}“-c ðø¨uCðö6ƒ3ǯKi"bx·‚µçÞÞ,X×Rµð>>§n埼ëRa†©à¡kÚãØ´~ñÅ}\Ðòwm{¾¾¼Q}ù®õ¼mÄñ3Bé€'J)æhao® úÒÓ}~O‡r›/h^B­£«Í 6ÃÉY š—é§O¿Í«{‚£ƒA³²£Íxs=hVÍU£ËÍBen{®dÐÄ©½dYÍë9'$®æ¾‚rÒ+.µïä,àï*½®u2|UèãG'ç_ðrKÎ-?Àßòæ÷Eó¡OL¨AuqÝœÕ'÷VÝ0ý FÛnÔoÁ„>—¸q/ jÒÛ)¢Æè@MìÓ·Ù¯A]ñ‰n ¨êæÄcïÕµ+ýØý1 Z¨H÷Þv¨ñ…¹)©Yê÷=Ï”Á Ôè¬?¨²‚ubÁTßmŲŽçºõ{õpžálJ)¡.v¡ÁÑMÀÙQ°ÅEüºžmKä%ªÆCn% X©,Rb· Ù¨½ZF@a¶ò¢Ï EDDéh³(©bh÷‡ž¥ÂîÅP¼ùö.cT(–Ù¿Œ¶ÊÅFç'1ŸûA1éñŠÓ% VЭ*x刑½½«U8Aìa9ŸìVˆíÒ9ʶDZžÔ]K±Cüz2± RYD[£ –‚^Uévû|Hèš@#ˆd}ãj±‘…ó£m vñC xƒØãûR“Ž –Õ^ðÖÀ01¤èɳ(Ð=@ óµÅ/••Y=‡âqâ“@L=ŠW±ó)O lö-®÷â|Cb\K-Z>:[S~ ”ù Æ£@`»Ñ¢qI´»¿~”±þ—²´ò€_!b¸°e€Ÿã½ 8„Êí÷’®2+AúÙºý›2r¹6b« £RÚ~­¸¤=ž (í,™«›‹ÆÎFæú“‚@6hqFifÀbɽ(ÄývŒèõÊ€ÄIƵñ!u ³£üà ˆÏNÿú$â3ú{nI€ø¡Œ¸Wô þŠýªÐ|ˆß·>DóÄ’Ãqóºýë D…̯?¢Þ3Uvš Ädé¾aâ!Ý L('· 4Ÿ8+ÄÝ;çN…]B'bhj7DÛëBÝ.‘¸*;ÎâvF>üDÝnœ¸ÕmÞì‰1q¢ypwûg *3Œš«~‘áð2LCˆÆ™è †zƒHÇ™ëù‚@dìU¿I[8ˆêE=q_Ù[™ÛŒ^Ø0g`¥3®É¨mQ6ï”|) æQ&{4 0ö9O®›Žƒˆ‰ŒÅ¢[ˆ*=·ˆêQU\g=§!ˆÌ›“…$Z@”3ä|ªí ˆvX¤ê3½ŒkÍý· \¦37Qî˜X²Ë ?ˆ}TÌzìMRgE³£ëXî‡Pï³ØuKèH²ñ}gØÛ½T³€a>³sà ˆWÊݳ¾âá¶”[ òA¼J‘r{:ŽK×Õ+ \ëÕ9Û „ûÜI˜VTNbGKÅ€(‘(@gƒÊ‰ÏTR@L;¦Ì‚ò¯rD¤ê…U 2ìØÿ…E ­÷]nf: Ý<@Z;„ô¯Õ~òL@XÓï"Ïav0…G%_ÇKçQ{„/ÍÛúídðç;ùr_ þ¾¡.!—o˜û“HApïÒ¹±2üÝC¸HÀ{³sÎô+ø¤4G¯'Ò¿ä“°/Íc lxVþºð~xßÛ/™¼×STˆÖðõ•˜–.ÐüÞâµÀ;m3G~» ¤N}ä=ªÈRÛ $Ò @¦:ÄLÏ¢$%ú¦ûm@f êlrù8HÏ~àé9“2òµ~hqƒ”¸J£¾dWUÓN§3‚Ü ›‡=Ê ­ýÈhEº¤u½¾^ÙŒ¨o”lŠ»nËõ1I‰OÇþ&:ŒnLÞ÷@ß-€ïÞwçm"ª)«H¢òú,ñ¨è À_n<¸™D¿hߕDž`uQ„<ÿB*[^>òCå´\¢¿ªk;„U½os+þhÏ«ôM‚@À”’lÜÐþd^Wkü¢ñí¬7P£TÇ/!@Ÿ`Sü¤è¦Þ˜Ó¡jåFYD¨ ˜M”–frnùà /`¾þá’¼6P¶^™zÞ6â(à(}2B?ï L>Áî§Pý6ôúÜŠi 0Øe*.JôC…î æCv@•'O$€ì:;÷š‚œ{vÛGÛƒ ù*ûÈ=T>ùI쫌E‘‘¯š eïû ÕAˆ)Þé¡udvf\ŠÙ)Šß¿,(xŠ ;³^]:Hwžª»ÆÿäNšJ:ƒâ`úÖÝÅ÷@±HýbÍh)Èÿ°Ýµ¯ñ$Šëú:¿àƒ´¸Ú)ÀáÐö°êÜý5þй w…µ·þ†ñÓg`¤RëÕ C°Òšh >„²!Á\8 òìš3fbâ)¦lƒi€ð=íH8:Ï6Œï*”åÂe¤“æ–rž5kÒ`§.\ûâðc;v~U9°“î»AÃ\ìôÞ¥k³EiØIí¶î÷ñØiuj"sfÆ(ßĘ;[ñ8órÛ»ŸÏu`ײ«I¨‘;²ýì½Ý•W l7ÿTSË‚íûVáòF#ûî çò{_$Ï­Þ ±¼u9éÒg¹j/l›Ó…GANìUµ– H_î6ûhX|gº[ð" öíZñ)\½^z£e-”¥²ròéh@ŠñÉw®5’º¦†9Ô²µaðÐ5dwàò¶œD@†Ð'u¾z¬\þæg«C;~Ä·'ƒU-Ë©7#`yEùÞ##àc–Ô–„ÀJ=ù¡ÀÎ>°>Bh•î–7ÌBP}ðyzàðGt\œYåO}Ä$ÏÛG] ÀÊ¡²=öàßÛ¾šˆ¾4õð…ÄJÀ“¶¬Â0Õºx¾P ÔA·txÉ@IlbrZ‘©Qé#PºI¿N(*·Üåå~ò˜<¾Õ 9¨µ'/Ä ¶…òñv*×( Æ¯uXíçÇ>˜¿¶fÙG”®ì^{BR°kÌ…WÏœ  jã}¯»Ñö^'·ûë[ÀêB§DË$/ŒŽo;bo>æ—CDþugŒŸaµÙ"IoÆXŒ@0\ùjó+à#;Þ«ºâqqv«F@:Ï´•Tæ?³ùA(ú”‡°[ˆ;ÆF¥<À8~¸²¬b `HïH½Bí!_WábϤàlx+ìOð‚SÔgyÖ >¥`G·Dîz܇]Éû’ZQ†];âáÔG®zaeå³…DLO»ËͶ¦n¬ïˆ.%ˆ_3P¹óÍÛwdì~¢Ì½Ô® ®{eßþ† òå‘*áN ˆe,½|t›¤bxöдÉ]´Ï @hžË²y'—‘Wλ؄݈'/O–?ùl Ãâé²Ûz N{õ9’(O-s-ñÉ µíüªÙ-!c¯½Äo©jÞ÷gAòæ—cö?ô@PИÖ13Ä.å/)¼ŽI2€Ñßcæ»kŸÞžGõDšµsù5k }WÕEèš7Èh¿s’ ¿¢þÉ‹ÒvÇ?¶>ŽpöQØTžæñ¸§VŒÚo™zzg¨€˜÷¢®Ð!À“ƒ*··¡óåyÞ»äžA±^Qóð¨DjÛ D‘‹{SíœQù²‘£€ ùôLz Ùx±­f¡r]MÇD.Aºý-Æ¡A­”LjfžDÁRBgQ.Úê‹P|Õº¶¤‡Ð‘?ÆKG¶ 4Mûœ~\C¸Î$p ó° Ô9)=»¼­ê‰vÌýÎDqlš¢8¾±4ù‰#t mWÖ^§!ÔË!OŸ–!4 Ø™1—0„ax¿Ám¯\àþk¡€O5ð˜›^½Nìv¼;u¾¹ ²­W;ßmÏùr>/æ±tÞ·6®°é3~g,¢ÎúN¼ß?õ½Êðk[°ïeGOŠ öbÓü&Ú& ˆHéR¨õîÑàùá¥aà¼|2¢(î>X-®ïÓe~é {óéË(¾ ½!­`õì†~²¥R¾5›~«/ñ»¶¢vô¡ÕÌ€gå¢f8C Ä;Ç4òÈ©hÑsq=b÷Éû>€O:i=öˆwïäZ^ªbrïwר>Cݤɷ§¡üKnè‘gÍ]£žå¢|—3gãÉk‡vÖkó©‘Y·Ç>°C¨ÌÔêè›â¡òÏõm¯øÉKÝYNa-äþ‹£ö”?÷™°³÷“%P|[“Ær°YäÑÓF^ò¶”cQ3¡©5–‰ßÛL èìÈ œw®"”€‡ï{õví)³ÜfúmÀã¡d­*\ug+/^Ï1f‹^aSý6 jÈ´ÞNñû7‡¼8h2Žë3 Ïú"<À»"Ðøðl&ì§õÊ‚A‹]™~@È]ß0kbíö¹q@´–^½‘˜„íJqM>ê@¢é-ªè¾„+Œßõ€p€œ¦=õ#yªAc4`}'šWÿs?H[櫳YðÈž¹/X¬ÍíŸ.ËkžÑ;/Q!¼óZk܆ý,>s­ii6ZïšçC'?îŠß>ÇýÛtI´q¬×6|¾ÿš"4éåFšÔ¹ü{é“MOXŸúí8*¿M—xŽ8&ýìÇ‹ûoՉ㑠öëý÷?uSpߦ ŸKÿŸ÷ƒu럓ÄÒ2 Þ禫G9¬sþ<λ}êYþÛxØ™¿ÜFZ° nsš!bvØ©ìåúÄô0ìŠ{GX ;β•zvôbˆÿí[ùƒC3+vAÏã‚ì-5ìBwIº*ö×=•Ïñÿ´kðØú°kB$(1ØÅÎéèöx줶.¯ªyv5rݯOhê»>n5æ‹Ç”xù±+,÷»–íQ=mõ‘ÿ}`92Ýr`» \Î6˜ÐTØ©5z)z`‡¨ÄÕM›¦_å®zÍOm ¬òÚݵ( b{*vä?öG¤¸ïIØY‘O,2g›P=ùkTë ªÿrÕè ; „ø/œ…­@pxûL­i z?If킺m/Rêkò1[ç‘ —qå4T8Õøæ¼3F9ôg S)E¦* ›—5®$þÒ)‰V& T±dž]ý L^ëóo °4ªÜ×?çô{ÙßΚ”K|¹ÇåÝ0Zö~“Uá:û¡[Q@ån¹5àk0?ÕÑk¯Ö”ÝÙ–jÀ­›¼âõ“.“]Ò›yñy` _è° V«’y,;0sÁšKMØOmÓYaÍ>Õ`v¥`§¾z™ZŒúbûNíºÀ™‚içp(lÀ.¦ì6xó<Œ<~¸É¸¹ƒíÿnŸ§›æ…µfòÚ]ÈŽ_¡àvB~úó`GûJóœì´§åyÎØ¹Ù)§¾Z5ìàǦ˜²Ú 6­À—€äÚuZ0›Õ;¼’_Äñ"0ŸôH Var¥­@¬ð<ªøZ ·±iVöb@\¥oÆl3Ò¢~ØÓ‡'Ñ~2¯x|Åê¾î?¦hSZ ¤…2½:=i MZÕ,½$õƒ=ûR³@è[ª¸·‚ˆÓöœWv­ X™þú–®;¯è~¸‡¨€ÐåbáØ˜ã ÈûåóU>ð9~ºÅyÂDøv”ã›–ADù»õÝ„z|¥xaÏÏ8R 4Ñ^iv´µûTJ-¶£öŸHEzFÛŸ{_IlÆ~]wÜlÁÎ~ Ä>JYÆ.yæo`ÃvЙ`ˆì|‘nee«9vÚþí¥] òå­cl«rØa·÷zâmvØÉÃOË.ç’׺Çh~ÆsÃþ¨?ßÜÇ]‰°»=&Þ‚g‘<¸I;®o:rÚ$ HZë9ù@Úç8{ëå) þ`Ìÿ’̤=&¼ Þ€$œ)uÃ܈kåeµ¶"@tÛ'øVƒ $Þ/|m¬@òR†ÃŒ¨}âºäÇÍõÓ¯ Pd•Ó äc]ù”ƒ¦¹µ‹˜Ô.,Åkº–f}ø²û€ø×c·,#g“ÀK·àGâÇR.¾,˳øsjU ZŽerüQ ¢7Š7[}Éñò5"Ëê%À<‹Rw«ðŒdܦiM ž»iV;3"*¹´}Ÿ¡9cÄ~Mœ¿1Ì÷Øëâ&¨½í`)òÚ1ñÀ†wòRåJefB?$¡rô¥0y-$ê¨é-„rjˆ›×Öa§v1»{ë2j/íìâXF¨Ò­(öu!tK1tw…âŽZ¯ãéväµSÖeåÛQûéŒÌDr¥3BMG‡gb@¨CÉiÎñÍúþÂM Î׈\3¨âƒq/„P\èÄ;=êñMPcÅ ÷µ<;rE0> ˜kÿùpÉ/v×oÒ\ˆ6£Ž2-ŸO/ìâx‡—ã- >»Ú}ˆÕÓÝ϶²¢yÛ·;›@ÎbÝ2äƒÔ2-•Ì@¶%5ÎNÁä>tó¾iD@ö©]¶x!Ètè: Ÿ»2[_}ð­ør£E*·Û@ŽõQâà=mÝ3Í¢™ÍrŸ,Üæ2@ÎéêŠ~þmàøXÚ ²=¯ZŒ AN™‹T®ÒM^[ߦS•"¯Ô¼z>>^Hj1ÕuNJC(?hWtªÌ“g~DVÕôº“¥«L‹ûÆ=m”e乯pêÜòtëÙ&…Zgòj͉ kÃ$„þàkõæ%)òL”Vx¨J.yîõÍ3üiäÙ* ºi_òÌ€bY—bþ²÷¹€d²ÅºTÄAÊÛÅí'€ä‰Ñ×÷ÅqñqÄÓV7 FŸPšPCõ £«Õ¦›QÜ2V6}‘b£ã«·Õ`ÍÞ Sè­$ƒ[j]Có@Ò㺰F‹âÚu€F3*WÚÊL8‹Ø¾t¡8ž ·¬/÷RV²ñ(¯ (éø¥ãgN•ØÆÝ {>œC°ö¿¨zXXäÁAãÈ{}`#µ¾ÿKÂò°‚á9°¾|œÿ¾1úÜùbÃþÇ`]bû}¬I¬äï^ék#7-iñÏ`}Uº=Šg/X;”ä¿o£·üä·3Ê`]öv·õÖS`cA™¼-ÅÕMøî~•]`íùd÷ÊÐ$X«Ë5 y¤–øßòJëÂtDÞÕ\ШfI£¬s-ÿÏCxr/hüpÚ‘'ʧ,ﱋc:W¿NéƒVbѾ£³¹ uÅïþò*hímsúh5D5Rª9ƒ»å÷ø^Ðjž´Èç­ë‹ù(g@ë|÷3,×G„ý亴ÂôBˆó`xyò‡•W/_5ÂrIÓIT™aJmevÇÐ ´Ŭ±Qy[j™s9‹Á“ûÞºƒîÙõs»@÷C¿áô¡c ³'tl7Nt'õWäxŠ@'äìÛM;A{‘B¿yˆt°)|Ff§@O/¯&Ũtó/ó-‡9îégî{úOîî»O8@w'þâUÅdÐ-9=–'jºç ã@7½#.kU¡}¾¾nVIþq ÂÆ"]˜Üc9#Á݇PIIr~km#/?+ìõx×BžÑžä—‘#/oÓÌöŠ+ ±QKv^—€|äUB¨/0ew<&÷½ôcÀ¤‘F’5}›Y°+‡fªœÞób+¯›ÓÕ8bWºo'20œ[»u·úS`{~aÄóÀV©]–ÉF liTŒ$ƒ-]̳ôæ¯`˵½bÓ s°•tŸ² ¶›wÛªfƒ /æBú•V°­®Š½8 ¶÷;:yÊJÀ¶Èbúü¦A°w”¶ë49ÝÛ'(ÀFÍá‹A\èuþ½¿ ¯igÃ^’zÍgCs”¸A_Jù™RçnÐ×èÝ7P< zŠÞï¦úÅÒŸ¹_öú 3èÍÞcÚ®šµc·i_žRÙ›ÀÉÐï÷*Ê86úÝ;Íã_%ƒ~Çâ‹ÝA•Ø»ëç&pñØï’árØ_Ò°#§RÚ†ÓÈϪ\î-b°Óø·šå_~‰‹‡­_âÑî4ÈÅç‘>U¤AAþPÙ÷e;7û¯v¨S£TW{Ä·»·‘7)³üq»ÛÖÇáµö·ãüÇtôŸžÜòé_ϱ€~ô̵pÐ?hå§œúÖ42þçñ¸¦—±Ñ˧ÿW„Qù)æQ‘;Âp|eÈ£Ça¼œx\žrÃqê~ù›{Ÿ:ßýrÞàŸ÷oî<¸»l>æzZöl²üšoü¯¯o¨øúŒküñû¦Èó~µÅAžŸß¼kÕ ÖøãtaòY^Âoǽþmþæaóº2þç冋´W‚àÇ?söý½÷üÞ6„ÿÓ.B»{Èÿ^‡§6ŠŽC÷?ÇùÐÓ¸c¿ïó·q¦¿ü>.ñþŸ¿ÈÚÃ]hr‰öÓ5:™‘Ó=÷ÇèýÄ™¹ïÅc¸øÇ¿—”×BãøßÆï½é¿Ïµé›nŠp"U‚¾Ý±Cj Á Ÿö|榈3èˆ_É`š}ܪnø4è^z.¨;Õú&Òy‰Ç AßA·Š5Ýô¹™7”ßý¡½tLèó¿²=ˆýŸnwô\ý6§ƒ·Ö£zyƒÇä‹Ëźûd/ya4)äž yþH`ÖÄty6vÑEn5¡ßyéù¦–<«Æ—œ@PhZþtÿ"y%xË=Žp)„‚ñ­ïÔB‘ÍËh¬:ƒÐ¾þP äyW'ÎŒ#…äµW‹GrRIäåëB?‹~òJo,'ï°9 þϺèk~…ýó@ú ׿Ê3©~ Ä¥ŸÒm•{Ý­@ê2}Ö®5ÒwÓPûšgkϨˆÆÞ‹ˆ¨ íÌŠMKgiéLÝ]§% ½uìIâÒš¬ïv¦~ MpðJ26¢yUá.YGОgG¿x tH‡›«i›¬Æ¥õ47ç‹û|ha1Á}í×6¥2Ðf‹¹9È:æÛü®:´€ŽÔ²gr>è¨Éˆ Ô .…¡¸ÃGEСsK«N+{’žtÔŸÜͰ::,ö»pAÎGÊúBÒg„Çmy^a£‰jÎnBX—lS’mHçìÈSOáy„åô­,?š „KÙõË·v„½5r°÷èadÓÜg+éL„“ùÉnªç÷îÃZÔ7…\Ö¯·tB6!lwt£Âæq|%Xò"²éÔ±Ñ+ì ¥­;4lÒ{±[àX3Nɦî,Roîj4Šÿ ûývÂ@º'<ïD§¤êæÊæç€4SŸEák¤"¹®Òuü²Ÿr6¤Ço­HB½Ÿ ü]Ã°íŠØ4î[}û‘\¤’»GÎõ+ƒ†ë'Ëî Q6Ro³4Þx°{>ý½Šw”o‚†™ÍÝ¥¢ ¤—Ž» ꯣÏûqMÎ:²ØûÇ ñRcÄd| 42b•­M‹yGÛ… á.ÆýåÞÐøºí˜ ï}«¯Æ#+5Yý^dSþúA‚2d“ý^×h½X„®çiØ4ÍÂÊ[ó!aß¡ïkuaRšbg š@8¶Ë':¥Æ!ÌWwå'§ L‰3IÝekÇéÛG¤ \7%åŽNt L2œ]¸Æ «®ý\„ñæÙªö5„±~µ>tÍHtëûV3@"aîÊêWïô,@:Aä÷ÛÑ ¤@Êðá› ΘõUíûÄFBd¤e7·üâÇîÑ3Ö(¿Œ}|€ö[D;uA¤œ¿TÃqhb&ɲ ˆ_yÛÅ¿±µÓôTÿ)Pûk£Ô¸ê>‚ªÏBù_š/М®èfÉ;Û@UÛ¿"Ÿ*Žú.€æN#Í“&P½æ[òcTæÔ™;ŸÎ‚éä‡öú5PµÈþ6.  ª/oe(dÜÕ’«_g—*Aµ:ðM̧fDð¯ó=ˆ`±ƒ^¬l<Âuö¶z„Û„ÿã£c$ZT TX]& ¼ßœC¶ä Âò˜7 fSŸNΓzýS¯ø+儚„ïÊšCÉ’)"™$˺¦„ðZ&muóFxºw„™#ˆküQ½)ÈÛ÷o6¼Ôˆæy¨û&a§¿ÎÅ ‚eûr\üžªöùˆõÂé}Åï°ñõö`*DÀ›£Æhê"’Qqñ£(—ýªŠMá]Ù/•õh á1~ %ô£z—|ƒÖÏW%9oEøô¶¾gÇ!¼£u JÊÅŸÑ®í¡B‚@è¼RùˆÁÅ—$î"ÐÍ‹îãbèCºä 2 +ãd €˜nèJZ‘bÏ©š1^ Ò¹Øì‹@ù\»„sÖ• ˆÑYçª]nQo“â ;uÜõ†¢h²˜ýŽfúÜ?Ï´aˆ£¸`ö"f^÷3/)SW‹nx¤ ’m:+ ’ɺÃ9ʇAüýÛŽw>[A’™#öágü@ ú4»ÿs9H¥O¥ÒŒñ«’MoRy@JIKTê¤Æ½M]­†AâiÍQ'H¤j‡H_Љ\ ï—·Æ©õmöÚ DÒŒ®b¥Nì|µ_Rœ{O¼ò‹þá§fßÔBú„YsŠ8µâ8™• RÊz_¤‹èA܆;¡êS ˆ´å°Qø©/$Ô3¿teÃv7‚ñÞ‰‰|Šˆ©šìPÆ"‚å úµhD†2n•|bŽ¡ÄµÔ #âiúz×"®ýR_|‰ng²ó†õ2B.¦à¹íC Ü›ñ°ö|Xè•@ePM®ùDª¸ŒÁ”½îbØ/ñS€p¤6½¦å͆érpDé<ÈlNB|ìÀp@ñƒó;ã;m.;¤B£E­qZ°©«Øïu‹ˆÓ¦ë¯= ¼/ª©ioÿ0Ý¡Ržt'ãš;v}¾Ä)p.y®º¿â´/»7ZH‘<´Ys”*/éßly-Q$‰R­y3#RË2WÆÍ‘‡:8ØL‰Æ›ßaº®‡ƒ"c¿´'©ï·¶ØZŠHR¹HÉ¿D$2•XŸö¼ý§Æ]kÖ>V€Obšüä‚Ê•“÷Xñˆ^ïqŽý¼1ö|)ŒÉº „£å°[v;”ßÍÚ4á˜ß[*æÿ¸“6õ~Èr©o|¿‘‰Ø~u[Gè/¿¿ƒªKÉAöŸ¼þÍ“ „’N~bæp¼ RðKqS}éÚQTOd{Ðve!ˆjÆ~ªb¯~ù}œû÷œ¡¦ù'ß4«Z)þ¯ñ‚–úÐÊÉxg ŸÏ÷Þ#ýKu`mºqÊÒ&˜ÄÞ“Y j Iy5ÿ‹;¢µEm‡„ŒÇ?ùÃ¥ú ÿêÏŽHfܽ‘èÖgéþK<4Dü‰…Økî=ˆ„GÀMãgˆ¬ÈÚî Û_qËþ†p ýÜÕ6É(³ýk¼QT|¿Ýø-æ±õ˜_î¹OöWš“¨Ý)¼5ÿo"ƒ>]–ýå÷q YvôtþŒK†põŸñßòË> м8}#V hŽ;†íõn²Bdï °î0(â4nú§œ‘[™]Pê.ŸøÔò¯ñÙµX5± ÏsÿäoÊ«²_ôDjç ³ª¦>DTÒ±Üñn:?>ë¾î‰HÒ8—Èúÿ¼×ÁH9Õ\—§@0^†·Íþõž? œÚ݇ìTügoÃA¿ÜS ø§‰É‡‚õ­vÝœC'Ð%5&ˆÙ=_?=ý©O€ugŠ÷ °îfÞø¦õ¿~/í¬““úÏûöa-Ò/ñwÝò3&0µ 8·I­ÜóÎZEÑÎGÜ@%vMì5Å?8sfgLô Óô¯q¸þÁU@ØñéóŸ÷ñ!*OvUëÏýWQz•ÿšÓh•¤ªô@Ô¤žÅ9Äw rø’µ™Çï~–T9iϾ9 p ˆ¼ÌöïüiVÉûòç=U@”?V$ùæ—ù ÷ìœ ôÀV½÷êZô} Ú••}„€K=~Þ ¶&G„aKØ*RO8Ùÿëùò`÷زmÿÄ‘\¯É+¸ö ]Ž}z‡s÷§~ÂÝrÀ[®—æ*Ôܪ—}÷ùüü.`Lu|)Ïôö5Èë½§ÿ³b³J ÿ䱊 ûD‡~•»ü/7íhxH~iÔ¹ˆ¨«M¼#Ëç JSsƒû~Þ׈H°áU @Ä;Ì8¬ÿuŸHNÍJ·{ÿÁ¹3úŒä¼ã¯åÔÇH‡’ô«êOù€?]^tFN+¯•[y~–³Óyívš!F[¯\þWºôiñÁã ÿèÏKÉL=eÔ¿Ä¿z¦ÐLJ3ûŽÖ“ˆ÷ž¤ýdÌBç_Iûþé]NµÔ…#´R¶ôä¿ê#ˆüj§0KæãøöˆX ›oú/唟'/¸Ôò¡ú56§KQyÓüT)ö ¢pؾbÅÛçŸþ;16<€EdËYÇ6½áùwœ§ë÷ûþ“w:pEÖõ—}q -MÛQ^·ÛPáÅœo€×=⪢½HG=G œÿðsXè­sîM`p»ØöÞ¿îï€ï«£Ž±¹ ÔÿV×ÀɸÏ_Ž=ùËý"€Q‰å‘h^þö«S;GC@†iqšMˆÄó·Þ¡züO{ 'ÄÑ€¿GÙç©dZ½îÇýrÿ"“ÆîÍÀ÷‘d=Í7IƒÈb¾‡ú—üßQݶšã ô‘“µßÚû¨îÂdmÏݨ0ÖwxÍôηS‡E^ ²~â#!TžˆlÍû5äݯøÕÄÝl+&Ÿ«*ëþÑß 1¿Ø=@lìÔŠV—ëJ­·éGP;Rù Ûh,.[Mñý”‡`ý¢Fé)ë9°FŽVÖŠº‚õ°­oÞêÏ8à Ksan¸©$òV·âsèAÊEÓÕîf`BÒHU»t@ê™Úò\ѵÊKP{$6  ­gJ΃ÂôAk ½ è}ºï纈;ñTµñÂ/ |AÂàݱ#ÈODîùèUwDn||0Ã<OÖ{à¯*‹Ègz>l·y(û«õWÄŸÿ‡Ÿ/»›v ò3~—{œ²Ç]L·#*­[Þ\zòÏx‚˜'Ó[ºf­¦ª^D¾ïžÄ3Ρð½Á¤}àÐ »Zù‹8ÁjMh¾ÿt*ÍǪϰ/)™ë»ïWÿ”Wó6W¹‹>Ç-•• z[”®èÒ­6 ʶ7^üǯŸtéb4Ë,ÙÝtù̽ž Ï¥ðAîü8Ⱦ>\ÕxIþ'…;ÏpΞR ÷ÎåŽÛ- {fË‘ä5=Ÿ^¬Ø|d?¬¶ßBd½Ö÷5œ9©ý7Úî~D¤Œ‚î`iíÁŠe¯;ˆŒÆÍ‰Íˆ,MtÞR-¢¤Ì¶Gœ>Ï‘Såˆôö•='Ýö;"¿½1NFÙ‘n­³ØÉu‘Nfì¾¢ŽH—¿Èäù„¦Ç’ãvn&ÉÔúíäÍe ê9j<¶9¤³_Žðsá€cHGÿq .¼LP‘kÒÞçÈ’* î©”Ä=¾$1%ÚÉ”ßÙ2+[ÿáóûiqO=ü€ô1ò»ªÏͲLJè£ö$M.U8Úㆯ©^jìº_½¨Wú•ñ¬ú‚ò=–=iÏ€ÊTÆ÷ۚɠ¤¶P•QØ*©Z'oWåꪕ5÷PµöooåF½^Sª*PjŽ;é7~T·=ë×yTÙi/_-{ ʉ<Ó¹ÑR œ3/#?m*2®µã,oÙ뎌ˆ¼ëžÄ»O#Râù¢ÓéêÒ[2r7iñÃyÎÕ½ˆ 5}8mÚcD¶Õ °õÄ"íûZuÚX‘f™ÑͺHmÓÃIñs 2Ögâ߬I"ÒMÍùÊh¿¦›;½G¤^© V»; Rƒ»£‡u‘§þ´»Üƒß?èQgb¤rºF|Ê ø6[B!„†»(Q—cš¿>µG”–J÷=ÂØƒ3éÞ@äT6éç‚ß¶¬œ. K¼^jçbµi/R] „¯Þö»»Ñt"îSÀu´ÞתàM-  ñîÇ«¼É yõ[ýy]~аâl‹~ë{Ãx<<õú …¯AÃîýò‹ÞUPO?Rý5 /Î9l žÏg¨Ïz>ǪåÅ$И®˜r±®ÙçîŠACð\uV‰ hÕЯñ %—÷bª´ˆä_Ýû‘”«çÝ×›ˆ»ë6`¿ "&^Îrˆ¤1£(fü!"~‡õV i+"™¬b¬¶X‹ê?3„Ž#âõÚ'y  ™Œ‰ø×^ˆ”DÇá¤0"a`—ðñŠ?"¡]Áñ<†ˆˆO<‹–w¶GÄ}p]ÄÖ8 þÿªˆóîaÒ÷K€øU¿Ò#!ˆWê³wGó1Ήg™´€xöÚž8ý#h¿ðÞÖêdbåüâ4 ûLªç;¢ãa—8·Z µãoVÐçqéE‘Í’ OnnTEÓI‡Oå^@<;!e¥Z‘m³˜k­×¶Vs¼¦‚â#ÐfYê.n-É·A^µ Õ•™ÝÚÆ ZçÞ&µîšíPª+äû  -›©6ÅZéçu-É@;ˆ–Öÿ‚(h!•ïê:@[bÏ%¨íM6‘ñ—@KЧ¹I‹ˆþǦ±ö;­„=¿[Ÿ(R€ϾT°{‹ˆq–S¾•C„y†ªˆ«ˆ˜ y»²#"âÉ%öp5å,×jKCD"g[›Â Ñ:_lÒ)oDx¯{çùzDÔ}b_T /"JcXj#É„ˆ<É/Ùìn„¿âØl¼Πm@xöÎhï× ‹ ^@8”tíì{Ô9zØ7æ Z.xù²P/ÊÇEøH¶BfñûúE ¸õjSe a§àzq4-ˆz¸û.:¬iƒ2ÄÑr+N!OÌâ£1ôdÇ/U(³^émÿ¹;¯@O}õ™éË‹ ·WùÖãG [ãÌ¥—z›Sßה͂îJá‡RÉLÐ{t/ãzÑÏëCæ@wR5¼þÇè=OמºP z¢Ã§¯€ÞaÌýŠÃ[A/ØåöÄI!Ð;zm;ôŸóɲƒð}œÊ¤1Fx{i¶›Ò!|çNR·#Bç+gÛ;ÞÞðåôéaDÈmGÓEG„ï>ÍÈ#ýX„Ñ}lB¦áË•Áöx¿B¨ÙoYMU |"yÏ-ìþ’ØÆC‘ÿË*ï$ÃÃ?ë#¹Ì4S 2®Ç“™¢ÊCíœ. Z;ºñŸ¢iÉ9Áj ̾غÅň‚¯°ªQ²(±˜ñ;¯_¡•¢Â³+…3@hµã§P „á‰Çû>l¢ÙQ¼Ùfo Ê„mºåļnïLœ· Dëi†5Ÿåýå¿å³OÓ´lË30 ¸C§g†ËF @å©~¥À͸·ì`ÀtoJnƒ~ÑðÁŽ``^ÎÉ  dÄì׋Ҁ°ŸZa y °ÜWߟ‚ÀÒ‹£«(ßë†v×^ ‚ëòމ\C ˜“Æé_ûÁX ¾Óž 6‰DÒƒo`Øö×FQdXqŸ­#/ ÀÈìðÑ‘vn0|H¾EÏW† á¾×ýÁðÎÌîƒoî‚‘ r¸NMåE¢C©0ÚTJÖÔ#Ò齺\v`8¬6Àaž FŽ˜ ÷ö7ÀHy²ô€û0Y2í T'ý5|›È}/2iE¢ÈC C¢–-ä1â7dë‘>òšqiÝs rïõ}Ù…ÃÈ«÷c †÷’;xæ(Y5òä‚a?;y*9’+C"õôíS0ò°Wê‘H«4òd‘Z›e3yòà÷WòÍÉ%3H,N¬Çƒz „Kóé#KçP¹ÜÜàâtõòlT+vÝéav“BÝà»ú_˜È¦Ï÷Å÷¶¶eÄžm(ÞÆÊYW.!éê!¼×®¯´_¼„+ƒ±Uþ@8ìÜ=â‡Î«ñ ;ÎÿCû±%²ÀB T{7ûºŠ€ÁNßëå¸!0x±fÀ9a ¯Ÿžƒ^ôFk™`Œq¶ý4ø{×/aÌÁ࡞5Æ æT{„æcÀàf×~“ºa0h¨RÝïã¦êŸ§ƒÍô_f{Æ À`D!€ò(Jg’ íŸ`Ž\¾ã{±K«Îz%4bלSkò*Û°³½giòZa‡ö¼æpogÀ®^zµÃx.;6úP €Ú®ÇÚ/†]8žÏÞÒ‡z÷úöò•ìB±çyªáJì|Mœ’÷>;ßW“Ú‚]lÝÚ[‰] Ž™£:ŽÊ½ÿgÜ7S®x.ˆ>ñ´¬mQhúꦄ ˆøZÎaæ4 ØËAhZ_5f¦¶ D>2cÕ-ToÖÄú¾ÿDÿÑaºOÆ@ô»»ü~ˆ Õ§ ƒ÷ù'!Ä2ÈDcµsfþè<¸y1mX³tÂþrÀÌÍõá>ô Ë0î~[,túFª…+Ñtʃ™N$tê/|se5ë^Ëç®ì]ÉŒí&Ð5óó P‚Î0¥ÏüŒ7èÒ$ßYm¯çù|ÃA×þìc·@NÐUoùþŽ)tõ|âÖ<°sëê³C;vYõIðè_ìªÐùí¬ØåTmý‘¸ì|l´xÏ(Pn|¾ŠÛƒ]>,XnÃ@4pS#×»&Jkœ]†] l¡n¨Æ®ï±9¾ð»¢'«„];R©4r› »–“‰(–&c×.†ªß’bÞÿÑŸ‹ÀB¦YÍ«ì’DŸgq*t @L5¯kêSbå[|ç ÞýDùöå +JCÜ vñ‚û‰À´B ^žçÊg ž¼t,& ÕGŠo|s<´ ˆ¹'O ¢zûg¢œ3ªÒ×€6åßç­´•Ê'ï&¼mb­LíçÐV§hÎní²{í¶¸ЖÛ"¾Ëå)hûÚ7¦ì4í­iNeÔ ½åQ¤E h'Ø5mŸ?Ú{ Ï&ùµƒ6wˆg_'mïlñ— LÐv޽Z´#Çù oT×õu¿ qà(ÜìÓØ<ã×Boö÷±J³¶}ÀÕÀÕò`6xÍÔ#0£^ÀÏÜ ,}ýŒÙÄ›ýÀ]=”(7š Ü€ß%κxœßµ¸_= Ü3)£á]À}æNm,]ðP|h÷$Ñ<Ý”¿¯_Ü‚âúÙ³ 9¸ÄOÝFËM@Ò÷îÚYÄé‘¢lI Ծؕ!¸ˆsF ^ –}QbAqîjà–;ÄZC{âc 6TÑKœCùý¹³Ô. J´]ºwuThûžÇ¢,œøÚh“€ÑEP¿õw¼Mur}³M?¨÷Zöu¨·€úý+Õåj/AÃcõ*{‘7¢ >_ð<ÃÕ‹Ÿvi¤¢õž§àŸ•†otP”*¨/Æ6ú_™Cëß±OåeõZfK‘]8PõNkûØ1PÿáO;ÔÅÜëá¾êO¯ò•oÜUÀ›ev·¸‰ JG:€k¸V—šRx=¥d+°BÀ+vM‰=û1ðEWhp>úÛ]3ö†À#kLùÒð8ðÄ7ßðçð^§ë—¥úÚÑç܆À]ÐóùLðÄ.ù¶÷3šO @ÓéÎò¶[Îr@ªP>zÿu1š~®3¥Ò›Õ‹Ñ߀tS+gZþÁŇXea Ýf±õ@륒R®nÒ+Ö€!× ¥ ŠΩðóíÛ茛ØÛ›Ñ9¤3®êW€””`ˆ)Gí¿¶õƒO6 ¢ëk¿ù¨,zFŽWòu垣P ªb®ª&¢> Bûa`^wTü3ýz›t@Íw˜(²ã2(«o¾µcTfnÈ»F>Kz¥­G AyM_ëÙ¨pËN-×åéí/Få· ÝVÇQ-ýK5ŒÏK+ï}€±§n~ "Ó!I>§AT.UåDÊÀðPŒ}QÉÜšöËÖ >}¾üB‘ˆ1•o)‘¦‰/Gkò@,g¹<®~ 0 QÎÏN÷ƒXÂèÎ{ŸÄAô½Ç³´G º'£uæ³,×ý Úd=þEWÀHn¸ÓOÇù€´§[ÏŠ ÅÅ”Åèî9 )Žy öÉ£s¯T䔯{dÈœÎìÀðIæØ“#Š´(î%ɤÔÞ“ýˆö‹1Åüí·øœ D;½s1 ëq!žZˆ6òPò¨•¸Ú›×€šÆõ=+c@íÛ“°¸CY fÀGÑéj¥_ä~‹ù<ÁÕ‚@PóoXÚ¼ÔÜÔ/<ÈžµÁ×;ó÷šƒš‘æñH&PsÅ2¿¾- jŽs¸HÌSP3,µM?v¤ÿòûúRƒ¹Ï‚9“@ÚçÂSb—HŽms¨©1)Nfßçx–ìÇ5ãR/¯æÜrh1 ^·€ ÚúC¶©-Çúƒ‘»ò0H2os<RÕÊÖŸ^hƒ”º¡“Râ§öïï©-¢?ìÜÖÚŸï¶¾ÝSϯ\ÖÇÛ$Ñ%u…Ô»bUz°n¹§ø¹‘¬÷9WëûÑdGW@R÷ch1iëü—rU*`}`,çt‰XRîÙ²Öq4+²†`}ý–öeQ4ŸEtÒSÖk¿HM'ß>ϲ_¨ï‘ûãñ™@jw§nó/ûmÿÏéZ_Ī8_üí{ï›®BeÜäBô…?NW1ÞÕF‚îÏÇý²~tdúä¿õsø_§«fA=1þ™jv¾â ÝÿúùÒÿ–®M °ËÈ?÷ ”mf¾½9òçû—fq/Éú_ï½ûF׎SËëøÇ ßCù?¦«òÜ+ÚûΟçg¹ó ¥«N‡þ<ÎÒyCÿz/Úÿ3ºõïå¿$üö½»¿MWæ#KÜáþ ûßþÏqN™}¶‰Ã÷|ÿéjÚ2øóñâĹZÏýë}¨ÿÏèÚvÚûÏþ«ŸÀÿ;~Þ8”xìÏÓ•z®?{*êÓµ!Ùý¨aAíè•j¯TsòbJ X œÍ+ÌóR¯a˜ÔÖ\ ]î[Ì!héûéø¯ïÛÐv¥ièÑ´4ìž$H—2w®I)»ðDœþ. %!Æw\íÿcj•9]f"÷ƒVÊ•sN …A^EÖ‚V¥ªÿ8 ´lŸ9t´ÞˆL¨€VïV¾OO ¥`Í:{´y^´É¶ç‚æ´B\ V´nêK‘@KHÚSD>´ØŽ“;?ž-Qás ]M øvÝðîe•y9™&PrÙÙ}P;ß³q4–€â£–÷™êñ ´÷´°…v (žÞ•ΈS% Â¦Š‘} ”9¡æHPEüí…²O1 X¡³Ë"”ä®~¹ñ8”2úãòªŸƒ’“í÷ —@Éçâéºä{@2ø;þ3ÉåGûù, –Ñ{¾àÝŽÚÑ©']Ï<’ô¦û[ÎUI뺡~q"×Zì·½X’ø\E`;Hüg˜®YXÉþhdŸ»g¦ï~+Fívx˜¢I9$ÖÕý%éyh:¾mNº ­ÏI7¨½tî¯ß':Z§•¸] @Ç–«:eÁt8~‡]›èËËùÙ2 £.ð…³qtl4çÚAgëKÓá  ##|G"tNô’¬ºÚóg‰Ý§ÕAGÒ†Õy7}Ï5fŸ::¬Ï'?k·ƒŽPª¦]Ž.¨ðþu!¨²]—«³“e%ç}ž¾R b—'ÑJ3 ʹw”»¿•‘Ä ÍÏËA)T þ^¼¨tfó&„*“a›Í);Pî¹»2Y\ ÊOh§–ï6‚Šs:»(e>¨Ì<¥?L‘ *ó +¢w¡å·ùº„ÂÙõ{K;€p“Öw¿‚èޤв!¿í3–d„4‡Ðü›Á@(áÜ:pÀæD!<ÿ4’r}bwÑáÌþWöÏ\P¦ÅðL†!ßÞæÐU!Ëÿ`fÃe sSŠ >„ô‘öó @H ê«‰Šýžõû%ÅAÿ0C¾ì› ¦¯aÛmú|'嬊ÐçD¶ëoA_ÐÂûæ5ÐW=—_øfè{ k33@Ÿy䚟1€~ñ~máÌvÐ;ªÞME}Çߺ펠75ªÈsJôÆèêpõÕ OoЗPäª.¼G©˜@´:Ësº TìP;ʯj¬ øÔ¶T}ô@ÔBâuº+Ðr”¹1g @íIKíW¥vPËoÕJ´ã4 ã@-ô(÷¦Ý, ¦º¦_SUjG‡ñ´ÓË –QÐ>w¯\Äî3(Ç/Ó7·‚>âöÕí¾.è{:iÕýÇ\2ûM(Aÿœ‰õå3á å »#èøÈòÆcô­éÚE|AwÿJmÚoqç¡ûŽ#è'Œ~b?xíG‰ô‰aQޏkqõ9d´%¶†¿iº™ÎÒâ =³u°Î§d0Q†V¤ óüË Ë] ½'w™r’dŠæ;ÓE¬isj7H75þØA_2q¦Oöú_þÚÔ>Èb÷Ì )ÞYi=%'CCõh[Š,Bäßó áÒ™.îJ<Bmt.Èáúªn—{@¨|¥4qhŸ¢¿5g=‘^“Y <œ²ì{ ¹–-hšuæËÜþ0 |Í=f „k.'¥üpuhz«1ÚÞ»rógÇ€is`4 mÖï?¢†Í¯ˆ_¸^Àækºþ£Í”`(S†7C ‰ËÎ7Áýƒìå0”|Ùe¡ †R¡|¼Ï*ÁШ]Åšµ /Þ‹˜FÇ­!/……|Ákô=ûÌÕ+Ã`¨¼ôLªç*ú|Ñ{<š ͆º ”lA~qý\y(ì{ûêt€(ÈSx(Ê ¡üÇAëêï 5OWãA1˜ #T? vO¬)wE ­ƒñ±J›—.®Þ…³_W6©ä"{C§N(ÄèE<6%³ÈR÷_@‰(3ZÛB%gý°©S/ÿ|}{ÿ-à¿ì™6$v~ßC›E% ¨&î]p|g5ÑRz’OoÑ|EdLÁ…o€’x¦Ø%ŠƒÎ&l€Ÿë/¹Û|Nƒº?jEߟٛ–…Ê} ÍJú[ ˆá_ µuÞX¼ÿ¿‘ùÕºÆr—£t#ÁX£ƒ»¦sŒ•N¬]ãîÔ:ÂÔm0¦/ɯØíÆ·$³‡]ã‚[½§?ƒñnFVÿEE0þœ6º÷P­º÷Ú¶‚ñy¦Õæa0ö}À>âyŒÝ–*§[¡©Dâe±6ûËO¦ä±f4£OAÎéð%±c[@¡ã¨7ïPˆx2†˜=id ÙÔ ÇÞ±Ò= ÅŠÞ=â‘ {ŸÒã"7È®®·¡9 ò_áì*‡Ì{LSY{@ñÔUÚ‡ï@1/NýÌ.7P,‰m¸ÈD…õûÇh™<ž„®:‘6÷. 6»«²ƒ¨ï ¿2çÄ×·€w*WD¢5¿„Éqk‘z…êw Þ-în: D×ßïßQù;]¼Ÿ·ëIý'ff€xÛ´»oÁˆ×Lr™yx€x5ñZÛm06^Ÿ1`¤JþÜÅò Œ±¶ç?:DÑ;ïÑÒÈ0¾g¶ãØ\0>y!K¥¾Œ_‡E>»êÆY*riLv`ìƒß¬¿â X‰dÇû羃qÓ«05=0Zõ}y5-§.æô¥c±õC¸ ë\sþv0éu Ná1ÀP2ä‡ÔfZH$Å_Èɉù†þ¥ûe 1¶™2yq$)3­Ï–”t«Y =Hv_«ÏæïñöÄŒÀoy )g7j»¢ âˆ;ƒHN> –œFõjв+MŒª %ÐL¤ý’ Dªõx›ÇÈ÷)JÛ•‰âAÓƒ: bý_çŽÓ£¸íÕµo@ó;°]©Â@ÜB«YõGó™|ß<€`BsTßÅY*:eaÿ' :²†à“Õxš7GÑa?:_2¶õ^bÞb„ÐU!0z„ߘÏ`$½h:®F_ÔülgÁ8ÊWtÕý.çî¨W“¬K˜Oh¨ š§8æFׯuBeHñ`|Z3gfä`—rë_dH€ñÚÅáÆ{!`ÌçŒgL[ãè”Å÷ïŒÁxK3Wlït[5nØŸõ€¹€‰Ó Âw\±ç‚;ÒÊ+@ìá»ýª§]AV,+I  ZUÆjˆ£ÚQÀÜ x̺Fx¸J–,u°êªñá8ƈâÆ?s]CðžŠ]ãé)€,ñº‡êøt“p=ÃÀŸÛ5~ú˜)àŸf—ßÝz¬J;(ÇÄÞ~Ë×+Ÿk•dÈ* øÚ3ÞRê€oÑ^`Ö{ñöÇ“©—€ý+þ³7`嬔æ€uÿ1ë¶< X®$þ­ÛNöë=CÍ[?íGlêåím€Õ&àÕ¨“:~{Bü×sØó¥FrZÏÐþIÞçëРؼîÀb1š2]L5Néîu$ ^yº&VÆRcåÑúÜÇ@ÚXr(g% dyBXŒÒÿ9ç"ã\õ:å“/È2A\óaóX)É]þe= dîdÆòg9µtã‹—@‹ðŒœh¹ƒšK_)>‚Õz˜Ï€°rû2¢\–7§|3lÀjâþNiT¥´²ùt®¾÷ç¹@°r§Uml8ŽâêÊQàÆV™mŒW¡kµóÜÄn…E°º±urX ¬ýÒ±­¬}µ#JÁó·ÿ´æMŸx,¥ðíx½¥žMLTª$®jƒ“ž~z&`õ×=€Ú`e¤·sGÈ X¨]z·˜ÎwT«·×VÁ*’Ý÷åÜXQÔxŸtÞS¸ùº4ެüßìÙÕ„¾ï–fxÍ –}­fNù`9¡ý$R ¬,¾ÌHKß«=G-]kÁje󦇰:p+ó[u#˜®¯?˃¹û»ÌÏb0?7NÕËÇæ>½Oó£Á¼¹5?Ǻ ÌwÍ?9éßæ)¢æ7}ÁÜ\ÒV»b ÌCUè°‘á`^y4PRÅ[Ú¾ëéW0O«‘öf`ó •qæ‹ÇÁ~?IÀÕOÞ\ KÎ'ßÂèB'·ÏÆòÚ-°¤×•XJvBùy­Í7«,Ùõö‹¢Kn+é¬ò+`©¢Ðôæ<úž´§ÌÓ»p¯)_¢rÂ4dësT±Ü4þDÛE}­Ú+•;øC‹›n¢íIdˆ=s­u¿Íy0—ò;Éâ—,ø)´³Ìùwçsƒù•síÚ_9ÅÞ“ó?ƒ9iíýó00×;9*ý1Ì8™ dÀ\ÑÙôÁ&0—0=±Ó`®CÝHv‰³1㬹Â(0›jqÛÿ.ÌÆÎÝ? ÝûÀ²ßëj# @®þm‹ÇÂePÀFô—ùì¢[ƒÜÄ6Á·Jc ÿtéÆvÖ¾#ü¿ŒYopù¬Ã:>Ÿ_BìL”·«È ÝïÏv\¹.>ɦ…½ß6÷ÄË€‚ìÑ—ßÛÞÅ:7c‚Å¡D©°r0GØâX8†Á"uåyh÷M°@xËÁ"ô²ä¥†°8\­®6z,šE—Nˆî‹ñ†Ý4o—PöŒ,N9ÝßGö>Ù¾ ,ž\|)þÀ,ž¦RT=‹&÷J:ù{`ñ×ý¡Ážo±Ñ‹žÅ…oè{©wE­óÅ`ñH'å³¢ Ú®Ëe³<°Ð Ï6pDÛeÙòò0˜¯î›;Nº'p©°ð nå)jBÛÓ8Úâ¬ôæ/tq`¾XVGo5 ,'y\A5{ý/”•vµÚîñe¶O”vÎ+ š«Ž;2ýTÅ?}¯•['&T.žÕ`Ýù¸£ç@I¿Ù~~Ôèr ä¯Åª’©SöΠúˆ`&ÿL”o‘é[5ª¡z5P“hÎÍÕ†Ff­ÒÀ1¬ßtp:Ê4µ`‘¾;Ü!Ðp; µ)Î;nWk¯T,Š™êèrD'ÐYðI p½ªÒ™uSß«èð,ê¿X=å 8EÁ=a²–€³TjúºµpA/ö6|\$®¾–±pú’1‰€Ëø[^á®.J³ïnܸîòôÝë€;ѹçs)X2\?¤=ƒæcHÎ6€»dÍÖßc¸sž¸üJ3ÀE!MÙ˜G€»è‹¶nà®ó*ñi¹®HzYÌ3pÑ£®W²¡t+…%[ÐïÙ÷¶Êëó2(¨¯_0™²×/L+TLc־Ơ¥½Ÿnh:Ë_æSë¼%鑦|(p,§v{€ôôÜjÙW ˆÕ½Ù¾ ð‡Þ¶‚·ßT¶)*¿Ï<:.6Š\†n¹ŸïƒbÌ»ºJ> P¸­¤Cœýú½-B€Û½«R¤E5¸d‡i4ß‹MËKß÷š„Nvu‡îá/€Ãán™Ç®=\N×â à ª «šJÁbDÉc‰Ëp&¾^pžp¾ïÏžü±¸ìs—úÝ'Þ¾½òpÇžlyÈ?ÿßîZ*žPhv7üßÞ×üï÷[g‚£Aü»ëÿ9]Üæ6uÜÿzœpÀ%¬Ÿ—D烰d¦;®=€»irvƇò_÷.—iuÀ¥†=lÌœS[‘ïùÀ|rî«;Ê߇®ª£ãä¼¶¼úÀ ¹Èò·µ’ã&:À¥â6s@Ç7µóHà¶ (S¯mCÛ)=/I;òòë÷¥‚Œèf×s œò”ûÛ L}\÷î Ȫ¤Œ<Ë©™ZîíÇž˜ƒlÛå¹*.®\í´¤o…ªÔöµI>íÃ-ŠØº‚n/UodºOz*ú£òŸé콤>PÈ5-=Ô‡Êq¿È­oøhÀº¼íÃ2˜Ç”=Ñ«: æÓ·¿¸R¹€9ùe¨hÕÓ¾\È1`¾Ç]‡ñŒZ/kGŽ;Ì«ÎÌöGõ ÙŠÃÊ`^RKܧÁ ÞërC ,t¥nžtÅI;Ó/Ìn6Q÷} ‰MkFFö`A)iÎèêó]E`¡i&ÿBÊ ,x÷5Ÿ@å¸K­ùñ.°`¼²û&Xë¦Å^ô õ¨ˆvÒ$:„¬äû£óŠºO–нjüË-—0Ûìuú}@\vþ~O®H$ŸP¿±/$8v¼9ÞO âN»MvÓ‚¥òþgÁ€±åc,©4©sƒ[‹÷耄ã…Úͳ Qߺ¹ ±Ä}V±AJŽËÚöÁHÉ8›°$íôÇLâÀ¿¾_†êAÇ®DœÝ fwÐ}Úé€êKÍû¥À¼XbéáŒ0ŠoÈð=_t^¿†awóë×_3>BŸ“ÏêêbÀÜ1çü};0p?q„¢Ì/KŽcª¨ÀÑÌŽç5èó³:þ§y’Å`öˆSÌ1ÌN¸òsøôƒY“ÓÜ׳ïÑç²…ý?žƒÙí»nçÛåÁ,SLœÓ2 -Ç"w¾c?˜Uø®ŽêWƒxžºZ€Ù¥Ôþ0³›%ÇS©@¼o}Ÿý`6EÌÊî¬ÌÙ²juá?ÜLoÅ1ŽâîýÌó¥`|g7_{¹ ⢡ôì»ÒS·™ŠÔ’üTÙK L ~J.s‡$Œ­¿þˆLâ“4½½Pý*Æ89$M†o-¤ƒÄÉå{]!`æã°~° ÌÜ÷ïÅ^3Ü 9%ÔÈd“þ‚3·GÚP}ÂÌvÓV™.Tï?Ø:ÑVö Ì"b*¹0c`v.“Cè-;ZÿÊÇ 1Tß:§Iw“› fÉ%ÎÝ<](~SÏÝìüÀìô—§ïn®‚Y¯£ÖR:˜òÿ—ØTRmþmv˜²9”. ŸS–‘›g+ªÐ熇€)ã44-ƒ©2 ˉӡ`*%ɤئœKŸŸµ-ƒÉšåˆD™=jw3oc TSÌ>I²˜nŠÛž?U‹¶»·ªÝ)-/쉷8bSè´á"`ÔÛ]ùl¶F·!þéo³5u®®bq5Õïý €½Ú>]P˜‰–kç&v_LJá8Êç7úäŠê@ÜfÅj“&ˆ_fӬ̌åÃ;~ èøˆlYј â‡6hÅBËs&p&Ô¹Úú=5(ŸEìÖÇz`®¡·dwå[óâÇ)[·€ùNÿj*Î`¾ÿÔîCE‡À<îT;ûcuTÞÔÉ­*¢råphÑÂ$ªúœH±BåBÜÞò£ß<ÐñaU..ÖæGb†5÷S r$±%½¶Ì%¶¼HÀn^_8 È+ÐU$nún ¥¶m9Àê ÌçÇŽF‡îú‹kx·nÉË=`ó%|{ntL€€>ÍH^€²Â­œ/)8âI%€Yx7‡•>Z®úI[°< lhÞDþºOD†V÷Œ(€ÈÎç~µz¹µ~0"/ð¯@ôŽÒø= ˆÞ›=çç¢[Ó*ÒShAìVÉH7fDÃ䮾|"+ì«÷GÌA”Ø|õèù 6Çi[êýÄ~dšsçÐXéVfÇw|`6±>ŽPûŒEÊÎÜ@ÌzbH¨|5[¨+è` sùècŒR'P{aTõâTÞ2p¹Ä^Gå‚pÀg¡ÞT0g5w™\³ž‘«fÆ`¶ÚS¥ŠÊ¥'Nóf0g~øí˜3Ó®h ö†Üîýç³Àhïúù_n0 Ò`5¾¶Í_I3¦Ž#û·ÓGÁhË€Òò‡ý`ý ÿ4É ŒNŒàô^€QÔS`yäFþÂñeÜÀÈ{k|gÏ70R~ÉAƒæó')4ÂÁh{qðŽ`äîx~—Í ¹|¹³EÄÖÝ‘Œ‚@,z• ¶‰¢ÈÔr{õ4ˆ…ÒS1-«foÍ^ë{€tv³}÷ÄNxEe€èœ¤•ûSJÛ|q¡2è `®®Ü6ûb ч?×+XÝ/ëm£ÔTä ºb^Þ7w<1/ÓžB°`û;³†êŠÝl8XÐ-ˆ¿;ç§ìŬ›ŸKŸƒÆ3`κ t‡zf·g¢i‘{aôQ0ïйÁ@ ô) mÁ9`@9Äõ ”Ô2_­ÞGÛ_2ª`@ÓõÙËü ø—œä!e¶Š›}A@õ,[ìE¸¦@åvF¹$ÊÊÐùHÄÊ@ ª3¹+¥€`ñ\Ý}i`2Ý\Ò‚g×=N³þ¢= %‚) œ¦.ŸXüU’û$[@€.½‚[øë"û_Ò‚yÊz¼‘jÔþ×°¯FåGT»ˆx:î£F½Š2PyRdã®õ̃F S¶ù í¤Å·`îÂr«Ùr•+VÏæOr‚ù¡6•…ò0wnRaTsÿ‰ÌOzâ`š¢-J¶ï¿Ë§æá#‹º óWü IÐÉ¿1,|Œt®Ž¯í+A@çB¢Y‰}îz‹=«t®=ryFÞ :Ù¢ƒÏ„ƒNÕí“ÒË S6¥VÇ8„>7=‰uQ–Ø4ª£ st+äE)èÜäº:À:×?µ8DJ£åö}ÙQ Âëû¡c ø¡[^ûe?Åùò~ßBkÁŠ—ÆAØãö©~r*¾¾ªã¦ ¼UüöjŸA°‘sAx¼„¸k{¨@x§²ÓaW:¥ò¶„¤ž<'ƃ`Ñ‹Vi_|ŸÝrŠ›Ë ÃYSeQ=iÝŸµç„Žìì=rã}O—ÀB–~ÛÖI/° í5ŒöDù›E;Òk,„¯êjgì Oñ+ó(ŸR^ßžiŠêW¶ïùQ~-}ŒEõ2Ò {ËS°UØ ƒŽ›ÄázR(Xð ±bwjÖžÔ}Z¾wû¥GYA+m_<7Í3ЊfÍ*d.­D&¿˜S …+Ûý $}ÿ!ÈFŠ´³ÿr& ´ŽzQÎh7€VdYîäÕ3 ¬w§÷*h…’Oµ²:‚V˜a}¦À h<×}wt´bŒs¸´`Óú1>:i`ãs;<†³6›ê‰n%عͺc×sØtS®pÿìE` öÝ1š;›”vöº ¬u?ž>b¹¬äT~—ÉA`ç1”×&G[̳ám2EÀ¦ù=%ÞÔX¥º®J×I+m}ýÞ.-`ù¨r5©(Ìÿ¾G̼0ý„«D˜7wIy}Fç¹âê&•`~Ϩã°Ï 0¿Ù8Ì”æw-^«f óáë¶7TQ½/˜ `’æ­šÓŽæe`~Ç Ñ @åxy)Í«îNT¿.ê±K˜Góâó¶N%¨þ¼ÿà_ ¨½´]?à¦nMý ¶Yd›jïw±Ý‘|j¬ $ÿ· VdR©«Þj«äÁsqP[9èç|à$¨ %ÝÓÛY†Ö¿ÕÎpC Ô^Üo j/‹+*KAí]ËÞ¨†pPã÷ÛôöÚžõ–ƒ'À¸~zw"ÐS­¼q :…Œ7=y)À€dJ³š]ÆS¬twÌ0@oöthj˜¼¸Ρ¸Òî\`ôŒ+ž³Ç½.L#á2õÂÁ>`( 2Žÿ ÔÏÒ¿†=º³ØBAÀà#4èUvè]¯¾ü„ïCùó¯ ±Òç°<`¡Rg²{ µ¿Ù&·Ýá&‚שÃe¨|&r\Ýù•»[÷_~ŽÊuž˜÷ü>hiðÅé *‡«ú V°àWK¹€Ú JŸ†QþeãØš‡Î/⥯Ì.‚…Hq³Ñ}PbX¿øöÎêe¿ …+tß$d&A!8éÀjR?( ºÛs€¤²ŽE£ùsõêU> J;Óˆ¦{òG¢öòƒB˜ºN0"ÂøÌÂA!æMÀ0[/(ø|0­PȪïy GXviu樂ÖÍP\ë]oXX‰}e*Í×\`lˆî½º;˜kiü±—€‰å®1{˜è›¿Ä?š— LÂÑøe¨eÚw`œàfüÀ}Wù'2.ÀÈKàÊ]Æãº4wTm€‰éân¯·FÀ¸ž•´€Ê×ãë~2oP}ŒjeÌÕçjÛ.5aP{0îAw–[jg°kÓ¦k¢©oÔb†)˜?¯Cåðý,ÚwÙQ¾-8ê1§›¨y£rzoêì»hTï mræuDíM3¡¨K¨}ÁÖ’Ý€êw¡^žjûAV9 ë\¯çÿÈdXø_ò§‚¬Öˇ›ß§ƒ¬EÒ£è-gAÖÀõÑÜÅ­Œ¶÷ƒ¬DÌÉÕ¹w ½…öÉIµ*Úáë ë47›aè²Ûv“èo‚lÒ³×^gä@6ÝI7V ²gýÆ^}aÁum’ÁnÔ^ÛÛ |]/o»VèÀ\Š}W½.'‰öÁ þ4F×ã P;·¤´WxuŠ"¶ ëåšfò‚@PXÅðž¥!ª{ÎíᵕÇ5orP9nïò5cûcXßÈ€ wÆ–ÕkM¨žõ÷=fK6i©K¥¨žÖO÷ƒ0‹êiOb%PýZÿY¼;–¤Ç>“ÏïªimFŒòœHç05Ù6P4+m|.¤{´«N'´ÁÃm*WlAÚ9>•~à3HK_Øá'â1ëóà`žÊà‘éLã蛘‹6 NÝzœ¶š0“F†‹Ž]hÚ+yf¶ ĉU]в¨™o”•róîœË‹h¹êd1zŽ}€q ãS{ýĹ2]ÎHÌà#KQÌ€9WÈÛ˜»zßßtÅ•¿ã`Xu›c§>XÄö(Nµ¯‚Å!-áòëçÁâÞuƒ §è¼X<9¶å:¯å¦¬V¦W€…m’{·î4X¤ÑlÈ‹ìô>ÁâR£Í1?´.KÙ€,*: ùos€Å-Ÿ&'kôy±ˆÇà(äýퟣ`UD+1ß ÈB†I™($¨XúÞDåBøñ·ã9 à¡íw¬›·k/Õƒ‚^ Ñpƒ¯_ãA!RÇ”½ÃœOF-dç‚®CÏE/­‚‚Ñ}~­‰dP ê…4yp‚‚–šž±a®»{ŸÏ—\ŽÖ ¨ž÷y%Â?˜Õžep.,€cãÇ÷z ¸{³€”§/Ù¦½õ0!0%¸0½QˆZ´1•?ú ¯—ÆÎi˜ÜS<&(BS2×uï¡ÑgkÜ×A˜ò“ï+À¯ËÉhÀ•Õçü*wóÉ¥ºt€Ëúòéó¨àZ(›† ÷´Px¹žpïüÏH› .çF¹³Uàú)NÖ¡f—ã(%%àî-ì§¿µp÷ùÆF®ù¢f߸)šÄ=f!šî3/«~A¨*­Ó=*…77ßFA•fáVf¨22RF€JMÿ£Ö6VPU>Œ;ñÝTZ2wz_®GË×âºZ‹@Uzê•Ud(¨Ê]//«Õ•|#þÔ¹P™âeÇ„íÕ\w~T5îÎ]Ì; ªT'Ô·æ_Ió¿î›‰ï¬")Î yó-åìóÿooŽU÷¾› I’±2O÷<˜ÎûæH%EBD¡TÒ@B¥Á$•&Í¥H%MˆæAJE%‰”ïöô9žŽã}ÞŽß÷ý=ßO÷?ûØ{­½®}_k­ë:Ͻ׺.è-~µ}pôNMP‘~P=A—e‰ ô.¾ía®„îEç™W˜Ó WüT)§º5Ž/G9÷'÷¸Äu± Ç.Öaè­fòdV[BïœùuÏ ŽÐkîóX3)ÖU&‚?а-éV6øm‡x¯*Á0 WÚöÊ2ÅäQ»Àÿ¦´×°‰|ëÝE­Bo'UU•ÁïsÐÛ¢d \ë˜gÚD;ÝS&Fî˜~ïë#›b2Àj^Ø¡Eœ»ë)D›zΙ–[dÇŸy–ÉšŸNTû¶ƒlhµoZß]$J'ë×[ksÊ8 Ïuý`Ÿiò¸²±ŠŸl½¡ÛsÓ;ÉohjÖÄ}ËyŸËA6¿u*cu$Ȩꮙf ³_>’×™»jžÑíV¼+f×AoöHÜž è¶ßÚ¶8z~£—°Ã¡‡ãs_UAïSvÓw#tSÔe  ØS0No t£Ïnðޯȷ=eÐSÕØãZ =’F¿¢Ë6èiÏôZ¹u:t_=ÕÚRB³¾z¸J÷ùáyb*gÀ;¾¯‚`„à[utk¸€—f:ÿ†ºx©7Îî¿ÒÞãß3âÁ;¶v‚Cê"ðΔh¼x\Þ©Äàq)ÄqWýló¸Ãà¾.¬Ù;‰h¯ëàðÁ„Xxìy’xÛÓ=†SÓÁÛë;ªð.Ѿ•ÁãAþO>kÒ§%ýÃÊ ½²¼0o;¡¯ÉÝÌ í;únÕÁeDèw¾upéýÉç !„^ÝúwJO©'5ÌmC3HCÓ¥íï÷ÔÜnèi²é9-ÕY ‹hÿï²ôø– WìˆûFEû“¿üB L¦{ _±"ðLÜ«CT~L[­s™SWÁ{™ayªž“ß] “üà„S&‰0~öòÂí»¹>ÊÇüWÎÎY=%”à&1éOkí<³zôì¤ c ;øÈçã›(˜ÐËß&ðmy-ix¬§#™ÃÁ£Ú<•^ Çv©Ôccû,/· UɼåBsë"‚›NŠ * ¸îš»íxÆ?2&2O½¶ÑVv xV´*ÚÌ ¿pdÁã“bï¥åÏ>x%üF=¤Z-k9xâ*_b”7ò^¥$_«k!™b Ù©Ì4ø RH¦b\§'HbùNÚ«‚TÇ ŠÚn {(?aH¤ä•—ƒGò¨7¥÷íÚ Ò*mZq4HŽ9Jã2AÊ>#µŸÒÆ«·ýÒ´AZª²õê­i EwOB ÌîÇKé?'Ã,*·b{P̧]“KŸófÏ*0K‹`>ç¹ú{Ìûrc¿Á\´’ÿÔfÞê¡›ì÷ÂìZÛÓ~ý—0++¨œs Ë^¦ÌÒt&&WÞƒYtÿÃS‡`v EGša¶~ðY²Y11ß Ö=ã#¢Û'E{®ÿ0¯l†çAÂG¬ô"AÀ9³qnù7ð¿2&?«Vÿ}eSH¿øŸÆxû–°æ¥òay„]ñb0ÌÁW-:ut<ÑÞœ‹ç—7ç›e‚jìˆz^MŸÖíÿÆì;ÏÏGZ§¼æ¥ Ô]›Ø6~! n–Šò{åHð¾ÀR¾«¨S”?}Õ–u LúTî‚.÷ÜH6µP6IÜLÔC›÷\ŒåƒzÂåÄþ1Õ †´µä.õŠÚŒå6+A½}zyï¡&PO)›'N¼ jiÇ8*S:~Æu1º)®×òµ&^{œW1Õ¶CDo)Œ[D×”gì…Q‚÷½$?éoS­€ÑññtfÀxJhŒaF'Œ'(Ö?8ÔcÏ]Jó–'ÂèÄô5[+'ÀØÔ-%ttŒõ¶M9÷äŒmÛ÷în’‚`ÑÈ÷ßBIâ“!°ñýnÞÁü6¿ÛöLŠcƒ§ ¶ 6 ]† ,U¸Âk6+%ïÓó?Aà{ÔüÒŠh‡Ô7ô„(ÿ>vÍÝ2o’|™Õ÷ôÂK£Í!ðŸñu™Ì0îÚk”ƒÞ3Â÷«@IYúrPô+¨Ø“ûôZ˧J‘ÓA'+QV8<c¬CÕtèG¿{Éý©^šzóD¢~Ò«mªn ×ØKjÝ0}ýÛ{mö~ ~aÚ_ÐoZîµâþ\dBOèüzyÏaJÿéLUb¦©¼–…SìRÏ‚U0Í¿Z‰[&0ßqSkc~s=µtÌd˜«Æs/‡ÉÛøFßôP˜z–øÛÛ=…ÙØ¬V3™§0}S‘ÿºsL“sº‹ajtþºCzLM?Ê­²ý S¹ˆfcQeðºFpÎðz³Œ$Í«Á«6yÑ“s¼o£l÷óÞƒ?[7>ªšà‰o(1…·×:Ãuuö ðÅ.èÚ¿:^³ùëm Á—h®ýî5xý{õt׃/âÚüÌ[ ¼&»[q‹ˆzoÏòLý þùhÌNŸ{Ò ýõ¾ýh+WÚ9+YæøHzªD+h…§S ›ÓA=b§°q“9h¯4¼Š¶Í¡iÇÙ{dж^:slùÐ'?ñU ®Ûë«EFÈ_È ~ŠîßE– Pòæî?ò „{ža ŠE¤œÒè¥ÄѼúåÅ ,Í›0ç«·ãcAqâtð´@þ‹î?© ƒ?dA‘Ù£™?%‹ðÇýû‡jAÞ¼$wÉš÷ ¥µZN;²Ûب9Ç@:ÕãÌé²8ÆnÍ/é)4Ƨø§êæòfág%²Ä¶€¬µcÿCŸ<Å|·žº Ò0}ûPëj¬FÞ{/#ð[å@á}ðO‰­{øŽ°Šç8óë…Ê,Ë~:§‚‰Á·çÙ'¸mÇSÕäè~:£Á€`Âåû ñD-ux šdÚœç‡û³m°?ããׇfîƒ@ïáñ6ø_Nõxȇƒœ?òúj!HýÎS$›¿ý.Nr}¼§uÇ&.Ì~į8Dü_#¿@Xíñ«ݼVý÷Ú󠪘ñ™cAžzŽ[QY «cÏ]¹ÉA°*x²ŒzXTÞRŠshù‹çl} ÙƒFž²ÏônåÓûgþ6/Îÿþú•èÏÛžžÿ’®”ŒÆ-á—¾À½ 4ũٲc]w¼®÷°5ð·÷Q*æ¦HʲL¼-ûöïë óŒC³­+ ¿8áõ‡£{`Ùr5÷á,Xöjë|sV“^ Øa{ÀБûô뫯ï_›ùëþTΧªÎ߯?Óaï’úŠ`RæBn÷ƒ_÷i=dÝXWzý7¹¦×gÁd=`uÆLGoS~qß!)§„>—À ?x$Ê—È}ü¥ïª¾g I¯~ߟ‚7 §õ@PÓ6kŽæ¯|)B“À̈6‚_{\tÚCØ‘ºÇFºw ¸U4¹Aë&y"ué÷A ?ÙS ÚÃæÐñ势ìâ\ã„ÏëþÎWFð>³«ùç¿9ÕÓɸ¤/G‹“ÎÀ,A>z áŸùiÏSÉ·l€Y®‹–Þî]0ã$ÊX_s™§¬3`»¾™ÇIa‚=&ßÉßä—¾ØÍš{¾¶zýÒkhMú£×6`ö [m£VÕ˜eU"`ž«L¸ýüq`+r{ÙeA`¾Ž©Ìò±6ûùäh¹ß4÷®ü'P@K\rëèßy !Hß#o÷_磜 è^„P©øjNíÿ,m:+§5ú‘MgþG§@é _À)úL¡n™œÂ_¹õ¸Áiú÷;3ÿÇëÈ>—1EQy#ÁËucdÛ×ÿ±yÍÌê“)º›ÆÐ§%™wÿ˜\á»÷µ;¿†S-?ëÌ‹+ÿ}{Í ™5­ÿÏÇ#¢ONQ¨¼¶éËåW'}ÝüÇåš´ûn»û[¼÷ßÇ  òÓ-þ¼žÙ£ôë.ý#æ].I­sûñ”ä÷û¯Ëe4Ÿ1 /³ûãryí2wIùãr)+ï&èäÿq¹ì¤—ê—oÿcŸí<Ç(«Hþ¯ÇÇõÈïN5b£ï”Õ°|ÿ\±*äœã1{K`umûñÇÜGŽ –ðÀzL¾ÃO-«ÿg»AÕ–JkD1ùëè7eL>°QüpËDÌmª½aXSGö—e‚åljýh!èÞ" ÜgÁr_¶";76ËöZïX]ôvY·»ïO»v|Þ —Õúÿ,ç+Q¹Á÷À.ŸºçjýW°cg,K(.»ré¾É·¸p²ÙÖa§÷gJ²¼M'ÞÜí°…“²¾‡«Žà‹Ò¥š¢?þÑ®³>óx”?œX’ o¦¼ýG¹pÐMç c/œøž9MƒpRÙ÷d±û 8é>=,±¼Œ¿ö[™Aþ¹VlÈéí.’ o@[³ûн•o`%)sÒ•ÿí·ý¤ÚýÂ÷À2ö©ï±<ù+:æúqZ&›¥²¹+L /ØüF©Àúà âyb^`Ž$œðóL§¢æã00ÒÖ8pâ­Àé»çï<˜ÂJU*M]á—W74—óÅzA¿A „í÷Ö)Ûükž óçC»&´ÿ6+,<øWwK:ÂÜÖõÝ%µX„,’½¬ø_˵ÛQrïŸùú~•^7»¼¸ vËW¿È¤ÂîÀ·ÞYnÿZ®sÕ¡yÚ?~›çÎ¥gMc‰ã× çý.Á¹ ÀÃä4û_Ë%ïÑ_³ö·ùA~˜34|] d ÝqR@®[õ°ø\Þ¿–kûìbi\üo÷'ÁNFšíwg;l¿wíY®Û§ã×>–ý{=ÏújÞoßoÁÙ5Z¶°ñœç,õËÛæg‹=^í¹Wÿµ\š`Yþvc•ß—o/<.&ÛšœÉuÇ/ãAóšc÷Û|­ÿóñüx…Ä„©.¿/˜¯¢â »¦ Â"4`WøíÕÕÿš÷ÀI;¡yŸÓ«ß—k¨7]x?Nª/ÙÁ'ÖCøøÜ•Oþu¼jÐÝL4và÷ås?©¶.Y ú¤S]笾öëCƒ/׺Ã~í…{¿-·‘Œ[%ë ëÏ¡?&äÂúÐEF¸Á´-W(Ù:&´¢õ·å‚ïÒÔ­ÄQìÌÆ'ó xôÜéÁÄýÿZ.kÛ‘ì3R¡¿/?l°a=¬à#\Gá°nfæFßù×qvaÍf¸ÿ#ë¯r&?£ÉÇÖ³o;G5ÂZÇã¨Vhç¿–ë$ñ#õèÆ}¿ï‡—†ôv„¯]³Ž‡°êÚ°_ïoŸó,—Q}gÍKõ÷寥ïm‰w#ÿaHjâ50†¼?{Fýë÷è`¿¡:ŒuZóûòF9‹MÏÀþîþA0• ö‰é*o•ük¹ÎÇsïmstû}ùöÐTfå8§¯>F áÃ9üî¥È;ÿZ.5¯»6Z¤ü÷ågæ—™ s@-ÜzsT&¨·E7ÍÜý¯ù4XO«:ý{|Í2JvèXÆÕº²5`þ`ûßb´ÿ{=kTàxþÞN: ÏÊ–*‚³TƒϘ §wV+´ú÷zvÞ¢÷Šò{{E]S¶öÌàUP}Uªn%ÝuÉ6án{-—öbεĉJ¿/,Q~s»´·ÉMÞ™ =Ëj®ˆú×r§ŒûÚGsý=Ž2ºÖÊzÙL¿±Þ©ÙÀÝy'WÆ‚’=²/æ"(z“†’ÀøQ¦{¨´dçÉËVZx€7ϱ+¼äs¯zžN½ʲr¥ ¨]•~jQrʤ¤ýŸâݯj(ý·<ÊÒbü…ß@^;ÉùÐÖNDm HÓy÷âÅg“AÝ:RÔU×.Ç»eûð„y 2÷Ÿ++í)e¢„3hTv›8‚šyrëºP5¾]¿4'TΓàË)uÃîºá É¿úõàºxÑ… :‰d/O>ªÀ)XqþQP cvÂéÕH±pºcœ Áj/RÙ¢+pÊYÿqÝJ8O(K÷<½NÞ‰/ÛîÃ){ÆGÚW3âxkÍl118í\÷!+ β{Öè›ÿÇ×Ç^3_éDõÌŒt8íž'l!x—ÓšUY+“AgÿŒKL»Y“Þ""Ý}ß½„Å& ÍR_Ö0÷ hS¬³£¢6Ö±ªzr~1èNsܽÕË@«¼jsßJ‚Ÿ¿ r ;@«]‘^K1ý\,ƒäF]îàÆ¸²© $·\5 ´P5 ›Mi ¥š^‹£ꢟ¼Œºü›LçÇM VVU ±5ÜJ«`ªhs}(ƒºsÏsL$¨]Óçn’ÕÈ÷Õ”µn ^­ˆÿÎÙ êŒ ‚ƒãA9~®ºÄ| µ²,ñõ°Œ5{ë+Pñ’v|ÖµbG¼Ø.„ëGâæ†0pîð—ì÷Æ "C¸¢õ£fχ½52x°©[ËR§¼€Ðk¶þð‚ggŸJ‰ª‚0ËÛKB˜ÑÃ/Pü°¼3¯ù„AošÏ)EB¸”\ᦙO´w‡û•³B—C£´Íîaô3ž9½mØÂ]ƒ`°N¿ú¬ôªMùÚË¢@_àÞ6#ô/Ô€+Žf<€u £Ð6笕–ÄÝÒÛ kŽß¼!ì‡l ð©šÝ¥RóÀî5г€µ÷“B–I$ØODÝ»WÝ´è»quØý»µyº·@òû¹ß™dè±ÍhHË´ŸM8 ’M~©cà1ʘªÏÅ @š°ÃÛùAHöƒ—~¼†Õãž7™ìrÕ㊃“AÚºSs’qH®%Ÿ£ö4±ðX¤ÈV§9z«EA6úö°sÅF>M<;óV8xí?÷³ó®Œ¾•©/bûÎq„?âËÆÆ´m} þÚ—ž ¯LÁëáä ï ƒ·Y¢GAõxO,-_߬ïðD÷ª›<ðžÿˆŽÜ^•õð{_ðîXóÕÆ¼#{žŽvܛ×OÀ; n¾cñX+ÿè)áûýÓ‹²ÏÃú,Õs{Ò#X%J8F€}Pþä°é]XKž<òé‰#؃ݫR,ÅÀþ¤$Ášuìð0Wž½`×rêç4}#ˀ߶Öº%Ïú,&ÊKY=oëÀlÙ¼`Ê,°7¼<[Tü…Àw?ß×QK\7¥X7‚z:7T^£Ôß{¿<<-t3 Ô³×ünYþ¯qå5•ã¾ FåÙ:¬ Z†óÁí_‰ûú¦´q_ö}bXãE¨ùf „=îÑYq°´cLîPÓA[Îå‰ÚÜ¿êgœ"~’˾Á¼ðCd»”‚À¿ôHæôÖ½._: f~Ü:TeðiÆ­œåiைöõxûüEgW×P©àŸwœµqU=ø»®Ú<Í}¨ëÉ¢½Ž9¢áà‡QìÎäÏß'ÓÆóõ|ØŽÙ†; 6Õqb¯HÃÖpTÝ'Ê ØÔfd¼÷»›*Ó]·pØÜ>6i_œ?l¶´Ì›þŒàµU,w쫅ή—’³asgxþ&ú^ØM®ßí£›ÎÑzÏ$`c¾¢äÙÝ(؈V5§kƘòÑ¿ ”¸‘xæ³@I>£F½ùæ™Dê#P¶}¹ýv”(?¬²@¹~)aÁ×PÎߘ / Êž”y‹î¸"ÍJáK6(ÅY© ?u¿v5 ”Ø7ss @-êÛ¨$¶ÔÝê:³)Ï@Ý>Îéùe%íGöiA8.òƤ¸µŠ15¨Û¿5ÇæöÕ" „å×dy73!ÔYZﳂÁã7A¥*CNÜæ0óÜåÒï ¼ !I|ŒýíM]O1!T{Î9ó°›(5~–ûXe'.âÜÐ…`è˜Í Ý;°¯ú¹È>5¯TUÍö—K)£ßÃ~«^Dþn:ì'.Û( ûŒÞ(¯{Ga¿0xÃæÈ4Ø''Ü+ßÔ{…dÅD½pI’ìú5°gÇÌv¼ûrWý^ÿTØë8ŽÉT~»¶(µá9ìM¬ovNyÜHŒ$%ß9J˜sAr6×>tñHía3ÛWw€ìUX-/ÒûÉsL&ÈJëeO œAz´cËZª¬vøpÁä…¶Ã÷7o©¢nJBãÈ~‚S5–©D?qHSÌÒ´@1šÔàõÌ ä¡è……ÓæA ö3n­@̆’›© ¸çõÉë ˜-÷!&W‚µ²í™&¯ `9‹ªÈøƒÿúÄs…žÏEšCØÝq^ß8›W€ÿ£ 75f‚Éê•«—ö]ìÜCÇ!n¬õw¢^éMóV6c¼§g4ˆª?ý¯ý©EÚñ×'sDŽ©î&)ŸŒÑì×ÏKZÂØß™–û®%y·çdoù¼[NÜ·©·ˆÁ„ýÉß*XT@Äö´ 'WÛ¯úáìwš_¹«ûå¬ÝŽÃ¾tWWß·(Ð|F6>µÇǯÏQüuÒHÏÀ 4Jü9O´­ã Rú@­éݾ¢½´©>ÇÅÞƒÚpÚ£ÝÀŸ>kÏöx8bŸhc­\^»_MËhùúr)й+<ÅÚ­@§=y¸ÌÞ t}Ié½qàOþ+`.ørgÞÔ†m_…“u¡‰˜ïËúãÐþšK­Ô”£àQ˜øÈ×¼ÎÓ†àOˆr79õ¼a•iY6=àSÈÜ †cÖ9ă?QgÜ-oð>Í V­à€÷õEÁ4³O„ïž©¢<0ûi'a=tÉò^,ÐøòÞÚÕm—èg¶8`÷Ô»w¡g_ã( ÷/€ÄŸ§S@rކßfb<û@ÏTè8EqäŽâîâ’¦cNîõ'º‰ñ¿ØþU‘ì Æ’gzÂ~ϵlv©ñð$ÁO4ë:yôi7Á ¥|?éGàÆ%IÔuÓL@¾ "-­FüäGºñïÁ°Ã.5Ís壎ݒ•`lO×n±{úW«†‡ T0,×NÖ¿Zf¼aæ¦ê«`⺤ê_3M-ýŒ+.8ççóm€8/¿ýäÎóÓ*«ˆòUwA(c6ûú—Qdµγ»AÂ97U¤ŸŸ}Ã:‚D+Õêv^4 8 Á÷¤Þ÷!8muXéi2ËÅÒšCˆy³¤ò\äSb<‡Ïµ{YÜ Î–‘tÖ«ÀñÎ ˆ^ÎçNo¯®3q}ÕûÕM*ÁÙ•?ågœÅ©Zyåàh²3¾ƒCŽ-Aú,àcÉùƒ%ïÀñ3—Ñ—Gè&°MœM‘©¹¶ÀWsß¹R[€Ú’g.ñÁÿpú+PŸŒì{*"øŠÉKÆS·eGÛÈZšeZÎ|jÿÒ–ËñJ ¯ˆò3#xÉ›‡+&m'Æý·5}£Î¾ÝÛ«mμ… Éµ œØÝÿïÚ¢Þgê±,±1 Y û5˜å悞pjùñé Û=¶¶ýá’ÿÄ^žVYS› ¡§;ß|õ¯÷îkl%Îc—_Kª‡0:cHç1B¯sßRò=!Üšñø…3aÏ×Î8uœ8Ÿ;n¶@¸ïx÷¥DyCÔL}ì|ˆ£¥ÿG ‚÷„?éø~Šà5‘ð¾ª|Üí?×¹q·Ö¾)QQ·TzƦ« p 7p \r‡ï†Ú\pc¸6“õ‚ë>é­çñ|p=Çœ²˜Õ®Ù£4•ƒëyâÒ—2âúI×¾ñßÁÍͽÙù¸œÔ…›î‰ƒ;ñjÛ¹kp§g½ôýšøÏ8E”aÈpØnPÏ bkvA½…Û£êù &½GÞ‚Êf >žjç ¥ÂË„ÿ»ó™¬ï ºÞ¼ ß:@}¿£Ì[㨮¯ý±áÊÊÈ-ã¾zIin{ è6ž¬?}´¾Œ;}“Á0² ð øß®ŠT¸£ð–å*ïÖçµõ6‚,,<ÝÀ%oÈÙ’c=Á—v!‡ô‚ÀÙ·?®8´ ‚ÑuÛè£>ß¾²0d+wÄ®/{ä0ü'¯j›OÝ…@êó²¢{ {nÌ`ª‹ÏI÷ÔÏïû"Ť ¯à 60Y÷ý¸g×é„Õj›ñÙxIµ ¸]‡L›ŒÀÝ•ÌHäf›æÔ4‡É7`²S·eàf¯Z@ôÖÊÏm à~&r‰ n¤óöòo ýnÐÊkwOòÅ=À¼ýsÿ>ãäΩkeÀH94Ú¯–˜ï™££9 DùBß!ŽPŒw²/vW¡ðúœl?˜³ÎKFÖ,«c^|Ì‘…`æ_õ°Ú¢¦êƒªêÙ:`Ú†N$Ö£s¥§ þ%™—(éeÖy ™³„žGò•|c†ëÔÁù¶"m hóÇ8$ô¾î t§Ÿ'÷NXåþjoÝRð›ÒVN<3CãY~£ñ’‰‡S ðÿþ±ÇHüôÖíGžA`¨Ä[áÁ„SšçËà  §ï^µ=ÐßÏ}m¦ÅåÛßGÁawÔÑmmàöM^Öëz3£oºiùÂÁé|©ô~pŸÎ:z¥’8ž.ªx×z Üy* !³÷ÁaTç3ó }߉Z²N֚ݼÁõ±U(1%ôKo¶»öÜóKÜ<×8ƒ94ß{++üýêí`È~¾ kà æ¾â·}‡À\ßòzwZ ¯Ö‡æôyP®ÏyŒXb[šnH©€õA*,Dí$˜›Üý)I`JT¯áîÓ§uååA°66'¬î!xü²¨yIb`åÕ´* ,ÙG 'E÷«f<>„ÅrL³´ípRmzµUa1ï'Å謃ðâ¼ôà 7®hÕ‡ð4ã¤Rw#œ¤ÉÓîxáÉ Ÿ=YÙpâ%8ñS!l8AÉŠ»'Ùº+› <á$&Ø©böNš!eÍ+_Â1hdõÂ1t*Oô‘´œ®„ã²XÙÙ#q™b†«‡ ᘪe½¨¸Ž*ëª_Æœ‡£vgéeýCp¨Ruø|1Ž!Â{Fp¤0Îw–‚cÊ‚õ¾c½àðd†õÑPw8äZ"½ ¼Åè5 ïù»lPs£¬”|GƒjÇ IßkFØÑûqè2 ½¾äâŽ\Ð43¾M¾Aà‰«ã3+—¾^¯­ëÄU0fùl~ ðÅ×-Ïw”%€–BY›v1´·}_ç®ä%¡¢ZŒÍë-·~hýüRËg|ÂÎn‰£žáÃÀ»¬ôv§;'H}„ðã+õëGÖ@Ðî5ñ ˜*„K§Q/ŸFôKŒ*§û „·,O¾ 'Š¡§YZ2aßé7 BFAØ“g*Œ…pßÓúHkpRfîÊÿ§‰ŒêßvÀ‰´|tÏ–RðÆýÜׯ›×)E]´¼\—ò§±àéu¨l”ö‚ãÛx‹—K÷燜J£tð˜Û\XoÁ™»øxtߤŽ”nO©¥TùŒ3_™`¼¦<ßÌ ‘xð”»Ìq_Çû=N\5‚ç*T¤nióâí&ð—G÷½Ï„žzS~n¿SºX¥óÖú=¦¬)ýù‹ ‚Î8ÐOµÆÙžFkñk« Â^D™)¹>«c¯ä汄ݙ;NmL2çôÖ°:À4œØ·g†+˜…mNj©9YmEÀ7+4Gò¶AºèÎîÑWÁ¿&ŸüòÎ|Bô/”;ƒïh@=ŸJàæ¾ÛlÓ c‚öå´ÖìßLŽa}… v‚ýœ¡oà·œv˜°ZŠÀÛ³ öû÷C`9~g: 8Ãí{{„À1R¶©• žc#ª¨ ÇžñRú„žv½QWX¶|Íê¨<ñCà©yœÓ¹ñ¼µ£[*’+½Žñð'xûñ¤myZYp|±¶¥d¢"«Üöß+onMäÞëÀ“›"ÞÎÏe!)7® ŽÏŸ×^~Ž“8˜§9ùÓú/w`ýWxÂf°2ä³Ùù^`Ömëž[”ëiÌÇëtÁ^ËîïMÛÙûü¥ÀjHI½w]Ö^K!FðLÆ”+ü g°O?÷¹TRöž b<›{°–ß›7vT¬_,yúxûØ,õ1È;J\/ÿTR‚Ç#ûR œ/#¶÷‚Ž34÷à  ä: ¿†`*.{Ü/àƒaã*‹rojð‡B èS]µnÒf«Ô…C(ÿ¢7ó« ?¦Öe5$A¸ò˜pذ¼Á ;üKÇØÅuýh~waLø¢ž·§­‡Cà—Rà‡4{-MZ þê8óc_RÀÛÿt~ï~ðLzmífþ;pb•Ö*#ðš/ÔÑ6oûþX“/¡Wá¤uÄõ™WOÄM¸~ÞŠŠp¹v°-Gâl§‚q¼kÖóýA ‡Üj½— ¶’]†üZ;0­4•(‚›`6¸4ö™X89ïÁ}‚7±gM½¾ Ö)­²Û£™`Vͺ=YàæCÅCÖ±`¹Ê|H;sÖ9ÎQóÖEÀF{PôRXlÌ?»TÁiÓÈûv#8Ùßñ餜&ÕÔ?“—†S}ˆÁR"„s·F®è£ÃÉkÐK+霶û•~!Ï€Ó³/ö>‚ÓËwëŸéö£KîxCœºç¬ß/¹Nѧº¨$Àé /àÚ•åpª. Û“ §Ü{7Ö»}€ÀyÇž#p¶ó±·!|=–Ñ.¯×Àí7¯:!ðX"õlìeŽ>1]ñ ‚zÑ-W; `®¹¯åR~³b99΂E™E‚‰6h¿92§‹'•œ2É¢fd´öó³GŸs†/Yâ~²âÀú+‘h{JϯËÝ?|eNL·¦ýõA8ÐW¼@ ô[wﯮнsfCwØ3°&5L±ýÆ«½é²k.Wè9ÛNFZ|'Å ùò ˜ã6«Ü˜’V§ëÆðœ½`ÓêjEµ7ù4ì¬ò¤>í~æ×&/îvZl'³¦Ý?N9Bxãä¥Òé³ |æ"fs¸™wÍܸBûÆ’Ð~-¯Ò`¼œö$K&Æ÷]㮌Œž¹Àf{ø9åk㘫àT0·²Nq$/ËsqpZ½eËóQ§ ¾ós?¬S’jmÿÞ…¿¾ÃX”ûÆxxqó­cùr-Ü ÕziÞáµE LØÄü»Òe3' š Î/!päàü9!ãˆú¼ˆÜïwá$xZgÙ±BcN›\·1¯>›¹DÖÏ[ª=û²=q’ân°’Ï{ûÉ‚uwUÂõën`›y0¼¦7BñW"O–w-â‹X‚K^ÏjÙ=‚×=KÛÁßð帨aM^>‘]¢üw‘Ѓî%ä“A-5ËÉ’•ÃannHG,l·z› /aâQÆÖªÝ{úÁ¼êesö>¡7F÷‘&F‚QlþúëÐøµyþcÿÈßõy#á I†à™-9 „cfì¶ï+MÁWŒ¿2þÌb8¸ÌÛ4I^]^f¸ÁßtM9ìÀ>9ZóW;ó#+·ì¡‚ïÞES[ ¼”7Öÿëueÿ´ë±ç—ç¿íúã~‹ÊßðiÌo×/þ×äòjU,usý¿¾_(÷3ϲ0U¢5®LÂy—Ž;$ð;p™çŒ*ÕÄDå*ô tçïaÖ!ÞgŸ«$êñ÷väzü4€Þu§‚j½ £!ØW¼ôÌB/éµoGÞ› ÜfGm‰ƒ€Zî×bæAœgcÖý`ÝYGñŒÎ7óȱ`t?ª“ì fŸÁ@P6á×6í¼=ð5˜â¡çî§ã™`êå)5`ÞKÛd»ÐìÏsjEÊ•Á|”é6RÖʉš‰±GÁø±´[B4ìow×&DYÁšj¹"ìqS$ãeáð×ë s8Ówe¿´ƒÃåbÑ\8žx0ªª n’[NöìL8rå?*gí£©QÌå•A„ÝÎ ˆwPOzƆ‚SpŒ¼ªN½0 Ž}·ªÄe^¡oû€íŽƒpüpxÍ¢;Mplï5ÈÈ%Ú½¹«3×õ9ø.}@ÿ\O ¹l'ø)¬Äfúí^Ÿå³€QnJϺ—Æ’UñßÎU€5u±••,ÑOæe±SÓNƒ‘²´lì3ÐóÅ«vúnõž1‡<®óœ“!D¿ì}÷\ÐóøÝN£w×ÁQÓíóþçµàMþ‰ëxYÌÁ³NðXâ"¢çÞ©˜/„c]ì&~ÎYB_O(ôü•à­•§}‰ 'ìœMåpæI8f¨ÜT Çá± ›ð£p|y¿ý›xÙâÏú Êà˜¼­3¾¶Ž¡g•ÒpÌ QHEØYÑ‘õHj Ÿ8[óâ;1ž¿ ´ ìó)/1[ív0mYŸ–¯ýìê 7ÇÛáRùáÙõ<0ii ¸Ž9Bp§ V%ùzÉ-•|ð܆òŽ'„7LütO²œžä™ç)÷Àµ:ç®%næqíh¿jBoâ=^Äõi«_ë¨=÷õ™»Ž•«gjý"Ü·ÏïNØîókZï‚û*w|ËVp§ÿÔ37'brŽu-¸¬Zý38®ÇsrJQ6¸BõJ9ñWDwµò<îÜ tK7åîb­aà43Ø»Eœx¾oÇ÷ÜÐWaÅR÷‘ï‰;<¾:¬vç¾B׸>pYÆ´€ó`ꊯ’cA«Y^—YÝ‚T‘ ÚMKƇ¯  Ê)ž\Ü Ú¾¨ªÇA3ô&1úÚLj¡½Äx£ÅÄ»¾ù® z²†‚¯(ÑOP3´Ùûô¸µŠûvÒ™ªßªú–òa¡Œ#è¡é?–6낾Rr÷‚½U@ÕÈûœ|à¡É‚§;gƒ³0õ9‰þŸ^q'7/àéáÙcª+€mýÃE%aÀ}ã+áò‡áXVYZ8îY³|+EQ†ãð(»©½KÝßÂþ¯ýÝ‘°_¦ú’Öz í'û7%¹cz²a÷”×§»}F©Ïì`?ݳ@ªÇö›ë‚jša?|ô}‹ì•¸|w‚ýå×î>[{Û½2±”½«.…7ê€1¯£‡îTRÇ…õHTSN ¬WWR 4€ýâýÕ›2J°fk=éz ÖÜyƒ£äÁºQ¼´ëÇuXO°Tº¡ë¨Â[òúÁ.˜ØšÈ:kû+öOoÝ»&Å ~Z'¬¾OY£>쳋t8«" ØŸ²ìÍsËfsÈ 5Žäµ Y$ú¥åì\Ç'{Þ ²Å¬©¾òj œ1m;˜öÎnÜ” ÒUUSóú*šüè¤CÏ@*îÌ;ÙÖ Ò`dÀ·Ó kì™Ü¬˜²Ôö §u@ÚU’½Æo+H‡oË'M‚ôhTª$õ ì·þGÏuB½—§ú‡Ý-*O€ G9;T^Â>A´l¾â&Ø+D­.N¨…ýú9Z‹‰y,/ákOzÈΫ»Rzö)ž «g|Ìeצ©Áþhäm'Å®“£ü˜€Ì6µp‹÷€Îþs÷V:ƒåõ3¿kÃ$S¿w*`qŽv.Ó(k™yTbÔQ°Æ}û´;äXOvRgZ–ŸžK†jXQf·_ƒ-}¥}ö¦­~ZŸ(fcFW+aï%÷5Ö`›ª:Ÿg­Ûfê±/¬Ô›¦Î’„EÅHªvXºz‰ð°„åòzÁzÎ2Xî+Ÿ¤z©jl¯¢ƒ0Oß1uJe,’¥vü„¥±~]œÜ˜´N²‹€Å›㙆°´¨XqÁû,#v(¨?Y ó –çÁ¼Ü>uöXTi.™Û¿âN/‚mÞ Ù¥°þ~5á»'l_†øDÞ¸[|u>¶â¡K†l™ûZÈÁ¶¡ËèȱOím(ÿÛÕ%ž—`ûþÁ¾À®xØÎNÊ&žÏvç™YeD½ÿ~¢[lw…ˆníw}Õϼ-ô´=ÏNtÓ@÷§ï8æ1Šðë÷Â7_]ª\Vö t¿7>+Cç‚>!ä!98tŧ—äÚ^`ýñüÚ0ÐI£5N~v}—5¯U±ôÝ)»>tý&MznMè×ÎvÞ÷|º×áç©ÔU0¾;"Ö&é{;6Ád½÷QVíc˜¾NòÊ…Éhácƒ­0YY{#YgLj'M*./‚é6n†›ÉZ˜,nžâs½&•vOt‡‰´kù¤F2L²4¦uÏñ†‰Ízpz"LÌFб4aÒ°{[ÌuØòGâ"Âvë­µ—Ƽ„m­4WÝR¶;¼—<9•[)ãO2аu2„­æ›þüÊ–ëŽD¹DÄÕmÇ`;Of¢Ü~Øú Ç„í厛\;ØFÏ»5çívBÿºaõD..;sm;¶'fn âv€ö`„/ŒíànfÜÐ% Tw©=íè¾™™Ô™  û;õwmm™[“ÎÜNÐâÅžÕÉø`탸4Ðv,M— -Ç=bqÙm¢?Þí­pºZÓŽ`Åoj í¹Aúú´¥ß·íê!pÖwþG·C÷õHÜé*èk[ì|^wRˆ“¥NRŸœ…ngu¹yô][yaÒ,è]*(«lO‡~¡õó6ôU¨o?Ž*ƒÞãEÃãÒ ç{n\ÕÒ“Ð{QüØl|ô5/ +SƒÞ÷:®{Œô£§Ç}¾øÖGâ?ûº9,ËB³Ö=&êV›ßÂúáÝ©¬ù®°Î¿Øæ¥¬÷8kW—„õ‰oÎÏ–ƒÍøIö{`½—eþ1é¬;.寄õ×g¶ªYX·ŸÚé”xÖ‡Ž];´î=¬W­êq¬k…â['1Aö kª ²¦y‘S\ ȇÎÏ2ͬ9ýÈ钌ɭA:>À*};¤þF —en }Z#5z2ÈÒ‰»d4”A–TßÞßòÛžWÆE7AæÉ^ŠÏïY僞Êã ½ Ï?”÷dÑÝŸ“öc’ÿH~ÉHèv¿¹+P¨‚îêù¥^Ðã§Þ¼½Þ“bÒÅ©9BO“5êî>}èÚœs[ó.œÐ·ä­•o¡'®Í]?‡¸ob|–Œ÷&}ÿZvIIº7\¥É)? §×<ÚûÓè¾›¾=|¬ôå‡vf‚z›øÝûhCR›—Ø~™=g½æ~c/oÖ !ؤIÚ·£rÀ>x°©ÝüØ!Ñ¢ù…µ`×aÏÓ3;0fÂ}):¬ÕûlƬ#ÚËß°õ.ØgX/¯|;àdçw—«`GÜ;Ý^´ììzËç>ã@:3²?eHšWâwO%üJþÜììã …Ž;`'ÒëȾþó@ò{ãµ»ÌVûóOÏs= ’È­ÝGÒÖ‚$çæ\â0H𷍔Ùç]+NW€d¡Üd>?$ñÃò]ç`5¨¦›#²V}Ên™CeÞÈ:¨hpwö¬Ï„úT·ÌúW˜ µéœB!TŽÈÅ–„&Cý¡’ç¤y±Ðpv.êä¸CóÔPçYþhÔ˳ÐzqG“ÌŠPý¼ºÅÑ 4´{vÕ¯„FÇðæõòµÐà|õ?Ùšéc+Ít0Ž,7kÓÿóa¨ÁKg4=_iÆÛßëëUÁø4Ox·*L×IG­L0Z¥ªË¿Eƒ¹#ËÑpé¢þx õ,k0CS F—]ÓOVuÂs.˜!›®hVïsâVÛ®Y·ÁÔ=2æÎ®`jÏST4í¯|mJ V}Ü%ýùgêQ€.–0ô´¼ÆÓLqî³s¥®ÐÛŽXc‚—Ó$› šÖ“)ÙŒ  ±‚›:âD@KßZíú¶òUjÓnƒvrŠ€1ah>Ëu×øé¼Î%è²^hF¯dí%} ³wd]t¬·‹¹ û}¾Ø{c-è»×LK×Â$‹>„•†î¦°Æs>k ë §s–¿zWß8Þ'C/’sèú÷)Ðå¶¼ [’ŒI_zwÍχ.Ùkµ´zg_S›n½PÉÌq[ ×Ÿsù„uè{®ë£Óu^žðïq.¤«Þ‚înÙ±Êô)‰¤ÖjÂ/ÍâõÌ´'Î×yQÜ$A/"ç¼ß°tíµ.º}y ¯¨ =~Gôv½:/@?úñ©³ÖIÐ OäZA7味Ä‚î!÷íÝþ`ªŽä}˜¦Ë}×û,0­öî0ýÆ·-b§Ø>`Jj\3˹ ÆEQ™« %ÁØ}°±¹‚FìŠì¶¬â|Ý ÖxM0ÎÚv{Ï3­êå¥kÀøÌÝwuk$ÕÒk&*“À8Ž×²ä•`„.>w0ËÅ3ßÃi5çÁHüæ”m¯`ôøð{)öd.4¨Qø†Åòw’ap1ÇLØ£ÃÎÁ•6[`47ªoß…0ÜíÊÍéáb—O®Q[aè7‘iP¼F¡äøÃA0Ò]!¿»TÆrRF!Óóˆq÷sÝ5s8Ã[…`z'Û[`¦“šõÑ$0ÚÞ~yÇ#Ï-ˆ=*Œ7ÙKKÖ‚9ý¦oûÈ{«†cš(g©v4ar˜ &ÓÖeÓ~ò°šìh0^«k“/Xìíé!Þ ÀûÉYnÁ¥8Yâ¾-ýånä/@Ìd–ôX5;•¾€%5föÆ÷D{“f,Œ ì}ónÉÄsÜÕIZupÌ-ëÀe1ÎåTÆ1Á,è½ûZCŒó×y×.Ë€ç$o?Õàs#ËÌ ÿû¾ï`³èwÃËk=9G2ácfÁë¬æ»ø»€4KÞªÊ)‡ðÇO^^:Fðò}æ£fßy›³Â1ÖT‚—‡øÄm|Iøß4û‰v¾™³BbÛ7¯Êa×Ä€ýµg ¶äëG{+‚õû̪^ØG½¶wS×ö³_ÀöXt1èö°n¼P®y –Ê®Ó'>År¸õ¾lãI×ÎPžƒ=3³àΑ‹`±);}y ØfÉ?vV‘Ò†o \À^³ª÷ÃL—¼Ý[¹yØëú7Ôn”C}äkÙg~lPùå•ó"`øûiθ †\ùƒQw ?mðþøûM0Öéòd½§ƒ‘4~ߨbÜ7Ÿ¢|J5ÃêDÇÿè™VË"ÆÃŒ{6ÕC<Ðs˜Çnh=ÖEäÄÖ± &Zzß%iä}ÝPÞïÙßö@ ”!)©^kÂ_:ùå–%ÃÝûDÎYP.ÜÙQ—åJÇJÎÓû% NÓw\rTïÔøiU ôm8qªì(×;êǯ¸ªøqi©$P™º§L8 ªþ]köP÷ÎÐ X®íaâ7›¥™oË·´Ã–ªù8iÒLØj_=Vþ¢ 6ŸÂèJùaÁ~UzÙ6 £EVIÁÖì`~àæÕ°»úî¢Hl æ;§Œ‘'êÛ¿\˜U›oÏï !êY¥´5 Ta;I͈C1"xÑQRf Á§½®f=ãxÄý=cÑx…w`]ÊxqÑr¬%¤õM½Wa-]pdá#¢k/--Q{Œõ…`…¤~Ý2Þ ,“ýK×i{‚Y´«²úX[gJûæ;½U'gƃÎR~>DðÇm#†’à5/ç5§¹€þ©=þ‘v9¼¥ncÍ$~~ûÃS‚²Ÿe´¯ c”»G¼È0ôO†U†Ny™Ã=0,½Æv7f÷ë*voÆjv.1>‚ÇÙ Å!ÑÕàé—ãa cT¬ŽÄžëûîÆ<¯JØúZD _Î…ÍûÍÇ:]aóòÓκÆVXÇÒzKÇšÁúLÇÇ, ¶vVr¹ñÌWõ”²zI;#6sœÔÕîÃú]EÝul¿áÒÃ/\ØÞy~èñ ‚WBßTt˜‡~æ‡e‹ÕY`X–ò­µû‹¯v$k£ÕÛ9„]_Dד vkSjÊx°Ì7}û@Øi–×fÕ9"£Àj•*Xò>˜ð›Š¹Ó‘>:ç¾ ˜o•os±ëy¢Åº›¯À:"ÞcÝ ¢þº¾8B#«Ü$&€Þ¤š3c¿3)©ä§ÇÝÀˆë îHÑã 3tâ—ÐO½Ù<¹–ÀSEÏŸ6 ðÔ@rE ̘)œSçÑxtÍÞ®Äüš0ÚWô(Òå…dÂÞ­¦DæNsé§T—»6`.í>›q’ÀÃ?õÌT}4á£&X’úvís¸SBt ¡‡•÷Êç¶~]iìÓìfŸ/5>×A؉œis_Êù­mæ@/=Fè-ÿlýâL°¬<NI]“zäÉ,M°Óš‚wûRëqú#a—¨s6›ëü¿×²-žŸº§égfϸBŸ²áý—KÌ—¿’ò?Žý¿'÷ÃÚÛÿçõ|&uL/ùÕ—K}™;kb×…?.—¹¿Å7ÊÌÿ˵q='&zÙ—KzHªWŸúÇåZ+™Hm-úãrY~{¦îé\ðçõŸ}€[ú¯ãÎýÏåºÅɾ›öÇÿ'E ®X{ÊãÏÛ‹È5Ûÿ|¼k*¢å\B$ÿüx ®ÜVßòçõL^Ìui—oøãré³qãÁÆe\®Ù½ÇÛö‡üñÐÿÞú_o—6kä=¿2hù»G] šsÇÉun% ]¾§a yüõKÕ5Ψ-1•.áöŒÞ¯/2ÄAݳ>WºõW»»enKMjãƒóè‰qþ`”«ôñÁÌZ7mõ^Цðî; qšÚÇ&Öƒ‘ðrÒDû +—ûm›÷¸Î`QªnÅ¿; ¦¦ÞQî&Xßþr{ºc˜óªjóC~ÉuãiX† `ýê°´Z¢¬¯Ý[_\Ñ{ALaG¶y)-ÃåÛWƒ5%ßó£{˜©Ÿüã7ü# ¨p£þa(X†‰.ýM` FœQ(èßg›Š=ûüK/¡ÆMÙú` ×ÈÎü| lÒ©½5ìf°•ίÚ>ú®ŸyiézÛ4™ãÝAMïñÒ~íÔí…ÕðŒ_öCÓÁ$lÏ Ð.¤ÕJ‚6ðü“½d#˜‘GOÔç“@{½aýÙÁ_y›èã´vTØg ±9»ŠÀxî\–¸,뾋7f¯Ítd]nhéwågd¹‚rër§õuЗöõ4ÿj'fó‡ùV¯AÜ‘)10l›*Z—°‘¿uÙù $ÕÌc6ýÒóåñi¢¢%°ñ¯šPIÒ‰oƒ»`“Óåûºã8(R#ûÙ»AÙS“щH0ßœXøùÔj‰¤¿Û±Ø’w8¡Z䫯³‹]A—œã`Éëo6·”®ûg£Œ_óàXdÑ×­u Ç}ªù‘¶ôÀå>~/辇ó¾:w‚õW¼¯ý`.Ö?ä´ôçOf÷_ s’íäìOÕ¿ÆS›˜¢ëýFJï÷z~ýøõé‘[@ß–ûjÙ^¢Ÿ´j÷+Yóþ®Ï\<#å䱯 oÈY½vÑÿ!Gœ…ô0ôãχ,ÒyÉÈ>¾9 ÇoÒ š ʽoWOÈM%_êË¢~=¿Õ64bÈÝé9´Sº w§)«ȃùnŽQã %P²ç.ð‹2þ»>ùübó/Sæ€å¨wÌãÞY0=|(²¬í"+J»€*÷sÝ5U¶Ù¶3ôçS#fîØjÒàtÁ¹¿ój€Ä!)WÎ瀴üH³Á¼k N˽¯x¯4êëòP‰¥ D­Ý_m¼å×s¦I_C”ËÞ§,œš |ë…ïm m´i4ý÷öÌ8çֶ¡ߗ“«GCl*Ƚ¯ú,ÝÊÎ] ê“–ük¹Œà^ÁÁ‰ÿÈ7ò«¼ÌG¶@ea缺§&cçîªþ½¼dß.*üm9¾iýX_]о÷ˆø›YvAóåø_dËÛé‹ÞývŸÈ Ë WôõȽ”Ä+ LË\·õï_Ë¥t‹©E¹Èý¶œj°ÍözL(?öHÇZY€æ-µ£úyø¿–˰KåéLØóûrÏÛŽ_\ †Ã¾­ç¾ŽÓnÃÀª -—D¿oßóé÷ùHkòV|y ’ÎDùyKt}Õñæ¿£NnztsieãïË?¬¶7Êù¶×õ5û@™m´½À,áß÷où‹âd“ßÇQ§¼ãp6& ”Kb&­-a1k»7èÅ#ëE¿ƒ.saÈØ ÆØ’BÛÎQ Ýb'—ýý\°ñ[wa¼½hí¾;)tPÞoñ£ò@}i1½ÿ~2˜UÃ/^}þ•§†.Ÿ]AZšjë›7Pʵß^ò´Qù´Úï`Ñ?sâaéÒßbj+;›PËþrX]÷w|eXåjÏT8G†U^DÏ׉ f|ÉñÍQù”ì(F® HmçÛ\Hü»¾å‰ ]SD÷ƒ¼w‚0H›ðGßIíÞ ë|üÕ! P¦6~>jֆюn îº•¨±4ÿËkGvý’k‘¬å>(ÛŽŸ-H%ü&Ç*ú È•íU*6% M½6Í|íâ_ó'0˜ßï¨ òÝ›¯¨ƒüæb½ó(-ƒÏþ¯û•®\âþéØÓ;>þÿÏŸW¦ ³Œþ¼Üþ}îoÂfÿi¹¿}ëDñÅ_}øãr-rùž?%ÿq¹VÆcÚüÝþ¸\›ÍäOÙR\®é«4‰n¿Íô_“K­×Ó°óÿ˜'Œˆ{Eð,I©Ö^§z°ÇHEî#ùÒÅÇ'þοë;Õ•³£ÀX˜ø4á4è5ñu!—_ƒ¾zKèçôL°r>+8žÎþÕnÅ£láÀGÐWMOîãß÷^ãáœHÐ=–R¤Ÿî…á†b¦ c֏ޮ½Û`þErbÝdC˜î ›0õï¼ 0nœz¯{âU7]H{®ó¹yóÞW•Áâä¥ÏÖ¯Âlã÷•ýNÿªo-åa'¢ ‹˜#oU–\ÅfÖy~“,\YÎ4eþÈ÷Á© ,i‘»dH5m‰ßµ©‹ Ü~'ˆ2Ô÷kœÞtvÀ¥ñ ˜··yévýs!{Ý]PöWž 3†UIÑð祿âÕS|/팀ÒzúƳh5Âê~˜¬Ê×ÞËÝGâÄ«ï‡uæÒ‹wÍ<`³Æo›¨ßNX3ž¯Zýâ³¶ÖSœ|å kѯ'ÝÁ^ç?~{M(ØäÌ÷«Ö›bY­øÕ/¾ONn¾ ¶´¡Œàأˣ Àý:¡CУ‘°¦ñ²0>­[åÌ>8&×Ä¿0Â~é9ÿcYîw˜õêË\¦ó¼ö›Vy«a1>?u=ÔI#¼; Ô+yn“ãüA.ž»Ø˜ðç™oG_¿¼û×8%I…œ`oeWUÅ‹jePýÛÛª:@5ãøo/uåéÐáé_$Õ_¥çsþìâ¾ù¹÷zˆöø’öërA]ì—hŠÓ°Í‰ß¾¶W´Ž_»ùëym·+®”øÅì9+·¦ƒí®òúgÀ†—49|î,ØW%• Û ÞµÚ¾dgÚÎ35°-Nv5Ÿé¾‚û2‡9°!»Üy.. …Âì_« ›?¿B/kkìó¿óú`òðñCßÖþÊ¿6i·X«öFèÞ<ºtF`& 4ü¼/5¼‚цÉ=þ¹Ðw+¶h\ªƒËMòšCÐ+ÚSòk<Æ¿eYqí—Þ’ÎM=¿Ó”É7'œ`€¢øíä‚O’»Èãúü›@ýbiPN¬ÛZ›N´ûýóEÕ‰ •¤VÇІsS6ù¸ØŠÇÚ€ÖȺ¾í°D ½'»éŸwE¯‘‚ý²WÒ3þŽ+(MukÛ^Ø_ NãÖ>‡mE¯órmgØ¥nv¹¿ðìï ÝÐÉo®¶š=1Q‚}iàÍ¤è ØE6¸Í€]0†.t”À®UËìž@û¯þ]míò=Îнܟ,ÖOƤõ´oϪé]“;÷Gé´BÜ}#0‰Ë¾Ü: z‰Û‡ïìƒNM–ûì­âÐ[ß2˜3Ú¾IÛ"9ƒÐ o `‡Þ†ö9äò¯Ð_À‹ö{§:uä½™"èÛ»gû¶¦xìþî¢Ï© Uͺ¦’XóËîh*nr˜ ÚÅýç4;Ÿ€–¶câ•î/ :q<Ô ]ÿmÕ]½з®=§6cèQ *ýË@5’ù|ùêrP©"B¶R¨‹tEgÜøÎû‘ø„£À©œhôM`ßž·›õJÀÙümóLë¿y8Ož¥V=8æ÷Uê’†Ò×{Íš^0/惓²åê©ãÀ=r1/Õí 8Å7Wïø¨ Ü»ÐÔ¿qpS[Iéõ6àÍÊ ÏXvÐ Uƒ‰¯æ¬¾µFÚ’¶Œî†Î’¥´×[ÿ–«¢c~înI´„d¾†6&æGˆÙˆCÇYö@S×´»dÞkõeCe‰X·ÎW¢½ØÆÅXèXÒåÌÇiB‡eëõ Ý “Ô†Í܉z4‰‘}e mÝ誱ä,Õ#V—ׂzýÌÜÉýÇwSº>òJH!¨Öã’Òâì@e–úon‰ù³ˆZ^Ì2Pi÷“´ÒòAw;¿o4…à#‰'ìö*‚ü ³?å¤6ÈÏ|]UdÏ"¹=àâ2=8ì ×›M5 Á©[wÿÇw.¸_âí{ñwü8L­nëi}óäS¬Wàô/ª´(:.«wúñx8`Qð¥9^p(xB•+A´×6Ëžu\²ff}] ¸öõsü‰ú Þš¬‚æÈrÑõòP{¢ù¼ÚÌãÊź§´¾†šØæ˜Á¿åŽ¿T?´Í ªS¥îÏQprÖ,¹*Yy¨®ä®yR ñUœQÑû¡]òã9%*ê[5 Æ@UîîR²©-T'ÎVMeCí®æ‹.ñDÐFüQë5l® Ê*S±†8Ð'-í(Tøû½ ØÉ7J4NMíØçôïís@S¶mŸµ×Ôé~¤ÐAíºâvõª=˜ëZG/ú¼ æ·CKý{´ Ñqí š¾Œ~‘6êÌ1·]: Þ_y-íà˜s4ièQ ‚†Ö n„ラz¹Ëåi¯ˆúÂñì,»„“šp8|TYÛ2WÔe£¬à0gÌ#Cð$•Üïç[å#ŽiÁá‚Ôý! W8íZ¿2ÿÎ.æ‡w@w©a û1iÜAe‰B?(V0SYcÜ øéõtQÿåj¤½(öì#´bîu\\( Íbéûé³¶CëŒ&÷Øù#ÐÝL%;õZaR¯Ë‰3&=´Ú1÷¹´7Ñ·r u)uqÁEèÌ;Ôí6%tÖÈ{`°,ÇOI 9 Òö¯÷oríÒÍçÓžzÿÒóCÕ˜}TAu¿CÞ|Ôç•–%¯ Þx"ùà ÑðÖáY`6Ũí{Yfîž³ŠN} -|;?ih³ç¬4ßÚî3÷¬Fé‚ßú“wóãnê8‹Á‘¹Ó<ÅV|½ØiÜÊ¿ãeÝŽÊ>ðÒœ¥.Ÿè€ckSÆu‘pð8ÉS\*xûê„­n:àûˆ1dt‚¿,Êäá·eàÑ6VÈyž©à´ySxf™Ç©-˜ä9bŸ×@gò±o!ùRöm)³½–H¶`´²˜²“ÍßñQ0[¹oòT C­ñ„i‚±›V-õ9óˆ›kù@¿3ÁÉpÿ>¨ã-µu“–îrsõêÅ¢«¯ŸõÏ ëœ31qÝ—Éáwfƒ¶xú ë`qMsõ2@Z&{ô]¹a7n‡¹ÿÂWÖ×î¼k£°¢/up (Á—t¦ò%)gU”#(;©u­žGÁJÿ1{ÌD}0…+=£ÚH 8Ÿ^Ëæ‚B^‰°ÁHP\«|›Ÿñ·x›?ø^ió‰?ÿR%Ú½QÈoó•ý×äÒcœžhªÿ6.ÎM® àt{üÞ?.Wí¨˜M¸?ŸÏ›Õ6!Èãåí¯7í‘8êËÀ÷»ã¹Õq=xB¾“Ô3u)‘KŽýdz ßߪ¹ ~¥ú.çÎCàËLoyCʾÜýTaô%›Ü·|\/yôU>ø+\'ìûñ ü¨…Io›Á÷Ïu÷þ ¾Ã¨òG¹˜ðWxþ÷ÿuNlÞÌ=ö_¶¬;8­Þ…=IÆçcĸó‹gè\¦Bfoí¸bAP:~DYʰ»çKxîÛ wö´êåO~Ð*Pµ‰kµËÉR)3[ 5aãpû²9ÐÚ8ê€qFtZV×_&Ù1ÂÄa3FLúð÷AP#¶=”I ìì1­*öû¿óÂÞYñc‚ï3X[tä,gfƒ¹sçjkQн'ÕJ<mÏÞKËÇ{ΡŒ°ý†°ÖqôÊáƒÖ¹­÷™Ç'к¬{ ºß½’”àmª=Ëò üœ‡jÉJ18$ú}Ñ'®›Ûx—ÿW ŽygÖ†4×ÝßÞYyx:Ô›û'ÇWܼ훰ü…—›²OA0óšDcÒB¢=ÅíMÚ%à}Ú~´¡ž°ßo*çÖzž§ŽZÚF#(ÿµ¯<òs.²¿’í¿Ueú?h€ÎÁq&½ý¿òqËÚ—èÊŠ;B×mÌ»ð+_Þ?¶ð#T†f©¿"¥@s®ÿz¹™ÎÐKÙ;æxäx(zœÛêTâ •Éçº[  6É#‚VçÕïµR ªÁÒYïVçÖÉKß@kY³JFl“%^Û¶ø[®ÝÞ´ WŠ`žóöm±Y–AŸ@sú|°"©£èƒÇ»}~›½KlâgO '€í0éÓ°ôÓ«@}?ÐøFÌ 0ƒOnIÓJ㾟ãÙáøø¬õšL8l=*jtŽªïã·5þÂug¤TÚ9ÃѪDŸ6~‚ î,>(ÇÒGÂ3 ¯À«nÒÙ\@èÓX¦TJº²z^µÃ±s†Ò«¯jàÉÕ_ÈxÏ…ãQQÕ§_¡ÅÙï\¥{I•©qCP:©wJé,aT²úF+þâƒ~kê¡ò­®Ñ×eGõ›zmH¨íÊY?^ 1_Ö©×èaââu7÷¾¶ƒrªú¼<ÃG{€sFW!9YÕ£¤·⣶|›ç± Ö.#û4o†yY'劌· …—_ÎûËž‡~Í_ûÂz)§ƒA°ûÒ0IÒ¬µ’š-†ÁR¿ä`À-77í&] ÃöÇÕ»:_ŸÃú™’Cë»g`Æxö÷Šó‘b¦›Ìs0†î”Λü¯×sÁ!…¹K³\<+]3ùÿ,ÇiƒùšIp˜~‰9<ª·ö–glý×r%K['îŨô¹K¼ôçÿ¿ËíïŽFdU¦ýл-U¦3*!¾ÛçËüáQÿZ®ÍØ¿›{5Àjn[÷ÏulCï°^õÉ`;6&…‚}Ϊ,Öõßç‡å6ï =Gß\#ý°äm÷c|ÑB1 p¿·¦2ç¼·Ï޵¯4ì_ËU=µÈ.,NV+ßoÜ@ÿ'>ѵVï² TŽñnmŸµ¤íQã&ýk¹ì÷3ï™­{ÉÙ¶}ÿá—Á浈z„ŒÛ5&ÐÒ¬ l®WÚû"¸·òÎ Í{ŽëQp:u'ß—¯óþ™Õ/~Ä\èA?ÜYmÞNÎD‰ZÀyÕ~.r©¸wÕ÷ävüˆÍñVpÚÓ·ç‚s·â©æ\k‚·×óN熙ØÙe2Ð*‰GÑ•µÕª1ñW 1õõ:n)hîiô±lù[®æ|ω‚õï¡þØmß…Áa¨³ÔÏ‹˜@[;¨òÜôZè,hväêCùuÞ ¥(¨®9Ÿ–½ØZu Ÿ{¸Ðþr.: Úß½f_6{òCŒ³6䪽`d'øŸ^¸l“–ÐÓ—ÿ–k»ž»z̪©`ý˜Ô´Lù XÒ¥ñ÷¤Á4¿£¥þ²,Ã3-©GÁ¶<¡Íá@0ØK²t·u€9ñ”S‚2˜^³„`ôùñ¾}¹õ¿Žƒäæ-ühðÇñ×ä0;õ3£ÿ¸\ë;‹¾7ª}ý?Öã<‰›gNĈ‰#ïª',ÙpœS<Ö§Á€_õ^´ Ý’'ïuž€½=))±¸ýà\:¿®©\õÃ[’³¸à’®²N˜w‚°[ÌQΜâÕ&Õñ:àœó<²ùñ\på$U9&aò‘€2o¡»A¬5ôóè{Ke÷x@ÀÒyRÅßßE ×ã-Ýù¬z×Ç¥lj^¯R¼G£ –ø®=$†º¥ÖïÚgÁÔÏù»­áxèI•é¼õ…ÇâµZê]0ØTí­¼†×O:|Ö_ñr[ÀnsH¡oýû K׳·Áj©Rú*ýKK²fÇîy V˜M°’ð˜ŸS³Œ¾o}‡â……£‰qí9xã{ Ø–‰Û·{<;t¿»Yôü̶Fá ïÒ=·î3茾µœ¤Ÿy-¡é;»s€ ÐÊ"ÒX“×3u`¿|4½êGpÂÊiID9 kÞvnQ=ì×ä|±˜Û è¿ô<x_n¨9½ Ø›ë$v%öÃõ—Yºã²íØ‘@èÕ)EÞEô¹5†¯ù ÷>)±˜ä äü•øxkYý¢à#ºz’i ðA{Ï–âap´êÜ}“ËÀY´Qùñ‡`»³»…¼`[_¨ø®`8©ZÖÔzýlks`÷…Ïáoz¦†QÂ%@/¸.|ÃB@ÑRò‹è‡I†V‹ÀTs@;Âd…¬ÄçGa¡8sp’$ÌÎUϳ=ó)ÒâÅßÁ8½—º?üLä·} /釙ШTa­*,çPÇpv Â|™ïâÍ °¢öFŸñl„ÉRéOµ:f°´g,0Ÿ@‚%Np‡¢¯Á²:LtÍlP·ÿ\W@÷®Ó‹ÚuÔEf~Ïjk@ ±/¢) š»Üö0‚oìw3ÑJÕ“¡õ4$Ôl†Æ„NPž–ïK¨uœäËOëz@í»¤uïn.he§Ö–Ïå ãkœá>P* sG¤A¿Rúã™(â§0¦Ô%ôû HƒûôÂ^fêWBÏÍŸíû û3ÉÙ‹^ã9­Síén`€»«¼o  l)¹Ôgì¾xŠZ—dÁ.B±Vå{ÉH'‘%Àœ ç)ïÂ`Ïù6ÿ0?vÝ”i1sˆz/Xê¯{€ôWØÆî•öèt(¨7+wÍ m"]ÔÝœ j‹g…¯°Ô—"5a%. ÉÌ,­Füÿ‘¸[„>hÇ÷Þ?g»^ƒ…êŽÂ~Ê'ÊT›|Ø…¬ºêeû;Œ´@91ØcÊñúçBØu¬Ó ä†]¦…È`zl‡f¦,¿Ì„¢ÔɹމŸ²Ÿ~{רíhLÝcrv›ŸŒœ®ƒ]|¶åEKA  ¨z¤m±éÓ ê@–itYq¤¤öUÎ \éÞÓ³ ƒ:`uWeð®h8HþÚt¢ÎIäVn9¬qü 1¸"Nw =¼7U^¤ØûCžKžå\¦Iyúô>©‘ï€V ÷¼kÀüÏzQfÉYš[¯&X2ëFwçù€ù¾p ÍXLMÚžß­ÀHvO>ÒS"k}™Ç0c<+n fr׫øWî` ¶WV’µÀ\%åic%æÂøÝÊ/è`n­˜v›h§æÌÏ·Á¼þ,1¢™ {êHzÉi„½}tü…Tìç‡Tϯ„ýå>³òõa÷-T±?Ù~7FÞk?ìCce¶>‚}šÜ÷Ó× ýsô–¿{tvQêÎ&ß•`§¥Ðî3öQ׿¶?ž»o—¸õá°{¤døQ(?”z )Vå?yñJ@Ó Ö3—ˆ¶&wçËVÐæ7.þ¢>š‹o­¹ Ô ‡WI]Q ¾*r¹Øy´±]Ò'ÓA+•mt¢ÇV1¯ —Þƒ¾à¹¬‡ Qÿ]‘·å1ÂÍ¿e·,"Æc±¼t¡¥h½µJWŠ€µû¯eÈ`«P|ØŸØuð´ýÃÝ`ûFyYH¯+9ofŸ]5˜W™'ÒÀJ~Ï£»þ.Ã*áK‡?û{&/+­gNÈdâ<´ë×̈́u3 µìøìäÕÁvñWmø.ûL膞2Q`p$>’8* +´’€° 7$ð¯ŠøÙùk¶gŸsª¼áQ7>‹LàéÁ3öeÁ!Ç{K+îŽíûÛ± ¸´!·cUà#ÒÈûÎd…ƒÛßw§Í„^'ìy¦ë³û*„ý~¬|såFЬFâQ,-òáÜXnh^–Ô†š–מqèh Òg½ø1 Ô­~ÚRDL ‰Ê 4M.€ºgÚqÐåÔë¶å/í­Lgs#èI®_)»¿€6>½¶ý£‘òEVß ¿$z²ëSìkÐúïŽÏ ôÁÆ|ç¼M¡OHk™l£WQ>˜ÂvjqÅ„sTØèœÿ>u~3¬×L¼¸B6ÂX‡›šu°)Ónðõ†í"ñˆ9žù°~¼®óæùrØZž1xn.l6OÌÌ0lƒm¸÷Ú{6¯`ël}ÌÆ_ ¶«ßr4b6wFòyÙ‚c¾ïiÓ‰IÀI÷'&‚·Œ^`Ÿ”dT¬œÎ/ig–XhØ[Ânyd9þóDp³¸ 2°Y¾é¦Îà»ß’–¼ÀìÅÝÊŸ2ˆþ¸SÃxX‰›ø©~ÀØi­íÕbÀm¤×ð0gŽ|_3øqû¡Jļ=î~㻘·{/*30ß”¿H†ðóf+&®·#Îɇ ŸéYé;1i!X:)wÓgóýþÄÏ=Ÿ·‚Å8h%µÌL{vþ„ÒJ°t¿*n—IKv€,7ûXâ¥eMö„]›:òžìDZGyŽÎ‡ý‰g©Žä•ø6ø–°“mÉäI3`›Z*>üÃv´|åšÖ Øe;)¼§û%¯Ï)nê‚×çÐÉÞY°–YsbîYØå;}ßô¨ö‹Ž–6~@Ø…HÆíç.+|œ´îj3¸&#ó÷,¸…É»Ó.…‚+Ù˜˜9lnÔ‰êù¬›àJ½\˜r› î+ ¶±ž ¸!ûú}×°À=¬ý|;>8é"“nN7å`Úú>Ï;sˆG7G/Í5:œ½Ñ–åkÀ‰?ï/9Ž˜oß íßÖÑ86A`M9drn Ø+‡d‚õÉdïJX;Æ›Ÿó[VÎöYF`Ýx7yÀ¥¬˜Âޤ"°¯RwŸEàÛô'|Ã:°w“"Žp ½zú·åÎ; öºË.ËãËÁÞ?u^btØÛã"776å!"pëE¶›‡:‚Úc—}îšD-6WŒh)…½ÿ§ÒÙyÄ8™8Y}Žø!`¹ì'ê“&àú¾žkw'€¦çß1ÒÀ™ð®m¼s ƒ×¦l}MoŽŸ{Q¿¦´à‰h5𸉥™Oàµ#ï¿k>ðt“f38±¯Úgï8 Nå¥K'‰Ãœ}hÜÑéà.½SbKœ?J^\¢²\ñló&­#@?¤ˆGð˜à﫞|„58…€ã\ÝÑ‹Êô/û Ù2Ú h•NàE–ƒcê2Çb캑ø“Q„½£ þ8¸ì¶Å.NGžÀÚdT籨~;Þ >`õê¯Í½(kÕÏqw޼ûãØ'[ë `½c€TJØÍcÍÇL¾€}ô}rðí<°w®Nx—AðŒÍúS»Þ­‚õ–D›)MÏ`=«ÛÑf£8ŸF¾³ßw®Òñ^áp/Šôìº8ndH~ø:-pÇ?¸÷ œUÊ=ÇNƒÓ¤ýAf´ ¸jsù=á±à&?œµO÷&8 õçŠvƒûMfâñ™®àt_ÚÊü¬î&öÒ7¢ÝÄ Å·‰ã¾Q‘|cp]FÞ{KÃAý£¼HZ'¸±UA×mùàVÔJ®= ®¼g–‘‚+Zó²ƒ{oÙ¦û=ö×ÉßOow¬`îƒËÉàº[+fU@ðÁŖ̧à :Õ­®O\•M¯^ßEü¿ Ã9›ÜÀa¦Ð¹q7l~üµ°ÖfWοFØÍ‚-nò°Õ Õ¦¬ª…­îB©c~|Ø<=<_ñ4aGÅ©¦û/ƒÍÍmo%Ì`·­¿xEmìôŒúÞC¶ss–ôëÃ&‰uhЏ+ì’Šl¼ó¾Â.ká …„/°3Ÿ4™ò^v?óµ9Üth˜3ó5Çó¶f®ÃÅ×îüê7p˜“XýÅØ\zúŒ»O¶ÀÁlÙ%Ó“Äÿÿ”P¿UÜ%—ìV­7ŒsÓ<ž,;˜½â6„[d¾íƒŠE\ÜÏ~+«¶ÂaR·Ì•kÁQ‰c έ†UÆ'”À1üa;/ŠNŒ_vãY‚~¨)VP¼ .[ÿ\&—8+šÓ÷9 Á)ñ8ö½Æœ„ç'6íç¼ãØC_=‰ñªó0Z¹†Þß Ö)€ÂÞ«MØëi+Ÿü…sh¿Â Ù^ØJÄ%.‡†qR]_7lêÆ>`î»ðµ<Ý©l›°)à¥-™ªÃÔUý .àM¹RÏy ¾‰qÇþÛÛÀ[ZK—âÊ;iSMÀ—I Ú ¾ÜÛSŠfÀæ¯x›°s5»”©’ Û‰³Òv¼q…í¹šY"Jĸ:°z­ßñØOòÖ¬¿x¶u‹’úW- æ¡G¤ÑbCØ™tnλö¶þNÜ¡ØÊÏä¬X»0Ó c?zÂnÌØ*=ظ¥i5Â.aÜ“ˆÚFØfŽìó:›îçõ1F®;™\ývÚ›DÝ`sÿ©ŒÄ'2ì$_sr –a7xÚ§´¯½z Þ^ÇL‡Jð¦W®ÔKºÞB jHY;RwµñàIiòWbüï.Îx.^šç¦Ãj†pó½,á7F¾‡zÂÁ[-aàTQÛò Ѫ\~ù>8$¯k*žîŠ=O’ŒÀ}”Õññ ®ï{~žFØõÃaêUpߦn^ºÄ??¤Â â]>Ê¢Åph¾²7ôRî~LÞ#‡Z’Nö9âÿ|/#øð£¹+ÜbŸóQMÿuºìt*|OX Û7ØË¼†½Mؾî£Ã°[¿çˆÇ^7Ø.NÿQq6é½}„?´ Ü3[ýs¬?‹¨&ÊÀ.ÇbªÛ¬`Ø êi››y{hÛ(„«>ÕtìÀ°œúÛsÌâòUÓž$ü÷ÎõÚœižS­.ó³º?üÀ1÷*wr>Ë€u‘õéôÂp°Š^Kå×UÁúb¶¸¹E3غš6g—°ÁÚ#èkV"pâR?Ó‘8¸?fnPõ™ Þi¦„ýÙçÕ5wÓ 8#ñ ½$¥èE·~…CWÜ£ (p8(±x·ãfÂ.OöŒŠU"ü™Ï•é%.øæíúe.á'g÷úÏXsŽÞŸòÜSà@iªþ¢ ‡O—·ìÑ;¨MŽèGGNø‹×·’àèi\ß~ŽÖ'ý®¾Iß±Ö\Gõ0o°­é¤qª`7(‘:lLÀÒs]cè›)K5™W+a-gðaEÌX‡Ú\/¬:æÃÅ óL ûyC¬At˜Gé¶nõwam-öZœw̳‹.¶Åó˜ß™»À{±F«Ï¬œì½ ÖÆCÞ´/ÇÁº¦:ô\ò=Ø~ Ó>¿*sKᱡ×Yµê³ºÀzûþý‚ôÛº(¸ÊÂC7 z}8Ö*f¸ÖÑœq{oê‚­ÁWu^AØ;¸>o³&ðŠ¥ûódµâ¼á°{|†~â Gí2‹­÷×Á±ð3鬡/7®ÑW¸;އC#&̰„#ɯÃ5a.ʶÉeÌÓ…ãTw’©Ñ\8î;²`káL8R|g>ž ÇÉMT‰£D€Ï]Â_îzïÕu4hÇÚwûá¥pLò¸ª×ñ,ã¶°Í|°ߊÊHkÈ5é¹`Å­¹4æÊ–SG_¸uÎ*/²‡Ø"F>úƒDy¿“IÈÚ›`ÒúÆõÜ#øþ}]«–˜ƒÙ1è‘kEôÏô%Š’oýÁøñ:cÜ ,¥Ñr þ6múÜÈYWOŒs ƒé?$º`ýeßî¿ðÇÂq³¶>ù ö…„ª¨)ĸä?>¿Ê¸6aOÆö$`Éh3®ì”N…ô†>M¢úÊë§as£ÉOÎ3‡Àu>Û ­»a'—¦õYjlz5¦o#æ§|Wøe‡pÓÆEä7åï:õvî{b~¾g]ï ‡åºãϯ×÷ì¼ðj ‚·ÍKS,ÊÍ…ƒèòV³ç§¼v’»6@Ü™%ÁõMœ3àîØiÁ\p¿j¥þK›¦v!Üב3ÚŸ'ÆëÈ/Öso®_ÀÌ$•†œ|¦ø˜‡w¯ü±*ÕéNz9XKô;raíå }6„à•¥Q£çe/qˆ)AœßLlûn&kὌٵÄü{qÃd1ÁW”#£GÆ5Ç÷çxæDz·^kj§ožZ oÛœ]ã² ¼úeâÚ[óKÀ¹±F¼–Bà,…èÛÑéñà?™üä:Á;DEŒ¬¿µeŠÙlp®¼ÜPజДœïçbÀù>“öÞü¸rºG£¹-D{S¹É¢¯ý+=»˜w5å¤Á´ ÙkŸ¼f´Sã­†©`n¸³­Û"¬{Ý;D‚‰zù¹!2×êÁ¢•ñÞ—5‚q¿"®_£,ò#gé‰Ï@?ýqÇIа«2½¯üÊXß#t3/ƒæ¬à>Œù}k2+òA/ü‰ëè3kæJ¼}¿ã&'>Ö-R÷mß‚6·3?;´œÓúº`Žlût3Œ‰^VEú?™³P? †£›ÑR0öŸþ8¹ Œi?|ßÉ݉ùòÀ+0³SÕvt$çóâÛ‰ñLYÿ\AŒC›•Üàöeìû^Ì÷ý–n¹Eà6ù/Ñx]®§™JèË~gïÚcÄøåÎUõ÷ŢĿļpú&©î‰9§ûäw<­ae^QÞÞu¾þòp»ìª÷ —ãù‡³·ånÐf,\vZç:è|ó s§ä€¦òCs‚´9hg ¬™š¡”ǸVBE¨h‚vÙcÝŒm÷@W˜Ô¾éû3PO­£ê±´>½ûkë¹ .÷sÍqÍòšÂ“ jüûHÕñµ š†_ îï5â¸ÍƒV`ý·öXM2&Àl)7—{DŒÇƒŸ¼:0A¯Õ{ÖîØ ¦ü‡õ$ë°òú¥$¾‹²…ÍWûÒã–ÝÞ`Ù\,|¤­vª×ü±éD{¦WŒE ¿7j'=È×ì{oväÊ‘a­rãú5¿pÍ~æóâzH$ˆüµÿ‡É‹ÙîàÞœqXíYáïÈóÙu á´¥oþ—f¢~åÚ CÙ„Þæ^2{@·§KÇϳ÷R¥ˆwûEpɺu¡“éàºî+µßµŠ(qYöÜCïίÎ!ê%„íPÔ•íþÈ:óE ½Õ¦gƒ·5^Ô t±y«ÓsÖê±5{oSh ý —õã¤jÓG6X&!ˆ› ZкëîÜ.Ð¥.F˜<ZÔšŠ°É ×MÊÛJ”GP÷È\»jûa¯/  _Ñ™&ñ ¬Ê‘xæ7ÁæÜh=‘ÐïÆËo„²§ ;”ºÎŸÀ¿LÆ[ñ­ªå`l­¯Q?a¶eìXñ/ù` ®XEj€µ¨÷–o°jè7g+ƒ=)EÁv.ìEÃU’'rÁþZXëÙSöË®Çít‚}ÿrû%˜1ò™î%¿µ(΢­õs wþÚ>^¨°"øªvÑî·Òàä&\HUTœiíüE±à¨¤mvxð(.®ÒLžö®l p|´·îßý~žçó}ïÖq]kÚ×¹ÎukƒÔgÆ»2nÇtæ“úoù¹áªLàΓÈóOÇAës¾÷3õݱ[ÙGHýö¼§Xõ¢/Àñ¤…ÁžúÀ^Ó÷ÆÕ¤,\þª€ý¼†Õå_íYù. çmŽæ†O€[öŸ=à€aã _¸#Ÿ/Ç:õea4¯–-öY6Œ¸¬ ˆ÷é0§W¦—¦ÀhxSÎñC0rLÌÛ>ÿŒ*ŸY™ô¡ó¼KGž¦Âè¶\é^gYØû½<¥£€"«¯×’a(ú@]ù] =ùw»+ÃP._ÁÆ[&‰3qMÉu¦­Ò2›Óã3‹7±Á¤¦!ñÖMrÜÞDÖ@iUßò¬ "×á¾ eÓEI˜ÐŒãÙûC`úi·«[;L..«ºüfL×Ô_©ü™]]lÙ0“²=y5 ¦&¦¥ëã`fDà¸@Â¥ï/ÿ#š¶]k¿hÍ›¿ðo4˜›´¼qhŸe|W|Ø ÆÎ«ÇýI~'oÈ4bJ­ýrãɆˠ¥Xm{»µ|nÑz+—oýšÝšGA³¸®ÌXYÚ©‚庠•X™Vz€ÜþôÇ #0˜sÌapIôŽã‹ÐoM>gYJ‡QÀÉRèëîÉ\}c d¤ÌÕÇa`øÝ8\?¦ÂÙÅÆ XáÍ¢ÍN0ðÞœhõ'Î ºm8Ýú+´^›DuC_áZçÊëÐÏ: óéº$Ì-gÒ¦i’t:{ëÁP’-’Ý›ú<æuG·©‘ëàÊÌ{³Ç&÷[µ*‘zËZžóº$Ÿ˜|ô®>/—]³”ýËzZþä…%åÊóe’î/YöíKÞCX(/I¿Sî ‹ÀµÎõI}ëþ yÖôèéMl?£†v…ÄW~.ëtÐδ|‹M½æj¼Yû"ÀâÚªêp&ÐxÒöæ=úDâïS#eó5 1K™Ù•9ÿ™–!k›Û£Ïpëw2–ÀæÈ”Ždéüàê¿A&ÏèeWaØ“˜~šË<癣„a該ô7ô/–^û ŠÎâÐ×ahÌûmÅ;® —OÌ€Aý[ÖVû`({ £ÉâD°äØþI9y”ÍÍiûx q<ÊÖÂaP“᫊u0ãûËOÓ¬í͵¢Ý'`rÏÐc.IçL#ÍŸœ+÷ƒ åR Òé1­á*?7U3W‹g«º½`箹&f»u´~”‡©’î^{¯?óš=Xgý! f.WÏZ­â"Ë¥·^®%釻Dù;XÇË«Úë_mÌ­Í °¹Ú¶Á•ã"ltÄô~¤ƒ«Ò<|'4º•7MÖ£S©Îòl°9?U\ ÃÍK^›˜ ”ïÓr‘*yè± ½¿:Û¿¤“kƒª:IO¼ß;ÔÀäÇŠcMǽaj»žÂrdæý3éš`Ñô äìíÙ8aÖůïÙ>„M[}öóN0¼³Üt: ™_+Ûaóí]kœäMXÅ‹E½ùeìÖêxó\óO‹Ç;]?F¤Àê’f[ë±ï°ºÀ1\êüV]ZŠå—¡1#>¯‹€F²Ôš{ ¦³p §ª&~†úõ›ó{é¢ë{7—‡AËáǼ4ÿÙvů/ÚDAIÖ«NÈbÙŸ÷ܼ›Š =¤ä>šVíUùvÐÞáíåŒÄÛE÷èØþãM‹§ò,]?y,N9$úxC&V’|º—=é#†O8u;¶Î¶Û~èU'³ô,}ŠË¿ÌÒ sî<Ѱn’ïÈr,½IƒaXINCöf^”(äé¹Óÿ•wÉlóÙ:7fíÕŠæîú 땺QûÂÀ~;ÁÃí‹8÷O~³ÿÏÊÌÀM]m/)ð5å¦Ëïžå ÛmÛ+ŸÉWÁŠê0ž#Ë+»°µO J™ «Ö5AýSeë,þôS‹>nÖ}=:ãY÷ZBèì-%}P~gÛóu묟¬jK“±Ú‹Pȧ¦µ I̾/žË_UÕOWh¨C5 *gv.‚jø¢wL¿Â`FM¹{†Ú-w?îšõûÑïÍõY²UçbÎЊ »Qˆ›¯dSKw?˜õï30¯ÿY'Yýëûò— $ÏÂßÜx…ñÐ8¾:õ’¿¶”Üì ¶ùûúQ3H}hF_ˆƒåƉÂú³³û>zûõ½Ü^°¨$òë_­ýL ·ÅCWX­tp¹&4ë/C™k¬Û3 ´‘•áÛÝf÷¯e›€\¥(ËÉC ,u™¾-ìŠÍ¶¢Õš–YôW~ ÙO#Rôš?~P~x‘£ÐÒðäJõœ»nóŸ–·Av³Ç•L³íØUθ|ø‘Ær=¯?ùË!«#áîl …Û÷}×-‰ƒÂ²à}n9—Y?h³·g_y?Õ%+ë«ÙlœÕ‚}OSý`®³léi&˜M›Ø°îê„ÙOÎN¾2(MÎØ!W@ùêÚ­™‚³~lª¾zöN”@1³U¾ì$©¤[°ß„œ²¹Üú³qWTýØ>ªÚÑÛ+úV™üñ‹òqÿ]ûÊ_Aõ¨LÇr;¨²~}87aT–4æ¾µ‡>c& ¹ï;ÞˆæÒcfáôƒù¶˜4ìD˜’»û s„;ªò4hÕ'Ïò-­¼»k¶A}‘}v“wølÿþ4ŽÃ£КJõDøAë™ÝP†÷\hÏÍ:dj¸Ô¸]3߀•ÓuÓÇý³ð ·h®¥Õ>Á©¤^gû¨Ã´,”„9Îqü‰÷ ŠcÎ#R.Ny3}EäÓSN÷Æ%l&õ¡LåÚ†¹° ß.‘xá‹y•~ºPŸÉ³| õ†~Rµ³~! üQ)ùúæûQm6¶2Ü,Sù·˜ ·í—`º@Æl;›ã]u§Bîfð“"ÝY|S¸qtXsC|÷¦ [-€‚Z°j¥ IÇÇ—½M‘ЇÖïøfОJN³uz>ËWý ÎèÙHA½ðMG_Žu‹·Êl€–H§ñÂ×â“AM½á½ãùq¨L|\n¹a6Î÷À¤TÉV¨]´àꆭûÂC#M¨ùŸ½bKêÒ×ÑR™]ìÖÌÆ91PüâÛŠ{gžÞ™u ŠVz3m‚u3ŸQXÏl¼VËŸbJó7ôÖR})³òmßð¹×gù`¥™9 «¹ªš3ywÙ ËÞš8Báwü(äýh ¼5‹§óûÞ>º™ Å î:5ÚPpý)ºT) gN²ÏÆ †bøÙÍ/µã¡È"¦óýèg(ë<9ð= qýËæ‡â¹sV몾Bq¾fUð(Ü­Hg@elÆNu Ôlµ˜5Kþä±€†¿jÐÉ`g¨¯úÂþeêTû_BušP{0•§3b–^u4‹“z¡üM™[§¤8¡±ïKü¨:Ô–Ÿ Ý;^U°K5·K¡ª´ÈðôdTé³ÎkŠ$Å„¿òyÁíä³î³|Õrû=µdŸ€V{“÷‚  ÙÎÛû“”ßä>î åŸÝ§6—ûDæÚðƒ2 ÙRÀìi»ä’à ¸wÍY/d›×Sïo}›ºË»nG÷Âæ’QѶoPçž‘Ûw@mòôxèòa’^|Zçl£åKÎ õiC½ÈúùÛ‚¨«r Æ×*Bí,§`€×=Hn%U#oBÃAÏBd›!ÔÕš¾µ fC½ ZaÞä ÔjÓw16åB#’½È§Û–'’¾=ò‚úÔ©´‡Gª¡n0cvày§6ßå€^þ7[cQ¨ÞÍ2y› êü[mO=…Æüý·+c –©3Z` 4´×¤µ\ v~s®%Pþ¥Q±+g³¯=} OE‰ü1R^u=VŸÍ¼*¯Öœ½A¶Ÿ³íѵ(ظüvœ€ÍÃÊû[猃Þ|bZò¡(•þs"{Ç`³â¢åâ+•°¹~äÂ'Ëó°áŒeQ¤‚>gÀÌfGlœ;—^Eêé„Ï$¯>¬¸ýB l*ÜZÂ’ÈzŽ„öâ%°qoL×»ݟ͇ uù/ûgm—‰ûy¥,P㎭ Jƒ†TžÆùrŽfTšß‡Vÿ’ù{–q@Kë`aèÆËPxVb-¼ŠÔ˶ßÜ4ûþk'³ ëÄš2ÿÓ ´ÃYç´g†æ7gfée–d¹`žÕ[h-ª‰‰,Ð!åë8‚F †"{⡞GÏM×s‚zׂ5Läº ÞYÌcpši§y¤:@ÃXì«Ú 3(én“v †Æ¥õo9UB]&é_NBc{ÓÖ¼MÐØi|Ö«ž¬oê Mä &Û-ïZ´šs;X' Ú‡3zÙvàÛa.ÐeždT¯ZLÒÃøˆ>R.®l¶G²ðKaøõ–ƒÀYùÕ½Ù =<‘¬‘sFÝÂ]Õ$}?×ócÛ àŒ°Ì…¹®Às£ Áô ±˜æÊ í¾GñgšÊ÷õ‚Iøüö×(†Æµ%éûËHýPN3G· üüù…Ù¡yòú®Œ)h¬Joqdf¬U6BnÃþ›Û©ö$?f.õëï€ô—¥g7ø›C–IŠÝS~ä½>¹;ˆ“r{–òò_úW ð•¬1‚l„ŒÖ/•ãL¾Ûìû rj_n-3èÜŽúÌO,Ë [Ì¢àÙ¼I•Xºd¯5Œ¾Îµá÷ÔÚ8ïë% šói‰€šf¦”[ ª·îÑû럃:P%þð¢&¨Å²i⻿€Z¯Q¿D–Ô-½þÖFË@=ûªâúSCP‹ú¾ÑÚ9Èú[/¼D߀º&Œ³LX Ô/wÛûš¿;ó.Ô«Z¦F¯Ø“¥å[¾¬)²Ï…ið¥ÌgÆ0ˆ[q 4 BЬ/¯À@tïJ“Ûn0T’%õ„•ï¬.rl‚Á2uQ¿EG`И¢pq# ä®5½Iñ†Á&ãB0LP¿Ë¤ o£G½—:¡h?ã·h%÷ØéU,PZWÍ2/‘”Û_:.]ó ‹×‹´ uBI<á¤Ã^y(šXßO°ÒTw³=”Iº˜p~Â×%éúMP”uZ°±Jr7O–ì–…ëüUŃߡ´z©µø/{(Õ­•µæ%å:½}ÁTæÞG³aóÃ[Yä‡%¨\ò‹ ¥ÂæÎr:OÅ4¨b¶ö•eŠ ò˜Ó.逪n]§¦Û êÜmsrc j¦çï|õTeŸoak@UÛ¬“ü“\'Ý£b›,ÛHyå„K‡/¨Îb„u´a|~ưoÆy}‹Ï–€ñÛ£22nä³Òó£¯0nûõFçR$ŒGéýlq…qšÜÊ_C·a¼Y·g×ÄJ?ûê²Æ7ik¾~YíÕ|-ác0.Sx3¹EÆ}¦/w8“Ï”=ÛbO¸51YÌ…€âÑ=¤Âà%¦«¾oô,¡høœƒÓ³Ší‰wJïA!Ñ}Ïi(æEkiö¤’ôd§ÆÉn(-û¹þÐâ(ª‘âz{3´ß,*î†ÂF÷gbPüÄtÚÖ¬gî”Hb†¢Æ³ˆP’ÎÐóT¼|8Êù&ÊHº[[úV$pž{¶ò:)OÌ¿÷eÅg D"ïzüWÀ>+Õœ©ØÈ$±¥›,£òäWŸ$å”aVã›ýÀb_ƒÓÓÉvñ¿äÈñ—»6HñÀô·ÿÂLéÌ];sJaê|ÕÅ} Lƒù^øÜ ÓbVÇ8`ºz#¨¦k·ºgGÃ4c£±ƒ7'L+î ×±ž‡iÀ“ÀŸP†éb«mßöÀÔ´c…ú¶Ô徿zP÷ZrÀpÉÔ3,ƒ«¾¿ÞõÌœ4SI}ej IâÅ}`àµêïSœšìu¦~@u×þÈÍz@IõÛ@ `03ã±ùàÕÄÅGåçVCÆ!ÙI¹î‹ó>ÞfÐD Z 4ÎY¯ah üÜ´~éê XJý•çÑR`YS2u–<Ö“Iã°Ôo¹û^–;ú×ìÚK—¹ Û‚a¹€’9ò­–ËB;Ø2am\±ì‰(,)Sá°œ—¯Â¹6–ì6¼[CVÃ2•‘¿õN(,Ó?ŠêÀÒ›ñµÁ3R»òR>жµzÉO}[lÿg6¸ÅuO@=áÕpJ' ®›M›?ÛC}¸ïçМrh in–â€úÍ ^<L a&`í¯@òñõ'³N»iBc«Ã9® ºPï Û˜@@½Tù‰‹õe¨|}Örå;ðé÷Ä ±ÿÔjÔͺdn´€hÂï_ŽÏ^ÎI¨¶&á÷ÂØT‰”+F?×Rà!åÝΔ.C²ß?÷Úr`<{!1® šúŽ|qëzrÝn =wÔ0hzF¶ÏØxp] hì&cÃ\)°þ_tÖFCKl—Ò`uƒkZ9zÖR!iîw†`½ì™ü«m9°Ž,Üûò‹9¬¶¿w^k7þ99°zøxjÜÃÖˇÍÉícÕë3Îá“Kö^ó \Vw×Ï­»Ý«›Œ"5±‡°:Ûn½pQ6t?ÌÜwóC{Ï‹©AÐ[þݾÙz4êæ9k ›s‘µ`›0tårÝ Ýž¥2u·C·ô\‹©Žt?熭º Ý':|â>Ð3eâüåL…î´ZD\øgrܨ}SFÏ ÇÜçqÀüôXwìç©k­äù—=N‘ÊrÙ:ëÖ$K¡õ }þz1ež8héGŠ¢cÙ@Ûþ\x*\´ƒCl5;Ak}•¯9? ´?êG:A+4ekfìéÀ õ{ï@#¶máÐ ­Ó¿$‹|~«tœØ^DŽ;*žöÔ·ÅÑ+ ~™h\Z¬ jJ½¬Ÿ’¨×_V½=/:Õë“zQxáåKŽ >Œ7,ÿš°oÑëpg5½çâ¶ ‘o]ÐIª¨Ñ#‚O@}.ý|ò¥¨ç7ÿ8ên‘ì£{H¾±qÁNÖ{èÖÎäiý]–.¾îçœÐÓ-\Òx× ºS‡5¯Œœ‡NûŠ-×3/Bç¥ÃO‹yêÐul?¢ 0]½#{ÎÔ‚ž‘fÓTê'è:ä„-•‡nK”8ç‰^R~¯fM$÷µži[Hà¦ièÙ×k/bÛ=ž3Kîî.-|ƾn/hÛŠ% ×Ä“p ˜lÉ-·M1üØÐV›oZÌEÊiŸ“iùf í(5\Ÿ5Zb»õ>£XОi0››É¶~» _­ ©oïþx®{h5ò|­¬ÈõP·šþ,Z£ÚNÞHÐZ ‚è¾Íhæ\”l·øˆIOŽ húÑN{ï¬%÷S÷èM’ $,a±'Ç{#hEî/Ïœ¥ ÜþŠW ÿ6ÀŒpÁ1_{[Iò}чg—º` ñ–õýˆ½9Ò<˜K>Ë ëó+AJy d»; >ÕÒ¬< 8ËÍ{9Aö—9ËõËúÃâ¦>dýJf'ý70øÞìä ƒË^·è ïœq/³=”mg5Ó~Ð[y´»ÌA?ov~Íó» GUÅ—Ý×]¥#á×¥nÐŽ<8:’ú‚õ7>‚^|®¤«ô%¢½¦º6 ïÞF-»}t]Æ®ø9 7Œ¼´p òX^ ú9¦¡% Oþu¾ÁÙn¸j¹ ù¿FF[èÁ`°jdxÝè ç;wxB™ô›‚ÙÆ‘ÿã¼ju—êÿ:ç?}ÏW’§ë7ÀÀ>öDZ tÎoãÎŒ%åÆºø®(èÏ$ìÈý¢³?ýŽC0ôk_ßH¸ÔCÞØüežuЯä|ôæ˜0 ÒnŸÜë ýõô#~µ 0d×N” V†!—˜õÃàÒSoáWÐ^ÍèÝ+HúáFб­‡k×ö¤u Ëw½ˆz·´7)tßï =ÝQøý ‰ÿ½†Oöˆ‚v!½©l5èÖB ´Iúùö۹Ϡ µ¨gÏûÚÞ9ãý¬ ;wWØÎº…JªäË  ܽzìíV3‘|¶ÁîÞ‹ôa{hÝ#ÙØØ®e34ë´†mü°Ð½ª°M·6zÏ-ÛP.‹º°õ8-_÷Õ¶âÆ›ì¯Àv~æó…´:ØZX߸¡v¶^›dET“`+2ýÃkçKز™¹›·GÁV¢(’â+ Ãã3~ô0pØ|zå¸) Ý?%ÞdhÂp Û¯µ­0,¼KÙ£2 ƒTÖ ÷ý0xÆiýP•‡¤#oÀ¨l‰ï¾Qr½qñ^n®aÖñ°½ê$~çž’¹£3[uèžÞ0ª\ñ0òÕ{-ªloãŠCò¯ø ô1û±¨O$lmIe^•†m kûY.·Â%¢ïª>íárÚô2§sç0´®,Rcy„g«Pè=%ùÆÑV`ø[ßñ-¹JâÛºRásö`øu檮wcÙj¶-Ÿ»Àp7ÑÔb »åï¶×çlï¬ »¦¤4!ñ*ØkÓç¼µóƒ]mž²Œ ì½ÍÙn†)ÃÞúó®_ú°—»’Õ΀ÝãËE/ª aÏiz<Ÿ2»×îçìc‡½¢{ÆÂ7äø÷Ü›?.œ€]EHÿƒF°»»÷â™ã®0r˜9o¯"á´9[üHŒR ®‡‡÷1•"á¤Á/#Sƒ×¥ Ëe"`xЉî ÃͱKj„`|ç\–AŒ1 oWˆ¼Ž*„qnŒð% Ê,s‹¬»`\Ò¹i!ãc ¥I/ßw¡îúš¹® ô…WGuïó¦y†wäS襙Gvwæ½s›Í6—û·EMƒN[6½Ê‡Üÿ‹<­ÍäA¿æ;½Á?ƒÄ×LÎ5ªäºœ¡lÜ|H”ÄÛ{ú‰5 Wn½ô=ø2ù~ð}¿‰ïG6r\øõÁ3v#áp¾Ýsú¼o‘šÎÃÑ„ya–Ã!îNŸ{m?*½\t°Á¡¤jó\{8l³ ^½*öÃçŠeIñÜa™Š"SÌwÛ/«á°ÙÑ}#ìªú1®&¾]¨Õ¾ÝLŠÜzv 0¾vŒüeÁ0/Á¸D(ÆŸd¨ôç©0jâQ¯a}  éXáuú0¼qkðÛº]Ò~»†ít09z«/´s%Œ2»%uÏ:À8#eë…Å!0üÒ§züL(›E7Œ^‡IV·äenM÷:›^¾s ßúlÆÚ+ÏnGõFË·m,ŒnÅeß‹_ü¨N3q#‰·'‹Ó¬¾jƒáöbàÈ Ør-ê¼[t¶º~Îð’ïR2ÇšzÁè)È;uY˜;oP¿¶Å_ž=ã„­¤•¶ûiØ2˜Ô7š'Æ_|Ði›Ð´Rã8F>”kø§}N#=Ü &à”Üñ9yÁ\8¥ÞZ&§y Ôïó•áxyÊÛÆ8~h ó´ÒZ¸m>Wª¿Vr¶^õÕª¼mphÊȆóû’ ³÷xæ*~¤ ã“JL#W {zàA¡¦* ץͅ;al”fï±Ö&r'ä÷ÏÞÓšðŸÝ~´0c þas+Î1ÙûrBZ¬ié"˜Þ>3W[†fª~svߘµw²½Â&~8â:lÖ¼cÑh»÷p.ƒç=‹ªzP¤œÏp‘üÜü^ºìõG³ý6M½Â!8^áÎm,†­tJZPñ,¾ÚÅ]N]¿ŽWï.U˜ G‚_iäÅìý°k÷_ú‘ۖϽY³ùOÜbž¯\HòE™-‡åàfýde¼üŸüì˜Ï뻇óN\Nß{dd^ ·5;C¶Ž&ÍŽ;îwKCù \b§wº¯ò#ñüõqñÔYxxͨ¡4šw=~å¸1—>œlÃì_{qÃi‘€ŸG$Y®]w¬öý4œ-”åE¯Ã)m]:¿:œ=¨uÔh„“Ý ?Ù3ý>i7N;ÁÉØ@s\Ç ¶3þ°cÐMb¢ßaÌúi¬º}‚±kVÓíßþ&}á诲͎×ö~¨J¯SF 'OHYÂ@ZöÆíÛ0ˆð;h–î=Êç)1 ÏŸ=ÞTè#™ƒû—Žœ†áælF> ÿÎc²ôÕ«vÅ·ý‘Aß½p™ÌÎ5³Ï /ÎÜØÚý‹K†ƒ.±%ÍLAŒó…Õ šY «~ïÃÈT÷ø‘XÐuÕž‚‘²úê<;.0Ž–¯Pm F„ºäý®t8ŒyÏ8¦ÂQÂM²óël~fGíÓªM~³Ïóï;}û ¦sö…£HÑÞN8¼Li÷9@ö—X{Ð'ž|žðë¿ìG))Gsý}p¸™›ñíjâŠÝR…Ã[‹ƒl­_ ÷;|Ý-hh™6µÖy¯ï4|}6¨ÖŽ$ÖñœwБXè·ýÖ´_×pœÊò‚~QÆâS“ÐͼZúð*èEæ¿QÌñ†Vjõã3»  r-[~ô¿|­zµ6úBM ø+Þ€!÷—=C¯3fázåvFÚ,_dP_{éW³þ¦ê«×Š`(×¹…”/*®L•ƒýÉkî"?0öž<&—¹ ZÀI0ÞŽ\©´Œ2cú÷Éu8{Á¨JÌö¶3ñëÖÃÞ«U©#±öYUŸoÑax-P+*ö9Í›´SœaŸØòƒ*ÿö¾u5™›r`¿bígÕ `oW}¡œ”Kv)òV߃½Ë»köÃ~ÍØ¤„^ ìÍô*#Œ`¯oÔæž({Sûœ9›¼¡k2ršãaÝÏ¢t ssTex :…ÉÏ$/O^B]dÍ_û”r÷’ðe[Ýqåç h®™·$-úf¶\ó×vÙ)ÉÁGÐÕò£¿¿Ía÷ãGVæAoB—»%éÙîåžln{èmd—j{úûÿ’76mædgÕíÛ¦š‡oç‚~L±q:áèE‡Y-ÚºN½ïÖgAûh#|oèËvýjÐ_õ•_dZBâwÂÉê:1ÐýØz¶®ô¥Ó‡d¿×Þ>WÖ,ô§ Ï|?R ú­2Ñìça{ý/{`ÛrG¿4­|Ø~mæ«‚mï¾lÉm°›3²_Ì °c?cø`S0lë4•4à aûøkc¿lËI.ç¸ Û_‘¥äû+™»ų`{sû ÖœtØžg¹&k8¶g8ýVòÕÀ¶øT³ÁOhþŽK|jW|Ú'nÍCœÍË•J¡Éçy]gk64OýJ¤ú×@c™“ÝÃè¹ÐPÓˆ7XõºI ˜R¡ãËÍM«‹ôÍ9Ð|ÿep2ê\ëM"&ê¡#ZO<¿¶:{JÃi@ûžÀrgkÐýüúˆ$§s% ¯ÊøÍ¦·IæCÝFUÓí<Ð?‰ªôŸ5ýQxqåçï ï÷aNöû"ÌnÆC W\60 Êsû½¹ÁHÎ3:øØ ×ÍÝv¬`4Ý–ÛÑ6FËü”÷{XÀxTZº{ Ô†™kØ(PŸ^ß´±Ô»ÕO$%€zUAÇ¡¦ÔûÖAk´#f_1–Õ4²½ºþêÕ=ÇUCµhoP‹—l9Þ°ÔóÓ-Õ@=pävQ¨×w¿:*PÏ^Ó®6$K¾SéLwÉöo ¨P-ø+~»JçÍž/Ú¡Z÷Ù…Ëš€j¨W •»jû(ûôü¡ÖS*º÷LTï¸ í UJ S)G¨Eê¿è}n 5±Ñ`ÏçÅPm¸ø6d|-TÆ<+·™ŠCmg𠳃ÔÖLµ†,i„šG¹·„s*èûþ²¯£ý¥¯¹Îô“¿Œ½« ù`ÀuÙ’Ž<á—Ï|¨Lò¹ýw%@Ïi·ËI ýR¸®YŸ=©G6ee¨c ëç§||kêÔ½°Î:y=í¶1¬ƒÜ:¾ð’ã-ú‰GY°¶é«¼ÍÖV™Ë+¿Ÿ…µ›Éš»AòPÿNäÔnÝ ::6EÂm™ã©è¨½ÕÙ31ÀµŸZJÍk£ ö¦äÁ·®ËP븢»ò&7ÔÖ‰}›w8 êBî o>Q¡¾Fü¿"Ô¾ñð®Úß µZÍÄsN«¡öeØð¢ÚC’^ÓZRÕc¡Î4úêþ;’ÎÆÍ$ýLN<:tYŒsÃ-ìIü”e‘Ì éÆ»t&êi0ò²®ë™Å’Ïq—˜Õç‚QTn¼rœ¤¿wG²Ž®H#_gý{?ÕsÌÂ9(`dqœo[V FÕúœŠËÁäûSWû‘û¤Z‹E2°¨ú+Þ¦ÅEYÕ‚Ü}°¨¾¿1ðÈX\XÒèã‹ß~òõoÅ¥¦+eçRÉú<Õ·]"°è ¼Xà[‹û+Óù3`Q3ô²àl,R™S¼¤íaQÎoZvT,K§„¨)°¸{§“*ßI¶»'¶·J=3nOùPæä½{yY”2¦~IÇ.„Rc’Á"o(Ù¸ðw)A©ècò}K([õúÖž§PºõM|ý³(ß§têÍ$”WÅ.š¹eæê¸ÍB­P‘Ÿ¬¥í¥¯¸S¡´«ç«ßýÃPJsã9“MÊiÍÅË¥7žµ‘}Á zo–Ãhµè}›vtµ<δò IoŸ„ºÈ…›üòLæw)²þŵÎ[$=—Ðz1˜ìG™n1)}|ý|™€\ÐÛÖ^Ð!ñ]v]òÅã ·.ñ0T$²¬»IüÓÛ_Œ:)ÿ&¿¸\Oêc*¯÷<–CÒd±£-†´0ëåùA¤\Q¿ËU@Žä÷Lqo¤H9A›sÿ Žû`Ø$?®9ë†l=—þÛZ²Þp@jˆ¤ë’ʧ:[HùEÿPØ’0ž9&d“€qö iîfŸ\ê¢÷£Æ™› Uw`ÜlW¦Þ^ãÏævœƒñ¾´)m—¯—™š·6Æ÷é¼åXãWÑSŸ `\éû]8æ>ŒkžÖä&ûœ\ôóŒ‰mÛ9r#Èöµ‡´¸!½p&ŸH¤wÈxÔ•öCš©ïAî;gH/YEñヤ¥:ëÃ{ÎÛ– ¥¡©¯ŸR"B:!“ñä©€…9¤œÕÍ^l_é&%Uçy‘\ãšÉwÒ.ä Åõ±ëCE%¤ðƤ•:)“H—‰ànÐgÂÆWŽ[+öaèë»ôæ <ÝvaךBUÐL2‡Ì?‚n¬¡¿n=è?ãêR®XÌ'Ü, :5kÀ³ø3è>–:7ü›@÷éÝ“ :M쳋”:Y_­P3Dêhâwó“#Ç]Ê•Æw ¿ã?çÀÀîôºÏÅ“0ЪË"ýKõ¦Ùaü‰1‡Ò Î=ƒyÃI=wÝÛ2©™óHѧű0Ø,™­ƒ<ÑÆºÇ`°m¾ÞÙïI0ðV›¼J!õâ J¿×*ž0Üü¥¾y 6Õ <É΃ÄLxѺ#<²­h­ÆHŒ±=9牡mkôÏBœsôòšH&”ÜÕñ7ÓzâiG ½>pÌîP$´¾ª7¯·„Ó¶‚ºÇFðüe°:[9§  ÈwùÑKòý䈚5 !~õ€V0hùñÑ6˜Y™·ƒv.gƒ6çfÐÖœ<Ùùd´å!å×)K@‹Ò•è¬moȧW‹A»vm :Ÿƒø,Û¡æh‘æ‡7XÇ‚¶–9Nì)w…ØÜåkZhdó‘‰äxÕç $Aó×÷(ýgbæ€:GN¹±R:ªkY^}‡ŽžšQŸYt–(è|Cêcƒ÷„•·&‘ú—ëÐ8èl9b ?:tB-èM õ¹ûY­ÎÐÙåYißø:NÝgš[Ç ³u<„«ž :Á›ÓôK* “4ä—Ç;¡ßþVA–:sõ¿vî˜l€Ð‘u‘kÊÎB¨yÎIEÎG–á\@±Ð†ÐŠdVëy+!|¸vÿÁ’3&Í…¼—Aè«{OG—„ Ûì–„PŒå¢xí¹^<¨®]a†Â›- L&×5ÑúŽ¿òkГ7/ ‚~ºÌo™%IOW­azÉN‚­kIgºn5L"åã*ÉSzIýî×;Ó“¤ž‘8‘×±ú2èqwçžÞº‘,™^ª=!åŠÀ~6Cß<´•%ù=aÇs»Ð÷n +¸ ÝÇ3y.¼ ûíkïwWèŽF–h,nmðär{èÞ®ç\èîm*?”UÝUëEnŠÆA[Âo|±òèúö 7„¡«Êñ6ÛºÙösu^äC÷VýË“%W {òXüéÂèî“W6(?Ý'+rŒXK©C3Òäsê¿ëŠWõ'¨«Û²cˆ0ê—b)õŹÔaaŽÉ®êpllùUó½ÔÁPyÉeuôX´ë}î½Ôa¥¥ƒ_m©_vvϵЧ‹iäÎm£Ö%ˆ‹ÔámK;ŸP‡÷m¾ûÔ?˜:|û™sEôÚ™¸L2¤œ¦Ü¬»šÔ“/zŽ7!õð+¡[Í9úËúºV Ðoª­Uø~ôþöÖ­í¤üÖt¡)Éo{mØYýôëÞÂkŽ^ävN÷JL²¯+èu5*rê¯Éþêïx^“úú³¡‰ãï¿C͆ïçA­üÊöW V7±¸[PjÑóõÞvM@mÁ«ÍªñÍP[¶]`ao$Ô„[D»>€ŠÄ-{;þ%Pý°F£YŒ5…KAQ/BÍìÓP¹Òk¨­ušÍ™5óG–‚LvdýîÏTxI¹ønGb!õÞŒ¹èuùÚ[ao_†|ö«}½(ñÙµ˜ƒµ÷yýr.UÔ&ŸÌÊvùÚ¥×÷oô‹«½*^¯˜åÌT[_µkáΤX_2Êw¹¯“ZœÅý"d'õº“QÊÔæßÙ3©vЉzGM’ÉŽ?—z{üÉDóB?jó£‰à®ì¸Y87{y{?+!áuù ©ß=pôÔuOýHüÂü£ —Í;÷‰bHÂ=”ËSŸÔÓ=~v õß&ù3ý.ù ¿Ê¸Y’UCê¹A¶—Iùä¹gfïhù^mÝS~²ëȰ°,¹o&JL2A%FŒ­rÍÔ±5Gÿ9¯R‘÷É\™GêË/÷žS—©·Ýž7 ~ûÕ^_ié?í”÷*V´jëCyK\å÷TRž°¾Såò}¦ˆÑCÑP–;§Þï³JŸnd¬¼ØM³½—OùÔý¦ 8>U=cü¹!8ìö<ãb²¦NF:ׯ¤×N‡mÉ hލ}FýV5ÏñOžP‚õªê½Òò>‚U[ãbn«öšjv"ÃyþçB‚Ù íŽòóíQ.j?ë‚‚‰ByИfâõ™‚VsjŸÎe?ßAÛ}CηüÐÒŸ³y»#h¢Îü{µ¿¾òRUgÛe–zª¤¶Ïgîšše ó=½{câ hç¥oîvÛ Z-¡ßu´ìX¾› B@ýsCë;cù¦Æ²——t g§ÿOÉ´Î@éÐ4ó”ÝÆZ!ÿan\‚‰2ôL%o3‡þí|[ÞÕÁbºÃ \~ͯ#ïCæÆ&Ç{:Yk§C·Ñ [7D°þ>¾’'ØD^ ¤ÅŽý_õµ_³J•© µß´“‹8½¨÷èA§cº˜¶ViC×ÀÿûxµßV¼ÚCi!X»rŽl¸ÛI°÷\8HØ~ÿ¿·#س·—*ô-õ¯¸6¼Î4w‡š;iiÙj_mõ=>Roíec´ÍNÊi™Çßî @ýµÃíè%Gà@ÿ²Ð`›CôÉók‡ç6÷"—ÊB`ÅÌApÔßê¥_oçJm]…Í=£u_!º@àrÃsshSNÆâí6 ­éd²>‚ëëµ$vOD°Ô×¾™ ›·ùo÷”„€å ^^I!Ád•Ôúà®tíø÷$ûË=Ñï“Å:þq\B”åᯇô®¯ïÕ¹¼×´€ßq‰ÿö¿lbßÕ³¸w<]u¬”) û¬•wA›Ó½IùŸïǨ‹òψ^ëÿÇzZw6ÿ!k ý¾w>ø·zñ2ÿµú_  ÔµªsÏÜ»¹ÏñŸÆûÓOaa¢õ³r©¬×UԲϞC W°/îÿ^_ûs<íP«Zµ3ý,7ÔTû°¹O6Êïßæ%D®IJ/=_ðõ ¥5íò«A ›¹ß/úÛÿ²Êÿ9øä/(îkºOlƒå³_ËÖqý«Ý¬zýi7¶iþc=ýLÙýÓ5ÔñßaÔÿfßöéë‘fäò*®Ø·«nìßæûÓOÌŸ•‹oÛ¿æççï<:ƒóô͇‹CwšÌ…l³:;þÓy £«ÆßRjþu^›S¿'þÛ{Š»ñBű °ìÉæehþÇö‡°ÜÈX°ÞüßÚQßþNGÿ7¼¢þê;uûâk&ˆµŠOñúçå¹rbלøµ[€ÀŒò[¿ÍÛÕÞ¬çðމà/Üv#-à?†³PÄk«>6ÿ:¯•ò̽䷿ÓQî'½/Ta™¶½}xÛÝÿø{­¢‚r˜XÿÕ¾±¶ù7Ýø›}8®|”ªk¡DãáÃñÿ9œ…sˆjÏáÿÚŽ}«¸Vüþ‹£¨wj¨9Ök>ö1ý§óÖ~ ä)•žü×yÍ*gŽŸ¿þÏΜ{#ËâôW¯ÿãﵘZ6ÉuZü?mÿãpŒ—åï þýþ?]R;¢e¦]sÿÛóÂt¡Cè•[ÆÿãßóàwXÓ¿Óq£Ý»„àÈ|¾ó““þñŠìÌHÙUÃöoíj‡çm‘ÿ[Á#m÷„Vœ¿¯Ð¯¢ÆÿŸo©ê÷îîü×ÿg&1ãÇ÷ôïûý=Že0e·ßîÕ£÷Ÿ¯Ë†ÛÌ'ƒÿÕΪögüÌ;þÖ_à¤}ÐÖ‹â¥<þ ­þÏ+#G[së_¿—œùÚá£ëÏy¤èýÞÄpר؃ÿñ¼ìÛÒ®. \úïp~5Cžÿ¶~°° Ü&ç¶F#Ì¥ƒãÿh×õ·~Æ+Ž{/ËøG»·?ß+Ä;só78bžJ¬¢×Es(•æÝ÷ú_ÿÿŸ~ —¾~`1üG9÷ϼ3ád´ÿ¶VÛ¶lµÄô¾p¤èÿçûèÕ`_ý~çmg9ãžRôw¼ÔmÚ#ÑW“Ê#Ú§Nþçø<ï…ø»"±ý^Ñß÷G…ë/Þé–FÛ~ …kN~4õ+Ñh½v¨ýù?~?äņä8üë¼b'füC[ÿŽÏŒˆ‘u-^’lÖ|½ÕîO{ Ê.¡çþqÞ9û.½Ò¶JþW¸XÿÎûð7: #þã—ÁBÙͱCtÖÙFÕ Ã!ñÎ?Žg±=ì—Øš‡ÿú½,3Ç*Ò³þ=r§¦ýå;.CZå\ñç>(¾Ÿ²}¾y6žžò2 æ \íÿ8¯b€Ï›ŠéWNá!±KÈçO?iŠîç'kß½Y±|Wõ³hÆþÕ¾ðP·(•ܦòOãQ›k:…Ëœþ•oÂòw~gÅ?Ïæ¿äMÁè×Ý[ã%<0›ÊèÏÜú‡n€Ò_mUÈþã™;|êZ1¼éßæ¥͘Qšµ«SÖ»5”AÛåkó=†Ê¡ÑE×|³¯îO½ÌÂÎ ŸRþ‘ÏAýuô‰Jy‰…³Äo3¨?þÔÛ®¯vóõ«½~;Üdø\õׂÅ,r¼ÁÚ«~kϽðß1± ¨ñÄØ?Ú5þùV3çÞÿœÇ”Ö\ü Có#²90mß+tñÆl<[«cêF!ÿ,/Âôµâ™VË•O pa†ñÏÒMYàdÌ.¨yŒ*_¿( ­ÃeŸÃŠÁï,]–6g/ÄVŸï’úGûKh&|:ì³ô_ý ©æ™ë#û?ýXNxÐßö¼åTV™ø~å4ì^K#D¯<‘CÈ>Ž[ãr<æçå³õ³|¹ñ_åP^ÿöÿÝ÷¿âÌX®µÃxÉ“¹;ƒ.ÃRùÒ!ýûܰ¬Øêksú<¬öùfoÈxÿÏûƒ·"“¾}Û¿Î+9£–Yù@aˆþlW} 4··™<“Jæ)Þ!h¬­ÚœXRÏŽ¼Q]ôÂÊ|NLHÿãxê/¨ vÁƒŸr-¬»»ûá,ö;Oë!wóù“/ŸŸR[Öh9ðÔ·W´>õ£¾µP厎l"„„>±ª¤Òwßk¯ü›øŸ;³7÷ Æòb'.Lm{÷ÏøüÛ~ò¿·çj- ãD£®)0Ó¼¹W5Vã'^<Ø_ ëÌ}\å–‚ªº—ݹÿ™Þ[X=yx‰‰ÏÕ½òí”f®aÅÓ Ö1×:tÍ2èîw1ÿ| ´SË0ZA—Çéî­I’¿Õ^ÃëÓ!u)`>”u¡ñÈ6?ÏðovãÐ  \qxj)ì÷ö/ûG¹›˜{hÆß¹ŒŸøQUpUš`r>­ì&q¿¶‹seßF¦¬ÚIÓwW­mÄk™žÍÞÆDøõ¨T)ÅÔ¾^æ¡x¶ùoúzíO>½¥±•ò„øÕÝ÷˜´ÿ.kN“ŒAÔã›æf!°š³Ê[æg/LŸ–©ù߆ŧíŽ3TXÊší+¤ƒZ/Ê,¿-fo®šSy/ýmA=´]ÿØ<%&° uôÑMm©ß”¾y¯7¢–÷µä¹÷µ5ÃuR?6µOžt;¿õ¿¶º¤Ž<¨wfüÊAõŠs¿Õ:›U™"« au>ûH‘ÔvØQi¸Ù‹1µ¬D (iëæ]€¥Ðˆ€À‰pX.kýU'Ëå_—ê.P"Û8¾øF!¨’=µýæw`¹ÂòRoN6,ËÛäíåÈ~êÝü!0X0sœ ]!±o0ø¾é¾hN vÒeKÁÀ¿ø|m¸t¤…¤Óì2¡;Õ+)Ã=ù ’ïZ; ¿+N¶ì7 ’’5"×kCúNõÐÁ)èFÕÿØY¬ýÝLÍÑlŸ¡Ÿ¤R<ÍyúÑrw%ÃjkgÎ 7ÔošU^&ŽK LOÖ×Ë»P怄ZÁó\ìšuíÝ!Rv2LÔöm¡éT™¨ßü³.gP¿Õó~ð.¡Ý(ò[¾‰ìÿ|oKƒ4õ«º‚óÝðBê÷«ÝZúÎ~Ôﮕ—J*ù¨?zðGdUÁ&¯ÖÁ&0_2À=ÔUÙ›»Â¢àÊB»0sØ„—Ð×~Š== àH!(«FÔ–—Á:á¥9·Ç1Xküê$¸#@1|Üßü65gBß+€‹˜ÅÉÜe°æÓÞ; " k­“®®‡5S¤H]åv3fÜ&Ü¡?Ét£Æ¬Æ]m‹Ml×ÁÈp»`ì *Œ÷0*ÝsI8æm7 €a@ŸÃ½k0L^1¿ï[ŒPÓx×Á8êÅ!ƒ09ø8³ çÅ)b 0JzÄrâ=Ù.vSmÿAÞ¹/ª´£¶ÿ·9CTíS’¡„<Áù¥Ésׄµ?ýŒÑ"‡2‚kшééãÖµßý>"j‡.<ÓÊ >Q{ëˆN@ìó¸ÚCùuLµ}‘ôh]q‚óçÞõ%µŸO‡ž²Jë£VŽž [ÄD½ZðsÞðÎ8êãÇa¡º÷™`½l†N6ÁÚp÷•„Æ pªù߬‰…哘¬Ñ›ª°ö<+ ðV´¢-Waåßõ“ݤ–/ϵ¥«ôÀrÓ2Îî}Xã ·–uÿ¾kÊ&°æûà{–t—¢ÍJX®>Ì7wùXº´F,Ÿ#ÓßöuC0¶²MÛ^QÓ‡G…Ÿ€éÜŸŸ_%m„é–)ëPËl‹šŸ¿“ uׯLmf˜HrʉÈðÁ”·tÓðª×0íû’h,°¦œÛÕ™|a¼<­»¯I¦1\¹ `*¾ÕúÁxL~YËÚúƒ::sËþ‚Úmðìè}탵ÙVý“‰,LÔï‰Éý m…µwÝ/x“Kí¶ñÜÅ”;D}/Ólùˆ‰úCàeÏÈmqêÏŽUÅcž$žntbÝ_U›×4y>•‰úYr~OèhõçkÏ#ãnR'õ³·äuP-ëæ¯ÛNâs°I±Hº›`ø¤HÞ6›l"¿yœÅ¤;˰T6LúwR‚A‘õã‘\ÕŠ¿ž©“ (ü—#î>ëÊÁOßõ µÓ–¿ƒ ¯x\ì^P:7RoHÀúDÌ1ùÚ°¾ô®æ^\¹Å=1¹0ÙG²…“e¤Þ©f¼Q€”»êÚãçÙÁ¨²#åŸ=L®ÞQ9²î*ŒXSú„xaÔ.æüù5Œv¾a¶=Zc§2}šarÍFTu#LÈò˜º^„ÑêàxÉ#0ÖÓjV ƒ±Ëã¶mž•0¦Ðt«mœ9®‹ j»¦¿g_(ò¨òÊ8œ›Hý´G×Pæ^YíWé¶T¾ž¨Úž“stV0Õ>{¦±ÝÑ*—Ú36Ç0¹¼“Úí|õLÖî(jÿ°×Ù]Qµý{3ïÚû—Õ>“¹šÉV€Ú¹Ø{ÉæÓ~ÔžÒ:ŰóõÝW~ûÝ;äßúïy`{±’zð˃(g\'å­‘W÷½€{K­zï Óæš“ÀZoë6U@¿Xþ%%Ô7ò߈½'ùh¾ÏýnKà¥ê))¡*`¥{ù’× ^þät¾÷¨]}é2,Æ Þ}p<&3f}l0<æ}­ ä«Zõü¢ž0ªÒww:Ó®·ã0|è7Í,æ £œ8úA¦_0bjVë|é£á æÃï0±¼”Ôº&ƒcòY a¤§ó\k Œ:¬’~Ú£ï Y­–¸Âhüšé…ÖÅÄÜßÇ“c„ÀÛ¦M¾þU„ÐÛt—ð*&‚#jÄiìe!|eÕgKOB`ÃÕuù® ~Ç”«å .ïë*ǪÎqÙÞ£…ÇÐ*Á¯›;!¥ÒrUy!bn_Ö®¼ŒI‚‹íÈ¢)v²ÝžûƒváDZ‹kEXóÓ™¼Ãk@í_Ïå¡›¤t¼¸ô"TÍí½.žÀw W¡ªÎåµ/AÍõî.ØjÄÏ>yeØìçÍPŒÄäÖÅÍÒGóﬔ54zÑÁ‘ǰ±KÛܺ©6;èÑs1›¥ûWD…ÂÂcæ~Ц|6A…çE`Iõ¨¨^“³Ðú_,6 °xY<ÿQK Lí­výøfÊÚÒ\ÛÃ4á‡bwÃ̲¼¢6 À¼íÊ„ðpˆô®Éƒé%Ü6Ò­‡Yªèè½ï¤ü™ïðõ°ÞO˜ý¸1œß†àøWeÄÜ‚Þ&µ^‚{H\©½¹`»Kikz|‚˜âÏ¥aÕ@ÌåÊm²#ø‹$›‰=ÁãOßÙàJp%pÍ•«Õ'8WÆüj+à#æÎ7òÒ1®'xBË®ª'8Möü 8O9+ÅúæîKw?fÃf|&oZlœ*Dó•6€ê[÷Tw¨”[J¯ï*› »Dþ2PJ'7^ƒÖêƒñå°™³æW¼Ü|PbX/OÀæõž‹Z\AÝÅ«»ˆe1l¤•öŽ®¸Їý|É;I Ä,¼„íq ÏQ«Tz K§™°ˆƒ0[ºÔõÎ~XN(Ugv9Ã<Œyý­iXÖ$X¼™GÂ3ñøúª¢@˜¯¹ph¤¸f_ò.yß,…yÓ1ÉSè°d‰žÜ?KçÆ©÷ÏÁìkXÁ„Êe˜_HÛ‘˜ óÆbZ‹2óL¹$²¨·vü·[¹ÁZ,þÕs8ªö‹¯a£ä¶ÎÚ‰…ó^ܪɪ¨ £rûç,Cõt‚‰`vYU¢*:V;i·>ô£fYíOMZЮ–ÚwµymÙ'×ÕŽ;+Öòg‘zM£ÇC±¥öç*Ê3Ѷµ?Â=NZkDÔ~sláYÈq4{àJ’>äùVº¦]rkÝç…ÀÙó†vï qg~ÙÅG*;úM’íÎ5å|³N©©F®í‚®½áÎtÚvÌYz94•¥¾Žï_UéOk÷F+–œ~|¥ØøxïcWrŒŠ—H…Ä_qäLnO©T…å”sÅeçR˜6^xtm¥)'¾Üñ! ¦L×íw.¯ƒ™Öòœ‘ã+`ªµõƒ…‹Ì”,Wå-‚ù]£ n×*XdqßfNò‡éAUÏÆù0cª\s!fš;_Gn™‚™ì¦œ§ŒXBèwx³TbžMFœ…6Ápl÷žt}BXªª@óÐBBè³ zâļCï¬Kï¿!„ÍÛ°ì|0!Ä=Ý}F”ÔÇÏÆHæMF<­O䦯³4ï½g˜˜‘y †~2¥„PÑ‹ö¸¨qBÈûÅ¥SÏ=Á»Ý›„ ‚Î9À[A»WzÑ8Ft?»¹&ßr@[<Éþ%õ4èºs®º²ìmy…¹LòWÐî×ßoíȉ%’™} Qž·œÎÏ«&ö›÷VÐÃÏÒ6ª–l£4ìDͰèóÐh?ÕD_ fä‘qª’Ô;Î(Þ¢0sJo±°ã%qx_ÀõS0ßôâæá¸8XŸ~ÇwôÌz ò%€ùbç°²•C0{®%³Iq ÌkúìZ¹vÁò¦öÓëLâ°JÙn°Í-Ìe§„Þù*À‘¤ã‡Í¿ð8hÇ–µñ9°ÓVàcûI€ù–Jž:hRßäûNpƒ1Yh¦­,ö}[AÒýñ’ðaý<€+iO†(¨}=)S+}acû—}å5ýO“s˜@½¥%I5 †Õ“;¯x¨ƒ:ÿiŒ“¬,lw~‹}«¶ÔîWª©°¢olSôÖjƒjnEòÁfk$ ›Ä+Z©ÕGaµU¶ô°êbXó^{lC퇵®0;óÀyX 'v¿t>JþNSJˆßbê<º¾—àx4e”÷¼—˜·cm«ÓÐeB`á~Y÷ö2BÜ(m¼Œ#‹Ï3,¨ö&DÙçÄo¹šEÌ]á?Nð…X§4¬# £s” ÑÛú?Þú¢ÒGÝÝNŒóN˜d%LÜ'æq]ŒMÿ/û:\ºéüNB4Ù:£Ý£æÀ²Jª†ÕC`LwõÏãl@,Kꨧ p8ÇtO,p’ES†o'@Ud)MHdUó™3$ÞfŒ„/æâ…er—•Øôö^î'Àú܃Ìû$Ý0èÕ¿ðT”ßqÔ_À2/Ngá MPÛå¢N•gÀj]} ï ¨>ãÇ5ùu`YVØYî\ «®æƒÞaÙ§éa~?V=¦‡—¾g婽vXC5lÊFiszúa¥”ZÔ¶ÃVÅœW9(°jð-3‘‡Õžïñ7 Á'3ŒP“`N`!˜-ÓÛ×({⢗<ß‘|‹ÿäŽÝ½„Ø·ÕõKõ ± ŠKÉí<ļUt–ºÖHBìN‚V ÁÍ´SHìZÁ#:˜ÄdTFˆíخШIˆEì’>’Eˆ©D¥-!DŸg³{º„ƒ!ú;à5è'“LwñÝ}Z°î ûÐM;ù=ƒYAou¸¢l1ômýEvY oczé::úÎE‡Ÿ9.]çó° ôÏ=G~ì’CÌqýgAØÊPW]epŃ…3þ‰ò/l>¾]˜ÿß1R\?£/pÁbÑ7Ç|?€ÿEFœ”;V|v;r3Ô¸!—€ÇQ°x±ÞfÄaùô °ÐŠbX¼¹}Â÷‰#,_´/ç(E©ÿSè¥Ø¿ú‘sb–ÚeÒ«¯|ô¨m­’,Û[qkÄ –ùúæÔ±òQ3þ 7¥ëë/éä–b®"ýŸ%úöÔ½U ™cò¼¯Y¥5õRB’„sYçÃM]„"«Ÿÿî Ÿ % I)iåË„äÇ Ý-ÆÓ„Ôª>‹8EBIt*ˆYG‡Pü¹wÅGµ Bñ¹ÛØæ§C„b&»•áJ0´f G8A?ÓIµ¸È†oHùØHh+z–åçƒ!°.iuŒI·ïP渀~5{ûÝ;¢ ŒPœº#Ú€ïCU0Âͳ¥>{ƒqÁ›]’—¤ëv þ/V^­óˆå®üJÐ>—þ¿ ÚË!‰BÏg!¬¹ù«7Òj@ËÒõjYlŠÏÒ×·®$éú z”P¬½š×©î Êþg¹‰^ü°.þ•¾—È¥ —9®€Ú*sBé'¹N»¤›ï¾N…ëLjÝ4(Nô’úísÝ̾¾P uolá+!‚f t\Ue–5uq› ±5J›WpÊ—öZHT²M“çžš T’¿ÿ’ä&TJNvï_+A(ÉM$QåÌ Û¶:·réÊ!ÎRÞ„¼Dü¢ÚÆ6B¹õ&‹bßWBùêê«ŸÏ åÉãF¹S„²ÂçKÒ+W‚.òû´°d¾(yÐù;ª/Þô\LØ ZÓÁ÷’ ¹Ý+-}½É¨©hkŠÅæj“í¢O®ò<ºµ®ÞB¦g ï¿e(¿~4ÉÅ'Ÿ_Íý]Õ¬$h’}½š§¸ubÓÆ@Мþ’slˆÍ¡÷I:J_²nI¸,©ÇÜ9_ÞºœRúñÄNP-OxÉŒ¯y¤“ŽzƒºŒõ=ÃxÏͶµMgÄT¹’ä³Ezþþ% P—Ì{ψÜj{¸›„¿øE;、^Å£îÿþ¦!18sÁàL(&>ž›û”àr¾µ@0ƒP¸ó3¿*›?¡WM(¬{2‰&/¡Pªúás)…_{ÐÛ¶T‚PÐ0¨zâ@Ì»nÑù¶‚»ÅÔO(Ÿ üæD(›? ”|E(0× nVb&äo= úÌ~Œßùbì@ß8Óõù«öT+&á?®•ôô¢âÈfR.YªÌƈ¼zDòÕcGBH:â¯y=O€”Wìqèó>jè%"u –{1ù$>[~Öž_ðtæxî×ò ³HY²Ô´‘_÷=ùdÌøÅ¸â÷l}ÝMÐk-Û¿6ê9džØAû0b¾©ç2(g7œš®è•{{´2ã l˜Û\ï~›w >^2"·ÅïäÌËh«—K>ÜÏ ͵E»†Ã懇DBÔIPç¼ßUø£6ÇN]æ-Î'äû”* WšÓtˆyr‘ÏÇ©š„JQ½gþ*BrçäþÖ6:¡ôZµîeT,¡ÌÓ%ùrŽ¡àÜ{6ð6¡üQÙPJHE¯jÕ%$45ÓÏ(Êï:qŸP®’§‹m!÷G`¹ÈùÏ„r¬Õަ­%°­îr(†í¼œ…½°ÝùM_ÍU0’M|Ua»âÚÄÕ¤A0ÆøofM’í5Þ…IÕôƒ1!¡’ðŒý/¾­‰†m~ìJ'ã°xf_sHŒæ7fËÌÁ8Ãå$˜FFmW©Ús06ÝX|+²4…¿â¸RÖn;#œFþýœš‰¹°™¬êZñ2Ð ôÛ¿ˆ|‡Î0ç@öePYmò› aÃïu´çÛ$lI­gû™¯SÃÃê^Ð~4–_x46~e^ÏM¼Ç¥W B°¹ueKH,l®NÊ\»Ì Ô~çô'´õ Öz~q#ävV8è­t$´¦¤)Û¥~ãçUW¬ -éþ…é_Ä-ñÆ]„¦‹@æƒ/; ­3jìïò?Ê/ž´ÞV!”ŸXö>D†Ðòc‰Ñ8¬Bh-ëÚ•TO>_ g:_Nh-nVú¶ž¶ìÅÙf,g*—ÿÔF¼ZÇÅè$¿Szrü OÜ5=\ƺæ=!é`Äö¹½ ]JøJ5^Ћ¦z½‚>–·µ+äñAئ][¨ÿàs=l0›z¾ ŸIŸ.T[é?ý¸Õã¢m (‰î²ö.³ß4›ÿ?çÆ,$÷Ë•„·,z$]ê볫4· ®ynì é ©_«y=e :q¶¡#JŒ*×1‹R~üÑA;”õ4¾ ¾LSÐ45|n~~š\¸{e@1¡üÛ~c”ÐÊ´žxëóÇ_ƒÐü¹nS“¿¡jÛ³ø ¡q;bk~É#B‹i`ÞwƒÐèœ. YdDh~Œˆ|çK(fUÓ¯%T&=CrMŸæ{BµOM·õŸìÐ 4+®ä+;OhŒz«ü ‚ñô÷EèMOßW½ýç{i¿Änh¾> Ú7Eo‚Ûô§‡¥{š@ïv•Œ½vôëâZú:‹@gi?a®I~g˜fÁâBØñZ?2\¸ôà·)•‰Â$½ ,H¨ õ»œÚ˜zÐô\—ƒ~{&I?TÒ>>vWÈå¢@Á(‰ß:·¯ê[ÜDx}>‚fÆ£Øj¡;»ÇøbûEî}{ØÃ¶”¹†7‘¼ãš C¤|ßñâBþA`‰HX®(ÍL騶!TÊfèí„vÀ9ý£"OþÀYá”/U9†—“ ¸ÃÎGh9íi*"áâhò'¡eùÒ:κˆP~°Úb‘‚/¡ZÑ`’(aGh寚ËbAâñë'­-Óš.»„æç]-’$ÿþ+=ÆóýÎÞCáêŽÔõS»A;v,=Œä[Ì/Ú4Æö3âXâ†ÙvFkç~pçí‚»?¹ºÁ06Œqêlr—qút¼¹và`ÅQ­Fâ§ìzj=‹.lÿ¯ûßEÁž³qižOëñ§ÃöºÔœð²£ ½P¬ úD€¾^f·NÊl\?Út±“åýM`\¾Ô—25›×›Ö‘_Ý6—,›…wÍ!ñ¤iwK'èë—½£×J3÷ƒKæª|9Þ½ž…ßÅðáÁå× ùÆ{ V0û§E¦¿?#áy÷t³ÙŽ?í4^a=µP~·PÙÏþúìûiã•òWŽ©“ þ'G º¥ëpœ#Ô'.ö ÈÖ¯gæe!å×8Í[Ù³qól2jΚÕÕ|Ë7Ó–Í5y-}áæH@Î?1éÙÿv¿ø²íºd/©Ëé°Îö¿».ÅñôKP¾2Okï´åÇ„9q|+(¯ î©ÏæEƘHiŽïl\aúzûØK›ÿfφ_ÕÙÍôOøZê·Ï„`ÿ“ÿœPÙØ®ËÁ÷oí”Î5•Œò½ùŸšÖ ×§¢fádyÄÙ2©ûïö,5û ÿÍÎóÿtIâ¥÷§nçµýŸ. ¥ÔŽB™èâÿú÷ZÆj©vôUÿ·çý×ÿÅàPê‘nùýYþÇÖAõ îòÞŠ¿ù÷üÿ^˜Ê6-ßÿ¯íèŸgü­@Õ´¯:YsqoÓ!ñóI:ïñr¼±Á(6|é.Nê?¦YîÕ+>ÀxSPgôNÊoÏL¶’ò»ÈÖîûJêÀI=¦.îóÀÝwM?’/vÚ®È,U¹Z<ßo!¶Ïøkä*¯®ÞÍ+è™Å[édÅý.g Y€Ï?,XÕº…kÜçj¡}/–6«ªŠ×í]Ö‡*‰Ï„1­E(<_µÒú=¡´ðBÌÒRR¿Ôþ¶t…ìO²þbs]ËrBeMÌÞ ^Ì„Š„L °ÓØLÍ0¤X^Læ"ÊÃÿ|¯Õ&ÍNõ½¤¾Z³\œ Öc©|Ü[a-ûb•î×»°Ê›»É¯7V嫬ç/€”«éûPöÉrÝÑ €õ™÷·êì…UÆ`WÞEmXÝQÝØGY«ÒE'"ö+ƒvhÆ® ”1™:Ãm³ë$×}Ñô£:)—t ¼öR5¿D¸ëý¨ƒA›Û…ÄasÙož¥Ýc@ª¸]Ñ3´ekRH~®U®Îç¿Ôhîd ƒl€?Ê>E…äÃ[Ý»~N켯ÏVâm3÷VÓ„B®³APÚÀ8ËU/¾.Kêw~"l1ᄼ՘°Þ~:!_ê¹èáÅ-„<§Ó¼"uB6o²ß·=ïЮ9ÀCH^êx½Ê§‚ë  õ>#d÷Ù,7!d#y¦í[LÈ|™xuõM¨­3ޏs@)ÐZçO,=>X§q“äÕ#åGÈÿõµò¤%¬u†.4;Þ%[Ä® ÄWcé7w•@=âĶ‚ëëØl¥Ë@ÙšXs;Æ”\Åm1Å Ý\Éy0ƒMš±».&$[ÓÓRŒÿ7»;ÿͶzÏóÖ^/pÈ'¤²¤$¤æ’!}þäúH>ª·X|—{R~ÆÁÆ•˜ç°öó]!BTD$-*¹„(9x2_‡{½Üjl„XÅÞÀHz!ZãýÝú),±'\«ª]sÍfñÙgá­%G„`x†[ñy¬g\5 Ë©iËlþ¹°| +ñú ¬xÛ÷l>Eâu"k ‡Ì9›’–»Áêú’óL2­°üùüÓ§}ý°[5ï« ËA©ˆöÜÀüwBzXß1~i´ÏCù½wŸÂfa3g7‰‡ê©žçÕ@yQüi¥ÈØ8'²ÕmÉåTî”Ù¼1ØÜoæy:MʉJ?¥ƒ6 lÖ&5Æ <ÊÚå¼úlN ]ãTá‚Í‹q?ù‘ør±â%±vò·[jÁ-Ôé·öX !ÕÒ•½"9Ž`v5h-¨ª0iº—L‘'¸‹5­ ‚3iÝ©ƒÏ] ¶ÏûRxµÌ –'¯E~-ê¨ýþÌL»ÜU»v2ê‘m‡âOŸšc^Ëí‹êŒ' –œ’´·{ ¦ô¶äò£Š ˆÍܧ´ÀZ³„þXœ„“Jì­³5°jÛ r¥BÖt‹…ºw[`UÍçþeC4¬Ê ØW“p,Œ‰é0œ€ÕÞŸíbWWÂZ2B¹õ^¬kx¯Ù·ÂÚpÇ~{ïS° ;ÅÉ³É Vg—p'Ã*•¶gÁêoÿ2]XË8pãÎ&X–õ‡æEíAvÁ¨·®pÚ°ž¸šx ?u³dß™ì“^ó“òP»Ò¯MÞ ŸªÎ™·Ô¢K¶GÁzŠeŽársب̡q3WÀÆ´cþ2mm²\?º¾9¹vú·ZVB°ÖîŸû1KŸŠ ìÏ©df÷©.Ÿ?±~@„`—úÚe¢èE0U”¯” «ý.fVx#—«öG;÷I7©˜ÚOæo»;¿©v¼´Þ⃑5Áì¥×:¥\;~ecÇܣƵã"_O ÆsÕŽ¦”¬â ÷EèL|•T˜G§eƒÅ¥±ã:#`îä»ÑÔëÌ‹“—׫¾¹Ðõnʦ8˜‹0Y˜Û@>Įܘ ³×Y~ʬk`«ñkÏ•ó°à[T±½þ)Ì÷¼v.ÕÞ³»Í•+YkaökÏäç0ëNñ`!÷GÿŒy{#Ì}?ìõë9@Òí·»ä`±«Ìñ Ù8¬F—ózzçmÿ‚+¦°¸Za·‰7,|Çwíà‡e²trpÉ4IGÞ¥0«¬…5sÚü³çìaaK|ñã0„åöÎ÷vD&Ùîé÷%ü‡a¹·'ä[F;ÁõÛ¯à¢vÞw]L°Nš;lK°ì[{ç¾ÝCbNô—E“ÄœŸýÊÏ'¸7\¨u§5ìK¢ Þ(¬'Î.¸p*‘`›:ò%úÁÉçsÍIÝ‘à z¼aƒ´:ÁÚ°cÅÓa}‚5ÍÛ©k¿2ÁœUý0,¦–¿·ŏù³`q’Û<‘ó† rç*`ñSþYð±^˜¯ßsú]7̵¢/swWÁÜî ï¥]Ê0{Wý4íûXè®ú"&ÎL©3´8¦æƒç¾2ƒYcÖE·%Ìz‹Vˆ<¶…YCò§ÔǾ°üŸÁæ¢õ²’óÞÂ"­ltho),ÄnëOÂRæý]Ž^[˜'¾ˆúó¶$§»Im0ß¶2§Ë{ ÛÆÓ•¤a¹ø°üÚ ßa™0mþ²±楊šó²ÀÂcmP±õ5Xøkg_ljo§vý벎úîÍ…›òQUÔnÏöÖ± ê××§ì­m<ö~l=SnmÙ[ýñúLÔÆP“"N?jËæ¯Q…Ô/®#ó[Z¨=CîQîu}Ô—EM ô‘ƒÔ¾éf¥·’\ÔAZ×Qå]}ÔÁFæ×ã‚ÔÑóWÏKy9ÂrÃL~ç°è®›¹f,¹?ý8Wù ‚¹¦Ã`©=‘™2qjª}²z°8ÞjÎÂÔ ‹ÈËUE¦œ°0SVR¡†‘ýß48¿‡eiîéFžXœ]ºˆ.ë Y¦ík®©’í>DØZX(Ÿ=ªx*V}3]ž‘ëèåÔѽ–|ç^õ9ÆÀ²óîs3,MTæ uÀâý!6;3XJŠŸxÒþ/¶pìé%áùJK–'2ÊsïwÁJ¦Ž%à)7uÆM´ ÀÒ›9CbG ,Ï„7  ËMOuÏÝR‡ÀïpP Á_e$é0 AÛÞÊÀ<5PÔm¯mÊâµeZàÝ[y0ì–)øy¸æò^€àþ7j:—ïB(áÓíg®Ù¬b+M¸Y h©«òŸ1÷Õ­W#7Ézµ%gn…R×Fz>„OoNU“ ‹cÙ×YÔu=x ‹’“.×´`qQ0–?p,–úŒ27zÁ"ìL® +¹ãÂßé: ‹ÔÞÒ‚ä¾v=²½¡",ªÞïl_ÒKe¾/-Í$^ýì4®— 7*÷É|òÙwź-Ša±`Tš-BV•3„º°ÿµaßÖe° }Øvü,S–¤ÜeXö¨íäºpoáS¸¾SOùu^Å͆{,£cävÁ²·ñ«©ÂSXm“rúI„Ť˜Q[Ë3¾J 3Á2Ñmsý÷*X®º|óÖaGÏøµéÌ`$gd‹8„_TW:ÔEA„i4VL¹E±n&{‚OX,àŒÃvò –0VCˆ÷Öø±ilOK$ œ?n·‹³ÂQM‹öí®‚`u·½Òõhýpq1H¿¡7i>/¶Þ„ðdŽÝŽ# ¸‹Dw9”rÓ9ÿà=’ Ö³Œ DŽEI¥õb+Ž'\EÕÍ|Ë9PÜòö^Ýõ_gO»NmP$˜§k‚²}kóíÉ0P:8TeN„€b1ÏE”{ Ù_åÑÄ6Ptöõ$-¾ Šb;°aŸÉC´‹”C|Lnèʃ¢·|t£(É?÷ñLJn åÀ]âûƒÓ`µdí¥3¯2am%ÀnuÜVµ×?[= ë¦-Ñw”ƒ²Yä“j†2l¸¾ðņ$ÀêIØC&f5R¾sÔ½˜ëöŰ®¥~Ó_ãæ™0ªÔÁw/…Î(ä‚e؇™ÉÓƒ:幊=â±)uÊõgº¤Qµ;ô£Uà u¸÷`”N¨1õ«­Ú†—m©“Têʨíú`ö¨>ŸÇšæ€t·N êŸùyý‹“ÔŸýžŸ˜[¨“’»•7Ö N⻺ól6ÏØ$ÂÆÝôPí¾/Û…FÏ÷ÃFðÆÛ†Pž]›ÔëHx·~â+Ë&áyߟ~rZ”© —Ri‰  =T¾ëlÌ¢öížd†Í¹oåÛÊ]a£Ûå“Þ J¢¡Ã»z (§~æG*(ÉâÆ¦sU½¿òSZ¥ŸÇê“ò÷ó3C‘[„@U­ÍT<±TçÐ6ÿˆµ üh]àX?W!&N Gü_%.tSqP-#zn®L5éûjâ^P¿éI¯]+ ›Œ Õí¦, ŠY-tÕ…`’¬| ª†A¼lC=8Ë9êÔ)'¦k¹àµQ?½o÷p˜’»»œ{üB‡™À¼¡_rÁ˜’¼¿ E½sõ&–íï’Ày »"î#OïÌ[¿œ¼MŸ/ªì'á}·s}"8[¸3ˆø9à ±.JÝC¶ó^¸ø‡¿"¬’lðl'¬^°5~ùº–§Ævn;ÓLîÃMÅ ’`ùÇesm¬ xç—s”Šãh¶~=¬äÜk•RûaÙvFÑG%VVæ¼un °Ú²ÞBêÑ{Rl‘xþ–MrLrO9`9^Õ`R@¶/3þø<ðš¡Ï-°Iz²J(í¨ Ú’úz  VÄ/¦’pt-åßRv ”Ï_âìlH¹ìÇŽÝÇ™úAeÒeôŠÈ&šN–-Y½€9-OêY¾ƒª”`kû&TZpñÕõ: F.LštY êªÄñ¾$Ç…0‡ˆîÝ'×í“!-}b.EÈâ]Å|™ÊÅLûñîàÅÌ;°öÊˬOÝt¥ýFÚMˆ4¼’Mê {c£6ÈšCÊìü䃒«“ŸªÑt!jÍÕzßÇý7ÔÓžB¢$ñzo_6$ܦVÂä>áƒý ÔRNE¼€ÕÕÝNµŽ¤þÆšù«>ˆþ¦Ï\àöºÔ¥žq×2ÊIkou,_Vª÷¢þ¾å)O#Áíë¼b“6Io­»:b’ (ÇpøbßáV¾ó!–Râ–®Æ ±ÒÔH¾z2[càÂG÷>Ë ­Z þ2¶=×!²óØKãm€ôŒ},;°[,òa¤¨FRN_œ›†eYÍ÷A]ø\òv`°š¦gÔ ê× 7ƒæÕ$þv½òNÔq&ù/PÇN]×ÕQõá–ržª§ ÙI}ãÓÀXÙV²]Ûßhk€52\g© h¯þ²g€ÿž=í¿væÂµã —"P¿îüI7kÐ"?ë®.ŽÜ×Ý?)”œé {s8ƾ`÷®CÁWß§ƒv˜såµg> ½¼¶MçDP0ÉYZĬô˜»ßèI>Ž4è|rùÂ`¸f®5ºL©/^Ñyº¹àQ;üCöu<îË»óQà²eµfZœG9ÿÈóç¥>ê÷EåæéLÔ‘Ž$æíµ©Ô)û³rózÁ½ì«ØRp¥ÍÍæï£3?àÞÔÇDèyð,k„:)¨'=ç ˜–¦^+½êÚ¿òÿRo”žt\ÄFò1ÅÃ{\˜AÍ÷_ß Øøµ^Ô¿ êâ̰Ü.{P9\¬e–:¯x³íOD÷5‡,»›ÇVJŠ‚± Ú›lŠ¿KâQò7»­Ç3@u§‹=5õ!éíy_™—® òÛåZ4cé_yiŸ[·ïŸ9oº¹qÿü“ Û.¹)w°ôç2U·L @{t+)@‘t3"•ÙÃtÕÂ)©öÇ ûé½” †BŠÇé÷ÏÁº¾]N…º|tãÞ>CÐ<ꜷ…ƒ¾òèu·AÐ]Åæî^Ç áÉ™86ÔIÓãÞ‘+} ÜÍÙ½‚cLÎÌËu–Œ@˜±UëúôK°Æ/£{D€Ux:½8ú˜Î?+“;–+æoõGy!24ÙòxÎÌxow ^÷ó’KwB]xÁþZ"]dA58rRÄÈö¾›K9u€U›áú:aó$¶{Wƣʟù~Ø&WœÏ&…Ÿ Òú]x¬ö ˜ð‡•þ>«ê߀º/ª™…Ö@ò7KúO÷à™¾KÏ$p8vËB¸¢eþ˜¤uýjG( ÿö#°&®Ù{R$A_ü®tˆ”i‚—…„BsA›/töäS 9×ÑzN$hÒÊŸZhâ ©½8~J4Åí÷_ŒÝ=¬{U]öГÎñ~îÈã‹ô®Ï1 q'oä¦ÎMbÓ+‰K Í=tZnKÄfŽs<Àº]ÈÛ*²"4$Îo-ûÌyÂ"EÐÏY_8-ÝkQçXFÀ!ßž‘øNÜ;/&e¯×ü˾^gØãÑ{áW–@üÁ¼œ-mpJÔ›îý®Òqg–N‚ËûËÝ~p•pd2¬@›þ_y|Gs~I¬Íè\`Ϋ~Ðý®NüºZëÛ~…z*èëÔ(óÕ­A—?›µj è"fæN_„@WKë;YRZ¢ïÔÎÍA«Ï:Ú8‡„›$¿iÊ^ÐU‚ÌÞ‘x¦Ì¯›Óõt#Ž·—Ž®-zÆî‹ðYûÀU,tºŽ°‹„õ±o~Ǻ˜{âEƒÛSú¡ î(`×~ѽŸ†{ZcP,I¿3Ï©\ã´mtXäöæÕ MRÝFúÏ޲¡ÇHú´O0«e H‰¸Ž¤Kˆ=©“ ößq™NÔŽÆË'½Ê¥~³Ï‚Ó½ÜÚO{KI2ÙÔÌõ>%4¬ößÝ…<…µŸ4,ŽÄÓÕkßyüÅϯ¶;VNÔu¥ßÃÚG±–ãù+aËò})[¶*h;“ümØDÂQdÝè½¹ ]->ë:/#uŸ_#7º÷½‹½ F‰}\¤¯+hU‹ÎlvfM4Öõ©èœEÄùü-$}2Ùé,Sû|æ¸nkÁ]’1èNì¥>ŸÚ­‘(tà®}¦¶Ä°z’÷£5ň‰àöv.eýÀEpŽ*¸žák!Ø™¶0…R³Ε/ï/ ¨£+y̯¯´¥ž¤Þ Ï%8ǯÕ|æ‹!8>OÇç™  šÅã§Œ Ž’×=Yß{Á˜ót¸èç{ÐêVKZì=lUÖt¬í=J÷Ý€»h÷d¿m™ù.§÷Þ'‚¾?ѵ%9´·Q¶† ïmµ®ðOVQxÛsg ×võ”ëO@Ÿ£¦N€nÇÂ7÷Pè‹NpôÖÝ=ÔÙIÇĶ¿ãQ€aÝíêývê¯VzòáxòaQLl7Ý[xóÔÐ[—Ïò<†OÄ®µŽ¯ÁÐU´Œ} Ú»s.Ç´aûaþmwÎØY†~SCçÈîÆ¾~0ìšecÁ°Ýô<7¢ µG±¦ÛµE÷ é~m¯Â¤ äö`úyM64Xû±¼3÷æ1¢v|®çZן\µŸV}úòݱ¶wUschjŸ}¹Ïgõ8¬öAôk±if¢ö¹»ù¹Í'è_•ÃÅ6eùÕöŒx„­~t°ö~ïÛÁA-¦Ú{•'_ylÌ­}Laó;ìGòZ2‰Ñ m]z]\¨´Í?¬¯Œóö£§Ds‘4É/WT“pÍL,­]I®ÇWkû Nþ‰a^} Õ~¼ã7ª úDó±[E$ß) H~¯ÚÝØÜ²Úó Ý±R¸Òÿ´›6 ñƒdÿ–CÛŒ*Øiüµl7to¹²± vÓbjÊ{NÀvÕD•œ)ì–ÿJÚ©KÂQ\äôMsYØÆ;²¸É‘ÏëÝKçÄ&Â6:‘}IiìU+û ìI8·‡7<‡íºg˜ò÷Ã6uÕR“®&ØÆnw~_Fö«äY»nõçLø…Ô þû¹õ“Ôîí ¶Â2âÔ_i§5§Ä¨?õÃS¤=¨ge}vú€¹/CË˃úK™aP<LZ ÍëL‚5b´kcØuVDX.§NÞ1ˆ‰|o&Ç÷%yŸÀ°úJÒÚ$0Yš¦†ºÃ–wF~þúZJ<›4‰o'}}ZA?gÒ´o*¶Ö;çé¿ø :c[À™Å ï2±t¸zÈwMåë —íùôð lµíe•î—Ã6tÓˇÏbAOæßþb~è9K朶àý¬û÷1_’®_¸”ìÌåÆé¿ÎsÚ¥ŸßÅ¿ƒ][JiD ¹®ÚÊŠ#+Á¨iL©ËCøaÃj’0–'”åÉèÎt"¸ çbãj#`\wz¾‰$øŸO¦€·d¢TçÜ'Ìm|º²“²sž­"âïbîÙ#óîbNå~(s)C`åi&Q3ÌMgµ™Ô”ƒP÷ň2Nð·ÌÿU]Ô!UÖŠC!Ì¡z~k>ËÁ¹¿ÎÚ=ŸÁ1TŽhCˆUª"gEl]ÿâûŒ„žúé 0†Ÿ-õª£%9O¿alE²[¾#~AÎ…©’>¶øáÖ FÊIA¦¯¤|Æ7¼¹JŒ÷fZ¯¦nÀVbw‹@:Œ¼oßµ­Èr£J¥}š„Soå»A0VšW?¾£õ÷ûêÑøî x×ÿú½±€ì1®Òÿþý|G´´¼Ôÿq; ÐÿWžú¿e6ju ŸÒ¼¡üè‡X3ô.‚^îéw<¤kñ9;ÎruÞÂ¥SË,A/x~zqQè¹|ÎÕIäþH<ά0júÁZ‹SA% ^zvY<9þ‘ÜêCR¤Ü’»úѳÑÕäûÄñ_L!¨2cOØ€9¶§[ó–“xɺ³ÀΦ‚ø¥®•BȰæËÉï‡ÁÿôÜ·jÉQä}¸&Öôâûó§!8¿`¥j hwÛe~B„Ä<¯_B¿…oÊsê÷®)5Ï Q=kÚºI*4Þú»†¿âåÚ-Yõ½ºvfnnáÞ »Ì1ÅnOØåd•ó‚“Zæ±î_°‹aâc68»%›­öüÿØ»ø(Šïª ¡HCïÜ]z{)w)$„ÐQBo"½)`¨6J öØ*X±rö†ÊÏöØPAQQ,ÿ û}»7;{»w—ðûý“Ï'ŸÙÝ™yoÊ›7¯Í\¿'ÉÙó[—¾G΢î]ó6sCËÿ´lö9ç,sÿä>ä÷ø´µ‘ד³Ÿãûo 'çÀ‚¿ouôèm'/ÀòÈÕ·»f—Ëï¾\0‹èéÚG¶>8›èç¹{.ñè«w^ð÷„OF½Ú&´GíÆžtí}¼ÿ­GáÖ_ $ºý¥Cûå=“<öÙ¯š=lh@Üÿè'4Zû<ÑîfÿtœNôä ø®!—P““òs:ùÝO¢îý“šœ3ÿÄUç§RãmOwwƒ?¨Ùè‚cß±“Îj¸öíÔçP£Ï?—˜”D/xááÐû£³†uŽzvß$:ë?GýÓ„ÎznÝ Ã'Ž¡Æ;ÝÏeͽšŽûuú´?—QÓ‡nRJ—½T¯õÚ>ä¼°Üäß>÷ßùZ´gÿ±w{§åíÛÈYøé¾û¾zœó¾ìqÏUžñ^¯÷º³=ùIk–?òñ›ž}¬Åñßî#çYïœ5ôO~â•ËZ>_LÎôŸŽþ»ãarÆuésî;ÉyvÙÛGÞ¼Ÿœm†í8VМmÇž1↳(i„rÎ+é¶Î—gþô%Ýôņ×þII—m½}è*JšÿEÝ>ÛRÒ¦3¯¸ò¥c”ôÔ ·%£¤Íqh6%Ýùwâ]ŸPÒú}þÑÏó}y³aÏÏþ’¶Ý_×£—%mJ|»ïÃm(éÚ·_Ùöä JºåþV×å¦f'ï±CMo+û#mÕa ÿÍÍ~¨O¡Gç¶œvÅ£ÔlúöÝCúkúˆŸöÙ)tõšÐWÖM¡çŽ]¸®àajúè¬]} 5¹·õ%7Üp?5)¹ãÝØŸ÷ëúòsÖ‘kÖ{š-\áI—ÏŸ~Ù4r]xetÇ×’kùÖ³Z|N®mÍ÷}õä0r]üôþW®ïN®üìµ7,ìJ®œnƒ>ÝRè)?mUÆwÉ5cèSûŠ—’kiÜmé{ö”+úôÅ3;’«àØÛé4‹\£º}òé»(îä¹Ôí÷Û[ó.~¸3Å·ê®UtÅŸÙ»QzYÅ}v庎çÎ¥øZ/ø~V7ŠoôÑ”û>y‘â¾Ü¿½Û¯×SܱøžÛæ'{ÊO*8aëIñíÞ¼hëß‹)îÄî˾òä>’±½UÅìþÆî{(îèÒml™Lg–_CµâGjxÑ¿¹<êæõ³œ¹-„θþ½Îß=^F†N¸àµÒ8jxhvÏÕQÃNî¯ÝëŽSƒz?Ä·êE G´âðûtæÇݶïª{ôаÏÚ^K ¼â­®éÔ Kƒÿ¼˜<ñÐÖð>Pƒ]ß=øÚw‘«óIà ¹Zåÿrwí?ÈÕýÊÏ[ç]C®¶OžwÐ6ž\íl—^¾ïr \;q×ú$rQÃÇóïüØS~â÷›FC®3WOëçŽ?uÝÓùì†Zu7¹Z¸¾Ç-¯“ëì©×öI:Ó“&?«q=O½Ë–íHlC1­Ëí})Æ–4죳VQŒýßwrSLÿNuG´ÿ‡bÂ6­˜ñÕJŠ>¼ùì7¿N¤g‹fÅí¡˜®ß¾qJ:ÅôsÛú§ß¢˜ö[];Ú5¥˜±Q9‹çµ§˜> ›[‡bÂï|.<$™bz ¿Âu^wOÚ÷³íK>¡æ¿•o ©ÝýñÁÏ=üsé¾V{ørú¾_zŒªC-F?ÙgÅñ†Ô|ÈÅ‹O[C-Ú|?®áÙnjѶùÆF^Eͼ~ÃÆ¼g¨ù†+ÃúmóÀ«}ó‰y÷v æk¶ ‰ó5_ðv|³N;¨ùœÇ~Jü¡65ßrF½RÊè_~aPgÊè´â¯†ÑI”ÑíµIk†¯ Œ3üüPö ÊèþDŸûn©O=_ÿÌ?)#ùÓOZ×ëây¿äÛµÙQ”Ñöé©¿þü5etíÛ뢕µøà }óÒK8{SêÎxœ2ºLtë‹ÙžüqÏ]ßç Où·6ì\Ð"ë(¿ÙqËÀ§†üHŽ?~\?Ì3YouÒ¢KVSd“’ÅI'²ÉqhÞò±‹zSd›üE©Ï¡È~ÍZ|÷2E†Îøä–¼‡Èñûïµo‰:ƒ"Ï9ãŠá!M(²ùößmµxà•½SûÓ5ž´ñÓùù ¡Œæ_½|åÂKÈõÏíÏÔ¯Óš\¿®âì™×QFhá¬Ù–’ëĉG;¾ÿ§g¼¯™˜:î#rýÒÿªc'zà<÷á{Ó=óð÷îÆÓzQÄQå÷ž"~¼¯á€ëìQöÌâ3¾\E¿Înч¥ñÇ}WµýöcŠøhËc[›º(â·IKv¬êAï?ýöí‹vRÄw]ÙõØŠ8± :iåq²õs—¤”©ñÓ÷?øÆMññ°&›ÿlJŸüÜwi»(âÏ3"ê¿z€š‡—û5¾¢æ].zµÛ°Ôl_¯kß¶”šŸ—uí{ou¤æSRï+s55{êçbêPó/Û?ÖõìyÔüá÷ö<±t 5Û½jìäØ[©EÛêFíèyümµ–|Þ‘š}ò¬}ö‹Ï{Þ‡_Þ¸öÃÔìÛOì~ÁCÿáE|ùe,+—Ÿ“)£èµ«›ðeLß;üá—wRƨón[³2–¼>eç˜ï)câ¾EÓÝEëv]Ôú[enØyÛÔ#”1·é…=Ï~†2†=vö§uÎñÔŸpîå³_ñÀ‹Ýžï»tùô¿?_@‹/¿¾çÙý=ð–Íx¾Þ¹Ôr¹|õõ¿s×¢G†}@ýosü0÷Æh@߯ç>qáëÔÿÁÒOëç¼CýO<úü‘âg¨ÿwW<ºö×h@½”& [N¢þ[SG%ùú¿úÒòçMÔÿ“k´és5õ¿ü‹oÿ’JýïpÝeËMýçz–^ß"êÿÜl*yû5:£üz†)Ó©~òÔ‰9_=Jõç„æ^¾ƒê%9¿nË-Tÿ±Ïf·~õWªsâû/êÕ;Fõ^ÙQzIÕÏz«É°~¿P½/<}ÆOtÆ[;‡ÍšEõ¿>ðЋßN úmŸ®×.¤=Õ{ªg«=Å7P½Ï_ü1ÿ»Ç¨ÞûW¥ÿ0¢ežÔSfýõCFl¤Ì… ÿñ^Ê ;1imóÅ”ÙjÏ—eéµ)³Û°Oº(³ã·}¼¯…§Ü²!÷¿öe¶Îü[£'(㯩îu£›Rf“¥‰1ûšPfN—_ñP?ÊìÙ«iì¬Ý”yö-ß7œ=—2› ^øõW¾>@=¶uücú®[¨ÇÒ;¿î¸ õlñLû#ÃëSK¿¼µ_î×Ôã¶Ý^»âêñÆ)Wþýõ¸éÕ?^û÷Mê±)¯Û+™‹©Ç–6ßÝûAêY÷ÉyI7´£Åÿ®oòÑ:ê±ñ©ºþý)õXÕàÙGßN=½s󜟡&'ã‘n Æ¯ýÿ°›šnü¹mAT5\ó|ísZ£&§þòc»tf÷²¶WKéÌož=XçÍs¨Ñ´g;³í…Ô¸Cqï•=n¥¦·¦¶9‘Бš¼¹ëê-¿v¡ÆÏÌ*ýüíÔ8îù£7yøB£=?ÖÒÍ#?^Wïç†9”yuùyØ_)óše³¯½.Ÿ2‡/úufò>ÊÜõö'Ί¤Ì9OüçØ„1”y~Ú¯NüH™OôyèÖ‡<ã?ýç—·ß2‚2~ææŽ!«(s²ã¡bçÕ”¹ã…G¿ue–|÷ø–È^”yÿÑ¥eÙ×Qæc]ö@öžü‚‡ãŸùšº¼j!uûaa“cÃo¦®×}r“{%u_ÝfÞÌ?¨ë•qé]¾ìM]oq-¼2|,u=A¯¹£.¤nÓgºù?ŸS×·> 1§”º^ôË!I‘Ô=dÁ[%-K¨Ûö—¼~[u½ußᯢ.¡®o lµsÏêúvt·´—÷$ÿ[~Mµ·SHìƒOütu+ª×fgı‰Û“O<ÿó—?5j³sHã—©Öî™mwmL>²uͼ;ê¶¡:W6ŸskÝtªÓöùcW¸mTïÒânéxÕË™6aõ§û©VûOÛ5>‘ê¶ÌIi¼»”j_ðŸ÷þyÞMuÞî¶â‰Ú+);¾üEÆQvæÌÛž»ceŸÙ᎑ùÊž7íPf— ”ÝèéKÏ_7’²[m?²j×LÊn·èËkZLÙá·ŽlüÙy”=é™§?zãe7¨_vîuÉ”=7uÂýePvÖâ²­“wSöÄ´ƒw7?DÙ“ßÑ*j eOYøáÀÛ©ýIùù#jŸøý’:¿†QÛ/ ¸ÿÎÃÔaýúØŒjsÍüõ»ÏÜBm¾ºïÖ7¿¥¶ûׯHlú µ»á©µQ ×QÛ‰o>Üü¦úÔ¶Ùàzß&SûËRÚ¾pÞ­Ô~süÖ¶ï½GmÃ>¼¬•ó|j›|Þý‡ÖlËGÉGƵKžøêžäßï8üàªoOþgt½Fß8FRÈó¯Ü|ÑOÿRÈÖNõ.ýâhò_Ñù…)G_¦G4œ–ç)—xOÓ¾¦'ÿûø”¯û«em)w—QÖk9e7щ²Ö¤Üzà妔õç´·[]šMY× ýëµ\ÊšñZŸõùË)kÚêÏc¦ÄQÖ­}l«;˜²žZñYZ*eåP·'¾~²l?ÚäA”u[ö›ï´Í¤¬‡.ËxiÊBÊzîPîM÷4ñ¼¿S{ÿBjÙ¬üüàËtvzÛ³Ï\ž÷ÖÕmèìõ½ÿ³¶ŒšužòÇ¥™wS‹»,*Rïo¥–í,ýü¾Ã9ëï‹Rö¯§f¿žSê˜1Z<]«ëCß´¤–‹Þy'ïÍ>Ô²Ë=ôH­Ô"vPÓ¾OeR‹—ùíòÅ9»ÿ)7›àÙõùõ®Ï÷îþmþµÏ¾tS™;ä«Z_~9ùøî?§tz¡ôù9»?1àõk—©÷àîþw]½-•…î>þå­óæÅì>vnÆ«/¼a÷ÏÉ .Lqïþã²î]•³û÷'2[¼ôêî?f¶ük@êÞÝÇ8íëÒtʺ±ü~Ñ=”õÀ]iŽÅ›)ëʽýW>ø¬g\ò³ÌœFYq;‡ÔM¼Ž²>Õý‹ŽÔþf•–ºÃ'¾KY×7ûw߈§(+©Ý‘‘žôš3O¬íß›Œ²Ü“^Ëï#†ŸGY›cÃ×l_JYwyiÆe>xÒn¶ƒÎºqGbѾ»©Ñú/î‘QFwïþ*³c5ZôÚO9B~Ø÷£ýnõw$¨qB»Fm]û©ÑÓ×.yßJg.LnÔ¿I&5žÿÌÊg\JCÞÌ:R²ŸÎê7÷ö¯‡Sã>s¯ûõ£Ôø=¸€vŸü±÷>ÙýÃÚÆKgÚ¶ûPì€ÌÁ¿•í~¿Îß!!aîÝe¶ç¡!»ËJîZú‰z?õîc›c6Ü=?d÷=õ¸8)t÷×õo}iTHÞîf՚ѻnÑ}xöG§í>Ðòò']ŸíØýÍs[»Îš;g÷·×tmºáeüüyùù²×)³©û¦Ì¹”±çÎÎ?^q”2³.ýúÜOóF´Z?²eÜ;7#ñ<õžhÊøþÒ¯Œ^C_µ¯¿Ã#,~}ök÷¥Œ¯—Øï Êøó¡3ËÞ¦ŒÏfŽ^—rˆ2Þu´î˜Þ”2'®ÿ5æbêX~=á W©Ã¹Ï?U´Ÿ:ÄÜsAQ µ¦Í3#–—P‡z÷Œ:X@ò'½Ú(®ˆ:íê4壼têÐjD«å_ ½w¿úÐhêÐ̱~zïêpCóãù¹©C×Ýç ýÇ“ï¾ç…ã×ýI®\3²ñ‰ÆÔááÇo¹ì¯]»Ÿœß%»¿Ù>öÓÛVmÛýe§YçìþnÎî¯ÖÎhúÕÓGv¿úØ ·¦„ºw¾"/§ÿ€ÌÝߌ¬=¨Î±i»¹÷ÈÍ—®ßýu§_sÉ;ûñš¼ÝÏç5žºí¶ÒÝß<¿rêÄiKv÷zç’ ïzæáò3W=&o÷ÜdïóøÝ”qò¾‚ýãí×¶‡2"C¯hVè‘ãÆNYå(H­¯J:²u)e4ûkÎ7xä´wnéó”c™G¹!¢ñ—)#¶AÛðÝ7SFíÿÞq|9e¤ŸÑ|Ux(eÐÛ)7ö¸2úÜðÀSS‰2bº/Û¸Ù#G¦%Íû¦Q*…QäØÎuÜŸ?žý"…ÝÚà£w×£°'º÷¹¼q? K[7é­7§SØ_£oN~z/…m¿ñ¦Ïß»ŽÂÈ{nñ#(¬}ÐŽƒ(¬É‹oœ;ò} {»ù;ß7ÛMaÏÅ.:÷¢| ËZðùkQ˜cîÆ§—PXxTó’õ‰îГûÂ;î¦Ëê®Ì=ìvŸõé'7¥»IŸ'Ö.¿ÛÝøÍ°ã¥s—¸›^52sýˆRw³5¯?0ý¹KÝÍÛÞáÜøU]whýýn|æ÷YG/½é¦÷¸Ïl½`R˹›l½þ•E‘yîÐ*v‡ö¹äúNp7½dá«“_õÈsåæ”YûÈ—?³yèº{Ëõ¿E™ÝOüVÿóÔñÞC‰ËïiL?~ñJ{çYw¼þÔw«ßÛ±ã²nîV­wo}¦ûw›u\÷Å™[Ü­ÞY¼ugÛ<ù+Ž?º'Ì}ö˜Ý,lú»ÕÖ ç9 Ü­>³`ùåž÷£!çÅïu·ZÐ{ÒmWßJ®¹åå·'×Ô^ê1árÿó'ïŒ"×Å%~óñ*rõ*t/˜³\i߆û-9>tkÃçë“ËÞdý²“\™ûGüÐÀE®¬ýo; <å¯ÌZ7mè,r-Hùä›aGÈ5ô¡ Îú›\tûß_èyÿúÄ‘=©ÇÉû̧RQM nû(›ºß¶;æÂµã¨GôZÌûz„†ÎK¼ãêÑÌ}{£Dêaëü\ÖÃWR„Z«þ^Ú†z4¸÷à<ÇËÔý’Û/¯òu3¢[ñæ|ê1qWûFï¦îϼ_÷Šã{<å~ê¶wL?êÑ®Ï즻zºØËÿú¹Ï8÷ý?_zÏí®7â‹øQÙÝÜõŸLy¹Öý¥îº¿?ðз„ºÏX0ëÈÚÃÝu†zêºûÝ æžóù÷¸ë³ê—OŸvŸñÓyÛ‡íjé®÷áˆ?ú:Ü}Fß>Û[ôõ|rÔ{óÿr×_³àó+ò·»ëwKýåêç¶‘óîrÖÅä¼yKÄ¥œ ç£Ë¯¼ÿìGÈùø-žü>šœëB»Þô\r®xóÞ›¾ªMÎ fµ;ðJ9WGõÖ÷)ä¼)õËÆ;›såYcßzd9w.¡C½ŽxΈ½{?#çýÎ÷lØá)woë¥Ç:“óž;C—žã >é'‡ˆzÿÔúOûuK¨÷ûuÛÄ÷º†zqï´–—Sï»F<¹ð©[¨÷m3:ß1÷\ê}¢Ïy…>I½_¼ò—¦[Pïáë¿Üiõ>£(çÝÚÏSï›ÛíüåØŸÔ§QÙÔci?So×Ü{:]>žzÿùªë&Rïkú<“qo‘»ÎÉŸ…?æ®ýeé¡AÛZºë¸øç‰yîZ˾üíŽVä®K­¶¿ÕÜ]÷Ìä>z½Ì];gÄs^Op×þa×Ò´Ç]ûÕsºîŸºÝ]÷¥ñÇÛ8Ç]kzÊý-ooç®sS_žÌ-s×Ó7úƒ­»Üµ_îºíÆá{ݵgúªÛK(#açïMÊpN+,ø©e z¶ÀÝÂÃWóÿüêÚÎN¿þüãV3ºRFÏ~¯?ì_Ê8û¼ÇøÛÃÇ{½âá&³(cðð°[ÿú‹2ú÷\´jù£ž÷»Þ?ö•GÏv~¹´ãƒý=ʵ>keäÅÿõÍŠÖ}Ýžx÷ ïQ¿låÞž~Ÿ›ðÇ”‘Ô÷­}ãÞ=”ú>ñïcë†SßðœÂEQÔ÷õ/w}sýëÔ÷º:}÷Cêûaäk[FäQ߅ÿ=zõý¼ÅYaWQßó{¿—÷/õK~ðhþO©ïº+;íz¡.õ]•¸³ÑÙÔ÷!û¥Ù#FºÛœüœbwëOî^ù|Ó~î67þúDû‹Ú¹[_’zëk’Ü­?êÿOæÙî6Û®½fú¾Bwë×?÷óIî6­¿¹¼¶=ÏÃw®oPt­ËÝffÊÀ÷^ˆs·^0åñÌ7¾t·™ÚcåU½;¸Û´mc/¾0ÏݦÁ†&7oöð‘×?í¶ùË(#¼|ßÅ3¦îj´Ÿ22/ùsë&ʘT@Ë÷xö¯^Y—÷ú…2p·îÜrß]£3Ý­Ó¹´ñ7‘sšò»ÒÎU=ßë•Ý—œ ‹vuLÎ+Ö™½úUrŽº`ýµ±·’sÒ»oÝòM(9û.ß4ò¶Mä¼¼V£mSÏ"ç%™ŽÇWyÞ[ /þ‡"z]°þîû(¢ãuSÎ=‘IýŒ|¹þ‹žòãûì\ŠòB³&.Š8«]‡›îYB]-÷]øEÔmzÅ#­.¡ûQþXFîJ¿ùý×)ü/÷m[>|"êýþuÞþ îº'Ýû—ºë~2øµ›ëºë}žòmÊKŸ¸ë}߈œ½<ïï&¦´ˆq×?zs›½ëëºë¾Ø¦áe×v׿ááö~Iw×{fÝÎÑÿyÚ]ÿ¶7ß-w×ýõ±á_®Ês×ûø§1×ß}¥»^óÄû¾MüÚ]ïÖÖ·]?çwýFû$œëᛇ{óßNyo´M ç_7Ð×ÿúäÛz‰žqú¼ù oMÎw›üµx 9wìÛ9Å3'BÚQßÃÏûü%Û _’«Nƒ×óÿmLΖ};¦9ÿÜ4¢pe9¿OI9õÛä<2zÞÚßÿnÏàœ­‘í å> ÛÛ/{ð½ùd»»äö= w’í±”ß¿|í²mxhÙç²=›ÿö€©Ñd»9Ëùrʃd{îŠèéÏÞH¶kÙ–øÚçd›õá5éCï Û5õµ(Ê"Û£Ö¹ó‚éž÷ž{ŸðÙ¶ŽÔÈy¯;ôÐÛsrßÍt7ë¾â®OÃ)cz¹]å:ʸ¬Ý×ozäûŒÉ¬»}ºG^Öý«×FQƘ‡l×?ÚŽ2&\2`Aé·ù79»å9E”±áúW¯ñÈÝ+¼?ò~O½òß|ôu¼•|»:Ÿ2ÖMøÕêÚ”qѶögÍÌ¥Œåû¯ ûÛƒoÉeçF}Lö7•û íïEÎ+çÏçSäÚú—½³wE¶{øæC£ŽPdؾ>û ’ã«çW?½‰"çŒhtå“‹)rÅËŽ»ŸD‘Û¦Núô¶Èq¸N»éÏSä…^ûõÕòqÚ×{Þ7vØÙ7‘ãƒ)‰¯%!ÇÁËžy¬Y"9¾ß6æh®»ÅåöÉ?Ý- §¾|hùFw«CožAo p·:cÿÒ¡îV?}—rìÞîV3Ÿ¿ªpÙ'î–ËÞzüœ¸Ï~¨ÑçW]ߨÝ*ûÃs¿úwë°!S¦e‡º[Þ¶à‘Ò>î–#ï}õ#Ý­Îþ=îéŸ3Ý­ ö_¶·®»UæŽCm9k—Ÿ[|œQ¥-ž«÷79Ïú+ÜÑt«çý2ÇŽ•u)ýßñ}wO19¿ì¸´íälÐù÷‹{AÎ~÷ä}wu$9»½s|À‚áùoèå»M"g³†.íêáãßlÿãü#ä +xê×˦³ÇÕ­YVHÎÖo$oêúE¯*ÿ¹Ô}q§¸WS–Pt—Á¯–LþŽ¢;^uKß‘OQtíüÍ£gQt䔩ëÏÙAÑ­Y»,ñ EgN~ý‹Ä+)ºNÚœßk×¥è%ÝÊž½ÿaŠú=ä™[?§è鋜K!EŸùë7½6ÝNQüõà/k(ºeûü¾Ç2Ýgž¼Þl‡»Ñw»üüÚ^wÓ?øùÆŸvŸÕç±Ôí.u‡vt^[ë…0w£e¶rú¹6›ÕdÃÝ(³`ÒÒÝîFýñÅñ Ü-Ûv{uÌÑîÆ‹ J»s»»ñ%»jò|©»Ñ¬Có†Œó”O´µ›ùˆû̯§Lîº7\“ÊïûjI®Û&Œ}§Õ4ݾüè¹]Î$ךnc"æ_G®±¿'ÖÚÛÈC×Öjsßr-|¬÷~:F®ËîÍ8wìúM‹ )Û@-®k´â ä*³«|Üuùª¾kÉ•rì¨Þ!×Wÿ^˜~/¹žÑ³iÓ{(æ %Þ,fª¡ß'ÝN1½ÞŸðT$Åt¸¢wIÉçS'ïºåµSÌÜ|Òä?Óü—Ï;ÔÚO1;)š})Åt~ú‰}ISÔ{?úfé"ŠiXçŒuïyÊ-X—ú×ím)¦û“_þz¦§ÜWî;&¼O1m¿ù¨ß;;ÝíOnûcÝíûæ4 µ`/Å9•sm±OÌxhÛÈy{_úƒžXI±E¹;ÆGÜA±3b¯»ø{Š=°}dƒ•'<ùÉ­ºö|Šý»Y¯„í‘»üʰ· ¢˜Sý©ÁË»ý®ß S(öÏ]õ†­Î¢Ø-Ï ˜|%ÅÞ¸È}ó )öêW&…þ3ÐÝñ¹ò°Í‡Üa”ôë”&Iî°Ãa?ÿI{wØ‚ƒÑç5kæîçš»»#Ï}Î'¯_Ûýýî°œN+®nz‡;¬àzWçRÝaW$ÕyëX 9Ó•ûëœ{š¼t¨èLrn}gÿñÃ#ÉyÕƒÍxôgî£ã~»ÌEÎí·J:÷Jr¾°2äª^øôÉ¡Ñ#ÈùZ§)ï=Qê‘[ÎØ;s59GÌ ]۽ģ®M½§äKr¾üëÀ—›ò¤Ã/ÝþÇW¹cî¬EW\G‰ÃËãc3)~CȶÇ?ÜAñWžp}åtŠŸ1öüÝS)Þ5éû‡»ŸâŸ=4qÀÚŠ|øëûí#(þž¶CîN|‹âç_7ãX!Å_òãw–ÞàyûïW_]AñoÅþ9¶³îÚUÇK¦†PüÊ )mj½NñØZ8ú »u¹õª°¾»Å„{³Îz|½»eYÿù)%.wKº;ëe¸[­i\øH¿Ñîæ£nüîÓ»›ßûöÑH*p7;\rÕúF»[F½ûÒ¶·º;\~×—^ÕËÝ"÷·­»þs“»ùÒoÙýåvwËú/ˆßµÍÝâ«ñïëî–·…ŸŸ’x˜\m?î²÷ü6uïô[¯Xã‘—ßoÑ0ý[rÒá'#^žL韹ñêmÉyÞõ;Óê{ôìÕwu8Ç£O/h¹öⱞqÎz°iÎcvr]8à·!ÿþé©7|öò¯k‘³pÉ÷‡êÍòÌÓSß}ÖÉSX“9ƒfæsø‹ÿºe%ÕS~‡(1Ýñâ¶»(1výì:H Ç^}0þ†”Øûņ?uíE‰Ó£_}ÞƒW?r×ð§(q™ÿ~Ÿ>ž×=ønû©…”°-ñÃ)S(á§Iß´^±…3w6:|ìNJܶïàÂÔBJ¼ùðÈ—çQâ]sï];t€»óÉß+ÙÝ¢VHÉ; nuŸÝøÃ: ¯¹Ü}vi~¯q}¿,ßßêvx²±»ÅåŽÁ펎t·\’0ñÄMýÜ-[õÿúŸÕÇÜgŸ{ÑŠôuÝÜa×_~m¿Užý³õ+7Ÿãn±õ­ºÇ{§ºÏžðHí¯ýé>;Ö1å ëewË×Ç~ÍV®Ç•;D=ëý‘÷½í‘ßš>ÿÇßN$×_ãÞùk»‡ÜÖñÝ=ßÿ³jÍŸÏRFDâÄC›_¥ŒÎEÝ>h]Ÿ\_Üö{«î÷PfdáûÛÖÝC®Ë'Þð¼'¿ÅþÝG[?I®ozÎèá×?fµZÝîJr}Ù§Í÷½¢ˆú+ñíÉ'œóá';(ñî¶+"¤äðïÂ~Û‡’ÆùH›ûŠ(¹ÇÕ‘õ2gQò=ÍÂcBâ(¹w‹7^r·¡äk'Üžê¡×¶´iÌ0¢¬Ûÿs~a%÷|ºpïß;)ye«gØOÉ[›=¹xmJ¾2«÷€AóÝNúŸu‡5tÝYç&wç?:„®n|ÈöècŽi‹¸»äþvѤÂ~î°ÖǺmœî>g셣וƹÃêRÊM“ïr‡u½"ºN¯kÝ=ïõͦë#Üm¿èмÇ%xýfè‘2ɶúŠ=]~ñÌCÌÐwÞ±ÃÖáΔŸ®ÞC™ˆ't=>{ðŽ•r½tßÖÛíÙÏÞÿ{ÇäQä|ëРï?ÝO®Y_ç^ÝŽ\^øZíÏÈ5zKêk«ï"WÃMïonã‘§/¸gŠGn»gg½Zwì$×¶û¾}ä‚%žõrÇþ‡Æ6#W³Ÿé˜I®ÐI³[}ñ ¥ .×âˆfÿö潺M]ôÒ ·u!šqù¤õÔîñɿܱrü“DóÿÜ08cѰßGæ86-}¾Û¹‰=(¹õaç\¼žRìßýõ{Oýù»î™ý`ÑycÎ|íþ^D‹gu¼cYÑ¥»ìhîr‡¼†ù9wÛ¿®wuûÛ3=×=ÓuÕ8wÛ÷î(lP½_¦m¯'/ÙzüVwëGIë³ÝmÝWðÈ\<·`ö|ÐÉÝcòü¼3pwmöì{îu· {ú“1»Îw·‰}%¯ö“îÖ76›ÿYêwësãÞZ]ö"e×+wlxÖ³}Ýð¹7üCÎ2×E&{ôì¦K>ø7»‹Úßôïo¿èÌi>rhòó^äIÃ>hvïzJ¿=yý-N¼²þÉÇ›$ѯì^ôÙù-ö§äEWRúöMGïxœÒï¯×䊻)ýñ¼¢zÍ6†„Ô­í\+¤nHCOZgÒôYžä,Ïùç¦!!õâtExŠ\0~Öäùžç(z²¬’Ƥˆ SmãÆ©¯¶™Ó/¡å.Š™9^˘:{†÷ë¼¥QÞ¯ó'Íò~]9qÜx/PSyçÎ Ÿàõj»`â$ïÜ)±BáY3¼KçÍ÷‚l›2s©ð:k²ç5$äÝ`Ô›xþøùó1µy—,½õg_0oú¥fí&!!íº\|‘ÑL©­ç¯²àù7´šð†UÞðjÂKÕ„7¯šðUÞ9Õ„·¸šð–TÞÒj»£šðº« ïÞjÂ[V!¼ä,ª>Í?R1¼®àð.®ž†7Èþ.­ÞŒ`ûVA¼Áö7¼bx3ƒí/Uo°ýͫެ`û[TA¼ÁöwNÅðfÛßàÚ«á ¶¿%Ã;(Øþ–Vo°ýÝQ1¼9Áö×]A¼ÁöwoÅðæÛß² â ¶¿G*†wpý]\= oý]Z1¼C‚íoXñÛßðŠáÍ ¶¿TA¼ÁÕ§…yÄ[$Þ¢€êQƒ“ÅCÔ4Ï$Þ9B=†ç³|(ðqš/¶Ã¼â81<Ÿå[§ù$´Ã¼%"Þ–xÛ§ùÅB;üÇ[*âmc·ðqšïÚás|0táo ¼a¨ÇiØŸãÃømŒí]&À“êsù.º´€Äv„ ½b¯Ð¿ñ"I¸Ïî#í¦K ŠÅz¼¾®Ø/¶‡ñ;oð’Ïá#í¡K Üb½PÆ[&¶‡ñG2Þ#À›'‹ô‘öÒ¥Cuíày¼â€ØÆ…tÒ%E"¼(i]:”ÄzÒºt¨[¬†t}ˆØÆËx÷D„ë# ×¥…ºvð<®o ¶‡ñÇ1^ÞR^œ4B—’Xçq}¨ØÆÏxó€w‡/ÞGjÓ¥…Åb=žÇõmÄö0þÆ[¼n^‚TÏG uõxׇ‰íaü‰Œwðîá%úHõ|d˜®<ë{‰íaüIŒ·xËDxI>R=Fb=žÇõáb{2ã-Þ#"¼d©ž +ëñ<®ÛÃø‰ñ–*éR<ò‘êùÈ0·X/œñ’ØÆOhç¢À*Âã|}ªç#Ãuíày\Ÿ)¶‡ñ§pÑÞ¥a"¼©ž '±Ïãú<±=Œ?…û»xÃExœ¯Oõ|dx±XçqýH±=Œ?UIUyb)‰ðRÓ€åäØàêU4å~T5^Ëv-Í«žñXZä^iŸîVR¦ ^§ë‹ÄrL_©ÅJº¨LÀ§–ã|}ªß'FèÚÁëtý4±Ó{ÒEGD¼ º|}ªß'FŸ×éú9b94´qˆˆ7Q—¯OõûĈb>¯ÓõKÄr<éH‡*éÒ9b¹t©~Ÿáëñ<®/Ëñx¤sÀWWŽóõ)…ˆéH];x×_*–ãñpr÷D,çô‘ê÷‰‘$Öãy\_"–ãñprQoi©XÎé#Õï#uíày\¿M,Çãáâþæï±œËGªß'FºÅz<ëKÅrÄp¸¿EÀë˹|¤úýb”®=<ëï>™J|'ƒû;x÷Šð2ŒÓÊç“e§®ÜßbS<œ¯O+¿¿Gª¤¿Þ Cª oh5á «&¼á~á•öãQ„÷%e~¸~‡øùüÅ´ïr}]¾>ÕïÇ£tí`~¸~—øùüÅ´¸xóDxœ¯Oõûñ(·X¯î;ó³,îo)ð‰ð8_Ÿê÷ãÑ!b=Ïõ¯Šßy¼³¸¿;€wŽóõ©~?Mb=Ïõ{Åï©(ŸÍýu¯çëSý~Ø ¶W•ÿ‡pK”ô"]¹!ºrœ2>îßyÜO¤,lh`8úxº(T„;ÄGªêix?D¸,l5‡<îo)ú&ÂÍó‘2îßy:¸,lh#–ãq@<€êW¸(\„ËùúTÕÓ¸¿n.ËÂÄr<ˆPý éàr¾>e8Ü¿qÜO¤,'lè%–ãq@<€êW¸(O„ËùúT•kQn‰py¿Þ.–ãqàxö+\T$ÂÍ÷‘2îß8\ÞG6ĈåxòÑNö+\4G„ËùúT•k¹¿n.ï#H,ÇãÀñìW¸H×Î×§ ‡ûWÄýDÊûɆL±Ç°_á¢.çëSU®E¹¢0.ï'òÄr<À~…‹JE¸>R†Ãý+".ï'FŠåx8€ý íár¾>UåKîo‘—÷“ Eb9‡¼³_á"·—óõ)Ãáþéàò>²ašXŽÇã`g§‹öŠp9_—-ÿ‡Wa½>È8¼ ã 2¯âx«©¿yÕÔß ãð*Ž·¸šðº+„WÓ[”öSQ©’2_`ùoñï£Ï?]T†rº|}Êp˜?)ýPù#Ë–ˆåò p²ÿæ¢#"Ü¡dœªú ÷íeþ˜Çý-Ëñ>Êñ<ì¿YÆðBÄ|}Êp¸㹟HYþÛp©XŽ÷Ñ¡HÙ³,T„;Ômœªú Ê^î/Ò %b9ÞG9ž‡ý7ËÂD¸…>R†ÃýþåqѾ ÛÄr¼r<ûo–…‹p É8Uõîoð!ŸévC©X®€á"eÿÍ2ÜÂbãTOî/¿#Íœ w‹åx?åxöß,ËáºS†Ãý~ñø2ÝnØ!–ãuÈñ<ðßв"î0©ª·þxƇ|¦Û »Är¼9ž~Z6G„;ÌGªê-€?íÎG>èVÏÕuˆx_ü[÷ѧêx¢¸ŸÈgºÝ +7ïÏÿ -ÓÁæ#UÇð'„áù€³áU±¯CŽçÿ†–•ˆp‡ûH÷oÞU9ø7ìËñ:äxøohY©w¸TÕ[Bð!ŸévÃ~±¯CŽçÿ†–íá÷‘ªã øð½)Óí†2±¯CŽ÷`ÿÍ2·w¸TOÔ›PŠwä3Ýn8 –ãuÈñì¿Y¶W„;ÂGªê-€?ñ!(Þ7Ëñ:äxöß,+áŽð‘2îßÔãñeºÝp\,Çëã=سL×¾>Ru<"÷ùL·CÄr¼9Þƒý7ËCD¸#ŒSKù t[ér¡:è×Ä0¼£}L·ˆåxýsœ û–‡Šã2ÒGªÊ[ÅÀ‹wžW¦Û¡b9^ÿg¿-çvëòõ©*o¡_‹€ùL·Ûˆåxýsœ ìì´<\„;ÒGÊp¸ñùÓíÆ0±¯Ž3–stùúT•·P~b)Þ‘Ït»±—XŽ×?Ç™ÀÎNËóD¸£|¤ª¼…~Md|Ü/¤ÃÅr¼þÙ?;;-/áŽò‘ªòðMD}žW¦Ÿ1b9^ÿ쇖ÏáŽò‘ªã‰~MBÊóÊô³‘ÄrÌØ?;;-×Áå#Uå-À†wä3ýlÌËñ:dÿ8ÛÙ——ˆpGûHUy 휄wžW¦Ÿyb9^‡ìg;ûòRîh©*o¡_“Š€ùL?GŠåx²œíìËwˆpGûHÕñD¿&á;Ï+ÓÏÆ"±¯Cö³}¹[„;ÚGªÊ[¨7©ïÈgúÙ8M,Çëýãlg_¾W„;ÆGªÊ[è×$ÆÇýBºqŽXŽ×!üãª}y™wŒT•·€oêñ¼2ýl\"–ãuÿ¸jg_~D„;ÆGªŽ'ú5)Ï+ÓÏÆb±¯CøÇU;ûŠî©*o¡_“ÃðŽ|¦Ÿ—ŠåxÂ?®ÚÙW„ŠpÇúHUy íŒwžW¦Ÿ%b9^‡ð«vöÜn]¾>Uå-ôkrð"Ÿégã6±¯CøÇU;ûŠpîX©:žè×d|çyeúÙX*–ãuÿ¸jg_ÁýÑåëSUîAùÉ ùL?ïËñ:„\µ³¯Èážë#Uåôk2ãã~!ݸC,ÇëþqÕN·¢H„{®T•{|>åλÄqàuÈþq¶Ó­˜#Â=×8•àOF»™ž@·§ÜÎ:%xÛUixTú ð0=ù¬Ç|ç\±­PÚ«Â=×GªÊy$Ö­kÇF]yæ;ç‰å´v‹ùúÔïqÙøªaûNÙ<€/U¹=|©Êñ‚/U=^:%x5ý¡XI§”*)ïsºx;µïgç·K…{žTÕÜÀ‹”÷9]¼ŸãLàWÐðâûy>RÆÇüJÞñ]o§õ—á ü z¾£æëÒ ÏÓ8ãvéóõiÅñ’^>1­8Þb ¼ÅÀ'¦Çë¶Àë>1­0Þ¢s¼È×§Çf7 øÄ´âxÉ/Ÿ˜Vo‘Þ"àÓ¥ªþöLÅ;Ë©Ì7îURæC,sœ ü‚*>†ËùúTÕÿñ>5 xñùÒFØù™±Ì~êeáJº¢D„ËùúTÕÿo*ʳœÊýÚX†rÀÇr0û©Ù/¸B—óõ)ããqZ„w]¿6ûÁò0û©Ù/¸b‡—óõ©ªÿÞTî§®_ˆý`¹ýÔì\¡ëÇx©ªÿÞÔRàÕõkãq±,²Ÿšý‚+öŠp9_Ÿªú?àMEÊôÄýÚÄíDÊû÷x¤ìŸ[Q&ÂOÆ)ããqŠzLOܯM Ä~ðþÍ~jöÏ­8"Âå|}ªêÿ€7 ïLOܯM¡b?xg?5ûç.fx!b¾>Uõ¼O ^]¿6µûÁû8û©Ù?wq¨—óõ©ªÿÞ4”gzâ~m ûÁû8û©Ù?w1—+óõ)ããqV„w]¿6õûÁû8û©Ù?wq¸—óõ©ªÿÞ4î§®_›òyg?5ûç.&ÿÞ´RàÕõkSŒØ"†¼G€7O„ËùúTÕÿoR¦'î×&]?xg?5ûç..ár¾>e|<®ÓÊð®ëצL±¼³ŸšýdÏár¾>UõaÀ™Žw¦'îצ<±¼OÀ;ûÉ..ár¾>Uõ¼OG}¦'îצ‘b?xÿf?5ûÉ..ár¾>UõÀ›ŽòLOܯMEb?xÿf?5ûÉ.ÖÁå|}ÊøtúƒJOܯMÓÄ~ðþÍ~jö“]¼C„ËùºT’æ~?Õ)M/®¼šžFJ:½TI‹ðçqÓ¡=ª¼Â~yö ^ì¼1_ŸªzZ1ð¢ž*ßã}ü ê¾"¶cùàÝ+À=åãÆ~Á‹Ëü§é‡è×ô2ôãÀã¹ åÔý>L×ßà=xŧ¤¿,'UTUéhRæ,wn‚?E•3Ïñì,F>Ãå|}Êø˜Žfð÷bÀÇû¦À#|G>Ç?°?²¸—óõ©J·xŸÁßÑþñxߊ*g ŸãØY*Âå|}ªÒÞgðwÀáñÜ<<~,'qüû#‹Ûˆp9_Ÿªz)Þgð÷2ÀÇû&øS”âšœÄñì,ár¾>UõR¼Ï@ªê3xß´å—変è7û#‹{‰p9_Ÿªz)Þg Uõ¼o‚?E•3Ïñì,ár¾>UõR¼Ï@:ðy<7q¹"àE>Ç?°?²8F„ËùúTG¼ÏDÊôÄã¹ v~UÎ@>Ç?°?²˜D¸œ¯OÕyÄûLþÎðñ¾i/à•â;ò9þý‘Å™"\Î×§ê<â}&gøxßû†*g ŸãØYœ'Âå|}Êøx\gòw†÷MeÀ‹”å$Ž`dñH.çëSU/ÅûLþÎðñ¾ ö ?–—8þý‘Å ¯HÌ×§ª^Š÷™HU} \˜’²ÜÀñì,ž&Âå|}ªê¥xŸ‰TÕgð¾ öñ¼ÈçøöÏÏár¾>UõR¼ÏDªê3x/AÿÔýùÿÀö²â%"\Î×§ê<âý|¤LO<ž%uQýâ}…ãØ^V\,Âå|}ªÎ#ÞÏçï ï%ØWÕýùÿÀö²âKE¸œ¯OÕyÄûùüá㽤1ðºñùÿÀö²â.çëSuñ~>gøx/ Þ2|G>Ç?°½¬x›—óõ©ª—âý|þÎðñ^ÒßCðùÿÀö²âR.çëR¿å¿’6•¯4¹µ¤C5á «&¼Ýª/ó—*ï'øKÕã¥jÂ[TMx‹O ^ÍžUª¤ç#Å>$—SòYå¸)ØÙ%¸œ¯OU{ÞÏGŠ}H[GÐT¹ø9~éb±*\Î×§ª= ïç#Å>¤áí‡rEÀ ü¿;»†×-æëÒ ÏÓ”0S8œ¯O+Ž—Láp¾>­8Þ" ¼EÀ§KÕ}6DIg!(£’p”/VR–û§àþ m~ËÄ|]t?'U¬~¥óƒ•¡ÕÒZéŸ\¢Ù+ÔtÒ‰â8R‰rQ°¦"åø%ø$¸SJSÕžEÀ‹rª†z¼ª"åø%ø4¼ab¾>UíYEºznÞà-^¤¿Ä~£•º~L)3NU{V1úËïe:¼Ü¾%e=‡ãØo´²—wjˆqªÚ³JïØo4¼é(‡þ°žÃñì7Z.Âfœªö,7ðâû†v UDÊñì7Z#ÂJÆ)ãcùÞ±ßhxsP®x‘rüûVêàN-2Nïã³ø½H‡7åÑ/Ös8þýF+y\ÊÄ|]0_Э¯*ãGÝ•‚W³ß…)éü.Ž•(Æ$=ã=ØO¶2õCÄ|}ªÚïxù½T‡w¤å3Ž÷`¿ÑJ.&æëSÕ~W¼üîÖá+ÂcùŒã=Øo´²H„;µÌ0­ðàE¾>Uí•ÅJz¿‹í§þNJÊr)Ç{ã}å4.çëÒÊß÷çøW³“–¢¿x×é½T2IìËÃgÂ~£•°×1\Î×§ªÔ ¼xWíkx/áñ<–‡9΄ýF+uýà|}ªÚIË€ïª} ï%ç‹ðXæ8ö­¼T„Ëùú”ññ>~¿.¯Ó’9"<–‡9΄ýF+KD¸œ¯OU;)êÍæwÀeº-Y ÂcùŒãLØo´r›—óõ©:¼ü¸L?%KDx,Ÿqœ ûV–Šp9_ŸªóX¼ü¸L?%ËDx,Ÿqœ ûVÞ-Âå|}ªÎc1ðò;à2ý”‹ðX>ã8ö­Ü!Âå|}ªÚIK爵Œ÷’5"<–Ïï¡úVîár¾>Uí¤nàÅ»ª'ã½äRËgˆ÷PýF+Ý"\Î×§ª½£ xñ®êÉx/Y/ÂcùŒã=Øo´òU.çëSuC€—ß—駤D„ÇrÇ{°ßhå^.çëSuÔt¿.ÓOÉ•"<–W8î‚ýF+÷‹p9_ŸªóHÀŠwÀeú)Ù&Âcy…ãØo´R—óõ©:EÀËí\¦Ÿ’Dx,·püûVár¾>Uç±xÃñ¸L?%¥"<–[8þýF+ˆp9_ŸªöÀƒïªþ†ü’ÛEx,¯püûVár¾>Uõp7ðæà2ý”Ü-Âc¹…ãØo´*D„ËùúTÕÃË€íQõ7ä—lá±ÜÀñì7ZÕ@„ËùúTG´sμ3~ä—ìá±ÜÀñì7Z*Âå|}ªÎcðÏ+ÓOÉ#"<–8þ¡ó°ª—óõ©:¼%x\¦Ÿ’]"<–8þ¡xð2¼01_ŸªóX¼ÀÇóÊôSò´åŽ(F»Võár¾>Uç±xÑnžW¦Ÿ·åŽ(Fþªp.çëSUG?çp?—é§äEË ÿP¬ìCª¼Íp9_Ÿªz)ðÍÙ |€ËôSòªØN–8þ¡x¯o©˜¯OU½´ x‘ªú òKöˆíd¹ãŠ÷ëðºÅ|}ªÎcðÁ;à2ý”ìÛÉrÇ?—éð–‰ùúTÇ0±Ï+ÓOÉ{b;Ynàø‡âºú!b¾>Uç‘tõ—é§d¿ÐNµÇ?ÑÕG=Î×§ê<éêa<˜~J>Ú©áüâãºú¨ÇùúTÇb]=ŒÓOI™ÐN /à¯ÔÃå|}ªê‡¥b=U¯@~É×B;5¼€¿²/êq¾>UõC·/ƃé§ä€ÐN /àëü *\Î×§ª~X¦Ã‹ñ`¹³ä°ÐN /àëü *\Î×§ê<†èðblg_u·—óõ©:ÅÀ»ï€Ërçf];Yn`¿ÏJ¤«¸~‘˜¯OUýýœËý\–;7×á±ÜÀþ¶³¯Ú%Âå|}ªê‡À7w/ð.ÓÏæ"<–ØÿÂvçUn.çëSU?,^¤ª^üÍEx,7°ÿ…íΫ^ár¾>Uç1xàp™~6‡ŠðXn`ÿ ÛWíár¾>Uç1LIçñ;à2ýln)Âc¹ý/l‡]µ_„ËùúTG^ô‹ç•égsË ì€–Véàr¾>Uç±x¹€Ëô³¹ƒåöG°vÕ.çëSu‹7ï€Ëô³™ËË ì`;ìª#"\Î×§ª~X ¼ø®êÈßÜM„ÇrÛçٻ긗óõ©ªº7ø—égs/Ë l'g;ìê.çëSU?,^´GÕ+¿¹Ÿå¶“³vu.çëSuÑÎysðÎø‘¿9\„ÇrÛÉÙ»:T„ËùúTÇ0à<žW¦ŸÍË l'g;ìê6"\ÎGªÊ ê<ð–àp™~6LjðXn`;9ÛaW3¼01©†øx\çÏ+ÓÏæ±Ë l'‡V‚ËùHµ|àøjß—ég3‰ù,7°vX .çÏëퟚV)pÇ[9íoQ5á-®^Mÿ/àðºUß7#n„×3Ë ìa;ûj^oÅbþlq|4ýß­Ã<¨¿rg¹ý lg_MB?Ô|¤•6ÞðƒXå[• ¯Ûžê'±(8Þ2 ¼eÀ+–Óì,ºïà]!>‡ù&ËgsB””ý«A —óõ©ÊCtx‹txóPNù®ÊgìaÆê<.çëSÕΦ¤óvà½i©’n.¿³|Æ~ög¬)Âfœªë…€×-âãýnóHñ;ËgìaÆê".çëSÕ΂òóöŠøx¿Ûc?û3VëúÁùúT?óCE|¬'o>_üÎòûAØŸ±úR.çëSý<Îç~ëÉ›çˆßY^c?û3V—ˆp9_Ÿêçq~¸ˆ÷»Í Äï,¯±„ý«·‰p9_Ÿêçq>‰øx¿Û¼DüÎòûAØŸ±Z—óõ©~çç‰ø˜o^&~çýœý «°ß¯¾[„ËùúT?óùø˜o.¿ó~Î~UÀ³šûS$æëSý<Ο#âc>¼yø÷söƒ¬Â>´z——óõ©nÕýGÕÏÑÍ— íP˱dUðºE¸œ¯Ouó¨á>æÃ›× íö÷UØ7V¿jصÜÜC|^àc>¼¹Dh‡Oùbõ^óü¹¡€â/ð1Þ|¥)< ï~Ór47 pÃ|à>ða¿å­ÕeþµÏ×|©ú¹p4¼ü*ïk¾T¾¯Ó—­ñ ¨¼o94¬Ràø¢_úKö÷¸_å™~|õS¯OYÂSØšxÝ>ðð‡o¼ ü*ï‹^5ýQ«þÓšPÿðêí; Ä~êõ)«þÓš6¦ù¾è•ä ý”ô)+½sM˜i¾~5¼EB?U=jóÓ†ý—ñöò/ã)VÒs„~ªzÔf·aÿe¼á(Wd^NÇRà-ûÉzÔæuß÷Â¥51B?|ã>×%b?YÚüªî»ØoÕO¶†Ä~°©†øx\”Šýd=jóÝwÀcÿ ûÉÖdŠýà|}ªÎ#ÞìûÉzÔæ½âw–ØÿÂ~²5y"\Î×§ŒÇo[ì'ëQ›ß¿³ÜÀþö“­)Âå|}ªÎÞp¿ÐnÖ£6￳ÜÀþö“­)ár¾>Uç ï ÊÄ~²µùñû\†ƒþ³ŸlÍ4.çëSuñ¾àˆØOÖ£6—‰ßç2ôŸýdk¸^¸˜¯OÕyÄû±Ÿ¬GmþZü>—á ÿì'[³D„ËùúTG¼/ ûÉzÔæâ÷¹ ýc?Ùnož˜¯OÕyÄûÂ0±Ÿ¬Gm>,~ŸËp€‡ýdk.ár¾>Uçï ÃÅ~²µùˆøã-ØÿÂ~²5%"\Î×§ê<â}!‰ýd=jó1ñ;Ç[°ÿ…ýdk¶‰p9_Ÿªóˆ÷…yb?™n>.~çx ¶ï±Ÿl.çëSuñ¾°Hì'óÃÍé¾3ôŸýdkîár¾>Uçï çˆýd~¸%D÷á ÿì'[ÃðvˆùúTG¼/,ûÉüpK]Ýw†ƒþ¯†]eÍ..çëSuñ¾°Dì'óÃ- tßú¿åÖèúÁùúTÕÿñ¾°Tìç\ÞÆºï(Ïö=ö£¬aù LÌ×§ê|)ïª<Àýd~¸E×Þ¿Ù¾Ç~”5{E¸œ¯OÕù Õáæ‡[Z ýW˱}íûkö‹p9_Ÿªó¦Ã‹~2?ÜÒF迆ý_­ûÎp9_—êÇU{/Þ­¾Ÿê”û_Õx­õA?õ_ÝzÑ÷KÝw¶tßy²•ý(kCP.LÌ×§ºõ¢á|Þw¶„‰ïêzÌÞ"àeþ.æëÓ¹Œ¿H‡ðyßÙÒM|W×#ð±em¨—óõ©~½,âz€ÏûΖ^⻺Qý(kÅõ¦æëSæ <®‹ÂDø¼ïlé'¾«ëõز–ë‰ùúT¥Ÿà áó¾³%\|Wéõز–ÇeŽ˜¯OUú)^áó¾³Å!¾«t‚zìGYËí+óõ©J?;€7O„ÏûΖñ]¥Ôc?ÊZ.W"æëS•~ÜÀ[$Âç}gK‚ø®Ò ê±e-‰p9_Ÿªô³xçˆðYoÜBâ»J'¨Ç~”µ™"\Î×§*ý”o±ŸõÆ-éâ»J'¨Ç~”µy"\Î×§*ýÞ>ë[2Åw•NPý(kGŠp9_ŸªrRð–ŠðYoÜ’#¾3},@=ö£¬-ár¾>Ué'xwˆðYoÜ’'¾Ïwê­ÆûÚi"\Î×§*ý„¯[„Ïzã–Bñécê±eí.çëS•~Âw¯ŸõÆ-#Åw¦¨? ­]"Âå|}ªÒo™^1ðŽß™>ØŽ ? ­-ár¾>Ué'xˆðYoÜR$¾«t‚zð£ÐÚKE¸œ¯OUúÜÅ!"|Ö·LßU:A=øQh-×#1_Ÿªô3xCEø¬7n™&¾«t‚zð£ÐÚm"\Î×§*ýo˜ŸõÆ-ç‹ï* ü´–Û[$æëRIÎ[nø½ÒåN•nKÐ_ûÅúê–9â»JŸ¨? ­Ÿf¸œ¯Oç¡ÿ<Ÿ‹óDø¬¯nY ¾«ô‰zð£ÐÚ"\Î×§*Ý¢üâ">ËÉ[–ˆï*}¢ü(´v——óõ©J·nà#Âg9yË2ñ]¥OÔƒ…ÖºE¸œ¯OUºÝ ¼Å"|–“·‹ï*}¢ü(´öU.çëS•~Ê€·D„Ïrò–5â»J'¨? ­ÕÁå|}ªÒÏà-᳜¼åRñ]¥Ôc?ÊÚý"\Î×§ÜO×Å;Dø,'oY/¾3}°ý–ý(k¹?eb¾>Ué'xÝ"|–“·”ˆïLl¿e?ÊÚ"\Î×§*ý„ï^>ËÉ[®ß™>Ø~Ë~”µÜ1_Ÿªô¼e"|–“·lß™>Ø~Ë~”µÇE¸œ¯OUú!àåö>ËÉ[”û4?"ʱý–ý(ëBD¸œ¯OUúA{—p=àc9yK©ˆW¥Ôc?ʺ"\Î×§*ý Þ’PËÉ[nÛ£Ò ê±e×'1_Ÿªô3xÃD|,'o¹[lJ'¨Ç~”umD¸œ¯OUúA?–„‹øæ»w»Ø•NPý(ë¸ÝEb¾>UéýXB">–“·p;ªt‚zìGY×K„ËùúT¥ôcIžˆåä-ˆíQéõز.\„ËùúT¥ôcI‘ˆåä-»Äö¨t‚zìGY#Âå|}ªÒú±dŽˆåä-O‹íQéõزŽD¸œ¯OUúA?–‹øXNÞÂåÑ•NPý(ë2E¸œ¯O¹ŸÜ%%">–“·¼(¶G¥Ôc?ʺ<.çëS•~Ð%¥">–“·¼*¶G¥Ôc?ʺ‘"\Î×§ª^‡~,Ù!âcyu˱=L‹Pý(ëŠD¸œ¯OUúA?–¸E|,¯nÙ+¶‡éƒíŠìGY7M„ËùúT¥ôc Ã>–W·¼'¶‡éƒíŠìGY7G„ËùúT¥ôcI™ˆåÕ-ûÅö0}°]‘ý(ë–ˆp9_Ÿªôƒ~,9"âcyuË'b{˜>Ø®È~”uÅ"\Î×§*ý KCD|,¯náq@{T:A½5È_w©—óõ©J?èÇÒPË«[¾Û£Ò ê­<·Žë‘˜¯OUúA?–† øTùb˱=* Þš#À»M„Ëùº4$¤níÚÿzÎòü{žCš†„ÔzVù^§ü{ |=™W7¤ayC&EL˜j7N}µÍœ~Á€-wQÌÌñZnÄÔÙ3¼_ç-ò~?i–÷ë‚ȉãÆ{š²È;wnø¯WÛ'yçN‰ Ïš)à]:o¾dÛ”™K…×Y“Ç•ÿ Ï?Êí&!!íºTšÂ?rê-/ü"³Ê\#’våZ{NÕã´¶Ó®üÃUŽwøá=ž¿7«¾¿/O)ÿ«z¼¯þúü¦±½«ïÙÊ «êñŽ©&ºzÁ^þWõý /¨z‡ýˆÈjšßÚ›Æöúõ…ªŸßöÕCW…·_øEÆ-«ï¹snÛwfbÐõsCË«Ï ¸^ÁÇgÊ|$¨ñ¢ü•‡<ˆ ‚Æ›~$¸þîY¡}ŸRo jÿ¦Ü‰å<Þ3ƒªO9‰£«Ô=ËÿùM×s­¨œC©ŸÕnJP!~Eœ¼BiaåÁ_´@® äJÏ®]ÑjÏ(Ϲ=àz)Ä›Ò58¼É…âÏDåË?ã€ë%̯¼,}PÌy[GiŸ”/ß±׋sVHÞ ì é9®¼µ½~ oAFPü¢~ Š.ÔúCŸ j?£Þÿ©Ø>Xx[PtI]êUl~ Ïjž¨÷µå×÷`pû`ßç+¶/ «œœÓ#§Bú/ ‹>¹ñ\¯ÛÃãW…û‚[G}còË :øþ§oPû“Ós‘ßåG…œüãý3èqîÞV g*¸Êt]ÑÈ÷N6”躓í¥aýNògÊoк b)sŠ)¿¥÷Ÿ”§(!ü¤ÜÌý¥¼¼€ähê9@à“”ÖÉt¢BÅÎFq _¦¡+O>Pî-'S¿ñözE GRü?¾XæÎ=ÉW)qâI9ƒ Z+ýͺÀÏÓ­'× 9ÿ89”¦È 4@”»)½£©\J®/”þE»O¶?{r|(ý¨!Ÿ§”4¥}©ÊüSRäI¾J…_Q?e=Q‚q‰¾Ãø¯ýΓt@N¤¤Ð¥ \ÚÕ¿¥B‡‰ÊþCQ»<ÝñþAe_¤¸_”÷è•vƃŽ"z ‡Âç(%VÉOPöqоh®_¼hW„]ùÞu¡R¾‹BO üÑè—í¥ý‘X¯Ý=Œ"–+tMʾBÑO*ë*iÄ5ʼ÷LUÆ3Z‘‡¨ï>|Ç8‡­=‰˜lMOê;dGÿÂz¡ð”z=•y ú?VùùŒÒŽHŒã´ Úý•2Ϲ—ú]®ô# í¶cÞí/)íÇz‰PèzNß“èzSÂJ¾íoàE½RÚ羨JûzŽ ýö(óe\è/¢™2ÿáX/½6)ã>DI“0_ý±>lè¿ý6Ÿ ójüô*VðõÂøvÂüÚ0ßá ?xU¾÷@» ^è²ï· |;àÇbü0NÐg_Œs×+zë 8 G»²ÏPúiŸˆÆøœ£Ì?<ŒO$è i"úáøLio?´£Æ·+è-ó :¨È_5ó¤ý…Ó¼¶CÊ{:øÆ¼ÇbßHlŒu¶]IãÎÃx¢Ý·è3ü€7ø¢ßVÆ;ó·Ji ëÌ©è9¸‰ã•ï<ƒG+ë*ZáߟҾb½ñ:Ç:HݤÄ)ù) Ë„¾J½h¬g'Æ!tDw(íM= Ç8Ø+pÓ@Ý0¿ñN”_s¢_€ãüRy§ZèÚ•9pA÷é “ôú…}!ã˜ù§Ò8¤ÔBɤØI(ûu¥?¹˜÷L´/m Æ¡³‚?SÙwÉzHï£ÔK}Ž^ ~†õè;o¿‚';3(ÿÕ©͘w«¯e»ú›Ëë§ o/ÿì ”~›vÖ/øsø t”Šõ2ë4 ôžý&N´óQäÿÁaåB(W±·R&øcÖ]öwÈÛ…}#ü/ë#ë,ûWúPì?k=Œ²–‰ü) üÈ ¸‰às)€Ÿ ~«ø(%ûC™R? ë>)DyOD{Ÿôu¥ñþ‡ý1ü<ü0rC2úÁòv2Æ3åÒ _%b}: 'öÄ|u‡<ÂzOø| öÑ$È¥‰7b!%A>ˆçúNŒ[:ôÂüG@nî¡èeÔ탗€}/òs<ðÆ‚Ÿòþ~™ˆvúºK¾ð3–gY¾éüéh'ÿ%@>K@¿Y.ŒþTÅŽD ¤Ì_*ä×ãÊ|9?>¥+ùÑØ—z@by:ó@دⱿÇïPÆ=òQÚ“þŸ¼Nì“®Ÿ”v;G‚þfƒ£¿ ÿľ‘ ù$¥‰/ãÈôHÐcà¤baºwAt6ètÏzb Úiƒœ­ðSJÁ¾ =3ã’ÆëðÓ¾QÆ;tè\ ºjmho¡X–³A±.s ¤`\S”þ¤Ô Ê`ÉÿlWV‰˜bÿ6·'¨|óI¯WÈïâOtÅìÐÁã½ü”ôÇoøØ ü"߃ó{Uo7ÿ죪 ý,õ#å÷õt¬Ozëv¶Tð÷H¬ûHìK]ÁO§AîNÀ:ŽÇ¾a^;ôA‚¾¾ºr,ô_Bû$ôÑpð³îX/)àË))ü"ûvÛÏ< ØcÙnFåãá§Ø72Ÿ oÛ  À¸tÅ8Ä@^J‚ƒ}"û£û@,ø3ïWqØç™Ï¥N:úOmxl¿ˆyé}Ÿ /%£>Ûõx‰‡}# íH„”€}+åV® íròþ…q³£¿l'êÆöŠeœTùïqØ ö´ÔÅÊþÃû. VÆõ—lÑO)l·`{ Ûá°fÂN’ ;3A¥Ãõ­ŽKj‰’fÂ^™;PöµTc¿ õÙ\|@*èÌ…}6ô:ë!õb¬›DÈOŽ]†þrAïey8åQCÓ­úž7CŸÁÐ+3‹OÎCeóeJ9_'*ÈQæm°y|EÈ/ ãý’4Ô??Å-¬˜ßú‚ú^¸ØÔŸD.¶Ï´4”3(ëkì@i—êÝ”òžPŸ ·šî/4zUœ±ß†ò€7Ï9mš¼Cuý=ßx½d€/æ~ ;=øS„è§§¼m Êïnî?K[ öw¨±IÕ?s ç§Á®¡óóÓØ óæšÒ¥ˆqÛT`7¤+ʆž˜ =&…õ_ÄñÊÞ!Mù ÅSùƒvà Ï8n²Á—3±/'Cn´‰ð)«ì$<ÊyÜœ>“x¿ƒŸb°±Ý‡)q^”»qêÙ7 qc䂾– ;VÊVq<\п¨Ti_&ö‘Aàç¹óÅò™Ø÷`×LÆ8Û–ü’Ò°_;/ø|öÁtØÑbaÌ`»ì·Ùl‡€. öÌ(ÿu öÁ\èû)ÐS±?ôýä¥)°+Öë¹°W:awN-RÊc’û° rFèGÂö›PÈ›X—i°3%A¯Mb¿ä-;ükЯî¯hÌC ä©(ô#–õföò¼ ;G æ7ú} úÉrX ú7ãÕtÒ ù±X_ÑÙ ?œóy/ í§ôƒ]ß z‚¿! åYþ޽tÁºJÂxŲ\Ìòäy;èÏÎrâ bÁßÙŒq#¤©˜ä}îwÈu¬_Ä‚Ù^ ûG8Æ{ ü=I°WE¾ã!O²¿9 ôá¼Kiw8Æ¡è¥ Û£~K‘xg3óè oǃ.lX—,÷Ç`]IJ>ù4ôÛt×|%~\Ö‡p¢!7Fƒ?Ú°N’0?vôñz”„uáŸOÿ ‡½Žít=Ao‰¨oÇ{$èí>‘/9®€í£6ö¿bÞtÃóù±oÀï‰v³žã$X®½²^eG>Á>ì@{cq¨”}ƒíĬuÆ8öF½H蕱Ï(ðë¸ Ã}Õoùv¿`ë7®bòrðx+/4Þ˜ã†úЩï¯(¿UÞÄj²%<_=ç~â;TÈ.Gý o1ŸLc?:ôèµ”Ä~,¬ÿìj< Û7°ßq|@ö;øuøYÛƒÀS±/:8>¤¸¼!*KÅwæÛáÐÿûbŸéŠýa ûQÀoÐc"!¿r\TðË4Ä À~¹ÁùŽ˜o“ÒžžØ¿zb¼ºr<øx$àpœƒ÷Ø‹Ø/Ær?ö¶ÛGƒ¯Çï¤ú°¯õBùî,7ò| ¼ã‰öÅbÀ|±\cÃ>nÃþù8íF1N(òDìï=“ŒyF?X.±£œû(Ç %@þƒŸ€lèg4Ú‘Šr‘{À?ÃñO]°E`â ‡ñœŠqLý$@ψç83Ì_ ätÖ§ ü2ë–õ´dÖ·@Ov¬ßîX}À7 õÁ‡™?ÅB‰Ç¾ ½ÁÅú ë󼞸>ÆÇüvô“ã {³}|,õCÐc Ó5ÆŸýÖYà'É(…üHôvWŠbùãÚë ýJ]€÷ÏxöÓ F;˜çô—Û>Âr8ÿ%AnÂ:Vî« ¡ÀOX/>–ºJýFaíÀ“ÑëûHêEb?I‡_(ýàxß¶OÖ+£uþ•O¡=ìÇp _ΕàS˜Ž—f}%z9ÛcÐÿZqü$dzb½&b}%¡§¢Ò'òSaÇb~•:âqJ…>M—XðWÖÇ"0n©ˆãKáòw ÎlŸ©½PãO©§Dn$ºBéè3Ý­Œ;ëÇñXÿq—dÈɼî!¯´çýí> SbûÖ+®ûê@Èo‡Ãz&Çë³›Êq³°{D£^gì ¬‡ò~Àz3ÁÞ— þlÇ:·qÜÄ^ØPç9tzŒÂúcý·+ÖOgÐ÷#ë÷Ä!Pø[8Æ+~² HØÂQãÔ£Àú°<‡v9eð²žï`»"úÁö²ìÏRìÍÔ|7ãi½÷Ä~ ¾Úýìyí€ñ Çw;ö5Ž«ŒÀ:gù¯/ÇñÀN؃íjàÓ°+kr úÅñO=ðùg ð³œÙóÏö£^ ƒ¾Ì×À—ú0_<;ä…8Œ{4Æ™Ïit¿ cyíéqì 8§/è©ï[èoèE|^"û¦íá¸u÷>X_íY¾ü^X_ìŸíÇrÆ¡'Æ.…œ4^œ'Öƒ°ˆãÚQ¿;Ƶ=úÍòxgÐ[ȇŒ¯3è¬?ìQI< G¶ã±Íç xßîz·H‡1_6ŒS?Èa]tå±Þz±éŒgÞ'!7âtã@Ÿ½Ñ~WÏÁ÷H^wدz`žû3½€ŽÃYÏÄ~Ãó½Å~r¼X<Ö_ô¯ðuE;x½ðù–û¢¿ìˆÀ8² 7ä{Ö÷lhËo©øNàó<;ÀOûažz3ÖÁr?ð½7èa øÜ@ô‹ãçØ·Y®êÌöXô3‚íҘǾX·áçÞè_¶'`Ÿèƒò|ž¥?ð&býF‚{¢ͱ>º`½ôôÆ:ë†qê‡ñè‹þó9¢Ì[oÐ3ŸÓáyŽœhŒcŒãhGÌâ’ø|.Ç Sð©pÐC?¦çuJz£1Œ7 ôiƒž×™×?ø`¬Ë~ϾhÇÑ Àø1<žßT追ÁgÂÑn–×€qԅω€Ïtø÷aûÆ…ý<ýXOF?ùÜRʃʸöEûÂ!õc}tí¿êy›õî.X—W¥/æÇME;=¿sébûÊÙ±„Ÿ;ŠA¿»ƒ3ÿçsK1àë6¶ãð>:e=é6ë̆õË|'üÉw–»{b¿`{ºÞ±>ˆb¸Ð;88ò Sû9¥ ÙèÆbeO/Öã1N7­êUXo‘õ ã¨àèo£šêó•.O®„~º>¨x&¿ñD@ÿ´+ã¨Ù'n1÷¼.ˆo+؃ɺc¾ÆûN$ôú(Þ˜> Åxç›\X_y6_^1Ö…GjW öCާf;J`þõœÐ`óq¨´yÀ¹Å*·çGV“¿v*Ç›\1ÿ…O¸ Øø|ÆÐ…_Û_{ž'¢¼}‚QÊg;"a¿ˆ¼(ØÁÙ ¹5ÿ)ø7™b±Ž£ØßW\ÿ àç)Ø¿’ ÿÅ¹Ë „P2ëÕØ¯†ì‡½ rI ,'átöcìÃÑ~JJÃø¥À¾˜Œ} ¾bþ_?ˆ|NÞO0΄}0ÁmØ€ñF™Û](rÇIA߯0^»y<,%A®#ìÓÑÊþ]q¼—˜Î—jLbûëg†ñŽó•k,âæø< è ç«+>¿æþvµ¿‰ «81^.h¼áæü›â ²Ý9ª¸<£âôþ§à÷Çû½úžƒýhûc†°¾‹ò|Ž> ~Ãlȉ)°s²ý(ª™@§ ¿© ðYþ·±|ýœÏ¿gƒo±¼o?9,Z¼;ÇßÅA.í¹¶ û1¡'Ež" G`ù™ý¶ì¾Tè¡ý!ŸbU}œõÈ½Ô zRð‡žìçýÚ€oËÙïnà×}¡'¤‚ö¼ØÍÔx8Rúoƒ~Ñ |ÏitaxèWëghOü#ý ÷E`?Âý3ªýO½göOðcr`{²ÜŽ´+æ¯ôǶï`¾ÃyÙ? <OÈö5g¶ÇFc¾9>ªäÔpÌ7ûEû3ݰ}õm¬Ïa<Ø~—†õÖõ#د ºc^4è®/ÚÕ ôÔõyÌ+Û#1ìïîÃú*è. újì¿læû â0^l×€uÔOáÔû^4Û)Yÿc}ŒýÞ˜7^¯°S„CNǾ=+žíìèûO°7n,ÆÓ=.ôÇq©1Я°Wd¶=xÂ!÷Çc|˜ÏbÞìl7àõÂqq‹vÌD¬ÏèÃçÇ÷¦d >Ô½•íñì'ð­Hô×îVÆ·Ûg1Þ ì‡d?.ä:Ž e{X8ƃϓôEÿ"@/±èO$Æ3šíöðôĺè¼|_Ç÷%€ù|*Ç­p\¯ íf;ǫģ^*è;óqVí£à›Ÿ˜úVå,Ø‘íhüå”…q±¡_ gö3fƒ^øþ"Ž«îÎv)Ð%ß”»”~ªT¤ì÷ãs»Y¯‚£_lÏI}dBŸL¿$غ߱–ãCœð‹gÀÿ—z+üî˜ö/|óWðeÞ‡À®•ˆqHƒÏ•ñ=M6Œ« ëœÇ1 ãÏþŒó`ø£Ù^zØ?óØyçófQèWÇYa²Áos;*©ó;e¾R™>1Þƒ°ŽbÀyˆ] t‘ zÌFûÙ߯q0¸¿€†`_æóS{•rÙì¿ÇºtñেhÐ\åû$廳ðb¢°îb8Nv±¼‰Jûó~QÚÁçò‡Âîñ¼ _ªqˉ ãA˜·<Ôs½¯´7ë+ü<ã‚÷!°¿ ÁºÊØh(RÎÁ¾RU) îT)ò¼%žü=ˆ—ÀúÍ/Ræ“é2ükÐ6ANVïrBÏåû ø~‹x¬‡\èñ9«•ùu5QÖßãÃñõC±.£@¿iÏÞО¡ãÀŽŠr+ßKu“¢Ðë)7öSÅú§‡P.û‘°^‡6‚½ï©§Œb¥¿C& žB±»jzà°´’ô ©½i3NhÐõ_…C^ÉÇþaƒ|™„ý?•÷ ð—dÈ¿) ¯È‹Lñ™¯dqÜ ûÕWøÚ¬ÿ\Ö7@ŸŸ€qg;>¡qì‡b?'à²]Ô üéh/èR°²œÄ÷Ù D¢¿IØw]à×ñà?1¨ßòŸ?NÃ~—ö‡ÒîTðW¾7…ûá€*û-÷߯v.æ»]ÄqàóÝ1O¬W%`ÜR1þ|n(žíÝw–w\à¿_رßò9t¾W/‘õYÈ¹ì¿æ¸ŠDìO)!Ê:àóà±öŸ‡c9n¤êñùíHðïXì7ou6û¡áÏásý|_W<ö}ÖWú`]ĸ8ÓPr‹ólGÿ¢!Gâ{8ÒZçnè¯xП¯±êFûSßUÞ9¾‚ýUhó_ö»÷gýôÂq׌O4ìeöïA~áþrA*ëy,×N" ׳ÝÏ™±þÞ)ÇGƒN#urv$ÚÅq­ì‡OÇüôeùõ Ð-ŸoK³_º=èïYäx0޶A.c}‹õîW:ü¿ý៶aü9'tÉ÷‹öa½ü«+à80.lGásYì¿gùÇ#ë{ëëˆÇá8­ Øpœz³^‰þt?ŠÁ¸²¿3rS?´7 ëÄy6ãÃú?Ç[§aâ{æœìg?f:â8’H´[¥'Œwø Û½c@ïyhŸrÇ—¦â;Ç·3ß‹À|tGÊþØXŽc‚œmݳ:ó‰~ç’2̧8~•ã®ùœjJ™RNµGñºÀºä¸Ø(äG.÷?‚×?øf&ô^WÑØ—XßO€Ït ºè‹u× ônƒüÎö§Hæc§Ø>Áô“ÅúúÉü7õRK•ö$¡}ÌçÚc=óºg½öC5N>|ƒõÀp¬×,ð+Ž+æóŠì?æsI˜>§×™ívŒë'ýbù+ ôgc½ž× è‹Ï_Db_d=‹ãÀ¢°?·`¾Œ}Í:â{MbPý£sØN›³L™wæŸÌ—¢aÈ‚ü‹þ$€/‡Ažcû.g ÖA¿a¿Ê@îè ¯ìR ;'ï›XCaIo¡ÌG üMw¤ÆÓc¼Ó¡Ç§Ã¾ƒûêü–ÿ’ªÉ?™>ØÔpÊð:VH^^N_Y%þuMyÉ0Îã”ãtU•èuÞÌg*Å0^WYùCÕÿ›s´©_*h¸—å€\6„ý(­ ý4 úÎ …¾Õû0WŠñ.IØŽž¾å_dù‹ùï ðo»N¯NWô]­Œ;嵃û±Cg“†}=zjëï_YþŠ‚¼4öRÈ^èi|r.ìŠ.ÄËFéâƒR!ßdcŸã}Ý%ö'èyÊèlï0û[6äg#Óxÿé½é~Aƒà¯ÉºN‘WÒö™ú©ýÆ›®Ð™ÏülÈ9Y«Ò1O|>" r|.äз6_ ãobÿÿI)ÏçU`R˧(vHÊ„Üù<½q…âØ(ó?•—Piü n”鸟2¼7ùeWUï[áx»AÐwpŠÆf+ó9 òbÆ_8gñ©2ßÑÏã`!ê=ôÎø8üÂý"þÉÂ>D¤Ä»QîV¥Áþ’ù¹ß¯Â~©ÆÑË ¦@¯J†Ý”õXȹj=ÄÏjý…üž[¬ÀK†œšÀúô¸>X/|5™€ü1ë‡ï?ŒƒÞœ…q³ëød ôœLĤ€Ÿò¹ÙpèyÝÀ÷ùþ¾g' zP<ôš4ÈÅñ·s GÄêøm ö“Að×ò8'cœí˜Çù;Å¡”KÂøfCL€S8¸¿\gäþ™:H…3úRØ)S0îÐßÜ^Øé†À_”ˆ}«òŠ2?„~p.ðó9O'ôïÎlç²÷RüCiðÿä»z£»¼Ã•qJ*ò½tðÏó°ïÅ@¯Ê?#ôE¶fo.ëó(Ÿœ¼FE{…ñ¯2~4^‡ áäCä{˜ù÷Òtþ'ÖIÑ=°;B¿Ìe?4ê“âï!'è)rFÞ£J9'ö/ö»%ÀŽ]¨Œ#ßë¥Í/ìic1¿ à—ƒ!wq|ûq˜Îóã•ùχü–uŸQ_){þhè>4¼ “‚|e}ÇÁ•«èš½ãâD{òÀ×ò#•þºž¬¹˜²·ÃŽh¼SöýÁ›¿{Åå¬÷c91/aÊü©~ RÞÙï”Çþë»uüòy&ä3¾Ÿ*‰ã—P¿?ìI€ÏçÄ©¾‹ñ¬•¶Îü¼—X=‡ŒxSÊ…'Rß_ع2 Çð½ïñ°{±Ý‰Ï-ÅA?á¸àì|yL8ì´Ø²°ù~ÅñM¼r¼o*öO¾ÿ†?)Ší„ð#¸°OÚÁoÙïÅç¬1.Ê÷ w¿æó¨|ÿL ô„4È“ÉЗ˜.ù÷—Ò!E¢½ª?rBäŽëJÀ8wƒ<0íä˜Ç”{•yâ~'ÃÉq5C2Y®ýñ}0ìï"ØC öðh^G!J;9^ç‡ï¥H¾œù“ãÜø^çaÐ3èãxq“/Kí`?¿{/ûƒÒŽANÃ8¤Àû9Ç%Ú Gò>ÒŸý×à‰XgѰÇ&¡ýQ°ÿFbÿ‹Ä|§`ÿâ{Nøw`wg»ðf¡]6Ìsæ‹ߊXÜ¿ªÞÿ‘„ö¹7Å÷V¤aý«ñ~€cæbæû 8¾6ë•ý7ì_ƒÜÛ눞ƒÿõð;Õª2ýAyŽ# ¹„ý!ðª>?-ÿŽßÙ | ü—íûi ß4öCÃÞá`¼¨Ï¿G 8ÈÉêïUÀ?‘‚~ñ=&Lǩؓ±~ÓѾgžžF\೟*‹ýohOè€ïýæßCIUÊÇ€ßpÜ!ÿˆzÿ=Öåo`þñ^دí„bÿ³a?cþƿג€õËqy½Ðo¾—–ýFÀ¿«Á¿ßÆëǹ̹€Ï}sü¯C>ïHØ'XŽäó¶Ì'b°?$`ù^ËŽãá8z쇃@/|Ÿ%ÇWð½”IÐc9`¿æ+øâ7ßù'ö÷q¼º 㓉ña¿½ôþ;cä>Î÷œÅ#°/«¿Wƒï|ßÇQðºÉ²Ÿ–ï‘a½9¥;â‚·úÑ)Ÿ³âóº1˜O>W¥Þ¯ËþBŒ× øù÷ýìX×¼.SC•~AQãó#yd¢Ÿ¼£~"Ûm¹_ G¦ÛAœÏüûÿÎ߯ÄëŠïÍù* òî§TO-ãÆþM>×>ó™ƒõËç¾Ùß—:O…¾œˆùá߯dúâû†â±¯°þƒy‰b¿'䎿„}z æ#ôœŠyKÃø¦@oŒÀøDb<ÙÉ÷ëDAbÿ³w úµÁî>ö°è8ÆÓ~žùšï­µ®þ^p¶³r<9ÇKñ½b]™î±_åTòÙßÍq†N¤Ã–!ž û’å!Ñ¿EÌS ød4úÇçÑ9Þ‡é7ÿÄY0^ŒCú?ó•y°Oèü– |±Øoøw¡"¡?ðùxøúPŒcoÈQXo9ò3%9ÏŸ ¾Q´+FÏó¾ÉxÁ÷ùœˆ]YÇj=¾w&üÆ>{.è9ïaÐ#Æ/—¨Oñý,,;ÀÕýã`ÓÙ##°~ùœ½óp®bPËñ½$C¯üÔü@=¿ƒq㸠쾸¯W­gƒ½#õÓ1ã¦èð‚ßþ#ÎooÌ{ü(6ÐÅ@ðûŒ“]´;r!~ψÒV(í+*×K8ÆkØÔ“ðµùÇaÿŒ†\ÊvLìÂàj½ð!Ößøþô"Ñ/AvÐɰûEºŠÁþÅqœQ,ŸBMÃx:®üD˜¾ÇŒ—nÜ»¢ý0ë¾ðwÑþÃçÀ¢ÀÏ8.ˆã:2À÷btvýÔ³±_°ßóqnˆ8ÎýÀ—‡ÖýƒŒ‡ý,Ÿ‚¦€¾ç§áe¹i*ègt?qœûB/Šý1‰÷ÖçÁGù¼ïÌ_9~NµB_áx±È5yð¿æA^í‹}oð?˜G^/èîwPïÃâ8Ôxì§|Ü0Œ ŸÃ`¹/û~øTÞU \>—•Q |ü&¢‡È߀>ù~V¶gÚÐŽaÐ ØNÃë3üƒÏ¹äÀÏÐrÛú‚Oñ~ÁñP!ð}AÇÄñPC{AßÅøñýhG*ä²L¬ÃÞ¬ßAèÆûà9 Oñ=H|~Ά|þ½ãðs;èï÷áß‘J{V™Ç4Øs{°žƒqå¸-ÞÏùþ¬pðK¾Ô†}¸?ðdèäÌÌw8Öo,Ûk°ŸõPï“áýó®ÞS¤“«ú³ÿûqÚVÌæ)œýg€Kè/ÇöC;»a^¸¿¬ØÁßÕþB^ëý„ïCJ½ôàø9ÐÛ@Œ'ßóÂ÷%÷våüŸÏ=…ãÝÆúÇ‚õe=qŠçÊ÷éò¹/Žå{™ú¢\;Èu] §°]¶?äùôŸÓ^L?,¯(~êùäxPðÿDÐqôqŽwì:åø>õü+Öæ[ŒÏ#ßÄ¿/Ï÷5Û°N“A×|¯ÂÌoWô¿Ï'ö•(ösaØþ¹ÇÆv¬>ù·¸ÎãÐ.•ßÀžÖ ôÙã¡?°ý‘×ÿn´ùoÌç#A¿|/ÿ~Aè˜õXާdºd:‰ÿåsÙ Ø/âAï‰lŸÄ>š¡ì£yçó¯ñÀ|ñ9ŽÌo·ƒíuÓ0î)X7„ý/tÈ÷Ò Æ¼r\l2ìl'ÉF=îóÚÏ÷…²Éúãß;ç¸iìylÏaÿ^} 뗠Ϭ3¶—¤a~9n8 û*׈+‹íÑÐ ²Y¯C¿ò¡‡q6Ëëé˜ç|Å€§ê-™è7Û-Sa·LÁú =íUå…\ð=È9”Ÿ:b:C;²*ãU=sæyó9ð“tÈé˜Ï¼s”þVôLoûÁÑ®,ì#lp¡Ý¹uÿ Þ\ÐQF¾èÇÌ‚}ûòÑ~zB”'cÁWÓ çç(rŒÖ^ÄépÜEê:QžÏF½üp…ò^ää ýS¯*ÛïUƒ·rñÒ`ðMÄýkz†Â4:Á:þ×Fá¹ Kæ?–V^ÑCOÿ`݇Ÿ|Wáá÷ÌxÿÐðBNç¸pìaù;•õ• 9=ûJüúü»æiЗóŽ(øó»L¥wÎ'¦þkÊûFá ùÝŸ¯Ìø^Êi"èÛ2^ÈùyW z[…ñf>jÚÊ…ÿðQ_LßÅ}êw‡è·¦4ìS9ˆCÌzY¡¯tÈ/)l'†þûB6ìûYlGPˆ2ï³5ý5N´;°ßÙ=0ûq2öuä!Þù||ø¥vŠT·‚ý¥|ÿKèÑ=2r_"äQŽOKÇ>Ë÷ýó=ý±_²½*}üe r;Ÿ·àû%2!wØ±Žøþþ,¾×?ßíПú`ßãsxÈ媟 òÿνú;S§tÄ òï^°Í~Bõw› ñï£÷‡<Ûrîå£Ö¯9žrŸ*Çc|Ò wòïùñ¹+øG¶[`üùþæÞ¬Ÿá{ ׃¼gø°½:tÇ÷§~§¼÷bùý`p$æ!ôÍ÷岰曯Å9?zç@äóïÛ°<ò*ëe|ï3Ÿ#ì ùŸïåû|û¢}í!ÿs|á@Œ#ßñæ{¯ù¼R ÖeO¶@ÎÀó‚y`yŸõ(¾7·ã<ÉzG8Û@lç€ï©¾_W=ÿÇr?Ó ð°šïyîÄëv ¶Sô²ÞÊ÷_÷eH}¥ÿ¾Ý€çŸŠ(´?ýï‰÷çŽøÎtÉv¦^hgO´«7úÉ~@œQï—â{_ØŸ ûV2úÃ÷s³], íu~êóý¹½0ŽË÷ñï]r¼ ·›Ï©ñïm§`¼¸ý1Ïç°ò-Ó_Ð1ŸåóÇçTÈv¶CA?Ḗdè“™Øçmàï|n2 ü†ãGU¿øû}ûÛ}r0¿ ¬ßo"à§¾¡ô?ü/tÆú-ß? ¾ÀþýðÖgò®RÊÇŠû#Ç;±?6õ'èÛEy(ëÜ ¿ßÄ÷Ö¸`/uOŠ"ßÓðØ=u~˜l¬7'ô̼WùO“;Àc`_,ÚѵýûâÈ$AÿÐä“À_¡ßgCoJ‚Zª‡óÄ>ó3 ÷Œ4–Shh3…^ù÷qžÑRîÁï‹ù–‹)ã?J¡)¿p…àwò[ÞB|›e¹‘Ÿ ú°ú}ØÜ ïxÿñ¦ ò¾o¼¢^ª~Þ^syQª‡óè–SI”÷*Mþõ5¿ÃÁ稅_ó¥ÖÃ}ñÁã=ëì–ðz,ôkœ}âù-é<Ãõíö=kºúXðcjëèEø¾ýJ…× ò¼Üߦú’†÷QÑ?Îþ£BŽÏÒù+ ß5çG°ÇZâq@ôG2Þ¡nÈϺþæ¿,Øm$x½òý¢îí?…°oeùòÂà|¿Ç”ÎX~±Ä[}Í…}lè™ÊúÚû2öÍÜÒò !4òuóùíy ÷lù,— ¹€Ï‡ç­ÐSìßê¹$Ø÷ǰýÔØ®BÝ!oäÜdºøž`J€¼•×\ioÁbøÇñ=g¯o4üËçUý£;ÚÇç5Ø 8¬—ÄŸ ~–Œ´ûÿ†¡>ÿÎÇòï+ Àøõ‡¼ï\ìzWÇñ[üûxqhäë> Ë~˜ß¶Xï?Éñ®}±núb^ñîø÷r[@_f¿è?ë1ðR@g|ÏÛ­:¡ßüûîv¦sàïÇú!ôÕ8ð•!Ð8¾! ðùwÛ8^95LÁÇ¿gÄ¿SÈ¿ãÂ÷iò9ÐpðpÐßÃç²Ï¿‡Ë¿gÏñåü;„|΄ýÝÑžsÀ÷ì°p;ÙžŽùÀv.Ø™²Ø¾Àú"æ“íN©ÐØÞƒuÅqkm¡rœûYm 'ÚÙóÆñ²ùWcœá¯J‡}+ó•þÇq×Ìo8‚ã Ñ_ŽÇáßc{ß ¿nôF¶?e¾ÎóÏvÅT¬oŽCg¿/ûç9N“—ŽïŽŸc{&ß§;´›Ò?>·0ô„öf¡ÿü{ìoÀ|uçýü#ë?óοÃè€~ ¼…"¾åóöƒCoÌz4ä Ž«ŽÀ|ó}]ñìÿ„½&û_ø5ËNŒ Ÿ£æßiÈáó°yE œÁ°3¤À_8?ìÂzqÁ^â„ÿ•ÏÉrœ_Fž _P,삈‹ýäÀΖ=<ö¶ƒò½°ìÍÂzËÄü¦.8)«DÄË÷¢æ³ŸëçZ5ùí‰ýó9ò4ì/Y°³gb=¦AN`ûù ÑÎqÏãu‹u1DáSj¹tÌ·î÷/ÕßÛ΄½3ïØgÕrƒÒD?~·ÖJÞ®ª”†>wJôá ·Ëel?’ÊE`ÿÀýËš|Ër3Çc@.ȬÐI^ÄE@c?IÊ» +øgœØŸÓ°ÿr<~ð™ÔCÂ|RlqùCˆú{íq!Ê;ŸKφ¼É¿ßù0ûVÚÉçâÇžïÝ¢¶ÆþýdìK|o|"øŠ ëÐŽþàܽz_ÇõÄc=p\,Ÿà87Ÿa=4û|"âbÜJùd쿜ªçÀºa}Æb_bû<ÿ®ÿj_ðWÂx¢ý|¯'ŸkŠÅ8ò}‰˜/Žûäý«ö÷,%î‚Á÷x>ØoÄóË¿w¯ØQ´{5Áïø÷šùU*ôŽ÷c?VàåûÀ9žã]û³\~ 9Æ#ýàûÿù| ï›IàŸ…yã{ë8n òÇ£ó}ú꽦 Cìj<ÿþíJ`¼Ðø¾y¾ÿ½ÛÙ!°œÁòµ õ{b¾ì'>·È¿À¿³:âßÕˆÇºï ½“ï¡3ÇG^9.›×4zÿ¤ª—} ùùQ€«Þ׉qc½óÕùa ß8è_,öÁ8pÜ1ÇÕ²_4óVàeøXçÑà‘X_|?ëe¬vÆþœ¢Ø¹T}ƒGR½Ÿý.às]¼üû¬ñw¢AŸ ˜ÇXÈ¥GÚë% óž:LÇxø^=>¯Ò—çóæâøbŒ ëë¬/òù_æ‹Ç8íèÀëh*ü]786tÌrrà²!ðø÷ø~,çPe¾°nÃ!sù0ȹ|NÏy1]¨ñõ˜/Ö7s€‡õ€TÄãE¢)h?Á~Ã絺`|ºoÊGÕFøÿ;Ëɬg Âúæxí4Гzï&¾'@_´!¿ÖOWð‘DÌs ø7Ç}r¼-ÿ ÿÃ`öë¾q}|ŽPŸãÍq¯™ê¿ìŽuÅ÷Äaäû–íhŸ‹¾üNÀ>ž ¿¯‡Я|# ëˆé­Öûù>ä8ÖK€'üÂÎþ°÷•”ý~*^ð…8ì'IØ·"™¿°?íásÔÉ 7>_Éö‚tèóÌ7ó¯Wð°ÝÈ…òlHM¾ þÿœ ãÄ¿›ÁçQ òŸ7O©Ð;ÇQ †!û AOáû“0ïÑ GŽË_é úb¾Ë~\¶Ì1ô{(Ó]÷ÛsûÃÑ>ô þO>çË÷ðý«Ì·9ƒï·Ë…¢}€¿–Ï=EaÜ"Xcù‘ãKPžñ³?6Ž×3ÞyßïŽïü»ÙQo‚þp<>Ç)sÏOöA¾ï tÃ÷ó7Ð ÿÎQ?ô/ óË÷Å2í 9€éŽ×;ß×Á¿Àñòv]GÆ#ü±ô^þç®ÀËñ*}Á/9ž…Ÿ‰Ï½ôÇþÄþ~þ½g>ØãËö*ÀïŽú=˜OCà8ŽÛç{’b}òïLs\Oä¥~ >G9ùä8ô£'ø^W´³#¯#ð#ü­ÊÇx¿Ž@=¾§;úzn‡û}8šÇóÉçÙîwÓìa|ßÿîÿ~ÿÎ1ÛÏT{öOõ<=øm2øI$ö->'ù! íâû+Âñ½;ÆŸÏyÙ8>‹ãר^ >ìÀøò=,Ðc/·«5è³ÖË_Ä÷ Dbü8.ãØžÎ÷ó=ü±¨ï„À¿ÏÂçi»¢]lGJ=ÇbÜx¿c|¿ º"øø\ Çƃ§Aâ8=¦3Ž›âyãßuŠ…>¿‹ñ_àq$%þ]=§C&û34ûë• CŽcãxÂTè|~?ší l¿Çx°žÊñ¼|o{æ;¹¶h¯áßyŠÂ8°Ý˜ï)I~>×ÇÞ_ÙÞ z‹âøÈa|`ï /Þ#0~lWÇï“R,ÚÏqÍì·àsQèàpÙ› >ëÂ>Äþ=Ö£¸Ÿü{Þþà@?Ø?ÆzyëLSøw×øœ߫Ͽ:Šƒ|Å¿§—ºŠCû"1ê}î {Ž KÂúâs\¬—±<Çr s<ŸƒãìØnùž×¡üŸ'õ¾¯—ïƒí¥|<rßs½Šû×ãÛã9ˆã¢8®‘å)nóÓdæçðƒðï F²ÝƒõÌ{?|çû§XÞHÀx¨ç“ ϱ]…õ^ógŒ{ÚÅç“y>Ò°^ùw.ú¡ÿ}¸¿™€õÈqÀýÐŽcŒeû÷—í  þÖsõXŸb>ÊçÑùÞP‚_ƒå5þÝæ.À—~ƒyçßÉÃy}ê 9…ãSÐ/ö»Ç`e¾âÀ8%A®åó­¬°ïq‰Â¼ðùsŽ@|‰*ÇðïÇ1}óïGaŲßt7ãí}uƸdz9™—‚íIq<îŸ èìïIÃ8D¿ñ逸býÙÀïou^Žgˆ~Ö/Y.æßby: û`"ø“ë쓨Çq²|Ÿó×Ü”´ÚÃ~iöñ~§ú[®‚] tšu ëóŸÅöGàq ¿I,‚ÿ¡Ì?ßãÊq®ü{Çqà/ü»@ƒ™¿c¼‡À¾Á¿7Ç¿÷ÅýOäþ–A/ļ`œ»>v\¶¯ð缾ºíd?{ÁG k¬#õ>NèË)Ït”gùmh‰Ò~ÞøŠر/§Þ:|)ð‚>ØîÚ]ôóÄC~WïÙ}úÆ£0[iWÐU4ôºDÞÁ?’•}"$¤níÚÿz€Ÿåù÷<‡4 ©õ¬ò½Nù÷øz2¯nHÃò†LŠ˜0Õ6nœúj›9ý‚Z™ãµÜˆ©³gx¿Î[åý:Ò,ïבÇ÷5e‘wîÜð ^¯¶ &NòÎ+ž5SÀ»tÞ|/ȶ)3— ¯³&{^CBþQþk{:Ü®‹ç¹á¿ž¿ § šZ)•°q âÄ5ˆk× ®~ÄA¨Á\ƒ¹s æÌ5˜k0×`®Á\ƒ¹³uÅÊCí7$wÀ¨A^%Èý¨RMèÀ €Õ´ ¦5-¨iAM jZPÓ‚šü7´À:§&­Ü´Ú8`Ä•Mä7¤¦ÿ3|¦¦5-¨ŽRù´eħ=¢Ó¶!5ˆO_Äÿ¥¥¦5-¨ôÔrÁÍ*©û•ÆAüý?Šû”3ûÀQWÅtŸN¸O…àXƒ½Ú±[ƒªj¶ÔSÅ ~!Vÿ[Ó‚šÔ´ ¦5-8ZPañ¡ªÒÄ5ˆk[úÌËjZPÓ‚šÔ´ `Öu‚fÙÿPÓ‚šÔ´àÿG ªMü­þ®×´ ¦5-¨iAM jZPÓ‚šÔ´ ¦§y ü.P©èýZYZÿ¨« cà“àÇlT{H*mìªlª a â*\ÊPnÅi»" Ñ^5½ÿiK5ˆk× @% ¥§„‘ý¿‘ËkZPÓ‚šÔ´ ¦5-¨iAM | SUÝ€ÿ~97h„Õ?éAµ J©º!¬šÁ¯†®Wàÿv²«iAM jZPÓ‚šÔ´ ¦5-¨iÁÿj ªL$®A|Ú!þÿÓÓħÿ¼'W èa ÿuøO[ºøßCüß6ÕÕ6Ò§]ƒF\ÝS}ÚàâÃ)–‹kPÓ€ªiÀÿ·´Ú¼¦•7uÕG4ÿudWéCñ_Óó €Õ´ ¦5-¨iAM jZPÓ‚šÔ´ ¦5-ø/lAÀzKMNŸ¼šðû.Zƒ¾ýÿOôÕÏýkZPÓ‚šÔ´ ¦5-¨iAM jZàG‘S!$V&þ@ÓS¸ñ)ClMU´È*‡Æo@µÏÀÿħ/­U1þÿ™-­¦5-¨iAM jZð?Ò‚¤°@r*ñW Ê)4ÎÓwТ] ê šPQ@ÿ}®A]E¨+!þ¯á>u¬RO‘@pJа¥W þŠY ¨ÄI«iAM jZPÓ‚šÔ´ ¦5-[€´Sí 82u%áXR÷Þªæÿ÷4àú¯$õÿÑT?¿«iAM jZPÓ‚šÔ´ ¦5-8mZ´|[IõÿëÁ¯iAM jZPÓ‚šÔ´ ¦5-¨iAM jZPÓ‚šÔ´ ÈHø*·uk‡„Ô.?Ëóïyiê)ÿ¬ò½Nù÷øz2OxƤˆ SmãÆ©¯¶™Ó/¡å.Š™9^˘:{†÷ë¼¥QÞ¯ó'Íò~]9qÜx/PSyçÎ Ÿàõj»`â$ïÜ)±BáY3¼KçÍ÷‚l›2s©ð:k²ç5$äå¿¶§Ãíºðö¯ì‡‚S9 ‡üÓ£§ÉhžÍpÖ4Ãë!§¦§ßJI;=š1øôhÆi²RNf~š4#¥’àTÆ*«#N­ œÊ⢮Óc4*8¹•%oTpS¨,fž[±êƒ*©Y§mT°;•ÅEÿ7l«WÖJ©¬I^±êC+©ä?•%}UoT°ze­”Êâ䯕¥ TÆ*‹™ç“RA6XY\´‚ 6³’šQAöUY|£‚£QYÒWzu fºôPÁ•’T¿r$ìªô‘‘ú³vd“·³bÍ‘ú#ê;}?§)ÈÌ܆–&=¨ ßdéeHM$eÉ(üYæC¥î˜LJŠTf°&س‚z.=G}$=¤ùÎ*FCÍÊ—Êø.#?Èýª–‡\é!ÍwáQR™©ŒK*œëG3ä•2Ü7 “šô§–<•Õòà’ùþ’ãÇ È«Àå{|ÒNAPòN‡ßù~”‘çT…œâGaõÁ&¬rì4? ËMõ…¼±Ê*…«[¶l^3a²UÖÄþœ sš„.Tð^µÊz8MâIRªûi2§I3N“ LŽUþ5ÃD3aVR9rFFaâk“5ùÔ¡L«…ÒY•îï… Rù¬«Ü/Ùƒ o%&?uw³¨§IÄ‚?dl¢JWV3üÞ€Ž'ÈÆOŽÉ)Z®­;uÑ,U.ø¿±ô+œþ¨œrs¥2²ä)£0 0Q d#³L¢&Q:r-“ùøZ]ÞSäÈO™¯š]›8Çý1Ó©Í0‰®É•ÊÈzn®ïÙJ,ûúeÚÈ’FCÖ|åPv6 ˜R¹²Cî Iœƒ?r3Ô,¹§j–Ið­ÉƒÌ–e@ÞL.šÅnœ8uÛzÈç‚[ &Z¶,9ÈÛ±|v@f2òЙD,˜¨“2«4±Ê ²|—1¹©Fy¥¨å°C“P“BéK@&ó%—‘N&- È,oIòš¬žàÏC®Ô Ù¬ab…éÇŸX‘J?¡ÜÑ93‹|Óš,ÉÈ}“˜@“3P²ARvëÈ›¦‰3H¶‹š qÉÁKòq-ùx‚¼m™ûGTéþ(ò&÷oJ£!ÇÁÊ…åZ² ? !PÖße~ht$kÐ&eäÆË½Wœ],6ãÏõ¤òhÈeä9¹°ìt“ÅxùÁd0ås þö'K~0‰ö‘]½²:);MäI‘ù‰Ff;ê—ü@ ›ØMü ¥*ÇÄmarôRvĈùÁ„DeŽdÒBÙ€,sÆh"‹úÕðÿçáÔmm)>MFÃDٯʹa&‚™¬7™h4dÕ#ÍwV@Fæ€ ›¸hek˜?µ lrJBö››DÆÊY&‡‹š¦@V'eÃB@“b¿!kˆ&-”MÁòîà,j¢’›|qùÎ’)* G†¼m™X¤eƒ¤ Y¦¾abñ7z™´d‰ÈäÎa±ÇŸ32˜üކ¼Mø£Ñ›xaü–dK—L™þˆX2­H_dË›<Ý&ŠÉ‘%=Ùà&[dÙ/]‚l"LVº~!‹ òÒ“áÈë´²|¾§IÐu@®çS÷P-‡Óå‡Êše“µ,«r„‰¼ýÉeL<2d“ð*O¶xÈ:šÜ°SìêÏ’©ôØÝÓ¶þÜ` ‹"j–IБl01ñ’˲lÃÈ%·Pn˜É–-¶IX¸I-“Ÿ|•7_‡µl40ƒsÈ?uWîË,E3L†7  “#íþx©ü‘Þýy0±ÿ¨í‘™§¬¬™HŒ£ü(ãOSýQ9+øPéaÁ=í\é§É±\¼ Uðpš\ìiúR•–ÀÓäâ “Þï¤,¢Ë†)}Ù$²º¿ôEvO›V=³2·1ìeט,™Ëb†?§•ýQaäV.#G>îO¸²lY2Q ƒÓMÆÙdXL²‚ Ãè´»É,›¸V+kRN]¿*]Í‘ùê© h#¸s)ª&´!›Lj†¬¶7t& ÖŸú•5ù$Ž<i¬Á ]®D½òhøC-†¼RŠ n š¨,ùóŲI´ü`Á%Q‰DÊ2YhþÌ ‰]WLt4€þÄ]ÃYé5þÔ=ø£õËR¥üEí0±TȧI¨Ài¢<š4Ìä‹ì ÷Çõ\é:¬ì”½K2o1ñ&“bb”3ùbò óýy0á¢òV+{+ä%lrFÃD 59¿cò¥ÒNfn‚%¦ìý—±*ÕÉFgýyð't< VSn …+ËgâÎ3ñ¾ÉžYf3!Q“0Hì&Ò©¼{úct2ñÊçaåÂê|Éû{žTØŸ˜@-@–eÍÅŸb›Mü°2vY×Ë“°Ë-ôçâ y4ü1‹:SC¥këÕûò¨º~ä{iL´dG?? mR& þ„  ¨>˜­ a›œc îAvù¹üøâÏC@µN]du@²ÛË$øÄär9HL.l²§†]éZ›?:¬‰óEØ î!Wz¨t‘ÆÈþìzUðàÏõAòЩY#¤/2óôg¥øÃM¢¦Šj0y¨ôYîAMfG!– çú†lò`â¾÷‡ÉeämŸP€ŽKœ:¶?A5§.zDVjäÙåÉ"8CGõ>˜˜YdÛ©‰}µ‚f–4éÁ„êd…WV…äZiRÍÁy]+KŒ7yèÄwp§ÂýÙþRB+ëAžJy’ò™0"²1 ž”÷/Y4’ t]†?ºŒIaùˆ\KV肳:ʆqÙj$ÛÃåZ2vœÌ7ÔÁ4aV²!±Ðwaø†ÜŒ,ß_L¤&“AðNpû²?ÄÐCeéÂ|&ÇéÉ”`r_Ë7d*A–çKýbr)®,¦4)²@Î’kÉÞäß %•‘äõ%Ë™&2€Éò49àæÏ‘·4©_iRãeŠœ%O¥?Щ–üÅm"_êéPß]6yåò©‹­t9!8áÄŸã²ßʤŒ¬wûÙEÌdk31¤Ð7à&þîàPœ&ÎqYÒóG~– òA]9ŒÍd¥È2›?f^²L Ë&÷†É[mûMʘ^r¥f˜¸ 3%ÈòžkâÈÎÄmbH”Wn@W—˜ˆ4²a2¼–½íÁE^ùs"ÞÈ&Á9&|U¥p“ýTf_&ò†?2¿,k™(†&*°ÑCHÝÚ!!µÿõ¼œåù÷<‡4õ|Vù^§ü{ |=™§T׎°©OvõÉ¡>EªOQêS´ú£>Åò“-\}ŠPŸT6‡MÅaSqØT6‡MÅaSqØUv‡]ÅaWqØUv‡]ÅaWqØUv‡CÅáPq8T‡CÅáPq8T‡CÅáPqDª8"U‘*ŽHG¤Š#RÅ©âˆTqDª8"UQ*Ž(G”Š#JÅ¥âˆRqD©8¢TQ*Ž(G´Š#ZÅ­âˆVqD«8¢UÑ*ŽhG´Š#ZÅ£âˆQqĨ8bT1*ŽGŒŠ#FÅ£âˆQqĪ8bU±*ŽXG¬Š#V…«BŽU!Ç2ä:ááÚc„öh×Úc¤ö¥=Fk1Ú£†"BC¡¡P×·çQáa‹Ð°EhØ"4l6 …]ûj×Ú`× 8´68´68´68´68´68´68´684l ›Céa‹Ô°EjØ"5l‘¶H [¤†-Réa‹Ô°EiØ¢4lQ¶( [”†-JÃ¥a‹Ò°EiØ¢4lѶh [´†-Zía‹Ö°EkØ¢5lѶh [Œ†-Fãa‹Ñ°ÅhØb4l1¶ [Œ†-Fëa‹Õ°ÅjØb5l±¶X [¬†-VëaÓ–žM[z6méÙÂmÚ£C{ŒÔ£´Çhí1F{ÔPhKϦ-=›¶ôlÚÒ³iKϦ-=›¶ôlÚÒ³EhØ"4l6 ›MÃfÓ°Ù4l6 ›MÃfÓ°Ù4l6 ›¶æmv ›]Ãf×°Ù5lv ›]Ãf×°i Ħ1›Æ@l±i Ħ1›Æ@l±i Ħ1›Æ@l±i Ħ1›Æ@l±i Ħ1›Æ@l±i Ħ1›Æ@l±i Ħ1›Æ@l±i Ħ1›Æ@l±i Ħ1›Æ@l±i Ħ1›Æ@l±i Ħ1›Æ@l±i Ħ1›Æ@l±i Ħ1›Æ@l±i Ħ1›Æ@l±i Ħ1›Æ@l±i Ħ1›Æ@ì±k Ä®1»¶Û5^b×x‰]ã%v—Ø5^b×x‰]ã%v—Ø5^b×x‰]ã%v—Ø5^b×x‰]ã%v—Ø5^b×x‰]ã%v—Ø5^b×x‰]ã%v—Ø5^b×x‰]ã%v—Ø5^b×x‰]ã%v—Ø5^b×x‰]ã%v—Ø5^b×x‰]ã%v—Ø5^b×x‰]ã%v—Ø5^b×x‰]ã%v—Ø5^b×x‰]ã%v—Ø5^b×x‰]ã%v—Ø5^b×x‰]ã%v—Ø5^b×x‰]ã%v—Ø5^b×x‰]ã%v—Ø5^b×x‰]ã%v—Ø5^b×x‰]ã%v—Ø5^b×x‰]ã%v—Ø5^b×x‰]ã%v—Ø5^b×x‰]ã%v—Ø5^b×x‰]ã%v—Ø5^b×x‰]ã%v—84^âÐx‰Cã%—84^âÐx‰Cã%—84^âÐx‰Cã%—84^âÐx‰Cã%—84^âÐx‰Cã%—84^âÐx‰Cã%—84^âÐx‰Cã%—84VáÐX…CcU84VáÐX…ÃîLkºÆ*«ph¬Â¡± ‡Æ*«ph¬Â¡± ‡Æ*«ph¬Â¡± ‡Æ*«ph¬Â¡± ‡Æ*«ph¬Â¡± ‡Æ*«ph¬Â¡± ‡Æ*«ph¬Â¡± ‡Æ*«ph¬Â¡± ‡Æ*«ph¬Â¡± ‡Æ*«ph¬Â¡± ‡Æ*«pxXEHÈ?­;4$¤]ÏsÃ=N>¥ £Ò@ˆ:#gpu¡®Æ^fT߀ûˆ:Çùÿu5RxÚ¨¡ÕÖë¡ÕÆRªuqUc¯«‡ç¤T¹Tö‚¼ê ¶ €¨¶y™Îjì{0“W ÛwXs%°V€Èu=ïÇž•SóL*Ñý·¯¸`ªVÍWÂÈOÉ ¶êPg…×{0,£䙊¯÷`ªVÍWÂz†]V‚ü\Ò©†Uy¼®+.3«Â#_nS ë½}¯ Ùfh^U ›6ù±”ïÍñüè‘Åzáöu‚àhýX^‚­üX¾žƒo‰7Z?äg§ñc 2¸OöƒUymòcù:7Yt*øQ㙣)/`€Ïeî5!^Ý3™&¹Þu5ˆ¾­[ãE³A>–¯bù±âp½½†?Çpn x ¯¯¹lTV{4.küh<§Ùc9»“½FÒ¸Zᨃ²^ƒêU¶\w«ya³l¤ñúõ*`ŒØ²–(`L0§Ù£×\x=zQµñW¯íÍrøŒW¬\Ë¡>Êz$µmþô}ôš7ãG/veYÖ˜v¼°yóTËjÚ£_½ö;o‚±ªfÜ¡@K0Æ{‹qY¯¦{= sa×û«Õ yKÞ²ŸÑ–ä ÁréY ƈ-EÑ*x4_ËGcÁÅ ˜±0âõÕ ˜×VgI%m(†n<ÔÆôA“¬¬@d.C9ÊbC^bL“:©Ù¼¬šeð¨òM»é­&hz¨·/çzÕ1žˆ ˜ªÑYá §qÓ˜K™DjfNl:ÍÚ”5û°rø»^Œ×€Àý,Ô[oÁÃP%÷Ö¡M ?zi‚¨!˜ˆŒÆÛh¯L3äV-ôÂê{EË£e¬<ðš/lÆeËÉÝtë²|ôÂflײlo¹‹Û´šqcÎøÑ˜½†Úk¼ýPë‡U3Üü,% cÙ×XMöújÜ cUÝ‹ŒáZj^Æ«Òkæ x -âæ'ÕYÝd¸ÆÜÏxÛ4ÞAöh w°AYcŽ`Ìv-5/K}AÀ&œ‰qÜ”¬Œ¥HÝã)ÚÝ‚1ú‹ÊÄ-'¯lÝãq÷ML·§±HsŠP{Ý«µ?«È”†‹<ƒ¯Æ¶c=I`{F¼ÎRA3Þ½äã^Þ›yfA½¾ïgèãÆ6 oÛ¿¡±ÒX,²4ŠWÜÂîc$GÔ(£ÑæØbt*.v™×¶íEgÆ,'ÀÚ–n¨š ¢ƒ‘d`à§4¶§xuÁ[²34)Xì òlO——˜+ˆK>}rˆTó¶J9†,È«€Žú|àñÍüè“ÁðŠ2žÁÄê›!Ó‰×ÊóÃÝ_‘ýÞ÷Pø3ã^¤Z‰û˜[›¼¢òŒJòcR bü˜o¾²c@Fqp»ª¡MÝ›` Z‡tx/(ë5æ-š¼çÍ€óYvøIº2W1K¼y 1{·ŸQòøŒ2åAò£×–o0ܺ:~°y0â[›‡!u[nô¾éÁØB¨ÓO}óxcYÓ€œ,…KeÝG †!={˜d,YúV|Yù ^r‰¥´m ,HƦ_«ÞÈék<'^snìÑ2–|<Ž2z´ô { ‰qK`ƈ-HŒ‡ÄÛ³g¨©¯c?—åHZŽ™± 1Q¯ø£¥ùî´x´ Ž1æÆÕŒƒšŒ-¥^ÕŒ#¯,UÏ@ ãÆ¼ÏR× ®w¼P1A.é ½æÂ—ÛÇâÑÛ³T`d‰6ÖM÷ K¶±Y`6þ[Ã]8>tVŽ?ãðKûŽqì€×˜ùŠˆ±Ø¨*è+÷C¨®"£b5šRƒ‰•¯$ÔÕ¤PûŠ0*ÜëjsidA¬OÞ¢q'Ëà`cȘ}yñXk׊úŠ®²@aió·,ë‡cîhñU0Þ[ÂCðãÑÂ)à½c  –a*ÆR‘Ni7}´ ý7žc_Îè@¼àþ—µ”â‚þ*‚¥Žf)(!X=Ñ8Ò‡ Û‚~Õ áÅÆØ|Ä…Erù|mJfÐ!(:eP,©±õt¦ÃJÖµA¿Ýº±Œ¬ìr… £ž,MXƶc÷´±™ÎøÄ•ñ£ñžc=ã½f u!_A7áKÆ>ΘúmïMBÆÀ‚ŒÄ«83¤9–®lV3ïÅ!Œ7QËÎxÃ5ªyôµ9[p4Á/n$™K”AKcÆŒ#b«àÑò„Œqty ÇÐ*þh<¾Æ’б¨¤e䲯ûˆ1\K10…Û‚å× ³ã1³<{ª«ÀãS >#«]ëtx¬Z^äãéÀ«ýx ÒT•p‚j{´ ©°|´<Èi ˲>äbCAÔ²¬å8XZ#æé°.,‰ ©¶Ç -ä/Èc ç16ZÚ(-ÃZ¼!œÆòÑ2ŒÁøÑØbrª}連 Ê묖puaèˆ-šS–*_,ÈJm5äìÆÇ&½ƒJ #Õ} ‰×˜¥T‘ÏSw5GÕa3ˆ`6ó:«C)ø|Û |ÜÈ`ø¨c¯&nxyÖ|»ý|ôÀ8¢$È(¹vžr¬Æ[Õ«1 ¤"A•`;E qàšªÐ¹4¬‘yi”×ÎàõÕlåW4 +¹ ·-g°8 `ÉJ¤É÷c›®4B³<ðqÊÛ`¶ÎdÙG÷XYm0‰¶“wm‹óeÁ¶Áä÷¼Š?þÑÃéÐ?ÝùÇ‚lƒÙÖç/û4–“Œ &Æ!²Ægm}“¦Xuã Ë{ù³q”·Ë,¸+¹N³Ç@¼öÆNMKç®e /2¶>T…ŸÂê(“q˜GÕ^§i¬á_ïçíôçeÑÈq5¯GË‹œŒ¿ú¸è+€k ŒoX°¼2Â2 Awm™Œ-»‰f1> çë G#{·qtˆñYãÓ•–†Ê E-WÆÕ¼†Äc.FA²6÷mðõÏUj¯i¹LùŽññPãØdË»p¯1ñ>Ùj( ùû±Šhôv x‰å£ŒŒŒ–aà–—¹ O­eYãGË@ãëŒ}Ä{žØ2¾PÖø&šÀ¼Ftf<Ô–á{ÆhãØ:ãGc¡Wgà0jÍœb(™1Áø§c¨Õð'Cû‡ñ¹Acצc­V§ Í.î¨ÆŸÑ­c¡)›³ü9 Û- × áWã´|0ø€¢ÁŒ¯á0£=×…WÁy2ÿÈÑG­@ÂG½Í—†'Á ¦ÓØ:t*~ô׋›œb6Üß-o!³¼›, gËëRwF㟯ò¸P ˜±Dn<|Æ ‚±Ld<¨Æ×Ÿª ߌ—Kç ‚<Ìb¬CÿD‰å *cA(È– `r¨Çò0k =Xž5y ¦²<ó`‰-àïKš !X^Aa\6 ß;±jŽñ=’Æ&Æ‘1Ãóe£ø/x R!¯¸J¤Aôô}´ü!ã›Ácù :j1j¼¸a_ƒ”‚”5ùáËèFãÍÇøŒG —ÆéT°<ÓÈQ*KÈeJÆ|Òx$Ù¶ñ…®ÿ×RYŸ¯¬yô“&} µ‘¯ÒØÒmÉ}¸g¬Œ§¨ÌLÆÕÌ%Ä•¦ðW[\En×ýïèjãj»êTüF5¢–wGcíÚ$rÐKó蟥÷ÜXÔÝ`@›²àë÷¤¸¾@tRË;2Œ¬¹Æî|ÃM¼w•©¾©§Ax•÷‹û¶oTRüˆc ò4™Î–®Ÿkë[2„ºêÆ6—JŠÄóbUÍOß½Éû´‚åÂñCeö½ö}xE¡Ò¥å]ÖVj›Áqäê3žÐ¤ºÕ£ît§’A$¹qˆ»1/¶¼9®r~Æ]×BËX?Ë(K+¢×£±Bµã›ü¼MÕVú»ñÁ?.àõÈãW ­=ƃaãÈ£A /”ö›åóì‚¿Æ»†N€ñ½“Y^že|a“_÷h‘ä¿@7eþænc¾(c›šë‰¸ПøSßÊ€ñNbÜm˸"ãGcƪ»=[×Bã]3Óò–þÇÊ>ÌéÁ¤Tåþp¡Á´ú>7e÷nÌ Ì÷D÷ÇV7%öªWµ!ñçÐõq3‹'æ›QW÷á¨2ü™J½K°Rï ä0CkÖøŠgcDZJØo¸râÞØ4lá, ä/ãGWsZÉå„ÊÏq Ø|]Ëb´;ZúãŒå?. Êíhé»3¾[ÚÒh[e–hèy³ÔN¼i8Ç^¼ý$V‡P,ƒí㻌ÏÄGÍXšf¹_¥jï¶ ³²¼ÏØúbxC­ÛxC1V%gÞò”ŠåÐA^ dÌH}]¿j!…ZžA3Þ|ŒC§|Ä'ZÝfl–`u†'ôýøyô T芇gøú±Á¦!— „OVü¦[ãCu_Ò–ÆËsœÆ6; *³Wã ðãâS ƒ…ñ†âÛv.·×kº…mÿÏ óuãßÛ2¶=é"¼ FÝðk¥¤µ¤ã²ÆçQ,{lp…¡ àãG—­V·%ï äÑø¬®±!Ï·•Í”~‰1«Š{¾*|ºÞÒðh|!°¯Ã…F!8–±Ùý0™qYC;›u¨¸xøØ·Ún}•¬¡Ì‘fˆÊ˜gŸôòû¼Q §òÑo›—üèã®ÆL£Y0>.a\MÁÀhZÇ·ÊàÛæã´¼U|¤·ʲ éøtÔ˜Aè±ø®c1Ÿ&0:ズ bßu ®L1V }\þl:–'ùÌëXçšÏ©qp¡œk¬¸t"® K±|üÚœëÅæ¨#Qc —‚ú=nÖœ•Ñ‹˜}ӵ啿?ñn­Z-_WQXjžF"¢1û³æúVZI Á_5fU$\ÕN‡²|´4”>ˆÀJØ6Öì-«9’Æ*o¿³ˆI7j&6¶rIxWÊX^~d|ŽÉ×ùCqÃpZ,?[Nw kl.16Ö9Ý–q€Æv룉†.*ã7 ¥âW-ò£]wþ –~4c§†6cJµä“–vFc9ÍòºˆkôèKX6‚࿱Øä,RÒx謥•;ÙØžm¼Zü¹}Ü]§¡ò˜`è´¶´]X:4 TFc¿±­Kè¶¢bto¾¹rj”]ß:ŒŽWø†¨ã/•GUm—*ãúã „:VêŠÌ_ ÜÀ˜ ‹?4X±>ÜOFÝͯWÒEÜú63[ÊÐÆWÎøŠŠòOTɳg¶\Ìgç¥fWBì2ŒÃR½&Õ`ÅÈ{“±ÿÛ«¬±ç-P¹Aã}órKñÀÇ=«U–Œu^ã0ì@B}ŒP–BoÅ}¾D˪ü 2ãÃÆÒåd–iy¡O žï@ô¡@-­–Æ¿iÑHœ“åOÖbá7ß@®0ªøcçUüñt¸`äã’Óá×`ÿ7~¿À2Pòt°™Ÿ7˜z”oáÍÿ¸+S«¥ýÄ÷+ßžpãX£ Q剢c­&šœW¿|JãFLºÀœ ¨«2£Ã^F#gVÁ?.>ÐÙ6M”“R8ü¹NÂk`¬Ç,Wjmk‚5Õùˆì¨„é8Ý©DÕ˜YŸ‚îDœ“48è,ð¶ÁŸóÇÖüÌÂdirvÓ"&Vƒ AôÞgbìðÉØé`0&fäø˜ÚòŒÞV¿ÀB´æKƲ __-øˆVô5©Vq­Æ_½–Všù®+Wðg‚­|0ÆÒo5×/ø~GrUÁ}³ ´ÕòˆÙƇpkøÕ8–ÌÒ$eüx:¨9–§ƒêÈe>ÆM·üjÛH¬H|DoÆi‡ø[Æiœ³iùhi#¶üjùèË¡ÔOÝï5Æ’‹C3Vå­RZ†/ZîµüZ§Ã®gùhÃj8-ÆA@>|Ú 0ö!z#ˆÇ@NG‹"N`ùUk ¶tØ[úÔ›ÆB»åÂ±Ž‡·>½nyöÑXÈ Äœi`ÄP-~0Ìø˜¥¯sðF7MYÆxûÐ+ ‡i¬S ÑzÊ1âеɋ^tu„ÛwóLo}9›ïq³0ÃV¶y«-DÕÔ´¬ºŸÂÔåZ†˜ò»SÆgc,Ësb1¸ëŠ_AeNÐÖ¿ÚluÃGŃü=£ &HU|Š'ÈG«ûD¬/°†`l²ðÿnŠþ© sA†ËXmËkׂ| ä²*õ1lìûÕöè×%Ÿ¦àíÔn:1>‡$[ d³°<™d —õÙ“SOQ•ax1’ -gÞøÀ‰q5ãÓÙ<rO”%_7.k¼ òä¡Ãª $ ±jcï|èÆ†§ÛŒƒK‚´êUÜ.xú>ZŸq2¾%ÇÒ/S™KãkE-W€åý=Æ7ýy=za³>:䇮{ µDƒ¼›§â÷ø"bi 9UÆd`¼‘_/`É`-IÑ2¼ßò6ãcÉ–_-/ Díä¶VK¹ÍØdQq'‚±÷ÍØkìr³¼®Ñ®ñ£1÷ó}½Œühì ð}±O ÜÏ´‘AÞ—`,N_ p+.²Lƒ|®r¬°#ÏÒ5áƒyQ •ëãLn€wÒAA:Ʋ U8ðÚ2†Õr2þ¥+˽ÅRÛõzôK+õ-€[ZL,íI¾CêÖ ©]n<ËóïyiRëYå{òï-ð=ôdžRõŒI¦ÚÆS_m3§_0 BË]3s¼–1uö ï×yK£¼_çOšåýº râ¸ñ^ ¦,òÎ>ÁëÕvÁÄIÞ¹Sb…³f x—ΛïÙ6eæRáuÖdÏkHÈ?ø¯ïù¯…ì† æMŸ5`Τ ó•‘Q3ê*ßêÿ«ûÞ`ÞìŦ_0i¾P½YãLœ†!U?Μ[vš3ü?¯ø‚FŽ+ܾ5±/˜5¯ìýWZÓð'†?2þÝý4ìØ„áÞCÃbïÿnÂx*\ÐúÏöW>CC_=çëO®º‡†öläÈ?šBw–Õ»çìTÐ÷Ùûç<³”òoïrî-ÍÊ(¿íÒ.kþåm»çä¯:P^gÃF£Ÿ¥!C†µïßf ^R{ëcO¦Üû§œßñáÙ”[oTÉÚ&(gtìOó~»˜m.é¾êÄÏ”ý}Æ7­bOPvêó·oyüÊzhöÆû÷怜ºIÏ<¶'2Ž{xb÷†”ñÅ}±óf¢ŒÁÛï½÷¦ÈõVŸ°ÛîO ×°ñoç?CÎç_Hí}ÝõäÌÙ¾øF‹(ýÓ†ã¿ý5Jùìß7XIi6_zσ (mJÓ5_É¢Ôc×ÿðÇÌ¿)uÕŠ^“îïG©g¿=zÿWG)忬¥7:> ”Øñÿ´™¹‚èƒW?_öÁ2¢Õ?ûå6"jÝö·K¼NÉYM7åžCIËCf¿ßäKJ¼;¹ÑvûZJøàÃg{n¢„~›/¶ç½EñK~›Ý|Á‡÷Ü-?6g*Åá.ÊyëŠÚë…µ#—PÌÓ¯<˜@aSû†6µ‡ÜAÑ“o˜ÞmDŠziÒö’+PTô]?ß~Þ;ùxÃf¯l¹„"ƒCÒÖ¾IŽgO üàÙŸÉ‘Õ䥾›3Èþò u:-Iö¼u7¿h»†l‡ž¹;ù#²Í¬_÷ãŽ)â‡ÇÊ..AËÞ¸óêß=i㲞|ÂoopƇÇPxÌõcé[øø…»bn/¡Mîº÷ÑÔ0~áøiÏ|Bý}ß°'‡Sÿf‰·ü¶úe?¸ÚñåÙÔ÷ÊÈ¥lÏQŸÃcžßoõ‰yè¶Ø/Ÿ§ÞÛ^»}ÒÓ¨w¡wÿp[,õšÖöÐúëSϯÙתõ´?bûqÃdê±óÁ3‹G¡i)Oýyp6ußíÜj»¾uÏzᮨŸ~ n|sô×OŽP·1ñ+ÏïN]ßnµçרëy¬èþä9Ôåð¦1Sný•º¬x#©Ó#Ô¥õº3r·&Rç»æ>_ÔbuάվK)…}sÆžoWÌ¢°µËÞkûíyÖ÷– ­ÞKçìšðΓ»ÚÓ9mnü#ÿìê4§Ç͑ÚPÇÄ>úr ul½+¦Ý7ÏR‡!¯N~ñú8j¿rñøÜëR»ë§¾{IµëðGl\Ï?¨íÊ¥;ß·žÚ<‘ùkÇÂZÔ¦O‹ÃÖ>C­¯]~Õæ»¨õ™Ú„|5Z]ýEë)ëÑÙ?¿øéŒûGÐÙnø}]ñ;ÔòûÕ›ï‹ZB- ßݘò7µxkÕñ›÷¤9K—½pÆ%ÔüÙì[¶ÎØBÍYñÉ'¨ÙžYo›CÍòÆÞQꩺ+7õ¢÷—Shæ[W i:Ÿš.oTtcÞ­ÔdýÞ«¿Z–Eg½²ô•†w-¤Æ†ææͧÆëZ¾»™e¶>£Ãw×Ò™3.ÿîúDjxEËzµ Pƒ»;¿»©q :£láù«JºÑ];ö+lz ÕÓ°ïðÁ·P½»?œ¿f_:Õ=òÕì¾]RÝÔþ-WÏø‚êì<ÑþÛ⛨΀ÇJלí¤ÚÅ—½ÙÀ½jímóÖ˜-T«á°ÛýO} ¹&¿ÍÍ—µ¦ùé[žîšüoý‡b<–ü÷ÁÏ‹g…½–ü×›v_0¦sò‰„å׆}°6ùŸêÑדïK>þMãË ¹#ù÷Oo¹?f@òïµfOx©ÞœäßvoºkÞÖä_cÿº¯–;;ùXAó̱«“™ÝâÎn½^Jþù–ë ØÖ'}ÑöÝ-wI>ò~ÜO±lJþig­³ú>ôJò‡G?>êø¶äÃë".lþÒóɇ ë¿ðd×äïß¾vê¹õßO>÷~çw|—ü]ý‹rF,{8ù›¿m ÏûOò×{êv˜¸øhòWû? yrÁ÷É_~9÷Ɔ'¦%ñÓ/CËú\•\öcÄC/¹f%— üæhzÒðäÏžkß¶M7_|$¤|g½µ&­Ú4„÷×YTþ!„f…! QÒó˺‘–"-FZ„õÏGýóQ&êÏDý™¨?õg¢þLÔŸ‰ú3QêÏ@ý¨?õg þ ÔŸú3P:êOGýé¨?õ§£þtÔŸŽúÓQêOCýi¨? õ§¡þ4ÔŸ†úÓP*êOEý©¨?õ§¢þTÔŸŠúSQ êOAý)¨?õ§ þÔŸ‚úSP2êOFýɨ?õ'£þdÔŸŒú“QêOBýI¨? õ'¡þ$ÔŸ„ú“P"êODý‰¨?õ'¢þDÔŸˆúQêO@ý ¨?õ' þÔŸ€úP<êGýñ¨?õÇ£þxÔúãQ¿õ‹P¿õ‹P¿õ‹P¿õ‹PêCùq(7ùç!ÿ<䟇üó.òÏEþ¹È?ùc‘?ùc‘?ùc?ùc?ù£‘?ù£‘?ù£? ù£? ù#‘?ù#‘?ù#?ù#?ùÑ?ùÑ?ùÃ? ùÃ? ù…È/D~!ò ‘?ùC‘?ùC‘_€üä ¿ùùÈÏG~>ò󑟇ü<äç!?ùCð}Þã}0Þsñž‹÷¼çà}Þá=ïÙxÏÂ{Þ3ñž‰÷ 彺÷™ÿ¯iﯳÝåB(6DI#‘F!A:»LIxç}(é¼p%]@JÊ|#éÔg>’‚z¼ÎÁûœH÷Oàç!E}ÞŸæ”*é\¼/@;æ _sQo¾'q{—÷+GšŒ”÷9;Þy1ÿœS‚tRÀŠv2n/RÞ ù,GÌe8hï«s€wàò¾Çû³ºÏï?8óðÎûäàç}÷qÞ—ódž”÷iæKÌæä¡ÝGîE 8¼_¤£¼o3ÿa¾ÌûIÊÏE¾ iÒ¹(ÇûNÒT¤Ì—Xž`¹Œù&ïÇÌ'óñžÎxw>¾/EŠ|æcixï‚”÷m–×xŸa¾Í|z>¾3f¹”å–Oy¿æý€÷UÞÏõû+ïÌ·Ye~Îû/ï³¼ŸÎGÿxæý™÷æïsKÐÎ"¼—*)ø¸´Oð~¢îçxç}÷–{æQRÞ/xŸa9h~ð£Ý,Î\u_A”åFUBy–ÇX?`yånÞ—y_c9K•×PO•»Ð>½|Çò?ë#,¿ÍÇw–÷Y¾›7GIY>ù¿öÍß·­*Šã¡4)‚ÄÀÀà¡B2‘¡A0TU¬f©¤†d``°I­´’k;Ï~µŸßu Oz’ßÀÀ!B 2000äOÈ_PÑô~¾×Žc”&NAOß¼{ï9ßsïÍ=çܓܖìâ{Ô}H÷ Ý{t(Às|¼¾ æÁPq[q\ùŠÍ_èW~£|Çæ?ô+?R¾dó'ú•_)ß²ù—æ±Ïüè·÷;ätÿÓ}ÐÞËô8 ˆ¼³¢ÇÙÑçl•À&ˆ¾úZèk¡¯…¾–Ñ—Q|íL»Î“ΉΩÎIûu~įóëÁãc¯ÖGþ¡ ~Oä§;èëj|ž2úÑë!çÈ®ÆÃçÓß‘ë0^qÁÛFãäo<ÆÉ+žë¼ëœéžÝ·C{§ b·Í 4~Ç âü¯ò‚.óé`·ò€N‚}à&ãuGã›üÎ' ß&ú|ìPÜU~¤ø%¿¡x¥¸cýíÆyØá1_½:ï:_› üœâ­üŒê<òË:¯òòƒòc:ߊCòÿÊ#äÇuþì}9ù¯€~Ú}äüÄ âüˆü¹Î¿Î£òëáí¡G~Ö-a/í.¼ªë(Pž©ºÏhEùT™våŠÓ¶ƒ>ÕUzØmë1|+)Ž{èSÞã¡Wñsô¾®<@uÕsTßQHþÒç[qW÷}Å ¿ ¿°dð!úlÞ€¼Í ˜‡­›1?ùc—~åOò£ŸƒÊ_T³u=é…OyÑhPyƒ‹Ýʧz{ô'´cO9åÁ=äåÇUÇq%=.vÊï+/Pþ£üCù¡ò˜ÑxªüJù˜­Á£ú’­71ÎÖ£ÐgëUÈ«ž¥ú–­w!oëašrÄ«%7ÑësÑïì̓ðô |½o¯ ÂßCŸ½>ú|ôùèóÑç£Ï7ú2&¾N½þÚ·é>€è›l’A½½¶ž‰ÝŠ#Šo¶Š^[/EÞÖS‘?¯}i  ºès™·‹^—yôôôê‡?(Ø4Aì »‚û‚=ûì ááááááááááááááááàààààààààààààé¿2>þÑ`r¼æAìJÁ÷Á ö&Ëààmy$Ì#¹ Þk óKL`[ê~ ~2¯~ 2¿þ7 óì 2ßþ÷ óîÿ2ÿþÏà.ø ø+ø¸þþþ îLs ëš²®)ë—²~éÈú¥¬_Êú¥%p üü ,ƒ¬kʺ¦¬kÚY×´ à#õNÍzgŒºy~ñ`Ü÷ þSqAù‰ý»%ãžñþ9È[š zOŒ/È‹3Ø=q¼A¿âŽò¯ÉâÏOÿÙø£û¾œÜ4.ð?¯¸ÁÁÁ¿5 ¿õˆ[øÏ-ì‰ñ“1öÄøÅ»bü`Œ}1~/ÆÎ˜¸rÚ83˜¸3Ÿ$ bò*È<’×AæóÜã-ñ"a]âÅ©ã0ëÖ'^ô=>³?)û“²?·ÙŸ´²?-žŸ¶~]Gãüê®Á«ž­z¾êRªÙÿ÷Ù7Zÿ¶uþ2ˆÜ‰uqäŽÕÇ› zÎ\'G¯­—£²ºùô^?½×ƒÈOïõ ü%šÞëÁé½Þà™ò€Â¹åÓ¿gƒè{æ¸|øH*«GRYF½ô°QsTõU«Ö7Ú÷ƽ˚kµ«Mó˜ŒçU•vãÁñÇ\³ëo†º.~ºç?‡õ^Y/,¼{Dbδ d^6 Fêè[/ûn½áþCÉãLæ…Ãö·ôÞl¹tü§µá¶£/O?ùO—6œjµ>îcÆ©Þ×þâ†SñÎ,}¾Ùâ­µ|®¸\Êç>ÒÛ+O?Wï,æsÚõâÊð€ËGÇÏ<:¾ç>ó¹•;×ó¹Ò‡+ãfãŠz—:++Æ«ˆ †˜¶Û‹ïWýŽTg¯|k0é±ÏU33ÿççªóO€_—V»Ò–G¹´Þ¨5 ÔîoTÌsÔÇ#þHÂÃ6Í¡æW¬R¯7žè½ß¨gxoú5§‡Œç=bio3d/data/aa.table.rda0000644000176200001440000000256114707230357014336 0ustar liggesusers‹íW[ˆÜTNv·{™vÖm¥A4Þ+šÅ¹ít‘Ò3ÍÌn¦[7ÓuV¦2™™ÌN 3Ù&íˆ/R¶µH)E¤Ú+­|("R|’²ŠõE)‚>ˆØ""EêõAZ<É̹$Ùâb_»Íw¾ü×ïÿ3¹d)(†`àÿA‡ `Xfˆƒ÷QYž´äª¦0ÌàÝð¼^ð ÷Ÿ&2 çf1”r$g39÷¸€ ˜Æ¶éL ÁL ÛfH°lªˆ`AĶ…¹<‚RjÁ¢H஬¸€ÙùD—¾›ô&‰¸‹4¶²)q ‚”$0Oà3–ˆ$Y1›L¦ˆ$"‘$I`Š@Ü…H‹1 H'°f{…QÏ"+âz³dY,/à…™ ‹X)ED-ä=ÛÂ"=YdÏ¢Ô,*؇Ê΢ýb‘&l44v/HX•É¢ÊXÔ‹fÆ¢Ù°¨iv’¯Â9_©· D_§âÿIŸ~5ü .cÆ'%ÌۓûVnüþqê ¨‹ízéÚIP>rêxþû§Ayy|~hÛk`áÒ£?úæ&8 NT³—•Áú³÷~0 2GŽ>1°a6Îs+o‚òȆÃ÷Ê#O”·ÿ*Ô[_~zT•“Mãü 4[ÞþçÅ`ÿÊ5› 3ïüzúC,Î\Ø÷Ëòý ®‹ïýü]Pú¦»þ>Øß^þ¬ç_;»ôö· Ñ„æ÷]åKß=øõÕ ¨¬¤?y.¶ ¸´Å. T®¼*¼þò0>/¼b»Ä÷ƒË½<•‡Îþ(ýýîß“M—&ª·äQ=Êòåëïýóî·ÚØijG#öhì†òÝøT¯ÞÔ>uÔÏÚ27A»~µ’8õzþ30üçÝ ZÓìµë­"uÙ’'†³uÌMûúòz»¥bio3d/src/0000755000176200001440000000000014710164351012043 5ustar liggesusersbio3d/src/RcppExports.cpp0000644000176200001440000000456614707230357015061 0ustar liggesusers// Generated by using Rcpp::compileAttributes() -> do not edit by hand // Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 #include using namespace Rcpp; #ifdef RCPP_USE_GLOBAL_ROSTREAM Rcpp::Rostream& Rcpp::Rcout = Rcpp::Rcpp_cout_get(); Rcpp::Rostream& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get(); #endif // read_cif List read_cif(std::string filename, int maxlines, bool multi); RcppExport SEXP _bio3d_read_cif(SEXP filenameSEXP, SEXP maxlinesSEXP, SEXP multiSEXP) { BEGIN_RCPP Rcpp::RObject rcpp_result_gen; Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< std::string >::type filename(filenameSEXP); Rcpp::traits::input_parameter< int >::type maxlines(maxlinesSEXP); Rcpp::traits::input_parameter< bool >::type multi(multiSEXP); rcpp_result_gen = Rcpp::wrap(read_cif(filename, maxlines, multi)); return rcpp_result_gen; END_RCPP } // read_crd List read_crd(std::string filename); RcppExport SEXP _bio3d_read_crd(SEXP filenameSEXP) { BEGIN_RCPP Rcpp::RObject rcpp_result_gen; Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< std::string >::type filename(filenameSEXP); rcpp_result_gen = Rcpp::wrap(read_crd(filename)); return rcpp_result_gen; END_RCPP } // read_pdb List read_pdb(std::string filename, bool multi, bool hex, int maxlines, bool atoms_only); RcppExport SEXP _bio3d_read_pdb(SEXP filenameSEXP, SEXP multiSEXP, SEXP hexSEXP, SEXP maxlinesSEXP, SEXP atoms_onlySEXP) { BEGIN_RCPP Rcpp::RObject rcpp_result_gen; Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< std::string >::type filename(filenameSEXP); Rcpp::traits::input_parameter< bool >::type multi(multiSEXP); Rcpp::traits::input_parameter< bool >::type hex(hexSEXP); Rcpp::traits::input_parameter< int >::type maxlines(maxlinesSEXP); Rcpp::traits::input_parameter< bool >::type atoms_only(atoms_onlySEXP); rcpp_result_gen = Rcpp::wrap(read_pdb(filename, multi, hex, maxlines, atoms_only)); return rcpp_result_gen; END_RCPP } // read_prmtop List read_prmtop(std::string filename); RcppExport SEXP _bio3d_read_prmtop(SEXP filenameSEXP) { BEGIN_RCPP Rcpp::RObject rcpp_result_gen; Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< std::string >::type filename(filenameSEXP); rcpp_result_gen = Rcpp::wrap(read_prmtop(filename)); return rcpp_result_gen; END_RCPP } bio3d/src/utils.cpp0000644000176200001440000000203414707230357013714 0ustar liggesusers#include #include #include #include #include "utils.h" using namespace std; // trim from start string ltrim(string s) { s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](int ch) { return !std::isspace(ch); })); return s; } // trim from end string rtrim(string s) { s.erase(std::find_if(s.rbegin(), s.rend(), [](int ch) { return !std::isspace(ch); }).base(), s.end()); return s; } // trim from both ends string trim(string s) { return ltrim(rtrim(s)); } // function get hexadecimal int getHex(string hexstr) { return (int)strtol(hexstr.c_str(), 0, 16); } std::vector &split(const std::string &s, char delim, std::vector &elems) { std::stringstream ss(s); std::string item; while (std::getline(ss, item, delim)) { if(!item.empty()) elems.push_back(item); } return elems; } std::vector split(const std::string &s, char delim) { std::vector elems; split(s, delim, elems); return elems; } bio3d/src/convert.h0000644000176200001440000000127014707230357013702 0ustar liggesusers#include #include #include #include class BadConversion : public std::runtime_error { public: BadConversion(const std::string& s) : std::runtime_error(s) { } }; inline double stringToDouble(const std::string& s) { if(s=="") { return(NA_REAL); } std::istringstream i(s); double x; if (!(i >> x)) throw BadConversion("Could not convert string to double (\"" + s + "\")"); return x; } inline int stringToInt(const std::string& s) { if(s=="") { return(NA_INTEGER); } std::istringstream i(s); int x; if (!(i >> x)) throw BadConversion("Could not convert string to int (\"" + s + "\")"); return x; } bio3d/src/read_prmtop.cpp0000644000176200001440000000710014707230357015067 0ustar liggesusers#include #include #include #include #include #include #include #include "utils.h" #include "convert.h" using namespace std; using namespace Rcpp; struct dataformat { string fmt; string type; int length; int width; }; dataformat getFormatFromLine(std::string line) { dataformat out; string tmp; string fmt; string type; int length; int width; size_t type_pos, tmplast; // format e.g. (5E16.8) fmt = trim(line.substr(7)); // position of type definer type_pos = fmt.find_first_of("aEI"); // fetch the type character type = fmt[type_pos]; // length is imediately before the type char length = stringToInt(fmt.substr(1, type_pos-1)); // width is after type char tmp = fmt.substr(type_pos+1); tmplast = tmp.find_first_of(".)"); width = stringToInt(tmp.substr(0, tmplast)); out.fmt=fmt; out.type=type; out.length=length; out.width=width; return(out); } // [[Rcpp::export('.read_prmtop')]] List read_prmtop(std::string filename) { // out is a List object Rcpp::List out = Rcpp::List::create(); StringVector content_names; // temporary vectors vector< vector > str_data; vector< vector > int_data; vector< vector > dbl_data; // temp vectors vector tmp_svector; vector tmp_ivector; vector tmp_dvector; // temp variables int tmpi; string tmps; double tmpd; // keep track of current fields dataformat fmt; string current_flag; string previous_flag = ""; string current_format; string current_type; int current_width = 0; // for reading string line; ifstream myfile; // open file and iterate over each line myfile.open(filename.c_str()); if (myfile.is_open()) { while ( getline (myfile,line) ) { line = trim(line); if(line.substr(0, 5)=="%FLAG") { current_flag=trim(line.substr(6)); content_names.push_back(current_flag); // store the data if(tmp_svector.size()>0) { out.push_back(tmp_svector); tmp_svector.clear(); } if(tmp_dvector.size()>0) { out.push_back(tmp_dvector); tmp_dvector.clear(); } if(tmp_ivector.size()>0) { out.push_back(tmp_ivector); tmp_ivector.clear(); } continue; } else if(line.substr(0,7)=="%FORMAT"){ fmt = getFormatFromLine(line); current_type=fmt.type; current_width=fmt.width; continue; } else { stringstream ss(line); // string if(current_type=="a"){ while (ss >> std::setw(current_width) >> tmps) { tmp_svector.push_back(tmps); } if(tmp_svector.size()==0) tmp_svector.push_back(""); continue; } // double if(current_type=="E"){ while (ss >> std::setw(current_width) >> tmpd) { tmp_dvector.push_back(tmpd); } if(tmp_dvector.size()==0) tmp_dvector.push_back(NA_REAL); continue; } // integers if(current_type=="I"){ while (ss >> std::setw(current_width) >> tmpi) { tmp_ivector.push_back(tmpi); } if(tmp_ivector.size()==0) tmp_ivector.push_back(NA_INTEGER); continue; } } } myfile.close(); // store last round of data if(tmp_svector.size()>0) { out.push_back(tmp_svector); tmp_svector.clear(); } if(tmp_dvector.size()>0) { out.push_back(tmp_dvector); tmp_dvector.clear(); } if(tmp_ivector.size()>0) { out.push_back(tmp_ivector); tmp_ivector.clear(); } } else { out = Rcpp::List::create(Rcpp::Named("error")="error"); return(out); } out.attr("names") = content_names; return(out); } bio3d/src/read_crd.cpp0000644000176200001440000000463114707230357014324 0ustar liggesusers#include #include #include #include #include #include #include #include "utils.h" #include "convert.h" using namespace std; using namespace Rcpp; // [[Rcpp::export('.read_crd')]] List read_crd(std::string filename) { // out is a List object Rcpp::List out = Rcpp::List::create(); StringVector content_names; // vectors vector coords; vector vels; vector box; // data string title; int natoms = NA_INTEGER; double simtime = NA_REAL; // temp variables int i = 0; string tmps; double tmpd; vector tmp_vec; // for reading string line; ifstream myfile; // open file and iterate over each line myfile.open(filename.c_str()); if (myfile.is_open()) { while ( getline (myfile,line) ) { i++; // title line if(i==1) { title=trim(line); continue; } // natoms and simtime if(i==2) { tmps = trim(line); tmp_vec = split(tmps, ' '); if(tmp_vec.size()>0) { natoms = stringToInt(tmp_vec[0]); } if(tmp_vec.size()>1) { simtime = stringToDouble(tmp_vec[1]); } continue; } // coords if(natoms*3 > (int)coords.size()) { stringstream ss(line); while (ss >> std::setw(12) >> tmpd) { coords.push_back(tmpd); } continue; } // velocities if((int)coords.size() == natoms*3 && (int)vels.size() < natoms*3) { stringstream ss(line); while (ss >> std::setw(12) >> tmpd) { vels.push_back(tmpd); } continue; } // box size if((int)coords.size() == natoms*3) { stringstream ss(line); while (ss >> std::setw(12) >> tmpd) { box.push_back(tmpd); } continue; } } myfile.close(); } else { out = Rcpp::List::create(Rcpp::Named("error")="error"); return(out); } // if velocities were not present, box info might be stored there if(vels.size()==6 && box.empty()) { box=vels; vels.clear(); } out.push_back(title); out.push_back(natoms); out.push_back(simtime); out.push_back(coords); out.push_back(vels); out.push_back(box); content_names.push_back("title"); content_names.push_back("natoms"); content_names.push_back("time"); content_names.push_back("xyz"); content_names.push_back("velocities"); content_names.push_back("box"); out.attr("names") = content_names; return(out); } bio3d/src/read_cif.cpp0000644000176200001440000001545414707230357014322 0ustar liggesusers#include #include #include #include #include "gzstream.h" #include "utils.h" #include "convert.h" using namespace std; using namespace Rcpp; // [[Rcpp::export('.read_cif')]] List read_cif(std::string filename, int maxlines=-1, bool multi=false) { // out is a List object Rcpp::List out; // keep track of number of atoms and models in PDB int natoms = 0; int models = 0; // assign vectors for building final 'atom' object vector type; vector eleno; vector elety; vector alt; vector resid; vector chain; vector resno; vector entid; vector insert; vector x; vector y; vector z; vector o; vector b; vector segid; vector elesy; vector charge; vector model; // xyz object vector xyz; // store HELIX / SHEET records /** vector helix_chain; vector helix_resno_start; vector helix_resno_end; vector helix_type; vector helix_inserti; vector helix_inserte; vector sheet_chain; vector sheet_resno_start; vector sheet_resno_end; vector sheet_sense; vector sheet_inserti; vector sheet_inserte; */ // store SEQRES vector seqres; vector seqres_chain; // store REMARK 350 lines vector remark350; // temp variables string tmp; int counter = 0; int curr_model; int prev_model = -1; int colmap_size; string tmps; vector tmp_vec; // for reading vector raw_lines; string line; // section type string section_type = ""; // mapper for column field to index map columns_map; igzstream mystream; mystream.open(filename.c_str()); if (mystream.is_open()) { while ( getline (mystream, line) ) { //cout << line; //cout << "\n"; // break if user has provided maxlines argument counter++; if(maxlines != -1 && counter > maxlines) { break; } // reset section type if we run into "#" else if(line.substr(0,1)=="#") { section_type = ""; columns_map.clear(); continue; } // set section type if not set else if(line.substr(0, 11) == "_atom_site.") { section_type = "_atom_site"; colmap_size = columns_map.size(); columns_map[ trim(line) ] = colmap_size; } // store ATOM/HETATM records else if(section_type == "_atom_site" && (line.substr(0,4)=="ATOM" || line.substr(0,6)=="HETATM")) { tmps = trim(line); tmp_vec = split(tmps, ' '); // include here check for model number as in read_pdb.cpp curr_model = stringToInt(tmp_vec[ columns_map["_atom_site.pdbx_PDB_model_num"] ]); if(curr_model != prev_model) { models++; prev_model = curr_model; } if(!multi && models > 1) { models=1; break; } // read coordinates double tmpx = stringToDouble(tmp_vec[ columns_map["_atom_site.Cartn_x"] ]); double tmpy = stringToDouble(tmp_vec[ columns_map["_atom_site.Cartn_y"] ]); double tmpz = stringToDouble(tmp_vec[ columns_map["_atom_site.Cartn_z"] ]); // always store coords in xyz object xyz.push_back(tmpx); xyz.push_back(tmpy); xyz.push_back(tmpz); // only store other items for first MODEL if(models == 1) { natoms++; // x, y, z for 'atom' x.push_back(tmpx); y.push_back(tmpy); z.push_back(tmpz); //_atom_site.group_PDB type.push_back(tmp_vec[ columns_map["_atom_site.group_PDB"] ]); //_atom_site.id eleno.push_back(stringToInt(tmp_vec[ columns_map["_atom_site.id"] ])); //_atom_site.type_symbol elesy.push_back(tmp_vec[ columns_map["_atom_site.type_symbol"] ]); //_atom_site.label_atom_id //_atom_site.label_alt_id alt.push_back(tmp_vec[ columns_map["_atom_site.label_alt_id"] ]); //_atom_site.label_comp_id //_atom_site.label_asym_id //_atom_site.label_entity_id entid.push_back(stringToInt(tmp_vec[ columns_map["_atom_site.label_entity_id"] ])); //_atom_site.label_seq_id //_atom_site.pdbx_PDB_ins_code insert.push_back(tmp_vec[ columns_map["_atom_site.pdbx_PDB_ins_code"] ]); //_atom_site.Cartn_x //_atom_site.Cartn_y //_atom_site.Cartn_z //_atom_site.occupancy o.push_back(stringToDouble(tmp_vec[ columns_map["_atom_site.occupancy"] ])); //_atom_site.B_iso_or_equiv b.push_back(stringToDouble(tmp_vec[ columns_map["_atom_site.B_iso_or_equiv"] ])); //_atom_site.Cartn_x_esd //_atom_site.Cartn_y_esd //_atom_site.Cartn_z_esd //_atom_site.occupancy_esd //_atom_site.B_iso_or_equiv_esd //_atom_site.pdbx_formal_charge charge.push_back(tmp_vec[ columns_map["_atom_site.pdbx_formal_charge"] ]); //_atom_site.auth_seq_id resno.push_back(stringToInt(tmp_vec[ columns_map["_atom_site.auth_seq_id"] ])); //_atom_site.auth_comp_id resid.push_back(tmp_vec[ columns_map["_atom_site.auth_comp_id"] ]); //_atom_site.auth_asym_id chain.push_back(tmp_vec[ columns_map["_atom_site.auth_asym_id"] ]); //_atom_site.auth_atom_id elety.push_back(tmp_vec[ columns_map["_atom_site.auth_atom_id"] ]); //_atom_site.pdbx_PDB_model_num model.push_back(stringToInt(tmp_vec[ columns_map["_atom_site.pdbx_PDB_model_num"] ])); } } } // while ( getline (myfile,line) ) { mystream.close(); } // end if (myfile.is_open()) { else { out = Rcpp::List::create(Rcpp::Named("error")="Error when reading file"); return(out); } // add names to helix / sheet vector /** NumericVector helix_start_out = wrap(helix_resno_start); helix_start_out.names() = helix_inserti; NumericVector helix_end_out = wrap(helix_resno_end); helix_end_out.names() = helix_inserte; */ // build output List out = Rcpp::List::create(Rcpp::Named("atom")= Rcpp::DataFrame::create( Rcpp::Named("type")=type, Rcpp::Named("eleno")=eleno, Rcpp::Named("elety")=elety, Rcpp::Named("alt")=alt, Rcpp::Named("resid")=resid, Rcpp::Named("chain")=chain, Rcpp::Named("resno")=resno, Rcpp::Named("insert")=insert, Rcpp::Named("x")=x, Rcpp::Named("y")=y, Rcpp::Named("z")=z, Rcpp::Named("o")=o, Rcpp::Named("b")=b, Rcpp::Named("segid")=entid, Rcpp::Named("elesy")=elesy, Rcpp::Named("charge")=charge, Rcpp::Named("stringsAsFactors")=false ), /** Rcpp::Named("helix")= Rcpp::List::create( Rcpp::Named("start")=helix_start_out, Rcpp::Named("end")=helix_end_out, Rcpp::Named("chain")=helix_chain, Rcpp::Named("type")=helix_type ), */ Rcpp::Named("xyz")=xyz, Rcpp::Named("models")=models ); return(out); } bio3d/src/gzstream.cpp0000644000176200001440000001174514707230357014421 0ustar liggesusers// ============================================================================ // gzstream, C++ iostream classes wrapping the zlib compression library. // Copyright (C) 2001 Deepak Bandyopadhyay, Lutz Kettner // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // ============================================================================ // // File : gzstream.C // Revision : $Revision: 1.1 $ // Revision_date : $Date: 2009-08-31 14:46:54 $ // Author(s) : Deepak Bandyopadhyay, Lutz Kettner // // Standard streambuf implementation following Nicolai Josuttis, "The // Standard C++ Library". // ============================================================================ #include "gzstream.h" #include #include // for memcpy #ifdef GZSTREAM_NAMESPACE namespace GZSTREAM_NAMESPACE { #endif // ---------------------------------------------------------------------------- // Internal classes to implement gzstream. See header file for user classes. // ---------------------------------------------------------------------------- // -------------------------------------- // class gzstreambuf: // -------------------------------------- gzstreambuf* gzstreambuf::open( const char* name, int open_mode) { if ( is_open()) return (gzstreambuf*)0; mode = open_mode; // no append nor read/write mode if ((mode & std::ios::ate) || (mode & std::ios::app) || ((mode & std::ios::in) && (mode & std::ios::out))) return (gzstreambuf*)0; char fmode[10]; char* fmodeptr = fmode; if ( mode & std::ios::in) *fmodeptr++ = 'r'; else if ( mode & std::ios::out) *fmodeptr++ = 'w'; *fmodeptr++ = 'b'; *fmodeptr = '\0'; file = gzopen( name, fmode); if (file == 0) return (gzstreambuf*)0; opened = 1; return this; } gzstreambuf * gzstreambuf::close() { if ( is_open()) { sync(); opened = 0; if ( gzclose( file) == Z_OK) return this; } return (gzstreambuf*)0; } int gzstreambuf::underflow() { // used for input buffer only if ( gptr() && ( gptr() < egptr())) return * reinterpret_cast( gptr()); if ( ! (mode & std::ios::in) || ! opened) return EOF; // Josuttis' implementation of inbuf int n_putback = gptr() - eback(); if ( n_putback > 4) n_putback = 4; memcpy( buffer + (4 - n_putback), gptr() - n_putback, n_putback); int num = gzread( file, buffer+4, bufferSize-4); if (num <= 0) // ERROR or EOF return EOF; // reset buffer pointers setg( buffer + (4 - n_putback), // beginning of putback area buffer + 4, // read position buffer + 4 + num); // end of buffer // return next character return * reinterpret_cast( gptr()); } int gzstreambuf::flush_buffer() { // Separate the writing of the buffer from overflow() and // sync() operation. int w = pptr() - pbase(); if ( gzwrite( file, pbase(), w) != w) return EOF; pbump( -w); return w; } int gzstreambuf::overflow( int c) { // used for output buffer only if ( ! ( mode & std::ios::out) || ! opened) return EOF; if (c != EOF) { *pptr() = c; pbump(1); } if ( flush_buffer() == EOF) return EOF; return c; } int gzstreambuf::sync() { // Changed to use flush_buffer() instead of overflow( EOF) // which caused improper behavior with std::endl and flush(), // bug reported by Vincent Ricard. if ( pptr() && pptr() > pbase()) { if ( flush_buffer() == EOF) return -1; } return 0; } // -------------------------------------- // class gzstreambase: // -------------------------------------- gzstreambase::gzstreambase( const char* name, int mode) { init( &buf); open( name, mode); } gzstreambase::~gzstreambase() { buf.close(); } void gzstreambase::open( const char* name, int open_mode) { if ( ! buf.open( name, open_mode)) clear( rdstate() | std::ios::badbit); } void gzstreambase::close() { if ( buf.is_open()) if ( ! buf.close()) clear( rdstate() | std::ios::badbit); } #ifdef GZSTREAM_NAMESPACE } // namespace GZSTREAM_NAMESPACE #endif // ============================================================================ // EOF // bio3d/src/utils.h0000644000176200001440000000114714707230357013365 0ustar liggesusers//================================= // include guard #ifndef __UTILS_H_INCLUDED__ #define __UTILS_H_INCLUDED__ //================================= // included dependencies #include using namespace std; //================================= // the actual functions // trim from start string ltrim(string s); // trim from end string rtrim(string s); // trim from both ends string trim(string s); // function get hexadecimal int getHex(string hexstr); // split a string vector &split(const string &s, char delim, vector &elems); vector split(const string &s, char delim); #endif bio3d/src/init.c0000644000176200001440000000150514707230357013161 0ustar liggesusers#include #include #include // for NULL #include /* FIXME: * Check these declarations against the C/Fortran source code. * */ /* .Call calls */ extern SEXP _bio3d_read_cif(SEXP, SEXP, SEXP); extern SEXP _bio3d_read_crd(SEXP); extern SEXP _bio3d_read_pdb(SEXP, SEXP, SEXP, SEXP, SEXP); extern SEXP _bio3d_read_prmtop(SEXP); static const R_CallMethodDef CallEntries[] = { {"_bio3d_read_cif", (DL_FUNC) &_bio3d_read_cif, 3}, {"_bio3d_read_crd", (DL_FUNC) &_bio3d_read_crd, 1}, {"_bio3d_read_pdb", (DL_FUNC) &_bio3d_read_pdb, 5}, {"_bio3d_read_prmtop", (DL_FUNC) &_bio3d_read_prmtop, 1}, {NULL, NULL, 0} }; void R_init_bio3d(DllInfo *dll) { R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); R_useDynamicSymbols(dll, FALSE); } bio3d/src/Makevars0000644000176200001440000000004314707230357013542 0ustar liggesusersPKG_CPPFLAGS = -I. PKG_LIBS = -lz bio3d/src/gzstream.h0000644000176200001440000001113514707230357014057 0ustar liggesusers// ============================================================================ // gzstream, C++ iostream classes wrapping the zlib compression library. // Copyright (C) 2001 Deepak Bandyopadhyay, Lutz Kettner // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // ============================================================================ // // File : gzstream.h // Revision : $Revision: 1.2 $ // Revision_date : $Date: 2009-09-03 18:28:38 $ // Author(s) : Deepak Bandyopadhyay, Lutz Kettner // // Standard streambuf implementation following Nicolai Josuttis, "The // Standard C++ Library". // // ============================================================================ // Modifications: Dominik Szczerba 2006 // added is_open() to igzstream and ogzstream // ============================================================================ // // This version is obtained 28.05.2015 from // https://github.com/Kitware/VTK/tree/master/ThirdParty/xdmf2/vtkxdmf2/libsrc // #ifndef GZSTREAM_H #define GZSTREAM_H 1 // standard C++ with new header file names and std:: namespace #include #include #ifdef XDMF_USE_VTK_ZLIB #include "vtkzlib/zlib.h" #else #include #endif #ifdef GZSTREAM_NAMESPACE namespace GZSTREAM_NAMESPACE { #endif // ---------------------------------------------------------------------------- // Internal classes to implement gzstream. See below for user classes. // ---------------------------------------------------------------------------- class gzstreambuf : public std::streambuf { private: static const int bufferSize = 47+256; // size of data buff // totals 512 bytes under g++ for igzstream at the end. gzFile file; // file handle for compressed file char buffer[bufferSize]; // data buffer char opened; // open/close state of stream int mode; // I/O mode int flush_buffer(); public: gzstreambuf() : opened(0) { setp( buffer, buffer + (bufferSize-1)); setg( buffer + 4, // beginning of putback area buffer + 4, // read position buffer + 4); // end position // ASSERT: both input & output capabilities will not be used together } int is_open() { return opened; } gzstreambuf* open( const char* name, int open_mode); gzstreambuf* close(); ~gzstreambuf() { close(); } virtual int overflow( int c = EOF); virtual int underflow(); virtual int sync(); }; class gzstreambase : virtual public std::ios { protected: gzstreambuf buf; public: gzstreambase() { init(&buf); } gzstreambase( const char* name, int open_mode); ~gzstreambase(); void open( const char* name, int open_mode); void close(); gzstreambuf* rdbuf() { return &buf; } }; // ---------------------------------------------------------------------------- // User classes. Use igzstream and ogzstream analogously to ifstream and // ofstream respectively. They read and write files based on the gz* // function interface of the zlib. Files are compatible with gzip compression. // ---------------------------------------------------------------------------- class igzstream : public gzstreambase, public std::istream { public: igzstream() : std::istream( &buf) {} igzstream( const char* name, int open_mode = std::ios::in) : gzstreambase( name, open_mode), std::istream( &buf) {} gzstreambuf* rdbuf() { return gzstreambase::rdbuf(); } void open( const char* name, int open_mode = std::ios::in) { gzstreambase::open( name, open_mode); } bool is_open(){return buf.is_open();}; }; class ogzstream : public gzstreambase, public std::ostream { public: ogzstream() : std::ostream( &buf) {} ogzstream( const char* name, int mode = std::ios::out) : gzstreambase( name, mode), std::ostream( &buf) {} gzstreambuf* rdbuf() { return gzstreambase::rdbuf(); } void open( const char* name, int open_mode = std::ios::out) { gzstreambase::open( name, open_mode); } bool is_open(){return buf.is_open();}; }; #ifdef GZSTREAM_NAMESPACE } // namespace GZSTREAM_NAMESPACE #endif #endif // GZSTREAM_H // ============================================================================ // EOF //1 bio3d/src/read_pdb.cpp0000644000176200001440000002354114707230357014322 0ustar liggesusers#include #include #include #include #include "gzstream.h" #include "utils.h" #include "convert.h" using namespace std; using namespace Rcpp; // [[Rcpp::export('.read_pdb')]] List read_pdb(std::string filename, bool multi=false, bool hex=false, int maxlines=-1, bool atoms_only=false) { // out is a List object Rcpp::List out; // keep track of number of atoms and models in PDB int natoms = 0; int models = 0; int nresi = 0; // reset this when reading MODEL, END, ENDMDL // bump models when this is 0 int natoms_model = 0; // assign vectors for building final 'atom' object vector type; vector eleno; vector elety; vector alt; vector resid; vector chain; vector resno; vector insert; vector x; vector y; vector z; vector o; vector b; vector segid; vector elesy; vector charge; // xyz object vector xyz; // store HELIX / SHEET records vector helix_chain; vector helix_resno_start; vector helix_resno_end; vector helix_type; vector helix_inserti; vector helix_inserte; vector sheet_chain; vector sheet_resno_start; vector sheet_resno_end; vector sheet_sense; vector sheet_inserti; vector sheet_inserte; // store SEQRES vector seqres; vector seqres_chain; // store REMARK 350 lines vector remark350; // store HEADER string header; // temp variables string tmp; int tmp_eleno; int tmp_resno; // counter for seqres while loop int i; // values from prev string curr_record_str; string prev_eleno_str; string curr_eleno_str; string prev_resno_str; string curr_resno_str; string prev_chain; string curr_chain; int counter = 0; bool hex_eleno = false; bool hex_resno = false; // for reading vector raw_lines; string line; igzstream mystream; mystream.open(filename.c_str()); if (mystream.is_open()) { // read line by line while ( getline (mystream, line) ) { // break if user has provided maxlines argument counter++; if(maxlines != -1 && counter > maxlines) { break; } curr_record_str = trim(line.substr(0,6)); //cout << curr_record_str; // reset 'natoms_model' when reading END, ENDMDL or MODEL if(curr_record_str == "END" || curr_record_str == "ENDMDL" || curr_record_str == "MODEL") { natoms_model = 0; } // output header only if verbose=true else if(curr_record_str=="HEADER") { header = line; } // store helix info else if(curr_record_str=="HELIX" && !atoms_only) { helix_chain.push_back(trim(line.substr(19,1))); helix_resno_start.push_back(stringToInt(line.substr(21,4))); helix_resno_end.push_back(stringToInt(line.substr(33,4))); //helix_resno_start.push_back(std::stoi(line.substr(21,4))); //helix_resno_end.push_back(std::stoi(line.substr(33,4))); helix_type.push_back(trim(line.substr(38,2))); helix_inserti.push_back(trim(line.substr(25,1))); helix_inserte.push_back(trim(line.substr(37,1))); } // store sheet info else if(curr_record_str=="SHEET" && !atoms_only) { sheet_chain.push_back(trim(line.substr(21,1))); sheet_resno_start.push_back(stringToInt(line.substr(22,4))); sheet_resno_end.push_back(stringToInt(line.substr(33,4))); //sheet_resno_start.push_back(std::stoi(line.substr(22,4))); //sheet_resno_end.push_back(std::stoi(line.substr(33,4))); sheet_sense.push_back(trim(line.substr(38,2))); sheet_inserti.push_back(trim(line.substr(26,1))); sheet_inserte.push_back(trim(line.substr(37,1))); } // store SEQRES info else if(curr_record_str=="SEQRES" && !atoms_only) { i=0; while(19+(i*4) < (int) line.length()) { tmp = trim(line.substr(19+(i*4), 3)); if(tmp != "") { seqres.push_back(tmp); seqres_chain.push_back(trim(line.substr(11,1))); } i++; } } // store REMARK 350 records (raw lines only) else if(line.substr(0,10)=="REMARK 350" && !atoms_only) { remark350.push_back(trim(line)); } // store ATOM/HETATM records else if(curr_record_str=="ATOM" || curr_record_str=="HETATM") { // number of atoms in current model natoms_model++; // bump 'models' when reading first atom in model if(natoms_model == 1) { models++; } // break out of loop when visiting 2nd model if(multi == false && models > 1) { models = 1; break; } // read coordinates double tmpx = stringToDouble(line.substr(30,8)); double tmpy = stringToDouble(line.substr(38,8)); double tmpz = stringToDouble(line.substr(46,8)); // always store coords in xyz object xyz.push_back(tmpx); xyz.push_back(tmpy); xyz.push_back(tmpz); // only store other items for first MODEL if(models < 2) { natoms++; // x, y, z for 'atom' x.push_back(tmpx); y.push_back(tmpy); z.push_back(tmpz); // read atom number curr_eleno_str = trim(line.substr(6,5)); // enable parsing hexadecimals (e.g. from VMD) // issue warning if hexdec found if(natoms > 99999 && !hex_eleno && curr_eleno_str == "186a0" && prev_eleno_str == "99999") { if(!hex) { Rf_warning("possible hexadecimal atom numbering. re-run with 'hex=TRUE'"); } else { Rf_warning("hexadecimal atom numbering used for eleno > 99.999"); } hex_eleno = true; } if(hex && hex_eleno) { tmp_eleno = getHex(curr_eleno_str); } else { try { tmp_eleno = stringToInt(curr_eleno_str); } catch (...) { tmp_eleno = NA_INTEGER; } } prev_eleno_str = curr_eleno_str; // read residue number and chain identifier curr_resno_str = trim(line.substr(22,4)); curr_chain = trim(line.substr(21,1)); // count number of residues if(curr_resno_str != prev_resno_str) { // reset nresi if chain change if(curr_chain != prev_chain) { nresi = 0; hex_resno = false; } prev_chain = curr_chain; nresi++; } // enable parsing hexadecimals (e.g. from VMD) // issue warning if hexdec found if(nresi > 9999 && !hex_resno && curr_resno_str == "2710" && prev_resno_str == "9999") { if(!hex) { Rf_warning("possible hexadecimal residue numbering. re-run with 'hex=TRUE'"); } else { Rf_warning("hexadecimal residue numbering used for resno > 9.999"); } hex_resno = true; } if(hex && hex_resno) { tmp_resno = getHex(curr_resno_str); } else { try { tmp_resno = stringToInt(curr_resno_str); } catch (...) { tmp_resno = NA_INTEGER; } } prev_resno_str = curr_resno_str; // store eleno resno chain to arrays eleno.push_back(tmp_eleno); resno.push_back(tmp_resno); chain.push_back(curr_chain); // read all others items as they are type.push_back(rtrim(line.substr(0,6))); elety.push_back(trim(line.substr(12,4))); alt.push_back(trim(line.substr(16,1))); resid.push_back(trim(line.substr(17,4))); insert.push_back(trim(line.substr(26,1))); try{ o.push_back(stringToDouble(trim(line.substr(54,6)))); } catch(...) { o.push_back(NA_REAL); } try{ b.push_back(stringToDouble(trim(line.substr(60,6)))); } catch(...) { b.push_back(NA_REAL); } try{ segid.push_back(trim(trim(line.substr(72,4)))); } catch(...) { segid.push_back(""); } try{ elesy.push_back(trim(line.substr(76,2))); } catch(...) { elesy.push_back(""); } try{ charge.push_back(trim(line.substr(78,2))); } catch(...) { charge.push_back(""); } } } } // while ( getline (myfile,line) ) { mystream.close(); } // end if (myfile.is_open()) { else { out = Rcpp::List::create(Rcpp::Named("error")="Error when reading file"); return(out); } // add names to helix / sheet vector NumericVector helix_start_out = wrap(helix_resno_start); helix_start_out.names() = helix_inserti; NumericVector helix_end_out = wrap(helix_resno_end); helix_end_out.names() = helix_inserte; NumericVector sheet_start_out = wrap(sheet_resno_start); sheet_start_out.names() = sheet_inserti; NumericVector sheet_end_out = wrap(sheet_resno_end); sheet_end_out.names() = sheet_inserte; // build output List out = Rcpp::List::create(Rcpp::Named("atom")= Rcpp::DataFrame::create( Rcpp::Named("type")=type, Rcpp::Named("eleno")=eleno, Rcpp::Named("elety")=elety, Rcpp::Named("alt")=alt, Rcpp::Named("resid")=resid, Rcpp::Named("chain")=chain, Rcpp::Named("resno")=resno, Rcpp::Named("insert")=insert, Rcpp::Named("x")=x, Rcpp::Named("y")=y, Rcpp::Named("z")=z, Rcpp::Named("o")=o, Rcpp::Named("b")=b, Rcpp::Named("segid")=segid, Rcpp::Named("elesy")=elesy, Rcpp::Named("charge")=charge, Rcpp::Named("stringsAsFactors")=false ), Rcpp::Named("xyz")=xyz, Rcpp::Named("models")=models, Rcpp::Named("seqres")=seqres, Rcpp::Named("seqres_chain")=seqres_chain, Rcpp::Named("helix")= Rcpp::List::create( Rcpp::Named("start")=helix_start_out, Rcpp::Named("end")=helix_end_out, Rcpp::Named("chain")=helix_chain, Rcpp::Named("type")=helix_type ), Rcpp::Named("sheet")= Rcpp::List::create( Rcpp::Named("start")=sheet_start_out, Rcpp::Named("end")=sheet_end_out, Rcpp::Named("chain")=sheet_chain, Rcpp::Named("sense")=sheet_sense, Rcpp::Named("inserti")=sheet_inserti ), Rcpp::Named("remark350")=remark350, Rcpp::Named("header")=header ); return(out); } bio3d/NAMESPACE0000644000176200001440000000567514707230356012515 0ustar liggesusers#exportPattern("^[[:alpha:]]+") exportPattern("^[^\\.]") useDynLib(bio3d) import("graphics") import("grDevices") import("stats") import("utils") import(parallel, grid, Rcpp) S3method(as.pdb, default) S3method(as.pdb, mol2) S3method(as.pdb, prmtop) S3method(atom2ele, default) S3method(atom2ele, pdb) S3method(atom2mass, default) S3method(atom2mass, pdb) S3method(atom.select, pdb) S3method(atom.select, mol2) S3method(atom.select, prmtop) S3method(atom.select, pdbs) S3method(bhattacharyya, array) S3method(bhattacharyya, enma) S3method(bhattacharyya, matrix) S3method(bhattacharyya, nma) S3method(bhattacharyya, pca) S3method(cmap, default) S3method(cmap, pdb) S3method(cmap, pdbs) S3method(cmap, xyz) S3method(cna, dccm) S3method(cna, ensmb) S3method(com, pdb) S3method(com, xyz) S3method(core.find, default) S3method(core.find, pdb) S3method(core.find, pdbs) S3method(covsoverlap, enma) S3method(covsoverlap, nma) S3method(dccm, enma) S3method(dccm, nma) S3method(dccm, pca) S3method(dccm, xyz) S3method(dccm, gnm) S3method(dccm, egnm) S3method(dm, pdb) S3method(dm, xyz) S3method(dm, pdbs) S3method(dssp, pdb) S3method(dssp, pdbs) S3method(dssp, xyz) S3method(geostas, default) S3method(geostas, enma) S3method(geostas, nma) S3method(geostas, pdb) S3method(geostas, pdbs) S3method(geostas, xyz) S3method(pdbfit, pdb) S3method(pdbfit, pdbs) S3method(identify, cna) S3method(mktrj, enma) S3method(mktrj, nma) S3method(mktrj, pca) S3method(nma, pdb) S3method(nma, pdbs) S3method(aanma, pdb) S3method(aanma, pdbs) S3method(gnm, pdb) S3method(gnm, pdbs) S3method(pca, array) S3method(pca, pdbs) S3method(pca, tor) S3method(pca, xyz) S3method(plot, bio3d) S3method(plot, blast) S3method(plot, cmap) S3method(plot, cna) S3method(plot, ecna) S3method(plot, cnapath) S3method(plot, ecnapath) S3method(plot, core) S3method(plot, dccm) S3method(plot, dmat) S3method(plot, enma) S3method(plot, fasta) S3method(plot, fluct) S3method(plot, geostas) S3method(plot, hmmer) S3method(plot, nma) S3method(plot, pca) S3method(plot, pca.loadings) S3method(plot, pca.score) S3method(plot, pca.scree) S3method(plot, rmsip) S3method(plot, matrix.loadings) S3method(print, core) S3method(print, enma) S3method(print, fasta) S3method(print, nma) S3method(print, pca) S3method(print, pdb) S3method(print, rle2) S3method(print, select) S3method(print, sse) S3method(print, xyz) S3method(print, cna) S3method(print, cnapath) S3method(print, geostas) S3method(print, mol2) S3method(print, prmtop) S3method(read.crd, amber) S3method(read.crd, charmm) S3method(rmsip, default) S3method(rmsip, enma) S3method(sip, default) S3method(sip, enma) S3method(sip, nma) S3method(summary, pdb) S3method(summary, cna) S3method(summary, cnapath) S3method(trim, pdb) S3method(trim, mol2) S3method(trim, pdbs) S3method(trim, xyz) S3method(pymol, dccm) S3method(pymol, modes) S3method(pymol, nma) S3method(pymol, pca) S3method(pymol, pdbs) S3method(mask, dccm) S3method(vmd, cna) S3method(vmd, ecna) S3method(vmd, cnapath) S3method(vmd, ecnapath) bio3d/NEWS.md0000644000176200001440000003134514710164273012363 0ustar liggesusers# v2.4 (Version 2.4, released November 2019) ## Overview of new features and enhancements * New facilities for sequence alignment using the 'msa' package from Bioconductor or alternatively using the online server of the European Bioinformatics Institute (EMBL-EBI) (and so a local MUSCLE program is no longer a mandate). * A more robust sequence fetching function supporting both the EMBL-EBI and NCBI (National Center for Biotechnology Information) servers. * A new function for "core" detection using contact maps, new and improved functions for processing protein structures and doing structural network analysis. * More advanced system environment checking for automatically locating essential external programs. ## Other updates * We have also updated online vignettes and other documentations. For a fine-grained list of changes, or to report a bug, please consult: * [The issues log](https://bitbucket.org/Grantlab/bio3d/issues) * [The commit log](https://bitbucket.org/Grantlab/bio3d/commits/all) * For full install instructions see: * ## Major new/enhanced functions * seqaln: Supports using 'msa' and the EMBL-EBI server to do sequence alignment * get.seq: More robust to fetch a large number of sequences and supports EMBL-EBI and NCBI servers * atom.select.pdbs: New function for atom selection of a 'pdbs' object * core.cmap: New function for "core" residues detection using contact maps * chain.pdb: Supports inspection on peptide bond (C-N) length * community.aln: Comparison of networks with different numbers of nodes * dccm.pca, dccm.xyz: Tidier interface by merging "lmi()" and providing a new argument "method" * core.find, dccm.nma, dm.xyz, nma.pdbs, pdbaln, pdbsplit, read.fasta.pdb: Improved progress bar * dssp.pdb, pdbaln, pymol.dccm, pymol.modes, pymol.pdbs, seqaln: Exefile argument with OS dependent defaults * rmsd, seqidentity: More sensible output by fetching row and column names from input ### Happy Bio3Ding! # v2.3 (Version 2.3, released September 2016) ## Overview of new features and enhancements * New facilities for ensemble normal mode analysis (NMA) with all-atom elastic network model (ENM) and Gaussian network model (GNM). * Enhanced NMA calculations with the rotation-translation block (RTB) method and the new "4-bead" coarse-grained ENM. * More efficient reading of large PDB files using Rcpp. * PDB annotation from the PFAM database. * More supported I/O file formats. ## Other updates * We have also updated online vignettes and other documentations. For a fine-grained list of changes, or to report a bug, please consult: * [The issues log](https://bitbucket.org/Grantlab/bio3d/issues) * [The commit log](https://bitbucket.org/Grantlab/bio3d/commits/all) * For full install instructions see: * ## Major new/enhanced functions * aanma: All-atom ENM normal mode analysis (with RTB and 4-bead ENM supported) * aanma.pdbs: Ensemble NMA with all-atom ENM * gnm: Gaussian network model (GNM) calculations * gnm.pdbs: Ensemble NMA with GNM * dccm.gnm: Dynamical cross-correlation for GNM * pdbs2sse: Retrieve SSE from pdbs object with appropriate residue numbers for plotting * mask.dccm: Produce a new DCCM object with selected atoms masked * pdb.pfam: Function for PFAM annotation of PDB IDs * pymol.pdbs: Builds a pymol session from a 'pdbs' object * read.cif: Read a Protein Data Bank (mmCIF) coordinate file * read.dssp: For reading existing DSSP output files * read.stride: For reading existing STRIDE output files * read.crd: Read a CHARMM CARD (CRD) or AMBER coordinate file * read.prmtop: Read parameter and topology data from an AMBER PrmTop file * read.pdb: Use Rcpp to (more rapidly) read and parse PDB files * read.pdb2: Renamed old read.pdb function * plot.matrix.loadings: For plotting loadings obtained from pca.array() * community.aln: To align communities from two or more related networks * atom.select: Supports 'insert' identifier * vmd.cna and vmd.cnapath: Renamed view.cna and view.cnapath * pymol.dccm, pymol.modes, pymol.nma, and pymol.pca: Renamed view.xxx functions * plot.fasta: Improved plotting function for multiple sequence alignment * read.mol2, write.mol2, atom.select, trim, as.pdb: Read, write and manipulate mol2 files with functions ### Happy Bio3Ding! # v2.2 (Version 2.2, released in Feb 2015) ## Added new facilities for: * sub-optimal path analysis of biomolecular correlation networks * constructing biological units * identification and tidying of malformed PDB files * improved secondary structure annotation of 'pdbs' objects and various plots. ## Other updates * We have also updated and enhanced atom selection functionality and developed a new vignette detailing PDB structure manipulation and analysis facilities. For a fine-grained list of changes, or to report a bug, please consult: * [The issues log](https://bitbucket.org/Grantlab/bio3d/issues) * [The commit log](https://bitbucket.org/Grantlab/bio3d/commits/all) ## Major new functions * cnapath: Suboptimal Path Analysis for Correlation Networks * biounit: Biological Unit Construction * clean.pdb: Inspect And Clean Up A PDB Object * cat.pdb: Concatenate Multiple PDB Objects * pdb2sse: Obtain An SSE Sequence Vector From A PDB Object * bounds.sse: Obtain A SSE Object From An SSE Sequence Vector * aa.table: Updated amino acid reference data that replaces older 'aa.mass' * as.fasta: Convert alignment/sequence in matrix/vector format to a FASTA object. * as.pdb: Convert coordinate data to PDB format * as.select: Convert atomic indices to a atom.select object * as.xyz: Convert vectors and matrices to 'xyz' class objects * atom.select.pdb: Atom selection from PDB objects has been extensively updated * basename.pdb: Utility for manipulation of PDB file names * check.utility: Check and Report on Missing Bio3D Utility Programs * cmapt: Update contact map methods for pdb and xyz objects * cna: Update correlation network analysis methods for dccm and ensmb objects" * cnapath: Suboptimal Path Analysis for Correlation Networks * com: Updated center of mass methods for pdb and xyz objects * combine.select: Combine atom.select objects, renamed from previous 'combine.sel' * cov.enma: New method to Calculate Covariance Matrix from Ensemble Normal Modes" * cov2dccm: Calculates the N-by-N cross-correlation matrix from a 3N-by-3N covariance matrix * covsoverlap: New methods for nma and enma objects * dm: Distance matrix gets new methods for pdb and xyz class objects * dssp: Secondary Structure Analysis with DSSP gets new methods for pdb, xyz and pdbs class objects * geostas: Geometrically stable domain finder gets new methods for nma, enma, pdb, pdbs and xyz objects. * is.pdbs: Is an Object of Class pdbs * mono.colors: New color palette * pdb2sse: Obtain An SSE Sequence Vector From A PDB Object * pdbfit: Coordinate superposition gets new methods for multi-model pdb objects and pdbs objects. * read.crd: Can Now Read Coordinate Data from Amber or CHARMM * read.prmtop: Read AMBER Parameter/Topology files * var.pdbs: Pairwise Distance Variance in Cartesian Coordinates * plot: New or updated plot methods for 'cmap', 'geostas', and 'pca' class objects as well as a new plot.fluct() function that expands on plot.bio3d() for plotting atomic fluctuations from MD and NMA results. * print: New print methods for cnapath, enma, geostas, mol2, nma, pca, pdb, prmtop, rle2, select and sse objects. # v2.1 (Version 2.1, released in Sep 2014) ## Overview of major changes * Added new facilities for correlation Network Analysis (cna) and Geometrically Stable Domain finding (geostas). * We have also changed 'PDB object data' storage from a matrix to a data.frame format. * Improved methods and functionality for ensemble NMA are now also included along with extensive improvements to package vignettes and function documentation. For a fine-grained list of changes, or to report a bug, please consult: * [The issues log](https://bitbucket.org/Grantlab/bio3d/issues) * [The commit log](https://bitbucket.org/Grantlab/bio3d/commits/all) ## Major new functions * cna: Protein Dynamic Correlation Network Construction and Community Analysis. * plot.cna: Protein Structure Network Plots in 2D and 3D. * print.cna: Summarize and Print Features of a cna Network Graph * identify.cna: Identify Points in a CNA Protein Structure Network Plot * layout.cna: Protein Structure Network Layout * view.cna: View CNA Protein Structure Network Community Output in VMD * prune.cna: Prune A cna Network Object * community.tree: Reconstruction of the Girvan-Newman Community Tree for a CNA Class Object. * network.amendment: Amendment of a CNA Network According To A Input Community Membership Vector. * lmi: Linear Mutual Information Matrix * dccm.pca: Dynamic Cross-Correlation from Principal Component Analysis * filter.dccm: Filter for Cross-correlation Matrices (Cij) * cmap.filter: Contact Map Consensus Filtering * geostas (amsm.xyz): GeoStaS Domain Finder * bhattacharyya Bhattacharyya Coefficient * covsoverlap: Covariance Overlap * sip: Square Inner Product * cov.nma: Calculate Covariance Matrix from Normal Modes * mktrj.enma: Ensemble NMA Atomic Displacement Trajectory * pca.array: Principal Component Analysis of an array of matrices * hmmer: HMMER Sequence Search * plot.hmmer: Plot a Summary of HMMER Hit Statistics. * uniprot: Fetch UniProt Entry Data. * pfam: Download Pfam FASTA Sequence Alignment * hclustplot: Dendrogram with Clustering Annotation * write.pir: Write PIR Formated Sequences * mustang: Structure-based Sequence Alignment with MUSTANG * pdbs.filter: Filter or Trim a pdbs PDBs Object * dssp.pdbs: Secondary Structure Analysis of Aligned PDB Structures with DSSP * plot.fasta: Plot a Multiple Sequence Alignment * print.fasta: Printing Sequence Alignments * inspect.connectivity: Check the Connectivity of Protein Structures * var.xyz: Pairwise Distance Variance in Cartesian Coordinates * is.xyz(as.xyz, print.xyz): Is an Object of Class * setup.ncore: Setup for Running Bio3D Functions using Multiple CPU Cores # v2.0 (Version 2.0, released in Nov 2013) * Contains over 30 new functions including enhanced Normal Mode Analysis facilities as well extensive improvements to existing code and documentation. For a fine-grained list of changes or to report a bug, please consult: * [The issues log](https://bitbucket.org/Grantlab/bio3d/issues) * [The commit log](https://bitbucket.org/Grantlab/bio3d/commits/all) ## Major new functions * aa2mass: Amino Acid Residues to Mass Converter * atom.index: Index of Atomic Masses * atom2mass(atom2ele, formula2mass): Atom Names to Mass Converter * binding.site: Binding Site Residues * com(com.xyz): Center of Mass * combine.sel: Combine Atom Selections From PDB Structure * dccm.enma: Cross-Correlation for Ensemble NMA (eNMA) * dccm.mean: Filter DCCM matrices * dccm.nma: Dynamic Cross-Correlation from Normal Modes Analysis * dccm.xyz: DCCM: Dynamical Cross-Correlation Matrix * deformation.nma: Deformation Analysis * dssp.trj: Secondary Structure Analysis of Trajectories with DSSP * fluct.nma: NMA Fluctuations * inner.prod: Mass-weighted Inner Product * is.pdb: Is an Object of Class pdb * is.select: Is an Object of Class atom.select * load.enmff(ff.calpha, ff.calphax, ff.anm, ff.pfanm, ff.sdenm, ff.reach): ENM Force Field Loader * mktrj.nma: NMA Atomic Displacement Trajectory * nma(build.hessian, print.nma): Normal Mode Analysis * nma.pdbs(print.enma): Ensemble Normal Mode Analysis * normalize.vector: Mass-Weighted Normalized Vector * pdb.annotate: Get Customizable Annotations From PDB * pdb2aln: Align a PDB structure to an existing alignment * pdb2aln.ind: Mapping between PDB atomic indices and alignment positions * pdbfit: PDB File Coordinate Superposition * pdbs2pdb: PDBs to PDB Converter * plot.enma: Plot eNMA Results * plot.nma: Plot NMA Results * plot.rmsip: Plot RMSIP Results * read.mol2: Read MOL2 File * sdENM: Index for the sdENM ff * sse.bridges: SSE Backbone Hydrogen Bonding * struct.aln: Structure Alignment Of Two PDB Files * view.dccm: Visualization of Dynamic Cross-Correlation * view.modes: Vector Field Visualization of Modes * vmd.colors: Color as in VMD Molecular Viewer ## Versioning * Releases will be numbered with the following semantic versioning format: * \.\-\ * E.g.: 2.0-1 * And constructed with the following guidelines: * Breaking backward compatibility bumps the major (and resets the minor and patch) * New additions without breaking backward compatibility bumps the minor (and resets the patch) * Bug fixes and misc changes bumps the patch ### For more information on SemVer, please visit http://semver.org/. # For changes prior to v1.1-6 (Apr 2013), please contact Barry Grant: bjgrant@ucsd.edu. bio3d/inst/0000755000176200001440000000000014710164351012231 5ustar liggesusersbio3d/inst/matrices/0000755000176200001440000000000014707230357014046 5ustar liggesusersbio3d/inst/matrices/custom.mat0000644000176200001440000000347214707230357016071 0ustar liggesusers A R N D C Q E G H I L K M F P S T W Y V B Z X * A 8 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 5 -4 R -1 8 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 5 -4 N -1 -1 8 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 5 -4 D -1 -1 -1 8 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 5 -4 C -1 -1 -1 -1 8 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 5 -4 Q -1 -1 -1 -1 -1 8 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 5 -4 E -1 -1 -1 -1 -1 -1 8 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 5 -4 G -1 -1 -1 -1 -1 -1 -1 8 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 5 -4 H -1 -1 -1 -1 -1 -1 -1 -1 8 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 5 -4 I -1 -1 -1 -1 -1 -1 -1 -1 -1 8 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 5 -4 L -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 8 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 5 -4 K -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 8 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 5 -4 M -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 8 -1 -1 -1 -1 -1 -1 -1 -1 -1 5 -4 F -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 8 -1 -1 -1 -1 -1 -1 -1 -1 5 -4 P -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 8 -1 -1 -1 -1 -1 -1 -1 5 -4 S -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 8 -1 -1 -1 -1 -1 -1 5 -4 T -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 8 -1 -1 -1 -1 -1 5 -4 W -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 8 -1 -1 -1 -1 5 -4 Y -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 8 -1 -1 -1 5 -4 V -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 8 -1 -1 5 -4 B -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 8 -1 5 -4 Z -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 8 5 -4 X 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 9 -3 * -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -3 1 bio3d/inst/matrices/properties.mat0000644000176200001440000000336214707230357016751 0ustar liggesusers# Amino acid property index # The first 10 properties are derived from the venn diagram of # Taylor 1986 (J. Theor. Biol. 119, 205-218) and the work of # Zvelebil 1987 (J. Mol. Biol. 195, 957-961). # Properties 'burried', 'surface' and 'neutral' are based on # relative hydrophobicity and the extent to which residues are # distributed between the surface and interior of known structures, # see Chothia 1998 (J. Mol. Biol. 278, 457-479 ) and the work of # Miller 1986 (J. Mol. Biol. 196, 641-656) I L V C A G M F Y W H K R E Q D N S T P B Z X - hydrophobic 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 1 0 polar 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 small 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 0 proline 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 tiny 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 aliphatic 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 aromatic 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 positive 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 negative 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 charged 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 1 0 special 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 burried 1 1 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 surface 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 0 neutral 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 1 1 1 0 0 1 0 bio3d/inst/matrices/similarity.mat0000644000176200001440000000256114707230357016743 0ustar liggesusers# Similarity Matrix derived from the PET91 matrix # of Jones, Taylor and Thornton 1991 with values # sacled to 0 or 1. Input with 'read.table' A R N D C Q E G H I L K M F P S T W Y V B Z X - A 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 R 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 N 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 D 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 C 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 Q 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 E 0 0 1 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 G 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 H 0 1 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 I 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 0 0 0 L 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 K 0 1 1 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 M 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 F 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 P 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 S 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 T 1 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 W 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 Y 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 V 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 B 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 Z 0 1 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 bio3d/inst/matrices/bio3d.mat0000644000176200001440000000377614707230357015566 0ustar liggesusers# PET91 Matrix - Jones, Taylor and Thornton 1991 # This is an update of the MDM78 Dayhoff matrix normalised such that # all maxima are on the diagonal with a score of 10 A R N D C Q E G H I L K M F P S T W Y V B Z X - A 10 -1 0 -1 -1 -1 -1 1 -2 0 -1 -1 -1 -3 1 1 2 -4 -3 1 0 -1 0 0 R -1 10 0 -1 -1 2 0 0 2 -3 -3 4 -2 -4 -1 -1 -1 0 -2 -3 0 1 0 0 N 0 0 10 2 -1 0 1 0 1 -2 -3 1 -2 -3 -1 1 1 -4 -1 -2 2 0 0 0 D -1 -1 2 10 -3 0 4 1 0 -3 -4 0 -3 -5 -2 0 -1 -5 -2 -3 3 2 0 0 C -1 -1 -1 -3 10 -3 -4 -1 0 -2 -3 -3 -2 0 -2 1 -1 1 2 -2 -2 -3 0 0 Q -1 2 0 0 -3 10 2 -1 3 -3 -2 2 -2 -4 0 -1 -1 -3 -1 -3 0 3 0 0 E -1 0 1 4 -4 2 10 1 0 -3 -4 1 -3 -5 -2 -1 -1 -5 -4 -2 2 3 0 0 G 1 0 0 1 -1 -1 1 10 -2 -3 -4 -1 -3 -5 -1 1 0 -2 -4 -2 0 0 0 0 H -2 2 1 0 0 3 0 -2 10 -3 -2 1 -2 0 0 -1 -1 -3 4 -3 0 1 0 0 I 0 -3 -2 -3 -2 -3 -3 -3 -3 10 2 -3 3 0 -2 -1 1 -4 -2 4 -2 -3 0 0 L -1 -3 -3 -4 -3 -2 -4 -4 -2 2 10 -3 3 2 0 -2 -1 -2 -1 2 -3 -3 0 0 K -1 4 1 0 -3 2 1 -1 1 -3 -3 10 -2 -5 -2 -1 -1 -3 -3 -3 0 1 0 0 M -1 -2 -2 -3 -2 -2 -3 -3 -2 3 3 -2 10 0 -2 -1 0 -3 -3 2 -2 -2 0 0 F -3 -4 -3 -5 0 -4 -5 -5 0 0 2 -5 0 10 -2 -2 -2 -1 5 0 -4 -4 0 0 P 1 -1 -1 -2 -2 0 -2 -1 0 -2 0 -2 -2 -2 10 1 1 -5 -3 -1 -1 -1 0 0 S 1 -1 1 0 1 -1 -1 1 -1 -1 -2 -1 -1 -2 1 10 1 -3 -1 -1 0 -1 0 0 T 2 -1 1 -1 -1 -1 -1 0 -1 1 -1 -1 0 -2 1 1 10 -4 -3 0 0 -1 0 0 W -4 0 -4 -5 1 -3 -5 -2 -3 -4 -2 -3 -3 -1 -5 -3 -4 10 0 -4 -4 -4 0 0 Y -3 -2 -1 -2 2 -1 -4 -4 4 -2 -1 -3 -3 5 -3 -1 -3 0 10 -3 -1 -2 0 0 V 1 -3 -2 -3 -2 -3 -2 -2 -3 4 2 -3 2 0 -1 -1 0 -4 -3 10 -2 -2 0 0 B 0 0 2 3 -2 0 2 0 0 -2 -3 0 -2 -4 -1 0 0 -4 -1 -2 10 1 0 0 Z -1 1 0 2 -3 3 3 0 1 -3 -3 1 -2 -4 -1 -1 -1 -4 -2 -2 1 10 0 0 X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 bio3d/inst/matrices/blosum62.mat0000644000176200001440000000411314707230357016221 0ustar liggesusers# Matrix made by matblas from blosum62.iij # * column uses minimum score # BLOSUM Clustered Scoring Matrix in 1/2 Bit Units # Blocks Database = /data/blocks_5.0/blocks.dat # Cluster Percentage: >= 62 # Entropy = 0.6979, Expected = -0.5209 A R N D C Q E G H I L K M F P S T W Y V B Z X - A 4 -1 -2 -2 0 -1 -1 0 -2 -1 -1 -1 -1 -2 -1 1 0 -3 -2 0 -2 -1 0 0 R -1 5 0 -2 -3 1 0 -2 0 -3 -2 2 -1 -3 -2 -1 -1 -3 -2 -3 -1 0 0 0 N -2 0 6 1 -3 0 0 0 1 -3 -3 0 -2 -3 -2 1 0 -4 -2 -3 3 0 0 0 D -2 -2 1 6 -3 0 2 -1 -1 -3 -4 -1 -3 -3 -1 0 -1 -4 -3 -3 4 1 0 0 C 0 -3 -3 -3 9 -3 -4 -3 -3 -1 -1 -3 -1 -2 -3 -1 -1 -2 -2 -1 -3 -3 0 0 Q -1 1 0 0 -3 5 2 -2 0 -3 -2 1 0 -3 -1 0 -1 -2 -1 -2 0 3 0 0 E -1 0 0 2 -4 2 5 -2 0 -3 -3 1 -2 -3 -1 0 -1 -3 -2 -2 1 4 0 0 G 0 -2 0 -1 -3 -2 -2 6 -2 -4 -4 -2 -3 -3 -2 0 -2 -2 -3 -3 -1 -2 0 0 H -2 0 1 -1 -3 0 0 -2 8 -3 -3 -1 -2 -1 -2 -1 -2 -2 2 -3 0 0 0 0 I -1 -3 -3 -3 -1 -3 -3 -4 -3 4 2 -3 1 0 -3 -2 -1 -3 -1 3 -3 -3 0 0 L -1 -2 -3 -4 -1 -2 -3 -4 -3 2 4 -2 2 0 -3 -2 -1 -2 -1 1 -4 -3 0 0 K -1 2 0 -1 -3 1 1 -2 -1 -3 -2 5 -1 -3 -1 0 -1 -3 -2 -2 0 1 0 0 M -1 -1 -2 -3 -1 0 -2 -3 -2 1 2 -1 5 0 -2 -1 -1 -1 -1 1 -3 -1 0 0 F -2 -3 -3 -3 -2 -3 -3 -3 -1 0 0 -3 0 6 -4 -2 -2 1 3 -1 -3 -3 0 0 P -1 -2 -2 -1 -3 -1 -1 -2 -2 -3 -3 -1 -2 -4 7 -1 -1 -4 -3 -2 -2 -1 0 0 S 1 -1 1 0 -1 0 0 0 -1 -2 -2 0 -1 -2 -1 4 1 -3 -2 -2 0 0 0 0 T 0 -1 0 -1 -1 -1 -1 -2 -2 -1 -1 -1 -1 -2 -1 1 5 -2 -2 0 -1 -1 0 0 W -3 -3 -4 -4 -2 -2 -3 -2 -2 -3 -2 -3 -1 1 -4 -3 -2 11 2 -3 -4 -3 0 0 Y -2 -2 -2 -3 -2 -1 -2 -3 2 -1 -1 -2 -1 3 -3 -2 -2 2 7 -1 -3 -2 0 0 V 0 -3 -3 -3 -1 -2 -2 -3 -3 3 1 -2 1 -1 -2 -2 0 -3 -1 4 -3 -2 0 0 B -2 -1 3 4 -3 0 1 -1 0 -3 -4 0 -3 -3 -2 0 -1 -4 -3 -3 4 1 0 0 Z -1 0 0 1 -3 3 4 -2 0 -3 -3 1 -1 -3 -1 0 -1 -3 -2 -2 1 4 0 0 X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 bio3d/inst/matrices/pam30.mat0000644000176200001440000000521414707230357015473 0ustar liggesusers# # This matrix was produced by "pam" Version 1.0.6 [28-Jul-93] # # PAM 30 substitution matrix, scale = ln(2)/2 = 0.346574 # # Expected score = -5.06, Entropy = 2.57 bits # # Lowest score = -17, Highest score = 13 # # Note. 'X' and '-' set to zero # A R N D C Q E G H I L K M F P S T W Y V B Z X - A 6 -7 -4 -3 -6 -4 -2 -2 -7 -5 -6 -7 -5 -8 -2 0 -1 -13 -8 -2 -3 -3 0 0 R -7 8 -6 -10 -8 -2 -9 -9 -2 -5 -8 0 -4 -9 -4 -3 -6 -2 -10 -8 -7 -4 0 0 N -4 -6 8 2 -11 -3 -2 -3 0 -5 -7 -1 -9 -9 -6 0 -2 -8 -4 -8 6 -3 0 0 D -3 -10 2 8 -14 -2 2 -3 -4 -7 -12 -4 -11 -15 -8 -4 -5 -15 -11 -8 6 1 0 0 C -6 -8 -11 -14 10 -14 -14 -9 -7 -6 -15 -14 -13 -13 -8 -3 -8 -15 -4 -6 -12 -14 0 0 Q -4 -2 -3 -2 -14 8 1 -7 1 -8 -5 -3 -4 -13 -3 -5 -5 -13 -12 -7 -3 6 0 0 E -2 -9 -2 2 -14 1 8 -4 -5 -5 -9 -4 -7 -14 -5 -4 -6 -17 -8 -6 1 6 0 0 G -2 -9 -3 -3 -9 -7 -4 6 -9 -11 -10 -7 -8 -9 -6 -2 -6 -15 -14 -5 -3 -5 0 0 H -7 -2 0 -4 -7 1 -5 -9 9 -9 -6 -6 -10 -6 -4 -6 -7 -7 -3 -6 -1 -1 0 0 I -5 -5 -5 -7 -6 -8 -5 -11 -9 8 -1 -6 -1 -2 -8 -7 -2 -14 -6 2 -6 -6 0 0 L -6 -8 -7 -12 -15 -5 -9 -10 -6 -1 7 -8 1 -3 -7 -8 -7 -6 -7 -2 -9 -7 0 0 K -7 0 -1 -4 -14 -3 -4 -7 -6 -6 -8 7 -2 -14 -6 -4 -3 -12 -9 -9 -2 -4 0 0 M -5 -4 -9 -11 -13 -4 -7 -8 -10 -1 1 -2 11 -4 -8 -5 -4 -13 -11 -1 -10 -5 0 0 F -8 -9 -9 -15 -13 -13 -14 -9 -6 -2 -3 -14 -4 9 -10 -6 -9 -4 2 -8 -10 -13 0 0 P -2 -4 -6 -8 -8 -3 -5 -6 -4 -8 -7 -6 -8 -10 8 -2 -4 -14 -13 -6 -7 -4 0 0 S 0 -3 0 -4 -3 -5 -4 -2 -6 -7 -8 -4 -5 -6 -2 6 0 -5 -7 -6 -1 -5 0 0 T -1 -6 -2 -5 -8 -5 -6 -6 -7 -2 -7 -3 -4 -9 -4 0 7 -13 -6 -3 -3 -6 0 0 W -13 -2 -8 -15 -15 -13 -17 -15 -7 -14 -6 -12 -13 -4 -14 -5 -13 13 -5 -15 -10 -14 0 0 Y -8 -10 -4 -11 -4 -12 -8 -14 -3 -6 -7 -9 -11 2 -13 -7 -6 -5 10 -7 -6 -9 0 0 V -2 -8 -8 -8 -6 -7 -6 -5 -6 2 -2 -9 -1 -8 -6 -6 -3 -15 -7 7 -8 -6 0 0 B -3 -7 6 6 -12 -3 1 -3 -1 -6 -9 -2 -10 -10 -7 -1 -3 -10 -6 -8 6 0 0 0 Z -3 -4 -3 1 -14 6 6 -5 -1 -6 -7 -4 -5 -13 -4 -5 -6 -14 -9 -6 0 6 0 0 X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 * 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 bio3d/inst/matrices/emboss_properties.mat0000644000176200001440000000112214707230357020311 0ustar liggesusers# EMBOSS DATA FILE # # This file contains the chemical classifications of the common amino # acids. # # # # # # aromatic polar positive # Tiny Small aliphatic non-polar charged negative A 1 1 0 0 1 0 0 0 0 C 1 1 0 0 1 0 0 0 0 D 0 1 0 0 0 1 1 0 1 E 0 0 0 0 0 1 1 0 1 F 0 0 0 1 1 0 0 0 0 G 1 1 0 0 1 0 0 0 0 H 0 0 0 1 0 1 1 1 0 I 0 0 1 0 1 0 0 0 0 K 0 0 0 0 0 1 1 1 0 L 0 0 1 0 1 0 0 0 0 M 0 0 0 0 1 0 0 0 0 N 0 1 0 0 0 1 0 0 0 P 0 1 0 0 1 0 0 0 0 Q 0 0 0 0 0 1 0 0 0 R 0 0 0 0 0 1 1 1 0 S 1 1 0 0 0 1 0 0 0 T 1 1 0 0 0 1 0 0 0 V 0 1 1 0 1 0 0 0 0 W 0 0 0 1 1 0 0 0 0 Y 0 0 0 1 1 0 0 0 0 // bio3d/inst/CITATION0000644000176200001440000000203114707230357013370 0ustar liggesusersbibentry(bibtype = "Article", textVersion = "Grant, B.J. et al. (2006) Bioinformatics 22, 2695--2696.", author = c(person(given = "B.J.", family = "Grant"), person(given = "A.P.C.", family = "Rodrigues"), person(given = "K.M.", family = "ElSawy"), person(given = "J.A.", family = "McCammon"), person(given = "L.S.D.", family = "Caves")), title = "Bio3D: An R package for the comparative analysis of protein structures.", journal = "Bioinformatics", year = "2006", volume = "22", pages = "2695--2696", month = "Nov", organization = "University of California, San Diego, La Jolla, CA 92093, USA.", mheader = "To cite bio3d in publications use:", mfooter = "Original article and updates are available from http://thegrantlab.org/bio3d/") bio3d/inst/examples/0000755000176200001440000000000014707230357014055 5ustar liggesusersbio3d/inst/examples/kif1a.fa0000644000176200001440000000303014707230357015354 0ustar liggesusers>http://www.rcsb.org/pdb/files/1bg2.pdb NIKVMCRFRPLNESEVNRGDKYIAKFQGEDTV----VIASK-------PYAFDRVFQSS- -------TSQEQVYNDCAKKIVKDVLEGYNGTIFAYGQTSSGKTHTMEGKLHDPEGMGII PRIVQDIFNYIYSMDENL-EFHIKVSYFEIYLDKIRDLL-DVSKT-NLSVHEDKNRVPYV KGCTERFVCSPDEVMDTIDEGKSNRHVAVTNMNEHSSRSHSIFLINVKQENTQT----EQ KLSGKLYLVDLAGSEKVSKTGAEGAVLDEAKNINKSLSALGNVISALAEGSTYVPYRDSK MTRILQDSLGGNCRTTIVICCSPSSYNESETKSTLLFGQRAKTI >http://www.rcsb.org/pdb/files/1i6i.pdb SVKVAVRVRPFNSREMSRDSKCIIQMSGSTTT----IVNPKQPKETPKSFSFDYSYWSHT SPEDINYASQKQVYRDIGEEMLQHAFEGYNVCIFAYGQTGAGKSYTMMGKQEK-DQQGII PQLCEDLFSRINDTTNDNMSYSVEVSYMEIYCERVRDLL-NPKNKGNLRVREHPLLGPYV EDLSKLAVTSYNDIQDLMDSGNKARTVAATNMNETSSRSHAVFNIIFTQKRHDAETNITT EKVSKISLVDLAGSE---------------ANINKSLTTLGKVISALAEMD-FIPYRDSV LTWLLRENLGGNSRTAMVAALSPADINYDETLSTLRYADRAKQI >http://www.rcsb.org/pdb/files/1i5s.pdb SVKVAVRVRPFNSREMSRDSKCIIQMSGSTTT----IVNPKQPKETPKSFSFDYSYWSHT SPEDINYASQKQVYRDIGEEMLQHAFEGYNVCIFAYGQTGAGKSYTMMGKQEK-DQQGII PQLCEDLFSRINDTTNDNMSYSVEVSYMEIYCERVRDLL-NPKNKGNLRVREHPLLGPYV EDLSKLAVTSYNDIQDLMDSGNKARTVAATNMNETSSRSHAVFNIIFTQKRHDAETNITT EKVSKISLVDLAGSER-----AKGTRLKEGANINKSLTTLGKVISALAEMD--IPYRDSV LTWLLRENLGGNSRTAMVAALSPADINYDETLSTLRYADRAK-- >http://www.rcsb.org/pdb/files/2ncd.pdb NIRVFCRIRPPLESEENRMC-CTWTYHDESTVELQSIDAQAKSKMGQQIFSFDQVFHPL- -------SSQSDIF-EMVSPLIQSALDGYNICIFAYGQTGSGKTYTMDGV---PESVGVI PRTVDLLFDSIRGYRNLGWEYEIKATFLEIYNEVLYDLLSNEQKDMEIRMAKNNKNDIYV SNITEETVLDPNHLRHLMHTAKMNRATASTAGNERSSRSHAVTKLELIGRHAEK----QE ISVGSINLVDLAGSES--------------PNINRSLSELTNVILALLQKQDHIPYRNSK LTHLLMPSLGGNSKTLMFINVSPFQDCFQESVKSLRFAASVNSC bio3d/inst/examples/test.pdb0000644000176200001440000003474114707230357015534 0ustar liggesusersTITLE A CURATED PDB FILE FOR BIO3D FUNCTION TESTING COMPND 3 CHAIN: A, B; REMARK 470 MISSING ATOM REMARK 470 M RES CSSEQI ATOMS REMARK 470 ARG B 2 CA HET CA A 8 1 HET GDP A 7 40 HETNAM CA CALCIUM ION HETNAM GDP GUANOSINE-5'-DIPHOSPHATE FORMUL 2 CA CA 2+ FORMUL 3 GDP C10 H15 N5 O11 P2 FORMUL 4 HOH *5(H2 O) ATOM 1 N GLY A 1 16.622 88.040 40.142 1.00 0.00 N ATOM 2 H GLY A 1 16.225 88.048 41.071 1.00 0.00 H ATOM 3 CA GLY A 1 16.176 89.039 39.198 1.00 0.00 C ATOM 4 HA2 GLY A 1 16.896 89.857 39.171 1.00 0.00 H ATOM 5 HA3 GLY A 1 16.099 88.591 38.207 1.00 0.00 H ATOM 6 C GLY A 1 14.824 89.586 39.597 1.00 0.00 C ATOM 7 O GLY A 1 14.138 89.018 40.440 1.00 0.00 O ATOM 8 N TES A 2 14.454 90.706 38.990 1.00 0.00 N ATOM 9 H TES A 2 15.096 91.143 38.344 1.00 0.00 H ATOM 10 CA TES A 2 13.180 91.367 39.252 1.00 0.00 C ATOM 11 HA TES A 2 13.061 91.524 40.324 1.00 0.00 H ATOM 12 CB TES A 2 13.160 92.738 38.548 1.00 0.00 C ATOM 13 HB1 TES A 2 13.269 92.596 37.473 1.00 0.00 H ATOM 14 HB2 TES A 2 12.214 93.239 38.754 1.00 0.00 H ATOM 15 HB3 TES A 2 13.983 93.349 38.919 1.00 0.00 H ATOM 16 C TES A 2 12.002 90.500 38.785 1.00 0.00 C ATOM 17 O TES A 2 12.186 89.530 38.069 1.00 0.00 O ATOM 18 N GLY A 3 10.806 90.823 39.256 1.00 0.00 N ATOM 19 H GLY A 3 10.699 91.591 39.903 1.00 0.00 H ATOM 20 CA GLY A 3 9.618 90.086 38.859 1.00 0.00 C ATOM 21 HA2 GLY A 3 9.709 89.045 39.170 1.00 0.00 H ATOM 22 HA3 GLY A 3 8.737 90.528 39.325 1.00 0.00 H ATOM 23 C GLY A 3 9.458 90.138 37.351 1.00 0.00 C ATOM 24 O GLY A 3 9.767 91.152 36.714 1.00 0.00 O ATOM 25 N GLU A 4 9.011 89.022 36.777 1.00 0.00 N ATOM 26 H GLU A 4 8.933 88.195 37.351 1.00 0.00 H ATOM 27 CA GLU A 4 8.800 88.888 35.337 1.00 0.00 C ATOM 28 HA GLU A 4 8.427 87.889 35.110 1.00 0.00 H ATOM 29 CB GLU A 4 7.782 89.910 34.849 1.00 0.00 C ATOM 30 HB2 GLU A 4 8.175 90.910 35.034 1.00 0.00 H ATOM 31 HB3 GLU A 4 7.634 89.770 33.778 1.00 0.00 H ATOM 32 CG GLU A 4 6.447 89.747 35.573 1.00 0.00 C ATOM 33 HG2 GLU A 4 6.108 88.729 35.382 1.00 0.00 H ATOM 34 HG3 GLU A 4 6.622 89.877 36.641 1.00 0.00 H ATOM 35 CD GLU A 4 5.388 90.726 35.112 1.00 0.00 C ATOM 36 OE1 GLU A 4 5.496 91.926 35.460 1.00 0.00 O ATOM 37 OE2 GLU A 4 4.438 90.287 34.414 1.00 0.00 O ATOM 38 C GLU A 4 10.048 88.888 34.470 1.00 0.00 C ATOM 39 O GLU A 4 9.954 88.911 33.256 1.00 0.00 O ATOM 40 N SER A 5 11.217 88.779 35.087 1.00 0.00 N ATOM 41 H SER A 5 11.273 88.828 36.094 1.00 0.00 H ATOM 42 CA SER A 5 12.463 88.755 34.325 1.00 0.00 C ATOM 43 HA SER A 5 12.402 89.476 33.510 1.00 0.00 H ATOM 44 CB SER A 5 13.669 89.114 35.211 1.00 0.00 C ATOM 45 HB2 SER A 5 14.563 89.086 34.588 1.00 0.00 H ATOM 46 HB3 SER A 5 13.520 90.126 35.587 1.00 0.00 H ATOM 47 OG SER A 5 13.825 88.226 36.298 1.00 0.00 O ATOM 48 HG SER A 5 14.587 88.489 36.820 1.00 0.00 H ATOM 49 C SER A 5 12.700 87.449 33.545 1.00 0.00 C ATOM 50 O SER A 5 13.314 87.463 32.469 1.00 0.00 O ATOM 51 N GLY A 5I 12.210 86.338 34.087 1.00 0.00 N ATOM 52 H GLY A 5I 11.719 86.378 34.969 1.00 0.00 H ATOM 53 CA GLY A 5I 12.360 85.044 33.440 1.00 0.00 C ATOM 54 HA2 GLY A 5I 11.379 84.765 33.055 1.00 0.00 H ATOM 55 HA3 GLY A 5I 13.051 85.182 32.608 1.00 0.00 H ATOM 56 C GLY A 5I 12.879 83.922 34.335 1.00 0.00 C ATOM 57 O GLY A 5I 13.210 82.847 33.824 1.00 0.00 O TER ATOM 58 N SER B 1 3.347 80.074 30.363 1.00 0.00 N ATOM 59 H SER B 1 3.644 79.127 30.177 1.00 0.00 H ATOM 60 CA SER B 1 2.423 80.307 31.476 1.00 0.00 C ATOM 61 HA SER B 1 1.632 80.987 31.159 1.00 0.00 H ATOM 62 CB SER B 1 1.780 78.988 31.941 1.00 0.00 C ATOM 63 HB2 SER B 1 0.927 79.234 32.573 1.00 0.00 H ATOM 64 HB3 SER B 1 1.434 78.452 31.057 1.00 0.00 H ATOM 65 OG SER B 1 2.691 78.165 32.670 1.00 0.00 O ATOM 66 HG SER B 1 2.248 77.357 32.938 1.00 0.00 H ATOM 67 C SER B 1 3.060 81.006 32.684 1.00 0.00 C ATOM 68 O SER B 1 4.276 81.085 32.807 1.00 0.00 O ATOM 69 N ARG B 2 2.215 81.494 33.583 1.00 0.00 N ATOM 70 H ARG B 2 1.220 81.443 33.416 1.00 0.00 H ATOM 71 HA ARG B 2 3.667 81.786 35.055 1.00 0.00 H ATOM 72 CB ARG B 2 2.761 83.671 34.576 1.00 0.00 C ATOM 73 HB2 ARG B 2 3.353 83.835 33.676 1.00 0.00 H ATOM 74 HB3 ARG B 2 1.744 84.028 34.411 1.00 0.00 H ATOM 75 CG ARG B 2 3.391 84.442 35.753 1.00 0.00 C ATOM 76 HG2 ARG B 2 2.694 84.426 36.591 1.00 0.00 H ATOM 77 HG3 ARG B 2 4.316 83.942 36.040 1.00 0.00 H ATOM 78 CD ARG B 2 3.697 85.908 35.366 1.00 0.00 C ATOM 79 HD2 ARG B 2 4.359 85.878 34.500 1.00 0.00 H ATOM 80 HD3 ARG B 2 2.750 86.367 35.083 1.00 0.00 H ATOM 81 NE ARG B 2 4.329 86.735 36.417 1.00 0.00 N ATOM 82 HE ARG B 2 3.807 87.549 36.709 1.00 0.00 H ATOM 83 CZ ARG B 2 5.485 86.470 37.023 1.00 0.00 C ATOM 84 NH1 ARG B 2 6.159 85.389 36.705 1.00 0.00 N ATOM 85 HH11 ARG B 2 5.798 84.761 36.001 1.00 0.00 H ATOM 86 HH12 ARG B 2 7.035 85.190 37.166 1.00 0.00 H ATOM 87 NH2 ARG B 2 6.006 87.302 37.921 1.00 0.00 N ATOM 88 HH21 ARG B 2 5.521 88.156 38.155 1.00 0.00 H ATOM 89 HH22 ARG B 2 6.884 87.075 38.365 1.00 0.00 H ATOM 90 C ARG B 2 1.721 81.801 35.924 1.00 0.00 C ATOM 91 O ARG B 2 0.502 81.932 35.813 1.00 0.00 O ATOM 92 N TES B 3 2.277 81.237 36.980 1.00 0.00 N ATOM 93 H TES B 3 3.264 81.024 36.997 1.00 0.00 H ATOM 94 CA TES B 3 1.476 80.868 38.127 1.00 0.00 C ATOM 95 HA TES B 3 0.487 81.323 38.066 1.00 0.00 H ATOM 96 CB TES B 3 1.307 79.333 38.262 1.00 0.00 C ATOM 97 HB TES B 3 0.758 78.962 37.397 1.00 0.00 H ATOM 98 CG1 TES B 3 2.649 78.651 38.335 1.00 0.00 C ATOM 99 HG11 TES B 3 3.199 79.021 39.201 1.00 0.00 H ATOM 100 HG12 TES B 3 2.505 77.575 38.429 1.00 0.00 H ATOM 101 HG13 TES B 3 3.215 78.863 37.428 1.00 0.00 H ATOM 102 CG2 TES B 3 0.483 78.998 39.497 1.00 0.00 C ATOM 103 HG21 TES B 3 -0.502 79.458 39.413 1.00 0.00 H ATOM 104 HG22 TES B 3 0.373 77.917 39.579 1.00 0.00 H ATOM 105 HG23 TES B 3 0.987 79.379 40.385 1.00 0.00 H ATOM 106 C TES B 3 2.134 81.432 39.368 1.00 0.00 C ATOM 107 O TES B 3 3.351 81.598 39.421 1.00 0.00 O ATOM 108 N LYS B 4 1.308 81.763 40.345 1.00 0.00 N ATOM 109 H LYS B 4 0.311 81.683 40.205 1.00 0.00 H ATOM 110 CA LYS B 4 1.782 82.317 41.594 1.00 0.00 C ATOM 111 HA LYS B 4 2.696 82.888 41.429 1.00 0.00 H ATOM 112 CB LYS B 4 0.717 83.254 42.183 1.00 0.00 C ATOM 113 HB2 LYS B 4 -0.220 82.699 42.226 1.00 0.00 H ATOM 114 HB3 LYS B 4 1.032 83.513 43.194 1.00 0.00 H ATOM 115 CG LYS B 4 0.511 84.557 41.353 1.00 0.00 C ATOM 116 HG2 LYS B 4 -0.169 85.197 41.916 1.00 0.00 H ATOM 117 HG3 LYS B 4 1.482 85.045 41.268 1.00 0.00 H ATOM 118 CD LYS B 4 -0.068 84.308 39.935 1.00 0.00 C ATOM 119 HD2 LYS B 4 0.367 83.379 39.566 1.00 0.00 H ATOM 120 HD3 LYS B 4 -1.146 84.186 40.042 1.00 0.00 H ATOM 121 CE LYS B 4 0.225 85.450 38.931 1.00 0.00 C ATOM 122 HE2 LYS B 4 -0.218 86.364 39.327 1.00 0.00 H ATOM 123 HE3 LYS B 4 1.307 85.569 38.867 1.00 0.00 H ATOM 124 NZ LYS B 4 -0.332 85.177 37.557 1.00 0.00 N ATOM 125 HZ1 LYS B 4 -1.334 85.067 37.616 1.00 0.00 H ATOM 126 HZ2 LYS B 4 -0.113 85.950 36.945 1.00 0.00 H ATOM 127 HZ3 LYS B 4 0.078 84.330 37.190 1.00 0.00 H ATOM 128 C LYS B 4 2.147 81.178 42.544 1.00 0.00 C ATOM 129 O ALYS B 4 1.284 80.471 43.043 1.00 0.00 O ATOM 130 O BLYS B 4 1.284 80.471 43.043 1.00 0.00 O TER HETATM 131 O1B GDP A 7 8.875 86.447 37.778 1.00 0.00 O HETATM 132 PB GDP A 7 9.784 85.563 37.007 1.00 0.00 P HETATM 133 O2B GDP A 7 9.897 84.148 37.414 1.00 0.00 O HETATM 134 O3B GDP A 7 11.201 86.125 36.990 1.00 0.00 O HETATM 135 O3A GDP A 7 9.360 85.532 35.497 1.00 0.00 O HETATM 136 PA GDP A 7 8.710 84.388 34.580 1.00 0.00 P HETATM 137 O1A GDP A 7 7.423 83.996 35.135 1.00 0.00 O HETATM 138 O2A GDP A 7 9.740 83.380 34.358 1.00 0.00 O HETATM 139 O5* GDP A 7 8.528 85.213 33.238 1.00 0.00 O HETATM 140 C5* GDP A 7 7.532 86.212 33.034 1.00 0.00 C HETATM 141 H50 GDP A 7 7.861 87.119 33.469 1.00 0.00 H HETATM 142 H51 GDP A 7 6.616 85.919 33.477 1.00 0.00 H HETATM 143 C4* GDP A 7 6.730 85.907 31.739 1.00 0.00 C HETATM 144 H40 GDP A 7 5.939 86.652 31.657 1.00 0.00 H HETATM 145 O4* GDP A 7 7.571 86.158 30.624 1.00 0.00 O HETATM 146 C1* GDP A 7 7.617 85.023 29.734 1.00 0.00 C HETATM 147 H10 GDP A 7 7.037 85.139 28.819 1.00 0.00 H HETATM 148 N9 GDP A 7 9.008 84.960 29.259 1.00 0.00 N HETATM 149 C8 GDP A 7 10.142 84.689 29.984 1.00 0.00 C HETATM 150 H80 GDP A 7 10.044 84.440 31.030 1.00 0.00 H HETATM 151 N7 GDP A 7 11.252 84.763 29.319 1.00 0.00 N HETATM 152 C5 GDP A 7 10.826 85.121 28.035 1.00 0.00 C HETATM 153 C6 GDP A 7 11.584 85.355 26.856 1.00 0.00 C HETATM 154 O6 GDP A 7 12.802 85.280 26.720 1.00 0.00 O HETATM 155 N1 GDP A 7 10.785 85.705 25.782 1.00 0.00 N HETATM 156 H1N GDP A 7 11.237 85.903 24.912 1.00 0.00 H HETATM 157 C2 GDP A 7 9.418 85.808 25.821 1.00 0.00 C HETATM 158 N2 GDP A 7 8.800 86.145 24.706 1.00 0.00 N HETATM 159 H21 GDP A 7 9.226 86.351 23.813 1.00 0.00 H HETATM 160 H22 GDP A 7 7.794 86.225 24.754 1.00 0.00 H HETATM 161 N3 GDP A 7 8.689 85.595 26.916 1.00 0.00 N HETATM 162 C4 GDP A 7 9.460 85.249 27.988 1.00 0.00 C HETATM 163 C3* GDP A 7 6.222 84.464 31.525 1.00 0.00 C HETATM 164 H30 GDP A 7 5.697 83.680 32.071 1.00 0.00 H HETATM 165 C2* GDP A 7 7.196 83.836 30.552 1.00 0.00 C HETATM 166 H20 GDP A 7 8.029 83.460 31.146 1.00 0.00 H HETATM 167 O2* GDP A 7 6.667 82.782 29.758 1.00 0.00 O HETATM 168 H2* GDP A 7 7.378 82.474 29.191 1.00 0.00 H HETATM 169 O3* GDP A 7 4.933 84.502 30.955 1.00 0.00 O HETATM 170 H3* GDP A 7 4.539 83.643 30.787 1.00 0.00 H HETATM 171 CA CA A 8 8.662 83.157 38.911 1.00 0.00 CA HETATM 172 O HOH B 5 10.341 83.033 40.331 1.00 14.52 O HETATM 173 O HOH B 6 6.852 83.372 37.663 1.00 10.61 O HETATM 174 O HOH B 7 7.480 82.206 40.427 1.00 12.26 O HETATM 175 O HOH B 8 8.135 85.033 39.786 1.00 15.76 O HETATM 176 O HOH B 9 13.941 92.866 34.673 1.00 2.00 O END bio3d/inst/examples/1dpx.pdb0000644000176200001440000036663014707230357015436 0ustar liggesusersHEADER HYDROLASE 28-DEC-99 1DPX TITLE STRUCTURE OF HEN EGG-WHITE LYSOZYME COMPND MOL_ID: 1; COMPND 2 MOLECULE: LYSOZYME; COMPND 3 CHAIN: A; COMPND 4 EC: 3.2.1.17 SOURCE MOL_ID: 1; SOURCE 2 ORGANISM_SCIENTIFIC: GALLUS GALLUS; SOURCE 3 ORGANISM_COMMON: CHICKEN; SOURCE 4 ORGANISM_TAXID: 9031; SOURCE 5 TISSUE: EGG-WHITE KEYWDS PROTEIN-CHLORIDE COMPLEX, HYDROLASE EXPDTA X-RAY DIFFRACTION AUTHOR M.S.WEISS,G.J.PALM,R.HILGENFELD REVDAT 4 24-FEB-09 1DPX 1 VERSN REVDAT 3 09-OCT-02 1DPX 1 REMARK REVDAT 2 30-AUG-00 1DPX 1 JRNL REVDAT 1 03-JAN-00 1DPX 0 JRNL AUTH M.S.WEISS,G.J.PALM,R.HILGENFELD JRNL TITL CRYSTALLIZATION, STRUCTURE SOLUTION AND REFINEMENT JRNL TITL 2 OF HEN EGG-WHITE LYSOZYME AT PH 8.0 IN THE JRNL TITL 3 PRESENCE OF MPD. JRNL REF ACTA CRYSTALLOGR.,SECT.D V. 56 952 2000 JRNL REFN ISSN 0907-4449 JRNL PMID 10944331 JRNL DOI 10.1107/S0907444900006685 REMARK 1 REMARK 2 REMARK 2 RESOLUTION. 1.65 ANGSTROMS. REMARK 3 REMARK 3 REFINEMENT. REMARK 3 PROGRAM : REFMAC REMARK 3 AUTHORS : MURSHUDOV,VAGIN,DODSON REMARK 3 REMARK 3 DATA USED IN REFINEMENT. REMARK 3 RESOLUTION RANGE HIGH (ANGSTROMS) : 1.65 REMARK 3 RESOLUTION RANGE LOW (ANGSTROMS) : 40.00 REMARK 3 DATA CUTOFF (SIGMA(F)) : 0.000 REMARK 3 COMPLETENESS FOR RANGE (%) : NULL REMARK 3 NUMBER OF REFLECTIONS : 13961 REMARK 3 REMARK 3 FIT TO DATA USED IN REFINEMENT. REMARK 3 CROSS-VALIDATION METHOD : NULL REMARK 3 FREE R VALUE TEST SET SELECTION : RANDOM REMARK 3 R VALUE (WORKING + TEST SET) : NULL REMARK 3 R VALUE (WORKING SET) : 0.187 REMARK 3 FREE R VALUE : 0.246 REMARK 3 FREE R VALUE TEST SET SIZE (%) : NULL REMARK 3 FREE R VALUE TEST SET COUNT : 694 REMARK 3 REMARK 3 NUMBER OF NON-HYDROGEN ATOMS USED IN REFINEMENT. REMARK 3 PROTEIN ATOMS : 1013 REMARK 3 NUCLEIC ACID ATOMS : 0 REMARK 3 HETEROGEN ATOMS : 2 REMARK 3 SOLVENT ATOMS : 177 REMARK 3 REMARK 3 B VALUES. REMARK 3 FROM WILSON PLOT (A**2) : 17.20 REMARK 3 MEAN B VALUE (OVERALL, A**2) : NULL REMARK 3 OVERALL ANISOTROPIC B VALUE. REMARK 3 B11 (A**2) : NULL REMARK 3 B22 (A**2) : NULL REMARK 3 B33 (A**2) : NULL REMARK 3 B12 (A**2) : NULL REMARK 3 B13 (A**2) : NULL REMARK 3 B23 (A**2) : NULL REMARK 3 REMARK 3 ESTIMATED OVERALL COORDINATE ERROR. REMARK 3 ESU BASED ON R VALUE (A): NULL REMARK 3 ESU BASED ON FREE R VALUE (A): NULL REMARK 3 ESU BASED ON MAXIMUM LIKELIHOOD (A): NULL REMARK 3 ESU FOR B VALUES BASED ON MAXIMUM LIKELIHOOD (A**2): NULL REMARK 3 REMARK 3 RMS DEVIATIONS FROM IDEAL VALUES. REMARK 3 DISTANCE RESTRAINTS. RMS SIGMA REMARK 3 BOND LENGTH (A) : NULL ; NULL REMARK 3 ANGLE DISTANCE (A) : NULL ; NULL REMARK 3 INTRAPLANAR 1-4 DISTANCE (A) : NULL ; NULL REMARK 3 H-BOND OR METAL COORDINATION (A) : NULL ; NULL REMARK 3 REMARK 3 PLANE RESTRAINT (A) : NULL ; NULL REMARK 3 CHIRAL-CENTER RESTRAINT (A**3) : NULL ; NULL REMARK 3 REMARK 3 NON-BONDED CONTACT RESTRAINTS. REMARK 3 SINGLE TORSION (A) : NULL ; NULL REMARK 3 MULTIPLE TORSION (A) : NULL ; NULL REMARK 3 H-BOND (X...Y) (A) : NULL ; NULL REMARK 3 H-BOND (X-H...Y) (A) : NULL ; NULL REMARK 3 REMARK 3 CONFORMATIONAL TORSION ANGLE RESTRAINTS. REMARK 3 SPECIFIED (DEGREES) : NULL ; NULL REMARK 3 PLANAR (DEGREES) : NULL ; NULL REMARK 3 STAGGERED (DEGREES) : NULL ; NULL REMARK 3 TRANSVERSE (DEGREES) : NULL ; NULL REMARK 3 REMARK 3 ISOTROPIC THERMAL FACTOR RESTRAINTS. RMS SIGMA REMARK 3 MAIN-CHAIN BOND (A**2) : NULL ; NULL REMARK 3 MAIN-CHAIN ANGLE (A**2) : NULL ; NULL REMARK 3 SIDE-CHAIN BOND (A**2) : NULL ; NULL REMARK 3 SIDE-CHAIN ANGLE (A**2) : NULL ; NULL REMARK 3 REMARK 3 OTHER REFINEMENT REMARKS: NULL REMARK 4 REMARK 4 1DPX COMPLIES WITH FORMAT V. 3.15, 01-DEC-08 REMARK 100 REMARK 100 THIS ENTRY HAS BEEN PROCESSED BY RCSB ON 30-DEC-99. REMARK 100 THE RCSB ID CODE IS RCSB010274. REMARK 200 REMARK 200 EXPERIMENTAL DETAILS REMARK 200 EXPERIMENT TYPE : X-RAY DIFFRACTION REMARK 200 DATE OF DATA COLLECTION : NULL REMARK 200 TEMPERATURE (KELVIN) : 100 REMARK 200 PH : 4.5 REMARK 200 NUMBER OF CRYSTALS USED : 1 REMARK 200 REMARK 200 SYNCHROTRON (Y/N) : N REMARK 200 RADIATION SOURCE : ROTATING ANODE REMARK 200 BEAMLINE : NULL REMARK 200 X-RAY GENERATOR MODEL : ENRAF-NONIUS FR591 REMARK 200 MONOCHROMATIC OR LAUE (M/L) : M REMARK 200 WAVELENGTH OR RANGE (A) : 1.54 REMARK 200 MONOCHROMATOR : NULL REMARK 200 OPTICS : NULL REMARK 200 REMARK 200 DETECTOR TYPE : IMAGE PLATE REMARK 200 DETECTOR MANUFACTURER : MARRESEARCH REMARK 200 INTENSITY-INTEGRATION SOFTWARE : DENZO REMARK 200 DATA SCALING SOFTWARE : SCALEPACK REMARK 200 REMARK 200 NUMBER OF UNIQUE REFLECTIONS : 13962 REMARK 200 RESOLUTION RANGE HIGH (A) : 1.650 REMARK 200 RESOLUTION RANGE LOW (A) : 99.000 REMARK 200 REJECTION CRITERIA (SIGMA(I)) : 0.000 REMARK 200 REMARK 200 OVERALL. REMARK 200 COMPLETENESS FOR RANGE (%) : 99.7 REMARK 200 DATA REDUNDANCY : 12.660 REMARK 200 R MERGE (I) : 0.03800 REMARK 200 R SYM (I) : NULL REMARK 200 FOR THE DATA SET : 51.0000 REMARK 200 REMARK 200 IN THE HIGHEST RESOLUTION SHELL. REMARK 200 HIGHEST RESOLUTION SHELL, RANGE HIGH (A) : 1.65 REMARK 200 HIGHEST RESOLUTION SHELL, RANGE LOW (A) : 1.71 REMARK 200 COMPLETENESS FOR SHELL (%) : 100.0 REMARK 200 DATA REDUNDANCY IN SHELL : NULL REMARK 200 R MERGE FOR SHELL (I) : 0.14300 REMARK 200 R SYM FOR SHELL (I) : NULL REMARK 200 FOR SHELL : NULL REMARK 200 REMARK 200 DIFFRACTION PROTOCOL: SINGLE WAVELENGTH REMARK 200 METHOD USED TO DETERMINE THE STRUCTURE: NULL REMARK 200 SOFTWARE USED: NULL REMARK 200 STARTING MODEL: NULL REMARK 200 REMARK 200 REMARK: NULL REMARK 280 REMARK 280 CRYSTAL REMARK 280 SOLVENT CONTENT, VS (%): 36.15 REMARK 280 MATTHEWS COEFFICIENT, VM (ANGSTROMS**3/DA): 1.93 REMARK 280 REMARK 280 CRYSTALLIZATION CONDITIONS: SODIUM ACETATE, SODIUM CHLORIDE, PH REMARK 280 4.5, VAPOR DIFFUSION, HANGING DROP, TEMPERATURE 293K REMARK 290 REMARK 290 CRYSTALLOGRAPHIC SYMMETRY REMARK 290 SYMMETRY OPERATORS FOR SPACE GROUP: P 43 21 2 REMARK 290 REMARK 290 SYMOP SYMMETRY REMARK 290 NNNMMM OPERATOR REMARK 290 1555 X,Y,Z REMARK 290 2555 -X,-Y,Z+1/2 REMARK 290 3555 -Y+1/2,X+1/2,Z+3/4 REMARK 290 4555 Y+1/2,-X+1/2,Z+1/4 REMARK 290 5555 -X+1/2,Y+1/2,-Z+3/4 REMARK 290 6555 X+1/2,-Y+1/2,-Z+1/4 REMARK 290 7555 Y,X,-Z REMARK 290 8555 -Y,-X,-Z+1/2 REMARK 290 REMARK 290 WHERE NNN -> OPERATOR NUMBER REMARK 290 MMM -> TRANSLATION VECTOR REMARK 290 REMARK 290 CRYSTALLOGRAPHIC SYMMETRY TRANSFORMATIONS REMARK 290 THE FOLLOWING TRANSFORMATIONS OPERATE ON THE ATOM/HETATM REMARK 290 RECORDS IN THIS ENTRY TO PRODUCE CRYSTALLOGRAPHICALLY REMARK 290 RELATED MOLECULES. REMARK 290 SMTRY1 1 1.000000 0.000000 0.000000 0.00000 REMARK 290 SMTRY2 1 0.000000 1.000000 0.000000 0.00000 REMARK 290 SMTRY3 1 0.000000 0.000000 1.000000 0.00000 REMARK 290 SMTRY1 2 -1.000000 0.000000 0.000000 0.00000 REMARK 290 SMTRY2 2 0.000000 -1.000000 0.000000 0.00000 REMARK 290 SMTRY3 2 0.000000 0.000000 1.000000 18.60500 REMARK 290 SMTRY1 3 0.000000 -1.000000 0.000000 38.52500 REMARK 290 SMTRY2 3 1.000000 0.000000 0.000000 38.52500 REMARK 290 SMTRY3 3 0.000000 0.000000 1.000000 27.90750 REMARK 290 SMTRY1 4 0.000000 1.000000 0.000000 38.52500 REMARK 290 SMTRY2 4 -1.000000 0.000000 0.000000 38.52500 REMARK 290 SMTRY3 4 0.000000 0.000000 1.000000 9.30250 REMARK 290 SMTRY1 5 -1.000000 0.000000 0.000000 38.52500 REMARK 290 SMTRY2 5 0.000000 1.000000 0.000000 38.52500 REMARK 290 SMTRY3 5 0.000000 0.000000 -1.000000 27.90750 REMARK 290 SMTRY1 6 1.000000 0.000000 0.000000 38.52500 REMARK 290 SMTRY2 6 0.000000 -1.000000 0.000000 38.52500 REMARK 290 SMTRY3 6 0.000000 0.000000 -1.000000 9.30250 REMARK 290 SMTRY1 7 0.000000 1.000000 0.000000 0.00000 REMARK 290 SMTRY2 7 1.000000 0.000000 0.000000 0.00000 REMARK 290 SMTRY3 7 0.000000 0.000000 -1.000000 0.00000 REMARK 290 SMTRY1 8 0.000000 -1.000000 0.000000 0.00000 REMARK 290 SMTRY2 8 -1.000000 0.000000 0.000000 0.00000 REMARK 290 SMTRY3 8 0.000000 0.000000 -1.000000 18.60500 REMARK 290 REMARK 290 REMARK: NULL REMARK 300 REMARK 300 BIOMOLECULE: 1 REMARK 300 SEE REMARK 350 FOR THE AUTHOR PROVIDED AND/OR PROGRAM REMARK 300 GENERATED ASSEMBLY INFORMATION FOR THE STRUCTURE IN REMARK 300 THIS ENTRY. THE REMARK MAY ALSO PROVIDE INFORMATION ON REMARK 300 BURIED SURFACE AREA. REMARK 350 REMARK 350 COORDINATES FOR A COMPLETE MULTIMER REPRESENTING THE KNOWN REMARK 350 BIOLOGICALLY SIGNIFICANT OLIGOMERIZATION STATE OF THE REMARK 350 MOLECULE CAN BE GENERATED BY APPLYING BIOMT TRANSFORMATIONS REMARK 350 GIVEN BELOW. BOTH NON-CRYSTALLOGRAPHIC AND REMARK 350 CRYSTALLOGRAPHIC OPERATIONS ARE GIVEN. REMARK 350 REMARK 350 BIOMOLECULE: 1 REMARK 350 AUTHOR DETERMINED BIOLOGICAL UNIT: MONOMERIC REMARK 350 APPLY THE FOLLOWING TO CHAINS: A REMARK 350 BIOMT1 1 1.000000 0.000000 0.000000 0.00000 REMARK 350 BIOMT2 1 0.000000 1.000000 0.000000 0.00000 REMARK 350 BIOMT3 1 0.000000 0.000000 1.000000 0.00000 REMARK 375 REMARK 375 SPECIAL POSITION REMARK 375 THE FOLLOWING ATOMS ARE FOUND TO BE WITHIN 0.15 ANGSTROMS REMARK 375 OF A SYMMETRY RELATED ATOM AND ARE ASSUMED TO BE ON SPECIAL REMARK 375 POSITIONS. REMARK 375 REMARK 375 ATOM RES CSSEQI REMARK 375 HOH A 232 LIES ON A SPECIAL POSITION. REMARK 375 HOH A 238 LIES ON A SPECIAL POSITION. REMARK 375 HOH A 240 LIES ON A SPECIAL POSITION. REMARK 375 HOH A 267 LIES ON A SPECIAL POSITION. REMARK 375 HOH A 303 LIES ON A SPECIAL POSITION. REMARK 470 REMARK 470 MISSING ATOM REMARK 470 THE FOLLOWING RESIDUES HAVE MISSING ATOMS(M=MODEL NUMBER; REMARK 470 RES=RESIDUE NAME; C=CHAIN IDENTIFIER; SSEQ=SEQUENCE NUMBER; REMARK 470 I=INSERTION CODE): REMARK 470 M RES CSSEQI ATOMS REMARK 470 LEU A 129 C O REMARK 500 REMARK 500 GEOMETRY AND STEREOCHEMISTRY REMARK 500 SUBTOPIC: CLOSE CONTACTS IN SAME ASYMMETRIC UNIT REMARK 500 REMARK 500 THE FOLLOWING ATOMS ARE IN CLOSE CONTACT. REMARK 500 REMARK 500 ATM1 RES C SSEQI ATM2 RES C SSEQI DISTANCE REMARK 500 O HOH A 237 O HOH A 255 1.69 REMARK 500 O HOH A 290 O HOH A 331 1.95 REMARK 500 O HOH A 298 O HOH A 327 2.02 REMARK 500 O HOH A 330 O HOH A 355 2.13 REMARK 500 O HOH A 229 O HOH A 338 2.14 REMARK 500 O HOH A 214 O HOH A 234 2.16 REMARK 500 REMARK 500 REMARK: NULL REMARK 500 REMARK 500 GEOMETRY AND STEREOCHEMISTRY REMARK 500 SUBTOPIC: CLOSE CONTACTS REMARK 500 REMARK 500 THE FOLLOWING ATOMS THAT ARE RELATED BY CRYSTALLOGRAPHIC REMARK 500 SYMMETRY ARE IN CLOSE CONTACT. AN ATOM LOCATED WITHIN 0.15 REMARK 500 ANGSTROMS OF A SYMMETRY RELATED ATOM IS ASSUMED TO BE ON A REMARK 500 SPECIAL POSITION AND IS, THEREFORE, LISTED IN REMARK 375 REMARK 500 INSTEAD OF REMARK 500. ATOMS WITH NON-BLANK ALTERNATE REMARK 500 LOCATION INDICATORS ARE NOT INCLUDED IN THE CALCULATIONS. REMARK 500 REMARK 500 DISTANCE CUTOFF: REMARK 500 2.2 ANGSTROMS FOR CONTACTS NOT INVOLVING HYDROGEN ATOMS REMARK 500 1.6 ANGSTROMS FOR CONTACTS INVOLVING HYDROGEN ATOMS REMARK 500 REMARK 500 ATM1 RES C SSEQI ATM2 RES C SSEQI SSYMOP DISTANCE REMARK 500 O HOH A 253 O HOH A 331 8555 1.86 REMARK 500 O HOH A 298 O HOH A 298 7556 1.96 REMARK 500 REMARK 500 REMARK: NULL REMARK 500 REMARK 500 GEOMETRY AND STEREOCHEMISTRY REMARK 500 SUBTOPIC: COVALENT BOND ANGLES REMARK 500 REMARK 500 THE STEREOCHEMICAL PARAMETERS OF THE FOLLOWING RESIDUES REMARK 500 HAVE VALUES WHICH DEVIATE FROM EXPECTED VALUES BY MORE REMARK 500 THAN 6*RMSD (M=MODEL NUMBER; RES=RESIDUE NAME; C=CHAIN REMARK 500 IDENTIFIER; SSEQ=SEQUENCE NUMBER; I=INSERTION CODE). REMARK 500 REMARK 500 STANDARD TABLE: REMARK 500 FORMAT: (10X,I3,1X,A3,1X,A1,I4,A1,3(1X,A4,2X),12X,F5.1) REMARK 500 REMARK 500 EXPECTED VALUES PROTEIN: ENGH AND HUBER, 1999 REMARK 500 EXPECTED VALUES NUCLEIC ACID: CLOWNEY ET AL 1996 REMARK 500 REMARK 500 M RES CSSEQI ATM1 ATM2 ATM3 REMARK 500 ARG A 5 NE - CZ - NH2 ANGL. DEV. = -3.3 DEGREES REMARK 500 ARG A 14 NE - CZ - NH1 ANGL. DEV. = 3.3 DEGREES REMARK 500 ARG A 14 NE - CZ - NH2 ANGL. DEV. = -6.4 DEGREES REMARK 500 ARG A 45 NE - CZ - NH1 ANGL. DEV. = -3.6 DEGREES REMARK 500 REMARK 500 REMARK: NULL REMARK 800 REMARK 800 SITE REMARK 800 SITE_IDENTIFIER: AC1 REMARK 800 EVIDENCE_CODE: SOFTWARE REMARK 800 SITE_DESCRIPTION: BINDING SITE FOR RESIDUE CL A 200 REMARK 800 SITE_IDENTIFIER: AC2 REMARK 800 EVIDENCE_CODE: SOFTWARE REMARK 800 SITE_DESCRIPTION: BINDING SITE FOR RESIDUE CL A 201 REMARK 900 REMARK 900 RELATED ENTRIES REMARK 900 RELATED ID: 1DPW RELATED DB: PDB REMARK 900 STRUCTURE OF HEN EGG-WHITE LYSOZYME IN COMPLEX WITH MPD DBREF 1DPX A 1 129 UNP P00698 LYSC_CHICK 19 147 SEQRES 1 A 129 LYS VAL PHE GLY ARG CYS GLU LEU ALA ALA ALA MET LYS SEQRES 2 A 129 ARG HIS GLY LEU ASP ASN TYR ARG GLY TYR SER LEU GLY SEQRES 3 A 129 ASN TRP VAL CYS ALA ALA LYS PHE GLU SER ASN PHE ASN SEQRES 4 A 129 THR GLN ALA THR ASN ARG ASN THR ASP GLY SER THR ASP SEQRES 5 A 129 TYR GLY ILE LEU GLN ILE ASN SER ARG TRP TRP CYS ASN SEQRES 6 A 129 ASP GLY ARG THR PRO GLY SER ARG ASN LEU CYS ASN ILE SEQRES 7 A 129 PRO CYS SER ALA LEU LEU SER SER ASP ILE THR ALA SER SEQRES 8 A 129 VAL ASN CYS ALA LYS LYS ILE VAL SER ASP GLY ASN GLY SEQRES 9 A 129 MET ASN ALA TRP VAL ALA TRP ARG ASN ARG CYS LYS GLY SEQRES 10 A 129 THR ASP VAL GLN ALA TRP ILE ARG GLY CYS ARG LEU HET CL A 200 1 HET CL A 201 1 HETNAM CL CHLORIDE ION FORMUL 2 CL 2(CL 1-) FORMUL 4 HOH *177(H2 O) HELIX 1 1 GLY A 4 HIS A 15 1 12 HELIX 2 2 SER A 24 ASN A 37 1 14 HELIX 3 3 CYS A 80 SER A 85 5 6 HELIX 4 4 ILE A 88 SER A 100 1 13 HELIX 5 5 ASN A 103 ALA A 107 5 5 HELIX 6 6 TRP A 108 CYS A 115 1 8 HELIX 7 7 ASP A 119 ARG A 125 5 7 SHEET 1 A 3 THR A 43 ARG A 45 0 SHEET 2 A 3 THR A 51 TYR A 53 -1 N ASP A 52 O ASN A 44 SHEET 3 A 3 ILE A 58 ASN A 59 -1 O ILE A 58 N TYR A 53 SSBOND 1 CYS A 6 CYS A 127 1555 1555 1.99 SSBOND 2 CYS A 30 CYS A 115 1555 1555 2.04 SSBOND 3 CYS A 64 CYS A 80 1555 1555 2.04 SSBOND 4 CYS A 76 CYS A 94 1555 1555 2.04 SITE 1 AC1 2 TYR A 23 ASN A 113 SITE 1 AC2 4 SER A 24 GLY A 26 GLN A 121 ILE A 124 CRYST1 77.050 77.050 37.210 90.00 90.00 90.00 P 43 21 2 8 ORIGX1 1.000000 0.000000 0.000000 0.00000 ORIGX2 0.000000 1.000000 0.000000 0.00000 ORIGX3 0.000000 0.000000 1.000000 0.00000 SCALE1 0.012980 0.000000 0.000000 0.00000 SCALE2 0.000000 0.012980 0.000000 0.00000 SCALE3 0.000000 0.000000 0.026870 0.00000 ATOM 1 N LYS A 1 1.990 9.126 10.027 1.00 16.50 N ATOM 2 CA LYS A 1 1.067 9.654 8.994 1.00 16.87 C ATOM 3 C LYS A 1 1.167 11.156 8.783 1.00 16.39 C ATOM 4 O LYS A 1 1.155 11.908 9.776 1.00 15.96 O ATOM 5 CB LYS A 1 -0.361 9.267 9.380 1.00 18.93 C ATOM 6 CG LYS A 1 -1.429 9.868 8.467 1.00 19.34 C ATOM 7 CD LYS A 1 -2.781 9.259 8.802 1.00 21.34 C ATOM 8 CE ALYS A 1 -3.899 9.938 8.018 0.50 21.41 C ATOM 9 CE BLYS A 1 -3.839 10.005 7.983 0.50 22.40 C ATOM 10 NZ ALYS A 1 -4.034 9.390 6.642 0.50 21.17 N ATOM 11 NZ BLYS A 1 -5.212 9.563 8.333 0.50 24.73 N ATOM 12 N VAL A 2 1.278 11.558 7.532 1.00 16.01 N ATOM 13 CA VAL A 2 1.246 12.972 7.197 1.00 15.32 C ATOM 14 C VAL A 2 -0.182 13.272 6.760 1.00 15.17 C ATOM 15 O VAL A 2 -0.639 12.820 5.703 1.00 16.01 O ATOM 16 CB VAL A 2 2.284 13.391 6.154 1.00 18.75 C ATOM 17 CG1 VAL A 2 2.168 14.868 5.819 1.00 19.78 C ATOM 18 CG2 VAL A 2 3.681 13.115 6.719 1.00 18.93 C ATOM 19 N PHE A 3 -0.913 13.974 7.612 1.00 13.76 N ATOM 20 CA PHE A 3 -2.285 14.327 7.313 1.00 13.57 C ATOM 21 C PHE A 3 -2.360 15.431 6.261 1.00 14.39 C ATOM 22 O PHE A 3 -1.528 16.329 6.193 1.00 14.83 O ATOM 23 CB PHE A 3 -3.040 14.841 8.530 1.00 16.19 C ATOM 24 CG PHE A 3 -3.673 13.812 9.419 1.00 15.21 C ATOM 25 CD1 PHE A 3 -2.900 13.114 10.329 1.00 15.00 C ATOM 26 CD2 PHE A 3 -5.043 13.579 9.383 1.00 16.87 C ATOM 27 CE1 PHE A 3 -3.461 12.164 11.170 1.00 18.25 C ATOM 28 CE2 PHE A 3 -5.600 12.635 10.219 1.00 15.89 C ATOM 29 CZ PHE A 3 -4.818 11.917 11.104 1.00 15.57 C ATOM 30 N GLY A 4 -3.481 15.362 5.521 1.00 14.57 N ATOM 31 CA GLY A 4 -3.767 16.491 4.630 1.00 14.92 C ATOM 32 C GLY A 4 -4.437 17.545 5.518 1.00 15.36 C ATOM 33 O GLY A 4 -4.936 17.238 6.603 1.00 16.28 O ATOM 34 N ARG A 5 -4.454 18.789 5.074 1.00 15.67 N ATOM 35 CA ARG A 5 -5.049 19.858 5.883 1.00 15.52 C ATOM 36 C ARG A 5 -6.508 19.624 6.233 1.00 16.36 C ATOM 37 O ARG A 5 -6.896 19.671 7.412 1.00 15.56 O ATOM 38 CB ARG A 5 -4.855 21.159 5.106 1.00 17.05 C ATOM 39 CG ARG A 5 -5.422 22.389 5.791 1.00 18.54 C ATOM 40 CD ARG A 5 -5.134 23.622 4.972 1.00 15.70 C ATOM 41 NE ARG A 5 -5.637 23.599 3.603 1.00 19.15 N ATOM 42 CZ ARG A 5 -6.888 23.946 3.282 1.00 16.84 C ATOM 43 NH1 ARG A 5 -7.769 24.339 4.191 1.00 16.94 N ATOM 44 NH2 ARG A 5 -7.219 23.890 1.989 1.00 21.28 N ATOM 45 N CYS A 6 -7.354 19.370 5.237 1.00 16.34 N ATOM 46 CA CYS A 6 -8.777 19.141 5.499 1.00 16.26 C ATOM 47 C CYS A 6 -9.012 17.803 6.197 1.00 14.69 C ATOM 48 O CYS A 6 -9.947 17.658 6.988 1.00 14.93 O ATOM 49 CB CYS A 6 -9.612 19.149 4.208 1.00 17.62 C ATOM 50 SG CYS A 6 -9.692 20.816 3.487 1.00 18.05 S ATOM 51 N GLU A 7 -8.149 16.833 5.920 1.00 14.37 N ATOM 52 CA GLU A 7 -8.178 15.522 6.535 1.00 14.18 C ATOM 53 C GLU A 7 -7.993 15.656 8.053 1.00 14.37 C ATOM 54 O GLU A 7 -8.764 15.069 8.822 1.00 14.87 O ATOM 55 CB GLU A 7 -7.098 14.596 5.961 1.00 15.22 C ATOM 56 CG GLU A 7 -7.183 13.180 6.526 1.00 15.78 C ATOM 57 CD GLU A 7 -6.048 12.315 6.036 1.00 17.87 C ATOM 58 OE1 GLU A 7 -5.017 12.791 5.501 1.00 18.58 O ATOM 59 OE2 GLU A 7 -6.222 11.079 6.172 1.00 20.43 O ATOM 60 N LEU A 8 -7.015 16.490 8.416 1.00 14.34 N ATOM 61 CA LEU A 8 -6.778 16.716 9.847 1.00 13.81 C ATOM 62 C LEU A 8 -7.907 17.524 10.455 1.00 13.61 C ATOM 63 O LEU A 8 -8.369 17.246 11.572 1.00 14.07 O ATOM 64 CB LEU A 8 -5.420 17.412 10.063 1.00 11.51 C ATOM 65 CG LEU A 8 -5.119 17.682 11.541 1.00 12.42 C ATOM 66 CD1 LEU A 8 -5.065 16.387 12.326 1.00 13.65 C ATOM 67 CD2 LEU A 8 -3.793 18.446 11.655 1.00 15.48 C ATOM 68 N ALA A 9 -8.435 18.511 9.730 1.00 13.23 N ATOM 69 CA ALA A 9 -9.522 19.337 10.243 1.00 12.88 C ATOM 70 C ALA A 9 -10.719 18.454 10.567 1.00 14.06 C ATOM 71 O ALA A 9 -11.322 18.567 11.634 1.00 14.68 O ATOM 72 CB ALA A 9 -9.839 20.411 9.207 1.00 16.86 C ATOM 73 N ALA A 10 -11.045 17.507 9.677 1.00 13.71 N ATOM 74 CA ALA A 10 -12.200 16.640 9.937 1.00 15.49 C ATOM 75 C ALA A 10 -11.991 15.727 11.132 1.00 15.60 C ATOM 76 O ALA A 10 -12.933 15.472 11.884 1.00 16.64 O ATOM 77 CB ALA A 10 -12.541 15.763 8.735 1.00 16.77 C ATOM 78 N ALA A 11 -10.760 15.269 11.337 1.00 14.64 N ATOM 79 CA ALA A 11 -10.458 14.389 12.465 1.00 15.70 C ATOM 80 C ALA A 11 -10.572 15.118 13.792 1.00 15.70 C ATOM 81 O ALA A 11 -11.106 14.626 14.780 1.00 15.52 O ATOM 82 CB ALA A 11 -9.073 13.794 12.274 1.00 17.40 C ATOM 83 N MET A 12 -9.984 16.327 13.799 1.00 14.14 N ATOM 84 CA MET A 12 -10.053 17.189 14.978 1.00 14.62 C ATOM 85 C MET A 12 -11.494 17.553 15.336 1.00 15.86 C ATOM 86 O MET A 12 -11.829 17.508 16.505 1.00 16.32 O ATOM 87 CB MET A 12 -9.268 18.475 14.742 1.00 15.01 C ATOM 88 CG MET A 12 -7.763 18.206 14.809 1.00 13.33 C ATOM 89 SD MET A 12 -6.840 19.722 14.431 1.00 12.91 S ATOM 90 CE MET A 12 -5.352 19.364 15.355 1.00 16.71 C ATOM 91 N LYS A 13 -12.298 17.858 14.318 1.00 15.42 N ATOM 92 CA LYS A 13 -13.705 18.186 14.557 1.00 15.76 C ATOM 93 C LYS A 13 -14.460 16.954 15.057 1.00 16.81 C ATOM 94 O LYS A 13 -15.206 17.039 16.042 1.00 17.14 O ATOM 95 CB LYS A 13 -14.333 18.675 13.250 1.00 14.49 C ATOM 96 CG LYS A 13 -15.814 19.057 13.415 1.00 15.69 C ATOM 97 CD LYS A 13 -16.288 19.603 12.064 1.00 19.90 C ATOM 98 CE LYS A 13 -17.760 20.006 12.201 1.00 29.11 C ATOM 99 NZ LYS A 13 -18.275 20.550 10.912 1.00 32.38 N ATOM 100 N ARG A 14 -14.176 15.801 14.446 1.00 17.07 N ATOM 101 CA ARG A 14 -14.889 14.602 14.941 1.00 16.60 C ATOM 102 C ARG A 14 -14.581 14.313 16.402 1.00 17.29 C ATOM 103 O ARG A 14 -15.463 13.906 17.184 1.00 16.75 O ATOM 104 CB AARG A 14 -14.605 13.371 14.082 0.50 16.07 C ATOM 105 CB BARG A 14 -14.553 13.417 14.033 0.50 19.58 C ATOM 106 CG AARG A 14 -15.192 12.096 14.704 0.50 19.04 C ATOM 107 CG BARG A 14 -15.114 12.109 14.566 0.50 26.17 C ATOM 108 CD AARG A 14 -15.005 10.934 13.737 0.50 18.21 C ATOM 109 CD BARG A 14 -14.728 10.947 13.663 0.50 30.80 C ATOM 110 NE AARG A 14 -13.651 10.968 13.222 0.50 10.74 N ATOM 111 NE BARG A 14 -14.363 9.812 14.504 0.50 33.11 N ATOM 112 CZ AARG A 14 -12.569 10.399 13.707 0.50 12.39 C ATOM 113 CZ BARG A 14 -13.122 9.501 14.851 0.50 33.04 C ATOM 114 NH1AARG A 14 -12.566 9.620 14.789 0.50 17.90 N ATOM 115 NH1BARG A 14 -12.093 10.215 14.408 0.50 36.74 N ATOM 116 NH2AARG A 14 -11.479 10.640 13.006 0.50 7.03 N ATOM 117 NH2BARG A 14 -12.884 8.455 15.623 0.50 33.50 N ATOM 118 N HIS A 15 -13.353 14.586 16.819 1.00 16.36 N ATOM 119 CA HIS A 15 -12.914 14.403 18.184 1.00 15.95 C ATOM 120 C HIS A 15 -13.228 15.565 19.114 1.00 17.32 C ATOM 121 O HIS A 15 -12.716 15.564 20.246 1.00 17.87 O ATOM 122 CB HIS A 15 -11.414 14.123 18.193 1.00 18.12 C ATOM 123 CG HIS A 15 -11.023 12.748 17.764 1.00 19.90 C ATOM 124 ND1 HIS A 15 -10.327 12.406 16.647 1.00 24.89 N ATOM 125 CD2 HIS A 15 -11.297 11.583 18.430 1.00 20.42 C ATOM 126 CE1 HIS A 15 -10.156 11.089 16.614 1.00 20.82 C ATOM 127 NE2 HIS A 15 -10.745 10.579 17.674 1.00 24.48 N ATOM 128 N GLY A 16 -14.017 16.535 18.687 1.00 16.73 N ATOM 129 CA GLY A 16 -14.489 17.587 19.538 1.00 18.49 C ATOM 130 C GLY A 16 -13.547 18.729 19.839 1.00 18.36 C ATOM 131 O GLY A 16 -13.769 19.385 20.858 1.00 19.10 O ATOM 132 N LEU A 17 -12.597 19.017 18.948 1.00 17.90 N ATOM 133 CA LEU A 17 -11.750 20.183 19.211 1.00 19.00 C ATOM 134 C LEU A 17 -12.327 21.493 18.706 1.00 19.55 C ATOM 135 O LEU A 17 -11.875 22.550 19.160 1.00 18.56 O ATOM 136 CB LEU A 17 -10.361 20.033 18.589 1.00 17.64 C ATOM 137 CG LEU A 17 -9.332 19.205 19.310 1.00 18.62 C ATOM 138 CD1 LEU A 17 -8.019 19.267 18.531 1.00 15.31 C ATOM 139 CD2 LEU A 17 -9.085 19.671 20.751 1.00 16.33 C ATOM 140 N ASP A 18 -13.239 21.485 17.731 1.00 19.98 N ATOM 141 CA ASP A 18 -13.802 22.728 17.200 1.00 21.21 C ATOM 142 C ASP A 18 -14.550 23.446 18.318 1.00 21.85 C ATOM 143 O ASP A 18 -15.519 22.940 18.867 1.00 23.12 O ATOM 144 CB ASP A 18 -14.740 22.516 16.018 1.00 21.68 C ATOM 145 CG ASP A 18 -15.187 23.744 15.260 1.00 27.36 C ATOM 146 OD1 ASP A 18 -14.740 24.890 15.491 1.00 27.43 O ATOM 147 OD2 ASP A 18 -16.029 23.598 14.321 1.00 27.84 O ATOM 148 N ASN A 19 -14.064 24.621 18.681 1.00 20.27 N ATOM 149 CA ASN A 19 -14.573 25.444 19.745 1.00 19.44 C ATOM 150 C ASN A 19 -14.302 24.888 21.139 1.00 17.76 C ATOM 151 O ASN A 19 -14.917 25.354 22.109 1.00 17.54 O ATOM 152 CB ASN A 19 -16.067 25.777 19.565 1.00 27.45 C ATOM 153 CG ASN A 19 -16.236 26.636 18.314 1.00 38.17 C ATOM 154 OD1 ASN A 19 -15.606 27.696 18.245 1.00 45.03 O ATOM 155 ND2 ASN A 19 -17.045 26.157 17.377 1.00 42.07 N ATOM 156 N TYR A 20 -13.343 23.983 21.279 1.00 16.42 N ATOM 157 CA TYR A 20 -12.977 23.461 22.590 1.00 16.85 C ATOM 158 C TYR A 20 -12.221 24.550 23.355 1.00 16.62 C ATOM 159 O TYR A 20 -11.306 25.193 22.847 1.00 15.80 O ATOM 160 CB TYR A 20 -12.125 22.207 22.508 1.00 16.39 C ATOM 161 CG TYR A 20 -11.974 21.587 23.884 1.00 16.50 C ATOM 162 CD1 TYR A 20 -12.947 20.683 24.321 1.00 16.56 C ATOM 163 CD2 TYR A 20 -10.897 21.865 24.695 1.00 16.61 C ATOM 164 CE1 TYR A 20 -12.830 20.105 25.580 1.00 18.24 C ATOM 165 CE2 TYR A 20 -10.781 21.285 25.949 1.00 17.87 C ATOM 166 CZ TYR A 20 -11.754 20.408 26.376 1.00 19.79 C ATOM 167 OH TYR A 20 -11.630 19.839 27.620 1.00 21.37 O ATOM 168 N ARG A 21 -12.755 24.874 24.537 1.00 15.91 N ATOM 169 CA ARG A 21 -12.219 25.991 25.333 1.00 16.69 C ATOM 170 C ARG A 21 -12.302 27.296 24.546 1.00 15.91 C ATOM 171 O ARG A 21 -11.558 28.240 24.789 1.00 15.76 O ATOM 172 CB ARG A 21 -10.805 25.757 25.837 1.00 19.57 C ATOM 173 CG ARG A 21 -10.632 24.645 26.847 1.00 28.39 C ATOM 174 CD ARG A 21 -11.453 24.827 28.105 1.00 39.22 C ATOM 175 NE ARG A 21 -10.800 25.644 29.118 1.00 42.28 N ATOM 176 CZ ARG A 21 -10.843 25.332 30.417 1.00 45.46 C ATOM 177 NH1 ARG A 21 -10.239 26.099 31.317 1.00 46.44 N ATOM 178 NH2 ARG A 21 -11.467 24.242 30.853 1.00 45.99 N ATOM 179 N GLY A 22 -13.245 27.394 23.609 1.00 15.41 N ATOM 180 CA GLY A 22 -13.517 28.540 22.795 1.00 14.49 C ATOM 181 C GLY A 22 -12.600 28.705 21.595 1.00 14.19 C ATOM 182 O GLY A 22 -12.656 29.762 20.970 1.00 15.22 O ATOM 183 N TYR A 23 -11.769 27.707 21.306 1.00 14.34 N ATOM 184 CA TYR A 23 -10.841 27.843 20.178 1.00 14.12 C ATOM 185 C TYR A 23 -11.398 27.187 18.912 1.00 13.63 C ATOM 186 O TYR A 23 -11.617 25.979 18.891 1.00 14.94 O ATOM 187 CB TYR A 23 -9.497 27.215 20.564 1.00 13.40 C ATOM 188 CG TYR A 23 -8.754 28.070 21.578 1.00 12.80 C ATOM 189 CD1 TYR A 23 -7.970 29.120 21.154 1.00 12.01 C ATOM 190 CD2 TYR A 23 -8.842 27.789 22.936 1.00 13.06 C ATOM 191 CE1 TYR A 23 -7.297 29.926 22.057 1.00 12.42 C ATOM 192 CE2 TYR A 23 -8.167 28.586 23.861 1.00 12.92 C ATOM 193 CZ TYR A 23 -7.415 29.654 23.408 1.00 13.15 C ATOM 194 OH TYR A 23 -6.718 30.463 24.271 1.00 12.84 O ATOM 195 N SER A 24 -11.608 27.999 17.875 1.00 13.73 N ATOM 196 CA SER A 24 -12.187 27.470 16.639 1.00 14.62 C ATOM 197 C SER A 24 -11.267 26.481 15.954 1.00 14.51 C ATOM 198 O SER A 24 -10.041 26.459 16.147 1.00 14.88 O ATOM 199 CB SER A 24 -12.515 28.626 15.682 1.00 14.56 C ATOM 200 OG SER A 24 -11.284 29.222 15.269 1.00 15.71 O ATOM 201 N LEU A 25 -11.858 25.652 15.090 1.00 14.36 N ATOM 202 CA LEU A 25 -11.079 24.612 14.399 1.00 13.88 C ATOM 203 C LEU A 25 -9.836 25.105 13.693 1.00 13.76 C ATOM 204 O LEU A 25 -8.794 24.415 13.751 1.00 12.85 O ATOM 205 CB LEU A 25 -11.992 23.868 13.427 1.00 14.00 C ATOM 206 CG LEU A 25 -11.458 22.596 12.769 1.00 14.02 C ATOM 207 CD1 LEU A 25 -11.122 21.576 13.850 1.00 17.04 C ATOM 208 CD2 LEU A 25 -12.485 22.005 11.804 1.00 14.38 C ATOM 209 N GLY A 26 -9.880 26.275 13.073 1.00 13.52 N ATOM 210 CA GLY A 26 -8.736 26.834 12.357 1.00 13.74 C ATOM 211 C GLY A 26 -7.548 27.066 13.283 1.00 12.49 C ATOM 212 O GLY A 26 -6.398 26.967 12.868 1.00 12.78 O ATOM 213 N ASN A 27 -7.795 27.451 14.531 1.00 12.27 N ATOM 214 CA ASN A 27 -6.702 27.584 15.498 1.00 11.78 C ATOM 215 C ASN A 27 -5.942 26.275 15.715 1.00 13.00 C ATOM 216 O ASN A 27 -4.711 26.313 15.789 1.00 12.58 O ATOM 217 CB ASN A 27 -7.248 28.040 16.859 1.00 11.61 C ATOM 218 CG ASN A 27 -7.491 29.541 16.837 1.00 14.37 C ATOM 219 OD1 ASN A 27 -6.564 30.355 16.873 1.00 13.63 O ATOM 220 ND2 ASN A 27 -8.762 29.922 16.777 1.00 13.86 N ATOM 221 N TRP A 28 -6.679 25.170 15.848 1.00 12.57 N ATOM 222 CA TRP A 28 -6.039 23.870 16.062 1.00 12.05 C ATOM 223 C TRP A 28 -5.310 23.366 14.831 1.00 12.07 C ATOM 224 O TRP A 28 -4.234 22.756 14.919 1.00 12.53 O ATOM 225 CB TRP A 28 -7.118 22.850 16.456 1.00 14.11 C ATOM 226 CG TRP A 28 -7.754 23.223 17.773 1.00 11.68 C ATOM 227 CD1 TRP A 28 -8.971 23.792 17.986 1.00 12.85 C ATOM 228 CD2 TRP A 28 -7.169 22.999 19.062 1.00 14.15 C ATOM 229 NE1 TRP A 28 -9.186 23.948 19.342 1.00 12.86 N ATOM 230 CE2 TRP A 28 -8.082 23.465 20.012 1.00 12.97 C ATOM 231 CE3 TRP A 28 -5.961 22.440 19.481 1.00 14.04 C ATOM 232 CZ2 TRP A 28 -7.841 23.401 21.381 1.00 13.14 C ATOM 233 CZ3 TRP A 28 -5.709 22.383 20.855 1.00 13.88 C ATOM 234 CH2 TRP A 28 -6.650 22.855 21.788 1.00 14.45 C ATOM 235 N VAL A 29 -5.909 23.591 13.647 1.00 11.44 N ATOM 236 CA VAL A 29 -5.220 23.174 12.403 1.00 11.51 C ATOM 237 C VAL A 29 -3.963 24.005 12.219 1.00 11.97 C ATOM 238 O VAL A 29 -2.891 23.493 11.846 1.00 12.00 O ATOM 239 CB VAL A 29 -6.161 23.283 11.196 1.00 12.38 C ATOM 240 CG1 VAL A 29 -5.430 22.951 9.892 1.00 13.79 C ATOM 241 CG2 VAL A 29 -7.316 22.296 11.343 1.00 12.68 C ATOM 242 N CYS A 30 -4.066 25.328 12.467 1.00 11.38 N ATOM 243 CA CYS A 30 -2.893 26.198 12.355 1.00 11.20 C ATOM 244 C CYS A 30 -1.808 25.747 13.333 1.00 11.19 C ATOM 245 O CYS A 30 -0.625 25.665 12.969 1.00 10.49 O ATOM 246 CB CYS A 30 -3.314 27.648 12.667 1.00 12.47 C ATOM 247 SG CYS A 30 -1.972 28.859 12.483 1.00 11.06 S ATOM 248 N ALA A 31 -2.169 25.458 14.578 1.00 12.04 N ATOM 249 CA ALA A 31 -1.143 24.998 15.541 1.00 10.89 C ATOM 250 C ALA A 31 -0.474 23.723 15.055 1.00 11.75 C ATOM 251 O ALA A 31 0.765 23.580 15.117 1.00 12.20 O ATOM 252 CB ALA A 31 -1.829 24.727 16.876 1.00 12.94 C ATOM 253 N ALA A 32 -1.292 22.769 14.573 1.00 11.68 N ATOM 254 CA ALA A 32 -0.693 21.528 14.060 1.00 11.94 C ATOM 255 C ALA A 32 0.209 21.764 12.857 1.00 11.76 C ATOM 256 O ALA A 32 1.283 21.132 12.708 1.00 10.64 O ATOM 257 CB ALA A 32 -1.797 20.522 13.726 1.00 10.36 C ATOM 258 N LYS A 33 -0.149 22.685 11.966 1.00 11.49 N ATOM 259 CA LYS A 33 0.725 22.960 10.821 1.00 11.83 C ATOM 260 C LYS A 33 2.108 23.410 11.294 1.00 12.00 C ATOM 261 O LYS A 33 3.114 22.907 10.788 1.00 12.88 O ATOM 262 CB LYS A 33 0.087 24.057 9.964 1.00 13.47 C ATOM 263 CG LYS A 33 1.056 24.658 8.925 1.00 17.22 C ATOM 264 CD LYS A 33 1.245 23.642 7.826 1.00 17.45 C ATOM 265 CE LYS A 33 2.151 24.131 6.708 1.00 23.72 C ATOM 266 NZ LYS A 33 2.264 23.054 5.675 1.00 23.82 N ATOM 267 N PHE A 34 2.132 24.372 12.228 1.00 12.51 N ATOM 268 CA PHE A 34 3.432 24.902 12.635 1.00 12.30 C ATOM 269 C PHE A 34 4.122 24.074 13.700 1.00 14.82 C ATOM 270 O PHE A 34 5.365 24.183 13.832 1.00 15.60 O ATOM 271 CB PHE A 34 3.326 26.388 13.004 1.00 11.76 C ATOM 272 CG PHE A 34 2.881 27.201 11.807 1.00 12.09 C ATOM 273 CD1 PHE A 34 3.602 27.148 10.633 1.00 11.72 C ATOM 274 CD2 PHE A 34 1.749 28.003 11.912 1.00 13.88 C ATOM 275 CE1 PHE A 34 3.183 27.906 9.547 1.00 12.51 C ATOM 276 CE2 PHE A 34 1.352 28.756 10.802 1.00 16.14 C ATOM 277 CZ PHE A 34 2.071 28.700 9.622 1.00 15.05 C ATOM 278 N GLU A 35 3.381 23.215 14.383 1.00 13.40 N ATOM 279 CA GLU A 35 4.074 22.368 15.373 1.00 13.41 C ATOM 280 C GLU A 35 4.676 21.148 14.682 1.00 13.91 C ATOM 281 O GLU A 35 5.832 20.751 14.982 1.00 14.32 O ATOM 282 CB GLU A 35 3.070 21.947 16.444 1.00 15.49 C ATOM 283 CG GLU A 35 2.661 23.063 17.392 1.00 11.90 C ATOM 284 CD GLU A 35 3.765 23.547 18.292 1.00 13.50 C ATOM 285 OE1 GLU A 35 4.922 23.044 18.283 1.00 13.70 O ATOM 286 OE2 GLU A 35 3.505 24.506 19.059 1.00 13.45 O ATOM 287 N SER A 36 3.941 20.534 13.780 1.00 12.23 N ATOM 288 CA SER A 36 4.390 19.254 13.204 1.00 12.91 C ATOM 289 C SER A 36 4.329 19.098 11.705 1.00 12.45 C ATOM 290 O SER A 36 4.678 18.049 11.134 1.00 13.32 O ATOM 291 CB SER A 36 3.502 18.133 13.804 1.00 13.38 C ATOM 292 OG SER A 36 2.181 18.269 13.290 1.00 10.74 O ATOM 293 N ASN A 37 3.854 20.129 10.988 1.00 12.49 N ATOM 294 CA ASN A 37 3.615 20.082 9.549 1.00 13.68 C ATOM 295 C ASN A 37 2.656 18.941 9.240 1.00 14.00 C ATOM 296 O ASN A 37 2.744 18.236 8.231 1.00 15.39 O ATOM 297 CB ASN A 37 4.930 19.967 8.757 1.00 18.52 C ATOM 298 CG ASN A 37 4.716 20.501 7.350 1.00 22.16 C ATOM 299 OD1 ASN A 37 3.785 21.280 7.100 1.00 21.09 O ATOM 300 ND2 ASN A 37 5.538 20.074 6.398 1.00 26.09 N ATOM 301 N PHE A 38 1.731 18.672 10.155 1.00 13.56 N ATOM 302 CA PHE A 38 0.697 17.656 10.084 1.00 13.00 C ATOM 303 C PHE A 38 1.234 16.225 10.124 1.00 13.56 C ATOM 304 O PHE A 38 0.509 15.288 9.757 1.00 12.49 O ATOM 305 CB PHE A 38 -0.190 17.839 8.843 1.00 12.15 C ATOM 306 CG PHE A 38 -0.837 19.176 8.625 1.00 12.14 C ATOM 307 CD1 PHE A 38 -1.334 19.904 9.707 1.00 12.74 C ATOM 308 CD2 PHE A 38 -1.006 19.707 7.362 1.00 15.83 C ATOM 309 CE1 PHE A 38 -1.971 21.115 9.523 1.00 13.21 C ATOM 310 CE2 PHE A 38 -1.628 20.932 7.167 1.00 13.63 C ATOM 311 CZ PHE A 38 -2.108 21.642 8.244 1.00 11.31 C ATOM 312 N ASN A 39 2.425 16.019 10.647 1.00 12.73 N ATOM 313 CA ASN A 39 3.057 14.703 10.693 1.00 13.15 C ATOM 314 C ASN A 39 2.880 14.089 12.072 1.00 13.12 C ATOM 315 O ASN A 39 3.511 14.608 12.999 1.00 13.52 O ATOM 316 CB ASN A 39 4.560 14.891 10.367 1.00 14.57 C ATOM 317 CG ASN A 39 5.283 13.574 10.147 1.00 12.98 C ATOM 318 OD1 ASN A 39 4.798 12.490 10.526 1.00 14.00 O ATOM 319 ND2 ASN A 39 6.460 13.625 9.527 1.00 18.03 N ATOM 320 N THR A 40 2.119 12.994 12.206 1.00 12.50 N ATOM 321 CA THR A 40 1.926 12.378 13.523 1.00 11.76 C ATOM 322 C THR A 40 3.229 11.877 14.100 1.00 11.93 C ATOM 323 O THR A 40 3.307 11.749 15.328 1.00 12.52 O ATOM 324 CB THR A 40 0.924 11.200 13.545 1.00 12.79 C ATOM 325 OG1 THR A 40 1.454 10.162 12.692 1.00 15.08 O ATOM 326 CG2 THR A 40 -0.403 11.617 12.942 1.00 12.99 C ATOM 327 N GLN A 41 4.250 11.576 13.262 1.00 11.70 N ATOM 328 CA GLN A 41 5.483 11.044 13.837 1.00 12.34 C ATOM 329 C GLN A 41 6.518 12.075 14.245 1.00 11.82 C ATOM 330 O GLN A 41 7.584 11.718 14.754 1.00 13.25 O ATOM 331 CB GLN A 41 6.174 10.063 12.860 1.00 15.60 C ATOM 332 CG GLN A 41 5.230 8.963 12.391 1.00 12.40 C ATOM 333 CD GLN A 41 6.001 7.840 11.713 1.00 17.63 C ATOM 334 OE1 GLN A 41 6.727 7.100 12.379 1.00 17.30 O ATOM 335 NE2 GLN A 41 5.843 7.696 10.400 1.00 13.89 N ATOM 336 N ALA A 42 6.243 13.367 14.167 1.00 11.78 N ATOM 337 CA ALA A 42 7.211 14.384 14.519 1.00 11.40 C ATOM 338 C ALA A 42 7.629 14.331 15.979 1.00 11.97 C ATOM 339 O ALA A 42 6.803 14.286 16.876 1.00 12.76 O ATOM 340 CB ALA A 42 6.578 15.751 14.239 1.00 12.23 C ATOM 341 N THR A 43 8.932 14.400 16.226 1.00 12.73 N ATOM 342 CA THR A 43 9.476 14.479 17.574 1.00 13.87 C ATOM 343 C THR A 43 10.562 15.543 17.560 1.00 13.42 C ATOM 344 O THR A 43 11.305 15.720 16.573 1.00 13.86 O ATOM 345 CB THR A 43 10.100 13.177 18.096 1.00 16.26 C ATOM 346 OG1 THR A 43 11.200 12.864 17.215 1.00 15.72 O ATOM 347 CG2 THR A 43 9.134 12.007 18.135 1.00 15.56 C ATOM 348 N ASN A 44 10.630 16.391 18.589 1.00 13.63 N ATOM 349 CA ASN A 44 11.650 17.442 18.631 1.00 13.86 C ATOM 350 C ASN A 44 12.122 17.624 20.068 1.00 14.83 C ATOM 351 O ASN A 44 11.317 17.774 20.992 1.00 15.66 O ATOM 352 CB ASN A 44 11.120 18.781 18.095 1.00 15.14 C ATOM 353 CG ASN A 44 10.877 18.740 16.597 1.00 17.51 C ATOM 354 OD1 ASN A 44 11.845 18.675 15.819 1.00 20.30 O ATOM 355 ND2 ASN A 44 9.630 18.683 16.131 1.00 16.80 N ATOM 356 N ARG A 45 13.438 17.530 20.284 1.00 15.87 N ATOM 357 CA ARG A 45 14.004 17.690 21.624 1.00 16.06 C ATOM 358 C ARG A 45 14.037 19.160 22.016 1.00 17.54 C ATOM 359 O ARG A 45 14.365 20.027 21.213 1.00 18.09 O ATOM 360 CB ARG A 45 15.444 17.174 21.659 1.00 19.49 C ATOM 361 CG ARG A 45 15.986 16.903 23.059 1.00 15.81 C ATOM 362 CD ARG A 45 15.351 15.624 23.557 1.00 25.18 C ATOM 363 NE ARG A 45 15.791 15.165 24.853 1.00 30.71 N ATOM 364 CZ ARG A 45 16.740 14.288 25.134 1.00 27.82 C ATOM 365 NH1 ARG A 45 16.949 14.025 26.418 1.00 28.93 N ATOM 366 NH2 ARG A 45 17.459 13.698 24.194 1.00 32.48 N ATOM 367 N ASN A 46 13.657 19.431 23.255 1.00 15.69 N ATOM 368 CA ASN A 46 13.691 20.783 23.795 1.00 17.20 C ATOM 369 C ASN A 46 15.029 20.983 24.514 1.00 17.91 C ATOM 370 O ASN A 46 15.658 20.013 24.936 1.00 18.81 O ATOM 371 CB ASN A 46 12.519 20.961 24.750 1.00 16.03 C ATOM 372 CG ASN A 46 11.176 20.724 24.095 1.00 21.74 C ATOM 373 OD1 ASN A 46 10.355 20.003 24.672 1.00 21.91 O ATOM 374 ND2 ASN A 46 10.921 21.249 22.907 1.00 22.89 N ATOM 375 N THR A 47 15.412 22.248 24.690 1.00 19.67 N ATOM 376 CA THR A 47 16.650 22.563 25.388 1.00 20.37 C ATOM 377 C THR A 47 16.661 22.100 26.826 1.00 20.76 C ATOM 378 O THR A 47 17.751 21.780 27.305 1.00 21.54 O ATOM 379 CB THR A 47 16.977 24.075 25.381 1.00 27.12 C ATOM 380 OG1 THR A 47 15.949 24.786 26.076 1.00 29.45 O ATOM 381 CG2 THR A 47 17.076 24.563 23.946 1.00 28.33 C ATOM 382 N ASP A 48 15.521 21.993 27.506 1.00 19.67 N ATOM 383 CA ASP A 48 15.483 21.544 28.883 1.00 19.14 C ATOM 384 C ASP A 48 15.563 20.034 28.998 1.00 19.12 C ATOM 385 O ASP A 48 15.589 19.516 30.124 1.00 19.76 O ATOM 386 CB ASP A 48 14.246 22.078 29.607 1.00 17.48 C ATOM 387 CG ASP A 48 12.955 21.486 29.106 1.00 17.83 C ATOM 388 OD1 ASP A 48 12.996 20.605 28.218 1.00 14.85 O ATOM 389 OD2 ASP A 48 11.863 21.869 29.585 1.00 24.15 O ATOM 390 N GLY A 49 15.711 19.316 27.891 1.00 16.97 N ATOM 391 CA GLY A 49 15.866 17.879 27.811 1.00 18.17 C ATOM 392 C GLY A 49 14.575 17.108 27.667 1.00 16.79 C ATOM 393 O GLY A 49 14.613 15.879 27.552 1.00 17.78 O ATOM 394 N SER A 50 13.456 17.808 27.703 1.00 15.19 N ATOM 395 CA SER A 50 12.179 17.114 27.463 1.00 14.12 C ATOM 396 C SER A 50 12.089 17.004 25.937 1.00 13.24 C ATOM 397 O SER A 50 12.954 17.499 25.220 1.00 12.87 O ATOM 398 CB SER A 50 11.011 17.906 28.039 1.00 13.16 C ATOM 399 OG SER A 50 10.981 19.180 27.409 1.00 14.96 O ATOM 400 N THR A 51 11.073 16.286 25.464 1.00 12.78 N ATOM 401 CA THR A 51 10.840 16.154 24.027 1.00 12.79 C ATOM 402 C THR A 51 9.358 16.419 23.758 1.00 13.79 C ATOM 403 O THR A 51 8.476 16.143 24.560 1.00 13.23 O ATOM 404 CB THR A 51 11.225 14.746 23.565 1.00 12.34 C ATOM 405 OG1 THR A 51 12.596 14.522 23.941 1.00 12.44 O ATOM 406 CG2 THR A 51 11.125 14.569 22.049 1.00 11.50 C ATOM 407 N ASP A 52 9.112 16.974 22.558 1.00 13.36 N ATOM 408 CA ASP A 52 7.751 17.230 22.092 1.00 13.27 C ATOM 409 C ASP A 52 7.365 16.138 21.098 1.00 13.99 C ATOM 410 O ASP A 52 8.178 15.768 20.247 1.00 13.69 O ATOM 411 CB ASP A 52 7.683 18.589 21.393 1.00 12.91 C ATOM 412 CG ASP A 52 7.711 19.765 22.352 1.00 17.41 C ATOM 413 OD1 ASP A 52 7.632 19.600 23.577 1.00 16.32 O ATOM 414 OD2 ASP A 52 7.798 20.897 21.821 1.00 19.54 O ATOM 415 N TYR A 53 6.158 15.613 21.221 1.00 12.70 N ATOM 416 CA TYR A 53 5.712 14.497 20.407 1.00 13.43 C ATOM 417 C TYR A 53 4.401 14.713 19.667 1.00 12.80 C ATOM 418 O TYR A 53 3.406 15.217 20.192 1.00 12.87 O ATOM 419 CB TYR A 53 5.450 13.272 21.328 1.00 12.20 C ATOM 420 CG TYR A 53 6.689 12.771 22.032 1.00 11.53 C ATOM 421 CD1 TYR A 53 7.102 13.340 23.220 1.00 12.21 C ATOM 422 CD2 TYR A 53 7.467 11.756 21.459 1.00 11.27 C ATOM 423 CE1 TYR A 53 8.252 12.936 23.865 1.00 11.70 C ATOM 424 CE2 TYR A 53 8.616 11.324 22.109 1.00 10.80 C ATOM 425 CZ TYR A 53 8.993 11.921 23.294 1.00 11.40 C ATOM 426 OH TYR A 53 10.141 11.462 23.916 1.00 12.14 O ATOM 427 N GLY A 54 4.377 14.261 18.409 1.00 12.80 N ATOM 428 CA GLY A 54 3.196 14.149 17.611 1.00 12.45 C ATOM 429 C GLY A 54 2.718 15.409 16.911 1.00 13.24 C ATOM 430 O GLY A 54 3.387 16.440 16.830 1.00 13.19 O ATOM 431 N ILE A 55 1.486 15.260 16.431 1.00 13.98 N ATOM 432 CA ILE A 55 0.824 16.315 15.662 1.00 13.71 C ATOM 433 C ILE A 55 0.709 17.642 16.380 1.00 13.72 C ATOM 434 O ILE A 55 0.733 18.679 15.723 1.00 13.06 O ATOM 435 CB ILE A 55 -0.576 15.788 15.267 1.00 18.90 C ATOM 436 CG1 ILE A 55 -1.272 16.703 14.258 1.00 28.94 C ATOM 437 CG2 ILE A 55 -1.474 15.532 16.462 1.00 18.47 C ATOM 438 CD1 ILE A 55 -1.143 16.136 12.863 1.00 28.28 C ATOM 439 N LEU A 56 0.579 17.637 17.707 1.00 13.89 N ATOM 440 CA LEU A 56 0.511 18.878 18.464 1.00 13.26 C ATOM 441 C LEU A 56 1.725 19.033 19.378 1.00 13.84 C ATOM 442 O LEU A 56 1.693 19.885 20.266 1.00 13.70 O ATOM 443 CB LEU A 56 -0.827 18.980 19.231 1.00 12.22 C ATOM 444 CG LEU A 56 -2.019 19.308 18.290 1.00 15.11 C ATOM 445 CD1 LEU A 56 -3.361 19.027 18.947 1.00 14.40 C ATOM 446 CD2 LEU A 56 -1.915 20.769 17.881 1.00 15.30 C ATOM 447 N GLN A 57 2.833 18.326 19.115 1.00 12.52 N ATOM 448 CA GLN A 57 4.075 18.517 19.860 1.00 11.86 C ATOM 449 C GLN A 57 3.842 18.671 21.366 1.00 12.75 C ATOM 450 O GLN A 57 4.323 19.608 22.010 1.00 12.81 O ATOM 451 CB GLN A 57 4.851 19.723 19.275 1.00 9.79 C ATOM 452 CG GLN A 57 5.344 19.423 17.837 1.00 10.50 C ATOM 453 CD GLN A 57 6.463 18.397 17.841 1.00 10.63 C ATOM 454 OE1 GLN A 57 7.624 18.760 18.077 1.00 12.76 O ATOM 455 NE2 GLN A 57 6.128 17.130 17.594 1.00 11.89 N ATOM 456 N ILE A 58 3.269 17.611 21.925 1.00 12.44 N ATOM 457 CA ILE A 58 2.960 17.556 23.365 1.00 12.03 C ATOM 458 C ILE A 58 4.248 17.218 24.098 1.00 13.00 C ATOM 459 O ILE A 58 4.979 16.309 23.699 1.00 12.27 O ATOM 460 CB ILE A 58 1.821 16.541 23.558 1.00 14.33 C ATOM 461 CG1 ILE A 58 0.551 17.172 22.943 1.00 15.72 C ATOM 462 CG2 ILE A 58 1.640 16.227 25.037 1.00 16.30 C ATOM 463 CD1 ILE A 58 -0.623 16.207 22.939 1.00 19.58 C ATOM 464 N ASN A 59 4.548 17.977 25.152 1.00 13.56 N ATOM 465 CA ASN A 59 5.821 17.864 25.841 1.00 15.06 C ATOM 466 C ASN A 59 5.887 16.861 26.975 1.00 15.66 C ATOM 467 O ASN A 59 4.961 16.744 27.761 1.00 17.53 O ATOM 468 CB ASN A 59 6.186 19.261 26.397 1.00 16.59 C ATOM 469 CG ASN A 59 7.634 19.275 26.857 1.00 21.97 C ATOM 470 OD1 ASN A 59 7.946 19.352 28.033 1.00 34.80 O ATOM 471 ND2 ASN A 59 8.538 19.171 25.898 1.00 37.21 N ATOM 472 N SER A 60 7.014 16.173 27.092 1.00 14.88 N ATOM 473 CA SER A 60 7.243 15.161 28.096 1.00 15.86 C ATOM 474 C SER A 60 7.554 15.763 29.460 1.00 17.19 C ATOM 475 O SER A 60 7.489 14.998 30.402 1.00 19.11 O ATOM 476 CB SER A 60 8.384 14.251 27.630 1.00 11.55 C ATOM 477 OG SER A 60 9.605 14.993 27.628 1.00 14.76 O ATOM 478 N ARG A 61 7.798 17.058 29.591 1.00 17.46 N ATOM 479 CA ARG A 61 8.065 17.598 30.938 1.00 18.93 C ATOM 480 C ARG A 61 6.808 17.516 31.793 1.00 19.51 C ATOM 481 O ARG A 61 6.933 17.252 32.986 1.00 21.21 O ATOM 482 CB ARG A 61 8.588 19.033 30.897 1.00 25.26 C ATOM 483 CG ARG A 61 8.782 19.586 32.321 1.00 31.29 C ATOM 484 CD ARG A 61 9.980 20.503 32.391 1.00 40.32 C ATOM 485 NE ARG A 61 11.186 19.943 31.814 1.00 46.29 N ATOM 486 CZ ARG A 61 11.997 19.039 32.347 1.00 46.51 C ATOM 487 NH1 ARG A 61 11.764 18.517 33.548 1.00 44.12 N ATOM 488 NH2 ARG A 61 13.064 18.664 31.652 1.00 43.34 N ATOM 489 N TRP A 62 5.631 17.705 31.194 1.00 17.36 N ATOM 490 CA TRP A 62 4.399 17.678 31.968 1.00 17.09 C ATOM 491 C TRP A 62 3.358 16.656 31.599 1.00 15.64 C ATOM 492 O TRP A 62 2.590 16.155 32.442 1.00 15.50 O ATOM 493 CB TRP A 62 3.670 19.047 31.794 1.00 21.49 C ATOM 494 CG TRP A 62 4.497 20.216 32.242 1.00 25.27 C ATOM 495 CD1 TRP A 62 5.185 21.093 31.451 1.00 31.43 C ATOM 496 CD2 TRP A 62 4.759 20.599 33.591 1.00 33.57 C ATOM 497 NE1 TRP A 62 5.848 22.013 32.235 1.00 36.44 N ATOM 498 CE2 TRP A 62 5.601 21.725 33.551 1.00 36.42 C ATOM 499 CE3 TRP A 62 4.349 20.092 34.830 1.00 37.32 C ATOM 500 CZ2 TRP A 62 6.046 22.359 34.713 1.00 40.44 C ATOM 501 CZ3 TRP A 62 4.793 20.720 35.982 1.00 43.37 C ATOM 502 CH2 TRP A 62 5.628 21.843 35.907 1.00 42.07 C ATOM 503 N TRP A 63 3.258 16.334 30.301 1.00 14.66 N ATOM 504 CA TRP A 63 2.100 15.607 29.826 1.00 14.06 C ATOM 505 C TRP A 63 2.159 14.148 29.490 1.00 13.80 C ATOM 506 O TRP A 63 1.127 13.484 29.588 1.00 15.16 O ATOM 507 CB TRP A 63 1.599 16.379 28.555 1.00 14.24 C ATOM 508 CG TRP A 63 1.403 17.834 28.890 1.00 14.30 C ATOM 509 CD1 TRP A 63 2.177 18.876 28.462 1.00 15.36 C ATOM 510 CD2 TRP A 63 0.406 18.376 29.768 1.00 14.38 C ATOM 511 NE1 TRP A 63 1.698 20.050 29.012 1.00 18.28 N ATOM 512 CE2 TRP A 63 0.641 19.763 29.823 1.00 14.74 C ATOM 513 CE3 TRP A 63 -0.642 17.810 30.498 1.00 16.06 C ATOM 514 CZ2 TRP A 63 -0.178 20.617 30.582 1.00 17.10 C ATOM 515 CZ3 TRP A 63 -1.447 18.660 31.251 1.00 16.14 C ATOM 516 CH2 TRP A 63 -1.188 20.033 31.276 1.00 16.87 C ATOM 517 N CYS A 64 3.290 13.629 29.038 1.00 14.24 N ATOM 518 CA CYS A 64 3.373 12.217 28.688 1.00 13.13 C ATOM 519 C CYS A 64 4.663 11.664 29.292 1.00 13.66 C ATOM 520 O CYS A 64 5.556 12.462 29.593 1.00 13.70 O ATOM 521 CB CYS A 64 3.288 11.987 27.168 1.00 12.35 C ATOM 522 SG CYS A 64 4.599 12.784 26.194 1.00 12.29 S ATOM 523 N ASN A 65 4.774 10.330 29.350 1.00 13.27 N ATOM 524 CA ASN A 65 6.002 9.742 29.846 1.00 13.40 C ATOM 525 C ASN A 65 6.882 9.167 28.736 1.00 13.11 C ATOM 526 O ASN A 65 6.375 8.371 27.945 1.00 13.38 O ATOM 527 CB ASN A 65 5.684 8.575 30.794 1.00 14.26 C ATOM 528 CG ASN A 65 7.000 7.953 31.257 1.00 17.69 C ATOM 529 OD1 ASN A 65 7.832 8.680 31.776 1.00 17.85 O ATOM 530 ND2 ASN A 65 7.136 6.661 31.000 1.00 23.06 N ATOM 531 N ASP A 66 8.147 9.621 28.713 1.00 13.15 N ATOM 532 CA ASP A 66 9.083 9.071 27.748 1.00 13.84 C ATOM 533 C ASP A 66 10.268 8.406 28.472 1.00 14.87 C ATOM 534 O ASP A 66 11.179 7.970 27.776 1.00 15.07 O ATOM 535 CB ASP A 66 9.574 10.065 26.715 1.00 13.01 C ATOM 536 CG ASP A 66 10.404 11.218 27.206 1.00 13.24 C ATOM 537 OD1 ASP A 66 10.750 11.247 28.386 1.00 15.15 O ATOM 538 OD2 ASP A 66 10.727 12.102 26.374 1.00 13.59 O ATOM 539 N GLY A 67 10.239 8.383 29.790 1.00 15.39 N ATOM 540 CA GLY A 67 11.305 7.739 30.551 1.00 17.01 C ATOM 541 C GLY A 67 12.650 8.402 30.525 1.00 18.70 C ATOM 542 O GLY A 67 13.612 7.852 31.110 1.00 20.29 O ATOM 543 N ARG A 68 12.809 9.558 29.903 1.00 17.00 N ATOM 544 CA ARG A 68 14.100 10.229 29.865 1.00 18.17 C ATOM 545 C ARG A 68 13.970 11.712 30.156 1.00 18.62 C ATOM 546 O ARG A 68 14.817 12.503 29.738 1.00 20.22 O ATOM 547 CB ARG A 68 14.741 9.969 28.507 1.00 16.63 C ATOM 548 CG ARG A 68 14.005 10.632 27.359 1.00 16.60 C ATOM 549 CD ARG A 68 14.949 10.573 26.145 1.00 15.25 C ATOM 550 NE ARG A 68 14.508 11.546 25.131 1.00 16.84 N ATOM 551 CZ ARG A 68 14.969 11.525 23.872 1.00 15.76 C ATOM 552 NH1 ARG A 68 15.890 10.645 23.489 1.00 19.00 N ATOM 553 NH2 ARG A 68 14.524 12.428 22.999 1.00 14.12 N ATOM 554 N THR A 69 12.930 12.114 30.881 1.00 18.96 N ATOM 555 CA THR A 69 12.768 13.533 31.244 1.00 20.03 C ATOM 556 C THR A 69 12.708 13.637 32.769 1.00 22.06 C ATOM 557 O THR A 69 11.642 13.550 33.361 1.00 20.67 O ATOM 558 CB THR A 69 11.506 14.116 30.601 1.00 17.21 C ATOM 559 OG1 THR A 69 11.494 13.791 29.185 1.00 14.31 O ATOM 560 CG2 THR A 69 11.431 15.633 30.715 1.00 14.59 C ATOM 561 N PRO A 70 13.852 13.725 33.424 1.00 24.14 N ATOM 562 CA PRO A 70 13.925 13.747 34.876 1.00 26.59 C ATOM 563 C PRO A 70 13.092 14.840 35.496 1.00 28.31 C ATOM 564 O PRO A 70 13.218 16.003 35.103 1.00 29.43 O ATOM 565 CB PRO A 70 15.401 14.033 35.176 1.00 27.24 C ATOM 566 CG PRO A 70 16.128 13.494 33.994 1.00 27.21 C ATOM 567 CD PRO A 70 15.212 13.768 32.830 1.00 25.98 C ATOM 568 N GLY A 71 12.286 14.461 36.483 1.00 28.93 N ATOM 569 CA GLY A 71 11.481 15.430 37.208 1.00 31.07 C ATOM 570 C GLY A 71 10.126 15.591 36.537 1.00 31.15 C ATOM 571 O GLY A 71 9.428 16.510 36.929 1.00 32.49 O ATOM 572 N SER A 72 9.815 14.734 35.580 1.00 31.97 N ATOM 573 CA SER A 72 8.623 14.778 34.807 1.00 31.32 C ATOM 574 C SER A 72 7.342 14.229 35.404 1.00 30.17 C ATOM 575 O SER A 72 7.224 13.288 36.175 1.00 29.68 O ATOM 576 CB SER A 72 8.817 14.005 33.463 1.00 30.95 C ATOM 577 OG SER A 72 9.225 14.976 32.522 1.00 48.38 O ATOM 578 N ARG A 73 6.301 14.928 34.927 1.00 28.57 N ATOM 579 CA ARG A 73 4.945 14.519 35.239 1.00 26.37 C ATOM 580 C ARG A 73 4.482 13.901 33.921 1.00 25.15 C ATOM 581 O ARG A 73 5.115 14.064 32.857 1.00 25.87 O ATOM 582 CB ARG A 73 4.110 15.689 35.739 1.00 25.25 C ATOM 583 CG ARG A 73 4.725 16.369 36.972 1.00 30.81 C ATOM 584 CD ARG A 73 4.540 15.496 38.207 1.00 34.64 C ATOM 585 NE ARG A 73 3.151 15.213 38.537 1.00 43.61 N ATOM 586 CZ ARG A 73 2.303 15.981 39.205 1.00 46.83 C ATOM 587 NH1 ARG A 73 2.710 17.159 39.668 1.00 49.43 N ATOM 588 NH2 ARG A 73 1.052 15.592 39.424 1.00 50.26 N ATOM 589 N ASN A 74 3.422 13.169 34.011 1.00 22.41 N ATOM 590 CA ASN A 74 2.720 12.476 32.956 1.00 18.90 C ATOM 591 C ASN A 74 1.230 12.741 33.232 1.00 18.51 C ATOM 592 O ASN A 74 0.479 11.826 33.539 1.00 17.69 O ATOM 593 CB ASN A 74 3.052 10.981 33.053 1.00 15.23 C ATOM 594 CG ASN A 74 2.375 10.143 32.010 1.00 17.61 C ATOM 595 OD1 ASN A 74 1.812 10.710 31.047 1.00 16.53 O ATOM 596 ND2 ASN A 74 2.432 8.834 32.130 1.00 17.98 N ATOM 597 N LEU A 75 0.849 14.011 33.069 1.00 17.76 N ATOM 598 CA LEU A 75 -0.548 14.370 33.362 1.00 18.17 C ATOM 599 C LEU A 75 -1.597 13.800 32.447 1.00 17.60 C ATOM 600 O LEU A 75 -2.780 13.699 32.869 1.00 17.69 O ATOM 601 CB LEU A 75 -0.666 15.895 33.476 1.00 20.05 C ATOM 602 CG LEU A 75 0.161 16.474 34.639 1.00 22.89 C ATOM 603 CD1 LEU A 75 0.201 17.987 34.532 1.00 24.89 C ATOM 604 CD2 LEU A 75 -0.371 16.009 35.979 1.00 26.46 C ATOM 605 N CYS A 76 -1.279 13.397 31.211 1.00 16.50 N ATOM 606 CA CYS A 76 -2.239 12.752 30.338 1.00 16.72 C ATOM 607 C CYS A 76 -2.246 11.248 30.516 1.00 16.24 C ATOM 608 O CYS A 76 -3.010 10.507 29.890 1.00 15.79 O ATOM 609 CB CYS A 76 -1.952 13.075 28.852 1.00 14.35 C ATOM 610 SG CYS A 76 -2.205 14.845 28.603 1.00 12.80 S ATOM 611 N ASN A 77 -1.351 10.778 31.398 1.00 17.38 N ATOM 612 CA ASN A 77 -1.222 9.373 31.716 1.00 17.28 C ATOM 613 C ASN A 77 -1.114 8.516 30.457 1.00 18.05 C ATOM 614 O ASN A 77 -1.879 7.602 30.190 1.00 19.07 O ATOM 615 CB AASN A 77 -2.330 8.861 32.635 0.50 19.29 C ATOM 616 CB BASN A 77 -2.458 8.917 32.513 0.50 17.92 C ATOM 617 CG AASN A 77 -1.953 7.532 33.270 0.50 22.46 C ATOM 618 CG BASN A 77 -2.707 9.722 33.771 0.50 23.19 C ATOM 619 OD1AASN A 77 -2.840 6.733 33.572 0.50 30.03 O ATOM 620 OD1BASN A 77 -1.899 9.711 34.694 0.50 22.14 O ATOM 621 ND2AASN A 77 -0.669 7.267 33.489 0.50 23.82 N ATOM 622 ND2BASN A 77 -3.834 10.425 33.785 0.50 22.71 N ATOM 623 N ILE A 78 -0.096 8.821 29.647 1.00 16.67 N ATOM 624 CA ILE A 78 0.089 8.093 28.375 1.00 16.83 C ATOM 625 C ILE A 78 1.571 8.062 28.071 1.00 16.79 C ATOM 626 O ILE A 78 2.288 9.015 28.373 1.00 15.80 O ATOM 627 CB ILE A 78 -0.703 8.911 27.332 1.00 20.32 C ATOM 628 CG1 ILE A 78 -0.977 8.184 26.020 1.00 22.75 C ATOM 629 CG2 ILE A 78 -0.075 10.268 27.049 1.00 18.60 C ATOM 630 CD1 ILE A 78 -2.121 7.193 26.190 1.00 27.62 C ATOM 631 N PRO A 79 2.060 6.975 27.491 1.00 15.84 N ATOM 632 CA PRO A 79 3.432 6.905 27.000 1.00 15.30 C ATOM 633 C PRO A 79 3.545 7.953 25.897 1.00 15.24 C ATOM 634 O PRO A 79 2.606 8.061 25.106 1.00 15.04 O ATOM 635 CB PRO A 79 3.527 5.505 26.379 1.00 15.36 C ATOM 636 CG PRO A 79 2.337 4.757 26.868 1.00 17.63 C ATOM 637 CD PRO A 79 1.269 5.775 27.121 1.00 15.90 C ATOM 638 N CYS A 80 4.657 8.684 25.769 1.00 13.72 N ATOM 639 CA CYS A 80 4.743 9.688 24.698 1.00 14.15 C ATOM 640 C CYS A 80 4.680 9.041 23.325 1.00 14.31 C ATOM 641 O CYS A 80 4.230 9.664 22.358 1.00 14.82 O ATOM 642 CB CYS A 80 6.043 10.492 24.833 1.00 12.75 C ATOM 643 SG CYS A 80 6.159 11.473 26.337 1.00 11.08 S ATOM 644 N SER A 81 5.097 7.787 23.190 1.00 14.14 N ATOM 645 CA SER A 81 5.035 7.100 21.892 1.00 15.73 C ATOM 646 C SER A 81 3.609 6.967 21.397 1.00 17.04 C ATOM 647 O SER A 81 3.336 6.912 20.179 1.00 18.31 O ATOM 648 CB SER A 81 5.724 5.730 22.096 1.00 20.50 C ATOM 649 OG SER A 81 4.882 4.936 22.919 1.00 21.04 O ATOM 650 N ALA A 82 2.613 6.925 22.284 1.00 17.55 N ATOM 651 CA ALA A 82 1.202 6.829 21.896 1.00 19.09 C ATOM 652 C ALA A 82 0.689 8.093 21.244 1.00 20.22 C ATOM 653 O ALA A 82 -0.351 8.134 20.564 1.00 20.99 O ATOM 654 CB ALA A 82 0.373 6.422 23.116 1.00 19.91 C ATOM 655 N LEU A 83 1.468 9.189 21.325 1.00 19.14 N ATOM 656 CA LEU A 83 1.114 10.441 20.672 1.00 18.22 C ATOM 657 C LEU A 83 1.631 10.500 19.241 1.00 17.88 C ATOM 658 O LEU A 83 1.591 11.556 18.590 1.00 18.02 O ATOM 659 CB LEU A 83 1.651 11.589 21.532 1.00 16.41 C ATOM 660 CG LEU A 83 1.159 11.566 22.988 1.00 17.08 C ATOM 661 CD1 LEU A 83 1.746 12.787 23.682 1.00 20.50 C ATOM 662 CD2 LEU A 83 -0.368 11.505 23.051 1.00 21.70 C ATOM 663 N LEU A 84 2.243 9.421 18.748 1.00 17.90 N ATOM 664 CA LEU A 84 2.812 9.395 17.404 1.00 17.56 C ATOM 665 C LEU A 84 2.023 8.554 16.425 1.00 17.56 C ATOM 666 O LEU A 84 2.314 8.439 15.224 1.00 18.07 O ATOM 667 CB LEU A 84 4.255 8.847 17.461 1.00 17.51 C ATOM 668 CG LEU A 84 5.188 9.587 18.402 1.00 19.56 C ATOM 669 CD1 LEU A 84 6.599 8.985 18.301 1.00 19.02 C ATOM 670 CD2 LEU A 84 5.288 11.076 18.134 1.00 15.18 C ATOM 671 N SER A 85 0.948 7.974 16.935 1.00 18.11 N ATOM 672 CA SER A 85 0.064 7.104 16.186 1.00 18.71 C ATOM 673 C SER A 85 -0.627 7.799 15.020 1.00 19.48 C ATOM 674 O SER A 85 -0.854 9.015 15.046 1.00 20.41 O ATOM 675 CB ASER A 85 -1.010 6.573 17.152 0.50 20.52 C ATOM 676 CB BSER A 85 -1.006 6.559 17.148 0.50 19.28 C ATOM 677 OG ASER A 85 -1.911 5.724 16.470 0.50 18.30 O ATOM 678 OG BSER A 85 -1.479 7.585 18.005 0.50 14.26 O ATOM 679 N SER A 86 -1.050 6.991 14.046 1.00 18.39 N ATOM 680 CA SER A 86 -1.833 7.518 12.925 1.00 18.98 C ATOM 681 C SER A 86 -3.233 7.946 13.363 1.00 19.55 C ATOM 682 O SER A 86 -3.877 8.800 12.755 1.00 21.91 O ATOM 683 CB SER A 86 -1.885 6.501 11.781 1.00 28.82 C ATOM 684 OG SER A 86 -2.374 5.244 12.224 1.00 32.53 O ATOM 685 N ASP A 87 -3.746 7.396 14.454 1.00 18.54 N ATOM 686 CA ASP A 87 -5.023 7.754 15.052 1.00 17.67 C ATOM 687 C ASP A 87 -4.738 8.880 16.050 1.00 16.94 C ATOM 688 O ASP A 87 -3.931 8.677 16.956 1.00 16.53 O ATOM 689 CB ASP A 87 -5.610 6.523 15.729 1.00 19.19 C ATOM 690 CG ASP A 87 -6.887 6.747 16.498 1.00 24.83 C ATOM 691 OD1 ASP A 87 -7.162 7.844 17.009 1.00 20.38 O ATOM 692 OD2 ASP A 87 -7.681 5.777 16.631 1.00 26.78 O ATOM 693 N ILE A 88 -5.331 10.059 15.885 1.00 15.81 N ATOM 694 CA ILE A 88 -5.012 11.198 16.734 1.00 14.90 C ATOM 695 C ILE A 88 -5.758 11.246 18.058 1.00 14.53 C ATOM 696 O ILE A 88 -5.580 12.228 18.803 1.00 14.34 O ATOM 697 CB ILE A 88 -5.215 12.540 15.976 1.00 13.07 C ATOM 698 CG1 ILE A 88 -6.689 12.822 15.713 1.00 16.88 C ATOM 699 CG2 ILE A 88 -4.378 12.529 14.692 1.00 15.25 C ATOM 700 CD1 ILE A 88 -6.921 14.242 15.210 1.00 17.37 C ATOM 701 N THR A 89 -6.524 10.212 18.404 1.00 13.93 N ATOM 702 CA THR A 89 -7.303 10.243 19.632 1.00 13.76 C ATOM 703 C THR A 89 -6.508 10.633 20.868 1.00 14.16 C ATOM 704 O THR A 89 -6.932 11.524 21.628 1.00 14.13 O ATOM 705 CB THR A 89 -8.021 8.888 19.844 1.00 17.13 C ATOM 706 OG1 THR A 89 -8.880 8.585 18.741 1.00 17.25 O ATOM 707 CG2 THR A 89 -8.833 8.891 21.128 1.00 17.08 C ATOM 708 N ALA A 90 -5.364 10.006 21.111 1.00 14.14 N ATOM 709 CA ALA A 90 -4.612 10.300 22.340 1.00 13.95 C ATOM 710 C ALA A 90 -4.102 11.727 22.387 1.00 13.93 C ATOM 711 O ALA A 90 -4.145 12.398 23.436 1.00 14.20 O ATOM 712 CB ALA A 90 -3.479 9.285 22.477 1.00 16.92 C ATOM 713 N SER A 91 -3.613 12.195 21.233 1.00 13.80 N ATOM 714 CA SER A 91 -3.117 13.570 21.141 1.00 12.79 C ATOM 715 C SER A 91 -4.258 14.556 21.417 1.00 12.65 C ATOM 716 O SER A 91 -4.021 15.544 22.088 1.00 13.98 O ATOM 717 CB SER A 91 -2.503 13.877 19.781 1.00 14.04 C ATOM 718 OG SER A 91 -1.194 13.311 19.667 1.00 12.81 O ATOM 719 N VAL A 92 -5.435 14.288 20.852 1.00 12.64 N ATOM 720 CA VAL A 92 -6.555 15.213 21.108 1.00 12.99 C ATOM 721 C VAL A 92 -6.975 15.179 22.564 1.00 14.03 C ATOM 722 O VAL A 92 -7.159 16.253 23.167 1.00 14.85 O ATOM 723 CB VAL A 92 -7.749 14.860 20.202 1.00 14.47 C ATOM 724 CG1 VAL A 92 -8.986 15.660 20.618 1.00 14.77 C ATOM 725 CG2 VAL A 92 -7.374 15.170 18.755 1.00 16.57 C ATOM 726 N ASN A 93 -7.101 13.990 23.173 1.00 14.37 N ATOM 727 CA ASN A 93 -7.508 13.930 24.580 1.00 14.89 C ATOM 728 C ASN A 93 -6.525 14.699 25.464 1.00 14.52 C ATOM 729 O ASN A 93 -6.903 15.377 26.433 1.00 15.52 O ATOM 730 CB ASN A 93 -7.544 12.465 25.066 1.00 16.92 C ATOM 731 CG ASN A 93 -8.702 11.650 24.545 1.00 26.22 C ATOM 732 OD1 ASN A 93 -8.668 10.408 24.525 1.00 29.79 O ATOM 733 ND2 ASN A 93 -9.762 12.320 24.141 1.00 25.39 N ATOM 734 N CYS A 94 -5.236 14.545 25.162 1.00 13.24 N ATOM 735 CA CYS A 94 -4.190 15.212 25.914 1.00 12.58 C ATOM 736 C CYS A 94 -4.207 16.707 25.624 1.00 13.66 C ATOM 737 O CYS A 94 -4.082 17.481 26.580 1.00 12.38 O ATOM 738 CB CYS A 94 -2.835 14.548 25.649 1.00 12.11 C ATOM 739 SG CYS A 94 -1.514 15.193 26.719 1.00 12.21 S ATOM 740 N ALA A 95 -4.383 17.116 24.375 1.00 14.17 N ATOM 741 CA ALA A 95 -4.474 18.539 24.058 1.00 13.88 C ATOM 742 C ALA A 95 -5.627 19.226 24.788 1.00 13.75 C ATOM 743 O ALA A 95 -5.504 20.373 25.219 1.00 13.71 O ATOM 744 CB ALA A 95 -4.636 18.738 22.553 1.00 12.66 C ATOM 745 N LYS A 96 -6.749 18.532 24.996 1.00 13.49 N ATOM 746 CA LYS A 96 -7.851 19.133 25.758 1.00 13.23 C ATOM 747 C LYS A 96 -7.407 19.461 27.180 1.00 13.65 C ATOM 748 O LYS A 96 -7.865 20.472 27.733 1.00 15.26 O ATOM 749 CB LYS A 96 -9.065 18.192 25.767 1.00 12.83 C ATOM 750 CG LYS A 96 -9.712 18.090 24.390 1.00 14.55 C ATOM 751 CD LYS A 96 -10.830 17.055 24.395 1.00 14.51 C ATOM 752 CE LYS A 96 -11.561 17.073 23.055 1.00 16.86 C ATOM 753 NZ LYS A 96 -12.571 15.944 23.061 1.00 20.49 N ATOM 754 N LYS A 97 -6.608 18.549 27.786 1.00 13.10 N ATOM 755 CA LYS A 97 -6.130 18.864 29.143 1.00 13.93 C ATOM 756 C LYS A 97 -5.180 20.051 29.129 1.00 14.45 C ATOM 757 O LYS A 97 -5.217 20.925 30.008 1.00 15.18 O ATOM 758 CB LYS A 97 -5.400 17.610 29.668 1.00 14.43 C ATOM 759 CG LYS A 97 -6.329 16.432 29.960 1.00 18.28 C ATOM 760 CD LYS A 97 -5.452 15.238 30.361 1.00 24.01 C ATOM 761 CE LYS A 97 -6.340 14.047 30.708 1.00 28.70 C ATOM 762 NZ LYS A 97 -7.055 14.346 31.984 1.00 38.09 N ATOM 763 N ILE A 98 -4.268 20.079 28.137 1.00 13.44 N ATOM 764 CA ILE A 98 -3.287 21.167 28.059 1.00 13.11 C ATOM 765 C ILE A 98 -3.979 22.518 27.938 1.00 13.98 C ATOM 766 O ILE A 98 -3.685 23.464 28.681 1.00 15.23 O ATOM 767 CB ILE A 98 -2.306 20.964 26.887 1.00 12.74 C ATOM 768 CG1 ILE A 98 -1.481 19.685 27.088 1.00 15.28 C ATOM 769 CG2 ILE A 98 -1.371 22.172 26.758 1.00 11.29 C ATOM 770 CD1 ILE A 98 -0.735 19.252 25.831 1.00 14.28 C ATOM 771 N VAL A 99 -4.919 22.634 27.008 1.00 14.00 N ATOM 772 CA VAL A 99 -5.610 23.904 26.746 1.00 14.71 C ATOM 773 C VAL A 99 -6.519 24.352 27.880 1.00 16.29 C ATOM 774 O VAL A 99 -6.919 25.513 27.943 1.00 16.68 O ATOM 775 CB VAL A 99 -6.376 23.821 25.414 1.00 12.95 C ATOM 776 CG1 VAL A 99 -7.622 22.972 25.507 1.00 15.00 C ATOM 777 CG2 VAL A 99 -6.709 25.216 24.891 1.00 14.40 C ATOM 778 N SER A 100 -6.822 23.431 28.794 1.00 16.10 N ATOM 779 CA SER A 100 -7.628 23.721 29.965 1.00 18.30 C ATOM 780 C SER A 100 -6.761 24.090 31.160 1.00 18.68 C ATOM 781 O SER A 100 -7.294 24.343 32.246 1.00 20.11 O ATOM 782 CB SER A 100 -8.440 22.470 30.296 1.00 16.65 C ATOM 783 OG SER A 100 -9.347 22.068 29.277 1.00 19.71 O ATOM 784 N ASP A 101 -5.443 24.100 31.044 1.00 18.52 N ATOM 785 CA ASP A 101 -4.551 24.318 32.188 1.00 19.48 C ATOM 786 C ASP A 101 -4.439 25.751 32.681 1.00 20.06 C ATOM 787 O ASP A 101 -3.870 25.967 33.767 1.00 21.45 O ATOM 788 CB ASP A 101 -3.182 23.737 31.833 1.00 22.09 C ATOM 789 CG ASP A 101 -2.307 23.447 33.042 1.00 28.56 C ATOM 790 OD1 ASP A 101 -2.751 22.672 33.906 1.00 30.69 O ATOM 791 OD2 ASP A 101 -1.194 24.006 33.100 1.00 29.39 O ATOM 792 N GLY A 102 -4.930 26.742 31.970 1.00 19.45 N ATOM 793 CA GLY A 102 -4.898 28.112 32.466 1.00 19.52 C ATOM 794 C GLY A 102 -4.594 29.167 31.427 1.00 18.90 C ATOM 795 O GLY A 102 -5.168 30.264 31.426 1.00 19.27 O ATOM 796 N ASN A 103 -3.671 28.834 30.526 1.00 17.54 N ATOM 797 CA ASN A 103 -3.234 29.800 29.526 1.00 16.22 C ATOM 798 C ASN A 103 -3.734 29.500 28.124 1.00 14.21 C ATOM 799 O ASN A 103 -3.217 30.124 27.192 1.00 15.07 O ATOM 800 CB ASN A 103 -1.700 29.866 29.488 1.00 18.05 C ATOM 801 CG ASN A 103 -1.175 30.310 30.848 1.00 23.49 C ATOM 802 OD1 ASN A 103 -1.730 31.232 31.431 1.00 25.06 O ATOM 803 ND2 ASN A 103 -0.135 29.619 31.312 1.00 27.78 N ATOM 804 N GLY A 104 -4.761 28.679 28.019 1.00 12.62 N ATOM 805 CA GLY A 104 -5.381 28.411 26.724 1.00 12.88 C ATOM 806 C GLY A 104 -4.356 27.869 25.736 1.00 12.56 C ATOM 807 O GLY A 104 -3.452 27.114 26.109 1.00 12.94 O ATOM 808 N MET A 105 -4.478 28.322 24.493 1.00 11.50 N ATOM 809 CA MET A 105 -3.564 27.832 23.461 1.00 11.04 C ATOM 810 C MET A 105 -2.196 28.486 23.535 1.00 11.84 C ATOM 811 O MET A 105 -1.329 28.071 22.757 1.00 11.99 O ATOM 812 CB MET A 105 -4.138 27.941 22.044 1.00 12.59 C ATOM 813 CG MET A 105 -5.218 26.866 21.851 1.00 10.74 C ATOM 814 SD MET A 105 -5.752 26.759 20.136 1.00 11.07 S ATOM 815 CE MET A 105 -4.396 25.782 19.457 1.00 15.91 C ATOM 816 N ASN A 106 -1.932 29.429 24.432 1.00 11.22 N ATOM 817 CA ASN A 106 -0.581 29.976 24.546 1.00 12.48 C ATOM 818 C ASN A 106 0.392 28.906 25.028 1.00 13.49 C ATOM 819 O ASN A 106 1.596 29.109 24.874 1.00 14.44 O ATOM 820 CB ASN A 106 -0.547 31.171 25.500 1.00 12.42 C ATOM 821 CG ASN A 106 -1.372 32.321 24.992 1.00 13.53 C ATOM 822 OD1 ASN A 106 -1.021 32.991 24.004 1.00 13.91 O ATOM 823 ND2 ASN A 106 -2.501 32.577 25.664 1.00 12.59 N ATOM 824 N ALA A 107 -0.105 27.768 25.505 1.00 12.94 N ATOM 825 CA ALA A 107 0.754 26.643 25.850 1.00 13.10 C ATOM 826 C ALA A 107 1.573 26.197 24.630 1.00 14.73 C ATOM 827 O ALA A 107 2.678 25.685 24.862 1.00 15.38 O ATOM 828 CB ALA A 107 -0.040 25.452 26.346 1.00 13.35 C ATOM 829 N TRP A 108 1.016 26.348 23.433 1.00 13.94 N ATOM 830 CA TRP A 108 1.792 26.032 22.228 1.00 14.95 C ATOM 831 C TRP A 108 2.468 27.324 21.766 1.00 15.45 C ATOM 832 O TRP A 108 1.820 28.222 21.212 1.00 15.12 O ATOM 833 CB TRP A 108 0.867 25.494 21.145 1.00 12.27 C ATOM 834 CG TRP A 108 0.340 24.125 21.451 1.00 12.97 C ATOM 835 CD1 TRP A 108 0.973 22.954 21.098 1.00 13.33 C ATOM 836 CD2 TRP A 108 -0.855 23.744 22.137 1.00 12.18 C ATOM 837 NE1 TRP A 108 0.242 21.878 21.541 1.00 11.97 N ATOM 838 CE2 TRP A 108 -0.892 22.345 22.187 1.00 12.29 C ATOM 839 CE3 TRP A 108 -1.895 24.475 22.738 1.00 14.22 C ATOM 840 CZ2 TRP A 108 -1.937 21.637 22.775 1.00 12.72 C ATOM 841 CZ3 TRP A 108 -2.963 23.788 23.327 1.00 14.91 C ATOM 842 CH2 TRP A 108 -2.957 22.362 23.357 1.00 12.30 C ATOM 843 N VAL A 109 3.785 27.422 21.963 1.00 16.15 N ATOM 844 CA VAL A 109 4.517 28.629 21.575 1.00 16.88 C ATOM 845 C VAL A 109 4.336 28.942 20.092 1.00 16.07 C ATOM 846 O VAL A 109 4.145 30.135 19.805 1.00 16.46 O ATOM 847 CB VAL A 109 6.003 28.493 21.958 1.00 25.60 C ATOM 848 CG1 VAL A 109 6.820 29.652 21.399 1.00 27.97 C ATOM 849 CG2 VAL A 109 6.171 28.432 23.477 1.00 29.37 C ATOM 850 N ALA A 110 4.314 27.956 19.210 1.00 16.70 N ATOM 851 CA ALA A 110 4.116 28.203 17.785 1.00 15.82 C ATOM 852 C ALA A 110 2.723 28.779 17.516 1.00 16.01 C ATOM 853 O ALA A 110 2.567 29.609 16.613 1.00 15.28 O ATOM 854 CB ALA A 110 4.344 26.954 16.948 1.00 18.42 C ATOM 855 N TRP A 111 1.730 28.332 18.291 1.00 13.89 N ATOM 856 CA TRP A 111 0.399 28.941 18.118 1.00 14.03 C ATOM 857 C TRP A 111 0.439 30.415 18.501 1.00 14.86 C ATOM 858 O TRP A 111 0.010 31.288 17.761 1.00 13.24 O ATOM 859 CB TRP A 111 -0.675 28.255 18.990 1.00 12.15 C ATOM 860 CG TRP A 111 -2.005 28.955 18.861 1.00 13.15 C ATOM 861 CD1 TRP A 111 -2.942 28.734 17.894 1.00 12.87 C ATOM 862 CD2 TRP A 111 -2.534 29.964 19.720 1.00 12.67 C ATOM 863 NE1 TRP A 111 -4.026 29.567 18.088 1.00 11.29 N ATOM 864 CE2 TRP A 111 -3.796 30.325 19.221 1.00 12.21 C ATOM 865 CE3 TRP A 111 -2.056 30.608 20.861 1.00 15.29 C ATOM 866 CZ2 TRP A 111 -4.579 31.296 19.834 1.00 14.29 C ATOM 867 CZ3 TRP A 111 -2.837 31.569 21.484 1.00 14.63 C ATOM 868 CH2 TRP A 111 -4.092 31.916 20.958 1.00 13.59 C ATOM 869 N ARG A 112 1.043 30.736 19.664 1.00 14.40 N ATOM 870 CA ARG A 112 1.124 32.137 20.051 1.00 15.21 C ATOM 871 C ARG A 112 1.908 32.967 19.033 1.00 14.80 C ATOM 872 O ARG A 112 1.460 34.071 18.682 1.00 14.84 O ATOM 873 CB ARG A 112 1.838 32.238 21.432 1.00 17.37 C ATOM 874 CG ARG A 112 1.874 33.702 21.871 1.00 18.15 C ATOM 875 CD ARG A 112 2.343 33.875 23.310 1.00 22.52 C ATOM 876 NE ARG A 112 3.668 33.306 23.498 1.00 28.83 N ATOM 877 CZ ARG A 112 4.829 33.868 23.156 1.00 29.79 C ATOM 878 NH1 ARG A 112 4.873 35.067 22.603 1.00 27.45 N ATOM 879 NH2 ARG A 112 5.956 33.219 23.383 1.00 27.38 N ATOM 880 N ASN A 113 3.030 32.412 18.553 1.00 14.69 N ATOM 881 CA ASN A 113 3.837 33.266 17.655 1.00 13.54 C ATOM 882 C ASN A 113 3.388 33.307 16.213 1.00 13.89 C ATOM 883 O ASN A 113 3.786 34.231 15.486 1.00 14.09 O ATOM 884 CB ASN A 113 5.298 32.763 17.745 1.00 13.29 C ATOM 885 CG ASN A 113 5.976 33.106 19.057 1.00 13.75 C ATOM 886 OD1 ASN A 113 5.639 34.127 19.672 1.00 17.11 O ATOM 887 ND2 ASN A 113 6.931 32.287 19.495 1.00 16.63 N ATOM 888 N ARG A 114 2.648 32.299 15.741 1.00 12.76 N ATOM 889 CA ARG A 114 2.319 32.226 14.308 1.00 12.70 C ATOM 890 C ARG A 114 0.847 32.134 13.982 1.00 12.74 C ATOM 891 O ARG A 114 0.500 32.353 12.810 1.00 13.48 O ATOM 892 CB ARG A 114 3.018 30.935 13.773 1.00 13.37 C ATOM 893 CG ARG A 114 4.518 31.009 14.035 1.00 12.57 C ATOM 894 CD ARG A 114 5.360 29.847 13.561 1.00 12.73 C ATOM 895 NE ARG A 114 5.499 29.930 12.087 1.00 13.18 N ATOM 896 CZ ARG A 114 6.225 29.022 11.429 1.00 13.66 C ATOM 897 NH1 ARG A 114 6.848 28.010 12.050 1.00 13.96 N ATOM 898 NH2 ARG A 114 6.298 29.123 10.104 1.00 15.20 N ATOM 899 N CYS A 115 0.005 31.827 14.983 1.00 13.02 N ATOM 900 CA CYS A 115 -1.405 31.650 14.691 1.00 11.82 C ATOM 901 C CYS A 115 -2.281 32.688 15.396 1.00 13.26 C ATOM 902 O CYS A 115 -3.245 33.175 14.808 1.00 14.49 O ATOM 903 CB CYS A 115 -1.930 30.266 15.111 1.00 10.17 C ATOM 904 SG CYS A 115 -1.065 28.894 14.310 1.00 10.81 S ATOM 905 N LYS A 116 -1.935 32.968 16.638 1.00 12.68 N ATOM 906 CA LYS A 116 -2.732 33.872 17.470 1.00 13.98 C ATOM 907 C LYS A 116 -2.981 35.200 16.773 1.00 14.67 C ATOM 908 O LYS A 116 -2.060 35.851 16.293 1.00 14.91 O ATOM 909 CB LYS A 116 -1.974 34.092 18.786 1.00 9.53 C ATOM 910 CG LYS A 116 -2.764 34.952 19.797 1.00 13.11 C ATOM 911 CD LYS A 116 -1.936 34.981 21.091 1.00 13.14 C ATOM 912 CE LYS A 116 -2.721 35.744 22.162 1.00 13.27 C ATOM 913 NZ LYS A 116 -1.883 35.787 23.422 1.00 14.45 N ATOM 914 N GLY A 117 -4.251 35.597 16.644 1.00 16.40 N ATOM 915 CA GLY A 117 -4.593 36.863 16.029 1.00 17.97 C ATOM 916 C GLY A 117 -4.611 36.902 14.513 1.00 18.71 C ATOM 917 O GLY A 117 -4.949 37.956 13.958 1.00 20.37 O ATOM 918 N THR A 118 -4.273 35.792 13.872 1.00 16.21 N ATOM 919 CA THR A 118 -4.239 35.755 12.415 1.00 16.01 C ATOM 920 C THR A 118 -5.554 35.225 11.883 1.00 15.77 C ATOM 921 O THR A 118 -6.407 34.825 12.673 1.00 14.91 O ATOM 922 CB THR A 118 -3.096 34.866 11.880 1.00 14.72 C ATOM 923 OG1 THR A 118 -3.430 33.495 12.120 1.00 13.23 O ATOM 924 CG2 THR A 118 -1.776 35.245 12.521 1.00 15.36 C ATOM 925 N ASP A 119 -5.718 35.241 10.547 1.00 14.92 N ATOM 926 CA ASP A 119 -6.949 34.738 9.956 1.00 15.76 C ATOM 927 C ASP A 119 -6.929 33.215 9.980 1.00 16.21 C ATOM 928 O ASP A 119 -6.689 32.571 8.976 1.00 16.06 O ATOM 929 CB ASP A 119 -7.014 35.278 8.510 1.00 16.37 C ATOM 930 CG ASP A 119 -8.220 34.797 7.739 1.00 24.33 C ATOM 931 OD1 ASP A 119 -9.221 34.412 8.388 1.00 25.30 O ATOM 932 OD2 ASP A 119 -8.107 34.823 6.490 1.00 26.75 O ATOM 933 N VAL A 120 -7.181 32.582 11.137 1.00 15.22 N ATOM 934 CA VAL A 120 -7.079 31.124 11.243 1.00 15.52 C ATOM 935 C VAL A 120 -8.153 30.362 10.497 1.00 15.62 C ATOM 936 O VAL A 120 -7.996 29.181 10.169 1.00 15.61 O ATOM 937 CB VAL A 120 -7.010 30.652 12.705 1.00 14.50 C ATOM 938 CG1 VAL A 120 -5.751 31.174 13.406 1.00 13.49 C ATOM 939 CG2 VAL A 120 -8.260 31.106 13.426 1.00 18.01 C ATOM 940 N GLN A 121 -9.273 30.994 10.132 1.00 16.86 N ATOM 941 CA GLN A 121 -10.273 30.336 9.315 1.00 15.91 C ATOM 942 C GLN A 121 -9.692 29.922 7.965 1.00 15.75 C ATOM 943 O GLN A 121 -10.167 28.980 7.335 1.00 16.32 O ATOM 944 CB GLN A 121 -11.495 31.223 9.070 1.00 22.07 C ATOM 945 CG GLN A 121 -12.657 30.497 8.406 1.00 27.94 C ATOM 946 CD GLN A 121 -12.614 30.561 6.892 1.00 32.52 C ATOM 947 OE1 GLN A 121 -12.924 29.580 6.207 1.00 35.65 O ATOM 948 NE2 GLN A 121 -12.206 31.703 6.348 1.00 37.52 N ATOM 949 N ALA A 122 -8.664 30.607 7.461 1.00 14.16 N ATOM 950 CA ALA A 122 -8.027 30.196 6.206 1.00 14.48 C ATOM 951 C ALA A 122 -7.622 28.740 6.245 1.00 15.17 C ATOM 952 O ALA A 122 -7.595 28.065 5.210 1.00 15.64 O ATOM 953 CB ALA A 122 -6.822 31.092 5.912 1.00 13.71 C ATOM 954 N TRP A 123 -7.234 28.188 7.408 1.00 14.85 N ATOM 955 CA TRP A 123 -6.812 26.817 7.556 1.00 15.09 C ATOM 956 C TRP A 123 -7.910 25.791 7.334 1.00 15.70 C ATOM 957 O TRP A 123 -7.574 24.626 7.131 1.00 15.01 O ATOM 958 CB TRP A 123 -6.153 26.558 8.944 1.00 13.01 C ATOM 959 CG TRP A 123 -4.873 27.352 9.027 1.00 13.65 C ATOM 960 CD1 TRP A 123 -4.669 28.519 9.711 1.00 15.17 C ATOM 961 CD2 TRP A 123 -3.632 27.050 8.386 1.00 14.16 C ATOM 962 NE1 TRP A 123 -3.381 28.967 9.494 1.00 14.36 N ATOM 963 CE2 TRP A 123 -2.731 28.074 8.704 1.00 16.38 C ATOM 964 CE3 TRP A 123 -3.214 25.995 7.561 1.00 15.02 C ATOM 965 CZ2 TRP A 123 -1.413 28.095 8.223 1.00 17.35 C ATOM 966 CZ3 TRP A 123 -1.915 26.031 7.067 1.00 20.19 C ATOM 967 CH2 TRP A 123 -1.026 27.061 7.411 1.00 18.61 C ATOM 968 N ILE A 124 -9.186 26.173 7.348 1.00 16.26 N ATOM 969 CA ILE A 124 -10.244 25.203 7.081 1.00 17.34 C ATOM 970 C ILE A 124 -10.958 25.562 5.783 1.00 18.63 C ATOM 971 O ILE A 124 -11.938 24.916 5.400 1.00 18.03 O ATOM 972 CB ILE A 124 -11.213 25.069 8.264 1.00 17.88 C ATOM 973 CG1 ILE A 124 -11.838 26.401 8.663 1.00 20.55 C ATOM 974 CG2 ILE A 124 -10.467 24.479 9.476 1.00 17.12 C ATOM 975 CD1 ILE A 124 -12.851 26.299 9.796 1.00 28.01 C ATOM 976 N ARG A 125 -10.388 26.510 5.037 1.00 18.58 N ATOM 977 CA ARG A 125 -10.994 26.967 3.786 1.00 19.52 C ATOM 978 C ARG A 125 -11.056 25.839 2.787 1.00 19.76 C ATOM 979 O ARG A 125 -10.131 25.059 2.624 1.00 20.17 O ATOM 980 CB ARG A 125 -10.203 28.151 3.221 1.00 27.40 C ATOM 981 CG ARG A 125 -10.855 28.871 2.055 1.00 39.28 C ATOM 982 CD ARG A 125 -11.064 30.346 2.332 1.00 48.18 C ATOM 983 NE ARG A 125 -9.952 31.034 2.972 1.00 53.75 N ATOM 984 CZ ARG A 125 -10.104 32.121 3.724 1.00 57.96 C ATOM 985 NH1 ARG A 125 -11.318 32.625 3.921 1.00 62.67 N ATOM 986 NH2 ARG A 125 -9.086 32.743 4.298 1.00 61.35 N ATOM 987 N GLY A 126 -12.222 25.666 2.127 1.00 19.98 N ATOM 988 CA GLY A 126 -12.389 24.617 1.148 1.00 20.71 C ATOM 989 C GLY A 126 -12.705 23.238 1.709 1.00 21.05 C ATOM 990 O GLY A 126 -13.006 22.326 0.933 1.00 22.69 O ATOM 991 N CYS A 127 -12.640 23.079 3.024 1.00 20.04 N ATOM 992 CA CYS A 127 -12.893 21.753 3.586 1.00 20.56 C ATOM 993 C CYS A 127 -14.398 21.535 3.715 1.00 21.00 C ATOM 994 O CYS A 127 -15.106 22.449 4.118 1.00 20.88 O ATOM 995 CB CYS A 127 -12.223 21.588 4.955 1.00 20.27 C ATOM 996 SG CYS A 127 -10.443 21.944 4.947 1.00 18.11 S ATOM 997 N ARG A 128 -14.786 20.327 3.360 1.00 22.07 N ATOM 998 CA ARG A 128 -16.165 19.845 3.461 1.00 24.51 C ATOM 999 C ARG A 128 -16.185 19.162 4.837 1.00 26.37 C ATOM 1000 O ARG A 128 -15.699 18.046 5.040 1.00 27.58 O ATOM 1001 CB ARG A 128 -16.407 18.893 2.307 1.00 23.69 C ATOM 1002 CG ARG A 128 -17.767 18.293 2.147 1.00 36.80 C ATOM 1003 CD ARG A 128 -18.606 18.878 1.000 1.00 47.34 C ATOM 1004 NE ARG A 128 -19.983 18.652 1.462 1.00 52.78 N ATOM 1005 CZ ARG A 128 -20.795 19.592 1.896 1.00 54.36 C ATOM 1006 NH1 ARG A 128 -20.372 20.856 1.947 1.00 59.14 N ATOM 1007 NH2 ARG A 128 -21.988 19.273 2.373 1.00 54.49 N ATOM 1008 N LEU A 129 -16.556 19.949 5.844 1.00 26.47 N ATOM 1009 CA LEU A 129 -16.464 19.472 7.216 1.00 27.32 C ATOM 1010 CB LEU A 129 -15.904 20.629 8.074 1.00 28.32 C ATOM 1011 CG LEU A 129 -14.376 20.692 7.953 1.00 31.26 C ATOM 1012 CD1 LEU A 129 -13.837 22.063 8.284 1.00 33.18 C ATOM 1013 CD2 LEU A 129 -13.758 19.629 8.845 1.00 31.52 C TER 1014 LEU A 129 HETATM 1015 CL CL A 200 -8.573 31.142 26.528 1.00 18.19 CL HETATM 1016 CL CL A 201 -11.694 28.713 12.250 1.00 21.82 CL HETATM 1017 O HOH A 202 10.879 10.613 32.587 1.00 10.97 O HETATM 1018 O HOH A 203 10.289 12.194 14.636 1.00 13.30 O HETATM 1019 O HOH A 204 0.644 15.551 19.649 1.00 13.78 O HETATM 1020 O HOH A 205 8.693 11.787 30.570 1.00 14.14 O HETATM 1021 O HOH A 206 12.958 13.612 26.453 1.00 14.15 O HETATM 1022 O HOH A 207 4.285 31.927 10.426 1.00 14.43 O HETATM 1023 O HOH A 208 -6.938 16.618 3.112 1.00 15.01 O HETATM 1024 O HOH A 209 7.639 26.744 8.912 1.00 15.19 O HETATM 1025 O HOH A 210 -2.286 10.409 19.133 1.00 15.48 O HETATM 1026 O HOH A 211 -1.195 23.202 4.340 1.00 15.81 O HETATM 1027 O HOH A 212 4.482 10.025 9.236 1.00 15.96 O HETATM 1028 O HOH A 213 -6.655 27.410 29.873 1.00 16.34 O HETATM 1029 O HOH A 214 7.137 13.059 31.577 1.00 16.43 O HETATM 1030 O HOH A 215 -2.967 26.170 28.758 1.00 16.45 O HETATM 1031 O HOH A 216 -2.846 31.753 10.013 1.00 16.64 O HETATM 1032 O HOH A 217 9.614 4.677 30.905 1.00 16.94 O HETATM 1033 O HOH A 218 8.449 21.343 18.679 1.00 17.27 O HETATM 1034 O HOH A 219 -0.414 31.336 8.901 1.00 17.68 O HETATM 1035 O HOH A 220 -4.069 11.072 25.838 1.00 17.78 O HETATM 1036 O HOH A 221 -3.386 37.687 25.212 1.00 18.02 O HETATM 1037 O HOH A 222 -1.662 11.131 16.406 1.00 18.03 O HETATM 1038 O HOH A 223 -3.281 31.115 5.697 1.00 18.28 O HETATM 1039 O HOH A 224 -10.939 30.911 24.243 1.00 18.32 O HETATM 1040 O HOH A 225 7.094 24.986 15.739 1.00 18.56 O HETATM 1041 O HOH A 226 -4.578 7.661 19.577 1.00 18.94 O HETATM 1042 O HOH A 227 -2.329 6.339 20.642 1.00 19.32 O HETATM 1043 O HOH A 228 -7.243 34.881 15.339 1.00 19.33 O HETATM 1044 O HOH A 229 2.942 20.443 25.408 1.00 19.37 O HETATM 1045 O HOH A 230 17.901 9.077 24.625 1.00 19.61 O HETATM 1046 O HOH A 231 -0.047 17.718 4.493 1.00 19.75 O HETATM 1047 O HOH A 232 13.490 13.490 18.605 0.50 19.79 O HETATM 1048 O HOH A 233 -6.318 33.019 17.248 1.00 19.85 O HETATM 1049 O HOH A 234 6.916 11.433 32.978 1.00 19.95 O HETATM 1050 O HOH A 235 -3.497 38.476 18.726 1.00 20.26 O HETATM 1051 O HOH A 236 -4.178 32.654 7.872 1.00 20.37 O HETATM 1052 O HOH A 237 -8.400 10.064 14.433 1.00 20.37 O HETATM 1053 O HOH A 238 -18.493 18.493 9.303 0.50 20.39 O HETATM 1054 O HOH A 239 1.385 32.790 10.400 1.00 20.43 O HETATM 1055 O HOH A 240 11.896 11.896 37.210 0.50 20.74 O HETATM 1056 O HOH A 241 -3.961 36.825 8.829 1.00 20.87 O HETATM 1057 O HOH A 242 -6.693 19.428 2.190 1.00 20.90 O HETATM 1058 O HOH A 243 -0.775 38.308 19.723 1.00 20.91 O HETATM 1059 O HOH A 244 -15.875 15.692 11.542 1.00 21.02 O HETATM 1060 O HOH A 245 7.123 16.827 10.556 1.00 21.29 O HETATM 1061 O HOH A 246 13.092 23.814 26.808 1.00 21.60 O HETATM 1062 O HOH A 247 5.471 25.661 20.192 1.00 21.65 O HETATM 1063 O HOH A 248 -4.933 12.015 28.281 1.00 21.85 O HETATM 1064 O HOH A 249 -9.500 32.799 16.423 1.00 22.13 O HETATM 1065 O HOH A 250 5.304 23.715 9.208 1.00 22.17 O HETATM 1066 O HOH A 251 4.829 22.431 21.586 1.00 22.23 O HETATM 1067 O HOH A 252 -15.332 19.844 17.081 1.00 22.29 O HETATM 1068 O HOH A 253 -11.938 12.129 10.600 1.00 22.30 O HETATM 1069 O HOH A 254 -0.010 37.715 22.558 1.00 22.39 O HETATM 1070 O HOH A 255 -7.202 10.129 13.243 1.00 22.76 O HETATM 1071 O HOH A 256 2.317 18.684 5.478 1.00 22.97 O HETATM 1072 O HOH A 257 -0.609 26.419 30.111 1.00 23.01 O HETATM 1073 O HOH A 258 -12.876 18.006 2.111 1.00 23.03 O HETATM 1074 O HOH A 259 6.914 23.143 20.073 1.00 23.39 O HETATM 1075 O HOH A 260 -3.577 28.426 5.186 1.00 23.46 O HETATM 1076 O HOH A 261 4.675 4.962 29.797 1.00 23.56 O HETATM 1077 O HOH A 262 -1.245 38.248 15.147 1.00 23.56 O HETATM 1078 O HOH A 263 -5.564 8.814 25.596 1.00 23.69 O HETATM 1079 O HOH A 264 7.009 23.807 11.646 1.00 23.70 O HETATM 1080 O HOH A 265 1.879 6.009 30.780 1.00 23.71 O HETATM 1081 O HOH A 266 5.216 25.173 22.892 1.00 23.72 O HETATM 1082 O HOH A 267 18.106 18.106 18.605 0.50 23.78 O HETATM 1083 O HOH A 268 -14.988 23.445 25.814 1.00 24.14 O HETATM 1084 O HOH A 269 -2.222 34.844 7.765 1.00 24.45 O HETATM 1085 O HOH A 270 0.390 12.722 16.652 1.00 24.62 O HETATM 1086 O HOH A 271 -14.530 24.676 5.590 1.00 24.72 O HETATM 1087 O HOH A 272 -3.166 5.199 23.295 1.00 24.86 O HETATM 1088 O HOH A 273 1.216 9.738 5.280 1.00 25.40 O HETATM 1089 O HOH A 274 -18.265 22.087 4.822 1.00 25.66 O HETATM 1090 O HOH A 275 -15.201 9.092 16.700 1.00 25.72 O HETATM 1091 O HOH A 276 4.600 36.742 19.557 1.00 25.73 O HETATM 1092 O HOH A 277 -5.992 9.643 32.090 1.00 25.80 O HETATM 1093 O HOH A 278 1.304 36.804 18.883 1.00 25.84 O HETATM 1094 O HOH A 279 -9.132 14.941 28.012 1.00 25.89 O HETATM 1095 O HOH A 280 4.528 7.893 34.391 1.00 26.12 O HETATM 1096 O HOH A 281 -2.547 30.453 34.163 1.00 26.23 O HETATM 1097 O HOH A 282 -0.620 35.566 26.185 1.00 26.24 O HETATM 1098 O HOH A 283 -7.927 11.450 28.856 1.00 26.35 O HETATM 1099 O HOH A 284 1.788 6.539 10.936 1.00 26.51 O HETATM 1100 O HOH A 285 13.159 10.398 34.593 1.00 26.79 O HETATM 1101 O HOH A 286 7.222 16.362 8.190 1.00 27.07 O HETATM 1102 O HOH A 287 -7.850 10.126 8.000 1.00 27.14 O HETATM 1103 O HOH A 288 -10.393 8.137 24.443 1.00 27.20 O HETATM 1104 O HOH A 289 -2.733 40.337 14.551 1.00 27.27 O HETATM 1105 O HOH A 290 -9.169 11.966 9.156 1.00 27.41 O HETATM 1106 O HOH A 291 -12.985 17.705 28.178 1.00 27.42 O HETATM 1107 O HOH A 292 10.547 21.468 20.359 1.00 27.50 O HETATM 1108 O HOH A 293 -10.183 33.721 11.223 1.00 27.72 O HETATM 1109 O HOH A 294 7.457 25.395 18.468 1.00 27.87 O HETATM 1110 O HOH A 295 -9.754 18.975 29.738 1.00 27.87 O HETATM 1111 O HOH A 296 17.581 14.317 21.216 1.00 28.20 O HETATM 1112 O HOH A 297 16.590 14.860 29.890 1.00 28.36 O HETATM 1113 O HOH A 298 14.635 15.792 18.064 1.00 28.37 O HETATM 1114 O HOH A 299 -7.275 39.098 15.412 1.00 28.45 O HETATM 1115 O HOH A 300 -2.211 38.505 10.070 1.00 28.51 O HETATM 1116 O HOH A 301 -8.571 37.178 15.480 1.00 28.80 O HETATM 1117 O HOH A 302 2.949 5.060 18.299 1.00 29.00 O HETATM 1118 O HOH A 303 -16.726 16.726 9.303 0.50 29.27 O HETATM 1119 O HOH A 304 13.606 24.178 23.338 1.00 29.57 O HETATM 1120 O HOH A 305 -4.676 26.495 38.634 1.00 29.58 O HETATM 1121 O HOH A 306 -10.948 29.213 27.557 1.00 29.60 O HETATM 1122 O HOH A 307 -2.697 11.318 4.964 1.00 29.70 O HETATM 1123 O HOH A 308 -1.522 3.392 27.650 1.00 29.71 O HETATM 1124 O HOH A 309 -4.251 17.996 33.619 1.00 29.91 O HETATM 1125 O HOH A 310 -5.110 6.413 24.610 1.00 29.96 O HETATM 1126 O HOH A 311 -19.900 22.788 12.165 1.00 30.10 O HETATM 1127 O HOH A 312 -6.817 8.451 27.930 1.00 30.10 O HETATM 1128 O HOH A 313 9.177 23.023 16.646 1.00 30.15 O HETATM 1129 O HOH A 314 19.217 16.433 25.700 1.00 30.15 O HETATM 1130 O HOH A 315 -16.634 14.607 19.679 1.00 30.53 O HETATM 1131 O HOH A 316 -1.426 28.041 3.446 1.00 30.85 O HETATM 1132 O HOH A 317 2.295 3.473 21.971 1.00 30.99 O HETATM 1133 O HOH A 318 2.568 37.386 21.852 1.00 31.04 O HETATM 1134 O HOH A 319 0.159 4.298 14.251 1.00 31.06 O HETATM 1135 O HOH A 320 0.692 3.808 19.651 1.00 31.15 O HETATM 1136 O HOH A 321 -5.834 20.579 32.561 1.00 31.19 O HETATM 1137 O HOH A 322 -4.693 5.674 29.352 1.00 31.20 O HETATM 1138 O HOH A 323 -15.358 14.932 22.145 1.00 31.42 O HETATM 1139 O HOH A 324 1.238 38.146 25.783 1.00 31.44 O HETATM 1140 O HOH A 325 20.230 21.631 26.500 1.00 31.80 O HETATM 1141 O HOH A 326 -16.031 19.645 22.360 1.00 31.83 O HETATM 1142 O HOH A 327 15.665 17.533 18.043 1.00 31.91 O HETATM 1143 O HOH A 328 5.286 16.954 41.850 1.00 31.92 O HETATM 1144 O HOH A 329 -8.597 28.043 31.993 1.00 32.24 O HETATM 1145 O HOH A 330 -3.444 19.251 2.289 1.00 32.41 O HETATM 1146 O HOH A 331 -10.753 12.992 8.668 1.00 32.58 O HETATM 1147 O HOH A 332 8.018 19.892 13.833 1.00 32.64 O HETATM 1148 O HOH A 333 -12.861 11.915 21.063 1.00 32.92 O HETATM 1149 O HOH A 334 -5.704 8.037 10.830 1.00 33.68 O HETATM 1150 O HOH A 335 -20.305 17.389 -0.507 1.00 33.75 O HETATM 1151 O HOH A 336 6.238 2.840 24.049 1.00 33.77 O HETATM 1152 O HOH A 337 -4.670 8.314 29.558 1.00 33.81 O HETATM 1153 O HOH A 338 2.193 22.444 25.296 1.00 33.85 O HETATM 1154 O HOH A 339 -16.498 21.632 23.971 1.00 34.03 O HETATM 1155 O HOH A 340 -9.160 5.260 18.834 1.00 34.18 O HETATM 1156 O HOH A 341 -8.559 19.349 0.671 1.00 34.21 O HETATM 1157 O HOH A 342 13.968 6.338 33.309 1.00 34.39 O HETATM 1158 O HOH A 343 10.492 18.283 39.312 1.00 34.80 O HETATM 1159 O HOH A 344 3.455 31.157 24.979 1.00 34.87 O HETATM 1160 O HOH A 345 -1.988 4.987 29.616 1.00 35.02 O HETATM 1161 O HOH A 346 -6.300 7.200 32.899 1.00 35.03 O HETATM 1162 O HOH A 347 -20.135 18.837 11.394 1.00 35.17 O HETATM 1163 O HOH A 348 -1.041 3.883 25.065 1.00 35.59 O HETATM 1164 O HOH A 349 -5.860 27.566 35.957 1.00 35.59 O HETATM 1165 O HOH A 350 7.817 17.167 38.889 1.00 35.72 O HETATM 1166 O HOH A 351 3.038 22.719 28.596 1.00 35.80 O HETATM 1167 O HOH A 352 7.383 23.092 5.206 1.00 36.12 O HETATM 1168 O HOH A 353 -1.512 28.095 34.397 1.00 36.18 O HETATM 1169 O HOH A 354 -3.790 22.766 1.644 1.00 36.56 O HETATM 1170 O HOH A 355 -1.740 19.862 3.414 1.00 37.02 O HETATM 1171 O HOH A 356 2.114 12.911 36.519 1.00 37.08 O HETATM 1172 O HOH A 357 3.724 24.464 3.530 1.00 37.13 O HETATM 1173 O HOH A 358 -18.346 29.918 18.378 1.00 37.27 O HETATM 1174 O HOH A 359 4.572 26.197 26.844 1.00 37.66 O HETATM 1175 O HOH A 360 20.535 20.940 24.404 1.00 37.82 O HETATM 1176 O HOH A 361 9.634 21.963 28.448 1.00 38.26 O HETATM 1177 O HOH A 362 -1.080 21.418 35.703 1.00 38.49 O HETATM 1178 O HOH A 363 1.677 28.597 28.743 1.00 38.60 O HETATM 1179 O HOH A 364 19.283 15.322 28.250 1.00 38.60 O HETATM 1180 O HOH A 365 7.015 18.690 35.740 1.00 38.72 O HETATM 1181 O HOH A 366 1.249 3.610 16.471 1.00 38.94 O HETATM 1182 O HOH A 367 1.582 19.199 38.346 1.00 39.28 O HETATM 1183 O HOH A 368 11.048 24.309 30.326 1.00 39.30 O HETATM 1184 O HOH A 369 -14.416 21.935 28.473 1.00 39.31 O HETATM 1185 O HOH A 370 18.376 19.088 24.588 1.00 39.45 O HETATM 1186 O HOH A 371 -10.984 36.550 14.845 1.00 39.83 O HETATM 1187 O HOH A 372 -2.577 29.992 1.311 1.00 40.38 O HETATM 1188 O HOH A 373 17.114 21.181 21.516 1.00 40.73 O HETATM 1189 O HOH A 374 5.265 21.346 3.207 1.00 41.14 O HETATM 1190 O HOH A 375 9.959 11.483 35.605 1.00 42.02 O HETATM 1191 O HOH A 376 -8.712 37.262 11.831 1.00 42.48 O HETATM 1192 O HOH A 377 9.550 17.444 6.125 1.00 44.76 O HETATM 1193 O HOH A 378 -19.917 19.989 14.602 1.00 49.67 O CONECT 50 996 CONECT 247 904 CONECT 522 643 CONECT 610 739 CONECT 643 522 CONECT 739 610 CONECT 904 247 CONECT 996 50 MASTER 292 0 2 7 3 0 2 6 1192 1 8 10 END bio3d/inst/examples/aspirin.mol20000644000176200001440000000400714707230357016316 0ustar liggesusers@MOLECULE ZINC00000053 20 20 0 0 0 SMALL USER_CHARGES @ATOM 1 C1 -1.4238 1.4221 1.2577 C.3 1 <0> -0.1370 2 C2 -1.3441 -0.0813 1.1904 C.2 1 <0> 0.4790 3 O1 -1.4532 -0.7378 2.1988 O.2 1 <0> -0.5137 4 O2 -1.1519 -0.6914 0.0093 O.3 1 <0> -0.2785 5 C3 -0.9822 -2.0375 0.0080 C.ar 1 <0> 0.1140 6 C4 0.2935 -2.5790 0.0577 C.ar 1 <0> -0.1438 7 C5 0.4647 -3.9491 0.0557 C.ar 1 <0> -0.1168 8 C6 -0.6330 -4.7933 0.0047 C.ar 1 <0> -0.1375 9 C7 -1.9078 -4.2739 -0.0447 C.ar 1 <0> -0.0755 10 C8 -2.0966 -2.8882 -0.0379 C.ar 1 <0> -0.1363 11 C9 -3.4564 -2.3257 -0.0844 C.2 1 <0> 0.5228 12 O3 -4.4256 -3.0711 -0.1243 O.co2 1 <0> -0.6853 13 O4 -3.6170 -1.1130 -0.0830 O.co2 1 <0> -0.6764 14 H1 -1.5815 1.7317 2.2908 H 1 <0> 0.0951 15 H2 -0.4932 1.8522 0.8875 H 1 <0> 0.0914 16 H3 -2.2544 1.7698 0.6434 H 1 <0> 0.1039 17 H4 1.1543 -1.9280 0.0976 H 1 <0> 0.1207 18 H5 1.4605 -4.3654 0.0938 H 1 <0> 0.1210 19 H6 -0.4882 -5.8635 0.0032 H 1 <0> 0.1200 20 H7 -2.7604 -4.9357 -0.0844 H 1 <0> 0.1328 @BOND 1 1 2 1 2 1 14 1 3 1 15 1 4 1 16 1 5 2 3 2 6 2 4 1 7 4 5 1 8 5 10 ar 9 5 6 ar 10 6 7 ar 11 6 17 1 12 7 8 ar 13 7 18 1 14 8 9 ar 15 8 19 1 16 9 10 ar 17 9 20 1 18 10 11 1 19 11 12 2 20 11 13 1 bio3d/inst/examples/1hel.pdb0000644000176200001440000032627314707230357015412 0ustar liggesusersHEADER HYDROLASE(O-GLYCOSYL) 10-JAN-92 1HEL TITLE STRUCTURAL AND THERMODYNAMIC ANALYSIS OF COMPENSATING MUTATIONS WITHIN TITLE 2 THE CORE OF CHICKEN EGG WHITE LYSOZYME COMPND MOL_ID: 1; COMPND 2 MOLECULE: HEN EGG WHITE LYSOZYME; COMPND 3 CHAIN: A; COMPND 4 EC: 3.2.1.17; COMPND 5 ENGINEERED: YES SOURCE MOL_ID: 1; SOURCE 2 ORGANISM_SCIENTIFIC: GALLUS GALLUS; SOURCE 3 ORGANISM_COMMON: CHICKEN; SOURCE 4 ORGANISM_TAXID: 9031; SOURCE 5 ORGAN: EGG KEYWDS HYDROLASE(O-GLYCOSYL) EXPDTA X-RAY DIFFRACTION AUTHOR K.P.WILSON,B.A.MALCOLM,B.W.MATTHEWS REVDAT 3 16-NOV-11 1HEL 1 VERSN HETATM REVDAT 2 24-FEB-09 1HEL 1 VERSN REVDAT 1 31-OCT-93 1HEL 0 JRNL AUTH K.P.WILSON,B.A.MALCOLM,B.W.MATTHEWS JRNL TITL STRUCTURAL AND THERMODYNAMIC ANALYSIS OF COMPENSATING JRNL TITL 2 MUTATIONS WITHIN THE CORE OF CHICKEN EGG WHITE LYSOZYME. JRNL REF J.BIOL.CHEM. V. 267 10842 1992 JRNL REFN ISSN 0021-9258 JRNL PMID 1587860 REMARK 1 REMARK 1 REFERENCE 1 REMARK 1 AUTH B.A.MALCOLM,K.P.WILSON,B.W.MATTHEWS,J.F.KIRSCH,A.C.WILSON REMARK 1 TITL ANCESTRAL LYSOZYMES RECONSTRUCTED, NEUTRALITY TESTED, AND REMARK 1 TITL 2 THERMOSTABILITY LINKED TO HYDROCARBON PACKING REMARK 1 REF NATURE V. 344 86 1990 REMARK 1 REFN ISSN 0028-0836 REMARK 2 REMARK 2 RESOLUTION. 1.70 ANGSTROMS. REMARK 3 REMARK 3 REFINEMENT. REMARK 3 PROGRAM : TNT REMARK 3 AUTHORS : TRONRUD,TEN EYCK,MATTHEWS REMARK 3 REMARK 3 DATA USED IN REFINEMENT. REMARK 3 RESOLUTION RANGE HIGH (ANGSTROMS) : 1.70 REMARK 3 RESOLUTION RANGE LOW (ANGSTROMS) : NULL REMARK 3 DATA CUTOFF (SIGMA(F)) : NULL REMARK 3 COMPLETENESS FOR RANGE (%) : NULL REMARK 3 NUMBER OF REFLECTIONS : NULL REMARK 3 REMARK 3 USING DATA ABOVE SIGMA CUTOFF. REMARK 3 CROSS-VALIDATION METHOD : NULL REMARK 3 FREE R VALUE TEST SET SELECTION : NULL REMARK 3 R VALUE (WORKING + TEST SET) : 0.152 REMARK 3 R VALUE (WORKING SET) : NULL REMARK 3 FREE R VALUE : NULL REMARK 3 FREE R VALUE TEST SET SIZE (%) : NULL REMARK 3 FREE R VALUE TEST SET COUNT : NULL REMARK 3 REMARK 3 USING ALL DATA, NO SIGMA CUTOFF. REMARK 3 R VALUE (WORKING + TEST SET, NO CUTOFF) : NULL REMARK 3 R VALUE (WORKING SET, NO CUTOFF) : NULL REMARK 3 FREE R VALUE (NO CUTOFF) : NULL REMARK 3 FREE R VALUE TEST SET SIZE (%, NO CUTOFF) : NULL REMARK 3 FREE R VALUE TEST SET COUNT (NO CUTOFF) : NULL REMARK 3 TOTAL NUMBER OF REFLECTIONS (NO CUTOFF) : NULL REMARK 3 REMARK 3 NUMBER OF NON-HYDROGEN ATOMS USED IN REFINEMENT. REMARK 3 PROTEIN ATOMS : 1001 REMARK 3 NUCLEIC ACID ATOMS : 0 REMARK 3 HETEROGEN ATOMS : 0 REMARK 3 SOLVENT ATOMS : 185 REMARK 3 REMARK 3 WILSON B VALUE (FROM FCALC, A**2) : NULL REMARK 3 REMARK 3 RMS DEVIATIONS FROM IDEAL VALUES. RMS WEIGHT COUNT REMARK 3 BOND LENGTHS (A) : 0.019 ; NULL ; NULL REMARK 3 BOND ANGLES (DEGREES) : 2.400 ; NULL ; NULL REMARK 3 TORSION ANGLES (DEGREES) : NULL ; NULL ; NULL REMARK 3 PSEUDOROTATION ANGLES (DEGREES) : NULL ; NULL ; NULL REMARK 3 TRIGONAL CARBON PLANES (A) : NULL ; NULL ; NULL REMARK 3 GENERAL PLANES (A) : NULL ; NULL ; NULL REMARK 3 ISOTROPIC THERMAL FACTORS (A**2) : NULL ; NULL ; NULL REMARK 3 NON-BONDED CONTACTS (A) : NULL ; NULL ; NULL REMARK 3 REMARK 3 INCORRECT CHIRAL-CENTERS (COUNT) : NULL REMARK 3 REMARK 3 BULK SOLVENT MODELING. REMARK 3 METHOD USED : NULL REMARK 3 KSOL : NULL REMARK 3 BSOL : NULL REMARK 3 REMARK 3 RESTRAINT LIBRARIES. REMARK 3 STEREOCHEMISTRY : NULL REMARK 3 ISOTROPIC THERMAL FACTOR RESTRAINTS : NULL REMARK 3 REMARK 3 OTHER REFINEMENT REMARKS: NULL REMARK 4 REMARK 4 1HEL COMPLIES WITH FORMAT V. 3.15, 01-DEC-08 REMARK 100 REMARK 100 THIS ENTRY HAS BEEN PROCESSED BY BNL. REMARK 200 REMARK 200 EXPERIMENTAL DETAILS REMARK 200 EXPERIMENT TYPE : X-RAY DIFFRACTION REMARK 200 DATE OF DATA COLLECTION : NULL REMARK 200 TEMPERATURE (KELVIN) : NULL REMARK 200 PH : NULL REMARK 200 NUMBER OF CRYSTALS USED : NULL REMARK 200 REMARK 200 SYNCHROTRON (Y/N) : NULL REMARK 200 RADIATION SOURCE : NULL REMARK 200 BEAMLINE : NULL REMARK 200 X-RAY GENERATOR MODEL : NULL REMARK 200 MONOCHROMATIC OR LAUE (M/L) : NULL REMARK 200 WAVELENGTH OR RANGE (A) : NULL REMARK 200 MONOCHROMATOR : NULL REMARK 200 OPTICS : NULL REMARK 200 REMARK 200 DETECTOR TYPE : NULL REMARK 200 DETECTOR MANUFACTURER : NULL REMARK 200 INTENSITY-INTEGRATION SOFTWARE : NULL REMARK 200 DATA SCALING SOFTWARE : NULL REMARK 200 REMARK 200 NUMBER OF UNIQUE REFLECTIONS : NULL REMARK 200 RESOLUTION RANGE HIGH (A) : NULL REMARK 200 RESOLUTION RANGE LOW (A) : NULL REMARK 200 REJECTION CRITERIA (SIGMA(I)) : NULL REMARK 200 REMARK 200 OVERALL. REMARK 200 COMPLETENESS FOR RANGE (%) : NULL REMARK 200 DATA REDUNDANCY : NULL REMARK 200 R MERGE (I) : NULL REMARK 200 R SYM (I) : NULL REMARK 200 FOR THE DATA SET : NULL REMARK 200 REMARK 200 IN THE HIGHEST RESOLUTION SHELL. REMARK 200 HIGHEST RESOLUTION SHELL, RANGE HIGH (A) : NULL REMARK 200 HIGHEST RESOLUTION SHELL, RANGE LOW (A) : NULL REMARK 200 COMPLETENESS FOR SHELL (%) : NULL REMARK 200 DATA REDUNDANCY IN SHELL : NULL REMARK 200 R MERGE FOR SHELL (I) : NULL REMARK 200 R SYM FOR SHELL (I) : NULL REMARK 200 FOR SHELL : NULL REMARK 200 REMARK 200 DIFFRACTION PROTOCOL: NULL REMARK 200 METHOD USED TO DETERMINE THE STRUCTURE: NULL REMARK 200 SOFTWARE USED: NULL REMARK 200 STARTING MODEL: NULL REMARK 200 REMARK 200 REMARK: NULL REMARK 280 REMARK 280 CRYSTAL REMARK 280 SOLVENT CONTENT, VS (%): 40.52 REMARK 280 MATTHEWS COEFFICIENT, VM (ANGSTROMS**3/DA): 2.07 REMARK 280 REMARK 280 CRYSTALLIZATION CONDITIONS: NULL REMARK 290 REMARK 290 CRYSTALLOGRAPHIC SYMMETRY REMARK 290 SYMMETRY OPERATORS FOR SPACE GROUP: P 43 21 2 REMARK 290 REMARK 290 SYMOP SYMMETRY REMARK 290 NNNMMM OPERATOR REMARK 290 1555 X,Y,Z REMARK 290 2555 -X,-Y,Z+1/2 REMARK 290 3555 -Y+1/2,X+1/2,Z+3/4 REMARK 290 4555 Y+1/2,-X+1/2,Z+1/4 REMARK 290 5555 -X+1/2,Y+1/2,-Z+3/4 REMARK 290 6555 X+1/2,-Y+1/2,-Z+1/4 REMARK 290 7555 Y,X,-Z REMARK 290 8555 -Y,-X,-Z+1/2 REMARK 290 REMARK 290 WHERE NNN -> OPERATOR NUMBER REMARK 290 MMM -> TRANSLATION VECTOR REMARK 290 REMARK 290 CRYSTALLOGRAPHIC SYMMETRY TRANSFORMATIONS REMARK 290 THE FOLLOWING TRANSFORMATIONS OPERATE ON THE ATOM/HETATM REMARK 290 RECORDS IN THIS ENTRY TO PRODUCE CRYSTALLOGRAPHICALLY REMARK 290 RELATED MOLECULES. REMARK 290 SMTRY1 1 1.000000 0.000000 0.000000 0.00000 REMARK 290 SMTRY2 1 0.000000 1.000000 0.000000 0.00000 REMARK 290 SMTRY3 1 0.000000 0.000000 1.000000 0.00000 REMARK 290 SMTRY1 2 -1.000000 0.000000 0.000000 0.00000 REMARK 290 SMTRY2 2 0.000000 -1.000000 0.000000 0.00000 REMARK 290 SMTRY3 2 0.000000 0.000000 1.000000 18.95000 REMARK 290 SMTRY1 3 0.000000 -1.000000 0.000000 39.55000 REMARK 290 SMTRY2 3 1.000000 0.000000 0.000000 39.55000 REMARK 290 SMTRY3 3 0.000000 0.000000 1.000000 28.42500 REMARK 290 SMTRY1 4 0.000000 1.000000 0.000000 39.55000 REMARK 290 SMTRY2 4 -1.000000 0.000000 0.000000 39.55000 REMARK 290 SMTRY3 4 0.000000 0.000000 1.000000 9.47500 REMARK 290 SMTRY1 5 -1.000000 0.000000 0.000000 39.55000 REMARK 290 SMTRY2 5 0.000000 1.000000 0.000000 39.55000 REMARK 290 SMTRY3 5 0.000000 0.000000 -1.000000 28.42500 REMARK 290 SMTRY1 6 1.000000 0.000000 0.000000 39.55000 REMARK 290 SMTRY2 6 0.000000 -1.000000 0.000000 39.55000 REMARK 290 SMTRY3 6 0.000000 0.000000 -1.000000 9.47500 REMARK 290 SMTRY1 7 0.000000 1.000000 0.000000 0.00000 REMARK 290 SMTRY2 7 1.000000 0.000000 0.000000 0.00000 REMARK 290 SMTRY3 7 0.000000 0.000000 -1.000000 0.00000 REMARK 290 SMTRY1 8 0.000000 -1.000000 0.000000 0.00000 REMARK 290 SMTRY2 8 -1.000000 0.000000 0.000000 0.00000 REMARK 290 SMTRY3 8 0.000000 0.000000 -1.000000 18.95000 REMARK 290 REMARK 290 REMARK: NULL REMARK 300 REMARK 300 BIOMOLECULE: 1 REMARK 300 SEE REMARK 350 FOR THE AUTHOR PROVIDED AND/OR PROGRAM REMARK 300 GENERATED ASSEMBLY INFORMATION FOR THE STRUCTURE IN REMARK 300 THIS ENTRY. THE REMARK MAY ALSO PROVIDE INFORMATION ON REMARK 300 BURIED SURFACE AREA. REMARK 350 REMARK 350 COORDINATES FOR A COMPLETE MULTIMER REPRESENTING THE KNOWN REMARK 350 BIOLOGICALLY SIGNIFICANT OLIGOMERIZATION STATE OF THE REMARK 350 MOLECULE CAN BE GENERATED BY APPLYING BIOMT TRANSFORMATIONS REMARK 350 GIVEN BELOW. BOTH NON-CRYSTALLOGRAPHIC AND REMARK 350 CRYSTALLOGRAPHIC OPERATIONS ARE GIVEN. REMARK 350 REMARK 350 BIOMOLECULE: 1 REMARK 350 AUTHOR DETERMINED BIOLOGICAL UNIT: MONOMERIC REMARK 350 APPLY THE FOLLOWING TO CHAINS: A REMARK 350 BIOMT1 1 1.000000 0.000000 0.000000 0.00000 REMARK 350 BIOMT2 1 0.000000 1.000000 0.000000 0.00000 REMARK 350 BIOMT3 1 0.000000 0.000000 1.000000 0.00000 REMARK 375 REMARK 375 SPECIAL POSITION REMARK 375 THE FOLLOWING ATOMS ARE FOUND TO BE WITHIN 0.15 ANGSTROMS REMARK 375 OF A SYMMETRY RELATED ATOM AND ARE ASSUMED TO BE ON SPECIAL REMARK 375 POSITIONS. REMARK 375 REMARK 375 ATOM RES CSSEQI REMARK 375 HOH A 318 LIES ON A SPECIAL POSITION. REMARK 500 REMARK 500 GEOMETRY AND STEREOCHEMISTRY REMARK 500 SUBTOPIC: CLOSE CONTACTS REMARK 500 REMARK 500 THE FOLLOWING ATOMS THAT ARE RELATED BY CRYSTALLOGRAPHIC REMARK 500 SYMMETRY ARE IN CLOSE CONTACT. AN ATOM LOCATED WITHIN 0.15 REMARK 500 ANGSTROMS OF A SYMMETRY RELATED ATOM IS ASSUMED TO BE ON A REMARK 500 SPECIAL POSITION AND IS, THEREFORE, LISTED IN REMARK 375 REMARK 500 INSTEAD OF REMARK 500. ATOMS WITH NON-BLANK ALTERNATE REMARK 500 LOCATION INDICATORS ARE NOT INCLUDED IN THE CALCULATIONS. REMARK 500 REMARK 500 DISTANCE CUTOFF: REMARK 500 2.2 ANGSTROMS FOR CONTACTS NOT INVOLVING HYDROGEN ATOMS REMARK 500 1.6 ANGSTROMS FOR CONTACTS INVOLVING HYDROGEN ATOMS REMARK 500 REMARK 500 ATM1 RES C SSEQI ATM2 RES C SSEQI SSYMOP DISTANCE REMARK 500 O HOH A 275 O HOH A 275 8555 0.35 REMARK 500 O HOH A 203 O HOH A 203 7556 1.38 REMARK 500 REMARK 500 REMARK: NULL REMARK 500 REMARK 500 GEOMETRY AND STEREOCHEMISTRY REMARK 500 SUBTOPIC: COVALENT BOND ANGLES REMARK 500 REMARK 500 THE STEREOCHEMICAL PARAMETERS OF THE FOLLOWING RESIDUES REMARK 500 HAVE VALUES WHICH DEVIATE FROM EXPECTED VALUES BY MORE REMARK 500 THAN 6*RMSD (M=MODEL NUMBER; RES=RESIDUE NAME; C=CHAIN REMARK 500 IDENTIFIER; SSEQ=SEQUENCE NUMBER; I=INSERTION CODE). REMARK 500 REMARK 500 STANDARD TABLE: REMARK 500 FORMAT: (10X,I3,1X,A3,1X,A1,I4,A1,3(1X,A4,2X),12X,F5.1) REMARK 500 REMARK 500 EXPECTED VALUES PROTEIN: ENGH AND HUBER, 1999 REMARK 500 EXPECTED VALUES NUCLEIC ACID: CLOWNEY ET AL 1996 REMARK 500 REMARK 500 M RES CSSEQI ATM1 ATM2 ATM3 REMARK 500 ARG A 5 NE - CZ - NH1 ANGL. DEV. = 4.8 DEGREES REMARK 500 ARG A 14 NE - CZ - NH1 ANGL. DEV. = 3.3 DEGREES REMARK 500 ASP A 18 CB - CG - OD1 ANGL. DEV. = 8.7 DEGREES REMARK 500 ASP A 18 CB - CG - OD2 ANGL. DEV. = -8.1 DEGREES REMARK 500 ARG A 45 NE - CZ - NH1 ANGL. DEV. = 3.3 DEGREES REMARK 500 ASP A 52 CB - CG - OD1 ANGL. DEV. = 5.5 DEGREES REMARK 500 ARG A 61 NE - CZ - NH1 ANGL. DEV. = 3.6 DEGREES REMARK 500 ARG A 73 NE - CZ - NH1 ANGL. DEV. = 3.3 DEGREES REMARK 500 ASP A 87 CB - CG - OD1 ANGL. DEV. = 5.6 DEGREES REMARK 500 ASP A 119 CB - CG - OD2 ANGL. DEV. = -5.6 DEGREES REMARK 500 ARG A 128 NE - CZ - NH1 ANGL. DEV. = 3.7 DEGREES REMARK 500 REMARK 500 REMARK: NULL REMARK 500 REMARK 500 GEOMETRY AND STEREOCHEMISTRY REMARK 500 SUBTOPIC: TORSION ANGLES REMARK 500 REMARK 500 TORSION ANGLES OUTSIDE THE EXPECTED RAMACHANDRAN REGIONS: REMARK 500 (M=MODEL NUMBER; RES=RESIDUE NAME; C=CHAIN IDENTIFIER; REMARK 500 SSEQ=SEQUENCE NUMBER; I=INSERTION CODE). REMARK 500 REMARK 500 STANDARD TABLE: REMARK 500 FORMAT:(10X,I3,1X,A3,1X,A1,I4,A1,4X,F7.2,3X,F7.2) REMARK 500 REMARK 500 EXPECTED VALUES: GJ KLEYWEGT AND TA JONES (1996). PHI/PSI- REMARK 500 CHOLOGY: RAMACHANDRAN REVISITED. STRUCTURE 4, 1395 - 1400 REMARK 500 REMARK 500 M RES CSSEQI PSI PHI REMARK 500 ARG A 68 19.50 -141.12 REMARK 500 REMARK 500 REMARK: NULL REMARK 525 REMARK 525 SOLVENT REMARK 525 REMARK 525 THE SOLVENT MOLECULES HAVE CHAIN IDENTIFIERS THAT REMARK 525 INDICATE THE POLYMER CHAIN WITH WHICH THEY ARE MOST REMARK 525 CLOSELY ASSOCIATED. THE REMARK LISTS ALL THE SOLVENT REMARK 525 MOLECULES WHICH ARE MORE THAN 5A AWAY FROM THE REMARK 525 NEAREST POLYMER CHAIN (M = MODEL NUMBER; REMARK 525 RES=RESIDUE NAME; C=CHAIN IDENTIFIER; SSEQ=SEQUENCE REMARK 525 NUMBER; I=INSERTION CODE): REMARK 525 REMARK 525 M RES CSSEQI REMARK 525 HOH A 188 DISTANCE = 6.89 ANGSTROMS REMARK 525 HOH A 189 DISTANCE = 6.32 ANGSTROMS REMARK 525 HOH A 190 DISTANCE = 5.68 ANGSTROMS REMARK 525 HOH A 228 DISTANCE = 6.51 ANGSTROMS REMARK 525 HOH A 230 DISTANCE = 5.30 ANGSTROMS REMARK 525 HOH A 243 DISTANCE = 5.19 ANGSTROMS REMARK 525 HOH A 249 DISTANCE = 6.99 ANGSTROMS REMARK 525 HOH A 258 DISTANCE = 6.92 ANGSTROMS REMARK 525 HOH A 268 DISTANCE = 8.36 ANGSTROMS REMARK 525 HOH A 278 DISTANCE = 6.81 ANGSTROMS REMARK 525 HOH A 304 DISTANCE = 7.48 ANGSTROMS REMARK 525 HOH A 305 DISTANCE = 6.21 ANGSTROMS REMARK 525 HOH A 308 DISTANCE = 19.71 ANGSTROMS DBREF 1HEL A 1 129 UNP P00698 LYSC_CHICK 19 147 SEQRES 1 A 129 LYS VAL PHE GLY ARG CYS GLU LEU ALA ALA ALA MET LYS SEQRES 2 A 129 ARG HIS GLY LEU ASP ASN TYR ARG GLY TYR SER LEU GLY SEQRES 3 A 129 ASN TRP VAL CYS ALA ALA LYS PHE GLU SER ASN PHE ASN SEQRES 4 A 129 THR GLN ALA THR ASN ARG ASN THR ASP GLY SER THR ASP SEQRES 5 A 129 TYR GLY ILE LEU GLN ILE ASN SER ARG TRP TRP CYS ASN SEQRES 6 A 129 ASP GLY ARG THR PRO GLY SER ARG ASN LEU CYS ASN ILE SEQRES 7 A 129 PRO CYS SER ALA LEU LEU SER SER ASP ILE THR ALA SER SEQRES 8 A 129 VAL ASN CYS ALA LYS LYS ILE VAL SER ASP GLY ASN GLY SEQRES 9 A 129 MET ASN ALA TRP VAL ALA TRP ARG ASN ARG CYS LYS GLY SEQRES 10 A 129 THR ASP VAL GLN ALA TRP ILE ARG GLY CYS ARG LEU FORMUL 2 HOH *185(H2 O) HELIX 1 H1 GLY A 4 GLY A 16 1 13 HELIX 2 H2 LEU A 25 PHE A 34 1 10 HELIX 3 H3 PRO A 79 LEU A 84 5 6 HELIX 4 H4 ILE A 88 SER A 100 1 13 HELIX 5 H5 GLY A 104 TRP A 108 5 5 HELIX 6 H6 VAL A 109 ARG A 114 1 6 HELIX 7 H7 VAL A 120 ILE A 124 5 5 SHEET 1 S1 3 ALA A 42 ASN A 46 0 SHEET 2 S1 3 GLY A 49 GLY A 54 -1 O SER A 50 N ASN A 46 SHEET 3 S1 3 LEU A 56 SER A 60 -1 O SER A 60 N THR A 51 SSBOND 1 CYS A 6 CYS A 127 1555 1555 1.99 SSBOND 2 CYS A 30 CYS A 115 1555 1555 2.11 SSBOND 3 CYS A 64 CYS A 80 1555 1555 2.00 SSBOND 4 CYS A 76 CYS A 94 1555 1555 2.10 CRYST1 79.100 79.100 37.900 90.00 90.00 90.00 P 43 21 2 8 ORIGX1 1.000000 0.000000 0.000000 0.00000 ORIGX2 0.000000 1.000000 0.000000 0.00000 ORIGX3 0.000000 0.000000 1.000000 0.00000 SCALE1 0.012642 0.000000 0.000000 0.00000 SCALE2 0.000000 0.012642 0.000000 0.00000 SCALE3 0.000000 0.000000 0.026385 0.00000 ATOM 1 N LYS A 1 3.294 10.164 10.266 1.00 11.18 N ATOM 2 CA LYS A 1 2.388 10.533 9.168 1.00 9.68 C ATOM 3 C LYS A 1 2.438 12.049 8.889 1.00 14.00 C ATOM 4 O LYS A 1 2.406 12.898 9.815 1.00 14.00 O ATOM 5 CB LYS A 1 0.949 10.101 9.559 1.00 13.29 C ATOM 6 CG LYS A 1 -0.050 10.621 8.573 1.00 13.52 C ATOM 7 CD LYS A 1 -1.425 10.081 8.720 1.00 22.15 C ATOM 8 CE LYS A 1 -2.370 10.773 7.722 1.00 20.23 C ATOM 9 NZ LYS A 1 -3.776 10.439 7.933 1.00 68.72 N ATOM 10 N VAL A 2 2.552 12.428 7.626 1.00 10.17 N ATOM 11 CA VAL A 2 2.524 13.840 7.282 1.00 10.02 C ATOM 12 C VAL A 2 1.120 14.180 6.770 1.00 27.84 C ATOM 13 O VAL A 2 0.737 13.798 5.675 1.00 22.87 O ATOM 14 CB VAL A 2 3.529 14.264 6.240 1.00 9.00 C ATOM 15 CG1 VAL A 2 3.313 15.765 5.983 1.00 11.37 C ATOM 16 CG2 VAL A 2 4.928 14.016 6.810 1.00 10.57 C ATOM 17 N PHE A 3 0.333 14.851 7.573 1.00 16.35 N ATOM 18 CA PHE A 3 -1.021 15.173 7.169 1.00 15.34 C ATOM 19 C PHE A 3 -1.097 16.285 6.126 1.00 14.79 C ATOM 20 O PHE A 3 -0.261 17.203 6.054 1.00 14.99 O ATOM 21 CB PHE A 3 -1.867 15.710 8.361 1.00 14.03 C ATOM 22 CG PHE A 3 -2.412 14.638 9.295 1.00 16.41 C ATOM 23 CD1 PHE A 3 -1.575 14.049 10.240 1.00 14.44 C ATOM 24 CD2 PHE A 3 -3.757 14.285 9.274 1.00 18.12 C ATOM 25 CE1 PHE A 3 -2.065 13.116 11.135 1.00 11.11 C ATOM 26 CE2 PHE A 3 -4.263 13.332 10.178 1.00 32.24 C ATOM 27 CZ PHE A 3 -3.413 12.758 11.132 1.00 14.31 C ATOM 28 N GLY A 4 -2.229 16.228 5.393 1.00 15.47 N ATOM 29 CA GLY A 4 -2.645 17.273 4.511 1.00 13.97 C ATOM 30 C GLY A 4 -3.456 18.261 5.350 1.00 10.95 C ATOM 31 O GLY A 4 -4.070 17.876 6.282 1.00 16.45 O ATOM 32 N ARG A 5 -3.414 19.518 5.009 1.00 14.28 N ATOM 33 CA ARG A 5 -4.106 20.560 5.674 1.00 11.63 C ATOM 34 C ARG A 5 -5.540 20.226 5.992 1.00 21.37 C ATOM 35 O ARG A 5 -5.963 20.258 7.138 1.00 9.74 O ATOM 36 CB ARG A 5 -3.952 21.857 4.900 1.00 13.31 C ATOM 37 CG ARG A 5 -4.508 23.053 5.610 1.00 13.02 C ATOM 38 CD ARG A 5 -4.414 24.335 4.775 1.00 19.72 C ATOM 39 NE ARG A 5 -5.013 24.223 3.447 1.00 23.52 N ATOM 40 CZ ARG A 5 -6.287 24.522 3.048 1.00 40.17 C ATOM 41 NH1 ARG A 5 -7.248 25.009 3.841 1.00 17.54 N ATOM 42 NH2 ARG A 5 -6.619 24.303 1.767 1.00 33.21 N ATOM 43 N CYS A 6 -6.327 19.866 4.967 1.00 15.04 N ATOM 44 CA CYS A 6 -7.767 19.572 5.189 1.00 12.93 C ATOM 45 C CYS A 6 -7.997 18.269 5.916 1.00 5.10 C ATOM 46 O CYS A 6 -8.992 18.125 6.630 1.00 13.60 O ATOM 47 CB CYS A 6 -8.607 19.637 3.859 1.00 16.72 C ATOM 48 SG CYS A 6 -8.669 21.273 3.104 1.00 16.68 S ATOM 49 N GLU A 7 -7.142 17.274 5.653 1.00 7.34 N ATOM 50 CA GLU A 7 -7.309 15.981 6.323 1.00 10.86 C ATOM 51 C GLU A 7 -7.129 16.181 7.848 1.00 17.71 C ATOM 52 O GLU A 7 -7.835 15.638 8.657 1.00 14.19 O ATOM 53 CB GLU A 7 -6.187 15.048 5.880 1.00 16.19 C ATOM 54 CG GLU A 7 -6.206 13.614 6.496 1.00 16.67 C ATOM 55 CD GLU A 7 -4.952 12.864 6.030 1.00 32.91 C ATOM 56 OE1 GLU A 7 -4.003 13.411 5.480 1.00 18.18 O ATOM 57 OE2 GLU A 7 -4.992 11.578 6.219 1.00 28.07 O ATOM 58 N LEU A 8 -6.148 16.987 8.221 1.00 14.04 N ATOM 59 CA LEU A 8 -5.919 17.285 9.637 1.00 8.65 C ATOM 60 C LEU A 8 -7.068 18.103 10.254 1.00 10.08 C ATOM 61 O LEU A 8 -7.500 17.827 11.353 1.00 15.66 O ATOM 62 CB LEU A 8 -4.607 18.084 9.809 1.00 14.88 C ATOM 63 CG LEU A 8 -4.384 18.432 11.299 1.00 12.61 C ATOM 64 CD1 LEU A 8 -4.110 17.104 12.053 1.00 12.51 C ATOM 65 CD2 LEU A 8 -3.147 19.299 11.372 1.00 13.98 C ATOM 66 N ALA A 9 -7.524 19.122 9.561 1.00 11.92 N ATOM 67 CA ALA A 9 -8.664 19.896 9.982 1.00 10.97 C ATOM 68 C ALA A 9 -9.841 18.971 10.304 1.00 15.73 C ATOM 69 O ALA A 9 -10.469 19.046 11.359 1.00 13.41 O ATOM 70 CB ALA A 9 -9.039 21.012 8.954 1.00 8.88 C ATOM 71 N ALA A 10 -10.124 18.049 9.425 1.00 12.11 N ATOM 72 CA ALA A 10 -11.262 17.129 9.595 1.00 12.19 C ATOM 73 C ALA A 10 -11.034 16.206 10.780 1.00 18.02 C ATOM 74 O ALA A 10 -11.932 15.902 11.522 1.00 17.70 O ATOM 75 CB ALA A 10 -11.457 16.297 8.313 1.00 14.75 C ATOM 76 N ALA A 11 -9.815 15.771 10.988 1.00 14.94 N ATOM 77 CA ALA A 11 -9.544 14.908 12.136 1.00 12.19 C ATOM 78 C ALA A 11 -9.651 15.641 13.494 1.00 7.51 C ATOM 79 O ALA A 11 -10.088 15.066 14.457 1.00 12.99 O ATOM 80 CB ALA A 11 -8.153 14.250 12.041 1.00 15.76 C ATOM 81 N MET A 12 -9.107 16.884 13.529 1.00 10.71 N ATOM 82 CA MET A 12 -9.160 17.683 14.710 1.00 12.27 C ATOM 83 C MET A 12 -10.599 17.988 15.028 1.00 16.76 C ATOM 84 O MET A 12 -10.964 17.966 16.195 1.00 17.43 O ATOM 85 CB MET A 12 -8.385 18.996 14.563 1.00 6.96 C ATOM 86 CG MET A 12 -6.872 18.717 14.593 1.00 7.53 C ATOM 87 SD MET A 12 -5.971 20.286 14.351 1.00 16.25 S ATOM 88 CE MET A 12 -4.392 19.972 15.137 1.00 11.48 C ATOM 89 N LYS A 13 -11.421 18.239 13.985 1.00 11.66 N ATOM 90 CA LYS A 13 -12.844 18.554 14.146 1.00 12.77 C ATOM 91 C LYS A 13 -13.552 17.402 14.762 1.00 17.21 C ATOM 92 O LYS A 13 -14.278 17.533 15.704 1.00 15.75 O ATOM 93 CB LYS A 13 -13.505 18.908 12.852 1.00 14.38 C ATOM 94 CG LYS A 13 -14.874 19.457 13.096 1.00 16.88 C ATOM 95 CD LYS A 13 -15.519 20.062 11.867 1.00 19.73 C ATOM 96 CE LYS A 13 -17.062 20.060 11.971 1.00 41.06 C ATOM 97 NZ LYS A 13 -17.725 20.836 10.899 1.00 61.80 N ATOM 98 N ARG A 14 -13.273 16.240 14.220 1.00 21.68 N ATOM 99 CA ARG A 14 -13.878 15.021 14.667 1.00 17.17 C ATOM 100 C ARG A 14 -13.480 14.746 16.099 1.00 27.88 C ATOM 101 O ARG A 14 -14.217 14.129 16.823 1.00 17.70 O ATOM 102 CB ARG A 14 -13.448 13.876 13.756 1.00 23.48 C ATOM 103 CG ARG A 14 -14.102 12.553 14.162 1.00 51.76 C ATOM 104 CD ARG A 14 -13.875 11.424 13.160 1.00 52.15 C ATOM 105 NE ARG A 14 -12.616 10.730 13.354 1.00 61.79 N ATOM 106 CZ ARG A 14 -12.406 9.681 14.156 1.00 47.00 C ATOM 107 NH1 ARG A 14 -13.357 9.121 14.898 1.00 35.04 N ATOM 108 NH2 ARG A 14 -11.177 9.169 14.196 1.00 55.70 N ATOM 109 N HIS A 15 -12.300 15.219 16.498 1.00 20.13 N ATOM 110 CA HIS A 15 -11.791 15.016 17.846 1.00 14.58 C ATOM 111 C HIS A 15 -12.221 16.074 18.888 1.00 18.83 C ATOM 112 O HIS A 15 -11.689 16.060 19.970 1.00 22.76 O ATOM 113 CB HIS A 15 -10.268 14.799 17.851 1.00 23.09 C ATOM 114 CG HIS A 15 -9.906 13.364 17.563 1.00 21.53 C ATOM 115 ND1 HIS A 15 -9.721 12.896 16.256 1.00 28.28 N ATOM 116 CD2 HIS A 15 -9.723 12.308 18.413 1.00 30.99 C ATOM 117 CE1 HIS A 15 -9.422 11.580 16.350 1.00 20.50 C ATOM 118 NE2 HIS A 15 -9.412 11.213 17.627 1.00 42.34 N ATOM 119 N GLY A 16 -13.146 16.952 18.551 1.00 14.90 N ATOM 120 CA GLY A 16 -13.687 17.956 19.401 1.00 16.84 C ATOM 121 C GLY A 16 -12.871 19.227 19.554 1.00 23.06 C ATOM 122 O GLY A 16 -13.121 20.016 20.460 1.00 19.24 O ATOM 123 N LEU A 17 -11.922 19.491 18.685 1.00 14.25 N ATOM 124 CA LEU A 17 -11.134 20.695 18.826 1.00 10.83 C ATOM 125 C LEU A 17 -11.728 21.961 18.295 1.00 16.61 C ATOM 126 O LEU A 17 -11.276 23.016 18.657 1.00 18.63 O ATOM 127 CB LEU A 17 -9.749 20.538 18.218 1.00 14.80 C ATOM 128 CG LEU A 17 -8.792 19.745 19.031 1.00 19.84 C ATOM 129 CD1 LEU A 17 -7.483 19.876 18.293 1.00 22.16 C ATOM 130 CD2 LEU A 17 -8.675 20.282 20.474 1.00 15.82 C ATOM 131 N ASP A 18 -12.704 21.930 17.405 1.00 18.32 N ATOM 132 CA ASP A 18 -13.261 23.178 16.884 1.00 18.68 C ATOM 133 C ASP A 18 -13.986 23.912 17.979 1.00 19.05 C ATOM 134 O ASP A 18 -14.952 23.375 18.512 1.00 21.74 O ATOM 135 CB ASP A 18 -14.275 23.002 15.717 1.00 25.90 C ATOM 136 CG ASP A 18 -14.712 24.288 15.010 1.00 37.66 C ATOM 137 OD1 ASP A 18 -14.134 25.393 15.038 1.00 26.98 O ATOM 138 OD2 ASP A 18 -15.751 24.055 14.248 1.00 63.41 O ATOM 139 N ASN A 19 -13.542 25.130 18.229 1.00 12.22 N ATOM 140 CA ASN A 19 -14.046 26.010 19.253 1.00 9.99 C ATOM 141 C ASN A 19 -13.851 25.507 20.671 1.00 15.97 C ATOM 142 O ASN A 19 -14.534 25.975 21.595 1.00 18.10 O ATOM 143 CB ASN A 19 -15.518 26.259 19.032 1.00 20.32 C ATOM 144 CG ASN A 19 -15.706 27.052 17.774 1.00 40.03 C ATOM 145 OD1 ASN A 19 -15.227 28.183 17.693 1.00 57.25 O ATOM 146 ND2 ASN A 19 -16.402 26.456 16.811 1.00 40.09 N ATOM 147 N TYR A 20 -12.956 24.552 20.827 1.00 12.49 N ATOM 148 CA TYR A 20 -12.652 24.027 22.106 1.00 8.91 C ATOM 149 C TYR A 20 -12.037 25.159 22.929 1.00 19.06 C ATOM 150 O TYR A 20 -10.978 25.687 22.602 1.00 16.99 O ATOM 151 CB TYR A 20 -11.717 22.810 22.005 1.00 17.23 C ATOM 152 CG TYR A 20 -11.532 22.151 23.355 1.00 13.76 C ATOM 153 CD1 TYR A 20 -12.444 21.206 23.832 1.00 17.40 C ATOM 154 CD2 TYR A 20 -10.475 22.556 24.184 1.00 24.53 C ATOM 155 CE1 TYR A 20 -12.311 20.657 25.111 1.00 20.84 C ATOM 156 CE2 TYR A 20 -10.331 22.023 25.461 1.00 16.26 C ATOM 157 CZ TYR A 20 -11.259 21.078 25.922 1.00 35.41 C ATOM 158 OH TYR A 20 -11.104 20.560 27.183 1.00 29.68 O ATOM 159 N ARG A 21 -12.721 25.593 23.977 1.00 19.00 N ATOM 160 CA ARG A 21 -12.250 26.715 24.791 1.00 15.05 C ATOM 161 C ARG A 21 -12.264 27.987 24.017 1.00 8.63 C ATOM 162 O ARG A 21 -11.450 28.877 24.295 1.00 13.69 O ATOM 163 CB ARG A 21 -10.847 26.601 25.387 1.00 18.33 C ATOM 164 CG ARG A 21 -10.694 25.514 26.442 1.00 27.37 C ATOM 165 CD ARG A 21 -11.577 25.864 27.598 1.00 40.81 C ATOM 166 NE ARG A 21 -11.597 24.902 28.676 1.00 57.85 N ATOM 167 CZ ARG A 21 -11.253 25.330 29.884 1.00 97.15 C ATOM 168 NH1 ARG A 21 -10.859 26.593 30.049 1.00 63.15 N ATOM 169 NH2 ARG A 21 -11.283 24.508 30.937 1.00 68.08 N ATOM 170 N GLY A 22 -13.173 28.076 23.045 1.00 11.97 N ATOM 171 CA GLY A 22 -13.290 29.312 22.253 1.00 13.56 C ATOM 172 C GLY A 22 -12.276 29.499 21.125 1.00 15.57 C ATOM 173 O GLY A 22 -12.274 30.537 20.508 1.00 15.13 O ATOM 174 N TYR A 23 -11.414 28.511 20.863 1.00 17.25 N ATOM 175 CA TYR A 23 -10.419 28.584 19.787 1.00 12.17 C ATOM 176 C TYR A 23 -10.964 27.832 18.564 1.00 7.69 C ATOM 177 O TYR A 23 -11.097 26.573 18.581 1.00 8.57 O ATOM 178 CB TYR A 23 -9.059 27.910 20.217 1.00 11.16 C ATOM 179 CG TYR A 23 -8.358 28.702 21.299 1.00 14.01 C ATOM 180 CD1 TYR A 23 -7.560 29.766 20.910 1.00 10.23 C ATOM 181 CD2 TYR A 23 -8.534 28.427 22.652 1.00 6.77 C ATOM 182 CE1 TYR A 23 -6.879 30.557 21.846 1.00 9.23 C ATOM 183 CE2 TYR A 23 -7.907 29.219 23.612 1.00 10.96 C ATOM 184 CZ TYR A 23 -7.061 30.276 23.207 1.00 12.99 C ATOM 185 OH TYR A 23 -6.411 31.069 24.111 1.00 13.78 O ATOM 186 N SER A 24 -11.219 28.590 17.517 1.00 12.88 N ATOM 187 CA SER A 24 -11.730 28.032 16.253 1.00 14.99 C ATOM 188 C SER A 24 -10.726 27.075 15.616 1.00 20.42 C ATOM 189 O SER A 24 -9.487 27.191 15.841 1.00 9.73 O ATOM 190 CB SER A 24 -12.060 29.179 15.305 1.00 9.90 C ATOM 191 OG SER A 24 -10.830 29.750 14.853 1.00 17.68 O ATOM 192 N LEU A 25 -11.267 26.110 14.822 1.00 16.10 N ATOM 193 CA LEU A 25 -10.460 25.111 14.092 1.00 11.40 C ATOM 194 C LEU A 25 -9.205 25.683 13.438 1.00 11.44 C ATOM 195 O LEU A 25 -8.145 25.073 13.536 1.00 10.56 O ATOM 196 CB LEU A 25 -11.293 24.412 12.993 1.00 13.62 C ATOM 197 CG LEU A 25 -10.826 23.089 12.491 1.00 16.00 C ATOM 198 CD1 LEU A 25 -10.359 22.212 13.644 1.00 15.17 C ATOM 199 CD2 LEU A 25 -12.018 22.437 11.805 1.00 15.75 C ATOM 200 N GLY A 26 -9.311 26.836 12.758 1.00 10.18 N ATOM 201 CA GLY A 26 -8.169 27.388 12.084 1.00 7.13 C ATOM 202 C GLY A 26 -6.984 27.643 12.997 1.00 9.12 C ATOM 203 O GLY A 26 -5.854 27.610 12.555 1.00 12.61 O ATOM 204 N ASN A 27 -7.232 27.928 14.280 1.00 10.01 N ATOM 205 CA ASN A 27 -6.132 28.159 15.255 1.00 10.13 C ATOM 206 C ASN A 27 -5.317 26.889 15.464 1.00 2.57 C ATOM 207 O ASN A 27 -4.057 26.899 15.477 1.00 7.08 O ATOM 208 CB ASN A 27 -6.688 28.636 16.631 1.00 9.13 C ATOM 209 CG ASN A 27 -7.131 30.092 16.624 1.00 4.84 C ATOM 210 OD1 ASN A 27 -6.292 30.979 16.582 1.00 9.37 O ATOM 211 ND2 ASN A 27 -8.466 30.324 16.587 1.00 8.00 N ATOM 212 N TRP A 28 -6.033 25.791 15.639 1.00 5.40 N ATOM 213 CA TRP A 28 -5.402 24.497 15.879 1.00 5.45 C ATOM 214 C TRP A 28 -4.584 24.047 14.657 1.00 6.38 C ATOM 215 O TRP A 28 -3.510 23.501 14.767 1.00 7.31 O ATOM 216 CB TRP A 28 -6.482 23.490 16.237 1.00 7.31 C ATOM 217 CG TRP A 28 -7.149 23.849 17.539 1.00 7.66 C ATOM 218 CD1 TRP A 28 -8.351 24.415 17.748 1.00 11.80 C ATOM 219 CD2 TRP A 28 -6.540 23.691 18.841 1.00 9.47 C ATOM 220 NE1 TRP A 28 -8.575 24.567 19.117 1.00 11.48 N ATOM 221 CE2 TRP A 28 -7.475 24.139 19.807 1.00 9.56 C ATOM 222 CE3 TRP A 28 -5.321 23.121 19.249 1.00 10.24 C ATOM 223 CZ2 TRP A 28 -7.187 24.066 21.210 1.00 11.03 C ATOM 224 CZ3 TRP A 28 -5.059 23.060 20.609 1.00 20.66 C ATOM 225 CH2 TRP A 28 -5.985 23.551 21.560 1.00 9.06 C ATOM 226 N VAL A 29 -5.166 24.262 13.469 1.00 3.89 N ATOM 227 CA VAL A 29 -4.458 23.870 12.217 1.00 5.65 C ATOM 228 C VAL A 29 -3.242 24.746 11.972 1.00 2.99 C ATOM 229 O VAL A 29 -2.170 24.273 11.571 1.00 7.90 O ATOM 230 CB VAL A 29 -5.456 23.881 11.020 1.00 7.66 C ATOM 231 CG1 VAL A 29 -4.630 23.646 9.743 1.00 13.23 C ATOM 232 CG2 VAL A 29 -6.516 22.751 11.149 1.00 6.73 C ATOM 233 N CYS A 30 -3.372 26.060 12.262 1.00 2.63 N ATOM 234 CA CYS A 30 -2.281 26.976 12.125 1.00 7.05 C ATOM 235 C CYS A 30 -1.151 26.582 13.072 1.00 10.47 C ATOM 236 O CYS A 30 0.054 26.552 12.766 1.00 4.93 O ATOM 237 CB CYS A 30 -2.756 28.428 12.303 1.00 2.61 C ATOM 238 SG CYS A 30 -1.467 29.667 12.134 1.00 10.20 S ATOM 239 N ALA A 31 -1.521 26.283 14.306 1.00 9.82 N ATOM 240 CA ALA A 31 -0.491 25.884 15.276 1.00 15.61 C ATOM 241 C ALA A 31 0.235 24.607 14.849 1.00 5.07 C ATOM 242 O ALA A 31 1.464 24.554 14.987 1.00 9.27 O ATOM 243 CB ALA A 31 -1.089 25.781 16.704 1.00 7.85 C ATOM 244 N ALA A 32 -0.483 23.609 14.315 1.00 7.79 N ATOM 245 CA ALA A 32 0.162 22.357 13.855 1.00 8.61 C ATOM 246 C ALA A 32 1.085 22.594 12.673 1.00 7.90 C ATOM 247 O ALA A 32 2.197 22.050 12.585 1.00 9.35 O ATOM 248 CB ALA A 32 -0.823 21.268 13.540 1.00 10.83 C ATOM 249 N LYS A 33 0.653 23.463 11.786 1.00 7.35 N ATOM 250 CA LYS A 33 1.542 23.795 10.635 1.00 6.50 C ATOM 251 C LYS A 33 2.867 24.333 11.097 1.00 6.89 C ATOM 252 O LYS A 33 3.936 23.889 10.727 1.00 10.45 O ATOM 253 CB LYS A 33 0.863 24.886 9.776 1.00 10.32 C ATOM 254 CG LYS A 33 1.793 25.437 8.676 1.00 13.52 C ATOM 255 CD LYS A 33 1.927 24.485 7.491 1.00 19.87 C ATOM 256 CE LYS A 33 3.138 24.764 6.621 1.00 27.04 C ATOM 257 NZ LYS A 33 3.217 23.793 5.511 1.00 45.44 N ATOM 258 N PHE A 34 2.807 25.345 11.961 1.00 9.24 N ATOM 259 CA PHE A 34 4.029 25.958 12.436 1.00 8.96 C ATOM 260 C PHE A 34 4.846 25.192 13.455 1.00 16.48 C ATOM 261 O PHE A 34 6.039 25.360 13.540 1.00 14.96 O ATOM 262 CB PHE A 34 3.856 27.469 12.721 1.00 9.21 C ATOM 263 CG PHE A 34 3.417 28.201 11.426 1.00 11.78 C ATOM 264 CD1 PHE A 34 4.231 28.189 10.282 1.00 11.49 C ATOM 265 CD2 PHE A 34 2.212 28.933 11.385 1.00 12.86 C ATOM 266 CE1 PHE A 34 3.830 28.854 9.136 1.00 12.74 C ATOM 267 CE2 PHE A 34 1.803 29.618 10.224 1.00 13.38 C ATOM 268 CZ PHE A 34 2.627 29.554 9.090 1.00 13.39 C ATOM 269 N GLU A 35 4.201 24.324 14.225 1.00 9.90 N ATOM 270 CA GLU A 35 4.889 23.543 15.263 1.00 11.92 C ATOM 271 C GLU A 35 5.641 22.352 14.706 1.00 13.79 C ATOM 272 O GLU A 35 6.781 22.129 15.054 1.00 8.23 O ATOM 273 CB GLU A 35 3.839 23.026 16.259 1.00 6.00 C ATOM 274 CG GLU A 35 3.409 24.107 17.322 1.00 11.89 C ATOM 275 CD GLU A 35 4.516 24.690 18.200 1.00 12.03 C ATOM 276 OE1 GLU A 35 5.640 24.296 18.226 1.00 12.97 O ATOM 277 OE2 GLU A 35 4.167 25.730 18.876 1.00 13.03 O ATOM 278 N SER A 36 4.983 21.591 13.819 1.00 8.49 N ATOM 279 CA SER A 36 5.541 20.369 13.283 1.00 8.82 C ATOM 280 C SER A 36 5.483 20.189 11.756 1.00 10.13 C ATOM 281 O SER A 36 5.800 19.070 11.251 1.00 14.88 O ATOM 282 CB SER A 36 4.684 19.256 13.831 1.00 7.77 C ATOM 283 OG SER A 36 3.330 19.336 13.297 1.00 8.30 O ATOM 284 N ASN A 37 4.975 21.223 11.050 1.00 11.55 N ATOM 285 CA ASN A 37 4.752 21.103 9.605 1.00 8.89 C ATOM 286 C ASN A 37 3.825 19.918 9.321 1.00 14.33 C ATOM 287 O ASN A 37 3.972 19.215 8.320 1.00 14.19 O ATOM 288 CB ASN A 37 6.061 21.002 8.788 1.00 20.93 C ATOM 289 CG ASN A 37 5.851 21.458 7.334 1.00 25.83 C ATOM 290 OD1 ASN A 37 5.061 22.365 7.057 1.00 26.84 O ATOM 291 ND2 ASN A 37 6.474 20.759 6.397 1.00 52.87 N ATOM 292 N PHE A 38 2.864 19.696 10.220 1.00 7.19 N ATOM 293 CA PHE A 38 1.862 18.625 10.075 1.00 11.76 C ATOM 294 C PHE A 38 2.411 17.214 10.168 1.00 10.63 C ATOM 295 O PHE A 38 1.747 16.276 9.742 1.00 9.49 O ATOM 296 CB PHE A 38 1.092 18.696 8.696 1.00 8.56 C ATOM 297 CG PHE A 38 0.280 19.956 8.505 1.00 13.59 C ATOM 298 CD1 PHE A 38 -0.367 20.558 9.597 1.00 8.45 C ATOM 299 CD2 PHE A 38 0.112 20.532 7.255 1.00 17.61 C ATOM 300 CE1 PHE A 38 -1.146 21.685 9.432 1.00 11.53 C ATOM 301 CE2 PHE A 38 -0.664 21.687 7.081 1.00 17.65 C ATOM 302 CZ PHE A 38 -1.316 22.268 8.162 1.00 13.17 C ATOM 303 N ASN A 39 3.667 17.073 10.600 1.00 8.40 N ATOM 304 CA ASN A 39 4.271 15.737 10.699 1.00 6.01 C ATOM 305 C ASN A 39 4.101 15.211 12.158 1.00 6.81 C ATOM 306 O ASN A 39 4.597 15.858 13.147 1.00 11.41 O ATOM 307 CB ASN A 39 5.776 15.925 10.373 1.00 6.39 C ATOM 308 CG ASN A 39 6.552 14.636 10.450 1.00 6.34 C ATOM 309 OD1 ASN A 39 5.992 13.541 10.684 1.00 10.75 O ATOM 310 ND2 ASN A 39 7.832 14.764 10.100 1.00 13.88 N ATOM 311 N THR A 40 3.430 14.054 12.314 1.00 8.05 N ATOM 312 CA THR A 40 3.222 13.509 13.676 1.00 10.13 C ATOM 313 C THR A 40 4.525 13.041 14.358 1.00 8.64 C ATOM 314 O THR A 40 4.546 12.831 15.542 1.00 12.11 O ATOM 315 CB THR A 40 2.279 12.302 13.663 1.00 12.49 C ATOM 316 OG1 THR A 40 2.862 11.250 12.880 1.00 10.89 O ATOM 317 CG2 THR A 40 0.843 12.666 13.219 1.00 9.90 C ATOM 318 N GLN A 41 5.594 12.819 13.559 1.00 6.61 N ATOM 319 CA GLN A 41 6.860 12.308 14.019 1.00 3.67 C ATOM 320 C GLN A 41 7.861 13.372 14.433 1.00 4.66 C ATOM 321 O GLN A 41 8.986 13.051 14.864 1.00 8.80 O ATOM 322 CB GLN A 41 7.463 11.344 12.979 1.00 9.30 C ATOM 323 CG GLN A 41 6.598 10.100 12.797 1.00 12.21 C ATOM 324 CD GLN A 41 7.402 8.999 12.104 1.00 22.47 C ATOM 325 OE1 GLN A 41 8.254 8.393 12.763 1.00 16.54 O ATOM 326 NE2 GLN A 41 7.257 8.847 10.744 1.00 13.11 N ATOM 327 N ALA A 42 7.460 14.657 14.305 1.00 6.51 N ATOM 328 CA ALA A 42 8.376 15.748 14.672 1.00 8.14 C ATOM 329 C ALA A 42 8.824 15.710 16.237 1.00 11.70 C ATOM 330 O ALA A 42 8.005 15.547 17.165 1.00 5.54 O ATOM 331 CB ALA A 42 7.744 17.108 14.349 1.00 8.97 C ATOM 332 N THR A 43 10.132 15.865 16.445 1.00 7.08 N ATOM 333 CA THR A 43 10.705 15.992 17.773 1.00 10.42 C ATOM 334 C THR A 43 11.694 17.112 17.692 1.00 11.09 C ATOM 335 O THR A 43 12.280 17.411 16.646 1.00 12.80 O ATOM 336 CB THR A 43 11.362 14.748 18.354 1.00 13.93 C ATOM 337 OG1 THR A 43 12.360 14.429 17.435 1.00 11.09 O ATOM 338 CG2 THR A 43 10.420 13.567 18.530 1.00 7.58 C ATOM 339 N ASN A 44 11.894 17.801 18.808 1.00 10.77 N ATOM 340 CA ASN A 44 12.828 18.909 18.863 1.00 6.02 C ATOM 341 C ASN A 44 13.258 19.036 20.281 1.00 16.51 C ATOM 342 O ASN A 44 12.426 19.127 21.185 1.00 11.61 O ATOM 343 CB ASN A 44 12.171 20.225 18.473 1.00 13.37 C ATOM 344 CG ASN A 44 11.932 20.272 16.966 1.00 55.95 C ATOM 345 OD1 ASN A 44 12.883 20.299 16.146 1.00 30.16 O ATOM 346 ND2 ASN A 44 10.659 20.233 16.594 1.00 20.67 N ATOM 347 N ARG A 45 14.545 19.035 20.479 1.00 13.41 N ATOM 348 CA ARG A 45 15.061 19.112 21.827 1.00 12.01 C ATOM 349 C ARG A 45 15.250 20.555 22.252 1.00 20.93 C ATOM 350 O ARG A 45 15.601 21.418 21.435 1.00 20.22 O ATOM 351 CB ARG A 45 16.408 18.438 21.953 1.00 19.70 C ATOM 352 CG ARG A 45 16.935 18.714 23.338 1.00 35.82 C ATOM 353 CD ARG A 45 16.730 17.468 24.141 1.00 27.63 C ATOM 354 NE ARG A 45 17.249 16.408 23.330 1.00 67.37 N ATOM 355 CZ ARG A 45 18.249 15.588 23.641 1.00 91.84 C ATOM 356 NH1 ARG A 45 18.868 15.589 24.830 1.00 36.08 N ATOM 357 NH2 ARG A 45 18.624 14.698 22.716 1.00 64.26 N ATOM 358 N ASN A 46 15.056 20.796 23.543 1.00 12.63 N ATOM 359 CA ASN A 46 15.247 22.135 24.062 1.00 12.92 C ATOM 360 C ASN A 46 16.508 22.245 24.900 1.00 8.11 C ATOM 361 O ASN A 46 17.149 21.253 25.274 1.00 15.77 O ATOM 362 CB ASN A 46 13.989 22.699 24.735 1.00 11.70 C ATOM 363 CG ASN A 46 12.659 22.418 24.007 1.00 21.14 C ATOM 364 OD1 ASN A 46 11.762 21.669 24.459 1.00 23.29 O ATOM 365 ND2 ASN A 46 12.508 23.062 22.886 1.00 24.99 N ATOM 366 N THR A 47 16.906 23.489 25.146 1.00 23.92 N ATOM 367 CA THR A 47 18.108 23.768 25.931 1.00 39.90 C ATOM 368 C THR A 47 17.996 23.269 27.358 1.00 25.44 C ATOM 369 O THR A 47 18.958 22.798 27.923 1.00 34.24 O ATOM 370 CB THR A 47 18.506 25.250 25.905 1.00 47.42 C ATOM 371 OG1 THR A 47 17.376 26.053 26.142 1.00 38.53 O ATOM 372 CG2 THR A 47 19.115 25.572 24.552 1.00 58.08 C ATOM 373 N ASP A 48 16.797 23.339 27.935 1.00 20.62 N ATOM 374 CA ASP A 48 16.626 22.832 29.261 1.00 9.90 C ATOM 375 C ASP A 48 16.700 21.306 29.306 1.00 19.23 C ATOM 376 O ASP A 48 16.586 20.723 30.361 1.00 22.36 O ATOM 377 CB ASP A 48 15.349 23.377 29.887 1.00 14.78 C ATOM 378 CG ASP A 48 14.119 22.821 29.267 1.00 19.04 C ATOM 379 OD1 ASP A 48 14.160 21.981 28.422 1.00 28.31 O ATOM 380 OD2 ASP A 48 13.002 23.315 29.717 1.00 28.61 O ATOM 381 N GLY A 49 16.883 20.637 28.166 1.00 17.28 N ATOM 382 CA GLY A 49 16.950 19.205 28.182 1.00 10.24 C ATOM 383 C GLY A 49 15.608 18.534 27.977 1.00 14.24 C ATOM 384 O GLY A 49 15.499 17.291 27.852 1.00 13.58 O ATOM 385 N SER A 50 14.564 19.331 27.973 1.00 9.07 N ATOM 386 CA SER A 50 13.311 18.716 27.712 1.00 7.32 C ATOM 387 C SER A 50 13.217 18.531 26.131 1.00 11.52 C ATOM 388 O SER A 50 14.085 19.016 25.374 1.00 13.96 O ATOM 389 CB SER A 50 12.113 19.490 28.182 1.00 4.67 C ATOM 390 OG SER A 50 12.074 20.716 27.461 1.00 9.76 O ATOM 391 N THR A 51 12.150 17.857 25.646 1.00 11.43 N ATOM 392 CA THR A 51 11.958 17.610 24.179 1.00 9.12 C ATOM 393 C THR A 51 10.485 17.806 23.917 1.00 16.87 C ATOM 394 O THR A 51 9.677 17.499 24.825 1.00 8.33 O ATOM 395 CB THR A 51 12.363 16.177 23.757 1.00 5.49 C ATOM 396 OG1 THR A 51 13.711 15.986 24.120 1.00 6.88 O ATOM 397 CG2 THR A 51 12.234 15.930 22.227 1.00 7.94 C ATOM 398 N ASP A 52 10.158 18.354 22.701 1.00 9.46 N ATOM 399 CA ASP A 52 8.767 18.608 22.181 1.00 5.88 C ATOM 400 C ASP A 52 8.451 17.463 21.198 1.00 5.87 C ATOM 401 O ASP A 52 9.311 17.033 20.476 1.00 5.53 O ATOM 402 CB ASP A 52 8.717 19.972 21.485 1.00 6.73 C ATOM 403 CG ASP A 52 9.014 21.046 22.449 1.00 17.46 C ATOM 404 OD1 ASP A 52 8.778 20.978 23.593 1.00 16.69 O ATOM 405 OD2 ASP A 52 9.531 22.065 21.923 1.00 28.92 O ATOM 406 N TYR A 53 7.279 16.908 21.280 1.00 7.33 N ATOM 407 CA TYR A 53 6.899 15.745 20.548 1.00 9.37 C ATOM 408 C TYR A 53 5.580 15.922 19.790 1.00 13.52 C ATOM 409 O TYR A 53 4.554 16.399 20.326 1.00 7.94 O ATOM 410 CB TYR A 53 6.630 14.562 21.517 1.00 7.91 C ATOM 411 CG TYR A 53 7.865 14.099 22.242 1.00 6.82 C ATOM 412 CD1 TYR A 53 8.335 14.742 23.399 1.00 8.88 C ATOM 413 CD2 TYR A 53 8.618 13.027 21.749 1.00 6.30 C ATOM 414 CE1 TYR A 53 9.548 14.382 24.006 1.00 1.83 C ATOM 415 CE2 TYR A 53 9.846 12.646 22.351 1.00 10.07 C ATOM 416 CZ TYR A 53 10.229 13.264 23.534 1.00 8.70 C ATOM 417 OH TYR A 53 11.374 12.889 24.151 1.00 12.40 O ATOM 418 N GLY A 54 5.598 15.446 18.516 1.00 11.04 N ATOM 419 CA GLY A 54 4.390 15.347 17.710 1.00 7.71 C ATOM 420 C GLY A 54 3.939 16.599 17.020 1.00 3.67 C ATOM 421 O GLY A 54 4.535 17.621 17.017 1.00 8.49 O ATOM 422 N ILE A 55 2.748 16.458 16.496 1.00 11.91 N ATOM 423 CA ILE A 55 2.096 17.435 15.686 1.00 7.88 C ATOM 424 C ILE A 55 1.893 18.749 16.386 1.00 10.21 C ATOM 425 O ILE A 55 1.904 19.805 15.761 1.00 9.17 O ATOM 426 CB ILE A 55 0.838 16.805 15.068 1.00 19.48 C ATOM 427 CG1 ILE A 55 0.390 17.438 13.734 1.00 15.27 C ATOM 428 CG2 ILE A 55 -0.262 16.528 16.106 1.00 16.63 C ATOM 429 CD1 ILE A 55 -0.353 16.483 12.846 1.00 21.60 C ATOM 430 N LEU A 56 1.765 18.677 17.706 1.00 9.90 N ATOM 431 CA LEU A 56 1.584 19.877 18.488 1.00 7.23 C ATOM 432 C LEU A 56 2.735 20.173 19.390 1.00 18.66 C ATOM 433 O LEU A 56 2.660 21.074 20.200 1.00 10.73 O ATOM 434 CB LEU A 56 0.216 19.957 19.205 1.00 11.28 C ATOM 435 CG LEU A 56 -0.990 20.157 18.283 1.00 12.31 C ATOM 436 CD1 LEU A 56 -2.255 19.795 19.036 1.00 11.09 C ATOM 437 CD2 LEU A 56 -1.074 21.607 17.850 1.00 11.43 C ATOM 438 N GLN A 57 3.804 19.441 19.202 1.00 7.01 N ATOM 439 CA GLN A 57 5.029 19.733 19.898 1.00 9.13 C ATOM 440 C GLN A 57 4.883 19.918 21.451 1.00 11.13 C ATOM 441 O GLN A 57 5.272 20.968 22.020 1.00 12.02 O ATOM 442 CB GLN A 57 5.767 20.937 19.263 1.00 10.29 C ATOM 443 CG GLN A 57 6.362 20.658 17.863 1.00 6.27 C ATOM 444 CD GLN A 57 7.544 19.747 17.936 1.00 2.25 C ATOM 445 OE1 GLN A 57 8.676 20.257 18.147 1.00 7.47 O ATOM 446 NE2 GLN A 57 7.279 18.413 17.746 1.00 7.69 N ATOM 447 N ILE A 58 4.303 18.898 22.061 1.00 9.58 N ATOM 448 CA ILE A 58 4.031 18.814 23.487 1.00 12.88 C ATOM 449 C ILE A 58 5.301 18.482 24.282 1.00 14.09 C ATOM 450 O ILE A 58 6.055 17.583 23.982 1.00 10.65 O ATOM 451 CB ILE A 58 2.839 17.923 23.711 1.00 12.15 C ATOM 452 CG1 ILE A 58 1.599 18.614 23.110 1.00 12.61 C ATOM 453 CG2 ILE A 58 2.704 17.544 25.215 1.00 12.37 C ATOM 454 CD1 ILE A 58 0.329 17.770 23.138 1.00 17.22 C ATOM 455 N ASN A 59 5.556 19.297 25.282 1.00 11.07 N ATOM 456 CA ASN A 59 6.797 19.305 26.034 1.00 6.68 C ATOM 457 C ASN A 59 6.893 18.239 27.099 1.00 8.46 C ATOM 458 O ASN A 59 5.904 18.002 27.761 1.00 12.15 O ATOM 459 CB ASN A 59 7.045 20.721 26.565 1.00 7.94 C ATOM 460 CG ASN A 59 8.434 20.839 27.178 1.00 12.92 C ATOM 461 OD1 ASN A 59 8.578 20.809 28.411 1.00 30.15 O ATOM 462 ND2 ASN A 59 9.469 20.939 26.342 1.00 15.71 N ATOM 463 N SER A 60 8.096 17.590 27.218 1.00 8.63 N ATOM 464 CA SER A 60 8.333 16.496 28.162 1.00 11.30 C ATOM 465 C SER A 60 8.586 17.015 29.647 1.00 7.42 C ATOM 466 O SER A 60 8.559 16.218 30.620 1.00 18.39 O ATOM 467 CB SER A 60 9.448 15.619 27.698 1.00 9.31 C ATOM 468 OG SER A 60 10.642 16.390 27.790 1.00 9.01 O ATOM 469 N ARG A 61 8.806 18.347 29.787 1.00 11.96 N ATOM 470 CA ARG A 61 8.981 18.933 31.125 1.00 18.58 C ATOM 471 C ARG A 61 7.701 18.806 31.935 1.00 21.66 C ATOM 472 O ARG A 61 7.730 18.363 33.063 1.00 24.43 O ATOM 473 CB ARG A 61 9.507 20.347 31.068 1.00 19.81 C ATOM 474 CG ARG A 61 9.259 21.125 32.338 1.00 40.52 C ATOM 475 CD ARG A 61 10.511 21.648 33.063 1.00 30.90 C ATOM 476 NE ARG A 61 11.777 21.523 32.353 1.00 58.97 N ATOM 477 CZ ARG A 61 12.722 20.587 32.539 1.00 70.61 C ATOM 478 NH1 ARG A 61 12.610 19.570 33.413 1.00 68.85 N ATOM 479 NH2 ARG A 61 13.829 20.673 31.795 1.00 56.33 N ATOM 480 N TRP A 62 6.542 19.071 31.329 1.00 12.69 N ATOM 481 CA TRP A 62 5.279 18.955 32.026 1.00 10.92 C ATOM 482 C TRP A 62 4.281 17.916 31.682 1.00 19.26 C ATOM 483 O TRP A 62 3.526 17.478 32.563 1.00 19.01 O ATOM 484 CB TRP A 62 4.455 20.234 31.875 1.00 14.48 C ATOM 485 CG TRP A 62 5.346 21.376 31.920 1.00 34.77 C ATOM 486 CD1 TRP A 62 5.937 21.965 30.857 1.00 48.56 C ATOM 487 CD2 TRP A 62 5.859 21.980 33.091 1.00 34.03 C ATOM 488 NE1 TRP A 62 6.753 22.970 31.303 1.00 60.61 N ATOM 489 CE2 TRP A 62 6.730 22.995 32.671 1.00 37.59 C ATOM 490 CE3 TRP A 62 5.619 21.790 34.443 1.00 44.85 C ATOM 491 CZ2 TRP A 62 7.373 23.823 33.582 1.00 74.91 C ATOM 492 CZ3 TRP A 62 6.254 22.606 35.347 1.00 49.52 C ATOM 493 CH2 TRP A 62 7.122 23.609 34.923 1.00 52.73 C ATOM 494 N TRP A 63 4.152 17.600 30.385 1.00 11.21 N ATOM 495 CA TRP A 63 3.036 16.858 29.848 1.00 9.63 C ATOM 496 C TRP A 63 3.155 15.396 29.592 1.00 4.89 C ATOM 497 O TRP A 63 2.183 14.725 29.581 1.00 11.10 O ATOM 498 CB TRP A 63 2.652 17.635 28.566 1.00 6.50 C ATOM 499 CG TRP A 63 2.429 19.101 28.874 1.00 5.59 C ATOM 500 CD1 TRP A 63 3.223 20.140 28.615 1.00 15.86 C ATOM 501 CD2 TRP A 63 1.364 19.632 29.695 1.00 11.68 C ATOM 502 NE1 TRP A 63 2.675 21.309 29.075 1.00 15.89 N ATOM 503 CE2 TRP A 63 1.567 21.028 29.780 1.00 12.27 C ATOM 504 CE3 TRP A 63 0.230 19.055 30.324 1.00 14.52 C ATOM 505 CZ2 TRP A 63 0.682 21.862 30.488 1.00 10.75 C ATOM 506 CZ3 TRP A 63 -0.678 19.891 30.985 1.00 10.21 C ATOM 507 CH2 TRP A 63 -0.421 21.271 31.057 1.00 13.33 C ATOM 508 N CYS A 64 4.324 14.905 29.353 1.00 8.53 N ATOM 509 CA CYS A 64 4.448 13.469 29.032 1.00 14.18 C ATOM 510 C CYS A 64 5.785 12.968 29.569 1.00 8.75 C ATOM 511 O CYS A 64 6.694 13.742 29.793 1.00 11.88 O ATOM 512 CB CYS A 64 4.366 13.241 27.432 1.00 12.87 C ATOM 513 SG CYS A 64 5.695 14.086 26.427 1.00 9.81 S ATOM 514 N ASN A 65 5.913 11.651 29.720 1.00 9.55 N ATOM 515 CA ASN A 65 7.127 11.114 30.200 1.00 16.84 C ATOM 516 C ASN A 65 7.999 10.547 29.073 1.00 4.97 C ATOM 517 O ASN A 65 7.529 9.623 28.435 1.00 10.83 O ATOM 518 CB ASN A 65 6.809 9.953 31.188 1.00 9.17 C ATOM 519 CG ASN A 65 8.120 9.322 31.715 1.00 22.59 C ATOM 520 OD1 ASN A 65 9.033 10.017 32.182 1.00 21.36 O ATOM 521 ND2 ASN A 65 8.276 8.015 31.524 1.00 36.98 N ATOM 522 N ASP A 66 9.254 10.993 28.982 1.00 7.66 N ATOM 523 CA ASP A 66 10.153 10.434 27.995 1.00 14.97 C ATOM 524 C ASP A 66 11.354 9.742 28.601 1.00 23.09 C ATOM 525 O ASP A 66 12.237 9.341 27.867 1.00 9.43 O ATOM 526 CB ASP A 66 10.641 11.448 26.948 1.00 13.58 C ATOM 527 CG ASP A 66 11.480 12.554 27.535 1.00 11.41 C ATOM 528 OD1 ASP A 66 11.787 12.613 28.717 1.00 18.43 O ATOM 529 OD2 ASP A 66 11.850 13.432 26.659 1.00 10.72 O ATOM 530 N GLY A 67 11.395 9.644 29.920 1.00 14.60 N ATOM 531 CA GLY A 67 12.449 8.941 30.665 1.00 9.04 C ATOM 532 C GLY A 67 13.738 9.677 30.697 1.00 13.04 C ATOM 533 O GLY A 67 14.726 9.165 31.164 1.00 23.22 O ATOM 534 N ARG A 68 13.787 10.891 30.194 1.00 8.50 N ATOM 535 CA ARG A 68 15.089 11.512 30.237 1.00 11.50 C ATOM 536 C ARG A 68 15.046 12.949 30.560 1.00 11.49 C ATOM 537 O ARG A 68 15.995 13.645 30.281 1.00 17.90 O ATOM 538 CB ARG A 68 15.872 11.277 28.959 1.00 18.67 C ATOM 539 CG ARG A 68 15.218 11.867 27.707 1.00 21.19 C ATOM 540 CD ARG A 68 16.251 12.103 26.592 1.00 19.51 C ATOM 541 NE ARG A 68 15.790 12.984 25.527 1.00 20.38 N ATOM 542 CZ ARG A 68 16.264 12.978 24.248 1.00 29.94 C ATOM 543 NH1 ARG A 68 17.253 12.102 23.926 1.00 13.00 N ATOM 544 NH2 ARG A 68 15.787 13.865 23.293 1.00 13.47 N ATOM 545 N THR A 69 13.937 13.376 31.145 1.00 12.12 N ATOM 546 CA THR A 69 13.674 14.782 31.586 1.00 17.22 C ATOM 547 C THR A 69 13.372 14.770 33.144 1.00 15.41 C ATOM 548 O THR A 69 12.260 14.526 33.618 1.00 19.26 O ATOM 549 CB THR A 69 12.464 15.410 30.798 1.00 12.81 C ATOM 550 OG1 THR A 69 12.589 15.107 29.412 1.00 17.25 O ATOM 551 CG2 THR A 69 12.392 16.932 30.990 1.00 8.98 C ATOM 552 N PRO A 70 14.431 14.960 33.874 1.00 30.00 N ATOM 553 CA PRO A 70 14.563 14.964 35.315 1.00 31.13 C ATOM 554 C PRO A 70 13.654 16.003 35.904 1.00 43.01 C ATOM 555 O PRO A 70 13.699 17.188 35.594 1.00 37.19 O ATOM 556 CB PRO A 70 16.056 15.221 35.541 1.00 43.11 C ATOM 557 CG PRO A 70 16.728 15.203 34.148 1.00 49.23 C ATOM 558 CD PRO A 70 15.635 15.319 33.119 1.00 44.60 C ATOM 559 N GLY A 71 12.698 15.573 36.672 1.00 29.79 N ATOM 560 CA GLY A 71 11.785 16.609 37.130 1.00 38.84 C ATOM 561 C GLY A 71 10.547 16.728 36.220 1.00 34.52 C ATOM 562 O GLY A 71 9.750 17.644 36.328 1.00 53.49 O ATOM 563 N SER A 72 10.339 15.797 35.324 1.00 30.26 N ATOM 564 CA SER A 72 9.157 15.860 34.502 1.00 32.28 C ATOM 565 C SER A 72 7.906 15.615 35.374 1.00 22.29 C ATOM 566 O SER A 72 7.914 14.715 36.197 1.00 26.48 O ATOM 567 CB SER A 72 9.249 14.700 33.473 1.00 31.83 C ATOM 568 OG SER A 72 8.038 14.552 32.612 1.00 33.11 O ATOM 569 N ARG A 73 6.801 16.311 35.113 1.00 20.31 N ATOM 570 CA ARG A 73 5.550 16.055 35.819 1.00 12.77 C ATOM 571 C ARG A 73 4.564 15.081 35.174 1.00 35.87 C ATOM 572 O ARG A 73 3.662 14.597 35.845 1.00 50.20 O ATOM 573 CB ARG A 73 4.830 17.322 36.128 1.00 19.66 C ATOM 574 CG ARG A 73 5.605 18.165 37.124 1.00 35.18 C ATOM 575 CD ARG A 73 4.864 19.471 37.396 1.00 86.10 C ATOM 576 NE ARG A 73 4.736 19.744 38.823 1.00 80.19 N ATOM 577 CZ ARG A 73 4.227 20.854 39.398 1.00 81.09 C ATOM 578 NH1 ARG A 73 3.742 21.891 38.705 1.00 81.15 N ATOM 579 NH2 ARG A 73 4.215 20.930 40.739 1.00 71.03 N ATOM 580 N ASN A 74 4.668 14.781 33.896 1.00 18.76 N ATOM 581 CA ASN A 74 3.715 13.833 33.313 1.00 10.40 C ATOM 582 C ASN A 74 2.194 14.147 33.501 1.00 8.97 C ATOM 583 O ASN A 74 1.355 13.278 33.697 1.00 15.29 O ATOM 584 CB ASN A 74 4.053 12.334 33.426 1.00 16.10 C ATOM 585 CG ASN A 74 3.479 11.413 32.309 1.00 15.75 C ATOM 586 OD1 ASN A 74 2.928 11.864 31.297 1.00 22.77 O ATOM 587 ND2 ASN A 74 3.593 10.101 32.490 1.00 17.62 N ATOM 588 N LEU A 75 1.851 15.405 33.334 1.00 13.92 N ATOM 589 CA LEU A 75 0.471 15.774 33.458 1.00 16.58 C ATOM 590 C LEU A 75 -0.505 15.089 32.565 1.00 21.84 C ATOM 591 O LEU A 75 -1.654 14.976 32.957 1.00 22.99 O ATOM 592 CB LEU A 75 0.245 17.277 33.466 1.00 17.10 C ATOM 593 CG LEU A 75 0.919 17.845 34.715 1.00 30.53 C ATOM 594 CD1 LEU A 75 0.889 19.358 34.725 1.00 35.25 C ATOM 595 CD2 LEU A 75 0.238 17.306 35.969 1.00 21.06 C ATOM 596 N CYS A 76 -0.146 14.663 31.359 1.00 18.42 N ATOM 597 CA CYS A 76 -1.153 13.970 30.513 1.00 10.67 C ATOM 598 C CYS A 76 -1.137 12.463 30.738 1.00 12.68 C ATOM 599 O CYS A 76 -1.935 11.725 30.131 1.00 17.21 O ATOM 600 CB CYS A 76 -1.094 14.295 28.984 1.00 9.97 C ATOM 601 SG CYS A 76 -1.329 16.050 28.713 1.00 13.70 S ATOM 602 N ASN A 77 -0.194 12.038 31.586 1.00 14.93 N ATOM 603 CA ASN A 77 -0.117 10.607 31.926 1.00 19.18 C ATOM 604 C ASN A 77 0.099 9.697 30.747 1.00 21.40 C ATOM 605 O ASN A 77 -0.626 8.715 30.538 1.00 17.53 O ATOM 606 CB ASN A 77 -1.421 10.174 32.620 1.00 36.06 C ATOM 607 CG ASN A 77 -1.361 8.783 33.215 1.00 80.95 C ATOM 608 OD1 ASN A 77 -2.358 8.042 33.188 1.00 78.33 O ATOM 609 ND2 ASN A 77 -0.186 8.412 33.715 1.00 38.97 N ATOM 610 N ILE A 78 1.114 10.006 29.979 1.00 14.33 N ATOM 611 CA ILE A 78 1.373 9.191 28.838 1.00 11.33 C ATOM 612 C ILE A 78 2.873 9.258 28.499 1.00 13.41 C ATOM 613 O ILE A 78 3.568 10.265 28.718 1.00 12.78 O ATOM 614 CB ILE A 78 0.764 9.855 27.598 1.00 15.98 C ATOM 615 CG1 ILE A 78 0.764 11.376 27.743 1.00 20.19 C ATOM 616 CG2 ILE A 78 -0.461 9.195 26.985 1.00 25.51 C ATOM 617 CD1 ILE A 78 0.735 12.094 26.406 1.00 31.88 C ATOM 618 N PRO A 79 3.343 8.210 27.843 1.00 14.97 N ATOM 619 CA PRO A 79 4.715 8.229 27.362 1.00 12.65 C ATOM 620 C PRO A 79 4.738 9.234 26.187 1.00 10.18 C ATOM 621 O PRO A 79 3.762 9.304 25.359 1.00 11.71 O ATOM 622 CB PRO A 79 4.962 6.830 26.843 1.00 11.25 C ATOM 623 CG PRO A 79 3.631 6.096 26.844 1.00 17.21 C ATOM 624 CD PRO A 79 2.621 6.951 27.581 1.00 9.85 C ATOM 625 N CYS A 80 5.798 10.020 26.078 1.00 11.09 N ATOM 626 CA CYS A 80 5.870 11.003 24.969 1.00 5.24 C ATOM 627 C CYS A 80 5.782 10.359 23.546 1.00 8.89 C ATOM 628 O CYS A 80 5.284 10.950 22.568 1.00 11.52 O ATOM 629 CB CYS A 80 7.126 11.894 25.061 1.00 7.40 C ATOM 630 SG CYS A 80 7.251 12.847 26.592 1.00 9.47 S ATOM 631 N SER A 81 6.259 9.115 23.442 1.00 9.85 N ATOM 632 CA SER A 81 6.242 8.432 22.154 1.00 7.67 C ATOM 633 C SER A 81 4.815 8.223 21.687 1.00 15.55 C ATOM 634 O SER A 81 4.554 8.156 20.510 1.00 15.82 O ATOM 635 CB SER A 81 6.995 7.111 22.234 1.00 15.31 C ATOM 636 OG SER A 81 6.295 6.245 23.119 1.00 17.97 O ATOM 637 N ALA A 82 3.857 8.169 22.598 1.00 11.39 N ATOM 638 CA ALA A 82 2.452 8.033 22.185 1.00 14.65 C ATOM 639 C ALA A 82 2.000 9.216 21.325 1.00 20.26 C ATOM 640 O ALA A 82 1.033 9.113 20.571 1.00 22.13 O ATOM 641 CB ALA A 82 1.481 8.009 23.384 1.00 17.51 C ATOM 642 N LEU A 83 2.659 10.349 21.528 1.00 9.56 N ATOM 643 CA LEU A 83 2.329 11.589 20.867 1.00 12.01 C ATOM 644 C LEU A 83 2.834 11.627 19.385 1.00 18.14 C ATOM 645 O LEU A 83 2.626 12.620 18.685 1.00 12.31 O ATOM 646 CB LEU A 83 2.986 12.761 21.651 1.00 15.90 C ATOM 647 CG LEU A 83 2.370 12.966 23.055 1.00 9.43 C ATOM 648 CD1 LEU A 83 3.076 14.069 23.849 1.00 12.61 C ATOM 649 CD2 LEU A 83 0.843 13.174 22.965 1.00 15.37 C ATOM 650 N LEU A 84 3.542 10.556 18.940 1.00 13.34 N ATOM 651 CA LEU A 84 4.131 10.512 17.618 1.00 11.55 C ATOM 652 C LEU A 84 3.361 9.657 16.630 1.00 16.60 C ATOM 653 O LEU A 84 3.704 9.570 15.475 1.00 22.63 O ATOM 654 CB LEU A 84 5.630 10.044 17.645 1.00 7.92 C ATOM 655 CG LEU A 84 6.546 10.859 18.552 1.00 18.00 C ATOM 656 CD1 LEU A 84 7.978 10.414 18.359 1.00 17.76 C ATOM 657 CD2 LEU A 84 6.513 12.306 18.116 1.00 8.41 C ATOM 658 N SER A 85 2.332 9.023 17.096 1.00 15.68 N ATOM 659 CA SER A 85 1.485 8.148 16.333 1.00 22.63 C ATOM 660 C SER A 85 0.792 8.827 15.194 1.00 14.76 C ATOM 661 O SER A 85 0.519 10.007 15.280 1.00 16.99 O ATOM 662 CB SER A 85 0.376 7.776 17.295 1.00 16.59 C ATOM 663 OG SER A 85 -0.373 6.761 16.741 1.00 23.89 O ATOM 664 N SER A 86 0.371 8.039 14.186 1.00 19.04 N ATOM 665 CA SER A 86 -0.430 8.505 13.025 1.00 17.09 C ATOM 666 C SER A 86 -1.827 8.884 13.487 1.00 21.77 C ATOM 667 O SER A 86 -2.481 9.696 12.857 1.00 24.42 O ATOM 668 CB SER A 86 -0.584 7.358 12.026 1.00 21.75 C ATOM 669 OG SER A 86 0.687 7.146 11.467 1.00 50.53 O ATOM 670 N ASP A 87 -2.288 8.227 14.575 1.00 13.55 N ATOM 671 CA ASP A 87 -3.611 8.483 15.195 1.00 14.83 C ATOM 672 C ASP A 87 -3.426 9.673 16.162 1.00 16.43 C ATOM 673 O ASP A 87 -2.640 9.585 17.147 1.00 17.32 O ATOM 674 CB ASP A 87 -4.025 7.244 15.987 1.00 17.38 C ATOM 675 CG ASP A 87 -5.365 7.435 16.676 1.00 36.42 C ATOM 676 OD1 ASP A 87 -5.875 8.512 16.868 1.00 21.05 O ATOM 677 OD2 ASP A 87 -5.952 6.315 17.005 1.00 56.25 O ATOM 678 N ILE A 88 -4.037 10.803 15.879 1.00 12.05 N ATOM 679 CA ILE A 88 -3.749 11.974 16.722 1.00 17.85 C ATOM 680 C ILE A 88 -4.490 12.067 18.055 1.00 12.40 C ATOM 681 O ILE A 88 -4.393 13.081 18.780 1.00 11.64 O ATOM 682 CB ILE A 88 -4.014 13.293 15.954 1.00 16.92 C ATOM 683 CG1 ILE A 88 -5.565 13.392 15.634 1.00 15.36 C ATOM 684 CG2 ILE A 88 -3.104 13.384 14.694 1.00 18.11 C ATOM 685 CD1 ILE A 88 -6.065 14.738 15.196 1.00 20.80 C ATOM 686 N THR A 89 -5.257 11.069 18.381 1.00 13.72 N ATOM 687 CA THR A 89 -6.058 11.103 19.584 1.00 12.45 C ATOM 688 C THR A 89 -5.326 11.520 20.907 1.00 8.02 C ATOM 689 O THR A 89 -5.777 12.403 21.614 1.00 14.43 O ATOM 690 CB THR A 89 -6.717 9.735 19.716 1.00 18.11 C ATOM 691 OG1 THR A 89 -7.492 9.539 18.564 1.00 18.36 O ATOM 692 CG2 THR A 89 -7.642 9.724 20.953 1.00 16.37 C ATOM 693 N ALA A 90 -4.186 10.900 21.216 1.00 10.40 N ATOM 694 CA ALA A 90 -3.483 11.250 22.444 1.00 14.23 C ATOM 695 C ALA A 90 -2.971 12.685 22.412 1.00 17.47 C ATOM 696 O ALA A 90 -2.981 13.344 23.413 1.00 10.92 O ATOM 697 CB ALA A 90 -2.331 10.290 22.751 1.00 15.55 C ATOM 698 N SER A 91 -2.504 13.185 21.257 1.00 8.67 N ATOM 699 CA SER A 91 -2.032 14.567 21.163 1.00 7.03 C ATOM 700 C SER A 91 -3.155 15.522 21.418 1.00 6.83 C ATOM 701 O SER A 91 -3.033 16.547 22.059 1.00 13.20 O ATOM 702 CB SER A 91 -1.445 14.870 19.783 1.00 7.71 C ATOM 703 OG SER A 91 -0.111 14.402 19.670 1.00 11.50 O ATOM 704 N VAL A 92 -4.289 15.234 20.839 1.00 9.57 N ATOM 705 CA VAL A 92 -5.449 16.101 21.004 1.00 7.79 C ATOM 706 C VAL A 92 -5.938 16.148 22.488 1.00 10.65 C ATOM 707 O VAL A 92 -6.254 17.195 23.018 1.00 12.26 O ATOM 708 CB VAL A 92 -6.523 15.597 19.994 1.00 23.58 C ATOM 709 CG1 VAL A 92 -7.936 16.117 20.303 1.00 19.93 C ATOM 710 CG2 VAL A 92 -6.110 15.987 18.555 1.00 17.17 C ATOM 711 N ASN A 93 -6.047 14.973 23.140 1.00 10.03 N ATOM 712 CA ASN A 93 -6.511 14.862 24.536 1.00 24.44 C ATOM 713 C ASN A 93 -5.602 15.647 25.472 1.00 10.79 C ATOM 714 O ASN A 93 -6.049 16.390 26.310 1.00 15.54 O ATOM 715 CB ASN A 93 -6.580 13.395 24.989 1.00 13.16 C ATOM 716 CG ASN A 93 -7.781 12.668 24.406 1.00 15.37 C ATOM 717 OD1 ASN A 93 -7.842 11.422 24.426 1.00 35.75 O ATOM 718 ND2 ASN A 93 -8.682 13.436 23.835 1.00 16.65 N ATOM 719 N CYS A 94 -4.284 15.477 25.249 1.00 10.49 N ATOM 720 CA CYS A 94 -3.267 16.178 25.984 1.00 7.62 C ATOM 721 C CYS A 94 -3.353 17.649 25.690 1.00 17.58 C ATOM 722 O CYS A 94 -3.298 18.462 26.598 1.00 9.76 O ATOM 723 CB CYS A 94 -1.875 15.620 25.709 1.00 5.33 C ATOM 724 SG CYS A 94 -0.613 16.312 26.762 1.00 13.87 S ATOM 725 N ALA A 95 -3.546 18.041 24.407 1.00 7.01 N ATOM 726 CA ALA A 95 -3.656 19.481 24.142 1.00 8.80 C ATOM 727 C ALA A 95 -4.864 20.156 24.849 1.00 8.68 C ATOM 728 O ALA A 95 -4.867 21.353 25.215 1.00 11.44 O ATOM 729 CB ALA A 95 -3.774 19.698 22.627 1.00 6.34 C ATOM 730 N LYS A 96 -5.932 19.405 24.966 1.00 9.62 N ATOM 731 CA LYS A 96 -7.108 19.927 25.596 1.00 9.41 C ATOM 732 C LYS A 96 -6.804 20.229 27.091 1.00 11.43 C ATOM 733 O LYS A 96 -7.271 21.199 27.627 1.00 15.34 O ATOM 734 CB LYS A 96 -8.195 18.868 25.472 1.00 12.74 C ATOM 735 CG LYS A 96 -8.927 18.820 24.137 1.00 9.62 C ATOM 736 CD LYS A 96 -9.976 17.699 24.147 1.00 14.08 C ATOM 737 CE LYS A 96 -10.973 17.784 22.960 1.00 16.34 C ATOM 738 NZ LYS A 96 -11.641 16.485 22.720 1.00 20.55 N ATOM 739 N LYS A 97 -5.944 19.447 27.750 1.00 13.54 N ATOM 740 CA LYS A 97 -5.538 19.706 29.158 1.00 14.41 C ATOM 741 C LYS A 97 -4.672 20.981 29.209 1.00 13.37 C ATOM 742 O LYS A 97 -4.809 21.878 30.014 1.00 13.38 O ATOM 743 CB LYS A 97 -4.710 18.544 29.689 1.00 10.77 C ATOM 744 CG LYS A 97 -5.493 17.342 30.140 1.00 32.04 C ATOM 745 CD LYS A 97 -6.434 17.637 31.297 1.00 45.76 C ATOM 746 CE LYS A 97 -7.073 16.369 31.886 1.00 70.47 C ATOM 747 NZ LYS A 97 -8.523 16.232 31.620 1.00 59.21 N ATOM 748 N ILE A 98 -3.760 21.072 28.264 1.00 12.65 N ATOM 749 CA ILE A 98 -2.856 22.204 28.161 1.00 10.78 C ATOM 750 C ILE A 98 -3.607 23.536 27.991 1.00 8.94 C ATOM 751 O ILE A 98 -3.322 24.532 28.701 1.00 12.98 O ATOM 752 CB ILE A 98 -1.778 22.026 27.022 1.00 17.91 C ATOM 753 CG1 ILE A 98 -0.899 20.798 27.234 1.00 15.21 C ATOM 754 CG2 ILE A 98 -0.932 23.292 26.811 1.00 10.73 C ATOM 755 CD1 ILE A 98 -0.035 20.440 26.059 1.00 5.59 C ATOM 756 N VAL A 99 -4.497 23.570 26.973 1.00 12.61 N ATOM 757 CA VAL A 99 -5.194 24.822 26.643 1.00 14.92 C ATOM 758 C VAL A 99 -6.158 25.244 27.757 1.00 17.60 C ATOM 759 O VAL A 99 -6.529 26.431 27.844 1.00 21.46 O ATOM 760 CB VAL A 99 -5.863 24.788 25.223 1.00 7.93 C ATOM 761 CG1 VAL A 99 -7.102 23.930 25.230 1.00 13.13 C ATOM 762 CG2 VAL A 99 -6.203 26.159 24.648 1.00 14.05 C ATOM 763 N SER A 100 -6.529 24.274 28.623 1.00 14.94 N ATOM 764 CA SER A 100 -7.469 24.559 29.728 1.00 23.99 C ATOM 765 C SER A 100 -6.810 25.233 30.952 1.00 23.57 C ATOM 766 O SER A 100 -7.460 25.872 31.759 1.00 30.51 O ATOM 767 CB SER A 100 -8.109 23.250 30.148 1.00 15.96 C ATOM 768 OG SER A 100 -9.019 22.837 29.120 1.00 33.46 O ATOM 769 N ASP A 101 -5.495 25.061 30.981 1.00 27.50 N ATOM 770 CA ASP A 101 -4.485 25.414 31.955 1.00 38.61 C ATOM 771 C ASP A 101 -4.239 26.879 32.265 1.00 31.46 C ATOM 772 O ASP A 101 -3.422 27.194 33.137 1.00 49.53 O ATOM 773 CB ASP A 101 -3.173 24.648 31.624 1.00 32.62 C ATOM 774 CG ASP A 101 -2.133 24.566 32.715 1.00 66.21 C ATOM 775 OD1 ASP A 101 -2.482 23.821 33.747 1.00 53.53 O ATOM 776 OD2 ASP A 101 -1.045 25.095 32.609 1.00 62.33 O ATOM 777 N GLY A 102 -4.876 27.820 31.617 1.00 31.57 N ATOM 778 CA GLY A 102 -4.525 29.170 32.093 1.00 42.83 C ATOM 779 C GLY A 102 -4.082 30.192 31.049 1.00 56.99 C ATOM 780 O GLY A 102 -4.713 31.264 30.990 1.00 31.68 O ATOM 781 N ASN A 103 -2.979 29.915 30.284 1.00 23.55 N ATOM 782 CA ASN A 103 -2.573 30.864 29.246 1.00 11.97 C ATOM 783 C ASN A 103 -3.176 30.497 27.876 1.00 9.86 C ATOM 784 O ASN A 103 -2.905 31.106 26.860 1.00 13.84 O ATOM 785 CB ASN A 103 -1.070 31.114 29.177 1.00 17.92 C ATOM 786 CG ASN A 103 -0.638 31.476 30.587 1.00 65.73 C ATOM 787 OD1 ASN A 103 0.384 30.993 31.105 1.00 74.71 O ATOM 788 ND2 ASN A 103 -1.509 32.224 31.271 1.00 54.30 N ATOM 789 N GLY A 104 -4.070 29.522 27.865 1.00 10.94 N ATOM 790 CA GLY A 104 -4.733 29.138 26.601 1.00 18.78 C ATOM 791 C GLY A 104 -3.725 28.668 25.570 1.00 8.28 C ATOM 792 O GLY A 104 -2.766 27.947 25.892 1.00 12.01 O ATOM 793 N MET A 105 -3.906 29.119 24.313 1.00 13.56 N ATOM 794 CA MET A 105 -3.014 28.684 23.198 1.00 9.18 C ATOM 795 C MET A 105 -1.637 29.372 23.232 1.00 8.69 C ATOM 796 O MET A 105 -0.727 29.013 22.506 1.00 9.67 O ATOM 797 CB MET A 105 -3.739 28.882 21.838 1.00 3.51 C ATOM 798 CG MET A 105 -4.790 27.788 21.646 1.00 9.82 C ATOM 799 SD MET A 105 -5.184 27.455 19.852 1.00 12.90 S ATOM 800 CE MET A 105 -3.617 26.757 19.326 1.00 6.80 C ATOM 801 N ASN A 106 -1.509 30.373 24.105 1.00 7.08 N ATOM 802 CA ASN A 106 -0.270 31.037 24.269 1.00 4.32 C ATOM 803 C ASN A 106 0.809 30.046 24.765 1.00 8.04 C ATOM 804 O ASN A 106 2.030 30.336 24.608 1.00 11.37 O ATOM 805 CB ASN A 106 -0.396 32.190 25.241 1.00 12.62 C ATOM 806 CG ASN A 106 -1.239 33.309 24.682 1.00 16.51 C ATOM 807 OD1 ASN A 106 -0.864 33.972 23.658 1.00 9.88 O ATOM 808 ND2 ASN A 106 -2.372 33.492 25.355 1.00 15.30 N ATOM 809 N ALA A 107 0.360 28.870 25.250 1.00 8.10 N ATOM 810 CA ALA A 107 1.308 27.840 25.625 1.00 10.48 C ATOM 811 C ALA A 107 2.113 27.450 24.395 1.00 16.77 C ATOM 812 O ALA A 107 3.191 26.948 24.511 1.00 16.10 O ATOM 813 CB ALA A 107 0.585 26.599 26.143 1.00 11.40 C ATOM 814 N TRP A 108 1.577 27.639 23.205 1.00 10.51 N ATOM 815 CA TRP A 108 2.303 27.285 21.966 1.00 9.27 C ATOM 816 C TRP A 108 2.970 28.504 21.404 1.00 9.11 C ATOM 817 O TRP A 108 2.312 29.428 20.865 1.00 9.30 O ATOM 818 CB TRP A 108 1.398 26.569 20.912 1.00 4.39 C ATOM 819 CG TRP A 108 1.005 25.176 21.256 1.00 2.06 C ATOM 820 CD1 TRP A 108 1.760 24.069 21.021 1.00 10.56 C ATOM 821 CD2 TRP A 108 -0.146 24.722 21.926 1.00 4.61 C ATOM 822 NE1 TRP A 108 1.131 22.972 21.471 1.00 11.23 N ATOM 823 CE2 TRP A 108 -0.048 23.321 22.045 1.00 11.25 C ATOM 824 CE3 TRP A 108 -1.256 25.348 22.436 1.00 8.16 C ATOM 825 CZ2 TRP A 108 -1.038 22.520 22.626 1.00 7.13 C ATOM 826 CZ3 TRP A 108 -2.220 24.549 23.074 1.00 13.29 C ATOM 827 CH2 TRP A 108 -2.156 23.123 23.101 1.00 8.74 C ATOM 828 N VAL A 109 4.320 28.523 21.508 1.00 10.59 N ATOM 829 CA VAL A 109 5.046 29.672 21.044 1.00 10.72 C ATOM 830 C VAL A 109 4.800 30.025 19.545 1.00 7.07 C ATOM 831 O VAL A 109 4.617 31.199 19.228 1.00 12.32 O ATOM 832 CB VAL A 109 6.549 29.491 21.342 1.00 15.75 C ATOM 833 CG1 VAL A 109 7.068 28.242 20.605 1.00 38.18 C ATOM 834 CG2 VAL A 109 7.327 30.751 20.898 1.00 17.01 C ATOM 835 N ALA A 110 4.761 28.998 18.662 1.00 7.28 N ATOM 836 CA ALA A 110 4.506 29.281 17.232 1.00 14.92 C ATOM 837 C ALA A 110 3.122 29.845 17.031 1.00 12.74 C ATOM 838 O ALA A 110 2.902 30.659 16.125 1.00 13.19 O ATOM 839 CB ALA A 110 4.783 28.117 16.262 1.00 12.16 C ATOM 840 N TRP A 111 2.190 29.398 17.892 1.00 7.58 N ATOM 841 CA TRP A 111 0.821 29.901 17.789 1.00 5.91 C ATOM 842 C TRP A 111 0.815 31.399 18.100 1.00 9.06 C ATOM 843 O TRP A 111 0.249 32.308 17.369 1.00 6.22 O ATOM 844 CB TRP A 111 -0.240 29.136 18.618 1.00 6.54 C ATOM 845 CG TRP A 111 -1.589 29.763 18.461 1.00 9.13 C ATOM 846 CD1 TRP A 111 -2.510 29.517 17.447 1.00 5.89 C ATOM 847 CD2 TRP A 111 -2.190 30.781 19.295 1.00 10.48 C ATOM 848 NE1 TRP A 111 -3.642 30.322 17.597 1.00 5.88 N ATOM 849 CE2 TRP A 111 -3.471 31.090 18.728 1.00 5.72 C ATOM 850 CE3 TRP A 111 -1.805 31.432 20.511 1.00 4.95 C ATOM 851 CZ2 TRP A 111 -4.306 32.057 19.314 1.00 13.37 C ATOM 852 CZ3 TRP A 111 -2.658 32.382 21.061 1.00 6.90 C ATOM 853 CH2 TRP A 111 -3.906 32.666 20.489 1.00 4.12 C ATOM 854 N ARG A 112 1.497 31.701 19.218 1.00 7.90 N ATOM 855 CA ARG A 112 1.527 33.107 19.659 1.00 11.81 C ATOM 856 C ARG A 112 2.221 34.013 18.630 1.00 9.34 C ATOM 857 O ARG A 112 1.746 35.118 18.330 1.00 9.72 O ATOM 858 CB ARG A 112 2.215 33.175 21.040 1.00 18.21 C ATOM 859 CG ARG A 112 2.053 34.513 21.722 1.00 52.15 C ATOM 860 CD ARG A 112 2.813 34.593 23.056 1.00 27.12 C ATOM 861 NE ARG A 112 3.479 33.351 23.413 1.00 52.40 N ATOM 862 CZ ARG A 112 4.785 33.247 23.639 1.00 49.41 C ATOM 863 NH1 ARG A 112 5.612 34.286 23.535 1.00 53.98 N ATOM 864 NH2 ARG A 112 5.274 32.058 23.981 1.00 51.24 N ATOM 865 N ASN A 113 3.331 33.501 18.078 1.00 8.96 N ATOM 866 CA ASN A 113 4.132 34.283 17.152 1.00 15.60 C ATOM 867 C ASN A 113 3.657 34.303 15.695 1.00 17.72 C ATOM 868 O ASN A 113 3.919 35.261 14.974 1.00 16.73 O ATOM 869 CB ASN A 113 5.657 33.938 17.244 1.00 8.06 C ATOM 870 CG ASN A 113 6.192 34.297 18.636 1.00 11.97 C ATOM 871 OD1 ASN A 113 5.714 35.228 19.278 1.00 19.44 O ATOM 872 ND2 ASN A 113 7.179 33.595 19.091 1.00 9.04 N ATOM 873 N ARG A 114 2.964 33.273 15.287 1.00 7.06 N ATOM 874 CA ARG A 114 2.604 33.129 13.873 1.00 11.57 C ATOM 875 C ARG A 114 1.171 33.002 13.552 1.00 19.78 C ATOM 876 O ARG A 114 0.827 33.118 12.375 1.00 14.27 O ATOM 877 CB ARG A 114 3.309 31.830 13.395 1.00 8.51 C ATOM 878 CG ARG A 114 4.766 31.877 13.898 1.00 21.43 C ATOM 879 CD ARG A 114 5.833 31.132 13.125 1.00 27.54 C ATOM 880 NE ARG A 114 5.898 31.278 11.660 1.00 16.59 N ATOM 881 CZ ARG A 114 6.631 30.413 10.970 1.00 12.23 C ATOM 882 NH1 ARG A 114 7.271 29.439 11.649 1.00 11.43 N ATOM 883 NH2 ARG A 114 6.744 30.477 9.659 1.00 12.83 N ATOM 884 N CYS A 115 0.351 32.723 14.572 1.00 5.86 N ATOM 885 CA CYS A 115 -1.055 32.487 14.333 1.00 8.05 C ATOM 886 C CYS A 115 -1.937 33.541 14.914 1.00 18.18 C ATOM 887 O CYS A 115 -2.914 34.024 14.264 1.00 11.36 O ATOM 888 CB CYS A 115 -1.488 31.114 14.872 1.00 7.31 C ATOM 889 SG CYS A 115 -0.553 29.849 14.022 1.00 10.81 S ATOM 890 N LYS A 116 -1.630 33.796 16.196 1.00 10.46 N ATOM 891 CA LYS A 116 -2.372 34.723 16.976 1.00 9.75 C ATOM 892 C LYS A 116 -2.562 36.032 16.228 1.00 9.63 C ATOM 893 O LYS A 116 -1.583 36.599 15.729 1.00 13.85 O ATOM 894 CB LYS A 116 -1.716 34.948 18.335 1.00 12.72 C ATOM 895 CG LYS A 116 -2.557 35.791 19.284 1.00 7.87 C ATOM 896 CD LYS A 116 -1.809 35.938 20.635 1.00 15.62 C ATOM 897 CE LYS A 116 -2.607 36.597 21.773 1.00 17.04 C ATOM 898 NZ LYS A 116 -1.889 36.524 23.073 1.00 11.32 N ATOM 899 N GLY A 117 -3.862 36.462 16.131 1.00 9.19 N ATOM 900 CA GLY A 117 -4.213 37.737 15.493 1.00 22.87 C ATOM 901 C GLY A 117 -4.091 37.759 13.972 1.00 33.97 C ATOM 902 O GLY A 117 -4.044 38.799 13.371 1.00 28.79 O ATOM 903 N THR A 118 -4.019 36.612 13.340 1.00 15.57 N ATOM 904 CA THR A 118 -3.940 36.537 11.885 1.00 20.24 C ATOM 905 C THR A 118 -5.285 35.977 11.407 1.00 18.25 C ATOM 906 O THR A 118 -6.080 35.563 12.249 1.00 18.09 O ATOM 907 CB THR A 118 -2.747 35.680 11.439 1.00 13.62 C ATOM 908 OG1 THR A 118 -3.060 34.321 11.639 1.00 12.88 O ATOM 909 CG2 THR A 118 -1.455 36.072 12.193 1.00 12.89 C ATOM 910 N ASP A 119 -5.573 35.973 10.102 1.00 20.97 N ATOM 911 CA ASP A 119 -6.848 35.408 9.620 1.00 17.43 C ATOM 912 C ASP A 119 -6.693 33.892 9.567 1.00 19.50 C ATOM 913 O ASP A 119 -6.430 33.280 8.509 1.00 24.87 O ATOM 914 CB ASP A 119 -7.228 35.933 8.234 1.00 27.62 C ATOM 915 CG ASP A 119 -8.359 35.154 7.625 1.00 57.62 C ATOM 916 OD1 ASP A 119 -9.168 34.529 8.288 1.00 36.72 O ATOM 917 OD2 ASP A 119 -8.349 35.190 6.315 1.00 41.26 O ATOM 918 N VAL A 120 -6.836 33.291 10.750 1.00 20.10 N ATOM 919 CA VAL A 120 -6.637 31.835 10.895 1.00 24.77 C ATOM 920 C VAL A 120 -7.664 31.011 10.149 1.00 16.15 C ATOM 921 O VAL A 120 -7.486 29.777 9.914 1.00 13.85 O ATOM 922 CB VAL A 120 -6.476 31.372 12.367 1.00 15.61 C ATOM 923 CG1 VAL A 120 -5.271 32.055 13.060 1.00 17.17 C ATOM 924 CG2 VAL A 120 -7.761 31.691 13.097 1.00 18.96 C ATOM 925 N GLN A 121 -8.761 31.679 9.776 1.00 18.05 N ATOM 926 CA GLN A 121 -9.808 30.981 9.039 1.00 20.34 C ATOM 927 C GLN A 121 -9.285 30.499 7.694 1.00 14.19 C ATOM 928 O GLN A 121 -9.831 29.566 7.093 1.00 15.61 O ATOM 929 CB GLN A 121 -10.896 31.993 8.746 1.00 39.58 C ATOM 930 CG GLN A 121 -12.076 31.743 9.628 1.00 39.30 C ATOM 931 CD GLN A 121 -13.286 31.887 8.785 1.00 58.93 C ATOM 932 OE1 GLN A 121 -13.734 30.908 8.174 1.00 64.91 O ATOM 933 NE2 GLN A 121 -13.757 33.131 8.683 1.00 55.29 N ATOM 934 N ALA A 122 -8.222 31.161 7.229 1.00 14.53 N ATOM 935 CA ALA A 122 -7.588 30.777 5.964 1.00 13.31 C ATOM 936 C ALA A 122 -7.152 29.312 5.955 1.00 18.32 C ATOM 937 O ALA A 122 -7.123 28.622 4.924 1.00 14.96 O ATOM 938 CB ALA A 122 -6.378 31.657 5.724 1.00 18.92 C ATOM 939 N TRP A 123 -6.792 28.829 7.138 1.00 14.16 N ATOM 940 CA TRP A 123 -6.304 27.460 7.305 1.00 21.27 C ATOM 941 C TRP A 123 -7.326 26.369 7.031 1.00 12.05 C ATOM 942 O TRP A 123 -6.976 25.209 6.736 1.00 15.94 O ATOM 943 CB TRP A 123 -5.545 27.274 8.649 1.00 14.43 C ATOM 944 CG TRP A 123 -4.302 28.098 8.663 1.00 16.32 C ATOM 945 CD1 TRP A 123 -4.115 29.310 9.238 1.00 16.23 C ATOM 946 CD2 TRP A 123 -3.066 27.733 8.045 1.00 6.26 C ATOM 947 NE1 TRP A 123 -2.826 29.737 8.996 1.00 13.70 N ATOM 948 CE2 TRP A 123 -2.184 28.799 8.248 1.00 10.20 C ATOM 949 CE3 TRP A 123 -2.680 26.618 7.323 1.00 14.76 C ATOM 950 CZ2 TRP A 123 -0.873 28.742 7.761 1.00 21.80 C ATOM 951 CZ3 TRP A 123 -1.413 26.574 6.804 1.00 21.47 C ATOM 952 CH2 TRP A 123 -0.520 27.623 7.023 1.00 22.40 C ATOM 953 N ILE A 124 -8.590 26.696 7.126 1.00 10.36 N ATOM 954 CA ILE A 124 -9.573 25.659 6.831 1.00 14.89 C ATOM 955 C ILE A 124 -10.353 25.927 5.530 1.00 16.52 C ATOM 956 O ILE A 124 -11.277 25.213 5.172 1.00 16.40 O ATOM 957 CB ILE A 124 -10.480 25.421 8.019 1.00 15.33 C ATOM 958 CG1 ILE A 124 -11.016 26.778 8.456 1.00 15.55 C ATOM 959 CG2 ILE A 124 -9.624 24.846 9.164 1.00 15.50 C ATOM 960 CD1 ILE A 124 -12.489 26.742 8.908 1.00 32.95 C ATOM 961 N ARG A 125 -9.977 27.003 4.848 1.00 17.59 N ATOM 962 CA ARG A 125 -10.598 27.366 3.586 1.00 26.87 C ATOM 963 C ARG A 125 -10.424 26.259 2.569 1.00 18.05 C ATOM 964 O ARG A 125 -9.339 25.658 2.433 1.00 24.03 O ATOM 965 CB ARG A 125 -10.123 28.708 3.068 1.00 29.23 C ATOM 966 CG ARG A 125 -10.586 29.089 1.669 1.00 46.98 C ATOM 967 CD ARG A 125 -10.321 30.571 1.370 1.00 51.79 C ATOM 968 NE ARG A 125 -8.921 30.857 1.669 1.00 80.40 N ATOM 969 CZ ARG A 125 -7.924 30.424 0.892 1.00 80.57 C ATOM 970 NH1 ARG A 125 -8.167 29.752 -0.234 1.00 50.97 N ATOM 971 NH2 ARG A 125 -6.657 30.677 1.239 1.00 73.99 N ATOM 972 N GLY A 126 -11.581 25.957 1.917 1.00 23.54 N ATOM 973 CA GLY A 126 -11.741 24.959 0.858 1.00 15.85 C ATOM 974 C GLY A 126 -11.903 23.570 1.356 1.00 22.07 C ATOM 975 O GLY A 126 -11.988 22.638 0.564 1.00 33.97 O ATOM 976 N CYS A 127 -11.912 23.409 2.685 1.00 12.41 N ATOM 977 CA CYS A 127 -12.009 22.059 3.164 1.00 10.52 C ATOM 978 C CYS A 127 -13.442 21.578 3.291 1.00 13.96 C ATOM 979 O CYS A 127 -14.383 22.316 3.676 1.00 19.22 O ATOM 980 CB CYS A 127 -11.259 21.795 4.516 1.00 16.08 C ATOM 981 SG CYS A 127 -9.562 22.365 4.503 1.00 17.92 S ATOM 982 N ARG A 128 -13.609 20.299 3.023 1.00 19.23 N ATOM 983 CA ARG A 128 -14.929 19.757 3.200 1.00 29.52 C ATOM 984 C ARG A 128 -15.116 19.387 4.645 1.00 19.23 C ATOM 985 O ARG A 128 -14.626 18.345 5.078 1.00 29.24 O ATOM 986 CB ARG A 128 -15.159 18.511 2.363 1.00 35.15 C ATOM 987 CG ARG A 128 -16.602 18.043 2.481 1.00 32.92 C ATOM 988 CD ARG A 128 -16.961 17.187 1.277 1.00 38.70 C ATOM 989 NE ARG A 128 -15.779 16.498 0.721 1.00 50.55 N ATOM 990 CZ ARG A 128 -15.503 16.208 -0.581 1.00 55.70 C ATOM 991 NH1 ARG A 128 -16.293 16.551 -1.610 1.00 46.94 N ATOM 992 NH2 ARG A 128 -14.377 15.541 -0.856 1.00 48.25 N ATOM 993 N LEU A 129 -15.775 20.226 5.404 1.00 22.75 N ATOM 994 CA LEU A 129 -15.976 19.869 6.811 1.00 33.38 C ATOM 995 C LEU A 129 -17.449 19.906 7.141 1.00 72.70 C ATOM 996 O LEU A 129 -18.191 20.465 6.277 1.00 49.87 O ATOM 997 CB LEU A 129 -15.235 20.742 7.845 1.00 23.67 C ATOM 998 CG LEU A 129 -13.711 20.917 7.641 1.00 28.34 C ATOM 999 CD1 LEU A 129 -13.308 22.315 8.150 1.00 36.38 C ATOM 1000 CD2 LEU A 129 -12.970 19.868 8.434 1.00 43.93 C ATOM 1001 OXT LEU A 129 -17.769 19.416 8.251 1.00 70.56 O TER 1002 LEU A 129 END bio3d/inst/examples/crambin.prmtop0000644000176200001440000113172014707230357016740 0ustar liggesusers%VERSION VERSION_STAMP = V0001.000 DATE = 08/31/16 13:14:17 %FLAG TITLE %FORMAT(20a4) default_name %FLAG POINTERS %FORMAT(10I8) 639 12 313 335 710 462 1487 1528 0 0 3545 46 335 462 1528 45 107 147 21 0 0 0 0 0 0 0 0 0 24 0 0 %FLAG ATOM_NAME %FORMAT(20a4) N H1 H2 H3 CA HA CB HB CG2 HG21HG22HG23OG1 HG1 C O N H CA HA CB HB CG2 HG21HG22HG23OG1 HG1 C O N H CA HA CB HB2 HB3 SG C O N H CA HA CB HB2 HB3 SG C O N CD HD2 HD3 CG HG2 HG3 CB HB2 HB3 CA HA C O N H CA HA CB HB2 HB3 OG HG C O N H CA HA CB HB CG2 HG21HG22HG23CG1 HG12HG13CD1 HD11HD12HD13C O N H CA HA CB HB CG1 HG11HG12HG13CG2 HG21HG22HG23C O N H CA HA CB HB1 HB2 HB3 C O N H CA HA CB HB2 HB3 CG HG2 HG3 CD HD2 HD3 NE HE CZ NH1 HH11HH12NH2 HH21HH22C O N H CA HA CB HB2 HB3 OG HG C O N H CA HA CB HB2 HB3 CG OD1 ND2 HD21HD22C O N H CA HA CB HB2 HB3 CG CD1 HD1 CE1 HE1 CZ HZ CE2 HE2 CD2 HD2 C O N H CA HA CB HB2 HB3 CG OD1 ND2 HD21 HD22C O N H CA HA CB HB CG1 HG11HG12HG13CG2 HG21HG22HG23C O N H CA HA CB HB2 HB3 SG C O N H CA HA CB HB2 HB3 CG HG2 HG3 CD HD2 HD3 NE HE CZ NH1 HH11HH12NH2 HH21HH22C O N H CA HA CB HB2 HB3 CG HG CD1 HD11HD12HD13CD2 HD21HD22HD23C O N CD HD2 HD3 CG HG2 HG3 CB HB2 HB3 CA HA C O N H CA HA2 HA3 C O N H CA HA CB HB CG2 HG21HG22HG23OG1 HG1 C O N H CA HA CB HB2 HB3 OG HG C O N H CA HA CB HB2 HB3 CG HG2 HG3 CD OE1 OE2 C O N H CA HA CB HB1 HB2 HB3 C O N H CA HA CB HB CG2 HG21HG22HG23CG1 HG12HG13CD1 HD11HD12HD13 C O N H CA HA CB HB2 HB3 SG C O N H CA HA CB HB1 HB2 HB3 C O N H CA HA CB HB CG2 HG21HG22HG23OG1 HG1 C O N H CA HA CB HB2 HB3 CG CD1 HD1 CE1 HE1 CZ OH HH CE2 HE2 CD2 HD2 C O N H CA HA CB HB CG2 HG21HG22HG23OG1 HG1 C O N H CA HA2 HA3 C O N H CA HA CB HB2 HB3 SG C O N H CA HA CB HB CG2 HG21HG22HG23CG1 HG12 HG13CD1 HD11HD12HD13C O N H CA HA CB HB CG2 HG21HG22HG23CG1 HG12HG13 CD1 HD11HD12HD13C O N H CA HA CB HB CG2 HG21HG22HG23CG1 HG12HG13CD1 HD11HD12HD13C O N CD HD2 HD3 CG HG2 HG3 CB HB2 HB3 CA HA C O N H CA HA2 HA3 C O N H CA HA CB HB1 HB2 HB3 C O N H CA HA CB HB CG2 HG21HG22HG23OG1 HG1 C O N H CA HA CB HB2 HB3 SG C O N CD HD2 HD3 CG HG2 HG3 CB HB2 HB3 CA HA C O N H CA HA2 HA3 C O N H CA HA CB HB2 HB3 CG OD1 OD2 C O N H CA HA CB HB2 HB3 CG CD1 HD1 CE1 HE1 CZ OH HH CE2 HE2 CD2 HD2 C O N H CA HA CB HB1 HB2 HB3 C O N H CA HA CB HB2 HB3 CG OD1 ND2 HD21HD22C O OXT %FLAG CHARGE %FORMAT(5E16.8) 3.30188076E+00 3.52419282E+00 3.52419282E+00 3.52419282E+00 6.19558200E-02 1.98076401E+00 8.22554622E+00 -5.88580290E-01 -4.65397542E+00 1.14253821E+00 1.14253821E+00 1.14253821E+00 -1.23255637E+01 7.41647610E+00 1.12304035E+01 -1.04268001E+01 -7.57501011E+00 4.95464337E+00 -7.08847470E-01 1.83498561E+00 6.65842842E+00 7.83558900E-02 -4.44259674E+00 1.16987166E+00 1.16987166E+00 1.16987166E+00 -1.23200970E+01 7.47478746E+00 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 7.81736670E-01 1.39582818E+00 -1.43956170E+00 1.65822930E+00 1.65822930E+00 -1.96983063E+00 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 7.81736670E-01 1.39582818E+00 -1.43956170E+00 1.65822930E+00 1.65822930E+00 -1.96983063E+00 1.08841798E+01 -1.03484442E+01 -4.64304204E+00 3.49868160E-01 7.12491930E-01 7.12491930E-01 3.44401470E-01 3.88134990E-01 3.88134990E-01 -1.27556100E-01 4.61024190E-01 4.61024190E-01 -4.84713180E-01 1.16804943E+00 1.07438681E+01 -1.04741780E+01 -7.57501011E+00 4.95464337E+00 -4.53735270E-01 1.53613989E+00 3.85766091E+00 6.41424960E-01 6.41424960E-01 -1.19283176E+01 7.79003325E+00 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 -1.08787131E+00 1.58351787E+00 2.37436569E+00 3.40757010E-01 -5.83842492E+00 1.60720686E+00 1.60720686E+00 1.60720686E+00 -7.83558900E-01 4.30046280E-01 4.30046280E-01 -1.20267180E+00 3.38934780E-01 3.38934780E-01 3.38934780E-01 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 -1.59445125E+00 1.76574087E+00 5.43935655E+00 -5.41202310E-01 -5.81655816E+00 1.44138393E+00 1.44138393E+00 1.44138393E+00 -5.81655816E+00 1.44138393E+00 1.44138393E+00 1.44138393E+00 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 6.14091510E-01 1.49969529E+00 -3.32556975E+00 1.09880469E+00 1.09880469E+00 1.09880469E+00 1.08841798E+01 -1.03484442E+01 -6.33953817E+00 5.00566581E+00 -4.80522051E+00 2.84267880E+00 -1.27556100E-02 5.95869210E-01 5.95869210E-01 7.10669700E-01 5.19335550E-01 5.19335550E-01 8.85603780E-01 1.25187201E+00 1.25187201E+00 -9.64870785E+00 6.29762688E+00 1.47163295E+01 -1.57203782E+01 8.15994594E+00 8.15994594E+00 -1.57203782E+01 8.15994594E+00 8.15994594E+00 1.33769904E+01 -1.07402236E+01 -7.57501011E+00 4.95464337E+00 -4.53735270E-01 1.53613989E+00 3.85766091E+00 6.41424960E-01 6.41424960E-01 -1.19283176E+01 7.79003325E+00 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 2.60578890E-01 1.90969704E+00 -3.71917143E+00 1.45231731E+00 1.45231731E+00 1.29924999E+01 -1.08076461E+01 -1.67481159E+01 7.64607708E+00 7.64607708E+00 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 -4.37335200E-02 1.78214094E+00 -6.25024890E-01 5.37557850E-01 5.37557850E-01 2.15023140E-01 -2.28872088E+00 2.42356590E+00 -3.10507992E+00 2.60578890E+00 -1.95343056E+00 2.36343231E+00 -3.10507992E+00 2.60578890E+00 -2.28872088E+00 2.42356590E+00 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 2.60578890E-01 1.90969704E+00 -3.71917143E+00 1.45231731E+00 1.45231731E+00 1.29924999E+01 -1.08076461E+01 -1.67481159E+01 7.64607708E+00 7.64607708E+00 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 -1.59445125E+00 1.76574087E+00 5.43935655E+00 -5.41202310E-01 -5.81655816E+00 1.44138393E+00 1.44138393E+00 1.44138393E+00 -5.81655816E+00 1.44138393E+00 1.44138393E+00 1.44138393E+00 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 7.81736670E-01 1.39582818E+00 -1.43956170E+00 1.65822930E+00 1.65822930E+00 -1.96983063E+00 1.08841798E+01 -1.03484442E+01 -6.33953817E+00 5.00566581E+00 -4.80522051E+00 2.84267880E+00 -1.27556100E-02 5.95869210E-01 5.95869210E-01 7.10669700E-01 5.19335550E-01 5.19335550E-01 8.85603780E-01 1.25187201E+00 1.25187201E+00 -9.64870785E+00 6.29762688E+00 1.47163295E+01 -1.57203782E+01 8.15994594E+00 8.15994594E+00 -1.57203782E+01 8.15994594E+00 8.15994594E+00 1.33769904E+01 -1.07402236E+01 -7.57501011E+00 4.95464337E+00 -9.43915140E-01 1.68009606E+00 -2.00809746E+00 8.32759110E-01 8.32759110E-01 6.43429413E+00 -6.57825030E-01 -7.50940983E+00 1.82223000E+00 1.82223000E+00 1.82223000E+00 -7.50940983E+00 1.82223000E+00 1.82223000E+00 1.82223000E+00 1.08841798E+01 -1.03484442E+01 -4.64304204E+00 3.49868160E-01 7.12491930E-01 7.12491930E-01 3.44401470E-01 3.88134990E-01 3.88134990E-01 -1.27556100E-01 4.61024190E-01 4.61024190E-01 -4.84713180E-01 1.16804943E+00 1.07438681E+01 -1.04741780E+01 -7.57501011E+00 4.95464337E+00 -4.59201960E-01 1.27191654E+00 1.27191654E+00 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 -7.08847470E-01 1.83498561E+00 6.65842842E+00 7.83558900E-02 -4.44259674E+00 1.16987166E+00 1.16987166E+00 1.16987166E+00 -1.23200970E+01 7.47478746E+00 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 -4.53735270E-01 1.53613989E+00 3.85766091E+00 6.41424960E-01 6.41424960E-01 -1.19283176E+01 7.79003325E+00 1.08841798E+01 -1.03484442E+01 -9.40817349E+00 5.35006728E+00 7.23425310E-01 2.01356415E+00 1.02044880E+00 -3.15245790E-01 -3.15245790E-01 2.47823280E-01 -7.74447750E-01 -7.74447750E-01 1.46762404E+01 -1.49204192E+01 -1.49204192E+01 9.77808618E+00 -1.06035564E+01 -7.57501011E+00 4.95464337E+00 6.14091510E-01 1.49969529E+00 -3.32556975E+00 1.09880469E+00 1.09880469E+00 1.09880469E+00 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 -1.08787131E+00 1.58351787E+00 2.37436569E+00 3.40757010E-01 -5.83842492E+00 1.60720686E+00 1.60720686E+00 1.60720686E+00 -7.83558900E-01 4.30046280E-01 4.30046280E-01 -1.20267180E+00 3.38934780E-01 3.38934780E-01 3.38934780E-01 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 7.81736670E-01 1.39582818E+00 -1.43956170E+00 1.65822930E+00 1.65822930E+00 -1.96983063E+00 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 6.14091510E-01 1.49969529E+00 -3.32556975E+00 1.09880469E+00 1.09880469E+00 1.09880469E+00 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 -7.08847470E-01 1.83498561E+00 6.65842842E+00 7.83558900E-02 -4.44259674E+00 1.16987166E+00 1.16987166E+00 1.16987166E+00 -1.23200970E+01 7.47478746E+00 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 -2.55112200E-02 1.59627348E+00 -2.76978960E-01 5.37557850E-01 5.37557850E-01 -2.00445300E-02 -3.47317038E+00 3.09596877E+00 -4.26584043E+00 3.01761288E+00 5.87851398E+00 -1.01662212E+01 7.27434216E+00 -4.26584043E+00 3.01761288E+00 -3.47317038E+00 3.09596877E+00 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 -7.08847470E-01 1.83498561E+00 6.65842842E+00 7.83558900E-02 -4.44259674E+00 1.16987166E+00 1.16987166E+00 1.16987166E+00 -1.23200970E+01 7.47478746E+00 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 -4.59201960E-01 1.27191654E+00 1.27191654E+00 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 7.81736670E-01 1.39582818E+00 -1.43956170E+00 1.65822930E+00 1.65822930E+00 -1.96983063E+00 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 -1.08787131E+00 1.58351787E+00 2.37436569E+00 3.40757010E-01 -5.83842492E+00 1.60720686E+00 1.60720686E+00 1.60720686E+00 -7.83558900E-01 4.30046280E-01 4.30046280E-01 -1.20267180E+00 3.38934780E-01 3.38934780E-01 3.38934780E-01 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 -1.08787131E+00 1.58351787E+00 2.37436569E+00 3.40757010E-01 -5.83842492E+00 1.60720686E+00 1.60720686E+00 1.60720686E+00 -7.83558900E-01 4.30046280E-01 4.30046280E-01 -1.20267180E+00 3.38934780E-01 3.38934780E-01 3.38934780E-01 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 -1.08787131E+00 1.58351787E+00 2.37436569E+00 3.40757010E-01 -5.83842492E+00 1.60720686E+00 1.60720686E+00 1.60720686E+00 -7.83558900E-01 4.30046280E-01 4.30046280E-01 -1.20267180E+00 3.38934780E-01 3.38934780E-01 3.38934780E-01 1.08841798E+01 -1.03484442E+01 -4.64304204E+00 3.49868160E-01 7.12491930E-01 7.12491930E-01 3.44401470E-01 3.88134990E-01 3.88134990E-01 -1.27556100E-01 4.61024190E-01 4.61024190E-01 -4.84713180E-01 1.16804943E+00 1.07438681E+01 -1.04741780E+01 -7.57501011E+00 4.95464337E+00 -4.59201960E-01 1.27191654E+00 1.27191654E+00 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 6.14091510E-01 1.49969529E+00 -3.32556975E+00 1.09880469E+00 1.09880469E+00 1.09880469E+00 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 -7.08847470E-01 1.83498561E+00 6.65842842E+00 7.83558900E-02 -4.44259674E+00 1.16987166E+00 1.16987166E+00 1.16987166E+00 -1.23200970E+01 7.47478746E+00 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 7.81736670E-01 1.39582818E+00 -1.43956170E+00 1.65822930E+00 1.65822930E+00 -1.96983063E+00 1.08841798E+01 -1.03484442E+01 -4.64304204E+00 3.49868160E-01 7.12491930E-01 7.12491930E-01 3.44401470E-01 3.88134990E-01 3.88134990E-01 -1.27556100E-01 4.61024190E-01 4.61024190E-01 -4.84713180E-01 1.16804943E+00 1.07438681E+01 -1.04741780E+01 -7.57501011E+00 4.95464337E+00 -4.59201960E-01 1.27191654E+00 1.27191654E+00 1.08841798E+01 -1.03484442E+01 -9.40817349E+00 5.35006728E+00 6.94269630E-01 1.60356240E+00 -5.52135690E-01 -2.22312060E-01 -2.22312060E-01 1.45669066E+01 -1.46033512E+01 -1.46033512E+01 9.77808618E+00 -1.06035564E+01 -7.57501011E+00 4.95464337E+00 -2.55112200E-02 1.59627348E+00 -2.76978960E-01 5.37557850E-01 5.37557850E-01 -2.00445300E-02 -3.47317038E+00 3.09596877E+00 -4.26584043E+00 3.01761288E+00 5.87851398E+00 -1.01662212E+01 7.27434216E+00 -4.26584043E+00 3.01761288E+00 -3.47317038E+00 3.09596877E+00 1.08841798E+01 -1.03484442E+01 -7.57501011E+00 4.95464337E+00 6.14091510E-01 1.49969529E+00 -3.32556975E+00 1.09880469E+00 1.09880469E+00 1.09880469E+00 1.08841798E+01 -1.03484442E+01 -6.96274083E+00 4.88539863E+00 -3.79023840E+00 2.47458834E+00 -4.18930677E+00 1.86414129E+00 1.86414129E+00 1.30344112E+01 -1.09516023E+01 -1.65531373E+01 7.56225450E+00 7.56225450E+00 1.46689515E+01 -1.48457078E+01 -1.48457078E+01 %FLAG ATOMIC_NUMBER %FORMAT(10I8) 7 1 1 1 6 1 6 1 6 1 1 1 8 1 6 8 7 1 6 1 6 1 6 1 1 1 8 1 6 8 7 1 6 1 6 1 1 16 6 8 7 1 6 1 6 1 1 16 6 8 7 6 1 1 6 1 1 6 1 1 6 1 6 8 7 1 6 1 6 1 1 8 1 6 8 7 1 6 1 6 1 6 1 1 1 6 1 1 6 1 1 1 6 8 7 1 6 1 6 1 6 1 1 1 6 1 1 1 6 8 7 1 6 1 6 1 1 1 6 8 7 1 6 1 6 1 1 6 1 1 6 1 1 7 1 6 7 1 1 7 1 1 6 8 7 1 6 1 6 1 1 8 1 6 8 7 1 6 1 6 1 1 6 8 7 1 1 6 8 7 1 6 1 6 1 1 6 6 1 6 1 6 1 6 1 6 1 6 8 7 1 6 1 6 1 1 6 8 7 1 1 6 8 7 1 6 1 6 1 6 1 1 1 6 1 1 1 6 8 7 1 6 1 6 1 1 16 6 8 7 1 6 1 6 1 1 6 1 1 6 1 1 7 1 6 7 1 1 7 1 1 6 8 7 1 6 1 6 1 1 6 1 6 1 1 1 6 1 1 1 6 8 7 6 1 1 6 1 1 6 1 1 6 1 6 8 7 1 6 1 1 6 8 7 1 6 1 6 1 6 1 1 1 8 1 6 8 7 1 6 1 6 1 1 8 1 6 8 7 1 6 1 6 1 1 6 1 1 6 8 8 6 8 7 1 6 1 6 1 1 1 6 8 7 1 6 1 6 1 6 1 1 1 6 1 1 6 1 1 1 6 8 7 1 6 1 6 1 1 16 6 8 7 1 6 1 6 1 1 1 6 8 7 1 6 1 6 1 6 1 1 1 8 1 6 8 7 1 6 1 6 1 1 6 6 1 6 1 6 8 1 6 1 6 1 6 8 7 1 6 1 6 1 6 1 1 1 8 1 6 8 7 1 6 1 1 6 8 7 1 6 1 6 1 1 16 6 8 7 1 6 1 6 1 6 1 1 1 6 1 1 6 1 1 1 6 8 7 1 6 1 6 1 6 1 1 1 6 1 1 6 1 1 1 6 8 7 1 6 1 6 1 6 1 1 1 6 1 1 6 1 1 1 6 8 7 6 1 1 6 1 1 6 1 1 6 1 6 8 7 1 6 1 1 6 8 7 1 6 1 6 1 1 1 6 8 7 1 6 1 6 1 6 1 1 1 8 1 6 8 7 1 6 1 6 1 1 16 6 8 7 6 1 1 6 1 1 6 1 1 6 1 6 8 7 1 6 1 1 6 8 7 1 6 1 6 1 1 6 8 8 6 8 7 1 6 1 6 1 1 6 6 1 6 1 6 8 1 6 1 6 1 6 8 7 1 6 1 6 1 1 1 6 8 7 1 6 1 6 1 1 6 8 7 1 1 6 8 8 %FLAG MASS %FORMAT(5E16.8) 1.40100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.60000000E+01 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.60000000E+01 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 3.20600000E+01 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 3.20600000E+01 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.60000000E+01 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.40100000E+01 1.00800000E+00 1.00800000E+00 1.40100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.60000000E+01 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 3.20600000E+01 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.40100000E+01 1.00800000E+00 1.00800000E+00 1.40100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.60000000E+01 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.60000000E+01 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.60000000E+01 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 3.20600000E+01 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.60000000E+01 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.60000000E+01 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 3.20600000E+01 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.60000000E+01 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 3.20600000E+01 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.60000000E+01 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.40100000E+01 1.00800000E+00 1.00800000E+00 1.20100000E+01 1.60000000E+01 1.60000000E+01 %FLAG ATOM_TYPE_INDEX %FORMAT(10I8) 1 2 2 2 3 4 3 5 3 6 6 6 7 8 9 10 1 2 3 5 3 5 3 6 6 6 7 8 9 10 1 2 3 5 3 5 5 11 9 10 1 2 3 5 3 5 5 11 9 10 1 3 5 5 3 6 6 3 6 6 3 5 9 10 1 2 3 5 3 5 5 7 8 9 10 1 2 3 5 3 6 3 6 6 6 3 6 6 3 6 6 6 9 10 1 2 3 5 3 6 3 6 6 6 3 6 6 6 9 10 1 2 3 5 3 6 6 6 9 10 1 2 3 5 3 6 6 3 6 6 3 5 5 1 2 9 1 2 2 1 2 2 9 10 1 2 3 5 3 5 5 7 8 9 10 1 2 3 5 3 6 6 9 10 1 2 2 9 10 1 2 3 5 3 6 6 9 9 12 9 12 9 12 9 12 9 12 9 10 1 2 3 5 3 6 6 9 10 1 2 2 9 10 1 2 3 5 3 6 3 6 6 6 3 6 6 6 9 10 1 2 3 5 3 5 5 11 9 10 1 2 3 5 3 6 6 3 6 6 3 5 5 1 2 9 1 2 2 1 2 2 9 10 1 2 3 5 3 6 6 3 6 3 6 6 6 3 6 6 6 9 10 1 3 5 5 3 6 6 3 6 6 3 5 9 10 1 2 3 5 5 9 10 1 2 3 5 3 5 3 6 6 6 7 8 9 10 1 2 3 5 3 5 5 7 8 9 10 1 2 3 5 3 6 6 3 6 6 9 10 10 9 10 1 2 3 5 3 6 6 6 9 10 1 2 3 5 3 6 3 6 6 6 3 6 6 3 6 6 6 9 10 1 2 3 5 3 5 5 11 9 10 1 2 3 5 3 6 6 6 9 10 1 2 3 5 3 5 3 6 6 6 7 8 9 10 1 2 3 5 3 6 6 9 9 12 9 12 9 7 8 9 12 9 12 9 10 1 2 3 5 3 5 3 6 6 6 7 8 9 10 1 2 3 5 5 9 10 1 2 3 5 3 5 5 11 9 10 1 2 3 5 3 6 3 6 6 6 3 6 6 3 6 6 6 9 10 1 2 3 5 3 6 3 6 6 6 3 6 6 3 6 6 6 9 10 1 2 3 5 3 6 3 6 6 6 3 6 6 3 6 6 6 9 10 1 3 5 5 3 6 6 3 6 6 3 5 9 10 1 2 3 5 5 9 10 1 2 3 5 3 6 6 6 9 10 1 2 3 5 3 5 3 6 6 6 7 8 9 10 1 2 3 5 3 5 5 11 9 10 1 3 5 5 3 6 6 3 6 6 3 5 9 10 1 2 3 5 5 9 10 1 2 3 5 3 6 6 9 10 10 9 10 1 2 3 5 3 6 6 9 9 12 9 12 9 7 8 9 12 9 12 9 10 1 2 3 5 3 6 6 6 9 10 1 2 3 5 3 6 6 9 10 1 2 2 9 10 10 %FLAG NUMBER_EXCLUDED_ATOMS %FORMAT(10I8) 12 6 5 4 14 7 10 7 6 3 2 1 2 1 7 3 10 4 14 7 10 7 6 3 2 1 2 1 7 3 10 4 11 7 8 4 3 6 7 3 10 4 11 7 8 4 3 6 10 3 14 11 6 5 8 5 4 7 4 3 6 3 7 3 10 4 11 7 7 4 3 2 1 7 3 10 4 16 7 15 9 8 3 2 1 7 5 4 3 2 1 1 7 3 10 4 16 7 12 9 8 3 2 1 4 2 1 1 7 3 10 4 10 7 6 3 2 1 7 3 10 4 13 7 12 6 5 9 5 4 7 4 3 8 3 6 5 2 1 2 1 1 7 3 10 4 11 7 7 4 3 2 1 7 3 10 4 12 7 10 5 4 5 3 2 1 1 7 3 10 4 12 7 12 5 4 10 8 4 6 3 5 3 3 2 1 1 7 3 10 4 12 7 10 5 4 5 3 2 1 1 7 3 10 4 16 7 12 9 8 3 2 1 4 2 1 1 7 3 10 4 11 7 8 4 3 6 7 3 10 4 13 7 12 6 5 9 5 4 7 4 3 8 3 6 5 2 1 2 1 1 7 3 10 4 13 7 15 6 5 10 8 7 3 2 1 3 2 1 1 10 3 14 11 6 5 8 5 4 7 4 3 6 3 7 3 7 4 7 4 3 7 3 10 4 14 7 10 7 6 3 2 1 2 1 7 3 10 4 11 7 7 4 3 2 1 7 3 10 4 13 7 11 6 5 6 4 3 2 1 1 7 3 10 4 10 7 6 3 2 1 7 3 10 4 16 7 15 9 8 3 2 1 7 5 4 3 2 1 1 7 3 10 4 10 7 6 3 2 1 7 3 10 4 10 7 6 3 2 1 7 3 10 4 14 7 10 7 6 3 2 1 2 1 7 3 10 4 12 7 12 5 4 10 8 4 7 3 6 4 1 3 2 1 1 7 3 10 4 14 7 10 7 6 3 2 1 2 1 7 3 7 4 7 4 3 7 3 10 4 10 7 6 3 2 1 7 3 10 4 16 7 15 9 8 3 2 1 7 5 4 3 2 1 1 7 3 10 4 16 7 15 9 8 3 2 1 7 5 4 3 2 1 1 7 3 10 4 16 7 15 9 8 3 2 1 7 5 4 3 2 1 1 10 3 14 11 6 5 8 5 4 7 4 3 6 3 7 3 7 4 7 4 3 7 3 10 4 10 7 6 3 2 1 7 3 10 4 14 7 10 7 6 3 2 1 2 1 7 3 10 4 10 7 6 3 2 1 10 3 14 11 6 5 8 5 4 7 4 3 6 3 7 3 7 4 7 4 3 7 3 10 4 12 7 8 5 4 3 1 1 7 3 10 4 12 7 12 5 4 10 8 4 7 3 6 4 1 3 2 1 1 7 3 10 4 10 7 6 3 2 1 7 3 10 4 10 7 10 5 4 5 3 2 1 1 2 1 1 %FLAG NONBONDED_PARM_INDEX %FORMAT(10I8) 1 2 4 7 11 16 22 29 37 46 56 67 2 3 5 8 12 17 23 30 38 47 57 68 4 5 6 9 13 18 24 31 39 48 58 69 7 8 9 10 14 19 25 32 40 49 59 70 11 12 13 14 15 20 26 33 41 50 60 71 16 17 18 19 20 21 27 34 42 51 61 72 22 23 24 25 26 27 28 35 43 52 62 73 29 30 31 32 33 34 35 36 44 53 63 74 37 38 39 40 41 42 43 44 45 54 64 75 46 47 48 49 50 51 52 53 54 55 65 76 56 57 58 59 60 61 62 63 64 65 66 77 67 68 69 70 71 72 73 74 75 76 77 78 %FLAG RESIDUE_LABEL %FORMAT(20a4) THR THR CYX CYX PRO SER ILE VAL ALA ARG SER ASN PHE ASN VAL CYX ARG LEU PRO GLY THR SER GLU ALA ILE CYX ALA THR TYR THR GLY CYX ILE ILE ILE PRO GLY ALA THR CYX PRO GLY ASP TYR ALA ASN %FLAG RESIDUE_POINTER %FORMAT(10I8) 1 17 31 41 51 65 76 95 111 121 145 156 170 190 204 220 230 254 273 287 294 308 319 334 344 363 373 383 397 418 432 439 449 468 487 506 520 527 537 551 561 575 582 594 615 625 %FLAG BOND_FORCE_CONSTANT %FORMAT(5E16.8) 5.70000000E+02 4.90000000E+02 5.53000000E+02 3.40000000E+02 3.40000000E+02 3.10000000E+02 3.20000000E+02 3.40000000E+02 3.10000000E+02 3.17000000E+02 4.34000000E+02 3.67000000E+02 3.40000000E+02 4.34000000E+02 3.37000000E+02 1.66000000E+02 3.40000000E+02 2.27000000E+02 3.10000000E+02 3.10000000E+02 3.10000000E+02 3.40000000E+02 3.37000000E+02 3.20000000E+02 3.40000000E+02 3.10000000E+02 3.40000000E+02 3.10000000E+02 4.34000000E+02 4.81000000E+02 3.40000000E+02 3.37000000E+02 3.40000000E+02 3.10000000E+02 3.10000000E+02 3.17000000E+02 3.67000000E+02 4.69000000E+02 3.17000000E+02 6.56000000E+02 3.17000000E+02 3.10000000E+02 4.50000000E+02 4.69000000E+02 6.56000000E+02 %FLAG BOND_EQUIL_VALUE %FORMAT(5E16.8) 1.22900000E+00 1.33500000E+00 9.60000000E-01 1.09000000E+00 1.09000000E+00 1.52600000E+00 1.41000000E+00 1.09000000E+00 1.52600000E+00 1.52200000E+00 1.01000000E+00 1.47100000E+00 1.09000000E+00 1.01000000E+00 1.44900000E+00 2.03800000E+00 1.09000000E+00 1.81000000E+00 1.52600000E+00 1.52600000E+00 1.52600000E+00 1.09000000E+00 1.44900000E+00 1.41000000E+00 1.09000000E+00 1.52600000E+00 1.09000000E+00 1.52600000E+00 1.01000000E+00 1.34000000E+00 1.09000000E+00 1.46300000E+00 1.09000000E+00 1.52600000E+00 1.52600000E+00 1.52200000E+00 1.08000000E+00 1.40000000E+00 1.51000000E+00 1.25000000E+00 1.52200000E+00 1.52600000E+00 1.36400000E+00 1.40900000E+00 1.25000000E+00 %FLAG ANGLE_FORCE_CONSTANT %FORMAT(5E16.8) 8.00000000E+01 5.00000000E+01 5.00000000E+01 3.50000000E+01 5.00000000E+01 5.00000000E+01 5.00000000E+01 6.30000000E+01 5.00000000E+01 5.50000000E+01 5.00000000E+01 5.00000000E+01 5.00000000E+01 4.00000000E+01 5.00000000E+01 8.00000000E+01 7.00000000E+01 5.00000000E+01 3.50000000E+01 5.00000000E+01 8.00000000E+01 8.00000000E+01 5.00000000E+01 5.00000000E+01 5.00000000E+01 5.00000000E+01 8.00000000E+01 6.30000000E+01 6.80000000E+01 5.00000000E+01 3.50000000E+01 6.30000000E+01 5.00000000E+01 5.00000000E+01 5.00000000E+01 8.00000000E+01 5.00000000E+01 5.00000000E+01 5.00000000E+01 6.30000000E+01 5.00000000E+01 4.00000000E+01 5.00000000E+01 3.50000000E+01 5.00000000E+01 4.00000000E+01 5.00000000E+01 8.00000000E+01 8.00000000E+01 5.00000000E+01 5.50000000E+01 5.00000000E+01 5.00000000E+01 3.50000000E+01 5.00000000E+01 4.00000000E+01 5.00000000E+01 5.00000000E+01 5.00000000E+01 4.00000000E+01 5.00000000E+01 4.00000000E+01 4.00000000E+01 3.50000000E+01 7.00000000E+01 5.00000000E+01 5.00000000E+01 3.50000000E+01 5.00000000E+01 5.00000000E+01 5.00000000E+01 3.50000000E+01 5.00000000E+01 8.00000000E+01 6.30000000E+01 4.00000000E+01 5.00000000E+01 5.00000000E+01 4.00000000E+01 8.00000000E+01 3.50000000E+01 5.00000000E+01 8.00000000E+01 7.00000000E+01 5.00000000E+01 6.30000000E+01 5.00000000E+01 6.30000000E+01 5.00000000E+01 7.00000000E+01 6.30000000E+01 4.00000000E+01 3.50000000E+01 8.00000000E+01 5.00000000E+01 7.00000000E+01 5.00000000E+01 6.30000000E+01 4.00000000E+01 7.00000000E+01 5.00000000E+01 5.00000000E+01 6.30000000E+01 6.30000000E+01 6.30000000E+01 8.00000000E+01 7.00000000E+01 %FLAG ANGLE_EQUIL_VALUE %FORMAT(5E16.8) 2.14501057E+00 2.09439600E+00 2.12755727E+00 1.91113635E+00 1.91113635E+00 1.91113635E+00 1.91113635E+00 1.93906163E+00 1.91113635E+00 1.89368305E+00 1.91113635E+00 1.91113635E+00 1.91113635E+00 1.91113635E+00 1.91113635E+00 2.10137732E+00 2.03505478E+00 1.91113635E+00 1.91113635E+00 1.91113635E+00 1.94080696E+00 1.94080696E+00 1.91113635E+00 1.91113635E+00 2.06018753E+00 1.91113635E+00 1.91462701E+00 1.92160833E+00 1.80990721E+00 1.91113635E+00 1.91113635E+00 1.93906163E+00 1.91113635E+00 1.91113635E+00 2.00189351E+00 1.91462701E+00 2.12755727E+00 1.91113635E+00 1.91113635E+00 1.93906163E+00 1.91113635E+00 1.91113635E+00 1.91113635E+00 1.91113635E+00 2.05948940E+00 1.91113635E+00 1.91113635E+00 1.91462701E+00 1.91462701E+00 1.91113635E+00 1.89368305E+00 1.91113635E+00 1.91113635E+00 1.91113635E+00 1.91113635E+00 1.91113635E+00 1.91113635E+00 1.91113635E+00 1.91113635E+00 1.91113635E+00 1.91113635E+00 1.91113635E+00 1.91113635E+00 2.09439600E+00 2.09439600E+00 2.09439600E+00 1.91113635E+00 1.91113635E+00 2.06647072E+00 2.15024656E+00 1.91113635E+00 1.91113635E+00 1.91113635E+00 1.94080696E+00 1.93906163E+00 1.91113635E+00 1.91113635E+00 1.91113635E+00 1.91113635E+00 1.91462701E+00 2.09439600E+00 1.91113635E+00 2.10137732E+00 2.03505478E+00 1.91113635E+00 1.93906163E+00 2.09439600E+00 2.09439600E+00 1.91113635E+00 2.09439600E+00 1.98967620E+00 1.91113635E+00 1.91113635E+00 2.19911580E+00 1.91113635E+00 2.04203610E+00 1.91113635E+00 1.93906163E+00 1.91113635E+00 2.09439600E+00 1.97222290E+00 2.09439600E+00 2.09439600E+00 2.09439600E+00 1.93906163E+00 2.19911580E+00 2.04203610E+00 %FLAG DIHEDRAL_FORCE_CONSTANT %FORMAT(5E16.8) 2.00000000E+00 2.50000000E+00 0.00000000E+00 1.80000000E+00 8.00000000E-01 0.00000000E+00 0.00000000E+00 2.70000000E-01 4.20000000E-01 6.97000000E-01 1.19000000E-01 3.15000000E-01 1.56000000E-01 2.50000000E-01 0.00000000E+00 4.06000000E-01 2.89000000E-01 1.48000000E-01 1.12000000E-01 6.43000000E-01 7.90000000E-02 2.36000000E-01 4.80000000E-02 1.55555556E-01 1.66666667E-01 2.00000000E-01 2.00000000E-01 4.00000000E-01 1.60000000E-01 6.00000000E-03 2.51000000E-01 1.30000000E-02 3.37000000E-01 2.16000000E-01 1.00000000E-03 6.74000000E-01 6.00000000E-03 9.50000000E-02 8.00000000E-01 8.00000000E-02 4.50000000E-01 1.58000000E+00 5.50000000E-01 6.02000000E-01 3.94000000E-01 3.23000000E-01 2.78000000E-01 5.60000000E-02 6.66000000E-01 3.02000000E-01 1.35000000E-01 3.33333333E-01 4.20000000E-01 4.48000000E+00 6.82000000E-01 3.79000000E-01 4.69000000E-01 2.10000000E-02 6.40000000E-02 2.00000000E+00 1.50000000E-01 2.00000000E-01 2.50000000E-01 1.80000000E-01 6.61000000E-01 2.18000000E-01 4.01000000E-01 1.29000000E-01 2.11000000E-01 4.44000000E-01 2.67000000E-01 7.00000000E-03 6.66000000E-01 2.46000000E-01 1.60000000E-01 1.62000000E-01 7.35000000E-01 1.13000000E-01 1.15000000E-01 2.02000000E-01 7.70000000E-02 1.07000000E-01 2.24000000E-01 4.47000000E-01 5.30000000E-02 2.30000000E-01 3.10000000E-01 1.44000000E-01 9.70000000E-02 2.40000000E+00 1.04600000E+00 3.03000000E-01 3.30000000E-02 1.07000000E-01 8.28000000E-01 4.85000000E-01 3.01000000E-01 8.00000000E-03 6.88000000E-01 2.97000000E-01 5.90000000E-02 3.62500000E+00 5.50000000E-02 4.69000000E-01 1.92000000E-01 1.20000000E-02 6.90000000E-02 4.80000000E-02 1.20000000E-02 2.90000000E-01 7.00000000E-03 7.06000000E-01 6.20000000E-01 1.44000000E-01 1.90000000E-01 3.79000000E-01 2.70000000E-02 1.42000000E-01 1.79000000E-01 9.80000000E-02 2.59000000E-01 7.30000000E-02 4.21000000E-01 3.93000000E-01 1.45000000E-01 3.90000000E-01 1.36700000E+00 2.22000000E-01 6.08000000E-01 5.60000000E-02 1.00000000E-01 1.84000000E-01 7.80000000E-02 8.83000000E-01 6.50000000E-02 4.24000000E-01 4.59000000E-01 5.80000000E-02 1.54000000E-01 7.69000000E-01 3.10000000E-02 2.15400000E+00 6.47000000E-01 8.90000000E-02 1.05000000E+01 1.10000000E+00 1.00000000E+00 %FLAG DIHEDRAL_PERIODICITY %FORMAT(5E16.8) 1.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 3.00000000E+00 4.00000000E+00 1.00000000E+00 2.00000000E+00 3.00000000E+00 1.00000000E+00 2.00000000E+00 3.00000000E+00 4.00000000E+00 1.00000000E+00 3.00000000E+00 1.00000000E+00 2.00000000E+00 3.00000000E+00 4.00000000E+00 1.00000000E+00 2.00000000E+00 3.00000000E+00 4.00000000E+00 3.00000000E+00 3.00000000E+00 1.00000000E+00 2.00000000E+00 3.00000000E+00 3.00000000E+00 1.00000000E+00 2.00000000E+00 4.00000000E+00 1.00000000E+00 2.00000000E+00 4.00000000E+00 1.00000000E+00 2.00000000E+00 4.00000000E+00 1.00000000E+00 3.00000000E+00 1.00000000E+00 2.00000000E+00 3.00000000E+00 1.00000000E+00 2.00000000E+00 3.00000000E+00 4.00000000E+00 1.00000000E+00 2.00000000E+00 3.00000000E+00 4.00000000E+00 3.00000000E+00 1.00000000E+00 2.00000000E+00 3.00000000E+00 4.00000000E+00 1.00000000E+00 2.00000000E+00 4.00000000E+00 2.00000000E+00 3.00000000E+00 1.00000000E+00 2.00000000E+00 3.00000000E+00 1.00000000E+00 2.00000000E+00 3.00000000E+00 4.00000000E+00 1.00000000E+00 2.00000000E+00 3.00000000E+00 4.00000000E+00 1.00000000E+00 2.00000000E+00 4.00000000E+00 1.00000000E+00 2.00000000E+00 3.00000000E+00 4.00000000E+00 1.00000000E+00 2.00000000E+00 3.00000000E+00 4.00000000E+00 1.00000000E+00 2.00000000E+00 4.00000000E+00 1.00000000E+00 2.00000000E+00 4.00000000E+00 2.00000000E+00 1.00000000E+00 2.00000000E+00 3.00000000E+00 4.00000000E+00 1.00000000E+00 2.00000000E+00 3.00000000E+00 4.00000000E+00 1.00000000E+00 2.00000000E+00 4.00000000E+00 2.00000000E+00 1.00000000E+00 2.00000000E+00 3.00000000E+00 4.00000000E+00 2.00000000E+00 4.00000000E+00 1.00000000E+00 2.00000000E+00 4.00000000E+00 1.00000000E+00 2.00000000E+00 3.00000000E+00 4.00000000E+00 1.00000000E+00 2.00000000E+00 3.00000000E+00 4.00000000E+00 1.00000000E+00 2.00000000E+00 4.00000000E+00 1.00000000E+00 2.00000000E+00 4.00000000E+00 2.00000000E+00 1.00000000E+00 2.00000000E+00 3.00000000E+00 4.00000000E+00 1.00000000E+00 2.00000000E+00 4.00000000E+00 2.00000000E+00 4.00000000E+00 1.00000000E+00 2.00000000E+00 3.00000000E+00 4.00000000E+00 2.00000000E+00 4.00000000E+00 1.00000000E+00 2.00000000E+00 4.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 %FLAG DIHEDRAL_PHASE %FORMAT(5E16.8) 0.00000000E+00 3.14159400E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 3.14159400E+00 3.14159400E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 3.14159400E+00 3.14159400E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 3.14159400E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 3.14159400E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 3.14159400E+00 3.14159400E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 3.14159400E+00 3.14159400E+00 3.14159400E+00 3.14159400E+00 0.00000000E+00 3.14159400E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 3.14159400E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 3.14159400E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 3.14159400E+00 3.14159400E+00 0.00000000E+00 3.14159400E+00 3.14159400E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 3.14159400E+00 0.00000000E+00 0.00000000E+00 3.14159400E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 3.14159400E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 3.14159400E+00 3.14159400E+00 3.14159400E+00 0.00000000E+00 3.14159400E+00 0.00000000E+00 0.00000000E+00 3.14159400E+00 3.14159400E+00 3.14159400E+00 0.00000000E+00 3.14159400E+00 3.14159400E+00 0.00000000E+00 3.14159400E+00 0.00000000E+00 3.14159400E+00 0.00000000E+00 3.14159400E+00 3.14159400E+00 3.14159400E+00 3.14159400E+00 3.14159400E+00 3.14159400E+00 0.00000000E+00 3.14159400E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 3.14159400E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 3.14159400E+00 0.00000000E+00 3.14159400E+00 3.14159400E+00 0.00000000E+00 3.14159400E+00 3.14159400E+00 3.14159400E+00 3.14159400E+00 3.14159400E+00 3.14159400E+00 3.14159400E+00 0.00000000E+00 3.14159400E+00 0.00000000E+00 0.00000000E+00 3.14159400E+00 0.00000000E+00 0.00000000E+00 3.14159400E+00 3.14159400E+00 3.14159400E+00 3.14159400E+00 0.00000000E+00 3.14159400E+00 3.14159400E+00 3.14159400E+00 %FLAG SCEE_SCALE_FACTOR %FORMAT(5E16.8) 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 %FLAG SCNB_SCALE_FACTOR %FORMAT(5E16.8) 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 %FLAG SOLTY %FORMAT(5E16.8) 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 %FLAG LENNARD_JONES_ACOEF %FORMAT(5E16.8) 9.44293233E+05 2.12601181E+03 1.39982777E-01 9.95480466E+05 2.56678134E+03 1.04308023E+06 2.01791425E+04 9.14716912E+00 2.27401052E+04 2.01823541E+02 6.20665997E+04 5.94667300E+01 6.78771368E+04 8.79040886E+02 3.25969625E+03 8.96776989E+04 1.07193646E+02 9.71708117E+04 1.41077189E+03 4.98586848E+03 7.51607703E+03 7.44975864E+05 1.40467023E+03 7.91544157E+05 1.45985502E+04 4.66922514E+04 6.82786631E+04 5.81803229E+05 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 8.82619071E+05 2.27577561E+03 9.24822270E+05 2.01619733E+04 6.01816484E+04 8.61541883E+04 7.01803794E+05 0.00000000E+00 8.19971662E+05 6.06829342E+05 1.02595236E+03 6.47841731E+05 1.12780457E+04 3.69471530E+04 5.44261042E+04 4.71003287E+05 0.00000000E+00 5.74393458E+05 3.79876399E+05 2.01562190E+06 5.97860700E+03 2.09861767E+06 4.93469320E+04 1.42791446E+05 2.02461849E+05 1.61587928E+06 0.00000000E+00 1.86068943E+06 1.32911052E+06 4.19430400E+06 7.91627154E+04 8.90987508E+01 8.59947003E+04 1.21014911E+03 4.33325458E+03 6.55825601E+03 6.00750218E+04 0.00000000E+00 7.62451550E+04 4.77908183E+04 1.79647996E+05 5.71629601E+03 %FLAG LENNARD_JONES_BCOEF %FORMAT(5E16.8) 8.01323529E+02 2.09604198E+01 9.37598976E-02 7.36907417E+02 2.06278363E+01 6.75612247E+02 6.45756063E+01 7.57919667E-01 6.13981767E+01 3.56012899E+00 1.13252061E+02 1.93248820E+00 1.06076943E+02 7.42992380E+00 1.43076527E+01 1.36131731E+02 2.59456373E+00 1.26919150E+02 9.41257003E+00 1.76949863E+01 2.17257828E+01 7.50714425E+02 1.79702257E+01 6.93079947E+02 5.79323581E+01 1.03606917E+02 1.25287818E+02 6.99746810E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 6.53361429E+02 1.82891803E+01 5.99015525E+02 5.44372326E+01 9.40505980E+01 1.12529845E+02 6.14502845E+02 0.00000000E+00 5.31102864E+02 6.77220874E+02 1.53505284E+01 6.26720080E+02 5.08951803E+01 9.21192136E+01 1.11805549E+02 6.29300710E+02 0.00000000E+00 5.55666448E+02 5.64885984E+02 1.28923404E+03 3.87070358E+01 1.17824605E+03 1.11203892E+02 1.89165096E+02 2.25248294E+02 1.21753341E+03 0.00000000E+00 1.04466382E+03 1.10369829E+03 2.04800000E+03 1.26451907E+02 2.33864085E+00 1.18043746E+02 8.61880722E+00 1.63092814E+01 2.00642027E+01 1.16187983E+02 0.00000000E+00 1.04660679E+02 1.03580945E+02 2.09772716E+02 1.85196588E+01 %FLAG BONDS_INC_HYDROGEN %FORMAT(10I8) 36 39 3 24 27 4 24 30 4 24 33 4 18 21 5 12 15 8 0 3 11 0 6 11 0 9 11 78 81 3 66 69 4 66 72 4 66 75 4 60 63 5 54 57 13 48 51 14 102 105 17 102 108 17 96 99 13 90 93 14 132 135 17 132 138 17 126 129 13 120 123 14 180 183 13 171 174 4 171 177 4 162 165 4 162 168 4 153 156 22 153 159 22 213 216 3 204 207 17 204 210 17 198 201 13 192 195 14 264 267 4 264 270 4 264 273 4 255 258 25 255 261 25 243 246 4 243 249 4 243 252 4 237 240 27 231 234 13 225 228 14 312 315 4 312 318 4 312 321 4 300 303 4 300 306 4 300 309 4 294 297 27 288 291 13 282 285 14 342 345 4 342 348 4 342 351 4 336 339 13 330 333 14 417 420 29 417 423 29 408 411 29 408 414 29 399 402 29 390 393 31 390 396 31 381 384 33 381 387 33 372 375 33 372 378 33 366 369 13 360 363 14 453 456 3 444 447 17 444 450 17 438 441 13 432 435 14 492 495 14 492 498 14 477 480 25 477 483 25 471 474 13 465 468 14 555 558 37 549 552 37 543 546 37 537 540 37 531 534 37 519 522 4 519 525 4 513 516 13 507 510 14 594 597 14 594 600 14 579 582 25 579 585 25 573 576 13 567 570 14 639 642 4 639 645 4 639 648 4 627 630 4 627 633 4 627 636 4 621 624 27 615 618 13 609 612 14 669 672 17 669 675 17 663 666 13 657 660 14 744 747 29 744 750 29 735 738 29 735 741 29 726 729 29 717 720 31 717 723 31 708 711 33 708 714 33 699 702 33 699 705 33 693 696 13 687 690 14 798 801 4 798 804 4 798 807 4 786 789 4 786 792 4 786 795 4 780 783 27 771 774 25 771 777 25 765 768 13 759 762 14 846 849 13 837 840 4 837 843 4 828 831 4 828 834 4 819 822 22 819 825 22 864 867 13 864 870 13 858 861 14 909 912 3 897 900 4 897 903 4 897 906 4 891 894 5 885 888 13 879 882 14 942 945 3 933 936 17 933 939 17 927 930 13 921 924 14 975 978 25 975 981 25 966 969 25 966 972 25 960 963 13 954 957 14 1011 1014 4 1011 1017 4 1011 1020 4 1005 1008 13 999 1002 14 1068 1071 4 1068 1074 4 1068 1077 4 1059 1062 25 1059 1065 25 1047 1050 4 1047 1053 4 1047 1056 4 1041 1044 27 1035 1038 13 1029 1032 14 1098 1101 17 1098 1104 17 1092 1095 13 1086 1089 14 1128 1131 4 1128 1134 4 1128 1137 4 1122 1125 13 1116 1119 14 1176 1179 3 1164 1167 4 1164 1170 4 1164 1173 4 1158 1161 5 1152 1155 13 1146 1149 14 1239 1242 37 1233 1236 37 1227 1230 3 1218 1221 37 1212 1215 37 1200 1203 4 1200 1206 4 1194 1197 13 1188 1191 14 1281 1284 3 1269 1272 4 1269 1275 4 1269 1278 4 1263 1266 5 1257 1260 13 1251 1254 14 1299 1302 13 1299 1305 13 1293 1296 14 1326 1329 17 1326 1332 17 1320 1323 13 1314 1317 14 1383 1386 4 1383 1389 4 1383 1392 4 1374 1377 25 1374 1380 25 1362 1365 4 1362 1368 4 1362 1371 4 1356 1359 27 1350 1353 13 1344 1347 14 1440 1443 4 1440 1446 4 1440 1449 4 1431 1434 25 1431 1437 25 1419 1422 4 1419 1425 4 1419 1428 4 1413 1416 27 1407 1410 13 1401 1404 14 1497 1500 4 1497 1503 4 1497 1506 4 1488 1491 25 1488 1494 25 1476 1479 4 1476 1482 4 1476 1485 4 1470 1473 27 1464 1467 13 1458 1461 14 1545 1548 13 1536 1539 4 1536 1542 4 1527 1530 4 1527 1533 4 1518 1521 22 1518 1524 22 1563 1566 13 1563 1569 13 1557 1560 14 1590 1593 4 1590 1596 4 1590 1599 4 1584 1587 13 1578 1581 14 1638 1641 3 1626 1629 4 1626 1632 4 1626 1635 4 1620 1623 5 1614 1617 13 1608 1611 14 1662 1665 17 1662 1668 17 1656 1659 13 1650 1653 14 1710 1713 13 1701 1704 4 1701 1707 4 1692 1695 4 1692 1698 4 1683 1686 22 1683 1689 22 1728 1731 13 1728 1734 13 1722 1725 14 1755 1758 25 1755 1761 25 1749 1752 13 1743 1746 14 1830 1833 37 1824 1827 37 1818 1821 3 1809 1812 37 1803 1806 37 1791 1794 4 1791 1797 4 1785 1788 13 1779 1782 14 1854 1857 4 1854 1860 4 1854 1863 4 1848 1851 13 1842 1845 14 1899 1902 14 1899 1905 14 1884 1887 25 1884 1890 25 1878 1881 13 1872 1875 14 %FLAG BONDS_WITHOUT_HYDROGEN %FORMAT(10I8) 42 45 1 42 48 2 18 24 6 18 36 7 12 18 9 12 42 10 0 12 12 84 87 1 84 90 2 60 66 6 60 78 7 54 60 9 54 84 10 48 54 15 114 117 1 114 120 2 111 1671 16 102 111 18 96 102 19 96 114 10 90 96 15 144 147 1 144 150 2 141 1335 16 132 141 18 126 132 19 126 144 10 120 126 15 186 189 1 186 192 2 180 186 10 171 180 20 162 171 21 153 162 21 150 153 23 150 180 15 219 222 1 219 225 2 204 213 24 198 204 19 198 219 10 192 198 15 276 279 1 276 282 2 255 264 26 237 243 6 237 255 28 231 237 9 231 276 10 225 231 15 324 327 1 324 330 2 294 300 6 294 312 6 288 294 9 288 324 10 282 288 15 354 357 1 354 360 2 336 342 20 336 354 10 330 336 15 426 429 1 426 432 2 405 408 30 405 417 30 399 405 30 390 399 32 381 390 34 372 381 34 366 372 35 366 426 10 360 366 15 459 462 1 459 465 2 444 453 24 438 444 19 438 459 10 432 438 15 501 504 1 501 507 2 486 489 1 486 492 2 477 486 36 471 477 19 471 501 10 465 471 15 561 564 1 561 567 2 549 555 38 543 549 38 537 543 38 531 537 38 528 531 38 528 555 38 519 528 39 513 519 20 513 561 10 507 513 15 603 606 1 603 609 2 588 591 1 588 594 2 579 588 36 573 579 19 573 603 10 567 573 15 651 654 1 651 657 2 621 627 6 621 639 6 615 621 9 615 651 10 609 615 15 681 684 1 681 687 2 678 1107 16 669 678 18 663 669 19 663 681 10 657 663 15 753 756 1 753 759 2 732 735 30 732 744 30 726 732 30 717 726 32 708 717 34 699 708 34 693 699 35 693 753 10 687 693 15 810 813 1 810 816 2 780 786 6 780 798 6 771 780 28 765 771 19 765 810 10 759 765 15 852 855 1 852 858 2 846 852 10 837 846 20 828 837 21 819 828 21 816 819 23 816 846 15 873 876 1 873 879 2 864 873 10 858 864 15 915 918 1 915 921 2 891 897 6 891 909 7 885 891 9 885 915 10 879 885 15 948 951 1 948 954 2 933 942 24 927 933 19 927 948 10 921 927 15 993 996 1 993 999 2 984 987 40 984 990 40 975 984 41 966 975 42 960 966 19 960 993 10 954 960 15 1023 1026 1 1023 1029 2 1005 1011 20 1005 1023 10 999 1005 15 1080 1083 1 1080 1086 2 1059 1068 26 1041 1047 6 1041 1059 28 1035 1041 9 1035 1080 10 1029 1035 15 1110 1113 1 1110 1116 2 1098 1107 18 1092 1098 19 1092 1110 10 1086 1092 15 1140 1143 1 1140 1146 2 1122 1128 20 1122 1140 10 1116 1122 15 1182 1185 1 1182 1188 2 1158 1164 6 1158 1176 7 1152 1158 9 1152 1182 10 1146 1152 15 1245 1248 1 1245 1251 2 1233 1239 38 1224 1227 43 1224 1233 44 1218 1224 44 1212 1218 38 1209 1212 38 1209 1239 38 1200 1209 39 1194 1200 20 1194 1245 10 1188 1194 15 1287 1290 1 1287 1293 2 1263 1269 6 1263 1281 7 1257 1263 9 1257 1287 10 1251 1257 15 1308 1311 1 1308 1314 2 1299 1308 10 1293 1299 15 1338 1341 1 1338 1344 2 1326 1335 18 1320 1326 19 1320 1338 10 1314 1320 15 1395 1398 1 1395 1401 2 1374 1383 26 1356 1362 6 1356 1374 28 1350 1356 9 1350 1395 10 1344 1350 15 1452 1455 1 1452 1458 2 1431 1440 26 1413 1419 6 1413 1431 28 1407 1413 9 1407 1452 10 1401 1407 15 1509 1512 1 1509 1515 2 1488 1497 26 1470 1476 6 1470 1488 28 1464 1470 9 1464 1509 10 1458 1464 15 1551 1554 1 1551 1557 2 1545 1551 10 1536 1545 20 1527 1536 21 1518 1527 21 1515 1518 23 1515 1545 15 1572 1575 1 1572 1578 2 1563 1572 10 1557 1563 15 1602 1605 1 1602 1608 2 1584 1590 20 1584 1602 10 1578 1584 15 1644 1647 1 1644 1650 2 1620 1626 6 1620 1638 7 1614 1620 9 1614 1644 10 1608 1614 15 1674 1677 1 1674 1680 2 1662 1671 18 1656 1662 19 1656 1674 10 1650 1656 15 1716 1719 1 1716 1722 2 1710 1716 10 1701 1710 20 1692 1701 21 1683 1692 21 1680 1683 23 1680 1710 15 1737 1740 1 1737 1743 2 1728 1737 10 1722 1728 15 1773 1776 1 1773 1779 2 1764 1767 40 1764 1770 40 1755 1764 41 1749 1755 19 1749 1773 10 1743 1749 15 1836 1839 1 1836 1842 2 1824 1830 38 1815 1818 43 1815 1824 44 1809 1815 44 1803 1809 38 1800 1803 38 1800 1830 38 1791 1800 39 1785 1791 20 1785 1836 10 1779 1785 15 1866 1869 1 1866 1872 2 1848 1854 20 1848 1866 10 1842 1848 15 1908 1911 45 1908 1914 45 1893 1896 1 1893 1899 2 1884 1893 36 1878 1884 19 1878 1908 10 1872 1878 15 %FLAG ANGLES_INC_HYDROGEN %FORMAT(10I8) 42 48 51 2 30 24 33 4 27 24 30 4 27 24 33 4 21 18 24 6 21 18 36 7 18 24 27 9 18 24 30 9 18 24 33 9 18 36 39 10 15 12 18 11 15 12 42 12 12 18 21 13 9 0 12 18 6 0 9 19 6 0 12 18 3 0 6 19 3 0 9 19 3 0 12 18 0 12 15 20 84 90 93 2 72 66 75 4 69 66 72 4 69 66 75 4 63 60 66 6 63 60 78 7 60 66 69 9 60 66 72 9 60 66 75 9 60 78 81 10 57 54 60 23 57 54 84 24 54 60 63 13 51 48 54 25 48 54 57 26 114 120 123 2 108 102 111 30 105 102 108 31 105 102 111 30 99 96 102 33 99 96 114 24 96 102 105 34 96 102 108 34 93 90 96 25 90 96 99 26 138 132 141 30 135 132 138 31 135 132 141 30 129 126 132 33 129 126 144 24 126 132 135 34 126 132 138 34 123 120 126 25 120 126 129 26 186 192 195 2 183 180 186 24 177 171 180 38 174 171 177 4 174 171 180 38 171 180 183 39 168 162 171 41 165 162 168 4 165 162 171 41 162 171 174 41 162 171 177 41 159 153 162 43 156 153 159 44 156 153 162 43 153 162 165 41 153 162 168 41 150 153 156 47 150 153 159 47 150 180 183 26 219 225 228 2 210 204 213 50 207 204 210 31 207 204 213 50 204 213 216 51 201 198 204 33 201 198 219 24 198 204 207 34 198 204 210 34 195 192 198 25 192 198 201 26 276 282 285 2 270 264 273 4 267 264 270 4 267 264 273 4 261 255 264 53 258 255 261 54 258 255 264 53 255 264 267 55 255 264 270 55 255 264 273 55 249 243 252 4 246 243 249 4 246 243 252 4 240 237 243 57 240 237 255 58 237 243 246 9 237 243 249 9 237 243 252 9 237 255 258 59 237 255 261 59 234 231 237 23 234 231 276 24 231 237 240 61 228 225 231 25 225 231 234 26 324 330 333 2 318 312 321 4 315 312 318 4 315 312 321 4 306 300 309 4 303 300 306 4 303 300 309 4 297 294 300 57 297 294 312 57 294 300 303 9 294 300 306 9 294 300 309 9 294 312 315 9 294 312 318 9 294 312 321 9 291 288 294 23 291 288 324 24 288 294 297 61 285 282 288 25 282 288 291 26 354 360 363 2 348 342 351 4 345 342 348 4 345 342 351 4 339 336 342 39 339 336 354 24 336 342 345 38 336 342 348 38 336 342 351 38 333 330 336 25 330 336 339 26 426 432 435 2 420 417 423 64 411 408 414 64 405 408 411 66 405 408 414 66 405 417 420 66 405 417 423 66 402 399 405 66 396 390 399 67 393 390 396 68 393 390 399 67 390 399 402 69 387 381 390 71 384 381 387 72 384 381 390 71 381 390 393 73 381 390 396 73 378 372 381 71 375 372 378 72 375 372 381 71 372 381 384 71 372 381 387 71 369 366 372 77 369 366 426 24 366 372 375 78 366 372 378 78 363 360 366 25 360 366 369 26 459 465 468 2 450 444 453 50 447 444 450 31 447 444 453 50 444 453 456 51 441 438 444 33 441 438 459 24 438 444 447 34 438 444 450 34 435 432 438 25 432 438 441 26 501 507 510 2 495 492 498 81 486 492 495 2 486 492 498 2 483 477 486 82 480 477 483 54 480 477 486 82 474 471 477 33 474 471 501 24 471 477 480 85 471 477 483 85 468 465 471 25 465 471 474 26 561 567 570 2 552 549 555 87 549 555 558 87 546 543 549 87 543 549 552 87 540 537 543 87 537 543 546 87 534 531 537 87 531 537 540 87 528 531 534 87 528 555 558 87 525 519 528 89 522 519 525 4 522 519 528 89 516 513 519 39 516 513 561 24 513 519 522 38 513 519 525 38 510 507 513 25 507 513 516 26 603 609 612 2 597 594 600 81 588 594 597 2 588 594 600 2 585 579 588 82 582 579 585 54 582 579 588 82 576 573 579 33 576 573 603 24 573 579 582 85 573 579 585 85 570 567 573 25 567 573 576 26 651 657 660 2 645 639 648 4 642 639 645 4 642 639 648 4 633 627 636 4 630 627 633 4 630 627 636 4 624 621 627 57 624 621 639 57 621 627 630 9 621 627 633 9 621 627 636 9 621 639 642 9 621 639 645 9 621 639 648 9 618 615 621 23 618 615 651 24 615 621 624 61 612 609 615 25 609 615 618 26 681 687 690 2 675 669 678 30 672 669 675 31 672 669 678 30 666 663 669 33 666 663 681 24 663 669 672 34 663 669 675 34 660 657 663 25 657 663 666 26 753 759 762 2 747 744 750 64 738 735 741 64 732 735 738 66 732 735 741 66 732 744 747 66 732 744 750 66 729 726 732 66 723 717 726 67 720 717 723 68 720 717 726 67 717 726 729 69 714 708 717 71 711 708 714 72 711 708 717 71 708 717 720 73 708 717 723 73 705 699 708 71 702 699 705 72 702 699 708 71 699 708 711 71 699 708 714 71 696 693 699 77 696 693 753 24 693 699 702 78 693 699 705 78 690 687 693 25 687 693 696 26 804 798 807 4 801 798 804 4 801 798 807 4 792 786 795 4 789 786 792 4 789 786 795 4 783 780 786 57 783 780 798 57 780 786 789 9 780 786 792 9 780 786 795 9 780 798 801 9 780 798 804 9 780 798 807 9 777 771 780 59 774 771 777 54 774 771 780 59 771 780 783 58 768 765 771 33 768 765 810 24 765 771 774 85 765 771 777 85 762 759 765 25 759 765 768 26 852 858 861 2 849 846 852 24 843 837 846 38 840 837 843 4 840 837 846 38 837 846 849 39 834 828 837 41 831 828 834 4 831 828 837 41 828 837 840 41 828 837 843 41 825 819 828 43 822 819 825 44 822 819 828 43 819 828 831 41 819 828 834 41 816 819 822 47 816 819 825 47 816 846 849 26 873 879 882 2 870 864 873 24 867 864 870 93 867 864 873 24 861 858 864 25 858 864 867 26 858 864 870 26 915 921 924 2 903 897 906 4 900 897 903 4 900 897 906 4 894 891 897 6 894 891 909 7 891 897 900 9 891 897 903 9 891 897 906 9 891 909 912 10 888 885 891 23 888 885 915 24 885 891 894 13 882 879 885 25 879 885 888 26 948 954 957 2 939 933 942 50 936 933 939 31 936 933 942 50 933 942 945 51 930 927 933 33 930 927 948 24 927 933 936 34 927 933 939 34 924 921 927 25 921 927 930 26 993 999 1002 2 981 975 984 95 978 975 981 54 978 975 984 95 972 966 975 97 969 966 972 54 969 966 975 97 966 975 978 97 966 975 981 97 963 960 966 33 963 960 993 24 960 966 969 85 960 966 972 85 957 954 960 25 954 960 963 26 1023 1029 1032 2 1017 1011 1020 4 1014 1011 1017 4 1014 1011 1020 4 1008 1005 1011 39 1008 1005 1023 24 1005 1011 1014 38 1005 1011 1017 38 1005 1011 1020 38 1002 999 1005 25 999 1005 1008 26 1080 1086 1089 2 1074 1068 1077 4 1071 1068 1074 4 1071 1068 1077 4 1065 1059 1068 53 1062 1059 1065 54 1062 1059 1068 53 1059 1068 1071 55 1059 1068 1074 55 1059 1068 1077 55 1053 1047 1056 4 1050 1047 1053 4 1050 1047 1056 4 1044 1041 1047 57 1044 1041 1059 58 1041 1047 1050 9 1041 1047 1053 9 1041 1047 1056 9 1041 1059 1062 59 1041 1059 1065 59 1038 1035 1041 23 1038 1035 1080 24 1035 1041 1044 61 1032 1029 1035 25 1029 1035 1038 26 1110 1116 1119 2 1104 1098 1107 30 1101 1098 1104 31 1101 1098 1107 30 1095 1092 1098 33 1095 1092 1110 24 1092 1098 1101 34 1092 1098 1104 34 1089 1086 1092 25 1086 1092 1095 26 1140 1146 1149 2 1134 1128 1137 4 1131 1128 1134 4 1131 1128 1137 4 1125 1122 1128 39 1125 1122 1140 24 1122 1128 1131 38 1122 1128 1134 38 1122 1128 1137 38 1119 1116 1122 25 1116 1122 1125 26 1182 1188 1191 2 1170 1164 1173 4 1167 1164 1170 4 1167 1164 1173 4 1161 1158 1164 6 1161 1158 1176 7 1158 1164 1167 9 1158 1164 1170 9 1158 1164 1173 9 1158 1176 1179 10 1155 1152 1158 23 1155 1152 1182 24 1152 1158 1161 13 1149 1146 1152 25 1146 1152 1155 26 1245 1251 1254 2 1236 1233 1239 87 1233 1239 1242 87 1224 1227 1230 101 1224 1233 1236 102 1221 1218 1224 102 1215 1212 1218 87 1212 1218 1221 87 1209 1212 1215 87 1209 1239 1242 87 1206 1200 1209 89 1203 1200 1206 4 1203 1200 1209 89 1197 1194 1200 39 1197 1194 1245 24 1194 1200 1203 38 1194 1200 1206 38 1191 1188 1194 25 1188 1194 1197 26 1287 1293 1296 2 1275 1269 1278 4 1272 1269 1275 4 1272 1269 1278 4 1266 1263 1269 6 1266 1263 1281 7 1263 1269 1272 9 1263 1269 1275 9 1263 1269 1278 9 1263 1281 1284 10 1260 1257 1263 23 1260 1257 1287 24 1257 1263 1266 13 1254 1251 1257 25 1251 1257 1260 26 1308 1314 1317 2 1305 1299 1308 24 1302 1299 1305 93 1302 1299 1308 24 1296 1293 1299 25 1293 1299 1302 26 1293 1299 1305 26 1338 1344 1347 2 1332 1326 1335 30 1329 1326 1332 31 1329 1326 1335 30 1323 1320 1326 33 1323 1320 1338 24 1320 1326 1329 34 1320 1326 1332 34 1317 1314 1320 25 1314 1320 1323 26 1395 1401 1404 2 1389 1383 1392 4 1386 1383 1389 4 1386 1383 1392 4 1380 1374 1383 53 1377 1374 1380 54 1377 1374 1383 53 1374 1383 1386 55 1374 1383 1389 55 1374 1383 1392 55 1368 1362 1371 4 1365 1362 1368 4 1365 1362 1371 4 1359 1356 1362 57 1359 1356 1374 58 1356 1362 1365 9 1356 1362 1368 9 1356 1362 1371 9 1356 1374 1377 59 1356 1374 1380 59 1353 1350 1356 23 1353 1350 1395 24 1350 1356 1359 61 1347 1344 1350 25 1344 1350 1353 26 1452 1458 1461 2 1446 1440 1449 4 1443 1440 1446 4 1443 1440 1449 4 1437 1431 1440 53 1434 1431 1437 54 1434 1431 1440 53 1431 1440 1443 55 1431 1440 1446 55 1431 1440 1449 55 1425 1419 1428 4 1422 1419 1425 4 1422 1419 1428 4 1416 1413 1419 57 1416 1413 1431 58 1413 1419 1422 9 1413 1419 1425 9 1413 1419 1428 9 1413 1431 1434 59 1413 1431 1437 59 1410 1407 1413 23 1410 1407 1452 24 1407 1413 1416 61 1404 1401 1407 25 1401 1407 1410 26 1503 1497 1506 4 1500 1497 1503 4 1500 1497 1506 4 1494 1488 1497 53 1491 1488 1494 54 1491 1488 1497 53 1488 1497 1500 55 1488 1497 1503 55 1488 1497 1506 55 1482 1476 1485 4 1479 1476 1482 4 1479 1476 1485 4 1473 1470 1476 57 1473 1470 1488 58 1470 1476 1479 9 1470 1476 1482 9 1470 1476 1485 9 1470 1488 1491 59 1470 1488 1494 59 1467 1464 1470 23 1467 1464 1509 24 1464 1470 1473 61 1461 1458 1464 25 1458 1464 1467 26 1551 1557 1560 2 1548 1545 1551 24 1542 1536 1545 38 1539 1536 1542 4 1539 1536 1545 38 1536 1545 1548 39 1533 1527 1536 41 1530 1527 1533 4 1530 1527 1536 41 1527 1536 1539 41 1527 1536 1542 41 1524 1518 1527 43 1521 1518 1524 44 1521 1518 1527 43 1518 1527 1530 41 1518 1527 1533 41 1515 1518 1521 47 1515 1518 1524 47 1515 1545 1548 26 1572 1578 1581 2 1569 1563 1572 24 1566 1563 1569 93 1566 1563 1572 24 1560 1557 1563 25 1557 1563 1566 26 1557 1563 1569 26 1602 1608 1611 2 1596 1590 1599 4 1593 1590 1596 4 1593 1590 1599 4 1587 1584 1590 39 1587 1584 1602 24 1584 1590 1593 38 1584 1590 1596 38 1584 1590 1599 38 1581 1578 1584 25 1578 1584 1587 26 1644 1650 1653 2 1632 1626 1635 4 1629 1626 1632 4 1629 1626 1635 4 1623 1620 1626 6 1623 1620 1638 7 1620 1626 1629 9 1620 1626 1632 9 1620 1626 1635 9 1620 1638 1641 10 1617 1614 1620 23 1617 1614 1644 24 1614 1620 1623 13 1611 1608 1614 25 1608 1614 1617 26 1668 1662 1671 30 1665 1662 1668 31 1665 1662 1671 30 1659 1656 1662 33 1659 1656 1674 24 1656 1662 1665 34 1656 1662 1668 34 1653 1650 1656 25 1650 1656 1659 26 1716 1722 1725 2 1713 1710 1716 24 1707 1701 1710 38 1704 1701 1707 4 1704 1701 1710 38 1701 1710 1713 39 1698 1692 1701 41 1695 1692 1698 4 1695 1692 1701 41 1692 1701 1704 41 1692 1701 1707 41 1689 1683 1692 43 1686 1683 1689 44 1686 1683 1692 43 1683 1692 1695 41 1683 1692 1698 41 1680 1683 1686 47 1680 1683 1689 47 1680 1710 1713 26 1737 1743 1746 2 1734 1728 1737 24 1731 1728 1734 93 1731 1728 1737 24 1725 1722 1728 25 1722 1728 1731 26 1722 1728 1734 26 1773 1779 1782 2 1761 1755 1764 95 1758 1755 1761 54 1758 1755 1764 95 1752 1749 1755 33 1752 1749 1773 24 1749 1755 1758 85 1749 1755 1761 85 1746 1743 1749 25 1743 1749 1752 26 1836 1842 1845 2 1827 1824 1830 87 1824 1830 1833 87 1815 1818 1821 101 1815 1824 1827 102 1812 1809 1815 102 1806 1803 1809 87 1803 1809 1812 87 1800 1803 1806 87 1800 1830 1833 87 1797 1791 1800 89 1794 1791 1797 4 1794 1791 1800 89 1788 1785 1791 39 1788 1785 1836 24 1785 1791 1794 38 1785 1791 1797 38 1782 1779 1785 25 1779 1785 1788 26 1866 1872 1875 2 1860 1854 1863 4 1857 1854 1860 4 1857 1854 1863 4 1851 1848 1854 39 1851 1848 1866 24 1848 1854 1857 38 1848 1854 1860 38 1848 1854 1863 38 1845 1842 1848 25 1842 1848 1851 26 1902 1899 1905 81 1893 1899 1902 2 1893 1899 1905 2 1890 1884 1893 82 1887 1884 1890 54 1887 1884 1893 82 1881 1878 1884 33 1881 1878 1908 24 1878 1884 1887 85 1878 1884 1890 85 1875 1872 1878 25 1872 1878 1881 26 %FLAG ANGLES_WITHOUT_HYDROGEN %FORMAT(10I8) 45 42 48 1 42 48 54 3 24 18 36 5 18 12 42 8 12 18 24 14 12 18 36 15 12 42 45 16 12 42 48 17 0 12 18 21 0 12 42 22 87 84 90 1 84 90 96 3 66 60 78 5 60 54 84 8 54 60 66 14 54 60 78 15 54 84 87 16 54 84 90 17 48 54 60 27 48 54 84 28 117 114 120 1 114 120 126 3 111 1671 1662 29 102 96 114 32 102 111 1671 29 96 102 111 35 96 114 117 16 96 114 120 17 90 96 102 36 90 96 114 28 147 144 150 1 144 150 153 37 144 150 180 3 141 1335 1326 29 132 126 144 32 132 141 1335 29 126 132 141 35 126 144 147 16 126 144 150 17 120 126 132 36 120 126 144 28 189 186 192 1 186 192 198 3 180 186 189 16 180 186 192 17 171 180 186 40 162 171 180 42 153 150 180 45 153 162 171 46 150 153 162 48 150 180 171 49 150 180 186 28 222 219 225 1 219 225 231 3 204 198 219 32 198 204 213 52 198 219 222 16 198 219 225 17 192 198 204 36 192 198 219 28 279 276 282 1 276 282 288 3 243 237 255 56 237 231 276 8 237 255 264 60 231 237 243 14 231 237 255 62 231 276 279 16 231 276 282 17 225 231 237 27 225 231 276 28 327 324 330 1 324 330 336 3 300 294 312 63 294 288 324 8 288 294 300 14 288 294 312 14 288 324 327 16 288 324 330 17 282 288 294 27 282 288 324 28 357 354 360 1 354 360 366 3 342 336 354 40 336 354 357 16 336 354 360 17 330 336 342 49 330 336 354 28 429 426 432 1 426 432 438 3 408 405 417 65 399 405 408 65 399 405 417 65 390 399 405 70 381 390 399 74 372 366 426 75 372 381 390 76 366 372 381 79 366 426 429 16 366 426 432 17 360 366 372 80 360 366 426 28 462 459 465 1 459 465 471 3 444 438 459 32 438 444 453 52 438 459 462 16 438 459 465 17 432 438 444 36 432 438 459 28 504 501 507 1 501 507 513 3 489 486 492 1 477 471 501 32 477 486 489 83 477 486 492 84 471 477 486 86 471 501 504 16 471 501 507 17 465 471 477 36 465 471 501 28 564 561 567 1 561 567 573 3 543 549 555 88 537 543 549 88 531 528 555 88 531 537 543 88 528 531 537 88 528 555 549 88 519 513 561 40 519 528 531 90 519 528 555 90 513 519 528 91 513 561 564 16 513 561 567 17 507 513 519 49 507 513 561 28 606 603 609 1 603 609 615 3 591 588 594 1 579 573 603 32 579 588 591 83 579 588 594 84 573 579 588 86 573 603 606 16 573 603 609 17 567 573 579 36 567 573 603 28 654 651 657 1 651 657 663 3 627 621 639 63 621 615 651 8 615 621 627 14 615 621 639 14 615 651 654 16 615 651 657 17 609 615 621 27 609 615 651 28 684 681 687 1 681 687 693 3 678 1107 1098 29 669 663 681 32 669 678 1107 29 663 669 678 35 663 681 684 16 663 681 687 17 657 663 669 36 657 663 681 28 756 753 759 1 753 759 765 3 735 732 744 65 726 732 735 65 726 732 744 65 717 726 732 70 708 717 726 74 699 693 753 75 699 708 717 76 693 699 708 79 693 753 756 16 693 753 759 17 687 693 699 80 687 693 753 28 813 810 816 1 810 816 819 37 810 816 846 3 786 780 798 63 771 765 810 32 771 780 786 56 771 780 798 56 765 771 780 92 765 810 813 16 765 810 816 17 759 765 771 36 759 765 810 28 855 852 858 1 852 858 864 3 846 852 855 16 846 852 858 17 837 846 852 40 828 837 846 42 819 816 846 45 819 828 837 46 816 819 828 48 816 846 837 49 816 846 852 28 876 873 879 1 873 879 885 3 864 873 876 16 864 873 879 17 858 864 873 28 918 915 921 1 915 921 927 3 897 891 909 5 891 885 915 8 885 891 897 14 885 891 909 15 885 915 918 16 885 915 921 17 879 885 891 27 879 885 915 28 951 948 954 1 948 954 960 3 933 927 948 32 927 933 942 52 927 948 951 16 927 948 954 17 921 927 933 36 921 927 948 28 996 993 999 1 993 999 1005 3 987 984 990 94 975 984 987 96 975 984 990 96 966 960 993 32 966 975 984 98 960 966 975 99 960 993 996 16 960 993 999 17 954 960 966 36 954 960 993 28 1026 1023 1029 1 1023 1029 1035 3 1011 1005 1023 40 1005 1023 1026 16 1005 1023 1029 17 999 1005 1011 49 999 1005 1023 28 1083 1080 1086 1 1080 1086 1092 3 1047 1041 1059 56 1041 1035 1080 8 1041 1059 1068 60 1035 1041 1047 14 1035 1041 1059 62 1035 1080 1083 16 1035 1080 1086 17 1029 1035 1041 27 1029 1035 1080 28 1113 1110 1116 1 1110 1116 1122 3 1098 1092 1110 32 1092 1098 1107 35 1092 1110 1113 16 1092 1110 1116 17 1086 1092 1098 36 1086 1092 1110 28 1143 1140 1146 1 1140 1146 1152 3 1128 1122 1140 40 1122 1140 1143 16 1122 1140 1146 17 1116 1122 1128 49 1116 1122 1140 28 1185 1182 1188 1 1182 1188 1194 3 1164 1158 1176 5 1158 1152 1182 8 1152 1158 1164 14 1152 1158 1176 15 1152 1182 1185 16 1152 1182 1188 17 1146 1152 1158 27 1146 1152 1182 28 1248 1245 1251 1 1245 1251 1257 3 1227 1224 1233 100 1224 1233 1239 103 1218 1224 1227 100 1218 1224 1233 104 1212 1209 1239 88 1212 1218 1224 103 1209 1212 1218 88 1209 1239 1233 88 1200 1194 1245 40 1200 1209 1212 90 1200 1209 1239 90 1194 1200 1209 91 1194 1245 1248 16 1194 1245 1251 17 1188 1194 1200 49 1188 1194 1245 28 1290 1287 1293 1 1287 1293 1299 3 1269 1263 1281 5 1263 1257 1287 8 1257 1263 1269 14 1257 1263 1281 15 1257 1287 1290 16 1257 1287 1293 17 1251 1257 1263 27 1251 1257 1287 28 1311 1308 1314 1 1308 1314 1320 3 1299 1308 1311 16 1299 1308 1314 17 1293 1299 1308 28 1341 1338 1344 1 1338 1344 1350 3 1326 1320 1338 32 1320 1326 1335 35 1320 1338 1341 16 1320 1338 1344 17 1314 1320 1326 36 1314 1320 1338 28 1398 1395 1401 1 1395 1401 1407 3 1362 1356 1374 56 1356 1350 1395 8 1356 1374 1383 60 1350 1356 1362 14 1350 1356 1374 62 1350 1395 1398 16 1350 1395 1401 17 1344 1350 1356 27 1344 1350 1395 28 1455 1452 1458 1 1452 1458 1464 3 1419 1413 1431 56 1413 1407 1452 8 1413 1431 1440 60 1407 1413 1419 14 1407 1413 1431 62 1407 1452 1455 16 1407 1452 1458 17 1401 1407 1413 27 1401 1407 1452 28 1512 1509 1515 1 1509 1515 1518 37 1509 1515 1545 3 1476 1470 1488 56 1470 1464 1509 8 1470 1488 1497 60 1464 1470 1476 14 1464 1470 1488 62 1464 1509 1512 16 1464 1509 1515 17 1458 1464 1470 27 1458 1464 1509 28 1554 1551 1557 1 1551 1557 1563 3 1545 1551 1554 16 1545 1551 1557 17 1536 1545 1551 40 1527 1536 1545 42 1518 1515 1545 45 1518 1527 1536 46 1515 1518 1527 48 1515 1545 1536 49 1515 1545 1551 28 1575 1572 1578 1 1572 1578 1584 3 1563 1572 1575 16 1563 1572 1578 17 1557 1563 1572 28 1605 1602 1608 1 1602 1608 1614 3 1590 1584 1602 40 1584 1602 1605 16 1584 1602 1608 17 1578 1584 1590 49 1578 1584 1602 28 1647 1644 1650 1 1644 1650 1656 3 1626 1620 1638 5 1620 1614 1644 8 1614 1620 1626 14 1614 1620 1638 15 1614 1644 1647 16 1614 1644 1650 17 1608 1614 1620 27 1608 1614 1644 28 1677 1674 1680 1 1674 1680 1683 37 1674 1680 1710 3 1662 1656 1674 32 1656 1662 1671 35 1656 1674 1677 16 1656 1674 1680 17 1650 1656 1662 36 1650 1656 1674 28 1719 1716 1722 1 1716 1722 1728 3 1710 1716 1719 16 1710 1716 1722 17 1701 1710 1716 40 1692 1701 1710 42 1683 1680 1710 45 1683 1692 1701 46 1680 1683 1692 48 1680 1710 1701 49 1680 1710 1716 28 1740 1737 1743 1 1737 1743 1749 3 1728 1737 1740 16 1728 1737 1743 17 1722 1728 1737 28 1776 1773 1779 1 1773 1779 1785 3 1767 1764 1770 94 1755 1749 1773 32 1755 1764 1767 96 1755 1764 1770 96 1749 1755 1764 105 1749 1773 1776 16 1749 1773 1779 17 1743 1749 1755 36 1743 1749 1773 28 1839 1836 1842 1 1836 1842 1848 3 1818 1815 1824 100 1815 1824 1830 103 1809 1815 1818 100 1809 1815 1824 104 1803 1800 1830 88 1803 1809 1815 103 1800 1803 1809 88 1800 1830 1824 88 1791 1785 1836 40 1791 1800 1803 90 1791 1800 1830 90 1785 1791 1800 91 1785 1836 1839 16 1785 1836 1842 17 1779 1785 1791 49 1779 1785 1836 28 1869 1866 1872 1 1866 1872 1878 3 1854 1848 1866 40 1848 1866 1869 16 1848 1866 1872 17 1842 1848 1854 49 1842 1848 1866 28 1911 1908 1914 106 1896 1893 1899 1 1884 1878 1908 32 1884 1893 1896 83 1884 1893 1899 84 1878 1884 1893 86 1878 1908 1911 107 1878 1908 1914 107 1872 1878 1884 36 1872 1878 1908 28 %FLAG DIHEDRALS_INC_HYDROGEN %FORMAT(10I8) 45 42 48 51 1 45 42 -48 51 2 42 48 54 57 3 33 24 18 36 14 33 24 -18 36 15 30 24 18 36 14 30 24 -18 36 15 27 24 18 36 14 27 24 -18 36 15 24 18 36 39 20 24 18 -36 39 21 24 18 -36 39 22 24 18 -36 39 23 21 18 12 42 24 21 18 24 27 24 21 18 24 30 24 21 18 24 33 24 21 18 36 39 25 15 12 18 21 24 15 12 18 24 24 15 12 18 36 24 15 12 42 45 3 15 12 42 48 3 12 18 24 27 29 12 18 24 30 29 12 18 24 33 29 12 18 36 39 30 12 18 -36 39 31 12 18 -36 39 22 12 18 -36 39 32 12 42 48 51 2 9 0 12 15 24 9 0 12 18 24 9 0 12 42 24 6 0 12 15 24 6 0 12 18 24 6 0 12 42 24 3 0 12 15 24 3 0 12 18 24 3 0 12 42 24 0 12 18 21 24 87 84 90 93 1 87 84 -90 93 2 84 90 96 99 3 75 66 60 78 14 75 66 -60 78 15 72 66 60 78 14 72 66 -60 78 15 69 66 60 78 14 69 66 -60 78 15 66 60 78 81 20 66 60 -78 81 21 66 60 -78 81 22 66 60 -78 81 23 63 60 54 84 24 63 60 66 69 24 63 60 66 72 24 63 60 66 75 24 63 60 78 81 25 57 54 60 63 24 57 54 60 66 24 57 54 60 78 14 57 54 -60 78 15 57 54 84 87 39 57 54 -84 87 3 57 54 -84 87 40 57 54 84 90 3 54 60 66 69 29 54 60 66 72 29 54 60 66 75 29 54 60 78 81 30 54 60 -78 81 31 54 60 -78 81 22 54 60 -78 81 32 54 84 90 93 2 51 48 54 57 3 51 48 54 60 3 51 48 54 84 3 48 54 60 63 24 117 114 120 123 1 117 114 -120 123 2 114 120 126 129 3 111 1671 1662 1665 52 111 1671 1662 1668 52 108 102 96 114 24 108 102 111 1671 52 105 102 96 114 24 105 102 111 1671 52 99 96 102 105 24 99 96 102 108 24 99 96 102 111 24 99 96 114 117 39 99 96 -114 117 3 99 96 -114 117 40 99 96 114 120 3 96 114 120 123 2 93 90 96 99 3 93 90 96 102 3 93 90 96 114 3 90 96 102 105 24 90 96 102 108 24 144 150 153 156 3 144 150 153 159 3 144 150 180 183 3 141 1335 1326 1329 52 141 1335 1326 1332 52 138 132 126 144 24 138 132 141 1335 52 135 132 126 144 24 135 132 141 1335 52 129 126 132 135 24 129 126 132 138 24 129 126 132 141 24 129 126 144 147 39 129 126 -144 147 3 129 126 -144 147 40 129 126 144 150 3 123 120 126 129 3 123 120 126 132 3 123 120 126 144 3 120 126 132 135 24 120 126 132 138 24 189 186 192 195 1 189 186 -192 195 2 186 192 198 201 3 183 180 186 189 39 183 180 -186 189 3 183 180 -186 189 40 183 180 186 192 3 180 186 192 195 2 177 171 180 183 24 177 171 180 186 24 174 171 180 183 24 174 171 180 186 24 168 162 171 174 61 168 162 171 177 61 168 162 171 180 29 165 162 171 174 61 165 162 171 177 61 165 162 171 180 29 162 171 180 183 24 159 153 150 180 3 159 153 162 165 24 159 153 162 168 24 159 153 162 171 24 156 153 150 180 3 156 153 162 165 24 156 153 162 168 24 156 153 162 171 24 153 150 180 183 3 153 162 171 174 29 153 162 171 177 29 150 153 162 165 24 150 153 162 168 24 150 180 171 174 24 150 180 171 177 24 222 219 225 228 1 222 219 -225 228 2 219 225 231 234 3 210 204 198 219 24 210 204 213 216 25 207 204 198 219 24 207 204 213 216 25 201 198 204 207 24 201 198 204 210 24 201 198 204 213 14 201 198 -204 213 15 201 198 219 222 39 201 198 -219 222 3 201 198 -219 222 40 201 198 219 225 3 198 204 213 216 69 198 204 -213 216 70 198 204 -213 216 71 198 204 -213 216 72 198 219 225 228 2 195 192 198 201 3 195 192 198 204 3 195 192 198 219 3 192 198 204 207 24 192 198 204 210 24 279 276 282 285 1 279 276 -282 285 2 276 282 288 291 3 261 255 264 267 61 261 255 264 270 61 261 255 264 273 61 258 255 264 267 61 258 255 264 270 61 258 255 264 273 61 252 243 237 255 29 249 243 237 255 29 246 243 237 255 29 243 237 255 258 29 243 237 255 261 29 240 237 231 276 24 240 237 243 246 61 240 237 243 249 61 240 237 243 252 61 240 237 255 258 61 240 237 255 261 61 240 237 255 264 29 237 255 264 267 29 237 255 264 270 29 237 255 264 273 29 234 231 237 240 24 234 231 237 243 24 234 231 237 255 24 234 231 276 279 39 234 231 -276 279 3 234 231 -276 279 40 234 231 276 282 3 231 237 243 246 29 231 237 243 249 29 231 237 243 252 29 231 237 255 258 29 231 237 255 261 29 231 276 282 285 2 228 225 231 234 3 228 225 231 237 3 228 225 231 276 3 225 231 237 240 24 327 324 330 333 1 327 324 -330 333 2 324 330 336 339 3 309 300 294 312 29 306 300 294 312 29 303 300 294 312 29 300 294 312 315 29 300 294 312 318 29 300 294 312 321 29 297 294 288 324 24 297 294 300 303 61 297 294 300 306 61 297 294 300 309 61 297 294 312 315 61 297 294 312 318 61 297 294 312 321 61 291 288 294 297 24 291 288 294 300 24 291 288 294 312 24 291 288 324 327 39 291 288 -324 327 3 291 288 -324 327 40 291 288 324 330 3 288 294 300 303 29 288 294 300 306 29 288 294 300 309 29 288 294 312 315 29 288 294 312 318 29 288 294 312 321 29 288 324 330 333 2 285 282 288 291 3 285 282 288 294 3 285 282 288 324 3 282 288 294 297 24 357 354 360 363 1 357 354 -360 363 2 354 360 366 369 3 351 342 336 354 24 348 342 336 354 24 345 342 336 354 24 339 336 342 345 24 339 336 342 348 24 339 336 342 351 24 339 336 354 357 39 339 336 -354 357 3 339 336 -354 357 40 339 336 354 360 3 336 354 360 363 2 333 330 336 339 3 333 330 336 342 3 333 330 336 354 3 330 336 342 345 24 330 336 342 348 24 330 336 342 351 24 429 426 432 435 1 429 426 -432 435 2 426 432 438 441 3 414 408 405 417 90 414 408 -405 417 6 411 408 405 417 90 411 408 -405 417 6 408 405 417 420 90 408 405 -417 420 6 408 405 417 423 90 408 405 -417 423 6 402 399 405 408 90 402 399 -405 408 6 402 399 405 417 90 402 399 -405 417 6 399 405 408 411 90 399 405 -408 411 6 399 405 408 414 90 399 405 -408 414 6 399 405 417 420 90 399 405 -417 420 6 399 405 417 423 90 399 405 -417 423 6 396 390 399 402 15 396 390 399 405 15 393 390 399 402 15 393 390 399 405 15 387 381 390 393 24 387 381 390 396 24 387 381 390 399 24 384 381 390 393 24 384 381 390 396 24 384 381 390 399 24 381 390 399 402 15 378 372 366 426 24 378 372 381 384 61 378 372 381 387 61 378 372 381 390 29 375 372 366 426 24 375 372 381 384 61 375 372 381 387 61 375 372 381 390 29 372 381 390 393 24 372 381 390 396 24 369 366 372 375 24 369 366 372 378 24 369 366 372 381 24 369 366 426 429 39 369 366 -426 429 3 369 366 -426 429 40 369 366 426 432 3 366 372 381 384 29 366 372 381 387 29 366 426 432 435 2 363 360 366 369 3 363 360 366 372 3 363 360 366 426 3 360 366 372 375 24 360 366 372 378 24 462 459 465 468 1 462 459 -465 468 2 459 465 471 474 3 450 444 438 459 24 450 444 453 456 25 447 444 438 459 24 447 444 453 456 25 441 438 444 447 24 441 438 444 450 24 441 438 444 453 14 441 438 -444 453 15 441 438 459 462 39 441 438 -459 462 3 441 438 -459 462 40 441 438 459 465 3 438 444 453 456 69 438 444 -453 456 70 438 444 -453 456 71 438 444 -453 456 72 438 459 465 468 2 435 432 438 441 3 435 432 438 444 3 435 432 438 459 3 432 438 444 447 24 432 438 444 450 24 504 501 507 510 1 504 501 -507 510 2 501 507 513 516 3 489 486 492 495 1 489 486 -492 495 2 489 486 492 498 1 489 486 -492 498 2 483 477 471 501 24 483 477 486 489 39 483 477 -486 489 3 483 477 -486 489 40 483 477 486 492 3 480 477 471 501 24 480 477 486 489 39 480 477 -486 489 3 480 477 -486 489 40 480 477 486 492 3 477 486 492 495 2 477 486 492 498 2 474 471 477 480 24 474 471 477 483 24 474 471 477 486 24 474 471 501 504 39 474 471 -501 504 3 474 471 -501 504 40 474 471 501 507 3 471 501 507 510 2 468 465 471 474 3 468 465 471 477 3 468 465 471 501 3 465 471 477 480 24 465 471 477 483 24 564 561 567 570 1 564 561 -567 570 2 561 567 573 576 3 552 549 555 558 102 546 543 549 552 102 546 543 549 555 102 543 549 555 558 102 540 537 543 546 102 540 537 543 549 102 537 543 549 552 102 534 531 528 555 102 534 531 537 540 102 534 531 537 543 102 531 528 555 558 102 531 537 543 546 102 528 531 537 540 102 528 555 549 552 102 525 519 513 561 24 525 519 528 531 3 525 519 528 555 3 522 519 513 561 24 522 519 528 531 3 522 519 528 555 3 519 528 531 534 102 519 528 555 558 102 516 513 519 522 24 516 513 519 525 24 516 513 519 528 24 516 513 561 564 39 516 513 -561 564 3 516 513 -561 564 40 516 513 561 567 3 513 561 567 570 2 510 507 513 516 3 510 507 513 519 3 510 507 513 561 3 507 513 519 522 24 507 513 519 525 24 606 603 609 612 1 606 603 -609 612 2 603 609 615 618 3 591 588 594 597 1 591 588 -594 597 2 591 588 594 600 1 591 588 -594 600 2 585 579 573 603 24 585 579 588 591 39 585 579 -588 591 3 585 579 -588 591 40 585 579 588 594 3 582 579 573 603 24 582 579 588 591 39 582 579 -588 591 3 582 579 -588 591 40 582 579 588 594 3 579 588 594 597 2 579 588 594 600 2 576 573 579 582 24 576 573 579 585 24 576 573 579 588 24 576 573 603 606 39 576 573 -603 606 3 576 573 -603 606 40 576 573 603 609 3 573 603 609 612 2 570 567 573 576 3 570 567 573 579 3 570 567 573 603 3 567 573 579 582 24 567 573 579 585 24 654 651 657 660 1 654 651 -657 660 2 651 657 663 666 3 636 627 621 639 29 633 627 621 639 29 630 627 621 639 29 627 621 639 642 29 627 621 639 645 29 627 621 639 648 29 624 621 615 651 24 624 621 627 630 61 624 621 627 633 61 624 621 627 636 61 624 621 639 642 61 624 621 639 645 61 624 621 639 648 61 618 615 621 624 24 618 615 621 627 24 618 615 621 639 24 618 615 651 654 39 618 615 -651 654 3 618 615 -651 654 40 618 615 651 657 3 615 621 627 630 29 615 621 627 633 29 615 621 627 636 29 615 621 639 642 29 615 621 639 645 29 615 621 639 648 29 615 651 657 660 2 612 609 615 618 3 612 609 615 621 3 612 609 615 651 3 609 615 621 624 24 684 681 687 690 1 684 681 -687 690 2 681 687 693 696 3 678 1107 1098 1101 52 678 1107 1098 1104 52 675 669 663 681 24 675 669 678 1107 52 672 669 663 681 24 672 669 678 1107 52 666 663 669 672 24 666 663 669 675 24 666 663 669 678 24 666 663 681 684 39 666 663 -681 684 3 666 663 -681 684 40 666 663 681 687 3 663 681 687 690 2 660 657 663 666 3 660 657 663 669 3 660 657 663 681 3 657 663 669 672 24 657 663 669 675 24 756 753 759 762 1 756 753 -759 762 2 753 759 765 768 3 741 735 732 744 90 741 735 -732 744 6 738 735 732 744 90 738 735 -732 744 6 735 732 744 747 90 735 732 -744 747 6 735 732 744 750 90 735 732 -744 750 6 729 726 732 735 90 729 726 -732 735 6 729 726 732 744 90 729 726 -732 744 6 726 732 735 738 90 726 732 -735 738 6 726 732 735 741 90 726 732 -735 741 6 726 732 744 747 90 726 732 -744 747 6 726 732 744 750 90 726 732 -744 750 6 723 717 726 729 15 723 717 726 732 15 720 717 726 729 15 720 717 726 732 15 714 708 717 720 24 714 708 717 723 24 714 708 717 726 24 711 708 717 720 24 711 708 717 723 24 711 708 717 726 24 708 717 726 729 15 705 699 693 753 24 705 699 708 711 61 705 699 708 714 61 705 699 708 717 29 702 699 693 753 24 702 699 708 711 61 702 699 708 714 61 702 699 708 717 29 699 708 717 720 24 699 708 717 723 24 696 693 699 702 24 696 693 699 705 24 696 693 699 708 24 696 693 753 756 39 696 693 -753 756 3 696 693 -753 756 40 696 693 753 759 3 693 699 708 711 29 693 699 708 714 29 693 753 759 762 2 690 687 693 696 3 690 687 693 699 3 690 687 693 753 3 687 693 699 702 24 687 693 699 705 24 810 816 819 822 3 810 816 819 825 3 810 816 846 849 3 795 786 780 798 29 792 786 780 798 29 789 786 780 798 29 786 780 798 801 29 786 780 798 804 29 786 780 798 807 29 783 780 786 789 61 783 780 786 792 61 783 780 786 795 61 783 780 798 801 61 783 780 798 804 61 783 780 798 807 61 777 771 765 810 24 777 771 780 783 61 777 771 780 786 29 777 771 780 798 29 774 771 765 810 24 774 771 780 783 61 774 771 780 786 29 774 771 780 798 29 771 780 786 789 29 771 780 786 792 29 771 780 786 795 29 771 780 798 801 29 771 780 798 804 29 771 780 798 807 29 768 765 771 774 24 768 765 771 777 24 768 765 771 780 24 768 765 810 813 39 768 765 -810 813 3 768 765 -810 813 40 768 765 810 816 3 765 771 780 783 29 762 759 765 768 3 762 759 765 771 3 762 759 765 810 3 759 765 771 774 24 759 765 771 777 24 855 852 858 861 1 855 852 -858 861 2 852 858 864 867 3 852 858 864 870 3 849 846 852 855 39 849 846 -852 855 3 849 846 -852 855 40 849 846 852 858 3 846 852 858 861 2 843 837 846 849 24 843 837 846 852 24 840 837 846 849 24 840 837 846 852 24 834 828 837 840 61 834 828 837 843 61 834 828 837 846 29 831 828 837 840 61 831 828 837 843 61 831 828 837 846 29 828 837 846 849 24 825 819 816 846 3 825 819 828 831 24 825 819 828 834 24 825 819 828 837 24 822 819 816 846 3 822 819 828 831 24 822 819 828 834 24 822 819 828 837 24 819 816 846 849 3 819 828 837 840 29 819 828 837 843 29 816 819 828 831 24 816 819 828 834 24 816 846 837 840 24 816 846 837 843 24 876 873 879 882 1 876 873 -879 882 2 873 879 885 888 3 870 864 873 876 39 870 864 -873 876 3 870 864 -873 876 40 870 864 873 879 3 867 864 873 876 39 867 864 -873 876 3 867 864 -873 876 40 867 864 873 879 3 864 873 879 882 2 861 858 864 867 3 861 858 864 870 3 861 858 864 873 3 918 915 921 924 1 918 915 -921 924 2 915 921 927 930 3 906 897 891 909 14 906 897 -891 909 15 903 897 891 909 14 903 897 -891 909 15 900 897 891 909 14 900 897 -891 909 15 897 891 909 912 20 897 891 -909 912 21 897 891 -909 912 22 897 891 -909 912 23 894 891 885 915 24 894 891 897 900 24 894 891 897 903 24 894 891 897 906 24 894 891 909 912 25 888 885 891 894 24 888 885 891 897 24 888 885 891 909 14 888 885 -891 909 15 888 885 915 918 39 888 885 -915 918 3 888 885 -915 918 40 888 885 915 921 3 885 891 897 900 29 885 891 897 903 29 885 891 897 906 29 885 891 909 912 30 885 891 -909 912 31 885 891 -909 912 22 885 891 -909 912 32 885 915 921 924 2 882 879 885 888 3 882 879 885 891 3 882 879 885 915 3 879 885 891 894 24 951 948 954 957 1 951 948 -954 957 2 948 954 960 963 3 939 933 927 948 24 939 933 942 945 25 936 933 927 948 24 936 933 942 945 25 930 927 933 936 24 930 927 933 939 24 930 927 933 942 14 930 927 -933 942 15 930 927 948 951 39 930 927 -948 951 3 930 927 -948 951 40 930 927 948 954 3 927 933 942 945 69 927 933 -942 945 70 927 933 -942 945 71 927 933 -942 945 72 927 948 954 957 2 924 921 927 930 3 924 921 927 933 3 924 921 927 948 3 921 927 933 936 24 921 927 933 939 24 996 993 999 1002 1 996 993 -999 1002 2 993 999 1005 1008 3 981 975 984 987 3 981 975 984 990 3 978 975 984 987 3 978 975 984 990 3 972 966 960 993 24 972 966 975 978 61 972 966 975 981 61 972 966 975 984 24 969 966 960 993 24 969 966 975 978 61 969 966 975 981 61 969 966 975 984 24 963 960 966 969 24 963 960 966 972 24 963 960 966 975 24 963 960 993 996 39 963 960 -993 996 3 963 960 -993 996 40 963 960 993 999 3 960 966 975 978 29 960 966 975 981 29 960 993 999 1002 2 957 954 960 963 3 957 954 960 966 3 957 954 960 993 3 954 960 966 969 24 954 960 966 972 24 1026 1023 1029 1032 1 1026 1023 -1029 1032 2 1023 1029 1035 1038 3 1020 1011 1005 1023 24 1017 1011 1005 1023 24 1014 1011 1005 1023 24 1008 1005 1011 1014 24 1008 1005 1011 1017 24 1008 1005 1011 1020 24 1008 1005 1023 1026 39 1008 1005 -1023 1026 3 1008 1005 -1023 1026 40 1008 1005 1023 1029 3 1005 1023 1029 1032 2 1002 999 1005 1008 3 1002 999 1005 1011 3 1002 999 1005 1023 3 999 1005 1011 1014 24 999 1005 1011 1017 24 999 1005 1011 1020 24 1083 1080 1086 1089 1 1083 1080 -1086 1089 2 1080 1086 1092 1095 3 1065 1059 1068 1071 61 1065 1059 1068 1074 61 1065 1059 1068 1077 61 1062 1059 1068 1071 61 1062 1059 1068 1074 61 1062 1059 1068 1077 61 1056 1047 1041 1059 29 1053 1047 1041 1059 29 1050 1047 1041 1059 29 1047 1041 1059 1062 29 1047 1041 1059 1065 29 1044 1041 1035 1080 24 1044 1041 1047 1050 61 1044 1041 1047 1053 61 1044 1041 1047 1056 61 1044 1041 1059 1062 61 1044 1041 1059 1065 61 1044 1041 1059 1068 29 1041 1059 1068 1071 29 1041 1059 1068 1074 29 1041 1059 1068 1077 29 1038 1035 1041 1044 24 1038 1035 1041 1047 24 1038 1035 1041 1059 24 1038 1035 1080 1083 39 1038 1035 -1080 1083 3 1038 1035 -1080 1083 40 1038 1035 1080 1086 3 1035 1041 1047 1050 29 1035 1041 1047 1053 29 1035 1041 1047 1056 29 1035 1041 1059 1062 29 1035 1041 1059 1065 29 1035 1080 1086 1089 2 1032 1029 1035 1038 3 1032 1029 1035 1041 3 1032 1029 1035 1080 3 1029 1035 1041 1044 24 1113 1110 1116 1119 1 1113 1110 -1116 1119 2 1110 1116 1122 1125 3 1104 1098 1092 1110 24 1101 1098 1092 1110 24 1095 1092 1098 1101 24 1095 1092 1098 1104 24 1095 1092 1098 1107 24 1095 1092 1110 1113 39 1095 1092 -1110 1113 3 1095 1092 -1110 1113 40 1095 1092 1110 1116 3 1092 1110 1116 1119 2 1089 1086 1092 1095 3 1089 1086 1092 1098 3 1089 1086 1092 1110 3 1086 1092 1098 1101 24 1086 1092 1098 1104 24 1143 1140 1146 1149 1 1143 1140 -1146 1149 2 1140 1146 1152 1155 3 1137 1128 1122 1140 24 1134 1128 1122 1140 24 1131 1128 1122 1140 24 1125 1122 1128 1131 24 1125 1122 1128 1134 24 1125 1122 1128 1137 24 1125 1122 1140 1143 39 1125 1122 -1140 1143 3 1125 1122 -1140 1143 40 1125 1122 1140 1146 3 1122 1140 1146 1149 2 1119 1116 1122 1125 3 1119 1116 1122 1128 3 1119 1116 1122 1140 3 1116 1122 1128 1131 24 1116 1122 1128 1134 24 1116 1122 1128 1137 24 1185 1182 1188 1191 1 1185 1182 -1188 1191 2 1182 1188 1194 1197 3 1173 1164 1158 1176 14 1173 1164 -1158 1176 15 1170 1164 1158 1176 14 1170 1164 -1158 1176 15 1167 1164 1158 1176 14 1167 1164 -1158 1176 15 1164 1158 1176 1179 20 1164 1158 -1176 1179 21 1164 1158 -1176 1179 22 1164 1158 -1176 1179 23 1161 1158 1152 1182 24 1161 1158 1164 1167 24 1161 1158 1164 1170 24 1161 1158 1164 1173 24 1161 1158 1176 1179 25 1155 1152 1158 1161 24 1155 1152 1158 1164 24 1155 1152 1158 1176 14 1155 1152 -1158 1176 15 1155 1152 1182 1185 39 1155 1152 -1182 1185 3 1155 1152 -1182 1185 40 1155 1152 1182 1188 3 1152 1158 1164 1167 29 1152 1158 1164 1170 29 1152 1158 1164 1173 29 1152 1158 1176 1179 30 1152 1158 -1176 1179 31 1152 1158 -1176 1179 22 1152 1158 -1176 1179 32 1152 1182 1188 1191 2 1149 1146 1152 1155 3 1149 1146 1152 1158 3 1149 1146 1152 1182 3 1146 1152 1158 1161 24 1248 1245 1251 1254 1 1248 1245 -1251 1254 2 1245 1251 1257 1260 3 1236 1233 1239 1242 102 1230 1227 1224 1233 7 1230 1227 -1224 1233 134 1230 1227 -1224 1233 15 1230 1227 -1224 1233 135 1227 1224 1233 1236 102 1224 1233 1239 1242 102 1221 1218 1224 1227 102 1221 1218 1224 1233 102 1218 1224 1227 1230 7 1218 1224 -1227 1230 134 1218 1224 -1227 1230 15 1218 1224 -1227 1230 135 1218 1224 1233 1236 102 1215 1212 1209 1239 102 1215 1212 1218 1221 102 1215 1212 1218 1224 102 1212 1209 1239 1242 102 1209 1212 1218 1221 102 1209 1239 1233 1236 102 1206 1200 1194 1245 24 1206 1200 1209 1212 3 1206 1200 1209 1239 3 1203 1200 1194 1245 24 1203 1200 1209 1212 3 1203 1200 1209 1239 3 1200 1209 1212 1215 102 1200 1209 1239 1242 102 1197 1194 1200 1203 24 1197 1194 1200 1206 24 1197 1194 1200 1209 24 1197 1194 1245 1248 39 1197 1194 -1245 1248 3 1197 1194 -1245 1248 40 1197 1194 1245 1251 3 1194 1245 1251 1254 2 1191 1188 1194 1197 3 1191 1188 1194 1200 3 1191 1188 1194 1245 3 1188 1194 1200 1203 24 1188 1194 1200 1206 24 1290 1287 1293 1296 1 1290 1287 -1293 1296 2 1287 1293 1299 1302 3 1287 1293 1299 1305 3 1278 1269 1263 1281 14 1278 1269 -1263 1281 15 1275 1269 1263 1281 14 1275 1269 -1263 1281 15 1272 1269 1263 1281 14 1272 1269 -1263 1281 15 1269 1263 1281 1284 20 1269 1263 -1281 1284 21 1269 1263 -1281 1284 22 1269 1263 -1281 1284 23 1266 1263 1257 1287 24 1266 1263 1269 1272 24 1266 1263 1269 1275 24 1266 1263 1269 1278 24 1266 1263 1281 1284 25 1260 1257 1263 1266 24 1260 1257 1263 1269 24 1260 1257 1263 1281 14 1260 1257 -1263 1281 15 1260 1257 1287 1290 39 1260 1257 -1287 1290 3 1260 1257 -1287 1290 40 1260 1257 1287 1293 3 1257 1263 1269 1272 29 1257 1263 1269 1275 29 1257 1263 1269 1278 29 1257 1263 1281 1284 30 1257 1263 -1281 1284 31 1257 1263 -1281 1284 22 1257 1263 -1281 1284 32 1257 1287 1293 1296 2 1254 1251 1257 1260 3 1254 1251 1257 1263 3 1254 1251 1257 1287 3 1251 1257 1263 1266 24 1311 1308 1314 1317 1 1311 1308 -1314 1317 2 1308 1314 1320 1323 3 1305 1299 1308 1311 39 1305 1299 -1308 1311 3 1305 1299 -1308 1311 40 1305 1299 1308 1314 3 1302 1299 1308 1311 39 1302 1299 -1308 1311 3 1302 1299 -1308 1311 40 1302 1299 1308 1314 3 1299 1308 1314 1317 2 1296 1293 1299 1302 3 1296 1293 1299 1305 3 1296 1293 1299 1308 3 1341 1338 1344 1347 1 1341 1338 -1344 1347 2 1338 1344 1350 1353 3 1332 1326 1320 1338 24 1329 1326 1320 1338 24 1323 1320 1326 1329 24 1323 1320 1326 1332 24 1323 1320 1326 1335 24 1323 1320 1338 1341 39 1323 1320 -1338 1341 3 1323 1320 -1338 1341 40 1323 1320 1338 1344 3 1320 1338 1344 1347 2 1317 1314 1320 1323 3 1317 1314 1320 1326 3 1317 1314 1320 1338 3 1314 1320 1326 1329 24 1314 1320 1326 1332 24 1398 1395 1401 1404 1 1398 1395 -1401 1404 2 1395 1401 1407 1410 3 1380 1374 1383 1386 61 1380 1374 1383 1389 61 1380 1374 1383 1392 61 1377 1374 1383 1386 61 1377 1374 1383 1389 61 1377 1374 1383 1392 61 1371 1362 1356 1374 29 1368 1362 1356 1374 29 1365 1362 1356 1374 29 1362 1356 1374 1377 29 1362 1356 1374 1380 29 1359 1356 1350 1395 24 1359 1356 1362 1365 61 1359 1356 1362 1368 61 1359 1356 1362 1371 61 1359 1356 1374 1377 61 1359 1356 1374 1380 61 1359 1356 1374 1383 29 1356 1374 1383 1386 29 1356 1374 1383 1389 29 1356 1374 1383 1392 29 1353 1350 1356 1359 24 1353 1350 1356 1362 24 1353 1350 1356 1374 24 1353 1350 1395 1398 39 1353 1350 -1395 1398 3 1353 1350 -1395 1398 40 1353 1350 1395 1401 3 1350 1356 1362 1365 29 1350 1356 1362 1368 29 1350 1356 1362 1371 29 1350 1356 1374 1377 29 1350 1356 1374 1380 29 1350 1395 1401 1404 2 1347 1344 1350 1353 3 1347 1344 1350 1356 3 1347 1344 1350 1395 3 1344 1350 1356 1359 24 1455 1452 1458 1461 1 1455 1452 -1458 1461 2 1452 1458 1464 1467 3 1437 1431 1440 1443 61 1437 1431 1440 1446 61 1437 1431 1440 1449 61 1434 1431 1440 1443 61 1434 1431 1440 1446 61 1434 1431 1440 1449 61 1428 1419 1413 1431 29 1425 1419 1413 1431 29 1422 1419 1413 1431 29 1419 1413 1431 1434 29 1419 1413 1431 1437 29 1416 1413 1407 1452 24 1416 1413 1419 1422 61 1416 1413 1419 1425 61 1416 1413 1419 1428 61 1416 1413 1431 1434 61 1416 1413 1431 1437 61 1416 1413 1431 1440 29 1413 1431 1440 1443 29 1413 1431 1440 1446 29 1413 1431 1440 1449 29 1410 1407 1413 1416 24 1410 1407 1413 1419 24 1410 1407 1413 1431 24 1410 1407 1452 1455 39 1410 1407 -1452 1455 3 1410 1407 -1452 1455 40 1410 1407 1452 1458 3 1407 1413 1419 1422 29 1407 1413 1419 1425 29 1407 1413 1419 1428 29 1407 1413 1431 1434 29 1407 1413 1431 1437 29 1407 1452 1458 1461 2 1404 1401 1407 1410 3 1404 1401 1407 1413 3 1404 1401 1407 1452 3 1401 1407 1413 1416 24 1509 1515 1518 1521 3 1509 1515 1518 1524 3 1509 1515 1545 1548 3 1494 1488 1497 1500 61 1494 1488 1497 1503 61 1494 1488 1497 1506 61 1491 1488 1497 1500 61 1491 1488 1497 1503 61 1491 1488 1497 1506 61 1485 1476 1470 1488 29 1482 1476 1470 1488 29 1479 1476 1470 1488 29 1476 1470 1488 1491 29 1476 1470 1488 1494 29 1473 1470 1464 1509 24 1473 1470 1476 1479 61 1473 1470 1476 1482 61 1473 1470 1476 1485 61 1473 1470 1488 1491 61 1473 1470 1488 1494 61 1473 1470 1488 1497 29 1470 1488 1497 1500 29 1470 1488 1497 1503 29 1470 1488 1497 1506 29 1467 1464 1470 1473 24 1467 1464 1470 1476 24 1467 1464 1470 1488 24 1467 1464 1509 1512 39 1467 1464 -1509 1512 3 1467 1464 -1509 1512 40 1467 1464 1509 1515 3 1464 1470 1476 1479 29 1464 1470 1476 1482 29 1464 1470 1476 1485 29 1464 1470 1488 1491 29 1464 1470 1488 1494 29 1461 1458 1464 1467 3 1461 1458 1464 1470 3 1461 1458 1464 1509 3 1458 1464 1470 1473 24 1554 1551 1557 1560 1 1554 1551 -1557 1560 2 1551 1557 1563 1566 3 1551 1557 1563 1569 3 1548 1545 1551 1554 39 1548 1545 -1551 1554 3 1548 1545 -1551 1554 40 1548 1545 1551 1557 3 1545 1551 1557 1560 2 1542 1536 1545 1548 24 1542 1536 1545 1551 24 1539 1536 1545 1548 24 1539 1536 1545 1551 24 1533 1527 1536 1539 61 1533 1527 1536 1542 61 1533 1527 1536 1545 29 1530 1527 1536 1539 61 1530 1527 1536 1542 61 1530 1527 1536 1545 29 1527 1536 1545 1548 24 1524 1518 1515 1545 3 1524 1518 1527 1530 24 1524 1518 1527 1533 24 1524 1518 1527 1536 24 1521 1518 1515 1545 3 1521 1518 1527 1530 24 1521 1518 1527 1533 24 1521 1518 1527 1536 24 1518 1515 1545 1548 3 1518 1527 1536 1539 29 1518 1527 1536 1542 29 1515 1518 1527 1530 24 1515 1518 1527 1533 24 1515 1545 1536 1539 24 1515 1545 1536 1542 24 1575 1572 1578 1581 1 1575 1572 -1578 1581 2 1572 1578 1584 1587 3 1569 1563 1572 1575 39 1569 1563 -1572 1575 3 1569 1563 -1572 1575 40 1569 1563 1572 1578 3 1566 1563 1572 1575 39 1566 1563 -1572 1575 3 1566 1563 -1572 1575 40 1566 1563 1572 1578 3 1563 1572 1578 1581 2 1560 1557 1563 1566 3 1560 1557 1563 1569 3 1560 1557 1563 1572 3 1605 1602 1608 1611 1 1605 1602 -1608 1611 2 1602 1608 1614 1617 3 1599 1590 1584 1602 24 1596 1590 1584 1602 24 1593 1590 1584 1602 24 1587 1584 1590 1593 24 1587 1584 1590 1596 24 1587 1584 1590 1599 24 1587 1584 1602 1605 39 1587 1584 -1602 1605 3 1587 1584 -1602 1605 40 1587 1584 1602 1608 3 1584 1602 1608 1611 2 1581 1578 1584 1587 3 1581 1578 1584 1590 3 1581 1578 1584 1602 3 1578 1584 1590 1593 24 1578 1584 1590 1596 24 1578 1584 1590 1599 24 1647 1644 1650 1653 1 1647 1644 -1650 1653 2 1644 1650 1656 1659 3 1635 1626 1620 1638 14 1635 1626 -1620 1638 15 1632 1626 1620 1638 14 1632 1626 -1620 1638 15 1629 1626 1620 1638 14 1629 1626 -1620 1638 15 1626 1620 1638 1641 20 1626 1620 -1638 1641 21 1626 1620 -1638 1641 22 1626 1620 -1638 1641 23 1623 1620 1614 1644 24 1623 1620 1626 1629 24 1623 1620 1626 1632 24 1623 1620 1626 1635 24 1623 1620 1638 1641 25 1617 1614 1620 1623 24 1617 1614 1620 1626 24 1617 1614 1620 1638 14 1617 1614 -1620 1638 15 1617 1614 1644 1647 39 1617 1614 -1644 1647 3 1617 1614 -1644 1647 40 1617 1614 1644 1650 3 1614 1620 1626 1629 29 1614 1620 1626 1632 29 1614 1620 1626 1635 29 1614 1620 1638 1641 30 1614 1620 -1638 1641 31 1614 1620 -1638 1641 22 1614 1620 -1638 1641 32 1614 1644 1650 1653 2 1611 1608 1614 1617 3 1611 1608 1614 1620 3 1611 1608 1614 1644 3 1608 1614 1620 1623 24 1674 1680 1683 1686 3 1674 1680 1683 1689 3 1674 1680 1710 1713 3 1668 1662 1656 1674 24 1665 1662 1656 1674 24 1659 1656 1662 1665 24 1659 1656 1662 1668 24 1659 1656 1662 1671 24 1659 1656 1674 1677 39 1659 1656 -1674 1677 3 1659 1656 -1674 1677 40 1659 1656 1674 1680 3 1653 1650 1656 1659 3 1653 1650 1656 1662 3 1653 1650 1656 1674 3 1650 1656 1662 1665 24 1650 1656 1662 1668 24 1719 1716 1722 1725 1 1719 1716 -1722 1725 2 1716 1722 1728 1731 3 1716 1722 1728 1734 3 1713 1710 1716 1719 39 1713 1710 -1716 1719 3 1713 1710 -1716 1719 40 1713 1710 1716 1722 3 1710 1716 1722 1725 2 1707 1701 1710 1713 24 1707 1701 1710 1716 24 1704 1701 1710 1713 24 1704 1701 1710 1716 24 1698 1692 1701 1704 61 1698 1692 1701 1707 61 1698 1692 1701 1710 29 1695 1692 1701 1704 61 1695 1692 1701 1707 61 1695 1692 1701 1710 29 1692 1701 1710 1713 24 1689 1683 1680 1710 3 1689 1683 1692 1695 24 1689 1683 1692 1698 24 1689 1683 1692 1701 24 1686 1683 1680 1710 3 1686 1683 1692 1695 24 1686 1683 1692 1698 24 1686 1683 1692 1701 24 1683 1680 1710 1713 3 1683 1692 1701 1704 29 1683 1692 1701 1707 29 1680 1683 1692 1695 24 1680 1683 1692 1698 24 1680 1710 1701 1704 24 1680 1710 1701 1707 24 1740 1737 1743 1746 1 1740 1737 -1743 1746 2 1737 1743 1749 1752 3 1734 1728 1737 1740 39 1734 1728 -1737 1740 3 1734 1728 -1737 1740 40 1734 1728 1737 1743 3 1731 1728 1737 1740 39 1731 1728 -1737 1740 3 1731 1728 -1737 1740 40 1731 1728 1737 1743 3 1728 1737 1743 1746 2 1725 1722 1728 1731 3 1725 1722 1728 1734 3 1725 1722 1728 1737 3 1776 1773 1779 1782 1 1776 1773 -1779 1782 2 1773 1779 1785 1788 3 1761 1755 1749 1773 24 1761 1755 1764 1767 3 1761 1755 1764 1770 3 1758 1755 1749 1773 24 1758 1755 1764 1767 3 1758 1755 1764 1770 3 1752 1749 1755 1758 24 1752 1749 1755 1761 24 1752 1749 1755 1764 24 1752 1749 1773 1776 39 1752 1749 -1773 1776 3 1752 1749 -1773 1776 40 1752 1749 1773 1779 3 1749 1773 1779 1782 2 1746 1743 1749 1752 3 1746 1743 1749 1755 3 1746 1743 1749 1773 3 1743 1749 1755 1758 24 1743 1749 1755 1761 24 1839 1836 1842 1845 1 1839 1836 -1842 1845 2 1836 1842 1848 1851 3 1827 1824 1830 1833 102 1821 1818 1815 1824 7 1821 1818 -1815 1824 134 1821 1818 -1815 1824 15 1821 1818 -1815 1824 135 1818 1815 1824 1827 102 1815 1824 1830 1833 102 1812 1809 1815 1818 102 1812 1809 1815 1824 102 1809 1815 1818 1821 7 1809 1815 -1818 1821 134 1809 1815 -1818 1821 15 1809 1815 -1818 1821 135 1809 1815 1824 1827 102 1806 1803 1800 1830 102 1806 1803 1809 1812 102 1806 1803 1809 1815 102 1803 1800 1830 1833 102 1800 1803 1809 1812 102 1800 1830 1824 1827 102 1797 1791 1785 1836 24 1797 1791 1800 1803 3 1797 1791 1800 1830 3 1794 1791 1785 1836 24 1794 1791 1800 1803 3 1794 1791 1800 1830 3 1791 1800 1803 1806 102 1791 1800 1830 1833 102 1788 1785 1791 1794 24 1788 1785 1791 1797 24 1788 1785 1791 1800 24 1788 1785 1836 1839 39 1788 1785 -1836 1839 3 1788 1785 -1836 1839 40 1788 1785 1836 1842 3 1785 1836 1842 1845 2 1782 1779 1785 1788 3 1782 1779 1785 1791 3 1782 1779 1785 1836 3 1779 1785 1791 1794 24 1779 1785 1791 1797 24 1869 1866 1872 1875 1 1869 1866 -1872 1875 2 1866 1872 1878 1881 3 1863 1854 1848 1866 24 1860 1854 1848 1866 24 1857 1854 1848 1866 24 1851 1848 1854 1857 24 1851 1848 1854 1860 24 1851 1848 1854 1863 24 1851 1848 1866 1869 39 1851 1848 -1866 1869 3 1851 1848 -1866 1869 40 1851 1848 1866 1872 3 1848 1866 1872 1875 2 1845 1842 1848 1851 3 1845 1842 1848 1854 3 1845 1842 1848 1866 3 1842 1848 1854 1857 24 1842 1848 1854 1860 24 1842 1848 1854 1863 24 1896 1893 1899 1902 1 1896 1893 -1899 1902 2 1896 1893 1899 1905 1 1896 1893 -1899 1905 2 1890 1884 1878 1908 24 1890 1884 1893 1896 39 1890 1884 -1893 1896 3 1890 1884 -1893 1896 40 1890 1884 1893 1899 3 1887 1884 1878 1908 24 1887 1884 1893 1896 39 1887 1884 -1893 1896 3 1887 1884 -1893 1896 40 1887 1884 1893 1899 3 1884 1893 1899 1902 2 1884 1893 1899 1905 2 1881 1878 1884 1887 24 1881 1878 1884 1890 24 1881 1878 1884 1893 24 1881 1878 1908 1911 3 1881 1878 1908 1914 3 1875 1872 1878 1881 3 1875 1872 1878 1884 3 1875 1872 1878 1908 3 1872 1878 1884 1887 24 1872 1878 1884 1890 24 42 54 -48 -51 146 84 96 -90 -93 146 114 126 -120 -123 146 186 198 -192 -195 146 219 231 -225 -228 146 276 288 -282 -285 146 324 336 -330 -333 146 405 420 -417 -423 147 405 411 -408 -414 147 390 405 -399 -402 147 354 366 -360 -363 146 426 438 -432 -435 146 486 495 -492 -498 147 459 471 -465 -468 146 528 549 -555 -558 146 543 555 -549 -552 146 537 549 -543 -546 146 531 543 -537 -540 146 528 537 -531 -534 146 501 513 -507 -510 146 588 597 -594 -600 147 561 573 -567 -570 146 603 615 -609 -612 146 651 663 -657 -660 146 732 747 -744 -750 147 732 738 -735 -741 147 717 732 -726 -729 147 681 693 -687 -690 146 753 765 -759 -762 146 852 864 -858 -861 146 873 885 -879 -882 146 915 927 -921 -924 146 948 960 -954 -957 146 993 1005 -999 -1002 146 1023 1035 -1029 -1032 146 1080 1092 -1086 -1089 146 1110 1122 -1116 -1119 146 1140 1152 -1146 -1149 146 1209 1233 -1239 -1242 146 1224 1239 -1233 -1236 146 1212 1224 -1218 -1221 146 1209 1218 -1212 -1215 146 1182 1194 -1188 -1191 146 1245 1257 -1251 -1254 146 1287 1299 -1293 -1296 146 1308 1320 -1314 -1317 146 1338 1350 -1344 -1347 146 1395 1407 -1401 -1404 146 1452 1464 -1458 -1461 146 1551 1563 -1557 -1560 146 1572 1584 -1578 -1581 146 1602 1614 -1608 -1611 146 1644 1656 -1650 -1653 146 1716 1728 -1722 -1725 146 1737 1749 -1743 -1746 146 1800 1824 -1830 -1833 146 1815 1830 -1824 -1827 146 1803 1815 -1809 -1812 146 1800 1809 -1803 -1806 146 1773 1785 -1779 -1782 146 1836 1848 -1842 -1845 146 1893 1902 -1899 -1905 147 1866 1878 -1872 -1875 146 %FLAG DIHEDRALS_WITHOUT_HYDROGEN %FORMAT(10I8) 45 42 48 54 2 42 48 54 60 1 42 48 -54 60 4 42 48 -54 60 5 42 48 -54 60 6 42 48 54 84 7 42 48 -54 84 8 42 48 -54 84 9 42 48 -54 84 6 36 18 12 42 10 36 18 -12 42 11 36 18 -12 42 12 36 18 -12 42 13 24 18 12 42 16 24 18 -12 42 17 24 18 -12 42 18 24 18 -12 42 19 18 12 42 45 3 18 12 42 48 26 18 12 -42 48 27 18 12 -42 48 28 18 12 -42 48 6 12 42 48 54 2 0 12 18 24 33 0 12 -18 24 34 0 12 -18 24 18 0 12 -18 24 35 0 12 18 36 36 0 12 -18 36 37 0 12 -18 36 12 0 12 -18 36 38 0 12 42 45 3 0 12 42 48 3 87 84 90 96 2 84 90 96 102 1 84 90 -96 102 4 84 90 -96 102 5 84 90 -96 102 6 84 90 96 114 7 84 90 -96 114 8 84 90 -96 114 9 84 90 -96 114 6 78 60 54 84 10 78 60 -54 84 11 78 60 -54 84 12 78 60 -54 84 13 66 60 54 84 16 66 60 -54 84 17 66 60 -54 84 18 66 60 -54 84 19 60 54 84 87 3 60 54 84 90 26 60 54 -84 90 27 60 54 -84 90 28 60 54 -84 90 6 54 84 90 96 2 48 54 60 66 33 48 54 -60 66 34 48 54 -60 66 18 48 54 -60 66 35 48 54 60 78 36 48 54 -60 78 37 48 54 -60 78 12 48 54 -60 78 38 48 54 84 87 3 48 54 84 90 41 48 54 -84 90 42 48 54 -84 90 43 48 54 -84 90 6 117 114 120 126 2 114 120 126 132 1 114 120 -126 132 4 114 120 -126 132 5 114 120 -126 132 6 114 120 126 144 7 114 120 -126 144 8 114 120 -126 144 9 114 120 -126 144 6 111 102 96 114 44 111 102 -96 114 45 111 102 -96 114 46 111 102 -96 114 47 111 1671 1662 1656 48 111 1671 -1662 1656 49 111 1671 -1662 1656 50 111 1671 -1662 1656 51 102 96 114 117 3 102 96 114 120 26 102 96 -114 120 27 102 96 -114 120 28 102 96 -114 120 6 102 111 1671 1662 53 102 111 -1671 1662 54 102 111 -1671 1662 55 102 111 -1671 1662 56 96 102 111 1671 48 96 102 -111 1671 49 96 102 -111 1671 50 96 102 -111 1671 51 96 114 120 126 2 90 96 102 111 57 90 96 -102 111 58 90 96 -102 111 46 90 96 -102 111 59 90 96 114 117 3 90 96 114 120 41 90 96 -114 120 42 90 96 -114 120 43 90 96 -114 120 6 147 144 150 153 2 147 144 150 180 2 144 150 153 162 1 144 150 -153 162 60 144 150 -153 162 28 144 150 -153 162 6 144 150 180 171 1 144 150 -180 171 4 144 150 -180 171 5 144 150 -180 171 6 144 150 180 186 7 144 150 -180 186 8 144 150 -180 186 9 144 150 -180 186 6 141 132 126 144 44 141 132 -126 144 45 141 132 -126 144 46 141 132 -126 144 47 141 1335 1326 1320 48 141 1335 -1326 1320 49 141 1335 -1326 1320 50 141 1335 -1326 1320 51 132 126 144 147 3 132 126 144 150 26 132 126 -144 150 27 132 126 -144 150 28 132 126 -144 150 6 132 141 1335 1326 53 132 141 -1335 1326 54 132 141 -1335 1326 55 132 141 -1335 1326 56 126 132 141 1335 48 126 132 -141 1335 49 126 132 -141 1335 50 126 132 -141 1335 51 126 144 150 153 2 126 144 150 180 2 120 126 132 141 57 120 126 -132 141 58 120 126 -132 141 46 120 126 -132 141 59 120 126 144 147 3 120 126 144 150 41 120 126 -144 150 42 120 126 -144 150 43 120 126 -144 150 6 189 186 192 198 2 186 192 198 204 1 186 192 -198 204 4 186 192 -198 204 5 186 192 -198 204 6 186 192 198 219 7 186 192 -198 219 8 186 192 -198 219 9 186 192 -198 219 6 180 186 192 198 2 171 180 186 189 3 171 180 186 192 26 171 180 -186 192 27 171 180 -186 192 28 171 180 -186 192 6 162 153 -150 180 3 162 171 180 186 24 153 150 -180 171 3 153 150 180 186 3 153 162 -171 180 62 153 162 -171 180 63 153 162 -171 180 64 150 153 -162 171 24 150 180 -171 162 24 150 180 186 189 3 150 180 186 192 41 150 180 -186 192 42 150 180 -186 192 43 150 180 -186 192 6 222 219 225 231 2 219 225 231 237 1 219 225 -231 237 4 219 225 -231 237 5 219 225 -231 237 6 219 225 231 276 7 219 225 -231 276 8 219 225 -231 276 9 219 225 -231 276 6 213 204 198 219 65 213 204 -198 219 66 213 204 -198 219 67 213 204 -198 219 68 204 198 219 222 3 204 198 219 225 26 204 198 -219 225 27 204 198 -219 225 28 204 198 -219 225 6 198 219 225 231 2 192 198 204 213 73 192 198 -204 213 74 192 198 -204 213 67 192 198 -204 213 75 192 198 219 222 3 192 198 219 225 41 192 198 -219 225 42 192 198 -219 225 43 192 198 -219 225 6 279 276 282 288 2 276 282 288 294 1 276 282 -288 294 4 276 282 -288 294 5 276 282 -288 294 6 276 282 288 324 7 276 282 -288 324 8 276 282 -288 324 9 276 282 -288 324 6 255 237 231 276 76 255 237 -231 276 77 255 237 -231 276 78 255 237 -231 276 79 243 237 231 276 16 243 237 -231 276 17 243 237 -231 276 18 243 237 -231 276 19 243 237 255 264 80 243 237 -255 264 81 243 237 -255 264 82 243 237 -255 264 83 237 231 276 279 3 237 231 276 282 26 237 231 -276 282 27 237 231 -276 282 28 237 231 -276 282 6 231 237 255 264 84 231 237 -255 264 85 231 237 -255 264 82 231 237 -255 264 86 231 276 282 288 2 225 231 237 243 33 225 231 -237 243 34 225 231 -237 243 18 225 231 -237 243 35 225 231 237 255 87 225 231 -237 255 88 225 231 -237 255 78 225 231 -237 255 89 225 231 276 279 3 225 231 276 282 41 225 231 -276 282 42 225 231 -276 282 43 225 231 -276 282 6 327 324 330 336 2 324 330 336 342 1 324 330 -336 342 4 324 330 -336 342 5 324 330 -336 342 6 324 330 336 354 7 324 330 -336 354 8 324 330 -336 354 9 324 330 -336 354 6 312 294 288 324 16 312 294 -288 324 17 312 294 -288 324 18 312 294 -288 324 19 300 294 288 324 16 300 294 -288 324 17 300 294 -288 324 18 300 294 -288 324 19 294 288 324 327 3 294 288 324 330 26 294 288 -324 330 27 294 288 -324 330 28 294 288 -324 330 6 288 324 330 336 2 282 288 294 300 33 282 288 -294 300 34 282 288 -294 300 18 282 288 -294 300 35 282 288 294 312 33 282 288 -294 312 34 282 288 -294 312 18 282 288 -294 312 35 282 288 324 327 3 282 288 324 330 41 282 288 -324 330 42 282 288 -324 330 43 282 288 -324 330 6 357 354 360 366 2 354 360 366 372 1 354 360 -366 372 4 354 360 -366 372 5 354 360 -366 372 6 354 360 366 426 7 354 360 -366 426 8 354 360 -366 426 9 354 360 -366 426 6 342 336 354 357 3 342 336 354 360 26 342 336 -354 360 27 342 336 -354 360 28 342 336 -354 360 6 336 354 360 366 2 330 336 354 357 3 330 336 354 360 41 330 336 -354 360 42 330 336 -354 360 43 330 336 -354 360 6 429 426 432 438 2 426 432 438 444 1 426 432 -438 444 4 426 432 -438 444 5 426 432 -438 444 6 426 432 438 459 7 426 432 -438 459 8 426 432 -438 459 9 426 432 -438 459 6 390 399 405 408 90 390 399 -405 408 6 390 399 405 417 90 390 399 -405 417 6 381 372 366 426 24 381 390 399 405 7 372 366 426 429 3 372 366 426 432 26 372 366 -426 432 27 372 366 -426 432 28 372 366 -426 432 6 372 381 390 399 24 366 372 381 390 62 366 372 -381 390 63 366 372 -381 390 64 366 426 432 438 2 360 366 372 381 24 360 366 426 429 3 360 366 426 432 41 360 366 -426 432 42 360 366 -426 432 43 360 366 -426 432 6 462 459 465 471 2 459 465 471 477 1 459 465 -471 477 4 459 465 -471 477 5 459 465 -471 477 6 459 465 471 501 7 459 465 -471 501 8 459 465 -471 501 9 459 465 -471 501 6 453 444 438 459 65 453 444 -438 459 66 453 444 -438 459 67 453 444 -438 459 68 444 438 459 462 3 444 438 459 465 26 444 438 -459 465 27 444 438 -459 465 28 444 438 -459 465 6 438 459 465 471 2 432 438 444 453 73 432 438 -444 453 74 432 438 -444 453 67 432 438 -444 453 75 432 438 459 462 3 432 438 459 465 41 432 438 -459 465 42 432 438 -459 465 43 432 438 -459 465 6 504 501 507 513 2 501 507 513 519 1 501 507 -513 519 4 501 507 -513 519 5 501 507 -513 519 6 501 507 513 561 7 501 507 -513 561 8 501 507 -513 561 9 501 507 -513 561 6 486 477 471 501 91 486 477 -471 501 92 486 477 -471 501 93 486 477 -471 501 94 477 471 501 504 3 477 471 501 507 26 477 471 -501 507 27 477 471 -501 507 28 477 471 -501 507 6 471 477 486 489 7 471 477 486 492 95 471 477 -486 492 96 471 477 -486 492 97 471 477 -486 492 98 471 501 507 513 2 465 471 477 486 99 465 471 -477 486 100 465 471 -477 486 93 465 471 -477 486 101 465 471 501 504 3 465 471 501 507 41 465 471 -501 507 42 465 471 -501 507 43 465 471 -501 507 6 564 561 567 573 2 561 567 573 579 1 561 567 -573 579 4 561 567 -573 579 5 561 567 -573 579 6 561 567 573 603 7 561 567 -573 603 8 561 567 -573 603 9 561 567 -573 603 6 537 531 528 555 102 537 543 -549 555 102 531 528 555 549 102 531 537 -543 549 102 528 519 513 561 103 528 519 -513 561 104 528 519 -513 561 105 528 519 -513 561 106 528 531 537 543 102 528 555 -549 543 102 519 513 561 564 3 519 513 561 567 26 519 513 -561 567 27 519 513 -561 567 28 519 513 -561 567 6 519 528 531 537 102 519 528 555 549 102 513 519 528 531 7 513 519 -528 531 107 513 519 -528 531 15 513 519 -528 531 108 513 519 528 555 7 513 519 -528 555 107 513 519 -528 555 15 513 519 -528 555 108 513 561 567 573 2 507 513 519 528 109 507 513 -519 528 110 507 513 -519 528 105 507 513 -519 528 111 507 513 561 564 3 507 513 561 567 41 507 513 -561 567 42 507 513 -561 567 43 507 513 -561 567 6 606 603 609 615 2 603 609 615 621 1 603 609 -615 621 4 603 609 -615 621 5 603 609 -615 621 6 603 609 615 651 7 603 609 -615 651 8 603 609 -615 651 9 603 609 -615 651 6 588 579 573 603 91 588 579 -573 603 92 588 579 -573 603 93 588 579 -573 603 94 579 573 603 606 3 579 573 603 609 26 579 573 -603 609 27 579 573 -603 609 28 579 573 -603 609 6 573 579 588 591 7 573 579 588 594 95 573 579 -588 594 96 573 579 -588 594 97 573 579 -588 594 98 573 603 609 615 2 567 573 579 588 99 567 573 -579 588 100 567 573 -579 588 93 567 573 -579 588 101 567 573 603 606 3 567 573 603 609 41 567 573 -603 609 42 567 573 -603 609 43 567 573 -603 609 6 654 651 657 663 2 651 657 663 669 1 651 657 -663 669 4 651 657 -663 669 5 651 657 -663 669 6 651 657 663 681 7 651 657 -663 681 8 651 657 -663 681 9 651 657 -663 681 6 639 621 615 651 16 639 621 -615 651 17 639 621 -615 651 18 639 621 -615 651 19 627 621 615 651 16 627 621 -615 651 17 627 621 -615 651 18 627 621 -615 651 19 621 615 651 654 3 621 615 651 657 26 621 615 -651 657 27 621 615 -651 657 28 621 615 -651 657 6 615 651 657 663 2 609 615 621 627 33 609 615 -621 627 34 609 615 -621 627 18 609 615 -621 627 35 609 615 621 639 33 609 615 -621 639 34 609 615 -621 639 18 609 615 -621 639 35 609 615 651 654 3 609 615 651 657 41 609 615 -651 657 42 609 615 -651 657 43 609 615 -651 657 6 684 681 687 693 2 681 687 693 699 1 681 687 -693 699 4 681 687 -693 699 5 681 687 -693 699 6 681 687 693 753 7 681 687 -693 753 8 681 687 -693 753 9 681 687 -693 753 6 678 669 663 681 44 678 669 -663 681 45 678 669 -663 681 46 678 669 -663 681 47 678 1107 1098 1092 48 678 1107 -1098 1092 49 678 1107 -1098 1092 50 678 1107 -1098 1092 51 669 663 681 684 3 669 663 681 687 26 669 663 -681 687 27 669 663 -681 687 28 669 663 -681 687 6 669 678 1107 1098 53 669 678 -1107 1098 54 669 678 -1107 1098 55 669 678 -1107 1098 56 663 669 678 1107 48 663 669 -678 1107 49 663 669 -678 1107 50 663 669 -678 1107 51 663 681 687 693 2 657 663 669 678 57 657 663 -669 678 58 657 663 -669 678 46 657 663 -669 678 59 657 663 681 684 3 657 663 681 687 41 657 663 -681 687 42 657 663 -681 687 43 657 663 -681 687 6 756 753 759 765 2 753 759 765 771 1 753 759 -765 771 4 753 759 -765 771 5 753 759 -765 771 6 753 759 765 810 7 753 759 -765 810 8 753 759 -765 810 9 753 759 -765 810 6 717 726 732 735 90 717 726 -732 735 6 717 726 732 744 90 717 726 -732 744 6 708 699 693 753 24 708 717 726 732 7 699 693 753 756 3 699 693 753 759 26 699 693 -753 759 27 699 693 -753 759 28 699 693 -753 759 6 699 708 717 726 24 693 699 708 717 62 693 699 -708 717 63 693 699 -708 717 64 693 753 759 765 2 687 693 699 708 24 687 693 753 756 3 687 693 753 759 41 687 693 -753 759 42 687 693 -753 759 43 687 693 -753 759 6 813 810 816 819 2 813 810 816 846 2 810 816 819 828 1 810 816 -819 828 60 810 816 -819 828 28 810 816 -819 828 6 810 816 846 837 1 810 816 -846 837 4 810 816 -846 837 5 810 816 -846 837 6 810 816 846 852 7 810 816 -846 852 8 810 816 -846 852 9 810 816 -846 852 6 780 771 765 810 112 780 771 -765 810 113 780 771 -765 810 114 780 771 -765 810 115 771 765 810 813 3 771 765 810 816 26 771 765 -810 816 27 771 765 -810 816 28 771 765 -810 816 6 765 771 780 786 116 765 771 -780 786 117 765 771 -780 786 118 765 771 -780 786 119 765 771 780 798 116 765 771 -780 798 117 765 771 -780 798 118 765 771 -780 798 119 765 810 816 819 2 765 810 816 846 2 759 765 771 780 120 759 765 -771 780 121 759 765 -771 780 114 759 765 -771 780 122 759 765 810 813 3 759 765 810 816 41 759 765 -810 816 42 759 765 -810 816 43 759 765 -810 816 6 855 852 858 864 2 852 858 864 873 7 852 858 -864 873 8 852 858 -864 873 9 852 858 -864 873 6 846 852 858 864 2 837 846 852 855 3 837 846 852 858 26 837 846 -852 858 27 837 846 -852 858 28 837 846 -852 858 6 828 819 -816 846 3 828 837 846 852 24 819 816 -846 837 3 819 816 846 852 3 819 828 -837 846 62 819 828 -837 846 63 819 828 -837 846 64 816 819 -828 837 24 816 846 -837 828 24 816 846 852 855 3 816 846 852 858 41 816 846 -852 858 42 816 846 -852 858 43 816 846 -852 858 6 876 873 879 885 2 873 879 885 891 1 873 879 -885 891 4 873 879 -885 891 5 873 879 -885 891 6 873 879 885 915 7 873 879 -885 915 8 873 879 -885 915 9 873 879 -885 915 6 864 873 879 885 2 858 864 873 876 3 858 864 873 879 41 858 864 -873 879 42 858 864 -873 879 43 858 864 -873 879 6 918 915 921 927 2 915 921 927 933 1 915 921 -927 933 4 915 921 -927 933 5 915 921 -927 933 6 915 921 927 948 7 915 921 -927 948 8 915 921 -927 948 9 915 921 -927 948 6 909 891 885 915 10 909 891 -885 915 11 909 891 -885 915 12 909 891 -885 915 13 897 891 885 915 16 897 891 -885 915 17 897 891 -885 915 18 897 891 -885 915 19 891 885 915 918 3 891 885 915 921 26 891 885 -915 921 27 891 885 -915 921 28 891 885 -915 921 6 885 915 921 927 2 879 885 891 897 33 879 885 -891 897 34 879 885 -891 897 18 879 885 -891 897 35 879 885 891 909 36 879 885 -891 909 37 879 885 -891 909 12 879 885 -891 909 38 879 885 915 918 3 879 885 915 921 41 879 885 -915 921 42 879 885 -915 921 43 879 885 -915 921 6 951 948 954 960 2 948 954 960 966 1 948 954 -960 966 4 948 954 -960 966 5 948 954 -960 966 6 948 954 960 993 7 948 954 -960 993 8 948 954 -960 993 9 948 954 -960 993 6 942 933 927 948 65 942 933 -927 948 66 942 933 -927 948 67 942 933 -927 948 68 933 927 948 951 3 933 927 948 954 26 933 927 -948 954 27 933 927 -948 954 28 933 927 -948 954 6 927 948 954 960 2 921 927 933 942 73 921 927 -933 942 74 921 927 -933 942 67 921 927 -933 942 75 921 927 948 951 3 921 927 948 954 41 921 927 -948 954 42 921 927 -948 954 43 921 927 -948 954 6 996 993 999 1005 2 993 999 1005 1011 1 993 999 -1005 1011 4 993 999 -1005 1011 5 993 999 -1005 1011 6 993 999 1005 1023 7 993 999 -1005 1023 8 993 999 -1005 1023 9 993 999 -1005 1023 6 975 966 960 993 123 975 966 -960 993 124 975 966 -960 993 114 975 966 -960 993 125 966 960 993 996 3 966 960 993 999 26 966 960 -993 999 27 966 960 -993 999 28 966 960 -993 999 6 966 975 984 987 126 966 975 -984 987 59 966 975 984 990 126 966 975 -984 990 59 960 966 975 984 127 960 966 -975 984 128 960 966 -975 984 129 960 966 -975 984 130 960 993 999 1005 2 954 960 966 975 131 954 960 -966 975 132 954 960 -966 975 114 954 960 -966 975 133 954 960 993 996 3 954 960 993 999 41 954 960 -993 999 42 954 960 -993 999 43 954 960 -993 999 6 1026 1023 1029 1035 2 1023 1029 1035 1041 1 1023 1029 -1035 1041 4 1023 1029 -1035 1041 5 1023 1029 -1035 1041 6 1023 1029 1035 1080 7 1023 1029 -1035 1080 8 1023 1029 -1035 1080 9 1023 1029 -1035 1080 6 1011 1005 1023 1026 3 1011 1005 1023 1029 26 1011 1005 -1023 1029 27 1011 1005 -1023 1029 28 1011 1005 -1023 1029 6 1005 1023 1029 1035 2 999 1005 1023 1026 3 999 1005 1023 1029 41 999 1005 -1023 1029 42 999 1005 -1023 1029 43 999 1005 -1023 1029 6 1083 1080 1086 1092 2 1080 1086 1092 1098 1 1080 1086 -1092 1098 4 1080 1086 -1092 1098 5 1080 1086 -1092 1098 6 1080 1086 1092 1110 7 1080 1086 -1092 1110 8 1080 1086 -1092 1110 9 1080 1086 -1092 1110 6 1059 1041 1035 1080 76 1059 1041 -1035 1080 77 1059 1041 -1035 1080 78 1059 1041 -1035 1080 79 1047 1041 1035 1080 16 1047 1041 -1035 1080 17 1047 1041 -1035 1080 18 1047 1041 -1035 1080 19 1047 1041 1059 1068 80 1047 1041 -1059 1068 81 1047 1041 -1059 1068 82 1047 1041 -1059 1068 83 1041 1035 1080 1083 3 1041 1035 1080 1086 26 1041 1035 -1080 1086 27 1041 1035 -1080 1086 28 1041 1035 -1080 1086 6 1035 1041 1059 1068 84 1035 1041 -1059 1068 85 1035 1041 -1059 1068 82 1035 1041 -1059 1068 86 1035 1080 1086 1092 2 1029 1035 1041 1047 33 1029 1035 -1041 1047 34 1029 1035 -1041 1047 18 1029 1035 -1041 1047 35 1029 1035 1041 1059 87 1029 1035 -1041 1059 88 1029 1035 -1041 1059 78 1029 1035 -1041 1059 89 1029 1035 1080 1083 3 1029 1035 1080 1086 41 1029 1035 -1080 1086 42 1029 1035 -1080 1086 43 1029 1035 -1080 1086 6 1113 1110 1116 1122 2 1110 1116 1122 1128 1 1110 1116 -1122 1128 4 1110 1116 -1122 1128 5 1110 1116 -1122 1128 6 1110 1116 1122 1140 7 1110 1116 -1122 1140 8 1110 1116 -1122 1140 9 1110 1116 -1122 1140 6 1107 1098 1092 1110 44 1107 1098 -1092 1110 45 1107 1098 -1092 1110 46 1107 1098 -1092 1110 47 1098 1092 1110 1113 3 1098 1092 1110 1116 26 1098 1092 -1110 1116 27 1098 1092 -1110 1116 28 1098 1092 -1110 1116 6 1092 1110 1116 1122 2 1086 1092 1098 1107 57 1086 1092 -1098 1107 58 1086 1092 -1098 1107 46 1086 1092 -1098 1107 59 1086 1092 1110 1113 3 1086 1092 1110 1116 41 1086 1092 -1110 1116 42 1086 1092 -1110 1116 43 1086 1092 -1110 1116 6 1143 1140 1146 1152 2 1140 1146 1152 1158 1 1140 1146 -1152 1158 4 1140 1146 -1152 1158 5 1140 1146 -1152 1158 6 1140 1146 1152 1182 7 1140 1146 -1152 1182 8 1140 1146 -1152 1182 9 1140 1146 -1152 1182 6 1128 1122 1140 1143 3 1128 1122 1140 1146 26 1128 1122 -1140 1146 27 1128 1122 -1140 1146 28 1128 1122 -1140 1146 6 1122 1140 1146 1152 2 1116 1122 1140 1143 3 1116 1122 1140 1146 41 1116 1122 -1140 1146 42 1116 1122 -1140 1146 43 1116 1122 -1140 1146 6 1185 1182 1188 1194 2 1182 1188 1194 1200 1 1182 1188 -1194 1200 4 1182 1188 -1194 1200 5 1182 1188 -1194 1200 6 1182 1188 1194 1245 7 1182 1188 -1194 1245 8 1182 1188 -1194 1245 9 1182 1188 -1194 1245 6 1176 1158 1152 1182 10 1176 1158 -1152 1182 11 1176 1158 -1152 1182 12 1176 1158 -1152 1182 13 1164 1158 1152 1182 16 1164 1158 -1152 1182 17 1164 1158 -1152 1182 18 1164 1158 -1152 1182 19 1158 1152 1182 1185 3 1158 1152 1182 1188 26 1158 1152 -1182 1188 27 1158 1152 -1182 1188 28 1158 1152 -1182 1188 6 1152 1182 1188 1194 2 1146 1152 1158 1164 33 1146 1152 -1158 1164 34 1146 1152 -1158 1164 18 1146 1152 -1158 1164 35 1146 1152 1158 1176 36 1146 1152 -1158 1176 37 1146 1152 -1158 1176 12 1146 1152 -1158 1176 38 1146 1152 1182 1185 3 1146 1152 1182 1188 41 1146 1152 -1182 1188 42 1146 1152 -1182 1188 43 1146 1152 -1182 1188 6 1248 1245 1251 1257 2 1245 1251 1257 1263 1 1245 1251 -1257 1263 4 1245 1251 -1257 1263 5 1245 1251 -1257 1263 6 1245 1251 1257 1287 7 1245 1251 -1257 1287 8 1245 1251 -1257 1287 9 1245 1251 -1257 1287 6 1227 1224 1233 1239 102 1218 1212 1209 1239 102 1218 1224 -1233 1239 102 1212 1209 1239 1233 102 1212 1218 1224 1227 102 1212 1218 -1224 1233 102 1209 1200 1194 1245 103 1209 1200 -1194 1245 104 1209 1200 -1194 1245 105 1209 1200 -1194 1245 106 1209 1212 1218 1224 102 1209 1239 -1233 1224 102 1200 1194 1245 1248 3 1200 1194 1245 1251 26 1200 1194 -1245 1251 27 1200 1194 -1245 1251 28 1200 1194 -1245 1251 6 1200 1209 1212 1218 102 1200 1209 1239 1233 102 1194 1200 1209 1212 7 1194 1200 -1209 1212 107 1194 1200 -1209 1212 15 1194 1200 -1209 1212 108 1194 1200 1209 1239 7 1194 1200 -1209 1239 107 1194 1200 -1209 1239 15 1194 1200 -1209 1239 108 1194 1245 1251 1257 2 1188 1194 1200 1209 109 1188 1194 -1200 1209 110 1188 1194 -1200 1209 105 1188 1194 -1200 1209 111 1188 1194 1245 1248 3 1188 1194 1245 1251 41 1188 1194 -1245 1251 42 1188 1194 -1245 1251 43 1188 1194 -1245 1251 6 1290 1287 1293 1299 2 1287 1293 1299 1308 7 1287 1293 -1299 1308 8 1287 1293 -1299 1308 9 1287 1293 -1299 1308 6 1281 1263 1257 1287 10 1281 1263 -1257 1287 11 1281 1263 -1257 1287 12 1281 1263 -1257 1287 13 1269 1263 1257 1287 16 1269 1263 -1257 1287 17 1269 1263 -1257 1287 18 1269 1263 -1257 1287 19 1263 1257 1287 1290 3 1263 1257 1287 1293 26 1263 1257 -1287 1293 27 1263 1257 -1287 1293 28 1263 1257 -1287 1293 6 1257 1287 1293 1299 2 1251 1257 1263 1269 33 1251 1257 -1263 1269 34 1251 1257 -1263 1269 18 1251 1257 -1263 1269 35 1251 1257 1263 1281 36 1251 1257 -1263 1281 37 1251 1257 -1263 1281 12 1251 1257 -1263 1281 38 1251 1257 1287 1290 3 1251 1257 1287 1293 41 1251 1257 -1287 1293 42 1251 1257 -1287 1293 43 1251 1257 -1287 1293 6 1311 1308 1314 1320 2 1308 1314 1320 1326 1 1308 1314 -1320 1326 4 1308 1314 -1320 1326 5 1308 1314 -1320 1326 6 1308 1314 1320 1338 7 1308 1314 -1320 1338 8 1308 1314 -1320 1338 9 1308 1314 -1320 1338 6 1299 1308 1314 1320 2 1293 1299 1308 1311 3 1293 1299 1308 1314 41 1293 1299 -1308 1314 42 1293 1299 -1308 1314 43 1293 1299 -1308 1314 6 1341 1338 1344 1350 2 1338 1344 1350 1356 1 1338 1344 -1350 1356 4 1338 1344 -1350 1356 5 1338 1344 -1350 1356 6 1338 1344 1350 1395 7 1338 1344 -1350 1395 8 1338 1344 -1350 1395 9 1338 1344 -1350 1395 6 1335 1326 1320 1338 44 1335 1326 -1320 1338 45 1335 1326 -1320 1338 46 1335 1326 -1320 1338 47 1326 1320 1338 1341 3 1326 1320 1338 1344 26 1326 1320 -1338 1344 27 1326 1320 -1338 1344 28 1326 1320 -1338 1344 6 1320 1338 1344 1350 2 1314 1320 1326 1335 57 1314 1320 -1326 1335 58 1314 1320 -1326 1335 46 1314 1320 -1326 1335 59 1314 1320 1338 1341 3 1314 1320 1338 1344 41 1314 1320 -1338 1344 42 1314 1320 -1338 1344 43 1314 1320 -1338 1344 6 1398 1395 1401 1407 2 1395 1401 1407 1413 1 1395 1401 -1407 1413 4 1395 1401 -1407 1413 5 1395 1401 -1407 1413 6 1395 1401 1407 1452 7 1395 1401 -1407 1452 8 1395 1401 -1407 1452 9 1395 1401 -1407 1452 6 1374 1356 1350 1395 76 1374 1356 -1350 1395 77 1374 1356 -1350 1395 78 1374 1356 -1350 1395 79 1362 1356 1350 1395 16 1362 1356 -1350 1395 17 1362 1356 -1350 1395 18 1362 1356 -1350 1395 19 1362 1356 1374 1383 80 1362 1356 -1374 1383 81 1362 1356 -1374 1383 82 1362 1356 -1374 1383 83 1356 1350 1395 1398 3 1356 1350 1395 1401 26 1356 1350 -1395 1401 27 1356 1350 -1395 1401 28 1356 1350 -1395 1401 6 1350 1356 1374 1383 84 1350 1356 -1374 1383 85 1350 1356 -1374 1383 82 1350 1356 -1374 1383 86 1350 1395 1401 1407 2 1344 1350 1356 1362 33 1344 1350 -1356 1362 34 1344 1350 -1356 1362 18 1344 1350 -1356 1362 35 1344 1350 1356 1374 87 1344 1350 -1356 1374 88 1344 1350 -1356 1374 78 1344 1350 -1356 1374 89 1344 1350 1395 1398 3 1344 1350 1395 1401 41 1344 1350 -1395 1401 42 1344 1350 -1395 1401 43 1344 1350 -1395 1401 6 1455 1452 1458 1464 2 1452 1458 1464 1470 1 1452 1458 -1464 1470 4 1452 1458 -1464 1470 5 1452 1458 -1464 1470 6 1452 1458 1464 1509 7 1452 1458 -1464 1509 8 1452 1458 -1464 1509 9 1452 1458 -1464 1509 6 1431 1413 1407 1452 76 1431 1413 -1407 1452 77 1431 1413 -1407 1452 78 1431 1413 -1407 1452 79 1419 1413 1407 1452 16 1419 1413 -1407 1452 17 1419 1413 -1407 1452 18 1419 1413 -1407 1452 19 1419 1413 1431 1440 80 1419 1413 -1431 1440 81 1419 1413 -1431 1440 82 1419 1413 -1431 1440 83 1413 1407 1452 1455 3 1413 1407 1452 1458 26 1413 1407 -1452 1458 27 1413 1407 -1452 1458 28 1413 1407 -1452 1458 6 1407 1413 1431 1440 84 1407 1413 -1431 1440 85 1407 1413 -1431 1440 82 1407 1413 -1431 1440 86 1407 1452 1458 1464 2 1401 1407 1413 1419 33 1401 1407 -1413 1419 34 1401 1407 -1413 1419 18 1401 1407 -1413 1419 35 1401 1407 1413 1431 87 1401 1407 -1413 1431 88 1401 1407 -1413 1431 78 1401 1407 -1413 1431 89 1401 1407 1452 1455 3 1401 1407 1452 1458 41 1401 1407 -1452 1458 42 1401 1407 -1452 1458 43 1401 1407 -1452 1458 6 1512 1509 1515 1518 2 1512 1509 1515 1545 2 1509 1515 1518 1527 1 1509 1515 -1518 1527 60 1509 1515 -1518 1527 28 1509 1515 -1518 1527 6 1509 1515 1545 1536 1 1509 1515 -1545 1536 4 1509 1515 -1545 1536 5 1509 1515 -1545 1536 6 1509 1515 1545 1551 7 1509 1515 -1545 1551 8 1509 1515 -1545 1551 9 1509 1515 -1545 1551 6 1488 1470 1464 1509 76 1488 1470 -1464 1509 77 1488 1470 -1464 1509 78 1488 1470 -1464 1509 79 1476 1470 1464 1509 16 1476 1470 -1464 1509 17 1476 1470 -1464 1509 18 1476 1470 -1464 1509 19 1476 1470 1488 1497 80 1476 1470 -1488 1497 81 1476 1470 -1488 1497 82 1476 1470 -1488 1497 83 1470 1464 1509 1512 3 1470 1464 1509 1515 26 1470 1464 -1509 1515 27 1470 1464 -1509 1515 28 1470 1464 -1509 1515 6 1464 1470 1488 1497 84 1464 1470 -1488 1497 85 1464 1470 -1488 1497 82 1464 1470 -1488 1497 86 1464 1509 1515 1518 2 1464 1509 1515 1545 2 1458 1464 1470 1476 33 1458 1464 -1470 1476 34 1458 1464 -1470 1476 18 1458 1464 -1470 1476 35 1458 1464 1470 1488 87 1458 1464 -1470 1488 88 1458 1464 -1470 1488 78 1458 1464 -1470 1488 89 1458 1464 1509 1512 3 1458 1464 1509 1515 41 1458 1464 -1509 1515 42 1458 1464 -1509 1515 43 1458 1464 -1509 1515 6 1554 1551 1557 1563 2 1551 1557 1563 1572 7 1551 1557 -1563 1572 8 1551 1557 -1563 1572 9 1551 1557 -1563 1572 6 1545 1551 1557 1563 2 1536 1545 1551 1554 3 1536 1545 1551 1557 26 1536 1545 -1551 1557 27 1536 1545 -1551 1557 28 1536 1545 -1551 1557 6 1527 1518 -1515 1545 3 1527 1536 1545 1551 24 1518 1515 -1545 1536 3 1518 1515 1545 1551 3 1518 1527 -1536 1545 62 1518 1527 -1536 1545 63 1518 1527 -1536 1545 64 1515 1518 -1527 1536 24 1515 1545 -1536 1527 24 1515 1545 1551 1554 3 1515 1545 1551 1557 41 1515 1545 -1551 1557 42 1515 1545 -1551 1557 43 1515 1545 -1551 1557 6 1575 1572 1578 1584 2 1572 1578 1584 1590 1 1572 1578 -1584 1590 4 1572 1578 -1584 1590 5 1572 1578 -1584 1590 6 1572 1578 1584 1602 7 1572 1578 -1584 1602 8 1572 1578 -1584 1602 9 1572 1578 -1584 1602 6 1563 1572 1578 1584 2 1557 1563 1572 1575 3 1557 1563 1572 1578 41 1557 1563 -1572 1578 42 1557 1563 -1572 1578 43 1557 1563 -1572 1578 6 1605 1602 1608 1614 2 1602 1608 1614 1620 1 1602 1608 -1614 1620 4 1602 1608 -1614 1620 5 1602 1608 -1614 1620 6 1602 1608 1614 1644 7 1602 1608 -1614 1644 8 1602 1608 -1614 1644 9 1602 1608 -1614 1644 6 1590 1584 1602 1605 3 1590 1584 1602 1608 26 1590 1584 -1602 1608 27 1590 1584 -1602 1608 28 1590 1584 -1602 1608 6 1584 1602 1608 1614 2 1578 1584 1602 1605 3 1578 1584 1602 1608 41 1578 1584 -1602 1608 42 1578 1584 -1602 1608 43 1578 1584 -1602 1608 6 1647 1644 1650 1656 2 1644 1650 1656 1662 1 1644 1650 -1656 1662 4 1644 1650 -1656 1662 5 1644 1650 -1656 1662 6 1644 1650 1656 1674 7 1644 1650 -1656 1674 8 1644 1650 -1656 1674 9 1644 1650 -1656 1674 6 1638 1620 1614 1644 10 1638 1620 -1614 1644 11 1638 1620 -1614 1644 12 1638 1620 -1614 1644 13 1626 1620 1614 1644 16 1626 1620 -1614 1644 17 1626 1620 -1614 1644 18 1626 1620 -1614 1644 19 1620 1614 1644 1647 3 1620 1614 1644 1650 26 1620 1614 -1644 1650 27 1620 1614 -1644 1650 28 1620 1614 -1644 1650 6 1614 1644 1650 1656 2 1608 1614 1620 1626 33 1608 1614 -1620 1626 34 1608 1614 -1620 1626 18 1608 1614 -1620 1626 35 1608 1614 1620 1638 36 1608 1614 -1620 1638 37 1608 1614 -1620 1638 12 1608 1614 -1620 1638 38 1608 1614 1644 1647 3 1608 1614 1644 1650 41 1608 1614 -1644 1650 42 1608 1614 -1644 1650 43 1608 1614 -1644 1650 6 1677 1674 1680 1683 2 1677 1674 1680 1710 2 1674 1680 1683 1692 1 1674 1680 -1683 1692 60 1674 1680 -1683 1692 28 1674 1680 -1683 1692 6 1674 1680 1710 1701 1 1674 1680 -1710 1701 4 1674 1680 -1710 1701 5 1674 1680 -1710 1701 6 1674 1680 1710 1716 7 1674 1680 -1710 1716 8 1674 1680 -1710 1716 9 1674 1680 -1710 1716 6 1671 1662 1656 1674 44 1671 1662 -1656 1674 45 1671 1662 -1656 1674 46 1671 1662 -1656 1674 47 1662 1656 1674 1677 3 1662 1656 1674 1680 26 1662 1656 -1674 1680 27 1662 1656 -1674 1680 28 1662 1656 -1674 1680 6 1656 1674 1680 1683 2 1656 1674 1680 1710 2 1650 1656 1662 1671 57 1650 1656 -1662 1671 58 1650 1656 -1662 1671 46 1650 1656 -1662 1671 59 1650 1656 1674 1677 3 1650 1656 1674 1680 41 1650 1656 -1674 1680 42 1650 1656 -1674 1680 43 1650 1656 -1674 1680 6 1719 1716 1722 1728 2 1716 1722 1728 1737 7 1716 1722 -1728 1737 8 1716 1722 -1728 1737 9 1716 1722 -1728 1737 6 1710 1716 1722 1728 2 1701 1710 1716 1719 3 1701 1710 1716 1722 26 1701 1710 -1716 1722 27 1701 1710 -1716 1722 28 1701 1710 -1716 1722 6 1692 1683 -1680 1710 3 1692 1701 1710 1716 24 1683 1680 -1710 1701 3 1683 1680 1710 1716 3 1683 1692 -1701 1710 62 1683 1692 -1701 1710 63 1683 1692 -1701 1710 64 1680 1683 -1692 1701 24 1680 1710 -1701 1692 24 1680 1710 1716 1719 3 1680 1710 1716 1722 41 1680 1710 -1716 1722 42 1680 1710 -1716 1722 43 1680 1710 -1716 1722 6 1740 1737 1743 1749 2 1737 1743 1749 1755 1 1737 1743 -1749 1755 4 1737 1743 -1749 1755 5 1737 1743 -1749 1755 6 1737 1743 1749 1773 7 1737 1743 -1749 1773 8 1737 1743 -1749 1773 9 1737 1743 -1749 1773 6 1728 1737 1743 1749 2 1722 1728 1737 1740 3 1722 1728 1737 1743 41 1722 1728 -1737 1743 42 1722 1728 -1737 1743 43 1722 1728 -1737 1743 6 1776 1773 1779 1785 2 1773 1779 1785 1791 1 1773 1779 -1785 1791 4 1773 1779 -1785 1791 5 1773 1779 -1785 1791 6 1773 1779 1785 1836 7 1773 1779 -1785 1836 8 1773 1779 -1785 1836 9 1773 1779 -1785 1836 6 1764 1755 1749 1773 136 1764 1755 -1749 1773 137 1764 1755 -1749 1773 138 1764 1755 -1749 1773 139 1755 1749 1773 1776 3 1755 1749 1773 1779 26 1755 1749 -1773 1779 27 1755 1749 -1773 1779 28 1755 1749 -1773 1779 6 1749 1755 1764 1767 7 1749 1755 -1764 1767 140 1749 1755 -1764 1767 15 1749 1755 -1764 1767 141 1749 1755 1764 1770 7 1749 1755 -1764 1770 140 1749 1755 -1764 1770 15 1749 1755 -1764 1770 141 1749 1773 1779 1785 2 1743 1749 1755 1764 142 1743 1749 -1755 1764 143 1743 1749 -1755 1764 138 1743 1749 -1755 1764 144 1743 1749 1773 1776 3 1743 1749 1773 1779 41 1743 1749 -1773 1779 42 1743 1749 -1773 1779 43 1743 1749 -1773 1779 6 1839 1836 1842 1848 2 1836 1842 1848 1854 1 1836 1842 -1848 1854 4 1836 1842 -1848 1854 5 1836 1842 -1848 1854 6 1836 1842 1848 1866 7 1836 1842 -1848 1866 8 1836 1842 -1848 1866 9 1836 1842 -1848 1866 6 1818 1815 1824 1830 102 1809 1803 1800 1830 102 1809 1815 -1824 1830 102 1803 1800 1830 1824 102 1803 1809 1815 1818 102 1803 1809 -1815 1824 102 1800 1791 1785 1836 103 1800 1791 -1785 1836 104 1800 1791 -1785 1836 105 1800 1791 -1785 1836 106 1800 1803 1809 1815 102 1800 1830 -1824 1815 102 1791 1785 1836 1839 3 1791 1785 1836 1842 26 1791 1785 -1836 1842 27 1791 1785 -1836 1842 28 1791 1785 -1836 1842 6 1791 1800 1803 1809 102 1791 1800 1830 1824 102 1785 1791 1800 1803 7 1785 1791 -1800 1803 107 1785 1791 -1800 1803 15 1785 1791 -1800 1803 108 1785 1791 1800 1830 7 1785 1791 -1800 1830 107 1785 1791 -1800 1830 15 1785 1791 -1800 1830 108 1785 1836 1842 1848 2 1779 1785 1791 1800 109 1779 1785 -1791 1800 110 1779 1785 -1791 1800 105 1779 1785 -1791 1800 111 1779 1785 1836 1839 3 1779 1785 1836 1842 41 1779 1785 -1836 1842 42 1779 1785 -1836 1842 43 1779 1785 -1836 1842 6 1869 1866 1872 1878 2 1866 1872 1878 1884 1 1866 1872 -1878 1884 4 1866 1872 -1878 1884 5 1866 1872 -1878 1884 6 1866 1872 1878 1908 7 1866 1872 -1878 1908 8 1866 1872 -1878 1908 9 1866 1872 -1878 1908 6 1854 1848 1866 1869 3 1854 1848 1866 1872 26 1854 1848 -1866 1872 27 1854 1848 -1866 1872 28 1854 1848 -1866 1872 6 1848 1866 1872 1878 2 1842 1848 1866 1869 3 1842 1848 1866 1872 41 1842 1848 -1866 1872 42 1842 1848 -1866 1872 43 1842 1848 -1866 1872 6 1893 1884 1878 1908 91 1893 1884 -1878 1908 92 1893 1884 -1878 1908 93 1893 1884 -1878 1908 94 1884 1878 1908 1911 3 1884 1878 1908 1914 3 1878 1884 1893 1896 7 1878 1884 1893 1899 95 1878 1884 -1893 1899 96 1878 1884 -1893 1899 97 1878 1884 -1893 1899 98 1872 1878 1884 1893 99 1872 1878 -1884 1893 100 1872 1878 -1884 1893 93 1872 1878 -1884 1893 101 1872 1878 1908 1911 3 1872 1878 1908 1914 3 12 48 -42 -45 145 54 90 -84 -87 145 96 120 -114 -117 145 126 150 -144 -147 145 180 192 -186 -189 145 144 153 -150 -180 147 198 225 -219 -222 145 231 282 -276 -279 145 288 330 -324 -327 145 336 360 -354 -357 145 366 432 -426 -429 145 399 408 -405 -417 145 438 465 -459 -462 145 471 507 -501 -504 145 477 492 -486 -489 145 513 567 -561 -564 145 531 555 -528 -519 146 573 609 -603 -606 145 579 594 -588 -591 145 615 657 -651 -654 145 663 687 -681 -684 145 693 759 -753 -756 145 726 735 -732 -744 145 765 816 -810 -813 145 846 858 -852 -855 145 810 819 -816 -846 147 864 879 -873 -876 145 885 921 -915 -918 145 927 954 -948 -951 145 960 999 -993 -996 145 975 987 -984 -990 145 1005 1029 -1023 -1026 145 1035 1086 -1080 -1083 145 1092 1116 -1110 -1113 145 1122 1146 -1140 -1143 145 1152 1188 -1182 -1185 145 1194 1251 -1245 -1248 145 1218 1233 -1224 -1227 146 1212 1239 -1209 -1200 146 1257 1293 -1287 -1290 145 1299 1314 -1308 -1311 145 1320 1344 -1338 -1341 145 1350 1401 -1395 -1398 145 1407 1458 -1452 -1455 145 1464 1515 -1509 -1512 145 1545 1557 -1551 -1554 145 1509 1518 -1515 -1545 147 1563 1578 -1572 -1575 145 1584 1608 -1602 -1605 145 1614 1650 -1644 -1647 145 1656 1680 -1674 -1677 145 1710 1722 -1716 -1719 145 1674 1683 -1680 -1710 147 1728 1743 -1737 -1740 145 1749 1779 -1773 -1776 145 1755 1767 -1764 -1770 145 1785 1842 -1836 -1839 145 1809 1824 -1815 -1818 146 1803 1830 -1800 -1791 146 1848 1872 -1866 -1869 145 1878 1911 -1908 -1914 145 1884 1899 -1893 -1896 145 %FLAG EXCLUDED_ATOMS_LIST %FORMAT(10I8) 2 3 4 5 6 7 8 9 13 15 16 17 3 4 5 6 7 15 4 5 6 7 15 5 6 7 15 6 7 8 9 10 11 12 13 14 15 16 17 18 19 7 8 9 13 15 16 17 8 9 10 11 12 13 14 15 16 17 9 10 11 12 13 14 15 10 11 12 13 14 15 11 12 13 12 13 13 14 15 0 16 17 18 19 20 21 29 17 18 19 18 19 20 21 22 23 27 29 30 31 19 20 21 29 20 21 22 23 24 25 26 27 28 29 30 31 32 33 21 22 23 27 29 30 31 22 23 24 25 26 27 28 29 30 31 23 24 25 26 27 28 29 24 25 26 27 28 29 25 26 27 26 27 27 28 29 0 30 31 32 33 34 35 39 31 32 33 32 33 34 35 36 37 38 39 40 41 33 34 35 39 34 35 36 37 38 39 40 41 42 43 558 35 36 37 38 39 40 41 36 37 38 39 40 41 555 558 37 38 39 558 38 39 558 39 553 555 556 557 558 40 41 42 43 44 45 49 41 42 43 42 43 44 45 46 47 48 49 50 51 43 44 45 49 44 45 46 47 48 49 50 51 52 61 446 45 46 47 48 49 50 51 46 47 48 49 50 51 443 446 47 48 49 446 48 49 446 49 441 443 444 445 446 50 51 52 53 54 55 58 61 62 63 51 52 61 52 53 54 55 56 57 58 59 60 61 62 63 64 65 53 54 55 56 57 58 59 60 61 62 63 54 55 56 57 58 61 55 56 57 58 61 56 57 58 59 60 61 62 63 57 58 59 60 61 58 59 60 61 59 60 61 62 63 64 65 60 61 62 63 61 62 63 62 63 64 65 66 67 63 64 65 64 65 66 67 68 69 74 65 66 67 66 67 68 69 70 71 72 74 75 76 67 68 69 74 68 69 70 71 72 73 74 75 76 77 78 69 70 71 72 74 75 76 70 71 72 73 74 75 76 71 72 73 74 72 73 74 73 74 0 75 76 77 78 79 80 93 76 77 78 77 78 79 80 81 82 86 93 94 95 78 79 80 93 79 80 81 82 83 84 85 86 87 88 89 93 94 95 96 97 80 81 82 86 93 94 95 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 82 83 84 85 86 87 88 89 93 83 84 85 86 87 88 89 93 84 85 86 85 86 86 87 88 89 90 91 92 93 88 89 90 91 92 89 90 91 92 90 91 92 91 92 92 0 94 95 96 97 98 99 109 95 96 97 96 97 98 99 100 101 105 109 110 111 97 98 99 109 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 99 100 101 105 109 110 111 100 101 102 103 104 105 106 107 108 109 110 111 101 102 103 104 105 106 107 108 109 102 103 104 105 106 107 108 109 103 104 105 104 105 105 106 107 108 109 107 108 108 0 110 111 112 113 114 115 119 111 112 113 112 113 114 115 116 117 118 119 120 121 113 114 115 119 114 115 116 117 118 119 120 121 122 123 115 116 117 118 119 120 121 116 117 118 119 120 121 117 118 119 118 119 119 120 121 122 123 124 125 143 121 122 123 122 123 124 125 126 127 128 143 144 145 123 124 125 143 124 125 126 127 128 129 130 131 143 144 145 146 147 125 126 127 128 143 144 145 126 127 128 129 130 131 132 133 134 143 144 145 127 128 129 130 131 143 128 129 130 131 143 129 130 131 132 133 134 135 136 143 130 131 132 133 134 131 132 133 134 132 133 134 135 136 137 140 133 134 135 136 134 135 136 135 136 137 138 139 140 141 142 136 137 140 137 138 139 140 141 142 138 139 140 141 142 139 140 140 141 142 142 0 144 145 146 147 148 149 154 145 146 147 146 147 148 149 150 151 152 154 155 156 147 148 149 154 148 149 150 151 152 153 154 155 156 157 158 149 150 151 152 154 155 156 150 151 152 153 154 155 156 151 152 153 154 152 153 154 153 154 0 155 156 157 158 159 160 168 156 157 158 157 158 159 160 161 162 163 168 169 170 158 159 160 168 159 160 161 162 163 164 165 168 169 170 171 172 160 161 162 163 168 169 170 161 162 163 164 165 166 167 168 169 170 162 163 164 165 168 163 164 165 168 164 165 166 167 168 165 166 167 166 167 167 0 169 170 171 172 173 174 188 170 171 172 171 172 173 174 175 176 177 188 189 190 172 173 174 188 173 174 175 176 177 178 186 188 189 190 191 192 174 175 176 177 188 189 190 175 176 177 178 179 180 184 186 187 188 189 190 176 177 178 186 188 177 178 186 188 178 179 180 181 182 184 185 186 187 188 179 180 181 182 183 184 186 187 180 181 182 186 181 182 183 184 185 186 182 183 184 183 184 185 186 187 184 185 186 185 186 187 186 187 187 0 189 190 191 192 193 194 202 190 191 192 191 192 193 194 195 196 197 202 203 204 192 193 194 202 193 194 195 196 197 198 199 202 203 204 205 206 194 195 196 197 202 203 204 195 196 197 198 199 200 201 202 203 204 196 197 198 199 202 197 198 199 202 198 199 200 201 202 199 200 201 200 201 201 0 203 204 205 206 207 208 218 204 205 206 205 206 207 208 209 210 214 218 219 220 206 207 208 218 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 208 209 210 214 218 219 220 209 210 211 212 213 214 215 216 217 218 219 220 210 211 212 213 214 215 216 217 218 211 212 213 214 215 216 217 218 212 213 214 213 214 214 215 216 217 218 216 217 217 0 219 220 221 222 223 224 228 220 221 222 221 222 223 224 225 226 227 228 229 230 222 223 224 228 223 224 225 226 227 228 229 230 231 232 370 224 225 226 227 228 229 230 225 226 227 228 229 230 367 370 226 227 228 370 227 228 370 228 365 367 368 369 370 229 230 231 232 233 234 252 230 231 232 231 232 233 234 235 236 237 252 253 254 232 233 234 252 233 234 235 236 237 238 239 240 252 253 254 255 256 234 235 236 237 252 253 254 235 236 237 238 239 240 241 242 243 252 253 254 236 237 238 239 240 252 237 238 239 240 252 238 239 240 241 242 243 244 245 252 239 240 241 242 243 240 241 242 243 241 242 243 244 245 246 249 242 243 244 245 243 244 245 244 245 246 247 248 249 250 251 245 246 249 246 247 248 249 250 251 247 248 249 250 251 248 249 249 250 251 251 0 253 254 255 256 257 258 271 254 255 256 255 256 257 258 259 260 261 271 272 273 256 257 258 271 257 258 259 260 261 262 263 267 271 272 273 274 283 258 259 260 261 271 272 273 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 260 261 262 263 267 271 261 262 263 267 271 262 263 264 265 266 267 268 269 270 271 263 264 265 266 267 268 269 270 264 265 266 267 268 269 270 265 266 267 266 267 267 268 269 270 269 270 270 0 272 273 274 275 276 277 280 283 284 285 273 274 283 274 275 276 277 278 279 280 281 282 283 284 285 286 287 275 276 277 278 279 280 281 282 283 284 285 276 277 278 279 280 283 277 278 279 280 283 278 279 280 281 282 283 284 285 279 280 281 282 283 280 281 282 283 281 282 283 284 285 286 287 282 283 284 285 283 284 285 284 285 286 287 288 289 285 286 287 286 287 288 289 290 291 292 287 288 289 288 289 290 291 292 293 294 289 290 291 292 290 291 292 293 294 295 296 291 292 293 294 292 293 294 293 294 295 296 297 298 306 294 295 296 295 296 297 298 299 300 304 306 307 308 296 297 298 306 297 298 299 300 301 302 303 304 305 306 307 308 309 310 298 299 300 304 306 307 308 299 300 301 302 303 304 305 306 307 308 300 301 302 303 304 305 306 301 302 303 304 305 306 302 303 304 303 304 304 305 306 0 307 308 309 310 311 312 317 308 309 310 309 310 311 312 313 314 315 317 318 319 310 311 312 317 311 312 313 314 315 316 317 318 319 320 321 312 313 314 315 317 318 319 313 314 315 316 317 318 319 314 315 316 317 315 316 317 316 317 0 318 319 320 321 322 323 332 319 320 321 320 321 322 323 324 325 326 332 333 334 321 322 323 332 322 323 324 325 326 327 328 329 332 333 334 335 336 323 324 325 326 332 333 334 324 325 326 327 328 329 330 331 332 333 334 325 326 327 328 329 332 326 327 328 329 332 327 328 329 330 331 332 328 329 330 331 329 330 331 330 331 331 0 333 334 335 336 337 338 342 334 335 336 335 336 337 338 339 340 341 342 343 344 336 337 338 342 337 338 339 340 341 342 343 344 345 346 338 339 340 341 342 343 344 339 340 341 342 343 344 340 341 342 341 342 342 343 344 345 346 347 348 361 344 345 346 345 346 347 348 349 350 354 361 362 363 346 347 348 361 347 348 349 350 351 352 353 354 355 356 357 361 362 363 364 365 348 349 350 354 361 362 363 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 350 351 352 353 354 355 356 357 361 351 352 353 354 355 356 357 361 352 353 354 353 354 354 355 356 357 358 359 360 361 356 357 358 359 360 357 358 359 360 358 359 360 359 360 360 0 362 363 364 365 366 367 371 363 364 365 364 365 366 367 368 369 370 371 372 373 365 366 367 371 366 367 368 369 370 371 372 373 374 375 367 368 369 370 371 372 373 368 369 370 371 372 373 369 370 371 370 371 371 372 373 374 375 376 377 381 373 374 375 374 375 376 377 378 379 380 381 382 383 375 376 377 381 376 377 378 379 380 381 382 383 384 385 377 378 379 380 381 382 383 378 379 380 381 382 383 379 380 381 380 381 381 382 383 384 385 386 387 395 383 384 385 384 385 386 387 388 389 393 395 396 397 385 386 387 395 386 387 388 389 390 391 392 393 394 395 396 397 398 399 387 388 389 393 395 396 397 388 389 390 391 392 393 394 395 396 397 389 390 391 392 393 394 395 390 391 392 393 394 395 391 392 393 392 393 393 394 395 0 396 397 398 399 400 401 416 397 398 399 398 399 400 401 402 403 404 416 417 418 399 400 401 416 400 401 402 403 404 405 414 416 417 418 419 420 401 402 403 404 416 417 418 402 403 404 405 406 407 412 414 415 416 417 418 403 404 405 414 416 404 405 414 416 405 406 407 408 409 412 413 414 415 416 406 407 408 409 410 412 414 415 407 408 409 414 408 409 410 411 412 413 414 409 410 412 410 411 412 413 414 415 411 412 413 414 412 413 414 415 414 415 415 0 417 418 419 420 421 422 430 418 419 420 419 420 421 422 423 424 428 430 431 432 420 421 422 430 421 422 423 424 425 426 427 428 429 430 431 432 433 434 422 423 424 428 430 431 432 423 424 425 426 427 428 429 430 431 432 424 425 426 427 428 429 430 425 426 427 428 429 430 426 427 428 427 428 428 429 430 0 431 432 433 434 435 436 437 432 433 434 433 434 435 436 437 438 439 434 435 436 437 435 436 437 438 439 440 441 436 437 438 439 437 438 439 438 439 440 441 442 443 447 439 440 441 440 441 442 443 444 445 446 447 448 449 441 442 443 447 442 443 444 445 446 447 448 449 450 451 443 444 445 446 447 448 449 444 445 446 447 448 449 445 446 447 446 447 447 448 449 450 451 452 453 466 449 450 451 450 451 452 453 454 455 459 466 467 468 451 452 453 466 452 453 454 455 456 457 458 459 460 461 462 466 467 468 469 470 453 454 455 459 466 467 468 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 455 456 457 458 459 460 461 462 466 456 457 458 459 460 461 462 466 457 458 459 458 459 459 460 461 462 463 464 465 466 461 462 463 464 465 462 463 464 465 463 464 465 464 465 465 0 467 468 469 470 471 472 485 468 469 470 469 470 471 472 473 474 478 485 486 487 470 471 472 485 471 472 473 474 475 476 477 478 479 480 481 485 486 487 488 489 472 473 474 478 485 486 487 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 474 475 476 477 478 479 480 481 485 475 476 477 478 479 480 481 485 476 477 478 477 478 478 479 480 481 482 483 484 485 480 481 482 483 484 481 482 483 484 482 483 484 483 484 484 0 486 487 488 489 490 491 504 487 488 489 488 489 490 491 492 493 497 504 505 506 489 490 491 504 490 491 492 493 494 495 496 497 498 499 500 504 505 506 507 516 491 492 493 497 504 505 506 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 493 494 495 496 497 498 499 500 504 494 495 496 497 498 499 500 504 495 496 497 496 497 497 498 499 500 501 502 503 504 499 500 501 502 503 500 501 502 503 501 502 503 502 503 503 0 505 506 507 508 509 510 513 516 517 518 506 507 516 507 508 509 510 511 512 513 514 515 516 517 518 519 520 508 509 510 511 512 513 514 515 516 517 518 509 510 511 512 513 516 510 511 512 513 516 511 512 513 514 515 516 517 518 512 513 514 515 516 513 514 515 516 514 515 516 517 518 519 520 515 516 517 518 516 517 518 517 518 519 520 521 522 518 519 520 519 520 521 522 523 524 525 520 521 522 521 522 523 524 525 526 527 522 523 524 525 523 524 525 526 527 528 529 524 525 526 527 525 526 527 526 527 528 529 530 531 535 527 528 529 528 529 530 531 532 533 534 535 536 537 529 530 531 535 530 531 532 533 534 535 536 537 538 539 531 532 533 534 535 536 537 532 533 534 535 536 537 533 534 535 534 535 535 536 537 538 539 540 541 549 537 538 539 538 539 540 541 542 543 547 549 550 551 539 540 541 549 540 541 542 543 544 545 546 547 548 549 550 551 552 553 541 542 543 547 549 550 551 542 543 544 545 546 547 548 549 550 551 543 544 545 546 547 548 549 544 545 546 547 548 549 545 546 547 546 547 547 548 549 0 550 551 552 553 554 555 559 551 552 553 552 553 554 555 556 557 558 559 560 561 553 554 555 559 554 555 556 557 558 559 560 561 562 571 555 556 557 558 559 560 561 556 557 558 559 560 561 557 558 559 558 559 559 560 561 562 563 564 565 568 571 572 573 561 562 571 562 563 564 565 566 567 568 569 570 571 572 573 574 575 563 564 565 566 567 568 569 570 571 572 573 564 565 566 567 568 571 565 566 567 568 571 566 567 568 569 570 571 572 573 567 568 569 570 571 568 569 570 571 569 570 571 572 573 574 575 570 571 572 573 571 572 573 572 573 574 575 576 577 573 574 575 574 575 576 577 578 579 580 575 576 577 576 577 578 579 580 581 582 577 578 579 580 578 579 580 581 582 583 584 579 580 581 582 580 581 582 581 582 583 584 585 586 592 582 583 584 583 584 585 586 587 588 589 592 593 594 584 585 586 592 585 586 587 588 589 590 591 592 593 594 595 596 586 587 588 589 592 593 594 587 588 589 590 591 592 593 594 588 589 590 591 592 589 590 591 592 590 591 592 591 0 593 594 595 596 597 598 613 594 595 596 595 596 597 598 599 600 601 613 614 615 596 597 598 613 597 598 599 600 601 602 611 613 614 615 616 617 598 599 600 601 613 614 615 599 600 601 602 603 604 609 611 612 613 614 615 600 601 602 611 613 601 602 611 613 602 603 604 605 606 609 610 611 612 613 603 604 605 606 607 609 611 612 604 605 606 611 605 606 607 608 609 610 611 606 607 609 607 608 609 610 611 612 608 609 610 611 609 610 611 612 611 612 612 0 614 615 616 617 618 619 623 615 616 617 616 617 618 619 620 621 622 623 624 625 617 618 619 623 618 619 620 621 622 623 624 625 626 627 619 620 621 622 623 624 625 620 621 622 623 624 625 621 622 623 622 623 623 624 625 626 627 628 629 637 625 626 627 626 627 628 629 630 631 632 637 638 639 627 628 629 637 628 629 630 631 632 633 634 637 638 639 629 630 631 632 637 638 639 630 631 632 633 634 635 636 637 638 639 631 632 633 634 637 632 633 634 637 633 634 635 636 637 634 635 636 635 636 636 0 638 639 639 0 %FLAG HBOND_ACOEF %FORMAT(5E16.8) %FLAG HBOND_BCOEF %FORMAT(5E16.8) %FLAG HBCUT %FORMAT(5E16.8) %FLAG AMBER_ATOM_TYPE %FORMAT(20a4) N3 H H H CX HP 3C H1 CT HC HC HC OH HO C O N H CX H1 3C H1 CT HC HC HC OH HO C O N H CX H1 2C H1 H1 S C O N H CX H1 2C H1 H1 S C O N CT H1 H1 CT HC HC CT HC HC CX H1 C O N H CX H1 2C H1 H1 OH HO C O N H CX H1 3C HC CT HC HC HC 2C HC HC CT HC HC HC C O N H CX H1 3C HC CT HC HC HC CT HC HC HC C O N H CX H1 CT HC HC HC C O N H CX H1 C8 HC HC C8 HC HC C8 H1 H1 N2 H CA N2 H H N2 H H C O N H CX H1 2C H1 H1 OH HO C O N H CX H1 2C HC HC C O N H H C O N H CX H1 CT HC HC CA CA HA CA HA CA HA CA HA CA HA C O N H CX H1 2C HC HC C O N H H C O N H CX H1 3C HC CT HC HC HC CT HC HC HC C O N H CX H1 2C H1 H1 S C O N H CX H1 C8 HC HC C8 HC HC C8 H1 H1 N2 H CA N2 H H N2 H H C O N H CX H1 2C HC HC 3C HC CT HC HC HC CT HC HC HC C O N CT H1 H1 CT HC HC CT HC HC CX H1 C O N H CX H1 H1 C O N H CX H1 3C H1 CT HC HC HC OH HO C O N H CX H1 2C H1 H1 OH HO C O N H CX H1 2C HC HC 2C HC HC CO O2 O2 C O N H CX H1 CT HC HC HC C O N H CX H1 3C HC CT HC HC HC 2C HC HC CT HC HC HC C O N H CX H1 2C H1 H1 S C O N H CX H1 CT HC HC HC C O N H CX H1 3C H1 CT HC HC HC OH HO C O N H CX H1 CT HC HC CA CA HA CA HA C OH HO CA HA CA HA C O N H CX H1 3C H1 CT HC HC HC OH HO C O N H CX H1 H1 C O N H CX H1 2C H1 H1 S C O N H CX H1 3C HC CT HC HC HC 2C HC HC CT HC HC HC C O N H CX H1 3C HC CT HC HC HC 2C HC HC CT HC HC HC C O N H CX H1 3C HC CT HC HC HC 2C HC HC CT HC HC HC C O N CT H1 H1 CT HC HC CT HC HC CX H1 C O N H CX H1 H1 C O N H CX H1 CT HC HC HC C O N H CX H1 3C H1 CT HC HC HC OH HO C O N H CX H1 2C H1 H1 S C O N CT H1 H1 CT HC HC CT HC HC CX H1 C O N H CX H1 H1 C O N H CX H1 2C HC HC CO O2 O2 C O N H CX H1 CT HC HC CA CA HA CA HA C OH HO CA HA CA HA C O N H CX H1 CT HC HC HC C O N H CX H1 2C HC HC C O N H H C O2 O2 %FLAG TREE_CHAIN_CLASSIFICATION %FORMAT(20a4) BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA M E M E 3 E 3 E E E S E M E M E M E 3 E E E M E M E M E 3 E E E M E M 3 E E 3 E E B E E M E M E M E M E 3 E E S E M E M E M E 3 E 3 E E E 3 E E 3 E E E M E M E M E 3 E 3 E E E 3 E E E M E M E M E 3 E E E M E M E M E 3 E E 3 E E 3 E E B E B B E E B E E M E M E M E 3 E E S E M E M E M E 3 E E B E B E E M E M E M E 3 E E B B E B E B E S E S E M E M E M E 3 E E B E B E E M E M E M E 3 E 3 E E E 3 E E E M E M E M E 3 E E E M E M E M E 3 E E 3 E E 3 E E B E B B E E B E E M E M E M E 3 E E 3 E 3 E E E 3 E E E M E M 3 E E 3 E E B E E M E M E M E M E E M E M E M E 3 E 3 E E E S E M E M E M E 3 E E S E M E M E M E 3 E E 3 E E B E E M E M E M E 3 E E E M E M E M E 3 E 3 E E E 3 E E 3 E E E M E M E M E 3 E E E M E M E M E 3 E E E M E M E M E 3 E 3 E E E S E M E M E M E 3 E E B B E B E B S E S E S E M E M E M E 3 E 3 E E E S E M E M E M E E M E M E M E 3 E E E M E M E M E 3 E 3 E E E 3 E E 3 E E E M E M E M E 3 E 3 E E E 3 E E 3 E E E M E M E M E 3 E 3 E E E 3 E E 3 E E E M E M 3 E E 3 E E B E E M E M E M E M E E M E M E M E 3 E E E M E M E M E 3 E 3 E E E S E M E M E M E 3 E E E M E M 3 E E 3 E E B E E M E M E M E M E E M E M E M E 3 E E B E E M E M E M E 3 E E B B E B E B S E S E S E M E M E M E 3 E E E M E BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA %FLAG JOIN_ARRAY %FORMAT(10I8) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 %FLAG IROTAT %FORMAT(10I8) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 %FLAG RADIUS_SET %FORMAT(1a80) modified Bondi radii (mbondi) %FLAG RADII %FORMAT(5E16.8) 1.55000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.50000000E+00 8.00000000E-01 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.50000000E+00 8.00000000E-01 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.20000000E+00 1.80000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.20000000E+00 1.80000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.20000000E+00 1.50000000E+00 8.00000000E-01 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.20000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.55000000E+00 1.30000000E+00 1.30000000E+00 1.55000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.20000000E+00 1.50000000E+00 8.00000000E-01 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.20000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.20000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.20000000E+00 1.80000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.55000000E+00 1.30000000E+00 1.30000000E+00 1.55000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.20000000E+00 1.70000000E+00 1.20000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.50000000E+00 8.00000000E-01 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.20000000E+00 1.50000000E+00 8.00000000E-01 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.20000000E+00 1.70000000E+00 1.20000000E+00 1.20000000E+00 1.70000000E+00 1.50000000E+00 1.50000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.20000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.20000000E+00 1.80000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.50000000E+00 8.00000000E-01 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 8.00000000E-01 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.50000000E+00 8.00000000E-01 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.20000000E+00 1.80000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.20000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.20000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.20000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.50000000E+00 8.00000000E-01 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.20000000E+00 1.80000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.20000000E+00 1.70000000E+00 1.50000000E+00 1.50000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 8.00000000E-01 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.70000000E+00 1.30000000E+00 1.70000000E+00 1.20000000E+00 1.20000000E+00 1.70000000E+00 1.50000000E+00 1.55000000E+00 1.30000000E+00 1.30000000E+00 1.70000000E+00 1.50000000E+00 1.50000000E+00 %FLAG SCREEN %FORMAT(5E16.8) 7.90000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 9.60000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 9.60000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 7.90000000E-01 8.50000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 9.60000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 7.90000000E-01 8.50000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 9.60000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 9.60000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 9.60000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 7.90000000E-01 8.50000000E-01 8.50000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 %FLAG IPOL %FORMAT(1I8) 0 bio3d/inst/examples/crambin.inpcrd0000644000176200001440000005546014707230357016703 0ustar liggesusersdefault_name 639 -7.6740000 -4.4150000 -3.5150000 -8.1310000 -4.5230000 -2.6780000 -8.3170000 -4.3550000 -4.2250000 -7.0990000 -5.1690000 -3.6660000 -6.8580000 -3.1690000 -3.4770000 -7.4350000 -2.3780000 -3.4280000 -5.9250000 -3.1900000 -2.3010000 -5.3500000 -3.9700000 -2.3570000 -5.0540000 -1.9550000 -2.2320000 -4.4730000 -2.0060000 -1.4700000 -4.5210000 -1.8860000 -3.0270000 -5.6030000 -1.1710000 -2.1560000 -6.7140000 -3.2670000 -1.1240000 -7.1680000 -3.9500000 -1.1350000 -6.0560000 -3.1320000 -4.7430000 -5.5470000 -4.1640000 -5.1800000 -5.9320000 -1.9510000 -5.3350000 -6.2860000 -1.2200000 -5.0510000 -5.1600000 -1.8100000 -6.5500000 -4.9520000 -2.7000000 -6.9020000 -5.9170000 -1.0440000 -7.6210000 -5.3530000 -0.9380000 -8.4030000 -7.1740000 -1.7800000 -8.0320000 -7.6390000 -1.2820000 -8.7080000 -6.9470000 -2.6450000 -8.3820000 -7.7520000 -1.8920000 -7.2740000 -6.2510000 0.2300000 -7.1040000 -6.7210000 0.1480000 -6.4360000 -3.8320000 -1.1010000 -6.2280000 -3.7800000 -0.1720000 -5.4210000 -2.7720000 -1.5590000 -6.9030000 -2.8150000 -2.1940000 -7.4800000 -1.4300000 -1.0300000 -6.7340000 -1.4480000 -0.1920000 -6.2250000 -0.5210000 -2.0450000 -6.0300000 -0.3540000 -2.7830000 -6.6360000 0.3170000 -1.6090000 -5.8080000 -1.1970000 -2.7350000 -4.5050000 -0.8590000 -0.7730000 -8.1370000 -0.9630000 -1.6310000 -9.0010000 -0.2400000 0.3810000 -8.3650000 -0.0920000 0.9840000 -7.7690000 0.2480000 0.7160000 -9.6970000 0.0530000 -0.0280000 -10.3050000 -0.4740000 1.9550000 -10.2190000 -0.4040000 2.6610000 -9.5570000 -0.0540000 2.2370000 -11.0470000 -2.2380000 1.6770000 -10.5550000 1.7670000 0.9460000 -9.6990000 2.3370000 1.4130000 -8.7180000 2.4290000 0.6140000 -10.8310000 1.8690000 -0.0700000 -12.0100000 1.1340000 0.4420000 -12.3830000 1.5970000 -0.9730000 -11.7830000 3.0460000 -0.0930000 -12.9740000 3.1150000 0.7440000 -13.4600000 2.9830000 -0.8460000 -13.5820000 4.2290000 -0.2600000 -12.0750000 5.0400000 0.0480000 -12.5070000 4.3160000 -1.1810000 -11.7830000 3.8990000 0.6430000 -10.8710000 4.2670000 0.2410000 -10.0570000 4.5040000 2.0310000 -11.0620000 5.7030000 2.1890000 -10.8550000 3.7040000 3.0040000 -11.4760000 2.8740000 2.8950000 -11.6690000 4.1730000 4.3770000 -11.6440000 4.7860000 4.6060000 -10.9150000 4.8990000 4.5710000 -12.9670000 5.3390000 5.4360000 -12.9660000 5.5510000 3.8630000 -13.0810000 3.9730000 4.5240000 -14.0240000 4.3590000 4.6280000 -14.7400000 2.9580000 5.3060000 -11.5700000 1.8020000 4.8620000 -11.6360000 3.2380000 6.5980000 -11.4440000 4.0340000 6.9150000 -11.3690000 2.1980000 7.6100000 -11.4200000 1.5870000 7.4120000 -10.6800000 2.8300000 8.9880000 -11.1440000 3.6160000 9.0760000 -11.7050000 1.8790000 10.1080000 -11.4920000 2.3050000 10.9480000 -11.3080000 1.6580000 10.0500000 -12.4250000 1.0850000 10.0190000 -10.9600000 3.2870000 9.0220000 -9.6810000 2.5090000 8.9200000 -9.1100000 3.9020000 8.2870000 -9.5300000 3.9740000 10.2720000 -9.2880000 4.2250000 10.2120000 -8.3630000 4.7550000 10.3840000 -9.8340000 3.3750000 11.0110000 -9.4180000 1.3790000 7.5960000 -12.7120000 0.1530000 7.6610000 -12.6560000 2.0290000 7.5250000 -13.8680000 2.8830000 7.4670000 -13.9520000 1.2920000 7.5410000 -15.1220000 0.7310000 8.3440000 -15.1490000 2.2730000 7.6010000 -16.3370000 3.0350000 7.0180000 -16.1380000 1.6500000 7.0910000 -17.6060000 2.2940000 7.1510000 -18.3150000 1.3870000 6.1770000 -17.4780000 0.8820000 7.6280000 -17.8140000 2.8220000 8.9940000 -16.5300000 3.4190000 8.9920000 -17.2820000 2.0930000 9.5970000 -16.6910000 3.2960000 9.2550000 -15.7370000 0.3730000 6.3260000 -15.2020000 -0.7500000 6.4370000 -15.6800000 0.8280000 5.1700000 -14.7290000 1.6100000 5.0470000 -14.3940000 -0.0220000 3.9840000 -14.7550000 -0.3070000 3.8300000 -15.6800000 0.7370000 2.7550000 -14.3080000 0.1480000 1.9970000 -14.3380000 1.4810000 2.6150000 -14.8990000 1.0510000 2.8910000 -13.4110000 -1.2950000 4.1980000 -13.9110000 -2.3800000 3.7880000 -14.3100000 -1.1560000 4.8030000 -12.7340000 -0.4050000 5.0400000 -12.3900000 -2.3280000 5.1200000 -11.9110000 -2.8330000 4.2960000 -11.7500000 -1.8850000 5.6660000 -10.5630000 -1.4000000 4.9720000 -10.0900000 -1.3040000 6.4290000 -10.7110000 -3.0370000 6.1260000 -9.6640000 -2.6650000 6.5670000 -8.8840000 -3.5890000 6.7500000 -10.1610000 -3.9400000 4.9980000 -9.1730000 -4.7050000 5.3770000 -8.7130000 -4.2300000 4.4670000 -9.9300000 -3.2370000 4.1300000 -8.2490000 -2.4310000 4.3390000 -8.0340000 -3.7800000 3.0740000 -7.6630000 -5.0400000 2.7300000 -7.9010000 -5.5210000 3.2010000 -8.4370000 -5.3780000 2.0400000 -7.5140000 -3.0360000 2.3450000 -6.8450000 -2.2200000 2.5690000 -6.6930000 -3.3730000 1.6570000 -6.4560000 -3.2610000 6.1100000 -12.6000000 -4.4770000 5.9360000 -12.5650000 -2.7150000 7.1610000 -13.1950000 -1.8740000 7.3390000 -13.2230000 -3.5740000 8.1170000 -13.8700000 -4.2250000 8.4710000 -13.2300000 -2.7510000 9.2800000 -14.4030000 -2.0390000 8.9360000 -14.9640000 -3.3270000 9.8690000 -14.9160000 -2.1900000 10.0000000 -13.3350000 -2.4090000 9.6600000 -12.6220000 -4.3400000 7.4360000 -15.0020000 -5.5380000 7.7180000 -15.2090000 -3.6730000 6.5540000 -15.7430000 -2.8400000 6.3620000 -15.6440000 -4.3370000 5.8280000 -16.8130000 -4.7880000 6.4700000 -17.4010000 -3.3070000 5.0660000 -17.6500000 -2.7160000 4.5780000 -17.0540000 -3.7710000 4.4470000 -18.2350000 -2.4600000 5.9670000 -18.5050000 -2.8470000 7.0960000 -18.8130000 -1.3010000 5.4720000 -18.9080000 -0.7780000 5.9460000 -19.4000000 -1.0700000 4.6750000 -18.6790000 -5.4030000 4.8630000 -16.2610000 -6.4700000 4.7000000 -16.8510000 -5.1180000 4.2290000 -15.1310000 -4.3690000 4.2960000 -14.7130000 -6.0790000 3.3410000 -14.4860000 -6.3150000 2.6190000 -15.1050000 -5.4410000 2.7090000 -13.2380000 -4.6100000 2.2800000 -13.4960000 -5.2620000 3.4090000 -12.5910000 -6.3000000 1.6740000 -12.5660000 -7.2090000 2.0230000 -11.5840000 -7.3030000 2.9140000 -11.3360000 -7.9950000 1.0430000 -10.9730000 -8.6070000 1.2810000 -10.3140000 -7.8550000 -0.2780000 -11.3400000 -8.3790000 -0.9290000 -10.9330000 -6.9560000 -0.6360000 -12.3100000 -6.8650000 -1.5280000 -12.5570000 -6.1780000 0.3350000 -12.9150000 -5.5690000 0.0890000 -13.5730000 -7.3640000 4.0990000 -14.1270000 -8.4800000 3.6170000 -14.3500000 -7.2130000 5.3000000 -13.5710000 -6.4560000 5.6820000 -13.4240000 -8.3710000 6.0740000 -13.1590000 -8.9330000 5.5040000 -12.5940000 -7.9600000 7.2760000 -12.3150000 -7.2250000 7.7350000 -12.7510000 -8.7180000 7.8730000 -12.2200000 -7.5050000 6.8590000 -10.9270000 -7.8870000 5.7990000 -10.4290000 -6.7100000 7.6990000 -10.2900000 -6.4260000 7.5080000 -9.5010000 -6.4760000 8.4380000 -10.6640000 -9.2220000 6.5010000 -14.3560000 -10.4490000 6.5460000 -14.2470000 -8.5930000 6.8200000 -15.4820000 -7.7400000 6.8660000 -15.5800000 -9.3670000 7.1250000 -16.6770000 -10.0660000 7.7680000 -16.4340000 -8.4910000 7.7880000 -17.7560000 -7.6860000 7.2480000 -17.8970000 -9.2420000 7.8800000 -19.0740000 -8.6750000 8.2960000 -19.7280000 -9.4790000 6.9950000 -19.3610000 -10.0350000 8.4060000 -18.9460000 -8.0650000 9.1610000 -17.2790000 -7.5200000 9.5710000 -17.9540000 -8.8480000 9.6940000 -17.1220000 -7.5640000 9.0670000 -16.4650000 -10.0720000 5.8540000 -17.1860000 -11.2460000 5.9030000 -17.5550000 -9.3690000 4.7170000 -17.1970000 -8.5420000 4.6610000 -16.9670000 -9.9550000 3.4420000 -17.6090000 -10.2100000 3.4980000 -18.5530000 -8.8830000 2.3580000 -17.4710000 -8.1330000 2.5920000 -18.0410000 -8.5920000 2.3280000 -16.5460000 -9.4180000 0.6890000 -17.9300000 -11.2190000 3.1160000 -16.7930000 -12.1870000 2.5620000 -17.3240000 -11.2220000 3.4720000 -15.5140000 -10.5770000 3.8840000 -15.1200000 -12.3660000 3.1790000 -14.6480000 -12.6790000 2.2710000 -14.8420000 -11.9120000 3.2130000 -13.1830000 -11.4110000 4.0290000 -13.0290000 -12.6960000 3.1930000 -12.6120000 -11.0190000 2.0320000 -12.7980000 -10.3810000 1.8690000 -13.5100000 -10.5540000 2.2410000 -11.9720000 -11.8300000 0.7530000 -12.5790000 -12.4680000 0.6480000 -13.3020000 -11.2290000 -0.0070000 -12.5450000 -12.5690000 0.8170000 -11.3120000 -12.2630000 1.3440000 -10.7060000 -13.6700000 0.1320000 -11.0190000 -14.2490000 -0.6470000 -11.9000000 -13.9120000 -0.7330000 -12.6860000 -14.9660000 -1.0750000 -11.6910000 -14.1900000 0.2150000 -9.8050000 -13.8330000 0.7340000 -9.2200000 -14.9200000 -0.2000000 -9.6220000 -13.5510000 4.1230000 -14.8260000 -14.6500000 3.7960000 -14.3800000 -13.3720000 5.2750000 -15.4690000 -12.6390000 5.5150000 -15.8500000 -14.4630000 6.2600000 -15.5740000 -14.6770000 6.5620000 -14.6670000 -14.0490000 7.5050000 -16.3670000 -13.5640000 7.2180000 -17.1570000 -14.8520000 7.9780000 -16.6360000 -13.1630000 8.4970000 -15.6240000 -12.3800000 8.0290000 -15.2950000 -12.6890000 9.5700000 -16.5950000 -12.1310000 10.1930000 -16.1240000 -12.1900000 9.1530000 -17.3020000 -13.4530000 10.0230000 -16.9580000 -13.8700000 9.1210000 -14.4250000 -13.2700000 9.7350000 -13.9950000 -14.6510000 9.5870000 -14.7310000 -14.1210000 8.4250000 -13.8140000 -15.7620000 5.6820000 -16.1630000 -16.8410000 5.9520000 -15.6320000 -15.7050000 4.8950000 -17.2510000 -14.5800000 4.6830000 -18.1760000 -13.8630000 4.2080000 -17.7300000 -14.2740000 5.5320000 -18.5320000 -15.1580000 3.8410000 -19.2700000 -14.9040000 2.9130000 -19.1470000 -14.8520000 4.1600000 -20.1340000 -16.6200000 3.9520000 -19.2070000 -17.0350000 3.1020000 -19.4240000 -16.9350000 4.6470000 -19.8050000 -16.9570000 4.3290000 -17.7620000 -17.6550000 5.0170000 -17.7690000 -17.4660000 3.1170000 -16.9860000 -18.5360000 2.6210000 -17.3130000 -16.7190000 2.6460000 -15.9970000 -15.9590000 2.9730000 -15.7630000 -17.1420000 1.5060000 -15.2120000 -16.9910000 1.6990000 -14.2730000 -18.0940000 1.3720000 -15.3410000 -16.4350000 0.1930000 -15.5380000 -16.8240000 -0.8440000 -15.0140000 -15.3990000 0.2510000 -16.3740000 -15.1110000 0.9810000 -16.7250000 -14.6430000 -0.9250000 -16.7810000 -15.1880000 -1.5090000 -17.3490000 -13.3870000 -0.4760000 -17.5500000 -12.7550000 -0.0990000 -16.9180000 -12.7070000 -1.6340000 -18.2430000 -11.9300000 -1.3240000 -18.7130000 -12.4390000 -2.2910000 -17.5960000 -13.3100000 -2.0400000 -18.8700000 -13.7440000 0.5380000 -18.5020000 -14.0680000 1.1850000 -18.1150000 -14.1660000 -1.6980000 -15.5540000 -13.6500000 -1.0990000 -14.6220000 -14.2820000 -3.0230000 -15.5710000 -14.7023529 -3.5035805 -16.3535887 -13.8290000 -3.8160000 -14.4360000 -14.3650000 -3.5860000 -13.6480000 -13.9990000 -5.3010000 -14.7080000 -13.7960000 -5.8000000 -13.9010000 -14.9110000 -5.4730000 -14.9900000 -13.1080000 -5.6960000 -15.7390000 -12.6700000 -5.0510000 -15.9940000 -12.3650000 -3.5400000 -14.1130000 -11.5310000 -3.3260000 -15.0030000 -12.0460000 -3.6140000 -12.8270000 -12.6060000 -3.7650000 -12.1920000 -10.6790000 -3.4370000 -12.3870000 -10.3950000 -2.5300000 -12.6270000 -10.5390000 -3.5720000 -10.8720000 -10.9560000 -4.4020000 -10.5940000 -9.5950000 -3.5890000 -10.6470000 -11.1850000 -2.4390000 -10.0750000 -10.8740000 -1.5900000 -10.4280000 -12.1490000 -2.5010000 -10.1670000 -10.8560000 -2.4760000 -8.5940000 -10.5700000 -3.5530000 -8.0650000 -10.9330000 -1.4190000 -7.9400000 -9.7180000 -4.4120000 -13.0750000 -8.5930000 -4.0310000 -13.4050000 -10.1410000 -5.6610000 -13.2850000 -10.9300000 -5.9520000 -13.1060000 -9.2360000 -6.6550000 -13.8600000 -8.4290000 -6.6960000 -13.3060000 -9.8870000 -8.0410000 -13.8240000 -9.2800000 -8.6810000 -14.2040000 -10.0770000 -8.2730000 -12.9120000 -10.7000000 -8.0170000 -14.3330000 -8.7970000 -6.2890000 -15.2840000 -7.6510000 -6.5440000 -15.6700000 -9.7020000 -5.7270000 -16.0840000 -10.5240000 -5.5910000 -15.8740000 -9.3400000 -5.2860000 -17.4280000 -8.8070000 -5.9900000 -17.8530000 -10.6000000 -5.0640000 -18.3010000 -11.2710000 -4.6010000 -17.7750000 -10.2960000 -4.2480000 -19.5410000 -11.1040000 -4.1380000 -20.0480000 -9.9570000 -3.3910000 -19.2750000 -9.6410000 -4.7120000 -20.0660000 -11.1670000 -6.4040000 -18.7590000 -11.2140000 -7.0020000 -17.9960000 -12.0560000 -6.2610000 -19.1190000 -10.3360000 -7.0840000 -19.8300000 -10.7520000 -7.9160000 -20.0670000 -10.2890000 -6.5110000 -20.5990000 -9.4540000 -7.2440000 -19.4860000 -8.4710000 -4.0140000 -17.3770000 -7.5190000 -3.8680000 -18.1410000 -8.7930000 -3.0850000 -16.4790000 -9.4780000 -3.0990000 -15.9600000 -7.9560000 -1.9010000 -16.3690000 -7.8550000 -1.5130000 -17.2630000 -8.5820000 -0.8380000 -15.4830000 -8.8130000 -1.2360000 -14.6290000 -7.9420000 -0.1210000 -15.3510000 -10.0870000 -0.1190000 -16.1860000 -6.5420000 -2.2650000 -15.8630000 -5.5690000 -1.5980000 -16.2380000 -6.4200000 -3.3290000 -15.0690000 -7.0830000 -3.8000000 -14.7890000 -5.1240000 -3.8010000 -14.5930000 -4.6670000 -3.0650000 -14.1340000 -5.3120000 -4.9280000 -13.5950000 -4.4500000 -5.2250000 -13.2930000 -5.8260000 -4.6040000 -12.8520000 -5.7760000 -5.6510000 -14.0240000 -4.2380000 -4.2480000 -15.7620000 -3.1100000 -3.7750000 -15.8980000 -4.7270000 -5.1540000 -16.6080000 -5.5120000 -5.5040000 -16.5690000 -3.8900000 -5.6200000 -17.7070000 -3.0210000 -5.8730000 -17.3330000 -4.4560000 -6.8710000 -18.4000000 -3.9250000 -7.0570000 -19.1900000 -4.3730000 -8.0740000 -17.4970000 -4.7300000 -8.8450000 -17.9450000 -3.4580000 -8.2450000 -17.2620000 -4.8770000 -7.9170000 -16.6960000 -5.8010000 -6.6060000 -18.8020000 -6.1170000 -7.2650000 -19.1730000 -3.6230000 -4.5120000 -18.7410000 -2.6240000 -4.5440000 -19.4530000 -4.5250000 -3.5420000 -18.8310000 -5.2510000 -3.5010000 -18.3710000 -4.3300000 -2.4380000 -19.7570000 -4.1090000 -2.7980000 -20.6410000 -5.6330000 -1.6700000 -19.8740000 -6.3450000 -2.2990000 -20.0690000 -5.8100000 -1.2330000 -19.0260000 -5.6590000 -0.6170000 -20.9360000 -5.2550000 -0.8920000 -22.2460000 -4.9470000 -1.7440000 -22.4590000 -5.2910000 0.0690000 -23.2190000 -5.0180000 -0.1290000 -24.0860000 -5.7500000 1.3110000 -22.9080000 -5.7820000 2.2580000 -23.8960000 -5.3110000 2.8970000 -23.6880000 -6.1620000 1.6160000 -21.6280000 -6.4670000 2.4710000 -21.4260000 -6.1130000 0.6510000 -20.6520000 -6.3960000 0.8550000 -19.7900000 -3.1950000 -1.5010000 -19.3280000 -2.4700000 -0.9750000 -20.1640000 -3.0690000 -1.2950000 -18.0180000 -3.4860000 -1.7470000 -17.4170000 -2.1920000 -0.2610000 -17.4750000 -1.9370000 0.3440000 -18.2020000 -2.9230000 0.5720000 -16.4100000 -2.3160000 1.2550000 -16.0830000 -4.1240000 1.2800000 -17.0160000 -4.5730000 1.7970000 -16.3440000 -3.8380000 1.8660000 -17.7210000 -4.7370000 0.6350000 -17.3760000 -3.3040000 -0.2660000 -15.3080000 -3.8030000 -0.8620000 -15.5690000 -0.9100000 -0.7560000 -16.8190000 0.0150000 0.0370000 -16.6160000 -0.8820000 -2.0260000 -16.4240000 -1.4930000 -2.6030000 -16.6070000 0.2010000 -2.5550000 -15.6390000 0.3490000 -3.4800000 -15.8880000 1.0090000 -2.0560000 -15.8390000 -0.0210000 -2.5040000 -14.1340000 0.8200000 -2.9910000 -13.3930000 -1.1360000 -1.9370000 -13.6760000 -1.6960000 -1.5020000 -14.1630000 -1.5030000 -2.0130000 -12.2690000 -0.7290000 -1.7740000 -11.7170000 -2.6470000 -1.0320000 -11.9530000 -3.4280000 -1.2860000 -12.4700000 -2.8490000 -1.0810000 -11.0060000 -2.2570000 0.7030000 -12.3510000 -1.9150000 -3.4590000 -11.9290000 -2.1780000 -4.2660000 -12.8150000 -1.9560000 -3.7540000 -10.6380000 -1.7810000 -3.1880000 -10.0150000 -2.3010000 -5.0670000 -10.1370000 -2.6710000 -5.5960000 -10.8740000 -1.0530000 -5.8170000 -9.6000000 -1.3330000 -6.7070000 -9.3330000 -0.0210000 -5.9690000 -10.7220000 0.7460000 -6.4340000 -10.3790000 -0.4130000 -6.4690000 -11.4410000 0.2350000 -5.0970000 -11.0300000 -0.4650000 -5.1190000 -8.3650000 -0.0950000 -4.2650000 -8.6360000 -1.1740000 -4.9800000 -7.7180000 0.6340000 -5.9010000 -7.6830000 0.9470000 -5.4020000 -6.9260000 0.2830000 -6.7470000 -7.3960000 1.3520000 -6.0380000 -8.3060000 -3.3820000 -4.9540000 -9.0570000 -3.5650000 -3.9090000 -8.4390000 -4.0700000 -6.0750000 -8.8480000 -3.9570000 -6.7910000 -9.3110000 -5.0850000 -6.2170000 -7.8190000 -5.2240000 -5.3630000 -7.3600000 -6.4270000 -6.7050000 -8.3990000 -6.2870000 -7.5860000 -8.7790000 -7.4530000 -6.8320000 -7.2820000 -8.2840000 -7.1360000 -7.6540000 -7.1320000 -7.4640000 -6.6350000 -7.5730000 -5.9730000 -6.8700000 -6.8980000 -5.7790000 -9.5170000 -7.1480000 -4.9240000 -9.1330000 -6.1740000 -5.6580000 -10.1510000 -8.0890000 -6.3170000 -10.2680000 -8.3340000 -5.6910000 -10.9540000 -7.8540000 -7.1600000 -10.6630000 -8.8180000 -6.4340000 -9.6550000 -4.5900000 -7.2500000 -6.8170000 -4.2110000 -8.3620000 -7.2000000 -4.5960000 -6.8770000 -5.5440000 -4.8200000 -6.0930000 -5.2720000 -4.2150000 -7.7850000 -4.4670000 -4.0460000 -8.6740000 -4.8440000 -2.9120000 -7.3060000 -3.7570000 -2.6790000 -7.9580000 -3.0770000 -1.7880000 -7.2460000 -4.7590000 -0.9890000 -6.9510000 -4.3160000 -1.6530000 -8.1220000 -5.1290000 -2.0230000 -6.6290000 -5.4560000 -3.1120000 -5.9450000 -3.0700000 -3.2020000 -5.2620000 -3.7530000 -3.9210000 -5.9820000 -2.5360000 -1.9870000 -5.5400000 -2.1650000 -2.1900000 -4.6850000 -1.7790000 -1.8910000 -6.1980000 -1.4730000 -1.1780000 -5.4840000 -2.6790000 -5.3550000 -7.9050000 -3.4710000 -6.1820000 -7.0070000 -3.3400000 -5.4030000 -9.0200000 -2.7290000 -4.6820000 -10.2780000 -2.9850000 -3.7310000 -10.1550000 -2.8410000 -4.8650000 -10.5920000 -3.8840000 -5.2330000 -11.2240000 -1.9900000 -4.6160000 -11.3220000 -1.2480000 -5.3930000 -12.0860000 -2.4050000 -6.5190000 -10.6860000 -1.4810000 -6.6000000 -10.8430000 -0.5270000 -7.2650000 -11.0840000 -1.9560000 -6.4860000 -9.1760000 -1.7510000 -7.3390000 -8.9080000 -2.1540000 -6.2750000 -8.3780000 -0.4720000 -7.2480000 -8.0870000 0.2230000 -5.0320000 -8.0520000 -0.1540000 -4.3400000 -8.2660000 -0.6170000 -4.7340000 -7.2870000 1.0350000 -5.3750000 -7.5060000 1.7300000 -3.8460000 -7.5140000 1.3520000 -4.7900000 -5.7940000 0.7810000 -5.3440000 -5.3560000 -0.2190000 -4.2110000 -5.0260000 1.6960000 -3.7540000 -5.3340000 2.3560000 -4.2910000 -3.5790000 1.6770000 -4.8210000 -3.3080000 0.8990000 -5.0170000 -3.0840000 2.9220000 -5.0620000 -2.1260000 2.8950000 -5.9020000 -3.4540000 2.9350000 -4.5310000 -3.3680000 3.6990000 -2.9170000 -2.9190000 1.5520000 -2.8250000 -1.6980000 1.5030000 -1.8580000 -3.7240000 1.4990000 -1.9070000 -4.5790000 1.4140000 -0.4880000 -3.2200000 1.5810000 -0.5130000 -2.2520000 1.7340000 0.2570000 -3.8680000 2.7590000 0.4100000 -4.8070000 2.5720000 1.5910000 -3.1980000 2.9930000 2.0430000 -3.6150000 3.7310000 2.1390000 -3.2750000 2.2080000 1.4610000 -2.2680000 3.1920000 -0.5350000 -3.7360000 3.9420000 -0.1480000 -4.0780000 4.5780000 0.2630000 -3.4710000 0.2730000 0.7160000 -4.5810000 -0.0090000 0.3650000 -2.4350000 -0.5510000 0.0520000 -1.6510000 -0.3880000 1.0320000 -2.5500000 -1.8290000 0.7170000 -3.3540000 -2.2910000 0.7170000 -1.3360000 -2.6990000 0.9430000 -0.5320000 -2.2050000 1.2510000 -1.3860000 -3.5070000 -1.0100000 -1.2120000 -3.1880000 2.5410000 -2.6540000 -1.6530000 3.1150000 -1.9740000 -0.8110000 3.1880000 -3.4860000 -2.4800000 2.6190000 -4.3360000 -3.5350000 2.0830000 -3.8070000 -4.1450000 2.1060000 -5.0620000 -3.1450000 3.8420000 -4.8720000 -4.2360000 4.0950000 -4.2920000 -4.9710000 3.6860000 -5.7760000 -4.5510000 4.9060000 -4.8800000 -3.2270000 5.7790000 -4.8180000 -3.6450000 4.8450000 -5.6690000 -2.6660000 4.6410000 -3.6290000 -2.3920000 4.9210000 -3.7820000 -1.4650000 5.3700000 -2.4160000 -2.9620000 4.8140000 -1.5970000 -3.6860000 6.6520000 -2.3240000 -2.6240000 7.0820000 -2.9300000 -2.1910000 7.4530000 -1.1640000 -2.9640000 7.0320000 -0.3750000 -2.5880000 8.3260000 -1.2590000 -2.5540000 7.6650000 -0.9110000 -4.4490000 7.9530000 0.2280000 -4.8210000 7.5480000 -1.9440000 -5.2850000 7.4020000 -2.7540000 -5.0380000 7.6630000 -1.7720000 -6.7280000 8.2030000 -0.9660000 -6.8720000 8.4360000 -2.9180000 -7.4120000 8.4590000 -2.7510000 -8.3670000 9.3410000 -2.9330000 -7.0620000 7.8400000 -4.2880000 -7.2010000 7.0820000 -4.5060000 -6.2370000 8.1710000 -5.1670000 -8.0390000 6.3200000 -1.4950000 -7.4060000 6.2850000 -1.2750000 -8.6170000 5.2440000 -1.4640000 -6.6170000 5.2590000 -1.6970000 -5.7890000 3.9170000 -1.0320000 -7.0670000 4.0050000 -0.5980000 -7.9410000 2.9380000 -2.1990000 -7.2220000 2.9560000 -2.7340000 -6.4130000 2.0460000 -1.8450000 -7.3640000 3.2680000 -3.1020000 -8.3840000 4.2180000 -4.1200000 -8.2800000 4.6620000 -4.2520000 -7.4740000 4.5060000 -4.9330000 -9.3530000 5.1400000 -5.6080000 -9.2730000 3.8510000 -4.7290000 -10.5480000 4.1420000 -5.5570000 -11.6110000 4.4300000 -5.1150000 -12.2390000 2.9060000 -3.7370000 -10.6700000 2.4650000 -3.6070000 -11.4780000 2.6280000 -2.9290000 -9.5940000 1.9920000 -2.2560000 -9.6810000 3.3990000 0.0220000 -6.0670000 2.3670000 -0.1430000 -5.4140000 4.1660000 1.1050000 -5.9750000 4.7800000 1.2970000 -6.5460000 4.0590000 2.0880000 -4.9060000 3.7970000 1.6310000 -4.0800000 5.4270000 2.6970000 -4.6900000 5.3710000 3.3480000 -3.9870000 6.0430000 2.0020000 -4.4460000 5.7140000 3.1180000 -5.5040000 3.0610000 3.2030000 -5.1600000 2.8240000 4.0260000 -4.2650000 2.5180000 3.2510000 -6.3670000 2.6360000 2.6430000 -6.9640000 1.6640000 4.3360000 -6.8160000 1.6380000 5.0200000 -6.1150000 2.2820000 4.9750000 -8.0620000 2.2780000 4.3290000 -8.7850000 1.7630000 5.7560000 -8.3090000 3.7140000 5.4140000 -7.8290000 4.6530000 4.8560000 -8.4000000 3.8900000 6.4110000 -6.9800000 4.6840000 6.6990000 -6.8130000 3.2120000 6.7720000 -6.5950000 0.2210000 3.8910000 -7.0770000 -0.1680000 2.7730000 -6.6680000 -0.5060000 4.6990000 -7.6630000 bio3d/inst/examples/hivp_xray.fa0000644000176200001440000013476014707230357016411 0ustar liggesusers>d1hhp__ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1nh0a_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1nh0b_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1s65a_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPANIIGRNLLTQIGATLNF >d1s65b_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPANIIGRNLLTQIGATLNF >d1kzka_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1kzkb_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1sdua_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLMTQIGATLNF >d1sdub_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLMTQIGATLNF >d1s6ga_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1s6gb_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1k1ta_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPIMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPSNIIGRNLLTQIGATLNF >d1k1tb_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPIMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPSNIIGRNLLTQIGATLNF >d1sdta_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1sdtb_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1sdva_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPANIIGRNLLTQIGATLNF >d1sdvb_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPANIIGRNLLTQIGATLNF >d1s6sa_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNVIGRNLLTQIGATLNF >d1s6sb_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNVIGRNLLTQIGATLNF >d1k1ua_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPIMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLMTQIGATLNF >d1k1ub_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPIMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLMTQIGATLNF >d1dazc_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPIMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1dazd_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPIMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1difa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1difb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1d4la_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVIEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1d4lb_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVIEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1mtra_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVIEEMNLPGKWKPKMIGGIIGGGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1mtrb_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVIEEMNLPGKWKPKMIGGIIGGGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1ffic_ PQITLWKRPLVTIKIGGQLKEALLDTGADNTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1ffid_ PQITLWKRPLVTIKIGGQLKEALLDTGADNTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1k2ba_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRDLMTQIGATLNF >d1k2bb_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRDLMTQIGATLNF >d1ec0a_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1ec0b_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1b6la_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVIEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1b6lb_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVIEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1d4ia_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1d4ib_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1d4ha_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1d4hb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1b6ja_ PQITLWQRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1b6jb_ PQITLWQRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1g35a_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1g35b_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1ebwa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1ebwb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1b6oa_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVIEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1b6ob_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVIEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1d4ja_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1d4jb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1proa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1prob_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1fejc_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLMTQIGATLNF >d1fejd_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLMTQIGATLNF >d1hvia_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hvib_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1izha_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1izhb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1b6na_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVIEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1b6nb_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVIEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1hvka_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hvkb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hxwa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hxwb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1ff0c_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPIMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1ff0d_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPIMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1fg6c_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRDLLTQIGATLNF >d1fg6d_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRDLLTQIGATLNF >d1mt9a_ PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLE-MNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPANI-GRNLLTQIGCTLNF >d1mt9b_ PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLE-MNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPANIIGRNLLTQIGCTLNF >d2aida_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d2aidb_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1mt7a_ PQITLWKRPLVTI-IGGQLKEAL-NTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPANIIGRNLLTQIGCTLNF >d1mt7b_ PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPANI-GRNLLTQIGCTLNF >d1b6ka_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVIEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1b6kb_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVIEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1hvja_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hvjb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hpxa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hpxb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hvla_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hvlb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1bwba_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPFNVIGRNLLTQIGCTLNF >d1bwbb_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPFNVIGRNLLTQIGCTLNF >d1ec3a_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1ec3b_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1npaa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1npab_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d2bpva_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d2bpvb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1b6ma_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVIEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1b6mb_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVIEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1fffc_ PQITLWKRPLVTIKIGGQLKEALLDTGADNTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1fffd_ PQITLWKRPLVTIKIGGQLKEALLDTGADNTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1ebza_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1ebzb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1ajxa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1ajxb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1qbsa_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1qbsb_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1g2ka_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1g2kb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1kjha_ PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLE-MNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1kjhb_ PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YD-IPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1mesa_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNVIGRNLLTQIGCTLNF >d1mesb_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNVIGRNLLTQIGCTLNF >d1dw6c_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLMTQIGATLNF >d1dw6d_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLMTQIGATLNF >d1d4ka_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVIEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1d4kb_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVIEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1kjga_ PQITLWKRPLVTIRIGGQLK-ALLNTGADDTVLE-MNLPGKWKPKMIG----GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1kjgb_ PQITLWKRPLVTI-IGGQLK-ALLNTGADDTVLEEMNLPGKWKPKMIG----GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1ajva_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1ajvb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1qbra_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1qbrb_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1mera_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNVIGRNLLTQIGCTLNF >d1merb_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNVIGRNLLTQIGCTLNF >d1fg8c_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRDLLTQIGATLNF >d1fg8d_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRDLLTQIGATLNF >d1hvra_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1hvrb_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1hiva_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hivb_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d2bpya_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d2bpyb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1d4ya_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1d4yb_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1cpia_ PQITLWQRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1cpib_ PQITLWQRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1hiha_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hihb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1a30a_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1a30b_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hsga_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hsgb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1odxa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKTIGTVLVGPTPANIIGRNLLTQIGCTLNF >d1odxb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKTIGTVLVGPTPANIIGRNLLTQIGCTLNF >d1f7aa_ PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLEEMNLPGKWKPKMIG----GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1f7ab_ PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLEEMNLPGKWKPKMIG----GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1g6la1 PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGMTLNF >d1g6la2 PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hpva_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hpvb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1npwa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1npwb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1b6pa_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVIEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1b6pb_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVIEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1qbua_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1qbub_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1fgcc_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1fgcd_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1kjfa_ PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLE--MLPGKWKPKMIG----GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1kjfb_ PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLEEMNLPGKWKPKMIG----GGFIKVRQ YD-IPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1kj7a_ PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLEEMNLPGKWKPKMIG----GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1kj7b_ PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLEEMNLPGKWKPKMIG----GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1meua_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPFNVIGRNLLTQIGCTLNF >d1meub_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPFNVIGRNLLTQIGCTLNF >d1hvha_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1hvhb_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1ec2a_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1ec2b_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hwra_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1hwrb_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1hsha_ PQFSLWKRPVVTAYIEGQPVEVLLDTGADDSIVAGIELGNNYSPKIVGGI--GGFINTKE YKNVEIEVLNKKVRATIMTGDTPINIFGRNILTALGMSLNL >d1hshb_ PQFSLWKRPVVTAYIEGQPVEVLLDTGADDSIVAGIELGNNYSPKIVGGI--GGFINTKE YKNVEIEVLNKKVRATIMTGDTPINIFGRNILTALGMSLNL >d1hshc_ PQFSLWKRPVVTAYIEGQPVEVLLDTGADDSIVAGIELGNNYSPKIVGGI--GGFINTKE YKNVEIEVLNKKVRATIMTGDTPINIFGRNILTALGMSLNL >d1hshd_ PQFSLWKRPVVTAYIEGQPVEVLLDTGADDSIVAGIELGNNYSPKIVGGI--GGFINTKE YKNVEIEVLNKKVRATIMTGDTPINIFGRNILTALGMSLNL >d1odya_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGAWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1odyb_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGAWKPKAIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1mrwa_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1mrwb_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1msma_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1msmb_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1mrxa_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEICGHKAIGTVLVGPTPFNVIGRNLLTQIGCTLNF >d1mrxb_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEICGHKAIGTVLVGPTPFNVIGRNLLTQIGCTLNF >d1bwaa_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPFNVIGRNLLTQIGCTLNF >d1bwab_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPFNVIGRNLLTQIGCTLNF >d1htga_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1htgb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1npva_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1npvb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1msna_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEICGHKAIGTVLVGPTPFNVIGRNLLTQIGCTLNF >d1msnb_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEICGHKAIGTVLVGPTPFNVIGRNLLTQIGCTLNF >d1ohra_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1ohrb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1aida_ PQITLWQRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1aidb_ PQITLWQRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1lv1a1 PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGMTLNF >d1lv1a2 PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1ec1a_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1ec1b_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1meta_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPFNIIGRNLLTQIGCTLNF >d1metb_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPFNIIGRNLLTQIGCTLNF >d1a94a_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWEPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1a94b_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWEPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1a94d_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWEPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1a94e_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWEPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1odwa_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1odwb_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hvsa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPANIIGRNLLTQIGCTLNF >d1hvsb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPANIIGRNLLTQIGCTLNF >d1ebkc_ -QITLWKQPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1ebkd_ PQITLWKQPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1ebke_ PQITLWKQPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1ebkf_ PQITLWKQPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d3tlha_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d4phva_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d4phvb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hvc__ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1ebya_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1ebyb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1a8ka_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1a8kb_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1a8kd_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1a8ke_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1mt8a_ PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLEEMNLPGKWKPKMIG----GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPANIIGRNLLTQIGCTLNF >d1mt8b_ PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLE-MNLPGKWKPKMIG----GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPANIIGRNLLTQIGCTLNF >d1bv9a_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNVIGRNLLTQIGCTLNF >d1bv9b_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNVIGRNLLTQIGCTLNF >d1qbta_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1qbtb_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1hxba_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hxbb_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1izia_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKVIGTVLVGPTPTNVIGRNLLTQIGCTLNF >d1izib_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKVIGTVLVGPTPTNVIGRNLLTQIGCTLNF >d1iiqa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1iiqb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1axaa_ PQITLWQRPLVTIKIGGQLKEALLDTGSDDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1axab_ PQITLWQRPLVTIKIGGQLKEALLDTGSDDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1dmpa_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1dmpb_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1bv7a_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPFNIIGRNLLTQIGCTLNF >d1bv7b_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPFNIIGRNLLTQIGCTLNF >d1lzqa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKVIGTVLVGPTPTNVIGRNLLTQIGCTLNF >d1lzqb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKVIGTVLVGPTPTNVIGRNLLTQIGCTLNF >d1m0ba_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1m0bb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hefe_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEENSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hosa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hosb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1a9ma_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIHGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1a9mb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIHGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1sbga_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1sbgb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d4hvpa_ PQITLWQRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d4hvpb_ PQITLWQRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d2bpza_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d2bpzb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hbva_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hbvb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1c70a_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1c70b_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d7hvpa_ PQITLWQRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d7hvpb_ PQITLWQRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1hpoa_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hpob_ PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hege_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEENSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1mtba_ PQITLWQRPLVTIRIGGQLKEALLNTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1mtbb_ PQITLWQRPLVTIRIGGQLKEALLNTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1htfa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1htfb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1gnoa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1gnob_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1a8ga_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1a8gb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1c6za_ PQITLWQRPVVTIKIGGQLMEALIDTGADDTVLEEMDLPGRWKPKIIGGI--GGFVKVRQ YDQIPIEICGHKVIGTVLVGPTPTNIIGRNLLTQIGCTLNF >d1c6zb_ PQITLWQRPVVTIKIGGQLMEALIDTGADDTVLEEMDLPGRWKPKIIGGI--GGFVKVRQ YDQIPIEICGHKVIGTVLVGPTPTNIIGRNLLTQIGCTLNF >d1upj__ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1c6ya_ PQITLWQRPVVTIKIGGQLMEALIDTGADDTVLEEMDLPGRWKPKIIGGI--GGFVKVRQ YDQIPIEICGHKVIGTVLVGPTPTNIIGRNLLTQIGCTLNF >d1c6yb_ PQITLWQRPVVTIKIGGQLMEALIDTGADDTVLEEMDLPGRWKPKIIGGI--GGFVKVRQ YDQIPIEICGHKVIGTVLVGPTPTNIIGRNLLTQIGCTLNF >d8hvpa_ PQITLWQRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d8hvpb_ PQITLWQRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1n49a_ PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPANIIGRNLLTQIGCTLNF >d1n49b_ PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPANIIGRNLLTQIGCTLNF >d1n49c_ PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPANIIGRNLLTQIGCTLNF >d1n49d_ PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPANIIGRNLLTQIGCTLNF >d1hpsa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hpsb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1gnma_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPDNIIGRNLLTQIGCTLNF >d1gnmb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPDNIIGRNLLTQIGCTLNF >d5hvpa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d5hvpb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1aaqa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1aaqb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d2bpwa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d2bpwb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1gnna_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPNNIIGRNLLTQIGCTLNF >d1gnnb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPNNIIGRNLLTQIGCTLNF >d1bdqa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDSIVAGIELPGRWKPKMVGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPINIIGRNLLTQIGCTLNF >d1bdqb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDSIVAGIELPGRWKPKMVGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPINIIGRNLLTQIGCTLNF >d1vika_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1vikb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d3aida_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d3aidb_ PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1fb7a_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIVGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLMTQIGCTLNF >d2bpxa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d2bpxb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1c6xa_ PQITLWQRPVVTIKIGGQLMEALIDTGADDTVLEEMDLPGRWKPKIIGGI--GGFVKVRQ YDQIPIEICGHKVIGTVLVGPTPTNIIGRNLLTQIGCTLNF >d1c6xb_ PQITLWQRPVVTIKIGGQLMEALIDTGADDTVLEEMDLPGRWKPKIIGGI--GGFVKVRQ YDQIPIEICGHKVIGTVLVGPTPTNIIGRNLLTQIGCTLNF >d1d4sa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPFNVIGRNLLTQIGCTLNF >d1d4sb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPFNVIGRNLLTQIGCTLNF >d2upja_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d2upjb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1htea_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1hteb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1vija_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1vijb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1bdra_ PQITLWQRPLVTIKIGGQLKEALLDTGADDSVVAGIELPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1bdrb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDSVVAGIELPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1bdla_ PQITLWQRPLVTIKIGGQLKEALLDTGADDSIVAGIELPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1bdlb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDSIVAGIELPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1k2ca_ PQITLWKRPLVTIKIGGQLKEALLDTGADNTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPSNIIGRNLLTQIGATLNF >d1k2cb_ PQITLWKRPLVTIKIGGQLKEALLDTGADNTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPSNIIGRNLLTQIGATLNF >d1kj4a_ PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1kj4b_ PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1kj4c_ PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1kj4d_ PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1fqxa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1fqxb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d3hvp__ PQITLWQRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1muia_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1muib_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d3phv__ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d9hvpa_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d9hvpb_ PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1bvga_ -QVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1bvgb_ -QVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1bvea_ -QVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d1bveb_ PQVTLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d2hvp__ ------QRPLVTIKIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1k6c_a PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQIPIEICGHKAIGTVLVGPTPTNVIGRNLLTQIGCTLNF >d1k6c_b PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQIPIEICGHKAIGTVLVGPTPTNVIGRNLLTQIGCTLNF >d1k6p_a PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQIPIEICGHKAIGTVLVGPTPTNVIGRNLLTQIGCTLNF >d1k6p_b PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQIPIEICGHKAIGTVLVGPTPTNVIGRNLLTQIGCTLNF >d1k6t_a PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQIPIEICGHKAIGTVLVGPTPTNVIGRNLLTQIGCTLNF >d1k6t_b PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQIPIEICGHKAIGTVLVGPTPTNVIGRNLLTQIGCTLNF >d1k6v_a PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQIPIEICGHKAIGTVLVGPTPTNVIGRNLLTQIGCTLNF >d1k6v_b PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQIPIEICGHKAIGTVLVGPTPTNVIGRNLLTQIGCTLNF >d1rl8_a PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGAWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPANIIGRNLLTQIGCTLNF >d1rl8_b PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGAWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPANIIGRNLLTQIGCTLNF >d1rpi_a PQITLWQRPIVTIKIGGQLKEALLNTGADDTVLEEVNLPGRWKPKLIGGI--GGFVKVRQ YDQVPIEICGHKVIGTVLVGPTPANVIGRNLMTQIGCTLNF >d1rpi_b PQITLWQRPIVTIKIGGQLKEALLNTGADDTVLEEVNLPGRWKPKLIGGI--GGFVKVRQ YDQVPIEICGHKVIGTVLVGPTPANVIGRNLMTQIGCTLNF >d1rq9_a PQITLWQRPIVTIKIGGQLKEALLNTGADDTVLEEVNLPGRWKPKLIGGI--GGFVKVRQ YDQVPIEICGHKVIGTVLVGPTPANVIGRNLMTQIGCTLNF >d1rq9_b PQITLWQRPIVTIKIGGQLKEALLNTGADDTVLEEVNLPGRWKPKLIGGI--GGFVKVRQ YDQVPIEICGHKVIGTVLVGPTPANVIGRNLMTQIGCTLNF >d1sgu_a PQITLWQRPLVTIKIGGQLREALLDTGADDTIFEEISLPGRWKPKMIGGI--GGFVKVRQ YDQIPIEICGHKVIGTVLVGPTPANVIGRNLMTQIGCTLNF >d1sgu_b PQITLWQRPLVTIKIGGQLREALLDTGADDTIFEEISLPGRWKPKMIGGI--GGFVKVRQ YDQIPIEICGHKVIGTVLVGPTPANVIGRNLMTQIGCTLNF >d1sh9_a PQITLWQRPLVTIKIGGQLREALLDTGADDTIFEEISLPGRWKPKMIGGI--GGFVKVRQ YDQIPIEICGHKVIGTVLVGPTPANVIGRNLMTQIGCTLNF >d1sh9_b PQITLWQRPLVTIKIGGQLREALLDTGADDTIFEEISLPGRWKPKMIGGI--GGFVKVRQ YDQIPIEICGHKVIGTVLVGPTPANVIGRNLMTQIGCTLNF >d1sp5_a PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1sp5_b PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1t3r_a PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1t3r_b PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1t7i_a PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQIPIEICGHKAIGTVLVGPTPTNVIGRNLLTQIGCTLNF >d1t7i_b PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQIPIEICGHKAIGTVLVGPTPTNVIGRNLLTQIGCTLNF >d1t7j_a PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQIPIEICGHKAIGTVLVGPTPTNVIGRNLLTQIGCTLNF >d1t7j_b PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGRWKPKMIGGI--GGFIKVRQ YDQIPIEICGHKAIGTVLVGPTPTNVIGRNLLTQIGCTLNF >d1t7k_a PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1t7k_b PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1tcx_a PQITLWQRPLVTIKIGGQLKEALLDTGADDTILEEMSLPGRWKPKMVGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPINIIGRNLLTQIGCTLNF >d1tcx_b PQITLWQRPLVTIKIGGQLKEALLDTGADDTILEEMSLPGRWKPKMVGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPINIIGRNLLTQIGCTLNF >d1tsq_a PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPANIIGRNLLTQIGCTLNF >d1tsq_b PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPANIIGRNLLTQIGCTLNF >d1tsu_a PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1tsu_b PQITLWKRPLVTIRIGGQLKEALLNTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1tw7_a PQITLWQRPIVTIKIGGQLKEALLNTGADDTVLEEVNLPGRWKPKLIGGI--GGFVKVRQ YDQVPIEICGHKVIGTVLVGPTPANVIGRNLMTQIGCTLNF >d1tw7_b PQITLWQRPIVTIKIGGQLKEALLNTGADDTVLEEVNLPGRWKPKLIGGI--GGFVKVRQ YDQVPIEICGHKVIGTVLVGPTPANVIGRNLMTQIGCTLNF >d1u8g_a PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1u8g_b PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1w5v_a PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1w5v_b PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1w5w_a PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1w5w_b PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1w5x_a PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1w5x_b PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1w5y_a PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1w5y_b PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1wbk_a PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1wbk_b PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1wbm_a PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1wbm_b PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1xl2_a PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1xl2_b PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1xl5_a PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1xl5_b PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1ytg_a PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1ytg_b PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1yth_a PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1yth_b PQITLWKRPLVTIRIGGQLKEALLDTGADDTVLEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1z1h_a PQITLWKRPLVTIRIGGQLKEALLDTGADDTVIEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1z1h_b PQITLWKRPLVTIRIGGQLKEALLDTGADDTVIEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1z1r_a PQITLWKRPLVTIRIGGQLKEALLDTGADDTVIEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1z1r_b PQITLWKRPLVTIRIGGQLKEALLDTGADDTVIEEMNLPGKWKPKMIGGI--GGFIKVRQ YDQIPVEIXGHKAIGTVLVGPTPVNIIGRNLLTQIGXTLNF >d1zp8_a PQITLWKRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1zpa_a PQITLWKRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1ztz_a PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d1ztz_b PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d2a4f_a PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d2a4f_b PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d2aoc_a PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNVIGRNLLTQIGATLNF >d2aoc_b PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNVIGRNLLTQIGATLNF >d2aod_a PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d2aod_b PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d2aoe_a PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPANIIGRNLLTQIGATLNF >d2aoe_b PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPANIIGRNLLTQIGATLNF >d2aof_a PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPANIIGRNLLTQIGATLNF >d2aof_b PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPANIIGRNLLTQIGATLNF >d2aog_a PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPANIIGRNLLTQIGATLNF >d2aog_b PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPANIIGRNLLTQIGATLNF >d2aoh_a PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPANIIGRNLLTQIGATLNF >d2aoh_b PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPANIIGRNLLTQIGATLNF >d2aoi_a PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d2aoi_b PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d2aoj_a PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d2aoj_b PQITLWKRPLVTIKIGGQLKEALLDTGADDTVIEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQIIIEIAGHKAIGTVLVGPTPVNIIGRNLLTQIGATLNF >d2bb9_a PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d2bb9_b PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d2bbb_a PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d2bbb_b PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d2bqv_a PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d2bqv_b PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d2sam_a PQFHLWKRPVVTAHIEGQPVEVLLDTGADDSIVTGIELGPHYTPKIVGGI--GGFINTKE YKNVEIEVLGKRIKGTIMTGDTPINIFGRNLLTALGMSLNF >d7upj_a PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF >d7upj_b PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIGGI--GGFIKVRQ YDQILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNF bio3d/inst/examples/transducin.fa0000644000176200001440000003100014707230357016531 0ustar liggesusers>http://www.rcsb.org/pdb/files/1TND.pdb -----------------------------ARTVKLLLLGAGESGKSTIVKQMKIIHQDGY SLEECLEFIAIIYGNTLQSILAIVRAMTTLNIQYGDSARQDDARKLMHMADTIEE-GTMP KEMSDIIQRLWKDSGIQACFDRASEYQLNDSAGYYLSDLERLVTPGYVPTEQDVLRSRVK TTGIIETQFSFKDLNFRMFDVGGQRSERKKWIHCFEGVTCIIFIAALSAYDMVLVEDDEV NRMHESLHLFNSICNHRYFATTSIVLFLNKKDVFSEKIKKAHLSICFPDYNGPNTYEDAG NYIKVQFLELNMRRDVKEIYSHMTCATDTQNVKFVFDAVTDIIIKENLKDCGL- >http://www.rcsb.org/pdb/files/1TAD.pdb -----------------------------ARTVKLLLLGAGESGKSTIVKQMKIIHQDGY SLEECLEFIAIIYGNTLQSILAIVRAMTTLNIQYGDSARQDDARKLMHMADTIEE-GTMP KEMSDIIQRLWKDSGIQACFDRASEYQLNDSAGYYLSDLERLVTPGYVPTEQDVLRSRVK TTGIIETQFSFKDLNFRMFDVGGQRSERKKWIHCFEGVTCIIFIAALSAYDMVLVEDDEV NRMHESLHLFNSICNHRYFATTSIVLFLNKKDVFSEKIKKAHLSICFPDYNGPNTYEDAG NYIKVQFLELNMRRDVKEIYSHMTCATDTQNVKFVFDAVTDIIIKE-------- >http://www.rcsb.org/pdb/files/1TAG.pdb -----------------------------ARTVKLLLLGAGESGKSTIVKQMKIIHQDGY SLEECLEFIAIIYGNTLQSILAIVRAMTTLNIQYGDSARQDDARKLMHMADTIEE-GTMP KEMSDIIQRLWKDSGIQACFDRASEYQLNDSAGYYLSDLERLVTPGYVPTEQDVLRSRVK TTGIIETQFSFKDLNFRMFDVGGQRSERKKWIHCFEGVTCIIFIAALSAYDMVLVEDDEV NRMHESLHLFNSICNHRYFATTSIVLFLNKKDVFSEKIKKAHLSICFPDYNGPNTYEDAG NYIKVQFLELNMRRDVKEIYSHMTCATDTQNVKFVFDAVTDIII---------- >http://www.rcsb.org/pdb/files/3V00.pdb --HMGAGASAEEKHSRELEKKLKEDAEKDARTVKLLLLGAGESGKSTIVKQMKIIHQDPY SLEECLEFIAIIYGNTLQSILAIVRAMTTLNIQYGDSARQDDARKLMHMADTIEE-GTMP KEMSDIIQRLWKDSGIQACFDRASEYQLNDSAGYYLSDLERLVTPGYVPTEQDVLRSRVK TTGIIETQFSFKDLNFRMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMHLFNSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAG NYIKVQFLELNMRRDVKEIYSHMTCATDTQNVKFVFDAVTDIIIKENLKDCGLF >http://www.rcsb.org/pdb/files/1FQJ.pdb ------------------------------RTVKLLLLGAGESGKSTIVKQMKIIHQDGY SLEECLEFIAIIYGNTLQSILAIVRAMTTLNIQYGDSARQDDARKLMHMADTIEE-GTMP KEMSDIIQRLWKDSGIQACFDRASEYQLNDSAGYYLSDLERLVTPGYVPTEQDVLRSRVK TTGIIETQFSFKDLNFRMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAG NYIKVQFLELNMRRDVKEIYSHMTCATDTQNVKFVFDAVTDIIIKENL------ >http://www.rcsb.org/pdb/files/1FQK.pdb ------------------------------RTVKLLLLGAGESGKSTIVKQMKIIHQDGY SLEECLEFIAIIYGNTLQSILAIVRAMTTLNIQYGDSARQDDARKLMHMADTIEE-GTMP KEMSDIIQRLWKDSGIQACFDRASEYQLNDSAGYYLSDLERLVTPGYVPTEQDVLRSRVK TTGIIETQFSFKDLNFRMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAG NYIKVQFLELNMRRDVKEIYSHMTCATDTQNVKFVFDAVTDIIIKENLK----- >http://www.rcsb.org/pdb/files/2XNS.pdb ------------------------------REVKLLLLGAGESGKSTIVKQMKIIHEAGY SEEECKQYKAVVYSNTIQSIIAIIRAMGRLKIDFGDSARADDARQLFVLAGAAEE-GFMT AELAGVIKRLWKDSGVQACFNRSREYQLNDSAAYYLNDLDRIAQPNYIPTQQDVLRTRVK TTGIVETHFTFKDLHFKMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAA AYIQCQFEDLNKRKDTKEIYTHFTCATDTKNVQFVFDAVTDVIIKNN------- >http://www.rcsb.org/pdb/files/1KJY.pdb ----------------------------GAREVKLLLLGAGESGKSTIVKQMKIIHEAGY SEEECKQYKAVVYSNTIQSIIAIIRAMGRLKIDFGDSARADDARQLFVLAGAAEE-GFMT AELAGVIKRLWKDSGVQACFNRSREYQLNDSAAYYLNDLDRIAQPNYIPTQQDVLRTRVK TTGIVETHFTFKDLHFKMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAA AYIQCQFEDLNKRKDTKEIYTHFTCATDTKNVQFVFDAVTDVIIKNNLK----- >http://www.rcsb.org/pdb/files/2OM2.pdb ----------------------------GAREVKLLLLGAGESGKSTIVKQMKIIHEAGY SEEECKQYKAVVYSNTIQSIIAIIRAMGRLKIDFGDSARADDARQLFVLAGAAEE-GFMT AELAGVIKRLWKDSGVQACFNRSREYQLNDSAAYYLNDLDRIAQPNYIPTQQDVLRTRVK TTGIVETHFTFKDLHFKMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAA AYIQCQFEDLNKRKDTKEIYTHFTCATDTKNVQFVFDAVTDVIIKNNLK----- >http://www.rcsb.org/pdb/files/4G5Q.pdb -----------------------------AREVKLLLLGAGESGKSTIVKQMKIIHEAGY SEEECKQYKAVVYSNTIQSIIAIIRAMGRLKIDFGDSARADDARQLFVLAGAAEE-GFMT AELAGVIKRLWKDSGVQACFNRSREYQLNDSAAYYLNDLDRIAQPNYIPTQQDVLRTRVK TTGIVETHFTFKDLHFKMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAA AYIQCQFEDLNKRKDTKEIYTHFTCATDTKNVQFVFDAVTDVIIKNNLKD---- >http://www.rcsb.org/pdb/files/1GP2.pdb ---LSAEDKAAVERSKMIDRNLREDGEKAAREVKLLLLGAGESGKSTIVKQMKIIHEAGY SEEECKQYKAVVYSNTIQSIIAIIRAMGRLKIDFGDAARADDARQLFVLAGAAEE-GFMT AELAGVIKRLWKDSGVQACFNRSREYQLNDSAAYYLNDLDRIAQPNYIPTQQDVLRTRVK TTGIVETHFTFKDLHFKMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAA AYIQCQFEDLNKRKDTKEIYTHFTCATDTKNVQFVFDAVTDVIIKNNL------ >http://www.rcsb.org/pdb/files/1AGR.pdb ---LSAEDKAAVERSKMIDRNLREDGEKAAREVKLLLLGAGESGKSTIVKQMKIIHEAGY SEEECKQYKAVVYSNTIQSIIAIIRAMGRLKIDFGDAARADDARQLFVLAGAAEE-GFMT AELAGVIKRLWKDSGVQACFNRSREYQLNDSAAYYLNDLDRIAQPNYIPTQQDVLRTRVK TTGIVETHFTFKDLHFKMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAA AYIQCQFEDLNKRKDTKEIYTHFTCATDTKNVQFVFDAVTDVIIKNNLKDCGLF >http://www.rcsb.org/pdb/files/1CIP.pdb ------------------------------REVKLLLLGAGESGKSTIVKQMKIIHEAGY SEEECKQYKAVVYSNTIQSIIAIIRAMGRLKIDFGDAARADDARQLFVLAGAAEE-GFMT AELAGVIKRLWKDSGVQACFNRSREYQLNDSAAYYLNDLDRIAQPNYIPTQQDVLRTRVK TTGIVETHFTFKDLHFKMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAA AYIQCQFEDLNKRKDTKEIYTHFTCATDTKNVQFVFDAVTDVIIKNN------- >http://www.rcsb.org/pdb/files/1GFI.pdb -------------------------------EVKLLLLGAGESGKSTIVKQMKIIHEAGY SEEECKQYKAVVYSNTIQSIIAIIRAMGRLKIDFGDAARADDARQLFVLAGAAEE-GFMT AELAGVIKRLWKDSGVQACFNRSREYQLNDSAAYYLNDLDRIAQPNYIPTQQDVLRTRVK TTGIVETHFTFKDLHFKMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAA AYIQCQFEDLNKRKDTKEIYTHFTCATDTKNVQFVFDAVTDVIIK--------- >http://www.rcsb.org/pdb/files/1GIA.pdb --------------------------------VKLLLLGAGESGKSTIVKQMKIIHEAGY SEEECKQYKAVVYSNTIQSIIAIIRAMGRLKIDFGDAARADDARQLFVLAGAAEE-GFMT AELAGVIKRLWKDSGVQACFNRSREYQLNDSAAYYLNDLDRIAQPNYIPTQQDVLRTRVK TTGIVETHFTFKDLHFKMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAA AYIQCQFEDLNKRKDTKEIYTHFTCATDTKNVQFVFDAVTDVI----------- >http://www.rcsb.org/pdb/files/2ZJY.pdb ------------------------------REVKLLLLGAGESGKSTIVKQMKIIHEAGY SEEECKQYKAVVYSNTIQSIIAIIRAMGRLKIDFGDAARADDARQLFVLAGAAEE-GFMT AELAGVIKRLWKDSGVQACFNRSREYQLNDSAAYYLNDLDRIAQPNYIPTQQDVLRTRVK TTGIVETHFTFKDLHFKMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAA AYIQCQFEDLNKRKDTKEIYTHFTCATDTKNVQFVFDAVTDVIIKNNL------ >http://www.rcsb.org/pdb/files/3ONW.pdb ------------------------------REVKLLLLGAGESGKSTIVKQMKIIHEAGY SEEECKQYKAVVYSNTIQSIIAIIRAMGRLKIDFGDSARADDARQLFVLAGAAEE-GFMT AELAGVIKRLWKDSGVQACFNRSREYLLNDSAAYYLNDLDRIAQPNYIPTQQDVLRTRVK TTGIVETHFTFKDLHFKMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAA AYIQCQFEDLNKRKDTKEIYTHFTCATDTKNVQFVFDAVTDVIIKNN------- >http://www.rcsb.org/pdb/files/1BH2.pdb ------------------------------REVKLLLLGAGESGKSTIVKQMKIIHEAGY SEEECKQYKAVVYSNTIQSIIAIIRAMGRLKIDFGDAARADDARQLFVLAGAAEE-GFMT AELAGVIKRLWKDSGVQACFNRSREYQLNDSAAYYLNDLDRIAQPNYIPTQQDVLRTRVK TTGIVETHFTFKDLHFKMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAA AYIQCQFEDLNKRKDTKEIYTHFTCSTDTKNVQFVFDAVTDVIIKN-------- >http://www.rcsb.org/pdb/files/1GG2.pdb ---LSAEDKAAVERSKMIDRNLREDGEKAAREVKLLLLGAGESGKSTIVKQMKIIHEAGY SEEECKQYKAVVYSNTIQSIIAIIRAMGRLKIDFGDAARADDARQLFVLAGAAEE-GFMT AELAGVIKRLWKDSGVQACFNRSREYQLNDSAAYYLNDLDRIAQPNYIPTQQDVLRTRVK TTGIVETHFTFKDLHFKMFDVGAQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAA AYIQCQFEDLNKRKDTKEIYTHFTCATDTKNVQFVFDAVTDVIIKNNL------ >http://www.rcsb.org/pdb/files/1GIT.pdb ------------------------------REVKLLLLGAGESGKSTIVKQMKIIHEAGY SEEECKQYKAVVYSNTIQSIIAIIRAMGRLKIDFGDAARADDARQLFVLAGAAEE-GFMT AELAGVIKRLWKDSGVQACFNRSREYQLNDSAAYYLNDLDRIAQPNYIPTQQDVLRTRVK TTGIVETHFTFKDLHFKMFDVGAQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAA AYIQCQFEDLNKRKDTKEIYTHFTCATDTKNVQFVFDAVTDVIIKNNL------ >http://www.rcsb.org/pdb/files/3QI2.pdb ----------------------------GAREVKLLLLGARESGKSTIVKQMKIIHEAGY SEEECKQYKAVVYSNTIQSIIAIIRAMGRLKIDFGDSARADDARQLFVLAGAAEE-GFMT AELAGVIKRLWKDSGVQACFNRSREYQLNDSAAYYLNDLDRIAQPNYIPTQQDVLRTRVK TTGIVETHFTFKDLHFKMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAA AYIQCQFEDLNKRKDTKEIYTHFTCATDTKNVQFVFDAVTDVIIKNN------- >http://www.rcsb.org/pdb/files/1SVK.pdb -------------------------------EVKLLLLGAGESGKSTIVKQMKIIHEAGY SEEECKQYKAVVYSNTIQSIIAIIRAMGRLKIDFGDAARADDARQLFVLAGAAEE-GFMT AELAGVIKRLWKDSGVQACFNRSREYQLNDSAAYYLNDLDRIAQPNYIPTQQDVLRTRVP TTGIVETHFTFKDLHFKMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAA AYIQCQFEDLNKRKDTKEIYTHFTCATDTKNVQFVFDAVTDVIIK--------- >http://www.rcsb.org/pdb/files/1SVS.pdb ------------------------------REVKLLLLGAGESGKSTIVKQMKIIHEAGY SEEECKQYKAVVYSNTIQSIIAIIRAMGRLKIDFGDAARADDARQLFVLAGAAEE-GFMT AELAGVIKRLWKDSGVQACFNRSREYQLNDSAAYYLNDLDRIAQPNYIPTQQDVLRTRVP TTGIVETHFTFKDLHFKMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAA AYIQCQFEDLNKRKDTKEIYTHFTCATDTKNVQFVFDAVTDVIIKNN------- >http://www.rcsb.org/pdb/files/3FFA.pdb -------------------------------EVKLLLLGAGESGKSTIVKQMKIIHEAGY SEEECKQYKAVVYSNTIQSIIAIIRAMGRLKIDFGDAARADDARQLFVLAGAAEE-GFMT AELAGVIKRLWKDSGVQACFNRSREYQLNDSAAYYLNDLDRIAQPNYIPTQQDVLRTRVK TTGIVETHFTFKDLHFKMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAA AYIQCQFEDLNKRKDTKEIYTHFTCATDAKNVQFVFDAVTDVIIKNNL------ >http://www.rcsb.org/pdb/files/1GIL.pdb --------------------------------VKLLLLGAGESGKSTIVKQMKIIHEAGY SEEECKQYKAVVYSNTIQSIIAIIRAMGRLKIDFGDAARADDARQLFVLAGAAEE-GFMT AELAGVIKRLWKDSGVQACFNRSREYQLNDSAAYYLNDLDRIAQPNYIPTQQDVLRTRVK TTGIVETHFTFKDLHFKMFDVGGLRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAA AYIQCQFEDLNKRKDTKEIYTHFTCATDTKNVQFVFDAVTDVI----------- >http://www.rcsb.org/pdb/files/1AS0.pdb ------------------------------REVKLLLLGAVESGKSTIVKQMKIIHEAGY SEEECKQYKAVVYSNTIQSIIAIIRAMGRLKIDFGDAARADDARQLFVLAGAAEE-GFMT AELAGVIKRLWKDSGVQACFNRSREYQLNDSAAYYLNDLDRIAQPNYIPTQQDVLRTRVK TTGIVETHFTFKDLHFKMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAA AYIQCQFEDLNKRKDTKEIYTHFTCATDTKNVQFVFDAVTDVII---------- >http://www.rcsb.org/pdb/files/1AS2.pdb ------------------------------REVKLLLLGAVESGKSTIVKQMKIIHEAGY SEEECKQYKAVVYSNTIQSIIAIIRAMGRLKIDFGDAARADDARQLFVLAGAAEE-GFMT AELAGVIKRLWKDSGVQACFNRSREYQLNDSAAYYLNDLDRIAQPNYIPTQQDVLRTRVK TTGIVETHFTFKDLHFKMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTDTSIILFLNKKDLFEEKIKKSPLTICYPEYAGSNTYEEAA AYIQCQFEDLNKRKDTKEIYTHFTCATDTKNVQFVFDAVTDVIIKN-------- >http://www.rcsb.org/pdb/files/2ODE.pdb -------------------------------EVKLLLLGAGESGKSTIVKQMKIIHEDGY SEDECKQYKVVVYSNTIQSIIAIIRAMGRLKIDFGEAARADDARQLFVLAGSAEE-GVMT PELAGVIKRLWRDGGVQACFSRSREYQLNDSASYYLNDLDRISQSNYIPTQQDVLRTRVK TTGIVETHFTFKDLYFKMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTETSIILFLNKKDLFEEKIKRSPLTICYPEYTGSNTYEEAA AYIQCQFEDLNRRKDTKEIYTHFTCATDTKNVQFVFDAVTDVIIKNNL------ >http://www.rcsb.org/pdb/files/2V4Z.pdb ------------------------------KEVKLLLLGAGESGKSTIVKQMKIIHEDGY SEDECKQYKVVVYSNTIQSIIAIIRAMGRLKIDFGEAARADDARQLFVLAGSAEE-GVMT PELAGVIKRLWRDGGVQACFSRSREYQLNDSASYYLNDLDRISQSNYIPTQQDVLRTRVK TTGIVETHFTFKDLYFKMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTETSIILFLNKKDLFEEKIKRSPLTICYPEYTGSNTYEEAA AYIQCQFEDLNRRKDTKEIYTHFTCATDTKNVQFVFDAVTDVIIKNN------- >http://www.rcsb.org/pdb/files/4G5R.pdb ------------------------------KEVKLLLLGAGESGKSTIVKQMKIIHEDGY SEDECKQYKVVVYSNTIQSIIAIIRAMGRLKIDFGEAARADDARQLFVLAGSAEE-GVMT PELAGVIKRLWRDGGVQACFSRSREYQLNDSASYYLNDLDRISQSNYIPTQQDVLRTRVK TTGIVETHFTFKDLYFKMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTETSIILFLNKKDLFEEKIKRSPLTICYPEYTGSNTYEEAA AYIQCQFEDLNRRKDTKEIYTHFTCATDTKNVQFVFDAVTDVIIKNNLKE---- >http://www.rcsb.org/pdb/files/2IHB.pdb -------------------------------EVKLLLLGAGESGKSTIVKQMKIIHEDGY SEDECKQYKVVVYSNTIQSIIAIIRAMGRLKIDFGEAARADDARQLFVLAGSAEE-GVMT PELAGVIKRLWRDGGVQACFSRSREYQLNDSASYYLNDLDRISQSNYIPTQQDVLRTRVK TTGIVETHFTFKDLYFKMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTETSIILFLNKKDLFEEKIKRSPLTICYPEYTGSNTYEEAA AYIQCQFEDLNRRKDTKEIYTHFTCATDTKNVQFVFDAVTDVIIKNNLK----- >http://www.rcsb.org/pdb/files/4G5O.pdb -----------------------------AKEVKLLLLGAGESGKSTIVKQMKIIHEDGY SEDECKQYKVVVYSNTIQSIIAIIRAMGRLKIDFGEAARADDARQLFVLAGSAEE-GVMT PELAGVIKRLWRDGGVQACFSRSREYLLNDSASYYLNDLDRISQSNYIPTQQDVLRTRVK TTGIVETHFTFKDLYFKMFDVGGQRSERKKWIHCFEGVTAIIFCVALSDYDLVLAEDEEM NRMHESMKLFDSICNNKWFTETSIILFLNKKDLFEEKIKRSPLTICYPEYTGSNTYEEAA AYIQCQFEDLNRRKDTKEIYTHFTCATDTKNVQFVFDAVTDVIIKNNLKE---- bio3d/inst/examples/hivp.dcd0000644000176200001440000106161414707230357015510 0ustar liggesusersTCORDuu€?T¤Created by DCD pluginREMARKS Created 14 September, 2016 at 11:45¤Æ005^OBÙNNB‘m@BÓÍ:Bd»0B-&BPBã¥BþÔ*B¬œ#B7‰+B)BjB}?MBš™PB¨F_BfæaBo’VB\KBV>B0B¸%B¦›BhB„B¸Bî|BJ B% B•*B\3B¢Å5BÁÊ2B…6B¬,B^º*B‹ì#Bd»1B,;B-6B š:BR¸HBbIB¶sJBÚJBð'LB¤pWB#[\BÑ"oB‰AnB^ºgBË!hBœÄ]BÓÍfB= bBÚTBoWBÕxVB#[ZBÖZB‹ìOB“OBáú@B–C=BNâKB¢ÅIByéRB^:MB«PByiFB'±DB#[DBÑ¢8BL·4B`å(BD #B}?B9´Bfæ$Bô}!BL7*Bîü*Bmç#BTc*B!0%B“$B°òBÕøBHaBshBú~ëA)\åAVìAB`éAffÿAÁJBœÄ BÇK BB ×ðA¦›íA‹lûAw¾óAòRB`åBö(B…kB“˜BìÑB{”'B¾6Bd»>B}?MBš™PB¨F_BfæaBo’VB\KBV>B0B¸%B¦›BhB„B¸Bî|BJ B% B•*B\3B¢Å5BÁÊ2B…6B¬,B^º*B‹ì#Bd»1B,;B-6B š:BR¸HBbIB¶sJBÚJBð'LB¤pWB#[\B5^OBÙNNB‘m@BÓÍ:Bd»0B-&BPBã¥BþÔ*B¬œ#B7‰+B)BjBÖ;Bö(4BZd,B^:'BshBBàBX¹B¦#BZ!B²-BB0B¾9B€BbLBð'QB¸ž_BªqbBƒÀWBu“WB°rNBD‹OBázKB—MB WBY`BcBÝ$cBeB%†eBq½[BázMB'1EBw¾8BÁJ*B!0B²!B®GBÅ !B`e)B/6BNâBB…kHBÇKVB= _BB`]Bü)[BÚhBZmB…kbBƒÀfBÓMZBßÏ_B–ÃQBw¾TB²NBTc`BHafBòRbBœÄjBTcdB ×oBu“lB33]BP]BVXB®ÇYBq=UBîüHB¶sFB17BøÓ3BªqCBøÓEB°òPB×£MB¢ESB¬GB%†GBݤDBö¨BÅ EB)\TBÉöOBÅ EBP9BßÏ/BÇK Bh‘B BX9BƒBÑ"Bw¾B{B!B?50Bƒ@9B¸ž6Bsè2B ‚0B¦›'BR¸#B\B5Þ'B¨Æ.Bš*BÙ-BœÄ:Bsh:BÉv?BòR>BÁJDB®ÇNBÉöSB/ÝBu“‚ByéxB®G}B ‚pB!°wBjqBÅ bBݤcBZ_B´ÈbBffdBbYB‰ÁXBZdKB\KBNbYB ‚QBáz[B\RB'1VBœÄOBÉvSBÂUBX9MBÍLLB?Byé6BNâ-B«+B5^4B3³.BV0B-BÛù!B%BþÔBVŽ"B1BÉöBã%B€BHáüAƒõABq=BshB ‚Bé¦B{”B/Ý BX9ýAÅ BÛyBÂûAî| Bd; B…B7‰B…ëBTã)BøÓ3BÛyBBç{KB¾ŸZB`eaB)\oBÕømBªñfBd»YBô}PB`eABòR4B;ß(B¬(BbB`eBX9Bã%B–C%B€/BB`:B…=BÙNAB“˜HBÁJABÍLBBD‹;BD‹FBã¥PBjFBNb=B°r@B/]LB¼ôFB}¿OB#[IBü)OB=ŠIBÙNJB= CBã%CBË!6B/]B¬EBj¼FB{”BB/ÝCBÏw6Bé¦;BBà-BåÐ/BP $BX9#B94BåÐ B-BÁJBVŽB;_!BÛy*BÍL3BÅ BB LB/][BZäeBݤ[BP dB¤ðZBjbB×£aBã%dBáznBÅ uB‰ÁsB ×pBF6pB…ëeBݤYB‡–LBj?B/4B ‚&B¶sB¬!B°òBB`*Bd;7BB`DByiSBX¹TB¾`B ‚dBbfBlBªñyBºIB/xB²]BêwBÍLzB'±rBÕx|BwBF¶ÁÁÊ­À㥋À9´˜¿€>B`¥>¬$À= /À9´xÀ9´ôÀJ Áq=\Áé&wÁžï™Áff¥Á^ºÁÁÍÌÂÁJ ¶ÁX9žÁ ˆÁ!°XÁ9´&ÁjØÀb¸ÀÂ%ÀåÐ"¾V¾?š™É¿°rø¿B`µÀ¬ Áu“"ÁåÐ^Á{`Á{„Á‡¡ÁË¡¯Ážï±Áh‘ÅÁL7¹Á+‡­ÁòÒ‘Áú~nÁÁÊ=Á‘í Á+‡²À-²}Àî|ÿ¾7‰Ñ¿-²=¸¥?“”?åÐÒ¿ff¦ÀçûÁ‰A*Á#Û_Á1\Á;߈Á¦›ƒÁ)\”Á®’Á´È™Áçû‹ÁÑ"ŽÁ˜nhÁ…ë}ÁË¡“Á-²€Áj¼Á¬pÁ)\Ád;[ÁÉv^Á¸IÁ'14Á¾ŸVÁÙDÁ…5Á®G Áw¾÷À²çÀÍÌ&ÁË¡Á1Á‘í´ÀÍÌlÀé&ÍÀB`Á-ÊÀ¬¨À² Ád;ÁbÄÀ¢E‚À5^¿ôý„?®G@ ¯@ÕxAÑ"—@Ý$Š@¨Æ›?P×>ôýÔ¼jD@Ãõp@é&½@‰AAÕxCAj¼tAff†AÍÌ¢AR¸¤Aü©¿AÃõÆAq=µA9´¡ATãˆA—ZA°r6AD‹ô@7‰Ù@D‹€@`å°?;ßÏ>Zd3@w¾/@\Æ@•Aã¥-A×£^A#ÛyAƒÀ‘AL7­A㥺AƒÀ½AZdÓA?5ÃA®G¶A/˜A/}AL7]AþÔ"Aé&AƒÀº@n@ºI„@Ûù¾?ÙÎ@ÁÊa@Æ@/AþÔBA…QA¨ÆA= kAÍÌ‹AßO‹Aé&—AÕx A'1A‘A-²‘AyénAR¸~ATã•AR¸ƒAìQ–A˜n€A‡‚Ad;gA+‡bAøSWAÓMDAœÄpA;ßaAyéNAq=AázAB`A¨Æ/Aw¾A`åA˜nÒ@ffŽ@°rð@ ×A—Ö@øSÏ@u“ AôýAVÉ@}?@= ×=b(ÀR¸ŠÀåÐòÀ00335Bô}+B—)B7‰BªñB^: B¢E BYBV#BX9&B ‚-BË!2B€@B.FBö(MB%LBÛù@B-6BÁÊ/B˜n)B«)B¸0B“2BP B;ßHBú~UBúþPB'1\B°ò]B94eB#ÛnBšqBîüzB‡}BfæqBœÄlBªq]BÉöTB#[MBË¡DBÃuOB5^ZBœDbB94iBË¡sByéuBÃurBžïcBÛy_B‡VBNBÇË?BÓÍ#B%†B= B94BøS!BázB€B²Bî|BNb(BÉö,Bƒ@8B@BjLBDK‚B…ë‚Bo’vB}?rBã¥bB7 `B33]B-2TBJ `Bü)]BD‹gBÙNgBjHB WNBq½\BÛy^BffkB­kBÉöwBª1€Bw¾{BsBjgBáz_BÍLQB‰ACBªq=BVŽ.B-2+BJ B–CB¬œ Bî|$BØ2Bd;=BÛùCBêNBj¼IBÛyLBªqLBô}VB=Š`B¢ÅeB‰ÁlB+sB´HxB)\qBÝ$tB%†pBþÔ}BÕx~BF6{BßO}BbqBÑ¢oB–CaB“˜]BøÓQB¢ÅJBÝ$WBœÄNBD WB VB;_OBd;LBç{@B ‚>B¢ÅGBÑ"=BHB!0?BòÒEB?µCBƒ@EByiQB,LBVŽSBìQFB¯:BË!=B ‚6Byi7Bh*B33(Bw¾BbBÉöB´ÈBj<#B=ŠBœÄB+ BffB, BžïB!0B\B ×B°òB`eB33B¤p B„BBš™ûA-2B‡ B+B3³B`e%Bîü1Bu“B=Š5B 8BV2B?µ3Byi+BšBmgBB!Bo’"B*BË¡ B¾ŸB×# B‘mB¶óêAã¥ÚA'1ÕA èAƒÝAshñA®GÿA;_BYBj¼Byé(B‘m8BÏ÷9B‡.B¶s"BD‹B‘íBÁÊB^ºBƒþAÏ÷øAshæAžïÝA{òA}¿B¬œBF6BD‹!B}?'BVB®B+‡BJŒB ×îAžï÷A‰AûAÕø B•BX9BNb B€/B,3ByiAB.?Bð'3BP/BìÑ$BÁJ B-²B–C B B‘mBÇK B3³BÕxBfæB7 &BøÓ(BF¶5Bb:Bu“BB#ÛB–ÃBB`pBºIlB/^Bô}WBBàNBºÉLB{YB¶sVB)Ü^BÕxYB!°RB/]OB¬DB^º?BYHBòÒ?BÉöHB¯@BòRIBw>FByiKBh‘WBݤOB}¿WBé&KBøSCB-ABü©:B®B;_6BÅ )B !B¬BJŒB×#BšB¼t+B¼ô6B…ë?B.LB= KBJ VBÓÍWB¢Å[B;ßdB1ˆmBáztBšvB-€B5^wBÚBÂzB„B)€BøÓƒBª„B¬|B,xBhB˜îeBð§^BÝ$WB‘mcB;ß\BX¹dB+cB{[BÁÊ\BXRBÁÊOBÕxVB­NB/]YBð'QBÛyUB®GOBÛyPBZB‘mRB—TB`eFB…ë=Bªñ9Bmç8B¨F?BƒÀ4B#Û4B•,BºÉ$Bh‘,B ‚,B7 6B\1BTã)BB`eBB`BX¹Bd»Byé Bh‘BÁJB'±B¯Bð'BœDBZdB/]BË¡BNâB‰ABºÉ&BòÒ1BË!:BßÏHBPLBVYBøÓWBƒfB×#iBþTwBœD{BZdzBžopB•fB-²[B×£NB;ß>B¼ô:Báz,B)\(BTãBq½B W%Bq½&B¯5Bú~ÁìQ^Ááz2Á˜nÁ33ÏÀX•Àh‘mÀ“d¿Há @¦¿…¿/ÝTÀòÒUÀPÀVn?˜nR?Zd[?㥇@ìQ¬@Å A…ëA˜nDA/Ý>A®{AþÔAÉv„AÑ"cA}?7AZd A+¯@Ãõè?h‘­¾7‰YÀ5^ÞÀ= ÿÀÑ"³ÀjØÀu“HÀ°rh>P'@ÕxÑ@ìQA˜n6A¼t]AòÒ}Au“\AÑ"uA/KAü©1AZdAw¾§@Ï÷K@¼t=¢EÆ¿L7AÀ}?¹Àã¥kÀ¼tsÀ®GIÀ‰AœÀî|À)\?¢E@œÄh@/¹@= @é&á@…—@Å ”@^ºå@!°î@R¸AƒÀò@˜n²@PÏ@Å AD‹°@´È¾@-²M@o;@ázô?¤pí?XI@X1@ö(Ä@°r¼@¤pÅ@ÇK@°rh@Nbh@= —@–C»?Ë¡?yé>ÀÑ"¿À²‡Àã¥{¿NbPÀßO¥ÀòÒÀÁʱ¿-†À^ºÀÁÊÁ9´ÁÏ÷!Á®GWÁ00 ‚;B94/B?µ*BÅ Bð§ BL·BœDBo’)BœÄ.BÕø:B?µCBR¸NBòR\BÍLgB®GuBìQ}BPsBD iBÚ\BÚSBêJB¨ÆNBw>CBÇËHBìQIBªñIB#ÛLB9´YBTccBåPmBPjBJŒjBßOlB‰AhBÇKsBžïzBZ¤„BP ˆBB5^“Bö¨•BöhBÁJBBm'‡BT£BîüvBÚjBJ cBåÐVB7 YBÂeBƒÀqBü)uB?õ€BÙŽBÀ†B¦›†B;_‰Bú¾‹B²ŒB¾ß†BB ƒB¦›wBÅ mBÛù_B¬WB%bBÃõiBYvBY{B‹lƒBƒB®Ç„BÃu~Báú|BªqzB°rtBÃõfB´È]BÍLPB JB×#WBœDWBu“_B«]B{”aBü©nB/]lBX_B®ÇhBºIqB+‡cB¤pYBØPB‹ìGB/:B2Bfæ$Bd;3B33@BƒFB=ŠTB‰A\B¬eBþÔeB®GYB–CMB¶óIBd;@B–Ã8B…)BL7&BªñBw¾BX B+‡-B…4Bƒ@=BVDB˜n>B—BB˜n8BÏ÷;Bo’4BJŒ:Bsh4B-²%B¸"Bô}#B¦›+B­/B˜î6BÛy-Bd;)B%†B¤pB33B‘íôAË¡ëAÓMýA úAêB, BøÓB¸Bö¨(BÅ 4B{”CB= CBÉö8BœÄ+B‹ì-BX¹!BØBD‹B„ BÝ$B+‡úAB`ëAð'B-2B9´B/ÝBƒB1BßOB+ Bð'BúþB¢EýA94ByiBB'±B-2$Bê.B¦=Bw>?B—MBTcIB«=Bff6BZä(BÕø'B?5 BuBd;BBé&BÖBVŽB1B."BD 'BÉö5Bq½9BXFBÄ…Büé†B®GBÉvxB¼tiB“˜dBƒÀYBÍÌWBþÔcBÃõ`BkB×£iBj¼gBã%dBßÏ^B/]VBÙWBƒ@PBþÔZBVSB¶sXBªñYBÁÊZBfB}¿[BmgbB¨ÆUBBàOBö(YB)\VBþTUB}¿IB7‰HBF¶9BHa.BøÓ5B¢Å5B ×BBÛyBç{7BÖ.Bçû7B×£4B¯;B×#6BÅ 0B=Š$B\#BVBÙBYBBfæB°rBL·%B¶s#BBªqBü)B{”BVBu“Bô}!Bd»,B š5B.>B¦›JBw¾PBTc_BÚdBÉvsBœDuBëBR8‚B+€Bš™sBÍLlB¨F^BÅ QBshCB}?BB5^5Bã¥/Bb%BB`#B×#,BÁÊ1BÏ÷?Bü©HBîüOB= XBL7SBÇKXBÉöTBòRaBbiBþTjB²mBü)xBÑb€B€B˜n‚B7É€B@‡B'ñ‰BþÔpÁ33GÁázJÁu“(Á…ÁÓM6ÁTãUÁÝ$>Ámç[ÁøSÁ´ÈÁj¼¦Á‹lšÁÁÊ®ÁåЪÁ33¼ÁVÓÁ…ëÇÁ ÈÁö(´ÁåОÁƒÀ‚ÁÕx]ÁÉv6ÁÁÊ ÁÕx¥ÀL7YÀ˜À#ÛAÀ/½ÀoÁ{<ÁL7wÁ Á)\„Á…ëšÁ ŸÁ°rÁP™Á}?„Á1PÁB`1ÁNbðÀ%ÑÀ1|ÀÛùî¿Ý$Æ¿ƒÀÊ>q=:À‹lOÀÉvî¿ÁÊ¡=åÐ’¿åКÀ^º¡ÀÝ$ÁF¶Á{ ÁR¸:ÁìQ.Áö(NÁ5^xÁázˆÁF¶‘ÁÁʘÁd;‰Á’Á;ߢÁü©ˆÁÅ Á‰AhÁé&[Á33/ÁX9"Á˜n,Á¦›Á#ÛCÁÑ"5Á°rHÁÉv2ÁžïMÁj¼XÁ%eÁB`?Á¼t3ÁXíÀB`‘À!°ÂÀî|Á–CóÀ ¿ÀÝ$ÁÕx'ÁÁ®GñÀ^º‘À)\oÀ‹lGÀ¾ŸŠ¿J *@‡ @òÒM? ד?B`…¿¶óÝ?J r@R¸Î?•C@‡±@ôýä@¼tAö(A?5DAu“HAbxAshAçû…A qA¤pIA…!Aoã@ÙÎO@-²=?°r Àj¼¸Àw¾×Àh‘‘ÀªÀºIü¿;ßÏ?ƒÀr@9´ð@1&AÙÎGA1vAòÒ‚AÓMnAøS‹A ×mA…ëOA¢E A•Ó@øS@33“?-ò¾×£ Àd;¯ÀHáZÀã¥cÀ/-ÀÇKgÀ}?EÀNb0?é&A@åЦ@j¼ð@Év®@åÐAÝ$Ò@ƒÀA‰AAÝ$Ad;AòÒA¬Ð@¨Æß@ A+«@!°Ú@Tãm@¬–@®G1@j„@¨Æ£@?5¢@+Ayéú@‡Aü©¥@Nb @‘@ ·@åÐ:@žï@}?µ¿ƒŒÀJ À¾Ÿš¾w¾'ÀßO­ÀøS;ÀœÄ ¿q=ŽÀ“tÀ‹lçÀ%Á-²ÁZd3Á00yi@BÓÍ6B/4Bð§&Bj¼'B)\Bw>(Bƒ4B7‰8B¬œFBffOBð'[B ×iBF¶sBu“~BÉö‚B¸|B= sB9´hBÙbB¾VBö(\BPPB)ÜPB-²MBòRNBd»OBq½ZBPcBBpBqBØuBð'yBJ }Bqý…Bd;ŠB´HBË!“B¦™B˜®œB#[B#Û•BÅ‘B¸ÞB†Bô}Bh‘vBsègB+‡aB‹lXByi`BTãgBøÓqBô}{B-2„B¢Å…BÉv‹BòÒŠBÇ ŽB‘mBçûB B‹BåPˆBÓBbyBªqlB–ÃcBÝ$qB–ÃnB…ë}B}B…BE„BÝd†BÉ6ƒB¬\‚B‹,„BPBœÄzBøSnB-²`BÝ$XB¦›dB;ßaBÙNdB¶óbB¸žcB7‰sBZäoBžïbBÓMhBØqB®ÇgB‘í^B=ŠRBžoHB94:Bƒ@0BD‹#BØ-Bžï9B}¿AB1ˆOB;ßVBúþ_B´H^B ×TBîüHBøS?BÑ¢1B•'B“BmçBú~ B-²BÛyBq=BÉvBmg&Bsè/B¤p2Bw>:B¼ô3Bu“;Bš;B–ÃABö(;Byi/B-2'BÃu#BË!(B—$Bh‘)Bžï!B^:B´H BºÉBòA¤pâA“äA= üA^:BF6BR8B²%BHa/BVŽ>Bq=CBOBR8RBÉöLB¼t@BÉö5Bçû'BVŽ"Bé¦Bð§ BþTBœÄ÷A7‰çA¦›þA–CúA × B BÅ BHáB\Bð§B¶óúA˜nÿA1ôATãBV BTcB#[BÝ$ Bê)Bb7BþÔ:BÑ¢FBq½BBÖ4Bü)3BJŒ)B š+Bsh&B´ÈBºÉBú~Bw>Bj¼ B WB×£Bü)(B!0-BL·B‘mMBô}B}ÿŽBÛ¹‡Bò…Báz|BÙtB5ÞiB ×iBvB‡–tB}B‘íwBP {B¾sBupB–CfB7‰cBªñYBÃõdBçû`BZiB¶óhBÓÍmBF¶{B¤ðwB°rBö¨sBÛyjBhuB¨FpBžïoB+cB3³]B šOBL7MB‰ÁMBÂPB¢E_B ×XB?µaB-2bB´H^BcB-2XB¬XB^ºNBTãQBbLBw¾BBÙÎ5BÕø*B!°2Bsè=BÅ :B5ÞCBîüJBºITB–ÃcBfækBJŒzB¤0‚B–CzBë‚BfæBÇ ƒB¼ô„B‹lˆB'qŒBïŽBÁÊB}?ŒB?õˆB…Báú{B/]nBÃubB-XB7 JB¬>BÅ FBݤCBòRPB°òXB„gBNbvBsèxBÁJ‚B`%„B–ƒ†B\OŠBN"BìÑBÕBÓ –Bì’BºI•B`¥‘BHa—BHá’B®‡—Bç»™BP ”B+‡’Bwþ‹BÝdŽBš‰B¼ôƒBœ„‡B\„B‡Bn‡B3³‚BÁ€B¼ôsBmgtBÕ8€Bsh{BÃ5B‰Á{BW€B)ÜxB¯xBD ~BÇËvBZduBd»gBš^B¬YBêSByi[BÇKVB1ˆYB¦›XB= LBêSB…kJBé¦PBFBVŽBBÇË5B®G6B…k0BJ )Báú-B{”&B ×/BÑ¢1BÏ÷;B{”=B€0Bݤ%B#Û!BP 'B$B‹ì/BºÉ3B‹ì>B•IBÖNB#Û[BòR`BºIoBøSsBÉ6Bö(…BÁJŒBFöB…«ŠB\O„BF¶|BunBbBšTBSB¤ðGB;ßGB{?B¨FAB'1NBÇËUB®ÇaBøSfB iB ×nBî|hB‰ÁkB ×dBÚpBøS|Bžï|Bø“Bqý…B}ÿŠB ŠBF6B­ŒBq=“B}ÿ”B/“Á33}Á7‰}ÁyéjÁôýVÁ¶ó{Á+‡‚ÁVcÁ²ÁÓM‹ÁV ÁZ°ÁÉv¦ÁìQ¶Á?5¥ÁºIµÁºIËÁË¡¼ÁD‹½Á×££Ád;Áj¼€ÁÃõZÁV@ÁžïÁé&­ÀÙ^Àö(tÀÅ À¨ÆkÀd;ïÀHáÁshMÁÁÊ[Á7‰SÁ´ÈƒÁyéhÁ7‰iÁd;IÁázÁ%ÅÀÓM®À–CÀ «¾q= ¾Nbð?P—½¬Z>ÉvÀHáú¿'1ˆ¾ú~ @ö(Œ?¨ÆË¿Ãõ¨¿/݈ÀòÒ­ÀĮ́Àð§ÁÉvÁ;ß5Á= [ÁR¸~Á/‰ÁøSœÁyéÁÛù¥Á¶ó©Á¨ÆŒÁ9´†Á7‰OÁ GÁZÁð§úÀjÁÑ"ËÀ¬Á¤p ÁÅ ÁHáÁ{0Á/;ÁL7AÁff*Áôý6ÁZøÀôý¤À^º©À¼t Á¶óÁìQÀÀ¼t ÁƒÀ8ÁºIÁ/Á®ÏÀ¦›ÔÀu“¬À`å¸À>®Gá¿×£°¿é&9ÀZd#ÀoÃ>˜nB@ÕxÙ?ö(|?¨Æ{@‘í@¤pí@ôýØ@ÃõA‹l A¦›8A= YAÛùjAÉvDA‘í.AªñAX9¤@Ûùî?;ß¿¿d;‡À-þÀçûÁu“´À‰AôÀÏ÷—À´ÈÖ¿²ï?mç«@–CAî|AD‹8A1TA\*A‘íDAXA®Û@î|@)\Ÿ?áz?/ ÀJ À/]À{~À¾Ÿš¿j¼t?= ?@é&ñ>V­¿P§?{Î?7‰q@¢EŠ@J @Z|@-²}?çû™?ð§V@š™@VN@mçk@ @q=Z@ÁÊa@š™™>mç?Ûù®¿J "ÀX9Àã¥ë¿-²}?Vž?5^¢@R¸Ö@'1AÅ Ü@ZA‹l»@²«@)\Ï?#Û9¿×£ÀçûõÀZdãÀR¸®ÀåÐÊÀÛù ÁÑ"Á…ÃÀyé ÁÍÌüÀo3Á%/Á“LÁ1RÁ00ªñQBþÔCBÁJGB¤ð=B®ÇDBF6?B‘íIBÃõSB{XBVŽdBÙNgBsB)\€BP ‡B²B'q‘BY‹B‚‰BVŽ‚B3³‚B¨ÆwB´ÈwBhmB¦lBF6jBé¦dBö(lBR8zBÕ¸BJ̇B˜n†BÉv‹B‰ŒBôýBNb•B ™B×ã BÉö£BþÔ«B Ú¬B+G®BZ¨BD¦B)œ¡B°ršBF¶™Bžï‘BB`%‹BÑb…Bõ‡BÃ5B¶s“B°ò–BÏ7œB/šB5žžBÍLB¬\žBZäB¼4›BÏ·—Bm§‘BDŒBL÷…B,B¶ssB'1|Bn€B‹¬‡B= ˆBf&B-2‘BÚ”BX9’B®“B W–Bs¨•BÝd’B¦[‹Bé&…Bî|€BByiB)\~BøS|B¾ŸzBV…B.„B¨FxBL7{B ×€B­wBJŒkBHá`Bš™TB#ÛIB!0ZB¬dBîüdBD‹qB7‰oBj<{BX9xBòRuBYuBkBÃulBÂ`B)\cBÏwXB‰ÁXB OB–Ã@B7‰CB%†LBÕøHBffRB²[BVeBotB°r}B¤°†B W‹BÆB#‰BR8…BÕøˆBoÒ†BìQ‰BÕøŽB{T‘B'±B^ºBøSŽB¤p‰BoRƒBô}yBpBjÀÑ"Û½)\ÿ?®G@VU@ºIŒ?ZdÀé&IÀJ ÞÀ^ºÁÝ$Á¸=Á¼t7Áff Á“$ÁÙÎÁìQÀ‹lÀ¤p?R¸&@…ë…@)\Ç@Ï÷Ç@jô@{~@¾ŸŽ@°rˆ@¢EÒ@ ç@¶ó}@‡A@)\>ÍÌì¿T㵿—ŽÀ¢EŠÀÉvâÀ%Áw¾7Áú~HÁªñ^ÁbHÁX9lÁL7€ÁÅ NÁ+GÁ— ÁÕxùÀ×£¤À-rÀË¡¥À¨ÆÀþÔ ÀPÀ°r˜À^ºÀ®“Àq=žÀq=ÞÀ{–Àmç¯ÀƒÀÊ¿¸…>5^:¾{vÀÉvfÀm绿ÇK—À;ß×À¼t»À= “À“,À/5ÀX9,À…+¿ö(d@Ùn?Tã-@¬ú?¬4@-š@#ÛA¬æ@‡á@°rAÑ"A^º9A331AôýZAázRA×£~A7‰”A¨Æ•A¼tŠAq=‚AJ TAVAÙÎë@-²…@‡¹?oÀ33;ÀÏ÷S¾#Û1À—®>é&i@œÄÔ@®#A¦›TA˜nnAJ €Aö(AbdAq=xAåÐBA×£A= A–@ôý|@¸@Zä?çû)?ƒÀ ?ÇKO@ž@ÓMÞ@D‹Œ@{@w¾»@!°Ö@ôýà@š™AÙº@æ@/Ýœ@j¼¤@š™ù@¤pAAo AôýØ@¦›Ü@q=ê@d;w@ßO@¸@ªñZ@\@Nb8@®G™@þÔÈ@;ßAj2AþÔTA‹l/AžïEAq=A˜n"AÕxÍ@'1@˜n’?çûÀð§>À?5¿5^š¿²‹ÀÏ÷CÀÛù¾¿b”À´ÈnÀ1àÀ—ÖÀJ Áö(Á00VJBmg;B ;B².BZ.Bô}%Bff1BÕøB`åDBÍLSB-2ZBË¡aBÓM]B¶sWB/ÝKBƒABD 3B‘í&Bî|BÑ"B1ˆBã¥BøS B…kB‰A#BÏw-B®G9BÅ 6BL7?BßÏ9B)Ü@BìÑ@BP JBAB×#8BF6/BìÑ)Bé&0B°r'BåP-B;_%BuB33BìÑBåÐóANbêA#ÛöAÁÊBêBVBÏw#B?52B…k:BøSHBžoPBœÄ_B®G^BÛyYBoKBìQDBL·6BHa.BL·B#[B;_ BF¶B-òA Bq=ýA¦ B˜îBºIBé¦B×#BýA…øAúþBffüAbB®Ç BP Bã%$BÓÍ&B¶ó2B\?Bç{EB¼ôNBNbHB€9B«8B š,B+0B`e-BÇK B1ˆBÙÎ"B3³B¨FBÏwBuByi*B—-B3³9BßÏ?BBàKB“X–Báz”B¾_Bö¨‰BRxƒB®Ç|Bü©uBßOsBôýB‰Á}Béæ…B‹l‡BbЇB1ˆˆB…BÑb…Bì‡BBÇ˃B`åzBu“}B|B¨F}Bá:…BL·B`%„BÙN|BNbwBš€BÃu~B!0BÓMqB®nB-²bBôýaBð§jBþTkBHávBázwBj<|B¦›qBjBw>=BþÔ/Bj¼1B5^,B•&Bd»0BË!.Bd»;B¢EAB9´IBÕøGBþTÁî|UÁ—>Á¸uÁ–C”Áyé“Á¤p‚Á-²gÁÁÊIÁj Á¦›ÀÀ`å”ÀNb°¿w¾ß?L7a@š™I@¬°@u“P@ö(ܾ1ÀP·À‹lûÀ  ÁÑ";Á‰A8ÁVÁJ Á°rÔÀ¶óÀƒð¿^ºÙ?%@V±@®Ë@u“Aî|AÔ@¼tÇ@œÄÔ@j¼Aªñê@}?m@b8@ÙÎ÷>ú~j¿ü©ñ> ÀœÄ ¾!°Â¿XÀmççÀÙÎ÷Àö("ÁB`Á =ÁòÒ9Á33ûÀ“äÀ\‚À#Û1Àð§Æ¾Ë¡%?= —¿˜nR¿Å xÀßOMÀL7•ÀƒÀbÀ1´ÀºIÈÀ= ßÀff‚Àã¥SÀZdû>X9L@j¼,@PW¿ÇK·>F¶+@-²?`å0ÀÙ®¿Ñ" À{î>D‹ì>;ߟ?ÓM2@“È@¤pµ@Ñ"Ç@L7Í@F¶Ã@žïAR¸>Aªñ&AX9A®G=A 7AXYA´ÈHA‰AxA¦›xAF¶“AºIAð§£A •A…A—tAV8A㥠AÙª@Ý$.@†¿ »¿×£0?®Gñ¿˜n2?¶óm@ö(È@PAÓMLA‹leA+‰A¾Ÿ„AÇKgAð§bA7‰)ATãAºIü@-¢@ÓM¢@Õx@¥?œÄ ?çû©>+@‰AH@#Û½@mç‡@åÐB@R¸Â@9´¼@ ë@ö(ø@B`­@h‘Í@ff‚@ÍÌœ@ü©AœÄA¬ AB`AìQA¤p#A¢E A-Ê@…ëÉ@ƒÀj@V.@D‹Ì?…ë @u“„@é&µ@ƒÀAºI.AòÒQAÙÎ'A¬6A!°Aj¼A×£Ü@Zd«@VÞ?žï÷¿Í̬¿‡™?w¾>UÀð§ö¿…ë‘>áz´¿¢E¶¿XAÀ= —Àw¾À¤p½À00€WBð§KBVIB,;B€;Byi6B×#?BôýGBo’NBÑ"YBR¸cB9´oB!°}B{†B߉BÇKB{TŒB¢…‡Bë€BÑ"xB`åjBªqlB,bB¸eBÇË_BV]Bo’^BTãkBmçuBB`B5ž€BãeB1ˆƒB­‚BÕx‰BÕxŒBj¼“Bs(–BázB?õŸBY£B!°BþÔ›Bƒ€—B˜®‘B´ŒBq}„Bš{Bu“vBTckBåPoB°òyBÉöƒBw>‡B¶3ŽBHáŒB{”’Bl’Bîü•B¤ð•Bá:—BÃõ”Bé¦B-r‰B#Û…B{”|BNbxB3³ƒBTcƒBFv‰Bª1ŠB¸ÞBÇ ŽBÉöŽB ‹BªñˆBþŠB¶³…BL÷€BTãvBš™lBé&hBo’sBbqB= wBJ sB®sBßB\ÏB7 vB?µ}BÃuƒB-zBPqB“eB7‰YB„LB¢ÅCB…6B¬B3³6B+BTãBƒÀB B¶óB%B¶s(Bš6B¢Å?BßÏ@ByiLBü)DBÕxLB= KByéQB{”HBî|ABåÐ6B'±/Bð§0B˜î*B)Ü.B¢E(BºI B¬BåÐ B7‰øA¨ÆíAú~ðAÇËB¦›B= B¤ðB+,B…k3BNâ@Bš™GBNâUBç{VB“˜OB5ÞBBÙÎBçû4B®Ç9BZd7B)BX¹"Bo’.B{(BXB5Þ!B5Þ+BÍL8B¢ÅABìQQBð§UBZdB®G¤B¶ó¡B´HœBÍ̘B7‰B“ØBÙNŽB¶sŠBªñBÕB1È•Bsh—B)Ü•Bî|”BWŽB㥎BC”BšYBÅ`‘B,ŒB㥎B?õ‰BºÉ‰BݤBüé‡B‹¬‡Bh€BB|B¢Å|BHázB‹¬Bj<{BÇË~B94uBÃõoBåPyB šzB²ÝB¾Ÿ€B+BßÏrB²jBœÄgB/[Bžï^BîüTB7‰YBj¼SBÑ"ZBYQB`åCB€;BšCB;ßJBšPB-^B¸žgB¬rBmg~BÃ5ƒBÕøŠB馌B‡V“B/]’B™B™B¢ÅŸBW¢B'ñ¡BB B¤ð˜B ”B‰ŒBºÉ„B¸‚Bh‘uB„qB-²eBîü_Bü©eBhkBð'uB €B¸ÞƒB‚‰Bå†BÀˆB)܈BNâŽByéBRx”BL7˜Béf›BšYBª˜B%†šB?µ—BéfB²™BL7›BºÉ›B…+•Bª1”B!pB¨ŒB#Û†B•ƒBî…By©€B33ƒB–CzB‹ìuBnBÃuhBd;]BVbBw¾YBjfBÑ"eBÅ nB rB#ÛyBáz‚BËá‚BL7‡Bã%‚B=ŠxBú~zB`eqB¯oBƒÀbBßO\B= QBÕøCBbCB5^B}¿5Bj¼5BÑ¢@BáúBB= QBÃuUB¨F`B}¿lBšiB¸žtB,wB„BÇKƒB‡–ˆB¸ž‰BÃõ‹B“؇BVŽ„B33€B×#xBÏwjBÅ fBZBd;QBZäEB`e>B9´LBßÏMB ‚\BçûcBj•cÀHá–ÀVºÀXÁÀÅ ¸ÀÔÀ#ÛÝÀoCÀ–CSÀ1 ¿Nb¾ ë>Ñ"[¾š™aÀ+‡FÀ^ºÙÀ²ûÀÙ$ÁB`Ámç'Á}?ÁƒüÀÙΓÀºI,À ×?'1ˆ@-’@š™@ÍÌ\@ Ç@¦›„@P@/­@/¥@ñ@ÍÌÔ@ªñê@â@°rLAƒÀ6AÂ;A$AshA 7APSA¨ÆAåÐ$Au“6AÁÊUA¸cA¶ó?A/IAu“$A1JA€A—zA…A¾ŸdAd;OA`åA\î@}?¹@ü©!@ÓMB¿Ù>ÀXÀ'1´À—†À7‰A¿ü©q?ÍÌ€@33Ë@X9¬@Ï÷ A û@'1ô@“è@u“p@ÍÌ ?P‡¿-žÀB`ÅÀ5^öÀ¼tÁÑ" Á!°"ÁºIàÀôý¸ÀÓMöÀÙÎ1Áö(ÁžïÓÀÏ÷»Àö(|À¬À•;ÀB`¥¾þÔØ¿}?µ>Ãõ@@ð§²@Tãå@ÁÊ#A¦›&A9´RAbPAåÐA´Èò@ö(€@-â?!°‚¿`å0À‘í<¿š™ù¿ö(œ?L7‰? ×@Zd @ö(˜@ÓMª@…ëµ@j¼L@®GA@œÄ ¿33;À gÀçû©¾L7É>X9´¿¼t“=ƒÀZ@ƒÀ*@B`E@B`å?Tãµ? @)\ï?005ÞkBç{^BD ZB…JB‹ìJBázEBÓÍJB%†SB…]Bô}hB%†uBøSBÕ8‡B{”ŽBw>‘B¶³•BÅà•BBœ„ŠB1ˆ„BP |BVyB¾mBTcnB{hB1ˆgB'1cBôýnB—xB!°€BÑbƒBüéƒB^z‡B=ʆB\ŒBN¢’BlšBqýœB²¤BbÐ¥Bƒ¥BžB‹,›B{Ô”BŽB¤°‰BJÌ‚Bî|wBÙÎsBJŒgB šfB'1oB!0}B˜®‚BÏwŠBšÙŒBNb“B…+”B‡—B%†šBF6œBuS˜B…k—B‰‘B{ŽBJ̆B=J†B˜®ŒBNâŠB¦‘Bá:Bª•BÏ÷BFö‘Bð'BŠBÕø‹B`å†B=Ê€BÙN{BÁJnBJŒlB šyBé&yB°2€B'1|BBà{BÁŠ…B‘m†B‰€B´ÈB-2ˆB练Bq½~B­qBjZB¦_B WnB…ënBázyBffpBžogB_BZäPBÛùBB‡6B ,Bd;Bü©Bã% B`å B–CBøS'B%1Bã%=Bžï@B šLBË¡KBêSBìÑUBJŒWB=ŠJB¸žBBªq5Bžï4B–C1B…*BZ)BTãB…B¶óBoüA9´ëAL7æAÉvëA+BØB,Bš"B²0BÅ BJBö¨IBsh=BúþAB®G>B—BB?5@B‹l1B¼ô-BÏw:BÕx5BÅ (B\-B+8B¢ÅEB×#OBìQ^BåPbB´ÈpBRx BÚŸBÝä™BR¸™B¢”BºÉ–Bw>–B#›Bƒ’BH¡’B%†•B¤p–B?5“B\“B˜®ŒBs¨‰BR¸BBßO”Bº B —BòÒŠB Ú‰B¦ÛŠB¤ðƒBþ‚BìÑuBVrB}¿jB“˜lB¬xBî|tBd;xB…ësBé¦kB.tBÕøsBÙ{BÖwB‹ìnBÙ_B!°^BZdSBP MB1NBÑ¢AB¬œHB3³DB®GNB WOB}¿BBòÒ9B1ˆ:BCB®ÇCBé¦RBfæYBð'`BÙNmBqB94Bò’‚B¤pŠB`åBœ„”Bö(•BÇKœB94žBãe™BL7•BëB…kˆB5ž‚B‘mwBbtBòÒhB˜ngB²aBD aB•jBÓMoB\xB‘-€Bº‰B¾…B+G€BY~B%†~B^z†BBVΈBšB‹¬‘B¦’B‹¬‘BÖB¨FŽBJÌ’BT#‘Bj<‰B‚ŒB%ƆB•…Bw>€BòÒxB'±lBq½iBøSuB7‰nBö¨sBã¥kB+kBffcB`B?5UB“RBYMBòÒWBUBÝ$^BçûfBX9oBú~~Bu€BÙÎ…BH!B®ÇyB‡–‚Bj¼}BBàuBÖgBƒÀ^BL·OBIBTãFBݤGBázQBF¶OBð']B1ˆ`Bç{cBƒgB¾_B¬œeBªñ_B^:eBHadBòÒZB¸žQB‰AEBð§DBD OBoIBu“NB´HTB+‡YBD‹gB‹ljB¶swB)Ü{B€sBßOxB33pB“yB3³B.‚BBD‡B°²…BÓ ‡B´H…BÍ ƒBü)|BžïqByégBÕxYBjPBÙCBTcMBHáHB šVB“˜`B`enB%|B7ÉBõˆBWˆB¤ð†B3óŠBº‰‘BøB“BA•BF6‘BX9—B%†–B=JBVΟBZdŸ@ºIØ@é&‘@þÔœ@ü©@9´È¾òÒ}Àôý\ÀshQ¿HábÀ`å0ÀÏ÷“ÀFÀ®‹Àd;‹À#ÛéÀmçÁÂ'Á?5 Á² ÁÙÚÀTã‰À®GÀ‰AÐ?J "@‰AÈ@7‰­@ßOM@î|³@'1(@Ï÷3?+/ÀÛùÂÀÙÎÁ‡3Ámç7ÁœÄ$ÁffâÀùÀÁÊ‘ÀJ jÀçû ÀÅ °½ìQˆ¿áz”?ßO=u“?Háš?ÇKÀË¡‘ÀÍÌÔÀÀé&À‘í”ÀB`ÀB`±ÀìQ˜À•£¿œÄ@¿•3@ð§n@shQ?1Œ?ƒ€>œÄ€?øS@¬œ?—F@q=º@R¸¦@D‹´@¶ó±@Ý$ž@\2@o>1Ü¿±ÀZdûÀV"ÁZdóÀ`åÁ¢EºÀÍ̬ÀòÒÍ¿ «?‘í€@“ô@B`é@yéÖ@{ö@'14A-4AçûA?5BAX!AoWA ?A5^lA–CqA^º“Aj¼A‡yAÕxwANbLAbpA%uA×£FAh‘YATãiAwA®„AÙÎ_AÅ tAÉvLA)\GAVAð§nA¬‚AVZA\^A–C-A®GAìQA33³@çûA@F¶ó=J ¾ ÀVí¿`åÀ?Ãõ@¬š@\–@?5.@“ˆ@mç{?!°"@‹l'¿æ¿= ¯À㥣ÀÙÁ-²Á¢EÁ5^2Áö( Áš™ÁÙÎÃÀ7‰•À ×ÓÀö(&Á= ?Áã¥Á33Áé&ÁÀÑ"«À…ë‰ÀT㵿¨Æ+¿Z4@5^²@oAVA}?QAÓMVAòÒ‡AˆA aA®GEA²AÏ÷Ë@ºID@ ï>w¾?1Ü¿Ñ"Û¾^º™¿F¶³>+×?Z|@u“¸@ö(Ì@yé¦@ÛùÒ@+O@Ë¡Õ?²Ï?5^¦@{Î@9´ @= Û@\(AòÒAã¥AœÄA5^A×£6A= ;A00øS_BPPB®MB1>B)\AB9BÍLCBR¸LB¼tTB+bBúþlBü)zB ZƒB…ë‰B^ºŽByi“BH!BÇ ‹Bðg…Bɶ€ByisB1ˆrBVgBÑ¢fB¤pcB5^aBݤ`B…klBJŒxB¯B–C‚B´„Bª†B#[‡BãåB¸Þ‘B^z˜B ‚›B#›¢B¾ß£BòR£Bã%œBüišBB ”B¦ŽB¬‰BÝ$‚B)ÜvB®rB¸gB.kB„qBƒ@Bº ƒBB ŠBVN‹Bk‘Bø“’B-–B-r™B­šB˜–Béf•Bf&ŽB/‹B‰„B¸ž€B®‡Bô½‰B¬BÁÊŽB–ƒ’B•B'1‘B‹,Bs(‹BÖ‹BôýˆBî<„BF6~BÛyqB-rBð§zB…ëtBö(zB°ruBìQwB!°‚BþÔƒBX9yB-2|By©ƒBR8B¬uB^:jB‡]BHaNBÑ"FB“7BÍÌ=B ‚KBìQRBo’aBð§eB?5oBü©lB{”eBžoYBü©LBfæ>BF¶4Bîü&B®BBã%Bç{BòÒ!B#Û,B'±6BÕø>B‡?B“˜HB)ÜDB= LB‹ìNBZäTB?µHBB>BZ4BHá/Búþ1B®G*BßO*BÙN"BßOBáz Bã%B˜næAZæAw¾ïAq½B W BL7Byé#BÛù1BVŽBô}0Bîü(BBßOBsh BòÒBÉvûA1 BÅ BœÄBÇKB7‰"BHa'B¼tBBÕx Bƒ@BþÔ B¢EB ×BƒÀB‘m&BÛy#Bݤ-B¬:BÓÍBB¸JBNâHB%†;Bsh>BÛù6BÇË9BÂ7B.(BÚ$B“/BF6(B\B= %B®,B‹l9BshEBÙTBÛyYBJŒhBÕ¸ B‰A BòR™Bj|—B33B¨FB׎B×cŠBUB¦›Bf&•Bdû•B¸ž’BZ$•BXùB33’Bj˜B7É“B‡Ö”B'±ŽBBö¨‰B‡BDˉBã%ƒB˜„BÏ÷yB˜ntB¦›pBœDrB¼t}B7‰uBsh{BshrBÅ lBh‘wBJŒpBvB“˜pB-2oB`åaB‹l\B¬SBu“LB%†PBÏwDBòÒIBÛùBBuLB“˜OB¯BBƒÀ5B`å8Bmç?BÙBB7‰RB˜n[BX9cBpB…kvBL·‚BÉv…B94BìBN"—B-²–B?µBÅ`¡B¦[žBª™BE’Bº ‹B…Bü)}B‰AyBX¹lBÏ÷jB‘í^Bé&]B.eBbiB¶swBJŒBB €B¬Ü…B“XBmgƒB ‚BhшBffŒB#ÛŒB¸^‘Bk•Bdû–BVŽ“B š“BœD’B—˜BÍ —B°²’Bš™•B/B-2ŽB°r‰B/Ý…B°ò}B+‡yB1BázyBð'~BÅ uBhtB%†hBw¾cB…ëXBX9[B¶óRBw>]BƒÀ]B/ÝiB,kBË¡uB/BÁ €B¼ôƒB¬BêuB7 zBºÉoB{”lBÙN_B–CYB°rLB`å?B¨FEBÓÍ?BÓMJBBBBþTIBݤFB®GKB¾OB1ˆDBF6LBJŒEB¨ÆOBjR¸À¾ŸbÀú~ê¿`åP=ìQ8À\ò¿…Ë¿^ºI¿d;@‹l@¬ª@q=Ž@XÉ?L7Ù?‡‰?ú~ª?Ý$Ö?‡É?h‘ @¾Ÿ®@#Û¥@ƒÀÎ@Zd¿@Zdó@/ݸ@L79@ k?áz<ÀF¶—ÀÉvúÀd;¿À?5öÀœÄ¼ÀƒŒÀ5^:¿¢Eö?®Ÿ@5^ AF¶!AjAZA¬BAÅ 0AR¸ AÙÎ;Aw¾AÂ?Aî|1A¬ÉvÀ¸E¿•+@}?…@7‰í@`åAVA-²-A×£AZd÷@“Ø@ffN@+‡–¾D‹œ¿ÁÊ•ÀÑ"—À‘í¬Àq=ÂÀ^º¥À/ݰÀZô¿¾®G±¿•À‡­À`åÀL7aÀZd[¿= ×=bX¾Ý$@òÒ½?¨Æ{@¶óÕ@š™A¢E‘BXBò’”B7É”Bì–Bo’‘BCŽBázˆB……BÉö|BßÏqBš™|Bd»B\O†B …B ZŒBP‹BbÐB+ljBõˆBd{‰Bfæ…B¼4BNâuB‡–jB…jB{sB9´qB9´rBNâoBF¶mBd»{BÉv|BÕxmBªqqB ×yBBàoBåPfBú~ZB)\OB°rEBJŒ9Bð'+BTc5BÝ$CB€IBã¥XBôý\BÕxfBƒbB\B{”OBƒ@CBö(5Bw>.BØ!B‡B/]BR¸B)ÜB‹l"B¨F(B%†/B;BTã;BNbEBË!@B¸EBHáDBPKBÑ¢AB¶ó4B^º,BÅ +BìÑ/BHa-BR¸2Byé)BÕøBžïB;ß B ýA¶óñAX9óAé¦BJŒBP B¢ÅBç{-B¤ð5B^:BBd»JB9´YBq½]BÑ"TB°òDB1?BTc/B€(BÙÎB•B1ˆ B\Bš™ñAd»B WBÃõBÉvB‘íBZäBôýB¢ÅBB#ÛB}?B94 BD BòRBƒÀ B ×$Bw¾0B'1>B¢ÅEBü)NB¾LB;_=B¬;Bžï0BÉv6B/B°r!B+BX¹'BºI Bé¦B¢EBZBNâ,B¬7BhFB+JB{YBj|¡B9´žBÇ‹›B¾Ÿ™BÅ•BÉv™B˜nšB3s–B/˜BL÷˜B—žBª±žBÝdœBJÌžB²Ý—B‹,šB/¡Bª1žB)ÜžB)Ü™BDK˜B9´’BuSBÛyBu‰B…B|B=ŠzBHáuB¾ŸzB#›„Bƒ€ƒBì‡B‹l‡BòR…B ŒBTcŠBËáŒB}¿ŒB¼´‡B5€B…ë{B-2oB?µdBq=dB®GWBfæ[B'1TBÙN]BX\BÕøPB…ëIBݤRB®ÇXB?µ\BÕøkBáúsBF¶zB!0„Bªq†Bq}ŒBƒ€BP —BDË•BòRœBÛù™B7‰ŸB= £B/]B‘mšBl“B)Ü‘Bò‹B B†BÏw…BshB®‚BF6}B‘ízBNâzBƒBÛy†BšÙ‹BTc‰BËB¦›…BVƒBoRƒB˜nŠBVN‹B˜îˆBš™B¢E“B¤°“BßÏBËáBVÎŒBu“Bé&B–ƒ†BẊB=Š„BJ †BìÑ‚B¾}Bã%oBé¦nBúþvBî|lBJŒoBÝ$cB¤ðaB¨ÆWBÙÎTB®FBZdAB˜n?B¦›IBR8NBÑ¢XBÖdBR¸pB¨Æ~BA‚Büi‰B¼ô‡BNâ‚B94…B`e~BuuBHágBºIZBòÒKB¨F@B.;BÓÍ6B˜nCBV>BR8EBXGB^:QBåPZBžïYBøSeB‡–eB`ejBË!oB`ågBVdBD YBÓÍ]B=Š_B SB¤ðRB/]QB/]QB¨Æ_B1_BþÔjBØmB«fBd»lB®iBÃõnB…ëuBÁJwBj¼yBÓMBb~Bç;BÙÎ}B¨F|B+‡tBÖiBNbaBsèSB/MB‰AIB33TBX¹NB\[B¼ô^Bu“nB²xB×BÖˆBœD‡B¢Å„BÏ·ˆB²]B“XŒBkŠBéf‘Bq½BÝ$–B%Æ”BDË›Bð§œBÑ"KA•YAî|!A/A+Ó@ÍÌ@5^ê?/ÝÄ?ö(t@¬@-²U@jÌ?ázl@Ûù@¬Ü?X94=°r¨¾ÉvVÀçûÀ®?À`å°¿ƒ ?ÓMR@q=â@1ô@ôý,Aq=A?5ú@®A°rô@ázÔ@òÒ=@ƒÀ=¬tÀøSŸÀÂ¥ÀB`¥ÀPÇ¿¤pí¿j¿B`mÀVο-²­¿ìQø>‰A€@ÙÎ@+ÿ@TãAÉvA= A‰AØ@bAÁÊAƒÀAÑ"+AÓMRAøSUAEA–CYA%AAš™A`åÀ@9´X@¢E¶½…ëAÀ•¿À;ßoÀ㥋ÀÉv¾¿ ×#== g@Ý$ê@u“A•KA%cAòÒSAb`A!°ŒAA!°~Að§—A+‡A ™A®‰A¾Ÿ™A+˜AßO´Aªñ´Aw¾ªA…ë®A“–Ash¥A+‡šA‡AøS‰A¶ó†A33A5^”A%„A×£|Aôý@AÛùLAPƒAôýpATãŠA²eA˜nnAåÐLA+CAü©AAR¸A˜nú@²‹@ZD@‡™?•ã?š™@×£`@V©@´È¢@žïƒ@VÎ@çûÁ@ã¥Ç@þÔˆ@sh¡?Ï÷ÀÕxaÀ“ÈÀßOõÀD‹ÌÀ¬Á×£´ÀßOíÀÛù–ÀÇKwÀ…ëÅÀTã ÁÂÁòÒùÀw¾÷À¬„À}?5À}? ÀZd?ÙÎ?ð§–@²ß@×£(A‰A@AÍÌxA–C{A+‡œAþÔ¡AF¶ŠA²{AºI@AþÔ Ad;·@þÔ(@'18@Év?ú~ú?žï§½¾Ÿš?Õx@+§@ìQð@Å A®ó@® Aw¾Ç@¾ŸÂ@b@š™AƒÀ&A)\A¾Ÿ$A+[A!°dA®GoA‹laAX9rAÅ †A˜n„A00ÁÊQBšCBã%BBL·4B#[:BÝ$5B š=BJBHáMBj<\BË¡cBÙNmBÏ÷zB¯„BD ‹B˜®‘BoB-ò‰B“ƒBçû~B¬qBw¾oB.cBºIaB'1]BžoYB+‡\B“˜iB ‚rBÑ¢BP B•ƒBÏw†BˆBdûB\Ï’BXù™B°r›B¶ó¢B-2¥BÍŒ¦BuSŸBVB;Ÿ—BbB%ŒBžo…B= Bé&zB‰ApB“˜wBw>€Bo„B¦›‰B–BL÷BD –BòÒ”B¤ð—B˜Bn–Byé’BݤBNbˆB¬œƒBÅ xB«pBÓMyBð'{B“˜„B= …BÕøŠBüi‹BÛ¹BVŒBË¡ŒBœ„BB‹Bðg‡BœÄBvB pBÏwyB}?tB94tB¾rB ‚oB#Û}B¼t|BçûmBD sB;ßzBšpBžïgBo’\B'±NBX¹BBj8BÁJ*B°r/B¬œ>B/FB1ˆUB‡–^B?µfB#[`BÇK\BÓÍNB‡CB…ë4B/Bê#BòÒBh‘BìQBð§B^:B33!BÓÍ.B¾8BÕxB?µKB˜îMBPVBÅ MB;ß=B^º>B¼ô4BX¹6BÓÍ2B×£%B7 BX9+BÉö$B×£B´ÈBZä B…k-Bw¾7B!0GBÕøIB°òWBçû®BÏw­B'1§BÓM¥BºIžB¢ÅœBœD™B‘-˜BáúžBuSŸB`¥¤Bú>¥B°²¤B+G§BºI£Bì¤B#§Bo’ B‰£BB BœBå˜BÝ$—BR¸šB¬œ”B结BhQŒBX9ŠB“ØŠBNâŒB–ƒBîŒB)BþÔŽB-rB–ƒ”BT£‘Bªq”Bªq“Bå’B°²ŒBüéŠBþ†BlBT#B1ˆuBÇK|BHaoBjsBshlBÍL`Bú~\B®hBB`nBshvB¬œBƒ€†BEŒBVÎ’Bª±—Bq}ŸB¤ðŸB¾_¥B}¢B%©B‹,¨BDK®Bj|³Bç{¯BB ­Bã%§B`%¤BVŽœBÁJ—B7É“B­ŒBÁ ŒB{Ô…B¸^ƒB°2…BJ̆Bm'‹B¦›BE‘BD—B%“B¤ð“B…+–B —œB3³B- Bõ¥BN¢§B®ªB¥B…«¤B š BÓM¦B£BËa¢Bj|£BòB —žB;Ÿ™Bs¨—B?µB ZŽB¬\‘B®‡ŒB–ÃŽB\ˆBL·†BJŒBh‘|BÏwnBB`mBü)jB²xBÓÍxB=J‚B=ʃBĈBuÓBffŒB7 ’BZ¤ŽBòÒˆBßÏŠBÚ„BuÓ‚BÃõwB¤pnB`åaBÃuUBªñUBÚJB—TB¦MBœÄUBºÉOB;_VBL7TBNâUBþÔcBš™cBTcrB¬sBƒ@rB¨ÆoBshbB%†^B_B7 WB7‰UB²^BX¹[B7 iB-2lBÍLwB㥀Bé¦}B‡V„B‹l…Bîü‰B`eB^º’Bç;“B —•BVBþBòRŠB¬Ü†B®GBZdyBÓÍoB+‡dB\]B„YBé¦gB¬jBºIuBJŒxB¢…‚B–ÇB–ƒ‹BƒÀ‘BÛùBjüBô}•B/™BÅ`šBNâ›Bœ„¢BD ŸBìQ¤B+Ç¢Bª±©Bq=¬BþÔAR¸A¨Æç@ü©±@\®@Zd@ªñ¿´ÈÆ?@J ’?Å 8@;ßO¾ÓM²?b8?ºIl? ¿œÄ`Àî|›À?5‚ÀƒÀ2ÀD‹Œ¿¾Ÿ @^º‰@ƒô@B`Aã¥SA“XA—BL·GBìÑQBF6[BffhB#[vBF6Búþ‡BÕ8ŒBšÙ‡B/]ƒB“˜zB}¿qB•fB hBã¥[Bj]BTãXBžïTBö(TB%bB¦›mB‰ÁxB}¿}B€~B%†B{ÔB+LJBÝdB‰”BP —BãeB3³žBú¾ŸB;Ÿ˜B¾_˜Bm§’BõŒBw~†B €BZdtB˜îlB¼t`B\aB{nB'1}B —€BÁJˆB ‡B¶óBs¨ŽBW’B)\”Bfæ•BÓMBZ$B˜î…BL7ƒBÍÌxBXuB¾‚BN"‚B3s‡B%†…Bò’‹B'±‹BVBnˆB/‡Bø‡B…k„B5Þ~B9´rB\fBcBþÔoB lBHáoBã¥lBþTkB=ŠzB= {BÁÊnB¢EsBB`B+vB¼tlBu_B`eSByiEBR¸>Bb0Byi6BÇKEB IB¶sWB®Ç[B{”dBÂ`BþTWBƒMBªñBB/Ý4B¾Ÿ'BË!BÓMBw> BVBÓÍBžïBË!B°r#BÁJ/B…3B®Ç=Bq==BÂCBºIEB-IByé?B6B-*B)\&B&Bô} B¶s$B¨ÆB×£B¶óB¶óõAÓMÛAL7ÓAd;ÓA…ëìA?5úA¾Ÿ BÉvB'1$BþÔ-Bªq:B-CB¾QBÙNBÓMIBòÒ9BÏ÷2B¬œ#B®ÇB¸žBd» B¬œBTãïAVçA•BbüA‡– BÙN B¾ŸBòÒB}¿B˜nBZB–CB¾ŸÿAî|BbB ‚B WB•Bš$BÑ¢/BX97B«BB;ßAB²5BÓÍ5B«-BºI0B–C1Bu“"BÏwB/Ý)B´È"B‡–BÓMBÃu#BåÐ1B W;BfæIBF6MBú~[Bƒ@µBD˳B¯B%ƬB —¥Bü)¥BÕ£BÅžBî<¤Bw¾£Bfæ¨BîªBÓM¨B´H«BA§Bž¯©BV®B²]¨B'ñ«BÍÌ¥BD‹¤B\OŸBs(B}¿žB°²—B-ò”B¶sB-2Bo‹B‡B{Ô’B94‘BX–BuS–B”BǢBþ–BA›BoÒ—BìÑ“BöèŒBðgŠBƒB¼t}B¯}BX9tBÉö{B®GsB#Û}Bþ€B\uBêlB-2mBF6zBü©yB¦[„B‹l‡B™ŠB@‘BÇ ”B®G›BðçB쑤Bƒ¤Bãe«BÓÍ«B?5³B˜î´BV±BÑâ«Bš¤Bݤ B“X™B¬œ“BẓB®B–CBÑ¢ŒBd{BÁŒBy)BbP“BÃ5—B'q–BÏ÷™BNb”BþT”B˜n”B²Ý›B-ržB{”žB^º¢BJL¨Bsè§BåЦBãå£Bö(¢Bf&§B^ú¥B˜n¡B´ˆ Bj¼›B馛B)—BºÉ’B1H‹ByéˆB˜®ŽBô½‰BåЋBmgˆBº‰‰BL·…B\‚BÕøzBøÓwBßÏpB5^{BÉvwBH¡€BbP„BÓM‰B¸žBNâBj|—B”BÄB¾_‘Bô}ŒBÁˆB.B¯zBJŒkB²aB¸žbBð§^BÍLkB…fBÇËnBú~pB–ÃuBq=zBj¼qBF6{BYyBÛyB¶s€B¤ðBb}B–CnBœÄoBL7oBÅ fByihB×£lBÃupB‹ì~Bqý€BÑb‡B¦ÛŠBƒˆBº ‹BøÓ‹B;ßBbP’Búþ•BA˜B)Ü›B¼´˜BÓ—Bb•B}’B㥋Bݤ†B˜.€BtBXkBJŒcB;_nBPkBB`yBÝ$€BB`‡BJLB“XBƒ€—Bn—B¶3–BÃõšB® B­ŸB…ë¡B˜®¨BoR¥B˜«Bê¨B`¥¯B}¿¯B‡gA•wAq=JAþÔRAh‘AAX9A^ºÙ@ƒAÍÌAçûå@¸AÃõÐ@“ü@œÄ¼@ü©±@1$@ +?㥽33Ó?@¬”@mçï@33A\PAÂ]Aî|‰AÝ$~AZdiAÏ÷‡Aö(jAÕxCA5^Aåж@–Cû?–C‹¼q= ¿bX>Z$@®7@¶óÁ@Ë¡å@R¸æ@´ÈA-ö@´È AÑ"AøS+AåÐ"A¦›Að§Ö@Ë¡}@žï—@+‡²@sha@;ß‹@øS—@D‹ @Ûù A{A¨ÆKA7‰[AJ 4AªñANbxAòÒ…AogAçû…AÓMŸAjœAyé™A-–AX•A¤p AP•A00ƒcB°rVB+PBB`ABœÄ>BÅ 4B#[yéæ¿j¼¤ÀD‹Á\ÁZd Ásh¹ÀÑ" ÁTãéÀ7‰Á'1ÈÀ®«ÀX9¸À`åÀq=À¼t“<ÁÊ¡? O¿-¿¦›”À ׋À¬ À/ÝøÀVÖÀœÄÀÀ+‡ÊÀÙÎÀî|ß¿ü©‘?Å 8@X @ªñj@Ë¡e@ÇK¯@B`õ@mçAÂ/A}?=AÕxAÏ÷#AœÄì@w¾Ó@•{@Nbð?ú~ ¿\jÀÄÀòÒõÀ¢EŠÀÉvŽÀ‡¿sh¾ð§F@ÍÌÐ@j¼Aáz:Aj¼0AZd/AƒÀLA¼t€A‡A´ÈzAX™A A{¤AÛù¢A9´¾A¸ÇAªñÛAßOÌAÙµA©AœÄA ×’A˜n‘AÉv€A-›A…ŸAî|³A`å³Aî|§AòÒ°AþÔšA¨ÆAÏ÷±Aö(¥A–C´A¤pžA‡›A ׆A7‰yA¾ŸA²GA¸+Aoã@;ßß@ìQ´@š™å@B`'Aã¥A^º/Aš™)A•A–CEA?5:A%YA‡IAÉv,AÂí@¤p¥@ZdË?ázt¿Vξ/ÝDÀ¨Æk¿/=À®¿¼t“¼…À33§À/ݬÀFÀV Àw¾¿?mçs@…Ÿ@u“A{AZAF¶kATã“A= •AHá²A®AœÄÉA´ÈÕAË¡ÃA•¹A¨ÆœAÙ‰A–CYAR¸ AôýA¶óÝ@Pï@œÄ”@7‰@ü©½@“ð@Ý$$AVGA•GAVdA}?3A“0AD‹&A¤pcANb~A×£zA¼tŽAw¾¤AV£Aw¾ Ao•Aw¾ŠA—›A/ÝA00ìÑdB!°VBã¥MBF6>BX99B-.B+2B–Ã9B-²FBç{QBÇK`B\hBBvB)\€B`eƒBL÷…BÁ „B¯yBBsBü©eBD ]BÙÎ]Bo’UBÑ¢]BøSWBö¨YBØTB_BÇKmBshrBNbtBZdpBNbqBã%iB¼ôsBÙyB=J‚B9tˆBy©BøÓ’B…«‘B5žŒBP ŒBœD…B?5‚B«vBB`kBmç]BVVBú~IBPHBÓÍNB²]B¶scBÃuqB9´tBî|€BJL…Bw~‰BÝdB9ô“BË¡ŽB#ÛBT#‡B¢Å‡BºI‚BÃõƒBòÒ‹BÁ ŒB¼´B–ƒ‹BF6B/]‹B‰Bd»‚B„{B-wBsèjBfæ\BHaYBw¾MB5^PBé&^Bq½aB²lBmBVrB#[€B €B¼ôuBYBJ „BÁJ|Bð'{BfflBBeB¬VB+UB¾ŸGB‹ìWB _BÙÎeB¦rB\nB¬xB%nBç{`B/ÝWBshKB«EBü):B‡–,B­$BßOB%†B¸ž"BÁÊ)B-4Bü©7Bð'CB`eBsh B˜nBX9 B{øAJ ãAXÊAJ ÂAbÆA1ÝA}?âAÇKøA- BÖBÓÍB'±-BþT4BîüABfæ;BºI2B-'Bð' BÏ÷BX9Bj¼B…kB¼tøAƒîAVëAjB•BÝ$B%†B'±%Bo,B\BÉvBNbBË¡B«BVBßÏB´ÈB'±B‹lBoB®"B-2-Bu“;Bã¥;BÑ¢1B€4Bö(/B7 1BÉö.BÂB‰ABžo,B7‰)B…k$Bb.Bq=5B?µAB;ßKBÖVBff`BÏ÷mB7IªBú~ªB‰Á¤BL7¤BªñBþÔŸBlŸB1ȘB›B'±œBÁžBÛùŸBݤœBÙNœBd;–BEšBË!¢B9ôŸBT#¡BXyBX¹B!ð–Bj”B‹ì“BLwB%FŠBj<ƒBoBݤ|BÇËB¾_†B1H…Bq=‰B¾ˆBô}„BêŠBøÓ‡Bº‰†B¾ßBL7~ByénB¼toB!°`BÉöZBBà\B‰AWBNb`Bh‘\BåPgB?5hB?µ_BßÏSB…ëUB¦›YBçûXBj†BBàƒBZdxB`epBw¾aB–ÃZBÓÍ^BL·YBP eB®G`B`ålB1ˆhB°roBšxBøSqB¶ówBúþsBßÏrB7‰pB¼tgBË!_BuTBfæYB94cBê\B¨Æ[BçûdB…ëgB ‚vBHáxB\ƒB?5†B…k‚B¬Ü‚Bo…B¶³ˆBªq‹B–BL·B¼4”BƒBá:‘BŽBÍŒŒB¢…‡B-²BbvB¢ÅiB^º\BåPQB¸ž\BºI[B€gB˜nrB®ÇBBà†BRxŠBÁŠ‘B¾ßB°2B‘­“Bw>›BìÑœBX9˜Bž¯žB33œB¼t¡BØBÕx£BLw¢Bsh Aj¼A!° Aš™A!°þ@—²@= ÷?Év@Há†@®GÁ?ƒð?B`•¿q=ê¿!°–ÀìQ¼À² Á‹lÁ¬"Á ÏÀÙÖÀmçkÀþÔø¿oƒ?X9Œ@shÁ@Ý$Aáz A-Ê@´ÈÖ@ªñZ@V¾?Zd ÀÕx©À¸Áƒ,ÁœÄ:Á“^Á˜n:ÁôýNÁé&+Áé&'Á!°òÀh‘ÍÀL7ÁÀ1$À »¿9´H>u“Ø?J ¾øS À §ÀjTÀZ俘n¢À¤pÅÀð§¾ÀÕxÙÀ-²uÀB`…ÀmçË¿ƒÀª¿&ÀyéÆ¿Ï÷À‘í¿ffÖ?mç@shÑ?-ž@)\G@q=’@5^"@é&1@¬Z?¼tS¿¢E&À…ëÅÀ…ëÀ‹lÁåЮÀ¼tÓÀÍÌtÀÙ6ÀìQ8?/-@`å @Ý$A‘íø@¬¾@w¾Ayé2AÙ A‰AAƒÀ\AázRAL7…AœÄ‡AP›A`å¢A‹lÈA ¯Ayé¢Aî|Aã¥uAD‹zA1‰AZxA®GŒA¦›šAÇK°AåиA•¨AÕx¾A—²AD‹ËAX9ÝAÇKÄAX9ÂAÅ §A¸AD‹…AÇKcA;ßcAºI&A¬A“¤@Ãõ°@Ï÷S@Ë¡¹@žïA?5 AÑ"MA?5NA OA7‰}ATãgA'1`A…ëMAåÐ.Ashí@×£°@9´ @-²Ý>¼tÓ>mçÀé&ñ¾ÉvÀ–C+?Há:?u“È¿˜n‚ÀZdKÀw¾¾•ƒ>Tã]@X±@òÒ±@XAÃõ AYAã¥aAƒÀA‘í“A‹l°Ad;¨AázÀAZËA¬±AV§A'1‰AƒÀzA¶ó?A^ºA+AøSë@33A/Ash A… ANbAòÒ;ATãUAôý8AÙJAôýAƒAjA!°sBÛùgBmBfæeBZäjBÁÊiB%mBìQjBƒ@wBj|‚B…«…BÍŒ„B‘mƒB/]ƒB­€B%††Bðg…BÉvŒBéfBô}–B?µšB¤p BZžBÕø BÇ‹BìÑ™Báú—BØBhQBî†BìÑBÃu}B+G…BXùŒB=JŒBº‰’B‹,BÚ”BÛù–Bm§—B…ëšBÍ ›B–C•B'ñ’B'±‹B®‡BØ€BÉö{B}?„Bª†Bø“ŒBÃ5ŽBš“BÓÍ’B”BÏwŽB¤pŒB{T‹Bž¯†Bd;€BmgyBî|iB¬jBZsB9´uBq½zBo’~BT#‚Büé‰B š‡BšYƒBÕ¸ˆBy)ŒB‘í…Bf&ƒByBL7uB²fBbB€TB^:gBºÉpBsBÅà€B•~Bƒ@…B+ƒBô}yB{”nBÅ gBÃõ]B´HSBƒCB²7BþT,B¶ó#BþT,Bü©6Byé@B­HB¼ôTBü)SB¨F]BX9XB9´YBYBã%WBºIJB–C>B‡4B3³4B–Ã5BßÏ4B#Û9Bƒ@/B^:&BáúB-B¶sBÓMõAî|æAìQøA¤pùA9´B­BD B33$B®G0BþÔ:BªqEB¬œ@B{3B¤p&B3³&B‰ABázBq=B…B{ B…kB¯BÙÎBh‘BÏw)BF¶1Bžï>Bu“EBÃõ8BNb5BÛy(B=Š&BØB‡BßÏBË¡$B¬œ#Bê%B°r+Bsè5B‰ÁAB'±NB ‚QB}¿KBìQIBVEBázDBßOAB-3BØ2Búþ?BY8Bš1B+=B'±ABBOB°rTBÅ bB ‚iB‡–wBÉöªBVΨBøS¢B® BªšB´ˆžB°òŸBoÒ™B¦[›B,šB°òžB¼4¢Bd;ŸB£B9´œBü© B1È¥B,¡BB¢Bî|›BH!›Bmç•BºI’B{”“BòŒB–‰BF¶B33‚BF6€B1È‚B‰BP†BÇËŠB+G‰B}?ˆB%FBðgBH!“B W”B Z‘B¤ð‹Büé…B®B.rBú~pBøÓaBJ fBR¸XB bBTã^BjUBÍLOB¨FPB/]^BÙÎgB˜nuBj<Bº‰ƒBÚŠB…ëŒB°2”B!0•B›Bs(BÅ`£BÓÍ¡BËá¨Bî<¬BHá§B+‡¦BŸB¨šB1H’BÚ‹BÀ‰BffƒB94…BFv€Bƒ@|B-{BZ~Bs(…B®ÇŠBZ¤ŠBP Bî|ŠBòR‰B@ŠBÕBD‹‘BL·‘Bþ˜BNâšBõšB¶³—B3³–B¢•Bžo˜BÁÊ”BÓB‰Á”BË!B5ŽBd{ŠB‘-†B¨Æ}BþT|BN"‚BNbwBJ Bq½tB1vBmgnBoiBªq\B WXB¬TBj<^B‹l^B‰ÁfBpBu“zB —„B¾ß†BþTŽBÁÊ‹BÍ̇BÝ$ŒBq=‡B¦ÛBÛùtB^ºhB¯YBR8PBåPLB}¿HBHaVBUBh‘_BøSeB{”jB„sBÓÍmB‡xBq½xB`åBÉö€B\zBú~wBÇKlBbpBwB…kBÉöfBÚiBÙfBé¦sBX9qBffBT£BXxBmg|BL·{B#[B™„BFö…Bq=†B¨Æ‹B«‡BXŠB×ãˆB^zˆBV΂BݤzB‡vBîügB=Š`BÏ÷VB¦›_BøÓYB‘mfBR8mB}?{BPÍ‚Báú‡Bº B˜îŽB;ŸŒB)B㥖Bí”BÙ’BP šB¼´˜BïžB®GœB!0¡BLw£B!°ˆA)\ŠAìQxA¼tsAyéTA33=Að§A7‰í@ªñAƒÀ¦@¢EÂ@ÍÌT@7‰Y@Ûù?Zd»¾ªñBÀXÀ ³À—À˜nÀ-²?8@Ûù¾@‹lA9´A= UAF¶=AmçAìQ8AÕxA¢EÖ@…K@oƒ¼!°ZÀôý´ÀVÞÀ¤pÁ…ë­À¬ðÀ”Àq=ŽÀã¥Àçû)¾¶ó½>‡q@}?M@%‰@Õx@^º‘@mçc@Å °>yéæ¾-2¿1ü¿®Gñ¿¢E†¿B`Å¿ÇK·?d;Ÿ?Há–@+‡²@ÁÊQ@D‹˜@Í̘@ö(´@¤pí@AåÐ AX5A+‡AÁÊ!AÙÎAÇK AÍÌØ@NbŒ@j$@ö(œ¿Ý$NÀ1œÀףпZd»¿?5~?…‹?Å œ@žïç@yéAçûUAÁÊIAìQ2Au“dAé&ˆATã{AžïkA/Ý’Aü©‰A7‰§A'1¬Aã¥ÅAXËA'1âAD‹ÒAHá¿A ·AZd›A צAªAZd™A{¨AÙ±AË¡ÃAÓMÌAÝ$ÅA= ÒAòÒ½Aáz¾AßOÖAÁA/ÇAžï®A²ªAo“AXˆANbŽA²aA+OA7‰AßOATã Ad;A-²KAÙ>Aªñ`AÛùXA1HATãwAffˆAJ ’AÁÊ”AË¡‰Aé&cA;ß5AÝ$Aü©©@ƒÀ²@¾Ÿ@î|'@´È¶>²'@1¬<-"À²wÀNb(À²@ð§¾@9´AÝ$0A!°hAÑ"yAÛù˜A)\ A¬¶AµA1ËAÛùÂA+ÝA¦›íAã¥ÙAÁÊÕAš™ºA1­AZdA²sAVoA!°2Aî|7Aã¥A…ëÙ@é&A= Aªñ.Aw¾_A°rRAL7}A®GQA×£TAåÐTAÙ·A¾ŸŠAZ†AÙŸAªñ®A¬´AbªAyéžA‘í“Ao¦AåÐ¥A00–ÃnBÃõbB¨FXBJ KB#ÛFBô};B¨F?BœDFB%RB)\ZBòRgB¾ŸqBìÑ{BƒBÂ…B‰Bo’„BÛy|B®ÇwB%pB²gB¤ðiB‘maB…jB#ÛbBZdeBD‹_BºIiB‰AuBÕxB°ò€B¨F|BÅ BÛùxBÏw~B¢BÏ7‡Bç{‹Bs(’B×#˜Bþ›BT£—B¬Ü˜B¬”Bw~’B'1BãeŠB?u„B´HyBq½lB¤piBžïwBö¨‚Bô=‚B馈BhчB)BÇËB3³‘Bì–BÓ˜Bú¾‘BHáBmgŠB7IˆBÇ ‚BÇ‹B®‰B®‰BFöŽB‘mŒB’BPM‘B‰‘B¢ŠBC…Bƒ„Bj<}B#ÛmBØgBVZBòÒ]B}¿lBƒmB®GyBbvBB{B…B¸†BÚ€B)œ„BƒÀŠB#Û…BD‹ƒB5^yB„uBX¹fBÅ bB,UBq½^Bã%kB‰ÁlBô}{Bã%zBm'€Bj¼wB€oBÃufB)\ZBYSBffLB°r=BX4B)Ü%Bü)B ‚,BåP4BÃuB²ABØ=B3³9Bq=8B…)B-,B…ë9B/Ý4Bê-B,9BHaBBMB¼ôVBð§cB`åmBÏw|B´H«Bœ¨BÝä¤B£Bž/œBã%ŸBZdB¬œ–B›By©›BZäžBÙŽ BôýšBÅ`œBdû•Bª±–B@œB}˜B ‚›BbЕB‘m—B¬œBPM’B)œ’B¬BÁŠŠB{TƒBªq€BÍÌyBªñxB…+‚BoÒB^:…B㥃Bé¦}BøÓ„BÝä€B“˜…BËáƒBÙN…B š}Bö(sB…ëeBÑ¢[B+]B‰ATB1ZBºÉQBœDSB-2LBé¦IB„CB¼ôIBJŒPBßOUB!0cB=ŠhBoqB«B‚B¶s‰B¤°ŠB¸’BØ•B לBYœB?õ£BÇˤB´HŸBF¶šB¸ž“B×£ŽB-‡B#[BÕø€B¾ŸuBBvByinB/nBã¥xBo’~Bë…Bsè‡BÁ ‰BŒBÚ…BÅ…Bo…Bß‹BuB°²ŽBÓÍ’BÙŽ—BÕ8›B-²˜Bq=šBDË™BŸB®‡ Bq}•Bœ„˜BVN’Bq½Bݤ‹BßÏ…B¦›Bš™€B9´…B+G‚B¢‡B1È‚B —ƒB˜î€B%†~B-sBòRqBw>iBìÑuB.pBYtBü)~BX9ƒBÍÌŠBffŠBªBü)‹B.‡B´È‹BÀ†BªƒB°rxBÇËqBØbB¬œWBÅ XB¤p[BR¸hB+dBÓÍgBÇKaB/]dB'±dB-²aBP lBXjB'1yB!0xB;ß}BHáyB= kB…kfBázhBbaB¦_B/jB}¿iB¶svB¶suB¼ôB?µ‡B×£„B{”‰Bn†BÓM‹Bw~B’B)\•Bçû˜BDË“Bw¾“BÖBWBB ‡B…+‚BªñvB9´hB­\BsèWBžïcB®G_B7 mBü©tBž/B°ò‡B˜nŠBFv‘BÏw’B=Š’B5^•B°ò›BÃB¬œBL7¢BFvB‹¬ BÉvBìÑ£B-²¢BR¸"A…?AòÒAú~6AZd%AÃõAö(œ@7‰™@¾Ÿ¶@×£(@u“@b˜¾Ñ"[¾Nb@À}?™Àš™Ásh Á × Á= ·Àb„ÀÅ  ¿!°?Vf@#ÛÝ@5^ A¾ŸDAÙÎ?AƒAázANbØ@ƒÀŽ@q=J?ìQÀƒ¤ÀÝ$öÀÅ ÁÓM2Á¼tÁ…-Á®GÁ!°òÀ^º­ÀffvÀ= ÀÏ÷Ó?bP@TãÉ@Nbð@yéò@øSA'1ˆ@ö(„@+@î|?Ï÷¿Âõ¿ìQˆÀ—Ž¿é&À ë>Zd;?ú~Š¿‡Ù=ßOÍ>¨Æ»?Ë¡u@‹lƒ@Év~@•Ó@#Û•@L7Å@˜nž@ìQ¤@Ñ"K@ôýô? /?}?MÀ¢E^À…ëÀ¼t À`å0À{®¿´È¿ÛùF@F¶§@ ×ó@V6AìQ.AôýAh‘5AVhAR¸TAåÐ6AF¶kAÙhA×£A7‰ˆA¢EA-²¨AD‹ÅAÃõºAffªA!°¥A´ÈŽAR¸AÛù¦A°rŒA7‰—Ab§A{ºA ×ÎAw¾ÄAôýÚA…ëÕAZæAÃõöA9´àAÉvÙA'1ÀA¨Æ²A}?AX9ˆA'1†AmçOA¾Ÿ(A/õ@ã¥ÿ@L7å@¢EAÛùHAHá>A#ÛuAvA'1|A˜n›Aš™¥A´È¯AƒÀ¼A¶ó¤AR¸AƒÀpA/ÝFAú~AB`Í@L7Q@{.@çû‰¿‡9¿‘í ÀÙÎ/ÀD‹ˆÀ–¿oó?×£ @/ÝÐ@ !Aé&9AÕxsA˜n|A¸”AºIAßO°AÁʸAã¥ÍAøSÁAu“ÕA`ååAžïËA-²ÂA®G£Aw¾šAR¸~A…OAZXA+‡2A%KAu“&A²1Aú~Aî|;A/SAÇKyAj¼bA‡A/ÝHAö(2AË¡7AƒtAÕxuAôýbA{ŒAL7 Amç‘A®ŠA¼tqAu“XA9´^A…SA00Nb~BTãqBÙÎdBÙNVBáúMBÃuEBVGB—KB^:ZB•aBênBYtBúþ}BÍL‚B°²ƒB3³…B?u‚B¬wB šuB¦kBêcBufB„_BË¡gB33aBjcB\ZB-2cBL7nBwBZyBX9tBq½wB/ÝmB%sBœÄ}Bú~„BD ‰BBÕ8”B¬Ü”Bº‰B¾ßB+‡ˆBî<„BÁÊzB!0vBºIkB7 `B ×PB•LBøÓWBåÐfBgBð§uB®ÇzBò„BVNˆB%FŒB‰A’BU”B^:B¸žŽB¨†‡B^ºˆB¤0ƒBöh…BázŒB¼tB¸^B%ŽB1H’B¸ŽBð'‹Bl„B/]B¬œ}BF6qB„aB1ˆ^BßÏQB{XB¢EeBœÄiBœÄtBÍLtBBxB#[ƒBu“„Bî¼€B#[…B´È‹Bj<ˆBÅ…BÙÎ|B–ÃvBÍÌhBÙNkB š]B‰AfB¾nByémBš{BJŒtBòR~B¬sBš™gBìÑbB‘íUBq½QBBGB%†7BL·*B…kBjBð'BJŒ"B/0Bªq4BYABøSBByiKB´ÈKB^:MBJ QBj0BþÔ6B}¿9B•8BD :BJŒ-B¢E2Bq=@B/]BfæEB²HB²UBÕø[B¦›cByioBÕønB5Þ|Bë‚B+ŠB®ŒB““BÃ5–B–ƒBUœBuS˜B-²’BmgB ZˆBu“‚BZxB¤pvB/jBVŽlB94eB33cB!0pB94xB ‚B…B×ã…BìŠBq½„Béf„B…ë‚BU‰B BBU‹BXyBö¨“BZd—BB —BÓM˜BøS›BòÒ B/¢BuBfæšBüé“B^ºB9´ŠBw¾…BÀ€Bqý‚B@ˆBB`„BË¡‰BìцBé&‰BDK‡BÛù‡Bš…BòR‚BøÓxB3³}B1zBT£€Bj¼‚BÓM†BÃõBÖ‹BTc‘BNbŽBoBA’B}¿ŽB;ߎB®‡Bø“ƒBÑ¢wB²sB3³mB“tBþÔ€Bé¦}Bh†B¤ð„B…k‡Bs(ŒBš‰BÉvBÅ`ŒBœÄBPMŒBí‡BüéƒB'1yBF6B×£ƒB{”B㥂BT#„Bo„B™‹B¼ôB¬œ•Bq=˜B¤°“Bfæ”BR8‘B‰“Bw~’B‰A”B?µ˜B#›œBîü›BuÓšBÇ ›BZ$šB-²–B¢ÅB/ŠBÍ ƒBsèzBmB­rB5ÞkBßOxBẀB‡BïBïB;_—BÉöšBÁJšB‰AœB˜n£Bƒ¤B@¢B'q¦B¶3¡BVN£BDKŸBÕ¸£B^úŸB•A®G=AßOA-2A+!AHáú@!°’@“”@'1Ä@ö($@j¼,@²/¿žï'¾VfÀ?5vÀyéîÀ‰AÁ— Á`åÌÀÛùšÀ`åÀ5^:?Ý$†@žïï@þÔAÏ÷QA#ÛKA–C%A…9A‘íAsh­@-² @ºI¼¿¸À33ÃÀ-úÀ‡Á= ßÀHá ÁºIÈÀÇKÀVí¿j¼t?sh?ƒÀj@mç@ffæ@d;A×£A+A‡Ý@/Å@¸µ@øS@Ñ"[?˜n¾y醿Z´??‹lG@Évþ?ƒÀʾ\’?w¾Ÿ>J â?L7@Ï÷‹@`åx@œÄä@‘í˜@q=ê@X©@ÁÊÑ@¢E¶@¬r@shA@sh1¿5^Š¿d;ÀTã%¾Å °½{ž?@?¸‰@ZdÇ@¢EATãKAÕx=A¸A%EA/ÝtA¬XA–CAA'1tAÕx]A+ŠANbAyé¤A¨Æ°AÕxÑA–C¹AZd°AÏ÷¬AÙΙA¢E¡Au“¦AJ —AÍ̬AÑ"³AþÔÅA}?ØAVÜAƒéAh‘×A+èA×£ùAPçAåÐéAL7ÎATãÄA•¦AÁÊ”AåÐA“dAœÄ:AVA`åAìQ A¦›.Aj¼jAü©yAòÒ”A¦›A•AZªAƒ±A®GÀA¬ÇAD‹ÆA+‡ªAjA˜n~AÝ$JA¤p#A^ºÑ@h‘½@d;@`å@‹l‡¿œÄ ¾Âµ>j¼<@R¸º@‘íAX90AVdA‘ítAD‹˜AÏ÷—Aôý´A ×¹A¢EÏA¬ÍAÑ"ãAshÏA¢EÚAî|ðAƒÀÚAL7ÕA¸¸AV¸AþÔšA×£ŒA“ˆAÙÎgAyétAÛùPA-DAçûGA®WAV{AHáAmçƒAÓMŒA;ßaAAA QA+†Açû{A‹lqA/Ý•AP¤AR¸“AP…AôýhAffZAÏ÷kAö(HA007 jBff]B3³PByéBB,;BÇË/Bü)1B9´3B\CBEBL7TBshZB×£bB‰AnB WoB'1uB+‡tBšfB\aB'±UBÙLBYLBbCB1LBHaEB‘íIB7 CBF¶JB‘mRB¸YBHaZBmgUB7 [B WSBøÓ\BøSbBË¡mB¨FyBJÌB%††B“X‡Bç»BÑ"Bé&qBö(qBåPeBœDeBÕxYBúþVB= JBF6CB×#ABshOBZäJBZXBV^BÛyjBshtBÙN~BÉvƒBƒˆB‡Ö„BL·‚Bd;yB×£{BNânB)ÜtB ÂBXyƒB}?„B9´‚BºI„Bsè€B¦›zB/lBw¾eBh‘`Bô}SB FB´H>B'±7Bsh:Bî|IB7 NB'±YB šXB+_Bq½lBHáqBÏ÷fB'1oBš™}BÕx|BV}B,nBúþiB‘íZBhWBázHBªñVB{”dBw¾^B¸žhBÉö`BžïcBã%VB°rKBMBÙ@B®;B;ß2B°r%B}?Bé¦ BþAƒ@BF6BÂBÛù!Bö¨.B š+BìÑ4BÚ6BòÒ8B`å;Bú~3B×#%B+ B­B¯Bo B‰ÁB¬œBmçæA)\âA/ÇAmçÐAçû·A‘í¯Au“œAj¼¬A`åšAçû¥A…®A¼tµA7‰ÆAL7ËAË¡èAPýA¨Æ÷AR¸ÙAçûÃAåÐÏA¦›¾AøSÓAÅAw¾ÈAázÒAžïÒAÙÎÞAåÐìAÓÍB9´ BÕøB…ë$Bj<1B!0,BÍÌ$BžïBVBX9B˜îBœÄõA¾ŸüAõA)\íA'1êAL7ýA´È Bš™Bü)"BåÐBÃõ Bç{#BåP"BÛy%BÅ Bî|BL·,B#[,BƒÀ&BZ1Bb;BF¶BBw>NB=ŠZBòÒeB1tBøÓ«BT#«Bfæ¨B ªBÛy¤BXy©BuÓ©Bô=¢BºÉ BLw¡BÅ¡BV£B*žB®ÇœBw~•B?u•BVΜBÕšBšžBÃušBo’œB‹,–B‹ì•BåP–B*‘B`eBFöˆB3s…B²~B?µBwþ…BÉ6‚BÛ¹†Bq½ˆB¨F„BVˆBmçƒBH!‡B×ãƒB‰Á~B¦›pB-mB?5`BÉvZBÁÊWBÅ MBþÔRB×£NBsè\BºÉcBòRcB+TB{SBPVBÃuUBúþcB.jBHanBX9yB šzBh‚B}?‡BÛùBüi’B¶3™B=ŠB-£BÓ ¤BwþB'q˜B¯‘Böh‹B˜.„BÓM}B¼tBVsB‰Á|B?5wBݤ|B‰ÁB5ž‡B@‹BÁ ŒB}?‹BBÅà‰Bð'ˆB7É…BR8ŒBìBƒ@BNb‘B¶³˜Béæ™Béf™B3³šBo’šBøÓŸB• BB`šBTc˜BÇË’BÏ7ŽBŠBB ƒB —B%†ƒBáúŠBÍŒ‰Bw>ŽBÏw‹B¢…B%ÆŒBD ŒB“؇Bª1…B%FBV„BªBÃ5„Bçû†BåP‰Bž¯BnBüé–B{”B1ˆ‘BÓ͘BbЕBy)’Bé&ŒB‰ˆBE€B­}Báz}BY‚BîüˆB‡‰BåÐB šŽB‹lB¬‘Bw¾Bº‰’Bq½ŽBüé“Bƒ€‘Bf&B‹ìŠB9tƒBk„B/‡BåƒBÓ‡BÀˆB?µ‹B¸“BZ“BÛ¹šB€žBL÷—B}ÿ˜B¯”Bmç–B¦Û–B×£–B= œB ZŸBÓM¡Bô=¡B²Ý¡BbŸB¶³šB B“BD‹ŽB'ñ‡BU‚B{”yBF6€BÕxyB/B¨Æ„BY‹Bö¨‘BP•B5žœB¢… B‘­žBPÍžBþ¦B;_§B¢Bƒ§B=J¢Bn¤B^z Bƒ€¤B˜.¤B A…ë)A\AßO)AƒÀ AåÐAåÐŽ@ k@Xq@ƒ@=²?d;ÀÏ÷ƒÀ5^ÖÀ¾ŸòÀ´È,Á;ß9ÁffHÁü©Á33ûÀHášÀçû1À\‚>\Z@ ·@î|A?5AX9Ì@ÇKç@ã¥k@w¾?ö(ì¿“À= ÷À{Áî|MÁhÁ“LÁ¶óoÁÑ"KÁF¶7ÁB`Á“øÀ Á5^ŠÀ'1hÀßO½1 @ÇK7@ÂU@)\½Ãõ(¾–C›¿Zd—À¶óÅÀã¥ÛÀ…ÁþÔ´À/ÝÄÀq=RÀÍÌ ÀX9„Àã¥#ÀôýDÀ1Ì¿ƒ¿…ëÑ?Ù@ìQˆ@= Ç?–CC@w¾?®G¡?R¸¿-²¿…ëQÀZdÇÀ?5âÀÙÁTã­Àî|ëÀÝ$vÀXQÀD‹ì>yé@Å  @¾ŸAã¥ç@L7½@ û@;ß-A7‰A— A®GIAHáLA˜n„AƒA•—A-¢A+‡¾A?5±A ןAºIA°rxA´È‡Aé&A`åvAÑ"„Aj¼—A—¬A ×ÂAHáºA1ÎAÅ ¿ATãÆA\ÝA¦›ÍAøSÒA-¸AœÄ«A!°A¢EtAd;qA‘í4A;ßAVÉ@—Î@ÍÌÔ@î| AçûAA¦›FAþÔtAVqA®GoA–AA‡©A;ß¹Ao¬AF¶”AwA7‰EAÙAƒÀÎ@1L@/ÝÄ?Å ð¿˜nr¿mç+ÀÙÎGÀ#ÛAÀ#Û9¿Ý$@ÇK›@L7AßO1Aªñ>A?5zAð§‚A™AHá¢A²¶Aªñ²AÑ"ÊA–C»A!°ÎA¶óàAôýÈAÛùÆAh‘©A^º¢A%†AHájAL7cAÃõ6A1LA!°&AjAòÒAš™A®G9A…gAbPAé&qAÙ:Aj(ABA+}A¶ómA-²cA˜nA“œA´È‘A°rAÅ bA}?MAÛù^A…ëIA0033iB×#[BžïPBØFBÅ BÅ EB`eSBÙNSB¨F]BNbWBö(ZBÙNfB…koBšhB\lBœÄzBF¶{BÁJtBìQhBÅ ]B!0OB“˜RB¤ðFB`eIBÇËUB¬TBÁJ_B¼tXBö(]B`eTBVŽHB.GB8B¦1B'1#BÃõB WB‰ÁBË¡éAj¼úA;ßýA­ B°rBL7 B+ B!0-BìQ2BÇK6B‘mÉvî?XÉ?j¼t¿1Ü¿ƒˆÀ¾Ÿ*ÀB`µÀßO•ÀÙÎëÀòÒ'ÁÃõ4ÁÁÊÁ¨ÆóÀ¢EžÀÁÊῇÉ?é&‘@–C×@ƒÀ&A¢E&A`å A/Ý.A×£A¡@‡Ù?X9ô¿{ªÀ+×ÀR¸Á–CÁ7‰Á9´ ÁÖÀyé’ÀƒÀ ÀºIL?þÔ@Í̸@‹lï@¬Amç3A×£(Aj¼@AºIAF¶ë@â@ {@ÁÊ)@?h‘í¾?5Î?‰A >×£P@•K@u“x?Ñ"Û=Ãõ(¿ü©q½œÄ@øSÓ?33?ÇK@;߇@ffÒ@ßO¥@Å Ð@^º±@-b@R¸@®G±¿ƒÀ"À#ÛyÀR¸Ž¿ªñ2ÀÏ÷Ó¿ÙÎÇ¿‘íü?ìQ€@ƒä@•/A;ß'AìQA!°&A-`A'1HA¸1A“bA+EAÙÎkA gAºI…AÃõA°r°Aú~«A¾ŸA…ë—AD‹‚A-’Aú~œA^º‹Ad;šAyéœAƒ®Aö(ºAJ ªAåпA¶A´ÈÆATãÝA¨ÆÐA°rÎA¤p¸A…¯Aff’APA/ÝjA5^8AÑ"APÇ@ÓMÚ@¢E–@\Ê@w¾#A%1Aw¾_A¬vA‹lyA‡™Aƒ“Ah‘œAmç™A²†A1XAÅ 4Aƒø@Ûù®@X9<@Ý$¾Év>>˜n¿Õxi?ffF¿1¬½‹lÇ¿ZdË¿-@ff‚@‡Á@“AÛùAZ8Aš™Aã¥EA…sATãŒAÛù–A®©AœÄŸA ×¶Aq=ÅAL7¨AJ ›AìQ|A\A9´(A‡Aôý2A ×A7‰/A¨Æ'A*AÓMA‡)AÕxGA\bAåÐHAøSQA…ëAmçA‡AÏ÷?A\:A…ëA7‰=AÏ÷mAÝ$^A}?QA%3A!°*AòÒ+A¶óA00ZiB]B#[QB+EB×£:B-1BßÏ2B;_5B7‰CBh‘IBøÓXB–Ã_BÇKcB‡–hBiB¶ólBã¥jB%†\Bö¨aBB`SB¸MB˜îGB}¿BBL·JB;_ABj¼ABÑ"4B°ò9B/]@BÓÍDB ‚KBœÄFBfæJBCBÏ÷CBÓMOB¾ŸVB¬cB ×jB,pB+jBq=\Bö¨UBbFBøSBB 4Bú~4B7‰)B33!BÅ B-2 B!0Bo"B5Þ BÁÊ/Bã%;B9´IB¦›SB1aByikBfæwB1ˆpB/xB„oBÚwBòRoB)\sBÀ€BX¹€B}Bé¦uBVxBZäkBîüaBÝ$YBVLBF6KBo=B‡–1Byé.B“˜)BÏ÷3B#ÛBB-2DB5ÞNBÑ¢IBÑ¢OBZäYBbBÑ¢]B\hBNbsBqB\rB‡–cBh‘bBoTBÛyXBô}NB+UBã%_B‡XBÛùaBÚUBNâYBB`MB ‚AB¼tDB946B\6B^º*BÂBBÓMByéüAð' B B‹lBq½BB#B/]"BÅ ,B=Š4B­1BÂ6B W-BX¹B–CB#[Bd;BþÔB-2BåÐüA‡ßA-²ÚAú~¼AmçÆA!°©A×£ŸA/Ý•Aj§A7‰¡A;ߤAÃõºA/ÇAÍÌåAd;òA®ÇBX9 B.BßOãA‘íÏA9´ÍA“¿AåÐÎAÃAbÍAB`ÍAð§ÑAçûÞAÙÎòA„B×£ Bé&BD‹"Bö(.Bff'Bü))BÅ BÝ$B“BZdBé&òAPöAbìA¬çANbáA7‰îA7 B«BÙNBuBƒBƒ@ B š B %BœÄB«BßO*BX9,Bªq+BÛù3B²?BØAB?5MBÝ$TBÙbBfæmBX9­B ‚¯B «B=J°B!ðªB ®BN"©BoR¢Bå¢B9´BNâœB5ž˜Bɶ‘B¼ôŽBR8‡B1‚Bé&‡B°²‰B;BN¢‘B¯–Bð§“Bj|–BÅà–Bü)”BþÔ“BËaB®‡ŠB°r„Bãå€B-2„B'1‚B€‚B;ŸBêtBBàoB¨ÆbB+hB‰Á[B ‚XBÚLBô}PB‹lKBÙLB5^VBþTWB^:fB•oBƒÀwB/Ý}B.sBË!hB‡–bB…_BD YB–Ã`B¦^Bö(bB+‡dBÃõiBÇKpBØxBTã‚BBà‡B×£ŽB-2”B ÚšB‰A˜BËá“B BŒBª±ŠBN¢ƒBX¹}B¤psB­zB`åsBZäpBNâpBovBÇË€B–ƒ‡BÚ‹B¢E‹Bîü‹BãåŒBB ŠB}ÿ‰B=Š„B‰A‰BüéŽB!ðŒB Büi“B‹,˜B-òšBüižBú~¡BE¨BÙŽ­B#Û¦BâB ZœBo—Búþ’BªñŒBõŠB/]ŒBÛ9“B š“B^ú™B`åšBœDžBN¢ŸB!pŸBíB“X›B1ˆ”B/Ý”B¸ÞBk“BÇ –BbP•BH!›B3ó˜B›B¢…—B5ž˜BVŽŸB¦ BÓžBɶ˜BÅ ™Bœ„’B?5’B{Ô“B¯•B“˜œBh‘žBœD¤Bm§¤B7I¡B¶³ B@šBL·šB°²”Bb–BN"‘Bé&B‰Á†BB ‚B¦ÛƒBÉö‰B;ˆB‘-ŽBl“B‡˜BVŸBB`£BRxªB-²¯B!°ªBƒ€­Bß§BoªB1ȦBqý§B…ë­Bã%³Bø“²B—³B–C´Bm'°B%Æ©B}¢BP ›B——BÁŠBÁʉB)Ü‹Bd;†BH!ŒBJL“B˜BPMžByéžB‡Ö¤Bb©B“XªBT£ªBÃõ¯B/ݵB Ú²Byé±Bƒ€ªBªBž/¤B‹ì¥Böè B;ßo?˜n*@}?…?°r¨?ßO ?‹lÀœÄ À—~ÀX9,ÀḬ́Ào·À-ÁÝÀ¤p%ÁV!ÁÝ$LÁ¶óuÁ¾ŸtÁ°rZÁ…KÁ˜n"ÁyéÖÀJ bÀJ ¾!°@°rÀ@Ñ"»@B`‰@#ÛÍ@ÓMJ@ ×£=ö(\À çÀçû'Á¾ŸBÁòÒcÁòÒ_Áã¥IÁ…ëIÁHáÁð§îÀNb´À ÀjÀ+?+@®÷?¸U@¤p]?33ó>Zd[¿–C+?ã¥Û>ú~RÀPOÀyé®À˜n¶À‘í4Àu“xÀ7‰±¿øS ÀþÔ”ÀÓMŠÀ¬ÀÀ%ÁÀºI„À¨Æ›ÀÝ$¦À¤pÀö(ì¿‹lg¾‹l§¾ôý?®Ga½+?À+‡>ÀZÔÀìQèÀçûÁ¸ÕÀš™ùÀ!°ÊÀÁÊÕÀôý4À¶óý½-²=@mçË@×£°@ÙF@w¾«@'1AË¡¥@F¶S@¼tÇ@Ý$º@ƒÀA•A= 1A—DA+‡ƒAƒlAsh]A= EA‰A4AôýTA9´pAš™OA33cA}?uAÛù‹AÕxžAåЖA)\¬ATã¨A9´ÂAžïÏAq=ÀA%¸AŸA®G•AÑ"qA\BAÝ$,A33ã@Å h@ü©Ñ?¦›ô?5^:?˜nb@¦›ä@V Aw¾IAòÒ]AJ rAÙ”AÝ$‘A¼tAƒAçûuA^º=A®GAP·@Nbp@J ’?ú~ê¾mç{¿Ñ"CÀ‘팿= ׿X9¤¿!°Àƒà¿ázô?®GA@ff¢@Ý$ú@!°æ@®G)Aªñ"A¾ŸFA¾ŸZA {A\†Aôý’A7‰…Aôý˜A{¤AÕxŠA ׂA…ëKAP3AJ A1Ü@ÓMê@)\ß@Õx#AR¸Að§(Açû AçûAÙÎ-Amç=A¬A/ÝAd;»@Õxq@Ï÷›@{ A¼tAö(¸@ÙÎÿ@ÁÊ-AòÒAôý AƒÈ@‰A”@D‹°@Ûù†@00€jBVaB94TB^:GBÇË;BìQ5Bçû7B8B¸GB¬KBÇËZBÙ`B‡fB)\nBBmB¢ÅtBƒÀoBªqaB®G`BôýSB33MB‹lKBÝ$GBºÉPB`eEB–ÃFBÇK:B-²:BL·BBjB–CABhDB­DBbRBü©RBîü_BË!fB‘m^B•RByiOBR8VBBàLBBVB¢ESBVB˜nYBu“[BsèbB!0mBd;{BshƒB'qŠBð'ŽB}?•B¬”B¶³BL7‰BL7…B{BR8rBºIhB!0mB;_fBœÄgBô}`B;_gBÁÊrBêBç{…BX9ƒBË¡„Bd{†BÁJ„BÛùƒB¨F}BÇ ƒBžï‰B^z‡BFvˆBÇËB“Bé&”B`%˜BÃuB‰A¢BU§B‡ÖŸBH¡œBçû•Bì’BF6B;Ÿ‡B —…BJL‡B;ߎB+B¢–B‰Á•B¾ŸšBf¦œB¤ðBÑâBé&œB¸ž”B¶s”BìÑŽB)œŽBíBšŽB?µ”BÙ’Büi–BÝd’Bš‘B®‡—BB—B²Ý—B`e“B‰A”B5ÞBh‘ŽB'qB94•BÙNœB\ŸBÙ΢B…k£B)Ü BßÏ¡B+‡šB9t™BBà’Bd;‘B׌B¸Þ‡BZä€Bî|yB/€Bs¨†BÁʆB‡ÖBÍ ‘Bçû—BVžBÕ¸£Bm'ªBÕx®B#[¨BÏw©B%ƤB‡¥Bɶ¡B㥢BZ§B{T¬BP ®BL7®Bfæ¬B1ªBC¥B+GžB9t™BVŽ•B´ÈŽB°2‡Bð§‡Bé&‚B†BÅ B°ò‘BY˜Bsh™Bî<žB–C£BVN£BÉö¢BN"¨Bh®B‹ìªBãå¬B+¥Bœ¥B¶3ŸB ¢BÃõšBw¾ï?7‰‰@-²5@1d@ÙV@Tãe?øSã¿ßOm¿`åÐ=ÇK?À'10ÀÍÌÌÀffÂÀ ÁNbðÀÝ$*Áö(NÁ“ZÁ!°6Áh‘Áj¼èÀ‰ÀÇK7¿ƒ@V¡@— AmçAF¶ï@h‘AD‹´@‡!@ü©1¿¾ŸŠÀé&õÀbÁ^º+Á-0Áð§ Áj¼&Á¨ÆãÀD‹¼Àd;gÀ‰A°¿´È6¿Zd;@X9\@ÙΫ@TãA}?í@- A^ºõ@ÁÊÙ@J ’@33£??5>¿ÇK·¿ôýÀw¾?Pç¿þÔˆ?¬ª?Ë¡µ¿#ÛÀh‘-ÀÅ `ÀÛùž¿/ÝÄ¿'1ÀøS“?\Â>@Â@= @X9@žïç¾Ë¡Å¾‡yÀºIœÀ®GÙÀ`åŒÀ—ÎÀX‰ÀB`mÀ5^º=¢E@Ë¡µ@ ×A1A˜nÆ@ÁÊù@¦›.Aªñ$AºIø@d;+AÅ A+MAÅ PAË¡uA5^€AD‹£Aš™”AB`”A¬‚Að§jAˆAq=’A´È|AÅ †Aú~‘Aü©Ad;­Au“§AƒÀµA/ Aš™±Að§ÎAƒÀÉA×£ÂA;ß²AºI¥A^º…A}?eAôýJA¦›A¶óÅ@þÔh@ü©‰@¨Æ#@Ñ"£@ßOA^º!AÁÊWA¬hAºIhA ’A;ߌAé&ŠAÃõŒA?5hA¼t/AAŠ@ÁÊQ@®g?1,¿–C >¶ó­¿j¼´?×£À?h‘?ü©¡¿òÒ>Ûù6@Zd@%µ@¬Þ@‹l×@ AÕxAÓM>A!°`ATã†AyéŠAžïŸAu“•AÕx©A²·A`å¡A••AÑ"oANbXA×£$A¶óA-²!Aoó@ºI$A/A¾Ÿ(A¬AøS9Aš™IA¨Æ_Aw¾=AºIBA A%½@‹lÏ@+‡ A¤pAƒÀâ@åÐA–CGAj:AºI2AÙÎA¬A?5ú@Õxé@00®VB-2LB“BBsè3BìÑ+Bsh!Bd»"BZ*B`e9B+BÓMBBçûLBü)LB{”TB‘í`B¨FeBøS]BPfBš™pBÍLgB3³eBÛùVB/]RBmgDBݤGBÃu>B1QBÉöTBÕøLB'±VBÚRB¶s\B“˜TB+HBøSBB¦6BNb0B!°%B= BÛy BœDBázîAþÔþA%†B„BhBVŽBq=B¤ð'B?µ.BHá+B¢E3B¨F+BF¶B´HB² Byé B,B5^ýA{óAÛùÕAî|àA/ÝÅAçûÀAÉv£Ayé™A²ƒAÛù™AƒŠA= •AF¶—AœÄ‘A-²­Aj¼¥A®GÂA¬ÑAî|ÈAÝ$«AHá¥AÅ ºA\°Amç¾AVºA—·A•ÁA²½A}?ËATãÜA–CöAVBÝ$BË! Bôý,BÃõ%B®Ç!B\B€BÓÍBPòA¦›ÞA•îA!°ßA5^ÞAq=ãA…ðAhB/]BHáBË!ByiB˜nBÁÊB-BF6Bw¾BP Bh‘B7‰Bš™#BòÒ,B¦5BBà@B…kGB¦UBF6XBXù¥B3óªB*¥BËa§Bf¦¢B¨Æ£B‹ìœB˜B^:™B¾_“B`%“B ׎Bmç‰BÕ¸ƒBfæyB…pBhyB!°xB ‚ƒB5žƒBÏ·‰Büé‡B¢…ŒBJŒBBàŽB¨ÆBÙŽŠBã%…BÇ ƒB š{BòR~B!°sBÁJmB…cBh‘VB¶s\B¤pOB×£RB®GMBd;IB¨Æ>BºÉDB®ÇEB–ÃEBÓMQB^ºLB= ZBVVB `B°rcB/ÝUBR¸NBNB-2CBÇKDBÖNBshOB•XB¨F]BdB=ŠlBVŽoB5Þ}BÑ¢BoR‡B‡VBºI”BÙ”Bœ„‘BD‹ŠBôýˆBé¦Bݤ|B–ÃoBã%oBTãfB®Ç_B‡[BNâYBuiB²qB¨F}Bô}B¤°ƒBí‡Bf¦‡B¾ß‰BT#…B\χBŽB@BÛ¹B¼t“B=JšB'1›B• B“˜£BªñªBéæ°BX¹®BÕx¨BC¢B‰ÁœBžo•Bî“BLw’BßBDK—BJŒ˜BázŸB}¡Bœ„£BX9¦B®‡£BRx£B^º¥B+‡žBöhŸBåИB‡V˜Béæ—BuS”B‰A˜Bb”B –BÛ¹B W‘B1H•B–ƒ•Bo˜BÙ“BJL”BAŽBêŽBff“B?u–BB BìÑB-òŸBÑ"›Bš˜B=Ê™BuÓ’BÍL”B²ŽBž¯Bsh‹B1ˆ‰BJŒ„Báz~B“˜B¦Û„BÇ‹„BÕ8†BhQŒB–ƒ‘B ™BÍ ŸBò’¥B ¬B+G¬B^º¯B¨ÆªB²­BËá©Bb­Bmç³BRx²Bô}³B'1­Bò®B¬œ§B¢BÑâ›Bfæ•B™‘BìŠB¤p„B¤0‡BªƒB ‚ŠBƒ‘Bݤ”Bô}›B+™BCBfæŸB= ¥B‘í¤B1È©B=Ê®B3ó®Bjü¯B`%ªBL·ªB7 ¤B=J¥B žB)\ŸÀ¢EnÀš™•À…sÀd;ÿ¿Ñ"—À¨ÆÇÀ%‰Àôý€À—ÂÀ33÷ÀÏ÷%ÁÑ" Ážï+ÁL7ÁP;Áš™gÁd;aÁ-RÁ¤p=ÁÝ$Ád;³ÀøS3ÀJ ‚¾…ëA@bØ@9´ATãÕ@F¶ AÝ$Æ@X@¦›Ä;î|WÀôý\Àd;WÀq=ÂÀÙâÀ‡ÉÀé&ÑÀ\:Àçû©¾yéö?/¹@‹lç@1 A ×%AÑ"9AÑ"MA(AôýAã¥ã@ff$A-²AshÕ@j¼@ÍÌ€@ 3@…‡@ÁÊ¡?´Èf@ã¥{?ÃõÀ…sÀÕx•ÀÛùÖÀ9´¤ÀÑ"×À–C÷ÀƒŒÀ°r€ÀþÔ¸¾ü©?œÄ@@`å„@{@)\o@Há?–C‹?ºIŒ¾= ×½… ÀL79Àw¾ƒÀZD¿Zd?L7@X9ð@¼t÷@/…@-²…@—ê@%@ìQ@ÓMj@ÉvŠ@+Ó@åÐâ@þÔÌ@‹lß@ÇKWAu“8A5^@A'12Aw¾1A—ZAD‹‡A ×oAÕxkA㥂Aú~†AmçšA–CŒA/žA}?ŒA7‰ŸAq=¶AL7¾AÅ ´Ayé¥A¬›Aã¥{AÅ RAÇK#A‘íÜ@çûq@• @é&9@Háº>ÛùN@Pß@ìQARA/ÝpA㥀A–C—A/ÝžA!°“AÙΙAZd}A¶óiAJ HA1A‘íø@‘í„@Nb@¸…=q=:Àh‘…ÀÕxÅÀ^ºqÀÝ$>ÀÛù¾¾çû @-²µ@Ù@#ÛAË¡AZd)Aj¼AVA¢EHAßOQA…iA×£vAHáhAAÛùzAÛùB3³6B‹l(BÓÍ#BÙÎByéB°ò"Bð'.B¯5B°òBB´ÈLBNbZBfæeB;ßoBVŽtB/jBP ^BÕxUB-²LBmgDBX¹FBR8B#Û@B˜n>B¬JB5ÞVB‡–]B–Ã^BJŒZBî|\BÂVBþTaBÛyfB“˜tB~B„B'±ˆBÑâˆB9tƒBáúBTãvBƒ@nBjBBB` BåPB–CB-²Bd»"BÖ$B'10Bj¼,Bq½3B×£0BøÓ0B‡-B#Û+Bd» B-²B W BX B…BÏwB33BVBuBÛùæAð§ÔA¦›ºAh‘¥A®˜A9´­A‰AªAð§»AªñÒAh‘áA üA)\ B#ÛBX¹$B'1"Bã%B°òBßOBªñìAð§îAòÒØAü©ÒA^ºÐA¬ÅAøSÇAZdãAƒîAÅ B‰A B7‰B$B\Bç{B®GB…Bã¥éAÏ÷æA°râAøSùA?5ýA¨ÆBªqB3³ B#[BB'BË!*B^:#BNâ!B•B%†BázB ‚Bsh BÓÍBžïB´H B–CB¨ÆB×£+BP 3B²>BZdHB#ÛVB —£B•¦Bú¾ŸB¡B¢EšBÑbšBç{”Bj|B«“B=ŠB7ÉB¬ŽBîü‹B­‡BX¹‚B“X€BhÑ‚Bw¾}BoR…BÅ‚B5Þ‡B.‡BVމBœÄBéfŒBBàB+‰B= †B‡–†Böè‚BV΂BòÒyBƒ@uB…hB¾]B+aB°ò\B1iBƒÀ]B‹l^B®VB—[B33YB¸WBÏwbBçû`BºÉhBJŒkB×#dBü©^B;_QB+TB²YBoQB{SB{”XBsè[BÓMiBôýnB´HzBé&ƒBTãƒB‹ì‰BT#ŠBw¾B)œ’B™BªBíœBÉ6˜B™“BÅ`ŽB'ñˆB`åB^:}BoqBßÏfBÃu^BÃuZB1ˆfB= iBÖwBåÐ|B…„BåЉB“؉ByéBÇ‹ŒBdûŽB㥓Bð§—B¦[™B;ßœB ‚¢B-ŸB²]¢Búþ¡B`e©Bí¨Bô½­B«ªBT££BL÷ŸB¬˜B…ë—B+‡”B¤ð‘B×£˜B™–B)Ü›BöhBN¢›BõœBìQ—BJLšB?µœBãå•B®™B¢E“B馓B#BÅàB¦›•B­BZdB%†ˆB¸^†B˜.‰BÖ‡B)œŠBRx…B‰A‡Byi„BuSƒBøÓ†Bãå†BÍŒŒBy©ˆBü)‰B´ˆ„BË¡ƒBåP~B®GsBmgvBÇKiB-²oB}?hBÝ$nBô}fBP YBNbTBö(ZB¾_Bé&bBßOqBR8{BÁ „BÕ8ŠBœ‘B¯˜Bs¨–B¼´B%F›BÉ6¢B‘m Bmç¥B{ÔªBžo§B¦[§BXy¡BuSBò’–BBX9‹BC„BÁÊ„Bw¾zBç{rBÑ"wBR¸vBþTBÁJˆB¾Ÿ‹B€’B9ôBFv’BÝd“BÄ™BÇ ›BLwBÓM£B…¥B-2§B¤0£Bq=¥B\ÏŸBR8¥BÃõ£Bé&ÁƒèÀ‹lãÀìQÄÀ‰A¨À= ãÀÛùÁ+Á#ÛÁJ $Ámç7ÁþÔ`ÁçûQÁÍÌlÁ“RÁj¼„Áq=™ÁßO‘ÁZdŒÁÉvlÁÕxQÁ‘íÁÉvÞÀj¼¤ÀB`å¿®Gñ?q=z@‘í@¾ŸŠ@¬º?åÐÀ'1ŒÀNbÁÑ"Á–CÁffLÁ?5@Ááz<Áƒ8Á‘íÁd;£ÀX9$À…ë‘?B`%@…ë@ÛùÂ@é&¥@#ÛÕ@}?@ÙV@Év¢@¦›ü@Ãõì@°r@/ÝT@1,=ð§Ö¿Õx‰¿+gÀ²Àü©yÀ—ÞÀ¾ŸÁìQÁ5^@ÁÃõ2Á‰ANÁÅ XÁ²ÁÙ ÁžïÛÀôý À°r0À‹lÇ¿ÁÊAÀZô¿-šÀq=ŽÀj¼ÐÀX9¨Àú~ÎÀVÚÀÂåÀìQœÀ/‰ÀÉvþ¾òÒ @¶óí?çûù¿ôý„¿ã¥{?¶ó½¿¨ÆkÀ¢E–¿Z$¿°r@j,@X9$@‹l£@ø@ð§Æ@¢Eæ@ƒÀ¦@²»@¶óõ@é&)AR¸AR¸A¨ÆIATãGA+‡|AZd}A”AÍÌ“AÅ ­Ad;¼Ab¹Aö(©Aff—A“A+‡LA…AÖ@㥋@Ñ"? ×C¿ö(ì?Ãõ(¾Ñ"+@¾ŸÂ@ÓMA¦›NA;߃A “A–C®A{©A¦›¡Að§£AbŽAÓMpAìQBAPAçûù@7‰µ@)\“@e@J 2@‹l‹@¶ó­@F¶ç@¢Eª@)\›@®ATãA¨Æ#A>AþÔAq=@AÑ"+AJ A‘íA%é@n@+‡>5^Ú?áz|@ÕxÉ?Ùη¿‰A ?˜nB@w¾Ÿ=?5ž?oó¿®G ÀÏ÷KÀçûÀ00‡–.B9´#BVBHá BÇKBìQöA®GþA¼tB3³ByéBR8+B{1B ‚>BTãGBNBHáRBZLB­>B/]7B¼t2BBà'B7 *B…ë"B¸ž)Bw¾%BD‹(Bð'!BÏw+Bªñ4B¦›>BR¸?B19BR¸B¢EJBö(RB)\_BázhB¬pB+‡rB…fB#[eBªqWBhPBmçABƒÀ9BÕø*BÁJ BHaB²Bd»BZä'Byé,B¬;B¬œAB^:NB5ÞWB×#aBÍLlB²oBBàdB?µdB¦UBUBBHBYDB´ÈRByéYBøÓ`Bî|]B gBö¨^B°r[BZdNBq=JByiBB‰Á8Bo’+BBà&BÑ"B-2B“+B}?0B²:Bü©7Bj>B´ÈKB/ÝOBq=EBô}OBbZBã%RB¢EHBòÒ;Bmg5Bƒ&B?µ$BVBh‘%B¨Æ3Báú5BžoBBÛy=BúþIBNbAB'±4B¼ô,B°r BÙB‡B{B?5îA¼tÖAoÃA ×ÙA¶óêA7‰BÙN BÕxBZdBD BìQBj¼Bj<BªqBshBÛùôAºIåAh‘æA+éAÝ$ãA)\êAffÔA®ÃA5^¦A}?¡A¬‚A1hA QA+uAºIfA®G„AÂAþÔ¯A9´ÌAX9åA^ºóAü)B3³B²îAƒÀÖAÅ ÒAj¼¹AZ¶Aj¼£Aj Aj¼œA“”Aw¾AÓM¦A㥹ATãÖA‡äA‰AÿA…k Bé¦B“÷Aš™ÙAªñÎAË¡´A)\¸AḬ́A²ÄA®ÂA“ÊAåÐÑA^ºêAþÔÿAÛù B‘mBBB`BôýBZþA‘íûA¾ŸÞAã¥âA¤pþAñA;ßßA úAÃõBd;BÙNB;_&B#Û0B‰A>B-¢BÙ¦B ZŸB}ÿ¡BÑ¢›B#ÛšB°²”BÖBï“BɶBH¡’BêŽBô½‹B®ˆBüiB¨Æ|B¤0„BZä€B®‡BmgƒBí†B细BZ¤ŠBéæŽB¾‹B“ŒB#Û…BJLB¦}BÃõxBF¶{B#[rBBàqB/hBmg\B.^B)\RBfæZBÝ$OBTB®ÇKB®GKBü©FBj¼ABøÓLB˜îKB´HWB+‡WBP]BÑ¢YBR8LBÇKFB¦IB%†EB–Ã@B‹lMBØOBÛùYB¢EbBßÏkBX9wBNb|B/]…BÇK†B%FBD B,—BÍ ™B㥗Bu“B-²B´È‡Bdû‚BßOvBÙNqB cBB`aBÍLWB'1VBF6cB)ÜhB‘mwBªq~BÚ‚Bî<ˆBœ„…B ‰BÕx…Bw~ŠB\Bj¼‘B)œ”BZä™B-B WšB“žBw>žB/¤B,£B%Æ¥B £B°²œBãå˜BA’BíŽBÛyŒB׊BË!‘B¢ÅBTã–Bo”B'±“B“B´HB-²ŒBj|ŽB¾Ÿ‰BT£B;_ˆB‰ÁŠB쑊B3³‹B‹ì‘B¤0ŽB)B²‰BuS†Bq}‡BÉv…BÍ̇B×ãB-²‚BúþzB˜npBNâtBuBÂB²]B«„BÍÌ~Bð'yBshtB,hB kBË!`B'±eB‹l_Bô}dB;_^B+‡PBþÔGB?µPBé&SB¯YBÖfBHápBåÐ}B5Þ„B«‹B„’BZ¤‘BÚ—BX9–BD‹œB¶³›BöèŸBÙÎ¥Bw¾¤B£BbОBw>›Bdû“B¬œŒB–‡B¼4€BL7{BTãkBHacBÅ mBã¥mBÑ¢|B!p„B^:ˆB°2B™ŽB’Bsh’BÉö–Bq½™B¾ßžB7I£Bé&¤B¬§Bª1¢Búþ¤BÅà BJL¦B—£B ×1ÁÁL7ÁºIÁ°räÀÓMÁ+?Á'1ÁøS+ÁË¡[ÁZnÁ ÁÃõ†Á^ºšÁ¨Æ”Áj¼®Á{¿ÁßOºÁÓM³Á¾ŸšÁjˆÁòÒSÁ—(Á= ÿÀ¢EšÀÃõh¿¾ŸÚ¾ ×Ó¿¦›?X9À-²½ÀL7 Áq=DÁ1rÁ´ÈƒÁHá•ÁþÔÁ7‰ÁJ Á°rjÁ'1:ÁoÁºIÄÀ —ÀD‹<À)\¿¿–¿çû ¿L71Àü©qÀ+¯ÀòÒ%ÀVž¿yé–À×£ À+ÛÀ1Á= ×ÀÙÎ ÁÕxõÀ/ÝÁÅ DÁX[Á9´^Á˜nxÁú~dÁ qÁL7sÁ!°>ÁB`KÁ¬Áð§ÁJ öÀ{æÀJ Á/ùÀ331ÁD‹.ÁB`KÁ,Á—4ÁƒÀ(Á®G;ÁF¶Á= ïÀ+À-‚¿1̿ˡ…Àö(DÀ¢E¿Ù>À¦›œÀÇKÀ“\ÀÑ"›¾#Ûy½@ÕxA@?5ö@Évº@B`±@ü©‘@®Gq@ºI°@{AÃõÈ@é&Ù@Ñ"A¾ŸAö(PAÓMJA^ºuAL7aAÝ$ˆAßO›A¬‘A¼t†AÛùzA¾ŸJAåÐA“Ä@Év~@ôý?‡IÀÍÌ”ÀÑ"+À–C›À®Gñ¿çûé?Tã‰@¬þ@/Ý(A¤p9AViAÙÎgA—XAshgAZ:AÇKAË¡Í@²7@Ý$Æ?š™Y¿oÀ-JÀo“ÀshÑ¿D‹ÀL7!À-†ÀòÒeÀÙŽ>oã?U@¢Eª@ÇKO@¶ó¹@¸‰@Ï÷Ã@ú~A˜nA¼tA•7AÙÎA/;A5^XAÀÍÌÀmç?î|¿¾%9À×£ð¾þÔè?¶ó­¿yé¶¿‡À1ˆÀo§À—ÒÀ005Þ,B#[%B×£Bu“ B`å BVÿA‰ABTã B€BøÓ!B-²,BÛù4B«BBVLB“UB¬ZB{SB^ºEB}¿=Báú4BTc+BR8-Bo'B7 ,Bö¨(BÍÌ.B«)BP 0B®G=Bô}EBÛùDBÍL@B š@BÕø8Bq½CBÃõHB–ÃUBÝ$aBØkB–ÃvB¾wB WlB°rkBÙN^B'1YBHaLB•CBNb9BZ0Bú~!BþTBš(Bw¾6Bq=;B‡–HBƒÀJB+‡WB¬]Bð'fBœDpB‹lwBÕøjBL7hB®YBÅ XBÙNKB^ºFBáúTB`e[B/ÝcBF¶`BþÔkBHáfBÕxbB94UB`åOBÙÎHBZd?B,1Bsh,BÚBî|#B0B¢E4BZd=Byi@B´HEB¯RB/ÝSB˜îIB= QB]BTcTBü)OB…@BD 8B94)Bê#B-Bh%B´È2B7‰3B\BBç{>BffJB…EBö(:Bƒ@1BØ&B¼ôB)\BžoBÏ÷ñAmçÔA¾ŸÌAü©éA7‰îA= B'±BNbB'±B–ÃBbB•B•BìQBìQ BþÔûAðAòÒîAZðAôýêAbìA•ÑA+ÁA1­A®GœA?5‚APmA/ÝVAq=…AŠA)\¡AÃõºAË¡ÆAd;áA‡ýAX¹Bü)B/] Bü©B“òAB`æATãËAåÐÌA%±A¦›¨A®£Ash•AJ “A…ë¦A#Û°AXÎAÛùãA}?þAÚBVüA9´ïA7‰ÓA= ÔA°r·A‘í¸Aé&²AÃõÇA+ÏAÁÊÎA ÝA¨ÆóAƒÀBu“B!°B'1 BP Bð§B–CB–CB¤påAX9éAÕxþAßOðA‘íÚAßOôA B B‡–Bö((B¦1Bé¦=BíªBE­B7‰¨B…«¨B Ú By) BœÄ›BÙ—B“˜œBU˜BBqý™BË!—B?u”B–ƒŽBB5ž‘BòRŽBº‰“BÏ÷Bj|“B#›Bo’BØ–BøÓ‘BÛy’BžïŠB²]†BÓÍ…B®‡„B ‡Bç{BƒB=Š}B‡uBòÒyB#ÛrBR¸{B)ÜqBÙpBB`dB1hB´HaBZB#[bB[B‡–gBjdB^ºhBøÓhB;ß[B{UBNbWB;ßWBF¶SBÍÌaB•fB…ëqB°ò{Bú~Bj|‡Bç;ˆB5^B–’B š™B¬œ›B¢…¢B¼4¤BßÏ¡B=Š›B¨Æ–BÍ ’B‘­ŒBãe…BòR„Bƒ@zBé&wBºIlB'±jB)\uB5ÞyBò’ƒBø“‡BŠB?õB˜îŒB'±B'1Bé&“B!°—BBšB¶³œB‡V BþÔ¤B/£BÉv¥BJ ¤BøÓ©BÙ¦BþÔ¨Bô}§B  B\ B®Ç˜BØ•B!°By©ŒBá:’B²B3ó”B\O•B ”B×c”BÁŠ‘BÛ¹’By)“BXy‹B9´B BŠB BªŒBÕøŽB˜n”B¤ð’BH!–B%ÆB?5‹Bj|ŒBÏ·ˆBšÙ‰B°rƒB5„Bh‘yB#[rBP uB–ClB=ŠxB€pB€yB33yBü©xBxBq=rB1yBNbmBìQsB•oBçûsB®pBÛù`BåÐYBþÔbB—\B;ßdB…lBq½oB²BV΃BZ$ŠBB B¦ÛŽB)•B«•BZ¤šBfæ›B ÚŸBwþ¤B7 ¤B¨¢Böh›B'ñšBu•BDËBW‰B,‚Bb|BTcnB“˜fB!°qBF¶oBB/]„B–ƒˆBFvBTãBë•B‰A”BœD˜B¦B¯¡BþT£Bmç¥B–ƒ«Bd{§BªBÍŒ¦BZ¤¬B²Ý©Bš™©ÀjÀåÐ*ÀÓMb¿…ëQ¿òÒMÀ\ÎÀ‘í¨À33ÃÀ)\ÁË¡ÁL7?Áé&7Á ×_ÁÓMRÁçû…ÁìQœÁºIšÁ+‹Áš™kÁ•CÁ¢EÁq=¦À(ÀoÃ>L7y@¬Ž@}? @X…@#Ûy?VÀ¢EšÀ#Û Ámç-Á¶óMÁ)\Á/wÁB`cÁ´ÈdÁö(6Á˜nÁ•ÏÀshQÀ-*ÀøS?!°²?D‹@Ë¡•@Ûù@u“@`å?®'@‡ @1¬¿¸-Àî|‹ÀshÁÀ+‡†ÀVÎÀ ‡À¾ŸžÀ¼tïÀ—ÁåÐÁj¼ ÁoÁÁÊ ÁÓM"ÁƒàÀ¢EöÀ®G•ÀJ ¢ÀÇKÀøS ÀÙ·À¤p…À•ëÀ+Áff Á¼tïÀ¸ÁB`åÀTãåÀ{~ÀÕx9ÀÕx)?ôýd@¼t3@9´H>!°Â??5’@¸%@¦›Ä= ;@Ù^@X9Ì@ÙÎÓ@+ Aj¼Ash[A¢E>Ash1AHáA A×£"ADA= %AJ 4A¢E`Ad;{AåБA}?ŠAÛù A¦›žAÅ ½AÆAu“¿A¨Æ±A)\™AþÔA#Û_A= 1Aî| A ³@ü©@˜n¢?¦›„¾1$@9´Ì@Ñ"A—00–ÃNB#ÛABL·8B,Bªñ!BR¸B¾ŸB94B¨F$BÅ *BP 9B¾:BøÓEBXKBð'OBþTOB²JBÏwBq=7BP4B33(B,Bô}5B“= —¿HáZ¿ü©¿žï‡À ׯÀžïïÀq=Á)\óÀ^ºÁ}?ÁžïÁ?Á¾Ÿ>Á¤p9Áî|5ÁžïûÀF¶÷Àü©ÁðÀã¥ÁçûÍÀú~ÚÀNb¨À7‰¹À—ÒÀÉvÒÀVÁ¬Áj2Á-²ÁƒÀ ÁœÄüÀþÔ ÁÓM¦Àü©…Àj¿;ß@‹lç>‡©¿ázT?h‘M@ìQ¸>¬Œ¿…ëÑ?‡ @ §@ÃõÈ@š™í@š™A´ÈFAÕx'AV&Aƒ AøS÷@7‰AHá4A`å"Ao-AƒÀTAã¥wAw¾˜Aj¼™A+‡¯A®§A ÄA5^ÔAÙÎËAV¼A)\£A˜nŽAD‹fA9´2A= A¤p­@q= @\B>Õx @o£?)\—@ü©A7‰'Aªñ`A¤poA•‚A5^™AÛùœA “A˜n”A‡€Aü©KAÅ 2A/é@\ž@6@ªñ2?u“X?¢E†¿š™ù?î|'@jD@-²Ý>Ë¡E>j¼d@sh@®GÝ@PAX9A/EA7‰;A¾ŸfA‡A7‰‘A¸AázAœÄ~A)\‡AÅ šAÁÊ€AB`ˆAôýbAw¾eAÃõ:A•-A¾Ÿ0AX Ad;;AÑ"3AþÔ@A²)A^º;Ad;'AÇKGAƒAìQAþÔ°@Å P@^º@—ò@bÄ@Pw@)\ã@ZdA!°Â@Áʹ@-²U@ºIÌ?%Ñ?ü©ñ>00;_EBÓM>B²0B1ˆ&BÇËB®B{”BÂBÝ$Bƒ!B}?.BP 1BB¢E>B‹l4BR8/B&B\BÇËB`eBo’BÑ"BžïB #BVŽ*B¾7ByéCB'±LB`åZB…cBj[BÑ"[BLBJŒQB%KB;_NB\[B“bB=ŠeB²eB+‡eB´ÈZBffTBh‘EBÇË9BX1B\#Bw¾BÃõB¸ž BbBh‘&Báz-Bîü;Bj¼9BÇKEBázOB+SBÍÌLBR¸YBd»dB}¿]BNb]B5ÞMB}¿PBôýABßÏDB¨Æ6BÃõEBB`MBÙNNBXBw>MB¤pTB;_LBÛy>B–C>Bݤ3BÖ1Bé&*BD‹Bã¥BÃuBZdúA BúþBÙNBÃõBP"B šBÏ÷"B¶s%Bé& Búþ B-2B5^ B-²B òA+úAyéðA{ôAÛùøAþÔÞAÃõéAHáÌA+‡ÎAð§´A‹l¨Aw¾‘Ash‘AÝ$‚AªñŠANbšAh‘¤AXÁA˜nÐAåÐçAþÔÿAœÄîAÝ$×A?5ÄA‰A¼AÙΧAj¼²A¦A;߯AÕx¶AÁʸAXÊA;ßÝAÓMöA®GBÁJBË!BÍL,Bö((B;ß B—BX9 BÙÎôA¤pãA'1ÐA9´ÙA–CÏAÍÌÒAƒÍAžïÝAVóA‡B'±B¨FBú~B šBåP Bã% B°òBÛy BjB€BD BJ Báú)B^:+B¼t3BJ ;B šFBÇËSB‘­±B¸³Bê¯B@³BuS®B–²BÁʬB'q¦B`¥¦BC¡B}?¢BÁžBì‘™Bø–B×cŽBÍÌŠB+‡ByiŽB`¥•B/Ý”B¾_›B5Þ—Bé&šB¦Û›Bw~™Bª1›Bo’•BL7BTc‹B‡–‡BÕx‹BÍL†B–†BÅ ƒB#ÛxB¨Æ}BÉörBZdwBÑ¢nB¬jB¢E\BJ _B3³ZBÛyZBÏwfB!0aB®ÇnB“pBßO{B°rB+xBÝ$nBô}hBX9cB?µ\BgBºIfB#ÛnBÉvuBö(yBF6‚B#Û†BbPŽB.BÏ7—BÍLBí£B‡¡B¬œ BÕx™BoR•B¾ŸB¾Ÿ‰BP‚BõƒB‡B šzB5ÞvBƒ@{B9ô‚B˜îˆBoRŽBBŽBT£‘B¨Æ”B™’B^z“B}BÀ”B'1šB×™Bw>šBhÑŸBj¥Bq=¥B,©BVªB±B±BHá°BÛy­Bj<¦BL÷ B+GœB‹,–B˜.“B š•BF6ByéšB¨†¡Bãe£BþT¨BuÓ©B{©BÍL¨B®Ç§B…ë Bí¡B¼ô›BPMœB%Æ›B ךBN¢ Bô½BÃõ B3óšBš™›B šŸBÉvŸBB  B¤ðšBÅ ›Bb•BÖ“B—BZ™Béf BÕ¸¢BÏ7¨B/£B?u¢B^úŸBÙšBÕ™B¾Ÿ“BuÓ“BòÒBBB?µˆBÛ9‚Bff„BÓ ŠB+ŠB‰ŽB˜î“B•™Bu B š¥B9ô¬B¸ž³BÉ6®BÇ ²BZd¬B+‡°B+­B,¯B94¶Bk¸Bj<·B–¶B#›¶B±B˜«BפBÅB`%™B°r‘B¼ôŠBB BZ¤ŠBD‹B3s—B®šBo¢Bqý¡B=ЦB¸ž«BbP®B¼4­B\³B쑸Bò’´Bƒ€¶B¼t¯B!0²B°2¬BþÔ°Bðg­BÛù2Á`åøÀ¬öÀ°r°À•ÀÅ ÈÀVÁ!°æÀ•Á®3Á= QÁçû‚ÁÂÁÃõ™ÁZ“Á…¬Á¼ÁƒÀ²Á¾Ÿ§ÁTãÁ•yÁVGÁh‘ ÁôýÈÀ‰A@À—î>ö(@¦›D¾5?®G!ÀË¡½ÀÃõìÀøS1Á‹lQÁZnÁZdÁo›ÁÙÁË¡¢Á-ŠÁÝ$xÁ'1BÁ´ÈÁ{¶ÀÅ XÀ–¿ã¥Û¾Há"@é&Q?ã¥Ë?J ‚?d;?°r¨¿J ŽÀºI¬À¨ÆëÀ/ÝÁ9´ÁX3Á—$Á“<ÁÁÊcÁmçeÁú~jÁtÁTãSÁ¤pkÁ¶óÁþÔFÁD‹PÁ¢EÁ#ÛÁ¸Á7‰Á¦›ÁL7ùÀ= 'Á¢EÁÛù"Á²ïÀX9Áw¾Á;ß%ÁùÀ= ÛÀ-RÀU¿^ºAÀ´È²ÀNbXÀV¾¿#ÛÀh‘ÅÀ)\OÀ33CÀßO >åÐ"?Ãõ@˜nj@“Aš™@ff¾@!°’@ÙV@7‰@ázø@…ëÑ@L7õ@33%Aj¼BAú~xA¾ŸvAÇK•Aî|AÛù§ATã¶A‰A±A² AjAbrA-8AÇKÿ@ìQ°@@…‹¿¨Æ#À“¿¤pÝ¿“Ô?Í̬@—þ@`å:Ash]A“~A ˜A˜n¡A˜n“A¾ŸA-A‹l„AffLA'1A–Cç@shq@ôý @ÇKw?V¾¿R¸>?!°R?P‡?®‡¿P—=×£p@²¯@åÐþ@ð§$AAáz4A–CA‰A*AøS?A–CQAÅ NA“ZA¤p?AVKA\A–C)Aj¼7‰)À•‡Àu“œÀö(¸À00×£5B“+B\BƒÀBƒÀB¶óB1ˆB¦›BJŒBêB'B¼ô)B¬œ3Bu“;Bé&>BƒCBfæ>B¼ô0BJ )B7 !BVB!BþÔB¨Æ)B5Þ%BÙN.Bð§%Báú)BË¡5Bb9B#[:BB0B¾Ÿ/Bôý!B $B/&Bb0B¬?B¶sBBXNBXSB¢EMBºÉPB5^EBJŒBBË!5BÙÎ1BºÉ'B;_B®ÇBœÄ B¼tBq½B.BÙ)Bö(0Bžï:B‰AGBÛyNBY[B;_cBXBw>\B¾NBbMBoBBØ=B;ßJB˜nQBé¦ZBš™XBh‘_BjXB`eTB–CFBÕxBÝ$óA/ÝØA˜nÒAÃõÀAd;ÓAžïÎA‹lÓA+‡ÚAé&éAÏ÷ÿAshB®GBžo B‡ BX9 BË¡B–ÃB‰AèAî|óA‰AB¬B'1ûAj¼ BfæBÉöBçû!BÙN.BÕø8B‹lBB?µµBîü·B²BÑ¢´B¼´­Bê®B7 ªBú¾£BÝd§Bo£B¬\¥Büé£BòžBö¨B“–Bœ„’BÑâ—B•–B?õšBw>˜B\ÏœB¶óšB¬œœBžoŸBÇË›B–œB‰Á•BN¢BoBÑ¢ŠBÏ÷ŒBs¨‰BW‰B#›‡B‡–BU†Bm'BÕ¸‚B^:xBÛùxBÙkB‡–kBð'eBjbB^ºjBmgeB¯rB¸žpB¢EyBÉöyB‰ÁjBR¸`B;ßeBã¥dB ×bBNânB'1qBú~yBjü€B=Š„BX9ŠBƒŽB94•Báú—B1ˆŸB¾ß¡B©B´H«B9´§B}¢B7 žB‰Á–Bî|B“‰Bðg‡B šBuÓ€B7‰|Bçû{BÓÍ„B¢ŠBmçBƒ‘B¦Û’BRx–BÚ“B“—Bq=“B-²—B“˜BݤŸBRø B‹l¥Bº ªBƒ€©Bçû¬B­Bªñ´BL÷´B–³Bº‰²B«B‚¦B¼ôŸBD‹šBNb—B'ñ–BFöBü)žB²¤B²¢B´ˆ¢B¢E B´ŸBX9BD‹™B®Ç“BT£™B´È“BÍŒ˜Bö(™B¶ó™BÓM¡BdûBqý B1ˆšB¨Æ—BÖ™Bß™Bb›B˜.•Bš”B¸ŽBá:ŠBN"B WBò“Bk’B²™Bî˜BP–B-ò”By)B‰A‘B`%‹Bªñ‹Bj‡B†BEB uBô}yBmçBZdB\Ï…BÓÍŠBh‘B–Báú›BìQ£B¨Æ©B“˜¦BXyªBž¯§Bj<ªBo’ªBÓM­BÇ˱B㥳BøS²B Z±B-ò®BVލB×£¢B…«œB®•BÂBĉBuƒB×#‡BDË…BÙÎŒBüi“BVŽ˜B‡ÖŸB+G B¤0¥BåP¨BNb©Bð§¬B Ú²B¸ž´Bº‰³B^z·Búþ±Böh´B–°BbдB¤0±BÍÌÜÀ;߇Àw¾ƒÀR¸î¿¾Ÿº¿ oÀ…ëÙÀòÒÅÀ¨ÆãÀ\ Áh‘1Á mÁTã}ÁìQ›Á×£”ÁøS®Áã¥ÁÁƒÀºÁB`¦Á;ߎÁìQrÁ°r8ÁÉvþÀ°À¶óÀ-²]?+@L7‰½¢E¦?ÙÎÀ¨Æ»ÀX9Á°r>Á-XÁ¬zÁË¡•Á7‰¢Áu“›ÁœÄ§Áçû”Á˜n‰Á¼tYÁ®%Á‡ýÀjœÀìQhÀÕ¿ö(œ?/Ý$¾yé†?P?®G±?Ûù^¿}?™ÀVáÀ-²ÁB`;Ámç#ÁF¶MÁÍÌ:ÁœÄPÁ'1jÁZjÁP{Á¬zÁ‘íNÁî|MÁü©gÁ1<Áü©WÁã¥'Áã¥%Á= ÁmçÁ¢EÁNbÁV6Á“ÁÕx Á= çÀÝ$ÖÀœÄÁ¤p%ÁF¶ëÀƒØÀð§VÀü©Q¿Há À¼t§À°rXÀ¦›Ô¿\žÀ“´ÀZd;Àã¥{¿î|@'1Œ@òÒ¥@®Gé@çû'A¼tç@ð§ê@}?‘@°r`@ ן@°rAÓMò@ôýØ@é&'A¸=A{vA㥀AZ™A•›A ¸Aj¼¼Að§¬A% AË¡AL7mAáz>AƒAøS×@J Z@š™™½¼t¿ÍÌÜ?w¾?¦›„@%é@+A-²UA}?yAR¸‰Ažï A…¤A²¦A¬«Aü©œAq=†Ad;[Aú~$AVA+‡º@²g@+‡@¤p½¾®÷?;ßï?¤p@ú~Š?ú~ú?V±@ázì@HáAJ >A?5.A¬ZA+AAÅ XAôýzA²†AJ AœÄˆA^ºaA;ßgAÑ"‹AÕxsA‘í€AÛùLA‡=AB`AÝ$(ATã9A}?#A®GOA“>AÍÌB)\2B¦0BY:B•:B€9Byi-B^º+BìÑB}¿BVŽ$BD‹!Bš™0B‹l7B–C=B9BÖ6Bçû4BV*Bd;.B7‰B€ Bš™B¨FBö¨B‹løAÛyB¤ð Byi BL·BîüBìÑ%Bfæ4B¼t?Bç{NB‡–ZB ×QB+[B¸žQB‹lZBßÏVBÏw`B1nBË¡lB¦›jB`åeBö(eB´HWBšKBôý?Bƒ@2B×£'B“˜B¤p Bj<B• BZäBV'B«.B®=B×£>BݤGBNbMB!°UB-²TByi`BázjBP fB—iB1ˆ\BucBBWB˜î^BÉvRBÕxZB cB¾Ÿ[BßÏbBòÒUB®[B)\PBh‘CB¤pIB¬@BƒÀAB—‚B¸…BÏ·‰BìŒBZ¤“B9t–B5ÞB=ŠœBòR›BÓ ¢B´žB‘-™B¾_’BJŒBE†B¶³…Bþ”†BÃu‡B;ߎBݤ‘BÑb˜Bð§šB;ŸœB5^ŸB¤pœBq½žBD‹šBáz™BB`—BßÏ‘BÍL‹B¤ðˆBݤ‹Bþ’B.ŽBÃõBPÍBÇË”B…kšB\ÏšBl¢B£BåМBÑb›Bm§˜B“X–Bî|–BF¶”B —B‘-žBôýŸB‘­¢B¬\£BJŒ¥BÙ B‡Ö™B•BJÌB“ŠB‘-ƒBî|†B€B?5„B‡ŠBWBÏw–B/œBÁ £B…ë¥B1£B×¢B ªBô½¨BÃõ£BRx¨BTc¤Bî¦B?õ¡BÃu¤Bo¤B•“?“|@ ×c@ªñÒ@J ¢@/­@ázÔ?o?Zd;¾ã¥{À%©À}?Á®3Á¢EnÁJ ŒÁff©Á¢E¦Ámç—Á)\}ÁþÔVÁÏ÷ÁœÄøÀL7yÀPÀ^º‰¾-²ý?ƒÀê?¨Æë¿ [À‡áÀ!° ÁÏ÷+ÁUÁ‹luÁþÔ•Á“ Á`åºÁ®G»ÁázÒÁ'1ËÁ´ÈÉÁ/ݬÁ²™Áb†Ád;QÁÁÊAÁshÁ-ºÀ/ݼÀR¸nÀš™ÉÀ\ÎÀ'1 ÁoEÁj¼lÁX9pÁ ×ÁJ ˆÁ“’Á{Á®G’Á¬Á7‰‚ÁžïiÁ KÁ¨ÆÁ+‡ÁF¶%Á¦›"Á^ºSÁ!°0ÁÇKKÁ`åFÁ¤paÁ—VÁB`YÁ5^zÁÃõlÁÍÌZÁ¬&Áú~Á%íÀ¼t ÁË¡ÍÀ+‡²ÀB`Àé& À/­ÀÓMÒÀ•SÀ\ò¿Å ˆÀ'1@À–C ?¨Æ@Zd³@\Aªñ0A˜nXA+‡hAyé6AÕx A ׯ@¦›d@`@ÁÊ­@Ù²@®GA¬(Ah‘UAP‡A¦›AÙΦAé&¨Ažï¾AF¶ÆA5^¯Ah‘¢A×£…A¨Æ]A+9Aö(AÂAsh¹@ÇK‡@ºIì?!°‚@þÔ”@î|ë@Ãõ"AHá.A`å\Aªñ`A…sANb–AìQ£A®¨A…ë¾A¸²A?5A7‰‹A–C]AßO%A—Aš™©@°r8@VM¿d;?5^š¿ƒÀš¿‰A°¿33?-²e@Å ä@#ÛAøSUAu“dAî|Ah‘’AÙΪA7‰­A‘í¸AZ¦A+©A’A¬žAƒ¼A= ²AÅ ·A#Û¢AåРAj¼‡Ažï}A•iAð§DA¨ÆQAX9$AZdAÁÊõ@Þ@F¶ó@\"AÙAœÄ.A¼tAì@‘í&AÇKWAÁÊ5AòÒ7A¶ówA¬rAh‘aA´È.A¢Eò@ôýœ@Nbx@-²=00HáDBÖ?B¬3Bôý*B®Ç BÏwBã%BshBôý"B¢Å$BßÏ/BÍL1B'18B²=B!0;BÃu9BL75B…k'B²*BƒÀBš!Bw¾$BÏw%B2B‡,BÑ"4BìÑ+Bö((Bq=4B˜î/BZä1Bªñ%Bã%&B WBð§B…ëBmç!B/Bƒ1BÍÌ:B×£8Bh‘1B/BÅ #BƒÀ%B`eB‡B‰ABË! B×£óA…ëÝA?5ïA¶sB´ÈBXBÁÊB#BƒÀ0B+;B“IBQB ‚HB?µOB33HBƒKB´HGB¶sJB-WB×#ZBîüZB šXBîüTBÚQB šGBÅ 8BÍL+B'1"BòRB/ÝBq= B°òB%†ByéB%BÚ3BY3B;ß@B¦›HB¸LB;ßKB ‚XBZaB¸ZBff]B#[OBË!QBFB\PBÙÎCBÕxSBB`[BNâUBHaXB¯LBX9TB}?NB94?B…ë@B®Ç7B}¿:B¸ž5B!°&BY B^:BbBžo$BTã#BøÓ+B7 !Bš(B9´ BåÐ*B…k*B!0'BÇK%B94BÁJBêB…üA²BÏwBòRBð'BƒÀæAshãAu“ÉAX9ÉAd;­Aáz–A+‡…AƒÀ“A33AÉv•AÙΦAö(ªA1ÇA¾Ÿ×AZdåAßOñAÛùØA5^ÂA´È¹AÍ̵A/¬A…ë½A¨Æ´AË¡ÁAÂÆAu“ÎAZäA9´úA1ˆ B‰ÁBBœÄ'BºÉ5B!06Bo’*Bh‘B¸B‰ÁBVBÇKêA^ºñA²ÜA²ÞA¾ŸÙAÂèA‘íþA W B!°BB#ÛBåPB1ˆB‡B š BË!Bw¾!BJ B¤ðB“˜+B/]3Bð'6BªñÉv@Nb°@P Aj¼>A sAã¥}A¤p›Aé&ªAXÀAð§ÃA‹lÐAö(¾AmçÅA¼t­A±AázÌA–CÁA‰AÎA“²Aé&¼AÙΣA ×’A®G†Aj¼fAåÐvA¾ŸNAòÒ7AX!AòÒA;ßA¬@Ad;+AÃõLA A5^(A¬TA!°vA%iAôýhA33’A˜nŽAX9ƒAøSSA¸#AÂå@´Èæ@j¼ˆ@00,TBøSLB¢Å=BÚ3BÓÍ(ByiB B‡B{*BL·(BË¡6B}?;BY@B®ÇBBØCBPCB¼ô>BÍL1Bu“/B“%B9´)B}¿+Bô})B+5BX/B–Ã4BþÔ)BZä)BÉö4B€4B…ë3B/])B¶s(B¬œ BÑ"B/*BJ *Bö(9B,=Bq=BBd;>B•9B7B!0*BìÑ,BfæBPB«BBð§ùAèAôýïA;_BsèBfæB,Bff(B 4B­?BßÏNB¬œYB¤ðNB¬TBÓÍLB`eTB²PBö(WBD dBªqeBVeB°r]B°r\B)\TB3³IBq½:B7‰,Bo’#BÚB…ë B…B‘í BžïBš™!B…ë(BÃõ6B¦›6B WABî|JB ×OBªñMBR¸WBNâcB¯fBé&cB\VB ‚ZBôýLBêQB3³EBVUB¸[B ×UB#Û\BZdNB¾TBNbOBBà@B\@BÅ 7B5Þ5BÙN.B\!BbB!0B¾BHaBÉvBX¹B„B´È$Bî| Bq½(BßO-Bê&Bžo'BPBƒ@B‰A BžoBBshýAÃõüAåÐøAÉvÛAÃõèA+‡ÎAmçËA°A?5¢AXA“œAd;A;ß•A—®AX9²AÙÎÏAžïØAð§ìAoúAåAƒÀÏAD‹ÅAË¡ÂA•ªAu“ºAJ ®AòÒ¼A33ÅAR¸ÊAƒÀÖA)\ëA{þAP BshBu“&B®Ç1BÛù.B¦›(BÑ¢B;_Bu“B#ÛýA/ÝçAî|éA%ÝAD‹ÓA33ÉA–CÚAÇK÷AP B¤pBsèB}¿B‹ìB¶óBð'B1B}¿Bã%!B;_&BÙN(Bð§/Bq½:Bé&;B¾FBR8FB{UB«]Bs¨¯Bo±B²Ý®B¦[¯Bç{ªBj¼¯Bî¼®Bš¨Bj¼§BÙŽ¦B^ú¦BÁ ¨Büi¡BHá BÅ šBšœBÝd¤B;Ÿ¢B°ò§B×££BòÒ£B!ðœBÄBJÌœB-ò–Bs¨’BîüŒBo‰BFv„B5^„B,ŠB‡ÖŠB¶óB¢…’B{TB–CB+‡ˆB‘m‡BªqBjxBêiB°rjB¸aB¢Å_BÏwiB‡fB“˜rB#ÛuBôý€BP„BJ |B¼tmBlB rBôýkB…ëuBsèqB ×vB´È|Bd»~B™„B}ÿ‰B;ßBV–BBžïB‡–¤B˜n£ByiœBéf–B`e’Bî<ŒB\†Bò‚B+G…B—‚Bsè„B?5…B馊B“ØB•B¾ß—B°r•Bç;“Bl“BÏ7ŽBÛy‹B+‡ˆB;ߎBɶ’B%ŽB —B´H–B!ð™ByiœB¾ßœB/]žB¬\¡BÁŠ¡B33šB¤0›B5ž”BlB;ŽB/‡BAƒB`å„Bï‹BD‹‹BBUBn’BB’B‹¬’B‹lŽBDKŒBÝ$…B¯‰Bw>‡Bò’‰BHaBüéBœÄ”BøÓ”BØšB?5™Bðç–BÇ‹B?õšBðç—B?õ‘BmçŽBÇ‹‡B¢Å†BDK†Bmç‡BɶBôýB.–B–B%Æ—B‡Ö™Bm–BX9˜B¸^”Bj’BWŽB‡‰Bɶ‚BÓÍ{B+‚BF¶‰BÇBÏwŠB7‰Bãå‘B…k˜B…šBø¢Bu¤B–ŸB'± Bq}BVœB¼t›BbЙBþT BœÄ¦B=J¥B)ܦBVΦBmg¤Bç» B®™B®“B¼ôŽB×£ˆB–‚B“„BøS~Bƒ€„Bü)‹BÛùB}¿—B^ºšBþ¢B㥦B¾Ÿ¤BåP£B`¥ªBî|«Bã%¥BXù§B;¥B€©BË¡¤B˜®¦BÍL¤BPO@u“Ð@= ¯@A‹l A'1 AÃõœ@ú~r@Å H@çû ¿î|ÀX9¼ÀºIäÀ//Áî|MÁòÒ‚Á¼t{Á—fÁ= 9ÁffÁ—¾ÀZd‡Àj¼´¾×£@'1x@VÖ@ßOé@Ù~@ÇKO@1 ¿¬:À—®ÀìQÁú~4Á´È\Á‰A|ÁPÁžïŠÁ žÁ^º‹Á¾Ÿ‡Á{XÁq=*Á¤pÁu“¬ÀøScÀòÒý¿Ý$F?V¿Å €?}?5?ìQ¸=ÃõÀþÔ´ÀòÒýÀ}?Á2ÁP Á;ß-Á®ÁßO!Áq=,ÁNb$Á‘íÁÙÁ¼tÀ ׃À+‡ÆÀ/ÝŒÀ'1ØÀ9´€ÀœÄÄÀB`ÀX9ÔÀjÔÀ…ëáÀX!Á¸#Á´È*Áã¥ïÀ®GåÀ®‹ÀÝ$ªÀVÀ¼tƒ¿°rØ?ˆ@øSÓ?/ݼVF@ —@J :@Z¤?o@¢E¾@bA¬2AyéjAøS†Aj¼–Aü©wA¬bA7‰5Ayé A“ A1PAbJAÃõdA!°ŒA#ÛŸAPºAÑ"ÃAé&ÚAVÚA¬óA—ýAL7ïAÑ"ÛAš™¿Aj¼ªAÁÊAü©mAÂ]A+%A ÿ@ «@1à@òÒí@ÓM(Aé&]AºIlA“Aƒ›A33¤AHá¿A…ÌAÓA}?ÛAHáÑAòÒ¸AÑ"žAZ‚AÑ"OA-²)Aš™í@\Ò@¶óm@Ûù®@?5š@´Èª@ßOm@J Ž@þÔAD‹"A°rLA‹lyAð§A`åŸAƒÀžAVºAÕx½A{ÔAÏ÷ÌA33ÒA²½AX9ÎAÕxÜA!°ÐA)\ÕAî|ºA‘í´Aw¾˜AƒÀŠA?5‹AJ vA˜n‘A/Ý€A—pAdAjdA9´bAázAb^AsAÝ$>Ad;3AJ TA²„Að§jAôý`A-ŽA²“A;ß‚A¦›RAÍÌ2AL7A˜nö@X9˜@00bDBw>8B7‰1BJ %B!°B`åBÛy BÏwBúþBã¥#B 0B14BøS=BÕxBB#[EBîüBBÕx>Bo’0B'±/BƒÀ&B=Š$BÑ¢)Bžo)BB`4Bh‘2B‡:BÙÎ4Bo8B;_EBd»FB{”DB#[9BÚ5Búþ)B7‰*B¦0B´H8BžïEBݤNByiVBš™YB¯QBYNBZdABABR¸4Bš™0BÝ$&B-2Bð§B‘m BþÔBš™B?µBÕx*BøS4B)\@BVMBBUB5ÞcB#[hBî|\Bb^BÛyQBƒ@WB#[PB¨FTB)\_BþThBé&hBÏwiB!°lB¬dBÓM]BÇËNBš™DBÓÍ9B ×+BD B‹lB¦BÃuB3³)B7 4BjbBu“`B–ÃgBP fB‰AqB“˜nB{”bBã¥YB®G_B¤ðfB+‡eBqBÙsB!°xBZäBV„B*‹BwþŽBÁÊ–BœD™BB  BÉv£B…ªB}?©B€¦B‹¬ŸB33™B”BÇ ŽBbЇBÖ‡BÑb‚BPƒBðç€B+‚B`å„BH¡‰B–ŽBW‘BÃõBF6“B…«ŽBHáŽB ÂBê”BœÄ˜BT#šB BœB‹,¢BÃ5¤Bðg¡B¡B¢B{T§B©B;ŸB^ú B¨šBX¹˜Bsè“B+GŽB9tˆB-r‡BmgB¼ôŠBúþBú¾ŒBÇ BÖBÉvŽB¾ŸŠBÀ‰BRø‚Bƒ€†B{TƒBuÓ…BÁJˆBö¨‹B®“B¾Ÿ‘BL÷—BÁ ”Bô½B W”B+GB=ÊB‹lˆBbPƒBÑ"wB%†sBçûxB¦›~Bªq†Bsh†B¬‰B®ˆBéf†B@„BN¢€B š…BüéBTc…B¨‚B7 {BåPwB¬jBw>qB‡–uB`ånBmçrBË!{Bš€B‹,ˆB‰ÁŒBl”B“˜˜Bº‰•Bš™˜B¬–Bï™B3ó—Bj¼™BÝdžBj¼£B!0¢B×c B B BÑ¢šBR¸”B‚ŽBÇ ‰BFöBw>wBZdkBq½tBºInB {BT£‚BÙ‰BV‘B¯“B¤ðšBZdBÕ¸œB¢ BòR¦B¦Û¨BߨBÉv«B!0¦BEªBƒ§B)ܬBºI¬B{Î@5^ AR¸AJ "Ab(A¬A}?½@sh¹@žï§@‡É?œÄ ¾œÄxÀÏ÷ƒÀ óÀTãÁR¸LÁPMÁ?5DÁJ ÁJ îÀ+‡~À9´È¿î|@…ë™@¤pÑ@¢EAÇK#A“à@㥷@#Û@Ãõ(¾+7À–CÇÀìQ ÁÅ >Á _Á¾Ÿ‚ÁmçgÁB`‰Á¬nÁ¨ÆeÁÏ÷5ÁªñÁ#ÛáÀo[À ¿¿åÐÒ?“@®?@}?¥@…ƒ@×£X@ƒÀJ>¦›<À Àj¼À“ÁÓMÖÀh‘ Á;ßûÀ®Á®GýÀßOÑÀš™¥ÀßO•ÀåÐÒ¿ÇK÷¿×£ÀÝ$ö¿þÔpÀ˜nÒ¿5^ŽÀ¬LÀü©‘À¢EŠÀî|“À{êÀ+×À33ßÀ¬ZÀÂÀ–C«¿j,ÀÕxi>9´È?ÓMŠ@Ñ"ß@ÙÎw@E@ö(¼@²ó@œÄ”@j¼˜@yéAÂAôýPA¨ÆeAåІAôý AZd­A ×’AœÄ‡AázjA33CAË¡UAtAÇKkAçû‰Ash¡Aî|·AþÔÎAåÐÎAu“êAF¶ðA¨FB,BÁÊþA/ÝêAÑAçû»AHá¢AôýŒA\„Aw¾MA//A%Au“"AF¶-AV\A¤p‰AøSA´È£A㥩A—¸AyéÓA“×Aš™ßAX9çAshØA;ßÅA㥫AZ‘A wA)\QAÇKAD‹A^ºå@øSÛ@é&a@°rH@Ñ"S@‹lÛ@Ãõ$A°rJA–CyAáz”A¶óA/©A®G¦A—½Aî|ÌAÛùÜAVÕAâAF¶ÍAö(ÕAshéAÙÎÖA;ßÝAD‹ÅAü©ÂA5^­AÏ÷¡Ao A¼t’A1AVAHá†A;ß}A)\qAÑ"sA‡A…„AåÐAPgANbRA!°tA/Ý’Ah‘‡AË¡€A= žA;ß§A33ŽA¸…AƒZA°r,AHá2AZA00ÓÍ BåPBHáñAoÞAôýÙAçû½Aã¥ÂA'1ÙAßOìA°r÷A¼tB'± Bo’B#[ Bš,B¦›-Bö¨!B¶sB°rBázBÇËBÍÌ B šBþÔ BêBÚB}¿Bj¼B².BÍÌ2Bîü-B¨Æ(BV&BBBÅ &Bq½#Bsh2Bé¦B.4Bo’)Báú Bü)B°òBZdBÍÌ,Bîü*Byé6B‘m6Bö(@BR8IB5^NB®ÇWB®ÇWBHaIB/ÝCBœD4Bô}/B ×%Bj¼B¶ó)B,3Bh‘•ó¿L7¹¿+‡>ÀHáÂÀbÁ¬6Á\,Áh‘eÁjnÁZdŒÁJ ›ÁÛù‡Á‡ÁÂKÁÓM$Á9´ÔÀ}?UÀ¶óÝ¿q=ê?1œ@ÉvÚ@¬€@‹l§@¾Ÿê?Zä¿Ý$FÀ˜nÖÀ ×ÿÀã¥Á QÁ9´dÁƒÀ\Áƒ‚ÁX9hÁö(>ÁÝ$ÁÅ ˜À‡ù¿w¾?+W@ £@…ëå@š™©@㥿@‘í¬@5^Ú@5^º@Å ð?ÍÌ̽5^Ú¿P“ÀR¸fÀ-ÒÀ¬¶ÀoÁNbÁ®+ÁÙ.Áã¥;ÁÃõÁTãÁff8Á°r Á-$Á…ãÀF¶ïÀ9´ŒÀ…[Àh‘ÀmçÀ…ë¥ÀVÀ…—ÀshQÀÉvnÀF¶À‘ítÀffö¿‘í,Àoc?¬L@\@!°’¿¸Å>9´H@'1>—ž¿¨Æ›?¥?%™@ÉvÎ@5^ú@Ï÷%AshWA ×%AÙ(A'1A5^A ×AçûKA%7A°rRAìQ€AÙ΋A'1¨A¶ó¡Aj»ATã¶AÛùÏA%äA¨ÆÙA?5ÏAçû¼A¦›¥Aü©ˆA1VA5AÃõAX9¨@+_@)\¿@d;Ÿ@‘í A-@AÏ÷kA)\”A°r«Aö(ºAË¡ÎA^ºÖA¢EÊAV×A˜n¼A‰A©A “AžïsAÅ fA /AyéA¾Ÿú@Ë¡É@j¼è@“ì@×£AF¶÷@!°Aš™;AffZAð§hAq=ˆA/ÝpA†AmçqA/ƒAX9–Aü©¢A¬A®¡AþÔ‹Au“‹AÝ$˜Ad;ˆAÙÎ’Aú~~A~A5^bA¾ŸjA%A|AP”A‘í‘Ah‘“A•{AÙƒAyA®G„A ×YAVQAAÉvÖ@+û@…#A7‰ AffÒ@òÒAÝ$0A¦›ø@®GÙ@ƒH@/ÝÄ?B`¥>Z À00²ïAPÚATãÙAºIÂA—ÂA‹l¤AªAôýÅAD‹ÕAåA/øAVBHáB¸žBô}!Bš™(Bö(B#ÛB¸ž BP B…ûA¦›B'±B7 B°òB— BÛùB?µBªq%B-+B²%B• B=ŠBìÑBD B¬œ$BåP3Bš™7BøSGB¯RBq½TB®GKBPBHaHBX¹BB¤ð9Bú~2BÕx*BƒB¸Bªq BÓMB²)Bö(&Bݤ/BåP/B‰Á9BF¶AB–CEB¦›MB%OB,BB¦›/B94$B¨FB¬Bð§ BJŒB´ÈïAƒÀéA)\ØA¤pÝA33õAX¹BBàBTã Bd»Bq=BB` BÓMBX9þAé&íA˜nìAš™æAd;ÈAVÄAw¾ÌA‘íÜAÅ äAbóAžïàAÖAÛùÃAÃõ®A‡”A®yAªñbA–C‡A…ëwAR¸‘A•šA‰A­AL7ÇAmçÙA`åôA B%†BºIòA˜nÖA!°ØA¦›ÀA‰AÆA\°AshŸA—›A'1…AÓM~AºIA¤A‘í¿Aw¾ÇA®ÙAåÐéAB`ÖAôýºAòÒ¦Ažï—AÛù‹A¶ó‹A®G–AœÄ²A9´¾AD‹ÍAu“åA-2BÏwB‰ABYB¢EB+úAþÔäAF¶×A+ÄAºI¬AV°A ×ÁA“¬A¸ŸA9´»A}?¿A°rÛA¬ãAôýùAªqBßÏ BX¹°B®Ç­B²¦B/¦BËažBºIBº ™B‰•Bb›BØ™B‚žBú>¡BžB\ÏBJÌ—BH!“Bò’•BFö’BÛy˜BÓB…ë–BJŒ•BuÓ•Bmç™Bœ•B%F˜Bª1‘B‘­ŒB`åŽBoÒ‹BF¶ŽBÙŽ‰BVΈBÃB W}ByiBÁJ~BB †BÑâ„B?µ…BÂ}BØ€BøÓwBö(mB)\sB%jBô}tBîüjB¨ÆoB¶skBƒ^BsèXB´È[BL7]B{”bBd;qBL7yBÝd‚BÙN‰By©ŽB3³•BJŒ”B5^›B\OœB¼t¢B“X¤B/ݪB)Ü­BøÓ«Bݤ¦B+G¤B¢ŸBX9™B€‘BƒBy)†B×£‚Bã%yB°òsB…ë}B‘-€Bwþ‡Búþ‹BîB¨Æ–B'q”B¬\˜BẘB'ñœB°òŸBZd¤B¨B,ªBuÓ­BB ©Byé«BZ¤¨Bªñ®BÃõ¬BÇ˯B¸ž±BHa«Bo’ªBÏw£B)¢B¢BÁÊ—B@BššBd»B/œB9´˜B•˜B‡–’BuÓBwþ“BÙŽBú~“BZdBé&”B‘m’Bî”B;šBšÙ•Bç;–BoÒŽBüé‹B94‹B—‰BÉöŒBjü†BoÒ…B^º€B-²tB¯zB¶soBî|zBçûsB'1tBåPjBnBmçiBj¼t³¿ƒà?¤p-@ã¥Ë@ÇK÷@®Aôý6AÝ$hA^º3AD‹:AœÄ ANb AÓMAßO?A–C5AR¸@A—pA?5A+©A¤p¨AÓMÆA'1ÇA‰AãAHáïA{åAÁÊÎA㥶A¤pŸAƒÀ„Au“NA!°.A?5ú@^º‰@!°R@ü©Ù@ázÄ@ƒÀAÛùPAé&mAJ ”A¬¨AÓM³AyéÍAÙÑAffÎAÅ ÒA½AÉv©AË¡’A5^rAZdGAu“$A+÷@ÙÎ@ªñr@yé²@®GÉ@^ºõ@/ÝÀ@¬Â@B`A—@Aî|aAX‡AR¸zAƒ”A••Ad;¨Ah‘¯Aš™¶Au“¥A+±AºI™Aôý—A…§A›A9´©A¼tA×£šAR¸†A/…A‘í|A sAÇK’A…‡AßOŠAX9^AçûgA-²[A¢ExAÂOAÃõLAshAìQÜ@AÑ"GAV*AázAìQ4A%GAã¥Aö(AÅ ¤@Tã-@ßO@‡?00?µB5^ïA¶óòA#ÛÕAj¼ÒA¼AZdÅAD‹ßANbîAþÔþAåPB= BX9B®%B!°0B²1B…k&BYBj¼B!°B¢EBã¥B¬ BD‹BÁÊ BœDBœDBÅ B‡)Bü©/B¯+B/)BþÔ&BÅ B}?)B–C*B^º7B‰ÁBBÅ OB¤ðXBu“^BVB= \B“QB!°LBƒBBªq9B‡–0BF¶#B¶sB×#B“!B¤ð.B¦›+Bw¾9B¾9BÙDByiLBö¨KB‘íUB,XB JBd»CBú~4B¯0Bªñ$BBBÚ'B2B¼ô:BÙÎtBé¦pBBhBq½^BÙÎ`B YBÁJcB1ˆ[B‹l`BòR]B„PB“LB¶sPB/ÝPB,TBX9bB kB7 uBuSB Z†B‹lB3³ŽBn•Bdû”BT#œBò›BD‹ B'1¤Bqý¥BÛ¹ Bfæ›B¬\–By)Bƒ@‡BVŽ…BœÄ{BmgxBBàiB˜ndBÍLmB«qBÛ¹€B9t‚B¦›†BDËŒB¾ß‰B®GŽB´HŽB‡Ö’Bü)—BVŽšBVžB—¡Bò’¤B¸Þ Bw~¡BXŸB˜¥Byi£Bã%£Bð'¦BË!ŸB­B'1—B3ó”BßÏB-ò‹Bãe‘Bã%B#[BîPÀš™9¿î|_¿Å „Àq=²Àü©Áú~Á?5@Á;ßIÁ{‚Ááz…ÁžïŠÁòÒcÁÁÊ;Á`å ÁºI°Àjü¿ÙÎW?ƒÀz@•ë@“ Ab¼@Ü@u“p@®Gá=–C+À9´ÌÀ®G Áo5Áã¥iÁé&}Á“lÁ}?‰Áé&cÁ²GÁ= Áu“ÔÀÙ¦Àq=Ú¿\?X@= ›@F¶;@é&i@ìQÈ?þÔø?¤p=?F¶3ÀåÐzÀmç«ÀNbØÀÉv’ÀZÈÀ¤p™À}?­À…ÛÀj¼àÀw¾çÀªñþÀáz°À5^¶À+‡ÆÀœÄ`À!°¦À1 ÀXIÀ ÿ¿}?Àð§^À{nÀøSÛÀ²ïÀÑ"óÀÝ$’À-²‘Àu“„ÀF¶ƒÀj¼¤¿ff澉AH@ú~¾@‰Aˆ@Zô?V~@Ï÷Ã@?5V@–C@\¶@Ë¡µ@Õx A?5$AV-AHáFAƒÀ‡Aö(hA%_AÓMDAB`+AÓMDAX9nA¾Ÿ`AX9zAÕx•A—›Aff´AÓM°AÅ ÄA+µAVÃA;ßÝA'1ÓAœÄÐAÅ ÃA“­A¦›AçûkA´ÈNAXAázÌ@‘í”@¶@= ‹@ÁÊÝ@Ûù*AþÔHA¼tAƒ‘A)\“A1ªAj¶A…ë²A= ¼AìQ«AP–AßOuA®G9AÁÊ!AHáâ@ƒÀž@o[@¬Œ?;ßO@= W@Nbˆ@\â?ÃõP@ö(Ð@ºIð@/Ý*APAþÔ>A¸gAF¶[A¢E~ATãA–C›AÏ÷™Að§©AƒÀšA‡¦Ažï­AÏ÷•AÉvAçû‚A1‚Aã¥UAjHAbXAHá8AœÄbA¬PA×£DAçû;A¨ÆMA;ßaAòÒuA˜nNAÉvFA  A•Ã@ ó@¼t'A‡A¶óÙ@‰A$ATã;A¨ÆAÉvAþÔ¼@¬’@î|w@‰AP@00'1 BœÄBNâBHáêA5^éA¼tÊA;ßÒA¬íA`åûA+‡B5^ B¶sBh‘B WB/]*B¾,B®GBD B{”Bö( B?µB°rB°rBƒBBºÉ#Bçû$Bú~'B°r7Bð'8B-23B«-B¯'Bô}BÙN)B3³%BD 4B8BÇKCBôýNBåPWBSBü©[BsèUB²VByéKBfæBBîü7BX¹+BÕxB)\!BþT/B`å8BþÔ4B=ŠABÓM=Bo’EB´HNB´HOBÓMZBìÑWB—IBPBB+4Bƒ0B\(Bü©BþÔ)Bî|6Bd»>BFBÛyPBÓMQB„OBìÑBBb>B7‰5B3³+B7‰BªqB–à BY B¬œBw¾BòÒ'BåÐ-Bd;7BÂBBfæ>Bu7BþÔAB‰ÁGB×£;BL·5BÂ(Bo'B˜nBßOB+ Bö(#BÝ$*Bð'(B¾5BÂ4BCB–CBBö¨4Bü)+Bç{'B B¦›BX9Bô} B33BJ ÿAºIB\B•B#ÛBsè"B²B¶sB„BßOBÙÎ B°r B×£BÇKíAÑ"åAÕxðAòÒÿA¦›B;ß B#ÛB¤pB9´óA‡âANbÈAL7³A7‰£AffªA¨ÆŸA´AòÒÀAªñÑATãÝAžïðAHáBj<B5^BTcBÏ÷ðA/ÝûAffäAš™âA\ÏAL7½A¤p¸A¶ó£AV¡A×£½A^ºÊA#ÛåA1îA¶óüAw¾BL7èAshÙAøSÇAX9ÐAƒÀ»A7‰¼AÛù·AD‹ÓAš™ÝAºIðA;ßBîüB—BÏw BƒÀ B®ÇB7‰ Bô}BPúAþÔéA33ÑAâAÃõðAmçÖAžïÒA ïAu“õA?µB1ˆB‹lBhB´H B-ªB/¦BNâžBÏ·œBí”B/Ý“B ’B¬ŽBú~”B.“Bº‰˜B!pšB¤°šB}ÿ™Bö(–B94“BuÓ–BÃ5’Bçû–B ÂB¼t‘B¼´ŽBhB ‘B¨†ŒB¶sŒBÃõ„Bö(ƒB)\‚BïB¾ß†B‚B练BP}B¾yBÑâ€BL·~B W†B?µ„B™…BÛù~BVvBq=nBœÄcBq½fB¬œ\Bb`B!0[BhcBF6\BmgLBj¼HBBàOB`åRBÙÎWB+‡eBblB¯wB¨FƒB¨FˆB˜îB…ëŽB.•Bm'•BdûœBšÙœB×#£B!p¨B=Š¥B1 B%†šBVŽ•Bç;ŽB+ˆB!ð„BœD{BshxBVŽlBoiB#ÛpBq½rB Z€BJ „B‘m‡BîÁ)\uÁ Á˜n\ÁÝ$6ÁL7Á…³ÀÙÎOÀ?5@­@33 AÝ$AÙ®@+‡ª@Ñ"Ë?¬|¿TãmÀòÒåÀyéÁX9@Á33oÁ•ƒÁ/Ý~Á •ÁìQ‚Á\zÁq=HÁ\$Áð§úÀ-‚À^º Àé&1?´ÈF@ázô?Há"@¨Æ @ázD@þÔ?/ÝDÀ דÀ^ºÁÀ!°ÁðÀžï Á®óÀòÒùÀR¸ÁåÐÁ= ×ÀffÊÀ}?EÀ5^"À;ßgÀÇK÷¿Ï÷{À‡ÀV^Àq=ÀÕx…ÀÑ"›ÀL7¡À®ÿÀmçÿÀ¾ŸúÀyé’ÀB`eÀ ×;À¸]Àoƒ=°r?X9l@5^Î@ßOu@ƒ@V¢@¨Æë@åО@Ý$–@¤pA!°ö@ü©5A¤pYA¾ŸxAÁÊ–A¸¬AZAB`ƒAshkAš™CA ×MAq=fA²mA+€Aü©—A¯AÝ$ÁA1ÃAshÜA}?ÏAÁÊåAË¡ûAPôA‡äA;ßÉA¦›²A^ºšA¸A¨ÆqA/5AbAÙÎÓ@î|û@¨Æ×@ A¼tUA9´hAú~A-²—AB`žA®G¼A/ÝÉAºIÏAÂÓAázÈA ×±AþÔ“AnAÏ÷GAã¥!A´Èâ@%µ@´È6@`å¤@ôýˆ@ ‹@¨Æ#@¦›t@ßOå@'1Aö(HA}?wAÏ÷uA1–AøSžA+²Au“¸AÁÊÈAÏ÷ÁAÔAœÄÉA¶óßA‡ðA!°ÖAyéÑA{¶A‡¯AÓM–Aú~†Ash‡AøSoA㥇AÓMnA¦›ZA%MA%gA= iA¾ŸƒAJ jAX}Aö(FA®5Aq=ZAÃõ†A1vA^ºcAžïAÉvœA-‹AÏ÷mAÕxAA—AffAÎ@00é&ÓA²ÂAZ½ANb¯AßO³Aw¾—Au“žA-¹A%ËAÃõÐA5^ÛAHáÛA…ë÷AÖB¸ž B1 B7‰ýA¬õAæA—éA#ÛÜAƒ÷Ah‘õA¬ýA–ÃB°òB®ÇBoBã¥(BR8'B#[BøÓBªqB¯Bƒ@B;_BœD"B!0'B%3BF¶9B^:EB‘mEBøSMB`åFBÇËBB¶ó?BƒÀ5Bçû.BòR B–CB¶óBVŽ(B€(B°r-B¯7BÕø2B.8B;B{8Bã%?B/];BÏw,B‰A#B ×B?µ BÁJBVúA«BPB¶sB}? B+BƒÀ0Bð§6Bݤ*Bb*B ×#BBR8B“Bu“BoüABR8 B)\BP BÙ BÍL,B…k%B‡–BJŒ$B¨F%Bš™BBàBZä BþT BªñþAoòAZäAÛyB%†BÖB)\BffB…,B'±.B¶ó$B5ÞB¶óB\B33B®GBÛùÿA+‡ìAºIóA5ÞB¨FBô}B¤pBVŽBö(B5Þ BÖB¶óBh‘ñA¸öA×£ïAVÒA!°ÐA= ÜAžïñA˜n÷AÖB/ÝýAj¼øAú~äA¬ÅAR¸·AP¡Ad;–A˜nA‰A˜AÇK²Aff¹A ÍAmçÕA)\ëAw¾BÙ BÏwB}¿ Bj¼ùA…ëB= êAj¼äAjËAB`¹Aú~¨ANb—AÏ÷A!°­AåкAƒÖA–C×AøSêA!°ôAoÚAºIÉA¦›»AìQ¬AžïšA5^žAV§A˜nÃAÅ ÖAJ ãAôýøAVŽ BžoBmçB5ÞBVŽ B¾B-íAbáAPÉAj²AÛù¼A{ÇAL7¬A¦A‘íÂAð§ÁA+ÙAÛùÕA®GðAÕxðAYBRx¤BÏ·ŸBø“˜B=Š”B1HŽBX¹ŒB˜î‰BZ$†B\ŒB‰ÁŒBé&“Bë”Bì‘”Bl•B¼ôB‘­“B)œ•B„ŽBßOBªqŠB¶³‹Bº‰ŠB!ðˆB‰ŽB)\ˆB®‰BW‚BÛ¹BfæƒBõƒBu‡B'±BÖBÚyB¸žxB#ÛBõ€B'1ˆBu“†BD‹‰B}?„B'q‚B•~B‹lrB®GsBÉöeBVjB‰ÁaBÙNcBh‘XB\KBÙNLB WB;_TBš™_B¼ôkBwB¨ÆB°²‡B‰AŽBR8•B¸Þ’BXù˜Báú•B/œBq½™Bf& BW¦BB¤Bsh BÇ‹B^úšB%Æ”BÓB‰Bú~B1ˆ}Bé¦nByéeB‹ìkB®ÇjBìQxB!°B®…BuÓŒB94‰B'1ŒBƒ@ŽB‹ì“Bø”B^ú—BõBòÒŸBP  Bº‰šB šB9ô•Bö(œB,—BZä›B.BÁJ˜BhјBÕø‘B9ô’B{”ŒBö(‡B}¿ŠBY…BX9‡Bðg‚BåP|BžotB‘íiBÖbB‹ìlB;ßfBƒÀtBîümBÇËvB‡xB¦[€BÛ¹„B¬B…ë„B5Þ}BìÑqB‰ÁnBð§dBbeBƒZBøSXBœÄNB¶óABÏwHBj¼>B)\@B×#5B¼t6B´È/BTã7BP 4Bd;3BÇË=B?µ7BÅ DB‰ÁDB?µKB!0RBåÐCB•9B5BÓÍ6B;_2Bð§8Bî|9BݤEBBàHB¦›TBÍÌ]B´È_B?µkBÅ oB‹ì}BÑ"„BÃuŠBŠB¯ˆBRø‚BV€BR¸sBBkBáú]BìÑYBã%PBVJBÙNCB'±@B¯NBÂUBÑ"cBÍÌhB?5oBö(wBYvB)\BåPxB1ˆ}B¬…B5‰B¬Ü‡BÉöˆBF6Báú‘B×ã•BÁÊ–B žBÛù B¦›¤@Háò@…Ï@+‡Aªñê@é&Õ@®W@¬@q=@?5®¿X9À•ËÀ#ÛùÀáz4Ád;EÁ–CÁ´È€ÁX{ÁjFÁ®Á^ºÍÀ¤p‰Àw¾?¿V@ºI„@d;ß@HáA}?@5^r@Év¾=ƒÀ/•ÀyéÁ-(Á²WÁ‰A€Á¶ó‘ÁÛù‹ÁmçœÁü©…Á{‚ÁôýJÁ"ÁÝ$Áö(œÀÙNÀƒÀʾáz@ÁÊ¡?1@œÄ ?Ö?þÔX¿ßO…Àd;³ÀÛùîÀJ Á}?ùÀ¢E ÁPÁw¾Á?5&Á¬Á×£Á‘íøÀ= ›À²Àj¤ÀPgÀ¦›ÈÀË¡]Àw¾»À…ëÀ'1 ÀÂÉÀ33ÃÀ'1ÁœÄÁHáÁòÒ¹À¢EºÀ{†À¼t‹ÀÇKÇ¿–C+¿ü©@b @î|?@+‡?˜nj@yé¶@—>@!°@åÐÊ@5^Ú@œÄ(Aj¼JAPkA5^‰AX¢AÁʆAZd}Aã¥IATã3A)\)APEAË¡IA‘ínAÙˆA= ¡Ah‘¹AÁʵAÉvÎA‹lÔAB`îAã¥ôAºIàAÂ×AV»AÅ ¥ANbŒAÙÎeA•WAj¼Ajô@/©@Zdë@ÁÊÉ@AÇKQAff\A‹A®GšA¢E¤A!°¿A'1ÏA‰AÌAÔAh‘¾A}?¤AVŒAáz^A^ºAA`åAð§æ@Í̸@þÔ@@ìQ˜@ ׇ@åÐ’@…ëQ@mçƒ@?5ú@¾ŸA/QAL7wA°rxAåЕA¦›™AZd°AÅ ³AòÒÃAçû¹AçûÆA#Û¹A¼tÈA-²ÔAÕxºA¼tÈAw¾°A´È¨Ash‘AL7„A¨Æ„Aã¥iA;ߊAš™wA˜nrAð§^AYAÁÊaAF¶}AVOAš™cAºI,AF¶AZd5AÓMnAú~TA+OAáz…Ash‹A+‡€A?5ZA®G)A/ÝA‘íü@Í̘@00ÇKB1ˆ B5ÞBÃõýAƒ÷AòÒØAßOÓA¶óáAçûûA˜nõAX9B+þAq= BF¶ Bð'BôýB)ÜBd;BjüA•úAÑ"øA¨ÆB=Š BáúBšBåÐ%Bfæ'Bb-B,;BøS7Bü©,Búþ"BjB°rBúþB•BBF6&B¸ž,B®Ç;B‹ìFB¶sHBÙOBZHBuFBã¥BBßÏ;B…ë8Byi*Bš™Bq=BË¡,Bmg3B´È.BHa8B„2BÖ8Búþ@Bð'@BL·HBÁÊEBÓÍ6BË!.B-²"BøÓBü)B¢EBfæB×£)B„,B«3BøÓ>BÃõAB+‡BBé&4B²4B1ˆ)B5^!BªñBjB¦BbBÁÊB—BøS!B`e+Bƒ8B'±@B´È6BÃu3B5ÞABé¦@B‡3B,9B+/Bü©/BºI$B´H!B/]B‹ì9B#Û'B= Bö¨BË!"Bo+B2BìQ4B^º5B= +B= *BË!B\BBBsè B¶óB“ôAd;óA%B BîüBÍLB‘mBáúB;_BbùA;ßèA?5ÐAÓM¹A;ß¿AìQµA•ÄA´ÈÃAÅ ÔATãàAœÄåA94BBà B'1B‡BPîAòÒüAB`ðAã¥õA¬ìANbÙA;ß×AffÇA5^ÊAèAÑ"÷AD‹ B¨FBhBáú&B}? B`åBshB+‡þA-çAÂàA‡ÛAªñ÷AL7õA¾ŸB  BœÄBî|B94&B1ˆ%B W BªqB×£BžoBö(ûAVâAffõAÚB¬òAL7íA®ÇB„B—BD BBd»B‘í(B×£¢Bw>ŸBÃõ—B˜®”B B9tŽBÅŒB†B`eŠBòÒ‰BuBö¨B–ÃBmçBw¾BoBÇ BVމBË¡‹BË¡…BšÙ†Bô=…B´ˆƒB‡V‡B\OB‚B94vB-2sB94uBtBö(zB/qB^ºtBB`iBö¨fB#[qB¶ómB“˜xByémB¼tpBR¸fBÛyfBåP`BçûTBÛùWBYJB}?RB‡RBbNBR¸HB„:BÛy9Bw¾>B–CABÃuFBôýSBúþ]BºÉiB#[vBÕ¸BƒÀˆBݤ‰B?uB¶3ŽB'q•B?5”BÏ·™BR¸žBL÷œB ˜Bf&“BB7ɈBZdB²|BØlB¢EfBåÐZB«UBßÏ\B\[BÙÎiBƒ@uBÛùzBÏ·„B…+B.ƒB?µ„B5ŠB—ŒBº B “BJŒ–BÁ ™BuS•Bì–B?5“BuÓ˜Bb˜BÉ6”BN¢”BB ŽBŽB^:‰BËá„B;ß}BjB®Ç?BÉv;B/ÝEB¢E@BmçEBݤ?Bü)ABNb@BÚ;Bü)FBÇK=BÙÎJB«IBÙJBœÄGB‡–8Bé¦2Bj¼6B5^0BTã-BºI9BôýÀžïŸÀZÁ-²Á ×MÁ…ëoÁìQŠÁF¶ŽÁ‰A Á33ŸÁmç™ÁXwÁøSIÁ(ÁHáÚÀË¡ÀßOÀB`Õ?jœ?Há:@d;ÿ?X@R¸Ž¿!°’ÀžïçÀu“ Á'16Áö(&ÁÃõJÁ¶óEÁw¾OÁ–CGÁF¶1Á ÁPÁ)\›À®?Àú~žÀªñŠÀÛùîÀb¤À33ëÀ{âÀVÁÓMêÀshõÀ“ÁXÁq=Á‘íÀºITÀHáÚ¿‰AXÀ…k¿°r(¿-²Ý?/U@w¾=TãE¿b8@Tãe@Év¾=Â5?h‘@{Ò@“$A²GAòÒmA–C’A…™AßOyA^ºaA-8A…ë A˜nA'1*A-²1AdAd;‰Au“¡AF¶¿Aü©ÂA…ÙAƒÑAøSàA…ñA¶óßA+ÓA5^¹AÏ÷¡A‰AŽAü©mAXoAÝ$2AªñAw¾ã@?5AÏ÷A}?IAºI|A}?ƒAö(˜A%ŸAmçªA®GÇAffÜAu“àAªñ÷A!°êAJ ÚAü©ºAþÔAb„Aš™WAÍÌ,A!°A;ß¿@“È@ìQx@j¤@…@ú~Þ@ú~AœÄRAö(~AZd›AZdœAd;µA‘í¸AÍÌÊAoÖA×£ÛA ÑAÓMÒA{»A;ßÃAB`ßA—ÑAJ ×A°rÁATãÄA-¯Açû¨Aú~žA/ŠA…—AÛù…A= kAP?A®G5A´ÈTA‹l„A`ånAÇK‚A/ÝVAÁÊAA²iA¢EAB`Aã¥}AÁÊšA¾ŸŸA—‹A×£rA)\CA‘íAF¶ AË¡½@00¸ÕAú~ÎA´ÈÛAázÌAshÕAªñ¸A+ºA‹lÙAmçÞA)\ÛA´ÈÖAÕxÌAu“äAJ áA°r÷AHáóAZdÔAÓMÓAVÍANbÚAü©ÙAé&õAVûA ‚BÁJBÅ BþÔ$BßÏ%BÖ1B…ë.BÑ"#BÛyB‘íBBà BBàB1ˆ B¬ Bq½BBB¶s$B¤p1BÛy6B ×DB×£GBw¾IBPLBúþEB?5BB;ß3BTã-B‰Á2Bã%AB²?B‰Á8BÛy?B{3B«0B?58B330Bçû5Bš™,B-2B/B®B°rôA'1ôAPÜA#ÛÚA–CúAšB¶óB‘í B¤ð)BJŒ1B¶s(B×#)Bh‘B=ŠB33Bð'BTc Bj<B#[B‹ìB°rBÃuBåÐ&B^:+BçûB!0B#[#BX¹B9´BZdBþTBHaBƒBZä Bu“ B-2!B°r!B#Û$B–C*B{”.B,“B¤ð—B¶ó•BB ›Bsh—BkœB¬\™BøSŸBB B‡–˜B¦[˜Bß‘Bì’BB-‰B/ÝŒBî‹B%ÆŽB¢ÅŒB¦›ˆBo’‡B«€BZBÃ5†Bs¨‚B W†B@‚B߆BuSƒB¤0„BÏ·†Bö¨‚B?µ‚BwB´HmB/ÝiB/]fBÍLoB‹lhBjB ×cB¦›YB?µ^BUB‹ì[BªqOBÝ$OB-²AB WEB¶ó=BHa9Bd;@B-Tã•?D‹ ÀÉv†ÀHáz¿–CË¿j¤À¬jÀj¼t¿PG@þÔ¤@¼tA ×'Aáz`A×£`A¤p%AÕxAÙο@Ñ"—@ÃõP@ƒÀ²@Háê@ìQAœÄXA-†A33£AR¸²A33ÑAVÖAF¶ôAš™ðA´ÈåAÍÌÊAªñ°A™AyéˆA¢EZA/YAžï1AªñAu“AòÒ'ABA…ësAX9‰A/“A®¨A¼t±A`åÇAB`ãA¨Æ÷AÂÿA‘íBd;BƒøAw¾ÝA¶óÈA ¬A/“AË¡wA¢E^AÁÊ#AÍÌ,A‘íA¢EAAòÒ=A ×qA×£A^ºžA¦›¹A¦›¹A“ÐAƒÔAázâA…ØAçûÕA\ÆAq=ÉAªñ¯Aáz·A{ÍAZÏAçûÐAF¶ÄA¾ŸÎA‹l»AÍ̺A…ë¬A+£Aw¾¯A‘í£A+šAd;‡A%qA\dAHá‡AZzAV„APcAœÄXAJ ƒAB`“AìQzAÙ΂AZžAú~’Aü©AZRA-²%AÍÌØ@åЮ@ÁÊÑ?0033aA?5fA…ë€A‡yAÕx–A#ÛƒAé&}AZd—A²A„Aö(ŠAã¥{A˜nA‹AÛù¨A ­AXA5^•A Aw¾‘A‘AÙάAV±AºI¶A+‡ÓA…æAË¡üAË!Bƒ B% B¬øA…ëóAçûßAshÝAÙÎíA‘íÝAçûêA5^êAVúAVŽ B…ëB-²Bw>%B‡)B`e(BÃõ,B%†(B;_*BåÐB¤ðBåÐBºI#BòÒ*BTc B•!Bj<BfæBmgBshB5ÞB…ëñA®ÛAÑ"ÃATã´A\œAË¡›Aã¥}A‰AvA°r•AÓM©A'1ÂAÙÖAåÐíA¨ÆÿA–CBš™B‰AB–CBq=þA¬õAœÄáAö(ÑAìQÍA®GÓAçûÐAÁÊéAÕxøAÃõBR¸äA¸ØA‡åA/×AÝ$¼A¦›¾AZd¼Ad;ÃAd;ÅAÇKµAÙδA‹lÜA/ÝÔAB`åAshëAL7úAHá B?µB¾B/BçûB5^B¯BVŽ BÅ B5^BÖB%†"B3³*B $BìÑ BÙNBd»Bd»B¦›òA“éAVÌA{ÔAR¸ßAyéËA‘íÝAPíA)\BœÄBj¼B)\#BÝ$%BºÉ"B¼tB•Bƒ BžïþAÙNBNböAZdB…ëðAÃõýAF¶æA—÷A94B33Bã%B‘mB/Ý Bj¼B¤pB5Þ B¸ BÑ"ûA•öA®GÚA+×A}?íA{ìA+‡üAßOóATãïA\ñAìQëAZdÔA ÍAHáÃAJ ÈAçûÆAÁÊÓAB`îAƒÀBúþB= Bݤ$BÅ B)\)BÉvBªñBázBbñA;ßÝAVÀA33³AÇKÂA…ë¼A¼tŸANbžAj´AÝ$A´ÈªAßO“AçûŸAžï–A+‡˜A7É”BþT•B!°ŽB¨BbPˆBhÑ‚BHáyBVŽxBH!‚Búþ}BÖ‚B­B ‚|B}?rBsB?µfB!0`BPZBÉöcB+fB¶soBé&tBB`}BÁ…B˜®…B‹l‹B3ó‡B5^„B¸‡BuÓ‚BøSBÑ"pB«iBÏwZB¾ŸQB²PBPNB%†]B¯[BÂcB7‰`B¤ðiBÑ"nBsèfB-²oBZdgBìÑrBºÉkB¬mB¤pfB-²WB„XBÅ ]BP VBBàVBÛù\Bƒ@aB®GpB+tBåBmg„B/]~BÁƒBoƒBDK†B“‰B7IŒBUŽBÅ ‘BL7BêŒBÕø‰B=J‰B/ƒB¬œ{BX¹qB?µdBshXBu“NBô}YBö¨TBZä`BPjBBxB`å‚BFö…B²B馌BÁŠBÙN‘By)˜B‰A—BòÒ•B²›B¦Û–BÃõšBwþ˜BמBL·¡Bš¤Bø“¤BffŸBöèžBÇ‹˜B)œšBsè™BU•Bsè˜B{”—B¦ÛœBfæ›BòÒ˜B¦›˜Bì’B¬’BÙN™BD‹”Bƒ€˜B1”B‘-–BZ$B¬ŽB%ÆBm‰BºÉ‡BÚ€BþÔ|BR8tB…tBhBêzBÖ€B)Ü€BÉvyBÃu‚BÛù{BË¡BôýrBö(oBÛycB_B´ÈSB‘íQB²MBô}MBj¼SB=ŠRBÍÌ]B´ÈaB94WBôýKBð§FBìQOB#ÛJBZB…_BHafB šqB#[uB¬‚Bb†BjBª1BÓ–BÛ¹—B)ŸBL7¡BRøœB˜®—BÙBw¾ŠBœÄƒB²yB+‡zB¦qB1ˆsBÇËkB7 lB#ÛtB‡B‰ƒB¾_…B¬œ…Büi‰BÕx„B‘í„B#ƒBHa‰B šŒB{ÔŒB Z‘B¶³•Bãe™Bº –B¬—Bï”B/ÝšBB ˜B!°’?òÒ@‡­@ÕxAÍÌA5^2A¨ÆA/Ýä@\š@òÒí?®§¿Ë¡™À5^îÀ/#Á¢E<ÁX9XÁøSYÁJ $Á/ Á–C«ÀÃõ Àî|¿¿Áʱ?ÃõH?Zd#@oK@ÍÌŒ@Tã¥?)\O¿%qÀR¸šÀw¾ŸÀœÄèÀçûåÀ7‰ÁÍÌHÁÛù~Áw¾‚Á¼tœÁJ ¡ÁázÁÑ"…Á/iÁ}?3Á‡Á®G¥À¨Æ;ÀZdû>®‡?œÄŒ@+‡n@/5@°r¨¾¬$ÀÍÌÈÀ9´ôÀö(4ÁL7AÁÛùjÁÍÌÁq=‰Á“zÁ+‡xÁ‘íBÁq=.Á9´ìÀbàÀ¨Æ)Á%=Á9´^Á+‡>Á¨ÆgÁÙÎAÁmçCÁ¶óÁúÀ²Áé&åÀ+‡šÀ¶ó%Àçû©>œÄà¾ÉvVÀXÉ¿¼t[ÀƒÀ À'1è¿V±À= ãÀ‡À¼t“ÀË¡ùÀË¡ÉÀ-bÀåÐâ¾ã¥#@L7É@ßOõ@ú~2AffA¶ó½@¢E¢@jœ?˜n’?…ëѾj @Vž@w¾ß@yé(A¼tQA/AÙšAB`´A´ÈÅAu“×AF¶ÎAºAÕx£AÙŒAyéfA!°^A)\+Aáz&A¬A ÷@åÐÆ@˜nAÛù8AÉvjA¬„AôýƒAøS”A#Û•A^º®Aö(ÃA˜nÛAã¥ìAÕxþAbB1B-²éA®ÛAbÀAX9©Aú~ŒAVxA¦›HA\2Amç AÙAÉvAbRAbzAÝ$—AL7ŸAj¼½A®ÁA5^×AB`ÞAÁÊêAmçÙA¾ŸÐAmç¶A¹AL7šA;ß’ANb°AÇK®A ÅAjºAé&ËA•¾A+‡¼A®­A¸¡A²¨Ayé“AjƒAœÄZAVGAh‘=Aq=dA®GSA?5dAXKA˜nPAË¡‚A{AÁÊcAooAázA ׃AìQhAìQ4A7‰ A²«@?5>@Nb0¿00/Í?)\w@Ñ"ß@ û@Z:A…ë+A˜n4A33YAÝ$8A¤p'AªñANbè@ð§A9´Ü@33A¨Æ!AZä@î|AœÄØ@“A+'AoaA•yA¶óiA¬ŽAªñ™A㥶A¤p»AÝ$¾A5^ºAçûžA×£¢A-šA…¥A¸²A²—A•˜AP‰A´È„A¶óAþÔ¨Aé&»A•ÒA êA…ãA}?ýAÃõõA?µBÇËBmgBßÏBZdB Bé&BßOûA‹lÝAçûÍA¬¼AXžAÏ÷’AVmA-LAøSA?5A®Ë@jÜ@¨Æc@w¾@L7@+‡Æ@øSA'18AÅ pA¬“A‡•Aü©¯A#ÛµAázÑAé&ÓA7‰ËAÑ"¿AÛù¥A×£•A/’A!°A-™AÁʘAÅ “A°rnAºIbAü©iAòÒAAX9AÉvAÛù.A˜n8A¢EPA7‰)AçûGAV]A!°XA„A¤pyA דAR¸ŸAh‘¼A+ÀA‘í·A¤pÓA‡ÍA%ßAÝAî|ðAd;úA-BÓÍB‡–B#ÛB7‰B÷AB`äA/ÎAôý¯A5^¦A¾Ÿ‹Ash™AJ ±Ash£Aü©¸A‡ÈA—äAJ ùAL7B94BÓÍBË!BF6 BÍÌB W B7‰ BbB¬ôA ñAìQÕA33ÙAçûÁA²ÌA²ÍAÂÜAVúANbóAÅ éANâB°rûAú~üAþAôýåA‹lçAÍÌÌAÏ÷ÄAJ ÕA= ÏATãÒAZÃAj´A¬AøS®A ’A+ŸA^ºA+‡¡AÓM®A\ÃA“ÚAü©ÞA\ûA„BBd»B²BÃõùAj¼ïAøSÒAË¡¹A㥪A¤pA°r‘A°r˜AJ ƒAÏ÷]AJ bA•gA ×-A‡AAƒÀAd;A1È@F¶£@ú>”B㥕B}?‘BL7BòB¬œ†Bj|B+Büi‡B!p„BD ‰B¦[†BÛyŠB¯†Bå‡Bö¨Bmg{BÁJvBøS{B^ºyBÝ$€BNâ‚B?5†BžoB*B=J—BÙŽ“BA‘Bô=—B˜®“BÇ‹‘Bƒ‰BRø‚BVxB`åuBP uBªñtBØ€BNâ‚BŠBP ŒB;ߌBm'’BoRBÛy•Bm§”BP—B¨Æ™Béæ•BhQ“BéæByé’Bô}‘BZä‹BCŒB׊BÙN‰BüiB´HBmç•B…˜BÝ$“BÑ"•BFöB¸^’B’B°ò“B‹ì–Bé&BTã›B`å›B94BÏ7›Bôý–Bs¨BZ¤ŒB馅ByéBåPyBuBXtB |Bj‚BB ‰Bü©BÅ`”BÏw›B‡VByi›B¾ß›B!°£B^:¤BÑâ BZ$¥B¦ŸB«£BbПB¦[£BÍÌ¢B˜.­Bç;ªBݤ¨B‘í¨B/¤B¼t¨Bç»§BìQ¡B‘í£BoR£Bªq§BẨB×¢B`e¤BÃ5B¾_žBU¤Bçû¢Bãå¤B‘mžBðç B ššBɶ™BøÓ™Bd{“B¤pBôý‰Bã%‡B¦ƒBJŒ„BPÍŠB쑈B¼ôŒB{T‰Bô=†BÃ5ŒBÃ5ŠBj<ŽBã%ŒB{Ô‡B…«€Bj¼{BßÏmBßÏeB`eeBÂ]BJŒ^BXTBZä^B ‚aBÚ\B\RBÃuWBB`B `B¨ÆoB“˜vBƒ@}B‹¬…BÃu„B„‹B3³BY—B Ú™B Bç{ B‘í§B¶ó¨BÝ$¥BÑ¢ŸBº‰˜B×ã’B®GŒB×c‡Bq=‰BL7‚BB¯~Bü)~B²BRø†BkŒB•B;ŸBá:“BÍLBËá‹Bþ”ˆB…B¨F“BZdBY“Bm§™B#›šBí™BÃu˜BÁʘBj-r¿shqÀ¦›Àd;¿/Ý4@5^†@Évò@‹l'AåÐPAÂ}AßO„AV™A= ‰AƒÀXAžï9AƒA\þ@shõ@/ݤ@Tã¹@þÔ€@‡a@Z@—–@î|÷@?5$A®-AÕx3A‘íHAáz0AôýVA= mAœÄ“AßO£A»A®GÏAF¶ÔAð§¿AƒÀ½AßO£A\˜AHáxA°rNA…ë#A¢Eö@Œ@}?¥@•ã@˜n,Aö(0AçûiAçûgAmçŽA¢EœAð§¬A)\ºANbÇAÁʳAq=­A´È‘Aé&‘A+kA ×cA;ßA°r’ANb¢A9´˜Aú~¦AøSœA㥗Aú~…A?5xAÁÊiAçûAAìQ A¾ŸÖ@¬Ž@#Û¥@jAßOí@33A% AÑ"A^ºGAÛùZA#Û9A7‰WA•„AyéjAú~XAff"Aã¥ë@w¾_@‡9@œÄ ¿00ÓMÀÇK—¿TãÅ?¶ó%@š™±@ºIt@Tã@š™Ý@•³@ÛùÚ@ü©¥@…ë±@œÄè@¢Eö@‰A8AºIBAPA–CAoß@33AÇKA+‡*AÇK-A9´*Aã¥WAh‘]A ‹A%—A¦›ªAÑ"®Aü©™AV A¦›ŽAö(”AòÒ¦A¢E’A`å¢A¦›AZŸAªñ°A×£ÐA‘í×A®GëA×£úA#ÛùA`åBÓM÷AË¡õAÂÚAþÔÑAD‹ãA9´þAsèB?5üA;ßûA33ÞA^ºÙAJ ÎA5^±Aé&®A1˜Aj‚A°rLAßO/AƒÀê@u“ä@bh@–C;@d;§@ÍÌAÉv6AjdAd;A¤Aq=A7‰¶A¶ó°A´ÈÂA¸¿A‹l¬Aö(žAžïŠA¾ŸxA`åvA^ºeAÓM†AÍ̇A-²’Au“jA–CIAƒZAu“HAbAÑ"Ï@ÕxAìQü@‘íü@áz¤@¾ŸÊ@  A;ß÷@+5A!°q=ª¿5^RÀƒäÀ'1Á…EÁ9´xÁ˜nšÁ ×ÁÉvºÁ…ëÃÁu“°Á㥕Áb~Á-²CÁøS#Áú~ÒÀshÁÀ¬TÀázô¿ÍÌ,¿ ƒÀ¦›œÀÙÎÁÙÎ)ÁshIÁR¸jÁ+{ÁÙΖÁÙ«ÁþÔÂÁD‹ÊÁøSçÁçûßÁƒÝÁNbÀÁHáªÁP—ÁF¶uÁX9LÁÕxÁVÍÀ¼tÃÀ…ëAÀ‘í€ÀìQ”ÀžïóÀú~2ÁåÐhÁ¶ó{Áö(šÁL7–Áü©£Á¬¦Á ׫ÁË¡®ÁTã¥Áôý“Á{ÁÛù`Á¨ÆYÁ…ë‰ÁP‚Á¬Á\ƒÁÍÌ‘ÁNb†Á ×…ÁL7‚Á¤pwÁ+‡‡Áð§rÁú~VÁ}?+ÁÅ ÁjÁƒÀ0ÁßOÁö(Á7‰ÙÀÉvÒÀþÔÁV3Áu“Á)\Á7‰=ÁP/ÁÙÎÁÁÊ¥ÀôýÄ¿}?å?h‘@F¶ï@ôýð@é&y@^º1@X9„¿ÃõÀ¬zÀ‡鿺I,¿¤pý?^º•@ Ad;5A“`Aü©‹Aš™ Aî|±A#ÛA+‡ŒAÛùfATã;Aö(A–Cï@!°š@Évš@ªñ@²Ÿ?ìQ8¾®GA@X@—î@ÙÎA²Aú~>A¦›@AR¸rA7‰‘Aôý¦AHáµAÓMÌA‘íÌA ×ÀA®¢Aôý•AHáxA¢EBAºIAòÒÑ@Ï÷+@7‰@}?5¾•C¾‹l?¢E^@ã¥Ó@shAé&CA…ë{A¶ó{Aš™—AœÄ A1µAî|ªAj¡AR¸…A¶ó„A?5NAÝ$LAX}AÝ$nAJ ‘A ׃A‘í™Aü©†A ƒAš™cA—DAøSWA#Û5Aš™Aq=Þ@¨Æ£@bˆ@òÒõ@þÔÜ@ÂAyéÎ@h‘Ù@¼t%AV7A  A¾Ÿ Ah‘KAË¡;AshAÂ@Ý$6@ffæ¾î|¿D‹À00‹lÇ?&@¾ŸŠ@òÒ‘@X9ø@^ºÙ@ƒA®1AÝ$A7AœÄAºI,Aü©]A®oAé&“A¨Æ¥A—ŒA ׌AÁÊcAã¥iAPSAj¼~Aü©wAd;oANb‡AßOŠA‹l¤A´È³A\ÃAÂÇA{·AÑ"ÆAú~ÀAøSÈAš™áA9´âAýA!°ðAZäBòÒB!0Bƒ BžïBZäB¤p BY B¢EÿA?5B…îANbíAœDBVBfæBD‹B°rB¬BHaBu“ýAÝ$îANbÞA×£ÃAu“ºAü©›AZAö(bA/Ý>AA®G A"AÍÌXA^ºƒAåЙA¢E±AF¶ÍAoÏA`åäAÙÎâA?5ïAVèAÁÊÒA'1ÂA¤p¦AHá¦AœÄ AìQ“Ad;ŸA¾ŸšA¾Ÿ§A¾ŸA…ëuA°rrAªñhA+9A¢E A×£(AVA}? A5^¢@®¯@¾Ÿî@/AJ :AUA¶ó}A)\•Ao§A33¥AD‹AçûA°r…Amç†A'1ˆAˆAÃõA33˜Aé&•Aú~ªA?5¦AìQµA+±A?5£A´È›A¦›|AåЂA+‡hAòÒ†AþÔ•AœÄzA˜n…A-ˆAžï£A7‰¬A)\ËAìQÔA´ÈÑAþÔÐAÅ ²A1°AR¸ŸAP Ažï§Aq=šA—¯A+‡¨Aj¼¿A/µA°rÁA®ÉA•ÚA²ñA“òAÉvàA'1âA•ÖAÍÌÂAHá´A×£–Aü©‹Að§XA;ß)A+KA 1AìQVAyéDA'1FA×£4A%AZdç@J þ@ìQô@‰AAu“"AòÒWAÝ$…Aü© A˜nµAÓMÎA'1êA?5ØA!°ãA×£ÈA‹l²AoœAsh}A9´vAj¼>AË¡-Au“AžïAmçÇ@D‹˜@ð§Â@´È‚@ßOÉ@Nbx@{Ê@ü©‰@¼tß@dû˜Bì˜BD‹’Bø“B9tB=J‰BÓM„BîˆB ׌B™‹B×#B+ŠB¬BT#ŠB®ŒB²ˆBð'„Bò’€B+ƒBD‹B^º…B ZŠBÓB•B—B/žBžB˜®šBÝ$¡B™žB1™B×c’Bø“BÝä…BTc„BÖƒB‘m…B7I‹B¶³BœÄ•B.—Bž¯˜BTãœB˜î™BP šBƒ—B94–Bö¨”BÝäŽB²]‰Bž¯…B{ÔŠB²‘B?5ŒB`¥ŽBoÒŽB5ž‘B¾˜B;™B‡VŸBW¡BjšBìÑ™BD –B7 —BÝä–B3s•B²Ý™B;ߟBáú BþT¡B‘­£B/£B°² B°r™B¨–B‚ŽB–‰BÍÌ‚B!0‡B¸^BhÑ„Bªñ‰B%F‘BÍŒ—B…+œB–£B7ɦB‡–£B'±¢B¶³ªBT#ªB„¥BbªBH!¦BõªBݤ§BT#ªBÉv©Bì±BuÓ±BÃu°B?u´Bœ„®BßO³B‹l±B¨F«BVΫBœÄ«B¤°ªBš­Bð'§B¸Þ¦BB  Bú¾ BÝ$¨BoRªBðç¬BF¶¨B;ªB“ؤBF¶¡B´ˆ BìšBšY•BfæB5ÞŽBL·‰B?uŠBXyB`å‘BZä–BÅà—Bå”Bô}™Bh•BPM“B}¿B¸‰B=ÊBºÉBÉöuBòÒtBÇËnBã%mBƒÀtB‰ÁtBéfBBôý{BR¸mBd;pB…kzBÓMxBmçB؃BsèƒB߉B¾ŸˆB}?B–ƒ“B?ušBé&B/¤B5Þ¥B¢…¬B/­BÏ÷¦B/]¡BX9šBìÑ•B,BLw‹BÛ¹BòŠB¤pŽB33ŒBç;ŽB–BoR•BÃõ˜B}ÿ›Bƒ€˜Bú>šB94“BÁJ‘BJÌŽBÖ•Bì™BFö”Bå˜Bé&ŸB5 BÑb BœDžB¬ŸB-ò¡Bú¾ B7‰aÁh‘%Á9´Á®GÁÀ¾Ÿ®Àú~BÀÕx­Àú~âÀ²ÁÑ"WÁmç…Á‡žÁ…ë«Á‹lÇÁºIÍÁé&ÜÁq=áÁÅ ÇÁHá½Á¢E¡Á¦›ŠÁoyÁPCÁã¥GÁ= ÁªñÁü©ÍÀžïÁHá(ÁD‹`ÁNb|Á+‚Á®G˜Á‡™Á!°¨ÁÅ ÇÁ®ÔÁæÁ)\øÁZd÷Á%äÁ…ÅÁ!°¯ÁºI”ÁìQ€ÁF¶KÁTã-Á¼tëÀ33ïÀžï›À‹l«À7‰¹ÀƒÀÁ‡3ÁÑ"kÁ¾Ÿ†Á¬£ÁX9¦Áð§ÀÁZÈÁ×£ØÁR¸ÔÁÏ÷×Á+‡ÁÁÇKÆÁ+®Á+¸Á‰AÐÁ“ÁÁÇKÐÁìQºÁ%ÌÁV¸ÁƒÀ­Á1¥Á¨Æ’ÁÛù™Áu“‡ÁÁÊsÁ‘íZÁòÒCÁD‹FÁð§rÁÃõ\Áã¥wÁffNÁ+IÁòÒyÁZdÁVnÁ+‡lÁP“Á®GŽÁ ×uÁCÁ…)ÁR¸æÀ‘í¼À1ì¿L7 À—ºÀÙÎÇÀ‘íÁF¶Á‘í0Áî|ûÀh‘ÅÀÑ"[Àçû)>mç@Ûù¾@F¶A9´AøS=A%]A…iAÏ÷yA#ÛuAkAš™AAÃõ4Aö(ð@Ï÷×@+AVA0AÙÎAFAøS)A}?+APAË¡Aé&!AåÐ Aî|ç@ÓMŠ@×£À?ÃõØ?…ë@çû@¼t@¶óý> K¿%@¬z@ÁÊ!?ú~ª>þÔX@X9@mç{¾= GÀÇK¿À7‰ Á“<ÁZjÁ00…‹@„@q=ª@ð§v@-²Õ@‘íŒ@ºI @Tã AÂù@øSó@Évò@7‰Í@²AX9A!°8AÍÌ>AVAHáò@×£Ä@®GAøSA+‡8Aq=HAš™MA+‡€A¾Ÿ’A'1¦Au“´A;ßÈA‹lÀA×£¥Ažï£A+“A ׆A7‰”A¾ŸŽA1žAÕx§Aq=¼A¬ÖA®GòAƒçAuBôýB¬øAºIøATãåA°ròAË¡ÕAj¼ÄA ÊA®GçAþÔîAìQãA¦›èAB`ÖA‡ÖA¸ÛAÓMÉAh‘ÍAZd¸Aªñ AÇK†A eAÓM6AÃõ0AÇKó@X9à@ÃõA…GA…ë€Ash™ATã°A“ÅAÍÌ´A…ë¾A#Û¯AºI°AF¶¥A ×›A/€AHárAB`yA…AV‡AF¶¡ANb­A/¸AjœAžïAé&A A#ÛgA+‡bAw¾WAÙÎ[A²WA335APAAòÒAR¸ƒAj“A®G£AòÒªAyéÅAB`ÚA9´ÉA²¼AÅ ÇAË¡ºANbÆAq=»AZÁA¼t¹Aé&ÊA33ÞA-²ñAìQâAffæAZ×A—ÂA—³A33”AÁÊ“A“nA/…AB`‘AÕxmA®GAË¡A¶ó®AÅ ÂAÝ$ßAyéçA‡âA?5ÕAî|¾AþÔ¼A´È¨A¢Aú~¥AƒÀ™A;ß§A˜n˜Aé&žA1˜AÇK£A= ·A1ÍA¤pÞA‘íÊA×£ÀAÏ÷ÙA+‡ÉAÅ ÇA+ºA= žA1•A—pA¦›XANb†A;߇A5^™ATãAD‹‘A¾ŸŠA…ë}ATãSAÉv\A`åBAìQHA¢EVAuAþÔ™A#Û£A/ÝÀAð§ÕA¬ñAjàA°rïA‹lÕAVÆA¼tªA®A“A7‰CAÉv@A{HA 3AVõ@ÓMò@˜nA-²Au“.A¬Aã¥#A;ßAA‹¬³B–ôBøS®BR8¯BËaªB+¥BUžBžïžB£BB ŸB\Ï¢BL÷›B%F›Bîü–Bu“”B²]B¤pŒBÄ‹B94’B¢…‘B¸Þ•BD‹™BÏ7žBãå¥BVΦBü©¬BߨB“¢BÙΤBŸB}?œBÑ"”BìÑ‘B7ÉŠBÚ„BÃ5„BE‚BD‹‡B^z‚B%F†B‹ì†Bœ‹Bð'B“XŒB¾ŸB+ŽBãå“BÅ ’B“˜‘B‡–ŽB-2‡B¼4ˆB\OŠBÅ`ƒBì‘…BçûˆBF6ŠBÑâB B‘Bí–BF6™Bð'™B•œB*œB×£ Bœ¤B–§B3ó¨B¦­BÉ6¨BìQ¨BLw¤BË!¢B­œB-2˜BR¸’B33ŒB¨Æ‡BïƒBåŠBFö‰Bú>‘BHá“Bw>›B^º¡BTc¤BË!«B‰Á©BẨB%†®BÇË´BZd²Bmg±BoÒ¸Bú~·B¾_½BZ¤»BL7ÁB…+ÂBTcÈB!pÅBD ¿BW¿B\¸BÑb¹BÕ8¸Böè²Bwþ·Bš™¹BÛ¹¾B ¾BN¢¹BBà»B˜®·B3s·BºBœD·BÙ¹Bî<µBJ̶BB ±BN¢±B­±BPͪBì©Bðç¡BîüŸBJŒœBÉ6œB‘-¢BX BÛ¹¥Bå§Bþ£Bq}§Bq}§B}ÿ«BåªB¢E¤BÙŽœBw¾˜Bh‘’B{ÔŒBBBB ˆBf&Bš™ˆB)ŽBœDŽB¢ˆBÙƒB“؇B˜®ˆBhQ‹BFö’Bô½–B®G™BẟBš¡Bº‰¨Bþ¬B¦³Bƒ€³BêºBçûºB ‚ÁBöhÅB‰¿B¢»B/µB#Û°B!°©BZ$£Büi£BüiœBðgžBYšBçû›BÑ"B¨¡B¤BZ¤¨B×#¨By)¬Bƒ¦BÕ8¥B“˜¥B¬­BT£­B‡Ö«Bmç±B)œ·B™ºBË!·B{T·BÝä´B®G¸Bd;·Bj…ÁKÁ/Ý.Á+‡òÀ¤pÍÀ9´¤ÀË¡ÙÀD‹èÀ¸%ÁÕx[Áçû‰Á°r“ÁX9¯Áú~ÈÁX9ÓÁòÒÜÁåÐàÁ ÂÁ¸µÁ•ÁœÄ„Áü©yÁË¡OÁb^Á}?;Á!°4ÁázÁ¸=ÁHádÁ¬‡ÁË¡ŒÁTã‡ÁÃõÁX9ŸÁ´È«Áq=ÉÁ®ãÁ'1øÁ-üÁ ýÁú~ïÁ9´ÙÁ\ÈÁ´ÈªÁ-²’Áq=jÁ5^VÁ7‰#Á˜nÁd;¿ÀázÌÀâÀáz(ÁÁÊ=ÁázvÁshÁÃõ­Áš™ºÁ+‡ÓÁÍÌçÁ“ûÁÝ$æÁú~äÁ5^ËÁ`åÒÁÛù¶Á¾Ÿ³ÁF¶ÑÁþÔÒÁ^ºÛÁ–CÔÁ!°ÞÁÝ$ÑÁÅ ÊÁÙ·Á¬§Áff¨Á5^ŽÁh‘kÁú~TÁ‹l7Áyé8Á+sÁ¨ÆoÁªñ‡ÁþÔzÁÙ~Áé&›Á;ߥÁÉv–Áš™ŸÁÝ$¸ÁøS­Á-¨Á1ŒÁrÁ¸9Áö( ÁázÈÀ¦›ÁøS=Á ×3ÁgÁã¥aÁƒÀvÁƒÀNÁçû/ÁNbÁ!°®ÀD‹LÀD‹ì>`å@@—Ò@²A…OA²1AºI A`å°@¬@ÁÊa¿–¿Tã‘À´È–ÀåÐÎÀF¶çÀ²ëÀw¾Àyé6ÀNbp?®G!@‹lG@Há–@ªñª@Tã AƒÀJ R@= «@L7AX9A®G9AÅ 6A ×UA–CWA/UAÍÌFAÛù(ATãñ@^ºÝ@œÄ@@+‡Ö?–C—@D‹ @R¸þ@ÙÖ@•A‡AÙ AË¡í@d;ó@B`ù@F¶Ï@ÓM–@B`µ?ßO­¿ÍÌÀ¶óý<®¿žï'½¾ŸÚ¿L7ù¿5^ê?Z´?ªñÀ´È†¿+‡?\‚¾/eÀôý¸À+‡Ážï=Á)\kÁ¶ó’Á00F¶s>—Ž?u“x@¾Ÿb@5^Ú@©@Nb¨@Nb A{ò@ð§Þ@u“ @/‘@= Ç@ôýÐ@ÇKAÇKA ׯ@Tãå@¦›°@…ëå@;ßÏ@D‹Ah‘5Aƒ4A+iAj¼„AZd£A7‰¦Ao´A‡©AjŒA˜nŽA\€AœÄAÓMAVA5^A˜n†AZ—AÙΧAÏ÷ÂAjÅA}?áANbêA®æAƒÀøAZêAÕxõAÁÊØA‹lÞA¼têABw¾BL7êAòÒíA9´ÐAé&ÆAî|ºA)\¡AþÔ¡AB`‡AìQjAX1AyéAVÎ@ÇKË@}?-@-²ý?ÃõŒ@–CÓ@%A#ÛIA33€AÙ—A%˜AƒÀ©Ažï¡AÙΰA¢E­A= ¤AZd“A¤p}A'1lAVtA ]Aö(†AbŠAË¡†A–CUAßOIAžïaAî|=AÙÎ AX A ×AVA×£A33A AÅ :AV3A-dAÕxeAÑ"ƒAq=–A¸±A`å±AR¸›A-®A¢E¢A‘í¹AÙ¶AshÃAö(ÏAî|âA¨ÆßA1ôAßOÚAð§âAF¶ÓA¤p½AßO¬A®Aq=ˆA¦›ZA!°|A5^A¶ówAVAö(žAÙºAìQÎAíA´ÈýAÂBÙBú~êA¬ïA/ÙA•ÖAçûÊA33ÀA—ÈA—¸AD‹¾Au“¯A ´A¸ÄA+×A-²òAmçäANbÖAh‘íA…ßAÛA¨ÆÓA¢E·Aff´AœÄšAÕx”A¬¨A…ëŸA‹l¨A‡ŸA-²’AìQ‹A´È~AÑ"YA33kAq=XAºIlAh‘{A’A33¦AøS¶AåÐÕAéA×£þAƒÀçA ñA ÚA-²ÈA`åªAF¶‘AÑ"Aq=JA+‡HAôýNAôý6AÑ"û@/ A}?+AÃõì@ÙÎAßOÙ@ ã@î|—@ÙΣ@ð'¤Bº‰¤Bº‰ŸBþTŸB¸Þ›B¦–BwþŽB?uŽBd{“B5^BŽBÙ†B#‡BÙN‚B+G‚BòÒvBuB¾ŸpBƒzBö¨yB'q‚B쑆B;ߌBq½“B)œ•B\OœByéšBj|•Bã%˜Bªq’B´ˆŽB;߆BZ¤€BF¶qB–ÃhB¼ôbB´HaB‘mlBî|fB¨FpBêuBºI~B˜îBD€BFö†Büé‡Bì‰B5ž‰BˆBshˆBXyBw>~BÕ€BÛy{BÓÍzBìÑ~BœD~B)Ü„B-r…B°2‹B¸^B`¥ŠBh‘ŒBÑbŠB–CBß‘B¶³‘Bì“BÝd˜B®‡“B33—BÓ”B´”B¨ÆŽB¢…ŠBB†Bç{}BštBj¼nBzBƒxBá:BTãƒBžo‹B7‰BþÔ•BíœBøÓšB™B×#žB¶³£B{”¢B¾Ÿ¢BU©BÝd¥BD‹«B¸«Bª±±Byi³BîüºBÝä¶B{²Bj¼®BLw¨Bá:©BP ¬BÓ¨B{Ô«BVN®Bõ³BÛ¹¶B–óBRxµBã%±BíµBsh¼BXùºBX¹B²BÙ¯B绪B3ó¥BoR¦B¦›žB²ÝšBšÙ“Bb“BÏ·BN"•B)Ü›B5žšBÓ ¡BßÏ Bw¾BFö£B%¡Bõ¤Bô}¢B¼tŸB5ž—Bwþ”B–ŽBXy‰B+‡‰B9t„B¢E†B‚Bj¼‡Bº ‡B¢EƒB94~B€B¸ÞƒBD †BbB¶ó‘Bš”BØ›B!pŸBy)§Bq}§BìÑ®B7I®B;Ÿ´Bò’³Bw~ºB7 ¾B“¸BöhµB/]®BÍ «BÚ£BqýB¨ÆœBTã–Bq½˜Bú>”B‘­”BÁŠ–B-ò™BÞBB ¡BºÉ B^:¤BÍ žB¦Û›B¸^›BJ £B'1¤Bƒ¤B®ªB3ó­BÙ­Bª1«B¸Þ§B'±¤Bq}¨Bü©¤Bé&WÁìQÁçûÁ¼t»Àé&•ÀÕx1À²“À!°ÎÀƒÀ Áö(0Á^ºcÁ²ÁyéœÁ¶ÁÇKÈÁºIÔÁÇKÌÁÝ$³ÁD‹ Á×£„ÁÂcÁZbÁ´ÈFÁ¸_ÁshIÁF¶KÁßOAÁ¤piÁ^ºŒÁ\Áh‘Áî|œÁ/£Á…ë™Áo­Á'1ÄÁ•ÝÁmçîÁü) ÂZäÂPôÁL7÷ÁshÚÁ¬ÈÁÙήÁ;ß”Á¬pÁÅ ^ÁR¸$Á7‰Á¨Æ;Á#ÛwÁ´È‹Á¤pªÁB`¬Á)\ÈÁd;ÕÁ®çÁmçöÁîüÂL7îÁ¬éÁjÎÁøSÅÁ•©Áš™£Á–C¿ÁÅ ÊÁF¶ÚÁjÜÁ®ïÁ-²âÁ7‰àÁHáÄÁ¶Ád;´Á\ ÁƒÀ‚ÁÛùbÁÉv.ÁþÔBÁü©wÁ/ÝxÁ¼tŽÁ…Á^º“Á…±Á1·ÁªñŸÁþÔ¬Á–CÄÁ¶Á¼t¦Á1ŽÁÏ÷yÁ´È@Á¼t-Áq=æÀ"ÁÝ$RÁ'1^ÁNbŠÁ/݃Á¶ó›ÁþÔÁ ×kÁÇKKÁ‰AÁªñöÀZ¨Àj¼Ô¿ Ë?çû‰@sh½@shq@jŒ?q=š¿/Àh‘±Àj¼°ÀøSóÀL7õÀÍÌðÀÉvþÀÛùÁœÄ˜Àázô¿J b?¼t?þÔˆ?shá?u“¸?¦›€@ÁÊÅ@¤pAj¼,AÇKgA ׃Aªñ‰A…_A-TAÏ÷)AZdï@ìQŒ@J ¢? ×Ó¿/=ÀX9¼Àö(´À°r(Àd;?? @Å  @Ûù¾@h‘ AR¸A‘í*A¾Ÿ>A`å4A^ºA;ßÿ@= ‡@F¶@R¸^¿+À+‡6?ã¥Û?•Ÿ@X•@R¸þ@¤pí@¢EAh‘­@¨Æ£@}?•@j¼D@Nb>žï÷¿sh©À^º¡ÀÉvÀáz\ÀázÀ\À{À/Ý´?òÒÝ?òÒÝ¿ºIL¿Ý$–?Ý$Æ¿+_À…ÓÀ- ÁÅ @Á°rhÁ!°Á00ð§F¿#Û9?/‘@Nb”@¢E AË¡Açû)A¬HA˜nA'1*Aq=î@33Ï@®GÑ@+‡Ê@PA'1 A/ÝÐ@ÁÊAåÐâ@9´&AJ .A'1JAþÔJA= 5A?5^A‡]Ad;ŠANb™A˜AìQ’A?5‚AÍÌAo†A/Ý”Ab¢AÇKAd;•A|A—‹AAff¥A¬A˜n¶A/ÝÐAXÎA ãAX×APÝA‘íÚAÂäA…ëûAB—ùAžïõA/ÝçAÓMÉAu“¶AZd AÓMˆA…eA…)A-²!A ××@^ºÝ@˜n†@‹l›@Évî?˜n‚¿š™™½ZdÛ?Nb”@ü©Ù@‡%Aff`AX9xA¶ó™A¬ŸA¢E·AHáÄAÅ µA-«A㥙AÃõ‚A {A‰AJAPcA;ßQA%?AshA—AøSï@7‰…@‡Y@• @Tã@ƒ”@þÔÀ@B`]@œÄp@…ë½@ÇK“@Tãù@ÓMÞ@ÁÊAÉv$Aw¾WAd;ƒAR¸dA+‡…A°rxA33ŒA¾Ÿ”Aáz£A®·AßOÔA¤pÔAªñ×Aáz»A×£»AJ ¤Aü©¨A…ë•Aã¥{AAî|_AåÐAu“šA-²™AÑ"­AßO®A}?ÈA‹l×Aj¼ðAö(BBð'B`åBBÍÌBbBÕxÿAPýAu“BshèAHáùA˜nêATãçAjïAÏ÷øA— B‹l BVŽB9´B/ B9´B‡–BX9èAbáA¢EÈAÓM¸AV»A!°¡AbA'1‡A9´lAGAé&QA^º1A‡iAÝ$vA²AƒA¬·AƒÀÄA¤pÚA\òAÑ¢B«B¢EíAÓMçA²ÉAPÄA'1¬Aªñ–A`åA7‰wA´È€AÍÌpAVCAøS'A ×+AX9A/½@ƒÀÒ@ƒp@yéŠ@˜nR?ff–?L7ƒB#Û‡Bžo†B ˆBT#‡B®‚BX9wB®~BÕ¸€B)ÜvBÅ uBìQlBÇËoB{jBš™mB)ÜaBœDWB/ÝTBßOZBÏw]B‘ífBÙtBu“€B¢‡Bf&ŒBô½“Béæ“Bò’B*•B/Bmg‰B‡–‚B®vB…kiBßÏcB‘íXB-²\Bw>cB%†dBÖqBb|Bš™BÏ7‡B!°‡BþB‰AŽBshBmgBÑ¢†B ‚BV~B‘-„BX‡By©€B)܃B“X‚Bžï‚Bú>ˆB3s„B'1‰B‡ÖˆBL÷Bs(B ‚}Bžï|B-rB¢Å}Bé&|BÅ„B1H…BmgŠB®‰B‘­ŒB¸^‹BÛy…Bô=„BX9yBþÔuBã%mB˜nrB'1iBD uBxB#›ƒB9t‡B;ŽBÅ •B²Ý•B×cB}?‘Bd;˜B¼4•BT£BåP•Bß’BTã˜B-˜BÏw›B¸^Báú¥BœD£B}?¡B¤0¡Bî<žB7 ¤B^:§BDK¢B= ¢BøÓ¥Bº ©BZ¤¯Bô}«B¦Û°B= ¬B3³¬BL7´Bd»±Bî³B®Bì‘«B`å£BhŸB\œBì”BVNB˜î‰B˜n‹B=ІBÕ¸‹Bçû’B—–BBZ$ BRøžBü)¢B`å B B B¼´ŸBª™Béf’B\OB/‡B#[ƒBB+‡|BB šyBJÌ‚BP „B®Ç‚B‰A|B94BJŒƒB#Û„BÝäŠBÑbŽBÙBÇ‹“Byé“BR8šB¬ÜBZ$£BoÒ£B'±¨B@¦Béf¬B1È®B©Bɶ§BB` B®œBƒ@–B!ð’B‰”BoR‘BË!–BJŒ“BåP—B#Û”B°ršBž¯›BÓBª˜BÅ ˜B#›Byé‹BÝdBð§”B!ð’BðgBœÄ•BD šB5–BV•BffB+B¨†BfæB ÷À+ŸÀö(ˆÀV¿F¶s¿X9Ä?F¶s¾ìQHÀ½À¨ÆÁ)\'ÁjRÁb‡Á×££Á“¶Á¼tÇÁ;߸Á?5¦Á`åÁj‚Á¦›TÁ%[Á2Áš™AÁ°r2Á¤p7Á}??Áš™mÁ+‡Á˜n¥Á¼t¢Áôý¤ÁshªÁff¤Áªñ»ÁƒÀÆÁ‘íåÁ'1ôÁ5Þ WÂNbÂfæÂÂÂÓMúÁö(âÁþÔËÁ¯Á;ß‘Á¦›„ÁÃõZÁ‹luÁbÁ㥤ÁºI±Áú~ÈÁÅ ÎÁ ×äÁøSèÁÕxïÁçûõÁé&øÁ9´êÁÓMÛÁÙ¾Á%¨ÁÁPyÁ°rÁºIžÁ²¸Á‘í¾Á?5ØÁ7‰ØÁd;ÙÁ®ÊÁð§ÂÁHáÅÁ㥳ÁòÒžÁáz‰Á/ÝfÁ!°ZÁü©€Á®G}Á¼t†Á˜n‰Á®GŽÁÙΫÁD‹¦Á= ‹Á)\”ÁÙΟÁ`åŠÁ{rÁ¶óGÁÃõ&Á5^ÚÀ¬šÀ-²¿ôý€Àã¥ëÀªñÁB`KÁ¢EbÁþÔ…Á•wÁªñdÁÙ.ÁTã Á-®À;ß‹À®G¡¿1L?-@¢Ef@b(@ ד¿^ºù¿d;“ÀshÍÀX½Àã¥óÀZ¼ÀžïãÀòÒÕÀ‹l÷ÀTã±ÀP'À'1ˆ¿)\O¿;ß¿¿ÓMÒ¿VEÀ¬ª¿V@sh±@ú~þ@= -A33CA{>A- Aú~A–CŸ@b(@¼t?òÒÀ+‡®ÀÏ÷ÿÀ 9Áu“BÁ}?Á^º­À33À‘팿þÔx¾ÉvF@j¼”@‡å@yéAÇK/A¬ð@u“ü@Ñ"‡@‘íd@/ÝD?“$?†@˜n¶@J î@Pã@‹lAî|ó@‰AÌ@ÁÊ9@•C?¨Æ+? ×À{¶ÀœÄäÀË¡ÁÇK Á7‰©À?5žÀPÀð§À¼ts¿D‹<@ìQ0@Ï÷Ó>M@^º­@#Û!@…@‹l·¿¬,À?5ÒÀÛùúÀV9Á00X9¿P—?)\“@X™@¨Æ Aú@5^Aé&;A A= !A-²õ@bä@jA1 A5^A®GyA'1œA#ÛŸAXºA¤p¼AZdÓA¬ÒA+ÀA¢E·AƒÀ›A®G’A®‡AVqA㥉A)\yA…sA®GMA´È4AÛù(AË¡AHáÒ@Å ¼@w¾Û@´Èâ@^ºAßO¥@©@ ׫@…ë±@% A= A^ºOA-hAˆA˜n”A¬„AJ AjzA²AV˜A1ŸAÏ÷®A7‰¾ATãµAj¼ËA¬·A¶óÃAªñ²AøS«Aö(¡AÇK…A…A;ßaA¸‚A#Û˜Au“”A¨Æ¦A¢AìQ¾AZÍAþÔäAd;ùAé&ïA%þAþÔçA{úAÇKñA5^ûA1ñA{íAbóA²ÝATãçAÏ÷ÚA…ëáA²âA¼tõA BºIBX9B BÕxBî|õA ðA%ÒAÓMÎAžï²A#ÛŸA!°¥A)\’A¦›’A= {A#Û_AÛùHAÅ 4AžïAƒÙΧ¿¬šÀ¬ðÀ…ë1Á7‰SÁÝ$†Á00L7É¿R¸Î¿þÔØ?PO@…ß@“A'1A¦›4A1ø@Ý$AœÄÌ@¤pÅ@œÄÐ@Ñ"ß@X9A¢EAƒØ@Nb$A}? AÙÎ=A 3Au“@A¦›@A˜nA¸;AÝ$6A+mA5^ˆA/ÝA¨ÆŠAåÐtA1A…ë…A¶ó“AÃõ›AÑ"Aî|˜A-ˆAÃõ“Ao”A¤pªAV¯AÑ"ÃAÝ$ÔA¨ÆÇAffáA¸ÒAžïÖAé&ÏAázÖAq=ñA+‡úAôýïAÇKòA= éA¸ÎA¼t½AR¸¨Aj¼ŽAÙrA-²?A•=A°rA{A×£”@¬¢@^ºé?ìQˆ¿L7 ?NbH@yé¦@Évú@‘í.ATãiAî|Aú~šAÃõžA1·AåоAo¯A\²A®G–AÃõ~AÕxcAßO;A^ºWA¤pEA ×9A‘íA¢Eö@Ê@?5–@çû!@ÇK7>¬ @ #@u“„@bx?åÐÂ?shÑ?ã¥{?‰A˜@áz´@9´AÙÎ%AÑ"WAdA= AA ×mAF¶]AÉv€A#Û€AßOAHá¢AL7µAé&ªAÃõ¸Ah‘ŸA/«Amç›A‘íAZd‚AÅ LATãWA¤p;APeA‹lŒAìQŠA“¢A לAÛù·A¶óÁAÏ÷ØA®ðAD‹ãAºIíAÅ ØAR¸çAÉvåAßOöA)\òA33ùA?5B1êA ×ðA•ßA#ÛåA¬ÜAøSáAË¡ýA)ÜBš™B“˜B¶óBsh÷A?5óAÇKÛA¬ÎA%¸Aš™žAÕxŸA¦›ŠAd;‡Aôý\Aš™?AV!AƒÀAžïA´È$AÉv@A¶óaAÇK‚AôýAÅ °Ah‘ÈAÛA= íAX9õATãØA ×ÐA/¶A㥯Aú~˜A®GAj¼zA‰ANA°r^Ah‘?A–CAoÓ@ »@×£Ì@ÃõP@= Ÿ@D‹@R¸&@Ûù>¿^º)?ç;—B{œBšÙ˜Bªq›Bd;œBœ—BBö¨“Bî|“B1ˆŽBZäŒBš‡BNâ‰Bmg„B×c…B/|BYwBØtBòÒxBòR€B=Š…B}?BN"”B´™BÏ·žBX¹¦B9t§B'1£B+ǧBÍÌ¡BË!›BÑb•BþÔBãe‡B…k…B9´}Bô}|Bú>ƒBÝ$BÓ͇BÙ΋B'qB¼´–Bh˜Bò’Bj|žB®ŸBX¹¢B#[BƒšB5^—B'±œB7 Bš•BF¶•B ‚’B+ÇB°ò•Bh‘“B!°˜B#Û”Bô}’BÅ`‘B¦B}¿ŽB ‘BN¢‘BjBF6–B¾Ÿ”B…«šB;_šB¾_žB{ÔœB²˜BY–BÂŽBðgŒB¾ˆBXBú¾Bç»B7 Bð§•BBà™Bãå Bqý§Bsh¨B%F¢BÏ·¥BNâ«BÍ ¦B)¤BÏ÷¨Bm§¨BºI®B˜î®BÑâ°Bçû³B¿BXù¹B‰¸B´È¶B'±²B‘­¶B}ºBkµBV¹BP »Bw>¾BøÃBs(¿BÛùÃBÓMÁB#ÛÆB5ÞÌB‰AÊBÛùÈBN¢ÂBÕ¾Bôý·Bjü²Büi±BTã©BZd£B1HžB–ƒžBj¼œB+‡¡BbШBLwªB‚±B ´BÏ7µBy©»BÏw½BéæºBº ¿Bõ¸B`e²B^:¬B¦Û¤BÉv B¦[œB˜B{”•BJL”BÍŒšBÚB7ÉœBçû—B5—B9ôB ZB•¢BòR¨Búþ¦Bãå¬BœDªB=Š®B³B¸B¨Æ·B综B94»BªqÁBÛùÁBéæºB¸žºBÅ`³BòR°BT£ªBHa¨B#[ªBd{¨Bü)­BòÒªB%­BÅ ­BXù¬Bš™¯BB ²BÁŠ­Bž/­Bj¥B ¡B^º¡B-2¨BX¨BÅ`¤BJ ªBZ¯BÅ ­B1ˆ©B-r¥Bq}¤B‹¬£B…+ BX90Á‘íÁÒÀ…ëYÀmç‡ÀÅ °¿mç#Ào«À ×çÀòÒÁªñ@Á^ºkÁÓM‘ÁZd¦Á˜nÀÁÅ ÉÁ'1®ÁÕx¡ÁÅ †Á33}Á/ÝVÁÓM`ÁªñBÁNbLÁ9´JÁHáPÁL7QÁÂwÁš™•ÁV¤Á^º¦ÁTã¦ÁVªÁþÔ Áw¾¼Áh‘ÅÁòÒâÁôýðÁ;_Âw¾ ˜îÂR8ÂÏwÂVòÁ“ßÁã¥ÐÁP¶ÁÇKšÁ ‡Á®GYÁÙÎaÁsh…Á/Ý¡Áé&§ÁR¸ÃÁB`ËÁ;ßáÁ?5îÁNbûÁ\ƒÀ‰AîÁ+‡âÁX9ÆÁZd»Á'1 Á“’ÁÕx¦Á/ݵÁ ÊÁZdÐÁú~åÁ¦›ãÁ33èÁHáÑÁVÇÁ‰AÅÁôý¶ÁŸÁffÁÂcÁþÔZÁZdÁh‘Á9´‘Á;ß’Á¨Æ–ÁºI´Á—²ÁZdœÁ33¬Á^ººÁö(¢Áü©˜Á5^~ÁôýZÁÕx!Á‘íÁ?5šÀøSÁ^ºOÁ QÁff„ÁˆÁbŸÁsh“ÁÑ"yÁ)\QÁé&-ÁyéöÀË¡±ÀÁÊÀÉv>>R¸@yé†@…ë@çûI¿1,Àð§’Àú~æÀ‰AÔÀö(ÁœÄøÀ¾ŸÁ#ÛýÀš™ÁB`ÑÀøS;À5^À`å°¿Ï÷;ÀƒÀÚ¿çûyÀJ Ò¿ºI̾¦›D@¸±@Tãý@˜n$AP-Au“ A/ A-²½@ƒ¨@î|@—n¿)\‹À¾ÀR¸Á‹l+ÁÍÌÁ?5†ÀžïOÀ= ?˜nÒ>¢E>@Évª@Zdã@bA¢E,AœÄü@´Èâ@¦›D@ÍÌ$@ÁÊ!¿®×¿h‘ý?Zd@‘í´@‘í¨@°rø@ÉvÒ@Nb¸@¶ó5@%¡?Õ¾²WÀ ×Àé&õÀ•7ÁX9Á ×ËÀXµÀázDÀJ RÀ/ý¿¤pÝ?“ä?åТ¿š™>…ë9@ÙÎ=ºIì¿j¼˜ÀB`ÅÀD‹ Á×£6Áã¥eÁ009´Œ@•Ç@Ë¡AZd9A%sAî|€AXŒAÝ$AbhA¶ómATã9AƒBAw¾=A;A×£dAÑ"oAázJAbvA—VA„ATãAyéAî|“AÂAð§•A‰A‘AœÄ¯A-²²A5^°AD‹«Aªñ A—³AV²AË¡ÆA ÒAÏ÷¼AÉv½A´È¤Ayé¡A¬¦Ayé¾Að§ÃA®ÏA-èAÓMæA ûAq=íA-²BTcB‰A Bö¨B“˜ByiB!° BÁJB1ìAÍÌÕA¨ÆÁA^º¦A•‘AÇKiAmçkA ;AÃõ6AyéA˜nAÇK¯@•k@®‡@ªñÂ@¦›Aé&#AÑ"YAœÄ‡AºI›A×£¹Aw¾ÄAÏ÷ÝAZîAw¾ÞAœÄâAÄAF¶®AÕxŸA†AßO•AL7…Aw¾}AøSWAj¼DA¨Æ1Au“AªñÚ@Ûùº@ ×÷@u“AF¶AÕxñ@P AÇKÛ@‡Õ@d;%AòÒA¤pQAÑ"QA‘í‚A= —A×£…A7‰˜AZŒAÑ"—AÙΧA˜n³AÃõÊAÝ$ÛA}?ÏA áAƒÀÅAXÌA˜nµAZd¶AX§Aáz”AžïžAP–A1®AÂÅAÏ÷ÇA¬×AÒA-²ìA}?óAƒ@BÇKB¤p B¨FBåÐB"B5^$BìQ,Bƒ!B'1B%† BR8BªqBé& B5Þ B‰A BÕxB“BÅ BTãB B#Û"BôýBB B“˜B¶óúAÃõæA ×åA9´ÈAøS½Aö(¢AÁÊAqAÇKmA´ÈzA•–APžA?5·A‡ÌA¼tçA-²çAbBºÉ BÉvB¾BÇËBXþAffãAºIßA…ëÉAË¡²A•´A‡¦A#Û´AZd§AœÄAáz|AÑ"AB`aAþÔDA®=A˜n"Aî|AB`É@…ë©@zBD‹BoRB#ÛBsè€BêwB šnBbxBÃuvBP sBshxB pB°rzB×£qB¤pyBºÉsB‰ÁhBq½aB ×dB hBZdmB'±zBž/Bë†By)ŒBƒ“Bjü“BÁ‘Béf˜B}ÿ”BŽBìшBÓ ƒB¶s{B!°|BøÓuBÝ${BØBy)…B¾_ŒBH¡B!0“BøÓ˜BP ˜B7É™B{T™BøÓ•B‚˜B¶s‘Bô½ŒB®‡ŒByé“B““BªBá:‘B¢ŽBÁ ŽBª±“BC‘B}?—B¶ó”BËáBª‰B+Ç…BžïBƒƒBq}€B×£‚BŠB'1‰BÏwŽBq½B#Û“Bú¾”BÙB+BɶˆB†BÑâ€Bn‚Bð§{B–Ã|Bd»€BÁ†B®‡ŠB'1‘B-—BZä˜Bl“B=Ê“B;ßšBÃ5›BÃõ”BØ™Bb•Büi—Bo”B#›•BPÍ•BÃõ¡BH¡ BòÒ B Bá:žBî<¤B/§B?µ¡B¬œ BœD¤BÁ ¥B“˜©BìѦBd»ªBøÓ¥BRxªBT£±BÍ ±BC¯BU­B¾©BF¶¡BB#Û—B\Ï’B‹B B‰Bžï‰B1H„B9t‰B¶3BN¢”B-r›Bɶ¡BœD¢B{¥BÃu¡BfæœBX9›BHá“BðçBÍÌ‹B‹,…B= ‡B)†Bf¦†Bmç‡B)Ü…BšÙŒBJŒ‘BÉ6•B5BõŠB#B‘mŽBªñ‘Bö¨BCBª±BÍÌŒB‹l‘Bb˜B¾_šBbPBN" BHažBê¢B¬\¤B1HB€šBD ”Bð§BšÙŒBVΊBw~Bƒ@‘B=Š—B9tšBÍ ŸBîü›B“X¡B…ëžBázœBD—B*•B BŽBǡBDË…B˜‹B'±‹B¤°‡Bî|ŒB+’Bø“B ŽBs(‰BNb‹BZd‹B­‹Bw¾Á…ÛÀ ×ÏÀu“PÀ‰AœÀË¡À`å”À;ßûÀ5^Á°rVÁ?5tÁçûÁö(¨ÁôýÀÁ…ëÑÁTãïÁÂåÁ‰AÕÁshºÁ¸¬ÁffÁ—ŒÁ-fÁF¶SÁçûAÁ!°:Á?5:ÁtÁD‹†ÁøS¡Áö(ªÁZd³Áj¼ÇÁ}?ÃÁVáÁÃõñÁ7‰°òÂmgÂVÂ^º¦Âð'Â\úÁî|ÞÁ×£ÇÁ ±Ámç™ÁþÔ‘Á€ÁÕxÁ%˜Á¶ó±ÁåÐÄÁÕxÜÁq=ÞÁî|òÁL7ðÁ5^ùÁÓMöÁ–CþÁôýòÁçûêÁ;ßÐÁÇKÀÁ סÁ1•Áú~¬Á¶ó±ÁÏ÷ÉÁmç¾ÁƒÖÁ ×ÒÁ5^ÜÁö(ÑÁ“ÎÁ¸ÛÁ-ÎÁw¾½Ásh¤Á/ÝÁ33‰ÁœÄœÁš™ÁÃõ‘Ád;‹Á²ƒÁB` Á £ÁÑ"…Á\‰ÁZ Á9´’Á= yÁw¾MÁö(ÁË¡ÁÀVNÀyé?ÀÙοÀ‰AàÀb,Á…ëCÁ ×iÁPQÁ-²=Á®G Áw¾ÃÀ)\'À–C ¾= /@+‡¶@®GÁ@—AHáú@åÐ’@ÁÊI@!°2¿mç À WÀsh¹ÀV‘ÀÏ÷ãÀ‡ÙÀÂÁßOÝÀ®GÀ)\ÀD‹L¿X¹¿š™>ˡžF¶Ó?…ë©@\æ@Â!AX9*A\>A!°"AD‹ø@u“Ì@¤p=@9´H=^À¶ó±ÀF¶Á/Ý ÁbTÁ¬NÁ¼tIÁ ÁF¶×À…ë9ÀòÒm¿˜nB@HáŽ@ÁÊí@XA¼t?AÇKAßOAªñÚ@-î@ú~Ž@q=r@F¶ï@Tã A¸!AË¡ AyéA?5ú@bÌ@ÓMj@Æ?žï·?o“¿¶ó}À¼À1Áu“ðÀyé~ÀbxÀÃõÈ¿çû1Àµ¿œÄ@mçk@Vn?= G@?5Â@!°’@¬ @°rè¿¶ó‰ÀoûÀ®ÿÀ!°<Á00…ëÕ@ßOAìQ0A®GQA˜nƒA°r…A ‰AÕx–A33{Ab~AJ VAbbA}?{A…ëmA-²ˆA‰A†AƒÀhAºI‰AZdoA ׎A#ÛA˜nžA5^A33“AF¶©A¤p«A'1ÈA-ÞAôýØA‰AÚA+ÉA7‰ÔAD‹ÌA ÞA7‰êAÕxÓAþÔÜAö(ÇAé&×AÏ÷ÕA/çAZdóAœDB% BÓMBbBo’BòRBB«B¸ž)B--Bw>'B}?B¯B7 B\ÿA5^êAF¶ÐA®ÃAJ ¦Aú~¥A ‰A}?ƒA= OAF¶KA‡AÃõð@9´A‰A4AR¸hA/݉Aáz¤A ÀAw¾ÂA;ßÞAázäAÍÌüAbBôýøA´ÈíAXÔAyéÁAƒÂAºI§AZd¶AåЯAÑ"¬A’A9´‰A/‚APaAôý>A°r,A“XAË¡MAœÄbAã¥1AV:A?A¦›@A¨ÆuA?5pA²‘AßOœA}?¶A•¾A9´«AV¿A®±A;߯A¢EÔA7‰ãA\ùAç{Bü©øAƒB˜nëA/öAã¥äA^ºßAj¼ÏA ×´A…½Aªñ«AºIÁA—ÖA¼tÔA‰AâA ëA€B‡B-²Bð§Bð'#B„*BåPBÁÊ#BœDBî|"BJ BÑ"BºÉ&B¢ÅB7 B„B7‰BáúB-2Bsh)B¬+Bu“&Bžï,B«-B= $Bƒ!B¢EBHá BBD‹éA/òAøSØAF¶ÔA5^ºAßO¯AÁÊ–A•A1‘Aö(§AÅ ¬A®G¾AJ ÎA!°êAázûAÙ BØBmg B—!BÉvBÃõBç{BƒÀüAåÐçAÓMÏAòÒÉA®G´ANb»AF¶¶A¶óŸAžï‹Aªñ‰AÃõ‡A®UA-nA®GA¼tMAÍÌA¬A…«†BX¹ŠB^º„B«ƒBƒ@‚B-2wBd;lBáúsBq=yBîütB¢E}Bƒ@xBq}B^ºBHáBd;xB®ÇlBö¨gB®GkBmçjB¬pB…k|B¤pBœ„ˆB+Ç‹BuÓ’B¦[’B“Ø’BǢBR8•B¬œB}¿ˆBhQƒBÙÎyB…ëtB­qBÁÊwB‡–€BÛùƒB˜®‹Bj¼‘B'ñ‘B-r—BhÑ“BÃ5•BR8•B B“B‘BÛy‹B,‰BšÙˆB{TBãeBø“‹B W‹B…+‹Bªñ‹Bn‘BÃõBU—B²Ý—B¨BL·ŽBøÓŠBç;ŠB¸‰B°2‡BãåˆBf¦BW‘B€•BX—B?õšB/Ý—BËaBD ŽBËa‡B×ãƒBô}yBøSBåPtBªñzBj<B˜®†BË!‹BÛy‘BP˜Bj<šBÑâ•Bôý•BL7BÇ œBY—BòÒ™B%Æ–BP ›B¸ž™B{ÔšByi™B¬¦BÁŠ£B1¤B£BÙŽŸBªñ¥Bª±¨B¼t¢B¬¡B˜n¢B7É¢BHá¤BdûŸB= ¢B#[Bõ B¯¦B¨©Bmç¨Bmg¦BšÙ¤BoB+Ç™B¬œ•B×ãB —ŠBê†B¼4‡B°òB ׂBd;‰BFv‹B¾Ÿ‘B'q—BÙ–BXù—Bô½•B+G–Bžï‘Bw¾‹B¯„B#Û‚B^ºwB+yB-2tBF¶sBôýxB¦›rB¶3€B°2BZdB94wBƒ@wBƒ@Bã%€B‰„BÇK†BuÓƒB/]‡BX9ƒBTã‡BŽBº‰‘Bs(—BžošBÝd›BX Byé B#[™Bß•B¾ŸBòÒ‰B•…B1H„BÇB¤°†B;_ŒBßBs(“BR8‘B'q—Byi—Bçû—Bò’’B¸ž‘Bß‹B«…Bj¼‚B\O‰BØŠBž/…B)ˆBF6B…kŽB¯‘B-BéfB¾_’Byé‘B¶óyÁ\HÁHá>ÁÁÛù*Ásh Áƒ6Á¢EdÁ-²ÁXœÁš™­Áã¥ÊÁºIÞÁúÁç{ÂjÂmç€Â…ëóÁ‰AáÁÏ÷ÄÁÇKºÁ}?ŸÁjœÁáz‹ÁåЂÁÁj¼˜Á¨ÁNbÃÁƒÀÐÁ33ÜÁ°rîÁF¶ñÁ­ÂÃuÂü)¢E!Âî|+Â{,¬.¬ ÂÁJÂHaÂþÁVìÁHáÎÁ‡¶ÁJ §Á\’Á/£Á?5¾ÁZÖÁ/áÁ-²úÁ-²ýÁü) Âô}  WÂB`ÂD‹Âázžï Â= ÂìQòÁ°rÕÁX9ÌÁú~äÁyéãÁ ýÁÅ ôÁ7 ÂË¡ÿÁ¾ŸÂX9úÁq=óÁ?5Âu“ôÁ)\æÁøSÊÁ“¸Áð§­ÁZÆÁ7‰ºÁoºÁ¸µÁ¨Æ«ÁVÇÁÍÌËÁòÒ°ÁìQ²Á¶óÉÁyéºÁHá Á-²Áî|mÁ¬6Á¾ŸÁ®G­ÀÛùâÀJ (Á IÁ¬‚Áw¾ˆÁü©—Ád;‹Á‡yÁR¸JÁ ×ÁVÑÀHáŠÀî|ï¿ôý”?ƒ@°r@‹l£@ ×ã?Õxi¾çûqÀ²ÛÀw¾÷Àmç'Á7‰Áú~@Á¼tEÁ…eÁ ×=Á9´(ÁX9ôÀþÔÀÀÙÒÀVŠÀj¼˜ÀôýLÀ–C‹=#ÛI@;ߟ@—ö@ƒ ATãý@Ûù’@yé6@®G¿ƒÀJÀ‹lÛÀázÁ¾ŸTÁ¨ÆsÁ/™Áú~šÁ-²Áš™IÁ¾Ÿ.Á°ràÀ”ÀNbp¿ffæ>X9\@Ñ"“@´ÈÊ@¢EŠ@þÔ°@;ß/@¨Æ#@î|?¿Ï÷ƒ¿#Û1@R¸F@Õx¥@žï?@^º@}?Õ?V?ZÄ¿ZLÀ¤pUÀ#ÛÅÀL7 Áôý(Á¢EHÁ!°6Á7‰ÁÃõÁ¬ÌÀu“üÀü©õÀ}?Àé&!À…ë¡À¢EvÀú~ª¾h‘½¿^ºAÀÍÌÈÀ×£Á®GIÁ+[Á…‹Á00]Ayé‚Aw¾˜AÉv§AÙÎÃA1ÆA9´ÊA“ÞAË¡ÄAD‹ÃA´È¨AV¡A²£Ažï™A‰A¤AåЛAZ“AF¶¬A+¯AL7ÈAD‹ÈAþÔÒAZdÖA…ëÈA¬ßA×£ÝAX9ûA•ýAøAË¡üA!°ëA ×úAßOòAÑ"BòÒBoôAìQB…éAffïAË¡ïAu“BÕxBÁÊ B;ßBþTB¬œ%Bð§B`å(Byi$BVŽ(Bff6B^:=BÓM6Bé&.B}?*BÃuB,BÙNB?5ðA¼tØAmçºA7‰¾A9´¤Ab£A)\†Ah‘ŠAªñfA+‡FAð§FA-fA¾Ÿ‹AøS¤A…ë¾A?5ÙAw¾éAã%BjBYBJŒBD‹BJŒB\B\ðAÝ$äAR¸ÊAœÄÚAÍÌÐA¼tÍA·A`å­AÁÊ¢AÉvA•‰Aôý|Au“AìQ’Ab¦A‰A–A‹l¢A}?•AjAP§AX9¤A ¾Açû¾A¦›ÚAøSèAåÐáA¬÷AË¡öA'±Bݤ Bq=BÛyB–C Bî|B1ˆ&B+B²B¢ÅBP BœÄBÕxíAžïöAÍÌãAìQøAœDB¨FBhB‰ABš BP &B¾3BÃõ=BB>B¢ÅCBݤ6B®Ç?BYBw¾=B%†0B)Ü,B7‰BÇËBÕøB+Bq½ BÛyBJ õANbàAú~âAÅ ÛAshòA¶óóA%†B— BD BX9Bo’)BÖ1Bú~=B!0?B-22B¸ž.Bö( BƒÀB7 B-2BªqBHáòAj¼ýAÑ"öA1âAÙÎÏAHáÉAZdÍA´È´A\µAyé¢Aw¾žA‘í€AÙÎYA¼tBÛù‚B…ë€BÂ|B=Š|BR¸nB¾eB}?kB¦sByilBúþpB®ÇlBžïuB šnBh‘pB-²jBö¨`B^:ZBV`BºÉcBBeBåPrBü)zB¸ƒBœ„ˆBªBBëBò—BÙN’B°2ŒB{”†BoÒ€B-²uB^:uB¨FpBázsBžo}B!0BžoˆBî<ŽB¤ðB¨–B5ž“BZä–Bm'”BB ”BÁ •B㥎B33ŠBÀˆBCB‹lB‡–ŠB²ŒB–C‰B¼ôŠBò’B‘­Bã%’BÃ5B¶óˆBÖ‡B„Bß„Bn„Bq½BÇKƒB¸žŠB¶s‹B3³BÉ6’B}”BÀ“BRøB¢…‹BA„Bª1B˜nxBîü|Bd»sBd;xBTczBË¡ƒB5^‡BºÉBËá”Bò’—BE’B‰’BÃ5™B“—B‰A‘B.•BmçBÁŠ–Bdû“B–•Bk”BúþBj<žB9´B —žB¢žBãe¤B‘í¥BöèŸB`ežBmçžByi¡Bݤ£BåОB`å B‘­›B¢ÅŸB¦›¦BoR¥B¬œ¦BÍ ¤B/¢B5ž›BW—Búþ“B5žB!°‡BE„Bj„B ‚{B-2€BºÉ†BmçŠB1ÈB¾_”B1H’Bð'–ByéB´Bò’‹B?µƒB!°|Bsè{BoBÃõmB{kB^ºmB}?pB ‚sB¸Þ€Bé&„BÕø„BÍÌ{B®rB ‚}Bu|B+‡B¢EBR¸}B`eB ×~B°²‚BÍŒ‰BçûBHa“Bs¨˜Bo˜BãåBížB——B¨†”B‰ÁBF6‰BÏ7ƒBbЀB'±„B,„B'±ŠBRxŠB.BÕB3³•B{Ô”BÛ¹”BË!B-ŽBÁ†B{TB7 }BÍL„B—‡BoÒBẄBH!ŒB®‹B3óB‘-ŠBF¶ŠBü©ŒBJŒŒBÃõtÁR¸HÁ˜njÁ°r:Ásh9ÁÑ"!ÁyéRÁL7yÁsh‰Áff¥ÁÓM³ÁX9ÐÁ¬æÁZþÁÅ  ÂX9ÂNâÂJŒÂÂî|óÁffÕÁÙÎÍÁ˜n°Áôý©ÁR¸¢Á`å™ÁºI™ÁÍ̶Á33ÇÁ/ÝÞÁ= åÁÍÌóÁPÂÅ ÂøÓ“˜Â1(‹l)Â338Â?µ6ÂB`:Â+‡,‹ì(ºÉÂyi–C ÂD‹úÁX9äÁV×ÁjÀÁî|ËÁ—ÝÁßO÷ÁbÂßO®ÇÂÓM¢ÅÂ`eÂã%ƒ@ÂHa²Âq½Âu“÷ÁÁÊÙÁyéÓÁshêÁR¸ìÁšÂfæÂžo Â…kÂD Âáúš™ ¶ó Â% ÂÏ÷ÂTãëÁ¶óÒÁøSËÁ/ÝÜÁ¾ŸÑÁ‡ÏÁmçÄÁ¼t¿ÁVÛÁ¬ÝÁ ÀÁÃõ¿ÁyéÕÁ/ÃÁ-­Á)\™Áú~…Á33_ÁÕx+ÁæÀÝ$úÀÑ";Á!°bÁÕxÁŸÁ!°°Áçû¤Áh‘šÁ'1~ÁôýVÁd;ÁÏ÷óÀ7‰À‡ÀR¸ž¾ÇK'@¾Ÿz?'1è¿‹lÀìQÁR¸*ÁNb6Áƒ\ÁHáPÁ)\mÁ}?sÁøSŒÁd;qÁÃõVÁ}?3ÁbÁ¬ÁƒôÀ!°Áü©µÀ“À¼t3¿ìQ˜?˜nr@ffŠ@Õx)@ã¥;¿ÓM:ÀÑ"×Àq=ÁÂOÁìQvÁsh—ÁÇKÁÙΫÁd;±Á‰A«ÁºI”ÁÑ"‚Á®GKÁF¶Á²¿ÀD‹”ÀX‰¿œÄ@? K@F¶³?#Û@ÃõH¿œÄ ¿q=zÀmçƒÀ{î¾9´H½ßOý?…ë‘>ªñÒ?j¼´¾5^ú¿NbœÀB`ÝÀÑ"ÛÀ}?Á;ßAÁøS_Á7‰‚Á wÁ“>ÁÓM:Á'1Á}?+ÁÕxÁ°rØÀff’À“àÀ;ß»À‹lÀ'1HÀ˜nªÀ¬ ÁR¸.ÁyéjÁ{fÁ;ߊÁ00ð§pA‡AòÒœA/²AÃõËAjÆA¤pÇA¬ÛA)\ÇAð§ºA®G£A‰AšA^ºŸAË¡–Aú~«A°r¤A…ŠAøSšAF¶‘A´È¯A‘í·Aj¼ËA´ÈÛA¤pÕA¾ŸïA{úAP Bö( BÓÍ BßOB}?ùAHáþA+ðAÅ óA ûA‡áA¶óèAÛùÙAu“ãAË¡íA‡–B¸ž BBB?5!BP#Bh‘.B¬(BÕx/BB%Bç{(B‡.BÓÍ8B8B¸ž-B¤ð)BÛùB-Bq= BffúAw¾êAÂÌAö(ÄA;ߪAB`®AÝ$•AìQ–Ad;uA= aA ×uAŠAìQ§A^º¶A´ÈÓA‰AëAPöAu BR8B'1BR¸BL· BNâB9´B ×êA˜nøA/ãAã¥õAÍÌñAÙÎñA ×ÔAR¸ÏA¬ÌA{³A%¥A\ŸA}?±Ab¼AB`ÊA¬²A-ÁA–CÁA}?¾A= ÙA+ÖA+‡êAòÒøAd»B…ë BÙÎB®Ç B^:Bö¨B5^B¨F(B¸ž0BÝ$=BË!:B²B9Bîü/B¨Æ+BX¹B5ÞB…kBßÏB9´ïAÃõÓAš™ÍAsh°Ayé°Aš™–A?5žA/Au“TA/oAð§‰AÇK¨AF¶¼AÙÎÛAÙöAP÷Aç{B šB´ÈBÏwBL· B!° Bî|úA+çA?5éA“ØAX9îAL7æA–CäAºIÇAyéÁAbÂAff«A'1—A㥓AÏ÷¤AÏ÷§AR¸´AªñœA‡¡AX9¶AÕx§AbÁAj¾A ÖAj¼âAbûA%B-²óAºIB‡–B¦› B‰A BZB9´BºI)Bq=$B¢Å+BHáB!B9´B33BÁJ BÇKøA{úAßOâA`åóA;ßB¼tB7‰ B'±B/B š'B;_5B!°ABË¡CBÁJLB#[@BÍÌBB„>BÃu?B š8BÚ6BÙ8Bff,B}?+BòÒ$B×£B'1"B×£&BÓM3Bã%1BÇK0B ×:BÁÊ›Búþ£BßÏ¢B+‡¡B˜n¡B‰ABÁÊ B°²¢BåPžBéæœBÁŠžB¦[ B¶s£BÓMŸBw¾ŸBšBÍŒœBDK£BÁJ£B¶s£B!ðžB‚ŸBY˜BXy•Bsè’B+ŒBj¼‡BJ ‚Bú¾B¶óyBD€B´‡BºIˆBLwBjTãõ?ü©•@`åì@¾ŸA®Ï@¾Ÿâ@q=z@˜nR@`åP=w¾¿F¶+@²@X9Ä@ßO¡@o×@ƒÀž@)\@{ž?×£¿ Û¿²ÀìQèÀœÄÁ‘í0Áð§(Á—êÀî|ßÀçû‘ÀÝ$ÎÀ¶ó­À9´è¿òÒm¿u“hÀ+ÀÛùž?•½V½¿= §ÀPßÀÏ÷-ÁázHÁoƒÁ00NbZAoiAªñAßO”A¬²A×£³AìQÁA“ÑAìQ¹AòÒ¹A-²£AÙ¡AÁʬAZ®Að§ÆAmçÇA•±AVÁA°A°rÆA‡ÅA¸ÓA¦›ÔAÅ ËA¬áAd;æA¬B²BVŽBd» BF¶B€ BÝ$BºÉBáz BBÛyBjúATcB#ÛBR8Bö(B¬œ B—+B¼t(B€0BVŽ+BJŒ2B)\.B 2B)\?B IB>BþÔBƒŠÁÕxWÁ–CeÁ-2Á4ÁÁÊÁö(@Á^ºcÁ–CƒÁTã¢Ámç±Á®GÎÁF¶æÁé&ÂÖÂ`å‰Á‰ÁÂ+‡ðÁ•ÝÁ®ÂÁ˜nÃÁ#Û§ÁƒŸÁ®G˜ÁªñŠÁ…ˆÁR¸ Á+‡´Á˜nÌÁ'1×Á—ÞÁö(êÁþÔðÁü©ÂÙ ÂßÏÂåÐÂ1+Âúþ+ÂZ.Âw¾"Âã¥ÂË¡ÂD ÂJ îÁj¼ÐÁ´ÈµÁV¯Á+‡¡Á´ÈªÁøS¼ÁôýËÁ= æÁHáûÁ#[Âw¾Â+‡ ÂÏ÷´HÂþÔÂ/]ÂÖ ÂÍL•ýÁ!°ßÁVÏÁ–CäÁ`ååÁVüÁžïùÁVÂ-ÂázÂ…ÂXýÁßÏÂ/Ý÷Á-æÁÛùÏÁ¾Ÿ¸Á\³ÁÃõÄÁ%»ÁÉvÄÁTãºÁòÒ²ÁôýÏÁR¸ÕÁZd¼ÁÙμÁ˜nÙÁ-ÏÁ¸ÁL7 Á5^„Á5^ZÁ:Á¸Á+‡ Á“LÁR¸dÁ°rÁ¾Ÿ’ÁìQ¤ÁmçÁZdwÁú~XÁ{(Á×£øÀ7‰ÀL7Ù¿˜nÒ?ázD@ƒÀÎ@½@ff>@–C >“LÀVÊÀR¸æÀ+%Á¾ŸÁ7‰AÁHáTÁ;ßsÁ¨ÆGÁD‹$Áw¾ßÀV½Àé&µÀw¾gÀ×£xÀ…‹¿‡@Tã•@-²µ@ßOAü©AßOA Ÿ@33#@HáZ¿PÀ¬ÒÀ/ÝÁåÐVÁìQZÁžïÁÍ̃Áã¥sÁ->Á¬ÁÕx±ÀXÀ ×#½L7É>øSc@/Ý”@j¼Ä@'1”@j¨@‡!@ú~š?ÀNbÀÉvÎ?…‹?5^z@Zd @X9T@㥫?;ß¿?Év^¿)\'À#Ûé¿`åˆÀu“ÌÀÃõÁ;ß;ÁÝ$.Á ïÀZdÁð§ÆÀòÒõÀÓMÁ)\‹ÀßO=À–CËÀD‹ Àh‘í¿ZdÀNb¤À}?Á!°(ÁçûeÁ wÁ?5™Á00L7QAú~rAÂAÉvžA-¸A+¶Au“·Aq=ÃA…±Aq=¯AyéŸAÏ÷œA ¥A'1A…ëµAÏ÷²A1›A?5«Aj¼žAÕx·A`å¶A ÏAXØAjÐAjéAd;óAF¶BòR B®G Bu“ BåPBXBÝ$ÿATãB B…ëøAÿAVïAÇKôA33BÙÎB{B9´$BåP,BHá)BßO4Bžï0BòR8B9´-B}¿/BÃu9B)ÜDBD =BøÓ6B¸3B…k$Bã%B‰ÁBòR B¢ÅB äA®GÚAÛù¼AºI¸A}?ŸAHá¡A{†A+uA¶ó†A+›A¤p´A¬ÉAÑ"çA‘íBBàB®BZBÂBÏ÷BÕøBD‹B¼tB˜nûAùAÓMåAË¡øAÕxùAåÐöAZdÛAË¡ÖAZÎA²»AV¨Aff¤A¦›®Aáz¯A–C¸AÉv¥Au“§AD‹ÀAjµAXÏAÑ"ÎA= åAôýñAÅ BJŒBšB?µ B¦B´ÈBYBßÏBË!BÁÊ(Bj¼*B‹l1B W$B(BîüBü©B{” Bj¼þA9´ýA= åAÕxõAžoB/ýAHa B‰ABBJŒ&BË¡5B‰Á?B5^DBåÐABh‘4Bj<9BÂ.B4BþT1BìÑ+B`e/Bq½#B°ò)BÍL"B^º&BþÔ&B\,B¤ð8B¢Å>BåÐ7B ×>BÃu;B×#9BœÄ5B5Þ&B˜nBÓMBÉv Bj<B¶ó BìÑ B`eB–CýAð§òA¢EåA'1ÛAåA°ríAúAªñBœÄB…ëBZä!BVŽ-Byé8BÛy>B–Ã1BJŒ4BÃu&B Bw¾B¶óB5^B}?ãAƒÀâAVæAVÔAR¸½Aü©¼AåнAçûªA ×¶Ad;¢AÙ¢A†ATã†A`åBÃõ’BT#Bú¾ŠBoˆBm§B'±{BhQB˜®†BT£‡B/B/]‰BÓÍŽBÕx‹B!°B=ŠŠBï†B)\B¨†‚BÃu€B*ƒBuÓ†Bî<ŠB‹¬B‰’B˜Bq}–BÉö–BÛyByéšBD–Bö¨BHa‹BÀ…B¢Å†Bs(†B ÚŠBNâBÚ’B B˜B1ˆ™BkšB¼4žB…šBÖBšB´È˜B馔BABj|ˆBo’„BåˆBð§B²‹Bž/B¢‘B„”Bo›B}ÿ›Bò¢B}?¢Böè›BÙNžBþT—Bq½˜B\Ï—Bç{–BÏw™B‰A B“Ø¡Bì£B¸¥BhÑ£B¡Bw>™B¨–B°²B¬Ü‰BÅ ƒB Z…BÅ €B¤°ƒB5ˆBŽBH¡“B¶³™Bƒ€ BL·¤B)\¡B)œ¡BP¨B×£¥Bq=¡BP¦Bfæ B²]¤BqýBF6 Bþ”›Bd»©BÄ©BN¢¨B–C«Bq=¨BÙήBÍ ­B°²¥BÅ£B´È¡BoÒ B¡Bé&›BjüšB;ß“B¸Þ’BEšB žB‡¡B×£žBî| B“šBf&˜BZä–B Ú‘BïBïˆB¨Æ„B¶s}B…ë|BøÓ„B—†BïŠB;B?u‰B¤0B鿆BÉv…BÃ5€BÛyuBsèhB/ÝdB\B„]BË!`BÇKaB'1iB€mBƒ|B׃B¾B‹ìpBukB`åsBÅ lBw>vB#[qBœÄoBuBš™qBo’yB²ÝƒB!pŠBº ‘BbЗB˜.™BØ BþTŸBÓ™B­“BøBX¹†Bç{BL7|BR8‚BÑ"}B‹lƒB¼´‚B3s‡BÏ7ŠBÃ5‘B‡V“B33‘B«ŽBî<ŽB!pˆB†BÝäB¼tˆB׌BR¸‡Bf&ŠB)œ‘BÁÊ’B“˜”B²]•B;˜Bô=™B‰B 5Ážï Á¬ Á¾ÀçûéÀÓM¦À¸ÁF¶7ÁÍÌNÁR¸ƒÁ–CÁ1«Ásh¼Á¢EØÁú~èÁ®GÂPúÁ íÁ`åÒÁ‹lÄÁ×£¨Á˜n¤Á¾ŸˆÁxÁš™[ÁøS7Áj4Á{nÁË¡ƒÁ‘í¡Á¢E®Áªñ¹Á®GÏÁB`ßÁHáúÁË¡ÂbÂÕø Â`åÂáúÂHaÂj ÂZdÂÓM÷ÁÛÁázÉÁ+‡«Á•˜Á˜nÁÂÁžï‘ÁD‹Á×£®Á–CÉÁî|àÁçûÜÁu“ôÁÍÌñÁòÒÿÁ®G‰AÂX9óÁ¼tíÁw¾âÁƒÀÕÁ–C¶Á= ©Á‘íÂÁ‘í¾ÁTãÓÁøSÃÁ…ëÚÁw¾ÙÁòÒßÁ—ØÁö(ÔÁ^ºãÁî|àÁd;ÓÁ ׸Á¶ó£Á¨ÆÁ%®Á-²˜Á®G˜ÁþÔŽÁ^º€Á+‡›Á7‰¢ÁX9…Á‰A…Á…™Á®‰ÁNbhÁü©EÁ¼t ÁìQÔÀ ×{Àsh‘¿˜n¾Ï÷cÀÍ̸ÀÓMÁÍÌ2ÁTã=ÁÃõ"Á33Ád;ÇÀ‚À¨Æk¿ü©Ñ?J z@Ãõì@®Ï@X9A= AmçÇ@¼t§@°rØ?ÇK¿mçû¿²£À‰A À/ÝüÀÛùÁ= 3Á×£ÁR¸âÀ¾Ÿ’À#Û)À®7ÀÅ 0¿ö(<¿)\Ï?¶ó•@¦›Ø@bAìQ(AÝ$4A`åA…¿@yéV@µ¾ 3À´ÈÊÀVÁ—JÁR¸<ÁNb`Áî|gÁÙjÁ#Û7Á×£ÁD‹°À˜n:À°r(?F¶Ó?‘í˜@“¸@ö(A\þ@+Ažïï@ý@33‡@´Èž@h‘AôýÈ@Zdÿ@ÇKÇ@L7é@q=š@ƒh@Ö?ÍÌ,¿Âu¾V%À‘í À}?ÍÀÑ"÷À)\ÓÀ/ÝLÀ‚À!°"À+‡–À¦›„Ày醿%‘?‘팿'1ˆ¾\R@HáZ@é&Q?;ß7ÀºI¸À7‰ÁÁTãQÁ00ßOcA+‡`AF¶‰AffˆAff¥AjªA`å¹A“ËAµAÂÃA33³A–C»AÓMÎAºI×Aé&óA×£õA˜nÜAìQçAZÖA`åäAshÚA‰AæAL7áAÑ"ÕA˜näAªñÛA‘íöAfæBw¾ B˜îB!° Bé&BåÐ B!0B×#BÅ Bê%B—Bh!Bo%B¶ó1BË!3B€:B-²ABØB‚‘Bb“B`%™Bç;œB9tœBH!¤B®Ç£B#ŸB¸ÞœBÏ÷™Bq½–BªšB°²˜Bu Bfæ£BLw©B`¥°BøÓ´BX²BÀ¶B)²Bçû¯Bí¬BXù§B¤BNbB'ñ—BbЗBAžBÍL¥B`¥¢Bɶ§B/¦B{”ªB×ã¬Büi­B¸±BH¡¯Bɶ§Bf&£BšœB°²—Bªñ”BNâB¬\“Bðç™BX¹žBÓ ¢B-²§Bã%ªBÉv¬BÓÍ¥BZä¤B¡BuÓœBÅ•Bôý“BH!B-ŽB Ú‘B B–B™B33žBÏ÷¢BZ§B9t¥BTc¡B²Ý§B1H¨B3³ BB¡BD œBqý›Bø–B„–B´H‘BžïB¤p BÉö¢Bo¤BÁJ¤B˜«B\Ï®Bô½¨B'q¤BšY¤BZ¤¢B£B¢Å›Bd{™BN"”B˜•B¼´›BðçŸBÁ ¢Bq½ŸB-ò¡BPÍœB¸^œB®Ç—BšY”BÛ¹ŽBPMB@‹B-„BÍÌ„Bš™‰B}?ŽB}?‘B1ˆ•B\’B\“Bô½BuSˆBí‚Báú{B7 oB¸žuBTclBnBºÉsB¼tyBÖ€Béæ„B#[ŒBƒ@’BÁJ’BZäŠB1ȆB–ÈB؃BHa…B!0BZd|BÙNBR¸tBé¦wB„ƒB;‡B=ŠB!p‘BP“Bº‰˜Bì‘”B¬B;ŸŠBZ¤†B°rBö¨~B5Þ}BÑ"†BÃu†Bw>‹BݤŽBRx•BœÄ–B-2žBš™Bj¼˜B+•B¨‘Bï‹Bwþ…BÓM‚B¬\…B¾Ÿ‡BVN€BBÙ΄B¤°…B)œ‰B¯ŠB‘mBw~’B33—BœÄÁTãÉÀ7‰ÅÀƒPÀ/ÝLÀw¾ÿ¿D‹¤À'1ÈÀÙÎÁË¡AÁ/ÝXÁL7‹Á¢EšÁ ·Áƒ¼ÁØÁj¼ÞÁ²ÑÁßO¸ÁD‹¢Á˜n…Á°r`Á}?'ÁffÁË¡ÕÀþÔxÀ #ÀL7ÁÀ¦›ÌÀ/!Á'1PÁÃõfÁj¼ÁJ ¢ÁZ¸ÁË¡ÓÁ–CÚÁÝ$ÛÁÇKêÁ1âÁ‘íÐÁ˜n²ÁÍÌ™Á¸‹ÁºI`ÁœÄ:ÁÁßO¹ÀÂáÀ•«À°rèÀR¸îÀøSÿÀÍÌ8Á?5dÁþÔ„ÁÇKšÁÝ$“Á7‰ªÁ‡¨Á®¹Áj³Á5^³Á9´£ÁV¤Á…‰ÁR¸…ÁœÄ“Á7‰‰Á…ëŸÁ9´ŠÁo”Á—‰ÁyéˆÁ1ŠÁßO}ÁÃõ•ÁþÔÁ¦›Á˜nlÁ#ÛWÁã¥9Á`å^Áš™;Á33=Ásh ÁmçÛÀVÁR¸>Áö(Á¬üÀ)\3ÁåÐ.ÁF¶óÀð§¾ÀÀÑ"›>ü©@?5–@é&Í@L79@XA@ð§F¿Ý$6ÀÓMÀ®‡¾w¾ß¾V@žï»@åÐ A'1DA–CUAáz‡AÁÊ‹AË¡§Aî|¯A+‡ Aªñ‰AHá`A#Û+Aö(A‡@u“h@-ò>)\ÿ¿#ÛIÀÏ÷Ó¾ +?¸e@Å Ä@åÐê@š™-AøSAAøSaA¬ŠAj¼™Að§ªAçû¹A}?¥Ah‘”A!°|AVOAVAßOÕ@ã¥k@yéÖ?ö(¼¿ff¶¿¶óEÀ!°zÀ!°jÀ5^¿d;?@Ï÷»@q=AB`9AòÒ7AøSqAî|mAV†Ab…A{ˆAœÄpA´ÈrAö(>AË¡;AmçeA˜nLAPyAøSWAJ ^Aªñ8AÂ=A= +A Aáz2A7‰A— AVÅ@9´¸@ôý @ÛùÚ@Ë¡@¢E¾@)\G@ªñ@ £@ßOñ@¾ŸŠ@^º@žïã@¢EÚ@o{@¦›@¨Æ‹¿ÙfÀ•ŸÀVÁ00‹lwA¸qAR¸†AÙ†A‰A£AÑ"–AßO¨AshÃA…·A{ÈAázÁA-²ÎA¼tåAºIéA{B‰ABd;ðAùAÃõæAºIóAbæAã¥ñAôýðA¤páAþÔôAoõA9´Bd;B¨FBd;B\Bh‘BøÓB+‡BB(BX9#B%†1B.Bð'=B²@BÙNHBþTEB¸LBX¹OBXDBøÓIBö¨:B/]?B/5Bö¨4BP>B€JB=ŠGBÁJJBÓÍKBé&ABØ@B!°9Bƒ@1B×£-BÙN"BZäBªq B{ÿA?5âAyéÒA1·AþÔ²A•¾A¬ÛAÍÌôAé& B-BÓM"B- B“˜*B².BÕx4BÙ.BD &B¬B…ëBš™ BVŽBw>BÍÌBã%BÑ¢ B‰ÁBÑ"ëA¬ëA9´èAö(ÒAåÐÀAü©ÀA㥵AƒÀ±Ash•A°rŒAw¾šAh‘¢A—ÀA‰AÑAXëAHáýAªñBVŽBö(ìAÍÌûAÉvãA–CâA-ÛA\ÕA×£áAbèAJ áA= ýA…öAh‘BoBX9þAé&ûA‹làAq=íAã¥ÛAd;òA`åøA´ÈîAú~öA33óAR8B´HB;ßBjB¶ó Bw¾ B¤pùA“ûAÝ$éA—úA\BþTB¨FB;ßBé¦Bo’BƒÀ%Bff'BB1B × BíB¶³«B®‡©BP¬B;_©BÉv¯BÍ ®Bø“¦Bƒ¦BL7¥B…k£B¬¤B¾ßB¾_œB…k•Bwþ”B^zœB¤0žBf¦¡B‡VŸBãe¡BìÑ›B)ÜšBÉö™BTc•B W’BìŽB/݉BÙ΂B3s‚B;߇B1‰B šŒB®ÇBœÄ‹BƒŽB}?‡Bž/†BÖ~Bô}sBTãhBøSjB˜n_BÙdB—dB\iBd;uBƒwB)\ƒB3³ˆBƒ…B%†|BÝ$xBºIzB‰ArBVyB^:vBhrB'1xBìÑvB–CBB`†BFvŒBÅ ‘B=J˜BÏwšB)œ¡BC¡B{T›BšÙ”BªBú>‰Bº‰…Bn€BìƒBøÓBs¨„BÑ¢„B%ÆŠB BšY”B!0–BR8”B×#’BZäBJ ŒBÁ ‰BZ$…BðçŠBq=ŽBhŠB°òŒBƒÀ”Bô½”B%ƘB„˜B¾Ÿ›B-žBÕ8¢B{fÁV-ÁÛùÁ^ºÉÀžï·ÀÏ÷³ÀjÁ®Áu“&ÁºIXÁ= ˆÁªñ£Á®G«Á= ÊÁÓMÌÁ1åÁ ×òÁƒÀãÁ‘íËÁ—²Á“—Á–CƒÁ—NÁj2ÁD‹Áj¼´Àé&ÀmçûÀ7‰ùÀ®G1Á+cÁî|oÁî|’Á33žÁZ¯ÁJ ÌÁ ÖÁ¨ÆÜÁ;ßãÁ33ÜÁî|ÎÁ²³Áçû™ÁB`€Á+‡ZÁÂ%Áq=Áj¼¬Àj°ÀªñrÀ+«Àmç›ÀøSãÀÕx'Á¢EXÁ€Á–ÁÏ÷’Á…ë¬Á¶ó±Á¸ÄÁL7ÂÁ1ÇÁTã·ÁƒÀ¸Á¬ ÁìQ£Áî|¸Á°r®ÁÓMºÁZ©Áî|°Á®Áð§—Á?5‘Á}?„Áƒ–Áh‘ˆÁVÁoUÁÃõ<Á@Á-²qÁ\VÁ#ÛeÁßO3ÁÁÊÁ`å>Áj¼lÁXMÁ°r<ÁsÁ-²{ÁçûMÁé&/ÁƒìÀÙ΃À‰AHÀV-¾q=Š>ZdKÀÅ À¼tŸÀ/ݸÀÍÌœÀ}?Å¿¾ŸÀƒ@½`åX@Zd£@¬A¤p/AjjAázpA²—AVšAÑ"—A^ºwA CAÏ÷ A^ºÉ@ÁÊ@Háú>¬ú¿Ï÷›Àü©ÍÀÓMRÀ+‡Àö(Œ?#Ûa@áz¼@¤pA+‡¾®Ç?²¯¾?5@ÕxÉ@ú~AÏ÷A1@Tã%¾#Ûy¾`å`@9´@@w¾½ÙÀµÀjìÀB`!Á¼tKÁ00ZdœAî|‰A1žA5^Ažï©Aáz¥A'1»A…ëÏA;ßÅA‹lÚAš™ÖAƒÀéAXüAô}B¬ BšByéB/B5ÞBîü B¼tB¾ŸBøSòA= éA?5óAÙìA«BBåÐBPBF¶Bîü"B+"B¼t*BÑ¢5BœÄ3BåÐBB.=B7‰FB-²FBÙNBmgHBºÉJB¨ÆLB5^BBìÑEBºI:B =Bªq1B×#-B+‡8BåPCBw>FBòRJB¯MB DBøÓDB33:BÇË3BœD+B`e BÃuBžïB+ BmçòAƒÀçAmçÐA/ÝËA= ÌAçûáAD‹ùA°r BbBmç!BB`#B€/BÃõ1Bƒ;B\9B…ë.B'1)B¸žBw>B¯B…ëB¼t B94Bd»B®þAƒÀéAåÐåAìQæANbÑAáz¾AòÒ¼AþÔ©A%ªAú~A¬„AªñA˜n“Aff²AJ ÈA˜nãAôýöA/ÝöAË¡ýAçûâAžïÛAyé¿A¬ÃA+‡»A¬¾A˜nÆA1ÍAZdÅA¨ÆâA®GÛAÇKòAÂåA;ßêA'1êAìQÑAjãAÛùÜAƒÀ÷AÕx÷AìQêA-çA—ÛA®GöA®G÷Aw>BÛy B'±B+B¬íA õAêA²ôAyéíAºIóAú~B¸žB{”Bé¦ B×#B!°BV%Bd;0B)Ü.B+%Bsh"BݤB/BJ Bü©ñAƒÚA9´¾A/Ý¢A;ß­A\œAßO¦Au“–Aªñ˜AVˆA7‰cA/ÝZA`å~A‹lA‘í‹A¢E¢AV¾A= ÖAôýôA…BœÄBã%BþÔBj<B„ B1ÿAyéíA`åÏAš™ÕA7‰ÀAj¼±Ah‘¨Aªñ¦AÍÌ‘Aü©}A㥆ANb€A\šA²™Aƒ¬A–C˜APA€›B®‡˜B–ƒ”B®’B}?’Bç{‹BhчB'qBjŽB@ŒB“XŽBq=ŒBw~‘BBB”BÉvBžo‰B°2‡B˜®†Bf¦ˆB¾ß‰B¨ÆBáz’B™B}?œB‘í¢Bú~£B#[£BXù©B3s§BÑ"¢B9´›B–BF6BhÑB B‘BZ¤“B¾_™B®ÇBÝ$¥B\Ï©BD˨B¬¬BÅ`¨Bã%©B²¦B×£¨BuÓ£B…kŸB¾_˜B)œ“B'±˜B}ÿœBsè˜BoRB‘-B‹l¡Bh¦BN"¦B‹l¬B馪BRx£BÉö B?5œB…k›B¼ô˜B®‡”B%F˜BéæB°2¢Bœ¥Bj|¨B¸ž©B/]©Béæ¡Bãe Bú¾˜B‘­”B×B ÂB)œŠB-òŽBéæ‘BuÓ˜BbB€¢Bªñ¨BB «B㥧Bž¯¨B¨†¯BhQ¯B!p©B,®BÑ"©B‡–¬B!ð©B9t§Büé¨B˜´B¶s´B˜î´Bœ´B%F±BƒÀ¶BþºBìѵBuÓ±B=J³BÅ`±BFv²B¼´¬BVΫB^º¥B–¨Bq½¯B…+°B´H³B¾Ÿ²B³B¬Búþ¨B{Ô¥B} BÛ9šB–Bª±”BÇ‹ŽB‰A‘B˜n—B×£™BB`žB¡BVžBÕx¢BWBD œBö(–B}ÿŽB\ˆB¢…‰BN"ƒBß‚Bs¨‚B*B‹¬†BX9ˆBÙBÏ÷BFöBË¡‰BËa…BÝ$ŠB‘í‡B–CB)\ŒBHa‹B!ðŽBÏ÷ŒBé&BÉ6—BÓÍœB¤0¢B3ó§BD ©BøÓ®Bø“«B–C¤B“X¡Bú~šBœ—Bƒ‘BߎBÁJ“B;Ÿ‘Bžo–Bò’–BÏ·™Bå›B¢Bí¤B^:¤BøS BÏ÷žB¼ô—B+Ç“B'ñBH!˜Bš™B°r”Báz—BZ$žB33BþT B‡ÖžBøÓ¡BÍŒ£BØ¥B¶óÁî|uÁÏ÷SÁff Áj¼Á/ÍÀü© ÁßO Á‡AÁé&iÁ;ßÁj¼¨ÁázµÁ{ÏÁøSßÁPîÁæÁ/ÊÁžï¿ÁßO¥Áö(ŽÁ‰AzÁË¡MÁòÒaÁî|-Á…ë Á¨ÆÏÀjÁ×£ÁºIBÁøSmÁ¶óuÁ¤pÁœÄ”Á¾Ÿ¨ÁffÇÁÉvÊÁázÚÁyééÁé&åÁ…ëÑÁš™µÁ`å›ÁÇK‚Á…YÁþÔ"ÁPÿÀj¤À¬ÈÀHášÀÓMŽÀé&IÀB`ÉÀ˜nÁ^ºAÁôýpÁ–CÁZd˜ÁshµÁX»ÁœÄÍÁNbÔÁ…âÁázÏÁÉvÐÁo¸Á…ÁÁú~ÚÁd;ÈÁ= ÕÁ¸ÃÁq=ÉÁî|²Á®¦Á‡ŸÁX9‹Á²“ÁžïƒÁü©oÁƒJÁTã5ÁJ 6Á–CeÁ{\Á#ÛyÁD‹PÁ‘íXÁ^º„Áôý”Á'1~Á^º‡Á{¦Á¥Á)\•Á¬~ÁXYÁF¶ÁåÐÁ}?ÅÀ'1¼ÀßOÁÃõÁßO=Áš™1Á-DÁ‰AÁ}?¹À•£Àö(¼¿j¼t¾çûq@Í̼@ìQAþÔ:AË¡uA²cAD‹ZA®G#Aƒô@!°†@Ù@Tãe¿X)À®GÀî|ÇÀƒÀÎÀw¾/ÀÅ¿X @ôý|@ú~¶@ÉvA“(A7‰WATãAú~•A…ë›A%¬A“§A®G Aú~ƒAš™eAî|?AXAœÄÐ@Ù‚@v?%¾¨Æ#ÀX9´< ×C?'1H@®G½@q=A²A‰AHA‰A:A WA¢ERAÓMZA¸GAé&;A#ÛA“ô@Évv@þÔ`@?5®@–C—@…ëí@þÔ¼@+‡AÍÌA¶óA^º AAF¶%A9´A?5ö@Õx™@ú~2@ö(@VŽ@Há@bÈ?ƒ@¾bÀ®GA?‰AÀ?¤pÀ“<À/ݾ)\ï¿X±À¬ÄÀÂÁ‹lGÁ'1rÁo–Á00®‹A®G…AZ AƒÀœAçûµAHá¬AÁÊ»A#ÛÖA+‡ÒAƒÀÛAh‘ÑAÖAìA;ßíA¤pBX9BÛyB7‰ B¬üAåÐB ×ùA‹lþA˜nõAÏ÷çAÁÊùA˜nòAêB\Bu“BZäB.B#ÛB¢EBj¼'B\2BåP)B‰A4BºÉ-BB:BÖ9BbGBþÔDBáúKBð§MB7 DB)\EBòÒ9BÛù8BøÓ4B/Ý6BªqEB WLB¶sLB}¿LBVŽNBð'AB^º>BßO7Bð§0B}?)BF¶B«BR¸ BºIB%íA‹lÚA¬½A¤p¾AªñÆAÙáAX9ñA´HB)ÜBX¹B^:B®Ç+BÃu0BÉö7B)\5B×£(B#B¬œB`eByi BåÐB1BÍÌBBÙÎüATããAázÛATãáAé&ÎAü©·Ayé¸AB`¨Aü©¤AÏ÷‡AžïA–C‚A#Û’AV²Amç½AþÔÛA\íAî|üA—BZdæAäAjÈAVÆA¦›ÃAR¸ÃAš™ÏAœÄÒAu“ÉA—áAVÓA îAyéåAé&ïANbñA×£ÛA‰AêA{ÝA?5÷A#[BHáòA¾ŸõAøSíA˜nB°rB°rBffBé¦ BHaBBÇKþA‘íôA…ëBD‹B¤ð BJ BÚB¯ B°òBÍÌ(BÑ¢'BÅ 3B×£?BÑ"=B/Ý2BË¡2B/*BBBªñB‰ABÙøAƒÀÞA¶óÂAã¥ÌA/¼A ¾Ažï¤Aé&ªA‡šAœÄƒA°r|AÅ ŠA㥗Aü©¤AÙλA—×Aš™íA ×Bê B/BÙÎ$BB¤pBåPBZäBªñüA—àAÇKàAF¶ËA˜nÅAºI´AÛù°A‰A ANb‡AZ‡AÍÌ‚A}?™AL7‘A–CŸAázˆAB`A £BVΟBÅ ŸBöh›Byi™B/’Bö¨ŽB‡–’BL·˜Bj|•BR8˜B+G—BºIœBÃõ™BƒœBuÓ˜By)“BjB˜®B7 ’Bu“B¬œ™BÀ›Büi¢B¼´¤BH!«B´È©BòÒªB×£±B®Bƒ©B…«£B/žB²]™B¬œ˜B7‰šBô½™B94 Béæ Bf¦¨B«B3s­B¤p±BÁ ¯Bš±B7É®B ‚¬BẫBÑb¤BÖB²ÝžBs¨¥Bwþ¦Bì£B#›¦BåP¦BÉö§B`¥­B+­BB ³BÀ´B š­BX¹ªB^º¤B˜®¥B-¥Bãå¢Bª±¦B¶s­BìBw~±B˜î´BßOµB9ô±Bž¯ªBZä¨B'ñ¡Bã¥B…k—B7É™B¬\“Bþ”•B9´™BîŸB…+¦B!ð«BÛy²B˜.µB'±±Bmg±BP ¹BA¹BX¹³B BµBR8°B;Ÿ²BšY®B°2¯BFö¬BÇ ¹Büé·B°²·Bþ»BøÓ¸Bfæ¾BRxÀB—ºBu“·B¸B-2·B‰A¸Bº ²Büi±B׫B‰¯Bs¨¶BÃõ¸Bw>¹Bq}¹B3ó·B‘-±B¢°B+G¬Bj<§Bw~¢B?õžBåPBç;—BBà˜BÅ žBÁŠ¡B^z¦B¬Ü¨B…¦BþÔ¨B £BDK B¬œœB¬–BZ¤B€ŽBwþˆBžoŠB=ŠŒB+ÇB’B!ð“Bo’›BJŒ BJŒŸB¢Å—Bn”B ×—BÏ7’B–Bݤ”Bh‘B\•B?õBVN“BH!šB¤° B®G¦BAªB°²«BÅ ²B —±B?µ©B¦›¤BHažB´ˆ™Bðç•Búþ“Bß™BËá™BžBø¡B#›¦BV¨Bd;¯B.®BR¸ªBúþ§Bjü¤BÓ ŸB+ÇšBîü–BÁÊœBÕ8ŸBô=™B¾_šB°ò¡Bj¢Böè¥Bo¤B¾_§BË¡ªB+‡­BžïoÁ•=ÁÅ $Á?5âÀ¾ŸžÀü©…ÀF¶ÛÀ¬æÀåÐ Áff@Á—xÁð§˜Á¢E¢Á#ÛÀÁÀÁÏ÷ÖÁHáÛÁªñÃÁßO³Áj¼™Á`å€Á²gÁ-.ÁÏ÷+Á ûÀÃõÀÀÑ"kÀq=ÊÀî|ïÀºI&Á`åRÁ¾ŸfÁ9´‹Á‡Á×£–Á33­ÁÉvÄÁmçÎÁÅ ãÁ'1àÁÍÌÓÁw¾¹Á•¢ÁþÔ„Á¨Æ]Áb&Áö(üÀÅ €À®G‘Àw¾À¬À—®¿Å ¨ÀázÁV:Áú~\ÁÙ‹Á5^’ÁÕx­Á?5³Á)\ÂÁd;ÀÁNbÃÁÇKµÁ-²¸Á“¢Á¶ó¦ÁçûÀÁ'1´ÁžïÁÁ¢E°Á^º³ÁJ ŸÁ!°™Á¬ŒÁ33yÁ¸‡Á¤pcÁ+EÁÝ$(Áj¼Á\Á'1FÁ•/Á ×IÁ…#Áé&ÁX9PÁ¨ÆqÁð§PÁÕxSÁ‹lˆÁ;ß…ÁiÁh‘;ÁÍÌ Áôý°Àö(ÀœÄ€¿/½¿ —À㥓Àð§öÀjÁ5^Á+‡–ÀªñÀÀ®Gñ?î|G@‡Ý@5^A¶óMANbrAP“A-²Aé&A¦›HA—*A¬è@ƒÈ@“ @°rè>Í̼¿w¾À¤puÀˡž+‡–>Vv@w¾Ë@ A¬8A KA“€A“A˜n¨AZ¢A¦›¾A㥱A?5©A¬ŽAD‹tAÛùLANbA¾ŸÚ@-²u@5^ª?¨Æ@š™?-"@d;7@j @¾ŸAsh!A5^:A‡aAú~JAq=jAL7mA33€A;ßoAZxAš™OAB`;APÿ@shÝ@®GA= A= 1AžïAé&AAo%A¼t7A“*AœÄA¸IA‰A@Aªñ2AÉvþ@%Ñ@sh±@òÒé@®G@V…@ºIü?¢Eö>yéf@®G¡@NbÀ??5?yé.@#ÛY@B`å¾Há ÀþÔ´Àmç Á= +ÁJ bÁ00Å NAœÄ@A˜npAZdqAòÒ“A®AžïžAÅ µAX«A²¸Ah‘«A㥱A‰AÇAÁÊÎA}?èAºIîA‰AØA-êAd;ÖA®GÝA¬ÍAÂÛAÙÎÏA{ÃA°rËA^ºÃAÃõßA‡øAð§úAÙB ×B¢E B‘í BhBBB}¿B+!BshBu“%B•*BF68BÁJ2B¸žÀ¾Ÿš¿u“ˆ¿yéfÀ/‰À¨ÆÏÀºIÁ EÁB`ÁVŽÁff«Ásh²ÁoÐÁ¢EÑÁçû¾Á ©Áj¼ŠÁ…ëaÁøSGÁ%ÁoÁR¸¶Àš™iÀÑ" Àƒ˜ÀƒÀÂÀyéÁ!°@ÁƒÀNÁmçyÁòÒƒÁÕx˜Á/ݳÁTã¿ÁÕxÑÁ…ëáÁÃõáÁþÔÖÁyé¸Á‹l ÁÕx„Á!°`Áé&1Á= Á-²‘Àö(˜ÀºI4À®“À¢EŽÀøSãÀ¬ÁV=Á•gÁ¾ŸŽÁVŒÁ¨Æ¦Á ×±Áš™ÁÁZd®Áé&¿ÁåЧÁáz¬ÁƒÀÁD‹ŠÁÃõ¤ÁÑ"žÁìQ®Á}?œÁ×£­Á)\šÁú~‘ÁÃõ„ÁÇKkÁ¼t…ÁÕxqÁ¾Ÿ^ÁÏ÷3Á-² Á/ÝÁ®1ÁÛùÁçû/ÁÅ Á7‰Á!°4Á+SÁü©+Á/Ý*Á5^hÁ#ÛWÁ˜n@ÁÝ$ Áq=¾À/ÀyéÆ¿b@¬J@Ûù¿•¿1ˆÀ5^†Àyé‚ÀìQØ¿ü©¿´È¶?¦›¤@ÍÌÔ@%#AøSOA¾Ÿ†AÍÌ•A¸±AD‹ªA°r¢A^ºƒA×£^Açû#AÉvAºIŒ@jD@}?µ>-Ò¿;ßï¿Zd‹?u“@Tã¹@¬AA`åBA= YA1ˆA ×AoµA¬µAòÒÆA¦›ÂA…ë¸Ao›A ׇA¬ZAßO'A¾ŸA/Å@¬D@¦›@`å0?L7ù?/½?é&‘@X9A¶ó-Aq=BA¶óqAœÄlA+AÛùAÏ÷œAœÄ–AìQ“AB`ƒAd;yA;ß;A+‡AœÄFA%;A9´pA®GSA¾Ÿ|A!°bAÓMhAî|UAú~BAÓMfAË¡UAåÐ6Aq= A/ÝØ@9´¸@ÛùAmçÇ@“ä@/‰@Zd[@ÙÊ@˜nö@h‘™@shq@´ÈÒ@œÄÜ@žï_@´È¦?9´ÀV¡À ×çÀ˜n*Á00—Î@Tã±@¼tï@J Þ@¾Ÿ&AžïAã¥#AôýZAö(RA^ºaA®aAj¼bAB`‚A/ŒAb¥AR¸¬AF¶’AVAþÔŒAHá™A ׋Aj¼›A#Û’AòÒ’Au“¥AÅ ±A}?ÇAX9ÔAVçAPæA—ÖA\âAffÜAÏ÷äA?5þA õA1ˆ B, B1B}¿Bƒ%BshB¦'B²$B-2BZB šB3³ Bö(Bh‘ýAVŽB°rBú~BÅ Bö(B3³BYB‘í BR8 BTãBòÒðAã¥ÜA‰A¿AJ ­A°r“A‰A„A)\OA×£VAÑ"yAmç–A¦›§AF¶ÃAé&ÝAj¼ôA¬ëA\BshÿANâBffBð§ïA…ë×A¢EÄA¾ŸÁA;ßÁA¦›±AÑ"ÁAð§ÃATãÐA1¹Ayé¡A  AçûŸAh‘‡A×£rAD‹lA1`A5^PA®GAã¥A¼tAA7‰QAçû}A'1A צA½A˜nÍAÑ"ÆAÑ"ªAü©©Ad;A7‰—AÏ÷’A…ë–A+‡—A7‰¨A²´Aö(ÊAƒÀ½A9´ÈA¿AP´A)\°AÓM“AòÒœAo‹Ao¢Ah‘«Ash—A‰AšAffžAßO¹AR¸¹A¬ÕAžïßAÙÎÎAoÎAßO²AJ ÀANb§Ayé¡AÙªA‹l¢A)\¶AbµA33ÊAÁÊÌA…ëÕAÂíAßOBh‘ BÕxBöA33ÿAÕxêAôýÖA²ÂAøS¥Aé&˜A^ºsAbLA^ºiA= QAçûyA^ºUAÁÊ_A²CA1&Ah‘ A{A‡A‡'A¬PAZxA´È—Aq=®A°rÅAœÄàAÙÎúA}?ìA˜núAøSáA¦›ÉAP±Aö(”AffAªñjAff\A-DATã9AAÔ@¬AB`á@;ßAÃõø@òÒ'A  AÑ"-AH¡¯B}¿¯BP ªB)\¨BNb¥B#›ŸBázšBoÒœB-²£B ÚŸBÕx£B–BD BJ žBuÓ BNb›B˜B“B'1–BZd–Bd{™BÇ‹žBÅ¡B“©B¶s«Bãå±B–C¯B¦[¬B9t±BÍÌ®B¤pªB«£BÅàžBî¼—BX9–Bff–Bƒ˜BÛyžBFöœBX9¤B^ú¦B´¨Bm«BÅ`¨B?õªB–C¦Bžï¥B“¤BåОB%†™B%”B¦›˜BffžBNâšBöèBƒ@ B\O£B˜î©BR8ªB)ܰB'ñ¯B˜.ªB?5«Bªñ§BZ$ªBÓ¬Bu­B —®Bô}´BþT´B9´¶Bì‘´Bá:µB‡Ö°B «B1§B°²ŸB®™B×#’Bfæ•B)œ‘BE—B‰AB7I¤Bî©Bo¯B+·Bò’¹B9ô¶B}¿¸BN"ÀB¢EÀBD ¼BĽBš¹B½Bl»BÑ"¿BHa¾B7‰ËB?uÇBfæÂB®‡ÃBd»¾ByiÃB°rÃB ½BVNÀB^zÀBjÁBÅàÃB{T¿Bé&ÀBé&ºB‹¬½B×£ÃB!°¿BðçÃB¾BÝä¿B`¥¸B ¶Bžo´B\®B×£ªB®Ç¥B%†¢BÖžBB`ŸB*¦B‡–¦B;_¬BÉv®BìѪBj¼¯B Ú«B@ªBN"¥BÛ9 Bo™BÑ¢—BX¹‘BsèŽBªñBÅ`B.“BH¡’B—˜BךBmg—Bd{‘BZ$Bh‘”Bì‘“B;Ÿ™BÅ šBÅ šB-òžB?µŸB{T¥Bu¬B¸^±B“صBÕ¸»BåмBT£ÃBÕ¸ÃBãe½B ¹B®Ç²BV¬Bö¨¦BÇË¡B‘­¤BÛ9 BߤB5Þ¢BC¥BZä§B¤°¬Bw¾°BR¸°BÛy®B¾ß®B ¨B Ú¦B—£B…©Bß­B©BÇ‹­B–³B/´B¦[²Böh³Bô½³BF6¸Bƒ€¹B‘ínÁD‹6Á ×Á¨Æ¿Àªñ¢ÀffvÀ®GÁÀ¬öÀš™Á´ÈLÁd;Á7‰“Á1©ÁF¶ÄÁ= ÍÁÓMâÁ ׿Á¬ÑÁ9´»Áš™ŸÁ¤p‡Á+‡pÁ˜n<Á˜n>ÁJ Á^ºíÀ/ݬÀ ÁmçÁ®OÁçûsÁPÁ+•ÁÅ ŸÁ¼t¯ÁªñÌÁÍÌÔÁþÔãÁ¶óæÁ×£åÁ ÑÁXµÁºIžÁ#Û‚Á¬^Ád;3Á¢EÁNb¼ÀÑ"ÃÀåÐjÀƒÀjÀ9´ÀÛùÒÀ1 Á¦›VÁ1zÁd;˜Á‰AžÁþÔºÁNbÅÁš™ØÁ—ÐÁ#ÛÐÁNb»ÁXÁÁ רÁF¶³Áu“ÑÁ#ÛÊÁ—×Á…ë¿Á)\ÇÁh‘¶Áff¯ÁÍÌ›ÁƒÁ¶ó˜ÁçûŒÁh‘Á{`ÁKÁ×£BÁ{jÁªñRÁ¸iÁ“LÁIÁd;€Á+‡ÁôýtÁÛù€ÁøSŸÁ×£™Á¼tÁZLÁìQÁX9ÈÀmç·À…À¸}Àu“äÀÃõ´ÀÙÎ ÁVÁôýÁçûÁÀ¸ÀmçcÀ®‡>@ÓM¶@F¶ A+EA‘íhAXˆA/ÝtA×£TA¬&Aü©A;ß—@u“€@òÒÍ>®'¿°r0Àš™¥À®G©ÀR¸À•=;ßo@;ß§@h‘é@ÕxAÇK/A¬^AÑ"€AÙšA£AßO¶Ao±AD‹®AX“AR¸A—VAºIAÕxõ@ @“´?w¾ï?Tã¿øSc?Å @Nb¤@mçÿ@Õx+Aé&5A—dAu“VAçû}AÉvrA= ‚ANbxAºIVAVAL7/Ayé(A}?=A“(A¾ŸAu“¸@–C[@ÓM2@%¡@X@´È>@mç[?F¶3¿Há2@œÄ@‡©?7‰?{>@/Ýô?ÇKÇ¿‰A`Àú~ÒÀ-²Áyé@ÁìQrÁ00\Š@š™1@Õx@¸m@é&å@+‡ò@)\)AÙÎUAoEA•sAPgA}?…AåИAV§A= ¾AôýÐA¬ÀA¬ÉAºI¬Aj¼²A33žA¶óžA®A¨Æ}A!°„AoyAÏ÷”A¬ªAb²A-²ÁAçû¼Ah‘ÑA¸ÚA¦›íAÖBÇKBw¾ BR8Byi BåÐ Bî|Bƒ@Bð'BžoB…B1ˆBD BÉvBÉvBÅ BBB‰ÁB²B+‡B B5Þ BšBÉvôAÙÎìA`åÓA+‡ÌA33±AßO«A-‘Aw¾{A‡GA9´NATAÝ$…A`åŠAL7§Au“¸AffÖAªñ×AL7ïA}?þA“˜ BƒÀBTãîAú~ßA¤pÆAÀAD‹¬A?5œAÇKAHáA= AÑ"–A¬vAHádA7‰uA EAÃõ A-AVæ@7‰­@¨ÆË?¶óý¼`åp?çûy@ÓMâ@“AìQTAœÄjA“~AffˆA¼tUA²SA‹l%A‹l#A?5AR¸AƒÀA!°Aö(APSA#ÛCAR¸nA²kATãoA1rA‰A@A ]A¤pCA¬rAÙ~AºI^A)\eA= aAòÒ†AßO†AázšAL7¡A‡Au“zAœÄDA‘í:AƒÀ$Aú~8AOAð§fAD‹‹A㥃A9´›A)\•A%¥A²A)\ÊAÇKáAPÑAžïÂAìQÆAo°Aq= A㥋A;ßcAHá6A+‡A= £@jÔ@;ß‹@ÁÊá@/Ý€@ƒ¸@Zd‹@9´ˆ?øSC?^ºÉ>Tãå?-²5@ö(À@%AÁÊIAçû€A´ÈŠAìQ¨AÑ"ÂAÓM¼A9´ÄA´È¨A¬ŠAÂwAff>A–CKA-²A ×AßOÝ@7‰É@R¸^@V ?ƒ€> ë>ú~‚@= ?@Ñ"Ã@ôý˜@´ÈÚ@åбB¬œ®BÉvªBÍ ¨BPM¨BÍ ¡Bm§Böè¢BL÷§Bf¦¥B…ë¥BTc¢B ¨BÝä¥B¢ÅªBmç¥BìžBêœBþTœBj|ŸBÅ`¡BÇ ©B¶s¬Bž¯²BÓ¶B¬½Bþ¿BLw½B=ŠÄBþTÂBVλBsh¶BPͯB¸žªBÑâ©Bk§BÕø§Bmg«B°²­Bh‘´BZd¹Bðg¹BVοBšÁBø“ÅBÏ7ÈBmgÊBÍŒÍBÊB}¿ÊB@ÉB¨ÊB;ßÇBç»ÀBð§¿B-²¼BعBƒ¾BÃ5ºBy)ÁB#›ÂB}ÿºB¬œ·BÍ̲B²¯BF6°Bk­BÙN¯BbжBéæ·B¾ß¼B%FÀBÍŒÄB3³ÂBõ½BÅ`»B«´B%ƳBÓ ®B!0±B°r¬B—¬Bþ­Bò’²B ×¶BøÓ¼BL÷ÃB%ÆÇB€ÁBoÁB¬\ÇB ÄBHá¾Bö(ÄBD‹ÀBã%ÃB¬\ÁBÁBÁB\ÏÊByiËB‡ÊB¶³ÊB“ØÉBð'ÐBÉöÑBøSÌB ÌBáºÍBR8ÌBJLÌB1HÅB#›ÆBÇ ÁB¨ÆÀBuÈB-²ÆBÃõÊB1ÈB´ÊBÉvÃBq½ÂB¤0¿B‹¬¹Bç;µBß°BÓÍ­Bî§B?µ¨BÍ̯BB ±B-2¶BËa¹Báú¶B‰Á¹Bî|·B¢ÅµBR8²BX«B Z¤BL·¡B“XšB5Þ™B-2šBÝ$˜BFöšB,™B¬ÜŸB1H BBšY–B¶ó˜BËáB9ôžB!°¥Bª±¥Bk¥BéfªBh‘¦BÛy©BÝä°B7 ¶BVŽºBd»¾Bwþ¾BªñÄBç;ÅBoÒ½BËa¹B´H³B)\®B{ªB}?¨BÅ`­BP ªB¨¯BW®Bî²B¤ð³Bq}»B‹¬¼B;_»BšY¹BJL·B7‰±Bɶ¬B‚§Bj<­BD‹°B…k¬BNâ®B\϶B7ɵBÙN·Bö(µBoR·BZ$»B{»BÙΨÁb“Á¦›|ÁbHÁP3Á´È Á-:Á¼t/Á²[Á¤p€Áj¼žÁáz²Á‘í¸Á%ÐÁyéÕÁu“ãÁçÁö(ËÁ¨ÆÂÁ}?¦ÁÙÁ†Áªñ\ÁPgÁ%5ÁË¡!Áš™ùÀZ*Á‡5ÁÕxgÁP‚Á\‚Á'1ŽÁ¤pˆÁÏ÷”ÁÁʱÁVÈÁshÝÁPîÁ/õÁ7‰îÁú~ÐÁ•ÎÁ#Û±Á-¥ÁÙ‰Á—|Á-²KÁáz0ÁJ æÀßOÉÀÙÎÁ`å<Ád;=Á•{Á1‡Áƒ¤Áj¼¶ÁœÄÈÁj¼ÒÁ²ãÁßOáÁ{ãÁã¥ËÁD‹ÕÁî|¾ÁTãÅÁ•âÁú~ÚÁòÒåÁ¼tÏÁÛùÕÁºIÄÁ‰AºÁÕx£Á”Á¸Áj¼rÁìQPÁƒ6Áj¼ÁÛù.Á7‰iÁ¢E\ÁNbƒÁ¾Ÿ`Á+kÁŒÁyé›Ád;ÁÃõÁÑ"¶Á?5®Áçû¤ÁX‰Á9´lÁé&;Á…ëOÁ5^ÁÉvÁ¬@ÁºI"ÁÅ NÁ%EÁ®UÁ…ëÁ‡ñÀ´ÈÒÀ-:Àžï¿¬R@ƒÀb@Ï÷ç@TãA²]AÃõXA¶ó=AòÒ A^ºÑ@ ×C@Ý$†?q=*À¬„À…ëÉÀNbÁX Á°rœÀßOeÀq= >d;Ÿ?Zdk@¦›È@oA{>A²iA}?ŒA‹l†AžïžA˜AôýAÛùƒA+‡€A{\A}?#A´ÈAÛùŽ@—ž?F¶³?þÔx¿¾Ÿz?ö(Œ?Ù†@¨Æç@ÍÌ AÕx#A²QAü©/A1>A5^&AA7‰AmçAZdÏ@Há¦@ÍÌü?ÍÌL¾1¬?!°‚?j|@˜n @sh¡@Z @¼tÏ@ÁÊÑ@ö(Ø@ö(AD‹ Aú@Ñ"ƒ@ôýd@#Ûé?Õx@/ÝD¿?5Ž¿ÂEÀ¨Æ‹À^ºé¿ÇK¿‡À­À‘ílÀªñŠÀ#ÛÁX9ÁªñJÁÑ"gÁ/ÝŠÁ¸¥Á00çûAj¼@Õxñ@+¿@7‰A ×ß@þÔ"A‡WA33]AÙÎA‰A„A;ßA¦›­A/ÝÂAPßAÂëAoÖA-ÍA5^²ANb­A;ߟAX®AÏ÷šAshšAj¼˜AHá•AR¸©AÉvÄAš™ÖA®GëAw¾áA'1îA/ìAÑ"ñA)\BR¸BR8BåÐBHáB94&BìQ0BË!+BÉö.B;ß*BÁJB7 B{ BB´ÈùAh‘óAžoBÑ¢ BîüB¬BáúB«ByéBð'BBoBÕø BJ B¶óôAVÛAVÁA¨ATãA^º™Aôý£AÂÀAVÑA^ºîAZdøAÉvBÃõBR8B+‡BÇKB/ÝüA¬âA“ÊAü©»AÇKÆAh‘½Aƒ¾AìQÅA²ÉA¬ÜAßOËAÅ ²A‡°AòÒ­AZd˜Aü©‚A }A1ZAÙ4A㥠AßOÕ@VAÃõ>Aú~lAÓMŠAu“ AÛùµANbºAb³A-•Amç‹Aw¾YA¬^A´ÈFA2AåÐ8AV0A#Û-A{nAnAö(AL7‘A…ëŽA+‡A1tAìQ†A×£pAF¶‹A¢EŠAžïyAÙrAÁÊuAü©’AœÄ’A «AL7¢A7‰•A9´ŽAôý`A}?KA´B3s­B5©BËa¬Bɶ±B5Þ¯BR¸µBšY±BPM´B= ²Bú¾³Bd{¯B¨F«BœÄ¥B×£©Bª±¥BÅ «B‰°B Z³BZ»Bœ„»Bº ÂBh¿BÓM»B9tÁBP¾Bs¨¹Bî²B1H­BþÔ¥Bº‰£B¦¤BÓͦBƒ€®B/¯BN"µB×ã¶BÑb¸Bf&ºBãe·BL·¹BÁʵB;ß´BÇ ´Bh­BÅ ¦BÓM¥B`å«B­B¬\©Bþ”®Bf¦®B ±Bþ¸BÑ"»BÅ`ÂB²ÇBƒÁB+ÂBøÓ½B B¿BÑ¢¾BÁмBÑâÁBB ÆBÛùÇBªqÉB%ÊB+‡ÆB‡ÂB'±ºB¶BÍÌ®Bjü¨BÇK£BÛy§BË!£Báú§Bsè­Bqý´BRø»BH!¾BêÅBÅ`ÉB ÊB˜nÈBç»ÏBðgÑBÖÌBÙNÐBšÙÊBVÎÎB¾ßÊB…ëÏBÕ8ÍBf¦ÙBì‘ØBìÔB)ÕB…ÐB¨†ÕBöèÔB‡–ÍBî¼ÍBÃuÌBBàÌB%FÏBD ÊB-rÉB–ÃÃB/ÆBJLÍBö¨ÎBöhÐBËáËBÕxÌB˜®ÅBò’ÄB ÃB¾B“غBø“µBéf²Bh‘«Bu¬BC²BÍ̱BÁ¶BÙ¸B¤0µBž¯ºBžo¶BœµB°2²B\ϪBd;¤B;_¥BòRžB¤ð›BP™BÚ˜B= œBN"›BVN¢BD§Bw¾¤B…Bk›BÖŸBN¢ŸBÇ ¥B®¥BE£B= ¨Bm§¦B\Ï«BœD²B\¹Bú~¾B–ÅBXÇBw~ÎBÑbÍBnÇB‡ÁB%†ºB¶ó´BÑ"°BB¬B}?¯BÍÌ«B¶s®Bd»­B!0°B7I´BAºB W½BÇ˼BÑ¢ºB!ðºB¼´µBwþ²BÅ ¯BwþµB#ºB°ò¶BÕ¹B/ÁB¾ŸÁBìÃB^:ÃBÖÄB ZÊBÉvÌBœÄÓÁÏ÷»ÁÇK®ÁX9šÁÅ …Á´È‚Á/݉Á×£ÁF¶£Áyé¹Á¶óÏÁæÁÁÊëÁB`þÁ²õÁü©¸ž ÂÚÂÇKüÁÍÌáÁZÑÁ“½Á;ß§Á¾Ÿ§Áu“‰ÁX9rÁ–CMÁ)\[ÁìQ`ÁF¶„Á²šÁþÔŸÁ‘í´ÁZ´ÁÏ÷¹Á?5ÙÁ¢EîÁþÔêÁ}?ùÁ¶óðÁôýÙÁq=½ÁD‹ŸÁTã†ÁÓMlÁNb8Á®5Á;ßÁ}?Á{þÀ}?¥À×£”ÀffÁáz.ÁbVÁ²†ÁPÁƒÀ£Á×£¿ÁÅÁÁÊ×Áu“éÁ²øÁL7ñÁZdÿÁ1íÁPüÁòÒÂùÁ“ÂÍÌéÁ¨ÆãÁ®ÊÁÉv»Á–CµÁ ¢Áb­Á ™Á´ÈÁÕx‹Á33‡ÁHá˜ÁL7§ÁV Á«ÁPŽÁ33ŽÁ°r¡ÁR¸ºÁÙ©Á ¤Áw¾ÁÁË¡ÊÁòÒ»Á;ߦÁÁÊ‘Áq=|ÁjtÁmçAÁ‹lCÁh‘sÁB`[ÁV…ÁD‹rÁøSiÁu“.Á×£Á¾ŸÁôýÐÀ×£¼ÀìQÀ «¾D‹L@òÒ­@/ AZdû@9´ð@…ëi@þÔ(@²Ÿ¿‡1À-ÒÀshÁÙÎ7Á´ÈdÁ33cÁZ(ÁÅ $ÁmçÏÀƒÀ†ÀÉvî¿= —?´ÈV@+‡Ö@Ë¡ AL7AAX90AX9bA [AF¶WAL7Aö(Aú~AJ –@˜n@J ‚¿D‹ŒÀh‘•ÀÓMÂÀ‹l_Àš™!ÀJ ²¿ƒà?+@Ù†@+Ë@R¸’@ ×§@㥋@ßOm@;ß›@mçs@ÉvÎ?…ë=î|_ÀœÄpÀî|¿ffNÀþÔ˜¿ö(ü¿Nb0?ìQ˜¿\‚¾¾Ÿº?Õxé>HáZ@9´@@Nb(@•¾‘í|¿yéÀR¸Þ¿Õx­À•·À#Û Á‰A.Á-²ýÀ#ÛÑÀƒÁu“4Á5^ ÁƒÀÁ MÁ5^\ÁœÄ‹Áh‘–Á5^«Á/ÝÁÁ00‹lAj¼Ô@•÷@Nb¤@X9è@×£œ@ºIì@{2A7‰5AþÔZAB`qAd;‰AX¦AÙ¯A+ÉA¬ÕA ¼A{·AƒÀ›AoŸA‹l‹A²˜AÓMANbŠAáz–A®G—A-²«AoÁAJ ØAìQãAžïÛAú~áAÍÌÝA×£ÜAôA5^öA%B®BÇKBD‹#Bw¾+BF¶#B)Bh'B­ByéBœD Bé&ýAƒÀèAøSÚAÕxïA+BœD B šB WB¢ÅBNâB“˜Bé¦ BBÇK BÂýAázìA5^ÑA?5µANb¢Ažï†A®GA33 A-ºA)\ÊA ×éA\õATãB®GùA–ÃB1BÅ ùA‹läA?5ÒA`å¶A‰A«AË¡µAœÄµA…³A'1ÀA²ÃAj¼ÚA7‰ÉAX9¶A/ÃA¬ÈAV­AD‹›A33ŠAjzA®[A¬&AÍÌA`åBAøS]A‡‡A%¢A㥰A ÉAj¼ÍAÙκA\ŸA㥒AžïkAÉvhACAøS%Aã¥#AHáAåÐ&A×£ZAžïkAyé…ANb‹AÅ ŠAî|A¤psA33ƒAyénAš™ŠA‚A®[A®GEAq=:A/ÝbATãoAòÒˆA/wAƒRAé&3AZô@-²é@þÔ@%‰@ü©Õ@TãÙ@5^$A;ß?A´ÈtA´ÈŠA`åAî|±AÙÌA5^ØA+ÇAþÔ¬Açû¢A´È†AjpAƒ:Amç AòÒÑ@ƒÀJ@?5^?`å„@h‘5@ö(´@ƒÀÎ@ÃõAÂAú~¾@#Ûy@š™I@ ×C@{Î?ÍÌt@D‹¼@ƒÀA6Aw¾YA-‰A‘í¥Açû£A¬»Að§¬A“ŽAu“…AÂWA OAÉvAÕxÅ@š™Í@ƒÀþ@“˜@ÁÊ1@•@²‡@ ×A‘íAøSCAj4A5^dA€¸BR¸½BÍŒ¹B¼4¹Bîü¶B¢…²BÕø¬BL·®B¬°B®ªBÙN¨B3ó¢BHá£Bj¼žBìQB!°—Bfæ“B“X“B}ÿ–B«šBT# B'q¦Bþ­B´BP·Bå¿B‘­¿B5žºBÃ5¿BœD¸BÇK±BËá«B‚¤B/Bo˜Bç»–B!°”B•™B˜BãeŸBhQ£B B¨B–¯BR¸¯BE³Bmg´Bç{´B—µBsh±Bf¦¯BTc¬B×c°BD ²B¾_«BX©BTã¦B¼4¥BX¹ªB3³§B Ú­B¼ô¬Bª1©Bj¼ªBã%¨BD‹©Bá:­B¤p¬Bø“®Bê²B@±Bݤ³Bò´B¸¶B“³B ®Bƒ€«Búþ£B'ñ¡B=JŸB€¤B×c¡BW¤BD¦B`e­Bh‘²BJ̸B´È¿BÛy½Bª¹Bðg¿B¾ßÅBFvÂB)œ¾BN¢ÄB˜.ÃB´ÈÉBhÑÊB`¥ÌBð§ÐB¼´ØBÛ¹ÓBUÒB7IÑB‹lÎBshÒBô½ÒBËaÍB®ÐBÓBÕBF¶ÛB“ÛB\OßBšÙBÙŽÞB-2åB¼´âB)âBÛBmgØBÑB®ÌBËáÈBhÑÁBj¼»Bƒ·BLw¹Bç{µB²¹Bö¨ÀBDËÃB ÚÉB‘­ËB‡–ÍB;ßÓBnÑBðçÏBðçÌBÅÇB¢EÀBC¼BHaµB=вB´³Bº ¯BZ$°B…k¬BN¢²BJ µB«´BD‹®BÍ °Bd;´B-´B馺B½BÓ ½B!0ÃBÅàÃB-rÉB¾_ÍBË¡ÒB%ÕBh‘ØBÅ`ÕB–ÙB–ÝBY×Bö¨ÖBƒ@ÏBœÍBTãÆBq=ÄBåÐÅB —ÀBåÐÄBJÌÃB+ÆB}ÿÃB×#ÆBhÈBìQËB%†ÆB ‚ÆB%ƾB\ϼBX½B®ÅBšÙÂBžo¾BZäÄB3sÊB´ÈB…+ÈBLwÂBZ$ÁB×£ÁB…«¿B= ØÁÍÌÆÁd;¯ÁòÒ˜ÁÏ÷€ÁÙÎcÁ\\ÁÓMfÁ‰A‘Á9´—Á¬³Á•ÁÁ7‰ÂÁ¦›ÕÁ)\ÅÁ+ÖÁ¶óÞÁ;ßÀÁu“ÅÁ{«ÁshŸÁþÔ“Á—ŠÁd;˜Á{|ÁHátÁî|CÁ-²KÁé&mÁ33{ÁºI‹ÁƒlÁPƒÁé&mÁ‹lqÁb–Á¦›©Á…ë±Á ×ÄÁF¶½ÁôýªÁ™ÁË¡“Á\nÁ¤pcÁ–C#ÁÙ&ÁÝ$úÀ¼tËÀ‡9À´È¶¾R¸î¿øS£À1ÌÀJ Á%?Á¸yÁ°r‘Á-«Á°rºÁ5^×ÁªñÐÁ¬êÁåÐÜÁÓMëÁòÒØÁ æÁö¨Â/ÝñÁÉöÂNbéÁÃõãÁh‘ÇÁ¢E±Á¶óÁ-²‚Áš™yÁ#Û?Á…ÁJ *ÁÙÎÁÉv@ÁzÁTãƒÁ—šÁøSŒÁ%—Á°r§Áôý»ÁR¸´Á ×½ÁƒÙÁÁÊÞÁshØÁoÃÁNbºÁ‡ Á\«ÁL7™Áé&œÁ'1°ÁºIÁ}?¬Á`å“ÁV’ÁçûeÁ5^RÁôýZÁyé*Á)\1Á-Á= ·ÀÙNÀ‡9¿XÙ?+Ç>´È†?yéÀ‘í$À`å¼À^ºÉÀ˜nÁìQ,ÁÂ3ÁPQÁßO3Á®GõÀé&½Àff>ÀL7IÀ®G¿}?¥?š™@/Ýè@ÂÝ@;ßA˜nAé&OA¬PA)\MA®G-AÅ AÝ$AÑ"·@øS¯@`å@X94¾/ݾV½¿q=@33S@¶ó@-²í@ázAä@—Amç·@Å ´@os@Z@Há@ü©ñ½ÛùÀ!°ºÀ•Á;ß7ÁÏ÷1Áôý:Áü©ýÀ¬ÜÀ¶óUÀ5^ ÀÓMb?%?o3@øSŸ@^ºÁ@ú~º@d;@d;ß=ÍÌDÀÅ Àú~¦À°ràÀF¶ûÀ¬ÁÇKãÀî|ÿÀ®5Áé&CÁ¨Æ=Á WÁÁʈÁË¡‰ÁF¶Á²£Á…ÂÁ`åÒÁ00w¾=jÌ¿ìQø>\¢¿Ùþ?œÄÀ?¬€@®ï@ƒÌ@ßO AÏ÷A+%AL7QA%kAq=A®G­AœÄŸA/œA;ß{A¬jAyé:A°rbA—FAƒ8Aj¼PA-RA¶ó{A;ß”A/ÝœA%®A¸¡Aƒ°A¼t°A¾Ÿ¿A1ÞAZdåA¼týA˜níAºIBþTBî|BfæB• Bé¦B¤püA#ÛöAÍÌÚA´ÈÍAÂÂA1»A33ÕAXâATãìATãðAÉöBºIñA/ûAÅ îA¢EÞAòÒÙAR¸ÇA×£¹Açû¢A—ŽA¬bA>AmçAbA‡+AVdAZxAË¡šA²¦AìQ¿A-¼AjÎAÕAÇKçA¢EÚA;ß¿A`å«A33“Aªñ•A;߈AÝ$zAÙ΂A¤pwAôýAÂyAÇKGA¶óCA¨Æ=Aú~A^ºÝ@VÕ@®ƒ@%9@+‡6¿‡!ÀL7¹¿î|¯?åÐ’@Tãñ@33)AžïMAu“vAJ hA!°4A^º;AJ AXý@òÒá@Ûù¦@×£¼@ÓM®@Ý$Ú@1 AÙÎ#AffHAåÐ>A¸?Ah‘=A}?Að§,A{Aƒ8A#Û?A/Ý$AÛù AVAœÄ!°*@sh>j¼L@{®?o;@ßOÍ>Tã-Àq=ZÀ‚À…ëÑ¿¶¿×£Ð?u“”@×£ü@øS/A%GA¢E‚A+‡›Aj¼˜Aw¾¥A%AZ\AffLAÃõAú~ Aj¼¸@Ï÷‡@q="@Ë¡@T㥾•#À+À%YÀ?5^>9´¿Õx@+=…S@%¤B}ÿ¦B¤°¢BÏ7£B33¢BÀœB–˜BɶšB㥞B…+œBš™›Bî–BÙ™B°r“B+—BTã“BjüŒBœÄŒBH¡ŽB–ƒBõ”BºÉ™BZäžB ‚¥B¼tªBFö±B?µ±B,¯B°2µB馰B!°©B¾£Bí›BÇ‹•Bì‘”B+‡B= ”B\O•B\Ï—Bü)ŸB¤BẦBƒ­B¨¬B™°B`å°B˜.¯B€¯B×ã¨B¾_£Bœ¡Bî¼§B´ˆ¬Bb¦B¢¨B˜n¥B%†¤BÉv¨Bɶ¤Bžï©Bo¨B®¤BÝd¢BBàŸBøSŸBo¢Bݤ B´ B´È¦BÉv¦BFö«B馫B'±®BFö«BBÏw¦B`%ŸBw>œBË¡–Bçû™B¬\–Bðç˜BƒÀ›BXy¢B«¦B–C­BÑb´B=JµB‹ì°B¨²B€¹BÝd·B²B)\·B…+µBÁЏB{¸B°2¸Bç{¹BoÄBBàÂB¸žÁBåPÀB'±¼BöhÁBÙÆB–CÂBœDÃBT#ÅBßÏÅBú>ÈB•ÃBÃ5ÉB)ÅBìÑÈBÉvÏB!ðËB×ÍBX¹ÈB…+ÆB¾B²¼B*¸B²BÛù¬B9´§BầBß¡BœÄ¥B¬Ü¬B°B…+¶B‰¹Bë¹BÙŽÀBJŒ»Bɶ»BD ºBœD´B—¬B²©B¢E¡B=ŠžB7‰BßÏšBsèBÑâ›BẢBœÄ¤B鿦Bò’ B}ÿžBXù¡B!°ŸBö¨¦Bƒ@§BVΦB‹¬¬BšY«BÅà¯Bü©µBô=ºBËá¼B^zÀBËá¾B*ÃB-òÃB^z¼Bf¦ºBË¡´B-r¯B¼t«B²]ªB­­B\Ï©B5^°B鿝BÝd´Bh‘²BÙN¸BÁ¸Bu“·B ‚²B˜î²BJL«B!ð§B®Ç¦Bžo­B“®Bª1¨B¤0¬B'1²B%¯BVΰBç;­Bq=­B¤ð¯BP®B…ßÁJ ÅÁ%¯ÁœÄ•Á7‰‡ÁHábÁbzÁmç‚Á5^œÁ‰A³ÁÅ ÑÁ×£âÁyéôÁj<ÂF¶Â…ëÂ\Âh‘éÁÍÌêÁ-²ÎÁÉvÄÁyéºÁ¢E¨ÁÃõ´Á33¢Á¾ŸÁVˆÁªñ˜ÁÍÌ©ÁþÔ»Á¨ÆÁÁÃõ»ÁjÆÁ¶ó¾Á‡ÈÁ#ÛßÁVìÁË¡•  W Âh‘ÂjðÁÕxáÁh‘ÁÁ¬´Á+‡–ÁNbŠÁ¾Ÿ^ÁB`aÁB`=ÁD‹"Áôý&ÁyéTÁX9|ÁÛù•Ásh«Á…ëÇÁÉvÞÁw¾ôÁ¯Â«ÂJŒÂîüÂ;ߦ Â…ëÿÁîüÂB`¢ÅÂ…ëÂh Âw>ÂyéÂÁÊõÁZàÁÈÁ33ÃÁ‰A­Á¬ŸÁ“˜Á•…ÁJ ”ÁV°ÁßO±ÁåÐÈÁPºÁ“ÁÁ¢EÛÁð§îÁ{ÚÁÃõáÁXþÁ}?ôÁ¸ïÁªñÒÁVÂÁP¤Ážï§Á ÁshžÁZd²Á¬¥Á㥷Á¢E¯Á¾Á^º­Á•“Á×£„ÁÁÊOÁð§FÁX9 Á;ß»À`åxÀV-¿}?-@¤p­?J ’?1ÀˆÀî|ûÀJ ÁZdCÁ®G[Áj¼rÁö(‰ÁF¶ÁÏ÷CÁçû'ÁZdëÀPÃÀòÒmÀÓM¿B`循ñb@ @bAÙÎã@²1AV6AP=A¾ŸAJ Abä@1T@/?PÀÑ"ŸÀmçÇÀ Á`åàÀ1œÀßO%À¬´ÈÖ?…û?é&‘?ÁÊÀj¼ˆÀ®ËÀøSÇÀ¬ÁôýÁ¾Ÿ Á>ÁD‹Áö( ÁB`GÁ¾ŸJÁ®G#ÁPEÁL7{ÁþÔ†ÁHá¡Á+‡µÁ‘íÍÁ7‰ÞÁ00q=r@—.@TãÅ@Há²@¬APA×£6A…ëaATãGAÑ"kA#ÛaAþÔAìQ‰AÃõ•AÑ"¬A‹lÇAb¾A®ÃA¤p§A¬®Aªñ™AÛùšATã‰AázvA¼t„A¤psA…ëAff¦AB`­AX½AƒÀ¹A5^ÐAÙÎÕAVðAåPB“B°ò B-2Bh BÇËB-² B¤ð Bü©B\B94 B= B¬ýAHáðAö(ëAßOäA7‰ÿAh Bê BbBã¥B)\Bw> B9´üA33ðA¸ÛA)\ÇA¶óÁAþÔ¤AÍÌ›A¢E‚AaAff.Affö(¿yé†?'1Ⱦ;ßgÀð§†À/ÝdÀ+‡æ¿^º¹¿å?š™•@Vö@J 2A1A¶ó A= !A × AL7Ñ@Zd‡@Vš@°r(@X9ô¾5^º=†¿ð§&@= ‹@ã¥ÿ@Ï÷×@ÂA^º´BÝ$°Bå«B1ȦB+Ç¥B`ežBPÍšBR¸žBH¡£B9ô B#Û¤B馤BÕxªB‹ì¨Bðç«Bj¼§BTã¢BØžB;žBåžBåПBøÓ¥B‡V§B®B¯BÙNµBÑâ³BÓ´B“غBÍ ¹B= ´Bš®B“Ø©B¢Å£B‰A¤Bm¥Böè§BË!¯Bîü°Bq}¸BÛ¹½B¼B‡–¿B)\»Bmg»BVŽ·BºÉ³BT#¯BåP¨BÑ"¡Bª±žB²]¥Bª±¬B/ªBþ”®Bɶ¯Bff²B ¸B‚¹B-²¿BíÀBª¹Bƒ@¸B‘í´B—´B3ó³B+²B#›µBš»Bn¼B#ÛÁB¬ÜÀBhÁBW¿B94·B33´B˜n­B–C§B…«ŸBƒ¡B;_œBºI¡BË¡¥Bö(«B¤0±B Z¶B'q½Bé¦ÁB¤°¾BšY½B7 ÅBšÙÆB´ˆÂB¤ðÄB5^¾BVŽ¿B¾Ÿ»Bå¼B¾¹B+GÉBZÈB¶sÉBH¡ÉBÏ7ÅBåÊBÙŽÊBÏ·ÂB3óÂBƒÁB‹lÂB‹ìÀBöèºBÏw¹B#³BbµBHá»BÝä½B®Ç¿B´¿B/Ý¿BD‹¹B3³¸BwþµB)\±B“جB¬¨B¦B×# B# B‰¥BßϧB¢E«BJŒ­Bf¦©B?õªBhQ¤BLw¡Bd{›BW—BÏwB’Bì‘BT£ŽBD ‘BP Bîü•BB •BÅ B¡BhQ B¬œ˜B#›“B-2˜BÓÍ•BH¡™B…˜B–B9´˜B¸—BÝ$›BìÑ¡Bê§Bš®BÙµB —¶B“X½Bì»B3³µB®®B“Ø©BH!£B®ŸBª1œB×# BB ŸBTc£Bå£Bl§Bçû©BÍL°BųBC±B‚¯BÍÌ­B×#©Bf¦¥B¤°ŸBÁJ¥BRxªB°r¦BV§BË¡®B¾Ÿ®Báz°B¯±B{TµB¸ž¸BY¼Bj<¶s ÂÍÌÂ-²îÁ¢EÓÁÙÎÁ^ºÖÁ¬ÏÁ®æÁ¤põÁ—ÂÛyÂD‹Âé&Â9´Â×# ¼t&Â…Â7 “˜ Âw>ÂX÷ÁshäÁshãÁ“ÆÁ-²·Áî|œÁôý©ÁœÄ©Á ½Áü©ÔÁ¼tÑÁÇKçÁã¥éÁ)\ïÁݤÂÂôýÂÅ ´HÂoíÁÂÖÁ33¾ÁTã¦Á'1žÁ“†Á}?„Áj¼\Á;ßuÁ#ÛkÁð§bÁôýFÁu“NÁu“~ÁX9Áü©¬ÁHáÃÁ°rÏÁ®GíÁTãúÁ#[ ¶ó Â'±Â#ÛÂ#ÛÂ'1¼t¼t(ÂòR Âmç¶óÂúþ Â)\ÿÁ!°ìÁš™çÁR¸ÎÁßOÔÁ{ÅÁö(ÄÁÕx¾Á¸ÃÁÆÁÛùÜÁÍÌÒÁPãÁ¶óÌÁ•ÉÁ‰AÚÁË¡õÁö(ìÁþÔæÁXºÉÂ}?ýÁZïÁé&ÙÁ+‡ÄÁÅ ÏÁ'1¹Á×£ÆÁ5^ÑÁ¸ÁË¡ÇÁ¨Æ»Á—²ÁÙ”ÁÍÌ’Áff’Á+kÁþÔZÁ= #Á×£Á×£ÈÀÀbؾøSÓ¿ÍÌl¿¦›ˆÀË¡±À¬Áq=4ÁœÄlÁ¢EŽÁ}?˜ÁX9²Ážï©Á¼tŽÁ°rÁî|aÁ²CÁázÁ¶À¬DÀƒÀ=ÇK·?Zdc@= ÷?q=Š@h‘ @ÙΗ?j¿X!À`åhÀ¶óåÀjäÀ= Áü©5ÁTã1Á˜n.ÁbÁ‘íðÀã¥ÏÀmçÀ´È6Àö(tÀTã%À5^¦Àd;À ×ÛÀòÒÁ9´äÀ;ßëÀ}?ÁåÐÁòÒSÁZÁ´È6ÁR¸XÁ—:Áš™aÁÅ BÁJ @ÁÁºIÁøSçÀü©‰ÀœÄhÀázdÀð§ÚÀßOùÀX9ÁPÁ•GÁ'1`Áw¾ƒÁü©Á‘íÁƒÀ‰ÁR¸žÁ;ß±ÁjžÁ9´žÁyé½Á®ÅÁ-ßÁ/ÝâÁ5^ýÁúþÂ00ƒ`@ÓMâ?Nb€@ Ë?°rP@—Þ?ôý@ôýAh‘ý@9´A!°(AÃõJA9´xA?5ŽAÝ$«Ayé½A—§Aö(AË¡‡A#Û‚A+‡XA‹loAð§XA˜nVAœÄlA‡wA5^ŒAÍÌ¢A®·AÑ"ÂA5^¶AÑ"ÅAd;ÃA'1ÊA¼tçA33ôAq=BœÄÿAÃõ B€B¬B¶sBú~Bð§B9´ B¤p BXüA‰AôAÝ$ÞA®ÉAçûÜA¦›õAݤB¤ðBš B•BZ BVBXÿA¤púA×£éA#ÛÛAj¼½Aj§AJ ‰AR¸fA²5A}?KA)\eAƒAÍÌœAB`»AÓMËAjãAªñÚAq=êA ×íA+‡îA)\âAyéÈA®°Au“›A{ A¾Ÿ•AøS‘AF¶›AøS™A?5³AÑ"¤Aq=‰A9´„A-ˆAìQ\Ad;1Aƒ(AþÔô@= ç@ZT@åЂ?‡©@¸@ÂA`åBAøSmAÉvŽAáz‹AÛù‹Aé&_AÏ÷EA{ A AÏ÷÷@L7Í@ã¥Û@J ¶@¾Ÿú@Nb,AƒÀ6A`åPAF¶aAÙFA´ÈVA7‰'A‰ADAøS+A•AAœÄLA¾Ÿ(A #AÍÌAåÐDAÃõJA+‡|A°rzA´ÈbAyéDA˜nAÁÊAoß@¤pù@®G#A'1Aš™MAžïKA¤p{A%{A‹lŽAË¡—Aq=®ANbÃA®GÀA= ¦Aú~®Aé&˜A~AbLAjAR¸Ú@®O@ƒÀÊ>PG@Ãõ@D‹”@‹l@ƒÀz@@ˡտsh¿ªñÒ¿ìQ¨?ð§Æ½ƒÀ@–C—@…ëý@¶ó3AJ FA= €ATãœAZd™A¸¤A¤p‘A`åjA¼tCA5^AjA¼tË@“”@J :@'1„@…‹?ºIÜ¿–Cû¿ú~"À)\o?´È.@ú~Â@?5Ž@ ×ã@L7©B…k¨B˜®¤B¤0 B?uœBÍŒ•B9ô‘B1È“BÑ¢šB‹ì—BPÍ›Bî<˜B¼ôœBÃõ™Béf›BF6•B°r‘B,B«’Bç;BL·’Bá:—B¾ßšB+Ç¢BF6£B‰©B'ñ¥BF6£B.©B¬¥B¢B\Ï›BhјBš™‘BÃuBÕxBÅ “BÁ ˜B¤°™BøS Bì£B¬ÜŸBVŽ£B¡Bf¦¥B„¡B×£B™ BVœB!ð—Bîü‘B–B3³šBé&–B W˜Bç{˜B%FœBò’£B¶ó¤BßO¬B\O®B¬œ§Bãå¨Bb¤Bj|¤BhQ¦Bb¤BT£¨B¢®B®B®G¯B¾¯Bí®BL7«B´È£Bü) Bš˜B°ò’B`eŒBº‰BÃõŒBòR’Bɶ•B²œB@£B9´§B/]¯Bãe±B#¯B¼t¯BL÷¶B3s¸BL·´BÝd¸BÃõ³B^ú¶Bf¦³B“X´B‚³B3sÁBÉö»B“ؽBhQ»Bw>·BÚ»Bçû»BÛ¹µB B·BœD·Bw¾µB —¸BR¸±Bª±±B1H«B^:¯BþÔµBø“±BbжB^º°Bsè°BËá«BJL«BÕ¸ªBRø¥B¶s¢B!p›BhšB-2”B¸’B…k˜BòR™BLwB²ÝžBšÙ™B×ãžBìÑ™B¼t˜BBà“BCŽB ‡Bì‡BX9BL·Bº ‚BêB´†Bï…B\ÏŒBu’BáúB…k‰Bsh†B+‰B°2†BHá‰BlŠByi‰Bš™ŽBßBƒ”B= ™B1ˆ B¢E¥BÙŽªB…­Bç{´B³B×ã«B¦Bì¢Bq½›Bh‘•BœBw~”BåÐB¦Û“BÙN“BÕ¸–BošB–C¡B1È£B¢£B ¡B¸ž¡B7ÉB-r›Bfæ–B²ÝœB/]¡B¢…žBsèŸB‘-§BÛ9¦B©BüiªBÍ ¬BV°Bu³B  “úÁË¡æÁJ ×ÁF¶ÀÁøSÄÁƒÀÑÁ ÈÁ+‡ÙÁ%òÁ˜nÂݤÂ…kžïÂøÓÂ"¨F)ÂݤÂî|ºÉ¬ÂË¡øÁƒÀàÁd;ÝÁ°r¿Á33²ÁVœÁ´È®ÁF¶®ÁÉÁ…áÁ…ëÞÁ?5ûÁƒûÁ^ºÿÁVÂJ ÂÁÊ!¶s'žïÂ;ßÂ…kÂ7‰ôÁTãÕÁ…ÃÁ“©Á°r¥Ásh‹Á#Û“Áu“…ÁTã}Á²kÁ}?†ÁªñÁÙεÁÁÊÒÁ¬êÁ‹líÁÅ Â+‡ Â^º‹lÂ×£ºÉÂúþÂ.Â/ W&Â= Âü)!Â5ÞÂÛù¼t­Â×£üÁoèÁ ðÁ…ÜÁ-²ÒÁ²ÈÁ‘íÃÁžïÆÁ ×ãÁ`åàÁ¼tíÁ‹lÕÁ^ºËÁ1ÚÁ—òÁq=æÁh‘áÁ-2–ÃÂî|ùÁu“áÁ ÎÁ-´Á˜nµÁœÄœÁºIŽÁ+£ÁZ¥ÁB`¸Á%¯Áôý³ÁòÒ”ÁB`ÁÛùvÁð§<ÁV9Á%ÁìQÔÀªñBÀ¨Æk¿Ûù@¢E@L7I?Ñ"ÀD‹tÀw¾ïÀ5^Á ×WÁ¸€Áq=“ÁÇKªÁÑ"®Á…ÁNb‹ÁÁÊYÁ 5Á¶ó Á…ë­ÀÙVÀ5^º¾ºIü?o‹@}@VÞ@ü©@ZŒ@mç«?ö(Œ¿}?EÀ…×À¦›Á‡CÁ%uÁJ hÁTãuÁ•GÁçûIÁþÔ2Á…ëýÀw¾»ÀºIœÀªñ"À€ÀÕxÀ/ÝTÀ®ÀXAÀºI,Àh‘™Àî|ÇÀôýÁçû%ÁÙÎÁ^º'Áh‘Á…ëÁ/ÝðÀÂýÀÃõàÀ)\ÛÀmçëÀ`å€Àôý”À À‘íìÀoÁÙÎ-ÁD‹ÁçûCÁ#ÛEÁ ×{ÁøS’Á…}Á+‡`ÁÇKˆÁ×£šÁ/Ý…Ád;ˆÁ+¦ÁX9ªÁ?5ÅÁºIÒÁ°rêÁffÿÁ00ƒÀ®@P›@¢EÚ@ÉvÊ@A/A!°@AòÒmA}?UAR¸vAøSmA®G†A;ß›A¦›²AþÔÌAÑ"áAžïÏAòÒÕAF¶·AÙιA!°¡AHá§Aj¼–AF¶Aé&•AVŒA¤p¡A¸Aj¼ÃA/ÕAð§ÎAÓMæA= êA/ÝøA¤p B“ByiB®G BºIBázB,!BuBö(!BV$BbBžoBF6 B“B+‡÷AÙêA²B¦B#ÛB˜nBçûBžïBç{B%† BVB–ÃBÑ"íA}?åAu“ËA¬½AòÒžA'1AÓMdAázjAìQtA+‡•Ayé¡AåкAL7ÏAh‘êAázìAZdBo’BTc BP Bã¥üA¼tèAÃõÏA¤pÊA‹lºA…ëªA‰A±A;ß A^º±A-¢A‡ŠAd;A´ÈrAÙÎYAî|+Ao3AmçAh‘ñ@L7q@X9@Nb@Ý$†@˜nú@R¸*AZdgAü©yAD‹ŒAœÄŽA-`A+‡dAü©/A33AÉv$AžïA…ëA!°(Ah‘!A¼tQA°r6Aw¾iAÂeAú~rAxA¦›XAÇKAqAyé•A˜n™AòÒ’A¶ó“A!°ŠAƒÀšA7‰•AL7©AÇK¯AR¸–AœAú~†A–C‡AÁÊ€AœÄAmç™Ad;¦Ayé½A˜n¸Aã¥ÓAZÍA‘íçA\éAJ ÿA…k Bff B^ºüA•ðA“äA‹lÇA+´A¤p›Aj„A¢ERA/A#Û-A¬ú@ZdAþÔ¸@‘íÜ@‰A@'1Ø?—þ?ƒ@@ƒÀž@;ßÛ@çû#A`å\AB`€AÁÊŸAÙ§AôýÃAÅ ØAÍÌÇAX9ËAḬ́A‰A–AÙÎAøSaA!°tAøSQA-²7AƒÀ$A5^A\î@¾Ÿ–@sh™@%Q@®Ë@¼t›@Háþ@HáÒ@\A°òŸByiŸB{”™B#›—Bª±–B^úŽBð'BZ’BœD—BN"•BYšBZ˜B)BkB‘íŸBåB˜BÅ’B®“Bç{B-2“BXy˜B…«šB¬Ü¡Bî¼£Bô}©B1©Bö¨©B*±B=Ê®BשB쑤BFöžB5^˜BFv—B㥔B=Š˜Bø“žB^z¡B…ë¨B W­B×c®Bfæ±B“˜®BåP°B´­BX­B!p®Búþ¦Bh£Bú~£BÛy§Bš¨BšÙ£B‰¦B!ð¤B´H©BÏ÷®BÍŒ®By)µBq}¶B`e¯BJ ®BÚ¨Bj¨B)\¥BÇK¥Bø“¨B¾_¯B´ˆ°Bã%²BÕµBµBú>³B¸¬BbШBd{¢BÛ¹Bªq—Béæ™Bß•B —B´ÈšBß¡B;_¦BáúªBo’±B«µB‡Ö²B±Bn¸Bj¹Béf³Bfæ³B7I®BB ±Bá:­B}¿¬Bö¨ªB‘í¸BX¹µB%ƶB¹B-²·B3ó¾B¢Å¼Bs¨µB*µBš™´BL·³B¬µB¶³®B Z¯B ‚¨Bm§©B‘í°B´³BÝäµB`å´B‡–µBj¯B…+­BÉö§B;Ÿ¤BçûBR¸›BZä™B B’BÛ¹’Bœ™BÕ8Bw>¡B B¥BÓ¢BòÒ¥BT#¢BL÷œBÅ —BøSBï‰BÁŠ‹Bɶ…B鿆B?5ˆB˜îˆB²ÝBFvŒBò”B‹l™Bö¨˜B ‘BX9BšY’B{ÔŽB¼´‘Bç{Bì‘B9tBåŒBbB™–BB ›B¦[¡Bôý¦B ªBoR¯B=Š«BÝ$¥BáBþ”›BA–B š’B…ëŽBœÄ”BL÷•B+GšB¬Bá:¢B…«¤B^z«B9´ªBn§B¤B¬œ¢Bá:œBÉö–BhQ’BTc˜B¼4œB#Û–B²Ý–B®‡žB¬ÜŸBb¢B}ÿ¡BZ¥B€§B/©B­ÂXÂ5^õÁPØÁÍÌÊÁ…ÌÁX9ÛÁ/ÝÙÁ×£îÁd;°ò Âð§Âü©Â?µ'Â\#ÂÁJ.‘m1Âj<(Â^:%Â×#Âô}ÂÙΘnóÁVòÁçûÖÁ˜nÇÁ{²Áj¼ÆÁoÉÁ)\ßÁyé÷Á1öÁázÂ#ÛÂ-2 ÂçûÂÁÊÂÕø%Â+/Â.,Âh‘#¤pÂR8 Â÷Á—âÁ¤pÇÁœÄ¼Á¶ó¢Á/ݤÁ‘íŒÁøSuÁî|}Á7‰›ÁßOµÁÑ"ÎÁ`åêÁ–ÃÂ`eÂZ䓘¸ž#¢Å#Â5Þ+ÂF¶#¾'ÂìQÂJ !Â3³.Â1ˆ(Âé&-ÂòÒÂNâÂìÑÂÂh‘ €ÂòÒƒÀôÁìQäÁffÚÁÓMÍÁF¶ÛÁ¦›ôÁü©îÁ‡þÁÏ÷äÁR¸ßÁÙòÁ9´Â-úÁÓMúÁþÔ Â\Â;_ªñóÁ˜nâÁw¾ÈÁ¢EÍÁL7³ÁX9²Áé&ÇÁþÔÀÁìQÔÁD‹ÍÁZÌÁJ ²Á?5©ÁÅ ¤Á7‰†Á¢EpÁD‹6ÁÙÁb¼À•kÀ“„¾–C‹½ÀÅ ¬ÀNbèÀ10Áî|QÁV‡Á••Áq=¨Á/ݵÁƒÀºÁÇKžÁ¾Ÿ˜Áj¼tÁq=VÁÙ,ÁffòÀV±ÀßO ÀÙn¿Év@¸¥?h‘@ö(<@L7@j¼”¿33;Àð§²À7‰ÁÝ$.Á¢EZÁã¥oÁ‰AxÁÝ$zÁ¦›VÁ¶óGÁyé8ÁÁÊÁ¸ÍÀ—æÀZd“À)\ËÀªñzÀ!°žÀ;ß«Àú~ŠÀøSŸÀÉvêÀ…ëÁL79ÁjDÁÉv*Á®GMÁ^ºÁ®G-Á¢EÁÃõÁ+‡ÁÅ Á×£ÁÉv¾Àmç³À°rÀÀ+Á´È,ÁôýFÁ`å6ÁžïiÁj¼zÁyéŒÁ®›ÁˆÁºIrÁ%’Á% Áff‹Á ŒÁö(¨ÁßO´ÁªñÏÁ¾ŸÚÁÙöÁç{Â00X9@“€@¬¾@mç«@Z Aš™Ý@{AVUAj:A°rNAžïKA+[A!°„ANbAP­AÙιA1£AX9¥A}?’AÛù—A!°„A+‡ŽA ˆAyé~AÙΈA9´‹A)\¢Aƒ·Aj¾A¶óÊA-ÀA‰AÐAPÏAÓMÛA^ºôA9´çA= BB…ëB¾ BF6Bo’BÕxB5^B…ëBu“BVB=ŠB…ùAþÔëA{”Bd»BÙÎB,B+Bã%Bôý BmgB-2BZ÷AÛùåA²ÔA%¸A9´¤A‰A†AË¡gAƒÀ0A¬:A°rNAžï„Aj”AøS±A#ÛÃA¬ßA¸ØAªñíAu“òABàB%þA²ëAªñÕAh‘»A㥹A©Aú~›AZ¦AÃõŸAªñ¯A-²œA ˆAÑ"}AÂyAºIXANb:A+/A‹lA'1AÃõ @7‰Q@ö( @ffÎ@žïA°rFA‰AAòÒ‹A…ëœAžï›Aé&AÉvˆAX9XAºIFAoAA9A!°PA¨ÆEA 7A•oAÓMjAÙ‹AË¡ˆAÙÎŒA¨ÆA¼tiA}?‚AÁÊgAÓMAö(‘AË¡ƒAu“‹A²†A‰A¢AZdœAÉv«Aw¾­A‰AœA{¡A®…A+‡‘A?5‡A/Ý”A´È¤A•¨A7‰ÂAøS¼A-ÓA+‡ÉA9´ÏA+ÚAÂçAç{BœDBƒÀòAºIðAB`ßAq=ÄA°AD‹”Aú~€A×£BAÙA®)Aq=AºI"A˜nAžïAPÇ@î|W@B`e@= @ôý´@¸Ý@…ëAL7EAyA°ršA צAÛùÄA®GÛAJ ÑA×£ÕAX9¸AÛù™A'1‘A}?iA= sAj¼BAÂ/AL7Aáz AòÒÁ@•ƒ@F¶“@Ûù>@‘íÄ@ªñÂ@VA²Ã@¨ÆAø“¦B§BÙ¢Bœ Bö¨œBî<–Bì’B¨F–Bç;›B!ð™BTãžBq=›B-2 BLw Bsè Bø“ B{›B˜®•BVN—B—B¨Æ–BÁJœB“˜ŸB^º¦BP §B®Bú¾«BÓ «B¢…²By©°B˜î«Bç{¦B#Û BJÌ™B)ܘB'ñ™Bãå™Bê¡B¨F£B´È©B°ò­B{Ô­B¾ß±Bø“®B×ã±Bü©¯B…«B˜®ªB;Ÿ£BüiBì›B¤0ŸBq=¤B#Û BÑ"¥BÃ5¥BÛ9©BÕ¯Bðç¯B…«µBöh¶BÁʰBVްBm«BðgªBô=©BÑ"¨BìªB3³±B¯²BRxµBÀ¶B=ЏBÙδB˜n®B¸žªB¬Ü£B!ðžB?u˜BÏ÷šB}¿•B™B=ŠB£B“©Bðg®BìѵB;¹BoÒ¶B;Ÿ¶Bï½B²Ý¼BR¸¶B5^»BuÓµB˜®¹Bö(´Bœ·BسBê½Bw¾¿B¾Bø¿BhQ½BÕ8ÄBEÄB+ǼB®¾B¾ß¼BPM¼Bðç½Bݤ·BU»BþÔ´BòÒµBÅ`½B!°¿B¼ôÀB)½B‰¼BL÷´B²BËá¯B…+ªBÓ ¤BRøŸBåPžBÍL˜B=ÊšB ‚ B®¢B¦§BÏw«B¤ð§Bã%¬B#Û§BBà¤B“XŸB‹¬˜BJÌ‘B¾ŸBÉvŠBåBmgŽBºÉŽBfæ’B\Ï’B=JšBÃ5 BöhB-–BìÑ‘Búþ•B”BHá—BbЕBúþ”BoÒ–B-2–Bš™›Bø“¢BHa¨Bí¬BײB‹,´BìѺB ×¹B W²Bü)¯B%†¨B¨£B}œB¶³˜B{”œBT£›B® BV¢Bçû¦BDK§Bü©®BÁÊ®B!p­B{TªB˜î§B˜n¡BÁBP œB-£BÕ¸£B쑞BºÉ¢Bò’©Bu“©B‘íªBR8ªBuÓ«BÃõ¯BÓM°B¬œªñíÁ¤pßÁü©ÂÁøSºÁ¨Æ·ÁR¸ÆÁZËÁƒÀÝÁÛùúÁ®Ç Âô}Âu“Â;_)ÂþÔ-ÂÚ;Â/?°r4ÂßÏ(žïÂ+ÂêÂ?5îÁÉvêÁ+‡ÎÁ®ÁÁÃõ°Áð§ÈÁã¥ÇÁ7‰ãÁNbøÁbÂê ÂXÂh‘Âj<%Â#[,Â)\,Â{”9 š1Â'1*ÂÍÌÂF6Â'±ÂþÔíÁôýÐÁ¬ËÁçû­Áj¼±ÁR¸¤Á לÁD‹›Á…±Á#ÛËÁìQàÁ/ùÁ¾Ÿ Âq= ÂB`Â?5 ÂÍÌ,Âáú&Âd»+•&ÂÍL'ÂÝ$ÂßÏ Âç{.Â×£)Âã¥)•ÂåPÂmçÂç{ÂØ ÂoÂ%† ÂçûÂoÂZdíÁ+éÁ¶óãÁ¶óüÁƒÀñÁÛùûÁyéèÁ¸àÁö(÷Áj¼Âj¼õÁ®GùÁw¾ ÂË¡ Â+ÂZîÁ‡ÔÁÑ"ÁÁ–C¿Áƒ¦ÁÇKœÁÙζÁb³ÁìQËÁ7‰ÆÁ)\ÈÁ ¯Ámç¤ÁÇKŸÁö(ƒÁÅ rÁ¼t7ÁffÁ-²¹Àw¾‡ÀòÒ;ôý”¿ƒÀê¿¶ó±À`åðÀ9´4ÁVLÁ“‚ÁZÁj¼ Áî|®Á;ß´Á'1—Á¦›ˆÁœÄZÁ×£8Á¬&Á´ÈîÀÝ$šÀ)\Ï¿òÒ ?çûi@Zdƒ@-²É@…³@ßO@ªñÂ?ªñ¿h‘%ÀÃõÐÀ–CÁÕx?ÁffxÁÙpÁ㥄Á yÁ—jÁ{FÁË¡ÁXÑÀ¶ó¹À‘íDÀ`åŒÀÂÕ¿9´À ×ó¿¨ÆÀƒ`À33ÇÀÙÎïÀš™5Á¶óCÁÛùÁ¼t-Á¨ÆçÀ^º ÁL7ÕÀ-²íÀ…ëÍÀshÕÀÛùêÀ/ÝÀÝ$žÀ^º½À}?ÁV&ÁF¶9Á1"ÁÃõTÁ= aÁ-²yÁ–CŒÁ-²aÁ‰AXÁ+‡ˆÁü©ƒÁyé\ÁÇK{Ážï˜Á-§Áš™ÄÁü©ÜÁmçíÁ WÂ009´¸@žï·@R¸æ@Ñ"ï@œÄ Aj¼AºIA%QAü©=AòÒMAyéBAçû=A¢EjAJ rA9´”AƒÀAbdA˜nlAffVAÇKoAþÔbAB`‰A;߆Amç‹AshžAÕx¥AÇK¾A^ºÍAJ äAƒçAÓMÒA°r×A˜nÊA7‰ÆA`åÜA×£ÓA¢EîA ×éAôýBmçBX9BþÔB¯B!B«BƒÀB+BÙB1B\÷A)ÜBZäBR8B7 Bé¦BJŒ B¤p Bîü B^ºB#ÛÿAshåA+ÎAV±Ash A-²ˆAžïAžïEAffFA'1rATãA¦›¦AÙÅAìQÛA/îAÅ èA¬øA®ðA-²ûANbèA‘íÛAZdÀA'1·A;ß³Að§µAÙΪAj¼»A¾AœÄÎAÉv·Ah‘¡A ׫A“£A®GŒA9´vAºIzA–CmA°rbA–C-A¬.AffbA‡eA?5‰A×£–A תA¸ÅA ÙA'1ÍAµA˜n¹A\¢A`å°Amç¬AÙαAÀANbÇA®GÍA¸ãAJ ÕA+‡ßAçûÑA‡ÃA—¹AffœA¦›ŸA—‹Ash—A?5¢AƒÀ“AoŸANbŸAáz½AÂÊAçûèAw¾ôA¬îAÍÌêA´ÈÏAÙÎÜA‹lÈA¸ÈAbÁAZd¶A'1ÄA?5´AXÈA+½A®GÎAö(ÙA…îAúþBÏ÷öAš™çA¼t÷A‡îAƒÀáA–CÖAü©¸A´È¬A7‰AF¶€A×£A…{A…ë’Aú~‚A®ŠAÏ÷AƒÀLA?52Ah‘GA/ÝFA^ºSAyélAòÒŒA…ë¥A´È¸Aw¾ÔAZîA.Bî|ïA¤pþA´ÈçAL7ÒAÇK»A¨ÆœA¢E‘AžïmAÝ$XAB`[A/MAF¶Ah‘Ù@shA•Ad;1A… A‹l3A‹lA5^2AÁ°BÓ ±BDKªB^z¦B-² B…+šBX—B;_˜BÓ ŸBshŸBª¥B‰§Bú¾¨B¢¨Bd;©B…+¥B‘-¤B¦BL÷ŸBÙB˜®ŸB‡V¡B ¢BÁJ©BVލB!ð¬BÕø§BTc¨Bï­B®«B)«BÕ8¤Bݤ¢BÛyœB1H›BP BßÏœBç;¤B.¤B˜®ªBB «Bö¨ªB¬\«BÇK¦Bç{¨Bwþ¢BÀ£B9ôžBL7BþÔ—BÙÎ’Bs(‘B5ž—B‡––BÅà›BbžB%£BË¡ªB¤°¬B š´B²¶BHa±Bš´B!ð®B?u³B ²B`e³B®‡¹BVμB¤°»B‹¬ºBª±ºBC¹BTã³B+ǬBBà¦Bá:¡BªšB{Ô”B —B —“BÑb™BVŸBX¹¤B%Æ«BØ­BÛ¹´Bœ¸BU¸B¢Å·B/ݾBT£ÂBw~½B‹l¿Bo¹BBºBsèµBßÏ·Bº ¶B`¥ÀBÙÂBô}½BE¿B–ºBJ ¾B?u»B µB7‰·BºI´B`å³BÇ ±B¾ªBF6¨BoÒ¡B¬¢B`%ªBf¦©B3³¯Bö¨¬B˜®®BV©B-rªBš™©Bk¦B£BDKžB¤ð™Bîü’B%”B B˜B¤p—BƒÀ˜Bd»™B馓BÄ–B‰ÁB%†ŽBç;ˆB Ú‚BmgzB= }B^:uBš™xBÍL~B!0€Bžï…Bƒ†B×ãŒBú~B¨Æ‹Bª1…B´ˆBœ…BZ$‚B3s†B—…BÓM†B°r‰BH!‰B'1ŽBC”Bƒ@šB…ëŸBº ¦B¼4©Böh°B¦Û¯B{TªB¥B‹ìžB+‡—B‘­’Bw¾B²’BqýB)B= Bj<•B\˜BBàžB¢Å¢Bö¨¡BåСB¸¡BËaByi›BÅà•Bq½›B=J¡B绡Bu¢Bq=¨B¦«BÑb¬B‡°BZ¤±B¤0¸BÍŒ»B áÁÂÀÁ-ÁÁ¨Á)\¦Á£Á—¿ÁìQÆÁ)\ÈÁåÐæÁ¢EøÁé¦ ÂNâÂ?µ$ W+¸8®G6Â#Û0Â.$¤ðÂo’­ÂåÐãÁÕxØÁœÄÂÁÝ$¬ÁÑ"¦ÁD‹¿Á¬ÁÁÂÞÁÝ$õÁ‘mÂøÓÂZä¯Âw¾-ÂÚ4Âw>:ÂøÓ@Âmç:Â/Ý6ÂD (¤p¸žÂ!°Â9´ðÁD‹ÖÁ¢E¿ÁçûÇÁd;¾Á}?ËÁÑ"ÆÁ‹lÍÁš™éÁ= Âff ÂBàƒÀºIÂ7 žo%Â-$­#ÂÓM¢Åªñ¶ó ¤ðÂÉöÂh‘Â/ÝÂ…ÂåP ÂD  š °ò ÂÏ÷Â-2Âð§ W´ÈþÁã¥ìÁw¾Â îÁš™íÁbÔÁNbËÁ¾ŸâÁ}?õÁÁÊÝÁ‘íÖÁ ×ðÁ‹lïÁ´ÈÔÁÙÎÄÁj¼¦Á®GŽÁ‡„Áî|OÁ¬6ÁD‹rÁ°r‚Áyé›Á˜n¦Á#Û¢Á Áš™„Á)\oÁ^º7Á¼tÁ33¿À¦›À¾ŸŠ¿ºI,¿HáJ@Ë¡E@®‡>Z”¿ázÀ'1ôÀ5^ÁÛùTÁNbbÁ ŒÁ×£ŸÁ}?²Á¾Ÿ›Áj˜ÁÃõzÁÕxIÁ/Ý6ÁžïÿÀÙÎçÀL7©À‘íÜ¿¨Æ ?²ï?åÐZ@åÐb@ö(|?ÓM2À`å´Àmç Á<Áö(jÁV‰Ááz¡Á}?žÁƒÀ°Á¼t¯ÁX9¬Á'1”Áü©}Á= IÁÂÁÔÀVÕÀü©iÀ‘í<ÀX9´¾˜nÒ¾ ×£;œÄྋl§¿33“ÀÓMªÀL7AÀ#Û©ÀÁÊ9ÀþÔ¤Àú~zÀË¡ÍÀî|çÀã¥ßÀ+Á^ºùÀÏ÷ÁÍÌ*Á¼tUÁ²_Á°rNÁôý$Á KÁ‘íFÁshuÁœÄ…Á-bÁìQ:Á‹lcÁPcÁÛù0Ááz(Á¬ZÁƒÀ‚Á…–Á1®Á/¶ÁjÌÁ00ßOAË¡Ý@çûAÏ÷Aú~0A‹lAÑ"Aé&KA‹lEAÝ$LAX9NAÃõTAR¸A…AÝ$ŸAV©AZŽAð§˜Aé&‚A´È‹ANb~AF¶ŽAš™A‹l‹Aö(Aªñ®A-ÄAu“ÔAZãAòÒåA¨ÆÒAË¡ÕA–CËAoÕAþÔåAìQÖAÛùéA¬éA`åÿAÛùB´ÈB“BÓÍ B\"B„B{”B–ÃBo B¼ôB+øAºIBq=Bé&B¤pB¾ŸBîü B`åBš™ BßOB`åBVïAË¡ÕAÇK¸AòÒ¦Aw¾AJ zA¾ŸHAÃõLAžïuAffA}?§A\ÄA¦›ÕA+îA\äAË¡úA ÷AbþAX9õAshæAçûÖA+ÁAßO³AƒÀ³A®G«A®½AôýÁA!°ÔAü©¼AÇKªAL7·Aq=®A¤p’A}?‡Açû‚A33wA×£lA¢EDAòÒAZjAáz~A‘í•A§A¹AyéÏAHáàA´ÈÛAÇKÁAÙÆA'1«A¤p·AË¡¬AX§AßOªAHá²AX¹A¸ÑAƒÀÊAu“ÚAçûÓA¦›ÃA%ÀANb£A‰A¢AŠAÕxžAøS A¬ŒA%–AƒÀšA+¹AÅ ¿A}?ÞAXÝA¢EÛA‹lÕA/Ý·AÏ÷¯AÙ›A?5¦A‡žA+‡˜A‘í¯A¦›§AV½A¶óµAƒÊA¶óÏAB`êAázB¦›ýA¶óåA ×êA˜n×A-²ÉAåйA¸šA?5“A9´lAžïWAÏ÷€AVgAÍ̆ANb~Aé&„A˜ntA+CAßO+Aü©-A?5,A‰A4AÕxIA{jAË¡’AHá©A)\ÂAZÝATãöA×£ëA?5þA®æAmçÍA!°´Ab–A%ŒAJ `A/IA\NA¾ŸJAA!°AZdAZdã@ !AX9A7‰EA;ß-AVCA!ðÁBß¿BNâ¸B ¶B —°B„ªBwþ¤BÉ6¦Bh­Bk­BÃu³BÍL²Bª1´B/µB+GµB ׳Bn°BD˪BÇ‹ªBÇ‹¨B9tªB#›®BÙŽ¯BÑb¶B쑵B–ºBÕøµBf¦´BªñºBö¨¹B·Bs¨±B‘í­B¶ó¦BߦBy©§BB`¬B¼ô³Bw¾´B7ɺBÃõ¸BÙN¸BN¢¸B‹,´BÁ¶BÑâ±B ‚±BË¡®BœD©Bo¤B94 BÑâ¤BbЦB B¥Bë¨BU­Bü©°B1H¸Bw¾»BVNÃBÛ¹ÆB+GÂBÅ`ÃB,½BÖÀBí½B…+ÂB'qÈB-òËB°2ÉBêÉB‹,ÊB`%ÆB¸ÞÀBåºB;ß´Bîü®B5Þ§BV¡Bú~¤B1H BÕø¥BšÙ©BİB=J¸B‘í¹By©ÀBdûÃB-ÅBƒÆB¾_ÍB–ÃÏBÛ9ÌB^zÎB!0ÈB²]ÉBÙÅBõÉBãåÇBffÍB`åÏBm'ËB“ØÎBD ÉBZäÍB ZÉB-ÂBÛ¹ÁBJ ÀBõÀB˜îÀBÁJºB%FºBD‹²B5Þ¯B ¶Bú¾¶Bþ”»B¸BÃuºBº ¶Bu“¶B­·Büé²BøS±B‹ì¬B#[¨BþÔ¢BB ¡BDK¥BߤB1H¦BË!¦B;_ŸB`e¢BÅà›BçûBX™BuS”B™BlB¬ÜŠBd;ŠBÇKBÝdŒBRx’Bá:“B'qšBØB5žšBy)“B;ŸŽB¬œBuSŒBhÑ’B…ë’Bô}”B5ž™BðçšB{T BJŒ¥Byi¬B¬\±BÛy¸BÉö»Bé&ÃBfæÂB ¾Bƒ@¸Bj|²B5«B–ƒ¥BÓMŸBb BçûœBB ›BÙŽšBjüBu£BèBÑ"­BNâ¬BF¶­B¨F¯B^:«BoÒªBÉv¦B'±¬BoÒ²B¾±B²B,¹B1È»B¼BVŽ¿B–¿BðgÅB+ÉB¶ó¾Á-¤Á‘í£Á9´‰Á´È‹ÁßOŠÁ7‰žÁìQ§Á¢E²ÁÂÐÁƒÀäÁmgÂsè ÂË!ÂÍLÂìQ(ÂJŒ*ÂÏw#‘íÂV ÂZüÁÕxéÁPËÁ®¾ÁÝ$§ÁÏ÷•Á¶óˆÁ¶ó¢ÁþÔ¥Áé&ÄÁÁÊÚÁÃõêÁ.ªñ¼tÂÃu W&Â#[&ÂP 0Âq½*Â+$ÂÖÂ= Â'1þÁ33äÁƒÀÌÁq=¶ÁþÔšÁ¬¢Á\ÁçûˆÁd;ŽÁš™«ÁjÆÁ-àÁ…ïÁÑ"Â+“˜Âj< ÂZäÂÚÂ,¼t ÂÙÎÿÁB`üÁþÔÂbþÁåP Â+Â5ÞÂu“úÁþÔþÁj¼üÁœÄõÁݤ¨ÆÿÁöÁoßÁ´ÈÌÁ¦›ÏÁázåÁ¸ÔÁL7ÓÁD‹ºÁ°r°ÁyéÃÁÁÊÖÁÙμÁƒ¹ÁøSÓÁé&ØÁ“½Áö(®Á¨ÆÁ9´nÁÑ"UÁD‹&Á®G ÁÃõHÁìQLÁ•sÁ ×…ÁoÁÏ÷uÁ/eÁÍÌHÁßO ÁR¸ÖÀÅ HÀoó¿¢Eæ?æ?¾Ÿ¦@Ï÷ß@ÓM–@Ö?ú~j¿ÉvŠÀVÕÀ}?#ÁF¶=ÁNbnÁ¨Æ‰Á…ë˜ÁÁÊÁžïoÁ¨Æ5Á Áw¾óÀ—‚Àé&1À-²¿R¸@'1€@)\ƒ@ÓMâ@øS»@sh@Ûù>?¬ ÀÍÌœÀ5^Á/ÁÛùLÁD‹vÁ®GmÁ+‡ÁázjÁ¬lÁƒfÁºI,ÁºIÁ{ÚÀyéfÀ+wÀ…k¿¾ªñ @= ‡?¼t³?ªñ’¾+>bPÀ㥠À-²=!°ÀÍĮ̀Bw¾¥Bf&©Bç{ªBáú¬BV´Bã%³Bq½·BX²B!p®BHá¯BÝä¬B¦¬B°ò¤BÏ·¡B WšB´–Bw~–B‰Á”B}¿›Bé&›Bs¨žB)œBšžBo’žBªq™BÙœBW˜BÏ·œBá:BH¡By)›Bí“B¸Þ‘B^z”B•‘B;“BV™Bô=›BB`¢B‹ì£BÇ «BÕ¸°BV­Bž¯²B‰Á°B®‡·Bm'¹Bôý½B{ÂB3sÁB=ʾB¢Å½Bh»B`e¶BøÓ®Bø“©BÄ£B^:žBw>™BòÒ“B5Þ™BߘB,ŸBDË£BVΩBsh±Bõ²B¹BT#¸Büi¹BøÓ¾Bô=ÄB.ÆBEÅBÑbÊB˜.ÇBÌBÊBuSÐBlÎB ÕBåÐÓBÙNÍBü)ÊB ‚ÃBÇKÄBª±ÁBžo¼B¼tÁBJŒÁBåPÅBÓÅBXùÀB¼ôÁB9ôºB¼ô¼B˜nÃB馿BoÂB+G¼Böh¾BðgºB;_¸B#[»Bî|¶Bš´Bž/­B#Û©BhQ§B‘m§B¼t¬BX¹©B=J¬B'±«B‘­¦BúþªB‡Ö¥BÕ¸©B¨¤BW¡BòRšBZdšBXy•B94’B¤p–B;Ÿ“B–šBs¨–B­œB…™B¤°“BìÑŽBy©ŽB^z’BH!“B Ú™B›BɶžBHa£B‡–¥Bd»¬BßϰB\Ï·B%†»B#ÛÂBú~ÄBÓ ÌB“XÏB3sÊBƒÀÄBö(¾B…·B+°BLw©BXùªB`¥¤Bf¦¤BÝ$¡B\¢B´¥Bh§Bß­Bª±°Bw>±BÑ"¶B˜®±BšY²B;ß°Bžo·BÇË»Bqý½B šÀBÆBfæÆB‘íÄBé&ÅBšYÄBVÉBm§ÊB«Á-²ÁòÒ†Á33UÁÛù<Áyé0Á^ºUÁåÐbÁázˆÁsh¢Ámç»Á¬ÖÁ˜nåÁ= Â!°ÂÅ Âq½Â{”Â!°ûÁ9´ßÁÈÁmçµÁ´È—Áš™‘ÁVqÁZdOÁÁÊ1ÁÃõdÁ–CwÁÕx˜Á¢E©ÁòÒ°Á1ÆÁáz¿Á¼tÑÁ`åéÁ+‡ÿÁªqœÄÂé&ÂÙÎ Âj¼÷Á¦›ãÁÍÌÍÁ?5³Áj¼˜ÁÏ÷†Á33OÁ¢EJÁXÁffÁ¦›0Á¬`ÁX9…Á- Á…ë°Á1ÏÁßOÓÁ7‰ëÁq=ñÁ7 ÂXøÁ°rÂ)\ñÁåÐöÁq=ÜÁ…ÞÁ‡õÁÅ êÁÇKþÁ9´æÁìQñÁ–CÝÁÝ$ØÁð§ËÁ¹ÁÍÌÇÁåЯÁ ¢Á33—Á¦›ŽÁ/–ÁÙ¬Áé&žÁ¦Á¬’Áú~‡Áh‘žÁ`å³Á#Û ÁÏ÷Á‘íºÁÃõ»ÁHá§ÁjÁ`ålÁÅ <Á ×+Á¬öÀºÀ-²ÁHá ÁZÁX9VÁÕxSÁî|#ÁƒÁú~öÀX9tÀú~ÀºIÌ?ázl@shõ@w¾ A“HAÓMLAff.AÉvê@V@Ház?ßO-¿¢EŠÀ^ºÅÀÃõÁ%3Á¾ŸBÁ  ÁåÐöÀìQ€À‰Aп= ×>-b@¦›¬@mçA“6AøSWA®GWAÙÎuA–C_AF¶IA‰AAÁÊÍ@Ý$v@{N?ìQ迤pMÀ¾ŸÊÀ®ÇÀôýÁ= ÏÀ²ÃÀžïoÀÇK7¿#ÛÉ?Nb8@øS·@áz˜@5^ê@#ÛÝ@u“ A¤p A®GA}?Ý@`åÀ@Nb @ú~@`åŒ@‰A0@‘íœ@˜n2@-†@ð§.@Õxq@%@ôý@d;£@Há†@ÍÌt@òÒM>þÔè¿ÓMÀZD¿Õx9ÀçûIÀøS³À‹lÛÀÍÌ€À¾ŸÀ+£Àš™ÉÀçûIÀ1$ÀVÊÀÉv Á²EÁÓMrÁö(Áî|«Á00…Ã@‰A`@¬š@Tãe@J ¾@î|O@ö(ˆ@A×£AF¶#A/Ý,A¸OAL7AÇK”A‹l±AX¼AL7¤AshžAð§‡AX‡Að§\Aªñ|A{fAé&]AÏ÷uATãAƒÀ“AÉv©A˜n½AÍÌËA}?½AÛùÀA`åÀAƒÀA‹lÙA/×AßOôAøSòAJ B¦ B–CB²B)ÜB¾B«Bmg B üAðA¶óÕA)\ÉAÉvÛA^ºøA‹lBBNb BÏ÷üA.B)\BX9þA´HB!°úAð§âAPÐA˜n¶A7‰˜Aff†AÏ÷[Aš™oA/AÑ"¬A+®A}?ÌAB`ÛAoëA!°ÚAXæAw¾áA àAÏAo·AƒA ×A ×—A{œAÙΙAff AHá¥Ayé¾A—­A^º–AX¡AË¡A5^APeAÙNAÕx?AÅ "A ×ë@ÓM–@• AœÄA¨ÆMAßOuAb”A¼t©A?5²A'1£AÍ̇A¨ÆAogA‘ípA“TA¾ŸLAÇKEA‰A@A-²WAV†ANbAáz‘Aj¼ŽA¤pˆA…ë…A¨Æ[A…_A#Û?A-^A‹l[AòÒ)A¨Æ1AË¡=A+‡jAw¾oAé&ŽA‡A33ƒAƒlA^º1A+!A Û@5^Æ@!°ú@1Aé&5A}?5A¢EhA= sA}?’A}?¤Aú~ÁA°rÑAw¾¿A\¢AX9¢A ŠA¾Ÿ|AÕxOAL7AÝ$ú@•@VE@°rÐ@øS§@ƒÀAÛùâ@øSA1A7‰Á@…‡@¬b@çûY@b@¬\@“¸@ƒÀAƒÀBA= gAö(‘A¯A ¬A¸ÀA®G«A˜nŽA¶ó}AX9BA^º;AÉvAVª@j¼¤@‘íÀ@%9@…‹?q=R@¨Æ3@ƒÀÆ@mç›@˜nA¨Æã@ú~AJŒÇB´HÇByiÀB9´¼BÕ¸¶B±B1®BÕ8®Bb´B#Û±BþT·BFv·B馻B‹,»B!0¹BZ¸B—¸B1ˆ±BÅà³B•°B\°B\²BZ$³BÃ5ºBôý¹Bžï½BU¸Bj|´BªºBy©¸BÍÌ·Böh°B´ˆ­B‹ì¦B7I¦B)©Bmg©B!0±B“ذBšY¸Bwþ¶Bj<µBÁгBøS®BƒÀ°B‡¬B W¬Bò¨Bîü¤BÅ žB;ß—B›B¡B B¡Bå¤BºÉ¨BL7­B˜®´Bá:¹BYÀB}ÅB¦ÁB+‡ÅBÝdÂBÄBDÃBÁÆBX¹ÌB´ˆÎB7ÉÌB= ËBãeÊBšYÅBÑâ¾Bé&¸B±B'ñ¬Bj¦BL÷ŸBÅ¢Bs(ŸBì¦BËá¬B;Ÿ²BºBVκBœDÁBìÄBßOÇBPÍÈB“˜ÏB‘-ÑBºÉÎBfæÒB®ÇÌBbPÏB ÉB×cÍB¢…ÉBlÐB33ÑBZÎB¨FÑB¼4ÌB{TÐBJ ËB ×ÄB‹ìÄBX¹ÃBÂBã¥ÀB×¹B˜î·BË¡°BßϲBø“¹BÃ5·BªñºB ¹B;½B¢Å¸B3ó¸BJ̺Büi¶B;¶BE°Bm«Báú¦B-2¤Bò’¨B¦BL7§B‰Á¥BìÑŸBV BÀ™BœBòR•Bò”BØŽB`åBHáŒBoRŒB‘-BdûŽBVN•Byé˜B ZžBPÍ BîšBNb•BHá“B¸’B„B/•BÁ “B=Š—B×£šB×BÉö¢BšY¦B‘-­BðBüé·B¦ÛºB×ÁBÙÃBòR¾Bç{·Bå´BÑâ­Bsè§BÕ8¢BÁÊ£Bþ”ŸB‹¬žBL7œBRxžB+¤BU©Bî®B߯B®°Bç{±B®Bj<¯B®Ç«BV±B°2·B9ô¶BZd·B)\½B šÀBX9ÂBw¾ÄBšÙÆBƒ@ÌBÖÎB‰A˜ÁÑ"ÁÛùpÁNb@ÁÏ÷EÁ EÁTãuÁ/oÁÍ̆ÁôýžÁªñ³Áé&ÍÁázÍÁôýäÁÝ$àÁjúÁÇKÂð'Â9´ðÁÏ÷ÔÁÕxÁÁ¶ó¨Á7‰ŒÁ²‚Á¬NÁ¬Á-Á…!Á¾ŸÁ…QÁ‰A‚ÁZdÁ`åªÁ'1¹ÁB`ÌÁB`çÁD‹íÁË¡ñÁ®GòÁ9´íÁJ ØÁ…ºÁ‹l£ÁÍÌ‹ÁbrÁ•AÁªñ2Á…ëÁV Á ×Áh‘Á‰AÁþÔÁYÁu“ƒÁ/Á¦›¢Á¬ŸÁ®·ÁÕx¯ÁôýÁÁ¬ÆÁÉvÔÁ!°ÊÁX9ÓÁsh½Áî|ÈÁD‹ÙÁÑ"ÅÁ×£ËÁ°r®Á±Á#ÛŸÁ‹l›ÁÍÌœÁð§”Á#Û«Á/ÝžÁX˜Á²ŠÁ!°†Áé&ŠÁ1˜Áôý„ÁÑ"ŠÁ…YÁÛù<Áî|YÁË¡€Á+‡ZÁoOÁÅ …Á‡‹ÁomÁHáTÁÅ Áã¥ÁÍÌØÀ“”Àh‘m=eÀ®—ÀßOéÀ-²åÀ}?±ÀÙÎ?À%…ÀÇKÀXÉ?¢E@ü©É@X9è@)\1A–CIAh‘‚A˜n‰Aé&}AmçGAffAôý¼@Ý$.@¶ó}¿ã¥SÀ\ÎÀš™ÁÁÊ3ÁX9Á˜nÁ´ÈšÀ5^Ê¿B`E?J Ž@X9à@7‰A{RA¼t_A¬ZA/ÝnAL7IAö( AØ@²W@¤p?×£ð¿5^‚ÀÉvÂÀ®GñÀ{ÂÀÅ ÈÀb”À²ËÀ¾Ÿ¶À…û¿ ×#½žï×?F¶ƒ@?5^@7‰Á@­@ã¥÷@AL7A{AbA…ë©@Z @VÝ@ìQ”@é&Ñ@åÐ:@= @!°@–Cë?Ï÷@Å  ?Ù΋@Ë¡@+‡ž@¼t#@š™@¾Ÿ@V.@ff¿®×¿q=¢ÀÁÊÑÀ¼t›À¾Ÿú¿Ë¡…À= ÏÀþÔHÀsh Àu“¬ÀjÐÀHá$Á;ß=Á¤peÁq=…Á00×£Ð@ƒÀ‚@Ï÷›@Vý?X9|@u“Ø?yév@ÁÊí@{A{(AD‹8A[A‘íŠAÕxA˜n·AƒÀAÙΩA ATã†Aü©†A“dA¸yA¼tgAd;WA}?eAHájA¸„AÏ÷šAìQ²A®G¾Aƒ·Aw¾½AX9¿Aš™ÂA`åÞAffÝAþÔùAZdûA×# Bu“BªñBã%BF¶BÙBj¼ BVB5^ëA%×A/ÝÅA%·AJ ÎA)\æANbóAé&øAPBBÏ÷B ×BhBL·Bö¨BÂéAòÒÒA˜n¶A“¥A¾ŸŒAî|eA9´„A'1ŒA®G©A\´A-ÒATãÞA¨ÆîAÍÌÞA)\åA¸âAË¡ÞAu“ÌA?5²Aj–A¾ŸA‡™A¤p•Ao’A¢E›AVAZ¸Ab¬AìQ’A-²•A)\ŸA}?†AË¡oAé&MAìQ,A…AJ š@P@ßO¥@Õxé@‰A*A{\AªñxA+˜AX9žAXAøSkAÍÌ^AÓM(A/ÝA¬Æ@^º•@ªñZ@ªñj@Ãõ€@ºIô@Ayé.AßOCA#Û?AºIRAF¶'AòÒ;A¨Æ+AÉvHA•AA5^AœÄAôýð@`åAw¾AÅ >AÇK%A/Ýø@?5Ê@-²-@¦›ä?P¾•#?¸-@u“@)\Ã@¼tÛ@Ý$$A/CArAú~‰AF¶¦AL7²AþÔ¤AøS†A¢E€AD‹JAü©/A°rð@–@o@…+¿ OÀÙ·¿Ñ"«¿çû@¢Ev?V5@…ë?F¶³¿R¸ÀHáBÀà¿ZÀé&q¿Õx©?D‹œ@¬Ad;A“TAøS†A‘íƒAòÒ™AÛùƒAî|IA;ß9AA…AD‹Ì@þÔX@ @#ÛY@o<ìQø¿ÁÊ!¿`åо®W@‹lw@Ùî@‘íð@mç'AÛyºBk¹BœD´B^ú°B¨­B‡§B{Ô¡Böh¤BËa©B5Þ¦B«B˜¨B`eªB}¦B¾ß¥B¤ð¡BîŸBJ ›BR8ŸBö¨B²¡B^z¥BXy¨BFö¯B{”±BNâ¶B{”µB1ȱBJ ¶B`¥°B‘­®BNb§B¤0¢BßšBZ˜BY—Bø“—B…+ŸB…žB%¤B%F¥B…«¤BÕ8¨BåP¤BÙ¨BºÉ¤BÚ¦BÁ ¥Bî|ŸBÇ šBNâ–B²]šBY›B9ô•BkšB ‚žBuÓ¡BìQ©B‘mªBÓͱBÁŠ´B¸°BA±Bï®B•±BR8²Bh´B‰A¶BRx¼B‰ºB ×»BÛyºBÅ ¸B´´B)œ­Bº‰§BRx¡BZ¤›B—B%ÆšBô}—B5žB¨¢BL7©Bd;°B¸Þ´B/¼Bçû¼B+»Bá:¾B9´ÅBÍLÃBÀB¼ôÅBy)ÃB…ëÆBJŒÃBmgÆBßÅBÅ ÍB?µÍBoÊBÚËBž/ÆBo’ÉB¸^ÈBž¯ÁB¤ðÄB¢EÄB+GÆBffÅBd»ÁBFvÀBuÓ¹B¼tºB%ÂBsh¿BT£ÃB´ˆ¾B¬\ÁBF¶¼B¸^»BZdºBuS´BÕ8°Báz©B/§BøÓ¢BÕ¢B1ˆ¨BøS©B'ñ­BšÙ­BZ¤©B!ð¬B;§BT#¥B¸ŸB+Ç›BåP•B‰•B;BßB¬Ü“BZ¤B=Ê•Béf•B+GœBmgžBbИBJÌ‘BøÓ’B“X”B¨’BNb˜Bü)šBÁŠœBð'¢B™ B^ú¥B%F«B²Ý²Bj<¶BÃu½Bm'ÁB!ðÇBNbÅBÚÀBmçºBsh¶B#[°B©Bé&¤B®¦B´¢B¾¥Bì‘£Bå¦Bw>©B+G®B7‰±B×ã²Bdû±B´B/®BwþªB-¨B¼ô®BÇ ²B-2¯B ´B/»B¸Þ¼BbP¼B¬¼B„»BÁBÁJ¾BTã¢Á-²‹ÁbpÁyéRÁ)\)Á¨Æ)ÁÇKCÁ‡5Áã¥aÁøS†Á¬Áj¼µÁ/ݹÁßOÍÁÁʽÁu“×ÁjèÁÍÌÑÁ˜nÏÁ!°²ÁÃõ Á/‰ÁmçYÁ˜nVÁÛùÁu“èÀ¦›„ÀƒÀÂÀ¾ŸÊÀð§ Á+GÁ²QÁÓM~Á5^€Á¬ŒÁNb¬Á¹Á‹l¸ÁyéºÁV®Ámç”Á–CoÁö(<Á²ÁJ ÞÀßOÀ ×{ÀV¿F¶ÀÇK·¾Z´?çû@¬¼¿1ˆÀ-²ÍÀ´ÈÁFÁ\LÁ°r„Á…ë‰Ád;§Á²¥Á…ë¸Á= ³Á%ËÁÕx¸ÁF¶ÇÁX9ÞÁÂÍÁÌÁòÒ¯ÁX¨Á1ŽÁ'1tÁ¬dÁ¢EHÁj¼hÁî|?Á?5"Á‡'ÁÙÎÁºI6Áî|_Á—LÁ33cÁÂ5Á¤p#Á®=ÁÍÌrÁÕx]Áw¾iÁ‹l‘ÁV–ÁZŠÁºIhÁÝ$BÁƒÁôý(Á= ÷À5^†ÀZdëÀ…ëÙÀÃõÁî|ÁìQÁŒÀÇKgÀÁÊÀq=š?°r(@= Ã@ƒè@*A33=A/ÝzA¾ŸvAB`wAºIFA¦›2A¢Eò@Ï÷“@%a?Év®¿…ëIÀD‹ÌÀ—ÎÀ¬<ÀÅ €ÀºI ¾)\@+‡¦@d;AœÄ8AshiA33†Aªñ—A‘íA7‰Aj¼†AÅ rA!°>AA…A¬²@Í̘@ÇK@ÍÌ,?¢Eæ?L7!@Ý$–@j¼|@#Ûy@Å ô@mçAbATã1A% A°r$Ayéú@%ý@ÂAVAZdï@mçÓ@h‘u@ff~@ìQ¬@sh@š™‘@Ë¡õ?7‰@!°Z@²£@7‰±@?5Ú@u“ A“2AZ@Aî|A–Có@-²@shÁ@®@ü©q?¦›Ä¿“ŒÀÝ$&Àªñ²¿9´”ÀshÉÀ)\‡ÀD‹ˆÀ+Á óÀìQ6Áã¥OÁB`{Á•Á00®G>ü©±¿òÒí?–C+?ázl@òÒ-@X9œ@h‘AXå@= A/ÝA˜n A°rFA cAƒÀA¢E¡AŠA‰AAÕxcAD‹zAôýJA¸_AQAƒÀ.AË¡IAƒÀ@AÑ"qANbAd;ŸAçû§A%A…ë±AZd±AìQÅA1ÛAƒËA‰AäA°rØA‰AêA²ûAªñ B`eB–CB'± BbBL·Bã¥òA¾ŸìA¶ó×A×£ÓAßOêA+ÿAhBœÄB¾Ÿ Bð§üAÛùBôýðAsháAVÚAZdÃAìQ±AòÒ’A‘íƒAìQLA´È$A°rÔ@+ë@F¶ A ×IAR¸fA˜n‘AP¨A#ÛÀAÇK¿A#ÛÖA‘íÕAPàA…ÙAÇKÂAôý²A —A“—AZˆAfftA…ƒA uAB`‹A+uA¬BA•=A…ë=AB`A`åÌ@F¶Ï@Ûù~@é&I@{N¿mç3À1¬>+‡æ?u“ @¬Ü@Ï÷%AÓMDAshEAb\AåÐ*AôýAffÆ@ƒÀ¾@1°@d;—@mç›@ƒÀº@33£@˜n Affò@…/AÁÊ3AÃõ0AZd5AA×£"APA'1PAJ VA¸AAÉv8AL7A¾Ÿ@A´ÈR¸&@Á¦B{”£B°2¡Bð§œB–œBhÑ”B¦BX”Bm§™B´ˆ™BZ¤B/šBÑ¢ŸBÛ¹BÑ"ŸB+GBËá—B…«•Bj¼”BÕx“B‹ì”B= ›B1ÈBF6¤BRø¦B%­Bj<¬Bw¾«B‰Á±Bfæ¯B¸«B^:¥B“ØžB®™B¾Ÿ˜BÙΖBšY˜B!pŸBÍÌŸB5Þ¥Bh§BLwªB'q®BL·«Bò’®B¨¬B/ݬBë«Bœ„¦Bj¡BËaB­¢BŤBbP BTc¢B ×£BPM¦B W¬BD‹¬BX¹³Bº ³BÑ¢¬BFö¬BòR§B¦¨Bá:¦B×ã¤Bö(©BïB¸Þ¯B쑲BP ´Bd»¶B ²B®Ç«BË¡©B¢E¢B!°Bœ„—Bœ„›B5•B…—B5^œB —¢B‡Ö¨B­BÝd´B;·B¤0³B–´B7I»Bh‘ºB¢…´BÃu¸B‘­´BH¡¶B+dzBô}²B…±B`¥ÁB…½B¦Û¼B}¿¾BẺBº ÁBªÂBZ$¾BFvºBÛ9»Böh¸B‡V»Bq½³BøÓ³B3s­Bú>­Bå´BœDµBFö¸B´H·B!p¸B3s²Bú>±B˜®®B= ©B+¤BÙΡBô=žBÑb—BB ˜B¨ÆB¼4¡BB ¥B94§Bmç£B^º¦B« Bß B{TšB+“Böè‹BÓÍŒBmç‡Bf¦‡B^:‰BüiŠBÁŠŽB‘Bo™BúþB^z›BÏ7”BmçŽB}¿’BuSBÕx“B3ó’BTãBƒ€’B#›ŽB/“BJLšBN" B‹¬¥BÍŒªB!ð­BÁʳB¶3²B«Bð'¥BDK¡BZäšBî¼—B3ó“BåP™Böè—B®G›BEœB¸^ BÃ5¤BªBÚ¬B‹lªBV§B?µ¥B¬œŸBç{›BTã•Bš™›B‹¬ŸB/›Bw~œB ×£Bš¤B}ÿ¨Bå§BïªBm§­B®G±Bw¾ŸÁ/Ý…Á“zÁázLÁìQ*Á Á¾Ÿ<Á¤p3ÁøS_ÁV‹Á1¥Á ½Á#ÛÅÁ'1áÁd;äÁ¦›ûÁé&ÂNbåÁZdÖÁXºÁ?5«ÁåЗÁÙzÁ!°rÁZdAÁÁ{îÀË¡ÁD‹2Áú~jÁ–C‰ÁR¸ŒÁ1žÁTã›ÁL7°Áh‘ÉÁbÚÁ/ÝßÁ9´÷ÁóÁ‹läÁƒÀÈÁTã°Á-²•Á\|Áªñ@ÁÏ÷+ÁË¡åÀÁÊùÀHá¢ÀÛù^À—vÀ5^òÀœÄ*Á7‰[Áð§~ÁœÁ^º§Á7‰ÂÁ{ËÁ¬ÝÁ}?ÜÁòÒàÁòÒÏÁßOÚÁ?5ÄÁìQÍÁ= èÁÁÊÛÁƒÀÞÁÂÆÁ`åÏÁh‘½ÁÓM´Á-²£ÁX•ÁshœÁ5^†ÁHánÁþÔTÁ®GMÁé&]Á㥇ÁÁ…ë‰Á?5jÁ}?_Á{†Á¦›˜Á7‰ŠÁáz‹Á¤pªÁªñ¦Á33šÁ+‡~Á‹lQÁ Á\Áî|ÏÀ\òÀj(ÁÑ" Á×£@ÁL79Ážï-Á—êÀË¡™Àyé¢ÀÙ®¿J ¾¾ŸZ@)\‡@q=Aî|'A= aAš™_A¼tOAVAu“Aj”@®G@Vο ×sÀu“¸Àw¾Á¼tÁøS›À;ß“ÀÅ P¿°r¨?;ßo@ºIä@ÛùA…9AòÒqAÏ÷ŒAff‡AHáœAJ •Ayé‘A¸kAªñ@AP%A-Î@-‚@ázt?ÇK·¿= §¿-² Àw¾Ÿ>‹lç=?5ž?ú~’@¨Æï@Évþ@ƒÀ$AX9A•-A Aff A )A ×AåÐî@ƒÀº@ƒ8@7‰ @ffŠ@`å8@Å ¨@×£x@œÄÀ@B`@Ùº@ºIÀ@-²½@R¸AÙÎA-²õ@?5–@?5v@¬@ázD@ ×#¾B`E¿¢EFÀh‘‘À•+ÀÇK‡¿-‚À‘í´Àyé6Àžï7À7‰ÙÀVöÀ= 7Á®GaÁÓMƒÁo—Á00¤p=@7‰a?…;@®Ç?%‰@V^@5^Ö@-²#A ×A˜nAázJA°r"AßOCA‘í*AF¶WAÑ"cAÍÌ@A¦›0A5^"AžïOAð§JAu“xAœÄzAffHAB`AAD‹A‰AA5^þ@¬A¤p=A^ºIAƒAff†A¬¢AÙœAw¾°A…ë²A!°ÆAw¾ÞAh‘áAPÆAÂÀAªAAƒjAøS7A AœÄœ@‹lç?…k@Å p?^º!@¬Z>¨Æ»?¨ÆË¾é&IÀVvÀåÐJÀœÄ¿‰AྨÆ#@VÂ@˜nAìQFAsh]A!°ŒA¸¦A^º¡A= ¨AZdA¸mAh‘IAÓMAVA ï@ ³@ú~z@‹lw@!°²?åв¿Ùn¿ôýÔ¿¦›Ä?çûù?J ª@þÔp@ÙÎÏ@¦ÛŸBožBÇË™BhÑ•B®G•BŽBoÒŠB¶3ŽBZ$“B‘­‘Bj|”BZ“B\˜B¼t–BœD˜B9ô“BX‘BÙŒB=ÊŽBåPBÁB×”B—BÁÊBª BW§B}ÿ¥BƒÀ¥B¤p¬B—©B5ž£B3³žBßÏšBq=”B}ÿ’BBff‘Bwþ–BX™BJÌ Bš™£BÇ ¥BÄ©BC¨B¬BL÷ªBë©B=ʨBTã¡BFvžBÛ¹›B¤° Bdû¥BÙN B¨† BN¢ BÓÍ¡BߨB×£¦B{”­B ­B`e¦B94¤Bª BF6¡B¾_¡BúþžB*¢B×c¨BÕøªB««BÏ·®B;߯Bö(­Bçû¦Bá:¤B°rœBw>˜BD’BÅ •B°²BÍŒ“BE•BÍ œBB  Bm¦Bs¨­BÃu°BN¢­BC¯B–öBìQ¶Bf¦²BìQ´B¤°­BPM°BÑ"­B;¬BÉv­BN¢¹B‰¹Bh·BHá¸B–õBá:½BÙ½Bþ·Bî<µBbµBüi³BR¸µB‘­¯B}°B«BP ­BNâ´BÃõ³Bß¶B´H´B‹ì´BÕ¸®B`%­Bãe©Bì£BêžB¤°™B™BÄ’B+‡•B1ˆ›BBsh¡Bì¢B®ŸB¢¤Bî< BÍŒ›B!°—BL7B W‰B®ÇŠBáz„BH¡…BÕø„B!0†BÏ÷‰B ˆB®ÇB?u•BÕ8“B=JŒB–ŒBœÄB²ŒBªñBÑ¢BåŽB´H‘B#›BÑ"”B#[šBhQŸBüi£BبB²¬BåвB%ƯB“Ø©B9ô£BL÷B¾˜B¼4”B¢E‘Bî•Bª±’BB˜B€™BÕ8žB® B…ë¦B}¿¨Bô½¦B¢¤B Ú¢BòRB`%˜BRx“B9ô™Büé›B%—B šB{”¡B!0 Bî|£B¡Bá:¤B Z¦Bø“§B'1§Á×£ŒÁÏ÷sÁé&GÁ7‰ÁJ Á;ß-ÁË¡+ÁmçQÁ¬vÁòÒ™ÁZd´Á•ºÁÑ"ÒÁåÐÒÁVæÁ5^õÁ}?àÁÅ ÒÁ´Á…ŸÁázŽÁh‘kÁ^ºkÁ335ÁshÁçûÙÀƒ Á+‡Á•IÁ¾ŸpÁ–C_ÁøS‹ÁÃõ„Áj‹Á¥ÁÃõ±ÁHáÇÁþÔÌÁ“ÑÁü©ÄÁffªÁøS’ÁœÄhÁôýJÁj ÁÝ$òÀÉv‚À33ƒÀßOM¿ƒ€>…ë¿)\OÀµÀ“ÁshKÁ¶ó‚ÁÇK‘ÁR¸®Á9´´Á+‡ÐÁ¬ÊÁ`åÖÁD‹ÆÁ`åÕÁ/ÀÁ\ÎÁ–CçÁ¬ÖÁƒÀßÁÑ"ÂÁÝ$ÇÁ-²®Á ÁÉvÁ—vÁþÔ|Áš™UÁ-4ÁåÐ*Á¢EÁ²9ÁshuÁ¼teÁÇKÁNb\Á¬JÁJ zÁú~”ÁL7…Á7‰ŒÁÝ$«Áçû¥Áyé‘Á+‡„Áq=^ÁJ *Áé&+ÁÙÎçÀçû Á®G3ÁåÐÁ¨Æ;ÁÍÌ(Á¬ÁTãÍÀåОÀ¦›¤Àáz´¿d;ß½ÂU@9´°@ìQAD‹L7À^º‰Àƒð¿F¶ó¾VÀ´È®ÀœÄ`À ÀNbøÀ‰AÁ+EÁ‡QÁ¸ƒÁôý—Á00ázd@-2@VÅ@^ºµ@\ AÕxñ@¨Æ'AœÄbAh‘YA–C{A¾ŸhA ×€A¬AÓMžAh‘¹Aw¾ÌA¬¼A1ÅAáz­Aj½AÛù¢AR¸£AÑ"”AR¸zA33A°rfA¾ŸŽAî|¬Ayé²AbÄAL7ÂAu“ÖAòÒÜAZñA×#B•þA#ÛB˜nþAÑ" B5ÞBR8B/]BÖB¾B#Û B/ÝBjBB`B¢EôA‡ëA ×BHá B€BZdBP B­ Bq= BbB{üAbêA˜nÒA?5ÏA-¶AºIªAøSA= yAÙBA-²GA‰AXA㥅Aj¼AƒÀ©A¬µAR¸ÓA¬ÖA‹lîAÝ$úA^ºBìQB‘íìAZdÞA;߯A5^ÀA‰A¬Aö(AbŸATãA® Aî|‘A-²qA–CUAD‹`A²MA´ÈAD‹Aú~¶@ªñÎ@¢EF@J @ff6@×£p@¤pÉ@…AL7IA–C]A= kAHávA;ß=AÃõLA33%A¸#AÙ,AÂ!AÅ 8A–C1AþÔ$AÕx[A+GAÓMrAÕxiAìQxAu“pAªñFA'1dA ]A¬†Aé&Aj¼„A!°€AþÔvA?5’AÇKA9´¤Ao«AåУAòÒ¥A9´†AçûŒAV‚Ad;ŠA‡•A1›AßOµAÑ"¬AmçÅAÉv¾A33ÒAÝ$ËAyéØAw¾ðAÅ ýA¦›éAžïãAƒÛA-²ÂAƒ²A¾Ÿ–A…ëwA¸EA{A–CAZØ@ÇK A-¾@/ÝØ@¤p‰@VÝ?î|O@¦›D@ÃõÈ@)\³@oA+‡FA^ºoAš™•AìQ¦A33ÀA¾ŸÎA5^ÂAbÌA“±A7‰›AøS‰Aé&YAu“^AÏ÷=AÂ-A¶ó Aã¥û@ÃõÈ@D‹\@= ×?é&Ñ?yéŠ@¦›@u“Ð@˜nr@ÇK³@7‰‘Bœ‘B/B=Ê‹B#‰BçûB…ë~BݤB¬Ü†BÀ‡B/‰Bþ‰B˜®BÓ B®’B}ÿB¸Þ‹B!ðˆBï‡BþT…B馅B²Ý‹BöhŽBÛy“B/Ý–BÉ6œB¨FœB…«œB£B-¢BJÌB¸ž˜BFv”BÍÌŽBw¾BbB´È‘BR8–Bm'›B¢B…k¦BT#§Bm'«Bì§BuÓ§BÁJ¥BX9¦Bî¢BB œB–•BÑBD—BRøœBDË—B\Bç{B¶3 BÑâ¥B!p¦Bh¬B®‡¬B B¥B¶ó¡B˜®›BVΙBf¦–BÙN”Bd»™B;Ÿ B7 ¤Bj¼¥B°²©Bw¾©B`%©Bš¢Bw> Bj¼™B!ð”B)œB×£ŽBåPˆB˜n‹BbÐBòR”Bç;šBôýŸBüé¥BòÒ©BÕø¦Bsh¥Bh‘¬Bm§¬B7‰¥BH¡¦Böè£B —¤Bu B9ôBB`œBú>¨Bdû¦Bj¬B²­B= ¬Bf&³B š³B‰­B'1ªBþ©B B¦B€¥BHažB#ŸBª±™BjœB?u£Bs¨¤B7‰¦B B¥B —¦Böh BX¹ŸB–CB#Û—B1“B;ByiBÕ¸†Bþ”†B#›ŒBF6B“BFv˜B…«”B}ÿ–Bþ‘BìQBö(‰Bðg‚B®GwB5ÞxB WnBJŒoBøÓqBã¥uB+~Bžo‚B¤p‰B!°BoRŽBÝ$‡B\OƒBhQ…BX¹B®Ç„BÙ΂Bò’€BP‚B…k}B1‚Bj¼‰B,ŽBU“B3ó—Bݤ›Bƒ@¡BÑbœB?5—BÉö‘BÓŽBo‡BÓM„BZBúþ†B×£‡B ‚‹BÙÎŽBqý”BÓÍ•B=JœBh‘BëšB—B`%•B7ÉBŒB‡–†BøSŒBœDBY‰BR¸‰Bd»B}ÿB‘í“B#›“B‡–—Bd;›BÛ9BøSwÁ¬8Á 3Áq=îÀ33«ÀNbˆÀ˜nÊÀL7±À;ßÁ4Á?5jÁ-Áš™”ÁTã®ÁÏ÷¬ÁL7ÄÁºIÒÁ= ¸Á33¦ÁÉvŽÁ¦›tÁ˜nNÁV!Á1Á ËÀJ zÀL7ÀÛùVÀÙÎgÀ^ºÑÀ‹lÁff&ÁøSYÁj¼LÁTãoÁ¦›“ÁF¶žÁ´È®Á‘í·Á%³Á^º¢Á= …Á5^VÁ˜n$Á¸ñÀo‹À;ßWÀP=B`å¾Há:?×£ð?Vý?Zd»¾1LÀþÔ¼ÀÇK ÁßOEÁ= SÁªñ„Á¶ó‹Á‰A¡Á¶óžÁ7‰©ÁR¸Á5^¦ÁX9ÁšÁ‰A±ÁZd©Á¦›³Áw¾–Á¬›Á…ë}ÁÁÊoÁ}?WÁÍÌ>Á33SÁòÒ'ÁP ÁB`éÀ1ÐÀq=Á4ÁTãÁ'1,ÁƒÀÁßOåÀßOÁ¶óGÁ'Áƒ.Á\hÁ'1tÁw¾aÁV)ÁÓMÁƒ¸À;ß“À‘팿NbÐ>D‹TÀÓMBÀÙºÀ^º•ÀìQ˜Àff†¿5^z?h‘Ý?F¶£@j¼ð@Zd3AB`IAD‹„A˜Aš™´A!°®A‡£A…‡A²eA¤p)AøSAœÄŒ@ú~@¦›„¾ƒÀBÀu“@ÀD‹,?ƒÀŠ?ôýœ@Å ð@= Ad;OA–CeA ‹AœÄ¦A5^¹AÑ"¹Að§ËA¾Aáz´ANb—A ×AßOiAff.A˜nAö(Ì@Ï÷{@òÒu@—@V•@¢Ež@+‡Þ@Å *A˜nTAã¥[A´È†A°rrA¢E‰AôýzA®GAA®GAXwA9´lA;ß9Au“,AHAåÐA´ÈHA×£6AÙÎEAmç/AÓM:A¢E@A®=Aj¼lAžïiAXYAåÐ"A9´A Ó@Ë¡ AJ Ê@ú~¶@œÄX@š™9?L7Q@j¼¤@¬ü?çûi?ìQP@ªñb@¼t“¼²ÀìQÄÀÏ÷ Áªñ*Áo]Á00ªñŽ@mçc@áz¸@œÄ¨@–CA¬à@Há(A7‰MAoGAìQrAçûoA…†AZdœANb¦A ÂA—ÏA¬¶AbÀAsh°A‰A¹A?5¢Ažï¥A‡“Aƒ„Aƒ†AL7mAÍ̉A?5¡AR¸±A®GÅAoÅAshÙA7‰àA¦›ïA²BîüBhBB` B–ÃBö(B¤p!BìÑBã%B?µBœÄBsèBìÑBçûÿAÂòAq=äA®þA…ë B“˜BžoB WB5ÞBj¼Bƒ@BB‰AûA®GèA/ÜA¾AJ µA^º˜A®GA/ÝNATã[A°rlAB`’A“AV¯A¾ŸÂAƒÜA`åàA“öAü©BåÐ B´HBÉvóA¸èA= ÌAÃAÛù±AºI¡AºIšA9´ŽAºI¡Açû–A#ÛwAôýjA}?yAÙHA}?A¬ AVå@ƒ¼@¶ó@ ×#¾¬@)\G@ƒÀÖ@øSA´ÈHAÝ$bAåÐpAzAáz>ADA/ÝA®ó@øSÏ@þÔ @É@–C«@þÔœ@òÒ A°rô@ÓM2AÇK7Au“FAD‹RAƒÀ*A…QA'1LAR¸A7‰ˆA‡gAX9`A+OA®sAÓMbA•A¨Æ…A…kAÇK_A…ë/AffA}?A¾Ÿ"AZBATãgA‹lA‹l‘A¢E¬A ­A–C½AoÂA= ×AD‹ðA²ìAZÐAF¶ÎA•¶Ažï AøS†AòÒcAƒ&A ï@}@…ë™@`å@ü©y@/Ý@L7y@h‘Ý?/½¿…+¿‰A ¿²¯?)\ÿ?sh©@#ÛA…ë1AƒjAmç{AJ ›AHáªATã£AX¯A/˜A wAš™_A‹l)AÅ BAÕx'AbAL7Õ@#ÛÙ@X…@`åP?‡™¾R¸Þ>ü©y@#Ûa@;ß×@¨Æ·@¬A´BÍL“B ÚB\O‹Bƒ@‰B¾ßBo’BL7„B¶³‰B•‡B¬B5ž‹B\ÏBºIB{”‘BB–ŒB= †B7ɆBî…B´‡BîŒB«B-²”B‰A—BלBåœBž/žB+¥BW¢BœŸBºÉ™BÍÌ•BãeBbB×B!0“B«˜B–ƒ›Bs(£BÅà¤BF6¦BbªBf¦¦B¸§B/]£B¨¢B•žB‰˜Bô}’B`e‘Béæ•BšBd»—BL7œBÏ·œB  Bé&¦Bø“¤BEªBÓͨBº ¢B?u BZ¤šB€šB˜.™Bjü–B=J™BA B‡V¢B=Š¥Bø©Bç{©B ¨Bîü¡BPMŸBô=˜BL7”B;ŸŒBºÉŽBøˆBÓÍŠBòRBXy•BºÉ™BÇËžB ×¥Bƒ@ªB–¦B^z¥Bðç¬B3ó«B*¨BN¢©B¬\£B?µ¤Bü©ŸBdûŸBBœBÅ`¥BاBÏ7©Bj¬BPͪB㥱BB²BX«Bî|ªB´H¨BB`¨BH!¨Bªq¡Bw~ŸBZä˜B´È™BÝd¡Bîü¢BZ$§Bš™¦BÅ`§Bƒ¡BhŸB^ú›BÓ ˜B{”’B{ÔBD‹ŒBD‹†B9ô†BBBÝä“B{˜Bãe”B®G—B1H‘B'qBÛ9ˆB¶³BuBªñxBonB/rB%sB'±uBP €B-2B`%ˆB°rBoÒŠBË¡ƒB7 €B…«‚B‘­€B!°„Bƒ‚B¼t€B²‚BZd}BïB®‰BX¹Bª“BX™BfæœB¶ó¢BHáŸB1ÈšB}¿•Bô½B‘í‰Bl†Bw¾‚B‘mˆBœD‡Bçû‹B¼ôBB”B¦›’B ‚™B°r›Bjü™BT£–B¤°“B-ŽBÍLŠBí…B®ŒBB`BˆB‰B1Bðç‘BÇ‹”B¤0”B€˜BB›BoR Bj¼NÁu“ÁžïûÀ-ŠÀZd À ×;À#Û‘Àyé&Àsh©ÀD‹ôÀd;#ÁX9TÁžïWÁ®GˆÁìQ|Á¼t™Áü©¤ÁÁʘÁ“€Á¢EHÁ;ß#ÁºIôÀÙšÀJ ¦ÀòÒ½¿ ×£¼X9D@Ï÷“?Tã…?R¸®¿¤pÀX©ÀHáÁ/Á/Ý&ÁX9dÁPgÁ‰A|Áu“ƒÁ®‡ÁÙÎ[Áƒ(Á!°îÀð§‚ÀÀ¿ ë?X9@¬´@Å ¨@jä@)\ AA¬Æ@ð§.@¼t¼…CÀ`åÐÀ®ãÀ+Á×£RÁ…€ÁXƒÁ㥉Á×£lÁ+ƒÁ²_ÁÍÌtÁ×£•Áh‘‹Áq=”ÁyérÁq=nÁÇK?Á- ÁÁR¸ÆÀ7‰áÀî|£À¼tÀ-*ÀP7À…;À¶ó­À…ëiÀj¼°À= 7À²OÀ°r¤ÀÁœÄÌÀ\ÞÀ;ß+Á‘í4ÁbÁ¼t×À!°ŠÀÖ¿J "Àj¼´¾®G@33³¾®g?Õ¿´È6¿= W¾ºI\@áz˜@)\£@œÄ A´ÈAQAÏ÷mAX“A¤pžA!°¼AÙνA´È³AR¸œAþÔAJ bA= CAoAþÔÄ@9´x@Nb ?¤pý?‘í¬@V²@Å AÙ8Aü©eAffˆA¸œA²¶A²ÐA¶óãAžï×AƒæAÙÎÙAã¥×A®¾AÛù³A¬¨A+‡ˆA+yA–CKAD‹A®-AD‹*AFAòÒSAÇKYAö(‰A²™AºI§A“°A¬™AZd¡AX’A¬ŒANbA`åˆA‡‚AmçgA-²?A¶ó1A•;A¾ŸA¸=Aw¾7A#ÛSAh‘OAR¸nAé&Au“ŠA\ Aw¾¡Aw¾›AžïAshsAé&MAu“\AÅ *AôýA˜nâ@¤p‘@¨Æï@®û@5^‚@î|'@?5Š@`åœ@5^ª?%Á¾}À¶ó©Àžï Á-²'Á00ZdA}?½@u“A ç@×£A5^Aî|KAZpAÂ[AÏ÷ƒAð§ˆAƒŸA/±AL7ËA¬äA5^üAßOõAÕxëAÃõÏAÏ÷ÉA1¯A9´«AÏ÷—AV„A{‚A×£fAmçAžïžAôý¥A^ºÃA¦›ÂAh‘ÙAé&çAÝ$þAF¶ B‹ìB+BJŒB++BJ )Bh$Bã¥BshBåPB\B¸BªñëA^ºÜAÏ÷×A7‰ÍAÕxëAÙõAË¡ýA«B^:B W B—B¼ôB°r Bƒ@BÛù÷AF¶ïA9´ÞA•ÑA\¼A×£¢A\‰AÝ$˜A¨ÆšAË¡·AøS²APÌAÇKÍAoäAºIâA‹lîAƒ@BšBfæB1ñAü©áAƒÀÉA…ëÊAJ ²Aé&¦A{›AshŒAw¾¡A×£œAmçA`å^AbvA¸qA×£6A‰A(AázÜ@!°Â@B`%@¼t“¼¨ÆË¾{@7‰¹@ð§AÅ 0AÅ HAMA GA‘íA= ó@ ×{@ÂU@Tã%@q=*?¦›”?“„¿ÁÊ¡¿î|'@q=*@ªñº@¤pÝ@ÍÌ ATã/A‹lAHáJAyéLAð§zAzA•cA33EAð§(AÅ @A¦›AÉv"A1&AþÔà@J Â@F¶[@é&9@¬\@•Ç@q=AV.AòÒiA‹lsA¬”Aú~œA¶A+‡¶AÍÌÊAffÞAÙÙAJ ÄAq=­Amç˜AVAÑ"EAÏ÷AøSÇ@HáŽ@‡™?ÇK§?X9Ô¿€¾'1ÀjÉvn@òÒ%@`å0@°r@F¶³¿w¾Àé&­ÀNbÌÀ{ÚÀ˜nÁHáúÀTã Áq=ÎÀ…ë½ÀÂ%À‘휿Zd@òÒ@ªñ®@ú~þ@‹lã@®Aî|×@shÕ@= ã@ÂA?5AßOÙ@L7©@î|ï?;ß¿¾Ÿª¿‡À ÏÀNbÁÃõÁshOÁö(NÁìQxÁq=`Á–CÁNb—Á´È‡ÁìQ~ÁÁÊEÁ‰A*ÁÓMÚÀd;‹ÀbˆÀòÒÝ¿}?=À;ß¿¿`åÀVÀ¨ÆCÀZdkÀX9˜Àd;gÀ˜À-²Àçû©¿R¸À—ÂÀ®GµÀ¦›¼À‘íÁ1(ÁR¸ÁƒÀÖÀ#Û±À{VÀ-²‰Àjü¿ìQ8½òÒ­¿À¾h‘½¿#Ûy=²Ï?¬®@ƒÀº@¬¤@×£APAHáÁ00®GÝ@V¾@“AÏ÷ß@`å$A*A‰A\Aƒ‚AblA{‰A= ‚AÅ ’A‹l§AbºA ÓAã¥èA#Û×AôýßAq=ÄA ×ÇAÑ"±A…ªA˜n›AZ„Aj¼‹AJ ~A-”A ׯA}?´A®GÆAj¼ÆAã¥ÛA-èA`åûAîü Bã% BÏwB°ò Bo’BmçBš™Bã%BbB×#B-²B/]B94B+‡B˜nBš™BbBÅ BZB3³BBàBBçûBòÒB B)\øAPëA¤pàAÏ÷ÈAj¿AÁÊ¥AÛù”AázrA—hA{|Aü©™A`åžA²A‘í½A“ÝA9´áA¢E÷AZäB‹lB¤pBú~òA9´çA-²ÐA;ßÊA·A¬§Aq=¢A˜nAÁÊšAÁʘAÑ"€Aš™aA+‡nAßOGA“AçûA`åÐ@ÃõÄ@ÙÎ'@#Û!@ÁÊa?u“0@•Ë@ÓMAh‘CAÂSAq=rA—vA'1:Ad;GA×£ANbAVAÇKA•A!°Aã¥A¬@AÏ÷!A/ÝXA¼tQAshgAL7oAÅ FAffrAÍÌjAV’A–C A–C•A‰AAƒA¸–A?5ŠAþÔ•Ah‘¢AyéAœÄŽA+iAÑ"sA¨ÆuAVAÕxšAF¶©AÙÎÂAƒ¿AÏ÷×Aî|ÐA¬ÞAôýâA¼túAÍÌ B°òBb÷A‰AëAffãA®ÆA“¯A…–Aq=xA)\CA\Aƒ AºI¸@¨Æß@ÉvŠ@ «@´È&@Ñ"›¾ÇK7? ï? @!°º@A¤pMAmçoA+‡”A¶óŸA+‡½AXÌA¬ºAF¶ÂAî|¬AƒÀ“ATã‡AƒZA¼twAX9`Að§TAþÔ$AÁÊAÅ A+Ÿ@ð§v@P?@—º@/ÝÌ@-A‡Í@çûù@¬\B…«‹BJŒ‰Bß…B)…BsèzBÏ÷vBÚ€BÁ…B‹ì…B/‰Bž¯ˆBðgBéæBɶB BUŠBJ …BL·ƒBj…B¬ÜƒBö¨‰Bd{ŠB‰ÁB²“BÛ¹˜B…«™Bžï™BJŒ¡B˜® B°²›Bdû•BnB¸ÞŠBŒBþÔ‹BªBH¡”BÅ–BožB'±£BÇ‹¡B˜.§B™¦Bþ”¥B^:¢Bq}ŸBÄœB¾•B7IB%FŽB)–Bwþ›B´È˜B'ñœBVNšB¸B?u¢B\£Bb¨Bžo©B²¢BV BÅ ™B=Š–B”B5ÞB{Ô•B“Ø›B{”žB Bº‰¥B`e§Büi¦BªqŸB ZœBÕBþÔ‘By©ŠBw¾ŒBJÌ…B!0ˆBu“ŒB«‘B?õ–Bš™œBE¢BËá§Bƒ@£B¸ÞŸBÑ"¦B§Bì B!°¤BÁÊŸBîŸB WšBžï—B%Æ”B1žB´ˆ BÛù¢B §B¥B¤0«BìÑ«BÕ8¤B‡Ö¢BÉv¡BÛy B“˜ŸB-2˜B?5—B²’Bj¼‘B²]™B=J™Bç{B3sB¼t B®‡šBþT™B°ò•B^:“B^:ŽBË¡ŒB‡Ö‰B×#ƒBƒÀ‚B¬œ‡B¢EŠBÝ$B ‚Bu“‹B¶óˆB˜‚B\€BsBP gBáz]BÇËeB9´_B+‡gB“˜mBòÒsB¨Æ~Bš…BB B«‘Bf¦B¸^ˆB „Bå„B“{Bh‘~B,xB{”rB7‰sBç{oB-sBEB®Ç…BšÙŠB{”Bª1“BX¹—B1ˆ”BÏ÷BšÙˆBuÓ„BøS€Bð§|Bç{{ByiƒB+B¶3…BÃ5ˆB;ŸŽBZäBî–B94™B#›•Bš‘B°²BL÷‰BN¢…Bþ”€B¼4„B`eˆBs(‚B+‚B?µ‰Bì‰BëŽB ׎BË!“B#[•B®šB^º)ÁœÄìÀHášÀZdÀo¿áz¾¢Eæ¿m盿•sÀ= ÓÀ9´ ÁmçWÁš™eÁ/‹ÁÃõxÁ¤p’ÁX¢Á²ÁV„ÁìQLÁ5^&Á?5úÀ —À¬ŠÀ¸…¿Tã?ÍÌ\@j¼Ä?˜n’?å¿°rœÀÀPãÀR¸îÀ¬ÁƒJÁ`ånÁsh†Ád;ÁÃõ…Á;ßcÁÙÎ/ÁºIÁ‹l—À°rÀd;?‘í,@ƒÀÆ@¾Ÿ¦@j¼è@+‡ö@ÓMAºIÄ@ÛùN@h‘í¼²WÀ˜nÚÀî|óÀ‹l3Á9´FÁ'1zÁÏ÷qÁ+‹Á;ßÁd;‹Á#ÛgÁHápÁìQŽÁj€ÁÃõ†ÁìQVÁƒÀfÁÏ÷3ÁþÔ Á?5 Á`åÔÀ…ëáÀøSƒÀX9À¾Ÿš¿sh‘½é&À?5®ÀyévÀ7‰±ÀTãEÀ?5À7‰‰À ×ãÀÙ®À¼t»Àh‘ÁoÁé&Á «À“<ÀÛù¾¾…둾¾Ÿ:@?5n@Ûù^?‡É?yéæ¾ƒÀ½5^Ú?-ª@²£@½@–CAmç9AÝ$rAmçAÅ ¡AßO²AÝ$ÑAÇKÑAB`½A!°¨A-šAZ|A [A-A33ï@u“¬@î|@åÐ"@w¾»@Å À@%AÅ DA˜nrA°r“Ash«A¬¿A1ØA?5çA´ÈÝAð§ìA•ÚA+ËAµAÁÊA¤p‘AòÒmAw¾WA2A®GAff AÃõAã¥?A7Aö(:AœÄtA¨Æ‰AÉv’A¢E¢AåГAR¸¤Aq=—AffšAþÔAœÄœAP‰A/݃AffXA¤pGAff^A®?A‰AhA= AAøSkA+iATã‚AZdŠA%‚AœA\žA…žAmç…A)\mAq=JAžï]A¦›2A?5(AìQø@þÔ¤@Ý$A‡AôýÌ@ƒÀš@š™Õ@žïÏ@•+@ ×@é&±¿®GaÀ“ÈÀ‡ Á00ö(“AÏ÷€A;ßAd;‚AB`•A7‰A‹l«A;ßÃAÝ$»AìQÒAÝ$ÑAÝ$êA}?÷A˜î BÁJB\#BshBj¼B%B/Ý BmçûAoöAü©àA5^ËAZdËA²¼AÅ ÍA®êA-²õAh‘BÁÊB«B…BÖ$B`å2B‹l;B7 CBœD;BP IB€IBHáLBÝ$?Búþ5B¬5BÕø'B+‡!BþTB«B'±BZBË!!Bç{"BBà!B/]-Bj<4BR8,B¶s3Bq=*B¤ð-B«$BÛyBmçBÁÊBÓM BþÔýA¬çAÓAD‹àA×£ÙAú~÷AÃõôAô}B;_ BÛùB…kB/] B,*B/Ý*Bªñ*BúþBÓÍB„BƒÀ B-²üA'1òAZdèA+‡ÔAmçêA'1çAÁÊÊAú~ÅA+ÊA}?¹A)\šA5^›A´È„Aî|sAÛù6Aw¾'Aî| A8AøSeA‰AŒAºI©AZµA¾ŸºAƒÀºAåРAü©•A\nA= WAÝ$VA331A#ÛAA;ß5A\&AVUA¬PAZ†ANbŽA/—AÁÊ¥A®G˜A‰A¯A×£±A˜nÈAázÈA´ÈÇAé&»A-²¦Aƒ°AƒÀ£A!°¶A+ºAyé¤A+‡—A/Ý|A\~A9´ZAZdA¾Ÿ•A^º­AB`ÊAåÐÑA‹lëAªñíABÃõþAb BNâB#ÛBX9 B+‡B+‡ñA‹lÔA˜nºA‹l¨A¨Æ‹A…wA-²=A¸IA®G#Ah‘AA A}?)AÅ ü@-’@ßOÁ@X9Ä@×£Aé&+AÛù^AòÒ†AÓM˜Aj¼´A;ß³AázÐAî|ãAu“ÝA+ãAìQÐAw¾¶A¶ó®AÓM–A ¦Aff›AŽA•qAÑ"uA/ÝhATã/A!A¦›(A´ÈVANbjAÕxˆAƒAÏ÷”AJL—Béæ‘BÉvŽB B‰BË!‡B¤ðBV|Bj‚BˆB+‡ˆBẌB+‡Bd{–Bªñ—B/šB'1›B`å—BHa‘BPÍB%Bß‹B3³ŽBDB„”BT#•BDË™B!p–B1ˆ—BEžBJ žBT£›BVN—BÔB¬Bn’B5Þ“BÅ šBN" Bm'£BBà§Bð§¨BÕ8§Bò©B„£BÏw B5žœBÓ–BZd‘B¤ð‹B%F„B?µƒB;ŠB´‘BJLBE–B¶3˜B žB‘í£B¬Ü§Bq=­B ‚¯Bd»©B=ʨB‰¢Bú~¡BÇKBÕ8BÇK£B©Bn©BªBV­B{T«BJL©BuÓ¡B`¥Bú¾˜B¶s‘B/ŠB-r‰B¬œƒBd;ˆBÓBþÔ“BçûšB¦œB¢…¡B¾ß¦B9ô¥Bff£BF¶ªB«­BuÓ¨BÇKªB%F£B…«¡BòÒšB ךBh‘•B Ú¤BÓM£B˜®¤B^º¨BZä¦BÑ"­BoÒ«BD ¤B¢… Bö(ŸBìœBH!›B¢E“BJŒ‘B–ŠB¦[‰B¦B@”B-ò˜B\ϘB‡V›BòR–BÝd–B-²•B9ô‘BÛyŽB7‰‹Bf&‰BDK‚BÓ €Bj¼ƒBãåƒBZd†Bš‰BÍL†B5‰BÉv‚BáúB‘msB9´iB+]Bé¦^B ×TBF6XBÁJUB‹ìZBX¹dBÝ$hB—vB¬œ}BœÄxBžokB%dBÉvmB)ÜgB°rnBÑ"kBHafBªñhBJ cB'±gBªñvB€BÓ͆BÍŒ‹B绑B^z–BoÒ’B²ŒB/‡B,ƒBÙÎxB×#rB^:kB}?vB1ˆtB¾|Bh‘€B9ô…B+‡‰BË¡B–C“BÍLB%ÆB‰ŒB\‡BËá„Bžï|B?õB¦ˆBXƒB-r‚BÏ·‰BẋBÁJBW‘Bu—BYšB°òŸBdÁ‰ANÁÙÎ!ÁžïëÀB`ÀÓM²ÀªñÎÀÅ °ÀøS÷ÀoÁð§RÁÛùtÁú~pÁ˜n‚Á!°^Á®qÁö(”ÁÛùÁ•ˆÁo_Á OÁÅ ÁshÝÀ;ßÇÀÉvÀX9>#ÛA@øS@j¼d@Ë¡…?®G)ÀX9lÀj¼ÐÀÕxÙÀ×£ÄÀ¬ÁshùÀ‡ÁåÐÁTã­ÀR¸Î¿œÄ ¾¬"@åТ@ÇKŸ@+÷@D‹ä@ü©AåÐÞ@w¾÷@°rA‡9AshA{î@\¶@¶ó%@¾Ÿš?{.¾F¶cÀÝ$†ÀžïãÀøSÁøSEÁ)\IÁosÁ‰AZÁF¶ƒÁjÁd;{ÁázlÁ—.Áð§Áu“¼ÀòÒMÀú~†ÀHáê¿d;WÀ-²í¿çû9ÀÓM"ÀìQˆÀD‹ˆÀ%­À¾Ÿ†ÀZ¨À¬ê¿^ºÙ¿øSÀ)\·À}?±À¨Æ‹À‘íøÀ‘íÁsh ÁHáæÀ¾Ÿ–À/UÀX‰ÀÏ÷³¿×£°> ÀË¡E>–C›¿w¾Ÿ=°rˆ?{–@ÙΟ@h‘¥@{AÛù A¶óEA/IA¬xAßOˆA%§A5^¦A¬­Ažï“A/ÝŒA…cAœÄ8Aq=AÓM–@çû!@é&1¿%!?ö(„@Ý$&@çû½@R¸AF¶=AVoA\Aƒ©AJ ½AÄA= ´A33ÆA`å¶A‰A³AffŸAœAžï–AmçqAÃõZAq=.A{AAÏ÷A¤pAA7‰WA¢ETAƒÀ|AÃõˆAZ†AÃõ•AÙ|AœÄ„AòÒ]A…ë[A¸aA-²CAu“FAV2AjAºIø@= û@¨Æ»@¢EAPë@øSAœÄø@…ëAV8A×£JA)\€A{†A?5‘AªñlAƒrA°rHAVFA!°Aé&Õ@ßO‘@㥛?oÓ?R¸v@î|¿?^º©¿‡Y=yéf?7‰9À'1@ÀºIØÀ!°ÒÀ+!ÁìQ.Á00–CcA7‰7A MA{*A+AA )A33KAD‹AL7ƒA;ß›Aƒ¥AffºA}?ÕAœÄìAžïBw¾B^:BåÐÿA#ÛâAžïÝAÃAòÒÆAw¾²A-²¨A}?¦AX9¥A¾Ÿ³A¼tÏA1ÚA¢EðA¼tõA¨FBÁÊ B°òBØ!B*B%7BºÉ9B{”EBbBBìÑ@Bh4BòR,BßO*B¾ŸB‹lB„ B/ÝBÙBVðA{þAÚ B/B¾B-²#BË¡ B+)Bªq B$BB¦BªqBshBjûAÅ ãAX9ÉAƒÀ³AÃõ½A{ÂAªñÞAÅ ãAB#ÛB}¿BL· BmçBJŒBË¡B°òB!°Bb÷A#ÛâA¨ÆêA¬ÜAd;ÑAÝ$ÐAåÐÊAw¾ßAÓMØAb»AºI¹AÉvÄAo¯Aö(šA#Û‘A‰ApA…GA•Ah‘Å@D‹Aš™9Ah‘iAÙ΋Aƒ¡AøS¯AòÒ®Aj®AB`’Ayé„A?5PA+‡4A¾ŸA¶óñ@J ê@/ÝÐ@Å ø@‘í:Aî|5A¶ó_A`ånA33sA…ë†AÙnAºIŽA¤p„A'1šA-›AÅ †AshAw¾iAÁÊAX9vA\Aáz‹A!°fA•QAÉvA×£ AßOÙ@`åAZ(A/IA/„AÇK’AÁʯA‘í°A#ÛÌAXÐAd;êAºIüAÁÊ÷A…ÛA…ëÐAºIµA-A‹l‚AffTAff$A9´ä@–C‡@“À@¢E‚@5^â@}?¡@w¾ã@Ý$š@ºI¼?Z´?øS#?¢E@D‹L@)\Ë@Z A1BAƒvAÍ̃AHá¢A ×¶Ao²AD‹ÄAR¸­A˜nA…ë€A¢ERAjA®GKA\A…ëý@…ëA²ç@¬z@ÁÊ…@33“@¢EA®Aã¥[Ad;OAXwAþÔBh‘B‹¬—B¨“Bž¯ŽBR8ˆBVN„B'ñ…Bð'B?5BÁJ’Bü)’B˜î•B˜®•BXy”Bª±‘BÇËBÁŠBRxB¬ÜŠB㥋BÛ¹BƒŽB5Þ•B²]•Bî|šBê–Bd;•B#[œBÑ¢›BL7˜Büi’B!°B{‰B+ljBBÃuB?5—B/™B)ŸB‡–¡BBw¾ BX›B™B94”BB ‘Bò’ŽB¶óˆBÉö‚B‡–BX¹ƒBœDˆB BˆBªñBåŽBô}”BN¢šB.žB5ž¥B'1§Bs(¢BPͤBXùžB —ŸBº B¨žBá:¤B‘­§BuªB רB‹ìªB¨B˜n£BÛ¹›BÉv—BöèBœ„ŠBm§‚Bãe„Bé¦}BÕ¸„BL·ŠBH!‘BÝä—B²ÝšB¡B}ÿ¥Bì‘¥Bmg¤B¤ð«BHá­B‰«BC®Bu§B‰§BþÔ¡B¥Béf¢BÓªBPÍ«B+ªB94­Bn¨B¼´®B´¬B^:¤B“Ø£BÚ¡B¼´ B˜¡Bå›B‘-™Bîü‘B•‘B‘­˜B%Æ—Bª±œBNâ™B9´BL7˜B•™BLw˜B“˜”Béf‘B\OŒB-r‡Bm§‚B¢B­…Bë…BZdˆBÙNˆBåƒBuS†BL·€B´H~B„qB¼thB­[BòÒ]BPUBR¸UBÉv[B…k[BœDhBÝ$jB94wBq=yBÁJqBºIbB—_BfBî|aB}¿iB+gB“˜hBD‹pB}¿oBœÄyBq}‚BÅ`ˆB\OBƒ@“B˜.˜Bô=žB=JœB Z—Bø“BÕŒBßÏ…B®B…kyBî|B„{Bq½|BP}BÇ „Bsh†BôýŒBòRB‘mB B‹,Bü)‹B¦›‰BFv†B°²‹BD‘BÑbŽBþŽBî<•BÍ ˜B;ß™B!°œBÑ"ŸB¾_¥Bü)©BÝ$NÁ ×#ÁßOÁo×ÀX9|À{ŽÀ ×ßÀåоÀ‡ÕÀmç Á®5Á‡]ÁHáVÁÃõ~Á= [Á“tÁü©’ÁÃõ€Á{„ÁÏ÷OÁºI:Á—Á´È¦Àôý Àfff¿®GÁ?d;‹@+G@D‹„@ÂÅ?yéæ¿ÛùÀ\¦ÀNbÀÀḬ́À9´Á¸éÀ¼tûÀ/ݼÀî|À“$¿ºI ¾L7)@š™¥@+‡¦@ÇKA ×ã@ð§ AøSç@1Aôý4A®CA\(AÅ ì@shÉ@åÐ@VŽ?¦›D»b`ÀºIœÀÙÎÁÉv$ÁLÁ®;Á= aÁÅ FÁü©oÁÑ"‡Áã¥YÁÏ÷YÁ!Áu“ÁøSÃÀ®‹À-†À!°²¿‡9À¢E†¿ ×Ó¿^ºI¿+ÀNb8À ÀÛùVÀ‰A˜À ¿= ×>¼t3¿®‡ÀÅ XÀ-²À »À¸ÁƒÀºÀö(˜Àªñ À…›¿ ¯¿é&ñ>/…@!°R?ºI4@/?‹l@^ºq@Xé@ÛùA?5Î@¸AìQ Aé&YAoqA¼t’AÝ$œAq=ºAÓMÀA}?»Aú~¤AX9’A\nA)\EAßOAD‹´@Ï÷s@u“Ø>Å 0?'1h@R¸@®G½@q=A)\=AF¶uA¶ó’A= ©A°r¶AÈAázºAÏ÷ÆAZ²A5^£A7‰ŠA-lAd;cAü©3A¢E&Aôýü@ÉvÆ@ZA…ëÅ@X9A¤pA¦›A+‡NA gA{tAƒ…Ad;eA#Û{A…]A ×_AÍÌ|AœÄlA)\iAã¥YA33=A#Û+A¶óGA“Aš™/A+AF¶AB` A`å*A^º3AÃõLAòÒA+‡‰Aw¾AÑ"gAu“`AZJA%UAw¾A/Ýü@5^ž@)\ß?VU@²§@h‘@'1(¿ ›?Ý$@´Èv¿;ßß¿;ß“À7‰±À¬êÀçûÁ00¼tiA®G?AffJAffAZˆBë€BVtBºIgB/ÝqB%iBvBªB%ˆB¸žŽBB’B¬™B W›B}™BmçœBò’£Báz£BÃõžBݤ¤B‡– B¢Å£BÏ÷ Bm§£BƒÀ¢B‰ªBîªBRø§BË!©Bq}£B°2§BTc¦B,¡B…k¥BËa¢B/Ý£B´H¤Bu“žB7IžBZä–B–BžBhQŸBî|ŸBkžB“X BEšB‰A™B˜.—B´ˆ’B¬\B9t‰B…k…B‡–B)œ‚BðgˆB™†B)܉Bu‹Bª±‡B´ˆŒB‡Bžï…B‚B WwB¼thB hBªñ[BÂ[Bƒ@]BºIYB{dB¸žaBáúkB7‰nB!°`B;_RBåÐXBXbB'1bB°òoBç{oB,qBÂyBç{yB°²‚BL7ˆBZ$BÕ¸”BošB1HBZä£B×££BBßO™Bj<’BßO‹B …Bd{€B‘­ƒB!0~ByéB7‰€BÝ$ƒBH¡‡B¶³BR¸‘B94BÏwBÝd‘B9´ŠBB ‡Bn„Böè‹BBs(ŒBÑbŽBú>•BW™B¾_™BÛù˜BJÌšB,ŸBÁÊ BHá8ÁL7 Áö(ÔÀìQˆÀ—î¿33À+‹À7‰IÀ5^¦À‰AüÀ#Û/Á‡KÁ¦›RÁ'1vÁ‡kÁ!°‰Áªñ“ÁVsÁPmÁÛù2Áú~ÁÝ$ÚÀff~Àî|ÀP×¾h‘í?é&™@œÄx@?5‚@ú~º?°rø¿R¸þ¿‘í¨À²×ÀTãíÀ%!Á¢E"Á¦›2Áh‘/Á•Á;ß‹À+‡Àçû©?ºI<@ü©@}?Ù@mç×@'1$AV AmçAbAb2A²%AÁÊÑ@áz”@P·?Å à¿HáÊ¿‡¥ÀmçËÀ…ëÁ\ Áh‘GÁF¶EÁ ×oÁÉv\Á7‰†ÁNb“Á…ëoÁX9xÁ^º9Á¤p!Á+ÏÀb”À`ÀZdë¿ázlÀ¾ŸÀš™¹¿çûi¿´È¦¿¬ü¿ ×kÀìQ ÀßO•ÀìQ¸¿ ×£;ázÀ%©ÀPÀB`À…Á¸ Á¬Á¼t«ÀTãMÀq=ʾ‡‰¿7‰Á?^ºA@žï§=øS @+G?—¾?j@-²Å@= ã@{Ò@œÄAžï-A²]AË¡wAåЕAš™žA‹l¼AffÀAòÒÃA¾Ÿ¥A1˜AÍÌtA‡QAL7A+ß@ºIŒ@-¢?33@^º¹@-²@ÇKANb8A—\A¸ŠAßOœA–CµAœÄÆA‡ÚAÉvÐAàA‡ÑAÕxÏA7‰µA¶ó£AƒŸAÛù€AòÒ€AJ VAX94A%IAFAË¡_AºIhAìQxATã“AƒœAh‘œA®G¦AÂA‰A–AL7‰AœÄ‡AìQ‡AøSƒA5^‚AË¡aA×£FA¢E2AÍÌ,A}?A1AßO]AÁÊoA–CyAÛù—A-²–AÃõ“AázvA= ƒAd;]AR¸hAã¥3AbA'1ä@d;@î|Û@´Èî@-²‘@Ï÷+@yé‚@ö(€@b8?²o?î|7À®GÀbðÀh‘Á00•MATãAú~"ATãá@ÛùA°rø@'12A²_AƒÀbA“‹A —Aq=­Aö(ÈA¨ÆÚAF¶õA¸B= üAƒÀôAÓMØAq=ÏA}?´Aš™´Aƒ¡AHá˜AÛù”A!°”A+Au“¹A¤pÏAÇKãAžïßAÓMíAçû÷A{”BÓÍBmçBÙ$BáúBÙÎ.B#Û,B4BÍL0B¨F1Bªq(Bd;B`eBÙNBôýB}?óAÏ÷èA+ÿAáz Bã¥BÓMB¼tBHaBã¥B²B-B^ºBåPB{ Bd;ýAjæA ÏATã´A°r¤A–C³AìQ®A}?ËAÎAË¡ìAZd÷AHaB‹lB BoBôýBL7 B®GýANbéA-ÓA“×A¬ÄA\¾A¨ÆÁAºI»AË¡ÏAÂÇAžï«AìQ©Að§¶A)\ AZdŠAj¼zAyéFAªñ&ANbì@î|«@¨Æ»@‰AA^º7Aü©aAú~‰Aáz“AÑ"Aq=›AB`yAP[A‹lA}?ý@1è@}?‘@J ª@ÇKƒ@)\@—A/AVBA ?AåÐVA°rfA‰AHAçûiA [A'1€A?5€A/]AžïUAË¡CAçûgAÓMLAåÐpA–CkA}?=A/ÝAÉvê@ßO©@ôýœ@mçÛ@33A‰AA²UA\hA•’AV A•¹AÙθA¶óÑAÓMßAw¾àAÑ"ÈA;ß³A…ëœAZ†AÉvVA‰A&AÕxõ@/@shÑ?°rh@˜n²?…ëI@Õxé?Ý$v@ôý@•Ó¿)\¿¿ÕxÉ¿/Ý>ƒÀ*?¸E@ÂÅ@-²A KAX9fA¬’AË¡¥APœA«A!°šAÃõ|AœÄZAƒ A7‰5A‰AA ÷@\®@shÅ@•‹@Ûù>?òÒý?{@%Å@¨Æ÷@¸5AÙÎ#A`åRAݤ–B¾_˜B+‡“B“‘BF6B †BÖ‚B细B‘-‹Bô=ˆBuSŠBDˇBjüŠB¬ŠB¢EŒB‰BšYƒBL7~B¾ŸBHá€Bú¾ƒB°rˆBÝä‹BN"“Bl•BVœB㥙B²—BžïœBm'™B š–BòÒBš™ŠB¤°ƒB߃B‡Ö…B/ˆBá:ŽB“XBÁ–Bº‰›Bƒ@šBDœBÏ·—B¦[›B^:—BW—B;Ÿ‘B‰ŽB´HˆB°r…B‰‰BËáBw~ŠBHáŽB…BXy’BÏ·˜BbИB ןBð'¢B‰A›Bº ›Bö(–B'ñ•B`å’B}¿’B\O˜BN"žB!°žB9tŸB‡V¢Bƒ€¡B²ŸBsh˜BTc”B šBÇˈBëBX¹…B}¿BÏ7ƒB)܈B°²ŽB ‚”B´ˆ™B®Ç BB¥BPM£Bm§¢BÓ©B'±§B-r£BJL¨B¥B˜.§BÛ9¢BÍL¥B¢Å¢BìQ®BHá¯BÉö®B ¯B?5¬BÏ÷²BuS±B…ë©B˜îªBb©BD‹©Bw>ªB¨Æ£BÃu¢BkB¸žœBø¤B‘m¤B¯§BþÔ¦Bs¨§BH¡¡Bç» By)BßO—Bm’Bj‡@'1œ@…ëÅ@7‰ Ad;Ë@‹lAmç%Aªñ®7ÀvÀþÔøÀq=Áã¥KÁq=bÁÇK€Á33mÁÃõŠÁ°rÁ•šÁœÄ¨ÁÕx“Á¼tŒÁºI\Á¼tSÁB`Á+‡êÀÂÑÀ¬bÀ‡…À-²½¿œÄ ¿Zd[¿X9´¾¬ÀœÄœÀjÀ^ºÙÀZdƒÀ—FÀš™‰À‰AÁ1ÜÀj¼Á5^4Áî|IÁ“6Áö(Á= ËÀð§~À…ë±ÀòÒ-ÀÓMb¿F¶sÀÅ ÀšÀ'1PÀð§.À…ëQ?w¾@^º@Å ¸@ö(È@˜nAî|5AÑ"cAƒÀ‡A}?¥A)\£A#ÛžAƒA~AÉv@A…ëA= Ã@33[@Ñ"ë?‹l'¿Nb>š™@D‹t@¾Ÿö@ffAÛùHAX9jA;߇A´È¡A¶AÈAÃõ´Að§ÍAu“ÆA7‰ÇA˜n«Aé&œAøS“A/ÝlAÙÎ_A¨Æ/A;ßAR¸ A¶óAj¼PAþÔTAJ XA }AD‹‹A¦›AXŸAƒÀ‹Aw¾ŒA%A¦›nA9´rAžïcA9´RA%7Aã¥AÁÊÅ@Ï÷Ã@¤p¹@D‹ATãý@`å.Aw¾!Aé&?ATãSAXoA•AÅ “AÝ$‘AázhAçû[AøS/AÝ$:A)\Aé&é@¸™@‡ @Õx‰@´È–@ ×Ã?/=¿w¾=øS¿{~ÀX9\À¨ÆÛÀÁ+‡4Á˜nPÁ00 ÿ@o»@×£Ì@1d@åЮ@ ׳@ÉvA'1:A¼t1A eAî|uA}?–Aff¥A¼t¾A#ÛÔA%óA\èA;ßßAjÃAøS¼AªñžAôýšA¤p‚AR¸hA‰AdA®GA¤peAPŽA®GšAºI³AX·A°rÍAu“ÙAB`çAÛyBþTBBB` B‹lBBœÄ"BoBVB®GB7 B^:B/ÝîA33äAHáÙA33ÍA`åáA˜nøA!0BR8 B°òB«Bš™ B´HBÉöBš™ýAìQñAL7èA˜nÒAZÀAåЫAçû•A×£ƒA?5‹Aff‡A-²¥AþÔ§A¢EÀAPÉAË¡ÝA-²ÝA1ìAPõAÃõ÷A‘íóA= ØA ×ÄAÃõ®Aw¾­A°r¡AœÄ˜AÝ$’A9´‡A¨Æ A)\—Au“tAÓMlAÛùA¨Æ_A‘í*A®GATãÝ@F¶“@u“˜?'1¸¿ßOm¿;ß@%¥@-² AV5A!°PAÁÊUA-BA•AºIè@w¾_@+‡@`åнD‹ Àôý¤¿¬,À¬,À7‰‘? ›?Ãõ”@žï·@XÝ@Ë¡ A¤pÝ@òÒAJ AÂ;AþÔ4AL7 A+‡æ@î|«@ÙÎß@Zd¯@…ï@/ÝÜ@}?@…ëñ?V¾¿ÍÌ\ÀÏ÷sÀºI$À\½ff¦>×£€@ºI¤@+A¤pA®GQAÓMtA ˜A‰A A…ë™AÁÊwAßOeA¼t)AVA¶ó•@#Û@¬œ¿œÄhÀôýÔÀ\–À}?ÍÀ®gÀ^ºÀ‹l·¿{À^ºÅÀ9´¸À óÀ‹l»ÀÙÆÀL7aÀ¬¼¿yéö?ƒÀš@ZÐ@/ÝA AAq=RAHájA7‰?AbA´Èò@ @‹lÏ@b¸@–CK@R¸Ž??5Þ?ü©±>¬BÀã¥+Àu“è¿…Û?ö(L@d;¿@¶ó©@1AVŠBË!ŠBJÌ„B‘m‚BƒÀ€Bw>rB/kBßÏuBÙBÍL{Bð§}B7 {B7‰ƒBXyB-²…BXyƒB/Ý{B“tBƒÀxB¤ðtB)\vBßO‚Búþ„BÇ‹‹Bž¯ŽBq½”Béf”Bƒ@”B…+›B)ÜšB5Þ”B#›BŠBîüƒB×#…B B馄BP͈B¨ŒBo“BTã˜BT£™B)\žBm§œB šŸBÑ¢ŸB+GB˜.BW–BE™Bô=˜BÍÌ›BƒšBßO”B)Ü•BÛy”B¼´”Bº‰šB-™Bö(ŸB¼tžBõ–Bî<“BÓMŽB´HŽBj¼ŒB ‹BÅB“X”BþT–BZdšBN"žBìÑžB!0žB1È–B Z•B1ˆŽB‘­‹B‹l†B{…B ×B%Æ‚BªñƒBåŠB}?ŽB^ú“BDK›BÉ6žB›BÑ"›Bì‘¢BÓM¡B ›BšžBRx™BÁ›Böè˜Bë™B«–BD‹¢Bsh£B@£B–¦B ‚¢Bžo¨Bh‘©Bãe¢Bª1 B W¡BåP¢BP £B´ˆžB{”ŸB“˜˜Bݤ˜BÉv B/ B²Ý¤Büé¢BÏ7¢B‘íšB^º™BRø•Bò’B€ŒB•‡Bš™…B+€B?5‚B²Ý‡B˜îŠBªBÛy’Bþ”Bô=”BØŽBœ„B-²ŒB€…B‹l~BÑ"}B\mBÁJjB²dBÚaByihB?5cBßÏoB×£qB×#nBƒ`B+bB9´mBìÑmBJŒzBÍL|B€zB¢EBÚ|BÕ‚Bœ‰BÁ ŽB–C’BY˜B…«™B˜. BXŸB‡˜B^ú”B1ŽB…kˆBZ$„BìQBsè„B WƒB{Ô‡Búþ„Bªq‹B“ŒBÙ“B‰•BåP”B?õB1ÈBçûˆB#[„BB‡BÏ·ŠBÁÊ„B#Û†Bq=ŽB–ÃŒB–CŽBÃu‹B Bsh’B*•B9´bÁÍÌ,ÁìQÁìQ¸ÀR¸&À1<À¦›,ÀP‡¿VuÀw¾¯ÀÇKÁ˜n$Á?58ÁÙZÁ¤pCÁòÒOÁ ×mÁƒ6Á®5Á'1øÀÍÀsh¡À+‡>À7‰…Àƒ@¿Ãõ?ã¥s@ìQ@@u“@5^º>P׿b˜¿X9dÀ²ÿ¿q=Ú¿•›À‰A¸À Á^º Á×£Á%ÁḬ́Ào3ÀøSC?¸õ?…ë±@¤p±@oA^ºA;ßQAj|A•]Aff*A—A®¯@o@;ߟ¿þÔXÀ•ßÀ= ÁßO9Áo;ÁNbZÁ¼t;Á gÁÏ÷?ÁÏ÷mÁÙÎÁ-ƒÁÁʈÁÙZÁ¶óIÁòÒÁXÁÀÇK£Àã¥ë¿33Ó¿P@ƒ”@®GQ@!°ž@òÒ-@ƒÀŠ¿Õ¿‘í”À˜nÀÙÎç¿‘í\ÀåÐÞÀÈÀ#ÛáÀ}?)ÁHá4Ámç7ÁÛù Áü©ÕÀË¡‰À—ÂÀ²‡À= £ÀçûáÀ1ÀÛù®À{FÀ‹lç¿ßOí?‘íD@‡¹?Ù–@ÇK§@1Amç)A`å\AÕxqAÁÊ“AÙΑA/ÝA;ßoAu“^Að§"Aq=*Açûñ@Há–@ÓMb@²¯>ú~@…³@mçÏ@ AR¸0Aš™aA¼t„AX›A^º¶AB`¾A= ÍA ¿AÝ$ØA•ÍAV×A—ÁA'1¼AÁÊ·AÝ$AP–A‘ívA˜ndA+kAË¡oA¼t–AÝ$¡A®GAö(¯Ash³AÉv«AË¡°AD‹–A–C™A)\‚A¬jAÂ{A°rPA#Û=A•A?5â@øS«@-²½@!°Ž@‰Aè@+‡â@'1AÁÊ1AV`A•gA‘í†A“œA¬¦AìQžAA…ë„AL7cAé&_AB`)A¼t÷@ÓMÆ@ff^@X9°@î|¿@}?%@“$?¶ó @VÎ?þÔè¿…CÀºI¼À¬ÖÀ¦›"ÁshGÁ001,@œÄ ?Tã-@u?)\O@ƒÀÚ?w¾£@w¾Au“A?5¬Ì?®@'1ô@= A–CEA33IAžï‚A‹lAìQ–Aq=¢A5^¤A9´’A˜n|AøSWA-²#A%Õ@…{@'1(?PÀ5^²ÀœÄŒÀÑ"·À˜nZÀÝ$ÒÀ33‡ÀçûÉÀB`Á-þÀh‘ÁÑ"»À+ËÀj¼<À^º‰¾¸@´È¶@¼tß@&AHAázFAƒ^A¦›*AÇKë@X9È@R¸V@Ûù¢@o{@çûù?Tãå¾ ×£<ÓMò¿ºIœÀj¼¬ÀÂ}À7‰¿X94?žïg@ÍÌ@`å¤@çûˆBðç†BƒÀ€Bö(zBÉvtB¬œfB}?aB˜nhBªñuB´ÈqB#ÛxB94vBú>Bö(‚B¢E„BÓ‚BÍL}BåPoBZdrB)\mB+rB ×xBmg|Byé„B‡B‰Bh‘‹BÉ6‹B•’BòRBšŒBãe†BV‚B¶swB°ryB¶ó}BÕ8ƒBôý‰Bj|ŒB…«“BZ—B?µ•BhQ˜Bݤ”B'±”BZdBÁJŽB+ŠB–CƒBªñ}B!°yBßÏ‚Bk†Bî<ƒBÖ‰BÁŠˆB{Ô‹Bœ„‘Báz‘B®Ç—BP šB-2’Bþ”’BÍLŒBDË‹B7ɉB¬Ü‡B'qŒB#[’B”Bê”B ˜BT#˜BÛù•BB…k‹B'1…B+BupBîüpB;_gBoqBƒ@{Bq=„BNb‰B²BbДB¼´˜B¸Þ–B-r–B\žBNbžBþ˜B×#™BÓÍ“B¾–BD‹Bã%’BøB7 BìQœBD›Bð' B ZœBº ¢B¼´¡BÖ™Bá:˜Bô=–BÁŠ–B‘­”B…«BfæBðç†B¬Ü‡BbBËá’Bðç”BÓM“B^º”B¬B)œŽB‰‹BYˆB绂Báz~B yB{”jBÇËkBÓMvBTãwB~B–ÃBü©{B5€BØuBd»qBL·gBX9[BßOOB‰ÁRByiGBœDHB33JB®ÇMB%†TBÍLUB ‚cB%†mBD nB+_BÇKSB+\BÕøTBÙÎ]B/Ý\BR8YBòÒaB«ZB\_B¦›lBÖxB‚BÛ¹†BXyŠB+B×£‹B¨†B!pB{BÁÊmB„eB˜î`B ‚iBeBÝ$nB‹ìqB²~B+‡BœD†B)\ˆBĆB…„Bj‚B?µzBøSrB¨ÆhBÓMtB5^|B¸pBR¸sBô=BÝäB‹,†BuS†BÓ͉BÉ6ŽB;_‘Bš™oÁV7ÁƒÀÁÑ"ÛÀÇKƒÀázÀÏ÷£À®G‘À-²ÅÀòÒõÀ®G-Á¸QÁ¼tKÁôýjÁ‰APÁ-²cÁªñ…ÁxÁL7oÁ°r6ÁD‹Á5^ÆÀö(ŒÀB`™À1œ¿–CË>Ùn@33+@R¸v@B`=@Ë¡…¾‰A ¾¦›4ÀË¡UÀ¶óMÀ°rØÀ ×ÇÀ°rôÀ®ÃÀ¢EªÀq=ê¿oã¿J Ò?;ß—@B`µ@¾Ÿ AÃõA˜n(ANb A-2A+‡dA¬hA!°>A+‡AÁÊAÑ"Ÿ@ºIÜ?•¾¸À¦›°ÀR¸ÁòÒÁ/IÁ…ëCÁ{pÁÇKQÁZpÁ¸ŽÁ9´vÁ sÁD‹6Áu“&Áã¥ßÀ1ÀÃõHÀV>ÙÎ7¿b¸?ÇK·?¸@shÁ?Å °¾bPÀ“$ÀR¸ŽÀ´ÈÆ¿Ñ"{¿åÐÀ®G±Àq=‚À-²ÀbÁ\Á¾ŸÁÉvÚÀ/ݰÀ•[À33‹ÀÕxÙ¿×£P¿°r@À‘í¿Ï÷À¬ @R¸º@X9´@X9 @mçAD‹A¸EA-²QA¾Ÿ…A/‘A¢E­Aff§AV®A)\AƒŒAþÔ`AJ @A“Aî|«@ÙÎw@¬z?Zä?#Û©@¼t@Háþ@´ÈAøSUAÅ …AX›A¶ó´AžïÄAÓMÚAÅ ÏA33äAÑ"ÔAD‹ÉA}?¯A¢E§AÑ"£A¼t„AÙtAåÐ@A¼t/Að§A#A¾Ÿ`AÂiA^ºuA–C‡Aú~œANbšAÕx£AyéAÛùAÙ€AœÄlAð§~AV^AbA–CKAZd!A\ AßOAÝ$â@J A¢Eþ@'1A^º%AyéJA‡]A…sA+’AœÄ›AÃõžAßOAÓMfA}?MA/cA®-A7‰A¢Eº@®?@‘í @œÄ´@Zd@  ?{6@¨Æ @;ß¿¿ ë¿Í̬ÀÁÊÙÀ-²ÁF¶9Á00¦›D=Ý$À^ºI¿eÀ!°¢¿\ À¬Z¾mç;@R¸F@-²Í@-ê@w¾A…MA…ëoAj¼“Ad;A1A¨ÆŒAD‹`A)\mAP=AL77A ×AìQô@+÷@—Ò@ A-²AAff\AX‚A= ‚AÅ “A®G AÉvªA¨ÆÇAw¾ÏAçûèAÑ"ãAyéùAÃõÿAÅ BJ B˜nüA‰AóAd;ÙA…ëÜA\¾AÙαAF¶¢A–C—A—­A%¿A‹lÊAþÔØA®çAö(ÚA¶óáAmçÖA+ÏA¾ŸÆA½A–C±AœÄ¡AœÄ‹AÑ"oA\:Aj¼ A°r&AÙÎ1A}?kAÍÌ`A•A= “Aé&§A= §A¢E±A¾ŸÄA…ÄA/ݾAZd£Aî|ŽAßOgA;ß}AF¶YAÛùDA¼tAA–C+AÁÊSAu“JAÁÊA1 AshAyéò@–C@XI@!°r¾j¼¤¿ ›À}?éÀÙÖÀ5^RÀš™™=ÍÌ$@˜nª@¨Æï@5^î@ÁÊé@ÍÌd@#Ûù?h‘½¿ ×ÀºI|À¦›¤ÀÙªÀ—¾ÀåÐÂÀ`åÀ;ßGÀ;ß>`åð?'1@¸@q=ú??5Š@/Ýt@ªñÚ@ ×ß@`å@bh@}? @Zd‹@®GI@Zd›@¤p}@ìQˆ?Õx©>î|_À= wÀ–C·À´È6Àoþ/Ý?`å°@—Ê@;ßA¶óAßOIATãWA †A5^œA•A¨ÆuAö(XAçû'A²ÿ@ffŽ@¶óÍ?^ºé¿ìQ ÀÙÁÑ"ËÀƒÁ`åÜÀ/ÝÁ`åÌÀoÁJ JÁö(JÁ×£DÁ¬ÁƒÁq=ºÀyéVÀÅ 0¿œÄ8@V~@d;ó@XAffA¶ó9AçûAd;Ç@mç“@øS£?ã¥3@oƒ>jü¿ÕxYÀNb`ÀºI¸À‹l Á%ùÀh‘Á^ºÀœÄhÀî|¿¾ö(¬¿L7é?åЕBLw“B;ߎBãåŠB#Û‰Bf¦‚B„yBhBÇ‹…BÕx…B^:ŠB“ŠB;ŸŽBÅ`B-rB˜î‹BÛ¹†B}?‚BÕ‚B9´‚BÇ‹ƒBXˆB=ʉBËáB^úBéf—Bú¾•B¢Å“BÓ šBü)˜Bo—B1ÈB.BL7†Bw¾‡B¢Å‡B5‹Bsè’BÛ9—BÓœB®žBfæœBö¨žBòR™B›BÍL•Bj¼•BbÐB¨ÆŒBÃ…B+Ç€B…B,‹Bmg‡B¼´B,‘BVN•B‘mœBöèBD ¥B!0¤Bî|Bw~œBåP˜BšB^ú˜Bé&™BƒžBf¦£Bð§¤Bê§Bq}§B?õ¥BJL¢BÑ"›B!ð•BÚB‰ŠBn‚B‚„BÃu~Bî<ƒBw~ˆBZ$ŽBk•Bï—Bd»žB×#¢B¤ð¡BoÒŸBẦB%F©BÇ ¥Bsh§Bd;¢B?µ¤BòR B¤0ŸBZdžBJŒ©BÏ7ªB¼ô©B`eªB;_§Báz­Bî|¬B¬¤B˜£BþÔ¡B1È¡BœÄ B?õ™B—™B–C’Báz“B ךB—œB®G B…kB¾ßžBƒÀ™BÑâ˜B¾—B¼´’B`¥ŽBËá‰B`å†B\OBßOB%††Bžo‡BçûŠB WŽB…‰B9ôŠBR8„BHáƒB ‚zBF6oB-eBßÏeBÁJ\BR¸]B ‚dBo’eB rBhvB®BÇ †B‹l‚BžïuBD tB-2uB¶slBÁJtB×£pBB`oB;_tB‡rB/]zBåƒBL7ˆBÀBßÏ“B)Ü–B¾_œB¸Þ›B®‡–B!ðB5Þ‹Bsh„B˜€BÙNzB‘­BZäB¶³ƒB7 ƒB9ôˆB¾‹B…k‘B˜®’Bݤ‘BB“BʼnB`%‡Büi‚Bj¼ˆB¶3Bs¨ˆBöèŠBTc’Bœ“BòÒ•BuÓ”Büé˜BX9›B¨ÆBÑ"Á?5êÀF¶Àsh!À/ݤ>‡Y?ö(¿ôý”¾š™aÀ¸­ÀffÁb2ÁÁÊ-Áff\Á9´NÁÛù~ÁøSŽÁåÐlÁV^ÁÉv"Á{Á-¢ÀÝ$ÀX9ô¿ÍÌÜ?‹lw@øSß@¾Ÿª@²Ë@m@ƒ@½Ö¾XaÀÂUÀé&aÀ#ÛéÀßOÁçûÁÕxÁÇKçÀÉv†ÀÅ  ¿ @¦›¤@ú~Ú@´ÈA•#AXMAJ "Ad;'A;ß1A`åRAš™5A9´Au“ä@Há†@?5®?#ÛY?ö(,ÀX9\ÀÕxåÀ¦›ÁTã7Á/ÝÁÅ LÁL73Áö(ZÁHá|Áú~RÁßOAÁš™ ÁÑ"ïÀ“tÀã¥Ë¿#ÛÉ¿¦›D?ú~*¿¾Ÿz?{¾?Õxù?ªñ’?P7?{Þ¿ ×C¿yéö¿oÃ?ƒ8@¨ÆË>P_À#Û1ÀV­¿ ›À¾ŸâÀÓM¦À-²=ÀoÓ¿sh±?h‘ ?ú~b@¸u@ÍÌ @ð§‚@‘íœ?j¼\@;ß“@˜nA¤p AyéA…=A#ÛKA“…A+‹A/ݨA+‡²AÃõÐATãÌAòÒÍAVµAZd©A¦›ŽA}?qAÇKCAš™AÏ÷ë@#Ûy@;߃@Ë¡ù@œÄè@ƒÀ0Aî|[A‡A¨ÆŸA¼t·A¤pÎA¤pàAX9ìAáAÇKïA\âAö(ÝAåÐÅA)\²AZd¬AþÔAh‘†AÇKoA5^DAÍÌ\A®aAü©AJ lAmç„A¬¡A‡ A+¯A33·A–C¡AœÄ©AÕx›AP–A“¢AåЕA‡Aú~ˆA°rjA%gA oAÅ @A¤pgA‹lOAyé^A1bA…ëƒA+‡AX9—Ash°AZ½AX9¼A-AL7›Aw¾‚AHá„AZZA1ü©ñ?Há*@×£P¿ÍÌì¿òÒ©À?5öÀÑ"ïÀHá ÁºIÁ Á9´ÁZ°Àé&ÍÀ'1@À/ÝÀX™¿P¾¾Ÿú¿œÄ€?ìQ˜?‡…@²@`å0@1 @¼t“>ö(ü?š™?j¼@çû!@¬Z¾^º¹¿33À¶óµÀ®À33KÀ¬Ú¾ßO%@q=Â@çûÝ@"Aö(AþÔFA®?A¾ŸdAé&‰AV‰Aff`Að§ZA.AÛùê@‰Ax@Tãµ?ºIÀ‰A¬ÀÛù ÁƒÀÁ‡/ÁshÁÍÌ<Á{ ÁÁÊCÁ¤pyÁ+uÁ/sÁÁÊIÁD‹*Áî|ãÀ¶ó}Àö(ÀHáº?\@Ùί@R¸A;ßï@ ×AòÒ½@–C;@åÐ’?33À¿ºI¼¿%iÀX±ÀÙÂÀ×£ôÀÇK1Á7‰'Á!°"Á ××ÀÚÀhÀPÀÀ‡–‰B×#‰BVΆBòRƒBuS‚BÙÎuB!0rB‡–zB¸ž‚BR8€BJ̃B¸„B®ÇŠBV‰B;ߌB…+‹BøÓ„B¦Û€B+€B94€B•€B¤°†B×ãˆB=ŠŽB–‘Bb–B–BoÒ–BoÒB–CœB¢˜B?µ’BX¹B;Ÿ‰B鿉BÙΊB²ŽBÑ¢“BP˜B¶óŸB%£B²]ŸB‘-£B‡–žB/Ý BìÑœBJÌ›B¦[™B«“BJÌŒBRøŠB…ëBFv”B?5‘Bƒ•B¦–B ‚˜B;ßžB{TžBßϤB ¤BªqBç;›Bº‰•B×c”B)\BÍŒBB`–BɶB5žB˜®¡B²Ý¡BÇK£B'±£B™œBd»˜BÛ¹’B}?ŽB-²†B9t‡BBU…BC‰BX¹ŽB%F”B š˜B–ŸBšÙ¢By)ŸBìBø¤BÁJ¥B\ŸB‹l¡BøBVNBô}˜B™—B Ú”BçûŸBÃu B`¥ B9´¤BòR¤BÄ«Bƒ«Báz¥Bü©¢B%Æ¡BêŸBò’ Byi™Bdû˜BÃ’BË¡’BþšB¾_›B´ÈžBç;Bd»ŸBüé™B¸^™Bü)–BuS’BÝdŒB/݇BbÐ…B¢Å}B!0BBo’‰BƒÀŒB+B«‹BžïB˜n‡Bß…BºI€BºÉrBq½gB{”kB°òcBhBkBo’iBúþrB%vB{”‚B5^ˆBÖˆB^zB¤ðzBDB¶ówBö¨~BêwBÅ sBázqBF6lB!0rB™€BÓ…BšYŒB1‘BU“BZä˜Bj<•B‘-ŽB¤°ŠB?u…BoR€Bo’zBD‹vBü)BL·€B×…BˆBNâBm'ŽBÇË“BòR•Bmç“B¬ÜB9ôB\O‰Bš„B²~B¬Ü„BázˆB\‚BïƒBÑb‹B ‹Bá:ŽB…ëŒB ‘Bj¼“Bƒ@—B×£¸À-zÀ#Ûy¿åТ?J r@¼t—@+‡F@q=‚@F¶³?‹lç¾ÉvvÀ7‰¹À;ßÛÀçûÁî|ûÀ¼t!Á—>Áð§Á= Á/¥ÀÃõ8ÀÕxi¿®÷?ßO?w¾—@ÃõÌ@q=A‰AAî| AVÒ@`@•k@—î>—N?X9?‡9ÀF¶À×£°À‘íÐÀ\¾ÀÕx)À ×#¼ö(<@¤pµ@åÐA¤p9A MA¾ŸxAÓMZAB`eA= }Aú~Aƒ|AªñJAX'AL7é@š™i@mç#@R¸Ž¿= ÀƒÀ¦ÀNbÀshíÀ'1ÔÀÂÁÅ ÁF¶=Á^ºMÁþÔ6Áj&Á¨ÆãÀÝ$¾Àd;'ÀÕxi>'1Ø?Pw@²@ü©¥@®G­@Ñ"×@HáÚ@°@Ë¡ @ÇKo@Ï÷Ó?R¸†@Nb”@²@d;¿®‡¾B`å½ð§fÀ‘í˜ÀázlÀTãE¿o¾˜n2@…û?ÍÌ”@ÇKÓ@¦›t@åк@çûq@\¢@7‰±@/ÝAö(2A5^2A¶óoAáz|AºI—A×£Aj¼»AìQÌAffìAžïæA^ºäA¶óÊAXÀAü©¥A5^“A\nA{>Aff$AX9ô@¼t÷@¬6A CA¬zAçûˆAÉv£AøS½A°rÖA ×ðA–CBºÉBX9ÿA/] BZäB¶óþA)\ëA‘íãA…ëÞA ×ÁA‘í³AøSAªñŽA AºIˆA¬œA¨Æ£A¢E­A= ÈA= ÔAR¸ÐAJ ÛAjÄAÍA¨Æ¼AË¡ºA{ÀAøS´AÛù©A¬œA¢EƒATãyA×£‡A¬rAq=’A®G‰A…™A˜n‘A‰A£A}?®A²¹AX9ÍAbÔAX9ÔAßO·AÑ"¥AyéAmçžAÃõ†AP{AœÄRAHá(AL7?A/WA33!A¦›AòÒAD‹ A²Ç@Ï÷§@çûÙ?-²=?X)Àj¼¬À001,ÀR¸vÀ‹lÀ˜nrÀNbp¿j¼Ô¿Å à?/‘@•s@þÔØ@yéÞ@q="AÓMBAî|iAj¼ŠA–C£Ash™A‹l—A¾ŸrA—rAPAAü©EAZ"AJ ú@žïA´ÈÖ@!°AjBAÙVAßO}A“|Amç”AshŸA´AåÐÑA¦›ÓA˜nïA´ÈâATãýA#ÛöA!0B¬óA‰AõAB`ðAú~ÓAî|ÑA—³A-²®A5^žA7‰Aé&¬A\ÀAð§ÊA`åÚA/åA5^ÜA áAshÏA‰AÐAyé¾APªAV¦A`åA¬€AR¸PA…ë%AL7Ý@õ@%ý@}?;AƒÀLA²AÉv‡AÃõ AË¡¢Ad;¶A¿A1ÑAøSÑAòÒ²A×£ŸAyé„A‹l„AoaAð§BAff6AZAoCA¢E.AË¡å@d;Û@ÃõAßOµ@—@´È¦?)\ß¿ ×#Àö(ÄÀ‰A Á/Á‘í¬ÀÅ ð¿Ë¡E?\†@ÛùÎ@®GÉ@d;Ó@ÙÎ?@î|ÿ?®GῬTÀyé~ÀªñÎÀd;³À´ÈÊÀÓMæÀš™yÀ%YÀÙÎ=V­?‘í¼?é&9@%‘?Év†@5^b@+‡Ú@‹l»@P§@ÓMb@ázÔ?mç3@¨Æ@ôý@Ï÷‹@shq?ìQ¸½9´8ÀÁÊIÀÃõpÀsh À ×£>ªñò?Í̸@w¾Ó@+%A`åAÉvFAÃõNAÏ÷oAôý‘A AL7oAX[Ad;3AF¶÷@’@ð§æ?¤pí¿‹l§À²Á¾Ÿ¾À®GñÀJ ÎÀ/ÝÁ7‰íÀ—ÁÃõFÁÝ$0Áu“FÁìQÁú~ÁNbÈÀÛùnÀd;¿®G!@‰Ah@^ºå@ÇKAF¶AÙ.AòÒý@b€@!°Z@ázÔ>= ç?X¹>-² À)\‡ÀòÒ}ÀD‹ÐÀ¾ŸÁ Áªñ ÁÁÊ¥À7‰…À/¿ü©)ÀìQ8¿D—BÃu“Bw¾ŒB5ÞˆBÛ9…Bu“{B®ÇwBÓM~Bå…B¢„Bš‰Bfæ‡By)ŽBBÉöB ÂB7 ‰B)ƒB‡VƒB‚BßB?u†B‹lˆB\ŽB²ŽBú~”Bsè’B¤p”B´ˆ›BÅ šB%F–BE‘BŽBˆB¢ÅŠB1ŒBVNB¬”B+G—B@žBø“ BTcŸBNb¡B×#B˜®Bžï—B…k—B-²‘BBœ‡BÁÊ„B™†Bƒ€B˜nŒB˜®’B¾_’B首Bd»œB מB'ñ¤Bmç¦BÅ ŸB¬ŸB‘­˜Bô=–B'±•Bãe”B.™BN¢ŸBÇK¡BÉö¢BÇ ¦Bç{¤BÄ¢B¬›Bå—BuÓB ÚŠBÏ·‚B{”ƒBF¶{B ‚B–CˆBøÓŒBÑâ’Bœ„—B žB‹¬¢BáúŸBɶžB^z¦B¨Bš™£B%Æ¥B㥟BÍL¡BÝdœBX¹›B¬Ü—Bƒ£BÙÎ¥B¶3¤B–¨BÕ¤BšªB´ˆ¨B!ð B7I B3sBç;œBÙžBɶ–B¦Û•B‚B«‘BbИBshšBuÓ›BöhšBR¸›Bº –B‰•Bô}’B ׎BJLŠB¾Ÿ…B‰ƒBPwBR¸yB¼4‚B¢…‚BÇK‡BË!ˆB¾„BÙN‡BL7‚BÑ¢}B–ÃrBgB¸žYBY\BîüRBNbTBÖYB'±]B“˜hByikByBVŽ‚B®‚BßOtB…kjB°òmB²eBÚlB{”gBªqeB!°gB×£fB­nByizBÁƒBmçŠBî¼Báz“BhšBT#—BL7‘Bq=‹B×£†BVB= vB)\mBúþvB‰AuBݤzB5^}Byé„B+LJB¶³BíBZŽB‰AŒBþ‹BœD†BwþB‘m{BL÷‚B5ž‡B˜„B\…B¬‹Bö(BÝäBÉv‘BËa•B B™B¸^B‘íüÀ‡À€ÀB`•¿Õx)?¸…½\â¿ìQ8½Zdû¿1„ÀTãÝÀZdÁžïÁ5^>Á%!Á;ÁœÄdÁÂ?Á®G9Á®GýÀ^º½ÀåÐJÀ9´H¾Õxi=ÓMz@33³@?5A'1ô@9´ü@š™¡@1ì?ÓM¢?bÀ×£0ÀZd3À¦›ÌÀ+‡ÎÀh‘ÁœÄÁ+‡êÀ9´xÀq=*¿}?=@øS»@L7é@\A®G#A¨ÆMAHá(A5^4Aü©EA®GkA…YA®G%A°rAºIœ@Âå?mç‹?òÒ-ÀÏ÷KÀ;ß»ÀžïãÀ}?Á‰A Áo-ÁÁÍÌÁ—FÁÓM Á®-Áî|ïÀ¶óÑÀyé6Àu¿…둾ףð?)\?ÁÊñ?×£@ö($@!°Ò?®ç?Zd»¾-²½?yé¦>ÂU@òÒ•@\"@ìQX¿ü©±¾sh‘>Zd;ÀÍ̘Àq=JÀòÒ-¿#Û™?+@)\W@°r´@u“ø@Tãµ@Tãá@)\§@¬¾@7‰Ý@ð§*A•3A^º#AÂWAÍÌlAìQ‘AbœA¸³A•ÁA¤pÛAßOÙAPàAVÄA㥷AÅ ›AVˆA;ßWAÝ$$ATã Aj¼¸@#ÛÅ@‰AAôýA…IA¬hAú~AÓM¥A{¾AÙÖAázÜAÁÊóA`åâA¸øA¾ŸãAVáAçûÈA㥶A°r±A`å”Aš™AZduAPMAÙÎaAþÔZA¤pyA´ÈzAö(€AHá›AÁʪA®AZ¹A'1¦AX9°AòÒ A+¡Aw¾§AÍ̦AÝ$ŸA/Ý“A°r|A‘ínA`å€AÁÊ]A¸€AshgAî|yAö(rAB`‡A®ŽAú~–AºI³AœÄ·AÕx½Aš™¢AL7œA/ÝAªñ“A®GmAÙÎKAoA¨Æã@®GAR¸.A}?ý@/ݤ@Å è@  Aƒœ@`å„@‡Ù>ffF?žïÀ\ŽÀ00Tã¥ÀÅ èÀ+›À}?ÝÀ^º™À…³ÀÉvî¿P—>!°?—^@-R@ü©±@ßOA #AË¡[Ab‡A×£rA¾ŸrA×£4Aî|1AÙAshA?5Æ@çû‰@V†@…S@yé¢@V AbA•OAXKA9´pA;߃APŠAj¼¨AÝ$­A#ÛÆA®½AÉvØAÛù×Aq=ãAu“ÚAºIáAÁÊÞAøSÇAVÀAff¤Aªñ‘A ׇAÃõnA33AshœAb©Aáz¸AÉvÈAƒ½AbÄAÓM´AÏ÷³A¬¥A™AX‰AÑ"cAÕx?A¬AVÎ@d;O@¼t‹@Zœ@o AºIAö(DAXeAmç‰Aé&ˆAB`œAX¤Aq=¯APªAVAZxA ×GAP9AœÄ$AË¡ A`åA¸ñ@ƒÀ$A‹lA}?¥@7‰‘@ôý´@ÉvV@P—>ƒÀJ>= GÀ{žÀÓM Á7‰#ÁþÔ.Á²Áö(À¼tÓ¿ƒÀª?¸-@¸E@ú~B@q=J¿!° À`å´À•ÇÀ×£äÀú~Á¢EîÀff Áu“ÁßOÍÀð§ÎÀ5^RÀ•;À5^z¿ÍÌL½d;Ï¿9´˜?V?Ž@F¶[@1@ð§–?¤p¿“Ô?Zd;>7‰á?@1¬¼žï§½¶óMÀ'1 ÀœÄ€ÀìQÀÝ$&¿Ûùî?㥣@Há–@Ï÷AÙÎA!°,Aö(&A-²MAã¥uA= ‰Aü©_A¸KAö(A˜nÊ@œÄP@—®>w¾?À= ¿ÀçûÁ+Á:ÁþÔ Á}?=Áu“$Á´ÈHÁ%yÁÙpÁð§bÁÇK=ÁÙ>Ád; ÁßOµÀJ :À-²?)\@Ùº@-²A7‰õ@}?Aú~š@¦›”?‹l?-:À𧆿o+ÀË¡¡À®çÀ!°ÒÀÃõ Áã¥5Á–C+ÁD‹,ÁÁÊåÀ®GñÀ{‚À¸•Àoã¿bŒB'±‰Bá:„B¬BR8wB­hB94iBF¶oB¶s|Bö¨vB–ƒ€ByiB%…BX9ƒB1…B`¥‚B-²zBÅ rB5^sB²sBøÓrBBà~B™‚By)‰B׉BB`B%FŽB ×B{Ô”BBà’BL·Bw>ŠBã%‡B}¿Bh€B.BÓÍBËá‡Bš‰B‘BÅ –B‰A•BÛ¹˜Bò–Bu—B”B}?’B•ŽBhˆBõBÑ¢~BZ¤…BìщBFö†BW‹Bîü‹B‚BN"–B#›–BáúœBúþšB'1”B‚“BéæB-rŽB®‡ŒB‡VBð§‘B€–B«—B×£˜BÇ œBšYB ‚›B”B%F‘B¤pŠBìQ…B|B‘m~B#ÛrB´HxB鿀BJ̇B}ÿBÖ‘Bb˜B…k›B ‚šBJÌ™BXy¡B=ÊŸBÏ÷šBãåB ˜Bþ˜BX“BåP•B¸žB-2ŸB BœB1žB)œ B“XB¬¤B,¡BHá™B+™B'q•B¶s“B+“B˜.ŒBŠB쑃Bï‚BßωBÁ ŒBDBázB= ’BÓÍŒB“˜ŽB‹,‹BÙŽˆB33ƒBBu“{BÙNmBF6jBÍLsBF6wBzB`%€B¬vBÏ÷xBP jB„eBªñVB‰AKB®GAB“HB´H@BƒEB…ëLB¨ÆKBF6WB+^BÉvlB®GwBªqoB#ÛbBNâ[Bš_Bu“VB-2]BáúVB¦›TB¶sUBw¾SBøSYBš™fB“qBƒ@~Búþ„B ‰BoÒŽB-2‹Bo†BBàBÇËyBF6lBøSeB´H_BXiBR¸dBD mB…kpBÂ{BË!~Bª†BˆB¾Ÿ…B¢…„BÏwB«|BšuBÓMiBJ uB¬}Bú~tBsèyBç;„By©…BšˆB9´ŠBZ$Bì’B33”B= óÀáz˜À®GQÀƒ`¿Å à?j¼4?ÍÌL>-²-@Ñ"›>= Ç¿ºIŒÀ9´ìÀ¢EÁ…1Á5^$Áôý:ÁV\Á¦›(Á–C%ÁázÐÀÂÀ˜n ÀR¸?Tã?J Š@¦›Ø@- A¬A®GAázÈ@X9$@'1Ø?î|¿¿°rh¿?5ž¿u“¤ÀJ ÊÀ'1Á-²ÁòÒ Á'1ÄÀ¾Ÿ"ÀÇK?ªñ‚@9´Ð@—"A…)A ×QA5^@A…ëQA•yAøS‡AìQbA-Aj¼A+‡’@þÔ¸?+‡6?'1PÀþÔpÀƒÀêÀD‹ìÀð§Á}?Á!°(Á×£Á7‰!Á‘íNÁÂ#Ááz*Á‹lßÀé&ÝÀ+‡vÀÛùÞ¿…ë1¿ÁÊñ?Ùη>o3@¼tƒ@sh‘@D‹¨@F¶[@6?{þ?B`å>Nbh@ü©©@w¾?@‘í¼¾ö(œ?¸…?åÐ"Àw¾“À +À¤pý¾¬Ú?Ë¡}@‹l_@®G½@åÐò@–C»@q=Ú@ @‹l×@ý@–C7Aj¼Ý$ÀZ˜À00b¨?/Ý¿L7)?¸ ÀôýÔ¼Ý$†¿b@°r¸@^º½@yéAR¸A×£JA sAžïŽA9´§AÏ÷ÃA »A#ÛµA\˜AçûŒAš™eA¼tWAoA A¼tç@î|§@}?Í@u“A¨Æ'A¼t]Ah‘kAmçŠA®›A—²A¾ŸÐAÃõàAùATãìAòÒBh‘ÿAq=þAZdéAd;ÜAyéÔAÁÊ´AÁʶA‘í›A°r†A¼t‰A5^ƒA¦›–AìQšAJ  A·A´ÈÌA…ÅATãÓA°r½AR¸ÉAHáºA—·AòÒ´A+‡¦A?5“A33€A¶óKAÅ A= -A¬8A¢EjA‘íbAé&‹A‰AA²žAé&AÝ$£A‹l¸Aü©¾Aj¼¾Að§ AB`‘AázrA×£|Aü©QAË¡;AåÐ$AþÔô@•+Aî|3A¬è@q=¶@Háæ@¤pÑ@= /@ú~ú?®ç¿%iÀR¸âÀw¾!Á…ëÁ`åÌÀq=‚Àáz”¿øSã?ÓMB@Ûù@9´@òÒ-¿ I¬ÀªñòÀTã Á°r:Áé&/Á‹lCÁ‹lWÁ+‡Áh‘ Á!°¢ÀL7AÀ®÷¿…ë=ƒ€¿Ñ"@= ?@-Â@yé¢@V@D‹ @¢E¶½ºI ?9´ø¿!°²¿‹lÇ¿X9¨À}?ÑÀ‡ýÀºIüÀ9´ÔÀB`mÀœÄà¿X9´¼Âm@¬€@ƒÀî@}?ù@•/A!°4Ažï]A…uA¤pAçûQAôý,AƒÀA`å”@ƒ?ö(œ¿X™ÀyéòÀ%7ÁL7)Á-²MÁu“>Á-NÁ`å(Á‘í@Á¬|Á®GgÁmçeÁË¡-ÁÓM:ÁòÒÁ-¶À+‡‚Àü©¿ K¿ö( @®G‰@“˜@PÓ@9´ˆ@œÄ ?ü©q>¼tÀ9´ˆ>ßO¾‡)ÀÕx±ÀZd—Àu“¬À¢E ÁË¡Á  Á)\¿À?5ŽÀX¹¿¬ü¿×£0?Ñb€Bj¼}BÝ$zBqBôýkBØ\B WZBáú]B‹lkB-²fBTãpBsB²|BP~B)œ‚B¤p€BÃõsBsèkByilB¤ðhB/ÝlBêwBD‹xBw>ƒB쑃BˆBÏ7‡BbЉB‡‘B%BõŠBÛ9†BÙ΂Bq½{B€B˜.‚BU†Bì‹BB“–B;_™B˜.—B{TšB\Ï–BÑb–Büé’Bá:B`¥‹B5…B)Ü{BåPuBj¼BËáˆB¤ð†B¬\‹BŠBíBÍŒ’B Z”B¼´™B¤p™B+’B®‡B‡–‰BœD‹Bh‘ˆBãå†Bô}‹BB`å“Bí“Bw~˜Bw~˜B)\—B'±BœŒB?õ†B=JBF¶rB!°rBTãeB33kBš™wBVBN"‡B#›ŒBo’Bš™–B㥓B)œ’B–™B´HšBA“B ”BF¶B‘BuSŒB•‹B¸‡B•B¦Û•B˜”Bš™—B)—B–CžBãåBì‘–BÁ ’B9ô‘By)ŽBÕŽBuÓ‡BVΈB ƒBéfƒB˜ŠB+ÇŒB1ÈBZdBT£B…«‰B3³‰B‡†B9ô‚B¶s|B/]vB²pB bB!0bB`elBÏ÷pB+‡wBF6~B¢EvBB`sBNbjBfæ^Bu“WB`åJB+@B5^CB¶s7‰Ñ¿h‘=À´È¶À/ Á ×ûÀ…)ÁÙÁmçÁü©9ÁD‹Áã¥Á‹l³ÀÉv’À¬À°r¿ö(\¿‹l7@)\£@5^ AA7‰Abà@ƒÀ†@+@L7É?¶ó?–?mçë¿9´¿q=Àsh1ÀÂÅ¿Nbð?sh‰@çûí@7‰+A7‰'AœÄ^AÛùVAš™uA{\AË¡eAºI…A)\’AP‡AË¡eA5^LA`åA%Í@u“¤@ÙÎ?9´H¾´È~À-²ÀòÒñÀôýÜÀÙÁœÄüÀË¡ÁL7KÁF¶Á+Á;ß·À“¨À˜n¿ÓMÂ?ƒÀ?×£œ@L7q@¶óÅ@mç×@åо@w¾Ç@ÃõŒ@ö(@¼tC@®G¡?/Ýl@?5~@yéN@Ï÷“¾mç;¿…+¿u“€À5^¶ÀÙΟÀ¶ó Àôý$À+=HáÚ¿Z¿¬ú?Ãõ(?Å p@j¼ô?¶ó@yé–@×£AÂA-AßOGATã?AjAX9zAøSAÛù¤AZd¿Açû¹Aƒ¿Aáz¤AB`¥A°rŒA!°zA¼tEAË¡AßOý@33›@VÉ@¶óA¶óAìQHA•cA¢EAôý¡AÅ ½A¶ó×A…ÑAmçèA= ÚAú~ôA1æAoæA¾ŸÍAoµA´È³AbAV—AVŽA‰A|AÙ‡A;ßA33¨A9´œAXœA¾Ÿ´A+‡½A•¹A…ë¿AR¸«Aq=¬AÓMžAL7™A‘í–ANbŒA#Û‡AVgAƒÀÅ À?;ßÀ…À9´¼ÀìQüÀ00é&Á?shÑ>¶ó­?+¾çû©?sh)@˜nÊ@ ë@7‰Ý@¶ó!A/Ý(AZdWAÕxmAºIA‡Aƒ¸ATã´A/½AR¸¡AZd—Aw¾}A¤pSA^ºAJ â@R¸¶@¤p5@B`}@ÙÎï@u“Ø@¼t!Ad;EAu“|AÕx“Ayé®A1ÈA¢EÏA‡åAÝ$ÑAÍÌâAÑ"ÎAÂÑA•ÃA…ëºAV¸A'1›AHášAœÄ~A‹loAÙÎqAòÒsA`åŽA¼t“A¢E›Aáz·A¼A¼tµAþÔ·Aôý AìQŸAÛù‹Açû}A‰AŒA‘í|AázpAB`QAmç-Au“A²AÂA¬0Að§AœÄ8AÂ?AmçaA¾Ÿ|A1ŽAD‹¦Aš™µA¶óÁA1¦AÑ"¤A¦›ˆAåÐzA‹lAAZ$A û@B`¥@“à@?5ú@)\ƒ@)\@X™@+‡‚@ÁÊ¡>+½¬TÀ?5–À/Á¬Á˜nHÁoÁ¦›äÀé&qÀ!°Â¿òÒ¿h‘À ׃¿q=’ÀÅ ÈÀw¾ÁZ2ÁìQ&Á%AÁÉv*Á²?ÁjrÁú~VÁƒÀRÁš™Á= ïÀ®G™ÀF¶ÀV-À…+?¨Æ @®G©@¬¦@¤p¥@ü©9@´Èv¾u“˜>—À´È¶¾L7I¿Â}À+¯ÀË¡ÕÀÑ"ËÀ‘í˜ÀÙŽ¿¼tÃ?Tã‘@¬ü@= A;ß=Aj¼0A9´fAPAƒÀtAF¶}AßOŠAçûoA/ÝLA¢E(A×£Ô@B`‰@Ãõ8@1L¿ÙÎ/À9´ÈÀ= ßÀÃõÁVÁ5^DÁ–C3ÁPcÁ“‚ÁœÄNÁÍÌTÁ¸ÁƒÀþÀX‘À®Gá¿ìQˆ¿‡@Ý$æ?‹l‡@¦›@ôý@‡‰@-Ò? O¿Õxi¿ƒÀJÀ•C¾ÍÌ,?o=˜njÀd;oÀ‹l/ÀÑ"¿À-²ùÀü©åÀd;ÇÀ{FÀÑ"›¿ZÀoƒ=þ””BÝäŒB‰BÕ8‚BX¹BÇKvBÃõrBTãzBÅàƒBB …B‘­ŒBáúB)œ–B‹ì™BVŽŸBoRŸBF¶™BNb•Bîü‘B`åBú>‹BPMŽB™ŒB94’B-rB š“BÇ ‘B¶³“BðgšBUBUœBY™BXù—BL7”B!ð˜BÏwœB˜î BƒÀ¦B}«B°BÁʲBfæ­BC®B–çBø¦B´ˆžBX¹›Bm'•Bì‘B/ŠBB`‰B¾ŽB5^”BZ”BP›B‰AB7‰£BVާB¶sªBí¯BÅ`²B«BåP«B×ã£BFv¡B‰AœBÏ÷˜BåŸB{¤Bôý§B°²§Bª1­B馫BÑ¢ªB¶ó£B²ÝŸB–CBƒ˜Bd{‘BÃB¬œˆBo’‰By)BÛy‘B€—B–ØB+‡Bï£BÉ6£BÍŒ B¨Æ¦B}©B —£B%¤B®‡œBDK™BÓ’B…«‘ByéŠBJŒ—B×™BVšB‡ÖBVBƒ@¤B)œ¡B馚B¾ß—B¾“B¤0B)œŠB ƒBƒ{B%†mBTcfBœÄmBHáyBø‚BÕx„BòŠBö¨ˆBÍLŒB#ÛŠBݤŠB‹lˆBÑâ…BÏ÷B‰AwBÝ$pB¯rB¨FrB¨ÆpBj¼vBžoiBö(bBUBÙNOBD @B7‰7B/Ý2BZd;B‘m;B`åBBšNB+‡VBL7dBZälB×#yB¶óB…}Bö(qBÓÍgBã¥cBXBé&ZB-2NB¸OBZIBuGB‹ìFBªñRBb]BÂjB¼tsB‘mB{T„Bݤ|B^:wB9´iB¸eB.YByiWBX9SB¤ð^BÍLaBåÐ`BÅ gB%†tB\}BßO†Bq}ŠBH¡„B¬\ƒBHá€BuS€Bh‘zBázkByénB–C|BÁÊuBw>mBPzBbBÍŒ†Bí‰BÚBmç”BshšBåÐLÁ¼tEÁ1ÁƒÁ+‡¦À\ÆÀÏ÷ÏÀÑ"SÀî|¯Àî|ïÀ;ß Á‰A&Á–CÁu“&Á㥠ÁD‹&Áš™KÁw¾ÁX'Á¶óåÀ\ÚÀš™…À‹l?ÀÃõ0À%?5@HáÎ@ffÆ@-²AÇK×@žïW@bP@¬Ú>q=Ê>ÓM¢?ÍÌÀü©q¿ÇKÀøS¿®'¿Ñ"K@Ûù®@-²Aö(4A`åFA-`AshWAF¶uA®G?AVw¾Ÿ>²G@—–@F¶AºIAü©Ý@VA®G AÉv4AÓM,AßOGAVWAV…A¾Ÿ‚AJ ‘A‹luA´ÈvAR¸`AÂ5A A\®@/݈@shQ?Zd#@ö(¼@š™y@¤pÍ@yéú@ÙÎ=AXgA¼tŠA“šA`å¡Ash«A®GA`å”A^ºA;ß}A¤paAü©=AÙÎGA;ßAZ&AZdAh‘ AÙ"AÃõDA“zA%_AÂCA-²sAÃõlAh‘sAu“rA¶ó7Aq=>A;ß AÏ÷ë@¨ÆAÅ ø@oAÛùê@1¨@{š@w¾W@é&@7‰i@¬<@“„@œÄ˜@•ß@®A×£4A×£rA¾Ÿ‰AƒÀ˜AV€A…‚AXgAÓMTA—Aî|Û@X™@u“¨?^ºi? ¿?‹lg¾ÓMbÀ¶óUÀ\:À`åÈÀ…›À¸ÑÀ“ÄÀ—Á¼tÁ00¶óÀL7iÀshQ¿ffö¿†?¬ê?mç£@•û@ªñ¾@u“Aš™Ý@×£"AÅ .Aú~JAÕxuAÙŠA5^rAÝ$AB`sA‡‚AÕxWALA•'Ad;ã@¤pÕ@33‹@š™Ù@Ý$"AåÐA{FA-NAÕx„A”AþÔ®AªñÂAh‘»Aš™ÇAZd´A%ËA…ëÀANbÈAX9¼AåеA´ÈÀAßO¦A'1ªAøS˜AåÐA¼t—A—›A9´³AF¶²A¨Æ±A¬ÆAš™ÆAú~¸A)\¼AòÒ¡A¾Ÿ˜AJ |APAÍÌ\A`å:A-0Aƒô@B`Ý@‡@…s@ìQ@Ãõ @Ñ"«@)\A¬&A®YA1zAü©’AÉvªAÏ÷¿A¨ÆÈAÅ ­A¬¢Amç„Aq=„AÓMTAZd#A A¾ŸÊ@Pï@‘íÀ@E@b¸?B` @¨ÆK? ×3À•¿ƒÀŠÀÓMžÀ/ÝÁ'1ÁÓM<ÁƒÁ•»ÀÓMrÀ1¬<‘í|>ú~J?Ï÷3@Õ¾V޾+oÀåТÀ+‡’ÀƒÄÀD‹„À!°‚ÀÂÍÀ—VÀj„ÀÓMB¿}?•¿J Â?d;'@ìQ?shq@X@Háú@–CAÙú@yéæ@Z˜@×£È@F¶“@ü©­@®Ç@žï—@ºI @sh @j¼@¦›D@^ºÉ@¬ü@7‰/A1^A?5dAX9ŠAøS†A/Ý—AX9‚AZd‹Aü©¢Aff²Aƒ¦A?5™Aj¼‡AÕxOAh‘)AÃõü@ÙÎ@¦›ô?ð¿-²ý¿!°¦À À‘íôÀÂÍÀ+‡ ÁÙÎ9Áw¾+Áj Á'1ÄÀ-¦À—Þ¿bø?“|@°rø@¬ô@X9(Aôý4AB`+A/3AX9A5^Ê@F¶³@¦› @;߃@°r@@\"@˜nR¿žïg¿!° À= ‹À½ÀJ öÀøS»ÀNbœÀ°r8À^º±Àçû•À‚ƒBÁ „BßO€B= uB33sBåPeBázhB%rBü)}BFv€B“؃Bs¨„BšŒB—Bô½•B1—B‰‘Bwþ‹BN¢ˆB B†BÕø‚BV·Bžo†B-ŠB ׋B ÚŽBBàBm'”BhÑ›B œB7ɘB¬Ü–B¨Æ•BL·‘Bff—B`%™BœD Bì¥Bú¾ªBìѯBZ$³Bîü­B+²B˜n­BɶªB…«¥BẟB/šB+‡“BhQŒB BŽB^:•B`¥›BöhœB“Ø¡Büi B¾ß¤B¨Bú>©BT#­B-2­B–¥B?5¡Bê™BìQ–BB`Bþ”ŒBü)“BÉö—BB —ŸBmç¤Bú¾¥BÓM§B˜®¡BÛ¹ŸBl›BåИB馑B‰B ‚ˆB´H‡BÇKŒB˜®ŽB¬œ’B¬–Bj¼™BÓM BÅàBX¹™BòR Bì¡Bî<›Bj¼™BY”Bd;“BF¶ŒB)\‹By)…B‰“Bð§’Bô=–B#šBT#›BÉv¢B‰¢Bw¾›B ×—Bãå•B#Û‘B%ÆŽBmg‡Bø“…BHá€Bã¥~Büi…Bª1‰By)BRxŒBZ¤BZ$ŒB¾ŸBDˉB ‰B×c…Büé‚B.~BD pB%†mBÃuvB¶óyBê|B“XBð'zBþÔzB®ÇkBã%gBÑ"ZBmgMBBàEB¨FKB+FBw>PBü©WB?5_B)\eBpBHazB…«ƒB`%…BZä~BbrBåPwBD‹kBjiB×#_BJ ZBßOUBL7OBÇKOBB`^B?µfBÛùsB­|B€BÕ¸†B BƒBYyB“pBfBð§]Bd»ZB×£YBu“eB‰ÁiB¸žqB²yB×#„B3³…B B×ã‹B¦ˆB‰„BîÁÑ"iÁ;ߌÁ)\ŸÁžïžÁ—²Á/ݬÁ= ÈÁ;ßÒÁVÉÁË¡¶ÁÇKœÁ¦›ˆÁÙÎcÁ¤p1Á+‡8Á-²õÀ㥧ÀÓM2ÀshaÀ¾ŸbÀË¡ÅÀJ Á#Û'ÁƒZÁü©_ÁR¸lÁÅ ’Áb™Á¬ÁázÁ{‹ÁJ ^Ážï;ÁÏ÷ Á…·À ×{ÀÛùž¿ð§F¾¬@Háú>µ?¼t[@Į́@–CC@u“˜>&À5^¾À/Á/Ý Á‹l[Á/Ý`Á5^†Á‘íÁ˜nŸÁPžÁ‘í©Á“œÁ\²Á+‡¾ÁÇKªÁú~®Á7‰’Ád;Á/ÝhÁ²EÁ}?9Áh‘Á1ÁR¸Áh‘Á{ÁøSÁ¸ Á ×;ÁºI Á?56ÁXÁÍÌàÀ5^ ÁÛùDÁ12Á…#ÁºI^Á sÁffVÁü©7Áú~Á+‡âÀF¶÷Àd;³ÀÓMZÀî|»ÀŠÀÅ ÐÀ7‰µÀÍ̘À˜n‚¿Z$¿X9¾/Ýl@Zdc@/Õ@Ë¡ñ@ìQ.AßOOAºI…Aî|ŠA¾Ÿ‚AÏ÷OA®5AÍÌA-Ê@®/@¼t>Å À)\£ÀåКÀd;¿¿´ÈÀÆ?B`@ìQì@˜n(A¢E`AºI‡A#Û¢AZd£AÙÎAmçŸA×£–AåÐŒA9´dAF¶KA9´LAjA!°AòÒ@Pg@'1€@ƒ0@¶ó@ìQ¤@= ã@$Aƒ@A¸?AbVAƒÀ,AJ DAÅ AÑ"!AÃõ,AX!Ad; AÓMþ@w¾@j4@¬ˆ@ð§6@¤p@ázt@ƒÀÚ@‹l·@;ß×@ÇKÿ@–C AìQÀ‹l«À‘í¤À•ÁñÀžïÿÀw¾=ÁF¶7ÁÕx?Áö(FÁ{(Á7‰ÑÀ5^†ÀHᪿ;ßï?Ý$>@/±@9´¬@7‰Aö(´@ÇK×@q=AòÒAo A˜nš@ÂE@°rh>/ÝÀ7‰YÀú~æÀ¾ŸÁ)\5Á•IÁú~tÁÏ÷gÁþÔ‡Á?5~ÁNb’Á–C¤Á/ŒÁ‰AÁð§bÁshKÁ ×ÁVÎÀžï»À?5VÀ/©À5^*À9´Ø¿Évþ¿ƒpÀáz´ÀshñÀd;ËÀjüÀ^º‰À`åhÀÙ–ÀÏ÷Á;ßÿÀJ ÖÀb(Á‘íHÁö(>Á¸ÁÁÑ"ÓÀ‡ÝÀ‡±Àáz¤À–CÏÀbXÀÀ®G9À%Ñ¿ÇK@òÒ=@ffö?;ß§@°r´@bAR¸&A¾Ÿ\AÃõpA—Aáz•AJ –AÂuAVnAôý.AÕx A9´¬@#Û@ƒ`?ö($À?5ÀVÎ>Âu=NbX@ßO¹@TãAü©EA-xA/—A…¨A7‰¶Aö(±AJ ÀA רA)\¡Ažï‹A¤pqAyétA“@A¬*AHá A1À@ÉvÖ@¢E²@h‘õ@shAš™!AWAš™kAooAZ€Au“VA\^A'18AÂ+A`å´È¶?°rÈ¿= oÀ7‰IÀ9´ÀX9ÀÀj¼°À°rÁ¬ ÁòÒEÁî|eÁ00ÁÊÁôýÁ1ÐÀ¾ŸþÀ;ß³À+‡ÞÀ¤pÀ;ß/¿Ý$F¿ã¥›?-¢? 7@Vµ@-²AX7AåÐZAÁÊ7A`å6A-þ@'1 AB`¡@ Ï@Ãõœ@/u@{–@'1Œ@þÔÐ@ázAd;CA!°^AƒÀPA˜nzA33A‹AÙ©A‹l¡A‹l½AHá¯A'1ÌA…ëÔA+èAq=àAÙåATãçA“ÕAÕAD‹¸A´È«AþÔ•A¦›‹A¾Ÿ¡A¶ó·A•ÂAçûÈAyé×AÕxÄAÙÆA–CºA?5®AòÒ¨AÉv”AåЇA1\A.A ×ë@ @b˜?åÐ:@h‘U@ffÚ@9´A‰ABAÏ÷eA¢E‹AÅ ‡Aq=™A/£A“¬ANb¡A+‡ŠAj¼lA>AF¶AA^ºAjAÇK A%ù@Tã)A…ANbÀ@ƒÀ¶@P»@‰Ap@•>;ßO>¬ÀXyÀh‘õÀX9"Áw¾Áq=ÖÀ‡9À+‡>NbH@%¥@VÑ@/ݼ@q=@ázä?`åÀºI,À#ÛÀo£À'1hÀ¾ŸŽÀP§À!°Â¿¾ŸÚ¿L7É?òÒ @ÇK@%@ìQ¿@%Á?¶ó‰@²w@ªñò?ƒÀj?‡™>ìQ@@²'@ZŒ@ªñŠ@•£?š™9?ƒÀ ÀìQPÀŽÀÛù^À{N¿ü©q?Ùv@ÙÎG@ƒÜ@ã¥ë@u“ A5ATãiAL7†AœÄAé&MA16A Aj¼Ð@ázl@Zd>Ë¡=ÀÏ÷ÏÀjÁd; Áq=Áã¥ÏÀL7 ÁÅ ìÀ–CÁÙÎIÁÛùJÁ+‡FÁòÒ9Áw¾+Á²ÿÀÙšÀ^ºÉ¿ºIÜ?oS@Évâ@¦›&AÕxA¤p5A°rAsh‘@\*@yéf¿òÒM¾¤p À¨Æ‹ÀƒÀ¶Àú~ÆÀ9´ÁX96Áã¥%Áyé*ÁHáêÀ¸ÝÀÑ"{À°r¼Àôý,À¤ðBºIŽBs¨ˆBX¹„Bª€BÑ"tB=ŠpB¨ÆvB¦›B%FBšÙ†BVN†BÙŽŠB¢EŠBÙΊBjüˆB¾†Bo€B-òBshzB{zB–BŃBD‹ŠBºÉ‹B€‘B}¿BÓ BƒÀ•Bƒ€“B‘B¢‹Bç;ˆB‚B¼´B'1‚BÉö„B;ß‹BÍ B•B‰A™Bm§•BÕx—BmBª1’BbPŽBßÏBŒBZd‡Bþ‚B¨F~B²]„BZ†B!ð‚B¤0‡Bš™‰BÍ ŽB¾Ÿ•Bª1—BJ žBƒŸBÉ6˜BÃ5šB-2•Bɶ”BÍL“BÏ7’BV–B;ß›B€žBBžB}¿ŸBš™žBB‰Á•BBßωBJLƒB9´yBßO~B¤ðsBÕø|B=Ê‚B㥇B„ŽBË!’B‘-™B7 B×c›Bu“œBPÍ£B…¥B ןB¡B;ß™B3³œB/˜BF6šBô=–BoRžB3³¢Bo¡Bº ¥B馠Béf¦Bb¥BÅ BɶB‚›B^z›BÓMšB Z”Bðç‘BÑ"‹BÇ ŒB-2“Bw¾”Byé˜B¾Ÿ–BË¡—B¼´‘Bk’BšB1È‹BôýˆBm„Bú~~B“qB\pBÅ |BþÔzB33‚BB „BoBƒÀ~B3³vBú~pBü©fB/][B×£MBš™QBÅ HB¢EJBô}MB9´OB)\[B°rdBªñqBåÐxB WpBB`aBÓÍ[Byi]BázTBP aB]BX9\B'1bBmgbBázhB¦›vB^úBÁJ†B“˜ŒB+GBþ”•B`å”B^úB%†‰B=ʃBÁJyB špB‰ÁiBL·qBåÐkBö(vBX9uB¸ž}B-r€B-ò†Bö¨ŠB)ŠBƒˆB¬\‡BÚBòÒ}B…ksBB`BÃ5…BÕ8BRxBåˆBÊBîh‘5@øS»@1AåÐ:A-^AÝ$ˆAË¡mAZdŒA'1rAš™]A¬4AHáAþÔÐ@¶ó=@-²Í?ÇK7¿X9Àš™ÀÛù>À-2¿;ßϾ`åP?F¶‡@¼@ôýè@VA/Ýä@òÒ A1Ø@žïã@ÍÌAòÒÑ@ÙÆ@¼t·@çû!@ð§¦??5&@d;?Évv@øSã?#ÛQ@V@ƒ„@ {@‡­@Nbü@shAÍÌAË¡©@ƒŒ@\*@•S@F¶³>‡9¿çûQÀsh½ÀÃõ€À\ ÀÑ"£ÀÉvêÀ…ë¥À'1ŒÀ‰AÁÕxÁçûMÁ…sÁú~ŽÁ/ÝšÁ00L7Ù¿ð§À+‡Ö>mçû¾Ï÷#@-²U@“Ð@TãAmçß@%A'1A¨ÆCA{XATãyA•”A•¨A‰A›AX¥A×£ŒAã¥Aé&uA)\cAw¾9A¢EAF¶AºIÈ@㥠ATãEAbJAPsAÃõ|Aj™A…¨AÛùºA¦›×Au“ÖA{îA—ÚAÁÊêA¸äA²ùAïA%÷AffùA= åA9´ÞAòÒÃAÙιAƒÀ«A¦A-ÄA;ߨAÖA7‰áAshðA1áANbãA—ÍA˜nÇAX9²AR¸£Ash£AÙATãAmçUA¤p/AÛùò@yéþ@ü©ù@çû3AºI@A¸qA#Û‚Aw¾–AÁÊœAJ °A%ÄAã¥ÏA/ÏA¸³A-¤AÃõŽA¨ÆŠAßOoAòÒGA¬yé?—.À^ºaÀjtÀsh‘À 3Àsh…ÀÂÁÀ´ÈNÀ¦›\ÀP¾ð§†>b@¶óU@ÛùÎ?ÓM–@ ׯ@‹lAZAA!°AøSÇ@+ó@ÙÎÏ@‰AAÕx A¡@}?¥@•“@ð§‚@Tã©@jü@;ß A˜n0AƒjA)\qA#ÛA ‡AÃõ’A`å„A—Aö(¥Aî|ºAff¦A/˜Aj¼A gAR¸8Aj¼Ao»@F@… ¿%>d;7Àú~ ÀœÄ°ÀòÒ•ÀßOùÀHá&Á² ÁVæÀßO‰À?5>À#Ûù>‹lw@­@o A¬A#ÛCAºIZAF¶AA33EAü©!AÛùê@ÕxÁ@ªñB@ö(œ@h‘@'1`@¶ó}=Ï÷?´ÈÖ¿L7…À´ÈžÀÙÎÃÀé&qÀ?5fÀff¦¿‹l_ÀË¡…¿–Ã{B\rB1ˆrB5^fB\eB,VB²YBòÒdBÓÍmBªqmB šxB®ÇvBïBL7B´†B™…BœD~BªqxBw>sB…kuB­rB;ß}B.{BJL‚B-r„BJL‰Bí‰B33ŠB¬œ‘BPM“B¸B´HŒB²ˆBª‚BºI…Bw>ƒB…«‡B5Þ‹BëBf¦˜B5Þ™B–ÙB*BÉvšBd»œB˜B'±–BZ¤‘B3³‹B3s„B„BX9ˆBš™B‹,Bª±B=JB^z“BC™BØBËažBç{Bœ–B˜“B­ŒBw>BJ̈Bô=ˆB7‰B)œ’B‰–Bl—Bš›B‡BPÍœBf&–Bü)“BFöBLwˆBåPBP ‚BVwBVzB)\Böè…Bu“‰B1ˆŽB—“BòÒ™Bãe–B¸ž‘BDË–B%™BÚ‘B‘í’BoBuÓŒBÕ†B¶ó…B ‚‚BuÓ‹BFvBjüBJÌ•Bž/”BE›BÇ‹›Bš”B“Bo’B‹ì‹B'±‹B˜®„B^º‚B#[{B…k~B-ò…B•ŠBd{‹Bƒ€ŠBÑ¢B¦‰B²]ˆBlƒBázBX{BÓMwB.qBÕxaB…ëcB¬œkBÖrBË!{BLwBã¥{B¬{B¯wB;_hB^:\Bh‘NBDB¶sKBð'BBݤGB¼ôLBÛyVB‰Á\BR8fB¯rBBìQ€B“tBB`hBÃukBÙ_B!°cB®Ç[B°rSBåPSBÓMJB%†KB¯YBÑ¢cBo’rB“vBw>}B{ƒB~B;ßpBÖgBÇËcB-2YBœDTBP QBmç^BÝ$bB\lBbsB ‚€B;Ÿ‚B^:ŠB`e‰B–„B×c€BøÓyBƒoB‘mdB¾ŸXBÇË_BZgB`å^BJŒ^B„mBË!kBš™uB ×xB?u‚B–ƒBÃ5ˆBßO°Áªñ™Á…ë‚Á—fÁÙ@Á…ëKÁVgÁìQJÁ5^tÁPŠÁ…Áyé­ÁÙ·Á{ÒÁî|ÔÁ= ìÁ‰AóÁš™ØÁHáËÁƒÀ®Á™Á…ë„Áú~^ÁmçaÁ 'ÁƒÀÁL7µÀw¾ÓÀ¾ŸÆÀÝ$ÁPEÁ¤pKÁœÄvÁjvÁJ €ÁshÁ®¥Á°rµÁ…ëÄÁHá¼Á{¨Á‰AŠÁžï_Á/Ý(Á²ÿÀ¤p¡ÀZdÀZD¿Ï÷À¥¿ƒ@¿b¨?X9´<Â]ÀåоÀoÁyéLÁƒZÁX‹ÁV’Áü©«Ážï§Ád;¼Áé&²Á¦›ÄÁòÒ³ÁÉvÂÁçûØÁ)\ÃÁB`ÎÁF¶±Á^º¯ÁøS“ÁTã{Á‡eÁ–C=Áq=XÁ+3ÁåÐ&Áw¾Á¾Ÿ ÁÛù0Á-²aÁjDÁð§dÁHá8Á*Áu“PÁ“‚ÁÅ dÁ¦›bÁ}?ŒÁ/Ý’Á‰AŒÁš™qÁD‹PÁ ×+Á/Á¦›øÀ+‡ÚÀÁh‘ Á`å&Á‰AÁÃõÁƒÀŠÀçû…Àú~’ÀPw¿'1ˆ>–C{@sh­@+‡AÏ÷/AázjAo[A¬dA)\'A/ A¬¨@ªñ2@•C¿33KÀP«ÀÉv Á¼tëÀ-²}À5^jÀ–C‹<¨Æû?î|Ÿ@—A1.AøSaAZdeAé&AshˆAÇK™A!°AÇK‰A/]A7‰7AßO!AÑ@Í̸@×£@/ݼµ?ƒ°?î|g@Pg@ßO…@î|ï@oAã¥AÝ$@㥛@®G¥@bÜ@¢EAË¡)A+Aö(ø@yéÊ@ÙÎO@-‚@ôý„?oþ…KÀ¸±ÀÃõHÀL7)ÀßO¹Àh‘ùÀ}?Àu“˜ÀÙÎÁ…ÁF¶YÁPiÁ1ŽÁ¨ÆšÁ00ªñ*À1”ÀázÄ¿ OÀmç{¾V.¿}?å?D‹˜@‡‘@ÁÊå@œÄà@®GAòÒ)A¼tSA AX9A'1„AL7“AshuA®wA‘íFA;ß=AL7A}?Ý@ìQè@ »@-² A¾ŸBA`åJA?5vA–CyAÙ‘A= ¡AD‹±Aj¼ÎA^ºÂAÓM×A7‰ÌAžïÔA¬ÚAshðA?5åA`åñA-²øAòÒéA–CîAázÕA¤páA1ÊAš™½AÏ÷ÌAÙäAÁÊçAJ èA°ròAªñÚA×£ÝAázÊA ÃAÙβAjžAÕx˜AÓMxA7‰aA¶ó1A/ý@5^ª@33×@žï×@o#AÅ $AR¸`AìQzA‡›A“™A7‰³AÓM¼Aú~ÍAœÄËAZ®AÓM¤AÓM‰A¦›„A¤p[A-²7A/Ý4AmçAÓM6A®G+Aªñâ@V¶@ÇKã@;ß@Ùž?5?Zd À/ÝÀøS»ÀÁÊõÀ‹lËÀ®GÀÓM’¿—ž?ìQ„@j¼°@ƒÀÖ@š™Ý@ÓMZ@`å(@²O¿þÔø>òÒM¿ÙÎ÷¿þÔ¸¾#Ûù>ö(Ü>Ûùn@ÙÎ@7‰™@Há†@R¸¢@ªñ®@•+@Ù¦@+ƒ@J ê@ê@Áʱ@ÙÎß@Ûùª@J ò@Tãñ@‰A"A—Aš™A¦›Aq=†@ÓMr@Ûù®?“|@ÁÊ@×£ì@Ù$A•)A‘í^Ažï]Ash†A%ƒAºIŽA/§AªAü©–Aî|AzAìQFA}?A“¸@J 2@•=R¸nÀff&Àü©™ÀshaÀ°À•ÀÂÝÀ^ºÁÇK%ÁX9Áð§îÀB`¹À)\ÀVm?“d@¾Ÿæ@…ëA?5DAyénAVhAçûwA^º;Aî|A“Ä@Tã-@B`M@®G@w¾Ÿ¾Àú~À…{ÀÁÊÙÀÙæÀyéæÀåÐŽÀX‰ÀB`å¿ú~zÀ^ºé¿= ‚BþT|B33uBázmBË!kB\]B˜îRBX[B‘ífBö¨fBî|oBÉvpB#Û~B{B-r‚B BbqBu“nB°òeBiB%hBî|uBòÒtBô}BXùBî†BN¢†B%FˆB`%BL÷ŽB`eŠB“˜…BWƒBªñ{B#Û{B3³sBshzBòRƒB‡BþTB“BºÉ’B-r˜Büé–B?õ›BÍÌšBŸBªñ¡B,ŸB“ØœB×c–B˜î™B;ß—BÁ ‘BÇ ’BßB¶3BPM”BÙŽ“Bb™Báz˜BVN‘BÛ¹Bî|‰B…‰Bü©ˆBDK†BX‹BÏ7‘B`å’BÅ`–BVΗB W˜BH¡–BþTBDKBøÓ‡BÉ6„BV{Bô}}BþToBNânB+‡vBé&€B=J…BìщB/ÝBú~”Bmç‘B šBÝ$˜Bü©™B•Bs¨•BçûŽB‹¬‘BHá‹B#ŠBã%ˆBê‘Bã%•B‡V”Bdû–B¼4•BHaœBÇ œBôý”BÇ‹‘BBBš™B˜B\ωBî|ˆBöèB-²}B;ß…BˆB#[ŽBoB{”B-‰Bq}ˆB¸…Bî|BœD|BL·sBR8mB#Û_B}¿_B¬jBœÄmB´ÈvBV|BHárB…kwBƒ@iBPgBq=[BÁJSB.HB?5JB´H@BBBÝ$:BÏ÷>BbBBªñDBÃuTBD‹`B˜n_B.QB¤pGB,RB—NBÑ"UBd»SB!0NBç{UBÕxMBÖPB._B}¿kB}?xB3óBÏw…BË¡‹Bö(ˆB‡BTcxBÏ÷oBÝ$bB^º]B¢EWBݤ`BÑ¢\B/fB;ßfB…qBÙÎvB‚Bw~„B‘­Bƒ@~BÙNzB5ÞpBÓÍhBžo`B#ÛkBw>tBÁÊgBö¨kB¾zBjzB¨†€B¶s€BuS…B+ˆB¶ó‹BÝ$XÁã¥-Á“Á}?ÍÀÂÀ´ÈVÀh‘¡À9´ˆÀÉvÖÀ= Á–CEÁžïwÁX{ÁB`“Áð§”Áçû­Á¬­Áw¾”ÁºI‹ÁZd[Á²5Á= Á‰AÔÀ®ÓÀL7IÀj¼4¿´ÈÖ?‡Y=—n¾o3ÀòÒ½À}?ÉÀ‡Áé&ùÀw¾ ÁÍÌ:ÁF¶cÁú~|Á}?•Á^ºŽÁ®G€ÁÂGÁ®%ÁD‹ÜÀ¬˜À+‡v¿ÓMb>Å p@d;«@ZdAòÒA°rAsh‰@{@F¶ƒ¿Há:Àü©ÙÀ¬Á CÁ•UÁåÐÁ\xÁX9‰Á yÁÉvÁü©{Á×£‘ÁœÄ¥Áôý’Á…ë•ÁÉvtÁÓMnÁªñ6Áj&Á+‡Á‰AØÀq=öÀé&¥Àb@Àú~À‡Ù¿ßO5Àî|¿À/±À´ÈâÀ= ƒÀ¾ŸbÀ¬´ÀÙÁ\Áw¾ïÀÍÌ,Á—DÁ1 Á¤pýÀff²ÀB`EÀL7YÀôýÔ½®G @ázT¿/]½²/À`å0¿ +¿´È>@h‘}@+‡‚@¬ú@¨ÆAh‘QA;ßYA•‹AÑ"AÍÌ©AX9µA•©AD‹›AøS„ANbPAòÒ-Ashå@F¶£@= '@h‘M¿#Ûy¾þÔ`@?5f@h‘Ý@5^ AßO=A;ßoAÏ÷ŠA33¤AshÀAj¼ÆAHáÃAÖATãÅA1ÅA\§AV¥AòÒ‘AÍÌpAË¡YAôý AD‹ø@7‰í@/µ@ð§þ@¼tA¬2Amç[A!°ƒA®A®GAB`‚AR¸ŒAÏ÷}A®yAD‹„AÃõ‚Aw¾oA#Û[A¾Ÿ&Ayé$Aªñ@AD‹,AL7UA…-A= EA+‡.A•EAh‘WAh‘WAòÒƒA‹lwA‘ínA!°8AøS;A…ë)AÃõ>A¦›Aú~AÏ÷£@áz@Ë¡‘@þÔÈ@ú~B@X¹?ð§n@B`•@ /?Å À¿î|£À¼tÓÀ…ÁTã;Á00­ÀþÔ¬ÀázTÀ‹lGÀžï?–C ¾ƒ @žï§@ßOm@ôýÐ@þÔ”@ ××@ð§Aq= AyéVA= iAåÐ@A®]Aw¾)AVAA–C+AÛù*A)\AZè@ÇKAÁÊé@ƒÀ"A‰ANAÙnA}?†Ah‘wAçû“Aj’Aî|¤ANb»AºIªAh‘ÀAL7°AffÅA²ÌA¤päA ÝAjèAR¸ïANbÛA×£äA“ÇAþÔ¸AÁʶA‹l°A%ÍA1ÙAoÖA+âA‹læAX9ÕA®ÒA…ë¿A¶ó³AƒÀ¨A}?‘Au“ˆAmçYAÓMBAòÒ A‡Ñ@R¸F@@Ý$F@ffÖ@ßOAffHAHáfA¤pAZd“AªAÙαAºIÃA'1ÆA#Û«AìQžAö(‚Ah‘mAƒÀVAB`3AÇKAAff2AÁÊ=Aš™A7‰í@Áʵ@Ý$®@5^:@‰A`>Tã¥>33+Àü©ÀZd¿Àð§êÀh‘¥ÀX¡Àˡſd;??+‡Š@Ãõ¼@Õxé@X9è@shy@ÉvŽ@ÙΧ?•ƒ?œÄ ?U?žï@d;O@D‹,@Ñ"·@ã¥s@ôýÜ@ÓMÊ@ð§Ö@`åà@?5†@¤pÝ@j°@33Aã¥Aš™!A 3AB`A/Ý6Aj¼"Ad;GAV[AF¶-A!°:A`å AË¡Aoû@o-AÁÊ+Aî|]A´È€AÙvAP–A•AÇKªAƒÀ›AÕx£AV¾Aü©ÆAòÒ¾A‰A®Açû£AòÒˆAš™sA9´:A}?AƒÀš@/Ý”?;ß@•=áz´?ÁÊá¿òÒÝ¿‹l—ÀÙîÀu“´Àö(Àƒ(À%Àü©Ñ?j¤@¬ò@…ë3AD‹TAo†AƒÀ–A9´‹A ŠAZd_A…ë3A² AÝ$¦@-¾@øS{@ÍÌT@®G!?o<{¾¿øSÀ= §ÀX9¬ÀºI$ÀÅ pÀVÞ¿%…ÀD‹¬¿åˆB˜‡BþBü)vByéqBR8dBìQdB/]mBd;zB7 }Bœ„„BÖ…BÛ¹ŒB5^ŽBf&‘BÀ“B%ÆBî<ŠByi‡B¦[ƒB33B馃Bs(‚BhцB‡…BB×ã†B-²ˆBøSBhÑB\B/‹B)œŠBd»„B/]†B7ɉB…kB= ”BÅà˜B¶sžBðgžBöh›BôýœBuS—BhQ•Bm§B%FBˆBî€BHasB°ònBƒÀ{Bj…BÕ¸„BÙΊB‹BÇ‹’B?µ—Bqý™BåРB®£BÖœB}ŸB¬˜B…ë—BJÌ“B'±‘BXù—B^ºœB‹¬ŸBÁŠ¡B=J¤B B²Bî<–B¶óBy©ŒBÁІB+‡}BZä~BÕøqByB;Ÿ‚BòÒ…B¨FŒBuŽBð'”Bq}›B/]šB•BÉ6›BÍÌžBd;™B7É™BV’B¬Ü’B¬‹Bq=‰B-ò‚Bh‘‘B‡’BV•Bš˜BË!–B¾_œB}?˜B¨ÆBHáŒB‰A‰B-r†B¤p„Bj¼yB'±sB¬fBË¡cBìQpBÍÌwBÅ €BÚB-²ƒBD‹~B®G‚B šBåÐ{B€yB®GwBd;kB¨F]BœÄYBff\BR8_Bé¦aBD‹eB˜îYBXBD‹IBÙÎCBfæ4BìQ*Bq="BÑ"*B•$B)Ü-BÙ/B-26BABZKB…WBƒfBÍLgBøSXBÍÌIBZäKBÕø>B¤pFB{=B¬ü¿;ß¿´ÈŽÀƒüÀ®GÁžïMÁdÁÓM†ÁD‹œÁÓM¨Á—¦Áyé®ÁÍÌšÁyéˆÁ´È^ÁHá&ÁÅ Á/­ÀÅ À!°â¿P>Ûùî¿°r˜¿Õx齚™y?¾Ÿ¾Tã]ÀffºÀNb ÁÏ÷)ÁÁÊÁÉvPÁCÁ‹laÁ+‡vÁ×£ƒÁÃõvÁ¾Ÿ†ÁòÒeÁ#Û}Á+Á33mÁXwÁB`MÁw¾=Á!°ÁJ Á—ÁXÁºIFÁ+;ÁJ >ÁºIÁ¸!Á%Á°r>Á+‡Á × Áj À-²-ÀÃõXÀ#ÛÕÀ\¦À®oÀÇKÛÀòÒýÀÃõ¨Àmç‹Àmç Àžïg¿shѾÙŽ?Háê@ã¥[@1t@B`•?òÒí?Ûù@žï«@`å˜@—š@‰Aø@žï AD‹HAÃõLAòÒ„AX‚A¢E ANb¬A£A•ŽA?5xA—DA+A˜nº@¶óU@…ëQ?Tã%À¶óuÀî|¿\À?5Ž?çû‰@h‘í@ºI.AÏ÷[A1~A+’A ™A= ŒA°r—AÙ‚A+iA…1AçûAã¥ë@f@–C;@øS£>î|¯¿ƒ€>/ÝD?q=:@-²í?Év@1¸@Ûùî@®Gõ@ºI"A\AœÄ A¬Aš™AÃõ:A+‡NA°rDAsh?A—AB`AìQ&AÑ"A A¼tÏ@ZÜ@“°@\¾@¼tA`åA7‰3AþÔ2A7‰?AåÐ A¶óAƒÔ@ÙÎAµ@Í̘@Ûùž?õ¿¦›D¾ffÖ?D‹ ¿b@ÀßO¿òÒ?}?Å¿D‹Ì¿R¸–ÀL7ÉÀƒôÀš™Á00ºI ÀP«À‡ ÀshÀ-‚?'1@Ñ"¯@ƒÀÚ@q=†@o³@®o@¦›´@åÐÆ@‰AAq=*A= YAsh7A¦›LAé&AÙÎ;A¶óAV!AÕxý@X9¤@j¼Ô@mç‹@jä@ªñA ATãA7‰'A/cAR¸|AòÒšA5^®A×£ªA/³A33ŸAF¶¯A'1œA¬¡A}?£AffA¨Æ¥A¾Ÿ“A®šAjŒA\˜Ah‘“AX9 Aôý¾AÄAsh²Açû¾A/¸A9´¨A‹l£A‹l†ANb|AºIFAZAú~.Aw¾ÿ@Évþ@Ï÷@V&@mçû=33S¿¬:¿¾Ÿê?ÙÎO@¢Ev@¢EÞ@°r(A!°JA;ß{A-²’AÕxªAj¼±AJ AÓM•AffrA¤pSA 'AÑ"ë@ßOí@Å @–CŸ@Vu@V¾?¿j¼¤¿Ñ" À‘í ÀVVÀ‹l«Àj¼”À'1Á‡áÀî|'ÁìQ ÁVÎÀ\žÀ ד¿Tãe¿#ÛY?7‰1@®G¡>Âu=ã¥Àq=º¿ú~ê>= ×>çûY@X9|@yé†?ÃõH@¢Eæ?øS‡@VV@´È¶@™@+?@°r¬@°r¤@Év AshA°r&A¢E0AÏ÷A:AF¶5A˜nPANbjA{JA'1`A33;A kA+‡^AÕxwA#Û}A–CŒAôý Açû˜A ×®AB`›AÉv¡A‘í•Aƒ›AòÒ¶AÛù¿Aq=³A‘í¹AÉv±A¶ó–Að§‹AÑ"iATã;AÕx A¤p@–C·@ßO @?5î?øSÓ¿åÐÀ#ÛµÀ}?ÕÀð§ÆÀh‘mÀìQ˜¿ú~ª?X¡@Ý$AøSA}?UA%cAX9‰A?5”AL7{AZdkAð§B¶sEBbOBázVBžo`B,nB“}BÃõ|Bü)qB¯fB¦›eBoYBœDXB°rOB{GB?5GBÃu?Bî|ABƒ@OBç{TBü©aB!°fB^ºkBjqBƒ@eBw¾]B7‰UB®GRBÇËHBh‘FBJŒIB«WBTãXBD `B/ÝjB5ÞyB}BËá…BoRƒB´H{B;ßrB‘íjBfBÏw\BXPBÝ$VBð§^BsèTBšNB«YB?5]BjBƒkBÝ$xB˜îwB°òB+‡lÁu“2Á®Á¾ŸÞÀ »À}?ÝÀF¶Á'1Á¬ÁçûSÁ!°dÁÍÌŽÁB`”Áo¬Áú~¥ÁHá¹ÁVÎÁªñ¾Á)\³Áš™œÁÁÊ‚ÁZRÁ‰AÁ1ÁX9´ÀÛùFÀ‘í¿!°:ÀÍÌ,À‰AÄÀœÄÁÏ÷#ÁXÁZdaÁ+oÁo•ÁF¶Áq=§ÁNb©ÁZd¤ÁÇKÁ}?kÁ¼t3ÁƒÀöÀôý¨ÀÇKÀR¸>¿®G@㥛>¦›D?‡Ù=Xé?€?h‘À”ÀÅ ôÀü©'ÁœÄ4Á`årÁh‘mÁ¼t‰Á/“Áb¢Á‘í“Áö(ŸÁé&”ÁÙΦÁff·ÁVÁD‹™Á7‰wÁœÄ€ÁR¸XÁu“JÁœÄ>Áw¾Áú~>Á¤pÁÍÌ$Á¦›üÀ¾ŸÁƒÀÁyéBÁh‘ÁÙ(ÁþÔØÀ^º¥À¤pÕÀòÒ#Á¢EÁ/ÝØÀ#Û%Á\JÁ×£"ÁÙÎÿÀÓMšÀƒ(Àw¾Ï¿X9T?yé>@ff¦¾1 ?F¶#À°rÀ×£p¿^º@¬B@R¸F@7‰Ù@-² AÁÊ?Aî|IAPƒA+‡‹AZd©A¤p°ANb£A‡AXcAË¡'A+‡A©@\j@;ß/? ÿ¿¬TÀªñÒ=Pw¿-²-@¨ÆÃ@VAJ @A?5lAºIŽAB`¥A²´A ²A?5½AßO¬AºI“AçûmA^º;AÍÌ$A¬à@5^¾@X9l@é&q?#Û@¬Ê?òÒe@¶ó½?n@Ãõì@NbAƒÀ2AªñXA²?AÏ÷cAJ ^A‰AnAÃõ|Aü©{AþÔZA+‡LA“Aj¼&AL7IAX9AþÔ6AZ Aú~*AJ Aff,AÅ "A-²A ×QA‹lIAžïAAmçAL7Aá@ü©Aú~Â@½@6@Ùη¾ã¥û?‰A€@mç»?ÁÊa¿\"@‡…@ú~*?ÁÊ¿¨Æ›ÀÍÌÜÀ;ß ÁHá0Á00Å èÀB`Á´È®Àsh™ÀNbÀòÒ;}?@oc@¸…?ú~Z@‡ @Évv@B`¡@øSÛ@š™AÉv:AìQANb0Aj¼A…A¬è@ÇKó@ú~ª@ZdK@¤p@oS@ÉvÊ@• A)\AÑ"!A¶óAÓMJAþÔ^AÝ$ƒA-²›AÙΛA‡­Aú~—AÁÊ£A1œA¬¥AôýšA¨Æ›Aƒ¤AÇK“A‰A¤Aî|AJ “A%A‘íAÅ ­Aƒ¸Ažï¸AÑ"¼AÏ÷µA ¢AžA;ß‚AÕxqAu“}?=À)\Ào»À‰A¬ÀÍÌÁôý(ÁjÁƒÀ Áü©¥À?5ŠÀ…ë1¿ K@Zd£@‹l A¼tAžïGA/Ý`A¾Ÿ8Aö((A\î@®¯@+‡†@¶ó­?¬\@'1È?+‡¶?#Û¹¿yéFÀR¸vÀmçËÀü©áÀ9´ÁçûÙÀ°røÀ²·ÀÙÎÁíÀ'±lBÖiBßÏfB5^\B²^B•QB/]QBË!`Bo’iB¨ÆnB¤pxB¼ô|Bø“…Bb†BBà‹B!ðŠBÚ…B“€BVŽ~B…vBݤsBü©{B¸žyBJ ƒB!°‚B®†Bo‡B…ëŠB+‡’Bþ“B¤0B„ŒB+‹B!0†BƒŠB¸ŒB'ñ‘Bb–B×›BšÙ¡B¾_§B€£B‰Á¥Bé&¡BÅ BD‹™Bð§”Bf&BÑâ‰BTã‚BÕø€B™‡Bj¼ŽBÛùBÁÊ–B¯”B‘í™BøB'qŸBbУB7É¢B+›B‰˜Bd»BøSŽBbPŠB= †BËB¬ÜBª”B#™BߟBôýBZBd{–Báú”BßÏBw~ŽBöè†B¨…BáúzBj{B+ÇBå…BW‰B{TB B’B\—B94•B®‘B¤ð–B香B¸ž’BßÏBɶŠBÕø‡Bd»B94~BË!vBÇ …B^:ˆBX¹ŠB3óBºIBW—Bú¾—B1HBü©ŒBoÒŠBß…B)Ü„BD‹{BHavBHakBhkBázxBÅ €B—ƒBÁ …Bj|ˆB+‡„Bh‘„B= B7 ~B¦›tB\vBƒÀmBq=_Bü)]B–CdB)\jB•pBÖvBD‹oB^:iBôý^B= TBœDKB®?Bw¾4Bžï>B¦›:BáúCB.JB ‚QB­]BÙÎfBÛùsBÏ7B€~B qB)\cBøÓgBÇK[B;ßZB5ÞPBÑ"IBCB= >BHa=B`åKBVŽTBžobB«hB#ÛlBBvBBlBbcBÑ"WBÏwUBw>HBƒIBÁÊJBð§WB¸ž\BbaB,jB¯wB¸}BB †B^z…BøSB-xBoB94jB?µaBu“TBö([BçûbBúþUBD‹RB¶óaBu“_BßOjB3³lB-zBhQ€BÅà†BÓM|ÁÁÊGÁX1ÁÁÏ÷¿Àªñ®ÀÕxýÀåÐúÀÏ÷Áî|CÁ‡mÁÂÁ¤p’ÁHá¬Áü©­Á®GÈÁ×Á\ÅÁªñ°Á9´™ÁÉvÁMÁh‘Áh‘Á-²©ÀÃõø¿D‹ì>ƒÀu“(Àªñ¶Àð§ÁìQ"Á{XÁPsÁbƒÁÃõ¡ÁÑ"­ÁìQ£Á‘í¯Á!°ŸÁ•‹ÁbdÁÂ+ÁçûõÀ㥯À²7À?5¾¿¬¬?žïG¿°r¨¾‘íü>{Þ?X9?—NÀš™¥ÀÓMÁÂ/Á´È8ÁÕxsÁš™sÁ…ë“Á+Á‰A ÁÃõ—Á;ß Á‰ÁÙÁ^º¦ÁVÁòÒÁ1ŠÁ‹l†Á¾ŸbÁOÁ#ÛGÁL7+Á¶óEÁj¼2Á¬:ÁyéÁ/ Á5^ÁX9>ÁÝ$Á¶óÁË¡ÍÀôýÀé&éÀã¥+ÁL7Á¨Æ÷Àáz4ÁffBÁ}?Á\Á¦›¨ÀªñBÀsh9Ào½òÒ@-²­¿¶ó¿®/ÀVÀìQ8¿ÇK?@°r0@!°r@…ëñ@q=A¼tEA…YAX‰AþÔ”AHá²A¤p¶A¤p¨A²“AVAJ LA/ÝA×£Ä@˜nr@ã¥;?sh Àj4À}?5>j<>5^j@D‹Ô@\Aš™IA¼tuAZ”AþÔ§A¼t¸AP°A?5¾A/«Ažï˜A‡…AmçSA¾Ÿ0Að§ò@®GÕ@ü©‘@øS @F¶ƒ@²w@Ï÷—@¬†@‡µ@…ë AHá&AÉvFA{dAÙHA'1lA#ÛWA¬rA„A-²€AyélA?5hAB`/A33#A…CAA+1A¢EA'10Ah‘#A0Aªñ6AœÄ$A-²]AR¸RAòÒUAƒ.A×£&AƒÀAòÒA!°Ò@R¸¶@-²%@¼t½\ @bŒ@¢EÆ?+‡½X)@¢E@V¿çûÀXÅÀäÀZdÁV:Á00+‡V@ff¶?ö(„@ªñŠ@Ï÷Ë@5^ Aé&?AÙÎAA ×A®G?A"AôýHA+KAD‹ZAÇKiAh‘„A^ºAö(A¤pŽAD‹ŒA…{A;ß[A0A¬è@ú~Ò@…ëQ@Nb @-²í@¡@Évö@J AçûYAË¡AF¶ŸA}?­AøS³AË¡¯AÑ"•A/Ý™AÏ÷ƒAh‘yAhA²CA-RA#Û9AjNA´ÈLAshOAªñ€AÛùŽAªñžA´ÈŽAü©uA¤pA Aö(ˆAî|AøSGAçûAAw¾ Ad;Û@w¾A˜nAÍÌ"Ab A\AÍÌÔ@¬°@þÔ@@5^Z@Z|@ÙÎ@Å ¬@u“ô@ÁÊ)A•OAh‘‡A´ÈšAX9­A•AºIŸA®GŒA;ßsAð§8A+ A%Ù@XI@%a@ÁÊy@Õx @{Ž¿Év~¿B`¥>XIÀð§À¾ŸšÀºIdÀã¥ÏÀZd×Àö(Á… Á+‡êÀ!°ÊÀÉvFÀjÀáz|ÀÛù¾¿X9$ÀázLÀPÀ¸µÀw¾‡À1¼À>À)\WÀü©ÍÀßOÀsh­À1ÀZ$ÀVŽ>/Í?×£ ?yéŽ@ÁÊÑ@{AÍÌ*A¬NAœÄ Bh B5 BÙN¢B1H BRxšB®•BÉ6ŽBô}ˆB´H‚BßOxB?5~BT#„B‘­‹BœDBd{”Bw~–BœDšB–B94—BuÓ–Bq}”BZ¤BJ ‹Bq½ƒBYBJÌ„B-²„B*ƒBöh†B^ºˆB1ÈŽB7ÉŠBFö„B‘­ˆB‹l‰BÑb‚B šBúþxBç{rBw>iBØ_BL·TBázdBÇKkBZäwB+‚B‘­…BþTŒB²ŒBbP‡B˜.€B²}BØnBsBZdkB²iBþTbB¾ŸbBd»lBé¦xB•yB¸~Bî<€Bü©wByB˜îmBþToBË!hBP nBÙjB¬^B¼t[BZBR¸eB¾hBð'tB`åpB…mB}?dB'±UBB`HBJ =B7 9BNâ>BZ:BjD‹$À5^rÀh‘õÀ/ÝÁþÔ@ÁþÔTÁË¡{ÁÕxsÁX9ŠÁºInÁ¬‚Á²›ÁË¡ŒÁ¤p’Á kÁö(XÁ#ÛÁ‰AøÀ!°ÖÀ/}À¤pÀXɿ㥽Zd?‡Ù=Ë¡-Àj¤Àyé~ÀÈÀ¦›\À…ë9À1¤À• Á—ÞÀÏ÷çÀ /Ážï;Áú~4ÁÓMÁq=ÆÀÃõXÀ= gÀZd{¿= 7?)\/À#Û™¿= OÀ#Û Àªñ¿“@j¼d@ÍÌT@à@Évê@Ãõ,A¸]A×£ˆAZ–AË¡´A–C±A¸¬AXA…ëA¶óCAX9.A#Ûé@d;Ÿ@ƒH@ºI ?ÉvÎ?ú~¦@u“°@ßOAÇK)A OA Aî|”A-±A5^ÅAÇKÕATãÑAË¡ßA²ÏAƒÈAB`¯Aj–A ×’A^ºsA5^zA°rPAš™-AÅ @A^º1A-²IA}?MAh‘mAÅ “A5^™Aö(›A¢E¥A˜nAZ™A!°ŠAVŠAÂŒA¨Æ‡A¼tyAªñdA1,A A= 3AìQAú~0A¸AìQJA1JA…aA= eA`åxAyé–AÙšAÛù¡A–CƒA¶ómAœÄ@A…KAË¡AƒAshÉ@Ñ"{@1°@œÄØ@V^@®GÁ?+g@1d@𧆾é&q¿Év’À‹l×ÀX9ÁÙÎ7Á00h‘Å@j\@Å ´@X¥@ÃõÄ@{AÇK9A%?Aw¾A)\OA¦›RA'1~AX9rA²’AÝ$AV¨Ažï·Ah‘´A¬©AßO›A;ߊA!°fA`å4A/Ýø@ff²@Ö?d;@P@¦› @ff¢@VA/Ý4A%iA/A–CAq=©Aw¾±A A°rœA9´A33gA#Û]AÂ)AÇK!A#Ûý@¶óé@/Ýø@Ûùâ@bAo7A¨ÆiA–CKAáz$ANAq=BAÂOA¤pUA®-AžïCATã#A%7A{FA‹lEAÓMLAš™IA“$A¼tAÕx3Ab A`åA¸á@u“AjØ@B`ù@òÒA;ß%Aö(dAö(rA#Û…Aö(^AHá‚AÍÌlAåÐ`Ao#A9´AZd£@d;¿?;ß@¸u@þÔØ?sh±¿yé&¿{®?HáÚ¿ºIl¿ö(€ÀX‰ÀP·Àã¥çÀ#ÛGÁ…ëÁ‡ Á?5ÊÀ/Ý”ÀÉvÒÀffòÀ33·À1äÀ'1üÀÁ®G1ÁjÁ•;Á;ß/ÁVdÁ¬‡ÁB`}ÁVcÁ339Á¸ÁÉv²ÀJ bÀTãÀ®·?J Ž@Õ@î|Ç@5^þ@´Èª@åÐÒ?òÒ>®7À®GyÀ!°ŽÀÛùÁ‘íÁìQøÀÛù Á¬ÎÀÙ>À/ݤ¾VV@;߯@˜nö@“&AÁÊ-AÛùLAƒ AÑ"EA‰AHA#ÛcAB`[A?5 A5^ú@X¡@7‰ @mç@ôý¤¿ƒ@=®À/ݤÀ ëÀìQÁ˜n(ÁB`#Á?5RÁw¾gÁ¢E2Á Á®¯ÀÑ"{À¬¿×£0?¤pý>‡@–CK¿ÙÎÇ?mç;?˜n²?®G>¬:¿h‘-À#Ûù¾òÒM¿!°2@33@u“P@åТ¾‹lg>j|?-²Ý¿î|ƒÀü©1À㥻¿ôýt¿ ?ð§Æ¿+G?Ë¡FBÇËDBÙÎJB3³DBPNBVŽDB-2LB\B¢Å]B˜n`B{dB–CiB‘mvBƒÀ|Bú>†BÕ‰BHáƒB94ƒB¯xBÃõyB¶snBd;wBð'qB‘mrB¯wBƒÀxB°rBžo‡B Ú‹Bq=B33ŒB¸ŽBã%BVNBw¾•Bž¯“Bu“šBw¾žBð§¤BZd¨BVŽ­BþT¨Bff©BìQ¨B+G¢B=J¢Bb›B¾™BJŒ“Bs(‘Bª•Bk›BoÒBšŸB™£B/B²¡BòÒŸBhÑœB¯B¨†™BœÄ“B ÂŽBVއB¬\€B'±uB“˜hB€nB«yBÃu„Bwþ‡BšYB¶3”BÏw˜B‘í”BbP–B‰Á–BV–Bd;‘B–ËBž¯…B‹¬‚B-ƒBßOƒBDƒB/†Bh‘†BVŒBœ‡B“B?uƒBÅ ƒBzBjtB5^lBö¨gB×£_BÇKRB9´HB¼ôUB¯]B= lBmguB;Ÿ€BZ$†BF6‰BH¡…B}B¶3B¤ptBš™qB¦›iB˜neBR8gB'1fB%hBÉövBÛùtB‡€Bmg€B/Ý}BìQ{Bð'nBåÐpBìÑhBZrBL·rB®ÇgBVŽkBÇKhBÚsBB`xB1HƒBAƒBÙ΀BÑ¢|B¬nB×£fBþTZB¾ŸXBð§aBR8`B¼tiBBàfBw¾pB‡–vBÅ`€BºI…B= ‹BoÒB%ŒB „B¨„BîüBázxByénB;_aB%\BøSNBB`BBÚKB—GB¨FVB¢ESBßOZB/]XBffKB{”CB°rABF6EB•BBç{HBHaRBøSaB%nBåÐvBÓB9tˆBËa†B}?ŒBDK‡B²€BhxBJ jB= fBË¡YByiQB)\PBÑ¢SBuEB¬œ>B^:FB W@B`eLBƒ@HBXUBNbXBVŽ_B^º[ÁÇK3Ážï ÁÓM¦À¨ÆÀ  ¿òÒ¿Z¿øScÀ)\«ÀNbÁ¶ó7Áh‘WÁ7‰oÁ?5tÁ+ƒÁÙ~Á{BÁÅ FÁ¶óÁ`åüÀ1ÐÀw¾“À‡ÁÀš™9À(Àq= >w¾½1À ƒÀ;ß»Àd;oÀÃõ¨À×£XÀÙÎÀ•ïÀyé Á1,Á¤pOÁ-LÁÙ*ÁoûÀÙλÀ/ÝÀøSƒ¿P?@—V@ÙÞ@ªñþ@œÄ2Au“BAþÔ,A²ÿ@/ݬ@‡!@5^:>òÒEÀR¸¾ÀVÁìQJÁb|Áö(VÁìQ‚Áü©oÁshƒÁÑ"gÁ…ëƒÁ¢EžÁÝ$œÁÙΖÁøSÁ\…Á aÁ5^2ÁÁ¸™À‡qÀ…ë¾ÓM@ö(@ôý<@q= ¾+‡nÀ®GyÀ‡éÀ‰A°Àš™ÉÀÑ" Áð§.Áyé ÁþÔ>Á|Á°rzÁ°rbÁw¾/Ážï Ámç·ÀÛùÖÀ9´pÀÓMÆÀ¤péÀòÒ½À?5ÁTãÑÀX9ÁX¥À5^ÀÀoÃ?ú~*@X9¸@F¶AÇK3AÉvpAÛù…AÃõbAžï]Aôý&A'ATãá@ázÐ@š™Y@å?7‰Ñ?š™™=ð§æ?¶óµ@ázô@/'A¸%A5^FAÍÌdA-²€A—žAþÔŸA+‡ºAƒµA•ÎA–CÐAyéßA ×ÑA!°×A°rÇAžï®Ad;¨AF¶‹A¨ÆwA´ÈfA/[Aé&†A ×›ANb¦Ao¥AL7¸Ah‘ªA ³A%¦Aáz§Aé&žAHá”A×£‰A´ÈbAøSGA9´AÁÊÅ@-j@/­@ «@Å A¶ó A5^BAbZA+‡~AÛùvA…ë†AìQ“AòÒšA+‡A+‡fA®AAìQAåÐAøS÷@¶óÅ@çûµ@}?‘@¬ð@ƒÀÊ@‘í,@5^ª?åÐj@j¼Ä?þÔÀÁÊQÀÏ÷ßÀ  Áo9Á/[Á00òÒ3A)\ AÁÊAð§Amç Ash7Ah‘_AV=A´È4AÙTAPQAÙÎuAð§ZANbtA®GSA¬vA דA™AÕxA^º€Að§xAZ:Aö(AB`Ù@ú~‚@-?“d¿u“˜>¬<À)\O¿ìQ0@7‰©@‡ AHá:AºI>AsheAÂQA`å6A¨Æ/A¨Æë@Ñ"@ ;@Å ð¾‘í¬¿¬2À/=Àd;'ÀßOý¿ÇK?®Gá?V@/]=¨Æ›¿ö(@#Û©?V@Ë¡-@–C«?Â@X?Év@o·@é&í@/AøS1A¼t%AD‹@AD‹JAºIAìQü@`å˜@-²E@ázÄ?d;?¢EV@ c@Ý$Ú@¦›ø@oA°rAºI8AÝ$ AÓMANbÌ@mç¯@R¸@®§¿q=À×£p?D‹L?ÛùÀƒÀÊ=ö(4@Õx‰?ƒÀÊ?'1(¿¢E6¾ð§F¿ìQˆ¿bÀÀé&©À «ÀX¹ÀÍÌ´À®GÁƒÁ¬æÀq=ÒÀVÁ¤p Áj0Á¼tÁôý@ÁžïÁ®GCÁƒÀrÁJ Á33oÁÇKYÁ!°:ÁË¡ùÀÓMªÀ¾ŸÀã¥>ÁÊy@'1¨@¸@çûá@Tã‰@ú~J?‘í¼¿¬œÀ'1ìÀÑ" Á{.Áš™+ÁshõÀNbÁh‘À33ÿV?ƒÀz@h‘…@q=Ò@oã@ªñî@Ñ"AƒÄ@)\ƒ@ã¥+@Z¬@\Þ@7‰a@5^@shq?ÍÌÌ=ã¥+@`å?‡@•C?;ßÀ;ßwÀP³ÀD‹ØÀ˜n²À¢EÁj¼ Áj¨ÀJ jÀJ ‚¿fff¾…ë@‰A(@ªñR>®G?(À^ºaÀÑ"»À ×[À+‡ÆÀî|ÃÀ°rÄÀX94ÀPW¿ÁÊ@`å¨@B`µ@¨ÆK@Po@!°Ö@u“€@Õxù?¦›€@@ú~’@Ý$Ž@ÍÌœ@!°ª@`åHBq=FBÑ"PBL·JB5^WBÇËTBúþ_ByijBHágBÛytBo’rB‰A}B'±‚BB`ˆB㥎Bì‘“B`åŽBÏwBTã‰B^:ŠBẃB33…BRx€Bç{vBö¨{BX¹tB¶sB9ô…BT£ˆBBàŒB3sB…’B×c•B‰˜Bh‘ŸBH!B1£Bu BbP¦Báú¥Bú¾ªBš©B馩Bå©B}¿£B‘í¢Béæ›B«šB%†•B°r”Bh›B5¡B‡Ö£BNâ¥B¸^§BÕ¸¡BL÷¤B!°ŸBÁžBê™B˜–B‡”B ŽBZdŠB¦„BÑ¢~B7 rBô}uB94wB;ß‚B¬‚Bq}‰B¢ŽBV”Bsè•B-™Bð'B9ôžBB ŸB}¿˜B°ò”B°2BðçBð'ˆB7É…B×c…B¢…‚Bö¨…B‘-ƒBmçwBòRtBshyBºÉoBjB W4B¯0B°r1BºI=B)\@BòRLBL7[BôýdB‰ÁrB^ºvBžo‚BÝd‡BšÙ…B¶3ˆBƒB WtBX¹mB¾`BP hBþT^B%XB¬œNBshNBq=EB ×=B5Þ;BX8Bð§DBHáIByiTBD‹NB•WBçûÉÀVmÀ\b¿Ûù.@ @•ß@j¼Ð@V@†?ÙÎ=ö(lÀÇK§À¼tóÀìQ ÁÛù(Á!°JÁð§JÁìQÁshéÀ= ‡À¬ÀÑ"»¿h‘-?V¿²Ÿ?òÒ½?žïw@²ÿ?P?®×¿¬LÀ`åà¿%9À+‡¿Ãõ0À´È®À°rìÀÂ#ÁÕxGÁoUÁ/ÝBÁ´È Á¦›èÀ¶óeÀh‘Í¿J @ôý<@Ñ"×@D‹È@oA%5A‹l-AÏ÷ó@ƒÀÆ@Ñ"#@B`å=òÒUÀ`å¸À…ëÁ ×=Á= mÁ¸WÁ9´hÁ@ÁÅ RÁ!°ÁJ 0Á}?iÁJ zÁ¬‚Áw¾cÁd;kÁDÁ°rÁÙÎãÀÅ pÀ—6À¤p?'1p@‰AŒ@Év¾@Ùn@q=Š>h‘íçû™?shq@Nb°@ AÝ$DA®GwA+’AR¸¦A)\’AZd‰AìQZAœÄFAÅ A®GAªñÊ@—Â@P»@u“”@°r¸@7‰A¬DAî|kAjhA…yA¼t‰A¢EA^º«A×£¯Aq=ÎA}?×A…ôA´ÈõA#[BázóA#ÛùA)\ìA…ÖA)\ÉA¬¬ANb•AZd{AHáVAåÐ~AX9“AÙΨA—©Að§ÁAÙ¼A®ÏA\ÇAçûÎAyéÏA7‰ÅAö(¸ANb¢A ŠAHáhAsh-AB` A/ÝA…ë ANb°@bh@D‹,?ìQè¿R¸¦ÀB`Á00•‹A´È|AÙÎwA²iATãCA–CkA‡€A°rFAHáHA YAºItA¤pAš™WAh‘[Amç/AZA^º†A‰AvA‡‚Aw¾_Aq=hA¼t'A}?Aq=AìQŒ@¢EÖ??5¿VM¿d;?ÀžïÇ¿/Ýô?)\ÿ?b @d;»@1l@¦›Ø@/¡@²¿@w¾ƒ@˜n@¬š¿×£hÀ“äÀö( Á?5Á5^2Á1 Áé&5ÁX9Á;ßÁÂýÀžï+Á%9ÁXõÀ`åèÀ¬ŒÀòÒeÀü©‰ÀÏ÷S¿‡©¿ð§†?ôý„@33ï@¬Aã¥AA“JAøSA—Aq=NAƒ0Aªñê@¢E–@ÇK÷?Zd¾L7¹?¤p¿¢E?`åP¿`åP=Nb?ð§N@-ª@ÙÊ@¬¢@½@“,@ƒÀ>w¾¾¬\@®G…@œÄ @žï“@î|A-î@Å Ô@œÄ¬@Tã­@É@VÊ@F¶Ó?®ç?Õxé½?5?Ùη¾!°RÀ˜nÎÀP¯Àú~’ÀffÞÀ‡½Àã¥ÁôýüÀJ Á`åÁd;#Á‡QÁB`gÁ)\]Á¾Ÿ<Á“Á)\¿À+WÀ–C‹=²ß?sh©@ã¥@+‡n@ffÚ@)\ƒ@°rˆ?ZÀV¢ÀºIüÀøS ÁZd5Á°rÁ ×óÀVåÀÕxQÀ\²¿F¶3¿B`Õ?h‘%@?5¦@®Ã@F¶ß@…ã@D‹Œ@%1@Nb@%…@ázˆ@X?ÁÊá>òÒÍ¿ã¥{¿1Ü?ˡžþÔ@)\Ï?ÙΧ¿q=Š¿¼t3À#ÛIÀÁÊ1À‰AxÀTã ÀåТ>Ý$†?{&@b`@Ãõx@‹lG@sh?ü©±>•[ÀÏ÷“À+ÏÀð§®À¤pÁÀ¬¾Àî|³À+‡À />X9\@ºIä@!°ú@9´¤@-Ê@¸AÇKA®¿@®AÁÊA…1AVA%1A˜n6A×£lB¾aB¼tkBé&hB%†qBVtB1ˆBÛ9ƒBB`Bî|ˆB®Ç‡B¢Bs(“B{Ô™B,ŸB¦Û£BÕ¸¢B‡–£Bü)œBêšB¤0“B…k‘B…ëŠB“˜…BNâƒBš~Bw>ƒBuSŠB33‰Bþ”Bî¼’B1ˆ˜Bá:Bm¢BT£¨B¨†«Bôý±B¶³¯BJ̵B'±±B¾±B+Ç­Bž¯ªB)œ«B×ã¤BP¦B%ÆŸBV›BJ —B˜Bü©ŸBP ¥B}ÿ¥Bɶ¦BÉö©B‡V¦B‹¬¨B¦¤B'q¤B®‡ B7ÉœBœ„BËa™BÍ —B#›’BÍ ŒB…‰B}¿‹Bdû‡BL·BB?5’B#›“Bsh™B…«œB}¿œBXù¢Böè£B#[£BB œBX¹œBéf—Bm§–BøB+‡BºÉ‰BF¶„B'±ˆB¬œ‰B¯‚Bã¥|B¨BÑb€BƒÀsBoB´È`B‹ì`BRBq½JBÏwIB;_PBÑ"\Bã%dB1qB®ÇpBö(oBByBƒlBj¼fBÁJZB33PBÅ RBçûIBfæNB7‰OBô}MBZBÅ WBdBP hBh‘kBpBö¨iBã%vBÇËzBú>„BZd‚BL·Bã¥{BF¶rB+xBÝ$pBåPzB¤pzB94oBªñhB}¿\Bé&UBBSB}?XBfæcB‰ÁjB#[yB\{B3ó„B^º…BËaBo‹BÅ`B= –BP•Bw¾B–ƒBÏ÷†B“Ø‚B¢EwB«nBVbB¾ŸWB¯IB{”MBþTDB}¿MB!°CBTãJB1ˆCBsh5B`ewBÉözBNb„B7‰ŠB…‡B°òŠB-²„BòRzBË!vBu“jB,sBP pB´ÈgB®Ç\BÖ_BìÑ[BNbNBÇËMBøÓLB'±ZBªñ]BmghBžïfBZoBmç÷Àú~²Ào3ÀR¸>?òÒ-@-ª@ÇK“@L7A@q= ¿Ï÷³¿Å œÀq=ÂÀ?5Áƒ"ÁòÒ)Á•=ÁÛùÁÕxÉÀƒÀ®À…ëÀX9ÀJ *À;ßo¿PWÀD‹ Àö(DÀR¸>¿^ºÀ §À)\ÓÀ)\ËÀ33‡ÀZœÀ+ÀPGÀœÄ¤À¬ÂÀ/Á‹l1ÁƒbÁªñpÁ KÁö(RÁòÒÁžïÿÀ×£”Àã¥KÀÙξ•>‡@®G©@33§@7‰Á?sh?ÇK7ÀåÐŽÀÝ$Á¤p+Á-DÁË¡wÁoŽÁ!°zÁ®{Á¸GÁZZÁ\<ÁNb:ÁòÒuÁF¶yÁj‰ÁåÐ~ÁÇKˆÁøSgÁh‘OÁ+‡Á\ÞÀB`ÁÀºIÀff¦?˜nâ?h‘@…ë@¤p¿ +ÀázÄÀºÀƒÀîÀff*ÁþÔ6Á;ß#Á¬NÁP{ÁL7oÁjPÁÁøSÁÍ̬À¶ó©À/ÝÀ9´˜Àö(Á;ßÇÀ¬ÁžïÿÀú~(Á-²ÁµÀ²gÀL7i¿sh?Ãõ@w¾¿@°rAÅ :ApAOAøS5A?5î@í@…ë‘@¤p©@ƒ0@þÔ(@w¾ÿ?ffæ?•K@jØ@¸A¢E8A¶ó9Ad;MAmçgA®GkAff“AÕxžAßOµA—ªAË¡ÃAHáÌAHáâAôýÎAÅ áAXÙA…ÄAshÈA33«AP AøSAZnA®‹A¾Ÿ¤A ×¶A/Ý·A ÇA…²Aî|ºAÁÊ­A¨Æ¨AJ ŸAÙÎ’AZƒAåÐZAX1A‹lA#Û¡@çû @ÇK@¼t‡@%ANbAbLAÙdAyéˆAþÔ€A´ÈAÙAX“Að§ˆAÅ \Aö(&AÉvATãA¨Æÿ@®Gé@+÷@¶óÕ@'1A¨Æ Aš™@ƒ´@ã¥Ï@}?e@B`Å?+¾¤pÀ ׇÀyéæÀã¥%Á00î|iAÝ$TA`åHA•[AºI>AÑ"eAßOuA= UAB`SAF¶aA°rhAPƒAyéTA¬lA= MAÏ÷uAX9™A¬A¤p‡AyévA33kAR¸2A= Aä@Ûù~@%¡?‘í¬¿-²½¿?5vÀ'1Àáz¤?(@-²µ@ÙÎÃ@¬Æ@¬AVA¢EA!°ö@33‹@‘í?+‡6¿‡‰ÀffºÀB`Áé&1Á{Áš™5Á¬ÁÛùDÁ\vÁHálÁ AÁ{Áî|ëÀV’À• ÀÉvî¿+‡Ö?Tã¥=˜nÒ?ƒÀš@¨Æë@'1AœÄ*A×£&ANbZA…ëcA/Ý*A+‡ A/Ý @= W@9´H?w¾ß¾žï'>d;_¿= ×?ÓMB?Nb@ìQø?þÔ”@D‹Ä@Å à@V–@j¼@X9„?j¼T¿ÓMâ¿-²ý?D‹$@¶óý¼‰AÐ?ôý @œÄ€@#Ûy@¬:@×£X@–C·@Nb@–CË¿‘íü¾B`%À¸õ¿ö(DÀZd³Àq=Á ×ÿÀçû¥À ßÀ…ë½À“Ásh½Àö(ÁøSçÀF¶ Á ;Á°rFÁj¼>Á^º)ÁÏ÷Á¢EÆÀR¸nÀ!°2¿ü©¡?žï›@Ãõ¸@Õx¡@ÙÎ÷@{ª@ã¥@R¸¿\zÀþÔèÀþÔÁìQÁ/ÝÁìQÁ^ºåÀ%aÀÙη¿¦›$¿sh@ü©Á?×£”@1 @ã¥ß@ ××@¨Æ“@Õx @B`…¿ã¥Û?`å@m绿ôýÀ#ÛY¿q=ª¿åÐ’?P½ö(l@ffv@V?/Ý?‡¹¿J Ò¿ƒ`¿…ÀTãÕ¿h‘Í?øS³?-²‰@Tãµ@sh­@¬Š@ÓM²?–Ck?òÒ5Àw¾£À˜nîÀî|ŸÀ1ÔÀ®—À™ÀþÔÈ¿Ï÷S?9´€@jø@ý@mç§@åÐÆ@ö(AÕx AF¶»@\A®GÕ@Ë¡ AHáANbA´ÈAfæƒB#›Bð'†B‰ÁB¶³†B7‰„B¢Å‹B ‘Bƒ@‘B=ʘB™B¶3žBÁŠ BD ¦B‡–¬BHá°BþT¯B^ú±B¸^«BÉöªB¼4¤Bj¡BZä›BÙΖB‡•B¤pB“B„™BbPšB“X¡B%¤Bçû©BÑ"®BJ̳BoRºBwþ¸BÛy½B‡–ºB¼tÁB¶óÁBoRÄBÅà½B#›ÀBV¿BÀ¸B ·B°r°BÛy¬Bb©Bž/¥B?µ©BVްBç;µBB`·BË!½Bdû¸BdûºBj|¶BNb´Bü)°B¬B‰¬B“ئB7 ¦Bç; Bò’™BBà”B+—B¨Æ•By©›Báú™B‘­ B)\¤B˜ªBJL¬Báz°B°²´Bd»·BÑb¶BTã®B¬¬Báz§BÏ7¨B㥡B‘íœBúþ™Bì•BßOšBoR™BÅ ’B%B¬Ü‘B¢ÅBç{ˆBsh†BåÐ~BáúyB)\nBƒÀjB¬dBw>nB?µxB‚BH¡ˆB‹BL·‰BN¢ŒBj¼‡B´ÈƒBd»yBÏwrB#[sBô}gB¢ÅiB—fB¶saBË!oB¬pBX9Bƒ‚BÃu…Bl‰B˜n†B¼´ŒB šBž/”B¼´‘B!°ŽBÂŒBÏ·ˆBÕ¸ŒB šˆBœ‹B%†ˆB#‚BZd€Bd»tBÍLhBú~hBÏwpB€~Bœ‚B/‰BéfŒBmç“B“X—BÃ5žB¨ÆŸBôý¤B`¥£B°2¥B5žBÑ"›B,”B®ÇBÇ‹‰Bº‰„B“˜{B„wB)ÜjBTãmBshcBìQlBçûbBjD‹¼¿ôý˜ÀÁÊ­À¬ÂÀþÔŒÀºI¨ÀÙ&ÀffšÀjÄÀ–CÁ?5@Á¬\Á¶ó{Á\xÁ ×aÁ= iÁsh1Á‹l7Á®ÁD‹Á^ºµÀD‹4Àú~ê¿ÁÊ!¿j¼ À-:Àmçû¿^º…Àyé®Àw¾ÁœÄ0ÁôýFÁ“vÁÛù‘Áú~€Á¶óÁ×£FÁD‹PÁff.ÁV-Á ×eÁ¦›|ÁTã‡Á¬„Á¨ÆŒÁøSsÁ/WÁ¬ÁX9äÀb À'1è¿h‘­?-ò?ôýŒ@{î?²ï¿VÀƒÀ®À¾Ÿ–Àš™ÙÀ‡ÁÕx/ÁìQÁo7ÁR¸hÁ}?WÁu“XÁZdÁ?5ÁÙ¶ÀVÍÀ-:ÀåкÀ-² ÁÓMÖÀj¼ ÁÕxåÀƒÁL7ÝÀžïWÀ¬"Àb˜>°rÈ?ÇK‹@…ëí@ìQA×£BA¾ŸxATãYAþÔHAƒÀAyéA•³@}?½@R¸n@Ñ"û?F¶3@ Ë?q=B@¬Ö@;ß Ah‘7A%9Að§XAd;cAo{A¢EšAJ •AÇK³A‡±AjÂAÃõÆAÁÊÚA%ÒAã¥âA)\ÛA…ëËAVÉA ²A/ݽA9´£AÃõ™A㥪Aš™¾AªñÄAºIÂAÇKËAÕx±Ash¼A³AªAR¸¦Að§—A•‡A¦›fAshAAR¸A!°¶@Ù.@Ñ"‹@V²@33AmçAVA•kA¾Ÿ‰A AË¡ŽA—AìQ—A²ŠA—dA®-AHáA-AÏ÷A¤pá@ð§æ@Ô@–CAƒAffš@°r”@%Ñ@Ûùv@TãÅ?¶óý¾7‰YÀð§¶ÀjÁ7‰GÁ00sh=A—4Aö($A}?AÏ÷û@ÇK/A®GIATãA?5Aú~"AoAo;A®AÕx;A'1 Aš™AœÄTA®GQAV`AÃõ8A5^*AåÐæ@ ×·@ìQ€@33s?¤pý¿-²‘ÀffŽÀjàÀ²ŸÀshÁ¿î|ÿ¾¼tó?¨ÆS@Õx@/©@ÉvN@øS{@!°R@ +?¬JÀË¡ÀøS÷ÀåÐÁj(ÁTãKÁ'1<Ád;[Á5^&ÁÃõÁ‰AÁh‘QÁR¸dÁßO1Á"ÁÃõèÀo«À)\¯Àsh À…ëYÀHếL7©?yéš@}?½@)\A…ç@ßO!A33!A…ëÍ@ff²@¼t @;ßÏ>ÓMÀ/ÝTÀÓM¿ÍÌTÀP‡¿9´0ÀVý¿T㵿R¸^?sh9@#Û…@@Tãµ?Õx!À+ÀNb¨Àu“È¿1ì¾5^ZÀ ÿ¿jÜ? ›?`å0@‹lg?}?•?¶óí?9´ @–CCÀffÀ/ÝlÀÁÊ•ÀË¡±À% ÁTã-Á•Á+÷ÀœÄÁ¼tÁ´È<Á5^ÁþÔ"Á“ ÁNbÁZPÁSÁ¸cÁ-FÁ?ÁÁ'1ÄÀ%AÀJ ‚¿Ñ"#@ªñ*@ @b°@Tãe@‹lç>ßO ÀìQ¨ÀVÁJ ÁTã-ÁÇKÁÂÁÀ¬¾À ÀD‹ ?ƒÀÊ?Ñ"£@•«@î|Ï@‡Í@!°æ@¼tç@Ñ"{@= Ç?ú~j?Õxa@ƒ”@9´¨?—@bØ>j¼´>/%@q=Ú?ªñ†@^º9@Å ¿…«¿/ÝtÀ5^®ÀX‘ÀƒÀ–ÀÓM’À/=¿#Û¹¿mçË?㥠@h‘e@+‡V@¼t½h‘­>Ï÷CÀjˆÀ¸ÑÀZœÀu“äÀþÔØÀ¦›ÐÀUÀ%á¿®×?Nb¤@Ù¶@\J@ð§†@‘íø@“ä@ú~Ž@VÊ@ßO•@“è@7‰¹@ôýä@é&¹@xB}¿mBÁÊvBÃõqBî||BÍÌ}B`%†Bþ”ŠBw¾‡BËaŽB\ŽBéf•BÙΙBZäB)¢Bð§©B-r©Bîü©B®¢BE B`e™B®—B=Š‘B®GŒB‘íŠB%Æ…BJLŠB™BÇ ‘B-2–BÇ ˜BNâžB!°£BªBÅ ±B„³Bff¶BÑ"±B3s¶BÏ·´BöB…+³Béæ±B„°B®G©B…«¨B…ë¡B¤p BÇ‹ Bb Byi§BبB–©B­B?u°BÉv¬Bê¯Bò’©Bç;¨BFv¤Bº‰ BÅ` B…œB1È›B¦–B‘B‹,ŒBd{‹B¤0‰B;_BË!B+”B×B=JžBÛ¹ŸB®¤B\Ï©B´H¬BšY¬Bî<¥BbТB‘­žBøSB!0—Báz‘B˜BÇ ŠBffŒBº B‹l‡BÄ‚Bd»ƒBT#‚Bq=vBÙÎyBVoB¶sjBòÒ[Bš™RBݤPB¶sYBÏweB{”mBÉözBÂ~B Z€B,‚B vB94wBêhBR¸eBobB}¿\BÅ _BÚdB{bB¤ðnBô}iB+uBî|zBƒ{Bq½€B zBN¢ƒBö¨„B!0ŒBÅà‰B‡B#Û…BVN‚BN"†B“X‚BF6†B„†BTã€BžoyB–ÃpB;ßhBÃõiB#[qBd»|B×cBÃ5ˆBáz‰BHáBÇ “BËá˜B´H–Bò’šBnŸBÏ7¢BºI›By©™BVΓBÏ7B/]†BþBœDsBiBú~\BjAžïA}?í@5^A{Æ@ZdŸ@X‘@5^R@ö(È@7‰¥@b¸?Ù@Ï÷s@‡©?¶óý¿o{À}?ÙÀ—ÁþÔLÁR¸zÁ00h‘‡A²{AÏ÷eAsh]AÕx=AÕxcA/ÝxAPEAþÔ>A®GA`åVAázlAžï5AHáPAìQAË¡3AÝ$lA•aA×£^AÙRA-BA¼tAô@ÁÊÑ@#ÛA@w¾??yéÀÉvFÀÑ"³À¶óÀÛù~¾J ¾ìQ@Ï÷3@é&á?-²™@ÓM"@åÐB@¸å?Ñ"›¿;ߟÀTãµÀÅ Á•!Ásh'Á¸KÁ'1,Á‘íJÁ–CÁÏ÷Á+‡:Áj¼hÁË¡QÁ)\+Á1&ÁZØÀ¬¸Àö(¬À^ºÀ= /Àü©q>Ï÷#@/ÝÄ@w¾Û@ÇK'AX9*A7‰_AƒÀ`AÍÌ2A‰AAÝ$Â@¾Ÿ*@çû ¿¨Æ+À®×¿!°:À…«¿žï7À•ã¿R¸¿%Ñ?ÛùF@yéŽ@ÙÎ@j¼\@î|ÿ>Nb°¿ÙÞ¿Ù@X9L@Zdë?yév@¸Ù@ÓMª@;ß«@š™y@ÙÎw@…³@jÈ@¨ÆÛ? ?Nb€¿!°²¿þÔè¿#Û±À‘íÁÙÎ×Àö(˜ÀD‹ÐÀ9´ÈÀÓMîÀTãµÀVæÀü©áÀÏ÷Á33?Á–COÁö(8Á¸-Á9´Á{²À/Ý„Àƒ¿Ý$Æ?w¾§@‘í¬@/Ý|@7‰Ù@L7…@d;¿?‡é¿¢E–À%Á×£ÁžïGÁGÁL7+Á“$ÁNbØÀþÔ¨ÀshIÀB`¥¿X‰¿Ãõ(@}?@ªñŠ@—²@×£H@+‡@øS㽬Ú>çû @bx¿/Ýô¿ôý,ÀœÄ8À%>B`å»jD@ð§>@Ñ"›>ÁÊ¡½‡ ÀÂÀX9Ä¿J ²¿ÁÊ¿¬L@1,@ºI¤@Ë¡‘@!°¢@bx@j¼”?sh¾B`À ׯÀu“øÀî|«ÀòÒùÀF¶»ÀD‹¸À= ÀVÎ>d;O@š™Ý@øSAffº@˜nÖ@–C%A5^A¨Æï@ìQA  ANbA®GA¾Ÿ Aö(AHáoB¤ðlBzB;_uBf¦€BW‚Büé‡BÁ ŒBF6ŠB/‘BF¶‘B‹l—BÙΘBþTžBø“¢BþÔ¨B/§BƒÀ«Bœ„¤B“X£B­œBò›B¬œ”B¸žBkŒBü©†BëŠBþ”‘BÙB+Ç•B#›—BáúžBÑâ£BÏ7ªBɶ°B5^³B¬Ü´Bþ°B‚³Bwþ¯BÙŽ±B¯«BZ¤ªB-2«BÑâ¤B¸¥BÅàŸBbПBš™¡B¢£Bî|©B«B¶ó©BÇK¯Bò’­BÍL¬Bm¬BRø¥BÇK¥BJLžB\›B¨ŸB+BßšBåP—B!°‘BÕxŽBÑ¢BêŠBXBƒ€B’Bîü“BJLšBX¹B¢B´È¨B,­Bk®BFö§BÁ¦B'ñ B3sžBÉö—Bl“B+BZä‰BðçŒBúþŒB@†BÚBmç„B¬\„B5^{B¦›wBfæjB×£kB¬^B°rZBÅ TBßÏYBTcfB!°jB×£zB¢EyBÓM}Bš™‚B–CwBÙÎwB²kB;ßdBÕxgB%†^Bƒ@eBR8fBßÏ^BÛykB‘ígB®uBo’xB‘í}B}ÿ€Bd»|BW„BÓM…BhBÇ ŽBœÄŒBj¼‹Bô}†B Z‰B¶s…BüéˆB*ŒBZ¤†BüiˆB}?‚BTã„Bœ„B?õ†Bu“ˆB‰ÁBÔBPM•BẛBºI›B7I B ZžB¨¢B33¦BH¡©Bª1¤Bž¯ŸBë›B\O•B¢EŽB}?ŠB´È‚Bªñ|BìQnB33qBZcBL7fBmçWByé]BRBÙNIB33OB)\UBƒaBœDfBvB`%‚Bö(„B-òŠBq=‹Bžï‘Bò–BNb”B+G“B¾ßBÕx‡B¸Þ…BìQ€B¨F…B!pƒBÓM‚B¤ðwB¨ÆuBBsBPhBD‹aB!0`BÁÊkBblBXtB#ÛiB)\qBX9„Á¬PÁË¡5Á®GùÀåоÀ‡IÀÙΧÀé&½À\Á®G)ÁX_Áú~ÁázÁ}? ÁË¡¤Á‘í±Áw¾¥ÁÕxŽÁƒÁTãKÁ‘í0Áƒ>ÁÛù Á?5<Á–C%ÁJ *Á…ëÁÙ*Á–CWÁo{Á7‰€ÁôýtÁ¦›‚ÁÕxcÁÓMÁÙ‘Á–C¨ÁL7¾Á^ºÖÁJ æÁJ æÁ¾ŸÓÁî|ÊÁ!°®Á-²ŸÁR¸†Á¸kÁV4ÁÅ Áôý°À7‰±À•ÿÀ8ÁºIBÁøSÁ7‰ˆÁP¥Á9´´Áã¥ÈÁ-²ÙÁ çÁßOÔÁ ÎÁ'1´ÁÕx½Á-©Á¾Ÿ©ÁƒÀÅÁD‹ÊÁ‘í×Á+‡ÅÁ¸ÔÁ´ÈÆÁÓMÁÁ7‰§Á‰AÁÛùŠÁshmÁTã5Á #ÁƒÀÞÀ)\ Áyé@Á}?=ÁçûmÁw¾cÁ^ºyÁ—˜ÁªñÁ9´‘Á%§ÁB`¼Á‘í«Á…¥Á…ë†Áyé|Á®=Áj0Á¬ðÀ × ÁbHÁJ JÁÕxÁD‹‚Á33ŠÁìQhÁw¾9ÁßO%Á'1àÀåТÀžï׿-Â?¶ó‰@Ñ"û@1(AAÁÊÙ@+‡V@9´ø?ff¦¿ƒ¿)\ÀZ¬À ×ÇÀã¥×À•·Àð§À—n>-²-@ _@–C“@Ë¡É@Á@PAøS!A–C]AÓMlA%“AffšAÇKªA®A‡¡A‘Aš™ˆAshqA+;A AƒÈ@-:@˜nž@ÛùAú~&A®-AÍÌ`AVFAR¸bAÏ÷aAÉvhA/kA= [ATã1AZdAbÐ@D‹œ@j¼Ä?áz”¿žï×?ÕxÉ?w¾£@Ý$ž@‹l AºIA¾Ÿ(A…A×£Aé&A¢EAázÀ@¤pM@Zdû>øSƒ¿¸%?þÔx¾ ×£¾L7‰¿5^ª¿V@¬ @´ÈÆ¿7‰¿mçÛ?–Ck¿1|À‡ÅÀ¨ÆÁD‹JÁyévÁJ —Á0033‰AshˆAshiAªñlAÛùTA¢E€AázA…SAázRA{pA´ÈjA‰A…A×£hA-²wAš™SAü©qA’A5^ŽAÉvŒA-²sAìQrA´È:A¢EA= Ayé–@Ûù@Õx©¾¾ŸZ¿`å0ÀÏ÷ƒ¿Ñ"#@Ý$>@5^Æ@Õxù@žïï@j&Aî| Aî| AÃõø@˜nš@çûi?Nbp¿'1ŒÀ¶ó½ÀºIÜÀ33Á®ïÀÏ÷çÀL7‰À²“ÀJ rÀ{âÀ…ëÁL7±ÀX±À^ºÀé&¿L7 ¿@+‡6?;ßw@Ë¡á@ÍÌAyé0AÉv`A•YAžïˆA^ºˆA¬ZAÂIA ×Ah‘Õ@HáJ@ÍÌÌ?P@-‚?XI@˜n@fff@Tãm@ƒ¸@VÞ@q=â@L7±@‰AÀ@Ûù6@Z”?…ë1?!°Š@+‡¶@^ºa@•³@¬ A/Ýä@/Ù@Õx¹@{Â@ü©õ@þÔÐ@ W@¼ts@X9¤?F¶³?q=Š>D‹4À¦›¬À{žÀú~RÀo§Àš™YÀd;³ÀÉv–ÀJ æÀºI¨À“üÀ¼tÁ‹l9Áj¼$Á Áî|ëÀff¢À°r@À´Èö>B`@Ù¾@}?¡@#Ûy@^ºÝ@{–@= ×?B`µ¿¨ÆsÀ‡éÀo ÁÏ÷Á#ÛÁF¶»ÀøSßÀ+‡FÀffÆ¿mçû½¾Ÿ*@ð§@%@^ºy@\Ž@Zd[@V?´È6¿çûÀF¶ó>¨ÆË?F¶“¿33¿Z$¿`倿î|ÿ?çûI?°r@shy@bˆ?P‡? K¿-²¾-2¾#Û‰¿-²]?çûi@ƒÀR@òÒ@㥯@¬Ò@ƒÀ¦@Ë¡@-r?PÀb À{öÀ•»Àö(Á¢EÚÀ1¨À!°Ò¿¼tƒ?žïw@u“ü@ ×A= Û@'1ü@øS3AázA/ý@‰A AÉv AÍÌ,AÁÊ'AR¸8AP9A‹ìzB°rtB¨F€Bo’|BJ̃BT#ƒB‹¬ŠBÃuB¤ð‹B¶³‘BþBNb–BTcšBåОBøS¤BÑ"ªB!°¦B ªB‰Á¢BÅ ¢BuÓœB¬\šBî•BžoŽBšŒB ׆B®‹B¸^’BHá‘BZ$˜BßÏšB{T¡B/¥BšY«B`e±B^º²B^:¸B«³Bîü¸B Z·Bº ¹Bš™³B{±Bç;°BL÷¨BƒÀ©Bž¯¤Bh‘¤BR¸¤B#›¥B33­B-2®B9ô«Bü)°Bsè²B Ú®B š°B%ƪB\©BÍ ¤BBðg¡BmœB“šBì•BÕxB…ë‹B^z‹Bj‰B1HB¤ðB®—BB —BFöB°ò Bî<¦B«BX¯BE±BåPªB=Ê©BT#£BšY Báú˜BXy•B;ß‘B@‹B׎B`¥ŽBì‰B´ÈƒBú~„B-rƒB„yBúþ|BÏ÷nBX¹oBaBq=]B\PBX¹ZBw¾fBázoB}?~B•B°2€BƒB„yBj¼uB¶ójBF6hBBjBNâeBòRiBVŽaB)ÜWBÑ"dBB`gB#[uB7 vBwþ€BÇK‚Bê}BVŽ…B㥇BF¶ŽBÇËŽBÑ¢ByéŒB ZˆBü©ŠBœD†BuÓˆBXùŠBẃB¬œ„BøSB¼4B‡VƒB7‰‰B3sBï‘B'1˜Bì˜B5žB°rœBV Bj|žBõ£B¾ß¨B¦[©Bžï¤BÍ ¢B¤0žBê–BÇK’BšÙB°2†BƒBZäwB¬uB-²gB¤ðgB^:\B`å^BË¡QBîüHBòRSBåPVBáúcB¢EjBð'yB¦ƒBº‰†BTcBåPBª±’BHa•Béæ“BÓM’BŽB‡VˆB¬\†B‡B®Ç…B%…B ׃BD zB!0zBÉvuB¯hBªñeB¶sbB‰ÁoBÉönBÍLyB.rB'1xBôý‚ÁÁÊMÁôý>Á…Á)\¿ÀyéFÀö(\À‡©Àu“ÁÇK/Áé&mÁÃõxÁ%“Á‰A¬Ásh¸ÁåÐÇÁ»ÁÙΞÁÁÊ“ÁÓMxÁƒLÁX9ZÁff:ÁTãKÁþÔ@ÁìQDÁ“2ÁÝ$NÁV€ÁÁÊŒÁ!°‘ÁÁÊÁÅ ‡ÁçûqÁ—‡Á¶ó˜ÁB`©ÁX9ÂÁ´ÈÔÁmçæÁ…ãÁmçÓÁÁÊÔÁœÄ¹Á ¯Á®G“Á•{Á‹l?ÁZdÁ}?±À¶ó½ÀœÄÁ?5:ÁshWÁ5^‰ÁÁö(¨Áyé¼Á33ÒÁ äÁÙñÁƒàÁã¥áÁÏ÷ÄÁ+ÄÁÙήÁ1ªÁ= ÇÁ{ÌÁú~ÝÁ%ÛÁš™ãÁš™ØÁ¨ÆÌÁ‰A±ÁÙŸÁö(—ÁNbzÁ9´DÁÙ0ÁR¸þÀoÁ}?SÁh‘]Á#Û†ÁÇKƒÁ}?ÁÍ̧ÁZ²Áôý¡ÁÏ÷¯ÁJ ÈÁßOºÁƒÀ®Á%‘Á‹lˆÁÂQÁffPÁ%Á1PÁøS}ÁÉvtÁ-’ÁVŒÁjœÁ†Á®GQÁ—BÁé&Á-²éÀJ ŽÀ‡¿Évþ?Õx¥@Nbì@Õx•@¬‚@Ë¡?d;¿Â‰À‰AhÀh‘ÙÀ¬ØÀºIôÀZüÀ–CóÀw¾wÀ?5οÝ$¦?h‘Í?j¼L@“¨@ªñ–@ÙA¤pAºIRA5^dA“ŽA—Ažï¤AÝ$ŒAyé”A ƒAbPAZ&AÁÊÕ@øSc@Z”?‘í¬¿33ó>¤p=@ÓM¶@u“ü@…ë/AÝ$ A!°PA#ÛKAö(NA#ÛQAJ FAR¸Aq=ö@33@ázô?+÷¿VeÀ/Ýd¿Há:¿ßOE@•{@Zdç@…ëõ@® A{ê@R¸Ú@R¸A;ßû@ ׯ@ßO@þÔX¿…ëYÀ)\Ÿ¿‰AÀ1¬¿°rÀ #ÀZ´?)\/?}?=À¬Ü¿Ý$>Nb@À´ÈÂÀÉvîÀçû)ÁÏ÷UÁÏ÷‚ÁoŸÁ00j¼ŽA…‘A×£AV‘AøSyAÂ’AÅ •A¢EnA¾ŸrA9´rA?5‚AÛù|ATãKAƒHAªñA×£*AeA1hA¸A-²gAÝ$lA)\7AåÐ*A\ A33Ç@®_@¬z?9´?š™ÀHáÊ¿!°²??5@}?@u“Ô@þÔ¬@ÓMÎ@¤pE@ìQ@ÓMb>ffÀÁʹÀw¾ËÀ¾ŸÁú~ÁZdÁú~ÁÙÁÅ èÀq=bÀU¿^ºÉ¿ºI¤ÀÕx¡ÀD‹tÀ!°®ÀÇKgÀJ ŠÀÙΛÀòÒmÀºIŒÀáz Àáz¤?òÒ‰@Ùâ@œÄ"AœÄ0A%cAF¶]AƒÀ$AåÐAb¨@/Ýä?7‰Á¾%!Àq=*¿¥¿+‡¦?5^?XY@ÍÌ@Õxé@ö(Aªñî@!°º@9´œ@Há@ü©±>d;ß¿ÍÌü?¸@33@XQ@Í@\Ö@ZdAyéþ@ÃõAÉv"A9´*A-¶@´ÈÞ@shy@= O@1Ü?ÁÊá¿\žÀX)Àôý4¿¦›ô¿ßO=œÄпÙÎ>…뱿ÙÎ÷½/ÀZd›À®GÑÀ¡À¬´Àü©iÀÂu¿—î>„@Ù¢@PA¦›ì@¶óÝ@…ëAÙÎÿ@X©@ ×Ã?-²}¿q=–ÀƒÀ¦ÀíÀ“¨Àã¥Àmç3À¦›?u“È?ªñ*@9´Œ@!°Z@{º@Ñ"ƒ@•Ó@'1´@š™…@ ¿?5^ú¿¦›Ä<'1˜?NbP¿j<=ð§F?-"@ÁÊÁ@¾Ÿž@d;AAÃõÈ@;ßã@çû¡@ªñ®@ö(¨@@Õ@¬AZ A/+A?52AX9"AR¸A5^š@u“x@X9´=F¶#ÀÅ ¤À7‰aÀÅ ¸À×£hÀƒÀÚ¿mçÛ?î|Ÿ@‡ù@Ë¡9AÑ"OA/Açû3A!°tA-pAVGA%sAìQJAw¾_A…CAôý\A1HA}ÿB´ŒBP’B;ŸŽBö¨‘B”BšœBd;žB­œBÓ £B^º¢BB#Û©BZ¯BÙ´BÓͺB¹Bªq»BÕø´B³B{T¬B-2¨B{Ô¡B9´›B%FšBs(•B5˜BRxŸB#[žBD‹¤B©B?õ¯Búþ´BF6»B‰AÂBw~ÃBÍLÇBªÃBL÷ÈB•ÃBãåÃBy)¾BÛ9¾B}?¼BÇ˵Bqý´BÅ ­Bœ„©BD˪BÅ`«BHa°BšY³B%F³B!0ºBÏ÷ºB/¼BX¹¼B\O¶Bã%·B —²B°²¯B±B}ÿ¬B«Bžo§B=J¢BìÑžB — BÑâBDK£BÓ¡Bk¥B#[§BÇˬBô}¯Bþ”´B^:ºB×¼B²Ý½Bb¶B9´³B‰®B{T­B¶ó¦BÄ£BòŸB;ß™Bw~œBoœB%˜B^z’Bd»•B–B^zŽBwþBÕ‡Bš†Bƒ}BÁÊxB/ÝoBJŒxB‰BÓM†B¬ÜŒB5žŒBs(‹BÕøŒB9ô†B®GƒB+‡{B‡vBD vBé¦mB+‡wB94rBÉöhBÂvBj¼rB¾€BJŒBX9‡BìŠBÙΉBô=‘Bë”B㥛B—šB ×™Bw>—B‡Ö‘B`¥’B×ãBd{BÄŽB/‰BË¡ˆBE„Bu“B²ƒBB ŠB/]B¾_—BÅ BÕŸBØ¥BÇ‹¥BÙΫBX§B@¨BÓ«B7ɰB!p­B‘­§B}£BJÌ›B“X–BZ$”B —ŒBB‰BZäB°r€B°ruBÓÍsB-kBtBázjB–Ã`BNbhBBàiB)ÜwBƒ@}BÛ¹…B= ‹Bq½ŒBú>“B W’B{—B%†šBÕøšBÏ÷™Bãe”BBB`B%ÆŒB,’BáúBœÄŽBYˆBÇ ŠB‹l‰B}‚B°ò€B°r€B^:…B¯‡Bž/‹B¦›ˆBÂŒB1ªÁ/”ÁåЂÁ SÁ/Ý,Áyé ÁÍÌÁ^ºÁÉvRÁ#ÛwÁ¼tšÁ#ÛªÁßO½Áü©ÑÁP×Á‰AæÁ)\äÁTãÆÁÙ½Á;ߢÁ;ß’ÁžïŽÁ®G€Á/ÝŠÁ-²eÁj¼nÁHÁ ×]Áü©‚Á-²‘ÁyéšÁÁÊÁ}?—ÁœÄ‹Á…ë“ÁË¡°Á ×¹ÁNbÒÁXßÁü©èÁ‰AÚÁÛùÄÁ%±Á®G–Á+‡‹Á—ZÁjXÁmç%ÁoÁ‘íÜÀ ƒÀƒŒÀ–CÁ}? ÁyéBÁö(vÁ…ë˜Á‰AªÁ®GÇÁ)\ßÁ˜nõÁ'1êÁôýóÁ9´àÁu“áÁ= ÍÁmçÒÁ‹lðÁVóÁ•ÂXïÁmçðÁË¡ØÁbÉÁZ°ÁƒšÁÏ÷˜Á‹l{ÁXOÁ¤pMÁR¸(ÁìQBÁyézÁÛù‚Á“žÁff‘ÁÅ žÁî|¶Áî|ÄÁq=¶Áú~ÅÁR¸ÝÁ1ÍÁ+ÏÁ…³Áî| ÁÙ΄Á/݉Á^ºYÁ¸}Á–C•ÁË¡Á¾Ÿ¥Áö(šÁ¼t¤Á ”ÁZdyÁ`åhÁœÄ4ÁœÄÁq=ÆÀ ?À…둾…@ü©±@žïg@ü© @ff†¿´È.ÀÝ$¾À)\ÇÀu“Á9´"Áb.Á9´2Á-²#Á!°ÊÀ/ÝtÀÙÎw¿Ûù~¿mç{>ÃõÈ?À?òÒ©@ÛùÚ@çû!Aj¼AÍÌTAî|mAÕx†A;ßiAu“nAw¾KAjAð§A`å¬@]@š™Ù> × À\²¿Â?ÇKo@Nb°@{Aázø@¶óA¶ó A‘íAÅ A?5A¤på@o“@¬Ì?7‰Á¿7‰‘Àü©éÀVÆÀ•Àu¿j¼„¿)\/@ÕxY@¡@Ãõh@®«@J º@‡¡@ @ºIl¿F¶{Àš™µÀî|oÀƒ¤Àw¾«ÀÉv¢À#Û­ÀøSÀh‘5ÀB`ÕÀî|ëÀu“¬ÀƒøÀÂ%ÁÛù@ÁVrÁ)\‘ÁV«Á ÃÁ00Zd®Ash©AZ¥A“¥AÉv–AÃõ¬AÉv³A‡›AåЧA®ŸAj¢Ab¡AXˆA AtAZrAÓM”AÑ"‘ATã—A%A¬”A%sAé&iAh‘UA!°$A ÿ@ú~²@é&…@øSƒ?ff@+³@é&É@)\A`åA7‰å@Ñ"A¨ÆAü©A¨Æ¿@9´8@{N¿Tãõ¿¬ªÀ˜n²Àu“¸ÀHáÒÀºIÀÀªñÖÀ°rXÀX9¿¾ŸÚ¿çû©ÀÂåÀË¡uÀB`eÀB`e¿š™9¿ßO¿Háš?bˆ?…{@!°Ö@/Ý AÍÌ@AjtA¦›ƒAÑ" A'1–A-²A´ÈVA?5,A A°r˜@Zd#@‘í|@¢E@„@œÄh@ÇK³@¼t¿@D‹ü@bAV)ANbAP#AF¶Û@D‹¤@Ï÷c@R¸æ@‰AA¸ñ@/AºILA‰A>A%MAš™=A¸EA‰AZA/QAj¼ø@7‰A…×@œÄÐ@ “@ÇKÇ?-¿‡Ù>Z<@ÍÌ @š™@ú~*?åÐ:@òÒ%@;ß'@ªñ’?h‘-¿VnÀôýÔ¿…ë!À¬\¿Xé?yé^@ºIè@d;ï@5^0A‘í,APAªñFAòÒA33ó@ÍÌ„@ƒð?¬ì¿XÀôýÄ¿ázt¿¤p@b(@/ݤ@Év¢@mç›@-Ê@…ë‰@Ùί@= @¢@!°†@}?E@V ?ã¥;Àh‘­¿é&?î|ï¿-²¿®G‘? @ázÀ@¦›ä@w¾)AºI@A×£A¦›AR¸î@²û@˜nú@°rü@#ÛA5^DA1FAshOAÉvVAºIPA 5Aú~A…¯@F¶@¼t“¿jˆÀú~ê¿TãmÀj¼”¿/Ý”?7‰™@ÍÌAçû'A}?cAœÄpAÃõZA)\uA®G™A#Û˜A㥉A –A‘í~Aq=A°rƒAA'1„A²ŽBìÑŠB`e‘B×ãB+—BÓM™B} B™¡BbÐB\¤B‡Ö¢Bº ªBÉv¬BÙŽ²BH!¶BTc½BLw¾B‹¬¾BNâ·BNâ´B‘­­BNâªBPM¤Bò’žB1ÈB®‡—Bú>œBZ¢Bî| B9´¥B\ϨBZä¯BÃuµB¼B ‚ÂBÃB?µÆBZdÀBJÌÃBHá¿BÁB^:¼BJ ºBmºB=ʳBÛù´BC®Bá:°B“®B°²®B“X¶Bº‰·Bf&ºB€»B+¾Bê¹BÅà»BòÒµBXy´B˜®Bå«Bj|¯B5Þ¬B쑬BÉv©B²]¤B¨†¢B^z£BuÓB´ˆ¡B5ž Bü©¤BË!¥Bf¦ªB¯­B^ú²B/¹BåмB94¿B¦¸B!pµBF¶¯B²¯BNâ¨BÕ£B#[ B¤°™BÁÊ›B5Þ›BÃu—B B‘BÕx“Bq½“B{”ŒBËáBTã†B!°‡Büé€Béf‚B ‚sBü©{B%ÆBl†BÁ‹BþTBÓ Bú¾BÙNŠB´H‰B‚Bwþ‚B …BÙB-²‡Bj|…Bü)€B ÚƒBÝ$„B¤ð‰Bú~ŠB®ÇBƒÀB×#BÝä–Bo’˜BüéŸBÕ B-²¢Bwþ¡B„œBüižBºI™B;Ÿ™BVœB´•B˜®”BU”Bs(•B¨›B•¢Bš¥B¬BÑ¢°B…ë±B¬œ¶B²BÚµBô½¯B²Ý¯Bq}²BÛy¸BB ¸B5Þ³B-r²Bß«BÓͨB¶3¦B}¿ŸBmçœB´È•BºÉ’BÕ8‹BX¹ˆBþT‚BðgƒBÛyyBqBݤ|BÍÌ€Bð§ˆBšŽB¢…•BšÙ›BjX鿚™•À¢EúÀ´ÈÁü©ÑÀ¦›üÀ= ëÀZdÁ²Á²ÀL7¡ÀTãÁffúÀ;ß«ÀÇKÿÀœÄ6ÁVÁ-ƒÁ9´Áyé´Áh‘ÐÁ00ã¥ÙAÃõÝA¬ÎAd;ÈAÏ÷°A)\¾AÛù¯A®G—A×£¥A£A+‡±A33­A}?ŸA…•A“pA-²]AÅ ‡A9´~AÁÊ”A#ÛA¤p˜AåЄAö(ƒAåÐ…Aé&YAázDAXA#Ûí@%­@)\¯@B`õ@Ùâ@òÒAÙA?5¦@ÓMÖ@+‡‚@`åœ@u“@q= ¿V‚ÀfÀ¸µÀNb°À?5fÀVŠÀã¥ë¿¬<¿+‡@33£?oã¿yéŠÀ™ÀÅ ˜ÀË¡À˜n’¿w¾¿¿ßO ¾¦›Ä?—>@´ÈÒ@œÄA…ëCAö(lAôý“Aî|šANb¹A¹AR¸¦AshŽA`ånA¢E6Ah‘Ad;›@9´¬@ÉvN@bˆ@ã¥@^@ú~®@ázA 'AþÔ.A¦›ÙÎ/À×£°¿ã¥›>Ház¿ÉvŽ?‘í@ÇK@ºIü@ƒ AÕx[A7‰…AÉvpAš™ŠAB`wAA1‹AòÒ—Að§¨Ayé³AßO°AºI¨A®G¡AìQŒAB`gAu“0AXõ@Z˜@¬Š?¬Ü¿…K?ºI >î|o@ð§Ö@åÐA¬TA?5RA¤p†AázA1‘AX™A7‰³Aq=½Aw¾´A{¿AL7°Aö(ÇA?5·AƒÈAd;»A‡V›Béf—Bð§œB^zšB¨ÆB¶³ BÍ §BhQ§Bwþ¤B‡ÖªB-ò©B/ݰB‹ì°B‘m¶B}¿¶Bž/½BRøÁB‡ÖÁBZd¼Bò’ºB´Byi®B²]¨B#› B¾_Byi–BÓM–BåP›B™B+ Bu“¥BÃu¬Bh‘²B;Ÿ¸B= ½BuÀB“XÁB/½Bø“¾By)¹BÁŠ·BuÓ²B\O­B#¬BR¸¥BHa¤B®¡B¡B ‚¥BÑb¦BuSªBÁ¥BìÑ£BB«BY­Bú~¯B`å±B`e¬B'1¯Bå«BÁJªB˜n­B —­B㥭BÃu«BZä¥B¼ô¦BJL©Bž/£B'q§BPÍ¢B¶³¥B{T£BøS¥B5©BÃõ«B¸^³Bª±µB‘-¹BÁгBÙNµBH¡°B+G¯Bwþ§BÕ£BÓÍžBÅ ˜B²šB^zœB{Ô˜BÏ7“B¾_•BÕx—B)ÜBÅ ”B\ŽBêB¬ˆB…B¾{BN¢‚B;Ÿ…B9ô‡B;Ÿ‹BB ˆB¾Ÿ„B¶s†Bff†Bsè€BË!|Bü©pBq½uB}¿nBÛùuB#[jBD‹^B1aB'±dBð'nBBàwBö(ƒB+‰Bö(ŒB ‚“B`å˜B+ B«Bª1 Bò’›B¬\”BÃ’Bm‹B= ‡B²]…BݤBö({BÙ΀B-²|BÇË„Bw¾‹B!0B¦Û—BFöœBÓM BÁ ¤BJL¥B§Bô½ BÑb¡Bb¢BTã¨BœÄ¤BÏ7 B¤0žBÍÌ—B‹ì’BVŽ“B3³B3óBÕ‹Bø‡BZdƒB9t‚Bã%|B}BÙÎqB‹loBVŽ}BºI~B\†B¸ŠB5ÞB“B‘Bݤ”B šB-òBƒÀŽBßOBwþBDKŒBX¹ˆBZ$ŽBÇ BhÑ–Bå™BVN™Bì‘Bò’BÏ7•BúþBVΊB+‡‹BãåB˜îB+”BJL‘BÏ·”B?5¬Á¸’Á €Á‹lIÁ;ß)ÁjôÀã¥Ámç'ÁôýZÁyéÁ/ÝžÁ ¬ÁœÄÆÁ#Û×ÁXáÁh‘ëÁ¼tåÁð§ÇÁ¼tÃÁu“¥Á¾Ÿ˜Á•˜ÁÅ †Áq=Áé&ƒÁòÒˆÁã¥sÁ¬ŒÁ¶ó¢Áü©®Á+‡¶ÁÇK­Á–C¶Áö(§ÁX9±ÁÛùÉÁÂÞÁÉv÷ÁÂ!°Â×£Â;ßëÁJ áÁ+‡ÃÁV¼ÁòÒÁ/ÝŠÁL7WÁu“HÁ¾ŸÁVþÀ×£Á;ßUÁZnÁßO”Áj¼£Á!°¿Á ×ÔÁ= íÁ Âmg¬ùÁF¶ÿÁË¡çÁéÁžïÓÁ•ØÁ¶óôÁD‹þÁÝ$ÂЃ@œÄýÁ-²ïÁ—ÕÁ¼t¿Á-»Á¸ ÁbˆÁ^º{ÁôýPÁÙÎkÁ–C“Á/ݘÁœÄ°Á¾Ÿ£Áyé³Á;ßÍÁ¶óÔÁZdÂÁL7ØÁL7óÁZdâÁHá×Á ½Á¨Æ©ÁÛùŠÁZd‡ÁÂYÁ¤pŒÁ—¡Áôý™ÁP´Ážï«ÁshÀÁ9´¬Á\Áü©ƒÁF¶]ÁþÔ@ÁZdÁ–C·Àî|Àd;Ÿ>j¼4@Tã?ƒÀš¿J ŽÀB`ÁÀshÁÂÁÛù2ÁB`7ÁNb<ÁbPÁÅ :ÁTãÁé&­ÀþÔ8À“DÀåÐ*ÀÑ"Ë¿V¿ÇK@‰A @J ¾@F¶ï@²-AXKAshaA!°0A;ß;A–CAj¼ä@?5ž@ÓMÂ?ÕxÀÝ$†Àü©ÕÀÇK›Àçû9ÀÁÊ¡¾Â@øS¯@”@¬à@¬Ò@5^ò@ffö@¸í@¡@œÄ@‹lg¿'18À¦›ÔÀú~Áú~ªÀÙΟÀ“¤¿¨Æk¿@/Ý$@¬„@Ù@jü?F¶;@ºI¼?yé&¿Ãõ`ÀD‹àÀmç÷ÀÝ$¾À¾ŸÒÀìQÈÀòÒÝÀmç×À°r@ÀX9LÀVÙÀw¾ÏÀ•ƒÀÓMÒÀºI$ÁB`EÁøSmÁ!°ŽÁƒ¥Áb½Á00q=»AÁÊÅAB`µAÍ̵A+‡™A;ߢAªñ–A-²yAË¡†A/oAw¾AƒÀtA®CAjDA7‰ A ×AÓM@A'1A–C3A%A ×?A- Aj¼0A?5NAƒÀ0AB`1A9´ø@ƒœ@ÇK@bH@¨Æ@¸%@sh1@\Ò?“„¿J ¢?q=Ê¿yé–¿ Àb€À\âÀmçëÀ Á…ë)ÁB` ÁÉvÁ¦›ØÀßOÑÀçûiÀu“Àé&µÀÃõÁƒÁ1 ÁÇKÁÃõÔÀ5^ÖÀh‘Àu“8ÀÃõ(¿/%@‹lw@Tãé@ƒAbXAVzAòÒ˜A¾ŸšA+‡Aé&kAü©;AåÐAyéª@h‘Ý?;߯?q=*¿J Ò¿-²]ÀF¶3ÀZd;¾¨Æ«?= ‹@u“¨@¾Ÿæ@A5^ú@¾ŸA!°î@²!Að§HA¶óMAÙÎaAF¶…AÁÊ”AÉvAÍÌ›A“AÉv·AVÁA²·AZ«AÑ"AbƒA‰ANAºI2AòÒ AÇK Aq=>A&AL7WA`åFAçûYA¬TAÉv@Ah‘)A‘í2Að§ú@åÐAX9ô@‘íAö(APA‡IA 5AffRAÍÌ A`åA?5.AøSAçûAé&Ù@#Û­@Ù@þÔˆ?¢EN@ƒÀ@NbÈ@j¼¼@q=Ö@X‰@`å”@Õx@€?Ï÷+@33?çû©?#Ûy>{î>5^ê¿çû­ÀÍÌÈÀR¸NÀ/Ý”À¬:ÀL7ɾ—î? ³@= AòÒ;AÂkA+cA!°€AÅ lA¶óŒAžï‰AœÄ¢A¼t±AyéºAÕx¬A1AÉv•A ×{AÁÊEAA#Û¹@PW@J ¾ú~À!°¿?5οƒ@žïŸ@+‡ú@= 9Au“>AffpA= {A5^„AœÄA!°£AD‹±AX9®AD‹ÁAq=®AÙ´AƒŸAR¸°A¶ó©A°2•B´ÈB`%”Bo’BÃ’Bj<—B…ëB‡–›B˜®™BT£BžožB`%£Bmg¡BòR¦Bç{¥BÑb¬B¼ô¯BVN²BT£®B,©Bãå¤B}?žBº‰™B¬Ü“BÕøBéf†BÍL…B ÚˆBNâƒB+‰BBç;–B;ŸBžo¤Bªñ¦B©BTãªBÑb¥B)§B\ BdûœBÕø˜Bü©’BÃõ’B@ŽBª±BÅ ‹BR8‰B;BîB×”BºI‘By)BÕ–BR8–B×£—BFv˜B'±“Bžo•B“ØB¸^’Bðç—BË!›BNâšBƒœB —™B®‡œB œBfæ”BÍÌ•B¼´‘B^ºByiBÁŠŽBƒ“Bwþ“B;_›BÓÍžBòR¤Bh‘ŸB–C¢B…«Bwþ›B1È•BÙ‘BÝd‹BbP†B‰†Bf&‹BéfˆB¾Ÿ‚BøÓ…Büé‰BfæƒBÕ8†B¨F€B BøS|Bݤ{BZeB5ÞkB}¿pBNârBNbxBVnB WeB%†mBô}iB?µcBú~]BJŒTB/ÝZByiSBƒ@[BË!RB×#EB?5HB KBD UBw>ZB%iBÛùuBV{Bì„Bì‘‹BìBVŽŽB²’BòRB3ó…BuÓBo’uBô}mB‡–hB¢Å^B3³aBudBÅ eBö¨rBd»~B°r„BNâ‹B‹B\Bf¦“Bf¦”B‡Ö–B*B«‘B…ë‘B®G–B1ˆ”B/]ŽBE‹B€…Bô½‚BP …BXy€B;_„BÕøB`esBþTnB-²hBBàaBu“fBD ]B…k[BÏwiBºIjB;_wB'±|B ƒBö(…B%‚BÉvƒBÍÌ{Bo|B`evBé&~Bw>yB‡–xB!0vBTcB'1B‘­ˆBËáŒBËá‹B¼´„B-…B…«ŠBẅB¶3€B;„BÏ7…BËáˆB¢EŠB¾_‰BÑbŒB´ÈßÁÃõÇÁZd²ÁP•ÁÍÌ‹Á®mÁøSÁV‹Áî|¦Á ºÁ°r×Á²îÁVüÁD Â}¿ÂÚÂ…k¼ôƒùÁ¾ŸæÁƒÓÁZdÒÁh‘»Áú~ÈÁff»Á7‰½Á ¯Á/¼ÁázÓÁj¼äÁð§ëÁ)\ãÁ#ÛìÁ¨ÆåÁVúÁ¢EÂÝ$Â-²¶ó'žï*Âã¥'ÂáúÂYÂoÂTãùÁ…ëÛÁHáÉÁÙ«ÁV¡Á‰AŠÁ¶ó†Áü©‡Á§ÁÝ$¸Á¦›ÖÁ´ÈëÁ+ÂÓM ®GÂ-²!ƒ@)Âü©ÂTã!ÂÂw¾ÂÇË Âyi •œDÂ)ÜÂw¾Â…!ƒÂ%†Â)ÜÂZùÁ…÷ÁºIáÁ}?ËÁ?5ÀÁ‰A¦Áš™¯Á%ÊÁÂÏÁw¾âÁw¾ØÁ{ëÁÂL·ƒÀùÁ¦Â;ß² ÂåÐÂh‘ðÁPáÁœÄÃÁÙÀÁü©¤ÁÅ ´ÁF¶ËÁ/ÝÊÁHáæÁ¦›àÁþÔòÁ•åÁ´ÈÊÁ°r½ÁX¢Á‡•Á ÁNbLÁÕxÁ'1ÐÀé&qÀ¹ÀázüÀ®-Á ×GÁV€ÁøSyÁ¾ŸŽÁÍÌ“Á-”Á ×–Ád;’ÁL7mÁázHÁX9Á¶óÁü©ÁZd ÁÃõÁœÄ À ×+À¢EV?•“?ìQœ@ð§Ò@q=ú@sh@mç³@D‹D@1¬>…ëÑ¿Zd£À- Á•'Á×£TÁ)\EÁ¢EÁ{âÀÓM¦À;ßÿ¿ƒÀ:À^ºI¾¼t“<¦?òÒ@Ûù®?h‘í¾VeÀ= ßÀ- ÁÙHÁmçYÁ5^&Á#ÛÁ¸ÕÀ®ëÀÕxyÀÙfÀÍÌÀü©‘Àú~†À33›À¸ÅÀ%Á¶ó7Á‡qÁ\|Á˜n\Ážï_ÁR¸TÁJ RÁš™OÁ‰AÁ/Ý&ÁV\ÁÑ"QÁáz,ÁZVÁòÒyÁÃõ“ÁÝ$¬Áw¾ÀÁázÚÁçûôÁ00hByéõA-²áAáAÇA/ÝÒAçûËA‘í®A‘í¹AË¡­A¾A ׸A®G¬AøS¦A¤p‹AÑ"–A¼t«AyéžAú~¦A-²“AË¡¡Aš™A}?A–CšAB`„A!°€A¼tKAü©5ANbAË¡AÏ÷)AÍÌAÓM,AåÐAZø@u“Aƒì@Ï÷ AVÚ@ºI´@ÓM @¾Ÿª?J ’¿FÀÂÅ¿ð§À5^ú>€>áz@ü©A@Õx)?d;ÿ¿ÙÀøSÀP?Àáz4?X9@J b@ìQà@çûñ@¤p1AZdSAœÄ‡Aú~’A‹l®A{´A33ÏA¤pØAHáÐA-²¶ATã›A ƒA¬PAœÄAÑ"A¨ÆË@NbÔ@Õx¥@‘í°@ºIA•A…GA‘íLA?5^Aü©}AžïaAq=`A‰AJA¤pyAî|‘AÝ$–Amç¨A²¼AÂÁAåпAbÃA¿A5^ÓA¢EÜAÃõÈA+ÈAj©AÏ÷žAü©‡AD‹jA°rNAÁÊCAJ zA¨ÆmA¾ŸŠA{jAþÔ|A+aAGAÙÎ#A{"Aã¥÷@œÄAbA33'AÂ9A'1XA¨Æ‰A²AÑ"’AÅ €AÑ"iAÝ$†A´ÈdA¬ZAu“ A–CA¨Æ·@øS‹@®G‘@`åP@ÙÎ×@`åä@oAºIô@Évò@}?í@{¾@w¾÷@Áʱ@5^î@+‡Â@•§@áz€@‡Y>‰A€?‹l'@}?…?žï@Ù†@Zd¿@¼tA\Âj¼4ÂÃu2 %ÂyiÂX9 ÂTcÂ+ìÁàÁÓMÁÁb¿ÁòÒÎÁú~ìÁ)\øÁ㥠Âu“Â+ÂHa&ÂÕø,¾8Âq=>ÂßO4ÂY8ÂØ)Âsè#ÂR¸ÂYÂZ Â…k%ÂB`-­,ÂÁJ5¯-¯(ÂêÂJŒœÄÂ-²ÂZdõÁ1éÁ¼tÑÁ‰AÓÁÕxðÁ\øÁ‡–Â5^Â?5 ´ÈÂÕøÂjÂd»ªñ"Â94 °òÂyéþÁ¸áÁ!°ÔÁR¸·Á ÒÁ!°ëÁNbìÁNâ“ÂÖ ÂshÿÁªñæÁoÜÁ¼tÄÁ?5°Á°ržÁj¼‚Á/WÁ%-ÁÕxÁh‘'ÁÁÊMÁÛù€ÁVŒÁ¼t¢Áu“¡ÁÉv´Á…ë¯ÁÇK·Áj¼½ÁºÁÃõžÁˆÁ´ÈhÁÙfÁj¼^Á}?IÁð§LÁ'1Á;ßÛÀé&aÀú~ À×£Ð?ú~*@Ë¡U@åÐ⾉A¿ìQ”À‡ùÀ\$ÁË¡WÁj†Áw¾Á1­ÁR¸§Á°r”ÁB`uÁHáVÁJ ÁX9Áw¾·ÀshµÀ/Ý\ÀÙ&Àö($À°r ÀffÂÀTãÁmçEÁ…wÁXÁ¬lÁbTÁôý"ÁHá&Á¶óáÀÁÊõÀé&áÀjÁ5^Á`åÁ#Û'ÁªñRÁË¡‚ÁòÒÁìQ¢ÁôýŠÁ¾Ÿ“Áö(ŒÁçûÁL7Áã¥cÁ´ÈfÁ¶óŽÁÃõ„Áš™eÁ+‡Á+œÁff¯Áq=ÆÁƒâÁd;ôÁË¡Âbio3d/inst/examples/hivp.pdb0000644000176200001440000004043414707230357015517 0ustar liggesusersHELIX 1 1 GLY A 86 THR A 91 1 6 HELIX 2 2 GLN A 92 GLY A 94 5 3 HELIX 3 3 GLY B 86 THR B 91 1 6 HELIX 4 4 GLN B 92 GLY B 94 5 3 SHEET 1 1 3 THR B 96 ASN B 98 0 SHEET 2 1 3 THR A 96 ASN A 98 -1 N THR A 96 O ASN B 98 SHEET 3 1 3 GLN B 2 THR B 4 -1 N ILE B 3 O LEU A 97 SHEET 1 5 7 GLY A 52 ILE A 66 0 SHEET 2 5 7 LEU A 10 ILE A 15 -1 O LYS A 14 N GLU A 65 SHEET 3 5 7 GLN A 18 LEU A 24 -1 O GLN A 18 N ILE A 15 SHEET 4 5 7 ILE A 84 ILE A 85 1 N ILE A 85 O LEU A 23 SHEET 5 5 7 VAL A 32 LEU A 33 -1 O VAL A 32 N ILE A 84 SHEET 6 5 7 HIS A 69 VAL A 77 1 O LEU A 76 N LEU A 33 SHEET 7 5 7 GLY A 52 ILE A 66 -1 N ARG A 57 O VAL A 77 SHEET 1 14 7 GLY B 52 ILE B 66 0 SHEET 2 14 7 LEU B 10 ILE B 15 -1 O LYS B 14 N GLU B 65 SHEET 3 14 7 GLN B 18 LEU B 24 -1 O GLN B 18 N ILE B 15 SHEET 4 14 7 ILE B 84 ILE B 85 1 N ILE B 85 O LEU B 23 SHEET 5 14 7 VAL B 32 LEU B 33 -1 O VAL B 32 N ILE B 84 SHEET 6 14 7 HIS B 69 VAL B 77 1 O LEU B 76 N LEU B 33 SHEET 7 14 7 GLY B 52 ILE B 66 -1 N ARG B 57 O VAL B 77 ATOM 1 CA PRO A 1 51.842 59.784 -6.815 1.00 0.00 ATOM 2 CA GLN A 2 51.577 59.564 -2.997 1.00 0.00 ATOM 3 CA ILE A 3 48.107 57.932 -2.171 1.00 0.00 ATOM 4 CA THR A 4 46.701 58.033 1.344 1.00 0.00 ATOM 5 CA LEU A 5 44.183 55.442 2.514 1.00 0.00 ATOM 6 CA TRP A 6 41.544 57.701 4.088 1.00 0.00 ATOM 7 CA GLN A 7 39.388 56.510 1.115 1.00 0.00 ATOM 8 CA ARG A 8 39.662 53.213 -0.904 1.00 0.00 ATOM 9 CA PRO A 9 42.708 53.768 -3.078 1.00 0.00 ATOM 10 CA LEU A 10 40.903 53.618 -6.532 1.00 0.00 ATOM 11 CA VAL A 11 42.884 54.589 -9.625 1.00 0.00 ATOM 12 CA THR A 12 42.251 54.709 -13.425 1.00 0.00 ATOM 13 CA ILE A 13 43.809 51.981 -15.445 1.00 0.00 ATOM 14 CA LYS A 14 43.975 51.774 -19.198 1.00 0.00 ATOM 15 CA ILE A 15 43.797 48.245 -20.632 1.00 0.00 ATOM 16 CA GLY A 16 42.521 47.316 -24.076 1.00 0.00 ATOM 17 CA GLY A 17 41.869 50.971 -25.072 1.00 0.00 ATOM 18 CA GLN A 18 39.188 50.443 -22.473 1.00 0.00 ATOM 19 CA LEU A 19 39.687 52.728 -19.521 1.00 0.00 ATOM 20 CA LYS A 20 38.532 51.307 -16.096 1.00 0.00 ATOM 21 CA GLU A 21 39.141 52.167 -12.417 1.00 0.00 ATOM 22 CA ALA A 22 40.640 49.603 -10.016 1.00 0.00 ATOM 23 CA LEU A 23 41.703 49.173 -6.386 1.00 0.00 ATOM 24 CA LEU A 24 45.477 49.089 -5.522 1.00 0.00 ATOM 25 CA ASP A 25 45.318 46.159 -3.128 1.00 0.00 ATOM 26 CA THR A 26 48.582 45.179 -1.430 1.00 0.00 ATOM 27 CA GLY A 27 46.733 42.224 -0.031 1.00 0.00 ATOM 28 CA ALA A 28 45.775 40.761 -3.455 1.00 0.00 ATOM 29 CA ASP A 29 48.501 38.562 -4.998 1.00 0.00 ATOM 30 CA ASP A 30 46.716 38.676 -8.410 1.00 0.00 ATOM 31 CA THR A 31 44.915 41.225 -10.624 1.00 0.00 ATOM 32 CA VAL A 32 41.270 40.373 -11.334 1.00 0.00 ATOM 33 CA LEU A 33 39.440 42.554 -13.719 1.00 0.00 ATOM 34 CA GLU A 34 35.920 42.747 -14.872 1.00 0.00 ATOM 35 CA GLU A 35 34.897 40.976 -18.035 1.00 0.00 ATOM 36 CA MET A 36 36.229 42.597 -21.125 1.00 0.00 ATOM 37 CA SER A 37 37.638 41.297 -24.332 1.00 0.00 ATOM 38 CA LEU A 38 41.219 41.024 -24.431 1.00 0.00 ATOM 39 CA PRO A 39 42.734 39.737 -27.687 1.00 0.00 ATOM 40 CA GLY A 40 44.704 36.743 -26.500 1.00 0.00 ATOM 41 CA ARG A 41 45.060 33.095 -25.730 1.00 0.00 ATOM 42 CA TRP A 42 43.813 32.352 -22.311 1.00 0.00 ATOM 43 CA LYS A 43 44.000 29.437 -19.900 1.00 0.00 ATOM 44 CA PRO A 44 41.164 28.670 -17.317 1.00 0.00 ATOM 45 CA LYS A 45 41.624 29.507 -13.608 1.00 0.00 ATOM 46 CA MET A 46 39.283 29.172 -10.580 1.00 0.00 ATOM 47 CA ILE A 47 39.491 31.925 -7.918 1.00 0.00 ATOM 48 CA GLY A 48 37.788 32.073 -4.568 1.00 0.00 ATOM 49 CA GLY A 49 35.043 34.442 -3.513 1.00 0.00 ATOM 50 CA ILE A 50 32.347 35.074 -0.949 1.00 0.00 ATOM 51 CA GLY A 51 29.854 32.271 -1.556 1.00 0.00 ATOM 52 CA GLY A 52 32.385 30.105 -3.553 1.00 0.00 ATOM 53 CA PHE A 53 34.898 29.701 -6.356 1.00 0.00 ATOM 54 CA ILE A 54 34.222 31.428 -9.650 1.00 0.00 ATOM 55 CA LYS A 55 36.012 30.468 -12.945 1.00 0.00 ATOM 56 CA VAL A 56 37.951 33.331 -14.627 1.00 0.00 ATOM 57 CA ARG A 57 40.195 33.474 -17.711 1.00 0.00 ATOM 58 CA GLN A 58 43.958 34.040 -17.315 1.00 0.00 ATOM 59 CA TYR A 59 45.679 36.355 -19.847 1.00 0.00 ATOM 60 CA ASP A 60 49.549 36.399 -19.405 1.00 0.00 ATOM 61 CA GLN A 61 51.715 39.205 -20.715 1.00 0.00 ATOM 62 CA ILE A 62 48.974 41.895 -20.905 1.00 0.00 ATOM 63 CA LEU A 63 50.169 45.531 -20.985 1.00 0.00 ATOM 64 CA ILE A 64 48.156 47.683 -18.627 1.00 0.00 ATOM 65 CA GLU A 65 48.817 51.312 -17.679 1.00 0.00 ATOM 66 CA ILE A 66 48.259 52.150 -13.988 1.00 0.00 ATOM 67 CA CYS A 67 48.343 55.819 -13.081 1.00 0.00 ATOM 68 CA GLY A 68 50.240 56.475 -16.154 1.00 0.00 ATOM 69 CA HIS A 69 52.828 53.643 -15.720 1.00 0.00 ATOM 70 CA LYS A 70 53.041 50.890 -18.295 1.00 0.00 ATOM 71 CA ALA A 71 53.222 47.514 -16.704 1.00 0.00 ATOM 72 CA ILE A 72 53.255 44.000 -18.230 1.00 0.00 ATOM 73 CA GLY A 73 51.697 41.280 -16.224 1.00 0.00 ATOM 74 CA THR A 74 49.054 38.652 -16.082 1.00 0.00 ATOM 75 CA VAL A 75 45.485 39.767 -15.462 1.00 0.00 ATOM 76 CA LEU A 76 42.659 37.379 -14.574 1.00 0.00 ATOM 77 CA VAL A 77 39.347 38.530 -16.381 1.00 0.00 ATOM 78 CA GLY A 78 36.102 37.372 -14.768 1.00 0.00 ATOM 79 CA PRO A 79 32.810 38.262 -12.975 1.00 0.00 ATOM 80 CA THR A 80 34.467 40.006 -10.125 1.00 0.00 ATOM 81 CA PRO A 81 32.448 42.646 -8.163 1.00 0.00 ATOM 82 CA VAL A 82 35.612 44.765 -8.065 1.00 0.00 ATOM 83 CA ASN A 83 38.639 45.443 -10.272 1.00 0.00 ATOM 84 CA ILE A 84 41.739 44.698 -8.177 1.00 0.00 ATOM 85 CA ILE A 85 45.407 45.630 -9.031 1.00 0.00 ATOM 86 CA GLY A 86 47.282 43.168 -6.872 1.00 0.00 ATOM 87 CA ARG A 87 50.954 42.682 -6.044 1.00 0.00 ATOM 88 CA ASN A 88 51.888 40.981 -9.300 1.00 0.00 ATOM 89 CA LEU A 89 51.485 44.433 -11.016 1.00 0.00 ATOM 90 CA LEU A 90 52.110 46.793 -8.029 1.00 0.00 ATOM 91 CA THR A 91 55.719 45.544 -8.243 1.00 0.00 ATOM 92 CA GLN A 92 56.232 46.651 -11.858 1.00 0.00 ATOM 93 CA ILE A 93 55.001 50.180 -11.313 1.00 0.00 ATOM 94 CA GLY A 94 57.347 50.391 -8.267 1.00 0.00 ATOM 95 CA CYS A 95 54.716 50.613 -5.473 1.00 0.00 ATOM 96 CA THR A 96 55.903 50.713 -1.945 1.00 0.00 ATOM 97 CA LEU A 97 54.052 51.039 1.392 1.00 0.00 ATOM 98 CA ASN A 98 55.612 53.860 3.315 1.00 0.00 ATOM 99 CA PHE A 99 55.232 55.089 6.899 1.00 0.00 ATOM 100 CA PRO B 1 59.784 51.842 6.815 1.00 0.00 ATOM 101 CA GLN B 2 59.564 51.577 2.997 1.00 0.00 ATOM 102 CA ILE B 3 57.932 48.107 2.171 1.00 0.00 ATOM 103 CA THR B 4 58.033 46.701 -1.344 1.00 0.00 ATOM 104 CA LEU B 5 55.442 44.183 -2.514 1.00 0.00 ATOM 105 CA TRP B 6 57.701 41.544 -4.088 1.00 0.00 ATOM 106 CA GLN B 7 56.510 39.388 -1.115 1.00 0.00 ATOM 107 CA ARG B 8 53.213 39.662 0.904 1.00 0.00 ATOM 108 CA PRO B 9 53.768 42.708 3.078 1.00 0.00 ATOM 109 CA LEU B 10 53.618 40.903 6.532 1.00 0.00 ATOM 110 CA VAL B 11 54.589 42.884 9.625 1.00 0.00 ATOM 111 CA THR B 12 54.709 42.251 13.425 1.00 0.00 ATOM 112 CA ILE B 13 51.981 43.809 15.445 1.00 0.00 ATOM 113 CA LYS B 14 51.774 43.975 19.198 1.00 0.00 ATOM 114 CA ILE B 15 48.245 43.797 20.632 1.00 0.00 ATOM 115 CA GLY B 16 47.316 42.521 24.076 1.00 0.00 ATOM 116 CA GLY B 17 50.971 41.869 25.072 1.00 0.00 ATOM 117 CA GLN B 18 50.443 39.188 22.473 1.00 0.00 ATOM 118 CA LEU B 19 52.728 39.687 19.521 1.00 0.00 ATOM 119 CA LYS B 20 51.307 38.532 16.096 1.00 0.00 ATOM 120 CA GLU B 21 52.167 39.141 12.417 1.00 0.00 ATOM 121 CA ALA B 22 49.603 40.640 10.016 1.00 0.00 ATOM 122 CA LEU B 23 49.173 41.703 6.386 1.00 0.00 ATOM 123 CA LEU B 24 49.089 45.477 5.522 1.00 0.00 ATOM 124 CA ASP B 25 46.159 45.318 3.128 1.00 0.00 ATOM 125 CA THR B 26 45.179 48.582 1.430 1.00 0.00 ATOM 126 CA GLY B 27 42.224 46.733 0.031 1.00 0.00 ATOM 127 CA ALA B 28 40.761 45.775 3.455 1.00 0.00 ATOM 128 CA ASP B 29 38.562 48.501 4.998 1.00 0.00 ATOM 129 CA ASP B 30 38.676 46.716 8.410 1.00 0.00 ATOM 130 CA THR B 31 41.225 44.915 10.624 1.00 0.00 ATOM 131 CA VAL B 32 40.373 41.270 11.334 1.00 0.00 ATOM 132 CA LEU B 33 42.554 39.440 13.719 1.00 0.00 ATOM 133 CA GLU B 34 42.747 35.920 14.872 1.00 0.00 ATOM 134 CA GLU B 35 40.976 34.897 18.035 1.00 0.00 ATOM 135 CA MET B 36 42.597 36.229 21.125 1.00 0.00 ATOM 136 CA SER B 37 41.297 37.638 24.332 1.00 0.00 ATOM 137 CA LEU B 38 41.024 41.219 24.431 1.00 0.00 ATOM 138 CA PRO B 39 39.737 42.734 27.687 1.00 0.00 ATOM 139 CA GLY B 40 36.743 44.704 26.500 1.00 0.00 ATOM 140 CA ARG B 41 33.095 45.060 25.730 1.00 0.00 ATOM 141 CA TRP B 42 32.352 43.813 22.311 1.00 0.00 ATOM 142 CA LYS B 43 29.437 44.000 19.900 1.00 0.00 ATOM 143 CA PRO B 44 28.670 41.164 17.317 1.00 0.00 ATOM 144 CA LYS B 45 29.507 41.624 13.608 1.00 0.00 ATOM 145 CA MET B 46 29.172 39.283 10.580 1.00 0.00 ATOM 146 CA ILE B 47 31.925 39.491 7.918 1.00 0.00 ATOM 147 CA GLY B 48 32.073 37.788 4.568 1.00 0.00 ATOM 148 CA GLY B 49 34.442 35.043 3.513 1.00 0.00 ATOM 149 CA ILE B 50 35.074 32.347 0.949 1.00 0.00 ATOM 150 CA GLY B 51 32.271 29.854 1.556 1.00 0.00 ATOM 151 CA GLY B 52 30.105 32.385 3.553 1.00 0.00 ATOM 152 CA PHE B 53 29.701 34.898 6.356 1.00 0.00 ATOM 153 CA ILE B 54 31.428 34.222 9.650 1.00 0.00 ATOM 154 CA LYS B 55 30.468 36.012 12.945 1.00 0.00 ATOM 155 CA VAL B 56 33.331 37.951 14.627 1.00 0.00 ATOM 156 CA ARG B 57 33.474 40.195 17.711 1.00 0.00 ATOM 157 CA GLN B 58 34.040 43.958 17.315 1.00 0.00 ATOM 158 CA TYR B 59 36.355 45.679 19.847 1.00 0.00 ATOM 159 CA ASP B 60 36.399 49.549 19.405 1.00 0.00 ATOM 160 CA GLN B 61 39.205 51.715 20.715 1.00 0.00 ATOM 161 CA ILE B 62 41.895 48.974 20.905 1.00 0.00 ATOM 162 CA LEU B 63 45.531 50.169 20.985 1.00 0.00 ATOM 163 CA ILE B 64 47.683 48.156 18.627 1.00 0.00 ATOM 164 CA GLU B 65 51.312 48.817 17.679 1.00 0.00 ATOM 165 CA ILE B 66 52.150 48.259 13.988 1.00 0.00 ATOM 166 CA CYS B 67 55.819 48.343 13.081 1.00 0.00 ATOM 167 CA GLY B 68 56.475 50.240 16.154 1.00 0.00 ATOM 168 CA HIS B 69 53.643 52.828 15.720 1.00 0.00 ATOM 169 CA LYS B 70 50.890 53.041 18.295 1.00 0.00 ATOM 170 CA ALA B 71 47.514 53.222 16.704 1.00 0.00 ATOM 171 CA ILE B 72 44.000 53.255 18.230 1.00 0.00 ATOM 172 CA GLY B 73 41.280 51.697 16.224 1.00 0.00 ATOM 173 CA THR B 74 38.652 49.054 16.082 1.00 0.00 ATOM 174 CA VAL B 75 39.767 45.485 15.462 1.00 0.00 ATOM 175 CA LEU B 76 37.379 42.659 14.574 1.00 0.00 ATOM 176 CA VAL B 77 38.530 39.347 16.381 1.00 0.00 ATOM 177 CA GLY B 78 37.372 36.102 14.768 1.00 0.00 ATOM 178 CA PRO B 79 38.262 32.810 12.975 1.00 0.00 ATOM 179 CA THR B 80 40.006 34.467 10.125 1.00 0.00 ATOM 180 CA PRO B 81 42.646 32.448 8.163 1.00 0.00 ATOM 181 CA VAL B 82 44.765 35.612 8.065 1.00 0.00 ATOM 182 CA ASN B 83 45.443 38.639 10.272 1.00 0.00 ATOM 183 CA ILE B 84 44.698 41.739 8.177 1.00 0.00 ATOM 184 CA ILE B 85 45.630 45.407 9.031 1.00 0.00 ATOM 185 CA GLY B 86 43.168 47.282 6.872 1.00 0.00 ATOM 186 CA ARG B 87 42.682 50.954 6.044 1.00 0.00 ATOM 187 CA ASN B 88 40.981 51.888 9.300 1.00 0.00 ATOM 188 CA LEU B 89 44.433 51.485 11.016 1.00 0.00 ATOM 189 CA LEU B 90 46.793 52.110 8.029 1.00 0.00 ATOM 190 CA THR B 91 45.544 55.719 8.243 1.00 0.00 ATOM 191 CA GLN B 92 46.651 56.232 11.858 1.00 0.00 ATOM 192 CA ILE B 93 50.180 55.001 11.313 1.00 0.00 ATOM 193 CA GLY B 94 50.391 57.347 8.267 1.00 0.00 ATOM 194 CA CYS B 95 50.613 54.716 5.473 1.00 0.00 ATOM 195 CA THR B 96 50.713 55.903 1.945 1.00 0.00 ATOM 196 CA LEU B 97 51.039 54.052 -1.392 1.00 0.00 ATOM 197 CA ASN B 98 53.860 55.612 -3.315 1.00 0.00 ATOM 198 CA PHE B 99 55.089 55.232 -6.899 1.00 0.00 TER END bio3d/inst/doc/0000755000176200001440000000000014710164351012776 5ustar liggesusersbio3d/inst/doc/bio3d_vignettes.html0000644000176200001440000001635614710164350016766 0ustar liggesusers bio3d Vignettes

bio3d Vignettes

Sep 22 2016

We distribute a number of extended Bio3D vignettes that provide worked examples of using Bio3D to perform a particular type of structural bioinformatics analysis. An updated list of these can be found on-line.

At the time of writing these include:

There is also extensive on-line documentation with worked examples (and their output) for all functions and a package manual (in PDF format) that is a concatenation of each functions documentation (without example output).

Note that for information on Bio3D development status or to report a bug, please refer to: https://bitbucket.org/Grantlab/bio3d/

bio3d/inst/doc/bio3d_vignettes.Rmd0000644000176200001440000000465514707230357016552 0ustar liggesusers--- title: "bio3d Vignettes" date: "Sep 22 2016" output: rmarkdown::html_vignette vignette: > %\VignetteEngine{knitr::rmarkdown} %\VignetteIndexEntry{bio3d Vignettes} \usepackage[utf8]{inputenc} --- We distribute a number of extended **Bio3D vignettes** that provide worked examples of using Bio3D to perform a particular type of structural bioinformatics analysis. An updated list of these can be found on-line. At the time of writing these include: - [Installing Bio3D](http://thegrantlab.org/bio3d/articles/online/install_vignette/Bio3D_install.html) - [Getting started with Bio3D](http://thegrantlab.org/bio3d/articles/online/intro_vignette/Bio3D_introduction.html) - [PDB structure manipulation and analysis with Bio3D](http://thegrantlab.org/bio3d/articles/online/pdb_vignette/Bio3D_pdb.html) - [Beginning trajectory analysis with Bio3D](http://thegrantlab.org/bio3d/articles/online/traj_vignette/Bio3D_md.html) - [Enhanced methods for Normal Mode Analysis with Bio3D](http://thegrantlab.org/bio3d/articles/online/nma_vignette/Bio3D_nma.html) - [Comparative sequence and structure analysis with Bio3D](http://thegrantlab.org/bio3d/articles/online/pca_vignette/Bio3D_pca.html) - [Ensemble NMA of E.coli DHFR structures](http://thegrantlab.org/bio3d/articles/online/enma_vignettes/Bio3D_nma-dhfr-partI.html) - [Ensemble NMA across multiple species of DHFR](http://thegrantlab.org/bio3d/articles/online/enma_vignettes/Bio3D_nma-dhfr-partII.html) - [Protein structure network analysis with Bio3D](http://thegrantlab.org/bio3d/articles/online/cna_vignette/cna_vignette.spin.html) - [Introduction to Ensemble Difference Distance Matrix (eDDM) Analysis](http://thegrantlab.org/bio3d/articles/online/eddm_vignette/Bio3D_eddm.spin.html) - Online protein structure analysis with the Bio3D WebApp ( [PDF](http://thegrantlab.org/bio3d_v2/download/webapp-tutorials?download=22:bio3d-webapp-pca)) - Online Normal Mode Analysis with Bio3D WebApps ( PDF | HTML ) There is also extensive [on-line documentation](http://thegrantlab.org/bio3d/reference/) with worked examples (and their output) for all functions and a package manual (in [PDF](https://CRAN.R-project.org/package=bio3d/bio3d.pdf) format) that is a concatenation of each functions documentation (without example output). Note that for information on Bio3D development status or to report a bug, please refer to: https://bitbucket.org/Grantlab/bio3d/ bio3d/inst/staticdocs/0000755000176200001440000000000014707230357014377 5ustar liggesusersbio3d/inst/staticdocs/index.r0000644000176200001440000001361214707230357015674 0ustar liggesusers##"io" sd_section("Input/Output:", "Read and Write Common Biomolecular Data Types", c( "read.pdb", "read.fasta", "read.fasta.pdb", "read.ncdf", "read.dcd", "read.crd", "read.pqr", "read.mol2", "read.all", "read.pdcBD", "read.cif", "read.crd.amber", "read.crd.charmm", "read.prmtop", "aln2html", "get.pdb", "get.seq", "load.enmff", "write.pdb", "write.crd", "write.fasta", "write.ncdf", "write.pqr", "write.pir", "write.mol2", "mktrj.nma", "mktrj.pca", "mktrj.enma", "pymol", "vmd" ) ) ##"sequence" sd_section("Sequence Analysis:", "Do Interesting Things with Protein Sequence", c( "consensus", "conserv", "blast.pdb", "hmmer", "pfam", "uniprot", "entropy", "filter.identity", "seqidentity", "motif.find", "pdbaln", "seq2aln", "seqaln", "seqaln.pair", "seqbind" ) ) ##"structure" sd_section("Structure Analysis:", "Do Interesting Things with Protein Structure", c( "angle.xyz", "biounit", "blast.pdb", "get.blast", "atom.select", "combine.select", "cmap", "filter.cmap", "core.find", "core.cmap", "com", "dccm", "filter.dccm", "dist.xyz", "dm", "dssp", "dssp.pdbs", "geostas", "mustang", "fit.xyz", "binding.site", "mktrj", "mktrj.pca", "overlap", "pca", "pca.xyz", "pca.pdbs", "pca.array", "pca.tor", "dccm.pca", "project.pca", "pdbaln", "pdb.annotate", "pdb2aln", "pdb2aln.ind", "pdb2sse", "pdbs2sse", "pdbfit", "chain.pdb", "convert.pdb", "rgyr", "rmsd", "filter.rmsd", "rmsf", "rmsip", "struct.aln", "torsion.pdb", "torsion.xyz", "wrap.tor", "aa2mass", "aa.table", "atom.index", "atom2mass", "atom2ele", "cov.nma", "dccm.enma", "dccm.nma", "dccm.xyz", "deformation.nma", "fluct.nma", "inner.prod", "load.enmff", "mktrj.nma", "nma", "nma.pdb", "nma.pdbs", "normalize.vector", "pdbs2pdb", "plot.enma", "plot.nma", "plot.rmsip", "sdENM", "sse.bridges", "view.dccm", "view.modes", "var.xyz", "inspect.connectivity" ) ) ##"trajectory" sd_section("Trajectory Analysis:", "Do Interesting Things with Simulation Data", c( "angle.xyz", "cmap", "filter.cmap", "core.find", "core.map", "dccm", "dccm.pca", "filter.dccm", # "lmi", "dist.xyz", "dm", "dssp.xyz", "geostas", "fit.xyz", "mktrj", "mktrj.pca", "overlap", "project.pca", "pca.tor", "pca.xyz", "pdbaln", "rgyr", "rmsd", "filter.rmsd", "rmsf", "rmsip", "torsion.pdb", "torsion.xyz", "wrap.tor" ) ) ##"nma" sd_section("Normal Mode Analysis:", "Probe Large-Scale Protein Motions", c( "aa2mass", "aa.table", "atom.index", "atom2mass", "atom2ele", "bhattacharyya", "cov.nma", "covsoverlap", "dccm.enma", "dccm.nma", "dccm.xyz", "deformation.nma", "geostas", "fluct.nma", "inner.prod", "load.enmff", "mktrj", "mktrj.nma", "mktrj.enma", "nma", "nma.pdb", "nma.pdbs", "aanma", "aanma.pdbs", "gnm", "dccm.gnm", "normalize.vector", "pdbs2pdb", "plot.enma", "plot.nma", "plot.rmsip", "sdENM", "sse.bridges", "sip", "var.xyz", "var.pdbs", "view.dccm", "view.modes" ) ) ##"cna" sd_section("Correlation Network Analysis:", "Network analysis of dynamic coupling", c( "cna", "cnapath", # "cov2dccm", "dccm", # "lmi", "filter.dccm", "cmap", "community.tree", "network.amendment", "view.cna", "view.dccm", "view.cnapath", "plot.cna", "print.cna", "identify.cna", "layout.cna", "prune.cna", "community.aln" ) ) ##"graphics" sd_section("Graphics:", "Plotting and Graphic Display", c( "bwr.colors", "vmd_colors", "mono.colors", "plot.bio3d", "plot.blast", "plot.cmap", "plot.core", "plot.dccm", "plot.dmat", "plot.fluct", "plot.geostas", "plot.pca", "plot.pca.loadings", "hclustplot", "plot.cna", "plot.fasta", "plot.hmmer", "plot.matrix.loadings" ) ) ##"util" sd_section("Utilities:", "Convert and Manipulate Data", c( "aa.index", "aa123", "aa2index", "aln2html", "as.fasta", "as.pdb", "as.select", "as.xyz", "atom.select", "combine.select", "atom2xyz", "basename.pdb", "bio3d-package", "biounit", "bounds", "bounds.sse", "cat.pdb", "check.utility", "clean.pdb", "chain.pdb", "convert.pdb", "diag.ind", "difference.vector", "gap.inspect", "get.blast", "inspect.connectivity", "filter.identity", "is.gap", "is.pdb", "is.select", "is.xyz", "is.pdbs", "is.mol2", "lbio3d", "mask", "orient.pdb", "pairwise", "plot.bio3d", "print.core", "print.cna", "print.fasta", "print.xyz", "print.cnapath", "print.enma", "print.geostas", "print.mol2", "print.nma", "print.pca", "print.pdb", "print.prmtop", "print.rle2", "print.select", "print.sse", "rle2", "filter.rmsd", "pdbseq", "seqbind", "pdbsplit", "store.atom", "trim", "trim.mol2", "trim.pdbs", "trim.xyz", "unbound", "vec2resno", "setup.ncore", "elements", "formula2mass" ) ) ##"example" sd_section("Example Data:", "Bio3d Example Data", c("example.data") ) #sd_icon("Some title:", # "some sub-text", # c("pants") # ) bio3d/README.md0000644000176200001440000000604514707230357012546 0ustar liggesusers# Documentation The Bio3D package for structural bioinformatics consists of sets of functions for: - input/output, - sequence analysis, - structure analysis, - simulation analysis, - normal mode analysis, - correlation network analysis, - format conversion and data manipulation, and - graphics and visualization.. Major functions are listed below with links to further documentation that includes example code and results. Note that you can also get help on any particular function by using the command `?function` or `help(function)` (e.g. `help(read.pdb)`) and directly execute the example code for a given function with the command `example(function)` from within R itself. We also distribute a number of extended **Bio3D vignettes** that provide worked examples of using Bio3D to perform a particular type of analysis. Currently available vignettes include: - [Installing Bio3D](http://thegrantlab.org/bio3d/articles/online/install_vignette/Bio3D_install.html) - [Getting started with Bio3D](http://thegrantlab.org/bio3d/articles/online/intro_vignette/Bio3D_introduction.html) - [PDB structure manipulation and analysis with Bio3D](http://thegrantlab.org/bio3d/articles/online/pdb_vignette/Bio3D_pdb.html) - [Beginning trajectory analysis with Bio3D](http://thegrantlab.org/bio3d/articles/online/traj_vignette/Bio3D_md.html) - [Enhanced methods for Normal Mode Analysis with Bio3D](http://thegrantlab.org/bio3d/articles/online/nma_vignette/Bio3D_nma.html) - [Comparative sequence and structure analysis with Bio3D](http://thegrantlab.org/bio3d/articles/online/pca_vignette/Bio3D_pca.html) - [Ensemble NMA of E.coli DHFR structures](http://thegrantlab.org/bio3d/articles/online/enma_vignettes/Bio3D_nma-dhfr-partI.html) - [Ensemble NMA across multiple species of DHFR](http://thegrantlab.org/bio3d/articles/online/enma_vignettes/Bio3D_nma-dhfr-partII.html) - [Protein structure network analysis with Bio3D](http://thegrantlab.org/bio3d/articles/online/cna_vignette/cna_vignette.spin.html) - [Introduction to Ensemble Difference Distance Matrix (eDDM) Analysis](http://thegrantlab.org/bio3d/articles/online/eddm_vignette/Bio3D_eddm.spin.html) - Online protein structure analysis with the Bio3D WebApp ( [PDF](http://thegrantlab.org/bio3d_v2/download/webapp-tutorials?download=22:bio3d-webapp-pca)) - Online Normal Mode Analysis with Bio3D WebApps ( PDF | HTML ) There is also extensive [on-line documentation](http://thegrantlab.org/bio3d/reference/) with worked examples (and their output) for all functions and a package manual (in [PDF](https://CRAN.R-project.org/package=bio3d/bio3d.pdf) format) that is a concatenation of each functions documentation (without example output). Note that for information on Bio3D development status or to report a bug, please refer to: https://bitbucket.org/Grantlab/bio3d bio3d/build/0000755000176200001440000000000014710164351012353 5ustar liggesusersbio3d/build/vignette.rds0000644000176200001440000000031314710164351014707 0ustar liggesusers‹‹àb```b`aff`b2™… 1# 'NÊÌ7N‰/ËLÏK-)I-Ö ÊMASÂV¢S‚&-‚nBFInšC„Á|ˆ8°0!ɳæ%æbÌî’Zš—þ‡]?ã4-Þ©•åùE0=(jØ jXÜ2sRaö†d–À9Ì.nP&cº0ÌGq?gQ~¹Ì¼ ß6‰ÿ@€îÑäœÄbtr¥$–$ê¥õƒÜ •sì¸bio3d/man/0000755000176200001440000000000014707276664012050 5ustar liggesusersbio3d/man/nma.Rd0000644000176200001440000000524614707230357013106 0ustar liggesusers\name{nma} \alias{nma} \title{ Normal Mode Analysis } \description{ Perform normal mode analysis (NMA) on either a single or an ensemble of protein structures. } \usage{ nma(...) } \arguments{ \item{\dots}{ arguments passed to the methods \code{\link{nma.pdb}}, or \code{\link{nma.pdbs}}. For function \code{\link{nma.pdb}} this will include an object of class \code{pdb} as obtained from function \code{\link{read.pdb}}. For function \code{\link{nma.pdbs}} an object of class \code{pdbs} as obtained from function \code{\link{pdbaln}} or \code{\link{read.fasta.pdb}}. } } \details{ Normal mode analysis (NMA) is a computational approach for studying and characterizing protein flexibility. Current functionality entails normal modes calculation on either a single protein structure or an ensemble of aligned protein structures. This generic \code{\link{nma}} function calls the corresponding methods for the actual calculation, which is determined by the class of the input argument: Function \code{\link{nma.pdb}} will be used when the input argument is of class \code{pdb}. The function calculates the normal modes of a C-alpha model of a protein structure. Function \code{\link{nma.pdbs}} will be used when the input argument is of class \code{pdbs}. The function will perform normal mode analysis of each PDB structure stored in the \code{pdbs} object (\sQuote{ensemble NMA}). See documentation and examples for each corresponding function for more details. } \references{ Skjaerven, L. et al. (2014) \emph{BMC Bioinformatics} \bold{15}, 399. Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{nma.pdb}}, \code{\link{nma.pdbs}}, \code{\link{pca}}. } \examples{ ##- Singe structure NMA ## Fetch stucture pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) ## Calculate normal modes modes <- nma(pdb) ## Print modes print(modes) ## Plot modes plot(modes) ## Visualize modes #m7 <- mktrj.nma(modes, mode=7, file="mode_7.pdb") \donttest{ ## Needs MUSCLE installed - testing excluded ##- Ensemble NMA if(check.utility("muscle")) { try({ ## Fetch PDB files and split to chain A only PDB files ids <- c("1a70_A", "1czp_A", "1frd_A", "1fxi_A", "1iue_A", "1pfd_A") files <- get.pdb(ids, split = TRUE, path = tempdir()) ## Sequence Alignement pdbs <- pdbaln(files, outfile = tempfile()) ## Normal mode analysis on aligned data modes <- nma(pdbs, rm.gaps=FALSE) ## Plot fluctuation data plot(modes, pdbs=pdbs) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } } \keyword{ analysis } bio3d/man/pdb2sse.Rd0000644000176200001440000000215214707230357013666 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/pdb2sse.R \name{pdb2sse} \alias{pdb2sse} \title{Obtain An SSE Sequence Vector From A PDB Object} \usage{ pdb2sse(pdb, verbose = TRUE) } \arguments{ \item{pdb}{an object of class \code{pdb} as obtained from function \code{\link{read.pdb}}.} \item{verbose}{logical, if TRUE warnings and other messages will be printed.} } \value{ a character vector indicating SSE elements for each amino acide residue. The 'names' attribute of the vector contains 'resno', 'chain', 'insert', and 'SSE segment number', seperated by the character '_'. } \description{ Results are similar to that returned by stride(pdb)$sse and dssp(pdb)$sse. } \details{ call for its effects. } \examples{ \donttest{ #PDB server connection required - testing excluded try({ pdb <- read.pdb("1a7l") sse <- pdb2sse(pdb) sse }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } \author{ Barry Grant & Xin-Qiu Yao } \seealso{ \code{\link{dssp}}, \code{\link{stride}}, \code{\link{bounds.sse}} } bio3d/man/sip.Rd0000644000176200001440000000334614707230357013125 0ustar liggesusers\name{sip} \alias{sip} \alias{sip.default} \alias{sip.nma} \alias{sip.enma} \title{ Square Inner Product } \description{ Calculate the correlation between two atomic fluctuation vectors. } \usage{ sip(...) \method{sip}{nma}(a, b, ...) \method{sip}{enma}(enma, ncore=NULL, ...) \method{sip}{default}(v, w, ...) } \arguments{ \item{enma}{ an object of class \code{"enma"} obtained from function \code{nma.pdbs}. } \item{ncore }{ number of CPU cores used to do the calculation. \code{ncore>1} requires package \sQuote{parallel} installed. } \item{a}{ an \sQuote{nma} object as object from function \code{nma} to be compared to \code{b}. } \item{b}{ an \sQuote{nma} object as object from function \code{nma} to be compared to \code{a}. } \item{v}{ a numeric vector containing the atomic fluctuation values. } \item{w}{ a numeric vector containing the atomic fluctuation values. } \item{\dots}{ arguments passed to associated functions. } } \details{ SIP is a measure for the similarity of atomic fluctuations of two proteins, e.g. experimental b-factors, theroetical RMSF values, or atomic fluctuations obtained from NMA. } \value{ Returns the similarity coefficient(s). } \references{ Skjaerven, L. et al. (2014) \emph{BMC Bioinformatics} \bold{15}, 399. Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. Fuglebakk, E. et al. (2013) \emph{JCTC} \bold{9}, 5618--5628. } \author{ Lars Skjaerven } \seealso{Other similarity measures: \code{\link{covsoverlap}}, \code{\link{bhattacharyya}}, \code{\link{rmsip}}. } \examples{ pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) a <- nma(pdb) b <- nma(pdb, ff="anm") sip(a$fluctuations, b$fluctuations) } \keyword{ utilities } bio3d/man/cov.nma.Rd0000644000176200001440000000220114707230357013660 0ustar liggesusers\name{cov.nma} \alias{cov.nma} \alias{cov.enma} \title{ Calculate Covariance Matrix from Normal Modes } \description{ Calculate the covariance matrix from a normal mode object. } \usage{ \method{cov}{nma}(nma) \method{cov}{enma}(enma, ncore=NULL) } \arguments{ \item{nma}{ an \code{nma} object as obtained from function \code{nma.pdb}. } \item{enma}{ an \code{enma} object as obtained from function \code{nma.pdbs}. } \item{ncore }{ number of CPU cores used to do the calculation. \code{ncore>1} requires package \sQuote{parallel} installed. } } \details{ This function calculates the covariance matrix from a \code{nma} object as obtained from function \code{nma.pdb} or covariance matrices from a \code{enma} object as obtain from function \code{nma.pdbs}. } \value{ Returns the calculated covariance matrix (function \code{cov.nma}), or covariance matrices (function \code{cov.enma}). } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. Fuglebakk, E. et al. (2013) \emph{JCTC} \bold{9}, 5618--5628. } \author{ Lars Skjaerven } \seealso{ \code{\link{nma}} } \keyword{ utilities } bio3d/man/sdENM.Rd0000644000176200001440000000225714707230357013300 0ustar liggesusers\name{sdENM} \alias{sdENM} \title{ Index for the sdENM ff } \description{ A dictonary of spring force constants for the sdENM force field. } \usage{ data(sdENM) } \format{ An array of 27 matrices containg the spring force constants for the \sQuote{sdENM} force field (see Dehouch et al for more information). Each matrix in the array holds the force constants for all amino acid pairs for a specific distance range. See examples for more details. } \source{ Dehouck Y. & Mikhailov A.S. (2013) \emph{PLoS Comput Biol} \bold{9}:e1003209. } \references{ Skjaerven, L. et al. (2014) \emph{BMC Bioinformatics} \bold{15}, 399. Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. Dehouck Y. et al. (2013) \emph{PLoS Comput Biol} \bold{9}:e1003209. } \examples{ ## Load force constant data data(sdENM) ## force constants for amino acids A, C, D, E, and F ## in distance range [4, 4.5) sdENM[1:5, 1:5, 1] ## and distance range [4.5, 5) sdENM[1:5, 1:5, 2] ## amino acid pair A-P, at distance 4.2 sdENM["A", "P", 1] \dontrun{ ## for use in NMA pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) modes <- nma(pdb, ff="sdenm") } } \keyword{datasets} bio3d/man/trim.pdbs.Rd0000644000176200001440000000403414707230357014227 0ustar liggesusers\name{trim.pdbs} \alias{trim.pdbs} \title{ Filter or Trim a PDBs Object } \description{ Trim residues and/or filter out structures from a PDBs object. } \usage{ \method{trim}{pdbs}(pdbs, row.inds=NULL, col.inds=NULL, \dots) } \arguments{ \item{pdbs}{ an object of class \code{pdbs} as obtained from function \code{pdbaln} or \code{read.fasta.pdb}; a xyz matrix containing the cartesian coordinates of C-alpha atoms. } \item{row.inds }{ a numeric vector of indices pointing to the PDB structures to keep (rows in the \code{pdbs$ali} matrix). } \item{col.inds }{ a numeric vector of indices pointing to the alignment columns to keep (columns in the \code{pdbs$ali} matrix). } \item{\dots}{ additional arguments passed to and from functions. } } \details{ Utility function to remove structures, or trim off columns, in a \sQuote{pdbs} object. } \value{ Returns an updated \sQuote{pdbs} object with the following components: \item{xyz}{numeric matrix of aligned C-alpha coordinates.} \item{resno}{character matrix of aligned residue numbers.} \item{b}{numeric matrix of aligned B-factor values.} \item{chain}{character matrix of aligned chain identifiers.} \item{id}{character vector of PDB sequence/structure names.} \item{ali}{character matrix of aligned sequences.} \item{call}{ the matched call. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{pdbaln}}, \code{\link{gap.inspect}}, \code{\link{read.fasta}},\code{\link{read.fasta.pdb}}, \code{\link{trim.pdb}}, } \examples{ \dontrun{ ## Fetch PDB files and split to chain A only PDB files ids <- c("1a70_A", "1czp_A", "1frd_A", "1fxi_A", "1iue_A", "1pfd_A") raw.files <- get.pdb(ids, path = "raw_pdbs") files <- pdbsplit(raw.files, ids, path = "raw_pdbs/split_chain") ## Sequence Alignement, and connectivity check pdbs <- pdbaln(files) cons <- inspect.connectivity(pdbs) ## omit files with missing residues trim.pdbs(pdbs, row.inds=which(cons)) } } \keyword{ utilities }bio3d/man/plot.core.Rd0000644000176200001440000000514214707230357014233 0ustar liggesusers\name{plot.core} \alias{plot.core} \title{ Plot Core Fitting Progress } \description{ Plots the total ellipsoid volume of core positions versus core size at each iteration of the core finding process. } \usage{ \method{plot}{core}(x, y = NULL, type = "h", main = "", sub = "", xlim = NULL, ylim = NULL, xlab = "Core Size (Number of Residues)", ylab = "Total Ellipsoid Volume (Angstrom^3)", axes = TRUE, ann = par("ann"), col = par("col"), ...) } \arguments{ \item{x}{ a list object obtained with the function \code{\link{core.find}} from which the \sQuote{volume} component is taken as the x coordinates for the plot. } \item{y}{ the y coordinates for the plot. } \item{type}{ one-character string giving the type of plot desired. } \item{main}{ a main title for the plot, see also \sQuote{title}. } \item{sub}{ a sub-title for the plot. } \item{xlim}{ the x limits of the plot. } \item{ylim}{ the y limits of the plot. } \item{xlab}{ a label for the x axis. } \item{ylab}{ a label for the y axis. } \item{axes}{ a logical value indicating whether both axes should be drawn. } \item{ann}{ a logical value indicating whether the default annotation (title and x and y axis labels) should appear on the plot. } \item{col}{ The colors for lines and points. Multiple colours can be specified so that each point is given its own color. If there are fewer colors than points they are recycled in the standard fashion. } \item{\dots}{ extra plotting arguments. } } \value{ Called for its effect. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \note{ The produced plot can be useful for deciding on the core/non-core boundary. } \seealso{ \code{\link{core.find}}, \code{\link{print.core}}} \examples{ \dontrun{ ##-- Generate a small kinesin alignment and read corresponding structures pdbfiles <- get.pdb(c("1bg2","2ncd","1i6i","1i5s"), URLonly=TRUE) pdbs <- pdbaln(pdbfiles) ##-- Find 'core' positions core <- core.find(pdbs) plot(core) ##-- Fit on these relatively invarient subset of positions core.inds <- print(core) xyz <- pdbfit(pdbs, core.inds, outpath="corefit_structures") ##-- Compare to fitting on all equivalent positions xyz2 <- pdbfit(pdbs) ## Note that overall RMSD will be higher but RMSF will ## be lower in core regions, which may equate to a ## 'better fit' for certain applications gaps <- gap.inspect(pdbs$xyz) rmsd(xyz[,gaps$f.inds]) rmsd(xyz2[,gaps$f.inds]) plot(rmsf(xyz[,gaps$f.inds]), typ="l", col="blue", ylim=c(0,9)) points(rmsf(xyz2[,gaps$f.inds]), typ="l", col="red") } } \keyword{ hplot } bio3d/man/aa.index.Rd0000644000176200001440000000402014707230357014007 0ustar liggesusers\name{aa.index} \alias{aa.index} \docType{data} \title{ AAindex: Amino Acid Index Database } \description{ A collection of published indices, or scales, of numerous physicochemical and biological properties of the 20 standard aminoacids (Release 9.1, August 2006). } \usage{data(aa.index)} \format{ A list of 544 named indeces each with the following components: \enumerate{ \item H, character vector: Accession number. \item D, character vector: Data description. \item R, character vector: LITDB entry number. \item A, character vector: Author(s). \item T, character vector: Title of the article. \item J, character vector: Journal reference. \item C, named numeric vector: Correlation coefficients of similar indeces (with coefficients of 0.8/-0.8 or more/less). The correlation coefficient is calculated with zeros filled for missing values. \item I, named numeric vector: Amino acid index data. } } \source{ \sQuote{AAIndex} was obtained from:\cr \url{https://www.genome.jp/aaindex/}\cr For a description of the \sQuote{AAindex} database see:\cr \url{https://www.genome.jp/aaindex/aaindex_help.html}. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. \sQuote{AAIndex} is the work of Kanehisa and co-workers:\cr Kawashima and Kanehisa (2000) \emph{Nucleic Acids Res.} \bold{28}, 374;\cr Tomii and Kanehisa (1996) \emph{Protein Eng.} \bold{9}, 27--36;\cr Nakai, Kidera and Kanehisa (1988) \emph{Protein Eng.} \bold{2}, 93--100. } \examples{ ## Load AAindex data data(aa.index) ## Find all indeces described as "volume" ind <- which(sapply(aa.index, function(x) length(grep("volume", x$D, ignore.case=TRUE)) != 0)) ## find all indeces with author "Kyte" ind <- which(sapply(aa.index, function(x) length(grep("Kyte", x$A)) != 0)) ## examine the index aa.index[[ind]]$I ## find indeces which correlate with it all.ind <- names(which(Mod(aa.index[[ind]]$C) >= 0.88)) ## examine them all sapply(all.ind, function (x) aa.index[[x]]$I) } \keyword{datasets} bio3d/man/atom2mass.Rd0000644000176200001440000000600214707230357014230 0ustar liggesusers\encoding{UTF-8} \name{atom2mass} \alias{atom2mass} \alias{atom2mass.default} \alias{atom2mass.pdb} \title{ Atom Names/Types to Mass Converter } \description{ Convert atom names/types into atomic masses. } \usage{ atom2mass(\dots) \method{atom2mass}{default}(x, mass.custom=NULL, elety.custom=NULL, grpby=NULL, rescue=TRUE, \dots) \method{atom2mass}{pdb}(pdb, inds=NULL, mass.custom=NULL, elety.custom=NULL, grpby=NULL, rescue=TRUE, \dots) } \arguments{ \item{x}{ a character vector containing atom names/types to be converted. } \item{mass.custom}{ a customized data.frame containing atomic symbols and corresponding masses. } \item{elety.custom}{ a customized data.frame containing atom names/types and corresponding atomic symbols.} \item{grpby}{a \sQuote{factor}, as returned by \code{as.factor}, used to group the atoms.} \item{rescue}{ logical, if TRUE the atomic symbols will be mapped to the first character of the atom names/types.} \item{pdb}{ an object of class \sQuote{pdb} for which \code{elety} will be converted.} \item{inds}{ an object of class \sQuote{select} indicating a subset of the \code{pdb} object to be used (see \code{\link{atom.select}} and \code{\link{trim.pdb}}).} \item{\dots}{.} } \details{ The default method first convert atom names/types into atomic symbols using the \code{\link{atom2ele}} function. Then, atomic symbols are searched in the \code{elements} data set and their corresponding masses are returned. If \code{mass.custom} is specified it is combined with \code{elements} (using \code{rbind}) before searching. Therefore, \code{mass.custom} must have columns named \code{symb} and \code{mass} (see examples). If \code{grpby} is specified masses are splitted (using \code{split}) to compute the mass of groups of atoms defined by \code{grpby}. The S3 method for object of class \sQuote{pdb}, pass \code{pdb$atom$elety} to the default method. } \value{Return a numeric vector of masses.} \author{Julien Ide, Lars Skjaerven} \seealso{ \code{\link{elements}}, \code{\link{atom.index}}, \code{\link{atom2ele}}, \code{\link{read.pdb}} } \examples{ atom.names <- c("CA", "O", "N", "OXT") atom2mass(atom.names) \donttest{ # PDB server connection required - testing excluded try({ ## Get atomic symbols from a PDB object with a customized data set pdb <- read.pdb("3RE0", verbose=FALSE) inds <- atom.select(pdb, resno=201, verbose=FALSE) ## selected atoms print(pdb$atom$elety[inds$atom]) ## default will map CL2 to C atom2mass(pdb, inds) ## map element CL2 correctly to Cl myelety <- data.frame(name = c("CL2","PT1","N1","N2"), symb = c("Cl","Pt","N","N")) atom2mass(pdb, inds, elety.custom = myelety) ## custom masses mymasses <- data.frame(symb = c("Cl","Pt"), mass = c(35.45, 195.08)) atom2mass(pdb, inds, elety.custom = myelety, mass.custom = mymasses) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } \keyword{ utilities } bio3d/man/trim.mol2.Rd0000644000176200001440000000245614707230357014156 0ustar liggesusers\name{trim.mol2} \alias{trim.mol2} \title{ Trim a MOL2 Object To A Subset of Atoms. } \description{ Produce a new smaller MOL2 object, containing a subset of atoms, from a given larger MOL2 object. } \usage{ \method{trim}{mol2}(mol, \dots, inds = NULL) } \arguments{ \item{mol}{ a MOL2 structure object obtained from \code{\link{read.mol2}}. } \item{\dots}{ additional arguments passed to \code{\link{atom.select}}. If \code{inds} is also provided, these arguments will be ignored. } \item{inds}{ a list object of ATOM and XYZ indices as obtained from \code{\link{atom.select}}. If NULL, atom selection will be obtained from calling \code{atom.select(mol, \dots)}. } } \details{ This is a basic utility function for creating a new MOL2 object based on a selection of atoms. } \value{ Returns a list of class \code{"mol2"}. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{read.mol2}}, \code{\link{atom.select.mol2}}, \code{\link{as.pdb.mol2}}, \code{\link{write.mol2}}, } \examples{ \dontrun{ ## Read a MOL2 file from those included with the package mol <- read.mol2( system.file("examples/aspirin.mol2", package="bio3d")) ## Trim away H-atoms mol <- trim(mol, "noh") } } \keyword{ utilities } bio3d/man/rmsd.Rd0000644000176200001440000000517614707230357013302 0ustar liggesusers\name{rmsd} \alias{rmsd} \title{ Root Mean Square Deviation } \description{ Calculate the RMSD between coordinate sets. } \usage{ rmsd(a, b=NULL, a.inds=NULL, b.inds=NULL, fit=FALSE, ncore=1, nseg.scale=1) } \arguments{ \item{a}{ a numeric vector containing the reference coordinate set for comparison with the coordinates in \code{b}. Alternatively, if \code{b=NULL} then \code{a} can be a matrix or list object containing multiple coordinates for pairwise comparison. } \item{b}{ a numeric vector, matrix or list object with an \code{xyz} component, containing one or more coordinate sets to be compared with \code{a}. } \item{a.inds }{ a vector of indices that selects the elements of \code{a} upon which the calculation should be based. } \item{b.inds }{ a vector of indices that selects the elements of \code{b} upon which the calculation should be based. } \item{fit }{logical, if TRUE coordinate superposition is performed prior to RMSD calculation. } \item{ncore }{ number of CPU cores used to do the calculation. \code{ncore>1} requires package \sQuote{parallel} installed. } \item{nseg.scale }{ split input data into specified number of segments prior to running multiple core calculation. See \code{\link{fit.xyz}}. } } \details{ RMSD is a standard measure of structural distance between coordinate sets. Structure \code{a[a.inds]} and \code{b[b.inds]} should have the same length. A least-squares fit is performed prior to RMSD calculation by setting \code{fit=TRUE}. See the function \code{fit.xyz} for more details of the fitting process. } \value{ Returns a numeric vector of RMSD value(s). } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \seealso{ \code{\link{fit.xyz}}, \code{\link{rot.lsq}}, \code{\link{read.pdb}}, \code{\link{read.fasta.pdb}} } \examples{ \donttest{ # Redundant testing excluded try({ # -- Calculate RMSD between two or more structures aln <- read.fasta(system.file("examples/kif1a.fa",package="bio3d")) pdbs <- read.fasta.pdb(aln) # Gap positions inds <- gap.inspect(pdbs$xyz) # Superposition before pairwise RMSD rmsd(pdbs$xyz, fit=TRUE) # RMSD between structure 1 and structures 2 and 3 rmsd(a=pdbs$xyz[1,], b=pdbs$xyz[2:3,], a.inds=inds$f.inds, b.inds=inds$f.inds, fit=TRUE) # RMSD between structure 1 and all structures in alignment rmsd(a=pdbs$xyz[1,], b=pdbs, a.inds=inds$f.inds, b.inds=inds$f.inds, fit=TRUE) # RMSD without superposition rmsd(pdbs$xyz) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } \keyword{ utilities } bio3d/man/cat.pdb.Rd0000644000176200001440000000234014707230357013636 0ustar liggesusers\name{cat.pdb} \alias{cat.pdb} \title{ Concatenate Multiple PDB Objects } \description{ Produce a new concatenated PDB object from two or more smaller PDB objects. } \usage{ cat.pdb(\dots, renumber=FALSE, rechain=TRUE) } \arguments{ \item{\dots}{ two or more PDB structure objects obtained from \code{\link{read.pdb}}. } \item{renumber}{ logical, if \sQuote{TRUE} residues will be renumbered. } \item{rechain}{ logical, if \sQuote{TRUE} molecules will be assigned new chain identifiers. } } \details{ This is a basic utility function for creating a concatenated PDB object based on multipe smaller PDB objects. } \value{ Returns an object of class \code{"pdb"}. See \code{\link{read.pdb}} for further details. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{read.pdb}}, \code{\link{atom.select}}, \code{\link{write.pdb}}, \code{\link{trim.pdb}} } \examples{ \dontrun{ ## Read a PDB file from the RCSB online database pdb1 <- read.pdb("1etl") pdb2 <- read.pdb("1hel") ## Concat new.pdb <- cat.pdb(pdb1, pdb2, pdb1, rechain=TRUE, renumber=TRUE) ## Write to file write.pdb(new.pdb, file="concat.pdb") } } \keyword{ utilities } bio3d/man/rle2.Rd0000644000176200001440000000260114707230357013167 0ustar liggesusers\name{rle2} \title{Run Length Encoding with Indices} \alias{rle2} \alias{print.rle2} \concept{runs} \description{ Compute the lengths, values and indices of runs of equal values in a vector. This is a modifed version of base function \code{rle()}. } \usage{ rle2(x) \method{print}{rle2}(x, digits = getOption("digits"), prefix = "", \dots) } \arguments{ \item{x}{an atomic vector for \code{rle()}; an object of class \code{"rle"} for \code{inverse.rle()}.} \item{\dots}{further arguments; ignored here.} \item{digits}{number of significant digits for printing, see \code{\link{print.default}}.} \item{prefix}{character string, prepended to each printed line.} } \details{ Missing values are regarded as unequal to the previous value, even if that is also missing. \code{inverse.rle()} is the inverse function of \code{rle2()} and \code{rle()}, reconstructing \code{x} from the runs. } \value{ \code{rle()} returns an object of class \code{"rle"} which is a list with components: \item{lengths}{an integer vector containing the length of each run.} \item{values}{a vector of the same length as \code{lengths} with the corresponding values.} } \examples{ x <- rev(rep(6:10, 1:5)) rle(x) ## lengths [1:5] 5 4 3 2 1 ## values [1:5] 10 9 8 7 6 rle2(x) ## lengths: int [1:5] 5 4 3 2 1 ## values : int [1:5] 10 9 8 7 6 ## indices: int [1:5] 5 9 12 14 15 } \keyword{manip} bio3d/man/store.atom.Rd0000644000176200001440000000153714707230357014425 0ustar liggesusers\name{store.atom} \alias{store.atom} \title{ Store all-atom data from a PDB object } \description{ Not intended for public usage } \usage{ store.atom(pdb=NULL) } \arguments{ \item{pdb}{ A pdb object as obtained from read.pdb } } \details{ This function was requested by a user and has not been extensively tested. Hence it is not yet recommended for public usage. } \value{ Returns a matrix of all-atom data. If \code{pdb=NULL}, returns the default atom names to be stored. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \note{ This function is still in development and is NOT part of the offical bio3d package } \seealso{ \code{\link{read.fasta.pdb}} } \examples{ \dontrun{ pdb <- read.pdb( get.pdb("5p21", URLonly=TRUE) ) a <- store.atom(pdb) a[,,1:2] } } \keyword{ utilities } bio3d/man/is.gap.Rd0000644000176200001440000000364614707230357013516 0ustar liggesusers\name{is.gap} \alias{is.gap} \title{ Gap Characters } \description{ Test for the presence of gap characters. } \usage{ is.gap(x, gap.char = c("-", ".")) } \arguments{ \item{x}{ an R object to be tested. Typically a sequence vector or sequence/structure alignment object as returned from \code{seqaln}, \code{pdbaln} etc. } \item{gap.char}{ a character vector containing the gap character types to test for. } } \value{ Returns a logical vector with the same length as the input vector, or the same length as the number of columns present in an alignment input object \sQuote{x}. In the later case TRUE elements corresponding to \sQuote{gap.char} matches in any alignment column (i.e. gap containing columns). } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \note{ During alignment, gaps are introduced into sequences that are believed to have undergone deletions or insertions with respect to other sequences in the alignment. These gaps, often referred to as indels, can be represented with \sQuote{NA}, \sQuote{-} or \sQuote{.} characters. This function provides a simple test for the presence of such characters, or indeed any set of user defined characters set by the \sQuote{gap.char} argument. } \seealso{ \code{\link{gap.inspect}}, \code{\link{read.fasta}}, \code{\link{read.fasta.pdb}}, \code{\link{seqaln}}, \code{\link{pdbaln}} } \examples{ is.gap( c("G",".","X","-","G","K","S","T") ) \dontrun{ aln <- read.fasta( system.file("examples/kif1a.fa", package = "bio3d") ) ##- Print only non-gap positions (i.e. no gaps in any sequence) aln$ali[, !is.gap(aln) ] ##- Mask any existing gaps with an "X" xaln <- aln xaln$ali[ is.gap(xaln$ali) ]="X" ##- Read a new PDB and align its sequence to the existing masked alignment pdb <- read.pdb( "1mkj" ) seq2aln(pdbseq(pdb), xaln, id = "1mkj") } } \keyword{ utilities } bio3d/man/seqaln.Rd0000644000176200001440000001664114707230357013617 0ustar liggesusers\name{seqaln} \alias{seqaln} \title{ Sequence Alignment with MUSCLE} \description{ Create multiple alignments of amino acid or nucleotide sequences according to the method of Edgar. } \usage{ seqaln(aln, id=NULL, profile=NULL, exefile="muscle", outfile="aln.fa", protein=TRUE, seqgroup=FALSE, refine=FALSE, extra.args="", verbose=FALSE, web.args = list(), \dots) } \arguments{ \item{aln}{ a sequence character matrix, as obtained from \code{\link{seqbind}}, or an alignment list object as obtained from \code{\link{read.fasta}}. } \item{id}{ a vector of sequence names to serve as sequence identifers. } \item{profile}{ a profile alignment of class \sQuote{fasta} (e.g. obtained from \code{\link{read.fasta}}). The alignment \code{aln} will be added to the profile. } \item{exefile}{ file path to the \sQuote{MUSCLE} program on your system (i.e. how is \sQuote{MUSCLE} invoked). Alternatively, \sQuote{CLUSTALO} can be used. Also supported is using the \sQuote{msa} package from Bioconductor (need to install packages using \code{BiocManager::install()}). To do so, simply set \code{exefile="msa"}. } \item{outfile}{ name of \sQuote{FASTA} output file to which alignment should be written. } \item{protein}{ logical, if TRUE the input sequences are assumed to be protein not DNA or RNA. } \item{seqgroup}{ logical, if TRUE similar sequences are grouped together in the output. } \item{refine}{ logical, if TRUE the input sequences are assumed to already be aligned, and only tree dependent refinement is performed. } \item{extra.args}{ a single character string containing extra command line arguments for the alignment program. } \item{verbose}{ logical, if TRUE \sQuote{MUSCLE} warning and error messages are printed. } \item{web.args}{ a \sQuote{list} object containing arguments to perform online sequence alignment using EMBL-EBI Web Services. See below for details. } \item{\dots}{ additional arguments passed to the function \code{msa::msaMuscle()}. } } \details{ Sequence alignment attempts to arrange the sequences of protein, DNA or RNA, to highlight regions of shared similarity that may reflect functional, structural, and/or evolutionary relationships between the sequences. Aligned sequences are represented as rows within a matrix. Gaps (\sQuote{-}) are inserted between the aminoacids or nucleotides so that equivalent characters are positioned in the same column. This function calls the \sQuote{MUSCLE} program to perform a multiple sequence alignment, which must be installed on your system and in the search path for executables. If local \sQuote{MUSCLE} can not be found, alignment can still be performed via online web services (see below) with limited features. If you have a large number of input sequences (a few thousand), or they are very long, the default settings may be too slow for practical use. A good compromise between speed and accuracy is to run just the first two iterations of the \sQuote{MUSCLE} algorithm by setting the \code{extra.args} argument to \dQuote{-maxiters 2}. You can set \sQuote{MUSCLE} to improve an existing alignment by setting \code{refine} to TRUE. To inspect the sequence clustering used by \sQuote{MUSCLE} to produce alignments, include \dQuote{-tree2 tree.out} in the \code{extra.args} argument. You can then load the \dQuote{tree.out} file with the \sQuote{read.tree} function from the \sQuote{ape} package. \sQuote{CLUSTALO} can be used as an alternative to \sQuote{MUSCLE} by specifiying \code{exefile='clustalo'}. This might be useful e.g. when adding several sequences to a profile alignment. If local \sQuote{MUSCLE} or \sQuote{CLUSTALO} program is unavailable, the alignment can be performed via the \sQuote{msa} package from the Bioconductor repository. To do so, set \code{exefile="msa"}. Note that both \sQuote{msa} and \sQuote{Biostrings} packages need to be installed properly using \code{BiocManager::install()}. If the access to any method metioned above fails, the function will attempt to perform alignment via the EMBL-EBI Web Services (See \url{https://www.ebi.ac.uk/}). In this case, the argument \code{web.args} cannot be empty and must contain at least user's E-Mail address. Note that as stated by EBI, a fake email address may result in your jobs being killed and your IP, organisation or entire domain being black-listed (See FAQs on \url{https://www.ebi.ac.uk/}). Possible parameters to be passed via \code{web.args} include: \describe{ \item{email}{ a string containing a valid E-Mail address. Required. } \item{title}{ a string for the title of the job to be submitted to the remote server. Optional. } \item{timeout}{ integer specifying the number of seconds to wait for the response of the server before a time out occurs. Default: 90. } } An example of usage is \code{web.args=list(email='user_id@email.provider')}. } \value{ Returns a list of class \code{"fasta"} with the following components: \item{ali}{ an alignment character matrix with a row per sequence and a column per equivalent aminoacid/nucleotide. } \item{id}{ sequence names as identifers.} \item{call}{ the matched call. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. \sQuote{MUSCLE} is the work of Edgar: Edgar (2004) \emph{Nuc. Acid. Res.} \bold{32}, 1792--1797. Full details of the \sQuote{MUSCLE} algorithm, along with download and installation instructions can be obtained from:\cr \url{http://www.drive5.com/muscle/}. } \author{ Barry Grant } \note{ A system call is made to the \sQuote{MUSCLE} program, which must be installed on your system and in the search path for executables. See \url{http://thegrantlab.org/bio3d/articles/online/install_vignette/Bio3D_install.html} for instructions of how to install this program. } \seealso{ \code{\link{read.fasta}}, \code{\link{read.fasta.pdb}}, \code{\link{get.seq}}, \code{\link{seqbind}}, \code{\link{pdbaln}}, \code{\link{plot.fasta}}, \code{\link{blast.pdb}} } \examples{ \dontrun{ ##-- Basic sequence alignemnt seqs <- get.seq(c("4q21_A", "1ftn_A")) aln <- seqaln(seqs) ##-- add a sequence to the (profile) alignment seq <- get.seq("1tnd_A") aln <- seqaln(seq, profile=aln) ##-- Read a folder/directory of PDB files #pdb.path <- "my_dir_of_pdbs" #files <- list.files(path=pdb.path , # pattern=".pdb", # full.names=TRUE) ##-- Use online files files <- get.pdb(c("4q21","1ftn"), URLonly=TRUE) ##-- Extract and store sequences raw <- NULL for(i in 1:length(files)) { pdb <- read.pdb(files[i]) raw <- seqbind(raw, pdbseq(pdb) ) } ##-- Align these sequences aln <- seqaln(raw, id=files, outfile="seqaln.fa") ##-- Read Aligned PDBs storing coordinate data pdbs <- read.fasta.pdb(aln) ## Sequence identity seqidentity(aln) ## Note that all the above can be done with the pdbaln() function: #pdbs <- pdbaln(files) ##-- For identical sequences with masking use a custom matrix aa <- seqbind(c("X","C","X","X","A","G","K"), c("C","-","A","X","G","X","X","K")) aln <- seqaln(aln=aln, id=c("a","b"), outfile="temp.fas", protein=TRUE, extra.args= paste("-matrix", system.file("matrices/custom.mat", package="bio3d"), "-gapopen -3.0 ", "-gapextend -0.5", "-center 0.0") ) } } \keyword{ utilities } bio3d/man/write.pir.Rd0000644000176200001440000000474114707230357014255 0ustar liggesusers\name{write.pir} \alias{write.pir} \title{ Write PIR Formated Sequences } \description{ Write aligned or un-aligned sequences to a PIR format file. } \usage{ write.pir(alignment=NULL, ids=NULL, seqs=alignment$ali, pdb.file = NULL, chain.first = NULL, resno.first = NULL, chain.last = NULL, resno.last = NULL, file, append = FALSE) } \arguments{ \item{alignment}{ an alignment list object with \code{id} and \code{ali} components, similar to that generated by \code{\link{read.fasta}}. } \item{ids}{ a vector of sequence names to serve as sequence identifers } \item{seqs}{ an sequence or alignment character matrix or vector with a row per sequence } \item{pdb.file}{ a vector of pdb filenames; For sequence, provide "". } \item{chain.first}{ a vector of chain id for the first residue. } \item{resno.first}{ a vector of residue number for the first residue. } \item{chain.last}{ a vector of chain id for the last residue. } \item{resno.last}{ a vector of residue number for the last residue. } \item{file}{ name of output file. } \item{append}{ logical, if TRUE output will be appended to \code{file}; otherwise, it will overwrite the contents of \code{file}. } } \value{ Called for its effect. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Xin-Qiu Yao } \note{ PIR is required format for input alignment file to use Modeller. For a description of PIR format see: \url{https://salilab.org/modeller/manual/node501.html}. } \seealso{ \code{\link{read.fasta}}, \code{\link{read.fasta.pdb}}, \code{\link{write.fasta}} } \examples{ \donttest{ # Needs MUSCLE installed - testing excluded if(check.utility("muscle")) { try({ ## Generate an input file for structural modeling of ## transducin G-alpha subunit using the template 3SN6_A ## Read transducin alpha subunit sequence seq <- get.seq("P04695", outfile = tempfile()) ## Read structure template path = tempdir() pdb.file <- get.pdb("3sn6_A", path = path, split = TRUE) pdb <- read.pdb(pdb.file) ## Build an alignment between template and target aln <- seqaln(seqbind(pdbseq(pdb), seq), id = c("3sn6_A", seq$id), outfile = tempfile()) ## Write PIR format alignment file outfile = file.path(tempdir(), "eg.pir") write.pir(aln, pdb.file = c(pdb.file, ""), file = outfile) invisible( cat("\nSee the output file:", outfile, sep = "\n") ) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } } \keyword{ IO } bio3d/man/deformation.nma.Rd0000644000176200001440000000430414707230357015406 0ustar liggesusers\name{deformation.nma} \alias{deformation.nma} \title{ Deformation Analysis } \description{ Calculate deformation energies from Normal Mode Analysis. } \usage{ deformation.nma(nma, mode.inds = NULL, pfc.fun = NULL, ncore = NULL) } \arguments{ \item{nma}{ a list object of class \code{"nma"} (obtained with \code{\link{nma}}).} \item{mode.inds}{ a numeric vector of mode indices in which the calculation should be based. } \item{pfc.fun}{ customized pair force constant (\sQuote{pfc}) function. The provided function should take a vector of distances as an argument to return a vector of force constants. See \code{nma} for examples. } \item{ncore }{ number of CPU cores used to do the calculation. \code{ncore>1} requires package \sQuote{parallel} installed. } } \details{ Deformation analysis provides a measure for the amount of local flexibility of the protein structure - i.e. atomic motion relative to neighbouring atoms. It differs from \sQuote{fluctuations} (e.g. RMSF values) which provide amplitudes of the absolute atomic motion. Deformation energies are calculated based on the \code{nma} object. By default the first 20 non-trivial modes are included in the calculation. See examples for more details. } \value{ Returns a list with the following components: \item{ei }{ numeric matrix containing the energy contribution (E) from each atom (i; row-wise) at each mode index (column-wise). } \item{sums }{ deformation energies corresponding to each mode. } } \references{ Hinsen, K. (1998) \emph{Proteins} \bold{33}, 417--429. Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{nma} } } \examples{ \donttest{ # Running the example takes some time - testing excluded ## Fetch stucture pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) ## Calculate (vibrational) normal modes modes <- nma(pdb) ## Calculate deformation energies def.energies <- deformation.nma(modes) } \dontrun{ ## Fluctuations of first non-trivial mode def.energies <- deformation.nma(modes, mode.inds=seq(7, 16)) write.pdb(pdb=NULL, xyz=modes$xyz, b=def.energies$ei[,1]) } } \keyword{ analysis } bio3d/man/overlap.Rd0000644000176200001440000000554014707230357014000 0ustar liggesusers\name{overlap} \alias{overlap} \title{ Overlap analysis } \description{ Calculate the squared overlap between sets of vectors. } \usage{ overlap(modes, dv, nmodes=20) } \arguments{ \item{modes}{ an object of class \code{"pca"} or \code{"nma"} as obtained from function \code{pca.xyz} or \code{nma}. Alternatively a 3NxM matrix of eigenvectors can be provided. } \item{dv}{ a displacement vector of length 3N. } \item{nmodes}{ the number of modes in which the calculation should be based. } } \details{ Squared overlap (or dot product) is used to measure the similiarity between a displacement vector (e.g. a difference vector between two conformational states) and mode vectors obtained from principal component or normal modes analysis. By definition the cumulative sum of the overlap values equals to one. Structure \code{modes$U} (or alternatively, the 3NxM matrix of eigenvectors) should be of same length (3N) as \code{dv}. } \value{ Returns a list with the following components: \item{overlap}{ a numeric vector of the squared dot products (overlap values) between the (normalized) vector (\code{dv}) and each mode in \code{mode}. } \item{overlap.cum}{ a numeric vector of the cumulative squared overlap values. } } \references{ Skjaerven, L. et al. (2011) \emph{Proteins} \bold{79}, 232--243. Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{rmsip}}, \code{\link{pca.xyz}}, \code{\link{nma}}, \code{\link{difference.vector}} } \examples{ attach(kinesin) # Ignore gap containing positions ##gaps.res <- gap.inspect(pdbs$ali) gaps.pos <- gap.inspect(pdbs$xyz) #-- Do PCA pc.xray <- pca.xyz(pdbs$xyz[, gaps.pos$f.inds]) # Define a difference vector between two structural states diff.inds <- c(grep("d1v8ka", pdbs$id), grep("d1goja", pdbs$id)) dv <- difference.vector( pdbs$xyz[diff.inds,], gaps.pos$f.inds ) # Calculate the squared overlap between the PCs and the difference vector o <- overlap(pc.xray, dv) o <- overlap(pc.xray$U, dv) # Plot results plot(o$overlap, type='h', ylim=c(0,1)) points(o$overlap) lines(o$overlap.cum, type='b', col='red') detach(kinesin) \dontrun{ ## Calculate overlap from NMA pdb.a <- read.pdb("1cmk") pdb.b <- read.pdb("3dnd") ## Fetch CA coordinates sele.a <- atom.select(pdb.a, chain='E', resno=c(15:350), elety='CA') sele.b <- atom.select(pdb.b, chain='A', resno=c(1:350), elety='CA') xyz <- rbind(pdb.a$xyz[sele.a$xyz], pdb.b$xyz[sele.b$xyz]) ## Superimpose xyz[2,] <- fit.xyz(xyz[1,], xyz[2,], 1:ncol(xyz)) ## The difference between the two conformations dv <- difference.vector( xyz ) ## Calculate normal modes modes <- nma(pdb.a, inds=sele.a) # Calculate the squared overlap between the normal modes # and the difference vector o <- overlap(modes, dv) } } \keyword{ utilities } bio3d/man/write.crd.Rd0000644000176200001440000000415214707276436014237 0ustar liggesusers\name{write.crd} \alias{write.crd} \title{ Write CRD File } \description{ Write a CHARMM CARD (CRD) coordinate file. } \usage{ write.crd(pdb = NULL, xyz = pdb$xyz, resno = NULL, resid = NULL, eleno = NULL, elety = NULL, segid = NULL, resno2 = NULL, b = NULL, verbose = FALSE, file = "R.crd") } \arguments{ \item{pdb}{ a structure object obtained from \code{\link{read.pdb}} or \code{\link{read.crd}}. } \item{xyz}{ Cartesian coordinates as a vector or 3xN matrix. } \item{resno}{ vector of residue numbers of length equal to length(xyz)/3. } \item{resid}{ vector of residue types/ids of length equal to length(xyz)/3. } \item{eleno}{ vector of element/atom numbers of length equal to length(xyz)/3. } \item{elety}{ vector of element/atom types of length equal to length(xyz)/3. } \item{segid}{ vector of segment identifiers with length equal to length(xyz)/3. } \item{resno2}{ vector of alternate residue numbers of length equal to length(xyz)/3. } \item{b}{ vector of weighting factors of length equal to length(xyz)/3. } \item{verbose}{ logical, if TRUE progress details are printed. } \item{file}{ the output file name. } } \details{ Only the \code{xyz} argument is strictly required. Other arguments assume a default poly-ALA C-alpha structure with a blank segid and B-factors equal to 0.00. } \value{ Called for its effect. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. For a description of CHARMM CARD (CRD) format see:\cr \url{https://academiccharmm.org/documentation/version/c49b1/io#Coordinate}. } \author{ Barry Grant } \note{ Check that \code{resno} and \code{eleno} do not exceed \dQuote{9999}. } \seealso{ \code{\link{read.crd}}, \code{\link{read.pdb}}, \code{\link{atom.select}}, \code{\link{write.pdb}}, \code{\link{read.dcd}}, \code{\link{read.fasta.pdb}}, \code{\link{read.fasta}} } \examples{ \dontrun{ # Read a PDB file pdb <- read.pdb( "1bg2" ) summary(pdb) # Convert to CHARMM format new <- convert.pdb(pdb, type="charmm") summary(new) # Write a CRD file write.crd(new, file="4charmm.crd") } } \keyword{ IO } bio3d/man/read.fasta.pdb.Rd0000644000176200001440000000720014707230357015077 0ustar liggesusers\name{read.fasta.pdb} \alias{read.fasta.pdb} \title{ Read Aligned Structure Data } \description{ Read aligned PDB structures and store their C-alpha atom data, including xyz coordinates, residue numbers, residue type and B-factors. } \usage{ read.fasta.pdb(aln, prefix = "", pdbext = "", fix.ali = FALSE, pdblist=NULL, ncore = 1, nseg.scale = 1, progress = NULL, ...) } \arguments{ \item{aln}{ an alignment data structure obtained with \code{\link{read.fasta}}. } \item{prefix}{ prefix to aln$id to locate PDB files. } \item{pdbext}{ the file name extention of the PDB files. } \item{fix.ali}{ logical, if TRUE check consistence between \code{$ali} and \code{$resno}, and correct \code{$ali} if they don't match. } \item{pdblist}{ an optional list of \code{pdb} objects with sequence corresponding to the alignments in \code{aln}. Primarily used through function \code{pdbaln} when the PDB objects already exists (avoids reading PDBs from file). } \item{ncore }{ number of CPU cores used to do the calculation. \code{ncore>1} requires package \sQuote{parallel} installed. } \item{nseg.scale }{ split input data into specified number of segments prior to running multiple core calculation. See \code{\link{fit.xyz}}. } \item{progress}{ progress bar for use with shiny web app. } \item{\dots}{ other parameters for \code{\link{read.pdb}}. } } \details{ The input \code{aln}, produced with \code{\link{read.fasta}}, must have identifers (i.e. sequence names) that match the PDB file names. For example the sequence corresponding to the structure \dQuote{1bg2.pdb} should have the identifer \sQuote{1bg2}. See examples below. Sequence miss-matches will generate errors. Thus, care should be taken to ensure that the sequences in the alignment match the sequences in their associated PDB files. } \value{ Returns a list of class \code{"pdbs"} with the following five components: \item{xyz}{numeric matrix of aligned C-alpha coordinates.} \item{resno}{character matrix of aligned residue numbers.} \item{b}{numeric matrix of aligned B-factor values.} \item{chain}{character matrix of aligned chain identifiers.} \item{id}{character vector of PDB sequence/structure names.} \item{ali}{character matrix of aligned sequences.} \item{resid}{character matrix of aligned 3-letter residue names.} \item{sse}{character matrix of aligned helix and strand secondary structure elements as defined in each PDB file.} \item{call}{ the matched call. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \note{ The sequence character \sQuote{X} is useful for masking unusual or unknown residues, as it can match any other residue type. } \seealso{ \code{\link{read.fasta}}, \code{\link{read.pdb}}, \code{\link{core.find}}, \code{\link{fit.xyz}}, \code{\link{read.all}}, \code{\link{pymol.pdbs}} } \examples{ \donttest{ # Redundant testing excluded try({ # Read sequence alignment file <- system.file("examples/kif1a.fa",package="bio3d") aln <- read.fasta(file) # Read aligned PDBs pdbs <- read.fasta.pdb(aln) # Structure/sequence names/ids basename( pdbs$id ) # Alignment positions 335 to 339 pdbs$ali[,335:339] pdbs$resid[,335:339] pdbs$resno[,335:339] pdbs$b[,335:339] # Alignment C-alpha coordinates for these positions pdbs$xyz[, atom2xyz(335:339)] # See 'fit.xyz()' function for actual coordinate superposition # e.g. fit to first structure # xyz <- fit.xyz(pdbs$xyz[1,], pdbs) # xyz[, atom2xyz(335:339)] }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } \keyword{ IO } bio3d/man/bounds.sse.Rd0000644000176200001440000000224314707230357014410 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/bounds.sse.R \name{bounds.sse} \alias{bounds.sse} \title{Obtain A SSE Object From An SSE Sequence Vector} \usage{ bounds.sse(x, pdb = NULL) } \arguments{ \item{x}{a character vector indicating SSE for each amino acid residue.} \item{pdb}{an object of class \code{pdb} as obtained from function \code{\link{read.pdb}}. Can be ignored if \code{x} has 'names' attribute for residue labels.} } \value{ a 'sse' object. } \description{ Inverse process of the funciton \code{\link{pdb2sse}}. } \details{ call for its effects. } \note{ In both \code{$helix} and \code{$sheet}, an additional \code{$id} component is added to indicate the original numbering of the sse. This is particularly useful in e.g. \code{trim.pdb()} function. } \examples{ \donttest{ # PDB server connection required - testing excluded try({ pdb <- read.pdb("1a7l") sse <- pdb2sse(pdb) sse.ind <- bounds.sse(sse) sse.ind }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } \author{ Xin-Qiu Yao & Barry Grant } \seealso{ \code{\link{pdb2sse}} } bio3d/man/blast.pdb.Rd0000644000176200001440000001705214707230357014202 0ustar liggesusers\name{blast.pdb} \alias{blast.pdb} \alias{get.blast} \alias{plot.blast} \title{ NCBI BLAST Sequence Search and Summary Plot of Hit Statistics} \description{ Run NCBI blastp, on a given sequence, against the PDB, NR and swissprot sequence databases. Produce plots that facilitate hit selection from the match statistics of a BLAST result. } \usage{ blast.pdb(seq, database = "pdb", time.out = NULL, chain.single=TRUE) get.blast(urlget, time.out = NULL, chain.single=TRUE) \method{plot}{blast}(x, cutoff = NULL, cut.seed=NULL, cluster=TRUE, mar=c(2, 5, 1, 1), cex=1.5, ...) } \arguments{ \item{seq}{ a single element or multi-element character vector containing the query sequence. Alternatively a \sQuote{fasta} object from function \code{get.seq} or \sQuote{pdb} object from function \code{read.pdb} can be provided. } \item{database}{ a single element character vector specifying the database against which to search. Current options are \sQuote{pdb}, \sQuote{nr} and \sQuote{swissprot}. } \item{time.out}{ integer specifying the number of seconds to wait for the blast reply before a time out occurs. } \item{urlget}{ the URL to retrieve BLAST results; Usually it is returned by blast.pdb if time.out is set and met. } \item{chain.single}{ logical, if TRUE double NCBI character PDB database chain identifiers are simplified to lowercase '1WF4_GG' > '1WF4_g'. If FALSE no conversion to match RCSB PDB files is performed. } \item{x}{ BLAST results as obtained from the function \code{\link{blast.pdb}}. } \item{cutoff}{ A numeric cutoff value, in terms of minus the log of the evalue, for returned hits. If null then the function will try to find a suitable cutoff near \sQuote{cut.seed} which can be used as an initial guide (see below). } \item{cut.seed}{ A numeric seed cutoff value, used for initial cutoff estimation. If null then a seed position is set to the point of largest drop-off in normalized scores (i.e. the biggest jump in E-values). } \item{cluster}{ Logical, if TRUE (and \sQuote{cutoff} is null) a clustering of normalized scores is performed to partition hits in groups by similarity to query. If FALSE the partition point is set to the point of largest drop-off in normalized scores. } \item{mar}{ A numerical vector of the form c(bottom, left, top, right) which gives the number of lines of margin to be specified on the four sides of the plot.} \item{cex}{ a numerical single element vector giving the amount by which plot labels should be magnified relative to the default. } \item{\dots}{ extra plotting arguments. } } \details{ The \code{blast.pdb} function employs direct HTTP-encoded requests to the NCBI web server to run BLASTP, the protein search algorithm of the BLAST software package. BLAST, currently the most popular pairwise sequence comparison algorithm for database searching, performs gapped local alignments via a heuristic strategy: it identifies short nearly exact matches or hits, bidirectionally extends non-overlapping hits resulting in ungapped extended hits or high-scoring segment pairs(HSPs), and finally extends the highest scoring HSP in both directions via a gapped alignment (Altschul et al., 1997) For each pairwise alignment BLAST reports the raw score, bitscore and an E-value that assess the statistical significance of the raw score. Note that unlike the raw score E-values are normalized with respect to both the substitution matrix and the query and database lengths. Here we also return a corrected normalized score (mlog.evalue) that in our experience is easier to handle and store than conventional E-values. In practice, this score is equivalent to minus the natural log of the E-value. Note that, unlike the raw score, this score is independent of the substitution matrix and and the query and database lengths, and thus is comparable between BLASTP searches. Examining plots of BLAST alignment lengths, scores, E-values and normalized scores (-log(E-Value) from the \code{blast.pdb} function can aid in the identification sensible hit similarity thresholds. This is facilitated by the \code{plot.blast} function. If a \sQuote{cutoff} value is not supplied then a basic hierarchical clustering of normalized scores is performed with initial group partitioning implemented at a hopefully sensible point in the vicinity of \sQuote{h=cut.seed}. Inspection of the resultant plot can then be use to refine the value of \sQuote{cut.seed} or indeed \sQuote{cutoff}. As the \sQuote{cutoff} value can vary depending on the desired application and indeed the properties of the system under study it is envisaged that \sQuote{plot.blast} will be called multiple times to aid selection of a suitable \sQuote{cutoff} value. See the examples below for further details. } \value{ The function \code{blast.pdb} returns a list with three components, \code{hit.tbl}, \code{raw}, and \code{url}. The function \code{plot.blast} produces a plot on the active graphics device and returns a list object with four components, \code{hits}, \code{pdb.id}, \code{acc}, and \code{inds}. See below: \item{hit.tbl }{ a data frame summarizing BLAST results for each reported hit. It contains following major columns: \itemize{ \item \sQuote{bitscore}, a numeric vector containing the raw score for each alignment. \item \sQuote{evalue}, a numeric vector containing the E-value of the raw score for each alignment. \item \sQuote{mlog.evalue}, a numeric vector containing minus the natural log of the E-value. \item \sQuote{acc}, a character vector containing the accession database identifier of each hit. \item \sQuote{pdb.id}, a character vector containing the PDB database identifier of each hit. } } \item{raw }{ a data frame containing the raw BLAST output. Note multiple hits may appear in the same row. } \item{url }{ a single element character vector with the NCBI result URL and RID code. This can be passed to the get.blast function. } \item{hits}{ an ordered matrix detailing the subset of hits with a normalized score above the chosen cutoff. Database identifiers are listed along with their cluster group number. } \item{pdb.id}{ a character vector containing the PDB database identifier of each hit above the chosen threshold. } \item{acc}{ a character vector containing the accession database identifier of each hit above the chosen threshold. } \item{inds}{ a numeric vector containing the indices of the hits relative to the input blast object.} } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. \sQuote{BLAST} is the work of Altschul et al.: Altschul, S.F. et al. (1990) \emph{J. Mol. Biol.} \bold{215}, 403--410. Full details of the \sQuote{BLAST} algorithm, along with download and installation instructions can be obtained from:\cr \url{https://www.ncbi.nlm.nih.gov/BLAST/}. } \author{ Barry Grant } \note{ Online access is required to query NCBI blast services. } \seealso{ \code{\link{plot.blast}}, \code{\link{hmmer}}, \code{\link{seqaln}}, \code{\link{get.pdb}} } \examples{ \dontrun{ pdb <- read.pdb("4q21") blast <- blast.pdb( pdbseq(pdb) ) head(blast$hit.tbl) top.hits <- plot(blast) head(top.hits$hits) ## Use 'get.blast()' to retrieve results at a later time. #x <- get.blast(blast$url) #head(x$hit.tbl) # Examine and download 'best' hits top.hits <- plot.blast(blast, cutoff=188) head(top.hits$hits) #get.pdb(top.hits) } } \keyword{ utilities } \keyword{ hplot } bio3d/man/aanma.pdb.Rd0000644000176200001440000001707014707230357014152 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/aanma.R, R/aanma.pdb.R, R/rtb.R \name{aanma} \alias{aanma} \alias{aanma.pdb} \alias{rtb} \title{All Atom Normal Mode Analysis} \usage{ aanma(...) \method{aanma}{pdb}(pdb, pfc.fun = NULL, mass = TRUE, temp = 300, keep = NULL, hessian = NULL, outmodes = "calpha", rm.wat = TRUE, reduced = FALSE, rtb = FALSE, nmer = 1, ...) rtb(hessian, pdb, mass = TRUE, nmer = 1, verbose = TRUE) } \arguments{ \item{...}{additional arguments to \code{\link{build.hessian}} and \code{\link{aa2mass}}. One useful option here for dealing with unconventional residues is \sQuote{mass.custom}, see the \code{\link{aa2mass}} function for details.} \item{pdb}{an object of class \code{pdb} as obtained from function \code{\link{read.pdb}}.} \item{pfc.fun}{customized pair force constant (\sQuote{pfc}) function. The provided function should take a vector of distances as an argument to return a vector of force constants. If NULL, the default function \sQuote{aaenm2} will be employed. (See details below).} \item{mass}{logical, if TRUE the Hessian will be mass-weighted.} \item{temp}{numerical, temperature for which the amplitudes for scaling the atomic displacement vectors are calculated. Set \sQuote{temp=NULL} to avoid scaling.} \item{keep}{numerical, final number of modes to be stored. Note that all subsequent analyses are limited to this subset of modes. This option is useful for very large structures and cases where memory may be limited.} \item{hessian}{hessian matrix as obtained from \code{\link{build.hessian}}. For internal purposes and generally not intended for public use.} \item{outmodes}{either a character (\sQuote{calpha} or \sQuote{noh}) or atom indices as obtained from \code{\link{atom.select}} specifying the atoms to include in the resulting mode object. (See details below).} \item{rm.wat}{logical, if TRUE water molecules will be removed before calculation.} \item{reduced}{logical, if TRUE the coarse-grained (\sQuote{4-bead}) ENM will be employed. (See details below).} \item{rtb}{logical, if TRUE the rotation-translation block based approximate modes will be calculated. (See details below).} \item{nmer}{numerical, defines the number of residues per block (used only when \code{rtb=TRUE}).} \item{verbose}{logical, if TRUE print detailed processing message} } \value{ Returns an object of class \sQuote{nma} with the following components: \item{modes}{ numeric matrix with columns containing the normal mode vectors. Mode vectors are converted to unweighted Cartesian coordinates when \code{mass=TRUE}. Note that the 6 first trivial eigenvectos appear in columns one to six. } \item{frequencies}{ numeric vector containing the vibrational frequencies corresponding to each mode (for \code{mass=TRUE}). } \item{force.constants}{ numeric vector containing the force constants corresponding to each mode (for \code{mass=FALSE)}). } \item{fluctuations}{ numeric vector of atomic fluctuations. } \item{U}{ numeric matrix with columns containing the raw eigenvectors. Equals to the \code{modes} component when \code{mass=FALSE} and \code{temp=NULL}. } \item{L}{ numeric vector containing the raw eigenvalues. } \item{xyz}{ numeric matrix of class \code{xyz} containing the Cartesian coordinates in which the calculation was performed. } \item{mass}{ numeric vector containing the residue masses used for the mass-weighting. } \item{temp}{ numerical, temperature for which the amplitudes for scaling the atomic displacement vectors are calculated. } \item{triv.modes}{ number of trivial modes. } \item{natoms}{ number of C-alpha atoms. } \item{call}{ the matched call. } } \description{ Perform all-atom elastic network model normal modes calculation of a protein structure. } \details{ This function builds an elastic network model (ENM) based on all heavy atoms of input \code{pdb}, and performs subsequent normal mode analysis (NMA) in various manners. By default, the \sQuote{aaenm2} force field (defining of the spring constants between atoms) is used, which was obtained by fitting to a local energy minimum of a crambin model derived from the AMBER99SB force field. It employs a pair force constant function which falls as r^-6, and specific force constants for covalent and intra-residue atom pairs. See also \code{\link{load.enmff}} for other force field options. The \code{outmodes} argument controls the type of output modes. There are two standard types of output modes: \sQuote{noh} and \sQuote{calpha}. \code{outmodes='noh'} invokes regular all-atom based ENM-NMA. When \code{outmodes='calpha'}, an effective Hessian with respect to all C-alpha atoms will be first calculated using the same formula as in Hinsen et al. NMA is then performed on this effective C-alpha based Hessian. In addition, users can provide their own atom selection (see \code{\link{atom.select}}) as the value of \code{outmodes} for customized output modes generation. When \code{reduced=TRUE}, only a selection of all heavy atoms is used to build the ENM. More specifically, three to five atoms per residue constitute the model. Here the N, CA, C atoms represent the protein backbone, and zero to two selected side chain atoms represent the side chain (selected based on side chain size and the distance to CA). This coarse-grained ENM has significantly improved computational efficiency and similar prediction accuracy with respect to the all-atom ENM. When \code{rtb=TRUE}, rotation-translation block (RTB) based approximate modes will be calculated. In this method, each residue is assumed to be a rigid body (or \sQuote{block}) that has only rotational and translational degrees of freedom. Intra-residue deformation is thus ignored. (See Durand et al 1994 and Tama et al. 2000 for more details). N residues per block is also supported, where N=1, 2, 3, etc. (See argument \code{nmer}). The RTB method has significantly improved computational efficiency and similar prediction accuracy with respect to the all-atom ENM. By default the function will diagonalize the mass-weighted Hessian matrix. The resulting mode vectors are moreover scaled by the thermal fluctuation amplitudes. } \examples{ \dontrun{ # All-atom NMA takes relatively long time - Don't run by default. ## Fetch stucture pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) ## Calculate all-atom normal modes modes.aa <- aanma(pdb, outmodes='noh') ## Calculate all-atom normal modes with RTB approximation modes.aa.rtb <- aanma(pdb, outmodes='noh', rtb=TRUE) ## Compare the two modes rmsip(modes.aa, modes.aa.rtb) ## Calculate C-alpha normal modes. modes <- aanma(pdb) ## Calculate C-alpha normal modes with reduced ENM. modes.cg <- aanma(pdb, reduced=TRUE) ## Calculate C-alpha normal modes with RTB approximation modes.rtb <- aanma(pdb, rtb=TRUE) ## Compare modes rmsip(modes, modes.cg) rmsip(modes, modes.rtb) ## Print modes print(modes) ## Plot modes plot(modes) ## Visualize modes #m7 <- mktrj.nma(modes, mode=7, file="mode_7.pdb", pdb=pdb) } } \author{ Lars Skjaerven & Xin-Qiu Yao } \references{ Hinsen, K. et al. (2000) \emph{Chem. Phys.} \bold{261}, 25. Durand, P. et al. (1994) \emph{Biopolymers} \bold{34}, 759. Tama, F. et al. (2000) \emph{Proteins} \bold{41}, 1. } \seealso{ \code{\link{nma.pdb}} for C-alpha based NMA, \code{\link{aanma.pdbs}} for ensemble all-atom NMA, \code{\link{load.enmff}} for available ENM force fields, and \code{\link{fluct.nma}}, \code{\link{mktrj.nma}}, and \code{\link{dccm.nma}} for various post-NMA calculations. } bio3d/man/bounds.Rd0000644000176200001440000000263414707230357013623 0ustar liggesusers\name{bounds} \alias{bounds} \title{ Bounds of a Numeric Vector } \description{ Find the \sQuote{bounds} (i.e. start, end and length) of consecutive numbers within a larger set of numbers in a given vector. } \usage{ bounds(nums, dup.inds=FALSE, pre.sort=TRUE) } \arguments{ \item{nums}{ a numeric vector. } \item{dup.inds}{ logical, if TRUE the bounds of consecutive duplicated elements are returned. } \item{pre.sort}{ logical, if TRUE the input vector is ordered prior to bounds determination. } } \details{ This is a simple utility function useful for summarizing the contents of a numeric vector. For example: find the start position, end position and lengths of secondary structure elements given a vector of residue numbers obtained from a DSSP secondary structure prediction. By setting \sQuote{dup.inds} to TRUE then the indices of the first (start) and last (end) duplicated elements of the vector are returned. For example: find the indices of atoms belonging to a particular residue given a vector of residue numbers (see below). } \value{ Returns a three column matrix listing starts, ends and lengths. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \examples{ test <- c(seq(1,5,1),8,seq(10,15,1)) bounds(test) test <- rep(c(1,2,4), times=c(2,3,4)) bounds(test, dup.ind=TRUE) } \keyword{ utilities } bio3d/man/torsion.pdb.Rd0000644000176200001440000000562714707230357014577 0ustar liggesusers\name{torsion.pdb} \alias{torsion.pdb} \title{ Calculate Mainchain and Sidechain Torsion/Dihedral Angles } \description{ Calculate all torsion angles for a given protein PDB structure object. } \usage{ torsion.pdb(pdb) } \arguments{ \item{pdb}{ a PDB structure object as obtained from function \code{read.pdb}. } } \details{ The conformation of a polypeptide chain can be usefully described in terms of angles of internal rotation around its constituent bonds. See the related \code{torsion.xyz} function, which is called by this function, for details. } \value{ Returns a list object with the following components: \item{phi}{ main chain torsion angle for atoms C,N,CA,C. } \item{psi}{ main chain torsion angle for atoms N,CA,C,N. } \item{omega}{ main chain torsion angle for atoms CA,C,N,CA. } \item{alpha}{ virtual torsion angle between consecutive C-alpha atoms. } \item{chi1}{ side chain torsion angle for atoms N,CA,CB,*G. } \item{chi2}{ side chain torsion angle for atoms CA,CB,*G,*D. } \item{chi3}{ side chain torsion angle for atoms CB,*G,*D,*E. } \item{chi4}{ side chain torsion angle for atoms *G,*D,*E,*Z. } \item{chi5}{ side chain torsion angle for atoms *D,*E,*Z, NH1. } \item{coords}{ numeric matrix of \sQuote{justified} coordinates. } \item{tbl}{ a numeric matrix of psi, phi and chi torsion angles. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \note{ For the protein backbone, or main-chain atoms, the partial double-bond character of the peptide bond between \sQuote{C=N} atoms severely restricts internal rotations. In contrast, internal rotations around the single bonds between \sQuote{N-CA} and \sQuote{CA-C} are only restricted by potential steric collisions. Thus, to a good approximation, the backbone conformation of each residue in a given polypeptide chain can be characterised by the two angles phi and psi. Sidechain conformations can also be described by angles of internal rotation denoted chi1 up to chi5 moving out along the sidechain. } \seealso{ \code{\link{torsion.xyz}}, \code{\link{read.pdb}}, \code{\link{dssp}}, \code{\link{stride}}. } \examples{ \donttest{ # PDB server connection required - testing excluded try({ ##-- PDB torsion analysis pdb <- read.pdb( "1bg2" ) tor <- torsion.pdb(pdb) head(tor$tbl) ## basic Ramachandran plot plot(tor$phi, tor$psi) ## torsion analysis of a single coordinate vector #inds <- atom.select(pdb,"calpha") #tor.ca <- torsion.xyz(pdb$xyz[inds$xyz], atm.inc=1) ##-- Compare two PDBs to highlight interesting residues aln <- read.fasta(system.file("examples/kif1a.fa",package="bio3d")) m <- read.fasta.pdb(aln) a <- torsion.xyz(m$xyz[1,],1) b <- torsion.xyz(m$xyz[2,],1) d <- wrap.tor(a-b) plot(m$resno[1,],d, typ="h") }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } \keyword{ utilities } bio3d/man/clean.pdb.Rd0000644000176200001440000000376414707230357014164 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/clean.pdb.R \name{clean.pdb} \alias{clean.pdb} \title{Inspect And Clean Up A PDB Object} \usage{ clean.pdb(pdb, consecutive = TRUE, force.renumber = FALSE, fix.chain = FALSE, fix.aa = FALSE, rm.wat = FALSE, rm.lig = FALSE, rm.h = FALSE, verbose = FALSE) } \arguments{ \item{pdb}{an object of class \code{pdb} as obtained from function \code{\link{read.pdb}}.} \item{consecutive}{logical, if TRUE renumbering will result in consecutive residue numbers spanning all chains. Otherwise new residue numbers will begin at 1 for each chain.} \item{force.renumber}{logical, if TRUE atom and residue records are renumbered even if no 'insert' code is found in the \code{pdb} object.} \item{fix.chain}{logical, if TRUE chains are relabeled based on chain breaks detected.} \item{fix.aa}{logical, if TRUE non-standard amino acid names are converted into equivalent standard names.} \item{rm.wat}{logical, if TRUE water atoms are removed.} \item{rm.lig}{logical, if TRUE ligand atoms are removed.} \item{rm.h}{logical, if TRUE hydrogen atoms are removed.} \item{verbose}{logical, if TRUE details of the conversion process are printed.} } \value{ a 'pdb' object with an additional \code{$log} component storing all the processing messages. } \description{ Inspect alternative coordinates, chain breaks, bad residue numbering, non-standard/unknow amino acids, etc. Return a 'clean' pdb object with fixed residue numbering and optionally relabeled chain IDs, corrected amino acid names, removed water, ligand, or hydrogen atoms. All changes are recorded in a log in the returned object. } \details{ call for its effects. } \examples{ \donttest{ # PDB server connection required - testing excluded try({ pdb <- read.pdb("1a7l") clean.pdb(pdb) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } \author{ Xin-Qiu Yao & Barry Grant } \seealso{ \code{\link{read.pdb}} } bio3d/man/as.select.Rd0000644000176200001440000000177414707230357014216 0ustar liggesusers\name{as.select} \alias{as.select} \title{ Convert Atomic Indices to a Select Object } \description{ Convert atomic indices to a select object with \sQuote{atom} and \sQuote{xyz} components. } \usage{ as.select(x, \dots) } \arguments{ \item{x}{ a numeric vector containing atomic indices to be converted to a \sQuote{select} object. Alternatively, a logical vector can be provided. } \item{\dots}{ arguments passed to and from functions. } } \details{ Convert atomic indices to a select object with \sQuote{atom} and \sQuote{xyz} components. } \value{ Returns a list of class \code{"select"} with the following components: \item{atom}{ a numeric matrix of atomic indices. } \item{xyz }{ a numeric matrix of xyz indices. } \item{call }{ the matched call. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{atom.select}}, \code{\link{read.pdb}} } \examples{ as.select(c(1,2,3)) } \keyword{ utilities } bio3d/man/nma.pdb.Rd0000644000176200001440000001661714707230357013656 0ustar liggesusers\name{nma.pdb} \alias{nma.pdb} \alias{build.hessian} \alias{print.nma} \title{ Normal Mode Analysis } \description{ Perform elastic network model (ENM) C-alpha normal modes calculation of a protein structure. } \usage{ \method{nma}{pdb}(pdb, inds = NULL, ff = 'calpha', pfc.fun = NULL, mass = TRUE, temp = 300.0, keep = NULL, hessian = NULL, outmodes = NULL, \dots ) build.hessian(xyz, pfc.fun, fc.weights = NULL, pdb = NULL, \dots) \method{print}{nma}(x, nmodes=6, \dots) } \arguments{ \item{pdb}{ an object of class \code{pdb} as obtained from function \code{\link{read.pdb}}. } \item{inds}{ atom and xyz coordinate indices obtained from \code{\link{atom.select}} that selects the elements of \code{pdb} upon which the calculation should be based. If not provided the function will attempt to select the calpha atoms automatically (based on function \code{\link{atom.select}}). } \item{ff}{ character string specifying the force field to use: \sQuote{calpha}, \sQuote{anm}, \sQuote{pfanm}, \sQuote{reach}, or \sQuote{sdenm}. } \item{pfc.fun}{ customized pair force constant (\sQuote{pfc}) function. The provided function should take a vector of distances as an argument to return a vector of force constants. If provided, 'pfc.fun' will override argument \code{ff}. See examples below. } \item{mass}{ logical, if TRUE the Hessian will be mass-weighted. } \item{temp}{ numerical, temperature for which the amplitudes for scaling the atomic displacement vectors are calculated. Set \sQuote{temp=NULL} to avoid scaling. } \item{keep}{ numerical, final number of modes to be stored. Note that all subsequent analyses are limited to this subset of modes. This option is useful for very large structures and cases where memory may be limiting. } \item{hessian}{ hessian matrix as obtained from \code{\link{build.hessian}}. For internal purposes and generally not intended for public use. } \item{outmodes}{ atom indices as obtained from \code{\link{atom.select}}) specifying the atoms to include in the resulting mode object. } \item{xyz}{ a numeric vector of Cartesian coordinates. } \item{fc.weights}{ a numeric matrix of size NxN (where N is the number of calpha atoms) containg scaling factors for the pariwise force constants. See examples below. } \item{x}{ an \code{nma} object obtained from \code{\link{nma.pdb}}. } \item{nmodes}{ numeric, number of modes to be printed. } \item{...}{ additional arguments to \code{\link{build.hessian}}, \code{\link{aa2mass}}, \code{pfc.fun}, and \code{\link{print}}. One useful option here for dealing with unconventional residues is \sQuote{mass.custom}, see the \code{\link{aa2mass}} function for details. } } \details{ This function calculates the normal modes of a C-alpha model of a protein structure. A number of force fields are implemented all of whhich employ the elastic network model (ENM). The \sQuote{calpha} force field - originally developed by Konrad Hinsen - is the recommended one for most applications. It employs a spring force constant differentiating between nearest-neighbour pairs along the backbone and all other pairs. The force constant function was parameterized by fitting to a local minimum of a crambin model using the AMBER94 force field. See \code{\link{load.enmff}} for details of the different force fields. By default \code{\link{nma.pdb}} will diagonalize the mass-weighted Hessian matrix. The resulting mode vectors are moreover scaled by the thermal fluctuation amplitudes. The implementation under default arguments reproduces the calculation of normal modes (VibrationalModes) in the Molecular Modeling Toolkit (MMTK) package. To reproduce ANM modes set \code{ff='anm'}, \code{mass=FALSE}, and \code{temp=NULL}. } \value{ Returns an object of class \sQuote{nma} with the following components: \item{modes}{ numeric matrix with columns containing the normal mode vectors. Mode vectors are converted to unweighted Cartesian coordinates when \code{mass=TRUE}. Note that the 6 first trivial eigenvectos appear in columns one to six. } \item{frequencies}{ numeric vector containing the vibrational frequencies corresponding to each mode (for \code{mass=TRUE}). } \item{force.constants}{ numeric vector containing the force constants corresponding to each mode (for \code{mass=FALSE)}). } \item{fluctuations}{ numeric vector of atomic fluctuations. } \item{U}{ numeric matrix with columns containing the raw eigenvectors. Equals to the \code{modes} component when \code{mass=FALSE} and \code{temp=NULL}. } \item{L}{ numeric vector containing the raw eigenvalues. } \item{xyz}{ numeric matrix of class \code{xyz} containing the Cartesian coordinates in which the calculation was performed. } \item{mass}{ numeric vector containing the residue masses used for the mass-weighting. } \item{temp}{ numerical, temperature for which the amplitudes for scaling the atomic displacement vectors are calculated. } \item{triv.modes}{ number of trivial modes. } \item{natoms}{ number of C-alpha atoms. } \item{call}{ the matched call. } } \note{ The current version provides an efficent implementation of NMA with execution time comparable to similar software (when the entire Hessian is diagonalized). The main (speed related) bottleneck is currently the diagonalization of the Hessian matrix which is performed with the core R function \code{\link{eigen}}. For computing a few (5-20) approximate modes the user can consult package \sQuote{irlba}. NMA is memory extensive and users should be cautions when running larger proteins (>3000 residues). Use \sQuote{keep} to reduce the amount of memory needed to store the final \sQuote{nma} object (the full 3Nx3N Hessian matrix still needs to be allocated). We thank Edvin Fuglebakk for valuable discussions on the implementation as well as for contributing with testing. } \references{ Skjaerven, L. et al. (2014) \emph{BMC Bioinformatics} \bold{15}, 399. Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. Hinsen, K. et al. (2000) \emph{Chemical Physics} \bold{261}, 25--37. } \author{ Lars Skjaerven } \seealso{ \code{\link{fluct.nma}}, \code{\link{mktrj.nma}}, \code{\link{dccm.nma}}, \code{\link{overlap}}, \code{\link{rmsip}}, \code{\link{load.enmff}}. } \examples{ ## Fetch stucture pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) ## Calculate normal modes modes <- nma(pdb) ## Print modes print(modes) ## Plot modes plot(modes) ## Visualize modes #m7 <- mktrj.nma(modes, mode=7, file="mode_7.pdb") \dontrun{ ## Use Anisotropic Network Model modes <- nma(pdb, ff="anm", mass=FALSE, temp=NULL, cutoff=15) ## Use SSE information and SS-bonds sse <- dssp(pdb, resno=FALSE, full=TRUE) ss.bonds <- matrix(c(76,94, 64,80, 30,115, 6,127), ncol=2, byrow=TRUE) ## User defined energy function ## Note: Must take a vector of distances "my.ff" <- function(r) { ifelse( r>15, 0, 1 ) } ## Modes with a user defined energy function modes <- nma(pdb, pfc.fun=my.ff) ## A more manual approach sele <- atom.select(pdb, chain='A', elety='CA') xyz <- pdb$xyz[sele$xyz] hessian <- build.hessian(xyz, my.ff) modes <- eigen(hessian) ## Dealing with unconventional residues pdb <- read.pdb("1xj0") ## nma(pdb) #modes <- nma(pdb, mass.custom=list(CSX=121.166)) } } \keyword{ analysis } bio3d/man/lbio3d.Rd0000644000176200001440000000055614707230357013506 0ustar liggesusers\name{lbio3d} \alias{lbio3d} \title{ List all Functions in the bio3d Package } \description{ A simple shortcut for ls("package:bio3d"). } \usage{ lbio3d() } \value{ A character vector of function names from the bio3d package. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \keyword{ utilities } bio3d/man/fluct.nma.Rd0000644000176200001440000000220314707230357014210 0ustar liggesusers\name{fluct.nma} \alias{fluct.nma} \title{ NMA Fluctuations } \description{ Calculates the atomic fluctuations from normal modes analysis. } \usage{ fluct.nma(nma, mode.inds=NULL) } \arguments{ \item{nma}{ a list object of class \code{"nma"} (obtained with \code{\link{nma}}).} \item{mode.inds}{ a numeric vector containing the the mode numbers in which the calculation should be based. } } \details{ Atomic fluctuations are calculated based on the \code{nma} object. By default all modes are included in the calculation. See examples for more details. } \value{ Returns a numeric vector of atomic fluctuations. } \references{ Hinsen, K. et al. (2000) \emph{Chemical Physics} \bold{261}, 25--37. Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{nma} } } \examples{ ## Fetch stucture pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) ## Calculate (vibrational) normal modes modes <- nma(pdb) ## Fluctuations f <- fluct.nma(modes) ## Fluctuations of first non-trivial mode f <- fluct.nma(modes, mode.inds=c(7,8)) } \keyword{ analysis } bio3d/man/uniprot.Rd0000644000176200001440000000233214707230357014024 0ustar liggesusers\name{uniprot} \alias{uniprot} \title{ Fetch UniProt Entry Data. } \description{ Fetch protein sequence and functional information from the UniProt database. } \usage{ uniprot(accid) } \arguments{ \item{accid}{ UniProt accession id. } } \details{ This is a basic utility function for downloading information from the UniProt database. UniProt contains protein sequence and functional information. } \value{ Returns a list object with the following components: \item{accession}{ a character vector with UniProt accession id's. } \item{name}{ abbreviated name. } \item{fullName}{ full recommended protein name. } \item{shortName }{ short protein name. } \item{sequence}{ protein sequence. } \item{gene}{ gene names. } \item{organism}{ organism. } \item{taxon}{ taxonomic lineage. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. See also the UniProt web-site for more information:\cr \url{https://www.uniprot.org/}. } \author{ Lars Skjaerven } \seealso{ \code{\link{blast.pdb}}, \code{\link{get.seq}} } \examples{ \dontrun{ # UNIPROT server connection required - testing excluded prot <- uniprot('PH4H_HUMAN') prot$fullName prot$sequence } } \keyword{ utilities } bio3d/man/fit.xyz.Rd0000644000176200001440000001253314707230357013743 0ustar liggesusers\name{fit.xyz} \alias{fit.xyz} \alias{rot.lsq} \title{ Coordinate Superposition } \description{ Coordinate superposition with the Kabsch algorithm. } \usage{ fit.xyz(fixed, mobile, fixed.inds = NULL, mobile.inds = NULL, verbose=FALSE, prefix= "", pdbext = "", outpath = "fitlsq", full.pdbs=FALSE, ncore = 1, nseg.scale = 1, ...) rot.lsq(xx, yy, xfit = rep(TRUE, length(xx)), yfit = xfit, verbose = FALSE) } \arguments{ \item{fixed }{ numeric vector of xyz coordinates.} \item{mobile}{ numeric vector, numeric matrix, or an object with an \code{xyz} component containing one or more coordinate sets. } \item{fixed.inds}{ a vector of indices that selects the elements of \code{fixed} upon which fitting should be based.} \item{mobile.inds}{ a vector of indices that selects the elements of \code{mobile} upon which fitting should be based.} \item{full.pdbs}{ logical, if TRUE \dQuote{full} coordinate files (i.e. all atoms) are written to the location specified by \code{outpath}. } \item{prefix}{ prefix to mobile$id to locate \dQuote{full} input PDB files. Only required if \code{full.pdbs} is TRUE. } \item{pdbext}{ the file name extension of the input PDB files. } \item{outpath}{ character string specifing the output directory when \code{full.pdbs} is TRUE. } \item{xx}{ numeric vector corresponding to the moving \sQuote{subject} coordinate set. } \item{yy}{ numeric vector corresponding to the fixed \sQuote{target} coordinate set. } \item{xfit}{ logical vector with the same length as \code{xx}, with TRUE elements corresponding to the subset of positions upon which fitting is to be performed. } \item{yfit}{ logical vector with the same length as \code{yy}, with TRUE elements corresponding to the subset of positions upon which fitting is to be performed. } \item{verbose}{ logical, if TRUE more details are printed. } \item{\dots}{ other parameters for \code{\link{read.pdb}}. } \item{ncore }{ number of CPU cores used to do the calculation. \code{ncore>1} requires package \sQuote{parallel} installed. } \item{nseg.scale }{ split input data into specified number of segments prior to running multiple core calculation. } } \details{ The function \code{fit.xyz} is a wrapper for the function \code{rot.lsq}, which performs the actual coordinate superposition. The function \code{rot.lsq} is an implementation of the Kabsch algorithm (Kabsch, 1978) and evaluates the optimal rotation matrix to minimize the RMSD between two structures. Since the Kabsch algorithm assumes that the number of points are the same in the two input structures, care should be taken to ensure that consistent atom sets are selected with \code{fixed.inds} and \code{mobile.inds}. Optionally, \dQuote{full} PDB file superposition and output can be accomplished by setting \cr \code{full.pdbs=TRUE}. In that case, the input (\code{mobile}) passed to \code{fit.xyz} should be a list object obtained with the function \code{\link{read.fasta.pdb}}, since the components \code{id}, \code{resno} and \code{xyz} are required to establish correspondences. See the examples below. In dealing with large vector and matrix, running on multiple cores, especially when \code{ncore>>1}, may ask for a large portion of system memory. To avoid the overuse of memory, input data is first split into segments (for xyz matrix, the splitting is along the row). The number of data segments is equal to \code{nseg.scale*nseg.base}, where \code{nseg.base } is an integer determined by the dimension of the data. } \value{ Returns moved coordinates. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. Kabsch \emph{Acta Cryst} (1978) \bold{A34}, 827--828. } \author{ Barry Grant with \code{rot.lsq} contributions from Leo Caves } \seealso{ \code{\link{rmsd}}, \code{\link{read.pdb}}, \code{\link{read.fasta.pdb}}, \code{\link{read.dcd}} } \examples{ \donttest{ # PDB server connection required - testing excluded try({ ##--- Read an alignment & Fit aligned structures aln <- read.fasta(system.file("examples/kif1a.fa",package="bio3d")) pdbs <- read.fasta.pdb(aln) gaps <- gap.inspect(pdbs$xyz) xyz <- fit.xyz( fixed = pdbs$xyz[1,], mobile = pdbs$xyz, fixed.inds = gaps$f.inds, mobile.inds = gaps$f.inds ) #rmsd( xyz[, gaps$f.inds] ) #rmsd( pdbs$xyz[, gaps$f.inds] ) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } \dontrun{ ##-- Superpose again this time outputing PDBs xyz <- fit.xyz( fixed = pdbs$xyz[1,], mobile = pdbs, fixed.inds = gaps$f.inds, mobile.inds = gaps$f.inds, outpath = "rough_fit", full.pdbs = TRUE) } \donttest{ try({ ##--- Fit two PDBs A <- read.pdb("1bg2") A.ind <- atom.select(A, resno=c(256:269), elety='CA') B <- read.pdb("2kin") B.ind <- atom.select(B, resno=c(257:270), elety='CA') xyz <- fit.xyz(fixed=A$xyz, mobile=B$xyz, fixed.inds=A.ind$xyz, mobile.inds=B.ind$xyz) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } \dontrun{ # Write out moved PDB C <- B; C$xyz = xyz write.pdb(pdb=C, file = "moved.pdb") } } \keyword{ utilities } bio3d/man/mask.dccm.Rd0000644000176200001440000000462314707230357014171 0ustar liggesusers\name{mask} \alias{mask} \alias{mask.dccm} \title{ Mask a Subset of Atoms in a DCCM Object. } \description{ Produce a new DCCM object with selected atoms masked. } \usage{ mask(\dots) \method{mask}{dccm}(dccm, pdb = NULL, a.inds = NULL, b.inds = NULL, \dots) } \arguments{ \item{dccm}{ a DCCM structure object obtained from function \code{\link{dccm}}. } \item{pdb}{ a PDB structure object obtained from \code{\link{read.pdb}}. Must match the dimensions of \code{dccm}. } \item{a.inds}{ a numeric vector containing the indices of the elements of the DCCM matrix in which should not be masked. Alternatively, if \code{pdb} is provided a selection object (as obtained from \code{\link{atom.select}}) can be provided. } \item{b.inds}{ a numeric vector containing the indices of the elements of the DCCM matrix in which should not be masked. } \item{\dots}{ arguments not passed anywhere. } } \details{ This is a basic utility function for masking a DCCM object matrix to highlight user-selected regions in the correlation network. When both \code{a.inds} and \code{b.inds} are provided only their intersection is retained. When only \code{a.inds} is provided then the corresponding region to everything else is retained. Note: The current version assumes that the input PDB corresponds to the input DCCM. In many cases this will correspond to a PDB object containing only CA atoms. } \value{ Returns a matrix list of class \code{"dccm"} with the indices/atoms not corresponding to the selection masked. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{dccm}}, \code{\link{atom.select}} } \examples{ if(!requireNamespace("lattice", quietly=TRUE)) { message("Need lattice installed to run this example") } else { ## Calculate DCCM pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) cij <- dccm(nma(pdb)) ## Mask DCCM matrix according to matrix indices cijm <- mask(cij, a.inds=40:50, b.inds=80:90) plot(cijm) ## Retain only 40:50 to everything else cijm <- mask(cij, a.inds=40:50) plot(cijm) ## Mask DCCM matrix according PDB selection pdb.ca <- trim(pdb, "calpha") a.inds <- atom.select(pdb.ca, resno=40:50) b.inds <- atom.select(pdb.ca, resno=80:90) # Provide pdb object correspoding to input dccm cijm <- mask(cij, pdb.ca, a.inds, b.inds) plot(cijm) } } \keyword{ utilities } bio3d/man/plot.geostas.Rd0000644000176200001440000000267314707230357014756 0ustar liggesusers\name{plot.geostas} \alias{plot.geostas} \title{ Plot Geostas Results } \description{ Plot an atomic movement similarity matrix with domain annotation } \usage{ \method{plot}{geostas}(x, at=seq(0, 1, 0.1), main="AMSM with Domain Assignment", col.regions=rev(heat.colors(200)), margin.segments=x$grps, ...) } \arguments{ \item{x}{ an object of type \code{geostas} as obtained by the \sQuote{geostas} function. } \item{at}{ numeric vector specifying the levels to be colored. } \item{main}{ a main title for the plot. } \item{col.regions}{ color vector. See \code{contourplot} for more information. } \item{margin.segments}{ a numeric vector of cluster membership as obtained from cutree() or other community detection method. This will be used for bottom and left margin annotation. } \item{\dots}{ additional graphical parameters for \code{\link{plot.dccm}} and \code{contourplot}. } } \details{ This is a wrapper function for \code{\link{plot.dccm}} with appropriate adjustments for plotting atomic movement similarity matrix obtained from function \code{\link{geostas}}. See the \code{\link{plot.dccm}} for more details. } \value{ Called for its effect. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant, Lars Skjaerven } \seealso{ \code{\link{plot.dccm}}, \code{\link{geostas}} } \keyword{ hplot } bio3d/man/read.ncdf.Rd0000644000176200001440000000634214707230357014155 0ustar liggesusers\name{read.ncdf} \alias{read.ncdf} \title{ Read AMBER Binary netCDF files } \description{ Read coordinate data from a binary netCDF trajectory file. } \usage{ read.ncdf(trjfile, headonly = FALSE, verbose = TRUE, time = FALSE, first = NULL, last = NULL, stride = 1, cell = FALSE, at.sel = NULL) } \arguments{ \item{trjfile}{ name of trajectory file to read. A vector if treat a batch of files } \item{headonly}{ logical, if TRUE only trajectory header information is returned. If FALSE only trajectory coordinate data is returned. } \item{verbose}{ logical, if TRUE print details of the reading process. } \item{time}{ logical, if TRUE the \code{first} and \code{last} have the time unit ps; Otherwise the unit is the frame number. } \item{first}{ starting time or frame number to read; If NULL, start from the begining of the file(s). } \item{last}{ read data until \code{last} time or frame number; If NULL or equal to -1, read until the end of the file(s). } \item{stride}{ take at every \code{stride} frame(s) } \item{cell}{ logical, if TRUE and \code{headonly} is FALSE return cell information only. Otherwise, return header or coordinates.} \item{at.sel}{an object of class \sQuote{select} indicating a subset of atomic coordinates to be read.} } \details{ Reads a AMBER netCDF format trajectory file with the help of David W. Pierce's (UCSD) ncdf4 package available from CRAN. } \value{ A list of trajectory header data, a numeric matrix of xyz coordinates with a frame/structure per row and a Cartesian coordinate per column, or a numeric matrix of cell information with a frame/structure per row and lengths and angles per column. If time=TRUE, row names of returned coordinates or cell are set to be the physical time of corresponding frames. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. \url{https://www.unidata.ucar.edu/software/netcdf/} \url{https://cirrus.ucsd.edu/~pierce/ncdf/} \url{https://ambermd.org/FileFormats.php#netcdf} } \author{ Barry Grant } \note{ See AMBER documentation for netCDF format description. NetCDF binary trajectory files are supported by the AMBER modules sander, pmemd and ptraj. Compared to formatted trajectory files, the binary trajectory files are smaller, higher precision and significantly faster to read and write. NetCDF provides for file portability across architectures, allows for backwards compatible extensibility of the format and enables the files to be self-describing. Support for this format is available in VMD. If you experience problems reading your trajectory file with read.ncdf() consider first reading your file into VMD and from there exporting a new DCD trajectory file with the 'save coordinates' option. This new file should be easily read with read.dcd(). } \seealso{ \code{\link{read.dcd}}, \code{\link{write.ncdf}}, \code{\link{read.pdb}}, \code{\link{write.pdb}}, \code{\link{atom.select}} } \examples{ \dontrun{ ##-- Read example trajectory file trtfile <- system.file("examples/hivp.dcd", package="bio3d") trj <- read.dcd(trtfile) ## Write to netCDF format write.ncdf(trj, "newtrj.nc") ## Read trj trj <- read.ncdf("newtrj.nc") } } \keyword{ IO } bio3d/man/inspect.connectivity.Rd0000644000176200001440000000256414707230357016515 0ustar liggesusers\name{inspect.connectivity} \alias{inspect.connectivity} \title{ Check the Connectivity of Protein Structures } \description{ Investigate protein coordinates to determine if the structure has missing residues. } \usage{ inspect.connectivity(pdbs, cut=4.) } \arguments{ \item{pdbs}{ an object of class \code{3daling} as obtained from function \code{pdbaln} or \code{read.fasta.pdb}; a xyz matrix containing the cartesian coordinates of C-alpha atoms; or a \sQuote{pdb} object as obtained from function \code{read.pdb}. } \item{cut }{ cutoff value to determine residue connectvitiy. } } \details{ Utility function for checking if the PDB structures in a \sQuote{pdbs} object contains missing residues inside the structure. } \value{ Returns a vector. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{dm}}, \code{\link{gap.inspect}} } \examples{ \dontrun{ ## Fetch PDB files and split to chain A only PDB files ids <- c("1a70_A", "1czp_A", "1frd_A", "1fxi_A", "1iue_A", "1pfd_A") raw.files <- get.pdb(ids, path = "raw_pdbs") files <- pdbsplit(raw.files, ids, path = "raw_pdbs/split_chain") ## Sequence Alignement, and connectivity check pdbs <- pdbaln(files) cons <- inspect.connectivity(pdbs) ## omit files with missing residues files = files[cons] } } \keyword{ analysis } bio3d/man/get.pdb.Rd0000644000176200001440000000473114707230357013654 0ustar liggesusers\name{get.pdb} \alias{get.pdb} \title{ Download PDB Coordinate Files } \description{ Downloads PDB coordinate files from the RCSB Protein Data Bank. } \usage{ get.pdb(ids, path = ".", URLonly=FALSE, overwrite = FALSE, gzip = FALSE, split = FALSE, format = "pdb", verbose = TRUE, ncore = 1, ...) } \arguments{ \item{ids}{ A character vector of one or more 4-letter PDB codes/identifiers or 6-letter PDB-ID_Chain-ID of the files to be downloaded, or a \sQuote{blast} object containing \sQuote{pdb.id}. } \item{path}{ The destination path/directory where files are to be written. } \item{URLonly}{ logical, if TRUE a character vector containing the URL path to the online file is returned and files are not downloaded. If FALSE the files are downloaded. } \item{overwrite}{ logical, if FALSE the file will not be downloaded if it alread exist. } \item{gzip}{ logical, if TRUE the gzipped PDB will be downloaded and extracted locally. } \item{split}{ logical, if TRUE \code{\link{pdbsplit}} funciton will be called to split pdb files into separated chains. } \item{format}{ format of the data file: \sQuote{pdb} or \sQuote{cif} for PDB and mmCIF file formats, respectively. } \item{verbose}{ print details of the reading process. } \item{ncore}{ number of CPU cores used to do the calculation. \code{ncore>1} requires package \sQuote{parallel} installed. } \item{\dots}{ extra arguments passed to \code{\link{pdbsplit}} function. } } \details{ This is a basic function to automate file download from the PDB. } \value{ Returns a list of successfully downloaded files. Or optionally if URLonly is TRUE a list of URLs for said files. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. For a description of PDB format (version3.3) see:\cr \url{http://www.wwpdb.org/documentation/format33/v3.3.html}. } \author{ Barry Grant } \seealso{ \code{\link{read.pdb}}, \code{\link{write.pdb}}, \code{\link{atom.select}}, \code{\link{read.fasta.pdb}}, \code{\link{read.fasta}}, \code{\link{pdbsplit}} } \examples{ \donttest{ # PDB server connection required - testing excluded try({ ## PDB file paths get.pdb( c("1poo", "1moo"), URLonly=TRUE ) ## These URLs can be used by 'read.pdb' pdb <- read.pdb( get.pdb("5p21", URL=TRUE) ) summary(pdb) ## Download PDB file ## get.pdb("5p21") }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } \keyword{utilities} bio3d/man/cna.Rd0000644000176200001440000002022514707230357013066 0ustar liggesusers\name{cna} \alias{cna} \alias{cna.dccm} \alias{cna.ensmb} \title{ Protein Dynamic Correlation Network Construction and Community Analysis. } \description{ This function builds both residue-based and community-based undirected weighted network graphs from an input correlation matrix, as obtained from the functions \sQuote{dccm}, \sQuote{dccm.nma}, and \sQuote{dccm.enma}. Community detection/clustering is performed on the initial residue based network to determine the community organization and network structure of the community based network. } \usage{ cna(cij, \dots) \method{cna}{dccm}(cij, cutoff.cij=0.4, cm=NULL, vnames=colnames(cij), cluster.method="btwn", collapse.method="max", cols=vmd_colors(), minus.log=TRUE, \dots) \method{cna}{ensmb}(cij, \dots, ncore = NULL) } \arguments{ \item{cij}{ A numeric array with 2 dimensions (nXn) containing atomic correlation values, where "n" is the residue number. The matrix elements should be in between 0 and 1 (atomic correlations). Can be also a set of correlation matrices for ensemble network analysis. See \sQuote{dccm} function in bio3d package for further details. } \item{\dots}{ Additional arguments passed to the methods \code{cna.dccm} and \code{cna.ensmb}. } \item{cutoff.cij}{ Numeric element specifying the cutoff on cij matrix values. Coupling below cutoff.cij are set to 0. } \item{cm}{ (optinal) A numeric array with 2 dimensions (nXn) containing binary contact values, where "n" is the residue number. The matrix elements should be 1 if two residues are in contact and 0 if not in contact. See the \sQuote{cmap} function in bio3d package for further details. } \item{vnames}{ A vector of names for each column in the input cij. This will be used for referencing residues in a similar way to residue numbers in later analysis. } \item{cluster.method}{ A character string specifying the method for community determination. Supported methods are:\cr btwn="Girvan-Newman betweenness"\cr walk="Random walk"\cr greed="Greedy algorithm for modularity optimization"\cr infomap="Infomap algorithm for community detection"\cr } \item{collapse.method}{ A single element character vector specifing the \sQuote{cij} collapse method, can be one of \sQuote{max}, \sQuote{median}, \sQuote{mean}, or \sQuote{trimmed}. By defualt the \sQuote{max} method is used to collapse the input residue based \sQuote{cij} matrix into a smaller community based network by taking the maximium \sQuote{abs(cij)} value between communities as the comunity-to-community cij value for clustered network construction. } \item{cols}{ A vector of colors assigned to network nodes. } \item{minus.log}{ Logical, indicating whether \sQuote{-log(abs(cij))} values should be used for network construction. } \item{ncore}{ Number of CPU cores used to do the calculation. By default, use all available cores. } } \value{ Returns a list object that includes igraph network and community objects with the following components: \item{network}{ An igraph residue-wise graph object. See below for more details.} \item{communities}{ An igraph residue-wise community object. See below for more details. } \item{communitiy.network}{ An igraph community-wise graph object. See below for more details. } \item{community.cij}{ Numeric square matrix containing the absolute values of the atomic correlation input matrix for each community as obtained from \sQuote{cij} via application of \sQuote{collapse.method}. } \item{cij}{ Numeric square matrix containing the absolute values of the atomic correlation input matrix. } If an ensemble of correlation matrices is provided, a list of \sQuote{cna} object, of the \sQuote{ecna} class, will be returned. } \details{ The input to this function should be a correlation matrix as obtained from the \sQuote{dccm}, \sQuote{dccm.mean} or \sQuote{dccm.nma} and related functions. Optionally, a contact map \sQuote{cm} may also given as input to filter the correlation matrix resulting in the exclusion of network edges between non-contacting atom pairs (as defined in the contact map). Internally this function calls the igraph package functions \sQuote{graph.adjacency}, \sQuote{edge.betweenness.community}, \sQuote{walktrap.community}, \sQuote{fastgreedy.community}, and \sQuote{infomap.community}. The first constructs an undirected weighted network graph. The second performs Girvan-Newman style clustering by calculating the edge betweenness of the graph, removing the edge with the highest edge betweenness score, calculates modularity (i.e. the difference between the current graph partition and the partition of a random graph, see Newman and Girvan, Physical Review E (2004), Vol 69, 026113), then recalculating edge betweenness of the edges and again removing the one with the highest score, etc. The returned community partition is the one with the highest overall modularity value. \sQuote{walktrap.community} implements the Pons and Latapy algorithm based on the idea that random walks on a graph tend to get "trapped" into densely connected parts of it, i.e. a community. The random walk process is used to determine a distance between nodes. Nodes with low distance values are joined in the same community. \sQuote{fastgreedy.community} instead determines the community structure based on the optimization of the modularity. In the starting state each node is isolated and belongs to a separated community. Communities are then joined together (according to the network edges) in pairs and the modularity is calculated. At each step the join resulting in the highest increase of modularity is chosen. This process is repeated until a single community is obtained, then the partitioning with the highest modularity score is selected. \sQuote{infomap.community} finds community structure that minimizes the expected description length of a random walker trajectory. } \author{ Guido Scarabelli and Barry Grant } \seealso{ \code{\link{plot.cna}}, \code{\link{summary.cna}}, \code{\link{vmd.cna}}, \code{\link[igraph:graph_from_adjacency_matrix]{graph.adjacency}}, \code{\link[igraph:cluster_edge_betweenness]{edge.betweenness.community}}, \code{\link[igraph:cluster_walktrap]{walktrap.community}}, \code{\link[igraph:cluster_fast_greedy]{fastgreedy.community}}, \code{\link[igraph:cluster_infomap]{infomap.community}} } \examples{ \donttest{ # PDB server connection required - testing excluded if (!requireNamespace("igraph", quietly = TRUE)) { message('Need igraph installed to run this example') } else { try({ ##-- Build a correlation network from NMA results ## Read example PDB pdb <- read.pdb("4Q21") ## Perform NMA modes <- nma(pdb) #plot(modes, sse=pdb) ## Calculate correlations cij <- dccm(modes) #plot(cij, sse=pdb) ## Build, and betweenness cluster, a network graph net <- cna(cij, cutoff.cij=0.35) #plot(net, pdb) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } ## within VMD set 'coloring method' to 'Chain' and 'Drawing method' to Tube #vmd.cna(net, trim.pdb(pdb, atom.select(pdb,"calpha")), launch=TRUE ) ##-- Build a correlation network from MD results ## Read example trajectory file trtfile <- system.file("examples/hivp.dcd", package="bio3d") trj <- read.dcd(trtfile) ## Read the starting PDB file to determine atom correspondence pdbfile <- system.file("examples/hivp.pdb", package="bio3d") pdb <- read.pdb(pdbfile) ## select residues 24 to 27 and 85 to 90 in both chains inds <- atom.select(pdb, resno=c(24:27,85:90), elety='CA') ## lsq fit of trj on pdb xyz <- fit.xyz(pdb$xyz, trj, fixed.inds=inds$xyz, mobile.inds=inds$xyz) ## calculate dynamical cross-correlation matrix cij <- dccm(xyz) ## Build, and betweenness cluster, a network graph net <- cna(cij) # Plot coarse grained network based on dynamically coupled communities xy <- plot.cna(net) plot.dccm(cij, margin.segments=net$communities$membership) ##-- Begin to examine network structure - see CNA vignette for more details net summary(net) attributes(net) table( net$communities$members ) } } } \keyword{analysis} bio3d/man/plot.nma.Rd0000644000176200001440000000300314707230357014050 0ustar liggesusers\name{plot.nma} \alias{plot.nma} \title{ Plot NMA Results } \description{ Produces eigenvalue/frequency spectrum plots and an atomic fluctuations plot. } \usage{ \method{plot}{nma}(x, pch = 16, col = par("col"), cex=0.8, mar=c(6, 4, 2, 2),...) } \arguments{ \item{x}{ the results of normal modes analysis obtained with \code{\link{nma}}. } \item{pch}{ a vector of plotting characters or symbols: see \code{\link{points}}. } \item{col}{ a character vector of plotting colors. } \item{cex}{ a numerical single element vector giving the amount by which plotting text and symbols should be magnified relative to the default. } \item{mar}{ A numerical vector of the form c(bottom, left, top, right) which gives the number of lines of margin to be specified on the four sides of the plot.} \item{\dots}{ extra plotting arguments passed to \code{\link{plot.bio3d}} that effect the atomic fluctuations plot only. } } \details{ \code{plot.nma} produces an eigenvalue (or frequency) spectrum plot together with a plot of the atomic fluctuations. } \value{ Called for its effect. } \references{ Skjaerven, L. et al. (2014) \emph{BMC Bioinformatics} \bold{15}, 399. Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{nma}}, \code{\link{plot.bio3d}} } \examples{ ## Fetch structure pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) ## Calculate modes modes <- nma(pdb) plot(modes, sse=pdb) } \keyword{ hplot } bio3d/man/sse.bridges.Rd0000644000176200001440000000227014707230357014535 0ustar liggesusers\name{sse.bridges} \alias{sse.bridges} \title{ SSE Backbone Hydrogen Bonding } \description{ Determine backbone C=O to N-H hydrogen bonding in secondary structure elements. } \usage{ sse.bridges(sse, type="helix", hbond=TRUE, energy.cut=-1.0) } \arguments{ \item{sse}{ an sse object as obtained with \code{dssp}. } \item{type}{ character string specifying \sQuote{helix} or \sQuote{sheet}. } \item{hbond}{ use hbond records in the dssp output. } \item{energy.cut}{ cutoff for the dssp hbond energy. } } \details{ Simple functionality to parse the \sQuote{BP} and \sQuote{hbond} records of the DSSP output. Requires input from function \code{dssp} with arguments \code{resno=FALSE} and \code{full=TRUE}. } \value{ Returns a numeric matrix of two columns containing the residue ids of the paired residues. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{read.pdb}}, \code{\link{dssp}} } \examples{ \dontrun{ # Read a PDB file pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) sse <- dssp(pdb, resno=FALSE, full=TRUE) sse.bridges(sse, type="helix") } } \keyword{ utilities } bio3d/man/pdbseq.Rd0000644000176200001440000000256414707230357013611 0ustar liggesusers\name{pdbseq} \alias{pdbseq} \title{ Extract The Aminoacid Sequence From A PDB Object } \description{ Return a vector of the one-letter IUPAC or three-letter PDB style aminoacid codes from a given PDB object. } \usage{ pdbseq(pdb, inds = NULL, aa1 = TRUE) } \arguments{ \item{pdb}{a PDB structure object obtained from \code{\link{read.pdb}}. } \item{inds}{ a list object of ATOM and XYZ indices as obtained from \code{\link{atom.select}}. } \item{aa1}{ logical, if TRUE then the one-letter IUPAC sequence is returned. IF FALSE then the three-letter PDB style sequence is returned.} } \details{ See the examples below and the functions \code{\link{atom.select}} and \code{\link{aa321}} for further details. } \value{ A character vector of aminoacid codes. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. For a description of IUPAC one-letter codes see:\cr \url{https://www.insdc.org/documents/feature_table.html#7.4.3} For more information on PDB residue codes see:\cr \url{http://ligand-expo.rcsb.org/ld-search.html} } \author{ Barry Grant } \seealso{ \code{\link{read.pdb}}, \code{\link{atom.select}}, \code{\link{aa321}}, \code{\link{read.fasta}} } \examples{ \dontrun{ pdb <- read.pdb( "5p21" ) pdbseq(pdb) #pdbseq(pdb, inds=atom.select(pdb, resno=5:15, elety="CA"), aa1=FALSE) } } \keyword{ utilities } bio3d/man/read.all.Rd0000644000176200001440000001023414707230357014006 0ustar liggesusers\name{read.all} \alias{read.all} \title{ Read Aligned Structure Data} \description{ Read aligned PDB structures and store their equalvalent atom data, including xyz coordinates, residue numbers, residue type and B-factors. } \usage{ read.all(aln, prefix = "", pdbext = "", sel = NULL, rm.wat=TRUE, rm.ligand=FALSE, compact = TRUE, ncore = NULL, ...) } \arguments{ \item{aln}{ an alignment data structure obtained with \code{\link{read.fasta}}. } \item{prefix}{ prefix to aln$id to locate PDB files. } \item{pdbext}{ the file name extention of the PDB files. } \item{sel}{ a selection string detailing the atom type data to store (see function store.atom) } \item{rm.wat}{logical, if TRUE water atoms are removed. } \item{rm.ligand}{logical, if TRUE ligand atoms are removed. } \item{compact}{ logical, if TRUE the number of atoms stored for each aligned residue varies according to the amino acid type. If FALSE, the constant maximum possible number of atoms are stored for all aligned residues. } \item{ncore }{ number of CPU cores used to do the calculation. By default (\code{ncore=NULL}) use all detected CPU cores. } \item{\dots}{ other parameters for \code{\link{read.pdb}}. } } \details{ The input \code{aln}, produced with \code{\link{read.fasta}}, must have identifers (i.e. sequence names) that match the PDB file names. For example the sequence corresponding to the structure file \dQuote{mypdbdir/1bg2.pdb} should have the identifer \sQuote{mypdbdir/1bg2.pdb} or \sQuote{1bg2} if input \sQuote{prefix} and \sQuote{pdbext} equal \sQuote{mypdbdir/} and \sQuote{pdb}. See the examples below. Sequence miss-matches will generate errors. Thus, care should be taken to ensure that the sequences in the alignment match the sequences in their associated PDB files. } \value{ Returns a list of class \code{"pdbs"} with the following five components: \item{xyz}{numeric matrix of aligned C-alpha coordinates.} \item{resno}{character matrix of aligned residue numbers.} \item{b}{numeric matrix of aligned B-factor values.} \item{chain}{character matrix of aligned chain identifiers.} \item{id}{character vector of PDB sequence/structure names.} \item{ali}{character matrix of aligned sequences.} \item{resid}{character matrix of aligned 3-letter residue names.} \item{all }{numeric matrix of aligned equalvelent atom coordinates. } \item{all.elety}{numeric matrix of aligned atom element types. } \item{all.resid}{numeric matrix of aligned three-letter residue codes. } \item{all.resno}{numeric matrix of aligned residue numbers. } \item{all.grpby}{numeric vector indicating the group of atoms belonging to the same aligned residue. } \item{all.hetatm}{a list of \sQuote{pdb} objects for non-protein atoms. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \note{ This function is still in development and is NOT part of the offical bio3d package. The sequence character \sQuote{X} is useful for masking unusual or unknown residues, as it can match any other residue type. } \seealso{ \code{\link{read.fasta}}, \code{\link{read.pdb}}, \code{\link{core.find}}, \code{\link{fit.xyz}} } \examples{ # still working on speeding this guy up \dontrun{ ## Read sequence alignment file <- system.file("examples/kif1a.fa",package="bio3d") aln <- read.fasta(file) ## Read aligned PDBs storing all data for 'sel' sel <- c("N", "CA", "C", "O", "CB", "*G", "*D", "*E", "*Z") pdbs <- read.all(aln, sel=sel) atm <- colnames(pdbs$all) ca.ind <- which(atm == "CA") core <- core.find(pdbs) core.ind <- c( matrix(ca.ind, nrow=3)[,core$c0.5A.atom] ) ## Fit structures nxyz <- fit.xyz(pdbs$all[1,], pdbs$all, fixed.inds = core.ind, mobile.inds = core.ind) ngap.col <- gap.inspect(nxyz) #npc.xray <- pca.xyz(nxyz[ ,ngap.col$f.inds]) #a <- mktrj.pca(npc.xray, pc=1, file="pc1-all.pdb", # elety=pdbs$all.elety[1,unique( ceiling(ngap.col$f.inds/3) )], # resid=pdbs$all.resid[1,unique( ceiling(ngap.col$f.inds/3) )], # resno=pdbs$all.resno[1,unique( ceiling(ngap.col$f.inds/3) )] ) } } \keyword{ IO } bio3d/man/read.dcd.Rd0000644000176200001440000000632214707230357013773 0ustar liggesusers\name{read.dcd} \alias{read.dcd} \title{ Read CHARMM/X-PLOR/NAMD Binary DCD files } \description{ Read coordinate data from a binary DCD trajectory file. } \usage{ read.dcd(trjfile, big=FALSE, verbose = TRUE, cell = FALSE) } \arguments{ \item{trjfile}{ name of trajectory file to read. A vector if treat a batch of files } \item{big}{ logical, if TRUE attempt to read large files into a big.matrix object } \item{verbose}{ logical, if TRUE print details of the reading process. } \item{cell}{logical, if TRUE return cell information only. Otherwise, return coordinates.} } \details{ Reads a CHARMM or X-PLOR/NAMD binary trajectory file with either big- or little-endian storage formats. Reading is accomplished with two different sub-functions: \code{dcd.header}, which reads header info, and \code{dcd.frame}, which takes header information and reads atoms frame by frame producing an nframes/natom*3 matrix of cartesian coordinates or an nframes/6 matrix of cell parameters. } \value{ A numeric matrix of xyz coordinates with a frame/structure per row and a Cartesian coordinate per column or a numeric matrix of cell information with a frame/structure per row and lengths and angles per column. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \note{ See CHARMM documentation for DCD format description. If you experience problems reading your trajectory file with read.dcd() consider first reading your file into VMD and from there exporting a new DCD trajectory file with the 'save coordinates' option. This new file should be easily read with read.dcd(). Error messages beginning 'cannot allocate vector of size' indicate a failure to obtain memory, either because the size exceeded the address-space limit for a process or, more likely, because the system was unable to provide the memory. Note that on a 32-bit OS there may well be enough free memory available, but not a large enough contiguous block of address space into which to map it. In such cases try setting the input option 'big' to TRUE. This is an experimental option that results in a 'big.matrix' object. } \seealso{ \code{\link{read.pdb}}, \code{\link{write.pdb}}, \code{\link{atom.select}} } \examples{ \donttest{ # Redundant testing excluded ##-- Read cell parameters from example trajectory file trtfile <- system.file("examples/hivp.dcd", package="bio3d") trj <- read.dcd(trtfile, cell = TRUE) ##-- Read coordinates from example trajectory file trj <- read.dcd(trtfile) ## Read the starting PDB file to determine atom correspondence pdbfile <- system.file("examples/hivp.pdb", package="bio3d") pdb <- read.pdb(pdbfile) ## select residues 24 to 27 and 85 to 90 in both chains inds <- atom.select(pdb, resno=c(24:27,85:90), elety='CA') ## lsq fit of trj on pdb xyz <- fit.xyz(pdb$xyz, trj, fixed.inds=inds$xyz, mobile.inds=inds$xyz) ##-- RMSD of trj frames from PDB r1 <- rmsd(a=pdb, b=xyz) } \dontrun{ # Pairwise RMSD of trj frames for positions 47 to 54 flap.inds <- atom.select(pdb, resno=c(47:54), elety='CA') p <- rmsd(xyz[,flap.inds$xyz]) # plot highlighting flap opening? plot.dmat(p, color.palette = mono.colors) } } \keyword{ IO } bio3d/man/plot.cmap.Rd0000644000176200001440000001015014707230357014216 0ustar liggesusers\name{plot.cmap} \alias{plot.cmap} \title{ Plot Contact Matrix } \description{ Plot a contact matrix with optional secondary structure in the marginal regions. } \usage{ \method{plot}{cmap}(x, col=2, pch=16, main="Contact map", sub="", xlim=NULL, ylim=NULL, xlab = "Residue index", ylab = xlab, axes=TRUE, ann=par("ann"), sse=NULL, sse.type="classic", sse.min.length=5, bot=TRUE, left=TRUE, helix.col="gray20", sheet.col="gray80", sse.border=FALSE, add=FALSE, ...) } \arguments{ \item{x}{ a numeric matrix of residue contacts as obtained from function \code{cmap}. } \item{col}{ color code or name, see \code{par}. } \item{pch}{ plotting \sQuote{character}, i.e., symbol to use. This can either be a single character or an integer code for one of a set of graphics symbols. See \code{points}. } \item{main}{ a main title for the plot, see also \sQuote{title}. } \item{sub}{ a sub-title for the plot. } \item{xlim}{ the x limits (x1,x2) of the plot. Note that x1 > x2 is allowed and leads to a reversed axis. } \item{ylim}{ the y limits of the plot. } \item{xlab}{ a label for the x axis, defaults to a description of \sQuote{x}. } \item{ylab}{ a label for the y axis, defaults to a description of \sQuote{y}. } \item{axes}{ a logical value indicating whether both axes should be drawn on the plot. Use graphical parameter \sQuote{xaxt} or \sQuote{yaxt} to suppress just one of the axes. } \item{ann}{ a logical value indicating whether the default annotation (title and x and y axis labels) should appear on the plot. } \item{sse}{ secondary structure object as returned from \code{\link{dssp}}, \code{\link{stride}} or in certain cases \code{\link{read.pdb}}. } \item{sse.type}{ single element character vector that determines the type of secondary structure annotation drawn. The following values are possible, \sQuote{classic} and \sQuote{fancy}. See details and examples below. } \item{sse.min.length}{ a single numeric value giving the length below which secondary structure elements will not be drawn. This is useful for the exclusion of short helix and strand regions that can often crowd these forms of plots. } \item{left}{ logical, if TRUE rectangles for each sse are drawn towards the left of the plotting region. } \item{bot}{ logical, if TRUE rectangles for each sse are drawn towards the bottom of the plotting region. } \item{helix.col}{ The colors for rectangles representing alpha helices. } \item{sheet.col}{ The colors for rectangles representing beta strands. } \item{sse.border}{ The border color for all sse rectangles. } \item{add}{ logical, specifying if the contact map should be added to an already existing plot. Note that when \sQuote{TRUE} only points are plotted (no annotation). } \item{\dots}{ other graphical parameters. } } \details{ This function is useful for plotting a residue-residue contact data for a given protein structure along with a schematic representation of major secondary structure elements. Two forms of secondary structure annotation are available: so called \sQuote{classic} and \sQuote{fancy}. The former draws marginal rectangles and has been available within Bio3D from version 0.1. The later draws more \sQuote{fancy} (and distracting) 3D like helices and arrowed strands. } \value{ Called for its effect. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven, Barry Grant } \note{ Be sure to check the correspondence of your \sQuote{sse} object with the \sQuote{x} values being plotted as no internal checks are performed. } \seealso{ \code{\link{cmap}}, \code{\link{dm}}, \code{\link{plot.dmat}}, \code{\link{plot.default}}, \code{\link{plot.bio3d}}, \code{\link{dssp}}, \code{\link{stride}} } \examples{ ##- Read PDB file pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) ##- Calcualte contact map cm <- cmap(pdb) ##- Plot contact map plot.cmap(cm, sse=pdb) ##- Add to plot plot.cmap(t(cm), col=3, pch=17, add=TRUE) } \keyword{ hplot } bio3d/man/aanma.pdbs.Rd0000644000176200001440000001212314707230357014327 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/aanma.pdbs.R \name{aanma.pdbs} \alias{aanma.pdbs} \title{Ensemble Normal Mode Analysis with All-Atom ENM} \usage{ \method{aanma}{pdbs}(pdbs, fit = TRUE, full = FALSE, subspace = NULL, rm.gaps = TRUE, ligand = FALSE, outpath = NULL, gc.first = TRUE, ncore = NULL, ...) } \arguments{ \item{pdbs}{an \sQuote{pdbs} object as obtained from \code{\link{read.all}}.} \item{fit}{logical, if TRUE C-alpha coordinate based superposition is performed prior to normal mode calculations.} \item{full}{logical, if TRUE return the complete, full structure, \sQuote{nma} objects.} \item{subspace}{number of eigenvectors to store for further analysis.} \item{rm.gaps}{logical, if TRUE obtain the hessian matrices for only atoms in the aligned positions (non-gap positions in all aligned structures). Thus, gap positions are removed from output.} \item{ligand}{logical, if TRUE ligand molecules are also included in the calculation.} \item{outpath}{character string specifing the output directory to which the PDB structures should be written.} \item{gc.first}{logical, if TRUE will call gc() first before mode calculation for each structure. This is to avoid memory overload when \code{ncore > 1}.} \item{ncore}{number of CPU cores used to do the calculation.} \item{...}{additional arguments to \code{\link{aanma}}.} } \value{ Returns a list of \sQuote{nma} objects (\code{outmodes} is provided and is not \sQuote{calpha}) or an \sQuote{enma} object with the following components: \item{fluctuations }{ a numeric matrix containing aligned atomic fluctuations with one row per input structure. } \item{rmsip }{ a numeric matrix of pair wise RMSIP values (only the ten lowest frequency modes are included in the calculation). } \item{U.subspace }{ a three-dimensional array with aligned eigenvectors (corresponding to the subspace defined by the first N non-trivial eigenvectors (\sQuote{U}) of the \sQuote{nma} object). } \item{L }{ numeric matrix containing the raw eigenvalues with one row per input structure. } \item{full.nma }{ a list with a \code{nma} object for each input structure (available only when \code{full=TRUE}). } } \description{ Perform normal mode analysis (NMA) on an ensemble of aligned protein structures using all-atom elastic network model (aaENM). } \details{ This function builds elastic network model (ENM) using all heavy atoms and performs subsequent normal mode analysis (NMA) on a set of aligned protein structures obtained with function \code{\link{read.all}}. The main purpose is to automate ensemble normal mode analysis using all-atom ENMs. By default, the effective Hessian for all C-alpha atoms is calculated based on the Hessian built from all heavy atoms (including ligand atoms if \code{ligand=TRUE}). Returned values include aligned mode vectors and (when \code{full=TRUE}) a list containing the full \sQuote{nma} objects one per each structure. When \sQuote{rm.gaps=TRUE} the unaligned atoms are ommited from output. With default arguments \sQuote{rmsip} provides RMSIP values for all pairwise structures. When \code{outmodes} is provided and is not \sQuote{calpha} (e.g. \sQuote{noh}. See \code{\link{aanma}} for more details), the function simply returns a list of \sQuote{nma} objects, one per each structure, and no aligned mode vector is returned. In this case, the arguments \code{full}, \code{subspace}, and \code{rm.gaps} are ignored. This is equivalent to a wrapper function repeatedly calling \code{\link{aanma}}. } \examples{ \donttest{ # Needs MUSCLE installed - testing excluded if(check.utility("muscle")) { ## Fetch PDB files and split to chain A only PDB files ids <- c("1a70_A", "1czp_A", "1frd_A", "1fxi_A", "1iue_A", "1pfd_A") files <- get.pdb(ids, split = TRUE, path = tempdir()) ## Sequence Alignement aln <- pdbaln(files, outfile = tempfile()) ## Read all pdb coordinates pdbs <- read.all(aln) ## Normal mode analysis on aligned data modes <- aanma(pdbs, rm.gaps=TRUE) ## Plot fluctuation data plot(modes, pdbs=pdbs) ## Cluster on Fluctuation similariy sip <- sip(modes) hc <- hclust(dist(sip)) col <- cutree(hc, k=3) ## Plot fluctuation data plot(modes, pdbs=pdbs, col=col) ## RMSIP is pre-calculated heatmap(1-modes$rmsip) ## Bhattacharyya coefficient bc <- bhattacharyya(modes) heatmap(1-bc) } } } \author{ Xin-Qiu Yao & Lars Skjaerven } \seealso{ For normal mode analysis on single structure PDB: \code{\link{aanma}} For conventional C-alpha based normal mode analysis: \code{\link{nma}}, \code{\link{nma.pdbs}}. For the analysis of the resulting \sQuote{eNMA} object: \code{\link{mktrj.enma}}, \code{\link{dccm.enma}}, \code{\link{plot.enma}}, \code{\link{cov.enma}}. Similarity measures: \code{\link{sip}}, \code{\link{covsoverlap}}, \code{\link{bhattacharyya}}, \code{\link{rmsip}}. Related functionality: \code{\link{read.all}}. } bio3d/man/write.mol2.Rd0000644000176200001440000000155314707230357014332 0ustar liggesusers\name{write.mol2} \alias{write.mol2} \title{ Write MOL2 Format Coordinate File } \description{ Write a Sybyl MOL2 file } \usage{ write.mol2(mol, file = "R.mol2", append = FALSE) } \arguments{ \item{mol}{ a MOL2 structure object obtained from \code{\link{read.mol2}}. } \item{file}{ the output file name. } \item{append}{ logical, if TRUE output is appended to the bottom of an existing file (used primarly for writing multi-model files). } } \details{ See examples for further details. } \value{ Called for its effect. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \examples{ \donttest{ # Read MOL2 file mol <- read.mol2( system.file("examples/aspirin.mol2", package="bio3d") ) # Trim away H-atoms mol <- trim(mol, "noh") # Write new MOL2 file #write.mol2(mol) } } \keyword{ IO } bio3d/man/trim.xyz.Rd0000644000176200001440000000264514707230357014137 0ustar liggesusers\name{trim.xyz} \alias{trim.xyz} \title{ Trim a XYZ Object of Cartesian Coordinates. } \description{ Produce a new smaller XYZ object, containing a subset of atoms. } \usage{ \method{trim}{xyz}(xyz, row.inds = NULL, col.inds = NULL, \dots) } \arguments{ \item{xyz}{ a XYZ object containing Cartesian coordinates, e.g. obtained from \code{\link{read.pdb}}, \code{\link{read.ncdf}}. } \item{row.inds}{ a numeric vector specifying which rows of the xyz matrix to return. } \item{col.inds}{ a numeric vector specifying which columns of the xyz matrix to return. } \item{\dots}{ additional arguments passed to and from functions. } } \details{ This function provides basic functionality for subsetting a matrix of class \sQuote{xyz} while also maintaining the class attribute. } \value{ Returns an object of class \code{xyz} with the Cartesian coordinates stored in a matrix object with dimensions M x 3N, where N is the number of atoms, and M number of frames. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{read.pdb}}, \code{\link{as.xyz}}. } \examples{ \dontrun{ ## Read a PDB file from the RCSB online database pdb <- read.pdb("1bg2") ## Select calpha atoms sele <- atom.select(pdb, "calpha") ## Trim XYZ trim(pdb$xyz, col.inds=sele$xyz) ## Equals to pdb$xyz[, sele$xyz, drop=FALSE] } } \keyword{ utilities } bio3d/man/cnapath.Rd0000644000176200001440000001253014707230357013743 0ustar liggesusers\name{cnapath} \alias{cnapath} \alias{summary.cnapath} \alias{print.cnapath} \alias{plot.cnapath} \alias{plot.ecnapath} \title{ Suboptimal Path Analysis for Correlation Networks } \description{ Find k shortest paths between a pair of nodes, source and sink, in a correlation network. } \usage{ cnapath(cna, from, to=NULL, k=10, collapse=TRUE, ncore=NULL, \dots) \method{summary}{cnapath}(object, \dots, pdb = NULL, label = NULL, col = NULL, plot = FALSE, concise = FALSE, cutoff = 0.1, normalize = TRUE, weight = FALSE) \method{print}{cnapath}(x, \dots) \method{plot}{cnapath}(x, \dots) \method{plot}{ecnapath}(x, \dots) } \arguments{ \item{cna}{ A \sQuote{cna} object or a list of \sQuote{cna} objects obtained from \code{\link{cna}}. } \item{from}{ Integer vector or matrix indicating node id(s) of source. If is matrix and \code{to} is NULL, the first column represents source and the second sink. } \item{to}{ Integer vector indicating node id(s) of sink. All combinations of \code{from} and \code{to} values will be used as source/sink pairs. } \item{k}{ Integer, number of suboptimal paths to identify. } \item{collapse}{ Logical, if TRUE results from all source/sink pairs are merged with a single \sQuote{cnapath} object returned. } \item{ncore}{ Number of CPU cores used to do the calculation. By default (NULL), use all detected CPU cores. } \item{object}{ A \sQuote{cnapath} class of object obtained from \code{cnapath}. Multiple \sQuote{object} input is allowed for comparing paths from different networks. } \item{pdb}{ A \sQuote{pdb} class of object obtained from \code{\link{read.pdb}} and is used as the reference for node residue ids (in \code{summary.cnapath}) or for molecular visulaization with VMD (in \code{vmd.cnapath}). } \item{label}{ Character, label for paths identified from different networks. } \item{col}{ Colors for plotting statistical results for paths identified from different networks. } \item{plot}{ Logical, if TRUE path length distribution and node degeneracy will be plotted. } \item{concise}{ Logical, if TRUE only \sQuote{on path} residues will be displayed in the node degeneracy plot. } \item{cutoff}{ Numeric, nodes with node degeneracy larger than \code{cutoff} are shown in the output. } \item{normalize}{ Logical, if TRUE node degeneracy is divided by the total (weighted) number of paths. } \item{weight}{ Logical, if TRUE each path is weighted by path length in calculating the node degeneracty. } \item{x}{ A 'cnapath' class object, or a list of such objects, as obtained from function \code{cnapath}. } \item{\dots}{ Additional arguments passed to igraph function \code{\link[igraph:distances]{get.shortest.paths}} (in the function \code{cnapath}), passed to \code{summary.cnapath} (in \code{print.cnapath}), as additional paths for comparison (in \code{summary.cnapath}). } } \value{ The function \code{cnapath} returns a (or a list of) \sQuote{cnapath} class of list containing following three components: \item{path}{ a list object containing all identified suboptimal paths. Each entry of the list is a sequence of node ids for the path. } \item{epath}{ a list object containing all identified suboptimal paths. Each entry of the list is a sequence of edge ids for the path. } \item{dist}{ a numeric vector of all path lengths. } The function \code{summary.cnapath} returns a matrix of (normalized) node degeneracy for \sQuote{on path} residues. } \references{ Yen, J.Y. (1971) \emph{Management Science} \bold{17}, 712--716. } \author{ Xin-Qiu Yao } \seealso{ \code{\link{cna}}, \code{\link{cna.dccm}}, \code{\link{vmd.cna}}, \code{\link{vmd.cnapath}}, \code{\link[igraph:distances]{get.shortest.paths}}. } \examples{ \donttest{ # Redundant testing excluded if (!requireNamespace("igraph", quietly = TRUE)) { message('Need igraph installed to run this example') } else { attach(transducin) inds = match(c("1TND_A", "1TAG_A"), pdbs$id) npdbs <- trim(pdbs, row.inds=inds) gaps.res <- gap.inspect(npdbs$ali) modes <- nma(npdbs) cij <- dccm(modes) net <- cna(cij, cutoff.cij=0.3) # get paths pa1 <- cnapath(net[[1]], from = 314, to=172, k=50) pa2 <- cnapath(net[[2]], from = 314, to=172, k=50) # print the information of a path pa1 # print two paths simultaneously pas <- list(pa1, pa2) names(pas) <- c("GTP", "GDP") print.cnapath(pas) # Or, for the same effect, # summary(pa1, pa2, label=c("GTP", "GDP")) try({ # replace node numbers with residue name and residue number in the PDB file pdb <- read.pdb("1tnd") pdb <- trim.pdb(pdb, atom.select(pdb, chain="A", resno=npdbs$resno[1, gaps.res$f.inds])) print.cnapath(pas, pdb=pdb) # plot path length distribution and node degeneracy print.cnapath(pas, pdb = pdb, col=c("red", "darkgreen"), plot=TRUE) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } # View paths in 3D molecular graphic with VMD #vmd.cnapath(pa1, pdb, launch = TRUE) #vmd.cnapath(pa1, pdb, colors = 7, launch = TRUE) #vmd.cnapath(pa1, pdb, spline=TRUE, colors=c("pink", "red"), launch = TRUE) #pdb2 <- read.pdb("1tag") #pdb2 <- trim.pdb(pdb2, atom.select(pdb2, chain="A", resno=npdbs$resno[2, gaps.res$f.inds])) #vmd.cnapath(pa2, pdb2, launch = TRUE) detach(transducin) } } } \keyword{ utilities } bio3d/man/plot.hmmer.Rd0000644000176200001440000000277214707230357014421 0ustar liggesusers\name{plot.hmmer} \alias{plot.hmmer} \title{ Plot a Summary of HMMER Hit Statistics. } \description{ Produces a number of basic plots that should facilitate hit selection from the match statistics of a HMMER result. } \usage{ \method{plot}{hmmer}(x, ...) } \arguments{ \item{x}{ HMMER results as obtained from the function \code{\link{hmmer}}. } \item{\dots}{ arguments passed to \code{\link{plot.blast}}. } } \details{ See \code{\link{plot.blast}} for details. } \value{ Produces a plot on the active graphics device and returns a three component list object: \item{hits}{ an ordered matrix detailing the subset of hits with a normalized score above the chosen cutoff. Database identifiers are listed along with their cluster group number. } \item{acc}{ a character vector containing the database accession identifier of each hit above the chosen threshold. } \item{pdb.id}{ a character vector containing the database accession identifier of each hit above the chosen threshold. } \item{inds}{ a numeric vector containing the indices of the hits relative to the input hmmer object.} } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant, Lars Skjaerven } \seealso{ \code{\link{hmmer}}, \code{\link{blast.pdb}} } \examples{ \dontrun{ # HMMER server connection required - testing excluded ##- PHMMER seq <- get.seq("2abl_A", outfile = tempfile()) res <- hmmer(seq, db="pdb") plot.hmmer(res) } } \keyword{ hplot } bio3d/man/plot.bio3d.Rd0000644000176200001440000001473414707230357014312 0ustar liggesusers\name{plot.bio3d} \alias{plot.bio3d} \alias{plotb3} \title{ Plots with marginal SSE annotation } \description{ Draw a standard scatter plot with optional secondary structure in the marginal regions. } \usage{ plotb3(x, resno = NULL, rm.gaps = FALSE, type = "h", main = "", sub = "", xlim = NULL, ylim = NULL, ylim2zero = TRUE, xlab = "Residue", ylab = NULL, axes = TRUE, ann = par("ann"), col = par("col"), sse = NULL, sse.type="classic", sse.min.length=5, top = TRUE, bot = TRUE, helix.col = "gray20", sheet.col = "gray80", sse.border = FALSE, ...) \method{plot}{bio3d}(...) } \arguments{ \item{x}{ a numeric vector of values to be plotted. Any reasonable way of defining these plot coordinates is acceptable. See the function \sQuote{xy.coords} for details. } \item{resno}{ an optional vector with length equal to that of \sQuote{x} that will be used to annotate the xaxis. This is typically a vector of residue numbers. If NULL residue positions from 1 to the length of \sQuote{x} will be used. See examples below. } \item{rm.gaps}{ logical, if TRUE gaps in \code{x}, indicated by NA values, will be removed from plot. } \item{type}{ one-character string giving the type of plot desired. The following values are possible, (for details, see \sQuote{plot}): \sQuote{p} for points, \sQuote{l} for lines, \sQuote{o} for over-plotted points and lines, \sQuote{b}, \sQuote{c}) for points joined by lines, \sQuote{s} and \sQuote{S} for stair steps and \sQuote{h} for histogram-like vertical lines. Finally, \sQuote{n} does not produce any points or lines. } \item{main}{ a main title for the plot, see also \sQuote{title}. } \item{sub}{ a sub-title for the plot. } \item{xlim}{ the x limits (x1,x2) of the plot. Note that x1 > x2 is allowed and leads to a reversed axis. } \item{ylim}{ the y limits of the plot. } \item{ylim2zero}{ logical, if TRUE the y-limits are forced to start at zero. } \item{xlab}{ a label for the x axis, defaults to a description of \sQuote{x}. } \item{ylab}{ a label for the y axis, defaults to a description of \sQuote{y}. } \item{axes}{ a logical value indicating whether both axes should be drawn on the plot. Use graphical parameter \sQuote{xaxt} or \sQuote{yaxt} to suppress just one of the axes. } \item{ann}{ a logical value indicating whether the default annotation (title and x and y axis labels) should appear on the plot. } \item{col}{ The colors for lines and points. Multiple colors can be specified so that each point is given its own color. If there are fewer colors than points they are recycled in the standard fashion. Lines are plotted in the first color specified. } \item{sse}{ secondary structure object as returned from \code{\link{dssp}}, \code{\link{stride}} or in certain cases \code{\link{read.pdb}}. } \item{sse.type}{ single element character vector that determines the type of secondary structure annotation drawn. The following values are possible, \sQuote{classic} and \sQuote{fancy}. See details and examples below. } \item{sse.min.length}{ a single numeric value giving the length below which secondary structure elements will not be drawn. This is useful for the exclusion of short helix and strand regions that can often crowd these forms of plots. } \item{top}{ logical, if TRUE rectangles for each sse are drawn towards the top of the plotting region. } \item{bot}{ logical, if TRUE rectangles for each sse are drawn towards the bottom of the plotting region. } \item{helix.col}{ The colors for rectangles representing alpha helices. } \item{sheet.col}{ The colors for rectangles representing beta strands. } \item{sse.border}{ The border color for all sse rectangles. } \item{\dots}{ other graphical parameters. } } \details{ This function is useful for plotting per-residue numeric vectors for a given protein structure (e.g. results from RMSF, PCA, NMA etc.) along with a schematic representation of major secondary structure elements. Two forms of secondary structure annotation are available: so called \sQuote{classic} and \sQuote{fancy}. The former draws marginal rectangles and has been available within Bio3D from version 0.1. The later draws more \sQuote{fancy} (and distracting) 3D like helices and arrowed strands. See the functions \sQuote{plot.default}, \code{\link{dssp}} and \code{\link{stride}} for further details. } \value{ Called for its effect. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \note{ Be sure to check the correspondence of your \sQuote{sse} object with the \sQuote{x} values being plotted as no internal checks are performed. } \seealso{ \code{\link{plot.default}}, \code{\link{dssp}}, \code{\link{stride}} } \examples{ \donttest{ # PDB server connection required - testing excluded try({ ## Plot of B-factor values along with secondary structure from PDB pdb <- read.pdb( "1bg2" ) bfac <- pdb$atom[pdb$calpha,"b"] plot.bio3d(bfac, sse=pdb, ylab="B-factor", col="gray") points(bfac, typ="l") }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } \dontrun{ ## Use PDB residue numbers and include short secondary structure elements plot.bio3d(pdb$atom[pdb$calpha,"b"], sse=pdb, resno=pdb, ylab="B-factor", typ="l", lwd=1.5, col="blue", sse.min.length=0) ## Calculate secondary structure using stride() or dssp() #sse <- stride(pdb) sse <- dssp(pdb) ## Plot of B-factor values along with calculated secondary structure plot.bio3d(pdb$atom[pdb$calpha,"b"], sse=sse, ylab="B-factor", typ="l", col="blue", lwd=2) } \donttest{ # PDB server connection required - testing excluded try({ ## Plot 'aligned' data respecting gap positions attach(transducin) pdb = read.pdb("1tnd") ## Reference PDB see: pdbs$id[1] pdb = trim.pdb(pdb, inds=atom.select(pdb, chain="A")) ## Plot of B-factor values with gaps plot.bio3d(pdbs$b, resno=pdb, sse=pdb, ylab="B-factor") ## Plot of B-factor values after removing all gaps plot.bio3d(pdbs$b, rm.gaps=TRUE, resno = pdb, sse=pdb, ylab="B-factor") detach(transducin) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } ## Fancy secondary structure elements ##plot.bio3d(pdb$atom[pdb$calpha,"b"], sse=pdb, ssetype="fancy") ## Currently not implemented } \keyword{ hplot } bio3d/man/dm.Rd0000644000176200001440000001200414707230357012721 0ustar liggesusers\name{dm} \alias{dm} \alias{dm.pdb} \alias{dm.xyz} \alias{dm.pdbs} \title{ Distance Matrix Analysis } \description{ Construct a distance matrix for a given protein structure. } \usage{ dm(\dots) \method{dm}{pdb}(pdb, inds = NULL, grp = TRUE, verbose=TRUE, \dots) \method{dm}{pdbs}(pdbs, rm.gaps=FALSE, all.atom=FALSE, aligned.atoms.only=NULL, \dots) \method{dm}{xyz}(xyz, grpby = NULL, scut = NULL, mask.lower = TRUE, gc.first=FALSE, ncore=1, \dots) } \arguments{ \item{pdb}{ a \code{pdb} structure object as returned by \code{\link{read.pdb}} or a numeric vector of \sQuote{xyz} coordinates.} \item{inds}{ atom and xyz coordinate indices obtained from \code{atom.select} that selects the elements of \code{pdb} upon which the calculation should be based. } \item{grp}{ logical, if TRUE atomic distances will be grouped according to their residue membership. See \sQuote{grpby}. } \item{verbose}{ logical, if TRUE possible warnings are printed. } \item{pdbs}{ a \sQuote{pdbs} object as returned by \code{\link{read.fasta.pdb}}, \code{\link{read.all}}, or \code{\link{pdbaln}}. } \item{rm.gaps}{ logical, if TRUE gapped positions are removed in the returned value. } \item{all.atom}{ logical, if TRUE all-atom coordinates from \code{\link{read.all}} are used. } \item{aligned.atoms.only}{ logical, if TRUE only equivalent (aligned) atoms are considered. Only meaningful when \code{all.atom=TRUE}. Default: FALSE. } \item{xyz}{ a numeric vector or matrix of Cartesian coordinates.} \item{grpby}{ a vector counting connective duplicated elements that indicate the elements of \code{xyz} that should be considered as a group (e.g. atoms from a particular residue). } \item{scut}{ a cutoff neighbour value which has the effect of excluding atoms, or groups, that are sequentially within this value.} \item{mask.lower}{ logical, if TRUE the lower matrix elements (i.e. those below the diagonal) are returned as NA.} \item{gc.first}{ logical, if TRUE will call gc() first before calculation of distance matrix. This is to solve the memory overload problem when \code{ncore > 1} and \code{xyz} has many rows/columns, with a bit sacrifice on speed. } \item{ncore }{ number of CPU cores used to do the calculation. \code{ncore>1} requires package \sQuote{parallel} installed. } \item{\dots}{ arguments passed to and from functions. } } \details{ Distance matrices, also called distance plots or distance maps, are an established means of describing and comparing protein conformations (e.g. Phillips, 1970; Holm, 1993). A distance matrix is a 2D representation of 3D structure that is independent of the coordinate reference frame and, ignoring chirality, contains enough information to reconstruct the 3D Cartesian coordinates (e.g. Havel, 1983). } \value{ Returns a numeric matrix of class \code{"dmat"}, with all N by N distances, where N is the number of selected atoms. With multiple frames the output is provided in a three dimensional array. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. Phillips (1970) \emph{Biochem. Soc. Symp.} \bold{31}, 11--28. Holm (1993) \emph{J. Mol. Biol.} \bold{233}, 123--138. Havel (1983) \emph{Bull. Math. Biol.} \bold{45}, 665--720. } \author{ Barry Grant } \note{ The input \code{selection} can be any character string or pattern interpretable by the function \code{\link{atom.select}}. For example, shortcuts \code{"calpha"}, \code{"back"}, \code{"all"} and selection strings of the form \code{/segment/chain/residue number/residue name/element number/element name/}; see \code{\link{atom.select}} for details. If a coordinate vector is provided as input (rather than a \code{pdb} object) the \code{selection} option is redundant and the input vector should be pruned instead to include only desired positions. } \seealso{ \code{\link{plot.dmat}}, \code{\link{read.pdb}}, \code{\link{atom.select}} } \examples{ \donttest{ # PDB server connection required - testing excluded try({ ##--- Distance Matrix Plot pdb <- read.pdb( "4q21" ) k <- dm(pdb,inds="calpha") filled.contour(k, nlevels = 10) ## NOTE: FOLLOWING EXAMPLE NEEDS MUSCLE INSTALLED if(check.utility("muscle")) { ##--- DDM: Difference Distance Matrix # Downlaod and align two PDB files pdbs <- pdbaln( get.pdb( c( "4q21", "521p"), path = tempdir() ), outfile = tempfile() ) # Get distance matrix a <- dm.xyz(pdbs$xyz[1,]) b <- dm.xyz(pdbs$xyz[2,]) # Calculate DDM c <- a - b # Plot DDM plot(c,key=FALSE, grid=FALSE) plot(c, axis.tick.space=10, resnum.1=pdbs$resno[1,], resnum.2=pdbs$resno[2,], grid.col="black", xlab="Residue No. (4q21)", ylab="Residue No. (521p)") } }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } \dontrun{ ##-- Residue-wise distance matrix based on the ## minimal distance between all available atoms l <- dm.xyz(pdb$xyz, grpby=pdb$atom[,"resno"], scut=3) } } \keyword{ utilities } bio3d/man/basename.pdb.Rd0000644000176200001440000000257714707230357014656 0ustar liggesusers\name{basename.pdb} \alias{basename.pdb} \title{ Manipulate PDB File Names } \description{ Removes all of the path up to and including the last path separator (if any) and the final \sQuote{.pdb} extension. } \usage{ basename.pdb(x, mk4 = FALSE, ext=".pdb") } \arguments{ \item{x}{ character vector of PDB file names, containing path and extensions.} \item{mk4}{ logical, if TRUE the output will be truncated to the first 4 characters of the basename. This is frequently convenient for matching RCSB PDB identifier conventions (see examples below). } \item{ext}{ character, specifying the file extension, e.g. \sQuote{.pdb} or \sQuote{.mol2}. } } \details{ This is a simple utility function for the common task of PDB file name manipulation. It is used internally in several bio3d functions and van be thought of as basename for PDB files. } \value{ A character vector of the same length as the input \sQuote{x}. Paths not containing any separators are taken to be in the current directory. If an element of input is \sQuote{x} is \sQuote{NA}, so is the result. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \seealso{ \code{\link{basename}}, \code{\link{dirname}} } \examples{ basename.pdb("/somedir/somewhere/1bg2_myfile.pdb") basename.pdb("/somedir/somewhere/1bg2_myfile.pdb", TRUE) } \keyword{ utilities } bio3d/man/read.prmtop.Rd0000644000176200001440000000526214707230357014564 0ustar liggesusers\name{read.prmtop} \alias{read.prmtop} \alias{print.prmtop} \title{ Read AMBER Parameter/Topology files } \description{ Read parameter and topology data from an AMBER PrmTop file. } \usage{ read.prmtop(file) \method{print}{prmtop}(x, printseq=TRUE, \dots) } \arguments{ \item{file}{ a single element character vector containing the name of the PRMTOP file to be read. } \item{x}{ a PRMTOP structure object obtained from \code{\link{read.prmtop}}. } \item{printseq}{ logical, if TRUE the residue sequence will be printed to the screen. See also \code{\link{pdbseq}}. } \item{...}{ additional arguments to \sQuote{print}. } } \details{ This function provides basic functionality to read and parse a AMBER PrmTop file. The resulting \sQuote{prmtop} object contains a complete list object of the information stored in the PrmTop file. See examples for further details. } \value{ Returns a list of class \sQuote{prmtop} (inherits class \sQuote{amber}) with components according to the flags present in the PrmTop file. See the AMBER documentation for a complete list of flags/components: \url{https://ambermd.org/FileFormats.php}. Selected components: \item{ATOM_NAME}{ a character vector of atom names. } \item{ATOMS_PER_MOLECULE}{ a numeric vector containing the number of atoms per molecule. } \item{MASS}{ a numeric vector of atomic masses. } \item{RESIDUE_LABEL}{ a character vector of residue labels. } \item{RESIDUE_RESIDUE_POINTER}{ a numeric vector of pointers to the first atom in each residue. } \item{call }{ the matched call. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. \url{https://ambermd.org/FileFormats.php} } \author{ Lars Skjaerven } \note{ See AMBER documentation for PrmTop format description:\cr \url{https://ambermd.org/FileFormats.php}. } \seealso{ \code{\link{read.crd}}, \code{\link{read.ncdf}}, \code{\link{as.pdb}}, \code{\link{atom.select}}, \code{\link{read.pdb}} } \examples{ \dontrun{ ## Read a PRMTOP file prmtop <- read.prmtop(system.file("examples/crambin.prmtop", package="bio3d")) print(prmtop) ## Explore prmtop file head(prmtop$MASS) head(prmtop$ATOM_NAME) ## Read Amber coordinates crds <- read.crd(system.file("examples/crambin.inpcrd", package="bio3d")) ## Atom selection ca.inds <- atom.select(prmtop, "calpha") ## Convert to PDB format pdb <- as.pdb(prmtop, crds) pdb.ca <- as.pdb(prmtop, crds, inds=ca.inds) ## Trajectory processing #trj <- read.ncdf("traj.nc", at.sel=ca.inds) ## Convert to multimodel PDB format #pdb <- as.pdb(prmtop, trj[1:20,], inds=ca.inds, inds.crd=NULL) ## RMSD of trajectory #rd <- rmsd(crds$xyz[ca.inds$xyz], traj, fit=TRUE) } } \keyword{ IO } bio3d/man/var.xyz.Rd0000644000176200001440000000220014707230357013737 0ustar liggesusers\name{var.xyz} \alias{var.xyz} \alias{var.pdbs} \title{ Pairwise Distance Variance in Cartesian Coordinates } \description{ Calculate the variance of all pairwise distances in an ensemble of Cartesian coordinates. } \usage{ var.xyz(xyz, weights=TRUE) var.pdbs(pdbs, ...) } \arguments{ \item{xyz}{ an object of class \code{"xyz"} containing Cartesian coordinates in a matrix. } \item{weights }{ logical, if TRUE weights are calculated based on the pairwise distance variance. } \item{pdbs}{ a \sQuote{pdbs} object as object from function \code{pdbaln}. } \item{\dots}{ arguments passed to associated functions. } } \details{ This function calculates the variance of all pairwise distances in an ensemble of Cartesian coordinates. The primary use of this function is to calculate weights to scale the pair force constant for NMA. } \value{ Returns the a matrix of the pairwise distance variance, formated as weights if \sQuote{weights=TRUE}. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{nma.pdbs}} } \keyword{ utilities } bio3d/man/seqidentity.Rd0000644000176200001440000000354014707230357014670 0ustar liggesusers\name{seqidentity} \alias{seqidentity} \title{ Percent Identity} \description{ Determine the percent identity scores for aligned sequences. } \usage{ seqidentity(alignment, normalize=TRUE, similarity=FALSE, ncore=1, nseg.scale=1) } \arguments{ \item{alignment}{ sequence alignment obtained from \code{\link{read.fasta}} or an alignment character matrix. } \item{normalize}{ logical, if TRUE output is normalized to values between 0 and 1 otherwise percent identity is returned. } \item{similarity}{ logical, if TRUE sequence similarity is calculated instead of identity. } \item{ncore}{ number of CPU cores used to do the calculation. \code{ncore>1} requires package \sQuote{parallel} installed. } \item{nseg.scale}{ split input data into specified number of segments prior to running multiple core calculation. See \code{\link{fit.xyz}}. } } \details{ The percent identity value is a single numeric score determined for each pair of aligned sequences. It measures the number of identical residues (\dQuote{matches}) in relation to the length of the alignment. } \value{ Returns a numeric matrix with all pairwise identity values. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \seealso{ \code{\link{read.fasta}}, \code{\link{filter.identity}}, \code{\link{entropy}}, \code{\link{consensus}} } \examples{ attach(kinesin) ide.mat <- seqidentity(pdbs) # Plot identity matrix plot.dmat(ide.mat, color.palette=mono.colors, main="Sequence Identity", xlab="Structure No.", ylab="Structure No.") # Histogram of pairwise identity values hist(ide.mat[upper.tri(ide.mat)], breaks=30,xlim=c(0,1), main="Sequence Identity", xlab="Identity") # Compare two sequences seqidentity( rbind(pdbs$ali[1,], pdbs$ali[15,]) ) detach(kinesin) } \keyword{ utilities } bio3d/man/aa123.Rd0000644000176200001440000000301214707230357013127 0ustar liggesusers\name{aa123} \alias{aa123} \alias{aa321} \title{ Convert Between 1-letter and 3-letter Aminoacid Codes } \description{ Convert between one-letter IUPAC aminoacid codes and three-letter PDB style aminoacid codes. } \usage{ aa123(aa) aa321(aa) } \arguments{ \item{aa}{ a character vector of individual aminoacid codes. } } \details{ Standard conversions will map \sQuote{A} to \sQuote{ALA}, \sQuote{G} to \sQuote{GLY}, etc. Non-standard codes in \code{aa} will generate a warning and return \sQuote{UNK} or \sQuote{X}. } \value{ A character vector of aminoacid codes. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. For a description of IUPAC one-letter codes see:\cr \url{https://www.insdc.org/documents/feature_table.html#7.4.3} For more information on PDB residue codes see:\cr \url{http://ligand-expo.rcsb.org/ld-search.html} } \author{ Barry Grant } \seealso{ \code{\link{read.pdb}}, \code{\link{read.fasta}}, \code{\link{pdbseq}} } \examples{ # Simple conversion aa123(c("D","L","A","G","S","H")) aa321(c("ASP", "LEU", "ALA", "GLY", "SER", "HIS")) \dontrun{ # Extract sequence from a PDB file's ATOM and SEQRES cards pdb <- read.pdb("1BG2") s <- aa321(pdb$seqres) # SEQRES a <- aa321(pdb$atom[pdb$calpha,"resid"]) # ATOM # Write both sequences to a fasta file write.fasta(alignment=seqbind(s,a), id=c("seqres","atom"), file="eg2.fa") # Alternative approach for ATOM sequence extraction pdbseq(pdb) pdbseq(pdb, aa1=FALSE ) } } \keyword{ utilities } bio3d/man/pca.array.Rd0000644000176200001440000000310414707230357014202 0ustar liggesusers\name{pca.array} \alias{pca.array} \title{ Principal Component Analysis of an array of matrices } \description{ Calculate the principal components of an array of correlation or covariance matrices. } \usage{ \method{pca}{array}(x, use.svd = TRUE, rm.gaps=TRUE, ...) } \arguments{ \item{x}{ an array of matrices, e.g. correlation or covariance matrices as obtained from functions \code{dccm} or \code{enma2covs}. } \item{use.svd}{ logical, if TRUE singular value decomposition (SVD) is called instead of eigenvalue decomposition. } \item{rm.gaps}{ logical, if TRUE gap cells (with missing coordinate data in any input matrix) are removed before calculation. This is equivalent to removing NA cells from x. } \item{\dots}{ . } } \details{ This function performs PCA of symmetric matrices, such as distance matrices from an ensemble of crystallographic structures, residue-residue cross-correlations or covariance matrices derived from ensemble NMA or MD simulation replicates, and so on. The \sQuote{upper triangular} region of the matrix is regarded as a long vector of random variables. The function returns M eigenvalues and eigenvectors with each eigenvector having the dimension N(N-1)/2, where M is the number of matrices and N the number of rows/columns of matrices. } \value{ Returns a list with components equivalent to the output from \code{pca.xyz}. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Xin-Qiu Yao, Lars Skjaerven } \seealso{ \code{\link{pca.xyz}} } \keyword{ utilities } bio3d/man/filter.cmap.Rd0000644000176200001440000000405314707230357014532 0ustar liggesusers\name{filter.cmap} \alias{filter.cmap} \title{ Contact Map Consensus Filtering } \description{ This function filters a tridimensional contact matrix (NxNxZ), where N is the residue number and Z is the simulation number) selecting only contacts present in at least P simulations. } \usage{ filter.cmap(cm, cutoff.sims = NULL) } \arguments{ \item{cm}{ An array of dimensions NxNxZ or a list of NxN matrices containing binary contact values as obtained from \code{cmap}. Here, \sQuote{N} is the residue number and \sQuote{Z} the simulation number. The matrix elements should be 1 if two residues are in contact and 0 if they are not in contact. } \item{cutoff.sims}{ A single element numeric vector corresponding to the minimum number of simulations a contact between two residues must be present. If not, it will be set to 0 in the output matrix. } } \value{ The output matrix is a nXn binary matrix (n = residue number). Elements equal to 1 correspond to residues in contact, elements equal to 0 to residues not in contact. } \seealso{ \code{\link{cmap}}, \code{\link{plot.cmap}} } \examples{ \dontrun{ ## load example data pdbfile <- system.file("examples/hivp.pdb", package="bio3d") pdb <- read.pdb(pdbfile) trtfile <- system.file("examples/hivp.dcd", package="bio3d") trj <- read.dcd(trtfile, verbose=FALSE) ## split the trj example in two num.of.frames <- dim(trj)[1] trj1 <- trj[1:(num.of.frames/2),] trj2 <- trj[((num.of.frames/2)+1):num.of.frames,] ## Lets work with Calpha atoms only ca.inds <- atom.select(pdb, "calpha") #noh.inds <- atom.select(pdb, "noh") ## calculate single contact map matrices cms <- list() cms[[1]] <- cmap(trj1[,ca.inds$xyz], pcut=0.3, scut=0, dcut=7, mask.lower=FALSE) cms[[2]] <- cmap(trj1[,ca.inds$xyz], pcut=0.3, scut=0, dcut=7, mask.lower=FALSE) ## calculate average contact matrix cm.filter <- filter.cmap(cms, cutoff.sims=2) ## plot the result par(pty="s", mfcol=c(1,3)) plot.cmap(cms[[1]]) plot.cmap(cms[[2]]) plot.cmap(cm.filter) } } \keyword{analysis} bio3d/man/pdbaln.Rd0000644000176200001440000000526714707230357013576 0ustar liggesusers\name{pdbaln} \alias{pdbaln} \title{ Sequence Alignment of PDB Files } \description{ Create multiple sequences alignments from a list of PDB files returning aligned sequence and structure records. } \usage{ pdbaln(files, fit = FALSE, pqr = FALSE, ncore = 1, nseg.scale = 1, progress = NULL, ...) } \arguments{ \item{files}{ a character vector of PDB file names. Alternatively, a list of \code{pdb} objects can be provided. } \item{fit}{ logical, if TRUE coordinate superposition is performed on the input structures. } \item{pqr}{ logical, if TRUE the input structures are assumed to be in PQR format. } \item{ncore }{ number of CPU cores used to do the calculation. \code{ncore>1} requires package \sQuote{parallel} installed. } \item{nseg.scale }{ split input data into specified number of segments prior to running multiple core calculation. See \code{\link{fit.xyz}}. } \item{progress}{ progress bar for use with shiny web app. } \item{\dots}{ extra arguments passed to \code{seqaln} function. } } \details{ This wrapper function calls the underlying functions \code{read.pdb}, \code{pdbseq}, \code{seqaln} and \code{read.fasta.pdb} returning a list of class \code{"pdbs"} similar to that returned by \code{read.fasta.pdb}. As these steps are often error prone it is recomended for most cases that the individual underlying functions are called in sequence with checks made on the valadity of their respective outputs to ensure sensible results. } \value{ Returns a list of class \code{"pdbs"} with the following five components: \item{xyz}{numeric matrix of aligned C-alpha coordinates.} \item{resno}{character matrix of aligned residue numbers.} \item{b}{numeric matrix of aligned B-factor values.} \item{chain}{character matrix of aligned chain identifiers.} \item{id}{character vector of PDB sequence/structure names.} \item{ali}{character matrix of aligned sequences.} \item{call}{ the matched call. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \note{ See recommendation in details section above. } \seealso{ \code{\link{read.pdb}}, \code{\link{pdbseq}}, \code{\link{seqaln}}, \code{\link{read.fasta}},\code{\link{read.fasta.pdb}}, \code{\link{core.find}}, \code{\link{fit.xyz}}, \code{\link{read.all}}, \code{\link{pymol.pdbs}} } \examples{ \dontrun{ ##- Align PDBs (from vector of filenames) #files <- get.pdb(c("4q21","5p21"), URLonly=TRUE) files <- get.pdb(c("4q21","5p21"), path=tempdir(), overwrite=TRUE) pdbaln(files) ##- Align PDBs (from list of existing PDB objects) pdblist <- list(read.pdb(files[1]), read.pdb(files[2])) pdbaln(pdblist) } } \keyword{ utilities } bio3d/man/elements.Rd0000644000176200001440000000367314707230357014151 0ustar liggesusers\name{elements} \alias{elements} \docType{data} \title{Periodic Table of the Elements} \description{This data set gives various information on chemical elements.} \usage{elements} \format{ A data frame containing for each chemical element the following information. \describe{ \item{\code{num}}{atomic number} \item{\code{symb}}{elemental symbol} \item{\code{areneg}}{Allred and Rochow electronegativity (0.0 if unknown)} \item{\code{rcov}}{covalent radii (in Angstrom) (1.6 if unknown)} \item{\code{rbo}}{"bond order" radii} \item{\code{rvdw}}{van der Waals radii (in Angstrom) (2.0 if unknown)} \item{\code{maxbnd}}{maximum bond valence (6 if unknown)} \item{\code{mass}}{IUPAC recommended atomic masses (in amu)} \item{\code{elneg}}{Pauling electronegativity (0.0 if unknown)} \item{\code{ionization}}{ionization potential (in eV) (0.0 if unknown)} \item{\code{elaffinity}}{electron affinity (in eV) (0.0 if unknown)} \item{\code{red}}{red value for visualization} \item{\code{green}}{green value for visualization} \item{\code{blue}}{blue value for visualization} \item{\code{name}}{element name} } } \source{ Open Babel (2.3.1) file: element.txt\cr Created from the Blue Obelisk Cheminformatics Data Repository\cr Direct Source: http://www.blueobelisk.org/\cr http://www.blueobelisk.org/repos/blueobelisk/elements.xml includes furhter bibliographic citation information\cr - Allred and Rochow Electronegativity from http://www.hull.ac.uk/chemistry/electroneg.php?type=Allred-Rochow\cr - Covalent radii from http://dx.doi.org/10.1039/b801115j\cr - Van der Waals radii from http://dx.doi.org/10.1021/jp8111556\cr } \examples{ data(elements) elements # Get the mass of some elements symb <- c("C","O","H") elements[match(symb,elements[,"symb"]),"mass"] # Get the van der Waals radii of some elements symb <- c("C","O","H") elements[match(symb,elements[,"symb"]),"rvdw"] } \keyword{datasets} bio3d/man/read.pdcBD.Rd0000644000176200001440000000721014707230357014212 0ustar liggesusers\name{read.pdcBD} \alias{read.pdcBD} \title{ Read PQR output from pdcBD File } \description{ Read a pdcBD PQR coordinate file. } \usage{ read.pdcBD(file, maxlines = 50000, multi = FALSE, rm.insert = FALSE, rm.alt = TRUE, verbose = TRUE) } \arguments{ \item{file}{ the name of the pdcBD PQR file to be read. } \item{maxlines}{ the maximum number of lines to read before giving up with large files. Default is 50,000 lines. } \item{multi}{ logical, if TRUE multiple ATOM records are read for all models in multi-model files. } \item{rm.insert}{ logical, if TRUE PDB insert records are ignored. } \item{rm.alt}{ logical, if TRUE PDB alternate records are ignored. } \item{verbose}{ print details of the reading process. } } \details{ \code{maxlines} may require increasing for some large multi-model files. The preferred means of reading such data is via binary DCD format trajectory files (see the \code{\link{read.dcd}} function). } \value{ Returns a list of class \code{"pdb"} with the following components: \item{atom}{ a character matrix containing all atomic coordinate ATOM data, with a row per ATOM and a column per record type. See below for details of the record type naming convention (useful for accessing columns). } \item{het }{ a character matrix containing atomic coordinate records for atoms within \dQuote{non-standard} HET groups (see \code{atom}). } \item{helix }{ \sQuote{start}, \sQuote{end} and \sQuote{length} of H type sse, where start and end are residue numbers \dQuote{resno}. } \item{sheet }{ \sQuote{start}, \sQuote{end} and \sQuote{length} of E type sse, where start and end are residue numbers \dQuote{resno}. } \item{seqres }{ sequence from SEQRES field. } \item{xyz }{ a numeric vector of ATOM coordinate data. } \item{calpha }{ logical vector with length equal to \code{nrow(atom)} with TRUE values indicating a C-alpha \dQuote{elety}. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. For a description of PDB format (version3.3) see:\cr \url{http://www.wwpdb.org/documentation/format33/v3.3.html}. } \author{ Barry Grant } \note{ For both \code{atom} and \code{het} list components the column names can be used as a convenient means of data access, namely: Atom serial number \dQuote{eleno} , Atom type \dQuote{elety}, Alternate location indicator \dQuote{alt}, Residue name \dQuote{resid}, Chain identifier \dQuote{chain}, Residue sequence number \dQuote{resno}, Code for insertion of residues \dQuote{insert}, Orthogonal coordinates \dQuote{x}, Orthogonal coordinates \dQuote{y}, Orthogonal coordinates \dQuote{z}, Occupancy \dQuote{o}, and Temperature factor \dQuote{b}. See examples for further details. } \seealso{ \code{\link{atom.select}}, \code{\link{write.pdb}}, \code{\link{read.dcd}}, \code{\link{read.fasta.pdb}}, \code{\link{read.fasta}} } \examples{ \donttest{ # PDB server connection required - testing excluded try({ # Read a PDB file pdb <- read.pdb( "1bg2" ) # Print data for the first atom pdb$atom[1,] # Look at the first het atom pdb$het[1,] # Print some coordinate data pdb$atom[1:20, c("x","y","z")] # Print C-alpha coordinates (can also use 'atom.select') ##pdb$xyz[pdb$calpha, c("resid","x","y","z")] # Print SSE data (for helix and sheet) pdb$helix pdb$sheet$start # Print SEQRES data pdb$seqres # Renumber residues nums <- as.numeric(pdb$atom[,"resno"]) pdb$atom[,"resno"] <- nums - (nums[1] - 1) # Write out renumbered PDB file #write.pdb(pdb=pdb,file="eg.pdb") }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } \keyword{ IO } bio3d/man/atom2ele.Rd0000644000176200001440000000441014707230357014033 0ustar liggesusers\name{atom2ele} \alias{atom2ele} \alias{atom2ele.default} \alias{atom2ele.pdb} \title{ Atom Names/Types to Atomic Symbols Converter } \description{ Convert atom names/types into atomic symbols } \usage{ atom2ele(\dots) \method{atom2ele}{default}(x, elety.custom=NULL, rescue=TRUE, \dots) \method{atom2ele}{pdb}(pdb, inds=NULL, \dots) } \arguments{ \item{x}{a character vector containing atom names/types to be converted.} \item{elety.custom}{a customized data.frame containing atom names/types and corresponding atomic symbols.} \item{rescue}{logical, if TRUE the atomic symbols will be converted based on matching with \code{bio3d::elements$symb}. } \item{pdb}{an object of class \sQuote{pdb} for which \code{elety} will be converted.} \item{inds}{an object of class \sQuote{select} indicating a subset of the \code{pdb} object to be used (see \code{\link{atom.select}} and \code{\link{trim.pdb}}).} \item{\dots}{further arguments passed to or from other methods.} } \details{ The default method searchs for the atom names/types in the \code{\link{atom.index}} data set and returns their corresponding atomic symbols. If \code{elety.custom} is specified it is combined with \code{\link{atom.index}} (using \code{rbind}) before searching. Therefore, \code{elety.custom} must contains columns named \code{name} and \code{symb}. The S3 method for object of class \sQuote{pdb}, pass \code{pdb$atom[,"elety"]} to the default method. } \value{Return a character vector of atomic symbols} \author{Julien Ide, Lars Skjaerven} \seealso{ \code{\link{atom.index}}, \code{\link{elements}}, \code{\link{read.pdb}}, \code{\link{atom2mass}}, \code{\link{formula2mass}} } \examples{ atom.names <- c("CA", "O", "N", "OXT") atom2ele(atom.names) \donttest{ # PDB server connection required - testing excluded try({ ## Get atomic symbols from a PDB object with a customized data set pdb <- read.pdb("3RE0",verbose=FALSE) lig <- trim(pdb, "ligand") ## maps PT1 to Pt, CL2 to Cl, C4A to C atom2ele(lig) ## map atom name to element manually myelety <- data.frame(name = "CL2", symb = "Cl") atom2ele(lig, elety.custom = myelety) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } \keyword{ utilities } bio3d/man/dssp.Rd0000644000176200001440000001326014707276664013312 0ustar liggesusers\name{dssp} \alias{dssp} \alias{dssp.pdb} \alias{dssp.pdbs} \alias{dssp.xyz} \alias{stride} \alias{print.sse} \title{ Secondary Structure Analysis with DSSP or STRIDE } \description{ Secondary structure assignment according to the method of Kabsch and Sander (DSSP) or the method of Frishman and Argos (STRIDE). } \usage{ dssp(\dots) \method{dssp}{pdb}(pdb, exefile = "dssp", resno=TRUE, full=FALSE, verbose=FALSE, \dots) \method{dssp}{pdbs}(pdbs, \dots) \method{dssp}{xyz}(xyz, pdb, \dots) stride(pdb, exefile = "stride", resno=TRUE) \method{print}{sse}(x, \dots) } \arguments{ \item{pdb}{ a structure object of class \code{"pdb"}, obtained from \code{\link{read.pdb}}. } \item{exefile}{ file path to the \sQuote{DSSP} or \sQuote{STRIDE} program on your system (i.e. how is \sQuote{DSSP} or \sQuote{STRIDE} invoked). } \item{resno}{ logical, if TRUE output is in terms of residue numbers rather than residue index (position in sequence). } \item{full}{ logical, if TRUE bridge pairs and hbonds columns are parsed. } \item{verbose}{ logical, if TRUE \sQuote{DSSP} warning and error messages are printed. } \item{pdbs}{ a list object of class \code{"pdbs"} (obtained with \code{\link{pdbaln}} or \code{\link{read.fasta.pdb}}). } \item{xyz}{ a trajectory object of class \code{"xyz"}, obtained from \code{\link{read.ncdf}}, \code{\link{read.dcd}}, \code{\link{read.crd}}. } \item{x}{ an \code{sse} object obtained from \code{\link{dssp.pdb}} or \code{\link{stride}}. } \item{...}{ additional arguments to and from functions. } } \details{ This function calls the \sQuote{DSSP} or \sQuote{STRIDE} program to define secondary structure and psi and phi torsion angles. } \value{ Returns a list with the following components: \item{helix}{ \sQuote{start}, \sQuote{end}, \sQuote{length}, \sQuote{chain} and \sQuote{type} of helix, where start and end are residue numbers or residue index positions depending on the value of \dQuote{resno} input argument. } \item{sheet}{ \sQuote{start}, \sQuote{end} and \sQuote{length} of E type sse, where start and end are residue numbers \dQuote{resno}. } \item{turn}{ \sQuote{start}, \sQuote{end} and \sQuote{length} of T type sse, where start and end are residue numbers \dQuote{resno}. } \item{phi}{ a numeric vector of phi angles. } \item{psi}{ a numeric vector of psi angles. } \item{acc}{ a numeric vector of solvent accessibility. } \item{sse}{ a character vector of secondary structure type per residue. } \item{hbonds}{ a 10 or 16 column matrix containing the bridge pair records as well as backbone NH-->O and O-->NH H-bond records. (Only available for \code{\link{dssp}} } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. \sQuote{DSSP} is the work of Kabsch and Sander: Kabsch and Sander (1983) \emph{Biopolymers.} \bold{12}, 2577--2637. For information on obtaining \sQuote{DSSP}, see:\cr \url{https://swift.cmbi.umcn.nl/gv/dssp/}. \sQuote{STRIDE} is the work of Frishman and Argos: Frishman and Argos (1995) \emph{Proteins.} \bold{3}, 566--579. For information on obtaining the \sQuote{STRIDE} program, see:\cr \url{https://webclu.bio.wzw.tum.de/stride/install.html}, or copy it from an installation of VMD. } \author{ Barry Grant, Lars Skjaerven (dssp.pdbs) } \note{ A system call is made to the \sQuote{DSSP} or \sQuote{STRIDE} program, which must be installed on your system and in the search path for executables. See \url{http://thegrantlab.org/bio3d/articles/online/install_vignette/Bio3D_install.html} for instructions of how to install these programs. For the \code{hbonds} list component the column names can be used as a convenient means of data access, namely:\cr Bridge pair 1 \dQuote{BP1},\cr Bridge pair 2 \dQuote{BP2},\cr Backbone H-bond (NH-->O) \dQuote{NH-O.1},\cr H-bond energy of NH-->O \dQuote{E1},\cr Backbone H-bond (O-->NH) \dQuote{O-HN.1},\cr H-bond energy of O-->NH \dQuote{E2},\cr Backbone H-bond (NH-->O) \dQuote{NH-O.2},\cr H-bond energy of NH-->O \dQuote{E3},\cr Backbone H-bond (O-->NH) \dQuote{O-HN.2},\cr H-bond energy of O-->NH \dQuote{E4}.\cr If \sQuote{resno=TRUE} the following additional columns are included:\cr Chain ID of resno \dQuote{BP1}: \dQuote{ChainBP1},\cr Chain ID of resno \dQuote{BP2}: \dQuote{ChainBP2},\cr Chain ID of resno \dQuote{O-HN.1}: \dQuote{Chain1},\cr Chain ID of resno \dQuote{NH-O.2}: \dQuote{Chain2},\cr Chain ID of resno \dQuote{O-HN.1}: \dQuote{Chain3},\cr Chain ID of resno \dQuote{NH-O.2}: \dQuote{Chain4}. } \seealso{ \code{\link{read.pdb}}, \code{\link{torsion.pdb}}, \code{\link{torsion.xyz}}, \code{\link{plot.bio3d}}, \code{\link{read.ncdf}}, \code{\link{read.dcd}}, \code{\link{read.prmtop}}, \code{\link{read.crd}}, } \examples{ \dontrun{ ##- PDB example # Read a PDB file pdb <- read.pdb("1bg2") sse <- dssp(pdb) sse2 <- stride(pdb) ## Short summary sse sse2 # Helix data sse$helix # Precent SSE content sum(sse$helix$length)/sum(pdb$calpha) * 100 sum(sse$sheet$length)/sum(pdb$calpha) * 100 ##- PDBs example aln <- read.fasta( system.file("examples/kif1a.fa",package="bio3d") ) pdbs <- read.fasta.pdb( aln ) ## Aligned PDB defined secondary structure pdbs$sse ## Aligned DSSP defined secondary structure sse <- dssp(pdbs) ##- XYZ Trajectory pdb <- read.pdb("2mda", multi=TRUE) dssp.xyz(pdb$xyz, pdb) ## Note. for large MD trajectories you may want to skip some frames, e.g. xyz <- rbind(pdb$xyz, pdb$xyz) ## dummy trajectory frames <- seq(1, to=nrow(xyz), by=4) ## frame numbers to examine ss <- dssp.xyz(xyz[frames, ], pdb) ## matrix of sse frame x residue } } \keyword{ utilities } bio3d/man/is.pdb.Rd0000644000176200001440000000142114707230357013501 0ustar liggesusers\name{is.pdb} \alias{is.pdb} \alias{is.pdbs} \title{ Is an Object of Class \sQuote{pdb(s)}? } \description{ Checks whether its argument is an object of class \sQuote{pdb} or \sQuote{pdbs}. } \usage{ is.pdb(x) is.pdbs(x) } \arguments{ \item{x}{ an R object. } } \details{ Tests if the object \sQuote{x} is of class \sQuote{pdb} (\code{is.pdb}) or \sQuote{pdbs} (\code{is.pdbs}), i.e. if \sQuote{x} has a \dQuote{class} attribute equal to \code{pdb} or \code{pdbs}. } \value{ TRUE if x is an object of class \sQuote{pdb(s)} and FALSE otherwise } \seealso{ \code{\link{read.pdb}}, \code{\link{read.fasta.pdb}}, \code{\link{pdbaln}} } \examples{ # Read a PDB file pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) is.pdb(pdb) } \keyword{ classes } bio3d/man/bwr.colors.Rd0000644000176200001440000000321714707230357014421 0ustar liggesusers\name{bwr.colors} \alias{bwr.colors} \alias{mono.colors} \title{ Color Palettes } \description{ Create a vector of \sQuote{n} \dQuote{contiguous} colors forming either a Blue-White-Red or a White-Gray-Black color palette. } \usage{ bwr.colors(n) mono.colors(n) } \arguments{ \item{n}{ the number of colors in the palette (>=1). } } \details{ The function \code{bwr.colors} returns a vector of \code{n} color names that range from blue through white to red. The function \code{mono.colors} returns color names ranging from white to black. Note: the first element of the returned vector will be NA. } \value{ Returns a character vector, \code{cv}, of color names. This can be used either to create a user-defined color palette for subsequent graphics with \code{palette(cv)}, or as a \code{col=} specification in graphics functions and \code{par}. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. The \code{bwr.colors} function is derived from the \code{gplots} package function \code{colorpanel} by Gregory R. Warnes. } \author{ Barry Grant } \seealso{ \code{\link{vmd_colors}}, \code{\link{cm.colors}}, \code{\link{colors}}, \code{\link{palette}}, \code{\link{hsv}}, \code{\link{rgb}}, \code{\link{gray}}, \code{\link{col2rgb}} } \examples{ \donttest{ # Redundant testing excluded # Color a distance matrix pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) d <- dm(pdb,"calpha") plot(d, color.palette=bwr.colors) plot(d, resnum.1 = pdb$atom[pdb$calpha,"resno"], color.palette = mono.colors, xlab="Residue Number", ylab="Residue Number") } } \keyword{ utilities } bio3d/man/consensus.Rd0000644000176200001440000000356514707230357014355 0ustar liggesusers\name{consensus} \alias{consensus} \title{ Sequence Consensus for an Alignment } \description{ Determines the consensus sequence for a given alignment at a given identity cutoff value. } \usage{ consensus(alignment, cutoff = 0.6) } \arguments{ \item{alignment}{ an \code{alignment} object created by the \code{\link{read.fasta}} function or an alignment character matrix. } \item{cutoff}{ a numeric value beteen 0 and 1, indicating the minimum sequence identity threshold for determining a consensus amino acid. Default is 0.6, or 60 percent residue identity. } } \value{ A vector containing the consensus sequence, where \sQuote{-} represents positions with no consensus (i.e. under the \code{cutoff}) } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \seealso{ \code{\link{read.fasta}} } \examples{ #-- Read HIV protease alignment aln <- read.fasta(system.file("examples/hivp_xray.fa",package="bio3d")) # Generate consensus con <- consensus(aln) print(con$seq) # Plot residue frequency matrix ##png(filename = "freq.png", width = 1500, height = 780) col <- mono.colors(32) aa <- rev(rownames(con$freq)) image(x=1:ncol(con$freq), y=1:nrow(con$freq), z=as.matrix(rev(as.data.frame(t(con$freq)))), col=col, yaxt="n", xaxt="n", xlab="Alignment Position", ylab="Residue Type") # Add consensus along the axis axis(side=1, at=seq(0,length(con$seq),by=5)) axis(side=2, at=c(1:22), labels=aa) axis(side=3, at=c(1:length(con$seq)), labels =con$seq) axis(side=4, at=c(1:22), labels=aa) grid(length(con$seq), length(aa)) box() # Add consensus sequence for(i in 1:length(con$seq)) { text(i, which(aa==con$seq[i]),con$seq[i],col="white") } # Add lines for residue type separation abline(h=c(2.5,3.5, 4.5, 5.5, 3.5, 7.5, 9.5, 12.5, 14.5, 16.5, 19.5), col="gray") } \keyword{ utilities } bio3d/man/read.crd.amber.Rd0000644000176200001440000000305214707230357015073 0ustar liggesusers\name{read.crd.amber} \alias{read.crd.amber} \title{ Read AMBER Coordinate files } \description{ Read coordinate data from an AMBER coordinate / restart file. } \usage{ \method{read.crd}{amber}(file, ...) } \arguments{ \item{file}{ name of crd file to read. } \item{\dots}{ arguments passed to and from functions. } } \details{ Read a AMBER Coordinate format file. } \value{ A list object of type \sQuote{amber} and \sQuote{crd} with the following components: \item{xyz}{ a numeric matrix of class \sQuote{xyz} containing the Cartesian coordinates. } \item{velocities}{ a numeric vector containg the atom velocities. } \item{time}{ numeric, length of the simulation (applies to Amber restart coordinate files). } \item{natoms}{ total number of atoms in the coordinate file. } \item{box}{ dimensions of the box. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. \url{https://ambermd.org/FileFormats.php} } \author{ Lars Skjaerven } \note{ See AMBER documentation for Coordinate format description. } \seealso{ \code{\link{read.prmtop}}, \code{\link{read.ncdf}}, \code{\link{as.pdb}}, \code{\link{atom.select}}, \code{\link{read.pdb}}, \code{\link{read.crd.charmm}} } \examples{ \dontrun{ ## Read Amber PRMTOP and CRD files prm <- read.prmtop(system.file("examples/crambin.prmtop", package="bio3d")) crd <- read.crd(system.file("examples/crambin.inpcrd", package="bio3d")) ## Convert to PDB format pdb <- as.pdb(prm, crd) ## Atom selection ca.inds <- atom.select(prm, "calpha") } } \keyword{ IO } bio3d/man/as.pdb.Rd0000644000176200001440000001506514707230357013502 0ustar liggesusers\name{as.pdb} \alias{as.pdb} \alias{as.pdb.mol2} \alias{as.pdb.prmtop} \alias{as.pdb.default} \title{ Convert to PDB format } \description{ Convert Tripos Mol2 format, or Amber parameter/topology and coordinate data to PDB format. } \usage{ as.pdb(\dots) \method{as.pdb}{mol2}(mol, \dots) \method{as.pdb}{prmtop}(prmtop, crd=NULL, inds=NULL, inds.crd=inds, ncore=NULL, \dots) \method{as.pdb}{default}(pdb=NULL, xyz=NULL, type=NULL, resno=NULL, resid=NULL, eleno=NULL, elety=NULL, chain=NULL, insert=NULL, alt=NULL, o=NULL, b=NULL, segid=NULL, elesy=NULL, charge=NULL, verbose=TRUE, \dots) } \arguments{ \item{\dots}{ arguments passed to and from functions. } \item{mol}{ a list object of type \code{"mol2"} (obtained with \code{\link{read.mol2}}). } \item{prmtop}{ a list object of type \code{"prmtop"} (obtained with \code{\link{read.prmtop}}). } \item{crd}{ a list object of type \code{"crd"} (obtained with \code{\link{read.crd.amber}}). } \item{inds}{ a list object of type \code{"select"} as obtained from \code{\link{atom.select}}. The indices points to which atoms in the PRMTOP object to convert. } \item{inds.crd}{ same as the \sQuote{inds} argument, but pointing to the atoms in CRD object to convert. By default, this argument equals to \sQuote{inds}, assuming the same number and sequence of atoms in the PRMTOP and CRD objects. } \item{ncore }{ number of CPU cores used to do the calculation. \code{ncore>1} requires package \sQuote{parallel} installed. } \item{pdb}{ an object of class \sQuote{pdb} as obtained from \code{\link{read.pdb}}. } \item{xyz}{ a numeric vector/matrix of Cartesian coordinates. If provided, the number of atoms in the new PDB object will be set to \code{ncol(as.xyz(xyz))/3} (see \code{\link{as.xyz}}). If \code{xyz} is not provided the number of atoms will be based on the length of \code{eleno}, \code{resno}, or \code{resid} (in that order). } \item{type}{ a character vector of record types, i.e. "ATOM" or "HETATM", with length equal to \code{ncol(as.xyz(xyz))/3}. Alternatively, a single element character vector can be provided which will be repeated to match the number of atoms. } \item{resno}{ a numeric vector of residue numbers of length equal to \code{ncol(as.xyz(xyz))/3}. } \item{resid}{ a character vector of residue types/ids of length equal to \code{ncol(as.xyz(xyz))/3}. Alternatively, a single element character vector can be provided which will be repeated to match the number of atoms. } \item{eleno}{ a numeric vector of element/atom numbers of length equal to \code{ncol(as.xyz(xyz))/3}. } \item{elety}{ a character vector of element/atom types of length equal to \code{ncol(as.xyz(xyz))/3}. Alternatively, a single element character vector can be provided which will be repeated to match the number of atoms. } \item{chain}{ a character vector of chain identifiers with length equal to \code{ncol(as.xyz(xyz))/3}. Alternatively, a single element character vector can be provided which will be repeated to match the number of atoms. } \item{insert}{ a character vector of insertion code with length equal to \code{ncol(as.xyz(xyz))/3}. } \item{alt}{ a character vector of alternate record with length equal to \code{ncol(as.xyz(xyz))/3}. } \item{o}{ a numeric vector of occupancy values of length equal to \code{ncol(as.xyz(xyz))/3}. Alternatively, a single element numeric vector can be provided which will be repeated for to match the number of atoms. } \item{b}{ a numeric vector of B-factors of length equal to \code{ncol(as.xyz(xyz))/3}. Alternatively, a single element numeric vector can be provided which will be repeated to match the number of atoms.} \item{segid}{ a character vector of segment id of length equal to \code{ncol(as.xyz(xyz))/3}. Alternatively, a single element character vector can be provided which will be repeated to match the number of atoms. } \item{elesy}{ a character vector of element symbol of length equal to \code{ncol(as.xyz(xyz))/3}. Alternatively, a single element character vector can be provided which will be repeated to match the number of atoms. } \item{charge}{ a numeric vector of atomic charge of length equal to \code{ncol(as.xyz(xyz))/3}. } \item{verbose}{ logical, if TRUE details of the PDB generation process is printed to screen. } } \details{ This function converts Tripos Mol2 format, Amber formatted parameter/topology (PRMTOP) and coordinate objects, and vector data to a PDB object. While \code{as.pdb.mol2} and \code{as.pdb.prmtop} converts specific objects to a PDB object, \code{as.pdb.default} provides basic functionality to convert raw data such as vectors of e.g. residue numbers, residue identifiers, Cartesian coordinates, etc to a PDB object. When \code{pdb} is provided the returned PDB object is built from the input object with fields replaced by any input vector arguments. e.g. \code{as.pdb(pdb, xyz=crd)} will return the same PDB object, with only the Cartesian coordinates changed to \code{crd}. } \value{ Returns a list of class \code{"pdb"} with the following components: \item{atom}{ a data.frame containing all atomic coordinate ATOM data, with a row per ATOM and a column per record type. See below for details of the record type naming convention (useful for accessing columns). } \item{xyz }{ a numeric matrix of ATOM coordinate data of class \code{xyz}. } \item{calpha }{ logical vector with length equal to \code{nrow(atom)} with TRUE values indicating a C-alpha \dQuote{elety}. } \item{call }{ the matched call. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. \url{https://ambermd.org/FileFormats.php} } \author{ Lars Skjaerven } \seealso{ \code{\link{read.crd}}, \code{\link{read.ncdf}}, \code{\link{atom.select}}, \code{\link{read.pdb}} } \examples{ ## Vector(s) to PDB object pdb <- as.pdb(resno=1:6, elety="CA", resid="ALA", chain="A") pdb \dontrun{ ## Read a PRMTOP file prmtop <- read.prmtop(system.file("examples/crambin.prmtop", package="bio3d")) ## Read Amber coordinates crds <- read.crd(system.file("examples/crambin.inpcrd", package="bio3d")) ## Atom selection ca.inds <- atom.select(prmtop, "calpha") ## Convert to PDB format pdb <- as.pdb(prmtop, crds, inds=ca.inds) ## Read a single entry MOL2 file ## (returns a single object) mol <- read.mol2( system.file("examples/aspirin.mol2", package="bio3d") ) ## Convert to PDB pdb <- as.pdb(mol) } } \keyword{ IO } bio3d/man/trim.pdb.Rd0000644000176200001440000000650514707230357014051 0ustar liggesusers\name{trim} \alias{trim} \alias{trim.pdb} \title{ Trim a PDB Object To A Subset of Atoms. } \description{ Produce a new smaller PDB object, containing a subset of atoms, from a given larger PDB object. } \usage{ trim(\dots) \method{trim}{pdb}(pdb, \dots, inds = NULL, sse = TRUE) } \arguments{ \item{pdb}{ a PDB structure object obtained from \code{\link{read.pdb}}. } \item{\dots}{ additional arguments passed to \code{\link{atom.select}}. If \code{inds} is also provided, these arguments will be ignored. } \item{inds}{ a list object of ATOM and XYZ indices as obtained from \code{\link{atom.select}}. If NULL, atom selection will be obtained from calling \code{atom.select(pdb, \dots)}. } \item{sse}{ logical, if \sQuote{FALSE} helix and sheet components are omitted from output. } } \details{ This is a basic utility function for creating a new PDB object based on a selection of atoms. } \value{ Returns a list of class \code{"pdb"} with the following components: \item{atom}{ a character matrix containing all atomic coordinate ATOM data, with a row per ATOM and a column per record type. See below for details of the record type naming convention (useful for accessing columns). } \item{het }{ a character matrix containing atomic coordinate records for atoms within \dQuote{non-standard} HET groups (see \code{atom}). } \item{helix }{ \sQuote{start}, \sQuote{end} and \sQuote{length} of H type sse, where start and end are residue numbers \dQuote{resno}. } \item{sheet }{ \sQuote{start}, \sQuote{end} and \sQuote{length} of E type sse, where start and end are residue numbers \dQuote{resno}. } \item{seqres }{ sequence from SEQRES field. } \item{xyz }{ a numeric vector of ATOM coordinate data. } \item{xyz.models }{ a numeric matrix of ATOM coordinate data for multi-model PDB files. } \item{calpha }{ logical vector with length equal to \code{nrow(atom)} with TRUE values indicating a C-alpha \dQuote{elety}. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. For a description of PDB format (version3.3) see:\cr \url{http://www.wwpdb.org/documentation/format33/v3.3.html}. . } \author{ Barry Grant, Lars Skjaerven } \note{ \code{het} and \code{seqres} list components are returned unmodified. For both \code{atom} and \code{het} list components the column names can be used as a convenient means of data access, namely: Atom serial number \dQuote{eleno}, Atom type \dQuote{elety}, Alternate location indicator \dQuote{alt}, Residue name \dQuote{resid}, Chain identifier \dQuote{chain}, Residue sequence number \dQuote{resno}, Code for insertion of residues \dQuote{insert}, Orthogonal coordinates \dQuote{x}, Orthogonal coordinates \dQuote{y}, Orthogonal coordinates \dQuote{z}, Occupancy \dQuote{o}, and Temperature factor \dQuote{b}. See examples for further details. } \seealso{ \code{\link{trim.pdbs}}, \code{\link{trim.xyz}}, \code{\link{read.pdb}}, \code{\link{atom.select}} } \examples{ \dontrun{ ## Read a PDB file from the RCSB online database pdb <- read.pdb("1bg2") ## Select calpha atoms sele <- atom.select(pdb, "calpha") ## Trim PDB new.pdb <- trim.pdb(pdb, inds=sele) ## Or, simply #new.pdb <- trim.pdb(pdb, "calpha") ## Write to file write.pdb(new.pdb, file="calpha.pdb") } } \keyword{ utilities } bio3d/man/biounit.Rd0000644000176200001440000000426114707230357014000 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/biounit.R \name{biounit} \alias{biounit} \title{Biological Units Construction} \usage{ biounit(pdb, biomat = NULL, multi = FALSE, ncore = NULL) } \arguments{ \item{pdb}{an object of class \code{pdb} as obtained from function \code{\link{read.pdb}}.} \item{biomat}{a list object as returned by \code{read.pdb} (pdb$remark$biomat), containing matrices for symmetry operation on individual chains to build biological units. It will override the matrices stored in \code{pdb}.} \item{multi}{logical, if TRUE the biological unit is returned as a 'multi-model' \code{pdb} object with each symmetric copy a distinct structural 'MODEL'. Otherwise, all copies are represented as separated chains.} \item{ncore}{number of CPU cores used to do the calculation. By default (\code{ncore=NULL}), use all available CPU cores.} } \value{ a list of \code{pdb} objects with each representing an individual biological unit. } \description{ Construct biological assemblies/units based on a 'pdb' object. } \details{ A valid structural/simulation study should be performed on the biological unit of a protein system. For example, the alpha2-beta2 tetramer form of hemoglobin. However, canonical PDB files usually contain the asymmetric unit of the crystal cell, which can be: \enumerate{ \item One biological unit \item A portion of a biological unit \item Multiple biological units } The function performs symmetry operations to the coordinates based on the transformation matrices stored in a 'pdb' object returned by \code{\link{read.pdb}}, and returns biological units stored as a list of \code{pdb} objects. } \examples{ \donttest{ # PDB server connection required - testing excluded try({ pdb <- read.pdb("2dn1") biounit <- biounit(pdb) pdb biounit }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } \dontrun{ biounit <- biounit(read.pdb("2bfu"), multi=TRUE) write.pdb(biounit[[1]], file="biounit.pdb") # open the pdb file in VMD to have a look on the biological unit } } \author{ Xin-Qiu Yao } \seealso{ \code{\link{read.pdb}} } bio3d/man/cmap.Rd0000644000176200001440000001005214707230357013242 0ustar liggesusers\name{cmap} \alias{cmap} \alias{cmap.default} \alias{cmap.xyz} \alias{cmap.pdb} \alias{cmap.pdbs} \title{ Contact Map } \description{ Construct a Contact Map for Given Protein Structure(s).} \usage{ cmap(\dots) \method{cmap}{default}(\dots) \method{cmap}{xyz}(xyz, grpby = NULL, dcut = 4, scut = 3, pcut=1, binary=TRUE, mask.lower = TRUE, collapse=TRUE, gc.first=FALSE, ncore=1, nseg.scale=1, \dots) \method{cmap}{pdb}(pdb, inds = NULL, verbose = FALSE, \dots) \method{cmap}{pdbs}(pdbs, rm.gaps=FALSE, all.atom=FALSE, \dots) } \arguments{ \item{xyz}{ numeric vector of xyz coordinates or a numeric matrix of coordinates with a row per structure/frame. } \item{grpby}{ a vector counting connective duplicated elements that indicate the elements of \code{xyz} that should be considered as a group (e.g. atoms from a particular residue). } \item{dcut}{ a cutoff distance value below which atoms are considered in contact. } \item{scut}{ a cutoff neighbour value which has the effect of excluding atoms that are sequentially within this value. } \item{pcut}{ a cutoff probability of structures/frames showing a contact, above which atoms are considered in contact with respect to the ensemble. Ignored if \code{binary=FALSE}. } \item{binary}{ logical, if FALSE the raw matrix containing fraction of frames that two residues are in contact is returned. } \item{mask.lower}{ logical, if TRUE the lower matrix elements (i.e. those below the diagonal) are returned as NA.} \item{collapse}{ logical, if FALSE an array of contact maps for all frames is returned. } \item{gc.first}{ logical, if TRUE will call gc() first before calculation of distance matrix. This is to solve the memory overload problem when \code{ncore > 1} and \code{xyz} has many rows, with a bit sacrifice on speed. } \item{ncore }{ number of CPU cores used to do the calculation. \code{ncore>1} requires package \sQuote{parallel} installed. } \item{nseg.scale }{ split input data into specified number of segments prior to running multiple core calculation. See \code{\link{fit.xyz}}. } \item{pdb}{ a structure object of class \code{"pdb"}, obtained from \code{\link{read.pdb}}. } \item{inds}{ a list object of ATOM and XYZ indices as obtained from \code{\link{atom.select}}. } \item{verbose}{ logical, if TRUE details of the selection are printed. } \item{pdbs}{ a \sQuote{pdbs} object as returned by \code{\link{read.fasta.pdb}}, \code{\link{read.all}}, or \code{\link{pdbaln}}. } \item{rm.gaps}{ logical, if TRUE gapped positions are removed in the returned value. } \item{all.atom}{ logical, if TRUE all-atom coordinates from \code{\link{read.all}} are used. } \item{\dots}{ arguments passed to and from functions. } } \details{ A contact map is a simplified distance matrix. See the distance matrix function \code{\link{dm}} for further details. Function \code{"cmap.pdb"} is a wrapper for \code{"cmap.xyz"} which selects all \sQuote{notwater} atoms and calculates the contact matrix grouped by residue number. } \value{ Returns a N by N numeric matrix composed of zeros and ones, where one indicates a contact between selected atoms. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \seealso{ \code{\link{dm}}, \code{\link{dccm}}, \code{\link{dist}}, \code{\link{dist.xyz}} } \examples{ ##- Read PDB file pdb <- read.pdb( system.file("examples/hivp.pdb", package="bio3d") ) ## Atom Selection indices inds <- atom.select(pdb, "calpha") ## Reference contact map ref.cont <- cmap( pdb$xyz[inds$xyz], dcut=6, scut=3 ) plot.cmap(ref.cont) \dontrun{ ##- Read Traj file trj <- read.dcd( system.file("examples/hivp.dcd", package="bio3d") ) ## For each frame of trajectory sum.cont <- NULL for(i in 1:nrow(trj)) { ## Contact map for frame 'i' cont <- cmap(trj[i,inds$xyz], dcut=6, scut=3) ## Product with reference prod.cont <- ref.cont * cont sum.cont <- c(sum.cont, sum(prod.cont,na.rm=TRUE)) } plot(sum.cont, typ="l") } } \keyword{ utilities } bio3d/man/normalize.vector.Rd0000644000176200001440000000236314707230357015631 0ustar liggesusers\name{normalize.vector} \alias{normalize.vector} \title{ Mass-Weighted Normalized Vector } \description{ Normalizes a vector (mass-weighted if requested). } \usage{ normalize.vector(x, mass=NULL) } \arguments{ \item{x}{ a numeric vector or matrix to be normalized. } \item{mass}{ a numeric vector containing the atomic masses for weighting. } } \details{ This function normalizes a vector, or alternatively, the column-wise vector elements of a matrix. If atomic masses are provided the vector is mass-weigthed. See examples for more details. } \value{ Returns the normalized vector(s). } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{nma} }, \code{\link{inner.prod} } } \examples{ x <- 1:3 y <- matrix(1:9, ncol = 3, nrow = 3) normalize.vector(x) normalize.vector(y) ## Application to normal modes pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) ## Calculate (vibrational) normal modes modes <- nma(pdb) ## Returns a vector nv <- normalize.vector(modes$modes[,7]) ## Returns a matrix nv <- normalize.vector(modes$modes[,7:10]) ## Mass-weighted nv <- normalize.vector(modes$modes[,7], mass=modes$mass) } \keyword{ utilities } bio3d/man/conserv.Rd0000644000176200001440000000561214707230357014007 0ustar liggesusers\name{conserv} \alias{conserv} \title{ Score Residue Conservation At Each Position in an Alignment } \description{ Quantifies residue conservation in a given protein sequence alignment by calculating the degree of amino acid variability in each column of the alignment. } \usage{ conserv(x, method = c("similarity","identity","entropy22","entropy10"), sub.matrix = c("bio3d", "blosum62", "pam30", "other"), matrix.file = NULL, normalize.matrix = TRUE) } \arguments{ \item{x}{ an alignment list object with \code{id} and \code{ali} components, similar to that generated by \code{\link{read.fasta}}. } \item{method}{ the conservation assesment method. } \item{sub.matrix}{ a matrix to score conservation. } \item{matrix.file}{ a file name of an arbitary user matrix. } \item{normalize.matrix}{ logical, if TRUE the matrix is normalized pior to assesing conservation. } } \details{ To assess the level of sequence conservation at each position in an alignment, the \dQuote{similarity}, \dQuote{identity}, and \dQuote{entropy} per position can be calculated. The \dQuote{similarity} is defined as the average of the similarity scores of all pairwise residue comparisons for that position in the alignment, where the similarity score between any two residues is the score value between those residues in the chosen substitution matrix \dQuote{sub.matrix}. The \dQuote{identity} i.e. the preference for a specific amino acid to be found at a certain position, is assessed by averaging the identity scores resulting from all possible pairwise comparisons at that position in the alignment, where all identical residue comparisons are given a score of 1 and all other comparisons are given a value of 0. \dQuote{Entropy} is based on Shannons information entropy. See the \code{\link{entropy}} function for further details. Note that the returned scores are normalized so that conserved columns score 1 and diverse columns score 0. } \value{ Returns a numeric vector of scores } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. Grant, B.J. et al. (2007) \emph{J. Mol. Biol.} \bold{368}, 1231--1248. } \author{ Barry Grant } \note{ Each of these conservation scores has particular strengths and weaknesses. For example, entropy elegantly captures amino acid diversity but fails to account for stereochemical similarities. By employing a combination of scores and taking the union of their respective conservation signals we expect to achieve a more comprehensive analysis of sequence conservation (Grant, 2007). } \seealso{ \code{\link{read.fasta}}, \code{\link{read.fasta.pdb}} } \examples{ ## Read an example alignment aln <- read.fasta(system.file("examples/hivp_xray.fa",package="bio3d")) ## Score conservation conserv(x=aln$ali, method="similarity", sub.matrix="bio3d") ##conserv(x=aln$ali,method="entropy22", sub.matrix="other") } \keyword{ utilities } bio3d/man/write.ncdf.Rd0000644000176200001440000000365114707230357014374 0ustar liggesusers\name{write.ncdf} \alias{write.ncdf} \title{ Write AMBER Binary netCDF files } \description{ Write coordinate data to a binary netCDF trajectory file. } \usage{ write.ncdf(x, trjfile = "R.ncdf", cell = NULL) } \arguments{ \item{x}{ A numeric matrix of xyz coordinates with a frame/structure per row and a Cartesian coordinate per column. } \item{trjfile}{ name of the output trajectory file. } \item{cell}{ A numeric matrix of cell information with a frame/structure per row and a cell length or angle per column. If NULL cell will not be written. } } \details{ Writes an AMBER netCDF (Network Common Data Form) format trajectory file with the help of David W. Pierce's (UCSD) ncdf4 package available from CRAN. } \value{ Called for its effect. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. \url{https://www.unidata.ucar.edu/software/netcdf/} \url{https://cirrus.ucsd.edu/~pierce/ncdf/} \url{https://ambermd.org/FileFormats.php#netcdf} } \author{ Barry Grant } \note{ See AMBER documentation for netCDF format description. NetCDF binary trajectory files are supported by the AMBER modules sander, pmemd and ptraj. Compared to formatted trajectory files, the binary trajectory files are smaller, higher precision and significantly faster to read and write. NetCDF provides for file portability across architectures, allows for backwards compatible extensibility of the format and enables the files to be self-describing. Support for this format is available in VMD. } \seealso{ \code{\link{read.dcd}}, \code{\link{read.ncdf}}, \code{\link{read.pdb}}, \code{\link{write.pdb}}, \code{\link{atom.select}} } \examples{ \dontrun{ ##-- Read example trajectory file trtfile <- system.file("examples/hivp.dcd", package="bio3d") trj <- read.dcd(trtfile) ## Write to netCDF format write.ncdf(trj, "newtrj.nc") ## Read trj trj <- read.ncdf("newtrj.nc") } } \keyword{ IO } bio3d/man/community.tree.Rd0000644000176200001440000000603514707230357015312 0ustar liggesusers\name{community.tree} \alias{community.tree} \title{ Reconstruction of the Girvan-Newman Community Tree for a CNA Class Object. } \description{ This function reconstructs the community tree of the community clustering analysis performed by the \sQuote{cna} function. It allows the user to explore different network community partitions. } \usage{ community.tree(x, rescale=FALSE) } \arguments{ \item{x}{ A protein network graph object as obtained from the \sQuote{cna} function. } \item{rescale}{ Logical, indicating whether to rescale the community names starting from 1. If FALSE, the community names will start from N+1, where N is the number of nodes. } } \value{ Returns a list object that includes the following components: \item{modularity}{ A numeric vector containing the modularity values. } \item{tree}{ A numeric matrix containing in each row the community residue memberships corresponding to a modularity value. The rows are ordered according to the \sQuote{modularity} object. } \item{num.of.comms}{ A numeric vector containing the number of communities per modularity value. The vector elements are ordered according to the \sQuote{modularity} object. } } \details{ The input of this function should be a \sQuote{cna} class object containing \sQuote{network} and \sQuote{communities} attributes. This function reconstructs the community residue memberships for each modularity value. The purpose is to facilitate inspection of alternate community partitioning points, which in practice often corresponds to a value close to the maximum of the modularity, but not the maximum value itself. } \author{ Guido Scarabelli } \seealso{ \code{\link{cna}}, \code{\link{network.amendment}}, \code{\link{summary.cna}} } \examples{ \donttest{ # PDB server connection required - testing excluded if (!requireNamespace("igraph", quietly = TRUE)) { message('Need igraph installed to run this example') } else { try({ ###-- Build a CNA object pdb <- read.pdb("4Q21") modes <- nma(pdb) cij <- dccm(modes) net <- cna(cij, cutoff.cij=0.2) ##-- Reconstruct the community membership vector for each clustering step. tree <- community.tree(net, rescale=TRUE) ## Plot modularity vs number of communities plot( tree$num.of.comms, tree$modularity ) ## Inspect the maximum modularity value partitioning max.mod.ind <- which.max(tree$modularity) ## Number of communities (k) at max modularity tree$num.of.comms[ max.mod.ind ] ## Membership vector at this partition point tree$tree[max.mod.ind,] # Should be the same as that contained in the original CNA network object net$communities$membership == tree$tree[max.mod.ind,] # Inspect a new membership partitioning (at k=7) memb.k7 <- tree$tree[ tree$num.of.comms == 7, ] ## Produce a new k=7 community network net.7 <- network.amendment(net, memb.k7) plot(net.7, pdb) #view.cna(net.7, trim.pdb(pdb, atom.select(pdb,"calpha")), launch=TRUE ) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } } \keyword{analysis} bio3d/man/dccm.xyz.Rd0000644000176200001440000001162114707230357014064 0ustar liggesusers\name{dccm.xyz} \alias{dccm.xyz} \title{ Dynamical Cross-Correlation Matrix from Cartesian Coordinates } \description{ Determine the cross-correlations of atomic displacements. } \usage{ \method{dccm}{xyz}(x, reference = NULL, grpby=NULL, method=c("pearson", "lmi"), ncore=1, nseg.scale=1, \dots) } \arguments{ \item{x}{ a numeric matrix of Cartesian coordinates with a row per structure/frame. } \item{reference}{ The reference structure about which displacements are analysed. } \item{grpby}{ a vector counting connective duplicated elements that indicate the elements of \code{xyz} that should be considered as a group (e.g. atoms from a particular residue). } \item{method}{ method to calculate the cross-correlation. Currently supports Pearson and linear mutual information (LMI). } \item{ncore }{ number of CPU cores used to do the calculation. \code{ncore=NULL} will use all the cores detected. } \item{nseg.scale }{ split input data into specified number of segments prior to running multiple core calculation. See \code{\link{fit.xyz}}. } \item{\dots}{ Additional arguments to be passed (currently ignored). } } \details{ The extent to which the atomic fluctuations/displacements of a system are correlated with one another can be assessed by examining the magnitude of all pairwise cross-correlation coefficients (see McCammon and Harvey, 1986). This function returns a matrix of all atom-wise cross-correlations whose elements, Cij, may be displayed in a graphical representation frequently termed a dynamical cross-correlation map, or DCCM. If Cij = 1 the fluctuations of atoms i and j are completely correlated (same period and same phase), if Cij = -1 the fluctuations of atoms i and j are completely anticorrelated (same period and opposite phase), and if Cij = 0 the fluctuations of i and j are not correlated. Typical characteristics of DCCMs include a line of strong cross-correlation along the diagonal, cross-correlations emanating from the diagonal, and off-diagonal cross-correlations. The high diagonal values occur where i = j, where Cij is always equal to 1.00. Positive correlations emanating from the diagonal indicate correlations between contiguous residues, typically within a secondary structure element or other tightly packed unit of structure. Typical secondary structure patterns include a triangular pattern for helices and a plume for strands. Off-diagonal positive and negative correlations may indicate potentially interesting correlations between domains of non-contiguous residues. If \code{method = "pearson"}, the conventional Pearson's inner-product correlaiton calculation will be invoked, in which only the diagnol of each atom-atom variance-covariance sub-matrix is considered. If \code{method = "lmi"}, then the linear mutual information cross-correlation will be calculated. \sQuote{LMI} considers both diagnol and off-diagnol entries in the sub-matrices, and so even captures the correlation of atoms moving in orthognal directions. } \value{ Returns a cross-correlation matrix with values in a range from -1 to 1 (Pearson) or from 0 to 1 (LMI). } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. McCammon, A. J. and Harvey, S. C. (1986) \emph{Dynamics of Proteins and Nucleic Acids}, Cambridge University Press, Cambridge. Lange, O.F. and Grubmuller, H. (2006) \emph{PROTEINS: Structure, Function, and Bioinformatics} \bold{62}:1053--1061. } \author{ Xin-Qiu Yao, Hongyang Li, Gisle Saelensminde, and Barry Grant } \seealso{ \code{\link{cor}} for examining xyz cross-correlations, \code{\link{dccm}}, \code{\link{dccm.nma}}, \code{\link{dccm.pca}}, \code{\link{dccm.enma}}. } \examples{ \donttest{ if (!requireNamespace("lattice", quietly = TRUE)) { message('Need lattice installed to run this example') } else { ##-- Read example trajectory file trtfile <- system.file("examples/hivp.dcd", package="bio3d") trj <- read.dcd(trtfile) ## Read the starting PDB file to determine atom correspondence pdbfile <- system.file("examples/hivp.pdb", package="bio3d") pdb <- read.pdb(pdbfile) ## select residues 24 to 27 and 85 to 90 in both chains inds <- atom.select(pdb, resno=c(24:27,85:90), elety='CA') ## lsq fit of trj on pdb xyz <- fit.xyz(pdb$xyz, trj, fixed.inds=inds$xyz, mobile.inds=inds$xyz) ## DCCM (slow to run so restrict to Calpha) cij <- dccm(xyz) ## Plot DCCM plot(cij) ## Or lattice::contourplot(cij, region = TRUE, labels=FALSE, col="gray40", at=c(-1, -0.75, -0.5, -0.25, 0.25, 0.5, 0.75, 1), xlab="Residue No.", ylab="Residue No.", main="DCCM: dynamic cross-correlation map") ## LMI matrix cij <- dccm(xyz, method='lmi') ## Plot LMI matrix #plot(cij) col.scale <- colorRampPalette(c("gray95", "cyan"))(5) plot(cij, at=seq(0.4,1, length=5), col.regions=col.scale) } } } \keyword{ utilities } bio3d/man/print.cna.Rd0000644000176200001440000000360014707230357014217 0ustar liggesusers\name{print.cna} \alias{print.cna} \alias{summary.cna} \title{ Summarize and Print Features of a cna Network Graph } \description{ These functions attempt to summarize and print a cna network graph to the terminal in a human readable form. } \usage{ \method{print}{cna}(x, ...) \method{summary}{cna}(object, verbose=TRUE, ...) } \arguments{ \item{x}{ A cna network and community object as obtained from the function \sQuote{cna}.} \item{object}{ A cna network and community object as obtained from the function \sQuote{cna}.} \item{verbose}{ Logical, if TRUE a community summary table is prited to screen.} \item{\dots}{ Extra arguments passed to the \sQuote{write.table} function. } } \details{ Simple summary and print methods for protein dynamic networks. } \value{ The function summary.cna returns a list with the following components: \item{id}{ A community number/identifier vector with an element for each community. } \item{size}{ A numeric community size vector, with elements giving the number of nodes within each community. } \item{members}{ A lst detailing the nodes within each community. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Guido Scarabelli and Barry Grant } \seealso{ \code{\link{cna}}, \code{\link[igraph:print.igraph]{print.igraph}}, \code{\link[igraph:print.igraph]{str.igraph}}, \code{\link[igraph:plot.common]{igraph.plotting}} } \examples{ if (!requireNamespace("igraph", quietly = TRUE)) { message('Need igraph installed to run this example') } else { ## Load the correlation network attach(hivp) ## Read the starting PDB file to determine atom correspondence pdbfile <- system.file("examples/hivp.pdb", package="bio3d") pdb <- read.pdb(pdbfile) ## Examine network composition print(net) x<- summary(net) x$members[[2]] detach(hivp) } } \keyword{ utilities } bio3d/man/pca.tor.Rd0000644000176200001440000000275514707230357013703 0ustar liggesusers\name{pca.tor} \alias{pca.tor} \title{ Principal Component Analysis } \description{ Performs principal components analysis (PCA) on torsion angle \code{data}. } \usage{ \method{pca}{tor}(data, \dots) } \arguments{ \item{data}{ numeric matrix of torsion angles with a row per structure. } \item{\dots}{ additional arguments passed to the method \code{pca.xyz}. } } \value{ Returns a list with the following components: \item{L }{eigenvalues.} \item{U }{eigenvectors (i.e. the variable loadings).} \item{z.u }{scores of the supplied \code{data} on the pcs.} \item{sdev }{the standard deviations of the pcs.} \item{mean }{the means that were subtracted.} } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant and Karim ElSawy } \seealso{ \code{\link{torsion.xyz}}, \code{\link{plot.pca}}, \code{\link{plot.pca.loadings}}, \code{\link{pca.xyz}} } \examples{ ##-- PCA on torsion data for multiple PDBs attach(kinesin) gaps.pos <- gap.inspect(pdbs$xyz) tor <- t(apply( pdbs$xyz[, gaps.pos$f.inds], 1, torsion.xyz, atm.inc=1)) pc.tor <- pca.tor(tor[,-c(1,233,234,235)]) #plot(pc.tor) plot.pca.loadings(pc.tor) detach(kinesin) \dontrun{ ##-- PCA on torsion data from an MD trajectory trj <- read.dcd( system.file("examples/hivp.dcd", package="bio3d") ) tor <- t(apply(trj, 1, torsion.xyz, atm.inc=1)) gaps <- gap.inspect(tor) pc.tor <- pca.tor(tor[,gaps$f.inds]) plot.pca.loadings(pc.tor) } } \keyword{ utilities } \keyword{ multivariate } bio3d/man/covsoverlap.Rd0000644000176200001440000000317714707230357014677 0ustar liggesusers\name{covsoverlap} \alias{covsoverlap} \alias{covsoverlap.enma} \alias{covsoverlap.nma} \title{ Covariance Overlap } \description{ Calculate the covariance overlap obtained from NMA. } \usage{ covsoverlap(...) \method{covsoverlap}{enma}(enma, ncore=NULL, ...) \method{covsoverlap}{nma}(a, b, subset=NULL, ...) } \arguments{ \item{enma}{ an object of class \code{"enma"} obtained from function \code{nma.pdbs}. } \item{ncore }{ number of CPU cores used to do the calculation. \code{ncore>1} requires package \sQuote{parallel} installed. } \item{a}{ a list object with elements \sQuote{U} and \sQuote{L} (e.g. as obtained from function \code{nma}) containing the eigenvectors and eigenvalues, respectively, to be compared with \code{b}. } \item{b}{ a list object with elements \sQuote{U} and \sQuote{L} (e.g. as obtained from function \code{nma}) containing the eigenvectors and eigenvalues, respectively, to be compared with \code{a}. } \item{subset}{ the number of modes to consider. } \item{\dots}{ arguments passed to associated functions. } } \details{ Covariance overlap is a measure for the similarity between two covariance matrices, e.g. obtained from NMA. } \value{ Returns the similarity coefficient(s). } \references{ Skjaerven, L. et al. (2014) \emph{BMC Bioinformatics} \bold{15}, 399. Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. Romo, T.D. et al. (2011) \emph{Proteins} \bold{79}, 23--34. } \author{ Lars Skjaerven } \seealso{ Other similarity measures: \code{\link{sip}}, \code{\link{covsoverlap}}, \code{\link{bhattacharyya}}. } \keyword{ utilities } bio3d/man/read.fasta.Rd0000644000176200001440000000303514707230357014335 0ustar liggesusers\name{read.fasta} \alias{read.fasta} \title{ Read FASTA formated Sequences } \description{ Read aligned or un-aligned sequences from a FASTA format file. } \usage{ read.fasta(file, rm.dup = TRUE, to.upper = FALSE, to.dash=TRUE) } \arguments{ \item{file}{ input sequence file. } \item{rm.dup}{ logical, if TRUE duplicate sequences (with the same names/ids) will be removed. } \item{to.upper}{ logical, if TRUE residues are forced to uppercase. } \item{to.dash}{ logical, if TRUE \sQuote{.} gap characters are converted to \sQuote{-} gap characters. } } \value{ A list with two components: \item{ali }{ an alignment character matrix with a row per sequence and a column per equivalent aminoacid/nucleotide. } \item{ids }{ sequence names as identifers.} \item{call}{ the matched call. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \note{ For a description of FASTA format see: \url{https://www.ncbi.nlm.nih.gov/BLAST/blastcgihelp.shtml}. When reading alignment files, the dash \sQuote{-} is interpreted as the gap character. } \seealso{ \code{\link{read.fasta.pdb}} } \examples{ # Read alignment aln <- read.fasta(system.file("examples/hivp_xray.fa",package="bio3d")) # Print alignment overview aln # Sequence names/ids head( aln$id ) # Alignment positions 335 to 339 head( aln$ali[,33:39] ) # Sequence d2a4f_b aa123( aln$ali["d2a4f_b",] ) # Write out positions 33 to 45 only #aln$ali=aln$ali[,30:45] #write.fasta(aln, file="eg2.fa") } \keyword{ IO } bio3d/man/identify.cna.Rd0000644000176200001440000000514114707230357014700 0ustar liggesusers\name{identify.cna} \alias{identify.cna} \title{ Identify Points in a CNA Protein Structure Network Plot } \description{ \sQuote{identify.cna} reads the position of the graphics pointer when the (first) mouse button is pressed. It then searches the coordinates given in \sQuote{x} for the point closest to the pointer. If this point is close enough to the pointer, its index and community members will be returned as part of the value of the call and the community members will be added as labels to the plot. } \usage{ \method{identify}{cna}(x, labels=NULL, cna=NULL, ...) } \arguments{ \item{x}{ A numeric matrix with Nx2 dimensions, where N is equal to the number of objects in a 2D CNA plot such as obtained from the \sQuote{plot.cna} and various \sQuote{layout} functions. } \item{labels}{ An optional character vector giving labels for the points. Will be coerced using \sQuote{as.character}, and recycled if necessary to the length of \sQuote{x}. Excess labels will be discarded, with a warning. } \item{cna}{ A network object as returned from the \sQuote{cna} function. } \item{\dots}{ Extra options passed to \sQuote{identify} function. } } \details{ This function calls the \sQuote{identify} and \sQuote{summary.cna} functions to query and label 2D CNA protein structure network plots produced by the \sQuote{plot.cna} function. Clicking with the mouse on plot points will add the corresponding labels and them to the plot and returned list object. A click with the right mouse button will stop the function. } \value{ If \sQuote{labels} or \sQuote{cna} inputs are provided then a membership vector will be returned with the selected community ids and their members. Otherwise a vector with the ids of the selected communities will be returned. } \author{ Guido Scarabelli and Barry Grant } \seealso{ \code{\link{plot.cna}}, \code{\link{identify}}, \code{\link[igraph:plot.igraph]{plot.igraph}}, \code{\link[igraph:communities]{plot.communities}}, \code{\link[igraph:plot.common]{igraph.plotting}} } \examples{ \dontrun{ if (!requireNamespace("igraph", quietly = TRUE)) { message('Need igraph installed to run this example') } else { attach(hivp) # Read the starting PDB file to determine atom correspondence pdbfile <- system.file("examples/hivp.pdb", package="bio3d") pdb <- read.pdb(pdbfile) # Plot the network xy <- plot.cna(net) # Use identify.cna on the communities d <- identify.cna(xy, cna=net) # Right click to end the function... ## d <- identify(xy, summary(net)$members) detach(hivp) } } } \keyword{ utility } bio3d/man/print.core.Rd0000644000176200001440000000250114707230357014405 0ustar liggesusers\name{print.core} \alias{print.core} \title{ Printing Core Positions and Returning Indices } \description{ Print method for core.find objects. } \usage{ \method{print}{core}(x, vol = NULL, ...) } \arguments{ \item{x}{ a list object obtained with the function \code{\link{core.find}}. } \item{vol}{ the maximal cumulative volume value at which core positions are detailed. } \item{...}{ additional arguments to \sQuote{print}. } } \value{ Returns a three component list of indices: \item{atom}{atom indices of core positions} \item{xyz}{xyz indices of core positions} \item{resno}{residue numbers of core positions} } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \note{ The produced \code{\link{plot.core}} function can be useful for deciding on the core/non-core boundary. } \seealso{ \code{\link{core.find}}, \code{\link{plot.core}}} \examples{ \dontrun{ ##-- Generate a small kinesin alignment and read corresponding structures pdbfiles <- get.pdb(c("1bg2","2ncd","1i6i","1i5s"), URLonly=TRUE) pdbs <- pdbaln(pdbfiles) ##-- Find 'core' positions core <- core.find(pdbs) plot(core) ##-- Fit on these relatively invarient subset of positions core.inds <- print(core, vol=0.5) print(core, vol=0.7) print(core, vol=1.0) } } \keyword{ utilities } bio3d/man/pdbs2sse.Rd0000644000176200001440000000473014707230357014055 0ustar liggesusers\name{pdbs2sse} \alias{pdbs2sse} \title{ SSE annotation for a PDBs Object } \description{ Returns secondary structure element (SSE) annotation (\code{"sse"} object) for a structure in the provided \code{"pdbs"} object. } \usage{ pdbs2sse(pdbs, ind = NULL, rm.gaps = TRUE, resno = TRUE, pdb = FALSE, \dots) } \arguments{ \item{pdbs}{ a list of class \code{"pdbs"} containing PDB file data, as obtained from \code{read.fasta.pdb} or \code{pdbaln}. } \item{ind}{ numeric index pointing to the PDB in which the SSE should be provided. If \code{ind=NULL}, then the consensus SSE is returned. } \item{rm.gaps}{ logical, if TRUE SSEs spanning gap containing columns are omitted from the output in the resulting \code{sse} object. } \item{resno}{ logical, if TRUE output is in terms of residue numbers rather than residue index (position in sequence). } \item{pdb}{ logical, if TRUE function \code{dssp} will be called on the corresponding \code{pdb} object rather than to use \code{pdbs$sse} to obtain the SSE object. } \item{\dots}{ arguments passed to function \code{dssp}. } } \details{ This function provides a \code{"sse"} list object containing secondary structure elements (SSE) annotation data for a particular structure in the provided \code{"pdbs"} object. Residue numbers are provided relative to the alignment in the \code{"pdbs"} object. When \code{ind=NULL} the function will attemt to return the consensus SSE annotation, i.e. where there are SSEs across all structures. This will only work SSE data is found in the \code{"pdbs"} object. See examples for more details. } \value{ Returns a list object of class \code{sse}. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{dssp}}, \code{\link{pdbaln}}, \code{\link{read.fasta.pdb}}. } \examples{ \dontrun{ attach(transducin) ## calculate RMSF rf <- rmsf(pdbs$xyz) ## Fetch SSE annotation, output in terms of alignment index sse <- pdbs2sse(pdbs, ind=1, rm.gaps=FALSE, resno=FALSE) ## Add SSE annotation to plot plotb3(rf, sse=sse) ## Calculate RMSF only for non-gap columns gaps.pos <- gap.inspect(pdbs$xyz) rf <- rmsf(pdbs$xyz[, gaps.pos$f.inds]) ## With gap columns removed, output in terms of residue number sse <- pdbs2sse(pdbs, ind=1, rm.gaps=TRUE, resno=TRUE) gaps.res <- gap.inspect(pdbs$ali) plotb3(rf, sse=sse, resno=pdbs$resno[1, gaps.res$f.inds]) detach(transducin) } } \keyword{ utilities } bio3d/man/dccm.gnm.Rd0000644000176200001440000000316714707230357014021 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/dccm.gnm.R \name{dccm.gnm} \alias{dccm.egnm} \alias{dccm.gnm} \title{Dynamic Cross-Correlation from Gaussian Network Model} \usage{ \method{dccm}{gnm}(x, ...) \method{dccm}{egnm}(x, ...) } \arguments{ \item{x}{an object of class \sQuote{gnm} or \sQuote{egnm} as obtained from \code{\link{gnm}}.} \item{...}{additional arguments (currently ignored).} } \value{ Returns a cross-correlation matrix. } \description{ Calculate the cross-correlation matrix from Gaussian network model normal modes analysis. } \details{ This function calculates the cross-correlation matrix from Gaussian network model (GNM) normal modes analysis (NMA) obtained from \code{gnm}. It returns a matrix of residue-wise cross-correlations whose elements, Cij, may be displayed in a graphical representation frequently termed a dynamical cross-correlation map, or DCCM. (See more details in \code{help(dccm.nma)}). } \examples{ if(!requireNamespace("lattice", quietly=TRUE)) { message("Need lattice installed to run this example") } else { ## Fetch stucture pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) ## Calculate normal modes modes <- gnm(pdb) ## Calculate correlation matrix cm <- dccm(modes) ## Plot correlation map plot(cm, sse = pdb, contour = FALSE, col.regions = bwr.colors(20), at = seq(-1, 1, 0.1)) } } \author{ Xin-Qiu Yao & Lars Skjaerven } \references{ Bahar, I. et al. (1997) \emph{Folding Des.} \bold{2}, 173. } \seealso{ \code{\link{gnm}}, \code{\link{dccm.nma}}, \code{\link{dccm.enma}}, \code{\link{plot.dccm}}. } \keyword{analysis} bio3d/man/plot.pca.Rd0000644000176200001440000000714714707230357014055 0ustar liggesusers\name{plot.pca} \alias{plot.pca} \alias{plot.pca.score} \alias{plot.pca.scree} \title{ Plot PCA Results } \description{ Produces a z-score plot (conformer plot) and an eigen spectrum plot (scree plot). } \usage{ \method{plot}{pca}(x, pc.axes=NULL, pch=16, col=par("col"), cex=0.8, mar=c(4, 4, 1, 1),...) \method{plot}{pca.scree}(x, y = NULL, type = "o", pch = 18, main = "", sub = "", xlim = c(0, 20), ylim = NULL, ylab = "Proportion of Variance (\%)", xlab = "Eigenvalue Rank", axes = TRUE, ann = par("ann"), col = par("col"), lab = TRUE, ...) \method{plot}{pca.score}(x, inds=NULL, col=rainbow(nrow(x)), lab = "", ...) } \arguments{ \item{x}{ the results of principal component analysis obtained with \code{\link{pca.xyz}}. } \item{pc.axes}{ an optional numeric vector of length two specifying the principal components to be plotted. A NULL value will result in an overview plot of the first three PCs and a scree plot. See examples. } \item{pch}{ a vector of plotting characters or symbols: see \sQuote{points}. } \item{col}{ a character vector of plotting colors. } \item{cex}{ a numerical single element vector giving the amount by which plotting text and symbols should be magnified relative to the default. } \item{mar}{ A numerical vector of the form c(bottom, left, top, right) which gives the number of lines of margin to be specified on the four sides of the plot.} \item{inds}{ row indices of the conformers to label. } \item{lab}{ a character vector of plot labels. } \item{y}{ the y coordinates for the scree plot. } \item{type}{ one-character string giving the type of plot desired.} \item{main}{ a main title for the plot, see also 'title'.} \item{sub}{ a sub-title for the plot.} \item{xlim}{ the x limits of the plot. } \item{ylim}{ the y limits of the plot.} \item{ylab}{ a label for the y axis.} \item{xlab}{ a label for the x axis.} \item{axes}{ a logical value indicating whether both axes should be drawn.} \item{ann}{ a logical value indicating whether the default annotation (title and x and y axis labels) should appear on the plot. } \item{\dots}{ extra plotting arguments. } } \details{ \code{plot.pca} is a wrapper calling both \code{plot.pca.score} and \code{plot.pca.scree} resulting in a 2x2 plot with three score plots and one scree plot. } \value{ Produces a plot of PCA results in the active graphics device and invisibly returns the plotted \sQuote{z} coordinates along the requested \sQuote{pc.axes}. See examples section where these coordinates are used to identify plotted points. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \seealso{ \code{\link{pca.xyz}}, \code{\link{plot.bio3d}} } \examples{ attach(transducin) pc.xray <- pca(pdbs$xyz, rm.gaps=TRUE) plot(pc.xray) ## Color plot by nucleotide state vcolors <- annotation[, "color"] plot(pc.xray, col=vcolors) ## Focus on a single plot of PC1 vs PC2 x <- plot(pc.xray, pc.axes=1:2, col=vcolors) ## Identify points interactively with mouse clicks #identify(x, labels=basename.pdb(pdbs$id)) ## Add labels to select points inds <- c(1,10,37) text(x[inds,], labels=basename.pdb(pdbs$id[inds]), col="blue") ## Alternative labeling method #labs <- rownames(annotation) #inds <- c(2,7) #plot.pca.score(pc.xray, inds=inds, col=vcolors, lab=labs) ## color by seq identity groupings #ide <- seqidentity(pdbs$ali) #hc <- hclust(as.dist(1-ide)) #grps <- cutree(hc, h=0.2) #vcolors <- rainbow(max(grps))[grps] #plot.pca.score(pc.xray, inds=inds, col=vcolors, lab=labs) detach(transducin) } \keyword{ hplot } bio3d/man/dccm.Rd0000644000176200001440000000357514707230357013244 0ustar liggesusers\name{dccm} \alias{dccm} \title{ DCCM: Dynamical Cross-Correlation Matrix } \description{ Determine the cross-correlations of atomic displacements. } \usage{ dccm(x, ...) } \arguments{ \item{x}{ a numeric matrix of Cartesian coordinates with a row per structure/frame which will br passed to \code{dccm.xyz()}. Alternatively, an object of class \code{nma} as obtained from function \code{nma} that will be passed to the \code{dccm.nma()} function, see below for examples. } \item{\dots}{ additional arguments passed to the methods \code{dccm.xyz}, \code{dccm.pca}, \code{dccm.nma}, and \code{dccm.enma}. } } \details{ \code{dccm} is a generic function calling the corresponding function determined by the class of the input argument \code{x}. Use \code{methods("dccm")} to get all the methods for \code{dccm} generic: \code{\link{dccm.xyz}} will be used when \code{x} is a numeric matrix containing Cartesian coordinates (e.g. trajectory data). \code{\link{dccm.pca}} will calculate the cross-correlations based on an \code{pca} object. \code{\link{dccm.nma}} will calculate the cross-correlations based on an \code{nma} object. Similarly, \code{\link{dccm.enma}} will calculate the correlation matrices based on an ensemble of \code{nma} objects (as obtained from function \code{nma.pdbs}). \code{\link{plot.dccm}} and \code{\link{pymol.dccm}} provides convenient functionality to plot a correlation map, and visualize the correlations in the structure, respectively. See examples for each corresponding function for more details. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant, Lars Skjaerven } \seealso{ \code{\link{dccm.xyz}}, \code{\link{dccm.nma}}, \code{\link{dccm.enma}}, \code{\link{dccm.pca}}, \code{\link{plot.dccm}}, \code{\link{pymol.dccm}}. } \keyword{ utilities } bio3d/man/difference.vector.Rd0000644000176200001440000000306614707230357015724 0ustar liggesusers\name{difference.vector} \alias{difference.vector} \title{ Difference Vector } \description{ Define a difference vector between two conformational states. } \usage{ difference.vector(xyz, xyz.inds=NULL, normalize=FALSE) } \arguments{ \item{xyz}{ numeric matrix of Cartesian coordinates with a row per structure. } \item{xyz.inds}{ a vector of indices that selects the elements of columns upon which the calculation should be based. } \item{normalize}{ logical, if TRUE the difference vector is normalized. } } \details{ Squared overlap (or dot product) is used to measure the similiarity between a displacement vector (e.g. a difference vector between two conformational states) and mode vectors obtained from principal component or normal modes analysis. } \value{ Returns a numeric vector of the structural difference (normalized if desired). } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{overlap}} } \examples{ attach(kinesin) # Ignore gap containing positions gaps.pos <- gap.inspect(pdbs$xyz) #-- Do PCA pc.xray <- pca.xyz(pdbs$xyz[, gaps.pos$f.inds]) # Define a difference vector between two structural states diff.inds <- c(grep("d1v8ka", pdbs$id), grep("d1goja", pdbs$id)) ## Calculate the difference vector dv <- difference.vector( pdbs$xyz[diff.inds,], gaps.pos$f.inds ) # Calculate the squared overlap between the PCs and the difference vector o <- overlap(pc.xray, dv) detach(kinesin) } \keyword{ utilities } bio3d/man/is.select.Rd0000644000176200001440000000145214707230357014217 0ustar liggesusers\name{is.select} \alias{is.select} \title{Is an Object of Class \sQuote{select}?} \description{ Checks whether its argument is an object of class \sQuote{select}. } \usage{ is.select(x) } \arguments{ \item{x}{an R object to be tested.} } \details{ Tests if x is an object of class \sQuote{select}, i.e. if x has a \dQuote{class} attribute equal to \code{select}. } \value{ TRUE if x is an object of class \sQuote{select} and FALSE otherwise } \author{ Julien Ide } \seealso{ \code{\link{atom.select}} } \examples{ # Read a PDB file pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) # Print structure summary atom.select(pdb) # Select all C-alpha atoms with residues numbers between 43 and 54 ca.inds <- atom.select(pdb, "calpha", resno=43:54) is.select(ca.inds) } \keyword{ classes } bio3d/man/dccm.nma.Rd0000644000176200001440000000400014707230357013776 0ustar liggesusers\name{dccm.nma} \alias{dccm.nma} \title{ Dynamic Cross-Correlation from Normal Modes Analysis } \description{ Calculate the cross-correlation matrix from Normal Modes Analysis. } \usage{ \method{dccm}{nma}(x, nmodes = NULL, ncore = NULL, progress = NULL, \dots) } \arguments{ \item{x}{ an object of class \code{nma} as obtained from function \code{nma}. } \item{nmodes}{ numerical, number of modes to consider. } \item{ncore }{ number of CPU cores used to do the calculation. \code{ncore>1} requires package \sQuote{parallel} installed. } \item{progress}{ progress bar for use with shiny web app. } \item{\dots}{ additional arguments ? } } \details{ This function calculates the cross-correlation matrix from Normal Modes Analysis (NMA) obtained from \code{nma} of a protein structure. It returns a matrix of residue-wise cross-correlations whose elements, Cij, may be displayed in a graphical representation frequently termed a dynamical cross-correlation map, or DCCM. If Cij = 1 the fluctuations of residues i and j are completely correlated (same period and same phase), if Cij = -1 the fluctuations of residues i and j are completely anticorrelated (same period and opposite phase), and if Cij = 0 the fluctuations of i and j are not correlated. } \value{ Returns a cross-correlation matrix. } \references{ Wynsberghe. A.W.V, Cui, Q. \emph{Structure} \bold{14}, 1647--1653. Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{nma}}, \code{\link{plot.dccm}} } \examples{ if(!requireNamespace("lattice", quietly=TRUE)) { message("Need lattice installed to run this example") } else { ## Fetch stucture pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) ## Calculate normal modes modes <- nma(pdb) ## Calculate correlation matrix cm <- dccm.nma(modes) ## Plot correlation map plot(cm, sse = pdb, contour = FALSE, col.regions = bwr.colors(20), at = seq(-1, 1, 0.1)) } } \keyword{ analysis } bio3d/man/read.pqr.Rd0000644000176200001440000001047414707230357014046 0ustar liggesusers\name{read.pqr} \alias{read.pqr} \title{ Read PQR File } \description{ Read a PQR coordinate file. } \usage{ read.pqr(file, maxlines = -1, multi = FALSE, rm.insert = FALSE, rm.alt = TRUE, verbose = TRUE) } \arguments{ \item{file}{ the name of the PQR file to be read. } \item{maxlines}{ the maximum number of lines to read before giving up with large files. By default if will read up to the end of input on the connection. } \item{multi}{ logical, if TRUE multiple ATOM records are read for all models in multi-model files. } \item{rm.insert}{ logical, if TRUE PDB insert records are ignored. } \item{rm.alt}{ logical, if TRUE PDB alternate records are ignored. } \item{verbose}{ print details of the reading process. } } \details{ PQR file format is basically the same as PDB format except for the fields of \code{o} and \code{b}. In PDB, these two fields are filled with \sQuote{Occupancy} and \sQuote{B-factor} values, respectively, with each field 6-column long. In PQR, they are atomic \sQuote{partial charge} and \sQuote{radii} values, respectively, with each field 8-column long. \code{maxlines} may require increasing for some large multi-model files. The preferred means of reading such data is via binary DCD format trajectory files (see the \code{\link{read.dcd}} function). } \value{ Returns a list of class \code{"pdb"} with the following components: \item{atom}{ a data.frame containing all atomic coordinate ATOM and HETATM data, with a row per ATOM/HETATM and a column per record type. See below for details of the record type naming convention (useful for accessing columns). } \item{helix }{ \sQuote{start}, \sQuote{end} and \sQuote{length} of H type sse, where start and end are residue numbers \dQuote{resno}. } \item{sheet }{ \sQuote{start}, \sQuote{end} and \sQuote{length} of E type sse, where start and end are residue numbers \dQuote{resno}. } \item{seqres }{ sequence from SEQRES field. } \item{xyz }{ a numeric matrix of class \code{"xyz"} containing the ATOM and HETATM coordinate data. } \item{calpha }{ logical vector with length equal to \code{nrow(atom)} with TRUE values indicating a C-alpha \dQuote{elety}. } \item{call }{ the matched call. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. For a description of PDB format (version3.3) see:\cr \url{http://www.wwpdb.org/documentation/format33/v3.3.html}. } \author{ Barry Grant } \note{ For both \code{atom} and \code{het} list components the column names can be used as a convenient means of data access, namely: Atom serial number \dQuote{eleno} , Atom type \dQuote{elety}, Alternate location indicator \dQuote{alt}, Residue name \dQuote{resid}, Chain identifier \dQuote{chain}, Residue sequence number \dQuote{resno}, Code for insertion of residues \dQuote{insert}, Orthogonal coordinates \dQuote{x}, Orthogonal coordinates \dQuote{y}, Orthogonal coordinates \dQuote{z}, Occupancy \dQuote{o}, and Temperature factor \dQuote{b}. See examples for further details. } \seealso{ \code{\link{atom.select}}, \code{\link{write.pqr}}, \code{\link{read.pdb}}, \code{\link{write.pdb}}, \code{\link{read.dcd}}, \code{\link{read.fasta.pdb}}, \code{\link{read.fasta}} } \examples{ \donttest{ # PDB server connection required - testing excluded try({ # Read a PDB file and write it as a PQR file pdb <- read.pdb( "4q21" ) outfile = file.path(tempdir(), "eg.pqr") write.pqr(pdb=pdb, file = outfile) # Read the PQR file pqr <- read.pqr(outfile) ## Print a brief composition summary pqr ## Examine the storage format (or internal *str*ucture) str(pqr) ## Print data for the first four atom pqr$atom[1:4,] ## Print some coordinate data head(pqr$atom[, c("x","y","z")]) ## Print C-alpha coordinates (can also use 'atom.select' function) head(pqr$atom[pqr$calpha, c("resid","elety","x","y","z")]) inds <- atom.select(pqr, elety="CA") head( pqr$atom[inds$atom, ] ) ## The atom.select() function returns 'indices' (row numbers) ## that can be used for accessing subsets of PDB objects, e.g. inds <- atom.select(pqr,"ligand") pqr$atom[inds$atom,] pqr$xyz[inds$xyz] ## See the help page for atom.select() function for more details. }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } \keyword{ IO } bio3d/man/entropy.Rd0000644000176200001440000000715014707230357014027 0ustar liggesusers\name{entropy} \alias{entropy} \title{ Shannon Entropy Score } \description{ Calculate the sequence entropy score for every position in an alignment. } \usage{ entropy(alignment) } \arguments{ \item{alignment}{ sequence alignment returned from \code{\link{read.fasta}} or an alignment character matrix. } } \details{ Shannon's information theoretic entropy (Shannon, 1948) is an often-used measure of residue diversity and hence residue conservation. } \value{ Returns a list with five components: \item{H }{standard entropy score for a 22-letter alphabet.} \item{H.10 }{entropy score for a 10-letter alphabet (see below).} \item{H.norm }{ normalized entropy score (for 22-letter alphabet), so that conserved (low entropy) columns (or positions) score 1, and diverse (high entropy) columns score 0.} \item{H.10.norm }{ normalized entropy score (for 10-letter alphabet), so that conserved (low entropy) columns score 1 and diverse (high entropy) columns score 0.} \item{freq }{residue frequency matrix containing percent occurrence values for each residue type.} } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. Shannon (1948) \emph{The System Technical J.} \bold{27}, 379--422. Mirny and Shakhnovich (1999) \emph{J. Mol. Biol.} \bold{291}, 177--196. } \author{ Barry Grant } \note{ In addition to the standard entropy score (based on a 22-letter alphabet of the 20 standard amino-acids, plus a gap character \sQuote{-} and a mask character \sQuote{X}), an entropy score, \code{H.10}, based on a 10-letter alphabet is also returned. For \code{H.10}, residues from the 22-letter alphabet are classified into one of 10 types, loosely following the convention of Mirny and Shakhnovich (1999): Hydrophobic/Aliphatic [V,I,L,M], Aromatic [F,W,Y], Ser/Thr [S,T], Polar [N,Q], Positive [H,K,R], Negative [D,E], Tiny [A,G], Proline [P], Cysteine [C], and Gaps [-,X]. The residue code \sQuote{X} is useful for handling non-standard aminoacids. } \seealso{ \code{\link{consensus}}, \code{\link{read.fasta}} } \examples{ # Read HIV protease alignment aln <- read.fasta(system.file("examples/hivp_xray.fa",package="bio3d")) # Entropy and consensus h <- entropy(aln) con <- consensus(aln) names(h$H)=con$seq print(h$H) # Entropy for sub-alignment (positions 1 to 20) h.sub <- entropy(aln$ali[,1:20]) # Plot entropy and residue frequencies (excluding positions >=60 percent gaps) H <- h$H.norm H[ apply(h$freq[21:22,],2,sum)>=0.6 ] = 0 col <- mono.colors(32) aa <- rev(rownames(h$freq)) oldpar <- par(no.readonly=TRUE) layout(matrix(c(1,2),2,1,byrow = TRUE), widths = 7, heights = c(2, 8), respect = FALSE) # Plot 1: entropy par(mar = c(0, 4, 2, 2)) barplot(H, border="white", ylab = "Entropy", space=0, xlim=c(3.7, 97.3),yaxt="n" ) axis(side=2, at=c(0.2,0.4, 0.6, 0.8)) axis(side=3, at=(seq(0,length(con$seq),by=5)-0.5), labels=seq(0,length(con$seq),by=5)) box() # Plot2: residue frequencies par(mar = c(5, 4, 0, 2)) image(x=1:ncol(con$freq), y=1:nrow(con$freq), z=as.matrix(rev(as.data.frame(t(con$freq)))), col=col, yaxt="n", xaxt="n", xlab="Alignment Position", ylab="Residue Type") axis(side=1, at=seq(0,length(con$seq),by=5)) axis(side=2, at=c(1:22), labels=aa) axis(side=3, at=c(1:length(con$seq)), labels =con$seq) axis(side=4, at=c(1:22), labels=aa) grid(length(con$seq), length(aa)) box() for(i in 1:length(con$seq)) { text(i, which(aa==con$seq[i]),con$seq[i],col="white") } abline(h=c(3.5, 4.5, 5.5, 3.5, 7.5, 9.5, 12.5, 14.5, 16.5, 19.5), col="gray") par(oldpar) } \keyword{ utilities } bio3d/man/plot.dccm.Rd0000644000176200001440000001035214707230357014210 0ustar liggesusers\name{plot.dccm} \alias{plot.dccm} \title{ DCCM Plot } \description{ Plot a dynamical cross-correlation matrix. } \usage{ \method{plot}{dccm}(x, resno=NULL, sse=NULL, colorkey=TRUE, at=c(-1, -0.75, -0.5, -0.25, 0.25, 0.5, 0.75, 1), main="Residue Cross Correlation", helix.col = "gray20", sheet.col = "gray80", inner.box=TRUE, outer.box=FALSE, xlab="Residue No.", ylab="Residue No.", margin.segments=NULL, segment.col=vmd_colors(), segment.min=1, ...) } \arguments{ \item{x}{ a numeric matrix of atom-wise cross-correlations as output by the \sQuote{dccm} function. } \item{resno}{ an optional vector with length equal to that of \code{x} that will be used to annotate the x- and y-axis. This is typically a vector of residue numbers. Can be also provided with a \sQuote{pdb} object, in which \sQuote{resno} of all C-alpha atoms will be used. If NULL residue positions from 1 to the length of \code{x} will be used. See examples below. } \item{sse}{ secondary structure object as returned from \code{\link{dssp}}, \code{\link{stride}} or \code{\link{read.pdb}}. } \item{colorkey}{ logical, if TRUE a key is plotted. } \item{at}{ numeric vector specifying the levels to be colored. } \item{main}{ a main title for the plot. } \item{helix.col}{ The colors for rectangles representing alpha helices. } \item{sheet.col}{ The colors for rectangles representing beta strands. } \item{inner.box}{ logical, if TRUE an outer box is drawn. } \item{outer.box}{ logical, if TRUE an outer box is drawn. } \item{xlab}{ a label for the x axis. } \item{ylab}{ a label for the y axis. } \item{margin.segments}{ a numeric vector of cluster membership as obtained from cutree() or other community detection method. This will be used for bottom and left margin annotation. } \item{segment.col}{ a vector of colors used for each cluster group in margin.segments. } \item{segment.min}{ a single element numeric vector that will cause margin.segments with a length below this value to be excluded from the plot. } \item{\dots}{ additional graphical parameters for contourplot. } } \details{ See the \sQuote{contourplot} function from the lattice package for plot customization options, and the functions \code{\link{dssp}} and \code{\link{stride}} for further details. } \value{ Called for its effect. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \note{ Be sure to check the correspondence of your \sQuote{sse} object with the \sQuote{cij} values being plotted as no internal checks are currently performed. } \seealso{ \code{\link{plot.bio3d}}, \code{\link{plot.dmat}}, \code{\link{filled.contour}}, \code{\link{contour}}, \code{\link{image}} \code{\link{plot.default}}, \code{\link{dssp}}, \code{\link{stride}} } \examples{ \dontrun{ ##-- Read example trajectory file trtfile <- system.file("examples/hivp.dcd", package="bio3d") trj <- read.dcd(trtfile) ## Read reference PDB and trim it to match the trajectory pdb <- trim(read.pdb("1W5Y"), 'calpha') ## select residues 24 to 27 and 85 to 90 in both chains inds <- atom.select(pdb, resno=c(24:27,85:90)) ## lsq fit of trj on pdb xyz <- fit.xyz(pdb$xyz, trj, fixed.inds=inds$xyz, mobile.inds=inds$xyz) ## Dynamic cross-correlations of atomic displacements cij <- dccm(xyz) ## Default plot plot.dccm(cij) ## Change the color scheme and the range of colored data levels plot.dccm(cij, contour=FALSE, col.regions=bwr.colors(200), at=seq(-1,1,by=0.01) ) ## Add secondary structure annotation to plot margins plot.dccm(cij, sse=pdb) ## Add additional margin annotation for chains ## Also label x- and y-axis with PDB residue numbers ch <- ifelse(pdb$atom$chain=="A", 1,2) plot.dccm(cij, resno=pdb, sse=pdb, margin.segments=ch) ## Plot with cluster annotation from dynamic network analysis #net <- cna(cij) #plot.dccm(cij, margin.segments=net$raw.communities$membership) ## Focus on major communities (i.e. exclude those below a certain total length) #plot.dccm(cij, margin.segments=net$raw.communities$membership, segment.min=25) } } \keyword{ hplot } bio3d/man/get.seq.Rd0000644000176200001440000000372014707230357013674 0ustar liggesusers\name{get.seq} \alias{get.seq} \title{ Download FASTA Sequence Files } \description{ Downloads FASTA sequence files from the NCBI nr, SWISSPROT/UNIPROT, OR RCSB PDB databases. } \usage{ get.seq(ids, outfile = "seqs.fasta", db = "nr", verbose = FALSE) } \arguments{ \item{ids}{ A character vector of one or more appropriate database codes/identifiers of the files to be downloaded. } \item{outfile}{ A single element character vector specifying the name of the local file to which sequences will be written. } \item{db}{ A single element character vector specifying the database from which sequences are to be obtained. } \item{verbose}{ logical, if TRUE URL details of the download process are printed. } } \details{ This is a basic function to automate sequence file download from the databases including NCBI nr, SWISSPROT/UNIPROT, and RCSB PDB. } \value{ If all files are successfully downloaded a list object with two components is returned: \item{ali }{ an alignment character matrix with a row per sequence and a column per equivalent aminoacid/nucleotide. } \item{ids }{ sequence names as identifiers.} This is similar to that returned by \code{\link{read.fasta}}. However, if some files were not successfully downloaded then a vector detailing which ids were not found is returned. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \note{ For a description of FASTA format see: \url{https://www.ncbi.nlm.nih.gov/BLAST/blastcgihelp.shtml}. When reading alignment files, the dash \sQuote{-} is interpreted as the gap character. } \seealso{ \code{\link{blast.pdb}}, \code{\link{read.fasta}}, \code{\link{read.fasta.pdb}}, \code{\link{get.pdb}} } \examples{ \dontrun{ ## Sequence identifiers (GI or PDB codes e.g. from blast.pdb etc.) get.seq( c("P01112", "Q61411", "P20171") ) #aa <-get.seq( c("4q21", "5p21") ) #aa$id #aa$ali } } \keyword{ IO } \keyword{ utilities } bio3d/man/read.mol2.Rd0000644000176200001440000001066314707230357014115 0ustar liggesusers\name{read.mol2} \alias{read.mol2} \alias{print.mol2} \title{ Read MOL2 File } \description{ Read a Tripos MOL2 file } \usage{ read.mol2(file, maxlines = -1L) \method{print}{mol2}(x, \dots) } \arguments{ \item{file}{ a single element character vector containing the name of the MOL2 file to be read. } \item{maxlines}{ the maximum number of lines to read before giving up with large files. Default is all lines. } \item{x}{ an object as obtained from \code{read.mol2}. } \item{...}{ additional arguments to \sQuote{print}. } } \details{ Basic functionality to parse a MOL2 file. The current version reads and stores \sQuote{@MOLECULE}, \sQuote{@ATOM}, \sQuote{@BOND} and \sQuote{@SUBSTRUCTURE} records. In the case of a multi-molecule MOL2 file, each molecule will be stored as an individual \sQuote{mol2} object in a list. Conversely, if the multi-molecule MOL2 file contains identical molecules in different conformations (typically from a docking run), then the output will be one object with an \code{atom} and \code{xyz} component (xyz in matrix representation; row-wise coordinates). See examples for further details. } \value{ Returns a list of molecules containing the following components: \item{atom}{ a data frame containing all atomic coordinate ATOM data, with a row per ATOM and a column per record type. See below for details of the record type naming convention (useful for accessing columns). } \item{bond}{ a data frame containing all atomic bond information. } \item{substructure}{ a data frame containing all substructure information. } \item{xyz}{ a numeric matrix of ATOM coordinate data. } \item{info}{ a numeric vector of MOL2 info data. } \item{name}{ a single element character vector containing the molecule name. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \note{ For \code{atom} list components the column names can be used as a convenient means of data access, namely: Atom serial number \dQuote{eleno}, Atom name \dQuote{elena}, Orthogonal coordinates \dQuote{x}, Orthogonal coordinates \dQuote{y}, Orthogonal coordinates \dQuote{z}, Reisude number \dQuote{resno}, Atom type \dQuote{elety}, Residue name \dQuote{resid}, Atom charge \dQuote{charge}, Status bit \dQuote{statbit}, For \code{bond} list components the column names are: Bond identifier \dQuote{id}, number of the atom at one end of the bond\dQuote{origin}, number of the atom at the other end of the bond \dQuote{target}, the SYBYL bond type \dQuote{type}. For \code{substructure} list components the column names are: substructure identifier \dQuote{id}, substructure name \dQuote{name}, the ID number of the substructure's root atom \dQuote{root_atom}, the substructure type \dQuote{subst_type}, the type of dictionary associated with the substructure \dQuote{dict_type}, the chain to which the substructre belongs \dQuote{chain}, the subtype of the chain \dQuote{sub_type}, the number of inter bonds \dQuote{inter_bonds}, status bit \dQuote{status}. See examples for further details. } \seealso{ \code{\link{write.mol2}}, \code{\link{atom.select.mol2}}, \code{\link{trim.mol2}}, \code{\link{as.pdb.mol2}} \code{\link{read.pdb}} } \examples{ cat("\n") \dontrun{ ## Read a single entry MOL2 file ## (returns a single object) mol <- read.mol2( system.file("examples/aspirin.mol2", package="bio3d") ) ## Short summary of the molecule print(mol) ## ATOM records mol$atom ## BOND records mol$bond ## Print some coordinate data head(mol$atom[, c("x","y","z")]) ## Or coordinates as a numeric vector #head(mol$xyz) ## Print atom charges head(mol$atom[, "charge"]) ## Convert to PDB pdb <- as.pdb(mol) ## Read a multi-molecule MOL2 file ## (returns a list of objects) #multi.mol <- read.mol2("zinc.mol2") ## Number of molecules described in file #length(multi.mol) ## Access ATOM records for the first molecule #multi.mol[[1]]$atom ## Or coordinates for the second molecule #multi.mol[[2]]$xyz ## Process output from docking (e.g. DOCK) ## (typically one molecule with many conformations) ## (returns one object, but xyz in matrix format) #dock <- read.mol2("dock.mol2") ## Reference PDB file (e.g. X-ray structure) #pdb <- read.pdb("dock_ref.pdb") ## Calculate RMSD of docking modes #sele <- atom.select(dock, "noh") #rmsd(pdb$xyz, dock$xyz, b.inds=sele$xyz) } } \keyword{ IO } bio3d/man/convert.pdb.Rd0000644000176200001440000000772514707230357014563 0ustar liggesusers\name{convert.pdb} \alias{convert.pdb} \title{Renumber and Convert Between Various PDB formats} \description{ Renumber and convert between CHARMM, Amber, Gromacs and Brookhaven PDB formats. } \usage{ convert.pdb(pdb, type=c("original", "pdb", "charmm", "amber", "gromacs"), renumber = FALSE, first.resno = 1, first.eleno = 1, consecutive=TRUE, rm.h = TRUE, rm.wat = FALSE, verbose=TRUE) } \arguments{ \item{pdb}{ a structure object of class \code{"pdb"}, obtained from \code{\link{read.pdb}}. } \item{type}{ output format, one of \sQuote{original}, \sQuote{pdb}, \sQuote{charmm}, \sQuote{amber}, or \sQuote{gromacs}. The default option of \sQuote{original} results in no conversion. } \item{renumber}{ logical, if TRUE atom and residue records are renumbered using \sQuote{first.resno} and \sQuote{first.eleno}. } \item{first.resno}{ first residue number to be used if \sQuote{renumber} is TRUE. } \item{first.eleno}{ first element number to be used if \sQuote{renumber} is TRUE. } \item{consecutive}{ logical, if TRUE renumbering will result in consecutive residue numbers spanning all chains. Otherwise new residue numbers will begin at \sQuote{first.resno} for each chain. } \item{rm.h}{ logical, if TRUE hydrogen atoms are removed. } \item{rm.wat}{ logical, if TRUE water atoms are removed. } \item{verbose}{ logical, if TRUE details of the conversion process are printed. } } \details{ Convert atom names and residue names, renumber atom and residue records, strip water and hydrogen atoms from \code{pdb} objects. Format \code{type} can be one of \dQuote{ori}, \dQuote{pdb}, \dQuote{charmm}, \dQuote{amber} or \dQuote{gromacs}. } \value{ Returns a list of class \code{"pdb"}, with the following components: \item{atom}{ a character matrix containing all atomic coordinate ATOM data, with a row per ATOM and a column per record type. See below for details of the record type naming convention (useful for accessing columns). } \item{het}{ a character matrix containing atomic coordinate records for atoms within \dQuote{non-standard} HET groups (see \code{atom}). } \item{helix}{ \sQuote{start}, \sQuote{end} and \sQuote{length} of H type sse, where start and end are residue numbers \dQuote{resno}. } \item{sheet}{ \sQuote{start}, \sQuote{end} and \sQuote{length} of E type sse, where start and end are residue numbers \dQuote{resno}. } \item{seqres }{ sequence from SEQRES field. } \item{xyz}{ a numeric vector of ATOM coordinate data. } \item{calpha}{ logical vector with length equal to \code{nrow(atom)} with TRUE values indicating a C-alpha \dQuote{elety}. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. For a description of PDB format (version3.3) see:\cr \url{http://www.wwpdb.org/documentation/format33/v3.3.html}. } \author{ Barry Grant } \note{ For both \code{atom} and \code{het} list components the column names can be used as a convenient means of data access, namely: Atom serial number \dQuote{eleno} , Atom type \dQuote{elety}, Alternate location indicator \dQuote{alt}, Residue name \dQuote{resid}, Chain identifier \dQuote{chain}, Residue sequence number \dQuote{resno}, Code for insertion of residues \dQuote{insert}, Orthogonal coordinates \dQuote{x}, Orthogonal coordinates \dQuote{y}, Orthogonal coordinates \dQuote{z}, Occupancy \dQuote{o}, and Temperature factor \dQuote{b}. See examples for further details. } \seealso{ \code{\link{atom.select}}, \code{\link{write.pdb}}, \code{\link{read.dcd}}, \code{\link{read.fasta.pdb}}, \code{\link{read.fasta}} } \examples{ \dontrun{ # Read a PDB file pdb <- read.pdb("4q21") pdb head( pdb$atom[pdb$calpha,"resno"] ) # Convert to CHARMM format new <- convert.pdb(pdb, type="amber", renumber=TRUE, first.resno=22 ) head( new$atom[new$calpha,"resno"] ) # Write a PDB file #write.pdb(new, file="tmp4amber.pdb") } } \keyword{ utilities } bio3d/man/setup.ncore.Rd0000644000176200001440000000115314707230357014571 0ustar liggesusers\name{setup.ncore} \alias{setup.ncore} \title{ Setup for Running Bio3D Functions using Multiple CPU Cores } \description{ Internally used in parallelized Bio3D functions. } \usage{ setup.ncore(ncore, bigmem = FALSE) } \arguments{ \item{ncore}{ User set (or default) value of \sQuote{ncore}. } \item{bigmem}{ logical, if TRUE also check the availability of \sQuote{bigmemory} package. } } \details{ Check packages and set correct value of \sQuote{ncore}. } \value{ The actual value of \sQuote{ncore}. } \examples{ setup.ncore(NULL) setup.ncore(1) # setup.ncore(2) } \keyword{ utilities } bio3d/man/dccm.enma.Rd0000644000176200001440000000432714707230357014157 0ustar liggesusers\name{dccm.enma} \alias{dccm.enma} \title{ Cross-Correlation for Ensemble NMA (eNMA) } \description{ Calculate the cross-correlation matrices from an ensemble of NMA objects. } \usage{ \method{dccm}{enma}(x, ncore = NULL, na.rm=FALSE, \dots) } \arguments{ \item{x}{ an object of class \code{enma} as obtained from function \code{nma.pdbs}. } \item{ncore }{ number of CPU cores used to do the calculation. \code{ncore>1} requires package \sQuote{parallel} installed. } \item{na.rm }{ logical, if FALSE the DCCM might containt NA values (applies only when the \code{enma} object is calculated with argument \sQuote{rm.gaps=FALSE}). } \item{\dots}{ additional arguments passed to \code{dccm.nma}. } } \details{ This is a wrapper function for calling \code{dccm.nma} on a collection of \sQuote{nma} objects as obtained from function \code{nma.pdbs}. See examples for more details. } \value{ Returns a list with the following components: \item{all.dccm }{ an array or list containing the correlation matrices for each \sQuote{nma} object. An array is returned when the \sQuote{enma} object is calculated with \sQuote{rm.gaps=TRUE}, and a list is used when \sQuote{rm.gaps=FALSE}. } \item{avg.dccm }{ a numeric matrix containing the average correlation matrix. The average is only calculated when the \sQuote{enma} object is calculated with \sQuote{rm.gaps=TRUE}. } } \references{ Wynsberghe. A.W.V, Cui, Q. \emph{Structure} \bold{14}, 1647--1653. Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{nma}}, \code{\link{dccm.nma}}, \code{\link{plot.dccm}} } \examples{ \donttest{ ## Needs MUSCLE installed - testing excluded if(check.utility("muscle")) { ## Fetch PDB files and split to chain A only PDB files ids <- c("1a70_A", "1czp_A", "1frd_A", "1fxi_A", "1iue_A", "1pfd_A") files <- get.pdb(ids, split = TRUE, path = tempdir()) ## Sequence/Structure Alignement pdbs <- pdbaln(files, outfile = tempfile()) ## Normal mode analysis on aligned data modes <- nma(pdbs) ## Calculate all 6 correlation matrices cij <- dccm(modes) ## Plot correlations for first structure plot.dccm(cij$all.dccm[,,1]) } } } \keyword{ analysis } bio3d/man/pdbsplit.Rd0000644000176200001440000000575614707230357014162 0ustar liggesusers\name{pdbsplit} \alias{pdbsplit} \title{ Split a PDB File Into Separate Files, One For Each Chain. } \description{ Split a Protein Data Bank (PDB) coordinate file into new separate files with one file for each chain. } \usage{ pdbsplit(pdb.files, ids = NULL, path = "split_chain", overwrite=TRUE, verbose = FALSE, mk4=FALSE, ncore = 1, progress = NULL, \dots) } \arguments{ \item{pdb.files}{ a character vector of PDB file names. } \item{ids}{ a character vector of PDB and chain identifiers (of the form: \sQuote{pdbId_chainId}, e.g. \sQuote{1bg2_A}). Used for filtering chain IDs for output (in the above example only chain A would be produced). } \item{path}{ output path for chain-split files. } \item{overwrite}{ logical, if FALSE the PDB structures will not be read and written if split files already exist. } \item{verbose}{ logical, if TRUE details of the PDB header and chain selections are printed. } \item{mk4}{ logical, if TRUE output filenames will use only the first four characters of the input filename (see \code{basename.pdb} for details). } \item{ncore}{ number of CPU cores used for the calculation. \code{ncore>1} requires package \sQuote{parallel} be installed. } \item{progress}{ progress bar for use with shiny web app. } \item{...}{ additional arguments to \code{read.pdb}. Useful e.g. for parsing multi model PDB files, including ALT records etc. in the output files. } } \details{ This function will produce single chain PDB files from multi-chain input files. By default all separate filenames are returned. To return only a subset of select chains the optional input \sQuote{ids} can be provided to filter the output (e.g. to fetch only chain C, of a PDB object with additional chains A+B ignored). See examples section for further details. Note that multi model atom records will only split into individual PDB files if \code{multi=TRUE}, else they are omitted. See examples. } \value{ Returns a character vector of chain-split file names. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. For a description of PDB format (version3.3) see:\cr \url{http://www.wwpdb.org/documentation/format33/v3.3.html}. } \author{ Barry Grant } \seealso{ \code{\link{read.pdb}}, \code{\link{atom.select}}, \code{\link{write.pdb}}, \code{\link{get.pdb}}. } \examples{ \dontrun{ ## Save separate PDB files for each chain of a local or on-line file pdbsplit( get.pdb("2KIN", URLonly=TRUE) ) ## Split several PDBs by chain ID and multi-model records raw.files <- get.pdb( c("1YX5", "3NOB") , URLonly=TRUE) chain.files <- pdbsplit(raw.files, path=tempdir(), multi=TRUE) basename(chain.files) ## Output only desired pdbID_chainID combinations ## for the last entry (1f9j), fetch all chains ids <- c("1YX5_A", "3NOB_B", "1F9J") raw.files <- get.pdb( ids , URLonly=TRUE) chain.files <- pdbsplit(raw.files, ids, path=tempdir()) basename(chain.files) } } \keyword{ utilities } bio3d/man/is.mol2.Rd0000644000176200001440000000120614707230357013606 0ustar liggesusers\name{is.mol2} \alias{is.mol2} \title{ Is an Object of Class \sQuote{mol2}? } \description{ Checks whether its argument is an object of class \sQuote{mol2}. } \usage{ is.mol2(x) } \arguments{ \item{x}{ an R object. } } \details{ Tests if the object \sQuote{x} is of class \sQuote{mol2} (\code{is.mol2}), i.e. if \sQuote{x} has a \dQuote{class} attribute equal to \code{mol2}. } \value{ TRUE if x is an object of class \sQuote{mol2} and FALSE otherwise } \seealso{ \code{\link{read.mol2}} } \examples{ # Read a PDB file mol <- read.mol2( system.file("examples/aspirin.mol2", package="bio3d") ) is.mol2(mol) } \keyword{ classes } bio3d/man/core.find.Rd0000644000176200001440000001600014707230357014170 0ustar liggesusers\name{core.find} \alias{core.find} \alias{core.find.default} \alias{core.find.pdbs} \alias{core.find.pdb} \title{ Identification of Invariant Core Positions } \description{ Perform iterated rounds of structural superposition to identify the most invariant region in an aligned set of protein structures. } \usage{ core.find(\dots) \method{core.find}{pdbs}(pdbs, shortcut = FALSE, rm.island = FALSE, verbose = TRUE, stop.at = 15, stop.vol = 0.5, write.pdbs = FALSE, outpath="core_pruned", ncore = 1, nseg.scale = 1, progress = NULL, \dots) \method{core.find}{default}(xyz, \dots) \method{core.find}{pdb}(pdb, verbose=TRUE, \dots) } \arguments{ \item{pdbs}{ a numeric matrix of aligned C-alpha xyz Cartesian coordinates. For example an alignment data structure obtained with \code{\link{read.fasta.pdb}} or \code{\link{pdbaln}}. } \item{shortcut}{ if TRUE, remove more than one position at a time. } \item{rm.island}{ remove isolated fragments of less than three residues. } \item{verbose}{ logical, if TRUE a \dQuote{core_pruned} directory containing \sQuote{core structures} for each iteraction is written to the current directory. } \item{stop.at}{ minimal core size at which iterations should be stopped. } \item{stop.vol}{ minimal core volume at which iterations should be stopped. } \item{write.pdbs}{ logical, if TRUE core coordinate files, containing only core positions for each iteration, are written to a location specified by \code{outpath}. } \item{outpath}{ character string specifying the output directory when \code{write.pdbs} is TRUE. } \item{ncore }{ number of CPU cores used to do the calculation. \code{ncore>1} requires package \sQuote{parallel} installed. } \item{nseg.scale }{ split input data into specified number of segments prior to running multiple core calculation. See \code{\link{fit.xyz}}.} \item{progress}{ progress bar for use with shiny web app. } \item{xyz}{ a numeric matrix of xyz Cartesian coordinates, e.g. obtained from \code{\link{read.dcd}} or \code{\link{read.ncdf}}. } \item{pdb}{ an object of type \code{pdb} as obtained from function \code{\link{read.pdb}} with multiple frames (>=4) stored in its \code{xyz} component. Note that the function will attempt to identify C-alpha and phosphate atoms (for protein and nucleic acids, respectively) in which the calculation should be based. } \item{\dots}{ arguments passed to and from functions. } } \details{ This function attempts to iteratively refine an initial structural superposition determined from a multiple alignment. This involves iterated rounds of superposition, where at each round the position(s) displaying the largest differences is(are) excluded from the dataset. The spatial variation at each aligned position is determined from the eigenvalues of their Cartesian coordinates (i.e. the variance of the distribution along its three principal directions). Inspired by the work of Gerstein \emph{et al.} (1991, 1995), an ellipsoid of variance is determined from the eigenvalues, and its volume is taken as a measure of structural variation at a given position. Optional \dQuote{core PDB files} containing core positions, upon which superposition is based, can be written to a location specified by \code{outpath} by setting \code{write.pdbs=TRUE}. These files are useful for examining the core filtering process by visualising them in a graphics program. } \value{ Returns a list of class \code{"core"} with the following components: \item{volume }{total core volume at each fitting iteration/round.} \item{length }{core length at each round.} \item{resno }{residue number of core residues at each round (taken from the first aligned structure) or, alternatively, the numeric index of core residues at each round.} \item{step.inds}{atom indices of core atoms at each round.} \item{atom }{atom indices of core positions in the last round.} \item{xyz }{xyz indices of core positions in the last round.} \item{c1A.atom }{atom indices of core positions with a total volume under 1 Angstrom^3.} \item{c1A.xyz }{xyz indices of core positions with a total volume under 1 Angstrom^3.} \item{c1A.resno }{residue numbers of core positions with a total volume under 1 Angstrom^3.} \item{c0.5A.atom }{atom indices of core positions with a total volume under 0.5 Angstrom^3.} \item{c0.5A.xyz }{xyz indices of core positions with a total volume under 0.5 Angstrom^3.} \item{c0.5A.resno }{residue numbers of core positions with a total volume under 0.5 Angstrom^3.} } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. Gerstein and Altman (1995) \emph{J. Mol. Biol.} \bold{251}, 161--175. Gerstein and Chothia (1991) \emph{J. Mol. Biol.} \bold{220}, 133--149. } \note{ The relevance of the \sQuote{core positions} identified by this procedure is dependent upon the number of input structures and their diversity. } \author{ Barry Grant } \seealso{ \code{\link{read.fasta.pdb}}, \code{\link{plot.core}}, \code{\link{fit.xyz}} } \examples{ \dontrun{ ##-- Generate a small kinesin alignment and read corresponding structures pdbfiles <- get.pdb(c("1bg2","2ncd","1i6i","1i5s"), URLonly=TRUE) pdbs <- pdbaln(pdbfiles) ##-- Find 'core' positions core <- core.find(pdbs) plot(core) ##-- Fit on these relatively invarient subset of positions #core.inds <- print(core, vol=1) core.inds <- print(core, vol=0.5) xyz <- pdbfit(pdbs, core.inds, outpath="corefit_structures") ##-- Compare to fitting on all equivalent positions xyz2 <- pdbfit(pdbs) ## Note that overall RMSD will be higher but RMSF will ## be lower in core regions, which may equate to a ## 'better fit' for certain applications gaps <- gap.inspect(pdbs$xyz) rmsd(xyz[,gaps$f.inds]) rmsd(xyz2[,gaps$f.inds]) plot(rmsf(xyz[,gaps$f.inds]), typ="l", col="blue", ylim=c(0,9)) points(rmsf(xyz2[,gaps$f.inds]), typ="l", col="red") } \dontrun{ ##-- Run core.find() on a multimodel PDB file pdb <- read.pdb('1d1d', multi=TRUE) core <- core.find(pdb) ##-- Run core.find() on a trajectory trtfile <- system.file("examples/hivp.dcd", package="bio3d") trj <- read.dcd(trtfile) ## Read the starting PDB file to determine atom correspondence pdbfile <- system.file("examples/hivp.pdb", package="bio3d") pdb <- read.pdb(pdbfile) ## select calpha coords from a manageable number of frames ca.ind <- atom.select(pdb, "calpha")$xyz frames <- seq(1, nrow(trj), by=10) core <- core.find( trj[frames, ca.ind], write.pdbs=TRUE ) ## have a look at the various cores "vmd -m core_pruned/*.pdb" ## Lets use a 6A^3 core cutoff inds <- print(core, vol=6) write.pdb(xyz=pdb$xyz[inds$xyz],resno=pdb$atom[inds$atom,"resno"], file="core.pdb") ##- Fit trj onto starting structure based on core indices xyz <- fit.xyz( fixed = pdb$xyz, mobile = trj, fixed.inds = inds$xyz, mobile.inds = inds$xyz) ##write.pdb(pdb=pdb, xyz=xyz, file="new_trj.pdb") ##write.ncdf(xyz, "new_trj.nc") } } \keyword{ utilities } bio3d/man/pdbs2pdb.Rd0000644000176200001440000000360314707230357014026 0ustar liggesusers\name{pdbs2pdb} \alias{pdbs2pdb} \title{ PDBs to PDB Converter } \description{ Convert a list of PDBs from an \code{"pdbs"} object to a list of \code{pdb} objects. } \usage{ pdbs2pdb(pdbs, inds = NULL, rm.gaps = FALSE, all.atom=FALSE, ncore=NULL) } \arguments{ \item{pdbs}{ a list of class \code{"pdbs"} containing PDB file data, as obtained from \code{read.fasta.pdb}, \code{pdbaln}, or \code{read.all}. } \item{inds}{ a vector of indices that selects the PDB structures to convert. } \item{rm.gaps}{ logical, if TRUE atoms in gap containing columns are removed in the output \code{pdb} objects. } \item{all.atom}{ logical, if TRUE all atom data are converted (the \sQuote{pdbs} object must be obtained from \code{read.all} or \code{pdbs$id} refers to existing PDB files). } \item{ncore}{ number of CPU cores used to do the calculation. } } \details{ This function will generate a list of \code{pdb} objects from a \code{"pdbs"} class. See examples for more details/ } \value{ Returns a list of \code{pdb} objects. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{read.pdb}}, \code{\link{pdbaln}}, \code{\link{read.fasta.pdb}}. } \examples{ \dontrun{ ## Fetch PDBs pdb.ids <- c("1YX5_B", "3NOB", "1P3Q_U") #outdir <- paste(tempdir(), "/raw_pdbs", sep="") outdir = "raw_pdbs" raw.files <- get.pdb(pdb.ids, path = outdir) ## Split PDBs by chain ID and multi-model records all.files <- pdbsplit(raw.files, pdb.ids, path =paste(outdir, "/split_chain", sep="")) ## Align and fit pdbs <- pdbaln(all.files, fit=TRUE) ## Convert back to PDB objects all.pdbs <- pdbs2pdb(pdbs) ## Access the first PDB object ## all.pdbs[[1]] ## Return PDB objects consisting of only ## atoms in non-gap positions all.pdbs <- pdbs2pdb(pdbs, rm.gaps=TRUE) } } \keyword{ utilities } bio3d/man/core.cmap.Rd0000644000176200001440000000477514707230357014210 0ustar liggesusers\name{core.cmap} \alias{core.cmap} \title{ Identification of Contact Map Core Positions } \description{ Find core positions that have the largest number of contact with neighboring residues. } \usage{ core.cmap(pdbs, write.pdb = FALSE, outfile="core.pdb", cutoff = NULL, refine = FALSE, ncore = NULL, \dots) } \arguments{ \item{pdbs}{ an alignment data structure of class \sQuote{pdbs} as obtained with \code{\link{read.fasta.pdb}} or \code{\link{pdbaln}}, or a numeric matrix of aligned C-alpha xyz Cartesian coordinates. } \item{write.pdb}{ logical, if TRUE core coordinate files, containing only core positions for each iteration, are written to a location specified by \code{outpath}. } \item{outfile}{ character string specifying the output directory when \code{write.pdb} is \sQuote{TRUE}. } \item{cutoff}{ numeric value speciyfing the inclusion criteria for core positions. } \item{refine}{ logical, if TRUE explore core positions determined by multiple eigenvectors. By default only the eigenvector describing the largest variation is used. } \item{ncore }{ number of CPU cores used to do the calculation. By default (\code{ncore=NULL}) use all cores detected. } \item{\dots}{ arguments passed to and from functions. } } \details{ This function calculates eigenvector centrality of the weighted contact network built based on input structure data and uses it to determine the core positions. In this context, core positions correspond to the most invariant C-alpha atom positions across an aligned set of protein structures. Traditionally one would use the \code{core.find} function to for their identification and then use these positions as the basis for improved structural superposition. This more recent function utilizes a much faster approach and is thus preferred in time sensitive applications such as shiny apps. } \value{ Returns a list of class \code{"select"} containing \sQuote{atom} and \sQuote{xyz} indices. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Xin-Qiu Yao } \seealso{ \code{\link{core.find}}, \code{\link{read.fasta.pdb}}, \code{\link{fit.xyz}} } \examples{ \dontrun{ ##-- Generate a small kinesin alignment and read corresponding structures pdbfiles <- get.pdb(c("1bg2","2ncd","1i6i","1i5s"), URLonly=TRUE) pdbs <- pdbaln(pdbfiles) ##-- Find 'core' positions core <- core.cmap(pdbs) xyz <- pdbfit(pdbs, core, outpath="corefit_structures") } } \keyword{ utilities } bio3d/man/rmsip.Rd0000644000176200001440000000476614707230357013473 0ustar liggesusers\name{rmsip} \alias{rmsip} \alias{rmsip.default} \alias{rmsip.enma} \title{ Root Mean Square Inner Product } \description{ Calculate the RMSIP between two mode subspaces. } \usage{ rmsip(...) \method{rmsip}{enma}(enma, ncore=NULL, subset=10, ...) \method{rmsip}{default}(modes.a, modes.b, subset=10, row.name="a", col.name="b", ...) } \arguments{ \item{enma}{ an object of class \code{"enma"} obtained from function \code{nma.pdbs}. } \item{ncore }{ number of CPU cores used to do the calculation. \code{ncore>1} requires package \sQuote{parallel} installed. } \item{subset}{ the number of modes to consider. } \item{modes.a}{ an object of class \code{"pca"} or \code{"nma"} as obtained from functions \code{pca.xyz} or \code{nma}. } \item{modes.b}{ an object of class \code{"pca"} or \code{"nma"} as obtained from functions \code{pca.xyz} or \code{nma}. } \item{row.name}{ prefix name for the rows. } \item{col.name}{ prefix name for the columns. } \item{\dots}{ arguments passed to associated functions. } } \details{ RMSIP is a measure for the similarity between two set of modes obtained from principal component or normal modes analysis. } \value{ Returns an \code{rmsip} object with the following components: \item{overlap}{ a numeric matrix containing pairwise (squared) dot products between the modes. } \item{rmsip}{ a numeric RMSIP value. } For function \code{rmsip.enma} a numeric matrix containing all pairwise RMSIP values of the modes stored in the \code{enma} object. } \references{ Skjaerven, L. et al. (2014) \emph{BMC Bioinformatics} \bold{15}, 399. Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. Amadei, A. et al. (1999) \emph{Proteins} \bold{36}, 19--424. } \author{ Lars Skjaerven } \seealso{ \code{\link{pca}}, \code{\link{nma}}, \code{\link{overlap}}. Other similarity measures: \code{\link{sip}}, \code{\link{covsoverlap}}, \code{\link{bhattacharyya}}. } \examples{ \dontrun{ # Load data for HIV example trj <- read.dcd(system.file("examples/hivp.dcd", package="bio3d")) pdb <- read.pdb(system.file("examples/hivp.pdb", package="bio3d")) # Do PCA on simulation data xyz.md <- fit.xyz(pdb$xyz, trj, fixed.inds=1:ncol(trj)) pc.sim <- pca.xyz(xyz.md) # NMA modes <- nma(pdb) # Calculate the RMSIP between the MD-PCs and the NMA-MODEs r <- rmsip(modes, pc.sim, subset=10, row.name="NMA", col.name="PCA") # Plot pairwise overlap values plot(r, xlab="NMA", ylab="PCA") } } \keyword{ utilities } bio3d/man/seq2aln.Rd0000644000176200001440000000413714707230357013676 0ustar liggesusers\name{seq2aln} \alias{seq2aln} \title{ Add a Sequence to an Existing Alignmnet } \description{ Add one or more sequences to an existing multiple alignment that you wish to keep intact. } \usage{ seq2aln(seq2add, aln, id = "seq", file = "aln.fa", \dots) } \arguments{ \item{seq2add}{ an sequence character vector or an alignment list object with \code{id} and \code{ali} components, similar to that generated by \code{\link{read.fasta}} and \code{\link{seqaln}}. } \item{aln}{ an alignment list object with \code{id} and \code{ali} components, similar to that generated by \code{\link{read.fasta}} and \code{\link{seqaln}}. } \item{id}{ a vector of sequence names to serve as sequence identifers. } \item{file}{ name of \sQuote{FASTA} output file to which alignment should be written. } \item{\dots}{ additional arguments passed to \code{\link{seqaln}}. } } \details{ This function calls the \sQuote{MUSCLE} program, to perform a profile profile alignment, which MUST BE INSTALLED on your system and in the search path for executables. } \value{ A list with two components: \item{ali}{ an alignment character matrix with a row per sequence and a column per equivalent aminoacid/nucleotide. } \item{id}{ sequence names as identifers.} } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. \sQuote{MUSCLE} is the work of Edgar: Edgar (2004) \emph{Nuc. Acid. Res.} \bold{32}, 1792--1797. Full details of the \sQuote{MUSCLE} algorithm, along with download and installation instructions can be obtained from:\cr \url{http://www.drive5.com/muscle/}. } \author{ Barry Grant } \note{ A system call is made to the \sQuote{MUSCLE} program, which must be installed on your system and in the search path for executables. } \seealso{ \code{\link{seqaln}}, \code{\link{read.fasta}}, \code{\link{read.fasta.pdb}}, \code{\link{seqbind}} } \examples{ \dontrun{ aa.1 <- pdbseq( read.pdb("1bg2") ) aa.2 <- pdbseq( read.pdb("3dc4") ) aa.3 <- pdbseq( read.pdb("1mkj") ) aln <- seqaln( seqbind(aa.1,aa.2) ) seq2aln(aa.3, aln) } } \keyword{ utilities } bio3d/man/dist.xyz.Rd0000644000176200001440000000345414707230357014126 0ustar liggesusers\name{dist.xyz} \alias{dist.xyz} \title{ Calculate the Distances Between the Rows of Two Matrices } \description{ Compute the pairwise euclidean distances between the rows of two matrices. } \usage{ dist.xyz(a, b = NULL, all.pairs=TRUE, ncore=1, nseg.scale=1) } \arguments{ \item{a}{ a \sQuote{xyz} object, numeric data matrix, or vector. } \item{b}{ an optional second \sQuote{xyz} object, data matrix, or vector. } \item{all.pairs}{ logical, if TRUE all pairwise distances between the rows of \sQuote{a} and all rows of \sQuote{b} are computed, if FALSE only the distances between coresponding rows of \sQuote{a} and \sQuote{b} are computed. } \item{ncore }{ number of CPU cores used to do the calculation. \code{ncore>1} requires package \sQuote{parallel} installed. } \item{nseg.scale }{ split input data into specified number of segments prior to running multiple core calculation. See \code{\link{fit.xyz}}. } } \details{ This function returns a matrix of euclidean distances between each row of \sQuote{a} and all rows of \sQuote{b}. Input vectors are coerced to three dimensional matrices (representing the Cartesian coordinates x, y and z) prior to distance computation. If \sQuote{b} is not provided then the pairwise distances between all rows of \sQuote{a} are computed. } \value{ Returns a matrix of pairwise euclidean distances between each row of \sQuote{a} and all rows of \sQuote{b}. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \note{ This function will choke if \sQuote{b} has too many rows. } \seealso{ \code{\link{dm}}, \code{\link{dist}} } \examples{ dist.xyz( c(1,1,1, 3,3,3), c(3,3,3, 2,2,2, 1,1,1)) dist.xyz( c(1,1,1, 3,3,3), c(3,3,3, 2,2,2, 1,1,1), all.pairs=FALSE) } \keyword{ utilities } bio3d/man/as.fasta.Rd0000644000176200001440000000237214707230357014030 0ustar liggesusers\name{as.fasta} \alias{as.fasta} \title{ Alignment to FASTA object } \description{ Convert alignment/sequence in matrix/vector format to FASTA object. } \usage{ as.fasta(x, id=NULL, \dots) } \arguments{ \item{x}{ a sequence character matrix/vector (e.g obtained from \code{\link{get.seq}} or \code{\link{seqbind}}). } \item{id}{ a vector of sequence names to serve as sequence identifers. By default the function will use the row names of the alignment if they exists, otherwise ids will be generated. } \item{\dots}{ arguments passed to and from functions. } } \details{ This function provides basic functionality to convert a sequence character matrix/vector to a FASTA object. } \value{ Returns a list of class \code{"fasta"} with the following components: \item{ali}{ an alignment character matrix with a row per sequence and a column per equivalent aminoacid/nucleotide. } \item{id}{ sequence names as identifers.} \item{call }{ the matched call. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{get.seq}}, \code{\link{seqaln}}, \code{\link{seqbind}}, \code{\link{pdbaln}} } \examples{ as.fasta(c("A", "C", "D")) } \keyword{ utilities } bio3d/man/read.crd.Rd0000644000176200001440000000327114707230357014011 0ustar liggesusers\name{read.crd} \alias{read.crd} \title{ Read Coordinate Data from Amber or Charmm } \description{ Read a CHARMM CARD (CRD) or AMBER coordinate file. } \usage{ read.crd(file, ...) } \arguments{ \item{file}{ the name of the coordinate file to be read. } \item{\dots}{ additional arguments passed to the methods \code{read.crd.charmm} or \code{read.crd.amber}. } } \details{ \code{read.crd} is a generic function calling the corresponding function determined by the class of the input argument \code{x}. Use \code{methods("read.crd")} to get all the methods for \code{read.crd} generic: \code{\link{read.crd.charmm}} will be used for file extension \sQuote{.crd}. \code{\link{read.crd.amber}} will be used for file extension \sQuote{.rst} or \sQuote{.inpcrd}. See examples for each corresponding function for more details. } \value{ See the \sQuote{value} section for the corresponding functions for more details. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant and Lars Skjaerven} \seealso{ \code{\link{read.crd.amber}}, \code{\link{read.crd.charmm}}, \code{\link{write.crd}}, \code{\link{read.prmtop}}, \code{\link{read.pdb}}, \code{\link{write.pdb}}, \code{\link{atom.select}}, \code{\link{read.dcd}}, \code{\link{read.ncdf}} } \examples{ \dontrun{ ## Read a PRMTOP file prmtop <- read.prmtop(system.file("examples/crambin.prmtop", package="bio3d")) print(prmtop) ## Read a Amber CRD file crds <- read.crd(system.file("examples/crambin.inpcrd", package="bio3d")) ## Atom selection ca.inds <- atom.select(prmtop, "calpha") ## Convert to PDB format pdb <- as.pdb(prmtop, crds, inds=ca.inds) } } \keyword{ IO } bio3d/man/pca.xyz.Rd0000644000176200001440000001150514707230357013722 0ustar liggesusers\name{pca.xyz} \alias{pca.xyz} \alias{print.pca} \title{ Principal Component Analysis } \description{ Performs principal components analysis (PCA) on a \code{xyz} numeric data matrix. } \usage{ \method{pca}{xyz}(xyz, subset = rep(TRUE, nrow(as.matrix(xyz))), use.svd = FALSE, rm.gaps=FALSE, mass = NULL, \dots) \method{print}{pca}(x, nmodes=6, \dots) } \arguments{ \item{xyz}{ numeric matrix of Cartesian coordinates with a row per structure. } \item{subset}{ an optional vector of numeric indices that selects a subset of rows (e.g. experimental structures vs molecular dynamics trajectory structures) from the full \code{xyz} matrix. Note: the full \code{xyz} is projected onto this subspace.} \item{use.svd}{ logical, if TRUE singular value decomposition (SVD) is called instead of eigenvalue decomposition. } \item{rm.gaps}{ logical, if TRUE gap positions (with missing coordinate data in any input structure) are removed before calculation. This is equivalent to removing NA cols from xyz. } \item{x}{ an object of class \code{pca}, as obtained from function \code{pca.xyz}. } \item{nmodes}{ numeric, number of modes to be printed. } \item{mass}{ a \sQuote{pdb} object or numeric vector of residue/atom masses. By default (\code{mass=NULL}), mass is ignored. If provided with a \sQuote{pdb} object, masses of all amino acids obtained from \code{\link{aa2mass}} are used. } \item{\dots}{ additional arguments to \code{\link{fit.xyz}} (for \code{pca.xyz}) or to \code{print} (for \code{print.pca}). } } \note{ If \code{mass} is provided, mass weighted coordinates will be considered, and iteration of fitting onto the mean structure is performed internally. The extra fitting process is to remove external translation and rotation of the whole system. With this option, a direct comparison can be made between PCs from \code{\link{pca.xyz}} and vibrational modes from \code{\link{nma.pdb}}, with the fact that \deqn{A=k_BTF^{-1}}{A=k[B]TF^-1}, where \eqn{A} is the variance-covariance matrix, \eqn{F} the Hessian matrix, \eqn{k_B}{k[B]} the Boltzmann's constant, and \eqn{T} the temperature. } \value{ Returns a list with the following components: \item{L }{eigenvalues.} \item{U }{eigenvectors (i.e. the x, y, and z variable loadings).} \item{z }{scores of the supplied \code{xyz} on the pcs.} \item{au }{atom-wise loadings (i.e. xyz normalized eigenvectors).} \item{sdev }{the standard deviations of the pcs.} \item{mean }{the means that were subtracted.} } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \seealso{ \code{\link{pca}}, \code{\link{pca.pdbs}}, \code{\link{plot.pca}}, \code{\link{mktrj.pca}}, \code{\link{pca.tor}}, \code{\link{project.pca}} } \examples{ \dontrun{ #-- Read transducin alignment and structures aln <- read.fasta(system.file("examples/transducin.fa",package="bio3d")) pdbs <- read.fasta.pdb(aln) # Find core core <- core.find(pdbs, #write.pdbs = TRUE, verbose=TRUE) rm(list=c("pdbs", "core")) } #-- OR for demo purposes just read previously saved transducin data attach(transducin) # Previously fitted coordinates based on sub 1.0A^3 core. See core.find() function. xyz <- pdbs$xyz #-- Do PCA ignoring gap containing positions pc.xray <- pca.xyz(xyz, rm.gaps=TRUE) # Plot results (conformer plots & scree plot overview) plot(pc.xray, col=annotation[, "color"]) # Plot a single conformer plot of PC1 v PC2 plot(pc.xray, pc.axes=1:2, col=annotation[, "color"]) ## Plot atom wise loadings plot.bio3d(pc.xray$au[,1], ylab="PC1 (A)") \donttest{ # PDB server connection required - testing excluded try({ ## Plot loadings in relation to reference structure 1TAG pdb <- read.pdb("1tag") ind <- grep("1TAG", pdbs$id) ## location in alignment resno <- pdbs$resno[ind, !is.gap(pdbs)] ## non-gap residues tpdb <- trim.pdb(pdb, resno=resno) op <- par(no.readonly=TRUE) par(mfrow = c(3, 1), cex = 0.6, mar = c(3, 4, 1, 1)) plot.bio3d(pc.xray$au[,1], resno, ylab="PC1 (A)", sse=tpdb) plot.bio3d(pc.xray$au[,2], resno, ylab="PC2 (A)", sse=tpdb) plot.bio3d(pc.xray$au[,3], resno, ylab="PC3 (A)", sse=tpdb) par(op) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } \dontrun{ # Write PC trajectory resno = pdbs$resno[1, !is.gap(pdbs)] resid = aa123(pdbs$ali[1, !is.gap(pdbs)]) a <- mktrj.pca(pc.xray, pc=1, file="pc1.pdb", resno=resno, resid=resid ) b <- mktrj.pca(pc.xray, pc=2, file="pc2.pdb", resno=resno, resid=resid ) c <- mktrj.pca(pc.xray, pc=3, file="pc3.pdb", resno=resno, resid=resid ) } detach(transducin) } \keyword{ utilities } \keyword{ multivariate } bio3d/man/motif.find.Rd0000644000176200001440000000225014707230357014360 0ustar liggesusers\name{motif.find} \alias{motif.find} \title{ Find Sequence Motifs. } \description{ Return Position Indices of a Short Sequence Motif Within a Larger Sequence. } \usage{ motif.find(motif, sequence) } \arguments{ \item{motif}{ a character vector of the short sequence motif. } \item{sequence}{ a character vector of the larger sequence. } } \details{ The sequence and the motif can be given as a either a multiple or single element character vector. The dot character and other valid \code{regexpr} characters are allowed in the motif, see examples. } \value{ Returns a vector of position indices within the sequence where the motif was found, see examples. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \seealso{ \code{\link{regexpr}}, \code{\link{read.fasta}}, \code{\link{pdbseq}} } \examples{ \donttest{ # PDB server connection required - testing excluded try({ aa.seq <- pdbseq( read.pdb( get.pdb("4q21", URLonly=TRUE) ) ) motif = c("G....GKS") motif.find(motif, aa.seq) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } \keyword{ utilities } bio3d/man/nma.pdbs.Rd0000644000176200001440000001176414707230357014037 0ustar liggesusers\name{nma.pdbs} \alias{nma.pdbs} \alias{print.enma} \title{ Ensemble Normal Mode Analysis } \description{ Perform normal mode analysis (NMA) on an ensemble of aligned protein structures. } \usage{ \method{nma}{pdbs}(pdbs, fit = TRUE, full = FALSE, subspace = NULL, rm.gaps = TRUE, varweight=FALSE, outpath = NULL, ncore = 1, progress = NULL, \dots) \method{print}{enma}(x, \dots) } \arguments{ \item{pdbs}{ a numeric matrix of aligned C-alpha xyz Cartesian coordinates. For example an alignment data structure obtained with \code{\link{read.fasta.pdb}} or \code{\link{pdbaln}}. } \item{fit}{ logical, if TRUE coordinate superposition is performed prior to normal mode calculations. } \item{full}{ logical, if TRUE return the complete, full structure, \sQuote{nma} objects. } \item{subspace}{ number of eigenvectors to store for further analysis. } \item{rm.gaps}{ logical, if TRUE obtain the hessian matrices for only atoms in the aligned positions (non-gap positions in all aligned structures). Thus, gap positions are removed from output. } \item{varweight}{ logical, if TRUE perform weighing of the pair force constants. Alternatively, provide a NxN matrix containing the weights. See function \code{\link{var.xyz}}. } \item{outpath}{ character string specifing the output directory to which the PDB structures should be written. } \item{ncore }{ number of CPU cores used to do the calculation. \code{ncore>1} requires package \sQuote{parallel} installed. } \item{x}{ an \code{enma} object obtained from \code{\link{nma.pdbs}}. } \item{progress}{ progress bar for use with shiny web app. } \item{...}{ additional arguments to \code{nma}, \code{\link{aa2mass}}, and \code{\link{print}}. } } \details{ This function performs normal mode analysis (NMA) on a set of aligned protein structures obtained with function \code{\link{read.fasta.pdb}} or \code{\link{pdbaln}}. The main purpose is to provide aligned atomic fluctuations and mode vectors in an automated fashion. The normal modes are calculated on the full structures as provided by object \sQuote{pdbs}. With the input argument \sQuote{full=TRUE} the full \sQuote{nma} objects are returned together with output \sQuote{U.subs} providing the aligned mode vectors. When \sQuote{rm.gaps=TRUE} the unaligned atoms are ommited from output. With default arguments \sQuote{rmsip} provides RMSIP values for all pairwise structures. See examples for more details. } \value{ Returns an \sQuote{enma} object with the following components: \item{fluctuations }{ a numeric matrix containing aligned atomic fluctuations with one row per input structure. } \item{rmsip}{ a numeric matrix of pair wise RMSIP values (only the ten lowest frequency modes are included in the calculation). } \item{U.subspace }{ a three-dimensional array with aligned eigenvectors (corresponding to the subspace defined by the first N non-trivial eigenvectors (\sQuote{U}) of the \sQuote{nma} object). } \item{L}{ numeric matrix containing the raw eigenvalues with one row per input structure. } \item{xyz }{ an object of class \sQuote{xyz} containing the Cartesian coordinates in which the calculation was performed. Coordinates are superimposed to the first structure of the \code{pdbs} object when \sQuote{fit=TRUE}. } \item{full.nma }{ a list with a \code{nma} object for each input structure. } } \references{ Skjaerven, L. et al. (2014) \emph{BMC Bioinformatics} \bold{15}, 399. Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ For normal mode analysis on single structure PDB: \code{\link{nma.pdb}} For the analysis of the resulting \sQuote{eNMA} object: \code{\link{mktrj.enma}}, \code{\link{dccm.enma}}, \code{\link{plot.enma}}, \code{\link{cov.enma}}. Similarity measures: \code{\link{sip}}, \code{\link{covsoverlap}}, \code{\link{bhattacharyya}}, \code{\link{rmsip}}. Related functionality: \code{\link{pdbaln}}, \code{\link{read.fasta.pdb}}. } \examples{ \donttest{ # Needs MUSCLE installed - testing excluded if(check.utility("muscle")) { try({ ## Fetch PDB files and split to chain A only PDB files ids <- c("1a70_A", "1czp_A", "1frd_A", "1fxi_A", "1iue_A", "1pfd_A") files <- get.pdb(ids, split = TRUE, path = tempdir()) ## Sequence Alignement pdbs <- pdbaln(files, outfile = tempfile()) ## Normal mode analysis on aligned data modes <- nma(pdbs, rm.gaps=FALSE) ## Plot fluctuation data plot(modes, pdbs=pdbs) ## Cluster on Fluctuation similariy sip <- sip(modes) hc <- hclust(dist(sip)) col <- cutree(hc, k=3) ## Plot fluctuation data plot(modes, pdbs=pdbs, col=col) ## Remove gaps from output modes <- nma(pdbs, rm.gaps=TRUE) ## RMSIP is pre-calculated heatmap(1-modes$rmsip) ## Bhattacharyya coefficient bc <- bhattacharyya(modes) heatmap(1-bc) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } } \keyword{ analysis } bio3d/man/plot.fasta.Rd0000644000176200001440000000337314707230357014405 0ustar liggesusers\name{plot.fasta} \alias{plot.fasta} \title{ Plot a Multiple Sequence Alignment } \description{ Produces a schematic representation of a multiple sequence alignment. } \usage{ \method{plot}{fasta}(x, hc = TRUE, labels = x$id, cex.lab = 0.7, xlab = "Alignment index", main = "Sequence Alignment Overview", mar4 = 4, ...) } \arguments{ \item{x}{ multiple sequence alignement of class \sQuote{fasta} as obtained from \code{\link{seqaln}}. } \item{hc}{ logical, if TRUE plot a dendrogram on the left side. Alternatively, an object obtained from \code{\link{hclust}} can be provided. } \item{labels}{ labels corresponding to each row in the alignment. } \item{cex.lab}{ scaling factor for the labels. } \item{xlab}{ label for x-axis. } \item{main}{ a main title for the plot. } \item{mar4}{ margin size for the labels. } \item{\dots}{ additional arguments passed to function \code{\link{hclust}}. } } \details{ \code{plot.fasta} is a utility function for producting a schematic representation of a multiple sequence alignment. } \value{ Called for its effect. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{seqaln}}, \code{\link{read.fasta}}, \code{\link{entropy}}, \code{\link{aln2html}}. } \examples{ # Read alignment aln <- read.fasta(system.file("examples/kif1a.fa",package="bio3d")) ## alignment plot plot(aln, labels=basename.pdb(aln$id)) ## Works also for a 'pdbs' object attach(transducin) plot(pdbs) detach(transducin) \dontrun{ infile <- "http://pfam.xfam.org/family/PF00071/alignment/seed/format?format=fasta" aln <- read.fasta( infile ) plot(aln) } } \keyword{ hplot } bio3d/man/filter.dccm.Rd0000644000176200001440000000741214707230357014522 0ustar liggesusers\name{filter.dccm} \alias{filter.dccm} \title{ Filter for Cross-correlation Matrices (Cij) } \description{ This function builds various cij matrix for correlation network analysis } \usage{ filter.dccm(x, cutoff.cij = NULL, cmap = NULL, xyz = NULL, fac = NULL, cutoff.sims = NULL, collapse = TRUE, extra.filter = NULL, ...) } \arguments{ \item{x}{ A matrix (nXn), a numeric array with 3 dimensions (nXnXm), a list with m cells each containing nXn matrix, or a list with \sQuote{all.dccm} component, containing atomic correlation values, where "n" is the number of residues and "m" the number of calculations. The matrix elements should be in between -1 and 1. See \sQuote{dccm} function in bio3d package for further details. } \item{cutoff.cij}{ Threshold for each individual correlation value. If NULL, a guessed value will be used. See below for details. } \item{cmap}{ logical or numerical matrix indicating the contact map. If logical and TRUE, contact map will be calculated with input \code{xyz}. } \item{xyz}{ XYZ coordinates, or a \sQuote{pdbs} object obtained from \code{pdbaln} or \code{read.fasta.pdb}, for contact map calculations. } \item{fac}{ factor indicating distinct categories of input correlation matrices. } \item{cutoff.sims}{ Threshold for the number of simulations with observed correlation value above \code{cutoff.cij} for the same residue/atomic pairs. See below for details. } \item{collapse}{ logical, if TRUE the mean matrix will be returned. } \item{extra.filter}{ Filter to apply in addition to the model chosen. } \item{\dots}{ extra arguments passed to function \code{cmap}. } } \value{ Returns a matrix of class "dccm" or a 3D array of filtered cross-correlations. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Xin-Qiu Yao, Guido Scarabelli & Barry Grant } \details{ If cmap is TRUE or provided a numerical matrix, the function inspects a set of cross-correlation matrices, or DCCM, and decides edges for correlation network analysis based on: 1. min(abs(cij)) >= cutoff.cij, or 2. max(abs(cij)) >= cutoff.cij && residues contact each other based on results from \code{cmap}. Otherwise, the function filters DCCMs with \code{cutoff.cij} and return the mean of correlations present in at least \code{cutoff.sims} calculated matrices. An internally guessed \code{cuoff.cij} is used if \code{cutoff.cij=NULL} is provided. By default, the cutoff is determined by keeping 5\% of all residue pairs connected. } \seealso{ \code{\link{cna}}, \code{\link{dccm}}, \code{\link{dccm.nma}}, \code{\link{dccm.xyz}}, \code{\link{cmap}}, \code{\link{plot.dccm}} } \examples{ \dontrun{ # Example of transducin attach(transducin) gaps.pos <- gap.inspect(pdbs$xyz) modes <- nma.pdbs(pdbs, ncore=NULL) dccms <- dccm.enma(modes, ncore=NULL) cij <- filter.dccm(dccms, xyz=pdbs) # Example protein kinase # Select Protein Kinase PDB IDs ids <- c("4b7t_A", "2exm_A", "1opj_A", "4jaj_A", "1a9u_A", "1tki_A", "1csn_A", "1lp4_A") # Download and split by chain ID files <- get.pdb(ids, path = "raw_pdbs", split=TRUE) # Alignment of structures pdbs <- pdbaln(files) # Sequence identity summary(c(seqidentity(pdbs))) # NMA on all structures modes <- nma.pdbs(pdbs, ncore=NULL) # Calculate correlation matrices for each structure cij <- dccm(modes) # Set DCCM plot panel names for combined figure dimnames(cij$all.dccm) = list(NULL, NULL, ids) plot.dccm(cij$all.dccm) # Filter to display only correlations present in all structures cij.all <- filter.dccm(cij, cutoff.sims = 8, cutoff.cij = 0) plot.dccm(cij.all, main = "Consensus Residue Cross Correlation") detach(transducin) } } \keyword{analysis} bio3d/man/community.aln.Rd0000644000176200001440000000663314707230357015131 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/community.aln.R \name{community.aln} \alias{community.aln} \title{Align communities from two or more networks} \usage{ community.aln(x, ..., aln = NULL) } \arguments{ \item{x, ...}{two or more objects of class \code{cna} (if the numbers of nodes are different, an alignment \sQuote{fasta} object is required for the \code{aln} argument; See below) as obtained from function \code{\link{cna}}. Alternatively, a list of \code{cna} objects can be given to \code{x}.} \item{aln}{alignment for comparing networks with different numbers of nodes.} } \value{ Returns a list of updated \code{cna} objects. } \description{ Find equivalent communities from two or more networks and re-assign colors to them in a consistent way across networks. A \sQuote{new.membership} vector is also generated for each network, which maps nodes to community IDs that are renumbered according to the community equivalency. } \details{ This function facilitates the inspection on the variance of the community partition in a group of similar networks. The original community numbering (and so the colors of communities in the output of \code{plot.cna} and \code{vmd.cna}) can be inconsistent across networks, i.e. equivalent communities may display different colors, impeding network comparison. The function calculates the dissimilarity between all communities and clusters communities with \sQuote{hclust} funciton. In each cluster, 0 or 1 community per network is included. The color attribute of communities is then re-assigned according to the clusters through all networks. In addition, a \sQuote{new.membership} vector is generated for each network, which mapps nodes to new community IDs that are numbered consistently across networks. } \examples{ \donttest{ # Needs MUSCLE installed - testing excluded if(check.utility("muscle")) { if (!requireNamespace("igraph", quietly = TRUE)) { message('Need igraph installed to run this example') } else { ## Fetch PDB files and split to chain A only PDB files ids <- c("1tnd_A", "1tag_A") files <- get.pdb(ids, split = TRUE, path = tempdir()) ## Sequence Alignement pdbs <- pdbaln(files, outfile = tempfile()) ## Normal mode analysis on aligned data modes <- nma(pdbs, rm.gaps=TRUE) ## Dynamic Cross Correlation Matrix cijs <- dccm(modes)$all.dccm ## Correlation Network nets <- cna(cijs, cutoff.cij=0.3) ## Align network communities nets.aln <- community.aln(nets) ## plot all-residue and coarse-grained (community) networks pdb <- pdbs2pdb(pdbs, inds=1, rm.gaps=TRUE)[[1]] op <- par(no.readonly=TRUE) # before alignment par(mar=c(0.1, 0.1, 0.1, 0.1), mfrow=c(2,2)) invisible( lapply(nets, function(x) plot(x, layout=layout.cna(x, pdb=pdb, k=3, full=TRUE)[, 1:2], full=TRUE)) ) invisible( lapply(nets, function(x) plot(x, layout=layout.cna(x, pdb=pdb, k=3)[, 1:2])) ) # after alignment par(mar=c(0.1, 0.1, 0.1, 0.1), mfrow=c(2,2)) invisible( lapply(nets.aln, function(x) plot(x, layout=layout.cna(x, pdb=pdb, k=3, full=TRUE)[, 1:2], full=TRUE)) ) invisible( lapply(nets.aln, function(x) plot(x, layout=layout.cna(x, pdb=pdb, k=3)[, 1:2])) ) par(op) } } } } \seealso{ \code{\link{cna}}, \code{\link{plot.cna}}, \code{\link{vmd.cna}} } \keyword{analysis} bio3d/man/write.pqr.Rd0000644000176200001440000000636414707230357014270 0ustar liggesusers\name{write.pqr} \alias{write.pqr} \title{ Write PQR Format Coordinate File } \description{ Write a PQR file for a given \sQuote{xyz} Cartesian coordinate vector or matrix. } \usage{ write.pqr(pdb = NULL, xyz = pdb$xyz, resno = NULL, resid = NULL, eleno = NULL, elety = NULL, chain = NULL, o = NULL, b = NULL, append = FALSE, verbose = FALSE, chainter = FALSE, file = "R.pdb") } \arguments{ \item{pdb}{ a PDB structure object obtained from \code{\link{read.pdb}} or \code{\link{read.pqr}}. } \item{xyz}{ Cartesian coordinates as a vector or 3xN matrix. } \item{resno}{ vector of residue numbers of length equal to length(xyz)/3. } \item{resid}{ vector of residue types/ids of length equal to length(xyz)/3. } \item{eleno}{ vector of element/atom numbers of length equal to length(xyz)/3. } \item{elety}{ vector of element/atom types of length equal to length(xyz)/3. } \item{chain}{ vector of chain identifiers with length equal to length(xyz)/3. } \item{o}{ atomic partial charge values of length equal to length(xyz)/3. } \item{b}{ atomic radii values of length equal to length(xyz)/3. } \item{append}{ logical, if TRUE output is appended to the bottom of an existing file (used primarly for writing multi-model files). } \item{verbose}{ logical, if TRUE progress details are printed. } \item{chainter}{ logical, if TRUE a TER line is inserted between chains. } \item{file}{ the output file name. } } \details{ PQR file format is basically the same as PDB format except for the fields of \code{o} and \code{b}. In PDB, these two fields are filled with \sQuote{Occupancy} and \sQuote{B-factor} values, respectively, with each field 6-column long. In PQR, they are atomic \sQuote{partial charge} and \sQuote{radii} values, respectively, with each field 8-column long. Only the \code{xyz} argument is strictly required. Other arguments assume a default poly-ALA C-alpha structure with a blank chain id, atomic charge values of 0.00 and atomic radii equal to 1.00. If the input argument \code{xyz} is a matrix then each row is assumed to be a different structure/frame to be written to a \dQuote{multimodel} PDB file, with frames separated by \dQuote{END} records. } \value{ Called for its effect. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. For a description of PDB format (version3.3) see:\cr \url{http://www.wwpdb.org/documentation/format33/v3.3.html}. } \author{ Barry Grant with contributions from Joao Martins. } \note{ Check that: (1) \code{chain} is one character long e.g. \dQuote{A}, and (2) \code{resno} and \code{eleno} do not exceed \dQuote{9999}. } \seealso{ \code{\link{read.pqr}}, \code{\link{read.pdb}}, \code{\link{write.pdb}}, \code{\link{read.dcd}}, \code{\link{read.fasta.pdb}}, \code{\link{read.fasta}} } \examples{ \donttest{ # PDB server connection required - testing excluded try({ # Read a PDB file pdb <- read.pdb( "1bg2" ) # Write out in PQR format outfile = file.path(tempdir(), "eg.pqr") write.pqr(pdb=pdb, file = outfile) invisible( cat("\nSee the output file:", outfile, sep = "\n") ) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } \keyword{ IO } bio3d/man/inner.prod.Rd0000644000176200001440000000227614707230357014411 0ustar liggesusers\name{inner.prod} \alias{inner.prod} \title{ Mass-weighted Inner Product } \description{ Inner product of vectors (mass-weighted if requested). } \usage{ inner.prod(x, y, mass=NULL) } \arguments{ \item{x}{ a numeric vector or matrix. } \item{y}{ a numeric vector or matrix. } \item{mass}{ a numeric vector containing the atomic masses for weighting. } } \details{ This function calculates the inner product between two vectors, or alternatively, the column-wise vector elements of matrices. If atomic masses are provided, the dot products will be mass-weighted. See examples for more details. } \value{ Returns the inner product(s). } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{nma} }, \code{\link{normalize.vector} } } \examples{ ## Matrix operations x <- 1:3 y <- diag(x) z <- matrix(1:9, ncol = 3, nrow = 3) inner.prod(x,y) inner.prod(y,z) ## Application to normal modes pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) ## Calculate (vibrational) normal modes modes <- nma(pdb) ## Check for orthogonality inner.prod(modes$U[,7], modes$U[,8]) } \keyword{ utilities } bio3d/man/load.enmff.Rd0000644000176200001440000001147614707230357014346 0ustar liggesusers\name{load.enmff} \alias{load.enmff} \alias{ff.calpha} \alias{ff.anm} \alias{ff.pfanm} \alias{ff.sdenm} \alias{ff.reach} \alias{ff.aaenm} \alias{ff.aaenm2} \title{ ENM Force Field Loader } \description{ Load force field for elastic network normal mode calculation. } \usage{ load.enmff(ff = 'calpha') ff.calpha(r, rmin=2.9, ...) ff.anm(r, cutoff=15, gamma=1, ...) ff.pfanm(r, cutoff=NULL, ...) ff.sdenm(r, atom.id, pdb, ...) ff.reach(r, atom.id, ...) ff.aaenm(r, ...) ff.aaenm2(r, atom.id, pdb, ...) } \arguments{ \item{ff}{ a character string specifying the force field to use: \sQuote{calpha}, \sQuote{anm}, \sQuote{pfanm}, \sQuote{reach}, or \sQuote{sdenm}. } \item{r}{ a numeric vector of c-alpha distances. } \item{rmin}{ lowest allowed atom-atom distance for the force constant calculation. The default of 2.9A is based on an evaluation of 24 high-resolution X-ray structures (< 1A). } \item{cutoff}{ numerical, cutoff for pair-wise interactions. } \item{gamma}{ numerical, global scaling factor. } \item{atom.id}{ atomic index. } \item{pdb}{ a \code{pdb} object as obtained from function \code{read.pdb}. } \item{...}{ additional arguments passed to and from functions. } } \details{ This function provides a collection of elastic network model (ENM) force fields for normal modes analysis (NMA) of protein structures. It returns a function for calculating the residue-residue spring force constants. The \sQuote{calpha} force field - originally developed by Konrad Hinsen - is the recommended one for most applications. It employs a spring force constant differentiating between nearest-neighbour pairs along the backbone and all other pairs. The force constant function was parameterized by fitting to a local minimum of a crambin model using the AMBER94 force field. The implementation of the \sQuote{ANM} (Anisotropic Network Model) force field originates from the lab of Ivet Bahar. It uses a simplified (step function) spring force constant based on the pair-wise distance. A variant of this from the Jernigan lab is the so-called \sQuote{pfANM} (parameter free ANM) with interactions that fall off with the square of the distance. The \sQuote{sdENM} (by Dehouck and Mikhailov) employs residue specific spring force constants. It has been parameterized through a statistical analysis of a total of 1500 NMR ensembles. The \sQuote{REACH} force field (by Moritsugu and Smith) is parameterized based on variance-covariance matrices obtained from MD simulations. It employs force constants that fall off exponentially with distance for non-bonded pairs. The all-atom ENM force fields (\sQuote{aaenm} and \sQuote{aaenm2}) was obtained by fitting to a local energy minimum of a crambin model derived from the AMBER99SB force field (same approach as in Hinsen et al 2000). It employs a pair force constant function which falls as r^-6. \sQuote{aanma2} employs additonally specific force constants for covalent and intra-residue atom pairs. See also \code{\link{aanma}} for more details. See references for more details on the individual force fields. } \note{ The arguments \sQuote{atom.id} and \sQuote{pdb} are used from within function \sQuote{build.hessian} for functions that are not simply a function of the pair-wise distance. e.g. the force constants in the \sQuote{sdENM} model computes the force constants based on a function of the residue types and calpha distance. } \value{ \sQuote{load.enmff} returns a function for calculating the spring force constants. The \sQuote{ff} functions returns a numeric vector of residue-residue spring force constants. } \references{ Skjaerven, L. et al. (2014) \emph{BMC Bioinformatics} \bold{15}, 399. Hinsen, K. et al. (2000) \emph{Chemical Physics} \bold{261}, 25--37. Atilgan, A.R. et al. (2001) \emph{Biophysical Journal} \bold{80}, 505--515. Dehouck Y. & Mikhailov A.S. (2013) \emph{PLoS Comput Biol} \bold{9}:e1003209. Moritsugu K. & Smith J.C. (2008) \emph{Biophysical Journal} \bold{95}, 1639--1648. Yang, L. et al. (2009) \emph{PNAS} \bold{104}, 12347-52. Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{nma}}, \code{\link{build.hessian}} } \examples{ ## Load the c-alpha force field pfc.fun <- load.enmff('calpha') ## Calculate the pair force constant for a set of C-alpha distances force.constants <- pfc.fun( seq(4,8, by=0.5) ) ## Calculate the complete spring force constant matrix ## Fetch PDB pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) ## Fetch only c-alpha coordinates ca.inds <- atom.select(pdb, 'calpha') xyz <- pdb$xyz[ca.inds$xyz] ## Calculate distance matrix dists <- dm.xyz(xyz, mask.lower=FALSE) ## all pair-wise spring force constants fc.matrix <- apply(dists, 1, pfc.fun) } \keyword{ utilities } bio3d/man/mktrj.Rd0000644000176200001440000000711314707230357013455 0ustar liggesusers\name{mktrj} \alias{mktrj} \alias{mktrj.pca} \alias{mktrj.nma} \alias{mktrj.enma} \title{ PCA / NMA Atomic Displacement Trajectory } \description{ Make a trajectory of atomic displacments along a given principal component / normal mode. } \usage{ mktrj(...) \method{mktrj}{pca}(pca = NULL, pc = 1, mag = 1, step = 0.125, file = NULL, pdb = NULL, rock=TRUE, ...) \method{mktrj}{nma}(nma = NULL, mode = 7, mag = 10, step = 1.25, file = NULL, pdb = NULL, rock=TRUE, ...) \method{mktrj}{enma}(enma = NULL, pdbs = NULL, s.inds = NULL, m.inds = NULL, mag = 10, step = 1.25, file = NULL, rock = TRUE, ncore = NULL, ...) } \arguments{ \item{pca}{ an object of class \code{"pca"} as obtained with function \code{\link{pca.xyz}} or \code{\link{pca}}.} \item{nma}{ an object of class \code{"nma"} as obtained with function \code{\link{nma.pdb}}.} \item{enma}{ an object of class \code{"enma"} as obtained with function \code{\link{nma.pdbs}}.} \item{pc}{ the PC number along which displacements should be made.} \item{mag}{ a magnification factor for scaling the displacements. } \item{step}{ the step size by which to increment along the pc/mode. } \item{file}{ a character vector giving the output PDB file name. } \item{pdb}{ an object of class \code{"pdb"} as obtained from \code{\link{read.pdb}} or class \code{"pdbs"} as obtained from \code{\link{read.fasta.pdb}}. If not NULL, used as reference to write the PDB file. } \item{rock}{ logical, if TRUE the trajectory rocks. } \item{mode}{ the mode number along which displacements should be made.} \item{pdbs}{ a list object of class \code{"pdbs"} (obtained with \code{\link{pdbaln}} or \code{\link{read.fasta.pdb}}) which corresponds to the \code{"enma"} object.} \item{s.inds}{ index or indices pointing to the structure(s) in the \code{enma} object for which the trajectory shall be generated. } \item{m.inds}{ the mode number(s) along which displacements should be made. } \item{ncore }{ number of CPU cores used to do the calculation. \code{ncore>1} requires package \sQuote{parallel} installed. } \item{\dots}{ additional arguments passed to and from functions (e.g. to function \code{\link{write.pdb}}). } } \details{ Trajectory frames are built from reconstructed Cartesian coordinates produced by interpolating from the mean structure along a given \code{pc} or \code{mode}, in increments of \code{step}. An optional magnification factor can be used to amplify displacements. This involves scaling by \code{mag}-times the standard deviation of the conformer distribution along the given \code{pc} (i.e. the square root of the associated eigenvalue). } \note{ Molecular graphics software such as VMD or PyMOL is useful for viewing trajectories see e.g: \cr \url{http://www.ks.uiuc.edu/Research/vmd/}. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant, Lars Skjaerven } \seealso{ \code{\link{pca}}, \code{\link{nma}}, \code{\link{nma.pdbs}}, \code{\link{pymol.modes}}. } \examples{ \dontrun{ ##- PCA example attach(transducin) # Calculate principal components pc.xray <- pca(pdbs, fit=TRUE) # Write PC trajectory of pc=1 outfile = tempfile() a <- mktrj(pc.xray, file = outfile) outfile detach(transducin) ##- NMA example ## Fetch stucture pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) ## Calculate (vibrational) normal modes modes <- nma(pdb) ## Visualize modes outfile = file.path(tempdir(), "mode_7.pdb") mktrj(modes, mode=7, pdb=pdb, file = outfile) outfile } } \keyword{ utilities } bio3d/man/orient.pdb.Rd0000644000176200001440000000303514707230357014371 0ustar liggesusers\name{orient.pdb} \alias{orient.pdb} \title{ Orient a PDB Structure } \description{ Center, to the coordinate origin, and orient, by principal axes, the coordinates of a given PDB structure or xyz vector. } \usage{ orient.pdb(pdb, atom.subset = NULL, verbose = TRUE) } \arguments{ \item{pdb}{ a pdb data structure obtained from \code{\link{read.pdb}} or a vector of \sQuote{xyz} coordinates. } \item{atom.subset}{ a subset of atom positions to base orientation on. } \item{verbose}{ print dimension details. } } \value{ Returns a numeric vector of re-oriented coordinates. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \note{ Centering and orientation can be restricted to a \code{atom.subset} of atoms. } \seealso{ \code{\link{read.pdb}}, \code{\link{write.pdb}}, \code{\link{fit.xyz}}, \code{\link{rot.lsq}} , \code{\link{atom.select}}} \examples{ \donttest{ # PDB server connection required - testing excluded try({ pdb <- read.pdb( "1bg2" ) xyz <- orient.pdb(pdb) #write.pdb(pdb, xyz = xyz, file = "mov1.pdb") # Based on C-alphas inds <- atom.select(pdb, "calpha") xyz <- orient.pdb(pdb, atom.subset=inds$atom) #write.pdb(pdb, xyz = xyz, file = "mov2.pdb") # Based on a central Beta-strand inds <- atom.select(pdb, resno=c(224:232), elety='CA') xyz <- orient.pdb(pdb, atom.subset=inds$atom) #write.pdb(pdb, xyz = xyz, file = "mov3.pdb") }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } \keyword{ manip } bio3d/man/dccm.pca.Rd0000644000176200001440000000501414707230357013774 0ustar liggesusers\name{dccm.pca} \alias{dccm.pca} \title{ Dynamical Cross-Correlation Matrix from Principal Component Analysis } \description{ Calculate the cross-correlation matrix from principal component analysis (PCA). } \usage{ \method{dccm}{pca}(x, pc = NULL, method = c("pearson", "lmi"), ncore = NULL, \dots) } \arguments{ \item{x}{ an object of class \code{pca} as obtained from function \code{pca.xyz}. } \item{pc}{ numerical, indices of PCs to be included in the calculation. If all negative, PCs complementary to \code{abs(pc)} are included. } \item{method}{ method to calculate the cross-correlation. Currently supports Pearson and linear mutual information (LMI). } \item{ncore}{ number of CPU cores used to do the calculation. By default (\code{ncore = NULL}), use all available cores detected. } \item{\dots}{ Additional arguments to be passed (currently ignored). } } \details{ This function calculates the cross-correlation matrix from principal component analysis (PCA) obtained from \code{pca.xyz} of a set of protein structures. It is an alternative way to calculate correlation in addition to the conventional way from xyz coordinates directly. But, in this new way one can freely chooses the PCs to be included in the calculation (e.g. for filtering out PCs with small eigenvalues). } \value{ Returns a cross-correlation matrix with values in a range from -1 to 1 (Pearson) or from 0 to 1 (LMI). } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Xin-Qiu Yao} \seealso{ \code{\link{pca.xyz}}, \code{\link{plot.dccm}}, \code{\link{dccm}}, \code{\link{dccm.xyz}}, \code{\link{dccm.nma}}, \code{\link{dccm.enma}}. } \examples{ \donttest{ if(!requireNamespace("lattice", quietly=TRUE)) { message("Need lattice installed to run this example") } else { ##-- Read example trajectory file trtfile <- system.file("examples/hivp.dcd", package="bio3d") trj <- read.dcd(trtfile) ## Read the starting PDB file to determine atom correspondence pdbfile <- system.file("examples/hivp.pdb", package="bio3d") pdb <- read.pdb(pdbfile) ## Select residues 24 to 27 and 85 to 90 in both chains inds <- atom.select(pdb, resno=c(24:27,85:90), elety='CA') ## lsq fit of trj on pdb xyz <- fit.xyz(pdb$xyz, trj, fixed.inds=inds$xyz, mobile.inds=inds$xyz) ## Do PCA pca <- pca.xyz(xyz) ## DCCM: only use first 10 PCs cij <- dccm(pca, pc = c(1:10)) ## Plot DCCM plot(cij) ## DCCM: remove first 10 PCs cij <- dccm(pca, pc = -c(1:10)) ## Plot DCCM plot(cij) } } } \keyword{ analysis } bio3d/man/check.utility.Rd0000644000176200001440000000142014707230357015100 0ustar liggesusers\name{check.utility} \alias{check.utility} \title{ Check on Missing Utility Programs } \description{ Internally used in examples, tests, or vignettes. } \usage{ check.utility(x = c("muscle", "clustalo", "dssp", "stride", "mustang", "makeup"), quiet = TRUE) } \arguments{ \item{x}{ Names of one or more utility programs to check. } \item{quiet}{ logical, if TRUE no warning or message printed. } } \details{ Check if requested utility programs are availabe or not. } \value{ logical, TRUE if programs are available and FALSE if any one of them is missing. } \examples{ check.utility(c("muscle", "dssp"), quiet=FALSE) if(!check.utility("mustang")) cat(" The utility program, MUSTANG, is missing on your system\n") } \keyword{ utilities } bio3d/man/aa.table.Rd0000644000176200001440000000232014707230357013770 0ustar liggesusers\name{aa.table} \alias{aa.table} \docType{data} \title{ Table of Relevant Amino Acids } \description{ This data set provides the atomic masses of a selection of amino acids regularly occuring in proteins. } \usage{ aa.table } \format{ A data frame with the following components. \describe{ \item{\code{aa3}}{a character vector containing three-letter amino acid code.} \item{\code{aa1}}{a character vector containing one-letter amino acid code.} \item{\code{mass}}{a numeric vector containing the mass of the respective amino acids. } \item{\code{formula}}{a character vector containing the formula of the amino acid in which the mass calculat was based. } \item{\code{name}}{a character vector containing the full names of the respective amino acids. } } } \seealso{ \code{\link{aa2mass}}, \code{\link{aa.index}}, \code{\link{atom.index}}, \code{\link{elements}}, } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \examples{ data(aa.table) aa.table ## table look up aa.table["HIS", ] ## read PDB, and fetch residue masses pdb <- read.pdb(system.file("examples/1hel.pdb", package="bio3d")) aa2mass(pdb) } \keyword{datasets} bio3d/man/aln2html.Rd0000644000176200001440000000371414707230357014052 0ustar liggesusers\name{aln2html} \alias{aln2html} \title{ Create a HTML Page For a Given Alignment } \description{ Renders a sequence alignment as coloured HTML suitable for viewing with a web browser. } \usage{ aln2html(aln, file="alignment.html", Entropy=0.5, append=TRUE, caption.css="color: gray; font-size: 9pt", caption="Produced by Bio3D", fontsize="11pt", bgcolor=TRUE, colorscheme="clustal") } \arguments{ \item{aln}{ an alignment list object with \code{id} and \code{ali} components, similar to that generated by \code{\link{read.fasta}}. } \item{file}{ name of output html file. } \item{Entropy}{ conservation \sQuote{cuttoff} value below which alignment columns are not coloured. } \item{append}{ logical, if TRUE output will be appended to \code{file}; otherwise, it will overwrite the contents of \code{file}. } \item{caption.css}{ a character string of css options for rendering \sQuote{caption} text. } \item{caption}{ a character string of text to act as a caption. } \item{fontsize}{ the font size for alignment characters. } \item{bgcolor}{ background colour. } \item{colorscheme}{ conservation colouring scheme, currently only \dQuote{clustal} is supported with alternative arguments resulting in an entropy shaded alignment.} } \value{ Called for its effect. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \note{ Your web browser should support style sheets. } \seealso{ \code{\link{read.fasta}}, \code{\link{write.fasta}}, \code{\link{seqaln}} } \examples{ \dontrun{ ## Read an example alignment aln <- read.fasta(system.file("examples/hivp_xray.fa",package="bio3d")) ## Produce a HTML file for this alignment aln2html(aln, append=FALSE, file=file.path("eg.html")) aln2html(aln, colorscheme="ent", file="eg.html") ## View/open the file in your web browser #browseURL("eg.html") } } \keyword{ IO } bio3d/man/bio3d.package.Rd0000644000176200001440000001056714707230357014727 0ustar liggesusers\name{bio3d-package} \alias{bio3d-package} \alias{bio3d} \docType{package} \title{ Biological Structure Analysis } \description{ Utilities for the analysis of protein structure and sequence data. } \details{ \tabular{ll}{ Package: \tab bio3d\cr Type: \tab Package\cr Version: \tab 2.4-5\cr Date: \tab 2024-10-25\cr License: \tab GPL version 2 or newer\cr URL: \tab \url{http://thegrantlab.org/bio3d/}\cr } Features include the ability to read and write structure (\code{\link{read.pdb}}, \code{\link{write.pdb}}, \code{\link{read.fasta.pdb}}), sequence (\code{\link{read.fasta}}, \code{\link{write.fasta}}) and dynamics trajectory data (\code{\link{read.dcd}}, \code{\link{read.ncdf}}, \code{\link{write.ncdf}}). Perform sequence and structure database searches (\code{\link{blast.pdb}}, \code{\link{hmmer}}), atom summaries (\code{\link{summary.pdb}}), atom selection (\code{\link{atom.select}}), alignment (\code{\link{pdbaln}}, \code{\link{seqaln}}, \code{\link{mustang}}) superposition (\code{\link{rot.lsq}}, \code{\link{fit.xyz}}), \code{\link{pdbfit}}), rigid core identification (\code{\link{core.find}}, \code{\link{plot.core}}, \code{\link{fit.xyz}}), dynamic domain analysis (\code{\link{geostas}}), torsion/dihedral analysis (\code{\link{torsion.pdb}}, \code{\link{torsion.xyz}}), clustering (via \code{\link{hclust}}), principal component analysis (\code{\link{pca.xyz}}, \code{\link{pca.pdbs}}, \code{\link{pca.tor}}, \code{\link{plot.pca}}, \code{\link{plot.pca.loadings}}, \code{\link{mktrj.pca}}), dynamical cross-correlation analysis (\code{\link{dccm}}, \code{\link{plot.dccm}}) and correlation network analysis (\code{\link{cna}}, \code{\link{plot.cna}}, \code{\link{cnapath}}) of structure data. Perform conservation analysis of sequence (\code{\link{seqaln}}, \code{\link{conserv}}, \code{\link{seqidentity}}, \code{\link{entropy}}, \code{\link{consensus}}) and structural (\code{\link{pdbaln}}, \code{\link{rmsd}}, \code{\link{rmsf}}, \code{\link{core.find}}) data. Perform normal mode analysis (\code{\link{nma}}, \code{\link{build.hessian}}), ensemble normal mode analysis (\code{\link{nma.pdbs}}), mode comparison (\code{\link{rmsip}}) and (\code{\link{overlap}}), atomic fluctuation prediction (\code{\link{fluct.nma}}), cross-correlation analysis (\code{\link{dccm.nma}}), cross-correlation visualization (\code{\link{pymol.dccm}}), deformation analysis (\code{\link{deformation.nma}}), and mode visualization (\code{\link{pymol.modes}}, \code{\link{mktrj.nma}}). In addition, various utility functions are provided to facilitate manipulation and analysis of biological sequence and structural data (e.g. \code{\link{get.pdb}}, \code{\link{get.seq}}, \code{\link{aa123}}, \code{\link{aa321}}, \code{\link{pdbseq}}, \code{\link{aln2html}}, \code{\link{atom.select}}, \code{\link{rot.lsq}}, \code{\link{fit.xyz}}, \code{\link{is.gap}}, \code{\link{gap.inspect}}, \code{\link{orient.pdb}}, \code{\link{pairwise}}, \code{\link{plot.bio3d}}, \code{\link{plot.nma}}, \code{\link{plot.blast}}, \code{\link{biounit}}, etc.). } \note{ The latest version, package vignettes and documentation with worked example outputs can be obtained from the bio3d website:\cr \url{http://thegrantlab.org/bio3d/}.\cr \url{http://thegrantlab.org/bio3d/reference/}.\cr \url{https://bitbucket.org/Grantlab/bio3d/}. } \author{ Barry Grant Xin-Qiu Yao Lars Skjaerven Julien Ide } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. Skjaerven, L. et al. (2014) \emph{BMC Bioinformatics} \bold{15}, 399. Grant, B.J. et al. (2021) \emph{Protein Science} \bold{30}, 20--30. } \keyword{ documentation } \examples{ help(package="bio3d") # list the functions within the package #lbio3d() # list bio3d function names only ## Or visit: ## http://thegrantlab.org/bio3d/reference/ ## See the individual functions for further documentation and examples, e.g. #help(read.pdb) ## Or online: ## http://thegrantlab.org/bio3d/reference/read.pdb.html \dontrun{ ##-- See the list of Bio3D demos demo(package="bio3d") ## Try some out, e.g: demo(pdb) # PDB Reading, Manipulation, Searching and Alignment demo(pca) # Principal Component Analysis demo(md) # Molecular Dynamics Trajectory Analysis demo(nma) # Normal Mode Analysis ## See package vignettes and tutorals online: ## http://thegrantlab.org/bio3d/articles/ } } bio3d/man/is.xyz.Rd0000644000176200001440000000131614707230357013571 0ustar liggesusers\name{is.xyz} \alias{is.xyz} \alias{as.xyz} \title{ Is an Object of Class \sQuote{xyz}? } \description{ Checks whether its argument is an object of class \sQuote{xyz}. } \usage{ is.xyz(x) as.xyz(x) } \arguments{ \item{x}{ an R object to be tested } } \details{ Tests if x is an object of class \sQuote{xyz}, i.e. if x has a \dQuote{class} attribute equal to \code{xyz}. } \value{ TRUE if x is an object of class \sQuote{xyz} and FALSE otherwise } \seealso{ \code{\link{read.pdb}}, \code{\link{read.ncdf}}, \code{\link{read.dcd}}, \code{\link{fit.xyz}} } \examples{ # Read a PDB file pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) is.xyz(pdb$xyz) } \keyword{ classes } bio3d/man/binding.site.Rd0000644000176200001440000000673214707230357014711 0ustar liggesusers\name{binding.site} \alias{binding.site} \title{ Binding Site Residues } \description{ Determines the interacting residues between two PDB entities. } \usage{ binding.site(a, b=NULL, a.inds=NULL, b.inds=NULL, cutoff=5, hydrogens=TRUE, byres=TRUE, verbose=FALSE) } \arguments{ \item{a}{ an object of class \code{pdb} as obtained from function \code{read.pdb}. } \item{b}{ an object of class \code{pdb} as obtained from function \code{read.pdb}. } \item{a.inds}{ atom and xyz coordinate indices obtained from \code{atom.select} that selects the elements of \code{a} upon which the calculation should be based.} \item{b.inds}{ atom and xyz coordinate indices obtained from \code{atom.select} that selects the elements of \code{b} upon which the calculation should be based.} \item{cutoff}{ distance cutoff } \item{hydrogens}{ logical, if FALSE hydrogen atoms are omitted from the calculation. } \item{byres}{ logical, if TRUE all atoms in a contacting residue is returned. } \item{verbose}{ logical, if TRUE details of the selection are printed. } } \details{ This function reports the residues of \code{a} closer than a cutoff to \code{b}. This is a wrapper function calling the underlying function \code{dist.xyz}. If \code{b=NULL} then \code{b.inds} should be elements of \code{a} upon which the calculation is based (typically chain A and B of the same PDB file). If \code{b=a.inds=b.inds=NULL} the function will use \code{\link{atom.select}} with arguments \code{"protein"} and \code{"ligand"} to determine receptor and ligand, respectively. } \value{ Returns a list with the following components: \item{inds}{ object of class \code{select} with \code{atom} and \code{xyz} components. } \item{inds$atom}{ atom indices of \code{a}. } \item{inds$xyz}{ xyz indices of \code{a}. } \item{resnames}{ a character vector of interacting residues. } \item{resno}{ a numeric vector of interacting residues numbers. } \item{chain}{ a character vector of the associated chain identifiers of \code{"resno"}. } \item{call}{ the matched call. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{read.pdb}}, \code{\link{atom.select}}, \code{\link{dm}} } \examples{ \donttest{ # PDB server connection required - testing excluded try({ pdb <- read.pdb('3dnd') ## automatically identify 'protein' and 'ligand' bs <- binding.site(pdb) bs$resnames #pdb$atom[bs$inds$atom, ] # provide indices rec.inds <- atom.select(pdb, chain="A", resno=1:350) lig.inds <- atom.select(pdb, chain="A", resno=351) bs <- binding.site(pdb, a.inds=rec.inds, b.inds=lig.inds) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } \dontrun{ # Interaction between peptide and protein rec.inds <- atom.select(pdb, chain='A', resno=c(1:350)) lig.inds <- atom.select(pdb, chain='I', resno=c(5:24)) bs <- binding.site(pdb, a.inds=rec.inds, b.inds=lig.inds) } \donttest{ # Redundant testing excluded try({ # Interaction between two PDB entities #rec <- read.pdb("receptor.pdb") #lig <- read.pdb("ligand.pdb") rec <- trim.pdb(pdb, inds=rec.inds) lig <- trim.pdb(pdb, inds=lig.inds) bs <- binding.site(rec, lig, hydrogens=FALSE) }, silent=TRUE) } } \keyword{ utilities } bio3d/man/vmd.cna.Rd0000644000176200001440000001155014707230357013654 0ustar liggesusers\name{vmd} \alias{vmd} \alias{vmd.cna} \alias{vmd.ecna} \alias{vmd.cnapath} \alias{vmd.ecnapath} \title{ View CNA Protein Structure Network Community Output in VMD } \description{ This function generates a VMD scene file and a PDB file that can be read and rendered by the VMD molecular viewer. Chose \sQuote{color by chain} to see corresponding regions of structure colored by community along with the community protein structure network. } \usage{ vmd(\dots) \method{vmd}{cna}(x, pdb, layout = layout.cna(x, pdb, k=3), col.sphere=NULL, col.lines = "silver", weights = NULL, radius = table(x$communities$membership)/5, alpha = 1, vmdfile = "network.vmd", pdbfile = "network.pdb", full = FALSE, launch = FALSE, exefile=NULL, \dots) \method{vmd}{ecna}(x, n=1, \dots) \method{vmd}{cnapath}(x, pdb, out.prefix = "vmd.cnapath", spline = FALSE, colors = c("blue", "red"), launch = FALSE, exefile=NULL, mag=1.0, \dots) \method{vmd}{ecnapath}(x, \dots) } \arguments{ \item{x}{A 'cna' or 'cnapath' class object, or a list of such objects, as obtained from functions \code{cna} or \code{cnapath}. } \item{n}{ The index to indicate which network or path to view with \code{vmd}. } \item{pdb}{A 'pdb' class object such as obtained from \sQuote{read.pdb} function. } \item{layout}{ A numeric matrix of Nx3 XYZ coordinate matrix, where N is the number of community spheres to be drawn. } \item{col.sphere}{ A numeric vector containing the sphere colors. } \item{col.lines}{ A character object specifying the color of the edges (default 'silver'). Must use VMD colors names. } \item{weights}{ A numeric vector specifying the edge width. Default is taken from E(x$community.network)$weight. } \item{radius}{ A numeric vector containing the sphere radii. Default is taken from the number of community members divided by 5. } \item{alpha}{ A single element numeric vector specifying the VMD alpha transparency parameter. Default is set to 1. } \item{vmdfile}{ A character element specifying the output VMD scene file name that will be loaded in VMD. } \item{pdbfile}{ A character element specifying the output pdb file name to be loaded in VMD. } \item{full}{ Logical, if TRUE the full all-atom network rather than the clustered community network will be drawn. Intra community edges are colored according to the community membership, while inter community edges are thicker and colored black. } \item{launch}{ Logical. If TRUE, a VMD session will be started with the output of \sQuote{vmd.cna}. } \item{out.prefix}{ Prefix for the names of output files, \sQuote{vmd.cnapath.vmd} and \sQuote{vmd.cnapath.pdb}. } \item{spline}{ Logical, if TRUE all paths are displayed as spline curves. } \item{colors}{ Character vector or integer scalar, define path colors. If a character vector, passed to \code{\link{colorRamp}} function to generate the color scales. If an integer, color all paths the same way with VMD color ID equal to the integer. } \item{exefile}{ file path to the \sQuote{VMD} program on your system (i.e. how is \sQuote{VMD} invoked). If \code{NULL}, use OS-dependent default path to the program. } \item{mag}{ A numeric factor to scale the maximal thickness of paths. } \item{\dots}{ additional arguments passed to the function \code{\link{colorRamp}} (in \code{vmd.cnapath}). } } \details{ This function generates a scaled sphere (communities) and stick (edges) representation of the community network along with the corresponding protein structure divided into chains, one chain for each community. The sphere radii are proportional to the number of community members and the edge widths correspond to network edge weights. } \value{ Two files are generated as output. A pdb file with the residue chains assigned according to the community and a text file containing The drawing commands for the community representation. } \references{ Humphrey, W., Dalke, A. and Schulten, K., ``VMD - Visual Molecular Dynamics'' J. Molec. Graphics 1996, 14.1, 33-38. } \author{ Barry Grant} \examples{ \dontrun{ if (!requireNamespace("igraph", quietly = TRUE)) { message('Need igraph installed to run this example') } else { # Load the correlation network from MD data attach(hivp) # Read the starting PDB file to determine atom correspondence pdbfile <- system.file("examples/hivp.pdb", package="bio3d") pdb <- read.pdb(pdbfile) # View cna vmd.cna(net, pdb, launch=FALSE) ## within VMD set 'coloring method' to 'Chain' and 'Drawing method' to Tube ##-- From NMA pdb.gdi = read.pdb("1KJY") pdb.gdi = trim.pdb(pdb.gdi, inds=atom.select(pdb.gdi, chain="A", elety="CA")) modes.gdi = nma(pdb.gdi) cij.gdi = dccm(modes.gdi) net.gdi = cna(cij.gdi, cutoff.cij=0.35) #vmd.cna(net.gdi, pdb.gdi, alpha = 0.7, launch=TRUE) detach(hivp) } } } \keyword{ utility } bio3d/man/chain.pdb.Rd0000644000176200001440000000365214707230357014160 0ustar liggesusers\name{chain.pdb} \alias{chain.pdb} \title{ Find Possible PDB Chain Breaks } \description{ Find possible chain breaks based on connective Calpha or peptide bond (C-N) atom separation. } \usage{ chain.pdb(pdb, ca.dist = 4, bond=TRUE, bond.dist=1.5, blank = "X", rtn.vec = TRUE) } \arguments{ \item{pdb}{ a PDB structure object obtained from \code{\link{read.pdb}}. } \item{ca.dist}{ the maximum distance that separates Calpha atoms considered to be in the same chain. } \item{bond}{ logical, if TRUE inspect peptide bond (C-N) instead of Calpha-Calpha distances whenever possible.} \item{bond.dist}{ cutoff value for C-N distance separation. } \item{blank}{ a character to assign non-protein atoms. } \item{rtn.vec}{ logical, if TRUE then the one-letter chain vector consisting of the 26 upper-case letters of the Roman alphabet is returned. } } \details{ This is a basic function for finding possible chain breaks in PDB structure files, i.e. connective Calpha atoms that are further than \code{ca.dist} apart or peptide bond (C-N) atoms separated by at least \code{bond.dist}. } \value{ Prints basic chain information and if \code{rtn.vec} is TRUE returns a character vector of chain ids consisting of the 26 upper-case letters of the Roman alphabet plus possible \code{blank} entries for non-protein atoms. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \seealso{ \code{\link{read.pdb}}, \code{\link{atom.select}}, \code{\link{trim.pdb}}, \code{\link{write.pdb}} } \examples{ \donttest{ # PDB server connection required - testing excluded try({ full.pdb <- read.pdb( get.pdb("5p21", URLonly=TRUE) ) inds <- atom.select(full.pdb, resno=c(10:20,30:33)) cut.pdb <- trim.pdb(full.pdb, inds) chain.pdb(cut.pdb) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } \keyword{ utilities } bio3d/man/combine.select.Rd0000644000176200001440000000536614707230357015230 0ustar liggesusers\name{combine.select} \alias{combine.select} \title{ Combine Atom Selections From PDB Structure } \description{ Do "and", "or", or "not" set operations between two or more atom selections made by \code{\link{atom.select}} } \usage{ combine.select(sel1=NULL, sel2=NULL, \dots, operator="AND", verbose=TRUE) } \arguments{ \item{sel1}{ an atom selection object of class \code{"select"}, obtained from \code{\link{atom.select}}. } \item{sel2}{ a second atom selection object of class \code{"select"}, obtained from \code{\link{atom.select}}. } \item{\dots}{ more select objects for the set operation. } \item{operator}{ name of the set operation. } \item{verbose}{ logical, if TRUE details of the selection combination are printed. } } \details{ The value of \code{operator} should be one of following: (1) "AND", "and", or "&" for set intersect, (2) "OR", "or", "|", or "+" for set union, (3) "NOT", "not", "!", or "-" for set difference \code{sel1 - sel2 - sel3 ...}. } \value{ Returns a list of class \code{"select"} with components: \item{atom }{atom indices of selected atoms.} \item{xyz }{xyz indices of selected atoms.} \item{call }{the matched call.} } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Xin-Qiu Yao } \seealso{ \code{\link{atom.select}}, \code{\link{as.select}} \code{\link{read.pdb}}, \code{\link{trim.pdb}} } \examples{ # Read a PDB file pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) ## - Build atom selections to be operated # Select C-alpha atoms of entire system ca.global.inds <- atom.select(pdb, "calpha") # Select C-beta atoms of entire protein cb.global.inds <- atom.select(pdb, "protein", elety="CB") # Select backbone atoms of entire system bb.global.inds <- atom.select(pdb, "backbone") # Select all atoms with residue number from 46 to 50 aa.local.inds <- atom.select(pdb, resno=46:50) # Do set intersect: # - Return C-alpha atoms with residue number from 46 to 50 ca.local.inds <- combine.select(ca.global.inds, aa.local.inds) print( pdb$atom[ ca.local.inds$atom, ] ) # Do set subtract: # - Return side-chain atoms with residue number from 46 to 50 sc.local.inds <- combine.select(aa.local.inds, bb.global.inds, operator="-") print( pdb$atom[ sc.local.inds$atom, ] ) # Do set union: # - Return C-alpha and side-chain atoms with residue number from 46 to 50 casc.local.inds <- combine.select(ca.local.inds, sc.local.inds, operator="+") print( pdb$atom[ casc.local.inds$atom, ] ) # More than two selections: # - Return side-chain atoms (but not C-beta) with residue number from 46 to 50 sc2.local.inds <- combine.select(aa.local.inds, bb.global.inds, cb.global.inds, operator="-") print( pdb$atom[ sc2.local.inds$atom, ] ) } \keyword{utilities} bio3d/man/atom2xyz.Rd0000644000176200001440000000123714707230357014124 0ustar liggesusers\name{atom2xyz} \alias{atom2xyz} \alias{xyz2atom} \title{ Convert Between Atom and xyz Indices } \description{ Basic functions to convert between xyz and their corresponding atom indices. } \usage{ atom2xyz(num) xyz2atom(xyz.ind) } \arguments{ \item{num}{ a numeric vector of atom indices. } \item{xyz.ind}{ a numeric vector of xyz indices. } } \value{ A numeric vector of either xyz or atom indices. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \seealso{ \code{\link{atom.select}}, \code{\link{read.pdb}} } \examples{ xyz.ind <- atom2xyz(c(1,10,15)) xyz2atom( xyz.ind ) } \keyword{ utilities } bio3d/man/pca.Rd0000644000176200001440000000345314707230357013074 0ustar liggesusers\name{pca} \alias{pca} \title{ Principal Component Analysis } \description{ Performs principal components analysis (PCA) on biomolecular structure data. } \usage{ pca(...) } \arguments{ \item{\dots}{ arguments passed to the methods \code{pca.xyz}, \code{pca.pdbs}, etc. Typically this includes either a numeric matrix of Cartesian coordinates with a row per structure/frame (function \code{pca.xyz()}), or an object of class \code{pdbs} as obtained from function \code{pdbaln} or \code{read.fasta.pdb} (function \code{pca.pdbs()}). } } \details{ Principal component analysis can be performed on any structure dataset of equal or unequal sequence composition to capture and characterize inter-conformer relationships. This generic \code{pca} function calls the corresponding methods function for actual calculation, which is determined by the class of the input argument \code{x}. Use \code{methods("pca")} to list all the current methods for \code{pca} generic. These will include: \code{\link{pca.xyz}}, which will be used when \code{x} is a numeric matrix containing Cartesian coordinates (e.g. trajectory data). \code{\link{pca.pdbs}}, which will perform PCA on the Cartesian coordinates of a input \code{pdbs} object (as obtained from the \sQuote{read.fasta.pdb} or \sQuote{pdbaln} functions). Currently, function \code{\link{pca.tor}} should be called explicitly as there are currently no defined \sQuote{tor} object classes. See the documentation and examples for each individual function for more details and worked examples. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant, Lars Skjaerven } \seealso{ \code{\link{pca.xyz}}, \code{\link{pca.pdbs}}, \code{\link{pdbaln}}. } \keyword{ utilities } bio3d/man/read.crd.charmm.Rd0000644000176200001440000000432614707230357015261 0ustar liggesusers\name{read.crd.charmm} \alias{read.crd.charmm} \title{ Read CRD File } \description{ Read a CHARMM CARD (CRD) coordinate file. } \usage{ \method{read.crd}{charmm}(file, ext = TRUE, verbose = TRUE, ...) } \arguments{ \item{file}{ the name of the CRD file to be read. } \item{ext}{logical, if TRUE assume expanded CRD format. } \item{verbose}{ print details of the reading process. } \item{\dots}{ arguments going nowhere. } } \details{ See the function \code{\link{read.pdb}} for more details. } \value{ Returns a list with the following components: \item{atom}{ a character matrix containing all atomic coordinate data, with a row per atom and a column per record type. See below for details of the record type naming convention (useful for accessing columns). } \item{xyz }{ a numeric vector of coordinate data. } \item{calpha }{ logical vector with length equal to \code{nrow(atom)} with TRUE values indicating a C-alpha \dQuote{elety}. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. For a description of CHARMM CARD (CRD) format see:\cr \url{https://academiccharmm.org/documentation/version/c49b1/io#Coordinate}. } \author{ Barry Grant } \note{ Similar to the output of \code{\link{read.pdb}}, the column names of \code{atom} can be used as a convenient means of data access, namely: Atom serial number \dQuote{eleno}, Atom type \dQuote{elety}, Alternate location indicator \dQuote{alt}, Residue name \dQuote{resid}, Residue sequence number \dQuote{resno}, Code for insertion of residues \dQuote{insert}, Orthogonal coordinates \dQuote{x}, Orthogonal coordinates \dQuote{y}, Orthogonal coordinates \dQuote{z}, Weighting factor \dQuote{b}. See examples for further details. } \seealso{ \code{\link{write.crd}}, \code{\link{read.pdb}}, \code{\link{atom.select}}, \code{\link{write.pdb}}, \code{\link{read.dcd}}, \code{\link{read.fasta.pdb}}, \code{\link{read.fasta}} } \examples{ \dontrun{ pdb <- read.pdb("1bg2") crdfile <- paste(tempfile(), '.crd', sep='') write.crd(pdb, file=crdfile) crd <- read.crd(crdfile, ext=FALSE) ca.inds <- which(crd$calpha) crd$atom[ca.inds[1:20],c("x","y","z")] # write.pdb(crd, file=tempfile()) } } \keyword{ IO } bio3d/man/vec2resno.Rd0000644000176200001440000000240014707230357014226 0ustar liggesusers\name{vec2resno} \alias{vec2resno} \title{ Replicate Per-residue Vector Values } \description{ Replicate values in one vector based on consecutive entries in a second vector. Useful for adding per-residue data to all-atom PDB files. } \usage{ vec2resno(vec, resno) } \arguments{ \item{vec}{ a vector of values to be replicated.} \item{resno}{ a reference vector or a PDB structure object, obtained from \code{\link{read.pdb}}, upon which replication is based. } } \details{ This function can aid in mapping data to PDB structure files. For example, residue conservation per position (or any other one value per residue data) can be replicated to fit the B-factor field of an all atom PDB file which can then be rendered according to this field in a molecular viewer. A basic check is made to ensure that the number of consecutively unique entries in the reference vector equals the length of the vector to be replicated. } \value{ Returns a vector of replicated values. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \seealso{ \code{\link{read.pdb}}, \code{\link{atom.select}}, \code{\link{write.pdb}} } \examples{ vec2resno(c("a","b"), c(1,1,1,1,2,2)) } \keyword{ utilities } bio3d/man/pdb2aln.Rd0000644000176200001440000000611214707230357013646 0ustar liggesusers\name{pdb2aln} \alias{pdb2aln} \title{ Align a PDB structure to an existing alignment } \description{ Extract sequence from a PDB object and align it to an existing multiple sequence alignment that you wish keep intact. } \usage{ pdb2aln(aln, pdb, id="seq.pdb", aln.id=NULL, file="pdb2aln.fa", \dots) } \arguments{ \item{aln}{ an alignment list object with \code{id} and \code{ali} components, similar to that generated by \code{\link{read.fasta}}, \code{\link{read.fasta.pdb}}, and \code{\link{seqaln}}. } \item{pdb}{ the PDB object to be added to \code{aln}. } \item{id}{ name for the PDB sequence in the generated new alignment. } \item{aln.id}{ id of the sequence in \code{aln} that is close to the sequence from \code{pdb}. } \item{file}{ output file name for writing the generated new alignment. } \item{\dots}{ additional arguments passed to \code{\link{seqaln}}. } } \details{ The basic effect of this function is to add a PDB sequence to an existing alignement. In this case, the function is simply a wrapper of \code{\link{seq2aln}}. The more advanced (and also more useful) effect is giving complete mappings from the column indices of the original alignment (\code{aln$ali}) to atomic indices of equivalent C-alpha atoms in the \code{pdb}. These mappings are stored in the output list (see below 'Value' section). This feature is better illustrated in the function \code{\link{pdb2aln.ind}}, which calls \code{pdb2aln} and directly returns atom selections given a set of alignment positions. (See \code{\link{pdb2aln.ind}} for details. ) When \code{aln.id} is provided, the function will do pairwise alignment between the sequence from \code{pdb} and the sequence in \code{aln} with id matching \code{aln.id}. This is the best way to use the function if the protein has an identical or very similar sequence to one of the sequences in \code{aln}. } \value{ Return a list object of the class 'fasta' containing three components: \item{id}{ sequence names as identifers.} \item{ali}{ an alignment character matrix with a row per sequence and a column per equivalent aminoacid/nucleotide. } \item{ref}{ an integer 2xN matrix, where N is the number of columns of the new alignment \code{ali}. The first row contains the column indices of the original alignment \code{aln$ali}. The second row contains atomic indices of equivalent C-alpha atoms in \code{pdb}. Gaps in the new alignement are indicated by NAs. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Xin-Qiu Yao & Barry Grant } \seealso{ \code{\link{seqaln}}, \code{\link{seq2aln}}, \code{\link{seqaln.pair}}, \code{\link{pdb2aln.ind}}} \examples{ \dontrun{ ##--- Read aligned PDB coordinates (CA only) aln <- read.fasta(system.file("examples/kif1a.fa",package="bio3d")) pdbs <- read.fasta.pdb(aln) ##--- Read PDB coordinate for a new structure (all atoms) id <- get.pdb("2kin", URLonly=TRUE) pdb <- read.pdb(id) # add pdb to the alignment naln <- pdb2aln(aln=pdbs, pdb=pdb, id=id) naln } } \keyword{ utilities } bio3d/man/pdb.annotate.Rd0000644000176200001440000000517214707230357014706 0ustar liggesusers\name{pdb.annotate} \alias{pdb.annotate} \alias{pdb.pfam} \title{ Get Customizable Annotations From PDB Or PFAM Databases} \description{ Get customizable annotations for query results from PDB or PFAM. } \usage{ pdb.annotate(ids, anno.terms = NULL, unique = FALSE, verbose = FALSE, extra.terms = NULL) pdb.pfam(ids, best.only = TRUE, compact = TRUE) } \arguments{ \item{ids}{ A charater vector of one or more 4-letter PDB codes/identifiers of the files for query, or a \sQuote{blast} object containing \sQuote{pdb.id}. } \item{anno.terms}{ Terms can be used for query. The "anno.terms" can be "structureId", "chainId", "macromoleculeType", "chainLength", "experimentalTechnique", "resolution", "scopDomain", "pfam", "ligandId", "ligandName", "source", "structureTitle", "citation", "rObserved", "rFree", "rWork", and "spaceGroup". If anno.terms=NULL, all information would be returned. } \item{unique}{ logical, if TRUE only unique PDB entries are returned. Alternatively data for each chain ID is provided. } \item{verbose}{ logical, if TRUE more details are printed. } \item{extra.terms}{ Additional annotation terms to retrieve from PDB. Currently not supported. } \item{best.only}{ logical, if TRUE only the lowest eValue match for a given input id will be reported. Otherwise all significant matches will be returned. } \item{compact}{ logical, if TRUE only a subset of annotation terms are returned. Otherwise full match details are reported (see examples).} } \details{ Given a list of PDB IDs (and query terms for the pdb.annotate function), these functions will download annotation information from the RCSB PDB and PFAM databases. } \value{ Returns a data frame of query results with a row for each PDB record, and annotation terms column-wise. } \author{ Hongyang Li, Barry Grant, Lars Skjaerven, Xin-Qiu Yao} \examples{ \donttest{ # PDB server connection required - testing excluded try({ # Fetch all annotation terms ids <- c("6Q21_B", "1NVW", "1P2U_A") anno <- pdb.annotate(ids) # Access terms, e.g. ligand names: anno$ligandName ## only unique PDB IDs anno <- pdb.annotate(ids, unique=TRUE) # Fetch only specific terms pdb.annotate(ids, anno.terms = c("pfam", "ligandId", "citation")) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } \dontrun{ # PFAM server connection required - testing excluded # Find PFAM annotations of PDB entries pdb.pfam(c("6Q21_A", "1NVW", "1P2U_A")) # More details and a not fond entry warning pdb.pfam(c("1P2U_A", "6Q21_B"), compact=FALSE) } } \keyword{ utilities } bio3d/man/rmsf.Rd0000644000176200001440000000410714707230357013275 0ustar liggesusers\name{rmsf} \alias{rmsf} \title{ Atomic RMS Fluctuations } \description{ Calculate atomic root mean squared fluctuations. } \usage{ rmsf(xyz, grpby=NULL, average=FALSE) } \arguments{ \item{xyz}{ numeric matrix of coordinates with each row corresponding to an individual conformer. } \item{grpby}{ a vector counting connective duplicated elements that indicate the elements of 'xyz' that should be considered as a group (e.g. atoms from a particular residue). If provided a 'pdb' object, grouping is automatically set by amino acid residues. } \item{average}{ logical, if TRUE averaged over atoms. } } \details{ RMSF is an often used measure of conformational variance. It is calculated by \deqn{f_i=\sqrt{\frac{1}{M-1}\sum_j \|r_i^j-r_i^0\|^2}}{% f_i=sqrt((1/(M-1))Sum_j(||r_i^j-r_i^0||^2))}, where \eqn{f_i}{f_i} is the RMSF value for the ith atom, M the total number of frames (total number of rows of \code{xyz}), \eqn{r_i^j}{r_i^j} the positional vector of the ith atom in the jth frame, and \eqn{r_i^0}{r_i^0} the mean position of ith atom. ||r|| denotes the Euclidean norm of the vector r. } \value{ Returns a numeric vector of RMSF values. If \code{average=TRUE} a single numeric value representing the averaged RMSF value over all atoms will be returned. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \seealso{ \code{\link{read.dcd}}, \code{\link{fit.xyz}}, \code{\link{read.fasta.pdb}} } \examples{ attach(transducin) # Ignore Gaps gaps <- gap.inspect(pdbs$ali) r <- rmsf(pdbs$xyz) plot(r[gaps$f.inds], typ="h", ylab="RMSF (A)") detach(transducin) \dontrun{ pdb <- read.pdb("1d1d", multi=TRUE) xyz <- pdb$xyz # superimpose trajectory xyz <- fit.xyz(xyz[1, ], xyz) # select mainchain atoms sele <- atom.select(pdb, elety=c("CA", "C", "N", "O")) # residue numbers to group by resno <- pdb$atom$resno[sele$atom] # mean rmsf value of mainchain atoms of each residue r <- rmsf(xyz[, sele$xyz], grpby=resno) plot.bio3d(r, resno=pdb, sse=pdb, ylab="RMSF (A)") } } \keyword{ utilities } bio3d/man/atom.select.Rd0000644000176200001440000001706514707230357014553 0ustar liggesusers\name{atom.select} \alias{atom.select} \alias{atom.select.pdb} \alias{atom.select.pdbs} \alias{atom.select.mol2} \alias{atom.select.prmtop} \alias{print.select} \title{ Atom Selection from PDB and PRMTOP Structure Objects } \description{ Return the \sQuote{atom} and \sQuote{xyz} coordinate indices of \sQuote{pdb} or \sQuote{prmtop} structure objects corresponding to the intersection of a hierarchical selection. } \usage{ atom.select(\dots) \method{atom.select}{pdb}(pdb, string = NULL, type = NULL, eleno = NULL, elety = NULL, resid = NULL, chain = NULL, resno = NULL, insert = NULL, segid = NULL, operator = "AND", inverse = FALSE, value = FALSE, verbose=FALSE, \dots) \method{atom.select}{pdbs}(pdbs, string = NULL, resno = NULL, chain = NULL, resid = NULL, operator="AND", inverse = FALSE, value = FALSE, verbose=FALSE, \dots) \method{atom.select}{mol2}(mol, string=NULL, eleno = NULL, elena = NULL, elety = NULL, resid = NULL, chain = NULL, resno = NULL, statbit = NULL, operator = "AND", inverse = FALSE, value = FALSE, verbose=FALSE, \dots) \method{atom.select}{prmtop}(prmtop, ...) \method{print}{select}(x, \dots) } \arguments{ \item{\dots}{ arguments passed to \code{atom.select.pdb}, \code{atom.select.prmtop}, or \code{print}. } \item{pdb}{ a structure object of class \code{"pdb"}, obtained from \code{\link{read.pdb}}. } \item{pdbs}{ a numeric matrix of aligned C-alpha xyz Cartesian coordinates as obtained with \code{\link{read.fasta.pdb}} or \code{\link{pdbaln}}. } \item{string}{ a single selection keyword from \code{calpha} \code{cbeta} \code{backbone} \code{sidechain} \code{protein} \code{nucleic} \code{ligand} \code{water} \code{h} or \code{noh}. } \item{type}{ a single element character vector for selecting \sQuote{ATOM} or \sQuote{HETATM} record types. } \item{eleno}{ a numeric vector of element numbers. } \item{elena}{ a character vector of atom names. } \item{elety}{ a character vector of atom names. } \item{resid}{ a character vector of residue name identifiers. } \item{chain}{ a character vector of chain identifiers. } \item{resno}{ a numeric vector of residue numbers. } \item{insert}{ a character vector of insert identifiers. Non-insert residues can be selected with \code{NA} or \sQuote{} values. The default value of \code{NULL} will select both insert and non-insert residues. } \item{segid}{ a character vector of segment identifiers. Empty segid values can be selected with \code{NA} or \sQuote{} values. The default value of \code{NULL} will select both empty and non-empty segment identifiers. } \item{operator}{ a single element character specifying either the AND or OR operator by which individual selection components should be combined. Allowed values are \sQuote{"AND"} and \sQuote{"OR"}. } \item{verbose}{ logical, if TRUE details of the selection are printed. } \item{inverse}{ logical, if TRUE the inversed selection is retured (i.e. all atoms NOT in the selection). } \item{value}{ logical, if FALSE, vectors containing the (integer) indices of the matches determined by \code{atom.select} are returned, and if TRUE, a \code{pdb} object containing the matching atoms themselves is returned. } \item{mol}{ a structure object of class \code{"mol2"}, obtained from \code{\link{read.mol2}}. } \item{statbit}{ a character vector of statbit identifiers. } \item{prmtop}{ a structure object of class \code{"prmtop"}, obtained from \code{\link{read.prmtop}}. } \item{x}{ a atom.select object as obtained from \code{\link{atom.select}}. } } \details{ This function allows for the selection of atom and coordinate data corresponding to the intersection of various input criteria. Input selection criteria include selection \code{string} keywords (such as \code{"calpha"}, \code{"backbone"}, \code{"sidechain"}, \code{"protein"}, \code{"nucleic"}, \code{"ligand"}, etc.) and individual named selection components (including \sQuote{chain}, \sQuote{resno}, \sQuote{resid}, \sQuote{elety} etc.). For example, \code{atom.select(pdb, "calpha")} will return indices for all C-alpha (CA) atoms found in protein residues in the \code{pdb} object, \code{atom.select(pdb, "backbone")} will return indices for all protein N,CA,C,O atoms, and \code{atom.select(pdb, "cbeta")} for all protein N,CA,C,O,CB atoms. Note that keyword \code{string} shortcuts can be combined with individual selection components, e.g. \code{atom.select(pdb, "protein", chain="A")} will select all protein atoms found in chain A. Selection criteria are combined according to the provided \code{operator} argument. The default operator \code{AND} (or \code{&}) will combine by intersection while \code{OR} (or \code{|}) will take the union. For example, \code{atom.select(pdb, "protein", elety=c("N", "CA", "C"), resno=65:103)} will select the N, CA, C atoms in the protein residues 65 through 103, while \code{atom.select(pdb, "protein", resid="ATP", operator="OR")} will select all protein atoms as well as any ATP residue(s). Other \code{string} shortcuts include: \code{"calpha"}, \code{"back"}, \code{"backbone"}, \code{"cbeta"}, \code{"protein"}, \code{"notprotein"}, \code{"ligand"}, \code{"water"}, \code{"notwater"}, \code{"h"}, \code{"noh"}, \code{"nucleic"}, and \code{"notnucleic"}. In addition, the \code{\link{combine.select}} function can further combine atom selections using \sQuote{AND}, \sQuote{OR}, or \sQuote{NOT} logical operations. } \note{ Protein atoms are defined as any atom in a residue matching the residue name in the attached \code{aa.table} data frame. See \code{aa.table$aa3} for a complete list of residue names. Nucleic atoms are defined as all atoms found in residues with names A, U, G, C, T, I, DA, DU, DG, DC, DT, or DI. Water atoms/residues are defined as those with residue names H2O, OH2, HOH, HHO, OHH, SOL, WAT, TIP, TIP, TIP3, or TIP4. } \value{ Returns a list of class \code{"select"} with the following components: \item{atom}{ a numeric matrix of atomic indices. } \item{xyz }{ a numeric matrix of xyz indices. } \item{call }{ the matched call. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant, Lars Skjaerven } \seealso{ \code{\link{read.pdb}}, \code{\link{as.select}}, \code{\link{combine.select}}, \code{\link{trim.pdb}}, \code{\link{write.pdb}}, \code{\link{read.prmtop}}, \code{\link{read.crd}}, \code{\link{read.dcd}}, \code{\link{read.ncdf}}. } \examples{ ##- PDB example # Read a PDB file pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) # Select protein atoms of chain A atom.select(pdb, "protein", chain="A") # Select all atoms except from the protein atom.select(pdb, "protein", inverse=TRUE, verbose=TRUE) # Select all C-alpha atoms with residues numbers between 43 and 54 sele <- atom.select(pdb, "calpha", resno=43:54, verbose=TRUE) # Access the PDB data with the selection indices print( pdb$atom[ sele$atom, "resid" ] ) print( pdb$xyz[ sele$xyz ] ) # Trim PDB to selection ca.pdb <- trim.pdb(pdb, sele) \dontrun{ ##- PRMTOP example prmtop <- read.prmtop(system.file("examples/crambin.prmtop", package="bio3d")) ## Atom selection ca.inds <- atom.select(prmtop, "calpha") } } \keyword{utilities} bio3d/man/unbound.Rd0000644000176200001440000000230414707230357013775 0ustar liggesusers\name{unbound} \alias{unbound} \title{ Sequence Generation from a Bounds Vector } \description{ Generate a sequence of consecutive numbers from a \code{\link{bounds}} vector. } \usage{ unbound(start, end = NULL) } \arguments{ \item{start}{ vector of starting values, or a matrix containing starting and end values such as that obtained from \code{\link{bounds}}. } \item{end}{ vector of (maximal) end values, such as that obtained from \code{\link{bounds}}. } } \details{ This is a simple utility function that does the opposite of the \code{\link{bounds}} function. If \code{start} is a vector, \code{end} must be a vector having the same length as \code{start}. If \code{start} is a matrix with column names contain 'start' and 'end', such as that returned from \code{\link{bounds}}, \code{end} can be skipped and both starting and end values will be extracted from \code{start}. } \value{ Returns a numeric sequence vector. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \seealso{ \code{\link{bounds}} } \author{ Barry Grant } \examples{ test <- c(seq(1,5,1),8,seq(10,15,1)) b <- bounds(test) unbound(b) } \keyword{ utilities } bio3d/man/write.pdb.Rd0000644000176200001440000000737514707230357014236 0ustar liggesusers\name{write.pdb} \alias{write.pdb} \title{ Write PDB Format Coordinate File } \description{ Write a Protein Data Bank (PDB) file for a given \sQuote{xyz} Cartesian coordinate vector or matrix. } \usage{ write.pdb(pdb = NULL, file = "R.pdb", xyz = pdb$xyz, type = NULL, resno = NULL, resid = NULL, eleno = NULL, elety = NULL, chain = NULL, insert = NULL, alt = NULL, o = NULL, b = NULL, segid = NULL, elesy = NULL, charge = NULL, append = FALSE, verbose = FALSE, chainter = FALSE, end = TRUE, sse = FALSE, print.segid = FALSE) } \arguments{ \item{pdb}{ a PDB structure object obtained from \code{\link{read.pdb}}. } \item{file}{ the output file name. } \item{xyz}{ Cartesian coordinates as a vector or 3xN matrix. } \item{type}{ vector of record types, i.e. "ATOM" or "HETATM", with length equal to length(xyz)/3. } \item{resno}{ vector of residue numbers of length equal to length(xyz)/3. } \item{resid}{ vector of residue types/ids of length equal to length(xyz)/3. } \item{eleno}{ vector of element/atom numbers of length equal to length(xyz)/3. } \item{elety}{ vector of element/atom types of length equal to length(xyz)/3. } \item{chain}{ vector of chain identifiers with length equal to length(xyz)/3. } \item{insert}{ vector of insertion code with length equal to length(xyz)/3. } \item{alt}{ vector of alternate record with length equal to length(xyz)/3. } \item{o}{ vector of occupancy values of length equal to length(xyz)/3. } \item{b}{ vector of B-factors of length equal to length(xyz)/3. } \item{segid}{ vector of segment id of length equal to length(xyz)/3. } \item{elesy}{ vector of element symbol of length equal to length(xyz)/3. } \item{charge}{ vector of atomic charge of length equal to length(xyz)/3. } \item{append}{ logical, if TRUE output is appended to the bottom of an existing file (used primarly for writing multi-model files). } \item{verbose}{ logical, if TRUE progress details are printed. } \item{chainter}{ logical, if TRUE a TER line is inserted at termination of a chain. } \item{end}{ logical, if TRUE END line is written. } \item{sse}{ logical, if TRUE secondary structure annotations are written. } \item{print.segid}{ logical, if FALSE segid will not be written. } } \details{ Only the \code{xyz} argument is strictly required. Other arguments assume a default poly-ALA C-alpha structure with a blank chain id, occupancy values of 1.00 and B-factors equal to 0.00. If the input argument \code{xyz} is a matrix then each row is assumed to be a different structure/frame to be written to a \dQuote{multimodel} PDB file, with frames separated by \dQuote{END} records. } \value{ Called for its effect. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. For a description of PDB format (version3.3) see:\cr \url{http://www.wwpdb.org/documentation/format33/v3.3.html}. } \author{ Barry Grant with contributions from Joao Martins. } \note{ Check that: (1) \code{chain} is one character long e.g. \dQuote{A}, and (2) \code{resno} and \code{eleno} do not exceed \dQuote{9999}. } \seealso{ \code{\link{read.pdb}}, \code{\link{read.dcd}}, \code{\link{read.fasta.pdb}}, \code{\link{read.fasta}} } \examples{ \donttest{ # PDB server connection required - testing excluded try({ # Read a PDB file pdb <- read.pdb( "1bg2" ) # Renumber residues nums <- as.numeric(pdb$atom[,"resno"]) nums <- nums - (nums[1] - 1) # Write out renumbered PDB file outfile = file.path(tempdir(), "eg.pdb") write.pdb(pdb=pdb, resno = nums, file = outfile) invisible( cat("\nSee the output file:", outfile, sep = "\n") ) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } \keyword{ IO } bio3d/man/seqaln.pair.Rd0000644000176200001440000000412414707230357014542 0ustar liggesusers\name{seqaln.pair} \alias{seqaln.pair} \title{ Sequence Alignment of Identical Protein Sequences } \description{ Create multiple alignments of amino acid sequences according to the method of Edgar. } \usage{ seqaln.pair(aln, \dots) } \arguments{ \item{aln}{ a sequence character matrix, as obtained from \code{\link{seqbind}}, or an alignment list object as obtained from \code{\link{read.fasta}}. } \item{\dots}{ additional arguments for the function \code{\link{seqaln}}. } } \details{ This function is intended for the alignment of identical sequences only. For standard alignment see the related function \code{\link{seqaln}}. This function is useful for determining the equivalences between sequences and structures. For example in aligning a PDB sequence to an existing multiple sequence alignment, where one would first mask the alignment sequences and then run the alignment to determine equivalences. } \value{ A list with two components: \item{ali}{ an alignment character matrix with a row per sequence and a column per equivalent aminoacid/nucleotide. } \item{ids}{ sequence names as identifers.} } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. \sQuote{MUSCLE} is the work of Edgar: Edgar (2004) \emph{Nuc. Acid. Res.} \bold{32}, 1792--1797. Full details of the \sQuote{MUSCLE} algorithm, along with download and installation instructions can be obtained from:\cr \url{http://www.drive5.com/muscle/}. } \author{ Barry Grant } \note{ A system call is made to the \sQuote{MUSCLE} program, which must be installed on your system and in the search path for executables. } \seealso{ \code{\link{seqaln}}, \code{\link{read.fasta}}, \code{\link{read.fasta.pdb}}, \code{\link{seqbind}} } \examples{ ## NOTE: FOLLOWING EXAMPLE NEEDS MUSCLE INSTALLED if(check.utility("muscle")) { ##- Aligning a PDB sequence to an existing sequence alignment ##- Simple example aln <- seqbind(c("X","C","X","X","A","G","K"), c("C","-","A","X","G","X","X","K")) seqaln.pair(aln, outfile = tempfile()) } } \keyword{ utilities } bio3d/man/plot.pca.loadings.Rd0000644000176200001440000000166214707230357015650 0ustar liggesusers\name{plot.pca.loadings} \alias{plot.pca.loadings} \title{ Plot Residue Loadings along PC1 to PC3 } \description{ Plot residue loadings along PC1 to PC3 from a given xyz C-alpha matrix of \code{loadings}. } \usage{ \method{plot}{pca.loadings}(x, resnums = seq(1, (length(x[, 1])/3), 25), ...) } \arguments{ \item{x}{ the results of principal component analysis obtained from \code{\link{pca.xyz}}, or just the loadings returned from \code{\link{pca.xyz}}. } \item{resnums}{ a numeric vector of residue numbers. } \item{\dots}{ extra plotting arguments. } } \value{ Called for its effect. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \seealso{ \code{\link{pca.xyz}}, \code{\link{plot.pca}} } \examples{ attach(transducin) pc.xray <- pca.xyz(pdbs$xyz[, gap.inspect(pdbs$xyz)$f.inds]) plot.pca.loadings(pc.xray$U) detach(transducin) } \keyword{ hplot } bio3d/man/print.fasta.Rd0000644000176200001440000000367314707230357014566 0ustar liggesusers\name{print.fasta} \alias{print.fasta} \alias{.print.fasta.ali} \title{ Printing Sequence Alignments } \description{ Print method for fasta and pdbs sequence alignment objects. } \usage{ \method{print}{fasta}(x, alignment=TRUE, ...) .print.fasta.ali(x, width = NULL, col.inds = NULL, numbers = TRUE, conservation=TRUE, ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{x}{ a sequence alignment object as obtained from the functions \code{\link{read.fasta}}, \code{\link{read.fasta.pdb}}, \code{\link{pdbaln}}, \code{\link{seqaln}}, etc. } \item{alignment}{ logical, if TRUE the sequence alignment will be printed to screen. } \item{width}{ a single numeric value giving the number of residues per printed sequence block. By default this is determined from considering alignment identifier widths given a standard 85 column terminal window. } \item{col.inds}{ an optional numeric vector that can be used to select subsets of alignment positions/columns for printing. } \item{numbers}{ logical, if TRUE position numbers and a tick-mark every 10 positions are printed above and below sequence blocks. } \item{conservation}{ logical, if TRUE conserved and semi-conserved columns in the alignment are marked with an \sQuote{*} and \sQuote{^}, respectively. } \item{\dots}{ additional arguments to \sQuote{.print.fasta.ali}. } } \value{ Called mostly for its effect but also silently returns block divided concatenated sequence strings as a matrix. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696.} \author{ Barry Grant } \seealso{ \code{\link{read.fasta}}, \code{\link{read.fasta.pdb}}, \code{\link{pdbaln}}, \code{\link{seqaln}} } \examples{ file <- system.file("examples/kif1a.fa",package="bio3d") aln <- read.fasta(file) print(aln) # print(aln, col.inds=30:100, numbers=FALSE) } \keyword{ utilities } bio3d/man/aa2index.Rd0000644000176200001440000000370514707230357014024 0ustar liggesusers\name{aa2index} \alias{aa2index} \title{ Convert an Aminoacid Sequence to AAIndex Values } \description{ Converts sequences to aminoacid indeces from the \sQuote{AAindex} database. } \usage{ aa2index(aa, index = "KYTJ820101", window = 1) } \arguments{ \item{aa}{ a protein sequence character vector. } \item{index}{ an index name or number (default: \dQuote{KYTJ820101}, hydropathy index by Kyte-Doolittle, 1982). } \item{window}{ a positive numeric value, indicating the window size for smoothing with a sliding window average (default: 1, i.e. no smoothing). } } \details{ By default, this function simply returns the index values for each amino acid in the sequence. It can also be set to perform a crude sliding window average through the \code{window} argument. } \value{ Returns a numeric vector. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. \sQuote{AAIndex} is the work of Kanehisa and co-workers: Kawashima and Kanehisa (2000) \emph{Nucleic Acids Res.} \bold{28}, 374; Tomii and Kanehisa (1996) \emph{Protein Eng.} \bold{9}, 27--36; Nakai, Kidera and Kanehisa (1988) \emph{Protein Eng.} \bold{2}, 93--100. For a description of the \sQuote{AAindex} database see:\cr \url{https://www.genome.jp/aaindex/} or the \code{\link{aa.index}} documentation. } \author{ Ana Rodrigues } \seealso{ \code{\link{aa.index}}, \code{\link{read.fasta}} } \examples{ ## Residue hydropathy values seq <- c("R","S","D","X","-","X","R","H","Q","V","L") aa2index(seq) \dontrun{ ## Use a sliding window average aa2index(aa=seq, index=22, window=3) ## Use an alignment aln <- read.fasta(system.file("examples/hivp_xray.fa",package="bio3d")) prop <- t(apply(aln$ali, 1, aa2index, window=1)) ## find and use indices for volume calculations i <- which(sapply(aa.index, function(x) length(grep("volume", x$D, ignore.case=TRUE)) != 0)) sapply(i, function(x) aa2index(aa=seq, index=x, window=5)) } } \keyword{ utilities } bio3d/man/plot.cna.Rd0000644000176200001440000001120514707230357014041 0ustar liggesusers\name{plot.cna} \alias{plot.cna} \alias{plot.ecna} \title{ Protein Structure Network Plots in 2D and 3D. } \description{ Plot a protein dynamic network as obtained from the \emph{cna} function. } \usage{ \method{plot}{cna}(x, pdb = NULL, weights=NULL, vertex.size=NULL, layout=NULL, col=NULL, full=FALSE, scale=TRUE, color.edge = FALSE, interactive=FALSE, ...) \method{plot}{ecna}(x, \dots) } \arguments{ \item{x}{ A protein network graph object (or a list of such objects) as obtained from the \sQuote{cna} function. } \item{pdb}{ A PDB structure object obtained from \sQuote{read.pdb}. If supplied this will be used to guide the network plot \sQuote{layout}, see \sQuote{layout.cna} for details. } \item{weights}{ A numeric vector containing the edge weights for the network. } \item{vertex.size}{ A numeric vector of node/community sizes. If NULL the size will be taken from the input network graph object \sQuote{x}. Typically for \sQuote{full=TRUE} nodes will be of an equal size and for \sQuote{full=FALSE} community node size will be proportional to the residue membership of each community. } \item{layout}{ Either a function or a numeric matrix. It specifies how the vertices will be placed on the plot. See \sQuote{layout.cna}. } \item{col}{ A vector of colors used for node/vertex rendering. If NULL these values are taken from the input network \sQuote{V(x$community.network)$color}. } \item{full}{ Logical, if TRUE the full all-atom network rather than the clustered community network will be plotted. } \item{scale}{ Logical, if TRUE weights are scaled with respect to the network. } \item{color.edge}{ Logical, if TRUE edges are colored with respect to their weights. } \item{interactive}{ Logical, if TRUE interactive graph will be drawn where users can manually adjust the network (positions of vertices, colors of edges, etc.). Needs Tcl/Tk support in the installed R build. } \item{\dots}{ Additional graphical parameters for \sQuote{plot.igraph}. } } \details{ This function calls \sQuote{plot.igraph} from the igraph package to plot cna networks the way we like them. The plot layout is user settable, we like the options of: \sQuote{layout.cna}, \sQuote{layout.fruchterman.reingold}, \sQuote{layout.mds} or \sQuote{layout.svd}. Note that first of these uses PDB structure information to produce a more meaningful layout. Extensive plot modifications are possible by setting additional graphical parameters (\dots). These options are detailed in \sQuote{igraph.plotting}. Common parameters to alter include: \describe{ \item{vertex.label:}{Node labels, \code{V(x$network)$name}. Use NA to omit.} \item{vertex.label.color:}{Node label colors, see also \code{vertex.label.cex} etc. } \item{edge.color:}{Edge colors, \code{E(x$network)$color}. } \item{mark.groups:}{Community highlighting, a community list object, see also \code{mark.col} etc.} } } \value{ Produces a network plot on the active graphics device. Also returns the plot layout coordinates silently, which can be passed to the \sQuote{identify.cna} function. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant and Guido Scarabelli } \note{ Be sure to check the correspondence of your \sQuote{pdb} object with your network object \sQuote{x}, as few internal checks are currently performed by the \sQuote{layout.cna} function. } \seealso{ \code{\link[igraph:plot.igraph]{plot.igraph}}, \code{\link[igraph:communities]{plot.communities}}, \code{\link[igraph:plot.common]{igraph.plotting}} } \examples{ \donttest{ # PDB server connection required - testing excluded if (!requireNamespace("igraph", quietly = TRUE)) { message('Need igraph installed to run this example') } else { try({ ##-- Build a CNA object pdb <- read.pdb("4Q21") modes <- nma(pdb) cij <- dccm(modes) net <- cna(cij, cutoff.cij=0.2) # Plot coarse grain network based on dynamically coupled communities xy <- plot.cna(net) #plot.dccm(cij, margin.segments=net$communities$membership) # Chose a different PDB informed layout for plot plot.cna(net, pdb) # Play with plot layout and colors... plot.cna(net, layout=igraph::layout.mds(net$community.network), col=c("blue","green") ) # Plot full residue network colored by communities - will be slow due to number of edges!! plot.cna(net, pdb, full=TRUE) # Alter plot settings plot.cna(net, pdb, full=TRUE, vertex.size=3, weights=1, vertex.label=NA) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } } \keyword{ hplot } bio3d/man/formula2mass.Rd0000644000176200001440000000132014707230357014733 0ustar liggesusers\name{formula2mass} \alias{formula2mass} \title{Chemical Formula to Mass Converter} \description{Compute the molar mass associated to a chemical formula.} \usage{ formula2mass(form, sum.mass = TRUE) } \arguments{ \item{form}{a character string containing a chemical formula on the form: 'C3 H5 N O1'.} \item{sum.mass}{logical, should the mass of each element be summed.} } \details{ Compute the molar mass (in g.mol-1) associated to a chemical formula. } \value{ Return a single element numeric vector containing the mass corresponding to a given chemical formula. } \author{Lars Skjaerven} \seealso{ \code{\link{atom2ele}}, \code{\link{atom2mass}} } \examples{ #formula2mass("C5 H6 N O3") } \keyword{ utilities } bio3d/man/atom.index.Rd0000644000176200001440000000142614707230357014375 0ustar liggesusers\name{atom.index} \alias{atom.index} \docType{data} \title{ Atom Names/Types } \description{ This data set gives for various atom names/types the corresponding atomic symbols. } \usage{ atom.index } \format{ A data frame with the following components. \describe{ \item{\code{name}}{a character vector containing atom names/types.} \item{\code{symb}}{a character vector containing atomic symbols.} } } \seealso{ \code{\link{elements}}, \code{\link{atom.index}}, \code{\link{atom2ele}} } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \examples{ data(atom.index) atom.index # Get the atomic symbol of some atoms atom.names <- c("CA", "O", "N", "OXT") atom.index[match(atom.names, atom.index$name), "symb"] } \keyword{datasets} bio3d/man/plot.matrix.loadings.Rd0000644000176200001440000000530014707230357016402 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/plot.matrix.loadings.R \name{plot.matrix.loadings} \alias{plot.matrix.loadings} \title{Plot Residue-Residue Matrix Loadings} \usage{ \method{plot}{matrix.loadings}(x, pc = 1, resno = NULL, sse = NULL, mask.n = 0, plot = TRUE, ...) } \arguments{ \item{x}{the results of PCA as obtained from \code{\link{pca.array}}.} \item{pc}{the principal component along which the loadings will be shown.} \item{resno}{numerical vector or \sQuote{pdb} object as obtained from \code{\link{read.pdb}} to show residue number on the x- and y-axis.} \item{sse}{a \sQuote{sse} object as obtained from \code{\link{dssp}} or \code{\link{stride}}, or a \sQuote{pdb} object as obtained from \code{\link{read.pdb}} to show secondary structural elements along x- and y-axis.} \item{mask.n}{the number of elements from the diagonal to be masked from output.} \item{plot}{logical, if FALSE no plot will be shown.} \item{...}{additional arguments passed to \code{\link{plot.dccm}}.} } \value{ Plot and also returns a numeric matrix containing the loadings. } \description{ Plot residue-residue matrix loadings of a particular PC that is obtained from a principal component analysis (PCA) of cross-correlation or distance matrices. } \details{ The function plots loadings (the eigenvectors) of PCA performed on a set of matrices such as distance matrices from an ensemble of crystallographic structures and residue-residue cross-correlations or covariance matrices derived from ensemble NMA or MD simulation replicates (See \code{\link{pca.array}} for detail). Loadings are displayed as a matrix with dimension the same as the input matrices of the PCA. Each element of loadings represents the proportion that the corresponding residue pair contributes to the variance in a particular PC. The plot can be used to identify key regions that best explain the variance of underlying matrices. } \examples{ \dontrun{ attach(transducin) gaps.res <- gap.inspect(pdbs$ali) sse <- pdbs$sse[1, gaps.res$f.inds] # calculate modes modes <- nma(pdbs, ncore=NULL) # calculate cross-correlation matrices from the modes cijs <- dccm(modes, ncore=NULL)$all.dccm # do PCA on cross-correlation matrices pc <- pca.array(cijs) # plot loadings l <- plot.matrix.loadings(pc, sse=sse) l[1:10, 1:10] # plot loadings with elements 10-residue separated from diagonal masked plot.matrix.loadings(pc, sse=sse, mask.n=10) } } \author{ Xin-Qiu Yao } \references{ Skjaerven, L. et al. (2014) \emph{BMC Bioinformatics} \bold{15}, 399. Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \seealso{ \code{\link{plot.dccm}}, \code{\link{pca.array}} } bio3d/man/gnm.Rd0000644000176200001440000001012414707230357013103 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/gnm.R, R/gnm.pdbs.R \name{gnm} \alias{gnm} \alias{gnm.pdb} \alias{gnm.pdbs} \title{Gaussian Network Model} \usage{ gnm(x, ...) \method{gnm}{pdb}(x, inds = NULL, temp = 300, keep = NULL, outmodes = NULL, gamma = 1, cutoff = 8, check.connect = TRUE, ...) \method{gnm}{pdbs}(x, fit = TRUE, full = FALSE, subspace = NULL, rm.gaps = TRUE, gc.first = TRUE, ncore = NULL, ...) } \arguments{ \item{x}{an object of class \code{pdb} as obtained from function \code{\link{read.pdb}}.} \item{...}{(in \code{gnm.pdbs}) additional arguments passed to \code{gnm.pdb}.} \item{inds}{atom and xyz coordinate indices obtained from \code{\link{atom.select}} that selects the elements of \code{pdb} upon which the calculation should be based. If not provided the function will attempt to select all calpha atoms automatically.} \item{temp}{numerical, temperature for which the amplitudes for scaling the atomic displacement vectors are calculated. Set \sQuote{temp=NULL} to avoid scaling.} \item{keep}{numerical, final number of modes to be stored. Note that all subsequent analyses are limited to this subset of modes. This option is useful for very large structures and cases where memory may be limited.} \item{outmodes}{atom indices as obtained from \code{\link{atom.select}} specifying the atoms to include in the resulting mode object.} \item{gamma}{numerical, global scale of the force constant.} \item{cutoff}{numerical, distance cutoff for pair-wise interactions.} \item{check.connect}{logical, if TRUE check chain connectivity.} \item{fit}{logical, if TRUE C-alpha coordinate based superposition is performed prior to normal mode calculations.} \item{full}{logical, if TRUE return the complete, full structure, \sQuote{nma} objects.} \item{subspace}{number of eigenvectors to store for further analysis.} \item{rm.gaps}{logical, if TRUE obtain the hessian matrices for only atoms in the aligned positions (non-gap positions in all aligned structures). Thus, gap positions are removed from output.} \item{gc.first}{logical, if TRUE will call gc() first before mode calculation for each structure. This is to avoid memory overload when \code{ncore > 1}.} \item{ncore}{number of CPU cores used to do the calculation.} } \value{ Returns an object of class \sQuote{gnm} with the following components: \item{force.constants}{ numeric vector containing the force constants corresponding to each mode. } \item{fluctuations}{ numeric vector of atomic fluctuations. } \item{U}{ numeric matrix with columns containing the raw eigenvectors. } \item{L}{ numeric vector containing the raw eigenvalues. } \item{xyz}{ numeric matrix of class \code{xyz} containing the Cartesian coordinates in which the calculation was performed. } \item{temp}{ numerical, temperature for which the amplitudes for scaling the atomic displacement vectors are calculated. } \item{triv.modes}{ number of trivial modes. } \item{natoms}{ number of C-alpha atoms. } \item{call}{ the matched call. } } \description{ Perform Gaussian network model (GNM) based normal mode analysis (NMA) for a protein structure. } \details{ This function builds a Gaussian network model (an isotropic elastic network model) for C-alpha atoms and performs subsequent normal mode analysis (NMA). The model employs a distance cutoff for the network construction: Atom pairs with distance falling within the cutoff have a harmonic interaction with a uniform force constant; Otherwise atoms have no interaction. Output contains N-1 (N, the number of residues) non-trivial modes (i.e. the degree of freedom is N-1), which can then be used to calculate atomic fluctuations and covariance. } \examples{ ## Fetch stucture pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) ## Calculate normal modes modes <- gnm(pdb) ## Print modes print(modes) ## Plot modes plot(modes) } \author{ Xin-Qiu Yao & Lars Skjaerven } \references{ Bahar, I. et al. (1997) \emph{Folding Des.} \bold{2}, 173. } \seealso{ \code{\link{gnm.pdbs}} } bio3d/man/plot.enma.Rd0000644000176200001440000000355514707230357014231 0ustar liggesusers\name{plot.enma} \alias{plot.enma} \title{ Plot eNMA Results } \description{ Produces a plot of atomic fluctuations of aligned normal modes. } \usage{ \method{plot}{enma}(x, pdbs = NULL, xlab = NULL, ylab="Fluctuations", ...) } \arguments{ \item{x}{ the results of ensemble NMA obtained with \code{\link{nma.pdbs}}. Alternatively, a matrix in the similar format as \code{enma$fluctuations} can be provided. } \item{pdbs}{ an object of class \sQuote{pdbs} in which the \sQuote{enma} object \code{x} was obtained from. If provided SSE data of the first structure of \code{pdbs} will drawn. } \item{xlab}{ a label for the x axis. } \item{ylab}{ labels for the y axes. } \item{\dots}{ extra plotting arguments passed to \code{plot.fluct} that effect the atomic fluctuations plot only. } } \details{ \code{plot.enma} produces a fluctuation plot of aligned \code{nma} objects. If corresponding \code{pdbs} object is provided the plot contains SSE annotation and appropriate resiude index numbering. } \value{ Called for its effect. } \references{ Skjaerven, L. et al. (2014) \emph{BMC Bioinformatics} \bold{15}, 399. Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven, Barry Grant } \seealso{ \code{\link{nma}}, \code{\link{plotb3}}, \code{\link{plot.fluct}} } \examples{ \dontrun{ ids <- c("1a70_A", "1czp_A", "1frd_A", "1fxi_A", "1iue_A", "1pfd_A") raw.files <- get.pdb(ids, path = "raw_pdbs") files <- pdbsplit(raw.files, ids, path = "raw_pdbs/split_chain") ## Sequence/structure alignement pdbs <- pdbaln(files) ## Normal mode analysis on aligned data modes <- nma(pdbs) ## Plot fluctuations plot(modes, pdbs=pdbs) ## Group and spread fluctuation profiles hc <- hclust(as.dist(1-modes$rmsip)) col <- cutree(hc, k=2) plot(modes, pdbs=pdbs, col=col, spread=TRUE) } } \keyword{ hplot } bio3d/man/filter.identity.Rd0000644000176200001440000000417414707230357015447 0ustar liggesusers\name{filter.identity} \alias{filter.identity} \title{ Percent Identity Filter } \description{ Identify and filter subsets of sequences at a given sequence identity cutoff. } \usage{ filter.identity(aln = NULL, ide = NULL, cutoff = 0.6, verbose = TRUE, \dots) } \arguments{ \item{aln}{ sequence alignment list, obtained from \code{\link{seqaln}} or \code{\link{read.fasta}}, or an alignment character matrix. Not used if \sQuote{ide} is given.} \item{ide}{ an optional identity matrix obtained from \code{\link{seqidentity}}. } \item{cutoff}{ a numeric identity cutoff value ranging between 0 and 1. } \item{verbose}{ logical, if TRUE print details of the clustering process. } \item{\dots}{ additional arguments passed to and from functions. } } \details{ This function performs hierarchical cluster analysis of a given sequence identity matrix \sQuote{ide}, or the identity matrix calculated from a given alignment \sQuote{aln}, to identify sequences that fall below a given identity cutoff value \sQuote{cutoff}. } \value{ Returns a list object with components: \item{ind}{indices of the sequences below the cutoff value.} \item{tree}{an object of class \code{"hclust"}, which describes the tree produced by the clustering process. } \item{ide}{a numeric matrix with all pairwise identity values.} } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \seealso{ \code{\link{read.fasta}}, \code{\link{seqaln}}, \code{\link{seqidentity}}, \code{\link{entropy}}, \code{\link{consensus}} } \examples{ attach(kinesin) ide.mat <- seqidentity(pdbs) # Histogram of pairwise identity values op <- par(no.readonly=TRUE) par(mfrow=c(2,1)) hist(ide.mat[upper.tri(ide.mat)], breaks=30,xlim=c(0,1), main="Sequence Identity", xlab="Identity") k <- filter.identity(ide=ide.mat, cutoff=0.6) ide.cut <- seqidentity(pdbs$ali[k$ind,]) hist(ide.cut[upper.tri(ide.cut)], breaks=10, xlim=c(0,1), main="Sequence Identity", xlab="Identity") #plot(k$tree, axes = FALSE, ylab="Sequence Identity") #print(k$ind) # selected par(op) detach(kinesin) } \keyword{ utilities } bio3d/man/diag.ind.Rd0000644000176200001440000000167414707230357014011 0ustar liggesusers\name{diag.ind} \alias{diag.ind} \title{ Diagonal Indices of a Matrix } \description{ Returns a matrix of logicals the same size of a given matrix with entries 'TRUE' in the upper triangle close to the diagonal. } \usage{ diag.ind(x, n = 1, diag = TRUE) } \arguments{ \item{x}{ a matrix. } \item{n}{ the number of elements from the diagonal to include. } \item{diag}{ logical. Should the diagonal be included? } } \details{ Basic function useful for masking elements close to the diagonal of a given matrix. } \value{ Returns a matrix of logicals the same size of a given matrix with entries 'TRUE' in the upper triangle close to the diagonal. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \seealso{ \code{\link{diag}}, \code{\link{lower.tri}}, \code{\link{upper.tri}}, \code{\link{matrix}} } \examples{ diag.ind( matrix(,ncol=5,nrow=5), n=3 ) } \keyword{ utilities } bio3d/man/write.fasta.Rd0000644000176200001440000000424414707230357014557 0ustar liggesusers\name{write.fasta} \alias{write.fasta} \title{ Write FASTA Formated Sequences } \description{ Write aligned or un-aligned sequences to a FASTA format file. } \usage{ write.fasta(alignment=NULL, ids=NULL, seqs=alignment$ali, gap=TRUE, file, append = FALSE) } \arguments{ \item{alignment}{ an alignment list object with \code{id} and \code{ali} components, similar to that generated by \code{\link{read.fasta}}. } \item{ids}{ a vector of sequence names to serve as sequence identifers } \item{seqs}{ an sequence or alignment character matrix or vector with a row per sequence } \item{gap}{ logical, if FALSE gaps will be removed. } \item{file}{ name of output file. } \item{append}{ logical, if TRUE output will be appended to \code{file}; otherwise, it will overwrite the contents of \code{file}. } } \value{ Called for its effect. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \note{ For a description of FASTA format see: \url{https://www.ncbi.nlm.nih.gov/BLAST/blastcgihelp.shtml}. } \seealso{ \code{\link{read.fasta}}, \code{\link{read.fasta.pdb}} } \examples{ \donttest{ # PDB server connection required - testing excluded try({ ## Read a PDB file pdb <- read.pdb("1bg2") ## Extract sequence from PDB file s <- aa321(pdb$seqres) # SEQRES a <- aa321(pdb$atom[pdb$calpha,"resid"]) # ATOM ## Write simple fasta file #write.fasta( seqs=seqbind(s,a), file="eg.fa") #write.fasta( ids=c("seqres","atom"), seqs=seqbind(s,a), file="eg.fa" ) outfile1 = file.path(tempdir(), "eg.fa") write.fasta(list( id=c("seqres"),ali=s ), file = outfile1) write.fasta(list( id=c("atom"),ali=a ), file = outfile1, append=TRUE) ## Align seqres and atom records #seqaln(seqbind(s,a)) ## Read alignment aln<-read.fasta(system.file("examples/kif1a.fa",package="bio3d")) ## Cut all but positions 130 to 245 aln$ali=aln$ali[,130:245] outfile2 = file.path(tempdir(), "eg2.fa") write.fasta(aln, file = outfile2) invisible( cat("\nSee the output files:", outfile1, outfile2, sep="\n") ) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } \keyword{ IO } bio3d/man/pymol.Rd0000644000176200001440000001245014707230357013466 0ustar liggesusers\name{pymol} \alias{pymol} \alias{pymol.pdbs} \alias{pymol.nma} \alias{pymol.pca} \alias{pymol.modes} \alias{pymol.dccm} \title{ Biomolecular Visualization with PyMOL } \description{ Visualize Bio3D structure objects in PyMOL } \usage{ pymol(\dots) \method{pymol}{pdbs}(pdbs, col=NULL, as="ribbon", file=NULL, type="script", exefile="pymol", user.vec=NULL, \dots) \method{pymol}{nma}(\dots) \method{pymol}{pca}(\dots) \method{pymol}{modes}(modes, mode=NULL, file=NULL, scale=5, dual=FALSE, type="script", exefile="pymol", \dots) \method{pymol}{dccm}(dccm, pdb, file=NULL, step=0.2, omit=0.2, radius = 0.15, type="script", exefile="pymol", \dots) } \arguments{ \item{pdbs}{ aligned C-alpha Cartesian coordinates as obtained with \code{\link{read.fasta.pdb}} or \code{\link{pdbaln}}. } \item{col}{ a single element character vector specifying the coloring of the structures. Options are: \sQuote{index}, \sQuote{index2}, \sQuote{gaps}, \sQuote{rmsf}, \sQuote{user}. Special cases: Provide a \sQuote{core} object as obtained by \code{core.find} to color on the invariant core. Alternatively, provide a vector containing the color code for each structure in the \sQuote{pdbs} object. } \item{user.vec}{ User defined vector for coloring. Only used if \code{col="user"}. } \item{as}{ show as \sQuote{ribbon}, \sQuote{cartoon}, \sQuote{lines}, \sQuote{putty}. } \item{file}{ a single element character vector specifying the file name of the PyMOL session/script file. } \item{type}{ a single element character vector specifying the output type: \sQuote{script} generates a .pml script; \sQuote{session} generates a .pse session file; \sQuote{launch} launches pymol. } \item{exefile}{ file path to the \sQuote{PYMOL} program on your system (i.e. how is \sQuote{PYMOL} invoked). If \code{NULL}, use OS-dependent default path to the program. } \item{modes}{ an object of class \code{nma} or \code{pca} as obtained from functions \code{nma} or \code{pca.xyz}. } \item{mode}{ the mode number for which the vector field should be made. } \item{scale}{ global scaling factor. } \item{dual}{ logical, if TRUE mode vectors are also drawn in both direction. } \item{dccm}{ an object of class \code{dccm} as obtained from function \code{\link{dccm}}. } \item{pdb}{ an object of class \code{pdb} as obtained from function \code{read.pdb} or a numerical vector of Cartesian coordinates. } \item{step}{ binning interval of cross-correlation coefficents. } \item{omit}{ correlation coefficents with values (0-omit, 0+omit) will be omitted from visualization. } \item{radius}{ numeric, radius of visualized correlation cylinders in PyMol. Alternatively, a matrix with the same dimesions as \code{dccm} can be provided, e.g. to draw cylinders with radii associated to the pairwise correlation value. } \item{\dots}{ arguments passed to function \code{pymol.modes} for \sQuote{nma} and \sQuote{pca} objects. } } \details{ These functions provides a convenient approach for the visualization of Bio3D objects in PyMOL. See examples for more details. DCCM PyMOL visualization: This function generates a PyMOL (python) script that will draw colored lines between (anti)correlated residues. The PyMOL script file is stored in the working directory with filename \dQuote{R.py}. PyMOL will only be launched (and opened) when using argument \sQuote{type='launch'}. Alternatively a PDB file with CONECT records will be generated (when argument \code{type='pdb'}). For the PyMOL version, PyMOL CGO objects are generated - each object representing a range of correlation values (corresponding to the actual correlation values as found in the correlation matrix). E.g. the PyMOL object with name \dQuote{cor_-1_-08} would display all pairs of correlations with values between -1 and -0.8. NMA / PCA PyMOL vector field visualization: This function generates a PyMOL (python) script for drawing mode vectors on a PDB structure. The PyMOL script file is stored in the working directory with filename \dQuote{R.py}. } \value{ Called for its action } \references{ Skjaerven, L. et al. (2014) \emph{BMC Bioinformatics} \bold{15}, 399. Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{view} } \examples{ \dontrun{ ##- pymol with a 'pdbs' object attach(transducin) # build a pymol session containing all structures in the PDBs object pymol(pdbs) # color by invariant core ( # core <- core.find(pdbs) pymol(pdbs, col=core) # color by RMSF pymol(pdbs, col="rmsf") # color by a user defined vector # For example, colored by averaged contact density around each residue cm <- cmap(pdbs, binary=FALSE) vec <- rowSums(cm, na.rm=TRUE) pymol(pdbs, col="user", user.vec=vec) # color by clustering rd <- rmsd(pdbs$xyz) hc <- hclust(as.dist(rd)) grps <- cutree(hc, k=3) pymol(pdbs, col=grps) ##- pymol with a 'dccm' object ## Fetch stucture pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) ## Calculate normal modes modes <- nma(pdb) ## Calculate correlation matrix cm <- dccm.nma(modes) pymol(cm, modes$xyz) ##- pymol with a 'nma' or 'pca' object pymol(modes, mode=7) detach(transducin) } } bio3d/man/plot.dmat.Rd0000644000176200001440000000763614707230357014242 0ustar liggesusers\name{plot.dmat} \alias{plot.dmat} \title{ Plot Distance Matrix } \description{ Plot a distance matrix (DM) or a difference distance matrix (DDM). } \usage{ \method{plot}{dmat}(x, key = TRUE, resnum.1 = c(1:ncol(x)), resnum.2 = resnum.1, axis.tick.space = 20, zlim = range(x, finite = TRUE), nlevels = 20, levels = pretty(zlim, nlevels), color.palette = bwr.colors, col = color.palette(length(levels) - 1), axes = TRUE, key.axes, xaxs = "i", yaxs = "i", las = 1, grid = TRUE, grid.col = "yellow", grid.nx = floor(ncol(x)/30), grid.ny = grid.nx, center.zero = TRUE, flip=TRUE, ...) } \arguments{ \item{x}{ a numeric distance matrix generated by the function \code{\link{dm}}. } \item{key}{ logical, if TRUE a color key is plotted. } \item{resnum.1}{ a vector of residue numbers for annotating the x axis. } \item{resnum.2}{ a vector of residue numbers for annotating the y axis. } \item{axis.tick.space}{ the separation between each axis tick mark. } \item{zlim}{ z limits for the distances to be plotted. } \item{nlevels}{ if \code{levels} is not specified, the range of 'z' values is divided into approximately this many levels. } \item{levels}{ a set of levels used to partition the range of 'z'. Must be *strictly* increasing (and finite). Areas with 'z' values between consecutive levels are painted with the same color. } \item{color.palette}{ a color palette function, used to assign colors in the plot. } \item{col}{ an explicit set of colors to be used in the plot. This argument overrides any palette function specification. } \item{axes}{ logical, if TRUE plot axes are drawn. } \item{key.axes}{ statements which draw axes on the plot key. It overrides the default axis. } \item{xaxs}{ the x axis style. The default is to use internal labeling. } \item{yaxs}{ the y axis style. The default is to use internal labeling. } \item{las}{ the style of labeling to be used. The default is to use horizontal labeling. } \item{grid}{ logical, if TRUE overlaid grid is drawn. } \item{grid.col}{ color of the overlaid grid. } \item{grid.nx}{ number of grid cells in the x direction. } \item{grid.ny}{ number of grid cells in the y direction. } \item{center.zero}{ logical, if TRUE levels are forced to be equidistant around zero, assuming that zlim ranges from less than to more than zero. } \item{flip}{ logical, indicating whether the second axis should be fliped. } \item{\dots}{ additional graphical parameters for image. } } \value{ Called for its effect. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696.T Much of this function is based on the \code{filled.contour} function by Ross Ihaka. } \author{ Barry Grant } \note{ This function is based on the \code{layout} and legend key code in the function \code{filled.contour} by Ross Ihaka. As with \code{filled.contour} the output is a combination of two plots: the legend and (in this case) \code{image} (rather than a contour plot). } \seealso{ \code{\link{dm}}, \code{\link{filled.contour}}, \code{\link{contour}}, \code{\link{image}} } \examples{ # Read PDB file pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) # DM d <- dm(pdb,"calpha") # Plot DM ##filled.contour(d, nlevels = 4) ##plot(d) plot(d, resnum.1 = pdb$atom[pdb$calpha,"resno"], color.palette = mono.colors, xlab="Residue Number", ylab="Residue Number") \dontrun{ # Download and align two PDB files pdbs <- pdbaln( get.pdb( c( "4q21", "521p"), path=tempdir(), overwrite=TRUE)) # Get distance matrix a <- dm.xyz(pdbs$xyz[1,]) b <- dm.xyz(pdbs$xyz[2,]) # Calculate DDM c <- a - b # Plot DDM plot(c,key=FALSE, grid=FALSE) plot(c, axis.tick.space=10, resnum.1=pdbs$resno[1,], resnum.2=pdbs$resno[2,], grid.col="black", xlab="Residue No. (4q21)", ylab="Residue No. (521p)") } } \keyword{ hplot } bio3d/man/mustang.Rd0000644000176200001440000000611714707230357014007 0ustar liggesusers\name{mustang} \alias{mustang} \title{ Structure-based Sequence Alignment with MUSTANG } \description{ Create a multiple sequence alignment from a bunch of PDB files. } \usage{ mustang(files, exefile="mustang", outfile="aln.mustang.fa", cleanpdb=FALSE, cleandir="mustangpdbs", verbose=TRUE) } \arguments{ \item{files}{ a character vector of PDB file names. } \item{exefile}{ file path to the \sQuote{MUSTANG} program on your system (i.e. how is \sQuote{MUSTANG} invoked). } \item{outfile}{ name of \sQuote{FASTA} output file to which alignment should be written. } \item{cleanpdb}{ logical, if TRUE iterate over the PDB files and map non-standard residues to standard residues (e.g. SEP->SER..) to produce \sQuote{clean} PDB files. } \item{cleandir}{ character string specifying the directory in which the \sQuote{clean} PDB files should be written. } \item{verbose}{ logical, if TRUE \sQuote{MUSTANG} warning and error messages are printed. } } \details{ Structure-based sequence alignment with \sQuote{MUSTANG} attempts to arrange and align the sequences of proteins based on their 3D structure. This function calls the \sQuote{MUSTANG} program, to perform a multiple structure alignment, which MUST BE INSTALLED on your system and in the search path for executables. Note that non-standard residues are mapped to \dQuote{Z} in MUSTANG. As a workaround the bio3d \sQuote{mustang} function will attempt to map any non-standard residues to standard residues (e.g. SEP->SER, etc). To avoid this behaviour use \sQuote{cleanpdb=FALSE}. } \value{ A list with two components: \item{ali}{ an alignment character matrix with a row per sequence and a column per equivalent aminoacid. } \item{ids}{ sequence names as identifers.} } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. \sQuote{MUSTANG} is the work of Konagurthu et al: Konagurthu, A.S. et al. (2006) \emph{Proteins} \bold{64}(3):559--74. More details of the \sQuote{MUSTANG} algorithm, along with download and installation instructions can be obtained from:\cr \url{https://lcb.infotech.monash.edu/mustang/}. } \author{ Lars Skjaerven } \note{ A system call is made to the \sQuote{MUSTANG} program, which must be installed on your system and in the search path for executables. } \seealso{ \code{\link{read.fasta}}, \code{\link{read.fasta.pdb}}, \code{\link{pdbaln}}, \code{\link{plot.fasta}}, \code{\link{seqaln}} } \examples{ \dontrun{ if(!check.utility('mustang')) { message('Need MUSTANG installed to run this example') } else { ## Fetch PDB files and split to chain A only PDB files ids <- c("1a70_A", "1czp_A", "1frd_A") files <- get.pdb(ids, split = TRUE, path = tempdir()) ##-- Or, read a folder/directory of existing PDB files #pdb.path <- "my_dir_of_pdbs" #files <- list.files(path=pdb.path , # pattern=".pdb", # full.names=TRUE) ##-- Align these PDB sequences aln <- mustang(files) ##-- Read Aligned PDBs storing coordinate data pdbs <- read.fasta.pdb(aln) } } } \keyword{ utilities } bio3d/man/plot.fluct.Rd0000644000176200001440000001105714707230357014422 0ustar liggesusers\name{plot.fluct} \alias{plot.fluct} \title{ Plot Fluctuations } \description{ Produces a plot of atomic fluctuations obtained from ensemble normal mode analysis or molecular dynamics simulations. } \usage{ \method{plot}{fluct}(x, col = NULL, label = rownames(x), signif = FALSE, p.cutoff = 0.005, q.cutoff = 0.04, s.cutoff = 5, n.cutoff = 2, mean = FALSE, polygon = FALSE, spread = FALSE, offset = 1, ncore = NULL, ...) } \arguments{ \item{x}{ a numeric vector or matrix containing atomic fluctuation data obtained from e.g. \code{\link{nma.pdbs}} or \code{\link{rmsf}}. } \item{col}{ a character vector of plotting colors. Used also to group fluctuation profiles. NA values in col will omit the corresponding fluctuation profile in the plot. } \item{label}{ a character vector of plotting labels with length matching \code{nrow(x)}. If \code{mean=TRUE}, the length of \code{label} can be equal to the number of categories indicated by \code{col}. } \item{signif}{ logical, if TRUE significance of fluctuation difference is calculated and annotated for each atomic position. } \item{p.cutoff}{ Cutoff of p-value to define significance. } \item{q.cutoff}{ Cutoff of the mean fluctuation difference to define significance. } \item{s.cutoff}{ Cutoff of sample size in each group to calculate the significance. } \item{n.cutoff}{ Cutoff of consecutive residue positions with significant fluctuation difference. If the actual number is less than the cutoff, correponding postions will not be annotated. } \item{mean}{ logical, if TRUE plot mean fluctuations of each group. Significance is still calculated with the original data. } \item{polygon}{ logical, if TRUE a nicer plot with area under the line for the first row of \code{x} are filled with polygons. } \item{ncore }{ number of CPU cores used to do the calculation. By default (\code{ncore=NULL}), use all available CPU cores. The argument is only used when \code{signif=TRUE}. } \item{spread}{ logical, if TRUE the fluctuation profiles are spread - i.e. not on top of each other. } \item{offset}{ numerical offset value in use when \sQuote{spread=TRUE}. } \item{\dots}{ extra plotting arguments passed to \code{plot.bio3d}. } } \details{ The significance calculation is performed when \code{signif=TRUE} and there are at least two groups with sample size larger than or equal to \code{s.cutoff}. A "two-sided" student's t-test is performed for each atomic position (each column of \code{x}). If \code{x} contains gaps, indicated by \code{NA}s, only non-gapped positions are considered. The position is considered significant if both \code{p-value <= p.cutoff} and the mean value difference of the two groups, q, satisfies \code{q >= q.cutoff}. If more than two groups are available, every pair of groups are subjected to the t-test calculation and the minimal p-value along with the q-value for the corresponding pair are used for the significance evaluation. } \value{ If significance is calculated, return a vector indicating significant positions. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Xin-Qiu Yao, Lars Skjaerven, Barry Grant } \seealso{ \code{\link{plot.bio3d}}, \code{\link{rmsf}}, \code{\link{nma.pdbs}}, \code{\link[stats:t.test]{t.test}}, \code{\link[graphics:polygon]{polygon}}. } \examples{ \dontrun{ ## load transducin example data attach(transducin) ## subset of pdbs to analyze inds = c(1:5, 16:20) pdbs <- trim(pdbs, row.inds=inds) gaps.res = gap.inspect(pdbs$ali) ## reference RESNO and SSE for axis annotations resno <- pdbs$resno[1, gaps.res$f.inds] sse <- pdbs$sse[1, gaps.res$f.inds] ## eNMA calculation and obtain modes of motion including atomic fluctuations modes <- nma(pdbs, ncore=NULL) x = modes$fluctuation ## simple line plot with SSE annotation plot.fluct(x, sse=sse, resno=resno) ## group data by specifying colors of each fluctuation line; same color indicates ## same group. Also do significance calculation and annotation col = c(rep('red', 5), rep('blue', 5)) plot.fluct(x, col=col, signif=TRUE, sse=sse, resno=resno) ## spread lines plot.fluct(x, col=col, signif=TRUE, sse=sse, resno=resno, typ='l', spread=TRUE) ## show only line of mean values for each group. ## Nicer plot with area shaded for the first group. plot.fluct(x, col=col, signif=TRUE, sse=sse, resno=resno, mean=TRUE, polygon=TRUE, label=c('GTP', 'GDI')) detach(transducin) } } \keyword{ hplot } bio3d/man/struct.aln.Rd0000644000176200001440000000730514707230357014426 0ustar liggesusers\name{struct.aln} \alias{struct.aln} \title{ Structure Alignment Of Two PDB Files } \description{ Performs a sequence and structural alignment of two PDB entities. } \usage{ struct.aln(fixed, mobile, fixed.inds=NULL, mobile.inds=NULL, write.pdbs=TRUE, outpath = "fitlsq", prefix=c("fixed", "mobile"), max.cycles=10, cutoff=0.5, ... ) } \arguments{ \item{fixed}{ an object of class \code{pdb} as obtained from function \code{read.pdb}. } \item{mobile}{ an object of class \code{pdb} as obtained from function \code{read.pdb}. } \item{fixed.inds}{ atom and xyz coordinate indices obtained from \code{atom.select} that selects the elements of \code{fixed} upon which the calculation should be based.} \item{mobile.inds}{ atom and xyz coordinate indices obtained from \code{atom.select} that selects the elements of \code{mobile} upon which the calculation should be based.} \item{write.pdbs}{ logical, if TRUE the aligned structures are written to PDB files.} \item{outpath}{ character string specifing the output directory when \code{write.pdbs} is TRUE. } \item{prefix}{ a character vector of length 2 containing the filename prefix in which the fitted structures should be written. } \item{max.cycles}{ maximum number of refinement cycles.} \item{cutoff}{ standard deviation of the pairwise distances for aligned residues at which the fitting refinement stops.} \item{\dots}{ extra arguments passed to \code{seqaln} function.} } \details{ This function performs a sequence alignment followed by a structural alignment of the two PDB entities. Cycles of refinement steps of the structural alignment are performed to improve the fit by removing atoms with a high structural deviation. The primary purpose of the function is to allow rapid structural alignment (and RMSD analysis) for protein structures with unequal, but related sequences. The function reports the residues of \code{fixed} and \code{mobile} included in the final structural alignment, as well as the related RMSD values. This function makes use of the underlying functions \code{seqaln}, \code{rot.lsq}, and \code{rmsd}. } \value{ Returns a list with the following components: \item{a.inds}{ atom and xyz indices of \code{fixed}. } \item{b.inds}{ atom and xyz indices of \code{mobile}. } \item{xyz}{ fitted xyz coordinates of \code{mobile}. } \item{rmsd}{ a numeric vector of RMSD values after each cycle of refinement. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjarven } \seealso{ \code{\link{rmsd}}, \code{\link{rot.lsq}}, \code{\link{seqaln}}, \code{\link{pdbaln}} } \examples{ \donttest{ # Needs MUSCLE installed - testing excluded if(check.utility("muscle")) { try({ ## Stucture of PKA: a <- read.pdb("1cmk") ## Stucture of PKB: b <- read.pdb("2jdo") ## Align and fit b on to a: path = file.path(tempdir(), "struct.aln") aln <- struct.aln(a, b, outpath = path, outfile = tempfile()) ## Should be the same as aln$rmsd (when using aln$a.inds and aln$b.inds) rmsd(a$xyz, b$xyz, aln$a.inds$xyz, aln$b.inds$xyz, fit=TRUE) invisible( cat("\nSee the output files:", list.files(path, full.names = TRUE), sep="\n") ) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } \dontrun{ ## Align two subunits of GroEL (open and closed states) a <- read.pdb("1sx4") b <- read.pdb("1xck") ## Select chain A only a.inds <- atom.select(a, chain="A") b.inds <- atom.select(b, chain="A") ## Align and fit: aln <- struct.aln(a,b, a.inds, b.inds) } } \keyword{ utilities } bio3d/man/filter.rmsd.Rd0000644000176200001440000000425414707230357014562 0ustar liggesusers\name{filter.rmsd} \alias{filter.rmsd} \title{ RMSD Filter } \description{ Identify and filter subsets of conformations at a given RMSD cutoff. } \usage{ filter.rmsd(xyz = NULL, rmsd.mat = NULL, cutoff = 0.5, fit = TRUE, verbose = TRUE, inds = NULL, method = "complete", \dots) } \arguments{ \item{xyz}{ a numeric matrix or list object containing multiple coordinates for pairwise comparison, such as that obtained from \code{\link{read.fasta.pdb}}. Not used if \code{rmsd.mat} is given. } \item{rmsd.mat}{ an optional matrix of RMSD values obtained from \code{\link{rmsd}}. } \item{cutoff}{ a numeric rmsd cutoff value. } \item{fit}{ logical, if TRUE coordinate superposition is performed prior to RMSD calculation. } \item{verbose}{ logical, if TRUE progress details are printed. } \item{inds}{ a vector of indices that selects the elements of \code{xyz} upon which the calculation should be based. By default, all the non-gap sites in \code{xyz}. } \item{method}{ the agglomeration method to be used. See function \code{\link{hclust}} for more information. } \item{\dots}{ additional arguments passed to and from functions. } } \details{ This function performs hierarchical cluster analysis of a given matrix of RMSD values \sQuote{rmsd.mat}, or an RMSD matrix calculated from a given coordinate matrix \sQuote{xyz}, to identify conformers that fall below a given RMSD cutoff value \sQuote{cutoff}. } \value{ Returns a list object with components: \item{ind}{indices of the conformers (rows) below the cutoff value.} \item{tree}{an object of class \code{"hclust"}, which describes the tree produced by the clustering process. } \item{rmsd.mat}{a numeric matrix with all pairwise RMSD values.} } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \seealso{ \code{\link{rmsd}}, \code{\link{read.pdb}}, \code{\link{read.fasta.pdb}}, \code{\link{read.dcd}} } \examples{ \dontrun{ attach(kinesin) k <- filter.rmsd(xyz=pdbs,cutoff=0.5) pdbs$id[k$ind] hclustplot(k$tree, h=0.5, ylab="RMSD") abline(h=0.5, col="gray") detach(kinesin) } } \keyword{ utilities } bio3d/man/read.pdb.Rd0000644000176200001440000001435314707230357014011 0ustar liggesusers\name{read.pdb} \alias{read.pdb} \alias{read.pdb2} \alias{print.pdb} \alias{summary.pdb} \title{ Read PDB File} \description{ Read a Protein Data Bank (PDB) coordinate file. } \usage{ read.pdb(file, maxlines = -1, multi = FALSE, rm.insert = FALSE, rm.alt = TRUE, ATOM.only = FALSE, hex = FALSE, verbose = TRUE) read.pdb2(file, maxlines = -1, multi = FALSE, rm.insert = FALSE, rm.alt = TRUE, ATOM.only = FALSE, verbose = TRUE) \method{print}{pdb}(x, printseq=TRUE, \dots) \method{summary}{pdb}(object, printseq=FALSE, \dots) } \arguments{ \item{file}{ a single element character vector containing the name of the PDB file to be read, or the four letter PDB identifier for online file access. } \item{maxlines}{ the maximum number of lines to read before giving up with large files. By default if will read up to the end of input on the connection. } \item{multi}{ logical, if TRUE multiple ATOM records are read for all models in multi-model files and their coordinates returned. } \item{rm.insert}{ logical, if TRUE PDB insert records are ignored. } \item{rm.alt}{ logical, if TRUE PDB alternate records are ignored. } \item{ATOM.only}{ logical, if TRUE only ATOM/HETATM records are stored. Useful for speed enhancements with large files where secondary structure, biological unit and other remark records are not required. } \item{hex}{ logical, if TRUE enable parsing of hexadecimal atom numbers (> 99.999) and residue numbers (> 9.999) (e.g. from VMD). Note that numbering is assumed to be consecutive (with no missing numbers) and the hexadecimals should start at atom number 100.000 and residue number 10.000 and proceed to the end of file. } \item{verbose}{ print details of the reading process. } \item{x}{ a PDB structure object obtained from \code{\link{read.pdb}}. } \item{object}{ a PDB structure object obtained from \code{\link{read.pdb}}. } \item{printseq}{ logical, if TRUE the PDB ATOM sequence will be printed to the screen. See also \code{\link{pdbseq}}. } \item{...}{ additional arguments to \sQuote{print}. } } \details{ \code{read.pdb} is a re-implementation (using Rcpp) of the slower but more tested R implementation of the same function (called \code{read.pdb2} since bio3d-v2.3). \code{maxlines} may be set so as to restrict the reading to a portion of input files. Note that the preferred means of reading large multi-model files is via binary DCD or NetCDF format trajectory files (see the \code{\link{read.dcd}} and \code{\link{read.ncdf}} functions). } \value{ Returns a list of class \code{"pdb"} with the following components: \item{atom}{ a data.frame containing all atomic coordinate ATOM and HETATM data, with a row per ATOM/HETATM and a column per record type. See below for details of the record type naming convention (useful for accessing columns). } \item{helix }{ \sQuote{start}, \sQuote{end} and \sQuote{length} of H type sse, where start and end are residue numbers \dQuote{resno}. } \item{sheet }{ \sQuote{start}, \sQuote{end} and \sQuote{length} of E type sse, where start and end are residue numbers \dQuote{resno}. } \item{seqres }{ sequence from SEQRES field. } \item{xyz }{ a numeric matrix of class \code{"xyz"} containing the ATOM and HETATM coordinate data. } \item{calpha }{ logical vector with length equal to \code{nrow(atom)} with TRUE values indicating a C-alpha \dQuote{elety}. } \item{remark }{ a list object containing information taken from 'REMARK' records of a \code{"pdb"}. It can be used for building biological units (See \code{\link{biounit}}). } \item{call }{ the matched call. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. For a description of PDB format (version3.3) see:\cr \url{http://www.wwpdb.org/documentation/format33/v3.3.html}. } \author{ Barry Grant } \note{ For both \code{atom} and \code{het} list components the column names can be used as a convenient means of data access, namely: Atom serial number \dQuote{eleno} , Atom type \dQuote{elety}, Alternate location indicator \dQuote{alt}, Residue name \dQuote{resid}, Chain identifier \dQuote{chain}, Residue sequence number \dQuote{resno}, Code for insertion of residues \dQuote{insert}, Orthogonal coordinates \dQuote{x}, Orthogonal coordinates \dQuote{y}, Orthogonal coordinates \dQuote{z}, Occupancy \dQuote{o}, and Temperature factor \dQuote{b}. See examples for further details. } \seealso{ \code{\link{atom.select}}, \code{\link{write.pdb}}, \code{\link{trim.pdb}}, \code{\link{cat.pdb}}, \code{\link{read.prmtop}}, \code{\link{as.pdb}}, \code{\link{read.dcd}}, \code{\link{read.ncdf}}, \code{\link{read.fasta.pdb}}, \code{\link{read.fasta}}, \code{\link{biounit}} } \examples{ ## Read a PDB file from the RCSB online database #pdb <- read.pdb("4q21") ## Read a PDB file from those included with the package pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) ## Print a brief composition summary pdb ## Examine the storage format (or internal *str*ucture) str(pdb) ## Print data for the first four atom pdb$atom[1:4,] ## Print some coordinate data head(pdb$atom[, c("x","y","z")]) ## Or coordinates as a numeric vector #head(pdb$xyz) ## Print C-alpha coordinates (can also use 'atom.select' function) head(pdb$atom[pdb$calpha, c("resid","elety","x","y","z")]) inds <- atom.select(pdb, elety="CA") head( pdb$atom[inds$atom, ] ) ## The atom.select() function returns 'indices' (row numbers) ## that can be used for accessing subsets of PDB objects, e.g. inds <- atom.select(pdb,"ligand") pdb$atom[inds$atom,] pdb$xyz[inds$xyz] ## See the help page for atom.select() function for more details. \dontrun{ ## Print SSE data for helix and sheet, ## see also dssp() and stride() functions print.sse(pdb) pdb$helix pdb$sheet$start ## Print SEQRES data pdb$seqres ## SEQRES as one letter code aa321(pdb$seqres) ## Where is the P-loop motif in the ATOM sequence inds.seq <- motif.find("G....GKT", pdbseq(pdb)) pdbseq(pdb)[inds.seq] ## Where is it in the structure inds.pdb <- atom.select(pdb,resno=inds.seq, elety="CA") pdb$atom[inds.pdb$atom,] pdb$xyz[inds.pdb$xyz] ## View in interactive 3D mode #view(pdb) } } \keyword{ IO } bio3d/man/pairwise.Rd0000644000176200001440000000111214707230357014142 0ustar liggesusers\name{pairwise} \alias{pairwise} \title{ Pair Indices } \description{ A utility function to determine indices for pairwise comparisons. } \usage{ pairwise(N) } \arguments{ \item{N}{ a single numeric value representing the total number of things to undergo pairwise comparison. } } \value{ Returns a two column numeric matrix giving the indices for all pairs. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \seealso{ \code{\link{seqidentity}} } \examples{ pairwise(3) pairwise(20) } \keyword{ utilities } bio3d/man/example.data.Rd0000644000176200001440000000532514707230357014674 0ustar liggesusers\name{example.data} \docType{data} \alias{example.data} \alias{kinesin} \alias{transducin} \alias{pdbs} \alias{core} \alias{annotation} \alias{hivp} \title{Bio3d Example Data} \description{ These data sets contain the results of running various Bio3D functions on example kinesin and transducin structural data, and on a short coarse-grained MD simulation data for HIV protease. The main purpose of including this data (which may be generated by the user by following the extended examples documented within the various Bio3D functions) is to speed up example execution. It should allow users to more quickly appreciate the capabilities of functions that would otherwise require raw data download, input and processing before execution. Note that related datasets formed the basis of the work described in (Grant, 2007) and (Yao & Grant, 2013) for \code{kinesin} and \code{transducin} examples, respectively. } \usage{ data(kinesin) data(transducin) data(hivp) } \format{ Three objects from analysis of the \code{kinesin} and \code{transducin} sequence and structure data: \enumerate{ \item pdbs is a list of class \code{pdbs} containing aligned PDB structure data. In the case of transducin this is the output of running \code{\link{pdbaln}} on a set of 53 G[alpha]i structures from the PDB database (see \code{pdbs$id} or \code{annotation} described below for details). The coordinates are fitted onto the first structure based on \code{"core"} positions obtained from \code{\link{core.find}} and superposed using the function \code{\link{pdbfit}}. \item core is a list of class \code{"core"} obtained by running the function \code{\link{core.find}} on the \code{pdbs} object as described above. \item annotation is a character matrix describing the nucleotide state and bound ligand species for each structure in \code{pdbs} as obtained from the function \code{\link{pdb.annotate}}. } One object named \code{net} in the hivp example data stores the correlation network obtained from the analysis of the MD simulation trajectory of HIV protease using the \code{cna} function. The original trajectory file can be accessed by the command \sQuote{system.file("examples/hivp.dcd", package="bio3d")}. } \source{ A related but more extensive dataset formed the basis of the work described in (Grant, 2007) and (Yao & Grant, 2013) for \code{kinesin} and \code{transducin} examples, respectively. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. Grant, B.J. et al. (2007) \emph{J. Mol. Biol.} \bold{368}, 1231--1248. Yao, X.Q. et al. (2013) \emph{Biophys. J.} \bold{105}, L08--L10. } \keyword{datasets} bio3d/man/torsion.xyz.Rd0000644000176200001440000000632114707230357014654 0ustar liggesusers\name{torsion.xyz} \alias{torsion.xyz} \title{ Calculate Torsion/Dihedral Angles } \description{ Defined from the Cartesian coordinates of four successive atoms (A-B-C-D) the torsion or dihedral angle is calculated about an axis defined by the middle pair of atoms (B-C). } \usage{ torsion.xyz(xyz, atm.inc = 4) } \arguments{ \item{xyz}{ a numeric vector of Cartisean coordinates. } \item{atm.inc}{ a numeric value indicating the number of atoms to increment by between successive torsion evaluations (see below). } } \details{ The conformation of a polypeptide or nucleotide chain can be usefully described in terms of angles of internal rotation around its constituent bonds. If a system of four atoms A-B-C-D is projected onto a plane normal to bond B-C, the angle between the projection of A-B and the projection of C-D is described as the torsion angle of A and D about bond B-C. By convention angles are measured in the range -180 to +180, rather than from 0 to 360, with positive values defined to be in the clockwise direction. With \code{atm.inc=1}, torsion angles are calculated for each set of four successive atoms contained in \code{xyz} (i.e. moving along one atom, or three elements of \code{xyz}, between sucessive evaluations). With \code{atm.inc=4}, torsion angles are calculated for each set of four successive non-overlapping atoms contained in \code{xyz} (i.e. moving along four atoms, or twelve elements of \code{xyz}, between sucessive evaluations). } \value{ A numeric vector of torsion angles. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Karim ElSawy } \note{ Contributions from Barry Grant. } \seealso{ \code{\link{torsion.pdb}}, \code{\link{pca.tor}}, \code{\link{wrap.tor}}, \code{\link{read.pdb}}, \code{\link{read.dcd}}. } \examples{ ## Calculate torsions for cis & trans conformers xyz <- rbind(c(0,-0.5,0,1,0,0,1,1,0,0,1.5,0), c(0,-0.5,0,1,0,0,1,1,0,2,1.5,0)-3) cis.tor <- torsion.xyz( xyz[1,] ) trans.tor <- torsion.xyz( xyz[2,] ) apply(xyz, 1, torsion.xyz) plot(range(xyz), range(xyz), xlab="", ylab="", typ="n", axes=FALSE) apply(xyz, 1, function(x){ lines(matrix(x, ncol=3, byrow=TRUE), lwd=4) points(matrix(x, ncol=3, byrow=TRUE), cex=2.5, bg="white", col="black", pch=21) } ) text( t(apply(xyz, 1, function(x){ apply(matrix(x, ncol=3, byrow=TRUE)[c(2,3),], 2, mean) })), labels=c(0,180), adj=-0.5, col="red") \donttest{ # PDB server connection required - testing excluded try({ ##-- PDB torsion analysis pdb <- read.pdb("1bg2") tor <- torsion.pdb(pdb) ## basic Ramachandran plot plot(tor$phi, tor$psi) ## torsion analysis of a single coordinate vector inds <- atom.select(pdb,"calpha") tor.ca <- torsion.xyz(pdb$xyz[inds$xyz], atm.inc=3) ##-- Compare two PDBs to highlight interesting residues aln <- read.fasta(system.file("examples/kif1a.fa",package="bio3d")) m <- read.fasta.pdb(aln) a <- torsion.xyz(m$xyz[1,],1) b <- torsion.xyz(m$xyz[2,],1) ## Note the periodicity of torsion angles d <- wrap.tor(a-b) plot(m$resno[1,],d, typ="h") }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } \keyword{ utilities } bio3d/man/gap.inspect.Rd0000644000176200001440000000421314707230357014537 0ustar liggesusers\name{gap.inspect} \alias{gap.inspect} \title{ Alignment Gap Summary } \description{ Report the number of gaps per sequence and per position for a given alignment. } \usage{ gap.inspect(x) } \arguments{ \item{x}{ a matrix or an alignment data structure obtained from \code{\link{read.fasta}} or \code{\link{read.fasta.pdb}}.} } \details{ Reports the number of gap characters per row (i.e. sequence) and per column (i.e. position) for a given \code{alignment}. In addition, the indices for gap and non-gap containing coloums are returned along with a binary matrix indicating the location of gap positions. } \value{ Returns a list object with the following components: \item{row }{a numeric vector detailing the number of gaps per row (i.e. sequence).} \item{col }{a numeric vector detailing the number of gaps per column (i.e. position).} \item{t.inds }{ indices for gap containing coloums } \item{f.inds }{ indices for non-gap containing coloums} \item{bin }{a binary numeric matrix with the same dimensions as the \code{alignment}, with 0 at non-gap positions and 1 at gap positions.} } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \note{ During alignment, gaps are introduced into sequences that are believed to have undergone deletions or insertions with respect to other sequences in the alignment. These gaps, often referred to as indels, can be represented with \sQuote{NA}, a \sQuote{-} or \sQuote{.} character. This function gives an overview of gap occurrence and may be useful when considering positions or sequences that could/should be excluded from further analysis. } \seealso{ \code{\link{read.fasta}}, \code{\link{read.fasta.pdb}}} \examples{ aln <- read.fasta( system.file("examples/hivp_xray.fa", package = "bio3d") ) gap.stats <- gap.inspect(aln$ali) gap.stats$row # Gaps per sequence gap.stats$col # Gaps per position ##gap.stats$bin # Binary matrix (1 for gap, 0 for aminoacid) ##aln[,gap.stats$f.inds] # Alignment without gap positions plot(gap.stats$col, typ="h", ylab="No. of Gaps") } \keyword{ utilities } bio3d/man/geostas.Rd0000644000176200001440000001745314707230357014003 0ustar liggesusers\name{geostas} \alias{geostas} \alias{geostas.default} \alias{geostas.xyz} \alias{geostas.nma} \alias{geostas.enma} \alias{geostas.pdb} \alias{geostas.pdbs} \alias{amsm.xyz} \alias{print.geostas} \title{ GeoStaS Domain Finder } \description{ Identifies geometrically stable domains in biomolecules } \usage{ geostas(\dots) \method{geostas}{default}(\dots) \method{geostas}{xyz}(xyz, amsm = NULL, k = 3, pairwise = TRUE, clustalg = "kmeans", fit = TRUE, ncore = NULL, verbose=TRUE, \dots) \method{geostas}{nma}(nma, m.inds = 7:11, verbose=TRUE, \dots) \method{geostas}{enma}(enma, pdbs = NULL, m.inds = 1:5, verbose=TRUE, \dots) \method{geostas}{pdb}(pdb, inds = NULL, verbose=TRUE, \dots) \method{geostas}{pdbs}(pdbs, verbose=TRUE, \dots) amsm.xyz(xyz, ncore = NULL) \method{print}{geostas}(x, \dots) } \arguments{ \item{...}{ arguments passed to and from functions, such as \code{\link{kmeans}}, and \code{\link{hclust}} which are called internally in \code{geostas.xyz}. } \item{xyz}{ numeric matrix of xyz coordinates as obtained e.g. by \code{\link{read.ncdf}}, \code{\link{read.dcd}}, or \code{\link{mktrj}}. } \item{amsm}{ a numeric matrix as obtained by \code{\link{amsm.xyz}} (convenient e.g. for re-doing only the clustering analysis of the \sQuote{AMSM} matrix). } \item{k }{ an integer scalar or vector with the desired number of groups. } \item{pairwise }{ logical, if TRUE use pairwise clustering of the atomic movement similarity matrix (AMSM), else columnwise. } \item{clustalg}{ a character string specifing the clustering algorithm. Allowed values are \sQuote{kmeans} and \sQuote{hclust}. } \item{fit}{ logical, if TRUE coordinate superposition on identified core atoms is performed prior to the calculation of the AMS matrix. } \item{ncore }{ number of CPU cores used to do the calculation. \code{ncore>1} requires package \sQuote{parallel} installed. } \item{verbose}{ logical, if TRUE details of the geostas calculations are printed to screen. } \item{nma}{ an \sQuote{nma} object as obtained from function \code{\link{nma}}. Function \code{\link{mktrj}} is used internally to generate a trajectory based on the normal modes. } \item{m.inds}{ the mode number(s) along which trajectory should be made (see function \code{\link{mktrj}}). } \item{enma}{ an \sQuote{enma} object as obtained from function \code{\link{nma.pdbs}}. Function \code{\link{mktrj}} is used internally to generate a trajectory based on the normal modes. } \item{pdbs}{ a \sQuote{pdbs} object as obtained from function \code{\link{pdbaln}} or \code{\link{read.fasta.pdb}}. } \item{pdb}{ a \sQuote{pdb} object as obtained from function \code{\link{read.pdb}}. } \item{inds}{ a \sQuote{select} object as obtained from function \code{\link{atom.select}} giving the atomic indices at which the calculation should be based. By default the function will attempt to locate C-alpha atoms using function \code{\link{atom.select}}. } \item{x}{ a \sQuote{geostas} object as obtained from function \code{\link{geostas}}. } } \details{ This function attempts to identify rigid domains in a protein (or nucleic acid) structure based on an structural ensemble, e.g. obtained from NMR experiments, molecular dynamics simulations, or normal mode analysis. The algorithm is based on a geometric approach for comparing pairwise traces of atomic motion and the search for their best superposition using a quaternion representation of rotation. The result is stored in a NxN atomic movement similarity matrix (AMSM) describing the correspondence between all pairs of atom motion. Rigid domains are obtained by clustering the elements of the AMS matrix (\code{pairwise=TRUE}), or alternatively, the columns similarity (\code{pairwise=FALSE}), using either K-means (\code{\link{kmeans}}) or hierarchical (\code{\link{hclust}}) clustering. Compared to the conventional cross-correlation matrix (see function \code{\link{dccm}}) the \dQuote{geostas} approach provide functionality to also detect domains involved in rotational motions (i.e. two atoms located on opposite sides of a rotating domain will appear as anti-correlated in the cross-correlation matrix, but should obtain a high similarity coefficient in the AMS matrix). See examples for more details. } \note{ The current implementation in Bio3D uses a different fitting and clustering approach than the original Java implementation. The results will therefore differ. } \value{ Returns a list object of type \sQuote{geostas} with the following components: \item{amsm }{ a numeric matrix of atomic movement similarity (AMSM). } \item{fit.inds }{ a numeric vector of xyz indices used for fitting. } \item{grps }{ a numeric vector containing the domain assignment per residue. } \item{atomgrps }{ a numeric vector containing the domain assignment per atom (only provided for \code{geostas.pdb}). } \item{inds }{ a list of atom \sQuote{select} objects with indices to corresponding to the identified domains. } } \references{ Romanowska, J. et al. (2012) \emph{JCTC} \bold{8}, 2588--2599. Skjaerven, L. et al. (2014) \emph{BMC Bioinformatics} \bold{15}, 399. Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Julia Romanowska and Lars Skjaerven } \seealso{ \code{\link{plot.geostas}}, \code{\link{read.pdb}}, \code{\link{mktrj}}, \code{\link{read.ncdf}}, \code{\link{read.dcd}}, \code{\link{nma}}, \code{\link{dccm}}. } \examples{ \donttest{ # PDB server connection required - testing excluded try({ #### NMR-ensemble example ## Read a multi-model PDB file pdb <- read.pdb("1d1d", multi=TRUE) ## Find domains and write PDB gs <- geostas(pdb, fit=TRUE) ## Plot a atomic movement similarity matrix plot.geostas(gs, contour=FALSE) ## Fit all frames to the 'first' domain domain.inds <- gs$inds[[1]] xyz <- pdbfit(pdb, inds=domain.inds) #write.pdb(pdb, xyz=xyz, chain=gs$atomgrps) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } \dontrun{ #### NMA example ## Fetch stucture pdb <- read.pdb("1crn") ## Calculate (vibrational) normal modes modes <- nma(pdb) ## Find domains gs <- geostas(modes, k=2) ## Write NMA trajectory with domain assignment mktrj(modes, mode=7, chain=gs$grps) ## Redo geostas domain clustering gs <- geostas(modes, amsm=gs$amsm, k=5) #### Trajectory example ## Read inn DCD trajectory file, fit coordinates dcdfile <- system.file("examples/hivp.dcd", package = "bio3d") trj <- read.dcd(dcdfile) xyz <- fit.xyz(trj[1,], trj) ## Find domains gs <- geostas(xyz, k=3, fit=FALSE) ## Principal component analysis pc.md <- pca.xyz(xyz) ## Visualize PCs with colored domains (chain ID) mktrj(pc.md, pc=1, chain=gs$grps) #### X-ray ensemble GroEL subunits # Define the ensemble PDB-ids ids <- c("1sx4_[A,B,H,I]", "1xck_[A-B]", "1sx3_[A-B]", "4ab3_[A-B]") # Download and split PDBs by chain ID raw.files <- get.pdb(ids, path = "raw_pdbs", gzip = TRUE) files <- pdbsplit(raw.files, ids, path = "raw_pdbs/split_chain/") # Align structures pdbs <- pdbaln(files) # Find domains gs <- geostas(pdbs, k=4, fit=TRUE) # Superimpose to core region pdbs$xyz <- pdbfit(pdbs, inds=gs$fit.inds) # Principal component analysis pc.xray <- pca(pdbs) # Visualize PCs with colored domains (chain ID) mktrj(pc.xray, pc=1, chain=gs$grps) ##- Same, but more manual approach gaps.pos <- gap.inspect(pdbs$xyz) # Find core region core <- core.find(pdbs) # Fit to core region xyz <- fit.xyz(pdbs$xyz[1, gaps.pos$f.inds], pdbs$xyz[, gaps.pos$f.inds], fixed.inds=core$xyz, mobile.inds=core$xyz) # Find domains gs <- geostas(xyz, k=4, fit=FALSE) # Perform PCA pc.xray <- pca.xyz(xyz) # Make trajectory mktrj(pc.xray, pc=1, chain=gs$grps) } } \keyword{ analysis } bio3d/man/layout.cna.Rd0000644000176200001440000000444514707230357014410 0ustar liggesusers\name{layout.cna} \alias{layout.cna} \title{ Protein Structure Network Layout } \description{ Determine protein structure network layout in 2D and 3D from the geometric center of each community. } \usage{ layout.cna(x, pdb, renumber=TRUE, k=2, full=FALSE) } \arguments{ \item{x}{ A protein structure network object as obtained from the \sQuote{cna} function. } \item{pdb}{ A pdb class object as obtained from the \sQuote{read.pdb} function. } \item{renumber}{ Logical, if TRUE the input \sQuote{pdb} will be re-numbered starting at residue number one before community coordinate averages are calculated. } \item{k}{ A single element numeric vector between 1 and 3 specifying the returned coordinate dimensions. } \item{full}{ Logical, if TRUE the full all-Calpha atom network coordinates will be returned rather than the default clustered network community coordinates. } } \details{ This function calculates the geometric center for each community from the atomic position of it's Calpha atoms taken from a corresponding PDB file. Care needs to be taken to ensure the PDB residue numbers and the community vector names/length match. The community residue membership are typically taken from the input network object but can be supplied as a list object with 'x$communities$membership'. } \value{ A numeric matrix of Nxk, where N is the number of communities and k the number of dimensions requested. } \author{ Guido Scarabelli and Barry Grant } \seealso{ \code{\link{plot.cna}}, \code{\link[igraph:communities]{plot.communities}}, \code{\link[igraph:plot.common]{igraph.plotting}}, \code{\link[igraph:plot.igraph]{plot.igraph}}} \examples{ if (!requireNamespace("igraph", quietly = TRUE)) { message('Need igraph installed to run this example') } else { # Load the correlation network attach(hivp) # Read the starting PDB file to determine atom correspondence pdbfile <- system.file("examples/hivp.pdb", package="bio3d") pdb <- read.pdb(pdbfile) # Plot will be slow #xy <- plot.cna(net) #plot3d.cna(net, pdb) layout.cna(net, pdb, k=3) layout.cna(net, pdb) # can be used as input to plot.cna and plot3d.cna.... # plot.cna( net, layout=layout.cna(net, pdb) ) # plot3d.cna(net, pdb, layout=layout.cna(net, pdb, k=3)) detach(hivp) } } \keyword{ utility } bio3d/man/seqbind.Rd0000644000176200001440000000236314707230357013755 0ustar liggesusers\name{seqbind} \alias{seqbind} \title{ Combine Sequences by Rows Without Recycling } \description{ Take vectors and/or matrices arguments and combine them row-wise without recycling them (as is the case with \code{\link{rbind}}). } \usage{ seqbind(..., blank = "-") } \arguments{ \item{\dots}{ vectors, matrices, and/or alignment \sQuote{fasta} objects to combine. } \item{blank}{ a character to add to short arguments, to achieve the same length as the longer argument. } } \value{ Returns a list of class \code{"fasta"} with the following components: \item{ali}{ an alignment character matrix with a row per sequence and a column per equivalent aminoacid/nucleotide. } \item{id}{ sequence names as identifers.} \item{call}{ the matched call. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \seealso{ \code{\link{seqaln}}, \code{\link{read.fasta}}, \code{\link{read.pdb}}, \code{\link{write.fasta}}, \code{\link{rbind}} } \examples{ \dontrun{ ## Read two pdbs a.pdb <- read.pdb("1bg2") b.pdb <- read.pdb("1goj") seqs <- seqbind(aa321(a.pdb$atom[a.pdb$calpha,"resid"]), aa321(b.pdb$atom[b.pdb$calpha,"resid"])) # seqaln(seqs) } } \keyword{ utilities } bio3d/man/rgyr.Rd0000644000176200001440000000352414707230357013313 0ustar liggesusers\name{rgyr} \alias{rgyr} \title{ Radius of Gyration} \description{ Calculate the radius of gyration of coordinate sets. } \usage{ rgyr(xyz, mass=NULL, ncore=1, nseg.scale=1) } \arguments{ \item{xyz}{ a numeric vector, matrix or list object with an \code{xyz} component, containing one or more coordinate sets.} \item{mass}{ a numeric vector of atomic masses (unit a.m.u.), or a PDB object with masses stored in the "B-factor" column. If \code{mass==NULL}, all atoms are assumed carbon.} \item{ncore }{ number of CPU cores used to do the calculation. \code{ncore>1} requires package \sQuote{parallel} installed. } \item{nseg.scale }{ split input data into specified number of segments prior to running multiple core calculation. See \code{\link{fit.xyz}}. } } \details{ Radius of gyration is a standard measure of overall structural change of macromolecules. } \value{ Returns a numeric vector of radius of gyration. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Xin-Qiu Yao & Pete Kekenes-Huskey} \seealso{ \code{\link{fit.xyz}}, \code{\link{rmsd}}, \code{\link{read.pdb}}, \code{\link{read.fasta.pdb}} } \examples{ \donttest{ # PDB server connection required - testing excluded try({ # -- Calculate Rog of single structure pdb <- read.pdb("1bg2") mass <- rep(12, length(pdb$xyz)/3) mass[substr(pdb$atom[,"elety"], 1, 1) == "N"] <- 14 mass[substr(pdb$atom[,"elety"], 1, 1) == "H"] <- 1 mass[substr(pdb$atom[,"elety"], 1, 1) == "O"] <- 16 mass[substr(pdb$atom[,"elety"], 1, 1) == "S"] <- 32 rgyr(pdb, mass) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } \dontrun{ # -- Calculate Rog of a trajectory xyz <- read.dcd(system.file("examples/hivp.dcd", package="bio3d")) rg <- rgyr(xyz) rg[1:10] } } \keyword{ utilities } bio3d/man/pca.pdbs.Rd0000644000176200001440000000323214707230357014016 0ustar liggesusers\name{pca.pdbs} \alias{pca.pdbs} \title{ Principal Component Analysis } \description{ Performs principal components analysis (PCA) on an ensemble of PDB structures. } \usage{ \method{pca}{pdbs}(pdbs, core.find = FALSE, fit = FALSE, \dots) } \arguments{ \item{pdbs}{ an object of class \code{pdbs} as obtained from function \code{pdbaln} or \code{read.fasta.pdb}. } \item{core.find}{ logical, if TRUE core.find() function will be called to find core positions and coordinates of PDB structures will be fitted based on cores. } \item{fit}{ logical, if TRUE coordinates of PDB structures will be fitted based on all CA atoms. } \item{\dots}{ additional arguments passed to the method \code{pca.xyz}. } } \details{ The function \code{pca.pdbs} is a wrapper for the function \code{\link{pca.xyz}}, wherein more details of the PCA procedure are documented. } \value{ Returns a list with the following components: \item{L }{eigenvalues.} \item{U }{eigenvectors (i.e. the variable loadings).} \item{z.u }{scores of the supplied \code{data} on the pcs.} \item{sdev }{the standard deviations of the pcs.} \item{mean }{the means that were subtracted.} } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant, Lars Skjaerven and Xin-Qiu Yao} \seealso{ \code{\link{pca}}, \code{\link{pca.xyz}}, \code{\link{pdbaln}}, \code{\link{nma}}. } \examples{ attach(transducin) #-- Do PCA ignoring gap containing positions pc.xray <- pca(pdbs) # Plot results (conformer plots & scree plot) plot(pc.xray, col=annotation[, "color"]) detach(transducin) } \keyword{ utilities } \keyword{ multivariate } bio3d/man/aa2mass.Rd0000644000176200001440000000400414707230357013651 0ustar liggesusers\name{aa2mass} \alias{aa2mass} \title{ Amino Acid Residues to Mass Converter } \description{ Convert a sequence of amino acid residue names to mass. } \usage{ aa2mass(pdb, inds=NULL, mass.custom=NULL, addter=TRUE, mmtk=FALSE) } \arguments{ \item{pdb}{ a character vector containing the atom names to convert to atomic masses. Alternatively, a object of type \code{pdb} can be provided. } \item{inds}{ atom and xyz coordinate indices obtained from \code{atom.select} that selects the elements of \code{pdb} upon which the calculation should be based. } \item{mass.custom}{ a list of amino acid residue names and their corresponding masses. } \item{addter}{ logical, if TRUE terminal atoms are added to final masses. } \item{mmtk}{ logical, if TRUE use the exact aminoacid residue masses as provided with the MMTK database (for testing purposes). } } \details{ This function converts amino acid residue names to their corresponding masses. In the case of a non-standard amino acid residue name \code{mass.custom} can be used to map the residue to the correct mass. User-defined amino acid masses (with argument \code{mass.custom}) will override mass entries obtained from the database. See examples for more details. } \note{ When object of type \code{pdb} is provided, non-calpha atom records are omitted from the selection. } \value{ Returns a numeric vector of masses. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{atom.index}}, \code{\link{atom2mass}}, \code{\link{aa.index}}} \examples{ resi.names <- c("LYS", "ALA", "CYS", "HIS") masses <- aa2mass(resi.names, addter=FALSE) \dontrun{ ## Fetch atomic masses in a PDB object pdb <- read.pdb("3dnd") masses <- aa2mass(pdb) ## or masses <- aa2mass(pdb$atom[1:10,"resid"]) ## Dealing with unconventional residues #pdb <- read.pdb("1xj0") #mass.cust <- list("CSX"=122.166) #masses <- aa2mass(pdb, mass.custom=mass.cust) } } \keyword{ utilities } bio3d/man/read.cif.Rd0000644000176200001440000000416314707230357014003 0ustar liggesusers\name{read.cif} \alias{read.cif} \title{ Read mmCIF File} \description{ Read a Protein Data Bank (mmCIF) coordinate file. } \usage{ read.cif(file, maxlines = -1, multi = FALSE, rm.insert = FALSE, rm.alt = TRUE, verbose = TRUE) } \arguments{ \item{file}{ a single element character vector containing the name of the mmCIF file to be read, or the four letter PDB identifier for online file access. } \item{maxlines}{ the maximum number of lines to read before giving up with large files. By default if will read up to the end of input on the connection. } \item{multi}{ logical, if TRUE multiple ATOM records are read for all models in multi-model files and their coordinates returned. } \item{rm.insert}{ logical, if TRUE PDB insert records are ignored. } \item{rm.alt}{ logical, if TRUE PDB alternate records are ignored. } \item{verbose}{ print details of the reading process. } } \details{ The current version of \code{read.cif} reads only ATOM/HETATM records and creates a \code{pdb} object of the data. See \code{read.pdb} for more info. } \value{ Returns a list of class \code{"pdb"} with the following components: \item{atom}{ a data.frame containing all atomic coordinate ATOM and HETATM data, with a row per ATOM/HETATM and a column per record type. See below for details of the record type naming convention (useful for accessing columns). } \item{xyz }{ a numeric matrix of class \code{"xyz"} containing the ATOM and HETATM coordinate data. } \item{calpha }{ logical vector with length equal to \code{nrow(atom)} with TRUE values indicating a C-alpha \dQuote{elety}. } \item{call }{ the matched call. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{read.pdb}} \code{\link{atom.select}}, \code{\link{write.pdb}}, \code{\link{trim.pdb}}, \code{\link{cat.pdb}}, \code{\link{read.prmtop}}, \code{\link{as.pdb}}, \code{\link{read.dcd}}, \code{\link{read.ncdf}}, } \examples{ ## Read a mmCIF file from the RCSB online database # cif <- read.cif("1hel") } \keyword{ IO } bio3d/man/network.amendment.Rd0000644000176200001440000000340314707230357015764 0ustar liggesusers\name{network.amendment} \alias{network.amendment} \title{ Amendment of a CNA Network According To A Input Community Membership Vector. } \description{ This function changes the \sQuote{communities} attribute of a \sQuote{cna} class object to match a given membership vector. } \usage{ network.amendment(x, membership, minus.log=TRUE) } \arguments{ \item{x}{ A protein network graph object as obtained from the \sQuote{cna} function. } \item{membership}{ A numeric vector containing the new community membership. } \item{minus.log}{ Logical. Whether to use the minus.log on the cij values. } } \value{ Returns a \sQuote{cna} class object with the attributes changed according to the membership vector provided. } \details{ This function is useful, in combination with \sQuote{community.tree}, for inspecting different community partitioning options of a input \sQuote{cna} object. See examples. } \author{ Guido Scarabelli } \seealso{ \code{\link{cna}}, \code{\link{community.tree}}, \code{\link{summary.cna}} } \examples{ \donttest{ # PDB server connection required - testing excluded if (!requireNamespace("igraph", quietly = TRUE)) { message('Need igraph installed to run this example') } else { try({ ##-- Build a CNA object pdb <- read.pdb("4Q21") modes <- nma(pdb) cij <- dccm(modes) net <- cna(cij, cutoff.cij=0.2) ##-- Community membership vector for each clustering step tree <- community.tree(net, rescale=TRUE) ## Produce a new k=7 membership vector and CNA network memb.k7 <- tree$tree[ tree$num.of.comms == 7, ] net.7 <- network.amendment(net, memb.k7) plot(net.7, pdb) print(net) print(net.7) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } } } \keyword{utility} bio3d/man/prune.cna.Rd0000644000176200001440000000376614707230357014231 0ustar liggesusers\name{prune.cna} \alias{prune.cna} \title{ Prune A cna Network Object } \description{ Remove nodes and their associated edges from a cna network graph. } \usage{ prune.cna(x, edges.min = 1, size.min = 1) } \arguments{ \item{x}{ A protein network graph object as obtained from the \sQuote{cna} function.} \item{edges.min}{ A single element numeric vector specifying the minimum number of edges that retained nodes should have. Nodes with less than \sQuote{edges.min} will be pruned. } \item{size.min}{ A single element numeric vector specifying the minimum node size that retained nodes should have. Nodes with less composite residues than \sQuote{size.min} will be pruned. } } \details{ This function is useful for cleaning up cna network plots by removing, for example, small isolated nodes. The output is a new cna object minus the pruned nodes and their associated edges. Node naming is preserved. } \value{ A cna class object, see function \code{\link{cna}} for details. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \note{ Some improvements to this function are required, including a better effort to preserve the original community structure rather than calculating a new one. Also may consider removing nodes form the raw.network object that is returned also. } \seealso{ \code{\link{cna}}, \code{\link{summary.cna}}, \code{\link{vmd.cna}}, \code{\link{plot.cna}} } \examples{ if (!requireNamespace("igraph", quietly = TRUE)) { message('Need igraph installed to run this example') } else { # Load the correlation network attach(hivp) # Read the starting PDB file to determine atom correspondence pdbfile <- system.file("examples/hivp.pdb", package="bio3d") pdb <- read.pdb(pdbfile) # Plot coarse grain network based on dynamically coupled communities par(mfcol=c(1,2), mar=c(0,0,0,0)) plot.cna(net) # Prune network dnet <- prune.cna(net, edges.min = 1) plot(dnet) detach(hivp) } } \keyword{ utility } bio3d/man/pfam.Rd0000644000176200001440000000315414707230357013252 0ustar liggesusers\name{pfam} \alias{pfam} \title{ Download Pfam FASTA Sequence Alignment } \description{ Downloads FASTA sequence alignment from the Pfam database. } \usage{ pfam(id, alignment = "seed", verbose = FALSE) } \arguments{ \item{id}{ the Pfam familiy identifier (e.g \sQuote{Piwi}) or accession (e.g. \sQuote{PF02171}). } \item{alignment}{ the alignment type. Allowed values are: \sQuote{seed}, \sQuote{ncbi}, \sQuote{full}, \sQuote{metagenomics}. } \item{verbose}{ logical, if TRUE details of the download process is printed. } } \details{ This is a basic function to download a multiple sequence alignment for a protein family from the Pfam database. } \value{ A \sQuote{fasta} object with the following components: \item{ali }{ an alignment character matrix with a row per sequence and a column per equivalent aminoacid/nucleotide. } \item{ids }{ sequence names as identifiers. } \item{call }{ the matched call. } } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \note{ Full more information on the Pfam database:\cr \url{http://pfam.xfam.org} } \seealso{ \code{\link{read.fasta}}, \code{\link{hmmer}}, \code{\link{get.seq}}, \code{\link{uniprot}} } \examples{ \dontrun{ # PFAM server connection required - testing excluded aln <- pfam("piwi") aln <- pfam("PF02171") seq <- get.seq("1rx2_A", outfile = tempfile()) hmm <- hmmer(seq, type="hmmscan", db="pfam") aln <- pfam(hmm$hit.tbl$acc[1]) # Or much more simply for RCSB PDB entries: acc <- pdb.pfam("1rx2_A", compact=FALSE)$pfamAcc aln <- pfam(acc) } } \keyword{ utilities } bio3d/man/pdb2aln.ind.Rd0000644000176200001440000000704614707230357014426 0ustar liggesusers\name{pdb2aln.ind} \alias{pdb2aln.ind} \title{ Mapping from alignment positions to PDB atomic indices } \description{ Find the best alignment between a PDB structure and an existing alignment. Then, given a set of column indices of the original alignment, returns atom selections of equivalent C-alpha atoms in the PDB structure. } \usage{ pdb2aln.ind(aln, pdb, inds = NULL, ...) } \arguments{ \item{aln}{ an alignment list object with \code{id} and \code{ali} components, similar to that generated by \code{\link{read.fasta}}, \code{\link{read.fasta.pdb}}, \code{\link{pdbaln}}, and \code{\link{seqaln}}. } \item{pdb}{ the PDB object to be aligned to \code{aln}. } \item{inds}{ a numeric vector containing a subset of column indices of \code{aln}. If NULL, non-gap positions of \code{aln$ali} are used. } \item{\dots}{ additional arguments passed to \code{\link{pdb2aln}}. } } \details{ Call \code{\link{pdb2aln}} to align the sequence of \code{pdb} to \code{aln}. Then, find the atomic indices of C-alpha atoms in \code{pdb} that are equivalent to \code{inds}, the subset of column indices of \code{aln$ali}. The function is a rountine utility in a combined analysis of molecular dynamics (MD) simulation trajectories and crystallographic structures. For example, a typical post-analysis of MD simulation is to compare the principal components (PCs) derived from simulation trajectories with those derived from crystallographic structures. The C-alpha atoms used to fit trajectories and do PCA must be the same (or equivalent) to those used in the analysis of crystallographic structures, e.g. the 'non-gap' alignment positions. Call \code{pdb2aln.ind} with providing relevant alignment positions, one can easily get equivalent atom selections ('select' class objects) for the simulation topology (PDB) file and then do proper trajectory analysis. } \value{ Returns a list containing two "select" objects: \item{a}{ atom and xyz indices for the alignment. } \item{b}{ atom and xyz indices for the PDB. } Note that if any element of \code{inds} has no corresponding CA atom in the PDB, the output \code{a$atom} and \code{b$atom} will be shorter than \code{inds}, i.e. only indices having equivalent CA atoms are returned. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Xin-Qiu Yao, Lars Skjaerven & Barry Grant } \seealso{ \code{\link{seq2aln}}, \code{\link{seqaln.pair}}, \code{\link{pdb2aln}} } \examples{ \dontrun{ ##--- Read aligned PDB coordinates (CA only) aln <- read.fasta(system.file("examples/kif1a.fa",package="bio3d")) pdbs <- read.fasta.pdb(aln) ##--- Read the topology file of MD simulations ##--- For illustration, here we read another pdb file (all atoms) pdb <- read.pdb("2kin") #--- Map the non-gap positions to PDB C-alpha atoms #pc.inds <- gap.inspect(pdbs$ali) #npc.inds <- pdb2aln.ind(aln=pdbs, pdb=pdb, inds=pc.inds$f.inds) #npc.inds$a #npc.inds$b #--- Or, map the non-gap positions with a known close sequence in the alignment #npc.inds <- pdb2aln.ind(aln=pdbs, pdb=pdb, aln.id="1bg2", inds=pc.inds$f.inds) #--- Map core positions core <- core.find(pdbs) core.inds <- pdb2aln.ind(aln=pdbs, pdb=pdb, inds = core$c1A.atom) core.inds$a core.inds$b ##--- Fit simulation trajectories to one of the X-ray structures based on ##--- core positions #xyz <- fit.xyz(pdbs$xyz[1,], pdb$xyz, core.inds$a$xyz, core.inds$b$xyz) ##--- Do PCA of trajectories based on non-gap positions #pc.traj <- pca(xyz[, npc.inds$b$xyz]) } } \keyword{ utilities } bio3d/man/project.pca.Rd0000644000176200001440000000327014707230357014536 0ustar liggesusers\name{project.pca} \alias{project.pca} \alias{z2xyz.pca} \alias{xyz2z.pca} \title{ Project Data onto Principal Components } \description{ Projects data onto principal components. } \usage{ project.pca(data, pca, angular = FALSE, fit = FALSE, ...) z2xyz.pca(z.coord, pca) xyz2z.pca(xyz.coord, pca) } \arguments{ \item{data}{ a numeric vector or row-wise matrix of data to be projected. } \item{pca}{ an object of class \code{"pca"} as obtained from functions \code{pca.xyz} or \code{pca.tor}. } \item{angular}{ logical, if TRUE the data to be projected is treated as torsion angle data. } \item{fit}{ logical, if TRUE the data is first fitted to \code{pca$mean}. } \item{\dots}{ other parameters for \code{\link{fit.xyz}}. } \item{xyz.coord}{ a numeric vector or row-wise matrix of data to be projected. } \item{z.coord}{ a numeric vector or row-wise matrix of PC scores (i.e. the z-scores which are centered and rotated versions of the origional data projected onto the PCs) for conversion to xyz coordinates. } } \value{ A numeric vector or matrix of projected PC scores. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Karim ElSawy and Barry Grant} \seealso{ \code{\link{pca.xyz}}, \code{\link{pca.tor}}, \code{\link{fit.xyz}} } \examples{ \dontrun{ attach(transducin) gaps.pos <- gap.inspect(pdbs$xyz) #-- Do PCA without structures 2 and 7 pc.xray <- pca.xyz(pdbs$xyz[-c(2,7), gaps.pos$f.inds]) #-- Project structures 2 and 7 onto the PC space d <- project.pca(pdbs$xyz[c(2,7), gaps.pos$f.inds], pc.xray) plot(pc.xray$z[,1], pc.xray$z[,2],col="gray") points(d[,1],d[,2], col="red") detach(transducin) } } \keyword{ utilities } bio3d/man/pdbfit.Rd0000644000176200001440000000471114707230357013577 0ustar liggesusers\name{pdbfit} \alias{pdbfit} \alias{pdbfit.pdb} \alias{pdbfit.pdbs} \title{ PDB File Coordinate Superposition } \description{ Protein Databank Bank file coordinate superposition with the Kabsch algorithm. } \usage{ pdbfit(...) \method{pdbfit}{pdb}(pdb, inds = NULL, ...) \method{pdbfit}{pdbs}(pdbs, inds = NULL, outpath = NULL, ...) } \arguments{ \item{pdb}{ a multi-model pdb object of class \code{"pdb"}, as obtained from \code{read.pdb}. } \item{pdbs}{ a list of class \code{"pdbs"} containing PDB file data, as obtained from \code{read.fasta.pdb} or \code{pdbaln}. } \item{inds}{ a list object with a \sQuote{xyz} component with indices that selects the coordinate positions (in terms of x, y and z elements) upon which fitting should be based. This defaults to all equivalent non-gap positions for function \code{pdbfit.pdbs}, and to all calpha atoms for function \code{pdbfit.pdb}. } \item{outpath}{ character string specifing the output directory for optional coordinate file output. Note that full files (i.e. all atom files) are written, seebelow. } \item{\dots}{ extra arguments passed to \code{fit.xyz} function. } } \details{ The function \code{pdbfit} is a wrapper for the function \code{fit.xyz}, wherein full details of the superposition procedure are documented. Input to \code{pdbfit.pdbs} should be a list object obtained with the function \code{\link{read.fasta.pdb}} or \code{\link{pdbaln}}. See the examples below. For function \code{pdbfit.pdb} the input should be a multi-model \code{pdb} object with multiple (>1) frames in the \sQuote{xyz} component. The reference frame for supperposition (i.e. the fixed structure to which others are superposed) is the first entry in the input \code{"pdbs"} object. For finer control use \code{\link{fit.xyz}}. } \value{ Returns moved coordinates. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. Kabsch \emph{Acta Cryst} (1978) \bold{A34}, 827--828. } \author{ Barry Grant } \seealso{ \code{\link{pdbaln}}, \code{\link{read.fasta.pdb}}, \code{\link{fit.xyz}}, \code{\link{rmsd}}, \code{\link{read.pdb}} } \examples{ \dontrun{ #files <- get.pdb(c("4q21","5p21"), URLonly=TRUE) files <- get.pdb(c("4q21","5p21"), path=tempdir(), overwrite=TRUE) pdbs <- pdbaln(files) xyz <- pdbfit(pdbs) # Superpose again this time outputing all-atom PDBs to disc #xyz <- pdbfit( pdbs, outpath="fitted" ) } } \keyword{ utilities } bio3d/man/bhattacharyya.Rd0000644000176200001440000000346614707230357015161 0ustar liggesusers\name{bhattacharyya} \alias{bhattacharyya} \alias{bhattacharyya.nma} \alias{bhattacharyya.pca} \alias{bhattacharyya.enma} \alias{bhattacharyya.array} \alias{bhattacharyya.matrix} \title{ Bhattacharyya Coefficient } \description{ Calculate the Bhattacharyya Coefficient as a similarity between two modes objects. } \usage{ bhattacharyya(...) \method{bhattacharyya}{enma}(enma, covs=NULL, ncore=NULL, ...) \method{bhattacharyya}{array}(covs, ncore=NULL, ...) \method{bhattacharyya}{matrix}(a, b, q=90, n=NULL, ...) \method{bhattacharyya}{nma}(...) \method{bhattacharyya}{pca}(...) } \arguments{ \item{enma}{ an object of class \code{"enma"} obtained from function \code{nma.pdbs}. } \item{covs}{ an array of covariance matrices of equal dimensions. } \item{ncore }{ number of CPU cores used to do the calculation. \code{ncore>1} requires package \sQuote{parallel} installed. } \item{a}{ covariance matrix to be compared with \code{b}. } \item{b}{ covariance matrix to be compared with \code{a}. } \item{q}{ a numeric value (in percent) determining the number of modes to be compared. } \item{n}{ the number of modes to be compared. } \item{\dots}{ arguments passed to associated functions. } } \details{ Bhattacharyya coefficient provides a means to compare two covariance matrices derived from NMA or an ensemble of conformers (e.g. simulation or X-ray conformers). } \value{ Returns the similarity coefficient(s). } \references{ Skjaerven, L. et al. (2014) \emph{BMC Bioinformatics} \bold{15}, 399. Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. Fuglebakk, E. et al. (2013) \emph{JCTC} \bold{9}, 5618--5628. } \author{ Lars Skjaerven } \seealso{Other similarity measures: \code{\link{sip}}, \code{\link{covsoverlap}}, \code{\link{rmsip}}. } \keyword{ utilities } bio3d/man/print.xyz.Rd0000644000176200001440000000137614707230357014320 0ustar liggesusers\name{print.xyz} \alias{print.xyz} \title{ Printing XYZ coordinates } \description{ Print method for objects of class \sQuote{xyz}. } \usage{ \method{print}{xyz}(x, ...) } \arguments{ \item{x}{ a \sQuote{xyz} object indicating 3-D coordinates of biological molecules. } \item{\dots}{ additional arguments passed to \sQuote{print}. } } \value{ Called for its effect. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696.} \author{ Barry Grant } \seealso{ \code{\link{is.xyz}}, \code{\link{read.ncdf}}, \code{\link{read.pdb}}, \code{\link{read.dcd}}, \code{\link{fit.xyz}} } \examples{ # Read a PDB file pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) print(pdb$xyz) } \keyword{ utilities } bio3d/man/com.Rd0000644000176200001440000000531614707230357013107 0ustar liggesusers\name{com} \alias{com} \alias{com.pdb} \alias{com.xyz} \title{ Center of Mass } \description{ Calculate the center of mass of a PDB object. } \usage{ com(...) \method{com}{pdb}(pdb, inds=NULL, use.mass=TRUE, ...) \method{com}{xyz}(xyz, mass=NULL, ...) } \arguments{ \item{pdb}{ an object of class \code{pdb} as obtained from function \code{read.pdb}. } \item{inds}{ atom and xyz coordinate indices obtained from \code{atom.select} that selects the elements of \code{pdb} upon which the calculation should be based.} \item{use.mass}{ logical, if TRUE the calculation will be mass weighted (center of mass). } \item{...}{ additional arguments to \code{atom2mass}. } \item{xyz}{ a numeric vector or matrix of Cartesian coordinates (e.g. an object of type \code{xyz}). } \item{mass}{ a numeric vector containing the masses of each atom in \code{xyz}. } } \details{ This function calculates the center of mass of the provided PDB structure / Cartesian coordiantes. Atom names found in standard amino acids in the PDB are mapped to atom elements and their corresponding relative atomic masses. In the case of an unknown atom name \code{elety.custom} and \code{mass.custom} can be used to map an atom to the correct atomic mass. See examples for more details. Alternatively, the atom name will be mapped automatically to the element corresponding to the first character of the atom name. Atom names starting with character \code{H} will be mapped to hydrogen atoms. } \value{ Returns the Cartesian coordinates at the center of mass. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{read.pdb}}, \code{\link{atom2mass}} } \examples{ \donttest{ # PDB server connection required - testing excluded try({ ## Stucture of PKA: pdb <- read.pdb("3dnd") ## Center of mass: com(pdb) ## Center of mass of a selection inds <- atom.select(pdb, chain="I") com(pdb, inds) ## using XYZ Cartesian coordinates xyz <- pdb$xyz[, inds$xyz] com.xyz(xyz) ## with mass weighting com.xyz(xyz, mass=atom2mass(pdb$atom[inds$atom, "elety"]) ) }, silent=TRUE) if(inherits(.Last.value, "try-error")) { message("Need internet to run the example") } } \dontrun{ ## Unknown atom names pdb <- read.pdb("3dnd") inds <- atom.select(pdb, resid="LL2") mycom <- com(pdb, inds, rescue=TRUE) #warnings() ## Map atom names manually pdb <- read.pdb("3RE0") inds <- atom.select(pdb, resno=201) myelety <- data.frame(name = c("CL2","PT1","N1","N2"), symb = c("Cl","Pt","N","N")) mymasses <- data.frame(symb = c("Cl","Pt"), mass = c(35.45, 195.08)) mycom <- com(pdb, inds, elety.custom=myelety, mass.custom=mymasses) } } \keyword{ utilities } bio3d/man/vmd_colors.Rd0000644000176200001440000000235114707230357014474 0ustar liggesusers\name{vmd_colors} \alias{vmd_colors} \title{ VMD Color Palette } \description{ This function creates a character vector of the colors used by the VMD molecular graphics program. } \usage{ vmd_colors(n=33, picker=FALSE, ...) } \arguments{ \item{n}{ The number of desired colors chosen in sequence from the VMD color palette (>=1) } \item{picker}{ Logical, if TRUE a color wheel plot will be produced to aid with color choice. } \item{\dots}{ Extra arguments passed to the \code{rgb} function, including alpha transparency. } } \details{ The function uses the underlying 33 RGB color codes from VMD, See \url{http://www.ks.uiuc.edu/Research/vmd/}. Note that colors will be recycled if \dQuote{n} > 33 with a warning issued. When \sQuote{picker} is set to \dQuote{TRUE} a color wheel of the requested colors will be plotted to the currently active device. } \value{ Returns a character vector with color names. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. \url{http://www.ks.uiuc.edu/Research/vmd/} } \author{ Barry Grant } \seealso{ \code{\link{bwr.colors}} } \examples{ ## Generate a vector of 10 colors clrs <- vmd_colors(10) vmd_colors(4, picker=TRUE) } \keyword{utility} bio3d/man/angle.xyz.Rd0000644000176200001440000000302714707230357014245 0ustar liggesusers\name{angle.xyz} \alias{angle.xyz} \title{ Calculate the Angle Between Three Atoms } \description{ A function for basic bond angle determination. } \usage{ angle.xyz(xyz, atm.inc = 3) } \arguments{ \item{xyz}{ a numeric vector of Cartisean coordinates. } \item{atm.inc}{ a numeric value indicating the number of atoms to increment by between successive angle evaluations (see below). } } \value{ Returns a numeric vector of angles. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Barry Grant } \note{ With \code{atm.inc=1}, angles are calculated for each set of three successive atoms contained in \code{xyz} (i.e. moving along one atom, or three elements of \code{xyz}, between sucessive evaluations). With \code{atm.inc=3}, angles are calculated for each set of three successive non-overlapping atoms contained in \code{xyz} (i.e. moving along three atoms, or nine elements of \code{xyz}, between sucessive evaluations). } \seealso{ \code{\link{torsion.pdb}}, \code{\link{torsion.xyz}}, \code{\link{read.pdb}}, \code{\link{read.dcd}}. } \examples{ ## Read a PDB file pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) ## Angle between N-CA-C atoms of residue four inds <- atom.select(pdb, resno=4, elety=c("N","CA","C")) angle.xyz(pdb$xyz[inds$xyz]) ## Basic stats of all N-CA-C bound angles inds <- atom.select(pdb, elety=c("N","CA","C")) summary( angle.xyz(pdb$xyz[inds$xyz]) ) #hist( angle.xyz(pdb$xyz[inds$xyz]), xlab="Angle" ) } \keyword{ utilities } bio3d/man/wrap.tor.Rd0000644000176200001440000000204514707230357014101 0ustar liggesusers\name{wrap.tor} \alias{wrap.tor} \title{ Wrap Torsion Angle Data } \description{ Adjust angular data so that the absolute difference of any of the observations from its mean is not greater than 180 degrees. } \usage{ wrap.tor(data, wrapav=TRUE, avestruc=NULL) } \arguments{ \item{data}{ a numeric vector or matrix of torsion angle data as obtained from \code{torsion.xyz}. } \item{wrapav}{ logical, if TRUE average structure is also \sQuote{wrapped} } \item{avestruc}{ a numeric vector corresponding to the average structure } } \details{ This is a basic utility function for coping with the periodicity of torsion angle data, by \sQuote{wraping} angular data such that the absolute difference of any of the observations from its column-wise mean is not greater than 180 degrees. } \value{ A numeric vector or matrix of wrapped torsion angle data. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Karim ElSawy } \seealso{ \code{\link{torsion.xyz}} } \keyword{ utilities } bio3d/man/plot.rmsip.Rd0000644000176200001440000000246514707230357014442 0ustar liggesusers\name{plot.rmsip} \alias{plot.rmsip} \title{ Plot RMSIP Results } \description{ Produces a heat plot of RMSIP (Root mean square inner product) for the visualization of modes similarity. } \usage{ \method{plot}{rmsip}(x, xlab = NULL, ylab = NULL, col = gray(50:0/50), zlim=c(0,1), \dots) } \arguments{ \item{x}{ an object of class \code{rmsip}. } \item{xlab}{ a label for the x axis, defaults to \sQuote{a}. } \item{ylab}{ a label for the y axis, defaults to \sQuote{b}. } \item{col}{ a vector of colors for the RMSIP map (or overlap values). } \item{zlim}{ the minimum and maximum \sQuote{z} values for which colors should be plotted. } \item{\dots}{ additional arguments to function \code{image}. } } \details{ \code{plot.rmsip} produces a color image with the function \code{image}. } \value{ Called for its effect. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{rmsip}}, \code{\link{overlap}}, \code{\link{nma}}, \code{\link{image}}. } \examples{ ## Read PDB structure pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) ## Perform NMA modes.a <- nma(pdb, ff="calpha") modes.b <- nma(pdb, ff="anm") ## Calculate and plot RMSIP r <- rmsip(modes.a, modes.b) plot(r) } \keyword{ hplot } bio3d/man/hmmer.Rd0000644000176200001440000001420414707230357013435 0ustar liggesusers\name{hmmer} \alias{hmmer} \title{ HMMER Sequence Search } \description{ Perform a HMMER search against the PDB, NR, swissprot or other sequence and structure databases. } \usage{ hmmer(seq, type="phmmer", db = NULL, verbose = TRUE, timeout = 90) } \arguments{ \item{seq}{ a multi-element character vector containing the query sequence. Alternatively a \sQuote{fasta} object as obtained from functions \code{get.seq} or \code{read.fasta} can be provided. } \item{type}{ character string specifying the \sQuote{HMMER} job type. Current options are \sQuote{phmmer}, \sQuote{hmmscan}, \sQuote{hmmsearch}, and \sQuote{jackhmmer}. } \item{db}{ character string specifying the database to search. Current options are \sQuote{pdb}, \sQuote{nr}, \sQuote{swissprot}, \sQuote{pfam}, etc. See \sQuote{details} for a complete list. } \item{verbose}{ logical, if TRUE details of the download process is printed. } \item{timeout}{ integer specifying the number of seconds to wait for the blast reply before a time out occurs. } } \details{ This function employs direct HTTP-encoded requests to the HMMER web server. HMMER can be used to search sequence databases for homologous protein sequences. The HMMER server implements methods using probabilistic models called profile hidden Markov models (profile HMMs). There are currently four types of HMMER search to perform: - \sQuote{phmmer}: protein sequence vs protein sequence database.\cr (input argument \code{seq} must be a sequence). Allowed options for \code{type} includes: \sQuote{env_nr}, \sQuote{nr}, \sQuote{refseq}, \sQuote{pdb}, \sQuote{rp15}, \sQuote{rp35}, \sQuote{rp55}, \sQuote{rp75}, \sQuote{swissprot}, \sQuote{unimes}, \sQuote{uniprotkb}, \sQuote{uniprotrefprot}, \sQuote{pfamseq}. - \sQuote{hmmscan}: protein sequence vs profile-HMM database.\cr (input argument \code{seq} must be a sequence). Allowed options for \code{type} includes: \sQuote{pfam}, \sQuote{gene3d}, \sQuote{superfamily}, \sQuote{tigrfam}. - \sQuote{hmmsearch}: protein alignment/profile-HMM vs protein sequence database.\cr (input argument \code{seq} must be an alignment). Allowed options for \code{type} includes: \sQuote{pdb}, \sQuote{swissprot}. - \sQuote{jackhmmer}: iterative search vs protein sequence database.\cr (input argument \code{seq} must be an alignment). \sQuote{jackhmmer} functionality incomplete!! Allowed options for \code{type} includes: \sQuote{env_nr}, \sQuote{nr}, \sQuote{refseq}, \sQuote{pdb}, \sQuote{rp15}, \sQuote{rp35}, \sQuote{rp55}, \sQuote{rp75}, \sQuote{swissprot}, \sQuote{unimes}, \sQuote{uniprotkb}, \sQuote{uniprotrefprot}, \sQuote{pfamseq}. More information can be found at the HMMER website:\cr \url{http://hmmer.org} } \value{ A list object with components \sQuote{hit.tbl} and \sQuote{url}. \sQuote{hit.tbl} is a data frame with multiple components depending on the selected job \sQuote{type}. Frequently reported fields include: \item{name}{ a character vector containing the name of the target. } \item{acc}{ a character vector containing the accession identifier of the target. } \item{acc2}{ a character vector containing secondary accession of the target. } \item{pdb.id}{ same as \sQuote{acc}. } \item{id}{ a character vector containing Identifier of the target } \item{desc}{ a character vector containing entry description. } \item{score}{ a numeric vector containing bit score of the sequence (all domains, without correction). } \item{bitscore}{ same as \sQuote{score}. } \item{pvalue}{ a numeric vector containing the P-value of the score. } \item{evalue}{ a numeric vector containing the E-value of the score. } \item{mlog.evalue }{ a numeric vector containing minus the natural log of the E-value. } \item{nregions}{ a numeric vector containing Number of regions evaluated. } \item{nenvelopes}{ a numeric vector containing the number of envelopes handed over for domain definition, null2, alignment, and scoring. } \item{ndom}{ a numeric vector containing the total number of domains identified in this sequence. } \item{nreported}{ a numeric vector containing the number of domains satisfying reporting thresholding. } \item{nincluded}{ a numeric vector containing the number of domains satisfying inclusion thresholding. } \item{taxid}{ a character vector containing The NCBI taxonomy identifier of the target (if applicable). } \item{species}{ a character vector containing the species name. } \item{kg}{ a character vector containing the kingdom of life that the target belongs to - based on placing in the NCBI taxonomy tree. } More details can be found at the HMMER website:\cr \url{https://www.ebi.ac.uk/Tools/hmmer/help/api} } \note{ Note that the chained \sQuote{pdbs} HMMER field (used for redundant PDBs) is included directly into the result list (applies only when \code{db='pdb'}). In this case, the \sQuote{name} component of the target contains the parent (non redundant) entry, and the \sQuote{acc} component the chained PDB identifiers. The search results will therefore provide duplicated PDB identifiers for component \code{$name}, while \code{$acc} should be unique. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. Finn, R.D. et al. (2011) \emph{Nucl. Acids Res.} \bold{39}, 29--37. Eddy, S.R. (2011) \emph{PLoS Comput Biol} \bold{7}(10): e1002195. See also the \sQuote{HMMER} website:\cr \url{http://hmmer.org} } \author{ Lars Skjaerven } \note{ Online access is required to query HMMER services. } \seealso{ \code{\link{blast.pdb}}, \code{\link{plot.blast}}, \code{\link{seqaln}}, \code{\link{get.seq}}, \code{\link{pfam}}, \code{\link{uniprot}} } \examples{ \dontrun{ # HMMER server connection required - testing excluded ##- PHMMER seq <- get.seq("2abl_A", outfile=tempfile()) res <- hmmer(seq, db="pdb") ##- HMMSCAN fam <- hmmer(seq, type="hmmscan", db="pfam") pfam.aln <- pfam(fam$hit.tbl$acc[1]) ##- HMMSEARCH hmm <- hmmer(pfam.aln, type="hmmsearch", db="pdb") unique(hmm$hit.tbl$species) hmm$hit.tbl$acc } } \keyword{ utilities } bio3d/man/hclustplot.Rd0000644000176200001440000000532514707230357014532 0ustar liggesusers\name{hclustplot} \alias{hclustplot} \title{ Dendrogram with Clustering Annotation } \description{ Draw a standard dendrogram with clustering annotation in the marginal regions and colored labels. } \usage{ hclustplot(hc, k = NULL, h = NULL, colors = NULL, labels = NULL, fillbox = FALSE, heights = c(1, .3), mar = c(1, 1, 0, 1), ...) } \arguments{ \item{hc}{ an object of the type produced by \code{hclust}. } \item{k}{ an integer scalar or vector with the desired number of groups. Redirected to function \code{cutree}. } \item{h}{ numeric scalar or vector with heights where the tree should be cut. Redirected to function \code{cutree}. At least one of \sQuote{k} or \sQuote{h} must be specified. } \item{colors}{ a numerical or character vector with the same length as \sQuote{hc} specifying the colors of the labels. } \item{labels}{ a character vector with the same length as \sQuote{hc} containing the labels to be written. } \item{fillbox}{ logical, if TRUE clustering annotation will be drawn as filled boxes below the dendrogram. } \item{heights}{ numeric vector of length two specifying the values for the heights of rows on the device. See function \code{layout}. } \item{mar}{ a numerical vector of the form \sQuote{c(bottom, left, top, right)} which gives the number of lines of margin to be specified on the four sides of the plot. If left at default the margins will be adjusted upon adding arguments \sQuote{main}, \sQuote{ylab}, etc. } \item{\dots}{ other graphical parameters passed to functions \code{plot.dendrogram}, \code{mtext}, and \code{par}. Note that certain arguments will be ignored. } } \details{ This function adds extended visualization of cluster membership to a standard dendrogram. If \sQuote{k} or \sQuote{h} is provided a call to \code{cutree} will provide cluster membership information. Alternatively a vector of colors or cluster membership information can be provided through argument \sQuote{colors}. See examples for further details on usage. } \note{ Argument \sQuote{horiz=TRUE} currently not supported. } \value{ Called for its effect. } \references{ Grant, B.J. et al. (2006) \emph{Bioinformatics} \bold{22}, 2695--2696. } \author{ Lars Skjaerven } \seealso{ \code{\link{plot.hclust}}, \code{\link{plot.dendrogram}}, \code{\link{hclust}}, \code{\link{cutree}}. } \examples{ \donttest{ # Redundant testing excluded attach(transducin) ##- perform RMSD clustering rd <- rmsd(pdbs, fit=TRUE) hc <- hclust(as.dist(rd)) ##- draw dendrogram hclustplot(hc, k=3) ##- draw dendrogram with manual clustering annotation #hclustplot(hc, colors=annotation[, "color"], labels=pdbs$id) detach(transducin) } } \keyword{ hplot } bio3d/DESCRIPTION0000644000176200001440000000346314710271132012764 0ustar liggesusersPackage: bio3d Title: Biological Structure Analysis Version: 2.4-5 Authors@R: c(person("Barry", "Grant", role=c("aut", "cre"), email="bjgrant@ucsd.edu"), person("Xin-Qiu", "Yao", role="aut"), person("Lars", "Skjaerven", role="aut"), person("Julien", "Ide", role="aut")) Author: Barry Grant [aut, cre], Xin-Qiu Yao [aut], Lars Skjaerven [aut], Julien Ide [aut] VignetteBuilder: knitr LinkingTo: Rcpp Imports: Rcpp, parallel, grid, graphics, grDevices, stats, utils Suggests: XML, RCurl, lattice, ncdf4, igraph, bigmemory, knitr, rmarkdown, testthat (>= 0.9.1), httr, msa, Biostrings Depends: R (>= 3.1.0) LazyData: yes Description: Utilities to process, organize and explore protein structure, sequence and dynamics data. Features include the ability to read and write structure, sequence and dynamic trajectory data, perform sequence and structure database searches, data summaries, atom selection, alignment, superposition, rigid core identification, clustering, torsion analysis, distance matrix analysis, structure and sequence conservation analysis, normal mode analysis, principal component analysis of heterogeneous structure data, and correlation network analysis from normal mode and molecular dynamics data. In addition, various utility functions are provided to enable the statistical and graphical power of the R environment to work with biological sequence and structural data. Please refer to the URLs below for more information. Maintainer: Barry Grant License: GPL (>= 2) URL: http://thegrantlab.org/bio3d/, https://bitbucket.org/Grantlab/bio3d/ RoxygenNote: 7.1.1 NeedsCompilation: yes Packaged: 2024-10-29 13:53:45 UTC; xyao Repository: CRAN Date/Publication: 2024-10-29 23:40:10 UTC