performance/0000755000176200001440000000000014125552432012556 5ustar liggesusersperformance/NAMESPACE0000644000176200001440000003731514125546420014006 0ustar liggesusers# Generated by roxygen2: do not edit by hand S3method(AIC,bife) S3method(as.data.frame,check_outliers) S3method(as.data.frame,icc) S3method(as.data.frame,looic) S3method(as.data.frame,performance_accuracy) S3method(as.data.frame,performance_pcp) S3method(as.data.frame,performance_score) S3method(as.data.frame,r2_bayes) S3method(as.data.frame,r2_loo) S3method(as.data.frame,r2_nakagawa) S3method(as.numeric,check_outliers) S3method(check_autocorrelation,default) S3method(check_collinearity,MixMod) S3method(check_collinearity,afex_aov) S3method(check_collinearity,betamfx) S3method(check_collinearity,betaor) S3method(check_collinearity,default) S3method(check_collinearity,glmmTMB) S3method(check_collinearity,hurdle) S3method(check_collinearity,logitmfx) S3method(check_collinearity,logitor) S3method(check_collinearity,negbinirr) S3method(check_collinearity,negbinmfx) S3method(check_collinearity,poissonirr) S3method(check_collinearity,poissonmfx) S3method(check_collinearity,probitmfx) S3method(check_collinearity,zerocount) S3method(check_collinearity,zeroinfl) S3method(check_convergence,default) S3method(check_convergence,merMod) S3method(check_distribution,default) S3method(check_distribution,numeric) S3method(check_heteroscedasticity,default) S3method(check_homogeneity,afex_aov) S3method(check_homogeneity,default) S3method(check_model,brmsfit) S3method(check_model,default) S3method(check_model,model_fit) S3method(check_model,stanreg) S3method(check_multimodal,data.frame) S3method(check_multimodal,numeric) S3method(check_normality,afex_aov) S3method(check_normality,default) S3method(check_normality,glmmTMB) S3method(check_normality,lmerModLmerTest) S3method(check_normality,merMod) S3method(check_outliers,data.frame) S3method(check_outliers,default) S3method(check_outliers,glmmTMB) S3method(check_outliers,glmrob) S3method(check_outliers,grouped_df) S3method(check_outliers,lme) S3method(check_outliers,lmrob) S3method(check_outliers,numeric) S3method(check_overdispersion,default) S3method(check_overdispersion,fixest) S3method(check_overdispersion,glm) S3method(check_overdispersion,glmmTMB) S3method(check_overdispersion,glmx) S3method(check_overdispersion,merMod) S3method(check_overdispersion,model_fit) S3method(check_overdispersion,negbin) S3method(check_overdispersion,negbinirr) S3method(check_overdispersion,negbinmfx) S3method(check_overdispersion,poissonirr) S3method(check_overdispersion,poissonmfx) S3method(check_singularity,MixMod) S3method(check_singularity,clmm) S3method(check_singularity,cpglmm) S3method(check_singularity,default) S3method(check_singularity,glmmTMB) S3method(check_singularity,glmmadmb) S3method(check_singularity,lme) S3method(check_singularity,merMod) S3method(check_singularity,rlmerMod) S3method(check_sphericity,Anova.mlm) S3method(check_sphericity,afex_aov) S3method(check_sphericity,default) S3method(check_sphericity,mlm) S3method(cronbachs_alpha,data.frame) S3method(cronbachs_alpha,matrix) S3method(cronbachs_alpha,parameters_pca) S3method(display,check_itemscale) S3method(display,compare_performance) S3method(display,performance_model) S3method(display,test_performance) S3method(format,compare_performance) S3method(format,performance_model) S3method(format,test_performance) S3method(logLik,cpglm) S3method(logLik,iv_robust) S3method(logLik,ivreg) S3method(logLik,plm) S3method(logLik,svycoxph) S3method(model_performance,Arima) S3method(model_performance,BFBayesFactor) S3method(model_performance,DirichletRegModel) S3method(model_performance,MixMod) S3method(model_performance,bayesx) S3method(model_performance,betamfx) S3method(model_performance,betaor) S3method(model_performance,betareg) S3method(model_performance,bife) S3method(model_performance,brmsfit) S3method(model_performance,censReg) S3method(model_performance,clm) S3method(model_performance,clm2) S3method(model_performance,coxph) S3method(model_performance,default) S3method(model_performance,felm) S3method(model_performance,fixest) S3method(model_performance,flexsurvreg) S3method(model_performance,glm) S3method(model_performance,glmmTMB) S3method(model_performance,glmmadmb) S3method(model_performance,glmx) S3method(model_performance,hurdle) S3method(model_performance,iv_robust) S3method(model_performance,ivreg) S3method(model_performance,kmeans) S3method(model_performance,lavaan) S3method(model_performance,lm) S3method(model_performance,lme) S3method(model_performance,lmrob) S3method(model_performance,logitmfx) S3method(model_performance,logitor) S3method(model_performance,margins) S3method(model_performance,merMod) S3method(model_performance,mixed) S3method(model_performance,mixor) S3method(model_performance,mlogit) S3method(model_performance,model_fit) S3method(model_performance,multinom) S3method(model_performance,negbinirr) S3method(model_performance,negbinmfx) S3method(model_performance,plm) S3method(model_performance,poissonirr) S3method(model_performance,poissonmfx) S3method(model_performance,polr) S3method(model_performance,probitmfx) S3method(model_performance,rlmerMod) S3method(model_performance,rma) S3method(model_performance,sem) S3method(model_performance,stanmvreg) S3method(model_performance,stanreg) S3method(model_performance,survreg) S3method(model_performance,svyglm) S3method(model_performance,truncreg) S3method(model_performance,vglm) S3method(model_performance,zeroinfl) S3method(model_performance,zerotrunc) S3method(performance_aic,bayesx) S3method(performance_aic,betamfx) S3method(performance_aic,betaor) S3method(performance_aic,default) S3method(performance_aic,logitmfx) S3method(performance_aic,logitor) S3method(performance_aic,negbinirr) S3method(performance_aic,negbinmfx) S3method(performance_aic,poissonirr) S3method(performance_aic,poissonmfx) S3method(performance_aic,probitmfx) S3method(performance_aic,svycoxph) S3method(performance_aic,svyglm) S3method(performance_aic,vgam) S3method(performance_aic,vglm) S3method(performance_aicc,Arima) S3method(performance_aicc,bife) S3method(performance_aicc,default) S3method(performance_aicc,rma) S3method(performance_aicc,vglm) S3method(performance_logloss,brmsfit) S3method(performance_logloss,default) S3method(performance_logloss,logitmfx) S3method(performance_logloss,logitor) S3method(performance_logloss,probitmfx) S3method(performance_mae,betamfx) S3method(performance_mae,betaor) S3method(performance_mae,default) S3method(performance_mae,logitmfx) S3method(performance_mae,logitor) S3method(performance_mae,model_fit) S3method(performance_mae,negbinirr) S3method(performance_mae,negbinmfx) S3method(performance_mae,poissonirr) S3method(performance_mae,poissonmfx) S3method(performance_mae,probitmfx) S3method(performance_mse,betamfx) S3method(performance_mse,betaor) S3method(performance_mse,default) S3method(performance_mse,logitmfx) S3method(performance_mse,logitor) S3method(performance_mse,model_fit) S3method(performance_mse,negbinirr) S3method(performance_mse,negbinmfx) S3method(performance_mse,poissonirr) S3method(performance_mse,poissonmfx) S3method(performance_mse,probitmfx) S3method(plot,check_collinearity) S3method(plot,check_distribution) S3method(plot,check_distribution_numeric) S3method(plot,check_heteroscedasticity) S3method(plot,check_homogeneity) S3method(plot,check_model) S3method(plot,check_normality) S3method(plot,check_outliers) S3method(plot,compare_performance) S3method(plot,performance_pp_check) S3method(plot,performance_roc) S3method(print,binned_residuals) S3method(print,check_collinearity) S3method(print,check_distribution) S3method(print,check_distribution_numeric) S3method(print,check_heterogeneity_bias) S3method(print,check_itemscale) S3method(print,check_model) S3method(print,check_outliers) S3method(print,check_overdisp) S3method(print,check_zi) S3method(print,compare_performance) S3method(print,icc) S3method(print,icc_by_group) S3method(print,icc_decomposed) S3method(print,item_difficulty) S3method(print,looic) S3method(print,performance_accuracy) S3method(print,performance_hosmer) S3method(print,performance_model) S3method(print,performance_pcp) S3method(print,performance_pp_check) S3method(print,performance_roc) S3method(print,performance_score) S3method(print,r2_bayes) S3method(print,r2_generic) S3method(print,r2_loo) S3method(print,r2_mlm) S3method(print,r2_nakagawa) S3method(print,r2_nakagawa_by_group) S3method(print,r2_pseudo) S3method(print,test_likelihoodratio) S3method(print,test_performance) S3method(print_html,compare_performance) S3method(print_html,test_performance) S3method(print_md,check_itemscale) S3method(print_md,compare_performance) S3method(print_md,performance_model) S3method(print_md,test_performance) S3method(r2,Arima) S3method(r2,BBreg) S3method(r2,BFBayesFactor) S3method(r2,DirichletRegModel) S3method(r2,MixMod) S3method(r2,aov) S3method(r2,bayesx) S3method(r2,betamfx) S3method(r2,betaor) S3method(r2,betareg) S3method(r2,bife) S3method(r2,bigglm) S3method(r2,biglm) S3method(r2,bracl) S3method(r2,brmsfit) S3method(r2,brmultinom) S3method(r2,censReg) S3method(r2,clm) S3method(r2,clm2) S3method(r2,clmm) S3method(r2,complmrob) S3method(r2,coxph) S3method(r2,cpglm) S3method(r2,cpglmm) S3method(r2,cph) S3method(r2,crch) S3method(r2,default) S3method(r2,feis) S3method(r2,felm) S3method(r2,fixest) S3method(r2,gam) S3method(r2,glm) S3method(r2,glmmTMB) S3method(r2,glmmadmb) S3method(r2,glmx) S3method(r2,hurdle) S3method(r2,iv_robust) S3method(r2,ivreg) S3method(r2,lm) S3method(r2,lme) S3method(r2,lmrob) S3method(r2,logitmfx) S3method(r2,logitor) S3method(r2,lrm) S3method(r2,mclogit) S3method(r2,merMod) S3method(r2,mhurdle) S3method(r2,mixed) S3method(r2,mlm) S3method(r2,mlogit) S3method(r2,mmclogit) S3method(r2,model_fit) S3method(r2,multinom) S3method(r2,negbinirr) S3method(r2,negbinmfx) S3method(r2,ols) S3method(r2,plm) S3method(r2,poissonirr) S3method(r2,poissonmfx) S3method(r2,polr) S3method(r2,probitmfx) S3method(r2,rlmerMod) S3method(r2,rma) S3method(r2,scam) S3method(r2,selection) S3method(r2,sem) S3method(r2,stanreg) S3method(r2,summary.lm) S3method(r2,survreg) S3method(r2,svyglm) S3method(r2,systemfit) S3method(r2,truncreg) S3method(r2,vgam) S3method(r2,vglm) S3method(r2,wbm) S3method(r2,zeroinfl) S3method(r2,zerotrunc) S3method(r2_coxsnell,BBreg) S3method(r2_coxsnell,DirichletRegModel) S3method(r2_coxsnell,bayesx) S3method(r2_coxsnell,bife) S3method(r2_coxsnell,censReg) S3method(r2_coxsnell,clm) S3method(r2_coxsnell,clm2) S3method(r2_coxsnell,coxph) S3method(r2_coxsnell,cpglm) S3method(r2_coxsnell,crch) S3method(r2_coxsnell,glm) S3method(r2_coxsnell,glmx) S3method(r2_coxsnell,logitmfx) S3method(r2_coxsnell,logitor) S3method(r2_coxsnell,mclogit) S3method(r2_coxsnell,multinom) S3method(r2_coxsnell,negbinirr) S3method(r2_coxsnell,negbinmfx) S3method(r2_coxsnell,poissonirr) S3method(r2_coxsnell,poissonmfx) S3method(r2_coxsnell,polr) S3method(r2_coxsnell,probit) S3method(r2_coxsnell,survreg) S3method(r2_coxsnell,svycoxph) S3method(r2_coxsnell,truncreg) S3method(r2_efron,default) S3method(r2_loo_posterior,BFBayesFactor) S3method(r2_loo_posterior,brmsfit) S3method(r2_loo_posterior,stanmvreg) S3method(r2_loo_posterior,stanreg) S3method(r2_mcfadden,bracl) S3method(r2_mcfadden,brmultinom) S3method(r2_mcfadden,censReg) S3method(r2_mcfadden,clm) S3method(r2_mcfadden,clm2) S3method(r2_mcfadden,cpglm) S3method(r2_mcfadden,glm) S3method(r2_mcfadden,glmx) S3method(r2_mcfadden,logitmfx) S3method(r2_mcfadden,logitor) S3method(r2_mcfadden,mclogit) S3method(r2_mcfadden,mlogit) S3method(r2_mcfadden,multinom) S3method(r2_mcfadden,negbinirr) S3method(r2_mcfadden,negbinmfx) S3method(r2_mcfadden,poissonirr) S3method(r2_mcfadden,poissonmfx) S3method(r2_mcfadden,polr) S3method(r2_mcfadden,probitmfx) S3method(r2_mcfadden,truncreg) S3method(r2_mcfadden,vglm) S3method(r2_mckelvey,default) S3method(r2_nagelkerke,BBreg) S3method(r2_nagelkerke,DirichletRegModel) S3method(r2_nagelkerke,bife) S3method(r2_nagelkerke,bracl) S3method(r2_nagelkerke,brmultinom) S3method(r2_nagelkerke,censReg) S3method(r2_nagelkerke,clm) S3method(r2_nagelkerke,clm2) S3method(r2_nagelkerke,coxph) S3method(r2_nagelkerke,cpglm) S3method(r2_nagelkerke,crch) S3method(r2_nagelkerke,glm) S3method(r2_nagelkerke,glmx) S3method(r2_nagelkerke,logitmfx) S3method(r2_nagelkerke,logitor) S3method(r2_nagelkerke,mclogit) S3method(r2_nagelkerke,multinom) S3method(r2_nagelkerke,negbinirr) S3method(r2_nagelkerke,negbinmfx) S3method(r2_nagelkerke,poissonirr) S3method(r2_nagelkerke,poissonmfx) S3method(r2_nagelkerke,polr) S3method(r2_nagelkerke,probitmfx) S3method(r2_nagelkerke,survreg) S3method(r2_nagelkerke,svycoxph) S3method(r2_nagelkerke,truncreg) S3method(r2_posterior,BFBayesFactor) S3method(r2_posterior,brmsfit) S3method(r2_posterior,stanmvreg) S3method(r2_posterior,stanreg) S3method(residuals,iv_robust) S3method(test_bf,ListModels) S3method(test_bf,default) S3method(test_likelihoodratio,ListNestedRegressions) S3method(test_likelihoodratio,default) S3method(test_performance,ListNestedRegressions) S3method(test_performance,ListNonNestedRegressions) S3method(test_performance,default) S3method(test_vuong,ListNestedRegressions) S3method(test_vuong,ListNonNestedRegressions) S3method(test_vuong,default) S3method(test_wald,ListNestedRegressions) S3method(test_wald,ListNonNestedRegressions) S3method(test_wald,default) export(binned_residuals) export(check_autocorrelation) export(check_collinearity) export(check_convergence) export(check_distribution) export(check_heterogeneity_bias) export(check_heteroscedasticity) export(check_heteroskedasticity) export(check_homogeneity) export(check_itemscale) export(check_model) export(check_multimodal) export(check_normality) export(check_outliers) export(check_overdispersion) export(check_posterior_predictions) export(check_predictions) export(check_singularity) export(check_sphericity) export(check_zeroinflation) export(compare_performance) export(cronbachs_alpha) export(display) export(icc) export(item_difficulty) export(item_intercor) export(item_reliability) export(item_split_half) export(looic) export(mae) export(model_performance) export(mse) export(multicollinearity) export(performance) export(performance_accuracy) export(performance_aic) export(performance_aicc) export(performance_hosmer) export(performance_logloss) export(performance_lrt) export(performance_mae) export(performance_mse) export(performance_pcp) export(performance_rmse) export(performance_roc) export(performance_rse) export(performance_score) export(posterior_predictive_check) export(print_html) export(print_md) export(r2) export(r2_bayes) export(r2_coxsnell) export(r2_efron) export(r2_kullback) export(r2_loo) export(r2_loo_posterior) export(r2_mcfadden) export(r2_mckelvey) export(r2_nagelkerke) export(r2_nakagawa) export(r2_posterior) export(r2_somers) export(r2_tjur) export(r2_xu) export(r2_zeroinflated) export(rmse) export(test_bf) export(test_likelihoodratio) export(test_lrt) export(test_performance) export(test_vuong) export(test_wald) export(variance_decomposition) if (getRversion() >= "3.6.0") { S3method(bayesplot::pp_check, lm) S3method(bayesplot::pp_check, glm) S3method(bayesplot::pp_check, glmmTMB) S3method(bayesplot::pp_check, glm.nb) S3method(bayesplot::pp_check, merMod) S3method(bayesplot::pp_check, MixMod) S3method(bayesplot::pp_check, mle2) S3method(bayesplot::pp_check, negbin) S3method(bayesplot::pp_check, polr) S3method(bayesplot::pp_check, rma) S3method(bayesplot::pp_check, vlm) S3method(bayesplot::pp_check, wbm) } importFrom(insight,display) importFrom(insight,print_html) importFrom(insight,print_md) performance/README.md0000644000176200001440000004266614125272764014062 0ustar liggesusers # performance [![DOI](https://joss.theoj.org/papers/10.21105/joss.03139/status.svg)](https://doi.org/10.21105/joss.03139) [![downloads](http://cranlogs.r-pkg.org/badges/performance)](https://cran.r-project.org/package=performance) [![total](https://cranlogs.r-pkg.org/badges/grand-total/performance)](https://cranlogs.r-pkg.org/) ***Test if your model is a good model!*** A crucial aspect when building regression models is to evaluate the quality of modelfit. It is important to investigate how well models fit to the data and which fit indices to report. Functions to create diagnostic plots or to compute fit measures do exist, however, mostly spread over different packages. There is no unique and consistent approach to assess the model quality for different kind of models. The primary goal of the **performance** package is to fill this gap and to provide utilities for computing **indices of model quality** and **goodness of fit**. These include measures like r-squared (R2), root mean squared error (RMSE) or intraclass correlation coefficient (ICC) , but also functions to check (mixed) models for overdispersion, zero-inflation, convergence or singularity. ## Installation [![CRAN](http://www.r-pkg.org/badges/version/performance)](https://cran.r-project.org/package=performance) [![R check](https://github.com/easystats/performance/workflows/R-check/badge.svg?branch=master)](https://github.com/easystats/performance/actions) The *performance* package is available on CRAN, while its latest development version is available on R-universe (from *rOpenSci*). | Type | Source | Command | |-------------|------------|-------------------------------------------------------------------------------| | Release | CRAN | `install.packages("performance")` | | Development | R-universe | `install.packages("performance", repos = "https://easystats.r-universe.dev")` | Once you have downloaded the package, you can then load it using: ``` r library("performance") ``` ## Citation To cite performance in publications use: ``` r citation("performance") #> #> Lüdecke et al., (2021). performance: An R Package #> for Assessment, Comparison and Testing of #> Statistical Models. Journal of Open Source #> Software, 6(60), 3139. #> https://doi.org/10.21105/joss.03139 #> #> A BibTeX entry for LaTeX users is #> #> @Article{, #> title = {{performance}: An {R} Package for Assessment, Comparison and Testing of Statistical Models}, #> author = {Daniel Lüdecke and Mattan S. Ben-Shachar and Indrajeet Patil and Philip Waggoner and Dominique Makowski}, #> year = {2021}, #> journal = {Journal of Open Source Software}, #> volume = {6}, #> number = {60}, #> pages = {3139}, #> doi = {10.21105/joss.03139}, #> } ``` ## Documentation [![Documentation](https://img.shields.io/badge/documentation-performance-orange.svg?colorB=E91E63)](https://easystats.github.io/performance/) [![Blog](https://img.shields.io/badge/blog-easystats-orange.svg?colorB=FF9800)](https://easystats.github.io/blog/posts/) [![Features](https://img.shields.io/badge/features-performance-orange.svg?colorB=2196F3)](https://easystats.github.io/performance/reference/index.html) There is a nice introduction into the package on [youtube](https://www.youtube.com/watch?v=EPIxQ5i5oxs). ## The *performance* workflow ### Assessing model quality #### R-squared **performance** has a generic `r2()` function, which computes the r-squared for many different models, including mixed effects and Bayesian regression models. `r2()` returns a list containing values related to the “most appropriate” r-squared for the given model. ``` r model <- lm(mpg ~ wt + cyl, data = mtcars) r2(model) #> # R2 for Linear Regression #> R2: 0.830 #> adj. R2: 0.819 model <- glm(am ~ wt + cyl, data = mtcars, family = binomial) r2(model) #> # R2 for Logistic Regression #> Tjur's R2: 0.705 library(MASS) data(housing) model <- polr(Sat ~ Infl + Type + Cont, weights = Freq, data = housing) r2(model) #> Nagelkerke's R2: 0.108 ``` The different R-squared measures can also be accessed directly via functions like `r2_bayes()`, `r2_coxsnell()` or `r2_nagelkerke()` (see a full list of functions [here](https://easystats.github.io/performance/reference/index.html#section-r-functions)). For mixed models, the *conditional* and *marginal* R-squared are returned. The *marginal R-squared* considers only the variance of the fixed effects and indicates how much of the model’s variance is explained by the fixed effects part only. The *conditional R-squared* takes both the fixed and random effects into account and indicates how much of the model’s variance is explained by the “complete” model. For frequentist mixed models, `r2()` (resp. `r2_nakagawa()`) computes the *mean* random effect variances, thus `r2()` is also appropriate for mixed models with more complex random effects structures, like random slopes or nested random effects (Johnson 2014; Nakagawa, Johnson, and Schielzeth 2017). ``` r set.seed(123) library(rstanarm) model <- stan_glmer(Petal.Length ~ Petal.Width + (1 | Species), data = iris, cores = 4) r2(model) #> # Bayesian R2 with Compatibility Interval #> #> Conditional R2: 0.953 (95% CI [0.941, 0.963]) #> Marginal R2: 0.824 (95% CI [0.713, 0.896]) library(lme4) model <- lmer(Reaction ~ Days + (1 + Days | Subject), data = sleepstudy) r2(model) #> # R2 for Mixed Models #> #> Conditional R2: 0.799 #> Marginal R2: 0.279 ``` #### Intraclass Correlation Coefficient (ICC) Similar to R-squared, the ICC provides information on the explained variance and can be interpreted as “the proportion of the variance explained by the grouping structure in the population” (Hox 2010). `icc()` calculates the ICC for various mixed model objects, including `stanreg` models. ``` r library(lme4) model <- lmer(Reaction ~ Days + (1 + Days | Subject), data = sleepstudy) icc(model) #> # Intraclass Correlation Coefficient #> #> Adjusted ICC: 0.722 #> Conditional ICC: 0.521 ``` …and models of class `brmsfit`. ``` r library(brms) set.seed(123) model <- brm(mpg ~ wt + (1 | cyl) + (1 + wt | gear), data = mtcars) ``` ``` r icc(model) #> # Intraclass Correlation Coefficient #> #> Adjusted ICC: 0.930 #> Conditional ICC: 0.771 ``` ### Model diagnostics #### Check for overdispersion Overdispersion occurs when the observed variance in the data is higher than the expected variance from the model assumption (for Poisson, variance roughly equals the mean of an outcome). `check_overdispersion()` checks if a count model (including mixed models) is overdispersed or not. ``` r library(glmmTMB) data(Salamanders) model <- glm(count ~ spp + mined, family = poisson, data = Salamanders) check_overdispersion(model) #> # Overdispersion test #> #> dispersion ratio = 2.946 #> Pearson's Chi-Squared = 1873.710 #> p-value = < 0.001 ``` Overdispersion can be fixed by either modelling the dispersion parameter (not possible with all packages), or by choosing a different distributional family (like Quasi-Poisson, or negative binomial, see (Gelman and Hill 2007)). #### Check for zero-inflation Zero-inflation (in (Quasi-)Poisson models) is indicated when the amount of observed zeros is larger than the amount of predicted zeros, so the model is *underfitting* zeros. In such cases, it is recommended to use negative binomial or zero-inflated models. Use `check_zeroinflation()` to check if zero-inflation is present in the fitted model. ``` r model <- glm(count ~ spp + mined, family = poisson, data = Salamanders) check_zeroinflation(model) #> # Check for zero-inflation #> #> Observed zeros: 387 #> Predicted zeros: 298 #> Ratio: 0.77 ``` #### Check for singular model fits A “singular” model fit means that some dimensions of the variance-covariance matrix have been estimated as exactly zero. This often occurs for mixed models with overly complex random effects structures. `check_singularity()` checks mixed models (of class `lme`, `merMod`, `glmmTMB` or `MixMod`) for singularity, and returns `TRUE` if the model fit is singular. ``` r library(lme4) data(sleepstudy) # prepare data set.seed(123) sleepstudy$mygrp <- sample(1:5, size = 180, replace = TRUE) sleepstudy$mysubgrp <- NA for (i in 1:5) { filter_group <- sleepstudy$mygrp == i sleepstudy$mysubgrp[filter_group] <- sample(1:30, size = sum(filter_group), replace = TRUE) } # fit strange model model <- lmer(Reaction ~ Days + (1 | mygrp/mysubgrp) + (1 | Subject), data = sleepstudy) check_singularity(model) #> [1] TRUE ``` Remedies to cure issues with singular fits can be found [here](https://easystats.github.io/performance/reference/check_singularity.html). #### Check for heteroskedasticity Linear models assume constant error variance (homoskedasticity). The `check_heteroscedasticity()` functions assess if this assumption has been violated: ``` r data(cars) model <- lm(dist ~ speed, data = cars) check_heteroscedasticity(model) #> Warning: Heteroscedasticity (non-constant error variance) detected (p = 0.031). ``` #### Comprehensive visualization of model checks **performance** provides many functions to check model assumptions, like `check_collinearity()`, `check_normality()` or `check_heteroscedasticity()`. To get a comprehensive check, use `check_model()`. ``` r # defining a model model <- lm(mpg ~ wt + am + gear + vs * cyl, data = mtcars) # checking model assumptions check_model(model) ``` ### Model performance summaries `model_performance()` computes indices of model performance for regression models. Depending on the model object, typical indices might be r-squared, AIC, BIC, RMSE, ICC or LOOIC. #### Linear model ``` r m1 <- lm(mpg ~ wt + cyl, data = mtcars) model_performance(m1) #> # Indices of model performance #> #> AIC | BIC | R2 | R2 (adj.) | RMSE | Sigma #> ----------------------------------------------------- #> 156.010 | 161.873 | 0.830 | 0.819 | 2.444 | 2.568 ``` #### Logistic regression ``` r m2 <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") model_performance(m2) #> # Indices of model performance #> #> AIC | BIC | Tjur's R2 | RMSE | Sigma | Log_loss | Score_log | Score_spherical | PCP #> -------------------------------------------------------------------------------------------- #> 31.298 | 35.695 | 0.478 | 0.359 | 0.934 | 0.395 | -14.903 | 0.095 | 0.743 ``` #### Linear mixed model ``` r library(lme4) m3 <- lmer(Reaction ~ Days + (1 + Days | Subject), data = sleepstudy) model_performance(m3) #> # Indices of model performance #> #> AIC | BIC | R2 (cond.) | R2 (marg.) | ICC | RMSE | Sigma #> ----------------------------------------------------------------------- #> 1755.628 | 1774.786 | 0.799 | 0.279 | 0.722 | 23.438 | 25.592 ``` ### Models comparison The `compare_performance()` function can be used to compare the performance and quality of several models (including models of different types). ``` r counts <- c(18, 17, 15, 20, 10, 20, 25, 13, 12) outcome <- gl(3, 1, 9) treatment <- gl(3, 3) m4 <- glm(counts ~ outcome + treatment, family = poisson()) compare_performance(m1, m2, m3, m4) #> # Comparison of Model Performance Indices #> #> Name | Model | AIC | AIC (weighted) | BIC | BIC (weighted) | RMSE | Sigma | Score_log | Score_spherical | R2 | R2 (adj.) | Tjur's R2 | Log_loss | PCP | R2 (cond.) | R2 (marg.) | ICC | Nagelkerke's R2 #> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #> m1 | lm | 156.010 | < 0.001 | 161.873 | < 0.001 | 2.444 | 2.568 | | | 0.830 | 0.819 | | | | | | | #> m2 | glm | 31.298 | 1.000 | 35.695 | 1.000 | 0.359 | 0.934 | -14.903 | 0.095 | | | 0.478 | 0.395 | 0.743 | | | | #> m3 | lmerMod | 1755.628 | < 0.001 | 1774.786 | < 0.001 | 23.438 | 25.592 | | | | | | | | 0.799 | 0.279 | 0.722 | #> m4 | glm | 56.761 | < 0.001 | 57.747 | < 0.001 | 3.043 | 1.132 | -2.598 | 0.324 | | | | | | | | | 0.657 ``` #### General index of model performance One can also easily compute and a [**composite index**](https://easystats.github.io/performance/reference/compare_performance.html#details) of model performance and sort the models from the best one to the worse. ``` r compare_performance(m1, m2, m3, m4, rank = TRUE) #> # Comparison of Model Performance Indices #> #> Name | Model | RMSE | Sigma | AIC (weighted) | BIC (weighted) | Performance-Score #> -------------------------------------------------------------------------------------- #> m2 | glm | 0.359 | 0.934 | 1.000 | 1.000 | 100.00% #> m4 | glm | 3.043 | 1.132 | < 0.001 | < 0.001 | 46.89% #> m1 | lm | 2.444 | 2.568 | < 0.001 | < 0.001 | 46.09% #> m3 | lmerMod | 23.438 | 25.592 | < 0.001 | < 0.001 | 0.00% ``` #### Visualisation of indices of models’ performance Finally, we provide convenient visualisation (the `see` package must be installed). ``` r plot(compare_performance(m1, m2, m4, rank = TRUE)) ``` ### Testing models `test_performance()` (and `test_bf`, its Bayesian sister) carries out the most relevant and appropriate tests based on the input (for instance, whether the models are nested or not). ``` r set.seed(123) data(iris) lm1 <- lm(Sepal.Length ~ Species, data = iris) lm2 <- lm(Sepal.Length ~ Species + Petal.Length, data = iris) lm3 <- lm(Sepal.Length ~ Species * Sepal.Width, data = iris) lm4 <- lm(Sepal.Length ~ Species * Sepal.Width + Petal.Length + Petal.Width, data = iris) test_performance(lm1, lm2, lm3, lm4) #> Name | Model | BF | Omega2 | p (Omega2) | LR | p (LR) #> ------------------------------------------------------------ #> lm1 | lm | | | | | #> lm2 | lm | > 1000 | 0.69 | < .001 | -6.25 | < .001 #> lm3 | lm | > 1000 | 0.36 | < .001 | -3.44 | < .001 #> lm4 | lm | > 1000 | 0.73 | < .001 | -7.77 | < .001 #> Each model is compared to lm1. test_bf(lm1, lm2, lm3, lm4) #> Bayes Factors for Model Comparison #> #> Model BF #> [lm2] Species + Petal.Length 3.45e+26 #> [lm3] Species * Sepal.Width 4.69e+07 #> [lm4] Species * Sepal.Width + Petal.Length + Petal.Width 7.58e+29 #> #> * Against Denominator: [lm1] Species #> * Bayes Factor Type: BIC approximation ``` # Code of Conduct Please note that the performance project is released with a [Contributor Code of Conduct](https://contributor-covenant.org/version/2/0/CODE_OF_CONDUCT.html). By contributing to this project, you agree to abide by its terms. # Contributing We are happy to receive bug reports, suggestions, questions, and (most of all) contributions to fix problems and add features. Please follow contributing guidelines mentioned here: ## References
Gelman, Andrew, and Jennifer Hill. 2007. *Data Analysis Using Regression and Multilevel/Hierarchical Models*. Analytical Methods for Social Research. Cambridge ; New York: Cambridge University Press.
Hox, J. J. 2010. *Multilevel Analysis: Techniques and Applications*. 2nd ed. Quantitative Methodology Series. New York: Routledge.
Johnson, Paul C. D. 2014. “Extension of Nakagawa & Schielzeth’s R2 GLMM to Random Slopes Models.” Edited by Robert B. O’Hara. *Methods in Ecology and Evolution* 5 (9): 944–46. .
Nakagawa, Shinichi, Paul C. D. Johnson, and Holger Schielzeth. 2017. “The Coefficient of Determination R2 and Intra-Class Correlation Coefficient from Generalized Linear Mixed-Effects Models Revisited and Expanded.” *Journal of The Royal Society Interface* 14 (134): 20170213. .
performance/man/0000755000176200001440000000000014120316673013331 5ustar liggesusersperformance/man/model_performance.kmeans.Rd0000644000176200001440000000134514026454126020562 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/model_performance.kmeans.R \name{model_performance.kmeans} \alias{model_performance.kmeans} \title{Model summary for k-means clustering} \usage{ \method{model_performance}{kmeans}(model, verbose = TRUE, ...) } \arguments{ \item{model}{Object of type \code{kmeans}.} \item{verbose}{Toggle off warnings.} \item{...}{Arguments passed to or from other methods.} } \description{ Model summary for k-means clustering } \examples{ # a 2-dimensional example x <- rbind( matrix(rnorm(100, sd = 0.3), ncol = 2), matrix(rnorm(100, mean = 1, sd = 0.3), ncol = 2) ) colnames(x) <- c("x", "y") model <- kmeans(x, 2) model_performance(model) } performance/man/item_reliability.Rd0000644000176200001440000000325014077615733017161 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/item_reliability.R \name{item_reliability} \alias{item_reliability} \title{Reliability Test for Items or Scales} \usage{ item_reliability(x, standardize = FALSE, digits = 3) } \arguments{ \item{x}{A matrix or a data frame.} \item{standardize}{Logical, if \code{TRUE}, the data frame's vectors will be standardized. Recommended when the variables have different measures / scales.} \item{digits}{Amount of digits for returned values.} } \value{ A data frame with the corrected item-total correlations (\emph{item discrimination}, column \code{item_discrimination}) and Cronbach's Alpha (if item deleted, column \code{alpha_if_deleted}) for each item of the scale, or \code{NULL} if data frame had too less columns. } \description{ Compute various measures of internal consistencies for tests or item-scales of questionnaires. } \details{ This function calculates the item discriminations (corrected item-total correlations for each item of \code{x} with the remaining items) and the Cronbach's alpha for each item, if it was deleted from the scale. The absolute value of the item discrimination indices should be above 0.1. An index between 0.1 and 0.3 is considered as "fair", while an index above 0.3 (or below -0.3) is "good". Items with low discrimination indices are often ambiguously worded and should be examined. Items with negative indices should be examined to determine why a negative value was obtained (e.g. reversed answer categories regarding positive and negative poles). } \examples{ data(mtcars) x <- mtcars[, c("cyl", "gear", "carb", "hp")] item_reliability(x) } performance/man/model_performance.lavaan.Rd0000644000176200001440000001077414077615733020565 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/model_performance.lavaan.R \name{model_performance.lavaan} \alias{model_performance.lavaan} \title{Performance of lavaan SEM / CFA Models} \usage{ \method{model_performance}{lavaan}(model, metrics = "all", verbose = TRUE, ...) } \arguments{ \item{model}{A \pkg{lavaan} model.} \item{metrics}{Can be \code{"all"} or a character vector of metrics to be computed (some of \code{c("Chisq", "Chisq_DoF", "Chisq_p", "Baseline", "Baseline_DoF", "Baseline_p", "CFI", "TLI", "NNFI", "RFI", "NFI", "PNFI", "IFI", "RNI", "Loglikelihood", "AIC", "BIC", "BIC_adjusted", "RMSEA", "SMRM")}).} \item{verbose}{Toggle off warnings.} \item{...}{Arguments passed to or from other methods.} } \value{ A data frame (with one row) and one column per "index" (see \code{metrics}). } \description{ Compute indices of model performance for SEM or CFA models from the \pkg{lavaan} package. } \details{ \subsection{Indices of fit}{ \itemize{ \item \strong{Chisq}: The model Chi-squared assesses overall fit and the discrepancy between the sample and fitted covariance matrices. Its p-value should be > .05 (i.e., the hypothesis of a perfect fit cannot be rejected). However, it is quite sensitive to sample size. \item \strong{GFI/AGFI}: The (Adjusted) Goodness of Fit is the proportion of variance accounted for by the estimated population covariance. Analogous to R2. The GFI and the AGFI should be > .95 and > .90, respectively. \item \strong{NFI/NNFI/TLI}: The (Non) Normed Fit Index. An NFI of 0.95, indicates the model of interest improves the fit by 95\\% relative to the null model. The NNFI (also called the Tucker Lewis index; TLI) is preferable for smaller samples. They should be > .90 (Byrne, 1994) or > .95 (Schumacker & Lomax, 2004). \item \strong{CFI}: The Comparative Fit Index is a revised form of NFI. Not very sensitive to sample size (Fan, Thompson, & Wang, 1999). Compares the fit of a target model to the fit of an independent, or null, model. It should be > .90. \item \strong{RMSEA}: The Root Mean Square Error of Approximation is a parsimony-adjusted index. Values closer to 0 represent a good fit. It should be < .08 or < .05. The p-value printed with it tests the hypothesis that RMSEA is less than or equal to .05 (a cutoff sometimes used for good fit), and thus should be not significant. \item \strong{RMR/SRMR}: the (Standardized) Root Mean Square Residual represents the square-root of the difference between the residuals of the sample covariance matrix and the hypothesized model. As the RMR can be sometimes hard to interpret, better to use SRMR. Should be < .08. \item \strong{RFI}: the Relative Fit Index, also known as RHO1, is not guaranteed to vary from 0 to 1. However, RFI close to 1 indicates a good fit. \item \strong{IFI}: the Incremental Fit Index (IFI) adjusts the Normed Fit Index (NFI) for sample size and degrees of freedom (Bollen's, 1989). Over 0.90 is a good fit, but the index can exceed 1. \item \strong{PNFI}: the Parsimony-Adjusted Measures Index. There is no commonly agreed-upon cutoff value for an acceptable model for this index. Should be > 0.50. } See the documentation for \code{?lavaan::fitmeasures}. } \subsection{What to report}{ Kline (2015) suggests that at a minimum the following indices should be reported: The model \strong{chi-square}, the \strong{RMSEA}, the \strong{CFI} and the \strong{SRMR}. } } \examples{ # Confirmatory Factor Analysis (CFA) --------- if (require("lavaan")) { structure <- " visual =~ x1 + x2 + x3 textual =~ x4 + x5 + x6 speed =~ x7 + x8 + x9 " model <- lavaan::cfa(structure, data = HolzingerSwineford1939) model_performance(model) } } \references{ \itemize{ \item Byrne, B. M. (1994). Structural equation modeling with EQS and EQS/Windows. Thousand Oaks, CA: Sage Publications. \item Tucker, L. R., \& Lewis, C. (1973). The reliability coefficient for maximum likelihood factor analysis. Psychometrika, 38, 1-10. \item Schumacker, R. E., \& Lomax, R. G. (2004). A beginner's guide to structural equation modeling, Second edition. Mahwah, NJ: Lawrence Erlbaum Associates. \item Fan, X., B. Thompson, \& L. Wang (1999). Effects of sample size, estimation method, and model specification on structural equation modeling fit indexes. Structural Equation Modeling, 6, 56-83. \item Kline, R. B. (2015). Principles and practice of structural equation modeling. Guilford publications. } } performance/man/r2_tjur.Rd0000644000176200001440000000167114077615733015226 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/r2_tjur.R \name{r2_tjur} \alias{r2_tjur} \title{Tjur's R2 - coefficient of determination (D)} \usage{ r2_tjur(model) } \arguments{ \item{model}{Binomial Model.} } \value{ A named vector with the R2 value. } \description{ This method calculates the Coefficient of Discrimination \code{D} (also known as Tjur's R2; \cite{Tjur, 2009}) for generalized linear (mixed) models for binary outcomes. It is an alternative to other pseudo-R2 values like Nagelkerke's R2 or Cox-Snell R2. The Coefficient of Discrimination \code{D} can be read like any other (pseudo-)R2 value. } \examples{ model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") r2_tjur(model) } \references{ Tjur, T. (2009). Coefficients of determination in logistic regression models - A new proposal: The coefficient of discrimination. The American Statistician, 63(4), 366-372. } performance/man/r2_bayes.Rd0000644000176200001440000000723214120565040015324 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/r2_bayes.R \name{r2_bayes} \alias{r2_bayes} \alias{r2_posterior} \alias{r2_posterior.brmsfit} \alias{r2_posterior.stanreg} \alias{r2_posterior.BFBayesFactor} \title{Bayesian R2} \usage{ r2_bayes(model, robust = TRUE, ci = 0.95, verbose = TRUE, ...) r2_posterior(model, ...) \method{r2_posterior}{brmsfit}(model, verbose = TRUE, ...) \method{r2_posterior}{stanreg}(model, verbose = TRUE, ...) \method{r2_posterior}{BFBayesFactor}(model, average = FALSE, prior_odds = NULL, verbose = TRUE, ...) } \arguments{ \item{model}{A Bayesian regression model (from \strong{brms}, \strong{rstanarm}, \strong{BayesFactor}, etc).} \item{robust}{Logical, if \code{TRUE}, the median instead of mean is used to calculate the central tendency of the variances.} \item{ci}{Value or vector of probability of the CI (between 0 and 1) to be estimated.} \item{verbose}{Toggle off warnings.} \item{...}{Arguments passed to \code{r2_posterior()}.} \item{average}{Compute model-averaged index? See \code{\link[bayestestR:weighted_posteriors]{bayestestR::weighted_posteriors()}}.} \item{prior_odds}{Optional vector of prior odds for the models compared to the first model (or the denominator, for \code{BFBayesFactor} objects). For \code{data.frame}s, this will be used as the basis of weighting.} } \value{ A list with the Bayesian R2 value. For mixed models, a list with the Bayesian R2 value and the marginal Bayesian R2 value. The standard errors and credible intervals for the R2 values are saved as attributes. } \description{ Compute R2 for Bayesian models. For mixed models (including a random part), it additionally computes the R2 related to the fixed effects only (marginal R2). While \code{r2_bayes()} returns a single R2 value, \code{r2_posterior()} returns a posterior sample of Bayesian R2 values. } \details{ \code{r2_bayes()} returns an "unadjusted" R2 value. See \code{\link[=r2_loo]{r2_loo()}} to calculate a LOO-adjusted R2, which comes conceptually closer to an adjusted R2 measure. \cr \cr For mixed models, the conditional and marginal R2 are returned. The marginal R2 considers only the variance of the fixed effects, while the conditional R2 takes both the fixed and random effects into account. \cr \cr \code{r2_posterior()} is the actual workhorse for \code{r2_bayes()} and returns a posterior sample of Bayesian R2 values. } \examples{ library(performance) if (require("rstanarm") && require("rstantools")) { model <- stan_glm(mpg ~ wt + cyl, data = mtcars, chains = 1, iter = 500, refresh = 0) r2_bayes(model) model <- stan_lmer( Petal.Length ~ Petal.Width + (1 | Species), data = iris, chains = 1, iter = 500, refresh = 0 ) r2_bayes(model) } \dontrun{ if (require("BayesFactor")) { data(mtcars) BFM <- generalTestBF(mpg ~ qsec + gear, data = mtcars, progress = FALSE) FM <- lm(mpg ~ qsec + gear, data = mtcars) r2_bayes(FM) r2_bayes(BFM[3]) r2_bayes(BFM, average = TRUE) # across all models # with random effects: mtcars$gear <- factor(mtcars$gear) model <- lmBF( mpg ~ hp + cyl + gear + gear:wt, mtcars, progress = FALSE, whichRandom = c("gear", "gear:wt") ) r2_bayes(model) } if (require("brms")) { model <- brms::brm(mpg ~ wt + cyl, data = mtcars) r2_bayes(model) model <- brms::brm(Petal.Length ~ Petal.Width + (1 | Species), data = iris) r2_bayes(model) } } } \references{ Gelman, A., Goodrich, B., Gabry, J., & Vehtari, A. (2018). R-squared for Bayesian regression models. The American Statistician, 1–6. \doi{10.1080/00031305.2018.1549100} } performance/man/check_singularity.Rd0000644000176200001440000000710114077615732017337 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/check_singularity.R \name{check_singularity} \alias{check_singularity} \title{Check mixed models for boundary fits} \usage{ check_singularity(x, tolerance = 1e-05, ...) } \arguments{ \item{x}{A mixed model.} \item{tolerance}{Indicates up to which value the convergence result is accepted. The larger \code{tolerance} is, the stricter the test will be.} \item{...}{Currently not used.} } \value{ \code{TRUE} if the model fit is singular. } \description{ Check mixed models for boundary fits. } \details{ If a model is "singular", this means that some dimensions of the variance-covariance matrix have been estimated as exactly zero. This often occurs for mixed models with complex random effects structures. \cr \cr \dQuote{While singular models are statistically well defined (it is theoretically sensible for the true maximum likelihood estimate to correspond to a singular fit), there are real concerns that (1) singular fits correspond to overfitted models that may have poor power; (2) chances of numerical problems and mis-convergence are higher for singular models (e.g. it may be computationally difficult to compute profile confidence intervals for such models); (3) standard inferential procedures such as Wald statistics and likelihood ratio tests may be inappropriate.} (\cite{lme4 Reference Manual}) \cr \cr There is no gold-standard about how to deal with singularity and which random-effects specification to choose. Beside using fully Bayesian methods (with informative priors), proposals in a frequentist framework are: \itemize{ \item avoid fitting overly complex models, such that the variance-covariance matrices can be estimated precisely enough (\cite{Matuschek et al. 2017}) \item use some form of model selection to choose a model that balances predictive accuracy and overfitting/type I error (\cite{Bates et al. 2015}, \cite{Matuschek et al. 2017}) \item \dQuote{keep it maximal}, i.e. fit the most complex model consistent with the experimental design, removing only terms required to allow a non-singular fit (\cite{Barr et al. 2013}) } Note the different meaning between singularity and convergence: singularity indicates an issue with the "true" best estimate, i.e. whether the maximum likelihood estimation for the variance-covariance matrix of the random effects is positive definite or only semi-definite. Convergence is a question of whether we can assume that the numerical optimization has worked correctly or not. } \examples{ if (require("lme4")) { data(sleepstudy) set.seed(123) sleepstudy$mygrp <- sample(1:5, size = 180, replace = TRUE) sleepstudy$mysubgrp <- NA for (i in 1:5) { filter_group <- sleepstudy$mygrp == i sleepstudy$mysubgrp[filter_group] <- sample(1:30, size = sum(filter_group), replace = TRUE) } model <- lmer( Reaction ~ Days + (1 | mygrp / mysubgrp) + (1 | Subject), data = sleepstudy ) check_singularity(model) } } \references{ \itemize{ \item Bates D, Kliegl R, Vasishth S, Baayen H. Parsimonious Mixed Models. arXiv:1506.04967, June 2015. \item Barr DJ, Levy R, Scheepers C, Tily HJ. Random effects structure for confirmatory hypothesis testing: Keep it maximal. Journal of Memory and Language, 68(3):255-278, April 2013. \item Matuschek H, Kliegl R, Vasishth S, Baayen H, Bates D. Balancing type I error and power in linear mixed models. Journal of Memory and Language, 94:305-315, 2017. \item lme4 Reference Manual, \url{https://cran.r-project.org/package=lme4} } } performance/man/performance_pcp.Rd0000644000176200001440000000474314077615733017005 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/performance_pcp.R \name{performance_pcp} \alias{performance_pcp} \title{Percentage of Correct Predictions} \usage{ performance_pcp(model, ci = 0.95, method = "Herron", verbose = TRUE) } \arguments{ \item{model}{Model with binary outcome.} \item{ci}{The level of the confidence interval.} \item{method}{Name of the method to calculate the PCP (see 'Details'). Default is \code{"Herron"}. May be abbreviated.} \item{verbose}{Toggle off warnings.} } \value{ A list with several elements: the percentage of correct predictions of the full and the null model, their confidence intervals, as well as the chi-squared and p-value from the Likelihood-Ratio-Test between the full and null model. } \description{ Percentage of correct predictions (PCP) for models with binary outcome. } \details{ \code{method = "Gelman-Hill"} (or \code{"gelman_hill"}) computes the PCP based on the proposal from \cite{Gelman and Hill 2017, 99}, which is defined as the proportion of cases for which the deterministic prediction is wrong, i.e. the proportion where the predicted probability is above 0.5, although y=0 (and vice versa) (see also \cite{Herron 1999, 90}). \cr \cr \code{method = "Herron"} (or \code{"herron"}) computes a modified version of the PCP (\cite{Herron 1999, 90-92}), which is the sum of predicted probabilities, where y=1, plus the sum of 1 - predicted probabilities, where y=0, divided by the number of observations. This approach is said to be more accurate. \cr \cr The PCP ranges from 0 to 1, where values closer to 1 mean that the model predicts the outcome better than models with an PCP closer to 0. In general, the PCP should be above 0.5 (i.e. 50\\%), the closer to one, the better. Furthermore, the PCP of the full model should be considerably above the null model's PCP. \cr \cr The likelihood-ratio test indicates whether the model has a significantly better fit than the null-model (in such cases, p < 0.05). } \examples{ data(mtcars) m <- glm(formula = vs ~ hp + wt, family = binomial, data = mtcars) performance_pcp(m) performance_pcp(m, method = "Gelman-Hill") } \references{ \itemize{ \item Herron, M. (1999). Postestimation Uncertainty in Limited Dependent Variable Models. Political Analysis, 8, 83–98. \item Gelman, A., & Hill, J. (2007). Data analysis using regression and multilevel/hierarchical models. Cambridge; New York: Cambridge University Press, 99. } } performance/man/check_homogeneity.Rd0000644000176200001440000000324714077615732017323 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/check_homogeneity.R \name{check_homogeneity} \alias{check_homogeneity} \alias{check_homogeneity.afex_aov} \title{Check model for homogeneity of variances} \usage{ check_homogeneity(x, method = c("bartlett", "fligner", "levene", "auto"), ...) \method{check_homogeneity}{afex_aov}(x, method = "levene", ...) } \arguments{ \item{x}{A linear model or an ANOVA object.} \item{method}{Name of the method (underlying test) that should be performed to check the homogeneity of variances. May either be \code{"levene"} for Levene's Test for Homogeneity of Variance, \code{"bartlett"} for the Bartlett test (assuming normal distributed samples or groups), \code{"fligner"} for the Fligner-Killeen test (rank-based, non-parametric test), or \code{"auto"}. In the latter case, Bartlett test is used if the model response is normal distributed, else Fligner-Killeen test is used.} \item{...}{Arguments passed down to \code{car::leveneTest()}.} } \value{ Invisibly returns the p-value of the test statistics. A p-value < 0.05 indicates a significant difference in the variance between the groups. } \description{ Check model for homogeneity of variances between groups described by independent variables in a model. } \note{ There is also a \href{https://easystats.github.io/see/articles/performance.html}{\code{plot()}-method} implemented in the \href{https://easystats.github.io/see/}{\pkg{see}-package}. } \examples{ model <<- lm(len ~ supp + dose, data = ToothGrowth) check_homogeneity(model) # plot results if (require("see")) { result <- check_homogeneity(model) plot(result) } } performance/man/check_normality.Rd0000644000176200001440000000332214077615732017004 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/check_normality.R \name{check_normality} \alias{check_normality} \alias{check_normality.merMod} \title{Check model for (non-)normality of residuals.} \usage{ check_normality(x, ...) \method{check_normality}{merMod}(x, effects = c("fixed", "random"), ...) } \arguments{ \item{x}{A model object.} \item{...}{Currently not used.} \item{effects}{Should normality for residuals (\code{"fixed"}) or random effects (\code{"random"}) be tested? Only applies to mixed-effects models. May be abbreviated.} } \value{ Invisibly returns the p-value of the test statistics. A p-value < 0.05 indicates a significant deviation from normal distribution } \description{ Check model for (non-)normality of residuals. } \details{ \code{check_normality()} calls \code{stats::shapiro.test} and checks the standardized residuals (or Studentized residuals for mixed models) for normal distribution. Note that this formal test almost always yields significant results for the distribution of residuals and visual inspection (e.g. Q-Q plots) are preferable. } \note{ For mixed-effects models, studentized residuals, and \emph{not} standardized residuals, are used for the test. There is also a \href{https://easystats.github.io/see/articles/performance.html}{\code{plot()}-method} implemented in the \href{https://easystats.github.io/see/}{\pkg{see}-package}. } \examples{ m <<- lm(mpg ~ wt + cyl + gear + disp, data = mtcars) check_normality(m) # plot results if (require("see")) { x <- check_normality(m) plot(x) } \dontrun{ # QQ-plot plot(check_normality(m), type = "qq") # PP-plot plot(check_normality(m), type = "pp") } } performance/man/check_collinearity.Rd0000644000176200001440000001233014077615732017463 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/check_collinearity.R \name{check_collinearity} \alias{check_collinearity} \alias{multicollinearity} \alias{check_collinearity.default} \alias{check_collinearity.glmmTMB} \title{Check for multicollinearity of model terms} \usage{ check_collinearity(x, ...) multicollinearity(x, ...) \method{check_collinearity}{default}(x, verbose = TRUE, ...) \method{check_collinearity}{glmmTMB}( x, component = c("all", "conditional", "count", "zi", "zero_inflated"), verbose = TRUE, ... ) } \arguments{ \item{x}{A model object (that should at least respond to \code{vcov()}, and if possible, also to \code{model.matrix()} - however, it also should work without \code{model.matrix()}).} \item{...}{Currently not used.} \item{verbose}{Toggle off warnings or messages.} \item{component}{For models with zero-inflation component, multicollinearity can be checked for the conditional model (count component, \code{component = "conditional"} or \code{component = "count"}), zero-inflation component (\code{component = "zero_inflated"} or \code{component = "zi"}) or both components (\code{component = "all"}). Following model-classes are currently supported: \code{hurdle}, \code{zeroinfl}, \code{zerocount}, \code{MixMod} and \code{glmmTMB}.} } \value{ A data frame with three columns: The name of the model term, the variance inflation factor and the factor by which the standard error is increased due to possible correlation with other terms. } \description{ \code{check_collinearity()} checks regression models for multicollinearity by calculating the variance inflation factor (VIF). \code{multicollinearity()} is an alias for \code{check_collinearity()}. (When printed, VIF are also translated to Tolerance values, where \code{tolerance = 1/vif}.) } \details{ \subsection{Multicollinearity}{ Multicollinearity should not be confused with a raw strong correlation between predictors. What matters is the association between one or more predictor variables, \emph{conditional on the other variables in the model}. In a nutshell, multicollinearity means that once you know the effect of one predictor, the value of knowing the other predictor is rather low. Thus, one of the predictors doesn't help much in terms of better understanding the model or predicting the outcome. As a consequence, if multicollinearity is a problem, the model seems to suggest that the predictors in question don't seems to be reliably associated with the outcome (low estimates, high standard errors), although these predictors actually are strongly associated with the outcome, i.e. indeed might have strong effect (\cite{McElreath 2020, chapter 6.1}). \cr \cr Multicollinearity might arise when a third, unobserved variable has a causal effect on each of the two predictors that are associated with the outcome. In such cases, the actual relationship that matters would be the association between the unobserved variable and the outcome. \cr \cr Remember: \dQuote{Pairwise correlations are not the problem. It is the conditional associations - not correlations - that matter.} (\cite{McElreath 2020, p. 169}) } \subsection{Interpretation of the Variance Inflation Factor}{ The variance inflation factor is a measure to analyze the magnitude of multicollinearity of model terms. A VIF less than 5 indicates a low correlation of that predictor with other predictors. A value between 5 and 10 indicates a moderate correlation, while VIF values larger than 10 are a sign for high, not tolerable correlation of model predictors (\cite{James et al. 2013}). The \emph{Increased SE} column in the output indicates how much larger the standard error is due to the association with other predictors conditional on the remaining variables in the model. } \subsection{Multicollinearity and Interaction Terms}{ If interaction terms are included in a model, high VIF values are expected. This portion of multicollinearity among the component terms of an interaction is also called "inessential ill-conditioning", which leads to inflated VIF values that are typically seen for models with interaction terms \cite{(Francoeur 2013)}. } } \note{ There is also a \href{https://easystats.github.io/see/articles/performance.html}{\code{plot()}-method} implemented in the \href{https://easystats.github.io/see/}{\pkg{see}-package}. } \examples{ m <- lm(mpg ~ wt + cyl + gear + disp, data = mtcars) check_collinearity(m) # plot results if (require("see")) { x <- check_collinearity(m) plot(x) } } \references{ \itemize{ \item Francoeur, R. B. (2013). Could Sequential Residual Centering Resolve Low Sensitivity in Moderated Regression? Simulations and Cancer Symptom Clusters. Open Journal of Statistics, 03(06), 24–44. \item James, G., Witten, D., Hastie, T., & Tibshirani, R. (eds.). (2013). An introduction to statistical learning: with applications in R. New York: Springer. \item McElreath, R. (2020). Statistical rethinking: A Bayesian course with examples in R and Stan. 2nd edition. Chapman and Hall/CRC. \item Vanhove, J. (2019). Collinearity isn't a disease that needs curing. \href{https://janhove.github.io/analysis/2019/09/11/collinearity}{webpage} } } performance/man/performance_mae.Rd0000644000176200001440000000107014035505306016737 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/performance_mae.R \name{performance_mae} \alias{performance_mae} \alias{mae} \title{Mean Absolute Error of Models} \usage{ performance_mae(model, ...) mae(model, ...) } \arguments{ \item{model}{A model.} \item{...}{Arguments passed to or from other methods.} } \value{ Numeric, the mean absolute error of \code{model}. } \description{ Compute mean absolute error of models. } \examples{ data(mtcars) m <- lm(mpg ~ hp + gear, data = mtcars) performance_mae(m) } performance/man/performance_mse.Rd0000644000176200001440000000164614077615733017006 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/performance_mse.R \name{performance_mse} \alias{performance_mse} \alias{mse} \title{Mean Square Error of Linear Models} \usage{ performance_mse(model, ...) mse(model, ...) } \arguments{ \item{model}{A model.} \item{...}{Arguments passed to or from other methods.} } \value{ Numeric, the mean square error of \code{model}. } \description{ Compute mean square error of linear models. } \details{ The mean square error is the mean of the sum of squared residuals, i.e. it measures the average of the squares of the errors. Less technically speaking, the mean square error can be considered as the variance of the residuals, i.e. the variation in the outcome the model doesn't explain. Lower values (closer to zero) indicate better fit. } \examples{ data(mtcars) m <- lm(mpg ~ hp + gear, data = mtcars) performance_mse(m) } performance/man/compare_performance.Rd0000644000176200001440000000744314120136153017630 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/compare_performance.R \name{compare_performance} \alias{compare_performance} \title{Compare performance of different models} \usage{ compare_performance(..., metrics = "all", rank = FALSE, verbose = TRUE) } \arguments{ \item{...}{Multiple model objects (also of different classes).} \item{metrics}{Can be \code{"all"}, \code{"common"} or a character vector of metrics to be computed. See related \code{\link[=model_performance]{documentation()}} of object's class for details.} \item{rank}{Logical, if \code{TRUE}, models are ranked according to 'best' overall model performance. See 'Details'.} \item{verbose}{Toggle off warnings.} } \value{ A data frame (with one row per model) and one column per "index" (see \code{metrics}). } \description{ \code{compare_performance()} computes indices of model performance for different models at once and hence allows comparison of indices across models. } \details{ \subsection{Model Weights}{ When information criteria (IC) are requested in \code{metrics} (i.e., any of \code{"all"}, \code{"common"}, \code{"AIC"}, \code{"AICc"}, \code{"BIC"}, \code{"WAIC"}, or \code{"LOOIC"}), model weights based on these criteria are also computed. For all IC except LOOIC, weights are computed as \code{w = exp(-0.5 * delta_ic) / sum(exp(-0.5 * delta_ic))}, where \code{delta_ic} is the difference between the model's IC value and the smallest IC value in the model set (Burnham & Anderson, 2002). For LOOIC, weights are computed as "stacking weights" using \code{\link[loo:loo_model_weights]{loo::stacking_weights()}}. } \subsection{Ranking Models}{ When \code{rank = TRUE}, a new column \code{Performance_Score} is returned. This score ranges from 0\\% to 100\\%, higher values indicating better model performance. Note that all score value do not necessarily sum up to 100\\%. Rather, calculation is based on normalizing all indices (i.e. rescaling them to a range from 0 to 1), and taking the mean value of all indices for each model. This is a rather quick heuristic, but might be helpful as exploratory index. \cr \cr In particular when models are of different types (e.g. mixed models, classical linear models, logistic regression, ...), not all indices will be computed for each model. In case where an index can't be calculated for a specific model type, this model gets an \code{NA} value. All indices that have any \code{NA}s are excluded from calculating the performance score. \cr \cr There is a \code{plot()}-method for \code{compare_performance()}, which creates a "spiderweb" plot, where the different indices are normalized and larger values indicate better model performance. Hence, points closer to the center indicate worse fit indices (see \href{https://easystats.github.io/see/articles/performance.html}{online-documentation} for more details). } } \note{ There is also a \href{https://easystats.github.io/see/articles/performance.html}{\code{plot()}-method} implemented in the \href{https://easystats.github.io/see/}{\pkg{see}-package}. } \examples{ data(iris) lm1 <- lm(Sepal.Length ~ Species, data = iris) lm2 <- lm(Sepal.Length ~ Species + Petal.Length, data = iris) lm3 <- lm(Sepal.Length ~ Species * Petal.Length, data = iris) compare_performance(lm1, lm2, lm3) compare_performance(lm1, lm2, lm3, rank = TRUE) if (require("lme4")) { m1 <- lm(mpg ~ wt + cyl, data = mtcars) m2 <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") m3 <- lmer(Petal.Length ~ Sepal.Length + (1 | Species), data = iris) compare_performance(m1, m2, m3) } } \references{ Burnham, K. P., & Anderson, D. R. (2002). \emph{Model selection and multimodel inference: A practical information-theoretic approach} (2nd ed.). Springer-Verlag. \doi{10.1007/b97636} } performance/man/performance_score.Rd0000644000176200001440000000414314077615733017330 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/performance_score.R \name{performance_score} \alias{performance_score} \title{Proper Scoring Rules} \usage{ performance_score(model, verbose = TRUE) } \arguments{ \item{model}{Model with binary or count outcome.} \item{verbose}{Toggle off warnings.} } \value{ A list with three elements, the logarithmic, quadratic/Brier and spherical score. } \description{ Calculates the logarithmic, quadratic/Brier and spherical score from a model with binary or count outcome. } \details{ Proper scoring rules can be used to evaluate the quality of model predictions and model fit. \code{performance_score()} calculates the logarithmic, quadratic/Brier and spherical scoring rules. The spherical rule takes values in the interval \verb{[0, 1]}, with values closer to 1 indicating a more accurate model, and the logarithmic rule in the interval \verb{[-Inf, 0]}, with values closer to 0 indicating a more accurate model. \cr \cr For \code{stan_lmer()} and \code{stan_glmer()} models, the predicted values are based on \code{posterior_predict()}, instead of \code{predict()}. Thus, results may differ more than expected from their non-Bayesian counterparts in \strong{lme4}. } \note{ Code is partially based on \href{https://drizopoulos.github.io/GLMMadaptive/reference/scoring_rules.html}{GLMMadaptive::scoring_rules()}. } \examples{ ## Dobson (1990) Page 93: Randomized Controlled Trial : counts <- c(18, 17, 15, 20, 10, 20, 25, 13, 12) outcome <- gl(3, 1, 9) treatment <- gl(3, 3) model <- glm(counts ~ outcome + treatment, family = poisson()) performance_score(model) \dontrun{ if (require("glmmTMB")) { data(Salamanders) model <- glmmTMB( count ~ spp + mined + (1 | site), zi = ~ spp + mined, family = nbinom2(), data = Salamanders ) performance_score(model) } } } \references{ Carvalho, A. (2016). An overview of applications of proper scoring rules. Decision Analysis 13, 223–242. \doi{10.1287/deca.2016.0337} } \seealso{ \code{\link[=performance_logloss]{performance_logloss()}} } performance/man/test_performance.Rd0000644000176200001440000002312414077615733017174 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/test_bf.R, R/test_likelihoodratio.R, % R/test_performance.R, R/test_vuong.R, R/test_wald.R \name{test_bf} \alias{test_bf} \alias{test_bf.default} \alias{test_likelihoodratio} \alias{performance_lrt} \alias{test_lrt} \alias{test_performance} \alias{test_vuong} \alias{test_wald} \title{Test if Models are Different} \usage{ test_bf(...) \method{test_bf}{default}(..., text_length = NULL) test_likelihoodratio(..., estimator = "ML") performance_lrt(..., estimator = "ML") test_lrt(..., estimator = "ML") test_performance(..., reference = 1) test_vuong(...) test_wald(...) } \arguments{ \item{...}{Multiple model objects.} \item{text_length}{Numeric, length (number of chars) of output lines. \code{test_bf()} describes models by their formulas, which can lead to overly long lines in the output. \code{text_length} fixes the length of lines to a specified limit.} \item{estimator}{Applied when comparing regression models using \code{test_likelihoodratio()}. Corresponds to the different estimators for the standard deviation of the errors. If \code{estimator="OLS"} (default), then it uses the same method as \code{anova(..., test="LRT")} implemented in base R, i.e., scaling by n-k (the unbiased OLS estimator) and using this estimator under the alternative hypothesis. If \code{estimator="ML"}, which is for instance used by \code{lrtest(...)} in package \pkg{lmtest}, the scaling is done by n (the biased ML estimator) and the estimator under the null hypothesis. In moderately large samples, the differences should be negligible, but it is possible that OLS would perform slightly better in small samples with Gaussian errors.} \item{reference}{This only applies when models are non-nested, and determines which model should be taken as a reference, against which all the other models are tested.} } \value{ A data frame containing the relevant indices. } \description{ Testing whether models are "different" in terms of accuracy or explanatory power is a delicate and often complex procedure, with many limitations and prerequisites. Moreover, many tests exist, each coming with its own interpretation, and set of strengths and weaknesses. \cr \cr The \code{test_performance()} function runs the most relevant and appropriate tests based on the type of input (for instance, whether the models are \emph{nested} or not). However, it still requires the user to understand what the tests are and what they do in order to prevent their misinterpretation. See the \strong{details} section for more information regarding the different tests and their interpretation. } \details{ \subsection{Nested vs. Non-nested Models}{ Model's "nesting" is an important concept of models comparison. Indeed, many tests only make sense when the models are \emph{"nested",} i.e., when their predictors are nested. This means that all the predictors of a model are contained within the predictors of a larger model (sometimes referred to as the encompassing model). For instance, \code{model1 (y ~ x1 + x2)} is "nested" within \code{model2 (y ~ x1 + x2 + x3)}. Usually, people have a list of nested models, for instance \code{m1 (y ~ 1)}, \code{m2 (y ~ x1)}, \code{m3 (y ~ x1 + x2)}, \code{m4 (y ~ x1 + x2 + x3)}, and it is conventional that they are "ordered" from the smallest to largest, but it is up to the user to reverse the order from largest to smallest. The test then shows whether a more parsimonious model, or whether adding a predictor, results in a significant difference in the model's performance. In this case, models are usually compared \emph{sequentially}: m2 is tested against m1, m3 against m2, m4 against m3, etc. \cr\cr Two models are considered as \emph{"non-nested"} if their predictors are different. For instance, \code{model1 (y ~ x1 + x2)} and `model2 (y ~ x3 \itemize{ \item x4)\verb{. In the case of non-nested models, all models are usually compared against the same *reference* model (by default, the first of the list). \\cr\\cr Nesting is detected via the }insight::is_nested_models()` function. Note that, apart from the nesting, in order for the tests to be valid, other requirements have often to be the fulfilled. For instance, outcome variables (the response) must be the same. You cannot meaningfully test whether apples are significantly different from oranges! } } \subsection{Tests Description}{ \itemize{ \item \strong{Bayes factor for Model Comparison} - \code{test_bf()}: If all models were fit from the same data, the returned \code{BF} shows the Bayes Factor (see \code{bayestestR::bayesfactor_models()}) for each model against the reference model (which depends on whether the models are nested or not). Check out \href{https://easystats.github.io/bayestestR/articles/bayes_factors.html#bayesfactor_models}{this vignette} for more details. \item \strong{Wald's F-Test} - \code{test_wald()}: The Wald test is a rough approximation of the Likelihood Ratio Test. However, it is more applicable than the LRT: you can often run a Wald test in situations where no other test can be run. Importantly, this test only makes statistical sense if the models are nested.\cr Note: this test is also available in base R through the \code{\link[=anova]{anova()}} function. It returns an \code{F-value} column as a statistic and its associated \code{p-value}. \item \strong{Likelihood Ratio Test (LRT)} - \code{test_likelihoodratio()}: The LRT tests which model is a better (more likely) explanation of the data. Likelihood-Ratio-Test (LRT) gives usually somewhat close results (if not equivalent) to the Wald test and, similarly, only makes sense for nested models. However, Maximum likelihood tests make stronger assumptions than method of moments tests like the F-test, and in turn are more efficient. Agresti (1990) suggests that you should use the LRT instead of the Wald test for small sample sizes (under or about 30) or if the parameters are large.\cr Note: for regression models, this is similar to \code{anova(..., test="LRT")} (on models) or \code{lmtest::lrtest(...)}, depending on the \code{estimator} argument. For \code{lavaan} models (SEM, CFA), the function calls \code{lavaan::lavTestLRT()}. \item \strong{Vuong's Test} - \code{test_vuong()}: Vuong's (1989) test can be used both for nested and non-nested models, and actually consists of two tests. \itemize{ \item The \strong{Test of Distinguishability} (the \code{Omega2} column and its associated p-value) indicates whether or not the models can possibly be distinguished on the basis of the observed data. If its p-value is significant, it means the models are distinguishable. \item The \strong{Robust Likelihood Test} (the \code{LR} column and its associated p-value) indicates whether each model fits better than the reference model. If the models are nested, then the test works as a robust LRT. The code for this function is adapted from the \code{nonnest2} package, and all credit go to their authors.} } } } \examples{ # Nested Models # ------------- m1 <- lm(Sepal.Length ~ Petal.Width, data = iris) m2 <- lm(Sepal.Length ~ Petal.Width + Species, data = iris) m3 <- lm(Sepal.Length ~ Petal.Width * Species, data = iris) test_performance(m1, m2, m3) test_bf(m1, m2, m3) test_wald(m1, m2, m3) # Equivalent to anova(m1, m2, m3) # Equivalent to lmtest::lrtest(m1, m2, m3) test_likelihoodratio(m1, m2, m3, estimator = "ML") # Equivalent to anova(m1, m2, m3, test='LRT') test_likelihoodratio(m1, m2, m3, estimator = "OLS") test_vuong(m1, m2, m3) # nonnest2::vuongtest(m1, m2, nested=TRUE) # Non-nested Models # ----------------- m1 <- lm(Sepal.Length ~ Petal.Width, data = iris) m2 <- lm(Sepal.Length ~ Petal.Length, data = iris) m3 <- lm(Sepal.Length ~ Species, data = iris) test_performance(m1, m2, m3) test_bf(m1, m2, m3) test_vuong(m1, m2, m3) # nonnest2::vuongtest(m1, m2) # Tweak the output # ---------------- test_performance(m1, m2, m3, include_formula = TRUE) # SEM / CFA (lavaan objects) # -------------------------- # Lavaan Models if (require("lavaan")) { structure <- " visual =~ x1 + x2 + x3 textual =~ x4 + x5 + x6 speed =~ x7 + x8 + x9 visual ~~ textual + speed " m1 <- lavaan::cfa(structure, data = HolzingerSwineford1939) structure <- " visual =~ x1 + x2 + x3 textual =~ x4 + x5 + x6 speed =~ x7 + x8 + x9 visual ~~ 0 * textual + speed " m2 <- lavaan::cfa(structure, data = HolzingerSwineford1939) structure <- " visual =~ x1 + x2 + x3 textual =~ x4 + x5 + x6 speed =~ x7 + x8 + x9 visual ~~ 0 * textual + 0 * speed " m3 <- lavaan::cfa(structure, data = HolzingerSwineford1939) test_likelihoodratio(m1, m2, m3) # Different Model Types # --------------------- if (require("lme4") && require("mgcv")) { m1 <- lm(Sepal.Length ~ Petal.Length + Species, data = iris) m2 <- lmer(Sepal.Length ~ Petal.Length + (1 | Species), data = iris) m3 <- gam(Sepal.Length ~ s(Petal.Length, by = Species) + Species, data = iris) test_performance(m1, m2, m3) } } } \references{ \itemize{ \item Vuong, Q. H. (1989). Likelihood ratio tests for model selection and non-nested hypotheses. Econometrica, 57, 307-333. \item Merkle, E. C., You, D., & Preacher, K. (2016). Testing non-nested structural equation models. Psychological Methods, 21, 151-163. } } \seealso{ \code{\link[=compare_performance]{compare_performance()}} to compare the performance indices of many different models. } performance/man/r2_somers.Rd0000644000176200001440000000131114077615733015541 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/r2_somers.R \name{r2_somers} \alias{r2_somers} \title{Somers' Dxy rank correlation for binary outcomes} \usage{ r2_somers(model) } \arguments{ \item{model}{A logistic regression model.} } \value{ A named vector with the R2 value. } \description{ Calculates the Somers' Dxy rank correlation for logistic regression models. } \examples{ \dontrun{ if (require("correlation")) { model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") r2_somers(model) } } } \references{ Somers, R. H. (1962). A new asymmetric measure of association for ordinal variables. American Sociological Review. 27 (6). } performance/man/model_performance.ivreg.Rd0000644000176200001440000000142214077615733020425 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/model_performance.ivreg.R \name{model_performance.ivreg} \alias{model_performance.ivreg} \title{Performance of instrumental variable regression models} \usage{ \method{model_performance}{ivreg}(model, metrics = "all", verbose = TRUE, ...) } \arguments{ \item{model}{A model.} \item{metrics}{Can be \code{"all"}, \code{"common"} or a character vector of metrics to be computed (some of \code{c("AIC", "AICc", "BIC", "R2", "RMSE", "SIGMA", "Sargan", "Wu_Hausman")}). \code{"common"} will compute AIC, BIC, R2 and RMSE.} \item{verbose}{Toggle off warnings.} \item{...}{Arguments passed to or from other methods.} } \description{ Performance of instrumental variable regression models } performance/man/item_split_half.Rd0000644000176200001440000000246214077615733017001 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/item_split_half.R \name{item_split_half} \alias{item_split_half} \title{Split-Half Reliability} \usage{ item_split_half(x, digits = 3) } \arguments{ \item{x}{A matrix or a data frame.} \item{digits}{Amount of digits for returned values.} } \value{ A list with two elements: the split-half reliability \code{splithalf} and the Spearman-Brown corrected split-half reliability \code{spearmanbrown}. } \description{ Compute various measures of internal consistencies for tests or item-scales of questionnaires. } \details{ This function calculates the split-half reliability for items in \code{x}, including the Spearman-Brown adjustment. Splitting is done by selecting odd versus even columns in \code{x}. A value closer to 1 indicates greater internal consistency. } \examples{ data(mtcars) x <- mtcars[, c("cyl", "gear", "carb", "hp")] item_split_half(x) } \references{ \itemize{ \item Spearman C. 1910. Correlation calculated from faulty data. British Journal of Psychology (3): 271-295. \doi{10.1111/j.2044-8295.1910.tb00206.x} \item Brown W. 1910. Some experimental results in the correlation of mental abilities. British Journal of Psychology (3): 296-322. \doi{10.1111/j.2044-8295.1910.tb00207.x} } } performance/man/r2_xu.Rd0000644000176200001440000000146614077615733014700 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/r2_xu.R \name{r2_xu} \alias{r2_xu} \title{Xu' R2 (Omega-squared)} \usage{ r2_xu(model) } \arguments{ \item{model}{A linear (mixed) model.} } \value{ The R2 value. } \description{ Calculates Xu' Omega-squared value, a simple R2 equivalent for linear mixed models. } \details{ \code{r2_xu()} is a crude measure for the explained variance from linear (mixed) effects models, which is originally denoted as \ifelse{html}{\out{Ω2}}{\eqn{\Omega^2}}. } \examples{ model <- lm(Sepal.Length ~ Petal.Length + Species, data = iris) r2_xu(model) } \references{ Xu, R. (2003). Measuring explained variation in linear mixed effects models. Statistics in Medicine, 22(22), 3527–3541. \doi{10.1002/sim.1572} } performance/man/classify_distribution.Rd0000644000176200001440000000132214056373005020232 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/check_distribution.R \docType{data} \name{classify_distribution} \alias{classify_distribution} \title{Classify the distribution of a model-family using machine learning} \format{ An object of class \code{randomForest.formula} (inherits from \code{randomForest}) of length 8. } \usage{ classify_distribution } \description{ Choosing the right distributional family for regression models is essential to get more accurate estimates and standard errors. This function may help to Machine learning model trained to classify distributions } \details{ Mean accuracy and Kappa of 0.86 and 0.85, repsectively. } \keyword{datasets} performance/man/item_intercor.Rd0000644000176200001440000000353314077615733016501 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/item_intercor.R \name{item_intercor} \alias{item_intercor} \title{Mean Inter-Item-Correlation} \usage{ item_intercor(x, method = c("pearson", "spearman", "kendall")) } \arguments{ \item{x}{A matrix as returned by the \code{cor()}-function, or a data frame with items (e.g. from a test or questionnaire).} \item{method}{Correlation computation method. May be one of \code{"spearman"} (default), \code{"pearson"} or \code{"kendall"}. You may use initial letter only.} } \value{ The mean inter-item-correlation value for \code{x}. } \description{ Compute various measures of internal consistencies for tests or item-scales of questionnaires. } \details{ This function calculates a mean inter-item-correlation, i.e. a correlation matrix of \code{x} will be computed (unless \code{x} is already a matrix as returned by the \code{cor()}-function) and the mean of the sum of all item's correlation values is returned. Requires either a data frame or a computed \code{cor()}-object. \cr \cr \dQuote{Ideally, the average inter-item correlation for a set of items should be between .20 and .40, suggesting that while the items are reasonably homogenous, they do contain sufficiently unique variance so as to not be isomorphic with each other. When values are lower than .20, then the items may not be representative of the same content domain. If values are higher than .40, the items may be only capturing a small bandwidth of the construct.} \cite{(Piedmont 2014)} } \examples{ data(mtcars) x <- mtcars[, c("cyl", "gear", "carb", "hp")] item_intercor(x) } \references{ Piedmont RL. 2014. Inter-item Correlations. In: Michalos AC (eds) Encyclopedia of Quality of Life and Well-Being Research. Dordrecht: Springer, 3303-3304. \doi{10.1007/978-94-007-0753-5_1493} } performance/man/r2_mcfadden.Rd0000644000176200001440000000177614077615733016011 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/r2_mcfadden.R \name{r2_mcfadden} \alias{r2_mcfadden} \title{McFadden's R2} \usage{ r2_mcfadden(model, ...) } \arguments{ \item{model}{Generalized linear or multinomial logit (\code{mlogit}) model.} \item{...}{Currently not used.} } \value{ For most models, a list with McFadden's R2 and adjusted McFadden's R2 value. For some models, only McFadden's R2 is available. } \description{ Calculates McFadden's pseudo R2. } \examples{ if (require("mlogit")) { data("Fishing", package = "mlogit") Fish <- mlogit.data(Fishing, varying = c(2:9), shape = "wide", choice = "mode") model <- mlogit(mode ~ price + catch, data = Fish) r2_mcfadden(model) } } \references{ \itemize{ \item McFadden, D. (1987). Regression-based specification tests for the multinomial logit model. Journal of econometrics, 34(1-2), 63-82. \item McFadden, D. (1973). Conditional logit analysis of qualitative choice behavior. } } performance/man/model_performance.merMod.Rd0000644000176200001440000000253614077615733020543 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/model_performance.mixed.R \name{model_performance.merMod} \alias{model_performance.merMod} \title{Performance of Mixed Models} \usage{ \method{model_performance}{merMod}(model, metrics = "all", verbose = TRUE, ...) } \arguments{ \item{model}{A mixed effects model.} \item{metrics}{Can be \code{"all"}, \code{"common"} or a character vector of metrics to be computed (some of \code{c("AIC", "AICc", "BIC", "R2", "ICC", "RMSE", "SIGMA", "LOGLOSS", "SCORE")}). \code{"common"} will compute AIC, BIC, R2, ICC and RMSE.} \item{verbose}{Toggle off warnings.} \item{...}{Arguments passed to or from other methods.} } \value{ A data frame (with one row) and one column per "index" (see \code{metrics}). } \description{ Compute indices of model performance for mixed models. } \details{ This method returns the \emph{adjusted ICC} only, as this is typically of interest when judging the variance attributed to the random effects part of the model (see also \code{\link[=icc]{icc()}}). \cr \cr Furthermore, see 'Details' in \code{\link[=model_performance.lm]{model_performance.lm()}} for more details on returned indices. } \examples{ if (require("lme4")) { model <- lmer(Petal.Length ~ Sepal.Length + (1 | Species), data = iris) model_performance(model) } } performance/man/check_convergence.Rd0000644000176200001440000000572214077615732017272 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/check_convergence.R \name{check_convergence} \alias{check_convergence} \title{Convergence test for mixed effects models} \usage{ check_convergence(x, tolerance = 0.001, ...) } \arguments{ \item{x}{A \code{merMod}-object.} \item{tolerance}{Indicates up to which value the convergence result is accepted. The smaller \code{tolerance} is, the stricter the test will be.} \item{...}{Currently not used.} } \value{ \code{TRUE} if convergence is fine and \code{FALSE} if convergence is suspicious. Additionally, the convergence value is returned as attribute. } \description{ \code{check_convergence()} provides an alternative convergence test for \code{merMod}-objects. } \details{ \subsection{Convergence and log-likelihood}{ Convergence problems typically arise when the model hasn't converged to a solution where the log-likelihood has a true maximum. This may result in unreliable and overly complex (or non-estimable) estimates and standard errors. } \subsection{Inspect model convergence}{ \strong{lme4} performs a convergence-check (see \code{?lme4::convergence}), however, as as discussed \href{https://github.com/lme4/lme4/issues/120}{here} and suggested by one of the lme4-authors in \href{https://github.com/lme4/lme4/issues/120#issuecomment-39920269}{this comment}, this check can be too strict. \code{check_convergence()} thus provides an alternative convergence test for \code{merMod}-objects. } \subsection{Resolving convergence issues}{ Convergence issues are not easy to diagnose. The help page on \code{?lme4::convergence} provides most of the current advice about how to resolve convergence issues. Another clue might be large parameter values, e.g. estimates (on the scale of the linear predictor) larger than 10 in (non-identity link) generalized linear model \emph{might} indicate \href{https://stats.idre.ucla.edu/other/mult-pkg/faq/general/faqwhat-is-complete-or-quasi-complete-separation-in-logisticprobit-regression-and-how-do-we-deal-with-them/}{complete separation}. Complete separation can be addressed by regularization, e.g. penalized regression or Bayesian regression with appropriate priors on the fixed effects. } \subsection{Convergence versus Singularity}{ Note the different meaning between singularity and convergence: singularity indicates an issue with the "true" best estimate, i.e. whether the maximum likelihood estimation for the variance-covariance matrix of the random effects is positive definite or only semi-definite. Convergence is a question of whether we can assume that the numerical optimization has worked correctly or not. } } \examples{ if (require("lme4")) { data(cbpp) set.seed(1) cbpp$x <- rnorm(nrow(cbpp)) cbpp$x2 <- runif(nrow(cbpp)) model <- glmer( cbind(incidence, size - incidence) ~ period + x + x2 + (1 + x | herd), data = cbpp, family = binomial() ) check_convergence(model) } } performance/man/performance_accuracy.Rd0000644000176200001440000000347414077615733020015 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/performance_accuracy.R \name{performance_accuracy} \alias{performance_accuracy} \title{Accuracy of predictions from model fit} \usage{ performance_accuracy( model, method = c("cv", "boot"), k = 5, n = 1000, verbose = TRUE ) } \arguments{ \item{model}{A linear or logistic regression model. A mixed-effects model is also accepted.} \item{method}{Character string, indicating whether cross-validation (\code{method = "cv"}) or bootstrapping (\code{method = "boot"}) is used to compute the accuracy values.} \item{k}{The number of folds for the k-fold cross-validation.} \item{n}{Number of bootstrap-samples.} \item{verbose}{Toggle warnings.} } \value{ A list with three values: The \code{Accuracy} of the model predictions, i.e. the proportion of accurately predicted values from the model, its standard error, \code{SE}, and the \code{Method} used to compute the accuracy. } \description{ This function calculates the predictive accuracy of linear or logistic regression models. } \details{ For linear models, the accuracy is the correlation coefficient between the actual and the predicted value of the outcome. For logistic regression models, the accuracy corresponds to the AUC-value, calculated with the \code{bayestestR::auc()}-function. \cr \cr The accuracy is the mean value of multiple correlation resp. AUC-values, which are either computed with cross-validation or non-parametric bootstrapping (see argument \code{method}). The standard error is the standard deviation of the computed correlation resp. AUC-values. } \examples{ model <- lm(mpg ~ wt + cyl, data = mtcars) performance_accuracy(model) model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") performance_accuracy(model) } performance/man/check_model.Rd0000644000176200001440000001037514107405171016060 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/check_model.R \name{check_model} \alias{check_model} \alias{check_model.default} \title{Visual check of model assumptions} \usage{ check_model(x, ...) \method{check_model}{default}( x, dot_size = 2, line_size = 0.8, panel = TRUE, check = "all", alpha = 0.2, dot_alpha = 0.8, colors = c("#3aaf85", "#1b6ca8", "#cd201f"), theme = "see::theme_lucid", detrend = FALSE, verbose = TRUE, ... ) } \arguments{ \item{x}{A model object.} \item{...}{Currently not used.} \item{dot_size, line_size}{Size of line and dot-geoms.} \item{panel}{Logical, if \code{TRUE}, plots are arranged as panels; else, single plots for each diagnostic are returned.} \item{check}{Character vector, indicating which checks for should be performed and plotted. May be one or more of \verb{"all", "vif", "qq", "normality", "linearity", "ncv", "homogeneity", "outliers", "reqq"}. \code{"reqq"} is a QQ-plot for random effects and only available for mixed models. \code{"ncv"} is an alias for \code{"linearity"}, and checks for non-constant variance, i.e. for heteroscedasticity, as well as the linear relationship. By default, all possible checks are performed and plotted.} \item{alpha, dot_alpha}{The alpha level of the confidence bands and dot-geoms. Scalar from 0 to 1.} \item{colors}{Character vector with color codes (hex-format). Must be of length 3. First color is usually used for reference lines, second color for dots, and third color for outliers or extreme values.} \item{theme}{String, indicating the name of the plot-theme. Must be in the format \code{"package::theme_name"} (e.g. \code{"ggplot2::theme_minimal"}).} \item{detrend}{Should QQ/PP plots be detrended?} \item{verbose}{Toggle off warnings.} } \value{ The data frame that is used for plotting. } \description{ Visual check of model various assumptions (normality of residuals, normality of random effects, linear relationship, homogeneity of variance, multicollinearity). } \details{ For Bayesian models from packages \strong{rstanarm} or \strong{brms}, models will be "converted" to their frequentist counterpart, using \href{https://easystats.github.io/bayestestR/reference/convert_bayesian_as_frequentist.html}{\code{bayestestR::bayesian_as_frequentist}}. A more advanced model-check for Bayesian models will be implemented at a later stage. } \note{ This function just prepares the data for plotting. To create the plots, \CRANpkg{see} needs to be installed. Furthermore, this function suppresses all possible warnings. In case you observe suspicious plots, please refer to the dedicated functions (like \code{check_collinearity()}, \code{check_normality()} etc.) to get informative messages and warnings. } \section{Linearity Assumption}{ The plot \strong{Linearity} checks the assumption of linear relationship. However, the spread of dots also indicate possible heteroscedasticity (i.e. non-constant variance); hence, the alias \code{"ncv"} for this plot. \strong{Some caution is needed} when interpreting these plots. Although these plots are helpful to check model assumptions, they do not necessarily indicate so-called "lack of fit", e.g. missed non-linear relationships or interactions. Thus, it is always recommended to also look at \href{https://strengejacke.github.io/ggeffects/articles/introduction_partial_residuals.html}{effect plots, including partial residuals}. } \section{Residuals for (Generalized) Linear Models}{ Plots that check the normality of residuals (QQ-plot) or the homogeneity of variance use standardized Pearson's residuals for generalized linear models, and standardized residuals for linear models. The plots for the normality of residuals (with overlayed normal curve) and for the linearity assumption use the default residuals for \code{lm} and \code{glm} (which are deviance residuals for \code{glm}). } \examples{ \dontrun{ m <- lm(mpg ~ wt + cyl + gear + disp, data = mtcars) check_model(m) if (require("lme4")) { m <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy) check_model(m, panel = FALSE) } if (require("rstanarm")) { m <- stan_glm(mpg ~ wt + gear, data = mtcars, chains = 2, iter = 200) check_model(m) } } } performance/man/model_performance.stanreg.Rd0000644000176200001440000000710614117453720020750 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/model_performance.bayesian.R \name{model_performance.stanreg} \alias{model_performance.stanreg} \alias{model_performance.BFBayesFactor} \title{Performance of Bayesian Models} \usage{ \method{model_performance}{stanreg}(model, metrics = "all", verbose = TRUE, ...) \method{model_performance}{BFBayesFactor}( model, metrics = "all", verbose = TRUE, average = FALSE, prior_odds = NULL, ... ) } \arguments{ \item{model}{Object of class \code{stanreg} or \code{brmsfit}.} \item{metrics}{Can be \code{"all"}, \code{"common"} or a character vector of metrics to be computed (some of \code{c("LOOIC", "WAIC", "R2", "R2_adj", "RMSE", "SIGMA", "LOGLOSS", "SCORE")}). \code{"common"} will compute LOOIC, WAIC, R2 and RMSE.} \item{verbose}{Toggle off warnings.} \item{...}{Arguments passed to or from other methods.} \item{average}{Compute model-averaged index? See \code{\link[bayestestR:weighted_posteriors]{bayestestR::weighted_posteriors()}}.} \item{prior_odds}{Optional vector of prior odds for the models compared to the first model (or the denominator, for \code{BFBayesFactor} objects). For \code{data.frame}s, this will be used as the basis of weighting.} } \value{ A data frame (with one row) and one column per "index" (see \code{metrics}). } \description{ Compute indices of model performance for (general) linear models. } \details{ Depending on \code{model}, the following indices are computed: \itemize{ \item{\strong{ELPD}} {expected log predictive density. Larger ELPD values mean better fit. See \code{\link[=looic]{looic()}}.} \item{\strong{LOOIC}} {leave-one-out cross-validation (LOO) information criterion. Lower LOOIC values mean better fit. See \code{\link[=looic]{looic()}}.} \item{\strong{WAIC}} {widely applicable information criterion. Lower WAIC values mean better fit. See \code{?loo::waic}.} \item{\strong{R2}} {r-squared value, see \code{\link[=r2_bayes]{r2_bayes()}}.} \item{\strong{R2_adjusted}} {LOO-adjusted r-squared, see \code{\link[=r2_loo]{r2_loo()}}.} \item{\strong{RMSE}} {root mean squared error, see \code{\link[=performance_rmse]{performance_rmse()}}.} \item{\strong{SIGMA}} {residual standard deviation, see \code{\link[insight:get_sigma]{insight::get_sigma()}}.} \item{\strong{LOGLOSS}} {Log-loss, see \code{\link[=performance_logloss]{performance_logloss()}}.} \item{\strong{SCORE_LOG}} {score of logarithmic proper scoring rule, see \code{\link[=performance_score]{performance_score()}}.} \item{\strong{SCORE_SPHERICAL}} {score of spherical proper scoring rule, see \code{\link[=performance_score]{performance_score()}}.} \item{\strong{PCP}} {percentage of correct predictions, see \code{\link[=performance_pcp]{performance_pcp()}}.} } } \examples{ \dontrun{ if (require("rstanarm") && require("rstantools")) { model <- stan_glm(mpg ~ wt + cyl, data = mtcars, chains = 1, iter = 500, refresh = 0) model_performance(model) model <- stan_glmer( mpg ~ wt + cyl + (1 | gear), data = mtcars, chains = 1, iter = 500, refresh = 0 ) model_performance(model) } if (require("BayesFactor") && require("rstantools")) { model <- generalTestBF(carb ~ am + mpg, mtcars) model_performance(model) model_performance(model[3]) model_performance(model, average = TRUE) } } } \references{ Gelman, A., Goodrich, B., Gabry, J., & Vehtari, A. (2018). R-squared for Bayesian regression models. The American Statistician, The American Statistician, 1-6. } \seealso{ \link{r2_bayes} } performance/man/model_performance.rma.Rd0000644000176200001440000000473414077615733020101 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/model_performance.rma.R \name{model_performance.rma} \alias{model_performance.rma} \title{Performance of Meta-Analysis Models} \usage{ \method{model_performance}{rma}(model, metrics = "all", verbose = TRUE, ...) } \arguments{ \item{model}{A \code{rma} object as returned by \code{metafor::rma()}.} \item{metrics}{Can be \code{"all"} or a character vector of metrics to be computed (some of \code{c("AIC", "BIC", "I2", "H2", "TAU2", "R2", "CochransQ", "QE", "Omnibus", "QM")}).} \item{verbose}{Toggle off warnings.} \item{...}{Arguments passed to or from other methods.} } \value{ A data frame (with one row) and one column per "index" (see \code{metrics}). } \description{ Compute indices of model performance for meta-analysis model from the \pkg{metafor} package. } \details{ \subsection{Indices of fit}{ \itemize{ \item{\strong{AIC}} {Akaike's Information Criterion, see \code{?stats::AIC}} \item{\strong{BIC}} {Bayesian Information Criterion, see \code{?stats::BIC}} \item \strong{I2}: For a random effects model, \code{I2} estimates (in percent) how much of the total variability in the effect size estimates can be attributed to heterogeneity among the true effects. For a mixed-effects model, \code{I2} estimates how much of the unaccounted variability can be attributed to residual heterogeneity. \item \strong{H2}: For a random-effects model, \code{H2} estimates the ratio of the total amount of variability in the effect size estimates to the amount of sampling variability. For a mixed-effects model, \code{H2} estimates the ratio of the unaccounted variability in the effect size estimates to the amount of sampling variability. \item \strong{TAU2}: The amount of (residual) heterogeneity in the random or mixed effects model. \item \strong{CochransQ (QE)}: Test for (residual) Heterogeneity. Without moderators in the model, this is simply Cochran's Q-test. \item \strong{Omnibus (QM)}: Omnibus test of parameters. \item \strong{R2}: Pseudo-R2-statistic, which indicates the amount of heterogeneity accounted for by the moderators included in a fixed-effects model. } See the documentation for \code{?metafor::fitstats}. } } \examples{ if (require("metafor")) { data(dat.bcg) dat <- escalc(measure = "RR", ai = tpos, bi = tneg, ci = cpos, di = cneg, data = dat.bcg) model <- rma(yi, vi, data = dat, method = "REML") model_performance(model) } } performance/man/check_predictions.Rd0000644000176200001440000000737614117453720017316 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/pp_check.R \name{check_predictions} \alias{check_predictions} \alias{posterior_predictive_check} \alias{check_posterior_predictions} \title{Posterior predictive checks} \usage{ check_predictions( object, iterations = 50, check_range = FALSE, re_formula = NULL, ... ) posterior_predictive_check( object, iterations = 50, check_range = FALSE, re_formula = NULL, ... ) check_posterior_predictions( object, iterations = 50, check_range = FALSE, re_formula = NULL, ... ) } \arguments{ \item{object}{A statistical model.} \item{iterations}{The number of draws to simulate/bootstrap.} \item{check_range}{Logical, if \code{TRUE}, includes a plot with the minimum value of the original response against the minimum values of the replicated responses, and the same for the maximum value. This plot helps judging whether the variation in the original data is captured by the model or not (\cite{Gelman et al. 2020, pp.163}). The minimum and maximum values of \code{y} should be inside the range of the related minimum and maximum values of \code{yrep}.} \item{re_formula}{Formula containing group-level effects (random effects) to be considered in the simulated data. If \code{NULL} (default), condition on all random effects. If \code{NA} or \code{~0}, condition on no random effects. See \code{simulate()} in \strong{lme4}.} \item{...}{Passed down to \code{simulate()}.} } \value{ A data frame of simulated responses and the original response vector. } \description{ Posterior predictive checks mean \dQuote{simulating replicated data under the fitted model and then comparing these to the observed data} \cite{(Gelman and Hill, 2007, p. 158)}. Posterior predictive checks can be used to \dQuote{look for systematic discrepancies between real and simulated data} \cite{(Gelman et al. 2014, p. 169)}. \pkg{performance} provides posterior predictive check methods for a variety of frequentist models (e.g., \code{lm}, \code{merMod}, \code{glmmTMB}, ...). For Bayesian models, the model is passed to \code{\link[bayesplot:pp_check]{bayesplot::pp_check()}}. } \details{ An example how posterior predictive checks can also be used for model comparison is Figure 6 from \cite{Gabry et al. 2019, Figure 6}. \cr \if{html}{\cr \figure{pp_check.png}{options: width="90\%" alt="Posterior Predictive Check"} \cr} The model shown in the right panel (b) can simulate new data that are more similar to the observed outcome than the model in the left panel (a). Thus, model (b) is likely to be preferred over model (a). } \note{ Every model object that has a \code{simulate()}-method should work with \code{check_predictions()}. On R 3.6.0 and higher, if \pkg{bayesplot} (or a package that imports \pkg{bayesplot} such as \pkg{rstanarm} or \pkg{brms}) is loaded, \code{pp_check()} is also available as an alias for \code{check_predictions()}. } \examples{ library(performance) model <- lm(mpg ~ disp, data = mtcars) if (require("see")) { check_predictions(model) } } \references{ \itemize{ \item Gabry, J., Simpson, D., Vehtari, A., Betancourt, M., & Gelman, A. (2019). Visualization in Bayesian workflow. Journal of the Royal Statistical Society: Series A (Statistics in Society), 182(2), 389–402. https://doi.org/10.1111/rssa.12378 \item Gelman, A., & Hill, J. (2007). Data analysis using regression and multilevel/hierarchical models. Cambridge; New York: Cambridge University Press. \item Gelman, A., Carlin, J. B., Stern, H. S., Dunson, D. B., Vehtari, A., & Rubin, D. B. (2014). Bayesian data analysis. (Third edition). CRC Press. \item Gelman, A., Hill, J., & Vehtari, A. (2020). Regression and Other Stories. Cambridge University Press. } } performance/man/r2_loo.Rd0000644000176200001440000000366414117453720015026 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/r2_loo.R \name{r2_loo} \alias{r2_loo} \alias{r2_loo_posterior} \alias{r2_loo_posterior.brmsfit} \alias{r2_loo_posterior.stanreg} \title{LOO-adjusted R2} \usage{ r2_loo(model, robust = TRUE, ci = 0.95, verbose = TRUE, ...) r2_loo_posterior(model, ...) \method{r2_loo_posterior}{brmsfit}(model, verbose = TRUE, ...) \method{r2_loo_posterior}{stanreg}(model, verbose = TRUE, ...) } \arguments{ \item{model}{A Bayesian regression model (from \strong{brms}, \strong{rstanarm}, \strong{BayesFactor}, etc).} \item{robust}{Logical, if \code{TRUE}, the median instead of mean is used to calculate the central tendency of the variances.} \item{ci}{Value or vector of probability of the CI (between 0 and 1) to be estimated.} \item{verbose}{Toggle off warnings.} \item{...}{Arguments passed to \code{r2_posterior()}.} } \value{ A list with the Bayesian R2 value. For mixed models, a list with the Bayesian R2 value and the marginal Bayesian R2 value. The standard errors and credible intervals for the R2 values are saved as attributes. A list with the LOO-adjusted R2 value. The standard errors and credible intervals for the R2 values are saved as attributes. } \description{ Compute LOO-adjusted R2. } \details{ \code{r2_loo()} returns an "adjusted" R2 value computed using a leave-one-out-adjusted posterior distribution. This is conceptually similar to an adjusted/unbiased R2 estiamte in classical regression modeling. See \code{\link[=r2_bayes]{r2_bayes()}} for an "unadjusted" R2. \cr \cr Mixed models are not currently fully supported. \cr \cr \code{r2_loo_posterior()} is the actual workhorse for \code{r2_loo()} and returns a posterior sample of LOO-adjusted Bayesian R2 values. } \examples{ if (require("rstanarm")) { model <- stan_glm(mpg ~ wt + cyl, data = mtcars, chains = 1, iter = 500, refresh = 0) r2_loo(model) } } performance/man/check_overdispersion.Rd0000644000176200001440000000532314077615732020044 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/check_overdispersion.R \name{check_overdispersion} \alias{check_overdispersion} \title{Check overdispersion of GL(M)M's} \usage{ check_overdispersion(x, ...) } \arguments{ \item{x}{Fitted model of class \code{merMod}, \code{glmmTMB}, \code{glm}, or \code{glm.nb} (package \pkg{MASS}).} \item{...}{Currently not used.} } \value{ A list with results from the overdispersion test, like chi-squared statistics, p-value or dispersion ratio. } \description{ \code{check_overdispersion()} checks generalized linear (mixed) models for overdispersion. } \details{ Overdispersion occurs when the observed variance is higher than the variance of a theoretical model. For Poisson models, variance increases with the mean and, therefore, variance usually (roughly) equals the mean value. If the variance is much higher, the data are "overdispersed". \subsection{Interpretation of the Dispersion Ratio}{ If the dispersion ratio is close to one, a Poisson model fits well to the data. Dispersion ratios larger than one indicate overdispersion, thus a negative binomial model or similar might fit better to the data. A p-value < .05 indicates overdispersion. } \subsection{Overdispersion in Poisson Models}{ For Poisson models, the overdispersion test is based on the code from \cite{Gelman and Hill (2007), page 115}. } \subsection{Overdispersion in Mixed Models}{ For \code{merMod}- and \code{glmmTMB}-objects, \code{check_overdispersion()} is based on the code in the \href{http://bbolker.github.io/mixedmodels-misc/glmmFAQ.html}{GLMM FAQ}, section \emph{How can I deal with overdispersion in GLMMs?}. Note that this function only returns an \emph{approximate} estimate of an overdispersion parameter, and is probably inaccurate for zero-inflated mixed models (fitted with \code{glmmTMB}). } \subsection{How to fix Overdispersion}{ Overdispersion can be fixed by either modeling the dispersion parameter, or by choosing a different distributional family (like Quasi-Poisson, or negative binomial, see \cite{Gelman and Hill (2007), pages 115-116}). } } \examples{ if (require("glmmTMB")) { data(Salamanders) m <- glm(count ~ spp + mined, family = poisson, data = Salamanders) check_overdispersion(m) m <- glmmTMB( count ~ mined + spp + (1 | site), family = poisson, data = Salamanders ) check_overdispersion(m) } } \references{ \itemize{ \item Bolker B et al. (2017): \href{http://bbolker.github.io/mixedmodels-misc/glmmFAQ.html}{GLMM FAQ.} \item Gelman, A., & Hill, J. (2007). Data analysis using regression and multilevel/hierarchical models. Cambridge; New York: Cambridge University Press. } } performance/man/check_multimodal.Rd0000644000176200001440000000265214077615732017142 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/check_multimodal.R \name{check_multimodal} \alias{check_multimodal} \title{Check if a distribution is unimodal or multimodal} \usage{ check_multimodal(x, ...) } \arguments{ \item{x}{A numeric vector or a data frame.} \item{...}{Arguments passed to or from other methods.} } \description{ For univariate distributions (one-dimensional vectors), this functions performs a Ameijeiras-Alonso et al. (2018) excess mass test. For multivariate distributions (dataframes), it uses mixture modelling. However, it seems that it always returns a significant result (suggesting that the distribution is multimodal). A better method might be needed here. } \examples{ \dontrun{ if (require("multimode")) { # Univariate x <- rnorm(1000) check_multimodal(x) } if (require("multimode") && require("mclust")) { x <- c(rnorm(1000), rnorm(1000, 2)) check_multimodal(x) # Multivariate m <- data.frame( x = rnorm(200), y = rbeta(200, 2, 1) ) plot(m$x, m$y) check_multimodal(m) m <- data.frame( x = c(rnorm(100), rnorm(100, 4)), y = c(rbeta(100, 2, 1), rbeta(100, 1, 4)) ) plot(m$x, m$y) check_multimodal(m) } } } \references{ \itemize{ \item Ameijeiras-Alonso, J., Crujeiras, R. M., \& Rodríguez-Casal, A. (2019). Mode testing, critical bandwidth and excess mass. Test, 28(3), 900-919. } } performance/man/model_performance.Rd0000644000176200001440000000245214077615733017316 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/model_performance.R \name{model_performance} \alias{model_performance} \alias{performance} \title{Model Performance} \usage{ model_performance(model, ...) performance(model, ...) } \arguments{ \item{model}{Statistical model.} \item{...}{Arguments passed to or from other methods, resp. for \code{compare_performance()}, one or multiple model objects (also of different classes).} } \value{ A data frame (with one row) and one column per "index" (see \code{metrics}). } \description{ See the documentation for your object's class: \itemize{ \item \link[=model_performance.lm]{Frequentist Regressions} \item \link[=model_performance.ivreg]{Instrumental Variables Regressions} \item \link[=model_performance.merMod]{Mixed models} \item \link[=model_performance.stanreg]{Bayesian models} \item \link[=model_performance.lavaan]{CFA / SEM lavaan models} \item \link[=model_performance.rma]{Meta-analysis models} } } \examples{ model <- lm(mpg ~ wt + cyl, data = mtcars) model_performance(model) model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") model_performance(model) } \seealso{ \code{\link[=compare_performance]{compare_performance()}} to compare performance of many different models. } performance/man/performance_hosmer.Rd0000644000176200001440000000214014077615733017505 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/performance_hosmer.R \name{performance_hosmer} \alias{performance_hosmer} \title{Hosmer-Lemeshow goodness-of-fit test} \usage{ performance_hosmer(model, n_bins = 10) } \arguments{ \item{model}{A \code{glm}-object with binomial-family.} \item{n_bins}{Numeric, the number of bins to divide the data.} } \value{ An object of class \code{hoslem_test} with following values: \code{chisq}, the Hosmer-Lemeshow chi-squared statistic; \code{df}, degrees of freedom and \code{p.value} the p-value for the goodness-of-fit test. } \description{ Check model quality of logistic regression models. } \details{ A well-fitting model shows \emph{no} significant difference between the model and the observed data, i.e. the reported p-value should be greater than 0.05. } \examples{ model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") performance_hosmer(model) } \references{ Hosmer, D. W., & Lemeshow, S. (2000). Applied Logistic Regression. Hoboken, NJ, USA: John Wiley & Sons, Inc. \doi{10.1002/0471722146} } performance/man/looic.Rd0000644000176200001440000000144514077615733014743 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/looic.R \name{looic} \alias{looic} \title{LOO-related Indices for Bayesian regressions.} \usage{ looic(model, verbose = TRUE) } \arguments{ \item{model}{A Bayesian regression model.} \item{verbose}{Toggle off warnings.} } \value{ A list with four elements, the ELPD, LOOIC and their standard errors. } \description{ Compute LOOIC (leave-one-out cross-validation (LOO) information criterion) and ELPD (expected log predictive density) for Bayesian regressions. For LOOIC and ELPD, smaller and larger values are respectively indicative of a better fit. } \examples{ if (require("rstanarm")) { model <- stan_glm(mpg ~ wt + cyl, data = mtcars, chains = 1, iter = 500, refresh = 0) looic(model) } } performance/man/check_itemscale.Rd0000644000176200001440000000475014077615732016742 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/check_itemscale.R \name{check_itemscale} \alias{check_itemscale} \title{Describe Properties of Item Scales} \usage{ check_itemscale(x) } \arguments{ \item{x}{An object of class \code{parameters_pca}, as returned by \code{parameters::principal_components()}.} } \value{ A list of data frames, with related measures of internal consistencies of each subscale. } \description{ Compute various measures of internal consistencies applied to (sub)scales, which items were extracted using \code{parameters::principal_components()}. } \details{ \code{check_itemscale()} calculates various measures of internal consistencies, such as Cronbach's alpha, item difficulty or discrimination etc. on subscales which were built from several items. Subscales are retrieved from the results of \code{parameters::principal_components()}, i.e. based on how many components were extracted from the PCA, \code{check_itemscale()} retrieves those variables that belong to a component and calculates the above mentioned measures. } \note{ \itemize{ \item \emph{Item difficulty} should range between 0.2 and 0.8. Ideal value is \code{p+(1-p)/2} (which mostly is between 0.5 and 0.8). See \code{\link[=item_difficulty]{item_difficulty()}} for details. \item For \emph{item discrimination}, acceptable values are 0.20 or higher; the closer to 1.00 the better. See \code{\link[=item_reliability]{item_reliability()}} for more details. \item In case the total \emph{Cronbach's alpha} value is below the acceptable cut-off of 0.7 (mostly if an index has few items), the \emph{mean inter-item-correlation} is an alternative measure to indicate acceptability. Satisfactory range lies between 0.2 and 0.4. See also \code{\link[=item_intercor]{item_intercor()}}. } } \examples{ # data generation from '?prcomp', slightly modified C <- chol(S <- toeplitz(.9^(0:15))) set.seed(17) X <- matrix(rnorm(1600), 100, 16) Z <- X \%*\% C if (require("parameters") && require("psych")) { pca <- principal_components(as.data.frame(Z), rotation = "varimax", n = 3) pca check_itemscale(pca) } } \references{ \itemize{ \item Briggs SR, Cheek JM (1986) The role of factor analysis in the development and evaluation of personality scales. Journal of Personality, 54(1), 106-148. doi: 10.1111/j.1467-6494.1986.tb00391.x \item Trochim WMK (2008) Types of Reliability. (\href{https://conjointly.com/kb/types-of-reliability/}{web}) } } performance/man/item_difficulty.Rd0000644000176200001440000000217514077615733017017 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/item_difficulty.R \name{item_difficulty} \alias{item_difficulty} \title{Difficulty of Questionnaire Items} \usage{ item_difficulty(x) } \arguments{ \item{x}{Depending on the function, \code{x} may be a \code{matrix} as returned by the \code{cor()}-function, or a data frame with items (e.g. from a test or questionnaire).} } \value{ A data frame with three columns: The name(s) of the item(s), the item difficulties for each item, and the ideal item difficulty. } \description{ Compute various measures of internal consistencies for tests or item-scales of questionnaires. } \details{ This function calculates the item difficulty, which should range between 0.2 and 0.8. Lower values are a signal for more difficult items, while higher values close to one are a sign for easier items. The ideal value for item difficulty is \code{p + (1 - p) / 2}, where \code{p = 1 / max(x)}. In most cases, the ideal item difficulty lies between 0.5 and 0.8. } \examples{ data(mtcars) x <- mtcars[, c("cyl", "gear", "carb", "hp")] item_difficulty(x) } performance/man/performance_rse.Rd0000644000176200001440000000117614077615733017011 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/performance_rse.R \name{performance_rse} \alias{performance_rse} \title{Residual Standard Error for Linear Models} \usage{ performance_rse(model) } \arguments{ \item{model}{A model.} } \value{ Numeric, the residual standard error of \code{model}. } \description{ Compute residual standard error of linear models. } \details{ The residual standard error is the square root of the residual sum of squares divided by the residual degrees of freedom. } \examples{ data(mtcars) m <- lm(mpg ~ hp + gear, data = mtcars) performance_rse(m) } performance/man/display.performance_model.Rd0000644000176200001440000000303214077615733020755 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/display.R, R/print_md.R \name{display.performance_model} \alias{display.performance_model} \alias{print_md.performance_model} \title{Print tables in different output formats} \usage{ \method{display}{performance_model}(object, format = "markdown", digits = 2, ...) \method{print_md}{performance_model}(x, digits = 2, ...) } \arguments{ \item{object, x}{An object returned by \code{\link[=model_performance]{model_performance()}} or \code{\link[=compare_performance]{compare_performance()}}. or its summary.} \item{format}{String, indicating the output format. Currently, only \code{"markdown"} is supported.} \item{digits}{Number of decimal places.} \item{...}{Currently not used.} } \value{ A character vector. If \code{format = "markdown"}, the return value will be a character vector in markdown-table format. } \description{ Prints tables (i.e. data frame) in different output formats. \code{print_md()} is a alias for \code{display(format = "markdown")}. } \details{ \code{display()} is useful when the table-output from functions, which is usually printed as formatted text-table to console, should be formatted for pretty table-rendering in markdown documents, or if knitted from rmarkdown to PDF or Word files. See \href{https://easystats.github.io/parameters/articles/model_parameters_formatting.html}{vignette} for examples. } \examples{ model <- lm(mpg ~ wt + cyl, data = mtcars) mp <- model_performance(model) display(mp) } performance/man/check_zeroinflation.Rd0000644000176200001440000000252414077615732017654 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/check_zeroinflation.R \name{check_zeroinflation} \alias{check_zeroinflation} \title{Check for zero-inflation in count models} \usage{ check_zeroinflation(x, tolerance = 0.05) } \arguments{ \item{x}{Fitted model of class \code{merMod}, \code{glmmTMB}, \code{glm}, or \code{glm.nb} (package \pkg{MASS}).} \item{tolerance}{The tolerance for the ratio of observed and predicted zeros to considered as over- or underfitting zeros. A ratio between 1 +/- \code{tolerance} is considered as OK, while a ratio beyond or below this threshold would indicate over- or underfitting.} } \value{ A list with information about the amount of predicted and observed zeros in the outcome, as well as the ratio between these two values. } \description{ \code{check_zeroinflation()} checks whether count models are over- or underfitting zeros in the outcome. } \details{ If the amount of observed zeros is larger than the amount of predicted zeros, the model is underfitting zeros, which indicates a zero-inflation in the data. In such cases, it is recommended to use negative binomial or zero-inflated models. } \examples{ if (require("glmmTMB")) { data(Salamanders) m <- glm(count ~ spp + mined, family = poisson, data = Salamanders) check_zeroinflation(m) } } performance/man/performance_aicc.Rd0000644000176200001440000000245114032344511017074 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/performance_aicc.R \name{performance_aicc} \alias{performance_aicc} \alias{performance_aic} \title{Compute the AIC or second-order AIC} \usage{ performance_aicc(x, ...) performance_aic(x, ...) } \arguments{ \item{x}{A model object.} \item{...}{Currently not used.} } \value{ Numeric, the AIC or AICc value. } \description{ Compute the AIC or the second-order Akaike's information criterion (AICc). \code{performance_aic()} is a small wrapper that returns the AIC. It is a generic function that also works for some models that don't have a AIC method (like Tweedie models). \code{performance_aicc()} returns the second-order (or "small sample") AIC that incorporates a correction for small sample sizes. } \examples{ m <- lm(mpg ~ wt + cyl + gear + disp, data = mtcars) AIC(m) performance_aicc(m) } \references{ \itemize{ \item Akaike, H. (1973) Information theory as an extension of the maximum likelihood principle. In: Second International Symposium on Information Theory, pp. 267–281. Petrov, B.N., Csaki, F., Eds, Akademiai Kiado, Budapest. \item Hurvich, C. M., Tsai, C.-L. (1991) Bias of the corrected AIC criterion for underfitted regression and time series models. Biometrika 78, 499–509. } } performance/man/figures/0000755000176200001440000000000014125272706015000 5ustar liggesusersperformance/man/figures/unnamed-chunk-20-1.png0000644000176200001440000014423314125272645020631 0ustar liggesusersPNG  IHDR |JPLTE:f:::f:fffplr33333P33Z33k333PP3Pk3P3ZZ3Z3Z3::::::::::f:ff:f:f::@@@AAdAAAddAdAdAP33PP3PPPPkPZ33Z3ZZ3ZZ3ZZZZZZZZZZZdAAddAddddddddddff:f::ff:fffffffffffk33kP3kPPkkk33Z3ZZ3ZP3kPkkP̆AAdAddAĆ:ff:fffې۶k3kPk̠Z3ZZdAAdPk̶ff::f۶ې۶Ǿ3ZZĆAĆdĦĦ̝k̵̵̵̵̝&&ې:ېf۶f۶۶۶Zd⦆ĆĦmfĆې۶= pHYs.#.#x?v IDATxm,aHAnLYoHD,N֤XyQ UH.R!@U (q* R778lq>Rqn62x#+"Y뀅Wyf{_>/ig~zfnN?wrWHJg>)~/_Lj sP/ΡЯW\o>(;;}з>/V}W}ᶯϽ~O\?wu|g߾[\W'n-Hwkmcr3Zݕ2: 16u<߸[;~{;{f\wkoOj4pg祾Kb>g]NO>O|nWx>.3}CعWjC]^+R*۸M?uͯmol h}kW' "ܹ{8(? OK^}4nio3Nǟ}ן/X7^߳q~y+÷Y=m{w^cýw3{p=wt=\qc~;M?klW9j[!~/wmKzm}r[ʸpߍN{ ߁aV_=w666[˿wyW`=;wvSc~w႙7 3c"oKH>|q?f>dZϾwpӻu}s㍟@;.e\C|(K̏^)޷Z`};wuSwB{8;K|gc%U/8}ݿyw Hρ?,tgwRn9# tmKx>lIC}ah"i`};wMmW5:D)`_jz-ytw޻Keo?HF0s>wwp)c}7_:VpQZxap_l w^q}uV~_[osj]}ۮ./M/ƅ=#ZbzG?Q޺VJfin}XNSrؤp C뾺T ?' %ܹej٫;]ӛ?zX/Wo ū_ \q|_Ј2}p)c½uÕ2[oI޽}8>4Iz wF9һՋK.^_{+;uKwqSO}G|ľp^ʨpo^+Rc\m6X:S½{3 `h}܍ <%E]|KE{m_UFC /up%6s7/Q޸VxLcC+Ʋep GQ o~Q*UjZFBmx =?9s#^Z=bVq`ppZUw;4p.C?ryQ.m8?ؽ_tw{|;~sWןK4x+o㶗;~Ê{fZwso`Ϥ;w)V7> 3+oU=U}=N\u=i@?է4U{Ҋw~3oN;Ѹs_yn+vjýs~O绯Ƽ9u~[UտO~󹏝.oN=^9-kܛSo^}5>UfxlLO}X?}lr']/?.}L?}L?XWʄOo/p9_gn 4i@?U6[P79ulww8o߸zٛߜ:&|sZWzwS[ ~sZ>/7 w^}l]Ӿawu5;a6)[ 9a4vcݷýp\p?\+sRC+ߒ4 ܇}X͙;``4py'P_:po,䳧8ߧnFUp\p=_) ߛq[sBtX7^n.5`;ogv٨O=:|CM s ;~Ke.y9#K?mrͯ=+x?fZ7 `};'T_}xhS/?|;v_q51ܟz]9H3z g6>/y~7:xB-ety~ \u㧞1u'ۚ"܇Z޹m};j' #9:T1ܸV◚_MLe\i`ʼtuG2ݺalϾkw_w}|ᏃU'#KtvX}ۯ#{;M& &9۞&m6r:o,+L|^~縷)l\߈'{RƇBaݻ{m[.{+͓G&=4N7IwV7.x?va?u˧M ?^\,+WO5z0}mp[pY{? ~#}^?0.Fw4p+~푯RS>`&Κ;L5 w;k3 w$fI$YpI&0pgM`&Κ;L2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2   m=Tr"暐j;4qr]ppaZt}'`<вyAo>$f;P,8Apig:l@J^PԤ-a"܁qjG P-TB%9`k~E@TP H^I'܁(^6 @ք;PezM-Bg[Hsy 7ț\ȉp;r!܁LplKw C:3 qȍǶHpr",㳍%܁l(ʵ)@lpw }};@R;8) HS)0 i@b:;@;"s1$G!lIi3A[@JDa&; 9:AfǔK 2q+_Lj;-=SlHD@[{E1 w`:8 .l@D$܁^X;*YW pV*a"JnЄ; W!pV je@tff ĥ۪0;dc~pk@$.pi\W,!܁ w 8qF?{\Kq}`$~0p‘ce_L?&L$܁ Dk@y9 w`)<`,,X.0p\`7A -+$܁٤Iw;0"0 ̢n0@3+"kdڊ^=;0"2@'LX p&ScIpEi.;0]~Z;0J ~wz+lpI#O約R&܁kYTw)VNpHkj)8NT@w`@_ 7jx7wW魔 G?]6*7 jނM>2Q;УJ*s|T }XwST~ܖ1F@=+ҨU.&܁KeQ:N0p.D&tEnRh)"Le$E<I;А qw,**Kc)h#>~;pw+(&=D8: uѲ<49Jr;4e'76v w =8uw^ѓiE54jcݘy8f;-8.spwYv)|d04*Y䚓Yscg6\;T+3$&kwTVeB `&P&v,Jv?L"ܡFMvX&!L!ܡBdMnX̦"L!ܡ>DMfX&$aL"ܡ6MVX&%aL ܡ2YLVX&AL!ܡ*9WFiXl&(1L!ܡ&L6QX\)L!ܡ"gL.=H.SP&( K}|wE8BӖP*GP%cP&Pt%cg1L ܡ|VKh ,ݑ'ܡx&KDigOCR-2CsFPDc%c=FP4S%cg7Q&ܡ`IvJd !NsT# w(WpN:KqLc w(Uٔl\sFP$ݳD|'8$q;)8I(%7 ;(2I3/͙On@w(OjyW֑'7 1;'&IXSxPĂ$fc}  `eI5ޮpnPZ$TcKɥ{ZMCI*:K$5ۄ;# IHBjEJcIC1R d$k4[;"IHKZGBCEC!ɏ%$4;!H*HTR{IBC$ܡGRAFRS H;R1Rޒ@ w^2ёP @w]*őRvT0@C鍄 $2 HlS_d''a4J#"K@ip%TJeJc};d+H$[*Q&!WiN*Eٕ@'J/i-ʐ : wSq!q+=*At$"AP$$pMCR@RسR5I*ReJaJa W;&Ha ++1\z"!PpAC^@@plju$m?9>$~g~M2yF$plm>&:"(j>;dcؼ{hbR[yv| 2m>lOlϾ$CCH6{rm9p'! vh!2d#$q}<6C?i/ O7…;0p O5nuyt;ZowsjRn^+d}?W~|/XpDop8R}0-9xrޗsq|;N=fp_vnSҽ~}_~/܁;16/:/u" fv9)۩ ߦt:~õ2_R!GCc/_+s:xb5z.q?|LJ)۩="ӿ~VC ~?:';p }n!omQ7>͹3vW}/o~_?=|b(:3cXRɣO۩Ӥ=*ϯ'X#w_}u'pܕoNyuf:?v?uTF3(./݅vj79e~?;n3~ ,%a7#"div/ƌ;zA wXь`XٶyefnYw3@H3>/2*槺Ijf%N!hƖ=&GZ#N+^wfV? GJ'U&n%wXǢ;K6hIsن7m@(V="!d9gv\p5,>p^DX,RNrP oj!a #a8f p8j7_6M@30fۅپ& AC|a#A͓c 8n ]#rtoOml ;`X2-qlcxܜfXNCd!׃wtC`1q=X,MVlT79UCu48m0|`!Q?Pw%($m54gU]"P1E8NwՄ</*"!(G랐fW>UqV|@-;ϴU?zV` D;D8c+ֳ w%hKizV`>D=<z+6ɰU?0p8"E/k%!؇(TLdMV<bX,!O^#!Ua:m\.s*;0pV9&RACptphVhjL'!U^m|/zش`e+?sooL%!ն Ƕ|{eZ :K t2ܕ;ap0H*ި/^rR#!58&Ɨk쬊3ZC>>V{rz~ʽָ\I[xObG^P!pe{tmӃ=r$!55l_E]@܁wg}cpmUkc`p+J$Բ{U̺~{-*y]~{ {]r"!p/U2W{J5p/. <*ܕ;at2˽jGp] D:½r/SD\?p MCڻ½r/1U^w9{Xlpă ք;,)]؀7m-p'a-u~+*XoxKlz9{VDžfHGr"aMo~;ܳ)Na u=⁼ wo]G{K1$Y=ƛ܁- w-V = qo{rw OlvpO3=FJ}. oDRdM\[Im\]$=6&WySz0/){ҝ 踑 @;̴{l'[ G:#5.(xK2&a/pi{RI1M wN,qۣ`|XIA$8G42cenfپۧ{r`Pj;~8c}rp _H'{ZZ^Rs=ܷ/ڶNk0U">#7Nmg}ʧrV&ad~;>#7-w^ '~'{:/@;Lw}r^ / dI4\(33ܷ*w^mZeU w$ߌ MmZpO%(pI:H ]N0o=~Z6!S$sp_;ngg`憻rV!a~+>;-w΃5wi,e0ARbA9z{ w0^Rݾ$W+wNJ; wEh13]\ZeXD]FK(W(wNŒ w܁w+n_]-h3]0R eiaG.wN;Dz/ ^" w)=j>vD=.zn;B8upO.aX]ogr a#$K >u;#UB,oI:EIÄ{zr [,lQG/H!/p A]3E%̢rp['܃{rLn e;ppe;iB{ ]q w)rQ>\ۙ#`4K=f w@M=p=y90܁H;8<!}yvZ{/@ ;ܐa8h/m| =η<],D$aX8ܗՏng%;PН/@+w ê 2;4>t;݋|!]w8t;Mܝ"}2@$}Z &Q1܁Є;K{pRC&SQP;p^iw{pCFUq`܁;u| tDcHŸ+.㕻p w x>t;ٵb~9r w >t;޹~)w <=R~t;ڽ~!] w|(#oK%=,O+wpnr`vbb~A)w 4>PG_pW@`: >gG w idýt;+"]a w(=;I-:ܣp: w ½t;+ݢلr: w$YWY p-#~QJvb Wbv{nj%;_pW@q}poԒngn/B;#R&ݾVzIo/F+w   wXv%cpw ˺Me#ܡ-⹱]/ܿz_peHp|+Tb -\(;Rwh焻kܩDoNsCCSN| U rzm%ܡ)b>ǝUvxՋ * YͩT׭f"ܡ!sb{3;kks+= M:%JSI=._+wpΈY})pGAיYO{XBIfGIʝtkwK GT{w")wѳ{v/2@j;vL]'{ZY~&Y*";>R7"{~/3@Z;<9H>q@҄;w@Iq)p w4Rtkq^i/Hp σ a8֣LmF_jtw4XpEd\I-kk_kdw,XpE:3p6A k+wpOE ITsbF+v>zV,_mDww}tU![wl]wXpCu e]}OOyIq4fO:r՞7ާ=epHp\q}Z UREt}>Q(Hp\Q}j ߓX~A4FOc2fNf Qxl7p&!chpAdr܀BBo=W`cbbNpA%fd˜o5=NeiT/S_}nqÛm  |_wM w홯>? *<8QN{/<;Wp_?ec^9hoY Bn]C;Wp_?c㘻-|zKN2>!=t7y !ܩ\gɸsob W _|wGA ݓk7fr~A 'ܩ[{t,sK>0C _~mwj0K)sM>Y>P1 BS3y*,+UYЪz&;5˺Å{˦_.pG롅gE w i}=Xo{1!tAn+w`"NbVc] &Ѩ~_{n^u{Z;u*po[}7^]C;u*ײp_6C>h˭Ίdp!ܡP*p}YOla j篦pWP(NJٶIH3pwIS"}Qlסli箩pT(pF}b[exkoUWW;#ܩQݾ$̵kM %܁ w*T ^yV>Պ^&kpW( ?mr\5Ztkmm|'$MSBNvfs8=WұΩ, LSBN jis69,-ܕ;FSRl- Y*vebo'p2"ܡ@r}noqM/7-)ܕ;HS}˄bC+0ܝrnԦn_Hzڐ[NPPNmfgfߜn'ζv{pwISbN *e{P634u훇{gX;)J>| pNi.p&xYܡ8tNkFo]+n(,Q؍M^p.%ҚiDT!$% YSiC(,ܽ=J#ܩKIg )\ɥЄe wRsQ ܩKA'ܧ{ hBڸєQw iuX UqxWj\Ao2s4e{Q;U>gOP{NǷ|'4I{1/Q@x֯LE-.:ݾ[9I?S,u6kZQTlцNkfp/E MS '%UVmNm*wܡ(u.kRQe2kӛO{ygP;(P82N1S0bҟK'ܝr:wjQޑp\gR#L?+qk"2#@҄;(J |"=1<YLT&^p])3.3h)L& wܡJxph>ݞe2 (.؊p%yLS՗K VgJ,9ܷ~ԡģpϪFt{:g%1T½w!wPq/(:Oc^ݵ2%N<jt{f&lp E ,Ҟܦ*p/lp u{^9b2o+܁ wjF ,{a`eT 8p/e XFS"O Hɩ3(˩2ܝr"wjP晫aO+0͋ [eA'1N8\ N sc69OU>^ p L`urqr w*PpxzG.܁ wW/o{Eg#3y{/]|zj(\_q$žv wW쇪ޜ?UpO KSb}uM8(۹wz^Y`.N=̶q\*p/ ISrY{):W.?y#_i \kt 2;wJW7쨋agZULs؉{_,|ƪprO9U{*/`| R*Jk^򜪮Qy^Q[=uJSC  )[z=߄u9X9s* d^€;e+WPe_9Xr:ƜdzNSzZ}Y`#ǩ!܋~ &Uk>9,l8Sc@҄;E+J}PnE3Ui"L%)Z':ýx9T3L] 9p/U HSy+4ܞ g*p/U HSUu{4< {@cf!Ùq0pdeQag7S{i;%+yf׃;ŀ _ǀI;+LU>:͔pr")XWt{n4a`Ql&=T=+Oj/d~*p2^徝i>J?K%&U]L~:W[>@>;*̹bvmZM6K~)TI39r 2S^k0p\.=\pb fm9\$MSwr_-<_- XpXş [if(7w{g6M_~; %)pO*5yMSm0pXşg]׳d[5M&;*HBi`Zm鼦)p/<0pTnp, p;5K)wJUVgI װx+g5KY{ٿAF\x=8Y:6pp&"Ҁw UoS#J\oBlfpO AS(ឬcͪ 3ff5Iu{hBUp~27Ԝr)iƚtV\#3 PCU۶MR^ù6Njrܣ esXk 4_Ӏ;e93ʣCUqݮQ^o;Ecr!VhCM7} $p')TU>{nmvi<\ަMQ}ppH=MGC E3=W5N87 g Ê= ݵ2P;N8#0VY<DٚMQ^`pDuN9p,~"m|fpOu $)Qfo]!)N5G\}4L!z=ń_wI<z^ހnsJ*p_uefOs3B}ISz.$W-cxro\﫯zPWt3R½w} O%7Xp_(;縖GjۜG&ZHS^.s\\ {v,DI&oSR&p$Vk`ɽ~oYӾW8p0kЩjo}^kTtT!ܷʴ]Wjͺ=r@҄;訖AoVWh =pO_KpMSz.}Io+_zزS/<=k\ wRA-p4ѢzWG\Ӷ.ܗpMSz~XX{VQWqo[pׄ;e瘖Aoh ujͻ}bp&)K=4>nEGYݞ1@I/'y~'g*ul==W#~W*\sQ}bl:$=]G^pESzh{qTpa4Ʊzw iTsD{,GZتITHf%85=gKG;|_['.ڇI?d,D&Pf&GU)lEVwG]kHSzh}T,IJBCi!9AqoRpFT+ɇ{Ja6Xz^:%z .-p,Õ2wJRl?4>֬M2G4Y?]Zpյ2+e+ܩp$ϒIJlz;7 ф{zv랽V>?"ܩp$\)'Xig' oL2ܓEdugo)}oo;=(g1}v ta>н]?^sc"p'sT wBg;#K+ m479Hsi}2޾og>uޟyG.>/^/>Zix `&NA9[t^e{Rݞ?{{/7/yoG~tmt>3{~>po.5NAjc>Ǹ ϧo:ۅK@K owʼpSq75=|S>Om4(XpU]~pYd=nmW'pO5 k]tkeWʴ½r͏lw9wҺ6 )G5gL-ʷ}Rg>6$)F-<~,,<9ۏ+ۓpOe եv 2Wʜ#|w}񺗫[NNnj9ѣ7}ϟ`"N1j9Ff'b:=n=lO<[Z@K ke{prq9دn-?qov};I#p_ҳdឞcy{n>g[ᖋPϿۯ$.@[XpppQ~fi߽gn- wQɁ<$=nzޑt{zK;ܳx!Hmaxy.N_]{;)pw{W]O&s 㗧|sýӟ8fswJQ˯:)3ksz=y}|OiIM'ޝrgcRTr{,x-nu{laݧ+eBI_s")E% *lȋg[e޷fɽ="x)HlapJ[ߜ\-\o9懿WZ;0&܃ɼ;m;n'ឞsJtL#ܟ/??|N|7*sW\bV')Ec/nsg9{i.,Fpߗjr,/<7C=j~-Jz،puƚK/k[ l0k.=ׂZ#}sNx 0Ǻ?|vw?jp˛>MhrTfG-z "'l}l/2t{b{M^%/Բk!Oo)}"΅ݾ|'99ܯ> w&)D%G}1S\=&p\];ܟ4ϥϛgƛkpBƧ*=!_k(N8[aFLeU=- w i2qK8SN^ݞc@{=:^NS/?*wl_w{#ezHhG'۴%h#XLw24Д}tv{fvr J^&N8=K 3r T-SI_ ,pz #*4}BD pOQM".-͈>s} ۻKS7D#%2̾pO%=IS:`} qO1ݞM'2ʮpO%=IS:~enԆ[lpO%oHd.˿DhQ:pz f>5v{Y[V^ $)Bǯˁ i6>9ۻ]/I(T4 wPK/3zlOTB/|@pu\n'ry c\ܧW{_{ $$$)Avo= rrӺpOAMqI/1mlp/p"/]# )AGct25æqrӻ9?ܓ|Yh p1Q3½I;ܓ}Yhp_`lRpHpU|c½Љ pOA Ticar_ 'p/֏cWH ePg*pO򅡂?MTpJ8ܓcl_)tpO?MTpJ<7°e Y }DŽ{spOp&N*8v ٖ/X/ݞ\%0@MTp-_r_>.˟ń{r;4 w x{Є ܗg{nO}pOp&N{E14= 1 otpOm7 whCWޢr=~|=9?gGS]}Pgp{l=~xCKC~;(%g 6&v{ |t}KC~;(y/p{l=MW2*ۃv{{r;4 wW yfrp|9};+% ܨ=\} wh#p't->ۅ{H=9;+ȕn'7Cf{nnҦ _$_GhH%ܷ\ x܃fn/,ܷޥz=׆p&N?ruKҧ7=lgm whCs9cv{G'gpp[wS'D;+It}Pı]{l3ý։A'gp`'}OihWϰck{lNm׫֋ hpwP{k?9-w;+%g{5ȹܣdn_)vk.w5>Stp!Fk{r6 _ύpӛLa*N>C/q}oT 4F=O>9ww!^->CkA^|1bߗ{nOZ>M/ }߳?߸?{wPBpUN3p'{ +,nո^ Lp5o>O]j~OO??ש}o$dpa徤랺=Բ{ɯSK߇o[wspz@[{{,mrjY{|sqw*ͨ@NB~{w`fdUӭ1}Q>y _=+!w)~޺2G,~{#a4NJ?l .cNpo~̹*oG1ukeN[w}5~v ?3v{KZT8Qt{ IDATݨ|\b\O=NJ?l V}?Ǖ{pOw6[ppbY)>aqw;wWaNO踤1徴k>=Т‰3ݭ??q0Fd֝plpPV.-*~>=%W-/;hnnV6}'$Cb?;7p";-(?ptN";6N|ĝlڶN?t[kvպͪj^Ƙ7|k͚cu:}~%'7&apz[%ܧ 䱭?Mr{}{]+5+{}(trM7>o s`NZbS')m, m*fApz[q=j | 7=E~}_; wj {^tDŽ{Ml[** R6vZ= >=I~}_ԛS燻7pvZw}$7^rO=_Q=! N}8HVԮ rrO_Q=! ki_L!ܩp/8wY.,wតpwAt3+ a.N{}e_rO_Q=! \S0pv½TDn_r=;{+X걅{C/~~0pv½TD=2WrO_1=!F vg E; ~]$bp?)~0pv½Tᾰoe'/ÆppR;  E>k/]g%bpOՖ9| wj~OpW6< %!bp?2&YCS;^pp]3l]%bp?Le; E>{fܓv{ppw?aK~k*+ wj' N7|Za ̄{C yuW#wj' N M*_3rOQ/p_D AS;^pVnu%ov{_K=!FS̜PՄ; 7|irOu _K=!/p7M ܩp/T8A/H_m~Y!EK{N*%ܯn?/d" %z -J#ܩp/T8A/LOn?+d" %p' BD7;Q/!܅;=N*(G}mCЋ(ܗwj' N#{Ћ(ܗwj' N [2{Ћ(ܗwj' N7'J}SKr"^QÐpv½Pt|շt!ܿEg'p!N{7w{)/' B} ^ូܻ{Cwj' N77=E'//' B}Oីܻ{Cwj' N7??]%ܳ$P N{ហܻ{C0$ܩp/T87ߎ3nO[_ =! wN*o5'ឲܻ{C0$ܩp/T87~*s)˽xA;DC B}9 _ =! wN*ofoͩݞnʽxA;DC B4We'+P/"܅;=N*,O[}Ut{ry "^ANcby)pOT1p_D wz"ܩp/T8A/T_vrDoPy "]N{ }}pP1p_D wz"ܩ\ҁ&u' ㍾ܧ=MǼ}.pvZw}8>U}:S{k(i%PÐpvZw}vFOr)ʽkxI;DCڵ>j e:_PW}T{{C0$ܩ]֝p_&F_o~۷O~ / p(aHSG;LpUsFo.ޯ%; wju'ܗ|^5$p!NZ2}N*ᾱ{{C0$ܩ]֝p_|ϛMU3}T{{C0$ܩ]֝p_x]~r^TK?/k_/ʕmҋksͶ~d+NZ2}g=Yݾ{{C,'5{W(^^tISG;˽k<ܗv_;37{K(i%Hg_ L0 ?|5ԮQN/T4ܗtʽK8B;~ŋ﹵%)~k{ ܩ_֝p_d/_??WA5%,[=!?ows9}s|iߚNZ†{7Kw,S_1=!/N.yuݤK/kkASG;Pp_WgI,p_1>:oߪ~+R>j ыp_ߵW{ (ܗi%0SM;|amWOslf?a?]G=;7wju'ܗ*}e_Q=!CL=ۏ_G_Ap4?fbIX:|wp| wju'ܗ*}{r1Gſ'03NѠ?̍׼ǭGÝp~Zw}nݾܣ7U/K`pT>~c7R|$OߪÜ|}ƣNL#NZbn5Ᾰ;~{C!~lZ` s~59znkeBSCMQN/{o-;~G%ܟBdF?>sa3O+\N㸙p~$Ta+n-}{mcs*/hS)'coY=?]4=E\'ܩ^Öp_lpO'徲%c{M#O׸<%c9?ړH? y:^ w%'I9M}u/*W/l}yh0{?o_S~:O~6KjFO>W;W wu7_}᾽۟}}/*hSW&_/`S wu'=StSo oPM6Np~v/}M NSև;خ-S}_)=Ѧ)zɩU+f܅; wu'e{p]aߛ*jTߖ]:['>o2 ܩ^֝p_npU}v}& DJP0cߜ:Se懻72MSև;ܮឩ׆rM6Np?v[]9Arpz[w=fg_[}Tc_r.m*"~\v0ͩ_U>l gm_~9k' r]!m*~y߬/ >l ˓pO^l9F'T:%o=1:Ofpz[;&ܯȾg/=qNr]5u:T:8~2_<)\7_ >lr/>n4ݷwlV].ܗj@G0 wx؊7n ˇrtOYN&} 9~ؿ×~Zg 5?nu^>xr1  ZK?  _Vppz͏[wqý{9x뿸nLpOgppz͏[w}it5{Vzׄ{m%7ܿ/?0o5U5?n 5-gZ.O{m%7SϿ9տ:$'p&Nk(M }_7~fiW~0̛ ܩ^ʏ 9n UHε\fkOMGҷTa{NjO~w7MHnԯK%Oǻrӄ{8yh=4Nz (:TZ.{hL^^*bȿ?rk,6N_y7KϏ^r/W޷*= 7>| 7;nͿV.'?r uRܵniLr?9%;'É7N:wF,)w~p$P NJIfgZ.;d+p; w%WJw3r}ŊpGÐp~\=pۻY:r %0$ܩ_C 8t :0نm*tG^wpOÐp9 nϳ\f[^p!N:„ ivoI/ؗ4UzA_zx0$i@c~ )bu,eӑQI#aHӀƮ^~)cWI w%W+=rTddVf@h0v nWuL;p=]=roܿ:r=$܁Є; ࣌+H%nS v\[i"+z]@ct;-aI%ܷt{2{[J\_>C0zҹuNw+nG'junl(A,7pGÐp=^};# ^n$p!N z.9&ZI=rNrp#{mv'aHӂF Ń5;"{h:w|Kp!N R^!b{__.%xއ=Uԃ0$iA'%7X)=Ds=mT_XB^AN w[,Ŵݞ~r67QÐp ½[|:jǸTJJÐp =_bq=\uKv1}N\fa8hǸF=dt/|Nw%7Yl~p6>OÐp ]_}5ۓ/YPL{rq p; w<Du3w2[+XA!p!NpdyE_^.3G,` .>NK N8QZ/4'v{rx j-gc) w4!=r9>%=4;?'Nw ]7ܪݾO|A)(7Pj[i wLou#׉*ɿVQn p!NfW|n߷ܧ6VG{8;mbgp^7\ݺ=r~"{p=oߞ믾xWw܇zYkIӆ.>^lafLo,}r>,KH/@KlJg^|]~Hӆ>0T.,hM}&}}W/0 ?|5!,zH }nߥo~LrspW_\ ^k߾0on;cqLok=rD!Q=#)~s|iߚN+xQ .+Dg/YVU KxK~p?tpuݤK0m<wE $3LN\2t{rs{ } d8_V/7\4ɧ$n:bݞtu{2½3f ?x?wܛɗt:]G_:l0prN#X)lnX3=Fu* K+ubGUo?M'FW?xp ӄ;c;c U ֋v{r=JGs.½XZ9œ~a4OO/}$N#:Ą{"O^_\\ =2``4܋qo|T Bx.e^C\G{m%1zlŏkc2?𝏹}pm WwZpτ6au2ktGG^kAVjYiNՋA'o>e*yZr͌G}E Io;dgpU` J{p07t'ܟSd95S~23~yi|ǿȝ+;det{7F =~){S~'~up c=Ի o R Qq/9e.Jg2N<,>L "8M}׭q/Y.E]ɻzzфZ?M:ذap}pOc2ax{T {uj'>|Cpy\'iF'P=ZM{,"}{ru_WDdq\'iF'K>{ Ͻk}[ͩG:U{̍VC[n )w@<1܃p0c2Z3!#pGo6Zp9uƧwoNep d=T9MV+)P2 >ׯ.lv wufSou}rwQNQ wE>Ufh/`S==N;{BH_#$SCG: TJ/h_li7 pdOc}FU˗ˌ~rH#p<]p?1w|bK%N;zqpb =V/+n_Q;O:.½s}Z/+ɧ/ܛ})O7 ;Z}<\7}./@gAMscE vS_|~#wa/ F v21ZZ~Qjrt pybݿj}s.wPCr؍4Us\ot?{ m,~叾opn wͪ1 Vo*d?:I.}jbr||3eAC;}Wpߢ1@:$Žg=PܗvrOܣ-{S:bp!NS{1l{vGI/OSrpB6p!NS!,IsGH4S5{G?Y<0$iJ?k?]ؾ/_N(X'%ܣn-Ct4y_m]GK{@鶖 K?'u2w aHӔF4>SR~=Rg1@h_vH Z~Yr5{GrN[:<V{W:z.wјVALLuW_}bВl( &iKGcpș;|e{)wQG/rN[z ½Xe]qp/f;LӘ5~a3?`Ֆpߨ p1p/i;t$k܃w{%uk@vt4%ܯJ? wp5=Cmn~U[,TSѻp$iM?Úp|2VH`W}~${Zn~ru{ԭ wZτTE•nr2me.6&ipfX+Ӓs+CwVKkQ}W).Np'(NsQp{iܦI=˽SCGNs& Nrw 4N{z 1OPw핔{p'iO/C[=\kzBux<ý';wot_P+<{ԭ{IpW[>/;pA=٦_oZ.+>]{uN:܄֫8 yE.:.OIu2={E5t eV=QB"OƶOv)S\!'iQke^GeM>+B/{עl1UMX\=BWwZ"w:/ˬ)YT%/m ؇pI]{-Y|?up^%z<ܭ;mb2nܗ,q7BӤ½0J}Br+ܣ$JӤp{=V/I^\n iUCSW8qՓYWwtws>;m/iT{ۯ]H/;pM=1n%BWt{2^Ԁ[;ma9s׳V&].IW]=q7DӨ½t:{UiAwpY͏t#^M)]ݾھ^u#o.0pY/ro ܗn`rB vpO9`?vV,;(r0Ue*P/Ç2NZ*[YƓOkPu{z12zזR]&nؑpa>ܗpm9^ۅV; k|}I4,YQs+lGNÄ{tk\Cu p?<4,"HeWK^nO(SAgwVpRx"iYDוX'* v$ipo.V,in=ڏ%;-k{HWX3\'[JpiMxm,9(wX)<4poueT > Jj?܃XFӴV>\/Q+w+eNӚ^>n'q]]~yw v%i[SNR_UU{ 0ab<荇{}tҕ_T#Wps΄;mkyԻյx/(W4^KG/Nr*G] Ma=>rE 8^;0[)wݾ~GzGzV4u^6TR{;4 pou~.9 )*} V;nӦr[^Ŕ{ XEӺvgýr;[_3SAa= wZU{}wk}{ n pFӼýr,\.ӿJ5zObm{W/`%NrYZ ׺U>ߠZCp we_G+}cOOcMӼf6M_^M^.`5NZ{n½E~+#=)ܛsOW2]uzY>T~ͩ^NM`= w:{ʽy7?2{e! p7½r v^Ҝr BpO=Nss>u^rz^O ?NpOb]uObrvk F_m;=hsl,R]uuY.pO=N̹x3ܫ*PWE])P^ܯWa=kL-`+NsS>ʽrʽpl%AWýrt^xFzM~ 7 BW D+ƖL$zE^G7l'Bp'\uY>KҭpBş; {Ε{Yg~%ϯ{)[SpOүX@>85'krʽru)H Cp_\tZSE߼Z tp~G]:+noJ=;@Ӊ{)9U-|̦r/w$p퍄3=tKr^Xr0>.j3˿ZwzZ%4zr/s=tϹB w`p퍅s=WElB{wOg{r_ʽég@a=;AӍܗ{]ʽS ͯͽTwh8?CN/q^㉟\Jrw_;hmkA,-% z> P) wx4CW;=;pO= NG+%m}mK}]p#=Voo徣=sLr}w 4NO`Ew7ŷr76{2ہk;=ikL\ܷti0MӓCXAqa)ݭwp$WW n5*;]ij6kM=]?)f6&ܡ-454cL'Jnխӻwr_rDN_Z{rO&sn+*EIp7\'KKp/)k[g2VSn&KKoO]ŧӶIfYe{l7AәfV{rO=4U?_Xpw:Дp/2ۤ{Z ri}Q4zu2qMr='3~/; wIU^srOe͏/,)Ydd#M;p/Z'4.^' Pp;͔p/45{ObrO~8Rpo HӝfǕ^3n/S+I w~0/wn]7vf,)Rkp'ߠnwp}6sTpou JӟVw}-b:=;jܷ~[O+$:i = ;bȫpC })=cZ/^.3^٦pB(S#7kI|)ݗHz*Eӣ6ɭK}g*R=2&Q!(%r/} g)P=B%);]jbzkSSeZϐ \.sSck&MC;]jb}{b,ovv֕{)GW&ܛxA S \})ܯznBk%u;4Jӧn ^8ͺ~ZnMPHpt)1jGt))^[p*NryCt?X ["N/ឳ܃KdsMo:ہل;9je~?anL,m(܁Є;ݪܷ{)X, \o;ہ;#VCUr^fPrxMӯ ۮepOst/K~Эv`Njឣ܃q-Q__.3Rۧ7pB+Vg'mm_>} ;trO;;t,]{ q{m MC˄;Oqg[jvQsrOq{{ rOI=@)itW\-whM3ឬw[*ߊ7E r_? {M whpkU{pOxqb`uLڧہ;] =Up[^Flm訅;po5O 4oD>keҔ{5u;poY΄bAbe] q-;psO 6o޼UqK}{C3u;psO' ;o|'T9= w 4Nr{3CnxK5{\fc'<] wzW{p?u-/vurOy;pwy=aA=xK51\͎ZU6% wW{p_] /7q=6O'= {տC(Fӽjܓ0o\Ƒm2k=y5slSCۄ;:)ܗ6PyK@O.ħbp*jrOk"憼9DrO}6;p|Sy <.TWԦ½Η<N .y.M.9+SOpBPkg e%NJ0йC'U?+nV O,hj򖱔N~vy{3#܁Є;UZ9}V YMuSi%(gpZ9rU^w5*}M-, d9CMAA/P+gQaydj^ON9M{nVpo=`-g%Q/u9^_kKg:];{? )|>#:R=y)(p{{pE}&L,Ynہ ;'n']n^0;<ܳ43ϧ3ހ{" _gR8sހý jR3dv_.3YYo*]C?;<4eTsD vR[Tyo^p' }u;,-l;7ܽ3HÓʦHvY_{lIóޟC_tn'2q7n)=u;(z"ar%OZ]rϷýA wk]׍rc=cW%aupuNncewv(|n p|{CvR{ wpkn&]=[W&Dq0v ׺\+oP@hNճXfp,yoPHBé\.p7Ύ.9s{pT]p2ָӪr,]=&3nKùZX*CN'ٯ{-)@x2siErOY½w@t.TT971rI7u@d.T2Ok]-^ Phw VWev( n pKy+wvT3{e.pU ;e+wvrF}^ŋ P #r6?*]7wTr@h0fFWx/\ýdn8wOrg7ھ:s3UC;`}mgTc@pFU07ܯչr'Mv=lpupqߟ5ܯr'[lCrO wu,ɖs2Wdu~VI=[ wp 3.)fکw0!{pʝ\}=ep0%zg yIc:].sQi0){p_ʝT=qoĖlOô'Ÿr'TrOAô|#dQ=K/Lq I4\&i Y;LsW3nZw!~vp+!WTr'ErO_9 w&bᾮ;I̾r{pPDUy'6m:y-pN n2=I$HpUylMӅ-eX&qooFKor߶)B 7-ᾭE-V?gj=Av 7[[ުlLr@hnZ)}{v+wZyd)ہ;ܒy ^$;q2prAMGN[–fpI&sĜCKɂ[ضVNp_ͷ7g@=;ߩ=an+wzˤ.hp2D4E%R/i}[k w'D/p߽; pN"[_2ZMܗ{&܁SS½HD/u;'dI{V=+.W=n=Ɓ wX(L rlҽ_Er_ؕp3"܋ƳtS뾪{W!< rQ?/p K06ký|7Kޔ+}Q8!a ?_!9NP#7=mpb ýtCF :gx"a?ÞeD9 r{W3V}QLj{A\p/=?߁wX#B/ 0uO.~y{3;u;PpU =PE=G)ޡeپցz wX%:g=\Fvݥgn@;Sg{:wlܫ^IJŧ{̎z$Ecw+1v_pR{{"_Y6+u;PpJ|^ȡR朽I{np ߳=vI~jȻ^-@τ;lPo{-uPI1wkGo{5(9 jbꠞ\Uƾ ,=6N%n{M55\][ہ;l{^WMTwծp/|Ueý:/{Ww0+^cOTݪj]ہ҄;lZWT[1ݱ/_ ]]wتT_ jIݗir߯{M6+T^sQ݄=xY%p@6gDxp<¦՟'%ہ;l}pZh65'Spf@r&jJS.1AC %}<M%b3ں&cG2BC t vukXN.܁;$Q½z`*VkqyI>ӡ]wHjr@g ~彡;3rә{`5daӔ3y\`=dO79^ϒ0w\`dG~%piv>Ovg.e/BrVN{3锹r0J,p]l|DHf:u NƳwǖ{Js\!;|n:p~jM hҳ"~@2v^}J/2}!7i]}1\E Y7.bۚ򢸖@BZ#<.HIÎ⫇} V?7V|!p=-7 lxf,NOB -Z6o;\X@bd(:8I=Ԅ;l`}pbSb<;mhbط\x>ބp y6݈gpSr{ 6yd a3.aΖ<;psO&!<,;pcXO<+wz9pkkq@:';}K =7 e\sJemҳ ECZ[쟟ٿѷ}/7_֧?8ŠQkyKZ|~{/ַ7d#!w v_ŷ}'_|W>Sr?yz~'~TO4 Iyߟzf藏co5#ܕ;]Z|(vUO3 #Iꇣy[>T+F9Ë 7#9Deć>> ;}XuUO\'Oŧw7o=<ߏ?<'IG<;T_+;8p2{ߝoπzΊg`qy>]Xy;}&aq4l4?CC:?\؂m8? cMKwpz|Ƿ7ǷJS>̴?~K[rG\dܞXޟ=~q>5G\MP7g>?W~x">0~+?7|59 i=}ipo>m곏4ܕ;-r{?pM?'bǢ?YS:L$<}~3ܯƇO8U.i[k?3})OS@dY2k4>7>w+]Ӧ7?G?j>xg'yP}WO^WR9ρ~{jmr[7~NN{\ ӧ~!'~O;pTUO >'ܯϽ6|0Kw+accߍWo?p' ==TB ?yڱ_Ӕ7G=>NRzjq?_>?O|uB wHn>}'Gq7fo M<~"Cß<=_ӄ7*{OO߱5KO7K wH엥AOqÂWahدi@y|7_tK? ܏/z5X@C\p?UCOmK?[fR&Ťtrn^~A]?X+7+;$qv)3ϿHuj@d>|Re)~ڮܩZ<7>XHC c#pȳ s)N~s1(wOM=?9sx~w߻9E+?nыwq? ~ l~$E>ñ,aRT(m;{~~smY_?q'.pGQ= чWir1rO `?qT&-ѯ OG{Oi:%>,pp>݇O?ɋ~nܻg~X(d!L=,DC_T~x:󓇯<.\%!B =iQa͚TVTSy~ܑd"!.݉}{S= !b- `e'%!/>><+wb+w]ߜO1DCS'Kt'rw#{A%p(&ýL>+w*G~F~@. }9xޏo|@Bb+ʝpO{B w|+l&! VDr-;Th4HwB,(;Ԡl6+GO U-bwjQ w+pJ(wBn}{Q E'kG8!ܡʝ=< )ΥnwQwI(ſT;TxIQf+;TxKvQF+;ԦxNWh_\PAQh\l4 ܡ>&.ЮW=!ܡB">ФV]!ܡF"jᶊ#;)BYR 0JCBEʢ!=S `pZh {ABL!v`pj({AbI1`pzi AՂEAv`p 61yBLP S'nLP(%O{'~LP0&J&̎LPhaOEEVav`p)8F0q`piW ;BaO U(=B%!źG U'>{/VM$Ю\'ܡ#XI#Ю"ܡĴ;c !vM !2v6m"RR 6#r6͉#ZU; ܡ=$dW? ܡAQ3)^_+nfФxa3+UGwhS4qdG'9;*bD-9 :0pf 9GRqsȝGCb&Jܤ#_{0pŬ]f/o̽KCӂJcW6~$ܡmaS%vJvfкX(gs wh^`zR5;/~NAfC\zZWWUpClPCVE&pl:]j?.Tqق|zQG^Ibw`>0u Gu\;pį:jZSpT24ajD"":SA˼WKvS>,"ܡ75WڕK; pQ45b'"u%2:TI{UZԲwR5]SW/6ڮB5; p>aec[;*2zUS״wVU5VeBVS^,#ܡc5N!YJum pUedej=1"VaZVw\cL&5*w`ݫ3xjN̠>u52}U]~.+me;Pt{gjw`T\>ggIG]7/"89qڪyE;jBw|ͬT,!܁g dP;QIK秅cX@CMx։i FrQ?;8Jٍj Xg#X@jmfi:;00VnJ, ܁QQGv< w`\swx}tGMLj#5Y-ӥV `Lk9&򽺃m8h5TVpJm \t?B;pCQxp5}˫N7uMFqUz:VipYyvu-;bqxZ(}Bvq\<݆B (8!܁zo''pR#Tz& ,!؇; p0;f#;"3(,uw`qE,iXE` $HppVZfE[-p#&܁m[ ,Jv`&l'X˽0pR_X@iH0r,"܁dt ]@BZy`9$%ȸ]pe\;`$̘XM3Ƹ/@3n m;N㙻`3d8r#$ ܁4;npnr.\\t; 5GuåHO{s=pT]\`L;;e. $܁2yqA2@1ڽ%@~(IU؅p S}us"܁_\9 w X/D!rMJPw IKPpt:2cr]J@L1W0p-@d \;{ g ħpB@r@5Nh;PM pjs2g 4Hb'܁Z)dJwfs3\ͩpZ`R@u;Ј(J w!cM*J9?5@cF:?+ݟwE:sb4Es¹ϣhpzSvt}@?&򽑪m@o&m'܁.]:#`F;@ 1\?2HI<];6r<pin4-2jIDAT @%;E)ҧR;mk] Ol$؃p wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp wp: u;]!@26.>'IENDB`performance/man/figures/figure_workflow.png0000644000176200001440000024256114031257104020722 0ustar liggesusersPNG  IHDRn+`vIsRGBgAMA a pHYsodIDATx^UĎ( v(/Ew&jbĿѠFc jb0F1156bB&"eƲt*("Ҕۙs={Ͻ3s̙gvB!BIJ)B!BIJ)B!BHY LwRB!Iݧ8of*V"B!d-7,hfyzL'T7zEKjRB!t֕/2otϽ;ۛXxwRB!_l!fzc,%]7z7IkbRB!">fAEbo%yz{ZE%޸|u* !B!$i_i{T7qKSw 19fΛEXfyf1j/gnAkPJB!B`;V? I3QR#FAGѓ|fs_h8+t2oRﯼosJ)B!BHTy{UYOJ kQ3cy{nnSثyZC;"uLolo?9rJ)B!BHb6|t(o`od'9{/p`]Zl;rz5^Хg:bNs^*ywz(!B!al]?kQ *F{=oEi#k9$VQ>iu_Bʥބ},ob( cݺu'O?!Bv3vlݱE'y򝗝QPDoomtnW<5xD' 13Wf_*لU}6Rlr뭷zA2&2dH^Et!JriY7k ޻؉GdA()B\kT {~ TRoBiֽJ&"s=K9Can/\Q(/e+ǷqBH׏1:wp2@Hְyw~Y_k,oy7fJ]/nK+ZTt׺'Á> TfzcXY6KRuщ lɁeѡM9r$,c %u[o]nG_#$O $ٶn늡sf7~|'رcy-1 S8SR j3"ui:$O&IDRXZ<:,sH2lذ45 jxகI$/l)UIE[jaoQ)Yy@||]}hR^ZjK]} yUS7|V"م2%0:u:,N,D RW! (۬YyqvC>U0Ղ:叜 ?BdKXBwVDE`\@HVuX2X0 46HRՉrlIa,E `F?RH'ұAaq_SKe2nIVl^2dcf{-MMq5{.}0-gMu%z}6V-Ro̽G/M6V>R$pQF1trĭ8UrpÍAҥ,rA]:wĹ;~$" O%E?*$' ²B`!'@ :jfRqJt ΢34y.$8|[oIDPٚ1@IjA6LP3"{:Fi 4Ɓ0TcDHXK(PʈG;T'BnfJ]JRdISJx Canbk 7doҒۿ>&c?eX & *'*l Py] p#2|$)=ڹd8U(] F1i :Dk [[AG5,'ƃ d[ x@H:@_ *WNAc"H"/Ac)t$w1:A2\jY-8?5.+|V]..jKN{WpYW0`'2 o+S\[ )PRB pۤoM'?4XwykT)EC¥$TCPp|W-Zc:rBNpRV׸I\}iJ2 }D _p ˍlgu(Ǘ ΫΨc8@8Ab>S-+Q@It.T2c(5l0qCU4Z{Rc)r{v0|xl9M іZ@㊨: >ߨh O@e2nIU0ܱloL1o5Eifs-UJfs5/g?]荁>t;*aq|lю:R$ȸj;"`|׿I)77VSN.i=׀v[ IGJw%uhb%@ֳp4{B6)}QڷBYFDmi6׾8!Ḷ{]`˪w@#u@9D,irжUNrp!+9.t<(kZ J R _X=}YM` %A =/y[BauÝmK,~-*kSثm{[{eDIzcgyZ|nj]SRdqUr'p&n w;{ +B|C Q޷Jqsa$B}tݪXזj÷ƀkȢ갊H\[-JS>-lU5l^Ɠ+OUSm:8 QDGyT !{.TQH w, t"\)ڡI^5 '!e'Z|\yo"-݊- 6.h^cJ kQEޘz^*ɍעVű ӻ|p~qgu*ƺ55ͥZKJ)]d\JpgB!7l ʪkY1ݥA-uߊBR*n4$K½߹sgǪv2t`$ΨgAUH\kF862}kFa=W_.FXVa2)o[rȷPVu JACaq>h(d Dwj'qϕNܧcR!c4}`];wm$W ?u E2\jw}u3{̛䷣h?W5ߵIEi& ^+k|o ntYqל_k0U(Hv }{hupEpBAuwoA7<׸ 0ʳj[QHYJ\RN'wB>rh=7 v=5,%W[6+]$5рv'sV߹.rɆ-R6}dݺu+<ݦLŷz{M#6+{͇qG8 ]P4E=WdYD aR֥Z;>6&n-٠H)rwyseYÏb+xc,YU}‹ˍ{6׵M.n:[ s5[`Q}Q KXc5 qm.QdkLߒ7 5 3Bol7Β btNoK뢚/ܵ.dASu TE%WNRd+.0tCD)`{r7JhXGUU&2 5S,~l#6΄ -17,kz=4J7~64eCr \)OR Z^:5qa[ dvRt7Za*\BAʌ>XI¯Nji&M"⵫"W-)ay#_ae+gt7qZE0{0{{DTYy\ T?uNcJ xoɯ_Qod23")\[!  ̺K,ӧzT;Juߊ*,[L`MeѾYBi X6: ,k>ʚ=j-rIp"5,4@X`( oqh]zKp2p;)ArUws?+ EQc[!(tXɺ(j2ly--ojФk;lJ-{7O]5tk6&5/t^˞K-7Ǭz7ۛXtĄU,ؾaPJ]Kbsj2]`zZRʵŷlV7cZBQ) T,.T H5/\PWm|Ɩ[QA~tZ2urtnL\qմ,4@u Cj۾ DiKAl!]6NLA "Z Z!|u}Xꦉ+"WВ8!*D2ʥ}AjA"2\k;w}Ғ>Mw^Fyc:٫yifsY.5+sBMt^Y OTrW\(pBd9$b}+!nƪ@J7r5vÁAD8VkVJ+!MB,"ܞeNּ/d}@9m J4%E/Z^|^M|晋ۛ9QTVLceHp5oR ;-0p)+_ z(UJ`Ev~տ/yMwm>gҵ(xAׁ]tGQӽwq]f4vsբ" F̠u`ȶn >Pº+Wk]pnH)MnƪFJ^Ȱ }BNPQtE,իz GD )14˅lȺ RVLo2cV/Ȱ\q' *|ROv1iݽ⮅+ b E-PѓGz~C1(ֳgZ໼2 2~K?w?lL/UI)@]Z+vk1[=W䍁|JqjQJl&A6ȶ%Te+aKJX!wVG{41#fʤqSH1Yް "+Ae/{Y|-`.@CZDRdxEѾt|4 đ)=(tI#>~ E5a Q :`F 7~aÆ(}\wh"ߒf] 'hN7Ã_?v_lʕ7Mgti23D\q+ T Mso'E)E!Ot=}@F[p:āʬAoHj"Bf aJ-ɓM^.c'OA Ѥhx A(TЛ*1]{NXhDfEj_dxm0d˄NBKSh?j' BЊ b-0꒸%ȼu.eУJs*' ݰFRjIBm#z3DW iݒTd$[ReKq?J)Sjwχz"J /)/޲tɖeϬ|E~nn*Z^6/}߲ԔZR$'} 5L1G*` " :,p edrmֿ0q` & #U,J^R@Va(`/DA-YV] E)`ˢPPAe9U/j?Z{`lˠGSTŽ#"*߀&Kn+T R%UH)U~'[WY~e&3:_^[cw7~u[kƨ*+㚗uksmR*e(\Q#I,!\JꂷŒR4ަWe/k=g]?v: }u\^v{?(^ńsξv? {}* .b0!P#/{bˎؽ`sL[_a5<[_[^;۾CWBm">_q\th8;vxu8#N 1؂!*0Ky5' 7/ٺsز\74ndi7Dپs??#YG/^m6e7/ X⿏:0{㼾%WI'(|\x1ħ.hl 2*ܴ}2fv}ZN)EH0|pkp֭t5 2+{*ڞ[ȗHnA)T-Ri-~厝;F97_Q'W_8/K%[A)u-dߌˌMi><ں߬agkw/ԯgC-oev W|q5f`jV=:yݧ;w휷y>jCKRsl(A7l4ksnxTkmT_8;wUٍMcipȯыK.nGd?(& ƚQf:hj?w̃XпpC)g|WTy3oV֍R B9k u@.[SG{Q$研~xKz|=R~i%Mm~_靺]Ͷosv wlbhz'HHf]}<5tƴv-_R?o ,~<`6aLͽ9ƭ~̩yz@MY?PA ==[*iy$P/ uD~5'w”f8)"ۼ%B8Jںs๷ W`jJ@ h,UK mNK_rO1o߰iǖ~٨BJ)Br2Ǘ_~9L P'>x#Fp%zBPE85`3%j춠WY oIU+`_n۷=Je~lZG=y-^7|q 8*;mjVDm)xB%uչ !OYjhM/X7ּ\|;ACOE੦}xf4dJ]44Ɯ6 yC\)uδJ!/TF9(+6o ԓ+_RsJpJJM66+uΝ H'ϪʗXT;޳86ɷT!i%|~v~ӧzakH:il7s7/=֪Po]|y$Exgm3y'>>jZ?JRJB!H{H)uδϯzApvjgu_||+[JcӐ.R_ĥso@2IRN] ()n,m:RXS&).+Y 8۩8u]|ٸcJ=;ݺwRJu)pMעBJvm/EĚra"Fem^x⿜5!B!N*8;6c#[ j5sԶ~ߟM u++]~d๷Ksu|:YW 9+gRRw/~Rj񞒅~; 6MúmJ9boJʊE Vw]h<Ycp !B BTsVv m^?/y[_‹k߳Ɍ Քы_qxW*#R BV~zMj TPwܱn۷ѥԙzByu;*ӦAe.I)E!BH"??{vpgLm/oUKHڴ}h9P&HARRR /,?JA55]O΅ܵs<3+M{eLy՜ΘC1^KgvЬ)V$JϒR$)^X[7RJm'JXz}>keO;w\}#!elۗVaI] s1\bx\̹y?B1_߻_Ŵw7,*ٿvmɡh!!B!9@*PDa--z@@n-vM:F9 6+ V|>%~]v#WR%%*a P<{ k'_+Դ"z1s+Խq)85NzE((Ýv>cI\>&3:#+_iIEBJahPG(Ɍ s>~wg\Jjy4Ϳ%B!$ RJs3+_y}{XKQAMg?_]kF=j ҧ䊘Ҙ+ov˂?u-BHλ=B& ,şΎ}#˞B(*/ܴE])B!Br)Uq6F3.8wz:[芣'-P쵟PȆ/0zfO#THϛ~J)7^,B%d>9l)K}4ryg9?iJ4?mjbi/prefN~SU]x@x GJCd;B!K)FSu-w/ݯǿ{?w-9$D:*YpP_4XP}r~O9J)B!Br_)ue圔8iBOOxKi_kp5s*wǺҝmCHCbEgϯ|k}^5]*G)E!BHnJF/ylo搔9wz'|^=֌V`63{%Pŷ"Lbmo2'CfA~Txy[Ͽ¢QZM;7-B!d=X2_,Щ.,t۵X,Ύ];W9uH ?}̮]K,iӦMV6mz饗~{C!{D:aܛn`U|7Goz#~ߵq]ٿ9o[?T5: N(!B \)eQ30RU~4Ό /.晕|k/Ky}{(r-c#|ђ+vگ_?|ٲeg]oVti 5sN/)Xv뮻I&sΥ\߾!Yo>&t: PJB!JEzkumf̛wjKhѢcǎ?~*X΅|]ؾo//9#M~p zR!"T_}o0c7o^VkUVi]VXQp:RB!,!L碋 x3f}_q :w/u׮7s1<ٳgϟ;x~ի wRHϸ9}qAM0A-07z#aRB!d (Z+8[a׮~d۶xwWog/y;X:㎻n馽駟vݾ/!,5?bu>w}}Žn>݃FG0J)B!B]pZa_<˰k7|Ӳeˎ;xp@vƌvڸ}SYVkz}foSVV+yGuԊ+[ q-c;o"a޼yu3=>G!BHVRy~^ſvz]]6lЯ_c=2d>3rHk#˞.0-;~ܣo۶m?Î;>v8> V\l9ܵS裏7[_>wz'+N/|N"O?ݻ߂f6}yPJB!䨔 yv_nݺٮ];C};wh2?jWҷf]:R9EEESLټy]΃_=޸s>& 8!%/huq|I(="_%B!d;+ZwT0`$v 2do{m.SݮOyZ~حsmy/׺F;hckvw%_,ۈgʌtPPm 4zcg4ӱ+?߇vmͻCAԹ:Gy:GrRNcCڵksS/۲.[O)<`CZq `eF9訳h}p^G7ߡ+~?6Nxի#nUֳK/}kyMlb~:p-{}O8NMJ@&rgt;弟]rއ^}xcCmycQs)<"^CZnA)E!BHnPR8fIs>Sj7JBy-C81уOj߻}Yf:˓]v]:.x/OG=ٳoOm~8칿>/83[}F?ٶ/;o!:-t> )ibU_J)B!BrR* J׮$6i-+G_v~XYzG{vܡskזV?sfG p)ZURB! DJn-&viVG|1]aotIr!L|kE^yeD8Vk],5`?gys{q ӆ5vgsrgÎ=}!B!Aj=%-ޱ:GϞ<ʹa ˏmG~nhׁ{k {o:vmٲe~||^͘:y.o{ʿ'UY|b =Sz׫YJG1ا޾>1GYRB!_J8gA{ԃ/󃎊p⧇t:v]䰾}6nxɒ%U8k;?Sِ.?&O;Bz۠<~H~M1aGC 8:,מ7QJB!R]AŽN=qP:?,OIyZm{i#xm(Ivsk׷= ܸaIO:Z;u?{ Ͼ':.:̏ :!&k!ՠ0ç(!B |f =ojP9x)\ }cG{zݳl Pkԥe]sk׶m8?7n<帓sfT9"s_ʋcU<~Džǿu9Cc卿^AMIQJB!H>mf>oZ{ٻs~M9?d5]ެxm?w@kNӇJ-vܩ3kׂ !ڶm*|ux#N{YA6,l @f O/ݾOw|gi=!u\4ثNIPNSkc{A: FػU^)#j+QJB!n;)>ϝ͎  Q,岁lY?G)E!BHn+ڔnZ#ׂCZvFlti5|6K_cǏϫX]"^羔'73:?ϟ{s^J+h~r_gpmtּlousy]{k3td;3ўkuay15U1ÔRB!ARm~ 5<FTomvQnirjS>_6S-gxDӡ;[?oHķB]KΣnL8DrںRB!%PJaû}xc  oiR:-'wu^>-f0{wymi?G}j;sl{טvk|dPJB!IyNٵ jo?>y-kS>W5+x =W0 |ō:vzn;=i =ٜ;(!B BT>quc:.dV*_:T㔔.tMgH=?!¿zh9IV R_/ǻy7eK)E!BHn"Λݯg=muv} 쁘ǀ0PSJJ:ȧK+g_;uûSJB!R#RpPSeuگT?ÍlA>O9ғjY=sS{YG)E!B0 Tu\4ZC&7Ah?5jvK dk^yHL!B!$DRo-T*]~NK/:\jڧ޾{G=jڦ^=kpg?g|;J)B!BH(}T1W+JǾNR։7um:|glqE>n8J)B!BH":,pC͠bN }d@~^mUKR{o?ZO|BVwϛշ}QJB!B2L$)5qOi\[Et?뱖JTjpZݣ.:a:F'v1 !B!$$R}=Cv˛e[bl`P:Uq!B!$$Rgk*u4/ 2}V6D0!B!$$R'I >EYZL*IS](!B!UD)U{^U~H MM!gRJB!Bp)tPj597.oVߖv))pS;p B!BH.:hڇrrWwω &ZT)=lG)E!B0 Tif/s:p8ROw>Z *^{/un>8J)B!BHI >G֟J+*Z8MN8țNM:J)B!BHIĜ?xtKkO"w7}PS:g>7h`;-ڍ"B!dR zi^3i4yS%aT _aހv}Ln}!B!$XRRmaY}rϠ^=sn7_Dž!c.Sx6UF~{iv(HG喔j6SA)E!BHVcIzeII'iv3u_`Xo>SVUןQ: ki CRYYF <_RB!d5RJMޙǻ=/rVmn?_iu6G-9罜wԥȘ!!R{sL@ 8Dxwk-n.C]DW>CxW;uOw~?s|Tc/yykQpjQJB!%*~tӧa~ە0@Dn8~O鬣ϭ8u*s_lk[OYglfm*hޭ6^pqqnt spuK^nrcPtϱ]>8MѢۭ#fK3 RF~znffjӹZ_ycU.]WRB!,՛0ۛ$禔.Fbe_5ռ%Ti?y/yo:{pÙ|Ag=mW7|_Wg{w܋9O=4۳n^BU[?{o74W_-J)B!B- 7.hz:Kˊ1Sx1viUӒ+y%sTQoc=ek7٩bR(Zɋ\%={^ѝ'_K}bo[3Q ~;}PJB!]WΟZ+ޗf=t]]7~j& .&vK/.:oDtXgN`ŇwѯZv Η߻}Y}|;Q*]^Mum]{osKQPP҆}cDPJB!aǗ-ueޤ|{1Kz=W ashzJt->zX[ӢV=֡ӲAGt?fc kaAjd=£fk[`jq˺7^J K"zuU-ܱiPJB!Kl[òϞi7tn4><`\z~IڻnVwo?םA1 $Lu꽍zE=k5s)aހ^i){lW]ReI u?{m+SM/)ͺ~#C)E!BHqƺy=xcKq {c?XǛ#)wqEHM>g(jTZg%|NaDž8q][}ڽ{XbE-aJ-wNy3>\r])A)E!BH}U,({W񝡎ڕU{7?;.qEH RjCi=G!BTEUMw_fz -jfݱˇٶ]B)E!BH⍋)Y; w7SzO~!9 i6:^j2@nfZfc.뱖}wC>׶{Zuz-OV|soLo7uQ PJB!Rv9m?/&Ac@VW+N<|mnF )EK\Mb._lωQm z5ߵuAc^}-(k74(!Bܱ'(91UEx7\˺70s]d7fZ ob&~dW&RB!/n. մ9Sc9>߸-K{Xb\Y=/!d:|N)$>_[ti+J)B!Bv#6|h`LoL7$O{_邏^*/PUk] yY{o_W{ O8}.aUA)E!Bn7*mQ7c޻-cz7.Ԧrm z7׭eI/ycgxY,bk%O^;b.UB)E!BȎW=gg{f8FAeѓ?=n˺[j\ݛzɋ~ Q]ӽbuo_Mʡ"B!d囗^7+ѥwc=ޥvi9r_jUzy- ?gyf1jɕE/ܨPMPJB!gk\8{' U7_?vN̯$\5oZ;~wsdWo'V(!B!1־윏K3}^zI/\ -Kz4׵M`wZ>׽uޘ|Նg{g2ܹSg"B!hߺy?ۛ4gި~d^W[%Zh2Wx6Q((?{ 1n/:!B!mXteagyܷ1#mcazkQw:o7:w_?♛JeRB!ܼϊqERM@5MxA6Q_BLw2W|_*BG51unJ)B!B?;X'yf:^3W?r]ݛ6 Ttk^kT7fZT7 *:z.ܾ6:!B!$m_9u&3Hhg:>zkW4YеE T-ghK߷1ߑttpn7`Ko(a},RB!ͳ[0pLot7}>o=?_|uQ/t߈e޸BoS7LF/롔"B!DVi,oCpqG|]@A5"nUCr_D ]&nWsRB!$عm-.>fb7i@*ƼvSW|Z}}eXIޤ'}];wsJ^zi޼:nre*((;PJB!QزewS~}dl};LV 2}2d>jݶ/:blot=2n9q() 'gp\R 6;PJB!Q}.9euWDy yDT-7.M=GzQF-dtT53vXk} g:ZɉaA)E!DaĈ)_gS*#m؇rԩs<~ګj[?9>+ƕxJnt |R5Nb8JNH)D]8 !&}sW),albtCx6l ;L?T5;YE* 'Riš"Bлwo}H,u7T׋=YnàVaqիܑdqXfּ ^7C?D7ƘΆ¬UFcz#C*?HI!WÇG :,t!_(! Ȃ]lxbFe$WCR{[e}!85|NR6LAA3h $ ͪtlkΥV'A)U͘Z4l%}ڱc >"GhahرAeSNRBHq:C|}ǖ-[` z?!a1bDD&R@':=+}F@* Jdź>h:E&~ B%D)0a?1ORBH@8p'g۷ERPPn{(֭;vX}CQ&| לȸ cqkŷBLLA)U9R78Xal ۢ~AQx 1q7 gt E)E!T;Ç78pYBŊJ/ h/A \#Y[UdJĚñ^qlON^^V Vn(ԠAqsV!RXFuWo@8\G-ֈ% 0<`%>ƩtА{`ȏ{Rā ӚmT);Pg2N !t{3rHti#\^}XϸO ЯpJVj!Huzp\j6kD ?l)k qtXJ)B!ڱfp|Du@XR }R;8uqQ]N7Y 1%mʓRKmA2 Tub=@D\g"°q7:tt[G!ߣk4Rм3A&NJ)B!ڱlX ZʚQ ?Xc5hn=3`RBHbIeS6fCz*,a`c0\\c퍁cI i`X`eaHT*MJAˑ'% TauK|gqieІBRڰ^sVϗs|bI 9P0KETk.Vd9FX % RB^?JѾq\_"!Y`.CHRY6eV~gBȔ 㫣RIJI85[u@5AT?t]Z)BZ1ʏy7,Y(!jzaÆ: O"ט(dLiX* тv!uG4o HòȈ cCE#RyPJUOb&1.hv 5M(`rr RA3[kl!3ԔRBH526ɥM,&?-c rzpl $tpJc# Wh jСA/,oà- tF(k91!YgqLhb vl73V:be +)k ɪaë@)E!T#}֝ M%`d3_>e~@%o66(xRt pjРA^^qJ 7r1 )c+179 )k#!RX}*oXj-}dEq w \85f A:6 ǷIf,㻞]$t%NB@u)Uq3t ,H)E!T#SѲ2 pB0dc00wp};@:8(ef(@)UPJUVv皀],K1.H,(Ξp$N;F,Ao,RBFMڷ"*.k[׆仾" ( T~ԭ[Zk`ﮃ)0N)(JjY8:"?}:FP z#A  BH~䮽VPJB!Յ%~Vܾ` 2ud4 XCpR+zrEa@ehgӔR5Jj ]b?:Сr[΋sz 3`Y0`A C AJYEsOKB4$\u"Q@ :8- !R@6 sw+!0cp, $ֈH,"$5x`|K֦"!B!$ !B!$ !B!$ !B!$ !B!$ !B!$ !B!$ !B!$ !B!$ !B!$ !B!$ !B!$ !B!$ !B!$n!~رaML6l8GB֯YK ߄8k<W9.|=wt=1*訛vf~C5Ejk3 ߵouue q" u0uJ: :TSuѤY]jҥԳ+GrQ+^dJC^0mE[#cԿ]jB +Rts:LufM6n-:DQW΢oiեjgCT-TBv:o^M4W|s!|t7ܵT8P?Bw~^[߉M(ܰ/ !"PSwQJ}3G=hcy t@EM#)i*??xr aXj*aSR &yg *RcdN7xhϑM4gWо1qNI"TT'toTiGe3qcҍsUANE?qK!cU[/!:fCoE LWoo}" H1\i$Ryw*z c]UZuz`׻y0ߩ}+җo8f) 邤;թp_R瘯'#9Z»* -WB2Kᦥ0TGA "JLmA6oPc4R'B2ҁ}5HF%*>Zq]Ȭ$_:"j`w,زBĄ{m*/jM9„"1_J[UѬv:%"DIY OTt\ps\ 'zSυD^"Qfk%g+ИQ '\HR˕{]YvoH!{ t"hD]s|qݧ/yw˅HsTZR0V%R:9XȰDՎH<|i"$NHaFl ϫ7Gdd 3ܢ)fz1_@E9$bBD:*cpJQ.u.燄ON4AʎWC)S"\*ʅUd%H!d7 EտQJ/g,< D3]L )REPk\87q­R`b¦fr0. ~P:ظA EfcZNj T)`t0U}S֞tًr.Ԫ-HDj/kU&}ˑP2Qh &%Е@ dKgV|PzڗBrؾy z8ARʼOјė+SV zfhưĀrA/U[ҡXx˜HU a~#FY}/D1D9*USIHBe-m4i8vpu6RR"(h3[$!`n\F`+$cLL7)$Rqr^[M:dL=)|;3܆_)dϚx.KU&["C ͠2M{\}ˑ)'P]ER7/ @pE;Nj BJl!(0 ϒ:eDJ!6p'1cBaj8wu KQ@c@Xq Np9%< Ep:Yj*⹬ydKdHU󦘜-) 5P &Zt)& \@8AfKf՝!&iMVne1(?1)GGj!3ʈCP-ߺXABK%`{$["EjHkQ}HYJQڷIBJF#M% LM_lYn|h{9| '7,)\+񷞾+Xrbg̓^Qq卬^y"91dO>6 'r.v%RV{)9Ac Y\EV؊cqV  jn7L?{ Tr,/](XcҒsWYQZY'|3c3qu8-䓱Y^fIPd)|5%o`1d d ^1\F Il^ xz{ dSVYecګIBJ{Hb֕٪}01H)\Z^7Ah`B-eFe*d~YRKX3lR2ʔF;) qSdKRdfl4(Yd0*fdjPP'}gϞB}AiD !$0v +32&7u/{ϚWAL} rz ʹ _d#Cd,Feot)?̹-H P9dX74IȜCjߊ7\#:^LRLX^q`*毉PJ6&1\#а2W0RJ

Nڬf(íVYp&N{C8wjHbY?K洛l@ʵ,RRJ"N ^?@Sb ױgkVTqH9 ^˘ ɷ4d)e"H+ߘU>!RJI0"ڵk'#!c"'UVrr*oK= ;!QpɤH8i'["r%Q4٨6!#L-l ԚHGJ% #$q#Q`I]&X7zN'g]a"&|`Ac@9*Ċ]CVS ppL<ʘ Rɖ\{It(aS-piP]&RQ [cRFqrlH3{)0))ۏir5暙U*MZabV2-2"&R2KZ֕t01trd}8S3'2$-HBqee]!o >|ZBfVvT dMJBOP }M}+R^"fEļ0f*?h *N Ye$ʔ IH)z\3+OJ RRr6"Rr0U1(}hfL:YpeZш/K԰QR ~.i ^%^l>^0.SAU4U =ʖR)g/M;uAmBrUHdUbK)c1þ^9+5sfMr>2U H\H$oP&T\#|^1 5esIK=ʏR"Krj jJ.S`2RǪ+"'r`H)s|kRIBJK`IU(e̹/^ s_oIsa=b 89.od<(I8;3+2dB@&8K!_*nm%e~ʪH!{(`ߋ2QL!ُ(0!`)5R<)%YYH >cm'gd]y#װɷ܋k4+2dsaJADBL`$ .Q6֓&d h3v𓏴>_$d/ HAJnkIg5Lr~Iܕ7rzGfC*IdS&:Wt)*xZgf|(rS~TJ6{Q$hB!94ܓ$&ʓRr낄r RJnݒz*["Ɖ]rCR D 㵗U}8 LR uJVkZDR&򯊒$RyRJ_ Rꇊe iVԧI-T?u@EVnfY: IdKRM:y)T2I3;H!ՂL[SM"'M9{ R ș ߹/OhM7Ter_^W>A= 8czȹ@JDj/'@mI[K(Zʨt7{DMdUJ2>8wLTL Ҥ1җRr_2P,ERdR9TK_"*&|ܵL3CKPٔ?uGU86pHPWCUܼ^$OyR*)R/rB{9R&zpݘ.ad ބCHS80Oʙc*㌌!e)`V%|u$5)%T=@Պ*@oW9: \f93eWͶR,3YձsERɖHZ )׹LO%|#+S$4|]+I+N3ah*i;ޘǼ}yMLߤou&3\r& Uj6R5GY{gsƱdKdHrcLX{ʹ#"f֊³f".%Lj;ؚ"9*~R |`sH&ft)䁾5ΖlI)_g)"iW;IY))d@ +9e\P*pM*[R$r/U rRr9b(iȓ{W 7/RR ZŖ=aBڷiGRn$^ ۞rAkמqZ%Y"f/SR*E!YQ-Y2+En1e)V͛"7TWN錠#kåNfq"CeY=uU= 2.|K$Ir!']sڊ0 I,3:ʲ.j}[*C:*>N|^+2渉fLs w RA.r p^x/kC8M9Xq2t\DgLd(AGǑ>l QiAeB*Q%HrY6%bphA.${f]r+ !$ceRuBK!MLߩLi*ЙFgP @?5?!*tpEy@\ D!8_*cWR%rIޣSDRF6rdI{3f0R BnIg%&|eɂ<a*ЛſU/NjRSR$Gy7ME̹|'/5a` zɾZO(HrF|׾UHT)SF]YvzEE1poj)Ԉ\y[kC)Erz }E3UPJ_0Jvl;:Ȫvnl9R"!$"0GC"dJMe RbVUc*0X"$ٲ_Y( 62sVl-۸Rh#XR0Vm6AY*%ke^Yfy%$6缾I''!B!J)B!BIJ)B!BIJ)B!BIJ)B!BIJ)B!BIJ)B!BIJ)B!BIJ)B!BIJ)B!BIJ)B!BIJ)B!BIJ)B!BIJ)B!BIJ)B!BIJ)B!BIJ)B!BIJ)B!BIJ)B!zB!,sDͅd=t!BH  $l.$G!Bmt!`s!@=@!hE zB!,F.@H\Hc@B!d1pB"B2{:B!$ц@6#B!Y6\:  Bb"Dͅd=t!BH  $l.$G!Bmt!`s!@=@!hE zB!,F.@H\Hc@B!d1pB"B2{:B!$ц@6#B!Y6\:  Bb"Dͅd=t!BH  $l.$G!Bmt!`s!@=@!hE zB!,F.@H\Hc@B!d1pB"B2{:B!$ц@6#B!Y6\:  Bb"Dͅd=t!BH  $l.$G!Bmt!`s!@=@!hE zB!,F.@H\Hc@B!d1pB"B2{:B!$ц@6#B!Y6\:  Bb"Dͅd=t!BH  $l.$G!Bmt!`s!@=@!hE zB!,F.@H\Hc@B!d1pB"B2{:B!$ц@6#B!Y6\:  Bb"Dͅd=t!BH  $l.$G!Bmt!`s!@=@!hE zB!,F.@H\Hc@B!d1pB"B2{:BIĺ`!$"Dͅd=t!T ֯6й}7kF \|oԒˋo?89"Dͅd=t!T9QvA RJ+n0!)  $l.$G!jaºm9d7m5EI5E26\:  eNO M97EG"Y)RǮ6\:  *d]\o~eزԕ QM "$Y"Dͅd=t!T!ǮQ6ܲ!ڗdK+j|훈Ūm*6\:  $I~X_U# #Vl*X}+bTs[6~xl[vk/Y7r5Ldm B6C=dRM8#2cNs!5 ҬEYȏ1_F JCf/'Q)$lH! Jτ$ 2Eo{c.SYÏop"TĶGH8pB"B2{:h4\ʘr;O>DjH6{)׃BV~B)lCf/mH/U"CiBo2І@6#$"5ε('( [09}w|2٧|~(^ڦ*>:Eߕo:v9F7Bֹ`,NglMV %[X?(E $=QȈultJH!M7( P0mt!`s!@=@H(Sm|R*eJ[6NjTHx–/V۾n+1JT9XJ-l*X/s.3,*FCMpD40˱_BqEV %[)KH6{)=lC LȤIU|C d*hd@3) ڗTц@6#"_̀Q̾p!˜-2*]TF,2jP䌄*DzG0Fg$[ytRԲl=,RhH mHI%GVEnNC DFG.@H\Hc@\zܗF{oL恽1gxitD1ge45r2Ҿ#N{#mtjKaT[{10moJVe/zHNHRhH mHI"Spa:mϬ Q0yFjڋTц@6#SOCEy.5dۘit*`|9+V ʁ S4aʑ6z0eΝ7H!PR*^m!_ )%K : tڞ 8,"$U"Dͅd=t!">Z̉o'bӀSO+OJ!A0Fa> "Rr]V|tRԲB=H"JH6{HdRe R)tCréM1)^6\:  $i}Coh2/QTT\YÏԔ|_E.GQB,==` .^e/zDR5$lґR6˄Lh A:mO)DIBRF.@H\Hc@z>iJeVJIsܜK\Zpګ$AnqRZRID)L $^ )2CJPtTyW*=FB.@H\Hc@V8/"T^քC$V?Ȅs{τjrRra$,Z(RU~W?ߍ\)5T5w<öAnD&hP4e@nr*!5 !NJF-j|_NABR O!drK!ɔ^BT E$}ALwFdц@6#$|kICDV欌`D݀e[N }@9Ivlh;URE K ѥH!drK!ɔ^"@ 0g2&56BRF.@H\Hc@krr [Z$]iYoIV[{|c@a3)[dr=(R6$lRn{ ن$Sv{MvCrۓՎbjhͱɾE/pB"B2{:hU|0=}հ[6Hq{0葈D8V)`|-mSX,;q.}D 1"cf9i@IMPHA8\OutH ѳ~=${x^mOSXxCȧ-gِR*R -g%$q =qABц@6#2wX$@Fݥ}yfZ3|%$="Dͅd=t! %@*8НFsY/5w8!$e"Dͅd=t! %@*kkC=2MZHH hE zBr$!`DwK)E* )^?TD×h6\:  $"QS!ɴ^(RhE zBrJ)J)R@ЀH%  $l.$G!DD֜GJB.@H\Hc@B!d1pB"B2{:B!$ц@6#B!Y6\:  Bb"Dͅd=t!BH  $l.$G!Bmt!`s!@=@!hE zB!,F.@H\Hc@B!d1pB"B2{:B!$ц@6#B!Y6\:  Bb"Dͅd=t!BH  $l.$G#GJmxt'ц@6#dɓ'k 0rH d"Dͅd=t!BH  $l.$G!Bmt!`s!I3A= B!T(hE`B(H[6!`B!j"aÆ`B(H%28DL!RM`pIpJB!YBR6 H8R$z))B!d I0"PJPSRB*"0" ")HgA{>6mڤ!$;hpJ$RN‡:4%I]#o9-:CTCjd~)m۶=zċSF,M4 /Tޮ(6̥7kn֬Y:F]MrYgIb[5CLBSR$ R$u>2M ~)%bP ,vm*$5Yr@M:UF} 5k$a8%E@)E"Nۑd7Gٔ 4f4زe˱ F2_Jr-n +K1~*U+WB`䮜0WE3e}ʾtR4u)տ^xAᓖ`P…SR$"R$-BpJT%\fToФI ?~ef.{GEJEc|AU6F.~be%cUGTY*) YO}} f%$!SR$"R$]`GPF$!jb2#I wl U-jf6${ՠ;&d Z͔WJyݧfVʷ}t/$"ѡ"PSR1沙P2&0CԼ2Pc+33ݜ?剪uF%Tn2K85äVEjUb*;T4iPBv[|mNIPJ E?q҂$D!e]qސ S=0剪ssvċ[vP$eGuw0MB6iB> NI"z))R2?Pj 7̕R24rAfF.rlP>5hV3j$$X6 HRPJ̀|$D"e#Ȗq2%qVJZUPv1oHɲXh)jV4̓: 0>n)),R$3:"Ղ4) #|T +edes\8|:uR?T*r2M{ O1M"vm*R=(BB06 HPJRX? XKwYX-LuJEDET< E.va+|%4ye7 foZ!8%ERRd8!UK,c+x 4۾!뮻N]ve%%%)m_/j8{#\*5FCT•ڵkpUd4$) NI"B!"B!"B!"B!"B!"B!"B!"$+af-!BHB)EH~욂:cV}2B!T>&}V@)kE(MѾYnh\AS-7CMK( QS2!u0OӾYi[vY-7Cl) QuF WSʌ)kQ SSRR5RR a iG5E!ykоYlwKk<ҴӾBӑf tJ$DMIk)J)JEnIM륎B!Bac"íB,^x2!dLw~ TM"礔88H#Y &)J)JEJ/B'U -gǖR!;vСC[Bv;? R&!M;8!2.pլjsZ3vRJQJ(*UJYsrV:]!Zq j鳖۠=ITMRtdVP`հ8W2RR5 ٱYJYw/X;b-1* V:'J+s4S[kZ@)j|ieRJQ:!㑵S:N &lK)( Θh@L((%?G@0:%ܘơ*P!:yՂ\Jz:47In2--,Bn%i /RJ)*UޞpKM8uUQpHpŭs"Ie`Y88;}pT ˆ-!͘eCJa8A6#08XQ*ͷ-JYJȉHye=.5JJXƅH)\= MVΫԲ",l'RRCrǗvĊpݨN@j]JAրoV}eOyCs>:-,Bn:c묇}RJb .\q?)LG lK)w؈ !RJRo!aCsd8y)K)id$jAu()k2ʑ%DJI~b=V^$#@6}D* )n*㯂AJ)0G~PCy-O8iS aʗ)JAfߵo"dptn2!!Nvn+"pOf|-lߛp [m˒uFz `3d|kwjV V8J~T$eHYJɪ}05GJ-Xv?*䅽gXUh%FA ZueSF 2wz:lJ)tZE+"%~'5Xj٥ ϲ!2?TkC+ҿ^y.S Lh ;Հw"wu\bfM ν-Z_;Ue;HJYF4A2}X8UKT6TD+>bbQ^zRaHǮ<ҵB12o" )mT4r"ܖ}e[)K`fii_Eڷt-2lgș’RFprD0C!x¹ ԔYDx=#e!υ7.M ԌI N\UM<裞}˗/^"wU&$ 7; Ab-rҌƽu=TN(oKcY]+m[|P-)H ㉓5)ʒX,KE0dL ˌ 7_/IjRJ"37%6 mnQC: $RJYH3ۦP5cdےR`2pUYt]ȌM@3.J)k$jI1zúaVxJzY&x%u m @[X(j׮SOirfΜYn][nѾɐA)oj*$B^sαoΝ\裏֏I ~p@EjͣIxq-^kzn`;+?,};2$t@9n E϶+`Ksb}!Oar+e'LLT2f}e'R(".oҿ^Ԥ|$4<:&)84 k)eI]م| \(i9kƅtmI)l W'(ch)%;!jOyԹ|gҔȓR*e&&kP0C84k @+xdhjbFTqqQL8ʰrBHADRK䢔 />) 2g"ʵF"k>s( @ǝHDRm%bwUѢ}㤓mu,H,Һ0RDځFJ)K&Z,Zcf˛4EjRJ*sGԖuxQC4| d5emך<⬆N> ]PKi˺.]kB1ÐRp"b<4lZ%xma'  t@yCĩF)DN?{R+S2#-QX/oTHkZ2|jw[C·\$ҾYŢ8O'ۖ\RI%Rګua_)eG ( `q[֕e˛4EjRJA 7UzS.j:;ll:(ΚH'۲@ecuu4I_Jn[ yQ\SH"XR*e!RuIIVk! ma`ԋ+c 2k?*2d 8pߏ/Ha*{?pO$TRK(ؚfĆJ)CSX*d"ZBȗ,YB)UXzRґR uWM'!wd2"M)eUfHѬH@i^/s!gLL͖C)e-JaBqЕb];Ed14X|_7LT2|a^!߆n璵53lVjfDQ/L4-0-$ U-Rg0Fu"JR*c&'j"2}-:/-Zuf3/EP$xCwVU7Ȥn H)!)}dtm-r\+ǂ0 JFJYf[\cr e~ O? ҎJ?ꢆHtBqun0E:ٖ}@ikW}R/aHyȾr)Ok=X e!4_iXqۉ{%h +^ԣzc)J[Y* ?`;y'D U৒RF _ݜ?XJRH=sKB􃺸 SWjH:Qըj@~.t=_I25+;&Mt[6ȅpLR e4pAO0JV֕JsV*e~ s"+" AbZI'ۮ%mDdS })e Cq}-0'C b4,oE.qL3Țh +^w%{\]Yr)`nRiJ[bWRD}=s+޲3|r+}FGwkф-!H)i3$uRE:Z #tyKI+)emAe۠z&}IzY&!}S$Wj!RJEg1)%{ I'ۮHPnY/3,*FO_hBeٖqJ4,oEr̍E[Xʤ{On˕R24WPQF}=sY|oqRqrEMEnUifBRQqsW8t<;٥ dەRR\oBi43/ HcLX RLrҼ^I)>(MzI{9G RZ9}45/3ӑR3 Uŷm_)G&}#YWfl9&3/gͼօhւi9:J(y 2Q9WJ$6‰< \VRQ02fH01PWJPR*}Ukf> k8nWNvrݪP>TW~ZT#5`6BHaDR@dpH?M`!+)r{pPA HȢVp:$5)AF6]ԌAjBu[f=HGJ#(9\vECٖ}@ `SLi}$+ʌM2'd%Y*k 0hn9b~"H:9 VhP_8H@\.q6-,ؚ2N  U3Q&K.n:p>خ];zquEtDu)Z$*Jj~3N9n=0`FV{oGi_5pEw g]r$2F%[yHA{%),=2AqPo"e5meg;OEkG5a$! #N P| }s#YDv!+hU5R˶ot6AOȃLS&);: jFPJ!AaDc*DμaXԾI"k* R/FH؊~ZXRLh}/R,VF,:)WTQ)ndlWB$EUԽ 5T`'{~P+-Iy8(oA&l[w-_Vai#KRZ\P KU4!TFЇ R^8)Ra9:!j6 tƕ] Q i"%8ׅ""[ 4@&AYWʜz2֏]"iQȀŔ9 S^R"L?$.Ǡj R/>U8ÇW |)\uU*h| b_K.1AU);)!#X2hNIi" hifk* ~)[vDyhݛSj_AnAԲ"U(2ejgDJm5;:X8okC1aPʠ^\ߔzHYe 5MJ)mX5l>6yXظH ج 3R9ߦO!fEAhipG ^arFFP.abRu (OYo8P .4TՅq?C:7D(16+nJ's.0^n};"+9 ^L#AP!d7@wܛu%60(pǔpI RdmY# Rp@Fm7d:L PJ(@ +R e01aDQrw\Nj"$i Bu@MG[XwWm5vzBLm X } ]3| N4T`qِR\7rUgJC} .#R 1 jxɉǝ8wdqaEk(6, VQQWnC_!*<  #dH UlRze= |uE ݞi@BrJ)BE:,ʩ>ɫh =!$+RqwF1H~XY15c,J +<ɺ$6 *_օȾ&j0"nOVe~ ̘4_N(v/~ܥ2RH,5AzUNGªyh =!Q[Uvf$z QSs9(v/(G!Bh5maBvt'"ryXH5$hfPJ^PJe'PS&$YkQ@[X TT@ڱeԼRdQj"nOHE/;Y:$aY{Fͻ R@[X !$""nO! !$7!d7@w{Bn(!B!$i(!B!$i(!B!$irUJM4kݴiM!B!UHIm۶vmw^:g]ԩSoGYW.okO!ꄏ 1䘔Zti^^^: @ZKEr! :T{V*#F!p8$HȔH-UloٲcݻM!$)YuK%rk<%Bj |>&9GnH)5epnWu 㔌 ҥK:k.d>QF*2.,$x ^xfp1Y~mݦbhVS7| RV9:B! l&2k'|SF}=߯S#F?묳 *g84iR^^*F!Yd;0W0QXEE"a*!q08T]J"ϤBt:Duc|ςn:AoJ07 7sep'jP a)L &*pŠnnOTFID &:tPiL"9*@j[5`!T3a5`>&5R*;^ӭnGC7A?(8%j;VI3fNKkƓ$ylәs"dlQ?FFV?Hx1 q40f-V~Vj$nʨ6 յ1!ȉo`BR#G}] qet ro-n6#W#FKJ\;JQX$$@#GmРڰTZ4T")&VOmuj+o77(w-3GbU]{qZAY\Ud|%jZff[ 'ӘrZwd[৺ӟ~RI]?j8)deYA7WDwW !Y Z/3ʛoZ|O/ץE]vz#<T=-)%j A֯__,; ߚf|N?0tX$Ml( yA Q B*Rņ8%niލ‡Τ*B& olj0K_*_ CрўUK8eXPŒH,X'ŤnѦRGՆ5!Bz0n,*5YcWU:$(qjcF>XcKP WǺqKF[] q 3UR5&,+B}E) ʍJ0͞_G ! z(:ڹy:&M4]@=QV U৺f&J-1=H~Ɵ4&nTYXW%lGbfrT*7(wq|[ڊJjQ lCBl*I#-J/if?h\R4*lF)ep%u(LkJx?2 YN5$3&Y_ !Y?ڰ摒j-5JӌQ&<OdLRvy"%5L\(W_V5yR8ADDu7r+C_60]͌:d=ђj$X"[TF!n|'(a.( 1NWXsKH+>Cpw8֫,n2T7IGJPRRTESQE6CǷ.f w9g>  q"V# Œ|lV6!1ɪ9RIdT=a*TWuY . sosBV(%oDMGPn膺R*ar;#PA w}1wCLyUL_r(hKa]7$~[WAX>oy*|K)_L]a <a` ''fK2}TWșw8J5+]LF_Y^ڕT F/xڤ˴"ݛir00 RK;vk \FJ/Xk`>q9-A*5N:or0ZTjx1(.=H \FJ@eRPTF*J@e]M^R?~\[[> ӯlmmDGOKZ$/XAr~mmMsrRDg4/;ʧ׮]HqF8mu@V)/⧁ nrp?p9RL3g:O?L73qcyr9Xq9ծT*u* ^Gw1`d&9A3eiWu:E煿(dtŕL\Dlg:DW6|3ϧME蜹l)tQ?-J8 Bۮ!hy^ia@yfXDrGN d^^Q3c}4CYsx\NUsț>]Nyj0tUAW}Һ;wHӜP+,N!/pDGW "Kt4V]nhX֫8WI׫`DiAyd@K Ru#O;-# zT^DSE3T5׏>u*ՄZadNyZ "`{T]nDhAD)[Q5*ieBΪ -m4 \㩨 fVt Hj${霋)& 5pJܩxvyY,ȯr厜>keK1+8n4ߊh==ɹUq9rGIo:\įW^ETtM xZP*N#mL1V8JFf8(L!l|\ U]WvV-]%v+& zu<GL|]<Y>,ȯr厜^< Qf`F.O7No6Rۓ@`P42lEӏ ǏoG.^+Ϭ{f,yFdVrhpB{8#)3\Ly9ΟshSD,f\()GZMUkkkR~xN߶+^0_FFTq ̘͔HrΟM+d^PcHe/B\n _|sν|xdz?AvV-sM3s@kX0sNy)Xf4|*HZBb9`nH`Լ("3Q83Jy`T<}tii)~}¸.HCo.Cd))ɓ'[Ex1(R%Kf[qx1s(R)8vvv.{Lq9C*ӧ߿otoJ#T&IO;lwօ dE_nPåp~ec;`aaAWdwwPׯk!Ο?oc;7+ R)@_wrTG{kwTj{{իL~666lN>ݏw{ǏRÇO8cpBܸqWdM=џ ^Qe΁=~ٱYXXh x4G'[$Dq9荎RrBm]=j۠5O^ԓ{9{~3c /Fi}`t)Ҟk#54˪JM:IF6umT4R:8ѣGp$$o5XAC8&x1:&3~^rp{t&j0#˳gϤymnnci$^#4{=&;zICw6L+hׯmYlR! vc6hdS H6xqdsɻu.-occ̙3zƕi.^]qNs+3+my߿S>~؊7oD3|rfO6dA4/B2˗/mJn`ڵk+++K22}1Vx/Hi)vs\__"h]ֺy 4L3odYe$xJJTU6uWMe`an]$s J 3ݼy>Vαzlv%4ZBY슯f$ob-̋2UUR/3} ū2ӯuAʛϋk>?uWJwܑ7]UDǒYM_f2 G#S̬͢ylV"fEު̽ [u;t-K"MWpyM6; a+$9p9XOeΕ ݰUCIgFق՜7Kai0Um.jaU(_f~QuVRgW|ee%efUf*zU?sT^D3uUZkuuu0yDaXA {{{6rdϟ?/a>"m<\gӣ~>2٘2*ڰUHwM޲I)j]*%t D-,mpehˎ:Ug%"M$/Wʧ:Ƨ Ej*s/hV]/ei{Ӊirxe!\"G#wrl#ޥKxq5&.'Йpr9؋O -,yœkc*v6֧je2?UuV.zI^^ZƧ8NyCUKgI*?~۞:ueswQV܇$ݲ2`,eSD'JQf&\VyݹhV]/ei{ӉL۷'Tq!82lelٕf7șDt5;t_5Ur/4^LkyyYW~)@ JL$mRp*NF d~ꬸ)'4\nR5ͥ-LQ+&(!3;gh3\Ob[D_'k'Ywӏ\5VYr;!]V@<\Z7 Q6w %}ݻV"o3r]z/4^R\.6TqY.xkf*U JJn^=LLd>#3L&ӤǹL/Ȣoa&ɃZvBoy:^jӟ4L_fdV^ vC2hˋ@WHKzJ6rXDtTC֎PJefB[Xf-^zBt94#ǂ2.e&dF'i0Ȝ͛7kkkgΜDUbooO%V.9U vȜCך++ʕ+V(cL~5kB!.p9Xq9x&H?9)zhBl4jj+@Gq90Y70λt˕+W2?iyS6w hrHRmt/FoHcchkkeswQ޽-..Z=.D*L ϭQ6w ` o\.sSNY1^,cM@p9$R)@YScswiSR)@)f-M_!2+hIR)@)&[cM/eT PeC.]+hڣGlCW\2 u5޾z*Ss}6_neM8Vд-[oԽTǏkkkf׮];s挝K'N|W|X_IDŽNzFXfmoܸK3yǡwZYl4綀gZ0\zc`0h6zd5?''ɕV%z˳gd>1\N]$gHHB9Fi2{xLSW]/_%Tl`0pႏZ+T֭[itˏIqV0 &`.bq9XV_`OS)M* xj xf"d4g=]tLtgYîi%&>ieD޺Mfڪt j`Ҧz[c0i`p9vRpN6eiQ#dxiF1,:eIT\y- [Fgn*MbLYP4嗆2+isEOҢv],I?yr=jA\FТTJHkfE%Iâ0f#hJWC?qf|eFV^LJE1HdZd.N?[Г'OEKe8V0OKree@i\?D9r0z]wQqiēhY^9@ ke㩯L^\4@-S"{"#s?#9K.Y2+)zI΃\?WC?1KH8E?D{(KrTJE"}8LF+@i KT L70 q @ɑ{QdDz-ñ ٱe +Ip98oQW&3HZOKa.!MJ;2hQTcG>^2 *HEv O:㲳ae`p`lCKKKVTgCkF\"\F?1 G2ȋ"iK1yWG0Dt6,(i j)km Ξ=+772+ [#ʀ*d' ҉ҳpIe:?#sHqǫFNjS.6Rɍ4!12ICLDcy_pL̜Cf9 B%*_Um(7 &#]+rpq$L`CKS)x1 VVV ~͛7kkkёU!ӨHcJ#h .ZVFr."E/^H^,:Hp(J(9wQ-,,Xdb+b iAGV&Rf\o*%_˗׮]"9,/)MH._k~.j#4CeB%2^a߶?iͺiD|= RGtHROɰ8V0ׯ_ Rh39s98:p92שXˡ,//1\pURy4/9F#KhIe _|Axۓubq9YS/!et%]َq @{ O(Ͳ8V0OK>t^,"diˋ:͛r {[[cٳg h1.s9E* ?<^ tݔ߄.l1LCr0F"yWtӧ?Ѕ-Ʊ8޽2(T y) ]b+eއr0 Dx15ijLM–XĤC -.$R)@ ]ؒ+އ@q9JlllXn14+$ &&}ꪕT PdoB$ &"pC~%9V01 ,R"П?necKr`laCPիWy?LZ`LM–X$CBR?~\[[kd}'OO~rܹrƍm0MC1^Q0#Ч؛-̱IJe}.ѱTj04GI޲!ʊ$N_%ɲN8cY&Hi͟={5>9)d oB0 &)}:q͒>R*GlyD٨ӧO%$?~%lŋVHMyE-̱IbNp9ΤRQH3H1MC&57 [c19\zfvƍ%̋1)PYdAzJhdLjgΜ sxbt[G`2V8阰 ]n^UѢu$]c:&dyy&̖X]rŖ7tu+*ʼY@ (c?EQRFt= +ʌM#ҨD&gM4@UOBLv< &,}`02.7ub.suWJh$ܹ#ǏC(3(d,,"/6wUf |2 /+ݻw`VP&QŻM-ϱ ݵ M'urrp4K9E?*N$ƓHA2Y$EQƧF:+BŢ|߿vLB<PҩS4;;;V6a< &LN'4}\Yq9׺TJHԔaKdXɏ Q^X?I=(Իw"12Ҋ'̖X>}9T={k7\r0@SpURIINVz|ّQjz`nW{)+<[cw%[t~ m6%Uq9``ژJ۷oO"%/H$/5 iv$JDR,9qAA҅lLlW]Yi6\TGhRS /_;n*/o t>:NhПHBV#5ݻV6yH &ȡ%+JrpgM`yyYrb9׸=g mi ȼ̓(/<4S)li%峺v2F3ޓ'OllLS[spp`@ Hz܃tu* z{FIAMɬ}]+J B]7 :{CV6-` Z1۱ "${{{V<-` hiiɖ=ě'۱ "$IsBز+Sq-S`c@ ]m.W^!D;$)e;V0E߷e% v({Ǐkkk}yTKJ}"قC3y -۱)J_ ץP[o :\4O*R@od~QJ2 +"[cӵhR-dǶc@ ]j.~ɓ' @mC*FK(%lL_BNvl;VЙBZR@oRXtu)4nLkٱXPB7O>۷6 A*FK(%lL_B#ȣ̎m :\48qŋ6 mB*C{(%lL_BM\n9;+Jh{sS~*͚[T ̬(%L]uYݩCq9v(]ӧqVVVǏKiӳzXeJ~/hjXԵj[ z\{VТ"ӃÇb5p`Zumڳ5Mĝ;w$$677 D*CY}QJX +VmKg@ k.nu7G*@X%+VݯCq9tyV"_R)oB{~n -.XPBF2_R)/V fagg*1ץ˳6۷oT @$cЪ_Bq9s(a~AxNPuǎd h.T 註wA;ti+5cvu @ّXPuJ5 jKBZ:f3\fGc@ 4E*tѻwuvwwx֬BihkktƎ%\PE=#vHe+kc-2]cc@ 4E*tх r劕ɱܴ: -..Zر ":paaء+nc-ݻo=1XPuJ;\[cpy͛7 @1XPuJ~guuXA;lllXZM31XPuJdУGZD9g` h.T ϟ۱:;+ncqYݻw @wXPuJݒ>7 5flg.ر ":0ٍ +n cg5s?n:Ž^ h.T 75rӧrCm.eXPuJ[XYX+hwZNy#XPuJ]qpp`GimbsM:=Cױ "CwQ~LWcc@ 4E*tEcse3yu(悺HNݵCi~L߿oZώ[ h.T ׯ!:$UѱIVu(悺HNXZZCth}}ǪXAX=+nv:V@sA]R@=yĎO͇UѱVJ͛7 @AXPuJj`0VZ:VJVˡ%+nv:V@sA]R@˽{naaϡGYq+Y-+h% zVKɓ'V u(悺HذsH2+ɯٳgCVu(悺H vpou2v1ώX h.T h>{fu%ac@ 4E*YG߈`uu:nW h.T h{X8@رXPuJek-fuuA~h%;V+J.R)Ο?oӧݬ$NV!Ixfv:V@sA]R@;1tEV] MUذbcc@ 4E*SX+h .Xr'Ov:V@sA]R@ Iʔ/PVc Z/;;;V e(u(悺HCYXqY+ӧO[.\`eZƎR h.T hҎtAX`QXPuJmn=cfv 2@;!XPuJmwVo :"}"oEZQ h.T h];νXAGdV 5t(悺HVI__;V@XPuJyK7CtGoovp:V@sA]R@{_tJE~h;8+J.R)%$e͋tJeh;2+J.R)%zsKJ 8V5ܘZΎL h.T h[RV5tƆÍ)=t(悺H6HoI]+[ piiaS@{aXPuJ3yK… VAtmnL-aǤc@ 4E*\nI [ :S@1XPuJտ[RVñnZv@:V@sA]Rlp1%\P0C%%lM+,nLdGc@ 4E*Е+Ws~KJؚ8VYy7dM`ht(悺HYɎ:G++2[ lssVƹ;+J.R)`VΟ?oGwcwi[wY1Cѱ "fbkk9Vq>t\Ev:V@sA5r~ٳVvduu> 9~ܒJtDH[K/qX B5TMqӱfXAe~í/]:n E*kx?Ьw:uOǚcjkཋ@'ЍAHPY+:\r`Zq/Z9V &;+0Itc R)|<p[1 "3L4T (yEnиφي9VOi!@эASH0Wt4ncc0ousGgo-D7 ˜F^ZЬE;zVϱ~ɼ+01tcR)r]t0'{[= %oO` Ơ>R)rfH?{б|1T d^Z,9N:e_"5twdJ̴ZXXg)HPK|VGQf 1?` Ơ&R)]ZЬ'Oȁ;l=+z:7o޴bC7uJrI>%677mt^~`<ܦ0tcPp-h\ޥKlU+G٪:N"F7c#B #}ֱ^|ʕ+V `2`lRhӧ4 Ѿlm+9 эxHЌ-  ֏vc}w+R,ЍxHMY__N3WoǶuv`d^Rk+0tc0R)h>; s27[m @k%)@*-my{V۱N 4B*- .Xܰ5w`nd>ɗUH-\b]fԩS󈭼c$3>}4 VuyT`X<{sR@;J=yĺym+3y_yMR)E#;|6cݻ {MR)SNY9}~E*X\^E*3#ɒL5v^~m%̥WP,..D#&<+ɺ3^9Ϻ`H`$:uڲm 昤Lߩ@prX]]qw޵)m ‚mgοY --ʕ+6ܳ-X{m? S */Z]])@*U(ל7 '/N0<.mxLdJ.\qgϞ%ئqCyidS6`89l8V'/9 0`$S(A6cp R%~&Ltg3YUGmXl*IM0`R#+@LXeS6iL7_uE;yH+@v"`EUIDATp#_89af~k?6 }݅f9JN mtM|+@ljyyyooϦ}tQ~|sE^.9O٠azLZrom(W= 4dɓ%&kӡm/ PR]GiL6䗗y4Dg6 m"&H Ҥ)RH_F[/ m:OdU^< +L&CG+WX5!٭-Vs$_R|1،=$^.޿ZqmLlT,R$flCHz(6`e RuXYG<|yyٺSNfJl9V$Y:}mGlRL ToC،}u3"+fe(xrT,PegRe^ǰdzgO& lRt,aw2I Il8̵t[WWWٳʶc(pd$Rr}`l~ſyK ]>_|awK%=O+%yWxI4e~T^veۉV޽h,7oe}cXꔺ~:/RɦHFwcA㰻eD F>k'Rc"䇃Kw[\(f mVV>[[[O􉥥 cX*;{m,'oT E^r&WU_{+pZqr9KoƻцTJvw_]V՗'oaT;TF|}_沣Yk'ѝ%@ѣ$J\tuvtcymP<]<^*5ޢېJ9zp]iZkc+jTy}ңYs׍{U-?&#֎^Aj''6 #Lgt MdJ RI /.s(o\?B&E6iٿ^GML?kc'72t K%ae/ӼXk>,]Ӷ-.K!{S3Ź5oy4^f>iqMz}-$/:d2^*i%jQ\eFdˇUAjk- IԩSC˶cWQzP/X^lC|!E- q; }SY %Xkf*e%L-*m.cl"K+g2Ϟ,ɚN?=Ɏ\} ,TSyx5oyKC&~NB\Tْ(*<:da# dj''d|ȐAV,ZiQT%, %$`F> %a(^wj++[/#Ai(yt5Z], = aY Q괓1jTm#oidnz˖lWCBM8a Qޕ+W ^0͓u5vXXXtR'O Z2HȒ0+=H?Rt}J eyװd#t}W/Pp+qg:\*׼tڟ%e钰eDF^\"RWFw62YCuz&"+UН!o?:ZF*a&2D}S A#R2A'3?YMqقՎ_r沚7iA7W٪}cNt>sDj"@!:1Fi·Af*%$$鉶CD+HC LFK` }fu|dp)IܰC^la ;%=Q },) >s\qA"M/.O'[V^kC[I |6Nx5߼ETJikYRd32SF߱؊d#J {7% ߄?eV ISt|tX$' LGZ 2{ؒ7 dTHH.g.)MPj( FKZ$ )i߯Wǂ@ۧ Uk'joJ]&f)Y gT(-Ry2IeVh9:Ld(.W:vG> Hwmm\ АϟL _tissmB)QGx$xJP"}L;i! DQWO$X$B9g9 &u%GY>Mk?HUO;$g:kwg | >e}Hv"ƫy-t\e֖Ave4h 9>v,O|V6vtHSFh&y2vTJE#e\֣FҿQWB.'D+8Ie5(= ߚe}>#jut -8>3$Sr#>\1j^y+ y1Y)x_KEQS4%ZِTONͶ'r;d; ّDh}}}uuEg)_Sbر4JJϟCF>}SEPbT)^'$2H8&DleD4Fu|=Ӝ}RiqlaUgG<>eNx5ټT(ci^F<] |xH92dۨbc|'/!'0MSLMJgJ\;~ʐv|bv = n|ai'x5ӼK{Dgc 6v(J FjJocǕ?v X7l_,NX良0ᗘnzG]agJSmv Ţ^s3'w­Tt@uI0Fk6> _t?}N $—-dݭ`,~wP[wZel۾(c+{nccîKlFSC:KC|NJבQ_`/](#s^^ ygʜN5ٟYq=Ppֈ//Nj^y$K#Ef[/"}]쾏ZlUl M'q\6!kI7KU~nqwD֪T25YFJ# ;SUь:y( Rfc&oAJl(ZVRy@zuI0Fk6o%" RO9.}N=+{ FiaJNW~noٱ`0yݻw߆j =`^~-%e'gաT*Lxa :2l散?qK<6s(2A !e~GkUӽ i'x5ӼI9H?MH֐^z~nZܩmo L0F^vQ[Hwǿ`T6 &i(/{{+_>\*%6_OT_U > j*}%CNtY=ʔ^Rt3hWw$_tY L bԚkQͫN1j^y ?T*kN-]O7ut2 3' LJzU{āD2v2}$%cBV6 ' ljUsg䪢eTTvƫy-tr}hhgXgQ i2EsHVlE]S"SM2H:m2]rItַ6ҾW-vD@^#Sg"Tнoː^~JMllu#Hvƨy-U@ʢCT}B3' d1{W&я(l< =6lO6J_3zÇ> QD(gaJk>VAK Q7OB%TMT͵{֟{B{Sj^y WJs "CT}-FN ? ~}eT2:7utDwe?ZAumGxکsI&AODMYOה](;R>"xEFa}oP^kcnN5߼Eؘ:/Y*,=+fN xR/]$}4 EΕ$tOx6x4 ٟBˋ#}7TdMh9җJoȠ5:Y= hW,>&}Z=+ӽ #OvƫҼE}ٿM:#Ѿ D] ioN;d0؊%v*%rp]=Y %_ Cz!:c<)d{`qc-VxN5oyGOߡQ|Qf ͜@oeti'rZA>bXXe*5%hkxHz/(#dўT*oMZZ3rUt/CSj^y]oοDuFN =?9q|!m'^Tc}As4c3TJH,ص_.BK Mzyde<|Ch!Z:F$Yo:Z 7beDQw^ku_Ȍ*uf kBahLAn'^t~lO_O6b_SPBi4|'2D0nY3ɢ?__gg5Z g*Nƫy#[6ut0 { K*k댜 )ꠃ=lk'QG૝&kU[ґ$6vHFoJcO,hJVI"2^Rr<42+ˬ҃ؤG$l9[tI% ǀl_Zgeӣ!G絟1T/lg_i:_JT13e6`.dw˦gA Iҹ$?({m95Ul,O6x, ٟ2LKl"uunGYx2$Tْ''p^ά^J*td4hl ]$rJ k-gXJgv2^͛j޲%3 99mQvcc r$ƅʐy ' NJX$x@Nߟ NNmG*.⌼$f[7tOR)t^ɸ>v7NNmG*>FQ?wυ OR)tT~?W&' ƭ:#Rý_30TMIkoG~fc{SuǭIQH~8[Zeo/y&?"$Bw}})^ H{IO_u~'+h+CɊ.NND*l8A*9OϦ )NNH*upɠt["IioG&H%'Üɱ㪟JI}t@h42A*9`J@L ɱjhO :?9V@kprOcc''@XX :?9V@kprO<9moo_zÇ7S,r$@ǵ>l1K漹idy왜k׮9sF{ĉ_}֖M B/'zW'`0ߞ///߻w6ۓ@6Q+:> 0srҰ2/Rˋ/llBV:^*Jpu/_D[$F$i1K襝?\-W~ƍO>۷0;%S޾}{d0$Fh=$IcV/txx駟*F5!@+ڍ> 0W:rҘ5p 9eiAMVpI' ƠnڌĔɅ =ᛝrctmEC]:9 gVVVn^q R:t>hlʼh$DgNN]y{6ְCEch $:vrXp~4[<' mwBc@k'нSyG)z9'/hOMv3{WGa+ڄ> 0wr{5MogDۜ* Ru@I<#V }`u4_ <a1k:&?22<g@''^st?]BN?%ʫWlT͛7kkk\(({: yBh9NNL783o?JTwŗ/_&㷷]&E[nJ?&OY0O-ovF yfcc?G0,lkk&(X07 :ֹsh˟+589Z' h NNֱɱZu,rh˟+589Z' h NNֱɱZu,rh˟+589Z' h~^)?9Vt }vrg}V3f=|CΝڲ)={&wBbkΜ9'NꫯYK O^NN~$x߼yӓ'O^pFi;:Ļ{~{{{4~=~xXIyПӷ~+1%nܸ'}=>HN腨$A/]|:@oHlXI9ѓS1K̹~yi,Kɔo9̛+Z> 0?prҘyf<2Ö.+-PѢ3 ʳɱs''#͆ ["c|` ?9V}`tEN͆4yf{{{0Ȳiw=c@['PNN򙕕sW_$jjq$E_*^®c@;' :sr &Ǒ8 ˗mpp(.< +Z> ձ*qΝ'O2<7n a c? ֠Oc'' ?ƭ#m" LQ#l@#,;V};9@yijgV!Py 6O̹[}CNH > wzmBs<9M׸o#ueOX2Iy)K4Z +++^Q7oެq2iY0O-)a+Sǽk׮I EN$_x˗!mω'nݺ< `'ZSL,N-//k r͛?fqD糵e1+ }89Z:zcc''@XX :?9V@kprOcc''@XX :?9V@kprOcc''@XXϓիW?|`:' OXNN?~\[[jƬgϞə{}}NHdvڙ3g/N8W_mmm|G O^NN~>hi;O>=y{^~mcǽ= F?~lcY?v莳#?'oV"B#1KHؒ ^^*,:K @/_5Y7 #Vt}`Nl7nO޾}k)i,Kɔo,̡+Z> 0?prҘE:4D3̼&TRɱs''Y [z.|O-F7>9~rm6(l/\`sK' O̡.U3+++z[Hz&6 T^:ʞ99=j@yxnGpH/W01V}c'' UΝ;'OdBMœ [0eG+Z> 4 M&u$1a ̢c@k'нS4M޸q#y,'mBs;9/%lMUinWR0~g@'\'ON.,̧h$<''e`0XYYyꕍJyfmm-S0,r'I~D9_x˗!k׮Iщ'nݺs 4ģ-(GX0O- :֭sh˟+589Z' h NNֱɱZu,rh˟+589fluuupO G`߿o Si03B*å%KJ#afT 0{nLqK R+c[Rg*}>+yc[R$@-g}V3f}'Osܹ-߿vZL++P!IU*%c0ԏYB}DbӧOe˗mXFr5t8qbssS'1IyПTJcG#1K<{LٙqÇ^x~.\?7n|'o߾ߘ> 0'zJ5ĦE'}tQpc[R$C*1-7n :QBSܒB''JS)Y[?~/G^jɚ0'2oLqK G7N`9FŬ)3` G G+FJoLqK GC]JM5+++M4L":hݻ7Iݘچ> љTJԃ4|hoaN":hK)I?Ppc[Rh$T "ܹs2_hS^Padp &Q++NIt, r~F=}8\)7ctDc6O{&wZh<*&Ӕn2?O̹Rz[.H؊b^y*ऑnBW`>I>I9׽TJܾ}{_ Lӧ,}`u2(fS% P}Hb2/}|䱎5qI##y@I#H2R)P|e#f鋷ӯ}?,R*Ȕ7`$-=t)G y=7a)F*oe/7aJ)=F*W$K }v&*4}sE ?~򟟟6Zp_e鞒LK) 翵R)B*!?{κep_ʤF ;zT @Jum_Ek$t/l(]zO@J蕚GNJ#a(LP ۨQ{`raS-',erՓm%;0hLJסAHUoЅ*J;7e͒nCS[4S2h;M2Cf_S2m Qi~7OG$@-g}V3f}'OIܹs[[[6qϞ=+??˜ӧ'N\|9ÇZL60gj&*ÖєaMw )ВTJjҙW>W2m Yz^f+JWV/_ߚ lIEXMRA*c9ssX\Z];Z@^R~#5H@Q΍7$ּx''p?W^eAd^lҾtU}Y27Vi//CL)jҡ.cKR>W ˒^TIEȖ 3_$C,4`Zte0}'v6   clһ_R/H΅OA 5s> 0Jii$fgϞ]SɌѾKHRy~Z?C޾|0W|U66fmW?K:.s_GO5?,E;W)|o֐\-d8YȑL@~)HnVOFJ$Sw/ƐGW!`BI}r$? Kccwl^CR E!N 0?Jihx.34ynL䅭 H~iJP*E#dL(.7HW:ezR 篷Vӗq7U|Bc$+E2H:I l쐿%V/ROuT#Lvq#:XFdQv¿g"Sn"<[KUa&_m?$\|*18X!ﶵ^IcȒz4d><W'p LT]! ,NG}T?D(>W|J -$`a̾ dAjB}R1"R5$5IZ({Vp7& 6ݨ$ Q*ݰ3v;ì*N[[@7NH.p22r{{["oaZ DҐH'P5@b`XvvsV E U.-6E\%R2>LnG.JU^TJ>9ؤR{Ɨ3v;AOw#$R*oYYYhEƏ #{ҘKɼHUy r25~ JNO2}ppۼNjX*p }tnk[mJdT?e~jREwR~SHi6Pun?$?V" }̕ΤRr?x@RSz}-+L:>i5TiUÖ,sK'а= R)Qνwkc+~T\iT1})J= WzJɤWCG|*TO:<ìZ> }@u? Ν;&tУ! 8|\D\dpɿ`dTQ_ wR PGoSL'/.CJnlS)K~ TJM%"Sv.M4|WR\[> }cTtFp'3rAJD ["obCɐZے W#^. W=ަZ* Uم_Rs2>H[#bw῕4U~J/+Gغ> }{YL ј qǩPɰ .D| ?!w>ȣ΢9^uCwKNjX7K=Ý^zClMQ5WOwdՔ*IZp'j+%;WwTO@N/6v ?GI% 3AVA6N ˷s-,lޠOcսTJ(R4KV2OfI/AǻaK'zhBo;tFSdzH7Ԧ E2HN"#2.Tê|=oEycSh*%KҒt2;2=Fknpv.$ȊlLxBIt 0J۷oOڏH^kBQ̋&:__GE;w.Zʰ=kԧTa%#S)@yU74S)h~q NR)r|ɴ^*%$Z43csKb~ʯ{k0{> 0:JM4leny2U||ݩ왿 -2?AVO/Ved H~w׿NoְTJY/*)s,#u(3ܪ~\&}J lrVz>a/|}cDCw?ӭ9?21U2^)^./UΕ&S'%?> rR4iȌ8B/d1?~c>}?@IbS Hl$V@&hV>UŊowTRuSLtˤ'kpoNNT>zsm(> rRw=3o+)ʌ}aQFnllH`sE?^7g0L%6`+Opg^`> rR+RIBWdv?HuAUgI0!~]hZ =7[ﳖ$ϒJar|{VGHuHZ8s$}۷w*+++[[[VPH4*]It'AR)=/!Ԓ׳>|8ࠝ:7)g˗/6{=d6u떮ӧO#W>^6QyI9ѓT} N|#}\䔲]c{\RKJ@ߥin54ݕ^]B9 AR)YS>]-=W_ 95Ow˜ݻ77,mjߒ֭[6G9ZJ[x]D+O4f? KwϋLu߼y#3gd2TR $yG_x1K#%$MW*uԶ.x֖,[˜Xwn$qܹM$*o}字63"y4Au}`t; zl+,y\y_~{|Sy=! Jׯuf)2&6 |R*SFiaۨ姌ȢCݯBs=T$6oϲ!32_֮|$5][[}:^% FA4 YW_}%u.s z}JsKT8Mj ָ,17W]I.O=gv;9D=ʜ9s&&j&٩JL4E*&Jvyk{z+DZ/܌yJ,4/M!,ܭ;* }3H qJO%/i+nA-JZÑvO:U1y\1]D3T2sCl$L[;soU(SAZkQR)$TP%ܹ#W32 zgvŴ ݚ;Apߥ9vwZ$:JiD%zw?]s$Ž7GEο8@E}ВWE) +5[[O/zQMR#WRU*6E1#^#yVk'-FJ/a!ƴ&ΜŽ7߿ۋQ*1md_Xz IE5dMs]kRP/tȭW=Ϝn0RY7{#kw κˑG2Po|&Y0JŹGi ~5RtʏLl=.}-IOK۷-{E`ߡO{i/ꋧ[1#:rT]ORUwp(|2EMgc_mߕK,52/ϭYD.T&:gY59_lmmxhzCB&?2G2V#3xq>IO.){=׹ΥX^^.~ noo/A;wNz3R*?e#pkL4KT2C(NtђFkKlrtIX&PHWӭ10 R4)/{"n>m%R) @̼B*@>H,?$ Iy_*\ I*D/T(xaƼ[RT *#H2R)T *#H2R)T *#H2R)T *#H2R)T *#H2R)T *#H2R)T *#H2R)T *#H2R)T *#H2R)T *#H2R)T *#H2R)T *#H2R)T *#H2R)T *#H2R)T *#H2R)>ԿIENDB`performance/man/figures/logo.png0000644000176200001440000004222714125272706016455 0ustar liggesusersPNG  IHDR4~sRGBgAMA a pHYsodD,IDATx^`U׆lKOH{OR(Y`QbCŎQQAzQAPB wH $lϹ33I`Svʝ{mb#UC-hmr7ypV,~ޟaewd!{u;r]=#@7،% ZaDѻ FWyP#@`^8jȫ\BV1Fm0ʃ4K{V|a8%UీN؆EP|IkM ֯!b"@[BY3yK EK7^hΈ/o@x(T"{.E}L* #U$0о"z[.YZMXNl{@`E 1NH5J,d~s1*]r{r[ pE](B3ޤēm6c]ƹ]B5@#L°շ`Am td׿.Egq偕==OZ*kk4־˫nn+1$ZG$;&[2.n/oTx߆\ {_O U\i1gʫnynn7u`h/lD㢶hqI 53})QQ[l[[^;nR$P! aXMR@*9u9Z%hYj֧;cwb--+XPR=͹ZEj:HYtoZQ| F TBtux s877RrǽU`kǧ'@ {w^PJpdC R% KѲqI6c{b6c:?1gwS+i.߈~A/Bg\-uJtyU` t AJh}E%VoӽrC-?ѫ5r-@aHSoz |Z3 Z^a^VzЄyk8i r)3=HN:݄`+Z ~{cIO b]U#}`0sl 9j\r#v 0 {z0d8RM#bsaӪ{z-1`V{Qn3[`ҖAf,O}=U9ѕ"T̞!9XJZ۳jlMc+$C{f!+H33wȫ4e`/&`n"r A3-y 퉰KJYzQmm1:Q^]&)ӏf̠\Dgi3:ʫ BlL0Mg {H^U(Oh+&{ 4~[ 9_"KVd`(tXVB.1?ÿWԓچyMm^!%16?XeZzw݀ {A7)wtLI]Bӿkj+anyz[ ΂*' IY)Kml'D'ɫo7U1_[ >衝e$oEoÍkßFXQ #HhU4P T~`z# qk.KbI'J $:oN5;.|^6ve ^R䥹KtDp=f^:u#yKSC31H)ѝs? H#!4Wv?@!M ܊ŋݖ58tyh"ك:X[*&=Gu3Yw$W:cx2mi>n2X`,:<6Xp;~l3#E~FV^aJkJR}۱;w"x%t$]76#=$V)m>G/wE8Vl?QS^]┊ca hls(ĪM8)^uMaZPX(NjgBH<,񆞣'M%F |O==Ge׌܃[=H fD.h3"ݾ\B4П9"~!oaJDt^۰MV Gk{3R@+ѬAzhFo3F4*.aqK^kIc?U`<My"I02yn&$B?gi0y2,[wB1yUGIx=Uu6&Ӊ?7)V!l&3 X`W#{gZSX!Iҏ *4>ntƲ+vEPcCb IJh?.°IXh++U&su,{f2BUn.\mcԡ!^hviH7fsP%X@:hP+sM۴MRw&e FӺ*=xMꂡ{Nq)m)09BJdec3:}cnmqER5 (fP޶;FW r_-?HEY3 F2-*S 4#/wE,xe k@kVPƊ+~6= mǃKG䎠X85)Ul6rlF АeɆ{*o-7V #*gn_p*@Y?a?V<޲X0,hSj=~`͊@Xp .;ߵpDls ߌ+>|݂;3LVR̩b[ĺy( 6{KlWũNGF o?Lt=A݃c5n. W=˵#8 ^rÏ[ zPԿ7t,^x%dl5 gX2jNr WXL'ߌiv8kJ"Yiq)\\$-]^=|^}zg1olއS8Mw=͜A^E|\][;ݓgWyX>ok+J87ݏeƢokS*~5ar͇"_޴H4'9>F + @o]h5Z\7`W~sdڲ n|h \WpwX_i{ h G-7ߟ~88~ěa፥ }jCGs p ̽[Sw[S0B[=e7f'އQ^t~8 D|y]( kSUC፳bYn Z>Z/ >)Wrܿ8_cb$܉$LÛgf bZgP?x#h:akg>ONvXM`B{Ŀ!b=.2ObOj~|OV]*tD5bXwm \!W5鸸FU,FQwwƛG1t&f6x]lKNɫ|؟q@OEb`<h]d61A%!R̻Z/-F@WnZIy ._;Z k0ѻkWW j֤sKk:=_m^ߋQp!&U#ofb1_u؇)) ߏ,VȀS$U,ޘv4-ɦHȹL拺:8塒6BOOM? ƢajZPJs;l^tb9r@ `Qi|p=i0ܰ#bF4a $3Yԉi8}AH ]F(w|)5Etx\7bIHb#ٍ?"Ks0$:tU۝mZsΎ M8q\֤\A\ȾD@sts&&x,!R%af]1}'5G|e|O(Ysx}$_\A*f!^ȎV焅עRvYXX,L݋'{,k?o ~A}?^+?VYXO%c^<( =[󿔉H\w}[N5&+m_ݧR2Xsm0,[͇m'@_c"7-t++ո 9C 2큺Ħ#OK;Q$n.6R2Ç+f6KȹdV_GN1iT1t?Ĝi{ V[ _}c6VloZd;F$|_l/ RO UGS IT Ù fxϠJ}ųdX\o\ʈN{= P!>SN*yP )|S䦩y3ǔ M:'@s.ЃegTJR$;4ۙyս~{9OV0>N&Yi;U "ƞ|,z2Z|Kf9Я]~,{:1mL.3tA7>D޹qMGX %.uL7@:_\kj7ɿaFuI?*f) ОlI C¯ Ee{FSaq[yӘ&p;/;vÖ8W9OpJ޽=ИXcWr%^b[œ#Np>11S M>ƺ Y8tp 0;A,O/;'j #)P*LGѱ[*z+ U\PnP']V>A>Q an-Ru#|s1>7LyEG\.r3y3=b}x-A_Cp4#U.ޙG:3tԎj$r SDBɫ_]-Z*\}8q8 S:'o++3Lq(lm8Gm;Wc8otVuk3G~W>Gg'zXR%pa8w5h,/q[(#Dɞ('xE[pŴݱjzda9ſ7tOSDpd9nI!G+id݁͒)K(==K6~J i݂#|?\m(/<)hf`cv/TI5I:+Z҆'eu Շ:t 'K=U8-).DkV`@EQܺ(%4Zև'D\<}_./+ }%q#a;kIDhϰHm: )2H wWo{Qdյuؖ"EЏ՘(6>'G X^j. (xkft\5QRGԳUh[28+ R12} ~kpGVч]`K|h`_B[RԠJ'kwohU|e-&l*~*¨9>;\G|Xd 6qs~-_3ۧ ⒀+g^&,]Og5}G$vRKh qs\bMgbt!h\O Ŧ6>i`]w ~7 W4AM?.Dβ|;bom!y!FDKy܂Rǧ0SbM;O T3T&g7RVx`BБ^=P}+H9ǹ_}ҀF}:a}I;,v-蛗T<22BU%aO==*tFӲUXtO:"a|[ j'Jd3\֌Md~l0݅~!=*ߕ⪃ 8(t n _/_ L`QŽo-8*vDpsJAqO3.YqcH́7t=k*Ώ)|n!v@?n&?D;gu+ُ;@(׎*q[}5*M(\9 -9\۝f߿p`!|5K{uQ h6Yu|} C,,:-Ub9()}#DtSc+߭ᣈ׋X 6 :Ap{aj'Em^N:c󵔆(t^!뿈v)|CuCU9Cd( s3As>S/՞CNJĂp~Aqqq_!¯_5zOtTXzެ5SpY7 *h2fzi\4mr}L(Y'q0ȓNWۣ?Z&3s{B燇^#W-ԩSѦM,[ O=]+ewRU*yl6GXr%$ j*4*t.BQXrՋ톈:VTPU賵HMMu\g2Lg[^|6oތ~& K,ÇQR%|y Kx5!ӥKL8ժUdz>gϊfMZ/}! ;.ι<?233 wU+Q-,do/o`Ge˖j`ܹR˯VAm<|}}1}t$$$bp]w{!uu|]:g_]r Eu 0mD4+-" . [;0r>P¾Īy K/AcϞUEXc"EnNN"##ER ԩθv1Q<< ;v,ۇW_ޜvZ!~e;\-"@+D_v~y)/_ m?݀s痤N(}v w}b9?4lPD۶mCݺuk.Q >\C"ݚ!og8p%x(y1}{=IBBٖ[4:#@'PG% ooo|"dzHߟ|28e{VZAgmQ|#p ZpP ?iSihEa_8pԿ:yI6i$?~\vQ8||'رcĐ~NU7x"]&_..\ݻwk|JV"/dΝ6l>s揤5c<t?+2:uc9rŲTO 0|f͚cǎ"apQAOQ1#:8 LGyD^[dRh!%6Q`811Ǐ?b1B\`jBiiiXƱ5)GJc8TW@2D~+i$g wS ?ӦMٳE~~~ӧu&GV7'n47Ø?rX"yw %Pu B!;&1%ˮ4Qꍘ+Q`?쭷Bxxh*Qx }./y>w=퓓7t56 o |Oa`5ZzľrWƘ1cA𻪣Km  /gùo’-Yj5&4@۬G%CELr/zvE׉rG!6m/?:z:Acե))m۶ŹsD qf7[2Os8HWgw P$Aw ŷcK bAŽHڢxw_#DDN0y Z[:/՘W޷o_ZJ^c`gztO%!q:_ډeg%+D6_ԗ,4xRz\zLiFcʅHo>Ut♯Y֩lEcv*>&T^Z/1?hJ1Ubq~d#!{u6[ rf{<)Y^O_`_!1`<,L>е|\%FH({8kNߒ / ]^qN- vwN݃Cͥ:i[B06"J';ƕ?SBp ><$UN=ry:%]ɸӉf.u$,9 gCC1GN"tF~PjiȾ S4mՆxܩ)a^=Á\(䢕, -p?^NiYBj)7xh=i3}S!+!|`vNbai&4~uI~,K0?uk sf-cʟI0؄ -cGZoYעB0yGCKcR(֒\&A+'C5wzW8m-Rl2&_SY6֣bB]HOg<",J%#muW CRuhori[|_ Nش=l?;H`D?Df&#c[U"uE+ *O\S5#\&+&ojԿ&+Nn&7GWyq~BI; F{0u2i!jNl@ƻm.(q3q#AĔBz8Ǖ|IcA 54h74^M^q~Lޠ";WVGث*A5]Wݿ^CUT[ 6#U++g&uęKyTQr'5eV%oVcse87(&# 8v^3l&ի_ 3vݳD,2lX !Oͱ}oOk Y]T>~r_ϮBM{g{=xWs\ĶzUo[OyMA^h7RvP$]j|yM):A{DFo-bt}lGbq4";# 6=U˧f֋qan1HF!OZNx9=qE_֖枮U $ϵ\Y$*"4l.tkۯ rUkS&o! !O@`t;/ jf[t3*Y5x %TK?b.Suj7%4W^+LSD ~zm>8 Xn&s~5AWKyd.MsZd槾5q6";< L-:R[p7 A2gI,'o*](YOÉ7ťaI/w! ۴x)WM5in–'iSNO Mwj֨))<>HZv.>W8yPWnW tX҇|@jWBk<6$S-h36&2AJ|n_p9YHڐ>bJE| ,v%>>ă?coNKe; &wBcg29Y8>~}(l7.|-qiА"g)ȉb&ǝ-߅_Nbϸ Í\d?cU>_zN~z2*|}'a^Zq z+tn7mpc)ŝ $Ⱦ<z{Q>%˂n+RHmLst#M"-ҁ;3y) k>BCBqHXW^{Eԃq%pZ3 % 1lD3 .n' wie_Qޕ;l wJ۷"rڄ0gP~J K6r. .]X@XSKh߂[sS*9j}::>ԧ@^(ߘJg+؁-ivFMفk)()vٍ6[mلz?΋~[MySl4_3+K$W v%qDZ?s\6{/)Bw]WV]đǍ&ƏÜ$ pd31Fa8jn؀4b-neaH҇kS2MqtU.Wmfvr[|E57jc4cKO2@iQC(܃QŰ'oMѝ0?aq_CxQ] X } M+{qS"Rs~)cN|DdKȩ\\s]"6w |XB_vZ1_7œ^|!Xmk/1gqI`v SO )huS)n a6y#B"+Ս]Bah[/$Sqe_ ByOpdՑRs,|Ȗb׽sޕ9(oud?)ȤQQBx?JsI]r[=nn 4OUl0|vPRFiJt<=va(:fLJJ(0񿟖&_߃)h~G n[~E!ԧ:ݫG%FEB|BӜU~uq6K"7g_‚sE1XG۶R?@R,ǥ_O^̻Y\UP_9weORK^/Q2=Oh_V 㗷x( &ѯ}k)T_3zJX&CC<Raqg`YKS SrK9WT*> |NVElpc+5 ~L^+-t :hyYO,/dk(XrʧPp*@B̹sP9ݥWn?:-Wbpnq콊Ź'i=FA\Xa Ϋ Y[ 븼/xX$ &n%.ryZAAgDaػQʢh$BoB  "vWCߚ"v .6I\0`bʨ1|kC-y P2Co6v!X!Nrqb^qgG),Å&8'xJw!1\VC{y~xKCI&DlG' @UtΣT3#a'D{}#K-0[BajAQma %Y#Uhvz U`vxn[7{[}1}NbeBkqndJ :}zŽ:H%2L++1(\F`-L4{͸8U G?䥲E%kPWIC E~!\ߩfK!WRI}.X%!֨A_bǑ0oXVRD m/fMU] $o_=)9eWƵ-Rv`Ix n٪"fd$bYw$#ZD"zD_+}+TIrjARu.CbJB<$ޤ )UAEM(R LJҳj~ʜu>S^ό TQB 67ꉞCATތ48NQP76 ߗ~hdP3;غ"%Ê>&N[:7Caun {| ԉ W4:vH'&%Z༷N `X`Ue޻N;<0#w[" qoF)yj FSۙN-L0Fcoye)`4(茨q'o3PG¨"Ρ2+F,@v ~sƦA?#vq8BqsrxR:L :t k nYݶ_DWPpɾ6lӏ܊Pl^qLQ|_P|N#1N-`~a^]/|N#Y -|ë&iC6ϥ"mcMnH;%Zx͍S&^-F s0V Jx="&3:Bۊ>^vJ n|F {џX+r&uj-X:Hۗ$8d~Lَ, ?A\sS[ _KZ6WR4-(:wɯۈR~r̓ ELs;tv _+/)*5\ϿmD6.5]F?ʫq+L!+0w(HqWÛwޏnsR%ןACa!n/!pZ}ILrGޜbN3֝Ұ¿^ b︍B|<&v kG}}:9T)~é=+ BSz"tQ$X }?w*b4o=S#@LI@w~Ѕ=/eZnC)15BKmyzxx7=1~GߺĐɫݢXC'GN21&=&?/ x-zUU{WC1yoLXrN!s7u;ÿ~(mt:k|.V PpNo13 -*Sw_?Qf㙑C1ex4b2jewidhrw@I+^1Xԁjró~?]I s 1]WJ骺,_#=B &r!lZ&^}0)(V.v)YL3y:,oʞZdFb蟔a(މF?Eǻ-+ǂuXĶ^ ҋ{ @iV])_KaM7ܺVKS=|2E+Iz$NkKlR1W] HCȍu%D9Z% Z"+LPc\=ݜ̭6Ǣz)=6Rv'M%:&1b' ̮-!gpXF+&%;X̢?\G+',=+aq|⥋IĿ.IuT/<;&TiJ|0E~<-X(; \$X梵ݵD'V˞y6O?WN>hUjLxe?@` t[W"C?b같)]^턡o+J5aѯ${Bx]|pj]Bs{S5WD+f\6Z Eݖa#@JxUNΈD0Wg%Lkayyrtg}9l!s;)"$oLk߻TzXCM17¶h7WQ,ۋ_aH>un@K*sWG f ~BlWfC`#iL^7m%op=)0iaDuSJ421_[ i}/ZvfG1zaXNW;`!F"{SH\wKѭq?6ǠUw Ӌ=oZ{HX=T8|љ9͞~aȑnșB`:h)sZ`oemŢ&T=g$DEt'6'W{X:*EcE_J)gåw!1|S&,AZxs}\mQ,##{+iGfbY rӃ0ʭ*eڌEDTu,ߟ߂cJV֞atXc^Bv3}IyU?oH/t=94QC | ^q9CJ謨~8 )î ұfuàk2I1۰%v t8l5MķFFX64,rt{V*j} ;tk ŭD3}axLSʨ,E+2^,DW,?2.9_""sYpmT*w6XʹSLT.(O ^galRe@fOPR6o\1^0u ..4~FKوy0,CߝmM W_Lˊ+~x| ^ Y)trGMXm)YpQ$K[_wANU8 Y OD-uD~`N7rKN >~?X5p~>,:[mÑ:{3 = ϐW{n)ډLTSm c0c뛰hKMl}t.eޗ# Uy FO6;9 /2'}Eo!3:/[ўґ `z3F hgVha Cn_Vj]-)uUV} F6Ya#ʫok<,6,FVlEutuW-Xv>MBlǐM'QC><T`+ϣF%ti,ֶ6 }U cqZPl&ѼƖnRV,mIsh`bUpX݉}qG;9 1?gh  #1 =T?P`yKl-u3WEV*WFS}և m_-[^nD{yS; _6 2d2lvPn"RcΪEwY\~&YqD,oR( vc"צuzrliAגwV;ZU`rǾvp^^ĜZYEdG}|ؑP-ev P{w"Z/d'#cŸ^ϳRgle!u@VןWU]so~@19Ѯ][ bdwse;5_?\̭Ėܵn*0\zKVv;)o|/Cەks+ ıwU]fϮDr3UZ%q!\jjpE  / 3v"rO3jE}ml\~HDg_x薴W$z<%f 2IDQWN6 Uy],%yGdwe )t,#eyɤgv7Qɳ33j]am/)zС\^:] u;~K\^;]xVk/35U!l wL"呇F{r ]}UK01J>IU ~rʯ/m۶%NqYK}ґ8K xr5~'C%Y v?IT'DRcζ)^tZ`UG֜y f6dvql"֭zDv8#DDaF6ZӾ&{sF(5'bژyۿXN]΅vL>Ѷ7iJg=N&eQ&,1/[^vNUkhն3~(ɉX1I V<%me&zPx~ec7 j6aDۣVXz>NAg\e!ʢY+sZǨOUSh֙\iڬĎ\0~>^AnFHֿF*`oa =SR_=:qr"Uo[_lg7 YMRg^Hm0w3'ű5YIUʠӮC%Mv)r:cΩC_tq>޴ɉVmVɗ D\mqvpV.'-gE[oCKM.Ek\b eݞ_v m,I˗diS~YrɤQNDӎǨKUSj/B$}N9(ֶjPb_'9"!NCQc)卝Dd"'/jW({ 7@Pk)~Ct'8A&=߷ΪQ~YrɤQƯNי^vUAg;;˳`h-ky9U]$u*7AM^?<^Tƒ +f' ΂mO&Uk7X!}U~,%ZfҺNߙ~YRvd(gGz<1e\/hka u&Oyrmqփz^ՂoEPVON `$<Hd`n‘r[ƄKZs¸sl:Ddf߿S uww/ÑJ!b$wW[c(=hVt~C;ٲ8&o/| }'~Yjrrd"Yvb35F쌪Z.ŢoɴN~^6721SbW7&Q-rw٩ gjzcTUHDrbԷ+s+ rymmk  ICDtً9 sl}LQ/{ I)u8[&=\︞Up/~; m*;Cdnt P."ww5Mj t,[eI۸\^5DjkEǨ=FUMx] Nr"[px]u5 IZ4ceFs$dDǨ=US)uo/m}DAvpv;Iq5Ef>spοJ(_/=イ8&/yeB>qdZfv ̀uyh\A$Ǥq+*_ $'W3pZRY=EV'IGcO]H(l`.#Vr~WY ]L;z^ʥC4Ld:1eMUns_}qNNvw7WV殭ncw0ɉ DNHonnA-ț#c= VEr;o+NA65W=sYw1.Kh/؏o`2F챩jȜ8W~D^h}כRor߂9yU]n"D!ci*zwuUѾ;z^ʥC4LD 'jzEjdvwJAHNdu\e냴~]嵃r(k[[uD˛ɫE(^[bFYN-ioT;I= !K{1eQU 8T(oՎ s Yrymv]ީ$y(k㝍o6O>iw=gM[OA;Q8MY8"-AУ-q Zp<\ep,;gc SV\\T^2ىA ^U|W\uP;;;I }vvv6:@D}r_N uS  oWU*ۇ/M^\Br@Jf^NNvw7WV殭&/wNLWo `~;;Q$xt!9ADB- C.R]7A 7?"`HN0:zhzp= kírO6Uַ[VkDPBD)"`];;;uV/fjbqޛgOnFN0:o/t %;r|3"`IN0Bs7;#i]9l%P׶j;<SMrQzZ*/׶jgqHYvV.G/嵭ΆD~tif WFNr%9Jrȕ+ W@$'\INr%9Jrȕ%'ׯRT׷kZ?^TZ}s-D}[o;5BՕt> j2ߏP/K~m2cy!OM8V=}瓂ۓ=}cIl?b a JNdwwsenZe0spI*A0OrS;^p{2y-׽Bjh#TQx &V D\Wv;fb땹ݓޛ˜Ъ=@ڊq1yj΄$' N6tͦuP;rV;^(IUCb{' bh0&'zj[kȟ~{/6P5af7uIw̢ߓҾWT*]Zf:>7FWee#MZA2CrnrE>ԲMiA=EQbWCl/ۋP N0/m>mZxQw?t_ggggWojzvнZW?́$~6N?; ]y{C7ZjP7TvE}8 >,O?wmL{>CVJ)2orE{>Ժc:V*c ߪjɮPȎoH"b;)bH o^lPw!HND]w,6~3ľ^^|azhIRL3CH"u`:Qyi}iV3nv`"?\K#j&qh/!i-`؛@MrχZe6_0jb?[mb5Y>ؾIHND 9ћLyvU=" Ny7rvRգ%RL5{ӉVuMVH:NT.G("h1eH[d,#LF%a;0]jϥcA;0qCme݁2E uȩB>2y,~Zu -VQ_l${b.#ݎ_l/ۋa>9Qkt{DGWM|pytv{?q;uU-m>^RdzR9cF^Il{ q/ XhS{^Yu`": Bt`:Rag x=.wșUhCT*M &W S)j|ڱXl Zu: #&T>$"T}tЏDl/^lD!-ruú(ׅNʾ޶]PŘJ%b>^R 2<${mA{LƑˈ=ҸT=IO-jiJIXH[Kl%zVt*㥑B+r Yˀޭ:Gw>$"ځ>y=bR]w&C&(ݕkV6wO"Ubc/w/_n>`_sy._\%ֻդr><*TBQJ?Q>ٍ㝍j zo^^G>?Wsygq]tLJ )P-|n_t= n~5Y+̅P\-X|$P! (@rNl w(Bl/=L&'Pn_A{gg~*ym6 d[,!³o/嵭Z-Ydבh' =ҮP}1{"d|=5'dٍZ`kk\Uٷ.y6&&0&W 91ve%=ZL%X.}'#oO>ؾeS}b~@lTDyvmphVb_ ow缻n#9㝍Fy~FiDvZ]o:YGMAZDgj=+ >p&tBJ]9>>.Vf\.jCNjU(e華POl/ϗ>>~*#o%C:9MnWCO͹ɯ] R湯lvUyKÀ'*#m6z27wڵJ]HT@m}ʻ'$O}} Z};} u@u:[;On\|ѵr'^Ys_.N(@$cNm a_;9=Y 7z\@E̾4\,Sž`y6+^?}/^Tdw*]jMn@p!G|w~*8cb!ؾh#OFlM]RPNlߛTA.o,Dny~Smvh?dwsew3(`YLp]o݂\6^ȑ! ^ ٨[,dMlɉ{@k*8ueƶBifwBZO6*eWHO9K8][pI<):F[rԷ+V_hEg*ʌ"^I_jUcHejGĹ$'!DVfBkLq9q):ds IDATty*[9+'@26#]X W_>pTC~[Ĩ5hdɋZĆZO])W_ kkwnf#+gf؅.VeF=?E}XUc-r#wqɈ۷Ojeiۇ̹fPc7r[wEN6/Wke;\9Hg76vj+($Z;+4vymt1'd'W_/o Rqhrt!']'/UAX:+JGbabUqhr,ۇ7349 1Q {W*CWz&ᗻܵ9Hg7N?Lj~y:ed_s73\!WǗS>3ԋS5dq!mwWC z,ByЋ*ґ@lB'ũ~xb(=ilA0 uaB{?/NNNv77W3}忻Wݣp8.΁d-#+kN}ھ´_ 4}H&`2~_%|BJ EU>)NeF@Fc͹n])v=#sHt@mW d+O-1R m 8GA6̨`RS:yt,ZuZ,NlDlCl!o%'Ya}+=S0=W OZMAjZ"ZZh7ہ'0Z6:UJQ/'7ٜl4|1]""#֢9Z`@[ z늊kDH3i;]usRZw6-t8m=nO.C2y-krŹxu4Rr?1Bfǒ^hoi]>}>}?dwb{}G*~ #Za^l/ HN$´=1& ~o8nYo{-$Ϩt`9Ļ<}?IX;ڪYEk ֮=\fm1"+u?w`׳uߒ:~<}~ T&ջe s!߁I~CkպeګUs0bb>wbtTlqbփwؾw=0}Z Zuc:U;s4Y䷯wcy}P-j',΁d-#YG2ٍ^(mb*H[Nl=[㍷G1IOe\ Xώ7&kft _FR䆓ƅ\9^h-r&/ȃ^l>R}-#Vx89= e"ɺ0ȵrdTz\NZw4\8;YEq$k9gÈItn3Ԫ 3f72 J80N\.E[`hyĎ!N۸riU&-97!p!FAg.Z|'$ۋb(ȱaF]`L `\HNr%9Jrȕ+ W@$'\INr%9Jrȕ+ W@$'\INr%9Jrȕ+ W@$'\INzc`r.j7|3:fy֤䴫䴫44䴫䴫qu`[i+<}Ih\Miai]z iqLNJNJNJNJNJHJJr  }hj(QA={\iaӧf4?iz'R`@fe&R@%> ծtEf"{/.h=5)Btу{ mW'JpjBҝ"f]s '9Di7)j5Ns 4j)H[dV_!NF^ ĭX1s=4+b0, bdpNi af e7z0BP=fѨh.ZHNtbVy :<}IzRTZDxɊB]/ 3.)Yw/֋(]?:jY{h4G;F:D&eerxFN0 1^/0fFaqjMY1~\%\%\%\%\%\%D%r|QP_FuѳuXa90~Z3 ۷n\ h6O_g7YB?3_?}IYm]zff~qu~ý)GOO&wHNmV/5?Q}~:_DLᩐ0r5WSkGJNJNJNJNJHJJr^[|k)Ypt1z"^ Šא t0?`"̿T_g'AP2A!]LFou6PK (_kߌ02}~7q3stFU_5^CF$'&[xFrKى2NW/Xi $9&AQ0.}w5~qM `Zb͉Ѹ8Q*]l/OC{ ffW=Tܢq4kFNDhDzfcN_MTZqP⽻5)OW-=rX_߯h+@j&nwisc'|u˚r_@>j މ1s7nj֝2גh}7 0jرY2 2?ͬjZ|f;FN@jgOT?.J۷^֢QKWc' AXnHN/DzlQ5h4Qiaj"NةxuxϾ6LNJu_+鐜]x-Ø-գ{CNݺ}0*9*9*9*!'*9*fNZO-7UM ]6LcʚkHCШ=z6*H,:dWßXF] Xݤ3r"oY[7g.74/ PA V%5ɉ,޻'jP{gu뙙[.֦h==]vr'Λd'913۬_j<oI5'kfTKvgSc.^Lؑ(wCSO_>GΛ]MNzikH 6 s*4SƯFN0o#'9Qdٖ^ "4tׂ/,-ܴ!&`0M7F]is`u&tb\&z x秫]t6Cw~33 ##'rШ>=M 0!vɳnj>{rXxk  }~k;1mM!ɉ\N=?3h? n"h=40)ޓ|7[8;4{?; o6O?zW -7tkȾ<ڿUyA*s:0,V7٬9;KՇWգQKKw:-_m}=mc?9nu8[=%ƚ#0xnhDf'WLXn"918zo5!}vHQL:  Uȿ_u/$  Ӗ7$'U_#!F>lvә$'wS{%~5bO4iYHN0! (j1 0CEHK 0b峯PIK`4͙QS{b"kz$'HHD kN@d&IN09\@0sLfёi(;V9iL(DG*qɚDOL=Ǐ_Z $\qHšLĹt,yb`+};h /{VH E|kCy}1r2l@4`%5@>z%1b`7qINb`&u\;Ͼ"k<^ГĐ$'d550t<sz gW_7'1FUꗻ ~ԩ䜫䜫v? ]Q ke$ 2, LD0=r`IN0>?znNK@Z%2"9ThO0aȔ5'DL}o|_{nFF0&oy挎Wzxv䲻_M*9*bfx8j\?ثAp|6O=}^m4JRi ^[&w{.;1} #r9`Z?޺26@'yxF8ګwVcSW B1d5Fτ43HM?z93֨=|,-7_,cމT` )gFN0!wJl4Oh>{;1qqpz^5 7ЕHHN0QS-ifiRf|Q_>YZX}Elx(1=)0 &M- &P8 d DB / 1dϞbtXzff~qu~gW8Q*]Osu E0 !9ADgbZۚ2zgq9nxNO[<) i xrE#942xb:5xB]ў(-ܽ֝8}~U;1,^8oU3F¡հ`D&$'Rd(tiyjϯ>jgFz]Gp:5' ''1$'^S@.xńWÎPprEr&?1,@z5 tb6ym06m5鳧OՋJBA`OL'K @~?ӨkQ3NŌ-^Q<tԲwhUJ KwV ?ϣÒyj0?i>{r}X՚MTԨ=l4[Mo~\%\%\%\%\%\իk/Ҩ|Lwߌ0z`"5OMnYFu33F]gɝ8{&<N2n_FA8z=;铁6RɤhLwif/?V;^// 8zzN4fpE~ {/O|(+Gٜ3q̯_j\Y}~:Bv}TE™TxUrUrUrUrSҮZ^~z%B! Jr"'`6?ɓ'&'ZLL$7x{ലcӍDh?ޫVH+3A̿T_g'APAF2x [7nu&P\NAi=+C_ЁL!äiiE30 L~6d"͹yZcHÓW->r:p1gJj5Rz5&iQW˭>cq(3p~L\/.٨N^p BfSL$' .Eu4pA IDATL\N=?6OXŬQ@IK:A8j>{r/(-oą Gt<}Q5ŭvq2˗L#o~|ce_o?|zo:}^Q"3^M8k^uEFN@"&wIU4v'癇 x:Y|>ͺE^n"`~wgojUZ{E-`2|>zo5H`'2o/2AONw'nW'm̯{pyjѸRJBx .D'R`$'^dӖ|_WkI|s_}$w{jQGO̯>xb8jOKVSb` šn $nr_G[o߾œo(03nPP$'?&n?x7<=b;q?aV$'on0< p?CMO"}*;?Lzk<@IPd0u)nߵ..zƊ'9rQ^l?iKe9bOE#-xc1l6gffF] )nQE JBc } {awMBL.C%S0,w;߅^-ioZrr-Li ƚc`howN&o 9`xL H Oz?'n˗Etj4Oe[-`L b_xrwڶ7~|N7~uj>zo峯oie$0FN@j{h4˟J[)}}`h{FO@ȟlwq@r(&i 8'91*{F4^((-ܽ:tNL%kN3aGφ_5_9 ĥfDNL\h=ܿ`u~ཽjMɝ^qƨ3 h!9ӧGtAiaZ7/>9 e/{ Mpw$iϻl;:GD )ggOBS?8zff~qރ ͪOjDt}2H]t#9,K w-v{~~Uzx5B'J׽_I]FH8 1$'uj;,,^ƫndհ (O& l6}$'5K قR-z 0ph< keA//氫j4 cd7o $!9Q\9жv'ŏKRiyߏdDp|͟`?1 wAXr($$9QXOZt=x*A4^tgd%Epo?ݓF] L@r|*tkDhR0fFaqjzS?}/?CZE֫W?O\M<*9*9*!'*9*aU"/r|Lwo~OXC&n6!vޣg#UQoSLܸӟP CFNNt娉`' J Koݜ<<}^"GݼgzQ:c/ߒq~\Nt |?b(6(DiS-,޻'jP{gu뙙[=6.88>EB/ùeŐ~V淟}zλ@d&`|(4SPZ?0mV/5.[}~:Bv}T)΃(ۿ?,KFj"$*vFFl^~=#kd"՟M8<'?? .ֻl\.Szȃ ƚ<nf" mLŸe1Şi"0tϽ5jf7!F x140<~bah-̯,h5'%&< Y𸷹7-.JSpK%,TO}ϹQX(W4I@̓Vʚqst^پ4#A$@`TNHl<8V3B\;)s.F;zsNKZgsvD]fBz ufD{{wW^y{ݥ\owC@FHZ'Dfw 1^8b!gB~`:lGOBD8~p1zܢMb}`FJ&bB) 56D> N)3 /" `v9OJ&®8j>>.aj^LZ}&Bΰ8>1E>n(hq { eyq\yqǕwZW~nn.=;;LtzHeEDd"e2?:߹^Jxjo2ץ;Heڇ_44<9fh|a!QQ4|A4s9__J'4G6GOK-X[zZwUW8=FgBePNĭeg[D3㇟49?gO>8fuոE8ѪmDve;{$hcE`͉9P'Z@蔙4;olO.+05;BtzmP!x&bx,%PF@jէI򕽲cr);0[E *[ԨhlZV=9";tF}wVmCT*PfKn{z="d 7/q(@ZV>/IRݽ\_oubsR(MPLQ!h\&B:lW{]ުmd,<(&dK7K7zmHU("Y6+ADK6_<]([=Xi0 [|Vf?ІN@]#)֒hk[+ B6n.z@ ;_'|']ct^!LSH~͉P(0λV1f|eZu؎zGY$ *4;HN dFyw=̯;-;/X+t¹1Osll!8=qfFnaU:q|b{c7ZW&y8L)"[w84#mR"Ѐ bsCr#wb:4ۧa\Tg- @j |OhG} 9c -D`8mjMUT'@04;xN /=&pB)C Fc{(]Ie~{ovڐ|͉Ւ֭ö㞡lb\0 )VJɄR!$ȮE:lWbB@JQBP:`0 !v/E2 Mov:<ܢVm3WZYNl7&el`$|C%;B(/_i۵VWѭ{EAɄl_D;\"_*-;km֛0;+Fj8򓿗HD|ewougBt|}ڽH+FSUHK5'VٵP8UEpRe$Xy@bl djn}i&7^$ rO1FpBlqwoR>a*CEE0 U<4 /=nNt_ =ڽ!TZ@J!ud+fcyb;(j PݪD&]Y3}ag^W @"I= E !拕|2}|Z^][@'нI5JBc P٩y2Q}%3 y&rfFD/[D3K# Xi=9. )G2)̬3- Kxh>\{Ę'IEHm]?B~EWe" hِ[]v޵c(F/ eᚥeQNp4ۧѾB>Ke70 M Q-`>@=ݕZ-FD)A2I2 x)$i6Л@zP[<OP6|B:I&Fc EK'[m|;T| TGwz_",C-DV0) @ H&(R-BtEČK`1`N FH' i"S ,TTQ&M8aFһ x&OɨƿZHeHlR0 խJh| H9҃էJʉ$Wv)tQmt#_? IX}S 39?8 Ss+yb ĀTt3A ק/I Z }?w1ax %gq@٩ﱄƃ )(#GBݓ [|Sx ̤dO~@K^HADs%lP@**~YTA;b wDaI; EDz 53_yhCЭloc2|;w-HI8am3`=qyD$<>dC+@iw0:|bb:fv''B!ݮB|6}{ !_l3n7|HB% ljy&yf,ON͝znB=7g^B ZzhY(q>|(+fJzeQbR}zd2˅ח||$DPyQD8޹]k%"%sJ1ZaBD621COe8mԢn)ÉN'[{Γǝ'"s7$%sC@g̈%B+U`͉N][a_DΚw?$#B.L mG]6eQ4q|0&Tp=yyÓgXTX^":7rlEQX\Bi.o(T*,6ftJ_uHu ֺ[G QP3ewNoX&>ǟd&>$B B8Q0~YN_?wf ꞝ4E벤[[?Wٮ]ץ|tPP-ԬQg_yEfyb5TQg8#0Aw#a k9pQ}zzzrxX(Ws M0)'n87|pƒ=m 2Ğ|")-Lt2ۗɄ(TwA8/Mַe'Fs#!p ˅S--ݼy$XICЇUY:6NNBuN /({oD~J&/x :%M咟Y.MzYo`/.;qOtgi+2'Ah,KHh{ T81Y:q|2qш=УT"Y>S~Ws BNtba~ܮ6V|.hˑN\,A{ қvFʓ Rix,gg0XHȿ gݓS!/ܢd%rv_a?Ȇf1SsMO#_?|pFQ\LF1K_$ mZHцh%T[tE$R@i_&m;~9Cѿ~JO!K(!dB'h 14oݹ; I71D H & +'.zY\oQq@]Ccg\7EJ%w~~>77^@:}ROH)jڇ-g#,s-FL(OӋ/˗/z*]D?C{+^y{] 6/}~灟\N:.QЇ>z/ZwUK'u0W%ecHs&lJ"G|wgl"Pqdc5Px9(Ĥ;?L=衈VmsdW֮.'ix rX=2NQLd[(q6EOwja5~!TKL@BO$D^_4F(*Oٕ5޽(h6sխb>+vO/D_/Э IDAT߫Y7W'm_)7`p^2O'~eUeq.ED$){\ _)%A 1r`H [UN4'^{-=3K & 1 !j5芫2[m< jXBT+UVVf8&P -_$?1w&C?W#cd[u{rVʤV)ۜ7~50kZ!PLΩCW'^h.oY/WZr)9<.Jo{ ׮]sˬ.IPBQ|@$R "_+;(S4KeUw[](o&eG-/8t"TQ(_,{O&q'+ʍۺjw!~ģR{pav&eQ~|p_W]^F/]/ ,W^qkS?+uc> N~/ +ZݳZ7/M(KũShZ&XC&$"'GP0N\'] u^!LSHݩXX^b+xQ(KɿˤUm:]6w;g~?f¥U ㇝.4~ʦPuF{^{-)& pA3@ ?Hh&fG l S6߸wbL|w\{嫯jL P~VV@:N@a}2R@FX}*Z%'X> Imp['=w3ǎU!L(I0.SłT' e|dya!ԝbRDA,!k {WnpVӳLfypPɑV P0?ICLخ.b [TY%ۿ__ _=O 6]T_sss 쟯]cRiz \r\yї~;E'ю$O(+8Uv,Qjo߶~888HvO 3Iz ];u*^HU-9 O +t= F+ >eF%76DPH "/Z{PEKw~_JAIH&޹L&ufӌdp6G2Ӷrln[sw )@9.W 2fN* kk[+ B6n.R=@%7fn LSNf#Nۋ](=? y59y`'AnXhTPP9א0λnUܶca@M4f)$&?8mԦnOgKtN)0"w" DM]/0 7sHuRRh]J:@5fH&'fgّRϽKD Kս'Ʉ̓ fBqz&הˮɠw ۴H'u$wFU_pY'`RCH=}C>%;˗/_}՘_P3}|2VܢO=9N͐R =H&P!0 Cs+yb Dgƥ$HZEcQ/_1ezY 䇖x"KmFJȉdKp"_eXH-X! |S<y{}D L$Da>}^jQ@36I&'5.̆d"M8I_d:mD@H&`~{OdT!-䮦sm e㲇M`F{%p#y٬+z9aL2F: G˥ P6ʚQ^D v%Q1M,-DQnAX GF2 S dLB2lnQˌUUVic>0zq0z0slV(Hi@ H&N R"cLh(_*-;km֛0;۵|NFjR (G `v>=%Y.$H)1=$&[*?ߨO^=P8UU@ri l&*K&1nx$I8qڨ bGP=KlH) me{bs|>a*CE 9ÑO. a' t.84G$ 'N]~pnU,N@#3_2sBV+qo~QzUEu(@* #y8a~k+>; 9C,@Nf{gN%F7: Vz^V\IepNUhPx#"%y8qzrYpBtON BI) Q6> !; VOPuF #󹹹pG2&y8 } g\@RH&Rq190 xtz'aЪOPh}P"s&z\Bw#ڇW#*3>ϝ>WxD2F흁d(Wvw+1[g{eySkJ@ͦ ]U(tP"y8ht&L 脔`0(Tvr-T WHvR)L!<Ȯ9҉5vBRAD \^Tz)_qC UVfV2AC4);O5'+kFݞ[[U^5hs'Es߫op?2gM o Bd{bs XiLbvr_2}zd2˅חB># B* 0{ЈU#Bd>PHt1ƈI&B!BlXKfk0 kB zO>}P\R児4@ vZd-g/q؏{HD;4J2 ',Y+a8==kaa!;~l}\<$3SYCl/ }%m H& "f/lm+ykǙi#3x^81gwgggW?`lǕ|_MGGe8ƚ!U  /7??Ъ0QuY)N\fB0bPY9RfV%6w{OϮM b{!TH&`L'j;ov.P5m77tgbc)J8w  i QJc2='uԑ /0?TcޓG7͹ P) ҃d Ѫmvӂ&r{@֨(0 Q$PBጐ F8oY*Uqn^*Qqh cUN1p ϯn}Bu[1m~\(oM3@I'4B %3Y@󑌮bٺE/HNf^=baakCOgd\<[EQC  1p?#걽KD~< f$pUv5.}Lx 7Qs䋈BBʕME2ᑺJ(<.o-$D=2beѱz7-V @?ߏyfH&0U6_[q(ByB0 U}uGH5\2Ns*p"fzLڔeJ}! !CPR!W|eb筱BaI&pUhVuA eBYhq%X6aom ' pz 9[΄텀0RLz*Z+`Ƕ3PC6_!0MSqzz*Y MU[)HDhA~"Yn]\ 9-Nw~;}_+|m5QϤ?;;'Q󟝝)<I@0^VmΟŵ;" \  !Jc&I8URul/p <PGwjFUɓD@ N?>(WV8ml_%z]zQ4yӣo;?fz4K8Q DUW}C v  սl;6ʗenUܶcr9Wv AUc{ظ'ޠ7|L@M}-B2tfl LPh21 R'>. x" eNPxn2Q=5LnsO} $'̓ fBqz&ٕ5~ydPr'őDxr D Dz Uh?{)u?Dd1 #]ɍq2,(p_2AacGGp™> gS>k+CC6(tON#K7oe:@Aon}=m<8Y IDATܺ02YT3BDq |eWrg.ǫV6D (FcxoD3d'HN8-憲(Fҭë^΄m3JcG;VY8/<_e' EJgR;Sst @0ǩ=x֜j ;< 'a)pǡI(N IªJX߸w-L|w\ * XG mR_w4 E2J7~U[1œP?pxc/겉Q<uÉŰdbtR-?izf{g(TZ-c*` 1i>Ozzǒ]/}ҨDֽ]B2 طs~t-Hj?ZІ7W(T+!{Uiq(o贏rX:i[l2a4i0{"B.ф<O0nYZH~\R|Q/AWo?=iz@P0Idl.sAײZw}YMn~=$k#SbBQ# "[=Xi7[cFamT̏WTVeP[!&E0  pG,O!%H?i*vGjN~^{-MŁTE/"LH8!|/Vo/U˫ r a4y I)efO)/KDK 0H+tտ'`wtc]~() U-{BBXb^hlbDl(Bw<9QN)L"^J( N 3 &@6]ׯW{ !>F'z[(ƨ/_ID~aj?V$PkxT! -p^E&J(@BL2wo}og󹴽Ѥ8YBI 1H꽛coOWD'S70MT!DTr2MSd`:'IXBKS q(PT}cj2~A8 ԤhDGEBG*c2fT$Prn6ݡ qG_ooԻF^bUljƔbI"ky"¼DN 9 HJX_ %R@JDPN#(dBOR8awkTbtwVz^V1h\=cEU۟5Fer)`vdK@"f$ń֤)bt l21cF _F-Ub Npc0!'Wu[ۢz@>_ry6"*B.% bG2ġ?i.od 7/6p|䁙[ܿ1ޟn̻͌$RWxIeA2!'P#hlZ7FaQN$̓ZU Z~HD;#Y ) 7E,q^U(J#cD'o:OwH5?M(Lq}*H'&t)' T';ɄQnYkIwZp"[=Xinnԯi7K"O@RD*=OUx(%X"?yq]]"<|лMC82 5Kۛ"j*N# MhCpb0(x)[=ܶح7{'ݓ斥).Mɽ!]D)t$wC!D'fI<$oDf諝&B 'ˠCI)G4 ڜxÉ@4=aWOە<09X)EZzB*ѡ1ٜ2˷ 7o,YJPzxbAӖ^1ӲJi70& ei 0('@f'#{8&rW_-ÏOLgf'q-DiA2$" LQB8P?$GOKn:V=yzt#D`c*dE#H̏nDjZ 6h#`TIN8W6V| 9Cɩ)f%H9O? p7ՙ=J(DDDJ0wA!ѷW:enE߸g4t=*.EN8K82>8 '28 Rp94FLNcNDS9IN\-k-dsv8؆`(8hߔ"vLDn]9quf˅5-ݼ\DѤG͇hb|J"Væp£`_8dtXR [PEA<HDalba O%>l%@9nS;RYYNI\հ)*@,m G0%oJAj`'lV(BpInbv'Y]L->dBw&XzsYtؓ V1N12 %L*>;;eX{J P޺՘pBØ('y81۪IB{" L q0ukډpb հGϞ:˛3LfpFȅ PNWHr@<OpUf_P9E5@Tٕ5޽ZJ4fsejq;.0vc{u$(oM3@Ptc$o$2i/0&FÔKG?ι'g׵'%~'||z<=N ",|MIv(|j u9$dXB{OLB8!Wb>\O&_:~`߈+-m<;g oDA}gUjG[#]$? '+{;Q(oU&`:nFqpyi0>MRIh1p /_Av2_l!5eDg}pko\VONĎV2uG|cHun~~ޙL8!PTv5RB!By9f&X 8uDh~XrfIϔY83 }Pk(VWsbaayqQ(欟/7K%/=VلbeѹxЖ ߮(U~gur{1dґ1dP*dJXB4,&:n(X 8uF# ~Idk'xw&O+_ͻo677.3P*(bb۵zWmE2J'28P_|mW+,&W<\}hg̃:vt=8j>\:s7v !LB% ]KP1VjL I y{ޚx6xŅ.XŞ*R91` 9_?ڊta!g/}uKo.?wZ&=ZaN!Gr(us&=}r 3yl[j8˽4*|WL$0׍Ǣ ! k륕1KM|vT@V(lɮH^nXR(PU}1![ 'B$W6\'őx4Lgyr#'RqĩGcGRp-߮fZĽNcP*P1/ 8Q=0\ٸ(vn7yi< & MT%Hxe+v)]4}xՑ0r /7J:J#z;*MCp,1mE`:';O&o?ywh˺E&KPxl*H31hb,',2S N2>\(TF(L枞/\ [x)lB& 9jb&Z;Bn'%P{pB]dcfnj>!$nh6ݖ4Љdp'O8a6G PXBPoξ`%H/ƩCGO/)陁7p!E̤ϫhg" b dW֌z2o7W&Li8/s*JqaR񃻙'_*f5, [J;M% ZnOD2wO‰v>-s7U*CCh/!F}40 *`:yKO El4nIť7QKHk _hd7HM!npVxiyٹd_*p^|L{ @=JO$ho+H# @Xd '̓cU%nUܾuە|~B2A.@&SC*)WV\F lqѺo6ZFUg6v_,.T%u~~FqF#x{-]k;x$iG xA,鉣GQX_/Ui+y3L0(0@@:g E~є㧙xBnB0Bnwܤ=ɢ Ї{>!T(48hIN NL. uxSX(*~uI{gs]_W"wnZ֏ 9'T/OJ(pIda9դw!JFLF_xrozxݝFk^^?;;fʝ3Rv ==+8AݤJb6gxS!+@,A!@3iB' PwD%@28 *m&2w<<2 H @vB4fzH'gaeZ@ q&wfs>jNjX2œP|HT0NM|2ݑhǺEO{z@p>ՙٶזptBjdž:&Fn!@xF)iNIQ~eTPN̔^{~SXT^I`ѝ?kwbڞ,ΡlQNl$tX[a Hm3uj `t z.8!'PpZJ&@t7/ޙd" BDL"Hc>!TF0BĂ@pլVLFR-FWɇ>}/wٟW%eBʉV+o)(T 4TE&,O D+{%sƆ]NQ|-R0RB!nItEČ0yHo2E`<91b2' PU-\B zM ;Ci0XeQV IQ"@g1(XäBXB8LIQ1f74I,򕽽ϔMɦJg|S:MXEF#I‰RKp2TaLk'栶75h4v $$ '<ȅw>(_3%~ -.4[yGw7Y2A{$ N<4{c IDAT N'\4M!()FvBN7)ګ@'+u'x{wK!^w?Lzލ?)9L}z^Qm~uh浑=.D!t(^j&T T6A{O@ u _u)e$9Nܼ}FVklب %BnUظl*DQIR>}Ý>f/MY?LҎXJT8lOlܨ\kM P߈"ҝGdA8"|ucedfss7;uO[v;v Zuy((WؓdbC84" zqRX[q:fԻە<3;?>Uߟi4/=S[^&30Щl+ h T\1bҽ#'NđM~t O/tqz!B>~SN:C{9 uJ&$pbL*(f%lsss ,̓cg#ྱ3b1#l螜 A8L擅˾Qr!J(`D!sY2!bр &!8@iYyô}8p2 !E!S6=NCEY G /GQz|5avSYXQDp/,9,#fܓ /*'N*_P'bmpR'/ NZ@8 Lq>( FV xzRcoһ;ɷ  h  Pp"g 9^I'0~}= b(mݟ?bF2Bv>jݢ3|0&֋Sh(&0M {tM?6Ǖ5b;ﻯ-.G,|vvf{esyǼ/-q%76WQs~ ~^y%r* 3p"yDA>1C/Q Kee Fam}5'~un<-i0;۵L3LWbH)teO(|wLȃ5@Bu4f `& %(v<1EV< BHA]UrrQ> 9?Y,Qdԝ>}R9T>e%ox-#|IQDeCm#$6f1P(dL7n "M)%NSk&ݒ^˿:abv?Ùwo _"&FODy8i9] C:$Q F?* l:'?ؘŲcyҳB"~;|rz F5;;O҉hZakq og~3 rdz˟b <^׿B|LHʯٙf/$'6C:C ܅"H}"i  :,bJ#Xg&9~~{ڭ >&`h6*M%Ê EpSzF#l#1r_zl%R{i2'2O IsQ(Fæ{?i `INLWYh4?+⥅RLzucťsYMg"{iciۇ@duBMu(R$k٪UM)1[=Diɪ?;(wby{Ai6 8xBĄ8M /IޤAk7EV@HN$TXTY-+`Cu 'aWBZ&G TE> i72x%DZ8ϘUFu{D% ݿLr3E!- PB$uh#c13u eɄDW.|N␁2@r"Bk2XбvdV;qX,/-`dLH' !0Wg atEN@HNVu .snvuFުmK˕{s9W9W9W9W|~ے{Urԩ Ĵwyg*&!z>d& ?:9OH!$'RsYX4Jn"SPۺ瑍Fceb'uԩ'&ԩSntO-X\}#mOLKSmiԬW&G+jAuo tx%]" 7iro @ɉi֫w&ʈ ‰ byiҹ٬?o@퇻'%㓙`FX@W2YpZ") :!K$'ҥ-3Q\Zy\Z-(,Ww.J ¥36bYܩsRZyV'ytӯӯӯ"SL.gbnnnOϵ*lV2LKtVcGɉi ]eP*-J -5^)z972cB433b)蟙?L~ $'bPngh+!3]aa}#r FX|GQbF =oNA^;DAPz|+S RP(?p~ RȨND,dA2IĴ+`N3%Oxd$!$'c-r ĽfFB 03FP a 쑜Aw:J&^)ܖW}LH%.]Aax8 &91m ڥ{`ڣvܖbq.v@YB!i fl d'!$'0(M`-b1Q{\蓝?9iM|Ψ@-AXDfZ\^t;t_'ZɒDPDyec2_Εۯ:}7f0ɔD%\Ҟs)CFm{®5Z;P5<9W?aD*!ޜvrs (.M&3ى4j[wVw8f}zV-ҥ5bX%ۯr^r?}gZik!Aұyr"a%H6pvjO}cٝP̔L. >([aAsnj[wU$jHɴfCO(C%DϢ-JV;i02AFn2K^l֟< wύ>-4꒱ ȼ(:%*DAZߩbyEfU(2pM?rjedBTYX[ dN 'Źdk1CXzeycȾpbme\,bul)3}qv[ɛ}÷$Z;R>_٨CŹ$[wF{rbW?>`Y)QFe*+J B\ t b.TwHo"|ػBtiX{]P{VFX)I6 ʰ;f [PIrErȚHQ`L2]/̡ݰG+H9ḟ($$0ZBX Ȧ.چ _k%5jGHw\=$2Oz>,UUNCօ7\aa7OvjbyB*D[O}lŝ9&}SOQ:ujZO $+T0XhFU yU&_Dq.حݮ>yhloնJ$lmЇSIQ wh@D/u#;jMnm7}ȿo~ݩSb| %D\E׹0a^vfFs9+;3/m`o ȣp`8WfN*{mOdksFq` rKG]YNH@{fX^Ztt<5 (pj坈lQHN9ՖB%W!-$6WlV +˕] Bp^u7EcI}Npԩ<,h$t!$'50TBBBP*-T?Ը~^)%;ѹqx)A_uRU&oB*&ׯy睄 sssSlI׿>o[#X*"_ѥSIN3FT+H9LpCbyz"Hekgcj2 s6F!JݣY)jr 1!L$'2W,w4֦Kl $'R;h ^5\0[2B~@7 Qg&y&"Svlq Ss:pȆ o2|SjL׫G{\V}y89Ѻ"SR28O~2Ŗ"cr >ͧk;5wwN%TШ={}d$7VPk3Kf".pfO'(1 7VT>Gy$'Tt7%fzwcb(WىQۺs[-lww |dZ=SătoO @s VڝbFmNcK=*u[gުmnUg#:L TNĬR+R`ɴ6KMP'cy&N+UVeKkqH*UV%(>$lp &ć+d&,0 ƹfZqlRX./^:W*\TYݸt4Fy!(ŒxO&ј @HNLLPZ*e^?0#6/ ( YlŲN0$-3@M\b˹v @IN@?.IQ(0CUB(+ݳD!9=) c$';WB Xlb(Di75:&.>%BlNt 쒜Bg^țO|aIN@;e bh(H*¿b h!33.)1İRBr&?0s$'K0PLQ&Fx00]+0| p} B E&}GP<BrH9 p2H Ť98$'; |'ĉ$9@)]>IL%{L`|k+J(b9B r5J') 4 w'F3B̖LdS9W9W9W9W9Q9W9Wѵ+Z "p0n#a[`HN_R33E!-KrQ6) g䔐lk@(g &j8WWWWTTWW0!J(:lrq H ESLsQ>pI /\eRHeJ o$'fC8-IjS(LQLi 9viߦQ%R"U) %$'Rf"4\w< U@ M=E!-< U@M%E!-Лn=E?ƒ2)zt-/lAPIrȣ pdǟ'9R#\w3YR`FŞEfGS, `ɒ1l2VnB<)蓟$'< %P$'k+.y&K 0[$'< INZ.Ȓ {O\D$ɣ"9_$U:Oz AmK1!90KfLQ% L+ɒ@.B 3=`INd\&?:3=`vINdV]aLuoNLDxu؇fz@HNȠsK 1ArH@֌p[f@$'DINȚG$? yfz@fHNȠs3 1ArH݀W7jY\Z[](|fZ8>n\^tT@ ='?E%bddĴ4_5?('۽{gVm;>hU 0Y'91%絤K4w6+RB  VL]SLn{7QEeT2ftu*Of0Sxith6Ono4X%[Yh*IW[{qR8Q,MYOBP(UV7.vhl?/X boz5|Q5T^YMQ$%AOqnb7՟T\ZVW=O1/FDHcFu xzND3նm~@[!ɉiM'X8M{ߒUT<`% "٩Վ~\,[Fb`1W<uOgJiۖ+1Wz^*K/WAd *Ź`zwmFުmK˕Q껃`UcC ;uVwߍ[œ蜫蜫蜫蜫蜫;3V{4>;,+ /J ¥zѲAcI}2S71ut^ :5' ~ttoԟlHfK<h'91RiTZLemq(~<`ұCsw$t=hρ;jwMo ssssss"rk;WiIr"qCwťe*,,֝Zǣ<Y{5wﶕL S1ܖxFVWV{JyÂh ImYu赜ZINLG6(AQ,8z~OU\Z۰-#PDyecZi!ޚ;GoۣνO"3яz>?U#L'*}`s7rgO7o8[AfǝiyP\Z{2Ss(ť(~4ϛonw^5w[14ZO ҶDWr\Cs1XI:6D Ld6jP94i7EswP~b|ف{U204, 6v*mB]"hl?wR`E&1݈ql 9T? nzeMszY T暙qj6Hճ+T+ڄDԶ;Fc;_t50 ٨_mllLIgn|\*z+٬?s K˗քMEWojT||wWAYnKʏ]\Z^8K2Xn.Gᗡ 3C$I8F o|<<Z 1Xm>G ӯw б2/uѵ_ Nepg0X1D LŨNLMaauf='DINe &`?]r鑎s|~;xW}oڎ3@D AQ@n'Gror8;_^?{ću`vOnDToX(?:ػ魾'+ܨt?=n!^e\`s/ jN jfeoAs:t߱wn]_ Vv~{OwNxm~P]z#?x.;xP]tbz!@Kr^:[}g{܂0eħ%s޾QFĆع@#wpz:^?'jQ 9@nP,zi[/t޻}kk9T¬8e˯*=*_7.e_YnithԎp yw5<<|8xLOE  :]#K>}r|eyv;N=:n#:]⃣gDtNW1yv|_v\8KN&j$j51H[ ~ԱXvGM/774_ ';?./옦y/'8a1؉gԾQ{}ߕ痯&/wW߆3v~Η\q)5M0q & 6-7,_r^krk8O7_. ϡ޽WN_;{');zte D G55@HN9(wcwk7wQF.>E;R(wސ[뷫{SHQCA&9@\樭's7'twnit@`oZѭa'(w ypG}~vuOS!@M}9aC{{omZ}QA ^=VWշO~|7~:Vm;ضSAW~lX 5$EGrڄ`ލ-0Q^0H|gvyBQe]Kiӽ_F2ntV~c wsqPazU6BQt8]wqF(c[+7o޻wsg76޽W48 ,$Ժݜ^4\)8w,:޻.? NO+7Wn^_~mV9fQEr,׺~U >Xlcg=G#e0?x7Οp_~=|7[ni/w:9ν/nw@j5#jdBϿ? 8= 8~q`?`?@{}paOGVnlVvt2 AxQF>{կ~7/.8sAe2sts4O?Y~[_@ ʍʍç_~8~ QeDIN%9$JrH( Q@$'DIN%9$JrH( Q@$'DIN%9$JrH( Q@$'DIN%9$JrH( Q@$'DIN%9$JrH( Q@$'DIN%9$JrH( Q@$'DIN˗77]xa/^xms˗n k=k J0 ɉ]g^O>}ۧO>ǗϞ}㍋68|^{<0 qS^>޼v-ǝ4Qݴd2k8 JJ|7J_Ę!NN|yg/oǗ^~5 ^n^|]K~ZpvZQy$|yg/ߏJ߸xMENHqrg/y xϚ 2ai71ܼxD$ٖ٘Iàt47?Rx\pG/^>ŋ>zO_>><<,әv;wM9wrb=*}%*=o.2eRx|-?pG/?'8i>9nY_;ۺOq }? n[Gȋ8g;|tɉFcj+&=tOxyq@m{ݳhOj,|VeHs?<2w3&=ɉ[ʿN]<ӏSeZ pЬˑV,6H%;HAn g;$grt#&:;Q߷NvOZ`Dv]L&{"!n@&9jNn ~^ ŋG>Mt:ßO^‹.e}o\pыq̧=x1ȧS"=X+(hݔ:쵬e -Rwm(zF[xBc]`\lmmȯ~(& bABgN<߳}c!7p&'IzEC JKDM*/[3{ZMxG=_™?oZt῵5{1Yo=) m~G ߶?E)R󕟉hZ|T;rd9fmM`Ed2A *ǹ9_s]Ӗyߞ5'Wtm7n"0cv3r+-ɉ6qmd$6M[t}/{g'A 8wPVE+% hM@0M ̽;L&Ťg "mCn;' ^ѣR"Aau[sWS^1o7 R) ],;1xBurR"2G8'gֿzѣϮ^p!16݅sgENM +mMb!ug2 :CITpf?Z|H_}-rdW=>ȱ&'Z3a/p} qt̙?\[۫!Jqɿu׻'M +;O`Rs<2 ZRx cQA Hy?LzE C <_r"doG)8PKܲ^01K{Ǜ.^<۲fZ & 0MD3}&g,:ScO|oŋ6<81$Zvbp/NRQ܇RAe^ 2&FJ*GOwnK5q*H=(1w@FJ1(0N`wmAQ0kZZ!ÀWxp}7N@sBoׅO9R&r^kVkODZ-dZL*~Xr`\@w %~_h7N|^.o++BT*y:L]اο[Y`Г2l<z Ϫ`I:rǑ *`D< 鉉ŕ(w?z+D5ShЋvDsy>' ̱Py_Jf2LK q1僺RW3] `WxT =f&MpB!p~Y\َh BjE @ĽI=z}|餶KřR0^W0XWz)X&810aDP/g-R\ncfʻd>nj}P?wB~tRWOYJuU':~A쭼nlBz8j+T3X)8YKp1T7[ 4r}2M:rQ[7T m@bfO2}h{/*մAZ.P/ҜAt~pPX^N'̧^ȿ8\ƺ:x]zU38*81\t20͡&:b98wVbչ6x(++33Rɬ10%&FJi-T̏?0z_Cw:33+g2U'֍@= o`l E M-veϔ\1hZx>TvQ w?17͞[jԽWtJƢ˹}B7Plp!e)+bNFy 0$ N +3`hB 8Lz@o'崺a9Q?(䊺b\,gd MXC9. Q3svY޳cqtzh:RT?X/ճ`U~=l۸C]/pFʺND@PH<Ɩt 1/ {Y[nPm77geՌAa9=#7lB)"r:=b+Dz>r:=1Ttm.50Mnщ~kb{ݰCUרަmo8m$T@ShP~P~ڨ Mw :fa< L0RUUtߥygg `lHurZMZm#vjN rEL"AbaGY7{x^cHB!%\y{eqfffofffqe<>CjV2 /liD_jVK׶4z:~ M{[_:tb%zND}` ɬ[򞶽⸑<$b<+Ahx%϶UKU>W=LlOW348!}'Tnvbfv[hYΔHQszaZ)9_rJ_wsuڵ3MPChiwO ֱ>mo8o$V@N=|ɸJXh [&؞iՒG'dS=L&TW378!^ȗN̺J۝V䤶KR\ncV;9{h'Sj\QdKi+o- vma0<7/ OJ0I@t^oN:E'TncbXsḑ(D' [Gࢸ:=auEYjUK:ʲ?3RٟWx_d$4XS?8jUUV?7t,LsCHt/+zJ8 /b`:Ppޔ09u< NFN o"" 0Ap^qXlB[,6vh5e4Ba` #';_Kj}M'[fΦ45Q+kNKTncvBd899 ; `0r ( P'@N@"8Ep ( P''z&=q*Zxc#%b{1}QR{BWC%ZRy{1ڳpf˅(8'󥓮-x9xf)&uퟘ(JwoG崊J:1 5E"["Hbvj'wy4f6w}pIϩo㗵n IDATk*r5VR5=6j'}mTnCIrW3=zej'y}jCvd!M7c︌j5fL&DTnٞwvm O1:%LssH}'a6ZusqI]LE;_uFj]߉Zm-zz]d 궨-jͦQS/w6>pضWw_0p[U~]iMgаi+ۄRYmr!Z{2+uqA4#|L6,'rV5X39لN;ie{q,Bfoc;cVϥvB^&&wtO"8a:Ѽ̛ FHk/w(Ң㌵AfI-Yվ^=.foYn"e>PKVn[$dL*|P5I>R8Xb7̕v4;lM).N;#)nZm,[NLkWW$͝]L m8j!_g/]Utm( 48-c\)@n&wO48>@Lֶ3PZ=؁ߜYeG9cDs"m;ZP';ٓw76d)Y.W"qvFX|6B&-o`s-?4˿`œZOi;#\}@ԁM2ޣ꧟H7wvO3m| 8118}s_X3?8Q/:V }>MܞipYm;8Z{2D:o@;'` }Ci-lوΥfvpb:Vo3:;cT[r[ z[xOP'IB.nA1sxw5:) FOYg$dzzaT:HQ^YH/=) ۋ&)ja5r9FgsKmS9a?~mm>\,18X*8ubևlqxv-d\{!;|E3cQ2o nn[&|tzbfE XnY&DDSUhmBC&OoTʬ6MOOמJ.ߖrW71 s]WNc7 z+MƩv#z:_76rفM8X~Rq)3~O(s/VIc Ey{e5ulꧩ܆䪍fP?6gM#U¸X?9WeŹT*دJu[K5|V3>d\{aY{R낽-zCq,z bnA yQg? ol/NY\.zo(;DDSÎUXmBCNNoTʬni6ړ]ɥ2,&411 ϙ-쁵&nn鱲GRR!RD![ K Gř0OoD6KTg PKv!ۯ ӪmJ%Քwm4y<ʩ`Xu+Źi q.aT*mՙ.nk`Y+Vlnjf:d!d\{YY{V-z4:D%鐛;{cԙЏ"$CCw_X=ܾ+Ldn A4858X&44L6y6h=ە\ -CBlrk (Is:EOum3&^^1z~YLopM -o,LLLٛa\~NO,nnwza!U*N/l)\4}!jv ; uIc.y|EcO2d|y?: ߩ(n۽؄깹*0M (mNJF8twz}י M!+);Nk_7e*eVIކ=H _ ]B|LD0l=gy{cﶢ&@~pP(,//t^23ml:r^3H33Y R}OL82W8Wݖ՟fNjrwFV!օTܶ)&#NX#]l ΄zIR\nccvrRlub ڌZaytرƏ W62Ʃ=F'` upBAo#=>`bffqqee{{\.e:_^mtHz7+WORnzLvy7vpQoDEoMԊ[1@t؄pwgU`ɨRT[lubH]XQjp"?(e:*t VjLjANI⸽)Nœ\͹^hO[R.xz. զOڋj}8{:C%D* *0\8EUlq*_$edq+UM.A+G!]W*h>Ə2TQ]9h]:(Nzq׷0g>+ʃe$B_NNNNNKayT':@AݨP !RZd$~(AHݖ bzxn$ņPΈ>D: yMp+m0ub DBEc5j5'e:zYS{2ZOi1[䤜GUJμE[!Yܽl$t'pRL0e.^*HT{뫻`njgu;ȋy+]XZM E)uaB>D.jtmrYn(b8A.잶 ܅|Rж]AW Yc0#2繻*y^VvDԞBi411 Kf}Y)@qN zP.Պ _ ^;/l5 m -,q<ѕ.$Wfm{(ٴpp ڔd׃ug&5nuq0 OiYKYt6d_3m:CIRdAKdn񷖞: JmcqQX}ݾ44@SÎ(5~,pXE=)hړE'`up`yAF)y+rKM\^YY lrD1YɄwˋa܆}k^xmiq Z gfWVeցt4/ku^P6+-k|崲fͯ|=ymQu, N7'G||a]^ՙFtEc`+5Ӊܝ}@Z$'?펞XY+ &m݃4yi?RRܾnZO~ $[8a MYm5; bv[noKpL`գӋRk{L<5O㡥 RpYQѰD"sҹ$q dD{wh-$%ze)$HNJ%2k7H@d N4+o%8s>}*F?%2k7VE@X$ N%TicO֨HdX xr'4e].lVvoR0 L$+^ @@$ N4v1?꽩 klҷogGPA"sNKQ#w$ N}dv5]ܾ.4:fSZ!}0vd N1!ϴN{w"vV~r|bju%\8;;ixD?}2XRU}pz||#t5{N4 ߿iփ;7& k$9Q}mY`5jjvwj߳bA,P0?ێ@~{só'\pw{yji555: cEhbpeQ||8$f { GA.^PF栈>f "7rb\Csϋ?Q&25^v6^}|u:v__{/V"/}~CLɘ AYHe!J~;>>}d`_P@M8TP=pN/4auޥ/S:ͽlS֗=_zhB/[qlBٗ{3;ON|EpBzBʁ)/LWN{D6B;Z_ `..hm&v*EpÌ:XQ,$AAȃǘ#'*4\x1jr&5'd MZ[#?ӱr?XQ,$AAȃebtAhbT/X>0NNH w&̗v|6v1\T{a꽛U_ܹy^.V$O\D$fo|vv:@`LᅮNةHi{wj6.?<$!!dQ,տ; *%aI'<ư,^; "$gGb]dRwJ +1`<1cDs)@N0F$d ɴNB$CDU IDATbr'$IB240Jԛ܉$ <+y' Ƒ N'@$ N4+f3D0VXaEijkW!F@<&IpQYmR?&w+8h)R# xR'f{ ,'O$ N$W?`ss-Hhٞ'$ N!D<\- ٞO# >9]A ROI2 RR=&w88e9HlOB|#. =OD(8e` '<DY8`P7N{xr\febkQ\V"quMD@>祥SQKoJD"Hݝ@(dmD&F(8'hV"'# x48('=bnkL9E88auD"sҹd<H'H$2,e$Jtfe] %+7(N4+{VHd2PI`&Ft ``"@&L929#ɓa'ADez `DH@ F J0$ N$2W(c _y w73n>/zdPF58dI8Z\bca'-$2J'$Hݮ4uW gvd$8!^hVn篭SƊ2&A|B.BѬοzm}_h N$2NbϧEYkݰD"eW58 IpBē^B4;^4FlVn^%Hd6 I P's ; ja3{7R^"z>u.$lV>ݽ)qu톣-Š:XQ,D}dLƤ,ᅰKo!)]z3yBx2<}2(4;;BD"sT*5ui!BٳgGGGO#m K;D;HA="TQj4(n9ze8>!BXe͉advb! 7U"4)GN(#QK$2+?Ӱj>ʌe!/a'@Nc[8)AY$?dNtj2*DR|ӆފę3R%a!>z"'dRdl6@.؃'9a]<'2@TXq0 }vZ0c  - 4 B$ L  F ҥ7MC`RЋO`C`$a' v|( F ( PNTn+f^f 0S^l~(D"vc5;IGNT%"D#'Աs&V+a'd9pf'ypTkb}'+nQ'ypB "M"-lNݾ^l!;vH$2gOodE+[.v*QNTn>Fhd>X%8xJ( !FIՎI '! B$. D&'(H$_d~`?8\-$Ne @ ҥ7-F #!8! Ap[! ؒAlmf٧RSN'0 ?Zx.jfFCE#"YD'|bJ ҥ7 D"hVnZ/%kD,  AOEe͉^DWs-S`lͽD"9sfj*55%GӧC>5' (<{N4n# J$I!Ī έs'n?SeWȬmV'͵;L,2axBD\Gjxruj2 `(]'T3ųW'N! bxEDisR֏KO^% FQ-ɃώMu|Ls7IH7NS !:3;˕դU'i'N{2{7U-}3v>'OU#D\cel0lɃ"~zxr{]ȤlqJp=8!KW*oW?jVn畡%b DvBkN!+~Q\4sR65OSYٽuh(1s%˜NI10W^y%$6Ko pBZ(wDBq̙O P$2k6q|bbs v;>>|qZe.d5;`}j 5%0A0&"ȯpNPB!BCLJ{mZDlRB{w n\|< `<)NN1$ Z6ԄלJ62 /$2kL<|pdBUw罇ƛ9ܻPn{NR a3po~v*^dBxrZ&aH$2kV5W=BWU-lz4`)Vf0`hL'W U!D|oO#;SbskL~Z|xaVkbㇻj+i=}x\ QZ "`D.8G&1aQZbrr6{tg:+B[^yAVհ~\VbsWl>E# ˚ͦx&D2: ŤB]09k%OS## sfѪ>9gUl`,(_iB̅B><=,_؝ Dsn14no E/cxT PO>y\VERvpý;݅DLJLLeXyLNEC?, 5o\@55s'۷zkK()'s*&,mnhiiǻEŻK]=yh '7V+3 BLɘ /D[woGTvA3DAd-'ɥw-+tsQY [zťɘ)k6+}D"sR6&3s'NaQDD bdzW2~m;s%Peֱܱ$6BlVn_}^S{k֋W+_gf_}HtvL $ N\]!<Ȭm&߮Z{wn|oFEv; h=pFqϩD4:%W?\Rlzw]播#:bBZ%'Z{wZ_n2SvBGr?XQ,_9m}ऐe1D[\YM&5yq=?YixO>}^ZZ 1% YpB u|L_>Ϭ8>۽W[읺eWDPQSגUM\]qvo#JvDGNL9u,-hr6{XjS1!-;A7!>d6W\7*zv|&^5[@1OF,v`Hnnvߎ =KDx^;XF/ xEH\UE&h~HDrD Nz4v':?~ЏM̝&`LI xoWnUM/\sy h=: ώĔz1<=Kgz݆փݽcͯa!H@ T GN5[w q`JyX!wFrb^VK! {_9)) SglqL 86yv.;$Uw5w1sdp||⃪x11P c).E%8Ѭ/rgPm(_+&:>>|qZs&SЮ>>t ނb6$pfj?jX!D^c6@1 V+ :^Z/2!(+zTC+Dcm/KpΝ{T[-Ѫ>Xr?^zT^C'䠚IL%%<399aM0Ƙ `Wͽ[;ꈃS3hM9\.câbחU#f_F!ŇzAM2\ [#6 _ O C믛(bsLcY JBi*D"vcIo)x2̮6+{?kVyJ5﫨{F/pO1z80v{gB{Frz*[5X&{-؄Vah 5왜^yj_.攫PiG)4@]ܲM+k\Ǔ¦_'wY{br>3^ou7tBSk7ΝvӼf uԬZWje\IPM{uLɥb)G6$0}bK9k>e&_nݼ虻/;vZoY}kv`')cN':8zM39VMld3^Z<{j 5ZrHљtM351@InrvÇV~l{qr+s,mVSJ\\\D[Df@h׎:0`K3ެJY.EijUv>*vN$2,e5ze*6xHPeMJ,^b괧)x2̮1v5uZ+n!^y啰雈U4I;.%w6Fi+cV . ,5$ypBh;guuEl"Jg?ݣijg?r߽Ï@_{\n utB4v Q=zK&Fr(Fi jfKZg?uHU룯~aR;vWRNQf٧;ņj 7 H٬<{.NN"Phyۭ7uZkŏJ}v.~]sl^">O!ŝ⎥_dlw]92k q`6 _#˿ngϿ3"21 Q_=lí>gwˀǾv,g W3 ۿKd6QQNah짿yQb{'Dߕ>ѿ~<3*֮xl^ !j\jowh&+KfkS` '~J.`}nט7_E?|Hs^kͭͯW3BēdvYFc8LHdΜO-cY@VQ凟l B֣fowkfc5?Vo)v;z?|?oL|KŸiB0lKo`4+{f؉@XJl/?=>Η=h6+ϞYQ|$ӧFC!2k$SY{v?@>at%MB *hݾSlH$Q~zQmoי&_/B;Dg?ݣf+}NTn^ ;I'|bJHX bޟ/?MgZ=4c@" 2L -|śI1Ug?~Oyu;X:ۀ?N4tM̙3BTbCU"vc!@f`X\قAc!jB ;nt7!vG}ǵFfS<}`$ {p#e!ً4TDqiIVϫY}kh~dǛIti4X&_kq^/u>3'}>lgGFfM8=קGMSΧ&~N'}~?>lڟf߱e{'ݓı3`$EdǛITfa'9v#|a'K7NIGϴ |ۖ xOҙק4$S7d›I׋RUꈼΧ?g~:_ ''_~_wt@"젨vw 3L>^u>6~H>qQ6<׾/zF/~<d}AlGτħ;P65Erqz*awd6P.|~zXKDc`k=5ӷ/F˛ioo>11g|omv'IYXݭ0A ; XlS4% A.U5S-g픪n؈d=bSf n;Gܞܛ?AsNUCX|KapLԸ@5EbQv'IN)mrCG{Swm> : NaN%z;GlĢ|غۯYBK_ֹyߩ޾wԝxkYӰa׺OapB[ǖ^_kW?Av`hܙJAbQ}O?R> جsεJPao h[[::^_j߻UZ!(mS댿SO ffմܙal{zq>884?#Sm:!~OHOr8Ϲ9SxzDDaG;j<-n(aQA-H,Ӆ@>wS'CsKC2{""AH'pʕq$aW*/ݽ0/]u'kPZ IUF8n ]\u(b*ŘEXr'S[dv r1mUFbzC8,VX8!3ةd|H W/r~ŗfoOXe YnvrWyߕ=v5>ɍzp/=ʚ5oq^Gzt<^d/T} ΆD'2?>0mQWAJveSgg\/55bAL/?(6CԂ;:Uu`nHǯFM'Src#V=ڊۼ277\E.0qh*f$χgY'r1AN.cZm''Bzf hFf2||9GoŗZlu$yTjC P]Z[[m[v؉%ɕL$גO >TA kZX&{~#Lܙj\Z|YM~l'r NX,v 9rIK&br;eL$'@6=G0 P$F$ @mھ}C>w ? Gw:XX<[d  U-H,'@Y!We$a@]BPZQ'TB>jX*L >A2'TS+sn ;OTJfA20z$̜|ؙi5 |'T(7;8[jBWA6bˉԫ|"mm5CYAX!PMv=zu'9(>Wn;n502E$>fDr$Ɣf6I$i90ԑo!2x8a)zCLH+כܐ5_/dTX ՀN T5aڵŚ#4B+z1_ly uPcB>_vs[Zo% :x[e 2ם( t 'zMĖW?vF Ç"P#T]|yq΄c7/u z{AQέ[mE1(R*x۷o{d>t1_ L|M"Edӻ">E?H/uN{d<Rv0{(W'<[${=C˩:v洪a],%[?65H0ͯ'?4oܒn><|i_jn<极 .bNPv\L&|1C]_m{"rͩ;ve$tִؒͅuiD#", `<7$9?LlODޡӶ-O-{6L&sq\6O@QT50ۻ7wp$=(DOzflq3Xg\_zybi̇֡O)*r%E剈<0Y.#>ϜP_T5JӒr> WqkS/%o%wh9aN}x6B;,;mv\3m5ܼ_KFDP:H8@,|ΆD,ikӒEAGϹ ,#'gdBֵW-EDw$#%0w&p8|ݱDo럜\~ת<]w%{PoR|`Kږ5Y U Ư^Myfj-5s* gY×N^.EO\8N8<;g"2‡YU+5U:"!bNfO-vD_h}%~ƒo|[e=rz`{%]8.<#+@[L 508p1[2yJ1=DȱyqıcζF MZPGhW+}Z{_&cb_;"\2N@!>P850ػǓ;===#jU˅$qK'FcLHTBJ6tvVGgMvW5P1fU`{Ex\-=ਾjo$J퍗b=s3 u7g\~ol tOZ}9D}%Mz1yvdC>큚w.D _]^Oy'EY!5{ j[j\KGMǔZ ySd":=[ܦ:jNU>\EE3paͪ;#wʃ_LXO2;r1`  Du}7x8rStV34\"7'VjO4'1KG fI'ҳfi`mE.0nQ8he-#N |ıcN:ԙr亊J2SHfн(??.+4ᄈXslM%R)@nҒBj9iiO'4`j;Ѡ t{X.{*5i *,3 FTZ9.J{ØPS!-({Wo-&+Wퟶt>O"~2W?m|o/us. jLf 'DDbnINְZ3;r٧I&?[H-u2鿼-eb6T< &DDB|(7#\<^Ulnl-K&']<ŏB?Otw (֩6-%{iyw:~:W7ED׶7spx2!No[LN,X,ELh)It"|72̋鑔 l: x)UfLVggR{OeyU3^-ZL~ k?lLJ/!}._ZݹܜG߷? >[KW}%PiڂNŴ{ X7m""%vO.o\uદ&GRx#BD&ޥ痫ty# BKCX^m4tzIhW8#ԑoPVob*3BDM;sY׾RQ mJ?]I봬kh3ZY?y-c66Bk>آ}qڽjq%᫔8ۻzsADd˶Ak.>{hB,&I֣E?9.3'j@!|ıK˵sRO'Ϟ1k9lAm2(F9tΦI.^_䉂h^uu!=y;W{O{4\Ӆ^P`KQt%[̦?oB|V~,TV?BdD#-H& ᄪ#֔^UˑvX^Ʈg7־Y& \M& O~?Ov҉"-0Bn3p?`&[/=H<,KUZjK|TْNLKƱg7 Y-HSßƓM5v˩fZ`I 'B>OmKUˑvX*k6!"|v쥜g-6P]E 'vUn?MM5^5陒|FEf*zi/T,*9f3Bh\D9jCUغUdMOnUQƶgL|?9Xuݱc}i[+E V"o= N@S)X$afN–':,ڜA}P[%zVJkɗD8dbMU?~̷-2UzXQb~?צ^-{ (t/<ȏppڜǎ9+pƶ.g[W% ,_hvulbkM(fԴ-OKl+cNP!]+]jD=^dBD>}xb4B5ȕLĔ7ccyP Bg:ʽRa Bim_oaDY&PURi[bO'gi+cP>ޕ *<`U x-Oܙ2ܘ, ]3M''1U'cӶZP6_''Zf !x|y[lxiw/L%Mʍ$rUͳ @M*k( ׶]&ä"D<,P+ D\e ]|"AElY֖gَ\.չf1ΓLTYt* _[͘4ޣ ^\_}E6秌*aWC_,iq}|y1p~ȪvZNZM #tt*`nݥilҬ\X^W#&k:I,a/Hm{mD]捗+vxR;39?,"AǟLLḎ''ɐݱc}Pv vY2(ͣHI[͍\z;JC /\X84qcӖ'f@iK&fUC֙6Qi˚U>qPXL&:ԏz3O-N, WN~|Rөj9Hi~q\{esʕq$ȣ8!'(-Дɴ{[,jv'nt}z깎]96][_ 5Z4ԅ{՜JM& 'Zh8Qv ',vW癔FvYeR:;8ULbwsߙQγ}Ց%S)SPEDM%/Mիǟ{/C7kЉče[Zzs>{(6ab#eռViH&Dw?IOTP5 @rC0oVb2!"}?H4(;Ä"SBLFt۝nUUE$ j `VB]R<߶#[xpdOˋ{r'f/.Vgf{*Ǭ]&|"" Ey,3 (DZWv "BҀJ[ E&ƬKk9,u&e 4(;"vw_xBqe>(De^Uae0y%ػ9Gr6dv{m6q-W? -aT[z @|̷`/W>uo1`^.,JepB>7RS zyUTN]zT -Ǎw-zDScջ ۬~h׼t+0]2ŷ^ culzA|кgpB2P޵ xܜ8̆t |# MYuumIލ!.%W[ɤD i0/N ("":0lX2Q(YUI&/LFwWD"Gu=t1ߜ,;Rh>x:Yj Z_B'm@<efpBUP^:+""333ʵ' A9L(GȌ?-sqٵ'r\#Bǟ{x9d m׊Eͷҙ+N#jAM^IvA/LLPGz{'ۑCB G11uqkް!=8Nl@}O"0d '%wh_ ̖L(!7,drɄlK |{QM2 $! T6?a[rv%*jǁne'ՀH`0#P@OʕdɄHKm2sϋ"r,×uʬF(VIExHdfL!NYHR&N8]mqpx)̎ zS Gw;{$l߾]!LKLFX'ix9:`gpBf dT%غu(Q֝/?3>'|6E$wW;i['*KXtmZNcWCŚrʻzs!i˶$$=Hݯ=ў̪\eeo2ж` 4H6\wZǮ-".}zlٶ;Xӵd'nP0'7љ,B hw/Q+4@b?tLUn/^8eMė7}-uV=jN$dep"oj mW#W0G[Tͮ7n/;;G/&͇N~GLDJ=jbFŖm$deN3ou?^5S 0-G?ZTժ'H |o̶Ys˩6צ^K,OY'2I53'Nͬd)y0 E4Vo|eS 6mx\!zE&9_p6$6bkMάȶI:`?pZY\4l;]2~0 HgpB[ifVwKX՛߼xA[`a[P ^I[)8:^)el(}ouv2%3x8!r U"4[6ЇÉA6tt&WgdRCE0|8aqph~ =={{G 6w$]^6F`""vwï $(d`qpxk^O71&0 "vpL7@"DխK(}N p*nKqsKg} ueb,ΡnGS͒[ɶ=pfiPQ $:Wr.&~K2 Ԛo~~Y#0 hy0ވ:y[Zy.L&KJGn(Ķ7^-=#>Ä=Pr?hInSah%s$zԾ&DBj7OO0H8!* M@%L(F 'B>[TD&/=ʚ5oq^Gzt<^d/DsxN$Pgg˭dBƗm.7"$ss*ı-A Im3XRZCJP{N[5$ݮ(&}vԸ3xK!2H8a)"N~OÚmCUUK| Pe+ P9O b!dpѩxɾAǛe3ǟ8ϹP^2EC&Q8bqpx=%' iK O$EAJ3N8!bw w;" jQ:YN>ܛ,D0mOJJ{,R{ė[ qW@E75 YN `0Ԫ0js`pߚX:@D"~:+\U\iUPڋʏ~Ux'Q! XރSLB{̴ @Q@j=Dl4N*PVCaT\5i+n WH]M?z}n!ЊM[lGZPBGOux$WZ]P'LN?X܄xzB 'Mشe㉃W||P=x)\cO=}*HPN{=%`ѓ/\-Os 8 (ЀJ*!$rT udP+W$].#PSڐ,tw>t1_lܽCm֥Nכ30CbpBfK&EXPI,a˶a*9}6>bb#r*Wm(ChI@/F'єhBqtt=[S9fE:5!pZ,ͱ^y _P@EU"K %'Ҳ Gۮ`,B>j&0fǖr" FE‰+\7<|~, @<j G?`v!S8Ϲ 'V~,Z!^SŖO}kUѓ4>@: ^:5tj-[t TD˞͙vey-ˈ0x8aTՀN IDAT֫#=Aq4X,vv7("AtL:ʽҦ'7nza"POԑo;1 : $ q2ɓw`D^gc߻odBDᷧ_|oe(Ç"P#8j6P]L8$$8:)Ԟɗ:4[^:ؑU(_;j8;RءhѡП:mAǿpVkR BMV:;jSDbGU'DO8gu㴼F w7T4|8_׿gyE7<9c>ڭa5,"w=2Pf'gf2 A8Ϲ9?*4&V[k"lH?Ḟ:KVsz9F-TFcO=_*Lz7⋖o=6;~Xt ξvbyM_Z>ڮW9鎧u.H0\z#Ԗ{^q=C˩:vL{S@6w+!l&HxomO^5q'94,)DL,ȚI(7S{z~=| m'! FhDDO^k>tF٨{2,'94lsiGN2f`n69% 0{˖5;""៽tY%Q|v[jX't۝.50?PG'?^6ynJP^&?9^pofZ]̟ N#>f7`"XFQUUB*j=VFĐIԈ}{Sٺ^7=]+&%P5 'B~ON^3X,B- $׈h"-9Zzj+NId3Qvi0|JHN02xY&v ןIg?ŗV~ v׹v_  /rۋw'>[+(! JHTDDrL _)ߛБ&PE!Y0~ݺ̆pBOD̺ѽ>/ߘSs}Y-+@$) 3r Nȝ+kufxem^a""oۜmn]Lt՜= N9{ 9Dk^L-"2_G֦`d_ް#$k>V35,k"P]j`p [B+YIDޙJ(6kcƞzufcs#׿ن?/o'7fW[zi8*"៽|Oɽ+T<  @ENȱ"Ҿ"''#MM+1J y\bС@Jg 'sʕq$D=kY{їHt;?ʲF|ڥ ҋm.V0'"{e%wiijK "w}g'×|OP޵,  DG1BD%ۜۡ<—ޝxLPWj.!"2=XЩi+뤈Ʈg=)&mЉ=WHwDt 9 jzN S-v ?a#5npsԑ?"{zt9$,2 '@ d#fWWF<oDLP 5087dtǛˠ3=<$:2NHN(m;UP@ܐ,pӠgvm_&F &B87ԝI#^duŦ 5nPc z)9ܓ3x ʌ9E#gRuDmiaO&`pBUP($WΊ\dqYUUbԬV=TgI./kd{!"7G|x/2SʈG$A lu[svo2_ ۷=iB0epB Όs[ݒ=> N;+DJj;GlԏA;!5P]97b,WjNFxOh[۾'.=jP8hޘԬ! 7,7Ɠ@=17l<WCgsTP=R."Mؖd-mmI([[;'}ϥK\~l!nlɣ>[=U#F0 V>"!|ڪZvP_^*uK%}??I6qN4k _I&DMG8Q>Ld2|&e/_(e'z4 9o?403N->aKxb[!*Cttik8+=# U[QA N0&w%dp"MdWo/Cǿ|ܜ}ӓµxrZoB6@Rufg@_2 -DNj+u1VկBp",=]IUzx][}BJd%Sc}.8B׳yq2xBjekl`O' /M˻.g>-,T^F+/{}HEߣ}a&NP{}F$Z}{k~ ѩW+E"jDZ8q3pC n|'ﶚ[KT R+[{W1H?ziPQ{M! ֊?GӌfZ.?Oi$3'jyݗ76?+U*T6r C<>_k&| &2뫲uʮq F%0*]8|޴_v_>ekčEVÞk[@/.XoG϶ʵcj*&&]8|tn&FAC&;}L\Y R寓nLgN҅ݯ"yCyTvi}W Ht+?~˗ƒ>ʥo>_Zy+հ6L!Sj‰BnnXC{2)Ht:W(B?dPDe/v0sr;oLSa^8+:m@q^O+jay Q>]v7p fVZ4㦇cc0?iMp"N\[+/͂O0Q]c FSN\(LBZ-۷pBZ"0jCW_6G;L3DE!ĉBHeWO.-\!OO' F7%t`ZLw8MxuQY'A7TTBjmйraiyw#)s$V=FxaAh5b7]SKf3yܢ]igMS8QO~~Sׇ=W.8*B(L~NNDr6O%KO%N?.-C뗫F)/1Ž$R+X6ba9=zbM3 `ME8Q+noU[/}(r]۝w?'݄ϓn, t:K@w `MA8Q+|Ԟ8/_k{'L(UۗMG'&݀'D&E!+}|ztRc o/ fIgNԊoJw_u:W8|"Jo9'YT뻺m5כStǟN?K,mX%=52m";L2q)]x?ڿJ6}Gų\iԽ1 ۏ?t+`,NԾ~i>άl]zt5y2s^*EP|n,I'ߝi8eMOP y5'',4[H/>h>~6&̆Iuy B6wpd9ljJDr]?}p>4ߕN[BH<]0̡) 'fՕVŦzr{ʪiB:_4߼0SC8xDm ˛kN} \4p"I+()nl+Ṽ֠"]L0BI/~$sT\zsaa|&sch,XX*l=m~WfT*FWHz8ўNv}QDqTm?*gaai(B}&h" : s{H!TI7i'BI7a[|<,Û"&݀dX\7/HNd2I7ܤLo?4VI7ӟŃI=, y A' = ~+cGV.~_ȥ'N I'ۓ=pV+6v_?|B˗/j5 Ho?OKLK8Q+|TN(I&`>ME8Q>x_t#ђLܚp|0d"_??KlK|8Q+&2!/f/KV)}c 믿6N%\'9p}4kn& PRQ}p'wx'?_қtB2a H6ߍ΁i>,97[=:)P_%@H|8Q\{GOD^o~X $YhJxYĉL!\~k. GuG'N.:&$t&C2D%|Dԃ΅#=nv*}P &C2tpU'.\d.eW-ѺOݾ>sbS#a\ IDAT $@/ '?vmk_Y]H&`%*OE9e2/Vsi@4q/Ksz8:9:yp tr f&݄) '.sA\!Z-H$ H& f2k:0 bt=͡hm=<&N8iq #pV+v5ߺ&#!ķ۝toEa V V )B&ŷip"s飬)'ZmF!!ez+엪!oBw_ғnpI9QPj>`Քu߾ BKZ !n!g'Md5-=]IU.XT>6&MA'`%~>*U'݌i*_p/d `/tdTu*<ېLz3MCS1F :5D`t'-S$2q"7`{Ԁ- :N⛎h"?xBRjNR_mS,2;sDm`Nu7 NI'jGfP)wrwB|UpQ-+a:ђCJ'Er8 @$G Oƽ `)$A:}&93_Zs;G'屶1aL ui@>sK?ǹҏd.k8U~ !:;"zwKo>y"vÿ1=__L \H>L\q, ~ ϜNt.i^||\9;"]xޜ=1'~I&LPgND=Xp1B!{U)J;\M?Onxo>_6p,H"9 >$|DѩmN\*XONblTQկ߮}-^tJx81`ʮD˙_VN PaM")`D&|}WΗl6ܚZ,D]XX*lm[O^vj"CrtՅZP)W!M"90ЄWd׶گZ˶~iX'HOjכ7#o>19[`ٵw.Vn7si 評쀍䶼8YXzQ^*xcѤsq~S^ףRFg\w'SRT5=,wJ%]{a]:kGrS=Nw˦<8Dz5΋'˖Rj?\< z>JR:WxDu*cWO煥EmG̡xήGӫEMd6CLn|nlʮִC6T\CN0gœP?=TvXgkUr8/\_z^O+W=WN{lt?*͎̮x;k FV#jеk޽CMNm^2Z|/W޽w{ɽzee`DaO>gyz~Z&Vr*z]W[0GaݠρQk| wu^*ˍo>1b: {[O?TSl|/ arf4QX a,b;#saWѓ*e+W{/{ W_~!,/!4΋}jg8+/_E]zښj;*֢mR^4#u}Dn8ras+ ^/m#WZkb/Vs]ٶ{^z+9/;-55}wg Z:EACꤋlbaysoooo/z!ʮ]Zo!;b%~@ $NgʖaD\grd?pji%a^9=~rO"`^K'}_*D^U#O%V!j;yGkݦ!/a#g{Y)2[Xc]EP K֠:x]+U4R.,#OrEx{f!ʮmMlBjZVo"ѕBݯ&h6r'gW364nk$ rc@-˽⹀B8h ;`s/5~ EЯwtIiQW_%8cuȞcu>R]nMtmuѾ_5)z, қ%z QNgraos4 {NC_D??uu=& PǶ#PήF[[4M0qmTaS' ˛[[k++TjЀ3 jDYgt½T*ʮmu޻?BE?RkFt;ݨz< '-ܻO#O=+Wiu^hvr*ir-M0oŗUT'ZhW>tmm]MZ[ɶݗٿj<N0? #+\2`OӘAתT,,/wY-hX]dj.۵)x%ڇvo.K/VʧW>m*/^'}7*MgeS'D)zi s#Pşݫ0L;92Ih4Sҧ"mM wwK?de]|n,Udoҵ R!t=#Cӗ{^=LXXgOޥW>=˯G/ֲzrBHӇ]VodfSwuU+RX+RdbN.+WѺ"}ɊF3fDmaRo^~| SqOz^DwvaJrqA6V7|qsNܾ*c?x͙)*Kу7=M{v%tyrH:QYp^\ܢe0z;1 DŶ#Ϯ) n.ӸqJ4M<`2憲N̙yի/OO+J贋rs2?#u}$擳ޭ-W4YweKrzroUqr ! NheBN B 98/L0R;[`&q^JP]k3'#sZ;RT6n/>C{|pؙ[ˮi/sGgraig?UNTЪW_r !zSfSCU(ܪQklAn<91&wvuNe6=iy*{C| VGU?&`n;GSl6ý{[h+%> EF#kݍWO|wwkvm6?Խp KK˅ur\a'\FuZa֊ HېKYݥp^l;bMV)ZL$!3yd拲N̉:!Vֶ6 奥ENM؎_ϋ{^{RYX7'U>]pGkw 79upUނH,=]i+jֱi buaiyzzCSWx#К}1ۛ: ;&`K5K-vj]$N\$ 1ѺNcچ@S{̇DfL1ij-wr$˽b?#R}h滮x[ {7x^|Uѣ ]t[LNg^Z\R +WkvEռ~}hz]6%z?}l;b|vusJe2H2:(f w(e! wo&R~^X޹-MqŎᛱᖄ+H-k_kt,ҿڞy V Z}K]ށ$tG̡]֐pd6u&wf[:1G7sHe׶6"+uJϱIe׆"ŏH]]Z,0Y7BHeW6Uhv IDAT<BE6MWx#q.,tɀnZ*e}^~#TZ>"794ֳK6A<\$ q ˛[k?\1syZT*Jehhs^XvwJY$RT692&r\]\|O͎jmaWhTG1zؿ䉗,=]IUw` C56UWx#V1n3D7-~xwR^Bs0I K=GdI掘C.fӘ}^3>6Hdaee,`jy0̜fGssi\fYI%p`=w$+S͚8w .^|W͓罟V.~uL&6EѼ=pDEvjɛA2;݆ڔ};̨p"~.M۝\^[qؾZm ~]8n{E7ߏut>9eI`{cxwZ>R?RPgؒ:[;6ZqZ2B7z1T2B6}|lq$1tˠ=J:ev0>jih|[:Q}qlbM˛=eۈ{`F{|5$0n֑I6am(CI'9(twgϣ)\,n;/<(~$st@Zoh6q}4բGrAGp׎6X5[4r,MJU*YO:*=ۺ @903ow m =ӹ׻׮OH?lv5as1tp6Bt;nkžJ;t!d_=܉Oz7݌[z5%݊ow;÷m}׵n/: > 9>~.ۉ*_)TmHtM~4l"tnuoYBaX}W޻8Ӷ4_2BH/>h>~6gb }[}/ECm{MIyz> Btzb۷ޠSZ=WF!_lF=N̼j3T:qlbMj3t:W9l+t+ոmvK~ĠVF3up`Eov=Cܯ>9`M=jrxcm"C:1nn7׀%S'`q `Kzk-/}~$sTѮ }GV}_×/_BZ3!7N1BgTwJU~ at'0n n!N҇N-E}nZx4d1pSҋzSnTj퍣j!ou"0ku6k҇r7'M V>~dbthj[. n%]xZ>=H~6Q>Kd2|~}wݾXps:̕Q=·N7&bS+n_[:?X|x1ܿ?mʡMí0d 5utma/v5W`~'f-FЇ=(5j5iع[7]BD N:̼!_sWv*hJ׊϶ZstblbM$:=zmE3գ.ڸfR ET+n?{ٳg_Y&0U/!kşZ-76=iK'&ڤ&99a.w=޽ׇu'-cxyE)_@ H$Ivw_=}-θaw_=E(z}7y_y8\ c1e'" N&`)0gҹ÷;Zɛ_B*pdcBD $>6(\djݣ5{Ş MZCR n|l{X.׆)]9wNG/@w6ob974bӛN/ )T/]nFbݕ0{D5z}#Q0a$'`w:TޫO>L*-ͧ *icst&2 Fb\ 8^ XfE @rz@I$'`l>~%nu|rKAn 2M|YDPnͼmO(RZΟn w:vvuhQӞ[{ 8Ҵā\7~A? 7ˏtӕ\]?`>Oty;Zڸ 1ohm/]`69YūΏ6}L~7/AXFHx7OLn+2A-m7_<Apy_QE#?m<=: 6hчB{ &~hě*Sg=ۆ؍i݁r޺_Щsk͛WJA1vyz{W βNLO =h[I/׆}^}G!6&NA̽e`=\]?PumB}ÏOC-w2\"Qd7Ώ>4\N};_~v-|A0??e.P!畠͞w8wZY;M$\=?K/Jw#ˤ:yyMdbJ &<<=<_~d>TxT8M2F s!b:?zO8 {ȉr*kSF+g͵Q}U뽗tNwv2#|ĿO ; TW·//Ow7Oy9`q/M8}hq=0]5 ^~y_ͩ~Wʭ็oxy2zL߳doh9R  6 P :1ymM<=|]e|w; [cUx?9k/?y6۰~ ;ݪ+ kQ#yMͧApu4q~ D?m$twi諣FAI%y#v^xOq-w^ɪٍDE3]P4#cEY|]\t d(y#KC[~lgy~>&uYa99~9~͂8e".7> =IxGp'Wk1SA\2b7GZ/du$zކ}NF`ys͖SpJ:z,FgPՏ>ɇh;WG>8=My(.rw2 cuy>}pA> rrjv#'IWcn/Q%FD@<;=<s9dlhssKͥHwӥ*m`(Lg{{A(D>ch>ycAo)! FVTϱzRዺ)VpdkgmddHcyYչNY63[ֶõ<>ӌ~nim{靇 u: Mu]ef?wo)<-m7wjw%&z>9Z-Jϭ5_Ad>h7A0l]=pʡR;E퍞x\Oj"Y2)oΆvәl(:̄,P$'$?'-D=|tKDn.ՖG-cwAP'[WnW:Lp]wcesHNm ?/mw'ObZse -m?{mQҞ}yqRmG&C-]^aΫv#7?侚]H\I?J(gǠ(z&)biŋl9 ?ts72bnjuCǼvv[=}7(7z[E%V_~ŋfs[W.Ow,zϠVW.Z h;I;YYH0$$֠M$_||oSj72p4 @__B]̔%\o$X 2rvdoh斶/<^t.: `r[>Ÿqf@|v̿ݻ{d ' :vγg/^4G.t-;Ϟxlqu'Bw{74SS +/Dr; z&)']g;/ϧ/ډIJyUnE$ދ0՟tE9emhiֶ/^5p7)4`b5"_}o>\z.;u'+tw1l8ϭ5n9v,@wU;kXŦݸbNN]N2SNrssKkk/dUб6y72!EVG[ (g` ۉvLL`eQeCFzDrm) ޼bաqcuYYȣo;ng%:~2'[GQ(nMl7WvڅF_4nȸM#%:_kZ~b{2L1@Vs;i+!ЍQK.?*t'5rkᛷyo4 w#u)aUŴPMIxK+F*uX꺼LE8eWEbtz %w]EcҚH5&NdnhO77w{2ˏwxܮĂi%9~*޸K&tn;\e= 7>un..w\)|O?_"'i+#77lӋryyyzx9PLkC޾.*ڍ$9o42%&O_II?4hC_yLV &ң7Gߵ ܸOr:yvF_Zw uk+t3ՙ-m7/=y9.Bw/?xz_ _KۛkWHۉd'vT { y?HnpWG$3;2ϫHQىbǕ~ EUN$$RnhY涗Kd$9$ <Q#Ǐbo\w[_4nܲ?;wsKhW ?|8Vh-%/zryΫHQ$~n󏟽t EղL?ke(742s4\{t~I㏿4???z'K~**?9|k ~`vvÏOCX~G7˛dYkhniby/nmxVF滵G뱄&G\~Zwfiٳ> $xyt-RyU)RmY_4ֶV8 `t,cnz|V_~`ZM{7R}Qe\5GwDrↆ0:0sk._:nǏwAJsѬ/n,̽:g>Jlp CtҬ?X\=OA=\hF00< ܪzrf,4ήnt5v 8 qJ^hwIzֽՉdu@9SDlߏ~t0]0a]&<ǽ>k, ^XXXi쟝]1? vb{&!9al"a 1L/B`xb{fHN0CƼ"C#b{f ''4-|QdY{lE&LlTN\\47zAH^h\ qЋ]-sYWm R拋FTY5SM&)]zt讛wh -w SBl/bbIW%Qx`1ji/~|}ݯ*K8Ē/ux/gEL{6=hs J܉]zH3lS?z}t,iҮJt h}/qYjfxcޕ=.E[18!b{}2}vbs'Vl̉ >auѬ?X\=hn:X]|Ps蓍Ճ}A;.խ´;ehK:mV⃍lBӌ:(oe"TJ)&FҮJkr2VET͋fbrhK4GRlؾDb'`Īd4\FK7tFܜE3SѓFp$`u[]#LJqQ֜j\z:X glTA7>XGwAl//>Xb4b{Fɉ abkvx{k+[ppp]L0.tnmmI=[[?.ٶknf/bK{3Stjy0( 0)j2ښS)ݵ:~j nTb|{AdoGj 9} /8Z>ؾkKؾb{} IXQ6Y֥Y5ajNۑ(f)rį`i۸v8m ̮s9ks[l4Rsw;QCKBr}Y>:Cmn22}=-~riҎq0Cbo$OJl@M̉ {jg|N~}X`}﹑sƃtae!aa^;+?&lT[tY#i`?MZPҞS[Ԝ񹸸8i67zVHO5h$uRZhD/Oz:,ĝR5{[DOO-`QbQؾDf6f5?8!6XxL ".~idO-TCLtsrj(d:sFiqj= >qXSϠ3-xZn3Blu[}>>Q3OlMNr!LWƏ򭄚~xHtPmh׍vxo}VQ."f4Q՜ʩ']$ZbXh]7V\L >Ӳq0;wEl{L}$%' D Tx򏎢VVggtC"-f6XDHQrjNfw]7rQ[[FdToe:gZqr?f~m!!/&-9Q&暟Y _r19r>1Is^_ \gt[Oq0֖`TCEl?0ɉ!0f5wN6b_U7˘7V2P:6 #B/_sz=XM B#?Fc.v<2c-h{]V`fP(bYMNU˺fA?j{gXYYYYX%fVMgYhE}M|ϴa/3RsIܬu8 .CwW3*o>sȊܢ>f~Վ"/>}=D棴\ٳab8FIjV;_}wQìԜ\Cyia'Fyr7''͍zAҦ +N sL}#5rK8mb#O'Cl@ &<979H,"!WpLovh$-&%e{qaVJ ՜ibSJk:235Gl@lHlMArb!L4` Z[~'HUGRX//zQ_f a.JpqL*# zaG6N>ƃ-"mj'}q091C5Gl8h~o}0}wno>[nΰ,Eމ\Gqc3AP[?nN˚]hkWs}9_swV麊dw\\W%E+UaRbN>9(.j~}}*}>~obGl@LMr_HZM`/AACɌ{b# 9%& %NԺ|Ǭ텮o}:v9 r8!bbG 9>qx0(T,t#|˵Loc8p `]3x Z SszU y/JP[?n ^h-_35ʶˬRm/Crq0Y4;5GlKlb{Ff>oqvBgHm}}6;`ae}ZnN|"W~@2=cQ_`jN!Lr3sYe[6 vط/4wq︝`։kfjؾ`bCJN 2 z-cV[]rV7}ڑxɥ7vPY Z-R5%9y0RY.KΆ[F kw{~{.ZX>f>3fo'P ](EպGm/C+@ň۔͜`]yڣdL9 L=d?֏s =3siqIg~hIl0$'Ll^?< b{qG, "EfN0zoj{?hL =L`B-~󿵽 L=,`Rhv?F/0q33'RINJ%9Jr(P* T@$'RINJ%9Bɉz}cyrq1^Ch;9q:'%T冿*'͍z6.[O 26'P #K) O,gaha &.lKU!U5¨hJ=*uweJl@["U(9YjVbg?Ag @6yc~F^b_VorRUjPV3(0C֍jx"  םu}c^\t_Rgl)ո?3$G1 i2:= ײJZ6/^fl42>UҔ +`?wv,a+[Lڻa:,IŬ',1".1NlK1F P IDATd1Bf=FssrjMN!kk╈8ԋ;L4T=,0Fy/^;> :]ahR WLXƐ:gHu}]P[/nY!b}S>@at1ݕBF![î:ߘvr]MG\K`I!>c*o(5Vh<ֳt )AdoIFI'~zyɉ̗u!s#̲l5dpm3hs|v)Yle4Pռ[ ܙHrse3't$'Ҳ_z-8+W1zweH/0W$N7Z$hI幾n)F}!?_IKɆB|Do7||+Lba;|4)9SRDy99Q/!Uϐлх.jMi#÷ 3YCB{)*3%>sJ9t#a:Px 2hěD䏻+pU2ݤ|g90g8{:ʱG)JIGjC4zy~Gn@v2 Ypg!)FQm37wB|v)Ylu3t@gq7+=9$FCzbbTT2!U!ma3Er+;МkZc37A7Vu{Aw:Ȱ ^f)Sd@^b% FNWC ߐjPZ:Pm}.h/ҲF^H-e2r|co] oW[Uό3L,sw]*0Tδ''.~i'.[k>o[ڕR$N.gY}^( =CgUn 쳛3LȻ #K-|Grh0hLCBy!bց~S7U+R&k6PwZ~>}%uLU?3d@iW=~0HH@T<9)e~ gj{Jk`kuqbFEGF}%Nj FAcR\! ?C?+Ȁm3شY[{skHކ\ecHɸTBĜ75LW4Ү\KTTjeܟ)3)T ^͟]ޥ*PӘ5Pdje<7ZFsãRdi𒇋fscc^oխ|Wx/duO- 9'N9S"r 0$}=@X/+C1 ~~wߺ1h T=}-R7՘wtf,픸d57-ɉ]мD zuA}cxwϦ+9v'[[VzE-թ?) 5DHWyMLdURU!LnT-eL3US{B)INV6Jc;q[V7~˨jlMfAoW]G'ᖬBVT$Y?ΥoAI6;g 020JoMTd52QbTEԍjx.*]TSx ?SI K;MLT$ӑ_];ǴF7عVuG.cTqzyAv}}}}}}q0F^ԟ\%ƪ?(s3olW@SbՉcHkLCBy!(ˈF^H{RZJvGTL[ePv"O;uGk7YMMEr"%KTB"[."hW}L%߭+9}|/ ,s@AP;n__7+++ >{|_er|-1wI&, Ffv`);`RꜪ Đ*zC^&v]N6n^A=Iyjxz XT򦚾_3L:_ܖ*m($'"KWC/GBϙ^Xi>AnŕEW(ZwDBۂ؞}!%Ik#1q"BfQ7͓;;g 0Ӓb: @Zhʍ3NWC ېjPZ~7@'ܼzuA755Ju,wTLI@܋'2&& PONDd~m6+=8i67c[d.EZFn"v%~ ,$來'SQifZ'Z[j{v`v)0&94I)7΢:1^&!Tl k)ԍajx" XM5NUό3AL&& PNN\lW--fmh1{ ?S=X\\:h;PW+As+> $uubTTy9!Հm1r68j92׍ak"ng\!ۍ a; $SʔdD5v]Pkgu~lnjv9jfvgO]ůrnRɇNٰ+ٵ>w?c84 GY P-nVmOV'1BQFR3TkHJQE?î۲8pa,O: ŝs%nwu_i=IWg8 RR)TEBĤrRQ7b.clSPK)05NO57fbޮ[Y ՙ-0ItO$ό5ɉr*3c6 Y~|UH:K}23x&CDO 3:Ejɒ v\0]|g>kv&3^8R }%Τ׾9~b9k{[C#YZ{[W2peSZXk$ZhOφn^c6;g 0s} 0VbWpՉRRRjPb2 [7%]LNY![s:R /#&@i&19Qj{볳Bc}^ OԪnrk (!nuMrNQ~0*0Wjs,fmE}j(ԟb,4zθ ohaef:d)4gȀ/FOzW+RD\]YW&KaH5P9KR J C Y7\ƌN9![?ұR3Cu&| yDW4MV] 7ҧ`L A]4FyrCݏo%3fLu`$i~}sq"9̒Z?i>qѬvrYd$9̔pvX߈tqqql" s~^Dپ `췏k)[֏20 fN3?,j~6VgFEr(eRINJ%9Jr(P* T@$'RINJ%9Jr(P* T@$'RINJqcI ׿1|^k$ .aԠmƚ:KmR[b-ԖXjK!̜J%9Jr(P* T_wEo,sYb,\X.K,%e5_`P. T@s1Z8^sAW^u~~XJQ[b-ԖXjK,%Km)@$'RINJ%9Jr(P* T@$'RINJ%9Jr(PTȯ_?- S W^C'33  &Hl*?MpfNHL0ALdP< "zJfɒ% ?@$'0LY $9ŐHr 3$2qxC2HN%5Br$3Df`$'`2La2 k.Li !99L OrVv`HSCj Fb*SyR9gsM=Q@ڸL?w)TfN@L@*& Kf`$' Ǵ *;'Ym9kpڹoڹoڹoڹgoϟɟrY``fN@,!pOfrN[2 d&? Ap;r1ꐜ`֍.-RL#`̴3i0) Ŵ *;']%g&:nR3Kr?aEQ̜?Ld6q dM'FrbN$'!d#״&O3KrY1`|m3'r28s YiM?9~QE$'ZLTSիWg&rM0mr@5IN0mL8 x3'O6̸P*̙O`៎L Aa) i  &^27)^{m`U63c뗿0q̜`V?Ůn$30$'pZ"?(d&&#ћ) i /93w.2w?PeL ) 9@r͇ȵt`zJfNV E5"-0e$'4 #9@uLɾ6PWӯꫯ:믿_|`%{Uoꫯ~OIQ8~򝼯8~nung&¾r Vv {MOLsȞޙ7 P}u^/#_|./CًO~/R pGZ`v91^_}׾񭵿~~OO-"f23ErbZWS"_~뮿鉯 OVf ?qYiJ}&K5ͿW7%2r@~w]!30$'7~Wg~zd}s6@~S(%fzo|kZw9bL,?w)" x٧i5 &/;S Of:ͺW::oEQB2rɹ&>J;?(.(@2+;̉ MX5Q`fq1sbvo~ޙ55K: -@ɉՕx%5Oh&e~Exq!Ԗ>\X.K,%ք^^":կ6S/^ijV:=5'QcBoU& g6#r7k- |O=RP-kH2L,yz?eBf($'fFZNo/g(]׊g,1˫/&P[bk˟ɟ$^{Or\%%KmBrb&}C#-@vӯgʄLyErbue&KZqQz+ @2@F~qj1sb}~4,1EZa91^ ׿W2@Qd&̜:7_~GkKs-}۲bbfN\]?m{_567w; ./Ow7k<=||o0 l2fN?md._~s]< < v^l/U#7HZbM̉w yot7vYL@ĩ̉/wI"7g4.ok.0%ϜJ>,w|~MnMvZK4yׇ|Y'|\i}y,5{(,Q7LWmy}hO?4CP@ \iҺ^= aUJF}ͨҋ4TpttDp%NW }$!N^ޮFWN˄M8 d $&NwpӊeLWfntN"PI@%&N؁bl5;=J 8$`R @D [N/RYDIJ,iےE$GO$}Y Ȧ ;F$"X-a#K%;Ngx"&? `Y r(C  j~| lԛ(P$NwU#/Q얉 ,aHh4 C8$|R %],@8HeΩiqD%zyKr Ki=jṸ0Q E%#K|"NG,@8H@-M0@d .N@(',n\E[nߺd j89]s/Gt` KHǏE… q0/.;Kd YeΩi#\0 nDc&6d"qB/o/EYE$%<$P֣֝'@&d*KT, ˲-rq Y.Ft$xP?N47'gAP47W UN)d d pr~1Mwj'Ȏ씉6q:>>p@8Iro *$!NA@ 0IiVn} `%mP`'Q&NX gյݙhG&f@9}qZ3\':-1pý[U0d J "  \iXFSqDpxn}%2 S(NJ=OhzYN4H, A.℈^^:j:X^ 4:"cD{&FE;*"oq"K"K`d=@F'{wR&DE T H+^^<9Ͳ% FB,㯥>V$?"۴?[oHgFsD -}%qB[9K\W~ R%X*ebfOZqU&.^}}teZ"`8D eYq%PY Y,(.yq²,iہo՗/H(,х, v:v׬&Ȋpqzu'l9,4cT39/?]eѹ}>=ڳ%H<[D}l Eblk9+ Ɖo܈FB@>zocÝ֣R'LR2Dss:F%tHT~S>g{6M{ /##6|'U|t t Y8a5(:Y" $S`L QW&4MP%d @6'[{iB+./2:Kqm' X<`lj6Qlfc|rϧH&yr…4y#[B];b< q$k?Qz@)'-W(V($;~LB2Y&ԡxp Ap%pKP)0i K8PD&؀ &bPYA`DnnAv0e(,e"PI+iAX$!NX2KĩI,ݼ휮̆vL@?qGpKB4-C җ%,sH*` @_ӉR?N-=cH+*}%fKIAxRL8&,;X»LF"{fSz.qq8>>B6~d!p_"V\Z_$R0Ia @,!7.\"&+x>Q]%RiF ӎRV&fK~h+R,,-t"dHv3dp;K<초;S7oՠZ6܄BE0M0FHGe5mkDD4Mb1H* ?z,v_Ȼ7o[N/oj6v{])N#he"hIVcs*DʲODDnE/8e7Kt3+FC@rzbY[;>LF`INv"p)qyj}$Z:D%0&"Tfcxcr6[婸`feB+ï@ L|䨷L87LNa-E_L},Ț^*onW{iԪׯm65Df QJVIygtL+ey2)MͣI޵Y(Dkt!E@!{rVRhťEVR2-N|R=NX/8m448]RaoutYFuio-%^2%eYbno+ޕCN, H@qnT 4Pqr(Vk M҃%E9UgLYiN),7ED AIKs""׵ZDc$2EV[pv5[]/sQo, 1[72;FN &\eSSS@YWZ2q4jյ&/ u(r½pBi+8K'fYlbd'Hp'ot_[-aޠ쑸,A@rYVsg>0FhZqaiq.IaU1v B:lN}E1Nv@Ygo}>'M|'Kd#d$lVok\72 @ K':N8ědp^[>ol׆b- !4 $ݐ=QSN/j|h 0D 7zI. &%z/&λ]7qg N4vNxhD7nB ;JJ{NNjPX@xRVu*iTW ^.D:յBej60@RD%.nqe^࿲yxxD@hТĉ^$Q>NJp1l-vg0kZM!}~rtiݵMpӁ {>ƕ@MBD޻j:<)%|.~h.NMMq\t s$qBJup3[m`Ǐ?3qp~MſI.pLbioMٿuN_|wuD&\)" @:NX ?MA{VC>,}75hU mnrYzpk)`4ljNt1 @mGGGI,;Q0M`m_[O|\wۥ"*lz R'ZpyN.*p/ۃ7䅒%p[E"kpq²v[{ivWgy8LR,&1 Aƒ+* $ qSX1 my6eKD(KdIY &d śD_㇊ ԏӖKry TIaY͝ZZӊ K%_  0BHPܰ IDATQ XY/*L,ONKO\٨9#Z4 j&o,EٍDC%!Nh&3339&e &,a{p;ikSvMHZհj.*gL*2;HL0&Kxy!@v'.$I Օ%"KHi1e]Fug D#d4^U& vv~f&D≌d v=er~ǥre}./8+fmYbDB,GOH*EABD_E+>+VX[^?+oU亓5[ƧTHRu'FH7)mB[nms(.7o5tuQwDD.M2 @Re6K<초ԯď&d:8Cg{imB+;.-h5AFL% (XB e',iMH.uGsz^E $_jīyAv~uENWf;$lsׇн哶0{}0#rrf-0@Y"&|ڛU8%q²v{iz\Iӊ3 j 1ŨV&!NDc+{8aIDH( @ 'fc^34 4V,hn?#V>K\m?x7KiYO[>)_&ѓ}ɥhUYiTW ^>]ܬ:ݺg Sð w 0 &'K#͸O81FpFm[*FI"Zp/I_6A0X9S#fYw~wjCUZBMfelG@'j X\/]/Dvg&Y[]ki9uM@d-K8.Ͷ߻tvK.7>uM٩յ+[Pj)(Ԋ͞2iťE=7E.uT*RqV&H][qN(%hfbT w6:^$j5Uled (x$Jq=BDDzI"|cڳ4KM:X%$ld ˚.o֪t̛%,{>os+ P0vѕ&bew+H8K[q&s@]GGG(~p3jAe"ѦO} (WZ_ּP!wJ4EtL$ׇi*Єs*+'cEX*q(F"&!᭖H:J[2`*=D[D+VS+V^#FWpWZmR_?z OtgW,G-.){ע y5DsM]0NͲNX%?}%l*6 rzï/V -lq &==.q)':܍XHYDqв$˯Y}݇OϹxK/\m%@H5ؾ@R&O^H"?K(+@P qºwӘmµlB[^vQ3̽[V)/\~w}Çwr忿"o0JfDZ%"# & $y ,S!Ni87wuR)'"^wz]yoLdBf%?+tQőg<'LMM}igb'NT_[.{W%ϖ_xB8nՃXKrs٩挽l@jdmO.'EOY"}M A|.HG@a(XB v*ĉ0|O˄wsxK/^`::w:?|/'.MMBeY\>6d%0aipW,1=}t㭗\({/R%W?_~*M@fc^3FߞX-'d2A?}BD_S@\Ty\%z/#ցszysg:]|yoЙIqJW|JY;K,155EZu.jzL-V@,d. s]d="qmjq~MW^z黿QHW?Lwm%eebjj*9xf5(϶Uހ&?@8VNt,0nYRHMdmٖNWbEӭ _ʂ-l a&~eBӴ $g })OD-h53:&沵p'ۄȕ\2w?:z%R%hh`3-LqN6s[Ώ]eMN\xaȕ/\<[;җ%5 !Ktbev0λwZZx.qN>Pd ^*̜\ix'ťJ ‰/8S'>gS*˗/}8ݜ0~:0 ɕ֗\LzXY/끖 "* YؒIL0FMD4Mi 1DIHBD' -hfY7y8g+, ckCGd [<bqB$w kӬO9(CҊeL%;tCo'$ n?.\py||윞1-k&ZXy9]_swf )m)-kЗ!_@ a ('DDrݹie@"#c|6r#d1KC Y{O@ʹ]Aзy8;_҅>`""9[0Hb D?G\>>@%/tI, sTv (0vbLiO<E8a饲^*e5ooHNBa~nN̅-x1V&&!qg ~s/M!/Mn}^Mjh|!}8q>N@, ljS^*R8ĵÇ"c>dRd K knz5 4 S얉琉  i}.@%$N 8҉WreUɋW_}/ eeS('k4d &[<~]'\mq@⥲IH|Y!&3 M FӉ2Oq"|=wtžop8kWR޵9&]x, 4M . `Tĉs׉4.({M&IB7 SdmK_:v2KazyK  xgA iv套/=më/t~Ov޹뚄}h@bIȤĠnk?7eDsQ&22MrD6 N/҈w׽b}$MBs>">O;wND~7QE}@)7Π" t7 /Kxן'C Ox\ > \O}ܕ߿E+\|F@G>͠#(Owo8w9ei2tBe8pЧ'v_|&Okfoѽ~bܽūW/p;HbyW,h3$K%0eYv[Z-b;HrǍ@A $x~Oĉ̘bʋd.4 &l<Ͽ+"Əsj6v{iv_/InmLXI2)NLO ~'@-Ij jnnT*{[{Fj+[e}CyQC@Pny4Og7 ;KZ6a_ӗP_tY0!"n]4ץK02۸HFd 6v-w=/>'Aob:S%+ MssLhZi}k:0Ȏ C@*E4"@rb&!q ziki}.x(hNewZZx.dĉj!- qQ&ʺ=KiT{D;X[]bz=g+;MB"cί_^`>aia˕ٟfG N} 7)K7o{K-p|uΟ? EnnAs`T7} o56\ G LTR}儻Mhˋ?E1No|Zpd'Hؾuw{fM~]-mDįcյY{O/`l `(OxpO 8{Mkۻl>%0ObM߿r彳`V+z߯٨{δ9EPV:N>a͉)'S/f8=~8CwH~>j,ӁD!a e1P̖J[u9Ө]W2kF/ FQx$FB8ܩ'G""Za"; 4:/;*d P^ޮFٿL C@CgZV[725=n'G'eԃy'H矝vʄ}~i! #ďi(.+Em5Oh]IL jwZ>lm߈/ʉF7 }> 2R#Yjn绖P6wG'~+a}]$nj6v{Fߕ""ZqyiqH e',P^|6TM}| y?>?|G2MYUwЖ. 한ϯ~p<_|O~_≠}pS^*A@X(shab ɕ֗RY[W/Wֲ;=iuF&!>,ݼ#gtDt^:O?'×.YʹpDו2A@X~|2}H+HUi] 0u%fT#M&!޸woDt^~o EN{M]Y1==kHjo゙)噀 @) j 'DD/oWdj'e&P/kM[&NX61~Yޯˠ aP_DȲv5MèV\^Z#S_{3#01|F1Ƞ ^ڞnZqyL-MB7îmYAN A'I ET~?eQEIQo}lG_ Ț ;P얭fcg])!' Hq$zj!f /@+!ί{VclLV52ofC@\@$*Nrz""eHݖ|>/"9fn2ze@;8/!y[I"6Gs=[i"怏(FuX*$ĎOّ8bno6/ݼ/cDK|>ћ YRoЊ s -y^t Ө9 $4ag$7='tHvRnr*)bޏ'E{M0>쳡9G"r}|9g&"nr+2_ԔLȿl{ϦT~ Iͮ2{xD.Jzdonfmu _& }H($&lhϲ ;Kt'{C37{@,HQHkrz:fVƢ b6bGrX?"q²v_"gF6l6 ?YY10~\s={2q*WW0nY%Ht ʛ@@)';Qy&!SAY}z'_s˿>fKȕ֗{w\ͷ8sO?uOmgu7:{5w.2۲۲gqWDG(.rbN rǝ֣>|l &'CG?K\mG+$ d:8Cq>&rv!N ozOIL4-CP#,_{eĐ% B>;-h5N,ѩ`DFO/(0wG8u$lK7B W?)/ƌ}?Y dXeXX: $ot wD8 =hr`cׂW?jP K7S! 3ξNO 5Ap^0?Kppi7o' IDAT`≮,ћzY0nND˗>5ۍ>qXh<ʄ{ăKmZb5,mM @"<HSqHb|{uWxi}dzz2֡ .+'fVk:88pΛ) s; YNwL]6$O\mwm%Y$<$1wsw-aqj6v5;4E D `|qB̼Z{^*k+ F@&fy0ʒ'FaFuЊ 0{Yƻϝso $WzOb%vsb6jd?^OIVcmopFuum)s(.Cu:Xˠ x (9@1H$k0 Bށav\4k'^tM~Zj Lv@Y̟G8a56:˄V/ܠzI=s)Fc<~\6aZEŨ^7>il$+, Y֩ӑ&r2q&[9fm͝elM+EM=[2D 6% INRT}+ rJFa{`##WWxp{nN̖&9EaJ_{@R('E=mE suG#݋'&%l,LYFAٞN\v:lE;CLw蕦u6 /1dU#Lq諅B[O*Po-iy͓Ii`óK } CYU'4+>\=)"n61?Ϝ_b<ݿ9}AWKg[%Q}Ot5dkɜ>=;sjtRG4ٿ'cTl܇pgO|ͯW j [ ,"Djxo(Q8xJ'Yi~bo&ivnwZB_b R ]&W'e6 !K u&Y&zQ'=@h>~rdvg4e)C:"E3&7_fNk:H%҄eJ7=~''$%_?ū%}R >?I͜f-"oia\EqL u;wEo}0Ȱ@&6K}o$Ҵl,b 7=~WRܨP/ qԽ;w>`tJH,&d wxwo#,ȈXfbRֻqFdJ¶NVsxenG $y8`%nq 5 [<!RبqDk|4$$n+2xϨtdVejJ'E8ܩ,4mff&oB-G?};?(б]Y½0{Vw.,$k&01y 6w¢zhwЖ+%8y.ehtf  Y1t'v0i|l0>:pX*qJ%YﲉAY"5ȎebbGDM3}q:I[^L%.^}}+`j K ST(w '0>f l4Ç2qt7;O LLOOS&) O$ 7WN H@lPҫK""n]ߕ%&r\I T(,fb'('rs ZʹAfa՗/H,fGw KHSOQPNJ[}Ҭ5 y5 !K~<&x?@Tɦw k5SĬUWk 9&/P&N)FT͉7)`iN@X'D$7Wٳ4 0A[&NLv:~g" .DTs||윞z]{Sgut#mgmvw{vdqEV&$ B@('kUÌ(, '| J `|  ǽ[ŗƋ%Le#>OcR>NXz2iď@Y"#MB e@(H `ljN͝&bIgv J Bܘ3DP]o$}qjTl@ d eyO,OQNŒN-K L޷~vZL2{02)rBIs;˄T";eDGp'D/WNYh';8R7R`̅5ˉCu5SDTKD#T N&N /6x2rGm~$"'DrmY;՚ wh%Lpـާ ?vD8iLQ3ئiU~ݲG,CL@@@P%12DeF6WJoU ?PϟL^yr ɓ&&)? {gm䵈?qT;U&xH~ݑ d>6II|btG2@vNbR>;CPSLѡL^ [ T8Q>Dn̷~FϿwG@֨'>1[*Y9àDAO̟܈@j%|"KdP($zYz -q]B  N)D2A8 `|' U%$z6o+)?$3qj68%#KdYoO'(V>KXfz)"R'Rd BFDLX?KJ5Ì0YnBDOeRޤO '׫F?ۻNZzlZTҫU'ҁԖ>=9! ɋ`:l.IBm%4ò X|胢lPUz`NEuK̀CHEċ/>PR"~ ; dzs(F2rJ>AQ hŐLkİ-2Ĵ$oUd r|8i& AhyzWAE7SsgbXbZb ’ykxDa &3&DٓpP9% zHEJNkݼlRN_bH&`~I&b+R0<1[io/CDu'<❵r_w|Tߩ>|Z6¢d%%+++ $|aL?QXaN &cȋoP\ tJ/hOD,1eb2ؖ,!K"DxDypIڅ7(nFOxDƏ?e卟`2Nj7?[{ E8[WE&\ f ݤ|KP,+|2PT y *;f8hZ/i(nV{?m|lDYz~b XeH&2 ?BGNAT6C; LT;5 ߟ5qZTrbYmٗp"JZihKB,@dl\%sG>A`ZWJvi5^S9Kƃv/;d2S,P01pRe0WEN bX%(O?Hq$E% rND!Hi2믿N Ao|Yܖ;w.e6߼ɾ/'^0`dغ^>A62E*Bg;w.M[d‚r?ZNĆ-!ܹs H&KFNt: Yտi$K_vb|TQc &`ɥO,AAd:tZ/_NelܻlY.WoYbt]י%QU_?G˶{ײ޵lHWb]fK;`B2'ȏ,qCuػwlAܭ7ΝZEBԖ<~H&'ȅ޽aqÐ6?>ܭ?<د'J,;,zdN]Q`l׿U<*SD<R*ID!$I&3E^GbpbhP. nc͛ :ƃ鞚{&X&PSM,5q^}" 摑pb nK:Ϟ><^|ڮH'6_-hK F,]M71r |A077Ǝq&ʛ#?\,|ښk)?۟LL$QH& a R)t#Y&‰z6|2aW.tLK𣉵|dbZǡl&a?xq FbAY[bq0y UN$ DEkp8 kS A X*bK@f-[2]tKP'瘌p"7LJZOΞ0"Jk=Cд38-nK I20@D:':x>~O"w:g,9+ ƒ," `*B21a3ݱ#_TҊR>#Y87Ӥ'X*b% F_/򼳜36֝*~uO{H 1W8?S'Zς|K$C2@NOOg 1~[N0ރ߼?"7! |XrZ1ODZ99wMeUQNV TFe.8gOgAL<@,1se1e,O:/&KP0^7(Zgހբկ_\Qi Xf?^͹sXR uvDXa|w7a+/ Dw+ͧj=8 /8!j4Z8Q:WΝln ##'Rf͟[N:ݾ&n&dDysC6QHgCoieee|{?V@Q}zU (c.J0>*)(.#' ll4}X\rZ?[|Ri' @&1п;m!`AfU8~"'cO*ƘDNڝ'`v-ZyФ|铁$#ΐi( D,%TD(/%z ̽տLtE "dcZ T?,OP?4hóDy@4O&nQ,O0(ɄfOy#0q Z]_P8tꈄ\9؟*h(Wwg@Vw˳/3:VԶ+NٳO^… k7.UJӤ ͍ZE0E%" "2`Ec/Ν;7?S'wL,T‰RRUڴ\._r%e(?NOO1V3kU 2NLvpߝK'S 2xƋL,zK(`*' O@a (9Ao(EI&c*hf7umE.OnncF0i ] $'g?]t ' "?& p^=_"\4IbPp aY N(=2"c88̖Ir#9}fHf{õv IDAT7]SG=L@ yt0"1@7؄PLq01 &gLbdfBY ȨM & EQL (PH&Rv@2N󓓓߭W߿zQ?v,"nď6ѻZ|z՟AL[T"B٭&։OޫpN>z~2'''''>z(X]QQo/߿1?%1Jfdz|"nTvpx0G\}|"K(4`C(~DhPRN(+'>h[-b݈Nd8`q1.-QP|??H' -‰:Q_2~_/IpzzGG'%PL@P|?N2~79}|On߽Uz1Xū[woIc~:LI>`bdBIE.J(~(\N՗'oDƵ7ɗ .o3)LK8fL& u‰:͸iju/ Ȗ'M@2DL&]z(UZFOp b>OVO r6ű&b HF* __Pese` eppVV.^]ZK{;~wee~$d--{&VϏZ H\*&t!,dPSI8ǏzĄ)/I!__\ C:T=]}9dߗS!vڛaW>PG8JdAew[:{1eĦLIuע~6HL1'z}:B;JcR;=j|6QjNlL@¢gxP%O8N|5ߨ6) HXvFK ~?Px'kV0X"/Kj Xv;h"w~g^g ]=ݵSwzzlRb/۴{<. Dե)u*LT2Bp<N,fs VݾeBX!Hym[2"ȓha& C&rL|ς  ioN<$doL5a7 d!Ȭ%yȈ.;EeY r)X]q+wK`%Q% 1M&rډ0xK\N76j>>_+L@2K'╻ru9M(D8'kw֦WgLs.L@ K,=n)'{D (d"s9AyDW^OH&`ѾGn %(7E:} L߸dxVVV$)y(kE/mT)Y(#' 4~n~MteyXhd,9!S  #' qM& F2ّ^Oo|~)-̂FQ䋑EuqhBG}Y-{$9%z̐CE#‰:dއ:0io(rNTloٴ$S NH& q`qLqFNbI& ]E $o?bw~ۄD1]ݽ[K{#b7w~6!`6MQzZ<:BH&{U޷`0C`1r܈8x" &@2;N7 93 p<鮌=*B,H&&L%X3L_QOp9Qd$$M"@D17yՍ(NOOސW@*;CI&7ODfdAldHQ_&M g,=#'`^ $@.8(M9V,==E2P<Lm@Jpf$#+OtC!M3( dȚ\SRN8SLٔ|@$Y*$b"R!H& ȩ %dպ1?Rt '` }?ur@8}[J{rIPL Y! $@d+#AJb'X֜q$@N>I~7`b,WKOD?X5'0\w/" Q~7ۜEr MR, ak9K N P  C(I) L$$S.%U622-WL+=" "d(E( ao>I1NDc'Xd~_Νs۩ ɾ/'{x!ȾH¹s^NP| L1E&  cن/"/̑˶{ײ޵lw-۾/y:QL:2K8AI&̴NX 8$`!| NG3871~[N2M"e(e(e(e(e(e|ODuC9AH&r M,/諒 2rH``:Y9#NOO{oxe(WP\-CZr j@@@@@@@@@@@@@@@@@@@@@~oI{(O>$M xS@d Q b{e!p2S] Q֜e(((((((((((((((((ȋӣw^\IqHQGσ Xqv1!G|ͽ^}݋+n^ rHuko]VT^euҗ%HVbH4Q2B85|dONNNN}Q~c_c 5"]?xt>9y޽#[T吖/ye|KN$݊S&JV ;j|-G|4-"5/ qwH wGm)qksě/.KN$݊S0 MN?\v%.K"9}a#.~>?zzzqx0ɣ]A^rHUhƄEZϻd.Kbݭ;SD#'`Pz[ejVV.^ݺ{c}Ǟ75,ӣk^}Zmeb'>.uḵR -KN$݊S05MN(!^7Fko9=j|x7¬goڮ6+WoXgF(,PCBo%_؋KN$݊S0-M N2d;cGx\)INe\]q;Tec}wwuɋi.eEU -5UypYeI,#yaZ(Y".޾}jO7}#߸}v;zGbBu|^*rHW][KN$݊S0-M, 6rjZAVol,P;d{5ϻ/;<MUXne*􄗚PA^ \"[1R) Ah@8VׯU߿p“KF{f(U9RG?n>WWWW-Ue:˒X$vw+Fb@%c0I΋f[io7$+{M/@3ڌ*؅&Z^=_ŕ]AGgwG{K<q.KXZzĬNkg@aqV޺}Ϛϟ76jKJ\Zxmx㣫nCXV,a9)FsF88}ah<`z rDUrՋvIf|QGވvY²Qp) Qn(/frM5ȁ8;Er~5f"VPrłT+W^c\%HVbh$Â0ӣƇ3(&/45"V@F!s.~gs,Z/.Kbݭ)1DIh`u-SAޜ_o ,U9jAwb#Op"93p}Ȫ9@FW|c/O(U9jhռݭ)٠lJ8rX{w7C M3w*äi#>jWuC~a~ kP2zez6k˒X$vw+FD1B4Q 6! So#ZcrH\h9C?ݠOeZ/ŗ]"[1R"D bXug@z|}`&S5_!qy~fZ'Rimw%A[{N/ךc(k`v<ܭׯ_kD,? s4tZ{[ףWnŋ<#\] Q'HZUߍKnַc7Vco,_N'i7wy@RR9Z{3֑+ɥDx~$ӸwKPn^|;N峧SZ5.Vi=ݽ˹ABLVR9NP.W%;g?i^u k<0p$ D(JRRmz0@N'/v̘r9pK j<ś,W\4i~/|&L[=4Ze.q7}b:}}LC\._pȃ1ן8rˆս$8ST|R|ڮ|EtZO޹_ԡug/܌|ꣿq?DyL+FTwoJyQIx WxU( Zi0{49Fyȍ(g7- &7ߤ ,7&V՚تm M޽fRyg{TNh^P_ڸq_jw0c;o6l`+bݑIT<دrwO!lC:݅(ႌغ[L "lg1OWRzy ?M<#o'sQX#bp `8)ƃX@mxOӼJ5ޏ!7ME> cZ'Zx4#AgjmǶ/4vs-fO;3A3uź#l,`rܭ_DE8=.av[㶵<9* SR?|k&Ξ)/ Z{ܝTJe"n R}嘂9bFx&xtV}w|JJ9է;%n^úƈú1[Q9boJ*5* 5poY;sWf!ݴX)z5#vtZgO>yqfadܜtZ/?}r5gՁ7xYҕlʹ&EOkG"֞~Ǯo0=^x[E8a}7F_7D4< ɛV]6y>Nvzط ^Al ruƥL\sݒӬ ݘ3Kt+FAA_'Es`0YUri5tWnnL% hr[TLX*~y?wyxb%5nW{YGodVe`EpxPE,,_R}vayIY*ʥ{vmvpsg J͡g Tm?<蟱y':%o]=,mcQr]v~-L\'<ܭ_Zrcάk_O> XPE @*;^ ,}5\l5;9P,ګNrspnfT'sO{3ۖ*lNhٔoa OzD T)aȡvۄ^+Xj4&j`LD2Z{{SgXպrY4LXV/];An4TX=^V'wʒ^?GYzRRۮԺs={d`Wpq-:_XpU'm,(7b&-O @Aj;Cs1FZl5 ѷgԕSr5hsg[ <7b90aֱ/qb Z -VНm 2p=^RVjAt:gV-L3|^/]?holTffIܜgE4IVީ6≭$]CndZ,GueNtZf<'ȹLJajΜ6#o>I{`Fanw?Wm?<٬+?~b;/(~ n}Qxu*`,6M3$]5CndZ,bT*;fn7w͠\ݼrҥwJ7NٳO:ﺾV~q'r3TK+&ڝ'jڍ >)i|;xgɱ=|@|`˛"wJAs WcD9(_̟\R-LusEwI[?@j7ȯ8FanRmx+uw\^WEz &Y|g0RmvٞxG03O`j4އ|6ɴXE0rdU6ϼn!z}p0;{^8*WwvBObRm9_[Eil;FODۯWn^(Ww9Ψ7Շ#PR-Zm?>ẍxDhƬlٓv9XEf{ȫt{{m fH^lLU2;JȀ"[j4އ\6ɴXNRm`gʳy0)SZOT,#4J%Ե~,>Rm:nk>4ITkOLܯhh_?qm朧AypoRR-΄gHNe{=0E(΍qOFk7L fH^+U (W7wGW{10ggO!7M2- nu"JmV3C#*7D*? PZ.A'Re{F'/ڡ7O+W._~Sr5h@~SKSTޯmtZv;G-zƴ#7N>y>Îln̡\..\Y|R`\r9ʕZ'6+77ݽ:v;FqnRm{Fu2h>n֛` Re{v[ /"]0OX{KzsW& oZz`V[Qwī! (V,=@A%#ff,NIzp+w @J{"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%yζEIENDB`performance/man/figures/unnamed-chunk-15-1.png0000644000176200001440000206504414040075427020634 0ustar liggesusersPNG  IHDR4 -R4iCCPkCGColorSpaceGenericRGB8U]hU>sg#$Sl4t? % V46nI6"dΘ83OEP|1Ŀ (>/ % (>P苦;3ie|{g蹪X-2s=+WQ+]L6O w[C{_F qb Uvz?Zb1@/zcs>~if,ӈUSjF 1_Mjbuݠpamhmçϙ>a\+5%QKFkm}ۖ?ޚD\!~6,-7SثŜvķ5Z;[rmS5{yDyH}r9|-ăFAJjI.[/]mK 7KRDrYQO-Q||6 (0 MXd(@h2_f<:”_δ*d>e\c?~,7?& ك^2Iq2"y@g|U\ @IDATx5iJPQPԳS(]v**,gٽ.{(aA, ?a2;;;3;OgM2'ɔ7$2) @ @ @ @H)Q @ @ @ @E: @ @ @ @#AC @ @ @ @>@ @ @ @@`А&A @ @ @ @0h@ @ @ @ :4I @ @ @   @ @ @  k @ @ @ @ @ @ @ @#AC @ @ @ @>@ @ @ @@`А&A @ @ @ @0h@ @ @ @ :4I @ @ @   @ @ @  k @ @ @ @ @ @ @ @#AC @ @ @ @@ @ @ P VXK5sL5o<բE վ}{ծ];ղeKUVj&u 4Ԙފ .0*(8*pyQF9KtMNOz vm$ @ P lv*8fum9R<]tz׌,$ܬY3#  tPp ˒%KUW]^5w\=\5tPc"/r5rH';8#.vm7rJ'7X=CN=Jl5d 4-H ,Pcǎ5j$*2U/2vVRse=dȐʨ,RB @@E݆۠I&?eC!OFI#>䓼u=qoKCbpAs=ƌcu衇J ;&* @}@zKPϞ=X]ϟ?z*FM @ @RCTiMqꩧ4f6tɊ ;v47n8qE0W4hG P`PZB uYjmUqsH@ @ 0A/PO>dցVZ};ơG[nY EԮ][{Yy䑬R"f̘|M#_I=p LK'P @ @q@Uٷ~;+#4=%W(Y Whl7 @ @DT/!@˖-(w҃;/v" vm.B *(BT@)$`B  @ @ Xlݶm[#UPz~ibŊxR_&L~kh/t1Z}ɒ%N￷]tt]vL?W_};'vYDKR䖿ufDR$NV7|Qģ>db݋/~g!C᠁j&]?{R#kiӬ7`[z|uM/Un·j8m@Ex'u]iРAmt9䐜evaN:9gN_={fC!]2F W^y9~ 7Sn]r&Md"s⋌G.ӱcǜuYvq̳>/2w} }uVDdA2W\qEfѢEN4J#_m atMC`F=P0Kfڷoo i!@ @ xAwuj! ד&@!ӠA<7n9蠃2cǎ W?p˹gzLmԐ2cۣ2'pBFetN3h#qrq 12~zf5G: °aYǩSyA+qr饗}[Btno UBhm1ʓ… q}1e6l]r_ /d+{.袢Z|1@QPQdB('  `<`{{mF 2zjƫpP{|pF/= VF|a1˗.K](%̙Svɨ2|͛E&m]$B~1zuG}b tUWeԩ.裏XtI9CNզ3Cgk{Fwm2*wwdYƷ/&_}_9G|MF>iчtM~|㒸L$  H =v}nV1& \SO=hzZ|$ejvS[!7}t;(/L}6{챇;*ʕKrlweWpG?cE>mlc Pk]>"P'(L@/}]'Tz K9 77NJo'xq[nF7:C^XnP0Emfփ^Qe ^Q)Ńzw6N^'Nh륯, 0(%pvw* qW_XkM6U_~^kp}-;Zke{-#ٿSo[ɋ' yfΜx #YCD @  >\->`Xwu-^r]m־_/M>8d,N'+NɯjҙW:ljAN>0aTn+8aI 8P?L=L*$j׮]QYj˺+Y%q=~g}`讻jjrLX_}^{p弦;B }sA TҖzZGҋιՂ싨9)m+YZQ,d'3g.2mQy~S2w_VzYrTؐ!C-w 7YRԫJd.h"fYh?oem˛kECV[#M60o׮]F;c @ P%[N'O?EMy$7~wOz9GW^y%Ӳeˬ<*d}5 WA:W8ʲϕ&TO0f+sYgߴvd\1HFtGVm'2zJHR$jjЙIj*q"ykNN0d5q#<4vlKz$4aVۋ{ƌ9_2˖-:'kzD@X+ P*Ѡ+,\Ys5B$;#yw?Јw'׫&dV${l9^œOC/kx!{r N<\d2){y_veYr2?+) @ Pe ˨ 5QzLݳޏy;Iɤx +;BРA!xr^;iIr_!#ܼy|u.R| IꔤڼtfR?o|.G5iA%9Nl0hJ8I0No`krڛWXmz٤H ӼtQt_u:x]to!DMp  ls)X,xyd vkmذave o6#.W@O뮻I"^x}]^z_a8z$DtY]wu>G%m+>v#n"9@ @@>Sk;w|W\;/˭m'p|犔# B+=6RYD矫^{C)ۖrM7T(q:KiAWk!$@%DD^83r(+,Tz y"@7\bvbXWFPzE%!ԠAI ,YMA٧d?Os'in;koBq @ %ًĘN:aƎd>;3%NIsҥKYiL'Ir1b!|rqO b`瑤N.tf~+.:$I\\+PG ^qE͙3Hi_\#1z[CM{PPNt6mBJoc䙖k#@!d0z8yNYq1jԨxՊ-*:$Il`Cd,^Çm8RLjj[la]/u=^ kqC QoEw{喙u:rMw@ 4D, f_\k׮J d =._ qӧOWb)u28ʊ.>fBdIDV{JN< @ ={>"K> |vm͚7lYg9R뭷jժ#kg$8vQDd\-Z|ԨC8y>IvV]8ӦJrU^wzwdYCn'uծխ[WK.u|? =O`? 8 `']@B^d78 ƏeQv)y@-(p ,UMc5 |MkY-[Z|'l޽{5!. @ PA ^0ckݺ;X1$J*ӠnqꔜJ%Ӡc]+=Ӕ/~ic;_]͜9n6U^=k '"^?18ӠoV5=!  PrJj,uO> СC/)HVxwATИAܗ48մiSx#x9#L @ $[>Q%GVttOyBC\ N:`sQ˗/Fg)e sDƗTĮw5j?pCÇa be~2NܮX2O ={Mj jF;S@ڤIzш_V_~Zd>kċޫׯo |YJTA 6Tv!?o2>r ;Ks @ @ ڢlv2YROU$=zUIK׮]:+W4 TJNq 4蠒'qRn!͟?rŊƇNyLJ*N>flOgϞF˖˖-3 ~g5duZhBi5T Pc`PcV;v&?1}Q{M7ZiAGp[^ =Z1HvW^y:"s\Z qYABs;YZNRGil7~)% @ MO>Fdq.:c$ 4$d [v @ @&E]dLq̘1tiΝQOxܓꪫ J=ܣMoR:EW-:$I$켫4+*ˊgul'ovlO[7k:[!X0n 6PUAxگy:  I !0tP%R<@ԫWl;]vrc"a-P'x%uSl P| p%zZ\wp/3İD;Kdj7f͚eYnd -X@I<(ʋ!+Zx9 +k! @ HkwH9 т+;V}G;k+4F) $Et)Z{"TVjm,onwDթ/3_$S2J0U*q`7 \L0?Nz7aծI[ r?6w}u/ﱢϗ|`'LxWf]dKMfu_&@!z&3/Yl `JcGFZm]o |r|~.xцYt7-GO_+)2m۶I4!+SOe O2wi'# g\´3eӊ\#@ @d뮻FBOyܹs Ws:8W\.]2z`9O^|,˴ZÆ O E2G/^Xϲι馛r>NI*4D>tPL{s=V}B*sʕ%Vz٤W0WC'~vob`?J^P@([NF@8 td5K~yϽ[~9M#3gδV0&}ݕ~VT3AZ~T^xa^q&N}p}Dt;  @ TKÕ,ɞޟ~EsӞ>I.nA~gѵk׬Rf!N qOkQ8Hs:h ckZD"]/[W²0Ў /J~xi<0h!j!ЧO5yduw=zֺ뮫nFk!CLkW^ym&y ^{{=kΝ;[&Y|VܕW^EyNW_}H\ٺDt; >? @ @ IlY);v[tÆ G`͠&E&~i5a%Ľ{V:uR 4P͛7ǔ}e#F:(xƍgEĭS+3ɸ֯uPI$PdoR˭vlnG-d+諯ZU=܇zE!kmقB*uޏE ,2 #?^ީTˏ?e[gaN),qO[YqGJ:jV{EȘ1c{y󔬦ܭ[7' SBv ]Nj$ jdSi@ ib;&F#?Spk'@ @ !_庝|ѽ{ww*$ *Aj8>ǮШ> z-ØAVwׯ_lH@ @@>|zǬU/e-Bmvje{ WAUSC@@M#ACMkq wa{g$"@ @@#ТE 5rHލ7VWsydnH[ը@&B@@B2=!@ $QFg}9K'p@ @l=z%Ks=g :TM2Hr!aITu+ t4@!,[L\OL^{uQm۶v@ @ XwuUVxÈ{ψD'q5ר .8Թsg5x`#@e@U #P+]SH @~Ft֭&Md29 6T&LP믿_A @ kG1xU첋:#TNTŋ_|NƷkwyG D|@B*5!@ ';]}9\y3@ @E] l) N[1fҠC\@J" %d@ ̟?_lru'[M<vmv!@ @ Gr-jҥzOIr 7w >S r?|׿ )رcL.bu!8 7eswaÆ91Bu  'ze8jنrDž'Ǹi?r]\CMFu/@{5b˩=1 7 ;m={mr2)75]1Yi$<((GY |J&[pb gy[nYǧ~vuWh"<6dx"!%XYxqVe˖iϟ ,]`33b;w\oVlVyg5ن?P|jԨQbH"Ǹi?[1YHt$* o@O@{5b6GM{J3H 7]h6VSq҂^LtcԴxpgS45N`ɒ%֊S+W,+ N.馛:D< @ t/7o:U^f"@&@bÉ @@Q*B@`6"! P"t%s:+4á$pI';>ɨYfiӦɓ'Ho[_wʲDpSNU}Stյ^o?k+.lذs @ jv/Kս5"N4@CF4B@ Hq ؒs 4HmJ=/5qD{G~GN\RR!CiߤIǏQp c)JY (/EOMieCHtihdT]Xˆ XtiФծ]PRd2dXd`$REE;YJGi%2\|__~:'csժUGz!k z/ e˖)[ e㚚qSi׿R^G_W\%@ ~6㾊n#\ DNZB)4i|GCTHܲqMMA~܄=FXb-'* A^{m%6MV ~[?Wƍ!\5Jխ[WmSNQzSL_}n6U^=%[<rCkРlԖ[nvqGu!5X97GmG>c?(mܸZUngn  MߪC:~j]wu)G2 L:Ur-꣏>RSLQg϶Fmwnvi'%b\k}Q0vX%cO rZhf%8oaԋ/&Md,XZje z-'|'I'd+'"_V=sK.Q۷w¥x͛nV5bMdk׮#PzjҤI)E>Wu]>P~3gu>"O}{;0/}[ƌcy[T"7xcugK D!]~4_}*t?}gw9dM7{~T8jTc81&!TtfC{?7s3ճyU?y8t6/@a_G'X"QeK?& -YFpcUrqh%V]u j@}=pJYQ mE_-u 1&\ϲ@w0ύbmDs<[^ۏnO}! t2&}mېHE"OvImuAt> 0y_*u 1&c:M ʗ~aB߾}_kg6`_t6iW_ʷI$;(e|MߺS%nLއ܏@IDAT?WL)}c;vED>Od\sMEO? sSN9_Ϣrqw]꾖qWJy`g 0k*Fi~8~mU_apc2,Lۑ@P6{,~.m׳yUtm~)ξbCaHǖizGn)cFz|huS8ki7~DI*t&8d560h0 $}m"\>8^{Y kΘ͚5ˌ7.' +ͽLL}ଳ2{IpI8e{m9 8e{hLn{2{9#[laMzӹÓ&M2&)=PL,ĂLi% ن&x!wW;+}Zƀ^wyFny?N wZƍ_=+WP_?;1 ϯ3fK R0c81z H@%@yqWmoճM}'̥݆Ih"h"Y3<.m&ː{1cl#ajB/ƽ-q%_\ )qAZxIr_;>}t).9/;<19c]FVq!AK_~zuA G߽{wlyk2-0nA\gΜ.駟:uճgϬti"X{Q>"+.Ym۶!JEx%:˅ya:@D{ Q4n_BAuXF)[k6J}Œ8d J/L=K8㼯(Π!g8Nk Vy6L6me⼯0Ǡ7D[մ/IjtE_pZk-~)me2vXz뭧N8G)Di$)l"IʤWQP~\N$֓J؝8ntAA  ND~yTUt7eTmtF%Rpm.Q]S>nm76q{L˪Tψ+ o]m?zyuM7nM?/EY~ȗnK/)^ظ䧷)pG'-ˆnXPe pTn]CvWѳg6wHE12FqNTm6^_|˜W^y$O==z['5L{7omcokd,F9nW_)z:-;> ;LZyaax{-zAgU0 M+F}2ξ[%,'OzbM伸dꚚqS׿ Bv@[{O>Yqyykd^U_[!D ) H gX=KyQWP] f*:QoTm6^6mHat6,kF&WatI&t`А G(jofT$޻ZBsϵ[ b"/ޗ炙H~Q4-ߛ4VZ 2ֽꆜxCvYdKLLTm6^ /`m5q]w”X]s5 vZld 9~aYe¼y~X0/$ޗ8WH@$OY}gU_K{N\FoGuMM_gR<tAVBv>{6l B$1&A@@U%$!{TԴtc ݆?\I\eWR~%I({#Y;0^@4a70&-K L/ #ofiԨ.&4bd✨ ԩNo+KI&9͚5ZFg~itqN暡WKK03(Lpk^:r;4GÜ 2dK_ꤓNҲIJi7곓﫥 ;ԛo +=䓁VJET}թlHORc2X$ (t Yϓ~6꾊nÿO ;An#Ӥ-ȵѦn݆rGuMMUIχa"mn#8+VhΊUF`РAjvjv+ٛ}wvW_}u-Z(Ԭ)]4e ۽}xLCə4id1cƨW_}UUƍ˚6m'Fv}Dz}(ݮu`Gȶ>Q6mkA]!ef|7o^U]dO[s]ǀ[bؓ/Ϳ;# ʾǛm޽ mj/GeOcH~\vep:jȑySM,Wq n#b)z;J}6ʍnnm&] 0y0y UH%ʎn#WO4vͳ γdE虒c'}]kn[8pU.]|kҵkW#~2,0H,v5(-[$@ \V*\;xխ[2l%|9.b[F˰LL̠V5XbEeϯ(ܺkd8 I95ppܹzq_{*a O?0f5ev]vQk^4l…Fn83"cTi7Q5Y׿K/ԉ/dۣ0DW BO%< (aVl~Jj#*0 GP%T6rD3ޫo,5ώ.n#Jjmh!7(e2="}Y_]C5X&SI[4d˖iӦe˖Nӧ;Bَ`M7U:3S*Euy|/7xCm'ĺ= Ě:ujb_̷m8_n_ p1<nm\[O o_ݦIľn#@ޅnFv.6`T5=Ƃnc54X-Mnlr!k ^uYF}e+;ӈzg-3g:Bo fܛwdeKLl_2|G*hd_~i- =l0e#W, xx=#T[oj֬Z`A*j}1CIE:uFbҥKdc9i(Cw뻃FD\Kp26 R?~饗!oO=TAWȊ󾬤i 2F{?NƊۘ9ywXw>Ɓ*{MT/*9s_:Z%N#+I\XW,ַRd@mDgW9 󟦾nFQn0J~TmAts)-*uLitg`Kr`_~y\|.C1J,-gO<&Md-O+(Iy39&Yl(-[>9,__s5N8G)1bsxM6QIJeT(aOZxã>>%&J' >_V9C,e+ Yv6#{G~zjLϚ5P@k8iE[o r,^Vi2eJd˗;N?to{2lyo䫥 N^Vq"yJ\w$dw?&z}JN|Kۺe;dRѠcRd$1 " xUEgW9 n m86dE$.(KI^@(-np.ŧ@a :+uLM6AC)-z 2y)J|:8Ǟ|I%_Ds1cle!w~ciŖ12ٲ? c{G}gNQ\r믝4IWTN{l^tEJĈ^sk׮d%'1id^=SK:;A˿+Yvb#3fO>9+SO=UWo.'\|ŹGj*{|PJ)b-1`տlvFr}_CB?'\]p+OBB2{<:ϯ( 1fpo#[W~%e_, Õ<&@ .6q˕ºRmќnlOt&o݆Hv8wEIBFnvAus(l~Ap%Z'AC2)njРA?zg8 4jH]FX_o]]&gDF$-ee/KU&zެӖ-[?|5tPX׮]9S,J$H -[*XL61ϭ&͛ne#… U޽mĹ=2i֧O%lw]>h;hWbvbl_V[)ٯ,*EFYBvyIϞ=ճ>kG9cǎdp9cUGꫬ`NoαnAծ1g-Tuqr{7,/ -%du 9(A kmDQȖ@2FuI^lK)$q^&qYU\(2l#5T'~^Jct Wt? (]bM>۰[|i;6>nBGeu\"AߋVK̗$ F nßQ1\cҿ qh>'#3Zr|b8?yai%~8+3ڸ!3xVPgHF:BN)^OLkC#Gr5퓳<{HM K+/m۶ ɦ]w5TN̿{F3[&/_.uzX^zC+cCR D8Np{˷zy Kj.7׿(x=܋\_vF$oh,$ݻwwҥ/ߝa=qqa[r_}w?3ha?q mCu.0c81zBz@AXM)b%d)-;??*Qm0iנF&] wi0Ef.S$k6V,ncBE|k둀@M&'ʬ! ds6~I;Z"]KJ9&YzQ&[|}UH&M|ɓB7;RY됤? d)SX6d+(rS6 v%{r6:Pz6?e;l'w?09YP2?Ck @O}s= 9^W]uz饗m|G)曭-h:uꔕc ;lnݑ1dpz嗕~PƓ{.r5uT5p@\wʗjLNȹ==oڪ-H-k48/y̳YÕ>&l{ `@aRmD䒆nlAt&;$6l~ ^[J#q_jt6LvB񧾽X]i[8Ē")3ge {v$\tiŮwee/IX?~/zY{#(iYbD|yi+f?XiӦٳg[ mڴQnZgu 0ao,+%ѣ&UV)e8pB PlMΉ0yI+EǼZ@a,53`VElf%]+ly=l9_rfn铛lcRݢE>-)`5PZ-{$B$㦀EW0e>X0&=(/4={IVeen#dwmnp._ܱq˞莠(M]K$X$ *@ @ @ @rw@ @ @ @H# *@ @ @ @0hC @ @ @H4 2A @ @ @j8 jx @ @ @ 4!L @ @ @ N> @ @ @ @ 0hHc  @ @ @ @w@ @ @ @H# *@ @ @ @0hC @ @ @H4 2A @ @ @j8 jx @ @ @ 4!L @ @ @ N> @ @ @ @ 0hHc  @ @ @ @w@ @ @ @H# *@ @ @ @0hC @ @ @H4 2A @ @ @j8 jx @ @ @ 4!L @ @ @ N> @ @ @ @ 0hHc  @ @ @ @w@ @ @ @H# *@ @ @ @S #rJ8RשSGe2ZjeQ>6}~%{GF~G}Вm J.tRid-FOPrɤ󶏔J%>h)QPR@JmpMJ^[i?J&RMJrMc[lδI;6m9&ŒrLp|$gD`ڴij̙N;wV:tpnϼyҥK^[ZNOy Eo֬Y묳/7,YϟѨQ#պuk'}Dj͛ AL@fƌkF{O:'?ۭ<+0R?}tØ]vnݺ)1VX,XiٲS~w-Z&M_0$v7Z}*qŋ*cW+x{=%s窅 ƍ+yѣr-<鼺N:;)iNծ͂n&IgϞ܊VZ&ijjy;_wuU0 xMowsQr\eO`ѢEFm*؟xm֬|;hڴid/ n=%nAC܄ @ TUVG}T-[̒=YWU|IKAVLoy^;C^}UNv9(I&^ 8P>? @  eO @ @ ĸOL4YA=쳖ACe{LOjs @b&AC̀ @ T~Z,[@|MØN:jvRlnLp6h#'~UC@ @!y@ @N`ĉ_ YtN:$#.oΝѡC_端R+WtwprUjW^AB2M 0P\^xcoo N-HlB1Uӄ.K-{3ݹ;;}g4{9ߣsV,OpYgyvѣG=,   DW)'@@@@[4e]&^xzGzN< W@'|)SȬ#9%\u22   4LmD@@@@ n3ϔK.DʢNtzpM9qaO[rssij>Beehp;[}}dه   A"K    ]GիW_,19AdddDv%:DCCTUUGK(//:⃹Iw&%%Iaa4777`a@@ l    -֬Y#}9𠺺Zn*='ݻEYb_^= a(C 6wEJJg@@@( %hN   I ba߾}w)m&믿^,Y2.4D<嬬, uWV:::ѣ~v7*tsO 1Xޮ#>1$bl}h^kkk*ę:iiiObBĜ3ZWWyQN3ygggkIoo2:NkD@C85) @@@@okhhȓL/-^X***$--=N?ax@nv9s ]4{jEiN hЋ6/[/ $6>L'6ظOvV{ߞa_x2\%: dʡOg'4(@@@@  RM7$](6m$}}}}zmƍrwyJk@5@a\ "  DC =DƜ@@@@ .tsZt|_̠V\)w}!_xs1^>sW VCrPlF@@", x@@@@_~]Vt趶64SUW]%=_]֭[YN1a“ia^\gW`1}GlXItd#Kj*X X+{?.'PFk=w Ѣ]D9uBľI_7Ŕfu@@@@l/?TWW{S0R FQ粖   @D!   kuqMtKRreʲer*)ɏܝױn;G ˽W__/-roa<,yD: 4zgg@@H\!ykOl }?8,EyH>:k9 ᳤$@@@ .,;jdt|F]'?{n|f\⥒=tgu:W{IIt>@9iii @@@੷/_#]'Fws7^\-{̅rgIUwuL9VN C@@@]Kŏ_g`qxdT|տoqgl,000 +uĆ ~ lO']]],f,  -08<"3Xhsܠ&>8Œ)h   л#~ m;o6)C#~CFMY__.>`@NPUU)O&jkk=-:tk9sYA@@ѯ˛nJ:zD; !87B@@%Qpq CCCpaGijjj<'͕|Ϻ.,[k}Ϟ=^޽k ^   8"[><p p t 4@@wOwˮ =$L=!@RR,ZsN uVd oDG]0ڵkE̙3E&ky'm瞞yw<͛'ӦM󬳀  )066&^~DHch+9W%!z    ,GBjȨCGt2F NhhhQ4PA,}GzyY7/s9NٸqZF>/6yF@@sU L#<H @@@@j bZg @ Q{4?==kݳõper5\gΫ7oW^yżYJIKKfYF~mil{GGv馛$##&:2Ã>(l={|ɞu@@@ q><rw4\F"@@C":mF@@T3"QF,""puɱcu$zH***ZrssV=*^uЩ&VXͼ*7x???|rwʜ9sJ>9rk>Qϡ:-Yg@@[  Gg@ rNW''?'r!  8@`tt,Z~ , @t[oUx ٽĜ:UDU$''˺uK/pw~3#4ht?SPP`:  $X.\$R7АHM[@@@8(ϒFi(όs%JJJAv'|3Z:NqWGphToɦMdΝ=.NqE(ed  $@zC)] 30   U٥hkH[2$9x(++/̞=;c,Y"q54:E^^ʼy$` XmjkksO3(:W젠8@@#u!ԤB-&'!ẜ#  +pީozaSf}<"@xrrrdܹGxJ.EAB@@8eveJkW?}k?#@@@ª"Y}+3fJeINs    ğNqÅ'ݰlt젏OcToժU(;o!ǎ&ioo\ rqwP@@@X ˾cm518GXVs#   M.;sN?P SϔT hF- <ԙ-[րQy䷿zթ[dϞ=SO5\#W    M҂,~J[~5zL~vãv΅   Hv&'g7|\I4kV)KO7Π"Q_עk0\cZ  DS`k~Z<Լ3G @@@&&g_$)~~eeͩ3&ar)^~e F}RSSϗ˴iӤF+El"rg{  D[@Gjkԅ}G[嵝Dh엤$,Y6}QahW!   CRS9.@IDATKʕ+qOA+#R!z'WY~dPVrw2k@]w%)߉*7oʒ|+`c5\R,X ?w=iiiFV@@@,Q, !   )=o2)g MbS\GsAGgϼ<;\ Wv$7nto>`2       $<00sgӀ~snaѢEu_ VjϮ7xó       0BC ZQ;00 MMM3͘1óͅ}А+V,OpYgQSS#GXaz@@hꗷv6iu-$䦍)dba<ɍ    0 SE5G]]y`O>S]jt#`N۷o' 2   /nӔt:=ȈZ)ːΛ/_SQ]@@@@; `1F70)'>lTArssij>Bee;[}}dه  68!}-il]gwˡϐf7    ~ S24}Ӯ]V_4p=AyyyX+#DQ\\wIIIRXX(ch𛎌  JOzww^zqD!_ߔu~LF@@@@ fn$[s= 0{ncQVX!ׯl϶P4`aAwta42RRR<#  P0Ѥ]A fxF@@@iꗱAN)#C| `9h#۷O;e m&믿^,Y2e2h@9(e>\ź+C+=9i^sy˱#`} D7:j200 Hu${Fk뼆7F-} }v!P6:Pl?q:>k?S%9Yk J@?+SOO 7GKNf/V@@@*pMx}A0Ȉ꼊1H2oY$Y~bK GZ l:T-@ |}')I   B`uؿ?l~ ]v6tTN)@@UirM7IAAu{:M6I__{PqF;Bsz!0" ֻ,YE@@ >r Bf@@@|  c$5BbiA,*Tg§ n[[//ʹ4بwusZt|Qۍ+W… wfM;.7)7{$=5%289ΘD91^:N=l 5|Z^8@@!0r%lRCB@@@ Xg;|);~hdwԇT ッkWH hY;˽*\_kN:o ӓ]bq',   @ %eȊ7j0y$i A@@@O<®ΥGl_:zB9~Ƞp8148&uZP9~]RRYgԟCȃ  6R^t>B`Cdtq    KGw0h 栏f:p/@@CMC.Q/xTNc**̕T---^KOVV__|f͚,;@@@iW[.)Ɂe7P=o [*wΊ  ċ@3;{>܎ia)27+<儥2Qn(777˽+244$͓nPUU%vaW[[+3f̘>3guV@@@ϛ&]}_.͕}qdUSȈ_vdB@@@._v;\)*B<87դl ~*OU)b>4>|Q}+`-[u؞={'Zٽ{.8XA@@Q/%$gzrJYaSULye`tuE@@l(tFs:(#\:!e*Q !,))I-Z0j֭~x˺vɲo̙AFz<6sOO;:Ĵi<,   Ns.o_BV4]2%99}7,* 囟Y*9a6yJk{[@@@S ?;Ϝg+Nxg |欹!S$fm A<Nݝ:*='@ r>}guᣏ>w}׳H;<ϺuappPZZZ<5³n^8sD렩S6n(_%%%Ŝͽ>âF⋍E@@@)ɲY6cllٿl5H}xx8't@@@.˕9,/}V..:5M^q\FhQߝ~|rO/|g>~+%--kyN'n5kx?ϽFtdDzo>gϖO>ٳ  ďF&`t}؋   _ "g o;֟zĝ_X)ELwiveFhY_wur19~f:2C=EZrssV=* d:Ċ+֢T?;9sHUU|'rѻDr-*   @ X% F@@E͔G_-'FIlnY D%N񣯮msd 3R\ږQK0B:?##Cnq444ȶmW_x3$''_.g \;SqAyפ+!??]O~@@@DЀot|vڊ   ^4XHNN], ciErWΗ2 ɲfiW!!N*l[%%%]v0FkVUi Z/--o}[i&ٹstww+:==]."C2H   @ ̐=O@@@;sk= v٩rҀv׍W58P&:OF$HKl~v|4إ'|cɒ%ؠSPIaa̛7O ={w}>6& XݙL466N/QVV.   3n™F@@@; (yؤUo^}tNJ D|dPLj#su?"z"? }@@@F@@@ $g/_WRs\SwJWZ嵏*@@S{z#  N@NU !  8F`vygI{֮~IIN,WY()Ɏi EQ"   ~0:HdA@@Y 3=U.  @ؽ   chpLWQQ@@@p $   `!    }hoP3@@@ ;T@@@ #j   p@'QE@@@p .*   `Gjbxx؎UN    cR[s*   Mn&A5ptttUNIJJ+/"#066UpWW$'sϘJWFGG-]"zSOO}b5𶷷`UODbq/hѯmbqhhȫsׁM:>I~~~ؿ. @@@D~OTڍ E@aɟhG*zy9}<`6H3Z_ֿ1-kY)JXhX; É"  Y@ aSP    4$dh@@@p pa$)@@@` o@@@HȌt͵lêE1Om:Wvv6xDkHpT.{G'NQI1z'1 UiАgWVV)vù5>]5?ihF#+5.a͑ 9X?IL'|2yF@@@ @`oa+Ɏ    0 @@@_N}     G    0I     @xh'!  $`:AM3@@@@ 5jN   Oڂ   Nu B@@pM8#   8Y ɕ   B`hhHFFFbqjΉ   @1_& m=70,Ey2@ @h5gB@@Fg   @z?_+/lD:]ִH`|J.@%@@ @@@PȎ  $3Q˷erVJv?6<#0    L79@@@D~& f0ۼ^20f     `@@H@^+#^Gk:Ļ ô@@@ 4@@@n ]/}pDk XB h^M   `R(   7]ʎ#!gC:'7i    @D!  8^ett,v!9x !z   DTR8   xc]!AGy @ h^    `s@@@rQ@ <9F@@@)   @sr򂜌BFr]ں%;3Mf˙ +(;U\q$@@Cu&MA@@ d@@@ ^fܔBW0C~vx#B '<(+>%KeAUl @`ttTz{{%7775G@@MD   X\Rddt,薬:2c}`mKoѦIOkozUvũrye!iiig=q@ƂS@@) >Y؈   `qMp9&%%Ur-i%kS3q,;=dl9ikk! ۴5*BPCT9   Q !jԜ@@p$:mD03g͕9cwEM?wv|x"!^{vL`xxX4  !tя@@@q^|U)-^~j@*[dgMsPב~ΠMFFFEF =퍊288sq@@@"_4,#  +dV5RVW#מ1K~pْ⌟oVW&Fijh7],z3u"'g"hc:;;z±G@@8!@@ @@@XPY(?򥋗q$' r|؈ aABM=^GokkFWm/0b,`L=pz@@V&8@@@LO?Y8-zo`X s3dNEd9{@GBwC#4XG]"o!"Щ'233%-ymAy  8Qk@@@ui70b bC4tB)'NX@Dz""  @Th 3'A@@p@q^fXj[r^ؘ: {&lA :D@B@@g 0݄"  DG@ɨ( d\ k---% ɰ0 tww!@@@9   8{IeH'H故T[[[ex8.  fР'~Y/?@ @zuq$IQq;(r]< @@@ NMB q1l|e{ɾAp5AGuΥLB@Hk](u-=C~7 KgKfzbL :E}ooVd@bOs3詓$3yXzG'e/:y<@@@ Y_JGؖ;|VWu3dzw}ag>6" ħޤ[U+^5ϟ&5%{"%ɨ Av: AqS Եt"˖!-iDR36],9&@@@ JL7%hNѯj<6)wJ9wi_ǐ @@ >>Yl<kvHi)|akr9Ȉ;A /@@CvϺFg׈ RFҐ %˘$:lL}i퍫}g#  DN/rS2 :w0${,˗YyI  #P);>vMIh1=SKtuu3@rpqL&00<"״LE&ܯ; y)'=    # :zdF`Ҁ~̡  ':*CeInB3訏fR!% 0Nhc &K:DzҰ ~ cmlndŰ ǥGz5WBY2D}ZFRa@p9::Sq@ ϹFu}w 6w#2s4kq  AGf W/=!pz'?ItQ=XJk8" K^Y+#>~$(p6\{"y5/@+ jxgo}'{{O= !+R  tJ f q( twwKccϳUo$Ѹ8)=:Bð.ʈ9a|ࠍѾLJ}t&zMUw5O#:D}H~y<~S4?slȈgGG{+!`k-ZXHY!$#"kF!-r⁕lQ^p]~prwH X# !=G4E-RfsvZ_GnE8NHAˌDX_/Y!G{ z:U`+C=#  m `5yno1gH@EْwӓF$%{[wdD7વt } 8@!`G6!q/ );cM6h /➪䢋.uE555gijjF:*//iӦٳeɒ%eǎ!a:菙WZpW4]֝>I1  F@H^3Mcm\eqZLxQ[82󅺬ruș\ /_t״#ɣͫϔPb}],(jn׌9i#҇]? HH}IJN4^z@_CIs!X#䢓lgt~%s2Xߍw,}oܸQz{{ݕ6FyfyǝBl_p_^***<&[x'wTMg}˖-KKϖ'^qϿ4v', ru@@?֛K^"{3UYAQ\?p89(rYKgP  0N5t /4@GJVڹs?3`h0[֟0Dv @@b)Q1D,;ǹ 7W/]ʣ#',P?}{.Smٲ=VNGVկ~垂b̙رcc_$9P&[5LǞ[?LBE @@ uh𛊌/𿿰R׶Κ&9+{3Ӥu934Fu~kD_(7΂`@@/ "~ULDI`iܹrUWɏ~#, F 8>}h~c[ heSSg׌3<,.P%:9< ~v@@@aw~R 옓; uB$o钙ɰ&"py ՏѦk|͹ dFY^q  ீ30ZG̐*]v\x&O떗KGGL9:Q)";;}n}:9 ؆  ~ч6k@)>h~q.SO')) ]wt ;?k!ImN/]C@`t8(483ϔK.DʢB:k_|###|bnB3;؈  Р#AiV6J B r:mR\\P2*ɕ~cޣ啜$׸%7I  @3ޱAB tDիW_,1$߾}^={׺bh͕"]vPR4(BGp#H   `?.y}mP#hW|X@#˺$/!c>҂,[/>:&n=$;kZdHr1̈́3 DT"KXf#.~Ky֬Y^Ɗ9Zn*=477YϻwXB֯_³@@,h~ׁ^5@oIOO !#v8jGЈ4JfHi~k\FdS_Q@]7ޛHR+^ pqջ=uT{z'Zضm߿_zY$SY4NB2eֵI0ւcƙ'}>1$blI ##Ů{faۖY-5kB=J_zu_&Rd9Z_'':o'̽2Щ'JJJ逾 d0 k?tMRPP`垎bӦMalbƍ;ংqZl@@@lm^ɂ/ u˴1t"[i  @b}Ci+CɃ>5pWNN.]*_}3h+Ww-ٞ^𬳀  S ͹[($:2`I0!9N0 p48E@@ :׹kIBرC6l̰h"< _~]Vt64S^XX(W]u፤1gG#/XZп%NNoϡ}8+K׉I4>;HiDU@()) < @@ޣ(ey'~`|+~gddHeeߪU_c@&󷈀KUUcjjjk[E#CmYYYT.F:cǼOO@ss,:u.}bhY]>ɉMe8[@V7~Ob=Q  v%CzÀ  f׳|֞IffQR|[8mC_+FW |"(P76@@^p!!b@Xn, dxW]|xY24ht !   ZGa0y& 펎 q,DL@#4J͈S0  @E.IgҌЋ>|^#ʨ [^^^uzDXA@w( }<%GK{A (RIOOxB@@ C&B{i#Nx1O#&_^=ܨ5:Tn4慍Z8  hЂ/CIA;u@ :VII4@@@ t8L.WҚhkk{Wtu#i7,K,16#ꔍ:+u   ` bpp'y hy#QsP\\7G" ă3C/҆x+PկJuuuMנ 4i޼yrm] ~S@@`ĠIY;uC @Ox$@@__Z| MMM7ȳ-P#g>,~Ҡ߫S^=;|" R@olˊR),ɖuV@zF$@@^ѠS'O4f ZPRR,ZS^ݺug}7!w00jSG| 0O6"l?P:fr2qKMj  ^WI7]/,]TN=Tg6$j]WW's`^7v <~ p9Ɋ~˽r~|rپ}{r5׈3'Cx+7˕W^)iii^XA@@ZG֠~|KB ^hX5[  @0:ZE5~!ŗ޽{Ը4%%e\@quɱc".zH***ZrssV=|^jbŊM,#  `;}Av]C$@@C ); h:D8c   e4L&>b+SD:eddȭ*O<޽s:c0tuɥ^  v20zDBHR&6qiZQ@@"//@B{ Gb:5ڵK|Ih ֓'|\qYG@@ z#1wc?Z4DK CU/0g ;S# D]@/@ 82:x~/}Idч)(tTB7o$@@$`>qT5@Th 3'A va@IDATFPIB@@ D$@*#su?XGTpXm>q ]%%/; @&SIJ$UDyڝpC4@@  @DG}iNFMNNY@@p A $x7\ve3Y`gNAa:  Xwkh7_TnbIm@ ! .2#Q"K8_```w#-@@R@pud1 ׿vOa?lܸQ~~E5e˖Ivvvi#=̝;דW_Fp8NܥgWϓœqש%.֞j# ē3SoF-:9ѣGkYgnJiiֳ  V@MMMgmWQ1 @@zWNAAB@@ Vz wyu=s0z3h3gz[ <=,   =SFj>U  ]"~!!W\!{ݻw}Wl͜.RgYE0m  1БtlFa'pj$@@C Q:>l%##$%%%2|Yj{ZW_}ս8; 4րK=uj9S ~i  `wFg{ٿ~t{F"|饗DPpzz婧?¨NMq{e@@b#/^#Ŧ&!P SCyJӑZ`NBZZ|sEy6766T[[)*77W*++E}萞0~"1V" лk}ZgYYYoۯo>SD~G^ Jt 7Hyyyi@@'381 k4ql.miAXA{K!>)'Ę<'1F,IEQv-l}|e{ν{kN9s{fgΜ9߯Ywq'4hjA3gZ[hp+',|Ұ`$@$@$@$h/T.yUoPl2;wnÆ 3ۇw0      8jɳ37  #6,4h Tk *AVUUiE!CֹBhCl$@$@$@$@$@&CHUL"+V-[Ȟ={ȑ#(&LnMrssf  d6ms=HHHHHGߌuuuy$̙H(hpU'҄r,**J5Q >ZgвUy}8$ iPי$   OuO|"[nc#G?.W `|V x "o/\G<===VD 999bN0j1P jQ9aa|gIHHHM9ԙ, 8F ))InFNbl     mt0 2uS 4=j5//l !..NBCIiiTTTf_" Xp     p@[[8Gg|      $(p@$(h :Y-4f; ?tHuuYjӧwܡ0JP=a&SdddP`IHHH#$,1 \ҚI p PO?5dffѣ\+ (//7+G1mZٹs;vL.]*Ǐe!谥C^\}wvv sYMԀikk + A7(qVsG]]]=RkT[(vihc鯙=Oz3{r.BBB\jY2`A$@$@$@$@$CC%bQHIwusc[nqIGٹscZ: 7fp.v'V`/|{ߓCjI/,^&(w :e'1116-5~b]L0滵  ,|dhx|tUUU] / @pe/@&u%Gjhh,o@?RTT׮]u1XjW^yEq %fXm    # 12k@Xj+!)S!    p|#ՙ"]A$Css455I||>%''jzs-@pm/U9/:!Yظ8up"33X i!::ZӵMj%''ӝ\6zNDg 9 D[Aˏ8sـyFFW/ip@c4m_C1P[ЖtMo3OZ~˗/7Y}$@$@$@$@$@GQK𿒳$@ @A+(9 tAȰ~zM&sO͘ƌ\ /H5:G$@$@$@Gd#;K4     "oDkڐ(hpc_} wK,94pjhhPgӥAO\t):h^<9 z[yM^_cy|L*7<ђ?=Q +cP>쳪XhW"ǏvM 4 bI@O=p?a): @@[DHHHHHHH<1PJ$@OFP-_L̐$_%77%<)0; |F!>|)h0 'pA@$@$@$@$@J7n kXn    lk*g ǂ x Gn?CyiWRSSd (#:uJckJ<]dqPڍ*F @Cs|Y7   F$qT'X,i43pbB‘#Gdj+ m@llϬpYiii.Gk7%@xh!%%EBCCMz@EE9ӝ.E&t1kӛxvaA Hf__@;R?`Z-YsOO1.\G-+22'hx2ޔeTT=ӣAO|MA#\ 3|ߖxmqȮ]Լ`grW?OW_9@AWSSʼnIHHH Մ~p>|kYF^u9s% h!!!bw@`N$&޿&&'{%|;ڸD \K,]&}yz56]Xx G/^wݻWva*GDD|_uS 2m~'Md4`' 9deeX߿_>snϟo 8Cjn̖j3    "7Y0U; V!f     +t)KB$ (hV}dgg ـ:fVc~;1&ځ)SȴiL *o]pLK>SnYd 8C0UQn9C @ x--[f&wUޣGvURLHHHH&0.;+LP`#r,..VGs /[GҺ뮻O>rss>09>l&OUpZ`45L @ |'V!Ǥ?n/F*Y妛nRS!B$@$@$@$@~N.f  k(hF N>\g =RXXh ᅥB;- jK.%DԎE&HHHH6u#l`      K[lmS`Y鞷]oȱ20^Jˎҙ3gZ1ZEcpWtRu#+WHHHHHE G{txH/h.(h/. I$@$@$Ο?/lQuf*=-_OͯJEKi?W(o Ǐ |r⇕+WN/ MWI >GyD'V No|zjYPr[>cr' h`9/ 8KW76_òviih8g<  "7lRSVlaH m%;;۔)+,]T-[&r嗛KJJ8:"W^y'$$D(h0 u3 p@q]W~_ڵkMZY[rI'}7,Xl6;HHHHH @@X WZէf03ۗ%e͚5F2̟^zɴ G@7@FTַAVkwtȓoIqHHH ``з1`c"L{l#o6MҢ⭝}^&p뭷s='X p?jyJ\\'?+GHHHH kO$~mդVБ#G~'~im{n߽~k4iɓns|0ppH j@ "Gn{Q{zN)mII$@$@~L&E1'Pj%Gy<'0~xy!a]!;;O?|ߐcǚ3fϝKK}qhkk۲$@$@$@E`HB l ';{Mg 6m2f_?VWWW˱cfY  AU5/֞I6N "rlS5>>$<HH@0 +m^G\&1a61b`NoCIBB:Ҥ4x@CC   p&ò: 4tJe{T5ȹ6WY?[G嶑 "!2ȴ)a<"4\YdpTdF'JD%C g!|:uʄ9pm6S<̛7l[LfVSР/ C47LLLv8/#x@uxTySFXP<HH|@wZ=-;O$,r&<K"afRvvv \zuY?   7wa [sJSUD֝:Ukm@@:Ƥؤl)!M{ pa-9sF]zuspLKKJ5~]sg2 @P Ь]n ^̈́9rYhyH@ww*ь]BHHJBI #qAv 7ȳ>ֲP~׿u}ʕ}pBiXx - m*5%W6 C`chYڠrwm9s>!`xfAA@‚YA $?4,HƩm}/ۑGQD dz&DDVay])ޚ\S@$c䭒rgl5mZlwnݫ."nu1Z#G?.WFc< & X@g({ <8MSԥA]!1프( 3Cl#%`F7fvc ;걜$ ̛Ɓ&NEb?1CWx4&v5G]ͪ0o pBD=*>P2|-[ׇ!  g oW'8[@</ m NU 1KɾDgDumV WɆ#8ꔢE|d,8fuA3EoљSy xT@cѡK koמ%pmAsx&2 >4j3?5gExǹmLIN/p,Yĉ45g'X!>>m?QL   L kL KhC:9Pp!Cyc yJ^`qUKykwf|\vPZ닭log7?/+J ZuKAd| EAGUYucK{=Q)u-)Q22;IF$"2H@!9?<Ce$04PG+ mqPF#>bBUUUW5$@{m?g!j0 =$P(+6*;\0ew͔ 8;T*=}%e$͗Cʌ3  @6Aj9H˾qϱ$'Q96˹:]+$k+RITh<,*++Mb`3I"!Pmm@؏_x8btHHHGbww3FݝmNNq!a0w:lE;tnDF?"g_a[qU&k g[k\1Wɸ\u< $@F&1Xt@*k?K{mVbOGK\;lA,>az9 @l?n@_hLH&$#beؠ !zjmsHhbVA$@$@@֖h2flxZLX8d4t$F8Q@!RޤKNpN6Uw&Wf\#c ].hxȫ,׮]9   kv3o2\# ;&( ç1" `QuQ~fM6pƞ\:4 3h nO-]MeE\,lWGؿfǍg  (l0Ί1IHH0 AJH49T nv8tĄyCȰfqߨr[ yxn5Cܣ$4$k\a  p Ȇ 5@S ?8\-b ->' 8G)%ږ555"o`#XO@'U}}@`!!~'M]Zڮk\cDvJB,h~FmYY`"Żk1dw4Y' 6bD $@$@$@nn_@IDATA}հ}=]ɭVv\Ir2N ѪaS{PcUN H"ͪ ? amjYt87p۱j9^(5 '0LhWۉJL!62b$*"T;:"[)fUHrUz|` >ol\Zz].#Z Qq34fH:Uj`kJE]:~n@0-9F( L$`@WW*V/uL{ԋ됸\H*)ai}EԤdI5.9iq2XF0'taUrpBR1FFFX.d   <IyϱEzSxC B9t#;O %2Np{LՒڲcPذ|^uB~TQxG$002ۛɮJQ 5'HGm7?aX{Rբt)`=tUW}] c4 4@܊^   uϱ ao6#bޑsK&#,4l7H@ĀLX[X&N S+%KHZZZּB~ Dn,Z#ujӦMrYzdKdԩL}g δ)qfbh b y 8@w rR|?Zc"1*e1 #4qE77KWSbPy%fk{ %5}RZ$DȘ!)2w|\5e( U`!\(08OB pDGGn(BA3-1<))ISW3<O ]1s}3yv J7wێ;HҪʼ 9rl`No'1oXo*h/9W\nݙ0 Z`V.ݖ1&  !w,޷ #pV9Z641 @vJ)PE:W"qCp>*݊<,7ضސ#/ie$ZM巵R^"O}|) $k00P U;QI~M&ɄhR]r^G&o6_2um),< $j* vMO>L̀/\F)骸ȑ#cS֭ 3giwm-?K*0ws% Fu]O|Nyhtpm%WH|x ˜L 5*NFY3Y|dT&ux|l,LIuI' 8w Hf)͛7(hFH4 i>("u hWw*c״5c-?yy!1V?BzfBt#akl0mv#h&pfW?GN4UڬrftKDO|6,'+ |믿.teQ/S<׾5̜9SF%I${mqgZ{4o3Qm  c.e :pCbSɄ\0$e,%yOXh췐G&ߘX^홁i5k֨gΜ0 s#dx)A=8.EЮXr!LY8usquGLUICw ߽V)7B; ':Qd{Q>( Q:Ȟ)ㆦʬY24=ey2 T5DuV7lXckGG1"1OI6 P"/d_/bx0lٲEyioox`AAo73 4{lW^Qw={TQ>δ<01 W, $@$@$@`V쟊c3e2뾣P˂;gn BCBadNhewMqTgvS{K7?G𚠡Tyg~,; g˾SUO-ET(Z5%*[O;%n)r:xw,t<%S|PowJ^_W(->Do-謯nhSF(Ȕ;//5˜OA8常8?4*䯫nEb-}A<||mDd- h'Aum{ì#ëIZxp1bJb;@uVS6PPP`ڶ2k,=ٳۛ6m*hpg}M;,WڄHHH:&'YO{mh?P=1yj!'6VҢS]ط$\56Vtёl2FmE$@AF N'vŝ01/I0 1fh;L~\:VMK)hFЃ{v>?om 9[,ߺy:m ҄1`f?#ϼK:?oyڵi w-mm$@$@@[bpVypl*2\yt"Rf3Dմ/gߏ%hbfVpLa͚5fw۰aɓ/ N>~a9A-@aYbi@ w}$@$@6d&wT}o-,sf1c4;6]"bY$Fww`h8mjK%+-WIu;-ЬwxԩLN7Ȧ`BI}hpAҡ>씱CS%%>v0 YxwcxdipHl2`:.g̘!]w <أ=u)?JMM5m[0YyyyLOf4LQ|R  p vdp='Uu'j9G(9_ 6%~aTXk@՗2cǺ 0~ټ$#|)Slb&hU W\q4t-7h@x  ':rE:NeΓs Z=- hqU,'GC3Q\h}Qiufmʧ7M: fo0ʶFyVUx5B1]H<P ={\{A@)))ˀ>9wmp}4>~~eYh  P{њtŭ 63퍦461[3zɉM6z 0dyj]ӻdefbGtXDؼj4ZOFK1M:$hغzSNNWx@MޒnMu[_  b$&*~$'bf ?ݢYp@穭c QJ #}Y2h=Y:)Ee R< f~"dHX5qM KuE[2 $@$@Fn:+Vc.#*gHҧ@*yUxIvů$7Ufa̙M#L4y }]ҥK^P;V\)?LrHH7!DL2 Ιj;ud_ ANq{t=RQk\WP`sZHqz0*^q919Kg$?| @` ;N֪6j6/~aO>@^8?^}UywԶ-2'W"ګ'ʈ>H6ă&m;vFb\s_|܃n #z@>ma{,8GM+Upu5o}@?^ I}}x9g%Y?fdWW^yt7=>"v<8|D'Ix<-I CCA]E2 ~yUwE:=ѵvyUv3Ax饗djhg?S F ,'p @ct A*ԫ ): " *Բ^"a1~Lx̵Nqe]p5tYb0}h=xx|\?dK[G:~N,k eզXtuI}<~5,f0/Ku1Ne)P/%w;\<|}hWb85& $Q\s՟XmX̐//Q\Lx|5f*$fР)nP|Y + ;{ߖ'OĪ돦 J`T?v|~\+<{c (UQ廷M{{H|9bZR1YSwR\ьv'foBXkTݜt܌ \s-ÉsV}+~FB]iT.vB3TL-k1are# FKLM{}LY^yr7]|;D=b v`0Fr&&-'͛3mcc`%0X SrnbIH|]~hWwbÉOV 3IdLJk Ix?P]]-]uJ`opU8 Mps:yeq4G*[)FSkCv)ʐ4[evd}w .wo>SfϞmZwveڴBZOڵKg ,@X޳|Åܙ~ѧe,kLrU%|w韥~oX}XN}LWv?5@ҿ7cbbgwKܹOJ\z gcccO kKUK{=T.?I#M ۹sMANNCN:޴ڪ)m,[& -Bk@Ѭ1xfą]p]&&Xl@'ag8varlzye2G0$-V_,k0nكƸCdZMAh\|9A*K+D39/In=T՚ȀpIQlýdqIAZ}jYH5c|^VW} yEXa.j+i'Vl5Eғ.6 #DqGgEvi~d4a„\nn={VM n0|:-m_?ŝiQQQ .g1eͅ6xw>6<Qi4@g 0c g4+, $G^hb6<ui2O?xc<@rQ~hiS~q\'IU0b)Pp '\UNC$@$x,ȁWCը^~{=9Pn(j>wD$p zΜ9&AC]]<_ǫǚf Kʕ+`v @` Y _AZ'~= hA)AƢ/}pD:v,Kwq &0EhZ|\VR{ANM17ٚC;).[5ηg:-ز׷_Lzq$㧥δ2 xc&n/ߵ_ -IqHH@#@  ]?: =>]*#a!eC1 9Р~GG?#a}L2$h@Q.Y޻w;!_ 7p$&,79[>йk)hו00וiRZ K] ]tXSBg`@_:  8$K0H0Q\,B=UMe|0++5NnlLLp[f)h9 mMg-Ͼ4OpT^ݙڑrtyX#gjeˑsş8 BëNo(*7ņ3X|P,+KjE{ߨeX!*VϾx}桃BwΫMr>4Rb\+777a9pZ45r뭷:UO?T^uӹ2j(6W4  l@,U1 ɝic]os xWkba|u  Vx3㢅6{N)V.I'##9qϟ/>7K<#5,X@֭[gOQ߉μ_$$1"FBJ) Mth ZLF@Int +RKfʂ rIշKoHDEJJ|WD aO B v˶#erI31 /ɒgKZkf)xp*)ilE ,d7L~t_fYٲxڮn4lbZ\.hp,|C?4UgU{_v W^-8W0! @?СCԓ+--5dIwJ~~~ݙv̸|= X4~X/.F$@NuI)ݽ=fyx(s yJ\*#0 @5=zTEi)hΟ{Oc5>Y k,̙(#2<[F$44ё3qaD2teDGg&`~ z2mx)Y O@sɫ rUc;{$"\`H~& `{ hRyLT~P6(D5: nt\RNdΜ92b9qZKo_~Yu9o<_Rղc5BSC-6I&G}d:Æ sbMδ2 1<߰ز_ ׶5)|E'*Xg?Cδo''*$\%d_b(># #UA8~xy΄M6 L4Z4H^^|'r1ӌ$4328hlɎ۞'PZ'{kKԌW+XFguqZ3!s$"K iH褁Au .hRY$y4`p l.3m_^b+,rEj?^k7;gи4q9}J8(wzt$d/Y,Y1'$@A+->> wy`immU&$${ xɮX?^.(nH:r4 (=:bيLMr?p4~po CY[ڻltq KEųf@` K]NK'ŝ@CtDd&4o@VV*@w#}³J]؁O= 9 8=FsΕj"x+rZuၴ_|EZmϯ;w@Da3BM?mI'  5vɋ`s9 wϒH~c p=48R5+1c#0. x|)9f^]QuɋBqKO?J6 :|3UPE' 7`p"`퀁R0q` @&+.%:::tc\3=9.g㙉N6yӉkO˚6Υo_(a!q2T4$EJ}Hΐ0v|ټn80rHyWՁ~a%|wq|[>ptcV ٺuj vڥ#>3M׿UN!3Pfvt˳kFqTqukɛ-w^^`0Dhַ[nO?TP/,,;cmԨQrUW]%tե,{G?\T݋KNNӧ͞կ~n1ܙ݌yH`bZ&m'MFH,a1X'%/oO*[`ec1Hlm7VN. 'P4BsO[q,w)V6TV$Ep\=AR",rH SXo_Y7r, Zb  \6.[oh Yy1Y0󸿙ReU㕓Iy[_Z-M-)sw.5BFǪ. "_җb.P[[H355URRR$==]]7$8A…\IXTT.IB#  gHD`Jp9QW.孶;UMT(/mEezpj ~.Cǂ+Yz7@Z|ӈ3_Fd=BADuG2LnlH:z*yԹxVuwbY}LvJTkܝ]?Q~.n0*&xy`3<ݔ]ZZ/?&*~|U7"WWZl&ɉ-='?0,k@HXk,M{'p8Lyx&d;mBp5񻃫W進'mvH3IaI1pre#EPlzeN!//s!XXto]]f^etHȠ;u $66@7  ns}(KE$/ yKU&riCY {G̕fJ=@$Y^5yꩧTi&w%tI_蜜. *n(k\k:[şFqI1/#3ͬH\O@P 6`7;QP&M@stL1S ,7Z5#B7ϴ7\('"BYd SVmk4!N ^:RbB,d@{U 3w-E+gXB!D Q#,YkxLRxjˈp3a7˦Ćя7̣=;{{ ǽ;)ttӈJ(&o۩i #g0&`L@C`ddkۨ(ߗbHqzF,E +[EK`W.ÿksИ}ya)tKJNpȕ`L)=bJJJoJ3Z[[i׮]cQhheLD&iWC7SQgU-eRDG.fKɣpdP> ]~MdL?1/ee7+!*Dnp!h`$ eJ=b oB%F`L '082JۏVѶcU408b0T!j9wR*e2& n` 1N&L1]faKҚ\s&&G)[kӦM鱗2:t$hx'l)eN! Vjö%SXpGUG8),A6@྾0&pEgC__dm++ov51`tg P<,qbNl4 :C{]n~y?/`L a85*8UJikVNyij+"e["fx'`v!+2ZIKEX(/Uͪİx )lY9`%vm 32kmêS}ͥR\RM.)1&/t`L 0C^rl1|]JYIQ:'ӍM"!h,f6F3&`.|B@apt8l)7 Z+Y47vɼ 0p{A]zAÙ3grsǍsZ|v5 wHKch%̰8Z' b6L 0&k-`,62Z5v@L Dsg`=WU͡yYy8 0&`TPiMd0yi9 al J8 0%xxkG';jM"XM?qEp>4I>e:eee,hpok`'yix0$n(ꬳlgzZ$wyqi7,ϡ_x ( f@&foa&F:nX;饒ݘG)D&`dó!**`:zhǎj*)5U,L 0&`]}4Ll\\6o0o!I &I{xn(-rCiW:LkR a!2 2@&`L@]Xm@6q8h bu]/mL\ǧ >QR3CĬeѣٳ|M:y$~8Apw%HX 颋.?`L  37R9Z-aYl3&o_t-T u-pP|3.Ub&&ܓ N8A?uO% h}\)V%E!T4_,!DYՆcML DH<^Lu?H~LyhΤx P\0ND)s:mvN^OthC(!N0EϏG}nݪZ[;7˃>8N̠9H#HK/T;י`L D*\r,A!/K s`L@lmu~s=b@1vߒ&z#n/$n7z(Pa7otkma6[[$o>MCc#V=zvi.b_-Oȕԍ3 V"80&d biaUMN7A~$Z9͆x"wg-ʄA6"wͅCy6@3CA{ |b㮝teG$*D&D3 !AëJǏW*JҒ%Kd&p)A6H sZ hlD???K s`L &o pRFma~W W"N 3w$AÏc*((^0;JoTJ4&0MvI; 07!008BZhAn543+eʻx: :IeqD^Y`8dT\ۆwN]Ki1Px{8p (!88XO^ٵk*-Ν3 [vHrsY)3%`LDIn79guǒ:'ńy8KW;22F'Z)_Lha 0\x']Ro^XX sp8{ۛ›e{iKĠHk)FXp[A5k誫8Ϲ*&$.N]':˄ՆtF*{QrQg-!PLn)ҒC8 07&D5,hD*襒0Yy8 "76l_g\CkeZ[D+Vٖ7/_.鑟Ă/`C` j'kͮtdX y, 5s39H9M:S/ԴՔN׬B@'Drc :hy LBr:ZmBFbyWA'2$AG|[tO\k&I_t#vѮSKz+=&^ @i$f͎Hq>L xC%65EGR|[t $pd4B000 bni90& u͚^nz?:X-/5&<  ؉= od~{=jT>m7z6lp0~Zr5/m4ffP}ZsTa 0u ѡn/)1VKcL 0!z.*WO.!h$#T^~nK֭g0ꫯrO^{MޤbA0&N׶1]H.e~ Pek 8x'`#5&ޮO[+NHu%NQljL x =:ή]z~>9`DI; E&5 tgJeShpMq3Eә ̟HTfzBj0o- 0&,!pT){!3҂Iy8 XK+g}V:y;}K/ԬWVVү~+ 9lf`LR-WYRV{πK.ev 7p7 !(ۣĠH܍brb>NdLs.h4&$Id-bUO6ҎBj47|pÅ!nF&|0D5 ք+%k1L 0W',~b5s"y8 BW^y0 a֭R4Tf\\X{ܲe m޼ f]wK&`yu5: 5`@ྉ`#CggN3#6&Sr`L{-R&22bWosKgPlkh-ߤw^,N'khLB[3o!G7NBUdqX`L H]g5y%vcvnM 88x3=g?7??N8#f@믿u`L 0s D18|TV゘  R<=v!j0&Cs6PZ(5ƈ3O%` –^n W]]=.+S# >>^ZB&jhh9V\ɝH&Bԅ7@iOc⋋9j1Z5$в)4+:|\L ؗ̉^Ko,UڵX0%6י`LC{iƍ:y 0&%#-n0oxH %F>a`Z;ek `?)y x-a5>I`*K۪tgL }QI=:\ :7ߤ>a~;5kL 3(/:]KBpJ7(3PuajI7sc3GǠ9U?, aM?яk_TXXH_BHHH01R+whNަ9'b=#@0k0.[7̏͢`?V[˕cD/":yNTPmK7uQpFSXHpS 0&<@Ig=:R UiL.`rÆ R4999\꿀5IL 0&"pI*ϗ.^0Ѫcm904R.I`COHɾkwK= 0N=سgKj?5[̠9Hc=FvjCww7=3kgu&ܘC̍(MRo:- 6tV 914ad!2&l<܈, `L{tH#g{ _6{~R+ݻ\{&pIzN8lrP忳r E +R|PP$l`k θ |NO#+(\yZ;Gώ?h,W"|;r`L{ 8E[oiYƦ΀xO~B=T&0w&|."y/@7̏˒cmj1^OvJ񥒯hbX7ɔhS|0`L 0&k$R[(e4&`L x tӺI~SN}Í+Ь,ױNT>,6rcU"KpK]_%ip"`Aႆ]ui^^ͤ+--jjjl. `L}-ż,)=uNWў[^RLop-uϊɐ\U|. 0&`D`ޙ-/ݮ^3tuuQuuԿ> r-}Βқ);;s2&pf-DK;op‚)9&T1N ?_DZ:(8")#>^axx`! u. x;jeXKeEH c5^`z rC`I↹éQWŋf?9&`_ID'Q?ʗgL 0&ܛ@UO+=}ߊH f';v+Vz.,3\s5Aӧs/[gM&P@p-K5%,n/TR}>!lz2IAB`>A)J.}}}q*. xՄG4F’ *YY_(IL x(LHuSPP@ GN:sN>#`L4`B^^Kƍ}v?96%%&O&! ;%a pQq 6Wb07pK0nEZ<`L 0"a1:^XisimJbNd 4ST|ɢ"$iСCO##Zb_\Dx 0S#ۙ 9Gh_s)iQSLM%RD)IBpzCvxɂ8`L 0&\rzbͦEp"p j:6l@6m"LnINYu]4|z嗩Pc*++l>^aL 0&HEUTPj)ϹM˧Xua Y ́ x  jTkO- uy;}3Ȣs%[*}Fc5期&,[L>~$;Xbbb miiJyMCfffe]暤VL Ȁ(upK%Ↄ-=*o 0&C |uڦ-o-&?_ʱ` VnI A`@5c ~Ng*6k)]Xh𜖟X͆1bYK? A~ؘ YOK?XJHH~Hkjj2A?ҏۃ7 0'"%N17ͧ .%"ĶR , h8e. 0&OhD' >ؠ0cYx?p(>H|>Eb`oK諐-5&aldfDs3Oba ,c98>\oOn#NU)r7uGL Mψ1dϡ~<݋A,E6[n2A"?ܿ=>;O<0:L+\M(\(&J'zM4?:V 8 {DO U牢atcbrx\}v}m `pG|Qqy ػN{o۫iɡ7|^yz-kn6Ic3&d0ixVс2:ZIBuFz"BvxpKq5ŴTQSzsL 0&gO|H ,u6}+cbNd$lOw| .RN |.&~a]A7N9jTPAA>QNw$3&`LmmUƒsc&]S)D&h"5@KIIs `L 8@H:*k (64X,`A2(^l&<}Cr-ʢYy8ErB3b7W32XvNo"̓fဗXi`!.7vI8O0@EEEyfڴi-]nwح\0P&=❹kMpPXp8QK >-0l)"K94'\dL 0&ީW̞!XjUD&?['**Jj;Tp!OX3_HG>t*32]}3~&5TA \odž/ 5n/#1:Dv Wwzd,pps֚kc1#z.>8`(}b槼Yuچ{LL\3I,Lп&DYHH$dpֻD9J\^6,OX}Oג#[n\ڐk {v :Kඣ6nh*UT1'H7N\HÃt [+CP+4 tїRDYaVu*. 0&R{_+>JXzx3ҡv(++sjx25ǩ%+^A7 !..u 9)osXwkfNJV7;HXg75|m} +wk a&2񬾐F}t9>qg޾o x###%x.ǞiiZؔ]FɊy) 3/o Ȁ焒x\p`pM{Hާ7i\):ڻ `gPc2r5.)hPa\ƶmt PFNNdN:E4sǎH˖-ScŕF{ &L"1WxC¡ *1:Z*z 3oML)I',Ip`L 0&J:)fK@ :3s"p kb EJ:;x 0&aa4U jN>;ق0xfg٭\`P Ⱃ:Db}xRhQ|bNt̶>Oe ?<9/4ص壏> ;C3;vcѢE4ydz뭷47'|"ͩFp. s"IK{xVa!n!Y8}D(訑?P?͈N14+:E=|`L 0& hG}@Cc#5JQjv p12i$*//jk_~4Țbs=9gl `L 0GISPyA?:<.inv3簔0a05m!Óܩ5mۆH]I³]}'ڢM|R?N PܸkEm0vA]K.L^n(F=*YJu |pA2i, l8"DEQZaplX*e# wpK! >YL 0&}ϤrS`!77Wmheɒ%{)m[+ֶLz& ~'k Q~{FP׮jGp}&|^EӔD G-8ʜ cL 0&; gzu}}EL]ijkشi;r[n%/~azg _L 0&N ߏ0^Rh1rY  cxkDz뭷t,%XfN111}L 0&N ,HXLrz=<x"0dk |l~ zC¿mQl4w `3иsk朳C\\fIe`h^Eb1& ?VW~i ^/=`3D6%(W 0 R,)Ρ>!nX8ϯa%qsa0!6=RSi9r32&p" 5ldakK1/'2W%8~;_?Ӯ],*& G?.Ȣ83`L 0w&02:FbiQuwҐ0@ 4kRf{Hº-ꢆ4Y8u@ Z8L j?NX4ր|SPx'}E?a&((BC(?">{Gޯ= jKgҠ _>պqq׀-xpm< {\R?mYl*t5}pL5,6f(}j,6v.SǶq[R;gli:D_~4ѠzQ<ː7==MFwج/ 0&J`zdu?_TO* '{p|?uxUšOf\cmS%x0\! nN{K_98: il y5s3 c,jܻljTaU* ֕8ৈ.mw\[o $D}JTz"Lg,}4|cfȰ%eƌo}Nca2'4lwl%0+б>b$nܹS19_5{dUGok1{n|(OR.n PQO=-:Fo|:MqtAK AєO9!-bByAc=Fr,oSnntѢE:_Pc^yӟϚz֮]k͡:`Vbss>K7`Yۇ1϶tM7Z |tqtu\)s}s.PjPH5y_駟g*Ç~HMGW^m4 \p=sf7^x&.aŊ6ZYSxN7c~_I:;wKNjNq9BzPe) wf`jllD'$g?m۶-\s%\r-EHǮYr _.G>wޡ%KțFGdBcҤIҵvQ,X@XG5E!99J`L Xexs):  J j[Eq'()ij5@\Y Əpѳcl4F'A\:fF\CۺH"bw ίV K/D^z)-[̨u+XUsʻV7: nl\0o@;&T7wӇ3 ~bZO~}Y>c%wWn,Y(YU:wGx FJUu[ 0D-Ԯr SovWvs:`C{tNJJ r`Lr=#]5t :@m9*vC:+CB{02rClj)0&|%/Q_ݻWpwӆ l,gL 0& ߘ`*uS %{>Q.uܬWq&XT݆zl1wN]Ka 5p$t]>Qw[Vv1a/ܰ\YFu5ˆJQW*e CB]]kcQt>ZzJMM5tljJCWr:`L 0o'0EǻkxEH yyVk(b2/":G*aL6&̡1| ;} r\IۼdL 0&*Sv~k TZES",?>~5ujQg6R]LaӦMF}Ü'ޅ@IDAT<,^Md7M<,~88&&FtQER|ШM?nj\KSO=T=ܣﴴ4ҷbiX ~bWcwC_ (p)4'p _J HQ,CČp3fct1}6F3+$7+$G:+ T?;Q@`4 lV\ʵ5k*LgΜѴn#BliHJJr77-ToB@\e~?(%f>KvK,_4uҕ@S"(%$SZ f}Q<߃-I1f a\w'xB}\pesn?AԦ]ͳ>zl򭈲 Jv]ϟo󯤻˧1q!(5V^,XH7NZ^ BɝwIׯjzvvwK sWx߲Z ޣn=vqs-g0+ /l=uY]]y.XSbL 0&`uc,hw3G =0n1Do OѶJMF_3脪.zowŧ~}~i:;⹢?挺x9 WXÏ @DVJ,p!4A:&yuVMujkk5 1 ,ďG~\uǠt@\?%L\.pBJOO7  G4ŢВ@VMF*U)CllA;t[322뮳Վ_vjeZC RݍT^Kb )hn(27S|P$M47&`?ḽ=APѡ?p{A̍7jo:u=++]%[% XB9F5L+fXt=3J׋멟&%yx~͞u@>- 9kD'jsΜ9*QW x='.rWTqǕ*em>YXKѓ+eisUF}NR!U !B\dG-,)B3U)tL 0&klha<y_8&x?S0֛BP?3Cm9g蛵82Q%tL Ȍro "mmmfO`dΤ8U0~ܪe$DP\Dٽ*z{914tq.ʳ>+us[aV!Nʤ?/P0U-mKi3uvάvx 0'KS#SJk:*ꨣS"V4ӘM7t➦KS"Xfˁ :zaȮlծw%NAbB478LCb W< giwTw ʃ6em\Hi*U+1/"aazxINw 'nQQK =7 0&ܛ@{m3Lab_x`EK_j(*`5U{"[ž)XBLVq**[X҂!fg:|;-D Viߩߺd=cmt~wf}'#E]È9P`?S@( w,U9;J_Ԟl:s͈N?=o3&`%eL4~2xe6}S< g`N Gk֬m۶iξe4hh `L 0FF O5 ߷E41~8&Z:~u &;%cySѵ2ms*KJnxȢ jXՁS!:<6.ϡ}Ul*ES(ok[Wip׹999ܘ-92$O>1' sҡ_}{nw(L&4W-pt{"}(5.fdQpSn3G6,"c2HVNuS1bWUt7iV >r)GbJd%A^~) :zcҀ~`*K%943:]1$EMv6z~Q덤 ,ݺ*\)j-֛^sjaai(6 xkz3k֕;d^ܑ<@ twyGM>:3&D\v/A&v.(BCQVjYc,Fe('?mQl&d'(qt",4L! ޝu0t<\A 0_Fї*ͮLD|븒7蔑h $v;wF 煯c|]P3rCnnm- ċ9fb}5efffW͍cB K9 Sj^.Ȣ nrx\´<"L# P:4tڽ 张FBA“(;"AXuH$ %/ )[ROCc#6ChjT -",uݰNQ`r]N?8_L²vh@ρO|$6d.RfR/M5vx?'{Ieѯg}%86sg^z fwG}D| ]pJiiiNgzo[vYIFq<8o BXvAa 5y7g@qr̙*G FO aMhlc=082|oQ# :h[W:UK)%&szpg1ĉ&'),2WLTTThJɐ߯ɇ+Vl˗/PYY閂tȳD`jVDil)[ӳlJujwwKB̠322FۏUfYj0$iQR+9' ஢J}ٺm>Q>4)<^DfyH&Ks T4ӻhgcAGk̋(MȀ‡އʬ:vl,ߴ@:X}|TYK{->Gp~ViM9+hut~ѷ"m`/4ڿLXA+ȏ J8ҷ62e:uԪFln `L 8XN6eF[{qLvĀ%,)sp 3xeЯ.|?8sPB3b|4<"v5Lhb4fS9[HHdis‚)I4sR<avmZOϿbL XN⳥( e0 DtZ9sD94wfhF%ӴT.!Qr2/ŽZz:bxMq/\:M_4H/:`;hRoQiR#w ՆNQpg j覧 >ӇɫhN햩,gfnB`dlXd%T&Ϡf\n&Lt gp#`L ؓ@PN[`2[>Qbp]n&i%6)o&0;gՌɲO?WF\KӸvƅ\`pK111% {S5ۥŠ;"mqo222 eG$ zz9mdvJ@bcc5n'vIWVT[X[+ֶ}|Im3X¢,TJ\ZIœʤDibɊ9K6|7.]$3S$qDu[q0g;R. ڀũ3a%GZ[N O f23eAӤx۔ i{}mfr~}_4?6nL 7y g`B?!Sa}\kZxb 3&`L \$`Ųv_ aIx!5  渦V\L1dY˯D͉VkL]eGS/ [oif$lk-̀>5%g1qp, T,!h"mf.5}Ƈ~(U(ao42W^jUKUrИun˗f gFh| `&JD 1؋08:Leb೤S ,a}6J烘arD$pX;GlXG\'>Gh6c29$>n&,2Ԙa>W/N)Yx Y*8ZAGUESlw2?L]C`LM-/4ә`L 0&ܔ&X)kVj1  pOSӔ-(ѝgӟ?,0\r/RyYW'NӧY .㩧Ҥ${E\c3{_Q= 0+ KCp?JiAr-o 0![yb^MKrh^DB]9xtUGMT;x=ŒѺ<,uh%3gr/([,Bt?6A.v6цtǾF ^ j}TIKMet&q}Yk7 0&>|~y m9RIC3ίI.̥t!p0>g)m4M׮Ja>42bɼ(B18,,L^t5SwrZ\?0YXE K3G˚x[z~\X>{&Xz<[kpAC||Bax\gӧ)++K >aϟ/o[~:Y~~~t 7?YPP@_%q ̙3TUUf*W C&^)FF98( 3rh]eEig#u7@.eVl/b,E.nޖGl=o• fNM!,{8u-4ȏ:zt;,7VdoQg=*{%Y-Ƚa:HBBI0 cwEU,Y%\zݪ-3]ޙwE(\lD1ya_mM:_*Al>22>t brϛ~8j‹DgM%j_+{Fƹl#0RGĵA֊Tvhl[>&Bb;FdJ~\%C7d覴8-DRq[q&?7/xaoQPTo-p;8*IS%Ή9oU 2W+}/4Bi/_䢳Ws%S'_ >a_к,9INǏ+ |XjxQ_^s̑;TN~@?%RgBu< z-BJGy"L-[jz'⸱Q7`0@ PJoT@Dpx [qmy+ԱC K"^.?,1r~LV=DFKw*e^D0Y,[*gFTI#+jaf4dƈ7mԞƫ[0o>]?ɼW]d]F`F`"gzXGR&TޒBDbK$O\&XE  1a B/=/': ewHRָP (ykyQhM7t;F{{;θNu_^ \xp}$\ 1?u.oGinECwfbEV$ԂWۂjrƧgE.lG5\cAA^x<SJp|)+NRݎCz D8}XMDXrQ(0֖b>[1aj 樓`#J #&W!&|u] 7}Or"<^XyWK❘(I-/K!Ee>Ad 2Gd íI1;,z p0)65)Ԕ◔ d\wKbOc%y8#»л1q$?a]H}%vV (JК6# Y_G c/?z5GgF`FMQȩz:m`D` lNEnPi1AmXˤ}Obq:mw0}ggA 'K 9`+H ߹ UY[S3v\KR4ZTc3 r(uv\'ՆC?HY͞O8y-8pb] hJ@ĄTR`bgXs-!E[oݷo %mJӗ,Yri֭/A50;v%‚? 0MMM % C IIIxW m16P w`&0v@謼LDPYZQ'&TC[+Dd"W\=3BGGh<O5_e&2 Dd Hr2H%1V6.&cf7(_pC.w*OTBQ ؆:iEd,dkVY.Tl\\\?wQ ${}VUWX!=` A?Fj DzXx%$&zR7x%y#`N 枿9)œMF Fm_sORn C%)MoY/d2 /!Ui/Vˎb |\~Xt5 " q孕xT6wXqA~a Ga@RGcDx+e1V)bT:%OEB]r-HUnjE_-BFZM k _gF`UzBP+n$FIh6 R4-U\/sAoDMZ4oPs(5=f EҜXa/H`nxxX"s_ -uvU(_z/op೙R) > #4P~z8p'N@QQ&++ 7t4[) >{lu]R]ĉf$\]p۲tv]PyF-Rz4sJ:pe^%yCݓDU 1Bopu4\5^fj9M.o16X\ӎ$-LjH!B\Y>a=0#0GBiy1*T[}.nwHu󄧋;<]D[q]ڊcʫ8"HXH2O>wan3r^$ڊ#ܘtL׆odH8m zEshۊHRX4,RrAf`,2cp #`iHy Y<4cYA;_WZrD{Щ9.y#ޝ FgE(尙 '4%En:crFd\vWv}˅2òUGdW'C`ddL}spsR{EHR/@2ڇzY)FK ˢ2#&t#!X}T@p$QSqs\vHCV?_;=èңBOąDrd|RqX֍#!JdƙF`Em8Z-~a!Qޓ2D\%B܉n=CB5nH"!zȚopI~RRLJT: U=mM-AR޹BEB!Yl$ 6:&=rj2\iPQɑ]:/{эؓBpN1wdFH `J4M\ruwC闫c#= IPtvv:vG;%Buu5jjjD?OHII2\|;FR֔F":R #*sZ+_8RT/_;d!EIq\LjáRk!}') ">x1BHX)yR^:;HDc/]\qetܒ44fPڗ݃r~=_<9%½KAxC4Q0,TgL1`s>ڄlN|w[d3o@gcF` -Bj $Fe-se0A^+m4q6sm@[҈mlQ!ў0&Z%<$H EȈGF%JAnh"9PjJ4 Ac}JDO!9a#9"\3ozƨfcAfQe @j&@dBdMDRfp&k`onCc24G'giHE۔\Ǥ==ܤ-7 udE[{֦ӂԐ 7WwX9)Rmiľm+A<5֪ yP )Rh %u4+j& 2 wM^kD|J9BU'(גtp+m E%!S0=$AoE^LA^~UE-Ngo{u\c~q挋Y1#X1.:\*Ž:Y!eHGj@xMPS?Sق t͊Dpx [\㺹qcWw% c72rVe]U- sxAJ@? B!>%8VkQ+o`bnrN7bF Z[[&{'|{]cQO%[r~Wv{ꆓ4'͈Lw}mͳSf%5e3NhΏ?$y$[R'N;P`{Fo`-6 e"ӵX13ިP+3T#bF*$w~D*I@9ȋfW}!v5BJX^WgĹ m,\b*&H-y.߸F<-ְ4+$Bpȉ Xbea~YK'ޮ$2݊[1#0 $s .KK4q-9ۥ^ _*NC.Lg|<0U8PRn9Ar >_洖nl*"{KN*x UB-nQH]S@!+؜  9">+MH Ui@D__/hccWl2A k1O~bffj`&l+v)Vl#02y_&w] mk,X_V0#0j1uejZݽ0%(V$."|*i꒓ydEa aV:B9$JGضo1Kwԝ犐Dn $+EAfq۲ Ć 6|YC7:P؃B>HBvjfDB6Rj[+o''YJ 䯚n?msNZ![Iŕxh Dbs^(HSǘOO?4hn$BJݎ;^z /%>fFQNk2e$;YRׁ8y` (LȠ!&Lv`[}i|H IU'+łp 񴍉/ŹP(&)M!q4"%Ty:*#DȠގ _H\ܓDUYçG,bY61,X6Fg_Uҽ}r슘ix$cϞ8#0#, Ia4XkF-(q}Cln P{ΊýȦ5ΐ. ͽ ?+94wBH焒=Vƞ")yrŜd,HT^1; Ƃ^ *[=Qp̘$Cb${)wB,wwQa =-iR|?|Dp!RJ$#ySvX RP&08Swp'~nhW%"E'/SCq^C> r:=y"((V 7܀o111(//=ܣGygwYmΝ8wRRأM oFUGPcrР A<1iH og攔BƟ Sb+ɨ 9UK[}_t\H"LF$bg&٘%ldL{Շp\oic8\eEz`22gMQѠDڬ$+im=_$3'O19\efq݌#0 0 yIA"1L!bx̉J̰$!z[K 5͆{+R>6HRm PZ)k[+Z.!I@SH ƶ"'c~z* bs"Pԅ׿>nng5@d 2=ZQP$(2αiF[8zUyQC켠RFV,rW"MӉD b2n*!MNBÑ#GpS _rrr0k,I [~=~(y0#`t er#;$?)T[Dn1ӟC@$%$/'DpHpo @w=H$AIv' !>a. s @ %/ǒ{^Y5}mx))w6Ops+.ԍbMڜdGR><hncIn߿q>!ׁbl1#0vh@ z)acuzH<<Ðh@2-ZТy+TКOoFhPCDn #u7IJ3L* )j.p8Mt,$}y̡ѷ4g<©\#7 *bD6DsdDf@J b-Ҿzy'҂@c& @~ + ÞK(H úYC}CBB@ܜ!;E&hi1MAp yްaJ 20HWBccRî]-Ix(`Fps3y=,"RN J$; p,rjkr/!BBTA%'>iK1A⼹'#Wgcm z(NI 1ixhv6\Tǘ0,GZᩩk1+Y'jmV+iĒ+4w/JqtYT&r Yng[И1<=yyZc޽*+*|0Ej|k,uDEB.;4QZ Ndmzhs!ӕ[G~JE_KPm|1zr[J=}QNKFΏP*65&aQ/?{iihG"AΟ(}KIof`V.TtuaC[ qHul#@a\p!幄c#@sk_(TNh )4(lڵXh-1~>>[,j,; HAx2k &G+םv^ ' \ S 'Hng#P,aRcċ6PP ;ACC _oƂ d+'?UV(R EOc-s.!Ia[}>ktg6j?rR!UHJ̀*9 iz\SzFHXzJϢäoX`09>9'5ܑLh0EU#\D$Ю8d-}N^~y>zGS|B Aq6]{ꗦ9E* "41#>3L"4$F *;jg-$urš%˃BR{(E@IDAT,*A"#`bP/kVP(}Vӄ'/KA_]|~;gG@r .e.1CcQRc {DrT7x]u%3UGڪP?+ֆkk$/\~J )Æi+-@X7jD6S,A1#0FJO^fܰg] WWNúY4:.g#7^Sh@+IALng"\fkdN<H 3_"32/OhAsCc+6:appP\2)s u0#`yL¶UFOV\ t;x&(QZP:wۜz-NŒD!7ɟ w,LGVp^-*+SOy&? ^m-\qW"ܘ4PWkkkÆ ƛOJ#=DfP$RCNNG }7ySIo꥗^RNBU[BQaDGG+Uꄆ{4(׈f:m)i,y 0PJ N'.&!03%_(EQpӓÌ*kυ1T'H@J/Ιߘ"TQH˅@ܢφps5}|*Ų61A ::0݊da.)f ^`}:!,LdBCAAJi; ؒ[͗,ƆaAf g/߾ƛ٫zjV"gu~F甮dm=p}Tcun8ra[d?v 0L䅩@^Vk\`VDORG['e~&mT[-U('&ϗRCDn&b?D~,s5½  "JL ;ヨy:hGyϻ-]/ߙTf$cחꀈ/@$qE>HaҤI(+0L׮]k4KkbΘ1cw{DeAyrI-=tYʫƃk!._23v@bDu.E8?y;27,JEV/Cü4lҊδfH"7D} \G"D$"bKI0>/C;@~}Ԟ[gwOL3i0OxM-ϲ>: pdf/5A7z~OΆ<8mR`HOO?ִ3|)>n êr5F`ٴ80ׁcg S4VP~Qss<ܔ#ɶJ,zRlz## *#1cuhW]TjAO`&{˵^ "@ u).|p(\7^IKX@8k^Ahhooǟg4uQSN1{Emţ^V[D(?}Ǯ bc@_Ouy&˛Q#;]Bq4S9.=<}'essxV>q3׈#`\; BrfYa.5)WJj#Gnf;뱾d7ګ5gr630ݖϊrZ ӤCThpDH-sx9sdus޼yP***P]]xYe͑ׯd"=mfhnnlߔwT8Z/*zR)v@K]letDS,̰9w/@K96'%kfi;#)ٚ NOnhR%Fj* 'fƤp|U{u71gr)޷a(T=bIVBAe j"tWoaB M?ȡC9 @T("E2ᠸ|x|m۶>,䆋hii/;w;T9FzB6AѯQi<a6F1|/G^dӋ6t H#1 _u3 7e5T oğkfο߶mû{)┬mPX%\8L,&,Dg"Ä=TէΠh)9([nnU UW]Ц:IB&4#d/U@XoDbXH@e8'uqrQxG2W!şeZ▼lh1mlp,I*/򇄄Ⱦ̐9Y@ lv0}wY 5bcc%ʼnHVژ*@j $i?  ώr?=gnksNIrAn\xYvJm ]nS^tcfb̫Cf+.+$pF^+O4^$"qnˇN`B0KG?jػw+Ac=իW+]F;/XK/*z\'l#L$Y l=#@}םj #CaPĖGnɓ'"-)[0 Xg@{R9!wtl }CbAk[ф8>?QgC5qOC BG!}hhT2x@o޼y"]yǺvHUYEEEEH׎;&<;z ղj! sڢpOi<,$ KS&?4l%[k3GY#ڷ2Pac|~G̲Jgn'M\-iAm*umux,qoԀ()ZDq?[kUsZA;} , ~bTaI ̤@wR0ow$brlPepE[NwiC֪wBSz'0FE8WJYiE ԁ.3!E"3=nu< LwlkHj6KW~cR# sڄ!Y_|4`ܲe$}HPEO7>>[-v@ߠx7YGL1#0 BC:U' mSRMVLEr|CrO8~Pl0lI=8*ZP 7f&BaE9%Cu8V҄s*1;5b4zѤy>Xz!.qvF .kiBI2Pfc*5\@TT4iM~Bya&Jx J_LL6 ggrI,HHUSmd0JwHY@~]?],z&*71/l‘V _OĆyiXd]CHuN 4bsMjUԔ[!*yFrexkYUy13 B<0b Dd=T6F0Ѡ0"03%N0Խ@oąkD MGmh$'㦚%"oK^f< v 6؃/+IX0(' 3B,eh5EC'o=~]딶ݫ #.DG<ԈtF }d۱cJ3P!")(ŧ~ 349HaNYr"ZjljG@ 칊9!+؀fC6MhFx㩤U~7GP4et媝X>ׄs6e>j ;qw,NT}F@9OesAa4#@e>ky@?cT,:۸Mϊ*==6V0DqLl#L4?#ziۚduYL*G &Ic EWkРlYYY%UL</Ҹ*D]]&fE6ݎ "J|| C sIJ4@wЄ%$M1W,` |[E)&TQ{Poh"go e-x0n!|߽[cG?,Ș,(ںѪ4sHNY9yOXjvӓ0g00h-im R8 W,#`d%b_#xjR!9/#0ANܰ('܈I,eLx_NnsC "`21cR8gN^QSrfv.h{ x)oɗ#-Na|in,-jBmNdULȳ:4`ydE³a`2mK)R㐙 fyR7A ʄrA]aI/B //o1}tȌ!& ڦNUc:꫱j*BώL#p믗{% "CʤFa2I%ͱ Cͥ zH Ƶq<2=IJR0z~0S\ 2d݊F?}\  &*8+4-?NZfKMm0Ð 侶  !Dt |vy_N0Q .K+['3!cjz#/Ww<2u5H=Mz 1({!קLA$BCCrG(Ip⚮1[A(z-Il!8+Έ A!}HAc8/#X3oB:Kv~Ψn4v*}E8`_^;zž\_N(mYbv"\E#""BN5G}PBz~!U!WR,0 tww[lBڣ|YР|LCicҶ+gǜd. ZIZ>9<_u֍'|?Tmmmк_]UY.TN;hGaDfPT\3uNh={UT>22R%}}S+ܯV5*)2Ld""lAckVl?{P׆g^7Uv;uQ[MXeݟ.=l>Htv ɓ$P-W c)VTdQB6yߪ"N>-G_z%ëw |?.1 +[Aqn_"Z9!= PW7ڿjN7;_؛{l?QSexxtDFPRمB-jz+Nv׊>S^c 1>锫?̠@x]ZZH-) }uuBAYYY*H ei!,*"ٗ k(%&&*vͺSp{n 1g`H]wy|<]*zD|sxf5`2: ˧Ǚ3'$;@a}^|>yt iw(#p{OS'/W9LfpO}b ?JXF~򓟨W kBHhcG}u_?K|;țRC[*gɓCxfc"6q*@sPYYX@D{3f4PXAAA%c*h9 \FeE y}[ QADɤ\JCww7***oRpg x42[x?Zdg@pu"@`)|%U4]%Hg&"3, ]cw `s` 4Q|Vq:I1i]jݗ 6HA2PvUU3244$P?0nVоˆ?Ieoꫯ1OH' <5Yzz:}YjF`/addԨ.2! qaBC7)vN cJ\0Ri7J~ BShBV><%_Y͵yg~t&}RQRtq iX=3CARѶlmý8^0eRSIrsuLPX`C`JbmĈs 9"T#@DGGK@o>\yҾlܸQtZ9ݻwcŊ:'z{wC-&uEvMD(PXXXv)oAsF% q,_\=%>UjժUq^~"J燧HW9#䃟2ol:VJ Bu5`.}[M{(y"I`m? D'-Жnχy#* 2>:9)*Р ;OZQx4c5\]l{fK3RrBe nfV+**wnv2]9s&^{5IOс=F2ւLfP[F`07DyQ1ɣ|ddi4la\Q[Z`~ɤ7&PkfӖ!p/al('>={^Ǜ;PҩS~r.|YyLY q>!x$c%_[&3mӓ1 67P6B ۵k>sš;v8tP̴4뙨/uWW>j& \;C2sWWߡZT(+#PDADj.Çdzcҥΰsc\yJ]%U-3> m9uy:"5DžSč̠5QX ]vQ?oI;N4K+L*υ ׊bhlDk. YZTkc-|  9vs36Un)ۼy@I?),ǎq;VQu1#0}!_br()2N;A؎ q6@!XI㎎]7 {恛rpm,lgGip;UUhdpW5H ϊT:oM>sR$f$J&WXUWN_@z77-NC(> C;sύ_&֮]+{hdd6mU6Mmm <&id@whLaoLq III2eN]]ȩ8Or)Ǩٳg4г{Wq7)96l"(۵^kBrG3W#SyQw oYqR"<"X}cm'!TzUן ksw1ݼ(8SzlSB1c+h|9= E8Z۾xrםi;~_)Ag! *u]*ǚhIDh/@jǠ$#0s"l.fbPtsаy9uz3 -t'B[潋ybٚiJtrKMk kgʸ頉O8WM_+7?AAz`4½ 騐oDZ2$N޲ro1Sq%9>r|I$] +ZtAN]+3 *ÙEI*Ν:K{K,AHH% ҂GJyf<}h_G|Ɂ$99DUU  |csZBhzhRSS#1CrɸJsRe(98-Og|g @ aFFP* *'F ƥ BaP p|uS|YPի[q3OξށU1v:1)ND|@Ƞw.Ef]rhmB)ɜl4cӦM'4 .կy`F37y>f0L1\8B`*)zsjh Ah%VNxQ"V9lɲS#L"4xRVb-umP+rp>8dA+ ;kh|IHIBGDx؊}WաŘ4)KVmG8Oa. Ӑ#T.a>p`= @EYGl=^Y)1xֹ;V >|^z%<#hmB!/?KABCC!y5R1TQ5ig[oIYZZ*%~&ahE&shR`KC[( A媫;#Fl8xNbz|, /"H"AO9wSpBg{7Jj䢿PxZϾ92BN /O1ti֗EڛmqU SNd|NiRi R3 ^^^͠l===ㇷr }Qy`F0!^xCjA~NTY@ywIS};W̎U/o[1dO. Q!hh>jkҧ3$>Mƽ_>3>^fM\E?{&GqmNڜVڕvsBaI.6`1\u6`,1( $vVaAڜ뷹MI;3o=OLwWUWwsJmG1bBoQ p HeECO :Q:O%SeYIN43Ø,6DFɽW͑eԻ{xe eE$S?˺iI+!@ XR__ng9%<]b=#/ڵK,cey睧n(g4o D {Q-Bb/: \r%nS{u1 '+2Nʫ压JQDc#Os?y=Y] ;Z˽SV vbPBL|򙲣^>Y%k0")}ډi K7o00I>C9PʭuSi|8Ȍ|>k)h &o|r;c$@$@!H G6'*"05dW:mi,lTyR\^C[W,i 0L?EZ?oFaYYshw)r'IƝZ(Nt{ n%t*f0+D+0*U1L)/aԴȎC֥ R4Ԣte7ʲx. ȳ>+O>/8{/8Jg,BssfV)l,Po[{}yNOɓ' 6]AԀ ѣ榸حz& .W>=K̠jW{}*N~CHq)āJq帇w*_p\1f&;3] %ڻ!-)Fb"}>]c2:,-Aeo2nthMj. !g `${Vσ'u!aʕ3B> 8dŨQ&VtZp_pżQ'NWj*֡^GXi0Y5\),=͎HHT rdj L/J{|r#')cN` 20{-+HԣB"il_UFeMr9v pZ<)WV..jGlNں3蹅4LeNO#beFB$(i Er` @(((P0555ԤZ* + iff=eIHA<.vټNL0$+m/ \L8 o.'zZn9p̡Vk'&*GZ=68Jz<.9\%Oί^4EbŌ8[*7˶'bOCJB">IS*K2bߝfUo(b aSC+~9Gܹ'qQ.ɀKEetdY$_1&K!66֘dB6Uѣ   &P!5M`4OiR<:JUsy6='?ydPŴ .@XQ" s)aU H TP`? p^dTÆԾc, }[3׃O qj0 1ʪWKr(ɔ1<1){{e{Q ֖#K쬬;*L7prlR낢(;I*쬒,t)b#圜I[B6T֨m5xLoISdt:0D1Mx%w1pEyk˒C=$|jnŋ3SO #@IDATIW^- F6C$@$0ʏ;Sؕtf,{<_i*;N]OLpL),45d}*<3r@2222!HٴJN]/٩2W+q` CxñN$)t?4тHt lpALmL@qN|]*(ϲrb+]2]Y ޤ}QR Yjii din jT}"34[vJbmVL`!+%NF"C $EɼbuQ<ת:UC"r8ҡX>uEw:;ߒ"$7.E 6iUH{LⓁA:^% hbu $@$`r=^nە\b\h=$Df]-YS)?ҥrILqyHn!XӢX8-$%%Itth>:x2VIW*cv&C}uwEɍK'* %Aưmug|JG?N9'̍bcpNphA.hYY_५\Azjqu9=e (X9٠LcR|-DnZ`elg' 6nE7 "DID=p,l> mݽԪUWek G{maxr>>:\3WԵ=)oҘw.Pl,,͚hyx{;zTCt+j ʿ /~!`9 zW_ LlOwksZ{b"`ez |Nb_A(H.LXr>ĪO^zԐ:{YvD*iH X<{9:c2 XC`oeϖ{k6Jo?,I(u{\K@}Ygi}  NihoV耸==+]|gtbM}k]V0}|w# NR%p՝1&Af)n!eUz'HD\ xUv:ᬎzw.CV| 7$xE~'81VPs'؟=lcWHIQ6o%:Eemmmmî<Δ F~^OMMޛ`[0c>QGGtw[OfeeQaCn:i@$@$zĂ/^$qI?{ޖE,[Ku4_.֢~gxJH{rla.Q]9' d{ lXV)=G>ľS<UjӼt3J&&U_hA%` Є& ^DEĀ!t *G;ȃHHwN0>>w2'p@>:!&ok::rC?~=##Q2' EYI^״ stPtҜɒ(xE:/xk>"jX)eI^I0`y7{ߖ!QX?#ds %էG^d%f@Dp7,{QY81GOs4(h0MSf!`",G91Ixd[ @,iBXs;s/c/Ҽ$rоF $@$@!45C{ud%FUU銬#\M($@$@L$7Y%ݎWNq_mEu6:oSoܷyN$ @[D-%K_HNN*n$`[+dKs}C6`vwPР' V;(DŽek`9 &mH=qW KmްyЪ%O$ {t8_befqOL۶!Gsm\i=l\MkLھDݖm3}"rYg%-O?t$/+r}5y1  cK{T@!ΞQ`K"λQ~MPiN &+{ @]O<3Ž\ =迤ӛ';mP0x]նHqA~PYY)^xCؖ'lZ??nEwyGw\F47 ffW,ß?ѣGL1&C6Q_ TÔ;V-C}2֗&rdlQvv=GX/ !?ON}6W]&Oǣdxϱ\q7Cɓ'aC8 s,/FC4p!`9a1@__ m6>XD{뮻dgG*))2vX\y YSdۡr_wn؈(y@q'lwzVPP3es'7y?+Gafj==-9gM̊9!70(UNbZ0.cU9rB\KO039pm|[՘Q)fIH `r7%%k,acI{{W~G/n&7oq\,Jzz:-$@$`Swn g>"Q&:kLat( ŋeLb{)omxZnD.+Kx2k':O/-OLx|kCb?))I]Pe%I@S{")ql%]<(z%X08 a]K V@XK&vAOzIFEۛ¢yr͒ 2 }%wvωGI{ƍI||>}> / uW͖>/Պ2+0{N2R0O,lREЀbl8yP\2c G]^\sb Ɠxo\ *' n!U>n])hTfIBxi*`iT;'r@4Xv IkvPuCl;k>J )2k|'% )AiCr}\cdbaZpU! &LR0y9   CN dCy=$Mm;0$qQR fe͹lCWt W&VD o"OeKܩ#XR^\x'099OVtt:hBt( d|B uo=iA2sA7ls'LHFD ƀ%.+ lIKKvWYs ]H>yKGٮlC]c3I,#+FEIrYߥ-@lR|&Qb ΐ(2 ӣ3;;eHH@NZ\xI\+KG6,M`f۪O:mebF ?x^ۡXoq"ICnDp5@N :2\J,֟|.h82d< 4D :5{/LCܠ OŁO?CZ;{?]-j[/IBL<93HH41-9,Be|IHHF@V?Ɵ-ţ-=.Z9YE.14ߏmpŋ%/>i`;~ejj*ְLJА"<.r E!@ 4' &01 %Xqj7S0= g{q;zt,sm쐧>L% @1C $@$@$@$@ $L~ H[W呝Im}2b$+(LH̖c8:0h\%yze qbos7Iɸ$0zzzL /˲zj"@3uTOW<  /͕9c嗻ߔC']^xԐu|W[.+%W͗ё1.1kEъ&9LmW&DRUR(;uAS\iH$;l'H$0$Sj<-20yXG*rAqF ⓀD \p5b3p_Bk…+ 3Сw`PvG[zet|'.;i x̟U>LL$@$@zRdFÇ瞓;vVկ7ҟ~?3⵴ȺumΜ9PFvFD   Be",T^8At,lwȕccfIL8xҀl[JrTzf/-,Bo,I@].886!CQ54ءTg֕%pbi!/-A~69X0ybKgʵEM 6;O @)d0{b ͒H >S-o~vXڻlV6;(V:or񒝚` V;~')hÅHH|K !!A1#<"}Uq[[[mw}~kڞ߼y|__Wg{$@$@$@"7%ҋWߒ]MJ9+;N^"׍[(M.,t] #wcoZc]';x;e< $B |9~5 Qr7\Mx`Za?9 *< seo'+e^[+1d+B<# b328s@]lEMUݡ6_flR^\MlpL):\\KUvηuWۉC$@$@$Xe P1Q444=#g\ݙرc3hWWW˷-ɵ$  < I9 nWm].cr넳嬬RiC5",NY9\С'!IӘ5"\Ma{N2'f9l'HW-B-Pj-5o +"M9 HA cĪK3h%Y9˥ - ?IHH(9Qk`9\oRUUe7n[[8FuufPbԩ)UV 3h^{1뮻C$  0Ht,/X#'uDO<5R w(y;mE|n4>_2gWπ= ҩHx)+L޳ZZ-':I.|0`vZ0֓u"  |Ñ@ RV`J˰a6hV4m\: + rw<nX`eJ&:|ބ3M~LK$@$@{& s=weܹ2sLUY~lڴ\II̙3G??XBHHHx J7:3[.n,kJorQt"1ǖ|:d"L4.RDs{YlBYP gMΕ掕sCͪmJXnЬ8h.,znywCc[|FΞ?$/Y7{(O1 sɪ/xC&yC=$EEEVmw^}UC?3XF7!m60~m7iIHH/NiveDltRſ63'Kdqw.ySi"aHN[ǷGurIL WD6+.Y='ص(>\jqh<.txUI}4hH{CuC13HW`X۫a$Azs] *+Vs$/=A78 ? r,rg2h emb$7 -3&sBB`pa\Iw RQ2(*Bz{(R:}0Z>P *q5{ڤ_BQvaKv_)t966&  p@b`x62x-,Xƃ~Cr饗Zۙ2eK:9x𠽨;{[ZܰNzvl?tR;O#ʢyY˵cJL}Wu6[!?Ժ^^f?֨e64ye5o-fcw "Z9'B0z:9q (hp'IXB0@$0Zu]bSB.EСl<@ЧT"_{N$G2RvJ,kyIHHcxLII0`Asr`QB`wԩ~;vչj} /tȯ_" =EQXJhrY׳n+07]7;?)/$CN,v,))G|D\c>.U&s溂2&EN5Hu^ècHMcKG*OKKS,'AH`d x1ܪ0-1YiIr3$ QCNZܲtDEQ>wF$@IbT VAOz[Z3g͎*<%  xgvv73&{=K;'.-Ef]u5Wɱ%'tlg~l(-[="4VLs'NjH3Zu!%Yͫ[d'2@@$Xi>)@ϭ1@X ;{rirGbd3␲ i\  B9BF"0y@$` Sҽ.HInDdRNZ<%rU>Y%kCFIba|"|%I +z.'3   xׄeXc 3Tаs3=s39:Y  'x'%=wA./s+G7 7H`,N 3>ONLH,]flezJ8}lW}MYGkK6GߞtF'H{_xr0@$@[7@ʰ2K@i~dK]s9-2$&2EEggtuuɩ# xD+d fJ1 zwyV5Daa1g;`-wHH"? [?kph蔔W5̒Xwarr^yvdRqRh\7n ` g͕`ni@3jUX?] [^' c\ ϐ F 唔>,HΛQ('}osl w;-h†L <"D$@$@IKKe ?,+X=L&sεwc벂WxHHݽDwכU3 eIFtDl{7'|(C[02TRQu36&Bn_>Uu;#'zt0mĨ0ϩHt{aF&:b64Q$`pkY<*V_cHw\dROWZ9SNЧw'̀+ gxHH0wO+, }B(8rݙK?#h b߾}Vy7j;$@$΁ شw|mZq !1.'||R $Lw//-3#;tdli8,N]!E .Ә-%'D˳kʥi 3 &Kfrx#}2#9Vwv&H{JӢ2~/KmO I71: :qP)FEC+̇F,cN;6 'ɩ0_#c)ԘI 8c C&!pL%L& P'%`B%Yf&߻f,0.O gI`& G琁HF,5`p#Y^HH 0bbbL* <OvEEE1d*\p_~ &b{6NUO{n$FO}zPr~b\NzTIVD #pND/yKv4,]co<ryldDsƒO& S1Ҥ).&k:b"g1%!;֤P6O͗%Sua$ =C@v ` + j`  @@G"==]uAwc k %&&>cH&!G}TVZ%/i8<<\;<X'h{/K)..vH%^ikksp?{{/͙15`þ;xGl̃+!Bh288(pUk/#ӊ]5Kt**ZWDŊa~i'MpW,7kGu X#"OXު)LOYc[dkae2&^iK{mb{ ,Zoʀ6.ߝpD)zΟ߶ 2c`.cYg}rhu ض }}p~g&ngl x_mX7gNgJ 4 VA\{.O$@$[3's3/LzruɺuѣRSS}ϖ,]LMMU+WkVlYE $Y oA rrNcIp`+(J*I0,0B XhrL\>7_.'mh_#%)>rؽm' RK,6KtC9zp^sfEM8y{f`hP~ymisE(V.~ 7@ų@Owۛ(A w{VNq?S>;&X4>  &iXtc`4.KE$)uxey1 1 j1KR@|pxu &O,cƌ袋"v 0m?D]2Zx^Mq&4 J??9_)G@^lRyvub3jO 5dG[>fFqHuv|R3;h|91 i)~B1U $@$@$ Gvl|-`uK`[OO2hqc#C9477[oCWt~[^s2&0=H~+OX֞,?}>ÑeWG|e$.½dLZ#?s)+:Q)H#[mas=a|M-  6-WB!iQ\7y{7u :|LxcX ݲC`om~ ,c'd߱&ijȈpH^L◖&|I7SBxFJZFDh/m) R6.I|C 99Y]ܘ @ `P֑F"aP{:[>:('h (CȈ  fi0V_Mvr 48~d?2Xxʢ}H{u;{KbeZjN@hN/*V \8 1YWJVB(r\#fioWMOhoo?Cݒ4* 9|wLf_ƈ}&OA3:u\^o?3>KnpI:|0D  <C݂D' /䀩;<񿣕r /bM8@;g\0Az3J$@$@@1YC &H_qD9agMɹ=ek:&\V0KnD0[G偭/J@ӌrIHw'NR4l-IWnK9 81 @Q>[Fo_'[^4U R&C`K/\!p9@H4S,#Mf")2SYV   ܇ 1pR6{@؀g đ̫䵪{GA͍eRrh<&F-/qE(s;:Gb%)f!&iRU 3G{.7X$@$@!J``pHxcbK4CC/o>p2#w |A;D&1Y i'ꛞvp@(hgIHB&d2\PJ~B0}O.ΖKԕqMW|oӳkoOs] 5]/Hk,,(B-$%%yj]81׫w{~YWy0>Рc '-4]G SefΤpxa/Z pB`ӟ'* @7j땦PC߁AqY,F 97o{5kp (+ I$#@g~`Uqa56hkkN>(T\<:Fy:y&qoS!baB'~Lh;/!ѡ3DWri-“#E?Vzq=kъ#,%cetIN0ĨXe\X[KRw? 9r}\Ɍm/ZHkil{Yv48w^Jn" \-u"?qqd|x!S,1@[$e^HH@%084$m=&kwVFM6.CΝ^l>76J㢤ϫ0jg֫JH r)))0ÊTwr!p4 꿎jCJ+ZcJ  QY//׶VD }t #w]!E@HnV?6>PWo+b,\\qBO=G.]PE86В2RPPW6{:jGߐSڤv6Gv.]w$Eŧl0&BD o-r @(j&nit CʂwW ƲbdsUnJt3kȟ+ޗז3N ɫ;ec1ƤefZSvD@}a@IDAT q8 #c15R,ZОmZVLK 4ԙXp 0'OT˽}hW`[#Okeۡ_8{? u~ Ī)=m LpFFn $`T0o Fm!HH7.Vo:iXeHOOA&@A2;  kj[e!NVm%pթ gQNXtcgѤ\ q?Yp&X]L8b〤ymED)=K p $@$@$`F-RY\jb[ k= {,ĹF<2:(h2Ա̫侩JbAoD}vLY*Ywec#姳,q5ƾ1X["0yٲ$@$@ ye*.% X׷aHi;;!-,JȜÊwL3:s 4NLLT-6P`v 7%b֦_7  JuÙ- 4hbpZ^r.`|3q#/~,xviJe’2关%LY)TPu||䱊5i*g;&G;\ƏRE!eI[yuy1F& $@$`45a4, 9NHfky _,R<2mu-;.\@rC:%$m%q[[tww[ LHH9G5M4_߯n6QK#B^0XU# =^@dR?455 YF 4zXQ'rb.兊Z]M?4(:EV)Β+]iiHq1'V&L_)yk$O,N V k4f$@$@xO)O'xw 8yl.SBFR*f(+Ό=FThoo:d@dY| z__po01%e pNbʊ uM k':X=''t[X'׷%| '&Ŋ@oBYq'ɜ 30 |N/2+-KMR\(jyyg6%9_ϛ*ji-`Ovskjv \M qdzjA2ffI(h0haUk&[n=ĩ>>a%;;{/⋪9qO>}:l=4$$b"n f1xNB uvvzꞥ&aBc* |޹2CNlBY__I&eE{]] 9pׅew;!+AC~hNM0J.aH#XjHޕC)?,X?oŪ;awqdID@PN>[&/ VS'/DὖB^3 NA]'~yG_,Yħ5K'HH)qRI4 0`n%M2TDG 2%}m0. 襃[cbJ&`mΜ9VWXtaa;$sd*9Q>/*(]i+)n T f ~Z[[^ܱIa_W%` aJ|!T+&*?8=/TT4Uذ(kdSCOj-2@.qg2 ԘpW 02juRg3`0sϕO)>@]*?O)R\P\Lw2 ϖmOz\M7GY`. ?d1V ( % T[OC"1f$j'c p1YrDD?ؙ-W.,,VX~7~0W\DžїH[U;gFL,Ls+M #CĀIZ  Y/SǦˋ)cWۖyfI! S'͙X9)+nzUu6_U8bC&檟s$.q@5VR+:DcM1*\2\?A~S@$@F'@AZ+Y~iu%VŋW\kৼD,XXvzJK}̓: 'l\ynL˗-J\t59_姉`!h w|b;1j&9h`E܂*Ld12}X)!)lg.,,Ew=.,`Em@_lcǎ˗T-$Fqty3.gMɓ/.+"A芕 $@ h16-KۏyT(>A#2,\V̔o߮X? mWk|VHݐ?ƧK"r(SD!+a=xgTZVz9nt|{2>?.=*an , .4428 kơ9 5ɓ'e˖-p|R]]=7 e  ғb%‡FMŻ2IJXaO aK7&1N1Gcbb5r0BaB>`K ٳg[U.,jjj-;XZx5EgQm߾]χzY#(O'/r@vV;,rB\D斚gr "E!l X!L @_ W *;Vmt5NdD\,PFGcrŊkǶ+G7{,l K G ޭޥ1E(s!g $@$`4JefqL12cF˵ʗ ˻5;4&uJə$c'Pw3HDĿ Xh)bǛ/&^\iI@X(la\sREDE q;F*Zk2XEHNҤ\)KQ\)I̒H_dRy@L@$@f$@A[͢7oX3fվ;.JիW VX{Ι3Gj @(t|3/X(of$_Z} 09i$x$&NHq]R㈋dmf%!;#^k][` maCh]|]>aႂ4\WK|E Xw{)`oyHc+hF`uA0~ H&y`yӦ `8\㗜%C&䫛?Z?W`$@$_4_s߱c tN8a5Х &WVV&Np?aiM?˽+~e:\OOڗ_=Go[}et.Fƾ0I`\xȸ탒ar xwB"1c0nm6ƥ6r%d]WC^(99YOҐsȇ~ed' @LR-kdlm%fHg9ێ& &8 O=ՋҥKUD Dn%QK 2tժU}f7maqHHH dh 0 3o/LpȼmȒ/^,iiiبH\Ag|p+kctT,)Vl^P'EKahH?тHLOf^ee/2 ]vj aʔ)r뭷:pu;w}W/_n @VÒ ͩ1 s5KK>! \r;>+`.^*HKK%=R;auqt"5+( a0_; Sc@X0 );h0`֠O@,Z9#:zh:w'`Vw@싂,hx%@f4Qܹ7$c>y13Q矫118ƌIDM@hvhhz_hۿJSꜪs}8Uuzԩ_1amoA|Z<'^FId{&]-"/cǎ| s"K@ fH&).xuXcxTy[_óo镝ƿsmWN&i@)&φ  w=<X~9r$\5H@{64[N^z饐ṵr~"sĮ7z.\(k׮a7sT> zqIhԓ8<eϮ&2αVHc=Ao Fۘ%귂GccхY^ 8?41Q[߫.J{ Lp^:'׹YpjmIF)zi4xKLn"Mz Лz)nzgqYވsail43mX3Ai ʁnhp+:<7# h ȠO} k`zw̘1V@COh @@z㷪JC_@xM)D*|r+ !mC4| ?:-Kόz[6@O "@`  ^j!/YtIpzk H=Z =XSi@@ Y)ACPh0+)[/:&$*A $Hnsh$VMv/ۼk'cίG}Bn;!<D ga~@ Q4x,}-zK=crYz{3fX=]|i4l4c-ՅcCț  =TTTH[[ @]똽$@HM}Fk̐KRO@{NTC^c5Ý4Ċv (**3H +QI~C"׿u3fnAL=Dh^'Ox v 4"  5455IwwwtvTzCC/9 @RW@(*//'!u>an>l綊Fnhs[ G z*S^ vx$Q>d@gg̠csI{8`geeȠ :q4>Qh"C/ka$@@F{d^Oib  \̠|zbJv C~^_vWymbJKK#$X?/NV`o}[F$0cqԩ^z{{eP9kxbsW@@>]#s>BWӀ[A $@H]==3[*uۘ{yTW\ܶW@<7 pϾߞo.<''G>O~vuuI}}9kDVWW[ٳe֭h95Zرc{b=iꫭy&@@߃UUU`y5~lt%Hb$@qF9vhwŘ*4kpy}KmLۚ͜PiN@'=%!*@@C@Zv޽!CMhjkkQ h&;x2fO?-ڣØ1c ǏGQuy1  B@/P LP"P3 V+/ իWɓ';z-`HvzFRVq'7>e (F_oڋ%2iT<Sr251mF[@:9[@on?ȑ#)ɧ w8uT Mbɒ%rM7xE@H@k MMM1?Qq:i uD "vڐ`at5Ȕ)SdĈC}xuȑ#媫:ER:g~D ȏ^*pg'JQRA GG/"@ 4u &} Pv%/58˪cN>]nf# x'75TPұI M A $@Ν;g iߟ+W4e0|K瞳^}Uc^ *9~a#8-F@)h,F@1Ĕ7@P4hٳ(rN.?f%8yd&Z @@I RYo .ĞY livC$@kAoo`7h"c\UV[[[e۶mFP}=7:ƛVOz+5-Cg1#1Zs#]=an3NnrJX?@  $ާ 'MdKjPt@@ ezPMf Ar!'[#@xi&kԩS&.\h OaqFO|uƍQ/ b=:FMؕY^@{c^b)#eR_o o-OK 6\0Q3I@{,H @:АL@@R^@oŽLjw }%Ң$x(3o޼r_`rQ;vlD~k/̂VOLx&7rP~ xFJF$%=={YBeEy'NW_*GZS{.JIa^"y}89 eH@/82{I^  (O(E}>Ѯsrrq+4".VB >|8dY̕'{ںu' 'NaȫnǴ7G{"!@z h=q9WgB_o !k\AqB4O{g !$N  𯪪}r) z㢢BfHd8t萕tCEjjjBO<fa1{}0WjȉӬ\o2#H:=H[S_Pzh@@@BǗmkk_ZRS4% @ v/ZFh.$ic ,;{I<"}yyЮ]r)c8% =z+ȑ#,v9dy3*}sH ؤ:DzQd~y(3 #  `@/E j.Eg޴z< @@gg8V&`nf@CCCqIAfeٗE3"{Oݻ7l[l}]w%3f~ٯ`OGt==3i5i>7=Iᦆ?\pWK@?sxfVkLp~Nv_ pm#`ӑ 8Fl$ZA6'm"4  ).'Ԡ7'~h|zâ~6Fpv(}:ޞf3~ӧO|4oMiӦIuu>u ~Bmnn'|RʸqBvz1x;dVΝ;]Ĕ'SaMYu `HEAA Λ,-mWc#G`6c hRdOwW$R[C= v@@@ &{`yl@*F  8o;e\4Nk3M2EVX1`O=: /`]4UVɃ>hÙyfxMvxV A f`\22"/ǻHz ΏO@@X@oC}ĈƓovEÍr­&#k~:/ۻ k89s|0A?|{3]fn'N7xÜ5^Vϐ1@^^DۛH;aHj= TпDA`ȉhGj  kI>٤݈듷ϋa)4xB5 1ו @!77ܸMgwn//]T/^,yCC1D 2eVq~mYd5zZ`B\>YYYwj|})5 ho~|NmrY=%$sz~:9[Jgb5?'z,q.c`Ўꖬwi5YʭaoL&sm`@@ '$zʼQ5A/Eg^\ ^0_3 x{ܳF|Wr-SMM/ҍ.\(k׮X-..6b=ި=zoֆ,W'͎< Eb"2:u*44mfqر`+mw@V>;{؏ m s;$R@ic.MJKKŋcxbCwMtgA Kf;w1tYO@Z^I?EO@wϊMW &@@R@ \@=A5( ,M> HJ ~33fР֡'Nj#UH K/X)!F  wlqM \STTR2@  B@@Ћ-$@ 8/755EUH}"L4ȑ#͢'OSVlBfTb}cTEg3, ޽2Y;c o    x%ctorGWUUE:ewJ. 2s$A)"H@ t(Q q;' XH1RA    0@uuk5al3~xs!U>uuu!;{lb=C ̀:7!a!D)G#ீ,3@>t)@@@@T=zڵ˨?~\Ǝ Ygĉ!Μ={V{1imm .ɓ8p AgbEC.[@ cLgggy((({Sy#"@ R@@@@`!ٳ'd~ݻw6Ҹɤ :q/ ---R[[klΧROL'm ीJegg{%y!!BK 4$yR|@@@@ qƉiÆ F`9?k[[[ڛˆ#X&KSZ7o懚xWD{0ŋI5( Đ5>IMB [ۏ?+fۻȾ P,ot(}%!d 4-D@/K"   > |s ,V~O:SWW?}5Ӎ7hN{zaښOh/ [ni4aԨQ2Ď;޳W_m'YO~v'w5 :$ONyixb(+\?MnbB)<ѠO|lv=@^^hp @ MX   ^+6m:T=X"bSO- &ӭyĉ'Gy덾9sܹsny'dٲe{u{zzd͚5[o˭:hWgH!q%732H"]`ͦOz&3XklY1;HqC frYOk  h'CME( MA@@@,%w}'?co;wzH&N(GÇˑ#GD0p}yr19}hz駍^ƌc\?~=zT:;;CCM̛7/d}&HO Ht-WW/O :˧7ʣ+.G  ވe#E`пK}(@@@@G@|A* 8p@6l ! TĬԩSeY~߿?$A//]Tn6M/kL@ݓ@`>N4?c qraw@_p$@܆w@@@@|; /G}$7o_vK԰k.y饗6nf/kPJiii:V:'SQO~<,j՛zўR0i(H5EA@@@- wuۆc:%nD0aycƌ3DA : Aɓ% u=y3l@jGϹkɟ6Ul 03 "0̠5$@ڇw@@@@ wҧ'MdGYRx-8t -E{5}\A+t$%5AZ #KO@@@@@ iWyHB N5jCzz{i]ƂLB EEE2lذD} I/9雐      h+J)y5ŋu>dpO{bB+@ !-J#    X}ZoH\E̐¼lAb jfsbq/+=cSgp#@@=E@@@@:>}qqqX L.u] 1h/2MgH0~N8CB\ȭX@@@@bС&1*`(WNCMHfʒ|݋D{[&ve!3Dcu5@K2 -6D \4$W{QZ@@@@B@iԤh* Fq߸N/HNV͛g]O6\22|-OKJJ1{ERD 4@@@@@ sx#Ko-׷o>8,{ )Eeq\5s,2 =fRO 77WY:;;S3jB{h3oMO&ij;/9RSY$V%,F" !"&VB@@@@Hj"%IF̾'Οdk g:|wh0MAJ/hhjj/ +]/^+;*iw7w@/6^\ @h@#P@@@@RE@FLP(˖}HJCo -8JKKEH=)/|fE\7@/y    @ h~>bTDA{lvPM1XP՞6 f0W߶[xE%@@C     %%%[xJ.JJ_jB{+#utu^F?ʏ_@NԷQl )@@Ð<    4j$c@ ֐`CΘ{zoi[6B)@@CK@{hߝ(,,u @B$@@CZ     D%%%>DT0rssJwRjh/E~5a*V癓^U! ``@@@@6+@IDAT". @ :aÆ[CtnA\[۲,E;X rݏ4?mlE C!@SSW@@@@H@Nכq$@tRr 0(Cdefȕk\A^:\F{+D6Fh @@@@HmZ[H  N ̍qw5JE)ɵ$. Ru(  `p    D,8@ dggKUU[C@Q,!=_~^7{,6*Y H fW    $9{2ׁ#A0{kr WWLn7!͙2BQm @8"&J     dK6 | Ghkk8JXTT$FAN2T~ni0hQ23䎫.7Nw5TŠ; @<@$ \]]݀8| Yƌ/^smˠF+l,~LzzzB$!˘O7d^|BH|qQ{{;|o8ۨC|spsHtNvkbݐ̘A CB^'\k>ku/{H@XxەSھa$^R+>!Gꚥ|fgJMe̟Z-_?Q *@ En =3Vl]s^p޴4|7l8K<im9 ^8?Gr. ^ӻD|ΟUrJAбy!C@ U! }:D2\k{%;蓩 )+_     )O o"GA{?ؗ=+ A $Tr3@@@@K@o%%Li@B " 21*(( ;NrB`ȉX9hMRJΝnm5P}Rmv`See%]WA|nkkF:^0#c?Q)R0mN>mF%eDB{[!??B m;;y؇)//il [Kղ2k Dz>M%@ &N? ΔD@7כB E=D/b9 @qg `]l#{j]zL'F9Uے d/΋U6}"ɏup~^ yM^97^u=Ds{ν9pN(!]"-FXkkh>)>z@" $zw5X    i)=q'-J#@:/jO(  )T@@@@XtHX6e@ sCОth= 4@@@@@BHM@n»o3"77}F Zׄd    @j rC, @ho ࢽE$@`v    B@ /** DY( @fo Wz(܋5@DАe    @h7z3 zsJ" *r L7A" !R)C@@@@ rn|x#S=H+ P^w4X-#[B5h &r@?^ٳg@@@@%@7ہj x&m 6 IVVV7X  7@@@@@  F;P @ @aa1@3=@)@Y0ۅR!   @[[ET3g0wDR[ŋ!&!" iCC]Ƈ$~&|N !{<||gg9ioo}rhGKK/U ٝA ٹsY ]90cv0 B\b43    @B`{t,tRpڃS-~Nl[IZED'0 z6cQj{4A{fB{+]3t;O9񿝜D CN@@@@@H@vv1E^^^5Hҩ~Y_@ P$@@@@@@ VPZZjؐUZb͍xVDW!'g    i,PPP :@!+++=6d̄Π\233n 8}tww[;(++30pƐ6)))M ;.LzC_?%B9ldY!9E%:?&imm "'.LګBO@?#Y1UTTƫyF   qVesS">6AQ@okwߑ$]OoƐ#7łpc,8"D#ϔM8od&smAzӰY%mP:y4< hP|^lo8y&4@@|߯;ޣD5g˜#䏮 UT:v  '(ԭ" ==?_D٬h9% @"hH6B@@@lZ~V9ѯ|v5OAbkNN3c3@h]"  H{e[߅a p?%9 BOg~[^ qLqT/?m|fpm^@@Lcn ql__ ||B|nh,a<43 @X j1/^ >68'Ʊ-λ"{@8 G\F@@` l;Pq0Yg7z)+5'ū_#<o,?) o_wPzA~GE~SS}$7/$+n!9\FL { z+.. nhiiN!ZB˩$@H*P@@@ @wO">\3^+eW@8.:Y w?E$@T 33SʤJtH$ (,,4 !(B9@47$@@Hub.掘O+=&hױO@RO/~+G#ܡSM?yG @VVTTT4@ J:Xh ~ï_@ hH֥n   ` hn^c'Kzv7ƿI۳! @p EjO7 ! ^JKKeĈRRR"U6֠ 1B{ ! צ@@wa-w}1='ڝa17- @׷8kk]_b7!_@{F(((JNgd6A a/JH>Iρ#  @ 0 ]װu`gY׻dt^q G`Î=Śzz{v @: h/ [Í :pܠ:ą-a$@J*RC@@Hw!]ޠNSs-^kt @|uI,!@s1 <0zzzzxO{4A4(B_ @ j\ 5F@@F4f#[W CMރMF}@<` dhp< @ 0D=5G@@ ^2u}]R:DdPUU}}>/@L@p\Xvl fCW!D)@@C`  )GWwU]周g{P*LT @*4TA\.@@@ EhH   023c^iw?͔80T&VQo]7;v 3&Tp]2@@@HqiT@@)_o#cG玗>3.XӨBYىnv f%zhy    J  $@A^KFE\ۯx8jܺpra&IEd@ &*͌= A{7$:  $ZD?@@U$_]yӥ 7kвT_ݹ@I{s7_.ڻDI>2uLy @ |Heq^ԥ^V __zy۱   F`wnre[@@@ ٙ//}@9rNεt.d|3eLW)Æ p--3#Cy2kp;sЍ]:RtvLCr )o N@׊w}Ǿ WRʋ4    ъ>  @^N\92"K5?>%;-εJGWqcJjhR0E I$0yT<__&z͑zu2cD@@" !$VA@@]@{q݌@S~J91q7džfMkgKG3 ѧjL!  @hH8C@@@@ SV#!  A !B@@@ Eu]葊<SU,YI]'   %~[m.)ϖQRZWq/ @hH 6B@@ ^xw7cg[C*Z%.?vQ3    lNu> YI{e$Y >\/?XԷ~qg1iۏȺGWo\y@@@?tvuˏ^*vDWɈA @m;J  ز}{`{{{/?#j}1   `q`;ur><:L#$ v@@| fwu}Xol=,/@x@@H;xh*)vtuD"$ IH@@)):D,ƶl6   @J |T{V}x4k!p<&<6B,@@C!  @pN5ow}ݨ1oφ   @ >WUzŋ`c@` 4   $9麤p    :WUѡ'mp#K`A@@$8םtml  .\A  !8mAI@@@ [ϻ. =CO@@@tK ۻҝ#)%@@CJ5'A@@D UVfd· @@@dK 󲓝#ha0  D*0(U]oTE   N兒1u8Ws]2@L(@@I`j]0} A   @g\ 7KfMt1 4xNJ   Keʘ!_?)@@H5[;GiDѡH #z%5A@@ | &Ēn[4Y 59A@@Tz9! s릥* BV +oiE@@@Oo2N]>q{f5@@@ }2 gge^$%9Qm  ~ӳ۷o*pB!7ncǎə3gQ\f͚%W\qTf6B@@ Yn^0Ir3/ {V3Gwͣ԰R  (PQ'kϾ#N4%(/3.Wv]V@H>f?Tٳg{+6l_]C*N={/,˖-E   .GW+o:>``Ô2ɕkR!  J_'  )%PSY$󥣫[>:tVۍ}hr.7jp*  q̐[M6iO 2,433Y=@ @h@#8C:%]6$!++K2e1Bjkke޽[E^n9R*k  @~N̟Z.ե   @;GBH?΀~XJJJ".iAAAsd͚5*rJ#\A ϗK.D{9x֫j,Φ'ӊW@@@@@@@h*ak?~WQQ3Ʈk{ fXh 6LVZe,nmmm۶A F@@@ tttƍE8s466^(//YfW\!:G{ܳgQ:.A R0a̘1#*۷KZpIJ)    %`<60nܸx"li&k=aԩ@za⇾B   S@ds_]C N:e˲l2う<7z"@.RY|TWG6?/G,i46   A ?xrرdB_?cpႵyYCM,Xz[8z5   K_ fpKV^m|ϋ>H~@ o>(o@o,Ӟb fɈ@@@ CCɇ'ŋJ~4>|*N\Y{r[_ui@@@С&w3eee5\c 7C; {\E֭[g pUWYN>tww[YUTTu]'F*ihh'O!14ȯ~+czi @@@ !`<icUK[l}]w%3fz5 n*KﻙI]aùqp#`lRi{ y Nӫ$0f]pxr.[[gH{@36ƞ1x=CK|%ڣ= =;RL I$-X h5Ǝɦ=4I{_4`ԨQЀ~/9szmy@@@H al'ONu >0m46Nu .Amnn'|RF|  z+C3 ---!A CS)2}K Qۿ>LM?>C#"VvoHY: uttg哤MMMIo8|pH`=9ؓ&@@{Cdz7m'N275@@@ q4$:c:+O2EVX!"Uxz!@dz|] hp(Xd¹>Oi b@@@|8t萵ע,kJLo|*W&t {ѣXK%7#\W@@@h?dC=͜9SWrszr饗#<"b}7ސ%KEjvhniNF| mD   E@8v옕wEE5nBʬ#486Þ&L`ur]v_j/`khP=F@@@!@@C0(ҥKeŢ]744L; ~^ڪo*9Ą3 1sssYb ЧCJzCumDz 8 '`${@^ w]FlY)uzDo` 8Wq഑~~dVNhI8' V{4z* "!o(g?ӽ566! lnnNxՐL7w]h]z.PۃLiCe0JωV|,T=ڐc~h?0цDVo =1uTǚͺ h1kٜEV B@@@j4۟3L$2A8{g83Nbc̤!3PN5yB ۓO>)weܸqX\m$i@&)X`,}Kc)}Us$X$8maDN15 I0,oϹt4xhZԧ;4蘒d ;m? `x>9y}:a?jȭ[tO5#/gH/ y Nӫ$=gP8 ߀s!pg(8%q^,Ш{~+OCDwk,`FOXtX'Xm49V{l`H`[Kc}r(ۿsD^Pܿ2믗ӧXl{oY SL+VL: /`sUVɃ>7\:Y6@@@dhՋpBIi7L4}xw9OQ8-{bS@F1 ]@ vHY-Hm~ϥvR Dkbp>=m P{YedSO=Ы,z뭃nnRW9ss=qh/:t#1g f^)lȞ.]*/6o.CGeoi@ymCDo @@@ 蹟cɓts:aѲk.c`OΏ;6ly {8q}K}'F\gH   3!=FzMn:y饗B`+WFԏַi.\(k׮Vo-^$mxH   .4u(`^8tѽa$4IummU"kA g6T47ݳgOD w671^h03B'   @ 0ݬRn%7rҞ"5a!YΝ;Wn߮k̘1V@@@ /6$/@@@<hBAOx֭F}r׆-+"ڋ;EiܸqA6l뮻nq&u:kZ{1b54y   .ASSS}6tss3ģ;Q /)~/zk\P'OXYS  6HmmmH0CIIQRk}&@@@@ 8!/QvW 39s_{DS0fRYYi2h0CI{{1?BwI.$@@@ Аx{ԓn j7!CuiCKE~Xn馰ƺ|G-Zd1P>%KoodԨQ2@@@qfQƿMb`Ĉּ^A3鵐o}[=@ƚ &SN6a56ol5+Cnh$@@@]K욽F* N>m.E]ԋڣCiLhzqaƐ~%ug   o)zLsΕ~i.^䩧?Z6P曺~}}9+\Cio.?Ϭ􁉿t}k&mf iCkj/C=cOjnb\kчJH    !@@@U[ya 3gΔ+V<<Yh0d„ FODŽ裏ZK5H>o&h3hޗ^zJįp ~_֭[:tIJedΜ925׬Y#oV}k2o޼e   $N +qbO    A nO~"Fv)=L8QF-6zh3iOw9u޽! Ch,t~yr1K}S{|駍 ƌc yq9ztvvlCMB    pN@@@@4pA`!N8aH{*8pYB@(--uӼgcjyٽ{;3F߄d馛싙F@@A%    *c^xA>#immW,2n0iWɓ^e5d>FPî]䥗^zkpn-ӧOo>   v/%~@@@@ h 0uuuK >ܸe unkk3N>m AQ\\,eee2ydIz@@@/hB<@@@@@@@@S Os#3@@@@@@@@<@$ @@@@@@@Vo= @@@@@@@< D@@@@@@@@o͎HS不GnYdIL;萍7ʱc̙3(EEER^^.f͒+B cʛۥ9*.\PrrrbږCVc'ܹsRRR"#G#FȄ dƌ1PLlld q,J?JGӧ]]]RVVf.̘(&66Bs2{5N5~3_r<+U9x*H .%" F04xr-ӑylذA^uioot3l2YhѠ&g{TRZZӶl@"e͚5^*˗/ "bb$gHi8%ŏH@_~eٱcǐkp]we6 ME6 &HdZd> n8vp/>+fLx8 Il. Ǔ7';@^g})N&d@\_x:|2uTs6_WF0Å \_{':;;88dn?C3ks-zˋy{6D X?wޑ?~|m8%b$gcQP9"w''O z\rIuE1qp{Nfϱ)k 1U2ү^>x~SXx~N8_Lz)30Dz&m_x~k׮5zg03ʒkFLbt=?ݻ׺ [273CHeRgnruɨQJLz|ШVMtqY:'89EO5xԋcQPӟTz Zx3@[hЩ4okLsG‚gűȮt 8,Yb UO=oO>>kMs,(@ !8'sc' gEo7$\ WOqk22I ^~3ԠSx_qKU3ΐO>Yϟ/˗/LZ[b;Zj|y0@z&:hVXBeyI^X DI Eh˩Fv*={&Mk73f̰ׯ]C=!ŀY7n47o^@q #s6㙾˒(v}γi&{8݀6 bhѢE*܇HPbA_C"KRZ=+Z f͚p/ea" 8bw&΋@WORLlA_'zxO \>oQg !oʧңGiܸq7zOÆ 3ަׯ/ڟ&2c yi`P DaDy 9" qР7|u,M<yEG X ɸ-3^ =3} Yyr~kٲL0Aׇi=C=X9~k_~m!n5}.L! ܋ ]@9r,ZȦg}d뭷ǭE#3q8e^Z#;cފG +'S^0\'VθX|EXhVK3i?$oׯϨ/lS אmͮJ9mK_夓Nۧ]1c\A=;: C.Fp dr Y+p/$V,hXl=uT2esf kF0 x&:rVXdυIˉV DsJ= /iWL6J* hpq0 Ȇ 4i?ڵWd'VMt+VСC+0i$JA`ҤI 3yu<>CN "5dȒ3ڵ#N8Av횔{QRf - \`>_q?)X":Ѭr?)# DOvP /ity.nݺt0 o~OzygQ˲fs@)Vp(KpJ a^C"Kϸ ,]5R ^KD"%u";cu(=;@6׉.YY * s>BVD Bη5o;65DB nL:t3rݺu뮻N]̝;׬lwna(0}t6lh{VҖJ;0k}5dq/$@ڵVzi~n6ꫯeժUtk{%':nّp7{+@WO _f |l!ˉ=/zZh`Җ.Ktjժ[@>}%KȲen&կ__81bK޽q~+O=+av' >R&A r Y^dIW.,9r漙3gʠAZ^@"'u"#;cmAry~Rb:r?)`R~<4v@lרQ#`o^K͛7'֛սKj+{6rJ{$0vXy'9潭c>dIw\!"hYW_}[VV&L`܋\ IH. nCI ,ube%g81>~I>iTBZh0D fZlZR+IDI@zW̦wE;4 0! */ ~ ԩSG;8W6}8"#DR8F#$wV̳Z+'1?brNǜ뤼bO+"P, _),1@95k&K,1PŊcz֬Y#+W޺uk{(omڴ`: Ff2@h0۠Adv3ϔ2>˕@! "å&]irzѷimqFת܋\ IH. n@X ׉u8O, >*P 4D#Y hɓ4giժUL>ݵL6m\ Pv5uÆ Ҷm[K3>t2b"Юeg0Csϕ-[KC9RDEd Y ,]Tn6:u$xnE͛^`H pGt|g ]&Њ$IHn(zNGsήOd#?k .Fb"]h i1c^:NfΜi/o֭[gbXvl[[rfc>Tl%M~^Tbhذ{>h$A֝,L܋ #MhOYpz~NpNSv%xRg !s=6l#zG}d8kM~ZJ {޴iS{"oNj-&LS XD(^|E?7 fKA\:Q^ų<"Ю];{5 &u>3||M[=kw{Wq'u2# 1\o@PWO/;@ ʏ=/P 4"w}hD=lڴɞ7z#GEF Vm Tp6kwYo3@ |2qD;[fg-uԱgPyX7 A_C܋p nM`4v'ؓW.{ǝ܋ #MhOY`~~lpNS%xRg<{@xw.W_}e9~Kjj Æ ӧӶv[e]qt"zhҾ~a9c{C@!}Kp̘1.;LT"-5ʕ{bbŊҧO%%0¸ á$7'4?6Vy9Ct;#GvM?c]9gr/rj0@4Yn:<3g͞Ipǖ:~N9JBbO@4[ j z=n`ƌ裏ʚ5kE+U$mڴ-ZȬY~s5תo_~R^={@y!:{IxKPhnٲԮ][̙#heΤ]M~I #PT?yGn/ K@ k{Q ,BZ >8>_͚5eܹ2{lYzsڵ5;½+8 )ױ%g) Z;c)8|*գ :~RgO+ n1R#V}G!mVvi'{<݀'hdݔ)Sdʕ׳tRp[\pҸqtf>(5Trei߾ʉV,X?4+gΜi^Kzs~!H߾}I|"Pի隸0º!ưl2?>h~Zdh VQr~^S%Et@y&rulIYVXgF<-+'8J(øNz= ;g#y^hs=̀ `X~5~ӵ38CׯoOg Gkݺv◴k;Yg%"LCy%Ot܇FL k{Qd'%bk ~Isw;Ova 6Y|"@yɬs[|@y/J̈q|E]y<ΫR;ʰ'vx\@=o9r .JmҤhzq@ 4,X[bԩS wvE>dI@n܋rsch h Z~xye뭷Fҕ7q/* #Px—9(n3w~Rd|Fe!@@@@. kd@ # xgaÆ|Ŋ}oӦ8LHrʌrY7LD@@@(:l'/u  @V4d _VZRNog Æ $@@@@ Q:D  @q Y\y$7        3bV.       Qˉ(yD@-[&/V4h@7o.+Ɇ d޼y`f͚IKPs!… eŊ͛vRn]z뭥RJ[. '5\h̙3G*T`Z6nXիWB    _ )U 'UEE|@~1"ǎ @uٹ{Dôo&4GWZeM6?M& hBN=Ԭ_qQtM;03a &~1B~qgܹx≲>8'm~` -l\Z3 _.m۶F]7n>heܹb\sl6x ϧ5komf7/mڴ]Gmx3  Y UEZߐ:|R?n"s: -]Y8>ǎ Prڵkڴi=:wMF9Odz]ږȑ#'}KtG}d~&M-0][cu48#Y4ig-vZr; */exZa%5,<+(o9Ǐ7~i3XEWʓs7M_eƌ*{!c iرfʕ+L|+"s%F3@@H#"\I )uO$ 't˅\"\@_ˋG 9 hպ'ʹے_VNj*c=&wyh%=z6Ӎxիok p 3x9sL \-zx)ϧoFnVI ^x<ϝF@@(.)hȮ̩HEEr @h!^"\Yfbu [Vjժ:uH+;.4h 'tNf7 ښ?,_5^{ѢEf <ٕ=3?>kSVtݻ˾+۷7зC>s3f9;O>/ڛOfk֬iOK6j=5wޮq-X@:W.bۛMV>{9YpM~|ugb@@@ 7䲎)gJ~]Qx^@ 4Ĺ9v@ &vP~}{&Ν;Wy$_ >мXIfeOn6Yj9[rx§ve fT\|rQGmٲyڵ`9Gn;3X_~1n:Ѯ!,T׀ g;v 6&o0ön+C Zj]n㏗/\f͚e/M#׷{"|?Vn&P=Mڶmkiɀ̷oFA@'   D \q>gJ"O䧾: 0]? @\sh$Y~aW]vo9egyG3ϴ4BoҖ&^{5.,ezԫWnµrF9t~F ,o++!V[me4hO[7]=}>iSΤ]xkԨ!?O'kWLZWb@@(u~Br]Q$dO _S# 7n[nٮRKѮ-hEI&M6rGK/d.f:tovi&{K￿tg;o<#~zsU.5jtS+VRFq:^{I]ӒfVtK}@Cv{LeeeQamYd=4wZh!4r1@@L:iO;2=t;Qd>IbcE@{=z!M6uMK5r1Ǹf駮qkDhpN:)0N=TyShVڼy=ʏ7w'hvrwʅ^(I7-x6lؐn|V;gq89^y衇䪫2[k[H   #3%OdrgZEE&,q !.%q" ٳ]{l߾k<݈cZiʕ-8N\A>#JTv@D&U&տ/첋wS)ǫT0Χ:\z-0`hE B   @ϔOP?EI}n:LEY @q(e@. 4)O5jiB}G:SڵeƌIi~gn1gqv PbEiذaZ hkEӭIyҥ*… jSf֭͒['G~vQޤ~6m4E`.&8>hy\2hA$ZڽvѪU_@@@ A:RQP?͞AMavWKbC   ,7j(但?S/_5\eDߨp4,[̵uTkZ&MРz24?3zpiZdL< ъ п?#MraO-[+R`n:?~7h  lnEv}wѲ&!  Q"sQP?ő-9%k(, >@8 @@ zD iӦYV[h2iO?_>`o@C޽uR h ?|G*RyaO݄h?w,^8)ܹsW_54o߾rK|N @@@aYǿȑ#[n1Hꇾ}SOɥ^*J,k|"  F gJ'(rn:  W^!ks (мysk׮-Æ sMeDLޮ;,XѰtV[{7JCNqo |tرcZжm[~?[СC|eI!] |rZjrAVnb„ 2|I䬳Β~ž   @x~'wE߅B @ N4ĩ9V@BzEjV4RF iܸq^sаaC.\(7o3oJ :u]xYf1c%\bvOaq+ժUK׿Z/ۮy[.Hv}wIR3e\;}+;;͋wu>[i柎ofp'|"|NӢEZ{   㙒-[,|Qq.m߅ PG y\rkM5mԵM XxkZdoۧ[/qګXnaĉrJ{ ѣ]K mua=L̠+< 4D2IZ^A.mF=X4hUKyW$ԦM]jKzn@@@C gJ'[΅QGA*@-t9ł!@b%QΔGly>wK/G!M40a1µȓO>)uuMLbO7{iv`OL2϶$J;cǎ4\x2n8{]o߾=7!βP>(aheAժUevΝPNLǀq)IL6MA5l6ݞ6@@@RȶA=]'gJ2"s: -M EX0 @]6gq'[)?{̵n&m۶uM;$,睰tRy׼wdgk2R^=,.BI3ghP7mذ;)qCҙ>v X]>WӔ?̘1#UyTԩ#rf@@@%m}:A?Sj(|CuaKQhI@-4l`@X ԨQurE\Ӝ#._fM ^vZnV駟\=X׸5ҲeK4h3Z$Sku% rB^\>; Ж%%'~.͚5K* \`<е믿.}ksd޼yrW$t}\;]twv% 8g:S7g޽sa@@@7覲]'gJ"r"s: -I E- ! +ƍ~. `8SO].+k;wvm^eʕ<Yf=g$Yg%[m=MnfyGd̙hZbm]k@ ufnӦMN6{eȐ!j*t mA:A]ʓ;0׹O mB["sꩧhx>suuy|   ȥ!u~á~ZaQq.QGIB+Po ?"  wI&Ʌ^ڮvs׮2*Fu&]ϖ_~w0]8vyݰ(|饗… }Tv?{{!w}ws|ԩ~/X]̞=۹ԯ__:u$=]^JM7ݔmH7ar'o lҬY3x]N:4XJ;~[f1o{\4Q$n6y\۰F N-[<`-jv5N;ށϧW_}Օ|iҤ]f8]l:$!  &Pu7NϔZO~BM"s: -} B  X@O?@ϙ3ǥrV_WBK ֆGwm9/A;3趶~{֭[[?̠A?]-;+8&kLhYx\zv5@EyԖ?p׮ƍU7rW(%-[o0jo]ﴠϧ:J盯˗1hp7A'-%8   ^ \ R 1eBOhQGƹD&  s@X iFޤ-̚5 6~X(;vSTjRZڦߧL-\~ҼysE}k}m!]Fõ[\g4 `ȑfS<6m*}#FE]dA-5XIpRaMzru]g$[WN;VZK9=IЮQjժ)󢭭s1o^R.L@@@\rYG3 Up'taQq.QG>Cx D<˝F@ A`޼yh"3^Vj׮5!S[LЦ.Mwm_kѢMĔ)S./ ݇>2       @i PQ!       i"]|d@@@@@@@ 4˕B@@@@@@@ 4D<       )@@Ci+G       @hty@@@@@@@JS,W @@@@@@@H #        Y        !G@@@@@@@(MJ\9*@@@@@@@"-@@C#       P4frT       DZHG@@@@@@@4h(r@@@@@@@ .>2       @i PQ!       i"]|d@@@@@@@ 4˕B@@@@@@@ 4D<       )@@Ci+G       @hty@@@@@@@JS,W @@@@@@@H #        Y        !G@@@@@@@(MJ\9*@@@@@@@"-@@C#       P4frT       DZHG@@@@@@@4h(r@@@@@@@ .>2       @i PQ!       i"]|d@@@@@@@ 4˕B@@@@@@@ 4D<       )@@Ci+G       @hty@@@@@@@JS,W @@@@@@@H #        Y       ܓXb̚5K~7Ytl6KͥB %w   D[`2yd;w,^X5j$-[-ZHƍψv >},\P,X ˖-f͚ɶnkխ[7  405$}y7/B=W^]n;{ꫯvwbد_?,uQr5ށlWcڛ_">=@ Pv[6 @@ +u]ʄqi2?ONcѢEٺꪫ䮻l}7PٽX% \:QFѣeժUI˨AҵkW9CJ*%]6݌.HƏo/vwa3@E @hZ ̜9S,O?Bk׮{'SNnlXQ _.]~,?uT8q} \nco?K.@@@,F糮o|c޽{W_}2{첋9?gdfID*UOK.D)ƪU&,< :4!\ɫW," /@0Cː#  @i | ]c2Djժ0 ๺|eeergmGrg~6h aUV[oeRfƍf}7|#׿reWF͎@ZoYB.ڔ_0>|͢J:_j~۵Noڴ~: QF0-@w;@@@ $LիW7,fpD{g-ww3hk$>Cz]p s9?|'eo5]+ @P*%Y1zh3 ۛE d/}٤f͚K/dF}{$z9餓|[xfQXcǎQ&y|P  DH`ʕnҸqc4F-O޴͛M[TYwVO>39ꨣm&z)LI+4  @) T, /tR9Ds&}H6Z_|x7]v$sܹ2b4F@@@@| ^ڵ͛A֮]+'xlڴu8s=u0wߕ>ښd~nذA'm- @@ N .p}ɜ9s\޽p iَԯ__nt$@@@@ (KUV jWl h7:.]#;T, ay率Ç3=p iÍ7(Z/k:ɓ'˼y̺-Zn&o}tb 6myngQ뛢Z^W3Rz Z2 PjƏ$7n3ٳg^5xZjtAeFe|Aٟ>e+μ׮]h lĉo{wwmKn6MAqtƃb(3 \ybŊeFPC'[fURw?:uqA9h);묳ʶfMeCCF4rtY~7z_~evmO)?+ݵص]#@5C涍J2#5㏷UZlֳ>&X@@Z^p=СCSn'g^op>oϗ:ܻwoWy?\ۻ]J7bڻsk6),jOgw&9yt^sz-j[k¾>䓤Zc5պ~M6V=~eFIjnԨQe~uCq:w\v]wiJ)k0 /.ˣ>;ֵ??O B_Tn;ku~)k/LC(=)C∊E` Q_LrIkY߾}|CH|3:(W%ǵ>4郈r:qݺuM6"ˌ.F\wnoX(92ƴ۷0Za(es<}>e .6ЪB&M2skf͚eo3] kAŹV-^ؚ^hO&|;`A@@@G 0y*3y)ٰ>g:S6,܇5l4۟/š3ˬ<Ngwk9gXu=?yN6|&Cz5]\t~ Z/xlO/[zu}xg̟? HdӍ.5|MRq ZN;ISK4ӗluU+%ziG>)kŻo@J[偄@ /bvgBʕEMFĶooժbT]PhrQLz rg^z%92]\M?0utAF &|,]4gϖO4s zsRFF0ilٲoֈbDqg65OV]    Pa=C. 9ޛR(BMx=16c|"F i9:M6e ѣ-f.d {キL:5:F+ b%~me hsFp+Yㅺ32Zu[2ekZ#$CV-:BKm׊e' @|%8>6i9aˆvmA> y~zhrMv*F1s-1ys-?r_}4jԨЇ2`j4'Ffm>=ZG)7t)3xh_dt+!Ff:u2Sc+y.^\D<>裤A+E D4t" 0E.FubD k=?kF[7_R,!Y4p[oy=7kuZfHVh2Ϟf Fk)xsuklY\+2  ,3XϙV[ς;찃zlS͢z3w/n"]'?kۻr4k|!rޒъ/.Ӓ x0QDG_dy\uAFvPC8N(s̱߸q-^8p7Pk0-X1Z 5i2Zpsi _SUWQ!úVe@ &Ɨy~͌KwI'}?n+u4~/3ؒnN3kܸx5m,MӇŬrѮ<̤]-̜9H8T)vn%M6%tkMJO<m3]\]50Kgx,Ө*?~|ѪD6MAmfSv N#_}qoxK:n<ĺ7ʌ". @@@ _rzN Wݟ)KWkyvn_u`ud}/Z.䒄}{v9aQ?VXỞ [t7.˹}뮻.3znQqI ,Oъ،7Ct--zf"+¬ ڰ=. @<*_ H]@Mz'> _޵kFy1\ӝ#ڂFt{#^{͹hdo6y 2ݺukeZjfkwڄX4x`9_#tQm&Kꃶ֠]M8F_A#SEr 6G}l)Bǭ4fMi.Fhz,o8/mga*-iv7oiӒ$@@@ JA=F Ӽ*OQ-bHes|F̊n"m'V_~´|N(o@=-'`/]Y7Zt/yСb jԨ!kG7o*k0-}KpL띴糒j TUKm׊T&iOXl޼y t[o%ހlwug >35B#ǵUZfR76y~ Zv̙],u]'DIz۵?lmT[j5yvlCƎ+^Z| ̴~KQ5Og2 s.ǧlTˬX&Rf;O[d8xu\_RL3tW:3gE N8C3T޽j*eWr fS}F)ywEPי۱uU,A_Ƶb|"Sx{GMyŋBʵnݺmεF=>chQkI6?ko޴~z$sO?uM 5j䚖ɈvuMm{{;;>{lE t8ǽ_؝ 5-FhP392e{z ʄN8 @@@> z|[JeV 2~]z߾~Xls{ %a!co4]ǛuKoiԨQ;fWe/kPM^{:g}5Ю]2XQ^:køVO@x TasA xR2ApѦky@KڴFW;#g͚n6dQf̈́{-({ךg*UdÆ :SLS>/?˸qiloY}Ef2Mܟ|I{х Y۞v7qK}d:0    ybF1<ǡ̂9ղe˄MuCP9&'A!61VP}r!MuQ9y]5?ַֻ_keH1\oy_GoyfVAr]Kt׆q'  !A4,Y$'ك߾s h]Ò3!$֭[^4CtI6ֻa0qD駟̠m0Ywldz^v]~mʴiMi_@r:piA@@ 3o=<s,캉l=7 i%Ă MР3n֭xKVԖ>Vkyf`zynX\K.DniW^-Ϣ?[9s©jg2Xꥃ6k%se@J[.'J| vtݛB 8:%۝rVZ>蠎Tƿ\qf@4h 53f̠A?Mo6K/ڵkzg@@@PϼQ9lYxg>K U7ǰ_@|ǹ;GLȵn{ӧOOȃNn=?3E[Mm{L>`'HJ\jG}ؒu;ngϞfk$#p]Kty$9= #bTa6ïMM9|v+ /`xɒ6mM+~kfלs~׭[azͭCvm'wٴ5=٧ա*Æ ?0bM϶6Dž4*y[]x8S؏{ #  d'Pr Y7o!maÆ~WZ(Ǒ2]kW^ݬqML2| V 8lew=Inܓ5ᬳΒ??US]X\뀴 g3f̛79I.W^qMnR3Ir]L,xH^:ky #S.'Ynv9`LP>9䓭IfouMw.7x踕4h` ڟeľkg30k,\S MBN(_ocn_&m@\ԩjw!:O?]Ƶo: Li+ƍft7`@@(֧d&meoݵw}7 oVF6ln͵_/ iF/b^ܓѮ]@hAco0Þ{)H]&P^bEB*yz=Zaq4my]v]v^@@@ h=G6i [a?;]*åZ7/#9e PoҖ#3M4hϢE\J3]bh?¿;2qĄ5ۊ\."{^ԯA[n>{nOtf(ʯT/kqz0 S܏){x:mڴ7fI=܄/8oS^ޠLе8go78:|]wɪU\Ԗ>#t _}#:rGvc%뭷Qy7a8]   +mۼx4s_>T&ESmљۀ|wy饗1ݻkZo`Bey~?&w9^?k`äI3Ҁg*kP둜S_}Xu^Lt7Qj[΀\-[`@ 4ĵC8n2QΤW\qsR]LT 'd3\_-3u9}u?]5- шɓ'UW_}5?5Y U暞j_Mׯ]BPFk_7@,H+   \{&9Ks|BJ`B)MhYg*%=^Rk,FEmOs7~s4a:dO\RKy3ڶ.u2I]L:5#Q:aZ'~ևsMdDӧht~y{Um!(ѳgObdwœ|='l8 (wDJTFkW~۵=&ƯTf   @~gjcǎx3P /[^7qW'tI]p ~YO;e̘15j$7xkZ})B5BLMmYUVRn]95B_4uu[Τ-zJ<3)V@ȑ#]5%]*uz̥\/ֵa> @i P[G㎄|uQ9C"]MVu7aK>eFw-8vѦM]]ǯ͙35-ՈѾ {eWf矋M6]?5ktmrݺuLFsOyES[7v7]v@@@ +Q[/\lYF7y7s| b|*,]wNꫯ&,]tQt[4"ؙJT7 &8W5$z\ lDJgnFO)S8'oY>t}K\t}jKZoŔ g{9?ٰ^~eqor) o]X   >ծ]۵CmPӓ%}&izVXs_P7Gp/]Θ1#as.ڲoo۷z;9q㎓QF%]/4Miw-[]O[Op&}AF.M朜0uں3oRNxP/8]ÅBúV  V|#-@ΝEٳh+ ΤiP5\#:u[</}rJs\z饮y<p 'v!?x/]T&N(ǏÇ xgE6H[iL4mԌl  dhuj.ړFz{Z&u[}VZ\\[f{1y7]6,l.gD[:M+AK}o?֧omMr}z[pd@@@ 4u5 2ާ͵6l۶֗hڥj>mVfR " s_&P7u+r"? x?u4=L:I&ɷ~gNBēt ͟v/vaZ iv'pءїonFuϻZ^۵k'jvCZ_uZŋln~nݺ?c!9ѻw& =RZIv0@  fϞ]f|9,3.)eW:FKڿtQfprF}wyy[rmx(H>}=Ó.7cڵ~iE]t2alވwm;btCkYˌ}W^6A3OÅw7_WײFe=/ӁlN+̫5z=μwwnL JH^ o=#+ko=#~Zkf|ΩtPtK29CipZ9\`2Dt/8Ǖ&vYeu].kyx|"ԏ;g Z+Zk?kRvɭk?mI95;utQi?"uvq믻m$ͶMoh$oYGAS-D8n3 =34[[287QD?,4~ FpEb\p!  TH@|饗سgOyܖ'iI>q$=iM:.Mpo˷v z79ѧv]XhKgyfewjGqczn&bD[JtcǎEc0ݩ$MxT⸲]Vxy@G 3:6O>Fi&2xw_~F KL0AZRG+Ms1Ŗ6'h vqGm&s-(SmOI'T4|۶m_tBv-`hW^ymPnᡇ ~W^.ǎkF=   @Ǹq/BV\?sfۨLؾoTpZqI{^޵g?s+ =t.^;7|S Pt1y_ӡA}yMf=`xoRǕͲ˛~}r+AO@j_6FQ$Y~BHn) ooF뭷4kZVƌ#ÇNfΜ)giTbh/    P~֗;F-zmzMثW/VV1ؼbqq]]hpo"Ҿk{1-fmレM4./h:f̘ᶌ:lj'a2i$r7|#SLSAڵkƪֽTXH*q\.+lz_JԔ %@ڞ+7&^l{p/       TB.'*:@  {YJ@@@@@@ P!@B8iS~B(|A@@@@@Ȍ]NdfS@o)ᄏϪEW$^{m{+%f@@@@@@!cQ@ k/e˖Zp<#2p@2<ꨣ+1      EZhV!M @CA/-Z1cƄ*2h[ѣGlPZX @@@@@@5 KG|r/+2C^f      dE%H ٳsycҮ&>iڔ"1@@@@@@ };G>#9I]tQhY}z_r%ra}dr' _~|wF#rJ۷[gϞ2fiժUyV'|RM3;Nڴi 8{lի̝;W8yCR鲦1yo:tw2R:4mJURU/cW^s=߶_z110 Y+R +5^J*V֋MkI&ҲeKCҽ{wJtn$ kaxLgL{cp_&^&~SM1Q/XfDo6dc_Kҗ(VS~n[+KGj%6a;g/D B{5ɓ'˧~ǿ`<Ȓ%KBqyXxq(>,hѢ̙Sg~]>ip ~ ^{mE+3g!ӧO/Z+D+4tI2>Ӈ=()| Uɗ.3g K.mX5Afb&1BN?ty7eV żX>pl͛7/T̟??͝L Lda{f;&5/vLKVBTW_}}Jo=;夓Nm&i1] `*H/'5L^eH̓}-.6ǔ_6'N}zrS,ʟkֈ@JblkrzP렭zxiER+3JgҠa:,)wBic^f͚%'xmr)5׋y~\rZվI? lذwQZ$5`lHU/@y\zGZhH@SeHVҚ:6]Z?JUW]v2c 9.".LIp ^%5K: M6kZ`]we~}0~xіAk>Sdu֑zr67E Pgxd$i#$2-@LoWnzXէORajR@j:^ҷoߊ3ZO>Z8]zް 7mvȐ!>y'QeM/ɶ&,i plY؞h^y*kQl&FY&Ewn%oN;M iݺ7'ǴubV@M bQy PQuBCn:Ok׮rtV@`_zxtkʭФIT+4[/GWj# ^zRɈ[ 2Y T浘ڶm+s[b}mAoF_Écʬ2T;{9A(Siu&T#$xouh Π8 w 7EkkVhfmR_A$:tp5j[@@@{キz衡<|A@@.*4T"eX`5i_Mm?\.g#8m=@_xM;/ZbElmL_Gψh_SnSOuniW57n -[::T|衇_9RF>ԩlvrGˠAEE ~׷_{5#OSov<`:Ss7NwGyD}MvCpg/~ i<"dΜ9nÇ#FȌ3dUVM7T>`QΝ;3EyT7U&OVfh֬暲;6I]O믿nI{=ꫯ}ؾԼ3_0[B(VA탃~3t|Λӹ?><6J.쒛8qb޴2c<.ŏ?{GsNM⊜S1h|r- '6jSs=ꪫ:.lZDrHΩԔs*zߝ9bQZ?Zn]0NO?1L-TNmfx|D?e]񫯾j.򛗝i VP`Btr*|ǧS9`tcI>,{۞y}cmxG8Kgc+cXNۡmTfvy~̜Iic %8nm쇥[2OzL9k;: i๸w:7 7P8L;N qL Aq&q}GxZА1m!i9蹤]x&L3 Q_[e4i?^9sEJw Ɲ5fPG[OEϮd%"O4ɓnUbZIpӾ~Ը.ۥRn6wKoP:L>MoRFqyq,]ǥiTB@Tf@@+485[sg}vFw4i缉s%Рw[Oܧ>X/v#U+x8oƙA^ʻ'Z#.}:MR2BAƯq7s*m6oڝ7k۶mnj^:[jt=rNkiI:i$O^8-24N7<ȜӲFx5pA@׮]-[{s_~yi $>.?sZHo;j%^|&'6z;Xs,sZ/879fi4]=XN<+6pÜqCq7(sM>ZJVwݮZ+n\ve&os߸8\ǒIcn;ƱXJ>[i ކ2'LBLC}͋+G}l]cql?u:Oi,34yi&yp*K-Q~UDytHQQ6GK'loP<7MIecGoXLLTJ FFRi]g-4~0N?ܖ-4ۉ+>󾛴Ͻ;Oƍ羁 Ni<7;vJ>l!w9}(45ӷז(=VNB˛ O+78]#oulz(iJ1j5lϞ=Jj4}.o7kkN7  {_n(N wѠtIcJVk:zP|2MINo *b7֡ib$P+LN~5 kYpsƵ4ݜ7Z3>i=wk ߘ Z^+yq駶ԠNn -OӲ*N[ ,!Ͻ;_Lěyz }CN/_\[w2:NG~0t}V$,ѤNJ5uLX,%enoۛ^{M?./010 c=m{c~XU!RI,, ?ܻԡP8mSڈs'IҪ=Ֆ[3&Ǵ߆RAeAwii!,Ӹ/yx娗JThuYhgV2CӔqI*K)vUI_pHQU6GK'x~i7?/&7)ll`l6`GTh~;^;y7hРЍVhVw瞼[D߆0^xӴB - ]w](n}oЇWS\.^86>+C8ذѓ o7tb>JZ9!T[7?mmzy6LoRF涎Ee?-@uBw1gc+4DFp]z nVh(^ס6dPq``o~PÆ f;.H;b6wK6橧S0y>L.6\uU$}hpJizr-z-u=ctjW޸^h7ZmиG(;Nm1ɯwdA'?Ӫ6_}UE.PbjZɳ>nO1/O cƌ UnEXדF27bqV((6D[]cfp壸ܶwccX|l !~ib`d{l;6Rέt41pǤŒ԰:hh=_s93J_,O6)mĩ)XSAB}"v7)vLkzl6:LA[et8be}͗+GߘrWhyiOxl?yeOm'ZIy/6˯,}~6R i7?04MIes:m&ATh(r#w߀ԚM8u]TI}ߤy[߀v~mdЇڵkJ7zRoΧ:@4} R]ԩS|k F뮻-3& R|͛w Non/6:ٳCi> oD+f<5-In$,s\MC7 O0aB聛v o&h`*{7:y,jMiZv<L/gii/M L˜lOc~Xʹ&԰V[m7pVR98;n+Р-hedFeߙbǴoäUMiy_㕣~\ 61M /G6ϟ~V̰qiMd{_66)f%4v.`;6J OQ6cVnbO!9Af@,MBqގ.m۶^&OwNj=߈8Mp盝wn&\y{3[o=o3gN~qF4/4dssQq޸D٩MwN`e*Ӝ8p΍cבoӵMu9~%?oGwO5? q.b"ğ֭uQ*N0 ew&߆3! eA9Ґ},?y6oɕ,4<*4Ufo9jƞ[WVLҾ~Triv6,w>MUJJ^4cRez),@)Th(EeJ?)N-!uZÈ#BQ%yom"чN"dƌ4}dݻ\^(4IE9=00yqN }דgr׋R@hMZ#1WhKnvы蠕f~ͿTGMKW8tYm'z368DB0p&6xt3rLuJKBi3݇t=zn$eF]U I:TԱر4 _c$A4J&y/%L^%[aN[}mĉ,}+9/6GlSڈӦqןVfV Ҷ|׷zl%/L ^>M?PNCZe4..$׍IKGI G8ʗRYf>h{_m칥U~e$ǫ$86<$iKIӛ6},VLOjIxJBCr,WӧOHJz2ˤmCN+(D+)LP 64FKb=<=8ӷm/3mk=ʯ,D$.<$iKIӛ6},VLOjIxJ(&{6헾PM"(|cEB5&.]6zX~O֭[VӪUw'*ڽH ͛7ꫯv7Ȅ$ui+oh۷V&.PdFa…nj+iGiPAok% &ȅ^h2hڇҥKMK5LMR#0oiG풬X:uJGBi3}CCo21m۶޲eR'+ e$#_p,P]de4{)aqk?LrnU2z> vL×sqNi#r.JL)%O]& eA`$&a*}Y,I ?*S4v~eF?Z-l#des`t{^|KGӓiqq,Lo-#`*Pړ- @}Mh༸1cƸ1<-MmjYPr ڬlpGUg)]-LbL≖I<& 8,jmFrrT˞$}j`K07eo/ʱ`kly$O0mo~.o=r7wCޠ}-맍sJq!@ߙXY( B"-:5ftyӺdKo5~}Y2׏r 3,oPy+5|0*ӃdThKܙ}S(7¦=/Zcڴi N{/IQIG̠#w}}"G[mܹ *fEN(}X}Qw7$4+4 As5׸Ją׮Z8 9dW b*joeY2IQs[py; *`Rcv^yURP/t9Q/[|?ܟWlDV԰KfէYGkjsw9"ӷG) (XAGV*xqԚG} kI-чIH4kleSOW_}%~ɕ[ } R).88$ْcdžchYAt\!V[-o~T_|e_' d8rPH;_hx:MpGr6.߸a~5ϲq&R c$[iY/M^06jrH{0=A,X௦M+.0b2iz ;| %- YH-GM&K/y ^K;kbHr dXu~ǟ}mpO˒I׏>,j4ֽ1;v>+Tvc±v]mRVkTh-J~ h-P}s ~Zދ-r+vo{>:u觾ag9$Ǣ7"?5j7DO &M`oϷ~;49OhF/LG)nh s)n ؘmUj)"Gv>CkaMǵy-mksm)#_\Zg:X]v:lv|xS f4?X^龪w>3yo,Y.su[ ʳ>ղ[nwъE Vm)d?eu~XGA+ciR,{.c4/iY/M^p6jz_Jѕ+W3+TX2^P[ݼysK|}psutM t sԷ{1&^z%y%`gnA`gu?#Ǐ}ڎ&ZDoDC=$Frԇ&5Y꠵o:y>ҁnsߨ W4}S|w]|B# G .Pм޽{h^}QÃ>OV~ zH+1z~4zOElqlEQxjx 0_ҁ7FOm'Noo( {W55Ϫb,/DZ`$a,ʱ_&[:vq? n7h9;Tcf981ed%8;cR* hYHC娶XlЗ?O^,XY,ȴ:l?JU+ǾmlRcȒI׏jgl}Lom,oXT%[RThKsy}7yr]$}Р(jn8Fa_hIo{キjwޑˏV߈HÛo;}p y4p>lMoEߘ.4W^yoS7IvQ?s=W:vMN3pU+*[}xZ_ZS`r{G03  >ӼI-4R8裏 .}饗ʗ_~ V(q͍BeO[5ъT .:uN:)u\`'=?~܈p!-^c!4.li9+q:vq? n`ߦu_We}98B d]~gLA[eAퟅ4$IDQ0dȐI2e~y'QkBMSgq^%?ZIy\#K&i_?ͲIgl;g%~[b%ؒBCmo_rG@oDÿop7Ҵ-0pa'j_#qFߩD>X7fBĉ'ǎ -~;oҥ믿^6 _{ݮW_6M>K }K]{@:w,￿V.?%3?nwntlLr: [lEb$?hР[6d׌wh%`m#ZtD [&7xcFN۷o_y'IVffmB %hW2I+CᄏA/.HZ>, 8W_}uouӛZF2W+l ϝv)Ԓ^j7h?Ka?-8r뭷ʎ;Po3;Lͳq|[>8Bp}i]/sVuT~&=&4+8Pv\q6TJrVYdd! Iҫam?qg-:ApkdM~e`㕾,4:l?KWei7d,mo$|V7ȶsVu,VLϊ-qV9K^؏Gt~yh 47k(l0qMG 6۹ }rN农Eysp s~rN:}ه:džkD)zءn9fqhi]"o᝷ sӜrkɝviuY'y.i):JqZd9…|87r #<2[es% GlSTt03)losSkxe?-o2 `E*4hAv/xN9V`{gؕcYW:tJO0mq}鼡 ބrT躢ΛhzjKnBĩsZp:_7GO^{m?~o=>wm N.HJrNk(9 ?}^:}:s%頕H8|j`r(L0uLb#4,6͟_}84Gӵy4 M\hQ$Ev<i&cdheo˗/9-VOV3$洮EY cLizl<L/c7Ĵ]$7Iǎs+s51=&~><iyqNi#δ}~]AemΘmHRf,H3 &/ccxJ *oٲ{-6}9|c*4hl\czy3y(ϟqgH<ɳ)ǾVm<.WUiog׏bzo/>yF>s.g7?/M&&Ie{{q,]{iJ lw΄7 vm6⼽/ۯMk wyEMJ!~zҥK`B=zPY>-м,|Ѯ#Яz b]vm.X //46s]h"{\k>|#W_}6ߞ/]a8iC JcW/׸%iݺh_`-_7\܌o&J#.|MӦ WSOBl?s{%LԮonnJb16Ԯ {@cp_( IY.9T檣6/Hĕ)Z>\ɕW^-:-ԈvgێT q[vRyp5\J>D`X*ѴM2Lg$´j8&N&}AӢ-A E/ zo~|@Uh\I P#NUtOw2jԨ@@@@G.'g[9-7m^$j}(3A X*3T£Rjk0~eΝ;lG@H.-FڲU    P]ThEjSЮ/_~7… Ƭ}k3ް{z|"Pݺu`_wuWU(e6mA@:Yt;K./p@d|ԡv4rH?nt @Ǝ+=|GnWUI'XY@@@HE 0        )@ij       "@T@@@@@@@BCą       P!F"A@@@@@@@4А&q!       @*ThHH@@@@@@@@ M*4I\        Ra$@@@@@@@HS ij       "@T@@@@@@@BCą       4O%")Y`̙rwʕ+8N?tСC,Y"Æ oV4ιsJvcǎ[H޽m۶e@@@@@@@*!@J:< SLS|rdDx套^ŋYpL>]ƌ#O? 4H @@@@@@@(@ n0qF't+4~XM&|pG@@@@@@@Th_Иտ ͛7K^k׮ne/BF7ߔ5XCva#       dM "K.ur%}Μ93˷nZN>d27Q+5l#<"{9wz-|"       )JM$̚5QV\q '*33}I .>       YBC>|f͚ɦn8Z!C6xGYg?̰aqF@@@@@@@ȚʸE͛vr}^j9vXYl~m g?gO8Q&OOc~_q{MH=ȿ@p1[P,~S[ߔnWK/=7۱$YXbE?djZ1ԗ@}}y\A\ն@tw\ToZt??yeW_?k}Ȑ!h"7l 0@}&M -Su/F%ݻwN*y\xCNҤI4$2e,__h֒VZA N hũ-[e~ް&tMZh}X&oƽ9MVĚ73^ uxǀ)0g3f;[lŋ{8t߿hWEoh߾kg[}S'K@]rZ_}\G˪Zg ݥK#N:=zHӦPty/ܵQGU_ )ӂSjoO6͏@@@@@@@$WK}oܹxq}OெA+<~R d\ _F6E `:hk :tpk2Th0#       @*ZAm?`ߥKׯ㎲[g)~. r-O> M 0mC+@̚5F?HjtD@@@@@@Ȋ@E*4h%GyD{PIQfΜ)CuVYen  L{N?{?+O1@IDATO3aƍ7xÏrnB #вeע-ZYXH_̙HfϞ]wy&Í`ia=Uy'ϥ ߔnWKjvtzu[:RC{ޭ[!YA@@Gz}KO[Qxdڴie^ vUڶmk]f2o<;w%[q䡇C=T q)4Mx{H| -b4/Z!ZAX$ |@@@@@@@l X_W_-ǏCdwvzwMO0AF-|7cƌz,X sPJlٲТI?4}(r        P!+{^"oꫯ.]wUj zrk g'p7~:ϳ12rHݨՉ:ʸFDVp(|_VZ[7}.ǒʇN6REh+7Mct~a7.7ץou˓o@@@w+4hk \sL<ٷ[lak!vgs=',YMp)vCa9s}.ji I+4DkZo%X E[\נ@tҥD+C`R#w;X QvSUx |7lI)giҤI Z4oeIʩ&J DKZ]@@@@ zpĈrXeUD[O8#cǎrlfկ^BeڴirYg?ƫ-AhE4hb7A+tD       @%R0w\7/\tIҩSJOڴiƠys+|ߗʏWzq#&LM~뭷4{wygi׮54͛3?L+3h_#       (jM6l#gyի$YL+6xrʽ+>XXk7jԨѾۡezĠk%ٳgV @@@@@@@Ȣ@/{wIkK,UȚkWhЊ EӦMfC`?ܺ3       @Rкu,`ZlU[HEB+:v(͚5޼yMԭ[70Ĕ)S{2F[3_P#       PQO+^;(d:tk"guVJ[m+2cƌ1B|A@@@@@@Ȑ@~ 2X_=zHN|~[-[і F` k׮wF@@@@@@@Ȓ5%塇+V?ʽ+ {7'       Hˉs=W&LgtȐ!Ҷm[;#.2|p1cQdҥrJVh wqGhz馛aA@@@@@@@ kWhe֬Y~>W\3@#[oU,YF駟o[ٳtM&M$|AǎOL/!Ą       +4{om@8åM6FWiŅ .@N:ugvb_aUWN;MV[m,#       )LUh|8 FΝ;vOѣe… lR h        dD 32Qdh k̠F]~h73f^K.k #̲    P/̙3tIO@@Ȓ5RHVb?@@@@K.> `3$@@@<M˳ւ        P܊     Sf$%$@@l P,"    @ ~\"ė?"  @vАmAJ@@@@@虓d˫>vC]PjK0 @@Yy5'g[`oI&NdSp4YbʅɲV '`Y\Zli N+WҢE ;#v>gv"P+޴V'X8er9?VJ\ 4oYfaL] 4 P!=7֏_~*:M.|yp9Jsa|F@@Zh I6@@@@E7?z!Ty_>x'  Ԑjhc@@@@jM@[ݺO a&  Tob@@@@JwU0Wx\-`f"  @u PE@@@@6i*W0X:j7 ~\"6DV\7 3@@@P]ۋ"    P]ڬ&;`3s0@@G ճH)    u-:Tѯ L@@涓9gYti,_<ᅲ\.fsΦA     U$pVdwdSbS\+EELD@@L XpG;taÆ, "    @vZ4k.W| ~c:s|G]OD@@D*@@@@@]\=}</>Db&  BC7C@@@@o g0YrF@@@PM["    />dvёe+WE%˖Fg@@@yi eɒ%iGK|    XhѢKV\鯫cǎ8#hbj#nm`*'Ο!׎|J.wxp2   PWhh $@@@@Za 7+V3Sdrd=ʍ>7}~5R6w ڨ_0@@@ D )B@@@@GoYV~)W b%(  TZ @@@@%ФIeUGe9y0@@%@lmR    %tj^.ሂK]HyYlipD@@lP!ہT     @#9i= 2~4ߏH.+   Py*4T~@@@@HI]o^07';>y`f"  @{GME](<@@@@@64i"W0X{F?wzLi^֒n7 3@@@Wh׿%ƍhPQ~V    @Eڴh%r 2űiܺtmZ<&"  @6r"ہT     @w??F5ix tNesd.릸FB@@ͧC@@@@* 횽 y宽ΐ.r   YHˉ6L:tż&@@@@36A}?UjrՙE@@zRpV)G@@@@`eH5֯!@@jY.'jy7@@@@MQ@@*BCn4       @ Pַ0C@@@@@@@ RаhѢ*d         %i'׿tIӧ4o*N2!       @RmrJyw?ذ>~'ݺuXI    aKȑ#%36m*=z3   P+4={l2d׻wobCe˖`#    +VȬYBiYdI;_@@@#`BC0 ~_er+7l #       @ӴN8۷4k,6 Or4ԶeBZYJ_ rPuӦ7|Z_%- 5w\4iRr޾}mUhc6;3dĈ /%Z2_xr뭷Je޽{`G@@@+dѢEYyZT,]4SiI6, C-˫$ D+,UUz[:x9Vxs~}0zN@۵kMY*4xYh޼߼yD[l.)Ǝ?Ak- 8P:wa@@@@@@@jSbm#jr!]w%<qҩSXSʝw醿 75b       @m|d={O?]N99rK2l0U͸hebvI-80    T͒feh֬Yj*Sil@&.݌hٲCDѲ!KeUlt…iF6{<o79*}ۑ`d{кu:9Y n[yFWm-ovI駟zAٳg˃>m6nņw|eo:iMi{PYޝg;N=Yο(QQEQ@:x;n&&kܙgy&!+    @A-\>:m U ͐},O^C)QbϷ~VYcYt*VMNX X9 L |ms@5@d>S?/n"ͻޢ쇪__|:tڠ;f\_nҾ}{ ֆ @@@@@9eK_SrɷIlh i1sN@@3      )rxq͙͟?'+@@'ظ<1lڴI 3!'?<.pE@@@@Pl#!twtj_} ]$@@@nаo>Yx,YDjM``7NMVkv     E|²ӵ2(jxj]F%ڎ   P]E4?~\.]j2޽zjt"ӧO .@    4@fK_E^xqɷIϘZ۱@@ZL@éS믿6֯_/:Dm%44T&Olfc۷omͨ@iiyeee##"ZV=@:  Mee/[IЪR;R-} :uYAYସTy; w[ۺVc猬z @@j@Cyy^Z>so7=\?.)-[ '7ƚUV9?YX M<+@E噛n:ּ|n|Mwޜ?׍\9E](/w+uw4ar&~oqy{m u%#%/fch[Δi]F-fb'     P@ZxsfjV%UE~~T)G@@M 4k@NN,]ưszL SNzӠe sڒ>iQ1} 0 f {֫ QyR7;n0Xm J. n[ -H 9" jL rg77HBXTmى  @[p{@CQQ,_ưn:588X&L`fc4hשպv&~6-;ld3)(%!!!6+$P׍ P#GjmlU,嬜 2;S̑[!} @ t 1j؟ l9$-zJ6FߩζD@@ =W1pyIddd[sg      aL \l>^w8sQWnC|X!  04ԕA&OlfcЀ      1">^NjN+ܖ;    qΞ(ݢ:C+^²uj|{t\13exR:۲@@_p{޲QFɟg7o̞=[f/Ɔ     N#P!Nj /^mK@@|U ĠA jƸ@@@@@F t MGF&z;ێ  [-ުPV^I@@@@@"Csgˌ>j\gEg  mA _?:    mC _v~U640X F  @-n hk;#\s}{ԹX-[&ڵ˺vxxL8f@@@@@Tysگ$_u꭮p]@@Z[__]^{53[Cvv%K5ؗaÆɃ>(:tf@@@@@XP<:vWVx\@@& T O-˗/wxzP   @ 4[@v] j9>*,, 6}m]3+IQQʥW 뮓        f h 1&&FnF9s|;Çm|$Reڴir(m@@@@@@@@x$6֐K/+Wʗ_~)ׯ'Nؚ4U&F-cƌCfu        @h@I?~h޽{eݺufp[sUx=zA gu9-Ր@@@@@@@h^ hp֭rWZ***ɓ'+ѢA @@@@@@@mPq@@Ġ @@@@@@@h[;h[7E@@@@@@@U*&:    W QrI9  n @@@@h G sg=#?/Ok ]  mP63d@@@@h~ʆc{6~&%em# 8Z[B@@@@@XF;˺@yeټD/*cU    G@@@@<$p8_nAW;\#?%W5@@O Im    xQKAiq=f'MN)v" 4 -@@@@@ p0?[qqJr ,ˌ    \@@@@@ Eʠ\\1ŝK_}'\>  Cw(r@@@@@tnA^:QWKTp=._~('N| @@h@`SX@@@@|I 00PVDD  '.3Gk\VyUc|gOseY]`K@@5A@@@I`8pTTTXС $.725\c}Z\.iб4F@@&4l)(($&     ^,s.K{$47Kl<)/lA@@g4:tH*++~СCmV@@@@@Z]K_Hܩ q= @@I @:6@@@@@Z@p@\wDYp2$ ~nǰhؖ1z  j<ЩS'N<)۷oYA@@@@hyF{O.}Pw*~ϹPBjM=  . x>^=\-Ya @@@@@)1)VG68yֳV@@|CΚaC̙#PYY) ,իWѣ%%%ERSS%--M$0aݴҢ)@@@@@+0hUVXsp@@@@@! 6׎   x%o͛7;Z        @`"63h@@@@@@@Z -w       IL93ϴIl        x%!0+uMV     FཝHlHOIJj8:  @d H4A@@@huV"III6+ rNnDNHX m9'   t    krAau֍6h9 ך ڣS'>\.> n>t  4Xq    к6n(ȑ#%88Qr МU.Q\^*\i.RϖgMa{TkG  @hQ iFk$.c޳h1HOL@@@@ RPPШN 8Fq4paNYaѥGt0^t,-xg'  Zon7\ySd„ 2c ILLt    mN@3346a1`hUon_r#߾#lD5Z0H!  wА#>,]Azeɒ%rĉt<@@@@ p0LƈmLHal8>qPߦʖ/dJA2;6@@x5aݺuF=Z}w̞=[f͚p      =o塆ܖ #bKv{ȩ]B\$v7Ƨ-~ :@@Wk 4j fի$''KRR(AffKii̜9sϖC:Է ͛%++\t:KbYbMl˓^#<<@@@@hV^s  'v~0}c7dZe]R kKz H{@@yOTqĈrmI=~`ꫯ'|"f۪*yG7hSu^ ;~lڴtK Xv0c 3Z:**++믿>ZB3df 5jTgc   }N: Ad1uĵ}Wʛۗ7j: ɿ~Lu"{Hb(@@(@oV`f&_"_ fc7|O?Q4XOS Ծ?h"]unϟ?_t)ӅB-@@@چ@II6ڴ4* tv/s.SޘKm7<+N_Urmȶg2B@ZW248hwȑ#L)?.eee\} >(((^zꗞ_ИtJi;^`+sAm;jرx{W56DJm^yd̙/7yyyZo?"[06 8s%`Bٳq֭#A @@@|G@3Xc_GFfgtN z__ҩSfEћ49nI}W ׀2W@raYQvdZ4@9`ݕhms{6wQ^h/64~_\\ltMhHOOw"66ֳ5\-88?Bme߾}.2..ڮk%99YQhF]DZ@@@Z)8=z~3reNG1o<랍ެ}7j@|M Z\ 9䂤~6Tƃ oseuƢ"k1+Ƕ}߿f_D ,pQmz36m5$xCSDGGNvҪd@@@|B@34ؗ~wQc0>|700fa6+ @[(sqDV8@@" :Zs6TeGҥKct"o-Vnj#IIIֶh˰fgC l)$u?MS6^@@@iӦɓ%''GN3Q=}K/7|ӂX|\xֶWtͺ2UzOMlSthT@/p)p>L+kkkiggh`9b[#u &&ܲtZqtsϖ{z^:fB)ۙՀiKn]wwJ@_/-~|77Ѯ5ngəZ@Fcuyi3ZH'qvT4gΤA.Рө'z3cd  @K((-/lIKT]! @ x%A ?cٳg5ʢ"yEtM9Gˣ>*Ւh`IO=*848(tn:y:   -<  mk",]y2qN|U_9U_Z7l"o^x A篛 NcgH8dcaQRO<(b;yF Ei~ʺP1OZ"ubLMluW;gk >pqa Rt]~_4XA@@@w@ۃ 퓢"4f>}M^@Q`ps )gyƴcSΒ`WOC;@@ {S4T r?~|Cm1m dX ZEB?7m 5HV@A@@@п{-֭3VYYif8qb裏'O Ќ'NF_Mfg5o7N>K5 xS+ =<`gϖ1c4W_]t>H-~8ߤ x`DajPCjjՃ`ѧ,rrr̺'NX\YooL_@A@@@8pР#@ rЩ+W\q>U,X _~}\|S(l $*3Ϟ`.GO%7 r5FpòC߸>0O+J ˔ܤp0  44uX:$OvN51tP:6@<##N2# n(;r3ԁJa XcZϽI`@@9Z}@/X(,,aۓҾ}{-۷oRѩ"+zرcV3Pq2rV;+ ۶m8@@@!"Gu-˖-h%22R&N(3g}JHH~}Lѥ^xL2!xX 9"V~\s9Tp,>Av8p\c-*r  4t >gpm ̔mi>e%!!~}UV-++Υ&5V:ud[ux8kډZ&MTg SNH3Xt@:1   !7țoif6Ԍ\4#]w%}i?cYhxO@13aɁWsZ}=oL;AA@ZtpriܚPw>))]kytJ[@?޽{KbbѮzS>Dv̧!jرc壏>2wk7xCz v|̝;!ϯ֎ @@@Z> S@.]N\twՂUTTW_Rзo_Ez2)4Sь@!й}yydAtݕ.Ҕ6  aѣuSzxl㉝a֥4Ks='[ll+O^|E[zWY*64}uɜ9sĮ7);wtb>qaU   @+xt854?4gyF\jۚKndԨQrp43 ] @Wc[^ ._޽>yxM9K#.>@@An`=#CV>wjV=z v7|]v8p\RtN]D)3t^O2l0>|}U@^Ԁ P^X7\|T    ZyUN`_4… ,:DϞ=e׮]A w6EqP@h-ݣ;L1C[eC~4 L7a@Z@4$''K/$ǿs.{5g͚U~OJ|||{@w-7T6l` A mcK\n 7oh:ts1+,t̨(ZV@@@h7BzxGSN*uPOh9#[o[|WrwNIi;T}hh :-ŬLSvYWF%n C  -A]5}aMESJZZ 8жS@p7="5O߿\~4h0ǽkNl޼Y ,?O̅x@@@hk֬F3jP>4\VXP5h +]vr 7~;f޽f믚I?w 6@ DCͥ gV6e@ڜ@49ZjJVA YYY4;v4S[ʼn~yԀ3fWש-tcǎN/ zjysF@@h'O}Yc9sf ᄈʸqmcǎ5N=~>̶ fYޱ)2cCO3@hW|A9}QHElA P@@@h AԖСCb~ĈUWFR3"Z  4M`{aٞajd'P#a]B#vF@J@7j+zBдux@@@@wSۃ]]'wt(  PGvVks ?[ty澮Qf rMbET; @h[GxAXdq|.m۶͜!""BF-SN!Cx\ @@@Z@UUCWlD8Tk֬q>|öFvvUSER@@iNf.l#7%*$s@|K z_7xR=x^ӊ-=>xbs5ktM5C   @JJ4Nh_JKKeÆ URtڨX:+  pb|@L]ޱ*_} k}vyGݴo:   @BBIYY9tڵ ׭['zVۚMcЈ @U`RUuug;Vz:tvu.@hs=W-ASgz-9[v9)    v%--y~ yW2tP wmhF߶M ,V@hݍ:Jvf-XLzrʪRTv&@ZW=* ,p0`<O8;oL6M̙c%8^hܹӡ @@@mӧ[ܶmLD˔)S7-":m˜+ oe2wr9SeDR/iԘyfؖsH^ۺL~KEug' L91w\'$l/K]Ntt׿aÆo[TO?-?Լ"   hЁk(((0GtRѥ/ƍsصde˖-RYYiө)f̘am 02* Hl.7UVȖd]>+]6eƝSQP@@ AƱ^:Nq=TBjPʄ Do\,\lyfFddd=G@@@|A 44T>33Cyy{0li&:ݘ9s$&&V@& :t3<)56gkCSʐM9c@ l> Nfɡ GbE4ۈʌa{k49Tp\CK ?>P@i.*..\׳fjt0$?Ϭ۷o@@@h&MF Z-hرcܹC?C=  <~˭/05˺,#%研7 WLD0eT[)?/^l5q.~^C/2׷u iEʌ˵g3+?N R x- ,%*8L~?*+~ޡc:E5<F=ט!.4Rw2㓿Yd4=GJBXu<+ PBCC%99Y9bnS'8891F      n̠;]^*5EJIq@D1( xW[_c=u>bY]JrDu+iLea+ `1ɢ#(/3( ຀Mrڴiɲ'ȢEtˀk@@@@\ѩHlKvwC]-;ա-ErɄw+Yo2o*ٞsJ_hfaȐNGS%Upu5u߁־pc N12ʚݶU^@Egh~M:U^y0rJy衇oW(((yr-l     ઀/9ҺoiQ   PӱNf.Yk o|'o,!%2CC d<ˡ=S_eF`]5q!;ƹSdU.s &x5k̝;52i$7n$&&<9vdgg˖-[>"x]+eȐ!ul    @$==ݫXtW@@e 46yT%C~s 7ki>$̶Wڬ?NmQauN7aCJ ^#1:]@^Jm+R>) Wk7pرC[.[Lt f)$lU5vEnQ   STJJJZg5 2I;l+9%+3""?L+$pCchkw1Sęl E(vTai"0 Z?4 f:tO:N@@@@@@]Urנ2@ha_y*``kS[ r`!rZoJ3hnLg J@A!=,_\z)9~xݽuڛ*wu3i      @ Y}'Y).-AsٖsHilw~qy:΅@ruꇐǏE5J@צ!%FKEyfc߽'L eW8@^z7OҠA 6m+Ww}'GC"лwo:u5M󌀳"   @s476ǹ9'  nH\UUU?ܰADwyUe//s@|E@l%ИޕhYe}Ψ~\󒛍&RC-ouӍ`j @\]0~ 4\~/,,'NHEE$%%1g   o zCt@h~5*\.>ZWj6°>Kz$ɒ"ٚsPf=FAN.4#.p]4eB       A쀄.b~й՘bK1]A:v[FZ>)ֶ'V**+hOI}@K rrڵ']Pӹ} T@7    $++Krss\j2vTivŒ/;v쐕+WJII  5Q 2Rw‡PӀ\sYZIt}RLF% )]6%-*o1%J}!4LkkV=uK3"NfYtj n4f @@@j?\~m9tP ك  ಀ-C5,,;m`dwHN-RNid1k&cz ln>`[ƬTIBq%¢Kӡ &Հn4& @@@Ȑ;Srrrn^@@]'ܾ! +s=u\Juh$y_[۬ PԾ2wU; h(228l8:Uc3%E<&l/y@:`yE3lgV ù  P=mh/ OM42'F@@@tʈ|Yz9m2B@@@̩$4˂'NQAA:c5 ;9adLc$t1ɵ5,7fMzM+/o^jUIYA 9B@@@ ٿ,AAA{9v*RXX(RTTT؛nI. @@S?ĸS'("tt -0V5/ |/3~Z+om_ad_1[&2.,Yr`Yʖ/NkTC;ĚfNrڰ x% 9B@@@>sF;w{W9'hpBnn~wȑ#uÇ믿W_}UN +V̙36  mQ`xROYqcr01D=bNAP/of9o]']vp$E^;]D]MׂwGTgB S.9B$좓0}:q)g[+@Mj h`xZYnϧO$:tOgJc yd Ω) ?Q+ h@@@(PQQ!6IIbR }B˪URSS'/]vɿ/@-?\2\Da#C4{FAkQJ+˭ Ye/TOk XI52EI\@$2Ր}bS~ ѯg7,ʃ:t?a=ȅJxlu2dHAG~Y hcCN   @hȔpW9 4po3D@@@74}9~ú}@N9QW v`Q @(<2xcډ]#" @3 6 57lb7 PT    o tA%///HIIo>)++o\gffZmm*XA@{^b1%NAQ+aOvu䖞5e%5)Қr YyxDJq8UC#ϯS #   szsΑۇ~(W_}Wk׮]RY~1ª:uJo۔$k@@ ٢j)?ɓ3A~ ~1% *tّ!C%Y x0X v>m@hFG_.   3 h8qvmOsFȾ}OUUU&?_~Ղ^u)**RSSuV@@ڦ@$l>..N&L`?8p@|A,999{ɼy,P!`@@Xc]$t֢8rv(5Tk\ؒs@tٔ)5Nca,FÏY{tGI֞ @1^ hFCc*A@@@;b˾PQQ!| 4 hcZ+A7nh.dXӧKTTmW@@,dLй}siM{?2[2L 4ASe%ݙR4uYײ[u8m݁->e8!80âD[-[nMQ&u.q*C!M"CAg x x -A`rzq\P@mnY@gMHQ_& foMmEB-t 3Bk0 FQs+زCRhEu)%,C#A0IA03A           >DlGWGU| Z%*[҇z`V nZ&-ȡK' Z!b Έx4 Yvۡ>YuUE6N?, B +jA4c &@@@e]!1:^pj};=tN7&<~{9.oh#P&D#XۛȠvGh@@p/ WW(**"*0a1@PPbQnzd)gRBTذt]MnRo;lm)  @qKsq"M@C傆z}pZ~e{RPvPo3o@g\*d#xVtPp߸)pWb;ﶧzrssHq͛7;>3   ^A@/N? J3dX3!]2q8C HۦŠpn\Р۩'|BUUUJk rc$o] kl'/G.umˮ3 8KVYS_C٧TdhC   H %.~ްw=qΓ7/)" ϝ԰E, lk*n(JkV:]c-#ǷCB.CdAE +/+UE K RzveAР@@@@@@@@[y{lt|{3SiWmϴkxfEG>bmvr߾qC) ءg_ZOcwP^ЇJ8AO @bH|/t o8,?{q@@@@@@@HKKVxIË?;\עB{ݫNjeK1>gCj&U?%\kʁfWV3Gio~}!=Css31D!4El2b&067dnֹoV& 5֕Jm@ (J X!{zXwe嘽F-cu6Orr;AU@~C!?u<&Oԫpq^; 3; g><ݛ[=iΝfumm-m޼|I t(   _^ې hD*3 @^=IL6FTS:p&v4Y~tQ7U7Jz۳D`!p9qVD~P_bHǍM̦8vO::"JII!X=Hkq;%]# $"i,(СG.i"  +@/Wp *E Q x!}ؿaW~|c5CP8PQ2 }WI+'/"ٱf-Pclvclma|lma?~h ,8!Sf/$uɲ z;ȂH{E h LHYi+ 8yf =ޮ~ [&?޾PNFf++&3!hQ7 ~J;$LQ  솃U} ;фtzbu}#; zg+p?on[4i@eThTbtQX(NPw [ kBf1@@N@rb9]Xwo3$t S---TVVF_}}ѡ4IYYY1"  ?QIfoiv3iA@ Zۗ_Mi10|"PVצO (Cr WD NFVOW }Gt3Ăʕ+;s  )faEMmNkz-:i$vDXgPX  "iYTRK5&WUo=p/ /;t:VWWgQ3Ae:]K-PB=8;ٳgӲe˜->Nh4ƍK͟?}|d>t?!*i̤H I *@msp7 ihzeO1tXLTRG%͵T*슢DKqgpJ}qEI4 һbX~[ǰ [nT9.yAEAM@O> l#plw5.#X,#?8H! j1b[n0RzB/'I&S𠞻c2$% ,mj56KE?T5Q% 5T;ZBXdA2; !!,j.vA+        %)55;e;-fɺ[sDD Qt_8:!XhP=Mzabx#!          ^O`x_Pm(C0i( G0i[h    0D%-uCxz^rAK*p) gw9N>uě:Ľ1$A@@@$pόh٘3D`lEUm ݭxy)# t513%%%7n'E  rit ff+ ?!@cS7`PEKЁunU$#+ 8OxG(//ϣؼyGG  J7]0: 9rb JPAEw)1:fO3%i@@@/ u m& JEpVJl~ ~1@%?YRMGHQOPrbtI[1naB GoSbU{Xz4*)@@@zDI#  #c         #܉[s['U7IH)~$]OwvѦ+>^ZO?&z4.@  h7      L ==f.r'ᔜL>::jkk***Ͷ Jy55L  " :Ҥ?1V[xs; !`   `E+8&O$vmVgZ@>B+F:YDA4.5c}udUR^i=l2"6BbB顔ն8]@@@FFu(A@@@@@@o [;ۧdӭ5c=+i2ԯN`Au>s{Σ@~w~+uq% (. p/ZWHp_ ΗqI4eCA@@@@@@@EE)SX **222D*^Uw`E Flb(NOOWx'Z!6oJL n<qP龿nT ҹci|Fuhq=^#\GpX5&/aK]/ʹyeShVN2ԴߓI>yng×n@ ĽPmn A@@`v1\'-->]1+M&?!X@/ ] :ISMiþ")NX\xחҪΥs$lBtYch?/;;%O\V׷l2d~UV8.[:աvvW_!>UpJ^$8H'&r(.( "fckL`i5'PLxaoW5Yx+~4np2uv.Y<e<A@@@ + AzLBR7mDk׮+V j4_5Jٴ4Q>%֮gF{SUJՍFbwZ&_y *z]}ۓ+X,0B 1oR}&,=8|5'[kpB{ 4;'& A D<WVsQPP]|^9Ol6˪õ^K:|xw6tB3bhVPxx8շtQFo+]Nq?!'TԵRYm|H3]('T3%IN:Tk-BQZ@@@@`0FP__OJDe0,YdeQ@@@@@@@̟?ƍGRŸ'Zz5sϥ>„.]vIyʬ>zh袋p }#ho~S2Ά E<[W1.QsD-H݄\0#KdA@@@@ xT-lر>ڶm0]ߕټysq@@@@@@@$Uޕ˕3H[XQOIIIn*\UU駟~ C#ppYS4w66e J1:4+ B%N$57_    # Б#GF k@@@@@@@`J￟z'CuuiSOQJMx:j =>&]1\~NEoHCzzJΥ3G .BLaD~B{_;JyD@@@@@ moK .H ;;֬YCW^yeZpx @|Wϡx e%ML׵еZ;ٝĪ[Vs[SEB5 @@@@@׍cڸq#߿O:ƌCd0MF"VN{/kÇusC-?2226| ^D )@sݴ7OⳲKQk!f(m6 (#!O_AB>O'4Y(,#vu     0,< ;VA7-8K 33n&iceeeTWWGd6)>>())I;[?x0zshqm;RNBQ`r:G KuOf~3 hTPdh !D@@@@G ǏWUG},Y!       "V&LPG#l‰[{Hkݻ kZi-TpT]%hm Gm#@@@@:T B}yHŌQbAI/2!WPNm&26+[\ݬ$OJT∀p!1 wCC3@@@@@@@I(//O)EWV9RnnU+6oP+iW\<'^5k|T% CUCTJZ85C^dO^<3'Y#    N\F˂^rAAZE         00RQQAV@@vYn`2 3k9J)q{VaarԜ )Jwn4t:ZtuÆ d2cD@@@@@@@@@S:::h޽~ecq&W@^'ѪΥ%͙y6c˟R[YJ=>&͂c[n40+$;-` @@@@@@@`BBB(44j^2C9m #oEfK43艛Sww͖i4|r451㻻^6S#emn }$>^I&4     ;wsUVI+d4iʕ 6@@@@@@@|/8`y  g{Jh^+{OTј\]btx&s_%J)<] :GZ%Wk6U]:w-9J9:zi:\XkdM-!#,}⋩}Y2ʹzji唚J))) eP@@@@@@@@@l |[nY o/UַQaev;1B?=)HoV}Q}K;}@X +!BEgybS ^G v\eq ?|>EFF`,jAc=t'tz=U#DcSY. -Ql:PLejɎ<~LpQRbwݴnG 'O4{--Da%́zf2v{ijaai `k=z< 立 Ḣ %Pd#Eu_ǒg{utƨxjcixbF#/v {{:U!ak ɫ6W'!Zϊ =wˤ/  #aݑYlh6Hb&!r :xC Fc2ziƍd4<{tSzzrHp?d;SyR &Sz|;Yl/hYf?{ Za7s&rJjo!k3DSF驔Gכк}_&ҝO4ߏlm sib };{+aeS):{4vL}R%}tWRJJ6PKo?'^}---TQQ! )>C+h޼y,_O<}WxԿDLoX,Ke˖O! F/ϵ+fPw]TݚQNzԀvz᣽)v!:jZ8&sl;qbe|@E}-D&stao8ϫ(R,R99yonw(fc㻻)MX'\  'fb!P(⭩Z$CK ݠEXki_~5-b5]u?O%Z驧+V… kJ2M^R^^.?P~_"׿J}'hxhsܹsT 2 ɊFx[lOHMD&6KE BCGLܱx,mBf,Eh܇Y\e!دsD bC  ӍxA6W̠߅ji}֐jS5:sҪ[8̃  0Y̒SU=Y 5^Wi.&k!hk.%x +1C\\-YRSb,0`슂-5jT۰a!((-ZDْ vsqQڵkRn.ϟ!      L>C'؊'|b{,b˓e_~ӟZb)С*n ͡A]]ŔIKg \pub~갦fAbEyb<:VRT碳hqBpf_X䊖'`xZb6k\Ew`2BbW;b+~V_jA@ 8PC)Llm TZˉ﫮`۷u﴿W_,"e+..@%=&&bccmڴi4uT)u8ثa_N!!K%`6m"衇(88nX0eFwyTDs̑^ʼ[ʏ@~y/vr؃/`논@@,vdא?3f[z뮻@J{/8U i4|ΖB]VZ8vfƏ/AI1*QXd[;h籊>UO>q|J+>+a rTs|m&לW36P L#VxB46C,p+mbSMUR/[Kd!4޽? 5뮻N8J/P*  p1UUUg7onu>n3:˛o)%޽{%Q:       vܩt,J`mؼyUҙgt-o~)F0a9 n ֡ͅ+Z]0l-Q0^`F1`^we`y]hfC:iіLÐwv3*<V/PO'pj:m 8}GwQ֫V 1MN3Yno$a1Qac54VX""&sc .-G%EXw] z\+#^x>~.xƗ_~I?iq'MT]y rXpz)9Iw4 a۶mJ>69Ћ7PII6~V@@@@@@@ 466ɓ'!\v aJ>{V Bv8n, !"pMً3ϕֶ Aݖ)jzO?%G {1z7)*yUeFJZĐn7ڔfDD$&E"lQk3fS A@@@@@@kuD8sN09bCg7rxHc t۲)'QlD(uΞJ ztGHyb$v4ngۄ{YD"Hg_ۼ(`Iq)Bt#4*OJl,ֺSLlUssx]hW$ =z YʈW|, Ihf0ȲSUc(+%?RG [n\N#8̝;WI/H> _ꫯ[شv%cƌQJq~QSRR;bbbH6)sS*C@@@@@@|bi5 w^4G&8h$~ /Ƕyf6xX"66NJ3gΤbueAرcE4ߧ 6n4k_&[6sZsljh 5JbycAb"Xp9@O#2*8,^o շXѡjE;psN4yڼL<78LliBA5H56 k =/E 7d¨D% ^Y{́-LOhd="hX~_s= lq'ロL{ݺu^%hP8[MO= |*@Ȃ$]p       -xO@MeVVUbGX|:Yfɇ}_|U#7V |7矓Oɮ>9B~!]q4o#+.坫,^;c"&<&B>.GV<"Â-34(TF%F%3sصmGssm'hji2!$b肙c3վ{.o ?o2I򄀡էIQI4& b;-` @n4ݻ+R9v6&ovzOƍs*w_ `pNfWئJ_12 QVZ6y $ `gp#+<+p /_G3wpDg*TPP ߧK* _n+a믿d~+ >Yv$h`͚55+V A-ؤCW͑j7YĤcOJ?ݾ.*2-^0#nX,V;8|YYN L׌]D"KyE W*NeY40oF/K>0HVkh<4A@-Z\#X Y_Z?\$qBrpRzX bq(#*A|6WWEvs^ 0|Uw]`"hJKK}Jа>.r2V/V jESPT^JThVQ}W3/Lh8 NE#!,V3ؔ@!SL_h@p\N`O^W7;WHl#؂  CENHʄJ|1h-="^XZHdʒ.87:d3 oߤ́:qAy%\aTCP(//OZ)^Q}yѤIf+h(-Jͯ6ʆ( 39W_oBBB{VKk뮻*t4y睒ANdQÜ9s(''z-I5&۾Ka l2Ү.iLbPr"JwAMGQor@H{ӣ>:$\#1b{k ~uěioc<ydxQ8E`_?7@A@DtBXZ`Ci񂯺F cY 1)x]E/ްn4Eu`PWp]C-wb7r8q"-_\>쳗}'3L:CyA@@@@@O?eol{}}($$Tnn.8p*zJA>Կo6+1z(͓&N|M)oݻW5!$tL HԶ7K3 >H"!pBHExD}GxZ߲>s>lRkeЊ)T{MD@`[:kդ%Bv!Y_\Hu+_ ,&ek Sh b/ Ģ"_lMA}W%b(%}I>9/Z&L@wq'Ru1a+ph8K<x#%KPLL2'mf GJ{/X*öm۔n~_;w䞢Dʶyfsn'/GR`-Ҧe,H$C4%PAl^ AΎ[-k@%mmA,t Zvˬ!Czha< K[pB~c%{-.8!\*3"/>]xcȑ#C48q,7W|pN 6h+XYAm~Ƥgz\>\csW%dZHML]}&-)yg]w2HNc{*LONiaN ɰ޺}}&LaiԴ~?֊3ϔ:~weGRtt4M2~QFF!ʂ2̚5n|=;v.(9I4X^Db@٠K` R,lkܚBY(D)᱔+1RSD73hݎ(2.R-0{\ !VHlM t%W _*pϤ A:USZ{xd!æM$, r UРvl@@@@@@@B/\ڴv=;;~… %rޞz2s xؒ:ٳ5=JW]NxM,zU9s& hay KA`@ZLiĶR@B=;['S E8gs{Fʭ奈 E(<(…'D缵,.^\#\PY^(n.J[R Ņ+%˘1cҿ% V^MWʑK5[2*hu!>>^S҈]n+˅@zaIa im'X~s$äLB2#mAmt:O1yq+uɼD)[-C D@, [lh8="D~Y@)$5F]D (ho_&YYAJ>`2[?{^=Y)[В~sn_+9mWф (y0^#+W멹ǤɆ z?^x UW]eu ^"6(\ytI쒂_@J53'$$؃nKvr='`GMM#/bgEҙ Nar()JA  KXoeTT-D 5*,0x*œ&a7%5!pݪOizʃ<"h`v= kN^{-]tEhTOرjvee)p{9%E ,ޘB؃vHuy, nb+e<{@/]Yx""Γi”j. -Wq{ptgrk M7Oڞ! G̤4=q Jk[h<}(DY(ph҉A;I'+N }5[@ɫ/6{CtA{d+66J׋s E ,Xhً8[\g .HgU}UώQ3NK玥R8Z\G}UJͭݚGGӏϰj>,82-:aюWʡU.cp. On:WFd{ɓz*++%CG}exx8=䓒IDBGؽ? 222ݻt:tTyjeYPP`fVV1@@@@@@@ svy xcr J4n8> `0YyeWiV1CCCm۶McCjwTle◢rw/ZpSj+ow1dYiߔ3O]]3E0az%~3꿈ͼM8a7:44S[:fb&:&aҙ73}u}-U5R.m&js:(ƮN鼆M%8KLFRNX"e%X/oC yyy߶zXȥ~3-;euX$!}fUkfSbts1ܟ C 'N$vslhhɡb:X[DkGߋ?_ o(ANQI8͙a~5bK5s% /şY{yJc۴iӬ@; zKJJh:n5iҤI|Sߑ#G4wN3ieee =>벳) xJltRO6UJks*Gє-S^l#,wP/u5a_|MMEwHJsBz]WGI&& = 9qNN<}y*9JoJնA.H#+EypG給Ak{L2d;?\>_1A yz@?Hx(_W.yx Ԗ|X/D7=ܣ0ӝ?J1#J@`      ~D ǭ[}n eAÉ'?)y晒{yB(m_賵Hg/.Q~y8\~6 H)LT8ObҞ'j͂:;>y{LoEC ,")u^WuP"a/=T fnVL m]Ay; x>O7tS7uPu,L!:jMfaeUMŒZxmSOuIۗ (@wP@]J `j(Q T=zT|p,9_VM֋l/ =rTXX犿QF yr⊊ ۮ;} X0tJ8\ѳ5UM;?-CUimdHw %vJ[}8]YO߁lN9uȟ K d [рMM[rn>OEMګm릗v/!2PnGha%aP %m:['=oY26'{/ }Nhsʕt5 !dZ} +Ҁ E7В%Kھ}R=+@@@@@@O|oիWK=f٥޽{ŋ#H:dSAo$9) /P { ljdQ=`U6mV6#n ڵ]) @@M ^}iMKΠQVuwjDI[&ۼ"di 0Q7IJ96#xY`C]ھZ  <[֤-,eo)1ZÖ#Ut1d85&5 /cpD]j` um k5ИnMrXxIXTj@ "(Vu=_m4/ FW9z.n֪=Fx PBzyr؟L57t01,bx6 z6?DU`KpǞ೵ u౩s%\b7 aϖ={曭UeO"6Sľ@@@@@@@_ǟgvO~_// wUV?n{'m]L WVe ʡ$徱?J1~sZ_lW2l_C'{'-bS tâqlf|Q@6tF]yIp{ae;|j'35%؋8 }@cO(V7u{S>Ǎh!TCiot},9Z┙hH%[q>7NOz0*H}'`}ޅ.`hw}2 141:GJǁ3YkpϓX9o9NUl\+g{] OsG!m,\萎Cr{40ʊH1 4&"B z}7Mf,CWq% ^KcS^^t}W_}gZ%yQg`'獏d.rΙBeDT뒤K/%xs%yD (4Y9~ iKhS8%+Ֆåμ, 3gJXٻ8k U{ ƀӛ44BIx䅒jH gB3ƽWMһgJ+iWZVw sg̝VΙsrJwͼ Y+$BntT ))), \pk&v f?ڍ!"VA#UxYvS@)/:$jۮsJޱ-$83U`4L0^B_Vi]ނ[xR2B H$'e~$[O,I3LxPkyxQnEĴެ[qm%Jd5kY.@^u) K ؞Mz" 29)>(n$ )+ YQtfRJN"$`A Z8A>]:{ e=6ިSa l~.׃6Ճ ]srr\zQQQoc޽m; F,XM \(@ P(@)X]o~-{J;$#<=gj+әtv*m$)2 ^w^J`p*Uz|7gѮNc ӬQF kʵp@=ſ_:]Q9V8^;虦$aj0Dv>J<_r [d-ؓQ2H,y$; Ս?w,&q Ip5yjh,LA *>]캄F3+jQ < Oқ'B]$ArT݀y*[uu Wm/7I?g xy-d.zYz{)L j9)gFsK~,y޾8 Sq ?cõ 8>ksU#wFNM4mU^]nlZ{MH2Y48nL,tRdχ /Ia +_(@ P\% ctJ,^Geƞy ֒aZʼ:Dc;/mS\UuZÃ|sΌb8,+9?wO 2 {"Smm5j"g#A 2P(@ P@vv6dsL/f̘ R4ֹ~]e[=A2|OUOJ9@ٙ/tYu܎ӶrSuӁl產IX287v'}u|dB8V\? AwgE)#figߒ~G~ tHמq3cstv4F 1.*cUx5Tꦹ-7e,n/}J]co'~t$c*~]FoF3>>߼9PT` 2!:ngGŅ"#S딠*mzghhl B^dRrtYޛ|KB?ul({OaW 4{(-=V,OZ nH AZ7V# ñTknej^eUd]>zU 0-pA~&Z/ A\`x?zո^3dUjhċ(2uٹ0պ7 wu=jUƫ\j,_j֯oI+CP(@ P(@ e&3||Q) $$$`ZLIII]^JFFtXa@ u!zqQ5 7jzrcnga :&2Q{:6? A^HGO6p; ^54fM_o)*$\;] G: fh2գ64ayh&~h/($ؾ_B)|ucK/Q*HPliʚ#m3VW3yzOi Yg8YVJ4/s]϶!idښzHoI :>#T6MF ᭲Y@bu@љ[2-T7IUoJ TmAa&cdm=&$:ԡtoky P(@ PzA@n[0n-[__厓&Mnt''+`ٙvƥNoYفOlo{\2n`䘐Z^žN܂޵ןMr~I/ ߩrVuUؔ}X,O僄 G@S. zr>hm҆-}T4aѠ<015Xi&uI_Z[7lF]P1M hj fhP! #;dRFǫZɄa)l6 'q6Nzۀ!Π:D::^]`ldf^^jXhdK0wzej@{-#7eU`0/H6*A&UV!d"yXDU H|UB*D-Yu-] `@}uPcg뿭>dLޛ,#`n}U|z{Żm+Ǹ0 83.Xfwл<:(@ P(@ P(vtL2Ggc8+H8*Ɉ41|x{OwI ݼ%KKKCLL܈9zK` hL:*2dI_ nh r` rGʮCe9oAԙPU_=IXd^^W ɨPV_ՍZ_֕y_uz?5,Jp$ඡ*¤v<T__`; u kQ>]+SS5v쬴9b\T ???,ʶmS(@ P(@G<|pf(7>liyy9^u,[ ^^oH&W_})-Zp+y:˦W6h7܏. ޿*)W}y% cS`Pc#mGsP,'G%k !7$A,3͖yë^)eΔ3sf*xaCvO&DŽgWNýWLEqE64˟{oː!j C{_e$=^< tzdl<[Ȱ1qjw#7¾S/s5IX$G .M>hu:P7ղZhEW!yl,* o/xP#>*@I&OP#g,}.R!OhR2MZVe24s6\8$j r!sjUQW˲F>I֖JШ\Xp$G#9$ )*Аhm.AZr;3Gۧ`'}cчDƊн?UDAsf׿^?S]a P(@ P(Еdh6l222o/^g/qZOuCCnsŦM]۵/eoV'z  GY?tP;Vo9aXq <65m^*hZ^yt k:Yh)jޓvg{ݝvrS{q#I5DNUt`5&dy!E/$j _G R‚[Ȕ岪:h7eY/u4ڻ"I?տ?\|9m@VQq ÒYi6fylFk8X l*`QuKPd!F 2$D,IV *ә0ī 20$p*u \ܺ[Ėq)".pz@ SP(@ P(@C@ =%#8 f00\T٫NsFdeei7o= (@ P(@ P@ꫯի_~%ʰb ;\Daa!y[JoZ _/K04ǎӦ$-~#44&.S GkfhCOROk[>쪋S:\G52rJQUۈ? O r|I1++Z0u6T`G~p4aC_.IhCG gjUXi0R>bdw}H CGW"n AC'aU`CU[ L>*hҳn)`C@bT37T C3Pl\>W!V ?v6iy:2cհX2vf[}cѣZ̙3[wZr%dKO79(@ P(@ P` H6o?q[n7ߌEA,@9[D&z~GEEo{57xd9s AӃt0 GKJQ/+}Yh4fZ *峇#dd8O\w`,LM25D“Rt3QRs]h;̊+Gqe?NƏ.ArB[NbH(O|djl#C84yעѷF phBTᡪj.P#Ob!Zf 3{; e sTC e=9XO$Bzz֫ S҃d[^^/*e P(@ P_eό »ᆱM36o$b. K.ծEa&!!2d0 ^j^ MDxJ*k6S7&TT׷.Xw[9CZ!LOCօ!*$Lzɩ,t@9TAko5 Kn&i>U%觺^ AQ u!2~-Qv &"Z3U&Ry%nS&/O-H*x^c ?n@;Fdy2+ TJ5W69ht~) !ZU'VM]g RЂT Fc@w|e)91eyz(+fh$ݵ,HKK\:(@ P(@ P\@śow@ 2DCDDj%A& PcOv֋!ၸ`vM$3CG 0>^7>ߨ,@~fgMq4YE GZ\ML窮mp]5:=iݶ9*Kh7ynsr}YIwv}v@ܺh<~~4uǟF:$TG{$['͓ dr2KzPӌw\4y5^1[M^? jvqM>0"!> B} S*+ѠR{i  ," 2K hчl1 gv/Ow^^-m/ HP~mnI&{i\T򳗯92TX S+93=J v U|ϔ0}Y.ReTV?,kO.H^Ap 裏"''+чV|aێ6455iTfff^IB P(@ P?m۶?|wpiZxymRRƌk|HŠ @/ n@n -kf %6&- ᛽g[hӗ;OߟKT0Ŗù8_ , 3F nJݧ7pcQ)O,AD_GMQcŷUֆO|+wɔaoESP5RgUA [ ųI n BhzBݣ 1Xp Lhl2AM2IK /uѤ5A^n^TA  A ~3?&,@ $0h}{{}Z f^da;>o* Uז)ٺhFjV[mFժ@P>ULM-V7k5 u5wѫs6 ό@Y!SO˼eA*!'!j(}.AQIP Hv,K/ h%\;wz@c?>|ADPYE?,Y(@ P(@ PӧOLz҂$AB P7F Pn~KJ SO?N 0X!j[LjꨜPǓ`Gʑ_8ЎmWF0< K&i Lc3SŸϱח @}a ߲p.5 ##0 8tϼۏi]~gQKOL%`18wb>v{2 pHҟu[nGMݫ^n; 3F)ʻ:ьQ]50յD@RrXnljjFie6DHlu5A\`69r&T7ԣNդU]CԩRTV#5 3^ԈHaV?rG?z(WK ܗ% fe=!x{z[]L-{`'|dR$GТU}'?ˀ'Gl;`z-|`1N8ѫ;}٘={6!!!x|T(@ P(@ QF K5dXh$;^*[`gz>H@e%f !|p&]֫kQmtyB'5pK>ؔn\sT`^F%E@9q#h g.hP1_X딶,OW}?cBp<[m }TPhu [.A 2E  ,-lXl9n؜_.A-(~2TT[ko"B:1}4Aʎ f|8\{Hc[_6ꖕ63xb`cTonQs>T* \/?:It T2d5NH,i{GƽWLֱ(Й@dhJƗ^z ?o3glצW(>N P(@ PѾx7س P}, W~qo?Fuڲ|$^|?4,r뒙춙d2omϵ\mW]ƫCqE]є1v퍆ڝ-Wid8=Xvp;HƉU7-A7B<>3ƾƾ ^ % ON -یl_Z&<Gju2̄qm|!\`͝4-HFppX ]R1_^ɢ[C*E*7exWŲMF@ڗ ?S2l RoV~$FuyyԚȞ}<(P:Հ(@ P(@ Pp1dggl6#55iii2eVKKK3/܇CF +UOk Vw!.'l3yd84\uHl:C;;#0*)vSH&{#7"-ReZHIe jlۤ3dlW 2 ?msss{l0h0H{ 6e; P}аb ֶC2c;P(@ P( /O>A}{ծSкk|r?~{eeeމ@(ϵʚ)] Q`-f[,Wn[7@\3w$_8n^<˲cj<).otUMMerZ=s G[ow]] ǥjF(@I@Crrrw}(@ P(@ P999xpN z _5~iu>W:=.7R+p\  8R6چFGw|$e⛽,3QUۈ`_LNjazs˰ /Wa&7 9c٭O J@2U,?o;iMg۫vH P@4ܗ(@ P(@% Y.}kCHӻmEmxmWsp3J{S\>oO36ѡVYҽK  *0K QË'gfo-|<-C\D^t/ʪ]h5}WMCrLHm\A Pp hԓ| .BgX(@ P(@ kf3#F@HHN:L^ڵ WֆPYY?Xnj믿v,{ ϬEnF _r]kwہ0l :$R"!LJG(=sC6<O> (бi)71ѬRT5hCL1-(@' E@CssDqq15J;$}dcc֮8t6l؀:4: P(@ P@?׆? `ӟ'N _|1uEEE~FŠ+0|pP-p='9|MXyw;|$D9LP} f:9Qg>9wϵf PZO$>Ӿ8}~!x(@ P(@ $Y'O / O}%aΜ9s;W]u,$5 P#R֛3,[0Ve(nwա s%`Ʒ:W}z%A[0K1$ fxV@\(@ PHU$G P(@ P@ a@IDAT}⦛n'SLARR4p;?),Ybu P LŪ/t` eg:\M;ts#X2rPWoFt?2`QqX: ^_{PkٕӺ { wMZ۰@_B|ot\(@ P I@Ú5kƳY|||ooo=:\jjDee%Q]]b̗/_. :V(@ P(@ PUUUV S&L`48qncǎ#<8ಂA\D$qEm+<,\1A֊#@& U,􀆬J7_ef!:<nMMͨGʜUIm I)-+& `Y`c(@ P xf_J6?Otz0IUm/H@Crrȑ#xq(@ P(@-`m~;w`%ِO@8kL6/`0n=e/G޷G+v&$t]c?[3,w +(@ P S(@ P(0x 6x.WJ PM~|$l:/wzӭ'p,#yxorVWΆtu1tKVm:[Ǟ1sOgFF PA `Y$u_G2rX-AK`ĉѾmr(@ P(@%7.WK P <<ܒl`09-Oo+(@ Pˇ rѪn9DgCNNƾB P(@ Pt#Sk‚|oŻ"."!zZ;zhb}Ùzs P(@, 111 Ciiƺm۶)$$$ǏGCCS rssqlc+(@ P(@ P(62̄LE8YH ¨p$ ͟͡l3Q(@ gh?D'Ol{2-+b}}=va,[Vd'N:+(@ P(@ P(*A0r8,.J+ P(@py@\Ĝ9sk)))~#dgflPqY ~xP]]m욘hY(@ P(@ P(@ P(@ P I@… ohIvKbŊ8p>22s|I͖-[PWWACW"""lm: P(@ P(@ Pp@ kwT6 <Ӣqdy{9p$6(@ P@4Ąm@VթaGQ[߈ u۾c(@ 4 6^%(@ P(@ P(@%IâH&yWxPʀ_.?>݋Vj"pͼQ4HY(@ P<]}B(@ P(@ PSEq-7/==/{GFćv=]/~Za(@iGM=A}Y4559<(@ P(@ P(@ Ix]K2 <|Ynq;a'LN>څ3Rn몆N㏫)%/n7R(=fԔ#YjRLWk ?r\?znNЏrz@Czz:~®;C '?-#qm::깰XE3y͍V]/(.J ~}c BGqT{%ְA=mX"RKf!&,/gJ]愡Q)Hxl<²vFmWJRڮ>e0ɵNalJs PVˀ-A-u m =9 Ԁjy睚cdd$nv,Yd0)@ P(@ P(@ [Y0}D,dpf j~{]xh/ea#;joNtA wd@#`lK PPOl7֜ڃydl 85!??0,**B]q{F P hUj*< !<;vkTVb̝#[{j/W=ms'ovyY}'7}T߸(@ , Cॾ7275}aSbnˆ(@hjnB^UX!e.C6dV%@_˺ >a~u)zEG[?նa<3Xd bccxgO})@ P(@ P(@ Ph/Sٶ7X텋f (@ PՂ -xA+dШ:*֕ Au o?$!da|+!)) 8~zj$Ej2Uc=h7|(@ P(@ P(@+؝^ܒ.'N蒉 (@ PIA(Oe# p&ӂZWV_3eG%w{GwPCD|PX/O "T C} S7x#}Ѷі-,t޲ (@ P(@ P(@ 8O 4<j3C]/@Z7,\]&F|Nh;f҆8x JKKQ[[;`x!(@ P(@ L.gZ(@ P` ȓHզvm PpoH57j .d`? ?am)dX ٬-u]طoVh"(@ P(@ PN>]vyb P(@ PM !8饹.b'@4횇LI]/*S_(@ P(@ P(@ Pz_2 4bv?z'!',!ORzHYuw4;G P(@ P(@zٳmT/>>>9(@ P@hh2#2B ZT -uĠU63s4$@ÑZ"x&A|sXf}pbĈEJJ;(@ P(@ VH\wcc#ﱬVr(@ Pn$PZWePe\в.R4Yvm vpu`JoUBbpK'6 DOˠ(@ P(@ P` z뭐(@ P; 4,fWP uU uNn^U)UF~2"<G \h X3-x< I@Z[(@ P(@ P(@ PFCT24zZpAoK?4B[nPRmQ***lv?]؈(@ P(@ Podkjj,Znv [SMMMV0;jnU}cۤgLm{w䶟ep e\5d+Ѽiv)չG곫:t> h?lقw}6mB? ~(@ P(@ P\( TUU֍:cW! 7#6E}z֓FVTA%NV䉔 )9:&OތNՎٓ z -o=y =J/~Dxw-o?QсN?@9MۯfPPm,A"W>>>efD>鳪2fo8g.qVCP.ŋǮB2?ٞCqDžc͇rydЋïaeuЅܷ0z8 z E@*P!%-szQ)nqcٳ^RPu֟I4!.0-sz\@L{Ɩ[W,?mo Uڢq X(@ P(@ PdffZ}*iii}qAsNI(K 7.ܩb5!c[40e ڶFw2:*~_z2.W`θ;,KC˟նX?Gp`OǎF`ʅO:/(@ P(@ P(@ Pe":2Ԅ)!]ѲMF yUV ѡP9؀*k+ ]B Nڎ'2qD]-D P(@ P@HHH@cc]}vOn600桡1P󑛛Mm1o05i9|||ڽu܇\充 b՚5kp7ۛ(@ P(@ PpX`ƍx嗍~`*xG|rKˊ /?nٌu PzYhV ~wYNM4 PjTp™` Xl\d0puUjEwיXueh0 `3 - o:y >)FK 7tӠAR(@ P(<7|8y睇K/Xv"Ceg?C=*Zb{ P) Ҫaƒ|s?PP]n]:BqmU,HĈpYUzr܎MV@LMȮgZ@_PGq=(O$!>>{/dlK)?u[5b7)@ P(@ P@@ؽ{zrzڴi۷ooce` wSs΅zILLԫS@/ Vz̐Urc9QxV[Cxr{Z&K.V:2!Z E?ѮmoI/קWe_ ѽ`nD:,(DC1MY0Ks<蓀!]x1ԍXj>S,Yqqq2d6990_5^(@ P(@ P@nn㭖힟ߝp~* >ln_Jf(@a&cdTh'`=&0wy.i^fVeK''۞N;W< 5rxY9 j6/K c v۹OO^}U:uJ.deeiurK.}׷_5(@ P(@ 8JԸ=fihh0P(|sp듟冠^{!.dA.,5+gw)pwx# k7 YJo|UJQmgSoG/Ȋ)Й@4lݺ{_F P(@ Pjo>$$$Xstɓhy:T=?S/E}cP?aXyk@ A2M,*8& @ݛ: <:s1!*9U%ؤ^ٷjus ~B?m`1ôL yj;^ $aWqX^fj0^)V(`@4=(@ P(@ P ȰedUa\p`ǖ>ȪURR2(@ Ppģol17V,ƈpc+VY 2 2BVEQKXl?שUS3 GCOK"d&5z:ӫpx?o{_ VL£sB01:⾯^Es Ø0s;|sz?֝n}p{sqה-Ejh,&=k_L+}kI=)0$ 2P(@ P(@x{{cF&ȯ nvڵx뭷}1bc Pz. |eV~8aXƔ +n+`njB~u R(ւ$hA ^PA2Bi]U}?Y^ 4xp&p!͆L κf? M my[[-O$k~ g%63>DaGFܓ+GBt@?+@}v3(@ P(@ Pv,]>gdŋJcc#>cȾnC S ƑLs?]>ea X TXy.N! y5(6W#Ws+K=?H^}-+XgZ"SAo?֚32HtT.U۟!렖A#^ h)P\5^q`}x-s'vQ;*_oŖ(@ P(@ 9stwfj*Hܹs.0I=YWXX[jm.%%]t:.P(3'W߻ ?v6<==zv`Mn )8  Bhwo{2%87=r=QeZR4.E0tVUƴ45T>4>؆L\.6,4zbldӍH4H.ZaR ](@ P(@ P,'x?QT[^^z)mDdd$bbb Tȶ|H"m|Iu(@ tCpf1~oc2+ w-9G\vl5$ "ú$DT.;OAʚd|j# Rguخ -RBb:kjlK2s[P] xvق (@ P(@ P iaaa6{* ~ڵ 9993j2dcq%(@ Px h47i;O:G+7w홺wVE1@G| ; LHIkvPNWQg^jzsfo P~fhߊ-)@ P(@ PpcÇ7wyÀ.A8\s5X|9N*ގ)@ PxgQl:zr| ]]Ǟbw{6A6uZ;v"& i*6.{EF%&59ٻ8?uZ]V-7 c 0`C B桅B}M1.r ޭnɒެsI:ɧ;egfgwg>wHXfxhOqjg"T.UP+C u@ya   t2Ho~#3gΔ~A֬Y#;wln(I&E]$iii5@@`Cgp4veFI $Z[cH였@-*`"Ͳ@e&OI])uت,A2qC^Ϸ%&JYf)3쯨! Bhhه    妛n'%%%RZZ*';2 J`ONI/u^, 9%ZT66H¢\ہΖju  d Ђ$K0+;sA]!$hmct tn뵒BKLeZՓ?~"oMzmӱõ h !r?ٖooݙfO?p9   tU5kCfffrssȑ#2q6Kc@8]`3מ^5qC_[, fYL ZdЂc۪А A~-REY%#OgZ0``Ml ע F&m h֮̔<]ydբ\l5Vi`P]+\R3NҾ3(oǑ   t6'|R,n &yQɤgѢEqF`@@+U\4rH["BʹPhY2I4 Kpũ:Gdp_bEif^jj-"Vχ1H)FHVEGYKϷ'SgjJk>Qİ>z 8'@@sNB@@@ wyrիڃ(y衇zM. x@%aѡY V, \1XQNF"01m|G-4T[fpt~Δf':WZQ/Xg_[} +?3=8+6M^yp;R\S.9k]G0g'ϻAf[ J!^|j?8z2s}5epR'h   )0o<:ףG$B@(j[p3f9%i8.#pNB/`o5̚O,&T\"W/Aڝ,kwv,v.=j) u1)" @@@@S ٳS# @ml%9# ;*4@( ^Wb2Bm9`oy$HH@fJoOװ8mo!4(D6Un|-/#Ǵx -a!@hh#@@@@@@%fbbj2 DO4M;q.-3"$k7\N ȌM&Ah]PP =L&袋K/mwojjj$++KrrrH$""BbbbdȐ!2b o9@@@$(ǎHѕX@@}]5zQ5etSkqr@I=f˔7ϗjꃔ$u˗ŋsYSYY)*hb׮]_UW]%Ǐf   @PS6448PQQ!,ZHEV)::ZӶ  [X fow5;[Ϋ*AMaOB@hгÇZ>@+l9@@@ZCɇ~([l<կ~%7tS]zO5á}RYcԨQ裏j3ڷ 8Pg;*Q\PbR$$QS 4xIOeժUg|%KeҤIү_?ILL&v-ׯׯtRIJJ &ud@@@ jb CwO8a(/ڒ6lKyIMMM@8M`p͸08>KZ =T  IJP|G}O=URR" .{*~`TA cƌkw455i+>((ڔ-   ^-P\\,sΕϖ=*OLO vl@@3E'dCP_{T:=23B[;5@^! 4t೼sNy7EIb#3f̐g}ֶ={Ao>tq&;V > JOwu6   Xԍm O>Po_/ U;$qC0m{G{n5Jjŋ˯kf仸@@@kϿu* yr dp@V9 rpw@  *@8c hPSE;/ԗ¼[$&Rjo߾g Б'Pkn3ʴi /v_ȑ#c[X`6n(4؊G@@6e˖I]]-EZ ",,LsuvM2~u]q˗/'ALHH6d ORa%A1.?Ռ 74B@uk&VԮj=ajJIU?aQwYxkR}SS`g?3CsDDDH\\^n)"*ºvh~~~Kه   l\TZ fPRjb(5,8XWS@\ >9u%\MU.F:}Z???<@@@7 ?vݩV4ئH2dmU QHZ[@\'P^W-?YԌ  ˾R܄WP'KrdP|Ou3! G<pAy%//MWwG&5deesQ@@ T׈=aC-aoi4YuDRA4t,D@ hPJ<)**JRSSe׮]>mذA~iywy`5`Z[3Զʫi3mO@@@O @|۔d[l6_RR"ن#G4[*D@y@.Ձ ,S+f,BeXbEwe87 Ic *6A-0sLꪫ$%%E:$gvp]w 74LtR9pq]>;Sc_#功&"L " ؿnqEAuw׍A/L'NBn*־j=۔S)[3ȟ'Mxm4lݺ4ÇV\Zڂ (]% :"u QIdT20.]#9' H@úu kY+"w@2f1b6# dwyGX]nk`ڀ۫H;*/hp `smO97 gMy{\wfԕxxg=qULb{͛ {t~ m5Ãm-G@6 r44 *ܠX4N%}PKg`/ +ԼIb܌/0 vt^7-{jQWD@z:ƻޛAmp Ϫ=֥'>,*l+Wgʹ%ADڵzӧL@.p/- 24!Cva@@k = 5KCJJ=z]Uә44+;]QA& S+ uӒZg ?oNy ^,6lɤQ믿^"## u 곉o.VG@ T5ʚ=,{%5.9XΊMt  [nhP34G~GWdT ٳmj۷ Xn a+wy}5e@: VYCF1O B#S}Цl {/-u*pArj`&IB~a䮻ݻ   ]T@`.J°@n wGRontY_ώMӂ& T! )рRRR䩧 6ȷ~+999-eee&6 @Tt9嗿5 }9ܹsO?m۶9\CEqEi(|ٍ#   +s T_:kO%f%%1ݼU@@@^+5j5UUUi *A2$''ա+y]20k,\2ǎN=@Ps@@@:}@?,jGgL@3H(ɭ,9S M-&Sz 0ޟE9@ z< bP    rssu  W ۱}S.=0ڬ  ^, r!>|x!   gϞ,AhZـAq 31$s[;9@:W4dggw}=n9۹s<#(8seڴi2rf۳@@@U:)**҇ xYiȩ8sg[YT CJD6T" ]I MMMkuӣGyGm@O ?np}@@+<А/ .4s9r˘1c ӧzo!_~믿3gjz%@@@@Gldݺuh")..6ܹS/5Jj    4_|wѣGTjM^xA^~e"   >)`6ETbM{ݻw[n7lؠ͌9k,4hP\C-KӝyԌĉ^GQvD7dMR^^n-_ >Pf63Q *++ u}.&sAJm>_=z;Y|A;/谵kjOI.J;mۤB"##kA@@@|MPlQ7>\:묳D}-;A}qki7ٳCԇBoIf>~uz ~+s%O (ȭ}&X|6ڎ~GxG腻}.ing>p=FJJJQΞ= ֓|z@;t萨%,H    ԯ_?Qt~ŧ~*ԇϗwpZ{*@(`j2ˏ߹d_E6seL\8\Ƅ xk{pbo Q-7IJJ2pȑ`/     irw; fPƌ#%,,L?L-e2 @Wl/r6]OݽXfP*wsW6B@^34ld&qǏoG@@@eʔ)$Dk3-DGGˌ3>-VX!^z^vu&$$D[m3T6UKt|GJjkk0CCC2#pH>ٷFIjM Ddזg;OePM[lRq]Wk **5F(ZPK)00ak]O0D~DNN\s{@C||퓑#GZhlll^Q@@@@-[&Gu *`AͲ`T@JJo)?n8YdXgx>U_wDnݺuĩuΠ *٬U};F Rׅ7N;l>t{]+de.FMrYÝjK#~G4߫v3%`|/}{ x X%|{~ؾ.|[Gh={q@Tl߾};^+    ,~ٲeSWQw48u]#uGMZZРv'233Zv͢Bqe2jQd@#u>Q d8x¸,OkZ^[TH\hwv}# *p*M͵3>sT-l?3ypp[     &$C|C Й͋dg'~D̠dnLæ  @p JMkj§zJ~v?Z?_~M$8!0hEw }w]    )IMKB:2߲w7[N-#Ӗq#33F˔m9  .ȻiӦ[oOݷrJyW8\DEE|/ovp @@@@7t} uuug0mY6رc`I"gڲjwC¤eZPI%!!!>" _# 2{ly>F˵#OO  @ꀆAH/@@@@ӂv! ,gkZsrei38琉xlR"b~c%"7v>! A6`@@@ ҂2j H}gg}r7>,?&EF[h,;6X,3͐@@ ]yd    SҧO4B\s$40{I@@#5 + &=ю#dʔS.YD|"    ,4_e63L3R>1Os a7@@N UW]%_}Hvv_npE@@@@@k Tȫ['{VܦAOΔߌLĦ8#  ВGRRR~Zۛo7xҭ[>@@@@@ 455ɗɋ#euUm:sfLe6dl6Gc@@H@شiӤ^yillw}W/^,_~$''K=GDD30 3)     .xug;[I]*f??Z @@ x$ߖGOrss;vLxGfee98     U*k͋䓽l*sL_f'xٮ@@ x/˶mۺC@@@@@:wGBkʝx%a1gi j !  4c`\@@@@@@imeDz-1gǡ    б hPKF̛7C бbi<4S MfHYBr?oo=/?n<^3\@@@pG,Y">m"AAAo>}FFHeeKuuϚ3g\qcbizD4x"wYLc %M +gڵuZf{*ҐiQ   t4|7^zܹseذa*8Dkww˸qcrrrd;HmmV%_ކ        t^4L&ٺu.fcxg$))ISÇAիWҴ .@~ѣGe޽ꫯʽޫy^ .!AP|o:g Ѥwe5 _P?KH/P/fɣcc:ʾ}*׍u]/.&?'pPL\6BX&]l   np{@C~~Û1ci j#5km3SOmݦ>_ڲ{F 00ӫW+ _5g;*#k{^7y&ؔۘt4!g@@@@S;>syyaǘ1c eko߾֬q֝jYfiE5{g@@@@@@@:*++ TɆnjʶӧɡ[vy@@@@@@@nhX,k:JQQQҽ{w}}&z޽cǎ}Є}{     l9vHVn@@<& 5斒Plgih)AMJJR-SPPWy2    8+(?***=vI`_i`-E-(    6L-[]/kFOJFF^W__/?;Vf֢$''y2-0s] `S΂t{@@@./>ںuaqqqk ptqRXTooAF'c8O%    tR;wA _|QT}zZNKKd@@@@@ox}w fP}mB鹣/  H@Ô)S$%%E]a֬Y2o<ٹs^'M9YviA/̟?_o/4d@@@@@Kj,1[r$O%Zt@@5(s&y0Lj*>| 8Pn:}y Uyffn7d.2޽my@@@@@U2w۲$~oG].WgՃh  @ qĉrFjS 'O6ԩ`P3gim@@@@@<%N3w. z.  W x,A)\yꫯJffbРvOnɷJϨV@@_ Wyƍ  >#0s]k:p|s#807?/s߶rBY7JDp7j   `'򀆪*1Le%""B/}N\pN    .`2ʢC?ڳΓ?V@@_py@ý+]322w*ʶm u,deet @@@@p(h6VΗlq߶Aʽ#VG@@\µ؅    tSzOeoouLs1g   9@@@@@):S<Y>Mn|Qh  F4Hn歕ml@@@@@ *wS y\?pRg}D@@\+:{64@@@@@UžC?7.>4Jef@@Zpy@C˗c/    +,٬w2..NϓAVƁHQ^޼ȶZ,0j  My@3<鰾Vn=:`#{@@cҫW/1Lzw `/0gi5;mkezQM)#  @%'=,]T]rNN    xBaSe/Ow x&  @ ϗիWkHd̙]A!   ,`C-=W{զ&Tæ^äLJm 'y x@K?,,$pt͑;郞kQ5'k9ϧ:mf0+**$99Zd    C곢BrcW δ(PYY)Z{=g;1Oժ$P&VuumyP3{߮>xp;F[3DRR;>D[ 2jY}"       ew#.!n(         ]nhٳa 'NȮ]K        G>5B||\xᅲd}}}z     oHrrW V-j2>%&&JPP^&MXkGFFi;5555҃g<iAA455P2$(***}QQQ$R}A\\^&6 Gy }G|A4h'7Û}'@@@@@@@9Р矗7xCT0l ڵksϕTIKKt-50m'#       Е)࢑ϟ?_rss 0@vޭ eg|3>'@@@@@@@@ x$aժUm6ύ+#       W {u        >3h@@@@@@@[#KNnz       H@C`G.Qh.        VD@@@@@@@7 0U     ʪU ;vddd(t>&|  @Z/^O'CG@@@8,G}}c@`]>% zC@@@YAEGJII444z2@IDAThGPClllho0w-+W::uéC@@@@Ȯ(V yN6f.  S *o>H; F@@@@j.}K fP,{E 83B@@S h͕{G?~7@@@@@^9xp&<'4O掺B )   {+jɈyuH0À<1$    ^$E"gG=x*?4   yаd9|i }322$ @*++\}̜9s+k[@@@@Aom/iqbRdٓZlN@@Gè{%sΕaÆO'h[ƍ;]NN,_\ydee_o8/@@@@-]sk>jq![%40vD@@ } $[nGfcxgdz0کִzjkVۦi *gϞZ޽{W_5    #pZXԙt7Kr836@@D RSSƌ#FXf=oIMMzJBCC>LlG@@@@ꏤ>42@kk2    M D=Gi۰@@W ~~~2l0]DPUUm3zQ}!O?eی:zUrrʙ%Kh3X(]tq?QnF=zu]tZPG@@@@$h6ޗʆf-Br,QG@@@s =A1M0A*--;S:kfРA7/{0CAZZ]v[RR" .ǧܸ{dƌ2x`Q3a3FfϞ-f߸}W-v     ^(ŲH={$>Ըm@@N# SLCͮt7oܹSI&#Ghm֮]+uuuZ / /4f>9sH~mf񚯵R6md-ٻ) D:" V`#(%+1I4%1hX6) (*XQQRMfg==}m/     jԨa>hsQG{>1x{ɧ桏^KEC8tki  I@FPmnuo۶mB5kV@N 淿۷9S̨Q dԩVh= Hx7g}~Gut%1eʔ    @lVmZg810< h#  @ $A>={4]vY f͚i;0L=;v|hQ ӼyMFt!]ܹ?jXhO    qnۍknf*U͍=0;WpF   @,AD'x{ 4ݵ^kTBTfMs5טz% Ʃ 7N4c n@@@@b+捯&ݾ?tl׮tF"  @&*|oԨQy q… R '됭nMdɒd3@@@@X|+snˀV{Wi1@@b#+ѺukdSN1۰a={]k;l6+2RJnݺo'g@@@@ zvԑfp@B@@iQرTE13kӦM~ OvM@Zʯc@@@@x Οf rêTcs D@@z ׯ7k|&wdW|˖-&<,0Az|' +s@718o8J#yS5(@Λ=kv)/:y@ yl~Ƽٻ=7 @@ C  ^zWk1ctbT* C{hZjFK hQ [F@CFG'9AB SΛLŘ^7)ppF4j̃s}͍ӟ6n6ݚo~v   @ d=`fڴiޟC8͠ALf bw+PH57oޜjRoVnRo?37/ޝgK-t=7{ pޔέwOv(0{jl͵New@@@+b 裏SO=ըq@*rʁT=DBB@@@@ תonsml+  d(̙Fj2jmhݺu@ D8!l[VZ?=M4!B˗/7۶LCM2 PjҲeˌ֠A|_MlҥK͎;7ldLG,Y$52`-PReB@@@@p޼ہXck׮5Fڴi6qFv>2 hO_z$k+(m+/fS0C(PSfZsZySGlJ?m;vrat!   Yݻ\Ҍ;ּ+>9sqO>c1m۶gfR9M~`xyg<       !3z'x Ǐ7W7n4/תU+/ARԮ]۟ Ԭlˈf͚5ԠSЁ       3*b{w_s饗g}x㍦G ]poz3cƌ@բq^V}M\jߝN;}әi@@@@@@@pr!jO6afؠ&)͛Wbr5kڴ8p0`!ޘƍ+Vxfܾ}iԱ) cڵu-n:@@@@@@@@\r:uÇ#FN;-Pŋߛ+4SN5۶ms')f͚yf_:>h5AB@@@Q@GTåM6mq@@@*LBkhHWX oy3f3ee˖,zT0jl4hWC`i߾;vs5͛7u̙3'0=    Q[o^oA@@(X4ݬ\ҥn:3qDI>NGy;C={UjǞ{tf'&Mdzmvy焻~x֭MÆ N@@@@@@@r)&'Rt͚5ͱkn㏛ 3g̘azs 'o=բ baǚ5kc=tj8ꨣ@@@@@@@@ n hpԜСCͨQ̰aI'd4hNu+c*1+ࡠÇ͛7vW53l޼y-[6mt        7X59 RJ]v%\bfϞm^u3zhqT*U!Cx5X}WW\qiժi֬/̗_~ionf;<@@@@@@@(54va̙c&OlLRt C MӦM ىI&?<Pvms:uӁ       @1|f„ ^ Ê+YT~}s{q̚5ˬ[6TZq_jJg       q}@… رc͸q̲e =z&PG(`OvoժU^3˗/7j^AqƆ@B=       P ho@O?4|˖-͠AL~LݺuN[ #Ġ?       ,כI&yA 3g4jb"Q^9#ڶmh2#       @ 4a֭fW_5SN5[lIxzA }1 j !       @a $?4ƍ3'N4k֬I*2h"鴌D@@@@@@@/kNB K,IN;Ν;Anݺ*U*l3n#@@@@@@@@b5R`Ŋf^m KGM6jb0`_~@@@@@@@ S  6l0'Ojc1cپ}{RU?ܫ6*UJ:=#@@@@@@@@p%tjcw}kjժU!    @ M6E[l1 ~S.:/u.ؤsZj"ͺu=\ٺuOGq]رY]d6xt&uw"1߸q=PnRq Y&_}"?4l0YhHV#c9ΡpnRf鎣G@M,[s~ \ v pCzZ!0mڴxlHm"Hd*yK47Qc΁pޔF-zvڙuFd($PzuӬY3ʕ+i-,@@@-~f^M6-+!JRLh@@@(B5k+ Ex   @Yhڵ:tԩQ;2P5=zLR;^"   @veC!R1#   ;l77CS6(ot:А G@@"h߾SN5   "@@C)@@@@@@@"ة]E@@@@@@@< !O       @1 PLG}E@@@@@@@ Ohȓf"       PL4f_@@@@@@@@        tW@@@@@@@D<9Pl&       $@@C1m@@@@@@@< !O       @1 PLG}E@@@@@@@ Ohȓf"       PL4f_@@@@@@@@        tW@@@@@@@DJl'    @ƍ͔)SW_}ezjSfMn<r!f]w7'@矛szף˗+WڵkF -[m -ۉ@^ ZN*۽I.BSnD3J!k;̂ o f{/hѢܹ\r)xf]@ S=?l'x~:@(~(ۗ;DE4~w{ҤIf̘1fÆ ?uUZ՜tIk׮1vdgoX %ߊ+ѣ̙3S"O67N9- @j8] m[o5 |k5׷|"@t-Xxy'g}tؠ|6m$GVT; @rpRIuyڵa;9c@ P> .4Сy{gz<^0J9%K۶m3f26m2p@IK5..Qg&\ .?]c:-Q?L6ԨQ+LL r-H+w}70Y^kA` = P*\ fϞmNTiuN:f=L5yQɉ<4   P T)7|w=D&L`wJ*7{キWJ>~wޱ^{ͫ{ve;ʺ̏@> &%yuV^zwަI&^UV%Kx!U7`+e 20|::X .ׂT@k*EB˵`f˻/h֬܌ L<9P{èQ͛P/<>xl:   @b_~`(&|T?lVM :Lj {ר.]xׯ_g+!!@fq͛7#F#g<d&kj{ 3 쐚8K/dƎS`W]uU`ZzP@@@@P+etp}v՜~ {eve|O? TM ?O N~^|1cO/kA-Vm,~m˵@akbҮp0ŝvs1瘥K4=C@@@ܦdT1*{Lw#.Qg>Y N?U+O>("YTW;͢E^@ 8] m|߻T\ٴi&C r-PQn݄ .*Msq{A D    H`޼yFUԡCۙs?ܔ50.@&վIM41n7e&NAt-HdwyM_4M6|"@r-P5k==sC9( !AYزeٴiSaÆ@6^aR~}WjU{}뚧kYn s.5l񛘍2@/;v;jrpSYwvD7"SwevٰaÔ3cZjԨa{2=I @\Z׈G}Ԭ_ޛu#H49@q̜9Ծ}{?Y.BsgRPJ>(ʕ+ٳͲeUVyӅvF7,m۶5zQRvvl:S!en[֡)zmݼ \=n;>04uT+VxI5kڵkgz\G@QӦM3uV/A1jժUc7nlꫯɓɺufZlQ~z4i5k\QXz{0rH?c_tMItN}믿V^0Qu͚5l^/^l^u}c]O>^E.5_*Mx_7ng}5FKh}^vwO%t{M8c!+M7?z8;餓T&xݛ6buϪSU gR Zwny ,*<=R z@D*Y˫f ӪGTҋo=ЖNtv.pzkbhǹzi|w{`}}fpW^=W?붥h7Iwu_QUmVwu:IӾ{ P1tOѣGfFۭA#Ֆ)n f:׿̝;7+ꚧ:n0Q@Wb 0(rxi-P;%|I/O繛umnˀt;(P,Ǎq>SɖLrQ|,MN7hSMv6e1@Vgydqَd8 U)M >Ѝ? Z?߳dx@ qZlR6pj=?+qƭagP :58 } @@U.Z){JשSǫRUl+ A'6RfcOԡ -G:t0* `/*=vTMwVU{+նؤ}A|VJV{6)2裏6͛7~2_)n%}>\|~fܪuӹQ`; 6]*A͎FGQO=TZ@T ]kT͕S*5o?hƮyO<]wv+#]Mܟ6AO:pz;-٬ak)9 ]ǎ:(Y (s?4cƌ߲gvU|Fq71 &Tp4(Qc 0PU^z7j"5&U Jnv< =)rWcOH} G Zlm1:VzڣH @ XRJ*&I P>q ʯsu;|ޗ׏w.M@A'(wg7v0uEz{ ]JСP6dU^0_"жQza&Uܧ2U;̠Lm@tڷoJWMtYtmIDF)EU)&YR6)ӡM6rY6Ժg Y Qz`r9U[)0J3guVEW5ϾQU|Nmy)qhJ5~l354Z5c }8lҤ߯7PAPvB&v; 1OoӘ|;n9C^71,R @k۶H57**P@e;2 ^MROJzi`vTnRoiFx _XF]A;[ ڎd8 U .ׁ~%jg8(-(@\zFqSӪzBB˵@n{aÆMvu}-z'f~U. |䄃A'_*0^2o?Wt2;`w-3Z:E~dvT*&h,UR65k+E29;h)?(smf C21C|?)Zg#Fq 7ŗ,V@ Zގ^xfPgazs-x]v_0p|: P:e>^{cҴi ݒԁNJ)S2YR5nRi8N) th7 0ywUٖ8\jq_Щuke.DsV>jV@Cd&ɍ2d$I(4*sO oY$^M(C l2w5q* %׿6_ܩ)zM,3[ aSTW{Ϝ(mnBAZc:D-ڽsQ&Inr᩺@~6݀L+% ->!-8^ |IyM~+[G X .ׂpm>\8kJ^+Z"oсBefEԟ^_$ZA!&AR6cR%&)n܄.q\ΎmXz]U zaƌfp PP09NyfG jCUےϪCD\բڤ ELc?@]>̻֭N.PǍ^:t&nƋ&I'.*մ!Zk)?ݦ4erǘ !b~ieo:&jBɽ^E/ߢRA`2*{=OfڴiU*@. -ԮuESn´"5f,X>5]v4DB( K{#- //]|@TvZ(D|)g5z0>56HK .}G7éBCjZ#kjY'M'vնlk`^lWKWH 32 Ep򊚊lK%y9}WTWe:omH TfV:k4A tcQPVT@CE\T bfjl¬YQ3)~A:uJXC THMML6͟P0?~D^IARB;n&&?ޅ0V-ZгgO>c[H+)A 6`ONn@j 8'3|w{O{Ҿ$vdL@OAKtGi=R_{ dE .SQMW_O;ROnӞz^ O +z>Lv-> PN&^ wL٣ Pwmۤk VKX]x㍤ӇG&8!,롿5vDUGTq/ p˲^M.~YJ>1 $HɦMg|yR#l@Jy I ]?w\7Nj}>}<t]/vlͣ&cX@!7~#pRЁ}0WԶm݀4e܀;\j&|"PzvRQ3v&ɝ,qَLi(<} >}'lN6 #k,=1cF;8iҤ<1 PdqkVLRo  ?ZЅ@FQ뮻(vfER*CYf^1lܸ_ܸq|@\ -_ T2(laZnӭ(VԨ仪K'/^SjfD?MᶽV2F/mpq\[M|5H nP֟ڽ'߷zW-@!.>4(i…F~ .] ׋~7AL2_eE*٤+WL{Tӆ8 o׼H+QKNpYj&7K nPժZfΜi̙Ϯ!yC@O[obC#Wl hM sYյC纽_}l&i6rDPܤ )=SSzVZ +.Q`fT ?=q`/<.̐F gq&wpt T2}?K9;Xq Z :mޭ*)ھcPi'˴;_~PG*Wl̟?_Jw2 : &ap=%7ZOMz)]z?: o:[ջtW'<ɠ ™vDj:sV炛U >DM5/J)_2 q; :{REe.GZy=[[NgbB9n&&>ƅ6F4C33J hPmB6RT#bp=n47э@oތ;a]S hp)5sY>@ܾ6m̈F.Ȅ.Į"Pq2I*1~xK.$f:@Zà ΤI5n2$G`Sl`/}  b^VBh^UI*N7s?OWDR>վZRGf6k,\6yDGtU:æӧßUn~mj-ZȄF}>ny'#׼(lnFtmUf{K|jڇ~|^^ĄSn$˝ XglL4{mKKoٲ[jEkӦ]$ PD vr,sj{Jto[onڄGHss OO܂ fK f(@ܮq4b(\ T[ K 5UұcDpгee[2RvY|Li۶m\;<"6Tpn **V݀N:WA9 kPĉDzA*&}moOUѫOA@IDAT-[敘U5Juk^Rμ^/iLFػvrÆ w5 Q$[ tԴ0JE U;qob] y9T̴iӌmRIy{W=uT Sn%fa@8{(%!nIHUc=/E%w+Di:*jRoS )fRg*~ /oyT˵|#@*8\ T+Nͪ>SI 6#P2=.49Q,G̪@&MSB~=zY㏇,ERbz77~U6PdI*jQ"KW>tC*lFnVۧON:ռ+uzc3fHzG}4={"Ix Gն+QjsQM6ںOTړO>`/mDIn qi|xŊƪYE%~T ot]P[Ū}pp%ؒn`f:MSaeO^z=C-_f:+Pjfn-[LZŋ?;w}r?tvJ /뀞MM6 8u=M8õ b,koT[?(f;餓5,kaohyh '`=)(@@CЃ>P2ls hPGyd P 4[ChJS@/㤗kJ?iN>dӭ[2ƌx@D@AnΪTtW5gJ+Rc)/4*Vj is'xs-\J+Z~ۤ&1nvm!R$J&F0]'l@[[:UdǻMXapP>製)魰䏀jv2dY+0 Rz_|w_mݵwjI%@> {p-.jVT& bõ؏@r-/=o轨S fwjJ1^z~zѽ{w˧#@@A' j[u#apזJVP%|eٗw3O*.@r!^usU)hA?jz69C6'SS*)V}tP3nT]+veR}&J=4jyмz?ey L.D\Lݣ[vV6 hH'~F%͸sTQA1]TkL2,{j&$P(ǍЁ-^+7,\-|1h\8AIʔL j~kذal}K#@=6Uח{M] ^#T\##P 陇 lH .m%\b7 szQGKE5a?i@)ަ^dm_pRz ׷oߌ_РT)={4twWj XdWS3z*7)'YRze=3^Q/v5J*XAHsk^2sAV6?xV֪$.O~u&PHǍIJ 0݀=w&QR- rI7AƩmp--\C`8W@ )JI*1uuoLtLS#3=,_ꏄյ ӽWA'@|r-v 0]pd6(GTL+~׮]Uëa`+[qJ\yQ* PUjj~I y>UܢE 3j>V NǍܞ 7z6l? $<@@@@ (Gm2U#QU60Vfe8g+M" ْ|9 RQ(3M$ժU˫!Lie*V+XFײl^ϊW|WSjGh߾}Z˩{ UH  𛘙S#    k zX? @V&L`n-K*w!+e!Ps4 PP35'O67oN հlm' "    bp@ [nډ~W͸qwk@G 4k_-[?l6m w{fȑ`5ХK@h~]    @> D>-H!p=KzA Mj7#pѝL>kvBWS\sШQ#SNaj*`: 2偄 \>E@@@@ hȇ6"i ԫW̟?߬['t]v X51tPs-x ZjxגnHJL JIH@G~ @@@@| !_ۍDn%*#|SN%1 77W^y8q:unHV~t:F"(ot!    vun@e̙3W_}eon7nluf4h6>ȬX¬\Ҭ^k2DMOtqv8~9ZltV@@@@hva(       P`U#       4D0@@@@@@@r)@@C.Y7       D @@@@@@@@ȥ g        )@@C$ @@@@@@@@ 4Ru#       @ , D@@@@@@@\ АK}֍       4D0@@@@@@@r)@@C.Y7       D @@@@@@@@ȥ g        )@@C$ @@@@@@@@ 4Ru#       @ , D@@@@@@@\ АK}֍       U"2@@@@@@,Z̞=[{m/iƍfҤI֭[t%_6Db)@@C,      owy뭷n߾K~:@ ֭[W_m>3SJ#iСf۶m.~.;Wnƌcf̘mưaLvrIk#    E`ҥO?/^Mc;0(Aif=(L۷o/1M.\|ŦRJ&tMf͹֍ y}x@@@@@@0.\hFLڵ͙g;&2 mx衇r?h@ 4(       @ f&':,SVQ#GO>$o Gr)P%+gݹ8syְ)dOɩdoay%O2MG&z&e[@kÒv@@(lz̙3 ;.wxw7'pQ0ömۼ`TB\^X6*\*"     XUV!CUqijժy駟>_wFr&@@CY1      >k6oAAnf ˓O>@  )@@@@@@<3ѣGA`w#fɒ%fҤI~? h'S      {U}{oڴR%*bd_ڵk͛Mswa/_n֬Yc;}vSfMoYM41+WNg1Iٺue~م F%#+;ն+w޶ԟ:N/6+V0[l1kԨQev<ԫWϬ\[ȑ#M>}J8CN bа     $PQoa>W^t{g s5wq?DArKԗ_~iݺpG6AV@%\⯦{g?Y~?'N4Vi25~}q;ǛS߬^w˺]v_~Ftgڴi7}(λ{>ڜ|^뮻I~ӟ^z:l]) D0ؤ&:t`{3Tã>j^u/]@Je WDyp5{ATg @ А@@@@@(F'x<fƍ w_TŽ:vhlРA镡hѢ@kt9}@e+&UVg`֬YӴllڴ(bpu(C}„ 8L< 6+_bdhO1tMYfJ& !Q{5/ڵkn ÈNdt|W$jn5Ko76lv(hwƎk*SNwrVЌ hJTK ͂@,gw@@@@@Gp 7xɂ??&M䣎:*0۫O5>$ھÇfpv3h9~5fT̙3J7x<#jժv9p@2eZF XޫfRyCx}~i_nٶmQ3jM[ou^7k6j@5,32ItGTR- ^ziF MZ ׶m[;{)GͧLREzg]:?mYfP6Vc9kBDV5@6>D~i;oy}ى={ѣG{yKuV^d @P0A@@@@(tŋ{ջyG_^=ӫqAZ b'?k//(b޼y00fj0g_J+ݦ<4oסN>dӷo_sZ@$; j{1]L-Zxrr)^_|?x4hPd- rWf̘@[6+1]x25Vږ0 gOֿ{' *xEM;v0_-O` (c @9 P,@@@@@l;6:4l00,YI'=u@UQ36m߾L0F~N8kիQ?+jk׮NvQ 7x"):ߗ64qy2K 8; Iܙ+[i UMiηvJZ9&wxUf5kXj !$H}uO>?c@@@@@@ZڶmOգڵk)#W5+Dps<&V+r:{I;̜r)M6I d_)s~5m6;>hի5h ПIOӞI&i}e'a, %PA@@@@@@¥k֬i.\ުeFFz^˗/?o<-Z(>UG8REpxw\Ye}RjBދlb]Gؠ~i׸`Z>ۛ3o޼ۛq+ٳp(P@}]Zre`p zZDMKqEE5QΓ[ͤd; 2,Yk^,>ٸp0ŪUBSЋ  !,B?     1P&zyp:lĈ#Aƍ3w^`p@Gvb >̙cFi&Mdvؑj+8M 6t{VR.Sm[fիʕ+-x5]%jhH8@ Zh"@9 ,]̝;[6ˤ:rܬ _{?coovm` @"Չd7߁YTxǔ=B@ 3˾.!]i{YfvIŋj"QaUd&zkE$>wtu]IZj`Yׯӳy攓;m߾=0IT 'Pn!eLbf C6wy3կLǎ~: k裏&!FcNw;.&Wj7|QovA G6F7n2TqP$aTscku2?\xf֭N3g}vu3|QIoԭ[רtLGaj׮p~;+O]guӧO6R 7/30}˻/_נl$[Fܮqɶq  P:Jzw}[3Wĸ3{-Р hΠ\CI6{d0ZjeZnm{oOsޛl&Ųe˒N5rQ.ay=g窫2 zl\XfM`@ %M@RE.\П4ѳEǯ .0h84ޞ={hS93Ͱaoa&LeLC w^P{?nR |V'RT2׮]M'4p-C=? wCӧOJ\vef $M6sc] /?Yi+jQtX!^25t8^2G@*UsUMS\)zenVqFo)'N4^zQƳoӮj?p[3WPbCR x'͋/EF9;ƅ{tln"АNpT‰Rq3  ɴW ? r@ /fým?M޽f?T3CiSJ&q /=tƊ_O?e5|N 2QeIwq_ `e\д_lz *k\y7G@@.q;)h­LDƆwyvƺjժ%ܤ\C J0Bܤf7TBΝS3hsc8A-Bs6]on5*[n7ٟjqWn@ Zh"@tͫKV+sRGY&!@~ <楗^ύV:/RʒFhnE5 .<ꫯ6GuT`*ej)rBa5# P%0tw3̙3KdG-/\ɓ^{ɚjS}y&2dQ$5Meɭ@h{|~t'?~Aq5=?k6Wwqi>ЍD D C@ کS'$k(!M=fmC]UmS5cǎҥKx2@rkuo5jtԩQOS5%@zI ׯW7Wy'mb߁GOs+M6~ww5g\ہ# Plp6mO=9M a:~m/(۝F﹒ҴmU-fU@_5j mބڇ 7RJF54&MTbҭ[v駛pҟx^3"*TnwzZrt& R>i&tzt^ZbL 0@O8@t9/JFz654}֭[}V!^`=W:־#Fu܇)1N:aL7]M)@$Q?Iuo)SW?O`Ν/>̯X@p 2@ ڜoi]^3(U7Lgy&Mt#StoSg>gϞF%~T"%1 P:BVk/^l.2:HAjSZlgF HPqCz羔yg#s;j]\T-~;5D/t|qa@H5j.(J5lٟ'0>ɒv9Σ>O᪵.}Hgt\r #UR+ߴiSIxNZǹ1T17>0s8{w=~azf͚إnݺAɉh"PjGM7Őx 7{wgClRѲe˲X9zPw6G@P FiFڵkd[N=f{_^ei[ݿd5N+Uחyfjx48iJ3K6}y$[g_o*?#Uz . A3f^ 7r>`9sxj~? ƿ_jժUƖ׵ݑ޿\T;0jElk/w7 ;qu @2xwM&A7nܸD z.y|OOwy{Qf6[Ϲ& l&5PvLJׯoԔKܚ4\MڇtOgrf5jwgxp} K/5i֬YIJNǽ^nv팎S|棏>'N#jC5fo.މXvX@b 2 ݈kE~F5_Z e?#^S팢wߤh6lͫLI\PJw`+t#jS}Ӥ T Mv~k62%,X-Y]wi>ecTu… PFl|^v)oJzt̘1X]lԨU 6yjz9z^ {edz-I.BI(H6ժb3ZG@zbןUB=UQ/l^~eYv{スv'ySuY˗//6uy䑑ĺ륑^,n3z ԢE sꩧ ,4{l,xֶpKTZ՜s9SN)u[_,SpPJw )iGEرcJԨT u]m %JRLIטT~(x駟%{3!&Mx[XkY:)[κdz wMVjXMu,eCw_mD@<`ҥ^tzVtYV+=c(}ou&I6\sMT# hpǥ܄;O݆Dڶ:t-[݉/݀mw}v8zwyM7yRA 6=ɓ?;<ӼwzaS8zkUK޹)k&go4.h˗v"@l|_@ҷ~ݘTnԮJ#<^\U^!A/%L%4^'{_[]?04`2FX^u量nn(/O5̖)У/B׉d)w=y]M{P MQD@^ QTbرXZ" R /Ԝs&{&f2s1F*@S-(8zF:NsA/"@:B 6irxJVݻy'61's l)qMcUXW9d γ>IOpB4=#fFzavrn( Xc\Qq+@@UBv dbLK뀾aeN"r3&uZN}Ն1 h3C2{.*3 )) oNY$pN8\ZX?}/q5G:E^p7=zJɅK(΋s@NroaW4ZfKvjvjCbja\%1vZLKvJ!0aB\4iI BW,]2-?Q'KR~jr+ OkmGZ+\;% ji"B?q 4/h5JϞ%\bV%jWi:iذ-XZ,q%W}_NPDZ\B>2He㤩a̘1IMz,q-uѮKCdSヴWA$E6lj"&1PJ#?퀐W1H'[ZUr }aOdS%0g[*$NīgϞHN,28&8P|<7MrQ.c'Z͕⨣aAy:=@>DcS:Jpqxwf͚m)s5I%%f.}<ֻ>j {+'y睡oY9v y.sigJ]Kϝ1[;$ a+5 iLЯNd\$yEN/.u=GϴF}ϐ8/^lռ@?߹[Cv`~霾w&o'Ҵo1rpM 龉J!SHA6#etҦ8}׼@  & E6%t>l?jqO?-^HA0`6Ynis>:N/RIw-¤B488Nvu2ApÇ'*#K$2OOn5Ң:\냺xd[ݽXS^9=-i׫vw:N4ZP8liҤ}^KT]o%hXSykqKAHiBqGO4 ׎Nna Jc{D[hCZt hzM,bloF ܚR$q=ԩxG I'2[}&$sԦM;rђ}(wyX- qHjT8BK'|?QW_m Krp[ێ1hpu=FBơ#.gB]L w:, w^*n+ \G~]snbxk• @@r֡VZF\'&o`!v;] »k׮gC雨(n͍F݈@ Pi-N} B@;ݶ4˓[ώ^,ӂvb9N @^8ipISr.d6ȴPޅ 4Nەz^کv( 펗 v-X!٭- CӢ^>B*n jO-> Gu-:*ݺu 8y$nad\ %vw 3$4;^ConX/9e9c4G= Һ8l PPy@NBS*39NZR1o½{Z$\fp;G Z9(iƳl\+k9i_!E "7k ;H259/V'p?iI6F+A;T&s11ȝ>ѹ>2'-K#G68p/>d:t-XwM7y4$zNtRs1եc\3 @ nv#Π_ΝkC蓮?ҹvJ2< PyטxE+߶mf,$Ƞ6 eS'iptNXA&!>/&\ܚlq^O2XU+ƹQKtDTw m L4m%(X.Bϩy&:ׇ:h@IDAT .6(N%kD $"^/{.$J#QFy4cO JI!8rc%x͏ۤ@ !a q-ZDwk9PN8N.\\G͘1#槏ԲYfyT_*ran-ԡ{x~EK/Ȏ??g}-=x`#5pĐN]xᅞ|HP^V?ˠ/7Dm4h(o 6\/9|5ns?FjϺq]W>4"$3(oϑwGո(o'XaٸBIWVw[)ni9//DFy †537c㘏 [ZpIAúB]\A<$>:f\kˤ @H@: jc_T}F[nŃCݛ<%v!Mw6} b4UԼPwYg0 Ƀ2!W/߭.O|iPjҥA;'k >Pׯ_D8n6̶9jlxWm[]{R~衇; dZ-@I_|rȐ! +V0)mw:sCArPK:N `>AGcJ*Fܿvaِ4aR񨟞YYpB>d%9a;C=q&3I2ս6OWL wkW^yţ‰/KQU4v,Wn @ȔŵyK.1@I;0z0~tRφ4 k˒?n営~uyma K-EμG~ҙ3,:Rf@ @C!(s"O?y꫗0YwsI:*%ЩS''L81v˯X''$ћnr)N5'q/Ƞt0}X_~82 x`Z tE 4w;m/?Ti =}}gywX|%ZqtB a:㌓F ~!',QhAB]M/ ~MAʓmBIW^X__@!]zr/0~"Žn*_LqA=2HB]L wiӦ^zɌ;6&뎣yzرDN;Ə((#?ŻAF7OXc\"@*o^}F 9Js~{a9,{mtQa;ŋO>9Ŏ+6|w* T~$K&Ro.GA vv 45;h!YH4iR v ranBy9RNa?>T/4/bb/ 8} )[~$ggobγ84or?\%HٙZvTŴ52пOA*A IK; d2W/Lm?ǟtaNUGG!T0N{-w;G;"'1;Ume^o~кHpnN &rX&m zNwUV%(R+W(; @#8tkףiINNpƍӔGBe |%>wRAL׿arS;>}LS^=[՟Rڥvj߈_(V:#Р?8=KZl= -')A2OS&t$1c$ICXӦM&K?Ș4q1Jd@JLA;.Θ" m9  H.vbҜK6*@vAKHqvZ~c*$<>X\PřM388͙36G!5n8h [5:}wqG^)- %_o"Yb?+?d//KHX&-8SUPle𓄣&ȳN#EغE [?wB{\Z$,'2ܴikqFNe\L?PT0˦ K-vI͸T9Rm߭^ZU|i ;%+r#ϱdwGsƂT-(T[_|a-[*'LE!oVDB ^ҿ`}KAS1Kϱ:ranFnrw.C"㸑#Gz}8qǼ?,׹$*\{=.պG\Rw@ @@i@4ډR kaѤ2^СCli phqĈm5C f ;@… =ϟ.M6h1q_> w 6|Ͷ lWZ5fLh½@|iIfqk鐽8\eX-}Ӹ3|p2q̘1f޼yIÝtI㊄k?8A[OpPyT&'/dGO91y:a(իM߾}=Ag:[緃6ϓ,%K[o5.XZ[9,_f "s,nq-;Nc̶{W8sLsgo&d 60_|' 7`Yu"lW\aKرc:3SO=1C/M,z:묄 qI)'BP>Ḩq3:V;lu<餓LFbK@g\^rvw"l#'; @9&cѣ4_Iw5_=:&bJ$1Hxի3UrU @ !DM!> j0;5-&.X^w #F Ksw5ww3Qĉ=R5M Bv^&1Mf%ԜkU%ݹZ6\&=JHwdBqAo-Dّ=W3fpZj  򑐙[C=d/ jr]Z>CʣWK%ѢE '}/(9瞳'J|eÉHXꫯ6l ڶnk$#mDZxv%A ?Vy3w\# :S/x㍍T5:.[MUN><2n 9+ @ @hg)}@xb%rKׇmz'd.C>MmqcpGE_7 0Ǐ󫯾2%rR38#QpR?7#G`%id*@>-`oԃ{"8'vjzxU]ͳmkqo-կm`yي+LΝcY;v;&~V/u2A݅Z`hӦMRt%&܎Æ UK(|S%8&I_ 9|vo,ai6\8 A@Z˶s2%^ͬ?qDwyHX*?CK:,@nyzn2_s!=Ӻ$?0Vui@8ƠRi) @ @ KnHaxQGk9vSN9l PPw3!hf͚?6g/5k֤1j(ԍCiIJ($ @ @(8 B2 tͬzvev~L j-" :uJ /@'XƉDT*om_M7ݔRa̘1o#<2v]*'AR @  c͝ Pj+s9 ֮]kᮼTIKMe]f6xcw0 F`=7c=4o<>0;w6{yWG}d'0=z0_IгgOOz?GƠ @ @'@CsGT,SO=մjʮN,XbY8:u(8|NG@E!X]X(,Rۆnhkj֬+Us=ggs7Gy̙3'ZjC.]b~vTj-Fy!@ @@~ А_T^\{f׷w><}׮]\~ ZC"X]@ay4h`k:餓L5]Bwy9묳J1jQn@ @ '[r 6lczmI^bYxzJtf2묳iݺN6۬1Pg@  (( RKM^LmNzoZdmUu5[nw}MÆ K3ypp@ @*@*U4 |К{=^ P&:uP$j,~2 5 &0v7k @ @J&'J(& @ @ @ @ PIM]!@ @ @ @%Bi( @ @ @ @$4TRkSW@ @ @ @@@DbB @ @ @*  @ @ @ P"h( @ @ @ J"@C%6u @ @ @ jU+RL@ @ @ @**& @ @ @ @ PJEY!@ @ @ @B ih @ @ @ @(%4RkQV@ @ @ @@@BjB @ @ @J Z @ @ @ P!h @ @ @ R"@C)e @ @ @ T*& @ @ @ @ PJEY!@ @ @ @B ih @ @ @ @(%4RkQV@ @ @ @@@BjB @ @ @J Z @ @ @ P!h @ @ @ R"@C)e @ @ @ T*& @ @ @ @ PJEY!@ @ @ @B ih @ @ @ @(%4RkQV@ @ @ @@@BjB @ @ @J Z @ @ @ P!֭zRM@1~|gfѢEfٲeN:aÆf뭷6u5ժU @ s`@ @!-͞=tSzÇ5jx38py'=IǏH]t̚5+VN:k5\cƌk]w$V^mnf裏>፮jsm% rJs!4Fmdjժej֬in;6mژuY'iJ (34w\ӥKڧzlJ3U@'[yy+;wH|͙3)EB>?Y=$8M @õs]f8qb\=cn8 .L|_ZɱBo>v?3gH#@_Gyٳg$qÑGi&M?mٲeg?Ӿ!馛3O2%''JE/}F;]p1cy;lt\lYtqEC;wN:$mFx @ O ,fMykvfǏ @*2%\3g믿vm%\ ^n 0C:vظuf d6x㸰\{~; ?h,X`k3m4>xc5ӧOh(\@ ȼ5FcΚ?RC @ hj˔x `N8{xM(~T \xᅱթS'vI~̝;דl` BA7Yfh21n_2Cu… #,XoQFiӦfw3]zW_}e/_n5kfEf6G}-ӦMVk׮5k׶*ʘ. L|)"o׮y'=E7o:ԚY[hYtmb-076{WƘ+W ]8?e2L[z9gTws1r!a==FE(\AB2"r5oU5\F 1oMݨYS ZsVq8Ǽ5h% @ X8&0em,U?svmW/<=暸czӒ5gym㋁k1bD 66A!uanufVX4X ˤ%azꩤqci[u-LQMj4[pZ^P& :?Ufi0Fbn:a}ljcR^k |衇!b,aq2y:ujڸ2{a}85/?(kաW^̟(/Cmvc̘1+RTǹ(b DS[:gUM>rn|csaΚYUD:1oͬ  p Fk |嗱:Be*!˓CڋmEX&"nfdPByc5="YBL4Xo7֎8㌔W]uL_XL׮];`Ri^~e#nk j2n;-6_|;9sy:\(?$vX;^RhTˤ3ˤm}*>h,4(3j(sGxu!7xc,~Ntܡj j85ktNEFKgҶ`.uEw vQ[;NB-~n1F'>[ԝ5PA͍ƊTNcAGo0)Ӷm[=ϖcwe{g]7`\i<-Z-Noi".Ƣ wQ?wX N{7.>zKPc=4)3n8#!^z胒F#\ADb@rBykJm%V_}\Zka4a\y>cqeR ٳg\Zk18F|:՝Yr-(kK_̙㉓rz뭫] +tW8|%dSԄVcA*'SM$M1`Kw&MϴotIq4]g07DoTYhmIӆ eDTǹBD  ^{A步0gU_[񙷊B=?[ sVq\z&:1oU @(Ix @C/[vm,ud)V!"?TB N]U-[+݉wL&`툎#ǡ'KbK@c 6+&mʉYZ+&wxcH) !pXv0zH# aH oT٩?ϫqhڵ GKJe.2PxIzim  !m:E ^V,s ?{Wx~5kTY]\/ݻwkLXrQqsε8mnDv c $ ƾsQh0 @FiΪRG}.8c2o͜]>R2gMM9kj>B<1oMjC k4(yh -Z'^kwfHe_s'O?O>fM6I']`޽E-ql3f`cil0iPcal-qa,3&#\A@BykpQQ~ N5[Nx2gMGrQ瘷9 @ h/_rXhIܲu'vɜ| ;?}f,PkӦM_"M74NsҥK*AѣGۻ^$[K[oq~Q&7StZ~Ȑ!46ɥJe eb|'iI$ wv+ݏ?hO@NL>Dϩ?qv5j(N7ЮjoFmd. 1\A!ۅ{AAyk0QQ~ F4X[gorF9+) @Ȍ q#UHR)n'٪""Iٚ:-{"$"qo}7nxovq2;_I:g.… +M7Ҹ7Ϧ[oYxf ˎgΊ>J9my睶ŋۦCZn~'n-L:u<~A.ڵk͟"D߽fw<˶) |]°sʴ>8>FiZ?tQ8@@0oM 2sV>Jsi.ykX+'ّ9HEicޚ]%5 @ <*1!9-XF4'xc~aN-Zd*ۛ4i&X\Ю毾*_SHzZREIHH!m"W &իNI̙cd/0f2|ܯ$2xX;[kőGsMwqv(YGgU s1r)aÆ'x£EdᨣHɯEFb^o_Ν tټ }\byG+"T?O;6tϵkz85l0lH/8~Ơ0 <`ޚnYUbϥP歹inYfwr\y@  A(''sOs{ଳβwNe*Р-?#[ 3[5k&*ZN~'[ĉ̙3m-Jrz"g͛iqO?m/";Q|^y>ql/糭G&e8'MϞ=͋/7|ӴoS6i[ qkh94^zo5wui׮;8鹄>lsiH(I@.[:uܥQB PX[U\beޚ{̑9+sְ+ְI|@DXbϚ{a srdoP'vɈ}믿ċbOap1j($T&2Ű;~mڴv(Ln֬Yd%y6 G_f'qV81&)}ރ8źk bϥK]֜r)fԩ&"{ڵc\ ơ޽{? 7[FomRi4hmGv6ʨ[ne\:8!-2uaMU.Y2Yr @[KK}.DpgʜݫYT9 \@!4+0nkf̙4Z/$nm!ܮ~ˊ:6mܹ 3F}@IDAT 2Nʕ+㘥Eyl2Sn]Æ 3ne˖9}>R=p{g…P+2D%72nֶ) GiO0aa70'N4Q`م4Ie#Qa 4$W\!A"vA*r92\,\^Ym01oM„A  A('/+n~_j?مe&M |>ydEjkݺbajFkԨOu1{`*/ESO=S_~پ֎ĨK.\3)7M4K|W 2#/i_<~A.$4%M }Yzu$?sϥX(7;̙3s$/ ?Τ|~/8~@@`݆.BcZh⹻sYUDJacޚy%% @ 1@@*`֢^X݉'ki/Jet:#G7a!O~}hN 5k֘#FxK=XT;m66d d/N W=~A.ysGVZZddСoiԨYْSN9c9>`n'M+?Θ1#{'\p; ƌ6zǹ(@@(c[ٸQ~˔xr9kMNo)9qy9B P42HJ@pPf-j}7μvNݮj6mDZ.Џ7hªگ6_ vgp֮]k|M77!ttA/^z%,W Hݰ÷~Jygo߾8?Gqǯ}F?.–[nW~wΏ;8#n#K`ر~~3jbŊi@iEyb?HǓp@@9`֍\ĘzUڷzUsV?֠=x  HYСꪫ2C/~rӦM3wqGonqki}{{mK\f0`P޽=~΅4BN83w\wܹƺ.]o>Hi.'rh|^{eƏ(8#\u;Q21JZT$lEyb?ʕx r%5z-Lh1oJVÜ5'ǘrF9歙WRA  ᙑ" z+z){q]Fa/^l/b̅9|O2M~iSze?{.O6SN5n9][{xmnɒ%˂js~oZtItN'sL|r3qD3h Dɍ7Sy<%Z?^FZgvasycqQB{ghҤI gdB;/瞸=ˮ_HDM+TgY\f.5kqp; NtըN?ywm6:i̚5NT\ǹ(t<  ;k(eBy+jozu*Q瘷﫤 @ C^9k!Z@-rSZYWZ0龇e7.mNy%;o֬Y }<}Ei>hO?ׯ'c k$ =魅JZss>4hPe IVZU?| K O\M:u{G&j⋞8֎y8p(;ϫBGC˴FqixI'~_uow߾_~Iz'|j׏K14'@,N;Uc2R>uY'tn馪mƓnɊf[ IǗT-5U@Iw?8<$' @L0onZ sVu(υ}N6t2oM>@1gbZ~s֨s[I@ ;قfcYsNosac=s1[]o'·H5qaСF:taӖkk:a,rժUqzs3뎠gv{d/>NYҜ(;3Cm-?q⋄NDyw%x>Jk@+mK -28~hJ.vԆD{\r%iD-3j(S^D 6mj{]wM3\TA"A*hv’bOR0g A|qΪzGycg l ]?4]t- 5Չ_|Ŷ*kƢh!کn=zt̟%}LT͛7϶[ `*38è>%7kmJB$ _*z-E:g&<>>&xbvgзw\uUs|f%X ~wm3fc쳏m@ZnOvV[;z,Z|`ƌc>pAk-`2ȇ@+\F&z-[^z6U7Ց,2_~ꪫ>J#.6q{Iyq. %T!@eNyk8sai1o5o55Y>=_nsV** @N=mwR:v\}Υ}?̥^j>S N3OoQFF/gExӷoߘQX&6b<eż{1-У 494i$N'.YX2̂ 쟴Y&_l_N( 6[@cel֦CFk.5ӧO7b1Ink NI([W \AI@1\К2oeIо.s򙳪Kacޚ$ & UYÆ ]vƲ-{GO' @ %Eї~1|o4K,1/6 0s#8};ꫯ̹kf+Fm  @ @ @ @GZ ]kךO<ѬZ*֭k}YSFXѣG_~̘1H dbذaf-p8B @ @ @ Pa 74W]uYw/ 0O>L6# ]" 8@ @ @ @@H/Q xFv:z긻Hۂgƍ{W^SN. @ @ @ @(MEhmۚ>L2̚5ԪU˴j6IѰaÄT 2ot+adh>CjժjtI19s޽{mަzuMAE`ҥfᄈц  5j @ @ @%Pt)~|x&+zT (z%J~yr F<泭 YRW>uHWn(eKGq0!!PyAw^{YhQ(K,;vYz۷p =a\ܹsK3u]vi׮+laLG?\xf̘1VZE$=m?D.L޸Lt;_5WYɓ':ȨN;;~ABeY7F"y1RƯ o͚5qehG @(b[8S&nҺX"5M:AY%|JyDAatD9BօKnj4G` B8,EР+20C͚5͎;%>s-0-vtV_9ck/82 /kժU ! ɑh @xQjޟR `@ x_.B!@AjpܺkN8ӹsg[=w /Ӿ}{裏?<ځѼy'!pM74fR}%.ѯ*.Έ#n{=#ab>}}XǏeWF ӯ_?sǚ7{fID 0&Ga( @ ü5~ޟR `@ x_.B!@"0a#Nx<`6mx=v6Yp7ڦ67tsɱ@ヤZ5bHwޱMhqSN59r+Ȝ[K\r%  9Jvmc=J> Kr[~Ĉ@ @ sEhxW=%׿JI,J\tiLSرcmm,9u[9S29r ( ~QAXr'1 \@ ԯ_ߜuYe]G*@7lO",1C @Ȝ@̓f?0ร:ec>!Aa HMN<70`YbǏ @ _Փ@p @@8["6 @ @  .аh"vX]ڷo;dv38}ժU3OLʼCiƻ||>Qi}/Ö!K֞} =Z߮Qb lsSN'n}'Ǩ=﹨yDR*;XנA`;/FZ 6dӫW/s9dӷou/y̙3?`իgvyg^{Ν;'B;>S_}O+;7{?~;wmE~{ӲeK}<3>0'N4ӧOJԩc$LԽ{wzzٶf&M2 y]p]vd'oy饗bMÆ cי,[@+}B/#ᝮ]=fq$6={>lOQ<صs1_7f͊c:crK>>ڜzvQ>F^_|߿ @k駟SN' l=Yo'lԎA~ϛ7h"U&LsOӥKӤI;;/6I:33ּ1]|_2ooO?Ԉ… onve?]ϙ3vm:صN ُt(Rp t[/v/\&Os=b<СCAjҦMsEf#$lb7'?Cfܸq?6};͚R>R|2a RjX}ڟ:_G%} y1O+c.ƂDҼCeyGl-&!M_Ҽys;޽{sD/W]|>ӅnL{7 <sUn'|nO>Ƒ}__}> ~̓O>ib5jd;ŋw3۟6G۟B{gGU6~flz/$4D Dk4"UHNʶlgfݝ{̝wٽSΜ9=sN9scU6p/~s7?}䓟|~S{P{Wy'E]df9|q}}`t ZG o<sL մ7P'7ô쉟7x=ψg}]{s^yh2dlٲ>{뭷Rvgw~/J< 2̏z4>V\+\'~sʳS7oN~n[{TlHw6Hӟw힝q+,gNm\sM4MIv?M(?v} C4.Ra<y2y ǟn(+kT4J TwU >@־k{u 0RTl<蕺+(n^@'ukb-r9z= K/3}cnnjTm{5dv\'T*cLuŋS;c:g6emYkiM*\|GN?p.Ա4=?1vttL)SAcرcs9TH4Ӽ$2/ًdL=،0#uj;+}q3}T@vSdvyggɓ':;;.=m8`ror YLh77nt3f3@V}LA$7E\(Ge…P>^Tk֚%mN0rz׿i\}X}]_yuհj^pnu4=MVs$vw k9} V pdtTαs{ŋkZ姵 iܾ\xV46l}Fkj+I QL}177~X^+@2 Pl[Ts='+=VKx.z}|赻:I[kfmB1^d[QQ\u #~RODq,Huyefhz*t׌^Su>!8t,Cq8&wm9][xe^k^}U93=IPg-S;ߊ=-jkv8S%s$~<9@ ]uÜ9-)h 9ôYȦT'EM .sj^ꬳJYQ-4zLy0_ZG>b! 6lHiv}ƽ~mB[d #- {?JW椁 Pq\-z.'^ls'pÇ[xAM[s#u]<ԴR_Ӆ CM\ Zh^ ciaӺ{ ^UDj~5M;m]G;i9>-5y)EuRޚ^KiEm7auTqi{r9kޣr]5QK.OͿa㈪s=o|jSO?:skՒL~)mD[ucV{~zL)_yz祯RwlӕE 7=˽曽KWƘ0o}(fw;7u;B>psgjLAߦ°o 7|=MGS/R=h9sMt9㉿[M[#剫iQ‰(NLSN|=7(?ҋ+v4S^;ۥaxuEy$mv`ZHGa]ɄbS?rћo̙)wZ4v;;.Hgܮ rO=c+S>)gmB,]JXGvL.oZ]Thp+cr:_'fۨZZZubySSNq3d rs=WXn_RfY@5oqsZbAϟz~e~kEvd4^ Z1Zog =H{WڨA·-qPàzmΰiaW<\GQ tLui5tA!NkLA:amKJi~<^.|ͷ4)n;úez>n{]M6):=tS:d")wOpThз !hv_,B|jT-S0M{hAso AO/HM=HYGG֍KRi~r<[ӎXLa+s=K?'cV_Mm:]l<5-ucu=/eϧ˂3M+0~_9$}<90Z|F}ijG'hfL8w#"8#!`dT^r֙}gӉS@4ك9}bZq55L[,_UM/Xhֶ'n;$ sy]LxobZi4 MM~?F.x5x#qnWNjT'G;[=j e4ӽx'Livl:~wqELMg<Ӏ.7bg 'm h x% @n B]ɋG'?GC`*z\}՞b)kl Oy~_r2I? Ins-C~y@L+VV>żt b] 8t,(tAf0I.ϰqs=3f}*g6/zGL2/;8t8uмd1-yI5,1/a:@vy[%֘g/Cߟbj=uD+1Ebӄh8=)=Ap{TL=yfgcSLlx_;찃h%;֦ݿ}5J7Lk bjNJi~<[mzꩲ{͸@3 C9$Cٳg{rs+UViYIN5_#/Z/y'Ea͚5[3߾HmqnWwcB=mmm,kY=QMK4hOp1]d׌_=?ìYo/*>g8iaG]+iG~@ 'ukz.H^8l"==/| b79EUڎhVEѢ,kl Oy~_r3I? )A1o:ŦSR3׀V_lu?Q'Hy;(㨾I)30gAv0I.ϰqs=G?*2S_AMiq=vX١NLk=X':^^hAmԴ"tZʹZt/ZA}B~O~]ӷ7M(yCчئMwØI&sѳ ##{Μ9̿ qёMwYWO?3MkAN2EN:$1}K= 9R_1Y,ie\#/'e4AF݊II>Jgz'uόz  __ _$3oM>=p h,]z|jCǪi~g~6_= 4KߖqzHѓ~wk/D  D@E֠*\мh|#D:n6O3f$Ind2H^d؜>'GOu~Qr.m滓M\ֱ I~s1,W7Ow:Ie֟{~ub8ci3{.\ǂ߿id/=L4_:^gO.Ӄ#׿u5h麚.ġj:I;e`@ZA:묳䨣뮻N-Z6MvaY-G  555LqI0X~KCakUm) ~ʹ`b.@i&O 'I9qFotv-8ĉC) 6x z e{<(_&௤&hzI~4P)s"tk q=4/oܹD:n6k$5e3zm AtXm.\JO0OǍŸփW_}?;4I,yjA6qu$Iv/p'v;//{9{UWɗe{rb?._Ǫ\kK =ԝ^͛)Z>hxN: 'uk6[빡Cffa<''rF W$}mC˥=/':$麣S,H!0I*l M~7=B6Ho=/Ӱ2 2={Aڝ|GG}{dzzRZ+Ao I3JW ֢Emeڵ:jSLJK@r?ЪU$4;L4=,-5 G}_pXO2N/ zRCL۩Ú5kܣ}pSOH8Yb'{!첋;]1ꫯOHEݏ; A+\/\~J9Uʥ˶!nE)sl7[sK?B^߸?I_}R}4':$ß}qiS\[ҹMX(v)1mB{Ad¶|rkV`pWZXp>L[YZoÄۭ&o V\iGśZ>׷;ê`C.( 6@fc}z;5p/ tm#5O;4yon'fz!VӋ*wz' &U6ͧycgq&k%/|2.oY"I.P *-S~m(;c$\]!.JR+Q@zj3)salK6tu82?vo[㸏$_I>uĹ-i'I=zL0ZhKAvaN;ɧ>)׿./hkxWD8dNRSq8yIggbq߃;wFq7nzF[ ?ɉ't3(wv3L*4$\L y72V8v$- Vx衇 h"v֫f373ŝgF #qoW!(Xam#3W+Ofe֬Yvi; hMu_ՍV|; @_A[JÞWlsv뮻-Yʡtz~v~A>uĹ&DXǂ]w.uz-yE QQ|VfIp$+2YyIbb: ?c 9Cw5=g>##Fpݿ݌'S ,ϕ>Փ}{m dL}COv_x_O~2r^[PЙ ?O. $HЃ;hM\B6υ(;_e6l/Z5N8u]g%Kd߳m$<#be]3*gEE~_Zw&s4`2=秾]sw`裏~wM@īH l#5m"Q^%ɷɢo!!qt\mkksf3lD}a^A?ܧ!xQKh_ۚa tq':ŢGg<@ggq{iY~w:IeAQ:kr AK.6A'Pqv}7?n']vLd ^sαjh͟ELn?Vsjԍo? ^zAஈp++{xCᵞK/{4V_J>؊{Fd1umvFA+4G{}[N=^sկ~n*e^ƵYCwxꩧܣi?t}țz3ΐs:kw@.fU)=?|Ek4AeV Z _cWkbW1yGp zN#psI9o^q[kwx7pn&L?D}a^rk̋\G$ߟX뎯}kz,{,/\.]Q!8tLrζAmǏ3iv&\M=l: qرcZNA_p<蠃ьBDmoo/1(#Z%\Ov:eܸq֧6G%j^M+|;q8@ϙ-xh<;h>otA[k^bhx4!6'ʥ 6_]]7 g;ͯƏ쪪z:ꏶv?{讘⎗yDu;hmvݧ^{/[w_:3 8{o'xB*qW2iڢ.&>MJHvEGe}'yc7Z{WڷgyY0V1='?ךz{q-o`i/~4JuR-Y ( B\'\RΟ蹤{֚ӟמQ_mXnܧ[w,9'<$:MPwE_oU\---rW_vmwƃDGNڵb}TA/h˅= {Vv{:}7?k.2_(`<0NȱA$V`}I7?sjhhHDSaڷ6RHDOva)kRMMM$qFHe4̙"C+yPg?2S ,H)},e.nOxjAOqq}Ӧ?tMŜI?ڵ)s!2f~/O3~EM?]8icb4Q~OM%2{2 rɧ!Wl$xq@'uk(t?= 7|s#ȶiB{?Oz>5kutǧ&M䙧LV}'k?]iPàf1_h\W9\+}4?)'>&#]^L::1[2/RxBвj?;޸tN=kܨ5lC6.ı4 vUz>B=[ہ~w=>SH=Xos=^Gۑ>70/XzR˵,rJ>ӹq3,im9@P9X7>Nc׆wuư!C:dPW)z !MGP7q=մiA9CRuuutr { i޳aUن͞^=\YY 6l_>4/&WS~BWh}^[qS QЋ4W+.~2NO>>SV`p_b'g6\]9~1cx׽aФ a _ze; @׭A~U49M3S7Gn!iz?W ћnI7ŵ4aP {Cކ>ܧs=_>rG\OB t{tݡK@׌zhMYGl\B,{TvA?wqslqDQ岽QUh1{~:^kQk#?Ξ&}13=þ0Yv k|5{ݦ0m>zOXۜo!n7e┻-k]68{$Y㽝_3 g;A]civr#|,퍪BI;d xmo>biskkY4fV@wasD ,[LC&1MXy&~łnyp+-1)Ȕ)S< \MmDYzj*ٸqxebnYid\8q?M켘)1ŜLH}}ndҎk|r1,t]"F 3Q:;;;EiBwȼ/b;@+=No|ɂiDvegYxi*tTLy~w:2xs24=|gJ+qgے)$5=I`5xl?ˆ+@p=I @ЊaZ'ۛZA+5AOdb@@@@@W,X@_ӟǼy䢋. AZpNTfp4@@@@@@|А # PMOWW뮓~[n#~       @wRa͢j١LFaZ8!5*TH@#뮻: , ȑ#K>lgRee| _p@@@@@@2!D˟ql2gҜ9sDts=W,YEBM@(uİŋM;vUIaiӦImm^Znyםx:p53@@@@@@ [h'3,  >\~{・D]]g?3Ce]&~     d+PG@V;OHm~2hР~@@@@@F  "Cu'D@xOnp%ȃ>(|ZJ֮]+G5kwq6ěY֎     %-0(eBIo!       E'@EWdd@@@@@@@BC1[       @ L.gy #       W;Z+R-[f쬳Β8 tMV:<1"4Y@@@@@@@BúudV766 r*3hb7nBCު$       @|%Ė-[<7o3       %P¢E       @Ez&?|pg3d]wu@@@@@@@@"rZ@@@@@@@@ WHȔիWK[[5{ʔ)2jԨLQ       P ЙMF@@@@@@@,r" ,"       @a* RWW'֭Fc0@@@@@@@A TJ^z%^#,Z(dHZD+ءL*++Q>3۟ !6{ch^{ch^{ch^;_{ogWJ= Xoԁ}9RWcʱ8͝kg87P #Zf̘aY$ze'z %~ѣQ>D@ٹ_L~' %j*OGu#%}CEE5wQb["؎_|!y&0#       0bаtRZ[ee4@@@@@@@@`` z󛛛eݺujwuW*38        #{xA@@@hmmT*6nv8#!.㖖)++{;Ł\vuuyr/BK@jgg'X\EhV:::(G7H q}!H6lgРA) &]]rR?-t-W-y*V+4/.we[@@@@ KZhf;e)f@@@(KUUUٰaѣGebrmS*$Lo[Ι7ydghii-[82d7g8jjjȑ#E %P]]yENK`ʕ O4)h"=A+*ɴV0a3@a n޴iso믿sC        8XZhP#OnU^ 3gδ-]T~x1   @!}MM/@1-1pK 7շ'  @+4|wq2ydgc=AyaV[m%?eذa{G֯_0   hllz7H   j%@ jW+76{HH  @ ^>x푹sڃa/g*>Y… Y|"   @OODsssb  45WfmZ;d]u='  @ BCSDrԩif̘ᙾ|rϸ{䨣m?,@@@LKjkk=u0 UUrm4@   -P vmsԨQ2zhg &N(g϶&oڴI&G@@@ _6󠤦FR@h5ޗ].@@Wܕ-SW:JC_4ɓ +VD@@@ tFeI@ 5]MRi@@x ^A[^pjg].'taÆ9R`@@@ DS%)@p 5Is[{RÚv?A@@(NWh4i3zWaV[mL3I  @@@0kZioϭ/0BZ @OOJ6Ԇ[qPt   'P  v͑32g'^GGθ{@ߌYr3iԩ0   +&555  @uCtvټ54I @@0Рu8[Mus9~zg=;V/˴.\(---v4>}3   466ʷ#|2  nӵh*l"Z  P\Th8Ceڴi}N."yǏ>_j祗^J/[ou┕Q`@@@ WPE+k@^MRCA(dI@V"ӧ^QQ!_WK/up{Nv}waO9y駝_]O[nHvG-Gv3   @V zJ@@!i75֘,& zH@@ |M_@+4lذs! md˖-!C8;M6yގ3f9!|Ohkkk=ǒ#Grhur}bb"} @aKű)]*M?D@\%   MܕrC4 %&t7a  @rbz:m4ijjJEtP9hMD9h5+Q"#  -Jy*-f@(dT$ojiG9E@@,.Ҝ2ҥKvmMȢE+m   0Z[[W?vQ FBC楩SF $y@@EDyylr˭*sεW^*47q@@@%l[eymE}9˗re@@@H---۶޹Ѯ& ?UYl#> E/АЊ턞[@@%PEyf{O@@@-T*sMN=8eY@bIIcBvۉbݫ7 @IThشih@@@씚8?n`&d\g9@N5٭ lii/:S2 @IThx=4a8#   !*:<ކ @E#Ym0N@@%PdŋwYpv3   Pڧucc$fC6.' 몛M@(Wh.6o>AF@@'uM~ioOS`3f̐9sG@@( 7>ȧ ;?ر'  uVHzNC@%K;O|ͬm.Y}SO=C@@("ٲeK"p雛ˤ33cq'0 %+P,Zeʸ%[l  PlThRVBk#+9A@@Q@n&{qd漲6sȼga@E1M؎m-$>@@b(qݡ\?pꪫdРAKB    _R+3ʞs'䍳vSN@Hv5ѕl:+N@@JX 𬬬S!"sL0E    twwK}}tvvHĮWZoqw&Si::A(2bnf5@@ FX*4?ιSma_n@@@ dPWW'===!MrF %w>" 39X@bhj(l7v.Ĵ\T&  @I R$1(@@@ZZZ<<0O(LYQ^|os\Ʌ'#' @(fbAGȪbf'  @IV   E) l" EWQ;ȑ{N /q>D~Gj/' %-%=UaQ غ(靈C@-K ZG@@  L{ >dUZv1a09lYrǶC`@h,&(n2| JD@@@:;;Nzz 8gH;I{gn.!eB&LPB@Gt5b(.G +o@@$bР7y&N7N;${キg_rR_z _e}Uz3mi8@@@@9#cG AD[E  hl( m22   BV^;ȻFo}KvygKeڴi[o%>yqljVj   ]@ߌ|5+6 L1VyGty$TzMzzz"ID@@ ͭ]!2TjKdB@W \qA,Y"g}vIq:WVVI'3   T՛;!+>ҋT0xkUwע=>2W|&h $  P=)i*œ{LPk  PHH+4|}M2:qD9e뭷qرceV|ey^M?d˗;K M   d7WVeg@@[{|!PeGUٽ)γ'ؓԮ%ꤳzY@P T sA9l  PteQXo^}{ߓkzvmw|ߔۮ G)~}Ve<{xȐ!V% 4A@@@o^, -YhпU} :::  %$J%ҶJ  0p"y#K/Q?UA[e'TUU_,_җz%}LOk:@@@$fs<溜7ZonnZS'u  @Wwut{ JrF  F 5;r%Hyy{r^s / mmm3@@HP[2R)ٲe{ %/P*MՔCW|" 'zzK.]JꪫD+[?^{mtO>k:@@@$t]}ޛl]]4FZ[[' @ujZn  Bu;NƎW͛7MH;   @kʿ iKuutuNea;@R#cI)HV d)zN***NpfL~a'}Wf̘k uu$rb@@(!yoMih yzM@@[G:ђ,V'J`@(yrڤ?Mn2aW׿z9餓W^!I@IDAToI|Æ $^+W;cHi&QFɓeҤI2{lq +V  I<*M=,mZ.&0@Jsk'  @";L>=C=䤣{o7Aۻ'ݰAg꫽(֭sor'ʔ)Si   #呗? `y/Vb"/ZF@JBCkGtlPI $M .'M@ ,:H*++ {ֳqFx,YD⊴mҥKG?<3f3 @@^Nq#eefyjOy  FT+4h" Im9F{X+/z_KKTT+UUTlْJ@Xp&qd2uT ?zBoJs=V̜93^@@H 9n-Hok6~U[_93@@-cZ0hm.YUUYdž! IBÄ <ew%zz'N/=}prː!C)fon)~ik^h`,   8{,`<}#vV-4 SC+3n ͭ`j@@ FP2Ǫ6GZ_?CXlXIJ[Z8餓<f`r 'ȼyɛ6m8   0p=]G/(V+pڂc JK֎.V(  BPfZCף]3cx=>=n8wX&72  #PQ^&ZSƏȸa/\uƁV3RSS#  K״RP6J@(~Pmaeƍ2yȤ_t///bР-4A[_^olBC5   0py߻kjdV6o5Tv9^v1-3h 8ppR@MThsCK7I iUIyA@JZ *uM7-\P?|g<쁿/R__${AСCbоi5ZC?~|3ۦbTUUY4]  1N/]kt:LC@:ǜOzh2  BG-rKڊ|P>O˜9sBߪIgfGs9aww3@SSV[m"G@@m "0PmB+\  @jS4h 袋<(83hooV}H59jA{:{l8#   @&2C& # @ RA+3 m TDB@"BSNP]~\pyP6gÆ o[,YIo0oPi+0k,(   @ZmM[f[K  @V@ t;1PD@nn&_w6wޑ38C.B9 ȭ*wqtttx=cL#O>TWW;:evm&2!;5-;/7ss T:[F(Yoxtk&e`ߎn?֜]ZAkkknN⾝< #*#]=2,x+ Q! @@@`DRAN=TyweѢEe}}\|Ų[ˉ'(￿7Ιn@ظqoj ow;?x^3RVIgkkZg ME$V(죡0JD?BaV^]ѷPmыP^XZx)%*V WTQQߒ3gF~ ( E.0ZgТji*#  @DVAKk_,]#b ꫭiSNNƌ##G*kk׊?Ԑ)L6M~3E)˖-nv!";CIn/   hKVj!  a ݦ"ebchh"}@@l"Р ovmi7hr}裏*LzR !狼? Z)D   ~Rm# @<OO ֖N*45" Bzj _җ+R֬Y7vSqwZŖ믿.7|2üy䬳Βrj[y_@@U(uI;VI{*dx '[@P!E͵~7.O9cV Zg}SVcO~sow1Srcqws*?;sU[O~S{r3 2_$|^xAqSǃ=C;0?CeK%SO=%w pgKeeedyfywǎ+;3@z 6x4i 6,}d%?"NZG xc¨QYOUXSL d@nhh:`Ĉ2~xgp6mVl„  pE3*m!CKzkDmlyS՛ }[oM<cZ?%ad#Y/1̚5+us ћ- i8iB hw65_2fZi{ksF]G^E>)skFr{)zA 轙+bD|,孷޲DCs}7'Nh͝;W9kZLCO&"O?ٸ=S,X%?4f:?u,Yqe;k¼ {طC'uޝUzO:B@51 ΟTfTa^e?uE?⋢ 9@tҡwwڷ~SPN/UkU;|9tWs Рۊmbh@ 1:C5=K46*>Xi@N +2JݮrZ~-#{iU.W]uUE]L`@@N Ǔ)@ȡP)H;#V+F@RАZeNjx^'===c򶷽ml    P 'lZ_zmai$)': sj?2"{-~_dnsf%PIwuprTdwcRXZimg q2ղqFTU9nj1Z8d*Yto~8);nF93xG@@ 222r g.0{lq*Mɢ455"I*- ťՇpJ ԶuJC`hxDsRRM6|s' )+.Ǐ577*fU\Sp(V#dNcrЩOHKK6@@@rtT fH}:r5h9 K_ ],h;Q2{>@_oZg&&3|ӟ&@@@BtT#:% @(@Р`b9?  ޗ^zI{9N馛fa@@r?@+ w@8j*.P8omQI@@J "GIMgggZC)Vl6=v!  @ :D(**SO@jiQ@@ 47wڕ6ՄI2/#v; ٢q<  `T v UB@#$K  @h"8`&y@@@ hbTp8\I  PN@RaT@@ 4LG5<   Pf>O^13c8Y@Jbd I @@ А[Oӥ}}@@@2b I$ӎ  @,P$V:sM" -@@CEw?G@@+0*z:  @FgH " @@ 4@@@lѨx<FeDcRmGB@n"WQѠZ'eXC@f.7R   att4da ]dN?nE 3`St Nua   0Sf*H~@@@ H$AGg ΡÉ@}#F٫l:i5#! PnPܚ4ñA   p [@@@ H :"@*V⅁任pZbqE6Y`IvV@(uH4&hԛ $@@ X&appP>,###cc1֭˽%"  @E òuwzdZtΪ VK)mtT:SΒGCK(hp:?v%T*it'= @&@8*lUg#  94J[n_lM6    0N`mxU{Gb F|e9YŕYѠmTǃ#tNQ31Fg.cyk|wLw(@(F"41A@Zh zQﳟܹ3J@@('_)|Nj{~R>~\|zkjhTt$:^r< D1}M?|hess#[;G޴'M,4LlV@@@>`ȇ  y8?,p&2h3cJ   JWWXuTu֍mc@@(Г5A_ȐL/H -+dsյQF"ASvڹ+ITdB@Ra^ ӕ5   <Ç*w0  [`݇FrT ft(G2gV][D` 蕍ʏ7K8nnxVW\q|hZq E$ @% 0BEh#@@ ~e޽i{ӛޔ    PL~'oh+m`V5ht5Ƌ @% 0B7Fh ! N 6[asNZCI   /B X,mzN:rdDz=}=O6=KyO3]@(UP$fLurRmGSN@@r'P9s~hh(m@@@j'<2L4Ąkb{v  {GLuUD Ò6e@RЩH Dcq Gc⬶O0G  L+P|}N}ɺu릭(   FS!~ ['H=DH `^O

@@(V%ǟ{-1"C62$kU $ds GZW풵m+ITdB@hȼWu4:W8@@`R4hMy%}CV   @!ZP֝⼹,Y`(ȯ^yYqsV䲎3CK׊V?D L 6;vfg-܁P4+N@@ *Mgg|3|+ +pKM OXsB@@H$"R_^P~'v託,u>2d/oh9r5riHUURȆ @y `xo򶙨uf1 @@sE hЪ^yDQ{J:::=񪯯Ϻen7CfF@@*X@zhmnaZy"qc|:?;y~wϒ[O_/^d 2" P)ΐ]OnjHL\{v9@@4s=rDe4pÉ~;Od6mڔmG@@ ЩFFF&^+NYnų%zg̕iL}\2ٻwvo};ieiӂF$# @ 0@]f4dF@@`@Q{9پ}  L@G%t丩UkūxX{\Mo\ϖvx<1#N@p|a5'71UpuMV.[V^.mM  ,E*ڮZ4T^2! (J@ӳ  V`tt41ij]rۖ$^X\FQq;jŪYN:B @@`Esw̼攀  d(KH(0Z C=یֱ)=C1 Ջէ] UUUfx@@dI@BTd.e!  E h6@@@r(Ke廻^3]s_&e@&i`b鷪 ;q  0 S@@JV@GcX9؉ww?!{{MWoiˎղvl6@& arCiwMw@@ a v!  @ D C0,ʗycFH L&[ȍK/1H&@`ʉ,J08V@@4@#   XO@z^b㏆eKյQ#SsW;em ؊ˤQ+hTGME&@L I<δ]iz @VR $Uoo8p`uСҒxs9rg3h  @8Nʠ7I8ӽ;G{P\veCK׊n?aMM@ȓ# VA4(Ϭ r# ,`A?~ ٳg˥^*)s$   @ hPȈ/34 C=یV1LgFYt\}RUUeQ@*ITRsV !!/ "P􀆁ַ%6lȊ\w.,  rXuJ isɒ&yN9}^C"A YCP yk+4"^4{2Ȉ `;yA T@Q^x?֬>OOr7 7`!  ޺Ox|Z:_nEmeYGc1^`|o5kg4K2,kd>ӈdD@ p,%V^q~#(  `^h H"Sjb 씎K5zw^9rSӝw)VիWnf@@JH fL!q_ /8:N1/Mȿ=3O9 оza5'h`U6YݺX>rim6U@@ ?h\=if̏  @կ&M /PnVYlYS;&?GX(a/~Q>il Sr!NAZ@RF#I-tMVg4P(IY'??ke8f|Kg%Rg͖\=h44]g`Zu%5!u9_*xX\P{kw0Lr/bay~G~rp G͵5-/\( 5"׋PvAO,R햖~ZCC]@ 0@n:CB48Y;@44l޼Yo>fmE򖷌mjaΜ9rmu]'gѣc=&ξ 7}fXdYfU/n^ H#߄&gd x$e$K?~?w?_HAS3^#fsד>p8wu]AQ+4E}/J8(i-e|q^s߷ulY?N.V@"?czb=48Y*ŪSg@@E }GO|"`Ԍ:-ſfl@@(7U60]0C27'wKC1"ÃG^s.@jȵ. fa5) @r, `q5ʢ8Cʢi I#43?Xsuc.\Rn&wȺ~Kf[#  @oD4A_fF5xaߐ\y~{ZP~ }ÇL7(8tdD@ïO[Y )5  PX4:l2]6h/ hB>L@i3:*ij:uhzqZnj5s{5Pjddd,4Bn<BnՍ;7~.fŝ;–~l~gI FiHB2888Vpuu%=HӤϳM}ai=9[ex:AMMMڈr3-{eHӭl쐛^*KL1]Fٮt)n$@ Dq7nRpdC@ 4^p83f , 3mƕ^%M-0"mj2{5p$5A/59mFכv^;$g+ɛz57REr7}S\糝*d4bi;Y@jdrpbd7s>cRjw=!GCimt^eխK9lK Bsc5k~b2"Q f\⣢A"vsYB@JQ TJ;wnʚEp&===?  X[ 9) DòKzZ<#eZS]!7.Tlr, XTr1$v`JD@\ :BjիWnzY  htt5 fHF47:5'ՉW)?ڻYBqcX iNֵ떮=7gdA@<B*eS4 h(!  P04 cܹs {M{k֬YD   NɠSEaՂ Yni$<;HHڿUzmp5k}1Z @O)'rߧޔ@@2 Рvڵ+!cW_-nIz衴:YA@@ DQS%kR+$)No:Od8~J6NwܲrYݺtdD@ DcqD֯hՐ 0 &{iu}kc.lذa,ۢEDG !  @x"3$k'~בY+ =GoXn|`3:k`r>@ { `  @vE믗G}41ԬV'&4A-ַ>   ^`tt41͜N/˙ϒ't$ǎ2=]U?oaDǁ~דrLWͳǍ:f  # 4X (@(C\}co|c<w[̙#6۩H ֭[GB@@@x`0ŲG._x*۪˛r>( ˖=r2jj)k箐_*MN:9@@Аn`K  PE hPFO宻Jv{bvq8ח`BD]]|K_5iz@@JQtDɾgPm'l,l?#C/h߾BVkʤ=f0䓍;H01Y:Y׾JrZ;LA&@(@h}~[4H   ,|_nMv}Ji#G$^S/ȢEa@@-78|Wuś%g֮cIsS4aV9ol1f䋄[塞mpZX5r͢5rU2x@P*WhlFȿ1g@@(Z@R7M-S;dܕrK6U@@He5%h@JZ %-J@@(#QzEI dcNq3⬓u亥kj ! W`8ɡ3fGV@H*i4   h qa{zᏆ䡞m`V k-@t   N@ʿ@0K WUUd@(4| 6MӨ3+9("@@LP(^"v?GCrgSc{M,_^.tdD@90Lj94_p@@9O~R3֌ŋ˽; vl߾=m[.W6mڔ( @@рR~70$avaٿ\r%  T@<'P(nr]ONӅl[V}'! MuB! %'P/˲gϞ7,k׮CWr{LgT&@@(eYƂJ=V{l4./v?%'LUVU%o81"üSe @ȅ@-TX @@tР#)tww'FFFfWe\L3ha}}}4X@@JU@z@ʝ@0-{e03Up!kVGW\":Se @ȕ@(x̴r  0@QVvGx< ǎKs6 @@@[!#xaѝg$37tpYkm) @0)t&f-K4jm%@(ohM6N[g@@rÉ@}'V {ʃ=D0]r5 f Ƀ `NWr0ZN~@l4萶_җѣ&^=鱓C:tH_3gd؎  @k:@ʭ@o`HܽQ=tmزKyg.  @L}oI"F@c@@y@CUU[N>e{AWN5ё(@@ h ozxz{æ=G,#!#  P(H  S RiqՉH Ӧ0Ʉ zN#4{@tcC~G$fLiٍ2c: d,N~w|mnvٷo_b 7 k֬ȴrVZ[[f@@JL $t Rn*ɒf!!; @ noo/^93  Б4!="*jWnʦNe@@̸i2BC&  xa<1zdqVf@ %a…mdWΣ~zy]nM=  @D <ÆT/ȝ]oTɶ*yru2n2Ȅ X] `Lu@*#4ʹ_H{AOFdigT#@(@Qr8^$y9ˡWi Ta#2:]&L ȳ{=O@kCֶ,DfMA&@@Tn="1q9x =R>DroF OCQ9dF@`&4DyIOOO)@@r! Ġ 2\ƣ;GH 6U`--]+NSe @(5@8ZjU. lh ө&b񙟾o'MuNqr;i暔 `F(8 a2iʕ+39y衇d%Wo*i@IDAT  2|aLP6!l1̈́TWkO[#vLA@JVu:ZFS:&%/0p8.NgnSO4 @(M4|_۷MlӦMy+{<eǎ8=D@@0Lta34< GdfierQre@(e@G YCF?K-t$@&Ɲi|x|!oCB;@(J@C[l_I  %  H*nWy:9y2Ȉ 7ЭՋLa( ƥ& =SO0HY)@ 2@*!ǏՕvڼNבv2V@@L aLeO8#wv=%|c۳YUUɛg/6FdX'fec@+O1fzl&qLaLcRt'w7ѶiQi gs!cjH4fLV,%fgj9\-1O ч@(.LJ21סh5hюZoO_ɔryϯ@j̽myֵ( '2o>ݦ {S={p b۳)ҲǾr]w^OMK,rnf@@":2wWy`,"{<-!jyk Kd+wC @GÑyR :tQ-br W(\ӯ=sQTŕy!N$`,i0>Ua_c"SRQ4… %A E h[;ǍZm6O~7m$_җni rW_.'N(PS@@B4Ao&lf ecNq3⏚te亥k]Yȍ @(+ӖneJWk;*S1Ű?"G3-@J( SUh}: gx=ny _W+dk\ z׻dΜ9%So* Tjt6OͬǏdÑPVf6D3j](W6~7  oa$Z}b) D)'F4@J.! 7xc≸gyFy@RN:"E]$|;EHB@^֩%&VJ6}İM=J6M+.ږ.  @% h0C1B>q|@]qc ~ݲrʩ5-7CCC,,RԤ܅BM=o%,qIu>yBd5'G gx<9P$ C/t[VMzD7OZz9+S>sH~ 0sVIۼ@?"WےZLUglFr/3DKV<+}Y9M' jO۔M9L}ȓ{}mF>m˶\^@Gȕ{ק G$4\:dQ,w1+>0LN~"k\ )g?Z>^.nD?j~ߎrfRrwwwI4$EYndOOs #-EoT>ۅqֳh@ΤQVLR?snS+7:i; y7ʋ}/` g]ܸP7|ivԊqlC&drݪ /3+QܳzgBr# B@C8 R) 9Ч| (P :$OB;v&# R@GV*@\dRH4(<=@ŵKҼXsؙ5wA@}7\\ J gYa%h`A1Ҡ1}MǬ:c9@ (` ?  c dйuR#yh<~U om^"j]%U֝${r  AH'Id#ʠ7M3񅥹ޕ2)@"GMk[kkk:+9`uXR:DmsnuxJ&2WIЧSw\/RtlߟV~:$g+z[_p8ڞl' $F2,T?oNS.iI͖Ј<|e]\:Εmg.uNbOZ; ;)@M+L> 8!!/dLX(% !X@3%?IZ*m Yf2,Mo^nhh̓2˺Izsct >c9_PԀ:rzzFo&lА*eǓР:,ɝtߓ͢1wHߖL+Az)g3+wv=%;.sEcܼrjo dԟ%'5dП# $]ߏlk3M%3U$? @.tJuDqqT3Ju{Z5iFa>΍T@4qzrٰaWJ`YxqtD@0+ 2ٲ*-_zDܹ{ *&UEdalr,  IL0vTBWaN3# PE hg>#;vȊUR'p4atO}  . :"P*%byܳrܘbLrvrȲKevM"ȃ  `R)'L0Q쩆',f#t (4c}".irWXC@( d= xlp8 O*uo_&[u!-]+jהc'  @ix|4SbNt{dh N(@7nmƼeai   d| wnQ3u/vl8C|mDGcQ,<[^tT   nb憅(AoNoL5Z糢E*Mѳ@%tJGG\~rUWIkkk8%  Ut2@{?z#^>9k 5rLAF@@ ‘FIyٗv .AL7U\@ %??%3=18+  P=sdd@wOzJ4,+̖ #  @!*Qj]Et&Qn<>sSch3  9(ʷ"۝&P  ":"N-B n<҉#a"CmR%^d2\& 9 K Pe<>6-^]]XwNB@*4X'?L{7h,nA4X[ PE h( 9  ` A !"lgxh$o9dezSe  hB2XA |Y @}z:71 @0lnthq(i'J *@@@@@dUio4([ uoo0Zc\t]j E 'ɀrr" A@PD|)'HL&0 NNt)Nn;#89 PǥO&،_9eP&F涸 u:΃ P!Eh8ps=Od|aZ/b?Si&444THL@@t2d{䮮O34rӊurVq{XE&: σp8,M755b @`騔j4p?li "]D@(j@?/gE/RIhTxy _\tEf)KH `#jJ@JE( $??Pի#ȴA v풻K?סF̟'RWW7@@H2bL-Y U{xRmtʺUrݒRpMxhc}ƌOM<=v[<%$m^UUU4@ 0݄U{fz $R>D@xu&#L( :M+2Vs-!sضN?Z?y9qDp}{>@@ h ȈD"2엾G6!lHܓ[γEka W 7~)k7l<-t.yhHgH5*=Ot=uRQ PI4fo)\}Z"1 ,5[T7q2ɇ PE hذaØ^ґ2 fh,y/Y>O%.GyDnŵcYF@2h `0Ƞ7GIS 塞mȡ>pzMqtW;$h\<4=_vzf8 $RX@P@r I(qR2:CMK@CRw@ wޱzk׎gpYg%DV+/\p  @ϗxteq>kFyYT3K&9eN[ȷݙU0C߿+-%oYٖĻE4pJ'a"D5@ȱ@$h,R)P Emx|,Vt? (x@CZsxp%H2A ?x  iʬ  H2 ůk7" ^>_(ye\QzuOe'yT".kL12 E N @8tGJ+VRbP@02aگTY[Pr2 (oǓVsaa=E($@@k2c)±l#KpxcSw%_'zG4?iULkY\l4$ daY8bkB@G]H  6D)dA@rh(~dR}_Z ɖ4$5xG@ZZZ;44$㷥J,v2Z!\  /~1@G"xt{x3qD,X-ûfKkܸIVfn,k ^ٴ_3羑s귝> eА рB"9  3%; e$@@Ciwf(rwiD`_ZM$۪ m* (x@CggvI l߾]/^l[[f@@=% ab1 (}^tV+RUy 9dhGc#VZuN'gP .u⊽uxH840]{fzJɯSFhB2AGd !  0D*- jp92itZGM3  :M~mLq L(P+_rʖ-[z+\{WSS#W[g@@05nAFd\/D^2'9bsƤvވvx6M;^/M?ۗd9rəRDhE2]r  SH2 @N I$uӝQ6hȟK ؼXA ngNy@D(^wuc|:B7ͱl4=3XF@@L h cǎ1*gﱔ`3v,/ϕXp򧰖5ΕKbȼ6irf?|Mu9x5Ѐﺺ|mmm2k֬: S@R!UthVX`DH6\ ! 0S4s9r׎|ߖm, y -ܒIVA@@4M daqe}O<'땃 D5SIjn*y>"~S2{mƈ;'ݟ鎕2= nnnsJkk444tG@bSggiciT~jYM$5#za;oĐ?p:} n?4-_ذaԲek_$@@ $;IE剃U WGk5G7 om[!^6Sz_5|/tȟ_xڤ#{&?t&elt: >>ff  ?u  'UөF0z)P$&acgzJ]@9h?.{1 s;Lޜ9s=qqohh(g bH=^򗿜o|#u  9R sPZy1 ƣ;ݛZ#>۪l6˧:eY?MG?$#}-{06+2FпYA :" @ȧ@`)y^έ@$O3:P7P IcmǬ#d/`٫h_oooI^}L@@,4Ȑ[#;C&1rYJiKF3d\<\3iD S *:qE@2>{҉f; ˈGHH45Nxl6[\Rm:A{ۙ\+wo蒃}^%:|ȠI *:MJfɉ'*> ?XC՗kd.TYHLXY4ZG c Y L5",sp8  t$Z".@TT:AmjwʊΦIYtK`@FQ[XƎ8g'')N0vl#e+hGj:wq|}P񋭯H$ !40aF9bRqrԄysj(ZcZ s7u: 3$127Is\r;Vf"ՑA :", `zKwcGy3}"2]@GXYPR, - P(N  @ dŬ7\^҃q_FM/מ':j;2fH=o_<$Km&68zLdd6y%(nfrypA̦uI:RtZ߹T$>6 1@@r@aR  (3 !; @6\Fc@@ЛĊ I+`d!_a4(hM^{FP)es[o}ۅc]q|j0Xc,pYN q՚rfݲpɲ\vy٭r鳥Ƒ\ՉjkkEI  @ 0BC "0Zu OQ6[ěN@f(+x/ЭiL462p)@JX@~U@㩋<2 9%oZ.IW  ȣ/2ƹ$4$Q\:1?b.!%j4j1=? 20u&+2Fkϗ~Oe`8(hXf9b(Υ9  pߧFh(^ :^3{$! `F  'eϞ=cuYx{cpmӶreӦM,@@뼔oL-lXĸg{?pP=Wy<&q1;ͨ!9봖P01ި@rg=㺮sߏ(3fA$ ]H)QV[͖Ď__9.)/y/qDXIQ -YPDP$ щL/P 1-]`}Vд *KqZfa``{WFzC^^DdM#   L `w1&bZp /Dgxtx 7ɰ"zHH }D]А>h   H"d +yT#SBs؆uW6.0#AXz>;Ӧ &9W`8KP ʔG4P+Q=xm_fsSV֗3A<.#0C"15 @zw8z!D |=JI@2U(hH3̾ @lM,HHHH $G"*B1kI T__nm­feO88t6m 0bЮd6暺9 CQn>Jucxܼddw#VXᘥbJx ZD dt:/ʔ$@$@$@$,t鞼'' -4DdaR98{Ⱦ Ă@ 2J=Ƴ$@$@$@$@p\7 '=?Mְ ڻlqgsZB^f ;BO 7;?DP+$ Yj >kʐC^aв@R3SZX 3;߉BS$(m>;BҼ@ѨEBPa$!777LJ$@$@$@C@lwv=SeKO#yD$@$']#  HNS2GwS HDj=Sp.߅ *4APBQ!\ӗ[}uչ8;P -Cү_de/"bO  @6;4D@^pEBҏ@1 CA?IHB!A_\s 6oPӐ d$á 3i5+K r%BVW!!,ejw%-p@s(}93p˦@?$HHHH tVKC GK?&kr>Gx(+[Y @Hȝc=]viKaa!tMG="    HH o]PUH 5F)ƚye(*p00:#!ώap}U"fBŰٲfd(7?BlZ0\|[ᱷO\'᝗63|A "dO6 Ӑ ,?; 5@AC)ǿ|XƄɄX# 7 Mo9Nuttg:x<+$@$@$@$V&dp?jL)^>@_M]UYS7΅>722]+AB%(ט#N+fлP:_˧+P?ɒde+!C>Ju|q 1ç9_WQ9,I _o܀+WW0.b!E "HHHH`(h>T(jWjR1raĴ$@$@K 6wb;;;֭3 d<2A~N LY :ikqܠG[y<rkg=CրE00c!i(^ҋ գj{ -e$(E ""]9ٸdyդu~AyihUyjMFvG;5bixN7R"+kzFȔHHHH`YH(Z) #0٤DDQh$@$@$ FFF|e4f.;6pGj"E,f^g]-M(zr-Lf*ȵk[!b|FGVAT!&BSgL'?Q/˱jHy>#8{hw0겏wxi/r ͛eF`i+gYgLoDAFb |n}Jc4`e|2-݃VKa~.fk!84!';+!AƁL2T}掇 )4'wb&bů&Ex&  C@ >HZm6[̾K6[ &IHHH %1$7aF]2H! 7hЬI?؂u觡%f :l*XNӄ #⬃HHH&'`w/>y)ܛ*lؐ*e;02+܄*#HHH`0_"fנ?c/\G{zznw12X@`2p=s xD#3j)-a__x8kXFEEEQB{!&Mm Do}xxx\x ABeEbAN%9eIV3NM[aŊ9WⓓSvwR\;MMxU"ʼ"RլFzNx8'·tS{@ ~%o$~>^|pWHH2Md⡁롄DPxg v܉he @o f-U,3\s2߿y%w`ב386AC,cQWw''OFh~a%^p ֔G\3F@t:VS DBb KZ$e3Orpp+~FVYG2 M[E6XT? K-n *OLYЩg\/WMSst0ՒB]>(,yFϙ(Pih/Bϙ))Js @$Dα   5xX,a2籮`Vb ;`Nd0?x:6>֧ .WB_4+L.^DȐxcj   ??DR3At[M4-=!%Rp$iPن21gi벝 `l,u|M5qEpHH`2 @"^Ry6łExoN}Xʘd{gh564Yr`צʅRR}h! !$z&b ),HHHbAbXpMd)b6sNϠҧ^m_!<ԭ-:/Ոz51C]aTi9XXVf[xxk? 2IH $DpEHHH cAJ! v B0a쥸m&)w A<3HHHHRr6NvE-'M8e͝xo ѢPbw102ܣ-7^X\^eX^QZi"c r"M_Vw  $D xi$@$@$@$JN&bZmUTbǡBAHheZ=}Qل'O},Yb3 q՜B Ak04o / @w$:!6E^bDž#ql2 1wj&qL=`w1mXUXS9kgG]ޓ.?v\=~2g Y d* 2,$@$@$@p8GqɞKqm1_{Z2<ݺb T qkz\WY*-$"f(,,n,HHHH !,Ȅ ilW*#S8<| &/ Ue8.![>VªFZ,BeA$4vne&;a0 d4\.tttԩSغukBvHHH D̐VT{o^}22/7^>~ rќn- b3A 4    $@ y^*Ă@P DАVI( ӵ>^:HYgasmY]ـܬV4C.a' q IHR@B Ǐkl޼yZyvr^z%i$@$@$@G@\fi3KJJ2B]uZО xQj  H5cccKazZQe%a38xz&brņ\q*N{Id (Tw5n:Ѭ}p^^&bGhey$@$@$@${>e>jH"DUe[\Uc,lC)fJ4!<c9͙/--Eqqx!Y_#6e5VBS%G :.Ta).*Cu$.-B2-mwY> H= 4D|^̟?{IHHH<"4ͰZg&,),b20V!}vV1_yĪYY,(֖3Wi3h.с%v q^vΎὮ򷻟VF\]V$J@;GeHHHyAvOԥ @ .k\(MS3k^l“'>L9+nL>@'DNN$@$@$@$@YM7*Į3pp$b!/[s0_k0F )nG6e1:hP.Wiwʓá6TKS)V6;Vi~ [jyY4N%Lk$@$@F #{p׿5i2]un̙ޛ\'   nBKgA0bu AUI>V5ؔfLഩ/u?,>2ښՐ7 $q3Ma8aGr X\\EujAf t!7'u$\,W]Qǔ=-ZzNDŋS&m)pM|n,,ٛ~ | |pHH`@ v۶m8Qkmmm%Z&&fϞX @l0L n&5m`˿raay;9zOQ%{v9w/؊  D A<3HHHHH@Y^fӢO`TةD oCwCuXVҀshR]4J2r焥rK (E[yZu\N޳݌yW[pM0@D(;.uJ%"*+Tav LA⋱i&ڵk8?Ajb$@$@$@N@=,ݙ1PzfA^m7Y }G~'؁es4 C  !/mv } |hQYܵl38ڰ0vB Y1;<Ўû^kpMXR^3"CHHA*w?p22s?яaɼ$@$@$$,G bf|#xCD 3o#Q7eְ1Y p-]Pv~f8 41 HHHHH  D&r|W1-e$/(X]yV 8ISSv>;,֖{/ -CxZp?rO6kޭ-+*G.ƕ* Fnv_Pp':gp @?e:gSm:ha%,E,h\ ]G NҙnURܶdOɏql3"4Q<<|u\۰w.DODTاW^'`Qp>! 141 Ċxb N'g&5)fۅa )kA:?nmXkkV#{&N zc LJ3'2N'^؍c#! N{Xh/gg.q '1E|Ő5o("nk6m9RCz#BZwIϟأ-U// ̚R^D'2}.N "h 'HHHB" QE[B$Tp '8z27)a=t +ƭX[0+o "bO Ln_B=wKߤ}XXT:%xPRkK ;AW|;܀owsJV7pmgȲw/[kaƌ!cf   &AC]]]#gIHH% 2XV)W ˁ~(Vmn Wŗlł"N'(ܽ!??♁F$@$@$@$@"S;4>4ubutP=CMfJlF +d]9}/KyTX[m&lW^9>Nz' i4FK|ub*H 9]c%7'8 @:Ha !-IHH mI \6%d0&Bc5rV.(90LBFń$@$@$@$@᝞}J&kg3#7f_s&K$-<yFܹRܱ|}}tn?12kV,~^ƟWׯAzw sOq  Ă@e@I蝝xGoj3Faa!.R~I$@$@$vfY7H@)Qe[]m)XGdHanFܾh) 8.1$@$@$@$@Q#`u׺^F$-H ;zc{ 1溭jzF*>r]HpBDHa~Bm1c1d7U^ܷqUܳ*%lX}G  %x/HH .hعs'qJt5r.Jc;5ia%t:]'   H[Ros -qϵTͮo0s.ĺ!\@D),/ƩfZsdx#lz \u .[1.4opV;$@$y&h?kS_ <1|J\g5\}$@$@$@IN@ S,NiS?^uR+}gDo@3(xEyIA8)VCAAABHHHHH ,6E aQ&>9V";bIY&8g$eȐA1 d$ G '4<#طo_H'E]0lEH0 @\h#dK)ZIhưov ؃) :5SJġs @d CCַpI g.õ0"ɞjWbdoejOQl^-ȁ7&UBbݬ̜-+ 5kF:6m$OWWɝ& d'_NAD :HHHHIÕO{2:)Y4!C(ABNbG`iy-/u 9­žjA s/Ae~iY3.Uy!N;;L$@SHgCxZ؈>?c;444hV^ ---ھz wRd @BKPͦ 3mr17v6+!tZ'O`an[.02TV]nwoX,56A@0HX zc`5    D Q}[ll\|ŐAhyi"  @d>;22Ҫ*mφwIWWW9|gqqd O{^aA$@$@$2Afӄ ♁@h/j݃7NY߳gϮlo*/l8 @ ojՄ ~cX}J4mށ#4겹R,,ApA 4    HE(h;;{wT-.݆B>y_U_5:y48 *^܃U? +%G !/ε:  d%wACuu AQX LUݻ']pH^ 5k:WHHHK@0fؔWbtkJ\cn5ь_+!C%pXvce#RB9 $έP"!&h$@$@$@$@$Mpb> N{:-sG۰1|حB8]c3Po/*^=-~@vv'sը.4-F$@$@q4̜9SstAjnnFCC=G}XvO_~{X$ @XD`X CZ`o؅A9p)[KQ3L z-|HH2@?FGG'/3<< UR֊NJSv^nrBt\| [1_d^5|H$7dꊵd1fMYǤdSYvQ~Ce ]XU1/>xzNGA8  'FJG[K m`¿rWW-"/[xc(((ai$@$@$ /J_z0JT<[rInN/{YTJ qлfw/ʳK5)P'؜0{.g*{Ι;p΍mepaB!>> ݓ9R9{GNYX7yII$.iB.k9);3F^u$;SD O6/I.h>p :t?]{o~m\szkk+e0;]L^"رZh4+V\P.   xc!pOͿ܏a{^HHPkkV5fxU yyy|25&$   H5"hHes 鞝htՍ%Z|"/ tZ:?Ɯ|ZJ3544C.~ Vq6{ΘU}Q0# #0A?<^,YEElsW_ų>dyvOTݐGo6?h/!^)qa?ylܸ; IHH "l6ӵdZMxubu<$@$2 ,{?MMMؿR~5kySq3< ]=7,9 y] "hMM`iy7ȻUeuRV,*SClSTC$@$@)JL͘n*..v<Wxv+眡4M yC,xov>3,E ҢG&Ycr.eOHhze9"'n"AiY9rH{hppP+"&?A`>)z[Zl^Bhs*'bw5\2mwP[Lz]](*޺M&rěH=x[ܣʽ*-r(byC;Atw۶m())BFEo./ΝO~;IAn:.466jȑ#9曚cB$@$@So@2$ JLE pY UrS'p4gF6V.ڐy-V '/p HH2\@i3bu^ΡwZHo?=C44d5LcΪe qۼQgxPMNNCY:T/Y5یw o`k*>[Xiӣn 6J{bMYY3|i7i R㬼I3xwgaաLښ5k#`׮]ػw^fF,_r jjj&#hk;600~+2 k_&fQ`<3o߮$' GVBf&"8wX\}؅A9"9:lZ/ۈR!22-< YfD}HHHHLn<ٳY w̻ 懜 :\(,O1%`sNA~6w ~:FP5VDOz 'ڱl%fg&\ˆ<tH2@B YBDtM*tT[n ;z_7n=[<]0D4  ' a%f3Jd{i+G{?F\\F2w=򕨁2=a%g$@$@$@$@$~̶]'Cc.v 'C`w͜lf2Q<{Oꍕ4ϓJV'? y8jnþ| .+_0m*Q tV  "閄g>I֤#{oaѢEۓ\tEZx O\;vP0(# % D`ZG1Cqv}oǛBY9Yr\W ׬Av݉ܧPZZydHd;X7 $-2ul#/9r Eafy0<4+V#h6K+ȉa Ԫ2Ԏ1Nᫍa:`T8 h$@$@$t=mG5nݺax hkkCmmmHyHH = HX q= ;O Eq&>_^ w{z^ -!"j L؝ʓىIT^>lA^uKqYlu'p>g6Z/Uw㥎xm'$Ą33xw7j/V..B򊒊I؎T'L$@$05 ףN/wObm} @N$@D@ "dp8{O6<ڼ;"nҪ:ոD\F&ewLb @(,Ine ցPY]ڈ;_2}QypzK1QidpQ'm# 8AZ{wFѧ;i|Fa(5oO<9{aV^ Ɯ9srB$@$䥰!op<یߜxmkQ36V.Pr[Pm(>I̘1C B4NHHHHH<Lva,D 9}ޕ0<5^4ċ*쇈bx{/: *<:$.徇GCצ^˓_cK$@D ꂆ??644׿{hjj͍;vD%=a#²땗%%%;C1! 4Y\}O€^OS谭j)8oJȤL"l,N#    9<4tYj+yW0 b    STshaƯ->XS܈,\߱ʩXl؝n5~pVy˛ Xj@N˶Ze% x8jnZmÿ{q򢒟' (I$}M$@A ^HtO?L4".~)OU @@ˆx[OOgz?o^QU?끁gZlHX 2MEiTjm;NFܫ} XJieQ H( o{>VCFK:;;'{M'NNky9s&`Z">Z s @ b>SnE:-$GA̺kR$TZ Xy3r}Q;μmx ?E5QhElq[s)Ή `J$@)@ ꂆx h_Mi  `<@u,0uSIc-5wty O2ow8"Qs=͖ީNqtan\Z*^ہaIh+1AwMtn%"@ށD?YGT%TtxHH $hxq-3C !CSBNAC`{U_iE%~'^|>mz ݤȚ5yk٘OqNO' !a=IŕKpLfGzݑ{: OX {??v.ĽtMM {,JdkX֙e6M amL,..Faaal*KR\Vw|Nf>KKK}3mcaƫaqG&)p帩n rtD\y;|ڶəeSQ {OmEt>rbGR0hק'8ix")++4gv/"!meegQ&044sXTT;>Ug\qr=FW̙qhO=O$@${ mq/⣁c!w7mŵk8?Lv[gƄt*+0?^%<}ܱ[bڬn;賸dh5nk@AGIH L{O4x8̢U|+'0"* ޼e0cZJk;#tuu̢6l_+W/U_cd᝞q ۭyb ccyOK6yuDܸub,)H3Ii! xzW+>Ѝݸ6||}@<{,²Clr ??P}O$@$@$@$@$BښQێrpA3QG'_"z&Fӳac.< ]F^Dxxg}$@$<&hȑʿȋ_|Q[k7 lݺu)j\ _X壣/LΝ p HA%n=-tn~o3~s]#{n\;_b"6hO| 5b}#6(.ޠs{N%h1 4     `Nrq:<6҆>!)b= n@0L%0->N7\Ԙ"w)sOP@IST5TMĂ*$ sAJO~{/jD֭}݇ļZ>-Z !2C _EuCCC,h7&<ٺ%jJu\]ԯGAN_TD9\cK CQjԇ]K/XT]|^~$!%D \4     #`A ˦BL}'BpX94?t_H dX"~ύ(/3N&+de ciq=~y|;L.]pj~GǗArkc'LyxHґ@ ###ַo3õkkEccadɓ'Ԥ-gΜ㡇¬Yz]]Nضmrs;*+i\! 4' 074#aċ`{^κiꚂ2\W׮<|'IGDM1؈r/[ wD9&ﳼqHHHHH F,h89څ=ʂ`aX_ mEh!L'+M8* X!X?vi)S7&x1?Z_C$@$p@ ybxmo I| h7ߌ!7#;G"jGl n@h*/ם'$DȠG!HHHHH`zL"Zf^<~D3pŜuѪ$@-y9"ۖ^z_E<׶/ԋ-G밮bqQ<"a'(h"PE$@)B &ݻw_A`46lΆҗ+w?>].۷!K/{z!tvvj]k߷"Eqq!n I@1HH C ݇x.~*G~v ) _e>8!%RCQŨ0u?̎ OI6ucX,ɟԻðr1Svv6D@!u6L] $-QM?oYVBL\I{=Ģa\Ƣh)„{}Ϟ~/>4v'O߈C,Lt$l5F$@$9.h1|ؼyp7{6yWBA_-:I҅x`X,7,]~ 9x O|m6 zn_f'K#-864iK p P-7; f*µb6'L A,)=$    H1 N2]^6+wQ" cϪi ]h[{&un;OT4esațAE#'S lA 71GzciSs^")ioUK ,ڂ%?(d9f9Eb: Y!ohsjg/'f !ĠǏ D\!    H*\v܃9 A$ƺ-Lͦ={m$?Óٗ3#wο "h?=柇SȤpWc>V`^xOz[=}Gew܌_@\޳鍄 $ ҥ(*b"\^QEE)!$@H!mٝ'>o9;3|1Rų  11H@ yƇ! rAJywZ㟻ߓdK%g8\NiP3 e)Րh:aS+KjI1  X<4&V?NjS/*Ĺ\0byr <ǮudtA}yqأ0A$#!&bg ~_98|B4qІ;q& d GIH1,m7W?,ٷ7+o KF̊Izq=YL ICJf20oRUDR: %%%(** F @ c BuCU5 kzx|MM>oBb$Q徕ƃvI Aq@<2߅_ox|2Nn8,V֨i'jTО|+wIH / =mqP$@$@N@1HH ˥nT>a↓xm2.!dGNՄ KSbˌ)ۛ[SjG\%VP7ĺR|vxxb!"HHHHH w؜muwc amp@/N]fH`0N%x2DBH3+?הl! 7?@9V8i)3A0  tr0$@$ĵxc!ǛtUYᳲq޾m4fFuQv?8})LB4vlTYsfz=fg}     $ԄM]p'{o8K$|2aYO#dp>Z:n"&,Ƹ:ܽϵ |ڽ?/0~l; HC$@yKOr`$@${D "3vNCxy[# ݀5U4     Eךk=} {dž c :ꦕק'07F<q/\xzCy&0b"~ N;]     &j#_uQGQoTdzuoljI$k>j<8b h^1l򩁼gLoڢ ܥ<|nqcb楠!&& @^_---]AHH %A Oj^Rjtmo׼1h'B0&d̴Oҋ௯mŎa/|{)Kbr}oڀ}Ψ{aU{1מ~(*-̙ Ϝ_yz U `@qq1BN$@$@$@$@$@  nN[M=Ov,bj];KDHLSАàzAKIgTe3{V=o-UlSπQ@frF1 ?C.h?d @~&b!xf^ĈxhyPj:L L_z!ŤB#Cee%JKS{ V7 L n{)5XY/bk s| HHO{ @xRdOSWO7^mۄWZ7Hi-o7Կ~g7kXI>P;s~ږR>fIeWYR4|CSx&^#hF$@$@$@$@$@K?X7ocܪ:\}ș*4̸yx/!5ΐh:|q2Msp[k%Rno@{vD̘B$@@ |=@$@$2 +Tn%?-8ЮUXݱ5mO(yci̘+{ALO?< 5b'? *7^Jj]yyUiA2fXA1HHHHH%⛯އqqÌ0ttܼ@K*<'݂^^s54\ Vn@ z.J fճ WJ# _sˑ @ H ÁNM L-H{{muwQ\zl&}J0PЃB/wc^\6X̮ G{B+>oS!!J̞PTȈ{ho$.ftXv/T+AEhb3d@4{VŠhvCFzI+s &m7n|hwG^z|q= U&!# hԸ+5r2n{9~q9Zݝ1o? 5BRIH 85HH# n7\.+1Zz4wC=Hi«i[ r톰(֫I9kaA؆]V&wT[Zסc+eڡ k,M1B Yxxȇ>iCrsEO "d#/}     H+>-'xa4|yg`%wϔjXxCtEEjx *-s-IJ%zsbee @?> 5 -EU',^Z+>܏NU<]fP7&`k=`VRj%W6㇭881q[ش7?ם9vu +a] v1YAAAzb60UhԔ""QDȠ%b` j""4+S3H=;;[e2:%szR+_NYRC\p$t\)D5AؚRtc'&sHHHHH yvaF< 3$% DUҟob(2 /[;qc%n^f   4yb/IH e"Zlhiij<3\ &D@b){|G~U@ܐ.@CQ9>I2W$M?4ؙo:.;5ǔGoH:JI E ;88;M$krVJa~Ըﵷkue  'C HIG@ UI7: H۱y_:^5TSǔfiUh TL&KfT/?RA}yQ5 ң=d+y3) jBHՎV˗LR㭝1Eqp1MU|q1v7^vD<2-E'L GHHHHHEOV=_n[;]+H0ʂæ V\dW^<7LU5zIHHHHH 6OWΨRzc4Ʃ`@Aˍ}fP=qRАP=dɨ7WCد<6\=甬?;A$@$<$@$@D@ !Ch%0u%mv7Om>W>uSujU9B8vTiFV{cPʕ`U@WXpP}a!TD K"u SP!YiбXl6X=WCUiXF$@$@$@$@$@${U{?[mwے1;g.2QRp?hEआPcݛ'/`?8|#jv! G`x%N$@$0Dp8сVްڱbӊJs)fC8LpUP E*K&d(3p/S^ Â>jDږm&?^`JH $]’)+;w8㸙8~֨2j:^1/4b"dO EEEg     /Xy0f)v!w?P&33;Zv0cm?>};fgC/މ_p%h3/IH  1)}ܐɏa5n^ށM8ύ'vUa%ܰwW׿r]A!ʌf{w; &V`ZÁX5;79xڲ7O} -p\uJT 2& @vˆWqvFnV^>3eQD^r0Tdd5ZDQf!I,'Z=<6 ~xSR;|;|ܰOQ?ÇlHH i4\{غuk2}H{W^y%u>>Vk#sG [[uq;i! F\F^/%!-`s7l}n*$B"  7ņInXГ}ez) *<P:(qIq۳[Ԫk6VFWqz4f}KyE]Oň/4 2fiugNŋ7VYp1X< N{w,)3ZhB\.rei,?\YF\rMO@~FN$y;L/^< oTTTŌ$@#@@=SO-k⎶D+8^h$+\4r,,~T+g/Jܲ:O?Y(V\3Ԥbf  H!49!L2IMVyD8]S% ~u \vN}xks[x~ؔΉk_)LNJ<)aB3Q7XoVM]ϯ&|sdܳb'l Ff)K&(,\C&azx #QEX<KgBMN[gT}6lovC9T N/FaAAԲJt_ fbB>3,Y(\:͵1dkn\fϔ|nˋ~Keo<5 7 ˔ .ߋqA[* קV6Di糳`x0k D0m $!'hAvNrڟabF%jC_⦘2HH m.hH[X  8YM1t|+Rй 3PhPMT,(^PnKTWw(^koVq:>r1:;b{@:.iP g!G7Cəu N㛯݇ mV2r&fh&512o5!C\\ۙ, ??erm PF̍WFymo 47б,d7Ѝ5 d=- IϮw{jlg!+ 8G@<Ƿ9F_|vܶj̯3/IH@~Ϻ =?@$0! F#B]^͐O 'qʢ#2ǃ?N R.9ar2Er.ohb4 9&    8hd֯Cc3(6!N L$0je;åw}9gD_nne 0#CCq%n_`ٴ6 _}qb12HH`h $3{hIH + M:;; %"n)fӅmέϡSyeHE`PB:s9&i `1,#PQlwϙrK~!vU4Jr+Ct     #pw+fMZD B&zI#{ Bܮ #K^ }ag}ޠ[W;CϙP6!,vH<2dc| /z mwJkec5V5:nP n7wI w.=ȝ `+>i!ۯog`T&g'nXp&Υ 4 fttt@Wa-%/UIz͆M67&!)h; @xb˛D UN~V}ľ쌯-/.; ~ڊwaNt:(,(@eWCsa6y'    H+ۍ[ry=n?%ya! 7s3T 9DVP5dxᣦϧ_W Jk0[9GW @ 맮LxGgϞ̍- " "0k0!Ae{[p׿63Co*闷Lv0iDҠ7`F2+Sa":|Jsd!H02HH 2HHHHHH  laŽl &KB1{ }qf.o@[T%n8ak <4'9uJ(<M԰qeQ{M[q7'\cѠy@$@$^&hطo= 1.1Zvذۊck ¦TVC9 &۷Uj%d@v6/,(D2T(!NmG3]an8k&̦a֭7gIHHHHF`שqw>PV#-V¸݆/t KeZ  >v"j7tӐMwHF6-8X6vb,,ĥ~2@ 1N݊vOw!4U L.%j\bRI-`bQϞFm***PSSBWIHHHHrHHppq$f6nzgk}NNn28z-} r"0 w,MZ8`ibP§F\:w  !$0pg Ub ܹ3n41zh |i nҤI2 it:{˄6j}٨ ; $ a$ Cgg'$i! Qw8ȨGMI_{{ay:ѭK(68vLydq8brDe Oؖ?ɻ(GwWBKLa$@$@$@$@$@#=Uƥ3?(2vAga&#}2ّM}$ _)2%AyS<6״h]V\m՘_7i@: ^|ňL01|hi"N8 k_<2{ʕ+hn%aժUK{pH`d/>"uA -3v8pUQouL'ihMZQWNr[<:+)Gc^Մ|yh:n[;:]+Dـ1,R$ yp9     n][o(i!&N8?|;2+g4.o@[$zV/Jt.oY/ ^t³0RWvuC~?]% $@$@G l{{-)c`'5kDƎN·| .kJb`|A  2TUUi/N$@$@$@$@yF <83)W>J"<8E@<[T8N_KcQr{?pGA$@YF -r2kQLҧnjjBrBK.vÃ>J; @ "XZhiiHH 9NϮk'Iu l@Ӌn wŕ>ym.GRuI‚BT1u2PqHN@ ՚!Y3Q     ${q[Qx ."j@+ #\^ 6KpCC:lAdܯDp"y+ɚG2 Q"FA+-{ 4w:y M W…r呡hQ~TLW툐F$@$@$@$@$@F㛯݇ mm0Vƭ(,pp38A:^hQbW qhA@zФz<\On{n_ِzȋ0HF{h(,lRVF2&mݺwFmm-&NEsH`x v K1$Z^}"%Z\]eo{py# zBΠ<1k%*M r{=utF"cٕp]/hM''yEuX%HgD㊫Qf0@f(1C%=4H -A!CHHHHH w`wwk!}pqKZk;n@LH4NODd%.1ΓS'ΏOn^%  BFl $D,3ͽ4 0H"fXV8N|9,g#:_,8Mİѡ> 8?OPb}&b[\g; #@2ԠF @xq y;,:GyKcPrH@"hu?BU8^Kg:4軈D  $@$@ |6ɖP{/9}̘1vs"7 dD Fe@IDAT ѡ (`yֺc>ץhtZ!a&o`:Ňv Ä啡f";~(̝XHּ#BB>D$@$@$@$@$߱7N%ez%`1YKbeK9M&>%[-l<Ĉ1D A)((:3q9u׼tڿ9n^f  N ?SO=w&M=.׭[׻!w{w$@CC@BEAD"`O RBBKP<4̳@APŐzaoE `||ȇ>J₉G] MpaSBO6Xr!oO-F$@$@$@$@$0?y7='X-']3&6HM&"k #i?B8Y$1P.y"~qy{Wſ;ڙHH D`Xrs1x׵>jkկ0zPYfiJw܁ٳg8"߃>M;6w {`"^Hi#ŤGI6 ;A )ѣ%czC}Q9g+ %Xf']!\4=Q-H+BRCNFvHHHHH |~o|#nR%f2A'c܎2 zTYR#Mq foIcIpI QUT|ރDe2AHH Oߏk|Ļ%\#<_0sLxuu5N8^î]pM7.Ӽ<Ȋ˗/\XX zqp*ȶ1ĭF ܨBj BW9KfA% xFi+.M`20ҌdNj:d2l6kaHHHHHF_[lFC< S^\1k}ݳhuvۇ-荙$@$@a4Ȫү{Dի`^A|A}%9n:,KV "_H Q;aεXۭ W38mTKjpM䇄 :]a81     5v[x6m5%WRj밹 OYCB&aJFJO!6j ?\ek#Vi‡ytIH AIy&n3&b_5,YZhbYzWG ; !^ B>~oh Պw۶k֬5f(LuNxZ, 6^bT2.[-L\d&fC,E /VM[zk;f/7ʖ4 (4I$D> d!_L~f.ŸO|^|Զ;&җw{U(1/10H!0lϹ瞋ӧk͛7k]/h?Ig}V%%%hFőwAգJ(LXZu)_x}TᒾZKY̼L$ L`X ~֬Y{m6Z Gp>'NĊ+em5d  S!@ @ &T`WTxq^]-xm8fF=>dTs}≝H[н^k3ǻNmYL*Ԑ3,T(=uܵԷ?_^#1+^$(L*{Qb!Fohλ!c8o7L4?x'~!jժtT:r("\#.W?l#>r[[{=,;l,.C8B+ۉ}s',BNO_9 cII oGIHHHHbR!}W|n2n[rJW- V[=k4lN/Ԣ|.G䢠|ˣ&'Kezܿ\W>㿀"!f^& @>6Aömp뭷b̗c0n2<#A fnh;VPRBU.>gĊ*Pz|53q PDI> ż$@$@$@$@$@#@êLik;࿎a/m < Syz]rϫ4h#=pӮÍZb{*zc'WĐ>q& _[na?{@$"PHDޕvu7ފwZa V!$FzwU8obR q |jݏ+.~ ~VA&pʳ"H|+{&y} =,OyPL<uWpyqmz4;e Gݻ4L=! :N_#aԂcfc7u;ۭ[aH<}錨T b egpLa}%%;F$@$@$@$@$@$M[玞!/sN;2|ޱevo{p8y"a'I wŤ5/݅ߜp%7L$@$O2.hp:hooeX]] ǸA$@@@ mm;hFZ R[v`9nc,@J E#C EdGLP/]ii)(dc-     Co`ɽMz+q̘dž{}~1Cˋ21hBcH4?ǟrRZ5!׿z/~rX6i@$@D ゆ]vE;c)f  vN:$,[,~! 8& H޺ߦB/OZNsб<^D[f0k%dK4kha.c"dF$@$@$@$@$@$ݿm\;J-S9' {ad費sZ ^&Qudxhf;sv9O;8x_n~!:YKyH @ .+~x>wbx衇 .,"SIR%`M:qGlx-cᵚ>+/  ʍlp z]rt H!Cqq&d(o8IHHHHH _[;v6ƭ,#7_@ĸ22 $N{U8N'>eӓ; ʍfkqCZײWpָyHr~8:|_駟g=]6EOY$!&p ,_3j+=]/X=H](ԋ! uX2j&.t,Q3&WP RB YxX@$@$@$@$@$@QSڟa~ug`ݜry"ߊ(1"g}glk}s吠AؚFvU̶1qojąweR3/IH dC^Nwq~ᬽh7 \y1wɦH8q(\q j"63@]LBMXw-1A Q F $d 3      \M'f(P77->W3LƊ@0 2\@F6? >jQۏ_sJܓ격Ow&{ Hrxh:s ~<n<3Xt)WUUUJ.'M3' ZG?w}zɓ'O9眃ǹC$$ g/]^':}΄nJX7Gzn-*Y|ek=}=qt}E$@$@$@$@$@$6{=_,3űa9eEZ͙`'H @`LMv" ǃ'Th^W:t[q'!u+}1N0ýds$@$~&hxشiAۇ|P6VZuP击p3zqأcI$`a\'VBO 3CNG{3O,9҆Ys޾FQQ&dU @jdm'ڸ2ne*\yuٿM=FPq ۟ӎB _ ܁i0]b)J# %0l3:馛e˖7X-iڡn Xc-jTbv ڒċI09| ΟGM 0ZX !w:s @ x~`6>wt &͛ ں\ rx=AN 9ua qg]HC\ګ?~,ᔯ⛯݇N#f{͎N|g(,BH$E`q7bΝY f8;&+:(z꩐4 ! TmێGw]3[wꕨ @c R* Q;O: ;0@r#cn     <lj_[cJ(>x'UKA,MEޥH#!QEVMd9[ǜ ={?M8;.I_qͱM #0,˗*fUUUU#:((wٱ4 zi6;11pٸhґhTH 0L bF$@$@$@$@$@$pV\OլU =Q툆i Wؐ;d6?&D N̜hkd2>\&.{kj|{coـk_n[r*L12H@ `O=T\|Xt)***"FN8HvgM߲O: +FJL-̾暲XgI3Pn@e0#WxެNCqqA^lr-_2\eDƒ'[rqxD>C&{7LK?7\N$;twgz[s k;wmdْ-o;' Vٴa^m)tB{ (lze0 ea$@ dO;voٲ-UXòƑ{'{eI9#@bn\&P_~4ZZ=zL= 8vd~47gXGΓ0Jhc@+>ix?m_,C;f5WT>2ޡ(d4477D0<(((}7- { 4[ d%M~|.uYa7>3KzMMgR˱Hgwr#ْj!'E2\'w _[hooϋ`mj]slk52;'x6Am j`@!ZdFqP|]k?Ͽ˦˅ 񀆁)onj΁O|Բ;k}pgOљeqY2xA2Ȭ d](@ P(@ Q7/{BDJO'Dc干|J =KIIZ?'2/xYfRH;[xHKkIxfR5uIku-D)=ezB%(0rpIY>'v }(;5rpfg{فDY%WHaRDcv#; Y.Em?;, :޺- Xmi9quǹ9ȝ?#FxND|T[[3f X555{|ĉ;wnb<12!.K---Neddx+brq6 youy&'''轔_|ѰU}:K[P㤈_ &QǠD\xWw+|~lGU%Jn~~>?\ u;-- қ-< Y߿ٹRl}˾Ig% @dG4 H<";ؚ|xޝ PA 6ܺr16~>Oc=l@ &aUT@;n W:Ogjy_'.Fӆ>ƅ@_N; |G8hݻ7ohɹX hh؉1(`Co0TQ: TAW8`%yն^hS] P(@ Pq/hn/?{{UG |=r>CX+SчP# v2.Jf~,v7~N+~>}3\ ͖A|A:ʑD(@1pW׫^ƠPEF>n|&;'rïkq2x!;;yyy(@ P(@ P |˞@FM8=jcTXwفݒd,F竿9b̸~+;pGa[K`B =s>}:>w}_: HOOZCi=N^}pah9r $N!QVb-V7 jRV .c yLJ( _322QbW{uW8djV9|Yp(IRT?lB-e-;ɦ"?UF9e3-(55WePVeQ"޿p͸ӧQs._܆=GNL}@ ㏇z?8(lXִ _J"=?S@-LN@fb l(@ P(YMϟˏ½'\4uJd'nl7A H!/Su@fg.X(; ҫ$#ϟy~yl|zx06WW.(R4t8(x|ݼ7hIY%r.-\qp'##Zv|(@ P*aܽUt]~spˬsFv[J\6 P 2׭͌}7 36r3vXf??pׯAo,nql_]@2JD DJ[|ZRD c]PMkEDZ$O NF P(@ DV%N:.tV!YϖXce~w:Y|na,7GsUC͓AS\Wb9y[N%L#sHQ=dƆg|s..;n>\8X}@(.كgygy&?xh4ay5 ;z75bQ'x.<9A t;q (@ P!`_G'a6d*eNQ#W=_ K4> /o,w0^>q-W6w P{ lZ( %ώ> eyQY}hqݩ7(@ D%_ի=?7ވ F"V6^PP:]e< Q(@ P!e Ckuȣlh7P, 8ф_;[Nplv1;',@?n@,'eP5-e@(6@-ϼgɑ7Wnō˞'_](@a CR0{A P܊wC[|%52=?S@T]&_u:,"ף(@ P@6q@cd`[w7pՄN# P1ZXo]^vbt:[2S1pOE\F DW[ѩmؒl3iؓA}5ؘc"pb[k0U>GDPÄ~xp"oP#>~s P@xz-V7zBct8xN5IIpDxEYRB2%_q|(k(@ P1*`v(. IN{18%(b957(9 &EDo71F6+ t _]9>"qbQػ<2N!X2>{M#_? /2`)R^ #Gd쉜4رc&M^pM P fk*V 2lazf9+"; AI^IOOO`6}wR P(@ P ,Fݓ!ԃLctq6RS.Ծbɶ˻zVpˬsq޺$Kq) Ę@ɎS(ة׵ Q 2ه65Ba+M_6~=W<9‚A)@@_q)O?=˗/g@CoP 1.|ѰWZ!V'h.9fc 1Z-z'XfQ(@ P'jg ]N'aHΠPʆg,k_ dj-M}'\Su2argB*BP>d!`u1 b>^&\"[F7^M}ޅHaIhoT|P  r^z+m64_uv?1pF ĠiDz-xhڃtu*(ӉvG{Pcq%Ȑ#R(@ Pae!3yވP{ h4zaWLLO=Iye ۋO]\-l-22K\ c@d@C~6\Ÿ Ҍ\ܺ| -Jbv']T]\?w@TdGy< d0ƻヒ5kCii)P^^bC&kEĭRA/_nE gЉK' Jdff"555|(@ P@@VQs@33 5L ̆7'ԈTϡw*sJ)7Po -g7 L/k܇>|Tg P -R`y_F]cΝao3du~yAQNapvHyzL驂2 tdddd0[N`G P(@0 ȫ˫bQ9MQ+aGfFpܔ?7կreSp(3MI@uy|Q9\rG:А.5S%.ڝhA]V1[2SVne_Fe g݌߬x}nCfi !(@ U * V–-[:WbH`oTŪAzbV .c z. qE̞#O P(@ (CՍF/ףdZoƂlm?qotnu.lH=?8(`AHq 4rr2{~ VmJÊ_|4n#\9"yQ:h'2 9iAxiTj+2BUr#n7X?d6fZ\H `@C_ ަp]XٰWA51I*,(GCYznPcp h4O CJ {S(@ P ^R0iĸlD: 4Ya 5Zk0h߾ޡ(@0 0SHp7L;YW׮U66/Ef*3'ε(XQ hxK{K88;u[MANӱb6rS3+ M@R!33YGuhZM P(@ 8]nl3V8f+v?bFy>sL/[[jD]bG )cdf&-4$nSf gWLGiF.~~߿m؃>||=*E (@_Q hPY_\F A ޯ݈j7@5D¹3LȠ $=?@ P(@ + dPZɆt tz_rdN8<+{|Ql(@`d/Y79/+OPNԵ-Z5y8db0:@0 A4w3v:, g+!plR2)ɪJCtIIIC_kP(@ P0t M(յՈ+"\-jK?q)^y@pܱmB֠R-}ě(cf[q uYx_Dje͟=g+&/ٗ )@`@C{9mki7^ YŸr) To{S^q©̱)@ P(.ZSjb^ɬZ:Éx?& w~wd?¢'H:-ػ#([@4 O@+2?8jO|1"hT~yX;L-|[p-ڗ (@z@Ckk+x |3\ﭷqma>(0Ӂ[E=:FibrS3uv VdeYm(@ P(@YdvXiqъl]LY|q <}T1̠huM-9F P,;PiٷW?G k1Bp켁xd(@ J ?N:xf>DIF.;vȓ*+&J j <dvm޼yOc}Xx1>\OʚFw}7^~eϕG(@N!U-V7F'dʹ8`kFyN f(@ P(@hW4b+ЦF류cи}lK=e'] G~Fz­"(J(g;>'}ƺS16HVQW[۰W.}[pe@ DUe˖^Ry p8czuz+.rr-toooLJ~EZ(p˱Uxz-k z%ҠHKK^|d(@ P(mVƖdG{1v~ֽ#$//21T|i-sbbߢ9I3̓ќ7M PY4l 2`g ՙ cG˅@ DҥKI?8,ş~u{セ]x -tY67 fP'%)xp׌ gZFnn.cR(@ PG X2wˉV};`3*g3nb0w~KZ~y(*wPm']ϺeLE<}; ;P1# N֭e&.C1ap Ϫ}0f̘-xZlǵ* ,# Od@rr,1F P(@ P@ 3S8ϩ܆[W%&! 78WO=% XNy-Γ@ oLdYfr'P+ntɶϱP?x%ĺl@ DE :mېm)@ P qL.f។WξLWܺV--DbMZ\Hx@̦з۷gАov~_033scp Ēxz-ky?KF첡!H=?!Q(@ P@O,W,&|e3pQ 2A9a(@ [,24E^ WS[k > uQ9B`@x@ [?tرc {}; . 8E)/E&׫ P'%㤢IrFf ҃EZ@ ,eP N>)-b jW* ( * /-#1RhRRR< 6 P(@ P"niӐ(Y\n7ܴ/lr!(;ј{7+KE#\ve8묳PPP0I6Y={ח7d) .bQ`ow;Y +qH_)C@V{2h4eL(@ P(FYkU(h7_޾nx?-;5>J-+ t+-b P@eu8DZ$Rou]_,h>;g+Q ګ~#{طo_/b>QTEEE썍ۿt{p'(K[FZ|Vŕ0%,1bdPIFF(@ P(@DhWgi*y8vK@rHדD)g_=(@ P fQv V=YkLv~b1;wKl.a+شY}q!(Z[oŮ]q\8t爅())wމKx7ݐ%?F)sN}Kiު̭}|[<%FySʾ!(m4Oy Z }\۔{w^p{'|b݁m% @dG%|nWo܎=ҏ:cWmO_oؘ`贉ؘY2/^>_8X/X)6 P@4L"Ak)G`T,9fܽ5[{ZE(>o.!999xO>`'%}1+ĥ^ y-2͑"K ~C/SM&]Xٺ6mԶҒ8)o,\ hoojx]I>e"t`Kbo}|nlRI8os{j$%`7-<q @tGa \s{#F`@ٸFָh_~up_ܑ*w13;@%v Td a(@ DCd] s64-& ]vܷ |X!+[SPv@(cF P hM!p/S \O<uRU>F" P@ QhAe#~_y655ah⹴y dǭ;}~"OQj0'VoHQ~<%%HNNLy P(@ Ph'c1ao[=nbߚ='O\0uI(7HV &Ǣ(@ 01a 1kN5lhwnߵ'^\فbB)S@^}r^SFCq7lzt91=(ʮ@0g.01DVfSkgMl,o?(yܷts;|m`>g=s;|Gh-=P)}8 aq S;g -]Oqs d a(@ D[S)E{ܾ|m&:?䦥xa>z^.,A׋(-E4D L@(QQzok][MЃ*HeݖσFT{2$喖L^o^:y߀sݏ#wdV1e ZoI^^d X,H&k [x v{YYYTF{ {@>Cˁ(RvKL4Xdo^GČgdµ(@ P؝#?GJ|6sqt(;0R.(Aq(AqX/ES;: 287E^ۍ/wuPmj}|(7'MEsQgCt_AWi{n(@ PMYoZ HWp靆˵-!+N9igZ;l5)@ P!c(Tw?憚_>kܶgZy^\NH \$XVoͶΠMJӰbA"# m6 P(@ P@sEίwv)Q7N;,.N` ‹)@ P`H&ɀ!EsIF.?&<$k*swλg᷿t=%dC[(%EPo*4:;Z(15E1_M.㫗a7nZfmѷCjA9n wc(Ut 2\w_xJȧz {1!qzKưm j?Kt9@dc8d RCԜwYc\ֽfy F\B P(@ P PeNqe4YM@635CB P\*4jWSF+cbN)nb v;{bsS5%(eG[͐υ4YDk]%ef0~/"!3P6bZ`oXUFwP2J +)"S ddff&KDМ(@ P_M|y;"G'R甆jnn񥲿·S\+zQ&)Nhd0ҎK )~)7H &\2<\@ZF3M25gOƄe0CВ[%"g-Q(@ P% Jk(JiMOVk+0hl@)ZOF Pe':HG=wBۅ~o,߷׍=]ȦlAȔd"Cl !@q'򀆲2\B9 WM9"[tZl[(@  taeb `J\- 9h=N/UK %PsG)@ P(@ 8DZ]َ԰NyJ<(fh1"51a(Kvy1}(@ PJe' 4#eǕLī԰~jM{b\Ry2N+d}18)j ԍ[@gae{ʠY&O;3Y9ҽр7bUn܇ Ÿr-d ``H`s(@ P4hlzv3T|eNSkp8\0r-,79mn0ۺ<x,Qf?˚x >%.}yrl6 A&g@ڻ\JQEg D0E&%J\Ym@>TФ$Ckފ hرc'+Cuuu ;2+_ʠO6 Z7D fC^+r}@)))iԊ}S.gF P(@ P  ?yb/T=oށ 9p466:R,ڇ "+ 3wt l(@ ȓ&~&SQT9!4aᬲc01]4 ,{&g?᠆1%<XNeBv MdkAl;Sc$z2EMfe;PQzmxL1e.OF '8h0nJHY4dV#oQ(@ P2,dfCl/>Y 2,^/+rdVI&y2TVV.Ll6 K|j֣5:W>π>%m.|,d& O LS(@ PB, ]`%b[/\utXa2 ~2>\TҸULsoA|W09 qbDzFz\~o#-w[1QOy\M&'xv{_WV+ebcbsMmLjJJwtt0pIie/Œk>2);Mxv)N̙goj1PQG2rv<|~4SZ6ےǶ6y"\rȷơΘ]vG4WU_wu˘!϶޾\a] t7JtXX1O&eSd?Z,3(pR(@ Pi &~/O <YފjCϗeܮRU#={H_nj=GW _;q۔s0x 68O%NfR92V ȯi^a`AĞw?yx)tM$×2^߆`>G/uՍulϴP3 G^=p/۶b .-: 5sy~~FC(/aMLNN{`4(Glz}_ $dee|M8ѓaԨQaxrx5yolҮ,…sq\x$b[@y"X&#gO P(@ $hq 'ڱ6Y7 41 B6 SΌ Dp4x2BP0C϶yc|z^ME^}y'N3J ||kIo t -&t#H~6klw([4޽ۓa߾}Gp?12 ūVKgE"aZ~Nl ׍lf)@ P(@W> hV` TQQq[|q.3QbQ"N<ʓ*'4-TKW[n~j؄O~dF0f vn^7X .#|( Eˍ2QB4 2+Ò%KCMU#t>#3bBN.|\6s"HbK@~p|"fF553[Ҿqߵy;Ys&VkR!wl*~ZIM$Yo G'm(1aj{2NŌxrwr x;8h-oU~+ T94ϻ5[&RD$;jO#^ҍ%=SQ&'b {Žދ2'AOVy$r6yT)8tVFAZ233!_3X 7(@ P(@! hedBjfesњFԷkq&8#<64ݫ_ASk}ݹlŌs>28z\yY^4r=mr<Yp(2#y GSVy eQO X_Fƀ1nu{}|me @ww73u01/_҆5YƝ#EōQ M\PDPӕS5MoKeln; *d-~=HV;GuK_gWiGV珜sg@29 20D%RPnA؜YGՄep{(@ POl|Fv]]]^/`NW'P!) Ŏ@C33։,?f ~o۩57/cq^qPvdٮ#ƕPuܨVQ>Ma='2سgk_~ #: !S1C-V2UXA̐ G@Fgee )UcXm4v|35cL!.]0S*- P(@ P@@?jmo⩸KLO :w(@ P1"Wr4fR!ǩY W?tEx~Rl3݌ۍwkWa}.\7]o*Ɣd}GE;5-Za9+2KXx1d=mYƌ3pS`珜518 ~kԵ^KZsJt 6 P(@ Pip&7MA33즔*8 S<(@ P`F 4 2AmSg7̔t\S3;M_YZpwKpF,yX7QbBi~m޶ pUFȋbٔ/}y2޽WT W\q2(@d7aujmO ˑe`0kOZŠ(@ P(yEڋ> &?&"JLqfT̊,'B P#av$O'.@?fg8] h ;M~Zl0ƵcĬ thBF{L|oA U UbC  wߠ%&$Gee%qU箻  `jI1fٛyS(@ P@&'nM.$M]& 3&+Y(@ P" O.iTKq&kIH,'#G ^ V?Mve?1t,<:u`A 2KV6Dz?ci{2E(!3vŎ@| naO Ȭ Y]io}-A^*3o4FeiC P(@ P~d Z}3ܙ3p CCCC?]2(@ ĉl q7%&faK~_]{˛ {q1'bnՍF+aj/H2]F{+=4O@fe%rrrfw溠7\(@ P [Z֗xG3kxh+< GX' X*H P,;tmV`K_G'"r2Xn oS(@ PD~^q $<wM7AnKtx5 G.VU9Rd_ ԉR~,rF%s$Ҍ]f<]u뫨|/]h9#vd#b\`@C|GB&"j+-]0Wt]JdeeAfhW^ jx7B17 K P(@ P N+$L O}Bf99:_~<ɪ~/[Dhj$C{A PhAl^4 vF^~m,ި^Yn݉HJԶ'w? &7{fq)@ |]øf_C5tbLiAeV^@(]zш=}(@ P( d=%Lid1ݧck:TRByLF PH7e'sEZMx:J_?No|(W}S0;bdGy_`ް:D0C=33r(0 XxdVL{̡ |j;qjjO P(@ P wK C b53Ew=RdC^o_vP@33m(pf(ن,u²7%˒qf< /[Mm{:GoLnOC =_ФCp[ //{yp( mOfNC~~~ăL| TC,mQ9" pV?@ P(@ P@Ì,% )Hۧ^ǟP0CXvG"6+fގͣYS@fGr  x|ߘ'__L\\129Z)j; 3g[9\oGa-y;v@ss3`0y &3@"/;Vذa3D]]]Ǐ_xu-^An/YdD?H%;AKP,ĥ &ԣGCu(@ P(@ $f>Z)C+S8=gHu{: Ҳ$K0aXQYY7tڢmn(mɁl͊q71@4m'/ z˂~pJL: cJVvP!338?{w/GU&~ᆵKBBa',FA¨GDAQ+8#8~|yuX@a% -!!Mrs}SMw.ݷOuN>﩮[9c㖛Gޒ_22M={ȏc+s1DdMJseΰx`qvy0g ^_l\ɲph?QzbS%dVY^Kdr@@@ yZV3ow4Ea7w\Jh>7P#n- ,YB@ $Blѱ1dKqܳr;']-[ߖ?l X*eˎrNYUv\3Y=ou_'eY^ǘL}ӈ]Jw} %%%rKUUI{{ƍ(t]P̞͓UBϼbAYX VRR>)ox.  W}egp+9e }'jay"y \kV'wCQ]*uߢë-k3W_,YNVQԗf d/jP݌YQdsڵk/,-- ʚ5kn)6md;7,I༓+W=Cp9?A_R   F[t0ZP>c0#%&ZiWߐ X7)0QX݄Qy%3 8%3(%܊sWFZ>zL^nNZ97buCqVf_?ּ(׽.KdUVWwA?$5]26Ɖ.-3j2{~_* 7v@IDAT5nw3dMMM}v8+g5wg͛t6ma`4ծH   xyke7[N0CEV|ī'\X0WSoЦ[D@b!Nkqn.[q3'_-7.^/݂MvCP+gl{Rk@0Hhpuz ݻwo6lxm?>|l #0GN)U;}YV:øj|  +/<&-!g4˓!W=_e!ɄEᑱH1.4U /-=ӍlEzHON^.uhwp p_SDlWSvg~症h!5M|]MJ[k~M@C(jL3uKi~<0Ƞ)˒~z,_>b@@@y&TK&8k)9JaFTG{'?U044Dcr@h.c ^k֗i빺vC] 9\<4*8yGw-┭[K@!5geeIEEtvvJii锭3x8g:? h|blY\V^?~LcUI[>G8kd;9@@@hG(/4i5=N fg歓yNgsY73P @jb>  /9g%Zu+#5gyV\9sRysrwt7.9CZr\wR@f͇Sj }C:JJb@R7ox 3gN5 #9'-5`l,,3!   @@Ȁ)Ct7fm'F4|_vۿv I5޽;`ҹs3t4ȦH23?8yRenE@@@ >CL6y+?:V&=quէKz9{y<Vm:?6L ;@ h S4DjbZ=s+O'AOm 9ȹgx@sǟw(_:#rŢ5qo=zIs[[|:$% x_`ddDx9s3@iiiR\\,քG@@pV@[a԰Cb=S"W.O>Ks4M kPCiO:NϑYu&ZgpĖ"_o`Xe oa@$ɐO9Wγ>Y^j~'ŵ ȿm}D۹In8"tIM y&ZcЖbb*=矗_)*++ežq'։EG̎ W8yVLO"C^^כU_4J[MF}v񀿵C.k:r(Q wWGrF@%Q 8N:RAozs@I[>DW:sWWW[OGT9`'Fɋo&mCaⴒŲayR]A']v,YⶮZg=+FpP]K o10gRifܰrQJCFy0?{e95k*C}[=2\I4! .7x.r/Fl0-f)GNNdee[ylmt|;ݶݰ}78ߦKb[c/5vuMl۱fm Y ['?7i; gUsϗEž73X;?2ezṙR]@ NV@CUIn7~:'IW)7y}9,9kɒήGFFǬRFW`j Eei  +5`.E@C|'pgRoe's[w$.yɷ6,))7,HΝb;0,V =ÆV%L .v!sO@0Ò%K믏 i@Y51eddD{{{@=HfY`j]jޯ6-ޤ%%fͫ;::ϗu݆R4RU^OeeeǤឞ0X)**2) cvqq1-9TޤK/!9#)CCC]z>` jz[:VYYg 4-Z)oQEޖ?YZ"7-K.uZ!4j5߬Τ4wq|Y+ C#sXwX7{?;;VMJέX&OyE*c07B6?G/metcNWn6m$UUV~8ƍG #]n ӱJz+ \2MHЖ4$ 7!6ænomogjV/{57n}3ޥ=Ft32\?n}[kԦw X{%xOTQyMڗe3bfy2UfV}؅ARn.tqˏ%&BFK? $@J2 BP&eo+#O'o jyA.w*;޵-9"/0Bt޽o2dgg0f5ݧ ,VX!x)¯>q)@@0B`ptX67 >auairɬ5'e98Pצn56q+9hfLscr['5!)d7<"  &>W]RMzF >-#V*(HGFz ;6we# R)jᨼ(1MU-z3sh+PY .(eK;rj{S5KL9S 0P׾NBްa}پϒq@~t>y`.yqW{r)UrŦ-h74Uʌ  nh얧~j7YMWT92+A/:&Kj蓒,Q7t!ղ@B@l"am|"2(4 #A}[~{9yd]k uJ?o5Z3+N{{g?Gv]w,]Y2hTޭ}E^Zf,ZMeGY.򓥺$y5!''y?vw   )GZG^'i՛ d8+L)M@o9VOB.zMzk3=N-" zޢҢ̄/t j|LgV扡@ev|yzY?k<^E: x1c+ !,`t@'?I9??7l6io= A ,f͊t_[f%VW=sKE2% m'#&{)+  K΃EW}ʸv-qp"C22y[iHOj׷~x. g $@պ Vv%VoEr@UN/O[eņл{5YYv\YlEwڟ4) @#-4Hv&FHKwt`Y|TV*^5oE>W9b\h-TUhDDCz5Y;'|2`/'IMMK/t)";:"^ znI    KfˉųegI3[Q [=ǺoI>{@ʋr$#VB e@֡P1  a 4Jn6XXvLŒMhIϗD+A@@^`MRU$^;p\bҰhf9sWZ{ݕar VG\dGFF0*[hU Cv ;]kIljVXRi5\)țV,7vۿWw-L ӀhJ /n ]ÜyrQYh+3tl)((n   S IcGTN=1S蓢GB@4w Hnn&[+y&ڒҳYgV|Zv_VuM:rӲS\?=- D@K+.Y}ͺe{r94pײi2h@ @@@h엒,LP崻֮P'g:@tIanFf"ںD"!0'%UV`jzٺmJ[[#ٯyvOW w֞YkJeqOUdWJ1#34   G#-tN]Ԇ0I8fZ@XkPƬsDMVF]+eZNK2W~M> o3.f>wGdN_$˦H7.ե򳯞/?C^xv<̝/_ص v0Cj*GV4_"   0K3 ڥ%ir&'[@pD`xtj%iP EL5vXl8Qb|kv~V-=lm}~V -E`u@qDGXYv],Ͻ~Pvof~ YX/ENgűH~~hw$@@@\W r2œiX }}  A%=k*s1&ckkKZ~ tȦA7kxz]ýtVUU"'gϕeys(-/]Q6\QMdr"%E_,߄w `((( *<   $crwvK8lu5OO@@ ~z$nEB3h<@T,H{|rz{ nxf8mg_93de974KϞ2qF4tuuÇ~uvv}-~7,X03' x<)**j   h"ۉlֵ`@@uLnx>ږ.!0@ZGVoV^h|ncgC`o?ֿ(K䴒ŒL1 ---rw7>va_@޽{,_\kJjjj,8 ddd lqV   V+SzW3]M8@@)˔4N&FǎNIRj9X6%ovX7V6䨼ձ~YN.oNZi>S{ZS3v _uy'r O^Li@NN̈́a";   $ȨnMt5a@C4GW *)waGZz(9D`L9krj ˗|Hww466fVo Λ?&E0)   QWӴvѵ;2=?~]>l7[}v+N!]Yg hhooL3p]w-]2mTh2* ,@@@ jv3A0Cl@{)=w)˴H8ēPKg4u[-?*R|@y)Fɾ#ళF  :G\Jyf}gSHE~3ٸqc@\} ऀ fHOOwr5,@@@$ j[QӎNKѦ 'dY& ZQ,)-ȒojpdkW{ wT;t'%Ug>5\F@I|uu]'?} ٺu\s5rE٭,hÞ={w ~]M];; ddd @@@Wp/uģI[d'4I  G%;3Mrnҭh%=.&3@ q hR~ӟ{O?+too<#7pז~@I\6qe#   `.ʱp60{Ocn ! ^[FZYQhX6Z1 z'0J n ]LTTTo[f`mᦛnID*Q题@@@\('Ӌ!6mVwBV 1Zr p@\OKK믿^~gWiir-rwٳÞGA33ƴ   $6^m LN,JOS !ج@@b.[oUm&<Ç;7u;NN8ꪫ$'''`FpB 33n!Ր'/(#D@@@F$(/(Ι/ЗVk t1>s   KhZ~/o4A>}ʲ7'@^^苄    hPAgπTKANF׎I]k}];B@@@rsseɒ%`HII[ewJ   @uMCfKZC^3 V} $@@@ hH f hK EEEbf+@@@Ѐ&R))ultJkWD,fF@@&@@j:.i̐X   $6wˑnLɷ2=!vpxnXѐfc"@@@ hH*@h7',y@@@@[@:c֐&iITKMV+ cc]W @B@@! l {X#a*ź cŃhMSoo ǥIS4 /[O q͉c}cBz u$g6vITG8 ޏqmCP 8.YREaY,@@H4x㍲w޸=q]\/YX 9U>=rcppP/pO7^6u^̚+8XGoof8r93۶/qz7 MO xs*ydp0`ْq8=o &Xrzv̅    D=A/[nȰP7yD@@@@@@dz@C2QVw Hvv A@@@@@@@ !A+b]48.[[f'Kڜjaah No\'^1yMgk噜eW筻;%,Qm:'`m,tIF;^t;ݶ@C}=?VU@?dzz:8wz|H p^S#   @lpӗzl0kӋћQq4ŢAN'@ΨM~ SQgbT޿kL`zhc qM_ ho`YZwuu1\ΗI\ev{{o(@@@@F wusss$t-**ĪVJ       *uX.'lyH@@@@@@@ hHNj*@B@@@@@@pq 7k&G6HiiTWW%##=4.yqqCB@@@@@@p Gg}V~iyehhhRlYf|#>{i29EmA[h !  $@OO[р% >גx:I5/Kr]t_U:t_!ȱ 9TZ`3_@qHT*8?on9NFGe =???]a׮]sΐt"=oܸ~\Ro̙3C [ //OEB@@HNN o/JHGנuj cs&7M@/wuu-^" h 0 .MhB-D ԛ$w hƺR-;0 z65ar-HpDv8uVk?]6Y6U,EB@@HD e&b(   4Ri'm۶??̠UUU2c _9ps=KoY~A@@@H&R𦬬,IKox֣.Qotb0Va!'hȤGg!Y&zk/kz.ICccnwrC=zԿ9HFKfWq'_52{lg ̛7nknI[[[|3w    ŢA 㥆|negZ %%%ܴ1΂7ObYYYd.u˥@#]z]?AoVZZZQg(.sJKKE$pݯzǫ.ikkeXGG|} ?q sʭ`       W  $`mmOnEXp|k_,w3       y@C]]]իƧ3rg0#        4TΞ=;b3f)8h9        4dDF-&;;7       O  bK[oZccS]]f@@@@@@@'fbŊ>~X=͛}i +W3       y@Oj˖-_7;0 .'Udz@@@@@@@K@Ú5k+I<rwHggPo.dxx؞|/~1Y@@@@@@@ HW޾q?R^^>W|       qK@Ûoкxccc 3@@@@@@@H\-%C@@@@@@@ ĥ#"!        %o//|       t9        `\!@@@@@@@ m@@@@@@@ *!C        fAwwPD:餓"@@@@@@@@ q hzJy hFz       q[@þ}nݻwǩ@@@@@@@LK@v)q-ȡCLu!_ K{{$S ZySWW xGy]djj*ۨÁހmY[: 9#?p픔x<|fѣG}d#oyԝNu_w^ c2]z^z^sWi7wȈ@ipoQs8WQw\بD[D}:=r8v:C߇կ~%w}1̔rΎ@{wl>@ssڵk `N@@@#N9)**22od_&(!0E@@@'31?O4SO盕1r   %p'jˏ$@@@Hp:K>cLG=!!  $@嚗QQ@@@8q! ]~da Þ@@@@B@@@yz999        q h(((=6P@IDATݻ7        1h~3.b-[|        *]UW]%:(o[UU% .A@@@@@@@y@Css5?>c@@@@@@@[ 5ojj X@0C #       $@,X0        3fgff3       Eo9r$IЖ-[$''G̙>00˛>NBD Hx饗|Y[h,Y7>ހ3k,W``WY [ɒbpMIQ L7_XcIy 0 ӎQ̒P&86fK@'_c-L,ޤ/zJ2'Ȼi;wnMWAmgxxؗO?7<ի}_l`D& yDHsAinn rXj.L7_0Ot1)/SÔM&9i!ND̸t9OHTk=++K***D.--uEjjh:&{0E@re'--M. D"!`5U މ%>F`<[8vk9ﺺ:mÛuL['fS ɶ-P t1)/ք9e&)#]Gx㍾ЦifΜ9,|@\4gʕя~TVTMmkY(I֠{Pfc*9 47NջpZ, WGVf͒W_}Uz)qڻ;wzO 6>`5i7_Hڊ t1)/ó(1_+ERm:4Κ5!0?pR/^<<|@f<띮\)&`8 <5Jj#w}wul۶M#geҥSN?WL%+Ծٔ±%#`1ǤDG 'bSw\S~cnUίO?;"ր@xcZgE&!D.|rB׀ yWW'Qcc {jҿN?-{wmoތ8 GB@epTk ^7H f p^mV}8#G؅ ʵ^+|QN:$$8;ͪUnn653<#_|w9T fS IZ;&sLK Y 8} Q0s)n =}MZ[[cWZքA;v{' aɒ%rGAE$+ 1]LlNQm?eff2 GΫU_z饲n::B{{h0TAEEEO~Rx_n׿Fy&վٔ„|@&sLK̎8rs Y L pl};# /kJhM6ܿ^HӧBM7nGy$ f$x2PܶC!kpΎuX 8WbG1~Z5ks=gwuHww燺8`ĥ'+v&&;"0cR^"1e^1㟓5ɲ `occ추4腄cJ7r„6 yӼy.CWWH/~Q>OHqq #0m{ozc+ @pVX!$--.?I0NlIF].АO %%E@p^fGVsQ=vϚ5РӮ'4|:)< 8qer^1Bߢ/ĢXGr t1)/ɹ5Pjr gVDb!Xӧ~:s̑o}[rꩧnL48W*D7͛^xAj$#`^{ &Sׯ_8B@ ///Sh@7鉪| :v։O;JFܸo~L:昔Y.p1tjyI 2Rc4::*ooO~Y|y-[xw}B4ag{_1)ں̠7î*;xc@DVJKK}~Iӗ3+"DQ(b&٢u<+l㡸S u”HL4L:昔ir2Qp1_72h86ƮcB>+'?I /O;4K~饗4sL[믷˧>~wzޢl{,EBձ7wb8}X"''',655L;u b 6^ E-)f W:tI % #`1_lNd&86Nœ- M6k^WZ5n,XAtg~V~_4>曽_Hn20CQQ|_pt̏tmOg̃@4wޱ'G;nl߿?`y3 j =տ4P\f!g; WLτ L_xM/0@4L:昔h,1_&`occl+whz?UUUo0۷]^{W_ q"000`3477֯O}$' ;e˖l׮]ܹ3+8AqbW@@}i:pwmi7s: B"$&Ihͦ)\\L:昔V +Ojx9%G-~cY :c 8  p^֐"K,eU {Lu&oZnwpWLD}iZaIb`U$1_lhsB~'~ -63Qoa߿ড'Z>#;d֭gddȗ%} @:,Jﷻ}7044$-M]tww@p^d" To+i4s1_}O+{ bB-5WcN7ywLp㟩[ӿPrlJ8ܢ_rpIuuk@om7Y:Avvop)@ ГO>JdD[4.UH 8䥗^o?۷oؼk%33ӷmᮻ Im OM W;ƥ/_\VX!z422"wq\y啢QyX֯_/yG'?wT40W0 7{tz uJ!1'ߛWɼx;& 㟉[yӿP2slJ8mH:::Rm۶m3gJcj_]xr»l Cw}7 ]תp!!\4G&HKK}s_B)5xoy扞{#hg[[\-2k,˓#GÇE7O駟QDÜWD.0ql~J] `1Ǥb v @EIӪ°fyڷɩ䣏>*xIo,x6kyGu~UUU3@,& @\=馛Zҧ8{͛7 ںW 63@ 18Nzv)E%=.96m{/ '>hg",`ͦ >r5)/.V"ӎ\UGL plt} y kt]nF׀ ҥKE =rI'$OST}8;@`2ַ%=[sT^h [ΫcA <#ˠ-HI_f\s5OZ|?ں6ﭭ7#'/L S hF755v/Q^^n a*9G@ jvA/"??rc9&9׽TT.!I-Jk\C.벴XY)$Z$Rb%*KJ&\=ߙ3sΜ9{}8s9ϙ3g|?GK~si[f徇ؾ;ocxIӦM3Ke_p?ҥ^jN?t̝;\xᅩ~ '`c@@@@@@@*L`RmoǎW\ z)=dN<Xf͚}ڴ @@@@@@@@(Y@N>d3bӢE?A# y(vڦ~c       $P&'HyM׮]C۸8q2e7oEl喦uk1 4/~@@@@@@@@ hnƍ7miڴjri@@@@@@@@*2M<@@@@@@@(P`gv@@@@@@@@ߛ˗"       @y llڴ|wN:YW{<>3?3OݺuMVL׮] b@@@@@@@(S{-Zd&L`̙dY8L3^37p3N׶m[ӿS^1@@@@@@@*G ʰ0d3m4ȗ_~L2x~J5kٳLÆ 3@@@@@@@*O`6y͚5K/M f24,Y 4(R0˖-3z27nt       ,Ko\vefҥ4֭ wq=7nlLEVV[meϟoƏo-W6sA#       @ lJ3G,f͚c1ڵ3[6jWW_ެY33|pzGz6̌3h        T@ћPSwViӦ~z@@@@@@@@PfMsl/:~i͛v3,SϓO>^{v3@@@@@@@,4|qƙo3={;w{챞L=jbI@@@@@@@*B`TڵSmժO?4.ȴo>OG(W^ V #Rv~|%$Q (Xt„  [J{9ռys1c6߼-٫(w#kD@//ԃ~X]%)c+neO %Ajzk1N϶{o9c/Y$pY|4h~30Uic]hST>zhu]5,_y^s^A )yqƙ=z$Jփ@ B9V>\veygl(xc\y09`0_4|`[4d't2~V@(~ޡE\:B@@, ]ׯO~ݻ3}րz4(ZpJtkUtV#(&(AǕmvi'%HKYmK+ 6,Mv=~ P)JءCӬYJdΝknt-Q ߊk 7nt_~I6m8 L*ٳ70\pQ=3(#KA@!fMF0j*O?{FS}He{vmQt# d-AU*jtTPIv6lh9ӠA,LWfMsI'9)<҃@mDtc[nSNF7AEO<5kR馛R !B BIGFʘI?Wy;S;vl+0M_p;u>dvHv6HooE9|f{%ѝqut*d_膮`)]t}եK'nz̤I駟 /עE {tAFY T4*HWC)ۥr_UW]erwr @b hp?.:(7w@l4iyJsk%TmT#x>oVwadJrӎ-ML6Ӣ w UI`Ns9*},>K i:un=N;vt*:U Gnr-wWJucrS3fLZ0nFNR,ecokk}ܽޛ͝ng˒@@yp^3f0W_}Qnyg\=WU ׇUu@([unk֓XJuךN;-cGnKf(!~jr@`[)_ecP]&L`ҍ@PAMTʨpꩧѣG5g5}tJW@>g%쳏9rdMEԭ[yN,{|=э  @9 o I4"@@ @4DHL@v5beg \{dj3gK7+&X|DxmWdë@ƍ `{,[?k, ZK Q3v 0͛7O-S=y2ɷkiٝ_޴iQ;(fժUfݺuFvF)vuW6UTzj4k(Eʕ++Kޕa۔VS$5JI8;hv:uyV~s0#K.uR׫W9bl@]*~*;lvi'E4ϊ+/:/)L%cm-t93Ke^3/AE{Qe˖RJ9ZR1uۿ+/:ׯuj3]1aÔ Ei\s5ykkWP:M8~..W_5o׿W3￿9"W^ڶmGyY4E۪'%UWEJI+ok׮W=8.,-FUj:Լ ϣJlhKuү6mt4t!I\uZh}QfnU=c#+?glOksv0't9SҚLR?l~i'@|7guVNuV)r?~|;VCa {6J}3pi_?K:˞{iRoEtٿ~7H(#0~z Ǎ7ʝ9TA9At}5֡R)>%ۭf+=geoF1J-̉'h籔Zy@G\8w|t W^y,\0m]* '༧Ma@V(@@gh3(5jZHP>?VD=fطyG@ ig}e!x̚5̝;HݪRWXQw}7p.q+T>|&lZ]bI/U+y  8z)J$-+ d^|Eo96h> S6k(#;<ӽ{B饕M Jv)S8Q8xVGxUҨX~?(^ "1 O͚i^7ocNgjS1L5>ehb ʊ^Ν=Xk{'ݰȲv2f̘Q-@S:/Sbó  P@jMڽq^ iq])U?A0"}*! @׉l+A yC9S 믿̞=;{/R0q>q%x8OWE 4v*sUϲ`OvbKyi>zhg[t{\Xw^vW$`nUó?UQ{'&[E~U\tE&Se=ݭ,g믛 fQAϥ|FwRșJ)LS.9ϦfI)>BQ;~kCY.QMAoXbjݥ8uRYv ˆbOK~je)uI[;Ns]\ףڞ3g /00~n@leXO="[@CBژrcГMp˾ ># QcГmjgM}}W3Ҡ/GV煖]v%Ռґ+c[5jJWauqGU ?)կ4J1mTz[t3fplӞk?O'gA=|S6J֭뭷 sSF+S9SzݲeKgVEr O5ݠlQK^ڮ{d05=ej7EMO >(qƙ_F)UO>i/:g},j^ǜ2slQB~s Wwn%B+^5[UǼ 9r>]`>`QRk٫Y;y/űـ2+~:ГZ=57b \Q1nQ嫚a V{!Ǵljj-wV*5o~y Qe3`H>ehE߇:ɒ-VQ:}6,2 " <}Jq\Aw0mל%w>:nf ]nz)/v^p'x= V{!Ǵ* nFNztAN& 9}Ous.36DƙWXݙ>ܚ5k`ԣ !Cx \SGX= 3Վgz fp'Г:EFA~60eL._~ݛSnLE 5kFܿ#gֱs`O,C)SEyURNJ۝~ѓvQf%(HLzYowG1 6ؙڵk\ \sw{E ":.*# @zCd{wu54}[s=7ZH+/J?߁Oߖrطm@b,bT?j('k`kNEH(]T95EJIE3]>y$:IDAT(p;:+dNESO+#4N{;:@z^r%aCje1tOi<6UN8s(!}w}nIp ePJDAq;ҚiذD;M{6m,jBE7OSc?hm Tj7QH@AmR!S:FUI}ϙu2-/۸Blv+0v{CߕHw #y{fРATRu?\6}u*^#-7:+<:O+ԪU{27iB5&:|pl0=  P2gg'wctNM֨Q#tI\ ip=TX6om@b PLMUzTzg5O=EJW_}yɱ+mw(RQ*tcnR~-rTo?XJ4yvĹ*[7EaOө[N/6DA-Q*&pH)3U ({<)P妛nr*(2zDل3fx&ԓQE] hPъ+"UpEAۢB3=yT0RC6/ePi -KMW+ Kyk*hpӒ:.&DN@ ?IBۨ c1l^ewq4`㏑–YKy;cOS.Q~sY;moCX(wKu-SvQs ވZN=T)*wz]K%L? T(;fwĵ$zGdvþuw@)@@C15YVE RSNq^9sR2d*{NiҜ)`@OOWٖxQ2+h r;wgj8jzB/[d9v}')R:U9&nQxeП|C+c9&E5k4odɒH Q_D 4RtX%Lκ/nCT~'Zx 'GFY5têԥc:}Q'5Ҡ[+W4QWT K}2owʆ_}UjVƆԈ;使/+RKs1eZ@˖-sW֭sӵ**Ӈfb@(;=,uz)3iE)I\ i;J}=TUT ޷Ѝ @1h(&˪2;찃ܹ҇R {7'Lu/jWo4|/{nteKx뭷QQpW J(]A_&*.\w1JCm6=aS[ >g}f ߷nfBF(+ɼyRcUsJOޏQ؏ROgWj[ToQ?i"EA[W_}DnXy {5w5W1e|G]qfR)eJ9Mcrw4o̠yt̔{)w:/EjMRt-sx.i@@ >+(;٦MTjSݢeo~93;oBZW1wE}/uzm@( PdU^@mu':X?2Pe 7`}iy+{ѫ&ytyZ? Fm+?MP^ZoJR:2LOm?MO'r}Bݮxv)E/(/l9QB: Ƥ%݅4(A>}̐!C>7|4}oyZX Jsu\$€BwB<;H]۷bv烮j+]QycQw\Qy"U`P @@H\@nLe͚5fرfdA51h FqI] i}JO?/ &! P 2*p^J/޿`*{1 "t &Szai(/ma? QD,UpRv+҃AQajzs5#GL-RYjz" Dʩ\*j{Z?=.[w Q;h|~6۰{ ?vGo6Xaeo~եKC7,Q+Q?iJ}+ow>F hg}b/#۾x} $Ͽ尿`5~/Ԓ@@ 9e)ꪫÇV_~0VҶzm ݥܷvЍ @1rkgYT*DO۽u+냂&.BK/e fP% :Ԩ¹zOۓO O^+JdI]51˥+9F>iGeiyA%:-R q-KYu%QСy衇 ?eQ?иW\埶B(YߦV!7I<d˳JV\V5f|9+ϟ;6>r>; TgAA {4vz*+ڷa7@(T  :G =M?k׮u*Zm֜wyNЁ =s;>[oռi(TyЬY3.5|j` :Tn"0J)g$XcU;25DmzB]%cD竄6]Hw9|bhwџ- l6w^6l0oČ3̊+;g;3l0I|`>7}G)McS*?E.|t;Ìk{;nEY[~裏<ӵkcoSx\%ο~ljF¬2OUsC' Q/vP[n 80Jq- *PUطrF" P 1ke 詾?*$A jժUjyͪU ?qDOzݤIӫW/-lO#=zn[Hw=FF<ٮyrJ!S+F #FH-z{5={L O4=?_9 /r?QiӦy&U68ر,Y7Dիl s⯨r'h{ww71cnt{\o(GيS5ǣ[]4u,qDaj*Gf͚qUؒ]D @rЃM׽{w&iݢx sǻK}- JzTǪmځ@$@Ed1#)BKP`A:u ]2egpQU3O=֭ *U@Ihݨg_Q4M{%d0Vw}=Q*~;x3ӠAOFM6啒Tr?};ɓ'oֳN'DQsDv뮻ot.Awܭ@\o{G7۠7(KF y䑞] KǏ ѹGo ٸqQ]ԄLR_{o֭ +l]0+ dK/4m*/TFװRnBθ?-}F  P 1w y̚5+-u=>J=)=t iOܭ[7'ZڳO?hvZ)dSn{=9s?S_|ݝpp=~ןD=in71miAۦoFФ <OU쩄cTj^h„ )B UwG5~y<Q&뮻3ZOVE ?CO 8 ֋uAݥ0<N:W p#|NI'd R;2$%οA g:ivD0o's-E7 %p 'mz7TY]CIn af: @!4Ǽ)йsg'}('MPP]2=^)!j:ujڤ>Mr!ryN[)^q;xc='*徂k-[z&3fLn0vXO }*R,p{*C ]tQA#zm㏛I&E^?K35oE0?yjv./Tn8فQ|Ld\˘q=JYRt7x= xStݜuYffܸq橧JW۷ s{87_m([tݨk!C/3t  PSF χԵ3<f}-uPǪrٷ1M7  X,b9AOEi=|pi]{wvo{mIuCaeRsJd?(~mWܩ_11k׮u* *+nۤݧ~zZQ3wDUxғvџcUJ92׹g5: ;)N[{EEZ?u~O [*z7̺zUժ0X%pB3j˘~+ӥK[r'FU>+8.Vܲ;u},~&i;'do[D(8ۛ]A0GLӺuk^{%qO@첋6l%?\q_ ir=\3   آ,"8 ;zwu*lEX]vQelb.K. PzrL)le΍ 0.UQ[jK.j?^yUf 2=P)^q;z1?! (ۣ$]Gn$N5TJ9d־WPzinƴTƆB*0۴iZ2)l"蜬s]=P7՝oEjt(Ho߾FaE:'SO5=}ayw {tUW5dO˘{ꕶuyN?K0v9蠃0_~k |d&c*nMXnk.hOz@>Š4|ggpЃ Z@}Zh1/}-PRǪrٷ; /Ye,nnnذ!pRZlMkZCf+(8aÆ;Dnūn^|׿B7c9g6?=m?#ΓsUgzB5h4qSأv_z%rJg- T0`s3M41jZC۩~?En_tqE^B_yw®]:nyUoh֬S zW1G4*Cc?2e C>(˞^z[nq|u朣sEwn>hOF}WPYpaj-PnP"h$^zaڵkg6mWXaMfFan}7QjoxhQVerqJdwlFqsػɢ`]oNiԭ[>kR:X4_X=}RU<ݰM#< f3gNj':ĺnw}UtF=9ꨣLPS|q_ ir=\3   ,~ovnUf)Lpvr(TYXQ_Urͼ?:s/V{{$r+j4'YO>Ĺ.yNn~.ɻS{ƪ+B/7*Jr,S2%5NMOL:(|.e뭷vvW@lz;ҨQ#jժaO-4mꆏΑU|b(2(- Sz霥i*EYTrZF䪀 8U5@5~aۨ UU!no_WH l2$)@/x;Ncsr$'&ؠLmV iٲ=ӝıTοq~7<;'K\ ޝTAaT9]۪@AAMO})  + <迣4MBZ~\%q'(}㌂ @16/X&}ԯ[a _bO<Բԡ5o)i_yn)Red%y`[6=cDǪDSٞ.I뭤c?Nw:vIQ>rHwި'|si];qٝF4MoE5NKzѸqc*֮]̠@}?>`a=VdPQ?CNA#h1+ESM|RqN;41k.xx=QNy,Y̠2hae8 TOec7ѣG}-PǪrٷ7@S<ᘭ("\i!JQv=.rQn+~z/^Y*i@)҂2s'V nf(@CV&E(S[;[w8eW^ye:wzvرNvwxJ!SUy*e ѾTs饗:O;UfcX檼ֹOOhSjq)sQVb_ǷҠfTTOΝ;goE0P\UF5Ԯ]ehy P`n}UM1ۘ+whؠ ('n_{fҤINU]hժUj lQe4hPjݑıTοq7[PÆ s{igr;cD0pz<a  P}YJaaҶPǪrٷc~@|.BWv(]^zVEms4 .|gFS~ +5Ǡj\L-{=ɬ6蕝BTVH$8 1,y$`j"FHT.^c>qSM"輬cU/5T2eɧ[: Gcfr mGo"(یR!XhmBhѢŦM˜Xشis^Oz=놦^Ax)4=qi4aqKUw#l_2g'uͨ'@l˳<@W k!mS\%q'(}| H@@(=N 68O2e"    @J   PI f1cӌE%m7ۊ    hT        U!       hD         Ij.@@@@@@@$@@C$&&B@@@@@@@$hHRu!       @$"11       $)@@Cڬ @@@@@@@" @@@@@@@@ If]        IHLL       I А6B@@@@@@@H4Dbb"@@@@@@@HR$Y       D !!       @4$ͺ@@@@@@@@  @@@@@@@ !Imօ       hD         Ij.@@@@@@@$@@C$&&B@@@@@@@$hHRu!       @$"11       $)@@Cڬ @@@@@@@" @@@@@@@@ If]        IHLL       I ӛQEIENDB`performance/man/figures/pp_check.png0000644000176200001440000005274513717745002017277 0ustar liggesusersPNG  IHDRAsRGBgAMA a pHYsodUzIDATx^`՝V]$nـmt! =$K%\rRR/B %qܫ,mwl߼"l㪶3of%}{,˕0 =1i$m1$=ttttH[ F#;`0 & Q0qg0";`!L a`0Ew(B3 Fĝ`0& Q0qg0";`!L a`0ΑØ`0qg0qP8H0}0qg0g<3٤R*fc Qi( d ^H$O4"L&LR)i(|2l45 D&yNPh:gq>`~<~#n6rQ,bqFT*r:L&tn3 ̰,hT‘Aٿ- }nڴu[ۤ sP9?g>O|6p:@OrFS)FƂPoo߽{OË-[z=|LT=_YO;Vk_5L/۹swȗfJvɶ8YE镌9/˗S.6p p--<41 X,i$v!$vh5S6=UVUȷhw HtSԗʤrW%;L iHTz R8i(R)z N Q$4y=zWE9t_R)iӺziqp{ҋ8ce/?x58A >2V` )H !hP3$YD"̢}s\:nw8/gLϚl6qL:}KE"iS*ΝjY(,T i(b;()\dVZ!F@WVC׭@OfL?nk .pIEǰX,c'qJͲgBxN|4aѶ5jb88w:۶mc fk둟|$5I/*d6wvuľ4߇ kG : 4Bݭkj!"N+rQbCC~S# KUUUf.:AE"QG¡qS =3AHk!&@Ѝ㽽ftd5jfÍO:xk8t& a#Lς`0aKW\0.vJRbP$9s\[#y}G@m DAP&Hs"o8*;aq  q|xTs)吏|z>B(|JB|T!-Rd,2C;A3i2 5Yؗ=ӳ`ʊx"x?sܹh4Kī;~0[4 86p,f39;ں:ԇ=0;D2#݄[Q@!c";;WL&ӲŠ4UݦR)j5/RD<ӻm;?r$/Z8naْ\ Bq+`ϡPsikm#6$P*cCd3di0޵sK/gQkn&vlYk|2^)b0zCG{'7^0q?9?_@_r䦛oJ;K)7d`0tuu\b0 3X03JGG>קnK͛ i\Zat Y6ПP(pPR10q? xr׭̙iHE؅^SN82Sx$gD}3Z!k&yg>O3W^u<;4]R`0Y2.WY޸S}wӍhgn LO={׭[wWg}5kt|$EKE"BJHg2FcF#|9%,:;;Vle+NBI()-MF J jRAao@ EG:DL܏G?.sOͦ|I%lQ+v!|;|RBB*RP8CI#- Ƅ/ϙ;;ĵZ :䐶7h;SQMf3B}3gx6߄Ⱦ֛R0xHbEYeaB?c\4yp@cb|g;(U*ZX̴ 0M~v ^YY2qcwS;JA ]vEB p(zߨUjLV]]$ff!pTb Ƅ"ֱ "`:Rr pBϛʊh$<?A1v0qAEy<dvCQIs;|n4J3< c8? p=bbL&N%`LmG555TJdt;= /;l+޹+ca.޳{7pHE@F %+t*d4ǤVmv[ ,=10q#@pJ}X+Jk~$B|STT}Zp=nw<.T*OZH:3 5"дRVCϤ=j^^tPcabzd]""i3_ d=ɑaGK%#C N aؑ|Ndb N.sIq6c" CPum ݅#g]VB%ah HQY'1'gLR|ZqěG{.22011C\:KK."rN (tēdGJRl뱄}O6@2tgۡrDb1:]+݃)APVtx;BL%S&Ġ ,dr}Vh<ѐbw`0ƐfP;!;[U5cϑqqKΝc)D&б[ES`v1 ێTa&%$S(wԔx<-?f0q'‘M'rZ\AnCEh{4Jۣ& FA!$fN8qN'wtQ8G*jupju2b\@^1F&8'{<̈m2whS&\.1GӮbAb]"c|Sj榧U ?0UN$Rh y&-a4L9NSL&󲋃8AVIO N^hDov͉+(J "^V8 ?r-f3FMgJM&!@ͪyx2ɌbCs¸s@՚F݆4OɥRQ{I4ŗh0a^#H3YdJJNdgfٵ!Fh5NJw\ؐ{"cIH8BI?HҋQ12`2j5jn<'vч{ E{YK\quIrΨ55~4%.'N;d<|!# iJb$EFGq}` `^ a̟+틈Ks'?m:|?+G;BEE9̿CrR@CND "Fg }B:q9v͊P"8cTa^?T(g|oVhqJ@ 4uó:p*S]] ]v$TJ%OopR*HcAZpQ?gl6XwD{rXN%&C;;3l&=l;yzOJUu*L___y)!`(-IrAcd]] 6 [g///h4vUW(1=}×!FYD8ZqVm2áh|+K[kr1'Lx^WE9z=OTډ<Hdw>rME82SFEhYj=o*% Íl2Au~Uj3d2y f-n@-PHg_ȡѨkjj pp0XuU&wuu2iuϞWР|2<"~QBߐ J":6F"3n.GЈ*c쀫@ӱK$3k,wPGI/f`2]s,Gi>4AHcQcRv]u=OLNUPj4y*T[*:A'+ś ~ivs0ƊX,F]e.BMS$$33JLjqz|HDb/2 L9@3rpWWTt w$J40~y2d3bX<w:γTWUH qsOӜ J2FI-746l6(GQ1CٵgޙPWWV{Ɂ``H܁e Njk8χRzMH(1ŽZ `S)(o. 'ҪT4dȑd}``?a`iǾR}GJȲEDo@&63Y|m.+pIT< U1LjqGX&΄$6t/v{}QH?l.KF.Q>h4e:F S&I1E&ƉӻL#ϤNaW#m2dT*Yyxkщݏtmwg0Fd^jr~t)MӦ¸b1,D8ȰF+O6]!4+v͈-FCYRѸg>i䱪:`8P;4dsgd)6IxR;u0H4H3yŽj>u4H$3Zt& MwG2cƌxS?jǫDaIĝ1@^ɄnW*q^l2N1='5y83l3F+ҺZl#¢X6GD L&;ƦÇ!hD2dBa0F{oo/ j+cqG3g "u%M|y#G/T @T2H:aJ:>tE*ygN6E3 cIg2]]FN's}=ئ A@E3Ia-///++n2`Ͱåvhhl;qb#ʍFBNpOXw1c4H$!Jez=1f9Z@1RLRqO$*35ij2 jxHRUYi6::O:٩^˻'-<ϳpgH$5 tZ-N/ъƧx62I= %9(4YawGN;gh$* CTi=Y3] \kh5:Ύw 'R_F=ni_油*㜙>J&MMNA *t_qIګ=nw6h BkXI H`KNF3JRP .^GRvqzwldyېrN 3d3wάʪGyrt96*">H2:8Ng:Q;e&WhdI+dw&=TUWb,~D rtMR7ik8'%HW^e0F >=RWNcqh4K/^6үN D"I޾~lYP j}T?|Ѣp׭9p45ΠpL0F}!ZcZ R`\Z}|x1&g;f͚%!±2bGӭ6۾={#'WY5]c Z 7?mp$3M&xjh4u@)0]8O;8&w@D#`^tc&C]U+#B YI0 a"}Qxnp`@%cSG{iSsKf/Ѫ(IgHwfΟI'l RN;8PW_qNt3AB?j!?b\p:s|mGP h9&>ݖf@&(;AOǸQb'|MZyyd2I͙H>?L&漇P.bZ>XkL"`}fΟI'=pr|*?Y,Cs˗]t͵nڰaӦ7"%YI?0Zqq${Ѝr*78J^"[::Yx<:`kg#M3}M!Rdz zۭ־7=|I *m(H.!ົtzbV(a҉^{ݵHdu\щb082scr;ıLV!ɣT8f<; @MS~ӟڵ-TT Xh.qq8GhFc}}}.WNU  = W]>k춶ݻvL&9wE㙾K#1cfOBw</}70,t!3D{ޕbM7 ˩4G'B =_]U]sǎ?'bѠг?[&wu3L6S"]BTi4jpάYo-/yw;S\eyK [ț8[!=? iЏP|Jp8\{ tT*O$I2WTƙ1pUPObӶ0vG%w~ۢEs==}(Q>4@|G*S{pPTlVDs6Ϛ=q{2f:g];wZ6݆maJMZ-'CƍSN+ȣU1?dMW`9Hzӑ\?A#5yovF,& g~6L"q8BsS'BLy̜5{ú t&H@@lw'M3H72 Vqx|Dt:iKAjN6h[[OO/\Ґxq3ΌI$]MMZQT(e)殏}q?̳c\qW[Kh q×8n1 LL.3*yI3wgp$Gšΐ)Cc{ww7£Dtw͸ΚtRf͚ظ5}dyIJI3YLs!LF"nE>uM ztAшRgdw㺻{MNaͦ @):~@ {>GL2C$@gjqfD"` XUSmZ ;DUu==[Dsbuy8΀"}}SM> ^XmƦS׾J6ŭHӊNCgxME8 ܔ)8vPVVZWWL&8C5ΜI![߁.VVUЇ1:n>JolFPJJxX A780JK fA745x^PD2l2Y= BܓI_:4ONo5x2~aMǪ3Topp`48vtbc2zR({vc(DcwJqR& z<*nN5 N͢ŋ2ف* NR¼f,Y L@j-PR^?00L&i*ɅC$(~qWXiRWYԩS8H0* ڎx&¼ٔgB( hUU8]a骫 p$%SaS5'X;'2NB;nGgbL.q 嗮\qQϏ]N"X)*8-$N8nhSS[3A8C˴9CZL&G1֭(~qǽS!WerĘ rϽ@ l}i2JqliHg 0a NxIAo8|"d2$l‘3Do߯jIZ5>-e~|v4_1%q28@_dJ RYUUqKoyCߜ"w\@(]r`2 ̶h5 \2y-;)#ӂ:2N$K@ l^7A=&9 EˡZ,'̑Jy\ܑ .a2R @=o<;L(ӣ.!0'ˑ8P8 0bvuvf͇ Ag!xqbGѶ#Zft9X0gټıŒFBN(MB"d8x"N;T*մMRiaYkkj`R\rOt{pg#!|---ee.DH ͺ<2H^ERԶ`# GAښIgzz{Gu5AzUWDtZ@SMFcO ]փQk GdwwwyE9GLRx⎿S57IWPhun*D'`q@UUebvj[QQNƬJbwTD2 PLrH܃nlBdn[|+/c]DcUi-8 N`xSԌU~S~mٚJfDE!JI)Nqm{KORoX&LxK.F֮]4R"}!-D 5x|>Y3˒ 3}jFbw$}W_WwNј`#0KQOK/l-$ɒŦϜn,dNd={.=kfee9ڻ%MMwy{ww_̧'{pPTASVv[$C trJWa / T~Ax,>00t: misawb޳Y2tN5MOa=L6;<@}"{tR z}T*Lf޼yG/MGa41thqHw]/@Vzk !6dnWg7nCōJ*+uVWUƦ{ΠVˮXUQYg6y{\u\h,*^GuNUGTZ>$']__B\h{mQ$I:sVCϛ;OPrW^٭as"]l޼ )q#Yq4M޹kV ,+ɤ3cknbnX(JE]8hhl;Jӑe.TVU(])qx>Jrb&i%>YV #cSM^)a#t:!Ι580RK,.ܙFcXeμ Ypaww;?+b ^!U>qL%hݵG͚=kɀhPk4l{MOf%xBH{{]|9Auf36kdAׯ}@ (-,V ^cq@ aܜcjkkdBPTbr;-IrԪ#֗.[ӣv+ltTVTVVVH&%Nt:c>yFQ/\gdqg-)A8? ׷o9sM_ǁ5LHñq̼X_x%bSG#QsѲI9aV|DBN{dJcVݹcW,gHzѓ*P8BnE..u6pɆZr8l S!xn ̫޹cw(.p~m\~EKF]rA,M QYUpk4u*+> Uq0wlVmڰ~p&seO8x8oze lՁԋ@iSVtlrc0v^ R.[N -h+TqyI| Y̫d&qhK+ߓj>|% \J||b%6_$E3 bԩ0h0\ejuMuUUuèB0=(Hq0Sٜtj5*rÆ񒋗O!yZv:e9ͅ 8ѻ>ѱ{>\F ER"yqt1UЇ͋~Ѷv|bD(g OPp$!NKZ-!ߑe˖Μ5C9l(^< {ZUYQn[Q ǎ;P+!MFA]L{"DBZjUrGۇ_7.}&eNݱupĽ9s֡C-`e:hު ,ds0A֛x⩌8@Az=d|[i278S5G҄HrTTnܴeŊ,=|>N=?;Խlk~tQDȝܻ{Y})@}۬ ̟6mzWWА"J !_ՃwtZH`7͘( t(r?s-|3,Al6r?lnn޾colL'2 AΦ7o.u~mBUeV Dߑ'(WܡC>޳T*;;"?}u%Sc6V\F.:uxS~S~<3 x({,捛xkjm?7J,Z}+k(' ( *PL:>3Rf#oO̝;kb1}waQ}4=?{0R,Ot&O$PATj;ؿɒK]8S:OFç>nHk_zCgdID }<;Ң,b(81 6Yӣ>a219NNWŋׯ[ܷaæ@0H%Ƅ"Bqe|@_O[v8 8WP/n}cTjk|/mmC>_wO_ '$HxC$ ێmή}ϥ'0BQ^V^Zw/$?/"'0&xBP=^緼EPreeȠ-OܻpB{ݳ]O?-D D84d22 j:Jm۶W\q]wT*񥌳$>\6'ƇJ>kRQr]~N{7n+6r@_[<ē($K${޽ukk x5 ԦqJcT$I{vj2\$ZhžO>?Ңqyh Vh5rWVvrůK6|u8>"c$tZdmG [ZkkU,>]}+xQڙHp\InM`g/\/|b$9ACn޺t&ݼxm\^*3|bIɡ!_ J .W5ӌFc??_ʗb G<\5Vɇ 'rb̧O~!Cc,gL&Q؈Ec^[֨ozڲRg}mܵyw}t[{3{"32Cz! \$L E^t K3y͛6_w[nI&m JV 5Ic[&S6ϼ /Yv;h 1c6dʨ`(4;>ܼ=jFNcSh߶m0 O B  iO#DuRN1k_[/\r׿U1Dsy{#zIRu_{K.뮏TxOϐ ,)>@0WֶYu{xѷM V0~ %DrM[C+.tIN0Z"h81/ ^oY zpKH$azE͋xfI:iR)!Ic[o5Jb֜ٷ~E-*8NeNr+*ammW]}wj`}?EcޡDpNsy;SU '+""^#(YT ߡPP] *hZAqhu]LGH4 GRnd-ǵfs-AD/[jΜYȴêD %m/8F[ܡ}HҨrѮR AFJEq_ +.j Gxw;..>od%vxTK"=Ν;#0Mmm6:l6Zč#/$@))!q! p(ZmtZZ*rZo,=8p^y7xa~c^4%9!MH:=|ޞ܃-VZ,&n9WyyeeE kx*6aqqEoC7 Nj7fjH[ܧTL<_1"?kK.%a _t+\` }^7ِ6b6QD٬d14w:x0Dz-}i!M h$tBENNVe yRAT`g ^&gw8+XI,dLMe< 9pOOK&\E vaJl^GWTwaWVcwz BQil4[x0:Pp}|hl@_ET¡-n`IsiƸk;7q26y|wqlTHJ`2ZtqM-u]{<#ȩH ߡ]t%Λmg-m[ZAXmں 敻XOp9HTqN"dQ9ÇٹoKdzO|ndǟPHEB;**mv8Τ3bl/1e56 TT D>$֏r?a&VQ_? ΧiCY@CN\l%75~2RNq v cCb,^\bSA)q㶷xG&F5IWX;%]IsS(ZVR*;_6I&y_ q{ r ˖/s,@( F*10`0Ew(B3 Fĝ`0& QHeV_wWKDr'8xS^d2Il1a6#s2 FeKoI;'`0qiXP>x Bht:[ 91^\Uؐ}߾b C---H/n^TVVHu]V $|_h5ӧMvΞfO9;bI;ߜ%O<ԝwގ2l9d ~Zp_xEiضݣGۥ"H^d/K[俥"kӦץ"W H;Eď~:wiam QH2Q(`k`l.֙;`0 ,`0Ew(B3 Fĝ`0?Pb]]reZcl6{{p+*ʋiy\Ӟ>ZKV<А_PTWU-#&٩I&D*+-uGSD"==RYU<<}q000|]]m\/v{P!Yvig)K'#77Jrt9tW-P6עJ ؘ>cZqoGܹ}Ǯ/Zz)F8TϏ<ĺuuuE_{C]]xUXxae}p-[\ԣOsC۱cw̙u;E0n;1wޜ~_//y˖Q(.pie.Y<[/} _>ұ1a>%,-hT:Vؾj}/|+ؾ}G> 6AixW̝ɺw8GZH>ӈ7TtG|1h%* 﫴ұg}~3?JP)ұ1wM6sEpT 𳋗4k4jZ4;.i s̗ P(-_wLJo1st8#14SX<-/oƩS,نu5/8wٻgߕW]Qy(&_x???=9^#{ЭjGjYy*hV_wQ|k^xqJe1MG{:N'>h _GyLNfFare%R\`؋k^ͯ~;{׭.F^.W1<ɓ3go}w?D:6& o+&iT*$>_=oB:V?V]~YSSTT@ƿ|{N$k֜f1ӈϛX,nbx/:wnZLwW;|o=|d[[~c T.W\pfNl2IQ/.hHCF e}**ʥi?ڱq&Ԃwm8H  T+W@gΚ%N[&tΛ?7tͅ⚗PW.WYѴ` YgΛ? n_svM:\d{VTUVV2mTyRm Cl}{ЊB˺6|ڢΘ9}R :=}B{Z,uuX7@.\ >v+*8J L&ZRQI~bʸ_}em2t E7J?vwBӻJ>oL&Lfce+n"Pр_Znl{w;>wg)N?_wp\_M!>w|73,͋@,𦐵I;Xue$j555Ǜ==P˯|x<𹰁MS.xYq\Ԃ?2b400q{!\qPlqVVUUJ>6/`!o q"L a`0Ew(B3 Fĝ`0&cK&|?|k9{>`OH\e0NF._`?g _K3o},o;f c*dں7zv!2MQdbы?^oSg҂8%\w~٣^*`Lǐs/Z$]/3m~籁vn~mOl1#6p:z*Mz?b #oE9cAn{t`ˁse%%|x:ϿC~ߛzY[z nliFQvRxw~o}o;JT ;} SؑM\&v~}_F4rUpo1`P@}eS_sus5ZC;LJno/ɒKgƝmIbp,Jf'L8E&S'\)d] ӈ}쐩N.H׭ ?}Ջsʒ\&˕SޤejMf`%vWi$:}{Zcdsw|s)d[>s]ti`ءP-n!Noz_lӪZ_|⨟ ͵2` "[:HT\'ɻ+y YF8whٵv&K#w,[I*gcP,) f2 Vo?{>BY s3Ǔ}g>+`FJ%ibTr!z`iAz<`ȱDVdWFoV0Zv^7:і_ELŊL/}ь0NWyy^Rc,sscrD(M4iR0qg3h zR*Y[sg#$Sl4t? % V46nI6"dΘ83OEP|1Ŀ (>/ % (>P苦;3ie|{g蹪X-2s=+WQ+]L6O w[C{_F qb Uvz?Zb1@/zcs>~if,ӈUSjF 1_Mjbuݠpamhmçϙ>a\+5%QKFkm}ۖ?ޚD\!~6,-7SثŜvķ5Z;[rmS5{yDyH}r9|-ăFAJjI.[/]mK 7KRDrYQO-Q||6 (0 MXd(@h2_f<:”_δ*d>e\c?~,7?& ك^2Iq2"y@g|U\ @IDATx\U0BE$$) ((HUN "ʥ+U*W0^"*pBN(*% C 7g3ɼys^}o)e%) @ @ @ @ @ @`] @ @ @ @ @ @ @ @ @ @ @ 1 A @ @ @ @ @ @ @ @ @ @ P @ @ @ @ @ @ @ @ @ @ @(B F @ @ @ @ @ @w @ @ @ @ @B@{!A# @ @ @ @ @ @@{ @ @ @ @ @ ! à @ @ @ @ @ =@ @ @ @ @ @^a @ @ @ @ @ @ @ @ @ @ @Bp/0h @ @ @ @ @pw @ @ @ @ @ @@!b4 @ @ @ @ @ @ @ @ @ @ @ 1 A @ @ @ @ @ @ @ @ @ @ P @ @ @ @ @ @ @4xWӣ>f͚^|Ŵ+UW]53& 2! 0sIw_z'?FƍƎF5# @ @ @ @k]Jh 򑏤>:j SI~+xӤI*[_Oϰ{!QGN<Ćۚ:uj:#")S?okzeϋ3fH'N5sI}{su>ӧW.N;Z{cɝ.?啞\@ @ @ @`P] @`P.ҴzSN9Ν;7׿Nkƀdu48C n^{F[E]o @ @ @T@f @R 2uQiҤI^fСiرiiJ>h1cFz뎉@O<1 6,}{߫ۮ%pF,LZwuS~3<\śjF]vY:}O .`@ @ @ @ @}݋3"@h(0gΜ[?uX`{?]&'O9L @ @ @Ui7 @sL?}[J+bg~G<0]y啹~i[!W?>|ӌ9l}e*?Zܾ &\|}pkV-J󾭆[g  @ @ @ p#QAnt)u0#'eK=}a\þYgU+r5jTt~t%TweN;- ܾ *狅5X#M>=Wg,y?? @ @ @^`h؃ @`~xӾJR;wzqȔ|W/;O>2D`ٹ3&>+;SZ`*yRL&mrnV[mʺ @ @ @ 0 pGX @+p''x"曧;.WӕZ*}߭;, @`j'1b/;ȑ#Ӗ[n[L<9曕'NXY@ @ @ @ALo}$@'(zdo; &Gyr{7]{im5/ 2$=:p|0OfJsI+B?~|Ї>z^믿n4sٛb5HzZdEvK\##CK,VYeϪ©Js=D"6&2OI+;i%,mFi.ꫯ3fT~lԨQ+2>~gwQsϥ^:E6M7ݴ_[0m[{za]vY:=O .rGܷrK/ D~8=gV%}Gg59{6lXZveJ+6x{t֞"Է0cݬm< x=x;3ޟq_=Ҫﰾ8 @ @ @@`' @`>[K?s?[ou'?IiE-m?4eʔR5Rd\Zhrnb-VyKӦMk{Qʂ}+?YpK.&tz,Ƚt) 1 Y\_b)UΎ,p|)6fʗyKYرc^#:=RےMH(pW\tk(eA,`K~ӟX}򗿔 ûK+R9>;nVB磌*mfuOK뭷^O,k(7pC)HROR^ FoxT=g^rz{,o:w0J/r=p6oOG]M)z补lLg|^OM,﮻u~ߕ=v⋗♑Mީ;_?׾/}K]m^xa:38 sa Ǻ7x__qO}S>7Wl@wh;~ @ @ @l4 p} @8" ?KW&:˜^BBlw#gYJ~s:uj)˸Z{s]]{v*_Eȑ#:>>_\9Bm#p/eY뛺F=_ʲ%7:}uP뮻gbr>;6G`{Ne~8E)Ơ-?ӥcl9\\koe/r!=z}29ꨣzGoj :.bPՆR_#z7ϙU_rLIEp@uOcC^{4iR)݊.wX @ @ @ _ @`>袋zb)~zR~ӟ,-]y=9,&i,mʂӌ3ztl}zb-ҝwޙlMw#LӦM?nܸ{5X# 60^])&|󟯴c%LYݴVX!eӔ)S4f̘2˔q38|_}wߝڴ6TWw eܧ/'NLX]~27,}Zn2 )':O~2-څ??Ҝ,q?&L0ܧo1G7ʹkVυ6jRܧ%V[-e_g\]⹵B ,3xR<cEL֎{oԨQj@Am;,@|#iN~{I1]vY@_~=_wYO|"e_⋧8 }(?8K믿^?1f{<9r-n89B>&aٗ+lP7Elg]~WWUVY%mvՕVwzU:g @ @ @@ @`>Ȃ#ssܠ{)1"צhcZʂ;m5\S>Kvz\^wL\oС,rݱYd鳟l:< , zݱQU77*;kc\++ mxlD[ʂ뮵>4ܿe1lI) 8إ,k};6 6mGe_wLc\\d,F`Ԏ˿se9Z ,N8OB+!Cҳ>[ۼzXdoo ke+M:ں{ϑ*W_}uZqo]wueFrcl-Yܱo*fعm$ʶڅVA[<& N:ڦU1S ~u]}ko5 `;6Pϖu}r}61&w̗.$C< *~.r}އOóIfu~&.uJM)ŽZ}-RٳgUﰺN @ @ @ P  @O>d]F]Wʊ=gΜ%,ˌő 92RZc#{xdiɂ׾{#Ctdl̍J^nog#n;4G➔#8"wyilxXdg޹sNʂsu+rJjZqSd]^>2$Wn)EꞖȒ,=E_"xdY/==]y\]6xtQGUW-rW]uUjnwtYg3++R/Zo>O[ 7:[%37c{_j͏UǗzZ@qOqwVY#|uIdU@=Z='ݳ%/(ėH:+{.+˭Z  @ @ @^ @@4 p_feRM3[yVKen]OCG@]W%|nGy~m>_ctNFfKA|\`ꪫRD8~W{}"1q'"htBBE0n`.o)&t=eʔպ=P_b* >_Yg6;mMS;agWO#GlZ[j]}^XBǺY[o5kLjTofi喫?@wkI @ @ @ &0` @~h5XO>d;wn2Kvd%F3gVxG+]-4\&Lt,m ٳgW}ꩧ*=]~8=HӧOOLu}-,LZr%zG..4>묳?qDFf p=hDb+E0alNaҹ[E]T*U ^xaZJ'Ṋ71گ3eܸqMRe=O:餦12tەh0z. X7;O?tn܃4Xi}7]TE @ @ @p 7$D_F/B^ɳ5no㒑I:_l%} n `#1;Jm_G}W^y}ڴi/Ϛ5nBBq]9ӌ3wQ#|HcƌIm]c=?Ą"ǽ?rR~NO'O\rTbǖ[nYYBgk^O;n<>#;Nէ=z.z{2(cߑE98 _vl]xEk`Vd0_{*-Rx6Um{}W/zSZ=- p,]ivSwl{Ύ/B@=Z=ZƤ/w`wk~ @ @ @S@`6 @|u])f=˕ /9{gxwʔ]sMŜ9sr5嚹 Jok#xr9 &O>9kVO3LrK7 Æ a=:fJO<&M_`8 }_'(}TgZ<#Ҏ;袋rr&N[JǠ?7rn[ouO_v}\۱fKS]kYwX8 @ @ @]jj @ ;"D)S=ܳϿ|t#s6JoyQ]g̙iM7oGL^)-r Osצ߿.80vUVY%[/?->}z'J~x'ݯ~{)OXdE*}uW(* L*w=}ٕɓ'xƆQ}9Z=-䎾u;&tW3w{Gc}ƭsd7x,B~s @ @ @h- @|3Iws-5+d [o;N庍0{'2zyzy֬Y=nܹsSm/_we]?jRw_}պĉcǦJ|wݯ4mڴO:5uYClsW(* L*-"Ef^x\/'Kl/iƌ# /٧[=ϒW^yBŗHXcQO4;2h]zk_ @ @ @%0t. @p Ә1crX9s:蠃ru+R:4O ];uS?SuAƍS<sþ~ߧw޹ؿQy!=Q^??rAɵ%ܫZԛ >TK.Vgoʉ'VfcK/D{jvSxFpouW-@Ǻ'݈~Ťz[W˿/S}y睹[޾úr @ @ @@QEEiv @@d ,_:ӧOODV=أ8"7宻J:իr4l%~VWPA .`|nsdD/JyRdȾ袋nRܛ1?pn=ۻs$^]&O\E]|ŕMzZ+Yr75knzl&}+WJL6w}_o搶ߧc,G>ܮ?x={v^z)xi]wM1!0pgWn aY @ @ @ P`M#@F;_\]OW^y啴;T6;g} /ܱZ馛Vc!2FPqO˷C"Rt7;V ~'Bz4lذܱݭ\s5uD`)SVX!-`m=v79 z6,-첕 H{7?ϩ:syd=\h>s?4ˏ~}__fV;k]?CvVuoqnטp[wmȌvUk}תwXs @ @ @T@{AF @-YO8ᄺN=H8IEflvAu~cPS1urȺ:~y~oA?fˎ;XZ^FOߞnᆺC]6`3 /r[.-B:q¤$&. K/4WWz brs-ַJR[:\WVj9OYE<k߅offm:;D}&n}m-g\NTv9&Pl]eɹi5֨ޥ˭/GjU38>A,L Ϻf qQGM{랋ݵݶzn|_SOO>9Wʹ瞛k6եvrX+Vêk @ @ @@qT 0@YJK/t |a}NKY`c9&MDZ[[~X`\ݑGYwygZwܑ;6j>\?;ߟ6hAvZa*˵SIw%#nkGP~,Θ1Ž{~~xnc}!E&lƌӱ~܄qVAr*Z9͚ǿ;K%|뭷sW^yeDUW]5dU>Z'@ @ @ P$ċ2m!@[/vmi뭷.gaHKG׿ &"?$Yܝw9tIէl~(wG䶟s9=#m`_|1M6ygE~d`Dhd馛g>rPhdӟN<KL*`3|%2)G{L^#F(o~{/~/"+뮫4'YO:?>7._#G矯 1y"Vq zx6.~m2dH]VAd>Sxv.pϘT% "naر)m]1)tAGL`zC\7k'ĵ㽲k6uvߩcݬw㞈g[9?y#w_:2/"{K.d Z @ @ @( M @@fmҽ[w}뭷6vR`ly`Gf4^]x}\?LMoQ{d1_qcM ϫ U=&OW??R"DfK~_/| iΜ9fϞ]RfaҤI)Z=Ͷl-,&&pUOML:鮭Z봳6 @ @ @d3 < @`^?Ӳ.&-0^r%iy?r#GywLwuWlcYeUʙ7d{)Sf<ӟ'84:yd}'Lw}w9+V[m;<2?Z +97miʖ>b7'N߱Z=X|嗧[^zcmz{$xbaC zEoW_ƌ!V]uVw| @ @ @Z$ E.C(RK-"{nd=si#FmT" qo{yo}ahy#~}-GfKL<馛A,HîFƾc 6ܯrEM\sM'2wUm]yB_Ə_D>4so~3-ҝvgJ]vY:SS+O^DW;ο˗3;f~t 'VZÖXbt'r窍ZE @ @ @RJ!Z @x饗c=Vy˿_{YrW_}+\`gy&=s)"H-~6`6= ;PΆQci#0OƍKZz_^د7#c3A;Tc2ѣY; 똧~:= 1'H/x9=kof=>U?>fҕok}o;3=CgKǗCbrT<~G@ .X%> @ @ @`> @ @h@ul둑<2O `dﯟs& Vg. ^V~w: @ @ 0ש  @?{w6&,CIgtw aw1C@6f R.]28W @ԓ@T^kJ:[ed߁Z_.D%y|pF @ @Ԏ{ #!@ @ PZ?d\>Y%E`9OV.=VvN'BI݊QiyoEd=G.&2ܶ'@ @ @p @ @@ B۹A[SSSnHV/G]*@)^>$NW{/M{ @ @ @]pK{۶ @ @9W}kk+E&[T[/W]X/ ({ uh G5x @ @ @ @@MGhH/U.OG7B_)P*|*@]r @ @N@:' @ @ԄΙ{#~-Bú񼭭Mx&/'X~-(; pI @ @p/3x @ @z8::JQy=/{ppp# {KKˍ|7%PQ=&A{, @ @ @( ~m&@ @)Ϯ666Rܯ544dOiySSu#P7ikkL=źhwy޽[oX#@ @ @. ^{ @ @Ԕ@a׏lݽ1F2{3D~jٚ|11: @ @Ԍ{ !@ @Gξvm[ZZ~ G=mmm*=6J 777ܮsBKwwOB, @ @pS @ @%O|p(@TvϫˮZ[[ G> @ @ @" io+ @ @@M DPtuK1]]]ǡK P {L=U~SROOOk @ @ @ky @ @@M lnnhWi-_Ek Կ@\JU! dk @ @ @VkeO @ @@M DRR~޻wASiMNE˶rߥx|ٷ: @ @ pe+z @ @zȥ {ܯ_i" z24ӓ^Lnkggt =C L @ @Wp @ @R `?hݽҶ j Jv%;::PLع4 @ @ @%/% @ @888HY3BkkkW {F%~B{@5Ԣ@Գwvwwg1/\ @ @K  @ @J`{{;-..,~?ٻRCCC]yU,">007R#@ @ @p @ @Ԕ@أ:{#~ٰfccc*U&.Uhommm5\~vu-ݢeZ[[[|^h @ @ @Zj#@ @9,]&R=#!wwY & DR=Ǖ1.︺{\C#@ @ @+XG @ Psǡ^^.lyQA 1xtxxx!{L*jhhu&@ @ @p}l  @ @iaa! ^h{ZZZR/z  @ _ 'wvv;Y'Z#@ @ @ @ @5'u\=“GGGcT@@Q!Bz: @rowLH6{nwk @ @ p7~ @ @q02iYFƭ"/חY`xbi;^MKMMMy @ @ P`3b @ @@M Dd_Eݨaĸ^ @@ t miOJǖ8F#@ @ @p}d @ @X__Oinn.]4tq:M5E!ֲ)Ain~zA㎫\DO_ @ @Z_ @ @lܬz["H,w\V GtR:<<ڲpu: @ @ @p5> @ PXUk_^^z;Z[[ @pJvvݝ"㸥 @ @ @ >0 @ @@ eq|Օq{zzCqRu1600ޤj!@ @ @ߌw%@ @R`}}=+ >x@۪t"@_%W!GZݫinq\5Y4} @ @ p׈ @ @Eɂ)VZ[[pFj]`{{xUpڎwUF' @ @ @ PH4??Uk_^^jPVOE۪t"@ZX[[ˎQݽ+twwg4 @ @q @ @8::JKKKYV5zmۛzN @ql\\\ )W` ` @ @\Yz' @ @@M gvuueR[{ՠ @STtJUo{/{{{]ݤ*5 @ @ PY@ @ @B dٴY6fwUVU mmmΪ^ @ @p?kb  @ @i~~>־\6466Z{__ʳUDwI`uu5 Gu6;;Fu@ @ @ @@[I @9"~xxX*nojj5: @,l"Bմ,>88bbF @ @+XK @I,`dwwwcWWq5ٶ^ pV`?1xnn.퐳$&EE^WM1 @ @! {@ @(NMU5 k @ loog"쾵U՛D񹳳D @ @" ~W$@ @ )pxxUPrUؘ\__ UD.MF{Tyuwwg777W} @ @ Pu{m @ PT433^UaED\@LP[ZZ*/,,s?$###ill,utt_ @ @ԫ{YE @R`}}=}-ZM+=x r Գ@TrGv մ4 @ @5m/ @ Psd_\\̂环8}n @΂sssikkADds@ @ @zph @ @B DE,J!ݿ? g\FW G=nqNP4::bF @ @zpk @ @#aEM#@K JΫܢ{Tuw @ @' ?  @ @7*¹Es@[(---e nLooov088\\. @ @({v @ @8<??cui`6q @ @ @EKH @Դ@cÇ@jhh8 @JvZWWWvx^w  @ @ P5  @(~Bf7!Y,f @*q1==✤RkiiIcccitt4Vj @ @n]@w @ @E:T~"Li @s҄8Gb]Ts+twwWj @ @nM@}0 @ P4455z"6Z|fll,uttTj @ @nT@Fy9 @ P4ڣQ*F=Ba @|4ĽZc"@ @ @|< @ @|/..fs_apn @"DՕ~3Ջ@DZ'O @ @ Pp/I'@ @jR GR85*F@** P4(ȫ0х[8xǧ֫ {'N,达^mmll,=~82DَV @ @ pg̮ @ @XnNY# XԈ@OVU?YmJZjdSmuoޏ#^ P|Z5FnT`~~> onn|azQ6lG+ @ @{6 @K B߿O_~Mv-"QrH`omm1n^ŀvT>0U/zʼnӁR:Ow\=W܏,J?b?jԆ@# oooTLp{ݛ @ @p}k @ @@"4;;|vvvʎ=N?Nccc)P#ADz{`J瓏KJ;rѐmom~~drQ_9{f^Y~pg @ @p?kb  @ J<#rM5r2Y+*4Fո#^)^ ^}㷽t//-Tq[[ۯ#pgoU{ @ @* W䱒 @I411g}NZ>|=zZ D9 'RմKJn*|w1&S'I/A499Y<O>M)5 @ @W@~-#@ @5+ˎ1cccYlG+Z q㛪 GezTcTz鎕—&hloow-I'+ ^1۷oijj*eJ_w+sOڮ[m)~&&dR=LoԺnv.933bJ666UtwrB @ @({q @ @B ,..?^ fAi888Ȫ _g۞s’''q\TccOL4 Ĥ/_ٲWre @ @({Qq @ @DӧOiaa`{4'?'[yG GV#@bn ǕKb*+{UU'\͊sW^} @ @ @vkw @(@&''[_TOQ]#p$'Wb`lNVe;+z1"K~cc#;J{755U5&Գ@?jA&f*]  @ @q& @ QTk}qzIR1:OȲ atk\#aR5%YޕUKqY4wQ 333ibb"Dixx؄\!  @ @Ԟ{#"@ @@OB1 dU;::@ D.*7 RGhͪ^~jK`kk߇Jkmm=}߉PvQ-@Ls{١DŽ/_fv @ @p` @ @XQvrr2a4882u%UcO٣Z1 fP^X5S ~CNWyoHL~9yu Y >|^qhzY @ @) ^Ũ @ @@ D^u~\MϞ=Kq @ @}F@ @jV UG1666Ǐgx(@),U Uά:{Bh%-N&JVswT=&D^#Pd;JQ}?wSȈ| @ @~I @ @0[[[Y=BZSToU Bn)&s}ooBأ"{Ki KL)2sY=[[[kaӌ?11fffʾ;z*;d @ @7* ~ޜ @K MNNfr_#400P3Z'8J W7[qd>dd$=})E!'OG YVYuRzzhOMMMy3qIDq}-~5(fggϟSٳ4:: @ @/ ~ޑ @Ԭ@>~ rhh(x"Ev@ lnnWE[OOOL} |"*-.w%rXAop9)oK &MLLCq\޽{eXA @ @/U @ @Pׯijjl#gBmֵ@&ި\---z PY 1V~\ }\EF#P+ղCNϟ?weBV @ @ͼ @J`~~>});dO>.,cu llldu#tSwttdè+UN 1/*DŽ\bUTtsi˗܏jjjGFFr[H @ @ o'@ @DE;䎹%~: 殷u R\uӟRj  @{Lޮ1*1*&\inR &aD5浸@歶 @ @pކ @ @@VWWpLV#!bM,HTG466f."D^JvOU<1*&`9LK9ϟt q?44B @ @wQ@.uL @8<}sɓS\ /*S|U=Y*  @@!kaa! UL"^EUus;l)u$@ @#:ڙ6 @)zc1[QGUkZ?݄:<<(^nkkknFtF*UVVVrUrY,$@ @c:޹6 @j_ B>|([A{ll,x"EPe"m|"^Mho``8w: PTdš]]J߻H&U3 @ @pQ^oN @Ǐ*y=ׯST\V ~= ŕ*E8/Bz @]ctIqL8:::]u lll?3}^M?Ye @ @" ^/{v @ @@a_>v @ @@   @#ppp>UuKKKzUPFGGG)&OD.k`jhh8 @X^^Ύ ztwwg8kll<N fܷOʞy\ښB @ @Ep/3n @(@SjVׯSru,$'R{}J ===  @ 17q cq㱱4::bBF"LLe @ @߁O @-U|~;Ц4>>FFFr[HNv5;-S"\gE*+  @\v f]]] T%޿vwwsgW477箷 @ @@܋ @ %ϴ;#箷@@\ *#oO"<,L:ԸWVVq@5{{{Ǐeڲ/y;} @ @Ԭ{#@ @ D)ȟ?NtϳP@i{^uiqh @7.=77{.xr1;oǕ}4y^'&8&8V @ @@- ^1& @(v믿RʝYUŨ8O t~= V,$a9]8vOOOJ9;O%(vvv:;;;zzzN. @ @@!  @ 0;;>~rɓ7sy,}=gEq( @ @" io+ @Ԥ@"Tᒼմ)Xv,pttU[Jǝ߃Empp0 ,Ԯrt_XX8wQyÇ)&Hu;lmmeWZ]]uOo޼I----$@ @ PkG @ %޽{r=66?r[H ?~H_|IN"~,7(@cR[\J[ښ?~FGGK(9THtkooOo߾MݧWyN @ @kn @E *pioo̐#UۣZF|B,%[6#&⻥ @!vōjkkKO>]=(w @ @nA@}$ @G( (ONN:*n|2555宷n lll/_QEgϞ$ @* DRt޽b?+@_k1ñ @ @ rrH @EKgnÆƊ9 \OʪlJ @"9߈+D]#PXXXɻ2U\M(LQ @ @ %@ @ZX[[K޽K;;;gښ޾}+,tF.joool{ pJC]1f`` ;ym $_':tŕ޼yJC @ @p-yK @5+ÇttttfLR51brr2~_JBQ=*Gv pY}qq e#Q[#߿~ɓW+Wi @ @~y @ PӧOYX9occci||\#-=\ʂd*`.,込\-3w^z]ptt;U˵,.UNr @\)Bv;+dGe1Ǐ$O>;1aT#@ @ pYy @Ԭ@pƲZcr)9XNSirr2;ɂy-&|R<:^ 600Us @ @_Fk @ @fvvvVWWό1^JgYPQ}tbb"̔,U5 @[[[d+o`OSV,//g{]){ꪻA @ @7/ ~> @~Jz]*xm0VQai?wghjhhc! @糪[xQL(}qvs0u0&`yWJׯS\)I#@ @ phK @5+۷ӧ7oޤ֗@k>~)mHzD = @J499bRa^/_Ly-3rWMzazIum @ @&oR{ @ @ Dinn.}*LS_ rD* ^J=== PbOL)Z >|&>I= @ @pEA @"޽{|~SSSV=B5Z} D&4?NkYА2 @K,,,dAW766Ǐgxշ@\M)G9_ gd, @ @8- ~Zs @(@&3L{V*e7ttt4={LȲBV @&WUL_~ͭUܣ W.«JgZZZ:33ҙ @ @?w_ @(f[)*k+˵ @ lmme~@t7,Q],MLLdNoPN @ @@& @ @X]]*Ǐ,~"(}bKHjhh% @,,,dA9ړ'OR766>g6&o޼I1AY#@ @ pZ@ @ P?1F3-Ǵ^vFGGӳgRKKK>V @ܼ@ONNfA{{{V}ppnM *{.[&@ @M/FE @fff҇N-MY~- YgA}eۣcӓbCk @#U?}bj600;::ukkkٕt{Qv&W_:-9 @ @ }o  @ P/_nOWy^GGG)&6LLL-Jϟ?OdN @ܺ@TD=E٭)eJs|He7bll,={ĆBV @)A穩Z\i||<Z} ?UY޽{WyN @ pN @(zV}ww̐#vAT@lm@˗/Swww>V @_ &~)-,,ݘܰl+'۷lߟyLlU @ @Թ{`G @,--wޥ3C~yzW`qq1>MfjiiI߇Mj(n6r @<1yWt7sL|{{A # _~FFF, @ @~w2 @F`nn._g Q= rC &0D={ @~Tky- mmmy-+r;ӧ)n @ @pV @ @f"-*3}6 ^yAVVV ۹[p޽ݝB @%|DŽW^箷xcN8lY,aYeYlYuM  B p/ 4@S(%PB8C p4)[ۖ%_,wfvfVJK\;;i>>t'U:B@@@@}}9;@@@ a4* czzٳX|o> gѧٲeˬ8l5@@R\ӚԩS +Z :+8sZUU    0uOk˙!   +;رcc̴:5kV` OǚB):<[bedd$q  &pY۽{9r$5gΜi| umf'O F~CC@     >u%g  $ vĉb В[@[ZZӧ[yyشiG@@ TsN;sLz}L*|$BunllqC:F4 @@@@` pzה3B@@V@Cͫ _ooo󭺺 J@&;ê-lԑAU۳8b@@I8}r >z2U%:˪rkkkD1rrrX    ܓq   @Y}})oϷJ*yap ڢR{YYCv  #8|ܹsOu?{j Zr 8pԯQG@@@HbI|8t@@@ YT[Ϟ=8EYyyy`9 K@3U]U4B@@Q 8uuu!;;GZr C9Mg5BTQQ    I*@=I/  $@{{566ZXE +))IS8c;vvځAOYpӉʙ1Y  0& .ءCl޽iSZj:5a K.:!@@@@ T{( @@@C >Pʕ+п$8sڵpkN%ż,C@@`\zzzB|> ]vF) td0   $^-   4wƌVSSc ВW@ӡ'1|[lz@@(Up߿轈!--Z\\|8p]WWgYYYu,Hsٞ={LZzz&;wnj!  0!j Bs̙3V, v۶m5Tuu5n:r    @0!  J@FSuoS]vi)pI'$V%QgPˍPr^_@j?ٻwFR,L|]ㆆ lvvsI    @ pOK"  @ 9U9s昪Λ7rssb3gyo:ߚad~;x`ٲeˬ8t= @@LԩSQTTdܯ$B"{ȑfffZmm턏"L+4h"+--5xEC@@@ZFl   [@'6l`&֪+WUNmTCPdM7d~#=8UCN>=/TmcXs~!  gϞ]vѣGCQ#M{~~~z&urҗT딫J yX;v]Ueee|%2?܉={<`=</X.{;to<    f   0vٿɓ'aSS ox}4HΝ;#=qDdz'T~˖- VRR|i?m4*\@U[ZZl߾}iS8CA]c_y@@DPYoWվx6UwW]}\RDK<!$#@IDAT~ӽrcc\fΜiwZkuVgT ZV#i7n;>C9?gyƿy@@@@    X>OӨ_z[|͟?ߩe K8pÑ9r>ˋ,O U_]AJ9p6۳giTVVVf/F¶e  (*ߵN'Ͼٴi7B>`t}t?aSgy9ܷmu_kXUnܙ'|2n[sܐve]f7"{-OM@@@@. p@@ƍjm#i m~;w6n߲eiuosL':g455YcccHagdd*CEZZG@@g-ZtT(l߽{/ߖ(_*%UW]YqTy_!w HC#%|=Z6ԌK_LU>@@@@ U@@@`\ُ*D;Qܹ3j~jgΜp#4en%3fh6ܐHGyXn[`?v饗NcGC@@@0/9   H[N_r w/+VX^^SZZx_#_WEU~Mtvvw]o~cn'f'O|@^:'Nӟ]doy[ދ/v?Cg'@qq򕯴뮻Ι~رq|/_1  T=Dyy͝;HXy4*p/\л8 <@[?я:!wu>{*` ܽ~͜9ӻhD7p=3 Pc_@@@@̦] /\@@@`to| ~ov{ӛΎ   _6 \뮻|UUU$O^;>} pl޼ӿկ:{rĜ9sLz5?:|uu}_%K8 ^WU/l[w( Q.KG'}9 [U+++/@@HFՉ@?y9GS'lj>9w]|nFw6Qr׵u[GGsΫc=F[ZZ/}id>33 %{4FG!   I`:   ꪫ|wèpQL g>v]]]qp{`rˠv=ɓN ]4ܮ({*S;L}C穂y59m۶-4ܮ 8jkk /  S@unTSS:”FRG;eň|xZ׼&?tގzřٳg;G)ᗿe֮];'^B    )(@=/:  'pZaaad +ͩ 0w[V+\s5v*?N;t|ԧ* k5US0൯}}tG?}C9U[G>hYp;qc~F=¼n+--5UmSO=U(ZOO󻨎V2U!  @P`ܹn: ԽƍMzi/Gy$㒒{ ^ׄ_G>''r {5yf@@@@O`=!  'mw}]wu歖~QoG\r%Η󭺺f̈BwuWB??~z'л}}}ާEMU?9TPZi6ww+**뿬,nѢEWҩ}/?o߾=*`SyEg͚5ξon1Wۋ0'>l;w t`! S |Z  *Nlm}ŋo[vL\Wi1suy߹Ȋ?{!`^ӽtmY@@@@Q ɮ@@@ 5*/]4@;7|.T^պ=nwoovש❎{a.s)p {+,Y䯐z?+L6$Z[[)xy'خNXBU>\z5)y9)@@xh+WƼۿt?{l<^>%F^ywF|yyy5u:ӧG]̎9;u!   G 5+   0TnJKK=_7O~.r{m{9]_"*p X_}T\۝:u*6 sz)tqׇU_UȮJwA֟C.Z(j>lF!6Pj_SSӟ4jM߭={VAASݘ   0:9ݻ'"괻l2FOR3z .O~B'^uUj[bرYPW"ls^6t 5:B(콟; @@@@ >^@@@_}ΏiwU kéA`ML8pݻ<߿?5y{]fǼxb+++@@@ (N;g۹s;Ҫ:xOO)|+I&1Z6Tܵ}pWGk!wuN,    (@}1   0U1}cQC}7adQ0Z!2 uVhc 򗿴{Ƕl8TYo۷o)ʕ+l@@:fgg;!쁁}ƍ湹Q xVlذD-SO=t~Z6T]ZUݦk@@@@`   ^CϏ\4@@@@? P@@@`hO~0֏Kg>3=-Xzy޽{#ÝXdIԦ&WUU̝Q]UE*pCaǩՎ?n7pCpz<+V8GU9ssh_&:(~;p@k˝`F,D@@)!Xwm|^DG5upFwvׅ=;؏c{gꤽcǎS{FB>Xݟy8ÞPǝ* q饗??ļj_G@@@r%9@@P,{ͭXի~OsrmCBK.u7z萻Da~^ zPƫw1FSSuvv^Na ]'e,@@@ syyy͙3̭QiZtg͚H?Q~}9#E-dٳvWرcǜԱ[Ȱн!FgٳNԻvrZ;BUw{zz'ua    I#=~}6  LXpB_oٲŝ: #m/z*nU}yW'X Us[AA)pp1ߴiShݭO@@;w[Apg{hZRm^ym9muV4ݻz~y(ܮz͛UM}͚5Q~7 yᇣx+^aϥ!   .@=8@@~_Ɍyw]iUmP]ëNF8!g}tn+Ml,!M̑#Glͦ*ʐ W1  ( k׮ oQqo7W_}^kzW8Y333#bM+/~Mlayw`!   )#@=e.5'  -ַռUW;we_olo7y57naӐ#maUrW-Z䝍9O*̟9s&Bn׮]cǎp{%%%NEðn#  L@ZZ\Җ.]zپ})M#=#Q~;S^^nuuuQPm$vwL^YYT{Mjy{K/@@@ܧ@@@ n , {} y+dq֭M>ݩ"XQQa!  @b :S7nTY&jıK.$v$K6?իm8۽tqq/|)@6u_)?TSxu{/| C=    @H3D@@@8|u*ڞqSp.VSScN}*">k {[UUxE#V[o>8S~/Mf:{'GƪBj*'a(&Ks?Svw;f/i~{hxSUu*+Q]]=v@@F$g֭s>IlӦMN𢢢w*lFW_5?5t(Wb _qU`;utpႽo/~vqg-w{hg͚ܿ;w]__v{ f@@@@ SG@@ ׿u l +6UM?m%%%ξF[} /u\n۲e'#* FVz&`!woE:F=kru]}ʝ_l*T|'rv߹ꪫ"Ýp^.t;ݻC{Sn K_r~䂂Zu\vwO}ʩ     `   c;w=Cv 7*]{ƫJ~{;|>TTTE/lΜ9Q͸!wݿh|;0wG=*}n]xN[lYi=Xd:Q&Tu^a]Tʬpy@@L@#P-_ܩڭQM^njO]y6Rx._N:whjcm\J/x3X>;::BGҶG?]s5aOe    K^4'  C)O :zvŋ5yo5* ئMl<!/--ͩڮ4@@:Ŧº8uTԉuuuƍza%aۮjav=Iv޻wodw_>2? u׿M-Vӽ]MM t܎#   (0x KE @@g}0uggsI'0o<[`󥶾Ϧ[cַ"z)+((̏dbC#9DѣN z&ypL   06۷'VpkoyyyV[[k    0|÷bK@@@ c7tk׮k֙nWt 裏\ OJ--]ԩe   0u?t IUTTļ*3Kp{d7:kT.U!    Orsb+@@@ Z[[… Mu}rrrlpNꡇ5aL-==VZeفݻ7fESt*3޽;4iz  @aaay֬Yokk/2$Z]/T@@@@1 p3!;@@@&W@_ڵ9EEz{{#?Ddկ{"cpڄܣ:\ffY4= @@RW ++˹73gNݶnj9+["dޗN<     LX5@@@ Qzzzl͑}N;#*<@5\c˖-";q℩s'h=~ݻh ](|////;8{SmQTmfΜ_<  :666B!Q6UZ"۽@jjS~    a-   N]ڽMAoݺ6m|v-ǻr7u 盂iiiM@@@ TJiuT7u&|k}vӈk6}t[jUn4    S7G@@P%pUn:~֮]kv=o ִj]v`y]*unW}?UVVƥcG@@8p۷/p([SScyyyuSeA2]sٖ-[L#y[zzYf͚]4    GI@@@ T Na'ND*K򜜜rU~g---v!S(@닊l…/^>r?ym۶)-Zd#  :UUUe Knw5צMn4@@@@ K@@@PAℛO{{{566סJJJY 0u)M F^LxHllɒ%#   )-@=/?'  "e[n57UW5d7B>ڮeddXmmeggW1 0 *+ HXx27OU_^RC@m۶zzz'oզl#   )+@=e/='  "g7o6U9sتU"{.S%~9kll"YYYVWWg @/`Bl2ܪf2;I fr< zihh8m(TM#y:C:%@@@@[  $ߛ6m 9ik׮5UA -C:~UM\\1h  O [U#Qe{2|i{u!Lw=Y™#@j 9V韛R!.]zHmަ^k֬a//     Ss   {˖-д 'z8arWRUBJ*bS"AvoevUdC]SP?e&G[ݝV >DX дw^kii :kFKĖ*v^tO.WG@@@HUz9o@@HhQǩ֪ULUbK{OOS=,YRRb˖-#p7Q9'T@[lnBZj #*gӵW{w+s)Ͼ@ Q:dw n2ZݵV]!w{m999zjSg<    Ss   { jEEE }c=d wvvZCC5,Ybeeec @B (`:x+@b jsp{+wƭm1SRرcoree'yj?ymݺq Aʫ4   Tڜ+  $@kkڵ+pNѣGmǎ ̟??pX$:twwXT] #vqrbO߱ٳgۜ9sQq4X(  0'N۷v]xg2[]{ܦQ***G@@@RB{J\fN@@Eöm8\USp:Z[ZZLMajS= 08vzTlٽT+O$ߗʻwӧO뙩3Enn|ף橚; &I-}sNz2GBĺ\tFo    S"s    n޼904y~~֦d*B.`CPk 4@ Ο?ؽ hMu7>s h􀾾:fGS U=--m@ {:R}Νk+W4u؝F=\Z#iD7SGBb@@@@)-@}J_^N@@E@I7mmW6R%B];vرc!33J,@T@uoԑg,MvwPXTyHoһ7?q}.S]aw;OCE@U۷owjjjLwֿSF@]^@@@@` pWC@@PRUnWSe۵kך*ߦz̐OCC8q"prrrT!аH@aި@X\sU(NA߉@J@ގKST߂>w0QP'Fkoo-W]vQkjj ^ p/ Ν;g[lqFȫ4   LeSrn    [iΨcU8j͚5OrWe}]\~~ix*&9hmӿI 3^G{< oEx^,m6mzh5yK@vK=K!wX1ލpEuNz6uBP=Gxz0   S[Ծ  $@ss>|8pVPPX &2䮊P󭲲d!-OXAv=w#ddߒt:tˣ4y2l߾}]oMMX9Gs ;^iuB`Đ @@@H.u8Z@@BVRR2t|Oe"B r*ۢEܿy@`B^?۝ǰjWߚ7AaDΝ[ &[@͛_5y#&̫k#@OOOJiJC (dEoԩS{oHuwu0a 0!!F*..qĺUիWF .BYY-Yd'@@@HbI|8t@@HN.ۺuk [aa\p0/kw\'k o~~HEʊcnI3MMM&WoSGZS(    0O+   @ (i&4,ڵk9+7!XvUO]j,i 0nVAXuIS( lFFHζ 0t^ѣP낂GiiiC= N>6yD#Z͛7onhT:ds߄5kpEa@@@)q9 @@Ht}eXUYW_Fgeey3=BUau֭W^MP`ׂ@`hg)Gj 2PbG qԩEܿ۩} Ou慠V]]mőyL3F_uR3gu)    0'CD@@Pю?uN\sss33:ф{zzp:`x M{{jUǚ4{1g'ԮJt"N78q)r$M Az!c{Bsp_$> +_oӽ:h3ʇWi@@@Hf|8v@@H ={XKKKX(I=V]gϞ= Eُ9tpR5ԑH|SLmrWuwuQt$M ϟ?m@ 0;_\h$Bjjjx>;G@@@ >QҼ  @kkڵ+pK,r] V}V+o~;wGEOssz D@A#) uQ@UvozsL=E#i @@(J7nRLiib޽N8_<    Tܓrq   ]C;w.plʕ6msöGm̸ !M_v   h/v4 dI\T ou?}t`9 @@@@d ,WD@@صkF̙3f̘ (䞝a   >2fAbԁ^5z9sU… L#   I#@=i.   p;|pPsFFF`9 /p   `ׄYMMMC}WW۷oD@@@Cx(@@@ࢀܹ3`Q^^n,?w./+   XwO i+V#    @ pO+!  @RnhhGoAAF-cfbnߺu1 x*   @Scuww1 s MMMc    Lܓjq   u|NiӦE-g&Nr|k^@@p]]__o=TrwI&Q#͙3'5Ϟ=k;;Gm     `3x8@@@ Z[[رcQǭP{uuG-g&#@IDAT# 0Ց[ĊD@#p:aGveѴ閗g3{ii>p& @__[GG={LeeͲVoӦSKg*V!wer:#&hZVX<rJ۸q9s& g,c@@@Hd|u86@@Hx}I{q.[f_ B&VN_Mpqn;V:`a$sȑ#I}ؑ_ lΛ7 O'F2BY,+^tT}jf{m.[`6s)© ݼ"s;!իW[vvvjcNk4*Y877]4    pL   0ߪm Dx1= 밦]߿YTZZ_<$9v܇j _Yaa!!͡XSR@ o?~ wuu<_}&>x𠵴8L\@ )p{ssXM~]OvCN=ꬹxbsmkx]=k,w    @B pOA!  @2ر6}I\YY]h[Z___Ty9B6Ӧ[VVVn{3$ MՆ1Iv@$fw~4GX#ӧя* @ yb)+b(:8pb:Wޫ;\q]PVVf'OtFp_Hl͚5y    .GAO@@@P={D_]tQ*q[b~|` m۶-r6zG8SiGХ— a0Ç;A^pF6RP elS (,mzAɧ鳙) ;ý*Hg7n4=zޗuLC@@@U{^ @@V@l8>Un/..,gAn ӾY@ oWAKUl`MJUjWp`RC{{<ߒzl.0T]32~ުosoE}/c 0BYX    .0#C@@J@1)N=gϞn_|Gzzֆ zI9#PvUkWkn16"h6FbSYY3ǝX#h;w +4t4H GryyyVSSc۷o*[nUVp$cVK. Bk.={6Ѝї#   @|F/>@@MMMmٲeS WTT8ՙGsGs8wtt8!IU͙3 Q*L9mڴ6g= (ONDzoV=>}VндLxݳwB%ԩSN}ՌbM:k= n:HG4@@@@ Ɖt58@@HhXggg1Kj R**$x!u4PPj, geevJ---,@ ^7nt4,ܮ yL:;w.^DT%.`IU{߹s=3٪LCW= 7hMy+V:[ss:/   Lȼ@@RT@v(qWȵN<x.\X>Gs8Xjƌh"[~9''g=" K 33Ӗ.]j^z[FFFidڳ>,{zzbn ?x#H:s֭[Mawʕ+B U@@@@a vl  pojj *J0mbav+rW>wvv04Uhokk!w_XXhӧSaH06@&P@yἷ… ~T ^Q0nw5B u)eg:¸8vٳg:ڵ+jg{9s@@@@D Wc@@@Зv̙cԗ U&F}v D*h'*H@ǏwGУyyyCn +{|kkd]G|QU4D#߿+mn%5k֘hc6ڬ[   *@YI@@@ kT l'N%KlѢE J{KK1 0iٸqo}p +x@) ٶ|rKqZ5>?N(^i 0z Gwe7_YYif͊zر#~    (@}y)@@H.rUUeff&$۷ώ=8ŋ[YYY`y<r*DLﳛ6mrFkX~3z?y,GH\}g9+{vY'a;|%rb Lv=yM˛Wa4At@@@)0#V   ),*3'8ػܐm۬/U]4j93 .֮gΙ3JJJiӦ I-peQQemmmN:}޽ _*,>I hD Gy>~әeҥ5    0}X  )( Jަ/w,Y]t:;;mΝWPB'r u^s* 8q www<- `{NNNX 0y[?lsܹ:uxAܹs X-^5bFY`w1quP"u.F[n͜9ӻi@@@@`O5/  "===Q`ʕ+ DoFU@UMJ &>8ylWxfJA& @ dff*8]T'TsG]2UtWН $j=BVG猌 FOsXQQa]I#f455Y]]$@@@/f)   G+NK\m۶Z6}ʺ!wmN˿yRQ@AuVw*C2Pk:XRb9 z̥{.+..s7oԃHp{˗/PmѢEQ˘ @JX"Vu&ctZ4:Fvvv0G 0j ϛ7/kk۷;'O<s;V 0)Ϙ1jkk{={ݔ8 hT ^) = @@@@q >Π@@S`׮] ޖaUUUNE9r#{ps̉ϋ^ "Hzg7c^Rٳg܎  &vZ;wnMDI@ 1r>'#3C4-`љ@@@@9Jr@@@hkk#GDIWeaihii -]TE.!DB_N:e `UZNNUWW[]]ڌ H ++鐺zjKZggmٲTߩ5sX@ $sݵgF݇w_|@@UMaٳǻi@@@@ @@@ TQMD?dW/KJJ4iN{\*tN>nذ ppH@ bJۦMQGcn M`*]sPQQF>l3?UHjvСAGko<    0cE@@L@l744磎\.\tww;4{/((e˖'r߶m[:O~ƒs.pSE#_;3k,+++34" @P՚*5STTd-29i$T @ E;m޽y󼋙y^޶c6}ާ!   {[jG7:#::u*f,G ab֨jo]N\}C Lp]'WXagώ۝ Q+w]곾8˘F@@@[x?@@Hx'Oڞ={YQQ1hX0* ֚BSr W1AuDٵkSJX﹪k*^\\L0$!Lܹsm͚5NXV#65}Fh%6mMX@Lp {Du0>P]!wkkks:3   d?   "\i꛷ق @sss`Hyz~vvv^urvK}ryձ }rݶeݙFXdl{'P("$>oںul1;U 8 g4 DHp뮀:BGZߧ:N3+Ǽ<糿vI%}?     0n|8n@@A@O:uYYYN%j!3qطo=z4o˧BS*9ϑ#GlÆ vГVͲ2[~-\4OC@ tWV>l2Sx6^@@^@!hSUE9!_>8p B Oܧ՜J[n]v*57 p aB,CH&TKKKY›qFӽ Hpk*+Vpg#Ǐ{F晈3埑dw'w}־uHL86%<ÄI1`b0f0ؘĀ6B fI2I03vZo-K%j,JGԩs>GV~e@@@HD(@@Hy lU-kkk50ޞ'OrO a8P۷B %%%rMk >! I:hMnݺ%tX_{{{6 d{={Ǚmm@A:`ww7In@@@@ [g@@2q`i$loog I3. ɶ# ֌,..F<} uvvʛ&)//  d@QQ\~]<CUܹcUu4.BpSYgsv%L wQÇz;6b@@@839  V_XXp7-\@ ݓO:QD}oK ;XMъccchu7 @^zI%ҿ䜞۷o?A푯4δpڬDDy:::Ѝ s   #}Ixx,   {;K@CnwW6[[ȠC099)333~:W@FGGpiyڵk?Zx@Ammmr-x2;ikoo/6t"tv:={byN+011!%A@@@<=$t   @& {Z魡!N3% ZawVBׯ_퍐{\ϣbꫯb'֐JWWMoЉ @ fWWWΝ;255%Zݝ@"GW˓7nHAAc,b:؝<Jcc 5P     xy<  ښu:sFKؘh4T^^eBY{/777_ԊZ]]oz^#ч 555K/IKKK+59==-oߖ >Z}moo[ ZU?x277'c    uοds   ZM+[gg F@[\'N=rO }pp ###o|"Ry[  hUnݺ%UUU7ߗ!݈Љ?O':}߳RzHmbb@7     pfg&   LMnhhwq??*EwS777Y>5NBe ꫲqs tuuYv @@ v"G|kܹ#i"@=, :-yw}ooxjW>   U `{@@@ 4PdۛV\b> lnnZ+ݻ6poˡ{dgg'[^_-YDw]r$hf)oIN:k>*wƆZ]ϯNڨ؞Gt j%Av v: -wttnOC4${{{ϣQ:]gqws?jvnׅ   Gyx   ӧOJa>v h0)--g`Alo~IJ~#A`QIA[7( X~]IP8L3!{נ=JL;888GZ]w?:HH@tmkk\zU4DOwY0@< vF|]}oؑ HEE QZP7pP_u;{@@@@ F1B  V/ .'PT{h~\~]nZ|8[hϟc>DM'xwpPZ_aOכ Mag.[;D@:tp~DAgҊ2M7ϔ=nOw0j:֭[C( ^ayM/@@@l WsD@@ K44b0UO[*j%1&wwwO7nigА{_C>x#fC&< kySAު$ӟT7qz]Z.y kEĥSx}}i  |T!ϙnaO kn~WN%Ig ܞˣEukfUs=yMV7{377'MMM{"   Y!'Yq9I@@2_ӧVe0LVIܲw?~ء&G? gXy"3>$7/K~Só? ·PX^мY4aW$Q'OȈTDoi  p:՚=Ei;wX^ֺWۓ{ lO:ZCdllL]ҽ-03ٛ 6cW>   D M   Z ^%Lš";-N rccê@>tFYUUfm:ҟg|$'J EX9< Ȼb);4XM X5VY+]~@8@aa[HUBtWVVCsSxo8Pg}+//:G? п4448f+t^x^@@@ Yq9I@@2[`mmᩞVNae/ @jՐҒKlpׁ:HTe.=r<ΆTVV&%^@g+E׭466& #   d  #iw*LVI̲ڇV5T1Η^PD0cow-4WW8|ym:  ϟ"@͵~O:!4xT+Jݞy/皶XH4pjZQ|ppPnݺ[%޽ثAႆ   D M   ޞB"U$ ]ooZ1_'cW~ ΧdCj> 8ޑdR#ת'xG8i'z=ʊ+;E@<555R^^.cccmqqQGxM2 R~__nJ599)GGG13hiݙ Sϑ(yq=࠼KlZb N ܼy׵r7@@@2Jdd@@znnq999Ve0B-U7>K@~t+++j[[[\v٪:@=uV6gw,U>|h 8 q8iO_;տh"a    Kg8t  ӧOW_To*Zx ޽{ ȕ+W<.gsrpS];2M!rx @ _}[8U h^wgOϟT}z"LP3+c$|h$ ^y--LR\@qHnt`E#>p{G$gs{+_As:^̚)͗}xkkkr]ǹ7RXXg@@@P*}  i%011 WTTP+IWQ+ yCsQe{?l2EɭII-|&x:XGgFX^XT4 JmYriy+8oU7ۘJA/&`™I@@B T}.**rwqtI?g@Cr_{0"&~]&AiGm$ 蠑i_isMؽ]jkkr>S5%!r$o yV?-<yG^=,_@2g;JIh>?%< _wυ @^  k>|hUs<2y.> 'Ojw}ϻc~W 5YYnܸJnuڵkr=r:Y@@@@ ןG@@ mϽ=j%q|9H w|y__=;:@ 6Χdm"+QwtG_^i}wEݖ /mUm}?i8-]~|/Y#tt?? Ȼ*[y{Hyݞ$]PVyj|kY^%#C'    @@@MYm?PhKE5;J*Þf<,ڑP'+2%rxX2.oQe [`0٩X!Y9~IR=y χk⑩PoUT'<ߣ)u?Yy%/6agy| ˩y}!qOO{ JCC WNq6x&^j<ۤ?_I_h    p@@RZ T}(**rwёW]j8Ó!Po_)ul2.Mn ϑV[]Y\aTQ"S1v19EI coxT?ț; yS>hu-/g(4 [O }()M Zu Lp aDŽM656ISs?Wn4^1Vyބq޺y G ȇf =4fˀCOjxTPy^i g7\n/S766^~MnOeUV0tv VI̝jkCԛ   p{@@RV`}}]rrr%V@C2C{  C{# ^#.@VE"mB_ZQull8]]RZV3lmI9#3|8`Ox>)Y hf+IZyVVCy <3_3p>:+kߋr2z`_nOb B000 oߖ%t0iPS};~lvI   @ pKω#  ZÇloo"S%XڮwPgh/cBwmEF-VX5_bw?6BѰb\ evfVffg"> F\O'!SRb%Iy-_]; ywx oMz׬.I9pv)@r厀5'z^Pz ݙ PXX(7nܐIu^2>>.:~p{p3+w̌X%N //Ozzz9kWUU!   @ pkϙ#  Z!mb+//&M'`A9::r[?oiiqbʇG=_mm1r hHU#)5yvxEV@~G u'냑'u_qgVx~qi; 疗WWwV?O kpx\ǬJgIX.++l̪2˜>#}psshtK/ϑ%EgBM_t͛7C]"   @ p‹)#  :ܜ0upFa5?{ Uq?=JߖƟE=`_@_L_mdITHl*s^rSȻ UA8@=& OܵgOgˡJF{(9<¼s:oXϟji(Wgnc^^{5RIig ~vt~d&BM_|Q tuuښNuy~~^}A@@@ ]כE@@ VFs7J Zbt 5MhG STvܓ'Ũ'"e5{m G%sl??:{ݨT]&~@ teYV?-<Rd©5Xke 2M!|'y& Ӈ*grx؜&ʊhE*թ8ydJ۷oAd||\}܉_#sLuP,,    5Rs  N8ri$ Znll̳+VVV#~gehDv_ #bmK=*h|4)K7z;FаEVgyg%mY'}y" Л[Ox޵7}KZ\}_599SSS!]ǀVp$k:4T!w:YWTTHmm4^WW'_Lׁ   '@=9g  @ .Má=*յV741Ͽ"oS1x-YM Ndxx ׬/n@ I ϛuy+ǟTwT7L8LkMug}TO7;Y2iP>e<ܞ54_CCCCJEEE`=@AS'e[GT>[QBL{67dddD<+~gH[ߦkON wwmy{Pބ5N˟TY|]X!? WnCۙn݆'!Px]]]r3+W7"    d̾  i! kE.{+++EK@T~ga<<,%{c`s+x&;?f}}owOeMhڽe@ 坄' o&ouM`7< A{[4.C _^Iӛ )yNB^엑11b7oޔF9:-P^^.2>>؇׿_8Y8z)t~ϘA[@@@l}}9;@@R^ T}.*sCCC)uw!kmm}ژe>    @ pk˙!  M:7-q299aOOylҿbpZ˯ȓ~H%Yr?<<)!!, Y466E@#3Aܚjx -ջ&Xz75oM.'uNǂ/׽Un|P):.lE@;wCmiiIjkkE#$Z=_߫UVV&I    4  /0>>@XXãZÇg )ݓ'_ROrr1!9y{\4r5@'Vߊji@8L-}'\ܞ}=T#Og*--.k`GFF\͌t9ucgZ^g@@@2K{f]O@@Њ[?voaah.ZB ؛Vmwq? >a} dVk۩3ummM4rtt(-)kfYG o*TyVU2ofV Ix<’irGsire U+t @@4|6N3l,uZٝ   @  (UC_wеV%F@?쬷gJuJ"o<]{^%wm&ܗDgԮ^*D¡@NHfxhwO'gwaxkCUy߼_pT'<}>AD@gxҗ$O> { -MٴhW_}ձGWәh    Y!   k{ӊ\W\wq?D0<<,zko֔>g@Ak~eS%вO;3+3Ӟo MxVҁ \T[]~mbUAg>S}^Nn Ji-`ytķ<==-Y,d@W]Џ‡>BM/J|C,)Oאny3W d;ڥ^>>6K#u•M p|P֭ Û |hY@d{kq$}+ XeyyY›kֺpwhkk޻ߔBM R\|4-   d̸  i#099)J\ZQgwnNNe[v_/Q5r&?b-~tt$ZUB xQaTF! Y* \*Soll8eߙ 랷At? 絪UA8,f̝;TTp>k:K_y}ikkkƾ))ett4<66&7o q@@@2GdC\K@@}Ji=༼fkt{ 4R8c:~kı^CsT\6Vp{*^9 @.Z@߫iHm]aE|> VWI~stK7-_.%_V˗^?F܇3x,l>~DN+Gz,} D֮WVVb ["   @pOKŁ"  ZYpV%F`ffF677;+***9:Y@%S\$mɭpXdW+S=便gǭ UUU200G@f[= }wlmzl|I?vT|#77n@ `Uq>/@qYh    Y3zr6  ꪧbrqq4661ہiGyW4BC @A[/@[;ڞ!UFUF^*===DG@Pi{Gz_S><;g n7ǐgmGmOՈ <"5bqqQ!dl@@@.Se  dVmSxkX?|S!Y5eoJt=ggj!u?x_ioinN^<2t  NrYZZr>N HwoO# p<pa Dz699)Z1   #@=s%g  @ ΊVԲj?̌lnn:TTT$>E)l*9R3±}WVVdhhHF©&q  p+WSZ1>>.3}NS>.= @@@@M@@@ VY-~`0(>&wqj]R:?~^ <'3 > )((@@ > ۫Wzv+ޓ32vs>W8q4(4tvvzv3<<|ax<:^mmtP@@@H?w8b@@R^@+eMLLxS+ki-ZQQQ;X@ Qͯ|D1n?Y='#侷gU<ߕ+WS9ѳ!  ymnj@ lxƎ)|1(</"@F]E@_{rryk=ٳGD9,V#   @wq#  *033#{{{ Eeqɹvvv" Ъ$<@ni%̵&-&=侹)wݕ@)aφt  $DY:::3X0CPǰh:gљh JyycG[[[c@@@C _<8J@@dn~llsp=U@}#Unjjg)Uқ?i֧?'q,3Ӟ˗yЁ \@Qq\q=X^'ZKT=Y ۻ 䖖H_Ҙs㟑Bsss25  Nt,l  pq2p}SYY@ 'pF, p?R g<yhO xgk= %%VPwe>@@Hgܫ=Ǵ(&Y D p.KZtC [TTʊ9X@@@@ ׆#C@@ -V²VъYtH^t=F > *GBidW>kU^;5><<g@C}ri  %;^vM"dhhHFGG='U_ ׯT>ws׳Dx_Byو@@@H )q8@@Sɓ'M755ٻ4C9::r#96K_r_]]8G#C  >JUUUpٹ/% ދe8mv6{xx555~ّ@@@t WcD@@ E&&&vɢTpm{]XlyoT699)O>uw   )&@$.  @heMj0A+dݕH"M_3h/P@ƴ㣍MYxɑo5I@?H8! i*!w}#\~}@fD62j;$Ո  g](`aaAXt&<{;88   0  .ܭ9t:##h `K? e_c:Y|muւA M奥D@H_<+iZ шX -S"m AOUikk %P8Y@@@@{\$@@T*bRZZjvdz,;::}, Zs/}222env۰@@ }?~,=ˋ!nX(Ϡ}6h laMMM;DX@@@@ 5@@HyH۵"->>>>ىNWCA@rJw?-9%1+.w:ՠrw iSK؉rim q~tw hnnh=/g    H_Ig  )766},] ׵*ng3@r {W_}}Ⳓdm/ˍ7xB:@@8-^_ 7o܌8;T*.S=_`u6ޱ Q{ccc;;8X@@@@ %@@Hm "g_4Vn8x)$Po?1Q20/%%G=&=6B@Cy1䮳}>qh;v)4؀!   2SRp   'Od}}qUUUTowoabbBScZ@ \}߿N#ojF{_+r@@n+}}}RZGC kn^F݆ HtvttTf+ "Vq#@@@@9ܟ*@@p hݨ9Ɔ,--9۴ LFg?&m1+YrSp@H[X3ͬ>ސGdqq1oc.O $DV***ڊ{ޱ,^{_|N@@@ %@@Ӫ_eȳj1h6ZHC Srˤw?-⢘Ni?);rSp@H;C'!!w=P81Up?6@ Y]]]]!ߗ3th#±G@@@@ >@@)YRCr:xЊm42M`Vv~{$ˉ»+S3 ) y<'Eš,//cK!cd J}}co3X*"9f1{#   #|:ő   @ VpJz])=zy`Jm@ udppPb:'2A@R^ p{w@)3bp~e {fv]ϱ U$,    p/'G@@ 4z{EEE| V\qannh6$cUn Lx߻%9;[$p*).q”^~T6! \@Vr/·###^~_~,wH@cc9u`Xדxhik/ s@@@.]_@@z{rV\k4AC St#nNNs/a}#:Vrwp @L"ܵNhoܣ "rம.Syو D>mKVܝ@@@&@=i@@`Z][쭰P2 LPDCfoܐR)W>b_}#Yx2;!X \@ UrC]֭:44$Zy͗] *LYsss>&ޞ,..mGl   I Vv  @fP=Q+i5wӊlZ@&lmm9Nn(?=w9#`@ NNé pgۘ*pwpl.#Uq{_X@@@ #HOde$@@Hf핕,loo;X+8X@ &&&duus ===R^^ҷ#p,U=$t @ Y)Y.Mݝ]ږ͍MY__~[>]:3>VACREz`HwIm]X@hPR+D+C0V` W(h݆<>`V$5Cgܜ\Vsr|z?T*˗ϳnu9OKC+pY񖖕JwwhҁnUݳv<{D:/M@S-..:~?_ RRRriǕOUU۵{]]{UǏ   @ pO+q#  DUAFJl42A`ee EnrnegdMhmY7-_ؔQ 1jh VIحg]Tcih>DGڧ k >0i ]c j/--IY01p@vu<ܼyBf&}Ϫ!P*4@@@γ"  P,d;;;M?.tЁ1ÞSЁ1RP8#͟9z0υ{$ѱ8@gNnvJ졀x*aipE_5^T\$E [}!@v J=UeaYHUL>~` m*v1̢!w >X&:=~A1OjUǷUܯ^Jʜ   @ pO+"  d̙۫1 j5`:P@ ёuv3*eY~7pD燤rwp@V hP~8dC2NV_yx WTdB/LCHp{Hzik;7cOg ~7sп`4"Uqݕe+~=@@@W _}  i%zV_@+k4]@+jݪk;1m{dA/{gyޠ,Hݧ^#!ꚁ}1# ٿ.58g p~iͺ;^>dӋr+x$zzzk /O%C1Ft67wTN.4bu|[l)4ʾO# j]Uu[OlCqy*yѼ\hSt+W,:PgP 7Z~g9%#   Pd  dVo0Iuugp]]]|@Q#{hh ڏ]Ìn?o^y|~YF9:/9 NzB:HK}4lnlky2>˗|A;zߺ5ڢv]5PMD?Vj&0uz?Qt?2MJ RRZ"fYie:\odr=thOoܻ{z zu30)Z{4!_@GG=Ԧ}%m: -..D0w@@@pC @@@"UookkɈ睛kjj39uAOOxґWU)m}Kpw/Cc/E<rЁ@J mh?eyСp5d)~(yؗ&WyMC`$o ewT͏st@楥Vؽܚ{&^繳THp{O$˽vÇ`1EkA3@@ hYÇ&&& O@g0u/:p*Q   #@==  @ lʚToO*A,L7.A@?_^^,>x:Lc{#- YMCB)#^jU S{Kw{5xTERhB`X~*G EjWxZYgwW̭V8 }i4 )b ݵoGƠ<ߎ5Y?$Mc«F-2/Ý: 776E+EEb/o~kA rpPw < s ۣ-// 학J&w @ yniTTTXB]펩uC*;XH9aJ`?8~]?@h!7+W0@Ҏ}@@@,@=@@tJZRJTf~徆[PP A) tx䉌zNA?O֠y} o+/rS +3պKJKZscq Az K?NM:By: bTVY(`-50o+++/`HC dB=t-kKx`w 3?+"l%&&&A8Tb_>rjj*%   q p   UoBiX^^}Gk0}J ࠸JҫUWI_o$h*pFk'E_"nJ=" [@kOj,&08TCvC&[_ߕaw 﫱VVWW/e)).*+4F/\ !Ni00%B-!+Y ff6eE>gmX!< @@@l WF@@D@+PVO@CUwwwSq֣BGDCxDъ^O|XfџT\Hck=!,t"J'UׇXv':DҲҤң[Vw@)@L-53;#=5Uu^L Y昪===r}9ʉp߁i?{w~vWKnInL0@83 Il 61x;a N2 CnuZJKMV[Rުn?Z#~]〰@{LI_)΀ih%@@@@4? ,"  oƍ*>e!Y4? hPGD E3jp{04V_r?羬oxo`ev_RJ _:ex&fPzSSS']jN*Yp-Y[ZZLߛ%fA$5# @@@8g  _){{oo/xi5J3f Lj*k\ h^,}_֊we~F>!릓uO(X@$\emm-ԾkڞjE72f=4@>T$1 GN+܌e76ğ@ {p{zQgWH6~w$èG WPHd Ԡ3>sI% tЀ51o 5! @@@8g  [@/--N&W>}jfJ{g<<\m=с0e'7Yvx=)&򻭛N r?`݋hc HYi7ꤸ8 ΚklHXy--Y=zIP׬*K6@IDATe;Z@bL]~䉼 $30[LA^;d'   dVz7@@|#]3SiUJ^UT)Q@okvkikk R _(m r?>݋k0c *+⃵chDu$\|-{rZѬO曛3! ~(5*I}{, ~\~]~yb}u'fqojjOHtokk+^ ?@@@Ȭ@o2{<  9pޮ~ 㔽]yj4 ~/Z\̕XRϯB? 7Km3Vn`ُ`ݕ;gN_I)^]kY…!PC3A!H8)..-ePHT 9(p]EXuֆ_7:@:YFٍϥ;]+]2Mx@Qe@@@2'@{,  @%S?`<TɊkzӓvvvӧnk濺:[*JZ狟 NS?/e׮H^8Tr?kkkuW=An Aoh-lmnr`\vvYxctƲ$Rx50X4{FX XܵwoGR   nd}@@@74RYYiIorr޾ijqkjjLu eXq}.; fi|wO5,]5L5qlA:euuUݻ'wʊmkkko޺$) 3'^.#F*;urYZZ"4,% =)W';3>Nږ 9(.I8zxtFgLWkс(jD` ψ 8媯!XL   pwoEK@@|'4=k;%}===G  {)Eݔ厛6A`uuUܾ#?ay*{‹/HW+>܂5𣀾'ooonƳC%= thI vi^zܣGo50t }=>>.;JANYܧy]9ųWu    @@ XkG7hp- vZrp|<*Y;::L##$NťS#   @\0`s@@(@ɾbt>itN{{{ϴ/@4K m\=!:ţ%YwKԒ~tؘ<|PvvwA4еU^uKTPT"36+KHX:ZmԔlnnZYGsNYs9}ƀ?\9   uܽ~  g8>>#uB f5Aa){{OOCȮ-LG ng(,|KrF'$ ޾LLLȝwN͠FGFʕ+RYUY8%dDB4Vg}hnnNglm%}|!@p{f.S(e$둓 ҳ#9nۀhJL:ΪFA@@@ lQ   #4]}GoVPfkCW ^p4}.%=9Qݍ:âq    p@@_ hY 3XP]m-tF7N5@!7 -3vwwMj ~l75* i)imvN6jklDQ;;rolL>}*T*ʕ+2zSR#PU@ёQNEȝwl9;_е(>=MD.]$XǏU,#9⮁Bwe9Q~3-R@@@@ }7  xV@c2R){{ooG s qܮ7)J[~J$y#Ö߽gqH;'/:88ɧrwl' V VQy444xt@uM\zU]&555g,mw-)E-3"֓bKښmia {ԝfPt#'@@@W  @ ֛f%Qrڲe,do?'ʒnMŹ_FKm4$Gk-W rOm:ܾ}[Am}}}r illdG%*@ u222y޾sGfldGZFja F+zxd:u= ࠭mT  ,_/C;(so   Z\_  @eooϴ7fښAԀG;Pq}TR]]-PXr ]8E7>D]76 ׮JUe:<=3#lTN`{k[% Nen݊u##lsMrtffgm< a1_8ͬ4N"   Eܳ͡@@kf~}jF2k!{Uu/ svoo% lB:V/H戫~c:5"IcAk:PѣGNUnݺ%mmm sB@u޼uSB]!ǿu:Ng;z8gbsvuǞ9VljjfSXVxF C, .fpEg`T     =-@@֖?ciiig3ֱ|Ύ-Yuut7N@L288fjJEHq7eSI< ؐ;'Z02:2*.]u5Ok(7\777N,"E97<dp{ }g,kkkIg1c\hwi,dq7j[:â EXF@@@ m؂  ۵Ý:ȬVֽ"&&&lNO:{~R]ujDJfwhjr*8r8vedtTkm۩@]"X!r)/+f~I| ԣMeQ7xO>H^֐ r ]g#{zCgXd]q;    5*    &YZZ2FŽޞ-{foש)xQ@ yk, U,_@mst_9Z[wީAN*ڎgm_X\pܑf,y󦴵1 PH r [߄ܾ}['%=Nlj?W?_677,bdTVVwOiXfc4ng@@@^ g  >XXXe"{{)swsss烃T.nmL3sh,Y Ag3?N3Mؽ174fm׌eeeT *Z\t)ͽpxx5XZFj&{쉝3 ^^^6Vg;}{#NыE@@@<%@.A@@ϛ;e25`&A8`0Hv+^8>> [wE3S'K?+7:_w6Y#ܓɸݓc2;7 DD6FG нslnl:nu=Lp0cH$b\ hwvkkkrOiEQgf    @rܓ۰@@ h}sxZvڃuX2k@m rե=nQE~3RX`![&kD{2`w~ 222" v*@;44lz]:rJK@ .7nܐ:Gy{'6h>PIp7/wg\tI} v Eg3 OfP 3Q)    ,@   xV`ooOtJhc,pd5ZؐsM[[- ~؎E hԉ a4sfpNkZ:~}:h}UdrO&Fݹ{W677ߨ4,uvtQ4Բ @yy\zUgߓ{c27;W{rbsѣڤ[A/_=LG"[=R@T[Lx:#Ž&TЙEgf-@@@p مZ@@<+`:ll=1=t1ʩӢ[EۻU,HGm~8=+?-wpp > s(Y^V.#F1y"&z7ߐjAwvfvFim{Һ=,:3}c(xM@h8}bβ]iEN    0'  xR@oxTƢSEoee􀺺:aDX֖͙DR!J:]^_rFu6;NZ[[RS[' @*22:*ݡn'۱Yܽ#]Hv\dpO\t6fsh(xI@?{hx:3Žμ30hn2   ,@{!_}@@w:Nm,@WHyьB|^8eu% Iuu z)np7hW ?N ܗiiI\rE4ض @瑮PJ"hi}ͳgyPAp?.bE{lZ ;R|m]eSw&dO ᘾ@@@(\ s  >wc)YY h`KYYmzxvȅ̌-[eetww;3@Ywz,3{ﲛKx) w255,5k{CCélDȜ@Uu\q]:;w:0/]/7+] ~^\4772:{ r %*љEgc0Q$31~gM`2   *kp  xH ۦnmmMi.{+N7`;::ȂɫUڒYfFjRJiTtoOmljZB rۗ{cD[fjhfT  @vtno_\zMJl9cwdks˶ JR̠vg39cY]]ec\})@;zXd}}X2   pi  Onnk;%=zs= 8>> BTWW@KSSӲJ4v[ )}mmMݕݽ]["(#aȾ@m]^Z#,..ڶv]% b/b/_FBEt}ΐGqH喖[#l@@@@p/ " W@,6hڸe- ޠ-//7 ^,TVVS!b䊫_/~UT=]gfÇrl VSQ@ KիnV׿듓A:υv^ج/Jܵ}355ec\ 8eAN*岟^?~e>O Zuw   ?w1  @ h\foGZv7Z"y wcA)*#E/~V\us&ǮڦjAGnbj;@Lo_o3= _X.r_;P&b;aKlecssЊEr+3Yr%ѭ32   opw @@5{vz3̳Hf⢩7ۚ5Ԁ,:=p( IF&/G]M(߂wwvn;2w~O( GKEy;;rz[cUq|Ta֘:c˶GL:/hqM`,3Q X N#-@@@?wwY9#@@|%YیEo(XN!N)f&%R BYʬ@{\4 ;hsUT%]I8ruU\~J6*@ c^[' Iw۱33#ZnI_bP?XLO6#- Og3M*ƾzeݞ~    .@;@@<.4E&O![__ hkk#p8W$\3Kuumwv#ԇ꠫?Տ~U[7D`;@ .]˗/KQ_kـ@|"ϻB]2<<|uuUΈv]3w(b i46@fp|rpp 3"efwԈ@SS롱0[Qe@@@BN`?8@@ XonA|ARKh fd 춶aEUIq]}Wen)}ksK޹kYVZ&#F}E  zqTU?eޘhW ^G$LIggk3ss hlcN߽0ypAƢyd7   P@@73"= (.IgpNI(2/:55b, hpΌg,3Q XgkswXFK@@@K   @ 8ML{zy~~Hȑf`f+**^@Ziѝ];xkU{7'&&D:C^*M#䉀gvfzfF&N:Ndl(g2YrH 8}b|Кݚ :/NN"   p_*D@@ NY% fbck@cccA?'})穱twwYY@;&\)Yx3 g3z Io_o,P +vv5-.-CY;] ~9IqʃGS:𣿿߶ uzfי(\܍emmM"e@@@ R4  666l7ޞޕutt(ia%W;SƢ0۰|Xʇ]?Ϻj붑Wu Ǐs[etdI6*@7KuUdWWWrcm *%0wܵsZWWg,,,XA W]]]C[ PapOϢ    P3G@Ғo---:* X @4ӧnhFFoJg(禬}e?:H)p2X)##d @ kl4ؽ Lp{=N'P:={ϒ}zz:k=r}:C6 plmY3cqNиe@@@ Ap9G@@ @kПfm4݉e۲i:` X\\ͼh,;nܸ(+=1M)>?E31X. t쇥|貫?_4 5mpQ} /:J|=zd{  oa1+) Y#B  ~'D@@@ pϳ  _@+4XorlMT lmm57d LMMٲo32;#UJQMw\ME> < A`-  nU֢ﳦM[])؟G֓?[gs];9dYܭ/ y:se,Nh~k   }}9;@@ Xo^MfInYMoooez45`,hfE}~f`$(RXsW/O"O&]>@IDATMQfӧ.h`455ٶQ i552:2*eefǏm m 0 l10PFpxhe=E?XF ',::YN:擃 So6   @ C@fN/75N]E;;Z],/.XO^~%W'v-o}Iw\OQ&23;c;tiI\zMlۨ@@@2(##R5_YYq۬X ۝T ev5/8}H$чЙ_w4ـN}ooO=V   yvA9@@ hƟ uN4K6\ hFENsG WR-3Od]?j{p䮙=z$KTWh, ʶ @(//k#D3ZƆ<_N n?(7ܣiX g Zr(**AXsu&3vN.//   @^ D@ua9h~g^:eoNqBifm7ձ s#˿(僗\O}Ut%]>|R]]϶[^QnWh V KSSmΎܿNp +%);e͋ۖ)[O ӳVai=j KVUUIeyvwFK@@@-@G@# fjnn7̧A WĂ(5K6\ h&Eͨh,zӟ",c{Y)r|c]dl9 Dv͚k-իRZZj: Af;ߋer`Np)}|YjlGQ@6s5Qδg,}۱Ylnn4/    ܄@@8M9Ғ^4ա%folr%M`͸HA4~GOkƶhT|F]kpĄێCCC زP )}'===]x;6L=4TlƢA+++*ȺLzdqw ${?Z"  s-9@@ X5/ffrlkksZ"pN{{{E)YZTۏ7d-Wm*YHr% N{@3 hPe;;2vw,>˺LFFIyl'J xO pzg|HA W]Ψg,:KHe͂_]]mjFc)   t9W@@ t577iSR f6fWZZjb hP4aY ?X{PjbnJcY|4=Sӂllok޾^[= \" nT r zD;0H$"sss*ȪfqVWW?L2ٲmXF@@@ ɷ+  R]OiJb_\:4UsGGG!pjSSSaQoSp+ϗ_]s?Yj{F .3V @ۥ!ۍ\Rģpupk@,\ `#g_nr?;A~@@@~=  @74x}}}өkjj9C sr?ͬ)+P\S-_UUzG>%;ڞ_b砰Lϲk @4ݚ:s J KR|4u를\L>N`Z    'Ʌ4@@+'ۦLMLWu*g6h>33c;LOO  T ^grw>\|{`jUtsٳgISwvy,k(@\ kNE_&&9=pI0 DcYXX  Xd9К06fmm=   dF8@@,`>;< z֛)zH@o[s2 ztŏ owM;xwU{4 ӧ)Sc<rwJ;@L hpĩڒ~Ro,qt>ՙuB):VȦ@SSoE;}>XNm+H_@@@+`V{   5@[!M{? ܫGA tݝp<ozWgqWm4gjPna@ ɂ۝^677AURxbss'S'mYE>Sȅ wc *JCCi+@@@ ABʜ#  gvvvdג]/a2\ h@ޞdo7qrN@ ݿ)jOdsUT&:(KA+nݒJ"S@ ɂJ2gc+}Q wuu.͙XA htЬiS X#YL+@@@|.@/ G@S柿b{oޮGb{rQ?==mk@v (/~F*]BvjIY\ZmW]%&D @N n&IW9X!=2gjy8hl=Y:dq]U*(h{N:}.PyK9w,#   /˕<@@|)` ڗNk0կFԐ@.ޞ =fŕ }^.{`z]{K+ܮ*ܞ())!b* @v'z-ՓhB %Ujɲ?S3#PTT$ֿͦHTNJ~]Ƣ}6@@@p+@[)!  aM7:i#+&!zpp`JeoBY*4o{Cio[.{{'M?Ņφ< nOl =!O@l ܞSOotw$VO~g v()Ny# uvv2fk;)/7 .Hk‚ :t^ꧯQ+++yqn    ~@@@y֛VxxiJfkV0ߟ$'͠g niiJߜ@ۏ$5u:yHjy>oY__ܞ1A ~"\Y}ϵ5K(/(N D,;:t2Nr"XS4ng@@@| ="  ;ͶdU]]-`w璋۲UIyyy.1 \W=?_Bʶ:hcjjN IQ츧Oa @&ܞ8~_%VO~..-f@II/]O;77GW!D֖mVCv7*bK:+XA@@@ Nog    ۍ(>tՓyG~KU@]ӹldo7ruJQ^/I{-?m+W nO< ?@2-D/giyЁJ3U{laghHXɢw^dqw^VVV   P w><)  ۵N7~&fӀb 'kV T J?Y0~=r03gkߗΔa,JWۍeܭ"#W 퉾K}}}b:Yg!Rdq3^) pƢYܭōYFtu=.~߯Fg+cϨ2   @> WsB@5諨|AA- *Ȋ>ޞjB~\9^[COI.ʕ+ SSVr?M i \Dpv@JUe?:ᣇox45`slU~ _TaSZ;>OFgYqšAgp@@@U|  g46gIeȊI@Z7IM` = @ [mTݯuuȽqYzOFQyY?mM\&  \Tp{JU0S#V+`pn=?gps!Kn3^?w^6C@@@"  p6559ŝS+w{ +8g,MMMRUei2-eՏIY_Cm-k ylnn300 UՙyNn@E'QVVإƲޏ5aٟS; :::L6Mu  C-//YI.PWWq:Cq   ]w_A  ;' eb @q7Z!p>wduJ޷^+!`⾷'Z@ wc~Gf2   ~ W# J@3mllAleeeEѨZ[[M BlHs T\Ч>צ-hL.IM@E?LXY@ @gzדeq_XXqp,;p8,w@K@@@|$@.]E@[ޜY^,--v٫4;l 8eoBCToiy{OmX-H8ۓt!? rVv@ٕX=9|NKN6;TуtvvڲΒևbd>&= N,ӿ/|iӅ~!W.]jfݝ]S=+H=~FG;1wuufsx(UdTfpG24uHw{    ׇ! 䑀f 1i#+&kEg"b% :Hekkt$}DŠJK@UV>Q˿v6rτ"@Ck3F IEuHE?Q|, Dc:0YM"dC6pheeEt% g,N|   "@{\I@@>ZoJP߷ݬӌ_@6fffl#{  GH']bA\ n9w>r"@|.^K "S)(q~xϓsSwXT]@kki::롩+''ˉ   _p땣  ި+eNuﻓRNSZg;@eo@><G$ǫk֗x?}& ES ъL(W3'p=2G<~cDl.yCCΎD"S+   ]h_A  mѬhbe7E3}c\P4CoƓDŠGѣGHr䪷[m)Ix_O FIͭu!p~x菓qK ,nkk3+Mu p,G$:`Z;Ev   p  >pt3ʧwvB hkk!{Uu/ ÇEE%Z[-O剪S/_ͩm2 L?@{~ nO(vvvJsssb5Sg횘 l65b{%)=ȯw=P(dQN?@5yw@ꏟS[[kvOD_@@@ na@@ d`0xGʿ].--NJȚm"aD3fo.055%:hof }ɗc n9|l!P% ?'%XaL9Ǐ N ৛ >8=Jk(--k}}0MoӺH{ c_EXF@@~@@zcnssO  'n" W@3?[3(566skv=tKKK{ ]@X:5SZ;qAAZB)KbOW÷dpv_.F+/ `eP4fan2G/k~ad+E/UI4X?wK   0c @@ꪩO@@LutPiCeeTUUXA"4uzc ^Ь箾eOHiݬ[d7iX!=X| nOh577K[k[bޙUIi-I6IuX 2  ")*#3&ԁB ݛi5m4{r{N=.}{{ՅfÑ0$Gn=TIhۘnF@.P[EN,PŞq @ @6ܳ^@ #`zOa !K S'(D=q: ]veEEEb ̒"%s& t]} &KNY<"`@)'0EMRQ\;66M+|!P|ºj3zr[GGk=c$ߛM܅AEK! @ @ *@ ![{ 9zcN>9 D5&RM@'ըN8N\RHlYͯDQ,W%R=T)@j 亸]"+z"ѣGe_=}b,w=Tw".؍QטPcH{.N,N @ ]@ SL9s):脜99c 1@{{*S@2H@dvӚڌvgVsxc]+dbx+9qS!$@>J,/K. #mrH0%x.=k{.Ұ=c$n*I p05i! @ @lh1m @@0'TWYYE=LSu"sttQ98N^ u)O PO[nqGjhWZ*Nyi,᧟Ϋy= @bI&^ϛF>uڰW$((*]˦UXNVEkt|dS=[UUh9H$@ @"ܳbT@ "- u p,:SX&;B*'!7l7ip4;w!C8WRR"+VwH4yţ 맾&;"d<@#0ƦFעH]cB9|f/-pW^:^;ZeJQu"cPcH{NwÄ $@ @@ pz@ %T`7sɞLoSJA@CsIG vT+WwsgKӏob_dOʛLܓM L@>ە/_gy޻gSBR L/YX<ٞAwb @:w׸Z:ڒmu!>|،" @ @:ܳ`@ l!5=45Y$r@ 1k 9͛'Ӧ QJ%GJssŋDJLQ"֯߸:J[%jdCDcMMbwq{.]lY8e^ӌ1giӋ.՝09f3bڒMsa8"C[!@ @a·I @ $0'***BMO1'9}C$L@aw A#0f ˷m&*z>4Jtdz;G\r:De" @;sLY`3 ޽[\Dd@Ν2ҔW;V"Y|LyC o i^cDf|{sܬ|1? @  =."] @Qs4̜lr$0'/DQaHqTB‰A hsYc̿Rʗ:c6/^+o*2!rOUʄ voN .jG1];:d.P0ݏ},s LcͺcWwڝ.͢<"UUUs9pL0w$@ @lJ @ "m9ٔuJCV^ @:=#T(JEIVBH'F X";oz1{'#DiNu,' =fٲeR4ȑICgl, lĄ%3ow|A?O`َJDa x9zMF/T@ @@ p5 @9BDRѡ/Gnl2e7srӞ1I@c:,++m@ d׮]Z/^,FL#Mw*NqdWEgg*c]Oa.D)K@@ܞK$EŎJ=*8)"`Dz|lt >ƺng?!/ZxlG-)  @C{z8S  @@Pvww:$gkm̙y@* z iΝ;]Xh1sEcm+%1D~y |!=WZF/YUqKK H.?'g|bѝ0@EEk51t+3 p646B @"GPp@ ؘs2ɑH BT/Sm @ =ĩo2222Hpο RvzG' =7 %5{ZqS P3watommk.Gǃ{~ ܕyJP$< ck ~?b 4#z B @2O{- @ix!7=JHkΞ1RE"KSSM&˖-ˊ]AY>~tLGwKLg|U9y@R@@s@ Rdv:GoR4Vp鮾xEe缒=ȩV -K\ٷw;qdEx^h% uQN<G;S^-((!nإ=c@ @@ pUM @YG$2'Cij9)إ >88 RϟLΊ$W#~G!'_$9"$8@ H`54Zǃ ΔC7~uEDXRu'M5na @ d rh' @@` Yە 8gN"9 LLL5kV3 nngPϬ{1eY8d{WXk_zLXA0DA H5&X 2msꦭM+(^5]'FGcɇ :QP71tn:7<O&ǒ݄l*OM &3gtTcJ<9x*++# @ @ `,4 @A"`NGAjkP2f z{C; t鑮.GŲ`G\*^q_yi1214,m}TW gϊ?"-o~GZZBfN>猎 P Yqh}lt,"Zt)*9vSaL=Ӌ~oh")c[gqie1b#nϮk?{lѝ)uuuՙ֏wK;=i:fca签d8O7~ow0100 N1@ @@ +D @M@EJan:yE'ʠ @>P1kssˋ/V] Y1r'cZKO_³%N="3̥T480(C?ۧMz>6Tw{8&5]eRVZ&e?kx,? n뼨ilڼka՜9s':L!00cܘטÇǀ LӅG|3a@ @@ pU  @YKM/ ~[WTT$ .{FNѝ#Vq "dxpO.A t쨵QhwwwNl}Ùc i @ 1r6P @9)ؗޮg p͍@6GT@)/_}ݜ?" + {K GyHN*H/+-2)-) U[ɢ ڧ\T:22"cc!{X>4<x?v/> eQ2 ?w̙3#X njk͛'aSQM.&gAai  x資.睰ܹsA>=TUUIWWW$E.1@ @@  ri @2H@BL/HXΩ|X/'0!\ !g(C[Аw8_,Ő3U?IR` kb܃r%chpHt[vK ~*.+qqIIHlbj24sl߀9d>H^OMf͜WTzRCq{jfTnZ$۶ms4c};vTp`/0=sńg⫔@"YLںX1lS8 xÎ9s漘#@ @@ pEI @AޮFڍe\x8ԻTDÎSKKKe| ,WdxN|湘]rkߔyә{:ih_SbъrK=CfT U4 :_uu;]oѾ/DoE2ma١:!<ۓ2h%{z/ﵰ}sʧs.  ]hY==]yD͊X@ @ @ .zM5R*~ J(S}ͮ܋/iӦ!bZi4y;ء#1Jɺ52mbMgD=y]ÖE2yDଙ&&eBh Sͅ|Oܚ!!zǒKq{ry4HULe,^8A<$f!yAw,)ɣtKy&lz!p^l @ @kC @L@=pn^[96C pH%<֥ʆO*UvSzoǬ߃WL3c☰t]iR8+XǼ|Iɠa*dRA~Y+^TRUU%#PRR"uuu]EGCᨅ Ⱦ}BC^g͚%USmg/lX(]D`/#P;:3!kYM}~^C6}CMü eGGG$QCtuY<#P8 @ `'pA d~ {+"(sQۣ3#uBiS/ 0U*&q"Q*{K/dl~iЧi#G%A8*fjokQdVWDPQQYi2P E*0jrHhA,o*D*nWou&p  wf…gϞH/Tz/"qX41{8jˇf,/u:uvdbmޭ&$^c}rf@ @@ k0<}'{~_ g]+s xx%ySf筨p/Y_u@ @ pkH @2@Rx=~!LfkR2z)B?G7g'b0-5g_J[pL_N}Mw&DS'`n*(s5ܹserIQTpe@II/X OX/k׬yuzU17?Y6o:6Ff'q{pM:Z ,\Jfԋ;^ϔwq]5dOcUYY3 @ @&@ 0'T]PPvg&")--d; 50/nuMX ,'Ma4mi~b)3b;>~-_"%Vbqoy~;TH@fk[k  0QuuȬYDEX|״Itт^#GL`/]SϛW'uuQq[=;w8u0$|g]|W`zD@ru'"7C*D7ǜ" D(3;'}ұ3#8 @ p.oXh @Hرc)qll|&$l{"e ʢE^G75 ELBֿ ݽēN +++'m B}$ojkkhz;Y ;P`}'E D3iIѐ昒>S"֎dMgK  @ ^˛ @r$Qt5i]`Q@PRꅬGN@ t𰣒:D" }]=Sߣr膛|D&DngyVv)CC +W˼y>)KE?s̑k5kCe`r޽SOK{{{ {ĩ 8@p[k#@ 1=D ɽ244IDB'q8:E2s4I@ @YK [  @@?ňc6ivŐ _zzzDEp2I@=8v_ietmwʱ#1tZpz̼oy~;ԫuۑ#Gd~{復Fϛ/e}>| nبٳ'$Ua's5=[\zڭ^? 6_?_]M \M( m'ę(--"}k)s<.ӱ߫`W:;tC=jާwuTUUظq\}ծN:$җϖ+Bi7,MMMp:ԩRwY~ s@ @>U@ wڱoYx"2@T8A M'7.SϽD,1ORl\3o&2Ƚ_4.k,0h-;=#ò{ni=*/3g$(9yY)/A^ܛeFnG|L/ K@;a=X?JcOKʟ?Uc'!DOEUlYo[9s<կ~Yof;Ў;"]n) ~u @@2 0L@ 39h=e7'u@'KbH''vkOy_'ȱ^_3),rpU[pgsѼY6mU>w\9azYd lIj446 '"^/[exh+K!nKI"GؑHIe gzRA<`[t^cF/T?UxL  @2K{V mv@ )ֆzMhȈ ;j6'! 0z2w;SO='ER3}2gt|!oN@&ZZrY䮋=t7^ٜ9sdeٲeRǷ0m|QQjMp̳ʁrBL=oo:n?9DZ7w;}2Q }EQOb x!֎~` O'}? @ &= @H32ɡ47+ձ( З'gzo=.s;4@;[;?+o2Ƚ_ۼYteee.At%m\L[T_Lz,{~mWW 9Zv)Y"覻n™վ9r˿JʛL&rW17m$}Ǝa5rJ)(G _TtҐj!ٶm[߰쫒 fBܞAY^u%Үw%nkmsp(C>6>Ov$"!%k *ssarrgM-Zh<~q} @ $=; @Ӄ9)fZsL'U|A s)9sU d<*tC+չ`=u+(tz؝ԼtB @"=@@ kR֜ v2:srfPk)؜OYyo>W˼B'ȱޣg*S6,;w;v{dp 'ȼy 'xCL[~5>>Z|K#n7,Dϟ8U;xp8b -2v5";S A qUUU׸9v&>ÜqjG9"/^,w\$ @ ]g @$55)&A fL9ӠÇ2k,WH *GDr|R':{t|3"nyf3 ?iӤ; H_ ·ꬅD{bv{==ߏ 'YMsN?"p"E\2ܵLdԕ+ex˙;VJ_Gv8묳 ~a?ݑw]$ "8hkk.g֡;477c=&wΩ֡k[lv-T4$*C#n[O<<䓲m6  @ 8G9s @S"`NQ)Uc'̴{^i9m!hTsHCE@?]c7Xv;/k2} oGƭ2W̛ aVkڙn~{tF#ó~766JmmWmϓ ʪUB{ȰDowM7bGz&3A= {qfho|+1U6wxUܮ<}V"cұ9s-"_{{{%( 5N===R]]e`` ϖ7p}/$h=nr);y_oO}*ʿ;婧r-W._| o]WF]뮻Bum߾ݕEWJw˫_jWz"{|RaCm9"O9 @ ; 8](dgh5 @Bk렯,- ɢJLf:0$v Y'2E#Jf΅$*ʥǷIaut=[_y3),rTbl=*4]Emׯ:lR[ٳLJXxQPʳ>_zKuTՋ Lɿ滘z5Eɯ~ו;nE9  ΍:7)Ҕ1kGy$sp}EwqZ1gO~"~G? ySӸ~X.2bxۿo}C!MS_~~f~9SCb}/q}*袋{1J=2W׽uru׉c2;vqn-((@ < =.2] @:\6'ɠג{%̼*Ͻ^ӣLv vLQE&EA@V{HK7Jÿ~C,%J:+o&3QC-Z矓!-Y$A;] $"Ǖ+WJ"WU0;wfD0uIH"kkj%̌y}z3FND'`ϙcQTȈ ;wO2::,GxG8Z@jdQ퉘>s9r׺iD+O!@򋀏}  @ݶW=͜ q,! f"%PAU3cqM1+뗶>, \ͨ?"[HzrW_ -MTыzQL0˖.ҴJ ,՛={D*uuuI>Q!|Yy0`P|FQO^cԼ ;HqvX=j8Gq$/j4Hc9_n1d'(:%O@z{ְbp|Ob~%D-nݺ{Ckkkȫ~;ӟ)Rw?,ꩼֹ0:|^xYg!o|NeC?/~a/&m&?7g> k׮+Vڰi&y'{U,uOuiYv\pzj >tڭ|ߏڠ_ע ^G @@~{~\gz @ 0E^b.ɠ)VSO0s DvVUU%* j=gSh}* @͝3kt\Y3WVTڢ"Vk8vl޴S^`yollq{'JH/_M 6?Y 3_2ˆۓA2(-+uT 6l<9 [+ޝ'I`َ<===.  &qtE}48/1xo LKNfs=k1ܧM'L`4]pH3q]h?,]MǠ^ࣝgOSO24^|gDk|R꺸6l`s 'l!a|8MYd5WwKJvC @ pkL!@H@^}}}R̉3G"s2E"` UhhS@oo{ܹs9N{_k% ;j7ә%rvxns;˗KӢ&c J@w8nqR4~&;|pe;vr["㤤ԕFA@qszqWAUWWW2ϝ2,!\,Ã{,Bt}nr$nDSx~S2O5A ^T{4Sa{+_)裏}^|O~uqzF.3bկ oy[d޼yhr$Ss `rTv2[;Kկ?8!@PYxh2 @@z 9)fNEM-Ca떍-ԿMӋNxyd`hoow5PX TZ2n X.eVשw곖w7ҒRYv̙3[2A fX=;~x=s?'Sꆊ۷o*q )"PSSZޑڲKӬw\,~MWtM-WgTLfeU͝ګ|p'|2~gG޽{;±V;ΑMEvgy%ݯi^?N=̾p ~khhN,ns5OҗT.,f9 @OΧd@!@ $PB,kk1ϰQjsIIŁ`:;7ȮϕIe?[9r2J\\Xuwz[~nNg԰A,_y>a~_,ZH*gTnZzt_d]b riC1٭CtL`zaL cc1M@eOxnv"fjtбPSǦ&ڒd$r4P/wCsGyDwZq}E^&xN>o<8J,\БjzpwN;iLA|3Y:V:I\cu]'*9SxEBU  @YKY{h8 @@; &ށt5(wefM kɦLy&VՑ@FVVHӏoihՏm5y"ʊ W{TXsfOq>6cQ$=WĵkJI5fDg@{h2s!i0e 3g:Nw8} Lẕd֗+ed r{ 홿..8w/G!RBdbi_m:>iٽ_䚊]TرCԋi%ru.Q0r@yE;~K$T˖矏* FܞkwDC`ggtp*=9ub {gϞ8Uq  sH7lr9:@ VX!˖-TOWX _EvSg-,׾_TTw5>MFqW0 "IE~o}K^t"Ջ>1DD@ !-E@ @ !9P9|MO$cwׄ)Hcs*zk\(3^/txkv퓶>" LyxFY@2E[l>Kc7V`=:m۶m3ܞdR7zjٹs`n7URRZjO ݾ}#NEŲfqD@ 9YmC׋z>g+^cc1O[O  {K1N]ȭع2}Pz zo>rF}EU<]j ]b?1]4h O>dG tQիq=#-Xw=KO?Xϴr-/~ y'6'r5ׄ֍7`Yx( @@V@UB פOCsr1mmCޮ-MdOhi68x𠄷x3ԃ{⯁O}$W4yk/464$0#nw!!"@\ioowSD%jexp(je.zZAb(t<]d7P{:H73TΨ\x:Óf&"P[\7fy'PkPm繱chhv7|kA ƠYEΕeuc9a:T6`G? eÆ x$!΃zK/utę͛7:xnpxwd;է?iٴi# .p +_)ZLJ?aGdHM ` @E{~]oz @ 'sRǜ􉳸nLgʜ7L/|XY']v@v0Y_]ɴCQyx8I쨊L3t.4̅M^*6\r >34ELX-k+VXA`*&M΅I(X9s#@(!M?Mv~&)YwՁ>ly~ G/X>@d۷o*{~rj뻢@:1{:PN>dy^(mmm,>.\KݧZȨr|ߘ_r \sMh씫:OUWW'G 뼌i}^7@ __כB A>>k' [9`=dO0iٺ{-ٔ)N@̉KޮX(]T~_I;f6z<ۺe  **).qũO.,D@A`2q.x2tߠ܇-OJ⮋3Kh>ZA_PcTߕnEx!0zFKN\:kkL4L_ 6$3/yK{%K%niFi8.sj*~YOOOKܮnݫ\{^'p֐'z/q&w#*O/\4}Rop`Գf4 @y@{\d@ IJϽ [xp&g2 ;Bd,@WWI쎨p~r_镶?"‡ رC\[t;~T2͈݅DL&n/.*ukʪl3*)a}w_keٲeQT!>9yD=c q=@IDAT;|…SO=U~_{fN:b絮o9EԻ#<"*v% .@z!yf60 @@(&t @qЭ9U mE$"__4FcHc9D:U)\ӗD ]Jdt-x" &SO9Id>sGGo9S-_yәIٷ8׭ߓ-ޚd DYs]^m8bիW 2 N>{I' c2+=)re].ޭ g{QϬ۷ow\#I@N;֬Y#^ {y/ʕ+ }@[[[{Eߵi̙!OꍍI[Q?|s޽{C+^ QzL--ȑ#RTT$ 8t߿_z}wj]`84IǕ@ l^Z@ 0Dyӕvݖ<,n׶,VKhՓ" AVX![nuP;z޽;GI &* u1iwwwމ@ |L=׻Ѕ=t)#La?u.p7߁DN&oذ!+,,uօ"}oyߘ*|0@ LF`d C @ 9^dNdPi^" 3a$Jv2=g%.K *iVVQC[g_ySKZ N5|7o=*tWVTTz+xa.kW߲?OY\1~;elbl,V}P1`7A 9W=kʞǦ xA!@ s)m @s2ǜ D#ׄbKS)~IkRd̒f"/*++43[wO W{{ze׮]6Ϟ=[]Da|BI q{-~~}8` @ w@EvScy&.8IJcxpOzAA 1)<F3Ǭi&Ѽ-N!@ _!@ Ǭ둑Gd#HS`#RQ'e/߆jjjaIͧK͕չi#2>8+3 ɶdbbQzf_l3#@n!"nkhl9s愃ݻwKOOO$@WDʦ=Y/֢A $`IcVɬ+r\ @@v@׏C Аdsr̕!#̉/x 'I>3)"]Q pϟ7WG&g_yI=+nٲEtaJKdʕ2m?Dvz3dەz(^tK o.YזON`̙RXx:thr0g̫'$Epݨ"w $`IeRLN9& @ fRS7B @ &q&{ہ47L'M/JEȃ\4 D@ Af +,|%4 O+ )^}s}MF&Gw%#]Tj*)..Dq"sH=FXBJKJQO]"wsa#n̚5Q4`hȐkchXL2LJѣ'zorfHٹxs'@ @O{_Cz@ リ*d=cKK%\C ;Νkr gVKӏo2_=t7dO;Lm(FF\R|q@n!/-ns+** -8ѿ-  Jss=cd9s\EcRM*BZ~׻=cKkLk/rs5.3E,իM @ dsh) @@ ^%%%=7L>X#`J"b0csWH-_׵qi2 }--,Y"UUx"C@ U0ҲRY|Lgg=cd@uu'wy= s`}&21B ,LBkLkj2d 4 @ @@Ac @B1'yΠYPN)=4ݑufzt;?}&_閶?*CǛidw'`TUO{ww ʫ(ň;:(  . :"b縢83("kCC/MwSU]{UV嗷0#Ň̌Sܸʌ8ycZz衢Ӗ-[& A~(Gn/[.Ye+l@̗/^*~ttT\`kgwKg9sM!q͞X,`:`vJ }  D@tU@@oDƍ27q,%`:u,A`ppPfgg]~2e#V+.<[zOx:O>y⼏xJ[M"勇~Xf23Ӻeƍ}n^ G] իeѢEs><uThI5{mTuB-I^o+6h U=p};n3Tjg,gW{ @+kB@@W;_֟@@]vvc6+ƝѪۂz{{#Z[g3C |t.Ewg==eWKS=Lo__̓^ X= Ib%n7%vS}2_Hijjr=wg`` 0Rol|)Ja+{OUIMo|kSp),veR}3ً   @0J  1ݼq} t剗 tCwwYY[5$碃XO@+>ṱsdfoK2Oټysѕ+Vŋ wEɯQ nϷG8f?.ccmVhop#n?Wd3V0YgdV)Daʶ] NQ. (uC@@)@{:V# )EټpO:aK!*j@kJT箒sOw_&Jt`˖-d\z{zd}An.y!|;WX!K.o4_5_dafY ! -+iܛZZ+Jg'p7k/ ڔ_=$}*G@@-@{#  otttHs3oKQM:MRJw(iG&nn5eIX]SWv1Oiu={ u. |pOrwqRp{mƍٕߜ9>1.۷mwc0Lp"yod ?Im:ݔV]('kS_2[^{^[r&   @DoH   7o͝5h/!fuCoYEfE =ޘfğؔ 2_Jۺ՞:׾)m>Go~xґE#ND1ݴ|QiO{ZQv 쐱ѱ@ , v'~Lzp}F/-Bi0k]kX)J   @popP<  @Nj]mmmbXK@9%{zzʞ|( +%ih]H6| -|şaʺo˖-b ŋeɒ%]:9(|szz{d5f͛7ܜk?%п({D1VٌqHPQwww~l PՐeO^Kzq    =RAe@@-`lEqc]DŨ[@9L; ~ 4w #_b9bٕ{A{ u.&pj:A `Qn7c5wP:s_hp94hWnOsEcf-[ /^,K,)yN(y-%|zz{d5K~7o.zJ ,_ٌ}%ibsيiHPWlרlJ琮#E ƫ   ! 4  Cvvs' :ݔhy|M(!36 ~ eI{ ;_ri[LFw ˷˚ 5yu#Lfo}l … U~ҍ`7Z+?';K{S4l(#TcUL{Ԙ7(   @0J  1,~ܺN X .Nez|X*Bt]{W6 Д [KۚUR(538ZYY!=:}Ԛ$1=WK,ѱ1ٽ{k)$zwSoCy7/.mFY!    @{ h  LK톳a8@y=27ZYS@#,Xg䅀,zkd{eW]Qyh}*dHhoo׻.ٿvv-p!   ࿀+vJ  DM@nDލfaGT`4Z`tt ^Dd#5ۿP&/8Cz.dg*KЧK1GWL ﻯ(`[盲z;7Nn/otRٶuLMҞ={dmEޞ//UёQ1OHewĴ=" џgB3sD:(07bӤuvM}r~/*?T<"  kOnG@@6M͜rOY6/䵜%gaՃr+022j\sstwwfv7t/ ?Q~G*73#V[`}RW+`` WŰg8==-7jo:'ђpji& Vޮ6yaĴ   <@@H njnD ^ @OQ&aV͎RAS3ۙ2 l0A. 0&7ⷾA]Jm-;udsI[A==EM33p~_ {Y;fwμ63s]۹/-ƺQ3s@-ٮmEN[ ϟ@@@   @Nvv3 H#0ᗀ-Wy>3 r.& drrUĊ+}~@}x^vJ~c}5U{kVN2v~ J k~f~,g>gCEΧmU!=)lJOR@@@ *G'  @Cl7i􍯆V0bk/"A1-fR 8QtvYU?vM i](mǾo~W?>c߅@pg*WB3{KKk߮@=_3al& '*K6yu׮jJCZ˴@@JQJ@@L@23#*7go:9g8(/02Rg%-GNnyK/7|J1^'.X&pKC{캬 ^5Yܾl0S2<<\H ~ tuw]L6lꗖ{#0-3}J_ W|#  I =)=I;@@7M2O5s^ 6I1tvv ~ 2f @۝v??Uz}zFN{d-&GrqU:<^reQ]vc~ ==={*mx pY܃V܃NwڕnUl@@@ppכ@@"*oj1{{^W9@yஃʟQ* *D jt!-*w^ف]$;3%y.Xa+yJ) .t#XJוĸsXZ*?-蝈vGy N6X-N\ܗV_{S_K@@@ GrA@IozżyW/I!@U(Lsuk9@{3r'SB1{Y&S^2 A6k nԼ>5ljTsg2cNq/3g3tgw%خ[)vW:\l    @{  }}v+&A}J.R96'0::Z9E$Q```[ssXµ϶ќ (Y/WHeEOߓ߇Or%`:z{z)-- N`짿]w!dZ۵+}=083]    *7! DU@вjî2v/$<[-!,h[{___ŒJxcnɒ%n\.~4yd?yJDDZמ3yĊ]/ݻ׵ 866W ͧr^~Ki]]JKV]za$c٩i3ev}I[!=~=Jp{}lr1Op.{qn7#O2k2;AwG{ 6-j6}gĠA_1]JfoZ^;r<#r ' _B*r?+=o~yXZj K.d=ǫ=  @WcW}*  @"\l7qӼneIf#^^0[&ȁFFF\Y P@6djnD2於MoT̎2%9 AYۃ+eѢE s@oO+ɩDe$muuj7,3bG1][]q}(^0].bٷotw#{|guVuf3͛ VCariͧ[妛npI@@ ߾  > nnT\+]Nijjt\|M5}#'> .[6G똣5.?IBʴ)D%hQ0?R-K.ɧާ} G38c>A˂(<@@Hn  ̲idT2_3гkYK S˙_GGsu|07Ru{__ֶj%S=wGeO= 1LD{:Y/^*xddD\@Nɘ%UN%󾊠ZߙSާqpmeeb <r9wݢca;/3{erA7on-Iͣ-  @A+  iݜInJ ] \=7c1 ~ 0_SI̠5;嵞۝<zvjZvz>9X2M^$q}dɒ™Ž>/TߣOLNsh屬'x591a *Mn^b*xJ? o[oa$jӦMw֓b&z;Yh:+  @pORo@@l7g 2NI vteՀHp:݌/}>ͧi! M~oe߾֬V\2;dϖ^q(p¢*ݳ9DV.SlOɩ5FZy4⍪^ʵ}!RBc}㋱U>E۷oO?].-0O {"o'nK^߼ 3@H@))Jڀ  @}3Pdte?Tп We7RxW]]]O&%:x)V"!O΢C\YvǓ3~XYS3sş%]lmr69V|IG; ~K/]O*96>& XAF} gXqZi|,q?%N͋S]mm&=5451^x~//###>a&0Tvmry^/L|3嬳ΒfYWo}[O"SS8'fowbgkg!;[7o78X 0#E@s4V[scSw%lc *)}|N_NT\b; ٳG:O6g?+<|p2_B47O`x뭷ٴi<¡! _~|9u1_WYq~zyӟ%Esͺd8 HuUE@F@ߜ7o)5߾z21,w-¶fwp@FȪO|Yd }]ǒ'޹hܾy_[Ϫ?{R,_/<%!xbWcc-l P@WgWQSpOʸR_̗@gE_ # e_ªGh `;!>h*g!K7|s9b[~%?f^+^ݛ֭xN o/d+Q0W̖8)? _V(d@+v1nUG@@9ox"5I̬VfV҈X峞hZJN6%AWG]OʏX.T{,}[e{e߮XTfUi8{L#7I\«{dJ6Fy ];]3Kz 6R#QT<.|O\T5?3lhqe٬/ @4N;4ٻwon-rI'__/wk0|ojo^|3e͚5?Y~_ɍ7Xh[nroy["pwοF+$(;dl~w}rG8 VvG@K@(7o*' h+&3K ~e~i,y 1060K5]$S?$w߫P=?O^&K?z~ѱxttcIiN1>d /X` >/浉?hnn*d71Y8Te62?K2#ɽ΅#  n7y''|rիW.z~<@]]V^K__ۿ[JQ~Pg3iӞ׮`^hhnsnq E X9u  "odq42)aG07I N f|٭XS@qg%jͦګeɢi6}CF+Qn;7{D5 PFm3)exhع:tvu=-Ǖ M-0{Xݨ? ڮEUI[u}lnJKկ~+Y;g/BWp>q~YÑ]w_>/D|ժUkOwqGd!  ^@@%`)cyFM?Tk`NtUg[`nnN!:FUkܷ7<Ĺ{6Nq8U"@…gebYy䑮/zыYzks|iC)ڶm[a=+裏(tA}݅uV@@ x"M  IJݼ)C:hŰ{ ;;AYn= CL5Ae"o;ϩwʪ/SŬ23d~ -+K/]xդ&inrs%Hwgf.[O1F payVWM/wPبK#b˛Qg{=8ն$^ IhyI^/خuE]45n_Kj@:(ioo/|rg<mƂ GFFva{M($jݻ]5ذakύ(oܸQ5o@IDATfI>L'{i@^  @X%M9  ĊF#Hvz|u&xA/fpQ`QCÞ=_:E& }]%fn9WVqE#CrTƥr+V[fZ](avyܗj7H ~M푶6*?44$,%`ĤUD4y]2VςK NfA^3pYHA xUڵk]۶ {=[d nW@F+Ah@@ q27kx ^q`ӊw5 Ba^<\zzrF-k>{tu'ײyJDng)jζd`@iuc/tUয়2JU tu?`r=W6.yk=ҟë %%M@/V=^APnwS̞nkq9ՒwN! q =D@@ݔ7+<cNhMs5SMWD;+ղm&Ą͋-rm)JZ{*z蚯O)mTy#!B{,ΗˠE~y5:W SSEⲣK{@,> ڮ߄SJI_=l\* `\_b&Iڢu퍢n )@{ڔ  9M,Dx*4==*Yrd*l*IZV@^U `+e>/ǭx*P{S(&tݞfoIGW Y*]tt,`Gpop$xevwĤ^jpoB%!_mm*|%c|Uއ4Z{O~-%ȼkOK >Nr  how]KG@@ ۅϸ=~3 kneawdś>4, s@܀HpAF<B?pdvhS(%UE*#Ƚ@QX)C}p"+萶6W\l P@gi!(7y4rU7gAgD5Ƅ&*18@.]jАk;8K,Izi Dt4D@ 2+}t2zz ীpԗtəǷɮ+ٹ9O飒۝&}Fv^?[aUё/@Kefzƹ֊2{E$> >E6)ˌl6B oM_8wћ@ \Нwe˖ $@{@d  Yu)o ?cˤd|HuzF>Vu~,022J۝Zs%yġ]%oMKځ;&={XqOMO=W2ZK+! ^fpfpkk3K~rlg+xoVzω @pi|w.yu@@ Nǩ+  z&HJJPLJ{iGzl_AKK@Ӷ&''EJE:eõWKˢʉs)&Oih wfݬ\tDDir'Јޞ'N%`Ug=7A3v54iSkK3 ܸП{՘E@-SoW_6|r Ihc68%s @**  )C{iegR$Zڋ# %I~=l S@u`(V_#9M꩑ι@xSF%2qb5Np{aעѱضGOJ^KԨoKUOaz|vlGBN> ee|JgrOqy2;SF$kvgNp瓷njبk }93YΛZ*iF߳HVzlkjq}Jrl@?>|yiݲ}B۝  1 =G@@7eMJIF.ʴ dmZl7PO?=L lXk5fBe{. _W8qHvnS0=cG[,^fow= A;{<},A6R茙LѾX2{&TR&.* خeٮyU( Jilb Pi\N]wjf@@Y# B@ߔECB2E|J :!% 43=LS866j}gowVt?!Ur}[%7\T\s$9ȝv['s_OOafکI>6U΂ecj{) خeٮy\dMQQR'uB~'NcIjSi Pv:MF@/o6S^ tfI[F>Z쇀lVuy4wwɆk2z҆͞~XT$^=i2L\gpo(^3}őUlײl׼RDR \D ,^X8B ߅ \q>{$i i =ͽO@@r~7m /VV iJEvvv keW>+᮳>$>={I r'ٳX*~M$=B+[ZZ>ff2!M-3枀~nIۇW#JJZ\R{;! P_8;vW/4NV@@ TbQu@@* 2Mt\[㕦l[ p7͹e,tL}h{} Ѯ2 ^ +?|x.н’8 Y{eAf:{뛽ɑrr7ǜdm۫V>S+À6n6ٚy&ɉɈךI5>?kWawԖ8+ug7㋧1ŹWQw۵,5hԶ^X5OAgN>d1Y."1]֭[Wu})5y|+_)1tM׾d'x(?-LtRyK_Z)C@b'mz5 #  M@ߔ7m咎Tʴt}Э4EB_Y-Wz?Mi{{{3) _JO<:㼢mO'hwʯ'4yԕSܻ{ EDcѥ,19E{cz" lLg9><VeGT+kYDějVST)xby^W8+'m<}'?IYrtttYA@ @{z6  ,o65gi"^ 4Q=nFz8H\{'{jo'/SZ=}Pn++6A nS=YܓǍlQkAW#VMM+-l$Qw1%`e:) @L&(7oIͫ.;w?_7T@@N   2Mp%/gmeZW156襹ڄfg݁H@r,dqN.D<npҲp~Dnh6)ȝvgϥw=TCޞHf{LLg9Wʪ4Oѿ)-\˪΋ x˗˫_BE~֓✝o}T  D In  1Aܴ)݁ʤīG 0[z=ª>G@)ڥgp5O˟5=cϗ֏Df_y6,0{ qr'c^r6ׯɩtzZL<ܛZZ*Ĵm ώѬ=c:/R#@4K p߻wo4*S-y/~1O)gA@%@{  4XvӦULxE{b]V/'=] NMπٲ^BYqٞ%;6.OFF=7їStt&r;npMLN$a|21 pom7ld 9z/IblʤīG@ W󕙘M6Eb>+m?|)gA@%@{  ,onڄ\LElwŪbXuW*[=/ŮT!^>{=z,xel";hٻwر#Z6{M{>яʢÉ  @ώWݩ-  u 26u i^ 7Hpvw_O%bǁdd[N7Q,EwyVSO:SxsmUWAp_ͧ-w+`rk#!P@[k[ 3ҒeJD}vP2K_]LJJ{q'׽N$,~˿KB@@O{b"  @R Mvi+s>^*&ز={<?2*-I;}^bYˮKz^ώu7~_s3 7zgsOb O Y$=bBi+S$^![K4ә4@@ tC'@@@( 26Qo#뢭L]jd$lV7t:IKe[&ᖊ=Qe׮}—b&AgowV2 w۝0Op.5yuhj*Nm{V*z{Z[,|1$N}& < *ͦLJJ{q~'߽@@b/eB  P!ciSOI:W[ᕤn\[[OzɌpc733㪀u0ګ/%c7\?yDcvg[A3o۾Mv 8״Np{Ml=lƵ5 X"mj?[ZʖV6K c/M@_blV&%^8   Y  @  M6+*k+S^P.SV<3BNeA:]ώ4ͫSӞ*_zJ[*Qgow% w۝Ҭ{hms>;;+sss^N% el mfMIZ Kz|ulFi^[^J^~@@@vkL@@ nnļU/(H 0 0|$#@&83qKoVd-d[c˻2gݏ    ^g" \v3v& +hS[a cF2Y<</?A̍gؘDnǹYr(y,* r'=*z؞2qQ'~QoB]+ա z|ul/C 0 j+s&H   Pq&  @l7cl7mbLߪ6e@_0|a$mc[DZ~{/Ԗ6ˮ>TU۟qigowNpSjZۊNc ޷ރUo#7/6lKn, ױ%y`ly_wѻ)@@@j v;D@f&Z}텕L-J-(H ᖖ Aq*8ou|Z:S3~v ^SZK{{3 r'= =:^(XW6=Xr\;KxsalVxdQ*L[3]GJ@@@<֞g"  +MX5*j/NYzl3R6j.c+ XtuG6| Ҝey3W/~U1w?^1.j j r'=j侗RN%b5ul5VnmfrR&_ulBF 0Sj+s&H   PugΙ  DYv3v&mn 0][dyXcl%r[O)<Y/7L۝ ?2>><$۶o^zO]hf˲wqv3{O_^px+[pB6F*Wlǖg pv&flC u?9C\ ͌oWHziik4E@@H  DM$6ټjɇszl{خU@-VMs 0Oʆo}A6Ƌ={~as 珤mv' w۝b"`g{-%oA@ ul5y pdtsP@vulHD5 0i+s&Hdn)lj!=僀# h.u  $]v3v&^ۧ*GJJBU@-]jrSؿyڿZ6+{p-(}0Gd%[s`@v <* ^*qlMױ nĆ~؊&p 0\e7IbY2"  $@Od  ?M,k/qNc4z8mc˔kW8i,חxe֦H2):tLnb8&?\1PhmDZ#Rg^" _`hܳf_&flFY[i+3ޛMJ@@@N   ݌ݴiLW*z}1sѯ[ƼvEPKjsssqz(u4gi?p^0p˦M&* jko"܋HQDx$(RVωbO3dX֩hle9A1nc{i+sI   7q#  ݌ݴ}C}j'X)1bP%_L/tӝOKKK,3LZɆo^-=ݮ6r/ݏZsD^.*r-(2!ȽlQ2Y".2BE0O-OL󉴕y&%   @pB/P@@nn4r,T{aNi[1T:[ A#(` FVګ/TfKnu||({O:h_wT n萖f9 r{gGs\kYDK5b&_ރŢI-0{E$豤ǚEU[;\[3]GJ@@@pݎ3@@b.`cifV}텕oψ!-p Sqss%Txm¿y,;ݞLgf >xya; +^$=/zfg_leu5I'2{6nkDjcbJCB`ly'VL~@@@vQԞ7g"  iMH7"i/Bħ(IT{[[[MqyRc+n|LgXIyA=mVrg-`W\undk-݃#IyŠ UQ[V0V ۾RfW91oپI&  @MY  M.7*mő:@H~=[3XC-pUڮ)7M'Q}t¿yd•Wk nc䞗gzm9/s~R85ze6 aeزc Z@㶿<$Z9-!Ҙ~떟K׼ҭSzM؃   S  @Dl7 V!3!R1 RA o h["uG [O|r\O]*3vxJD~G{^ ^:vm'}e{l-ɽ LƟœ_q[KPsX_pMG@@@ GrA@H7hJw$|m8R-HA2WgU6t CZmhwz|ÃxnhXv~MNzJD~G{^^X5\~Sv,JS[ܷ%#ފdUOv񺕬mdkBVziy"  #@{0  +}4+u' =L{]Lz>ҁ ԄR(b^Ӗ=򋻶wyaOȥA{JDAH{^^23YL^#y~)*3!$Nu+f3pwѻ)@@@j v;D@f&Z}EL-bo-}M}F.)6W\\`gٽ8eO&C_Htwܞo5Ay ~zvFy94Toomq b&I%eT=>a 0j+s&H   Pq&  @l7cl7mbLߪ6e@_f9ВIN#u׶IcmryLx {2ΏJ䞗g%iWt\@ ٹmȲqI=gg۸ 'dfNv6uCl_BVHB@@@!A  ZMk/5 e2b|ɉ,:ȝb.333f]/pO},zsW9y?̎i"p$|s rK;];c}y)=ew0{Xh{nV}('Yz|1J2)*@@@pϒ@@b&`cifV]eM-8zl.qʝtp n7A,zvgV*?>9]%d s%4@#%=/R36fp/elۛ[Z$*[[+$aH>%-gG# *=IWi/   '@  3M5+m3fl~ r*ЩTxm<ۇHZ ?Qx42=foQc/zls//D!Ml%:jkc2)*;[nwU0"5r: FVT@.Py: ~@@ Y}̸_l7mvxz.v@U,"M@/[H[@nNOgHvέ{-{[55˭oc'DxL[e,}ZLk[IWi/ v?O_Z&hzɒ%qFٰay04&sϗ{WV^-?яB+7|s+wvVK.Q9/Z Pv:MF@/`n8onO5+=&j=c/I M}؂CXʟxeio|!ȫ^]{/\:;Dlܞo:Ay ~. y~'[5}^- geFJz|1>-meb d+o.y'| ;{A&=;|p)笳 ߼ys!{奿_N;[oUn&y+^*S7@H@s H@@()onڔ<9ei>^)5,a0[V A@M6cK/^fo7gwJ9ҕ X_sܙ=Ef(;K|-*43(l|%;pO~χBު,TRa GP &4e*x<%_R^ZmFwqMo}{þۺu\s5}r'wR3z,֭oާ?iJjSi DtD@F@ݴ 媭L _?Fz|9:SxV<-.3+6{}dWRv'e{ϕ٩˝DZ(G{^Sߑ&ikk_f/IklX(c"+6Q$6@ 5}Lfff m^jwy/}IzW*Їd4e]V]pl6+\rL qg}O9';93Θo|%Ŵ@.@{{! *onZeLQFz|1"a1؊QŠ]]]ZӼq#lHݙpgI u*>?˞ !=n919h΂zmץr3'Vvּ9/_{ؼΐ$U>\p222Rh_z~ +{^Z9y8?c[BZX&&ܟW X;3;7erA'nv"@@{1 D@H9oڤOtIWi/T'Ǘ.7R#_@-^۰V@ww+sSׯH8{^pohpqCUrss#w";?!G@Vֹr1Ұ ɛntɆ]tu꟭g w8 A#ZnZY;瞣e˖QEE1Wf2q𿣏>:W[oUJf̘AZQ[S?.]ӆ hĈ@nZ     ⱺZtyYH(tP? 1nhᆦ > v^ՊS݂WKXo2pomWh}vΛFIܮ"wDj|'3kԠ^E=*#ӻW`8g;3@-~$ [G_GZ;V9 8E`xbٳgSmm-]tEqF5=AO< 4opPnn:ŖoFYRāmzV2 d\cM/P\ERnp4 5 ܵN+vƧߨ=~8a$չ!E i˴ ȏv=?@R?ْ{uUD 9ߟ<^n! 4n 3͈wܝq~F|gt{{+8*:+\d`9!nB3gR]]tWDHF[mxvYYYtg-З_~Rkl"bq5cϗ,\Pwu}хOU\afg}-ZK;c 6mqd͚5db6;u m }~'j~^5ja @qlk;N N:ɓ鮻 6%(7ngت (zDG4"p vR%ze($P dffJw$EVR٘K“>w2vm-_ENC9Q*(=?@R?ْ{uU[# {D$@]8Q#=s(2YXpvA ;S@=#{ܘ9^H  bl]ۆ)S8ϙ3G'n^u++ofw]+-36:Y/K2(h/ەkyI'g4hi>cA@@@ c5- 7``e$bL< u஥7Qܹ3b=ߨ=~0_}x3i v MEq"w>v6Dt(///" ]g.Ei=R8!~.qAݲ/ pož]WA ~11a:(l\ ^{h-&=˗/S|ӏc%ɓ<ƍՋFs~[Ö8 5i:ύ9rH'@e    ZE,qƵOBD^Ih nuA7D1,`P|քk }ݙxy+3ޮ5^]>hhLv D |B'NȞci ۓp}/\p,cdu}_VE9,Dk]4)A 'N$ѰXouQ{キ., h9hby,+teL:.21i۶m:t., ֭[Kl9E[4?%u7վ^@@@l PQ$weą.W5xoq_];7Qο],9zz5uq~ EUYe](O>z7 Z ;mgJv'{p@侇}ߡP~~3'@{Gi麰x. Yv]|3ZV J)ȊshRX*5e,%6/jjjRN2J3PS__KaDzj]aƱ#Fu8"Ku;    ` !  ed7%`g"/2-N+:/\1G@fɪ]/2W"RֲrAsA|'?1Vngmdu譺A/Ƚ%2b\G@_:oOtm{ 5̀*{g?Xq* 5#R"+^ZB@ nh]V@ E{gwiORdq}GV k#\DJqq?KJJN#˵{<6    VJ( @@@@sd2u̦&)Xb,l`SE \ 6Nb)=]ovΝazA~#£Tt֩޵m;mj v|w:ѱ7 V+$Ql3ND"DA)e #8ˆ.\?M cI\8d[^Ȋ ^n5/cި6w\) ;i۹Qt-Fh<ѠAtX3bX8"KA@@@J[Iexl2Wx㹎`̪MUXVZQIn ^zz"KFKk&H͔gEZwsVPE   F ،B: qreFѝ}`ѷf+-Jd-@;M@Ent[~+EUޮT}K DlxEПu8CzF=v,6],{^^{鿮&T'?c近NnD&3@ϴPp fee_1jH ⼟l+%@ȊpH)J-{_p;x>nteE,WWʎ;taYTe]8VLXxxBa>}l@@@' p@    #VxӽK^d􈿇E>!mC _6quS/D;V翼Kmޮ4"_*}n d+Q1?s֮S@ܮ}̘1{F466Fl(Ua$.| `݉A=Nu8%gJd%y@l}jwO>Y#WWWו+ׯڈ[ @@@@ qaFxc('YqXE;>%*/h&%@ɉ{Up>~Mg}k G})"M;DZ $ع#4Pw hoЕy". d[[,]@qK6e8_'YqgC΁@l߾=l\߿z'?g 6l0č7Nl_Dk p(qaFxN`W^6NbE2)xe#/ah|Eaa,pIۧOp"P7*Ey 2BE'W[M-H[;'Wӵ#';']@::̌n,iq,H nF-E(ٳl+EDt" @@ L^x!iÆ EѵC !+W^!Q̭\~?_˒8pVn"z@@@@\K@\Ȓ-޸7LdՃÃD>$tMDL*}HH׫ݻwv!Pwѣ5Uq[۵ tՔڨ濽@G]5bKŋC7xSh+ t323]NS2`=:~⻠,o P_ ds]~~xP|M; s8o>J+ 5O9|̓O>y}YCBh_QQ6ypNPF    & .do\'yUh-_>t'_,<36UHْj~ٱ@z: yO66*~+jt<~N _n {xߒWǷ.7w-nH>9u]]q AtY>PB1Ro1 C_-]T0[;wnvj=?я֬YCO;hjgy~i5,z^|Ezh߆mFjHx@@@@FflE  Y &a|Cd6hx@"e}'C`_zYm`0 !ȧ~pzfK}𞛨(eTTli d} -|nڕeljUt@]}FD [9Zt~#)NOs~QwEF;p  pă>1zhztqF;|EI3Ln8 _ҤIb5{Μ9t]͌s-_J&4`rss#jkiixD@"ڱcZlhh Hz/^a&zlI=e=^ ׶n֏Sۮ>l}aa!ac2v񅴽rBKJeB*KIWp `3rs(zms0w^[&:ٻa0B@6%2RV*a։sk>6nܨUul>1A6.ر8;s1~zz'8v˖-#'syyyBoIr~tZ;ϭ~~&   b=\64 @@@@! .di*Yq&D >tt!^,еp `5٦Zq{9!a{{ !GSH&}qhsy9Ui22'^.,*JNhmf}QgQ<]v]s5qO1b=4uT]I_Zx UB?@@@`ݏ>" +.ޘ*&';= {LU 6 U[ZlnnY7`kx+۵vwчR`0ʾU[D([G'A}rI^JY' #S E`q ,B+(( @,V&̌L1!2 v{hΦ+WV檫L ğsE@@@@& o;OTNOt?mAwB-5=8@>}tw-c; ߽Zo?dAIL΍Imwhu#w74Җs/]NMx#V:hAş~u}Kc'ES}x񻱱QRu8l mΝ ÛSuZw?Xog,}a݂;(vw@$%*D'  _DϝzW pO1GO?!XTCO9fM7D/Hm㏧G}4<~op ٷo_:3bejjj] ܏8[SW^yE5D\X   N0w6ӭC}     x@--9Xlmfl\'[<4$tN%n?neeeQ4QSfkf跢h]x\AKsK%C\w,}aq;ǎKY^UY<)P3=w8ookom*.[ ݱ\0^y{[L@G\#w1:+\p9,^XiXr+ o{n@fmөc7һ!oٟ٤R][&DZ7FX׻wom ` ֖N ܧ@ZOm"]GB6F| _Fws@^8]ak ,'yP|\(p箊}P+ܳ'M#__DMU }Cb⭗jO)7lW~ݝv6qHba|ܵ4oi_~WR@K^ΛxL --fG#en@!pgSz7v,pVwc=V{YYYu%%5 ̌L*((0I@<т{vV 9KuQxܻܵE,i Al JN&J8?*C  TtӼy󨵵~ak#tI'ѫJׯ_[lM6f̘AÇ'8sNڲe _uʸKhѺ8ϟ4k(//]BA@@/Zf- AN3Πw}VZ_k6s=t駇|y&x~:7</_N^?訣z~     0blQ5|Rha']E7@WX+)v8ݢ"nݺtijqP1ȥP][jԳW㦵* _Y%v?wt?Mj=???2[rGqvٯ__ % bGqCENH'H;vQpipds wnW)M/s@}z6|r|"ł , ,iFYYY4ȉ'҃>H^x6{v|"⽖    HSNԊ:@@@@@EdE59MȈ"  Z+a ٤  TGY+7T50WIOv; ̑hĒ]T3jxy62#?Ŋ l} }ΚNؾ/--_y){YYY"wv!Q9,6eիee2! HNδ4^@^7#% {- @@BJ(@}!5)A@z;# _6 vuu! F@FW42xsA]uԳy+B     '"4@@@@ ⢩DT[:Ҁ?Q>&J`kZbcio5zvޭJߨ&:c=ve@2Jш^D o--̢Nlc-]2:{;PB=_r+ 8E䞟D˩R #'!4h0XJUW^Nv.@g|;uCW]\|7te(ﯬ,ϴ= dPG      ZfM;::(  I@\ ptx$+Ę' ~Y|Dq# 6V{@*ӊ H۹m6bnq\d-velzdfАS`qU|>te da>b; /:v_Wu{YYd N"wv%%O'Ш;}QV6zzRYI-L-3'wJoHWC&pۢD[~ۈ?      =1CA@@@l [rlֳEg }ywnxccgڏz ōs!+ռ òjlKܦ}JMH۵}):4P~ΐ_S[~. Yl?kۖڧ~:-g+;,+D}VoH8h G@A"w#.㛜"!"*~&dQ C(.(A@@@@@@q;lT\qc&JԨWjs2{Fٺ&444xsXuŶR]]..YWc'JDn+}ʙ+7/d)H]nHcCnhG(=B      !{rV-jA}ddKN@vEπ+ zb w!V())(*"V%Zo]E4oQ'+Q?{֟vZph b3L#/ ۵}]K#:7O 46O#`=iC*{瓽&ds|l{oN(@@@@d4c0=/b4#2---@D{0$Á䀢"]l7W-0F^+| oG de)ц>'oHzqsb"}}˞ Cؚu 2PXMֶV]o,w-{2ՎvLY{^3D      =q(@@@@jNf=L{=@222td_A|R777@ "EY,4 ȬWTT]mYo׋j.>hS1l6:Nq* ~Oj/vo F:ⴑbg'8l#V~AU&lc!pcw>SLٜW@@@@@@#\U @@@@M2`]!!d^ZF/yNĂ@|,p iDCbM:;=63\oՅﴛ8۽.nW+k(l5%:g.jbW8SMߗ(j;tN[o]a3d͸iEGlZAwn?DڑG4tIψ~J5) {0WVTFXo4h &}Yt=/!pe!p+ 8gsZp Wt6@,9pzb 7@?S2(QT' .n9G?xD(pYQ(pߵkWxS2hc4R@>}" lɽz!y4OnM`*ZE5Qh{ӕ+RnWaFc+i{?8kaA侇F[kl۳!ID+$nni֕^_ )`Ă{k슾 kZ'{'^9-3eBZJQFA@@@@@ pw    Z4,F/b ۻwp&JARM R"ccsUk : ]a~mw.0c[W-^W_O׭ ?giAǍ,m:a+r]|1 kܮ[L~7hbVed rJyEye-4vnH~ :as wBkFBms# ^x!q];wҦ7ϐ)g =EA@@@@<3CM^ɡ+;;f.HOO[k&kw>@{ -t8S޴S{+oNSlJCeϴz_6҂߫rܒۛUoUeQӉ$]s#~)#;/VS]L:YYԿ] `Ɔƈ0f`,; g-ٻ2ND6N}GWl>}[i|3݇.XB%▸nZ % B@4DQ" `ֱw> VEVD;_V'ĭ} ngayK'ϘvnGtwױ.^|*f:-WKOE.n./J߲\9oCKɉ"*FDJhhl;7'Ҍu<H.B2@| LA('4jKm^OerBxii      ܝ"z@@@@\O@X{alp-Cxl [@AA@ȷ+d58pΉc˖D7A&$R.MuBO=vd䈗b;ʏ5Rb*wA|~7QmH6ր$߂{+ -w}& 'v)u洔k) T+HܓlF¦'I2^Eä4(j`mmm:[& ZďJK#-1,RgzRkD^+OzwuUBCh0Y{qٽϸ>RIΛ7GZ̀455Eot-c{菴cIN`* >=ٜ}-Vɲ=      e$ уut R8(##CGt8HL ZK dɡ4Άdeeuu,~80TL{UZ`dx|1=?XZ_7N44jiWCTPsKn{E"(wP:KwZ[[#6R[>l ̰xE+      >(@@@@"e[6(8DǢ]$D ,[Ae!0dbѮUWW[εoM%}nk"w0Ya݋vE~wV%fA8n=wY~B*ϻϿ͂SŴEl9ucX:# V;vʎK@`h#udx[%s{!nr=D 2 {R      >(@@@@D.dhhk(x5;;[OŞHYl$ NdJK#|MED4商_bvۿ\G.7Y-lwc u\b;7~KOW^,rgq]z ܼ\+"w&Qx_Ԕ}d, 3>-N|4^R@$qJˊ̑1ރğsSk%.\/ ̖BcQ$ ܹlWo5h щ yS[r/.6'Arz,l*z{U B/?~?ᘁfOO55-<(ڄ+2*u Ƚu\^رcm߾]L2+KXLXug&u?Xp'Xptw<~p `qnO˲^~I@@@@@Ow!z    `!q-Ab bpD^a#Y!{Xy- "SZk 4p1U@9M5FIVҁ`K}!o.ƬϜ>@iѓxEܾKWѿ>O]K0=(Ux>WPۧ+iQ>Eq1D,&޴qS0 6XN7p)`w-إ?aqc]@Jl ^x!2Gۮ$yA80+nrL< ;YYY>uw)r ---!ѣ@F,,fj-lA&AXejxi&k8Oo}C 㦋 vSHߠh!Kŷr*.=nn4"OhQ'ҠGS6(Dܫ*MG>W8A`gN]5 oҀ1pĬuw@uA,/sz=('X_pJ 'fT     '3? -WEӕD l89zҵOY.%Bl 0tPJ$n׶n⇖nv5k#h[QõqR SM]fazsy9UUZc.~mmTYo#o1|]U\J+9WA~H3pRT5dvw@kjC)H@9Q m~ dFM      NIڨ @@@@d6"wS*>=GȪD@wEdCM --FnذʩYv7ۿ,?;Ͷ^خ(kȽ $v7Bsj~;^u;LeKb/7l@`P7%%tPpd#ޏ?ÑF[UI=y~+GnF9Ɍ5$] Zg|H5z@ȷ@IDATlK#dK x;q\* d"|K ;;%b1[[ `@߾}w޺l3 E4G#xF -ܪxqTfc]BsA@@@@@^V,+iZlGV&>MN/pϏhc^ AAF{w:ٻGf@SS%"$H@@@@@@$Q'7,p`;[Z(O =$%!t n\L]]]7KC6H?]t6mzVWЊk,&qW;Ta+#d6b1!C\,l_҈WK1Ý뿡i'SoLNjnƩo&p@Scuv7ɞjO2 N]4)7/cvN[hkkՇ{L#"{D$IA@@@I@s+a=XEp > WG@\==@޽#eψ `#>}Pz13[ꫯlda.%+Sb{HkC.q):w^7UAL ؉;nKVKw/dQ : 2*D<f (" ǀK %PUUEoV zN\`>(@@@@dw^hm6sѣN`St>F\; , }\۷oWkٹs'?G@1tV([[[iÆ 4j(YvXoO Dΐb'L]=iBUNuM3\wJ\Yh܊B=pQQccś˿;Douvء+5jH< 599b`.q{7[Yf,es^' Yf׸<@F~;Zƿk\s Y_i|s=굫Ng[nx!B{ۚ XpOAGA@@@b-ވbZWY`,.DS zk5^NtM# `1c"[n%ޞ,qt#!,yb2' 1K<<6c,/}V,aEE"J1ڲ0oڼysDy%Dt-ަkoK9.T D ެ,Z׆8Q/x33Wes9=9chu]G֭#>͊'3<s]_~9edd8Qm+Ob"> ^ls"GwآdMry<=[-.DTBSxqݾ(RβK<Gl=䖖FJٺ{+h75ň+Ƿڝ q"l~RH!ؗx W/g>q:s1<թ*8Wc%ݵdhh@K}FI!P__Q/"#FNaϝB"wif sS|yfsz'~q #cիj>M48 _Ґ!C;뮻`k @AE@@@@#uyt R< .Dwtt8f%ѧLq!Ŝp `E^z銮 ())!u,[v-q6:^S.8-n__. YlR䬣k%? ەϬqch[#Fک鸞CV6ʁNbW_.AMÇw}HϠܼ\mTjCρ\0Kh!:.: `LnTJ/I%&+@VZE>h,In&KH.6spCsMM5k@@C@@@@D@P$[qS{QFmD8G:ڽ{s~_ŋO? 8b p~4rp^{ˈT    `m"A@@@Owsc([$CO@"jRÁ){キNxE|q;=vv~g*a_bc)7A !QgT~Iv++*6ѣ)+[Q%""@!lQtE)*pO3D8Adp|◂ lNJ6wԻ" Ź#$JOUTT$Z~a5fNA?{j.\ @4q    "N8H>:b: `(p fAz0D@n9D3&\۪&-nı}} |3N O`R?NAq?(sѱE\۵m;U||k~K7+#RޱORȄ(p&&x.:HcI3ٜKqn4vn\=wy^~p$o? l TSdavaڵkUkKBHCn[Sd{ŅBbbpbDKU0G@ m3%СCɰc'Dmvi- ۟(zc JKi?^'NHv%dx57ҖKG[o8E-7D`۷/G#E`WH->S5@Ha=b &3ڪ87 466ݻ ӊ3 mFz{H=O=ZG㱊Iwqz<٘!6'T⛢p5 @@@@\B'3*Rf;ԈU` #TXF}]X#,<o޼YaP$7uAG-F)nz'ݿtuZ [kgO?~$RV=rṴmLXnzU([G|?"r/++#h,h~VX8uy#Fh`ަu,pOYgĂ{qGҐ B4 ϕlأCt8شiis!~ijj [L_d q~'O=԰_SeeeO>|8ztiʛnI]'p [}ҊynL̨cN?xIu3/zxEOVPywRς|y=R Z"wv%%j4 +j =nєs^b۶G4o߾q, ݾ%s,J!+$i]^^U7@;Pw~9ch4d˗Ӄ>Lhj;dzʢ3<3ly$n_kjٚ[oE UV-ZK;c 6m>aQ5khɒ%lxcwީKoU-%vMMMv0:>A@@@ngn$:O,ʼn dJ<>Ax5;;[gO&n"]cэ>㣟g1/ `'ۧ ˥~9^?~|*vGv<{wN!Uκ߉TT1dh#Y<ƨȝ-}SeFAlHF׬80b=$j35VQeW:rwdsQ2 േ NرSN9Emnqq1رc /TrӑGI|s=D?nݺp~Ny>*5ja @q8ԩ&OLwuW؈Oҧq)'3f?8ESq1-sh^ dNuh?I Udؘ֥yv}hљZ<-\#- t_K^PyFrEO?_y$Gd_@#.Ŧ-UL?_ΒKY!:^UYI6l륥' и]4_Yp΀=1%yQο=z`2I@M"9)1^ 2p'ckVN2%,tƱΜ9:qW_XzrSO=&a+8P+pw1)vj_er%-ڋvtItgk,'{<4hi&|0kd;bT    Uډ;₏XL1 G=G]z-_x?M7Ӫ7Y(d}pL9!-%"nW*񦄅4C&Q s'Qo9TVzѕT{ǽ5x"w٦AV@dm~\`,wg@$qNE|N">fc]{@^^͞=;f'L~A-"5~kԘ /zڕyN8>`1aDqF#9owgq4hi'{|͛~@i    9,b/}<1,[3hљMX"E60`@D^DZotQ1-Hq"~SW}w0l?qx?RNvmmk#7TM6u"\e*+"wV-A jkk#§d/uBq]hyw6x|dFdsU9S7F6ocY0u |F,is⺈,kFoFKώz]FW6l.+0bĈX}-"Ku|+@nE    ["lǷFDz'̴4්hŝQVՁr@@Ks7N:x: `/[,[o9#Bn4򖖖&qk#]JaWA/8 l"wMdGȷNXi3Ҹ][ө$l~v\nN.K.& Z9(vKރ+ Ĺ=+CY"3~w#> Xo101;MUUqjguM4I ;EFņ]RRb8F-gxejbDڴKGy     q"s 1cAoJP=7q!ǽfRvhŽ+d:c\#giզq3OYo5Յ,_.jz\vqE~Mm-KJE kȽ $v7::k)a*{뉭_GsTUY2A Z[ZIC=`~_klletnxc+ݬDf\/:N t;sp 3رc .H*gNʃ?od%ٖ8+YX҆PB)kiŸRH I˖(-K;mm7ky&sl,cif}ssfP[un.K&QfzFJdiiZG6d@H{4C"  Gf wsۖ:5`|Prp Ќ Rhll^haÆt#eoG0{{8=>sN!tCkjʞ lϟCP__*7g(c?~ 7e[]򕛥= O 5cbf vJ_hq[e$*066شɱ,_$Q<ɑctX@=(G/ qȩyZ5FFeKgxyG#̻M<7&կ~E擝XZZ품9‚f^:J"Nyc{cu  ]ܳ@@<.PG-xS2V=Fox zX%9t쒒P׀t {0}öGFYu(S e,fp{quYzGGF"U\bTSUO l}T>,{?ʉc WqቧˤK7IzAyqC ^صk#U;9i .'](^Ç#IuMתlXNO@S3u!_ic7c @ X)ƏMo9`;ޱcvv;l۶vh3ms>N@!PjP @@)Af'3xś5^W;ΜKf?f{.xGə-wjLMrE_QO=-Wo _~5k`m+G/"k{,ICHZƟ\9:!C}ׯأ[h'LMM9j ===}vvkc? -혷lnԘx3}:'q4UjuK"3fjNtSogZ@@ SSQd&@@ hp{EEXX=XWAfnT 4}||<(}w@4X'FGG#]ÏɓwX;U fn2946%C_sPᴮ g_e|V?[dcl]2L1++r7o~/M7}R A~)33{nY\r"ݛCM!O>d,drΏzZ?;[@Jٟ=F{ 8%qmm%3R-!=U>'w3q;w  K@;nܸ1&uwU,#笵[*28pQh <mU-kg-u  @pO(C@9}f}6|o5z *))qbPv*epJƊh'T4449|(h& R)p{KS^8jpԒ˷ +Nj_{Yҳm(,+[?+G^x  ;%ZcYؽOZ)ٲ)ݲѣGe߾}fiokM%&~ I,bwGa-=zS)HZG/\_2o~]n6ioo̯u 6?_uTȌ-o:#;Nd>':1s>@%Eo՗   qaB0rf3?zW@o[3hM? ShnnvESH@_JZkmU(-4uG/r߯9 rR nĭ7\!SZjd%_7={wvv: kFCh&w=.l >|d= JX;:h!6=i6fNs~x̼ R@ Af ~Wf;Gjm\X>00iFKKKd @@ gBs  Z LC7eflKi9d hV130-x"Xhnox9qlϻSG9].>Ӟaݏ_])?8q/HlPqs{"=k)Go\'sTo5kPm&mmm*6nhwS hKǹ?9Ē ,sH<:`f`&??R;vW."lv]w7ȼ9q}ɭj.qtԶli xJwO]*  E;C3/;u24S3SHguX 039}CA =+O{n%Ʀ_wӻJn/[6/|R&7~A;91q,}ӱ?<ӢYR\T,l?EU0'enaCh @ tjtQs]w;,D I}{SI277e_HΝ;#&jn뮻N]B?O}{|pt윃?Ugfg@H@4>;G@@7:f= 15+++ Ghf N9xhpьF͢ PH-,avQ0{ )Y -] tׄ}'B٫ {6tO-}Hs m_I/oӶ'_7 f߳g,,:;dVVTʶ~'Hw%SSS]m˙A ]#ÎCx܃ÓNrM}^ֽݾ%wTF)0??xt.qUi韆ɅG3<3n3^޽{_jdGyD[ ~##ӹ4a p>;G[@@E  0=~-SKkwO.D(hF U ӠG'T*>yL{_羵Y/}K7ER(d= R,07;'k¶g /]ǩ{bѱfGxH='{S)<eipfI3Bq4R@vi[# L]믿^**bF޼y|ߐ#}m^"@~^ @^F" U|(f>Zsm 1ckWL55d-"Rq8NA 7/~v=ޱoX/rK_"Wy:T4c@)ۤgH_%7ly`~A~9OK`i)#*K޽[z{{ɘ٘e֭tV d>CCC}ql nonYcl:y3R힓y/oL3rR0J@3o~ ׼Fu]T-C|_Nhz`M’kEdb /'  n{t#  3TZ<ZA;vȑ#G"K5ɹgT ɡCl{ɶ؛EVb Kem3@N;/=!?{Wz2^|]v0e > ݲe466f_zynKe%-}N7&Oʾ}dqiѱvvCCcZ(4558LƍX*(=GyY3z޿/K{cG<6hϧpP̦[ԇ^wm#4PO?+XΝ;Ñ]}nd ~Vկ~e=YD?QHЈ&nVZ<ߞ   2:QK@@, e123e;iRVs)*6Ľp pˀJwo^+?'}-m:9wE0cr9ݎv=}}saCu$/IaMuU=&/L~hm@e;]JSOKyp֓L^-OȨ-]֚C1{_׀v3;ɹ}w{ 6@ yO*C&{tK"r饗Fڧc!XۇiB$kɵ?AW]u &@@ gRs! V!̷KS̒4M9(PSS#EEEn`&֢٢梏`ݖiL޾Pk? lٹ\ۭ(--N;M:::#cccO"$LXj{)ݾղ42xrߎq[h~Z]ЌtqTVUOBS1G##͋ҁv)(ZMg}'Ӡ3  <=Ts?(uGW_WO3=r7'6§<#Suuu\oyDmm\~,ڀ > ݇*# d^@Ql'&q{0),6lرcʾc;3$(@,!teo?ic|![+gSOfр" rwd 6e>J7uJϏ-/0GQ}27ܾLNNkɬ ===, R r7GhmmB EE㊂`GeKdU kr'NӎUTT8@SS\tE{ߋL=P?3w-n}~uF ϵb|WJyyy5  O E5@@/`>q{Zzz p *N@ E@&4 j||\2qzΑC?goύ=f:묳\3]} Tð. +ʥJˇQ#ʓx7~|00~ΝrGO;]2=nUG@ p7Ӈ*# dG|أ3zs\yׯFZ\\}HA $A@ N'T*sXז}xx8N&Xr h}kyBۯ,9\SCЪ׿޲ek}-PJCJ-s"Ƭ">R7vЃLτ:Xθ[|7o,:FK8}׮]Ck QHV`xhضnmk-c&-={n١Qb:03(JtO笅{V @ W*ꄯY_KWWy: M7$W^y?~48h.f}ɥ1cdpb5S?=mMHO":z9^T"ʗm,n>=[nŵ ځ׽uNyYq/}Iַfދi?:Gmm|H8  O 4z@@C@yhf.%ji阂@w=ftJ8Q4}``6r`00%xE!`xU{om elTPYI}`-o>ql4>>. }:>I|2ޏJ`a1a\_~-Rz/,.T6m$ދ%N&w/^ihhQ{'<, $= {Yܾ0j'=,:V,E h7g嶶6GÚ=yaC@IDATMo_td:M\QUUz^򒗄m8 v!T;_}ՌƗה&  U   @mR :J$zCTܭEgG-..}m}i{W鳝R|C"b,\4Zg4uV.v`Y)}Aaq__n,׀xL{%Rv6}ûdiMf`_jYm2y6ع1>FXA.BTavfYX+*sukBb pvEwVSSms#&=~'{wLI=( @ \z饢)uuuW2MsnSO=U㎜k B@ G@@2,oNw5 7}HA 0i}(RFS]+Om׬Oӫ =zTo.ݹ']%PRn(yR3VYQQak5F3O?t)++iLpgʶmD;0::*>ٳ'4v,=9p@(-]_{ jK^/KI絍 r^}fdtV1}477ۖ1@Q"鰝~& 7??o;yɶySG[ /@@@ +C@@<+@{!i+d rСCe,|n^F9쳥1:uqy駟&Ǧggge޽^E[kZf?z+N/<n r~ݴ3;.N`}6"4x@:){Jǹ|L3ݼQw@@@ =)-B@HDphr3kTCm3H5 {V`Æ XYSSckԔ9rĶ y E0=\ٴiSOc=&CCCL`gK4 W;0ؘh~'=+egIe+G'dkwF+rU|fBG3HKKu $](tۇk0)J͍]@?giBk1qZ1   @p  p{c> ]2Pa3y3P N'z#ke\l7-{ooo N7RpM9鑲;go[ٳgYݣJyw^o~װHvПd˃ߔ^\?)yLrzhk=t1 k@@@Ȝ@q3W΄  /LZi Lp<<<@ |lk;a)dS@3kQenlMMMEaYwCG:wd -[g~M^/### uJ(-- ej/F*^p  ,-%XvEJlJx?/mrߵkW賴n}-m(/0=5m|-./+o|[XP$H"1sgV"G`)o&RjgM-PTS-]`O㯣c.E@Ȥ@t B@@8Tևif(4#Ut{بnn3^9N _45][Y5jnu8t+((~ gu+P8#k;v,~aGPJKGGG(@W_ʆ7\!姝,o|,Զni~U|e/ A~Rg_;7JN,p ,`dAv$=[v{KM7} =`]U]!  @ ĿKMa  ^@Y'''E3ST3qjFõ &H7Hfƞ \\\ jN5zh e֌'g1 L;}?Ѐ`J4}bb"Ԯۣ]+kMZ;%hd*}nw @(ݽX6mVdamaoR! ptk[zjv-[Hwww(xzddD v w vנwݣjZkv,~"Az"^\\sNM ;d7;qcʺg}vRT]8ZN2R f$gG }W˥[6z=wI^![6;7k;=YObf #e456gvNe%=A#Y=:z1ꇚ+@@@{ Q?@@O hbYY-lܸѓJi`^BW p?l"ڮy\Gkd~FYKx笽R}^NY&4=ӹDNkD?9VK筟NO~Nn.~YصGZoE;;\BܽxUܼv ZZ[l˘I@"0Ȭy(??͠N@a0s tO~.JZnYJOښ~ܐ l'n:RAtJw ,'1)5tN8v!j%yi۽ڴ#   {N:1@@ n wkq{d]ϴ8 lAA 8-D!e16 S'@p{l92~XWU)]_YVj es_NjllL{6ԟ=`6>SݛE %dp_ί tkE:aޓˣn @@@(@ uB@mvv֑eʗ KccAJ^j6m ٩L!v9pm3 =u \h~ۥ;_uue?]x)?2x ]~YZ^U^%dp`|)=ȑ#\1WRR"c,Wcj   Sw K@@X"Ҫ;mذB}x>99i[ ԩ816n(m;&dϴd0rB%"=#egT{WNȱLjllL{ggddtvb]]]edP(~r+SO:g#v%pg@@@, %xN  {555RPP`k63]7:|,D )d[@Gزe rx)p@v7W$e%8j A:4|sGGՊ3+ȣctr`4 4ntz^9zoG@@@J4@@ RUUe;C%̄7L7P! 'NLHsDP\&; =@ @aYlg>,Qs[1V{fA###2=3c;YeEؖ1YD27C50{_^dQQTTTߑ-@@@ T@@fF$}L !z|6HhaH^`ӦM֢pEL')@p{`lZ|R>=W'˰ {92c#W #G绑G.DVC;OLLZu+Jl3mG`-   .7@@LR!ƿnCL>|8l@ "},(xADUٳgh%yۓ7c.PqsFeM`zFFyXYqrOuo>{ysSTUGKO 8j,uEVssJo͢ҶR(ZY3-{ځZduL#   eܽ|u  4+YIzE*++FaEm[ )0ccc)<B`m---RUevӠy7yxi2(nj!׼. 2|[ıIrOАLMM\\T,;7ږ1%2򠣡~n2;TU9&`&=uuu97[2ԟ#"   zSo@@Xp)65==-f֩;5r͒m-nfgL kt֭RXh5Lo"oW"/OH6~3RPn%K?2Yxxfm=A7o,}}u d)_^~E\Q3iQ#t wqn-Vi~4;KR@@@'`2Q#@@|'`fF|f35*nhhp,Ivd\a>m nYޱ6m @j/{Rҝ\&A2uiMto^fGf27uGHA`D#cǎjV__/NA ]|Dv(z[?^I   :@@@ f/ϧ9qG6.2ĥE#wfq %VGݻ(zg.g p~Om{,d]G7S6C¼ ee[Lv g?rq.) h[i JlEmdޣd@@@  D@@'̠VƚQjÆ em )(//wWG0ƥtU lݺhrrRV}\ޑ\ o [_#]w}I|M/ZGَ /ih}O߁G56,[Fv;kQ[-m0@ 4gC{4sfi   @ p4W,B@Ț>!mfBӚ^A(dBH"n2Q΁@4}@83ZBp,d\@[>x](н:1?rI헩 rONzaaAةS** E dp_ zB_֢ߕot LOO;^潢t7=v    Wz7   I]We)jkk 0m e-fB:Ȗ@}}Nv-'NnqfnjȨ@y/~WJ;;(ŪȉP&_vͲ =ZhҒA* dpw@,*a:[~1555{l A@@@{Q=@@ ܮY(4Hζl"̤K@_ff85dh$sܖ4  n}[_rArm ю2een>}35A񑇇E;<[KQ0C-[ȈmEt,TJd˽vO IgM_Sdvvv ޤm%3   @w\$  ?H&v\Bؑ 2 % @ ̢۶msƍ[4W3'3 @aEtv|=6e苦_.z, D(Kkr?3=# 6o,%%%,@AQ5GɺiR%0??/333Ùl+t۽L    }p"  JKKVqmQg^sfT(VEXfLhi99E IJLfٻwh6|+WoMkO;vI/eRebcܝQw߾}`ᦦ&O;Β kE_###fiG s+ B{?v稣/P@@@~z@@f$ͦdfBtTbG>.K$Ohc ^kkkmU$ rϧ^ y3ʱ2|⹿/eooIWWm3((*Y@V nϑ֢5u 0vB0GT7}_    gJQw@@O j b,255q|Ќ&)xQ`֭RdaiCt ݋J6_nȑnk)+S.A\}o]lm,ޝXʭ 1rhhv=l[ XZZ3 ҿzqzy'E@@@{P+@@p{d>ˁf f䕖sP(nЀa2f@III(`άO__# R( '󟔂Ғ@f~_*Yܳ/ҽqk87n(U,@ ͊Vvtv*nfihh01"`foMI"@@@<-@/C@f֠Ck2E@*+GbqZEC ph(#ت3vޝ[m@.-~S[jҁCkd%_7 w}ݿ,/۳{Hkkr6׈((Z{`{ lլmmme NOaa֦9sl{!   @^ ח# [v n;6`&"`fqz&H>L7:4}tt4I`ӦMe~~>hg] U  ` y<|T檘䑷^'G>Pg| r3:lٲE4`#uWFGx{umk٥EL#6`g3vfjF_   >΀.UD@̇vm]zkntt ld-CCC( ۶msЍӋON'*v G:WmoH_M^&9qhk| r~(`u\΍ѝ;YE#6dAvOȺgE;5[ vV @@@,@uG@fp73N<߈,UP3N ebiA-Ͷ/,,&ŒQޜ`EpҲrP KʊZ8/ǟLjtnAss#455f!P/VDip4g-RYYi]4ipt     @{.\Eڀ  Y wk<33u= Y&''eqq B mmml؃i>+G`mu jسgͭYܛ,sjȊW'[~])ٔFd䷿~8ܗe׮]r=wU0@حY:9v #99~/dou43H[;YqhiWVV&u@59    }Ul  @f>?Z~mii͇w%Bk3-333gBpzzz7gΝx~+Q_H@͡ 2C..?|@a ,xh.k`޽{eaqv}emѼl1mhNq˲SC=T])dJ@,--Nv/ȶ3!yQża]4   ~ oW" NAډ]׋X vV 3!ٰBwSy , LBp_Dt "M_+e:7+^) %T]]N_ l>9~-k-ܮ%)(0>C$`dw;Un9(v>Z6}Mn̈́@@@{Q=@@ m-|l]3b>؜BLA SUUU,: fr eOBڃ!hoo &@i~ۥ;_uueW^xI{٥2b>|XG6mgcCxZڭn366 No 3H[G1#[    }r&  ̇ċa޴ӎIA dqϤ6Jvڼy㐚S\nաn -0^, q]]v^:S}VTTÅ2f@KK477;w^v"qXDJ6˖)W\YʊȧdJ00ůAYyݲ͚e]Ĵr9vlWG>/6b qF.'.-@@@n`@@t ;c͡unHjkkmGNA k m ,pOҒj*Bp.A [>%7|P ? _#%_:6[wٳG%uVGtq $=pŸZ[[E)dR/VZZ*UUUoev̧    Kդ-  0Yv bL;X=N':,))vttTHApI'9^Úv׮]4Dp_I&+e&E͍IUmq>U2㇓/)OIv4H%L@b>88h*(( p I mjjvJ28hg z#    $7\@@ňKn@+f6uȩ@@?m-=ڨA 4o|d gP@sϒT Vew `\6GFFD3_G**+\ `OWߵR?oiۀ v?Ln!;&z/ZY3   pU  ai'v)խڶP f,k͠FA^xfѠ=Bp{9/@qSluI7M_"'OzT ǏKooYs)9((nFi<]dv@5Btdy7^"Ekw    {ׄ! 䨀f6QimqjefᬧS{@ jiimnm14K[ fqL3-@ W lg,f/daǮK^ r_{J 5N;6`dp,+Ԕ=kѠ؊ F 0~Z(cZ@@@|(@ҵWB@IDAT/UF@->J|sa>ԋ@`mmmn~&@DE%v%ځ(SLIs'^![n)ޘTeWԽ'_7R`ݻcZKyYyhD1*96mֺpKt)w ptrz|QeiiVUl   9t1i   4lX ѧ5\yymq<3dBD4Y ´4 o۶mRVf|;vpMACc"z'E_w]/0:7BʊٳGffmѺtIu񽀎;@G"0=TWWޣ i^~71;fN~9{vKPO@@@b Ku  XPteka53 %N5{L ;Nѱ @Q0pk9ٹsgZߛn @ [_#]4^x+_WADzס4A:[JYc#_1ݭAe|wq;[;Y@*49 Ry\:iWYY贜K-   -@{~_Z  s` 3S 477;6q,c s5==Ss|R*en}-?ӢQ.Z!4+n^/RXS}C5}T_vfd+L5lqp =ElU---utm iעv"{=L?#I3F@@@ R@@ hPXɺg43n-p4s0[C̈n / "===*i={8P&$H@\z~])ݾ5fpj9~Iʍ3Jkkk*Ʊ,@p7^nAnÎ]Ƽ/ف (`&)Qxz_!vT@@@ qX  @᝙ORR}\9D0`|| @z&tɺNcr_&_6NWWXRSS#[nT5E w#pkM[XXZSȴʊN@n#:vм7ugV    S}z6  tj[#V6`&"-Xd&H;uuu9l׎ [G,}]';bp HRO'[O>#=W+N& I훊SZeEl۶LXPP.~C=]G$0G7n!o=[ :t Çjgۖ1   @ kW  F  Ӿ6+񴓀hХ޺i%PWWxtZI8MvЀ>}%&=W#k(nm|]^Yr &杲20 r={8GO @>|³82>>n~v,nۈ$`&%n#G>h:Rhr.ba@@@ pūJ@@|!60]:}g>~X[wk?G@ 3}vrpq`c Y’'󟔂Ғ9󓇥W}I헊>?7/OzZ4pZJK'Kqqu1y&P@~1Kgg'#(gD@LLLΥ;k#:߭̄fҌ;@@@ G@@-PQQ!eeeFn96,X@ 277'ccc)< B 8x)Hyy\k.-' /]*[&U?JjTl w ܹs,//۪^4F@AѺ4^?wǬE?466Z1@ոX|v"^&} @@@r]\´@@f@{^vUGA* A ,}}}$+|Uwy_eLޓ9Y ,$a $x  !3bĠՑ9+muuW򶻼7KpYQ]ԩ7"nEf~efhVn g5vKKKH0[3 'N 2m  @ NuKOIO_ 2%Yޫf:Hp{Q)(425b%sg=І9 ){8A- M˓ S+gvEA@@@ pO{C@ӔL>w $&c$ hkk5Ib/8{/(䞝mE===Yp}# 'M|OF?󎌌?!S+$S@?+KKKMupNW쭹@@@ ==G@@ ]VVf: @h W4XP:YmQ@bJGGƢAW\ic5 i"/?O?!oKV󌗲oϼBnYܶKˑVkkz]VRRb'FB dྙrL:hp~@A Ua}}tx8wƢÌmXF@@@ ̿  H:հHgwfiJl,#hͰfZ3Z$Sp'Dg,8vhPcр^h۰ l_~L$Ӊݐ\]Oj(=Wzd}Tڤ^lfz;A@1 dYim/oll/bayyٖ%[NA N8%%He|l>:~)   dtos  pjiJb_D ;?Y0? :Cbeqg }@GJg"cڵk{Z|(ziWͶduo{,Yh~n^^ K~F@,ܽfp[CjRYl555ٮRGykkkN 2O; vi   @0pF@@P@Lg+&k8>>nj Рߊ a5W=;;;Z r5  V95U'dA6gf=oZ{ʦ%x߾}v 4܍,p= N3qsDLLL^%PiOwU^^ˉ!   KX2#  kF&@wRZZjj<99i v15`$Jm^ۣ\:Xɓ ^g@ wS,Y?.=*=Wn"ӑYBT x rJ?@VX7ݯp/":kT  ]+&mƢu@@@Lp/  lW`SHVWW*M XA  nv =///Z֭[244 @ ?/InKnU}}}uKt A;p[x:!ˬq7أ333R\\Lْ4 pwhvwHK@@@+@{p;z  N+n,靍l bkf+5 j&0;4=C}?;qhhQ̣v#WI)tUۻe}:UCpPǤTk X2ggWB)~[לf5 8}A:8h   @ Fw&  4˳5;[zibBTgggeyy91d`_ ᠘a{ثhO5Fkw̻ X@Ri⧤o|. 51aixhXn޼i_Nvt떢"m;U侓N&fҁdqqtr? 3fFq'bO-    (@{&3  Yk'_:g "w ]466QȈNjl2hsrr"A:KhޞV@4u}4'e_`S]yY|Y~lmmɍ7dphжI^ntwwKA}[c P2MTLIU f!{{RC@_h8}7ceS| F!  dus  ,NLXB  J mhh0uAn߾mcd $*=zu㢯277'.\%M#@/<)y]j3}W˵?E֒/ǺI~.:A2lT%3 Ƣ9 "4adXg]/1*Ά AG7   ^@@=fqS=!nw,Wkkk2==v O)5lN@ۣH8x19p@j\xQ/@kmo~I~N2H'ϞY]޶(ܮA{Qr G'ZO t l0IgG(Z@333nTUU>bXA}S@@@T3@@|-CؘY h0۽߼ySlT HdGA399rD:v  'P>{ow)ȾȀcݒeq(#dvIVuB}}$ NߵXܘ"NNk   @& I6   1waaAMu,wޕuS+B@.--5zyyYMu HdGE677KggcFB :{ @ }rJO'}gP*98<.) Dl.%<@2~F;qxz>>>nj/eee:Vb l_KL ba@@@ o&Jr  챀S&N{|شڝ5c:11VW;44$NA  n7Wuu?~\Ցe}rJ8n,9cP {t|Rpc"ӟx"arv[96]g }^iW}j @@@ =}K@@ JJJtVec%l -(,,Abj ()LN}>X\pAV@4ȩ֯A*{ۙ2_oۺl r/..m108(#̾csI CD~Y[[3R.?8}Bp{j=UUUvBk@@@P4S9%@@f ___N`߾}RSScj( 1\466J^^Z'75`Sp{4ɓRQQ r@ }J-Y/Iaf|ߕ\nl׷iѣG ]r,7<ӌ~n5QSζdZ^^.z}Oq'$=>)   d@@|-?jYufv sAڥa2- *0T4 PK?G/2XC@@\3@@ cz\?VWW{tQP(i[zuL$)뀮ÇK{{mpܸqCn߾m n@` hjȤl+'.4&=Pݜ?{r"gQF zAn7jcǎٞfddDz{{ ۱ ,& :sT5U| yeto'3Y`7r=NM{+kr$v)pҁ^X8e@@@ =  AiblA8TQ 5XɎma9:ևAY]]SNAnf=v8nmmɍ7ڵkh 7:+͝;wu[g:ym'?3k2w{YrKM+NPx^umD"`ޮ:t_~8 u   $H[@@R@3v999iԀכ4hX)E@3[:ۀS_L?'.Q ek,ϟyM#D`ee%20u*zsxI_Ծm~CpM̺/~%1Ѭ{YrKM++<@Í p lՙllT ,,,̌𕕕RXXhcegkԠ@@@/@} @@5fw#8]` $l\ӗ?n'NH^^:.]$'mP 4@$  XuSoIZӲz//ގHWfyhgYZZ!yn*YA Nߡ466W:ܜsXjkkmWog@@@L =u@@ բ?pf 4;5(tj2==mcT hyYfqlb sp{KJJӎLCܹsG\"M "{ v5L5{X<)'yv޴2=pّ#G6K蠥sLt#$Y@3^pA3+mjnoze-K/[.{3T'X4]'$4[w,~֝ @@@    ^)S'{̼EEERYYi:q \XX0ձ@4uֆY(2)xxI̦'2(Ě ո@^@u5]ܭ%''G;&---e@@@"@{P)  jkkMkkk)4شNMlZ43իW֭[ֶ̓#xРK.9ՀǏKTIBUN"㟐WQ6gw r߭rtaξ0|M[ÇKNN R)?~?@:w!   2SFρ@@؝@^^TVV6֬:Vv,YF:P`2v {$PZZjˌNLcrIwl4::*/^%۩Dp/]rEn߾-:XZ8 gΜIfѠiKVz?^?_dEjxM]N+&6r=|]2<<,+++MM XA N':Ž:Z;2;%   &@{.  @zX3<eqrI: ͌njE5ZZZlӖONNߺJ,@p{|` immG:f\\\spЁΝsl}]8,A}K|6d~A;OjL{,ge.H///f5sS },LF333NQ@@@p مZ@@|-ܳ-ӥk ś:j&=.qbrMV4^'۝2Hܜ` rt5F{ԩ3iX'zI)tʪ2Ihf"[>s;vlLyN_.~}ZZZ,A9ցMzWx>;{B l3S߾}[.\ z}Tjjjٳr}WW ;OJ^Wm3?jn߾-/^w#" LrUѬֲo>innӧOeP^=O:U)8{z;oc"]{#sJot.Yv*::655!2n,:@mme:pLwxYF@@@߷` @@@ K^^N Y]1Gmmmk‚ X tC=d8>.\y~Y3ZF~^sΉ9鞹7VZxQ'uaû5][rg=r( i30)$`'qǬ{KcE3g    4wNB@@5ʊ~؁=A㮩+P ;;;uڅ!^(>_'wf2An&+<[Rp?l/Mnc cZI,`M:%¹1    (@#   O]'''w")N}AS/Yo@ 4#GDƢ]&&&U,Hv;tTN>-Xt3/5hT{fրg}vY,3W8p/]Oy?T|FZ}2im7v}ctܹsT^ aT fTWWK~~~*cʊ>XA@@@o@@#PUU 0httԸʲK p  N5OA:Ckk{nݲnkDEnO:P"T=B35?afpB&I:MDݝx4tlN;I㺬%MSWTL?dʅ˞6&=*YgpmllwPg}}}|I*@gt@kV   qp  E@ jjjL]XXe 4(Vtx돏r t&YᬙW6 ϽIp =˓N9uꔔ9nϹ;wDJIőJȞ\pA_.kkkG+,,cǎIww9@K~Zھemk_bicdL^2hmoB$5.2GlwIgrY]]^}577XAoKKKQE@Xv!ۭtF(NA@@@o{5  @IDATp֢)lai#‡mmm4e~~^2۰ۓǥKnULgggP쥀(^rEzzzdqqqz ҎD1+;ۤ"/18ް.2I(ƀ~TIN:M3+OMMقZu#GfOnG Nu:t(HLN     ` nB   @+%'kv*ӑD(Y@4ôh;_Jr nOw23&={VZ[[%;;:˗իP@,9ܹs1go@[ V|衇"3eeeu72bKsMģ_}Y~1Ѭ^ A^}VvCoܸa,D2n {G:@ee׃1k~O@@@@   i&h;#27H\U`銉F>ftl;%'-θ`f@iʃ ~oIZӲV_>"K=Oic==./~ua&Au^PfBn:}bjȈ@1̑J@@@ 8w3   _4ԽIY]]5ձ_DA+cZ b bYE_4\ۓ띪iwzv~shL  U@i5 ؂OˋVJ^S⨧=n޽'#x<9Oic==Y9γwz/Y:K^/DM%777浬ftƢ*@@@@h  @P4Ch@P X-uw$Y@HwvvڲI$G8(ɓ'ԱkT ty󦬬80 3DĚ @=*ݶnM Z_Ro; BN2_-g rF@ʽ)[TA.044dk~>ĄmΪ)W86   @p=H@@p̱,k#<}:ś@ee6S+Q@uZIB*nOk`v8qBDޝfzg}V! :ݾ};2`̌)-2^R#/?O?!o6j!C? v뎱:2AqAq|Ʈqh$Ƣ-*]hR eVVh;@@@v/@@@ iNSO|1liiH(A)F__.C<%1'5{=p={VZ[[qΙ`Ν;'W^eUh@ƍ_FFFb-z nVUUf5i1Vo%''Կ9[9SVv-@pvC 6l|G߽{W.\ ===2;;keȬ:xi =477SR+P3SR&ݛcAhrg}Vekk+f[n@ w\pAzzzl_gA1D̔`T<iƗ$o ϽRuuìqLIq7)}]xX^^ @5nUZZ*GA@@@ۊ7d  Z!{0YwwiaMMicAsttT ~Рm ^~v"w;SNɱcǤ,fWVVƍ_4cR @pt֔Yt(VAiGgFZ߿cmG Hw: ޏ]2Ih}նbrE2 0;;kKxsTUUOdoP   p5"    Ѡ9cyc.Ee``@677U,#["q@m1z_rq9yTVV,?svb(Ew`s\HB@3`+c\I.X7 xd @@@b Kz@@HL4PX4f%<=Ż@SS h/ AhmmRSwzcBp# Y:;;ٳR[[cЌ"{vGk-:uJE)-P ;OJ^W gp~2vAvl|sjp_ ,?wܱif/[#*lY܍%'''rnc@@@L`bk@@@ccwCCC:* 䆧znnnSf}<^zU4,@p D9yhvH ٩}'nC`4[訜;wNdkcM̙3bo c2Z_aÏ~@=2Ax'ݵVCρ.0>>.V:C5/ ohh%BK   A =F@@f7m+1 euu56܀4@ѣ5͛7]_v_  ,}s#A;z}GnDoݺe @ ;::y{Iaa "Px\N/eɿ݌ D t¢mF'mkiiQ_@w?Ƣ3XF@@@= }  Alm,CpO."MMM cMmj >Ќhg-OP ~߂ ^;v-'O T-oy~곲rΫk{e? ÷`vv6'pV} ~p:;Ż~&\^^6m3ě]ɴ+    JŷsC#@@@mmG7S)GakV|-H@UU֢h5"Bp;? {n_rE&&&Dv) [@Oy]g\lEEE--Pcϓ'=9lȫ~E?i;wҹJyqY?Iz,M@MlzHٝАmCk2 [*@@@@`W@@55ƍ`H I:55 fvk ڕš7i?WD-~iZߍhY"7oޔ7Ũtg,hbك=`@@@=p]   orrr"Y%Z^^{Xv)A&hñcĚivqqQ4' v&l_|Ydmm-=8\]tiPk"۷vKHč|#_zO{Xy' YoAv!g}g_EwI )8$]`ii)rm`ܲLt@@@#@{b\+  )ENRMcѩ58@ "ܭ?uvNp{ܓQY]\yt钌`4}bbB\ j jA#dk=>.O?%E?|O0v rϪWhsQ V} zf,yyy3Qv'Yld+@@@ 0L߭@@H# `+--ݮcfq?iEA Hmnn~Su06ݐf+Y5}3yV5tdݶ"zp֭HJh Gu^:[ jǺGH!}B32'?Ogdeee w`aafG: 65 ҲLEVU*w 66!;wz# Eb4>>nj M'    ) =@@?:t},~^4ɘ]ifF@_#1ۍE3ܞ:uJtL:^vF}?\AtJ^Z\27am_ >}$qǖ39\z~W\T$hf^ij Ik3c2=cGFFly   [w@@|+g?Ѣmi=D,w=fN&/Q7mmm h+W"AGpB hP1=MP=$rl&Ji{^F 0vQƠv {Xڥտ*k7Ȩ 惿'|qL r.ׯ_յUINvttv[v׀P8Htࡵw\YUܭuKnnXF@@@Tv  @P41]iA9_SvVWW#?k DΟ?/2ZVVVD3=z4m%n޻GYO/`X3GuoZ#A~IǛ0_9F;4v7jI@~gWd-o<k2++.K+YLk^F,o`C:nˋ[?6v$Ht>p:(Q %:ۜeڢ!Z@@@H@o{|  )РHh7ǥErrrU ,}200 |Olz hOWWe`En=H-`H>o Ӣ`w" A h>vvȫUUUmӰ%㟒?/\z #{*leJ䤌_\lg}ۂ DAZqMٝ6zS+    ^@@566F21G;^K8ȝ]@<ɄZ43>QM@P[[[͛kEqqq$@tCVnНEW}!mmmhPͤTO3 L4=9;h277 hנvEd7EW8%}7l}-7I2+)3z G~mtr__[nλNjjj.#۰@t‚} Cg#y< @@@{=  i&?k/cˑH7P 4஁GA CL,ruϏ냰Lp{%g ԠtӢښiM4H{)**2An$Ffqq12gEMhpWQH7?歲rm޽'#:wJ/Wv7׮]3J'_ZZ*-6B mlڶd h^Zn^:tX2   $P s <8F@@ hJ 6U5U)4Jo߾<00 u, 4֬5ncWN>-J!=( WWWGѠw ^vS4Q_hh{,k%:̮nj i`{aanwvJ A_oOf)S<{Aj>I wf {Q^nttt8 ;RHm@Xmmmd`1zb,zˠK   $Vw@@!|?Gfw?ڈ1txxؔ_tnhhq~@Ү.9鱭W^nA3~/"VZ5}CP@# , zuޣB "4+`~~t&~YAw.I'>,gH5mYoڵR?f䮃:rȑ4hڄ {$S}as}Vcw5 { @@@*@{By9  Ь̮ѢYWFN@Aׯoo^)ѣu, 4ҮK.hVw}wvv:=o: h 5'jkڹ9o 팳Jh@C59d60yާ]!ٽ޷NmIIv@.s:IQU얁lOXv]^r?~itrIήUXlJh =:Kk uzzڴqEEET    $T s =<;G@@hfqcK()).//o@+at[ hhGG\v}fL~Y!/@@"aD4@kVof@i%80m+_NmⲭءK4=߶T욭]m) @HO/Cvnluk~AF_fH;,YYy䮳h 􇋇IeeX5'a6YF`/4]1}655X(`5   {.@@H `vcf; 2ӬeeepI? ;|\rt۷oˉ'Lu 4*YXX  ~*ޠ/4^o94CD@ ?q*NA: ΄x fe߭NC4.!؝@Nm~/dw>,w_y㟐s, b﷝7j[+ mcú$M```@zXt@=Fozc$4;@@@+۹v!  @PcdpplYGt:յi0Sz}_%,j}ЌwTqSDp{ 94 ֠wd zwТMT4]T%+8^7? |r޾N~:uv fgeu d_~w9dOBgX=*uwmwLG ύZgC[7o޴uE?'І9v@*HB1]?| ̆}]@@@/۹#"  @4Ш\fff{p޽H #Qv'Y/^hXn"a%I}0}khMM:'"P][[9!ifwcwnh 3f?oc0nkhsu)O2? HQɮa&c?,H^[jNvNZ+{NYe,m{/0:ZZZZx_xX탃- HXA@@@ DQ$!    fzoߖǏXq/P\\֮EoooV ~ҥHhD4cqoooC('Cc l ms*<Ѡw}Su9i@kvϸPPPLHs~M Ϟ7K\~ /|$R3䮯zͩc^8J5scNr,sqӍЙ \7@@@@`psRv  @Q\e~=Mzk?⮁)GFFVJJJ7d h`dwww$]E===rIѠD˾ CꟛNAmcpxm4xn \7Fx܎@f>iǯHk&W홠c)lO𣯖W+#͢\`Q6 v'{WVVMA:]GTe%+< (:d g,M>`-:hxuԨ^O:tX2   $Y$s8@@ ?j0˗MRO>mcŽfU7n6Ϝ9&V*~ESi'bfL~s&Av+N@d 䵵H7$Cop5{? +.J/"l=ɠ w4-,A_;;;.YI͛7M`e4My zl .P>+*=Q]>"K䮟I5쬭9Tde #d ; `Z2nEqYֶa@@@/@{9  ժ*S5oհf$@T #GBg-zmx[C@   GǞ'O?%gOiiykfVF^+2OGB'+;5jZs'dEf{?0ۺSSU]]mcś,:YMM@@@"@{BX)  #4u3QWNX4mXF h=S3 ZL$ ApUu@@`9_ro; g1*[ ACN:+;^iشְ hA4x{{Nuy    ==@@@U1ձM@>~qh6w $PWwAlyav @ l1(Āad(р"M0AHf )0}7Փ'{^tT\N~Vjijj2I;uLLLT   ^v­'ZR23Zy _9ZҒ,,.ґǚMcp+B[,ؘ5:}FɱW1Ɔloo;*,,MA@@@ =>@@@ f"^tQZZXK;h| &P__/aov @@ ]OKFm;9ݲ_xښucII5bP4.vV#zoE"v]o5@@@@ Ho!  @BdeeI]sw nw,󲿿㖰;/ýWVV; f&Nc ۽TC@"/Wھ9?CY?Cn71;7'!^je ]n58=hQq\ 8==Ic;7 hM@@@fo  VA]5 ķ Ζ&)^Ð QS{=i@ 7  yyߐ@ߐA{\?>>n?/7O:;;웒Bs܍CŽ4=j^UU{ɼ ϑ cG@@@ .pB@@? n w{}o GNA 4"yeӎUnR@y|Ǥ7IRre[S޾{KvVtvuDb:k(DR`{{[VVVdZZZū/$GGG7     @@ IffpQLxÌ('@jjD022"[[[$   EHfksX?[\=V ɹ+CzFzv{Ӱ!Cd3vu npW3~:cFs,    <N@@6{ ۬ؔ JMMc#:KNA .3>~XdxxXz<  *&m_~׎SY_R>'Mgdqa?>>!{"{kȞr]CڗtJzڭ#D,8ѯū/5Ա3    `?=;F@@:tsnsXuQ=zddd[]]8j%MA rP#Chfweftנw{D0 H _/KՏep,}J{qɵA3280('ǎM[uuKNn>3in>0 ,5::Wq߮ۋvihhW1   q$@{   tfGTKkkqa)$f wo/>==Mpi@@ NG~H?V\V__ni r_\Z4u\ZX6}%׽` $0AM;=v    @| V!  RPPh"wbʚmnnQ $===n*dnI@@ o/}N=Oj_z7Ie1JEcl3֌T3pcccIDp7%dž޲Q    ėu>h   hii1:55ed[6V ,DN3䞚SyP@@G NZ?i) Qٔ7~W~SrSuzTZZ޶#ts!\Y.;ILLL]{d,Lŵ333oUMMMvv   1Ø잝   _ =Ѭc Yoì@ Ņg+u8]D@xXԜli՟ ۃ Y㒺b>>:D(gnK0i999qUEEcfBߩVWWo.Վ:f@@@@ psB@@GY ƦOAlmmʊwЇ}9| ###76}ttTo\7@@NWZw$"F.H}B2ܜ,.,1Er}]cuQtAwinn6Fs/<   <h  ˓JG.---9 _ 55Uۍ'''E\SH$`p{(c&&&DX@@ }si$^u(RsTr?Gr9c݇ rO !}wǹb&tFjdo%=4I|@@@B@@Z+̌3L}O\qqс@۽2w_C \ܮ}}}m4M?s<)  )qGj`ҹR"){u$= 3}'.G&s,_PP 555:f&ۉHw:k!   @p0G@@ 4qj)hiitWe޾,p[p{aa䞓ctvvVz*@@C %#Cj'dgը|%%蓒6 [M[XCX49Hn))ՃruulD    V"  lٕ5Нr?balllLt8s ~-===//8TH311g@_2jTg$/cr2GA qc仺:euA@+!{ @   Opɉ  ij@efzgC~ͰL@uuh&k{988y{F wLoo^uD:|\q0 ĥ@No?a/D ɯK޿c^.]/Cg/YYYlbzxxxXf@@@B@@|!j/rttdb:<0:9we7=ty^dttLW"L  %.srKcQ|Rln_X,S.Ao+}4fowVcd<2.pqq!}c/J3$L#   }qh$  @IDAT/vٮP`ѱ3! Y׃7ʂXfLOO^ehhHsAA@ɯ>*o@y9a52chT$}kQr%e2P7czS^^cn rrrXFrrql@@@x"  0;;qp+++cnځ!KA <ˠ.M͊HA@xX<66&KKKFCr囤duT%EIb rOIOϵdp7Ro86̕gqnnj^'ם3    a  O@z <55心kjߚ]RWHO` a@@0}uuyQQ<~Xr;Z 27U\vf+"'֢Q rȸ){3:WފQCBCqwd7"$Y>^233CZ@@@@ pAk@@@EE9Ck)^C8[@ n6QܵGuuuuwwW޽{'<]  @...dxxX֌}HOOh]-y/>%՟1Ml,SEg)H#ZE#=F*,zb/I]]; ctw    S _ y@@b(A=2HwW!\{"P n~+(d_޾}+  `!NRVV&]]]q棩<ߒRj7ΧOJd~g- oliÛ \ޓx&.zOČh{ill r    ?_y@@H@;Z#J@VV4_c.###]2#+hۏC?./GGGG@elmm[֑:;;=ۃ 7_/_< V/?)ܟ ۃcg!W`llLa/555RXXhbE7W1   > g'"  벸.( CIG3<@,ۃ9zU5؝  S.UUUjjiߓ{37Χ\g}sR,) r%{2k=t5wg {A^h7ow@@@@ pA[@@H )//w`8꘹ca g766QB lvhmm ^XAWuL  DF@;{N Y[[qb,hH̔O}R~%%3Y+)GݾSWfW`d~&o Ys^Jee}6˺    I   $frpW3e<22"KA YE5;{b}^@@Р7oވu#츗n{KZ>iѬe) r/_w{JAȁ32s~eYcxxCG4HWvQPP@@@@z@@Z@fihv?2N@}}96:f@<QFs+daa!(  w?@qa>땶/}7nѱ¯J~Vfgd!dp=s, OOOdgg{8,&>Nn{{۱B)++s1    ݟV#  &IMuzzA⨡LyÛ^:щJSp{Z}_MƌluyE@Y`~~3;*uuu7o wJѿM)ևѿŸS{hn+$g]0@ Icᖖ @@@3ğ@@@@  w^"0ijnQz*@<Dz{{%###Xu*ta@]-jffXX;6k{/c;TI'~L$5/7-d)Y;=% rvV{X8tD fDF@;NGƗ    Y   $@CC`"[[[ ~; rPORPa&<΂y^wvv͛7F`L  \ hwdmm.8)}}},EHfksXI[ߐ?euxAen A)$8kjucc nѣo5@@@@ pSB@@H.SX7 33!*V@{rƂT$jVG3    8'ιH@@febbBȘVv"#p{bdH9ɓ'O$Xuzxx(o޼:&@@Dk u #ridHɖ_9x?o[r25X/%#0,f7㐵cvDF@GY4S>@@@S<  q-6j)G3 âBHkVn V]_j!&@@L8RcIJW99rU&e2}wB\^3RS`llL@uO`qqQ4Kmmi@@@H0r8  E@eiiIvvvULSM4Ki{x $zp{SRR^E[pt $ vs "2|?/}NrExߗ| ,N){VŒuY[[sơ=c!f^_u8E   Nwߝ2  @bdffʣG h,w]E34RN Y_]]-===[5PG? oi@@Oz599)}jYoc ieR lr뺁3S+ό #NN{wL;h|    $}~9:@@Zx(1oaa!z~;d nӧO " 8>>nlDk    $9B@@Z ??_A}y3Agg9ZЖu$_;7e-l޽  mbF5=JNo#M=yDW@?;F^k^N|PRR".+#   pϹ  $@SSh3{@[DN@Tڌ jV4cA*Zvj_f$~fmhhB;69c!f@@@@ pO   O*~]KM@UUL3zt#-~nc]K/.  Q<[ZZU_@ai_Ԃ{n{a1TN;S"'Kx}OsvvvvĖ@@@@ pSD@@H2?{ч*# nd:~R3>;榼zJCK! 18887oWlYkjj۾YھY4G gtˏˮ~`/Q\;+%rj`nn9A@@@W?!  , cCCӥhJbW˓OJAAfpzfE5V@jpKVVuw=h!.k[B@&(rttʯNi`n__444 PLoiJ>j<2_(t1TWK^[ZZ-k#   k}}h<  )PXX(!'&&u_ ''Gڌ QOnГ'Os 3>Ox@@@?  -fdI,}ptŞAÞ!2L)))$?<./G@nؐW^yvDMKKCtǟ,+˒2iL{db+:RА1ڒT[[MJ}ĄqE| @@@R<4  1w^YsTf#_S#@pß+4sc$ m~4cddD4 &SSSֵC^^<}Tt$,JRRS%==]zzzA/*7]G[333"Jf""emyX@@@H*ܓts  S^4^~lдfJ22WvDXcs[fvwuyL^y@Hn#y,..zBTWW˓'O&υAa,,,ʊ kD&cA*ّ%:yjiiq1   -@{r@@_hеS.F/2̇/+ƊX O l>2Q4`Mkt   `v۳W[iiiVV0 =1֖ggnZZZ$ѣG)    @P   RUUhٙ֔ TTTHccql =>KU3)//V]j qJ @[B{ddD xQ;cg=ZzCCh}ǖLG    vL#  @\ p<`/\A"8dd \ =::T$nba:BuYV5WD_)  kYYYDvtAQƵӈjy{˳u&Jdw.[y@@@     wwnH>`\džOOO@,1؎4C'O$''ئ~dffFS @K@߼y#]]ǢQ u< :LOOPa/eee@@@@:ܯ@@Z@3lUTPYYil|hhH40;cg=h }}}R[[ۣ#yՙs*@@AWGCzz6Z;={L =ߧ2rszz*FGkDjmFGZXXpb)    Mߤ{   Dƌ`q{>lXGG3LkI  66'8?^ѣGV{y  O@߼y##KFFtuuIggh4ſǹϙfn)?D^@;xeׄ::@@@I_ln=@@kRpQGGG=E 2s'}tc/փkrLOimԪ[$%%hf`9991ާ@O@;NNNJ# UUUɋ/,I ;Et%ozoA{<*   $ u:9@@OjC`'LX3A2==' nOڡ t/((X__zO% ćޣzJ<-(Udm$u%Awt#tt뮱g}`qqq@ک@ݽ::d@@@    kͶiԔTDF qomnnNuy '---ffwމ@A@QWtA9>>6ؔ =vww9-aJGrf:QG@@@kp7@@@/eeeRSShn ap39556  B --ApFj`jЭhP(aN&X-^QQ!/^}*ܮA333|C@ )ziiI^z%{,Ϟ=:== quD3xddd8ꙉރLMMloo7~30@@@p a@@+5hDU"7((e{{[&&&UL(@p{PI~4W' y+N?@[kscG\&ST$A9͚A|yyxggTDF@k=@@@HTgA%Dž  I#P__/Ŏ=== rDO@;hhK.@p{V,@II<\jjjiii1>p211!%@P`wwW޾}ku=>>6P;zϥx Be{uRP6TΊvt2O@;靬v@@@@.Eu@@@=X]\\$3gP3www{Y[[9>Y+nO3+خsLJ244$FKD@ NyyyySinnI}r]O4]{qq Xeݛlooɂ   W_Z+   ha~zzjS9R+s{SSSt0D!/h deef *[[[k̴^P @ 5҉v*̮AܮA"%@::`UU5^*++E(    @$p"@@@hhh"G5])|٢5[ۓ?qˋ/Ƭ˗/evvVϯ]7@HD@ KKK‚8Ǭ9?n)"-@z?UfDW@;9vYu     >z  Ѐcs#;::$??q 3 vx322 +))lY}+++~@]@Ӵשz]+ݢ)@ץfff<~XtdJtԧyc]]]׎e,L    "    >+ɜI<gV 4@j LHY~h\>yyykNA@Q@3{3h6xYYY7>}j\W!@SU777ک]95ȝ=7$j@@@@{ ~/>VF@@? TTTHUUɚxhhH= @Z < ͓ܞ gٟX\\li'낂#~W 66f$@h ̌|R rq~(,H 3)..ܴv C 62d@@@ 4@Ժlmmfl|V>υx>;-A zN5ftCD@ Tgzz lSv萧O^!+}, w n Y;UG^3""zAn@@@@ GSm#  oh>`?==5ꩈfhEg6=@II]_222Y9]?׫~kkkz*"/jyyTWWG~l@@@A x @@H*}p)W}||,cccVvJ&&Gڡ1Nϋv6aYޣ֘6Lp{H,T YZZ <<;;4X[[zё( \'ppp 󲾾~cTE vn# w$lcQhtwvOF@σLVVǦ@@@ n`@@[@35fg e2蟇1h@cO54;t<,ІxЬ8USScel@jӑ4꬀wDHJ=+]n*^K^7M$ w lAeeګ{N|,T    @ p2@@@XԚ-^4_ 466Z5(^4A?t?gi`C 4kݣ#4FҸT"DM@ںqzmv>Cvbvޥx+]iau$b @@@@ B}   dcc 6z3.(Q~mii284XC3=?D!!٧RSSE[5~4`q4Sh"_QQ @b ubwwʲ/ 䮟uwr=B9;;FWb^( q.p~~.ܮ2ҼԑʴaУ^233ɓ'O뫽lMMi@@@@Apvv  ~hnnwɉ ؝q/vj0Uh稏 d[\/Xt/^HeeX讙5;@:77g}OMM^W_W4Sfsk@Ax wkpsmϺfpN`ttԸk{B@@@n B@@RRRKCy;b&]Y4U%4` e{.Y޳G(^E;,--Yk1@@@;#MOO[Ff{+**ٳg-F( UAi4kfsg쀚P f%=NO6B&k Ԡ5m8&`@8uǚ];戞 6>11an hgaY;9v-gO    '@@@ l /_ l{zz$%%%Xk4럞1Ǟ4f P J!ߵ5XGذ`o)YL#w7[I;&VUUIii)wgM& Y\\4[WW':2%F&}/b   (@{P,  *UA~eF:J4C{{Κ. rL#?"ѿGYBgu׀Kͽvy@ 7[^c-J{sa33ƒ}bS]/3vf]?oP   ĉ@e@f   ЌtF5 ZyyQOEt&''e~~+I Lcd}̔>! +(+% Z$55 @ =iO=:B U333}>*<{5zhgׯ±Zw     dpC@@@ >0 u2<<,ϟ?*<;ӧ)%Nٳgg@@@W.@@~Z}5k0Tj~ۻ5=c   @b h{JFLG.RQQf@@@[Ըm C@@|$PPP Fdyy٨"a=u@@@@hX:Aؽ(f n7T@@@@x =C@@TUUI}}^͞cS]Ly䉤\GA@@f ˋ؃CXQJKKɱ,3    pY   GIII@zЬ)ʒ4n}c@@@ Ye``@NOOmɑ.IIӷ@@@O}qh$  E@k:p'''VŅ_%ay0   *Іs3::*{{{ݦIoo;A@@@"@_D@@d}ewwWULGY>(#  W*15c^3S@@@@ 3G@@@ rssݍ\YYw5QA?y.(M"  E UfOAD)ذ{z葔G@@@|%@NE@@? Iss䉉 4ꩈ@0=I _읗Gnl @@@8(oG"=0ehhQee444T    ~H|[i/   '"hrzz<!*۷%O*%Sv$y޶/bM]fojj48T @Hkl_~YHBRXX(EEE`X8>>?{gN8eYŲ$ˎДa H%@ze=a-[Ò(;h&@$-[dIekɲ%ٲ?;3Wdɺ=GμܙXw._ oH^^,x[VD}FO;ydx33ljuӾTI;'0[~~mݺs/4   ħn5  đرΜ9qԹR+䞖 _qeg?x} lͦ4@RoĄ9Ξ=߬R+))q`:VD }Qb$=~{|'azrPYYEJ X{:_k{I{{{}׻vrx'y}ܽ{"|O]m6n    *r   *pAKG{TTn߭ϩLާiU=ݲe)(@CK <쾘z )..v~TRuU_@W@B~DvKΧ2Xz x_+rj F\t'@@@@D (W@@@PxiΝ㬯w[@ǂnw`vAw6"aQӡSSSڳL wSSSVF''NqSt1-333jWPbX"I:kZkkr->A޶av3   ĵ|<  ěÇMýMUUxK *xmN]4@`|UhIMNN.mnW @[,Z@-+$(ئAvnv j!ԾXAG ߨNm***L!Dݫ<cਪ*knn^7a/    @ p   @rH*xWZ^^^D?3 ,W}!۷o;zUl͖cX)bvW牉 SŶPཤ ,A`zz:fWܹsK؋9߭z:BKz#6B(033cv2MꦦE[Dݫxi>?={6bGܸe˖E]0   İ8  $ܜܹWOrH_Zp{xw^w6B$L eq'4*/eff;OX" ){ /Dw( ,U@4 2а]r_o# tA۶m0    %@=.''  "*y+{*tJTJT}WUNUMVEd]US!! 8) SSSK: ;Q (R(W@_._qoo GHOۺuG3   $D   ĕĄرvW'sv;v>iiiaz< Xmg:Awm\'p< KiVKdDP\>O>mΦ`^T]JJJT)ݡt_lWlڵn@@@@ PA@@x{{ƍn:_w\p ɻwﶹ9yUżM69A ,v׫*/߹<'~4~&0fW]ҩj0nvÀ%Q@k.v---VQQL}Xjkk!i@@@@ !'e@@@ СCW\aA |@Di-['V^B\o   q#@=n.  $z[2c=~۵ktת*kjj"tI!74h91{]~}yU`]у@i @2 پ}|c В=>::j{]5kX{{;>:@@@@ Y'˕<@@@ TiOjjj 1/v[aN;uz-//w*@M@A3gD5l"*+ԗGy_@KkNrss {AASXv]c 0x)ܮXjӱ4;۱clݾS+..^GC   $$؜*  ėd]]]зXEE;-b+Pɓ'ݮkaamڴɨ "ap쮠{x(ZӪ}ABA2`|Ae&n=(.mVi`:yyyV ssssN51߱͛7;| c#BTG H \@@@X5F#  P@Aƒz\yYYwkkݥuڳg?~ *Bx4@V+M!wo@~5BAAXvCa^ $ߟxT]"o%~i{'_˜ۺuk_cf@@@X)+%~@@@ePԝ;w {_-B{#G]Wڬ4 oxWݝv_ŞZȮ4@ (0p{@0=Uy2m!)۱cDw*# @@@@;@@@ oUx8ZU ?^f%~;x`xWhɪCL , 7L{KOO^WPOWh +#p12rkiixH!w}'Q;An^B@@@@ G@@xH?'bL{OOO`ȤҚMi W@dm ^3XwSQ!~Ri+s]+ p1A\mVWW,:-䞨1"   @| pQ#  @ *{+q[nuM"]SNݻ}JˋT ? /6m.w PʾۓCbM@z{{mttwh7|#QB(sN yf0b3    F   g8?'dEU;;;̙3nWU׫JC@@"{qꙙ=F~~oYv{]4ĉKޞ|'F    ܗ]   [ɓk.V-((-[bKp믁v1+ 5; @@O@Oij oڴ)n;y:5.}XEEy@@@@? p磀  ĩӪm K2MK- v!+777[eee @@@ \NX$/SVVf7nفx O    Sܟ` @@;mmmt,dz)୼u1fYq3  'pa <:Ox k)خ; @@@@`~@@yUwǞv#yǝ gx[II30!==ݻy@@H2 ݷo_`p fVR{ߣ'E@@@ G@@VƩ Ԛwp{Ԕrk[F  ${챓'ON8##6mde!xyZ2|N8G@@@o}8z@@@ $XO?c/w#>B]]]v ߊ [QQo   iz<'ܞbc1~1g ;SSSG@@@"@=    @ L+Xm---VQQ^y 5볡!)))n:2:@@@ 1T]Rkkk4ۮ]Lx᭠l5 Ga@@@X    /sssNŸ^VVB} ۷/pCU_~)NC@@v !iqMM\D^XOLLΝ;mvv6rrrl֭'t@@@@'@}q^  ļ?MA͛7Rpe5(A*5YZ[[t^D@@ fhÇQq6lODwf}rrҞ|IPrz!   ,^@@yq]dÛeǣ1gϞǏ;!s9YQQak׮~ٟWggMOO)//:::@@V@5UOޖnzJRgίF];v07Ulu7=Kz2S=\i@@@@ 6,A@@ |'x"r~~~z{ӞTuSB-bm签>;csss#`ǎ馛o~sD_ЌoGqUJ]w%/u:No~h}/}iۯĆɓ'}̴M6ߛс  +*7q5+_JZiVAUUUV]] 7448!󠝎٭ZTWWg_BAAGFF{b5mꪫn&*#   Q  @@@ 񽽽0` ַFὫBZw@*}ZtW\a&;w_;Cu]v3www~n{ի^ex;ĻoСCf)pBL?+,Xwz/bBgm7n [x6<<(SRRAA"TI  (A>=U Hpp){O ^ʮ'i`Ą'O~v~?iz @@@@ R 9K?D0  \k^QۑCCC n>ڇ?ak~[~o|۴ihݦ?+~#{Gu[=//^W8׭[geee6>>nP_!y=V~m۶mZ?hk׮ ꎙSU%0)V% _4  Ė=^EApE {PSuGn]{vÃ*V2{'O:/~W׽ً^"{ֳeӏ+X?cM4-oys7!   A;@@@`Tum֭Ӄ>hgL_ww[в5###<`v[ *ͅӧOڑ#G»/:p?lVT}wGL #1ggۈy;iW_}6`bC;vt^u?|[}}}Df4iO{|_dv'A};@@@H$8GN@@I?կ~ռUĿ,x~Pev] 5k?]Xccch:ڄ(??^؝w9o]*׾^|U£T+BBU)|'Lh   {OG|'Vg0{=gUU}M돌8kOӈM'>p{Ċk__(HŸCL    .@=??  BxyyoZjn%PgBU㚚B"xn!,h U~S8c}wI{衇Y^=e+//,1;v̷@@X=*ଁw 9997)zzz O3 +uooғG]lFg#VӠu7D@@@@ 'E@@@ ?h;w.+_e<@|Luu9w*VUUmqȑкnZ3᭬GӢ =~nnTI?~@@VR`hh456ol+yI+,鞷&j])Zy@G}C^o/fO]}աMΟ?osOh @@@@ '@@@ &T/%%%t,p i ny_߄S^! kЪZ>33_3L۸q_:Xɼ(v!{'mzzڻy@@ 7S=Jwh---2x >J5 [NU{x{[jzR[m؞Y}}Rwv    @B 'p2   @ W=ж}v'ЬTkhh I2 E۵*NLL8+|^׺[ЫuY)R̶nj.=Yvm!  uY{hȴf2:O@ëk`xvv ڵ+t/] ui7tSh~)]wG?2|_ʾ@@@H$D:;@@8JU4_L{_B?áJnT)njjʺ"z,{^#oW^ypvvֹv677[N  ,*h{~oͧG{={58^Rk_ 755ne@@@w>   * |_}{Gǒ/[ή&<@hzzֳBǎQ_+^Wܹs|'?I{M!k Cs-&''Ӈ  ({!U߿4x۶mP0u=M]\sw5@@@@I }n@@@!paԧ><<|3=.Ѧon=x޽<<^9o|c{mǻ}׽ΦC9rľ/;? p(|??OvS`9ڡCxɻRŚ%oKn2n׀fCX@@kǏfff|瑚j6l0 J-]ࡇ XUu/8n=便nW k`|MWWZCCC<3    '<;  ĥ??2>})؇?aKKK._lQSQ#PkmmzWWWmuUnwZT=yn|/~hxsk:栠wF[~m+)ʐ u8q"H欧WfD 3  $T}pp0uf\[򖅯5u_|dށnѣQ-[ޣ]lĎA@@@ pЁ  ,^W7 x}]ruk:U}QgGwK^L+X?_:4r6}vu>!]z׼nt4@)q=[ĄѠ   ,N@U58X߫ZUUVwlt$ -rhr{{VRR>4    2 ֖]!  P`\_uv=oN:B a?uwuPEݻw;Cq"++TUtzJ|mvv~ӟڟ??m˲RRRL[FTwR gǎFp@@P{,0ܮt{{577{oޘZ){nF{m333o̮5XpO_KC@@@4*_[#  @kkԩS600Vc]?_ _B;Cxnv.BwWZuuoh wvvڦM]k>m,U6;yqNp$ Y W(c۶m΀q›ƍ-###|1   &077gD<<<daa0;;NEf={0Oٳz衈Nu}t/6t3#!   qe   djA=88hs}k_3"N0Bν4B?{G} 7Pyo]vYGGEC֭sr,T?}_&{_uk:rA" 9 Ǐ;().._4  ^`rrҺ u~zӀ_ h`B_r{;i?Wm/{rtOmA ݧ8 @@@@VF uev^@@@\Pi'?iGՖuQ 47_:](|ojjj|sN;wo|xhwK_^x홎.PYYi Vuh`^H/Agzdž@AAAāEk:4۷QZZCtg'hO>m?^   $dp   pxD BU؅ .x;vwGnǡ?϶BwVUU9+**Bۨwwwrۼcb~NNmݺ u ,B>C@@ fffB<ʜKMcRxe}Kپ}{h3wPgnn= -_mfiiiM;;;{?veHk_C|3CL\>U ꪫH*===Tзc:@@XEUj?p4*tXzѶmLOŏܜ]rOݣ}p[[3lEoo#G?j?O".6344do#qÆ vW_lS#   I!@=).3'  (mЇ"MղΈ<9ϱЦB +q)M^EB?Ȉ)T0|v-ٳgCݯ{Li#̖-[>tmx ;sLr:@@݇hpAMOR=///h1}1*gx;8B=LOjii 7|s侁>Kwq}_z/~ {`'Npg><    @ ="?   pOnF{C??믿>Է USp6nM_~ݻwvc'$x[n뮻TOdz~S}9& o]N17: Y ; U]U۽I'd@C@@ 4WOTJetłߺ,{dYY>Xk׮-_l>Oۭjr6w=k^{ _Tr=ν#< ss A@@@X{_|N@@bC}{[x6Uvkp}P݉B|3KzU%/}Kë G_HrQ(_W[nnϬ* *AC@@ =VoPxu?>ʻ_/M^JJJW^yYfnXWWg7o~30]~Qg?&&&S_i    O >5   jDxעV*r]4}{ӛ޴_r/*$^ҕXYFSBoSxSNy1  @L LMMٓO>5^]]PLU;2kmm%@@@Hs-9@@@ @@8uprr2̲lÆ VZZР^@jj>:@@@@ ЗC@@KٳNӾζ-#~TSU]f'@ @@ UzrUUU*iiiQaA ;wcmi&.b@@@@ '@@@xPe޽vQߡ+̢J%%%etķԔSs||22bA 8-@@ Nfffl߾}666xXWWg+ ]]]׮]k7n@@@@K ~Ʉ@@@`FGG >{MMMT$w*tرQjjjBt" -}}}vUnUm \Ng| >|عAg!   $=   gSGo+))6KOO.b>=ϝ;x6 ;}tdddXSS.3z6=òG@@@HbI|9u@@@ TQռ>;cEEo!0;;kCE=B'W  (̬Gz +ܮ;-1N8Tn׀eo[f$&/     Tp3   öo>Sjjjx%{*:k:Uv! \>;x ~_בZ ttܷЉ    G*Q@@@K'Oڞ={Jqy.5AU}nn.pP]]muuu  #d UUU9ҢB \[---nݺ8?K@@@@`%.F@@XQ)4z[^^mڴɨIi'p{}}UVVZjjjX  4}w2}7֊BhrWW8qw6nEEEet     .@=\i@@@PBUPȽл>;uT3`ʢ@@ [X|[fMUO pI:f<@@@@ @@@ .\`a߱ƍܷ8zz<455YAAApF  eT]߽5 6u` i_c@.055Tl?zhԝdddX]]O* 4AO:w$|@@@@Ƕ   q!088tVպkkkї044dG=r[~eggG]  @" HnH.\<q?Cg h޽{MߥҚM    *@R@@@ .T;0n:۰a;-n?pA-  0/ ɨά |ZF    K 5A@@KӧOݻٳ/,,v-#*eddX}}:%))я $6==L悂 q4BUY񶴴4kkkR"@@@@$   &p9'>11;l۴iёN~kㄼ֬Ym@@Xw+++sVN{e     p߇    (p*---v)H>@@@@ \@@@ .T{޽0Z{{镖333N Lah0|%@wagP|t9'Ouj @@@@ @@@ &&&lݦ@)lE'Ԕ ѣGyZZUUU9ą@XIY'~С{:O-*((pxMR'N8v 6ZYYw    ae   &p*+TrÆ TIq7 Ҡ*FC@]@d=u6_lkll$W v'߿>//xU    +%@}d/   @ (ܡ* xhR ^s*OOOGHIIr%U  pgϞuB E]zz[eei@-=+M=H!$焳G@@@VCj   1-p) yTWW9ppG@2<8oTMYYtg6   055  (r]]O$rQѣV!ZZZN@@@XM{#  ĬA6nhAK2YvfΝKJJ{qq@&p#GD[OKKs9,L wiqaa^EC@@@@`<   έ ަ2;8 z@C4@@`!zҐǎwu T]UU&''4@"MO!    WSF@@ @Q $;Ae A:wshDL^^)++#L 'NpWm{tCCS'QH@@@@1r!8 @@@.S`$UWW"TҡOXtWELXUUi -077<-СCQɮ@aa+]^~Ӏ oSL#    (@= DŽ    #AM4 ZLNEVUufN]i  Xz2Аܹs\IIl/**w=&̌DLj--- Lޏg   ąL$   @ ޽{CT0yÆ V^^[F :[*l륤n7   "kA%OKdUl JǭΞ=[E%ҁ    @ p   ğ$ (P***04 bClxxTuA η@@ Ek $y*P4%%A0@}~-///p9    ĚX"   @\ (Tr;x`+F$PpUpU5W\5k{AAA.F@rBȣN 9!HZVVVGЀ =Qɓ"֭fcm     1*@=F/     q{JMMMVYY]<>UqW5wUx z 󵬬P]O!)Q)g*N@@@@8 'D@@OO+oXCCUWWi,TرcNb9r…@@`6<<H@V_`srrLvK#wءCO';;xN    &@=Ѯ(  m$Zpk ,l3?N&BWGmlǀd?]岑riy D> D5?# On rZ @@@Jo޼Z=:ͥׯ_@#@ @ 0 @J!xgffҫWRToC@Uv(Q@2Z9~>}f'ƕ4 @ @$ Mm_  @ @GGG鯿JQűZˋ/r2- ' @@Z־KZ>Xv^ @"ǏF*xZ{Tk L NOMz˗/]y @ @. G'@ @ DUݫ,侰Pme.JUX{GGG>.$@ ]k橶wWSқ7oa՗24==]u @ @# @X">Wk333Yfxxj܉nkJak }+W*ңGRT nM6wޥo߾jzY  @ @O@ݑ@ @:@ `wgս ͋/rBw!'aDݍQ4l "ppp}ODP{\&Bq8Ox EÈ8;/_|ť WB)d @ @[s, @ PZ Gʨ^g!j-#P˰nc{vv6 Ge @@'''i{{;mmmt||GFF.C ?OG-7oR+ıի%4 @ @/ ~S[$@ @kkkYUʨNYEDU@"|WvJʹE8-Ew hWvk椢e}ll {Dqǻwҷojnuu5={,c @ @' {~M @J-;~Dpɓ'j I2^* SSS^w qU^@{8'5tnn.gf/~GȽZ~:@5 @ @W@F @J)T+311zT^-v{TwíXV=" Dx=G}kk+ GȽ<WE ~/y e0$@ @ f;I @np{#^Eٳ400Pe +p||Uv7#~5'~Aa#*ggguzW_8;;ۅګ;YZ\8|>j.^JΣ @ @t{gΫ"@ @- 3b,,侼u5 /Պwvv.Ý85055fff*"O\~E[nLTio|E=>5e8)N˗/bՖ @ @ pw l @ @QÇYUZJ/^HB,/@Ts޾ V*W6g~S%FO"@ qZ^=kvKʼn;gZGW#Pfx?{.܍} @ @ @n  @ @@7o^*\F%k@'f, nI WF:[i>|[Q" wyJEZ^J=r @ @I@  @(EZ__O?~LբeTtWe8>>V ]{T| Њ@\i%GEzըm?W?"$SZ[[[iee% @ @ @+ @ @R DUϟa@IDAT?/_ӓӧOnU" ;@ (okeҙ499[ٌ WU?w*JКm9W\P{|6 B 3O5Nϓ @ @?W%@ @8::J߿O߿QٳgY=bj:Y`2t8ǯݜ(Ҋ(@q"[|δh<4*ÇYk8˗)N6 @ @({Ĉ @ @@)"x۴]sŋi~~f+t@VuŃF{hhZ=©L#@3NNN坋z\"qHN4kK&'{.{Oz\ XN @ @@ 0 @ @,"`a"&\VxǭTajUoVzITe1 f'DRdUnt Q:q@7 BV̮. @ @ $ ^0 @ PV쮯?F[eGFFju@G ] Gȵ-cccׂ{;tm@s'}E  q_:[ ~soϵ;W0XYYINd @ @ oN @V {?N_|IU#ӧ)*QkY 3B^zWݹ8nWw` q%DfxoO>8qV[XXHϟ?OCCCXN @ @@A :1E @,pxx>|^s7l#55O * F5v<>>~ttm"HwGv|o C6:E k`qe/_fNwA @ @ܻm/ @GJ޽{Uŋi~~V t@k{jUa^}bb"{,X]W&###)kh{jՇEׯ_o.b9 @ @%p/D& @(?jPONNf]< >E6‚~yL===x `)8rUC73x:{f%еq2WTlܬiWϟ?Oj*YA @ @\/%@ @JkkkӧO)*jsssYEn М@"6tKFkZ kzq^:$ I"y4(ߏ?W+JZ]]uH @ @({Yf8  @ @@D6B_|XrzY=N ¼y=w"tdqj<ٯޟK|~Q=OLLd'|AM2+4$'oX=Um @ @p9G @ @B|}ب9G}iiIܚJVhM a>[GJy}rP׈pk{LPK$_ Ҳ@kqM }_MOO/_fZ},'@ @ @C{@ @J-PTһwvlj@qvKy5FZo#XyQ^=N¸V~^]q>gku@߂Vdr @ @:H@&Ӯ @ @2 #Ydn{p E=B-ѧ>ѯ'ED%Vnlj= E ͚ٞ_{& @ @:N@ @ @ Dvmm-}1 Kړŋn> pͫ_σ7^j=7o%J%NϟS{{{4\c!еqu^ ~}Izvtb  @ @Y@g߾ @ @ DpӧO˗/5OQ3>EQ#@|8eiS+ _qBHyDj|Y(@|'2ֻǏ  @ @) ޝn  @ @@)"Qshr +AǛ BwY؜կG5hv P kswE4>>^Q @ @) ^ @hHRoߦ#VVV5 PJttttYQ%X{x\jq"RjX'&av')=v gs\'nVɂ=r @ @L@& @ @2 #{. ڏGGGku”7RӫՐzp>?T q˳gϲF#@ @ @@. K'@ @J!#0Ǻ@cgj/ž$ϙFW5՛ Gu ^}/O<~F @ @7EM @B */_Z̤Ozݬ#@hR`oo/}9}3㤙*;uZI @ @@w w{ @ Pz׬bhT&''ln @"PTҧOfݞQ=*MTV @ @   @ @@G\\\dC~}˂sssn_+  @WV}kk߅UEj{To @ @ Ш{R @ @{T{TFFFjzq: @@ 﫟?fo}5<}47e] @p5͉ @ @ 𯀀 @ @].pvv{T2LTn @ #>^wL}}}iyy9=y$ k% @ @- nQ#@ @J/p~~}dtJ @C dk677a`` Gn_+  @ @ pWw%k @ @@...FS߯?cccY}nn.k% @>`_PZYYI)k @ @xH @ @@)",^Tydd$Ǐ޺}$@[v @ @- ~^ @(@T@TB}IZXXHg'@/pvv]yqO @ @ PG@U @ @ZQ=d{zz\ZZZJuZIhV`ww7}5}-EȽ^LO>MYG @ @pP~/N @]`oo/}9}]ɂJ PG ־⤻Ll @ @xp @ @:A0 GՋU⢪u$@ 4S=WW71 @ @ - ^18 @ @l˗/)'''_U[t @]-l㴲FGG @ @ PNrΛQ @ @8??O?~Hi{{Ѫ~+ @U0n*+;K @ @@g w| @ @Y۷op~ EjKKKibb(a @ @-d @ @@7n'&fMG}%@ @ =3 @( C!@ Z{I @ @J! ^i2H @ @SZU[:~ @K۷o)B5o @ @Np? @ @@iTu/8+Z{]+  @ @ pM@? @ @/ρ @vE @ @ @ܻm/ @ P*ׯ_cIKKKiaa! _ @ @ @>s{L @P@UN! @@W Umg  @ @C;ĵi @ @]裡讪]&h\j틋irrғ @ @]$ EmW  @ @Pս @@yTk/\) @ @p/ߜ1 @ @?Tusssidd?۳.p||~}*UM?NW @ @uXE @(@Ucdz{&x  @NP{۷zzN @ @ 𯀀 @ @:J gfOOOڷEU6 @@' ʹvvv5b҉ @ @ 7Ĥ @ @Tu{vF:U BQ=BJTa*  @ @ а{T: @ @/Uݿ~ޡ˰xӑU2Ծ0499t$@ @ @sҋ @ QYڨTk _'&&: @@g ĉ^ywv`` =z(ϧsu$@ @ @ܛқ @ БJ%ÆqhhZ]a:  @"Ȟ#hP\jjoN? @ @oz: @ @vww/ eprrRa9  @][.`P{g @ @ И{cNz @ @R nlld!faw<<|v @ @# ^0 @ @@i. 2Paކ#HWCGGG D}~~>hy: @ @ @ ߯W#@ @t@ݣrn*JaGeAÙat$@@w D}{{aPxӑ @ @N@2 @ @/QawvvoN?t@jȾWNNNPXӑ @ @! ^y0  @ @@ ]ݣnZ=tyV=B훛P{糫D]#@ @ @ w @ P˰_wOOOHmrrRut$@@JnPro_GFF}~ @ @ PpO @ @:M Q7*6v>55uxpc5(~ں 558)><] @ @({&p  @ @*pzzzv dapxT.EB U:-Z\vjoEs @ @ P^Ν @ @:V y82[EdK II)Gs{ppkZA @ @- k @ @!Ю#5h\,moo_tō+ @ @ @5k @ @(a|+m||Z཯x:VĝXJ<'탃ls @ @ @@SMqL @ V:Ν{x  В@\booZ=WNQ]#@ @ @- ~^ @ @Tpں zWYm@ NTdJ%&"Ȟ @ @xhO @ P*+mooӶ?*'e6B@9Ue`{,kGMiff& gϘv @ @S@E @ UY^+Օ{~?::*UGT+D\JDGTd?;>>?" @ @ @" yv @ @Bmٗ Bmw"azׂfq2L[tm @ @[@Ž @ @@W DUJk< |ZTfPe>B+}Wg#ގ6440{, @ @ @@wL @ @ D6Q]AkAGtVLh>WnVfբ {r600Ю @ @({!Š @ @UjXޮj vJ/B[NFN0\  @ @ @fܛӟ @ @= D U*^vzzDжZ=_ztm=T+ybIDn @ @  @ @@I"{v|||{!<^N_ 4#pvv؏D=P]$ru|~Z=JU$  @ @ @  $@ @ Pf GZz#>44T5w_C:] ֯z~rrro {A#@ @ @poKo @ @*{{{UoG8>q5E]_ G~!jW.MN#@ @ @~_@ m @ @@i"@ݯ |TWDzS9薁8٢[~\ާ0] 9^ @ @U@[g~ @ @h@Z䤁}< N] FWE(Iu 2ǁ @ @ @Z  @ @t@ޯ>0|ޢ{wwn}*1y@=E<^>N#@ @ @- ^1: @ @Q\#Ш@P-/4 @ @ @?'@ @ Pjo[򇆆0{~!}5 @ @ @s;wn @ @H?;; F D輿?e[oo Ζ  @ @ @R j  @ @V[yͲ='Rh @ @ @vC6 @ @h_+ _^Q]#@ @ @2i}}{\eqn{\sigma^2_i}}, by the total variance, i.e. the sum of the random effect variance and the residual variance, \ifelse{html}{\out{σ2ε}}{\eqn{\sigma^2_\epsilon}}. } \subsection{Adjusted and conditional ICC}{ \code{icc()} calculates an adjusted and conditional ICC, which both take all sources of uncertainty (i.e. of \emph{all random effects}) into account. While the \emph{adjusted ICC} only relates to the random effects, the \emph{conditional ICC} also takes the fixed effects variances into account (see \cite{Nakagawa et al. 2017}). Typically, the \emph{adjusted} ICC is of interest when the analysis of random effects is of interest. \code{icc()} returns a meaningful ICC also for more complex random effects structures, like models with random slopes or nested design (more than two levels) and is applicable for models with other distributions than Gaussian. For more details on the computation of the variances, see \code{?insight::get_variance}. } \subsection{ICC for unconditional and conditional models}{ Usually, the ICC is calculated for the null model ("unconditional model"). However, according to \cite{Raudenbush and Bryk (2002)} or \cite{Rabe-Hesketh and Skrondal (2012)} it is also feasible to compute the ICC for full models with covariates ("conditional models") and compare how much, e.g., a level-2 variable explains the portion of variation in the grouping structure (random intercept). } \subsection{ICC for specific group-levels}{ The proportion of variance for specific levels related to the overall model can be computed by setting \code{by_group = TRUE}. The reported ICC is the variance for each (random effect) group compared to the total variance of the model. For mixed models with a simple random intercept, this is identical to the classical (adjusted) ICC. } \subsection{Variance decomposition for brms-models}{ If \code{model} is of class \code{brmsfit}, \code{icc()} might fail due to the large variety of models and families supported by the \strong{brms} package. In such cases, \code{variance_decomposition()} is an alternative ICC measure. The function calculates a variance decomposition based on the posterior predictive distribution. In this case, first, the draws from the posterior predictive distribution \emph{not conditioned} on group-level terms (\code{posterior_predict(..., re_formula = NA)}) are calculated as well as draws from this distribution \emph{conditioned} on \emph{all random effects} (by default, unless specified else in \code{re_formula}) are taken. Then, second, the variances for each of these draws are calculated. The "ICC" is then the ratio between these two variances. This is the recommended way to analyse random-effect-variances for non-Gaussian models. It is then possible to compare variances across models, also by specifying different group-level terms via the \code{re_formula}-argument. \cr \cr Sometimes, when the variance of the posterior predictive distribution is very large, the variance ratio in the output makes no sense, e.g. because it is negative. In such cases, it might help to use \code{robust = TRUE}. } } \examples{ if (require("lme4")) { model <- lmer(Sepal.Length ~ Petal.Length + (1 | Species), data = iris) icc(model) } # ICC for specific group-levels if (require("lme4")) { data(sleepstudy) set.seed(12345) sleepstudy$grp <- sample(1:5, size = 180, replace = TRUE) sleepstudy$subgrp <- NA for (i in 1:5) { filter_group <- sleepstudy$grp == i sleepstudy$subgrp[filter_group] <- sample(1:30, size = sum(filter_group), replace = TRUE) } model <- lmer( Reaction ~ Days + (1 | grp / subgrp) + (1 | Subject), data = sleepstudy ) icc(model, by_group = TRUE) } } \references{ \itemize{ \item Hox, J. J. (2010). Multilevel analysis: techniques and applications (2nd ed). New York: Routledge. \item Nakagawa, S., Johnson, P. C. D., & Schielzeth, H. (2017). The coefficient of determination R2 and intra-class correlation coefficient from generalized linear mixed-effects models revisited and expanded. Journal of The Royal Society Interface, 14(134), 20170213. \doi{10.1098/rsif.2017.0213} \item Rabe-Hesketh, S., & Skrondal, A. (2012). Multilevel and longitudinal modeling using Stata (3rd ed). College Station, Tex: Stata Press Publication. \item Raudenbush, S. W., & Bryk, A. S. (2002). Hierarchical linear models: applications and data analysis methods (2nd ed). Thousand Oaks: Sage Publications. } } performance/man/binned_residuals.Rd0000644000176200001440000000554714077615732017156 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/binned_residuals.R \name{binned_residuals} \alias{binned_residuals} \title{Binned residuals for binomial logistic regression} \usage{ binned_residuals(model, term = NULL, n_bins = NULL, ...) } \arguments{ \item{model}{A \code{glm}-object with \emph{binomial}-family.} \item{term}{Name of independent variable from \code{x}. If not \code{NULL}, average residuals for the categories of \code{term} are plotted; else, average residuals for the estimated probabilities of the response are plotted.} \item{n_bins}{Numeric, the number of bins to divide the data. If \code{n_bins = NULL}, the square root of the number of observations is taken.} \item{...}{Further argument like \code{size} (for point-size) or \code{color} (for point-colors).} } \value{ A data frame representing the data that is mapped in the accompanying plot. In case all residuals are inside the error bounds, points are black. If some of the residuals are outside the error bounds (indicated by the grey-shaded area), blue points indicate residuals that are OK, while red points indicate model under- or over-fitting for the relevant range of estimated probabilities. } \description{ Check model quality of binomial logistic regression models. } \details{ Binned residual plots are achieved by \dQuote{dividing the data into categories (bins) based on their fitted values, and then plotting the average residual versus the average fitted value for each bin.} \cite{(Gelman, Hill 2007: 97)}. If the model were true, one would expect about 95\\% of the residuals to fall inside the error bounds. \cr \cr If \code{term} is not \code{NULL}, one can compare the residuals in relation to a specific model predictor. This may be helpful to check if a term would fit better when transformed, e.g. a rising and falling pattern of residuals along the x-axis is a signal to consider taking the logarithm of the predictor (cf. Gelman and Hill 2007, pp. 97-98). } \note{ Since \code{binned_residuals()} returns a data frame, the default action for the result is \emph{printing}. However, the \code{print()}-method for \code{binned_residuals()} actually creates a plot. For further modifications of the plot, use \code{print()} and add ggplot-layers to the return values, e.g. \code{print(binned_residuals(model)) + see::scale_color_pizza()}. } \examples{ if (require("see")) { # creating a model model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") # this will automatically plot the results (result <- binned_residuals(model)) # if you assign results to an object, you can also look at the dataframe as.data.frame(result) } } \references{ Gelman, A., & Hill, J. (2007). Data analysis using regression and multilevel/hierarchical models. Cambridge; New York: Cambridge University Press. } performance/man/check_heterogeneity_bias.Rd0000644000176200001440000000236014117453720020630 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/check_heterogeneity_bias.R \name{check_heterogeneity_bias} \alias{check_heterogeneity_bias} \title{Check model predictor for heterogeneity bias} \usage{ check_heterogeneity_bias(x, select = NULL, group = NULL) } \arguments{ \item{x}{A data frame or a mixed model object.} \item{select}{Character vector (or formula) with names of variables to select that should be checked. If \code{x} is a mixed model object, this argument will be ignored.} \item{group}{Character vector (or formula) with the name of the variable that indicates the group- or cluster-ID. If \code{x} is a model object, this argument will be ignored.} } \description{ \code{check_heterogeneity_bias()} checks if model predictors or variables may cause a heterogeneity bias, i.e. if variables have a within- and/or between-effect. } \examples{ data(iris) iris$ID <- sample(1:4, nrow(iris), replace = TRUE) # fake-ID check_heterogeneity_bias(iris, select = c("Sepal.Length", "Petal.Length"), group = "ID") } \seealso{ For further details, read the vignette \url{https://easystats.github.io/datawizard/articles/demean.html} and also see documentation for \code{?datawizard::demean}. } performance/man/r2_kullback.Rd0000644000176200001440000000143214077615733016025 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/r2_kl.R \name{r2_kullback} \alias{r2_kullback} \title{Kullback-Leibler R2} \usage{ r2_kullback(model, adjust = TRUE) } \arguments{ \item{model}{A generalized linear model.} \item{adjust}{Logical, if \code{TRUE} (the default), the adjusted R2 value is returned.} } \value{ A named vector with the R2 value. } \description{ Calculates the Kullback-Leibler-divergence-based R2 for generalized linear models. } \examples{ model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") r2_kullback(model) } \references{ Cameron, A. C. and Windmeijer, A. G. (1997) An R-squared measure of goodness of fit for some common nonlinear regression models. Journal of Econometrics, 77: 329-342. } performance/man/r2_nagelkerke.Rd0000644000176200001440000000126714037746576016361 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/r2_nagelkerke.R \name{r2_nagelkerke} \alias{r2_nagelkerke} \title{Nagelkerke's R2} \usage{ r2_nagelkerke(model, ...) } \arguments{ \item{model}{A generalized linear model, including cumulative links resp. multinomial models.} \item{...}{Currently not used.} } \value{ A named vector with the R2 value. } \description{ Calculate Nagelkerke's pseudo-R2. } \examples{ model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") r2_nagelkerke(model) } \references{ Nagelkerke, N. J. (1991). A note on a general definition of the coefficient of determination. Biometrika, 78(3), 691-692. } performance/man/check_autocorrelation.Rd0000644000176200001440000000203713565571615020204 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/check_autocorrelation.R \name{check_autocorrelation} \alias{check_autocorrelation} \alias{check_autocorrelation.default} \title{Check model for independence of residuals.} \usage{ check_autocorrelation(x, ...) \method{check_autocorrelation}{default}(x, nsim = 1000, ...) } \arguments{ \item{x}{A model object.} \item{...}{Currently not used.} \item{nsim}{Number of simulations for the Durbin-Watson-Test.} } \value{ Invisibly returns the p-value of the test statistics. A p-value < 0.05 indicates autocorrelated residuals. } \description{ Check model for independence of residuals, i.e. for autocorrelation of error terms. } \details{ Performs a Durbin-Watson-Test to check for autocorrelated residuals. In case of autocorrelation, robust standard errors return more accurate results for the estimates, or maybe a mixed model with error term for the cluster groups should be used. } \examples{ m <- lm(mpg ~ wt + cyl + gear + disp, data = mtcars) check_autocorrelation(m) } performance/man/check_distribution.Rd0000644000176200001440000000466614077615732017521 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/check_distribution.R \name{check_distribution} \alias{check_distribution} \title{Classify the distribution of a model-family using machine learning} \usage{ check_distribution(model) } \arguments{ \item{model}{Typically, a model (that should response to \code{residuals()}). May also be a numeric vector.} } \description{ Choosing the right distributional family for regression models is essential to get more accurate estimates and standard errors. This function may help to check a models' distributional family and see if the model-family probably should be reconsidered. Since it is difficult to exactly predict the correct model family, consider this function as somewhat experimental. } \details{ This function uses an internal random forest model to classify the distribution from a model-family. Currently, following distributions are trained (i.e. results of \code{check_distribution()} may be one of the following): \code{"bernoulli"}, \code{"beta"}, \code{"beta-binomial"}, \code{"binomial"}, \code{"chi"}, \code{"exponential"}, \code{"F"}, \code{"gamma"}, \code{"lognormal"}, \code{"normal"}, \code{"negative binomial"}, \code{"negative binomial (zero-inflated)"}, \code{"pareto"}, \code{"poisson"}, \code{"poisson (zero-inflated)"}, \code{"uniform"} and \code{"weibull"}. \cr \cr Note the similarity between certain distributions according to shape, skewness, etc. Thus, the predicted distribution may not be perfectly representing the distributional family of the underlying fitted model, or the response value. \cr \cr There is a \code{plot()} method, which shows the probabilities of all predicted distributions, however, only if the probability is greater than zero. } \note{ This function is somewhat experimental and might be improved in future releases. The final decision on the model-family should also be based on theoretical aspects and other information about the data and the model. \cr \cr There is also a \href{https://easystats.github.io/see/articles/performance.html}{\code{plot()}-method} implemented in the \href{https://easystats.github.io/see/}{\pkg{see}-package}. } \examples{ if (require("lme4") && require("parameters") && require("see") && require("patchwork")) { data(sleepstudy) model <<- lmer(Reaction ~ Days + (Days | Subject), sleepstudy) check_distribution(model) plot(check_distribution(model)) } } performance/man/r2_coxsnell.Rd0000644000176200001440000000303714077615733016067 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/r2_coxsnell.R \name{r2_coxsnell} \alias{r2_coxsnell} \title{Cox & Snell's R2} \usage{ r2_coxsnell(model, ...) } \arguments{ \item{model}{Model with binary outcome.} \item{...}{Currently not used.} } \value{ A named vector with the R2 value. } \description{ Calculates the pseudo-R2 value based on the proposal from \cite{Cox & Snell (1989)}. } \details{ This index was proposed by \cite{Cox & Snell (1989, pp. 208-9)} and, apparently independently, by \cite{Magee (1990)}; but had been suggested earlier for binary response models by \cite{Maddala (1983)}. However, this index achieves a maximum of less than 1 for discrete models (i.e. models whose likelihood is a product of probabilities) which have a maximum of 1, instead of densities, which can become infinite \cite{(Nagelkerke, 1991)}. } \examples{ model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") r2_coxsnell(model) } \references{ \itemize{ \item Cox, D. R., Snell, E. J. (1989). Analysis of binary data (Vol. 32). Monographs on Statistics and Applied Probability. \item Magee, L. (1990). R 2 measures based on Wald and likelihood ratio joint significance tests. The American Statistician, 44(3), 250-253. \item Maddala, G. S. (1986). Limited-dependent and qualitative variables in econometrics (No. 3). Cambridge university press. \item Nagelkerke, N. J. (1991). A note on a general definition of the coefficient of determination. Biometrika, 78(3), 691-692. } } performance/man/r2.Rd0000644000176200001440000000612114120316673014143 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/r2.R \name{r2} \alias{r2} \alias{r2.default} \alias{r2.merMod} \title{Compute the model's R2} \usage{ r2(model, ...) \method{r2}{default}(model, ci = NULL, ci_method = "analytical", verbose = TRUE, ...) \method{r2}{merMod}(model, tolerance = 1e-05, ...) } \arguments{ \item{model}{A statistical model.} \item{...}{Arguments passed down to the related r2-methods.} \item{ci}{Confidence Interval (CI) level. Default is \code{NULL}. Confidence intervals for R2 can be calculated based on different methods, see \code{ci_method}.} \item{ci_method}{Method for constructing the R2 confidence interval. Options are \code{"analytical"} for sampling-theory-based frequentist intervals and \code{"bootstrap"} for bootstrap intervals. Analytical intervals are not available for all models. For Bayesian models, \code{\link[=r2_bayes]{r2_bayes()}} is used.} \item{verbose}{Logical. Should details about R2 and CI methods be given (\code{TRUE}) or not (\code{FALSE})?} \item{tolerance}{Tolerance for singularity check of random effects, to decide whether to compute random effect variances for the conditional r-squared or not. Indicates up to which value the convergence result is accepted. When \code{r2_nakagawa()} returns a warning, stating that random effect variances can't be computed (and thus, the conditional r-squared is \code{NA}), decrease the tolerance-level. See also \code{\link[=check_singularity]{check_singularity()}}.} } \value{ Returns a list containing values related to the most appropriate R2 for the given model (or \code{NULL} if no R2 could be extracted). See the list below: \itemize{ \item Logistic models: \link[=r2_tjur]{Tjur's R2} \item General linear models: \link[=r2_nagelkerke]{Nagelkerke's R2} \item Multinomial Logit: \link[=r2_mcfadden]{McFadden's R2} \item Models with zero-inflation: \link[=r2_zeroinflated]{R2 for zero-inflated models} \item Mixed models: \link[=r2_nakagawa]{Nakagawa's R2} \item Bayesian models: \link[=r2_bayes]{R2 bayes} } } \description{ Calculate the R2, also known as the coefficient of determination, value for different model objects. Depending on the model, R2, pseudo-R2, or marginal / adjusted R2 values are returned. } \note{ If there is no \code{r2()}-method defined for the given model class, \code{r2()} tries to return a "generic r2 value, calculated as following: \verb{1-sum((y-y_hat)^2)/sum((y-y_bar)^2))} } \examples{ model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") r2(model) if (require("lme4")) { model <- lmer(Sepal.Length ~ Petal.Length + (1 | Species), data = iris) r2(model) } } \seealso{ \code{\link[=r2_bayes]{r2_bayes()}}, \code{\link[=r2_coxsnell]{r2_coxsnell()}}, \code{\link[=r2_kullback]{r2_kullback()}}, \code{\link[=r2_loo]{r2_loo()}}, \code{\link[=r2_mcfadden]{r2_mcfadden()}}, \code{\link[=r2_nagelkerke]{r2_nagelkerke()}}, \code{\link[=r2_nakagawa]{r2_nakagawa()}}, \code{\link[=r2_tjur]{r2_tjur()}}, \code{\link[=r2_xu]{r2_xu()}} and \code{\link[=r2_zeroinflated]{r2_zeroinflated()}}. } performance/man/check_outliers.Rd0000644000176200001440000003751114077615732016643 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/check_outliers.R \name{check_outliers} \alias{check_outliers} \alias{check_outliers.default} \alias{check_outliers.numeric} \alias{check_outliers.data.frame} \title{Outliers detection (check for influential observations)} \usage{ check_outliers(x, ...) \method{check_outliers}{default}(x, method = c("cook", "pareto"), threshold = NULL, ...) \method{check_outliers}{numeric}(x, method = "zscore_robust", threshold = NULL, ...) \method{check_outliers}{data.frame}(x, method = "mahalanobis", threshold = NULL, ...) } \arguments{ \item{x}{A model or a data.frame object.} \item{...}{When \code{method = "ics"}, further arguments in \code{...} are passed down to \code{ICSOutlier::ics.outlier()}.} \item{method}{The outlier detection method(s). Can be "all" or some of c("cook", "pareto", "zscore", "zscore_robust", "iqr", "eti", "hdi", "bci", "mahalanobis", "mahalanobis_robust", "mcd", "ics", "optics", "lof").} \item{threshold}{A list containing the threshold values for each method (e.g. \code{list('mahalanobis' = 7, 'cook' = 1)}), above which an observation is considered as outlier. If \code{NULL}, default values will be used (see 'Details'). If a numeric value is given, it will be used as the threshold for any of the method run.} } \value{ A logical vector of the detected outliers with a nice printing method: a check (message) on whether outliers were detected or not. The information on the distance measure and whether or not an observation is considered as outlier can be recovered with the \code{as.data.frame} function. } \description{ Checks for and locates influential observations (i.e., "outliers") via several distance and/or clustering methods. If several methods are selected, the returned "Outlier" vector will be a composite outlier score, made of the average of the binary (0 or 1) results of each method. It represents the probability of each observation of being classified as an outlier by at least one method. The decision rule used by default is to classify as outliers observations which composite outlier score is superior or equal to 0.5 (i.e., that were classified as outliers by at least half of the methods). See the \strong{Details} section below for a description of the methods. } \details{ Outliers can be defined as particularly influential observations. Most methods rely on the computation of some distance metric, and the observations greater than a certain threshold are considered outliers. Importantly, outliers detection methods are meant to provide information to consider for the researcher, rather than to be an automatized procedure which mindless application is a substitute for thinking. An \strong{example sentence} for reporting the usage of the composite method could be: \emph{"Based on a composite outlier score (see the 'check_outliers' function in the 'performance' R package; Lüdecke et al., 2021) obtained via the joint application of multiple outliers detection algorithms (Z-scores, Iglewicz, 1993; Interquartile range (IQR); Mahalanobis distance, Cabana, 2019; Robust Mahalanobis distance, Gnanadesikan & Kettenring, 1972; Minimum Covariance Determinant, Leys et al., 2018; Invariant Coordinate Selection, Archimbaud et al., 2018; OPTICS, Ankerst et al., 1999; Isolation Forest, Liu et al. 2008; and Local Outlier Factor, Breunig et al., 2000), we excluded n participants that were classified as outliers by at least half of the methods used."} \subsection{Model-specific methods}{ \itemize{ \item \strong{Cook's Distance}: Among outlier detection methods, Cook's distance and leverage are less common than the basic Mahalanobis distance, but still used. Cook's distance estimates the variations in regression coefficients after removing each observation, one by one (Cook, 1977). Since Cook's distance is in the metric of an F distribution with p and n-p degrees of freedom, the median point of the quantile distribution can be used as a cut-off (Bollen, 1985). A common approximation or heuristic is to use 4 divided by the numbers of observations, which usually corresponds to a lower threshold (i.e., more outliers are detected). This only works for Frequentist models. For Bayesian models, see \code{pareto}. \item \strong{Pareto}: The reliability and approximate convergence of Bayesian models can be assessed using the estimates for the shape parameter k of the generalized Pareto distribution. If the estimated tail shape parameter k exceeds 0.5, the user should be warned, although in practice the authors of the \code{loo} package observed good performance for values of k up to 0.7 (the default threshold used by \code{performance}). }} \subsection{Univariate methods}{ \itemize{ \item \strong{Z-scores} \verb{("zscore", "zscore_robust")}: The Z-score, or standard score, is a way of describing a data point as deviance from a central value, in terms of standard deviations from the mean (\code{"zscore"}) or, as it is here the case (\code{"zscore_robust"}) by default (Iglewicz, 1993), in terms of Median Absolute Deviation (MAD) from the median (which are robust measures of dispersion and centrality). The default threshold to classify outliers is 1.959 (\code{threshold = list("zscore" = 1.959)}), corresponding to the 2.5\\% (\code{qnorm(0.975)}) most extreme observations (assuming the data is normally distributed). Importantly, the Z-score method is univariate: it is computed column by column. If a dataframe is passed, the Z-score is calculated for each variable separately, and the maximum (absolute) Z-score is kept for each observations. Thus, all observations that are extreme on at least one variable might be detected as outliers. Thus, this method is not suited for high dimensional data (with many columns), returning too liberal results (detecting many outliers). \item \strong{IQR} \code{("iqr")}: Using the IQR (interquartile range) is a robust method developed by John Tukey, which often appears in box-and-whisker plots (e.g., in \code{geom_boxplot}). The interquartile range is the range between the first and the third quartiles. Tukey considered as outliers any data point that fell outside of either 1.5 times (the default threshold) the IQR below the first or above the third quartile. Similar to the Z-score method, this is a univariate method for outliers detection, returning outliers detected for at least one column, and might thus not be suited to high dimensional data. \item \strong{CI} \verb{("ci", "eti", "hdi", "bci")}: Another univariate method is to compute, for each variable, some sort of "confidence" interval and consider as outliers values lying beyond the edges of that interval. By default, \code{"ci"} computes the Equal-Tailed Interval (\code{"eti"}), but other types of intervals are available, such as Highest Density Interval (\code{"hdi"}) or the Bias Corrected and Accelerated Interval (\code{"bci"}). The default threshold is \code{0.95}, considering as outliers all observations that are outside the 95\\% CI on any of the variable. See \code{\link[bayestestR:ci]{bayestestR::ci()}} for more details about the intervals. }} \subsection{Multivariate methods}{ \itemize{ \item \strong{Mahalanobis Distance}: Mahalanobis distance (Mahalanobis, 1930) is often used for multivariate outliers detection as this distance takes into account the shape of the observations. The default \code{threshold} is often arbitrarily set to some deviation (in terms of SD or MAD) from the mean (or median) of the Mahalanobis distance. However, as the Mahalanobis distance can be approximated by a Chi squared distribution (Rousseeuw & Van Zomeren, 1990), we can use the alpha quantile of the chi-square distribution with k degrees of freedom (k being the number of columns). By default, the alpha threshold is set to 0.025 (corresponding to the 2.5\\% most extreme observations; Cabana, 2019). This criterion is a natural extension of the median plus or minus a coefficient times the MAD method (Leys et al., 2013). \item \strong{Robust Mahalanobis Distance}: A robust version of Mahalanobis distance using an Orthogonalized Gnanadesikan-Kettenring pairwise estimator (Gnanadesikan \& Kettenring, 1972). Requires the \pkg{bigutilsr} package. See the \code{bigutilsr::dist_ogk()} function. \item \strong{Minimum Covariance Determinant (MCD)}: Another robust version of Mahalanobis. Leys et al. (2018) argue that Mahalanobis Distance is not a robust way to determine outliers, as it uses the means and covariances of all the data – including the outliers – to determine individual difference scores. Minimum Covariance Determinant calculates the mean and covariance matrix based on the most central subset of the data (by default, 66\\%), before computing the Mahalanobis Distance. This is deemed to be a more robust method of identifying and removing outliers than regular Mahalanobis distance. \item \strong{Invariant Coordinate Selection (ICS)}: The outlier are detected using ICS, which by default uses an alpha threshold of 0.025 (corresponding to the 2.5\\% most extreme observations) as a cut-off value for outliers classification. Refer to the help-file of \code{ICSOutlier::ics.outlier()} to get more details about this procedure. Note that \code{method = "ics"} requires both \pkg{ICS} and \pkg{ICSOutlier} to be installed, and that it takes some time to compute the results. \item \strong{OPTICS}: The Ordering Points To Identify the Clustering Structure (OPTICS) algorithm (Ankerst et al., 1999) is using similar concepts to DBSCAN (an unsupervised clustering technique that can be used for outliers detection). The threshold argument is passed as \code{minPts}, which corresponds to the minimum size of a cluster. By default, this size is set at 2 times the number of columns (Sander et al., 1998). Compared to the others techniques, that will always detect several outliers (as these are usually defined as a percentage of extreme values), this algorithm functions in a different manner and won't always detect outliers. Note that \code{method = "optics"} requires the \pkg{dbscan} package to be installed, and that it takes some time to compute the results. \item \strong{Isolation Forest}: The outliers are detected using the anomaly score of an isolation forest (a class of random forest). The default threshold of 0.025 will classify as outliers the observations located at \verb{qnorm(1-0.025) * MAD)} (a robust equivalent of SD) of the median (roughly corresponding to the 2.5\\% most extreme observations). Requires the \pkg{solitude} package. \item \strong{Local Outlier Factor}: Based on a K nearest neighbours algorithm, LOF compares the local density of an point to the local densities of its neighbors instead of computing a distance from the center (Breunig et al., 2000). Points that have a substantially lower density than their neighbors are considered outliers. A LOF score of approximately 1 indicates that density around the point is comparable to its neighbors. Scores significantly larger than 1 indicate outliers. The default threshold of 0.025 will classify as outliers the observations located at \verb{qnorm(1-0.025) * SD)} of the log-transformed LOF distance. Requires the \pkg{dbscan} package. }} \subsection{Threshold specification}{ Default thresholds are currently specified as follows: \preformatted{ list( zscore = stats::qnorm(p = 1 - 0.025), iqr = 1.5, ci = 0.95, cook = stats::qf(0.5, ncol(x), nrow(x) - ncol(x)), pareto = 0.7, mahalanobis = stats::qchisq(p = 1 - 0.025, df = ncol(x)), robust = stats::qchisq(p = 1 - 0.025, df = ncol(x)), mcd = stats::qchisq(p = 1 - 0.025, df = ncol(x)), ics = 0.025, optics = 2 * ncol(x), iforest = 0.025, lof = 0.025 ) }} } \note{ There is also a \href{https://easystats.github.io/see/articles/performance.html}{\code{plot()}-method} implemented in the \href{https://easystats.github.io/see/}{\pkg{see}-package}. \strong{Please note} that the range of the distance-values along the y-axis is re-scaled to range from 0 to 1. } \examples{ data <- mtcars # Size nrow(data) = 32 # For single variables ------------------------------------------------------ outliers_list <- check_outliers(data$mpg) # Find outliers outliers_list # Show the row index of the outliers as.numeric(outliers_list) # The object is a binary vector... filtered_data <- data[!outliers_list, ] # And can be used to filter a dataframe nrow(filtered_data) # New size, 28 (4 outliers removed) # Find all observations beyond +/- 2 SD check_outliers(data$mpg, method = "zscore", threshold = 2) # For dataframes ------------------------------------------------------ check_outliers(data) # It works the same way on dataframes # You can also use multiple methods at once outliers_list <- check_outliers(data, method = c( "mahalanobis", "iqr", "zscore" )) outliers_list # Using `as.data.frame()`, we can access more details! outliers_info <- as.data.frame(outliers_list) head(outliers_info) outliers_info$Outlier # Including the probability of being an outlier # And we can be more stringent in our outliers removal process filtered_data <- data[outliers_info$Outlier < 0.1, ] # We can run the function stratified by groups: if (require("dplyr")) { iris \%>\% group_by(Species) \%>\% check_outliers() } \dontrun{ # You can also run all the methods check_outliers(data, method = "all") # For statistical models --------------------------------------------- # select only mpg and disp (continuous) mt1 <- mtcars[, c(1, 3, 4)] # create some fake outliers and attach outliers to main df mt2 <- rbind(mt1, data.frame( mpg = c(37, 40), disp = c(300, 400), hp = c(110, 120) )) # fit model with outliers model <- lm(disp ~ mpg + hp, data = mt2) outliers_list <- check_outliers(model) if (require("see")) { plot(outliers_list) } insight::get_data(model)[outliers_list, ] # Show outliers data if (require("MASS")) { check_outliers(model, method = c("mahalabonis", "mcd")) } if (require("ICS")) { # This one takes some seconds to finish... check_outliers(model, method = "ics") } } } \references{ \itemize{ \item Archimbaud, A., Nordhausen, K., \& Ruiz-Gazen, A. (2018). ICS for multivariate outlier detection with application to quality control. Computational Statistics & Data Analysis, 128, 184–199. \doi{10.1016/j.csda.2018.06.011} \item Gnanadesikan, R., \& Kettenring, J. R. (1972). Robust estimates, residuals, and outlier detection with multiresponse data. Biometrics, 81-124. \item Bollen, K. A., & Jackman, R. W. (1985). Regression diagnostics: An expository treatment of outliers and influential cases. Sociological Methods & Research, 13(4), 510-542. \item Cabana, E., Lillo, R. E., \& Laniado, H. (2019). Multivariate outlier detection based on a robust Mahalanobis distance with shrinkage estimators. arXiv preprint arXiv:1904.02596. \item Cook, R. D. (1977). Detection of influential observation in linear regression. Technometrics, 19(1), 15-18. \item Iglewicz, B., & Hoaglin, D. C. (1993). How to detect and handle outliers (Vol. 16). Asq Press. \item Leys, C., Klein, O., Dominicy, Y., \& Ley, C. (2018). Detecting multivariate outliers: Use a robust variant of Mahalanobis distance. Journal of Experimental Social Psychology, 74, 150-156. \item Liu, F. T., Ting, K. M., & Zhou, Z. H. (2008, December). Isolation forest. In 2008 Eighth IEEE International Conference on Data Mining (pp. 413-422). IEEE. \item Lüdecke, D., Ben-Shachar, M. S., Patil, I., Waggoner, P., \& Makowski, D. (2021). performance: An R package for assessment, comparison and testing of statistical models. Journal of Open Source Software, 6(60), 3139. \doi{10.21105/joss.03139} \item Rousseeuw, P. J., \& Van Zomeren, B. C. (1990). Unmasking multivariate outliers and leverage points. Journal of the American Statistical association, 85(411), 633-639. } } performance/man/performance_logloss.Rd0000644000176200001440000000204314077615733017674 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/performance_logloss.R \name{performance_logloss} \alias{performance_logloss} \title{Log Loss} \usage{ performance_logloss(model, verbose = TRUE, ...) } \arguments{ \item{model}{Model with binary outcome.} \item{verbose}{Toggle off warnings.} \item{...}{Currently not used.} } \value{ Numeric, the log loss of \code{model}. } \description{ Compute the log loss for models with binary outcome. } \details{ Logistic regression models predict the probability of an outcome of being a "success" or "failure" (or 1 and 0 etc.). \code{performance_logloss()} evaluates how good or bad the predicted probabilities are. High values indicate bad predictions, while low values indicate good predictions. The lower the log-loss, the better the model predicts the outcome. } \examples{ data(mtcars) m <- glm(formula = vs ~ hp + wt, family = binomial, data = mtcars) performance_logloss(m) } \seealso{ \code{\link[=performance_score]{performance_score()}} } performance/man/r2_efron.Rd0000644000176200001440000000212014077615733015341 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/r2_efron.R \name{r2_efron} \alias{r2_efron} \title{Efron's R2} \usage{ r2_efron(model) } \arguments{ \item{model}{Generalized linear model.} } \value{ The R2 value. } \description{ Calculates Efron's pseudo R2. } \details{ Efron's R2 is calculated by taking the sum of the squared model residuals, divided by the total variability in the dependent variable. This R2 equals the squared correlation between the predicted values and actual values, however, note that model residuals from generalized linear models are not generally comparable to those of OLS. } \examples{ ## Dobson (1990) Page 93: Randomized Controlled Trial: counts <- c(18, 17, 15, 20, 10, 20, 25, 13, 12) # outcome <- gl(3, 1, 9) treatment <- gl(3, 3) model <- glm(counts ~ outcome + treatment, family = poisson()) r2_efron(model) } \references{ \itemize{ \item Efron, B. (1978). Regression and ANOVA with zero-one data: Measures of residual variation. Journal of the American Statistical Association, 73, 113-121. } } performance/man/model_performance.lm.Rd0000644000176200001440000000424514077615733017727 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/model_performance.lm.R \name{model_performance.lm} \alias{model_performance.lm} \title{Performance of Regression Models} \usage{ \method{model_performance}{lm}(model, metrics = "all", verbose = TRUE, ...) } \arguments{ \item{model}{A model.} \item{metrics}{Can be \code{"all"}, \code{"common"} or a character vector of metrics to be computed (some of \code{c("AIC", "AICc", "BIC", "R2", "R2_adj", "RMSE", "SIGMA", "LOGLOSS", "PCP", "SCORE")}). \code{"common"} will compute AIC, BIC, R2 and RMSE.} \item{verbose}{Toggle off warnings.} \item{...}{Arguments passed to or from other methods.} } \value{ A data frame (with one row) and one column per "index" (see \code{metrics}). } \description{ Compute indices of model performance for regression models. } \details{ Depending on \code{model}, following indices are computed: \itemize{ \item{\strong{AIC}} {Akaike's Information Criterion, see \code{?stats::AIC}} \item{\strong{AICc}} {Second-order (or small sample) AIC with a correction for small sample sizes} \item{\strong{BIC}} {Bayesian Information Criterion, see \code{?stats::BIC}} \item{\strong{R2}} {r-squared value, see \code{\link[=r2]{r2()}}} \item{\strong{R2_adj}} {adjusted r-squared, see \code{\link[=r2]{r2()}}} \item{\strong{RMSE}} {root mean squared error, see \code{\link[=performance_rmse]{performance_rmse()}}} \item{\strong{SIGMA}} {residual standard deviation, see \code{\link[insight:get_sigma]{insight::get_sigma()}}} \item{\strong{LOGLOSS}} {Log-loss, see \code{\link[=performance_logloss]{performance_logloss()}}} \item{\strong{SCORE_LOG}} {score of logarithmic proper scoring rule, see \code{\link[=performance_score]{performance_score()}}} \item{\strong{SCORE_SPHERICAL}} {score of spherical proper scoring rule, see \code{\link[=performance_score]{performance_score()}}} \item{\strong{PCP}} {percentage of correct predictions, see \code{\link[=performance_pcp]{performance_pcp()}}} } } \examples{ model <- lm(mpg ~ wt + cyl, data = mtcars) model_performance(model) model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") model_performance(model) } performance/man/check_sphericity.Rd0000644000176200001440000000131614077615732017152 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/check_sphericity.R \name{check_sphericity} \alias{check_sphericity} \title{Check model for violation of sphericity} \usage{ check_sphericity(x, ...) } \arguments{ \item{x}{A model object.} \item{...}{Arguments passed to \code{car::Anova}.} } \value{ Invisibly returns the p-values of the test statistics. A p-value < 0.05 indicates a violation of sphericity. } \description{ Check model for violation of sphericity } \examples{ if (require("car")) { soils.mod <- lm( cbind(pH, N, Dens, P, Ca, Mg, K, Na, Conduc) ~ Block + Contour * Depth, data = Soils ) check_sphericity(Manova(soils.mod)) } } performance/man/r2_mckelvey.Rd0000644000176200001440000000242114077615733016053 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/r2_mckelvey.R \name{r2_mckelvey} \alias{r2_mckelvey} \title{McKelvey & Zavoinas R2} \usage{ r2_mckelvey(model) } \arguments{ \item{model}{Generalized linear model.} } \value{ The R2 value. } \description{ Calculates McKelvey & Zavoinas pseudo R2. } \details{ McKelvey & Zavoinas R2 is based on the explained variance, where the variance of the predicted response is divided by the sum of the variance of the predicted response and residual variance. For binomial models, the residual variance is either \code{pi^2/3} for logit-link and 1 for probit-link. For poisson-models, the residual variance is based on log-normal approximation, similar to the \emph{distribution-specific variance} as described in \code{?insight::get_variance}. } \examples{ ## Dobson (1990) Page 93: Randomized Controlled Trial: counts <- c(18, 17, 15, 20, 10, 20, 25, 13, 12) # outcome <- gl(3, 1, 9) treatment <- gl(3, 3) model <- glm(counts ~ outcome + treatment, family = poisson()) r2_mckelvey(model) } \references{ \itemize{ \item McKelvey, R., Zavoina, W. (1975), "A Statistical Model for the Analysis of Ordinal Level Dependent Variables", Journal of Mathematical Sociology 4, S. 103–120. } } performance/man/r2_zeroinflated.Rd0000644000176200001440000000225414077615733016726 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/r2_zeroinflated.R \name{r2_zeroinflated} \alias{r2_zeroinflated} \title{R2 for models with zero-inflation} \usage{ r2_zeroinflated(model, method = c("default", "correlation")) } \arguments{ \item{model}{A model.} \item{method}{Indicates the method to calculate R2. See 'Details'. May be abbreviated.} } \value{ For the default-method, a list with the R2 and adjusted R2 values. For \code{method = "correlation"}, a named numeric vector with the correlation-based R2 value. } \description{ Calculates R2 for models with zero-inflation component, including mixed effects models. } \details{ The default-method calculates an R2 value based on the residual variance divided by the total variance. For \code{method = "correlation"}, R2 is a correlation-based measure, which is rather crude. It simply computes the squared correlation between the model's actual and predicted response. } \examples{ \donttest{ if (require("pscl")) { data(bioChemists) model <- zeroinfl( art ~ fem + mar + kid5 + ment | kid5 + phd, data = bioChemists ) r2_zeroinflated(model) } } } performance/man/cronbachs_alpha.Rd0000644000176200001440000000227514077615733016747 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/cronbachs_alpha.R \name{cronbachs_alpha} \alias{cronbachs_alpha} \title{Cronbach's Alpha for Items or Scales} \usage{ cronbachs_alpha(x) } \arguments{ \item{x}{A matrix or a data frame.} } \value{ The Cronbach's Alpha value for \code{x}. } \description{ Compute various measures of internal consistencies for tests or item-scales of questionnaires. } \details{ The Cronbach's Alpha value for \code{x}. A value closer to 1 indicates greater internal consistency, where usually following rule of thumb is applied to interpret the results: \ifelse{html}{\out{α}}{\eqn{\alpha}{alpha}} < 0.5 is unacceptable, 0.5 < \ifelse{html}{\out{α}}{\eqn{\alpha}{alpha}} < 0.6 is poor, 0.6 < \ifelse{html}{\out{α}}{\eqn{\alpha}{alpha}} < 0.7 is questionable, 0.7 < \ifelse{html}{\out{α}}{\eqn{\alpha}{alpha}} < 0.8 is acceptable, and everything > 0.8 is good or excellent. } \examples{ data(mtcars) x <- mtcars[, c("cyl", "gear", "carb", "hp")] cronbachs_alpha(x) } \references{ Bland, J. M., \& Altman, D. G. Statistics notes: Cronbach's alpha. BMJ 1997;314:572. 10.1136/bmj.314.7080.572 } performance/man/performance_rmse.Rd0000644000176200001440000000256214077615733017166 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/performance_rmse.R \name{performance_rmse} \alias{performance_rmse} \alias{rmse} \title{Root Mean Squared Error} \usage{ performance_rmse(model, normalized = FALSE, verbose = TRUE) rmse(model, normalized = FALSE, verbose = TRUE) } \arguments{ \item{model}{A model.} \item{normalized}{Logical, use \code{TRUE} if normalized rmse should be returned.} \item{verbose}{Toggle off warnings.} } \value{ Numeric, the root mean squared error. } \description{ Compute root mean squared error for (mixed effects) models, including Bayesian regression models. } \details{ The RMSE is the square root of the variance of the residuals and indicates the absolute fit of the model to the data (difference between observed data to model's predicted values). It can be interpreted as the standard deviation of the unexplained variance, and is in the same units as the response variable. Lower values indicate better model fit. \cr \cr The normalized RMSE is the proportion of the RMSE related to the range of the response variable. Hence, lower values indicate less residual variance. } \examples{ if (require("nlme")) { m <- lme(distance ~ age, data = Orthodont) # RMSE performance_rmse(m, normalized = FALSE) # normalized RMSE performance_rmse(m, normalized = TRUE) } } performance/DESCRIPTION0000644000176200001440000001000314125552432014256 0ustar liggesusersType: Package Package: performance Title: Assessment of Regression Models Performance Version: 0.8.0 Authors@R: c(person(given = "Daniel", family = "Lüdecke", role = c("aut", "cre"), email = "d.luedecke@uke.de", comment = c(ORCID = "0000-0002-8895-3206", Twitter = "@strengejacke")), person(given = "Dominique", family = "Makowski", role = c("aut", "ctb"), email = "dom.makowski@gmail.com", comment = c(ORCID = "0000-0001-5375-9967", Twitter = "@Dom_Makowski")), person(given = "Mattan S.", family = "Ben-Shachar", role = c("aut", "ctb"), email = "matanshm@post.bgu.ac.il", comment = c(ORCID = "0000-0002-4287-4801", Twitter = "@mattansb")), person(given = "Indrajeet", family = "Patil", role = c("aut", "ctb"), email = "patilindrajeet.science@gmail.com", comment = c(ORCID = "0000-0003-1995-6531", Twitter = "@patilindrajeets")), person(given = "Philip", family = "Waggoner", role = c("aut", "ctb"), email = "philip.waggoner@gmail.com", comment = c(ORCID = "0000-0002-7825-7573")), person(given = "Brenton M.", family = "Wiernik", role = c("aut", "ctb"), email = "brenton@wiernik.org", comment = c(ORCID = "0000-0001-9560-6336", Twitter = "@bmwiernik")), person(given = "Vincent", family = "Arel-Bundock", email = "vincent.arel-bundock@umontreal.ca", role = "ctb", comment = c(ORCID = "0000-0003-2042-7063")), person(given = "Martin", family = "Jullum", role = "rev"), person(given = "gjo11", role = "rev")) Maintainer: Daniel Lüdecke Description: Utilities for computing measures to assess model quality, which are not directly provided by R's 'base' or 'stats' packages. These include e.g. measures like r-squared, intraclass correlation coefficient (Nakagawa, Johnson & Schielzeth (2017) ), root mean squared error or functions to check models for overdispersion, singularity or zero-inflation and more. Functions apply to a large variety of regression models, including generalized linear models, mixed effects models and Bayesian models. License: GPL-3 URL: https://easystats.github.io/performance/ BugReports: https://github.com/easystats/performance/issues Depends: R (>= 3.4) Imports: bayestestR (>= 0.9.0), insight (>= 0.14.0), datawizard (>= 0.2.0), methods, stats, utils Suggests: AER, afex, BayesFactor, betareg, bigutilsr, brms, car, CompQuadForm, correlation, cplm, dbscan, dplyr, fixest, forecast, gamm4, ggplot2, glmmTMB, ICS, ICSOutlier, ISLR, lavaan, lme4, lmtest, loo, magrittr, MASS, Matrix, mclust, metafor, mgcv, mlogit, multimode, nlme, nonnest2, ordinal, parallel, parameters, patchwork, pscl, psych, randomForest, rmarkdown, rstanarm, rstantools, sandwich, see, spelling, survey, survival, testthat, tweedie, VGAM Encoding: UTF-8 Language: en-US RoxygenNote: 7.1.2 Config/testthat/edition: 3 NeedsCompilation: no Packaged: 2021-10-01 08:56:03 UTC; Daniel Author: Daniel Lüdecke [aut, cre] (, @strengejacke), Dominique Makowski [aut, ctb] (, @Dom_Makowski), Mattan S. Ben-Shachar [aut, ctb] (, @mattansb), Indrajeet Patil [aut, ctb] (, @patilindrajeets), Philip Waggoner [aut, ctb] (), Brenton M. Wiernik [aut, ctb] (, @bmwiernik), Vincent Arel-Bundock [ctb] (), Martin Jullum [rev], gjo11 [rev] Repository: CRAN Date/Publication: 2021-10-01 09:30:02 UTC performance/build/0000755000176200001440000000000014125546442013661 5ustar liggesusersperformance/build/partial.rdb0000644000176200001440000012724714125546442016023 0ustar liggesusers |ɺ ~-\rd|   < yvYۘi`z93=CIֽW<,ɒ,ɎK8R8V'qk%+˒#QnYrWA7*{Lcz|ߧ;3L_f&Dsܔْ1w=kgv-0}dF'Xe57`v 胲U+e2[6WzXK'/:_g/r6O֓ka_Zt*6'd{b [_?tv薜RG ľfUmkk~CwX:h/}0+?w~sb7E| j+cSvj ⭃WS/}󇫖SZ5< Z W c^-4Ji˥1tyn{WjEAmX_uJo1ZG5NjiD+MUMޛv϶)'z:$!zo3oOR1r=ؖo=UX֘Scsv{k\\Q `㽰mmo$޾}oN o4@>R·}5MA}P% ہNDn*' xt6 DBdvQXY!9mNnk-Vr s F`b%Ka8Sb;Fx ː-!2ܵ^vM={/%BTn'Ext]v`f Neg ON5tU;(7h9a+fz g`en^xrf&ߧh]_G m߻1r {!F5R|]~ ?0{/ACEu;mQTVO><jUsߜKgm6q÷lhj1G"ēe`%Mcoz}Ix lyb}Ϲ3ON`t֘FowP& +4x!@3mC"cC} wޑZwT~Rk,KAOVf:<T=?j[lxA$v|K!s렯J@뎔n-\8C,<>X}u+5"mNv!E9:= oagEGX[s8r!AUS_F Ѧ2í*~TBuwJ pˏ<^d@JC!}B˯ Ex_}:ǰG NB6Ko+s9C}t͇~PŰU-9oZ9A{9 #|~تpkPAkT-nQ@>nO DPw7Wb>jGzBI'i^(3~Iŭw)ZY~ю(AhnVB 4xa'8wlim{lVE*ϣ;CyƝNڜA W"L7 ,ٷjVD 􍖳4ibV ]x.r>EuU8%,.3eX8"hOWS6ަFwArF,*x4عب!e'}։T#_4'MjpGK=wZp*NfX-)l<'j2Xm΢dAR + W _2^vaEBèwz+䷏`UDo֦iN&/TQ#+Ux Kqi Ӽ]QU# 7ZU* 9ܶرPoe34yR0u8zܘ?K b =-}|" 7슻R54h}i`1h<; Mo52kmvmD2%\\EY3ܬ,ׂJetߣiox}5G-g@WQc 1tG|e1KjBZ"p5j%Z.5M:RSV?p7 :xWVk`Z`=_G\6O*y (̵[Z\ laHAERۨ-@7j<$t|(b{4~HUYгl, >/܄Fj-U[(:B@;V-wݱvkzk[i[B/g:jng*!~MYg~D>qB{~wHϱ饊T^`LKk+3#i>z_4>Hߚf[gffMY V"_csȣj%/̣x8Ms^s{l|2Ԝjʦ7G:ip}]Q7g%c3/$ဳz%"2e96 9`5JU$lv'Z'ًkfbr͚JSpxA5InA!KIdp@}sg7jΒ$Ba0ǖXiHWkԹ$`kcO,"+#9zN[l[j0FŚE *zZB„ ׇKE^䓃#6EZ8=xg[_X.uH:u9E*=C5qk+}p"q3uUjCuޫlqc%CEJ#auS\Cj-*7Cq'&ܶja(:ob#rY[a񫗸'YUk4ZѤU{[':뱲x5bc RPqhBY0:¢Yiy( aU*+=>ZITbwYGDE8-Quw ^ ͫ=D%s6\(nWjp$g!!ia?O.c>CUzj4:Y1Z{TP{h^(N2L!3?A732xQ}Ky?t|uP̨z'Hz'vYd۳:Z<}N 1u)֏{]8qR2Z8%$*05NQwۄNu<7"MÏ [F}t/[u7*c*HXT#.@hp=(m8D.W`LEnt~3g[8ue21}RgqǸ)Z 0 Ӝ؜ㄷ@26maЇ vkxT`?hXH ʇXyI&"OAﺐPQhKN= xtȩGɉw-]Η-qy4)@s$Nc)TvgK'=*gq-ةމ mT"(:B=a fUcx;p}oޯ-Y>LuʦFbyyc1%.=?d`eӠ=lT58>L͆ѓ [[?wъeg'!KBK4w{Z;""EDJ_=qB1H;`MeT12ɧ"on?4J8zX爀MA$+q$ F;?Pqx?;/\1/ͧge9˲Mzl!?~ĶFv-wj?xt *5];ڨF;^录Sh|Kh0NܠeG/9ȐRGR>GTk)רeB~?{mv|k"ĪwKY*Oh.hqvjoARz:UTv-ht>u(hoZ[ պ?ܙhR9& t#e@ZB- Z# 4w2n+‡]##"ؕ7X>[~ADC*QQe0LHG/az(:.Q$as4y[s)<1u\*x= HV6Qvc@m@nHT}ٖj}x< :@KM[x%]qIGnYy35C)k{%:=.vNٖ',o5?_WSsjj&%ۭ,M&=F@(%ԔDbS/G?,mHO6tpYk"ی^E5 SԕņEish,C >^oĵH#K,֦v5gD4'ߢ@eyuEղkKUbyN? wJLFA 9![yV׺/Q/3&w[1[C%Cg->7 *QvBMUϣ,EYAuSn T`?TN<Jǐ<>,ICҩb("-ST{1c=pKˠ/ɓ|̥t8r/Ze˅A;}Ks947&pSl5=o!6𐲅ݕ=v]Z~Ahn{%rk0zJ=<$"+Cn$218Zo9xl`!~t hsVarx3*= Fk,Z~77Y,5/4'ALHCl5^RLvS] VS$*n0ڢh0ʺy@ێ)u8 zԜaRȏ_J#quЩY"ڲڛkZ)r/7A]j[,MptK3j(x 5^/VA(FS%վF\΂޷ )ȦJ f)mʘ4Mֺe~1YƖ[ƖTxTf {t9ԞqY8wfBߛfi85sϘ8-! .;-<vopwٽCrҔas}Ɔ5v~iԷ53E?}Seq4*d.Y,Z E =wͱ#E~'x"<4%-?7>~ cmq -8{FeG[jE]΀_x*.D&ߥn.n) :G8:Սض܉졻LQsaϷcf;w1#EL-6UvO'/"g܆vcc.+/X<^TN3{Pߓ1zy9la G,Ue9YVvJ~VE-~B^0\0ivnU9JǨŏcJIM|a˚Ð)DM~?:-^K2뒗hۈPBQ$a]?؁f]\v̀J 6g̮RA뛳*cr20(GM%CSKt :M?]'= ZYreov-{|[BaԀМkz(ex9 !Ї9 7'+c_a*}iLb ύ91!uWĽU? <AGWl!FσN7gQE]6[$:ЬrfuZ&%e٩Ih-GAv~AiPcKӍukZ1y9/RAfyK ;mOh.8+9 Ҽ7M/)Ա,; Wu8*Ah­ sDk>n>DI,Af_яSOs> \ Ԃ0Z7ݩ<` ,.*!V7Z@T+'QBs4vA1n1{[JhzN2g\WQ'hhS 2˪lX"ӑ?xۋtr'{\WF7C,h5T%A>1"Gv5`Qj+AJnq%ZKDȢZԀ" g/5Rx잋*:#< ZQ#첥P$a-?Ձ-Z8V'dznW=zj]T~`/-U* hR}ѲjrYbeK*7Ӛ5Gn\ܝ|5gg\cwk-GlK΂lK?l{CLnN ًv3Iٮԇmh*Yțt7Nʣ= 01<*"2DxIcd؟C2L[HrKvvE)2RSCSǠ7+w>qmgh4Bv *1uxW**n$Tył)^}٘pv-aWeUxC)*:t^$541TC`ng@RY hq/t>+TD#+t@D  *OVͭ*迍#HNuY=}B}&^eB 26h. 9O66{F!}eX<z(dP{,f'kmR,B?GŢ[+@D{C5QΡ㫟mş7ZbX9_` [wFV_@h  4ppުtʰzpE~2æLhTթ= xb8pa4h5l"Z#O-.R qy諴[:ωyl)ùlyF#Ι/BѮ8_1i,ʻ7BlAU\v*֊r*2Fsr9`e$-F~#̈c/:pl(%::\kK#TpvuE aA(ZsJl6QíNq@y'jMev^yKEmF CJUz/7Щ1@kͅQXv!7~N'@ GѾZvIqx|:ݑ鴴ssE".л'ɿ+PTݠSk?je)=lU{m=:~Φ~_EvQ$a}^OmnA| hlhzT>}JH~!هW*knբ"5t-'7Tk@ f'ĥQ 67uL3*)6#,{9]-Kf.EE0!ȐhAbB\ub- AK,!:w8 Z>.;p$MU;K!CD#츐Rb, 5#4`[x#iTO>AlNʖHB}~jS%Q(5Z B='3yќ[]l^Qd?̈́jAr[tێ8'!M^imxt-& O,n/N&ZroQtzo$KGUUTU?CsgyS&ʋi/C{OLYb `߃C,T &۷s%e`vEU?v/JORwT h}g`":H%eUkgA$Z+4b{&p8FCzj"h#=7,?_kTm)f*AM--|NEfy+MQ= o]gN%#SmɱMR,u)B ?H=+9kib 3ϴuUmu# kעhܯVؒ6Fh3]fge.;PWVA2{8+a:n8㳳7*s ]'dja%.`*ABsIs';\9h?x#|eF` qb/6̈[Ffp;i2nTe K+wvmr3=zslz᮴D 5м2 UdWT+Q.ggO3_dcnª0YcT85%4^Q5im"~c,7\.`!4kk9LU,K]VQYJ@Pu`[pj,o\4UG6PTZx 0 5VP_olo+pFF ʝ )5|9F-; Dٲߝ"6?@!gSTYg?w 6\(7IK8v?M244M*hU6;fOm666ͷ5=$` :Oc(VxC$CxKBU*P R#YАrjT&&@}sJB^i%/VP-TVffH[|.T:cXmY=4[N(ТÅ[^VC`4SN)Z:9J8 >u0%w{ZLQr!crS_q/50bwo-wc F ǶE}-Ǟ^l5|c\r%j2ϲ!P='P+[`Zzhpa[ZJ}ϭ {CK$pد#DE7zfçu3䰹r>ep*}nş+^\';pzd`zH!?R77;954΄}+Znj=/oF%*j} /Mѷ8,YD&;zK0%7` IW^t7_saUb]cK]0.ʕgt!GV.4sCdGmƾViA6_֪@VcY9uש$śy%;E cW/eFhŋC*[!Mh˭y#oB"zɮJͪ:k) 4̈́V}-4|ob<'\9!PSEaJS7վnh&%~d,3iɘj6m&΂Twщi?[}Zo}%U'7-\1w\u|ikK+N"vz{F[;Róu|-Z1Lw|a߰cdEY_:В*zyu=ms~ćs_ luVLbm5mpͶ)FQ{웟{WjnwikrѭV,&zdu㻵OagD럏ͶܼH"/v,Jouo;a+׼/dvnfC󋹚-=Ѯ< i5xCzhHXRυe[q41[uf5R&WRv4LëċtUm-w ayK eڷZuV}ͪpa]pk{ewVջxˋ5VU~s EL,{*jN;-wUnc+.g-Q"oſvrd樭T轑|`=HWoΡ)a d[vAaj]]BVh7Vz^ֆ j+u{u1%)%u}>Y$O}A=WzZovn(s;5+Jc.slx^U/vrq,=loAؑ}Y7뻲u4͔'1ש9]^1z%5Ѷj/dȬEЋ-/Nw[W|q pu~  s:-}56=}>i1@Z~gggsOMpdxnxnhl#°_<{x4zÔծ#?vWLysazΩ ϸE2"sAja9#W^.Yr&vUYs&X+׵W;RYWiS沧Gbu0'[弛WTW,Ħ"~|1uEchqܥE6 yVsV_TSJelLs1eaD~mCwx+R5#W4zTY)Roʴר27rq3{,N?dq:@t5A LH&5)$m滠E3]+96B[ On#)RollkYGOM?{1􉙶Ha I<$+Z{ި&c n7Aڔ\ԘpM[3g}0ԸU |J]& ɭ ϔ@~TSY j1Ft/FЭs=ֱ;5H'rxە%6:J.KN@z{Ob 36f\>e/U{Z|+φ̔X2,hq0~%Z^'mO=޺G66.e*ۡnܢXoWou넗A_f_+IFJb08@< hcK)b F-PJ#NN6cDꇔ %*# P>%:Vr .Lo\3menJoeF$ēRf}e'1M6 B<0ogL7P9Y3,pw{yO=U92L ɩ]ؼmMh>ɲvmuxRjn]vv_D<=fX턊s!3fp]ZeE>!T4 A$lsi;}jNߖOِhkvԻC"sք{@I;: Sܦ`j?0,bJQ2SOJb@hp_.HNπ>cL$haϭ(H,"R9~?V1=n+79s΂Ld.uꢈom3Ϧݷ*Xx^^Rn[#*2IKnàS9 Zw7qw O>U,.l| 5!=GD AaCm315 |:g>>┚C65oTЩf=Ë)aGn-[CV@&2mNJoKGg`9,~mh@ VN@F;*(4JE)iT.1Xt=q Uu<| 6.? y # H"a&*x͆|lc*2w(q'S^KKdrq-[|S=ӠS j:|"3ܵ?+!Coȴy_[q}h}xRY\Z.al%e$5>u43`/FiQOZ~;mEJ13KvDazLRD>@J>`7Ƃ }Xrc5;:9NI߷s jGޏ"LZI1|Not6֚ a3` 1ʎ;:ӇQYyYtam[/G4U_OkvF#R~NU`0&? vяTLO.*OBk.;'3G< @ϱL8}4q\Wɟ>e`#We5 !_>',.܌#no7 in܎/)O#'|r].3ПI߁LhJP-g@*eI(SD#Щ&u}G"9im ѐHHdrxt]u0`tG2A v;)%8d8zG"nIڡk kpLQ <>Ĝm<0iJ~:. ߧ)c0nymk3zAE8:uNU*lzo)rU6*O:"0Bq}Ո8f},yP_[f7({iv>f\!SdoTq)t's6PqGA?BRmeS>,_z9*U !vdZ{Bh ~_[2Wsf vlbT >[bW'̓UV$gAWjA?Gvw^lU96Y+ٞOG Q}sPB[oiW: l?"<` Z0&V.׵T\wb"bXV>5LAR'@2:ߧUxxx9s)Щo<~56~iir?ooN{U3T|أ *OBAYyW3FŝR/NJV@~sGZ@+ΗOHё)q&G>0dJh@c^*iFKk]l\ہT-dDKVLy&ZUƾh8׬l7<-CHxvؠlmuA׮{z嬻 ''Q0C(-IiodJa*JtT t Aw,Kh"½[IÂ-"]k iKy2|SyY{ D嫼]qY$k䣳my{.K|E|>χGQp?,(/^B-m=j.:ұcyXR+Rp%ߪc ] j2@#dEE.pA*ǧ%ǐْM.pH(rL`0>7=BMJ bU"F@+Վ4ّS Zs/jS*n' bN bQaҦ kTY!<+e눘~8 :ϔ2:HU uDoЌu녘_Ȑ;Ffhtƽ@1sx[;# tQOwɄB:G3̣#.oa}[[Xg_Iw\v߰ơSe{aQOaM UBx~=nGkTt"r[Ҫu^m-Јj- fh͇t%S (LsnW~7n1){77>k+^PYY^mЩ.kMT"E68Ĝjb޸'2E,S~s9π3 YcKWVCȿ / c_/{ _2X wBJajճw$NzKB<Ͳe܇pgtPO+v}UvݪgRPf?diwsah,)0amoVkr.gЏ>Ьtۖe_L4y[n)i}{X1=eqs쩥{Q|Fkn~\*1Kw7I_X[{R޾V}ޯX~םR}l\죄y:9iMꝼiլbE)*EV 7WpJk=Zo<'53^/A^̠7{ L '!t/UeFdL5n?nKi>[vUKT'V` ϸE2sAja9X\:z46f.ˇԆc!QAe沈ofGݱʝe퉛 +s߮,ٵщ(X]rlՒNĬA9ZO$Ht_ u~91Kw{K,[BNww^?{|bi1h}^S,6ice;Sx+iǐx"m ҙβg. ]n;MGVW>Jx9mv[?/!lĞT⍣hGF?piJjV5r.+2m|%*~B/cwN.n*gm dbOtKTn 7c%&ewֺl  qǻ "&M35؉?)!C"N.ؔy6MStZvzjJuUxE8 zؠ'čsLIX]OJmY/;AS6KYV%m vr 72 6b.oowG|@vx)x?mvnx*XIFh^xA@3hoa>(Ͳ)gmlx*7R 5+X)h;#Q,~sUYUr<0m=V}9kЯ7?ZT|UB<mD}Z_*ޕOِmEf?k2ʧn(X m2S傘| 'u6`pk9G8gx兂QoZV-ЊWJmn.q\Oߩbْhq+f0FDcMٻ#VO6ޫvNXNfr205㧯juCMmkmDQ~jlMWWFE$m{y| c?1ے\+J}=} < m"*x6&qSgAկjgIlG D16ѶpV7Aĝp >Ռl8+g@M c !,hޔ!WVU8khJdV@G#o'\ Yص]+D'/ ?P@EŏJl0@3PEJ)UY6 J$m7IX)K'AOAP1a;cc-ƨ|^U;NCo wd4x >:->[>M%wF) <:hSM]NxS; n *x6zT y+K1eFdt&$ēnev ͜#9*j ,Xvx$ zEK'EVK>|ʳyfA7A46}pWyO@yj1[ٲ]쿡'i C1;%ēLliZFz*NufC_Ɉ;@'j1Z "{_'.440tPmPb<T>mL^+Sk]$cZ4(h44ym{)hTV#>Iїl_5 HϽj2%. .3+E>e?LP]oɪa-|KޤZ(gJ>Lt,XvJˡŠRu,jUxcE_4O\/|\V2-W.c4şVߪ'l9ff2 ݏJa5p9U'5wINԅ?jaYr-z\"ԩ5{+>rqtDmU* ]iw('u E$dؕ*OCRɱBJlArTsU =]CB]زrMwNPjhҰ$v?V$0abǁwA7y +-mkxߘwg-XB Ԋf'ԺjP뽏R6oSD8szه[ރG lRBo3&mt#imLmMɌx_ ncnėE> uWH)JUsMw=/0pH75QQƏPvD/hw&΄O|)&-D4hmPom!ə5-Juw4jD0V8&!M|ZvsM_r8\L8Q0ru u#2ߜ -堪G܌@¶\Y<;KUuQ9z} 7n&1==jlIC^}DSsMWNֹ ::q+ I1 +1(<5f IܨFK{pSf`8muQdLN@e`J}< |`zήNŭ]K5灳S]STЩ5hhm" [o@/uclˠc@@;Aa [@I1~Gk\nP|=,l}T 1 mXX'}ğI׊?ӢXp鬥NJE8 :Քwu@(S²r Z}gƲzA *A(izOtluP..%z0gT@#:-0Gw[ܖQe9X%nߊ:qƅLhOPAxãKmΚ{4*أ5X*OB<):N_s4ӠѨ]*Z8(ր6,N#8ߩ۠5 N(/FL_}#bZ#ϲ-~;~}(' CwOr^N^x^ Bsm &BDi sA’-_X"X$ǠDŽ,he&-dfVJu:Z]vU+]4w3&FcM +FCR ּV~O3Ԁ\h1ٲkO)y08ioezjQ}nv<_qI)TͮgBSp`jKL- g^q<֐abiFRR+#KYF_ nρ)B)9}>Mx{jX]xߖ8:/z8 :E<?x-gL3}kmnW0E7{8Z FxɺY,iÅ+&[$Zd j@hn( hrqO6m YQtTLGLO'n*O};9%QJp‡/1k dR tظ$!MnVu" zymlFߺލާ-=#Q~:՚ut;-:ANe 8ck˧O}`t:>-}EЩE2 :rtG\UUWq`tBQc".$"ۈ`Kf e,!q21 [#!x !qqV@BtwMGxrl _7}|H^m:I8Hŝ^o짮!%jq3|Z"TYV Tt19:]W>ϱVxv=TF۽1$N#Tv%NA"I:`)/vGӠ9;eiB)(@U+ E 倗AM)* h#RI*PB_dZT4w?utPkTW(v;hsE٫4^.~鮡(LZP&E/A'IUI-^lNP%4wy[1׺yPo&i7amFyHP*|6S-ޠr^ ǫ&Xٮin㜫vepK8:2I s~t 6 PqA귱9Ti*w' o=:NDIPlǭǘΰXA#LY/;}L%BbAv}q޼snU3vm)(g\?^`9y?c%+%lsA <*Ahnb Rp=! !Ŧ}COfk^OPfG`f_o4ucemQZQnʟdt v);2zq:c}P뜱fkY4ΎL\1+Vц^lJjtHڪɤ2Lꭐt%C> o4/U,:&$v}g3ev,fAڱ9bd\(sKLkvfoլ~u˜LP<pOte|vBxm&Hs!k]Hgj:4 ӝī24PTحΥCA6}wiTOHv4%hc'@aQ8a[y/Qɘ߃GvoefBW+B<)9Ώ3ᅛd'N`Wc} BCm=%0g3hM.k ;<Џ0`"ȗjK> OfG) hW̾z'؜*viV^hc“OvOEŢ9|gSyv{^,;vK;(P+ :}$ v%f~Mɦ`ʘ ɩ忥s{U B +NͶpx( n4(n {݆GPATsW8Kݢ$/Zgd,;rql0'FG.*C>|:>7g|oxXKS)}u+\:ف#?lȑB~0~u<.OK ^>77;954#g=t~yLA6 ZrMõx8O6fٗs3ubxw{^~+zS;-(|]l_cW?Hb.!1KM eI:AZ,VJǶ܀(S.ӽSO\/mubꩦ~~'jFOF ov7v_/Zx:f·͕2J̶ny8y"f#jw9ڒ4J܉V%| Z߁/Cog/zXr+{whvo=Կ 1NԮƞghLy ꏀ B3'?j\IxʤUYh<+C,XaʢU2ڔTBsJzO^I53Ty7tK>kL( ^|֒(Ѻf+p/&BC/f?LuBo˶ŴC,IPbEMׯ]"Bv7VHTsﶄ_z'{kXKT'|q;®ևjإsbs˥1tyn{t./ ;b>j/,ofkG+tL,{ s߮,ٵ VrE԰KN@PdN=$N$}w#Qe~-U3'Οa^Rga&'->?{|bi1h}¾oX|}0u\wu:mve]y[6&=O7oͬYŶ|;[⚑:[^]4atAqG$ēk5mͤAK֒{YK0kV5:.B`%u ہ@jR[NJP96n-P%cH2V-xBj+2!=`PNTzx0UB출3I)xXmDaؔr'gswk96'q_۴TT?'QG6eڢh+w*gbn)P)*6]vxxj&ՍP%GjyGSǦN^@CVꒃ]x  T9t鮡(^r~bdxumnEEaVE}wEl8*L'x`^Bh~L\){Txn@'m̫a?p7TCxl:TAVܐ ޟJIv:X\]B3KӅ*-!!b){#ǩorK|Hz^mХ.GA`Х/@y' jK3>~g־IK{%ģ*bݹ ?!MwnwQL"Uƥ=)Bk>Yyb V%dmm@ apI뭩K_zBhw+b#?POe2픰pV!")ǧYc1'~(Ix *|`QNީ/qRB<=h-cl٩TDgHJD|N衘(q$n=零YnViFS`tmg/W@_FA3Nג O'QB(dQ%Ќr>0EXH۔g] sax>F>طij @_q ^FA_AW@_іݎ!WĆRV%b*vFc1MP˜iM`UH{m9[n]kH8,tJozc{֒-mj|;H%F$h[_vYwQ֖hA\bɏQ%^K+`era @ҮͰԄ>[*+V%6|!:O^tkP(K%1[RM7p!*".mAx y}z) $A4)0&hL|B `,*2jmʵmnKgbg׹~@zCQJnOM/-;KeT*g>aUy(zm{Sx-VfԕHT%KneD9bY5X)Ua\)Mãę'AOwIǐ1/̱KU+i,,Lb\& sUĊA(-Kv[4T Zy(nVC> u%:)yyR6-/EA0ړޣS- y,G+:-d[!`\2>8)DMtVoL;[1TG\,B.y(3pӜfbb㖉pc6fb٪>bYM!)8F)DzPCcC*\tqҫTàUkJot5bAz[.X kYL#U|5[4ˢ`8ڈ`Ƙ/5!&KПZgU wu^V67]O7sZ o~ױ8~&46F_BǶ HQRTcŚ kV7N9?[s [ ;*AKLoH,I'] oUѿQT$c9wߘ] JYxŵ+_w;.uxş*[şX̬ 6;r۫+}&ƻQmSX(!l.v4)Y9m~,uY9m-PG$8m[aNF/bLnɆ@B0h+Iq3=7> 8^e"ģ*]%p\od/9X+W.ZHGS)aG2k i &&$IcӝzpZ0„wU? ÔRs\" %]] ? 8ĂDm~!ڵ8s۽(XsK=JZ#cQڤ=;#'!;*pcJU+'6i$\܉ 7k E[uТUu*+: :A2s[c UBR0xn9pM7VT- Vn5wl&k S:ŊL}a̵\){+vԚюπ>c ,ڒ J]a<ȉ4e㙠SkZ,;ZVC[ qWSPCԹ$fay;))^Sl8qc+-m$nxm̱Q) m~1ySr""Sӄ(mHYy)59 G1"qǵ%tAPFe?-?xCc:`/*/pSL*v5+7O"wỊiGK5h=R@)`aG$[+qDPPL)r+SfFM4Ɣx]xt*RYtV-`%gǏ؂,۶rPE,.\ޣ,T(nzJ9y;/~uףc'`r}T^nZQ9)vNɦ\أÅ+#WFGG.'uR㠕荮^%n'$'p4ټ޾k\mq1~,&h#c.Ԅxf/AzZV7]Ow[a6Z6  i_縜~Ϻ|SaŮq]0r%&Z{Uœah^YL/*K}_t5c9wߘݻжmŏ:4mſ{vh^ۊ '\z.+fV)&vK}q7QQ},aDumY]ʤ[tV|  ͊u\=}ŦG%m6q!ΐBcTdNc*}腻TȖ-'x_Uw=ӠOo΀>}JPu qm̛R$8>Aeny oT%V~ qO8|sL!z.Ziam΁3htj~hVzZkݵ+!V=՞P]U\ v-.i/T X`nݐQW8P+eH씰nBVu;Uc 6kvn4h":tFh^;w@ѮLJu.9b+]6N|w,4z[z1ЩlzK-˟o]=rq8:fɳ,^ʅu^̂ծ~dqjqT;4Y$>+xJX> 4:dB 2EVMr* +VS`,X,5UE:_`œj!t}nd9 mO!96^*-$V0R* W%k)Sݑ%]w%<膯l3(SnZAH! (R,kXʃPG>oPov( |KnL3&!ϥ±o_RvVk^DN{8OI'Nnel~ hʇS|ehpJe%] _Ԧ֎^dϬ%_`sv)aM5>V*|%Md$IxUm f)P1;r5FRҞD!QE~ӈ2)O#}{a,ce"}9ՙC>&sڂKA?O ɼ\:>Wz->焷@ڸ(dQhuv.j^rG+vJh1ge=j+`읁A*y4E!&e[˴d{~$87RS}KU嬐i9;_S:g |Fd?|'8xSnw%^tΫ2{`iTʟ~@5ݚ7Uo<)®+~G;:*s҅PsƔ{F3$<^F>dLunJbPoN˟@앯["+QK q.U0Gڧ-v8gQ@ :B=r.;GB<[%#EGnM#)eolc/vEQ0Vx\9ۚgw#O֬ʊ“?بy=kN ?yB,^2\V,_xJjVҢ-57%_Hut36^#UWWx,J,EiEiRBm9NЫKGyZXxt?ݻ>hI[/fus|Ng]?iVW3~Z5-5BD~ 7zR/`Z D>,a>6%'_}kX0lww@+Tw nev+Ө:pO:oT { 4Ko^j8aJB Ƶ!e '$X۶U݄Ce0<*37jgT=n}cv- T^*9&-P_n_?PncV:>U1nnFWW>K,$%ϩB$̵66b_RtW制{AMUű@L6X&r }S5Nl dt @B< yLQ0r@lcNuK0T1$C` ^_t- iaxM1% zKgCD7={IQ@J$! X[@y L Sbp@Dş!1j޾Udl"<A$EPYJ-1 I'\ij];!;Bql[N܅ nz0l!?~3zycr[ompC,¥<(F--£ӷZ벓׈Q(WuCh6\#ftCcg|n >Ȉzs<>BJ&Nޏ6FaVԑL3_tdtkz>~tL3{呬iЩLrU CMG׳hkdWq}|ݟyU.!̌^@ڠmCR(Hneƪ3,[-햰#{ UÙp}0&{ $k|l_\u/JfE6o!c3GW@pƪ?T`xujʿ 1lH"W4ebKXT{ 0ӚGfҮ$/k@dσ>-`>E+DQ-Z!1aI;A?OgD* !n!G8#}[-:`)gΘbg%crIhc[mLfKnOM G)gAVl^jnVmُ2 8 zVB3ahϪZQdf߿<9)@6~<*;z#?*!n!߸(Eg£c9 :S76:Ž`-8Q!Ri]eۮ=2HiSaP5v~-흶8U:VCԄksGR~U-az] iu^T'dV*\D4$#< Zbͭ$*+VŽTb"ޜϫj),;Ro絮CQ&WV|KnI'Y{6Unb"ow*4sIB<=B" r4EBh#qTMg?K[U|@Q@#5%ij#P&пC$%m6$3xGꝭ=uE6?`"ôUi[LpENU?`ny}ǠEh [ujRNBsAЃuCY3{Ū6hRqo-}]?g]OU3䴓 ^#SAëіcTZP,|1inZfB'TԤ6 %tO/JRk 8)M > |=_Ցb('pNWq=`0(3>V3vm;?ď8%2?E'@> %wOt:Q*-\S'2NoDXMKi&܋06;E:лE34ӳ0¡3Է>6&O`cEGhf~؝4U/ Gܹ{ .)qɶU&[sEذ(dr>G%-1֧it&WB`0:=6}Ux#4 r||h7yOb+g'`\v&gfVsy*2r.9-3eup%.Q62.)q}OaBQG;0VƵE1f*yG]=p@*U>=BhE9KFw8fr|.m݂p~U "lLρBsyM { VDrlP$nmJ'셋WvJ⣄ ,SyF9V6GOs'&&^Uֲ%pKh2x)~esPtfI`KEJ VOz.QxM5Ŗ}Q))J6*ja1oq[QZw ikZGĪV]vLx7B<[%#ؕU˱|=pݒǭC?Y J=9mXCha` _4DfAd?Ni):TȯǗL1P _[R7Fh{|}oTWd+^\';pzd`#HjaP(\Xʏ\)f'&T??ZQzcϪ僐~bcl 췪q?+qp-8>O5e_Lray[^o{^ɵİΫ)zQ}5w~*_@q7\|n#&KП!Ыճ~R~˿tL}%h1۷el_h-*O@z*UbwwZ]0׋nf2̈́o+e 8r%,*񧍵ޮyٔ"#狌CLo7hbOBex*3"SAO~dZ~b;S/}󇫖SZ5< Z W c^ v˥1tyX:Ϳ6-& K&:&w=Z2 ܷ+Kvmt\Vsf>([R2tvޓ8-^eIjEB$8 3+?o\E Ϟ>D'~ Z_y"Y%kjJuWglUEb<j"Hk~͟e*ۡNܢwg$Ĝkowue˄yym[O 6bsIhc I?iK0j<`Eb1x; T[yXqƑ_w[rIǐ\N@3!h:#;*Xϴ]SwuuEG"B7xDɏeBh"SR蝃'h |zl/_"L|˭,r>/:Zr@:Ś4ghQDx򺅱;[g)&lTt8 *9c쑽AUk esaF[[ҲXڔI%:.EF9?\IPaUgAEv>Eq% Ӗ4b`6{)"R" idߓIU5$F&w@x5@Oiqsrhrx}mFO<͹rH"7*rne)V-E4y*& job?c{e~7灟l;΃{@OB<:Av9JBPG:Mw"bHRɫZ%預ND>"jC.=aNHjSmH JhZh]0Ц-u~`2TsU8g:#rEֹ,h7i:*bÆݏrF Rpv8:Gō-̓31pc_+W A6SgPݶ^v LxD1Ž\))=]jK91E.ze1UȲ ]@%9ey.%ƥI۹wYJP۟GytMi;tlkDqÙièyzCs!ތOJv>e쏝_[ K^JW4u{辥j_x64f<΁UYv\suGqZNP6FG%|Z<|%^'2뽞`sn#إ%LƄ'A~64TZ'gq7uaG w=˳<*ݽ]åF\=Ǟˎ]ʿ?$>UmK>㥆 /(58uKQ{E.s[iPɱKqn~<>vYYO/C*X#- >͏^J ;('VjA4\'Ͱ1F{^1Ͳh"Ԡ16"Ԡ1KMgI:{A,L~,movFZJЯcy|wh$ ̎}eH?,E+Ub]#7`zJh=^ybaE[z\Rȱ"@k]!l2J)uߡ[V|#fO ]4sΗvU;CT պHlݚk(ل`\?بrrk02L`l}斷@x4_(^'yk.PO2=/O%gp8m$߱bgK'j|,&NqK'ƘSr6I^Pj;k(miPji>_+4I{F G5;YLn,Ӫ}{"WigQ]^^" -X^Yu#a劈ꆄwA럆-St(`Hl psb©5TƜϊٕcoiAFJ7!(sYyw\ 9PlGnã$nA >u9w"rld,;rql0'.uFG.*Ѕ\[5:,rN_|g+y^B\+g@׊n[D\5L[OЅ_P{̟e.]+s|CRg.qm,gifUߔϮ'g)YWVTJ%ē<&6EyJcҝuyJ,&/*~xz)k AjRח45D1$ß6NMi^Jrf㠏z2}"OJ'N̤)eiCFzSL7-yGQEю"| ;ҍklҍ{JѮnVl=1m^WQ)^?'!C__$j]P2Rn̈W@jx(/k46'e&sPCB+"Dތ?5QYmVd79fE¸*Q]IJNSߕw`J<[?=POC_SŽ@dSh'JkY4-bci67"/+z&7'aĹ풰#sf-N~GdM֌|% v5V֌帋ғH?Gc#"[5򧳟6rlN\6)PxYaQk.ڄls:bg[ 8 zVJaeNQKN3cQq_я/^Q m;4w/f(_atKW 5o>P@:B'!&UFotq{WNon>H֝$_{U1~,&n;h#n;cNɉ1$} NU[qϡTO+=oZe%o';7}cr?]AӪ]K,^j+qcq?J}2.K}I.*1o =tt>kp Nv+7p~KSd˳_I> WE2(^z ^bo}Uv-!CT.^kŖ8qKQ2Ũjperformance/tests/0000755000176200001440000000000014077615733013732 5ustar liggesusersperformance/tests/spelling.R0000644000176200001440000000023314021676246015663 0ustar liggesusersif (requireNamespace("spelling", quietly = TRUE)) { spelling::spell_check_test( vignettes = TRUE, error = FALSE, skip_on_cran = TRUE ) } performance/tests/testthat/0000755000176200001440000000000014125552432015560 5ustar liggesusersperformance/tests/testthat/test-r2_coxsnell.R0000644000176200001440000000040514122115675021112 0ustar liggesusersif (requiet("testthat") && requiet("performance")) { test_that("r2_coxsnell", { model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") expect_equal(r2_coxsnell(model), c(`Cox & Snell's R2` = 0.440140715155838), tolerance = 1e-3) }) } performance/tests/testthat/test-item_splithalf.R0000644000176200001440000000045614122115675021672 0ustar liggesusersif (requiet("testthat") && requiet("performance")) { test_that("item_split_half", { data(iris) x <- iris[, 1:4] expect_equal( item_split_half(x), list( splithalf = 0.7864936, spearmanbrown = 0.8804886 ), tolerance = 1e-3 ) }) } performance/tests/testthat/test-model_performance.bayesian.R0000644000176200001440000000620714122115675024141 0ustar liggesusers.runThisTest <- Sys.getenv("RunAllperformanceTests") == "yes" if (.runThisTest && requiet("testthat") && requiet("performance") && requiet("rstanarm") && requiet("brms")) { test_that("model_performance.stanreg", { set.seed(333) model <- insight::download_model("stanreg_lm_1") perf <- model_performance(model) expect_equal(perf$R2, 0.7398733, tolerance = 1e-3) expect_equal(perf$R2_adjusted, 0.7162912, tolerance = 1e-3) expect_equal(perf$ELPD, -83.49838, tolerance = 1e-3) model <- insight::download_model("stanreg_lm_2") perf <- model_performance(model) expect_equal(perf$R2, 0.8168386, tolerance = 1e-3) expect_equal(perf$R2_adjusted, 0.7979026, tolerance = 1e-3) expect_equal(perf$ELPD, -78.38735, tolerance = 1e-3) model <- insight::download_model("stanreg_lmerMod_1") perf <- model_performance(model) expect_equal(perf$R2, 0.6286546, tolerance = 1e-3) expect_equal(perf$R2_adjusted, 0.6053507, tolerance = 1e-3) expect_equal(perf$ELPD, -31.55849, tolerance = 1e-3) }) test_that("model_performance.brmsfit", { set.seed(333) model <- insight::download_model("brms_1") perf <- model_performance(model) expect_equal(perf$R2, 0.8262673, tolerance = 1e-3) expect_equal(perf$R2_adjusted, 0.7982615, tolerance = 1e-3) expect_equal(perf$ELPD, -78.59823, tolerance = 1e-3) model <- insight::download_model("brms_mixed_4") perf <- model_performance(model) expect_equal(perf$R2, 0.954538, tolerance = 1e-3) expect_equal(perf$R2_adjusted, 0.9529004, tolerance = 1e-3) expect_equal(perf$ELPD, -70.40493, tolerance = 1e-3) model <- insight::download_model("brms_ordinal_1") perf <- suppressWarnings(model_performance(model)) expect_equal(perf$R2, 0.8760015, tolerance = 1e-3) expect_equal(perf$ELPD, -11.65433, tolerance = 1e-3) }) } if (requiet("testthat") && requiet("performance") && requiet("BayesFactor") && requiet("rstantools")) { test_that("model_performance.BFBayesFactor", { mod <- ttestBF(mtcars$wt, mu = 3) expect_warning(p <- model_performance(mod)) expect_null(p) mod <- ttestBF(mtcars$wt, factor(mtcars$am)) expect_warning(p <- model_performance(mod)) expect_null(p) mods <- contingencyTableBF(matrix(1:4, 2), sampleType = "indepMulti", fixedMargin = "cols") expect_warning(p <- model_performance(mod)) expect_null(p) mod <- correlationBF(mtcars$wt, mtcars$am) expect_warning(p <- model_performance(mod)) expect_null(p) mod <- proportionBF(y = 15, N = 25, p = .5) expect_warning(p <- model_performance(mod)) expect_null(p) t <- c(-.15, 2.39, 2.42, 2.43, -.15, 2.39, 2.42, 2.43) N <- c(100, 150, 97, 99, 99, 97, 100, 150) mod <- meta.ttestBF(t, N) expect_warning(p <- model_performance(mod)) expect_null(p) mod <- regressionBF(mpg ~ cyl, mtcars, progress = FALSE) modF <- lm(mpg ~ cyl, mtcars) p <- model_performance(mod) expect_equal(p$R2, unname(r2(modF)[[1]]), tolerance = 0.05) expect_equal(p$Sigma, sigma(modF), tolerance = 0.05) }) } performance/tests/testthat/test-check_normality.R0000644000176200001440000000174014122115675022036 0ustar liggesusersif (requiet("testthat") && requiet("performance")) { test_that("check_normality | afex", { skip_if_not_installed("afex") data(obk.long, package = "afex") obk.long$treatment <- as.character(obk.long$treatment) suppressWarnings(suppressMessages({ aM <- afex::aov_car(value ~ treatment * gender + Error(id / (phase * hour)), data = obk.long ) aW <- afex::aov_car(value ~ Error(id / (phase * hour)), data = obk.long ) aB <- afex::aov_car(value ~ treatment * gender + Error(id), data = obk.long ) })) msg <- capture.output(pM <- check_normality(aM)) msg <- capture.output(pW <- check_normality(aW)) msg <- capture.output(pB <- check_normality(aB)) expect_equal(pM, 0.2054236, ignore_attr = TRUE, tolerance = 0.001) expect_equal(pW, 0.5496325, ignore_attr = TRUE, tolerance = 0.001) expect_equal(pB, 0.734765, ignore_attr = TRUE, tolerance = 0.001) }) } performance/tests/testthat/test-model_performance.merMod.R0000644000176200001440000000120214122115675023557 0ustar liggesusersif (requiet("testthat") && requiet("performance") && requiet("lme4")) { .runThisTest <- Sys.getenv("RunAllperformanceTests") == "yes" if (.runThisTest) { test_that("model_performance.merMod", { library(insight) model <- insight::download_model("lmerMod_1") expect_equal(model_performance(model)$AIC, 71.59892, tolerance = 0.01) model <- insight::download_model("merMod_1") expect_equal(model_performance(model)$AIC, 23.58593, tolerance = .01) model <- insight::download_model("merMod_2") expect_equal(model_performance(model)$AIC, 21.4729, tolerance = .01) }) } } performance/tests/testthat/test-performance_roc.R0000644000176200001440000000264114122115675022030 0ustar liggesusersif (requiet("testthat") && requiet("performance") && requiet("lme4")) { data(mtcars) m <- glmer(vs ~ mpg + (1 | gear), family = "binomial", data = mtcars) test_that("performance_roc", { roc <- performance_roc(m) expect_equal( roc$Sensitivity, c( 0, 0.07143, 0.14286, 0.21429, 0.28571, 0.35714, 0.42857, 0.5, 0.57143, 0.57143, 0.64286, 0.64286, 0.64286, 0.71429, 0.78571, 0.85714, 0.85714, 0.92857, 0.92857, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), tolerance = 1e-3 ) }) data(iris) set.seed(123) d <- iris[sample(1:nrow(iris), size = 50), ] d$y <- rbinom(nrow(d), size = 1, .3) m <- glm( y ~ Sepal.Length + Sepal.Width, data = transform(d, y = as.factor(y)), family = "binomial" ) test_that("performance_roc", { roc <- performance_roc(m) expect_equal( roc$Sensitivity, c( 0, 0, 0.07692, 0.07692, 0.07692, 0.15385, 0.23077, 0.23077, 0.23077, 0.23077, 0.23077, 0.30769, 0.30769, 0.30769, 0.30769, 0.30769, 0.38462, 0.38462, 0.38462, 0.46154, 0.46154, 0.53846, 0.53846, 0.53846, 0.53846, 0.61538, 0.61538, 0.61538, 0.61538, 0.61538, 0.69231, 0.76923, 0.76923, 0.76923, 0.84615, 0.92308, 0.92308, 0.92308, 0.92308, 0.92308, 0.92308, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), tolerance = 1e-3 ) }) } performance/tests/testthat/test-item_reliability.R0000644000176200001440000000110314122115675022203 0ustar liggesusersif (requiet("testthat") && requiet("performance")) { test_that("item_reliability", { data(iris) x <- iris[, 1:4] expect_equal( item_reliability(x), structure( list( term = c( "Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width" ), alpha_if_deleted = c(0.454, 0.877, 0.489, 0.467), item_discrimination = c(0.894, -0.349, 0.863, 0.921) ), class = "data.frame", row.names = c(NA, -4L) ), tolerance = 1e-3 ) }) } performance/tests/testthat/test-icc.R0000644000176200001440000000502514122115675017421 0ustar liggesusersosx <- tryCatch({ si <- Sys.info() if (!is.null(si["sysname"])) { si["sysname"] == "Darwin" || grepl("^darwin", R.version$os) } else { FALSE } }) .runThisTest <- Sys.getenv("RunAllperformanceTests") == "yes" if (.runThisTest && !osx) { if (requiet("testthat") && requiet("performance") && requiet("lme4") && requiet("nlme") && requiet("insight")) { data(iris) m0 <- lm(Sepal.Length ~ Petal.Length, data = iris) m1 <- lmer(Sepal.Length ~ Petal.Length + (1 | Species), data = iris) test_that("icc", { expect_warning(expect_null(icc(m0))) }) test_that("icc", { expect_equal( icc(m1), structure(list(ICC_adjusted = 0.910433115331481, ICC_conditional = 0.310947783569576), class = "icc"), tolerance = 1e-3 ) }) m2 <- insight::download_model("stanreg_lmerMod_1") test_that("icc", { expect_equal( icc(m2), structure(list(ICC_adjusted = 0.399303562702568, ICC_conditional = 0.216907586891627), class = "icc"), tolerance = 1e-3 ) }) m3 <- insight::download_model("brms_mixed_1") test_that("icc", { set.seed(123) expect_equal( variance_decomposition(m3)$ICC_decomposed, 0.3262006, tolerance = 0.05 ) }) test_that("icc", { set.seed(123) expect_equal( icc(m3), structure(list(ICC_adjusted = 0.930217931275196, ICC_conditional = 0.771475122370036), class = "icc"), tolerance = 0.05 ) }) data(sleepstudy) set.seed(12345) sleepstudy$grp <- sample(1:5, size = 180, replace = TRUE) sleepstudy$subgrp <- NA for (i in 1:5) { filter_group <- sleepstudy$grp == i sleepstudy$subgrp[filter_group] <- sample(1:30, size = sum(filter_group), replace = TRUE) } model <- lmer( Reaction ~ Days + (1 | grp) + (1 | Subject), data = sleepstudy ) test_that("icc", { expect_equal( icc(model, by_group = TRUE), structure(list(Group = c("Subject", "grp"), ICC = c(0.5896587, 0.0016551)), class = c("icc_by_group", "data.frame"), row.names = c(NA, -2L)), tolerance = 0.05 ) }) data(iris) m <- nlme::lme(Sepal.Length ~ Petal.Length, random = ~ 1 | Species, data = iris) out <- icc(m) test_that("icc", { expect_equal(out$ICC_adjusted, 0.9104331, tolerance = 0.01) expect_equal(out$ICC_conditional, 0.3109478, tolerance = 0.01) }) } } performance/tests/testthat/test-check_sphericity.R0000644000176200001440000000150514122115675022202 0ustar liggesusersif (requiet("testthat") && requiet("performance")) { test_that("check_sphericity | afex", { skip_if_not_installed("afex") data(obk.long, package = "afex") obk.long$treatment <- as.character(obk.long$treatment) suppressWarnings(suppressMessages({ aM <- afex::aov_car(value ~ treatment * gender + Error(id / (phase * hour)), data = obk.long ) aW <- afex::aov_car(value ~ Error(id / (phase * hour)), data = obk.long ) aB <- afex::aov_car(value ~ treatment * gender + Error(id), data = obk.long ) })) expect_error(check_sphericity(aB)) msg <- capture.output(pM <- check_sphericity(aM)) msg <- capture.output(pW <- check_sphericity(aW)) expect_equal(length(pM), 12L) expect_equal(length(pW), 3L) }) } performance/tests/testthat/test-r2_nakagawa.R0000644000176200001440000000076614122115675021047 0ustar liggesusersif (requiet("testthat") && requiet("performance") && requiet("lme4")) { data(iris) model <- lme4::lmer(Sepal.Length ~ Petal.Length + (1 | Species), data = iris) test_that("r2_nakagawa", { expect_equal( r2_nakagawa(model), structure( list( R2_conditional = c(`Conditional R2` = 0.969409477972726), R2_marginal = c(`Marginal R2` = 0.65846169440315) ), class = "r2_nakagawa" ), tolerance = 1e-3 ) }) } performance/tests/testthat/test-check_zeroinflation.R0000644000176200001440000000101414122115675022675 0ustar liggesusersif (requiet("testthat") && requiet("performance") && requiet("glmmTMB")) { set.seed(123) data(Salamanders) m <- glm(count ~ spp + mined, family = poisson, data = Salamanders) test_that("check_zeroinflation", { expect_equal(check_zeroinflation(m), structure( list( predicted.zeros = 298, observed.zeros = 387L, ratio = 0.770025839793282, tolerance = 0.05 ), class = "check_zi" ), tolerance = 1e-3 ) }) } performance/tests/testthat/test-r2_nagelkerke.R0000644000176200001440000000130114122115675021367 0ustar liggesusersif (requiet("testthat") && requiet("performance") && requiet("MASS")) { test_that("r2_nagelkerke", { model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") expect_equal(r2_nagelkerke(model), c(`Nagelkerke's R2` = 0.589959301837163), tolerance = 1e-3) expect_equal(r2(model), list(R2_Tjur = c(`Tjur's R2` = 0.477692621360749)), tolerance = 1e-3, ignore_attr = TRUE) }) options(contrasts = c("contr.treatment", "contr.poly")) data(housing, package = "MASS") model <- polr(Sat ~ Infl + Type + Cont, weights = Freq, data = housing) test_that("r2_nagelkerke", { expect_equal(r2_nagelkerke(model), c(`Nagelkerke's R2` = 0.1084083), tolerance = 1e-3) }) } performance/tests/testthat/test-roc.R0000644000176200001440000000150214122115675017442 0ustar liggesusersif (requiet("testthat") && requiet("performance") && requiet("ISLR") && requiet("bayestestR")) { data(Smarket, package = "ISLR") m1 <- glm(am ~ vs + wt, family = binomial(), data = mtcars) m2 <- glm(Direction ~ Lag1 + Volume, family = binomial(), data = Smarket) roc1 <- performance_roc(m1) roc2 <- performance_roc(m2) auc1 <- area_under_curve(roc1$Specificity, roc1$Sensitivity) auc2 <- area_under_curve(roc2$Specificity, roc2$Sensitivity) test_that("roc", { expect_equal(head(roc1$Sensitivity), c(0, 0.07692, 0.15385, 0.23077, 0.30769, 0.38462), tolerance = 1e-2) expect_equal(head(roc2$Sensitivity), c(0, 0, 0, 0, 0.00154, 0.00154), tolerance = 1e-2) }) test_that("auc", { expect_equal(auc1, 0.964, tolerance = 1e-2) expect_equal(auc2, 0.535, tolerance = 1e-2) }) } performance/tests/testthat/test-check_homogeneity.R0000644000176200001440000000176314122115675022354 0ustar liggesusersif (requiet("testthat") && requiet("performance")) { test_that("check_homogeneity | afex", { skip_if_not_installed("afex") data(obk.long, package = "afex") obk.long$treatment <- as.character(obk.long$treatment) suppressWarnings(suppressMessages({ aM <- afex::aov_car(value ~ treatment * gender + Error(id / (phase * hour)), data = obk.long ) aW <- afex::aov_car(value ~ Error(id / (phase * hour)), data = obk.long ) aB <- afex::aov_car(value ~ treatment * gender + Error(id), data = obk.long ) })) expect_error(check_homogeneity(aW)) msg <- capture.output(expect_message(check_homogeneity(aB, method = "bartlett"), "Only")) msg <- capture.output(pM <- check_homogeneity(aM)) msg <- capture.output(pB <- check_homogeneity(aB)) expect_equal(pM, 0.3496516, ignore_attr = TRUE, tolerance = 0.001) expect_equal(pB, 0.3496516, ignore_attr = TRUE, tolerance = 0.001) }) } performance/tests/testthat/test-check_collinearity.R0000644000176200001440000000571514122115675022524 0ustar liggesusersif (requiet("testthat") && requiet("performance") && requiet("glmmTMB")) { data(Salamanders) m1 <- glmmTMB(count ~ spp + mined + (1 | site), ziformula = ~spp, Salamanders, family = poisson() ) test_that("check_collinearity", { expect_equal( check_collinearity(m1, component = "conditional")$VIF, c(1.00037354840318, 1.00037354840318), tolerance = 1e-3 ) expect_equal( check_collinearity(m1, component = "all")$VIF, c(1.00037354840318, 1.00037354840318), tolerance = 1e-3 ) expect_null(check_collinearity(m1, component = "zero_inflated", verbose = FALSE)) }) m2 <- glmmTMB( count ~ spp + mined + cover + (1 | site), ziformula = ~ spp + mined + cover, family = nbinom2, data = Salamanders ) test_that("check_collinearity", { expect_equal( check_collinearity(m2, component = "conditional")$VIF, c(1.09015, 1.2343, 1.17832), tolerance = 1e-3 ) expect_equal( check_collinearity(m2, component = "all")$VIF, c(1.09015, 1.2343, 1.17832, 1.26914, 1, 1.26914), tolerance = 1e-3 ) expect_equal( check_collinearity(m2, component = "zero_inflated")$VIF, c(1.26914, 1, 1.26914), tolerance = 1e-3 ) }) if (requiet("afex") && utils::packageVersion("afex") >= package_version("1.0.0")) { test_that("check_collinearity | afex", { data(obk.long, package = "afex") obk.long$treatment <- as.character(obk.long$treatment) suppressWarnings(suppressMessages({ aM <- afex::aov_car(value ~ treatment * gender + Error(id / (phase * hour)), data = obk.long ) aW <- afex::aov_car(value ~ Error(id / (phase * hour)), data = obk.long ) aB <- afex::aov_car(value ~ treatment * gender + Error(id), data = obk.long ) })) expect_message(ccoM <- check_collinearity(aM)) expect_message(ccoW <- check_collinearity(aW)) expect_message(ccoB <- check_collinearity(aB), regexp = NA) expect_equal(nrow(ccoM), 15) expect_equal(nrow(ccoW), 3) expect_equal(nrow(ccoB), 3) suppressWarnings(suppressMessages({ aM <- afex::aov_car(value ~ treatment * gender + Error(id / (phase * hour)), include_aov = TRUE, data = obk.long ) aW <- afex::aov_car(value ~ Error(id / (phase * hour)), include_aov = TRUE, data = obk.long ) aB <- afex::aov_car(value ~ treatment * gender + Error(id), include_aov = TRUE, data = obk.long ) })) expect_message(ccoM <- check_collinearity(aM)) expect_message(ccoW <- check_collinearity(aW)) expect_message(ccoB <- check_collinearity(aB), regexp = NA) expect_equal(nrow(ccoM), 15) expect_equal(nrow(ccoW), 3) expect_equal(nrow(ccoB), 3) }) } } performance/tests/testthat/test-r2_bayes.R0000644000176200001440000000237614122115675020377 0ustar liggesusersif (requiet("testthat") && requiet("performance") && requiet("BayesFactor") && requiet("rstantools")) { test_that("r2_BayesFactor", { data(mtcars) set.seed(1) BFM <- generalTestBF(mpg ~ cyl * gear, data = mtcars, progress = FALSE) r_BF <- r2(BFM[4], ci = 0.89) r_CI <- attr(r_BF, "CI")$R2_Bayes expect_equal(r_BF$R2_Bayes, 0.71, tolerance = 0.05) expect_equal(r_CI$CI_low, 0.62, tolerance = 0.05) expect_equal(r_CI$CI_high, 0.79, tolerance = 0.05) r_post <- r2_posterior(BFM[1]) expect_s3_class(r_post, "data.frame") r_BF <- r2(BFM, average = TRUE) expect_equal(r_BF$R2_Bayes, 0.72, tolerance = 0.05) # with random effects: if (utils::packageVersion("BayesFactor") >= package_version("0.9.12.4.3")) { mtcars$gear <- factor(mtcars$gear) model <- lmBF(mpg ~ hp + cyl + gear + gear:wt, mtcars, progress = FALSE, whichRandom = c("gear", "gear:wt")) r_BF <- r2(model, ci = 0.89) r_CI <- attr(r_BF, "CI")$R2_Bayes expect_equal(r_BF$R2_Bayes, 0.36, tolerance = 0.05) expect_equal(r_BF$R2_Bayes_marginal, 0.21, tolerance = 0.05) expect_equal(r_CI$CI_low, 0.27, tolerance = 0.05) expect_equal(r_CI$CI_high, 0.54, tolerance = 0.05) } }) } performance/tests/testthat/test-rmse.R0000644000176200001440000000144714122115675017635 0ustar liggesusersif (requiet("testthat") && requiet("performance") && requiet("lme4")) { data(sleepstudy, package = "lme4") m1.1 <- glm(Reaction ~ Days, data = sleepstudy, family = gaussian()) m1.2 <- glm(Reaction ~ Days, data = sleepstudy, family = gaussian("log")) m1.3 <- glm(Reaction ~ Days, data = sleepstudy, family = gaussian("inverse")) m2.1 <- glm(Reaction ~ Days, data = sleepstudy, family = inverse.gaussian()) m2.2 <- glm(Reaction ~ Days, data = sleepstudy, family = inverse.gaussian("log")) m2.3 <- glm(Reaction ~ Days, data = sleepstudy, family = inverse.gaussian("inverse")) cp <- compare_performance(m1.1, m1.2, m1.3, m2.1, m2.2, m2.3) test_that("rmse", { expect_equal(cp$RMSE, c(47.4489, 47.39881, 47.38701, 47.41375, 47.39979, 47.38705), tolerance = 1e-3) }) } performance/tests/testthat/test-r2_tjur.R0000644000176200001440000000055214122115675020252 0ustar liggesusersif (requiet("testthat") && requiet("performance")) { test_that("r2_tjur", { model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") expect_equal(r2_tjur(model), c(`Tjur's R2` = 0.477692621360749), tolerance = 1e-3) }) test_that("r2_tjur", { model <- lm(mpg ~ wt + cyl, data = mtcars) expect_error(r2_tjur(model)) }) } performance/tests/testthat/test-coxph.R0000644000176200001440000000175314122115675020010 0ustar liggesusersif (requiet("testthat") && requiet("performance") && requiet("survival")) { lung <- subset(lung, subset = ph.ecog %in% 0:2) lung$sex <- factor(lung$sex, labels = c("male", "female")) lung$ph.ecog <- factor(lung$ph.ecog, labels = c("good", "ok", "limited")) m1 <- coxph(Surv(time, status) ~ sex + age + ph.ecog, data = lung) test_that("r2", { expect_equal(r2_nagelkerke(m1), c(`Nagelkerke's R2` = 0.1203544), tolerance = 1e-3) expect_equal(r2(m1), list(R2 = c(`Nagelkerke's R2` = 0.1203544)), tolerance = 1e-3, ignore_attr = TRUE) }) test_that("model_performance", { perf <- suppressWarnings(model_performance(m1, verbose = FALSE)) expect_equal(perf$AIC, 1457.19458886438, tolerance = 1e-3) expect_equal(perf$BIC, 1469.5695896676, tolerance = 1e-3) expect_equal(perf$R2_Nagelkerke, 0.1203544, tolerance = 1e-3) expect_equal(perf$RMSE, 0.882014942836432, tolerance = 1e-3) }) test_that("r2", { expect_error(r2_xu(m1)) }) } performance/tests/testthat/test-model_performance.kmeans.R0000644000176200001440000000220314122115675023614 0ustar liggesusersif (requiet("testthat") && requiet("performance")) { test_that("model_performance.kmeans", { set.seed(123) cl <- kmeans(subset(iris, select = Sepal.Length:Petal.Width), 3) expect_equal( model_performance(cl), structure( list( Sum_Squares_Within = 681.3706, Sum_Squares_Between = 78.851441426146, Sum_Squares_Total = 602.519158573854, Iterations = 2L ), class = c("performance_model", "data.frame"), row.names = c(NA, -1L) ), tolerance = 0.1 ) set.seed(123) mod <- kmeans(subset(iris, select = Sepal.Length:Petal.Width), centers = 3, iter.max = 100, nstart = 10 ) expect_equal( model_performance(mod), structure( list( Sum_Squares_Within = 681.3706, Sum_Squares_Between = 78.851441426146, Sum_Squares_Total = 602.519158573854, Iterations = 2L ), class = c( "performance_model", "data.frame" ), row.names = c(NA, -1L) ), tolerance = 0.1 ) }) } performance/tests/testthat/test-model_performance.rma.R0000644000176200001440000000205314122115675023120 0ustar liggesusersif (requiet("testthat") && requiet("performance") && requiet("metafor")) { dat <- escalc(measure = "RR", ai = tpos, bi = tneg, ci = cpos, di = cneg, data = dat.bcg) test_that("model_performance.rma", { model <- rma(yi, vi, data = dat, method = "REML") mp <- model_performance(model) expect_null(mp$R2) expect_equal(mp$AIC, 28.40474, tolerance = 1e-3) expect_equal(mp$I2, 0.9222139, tolerance = 1e-3) expect_equal(colnames(mp), c( "AIC", "BIC", "I2", "H2", "TAU2", "CochransQ", "p_CochransQ", "df_error", "Omnibus", "p_Omnibus" )) }) test_that("model_performance.rma", { model <- rma(yi, vi, mods = cbind(ablat, year), data = dat) mp <- model_performance(model) expect_equal(mp$R2, 0.6463217, tolerance = 1e-3) expect_equal(mp$AIC, 24.21375, tolerance = 1e-3) expect_equal(mp$I2, 0.719778, tolerance = 1e-3) expect_equal(colnames(mp), c( "AIC", "BIC", "I2", "H2", "TAU2", "CochransQ", "p_CochransQ", "df_error", "Omnibus", "p_Omnibus", "R2" )) }) } performance/tests/testthat/test-test_likelihoodratio.R0000644000176200001440000000317114122115675023104 0ustar liggesusersif (requiet("testthat") && requiet("performance") && requiet("lavaan")) { test_that("test_likelihoodratio - regression models", { m1 <- lm(mpg ~ wt + cyl + gear + disp, data = mtcars) m2 <- lm(mpg ~ wt + cyl + gear, data = mtcars) m3 <- lm(mpg ~ wt + cyl, data = mtcars) # stats::anova() rez <- test_likelihoodratio(m1, m2, m3, estimator = "OLS") ref <- anova(m1, m2, m3, test = "LRT") expect_equal(ref$`Pr(>Chi)`, rez$p, tolerance = 1e-03) rez <- test_likelihoodratio(m3, m2, m1, estimator = "OLS") ref <- anova(m3, m2, m1, test = "LRT") expect_equal(ref$`Pr(>Chi)`, rez$p, tolerance = 1e-03) # lmtest::lrtest() rez <- test_likelihoodratio(m1, m2, m3, estimator = "ML") p <- c(NA, 0.5302030, 0.4747344) # lmtest::lrtest(m1, m2, m3)$`Pr(>Chisq)` expect_equal(p, rez$p, tolerance = 1e-03) rez <- test_likelihoodratio(m3, m2, m1, estimator = "ML") p <- c(NA, 0.4747344, 0.5302030) # lmtest::lrtest(m3, m2, m1)$`Pr(>Chisq)` expect_equal(p, rez$p, tolerance = 1e-03) }) test_that("test_likelihoodratio - reversed order", { m1 <- lm(mpg ~ wt + cyl, data = mtcars) m2 <- lm(mpg ~ wt + cyl + gear, data = mtcars) m3 <- lm(mpg ~ wt + cyl + gear + disp, data = mtcars) rez <- test_likelihoodratio(m1, m2, m3, estimator = "OLS") ref <- anova(m1, m2, m3, test = "LRT") expect_equal(ref$`Pr(>Chi)`, rez$p, tolerance = 1e-03) rez <- test_likelihoodratio(m1, m2, m3, estimator = "ML") p <- c(NA, 0.4747344, 0.5302030) # lmtest::lrtest(m1, m2, m3)$`Pr(>Chisq)` expect_equal(p, rez$p, tolerance = 1e-03) }) } performance/tests/testthat/test-cronbachs_alpha.R0000644000176200001440000000035214122115675021770 0ustar liggesusersif (requiet("testthat") && requiet("performance")) { test_that("cronbachs_alpha", { data(mtcars) x <- mtcars[, c("cyl", "gear", "carb", "hp")] expect_equal(cronbachs_alpha(x), 0.09463206, tolerance = 1e-3) }) } performance/tests/testthat/test-check_overdispersion.R0000644000176200001440000000204414122115675023071 0ustar liggesusersif (requiet("testthat") && requiet("performance") && requiet("glmmTMB")) { data(Salamanders) m1 <- glm(count ~ spp + mined, family = poisson, data = Salamanders) m2 <- glmmTMB( count ~ mined + spp + (1 | site), family = poisson, data = Salamanders ) test_that("check_overdispersion", { expect_equal( check_overdispersion(m1), structure( list( chisq_statistic = 1873.71012423995, dispersion_ratio = 2.94608510100621, residual_df = 636L, p_value = 3.26607509162498e-122 ), class = "check_overdisp" ), tolerance = 1e-3 ) }) test_that("check_overdispersion", { expect_equal( check_overdispersion(m2), structure( list( chisq_statistic = 1475.87512547128, dispersion_ratio = 2.32421279601777, residual_df = 635L, p_value = 8.41489530177729e-69 ), class = "check_overdisp" ), tolerance = 1e-3 ) }) } performance/tests/testthat/test-check_singularity.R0000644000176200001440000000143014122115675022366 0ustar liggesusers.runThisTest <- Sys.getenv("RunAllperformanceTests") == "yes" if (.runThisTest) { if (requiet("testthat") && requiet("performance") && requiet("lme4")) { data(sleepstudy) set.seed(123) sleepstudy$mygrp <- sample(1:5, size = 180, replace = TRUE) sleepstudy$mysubgrp <- NA for (i in 1:5) { filter_group <- sleepstudy$mygrp == i sleepstudy$mysubgrp[filter_group] <- sample(1:30, size = sum(filter_group), replace = TRUE) } model <- lmer( Reaction ~ Days + (1 | mygrp / mysubgrp) + (1 | Subject), data = sleepstudy ) test_that("check_singularity", { if (paste0(R.Version()[c("major", "minor")], collapse = ".") > "3.5.3") { expect_true(check_singularity(model)) } }) } } performance/tests/testthat/test-model_performance.gam.R0000644000176200001440000000156114122115675023110 0ustar liggesusersif (requiet("testthat") && requiet("performance") && requiet("gamm4") && requiet("mgcv")) { test_that("mgcv::gam", { model <- mgcv::gam(mpg ~ s(hp), data = mtcars) # TODO: improve output expect_equal(as.numeric(performance::r2(model)$R2), 0.7348, tolerance = 0.01) }) # test_that("gamm4::gamm4 - no random", { # model <- gamm4::gamm4(mpg ~ s(hp), data=mtcars) # # performance::r2(model$mer) # performance::r2(model$gam) # }) # # # test_that("gamm4::gamm4 - random", { # model <- gamm4::gamm4(mpg ~ s(hp), random = ~ (1|vs), data=mtcars) # # performance::r2(model$mer) # performance::r2(model$gam) # }) # # test_that("mgcv::gamm", { # model <- mgcv::gamm(mpg ~ s(hp), random = list(vs = ~1), data=mtcars) # # performance::r2(model$lme) # performance::r2(model$gam) # }) } performance/tests/testthat/test-check_convergence.R0000644000176200001440000000131314122115675022312 0ustar liggesusersif (requiet("testthat") && requiet("performance") && requiet("lme4")) { data(cbpp) data(sleepstudy) set.seed(1) cbpp$x <- rnorm(nrow(cbpp)) cbpp$x2 <- runif(nrow(cbpp)) model <- suppressWarnings(glmer( cbind(incidence, size - incidence) ~ period + x + x2 + (1 + x | herd), data = cbpp, family = binomial() )) test_that("check_convergence", { expect_true(check_convergence(model)) expect_equal(check_convergence(model), structure(TRUE, gradient = 0.000280307452338331), tolerance = 1e-3) }) model <- lmer(Reaction ~ Days + (1 + Days | Subject), data = sleepstudy) test_that("check_convergence", { expect_true(check_convergence(model)) }) } performance/tests/testthat/test-r2_zeroinflated.R0000644000176200001440000000363314122115675021757 0ustar liggesusersif (requiet("testthat") && requiet("performance") && requiet("pscl")) { data(bioChemists) model <- zeroinfl( art ~ fem + mar + kid5 + ment | kid5 + phd, data = bioChemists ) test_that("r2_zeroinflated", { expect_equal( r2_zeroinflated(model), structure( list( R2 = c(R2 = 0.179754784762554), R2_adjusted = c(`adjusted R2` = 0.175242984898761) ), model_type = "Zero-Inflated and Hurdle", class = "r2_generic" ), tolerance = 1e-4 ) expect_equal( r2(model), structure( list( R2 = c(R2 = 0.179754784762554), R2_adjusted = c(`adjusted R2` = 0.175242984898761) ), model_type = "Zero-Inflated and Hurdle", class = "r2_generic" ), tolerance = 1e-4 ) expect_equal( r2_zeroinflated(model, method = "correlation"), c(`R2 for ZI-models` = 0.0945232333944027), tolerance = 1e-4 ) }) model <- hurdle( art ~ fem + mar + kid5 + ment | kid5 + phd, data = bioChemists ) test_that("r2_zeroinflated", { expect_equal( r2_zeroinflated(model), structure( list( R2 = c(R2 = 0.0920246818082126), R2_adjusted = c(`adjusted R2` = 0.087030318121789) ), model_type = "Zero-Inflated and Hurdle", class = "r2_generic" ), tolerance = 1e-4 ) expect_equal( r2(model), structure( list( R2 = c(R2 = 0.0920246818082126), R2_adjusted = c(`adjusted R2` = 0.087030318121789) ), model_type = "Zero-Inflated and Hurdle", class = "r2_generic" ), tolerance = 1e-4 ) expect_equal( r2_zeroinflated(model, method = "correlation"), c(`R2 for ZI-models` = 0.08938686), tolerance = 1e-4 ) }) } performance/tests/testthat/test-item_intercor.R0000644000176200001440000000042314122115675021523 0ustar liggesusersif (requiet("testthat") && requiet("performance")) { test_that("item_intercor", { data(iris) x <- iris[, 1:4] expect_equal(item_intercor(x), 0.2900708, tolerance = 1e-3) expect_equal(item_intercor(x, "spearman"), 0.3147349, tolerance = 1e-3) }) } performance/tests/testthat/test-test_performance.R0000644000176200001440000000147114122115675022224 0ustar liggesusersif (requiet("testthat") && requiet("lavaan") && requiet("lmtest")) { test_that("test_performance - nested", { # Decreasing m1 <- lm(Sepal.Length ~ Petal.Width * Species, data = iris) m2 <- lm(Sepal.Length ~ Petal.Width + Species, data = iris) m3 <- lm(Sepal.Length ~ Petal.Width, data = iris) rez <- test_performance(m1, m2, m3) expect_equal(rez$Name, c("m1", "m2", "m3"), ignore_attr = TRUE) # Increasing # TODO: Increasing order must be fixed and double checked, because the empty line should be the bottom one (?) # m1 <- lm(Sepal.Length ~ Petal.Width, data = iris) # m2 <- lm(Sepal.Length ~ Petal.Width + Species, data = iris) # m3 <- lm(Sepal.Length ~ Petal.Width * Species, data = iris) # # rez <- test_performance(m1, m2, m3) }) } performance/tests/testthat/test-compare_performance.R0000644000176200001440000000170414122115675022672 0ustar liggesusersif (requiet("testthat") && requiet("performance")) { data(iris) lm1 <- lm(Sepal.Length ~ Species, data = iris) lm2 <- lm(Sepal.Length ~ Species + Petal.Length, data = iris) lm3 <- lm(Sepal.Length ~ Species * Petal.Length, data = iris) lm4 <- lm(Sepal.Length ~ Species * Petal.Length, data = iris[-1, ]) test_that("compare_performance", { expect_equal( colnames(compare_performance(lm1, lm2, lm3)), c("Name", "Model", "AIC", "AIC_wt", "BIC", "BIC_wt", "R2", "R2_adjusted", "RMSE", "Sigma") ) expect_warning( expect_equal( colnames(compare_performance(lm1, lm2, lm3, lm4)), c("Name", "Model", "AIC", "AIC_wt", "BIC", "BIC_wt", "R2", "R2_adjusted", "RMSE", "Sigma") ) ) expect_equal( colnames(compare_performance(lm1, lm2, lm3, lm4, verbose = FALSE)), c("Name", "Model", "AIC", "AIC_wt", "BIC", "BIC_wt", "R2", "R2_adjusted", "RMSE", "Sigma") ) }) } performance/tests/testthat/test-r2_mcfadden.R0000644000176200001440000000141314122115675021024 0ustar liggesusersif (requiet("testthat") && requiet("performance") && requiet("MASS")) { options(contrasts = c("contr.treatment", "contr.poly")) data(housing, package = "MASS") model <- polr(Sat ~ Infl + Type + Cont, weights = Freq, data = housing) test_that("r2_mcfadden", { expect_equal( r2_mcfadden(model), structure( list( R2 = c(`McFadden's R2` = 0.0465152150591893), R2_adjusted = c(`adjusted McFadden's R2` = 0.0459671013089695) ), model_type = "Generalized Linear", class = "r2_generic" ), tolerance = 1e-3 ) expect_equal( r2(model), list(R2_Nagelkerke = c(`Nagelkerke's R2` = 0.108408289848161)), tolerance = 1e-3, ignore_attr = TRUE ) }) } performance/tests/testthat/test-model_performance-various.R0000644000176200001440000000416114122115675024032 0ustar liggesusersif (requiet("testthat") && requiet("performance") && requiet("insight") && requiet("AER") && requiet("ordinal") && requiet("betareg")) { data("Affairs", package = "AER") data("GasolineYield") data("wine") data("CigarettesSW") CigarettesSW$rprice <- with(CigarettesSW, price / cpi) CigarettesSW$rincome <- with(CigarettesSW, income / population / cpi) CigarettesSW$tdiff <- with(CigarettesSW, (taxs - tax) / cpi) m1 <- betareg(yield ~ batch + temp, data = GasolineYield) m3 <- clm(rating ~ temp * contact, data = wine) m4 <- clm2(rating ~ temp * contact, data = wine) m5 <- ivreg( log(packs) ~ log(rprice) + log(rincome) | log(rincome) + tdiff + I(tax / cpi), data = CigarettesSW, subset = year == "1995" ) test_that("model_performance various", { expect_equal(model_performance(m1, verbose = FALSE)$R2, 0.9617312, tolerance = 1e-4) expect_equal(model_performance(m3, verbose = FALSE)$R2_Nagelkerke, 0.4042792, tolerance = 1e-4) expect_equal(model_performance(m4, verbose = FALSE)$R2_Nagelkerke, 0.4042792, tolerance = 1e-4) expect_equal(model_performance(m5, verbose = FALSE)$R2, 0.4294224, tolerance = 1e-4) }) } ## DirichletReg is currently orphaned # if (requiet("testthat") && requiet("performance") && requiet("DirichletReg")) { # set.seed(123) # data("ArcticLake") # # ALake <- ArcticLake # ALake$Y <- suppressWarnings(DR_data(ALake[, 1:3])) # # # fit a quadratic Dirichlet regression models ("common") # res1 <- DirichReg(Y ~ depth + I(depth^2), ALake) # # test_that("model_performance (Dirichlet regression)", { # expect_equal( # performance::model_performance(res1), # structure( # list( # AIC = -199.993722776335, # BIC = -185.021667961168, # R2_Nagelkerke = 0.0405982703444639, # RMSE = 0.922951614921502 # ), # class = c( # "performance_model", # "data.frame" # ), # row.names = 1L, # r2 = list(names = "R2_Nagelkerke") # ), # tolerance = 1e-3 # ) # }) # } performance/tests/testthat/test-r2_kullback.R0000644000176200001440000000057614122115675021064 0ustar liggesusersif (requiet("testthat") && requiet("performance")) { test_that("r2_kullback", { model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") expect_equal(r2_kullback(model), c(`Kullback-Leibler R2` = 0.383436177754933), tolerance = 1e-3) expect_equal(r2_kullback(model, adjust = FALSE), c(`Kullback-Leibler R2` = 0.423214488867518), tolerance = 1e-3) }) } performance/tests/testthat/test-test_wald.R0000644000176200001440000000221714122115675020651 0ustar liggesusersif (requiet("testthat") && requiet("performance") && requiet("lavaan") && requiet("lmtest")) { test_that("test_wald - lm", { m1 <- lm(Sepal.Length ~ Petal.Width * Species, data = iris) m2 <- lm(Sepal.Length ~ Petal.Width + Species, data = iris) m3 <- lm(Sepal.Length ~ Petal.Width, data = iris) rez <- test_wald(m1, m2, m3) ref <- as.data.frame(anova(m1, m2, m3)) expect_equal(rez$`F`, ref$`F`) expect_equal(rez$p, ref$`Pr(>F)`) # Reversed m3 <- m1 m1 <- lm(Sepal.Length ~ Petal.Width, data = iris) rez <- test_wald(m1, m2, m3) ref <- as.data.frame(anova(m1, m2, m3)) expect_equal(rez$`F`, ref$`F`) expect_equal(rez$p, ref$`Pr(>F)`) }) test_that("test_wald - glm", { m1 <- glm(vs ~ disp + hp + drat, data = mtcars, family = "binomial") m2 <- glm(vs ~ disp + hp, data = mtcars, family = "binomial") m3 <- glm(vs ~ disp, data = mtcars, family = "binomial") rez <- test_wald(m1, m2, m3) # Why different? # ref <- lmtest::waldtest(m1, m2, m3) # # expect_equal(rez$`F`, ref$`F`) # expect_equal(rez$p, ref$`Pr(>F)`) }) } performance/tests/testthat/helper-requiet.R0000644000176200001440000000022014122115675020631 0ustar liggesusersrequiet <- function(package) { suppressPackageStartupMessages( require(package, warn.conflicts = FALSE, character.only = TRUE) ) } performance/tests/testthat/test-model_performance.lm.R0000644000176200001440000000135014122115675022750 0ustar liggesusersif (requiet("testthat") && requiet("performance")) { test_that("model_performance.lm", { model <- lm(mpg ~ wt + cyl, data = mtcars) expect_equal(model_performance(model)$R2, 0.830, tolerance = 0.01) expect_equal( colnames(model_performance(model)), c("AIC", "BIC", "R2", "R2_adjusted", "RMSE", "Sigma") ) }) test_that("model_performance.glm", { model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") expect_equal(model_performance(model)$R2_Tjur, 0.478, tolerance = 0.01) expect_equal( colnames(model_performance(model)), c( "AIC", "BIC", "R2_Tjur", "RMSE", "Sigma", "Log_loss", "Score_log", "Score_spherical", "PCP" ) ) }) } performance/tests/testthat/test-item_difficulty.R0000644000176200001440000000115614122115675022044 0ustar liggesusersif (requiet("testthat") && requiet("performance")) { test_that("item_difficulty", { data(iris) x <- iris[, 1:4] expect_equal( item_difficulty(x), structure( list( item = c( "Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width" ), difficulty = c(0.74, 0.69, 0.54, 0.48), ideal = c(0.56, 0.61, 0.57, 0.7) ), class = c("item_difficulty", "data.frame"), row.names = c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width") ), tolerance = 1e-3 ) }) } performance/tests/testthat/test-backticks.R0000644000176200001440000000126114122115675020617 0ustar liggesusersif (requiet("testthat") && requiet("performance")) { data(iris) iris$`a m` <- iris$Species iris$`Sepal Width` <- iris$Sepal.Width m1 <- lm(`Sepal Width` ~ Petal.Length + `a m` * log(Sepal.Length), data = iris) m2 <- lm(Sepal.Width ~ Petal.Length + Species * log(Sepal.Length), data = iris) test_that("check_collinearity, backticks", { expect_warning(check_collinearity(m1)) expect_equal(check_collinearity(m1, verbose = FALSE)$Term, c("Petal.Length", "a m", "log(Sepal.Length)", "a m:log(Sepal.Length)")) expect_equal(check_collinearity(m2, verbose = FALSE)$Term, c("Petal.Length", "Species", "log(Sepal.Length)", "Species:log(Sepal.Length)")) }) } performance/tests/testthat/test-test_vuong.R0000644000176200001440000000336114122115675021061 0ustar liggesusersif (requiet("testthat") && requiet("nonnest2") && requiet("lavaan")) { test_that("test_vuong - nested", { m1 <- lm(Sepal.Length ~ Petal.Width * Species, data = iris) m2 <- lm(Sepal.Length ~ Petal.Width + Species, data = iris) m3 <- lm(Sepal.Length ~ Petal.Width, data = iris) rez <- test_vuong(m1, m2, m3) ref <- nonnest2::vuongtest(m1, m2, nested = TRUE) expect_equal(rez[2, "Omega2"], ref$omega) expect_equal(rez[2, "p_Omega2"], ref$p_omega) expect_equal(rez[2, "LR"], ref$LRTstat) expect_equal(rez[2, "p_LR"], ref$p_LRT$A) ref <- nonnest2::vuongtest(m2, m3, nested = TRUE) expect_equal(rez[3, "Omega2"], ref$omega) expect_equal(rez[3, "p_Omega2"], ref$p_omega) expect_equal(rez[3, "LR"], ref$LRTstat) expect_equal(rez[3, "p_LR"], ref$p_LRT$A) }) test_that("test_vuong - nested (reversed)", { # m1 <- lm(mpg ~ wt + cyl, data = mtcars) # m2 <- lm(mpg ~ wt + cyl + gear, data = mtcars) # m3 <- lm(mpg ~ wt + cyl + gear + disp, data = mtcars) }) test_that("test_vuong - non-nested", { m1 <- lm(Sepal.Length ~ Petal.Width, data = iris) m2 <- lm(Sepal.Length ~ Petal.Length, data = iris) m3 <- lm(Sepal.Length ~ Species, data = iris) rez <- test_vuong(m1, m2, m3) ref <- nonnest2::vuongtest(m1, m2) expect_equal(rez[2, "Omega2"], ref$omega) expect_equal(rez[2, "p_Omega2"], ref$p_omega) expect_equal(rez[2, "LR"], ref$LRTstat) expect_equal(rez[2, "p_LR"], ref$p_LRT$B) ref <- nonnest2::vuongtest(m1, m3) expect_equal(rez[3, "Omega2"], ref$omega) expect_equal(rez[3, "p_Omega2"], ref$p_omega) expect_equal(rez[3, "LR"], ref$LRTstat) expect_equal(rez[3, "p_LR"], ref$p_LRT$A) }) } performance/tests/testthat.R0000644000176200001440000000145414077615733015721 0ustar liggesusersif (require("testthat")) { library(performance) if (length(strsplit(packageDescription("performance")$Version, "\\.")[[1]]) > 3) { Sys.setenv("RunAllperformanceTests" = "yes") } else { Sys.setenv("RunAllperformanceTests" = "no") } si <- Sys.info() osx <- tryCatch( { if (!is.null(si["sysname"])) { si["sysname"] == "Darwin" || grepl("^darwin", R.version$os) } else { FALSE } }, error = function(e) { FALSE } ) solaris <- tryCatch( { if (!is.null(si["sysname"])) { grepl("SunOS", si["sysname"], ignore.case = TRUE) } else { FALSE } }, error = function(e) { FALSE } ) if (!osx && !solaris) { test_check("performance") } } performance/R/0000755000176200001440000000000014122547753012766 5ustar liggesusersperformance/R/check_autocorrelation.R0000644000176200001440000000362214037746575017473 0ustar liggesusers#' @title Check model for independence of residuals. #' @name check_autocorrelation #' #' @description Check model for independence of residuals, i.e. for autocorrelation #' of error terms. #' #' @param x A model object. #' @param nsim Number of simulations for the Durbin-Watson-Test. #' @param ... Currently not used. #' #' @return Invisibly returns the p-value of the test statistics. A p-value < 0.05 #' indicates autocorrelated residuals. #' #' @details Performs a Durbin-Watson-Test to check for autocorrelated residuals. #' In case of autocorrelation, robust standard errors return more accurate #' results for the estimates, or maybe a mixed model with error term for the #' cluster groups should be used. #' #' @examples #' m <- lm(mpg ~ wt + cyl + gear + disp, data = mtcars) #' check_autocorrelation(m) #' @export check_autocorrelation <- function(x, ...) { UseMethod("check_autocorrelation") } #' @rdname check_autocorrelation #' @export check_autocorrelation.default <- function(x, nsim = 1000, ...) { .residuals <- stats::residuals(x) n <- length(.residuals) dw <- .durbWats(.residuals) X <- insight::get_modelmatrix(x) mu <- stats::fitted(x) Y <- matrix(sample(.residuals, n * nsim, replace = TRUE), n, nsim) + matrix(mu, n, nsim) E <- stats::residuals(stats::lm(Y ~ X - 1)) DW <- rbind(apply(E, 2, .durbWats)) p <- (sum(dw < DW[1, ])) / nsim p.val <- 2 * (min(p, 1 - p)) if (p.val < 0.05) { insight::print_color(sprintf("Warning: Autocorrelated residuals detected (%s).", insight::format_p(p.val)), "red") } else { insight::print_color(sprintf("OK: Residuals appear to be independent and not autocorrelated (%s).", insight::format_p(p.val)), "green") } invisible(p.val) } .durbWats <- function(.residuals) { n <- length(.residuals) den <- sum(.residuals^2) (sum((.residuals[2:n] - .residuals[1:(n - 1)])^2)) / den } performance/R/residuals.R0000644000176200001440000000027014117453720015075 0ustar liggesusers#' @exportS3Method residuals iv_robust residuals.iv_robust <- function(object, ...) { .factor_to_numeric(insight::get_response(object, verbose = FALSE)) - object$fitted.values } performance/R/performance_hosmer.R0000644000176200001440000000365714077615731017003 0ustar liggesusers#' @title Hosmer-Lemeshow goodness-of-fit test #' @name performance_hosmer #' #' @description Check model quality of logistic regression models. #' #' @param model A `glm`-object with binomial-family. #' @param n_bins Numeric, the number of bins to divide the data. #' #' @return An object of class `hoslem_test` with following values: #' `chisq`, the Hosmer-Lemeshow chi-squared statistic; `df`, degrees #' of freedom and `p.value` the p-value for the goodness-of-fit test. #' #' @details A well-fitting model shows *no* significant difference between #' the model and the observed data, i.e. the reported p-value should be #' greater than 0.05. #' #' @references #' Hosmer, D. W., & Lemeshow, S. (2000). Applied Logistic Regression. Hoboken, #' NJ, USA: John Wiley & Sons, Inc. \doi{10.1002/0471722146} #' #' @examples #' model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") #' performance_hosmer(model) #' @export performance_hosmer <- function(model, n_bins = 10) { if (inherits(model, "merMod")) { insight::check_if_installed("lme4") } # check for valid object class if (!inherits(model, c("glmerMod", "glm"))) { stop("`model` must be an object of class 'glm' or 'glmerMod'.", call. = FALSE) } # mixed models (lme4) if (inherits(model, "glmerMod")) { y <- lme4::getME(model, "y") yhat <- stats::fitted(model) } else { y <- model$y yhat <- stats::fitted(model) } cutyhat <- cut( yhat, breaks = stats::quantile(yhat, probs = seq(0, 1, 1 / n_bins)), include.lowest = TRUE ) obs <- stats::xtabs(cbind(1 - y, y) ~ cutyhat) expect <- stats::xtabs(cbind(1 - yhat, yhat) ~ cutyhat) chisq <- sum((obs - expect)^2 / expect) p.value <- 1 - stats::pchisq(chisq, n_bins - 2) hoslem <- list( chisq = chisq, df = n_bins - 2, p.value = p.value ) class(hoslem) <- c("performance_hosmer", "list") hoslem } performance/R/test_likelihoodratio.R0000644000176200001440000001026714077615732017342 0ustar liggesusers#' @rdname test_performance #' @param estimator Applied when comparing regression models using #' `test_likelihoodratio()`. Corresponds to the different estimators for #' the standard deviation of the errors. If `estimator="OLS"` (default), #' then it uses the same method as `anova(..., test="LRT")` implemented #' in base R, i.e., scaling by n-k (the unbiased OLS estimator) and using this #' estimator under the alternative hypothesis. If `estimator="ML"`, which #' is for instance used by `lrtest(...)` in package \pkg{lmtest}, the #' scaling is done by n (the biased ML estimator) and the estimator under the #' null hypothesis. In moderately large samples, the differences should be #' negligible, but it is possible that OLS would perform slightly better in #' small samples with Gaussian errors. #' @export test_likelihoodratio <- function(..., estimator = "ML") { UseMethod("test_likelihoodratio") } # Should we deprecate this name? And print a warning not to use this name anymore and that we will remove it in future versions? #' @rdname test_performance #' @export performance_lrt <- test_likelihoodratio # Short name for test_likelihoodratio using the test_* naming convention #' @rdname test_performance #' @export test_lrt <- test_likelihoodratio #' @export test_likelihoodratio.default <- function(..., estimator = "ML") { # Attribute class to list objects <- insight::ellipsis_info(..., only_models = TRUE) # Sanity checks (will throw error if non-valid objects) .test_performance_checks(objects) # Replace with names from the global environment object_names <- match.call(expand.dots = FALSE)$`...` names(objects) <- object_names # If a suitable class is found, run the more specific method on it if (inherits(objects, "ListNestedRegressions")) { test_likelihoodratio(objects, estimator = estimator) } else if (inherits(objects, "ListLavaan")) { test_likelihoodratio_ListLavaan(..., objects = objects) # Because lavaanLRT requires the ellipsis } else { stop("The models are not nested models, which is a prerequisite for `test_likelihoodratio()`. See the 'Details' section.") } } #' @export test_likelihoodratio.ListNestedRegressions <- function(objects, estimator = "ML", ...) { dfs <- sapply(objects, insight::get_df, type = "model") # sort by df if (!all(sort(dfs) == dfs) && !all(sort(dfs) == rev(dfs))) { objects <- objects[order(dfs)] dfs <- dfs[order(dfs)] } dfs_diff <- c(NA, diff(dfs)) # lmtest::lrtest() if (tolower(estimator) %in% c("ml", "mle")) { lls <- sapply(objects, insight::get_loglikelihood) chi2 <- abs(c(NA, -2 * diff(lls))) p <- stats::pchisq(chi2, abs(dfs_diff), lower.tail = FALSE) out <- data.frame( df = dfs, df_diff = dfs_diff, Chi2 = chi2, p = p, stringsAsFactors = FALSE ) out <- cbind(.test_performance_init(objects), out) } else { out <- .test_wald(objects, test = "LRT") out$df <- dfs # Replace residual df with model's df } attr(out, "is_nested_increasing") <- attributes(objects)$is_nested_increasing attr(out, "is_nested_decreasing") <- attributes(objects)$is_nested_decreasing class(out) <- c("test_likelihoodratio", "see_test_likelihoodratio", "data.frame") out } test_likelihoodratio_ListLavaan <- function(..., objects = NULL) { insight::check_if_installed("lavaan") # Create data frame with info about model name and class names_types <- data.frame(Model = names(objects), Type = sapply(objects, function(x) class(x)[1]), stringsAsFactors = FALSE) out <- as.data.frame(lavaan::lavTestLRT(..., test = "LRT", model.names = names(objects)), stringsAsFactors = FALSE) # Rename columns colnames(out)[names(out) == "Df"] <- "df" colnames(out)[names(out) == "Df diff"] <- "df_diff" colnames(out)[names(out) == "Chisq"] <- "Chi2" colnames(out)[grepl("^Pr\\(>", names(out))] <- "p" out$Model <- row.names(out) # Bind all data out <- merge(names_types, out[c("Model", "df", "df_diff", "Chi2", "p")], by = "Model") class(out) <- c("test_likelihoodratio", "see_test_likelihoodratio", "data.frame") out } performance/R/item_intercor.R0000644000176200001440000000410514077615731015755 0ustar liggesusers#' @title Mean Inter-Item-Correlation #' @name item_intercor #' #' @description Compute various measures of internal consistencies #' for tests or item-scales of questionnaires. #' #' @param x A matrix as returned by the `cor()`-function, #' or a data frame with items (e.g. from a test or questionnaire). #' @param method Correlation computation method. May be one of #' `"spearman"` (default), `"pearson"` or `"kendall"`. #' You may use initial letter only. #' #' @return The mean inter-item-correlation value for `x`. #' #' @details This function calculates a mean inter-item-correlation, i.e. #' a correlation matrix of `x` will be computed (unless #' `x` is already a matrix as returned by the `cor()`-function) #' and the mean of the sum of all item's correlation values is returned. #' Requires either a data frame or a computed `cor()`-object. #' \cr \cr #' \dQuote{Ideally, the average inter-item correlation for a set of #' items should be between .20 and .40, suggesting that while the #' items are reasonably homogenous, they do contain sufficiently #' unique variance so as to not be isomorphic with each other. #' When values are lower than .20, then the items may not be #' representative of the same content domain. If values are higher than #' .40, the items may be only capturing a small bandwidth of the construct.} #' \cite{(Piedmont 2014)} #' #' @references #' Piedmont RL. 2014. Inter-item Correlations. In: Michalos AC (eds) #' Encyclopedia of Quality of Life and Well-Being Research. Dordrecht: Springer, #' 3303-3304. \doi{10.1007/978-94-007-0753-5_1493} #' #' @examples #' data(mtcars) #' x <- mtcars[, c("cyl", "gear", "carb", "hp")] #' item_intercor(x) #' @export item_intercor <- function(x, method = c("pearson", "spearman", "kendall")) { # Check parameter method <- match.arg(method) # Mean-interitem-corelation if (inherits(x, "matrix")) { corr <- x } else { x <- stats::na.omit(x) corr <- stats::cor(x, method = method) } mean(corr[lower.tri(corr)]) } performance/R/looic.R0000644000176200001440000000372214120136153014204 0ustar liggesusers#' @title LOO-related Indices for Bayesian regressions. #' @name looic #' #' @description Compute LOOIC (leave-one-out cross-validation (LOO) information #' criterion) and ELPD (expected log predictive density) for Bayesian #' regressions. For LOOIC and ELPD, smaller and larger values are respectively #' indicative of a better fit. #' #' @param model A Bayesian regression model. #' @inheritParams model_performance.lm #' #' @return A list with four elements, the ELPD, LOOIC and their standard errors. #' #' @examples #' if (require("rstanarm")) { #' model <- stan_glm(mpg ~ wt + cyl, data = mtcars, chains = 1, iter = 500, refresh = 0) #' looic(model) #' } #' @export looic <- function(model, verbose = TRUE) { insight::check_if_installed("loo") algorithm <- insight::find_algorithm(model) if (algorithm$algorithm != "sampling") { if (verbose) { warning(insight::format_message("`looic()` only available for models fit using the 'sampling' algorithm."), call. = FALSE) } return(NA) } res_loo <- tryCatch( { loo::loo(model) }, error = function(e) { if (inherits(e, c("simpleError", "error"))) { insight::print_color(e$message, "red") cat("\n") } NULL } ) loo_df <- res_loo$estimates if (is.null(loo_df)) { return(NULL) } out <- list( ELPD = loo_df["elpd_loo", "Estimate"], ELPD_SE = loo_df["elpd_loo", "SE"], LOOIC = loo_df["looic", "Estimate"], LOOIC_SE = loo_df["looic", "SE"] ) attr(out, "loo") <- res_loo[c("pointwise", "diagnostics")] # Leave p_loo as I am not sure it is an index of performance structure(class = "looic", out) } #' @export as.data.frame.looic <- function(x, row.names = NULL, ...) { data.frame( ELPD = x$ELPD, ELPD_SE = x$ELPD_SE, LOOIC = x$LOOIC, LOOIC_SE = x$LOOIC_SE, stringsAsFactors = FALSE, row.names = row.names, ... ) } performance/R/check_zeroinflation.R0000644000176200001440000000455114125541071017124 0ustar liggesusers#' @title Check for zero-inflation in count models #' @name check_zeroinflation #' #' @description `check_zeroinflation()` checks whether count models are #' over- or underfitting zeros in the outcome. #' #' @param x Fitted model of class `merMod`, `glmmTMB`, `glm`, #' or `glm.nb` (package \pkg{MASS}). #' @param tolerance The tolerance for the ratio of observed and predicted #' zeros to considered as over- or underfitting zeros. A ratio #' between 1 +/- `tolerance` is considered as OK, while a ratio #' beyond or below this threshold would indicate over- or underfitting. #' #' @return A list with information about the amount of predicted and observed #' zeros in the outcome, as well as the ratio between these two values. #' #' @details If the amount of observed zeros is larger than the amount of #' predicted zeros, the model is underfitting zeros, which indicates a #' zero-inflation in the data. In such cases, it is recommended to use #' negative binomial or zero-inflated models. #' #' @examples #' if (require("glmmTMB")) { #' data(Salamanders) #' m <- glm(count ~ spp + mined, family = poisson, data = Salamanders) #' check_zeroinflation(m) #' } #' @export check_zeroinflation <- function(x, tolerance = .05) { # check if we have poisson model_info <- insight::model_info(x) if (!model_info$is_count) { stop("Model must be from Poisson-family.", call. = FALSE) } # get actual zero of response obs.zero <- sum(insight::get_response(x, verbose = FALSE) == 0) if (obs.zero == 0) { insight::print_color("Model has no observed zeros in the response variable.\n", "red") return(NULL) } # get predictions of outcome mu <- stats::fitted(x) # get overdispersion parameters if (model_info$is_negbin) { if (methods::is(x, "glmmTMB")) { theta <- stats::sigma(x) } else { theta <- x$theta } } else { theta <- NULL } # get predicted zero-counts if (!is.null(theta)) { pred.zero <- round(sum(stats::dnbinom(x = 0, size = theta, mu = mu))) } else { pred.zero <- round(sum(stats::dpois(x = 0, lambda = mu))) } # proportion structure( class = "check_zi", list( predicted.zeros = pred.zero, observed.zeros = obs.zero, ratio = pred.zero / obs.zero, tolerance = tolerance ) ) } performance/R/check_collinearity.R0000644000176200001440000003576114077615727016766 0ustar liggesusers#' @title Check for multicollinearity of model terms #' @name check_collinearity #' #' @description #' #' `check_collinearity()` checks regression models for #' multicollinearity by calculating the variance inflation factor (VIF). #' `multicollinearity()` is an alias for `check_collinearity()`. #' (When printed, VIF are also translated to Tolerance values, where #' `tolerance = 1/vif`.) #' #' @param x A model object (that should at least respond to `vcov()`, #' and if possible, also to `model.matrix()` - however, it also should #' work without `model.matrix()`). #' @param component For models with zero-inflation component, multicollinearity #' can be checked for the conditional model (count component, #' `component = "conditional"` or `component = "count"`), #' zero-inflation component (`component = "zero_inflated"` or #' `component = "zi"`) or both components (`component = "all"`). #' Following model-classes are currently supported: `hurdle`, #' `zeroinfl`, `zerocount`, `MixMod` and `glmmTMB`. #' @param verbose Toggle off warnings or messages. #' @param ... Currently not used. #' #' @return A data frame with three columns: The name of the model term, the #' variance inflation factor and the factor by which the standard error #' is increased due to possible correlation with other terms. #' #' @details #' #' \subsection{Multicollinearity}{ #' Multicollinearity should not be confused with a raw strong correlation #' between predictors. What matters is the association between one or more #' predictor variables, *conditional on the other variables in the #' model*. In a nutshell, multicollinearity means that once you know the #' effect of one predictor, the value of knowing the other predictor is rather #' low. Thus, one of the predictors doesn't help much in terms of better #' understanding the model or predicting the outcome. As a consequence, if #' multicollinearity is a problem, the model seems to suggest that the #' predictors in question don't seems to be reliably associated with the #' outcome (low estimates, high standard errors), although these predictors #' actually are strongly associated with the outcome, i.e. indeed might have #' strong effect (\cite{McElreath 2020, chapter 6.1}). #' \cr \cr #' Multicollinearity might arise when a third, unobserved variable has a causal #' effect on each of the two predictors that are associated with the outcome. #' In such cases, the actual relationship that matters would be the association #' between the unobserved variable and the outcome. #' \cr \cr #' Remember: \dQuote{Pairwise correlations are not the problem. It is the #' conditional associations - not correlations - that matter.} #' (\cite{McElreath 2020, p. 169}) #' } #' #' \subsection{Interpretation of the Variance Inflation Factor}{ #' The variance inflation factor is a measure to analyze the magnitude of #' multicollinearity of model terms. A VIF less than 5 indicates a low #' correlation of that predictor with other predictors. A value between 5 and #' 10 indicates a moderate correlation, while VIF values larger than 10 are a #' sign for high, not tolerable correlation of model predictors (\cite{James #' et al. 2013}). The *Increased SE* column in the output indicates how #' much larger the standard error is due to the association with other #' predictors conditional on the remaining variables in the model. #' } #' #' \subsection{Multicollinearity and Interaction Terms}{ #' If interaction terms are included in a model, high VIF values are expected. #' This portion of multicollinearity among the component terms of an #' interaction is also called "inessential ill-conditioning", which leads to #' inflated VIF values that are typically seen for models with interaction #' terms \cite{(Francoeur 2013)}. #' } #' #' @references #' \itemize{ #' \item Francoeur, R. B. (2013). Could Sequential Residual Centering Resolve #' Low Sensitivity in Moderated Regression? Simulations and Cancer Symptom #' Clusters. Open Journal of Statistics, 03(06), 24–44. #' #' \item James, G., Witten, D., Hastie, T., & Tibshirani, R. (eds.). (2013). #' An introduction to statistical learning: with applications in R. New York: #' Springer. #' #' \item McElreath, R. (2020). Statistical rethinking: A Bayesian course with #' examples in R and Stan. 2nd edition. Chapman and Hall/CRC. #' #' \item Vanhove, J. (2019). Collinearity isn't a disease that needs curing. #' [webpage](https://janhove.github.io/analysis/2019/09/11/collinearity) #' } #' #' @note There is also a [`plot()`-method](https://easystats.github.io/see/articles/performance.html) implemented in the \href{https://easystats.github.io/see/}{\pkg{see}-package}. #' #' @examples #' m <- lm(mpg ~ wt + cyl + gear + disp, data = mtcars) #' check_collinearity(m) #' #' # plot results #' if (require("see")) { #' x <- check_collinearity(m) #' plot(x) #' } #' @export check_collinearity <- function(x, ...) { UseMethod("check_collinearity") } #' @rdname check_collinearity #' @export multicollinearity <- check_collinearity #' @rdname check_collinearity #' @export check_collinearity.default <- function(x, verbose = TRUE, ...) { .check_collinearity(x, component = "conditional", verbose = verbose) } #' @export check_collinearity.afex_aov <- function(x, verbose = TRUE, ...) { if (length(attr(x, "within")) == 0L) { return(check_collinearity(x$lm, verbose = verbose, ...)) } f <- insight::find_formula(x)[[1]] f <- Reduce(paste, deparse(f)) f <- sub("\\+\\s*Error\\(.*\\)$", "", f) f <- stats::as.formula(f) d <- insight::get_data(x, verbose = verbose) is_num <- sapply(d, is.numeric) d[is_num] <- sapply(d[is_num], scale, center = TRUE, scale = FALSE) is_fac <- !is_num contrs <- lapply(is_fac, function(...) stats::contr.sum)[is_fac] if (verbose) { message(insight::format_message("All predictors have been centered (factors with 'contr.sum()', numerics with 'scale()').")) } check_collinearity(suppressWarnings(stats::lm( formula = f, data = d, contrasts = contrs ))) } # mfx models ------------------------------- #' @export check_collinearity.logitor <- function(x, verbose = TRUE, ...) { .check_collinearity(x$fit, component = "conditional", verbose = verbose) } #' @export check_collinearity.logitmfx <- check_collinearity.logitor #' @export check_collinearity.probitmfx <- check_collinearity.logitor #' @export check_collinearity.poissonirr <- check_collinearity.logitor #' @export check_collinearity.poissonmfx <- check_collinearity.logitor #' @export check_collinearity.negbinirr <- check_collinearity.logitor #' @export check_collinearity.negbinmfx <- check_collinearity.logitor #' @export check_collinearity.betaor <- check_collinearity.logitor #' @export check_collinearity.betamfx <- check_collinearity.logitor # zi-models ------------------------------------- #' @rdname check_collinearity #' @export check_collinearity.glmmTMB <- function(x, component = c("all", "conditional", "count", "zi", "zero_inflated"), verbose = TRUE, ...) { component <- match.arg(component) .check_collinearity_zi_model(x, component, verbose = verbose) } #' @export check_collinearity.MixMod <- function(x, component = c("all", "conditional", "count", "zi", "zero_inflated"), verbose = TRUE, ...) { component <- match.arg(component) .check_collinearity_zi_model(x, component, verbose = verbose) } #' @export check_collinearity.hurdle <- function(x, component = c("all", "conditional", "count", "zi", "zero_inflated"), verbose = verbose, ...) { component <- match.arg(component) .check_collinearity_zi_model(x, component, verbose = verbose) } #' @export check_collinearity.zeroinfl <- function(x, component = c("all", "conditional", "count", "zi", "zero_inflated"), verbose = verbose, ...) { component <- match.arg(component) .check_collinearity_zi_model(x, component, verbose = verbose) } #' @export check_collinearity.zerocount <- function(x, component = c("all", "conditional", "count", "zi", "zero_inflated"), verbose = verbose, ...) { component <- match.arg(component) .check_collinearity_zi_model(x, component, verbose = verbose) } .check_collinearity_zi_model <- function(x, component, verbose = TRUE) { if (component == "count") component <- "conditional" if (component == "zi") component <- "zero_inflated" mi <- insight::model_info(x, verbose = FALSE) if (!mi$is_zero_inflated) component <- "conditional" if (component == "all") { cond <- .check_collinearity(x, "conditional", verbose = verbose) zi <- .check_collinearity(x, "zero_inflated", verbose = FALSE) if (is.null(cond) && is.null(zi)) { return(NULL) } if (is.null(cond)) { zi$Component <- "zero inflated" return(zi) } if (is.null(zi)) { cond$Component <- "conditional" return(cond) } cond$Component <- "conditional" zi$Component <- "zero inflated" dat_cond <- attr(cond, "data") dat_zi <- attr(zi, "data") dat <- rbind(cond, zi) attr(dat, "data") <- rbind(dat_cond, dat_zi) dat } else { .check_collinearity(x, component, verbose = verbose) } } .check_collinearity <- function(x, component, verbose = TRUE) { v <- insight::get_varcov(x, component = component, verbose = FALSE) assign <- .term_assignments(x, component, verbose = verbose) # any assignment found? if (is.null(assign)) { if (verbose) { warning(insight::format_message(sprintf("Could not extract model terms for the %s component of the model.", component), call. = FALSE)) } return(NULL) } # we have rank-deficiency here. remove NA columns from assignment if (isTRUE(attributes(v)$rank_deficient) && !is.null(attributes(v)$na_columns_index)) { assign <- assign[-attributes(v)$na_columns_index] if (isTRUE(verbose)) { warning(insight::format_message("Model matrix is rank deficient. VIFs may not be sensible."), call. = FALSE) } } # check for missing intercept if (insight::has_intercept(x)) { v <- v[-1, -1] assign <- assign[-1] } else { if (isTRUE(verbose)) { warning("Model has no intercept. VIFs may not be sensible.", call. = FALSE) } } f <- insight::find_formula(x) if (inherits(x, "mixor")) { terms <- labels(x$terms) } else { terms <- labels(stats::terms(f[[component]])) } if ("instruments" %in% names(f)) { terms <- unique(c(terms, labels(stats::terms(f[["instruments"]])))) } n.terms <- length(terms) if (n.terms < 2) { if (isTRUE(verbose)) { warning(insight::format_message(sprintf("Not enough model terms in the %s part of the model to check for multicollinearity.", component)), call. = FALSE) } return(NULL) } R <- stats::cov2cor(v) detR <- det(R) result <- vector("numeric") na_terms <- vector("numeric") for (term in 1:n.terms) { subs <- which(assign == term) if (length(subs)) { result <- c( result, det(as.matrix(R[subs, subs])) * det(as.matrix(R[-subs, -subs])) / detR ) } else { na_terms <- c(na_terms, term) } } # any terms to remove, due to rank deficiency? if (length(na_terms)) { terms <- terms[-na_terms] } # check for interactions, VIF might be inflated... if (!is.null(insight::find_interactions(x)) && any(result > 10)) { if (isTRUE(verbose)) { warning(insight::format_message("Model has interaction terms. VIFs might be inflated. You may check multicollinearity among predictors of a model without interaction terms."), call. = FALSE) } } structure( class = c("check_collinearity", "see_check_collinearity", "data.frame"), .remove_backticks_from_parameter_names( data.frame( Term = terms, VIF = result, SE_factor = sqrt(result), stringsAsFactors = FALSE ) ), data = .remove_backticks_from_parameter_names( data.frame( Term = terms, VIF = result, SE_factor = sqrt(result), Component = component, stringsAsFactors = FALSE ) ) ) } .term_assignments <- function(x, component, verbose = TRUE) { tryCatch( { if (inherits(x, c("hurdle", "zeroinfl", "zerocount"))) { assign <- switch(component, conditional = attr(insight::get_modelmatrix(x, model = "count"), "assign"), zero_inflated = attr(insight::get_modelmatrix(x, model = "zero"), "assign") ) } else if (inherits(x, "glmmTMB")) { assign <- switch(component, conditional = attr(insight::get_modelmatrix(x), "assign"), zero_inflated = .zi_term_assignment(x, component, verbose = verbose) ) } else if (inherits(x, "MixMod")) { assign <- switch(component, conditional = attr(insight::get_modelmatrix(x, type = "fixed"), "assign"), zero_inflated = attr(insight::get_modelmatrix(x, type = "zi_fixed"), "assign") ) } else { assign <- attr(insight::get_modelmatrix(x), "assign") } if (is.null(assign)) { assign <- .find_term_assignment(x, component, verbose = verbose) } assign }, error = function(e) { .find_term_assignment(x, component, verbose = verbose) } ) } .find_term_assignment <- function(x, component, verbose = TRUE) { pred <- insight::find_predictors(x)[[component]] if (is.null(pred)) { return(NULL) } dat <- insight::get_data(x, verbose = verbose)[, pred, drop = FALSE] parms <- unlist(lapply(1:length(pred), function(i) { p <- pred[i] if (is.factor(dat[[p]])) { ps <- paste0(p, levels(dat[[p]])) names(ps)[1:length(ps)] <- i ps } else { names(p) <- i p } })) as.numeric(names(parms)[match( insight::clean_names(insight::find_parameters(x)[[component]]), parms )]) } .zi_term_assignment <- function(x, component = "zero_inflated", verbose = TRUE) { tryCatch( { rhs <- insight::find_formula(x)[[component]] d <- insight::get_data(x, verbose = verbose) attr(insight::get_modelmatrix(rhs, data = d), "assign") }, error = function(e) { NULL } ) } performance/R/performance_accuracy.R0000644000176200001440000001612214077615731017267 0ustar liggesusers#' @title Accuracy of predictions from model fit #' @name performance_accuracy #' #' @description This function calculates the predictive accuracy of linear #' or logistic regression models. #' #' @param model A linear or logistic regression model. A mixed-effects model is #' also accepted. #' @param k The number of folds for the k-fold cross-validation. #' @param method Character string, indicating whether cross-validation #' (`method = "cv"`) or bootstrapping (`method = "boot"`) is used to #' compute the accuracy values. #' @param n Number of bootstrap-samples. #' @param verbose Toggle warnings. #' #' @return A list with three values: The `Accuracy` of the model #' predictions, i.e. the proportion of accurately predicted values from the #' model, its standard error, `SE`, and the `Method` used to compute #' the accuracy. #' #' @details For linear models, the accuracy is the correlation coefficient #' between the actual and the predicted value of the outcome. For #' logistic regression models, the accuracy corresponds to the #' AUC-value, calculated with the `bayestestR::auc()`-function. #' \cr \cr #' The accuracy is the mean value of multiple correlation resp. #' AUC-values, which are either computed with cross-validation #' or non-parametric bootstrapping (see argument `method`). #' The standard error is the standard deviation of the computed #' correlation resp. AUC-values. #' #' @examples #' model <- lm(mpg ~ wt + cyl, data = mtcars) #' performance_accuracy(model) #' #' model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") #' performance_accuracy(model) #' @export performance_accuracy <- function(model, method = c("cv", "boot"), k = 5, n = 1000, verbose = TRUE) { method <- match.arg(method) # get formula from model fit formula <- stats::formula(model) # get name of response resp.name <- insight::find_response(model) # model data, for cross validation model_data <- insight::get_data(model, verbose = verbose) info <- insight::model_info(model, verbose = verbose) # accuracy for linear models if (info$is_linear) { measure <- "Correlation between observed and predicted" # check if bootstrapping or cross validation is requested if (method == "boot") { # accuracy linear models with bootstrapping bootstr <- replicate(n, sample(nrow(model_data), replace = TRUE), simplify = FALSE) models <- lapply(bootstr, function(.x) { text <- utils::capture.output( model_upd <- stats::update(model, data = model_data[.x, ]) ) # stats::lm(formula, data = model_data[.x, ]) model_upd }) predictions <- mapply(function(.x, .y) { stats::predict(.y, newdata = model_data[.x, ]) }, bootstr, models, SIMPLIFY = FALSE) response <- lapply(bootstr, function(.x) { as.data.frame(model_data[.x, ])[[resp.name]] }) accuracy <- mapply(function(.x, .y) { stats::cor(.x, .y, use = "pairwise.complete.obs") }, predictions, response) } else { # accuracy linear models with cross validation cv <- .crossv_kfold(model_data, k = k) models <- lapply(cv, function(.x) { text <- utils::capture.output( model_upd <- stats::update(model, data = model_data[.x$train, ]) ) model_upd # stats::lm(formula, data = model_data[.x$train, ]) }) predictions <- mapply(function(.x, .y) { stats::predict(.y, newdata = model_data[.x$test, ]) }, cv, models, SIMPLIFY = FALSE) response <- lapply(cv, function(.x) { as.data.frame(model_data[.x$test, ])[[resp.name]] }) accuracy <- mapply(function(.x, .y) { stats::cor(.x, .y, use = "pairwise.complete.obs") }, predictions, response) } } else if (info$is_binomial) { measure <- "Area under Curve" # check if bootstrapping or cross validation is requested if (method == "boot") { # accuracy linear models with bootstrapping bootstr <- replicate(n, sample(nrow(model_data), replace = TRUE), simplify = FALSE) models <- lapply(bootstr, function(.x) { text <- utils::capture.output( model_upd <- stats::update(model, data = model_data[.x, ]) ) # stats::glm(formula, data = model_data[.x, ], family = stats::binomial(link = "logit")) model_upd }) predictions <- mapply(function(.x, .y) { stats::predict(.y, newdata = model_data[.x, ], type = "link") }, bootstr, models, SIMPLIFY = FALSE) response <- lapply(bootstr, function(.x) { .recode_to_zero(as.data.frame(model_data[.x, ])[[resp.name]]) }) accuracy <- mapply(function(.x, .y) { roc <- performance_roc(x = .x, predictions = .y) bayestestR::area_under_curve(roc$Specificity, roc$Sensitivity) }, response, predictions) } else { # accuracy linear models with cross validation cv <- .crossv_kfold(model_data, k = k) models <- lapply(cv, function(.x) { text <- utils::capture.output( model_upd <- stats::update(model, data = model_data[.x$train, ]) ) model_upd # stats::glm(formula, data = model_data[.x$train, ], family = stats::binomial(link = "logit")) }) predictions <- mapply(function(.x, .y) { stats::predict(.y, newdata = model_data[.x$test, ], type = "link") }, cv, models, SIMPLIFY = FALSE) response <- lapply(cv, function(.x) { .recode_to_zero(as.data.frame(model_data[.x$test, ])[[resp.name]]) }) accuracy <- mapply(function(.x, .y) { roc <- performance_roc(x = .x, predictions = .y) bayestestR::area_under_curve(roc$Specificity, roc$Sensitivity) }, response, predictions) } if (anyNA(accuracy)) { m <- ifelse(method == "cv", "cross-validated", "bootstrapped") warning(paste0("Some of the ", m, " samples were not eligible for calculating AUC."), call. = FALSE) } } else { warning(paste0("Models of class '", class(model)[1], "' are not supported."), call. = FALSE) return(NULL) } # return mean value of accuracy structure( class = c("performance_accuracy"), list( Accuracy = mean(accuracy, na.rm = TRUE), SE = stats::sd(accuracy, na.rm = TRUE), Method = measure ) ) } .crossv_kfold <- function(model_data, k = 5) { n <- nrow(model_data) folds <- sample(rep(1:k, length.out = n)) idx <- seq_len(n) fold_idx <- split(idx, folds) fold <- function(test) { list(train = setdiff(idx, test), test = test) } lapply(fold_idx, fold) } #' @export as.data.frame.performance_accuracy <- function(x, row.names = NULL, ...) { data.frame( Accuracy = x$Accuracy, SE = x$SE, Method = x$Method, stringsAsFactors = FALSE, row.names = row.names, ... ) } performance/R/check_model.R0000644000176200001440000002632714107405161015345 0ustar liggesusers#' @title Visual check of model assumptions #' @name check_model #' #' @description #' #' Visual check of model various assumptions (normality of residuals, normality #' of random effects, linear relationship, homogeneity of variance, #' multicollinearity). #' #' @param x A model object. #' @param dot_size,line_size Size of line and dot-geoms. #' @param panel Logical, if `TRUE`, plots are arranged as panels; else, #' single plots for each diagnostic are returned. #' @param check Character vector, indicating which checks for should be performed #' and plotted. May be one or more of #' `"all", "vif", "qq", "normality", "linearity", "ncv", "homogeneity", "outliers", "reqq"`. #' `"reqq"` is a QQ-plot for random effects and only available for mixed #' models. #' `"ncv"` is an alias for `"linearity"`, and checks for non-constant #' variance, i.e. for heteroscedasticity, as well as the linear relationship. #' By default, all possible checks are performed and plotted. #' @param alpha,dot_alpha The alpha level of the confidence bands and dot-geoms. #' Scalar from 0 to 1. #' @param colors Character vector with color codes (hex-format). Must be of #' length 3. First color is usually used for reference lines, second color #' for dots, and third color for outliers or extreme values. #' @param theme String, indicating the name of the plot-theme. Must be in the #' format `"package::theme_name"` (e.g. `"ggplot2::theme_minimal"`). #' @param detrend Should QQ/PP plots be detrended? #' @param verbose Toggle off warnings. #' @param ... Currently not used. #' #' @return The data frame that is used for plotting. #' #' @note This function just prepares the data for plotting. To create the plots, #' \CRANpkg{see} needs to be installed. Furthermore, this function suppresses #' all possible warnings. In case you observe suspicious plots, please refer #' to the dedicated functions (like `check_collinearity()`, #' `check_normality()` etc.) to get informative messages and warnings. #' #' @details For Bayesian models from packages **rstanarm** or **brms**, #' models will be "converted" to their frequentist counterpart, using #' [`bayestestR::bayesian_as_frequentist`](https://easystats.github.io/bayestestR/reference/convert_bayesian_as_frequentist.html). #' A more advanced model-check for Bayesian models will be implemented at a #' later stage. #' #' @section Linearity Assumption: #' The plot **Linearity** checks the assumption of linear relationship. #' However, the spread of dots also indicate possible heteroscedasticity (i.e. #' non-constant variance); hence, the alias `"ncv"` for this plot. #' **Some caution is needed** when interpreting these plots. Although these #' plots are helpful to check model assumptions, they do not necessarily #' indicate so-called "lack of fit", e.g. missed non-linear relationships or #' interactions. Thus, it is always recommended to also look at #' [effect #' plots, including partial residuals](https://strengejacke.github.io/ggeffects/articles/introduction_partial_residuals.html). #' #' @section Residuals for (Generalized) Linear Models: #' Plots that check the normality of residuals (QQ-plot) or the homogeneity of #' variance use standardized Pearson's residuals for generalized linear models, #' and standardized residuals for linear models. The plots for the normality of #' residuals (with overlayed normal curve) and for the linearity assumption use #' the default residuals for `lm` and `glm` (which are deviance #' residuals for `glm`). #' #' @examples #' \dontrun{ #' m <- lm(mpg ~ wt + cyl + gear + disp, data = mtcars) #' check_model(m) #' #' if (require("lme4")) { #' m <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy) #' check_model(m, panel = FALSE) #' } #' #' if (require("rstanarm")) { #' m <- stan_glm(mpg ~ wt + gear, data = mtcars, chains = 2, iter = 200) #' check_model(m) #' } #' } #' @export check_model <- function(x, ...) { UseMethod("check_model") } #' @rdname check_model #' @export check_model.default <- function(x, dot_size = 2, line_size = .8, panel = TRUE, check = "all", alpha = .2, dot_alpha = .8, colors = c("#3aaf85", "#1b6ca8", "#cd201f"), theme = "see::theme_lucid", detrend = FALSE, verbose = TRUE, ...) { # check model formula if (verbose) { insight::formula_ok(x) } minfo <- insight::model_info(x, verbose = FALSE) if (minfo$is_bayesian) { ca <- suppressWarnings(.check_assumptions_stan(x)) } else if (minfo$is_linear) { ca <- suppressWarnings(.check_assumptions_linear(x, minfo)) } else { ca <- suppressWarnings(.check_assumptions_glm(x, minfo)) } # else { # stop(paste0("`check_assumptions()` not implemented for models of class '", class(x)[1], "' yet."), call. = FALSE) # } attr(ca, "panel") <- panel attr(ca, "dot_size") <- dot_size attr(ca, "line_size") <- line_size attr(ca, "check") <- check attr(ca, "alpha") <- alpha attr(ca, "dot_alpha") <- dot_alpha attr(ca, "detrend") <- detrend attr(ca, "colors") <- colors attr(ca, "theme") <- theme ca } ## TODO for now, convert to freq, see https://github.com/easystats/performance/issues/354 ## need to fix this later #' @export check_model.stanreg <- function(x, dot_size = 2, line_size = .8, panel = TRUE, check = "all", alpha = .2, dot_alpha = .8, colors = c("#3aaf85", "#1b6ca8", "#cd201f"), theme = "see::theme_lucid", detrend = FALSE, verbose = TRUE, ...) { check_model(bayestestR::bayesian_as_frequentist(x), dot_size = dot_size, line_size = line_size, panel = panel, check = check, alpha = alpha, dot_alpha = dot_alpha, colors = colors, theme = theme, detrend = detrend, verbose = verbose, ...) } #' @export check_model.brmsfit <- check_model.stanreg #' @export check_model.model_fit <- function(x, dot_size = 2, line_size = .8, panel = TRUE, check = "all", alpha = .2, dot_alpha = .8, colors = c("#3aaf85", "#1b6ca8", "#cd201f"), theme = "see::theme_lucid", detrend = FALSE, verbose = TRUE, ...) { check_model( x$fit, dot_size = dot_size, line_size = line_size, panel = panel, check = check, alpha = alpha, dot_alpha = dot_alpha, colors = colors, theme = theme, detrend = detrend, verbose = verbose, ... ) } # helper ------------------------ .check_assumptions_linear <- function(model, model_info) { dat <- list() dat$VIF <- .diag_vif(model) dat$QQ <- .diag_qq(model) dat$REQQ <- .diag_reqq(model, level = .95, model_info = model_info) dat$NORM <- .diag_norm(model) dat$NCV <- .diag_ncv(model) dat$HOMOGENEITY <- .diag_homogeneity(model) dat$OUTLIERS <- check_outliers(model, method = "cook") if (!is.null(dat$OUTLIERS)) { threshold <- attributes(dat$OUTLIERS)$threshold$cook } else { threshold <- NULL } dat$INFLUENTIAL <- .influential_obs(model, threshold = threshold) dat <- .compact_list(dat) class(dat) <- c("check_model", "see_check_model") dat } .check_assumptions_glm <- function(model, model_info) { dat <- list() dat$VIF <- .diag_vif(model) dat$QQ <- .diag_qq(model) dat$HOMOGENEITY <- .diag_homogeneity(model) dat$REQQ <- .diag_reqq(model, level = .95, model_info = model_info) dat$OUTLIERS <- check_outliers(model, method = "cook") if (!is.null(dat$OUTLIERS)) { threshold <- attributes(dat$OUTLIERS)$threshold$cook } else { threshold <- NULL } dat$INFLUENTIAL <- .influential_obs(model, threshold = threshold) dat <- .compact_list(dat) class(dat) <- c("check_model", "see_check_model") dat } .check_assumptions_stan <- function(model) { if (inherits(model, "brmsfit")) { # check if brms can be loaded if (!requireNamespace("brms", quietly = TRUE)) { stop("Package `brms` needs to be loaded first!", call. = FALSE) } # check if prior sample are available d2 <- brms::prior_samples(model) if (is.null(d2)) { stop("No prior-samples found. Please use option `sample_prior = TRUE` when fitting the model.", call. = FALSE) } d1 <- brms::posterior_samples(model) # get samples from posterior and prior d1 <- d1[, grepl(pattern = "(b_|bs_|bsp_|bcs_)(?!(Intercept|zi_Intercept))(.*)", colnames(d1), perl = TRUE)] d2 <- d2[, grepl(pattern = "(b_|bs_|bsp_|bcs_)(?!(Intercept|zi_Intercept))(.*)", colnames(d2), perl = TRUE)] } else if (inherits(model, c("stanreg", "stanfit"))) { # check if rstanarm can be loaded if (!requireNamespace("rstanarm", quietly = TRUE)) { stop("Package `rstanarm` needs to be loaded first!", call. = FALSE) } # get samples from posterior and prior prior <- suppressWarnings( stats::update( model, prior_PD = TRUE, refresh = -1, iter = 2000, chains = 2 ) ) d1 <- as.data.frame(model) d2 <- as.data.frame(prior) # remove intercept from output for ridgeline plot. # this would increase the range of the scale too much if (.obj_has_name(d1, "(Intercept)")) { d1 <- .remove_column(d1, "(Intercept)") } if (.obj_has_name(d2, "(Intercept)")) { d2 <- .remove_column(d2, "(Intercept)") } if (.obj_has_name(d1, "sigma")) { d1 <- .remove_column(d1, "sigma") } if (.obj_has_name(d2, "sigma")) { d2 <- .remove_column(d2, "sigma") } d1 <- d1[, grepl(pattern = "^(?!(b\\[\\(Intercept\\)|Sigma\\[))(.*)", colnames(d1), perl = TRUE)] d2 <- d2[, grepl(pattern = "^(?!(b\\[\\(Intercept\\)|Sigma\\[))(.*)", colnames(d2), perl = TRUE)] } # grouping variable d1$group <- "Posterior" d2$group <- "Prior" gather.cols <- colnames(d1)[1:(ncol(d1) - 1)] dat <- stats::reshape( rbind(d1, d2), idvar = "id", times = gather.cols, timevar = "y", v.names = "x", varying = gather.cols, direction = "long" ) class(dat) <- c("check_model", "see_check_model", "data.frame") dat } performance/R/check_normality.R0000644000176200001440000001232014077615727016270 0ustar liggesusers#' @title Check model for (non-)normality of residuals. #' @name check_normality #' #' @description Check model for (non-)normality of residuals. #' #' @param x A model object. #' @param effects Should normality for residuals (`"fixed"`) or random #' effects (`"random"`) be tested? Only applies to mixed-effects models. #' May be abbreviated. #' @param ... Currently not used. #' #' @return Invisibly returns the p-value of the test statistics. A p-value #' < 0.05 indicates a significant deviation from normal distribution #' #' @note For mixed-effects models, studentized residuals, and *not* #' standardized residuals, are used for the test. There is also a #' [`plot()`-method](https://easystats.github.io/see/articles/performance.html) #' implemented in the #' \href{https://easystats.github.io/see/}{\pkg{see}-package}. #' #' @details `check_normality()` calls `stats::shapiro.test` #' and checks the standardized residuals (or Studentized residuals for mixed #' models) for normal distribution. Note that this formal test almost always #' yields significant results for the distribution of residuals and visual #' inspection (e.g. Q-Q plots) are preferable. #' #' @examples #' m <<- lm(mpg ~ wt + cyl + gear + disp, data = mtcars) #' check_normality(m) #' #' # plot results #' if (require("see")) { #' x <- check_normality(m) #' plot(x) #' } #' \dontrun{ #' # QQ-plot #' plot(check_normality(m), type = "qq") #' #' # PP-plot #' plot(check_normality(m), type = "pp") #' } #' @export check_normality <- function(x, ...) { UseMethod("check_normality") } #' @export check_normality.default <- function(x, ...) { # valid model? if (!insight::model_info(x)$is_linear) { message(insight::format_message("Checking normality of residuals is only useful an appropriate assumption for linear models.")) return(NULL) } # check for normality of residuals p.val <- .check_normality(stats::rstandard(x), x) attr(p.val, "data") <- x attr(p.val, "object_name") <- .safe_deparse(substitute(x)) attr(p.val, "effects") <- "fixed" class(p.val) <- unique(c("check_normality", "see_check_normality", class(p.val))) invisible(p.val) } # mixed models --------------------- #' @rdname check_normality #' @export check_normality.merMod <- function(x, effects = c("fixed", "random"), ...) { # args effects <- match.arg(effects) info <- insight::model_info(x) # valid model? if (!info$is_linear) { message(insight::format_message("Checking normality of residuals is only useful an appropriate assumption for linear models.")) return(NULL) } if (effects == "random") { insight::check_if_installed("lme4") re <- tryCatch( { if (inherits(x, "glmmTMB")) { var_attr <- "condVar" .collapse_cond(lme4::ranef(x, condVar = TRUE)) } else { var_attr <- "postVar" lme4::ranef(x, condVar = TRUE) } }, error = function(e) { return(NULL) } ) p.val <- c() re_len <- max(nchar(unlist(lapply(re, colnames)))) if (!is.null(re)) { for (i in names(re)) { insight::print_color(sprintf("Group: %s\n", i), "blue") for (j in colnames(re[[i]])) { cat(sprintf("%*s ", re_len, j)) p.val <- c(p.val, .check_normality(re[[i]][[j]], x, "random effects")) } cat("\n") } attr(p.val, "re_qq") <- .diag_reqq(x, level = .95, model_info = info) } } else { # check for normality of residuals p.val <- .check_normality(stats::rstudent(x), x) } attr(p.val, "data") <- x attr(p.val, "object_name") <- .safe_deparse(substitute(x)) attr(p.val, "effects") <- effects class(p.val) <- unique(c("check_normality", "see_check_normality", class(p.val))) invisible(p.val) } #' @export check_normality.glmmTMB <- check_normality.merMod #' @export check_normality.lmerModLmerTest <- check_normality.merMod #' @export check_normality.afex_aov <- function(x, ...) { r <- suppressMessages(stats::residuals(x, append = FALSE)) p.val <- .check_normality(r, x) attr(p.val, "data") <- x attr(p.val, "object_name") <- .safe_deparse(substitute(x)) class(p.val) <- unique(c("check_normality", "see_check_normality", class(p.val))) invisible(p.val) } # helper --------------------- .check_normality <- function(x, model, type = "residuals") { ts <- tryCatch( { if (length(x) >= 5000) { suppressWarnings(stats::ks.test(x, y = "pnorm", alternative = "two.sided")) } else { stats::shapiro.test(x) } }, error = function(e) { NULL } ) if (is.null(ts)) { insight::print_color(sprintf("'check_normality()' does not support models of class '%s'.\n", class(model)[1]), "red") return(NULL) } # format p-value p.val <- ts$p.value pstring <- insight::format_p(p.val) if (p.val < 0.05) { insight::print_color(sprintf("Warning: Non-normality of %s detected (%s).\n", type, pstring), "red") } else { insight::print_color(sprintf("OK: %s appear as normally distributed (%s).\n", type, pstring), "green") } p.val } performance/R/sysdata.rda0000644000176200001440000256514013707361505015140 0ustar liggesusersBZh91AY&SYq-(@0@@DJ( @(EIPP) P( QT(I * P $I" T H*`0 RP (!UU@HH)J*U*IH*(AE*E(JUTBRRRA$*QRE*@*(@H(UP"TI`  P,@ OD*`GVJ QB:JB 9PPPPUP@RM4P(R@PhPP*  (EDHJ Rӈ:UR( T YDI$EP* P(J%$@֪P(@ geUT!Q)E PPS*U JRTR(ADR M* $AJ  T )@2;Q" P@ P}@*P* PP( *U*UU@P!F~zOJz7fzzjf~)zF&# M5=OSMM= 4@&S==S@dO?TS=SO?T=5?SOTUTSS*4 CM M4COڠ@2=M44@iH!jzQ3 $h&hcA4 # L&FFG'Ꞁ4`@$DI4)T= 4 @@)JRDL=0ODd=@& i 4bz#42`2zAG@&CFzzꪪLFBҞI)䞄jhiGhQڀhz@ j ڙP@h?@UU?d>v3}GϰyAyG?ßo?ŧצ=_[$ze*c.f397ן{>h -gɤ445&՚Zk^G1썙퍹ܒG$>xJowCؒN"qe03Sd>P)Di))j*j$K$̴-KbNapsNqtzW TX/z2vs:B_w/!;?.g19K. QN... \p\GL-bQS(,`QKkkbضkliAAEQEEDQQDQEAAEEAAAA@PEE-N[[ZhZZ%b-N(( (((([[Z%Z%ZZ$C=QED("((("(((((?닎a9g2CNjsS̷-d3Øs {{{{9p<>Gz'DE!ÆC.R.B;L3t}0_%x^^%x^x^x^%s[j__Z2ookkjZeggfafYvvififvvvvvvvvifhhvpZj4oonoooon[[n[ ![n[[ۖ[[nY- Cr"ȈwKK䴴- Bд- KK` dKdKbضKdEQ@PQEEAADAAAE/. .sw;.QQEPPPPQEDQK q/]+K.K/ȱ`H0`R"DEAPTEeYdYY,"Ȳ,,,,,,, Ȳ, <뮺<Ȳ, Ȳ,Ȳ,,,"Ȳ,"Ȳ,~_# 1~_, ,(,(2 , 2,( ~_~4~ m66 h뮺:::<І2 Ca !8pHi C2 !0d2}}|__!|}}|_|||_|}}|_#<mh6h6 룣::::::#:::먎:뮶ccmmmm66CCCDR(6 `m@4 4M@4+踸닋., ,, ,, ,, ,*`!   H$0P A R*E"*Ŋ0뮸. 닋 닋 .. .0#00 00 , (/, 2 44>888㏏::::8>뮎:뮃뮠:886 >88##8#8:::88888888M44444#CCCCM444CC66CCM4#@444,,,M4#H4,#"00........ 뮺.......00000.., ,,,,,,"Ȳ>>,",,,">>00000 0 0 뮺.뮺,","***** >.닋 뮺...,,0,(,,,(2Ȍ, 00 > 4 #HM @6 ؍o888#8#㏾뮃88: !8##8 8#8o4@44Om>#6m6h6`6 hmhmhM 4M #H4#H4 44 @4@M44 #HM 42 2(2 (2 4 H4 ,,##,M HM4444CDQ"66`6mh6 h"R(bÇ C!!C C C!C4"d4Ç hC!:뮸8`6h6`6h>::::886 2 222,00# 000# 0 >>2 ,##,(22222(2(2##(>>442,##,20#,2 00 0 0 0뮺..  BA 0` **,**H$ AH) R AH) H$` 򪼏"<#<00 0 0 0....,,,Ȳ,"**, ,, "uN:^%^%yyyyyyyx^x^%^^xx=xx^x"uQuN^%^%:gM:it}3tӦ%r)r)ssr)r#<%^]v]ݾ>A BA B**B ]ݥvivavev]]ݗeh]ev]ݥ]]]qR*AH)A H0` ` P *H,,, ","Ȳ,-...뮋H0#000XF``F)EmF{!;!HEevA;Ghv]ovB!A!P$!:tGPtuuuGAu{aA!B|PBP$B!$$B!B B!$"BHD"BNv'i;); Nc,(,,Ӯt\s:\:_cT ,",,,,*>iv]GH!sy9zsӘsa-ܷ-r-RԵ-K2,2}[GmmmmKRNW+o\>GW^]X?nvDީW.b,Jǥ40)*ej7S!}w\.qqy9ikE^bTGOFrZ2ԩeL)__yRgݼj4*̯7GݏMX)];eGq/J7H:)Z  9ҞlNrUk-.Q"I]U秼{\H6Յz hl:4 Wds[^~9tX]7p]C0 sƃˮrOCd8yv<2ǯWU1z6Q dyW~:o;og)eKI-ed f/h5=E2ɇ:F"w+&y댗Gt7B;8 !^3a2  kFMw列WmWU;KE=Cxb%1F"#<*ڌN/I.2e_5y[NJQDˌ{tqXS1-Y{-ǼL5#Na y&@SbNKP]qʓOfx'"Xruc_M܌cJ8~K2 w/b5ژSR2+`1+7].5/qV([2۵ dCxh3@䘎hd-pfR"%.(7kJٲՖge:_x6 c7"C`)J2oGgFS̚-5ޢ"Nn,.)H^]ǗP|ګCi=fЋטTwK)Sv*C!ܐ+wrA"[ Z9fLFb({>fO'힁`YK`TO*ﻺ\{~&$i]4U "W2D.a8Mٱ?/47ZYܫvg7.o% &Ā`|ݱk9B9!us ' K!tgi½u<^dvyQK S gynNʊa!I#.ٲبvĒXV7X۽zj; |>v/iߟ:O#܉e0N.zeʶ$1 TՊ3M]"7n?ϊdibJLeC#;IY}w_{# ^TR⶜ oC{}We5\gK`yAaVk Q<بWk#4{n(O¿,dus+E&g/E7dkKff\hh]jh.?24ӻӱQǖJNYiUk h!͉RrhԼNx=#}>w&E Z8l;mWzm,j\Z>V0,Uэ Y7>SX6Eªj(:û#aZ9 (9@ j {e%as{"پh6Дkn MR~rL͂EUUH=xaNUQh/jJhH joϽ!:Ac}PV_.;mF\s8'FHӺ3K)CG0𸉪b^ʬu5F|nr (Lvٺ@QSSe%4h%ojZ bhzf%tcm<6E1^υox᧔Ώ] $گ^[Z啕I])b/+#sRU(y6XF{X)2bD^UPYLsE*d-F؅ڭiu|kCtmwLaLFiӎnQIf!ɂFΛd'GhmHh!CBVW^RDD+-=YnKͫ;7YjF4eIyUOb}s)|B,N=H7+Y?_4KeϽI leyNQ~gS_3`\Ǽ.!D|vN\DnD=_7Ӌm"br;&Uɩiw[{g9L)UIJG0u;;>ۛiǠ&mJPeѹ.odM˞wtAzKKs^.X]*9F2Db0)0N,{FxQuS5K\,bb=m.U"ˬsR_u͑z}ɷ충 lDQQSZ'8R&^Ʉ 0.YQf gc+ ez3NF2*CGmqҭ $MvX$D5{PŵM/fw4PMCηیoV5v*dfn_N"#R7'7̛mQ0a⧔%\$eh^ed5+Z?TB*k#K ru./یxXwņjWi @.SEo;P!9zD SyMG{+pY/%mRr1|V9={Թy!Y^snT1|% 6Sɴ ~+%M#$+g%sZ8Hɒ6lJP pe7&u'CTI@KKds8$~uM#e"#ZKōZdmkr)(B_m]0,{5|kڻz;% Y/uwp~,lY8T/5-y7bIu32A2ICdN*2<}[o/GEExՍDza)1ND L~G@I܋啔UU,a'Tb W$g ron )4%8vSL^gI2ܻy%Dn%*Jѱ[I-pʲC4W3|9<Md enbCLˢv҉%G.hPR,%:xXj1Mܝי␓=tfV΅(A 911 .lIՀ덢QN޲֎UVhSj~ Oi{[z^䦨);pS"ݡ@P%d݊I"vJABE"+$ĝ^\2 MyɌ;v=0ur&7̹|7f>Ryo9*>5ʟAxS ޚyCu>p9N}!(G0Sv9-Jb1j0YFt)y`nFxmPa)Tm^ќ׋Nю|5@:β 6@rm#vicGyӬ*v_.cO?Pטچ 5[1!i*G TuO0h'khɨnOGisGSVϷWqQRQͨJY\k4l1 MåB]Ұ4yuf6e_UˮOXE.ľ2ݴq%toL?9FivQq v;զ5iz^][5W5e֚n[/˩u:uEEUjB滫Ս#GHUUMUUU7;nSrܛ E>E9\RrRRȲ,",%} T/0Kco XIǑ||yGo666k;=gOOv;ؚ^k~_55k5NRAMJ*ܥ\5"ju?!a:Ey`FFFFWՕfIt:àt:i i4M&IsMr2222:.ht4ty BOI$CCCG|_:E3w;NL&w:w3ycfnnnnng}>O4 B4: :}:JHsHii##:Jjm2iMbQj(Z2w(3[֦(J~ZkN#R5#Hvwt8}O))(3lmbn:L?PT?O~Go[[[[}_QCJJVҁ(Ғ(W}]N(}?O֕BHI))|j}7ĢJ$J'Su:p8uN8(WjZ_}^W8}9s9c}?L(\Ӛ}G}?\:!"H$C 98Cw$蓓yo7iK{nL.vnY2;99999999990 99 ))))).J=$Kyo7ˢ.7Fۻ*EN u ZZ!TTTTTT&QTIĜ'UzyfeQRffd/&f`&ɹ?nqqŻ.ɹBvvvv |ↆVUU) B))(!Yj'I؄B|'gVZt'ggggggIab~~vue}Z}'t'Bffq?p\/֚%y~'ZYe]&qqqrzzzzzzzzzyu((( '奘c'8aYX8\&YeQ%iiifFIyvY}%yxj^^^^ZZX%bZZX8\&YITpeb$Dpkibbbbbbbb&`8KY&ɹddI'IН Il&ɲl&ɹ d&Iי&EEIQT&EGX tXXUUU't&IdIUYAP!TT&ɴEEIٹ&IPTVvvvutYaaeZ(Œ(Jvug^'gf'IvuyG ** q'ɤIyyr\pp& `Ixxypxx'x'xqĢ(*'@ ]u)i\)œ)y*jjjjjirf)QeZZZZR **"]u  @XX)GߥJTJD\\)b\\* bYjdXX'!9A+kVZ+⸮+ŮJ䮮E**"Ū*)b)jjjjjjB))jjbJD(:::7y::2J4dd)Y) FjjJF) JJ:;hhiJKbmJ @m* jg* r)tJr||)GH*ʲ*Ҭ*ʲ8p ­*Ҥ*j`@@!å@ pujjjR*jjPBG*ҭ*Ҧ$Jr}zv۩Jtir "(hh@j)ibDi*JiFĬJ ʺQJteJ@@P @A@TTEAA======ceŠ(h67l[̣%ZZjZAd65y^__"W}'91"rSЭ ЭJѱJҶ'$䜓[Z[[[[Ȫ*JiwbŮJy^¸xXl5D}8ƅEh+;_dm8㰌INhM=%y&#!&,MPc9Rb!%c\k۩ 5"j *QI0oZrϲ.&vlRZ<ݐ@ee#.#6&U3GW'3k#{2L{3kVL%JG&)|Ra;e1ɼ'\^3Wz^ $ Dѭi^< tO9hN ,_ќUFr+DxXWO\Ǘ<®{`٢wJ[\v:Щ+e7{ZnelHdˤLbRkϪz콸 .؄ѐѴǐqH`Di(H[ ڗM_97Ԍ|ٌbP \0fybI51 _uךT:>{q6KK{U>P'~CUWlՙ(39sU\e Kۈr7 'NF֓Jn)^eIG {bz#OME46K'#*HjއWh۵;Y"#(ʏ s ӧP.1[Q6Bٹu](I`\Ul33f NVr2 [ޥ+i~d ,$Bl3Y?]xsS~[qҟJ<$"=pلADU'B=5ż8(be|I6:V+0}EAl0=3_o܅qfX`W(1f-PFZyE^;f{W0axQ&4H_Ep]%lҕ;Ar>?Dby̙%G- exw-?v36Q㗭GWKSulBn@bf=jϥ{aMSΖQt6plԎre4UuɪIznѹh֖|TrtșL靎л$1c.R`bͻ^3*_VuA9zU"㲟 yA(mœ zX_ vpkо&CJ >uVyҸ0x; rN*T=sp'f@=DK-e_WVY&_6桼y fgq넩z{TtB-Υ%Iu2HSg [jfBRǼi $o*%,Է4ePCarNDྵlf1{ s).ovxwpޒZk2neT-Wouy9toxb]$|[a]&S~G OnStچ*vg&|T^BrP6Bەk*9VSfy!aRS),O\ e&8N+ $}˱s~I(\U4EpK8q `͔ NY&Jvθ'rt@6(RZ4l4N*i@\wR4Bd26YgvfY9n.E~;~T64)+gw]ut6M`I'cӜkۨCbw ʷÊfZ!zX[YyꚘd2>v=aPBB39D">!B> :: s8g]w񠠅 t H?) CNt4=KiZ*:9xv͙7 p\ s;nKͲ}OS7v;c1xV*/y8fqWVmVV4M}C c `eYn[mel6 adr9 WEE_@ju4AAf]5?NZkyoLLkqM{~݅ KK0ǻؖ&Tʓ69|{q8{y{}k{ǼelP{G\O'YYd2N#myU$Dț]C!VUuj)YYAA{}m?޶-ki >>?+o<_-oۑ$IDW^ji&dנA3>?4ı4z>w;{XX/>qr%ISeeifUuOPPk>_MM|5GǑo55NV6662 g5ƹ5ɮ5ƻ];ƳYeeeeeedI10u9Nk5ԧ@'ȪSJiM)ҔџT]|? ? gg ㋯OOl[)iiiZk3g3pep9eg2fO|ɉy|f\%qE3OQLqEQUs9ws9_~>zoL4~8Fʫ\q!p\].G--!----Mq8=|N%ӚSJw].KҪӚ};ԚL.X$L$ʼnbk5Xk54M%X%`..w GQQQXo6ka`QyOO߼IRGquo<Օ}aX4;}} H=") Hx2`Xt]rrd%$2A$RRRR)"62yww!! H}jii6v]kee6HHHHHHHHHHrv6;6;-6dY%Mn7ªX7 n[ͅnM 8{&qmmqnpehnw;rCYr|[ iiiiih[mim6Mm6Fd }M(HH($"((IIIIII__HȒ$y\p((.$IIID$.H$II(n{v7i{wcwl;;7䒒$2̳I$r"D"O A Hr[ۥED"ql6jQjZGd-E|_n5fYд/KT4:[[[]uhCl23D~4iZ|'/4/u:J//dYdXVU}}Eaaaaخb3fl͙6gRcv0%m͹EEDI@Pϓ$II:&I P@tnsu[uHHB##H"u]k6fc~4 a:|ڳV@5O>[FPj bVUj5FI"R4 ll_~Njb{L{r. ߕ`px fjyPii!%ߍ`7\=^뺙.wY& )Fl8sf&Ph+\.EL]85tNz[ xS<|g8#qбxw' =LV1$:}> To|8 (Rae|rgJ0X`=73,_RcjAv_vy.c)YGcwa!d_`&4UyGԀhKx1T==|N6CiL9=]Ɨusa('MzjD.;;nvPYV8Q.%ةNg jbj S@gf-:{^|y^e.=ҏfsd$yr{Paz_HICA*mY,0,Wm7-zxТ}\{T{8"q+(eH kXy^}UP;j.Ѯd7L.qvk!EKXw'8hkz(xkkf4.NbgCm$A3wxsIt鬗\ۘthd$*/K:!`xGbm(慩T{mvMP\F^) 3%T+LwQW^+뗹ACHB)X{-ZѰYxSW&<#̛=";%)i,c )W S龆%mCEŖ1RjY.eremMeᾭ/TÎuR[+$xtMog<-wfdܷo\l«gĠ:ԓ]5$+%{gqWGEIO@๋yK ё3tr&ݱzuf%LQVFb#RDbKx8ԅd'5eָhzLBJ2.bQdXI`)g 2]sKIvI}Mk^=6Fho3WD28!bIˮk~k|$niD,*m:Q0{^Ú5z/;̌_ q>fopXU:P%eFNЦC<NLʏ܌$H[*׋أ( 9g1d88sV] Eѻx'3JL$Cd9BWļgY"Võ#sdRU o^<Q.i#%L$/˱IrzKV-64^Y0j臘jfp9!&1::,/TM[2bfzpn6 4%M(F~lI:!XKyh@G&(w~wt@[6$fx\c=KZ ZYXT=EvlϹO!`l)Zm.ѢJW"̤\"`>O>t$ I4/YNc\&cZpSgVʐKt-cǤz0hlu*U^411A1ė!摬 ݭ,}Dc*ijn !êLsgNc.2xBҎtu۸ВHWGDy7MTUzQM4Z\J-Fxz W;ɌȸK{qWFnMS$YґUfY{eaQMXǫjs9QTrQX~^~(nQ.hz^ ЙGu> q^.K%++_z?W}cZ^Uj1^@{{b A{{{{|^_{y7?6M_wӓ8mmrp`n/;w*uw~uv?UUUd]7~XN1Øs9חr>Y_++++w{N?l6«f,ꎆ[-c1597ecql3??oo??c1m6i}S3جV+tXVUK~_mi??}}[[:>֓ICCFF2,{.M&Ǥ?OQq4i1=?Oo:n7c@Ƙ~EYlv;c8Ym=E#>23r FeM% FRS%}#NgqeM˳e R::RRRSqMn0ǹn7LS(2y,|:d[.#cr C!^,tw➱^.?qz׷ |z޴qtNQ޷Wĉg >ͦӛaB zX^ ~?d5iN#ș[oorY,2Y,K>ÕuF>Ǟ? O&dܞO'>fgr'grXufc)e.nrH[(e 7l[v͆ÍM;glm8^?1f=||u;k0f7u8f4f3jRS4f?|os9dYV\ tQGZAcconx\(%IS7pii{stjjs۫1818o\r[ Y^G#/2\syʶ6er62\TʜD#?++p\."g3Vf5t3ޱ%IYY]CК?~.Cws7t3BhwEo9o7=t z@h3_vs{k1f7XUUU^{]Ϯzm _߃9F'l#9[霹.;jԬƃ*49ϛ[3/Gyŭ;JMz/"h  ΉK tԾK *j7퍓]ۗcʤ|Ke/+ xk7ٙMZJQm`V-*6i*KJr"67#&) Xϖ'}d< Cf|WoCҸ:f,o*t+N鶟<1B~{rw/M&}%ӊ>\a=BLnJ3.$zinI+=$9d Fs;A leP0ъ.KQ)#ׇ6pde'̋i$(vI6M"s)wt|b4(>f$%{x5C{/\EA=(ꐓތy̩u3踊˿fg9- w^%iQ1f YC7NO%jiU]h1չYg'7e͆LbU+MOb Zn rĶ lF6~lV땳xAJDZr<1; ZV&11ܕclxr7B? gDc`ϊÓH2U K8lzn!k!Sፈ(YTq婺}z{TRmrC;5IaST1`U`#^6[˜ϐ=mp!Vf>^:l;N*a˩ 0 3O1yn W憒eAd/e^H<Qjdg|lzv=p<p!-.Zsc e$SLT~q:/c10Շ ,%vxlO1M!%$=\m4:vvTLUr2fL>>'|xxxxxo xo9x|:ܾ_f66 sx|>RSsO'|.O}oOwmޯ A~skul?o7hZ9L6[m \~mAAPmӜ"|<|\sq^.|ϕ2: mom6gQQ^ŋ[[.'1Cq|;ș{[__YmNfVWtIZZk7{ߕOq?;_Ks$dddz yv~wʊW1F+:`q2.glxF`[-|q>oynzf#yrxDmtgRRW7ZM%}dU53Tɒd'99IJҪuhe#crk+(V1mJoe%5O&67y?~>i:8O7%QLDMLKx xm)Og[ܬg=ŤղkתdzpX@S{D{(޻ 6^S?3ybc?bR;DRv㻔ZBwjsVEp)\(P)'Ar7 !. nr*R LsnͶzl LgkTN}KVO~l{G.8#Ɖ4|o=$Gp&f}@vftА^p(y+˃.CW4JO(Cr d9} <~APy-M^ԗwߣ V9L?rUo۹KM >tSt7? z᳦雕|_wIjK{7XP^U=uGO=EZ^ZDSjs*k>i[i!hiCr[ ֖\>M(?o5,lWꔔOeFxg 'kڜ's}Gp߿vf3u\\j<7kgge%2FHn~1xp?]})q9c>~9뫨#Kv9֓I;o ?pOOOr\֣Q]==-/t(???ȷRQ@ښ?%8U&2%%)X5GQ]y_SC̼@qA52V/Lz+ OO/m}>%y}6WN )Y^tt,%B-NSh;f:d43/;0=f3Pcyfd_@,vă^I.4YbH<_.O/`hM#NnղD4fkaWZ.S1/? z\.a{wחht?Ő{wޏE?O?io6~/Fbca/߹p}__Yo#GlG!p<%wf?`̇ bw42նw,z)M̲3rgg [@ٛ $JAei>`3|\]ŷ Ůi:U^#Ҭݎ5+”opn>ap & wbIlA{ƶowu3y2rxl6k5?TTh\N'W[myw2ͷ~OKsG_o=o[K6z}?Ҧ Fg4 Ţc0_0=GT{?K*#û`PRmw jVАUfah"'TĒh2[iE<:bA:үa0=x}~?|Oӏsy=}_ߛI ]E,vǑ;,+p^/ x\^ 0.w<ovhb&iwvx< ol|6sp\jz_e~'`?o.qG??Ο.OS__~g/~x6 Xmcqhn#1V+?'xO#?^ w/QQyߜ <> ]]btߧ.S##G`{m{xX<60eܖwp?l㰁l??︛m`3g]uDUG~O7}8h_gٵ}6znÞy~qsor>3/_*79cc6m c7q"):nu6tƒtuW#$Еy./Ig^z=OQ^8N~lf f׷Yz=kag+=ݹėL^0 By=&exmN6Ё Wey{hB {MaTڇRS7PZG(fw3lLNHҙm[6wȞ2`!F!{Go3FwgbqNII.aAOB.+\3yNӺ3}<<[4 %J Vi,A{.G^SFw~Q(A̦͢$گ5* iD*POHkyvR_:2o2izƞsSԉUf#/?5rU-ZWJ;ҧ8LK)cE(JdX(u̕2 R4a_rN[ RV+C!X±QT-*6W!P԰d-Tж̚"*@Rkd<, i%dQC%Cg^2f+>RCȳ'%q= ArQU"ʓ$hT(R-Kgu Le`QH(6QX@$RL >%OVDgYXVN9jJYmU$P Y <@*LZ+ i XQ85#hJP̅`@C X++%E'GC"T:YeԬP$Q@8D@X",YIĕ+PKhLRka%zԆDVvx*+x'*=HqN嵬ŭ`Eҥ[P{g~S'őbJMlq*Hb E'sk5(I*-QgTZ ZT*LC$Kj((.b /,,L䣑`*0RJ֧s&BX) jeAd IyjU%u3']`,ZJe]m1Ϥ8UP̅AaXTPF |aR("#0 Hqi+3ZÍa8YĪgu:Jè?,:εm u%b1dX nJʜgUW%THHaXq2e@]ad}C+FxG2AekRES'9EXdT:bmS[kTYIm&d8@Pu*T@PT*T ql_qڋ~f A,ʋ"ֿ-~` d >ζ!YP;V^;"q1JNun٤2 SǧlŤE` *J*(g ",O^r&bř'էǯQU  %ݘYu&- +n*EZ6#LŦ( f&kfk=N$" &Knem+F*( ^-!LI65[љ=0 >9+̣2#ƞhxMi{hDaF@*0F&cyE3>5ޔ;j@Xfpy@Rʨm|qQ[y2ՠj6)+ ֊eTXB{OS!O2L/m-TjFTjLdkBf]|iST(¹D*.Mg &U3]kO)׼mW,B`ejJ %NG%r_ YdRXEJR,<4Z ؘ >^P]Bs|v9[jNlʋ )={Ԉ=ZE'PN3ǬӃZ;Yye5ٶT~98=sOmGYe b.{|x[-@ZTus&d*JdCmgL /6&njI]WLnd^%<ōunjK _ybWPq9庝C!V>beyIamW)1׊ 2ZmMB덤 jf2"K{3=^6R2X`$#4ǯr#]kvhZL.1k @aY Ƥ slj «oJZP>֊2*ڊqݗjb_DC@3Mm-nW6͘iicǖd d,aCj[Rj<63T>'SB|g-آ !fg~'\zcfMZoݙ X^Šq8ǖ8ڝeN&WVʱ.rݫ 6 %AkUYk+DX\d8<T^Ur[dh&e`}Jɼ8#F8fq 5 }&< {O3}HD2Jd϶bN0o@QQC TEYegkdXIR Z #r+3=edCRlPu3 UmE3SgS!3jX*N'0ڞ2"{N>s8 c5 [UQ`J H5 b}@|i}/&j%JHkc֡cf< Vbױn{ e/G}q3 `uU+'[p_8Vg}L؞{ͭ.㔠3^rSEhAZҠ6+UD֣s͵Ju&aщ ɻn!1e!:TtfD4HאT8?EHub"BcM6ű’3Z7s"u3q6jܘ^S-B2RuUإ֧;l+0pm~m> {凬>LrJ :kÑ⫯y%jcyyʕ5:XaUBV(|N4O)q32X(v/(-J|kq+ƪbJ"Qh8@U*J0Y((Qb£ي*47.MLZ%Lݠ,N5yQɢ.‰Ra~<"|OP8r!U}mw~ǬGrcWc O)-v5TA{CphuBo9^7^XŹ9.F=I8>T-J)2ƾb 3G6پiS/31N5uPo[V@Yh/1Zo,A~q|Tn^Ef|d<:ExrCB[3'S*qH!j{rg59FKͲWDN3 7>8yc%M32U@xȔsg^zH_m/v8$-ߗ&8iGUREy1^ cZZk =y>VO>ȟyxV4by?~_Y@)GR_6U9[h3 3%a?Z0TCPQy˘OjBVTY g|e,Z,X=E+ 8%vbVM621dyf ъ:ɟ PN4/iV/pxC(dgeTDYRr,\X"ڂRedX,Kg[S5fLɒd֚rmg±J*֬-DC7"08j/g>3&g)Bfe`]pm'Z Jԩ hqu~S.WUiEKmb'%A`VPȡT({!)AEPXݪjj5,P@b݊x׽Í<傪kDEauֈd)ɇkG*uRz^ *w0®BY+>Z*k[J j!C/9Q 0UeA~9N/;N@-T+T*QT_>&Ź3`+Yu%e]{z;maQr!4Ybu#9iVˊ6qmfN> DL9͎#Jr3iJϷi{N~dU* .&ȁ )E:SsnCPPUQA#`T'׶zL, mն6L[m_q|h'lV8Q|x 3\[`ҤD^Zk v!fBxV]S[6q[jXnS'E9BّhEZfOmu?l}["[}j+w :Z8ɸဥ QkL$ \SSy,VhFfx*xqUv&)݊Zo(G\X"U3pAzpdP:ZղaDCZ%xpKL}س`e~+^(&poFpT&=)*KE`0|ǚ"iX|MrTQ9ᱷb⪮;kSfC?}y"ΦN4'xJ;&pL)y˘pJJxpW&C0c&`Q]hfd u(¤Kviݚr rd.S]ke]ٙ8WXQ0R''G2(orE"G4u2E:+3jQ{N<.⛛5㥆BeQ5,m8L|05潤-"* rs~sq8CzkΜKS A6ysS3}\_d+F>Z~ v3ĶVW;h&{U3#s"3\nYڜyq:L2XkmNahtP\C(xwYQLL(7ex&\dqw7QV ֪{v{|Əv -nbn\E4M}xԤUUm ܸTRp}Z Kypv׏:Pea[2Vjx3"+ͮ,cyDNLu'y ss-k+8rQG(z:6uT8ϔ`[V-LRu)gwVQZGh&;Z;H5 @w^xQ&3bH`Q}C Ģ痏=j䱁o5M(5l^cZiuOY_99QMh>R{jwRL ( ÉYYPm* Lֵ5{70qI/%AJkEjE"0,/9k72<򅟍FVg,,*GZxg,mMyk8 ffq+GZqod {RµD7X6"bASƶxY5&F͍F@Դ׉r(Ȉ#NZZd[m'ڇhyh{/(#f|a9p4It獐WT> 63Ŷ瘩Dp~9aqg2|-"甧,GXvlw1s]2zn6<vqx Jxeִ8. pFh A4o5YVMj+Q:ڏ0ܱ<@!D-y8ѱJ<8ydh)RV)PH(kTFF#sVc=`d2T #KhV>[px[gx><;:z*mI^B2V^09M=fiMm(U:M-BY4SYf̈́U,T,^Xcc1A< O4q ooP'lynAON+;:#R-@rލ< x#Z#j6rlI^5Tb]7 ,"=Z#){JMjҢR,ayrNJbk}j9uI/IoJsU>֝Tj+-y·$D1S·_[8,ݧj>(y1tjD5ړN׵Nမݩ\1~Uy}̚bRo9/ʔO{yO ö1rzL­QD;o)um-^8 /yUyeb 좃mX6{aSHs 'Zjc;C!/lf yiZ(.(mzNǣ4k9lQC߾O'ȋee~WlZfhz\*N_ ʎNP/SS䨾-|z*kǔ\aQZGVd)76q{u~lnk0^K8#y1#8+(B6Ow|h(!52i3ayҾqEXIUE[vv>w8d*gcN+]o]\Q0|Bd]Fٓ3G7|JuK^vP/-͒ED8W4kEmI#P{7d`->!疥m~S2n;smJM:%TkBqq :E d8 RWd+X3#ےEԨ<3r5xvuƮQ<#qzv9.|"r56y\tzliBoѢ%nPyk8ӽ*F1½^ rQv_ڱ8,9qqqӏuʎǩC:Cq_;yuwwpD6 Iǯc+80J0\*pfچDIQk:\L!Ng]d<3G0]ڦFzMsSv< r>_hrDDM^uNuucu/C@KF L\m&=&q0hD|5u{)^&JU *]umNQNyMP`/+m8L61wq]oZ+Zg6”oLBa̤Q=MZrZޙ7^]9ys}2TS[Pݦ._/-ǝS;$Y9lR4ĠmbwU9v303L 8ߍ3aܯcqUiQW|Yy݃_ԽN5 wWw9PP gb=kgs]n M٨UT/L`. m'?o߷Po0 ^RK #9"IAijUNC8{/0 WJ*=rU>B O(jKfyJt(rOU]SZ*!w1#ylЌFnwšTZב'S'ǫV a.D.f KIt\т*ܩ,b+|5Kfqw2 fe۝6Nœ1Y.|I!:׳$ДӍ U˛UEU3S8$=NRn >~8ԋ;,x)va=,L),Yͩղo2} Ię3$khx6EU{"VDTN"e!?5eBW|&AJrkBS3fsɑEP^Ry^'gU&.jj^7U2^;ks^2haߕ9bMjW0:3?]j-xnې9JI2 +D ِ0<JSvx(jW6ަrR˼KuNkPڕ^T> SԪ (WeZo&O}E',ňw?kxZþST%N]4}ךAQ#2рG m3(E񶼳ˆGu67M _+Q|E+eɭSZ<-6&iPir$XkV[䯉Gx9By2',u;zs 7/IܶyƣƪZ8վ|ឥcܧ/%c6T^ڢud}eQ*W)Ԭ뎥8Юem/0+QaS2)±E(|g+ҩuҳ KO={!&Rr(f0l'|Eqc3fq̓3PΥ^%'t*E֝uvx}Ιm}wTվQ<]N'X9,l@5)Vmۀaе9j¨wWKA.X|sY"|zE5/yN"ovRچqIF A pr7-BAV-T<[C"=^.&Q3&'\*;fFt1Annl@P[pRҗ[7W靂j*nbԢ>m T0|U]M+S)`Z˯`YcO^bJVXXM蠍ق3 q 8f#VMÒY,uQr)V(uF9 .Fu"]7;J1 \S}A[R9IׯU3NEhD2s5^4P1imWī!QNr^JŊZRmMIfxT*bL `?K":F+J,V#+ lXEr5EI^NO.m K3Z&HOVĆznyFd3xpQwrWƧN5j*yʠyk0a:w}y26(90c+lecbF?{UM0QTE]]Fbb!طvh!WGd<  x]NyaG|jq6/ML"1ryi1}~u^#in+^r>=w)n~VQKRm~;Ȝ 9OVRWn;e>1˼9iygMUY…IN봱'Em_8c(myǀo ڍ2dF()\kxxnmyE^ӘHF[[SF{y-zԩ|ʅ|~OmWݪVSߟ1TQS5U+DY[EOZ,52W2L2Cԭomw3qv?Lf|C<S_E# |zf~\E+؄d U3/&@mɢueA"a VZc% X|kTΰU((\6kTQ9hΤا :K\Qc|59[:jSZ-tZ`#4Y8BkIQoIm 3Vu֋ſzg-C^bnG4FDE=O{HPP4Yӭʘ +h涨(j]ׄ6ǛN#Hs˪`-bd>尲5 oSHS {؂":qL*zӖH7Ok䑾lJ7ҡцk PWys0+N!uVS5<ះ?6 Yqƚ@u1xm ^D` rIkMFFʾy!4OD\Ms-To]n;ȵ*u|*fAmc׈ֽ7xSs8Zq3њ*Q M`@:^XSqV54_,\wXZJ͉bq5% tDR3?8SL/U>2SKu_oyJvRQom|N1Zhysi/뜯koM]D|m _.wP|}tbghTY4=iƍJV*7RԪyjO<{`b~XFk~I)ƀA\ճEZ5-6'(TEG<_-)^_Ew+±N/ט^*,P8ʢ}w8 4eJ׬2>sǧS)- _8w_J=rS}x<qK׋-h(;Z&ͩYqZ ͦVQzr2^g~-y6ь?)V7 <|,OLd@tLShW5Jq;8lz'Ӎ4b"bEk˺.EǃQhSUJZSTi˒N;s`ܴY!UL3sqLu'Jl(9S_5\&4 9y ׍yDD*)]inځHOfNʏXm۱ύ-4)SVն&0^=/ cE_2nT!m˓W]H5Q@01=F]büeAgRЩP ُLC;הmʝUoC&҉/==siRXfBWƥw ,X[sɸDֵ(`ζFp!} ZLc01mp7u*3sh槶)mMK n1Hjaܶݪku5(߷9/%Dh^;6cwϫ:)&.IG-oK>ĬW.EW|hOSC2A҉Q(+6}ֶou`T[|ǩKߕ:O1[BWi=4ת0^|YOdCv^GWlbն/V7ljgl/6gh*Ln < S/nl+͝e7b sm@7B6vJ%HK7\5P{d-JԹێcO^rҰ.Y97Mx1id` صw.+871Q~Z-l'uߋ^%~4cfF씴wyإxϾ|I\ 9z)gc4Om`~7<W֧c\_|7+U=!%>zNkכtĆݮdv1y>ReNwEVxˋԪ*q/ۻCzssTSܪ|-<_ yxfMK-N`S$[biL"أm+9u+8K|ӎkK1uK<v-kiO,{ÓSC `FmRamքKr=17ɓ4֙o\-^:nKAQ#cjFu|swhwjq Y*;kN3^|"FToqou8b[] FҹڛQ(-|U5QZYKȩ֕dUXq^SA;nk{wľ}x<>> kE=ص\Fx6uMhѧƷD ճiU٭ŧ +{1׆źZޘB-5oJ=ٸ<_~S26֯/<lלvKDuC2&/'nrnNYBvݞonOV,[Hoڭ.8"8o,5ќkhbzjcKټWXnjMqU]-߉-8w>!a+FZ[n/kjt{yzfM@tisSz؃ats^{Jg-$[Lo3e,Uyf迺&ϴ)Qy;7V2M_[WcXwl>Ҧ+C:OOOA}We85gpl\Yڹձs[aQz (~xVՁ[,/+Jmߒb.8a2.Is[7w"<ˌLs|Cz!R$/NƏ0 WCdp(zK>bGS9ZR͍{"ej;0Ȩ럤u+95=rB0gتSj-)O+S{v/M"MfO޹='( UeH -pRR-S kV puV 0BJqnhIYq'鉻jE2Q~%d[ER21`Cw,t| ={4l7׮v ƭiZ y mMfd>m2g&ayVQ#~Ƙ)Rk![AJ*O"43L^Rsjd;BKF݄:&ٗw/z9ؚZHE.DR[ |6xA$UޛhfaU)6 3FH>lzlS.;K=#7%ЎKXGR/{F9nIV2ǔo.}ȲY*~ WV9V%"ixÄ)/l[2,M<|ݚ0hO $L?/Aú#KCSK̿<`-ccڶbz.U&Ot32biisCB_noùYzѣ*;C=/ I6>wV^Sy `Y"XW:jPW+Y'v#8ixC4*RRLBk6\f!ATp@2h}?oxemb%sVoi-cn8^;Six6\M1)cLHŘ^"u.SOi6mudk(ni5CF5`Pl8Ź0i+1hnN sw9NMM"TLb")QjHݽz ޢ9S Ƚrk9I]o{0(Kdړ}.;a;ż|T|}#6HrUJSpڱCYWTzĿYMcGfvE=o|PeG9J`(ck miSRϒP玾wJ&uPH+Õz=,!O=*zuænpf%jZh-eedg7F շk誫mzRcT]s\\wlZJ}y ɨ뭯x|vҝ(#t$`RKHk5@`xxʎk/LR72IibI͹mq>OW,ґZ⳵9oxœy%3o)`&# f.j N2n}xZ8ad_مϋ{ bd"* ib|^1:CѲgpv듪.mSJ_I؞! gjw{3e2%ƚ/6e]X1w`X,2Vÿz-v.φV+l[uuЊ{3+* ]9ĝ^pWooFm'/ ̇>9Z)G{䥻R.sĶAqyW3='Hr'E{ZOEvSy'3ڞ;,3xlň:G'f](St/2pLz|xP̴-FYjק@)\2DZ;-yerHM{Se+|>Ŷ>lp[aʨtVE:RSU`dpFUIN de uLC֓[$U"5kW3n i)q0ANs˕Tk[IYy)R*Y(?$?CS89ՠ@VT7TT4E%z{ 0e=G'B^{WJ#>Cp%nXe09=Qׯ&Y_5fU=sohν'2{).[p[y{ů9e6^VpSƐhĨy:0 $cws$*ǭ)j' AٵĢzIEɰ96aI,#; Հ,`c5j Y@y!&z=~oi kmjH43N M'w%Ggw䘲j5,'VsZ">M8֧z?{"=w;e؉uß2+W&HN96GbgI8M`Jݱ&x!80 $賟ژ+λ- '܆?lZni%"ؗSoA_GtVs=3lXZ1YJlQ5s7ի+른x'sjw{qa͔Jc%c![$г"z24>&ǕW OaPƊY 97kL ZwT0ppu]^Ձ|q⶷J1㍮ѓ֧ %.lk+wzϥ׫?my=-* ͂=9W@a-W,[uI_YtcWy,9TntKޠC3Pngrpu Icn 90l5%-LGYGx,Ļ:ozۢ令 6mjSroN3:YlykCc",} HufyVELrLAImQ&ש4o&_kfNNNH]6).lyxw hX}8j$熯 :ݲĶ\?OzIsSJ }綏5+sI@W?1A'kB9[s%bXC+@)Tut(Y Y{,rm:"#|p&N l> Rqi;b̼rOQXzkozy_+I?zfw:ΔrZT բPtk jeoTMHiFpF]s*eIՊdS_J}w7#w&R^LĈAl(W; ľCzڝ%Pl9@&a|k<HVe~uE2_~%<^gěs\[ۛʾtfjYЊ-`QL M)xitGt-0՗*Ȫf˻d-B6w=% J;hMUe-s~겷JnHTJ4שYϫB3)? }<DƘ`9@M)I..7p`1bs~.\VlI3Hnaz$OsyP>?f?uhk~9ĥU}!i\^$ҩ; I6ealP{RC^ *uOlI&J:/G$~ֵ ؜lV%) { x#+% c>tm&(LOƧWB{gS2h&b{![&*sOB<]Io%=2 |[]< ]9)([(g`!,eJ!s],Ȼs~D',|PJ|΍5Db(mܓ,Ӳ]i|z^MYejc>Z.-_Ʌ_MXjP亸i@(yISγlqE*pdF%5Ԗ[lіJu%l[-2xUmy#:y' >PamTNr,%'o- yhǂ})[eѥ ;W%`JhcGe#C+2lNJmf0l"6$hJ̢WY sO")[lΥmHK/B⵷ʺчjʴ٠r-Ouo'));TiFٝ|?~A%6RU5 ^^=m57̗>}1UgcX)4@x,Io !OSnRE]wےQP[ƻ S;7X_o]/3Ɗ]3v[tYj|R6ObmMT=#e f퇻Mp댪>C:!ɫF&ݬȕ[b)e©m1rshdV#m3Y+C9m}hf.>WtJN]˝%W[]8fŸprF7Y[9=rI+%+29!yh^\]L?]ĬLZSF#:MC<үe87u o J vKՔ{Z-)D Hd?Fd6+| #(ɛkd.Ys)NeI ںhyl6xyWrH*l<-k Esri͎iPtPNt&>u?/d}VO.hXX!q5/GIP*]ۂ7rzR1 rʦ1`G Ħf?q\ɡĭf.nѓG"~`fe6[QNòC]$prsEdN#wrccqHٖ8zv)j W#;GK:^XIE8JGWc^ћ QS.$sڟsxAAq2ǗOvEqJԲ_mZ?{ #U݉64rě .;¤J@ xҙy{%EeUgCqś<4;1;fKR2kuiAeo"e/C, TNĨX).`9Lu4Bǽu[|GIaN|t$n!!z b6x`0t0EHqgKhY͙W-OJ1C$3TE lV\qpѨ#a]{Y潗-Eh夶O_ooNQ<=Ԧ&V2`K89dG$*źz(|.bmT,je{DleY&E`xf U?H'fӧit; 8ljNS'dLш MM.bvT$as~"W4ޭPmI]enFFN0%4&NnͶaq,^ 2 p!k*NMtoF8m^&^9P[QB+{)A5q=p!3;Q9X93]1[$9r:,LܽšU(޹`wjBRXf|nSn^4=jf-Z;[o"!w3y=U-'|jW]7uRV&U(3bEnx2h-O_!G܃M&\/z}u4 ۗp`jO:Kb9z-XBR[>RY0(SLM"x:RںT\S9ov~:ʫJ}_?~j9cn~o<,LQbsagHoIaDwۦE؍ kp(K{Ӿd5ʩI 5)pwt-O:{pSpW)7jW5ŽNZeٵP"bjb-%6t*Dg3UYc%SHu{yf7<^]k M6Q0jP=bygHbzxXgαoW5K*DK)­qGbUk$owxu)O͋y%/PHQnnLyqTvzkRbꌗ;W/?8R9? f/ÿsVĤ_)ySJzw!Ð)cGbreUꨬ5~ sȭAA-|Re,ahde/,oP.E,MYOHh4&R`ebV/CÃKxSV+=]_H l_^8WDhX ˶C;qZTky0p>%sti+I:˒Ke\)1zv j~@ ֋iY\7em}+5DeLCEò-tE<䓪4=]{gOHxZTJpk^7dcEssOL7dAF$ˣ3%nV%Vhbnݤc=qyd3_tjj*J7}k7jf.2v_ [~~cx}-+쳍RkѾu֥ VReʹGIQv55z\, zp߳^*V+rp9 ZvO).B2BrP0RXzRS[]q]Uf:@Ej>q3m􈪂Q7$Au"߷jl`5orUR΋ldHG%!CW$اԵ(N.&j1A>;{fN%᳸88 ({$%B3OPqOj3ļJϳ&$wnR]"]${Ij&4YNUbQQ9 hG ȔRCӅQld+Z̧ӓ9 X&֓&㟮1Y x阋/ؤ+bNHvdD./T9 5 m=dɡ9!s3%|3'+aUsD;%tal=ϙ+S@ȇ2#J`PoZx?Wlգł>0ҝ)"c)^S!&<+ Hȝ=u:~4rXj2TxJA/vLLFoUB<[Sr:8'>"""+)ᜉڣju(ƭ,eX,-t>rl|^IfPSmt09FT 't;NjſR',aޠNp Thy'yiG*k6=mXdn:(7Pݖt/$*uY (\unn֑ F#%ǷܜN.\1F/4,#u8Lh55IcO.&چPt a;N\HS&Pۛ{ˁUX2i4J[n'e24,]*lW+;Nd GSUN'&s Iͮλœ q.Lp !$q3k=*paLdY`2X9N Q*[ mKM}"2"L"-W[5̯MbkƒyZ sR:=|U<ÙJnr*7 6(7>84ݖbo@NYsDn\YT/gzVƒ&gKS!#$s5oXYc0 ˉWnV`_Вˉ[)aqK]Mon_:JzWWӳ9GJ`b_g̣Lp4 /<ʕk̚bi|U.L5GaMm+ڙeXN2w%7^ʨf,G`QԙZ( D|z"mV;oB_Q7^b!Tn1~Aua&%5`-Qv&e䮐(K&y!;5_~~zb[~N0h na:z 굫AVUq zW5&hR|]3:.2t,Fey&I ;Hd~Gtlj_5&s^!~+,~yA~wsޡH}k`rLe2NFWf){,H²njgoBc@Y)M70ʎd~d~Z4[9oď +NxD,jİ~4]hKb0A#䂓e-@Eu Hv^X`^Z|fh|2a *_4)}ޝp'9NVSK|`m-E+G@s_[䡻BR;#G8S)jYLZaVY.:+ѡ*pf !z|s NPe5E3꥓N,N*($Z89ۉit*8ת Q ؀oYK7J\f̃)b!.?-0R@<܄ em)9PABO2!EH/I/$ -DΤBa5覇b3Dua1Qʶ~7}F҄G{qL15<#P!wH.ԃ)KrSZ]\Dc?joUۄuzhı0 P/md`d~$4gզ ڤJw* Қ%!V`c~ixg;f 5* YB0y6CIbP(4ѓk2rkyXlN78SLI U ,.to,x6ήοYpXo_|lxHPpL#Կ?Q~oe,W?/ƪWO[)?ڔu|\m  r"}\ 7r<˺oUɵmޞ(Ә{_\Ӭ˵.]aszkgpH<3?W]B16}y"qqzmk# rj>uŞܿ8I;aѪB(]1ViUg53Qd;Ԣh 䛘%ܶ-аe.x17JeTl*guoaVs̱gJ /J*\Iy6zc!eOH'eW+(ƞ*J~@z"M5xu%4EW9QŞdɜ_˯O1+f]_gڈ7?d=5  ej/?M~f'H^X!a gUL(<:'ɛ3~ciGIz#JZYm~F9{YΡ~'fm<~#W"Ovyy0wUPIQ\x[7X9;wa .ƱGN v6sj 1ef)LJFe6i`Ss{C+ݵAVl}-x5v7%{}eFknpQ%SLGwAg-OJZsoy$=Sd~A+6a~p!k$MO-I825lz& s~8ƍ1}{jrh򮜜GƵrv Vy%‚S+*5_NUfO{:kGkGWMdl?хڲ5CڑCC:>yg{:899LNvi43^V~Vt1SkSsHbie|FNNzacrq"M`OAQMIjhϱXa 7<*eg K6(F Ӏ@,LnY;B7iQ Y2(kQ޶AǧtZȥF@ѫpbZjurX8ȹ4yxuFUU.aDDiCMڔPDX|=ƬyVh0rUH~ u o_Vr)|ǎ[7:^z&Ek-;LJIX1\QƗMK꼼uB1 `b]\hjy,WDC=]5Gt=!D7JԪ+ y/?ͩjc$~SOݾl[r!OTSs?⿺O^NOoW;5w$#]f"/pet7g$}EHJf_?$!(@k((王QhΗZrK\Lm O`=w:h9_15Dubd{&8*˓?"/yO]Z"}so?zl|ytҪe%inM\k\)nj,!q}7>~3V͋?4/T=ݛ4qS*2wscGِ5ꠍLĚbvykN8'd IyQ˞p.cR1;0" $gqmMemƟ[~ΚmG228-mgnG7ƊHSoħ(ֳa<җ8eX[hu=qnTf!f7ȏu4 OkxqG6 ^Θ.m8eSoۍ+]7;eUW;.oKFyp<~&h1x4xtpq`;MC7m<)($nX/NHm+6߉lOz&-w5Yzqa3t4 tLCl,oWyGw'sl^w&Z+-3d\Z&H2=*%DŽfk`Jlh;y#zǛ(:L͊$㌧L-*6~;Κ43> >QzDERcH)J&oAq9:T{ [=,е|ǎ™51ҝHȆm4\U˰fڦg5ĥ]J 䈾nR;[Kð>E/Ƹ^j 7eMl5$JU]5#euƋas~Bt*&Hĵa uՙEi-mFSzG:akXނyJ''8FEg759d׋gMOuJbamkVSwakq$y}qhX&dƦD<ĭk'tɦU-7lJ,9Qk3ԕIg`}3.oMOf ; 0iܛ~l[Tx՗ӿ4Ք!\TQ!BE|:$AuS- #o?Sa]D@ceScdDQ[`/Ǟ|s{oǿ~ھ}ٝFGo^yfm|G=A;婶;ǔD_GK}/zr) ~wS_N88{S꟧j>p?oDz~8>>?ez}=kkc؏s߮GGn7`0f  05 k@ց@9$`P "C@''9 &@ `jP,,|(-@ӁL ?M *>}O DJ@< @* ȃ@4PBpP@@@"~`TTKqDD@@x'% %   ;,06HZD- h!:B8 @e 2!X[[w@wP0@@ w;|QG2?Z4wDD;; v@M>akW>*Jz>I>B!)X)Uj5*Շ ?YZjիVZd 0ի 0VZhVF0ի 5jի&MZ>իF^5jɓM0F20 12FZ~"jVZijՆZjիVYa1jՖZjՌjզeZdɖXa4aYjիVZaeZ4jիVjիVZjՖYeFeZhѣFYjիVjՆaVYeYjdURZrn˄s . ܹ*:Vw;]* @gt,O)wwqӤ-Zx 4h ZV4ի 2d,0V4h,02F4 4hɓV0,dYe&aeYeVYa~ aZi4eYjգFZaYiaeVY2aYaYe4hцeicaƭZ4eaLaiVjզaVXahѫVeeie14~IS+InPZTpuwTwPSʗtu):WptPAā"NP#Gg\7xCo:Yx;;yos<:˖yr9g[,׻yYeqXaF|3w^]i:o0^ikΚnqq{[qt:kΚqg9{k:ǝcu:=գF=cλZowF:cL33773,xrtt-yrttի{Xa71s=0F4ѣ,M0/eVZeYjզiYeaZ֭Z4eZ֚iYijՖXhіXaVYjզi5y,,V4L`M0M2V-Z,Vִhի,M1 -Z 4M4 1>faYaYjՌihцiVYjՆiZiVeZeZiZiXa_I>KKT iZiVZiZ0,Z,ZM42,jMk,4իM4, 0 ,M1 ZVիڵc>61Zj ZjMZM54MZ1-45j,իM5jիLLL1ִ,M2Zի,M5jѣ,jM4LcM5j-ZjիF,L0 7e!Uuu raWnrH uBw]RrgsLw\tQe{YceeZ4jիVZjՆiViaeYifcaiYe1ejՆaiiyceVeYcjզiXYjզaZ֭YeiYjզikZiiYciiZkYejՖYeVYeieYeiZi1Yia1Iu":U-ҮuU7QSrq"\v弊]IwINcȧu([s8GttRg$w*S)㪖T㳹aםeXǜce>Wiegyyy֭YeVoyּ^ucƵgaeaݞv浯w54VZ2L/VqqqvcǝceiYe:o:ZiYi1ZkXcε4ǻkۭy5kεXYo}֞9o9YkּM5j;NFyM3yƭYeּyYY3kXǽƼ<.ggci1β{qyyev434mZVcM4M2V4MkM10-4LcM545-4-kִ,jL1Z,L,4 իV4իM5j-Z,M0In# ң] DuZrӒws\r ;TI34,V2M4M2M5j ZM4իM4,4ZMZ/eXƵYiƚi1ycƚiYei1Vf1hіZֵZijՖZiXƵƚkYeX1iYeYeYjՖZiZiVYiiikZcƚjխiYeYeeYi}B@Ҕ\(%w%.] wKs[ptI1HZʫAܥu§u ݺ(vGqH395j4,ckXƭX1ey[βV{ǜֵjL::L05jի35j334Z7LcɓM5y5yYiZiYc;BL]G>ʔRG:QU:]9)Ϊ:\;QuD^t<|!~:_䗃D63`l[Sq1?*=C ,Qڅ|\k\ܮq5 Q30嘈>tZW>8Jv  ,)k6+0<+DPX`xť~&z Ug2_g>}cpw4Ŧh*4遊:m>m1Q/ڮj[sg ޔ:c!UHhtctn+ڵ9353X+AkrZ~swa#n12yy-xwnOS,n2q`JƔ2[Cӎx~~u?mrߟ.faPm Y\k3'xtqi*:)`:7V>v b9TֱC-:33'8 ar)@(HfF# >PssTo69DH<5T|]e|݄+_Tբv(?~~~ˊsmlZocipCi Wu%[e \y:}eJ%]Zy¯ A*Du3^7 VCsTxݲT>}Þ{s{*a۫ϻ)rϖW0mo~^aNjּz4 Q0rdHΌ ‚cg lci76EߪSo4_W.q46zȐ#w9k{ʏ-q /<ԯS|~CP_3ܹ$ԥW=C "뢢/|&?)+BfeeaVu%TY %F#94Dx|i*Tm-؈57)/lywp5 Ƣ2+(Jq26ڪyJaV"ܫa?3ĭ`oDovmyiXT{BӸP듨f$)˜'>$Qb+{KiiL[)Ecwz6k k+iAzP|b q0gu"ES)~')wE}&bńXZQVBdR+SZ ڬVJ\*VwyB )Ӝ0W^bE"a!JVE[Q)yƵSu^YNk/,,"6ޢVpXf g_3"yz͙GlWNm=|3wPX[,yg3rљ:< >/yf{Y$ z1g;TTRrzyz&`-PPEn<0}2u;j{Ey+}AyǼבm3 +&ֵ+k.nZ^$P3*s([)`ɾPT>0+ ĝ<|/ZY^&V&@f]jBUPED[VΪ#*yyZ4FqP6mgmVަQWAE:TC>d8MuT@yWF*ZTa ,'SYo4SEMk nڇ,*["C@>_@~~)ʌ-LfvcV6BPS*Tk!AJE[hjY-(HEE"(:ʃl8*-a[JԘ咖TU`,a*,!Rq*K8ŬZ*#Xvam$*ŊP*KlPŋ@-aQjʅY!mYq%J`(O &Ej,6-\vU+"C!P]h֎ @֨ڢءmRRM + ʩc'c'VkVTS2QH5f26ԍh,yv h_ܱ7,|%Ak(jOa%giJ‰XTj4i,V1W[[lQDT+EBIʹ,ye*,++ UV{k#k"Ubʇ5 -0S2S f§RJUEjb*-B*DTưZi*J("V6XU`(QeW9\AQPU:aZE`T`JTm+@KjƵְ+Ru BeJ_0ThuD3 mIBHO&?`UP~gG0>aW>4L?%;LUF"$gr&x,oD`f?bwԪPzjmibzM ywJ1<L}Ϝ`ucCQ0)kF3""?,Sqj>L5QTU8чW ^_4aS;ZҍW =yDO,RMX)ֵ^*G:`M2[#RwHFA)ilnnwDJ}l<36x)i߯x~) Nog134P6| A|sKpJZ[';ə584TWZ`3JGxbvwӋL .؊X()YP|Cb=TIb?:5 QHib;Z AoocıOXsBLfV1X k !_<Ɗ$ %h gj;-eb\ʚך 7>!/.gdUQ[E3/)0Y-ּa Lz 6QKm,# ʚ S [z풢۱(#TĺY7.[lU3 DCVVS'Uz{8寖޴: [k)ר^P\[y$KPw6G}?b]qH~ kE6 3< ;l^wRK{qJtG|w<WuDɚ $@+d08uUdUm6mVfQ(c1CZ,-̜IR'9Cu++%jA`>X BU(ZuEEA`,`,^j"g*E0Xf `)PT*C)ƲAxg[eiDT* , fjmADuɚ$xV֐QH"Z+ >%DJW72,,*Xkm-PZXR"P-EYTT`,gVVN"XSg&C2AAAALfJ #4IZ2" -gkm`)e`>=峑#[oh/}bεA.VwNkpϖyPmhlKer ;Zuڋ\syb/vv1v8u+s7j=iƫxЁ] #'' Z3ZiTBYRՂlQo<G;]is9tYR''ϳe{]^υ_ b#E,OƷpgJ1uk|GZhFc1x'p7R9}[J/{N1أ*</n|Xț4Z[]BܴN5g"T:#*$[wȧwG(|i׊-Zn#>ǹ 0I&NOל9mUPp׭ 42-eO\Hcsl[+5]pE6'EnJe\}lciL3O+ӡj ~Oo]!}z-} xb,+QȔ߶N<_:9fEɱn[ϯo|z }ծ215/9o>#qǽ՞yJY7S+~X=9Z!UW^TGӾR(dXU&T2UE'LjT5*EZ'Y+Sjc N7Lix" \ma.-;j ˵U)l^Sk[UV9ɸÜ*aN!GYWw:&Z(ycu`f)U?68"ϲQ5U13 -Y\y&kVF]^T3Ǻ.^Z?,/NJ,UcWϔ8qAE2V%JdXG4N;~7;2 pPMasV1Kuإ.nf6֢։QkKTR,ZiC 9jY"sY%_S%dMam%CmE"q#9J[όyUrTmljiƢ>QJ'ʹbF*W9LjW'gq6ũ˴U+mYW$v?2W"Ҋ[(}sU%@WyU>Ƿȧ/ٿx<mnG_S[=6ZKJ1X#I /^i8Q @̮[g 綼N%T5S5YśNڜJ*\j"Lx[Ey3j(|m0|q2c c'S=\uډXW{L:vNZȒ)E8:,:68%E)CniS94;~&fa%RgC%~^~2USE寻=>8z[?9Cr׎y Q7}s64"3PK.b?~7[;R3/RH6 /ٙ#OQ Jֹ5[˫J[2WdZS9_87w;O7uԢ}{;mJu_\ڪHWʋf^<}}΋ʔB]mEy͂ѼĊN |Mk߳<>(zQ+3mAl4}4u8tzkD -%]k5z9\ٗbk@M&ֱsOAiRkv;63! qiB ziI!'4^+E LrJxmalTs|eMi_5l:~D;I\K.cMYjG,Q+301׈׋33>k WgV<B5;~%WQXG>rf6FH&ll ܉nPQA/)UHJ чU `(U,j5#h@KhPǽX(>jg3*mdYԣV A֠+ =l Km>4>[S1J?)R@v><,dU'0Brev3CZddʹeaζ]s l',JsIf+F* Z\&͇[ CLV*$Tbĺr]k;ml3T|GY^Vk D}n-n-mIX -¡(0e=䩋jVcocaXabiȚFm }acP^YLTM9ǬJIZ4LUg,QAW(Z2R0[CrT%gsYmfMZ-h9r3UYcZ56Z(FKTs_*2T+[̓[vuaYP&vʈ RjF]BPݧY԰[K Z-^N'GWPE*E~7U?kk_(ݳCޔ­jO7;w_)ԭ{y{aΜΖTDSR {%H:֞c78<j̆k~8Pam`Qrj]v-6뷿]lmOmQm?DnoE 'mN띱[ x-sone\4-bF Ibڽ7MFpx^zFZvqqyJwe55ho9gS\̅T"~u,8$kZ˨Q3?g}"?>sڪ_~:kAHW0+"njR0Ssxכ'oGDUXvCu S )P(Uό2s vC ~S;?,+O0^9ewI|*c^wYq̬**)Zu*,GjT=|,2EkE<|gUOMhkZ?5'Xd8ZC[͙ǎ-3*6a@ Vt`-ZvH_Rd\ݟMQ-B]UÆ͙:3&cZTk6g3 - }2֖3Gu2T2~9CerPes-)Xu9(<&U3"ƖmT 1i+%b%z 01Jʗ(EdܻUE*Q+*nY7}+8$()Yo(㈧yn k*%!hi,{JQ=~8`[}CQ?3 RP,"1`6U.5mmVb*}&*]JX27&278KUCT+2W[2W[fiRҲ`7iQFҢCQl-pn(U)i[Jس_8W ({m-Vek(uE-(ĴlG[2FRRVfxf˚TUTYmA{CT+ bE \SsOԇ9xjN' "^ZOU_qQBȜBQNO{F&Znخexxlc.#ivq2NjJ|3?-Ap"x0M'G\Urī/T}B|ZwS klq2:[.Jl1Ըǚb[{Qƛ̑ڲ|Oӟυ!sim{X(-4yWWyAR_hI)Ns^SOνjkؕPf`*)?)!,m7ל幨Cr֢4Jr6իhmN1J-U֧8\+-YPL4P c(͵xYĸSL7OًJ=iJ| z$IϏ9!_omfc$i:)ْAFlKWo(eUU>QxsܗŋR.L^3s99_鹛*cvQu֪k`}ύp-p3sE*|Ob|B\j[Rա҇u?γ~x>*d6[m~6>uaޗiUB,ֈc'ϯQOϔ?:P}!*c_׸sqr<e=L9^Ӛc]L>ʹO~ԼIҫZ'ݢN*㜢Q>֨g <@v:gRML"[w5 WO`Ǜ"/Fэi Z`aF~p=T)Zц׉x~߯qUTA)GWq+uJ7mCo:pZ5dfzO ,|pn#crSbFƖZĠlTj5j}=hkZdAX0Clyx7O].#{_ b&0ѣ9Zʭl]T[ִHBCOu 'kc[O<_鏜>'w wGCWh3[d~]{>41ɋh|qnVT iҳ["rVgZf(Z33"Rk3X-PX ԣgLjX]f]pmCe@Y9SJ=[&*xʓ>lł8o(ɘV La󭇜g:-Fؓ3\AD~RQzhG++XԶHVV:TkʘqGTsgiLX qD83 ѓ%HF6c_Bd mBeTc3)?7iIdȦuF|gP\Zn}s/kdWr|d*2,q85K @qcn:O;hX>_ *ydYdRmE0aPYTd$''21GLs\mٰ*N$^H VBBO@N*@&U`B`'RUI#uJ*wUQ(. | K9nvxG_|b'˥>j8֙7v8Y^.k L8ivM`͓N4L-/mye'  C>ژj4ʭM8%4/wm=QW9>$ ʢv¢'Ͽ+]+5v\|(r Kh:Wlfkh*Jِ]oGcaqLQϟ?gOk3  εe)L+7f'߿0UlyiOX^ N_4sB:<1Ae!5ѤvI8$ 2HvRz~W*T ʥP!%3}OZO)ndzt(Tq:-x-GRf!ʭALf~9Gd Pcunnc!NWƠ(dUb4N(iu(݊-b(y9OڇnjDY\łkJu0zε< jTQ(Fcy8bQNsE>yNuE*9TXd*;S È \jJN'YEĊaSsS2L>pb}^<pE1UV*} J|qq [`%E*)^rY^r2PeJMR6sEm^\G\pNq6qdW9UP#V0ƭSm^lQҌ)v9uڝsxQȲEƧ^''bS UpdD{BMu ej^wT>~' ȿͼT|so}Dz*򺛶 NVqzՑAou/gmi8>a^EkZ6 ;oKGl_2iȮ]Yf f|yE-g^$yOl ~aUIY*Abo8cPEU"Pˬn9>mKd /V-aWnD+*pb)D(3@XT6ǍST)RTP\pI\æ|N>V\fJI^4*NFOOy["k!ֆ, O_~kc~ms <8k ]2UfpR^9^QJ;-*ZTk`)]( ֘Ĥyc<ʅ uW..W.ܠdi! O`mٰz2Hj"J/E*T+~R7R%}-h֋R֠R4vXWd9R'Çy+Ç9a0mHvRW^RT3DZ%rq˨fk5C\jkee^RRyx:n^̕> il٭ط@I""k+Q)Ate )BMJcm-ۦQQSŠYO$\<||kZ-jxłŅ͋ء֧LµXVedڑmFŬԪ$T`A-* 3]W\sR,ĕ+{wf"F5 =8}xlifzsib|oQu\SƩ|hVߺnl,k(:}~PiJ@Fd1D0ߦvNo2_iX|NOir*0etwܑ xO8+(iibϏ4*ָ;HoÚn?~E}Q{2S-v.aRDY5w9k7;˭m||"9avWLJTGֱfar)]ǗYu~i=T;N/z8e6 jGnS[Uk ihhNß'w8(kh{PlObҖkծ%TEvD*&/݋nH }q]7p:@#4~qtUPX Wu{rf6 ¼SZcI-c cu a/[`ےA38[VuJ(u Z5ʱSz-_Q 0gꠍy/^k-`Tơ*}wPw\6ϝȳBcLmlU%jLm hdm)sYY3s->,*UHsN)",FVmmybkekTAOP35u0I`C.=(f[1pl̃r-kPYQyM%L3<זYDDOו3S*/O0;v͏PXsVz30)ymq 8'ZF{ڙ\,tjD򲡍*!:.kz%ig-Wbq6:hqO(EXv3+2 Cᇉ`S/詹e|- .s*VEee8UQ jٽ{;*(Lm5ős*Ǭ̕K~ZrPX}5^̬+^)D9Ak:b!Rց?"W>֤f#m ׋3oUထ:0" hCs2C}9*rSľYTGRR7BW}}r^g(=| dӏZ-'JR/9HLUGEYD%Wy2|D.7C}Df *jV{L̇g5'ᨉPS5+Q㓏}ڣPJaY8E'`iAyZ(UxͭNjl w`pﱶ}`iw~i~A>[بX*$ ?j sW M`$!a$' a2cR@'Wm $3+$(Y#hMByiRI Ky><u.ڢIhd6c+^Z6q:j HPt#$& enV36.a[T*s]۵5mh,prp1 LbA߇8jsu589[m#o % 6cM\}MZM1klS%2di%5Ax}Ҍ*Q&]ffRЪUt4A::'01|؋pTU)hͦi**ERJ{z{׊6v(›S'Xb%k hfe*dLYUTUPm"B3 49˸.nau8k*iuB6t3`WW.ph6AE%c4r"aKS2ɓq56vOxl-J5bv(kDchZyD9(MB,2mbq/yVTmPPNrYCrgg&f&x|moyaH zmQ_ӺωzmvA8]zOjq[6)qtzDyQ^'X&)$& 1]!Dlb8dm8fG rbucTbpYc8|N H}=yȱfR-'S<9y]-h-\] Fȏa t~vm'Eʦx:Y T"nCCT/zZ[29K•C3*=jDb9fbq6^ZZy}Z9}B7vW{ݾҦaRV+1b梍ksU~P_-8ְZ5̦پrᓜ/Δ_o*__?dOF"{?,^.bJ#U60 uq9J6L(:VM?bd?R_x'mw4v̸Kq{K[azfx5~> i}n~sAyoszFuv=7:݊1ӍNF!=1Z~྾*UcO??g3=ߩo9 "+cy(Tv嵷+N_ǮD55vj1yjo>ʩ2$k[* AxQnۄ]7{rfҦiRUy>mTVd(ݐYCcCi{b$s}\*_5Pǔ-T9K>k=JAyoR/feyh* [Zɵ[Ku{OR_/=*TaieiNl=T^Uj2eg* $-E'u02Wvکg:,EiRK"dk%TPȢ,NKkw1S"Dk98BM}@|q>L?Aj M@eD6ۃc$ܨy=5;BYIJa$`m :y%yuGtOJVH2VqpH !ljp@ N&8yb:QZ^[)Q,@W4z{L!j"7 'vRW`.YǬg{bmFu;l_ 6s TҶ aZ5 Isq71~#Up839J*Tpǭ2F#nq=i&ς*RlT+ )ºJ-8ss~9x҅E)C!=M-Lim7Jl>]]+ͺsSM94uh+sO-}Za62.)6<,rsn{nPP^S:: 4d!.s͔񧻲3jy 81'֮B3-^[!ԯs[LYicca{~PgJTS%goӅ%lܸe\^=v]V|QERi^4[kuyncy:URu)Mx<ȽBv{*fJ8ܦ}B2!NwJ79*aӸu*|xǗژ6*bEAN>jPC2Zc'~=/- PRVSSí+DZPR*)߻}~ sQsCW\yp1|)AQ~džǿ$Pn m-|;Jկ#s~'FV*)iWzKRڟos,fb3Nƙ|师T?•_ЕPXgI$U E !~ }snH(bLw>x_YRXqUU)Js֬"iN8ӊ gYNJ^ҰJ2^4r~No! 8'p-~@{(׍KZY/Ck*& Zʅ]svBk_?~'{rq_qEœ?}оX.lj'(f .EBqq_'^}t+eh}ШqCgSԶTYh.b݌=O9x#[/,qRT+^x/ 03&X>0xknQSgW)n0WXfS2dڟsY?w뿯߳{֍yKEU\Aar+h+mԩƙ!(\1"fFM( Ҫz1yTɍo)66$$PPP^8d7\[L`ce9og Inj6d U;04-RpL[U0%LfQ8#80[j6_2)ZiˤZi{iu9y" s)VP[N׺֋uM44~TGL A A (!RzyQK^\ 1+ 5z.bazM_GUyUoi#L,gf͌< Fܐ]3E -3m{4Ru3+-EÒg$1H%OOwb|sS 6ⶨi5pmεe25fyږ_9u9w9Si]U-]hǝGYgی )0ɺEivNkM1AmtTTqDr=)j=ViuiEEL0QѸaJ-imib抡PDPKAUAUL-j3/8n+Zur)vsiy;3ND_8n8cNxYN8NŹ8*Jd-2V6wYvGf3#mjau8^RsU%eJ95zp={6M,uwsqBiDaV`JJg{*. zMR\ 3gd׎+}sdy=FFөO}8}1Zm2XKͿYLҜG01LA{yF Jl:Ikj)/ {j{{m:DBP_9gyj|t-׍N("᭷ LI/Y×ơ槩CKin_53 iY6DEN6$- @lkB^zޘmx*aCR;xo~|}O?zџ)q[^8sW!D'{CaSԼ<:kXȘ W8QCK)瑯]u#=v,wQ^7/>ϫX>,Sٌ˓PSxԮKĹ2l|fw3㇯i~Ny}|D_>l䑟Cjdx=psƻJW*|ߩ'>YEFC3'c$GtcjDݿ;E().T>4Px/pAS~UWx:rN6m.4r6u^[` ( ڲ.xCB/o\Z(3\d6vyZҧ+bcցnER,fC z0dʫ.UX}3ry{`e`382)Pd*lnL2Vq[ؾ@Nj @ā3j~/Z/'w-@:؉lFkuKitP0LLQBR Wuo Tm qׯ 5lW`iUlxݙb9ڨsQE>,9|xY?V"qӉ1fDzyG 26cE_9߭hzR%L-|O !}ݸ@zLʼ|L睼;1'LE v oYZo8"yu|EfI1 f@Y 3@?='_(2? ~WCX?7k׉?{&miMgV[q=S UȱX-Vfchb'cDny5NzA@ydؙS6[liVm90Ηq 44N6f1Nc:kcZzM[VmK+b#84``64H$|-؂(hV*T3KN\խ'Gt%,}$JZu2ft=ŦYZ!n2ܞreX݊ "ۉ(tppmkșrmMZ)hjZ5W^y]fbȭ?5-EgX,ñD#Z>iq9n.V뢕jL3:1j]PmKcjS&][KzjH:i@Q4[~ڿk3>T<99u9btuع1<̈|D84d"R`3D+"0,LT9 6QRovKlm' (/gJ**)ʶcW'~#dM3c^7+b}-ro52Z4jo w:t͒ IFZ/!ww^рڃӍ+|<)Vm4}9xQY3QK|?'jOl+ eVrҔ_b/EXV^l#2}Fu3?l3kJʊQmvCr+ZTPV̺֣mQu yB>&TQQ2WܼV3HNcoF1qzKNwۆUedQ!\q ˶oy3^iO~}~~uɊtixyd)wk{(o-Jn :*_ u;"œC eO|pĬq)cJ,CQY?YO?O߿nXӉ>ҙ͌Ri'< ǭ(ҧF}X$9 nK{F=iW'f+^W0ؖͶEN}6*|9{/a%O1>֌V.s-=KT=OD3/p>bKdRd'`~NZaz~z6( γT"xpq1 ^(RygZO5ra0uHd/YJ2>6@ k1`*T3ZԪu!1rTd(2*YaUV'+ 731T.~{G땋 ATQO-&gK;q-9@8q81T^ZF ʘsK@ɜԜIXq-+}@}{5sg?;$TW Jg&!#0!XJ$TSum!-˴$i!#|.$yH%yiC$k3kf2 m[wq~jRڽ-ݞ,EQ! gzڨ{y巭dn+kL:SVd̞?}fvnu48W/}#OWAO޴vmTQg1I@Fq:tgFI7}m*R Ⱦͭ'3/epmp֖x6 5P/Έ9cS׮mvLG>aSj(iS)Y^4fS~?7rjF"Uefiߧ/|#l?rڔ}qx"+m2gCwc*k7-o7/iu(}_M8ׇl\2 t{2w~֭+7SVg_w>u@ʹO>-M7Ns3>u:m! B%@Ȱr +i6Y? X}>oԬ+CaæC ǪI~Si 3anW%ظH0B.Ggd*q <`WD7. 4b#ctU,edmjXuy/)T**pCƢRβ_;wh`,R{ÉY=JrysUQI`(Ԩֲ/km9h3x` he2ai~rìQUIZ:guq,@ez qN_u%CrȈ53ǭ8+vo v9Gr(qUUUW񲰩|"1(ɖ `a2"1C&xN%sLf)P񛔆l88"ʟ(*:V6Ӛ9Dg}Iy<- i2z1|r6N@Vq.NDN *εi`ډo8p9iY '5 l_Ԯ?TIR}ޖA }ڞP)q\ y,n(( 'ۛI$Y $@) #˄B, H@ kB@*wx.u^W7%{rJ 1%q5ѭ/n~ v<W;k퍎=  , DFo|h־pmJ^. փr0n>yylQFy͂9NXtR)mظئScq)4ƇCPe2 Zi_4ikF448Q[Nm68󠝍)p; -C J%?" 9395X/fu:"h%lt Y022S@BD91Qz0گ$̒yϟ'0FOI C)ۖ@;K 2RQ$DLs9 ϟ!"o6^촇 Ctir2d}֍:Ѥӭ9ɜ_ +/eHp07NV!) AATI3)33!$gzWwwv^'f =2+?Y|p4 &t wwqUUUY_{)Y`$n!A+)0feYeIfc8/{{9{f@(e%`r24PUM45MSU1{'/\͹ކ4!C),&S(*.^UWyqm^Kr]?(*Ӌ/{ֱܼ֎Rw /+Ktd(ip2DI!$Ix^n}W|WY_L%!ӰhJ 4I,@RQT2JI$$LrdÌ^^}omͶ(J 4I; rJ (h ) c[Wx< i 2dtIfY$I/IIA?, !nžm=Ӟp(`}߇x~d<@!bmw[U⟑ϼ~Lݵs?x6-b ]n2隢J)*L}bjyf\beo ~"/ZPP42t_hѤѤֿ/ t3 {Un'[@Y$$h) `!)%dBI2Vrdɜw}uGSN8?Il Ӵ  I &]&6@{/7KKKw>LDAGm:NPAF  pc0gb39rܹ| C(P-)fFBRD1g&r'`w74PА-)fFO^Az=O4I~;gtz98 X*o)3K+v:+ӠS hjIKws=cN##o)X]ӡ%%p4PSFM(853rXβcdrIya22=L%,` " ɛ,ZƧǙ8fu6t%!d20`{ JYdj*Iddsrqی@]4Paii)4:$&I" *Iffb"#qn3sUDŽ;J .X><;x|>`}>~|]<]g=q\tNPk I-hfBY}[EuѓϮD`9|'d (\h B@3L˜Ɋ.-̇ru6Y e=Vj_ӻp!ܻv~=DM/|E'9Y eO&b!!ɓ.L30b5s=2vLyƏ>99!u` N@-ƂYJz'K$$C1{﹞;&<⍹9!e` N@˖A LpPQATQLIrw7_ɍiJ`t.i4I!$9LC%Ars$rw7_6|.R@en ,A!OPKAC^L0c5$ɜ`}sqGy$h;ih)MALL$%c 33>_^nadt;ur1ŀ Hv4SGzA}OꚢI'9s&x1Q֭ןe8l2FLhF4h44ѭjI'9s&x1Q֭ןe8l2FL412I$A 080b/7xo7imea( L&RR!&s˓&$K-,<'߳~y- %p逰dPJQ2K)1Lֵ%U ŭh{s2H)de$a ?T!$*/eźYULغܯx8 YIa!5kZh(3" S3vf*2y\dh r Ha BIIdDDA䵬yk^&O7^ SAI 2~m;W>>~O90o,'&{l>v Ia%(h3{ص 5 &{[zCL--/i}?1 So6,?~8N_C?噙L6gfgO^ύGuw}>>@O/{8Z1^VWn8JCG???Gm{tm{kh}kk};-3o6s[i8K4HA5c~>۞׳Ϧ펺=ţ&~7|൧m|dJd2RPh>$$fI$YOneݕafPD( E__AA:^~?|x<?Wo||=Os9ɜ9/{/l cѰY4'>IAt:?7m#c}}s=ϑ,;N`|G'>_ā8C(t,8M:4}_Q'鷟߯{=>ϯ~>q wry9 C,#HJ#q?/ =sߣ}c}!= ?s3ɕe! ^_'ks<<&!ICKC,44QIeY 'Dg9ͬYVխ38yymiwFBBdYfd]TUW]#ҘJ7(*4Rd0IOdII ֱ15u=Yכmh 4;)#)t`% d())(grKsԼyր~#Cl2LBB!kd<ŭAU/)2S)C PS -,C+&/E#'O89-n;&W#e(a! `$E44$8l1NsE89v9 Cqpl24HIidYY M{ܼ/nxx3{c7^G f#Kp & ^ު&ck9r?w@HVI)eK\q n\UPDf9׎sX.YvWݻt';mR;JY`(+DADA N1{1F1ܼc w;mR;JY`(* .L2rW/W7/c7tu=<1|$ .cH%!)=SEK$HK.M\{ݽ/c7g&/OƗ $lC-?ѭkA: ӧAUg9>x2%7{!dnW~ƍkZ ih֝ hϢ9ͭ\~3ϋfVp)Ӱ%).(! T,$$:HrŬy#9lq>q;1[09e:L$B"!` j(LvvC) &SJ`!!%모)/iaeWȽewwt_T5Ŀuq l׏-'PR=%,D̒̓$d\vn^/{د6HB@e%:K)XI DDA11.^M{wպ1[qXYBVW+)d!`pd emnkFuPA6\ߝXYBVW+)d!`pd dtkEPUPSOF"fDR0&|Ee@rKe$$&H.7|I]_͢rUKL ) ր9LM%/$YeBeY80:0c/yoE||^/:NۄQ .\HJ{,",!-=o}p;nRZgCZӣZuZִ0f ݽ[wvVyO/ !ra!0~?@UU tZtkNkZɋX-f郸geo[y~6Re%.=*J1AY&SYi*>h,z(@J@@PJQH U@ P@p ("%P @(EP"@@ԁ ``p&:8eͤ*БR(EP")*EER$UA P JHD)@J%P@@(@U@U@ DP <H3c_T@Xe@t5@=PE*@p7%N.TuAJ9#)9Ȏfe;vuk#0AXp#`1g\T#`cXݸ1 ;lkl4$ P@E@ @ U$TưX F`Ow`X#`fB :`M1c`c`́566 F`A{#3`aB05N56 llFl l l  N&Fc`al lkl 6 kkD6k&A{8llzB{5FưFB66kP) 'ZG65qҦgX#@`G`cX!i:CHRwnlhcmlЂ'wPС* eT5Cc"6Ԑ%Tk 2N޸T``FGvJi AЍƵ+‘ "H ue#E&L#MFFLM4#LLi&  ib``i&ie   &LL##&i L"!H&`&MzfIhSz & T&zIO%?OИdL0%?G)?ҧi `SO A)$ h@&i4 S2dM&&SIM2L dAJ4lhA'zeOCM4z=D=@hѦFPzPэ  h6S@  AmUUP)T"`OI &L4z0IGzS&zO'Fh6M1=MOOPOS?O5=SSUO=55OOU?USUOUOUR]YS<)eFQ`H|X~"r,; IԼ֭q rb2&$b4c0ԉZ:*tз F5YXgt~= bʎB5úH`Q*@W° TPJ{{m?O R%Q@]"I:Ԍd UD2ć) ,)XWL͗&[BڿTJb![K_'*^;JʂBXmQ&2cHZP?TkT}CWUW&&֠@(68"5T7c60K8cs#EbxI1DX,8Í8Zf$L8rˁ#0F< :/c608,g:p@ϑ֑|vgƄh@#HtL{#j1Z( Π `;R:.v6#d b:vp;l7Clwgx p X8C;>&(:>7r8T9h( Yi| |/>x@ h}C@.q0D QL,2~$S~-o5ivzyG{xw'}9psS/?n[unnoyv۷oon7nnoooonݻv7uvuvonnnݼnnoooonnx7^+x7>>5^+x'x77W/?o[yvoonno۷oスx'x3x77x7x+xx7x'>>>.-׿͈I7yYr]ףW9Ktׄnmع = F'dCj^Y.B}-M)*LwNIkʷx=k=Xxnl߸o&bsLL}2 L9q 4=A8#mPt/Zq2:@T6 D!iJQ=39)rޗܣe6V\VՁ Lv>m\HA QĉABRCг*48˩0pVʊrv*K6jeAD T1ƖԖҔL9UB>_VB` &KA/djaÄ^~6,UjrYxu5Xy%h Y514D-4 ͵lAY7ph8^-مe#jBs$p1A<% [&jFHC|bx+U6ߛ; 1' 3&Q"|%!ma&C+^xBѡhz7r&^BrQ@/o@uD]tc@rd%> ݯCI[֊$*4p!i XL`šmޭ:;:aovlũ2nEfbkN=$EC TY@\I xd8v8*urʖ7e"œ8L| iPb|v^!M+<5G_l͐䊴4 S\OEHdB 6LkpHMVѰ3bx{W9DU`$1bIiw]dH>+RGI7aER98 O/.` MKA" QA B 2bT'+lv^^i#RIc}$Ih"|bH(<%weƣxt5-Q0$-sT6I:e#[:=5{+`;LL݄L)KPllqs]yXo 0 u¥{%Qt!~X7 K "vWn ^/@\A$u76l!AdugP_gwEhyJkƝr/3:Ay;-&F$N[IY ca f+'D 'e [FhzU$Eٮ>Mmy؈%e9w.^0!6d sI"#V nԵrLa<. mi$LBK.#y;QQF$fBXq 7u Y HJHgudjWrmn<+xʓRYdRQB&]̈́MU+1,^ VO +QBAx֛\j}rՐiF'5lgl$eNIαk02JyKhc;yC%harZAn'i)KC\ug' %h,/fA."_7qn9&(j'y-nc Ef8/#$(rxtT bIm8aD7#JymMEM3zI%cvPޘ #҅m|942|I„O|H F\pyfm% =$3U~d;C疘 ]℄{X"TIČ1"EigQѕdDMdj+ BTի< |R]k>!Us+BuhJ΋گ/E3AEW7z=dDx k9vOVvAbLLvpwZCqŷvF;W̻1CpKX条.#2f%Y3VZjnZ#qVfCۊmgV^XDuVoCNhDDŗ[Dn)p4Րsz%n")̱ aL-\xK- ko<99&LtN6TbT߆2-PG O [@ = K׋fZҦ#QM=-v#'}'f`БBҧwQi{Dak8I'h'Osg݌<'an\$C%C5b0&.u]Dp%kFy\0)dD *4Wf篞9#x=Al>&ԥHEweR,Yǚ(⸝Go:Tx_ |Hy-ሦi B+T[V:L՝<6\=} Za*$6}!C[=NBHE 9 Ӝ>&dG7V*Ȼkg&s4PZ%`#&ۑ"\E 1k^LBŒ괧،!p{7$pftǂ 9 vx2\ j=Ȯ2a`#$; gJjP˒<^e$wY/]TIS6& paXB!`քn8KYXw$hI`%;pJ;;6*IQ4خß# #ꆖ.1 fUEr\ٜwN=łY A",Y$L"ɮNruHQw y&7ulZ Y# b1T9Zy^4Ue!5Ըqս\!.>I&ݴPUٲ_) 3YKN6ζ2rK Uk [ $WܲDzdTMYŭ/asLȋޝK2 qj8q6\Nu5":TEk-=/66]>tx a/i|+,$8 箚;F1l(LR6f%qP :9l҈HLlQ҈6LԈ*/SZTa p ˊۤQLF4aIļR~4_h[pvgL&cj3s7J0U1j&zYry\>3gV4m:anq|kn˝KzǩR&&%/_FFU,ȰcN%O.Rw:zKfZBqV3`1ڹ^ mHX $TNq5Zxo+%0Q p:1;Ri+PDM5sb8Li"F%J&พr#X$=\ Nr9v +' ZG $0qtfIdZk њLv)#i]]{i[K6%+ nZ%q+lm2=Ӓ^A j㻻ȋ$8 dJ ) EejifP,"Aq()Gsۑ_rMpT+<\dqWdd .-_HE#U|͠8[dW-v2Y< l <1y (Hq|iz D:G}<9"D}˾& F0"'5 R z*'md2+EP\z`.q dTqY8hHِQTQZèK#a4!Ȩ"."83pQY"!ZadGL0,o[<;p XDEY{vB̎(㶔#CV [I *h$jB[G(fbT$H|$ 6mjg{US͘qZTt$ B% 6pm[Fc.] ) c5,>Lt`kʄ$Q-]lD#G  Q2e H15vIS9936,Ṟ9bD:hH" M@ݠm$b$/]P b־s]yr=١F1k׎wϦK[,Ril9wDk/}S9ĴImaSkwԔwzv@rƫAUyn/R[j>ussssyݻ|P ovרnod잶tM7DtL AOj:-iؾ"̈́Rtפ}|DQgh3m#~'jB"gN_g8gmW2BrJ7 g,z1}KČ~cB_=[7xh.s䋌b9刑ێ< \W-:MdLj-1Xu8);%n̯hK ݟK\]ԓvYd[_V}R_NS_ 웚LgL<>~hph Di +ޗmŹxtƉy3v),(C*fDzo[ jPqكY3$GIyaGib_ _zsT_sA΁IwSPKFQpkPY8{,3q]tbz/LuRtsc'8RɎbK25U0r$Ozc&X}SUsw=4N#́f,IV}_"qNJ(`4$7u/z]5Fٓ_Z}RuzĎsEdmt>W=FϾ#H/"T/VHOK]π̮cH(f((ﹶ'=o40[*q}v\c*z~A+0ܖ3u?OqvXVR[s{KQ;&30UA8?4 .(6~}+5LBOb]=|gɓUzL^+_4cf{cyfoV O,Yι/ꛬ,%cl<0؏`pRVxJ7SIϊ1U|ǟ(=RQ1EL]\7gEg͒*/oA «ꢑUB|AazlDS/773Dtur\V ϖikBeꈝ Z,^moʐGRjS{3Wft#h$!yϭL|>;U!}4JS-2s4lϜnt7*vlkV/O̥df(oea>O#ߙDtZ\1ts#7h\ނ;j矑`NL.xM]\H-Y/#-%'ԙ0NStKƎ&x] HvxO4O%å#] V)3#Amj$eѻ6CA@C!%pfY.C˾qֆ9t:jdr2vH&iuW|߇%Ik!)˺/*.JRLNgKrk1ٶbP}1mh9smޥq˒r,}0x\!Ղ82m:Mb NZ׎)0oFqs$?wZɁNBeEbRfx:QA0Z41N ,I~g#Hh˼E+0d\rҾD'Uz'VX7<^:-{w]RjĐ !H:\T^^SK1"og(TB1HR퐛XՉ\v0.]˱)eg>"Wwq.Ow<|NIҒ[&KfrQ_ap"v׳WްgMןB&&WHhzQF+ W F_p>W/< 2ei?GJ; Rc1L[l6KieIwG>}595dvBUDʈSrXZ6|sVv{D=nZoIhVVM.ŝHM,=V0| ~Sh: x=-J_;%V}#Ρ5DHԽi5t xuAOYRFĴxtIjhbM%YrIRi \_a|Rn+";8KȾEUсNFaAYr8.u"~.a< f`ij͠o~̡΍|̐P3bgT\.[#KVvx? Rh~'E]ow_>\gv}Bo_S_†U*v;NeB;ځ vUNM0i諸7"4RBɭU%SIcBHB/h$ ]>|kr^dִE?0 ۫+ ax_U4D 2#\7,=70‹Fq ҟwNpń`b $:{Bd'$C 45e$_D'O04.06ϷR%XL?S\` &N&vx2B%ha"m Zf |lm{lmZ}6sp4.A˛.D ]]܀\\r&Xoސlؗb]݉v%pXB~ x%^ vvvavav%ؗwwb]v%ؗwww{?ۻ]]p]ȗ"\\~x.B.nnDK0 0 0 ++!, K BYمYf%"X%BY7,?l j%j% kkN p\\\\n.7p..7À.DK.D.Cwv.wv/wvK///7ww yyyyyyyyx&|x^ yywwva ԽKԸp./~ O?.8O>/0C0D0C|M007򲲄(L2++ÕA&PY[n&`f &``&`ABe &PBe &P@@An? 2ww L222## 2#### 2 L2 7D ##########   L7Ct2++tM222(L2(2(7Ct302ww0L303tM387Ct4MCCCCwwH4H4H4H48CH4@4(2(L222 @2222222 22222211118C1LA8@8@11C2 2   2## L18C222 22222 2 2 2 2 2 L8C2## 2   2## 2e]n]n[\.cg !&pg 0snug &`f &`:]u}}n1vX1_/˦kPMAP@PMMMA5 HM -- -- -- _)<#c=o[:η[33(L222##|7(2(((2(2(2++((++(((2((++++++((((2(2((++1La1LA1LA1110007Ct11LA7Ct1111111LA1117wq111111111A111LA1 fzz_;w/_ qqczU7|zzz|}zv]ggd읋vvv;av]y/%y^WY_/y^P HM !4 y^[򼇐<'M55g3>|G#r9\NLw;s湮nnnn||/< Ν:::tx<<0ãtt:tӣNK:].:::tt::].<xO .|s>|ϝ湮g3k]ivgi|w''.\W+ܻuwqwswNw]Yrrr9)r''.\W''*\)s3ϟ)w]uvk<Ǜ<ǚyyYv^gj ii &Biiiigggpgpg &vv```f``ff`f &PAYYBe A eAYYAAAYYAYYA@@0&0ީꞭ4jզgYjvggd읝yGy'ICy>O?gyWyo-Uؽؽ=/c/b/b=a=L?b~~ ?'O} 3D $L2D 뻻 [ZJG(PtQ!_ (@`8sL1>y3,~nZ8ڻA zKH4OHGP.2Hs-ϑ}Qk-o^quqڱ,z(ǤjUwQZi|,Nh2M8Ƴ#m=^OYx,0esQHQI -ah,a=,3p2v941 \Ի+3.Rʆn$nx8jYM70Fp4V^ޤ4dQ+2ӭM6HT]r,WfݐH& ȦxHb)5z)vy V$>v,+Mdnayu-B6#Ƙ`^ku쌲Se*Hb»`&Υe=l[Jq(,58۞=W{w ft/Mi7'<,v}sg#'o[ XZǤF<8H LϠCkIq>&}]oR8zp9emX[ҭXCDy#iܮ>5^! קNz`#GZ,Ce3ZvԉʜgY`;q(6g'0ğefvՈ^k<4pZG|>G  B B ?SS||||~~~~  LLLLHX\,,   {{kkkk` hC(X L: pzW9܅?fHw %vDJirUUPA rԖ,P( /f><}tNǍ䱐Jhhhi,obcc%utxG6F]~ll phIiIɄhɄYYIHHYH{dēL$*$a&rw|9l*rrrrr{;;;2H $p!29a&29rx!a&a&2;rr!" ~ @I$  — p˜ ` lO A<~?8367>?0C#L)) )- ,)il,// l6x7~~|'~~~~tI&&0 ,)   n޾0cO65 660cPOOMM&k bggIIIIEE&Й<5YYABe QQEEEEDDaMML%0R HMMMMEEDAEEEEDAEEDAEEDAyo6feD ffpSgpffS0RRQQQQf`p&@TTԅHTԅHh %@TEE@T@T]]XbUXTTihTUii %uuuupWpWWpm&j؛bXXXXX؉b%X"XjXj%YYZYXYd YYXXhhhYf%YYhxW}}xxpxWBm؅oXjjYYYYW׀WWxW׉^%}}}~j`V X%`Vee]]XXheeefuuee]]]]MM@T@TEEEEE@TTSSSSSSoTSSSSmՉV%]^ee]]XX]^`V`V`Vee[a/>w^'xkk}}۾rK,ll_^¾+_^_^+__@,P5t7BK,,55,,,,,,,+į+¼+wwSSKJ@,,ijP5-C~-K1,uuDT5B-B-BSR-B-BK!5,,K,llB,,+낸++44H+*¬*¬*¬*ī|M***5J*****44*jjB*D*B8B*¬~+|7¸+J+55++PMA+¼55,,+뫵5+++7+¼+¼+++뫫5D QWVX5K,lutM,,,,_^,___^K!5\,,ij\5,_^\\__\5Ka--\Mq5-[Z-B-CPMA,K!6K!,, !,,B,Bl6_^,B,B,B,B,À8ǃdM,ijgf-BKQ-@-@6Cd---ml,@6@-B6vlijK1,,,,D d6B,,K!, K q5 p PKP Q-D 0K1,ijMP 1,հ MMK,D K0 ][[]P P mmP kkkkP P 0 ][[[[^8DKa-K` kmP p p p {} {}a5 P K mk,֮ மְ J ][ ++7|+++++J5X++**7|++8xk++88++Cd6vvvllvCd88xl,,8xl,,,7-B-B7Ln~=񏽾k. pݷ й K7 K.ĻK.Ļ ۾ ྾ L 08D  흛/ K1..6DٽKн н /D 𺺺K .ڽKн н н /D нK/D н >?>?1>; .Ļ.KXMa.Ļ..Ä8C\5///.Ἴ KS=C=OSԽK,GzQ< 0 н  700//ss@0lM0Dl6L!00C0C0D L006pp@0@0C0C6oooo@00L!00000000000L!6 L!00L!0 0N P P \\\\\]q1 pL||q17wrD$L $@ 2 Lq11 ||p q1 *Xo[NۻòvMۼyC@d4KTw'CBL@//=Q]O#exO8nd~z.~JyubjĘe" :#yUi30Ҭr)K% Q6ts4')Q3ǔFdG2bw 6"{fq(61[&!kwU2*ɀ֖1ssd,"9BN\\^:$ȒGqKfrN39$IǑnչpeȡDYmH(eEOseg*6-A[ݢ^4y&,Ԯ c`28`EqmW0%҆בs>W|6Bׅ0\|$Lz}U܅,ra9cxx&A碆`q6DR>\Hu3h/ WLTMԵ6+`'/8iԜHzXk:',[6kYHȨ샊=S] YlQU_'ޕ:tzxD9-udx4E<щɱ\꫻!-Qz[p->1Vd$`qvIX CLҐ\Yk!\7ysIX5s[JN7oI$!ղ$qU&"u791^ ׈'^1d^=kV_@ᪿ-vptSF^ 龏[Xhtbt;:w6W62u Y\q׎_y}vhqF&X[+ wֵ;g:0NyH/6\Hy!x$H8ǯ;(Gmm` 斖vvV\` LLLL ߟjjjjwm=ꚝ'o(:ب`G~uyÙT/Zy䢡PŷyLuNY+FP ?e`3# >fgD@ k?.% ?^ҟܥ+,' J=7FTP8 n0/_#Jq/4~8vTpΌl 6g ~KQ+ DZq9[><:'*琿аQ5^w= TgE5YTv%Qk( ) PR1nh韒Dc="rsCp;gNG2<9ǓOvл%Hd?MJ櫓s{|-`o*d3ќwš,>V:T^ rK>kխofG_4$j ᕏەy8^}R![iG[o3B»nTNww0Xz&WC/9'+{32ޑN1.OtQN+ܫg"۔d.!ߎKIg&~8 HH) kWJ8i5(e2;ѐh\ 9)#=Jմ~z1\N׷,'a2h|y}3c%\__ݓ,ؽq7'Ux3N.poOcKHѱs٧ljUsh#V32(yT޾->pA%3~zp%rh59˞oqMa.>[P'?&hљ>~rd:Oʦ %x8Cu’l_ϨF]T8D7۾[JAry7[`Z#.ծs}JnN4:\$3@ f}_@1֭w: bsac`7uoSu1S{Cyy/gܾ_,9a:!]o =mG=`B2l.?0 ggЃ`uu00~TGnɫZ d@y` ,j-paq?/ׇQiiiijjiii.lZ$5B$ -,T^vv'ggխ{Tmmmm` mm` mx;M_p ` ` ifm e}{kkkot322!33p`p888888y|! '' |'+oL/ 3|rnṇkv?wMH?`899oPn~)AThVV;wCXZZOX `??????bbbb>>>>USSS>>>>>>====S0====SS^^^?#p8zzjjjj]]p0*jjB00*aYYX!!A]] nbD./0#::::::8#::BBKKH4bb`&VVVWbb`I%elvwweBT-%BT1mmDbb`&-C-wvzzrrp'jkkjbch6jjbbc#"^^\%.^^L$D$C#"NNBB@$@$BB2222$H"bq^(p8< ؘxl6&'0&&$"Cۉ‹‰uP",11##11#8#ddBD$BD5522#WV23::::31238#@####0 :::::;__BCDI$$00$$6$ddDBB@@8#|7_^BBBC######}}''}}//////.11//yy++++a##}}|%|_ ##}}''}}''''!}}##"!yy r! r! j H &!"Ҳځ0j &BM 4A9999<<==89999811++//&0ۻA4BM '<====Ì==<$<;;`8xh3))3333))_^);:**83;:J)xvD*B*BHM!*B*jtjjjjDH4*B*BJ*******44)444*44*B8CBJa)));:ss83栠ٜ pIhN  & P `Ɠĕė\I0 LI99 LI LHLHȰ LH   @ ٌŒٌ0L }y  0  yy//55$/JKX5[ZXIa0p|_(yC lI סJ ޝ НtL<<<9 }BP'<͊NprWYf&Μҵ!dž6 xZ0D⨢IB /[ɦ3e0JګF'Y! " 49㷁y{{x,3:[^8lo{ӹ#[@6DbK<clR"a-0DeB4DJ\ %s4X,Z$ 7%R=9 p[(2G1ʱ:EvIu# 06bH09WbNY8H$WqM"-Zm -~y'r;ult;lMZnjK׊;㨻3s}߫]{qwzB@2p3n=-ZX}N㾓{z$)Yir{{{{ׅxUT%%~iIS$$w ]fa3Ahq%n`ы!8cN~ +° 7,S&++Q1?уqVVn.Vi(rq-S;q`1q[-mle%@$L8^/緂y{͵\ ]~l,,  47¼6` , s}. Bm76DD..AA|>nj.4445Zp//ppt\.$"Ϸ᡿xsOOOЋ+*tptͥ=|͇Ƅh}~->0x|mMQMXxk !{ -1c~ɭffeeeedFIA%ddb y=A )&VZЭ pgPz񿇇P4Hes!2 @ ->[P532 ---,{z--KKKvRݮkmr(( lX}ncbvv`MDy~}~}vvttv`'x ?yy>}x7ږxGgg@tGO|OM–OO 0–ʔJQ?!ON)–ACnnnB= 0 鹹KFmmmЙmmmд66 Z7B} D ~[[A7vm???0+B"""#|!hoPa4ᡴDM!0B+B0uq1qzѱlhlh HH {yyr rr '*&.4?y ogޑQ*QLN Oɜ/\-,V+"@Ħ.ξTH] +l01! ^Cb4y\*/(2ؗ 1 +Uƾ{Q {]+*@ʁ4L6?F 73~HzB>60:6A=wp,Ci)9zpۨ98^Ѝe z ऊje/Vv';ydvFXi [w{m`%v*Іt_3Hk\k:.uz/UȤQ\1Gq3|[6&Ԫi넽wg&vkyjDۍےD31!}{LPy߃}ߎ.z'n4A$ƻ.A.QƹdæUD&/EP1cDPV l;rA[Vrzˆ^f[V LePHZǞ^x|oO'cl mN'u}g/ Z#_n \LH(/w _^b@XTv|${JrUVyvowݛF~1~Y ^reΎC-J{TgIUW0k7!w<};e] V+,u^7B:d=g)N)(N1YiJWχ^-o`i{.K2l*> I'+}D-.:-&YO)$p\E?:kW%L'&x4?uH C_Ż*5D:SI#<٦why}3Ov;kx= T(IuI 0|̶NMe޳ƴc*"&T'Bşi]t{zS:Q^5`!swhܴm Assk#L]z^P$1鹹k}&~ҷ6;/w zOOO Pܽ&&%P:l{9wA4az---,I^vxMdJNtH4 bdtw0ɆkBBZ}?ߍ,;g17A^^7=?VAB""ڜv!aaa[)OE\Z)⪪:9MO(6C piyg77q PUU\X7 @YYWWssYYYss)ﯕj]]m?zˋLNJSYYVV??Yٿ?tz=\MOBFFeW,P`૫h00''566"XAAssA b!ccaar!RX//cctZ_Oy{``````^^W!MOOmlkkpED0+))NOϨzZ_/nrSVnmSQ]]\QRۺt]NKVV]J۫ ûS)ę{YC eeffggvjPPo}ο_#AwvBA} ..<0#)$@Q?3,7lɅ~`kW掭#oHY]^)!i2vyP+':͎ yH}>;tqֺ57|gAoqi,!:"*$o|MF30GtXw=;^Aݚ[[ߢEFa(0hR8nuq|2xPg x,d4qS #q62Y`[, vߡ:U~闝)2ZeWQTYB\j=N3[NrcF~Uo|Ǜܝv8p_%2rta ,+߻YMʀK22ۃ67?a} 47?w.nU]Yގڐ)KK߻bbhy UEH_<ךhhIIP%y<'j{Xh}neddHD=g{{uz^757GF~g:Mrm0>o227ﹹ''''>>U_ 1>f`unef&+|zZZZT5+[\~:MK>D@ ,{, Z#*xbcI-=3TzgLߗ -Ȉ-Et-7R?zf~ޥJg󎭺DŽVFAWk͡k_*#l׏VԸnQC)}K1r2ΩF mYi~j/͐0c-UpA\e|XmW%4s;/jtӐz+2q^`rl)Ҽv>A'Yu֫6aZ|M=nO! wG_?! \TJbV:VlWX%_\z :p#]U0lȃe8%{S9 B5\i><.IZy]_ஆO?B1s+Q۴]Ky{얗i ੘77{4ksssSSS\}C37G<'[\פ=x&/R{s$;:bfMkO~ -ML uHʊN_n{FFFF갦lxW/]\Ya)((x|''m AT!]Q[:~d~ɮeXO5~E^<2)eBBeu^yW+w=wj5T$Z 0LLiQ&0ϛH Z0''"D[͸^5JJтpu_T1u=(""#9" `vv?%=KMR⊏_'k!GG0,9Z7xn d\{;_nܲEr8bF&GYݝk!oS-F3-׿ݭ2'Ϥ~/~<]Ne~w};AϹII:+؊!T\I>AL5H7l& e6ҏ;{2i-8L%jL&O~Wpp3Np{=&FJ]{?‡2[=!TI1e.mo=}Uнptm*VoE*0! ^U5]40AD5PVȽUωM+FЊ,Iы^N *,Z{}M#~~5Rn:OӽX-n/1I+[|Fg [qMCht0ã[isyu,WvJ|J0fP)H Ly҃!fnYi%!zz!z_"?g[ rKj́wX,wL}z3 MMG0․ ̇Z4.jNPƐ5V:<8į4-~uKt~Z2haYeWʺe(~߽گlzZ/tSD-j0fԼ7 nuhX[&Fu;/z`pUK]T%OMXv뮪hl}K#cD *(%-IWPVVmVふJ;Ax*d@X hrzKH@|KBE~ΧoKNuZiTVl OY?J!n>$Ԍ)i^dŦ;] 9VI$!q)P !DWiUI]8":B*^ǹo]v QDAZ21$bLI2kqnb(E8Hr. -b I؀ɻfᆢi~>E^I5îdQ;19F-m^n`gzmRDءAJPl|K).H` &Tj!GGSVǬA9 nEpeEV @! +.kMwe&vw^/XL PqieqI@TtpBg!X䗛Y"IFUF$U1qW4[ˍU hRRl0Shە ^\[&z];^}4rli-Ԧ}mQ=pӵyskEMY!bL q/a٘.5fyP1< VGq;ssׯ>4/r!3C|{T ) ff{Z aVzJH R]b5n7k6rG{˲'qr*J2zW,\DSy1So8UpMD6B&"z^;9:B=pG\ys=:3\XZT%;k{qM;)3Q nը{vw^,,]9͔\0 `Qv≴ۄVl _-L jJ!D-jn$Z+aI,xy‹bC.LdH×ˁtTW|5L0B. XXaYvV)gL s-N|g%dpC ܐ<7yys88ur^J0yI9my6RlXm+IAXZ#4IMۤiQ&MBI243.#6]ܒ>F8S`mFc1GnȆ{1, MہZЎp[fjY[i@Dpp J>"`ajDɬ4|6N*BQ TUҳ- x8ǧKa-uyr9vL{S\^H@RE#a) 3VUbI K!r;$#g GaUx*y5bb%趪 Ն=B`K PN喳w/9(Ҡ$vOj7,AކQ`BCoD]ҴUif`۳<$T;5HV2F D iU+^Gmٝ=u^"kيAdA%R"ejOb;[$ wnG'3Qu&*HGYlBd:L\ R eK%DX(lY&<`EvM&ifDP"Cm_e6ld.KVNɈKh0IFa}Rurw-rt)s*?aBM'7$J̸u13eH5-2ibb 'X1Ie^mSgUNzkXX rl&i ^]+_7mRAoD5]e$$"C jȭ6kWf[Jr(7-$l" %YEUیC^zL#{8ff(f9f{~ aV G=V5advsywZ"sV'ZZGOSްIyQ1GgtFs]Xɭ*W\$؝f5L%M2$t*q:a2 RErQf@,H"l̻f H$uh5'6Sl k;0+`#NI-5"O9jL[yҦi8T09Go7pŚZQ ÏEV[@l7KhDI%)!$R-3D>3xpgseu+kMMo^8Zqx "M tBvwzBN6ˡqV@ ٦=}L@-/'ɉ T'e #Lpқ X5l'k05!cyAVAVH<8di;f):R!-G:pRO$H*q<==lk$4PM2LqFuJ& cm-Gt.l,VC(aǾ4i-68(ّ]Iީ3ƒ5ܩS$W b8 * ֊ #ș &A7`ylI3Ɠkݎ;*maMnd=9ǔ]& ɐP\vSv։[ޮTLEǍE1]+`D $)GLҖ ab2DkG=TY*$,b4mu#'M"^I 6yN'nw^r3#ު N#"Xr#,ET!̷ qnЄQi4!ll>xvicD5XCQ!EEݻJ{wThz6wzÂ̶Qim }VkbczYۇ;Z :$JFQIلKc׾p=]Frebaγu"x}o ,I"db)숴1!QT;6AMƵb-HG})iJj?yd"ݸ$8 J|`PZ 8u.8%6BlZR1l5{wc 8@Ć6(ac5-XVyuΡ!%"7wlz=7ǂ۔SOGgV[TB$^ARl^cAS2r1\໢pE[V Q (CpfCmԈ\m҇j` +e ;6,6L֘ylswَ/5UUU@Xzz`&^RA :պ`֍.'af5:KJ|ACV)Α&*.=e"ՂB"Hޭ.4}Mz|ƃ۶-c%پXP0X=`1dnKL9afvXʀ)D@˱Ć(CkD(PA2E3Dn5d6vj4iFX^77 Q:BYIr9:5x88bto5ŹFfM$ƌZ#Cv+vwC \[IĮ1pD'hc$͜bפܢhыrxabFDKg#Ā!.=$͔[9 Li[N8#/ٰD+]@vDET%s\LS*kp[fFikAi'ۼ1H5VtlHѤ&NjY4j>PvcD{/=㴽Q GևC yhˤ")Q$Bg apFZ&S e$Ӹ0#nl=:UNyKgT8;NḼd;./ăj7^jCGHKCoVfm4oCDTl.gy:"k;uEYFWVR-epUL,Mr5u Ni9sY(j,^P% 4UUTVC6Ԍów$p9&8'4䄩.H1bA͒fYv4q@4 Xq6,x02d] %)dbHDj.b p$DHw&軖Fƪ@Ј> _]C]ǝʗgm8vl qPXv]MqQ#BVqZZJ_sf-!*8o0^5jƓWQaJq& m[]VSDuuph2&g$ZCMf"y1NѳWܥ ٍR'Ѽ` <@`;ylZj.ɓrYeԈV:% IYxZ/8jE􊗦,p:HD33)!Rrtؒuu0Mzj-X09Ե]7aw{8o kK wɏ17#[6s'᭔,\%(ȎN 8. NӂA拉 U.!m$fmכ2# qʒI. b&i4 -蹽8{<4JƬF$1K#Gd0B!RMV<[nF! qX)+V0GmzgOhD؜!C-&* Z=,,hxY m hl(2 zf`M#PbtYɱv":)3 e㒑ѯ33TrF0˜DzoCz\Aͷ3,f4#+iMA)Cx%EmMX8jK{`c{#`뮸j0GV"l$jzl*ͥtیHt)z]͗zq` #&8m(*$AĈk5(Yl2أbej7}E6ڻ䎲rR;rO_VDGG7*ݔk6ZŒdR`T21`GʉRbr93Z#dkh|o5Q4Q[ #e.BˍqWA`.^(q\,l PpI9r*9{***):-ꛛΣ,Zxh;zel5&*3&v$9mTS]MRwp\qP܃N! H GF$*zUqsX8D*V+Q1jDƖ,Ʃ-&DE`Umʊ>^G4+K sɃdH|KPT8B!d-dRgrqlnNN^\G55 [+l[I&)1aTs]9yrY5}MJʼn0UE1#@T b b* " "\#f)$3CBX%.I1 + #0D4l$HH{S[$y$UI!&,-#ҸHI\d ’'{(8"*G $ecX#ZA"ɘt귌!W!V݋U\lRT7b3JȋDujHDe \.:򚨉52!XW b6ktU8^h3ԑcTs\o9mK =if``uxǝxӎqEuxpNM#4" Y57]#G;;]H2&MIrRl!EU\y%rYr+9onD\F9Y`E* y# [9C*$VrVbrG f6ښyrG\{٢%Ԃ6-pHk'P^ IqAAl&nsZ"b28MݺN&j ׽uVLɦhSjT΄4T֥I9)V,)qql40`0֖gݜJ8qvT%%qAַ Dֵm H"F b ezi`u-]9ג@t8pV "H"c-$n-RAYXlyPbY$T*.-SXk1Dm-6rWb.89idӍQ.+-*on`YQ#z$rpͮHdvM48.z@P&ӫ)֤:ZېΤ* `B8ya˒@*R0]i 3@$ D;mYMUwk]֎SN]9x;X%lKb1dsE(#`Ȯ `"S׎eMIq1[EʑD+D#Jٵ&LMEF8mnaG" .aq¦l1.5!C H\)HĐ(A!S\+˰xtlzML(\d#N7+ȹ8Kb,l B( !d6CR'5b8A6N%Ba&UZl5.#d pc+Vyț$d\Fȥr.&q DlPK}R;)҉Rrd9{zmvNZj؈N1.mB!ǥ8<:¤ި `y,=2(k7ţ-"M-'Y bdqDԙPIKDL#Mr'2&Tu+\Wrw+bo$J0"9 b.\1PU+GaqKD5ɑ܌THF6$b+ "eA׭& T*"T7*@Lz*[&u|l20G2H.b LL³YuLEMb 5WhkB,hY-B!x2Fa╖dž =pסwض#vG,:Hq%Jn+ CeHX]H̊+pPL9m%c9+fɒ@F1+věhm zSSI ,D]Bnm]H5X Z E5Pp$!v)'$[j] ,6*1B39h%$`5RY)Rpi%H;`kzirܜ 8䛷ax5⫒*% Uլ\Y`3l,ݭF9:pbtd%H6%8Dһͼ,[wJiǔr]r͛*nD)"҂аWn%46f]i\9y [q 9}wCWN0f[MJ::&m[JYmvy1xhn80HE1_cT2J!1F@ረIk aEyZkK3&0B#0ƱAU(U[mPѱB}}'Pa!~VN#e |mT/&Ԫd/Fȩj6>_?ۗUrm$XM)#lXmPگChOȏoۓe&ү!_ˆʯ/FF#dF?kG(a#b#oda_'p?P)l}Ej~NdtmWz6r6?^jG>t}EWѱ#o'"u&!>dzW#o&O'ߓ}g'Wѷ£k ?QHz~?IzW£KQQ~5Ncѷã#0J=/R<x#'SQ ?=ԣ?y#=Z==/zGގOθsr1#uq7\:g\Lreӓ&LLriic9Xr)M]8tӮ-:\:raӓF4}|r&:ӮVr54Ӯuŧ\ZqjŮZ땕]8 {y둗NF]9qhу>+9YYX,t䳧 :pZ554Ůteehhg3)re%\VV[K##Uŋ yuѣKKW᫧ uŎ:&7\ 44둧\ZuŮ뉃 te)&Lk\듎Fu#N4,XZu\:3SKK/o 93&L2o8nVe]qeeee`Ƿrdɇ\5\ZZXc,ˮ --=V9X{%%r*qĩU(rTKjhjbѣFX&M4hSSSS++ 1bѣSSF1b VSS,ML4jSSSSV1bɓV -,2dŋ++SSFX51b MLX41b XZ551bŋKK&LX5451bɓ -,X5252Z--MMMMML552dŋ++SS,5j,0F--ML2dѣSSSSFXhɓ-1bŋ-V,bѣ/D8+*K$V YZVLjjhыLYY2hѫV,ZZXa&VVUF,ZbţFZ?nʖJKK,KK 1bѣV2dŋ MM Xbŋ&M4&LZbѣF0ɓF0jbŋ MLXhɓSS 4hɓKK++KK,X52dѣSS&OCKZ4iibŋL2a,ZZZZY2jjbŋL4jjjjdɆ2iidɥVV_I3IR8*Er",eRVJ㜎UCNqFprJSq9G$SKȢÎ..qp q9TY2jjdɓ&L2hѣFL2hѥZZ4jjeebŕZX~JM,ѣFX54b-ZZ-,Xdjdѣ&L0`իV-,MM4 ML4jɓFZ54h 1b X`ի++SS,0,X51bѣJsFjjbœ&a,Y2dɩjjiijXa,Z2iidɩ&VVZYYX~kQ* rrJSqW'1.qDrΒNnE)G9$sR9(sCps\\g%9qNrPJrG8 U].9qW3%圢N7 99Üs\[9..-ԧ.(ML0ŋV4Xu,{yj떭ZhѩFjjo iqbūVU uFMM--V&MZSSUŋGǕV,XhџgθLdɕNa>]rˮZ{yu 4hɓ&MMLw+-4}|uF4hŎhǵ8dɩ,Z{.2&LXjj땕o:ˮLɧ\4j-u]rɓ^놎a{L }|MuN&q0`_q2hѣ=땕[,X`j5550î,1bŎQ%s8ɋaaZZZYYZVbť&,XhѥV,Y2dɃ dɩ,\L\F9Ċ',ɓ&L1bѣKKSSSS,h Zd 2dɓF0 ML0 --ML0 -,aK++SVa& 2aLeSF2hѣ&,Y2e-X8jrbū X52dFXaFeebŋ++SSVMLjbɩK&L2aLRUNrrUjbťKSjѓFLVL50ѓS 2dɓ+U&2eV4b158je,Z55ZbŋK-4dɓS,Zi`ťjՆ0ɓ&L5551jb ZZ2ejѓS,ijbŋKFMMLZY5555aeehѫV 4jbɩVVZ4jՆhՆ551bŋFLY2bŌi2jdŋ&LūVehUZ +SQqssNJNBZrPg8re.r\TFS,4aXijbVeFLdՆjK+ 0FL4cMZѓ&LhѓK+hŋ&L0M2jbɩ&ZeFL2e&MLZi2Փ&Z1dɣFXhѣV4hF50ыMLXhիM4F5a.Y54VkaiVYjbѣ&d,0Ն1F4jզ4jխaMp9G9%9"K\9˒,r8UtqW3s*8C.19s+qss9r\܇Nr8rP8Nq.8kS]%sʸ-uq*LjְѣF1g\ikc֙a<5r\3LaY us5fil?c~~e6ն1X1c3caadŌca6:m1c32e==նfYe|Fնf=٫V{G;]޷_o>NTiH')>H뒑͊'Hء بIT[UT=܈R~Nu)JI(}EuR9G\\RRN)A͕(-TeUR>jOQ"_~ȋE'wg ݩ%ղJmͪC-uPJ[?WJ؟ک='M^:%{-Nﻬ30Q?&ПڽbVDt  Wf8VYK3{z+F޻|m/q;{[yBB9>+zR>j?wTzJV_ڍ~K)eΨ~_F_GxjHoQ2@@) 7I=QQM~?70깁3>@?0{6=]]~Q6؛lU)BH vhl/"}WS}Nu~Ufz_-=#o!E?~W0>4{sCpP3o}e?i/Ke;a'zhٲ>sjlO}?EIj=-u>b?kG#RR T6b~-SCI g)t :iyߞ_Z3ܟw/k|a7mT,̶.1l6[x!P)tqslTTMLu42V$$@d!ɠ< M$ b<5$+ Lx~ L3̯_t|Uz}}/*뇘3&?ywu l₊a'" (b8D0^ꆿbbGyCQLS?ݘ.(y9H,+ W ٕG G1+\QF8&_ME1s8%j)KkS!:$cQU}jWO+3;@ٙqU'ovqU' @&,I,&,IZ Ql)QleAC\,o~t2g{#3S:7nsL!~:Dΐt88=us(s D@_o 8()pPRKGo㚑\LS?7tOW H HT3ҡ3T<|Ҫ w>i f`h}x|9J)ńqsW:Zmc8r@o+nU ~NL S0 l `W阛+s+u |t5+OvMJ)r() \+PdFa>ٝOA;!̝L m﹝䉂ES2$p/dH$G$qB+)aLҩs"m9 'e&7o9wYl$ 3.}+>43*q0"D?A?.A@d@v\ș>eLFpPĎ,A& GTgخGTg,2DPQ$2DSvUUs>] c܎Rg#g<}q๑ϜRd:QW +4r(u+̉\[HUBɋU \;@W>q60#q~8mYRzpӦaԂ2PM\\?w?nǒa1XqLV$}Oc{zT}pr@R52$]GӮ*d1{cXM*f}2&pHE~u#"Oz~)Bp)?T b3n wpԎ`AL )Kp嘹)p,I]Jb5\W"~gvpG"r$)gHxxp8!ǎq30DG?p1qIfW1pSaQs".W2 YMTȢuS"rAL ~vf)@H@'}yawu0nT">kMD" ~Cq@&㙪F{ 0l̎ *;pPQW{5L'昀V&e^Ď%Zʑ¤9?b5/9 *; $CyLٜJ90RA5dP\3LaS}Qf{{3= "dc#HĮARq&ˑK&.gX}S*=I)?kyøuɚEb()dy(DS"b mJP1 T#c۟h痪jZ$RgI)!@lw*iS=8tSja˜˜ ~s;#v"r^X#x`[+df\)âH9G/W'>|33>g|盈k̢2\D*hK0e.b̄I! $ &L>| θ Qp;}?ǯu' $^>ˀWv=;~m_+y_>U_n{=T݄Ķ) '# Oq8L+Gj FG>KQϧO#C_g>2fDMFO{V$Fd@sc&,r8(,8DL|\a6*(G"@cq8wmnsdH\5yJTdںч}~=٫拲/S ~y9{.IoN\Jp }~] 0 P3 qCL `^Ӷf`0`'i03UxDA ?s>C,f>s"t@>3 0Zfa D銆`r9zmx`x`aaӀk9_'o*}|Oy?]}ft 9fa6aQB 㞎& ęӇNu!6aPلqC_ƹ`#`3\5d (. aFD@IMW &F~ fWr32!8~l9@l`m:ADפ2%jalg忉tȪWAs_檜qT?|\LNjj-uR?@ZOju3 q2r#"Tl3Bu0&9P`{ɂvɂz883R5 C3PS ݡP"~/MP"uj. Ɂ~?-قċo6h|ש?~jj>i>Wh';y%66h>| X8œ3~3P װu_SW춽?Se8~?OKC(gHJL.g~ O<2e0Lܙ\V̽Lqgnm5gY2;!޹Ӯf ً

a\< Q?!D5pGܥlQ ak\qUvUpssa3QHft{rԣA5rlcד\89v() l<7SZu/GIUs{LJ @ymE3G5֢Uw#;ň**."쉑28sjdpԲU'}!\\z~sԑ,0]Hݒz:$%r9QVr "+w5Ӟnq9!5sSd#*a\R$ L5?̴Ar, W" $~2W.W#_1S5"ds?9c~@G\=UF|jH̏vD9㚉TCL5u @?иy"F"bNp\mi1s2Bb៉MHJ5}X?ǎX;OKysH[pR_@VTu\h8CHT=ԩDPBQBq 39hns3aE&Ἂ.I"wuT$w!PǏڜs VɏWjɉ=5Gvk?\;s|G4U\tG2$pC^HdˁQsOۛW-Ij霷kfZ{S圜? kdO{߲0,`']:`XOOʻ;jVInDUoy8 ɑ_Ƀɳ0ONLl1- ls &d;fI0ICdW#syr}Hu9b@l7]$i0޺RH/e|^<45'-Ѭ,Ȣ)5GǦ5R9l.=ɄsL3aH2O7i&T(nUh(|_idE>+Ny=nI'9 kB|^H}Z VゕSł~#˂T}dMb/i#5Μ~BmOjϾ5?/j{WO}=σ=8~Ds@&gP"bOwR&-pQ$#9w>/ٜI85.TWC$=|zϒ||>י!S $o|h4D_Ţ3CN &g5܊lNIMߕ*)H${$<)f["..esXR !=S$_D"/yx`mB#Î2eKNY//4|!<93dryys8M%r#(y_l#G+D1L3Lsߜ'' q:pp]I6I$&*U1~*_$Ft5t AC{r*rB&s;s͸I;J$yc㣭;.ЖP$ I~_g?x v}9ɏ~ҫֱ1vF%KpCk82=6hD;@ׯW|]tY*Ci =&^ dzJI"a()7&B?4'Hv#FQI/gQ֐|*qGbݿ$~2 GiςR!5gAMk!fa Io>`A;fEa/将}433[fL$oH㒶+9vԁL,cշ",l~= ɝX.>תNLUE1rI#BsO+îœ raJA. I9rBkX(l J( Ba$C|C]HH'p2|!K4Gfm/"81N.pfR9PʇS[ ; [%:>p,O{ܚt_S`E*R9\\y R"fErbBl =HYqLV9Τ{6AT\PlQs v+ʒH@ 4!4M%М_wt: ڴq^%R@Yd[, Xjer1&.5D ;5-#XIZ Avr VD\kd8,x"Fܙ֫R$|ٰ8<'N lg||#巢潻VrzAqs:|q1\döySse+G,Y0V2!}YlVQ ;%[&G"dqN11¤jl#CRKHJwvdJV$LNZ2\r T!&ﵷ;HBTE($\UdQ5Qs3^_7OďW5|{||k庽6=ȏG3f`z0l v9fw&f=끙,s.a]3,s)0Lvs3+/g/rK+ĕ<8uWΜ33334p02fawj9 τ38f9CD"es } a0$ 9fvfa\әSzp  "RSm}Q'}Q6 P bq2btSaa30GG\dop:s:_Pu"}i&C)iL A\>3\ ;OCCzjqp\flfkFlBtsS".!'r&q"Q"8X G #jdpF3 3}&T&Uڟ5[ު@f7>_/~=9!vM_溮 BWܼx B95\R|t\T:d #m\ML*yCsQpx\G "bf41!?ԁdUt a uL2♩9)%4T$Ltl 86 F"ȅj(Y n;cU\>ڱcU\>sɄA;HYA+TPR}PrW~Tɲ'_JPӓdEb{\kۜs\ܮ ق\0Wf OEL29U3%>o {? pD2 jiCOĈL=O-$>$?P2>t׽`vTά8~OxRq9MQyYI"_9$W>j4d.*MǨHf`:zΆC3#$A_fF$H~q""yk"TZW^8ȕ/'~܈DdB&K0Tk}fqd16fD !s 0G""}+icNT?5X~ǽp:QO ~"&E8N( Z3`W/S`ڥ6I .) $m`_d%_Ilrjy-m9/4 نe恻0oI!_y/3WLԩf?ҦjjcBym=Irl28D!$pgpN= ) )ܚ>FJ eG&xr$,fy&W"NrXrT]/_.^+pфqg?y34ox,Ѐ)H&`sʗRs鑰kZ$e:mT~eo=ϕYd9>N<#Ԝp,kY ~W>K7g\$+d#a\ęE(Y*גWgV $p9̎bɕ.5 bO(R2; E"NE|WǵZ{ <x^)$Xr-G=hUGg9 N{џ03G"'T} #Ef b;0݈NC*"AyDTOgz:/C\&S"VofV=`|Po>^ D%.5D{:Ni9Xi9}7=\<>}w8KWHDf +\&mW632I =%UL2YpcҵU2QR\ç:\\Q=.dyc"9Τk#e6GY*=LPV ,SQl+XdTQZ9Z%LF#L6B`b HA]brQqEus-&Evi6ɲxYHBUDUTo*T%a!=")g ̒y13TcTU=6Lv[W 3aa;r/?=?{><} qcLӑ,̉D6ӱ/M%M55RȵXq>SXyeDO÷XXdO>m<@,6mց(R%cnNIX1-nLjZ?'My3|$Tߥgm{H1;B$Lv"fɼp2&u` yCMB) rL8c 3\Ԭy sqH)~bq5y*G&9JCL*(jp\Y=XrdN$'E3O]pΑqL cpK cprK㕠/.~OKP8MT>'eSUC {䴡\*ʴ\/3mp߲:/'qh~ D V?Rڄ3vN!sD!;@6Vsn#Ar:ۈae̤s .e%~m>fL3N`'lGv(?KO_i/|OWmz[Mc>+h_sک }}Oڪ<vT_[?O{_O嶟5m?'>:Tp*DV8G;cP*.; r=#o]tbϩrh-^L\wj"1sR a1#4zg8O>1G #$&7){88̪"tDEMtDsy0\}˒`90[>+Y.1 V8*R9El?%w< +8 2Ezr8')TSaR T(.y#_vN8d;Zdp>osN$M-bx"(/5ԉA~7m# X\EHQ"sxb} 3!{p:AAΜެ \*EʑP_ hMBJKhMBCɬp/^nLkGjACZ8jhJ0DMSX'l;L*eG/.#ÔP&/}RWaL]EC pZ9U[* Ep\Qz`,dF/VR3eTD!_w˜9!ZDs"}f&̉0~Ѣ{ߴǍ'/@ F~]r&!,[1}gHuɝ3LW ?VPr!\#S Q| :]r~*퐬I2"}=$ȊLduYՙ$2 3`|p(% w:?`3\sݢ/g}fI\5X T73{'PHbrzxu΄<ڠ_?TǦ8G8pjhAG9;?0ݑ,B {nDB~V|M&<;IWܿRWI2$$O~eCXq/ C8?G\" +&}tcdDHy0om["~YFy871k¢H+EʑS*.Z_ǥqj+Pvor&kqLdE>|lݐ,T ,5ArPq2e#FR9k)IYnšd+^+ƵW" AGdC? dC?3;|vk3QBbߓ2riżtZ!wWA GB0Q\\%`>FWgNkD3CHը$Nj+uqDcIaEOQ=JNB)\<8}t3yCR(?䦭a0)O2J-qrBbĶb&p/'%IwܪqIdpHEPC'S\1Q>}25䂮DSRyu1:yQEeDvxCz熚ɑWYx#.AA@WBI#RNB$8H\4xÚ:(U2 !Ba4H)roH(@2%@JP=߷ё G1cpQUuI*D=86 *u&SnaG8&T"ԎN%li`G#I@Hʷ@ASϑ|wAtP9@Zd&c -NyE `>"|ֽz6KXQXksф56CfAσ}hhɧD8 l4GS6j=};n9/a<{#FFH 1@LMT׎TbS4;dĂcԈ쐄ㄑrE6$ǑnH"R1DJAq(}d4qp\EpS,h)]I&#cfUs#VL)i$ . $3126V)Ir\X}'ic\R'($;nHENR܉2:J9$!vNJ'mH*X]- ⋇LQx#jEU vk&jD*رG pWc+}* Ҿ,'lϏ'a6Cpɕ dd*I2c-':tLPN|&l`k)fW1rµXML.-L*E*bƵ\Idܘ \{NyV@IF(* mIHdpkBad". )1m@XQDklFYTfp3]~Jx9xs@+rOT_GJhv`H2 [)$dIq*=J&Upl+w1Bw!7H֦$~aD?Gi;W1Oo9*qKpʜs36@Y+@f"fD:O4f]@tYӄB}if/"es{P5~^Zz*T|0Xq*T~jV($֠($dτqNm,WzsuPn'!ƢI I2#1ɘ~HEPcFL۠%@Fcd%X"-F8DR8jKWh3f:4";{kC bjnj^CNrR rhO&9u5 SG)D99s#"2fg]3QbOYHrrX}%\zp]uW8NpgSaW)<گ5s//?{v"=h hHd~/7!ΡvG+Kyd'^MXdI\*|MpArIٞ;Вg6 |--Kݜrpz: \>_"`D75p/&ȫ$ڳBȫB ruMu"G =]rAEęڤIO;njIB* Rxgt_sL##ፄ8אb"4V|ECMMʟa MÍ3FR.mQ z)Ywj[P^L/s)6>Q\S\CO8+q9B+Pi|z $Yl ql qJk&q]^3yIx4C~0} m5#[4=l(kPvjdk ǜdVϕC3ڝ9j\&q8jr I-,-=H I7`=T)<ۂG!&?u`ćtݒi3Vi?'\Γii{Wd_K*g68' ,UHW .LnU<$B}\7U8qtkW߄㟖uz8u =PMr$A##I'놥IE} gj_~kE4-*gɮIooC\K' q ss@3s9_rF/ECL: t/:ws{w']^kiWotNDO^O1A?K@㣘A>}8:Ovq*.q9~dD*6??vfW' }d 8"6 @Bg.Y?`hI5+n& IDEqN$k D `HB-KѡA5sieWũvy Y q"8.koT3+I*6eeh$bHȨC "#P2 t\Ǿ] Ȯu%BCo\4T(^3?e۝zIȮA=vJ1W; r#;Q11|//8O20cD*jk$GJDeABG_&;UN*zzc=ɑNB 12-1ɀ m!hO7(kp4LQLhLĐd/"H,E5&DPpCsO=@ֺ\T]$0]^/_㮫kA'qwR.W'K}ֳq^c|+GD,Aհ9I?꺙%B8..j"ll_Bl4pY\\* lu!fcaU*bCL0"EAqW+RG"8a+q@G0чR fkU>jrDG6@de,r[2ywEm#d$#ԙfLI |ߓ>f8PV?_%TC:O~^_~Io]}sf>D0Bg=~uH) z"=Vf}fsH3 ZcjXY1#L0W+LI03)Y9gҥMpԘwzS\'3UHP[!%ff`w&nff}NgSϨL9/10r_H11Q?[ fLgԯش(=o}rG$0B#uڜH}[fMs VIrĞp+o:B$IQެwXI}38:+ӝ+O#!6n!mxtD^=w$:s5=s\\Âq"9(_;_*FϮLƱR4} 5h!)0\E>-& tEyXXF H u#~qy#bON׵z防8m\;-#HDUp\* 7aiľ&erK2>}AJ_mpPR~½9VF x0\mS9KJS9KJik%W۳4tVéE==:vJ.hy5._nRaRB9UOn?UNsDq_OKplr/*+m0ZA͛XlsfĖ*Cb.T5|h6X"oQHD5rb!R-qq# 멮L=c1k?իMzgsĉY 8+9 B3*V>C!\0*?Gu'I/o%ޡFR֯ԐESƪ#\h:y:bɴuxY+7S?hq+E V -{ QL(vf1 cG 'Mb#!rUQ!aUQ{?}NU@Z(YI(%~swi*V/m]a,vm]a?}~ 5O]%7uvj|]8w})"Ozz!JHEٓzR'#v_x Oѧur44|Ԉz~rku"H=hv`ը }LU s7aWf>pRϢHᮩ`zoo>8as{8aۚ"++SqPvR*]Ga7as_wo.O~3Zz5e "8n(Y:󟪐:z~LD8L~kl][!RKD&. Ls> '<਄ɕ5>EO2EM?5Bd-"W!o75?>) MJ&6Jꭎ1?z1æiGpBǎ4#_c1RMp1~sz!R}ݶV@d2+#>=,@!^X8i3=w~.' D^o4?ӧBL"R rg9 u3 \O.}L+LԮ]w_{`^u}PY/aZr 3/dH H)2I1j Fre(`LȮ2,d\Sƹbl¸XÒl5-5 D BBmЌI+ETqc>As:u$ru;eq$帧'6b[+AL ̶nW^?4Ƣ\`osg]qO ƻ/r3JSZL/PUG3]J(soSr+DfL7sR>"(5`u/ʼ'-|iM6O- o@6l^u UTӚ^hxj!ҿ*q2/p}Kx`) #2 e|*'s9˻e9"9s[?!(ש:Ns=(BGaSiwi+?/y9b`bͺiՀX)M+96C_٧6rC~̩GܑNr9on⢪Cߏ8{ {I_! ďm_޹Wp㟽ͫոj9u4TK]MW%a/%3?˘z3򆹑.z s#"dO_$N!( `.sؕSgL>OgSщ0SlN3ɰB˙9!W!ۜL4sӟ`Ntt9> _Mxpydԇ&̘[Fȧ؛FɑAkeE=9ᙂˬ?Mռa%Jfa*VyqrPUJ1LmF)@Ms|Dw 7\Qs\bGM$BUV9piOo#! My d!V's6|cdO=PzLU01T[.C8/W.{%xnAp_˱9~/,BҡOcPϠ]8dQ ⬓>S8)﹍sL;j+ ,5Xi~a2},ֹ'$R7|!:oS'j[ pl#el:٦ȿ!Q "\i)~:9it r-a۬k_ٳhDf͢rU+Z۪ȭOM;۞}:EXu:sQtU ]1ӥT?J&qp0zqQ&; əWx̯)#a\lICQD4ŐZdA <{)D"Q@]ۧvýH NXýHH KU,;lg#c99Ea;Fzm hBǫ4Q;m?h(f'Kkcy'UTHޗ:rX⚒q㚮m%q_3zJ Iqd8r(QŒ~ND]q@e$Plޥ/J@0Š7"ja3㞷~A(/iG>~aǍʚ+%,(dFI#y15̴ +8MK! [4*H^Ms*1PSU9r[DQ\U÷GvfS:9!L"X!&G:K w Wl :wnEôl%$YFNER &9[G"A]r:!̨i䈐.5!fqW;rINyL+,E ĩ-86a\Fc D[S:؂TpYVv5|'H@B"ja$I!wr̰A_?Ͼ}}BjbSeN S"8$&K]vDDrϞ[",..|LQ#B+$N2X$d8,8wjQmlf|9l6'| '{2Ƞ$e1kUD̃!<.prG(Jָ+?W?Cw|3{X2v-`(ăL)80d5b&#_׷eoᣪ";;Իء,KXB)!$@m h m"CpV8l\[GmT}/Rz|/Q=[Tgɟ):8RMϭ;_Mu< $@DvJ>pM_ؼ{/^A|Hy"O>Sr>OGS.`1l@̆6qApsPVwp.ZTy#ũZj l4auCMysLv˲8Y05+$8CIJg~Xk"1$o ,)Tj#@V+lG|n8֡bDk<(pgM&C9g88\|Ң9 9}UbȘ>1U"b*$ +XR "$ YFzmD*Cd+W4Jtx$snhDk4TxP$bWh<(ı,ߊs\kÕb4ڱQbSǦ2Sa[2ekjg-9q ߵҗ]Y~?tVݜ4 Ei &HeEاw~9y:E.'!&H$ِ}UGđI'{˾H$(12b?x=˰NS׻=nquz1Se 28~k!>"qqe #f|TQB)TQKvמ1vםcuΆ>S&kӝ Tz>:'&uzuԱ8,rYAf~5E':Ntapk'ezZA`MMJխ/n5UY M Tvۄ=U*,e{6^|F^tr5MbӥfdSi[fjV]CĤS}ٜO18N:Gr>R#\֥rD^&A"٭d%*-wFHL2BFb?bӓFR-Œ@nOS91?u~6gs|qT$8"*v9Ǵ&։psZ" VERlgLrĎd5Xޛz~4kԙBYn˕ fO_^Tp_wGʓ>*8'9Qg'ᅨhs4ۡ|I,r9!"~c9!"}4rb/= ԌE݁62iYT8ÛJX<5u3\S\kH\T(Z/:hZ/mHV̀V1 őA6ڦ./-n^An6ݷiLGlX)[# uGvߴtzzzs">mW "7#$@FeL*'?fͅ|L'qG" *k$D?_y̭MkT~syֵC}>[=D IG)Q8A(r,0l])ԁXJ0q~;ʧr8b+A?m qi?~uΤΓ5D3]9:!P\|}NA5r,_B4tpeF$AT}þLUgWT﫪l"M~o.7H՛č&!YoVe  /y}GII>Wu^8G9&^8G9&gfCd[G,ͅba?;'Sm9gPqq;Y;}ђ}?@5`VQ7 8Zh!ZhPUsZIh\aAj_"pj+D{dOߞpl M)!6[SHMԧ癲 YGz ]/5\Ey r+2#O[wP'ZcFF hGk3xhH6gJ6ӯax4Ɲ}ҪkHm,CXiN%~dv6z#P^G&^~Q:٣[#xlZw*vūЧh]z:E+jILjsb.y/mͦUT:q`y8B$Ag!eTHE~ q9  NcSLz|ClUD}߭Z~:\\\\DOl&5&.rzZߕyʕVW epx8*N$t"q"@]H-͈W圉Ӝ;2fD'-B*_i3_nبVY![qEEQ:b&>&m9__v(Gf>qO\ޚ#Q#xA#iiSDOQu(HqlJ::.#|ngiD4qu9NeהV 0tv0 L }dtADYcx#匽$԰喖RdI!mdȒBm!kPD6h!ɈP*J&F\}]6H!E*"<QU"6OU*M,`!qY ~ |]yO088Ǖ4llFXM5_O9i^5^q+&VVR1^u*ީqG[$FE'MG܄6?+mNZ!vZny`e|-}rI !?-99NeBHH{mdYmdYM#+dGۥpLzSǓ"$ЩȼBrI? ¢2 #>XG-٭XJ;G8v<#8'0?Q0=I9| tu ~ܦP Twv. N;ɂ&RHSw:E;vf\BM_9ܪk[jB ༜O˾|T7|E/Kq hm&Jᗥ؀.CV^1Y٨~)YtKB :Ō|GDR!,4J d_W"%?¹,[c_8~wjEdb! :|# k4=\sb#١m - N]1<[H 풡gеCPsP¾V:m?!5Q`쏵5K$y:rDAq|^U '>AOp} J?> ވT-(? it/Zav#W4>om%rOnd lv\~uㆿ+grW?p⢲u%OŸv5#E~XM5BGE~߈a/ Mu# Or..|܏,\\G,tX]|p[nWywia9ywgndM :uFrYHhX+-I ӴN`N{vr)ߜ^uUCċv}˛ 0 /jJ|PΡ׮tNd^9;Q84Imq⨓#ZFctK =rsqZ$vmIpSƓ"XK"wxzxSF۹ԯ)7f} k5㌅Wڇ[4Γ9qs4&!3c+x % 7ߏ[b>~7)ħغܰa1XBy:\zYT%s]ʸTgs^N\R|dɦ M)&*wn(݇9 s\!i@5SX̭ 632=nz>}Ra|N9jL>/{t{[Tx~ V!;az;b],E\"CA.4A4.E8-u"*?V`qϚzQr݄*21`Ÿء yiGfL]HyL5"'J)S.'"^Qə\QqW+\FoP݁󟁔s\X)A uY8 b'$(\dxH!ǃf[܄I*B6mXkY#Si29xS*( $@U  sfɐ w~I4Ϋfqvi_E=#OP}o6=v,M1;%G˘z\h_l< k4_^~XhVI\sVlVWT8 \K)r? zBLy R.1SYMf""g{St~a5_Iۙ1TU_-3Kɕ)O.xJgԹӮ "ff YpP$aGW\Sz`f^L{UL~+5+ 44:Zu ?㐓#;HW!&FjE_O~CYVBhʲ':޴Y]o76Y^* ˾sQ45 NSuIԆ6D'! 8r?.k |# 5 aƯadMpEّ?[G8"^|N>BqL8{Bԡdk$qMЀդx440"FC},>fSD8w5Z(A Zr?i&EJ/,Ѽ+aJIe͒ cgka af}g\3SSU>:{!.~~ ʹ0>S>{؟H|" ?N܂/sr[O'/W*u%xM~nćB D|+5 %Wi@i$=]G"mGz*]2Wyc#ɥR/+f-H&[yiKIj;_(7oF Gviyv󷓣;S''JC=:9coƷ;C;W)p\RߜtuK╩}&~8W?6V4XݹM "}jkʓHĎVrHs6xwEp顫oFgA=9A d@&suoͺvDiy~! r381[%el\ KWc0}-gI Ą$0'LÃ2Fk0"F$pIr;N;W(Wz{Ýav/nL3I/Rtg:]!톸n!:W4Zn!}-Og8D=wYڎXeQ́59lYôˆH&-]?{,cp|´6蝑uж0~FKcB@|ߑʽ+r^Z]WOq$SkkPlB#$&Zٟjny1sZR>KHZ?0l@_;0j 4#͘* ?iEAA"'NX\oiv{oW'spr5`[ `~gtm&H?/6cck$%xh +g"ÄXI!_vrEDT1DDR?mEk7A$gr_}YII}?j9Z{MPot}G.n1mq8ik>uB҆T,ٮ FH6d#$OgH9GC²HH3nPKıp :A҅U ! g4~-L9$MN w~Y*ڧ}C=KT{_uvAf3o%qbYbd{}m='$}-צHMv2pb@fY3haY]$JsEUK8o!л "!d,HCmFLv㒤"GRr2HK׍^ANEb'oSXp6bI|( ۭ<4~mh='SPm'_&zQ/KE?ivXWjb!L.xh|UlD/_r!#olXSɼfbpoMb䁷hGgqtͯ9,W -Yl圄~މ1\Uv]$qT_Y)fHB3=ɚ*]#3fhvsU3%t&KJR!lSI$3{B8Ifwí3ӽX3R54Ukن 9]مrAAGa]qyt5\aCQ@4}}~{]>8هS$>cY+W'urШ(,ǹtG/Z5%ݡY܂R=E+hr&k\rXݑSy'HmIBL#Xx넹-'{J獕 HԪ#"ɇt9jأ4jH8U*bu2.jG#Mw)(ֶV&5$yjTN-DF+HP֥{hf.SAld"u:.*3oIR!$׶&nDUzxJm퀂wJvzUkKiXܜ[&^Zc`F3f\ɌLD5BDԗ"D񰤙,ȨB\(;*Vȸ:퐑q@hzٛ%\Y!ԕ+k'GLad"U"zRX֗|&20zU^v DæăQWQ ZSǎÄzeEW2Eg*(&lBVIbgHVxY]SYL.{ cX N%'&WS!<'$ b̞sZaR֡mjpȰ]Vy"mʯ[9 8:p$4y)III%BRR ӭbF*pEp#MJ'jDt[z"?Xr2..cĈK-nJq>,TTs.|vwQON# D$_ m-MM`ǒ{H2(2fhӸN=rf|Ogy-b"'-xQʮ;3iRbH<򚛤1UU8$Ei"Y݊TnqjI3m!kD8Xzq:ɽk_[Eb K2H?|_XxsWzWq=d$$a)3HrXDݸ(a iyh,H'l,`6Ljwzq\5OZI:g$KЮ xIv4 &UjIYX ,0㊑%$TI_2cG#$H{{^4: Fz](@\qܙ&+m Y'SqE]sk3D0A % qqO{˯Gl+X澧uIcq I+c7tqy=;8>9IHfL4 0"%׿v W23kml=?oNds:jKbgtQ}2+{@k"DU_K;%J28rNYgMHӐАzH&DG纕qTqU:`^sX6cxj91j2Ce]jeٚ".kD3Qsc2k#FE2$[eql" Նxr<`$6j**5 rFIT\2dl&V8Esdq#11$%G.ہXɎ*앎 DGeNmJ2g)Ap\P UELlXO8u3UU2I&H1̸6AY=>{ LQ-¤MIRkq5-| Q8iV(t\"'N*R%Ezt]K uRa Ȩ8rDDTkkw&#BI\qͤ L8'Th.m\Sd vel2$""Ea$HLEpJ2 fyYGLζ3\5# QW8r d8wM s6JVX %s!&"ulTUSU1r"Ƥe`MX;35sժrA]krN$HuGqq9eŊWIO_gW#֢6[ i|RMyWW5łg|W"FUg.I59DQpR&XPb Wf$q&`Yu_?2 _t=t>ZffT;gԾJA`5λyn@2`eC0w&ɓ\ʙ"/;rb( i".n;C3\Әtᙝ!9 0jq338g39>:s3 `ff)찫fa1@Sg!W33@0q$77N` 4yhay``Apv`a?} nf^qBDȎ!Ȝ9z?;_jW FBn{H~FOs6+ d$Hv,-f.9+g)x]Is\,$Fߙ!V ?)),MMI&A1$zN¯d` @qVpxnI!l6黊A$De٪96~spuK(zFov7uad# 2oVN^dŵjqɋldB,5lZ ⪰@=jشKÓo$ ӑL&$ L$QHi)w~ߴFcUkݓkm 5[{kwCE"=vpDf'uiNi5]HtGXdS#fY멃sՙ$Ș!1SdCGJO>mj#Z!'<\<)\_ 8kxu}\m6S)cB.L4h(Gԭhѽ(GyA܈ d+ g˥5dzfk$!Ι#W:C^&d,?4#GE1cA4 H?$.ps?*/Qt Nv׾il$d+blϧtoX#q-&#8mbN SOhw(mH#䡍@EjQZ&x-R^PNXH)OCN tEH'$Fo rHy|C!JCLϏ]`gk}>rp.B*5[z5v<*@fKT"FʅUs6P.~]"' EK9y?d(ܯ~S*Gq*$4 (ɖYrqgwl5 ɶ37h[*D}WUCZ!}e}xxo֫Bc5bzNŶN5˖xW{\%邯9hM"P"Cp-iFlMGJ8tlxR=R|+},H9bfty{xsųg1oxwXbAId w$~8L֍]ȉņ Mr3^&1qs,_-×l3cni˶ˌtQGАZ/HZ/ )FM(fLd\0g`T3L`IaZ_+u&µ½C'Uæu',S?f&BHzWE3]W\5E:>? "+4R&dH,oFYưП,֍hПͨM=y5wiͻO.rf]ߐkOٲnFW9 /H CR//ceiceiOǼz=(}32/w{Ӻ{rSs Ns͐.Q 后.WgֹpY&qOn/Hx_is.z=)IkfTV*^Vh#ID6ErˢjF?8z~<&!6SeAԬzk:Fc`mT;@$ψ` ?sߥ݋\$͌ a #'t$HG {'~Pk0F"G^ N! b ! H8{tsG|%%E㰎1&3X\Μ&̽L+UDd oio凊<~Z|J9 쨫G˻?A#_=gR8Q2?\aS2d_@^$ȁD$iI!$s98: M}UPI ?akL!"(kAOOl% 7%WMRiA`VK"}CK?6[Us$?Y h״s\Шq :x]9H4E+\dx2cELdU5͹d?QEspP1E}/ԧл ^xw7(|)[p=\+nX49IfEGާ9%4\? XNj$sEaq\UwナqWWЪ( P݄Xn.La%Iʟ-J[#8Y`3\#l .;ȔDp_܉GӯTSO9oIs8MN广H)W^}_U*'/(q2^+zz/P9BA#%ފf,N<ɐ^Eǖ~WY EY qSzSS(j5tkTtkq>{Uʹ  /bMYW9!>>\~ݝx{d.?hwe#3g~p5>NE8tp5jED5L"/YD5L"g(Y^ڡϝT4pҡD_#p*R~wEC~_AL!$^;$fHm%yvI?\@88jRL#~nK0 )Iǁy6Lv\&I;pNa6}0=H`ހ_k}ľh3jn[jOmTٷmIKMm~[bʾQ3?Oܸ~0!>INGzIN´pZj4vӉmj_}$7j^6g{śa6ji\ t:-hhOQGk[0S^[^@!!?Xr>.ds[H"E5q1RE .8A`]^!v *AǤuz%:7ͼCٗ+#_|3!^K ٙ?1}$fXA2IYjϸsYvfn4D8>'Ͻ  JR2 _jR2 _#5* 5iZ2 _1 EFdԪ.I$TG!F=2Ȣ+w'Wl-. "k\%MdL7FBr_7Br_MZsl5[(EMsR2 OvvTaj?;qԆ#l(i+4֝TgiDNaG&"sfObphǖG$ZAюWie"A w|D*͍=!3 0xqD*Ng|_]ýѲU`4M!4iASfV1U{ay+R~Nڪ^J]7Tq:A !=qXS%V9u7OCf%ZP,c¢PCA#Դ봨?PZure ]N#eCOj#e>)Z8FF0cgr:_+{"oW_k\<Jx@ISaGݐq9(^Y5RU6AN-`ٮ[ veDKv]QrXD53q3~gVj(0ͰԘ(f~.(ïz0#RBɢ1R`ԞyISMQO$QMQNzCKzG#H?}:pHm"H$ʩ,op76"I"*}v$)F{bd?-9ӄKEKzaZ./]ƓvzOJui1Wv,>Fq?NlK+YX~vqAF04`kaHS@dِ?#괦jn?;Z(^S"TzHպ=,Q& (E PAEm *! 4;iAq eҿ|"mky:i ܯp{rK`)|Aŗ`^ޞ# |] BK!l:'$ U'Y,XOsw<xv?oam_g|iΉ(C(](Gakl4 oPHhYGF[LFeʓ+EH״ef*&Vu4"VF9 C# Ͱ؃Aͼ6H*lgB>7P28)݊춹K$1IȄr' {>3|;ĿJ_?,wo}Q\$_C?HxDEq }y8Sfm&T#ݷpi,W[Nu"xJbӇTd]vleB*l!&%E~>3:+;xPh( hDP#WHC5 QV݉ $bW$aoU,a˷ܙ% '7S1dA),ͩ,#mv,;?Wj=:dDmQuf:st ɜl$WGmzK 237ffyjv?ϕ"g$u"^j$ >pͼآYͷl*2w;F\PՒ*;>NA^Xvӹn2 " c(kr1"c&d[BJ3y-yJ_l-Wc,pmMd PׅrU pJ [?JC|ۛ~?]9$HhvAP(>! ! &Wfؐ){9a4Cge~CVvokW=O)z: D Id39ȑ>5G~ʕ>LFhi-~pXE nkf I2szf55o^nu1;p4`f#{ X= 6 ðHWo?~Zxf'9nÂr4J&+=R8|EAbͰs;1pױr&#mtۑ-2xkhm@}9=e Dx\t:~l_u{xfYK&X|)[M[xQ}r*ϣ6 /$PH&).r &.|?3Kh@쾮e֒f GӺ{bޕa!qbcW h Ħ0ϰ*!PpJfJ,, p_F2;sUDdzcF4<ք:HwP#4t'9U &noJ&D捁ăsѳʫ}RQ?\覇=0])";4 $빴Hk32%so["5EDI)ri5ö"Y'E 4 JIRC+9H屒D6ArǛZ d#Z8h*;Vf4oMXH:U#Z (ň<܈A$EegƳrlK @y*-qbaĹJOG9yZ-RB+\;:ʋc8.Er 2dK 6BF¹QQʨ+&lG$̖c,-G"!B-rgǴ05DNDf q)BB?.R 3zXt.$dY!7m  E>|/;yy|۪ \Bzr{+,CKռaG vg9L=$$dFK Ym8CTE jD6QݸݳaFYnzNT"/#%ux*-7,82IEj*"&*=Q^2]@YLD&|@@ !=cX{"zIzv<]+lU 4N8rʒ3l,J@ 8F/VdEOg맞M5}WBIiB1T\F"bpvx %?+ߚ{y~BE}J>0p"QNAqsIi wUuxd0|f_g1$E3xD_t~.9ϧC?P mYIG lS:sըCȅUB%J05C^4Ay oӘ{g!F> וD"{# bNy%6ζI1TQ_ :ٕU NCL⹇[ᕊ(,gPG9H,%tsveTk HDdhf@rd$V-euԻ#Wdݦq5)^].rX7cTDR!k3`v@ƑAlQJU98W8tċ G ]p, `v`y0j6gTvTW:CP /o#q#aȑx̆7ǘzyv6'd*\\uX+Ԉ.I=$LjLCQ3vG[ƙOL"u,P8@JR xX`&f`⁁pCb~S'^"w30 ɓydQ 3w2 n힦֓\3,ݬ*Rr뙙0*:lN!a0 zw8=]^a7jWsa30k'.Gu:9˩-ʱӴy8ܫN.T7}uZeA jT$|۷iU3Dv5sF_VY',<Pa/ۿC@Yv?}0$ڡMElX|k!~tWҽiըsgñ}{_3G-m}-ᣚdmip,M&5!F0mް+ 7,V/!_c gʿwzmO*@#,*E#1,R8A,n](.G+`!qF®UJW'VP;-ydMS [Fx*CJjxGDESj<O Za!10wDimr~,au7r#g#BE +_r@Q>h()Po'D2yD SH~O~%|@ΛiO/mi7vt_9VvGkxV Ι:cA0zkX4FRbvkIq^qYRl> zuL; U &qn $^ 8ByX:5C`s==W{x=߰"7;c}C\!wccB)i,貎K8,8>7'5IDWE "]+U?'|bg<{w]HB7WIujru^qa8P#l=),0!kɼ➶A# $ P"Ai\5_XB;Įɗx{R"Ru\,'AxAxEOHmkedB`--~o-5 .\lM% £kҶt Y1 H j)߫vġ0#ޥN6aljlU.p(~ZCe+ (5?ħuKd\$ sS &RjfиJQ#>ؼLb%M*uϮ) ]+`_CV~.NfsLML:3HDpQcԭ|zu9l7+j}0Bli>7>^FHiIDEwi Ґn)(424tb H"߱޺熏%-"ly7Rsv I% T 6l-cCp{[5˙hq޻{sv#$ޘ#e~uv9>&RdrK~3UcnDՄe6)f"!Ku 4rFs8U2[1m]oߵ88C)Q7c(E*!X>O#)Y!cDd_z|O l#o+)GPQ)$76ѫ"_l'kl5K7qG Mt @E7;43Uɒ[7'Nd*&$a*ݺQV9"-{'2Z(}"엃{Ph"Z? \_vj4ViDIpdhnbVdRŗ 4dwe@~"eƭʮE#Y۸E:࢒AW8]rJ`0 ̮ w8\;KRe-Ce9f닲+ ۋTWGf9/K$H"O9jv䳈.DG9%H$:NFZR. 7iYUAp].")!#'Wb2cqL)52 ڹr$W u 蒈DhEaphcRwp&* 8RC$<`иE0EB(c^ j䤎*-cORaodA$AQXAT|8|]b(/90&"*S$#7p`s D:4U;th2m N6gc|jsӨ⯣ kATt);ɕ@6W ecj.(rMzb9ȣ-#bkPUkRDA>:8cЗ,ż!ySJAD#k ^w\].1O6!Soa7Ǔ:M(眭 mm Q;mMj pZ]ǾCgGffBȞW2ZT9z\"ȣ=޷ _AGӹ,?.ɑ'-\}gκȤGA|tm$I]M c v+5 5,Z}c?[ݺ"}{xkp- $&'%$?dҲ0w5g݋cd^!-d f $cVfЁ!OJ!+'\p/ndrHb #`! 2O(ek !$ڃ&/;iIdqqU -"zCbdW53GkY WE3N w gN m N4W f#p=1sn&CaG#$^IߋG8W1r*0.(тd$!ZP7'BNH=!É<+z86U2MQS<欆xCn*d6ceGlDQ5aVa9vk\=j*TۃaT&eQ*W eZZR.(QxFBZQW+2B&jkE|HtO >j|}C3ض:C+ӧSi|s 3>8b$mo&.z |9=Ng00>^L~q!'G}Cs*z̏hUs%I}޹C3 d=nffVVդ`)dWď)\܂Z ٫nیTn3KVɇZAh iOi@S,m>ス~։S d_LQڻZCEN߉bMO}=5j&ڵEApV.B05Z'_) :E=of^|#N=z}L[fl*eB#׿NN{t/-, .F,d vpZ60 2&2Њ͙ouZ m W)@" &]dag同,ws<[~_8K2fY?iB!i\_'~O$sK H>RKsy ~@Ocs/!, I |kn"=2$5mFXW5jXPL_}b/m|^(V:b<}i{Z0, „nao 6=U?ZGfO dB_()\o]7vܲh)Lr^A?'.h9a-Q/mPC;p?oرa?i勵da}@?T~wx %Qu1:ͼ=_9J05|ɐ!_=f1 h IH ~s^?޽%ϦtJa5aNd>4 /!DtoHtnK_BE?{ߑ,>˖oW4OХDꙣA߻t&zFHLRe ! XcJΏOnˏL.S^G=ޱ%\Oɡ<$*k©xmLBTz5Y qAܣk'児?]t[{z+iQ(1>zDwTݑDsGY4fȐE 7Ʉt _~ ԮW ŦNr1L¹ٲvfkN+ĎqԮjmfEE"d.j(*#f^MǽrjG$!,#|W"Qd*D:J?5b+4Ml-"䓥La$3*+[.~S{Z51S51+Ϟ>x>{zA6Oͷb*b?7[MWЭAEB R\Mup mR!UOs{~ۯn;|=!7ϔyۄW")lwW+Res"23#'VfpՐ<هp4HB ᇞl<^!c* %sÉX`wC .ebkI&!X$ !/.6-Qcq_s7܄GPϼT\?hԾČ9'ɜTS89so{9_=_>DH3AHEj|8jգ֣Ҁ~=عnSܧ0. na |0' (0C !;w޳8+u]KqOލ- 4#[9E؏)/ 3$h4+5D34iFe>C]=CGZJ114̛z 61M?iᲦ^>ǗEO ayy˲SyGXՐ9(qKRLj1jF/?J%@4 ]L/F5LYNLdx}EƓ }}2Aݯ6d9( &qHl[N%uDIݮRW5"?s R鮹pA(؋ae$E\lX֧B19c`.bpPEv1|n VDM @JIlkMpT~:畢nAjve3w#t'=[S:n&]A#&+ 1gb(:r_t|ݡ܄@(@߱"?Ms")>n^^ܛmإ=p"#tq&jG3*I^jczv%$ 9kDH! )5#U*\C7fFI3\$f2mǛuc9\#G""&#ldEǛr:H8ds?HǾH%TZɩlIkPU=,* `8R9lWd$YkxqAs;CT\B(EsDȸ.(E7f;" ' 1EY¸G_`|ϚjR|{p] {wԕղE~e_/I [ ʶ|nul%>j%ձ[U.Kj_IlG9j@N'J^E(Q]\3M&B, 8{K߇R↑ {T4Z@ >MHQjJ˭.avLD@Ȍf1q,e>'e@x:뮇D؃,0z ?Dh(BAhUW}]cNW{|v'BҗvuI>GjU-?}!W캉humDm2#pM NT$4}k*;M~q:.&ER6Jb"Bh(g0qH^8{)ek}.a~`Űo}@P@ʧsQ& ōj&BaD J9X$% R(B>U9wZzX늙t2kFi 3%z+S(ZTm uXwDBEV LU4#`ܩa9 8e5II?%<,P^<6|+fA4#$E˹[n=xP5+}oJ̗%%[@#GѝP7cvE07)Hi֝ݚˁ ?oNϝ:t0Le,4 P B|~֒*Tq&ea[;(%!FWK5Y>LB( e]y| ү /KJO?PuDxKiBHT Id]qRU >z^) ZŒXg^~@ BhnѳA' dž^b?6gﶗl[QPMl[?Ol+M-lh}F_GDKA|+yڄp֮1HdY=@vE‡AYhoBp{I'ߡ@,A@ }1a6 a!A$v P2VB5bCӽh{rnRދ;@ xi|h)𼫖 0Y(c~2qhC2`~4&ꣽI9OGtB@l)E!YHa`|(:De".ȄRQZdn/U=zB_C&( ?LCIЯ—K2nI~Km!k6s28`M=;op2:*_=8&fD4@daD&9eE8a|;xFoԍW:L1!(;֒Ҳ ϧf$ 0@ d,?-]ܞ }xe~dChQղ؆v[`jMU_O엥 $]?l[fFV?>|dKQ>"ZwNm 2(YN7*;*濈Aܩday282dmSptH(S%>WUAoҰ@,j$sFSPC7Eō#MT!=qm2BvUj1iEU1x4C^`Ţ.h!99E/g ]#H v!j#[%@̎gjѻ6|Ո&=N[{^վ{V,#/H B"|l@ g{ĕ9&!s!0(6Rq8Cd3\vv` ﶑ED"1 &!9n--ZhuVW腔(BJWsVXB_t;*S^ڞ ^C=k)庇oԫ)~늿pn0\u0s>s0IplA'f@ \A@P䖩Ja)R7R\Q{x[dpOMFf#)XY,#$ ji WSJHx$0|SRdau>/-l坐^$R/TgF u/ "F 7b#^=fY}H-<% "av\ 1R-_AFx2:)"#kGy>cCK$;"7'Q}XK(/w6 ?,}sC~wop~FA߃~ËH՝ٽ8ݞ/A]ְ\OqGEDltf#ED( ͦjli77&L0>_DR$._W¯ĝx#!DD@2pLFf[.z_ ;28U 2TBhpfǾt)DE7M' ir}C [M>pa4YޝEnNG\NT2׺X(5Uaht /_ra%F 05|=8QA*#4y^C)LU?쪏.0UDUUpxs O'KHsednK Ѿ<,4c#yA"o(a8ȌQ  YeAF&m0@덖E]Nuj~4K-@ &H8\Lb>A;e3Ooe/IZlxUU_c=[sT.Ҹң.r[H5+RkNQ'~젡5z&VA0,"J<]6Oa]sqO.D@Ӡ}~VݹC@cе#QD7EUZL;32 چmh dP)graie̗JqΎ,?Eu͍43`eZu3>O  9Rw ߐ7@&tluǐCAxyxCp(+fu|O 2Cﰪ%_ 6ǭsch=UTSO4~C/ܽ=Ծ6_ /o/le#lOgelm_KɴwgVy$P@P9S+9ZT%\ɯ3b~F0f=[x%ΥQj;X:QtEحa(&buk#L / eFqao?Rc@Ԡ޺}AKMS1*[HԣHTyPr*z? u !;4')~R"N,L9~mZwZ@ydnTGj͝8өJ,<#O ĺ%\ik_qC *Q Ad%jzG%WcGPj~j?iΥO{JG"BC}52$IQf5<>|?j~_7u#:Ȃ9 n=BhBDDy˴yd:}۷bp|:f9k5gw^C>#ȿ*`=RGt{Z#MI/DvUG~mxIҺD=M4Uo;DT%8;[(?zƔv쿯#]RUllāklOCM'e<' !ZƏ.D 7M|R_M=NJ5_K5%,P>=viY4PSH}P,䬽Ow:߿ º uO x.pTd SwWiyQl!WK^Ā(A1'{nםgu {])\ "PN*lj, +p;9Pr~$>nN,kYVu{(oJ$]鎼?x,5#7Q틟ٖ .{VplgzK&gYl']z?=>.g>FdxEùx@!BA~ g;mկKxнΞ zx/3~^ϋ_p @ >$= ҥ$aɎ#1EIf6N7mqM%wJ/ $#WhN`rM} ʾsSJ_WScX.C| &՜5aF]~a7Mbx6ڸcfh?|4<˿HR(M|VZLJk>߾o`P2{Fe1VoHTt=36 ^~^fu;(4vߘ8Gr[yheUL"'QR_ *^%8!RmD~.M1'V". 5B;l$wg@#BA!D @D K!cRuiYqVua~Ѥ(d:@x;+=)^TۢyI͕v6OSlW@)":  }_%e/kk\ajp!ފ EV̦ꀪ-0ZnͣDv?#5Mihڏ^jF,VP9-,|[cAS^֯ Bfeo~;=3'T֒5=8Of0Au'B`F㉹OU@eȁ]y,W: ,=0y^1%Q `I)#Ò/iDǎﰡTT~hx. oHtwz) 95`o@.@oIޝvVo^|W~9-׉EM84ӚzqN8jO뮸r_o~k&k$@&2 +p,~W K"M ) TQʿgG/8ҟD_q|ƴt#H,~4;Vd̑\jv‰0^r{:ȱdrqi;6 %\#,[_r*{P3Ty6]+]FoTrݕ2ktui{W%y?o[Z!j(CrG~0qݎCa?ׯ/wІܬC~&>k+f}ey|7ûkO!UsPjL3 px@^m0IԞꙴ_ڢSBIl{PT0Rԝn!;y&roÿ R=9T_/}ߪ_.~XW>l4RW"@h d$ .amFH:yKkd^>ZО>N||o}p>gdw8 p'88[ hPAY=nwIx; :_ "bL/0Dhmy<|EWlܝx"@Mn$HHT􇠁Կ{l}u?+6/_Q|Y6$t H$^"ԗwwuucMvyOU~igG/!GlwJ hn;,v$虑Pk#gDʒC=~Ͻ+y#*$LLIyxِN8PoՊ8^?Y=~Y?/ʨ0u{*ldс$H2YM4/]?9]onmSQL),`:3Ϡ-J|!)Rm"ZL?HrL_X:Aq8_UWj۱ul>΁#2-HM` ZF$ܙ^N}'8>̘=\?1{Xߧ&Kk~IS ƾOg pYVLcx߭ ޓqq=*.Y:(R%9դ>a8 |/!)P㘴MDmT #.vSb_)')SJ9$H$7 ԉ$H1b8b0#1p8q pOu\UP^$YVaPbe2R "CZCد<ü>E.a M?J`K ޝ~~+g|y]=3b 49挼ÕJ>l6r{^Shw닩t=Lwr)W0=^B@/*p칖jՍC*u2'ӓ1Ǿ}LTB\lBQ$ 1 OTдRL\?/K{!@-n9shn1s /G^SkLkFLH0"ٻߔv?@8 b1`CvO 6bp2}>hhe\`KXeY3,>]l6[!ؘFBaZ,?*PB!YP]d)?; BU h%$?5_W_$%yd_u||~N|~t/ؿaXP:dU2eE4rN1| uԋ+A'vvs4ѓ)eB,Kڑ8.~M-7b0w߯/ҢWu| {% 楱Ʒx=p;3u&-g(0a#=r=7Q45FPucueK ͤKGVE3T}\ i)(;oS3^YҳM^r"˒,1wWP#/Kzg|cL*\Oy)dYO/EK5vH%5p1s! &V2/VHb6_H H H25fHdx<뭆d6[Id3l0_,>}8BlGUWU^]O/A^5)_A4:Z:dP~l$ HgD"(( M%">&AġTWYM/lҤ{saoa.\UT\c-KjEs]w 礕SV^q7a8gܛAG yq-s"r<;<#`0TﯷIKzx0xP ̪wp 7PC$hH~>ǭg?%,DX[9(>OAxՉ`rAy .g.Hq<86==7GL5lr#&Avb [˚sڼ萛rs;{XYu ;Υ|EB%=>V˹?/*"F4$\OyU{y=tE(J,RBSJe BQKp 8nQ:뮸r\,pm@ibJ }BI eaA\0cBH|b>4k{q_ztfxà-lL4VI.jsC&!Wu7³/HCY d$ |\<.*:Scv&Z' v|/xrL욧 0Ι#7;~{)soIz28cDlDpvqO40sQ#~8dȫպ袈Da L 6#-e AǕVu-r.qy,YLDS$ j4l?Wwc ܭ^ֻNץvb !;4cxH`]&`_}.>RD&HD H$"0-O=-祾}ĮC9,0 0aeRVY-6Z 3D}쇔<+iUڮH{Vڀ-j$::[Z`1#*T d^!-!xM C$~-qZ|ebk3ko*mwnvxzM-9>?'=׫gr^nT5?'˖)Pv|ǝ fuoWlأbUE_6` 4wB@@w@ R{ 뼨C BD& |0]VbxǜA|[Vb(vTIcB8yMY9$O:&sՄ՘6+G0+{tV[2L8M EN}g$ˆWQ4X7}??;-4ƘO4aLE0ih: qgô]΁jܹBPb\זfou$-X}q{y+ԒJ;­[d(h_U^~b}+,AZ/m?q=h⍻a;}Gre)ܯCA/*&4L/dRllӈ{'y'Bdk0ν)wp^]j_`^i/ou1D[-]Kಷc yQ}ԩPjfy'GN'njT0-J@[|%eց鐟W,i,wvʲzgX݈} .*B zߗ4zXܟ@:v%}[M5kt/=b {P/ltJ9mcij kC&> ]\G6eU'dtT:0tt|3_dqDb1LB(DD"<Up |\, 2I$Puл^xlv;@Cć㟭tԻk1zvJFx@ЦƠj P/v{^oleΆ#*Pq8/ȂLj[\V0K 's(dI~Lfor. QߑhCfj{\ܮW][ͣ4tfъ3FGC%C"Nח\@2\qv[ו1,})`맯?}{K>U~x^pb DyemBh@)( Ԛ7*˟g- I IN2d!pw10+_틶B@8Q/7~m}Ȅx'ESWhܡxTS, IUwA+r CY ('lPac>+)|gK0q2C3ֺilZIGgN_#y0|Rxp& 9}^aۼéٟv-m`#XWT{̺ ث_װp/hZgmޯ=^{z{媽$ "D D It8lYd2$}d?>|눕5S1We*ʷf}\W֯_by+<1"@pl ;t@3-TM;B' PCʏ]R }ϫgp_@,-Zwz.dL'kQ*k%.q%iNsw +sٛ'yT%h(L6yx9+DJNջPٿ!X A1IEbX)v.lX2\WN?p8׺/VSs4Bu>w_!!<͑?[d?Ra$RŲj3>noqI)dKߑR~kg~Na#~5 @0Jdϊ.MKTa6BX%$ "HHLap 3ci"~ HD4m-PJ5k(kk5?|ߵ%@B H d,F $$^&@% $i}V}[;nkYߊ],QInvyM0+#^N!Z-Ƃ@2Pd^t(4*+i %.J Ɗcr<"h2 {,E*ޣ^7WU1 ,ۅvxh]&~1H%{Ln SE_u}]l%Y%@1 a$yJ\QeK 茰=v /< ljK{Kau/iH pO #@t3*Ҏc @<D@$ap RۖrZ&eW]M5ٻ!$O#^yS𧂻k]"Zx6ӌ`;8y3#rcXqKДuH(Bo!W&Hw5݆[#gWSzqT+*[.WWxdT]A˛= -bw&;zS0C U_Wo~R*le=`s9-J6Gջ= OP_F ?$}P) ֟B:~flj,N\nT'MR@eKV5~g` =#2ã\`tʅMm&NN 9s0es0ぷ)Ou=n2d%(J( DIh2 &L6ܳE#H}Z}\wbaa1S%VrwY5s}(~Z>}ydl "A0dvt 'Jc U{ vQ c -ۨ=.W֯__]HNơgwtj.W2!1oHlASM?ĥ'К"c&fcX2Kq7ytD9?C:wɆR7嶄Oqg>)#-Lq;0:ޑIjIR0\XjHV+QGۑ$`Dte-2VB+sD=ji.Hx/9RV2K `n]d_~#9OAyğ&>'>=u'x|SR&FHv )`5i﷝ 0>>Cah4 Y x]u|DA?{ꡯ%knUv}ļGe;;04BւqIQo,G&D6j+MrV29F.s.2bQQ.+86U/$\L/Ż=?g}?Ȩ,E lM sUw;PD bJԞ߾M-'MGuH_& }O05ce?nѵ<_mY@pk<- yDY0W[!YnjuIyVb oSH5K8~_{jd냧d5^#qW ` #"|EN:VɣqÀlfBdJ1( A"Djq@vzmǬGf`:5= #ED4BQPBhCt=pHEnX7_c Z[':-v90Gl$@]q=W.|iv@-,fbZ<CmUlWi*#y_C/m.cC!>f?L: h|3GSs_Ӈ%E/m@lD߲{2?ﶎ^{~в*N!/(ƹ_ȼm>{b$#f%f0Ɏ(OW|wQN{PSX_,:$Ěz<=N2 Qoћ&|֬CrZJFn_eZWt@F.٫.9p\iލԅ+{"NvVw{7w@mF,fЪD" 2i=!x+/,o^uۓs=vm+B?&,B89z,wRŰ'~SZQIf;(“FCm KC6y7gX3 Q$2qWo巺4vl;|c$*#d"!6i.8_2Á<~zu-4w'ѵ|J~{:onxng"FXbF 8`lAؙd -]g̝֚lٳf4f4l٠M-Z-4d2Y,9Ldm/=@nJ0W]dӲmO0|"y!pL $A|H1b@=h;F#>׃kpx{#୕`ȁkXm6qW&8g(54]6ÒXdhlU4;GIYHc:Kzf[6Hn!5[UuޛĒm[oIrlq<.l%u?l4B9SDshT#(Z+Aiȱl(T GQ;{+ {F  CHiN&t@`Xqz;;De4‰ 3XBT$)ώ:&qS1J~I9,qlF973NI9[*vlٳf4f4l[lZidxm뻱}o hkƵ|=/*uyK^ S"X:ȣtS A{=^THv:i7 KW-ǃJ|8x~B홟Ww0#U{zk*J~|9( #`b>iyXBRp=i2Ieۙ4!WȡX*]gg9o[axE isR'Je}A Ro7gU@9{ɕ}YpVc[ӻw~_C8bs  aX Q-f{^ZZwQړ;c#6Hفk~[;~U4P@OgxY R?+9,.ڍV{ԯ+|9Ə'|.~_8!"wUD||w*u,(W@NW}Q`d^T4 Sq.GoN o !K(ʢv((ƆfDAw;w0,V[E}{a:r;Ez˰s\wm4jxQDOG%BkQm@(h/U3&Tт^#n38Am$CdžrAnr7cazd`UZILV g_mC>Aerf}uS+Fq']?SN$! P@a<"Iigbbb(@Db].~gRʇ՚.(p>y+Dy˵_HAx!Cyaf3>yv3ݼ-ٍݵ냹WѥGc %q쥬͊R}koyq9e1z$kNvw7(NH(Ts>|n8ͫnQH4(WmlvR`SyҦ*q?4ok] Le1*=ځ dL˹}W1$͏mY NO;Gkxg=9U'%L{:t^x?o#euUo.Eog{ВJ-'bg6R^w[=xbx|0lG 9\ p 'c#YL$IH&Hd:t:6qXi* }?+*;wvJLxJv$!4 pW|! DC~cR(PC(dd]cxH͎x+(i֯=1޹/7xY͙8[N;)wg,7o ?܄.a dMs:]>m2RZ^Oy_/޹0Ų+_ 4lgEVD"m DM&4M5)[nZ2я؁>&.w'qXk ~#ɑWl@]q2y8u/CHMBzU*z YF/F?W5ަgJG۱ N?o9 454_[9Y-+@U0۫x=W@T D|{{B;j"|sD1r$B%F!@EDD@$t8W\3mmmVUUCow Scre]r炼 {Ox $@#R/2 -#cSmEȮXS]%WerR _^m=T:A~  % =,SQoH(+ ŠJ LzZzdǤ ="AY=70PiP+InZ"Usb[=[OIk[-ݴ*(aY8v*:5ӘUoY_O(wN*+',ݶ"Wҟvd?FeV[sR^Ÿ>Xֳ}zn:絸kC1*-(N3S0{c^œ.֟U֝)mɢ:yo*Jܞ"j]*A5szĪU?I+V,6ދf QiD r+5bv6LTs3G"|5梣-#*L,EZt_sV$ֺwP4% v1Qp5lZi'j}+j>nLW[@TЁޯ;}.UTfȕ^Dm*KaK;璏tocmӶIQ[4@,s{"J$1ۘ鬟R;GVh+|&joS 'b1Tjuu|Ɋ5=|ruڢTK.u&nn RV^Mrz~̕6EP+,lb$C[$)riu&j~OkXdʯ"JŞ[O!A(W<=ǝsLΞyGgt i߁%@A aWVWB4.2-ոd{^vpԚxT+JGSho~>; Մۥ\Xmѓ姏EWx߁^Rŵcz)1EmGqMj wH8Bn{.LZ WH\oE۲0ΦI[>*$sg_F.yP:mXŖUn[(+ [W&<#`.^Y-OJT^YZ좪KJ(y1tdYºiTi<p^g0Ng[B%^٤fp?򵶗-D1k6,2ܭ-];}nׅ/GO[g֮ĵ(6GYH+Sd4io_rv|RBgׂSùs<Gd!b`y[jK5p0˶\ h/o?WLyuu׊U2Yܴ}҂lhiF19دXmŮKg7[Y dֱmK1Le֞)<^yJ9)o}KqiYf\~gUKޮƱ\2}+<+}4a@rI*sH/) ᐒiӺ/P*z$:KW`OGVeo>,:-E$r<^BߒyI~kQ;ԼNb2q6g7UasЬOE޼M@Xago //~\S}픭HQ>6 TΖ:Uү0d(&{Su$URgjB#%$6:u8ӌI5 1nޢ'QUI=WneaZJe;zEy6JZ\<~('<ȬΣ/u=dGߍq:fy O9 i||[VvhH ZSV%FanrۚCqH%HZǼʾ^նV";H{ȴ k7?V8xZ8ʷDnj%ojz-deű:Hw=ۭiT$06WDj[ذ5+WA lv\pQ?u UZv]OgHXR:f6ֽ{fQv6t&J=C4ߏznFǃ[)[wJ&??ֳZ-NHXT.56|JVnV~ϕY7%kSEk6^J/MVnU{=X?5/VDE>e7(qyDkҟνӋ@]SѴp: `Vۧ[vhhu #ۧd<+ O 3i_fŋ/kCeX_kp,Yk2WfY[US5SW)Lj=WB}_ \Nj{[%K쒎R;@`V#rue.IӺ7z=~儊CN=e8V%SyrwsʫZ~F]%zlnwUYK,V&-a|Տ^;97o:&ߥkzv :]tMT\EէKݨWTX(+Y%w|̗b{e\e1#+Z$})̾eKI81+'Z֧ض?jn-ꨧB^wPZTje]'i++cC=lZɩ~Uv;fo ^QjSdaKwuѭ{cf=Uf^Fq?bJd6v{[&HIn*4T_' G57j}A~KҹY PVlMy,}LmTAҡZz# gh-•=rfJS@n>AXX2 aVw[A$LU`dE%=ٸqzQ*-ܗ-T=4Ŭ쿵۾MrLd\oq̉Z}OxDBᖮvG[!qƩnVѥC9RQLBަ:v.ư+OS=;50:8Ym= l$Wy߯?gsA i ~eLV$ 63*V%)߃qm_*$":쫆ѯ{m™3\3'MLKk8j͆jeS f ًGW9{7]4H7-ˬۨRUYl8[J +䂰kOR[6+ov0~BQv ~ǴT%xNփjZBm-e%Siwut}nMqVM"DݾK2UO:[}N{+E9ohoIlAXyhMRۧٯvMNEWJ<^`麟`hTvI^sJW- InJ|\Ri6iӰ[+f.xƗC(8QǭY!@lWvAd-QWEBbےS^rw5S Rhi)[G/W2c x.倯֧S:B RJ \"|&:tX$~a%GEun£K};Wlz2,0'șVKrs ZϠc^^=[&׍`T'GS6᪟!rOԙN1[*YؕC}GlwSQ!~&E[ΧnG5Pᬘ| \M#+wJͿgLKΨV#:˪2QEqаn@н7Wos_q,Gk^'"H+ܰ?]ש_f< GGr֊#DԎ?zX?kU:SjI '"V4 ]V9:),1+]I9̯0E&SV\֩!.I]u&‚\ϕOJvd$FvU֨ϪfjŅ[p.zo;+cH_1UZ}45SV,/"WP\t%s-

_1)˱extһ1ςrZCfXY cGh)`uqk{UUM3U[{%ϛOXGZbaZW1-Їֱ]LM%G5yѣwh d'W#wꁘB Ju6&t~o8m3X+Bj+k/S{ 4>k/mVKGg/s:.T:j'j'ΡQG\:G43ԗR>E&]tIV6E;bm,^F>dBAŮOb2XT ׵nѢ]du=N!pFcacKn[=K! _,il<*u=JEpuժOܟerNcZ-u4Jp"*!Fy*ƯqT517Kcx, ]N' J*DTT=H 6)5oC\I2("[}Ni HDS)VXR>2?Pi|\l| O{'[wzF b_A/2^о=>N_.)_2oc[KTEiۓњj~ziv=/kemB$/M,cy/N=/l#ZYB>$[".S\hs$U>2x+t}K}r;,i:Luwifm%*|;7^[ 51O;:(=vK҃DAA('G}s?=*rj_rc̴բ+V~9)̱jK1ӻtjavt6%5kX&5 <:$D= &*6RU@U۱So{$r8Y*~oNW_#y,RIӉZTH)J蜯shv+vYun-vV(OAUeobJW=+=Ƃm-دץYw/ܶv{4MЗ[2. jN.GˡtxHoL"unrirEtz0%%|ҊT<ʩ-_aH) #*ig Љ.xJ/:ѓjeJSztKfnoo{-}dKY,ګk+r}GWr>-na/lFL%sԭ\_ )Y[Fְ'SQZT'P>&rǣhv|*WO˝݅th}) C'Yk9sKy)XS{+*4 )no°% 0센>8Y$pB]6ًz,&%@Xִ(xq)E=~_ٔvD%y4d)K8 |7jd:`]6:_{"ULRZdޑ'$&eC$H=y~d.$\r5XY d|lLkqٞ l_7}+r0.z_F+VErǵOJkef/=eQ5sj,_‰;TaTIe:>Wkd]Ut>(k ulbKeL8hpfLU)g}T&dtSh0 Mz:LnQMbUc߯<^m!OsYnRZxnOv{8zItx*'I[`PP|契SRɷ\)3έVa2-.F85=9ǭWm+bT_!_?}{כaVJ[!~۽UL7^iY_]ݹhquv:d(?,u%(-%VЀJf+}T׷ƽkQdwU-Q}3sܪUeq-+}uIRȷW84ڶR^Z~;t٤*Sުi $VƙEV1Lf'ef3(~\)KgH\FRqq+F*%zi{\<[z|$b%C/(ּ+˽9~gAkn`l5Mk{C+eR%)5[87O֋<͏I"MO\/shNNWqӋ֡>#ȻRCS'jV=25U45qt)ڤU{a^nǓg`Q5C_12_~L}v Pf[8h-gF! ZM5Rϻ&ܦt£ j?mߤβTpyIU_s~奥juuΙZԺ#f)_1@$X Doÿ>%+(Ŝ7j1i#j>6rAɾ.22e]Xױy{trOo+R)XU UDHMķ/ mԪ&gc9;paf]v=-;mP7䩲< ؏h[W/[*pYJS8=i?.iz+h]^/ ӯ\?Q^ZOC,uZFgq${tO/SFF EƓZqJeoxcZkV56O{2tRz*>\9~.ZT5l_l 7z]JXFEiN<'oq5QX{Ms%IPV)"IʝVEN%$ dk/jvzx#UQ I$\Pah0ů !.im,lFJ䬨~VU5 4EzjYWk%O0!7 qL;M {.%*>AX,׺ʜ+&悰͹b[4^Xϥ=p5!_a~qס3KQV|U=g7$2WrrD ::sM SK ; Q6K>y(%zMNhRx+ NQ@ gz.%~»P`VQ4P{)-rdY5@Mz{ 81=U=M]j6+WEQz;UPٽ^㫽IKa% tE9tZWꇌڴ\2U_/5nΖ +7jJ?5SڨՕ~vJIpJ{4> G[Ijv<2y.} w#s-8 :H9@w qŁS3a/g]8GHDm%(fv_J} zmrVr;D~Y$4V]u^ңile)`3[Sթk7lyYekӅ5--TWR {T w+qf4eLɀmK-Bvg ")b˗.5~^aJA^ʃ Z^NjݣȞ~NK%gSk&;BBȗ}Xq(1j%ǂ7f_[54\ > c@N|* ;L"ci)2.Kl{NyC W|D6|F`uotUR5!TD9")G@B{|9ZX^3wsٜBb`Y.9JRX3Z10\gSITZI5穂ebɕଛ훻ҭCY4D5jlt3{!K<+ t8d;~+TUk"^JX_ٯִ ([UzՓu4FYһ5(/ڽ"Z:=/n$'֥e{+ė9ZB'r>p"p|' ;;)ol~>+y CBvNmx\aWD"scd/S~7rlORFYFdeȠ'ݫ$,@U|սmەm_7tBzzbe{hMط}z:fyY&q+U;R\{B="Z|?R>-՞3${lܿ0$Xtt_/q}/BhPhQǠov滩~ew 㕰 ornR̎2);(YWWA?g׾pW{WVDK(|rik,%^d#\ >uo=٬w 2y6s.=yQ"&]|uAiSl̑zdxͅ&vSŀ"(9_`anACVd]aIsuO_(O}Hve?LgOﳗbc&y22Z[J'G sDNBg6WMl"7ǀp  h6qjyxb\-bY%,K%bAeAqî]%C,J8ijܻ{X5T=KG/|_9zD  | Xd n}.u5 Zڂ)tE^o*rW%U2:UͿ`:fPʓk6f"dԛVM0:ph>]~ 0%5y^JGp9&V-og*y=]O$YI}^ʻ|I@@paҸ]aA9CZ-;u%^\-]R i`r4Fue-pƴ'U|؁xAsհ/v'Yijo$If2?kKO+1U,gp x(iI {9߀^Pg#cn1Fb7a萐t녰miCl["Y /Q6T2}뫿}R" !Ki4А(7OQ aO҂)u} />X_BM.JӌXYW{OO+s<:H }Ibݟz%D-9NۅכI9X&C?\Sa2QH1yH^jIi2w<&WE%e? 4S ]=\Dz'y@u?T]3Z->ط14Ӽ^Ӹw٧tw3v 5mq7j[O'~Yן[m:d@j,*I0t(F"41*(p*5KεVm!&ɸˏ4iT3W^,rӵ~N1h^~ Gv^[Lvf>țvU] ?l '.G^Cy-lԪ9aKΊ0)Bރfc `# NyȠbr%PidLzGv.?v[nUjg(11`@#v [~Z1F#cȌ% u=<,pZӅٔ&TRp *%G{UtwpZ',OףR/܋Mh=+ݢXF XLAX|t[Y~Y)]hwRu#Î IÇob8VEaY=V;b \)y$f,#R]RTA_Z;}rLG LnWe'k.s W2.J!gD^d}Oq İy&@b΅N0.Rpl^=eϛ'}a6g܋wXpb3}~>˲w<8N'8Ng tyCMi9Lg`$xZBVoyb(}Ͽ {OaA| $F}VP X9}VxkYΜd'EG*Uu^y|582I.;3nnJ;r5mqe6_" F#LƧ~WDO3*[hkHM~ar_\{7mCZC;&ʭr[o3G\ǑȰP5䬇_J2S%aZ{jLێ0w[;Ӧ0h@?:jɂF̷W; 3R6m(ҷ窋yh=%B&4ghCぶm|+NΜ=3~i`>|B|bM7@~0~ʏ^xyu CZ*_{ƏJ*/ zU@HI%D#WKoSõS٬ί%U<$j+G3eXth"!IG|qdc{U|+ଷ\J[v pn=:hUSտ)/ZUd,;cUiTyjj;T 11iq=,gTK;KgGAߑ$|fs -CT@9wyfxaTifgl6B)wіo9+*6O`1y{IDK6s^7Br ܁k7Ck*Hd$ "H$6Kpc{1S$$IZ%/'Q%2G_DhI$B L((D %"ADD+>wF-8"/yUǐ[E_Lʵl(](T/RጵQY:5TgPA.-9x1{.Z_'Eb aQ:<}&>hk%lTt}ܑv@{?4rxʃq[bq?޿YH:Seꠍ~޹%<j'v}q+*#;((j=~VjkAc-dOdSYO_Tf?Ml9  ݏ||z<;3Nc@D"D"6Hpc,³:]8}~{_H\ryKȾDD-^:@t" | #)g>ɉ+PD"+pJ›Вt=kپcxÏǛ#Y1`zDy&:Įռ)MzW`Y5K'S8Q:h~Gۋ AbAWi3Aȶ$ǃJ6&֯uO'͎I_$k/gkErQS}u>CꦌwgmОǮM 3 deBd5 '+l7;v8=swxW*ЊB(@444&CB8\qs?:GFTO"DáֽOSU"~jRԪ(@!4QGW//ƼKx_څά^ $?*|up:pRř)xJ'g!+P@Fvͩc>w9e#?Nc=]t=&n.{_Io?AciEP $"H}YiZD[HSչ ,ǩ-ZiܝasR#oќa?ߥ#eħ#o:3\rvi3٬5-kx-1CT%PUO4s@29sHe6ٶ$H  D@Dy.;a8 S}W?WZJ O4uN7>(5]U}lj'I@!ل,rF g5*fyCp}k>[Q)Zٙ#4#goNԊ9Kw[4Ăif@w9$#?:?s݉x9D@&'I L ݜgk./Ν:q':p8 qqm  vva/yx]u{Jh٩2ljKB-i M$ lB䈁//! v>e͐hjG"qAWܢ:6m=);D|T{C Ś}h3xzog嘥Ez`S8/x]=3ϝtE䡷hRZuo;̍-f_ tJ3}oن]TR& ~nwἼ}1X? ZD.ɿ1Ut/Bw'B_TNwJ1p@SP=xo ^%ܯ&L&H@` 2@d IKmml' 4h4iw5\}-ВMWʠ=UW4+!rCtH|L@Xq/c>zt*YF qZy\~(;y6UBx͕2+ǖy"Ya\ot5+?-y mtrhKOڤ|wlLw7m'ٛ%l|~[8`7,Rm&q*JQ<s fd^`VyHc%Bp;j<5Gt*'Zɛ  N=*auөS6o>^Bz~y^:[T;{5Sw0vjSdbH4pF/ms2YK;jÜF` [EL"L0D.]<//l8NYPU*@Ԃ!A!D­zOX>R/vHp78qW_軌t l<_^5?8xvIV:W&u2-׈Ƣ:KXx&#C.*~]ʬs=J˗}k۝Nw0qD7ïB!GC?%'/h^V@䥏zx9v;MVC $GhOG.g ".(4r'_u$X=>LEf7:뙥8 ɞhݑ#*w ô{\'x>y8Ml6E3y+!o#k$4׃|j$"J?Qҿ"w_]?!xWƯ5.5WQQ='o^G=h<)"^=4 ǩ1F;|+^Y[r50 Ϋ+˴Ԉb8A@I? PQ53P,>9qF2vKeQ.n$1~ƒkɏ[?bDωlp#`&7=wOnH'Y\>,v,#E%J|[A=KVdTDH{eї=V;=c4=M#b@,dXTEKX:]"1b1f !0[ hQ9p18W@~߫wK;ҎOyx뤐 I0^ \E]]wTQ˼g f"uzfQ5A*/) G7uI:8nIy"k ҹ )]G8t}rQz>>ܸj 4u$7j &אSZ=_F,1/e\u53}h3qmqgņs n_еXT`s@+%}D\K]h:v~՞7[p {G^bEa"@J1(H@ (%Edŭ\#˚vcD(4T4&@(n8ㆈ:u*DMnp{di 9C$ޑ? ]UO^zy̽c@ 8OPK/y{YVGd:R*.1^A:n\e%fҏ(OƕʅZiTQ`ŸhoSR{j?Uyl5O(Fw͹ҍ2>I~V-8wٜzrU\:-w`|O.龷zP/Ģ<*u ptCpO?h\K۸[_ځY6 ]Y A6[ʱ!f2|-JqDELQn"y$d䓼7Ӑ%tM ߡLT"Ԗ8iyؔn=nH[Q$;$nb~ZI|B)ML5kk T7xooU&w C`VS~A`sWxUGX(j/' [=F!i *w[7?c/=| @(P@gxnh2f4!eM~XxCeYi%ۮ9?y.ĺ@Ư@^OK/># xARZ(z_)CzpL9+,?ݏ{cdz5%Nju=l՟Tk}y~Ex穚hdOfzգ9ϭg:uͷ'i5 k`xpT.eFx x#fLqGD<ܛ ~8]_yaeJ(J( FH$$Y Zȁ 4] aRw9a_eQ7{t%`/ZC=+ @ |;?Xz։~I3OkoQaY%i.ȯ!9vUD"A>qjk"/⳪6҆jCeM64X:k/xY| N|UBÊE{@+ӝYa֮+*h*ů{J=GF|H4} 9~wDcNZr44GC)\.s_ a4JS}nnǮ77voi􁓒f~=T;"6Dl#]w `Њӷﳓu}1K`D-PrTe\P^Iڗq6/7BBďOm?-^د]\uLh`|ytGkIsVzDAvN[8(wNR\͞Qz?/O㿛ۍ`İGvd.8n=j"mʂK'8- #`4l ~'ˏ2/{k.֙-TtZۂgUӘGO F'rIJ~ƶG֏IψqΤHV+jL+C)e%˱KX ^oybŗ`G!Zi{*O^Rد>aXhﻛ:z8X݁սECwC0&Q2>%<4P?e R-6{N_#܂Tyqc}R_!?|mGwvOL.uoͅ<ݎzT;Ͽ/9=PE0칣(Prqz0нzAh ,/ XJɢsմ\)K bp`+X061= ^s}zAA@h P@&AAe4 4Zf7z'x!24U I K$ܯW>RWʞeT/$%w("CIKme_k[I}s>xmdjDLAFM7,>ca,Mw'n%vn;;VHI[ڤyy k[E폍HRQO/%Kb籍奏~vy.~[|ۂ4d-?u݇ڔٞeU|R{%tBLn %;%^>IɼK5,\!1A7}T^mOOӱG8;@(?̑&L$HL$IL@u\!i}y,*h@ʫ(a2OjUJW<9"\/E@耎O@xOK35vOCQJ)M( @)1:t.4G6R$H2$ Q4m Կ9-R!!>4|W|#;SW;cO3Cuf,]LiN'E_Gxd8\׍2|kGpzm`>f 0dREb:<\LboA$˕/ Po=Tą#m+9xަ y{^ʁʛȨBxHKND\q͏&} GŐFz?˪X"u* #|K{k UKR<$+y'}߃U eDN.c^ BDZM5a$w(@F#ʁ'B!Ba :qpptv?0A0{׹s]ܜwWewǸ #Hl! SDzVn9 gUv.'UC&iZjFM #Xow={0}t}_xZ׺d~qE+&TxAP3 xlbJc<͸r4|261j]n)rNUħi $#~E@݈sE6ˠD{J}\W}> ߅zv`(hȟ&)#g#0LQ~ ^[7,![ۭFyt~Ҷ3ƃO,ɞ,ȢBO?kF!$2d2D$Id"Hwml6`6ZA~^謪IA!y1ۚ36=MgȠ r9WGK/留3 #"yV+Aq_=v> zF]If%m $P* /ᤃS+ysI1)m>HFǹ\%GV8SYm%frbe!>ޢ|/pw6g|GPnn~ZeMKYyR@ _?{IEO"s9OuuݼNt&g})/-eKew/F(GwA&l& ݃Pݓ*71F#F#=l6 @mh>_uk}~NW9s¯=|]!KA1^> fŕqu%: ְ}~Ӑ1ON܀u*}>C֐ٶ#=xf+OoGwa:}&/h}Ӌa}O+}d *1}hml-"7+ܨT7w?tߚ2c [u ܣE $V"r"]Sj:Pf6/olb э)Dm#ҿ>Eo]g$):1qۜDBEmH[U 8DCZG 6!0u?.}_*24&PPA@g>xgWihL"b@-7|zmMȒ]Y6j_ꕋ=4yHWYxz}?RW?Q_>Khh_ӐbVbδywq4,C[YuCuWЗ^ 7c߅>e찥o*'y"1?;[ 'wyݙ(O9}W;=_͉ 631bi[-.(IMhJ^l˓ݚ?c7vg/KEWfxxZUk#Y ȩ;_?rp|@tB*3 `3u.$jf9soFz.f eT6)Z'x#Z+3r呑V63v@rɲxRL_}WCx:]`:]>l%>¨$в ^0y'WqwC;eh3HC*X7}$M/-+?wS'˺dk*w8ֱzRn>%NZQ[Q?]ܙWji1N^ZoKKb_JqUjRi]+)Y"fX9o-naH'ܮl5]v_bw׶0բ7"XzMFCNjFOhk G)T& Pu_ynNϑ}3l+( +GjFtp]/yt,~QED B<(M el6CeaBfm>Sߥё"DuQC(/)yL/Ym[&\D%(1T$@H"L`H.!D$ 'ުy,}+`IHVQ·P|s>w4f!f32.wJi2NʏiuӇ#v0gv A}go \J7"'s*Iq;-eRH&zzӘDxkLc}] + d4Oa1W)򖗹SN H# +sYo=BiR^cT[O#er],qY`Px;-@]VU C4){nyulePTL|; p$YٞjЁwkH&4z7? H Q F#,ml[l6cd> q ?$/!y /Ԗa-S a:R^|Oӹ^%.O`6ne?Z!ǥ;b%q"o{ iDK+NuuĶrQ'pZ]?nO&'QeֽcMxZn`C.Ń7=5^LfLϛQ`Hn?׷VWz|1ÆU Z*'iUiBxXn:c͵Og.ZLUwʙsTNό97zNz#f iwO :p8NgN' qmج,˰]8|7 Oa]Ԇ\KYS$H@KO>Ot|)]^" |>ԭU0nm_}[{7DMtI}4P/k;D@+%YPC"Iֲve ?u\7|ŀ}&5yox>8 $3 %|Ňru<3Ի_'%l{_8x5YN?ТKK)_yRdhmfV_ nw<`=`xa*?36MqwP?CzxC{/FTў3x_3CC`42SBJI7GBJaV1^T=fw>5䨖[ē+DK:l%hzwS"Ckg8҇([wcZA=z҈|9が؃"L8qܺtVb`l&H$$Id2d㍶[iR5ۢC\%q KUE+U?Ja or2p %iI1^K_ ^^ꡡK}|=`VaMkN9N4IQy13DcKb2K/DulE.˷0۩պKLZn5G@pڀ:˙pNuIcmLe@뮾8l1(y[aFY9@| & ` # B"C0?z;] }QJ<@n*2?$Y.Ż`qcd!bSqv5UL0Se_Iu׻=>~z_ufvn~jÕ)\j ~.C2~{%uJ9aJcVF'˵HN+Iq"%]NН**N{I*8YNo?X!+MmxBfca.5aCGH|XhUF+b/C{wcyUMlU( M;X`+õ"n^}or.qr_CA@D4 @'Ô. Pa&ׯ&K>UBe RUsG) M$Ӏi/ DT |>{kU/ѫzv){E|4#z\bi{!DA+?gҍJ|Ms}W{w0i"ct<:'z\UjR#GƫDP1tjR|}3R/=뙆M1Ac+`HfYXiG1{ǿ v6j?i  ύh1t( 9 Kt~\^\qBV_-G-m0P~7Y^<~o1 ?JǓ_gC[.(;ȁf8qOhȠ qHK}|>x8x9Pa @ 2PfuV +? I2@t|U>(|Z{u|d|X/O?ӹ>{ Iw- 0!R̛JsٜqiiWI9Th!*ݏZzhSVI|GkI3AAkѮ_1HMu)cM{U6?5] jKjk5#0_RzG:ǿ LcSODtq^q*=.~ [v qQJt zHÏo OL IGx%XUXV%X苁9b1DwC[^=~l_0L fLdɓ38:p8ml%*T Q,>/Zb'-80- BIL (pLCDQ$@" Y9Bl]5oZ:o@F/{4&*N;+_+ޖ㱜 ab:Y z8dp^VOc`.bjMZ?HPhG5Sܰɥ9O3-,ZDmS+yd^y܊_zGnn fGf_}z!嬛ʐ`%!s]Y|{&7`tM҅Nn4+&["t#y"x H'RFPH@F#1`Gorm @H+󱯴i.qWZ)aN I)D^tY} 玨=n_VZUt(<3F/ol-Rl\hcLRMf¾ĶCfv[ӻ6?(&1zSNu.v3 [cگd鮜ЮgR1x&n΂N%tp9&?{̮&HhQu|Bf2`&L2`Df3Ly[-Hd֢OQD(B񠐳q-Iy}*x9~0G]_= 񗪻!AȸA~΀G7}y~,ywk 5yɋk˽1lQ4 2h1X\]^M +]>\at*Zso$Z|x=ƍXSo .Ajob}%USq?aC0qF#v&u=2bۺAZ9̓uM|9_'ރϪ1E,&?֛<)iY-5j>c3i'BlJ.~L?'WwW: (xW7oF#h#\FNTM1l^IL$I$"KIIAD`:hC%٘}^YTځua ,@0_ @c la&#~.2ru]}jgqӶ0yM膒zvcBaF"AcVORC"@0Oo|UZsŃ121C>g$昮VVq0˸]`޸KA3!~_G*y֬+^RJ̴4fB?7z S(<;Tq.yu.*m^2w!ѵM_&=ʞz>k" u"ϟⰫ&6!uBkѷX`X|`*J`L@ a:` " p z.q*TBP%DJ"Qe( @I -%sCDBe <qhfLu%^j?:4PR@$ &p$IȞ(=Cpj~f7.Zo7;ˎFYiw/-R_U.~FKI@>c|(dX$!|{^_ǩбqK<9?cØhUQ%{Fw\T_ ]FVRu_: KH/٨|.ge o lbp"9jn{6cYnU_YJEei@TT ZP!(.ο&L$IK$I"Id$ H -%7}a-e 2Ya8R1r$ J$21\?M(EJKT@@9?][<y.].^}k d0UT+lFfsmC)[,AI A ,ALRiWOuOwO)6^? -Xkr$> m nǸ"vQ:[̨_!^` 7J&'8~_Q7!T{N,d ^N\|Pާ8s\:'g.aF>9xnKׅރ"zb:mjtN✢\PãM6s<(T?'M,S>N _Q0|ojOQ?$#aZ04$`Hy@)HHl@ @@D8q-=c{/|ןohFꀺ>u^exSΞ# Pɲ&?5-HtP7|᷾)BHIWo5r;f/i(Ϲ/\+ k4{SX.-ߟb^l+C@Z< h<7OJ> vSm so{=PoBI#|uwg{`8{,.M^օ7UFa;OɘlxIVۆlGs-MHnԗ)7o=6[Yb)e' @&ăl@HA8 xї3")`mոӦi&͚&4 M"lqM+TRDMB"H\Hݗ$!L?Ww+Nj>]v+/Pc |00(?]0~~ X!ً5*=(ꃍʢY9=0cgS^fg6\uW;?G"<`*+q%&~Z#k [a6 U -YvK펷\_W=m_.8Y>S/6g}>n3B.[ytM"/dds﬛Y4KK(87aZLV\}z=V[>:ZiX |C L٪g5?Ͼ~'5hGF:70zr\ ||8m{ፈYD0K_D}Ex{׿<=U_bKDt" D"{^+:EՎ[/؟2WCh™{MYf3mHTi<_ 92U*_c7>lh3ϰ jl/'vNto9Vr=ctM2@ @|׉r#TI b\WPkşt:y4uq\(^EKեo̵A@A7}%MG *q:& _>ޮ@g4_Ina;q|u@O06$@("8DT>g/fVa&K$ Id8jkSZ-4 6U[~"!I>ړ&He{ r9[;3aр@!'I oy?2}]> OCo+Lc,QZɸ/̛w m'޻[w˟jakeXcb}b#q$oQS'a[_"˖% 1ڭ7[a5H ٷH„ʙ3\oQ/mZIvvO5^_­\4Q/#f.v!WG64}Mg#ꩨ,;HgED0k?xz?3L[d*?sOw%c4ޫn=,('`(D  (|#_.pi @ hNspB X,<a:]f !:|Wyw+<U.@ nm %jˏfOgq)ݻޢ޳\7q$8(3HLFG9ZUN9zȥ&|n4vn da/T9wk1jEM荞Y~c1W%*J}o.t@Zxҽ61u!wlaIPcT䷼ޯ99 ȊWc*XsCs'yл k5H$*a $.x+Ξe^j짜U_w<3Nsf@ƨ pG7NCݯ1gY_[d:׊sW2k4G>z~f >!”bnoǸ#0sV;i}@bȱt٘تg&3>ash#ѳ|qҠNPtg=mȄ(;9/_b791ߢl`tMLRpr(o+ۀ'|:E.tdA0c$H/\$<  aL'AQ3_<'cCg: ,{F kw*5T ;Ќ~3EvkN[ A$>įIݽn{',í{3J9l?m'_ C+ݣuΐO" .MOOhF D40i;bHG0$xnؗ7'֘TewM/CT9^W\8@Ӏv#1p}z_+~M0La&L"`0^N}oо|><^/=.0 Ld鬞V%,#~;BI @h⟜8ӺOx'/S_<\t582kԛuyeZ5tN\3yq8M2[զj yhߎe,=6wn fv1!i~tGJ eDs,nY %1w/aGuE;EZ{gġCv.3xP?g~7GЦxJEoywo+{íY2`3AGeijwB0ؾ7U1v2Tr/ 2~i^ h0L HH@5vc0oxy]t:.o;;Bm/e /<].sl+= $|c0={YnIa9%L8r2EHM6\R;gm R z[[g+g/Ջ%,?4v@KZܱA^~BR;'ɛDW}=.+TqSڪcTLWV1Ƴ=:!Q)Kø9hڝWBU/ϣ ^4$$23;K7 &`*A ě&݁{ O~zszy'8Np8qermm la;jƗQ" @!LH\ "`a"<(s݆=v_^ќ9@ X+Ə]aOQ|E8[JZx w.k.Ir6 .ɟH(߄4?OoaBMP ^*lF6h(Bb Q:!ݷ(i=IgGA|vN@w}Ƕ=2o w:=AoA;-_!lLuK0>j

CCl@lC`.[m=kA;<>*`8^ZO|k|LX]GhӖ+#*sB,"5t/fF)"$j7Y{?]fv`?wS'ie.%AY`s8-fdcXE'c Xd^U|1 6@!_>nW]/aǃX0&}e_6.+谌 QAYʞi~G:)=xt##!f"s[:EwY2`wox CxuEY:l];31 KJ>Ё}aO|aU~4ݞC*pJγY]^oQ7?5&zI3O9brS(Ƚ6_)}Wڕ40 8dw#zwoIߧ2 qp6[l60oqo»,06m(+KXEDUWܮGxB-w;ѻl^H'&@t/G!,ͶЧ9dyQ:=T~y)&2ïͻ` ENTQ!{~|ԛD<6`q!Ynf<%?:څM**ڛ/vUdr=ߟNEvi%`vYR;5ĭ($s7d;I?E{vyOؗIԸ"w #]HCQi:دw٢hbY,JQ&C,D֚\RB!l6[ ? kwHl^|F}F^~O<𗈂l%2T*s s_{c|fɳm]9ֈb[tb.-OHmGp-CJK.f!%U?J^I5ZW>8Sb;ұK&x|q/8rrױs2J_ɲOEYO* %v7Aepѝaٿލof⊭3n00aHh\jN [sbsЌ{Q?_dfj/==Fe *^Wc[@GQJ= t4 j>LW>_"@QF( Ba!C"CM:\.W 6kj\?5O=_\%POJwǬ@2- J82JgyM KwQ"'SDֽm%L-КVjUjf1% ty獇f;\WAX#|H]s3BfhP;7c_#CPoq+^1A%6V?57:RƫFQOGuc[&iYRp<18Q*[V]ǂ7F,V+b6#X6+gj!zVڝacYR܋r=R%^ׂq5F /JsU➚ `)0kwmvyiق8%)M:+TuX,omr?>!%/icd_JU R!=CyeQNIh(6jڿ)/cݧ(' ᷉bv.S{>97o#*(y1cэG*}묙lpb/ȭ=ߟqǖr uan3WHEh}!3ick.ʐSe]#\%O]v9 L޲~o/Pf- 7}R_*'ؽ~EZ+Rڴ6객m]%=SGbs0?mPIPS~x$ޙ%x;G=9jb!du/u6ABDEWwʯ |)IC2`d)Yh*0!-a]g/"[TR ~m\`Hu< N0Dګ?7iFe]CaG-g $G7cmN`ku-b3WciݑO5i̽W:q=854md|^;wUynZlȋW!pXd1)HkMooM !lMȽ}*NO ? `WmFI$Id$IH "@$:`IdX,~-N!pB$+_# ݪ^Wm!GDR R( (@HKD ( D i@Io;:%b~j)IdL?VO>]y>H0zWjz mn;lob>LY,GʾG2W)>\لfBiv{?$_ϭ朦^-Ie 2vblngcv R(=#ǃā캤+3&Ql,ݍI{iGxf^Hv}gW0Yp'MqJ.,QK3s8~I{<4WhS}8>mYQ/b=poo@ۓs#rb||u``̆]d: VJ4.j5U""A@#l;Oxe#HQ);>/u/UZW#o2>T/Zӝ[ޓa1~=+AŃGVd3)]nKƩ|4-n |PIc?l+SD+s>̹ߗJ(rzR[ Zy+M֙h/l,C=e:2|.84< rb_f5XO1?lO ↮W)N^n۰OZw\~7~M#jG?N$ɒ&L H"@dHu.CO:i.*QcU,% \ JA( @ J}z;+žOS~oK*,3Fа{@*߫]}tzXzdGN]-9bk0uknV~jg@3l@ ?w_ϜPT0DSGPr) qC[S֛Zގ4H#g!8SM}N\ȿǴVz{ۆDˬ$2gI)O;|ZLPП0wrM|K~CAw'{ =~EBķI#t|߁{\Iu J[_P6TspjFH*D" "D@Em0dzמG2cxt;"DF6XZBEW%VZa mɩH\~z>u{jU+^vKW>Vb(g@CKN IY.v*Q; 'MUXwwX:'1ǽ ݬⓅwxTpqiwƪ_D*~-&7w@Q[O JQ'ĂfCZ5L F3&((gW%g$E>TMViW5LA*r6{ؘM=6۾+<E_vxWCB"m;uyJ-> 1P~RVN?̄L)5ɆM6;nJ}?e x'8є52P<Gr\=B( ́#@En c od=N}=t\T~t6i&i& oDt]-uCZ짝)RYeDӭOi>㙮qӷ`|؏2G֝@ZU:}|vm+sV޺굴b؉#nSWV*hX{fB@ms)\eǿ" /ӵ:U71M Ag+.;u:?ĝ]Bԯ76SrCK(ʤ0 e %?9, Ydžxc]M-@d ?1_T ,lGjytOlyoZ?Ord}&ΉgL`%Pfk3 *>j6ds <9T-IKmafRlK)k/]w+<%NZ &aw} 5D>4a#7;"]l2wߛ,?./OU y2*U%:]ՓA1;f)W-!̳1rFY<"ekk E3,Zҏ4/?Eݮٺ9u`ꎇ]#yǨĎI!X* *~R׵gO8R`SԪ} yp$OxkO˵W|v((RT,4s/n]v6'5q)tWKww1/ߑ;.j[>R(ЁD ` T8ql!:@ NU|fkS'<"y<ΜD4A\N 8 ,_}[0pF.ʔK)UCm)jT (S,=K^} Ļ;<쾕*?!G8xB=i%?G>IڶțզqK#2 $k5T(z~z{nXj Q;>{_OΫ9g}$?0$RP/諥GƂ]qKJ*g?Z/#ߨ|\ ]6 I*^]@[q:Y1oUXtӇXEt.g;40t ֊T>]ft]tP|?7B& +z7z_gᑤp8`p@ۉ8`\E1B!!0 Aa`01OE$> лK, DGڑ53LQNRQGȼ˽=# "!|ŭ.avĥӹd̒!EnJh %P $K5six뎴K^[{pI~@>,RN.ah&'Fu)ߢe#8zN=+eI |^[,ZGR{؛pJ(ޗr*/`tꤧutO]M癢Xߛ Z*1B+gGe(IpﬤKXINLُ ۿ+p,'#Q~WIki; 88S9BLaNvrAf\9$ID"D wڔl-EcI2(gOH){T]$JjI/*qvDxHbPZK6 țb(7}Am<pG-r${zk^us:o^];I#|;taAF;U~!D&a @`/Aiшq%u7T.5ҲDhM ; {^40vv J%*N_ᘫ-sJ+:?e[T9)wWOeuKMF,EmܑSvrf?s`dvBuuMsQqyx}KHmXӤQ|?ϢV<7Y)Si0F DA^zOEK[csFoI?L]\n Z.:8J%;[s뉒/~cku;ֱo|9CUp V˶| wd޽OU6KONjq:|1QL x,(wW_?Niq[ꎌDh@Q *#DE].p֮κϲ2M:ศcJ횷L !PZAX* ʞW_%|>QS?gez Q(! Kf Er O"&;u?c"A6Lf}#T\`}<扭ރPyu>וK>2A(B?ض:&0zK\~왐KQ{vg㡓#Ԑe>-NP (( @#a8l l7D:<_/]7ACEUjuOP:s_o/a(=){]^PR" "A&x(vq7cߞŻ"o)~Er͝Ql\R?zpsieS).@{;ʦԧωU8O}]'jj4a5Cs\a*(0C -y*k`Ҵ!y[n6?`d,nMo?Dk{CiO_gKfؼBgFUPT%[')w}"e+կ 3+':GNk qڧ7!cI9f젦}8B*^cyH*OE(1B#@D""&MAMFY ƊH>+uv7wPPL@H ]$L D $c F&e* ^ڤ_C*pQ6E$j&)8=JkT΅0ޓrw:[}h OJ\c,>&:"+ήQب2!H/WMlRzqRgX\W .\%DbY3LaqH9s``L;tT=n<س8WqYPOp~+EmOOOx_ <^1h^zGb:t6Vރݎ$'2s$ |I&jr!zճU?.D( "Њd2 7Er||DF5="ކh'R͹Qޟ{xx?.$(iR턁,ˮ+=3ody$}} @ϽW! JqxP[Ċ?[psE 8Dpv' z.f 9s̑boXOS BP $&H#Lsx<&'>UE! u$14KHIx U|NOJ|-!ܑO-3$%&@ ).,Хxw>O1uȫu#ȁg?S9m.SL4\Hw1;͎J;h;U\g)Av9C#◌Koޕ+}r90m,#!V^J-ֱN #[ J'=g\ޑ< o-^tmpx7f\۶G7י鿸f>$hFi+p4{e1Bo!a)0' ߫o*'֟gtj{_ǁy$AI݁9\[~ D"!0D" m:AUQ3>V%$xg3A!dֲIF HƯJ6%8^@.0$Dr &"DH! >mߥǽM֌FOyϋcũaU=1_?/{?  /)t/dWxlNTci K]R9Vv0C(~#}\dmokY ޸Y|?m{,5$ qs;}S2V",yϩ% nb5dl# >w@z/[hF(ZK?ܛpY.}%# ѻo/%sg<Ըۭzڥ?͉`}ҾֵdN("B8N' >|4jd2,`;y!VP g"6˨Gy;!*xr -GIj?|t$NVKV:r4giwb4>5ov?4=_*VIM#߶6*xSz Qg|I,ЊŊ/Ӷ2?Q}i>')m>B IuOe' ܣwy`C1̽>)MWy/Oxɤ' Lwf@qB荂܁e ʵ{Z~K)BDh*zW]]C:.Hiۮ;YD|]Yxnj j|um1JII꽊GΟ_^?A!mwBaWt0;f~./Uެ{V9dCM=,RY:(dEjhYkX*M%vWO'GeGvxN'z>\rCqq/x W6kSQزIfMt*,iy+EiHY$/By?R.X_4!s)Fͤz|F}:tdq}~NaTw  +ڡ PBvU|/CdhFpm4RkvHPND}  Hݔhxvq(a^Ba `q BmeQoPW]tjدQOXd^pA_K }۵ױp1Lvae|SU>,[w3 \wArϯñ4dA[}EHɋNU(| d.HS܁t:Ev+e"M<)\R'3d4+sm,k& qhn42oʟ\N$*|TӱsH6Lyyy#׀i5(lJqlT`km p񶗸Ǜ"A$H" B@nAp8q 9D: X]qZQql/k$DwK.>1؝DbMQWR|=Eq?rv"D{J_$~X YL90+ 6U/A|>$xW8jC|ϫVПW_?ٿO7=N6r3vU!BQDѢ&}R\!8.piYd1`y>ctr0!/^U{_:w>pI$D@X{Eʭl"p%}i݋U`nzTV 5ܻjVKa!sT.Y/\wq奔42\ ,g_[P?! a]͏cNj 8/GcwQm>lCal6|4,u\B©4Qԋ(B_&u^/r}Nx Qs]<>O)"Fq&Bi*#iFmT@I@\j@UXB,^Bh4ִ&ƗTszkdJ]p[-Int tR->2M +kC-zCIHH[KId&s}z6t׶׋ĀHviPgT_4ta;C|ro9^'4 浹i lDŽ]'w=zM N 8!x.85:Q\gRdH 8&Hd6E {?}b8a `/O(t̶Ƽ\;|y8W~"_)z$ ` f|+XZޮ7cܩEFY𱎼8$4bpBmouDY3xL[NO򖏥d7 xl6p;-r HaS01-b}2 r&&9ٺO!_B~v" +kYb>e%] ១3fN8 17[> :\Ot>~<{oNT [j}_yDM˟Sfp&ٻ]_e6‹N,}A/?.@ \A!,N|z{ |:L P!L'Fhu͝,t:a0W ~K-#m^Ӌ{_xO0dD?oX:uhk) ՜1Or߉YWmgIs˻kAo:㷻+I# qQxжs) a:nw/EL>z8vMAyHse廚?گ۪ODJtۙ5#Y o"]bWo?;nECp,jYZm׿:0j9wwF^4Ť(vdV9_J!{;$?%}21R @ߑ;&Y.T~eO;Y>־* r l P}կՊ(0?qdʫm~9ĭY{륋>qEjdS \"$4$44*l_\~ŷs!} TU =R NjC/˩Ȟ&˲?;TgU m\ﶨ)r|{o}Lu ΉՌzJwĂpDĨHt4CY DڤI7-n:\|v}_}L םEWAyp@~Yn!m8fҩ`>]Gq,T3ƞݺEުSh8,SԂR`˸=b Eac{Th^̼O (=[,oˏ5Z׳E1x؈b"#⑴C 0@L0D BDDぶ!]g\mĚoZ/H~褠 Hx+/2+ΞtWw}(#{^;d*Z38ƭewyظ߂<<6F Wo2s#˔&Dr$>_Z%еVjr4s 4TO_fWngusEŜgAτR$)Ex`2^i:0ƍ߫ɗTD=k7j-]^Y6Dt@E~/ FDxꮳmY~`zWǤSJeʌC\_-bđA~x <@ 0;]# NP(~uKuf*\,K2̳, dK2ij-ؘ A>6)g>tG,"/).ygӝ8&PmO  K^Wz};ǥ;C?jM<~7<Kʣ&N7~j\ckĸemdH&r0J=/E:?+i>9}Du}T[6yXPƚ}^lpX~+ͨ-Muɞ$)r\sB;g݃~fz~ }oy0{FǓN (tG4:圯,JvGYh[D WvbҩVH>\eLӍI*NZ7wS e4-קXώq0e}o Egu&߻W%WVH s ǘ7cCH&w#>L=XW? ++-йndIBED1=" H:X bFہK&I$I$H2 F\C%Y ȓ=}C }B-kk]0&Lw- PD:I`&` B`%$c#&X"p~"or>o" 8f%@![Q=?vȣ+k?HaQLc,ǍU6냇K_~Wo-`礊pE/z٧yRPA-癟Zx;K|;+#BȠ9nR3y.l b1 ժ1'A4%{3d 9zZ r2d2Ah˖d!hx6& wd(Lt!ssy+<6H|EGMRc_3c'Yhs>Tg쾷ͯ^tt1oN*YFߤTynfxi<Ua Zr>aNP%FOҤ-g˴zn8 SG{{qWr.yE]>_GuHEx ݖSm:j6-ᔳ1]?Kz@p>}WM˞J#=F-㒑y*뙳 <-j.}vVGCU-vE"`?f$Τ~ŭPc{ _>7G `š.g6ypOף8mxyzQo"țDPn;OMOk~GZ!=fHŌDy3t6!>ء(Sx ۵DrAP0TXy@hܞVjiGU |LZd,b~{Kb =֘qr PΞxO5Wx_~'Jh{SlfBc 弨֏h!#2ZڧoWɳOn*ps gvnU{֧Cw[2;2lrF/c`tJ ?'w&{/W?ٱ߀"EJl48ܜw)vӭ&?HWQp蘸~u9ABO2RE ]haIT. >07LO&@f%޿]cف%`:ع)7R6`WL|o{/ϰoAyatv<^]bqp9mGBpMRVQ-ŸI@e}#_{xJ aBM6LE%QTҧ^ܐ%A"u3<6ғox L10Mv񈢈6#]GU ڒ7@w0rvz_F/j٥08sUq3 >W9?cظ(w)*S3H_.o{ }zln4pݷr n$+%MZF@Uj͸?8{+O=T1ޒ#]7gMǍ,hAXxWxIX(aЧj^;%X^r&oCp &2)Ƒq5ɄB!0D&L"D'"t:eAT<" [S?C9hMrjUW*I+d] $Ig$;j|^E"У^F-7V6,C6hiCy:it#bR>Y220lSg42Sc>~*۳&&T {X_ɩ) VVa5.x*~{-9j;/3!:_+f#-<4؏N߂y 2]'YqLUd6KFbrғ6MZ*XV\S?ؼ&&dܒ0xenB,/I`r5+/ّZ䒤 Ҷ;<(jq+g0{Ic܌)8 qݾ('Ckz] .GvFpD 3՟J6*'3D6h4 ifMnc'C<^㍖` W"UVlqחa Po>US̾4`bH.~VG|_y~OmOvUM`]nxp3>Khlv_s n'~F=Biقs)Tv}),v-/R1ؼ;3`/;W&۵:Bз'C$]=ু,c(^/Ls=tɸ"V\tA>bsRҗ"g@bnXZ򐜟[IgɊ:\`s=Tf4S·K uLYJuvJQx鈈_b!{I"QU=/3$#_ǹ;q?>`#qx0;.uy76ŞS~~"+qm d0gځؿ7X?Se FT( BP DJ"Sr] :up\p9#ޱ6EY6ƞկrhؗ]] Vx%Y&X{*zS.w< _ej{G%5h\%_9 O*>R|!鲮 NPuCZr11QJ;8L.uyG0Z CIH+\n'U 1fU1š<|WNm:gFzh|t Z [}n^ \cʸO>f|b\2beFt5Q1Ir`S/*N,-M+$Nύ$mN(>#:LG؛>NGX68~G@"TNx!@ P S@kʫ̐Ы {FRJ)iiiE)NCkd+0LC0H]AJ3{\CUӽqUjz|Oi-wA({+H0@$L$-}~l# h%{*|VY wnTuWOlE䯌 &c6QkW%7V5~9KL }^p~kn_-۸_g'ڐl7a?KQi8fg8QO֑V< f32+<x_=rt_±f؛:=8>z8^7h|}MEI2ykvv( ,~Aٓ eԽ㘼w+=9ڳ;59腘bϜji$$4+Zti=ӝYD"9ܐSZMhWXWwr7Sfl&f"hZd 0C&;SgbygN̪SW9oїfU3MZJx _] a6zIsGmרXȝ!x Ǥ8B"C`k_AH{6%KD32mAxÑ)"ÙW:5>sf^%- uG!,~FjZZmlYH;|qI^2"_v:92JiKWL'jR&|pwc% ĮC2&0Tg kv@o6҅N~oKyX ZI A|?de{_S۴_bҕ5GB4ҟǣ f["¹PdUv’,#mg\TI-^*\>$:ZCeb"U~ơ}y=QbzGD7Gǹ#uu#rMϓΎ&DȌk8&p CξmFp8p߉wvl0%V_YfRzUYdv0K5R}COȟa}#Ov-3oO97 ! f6␮v⧥/?FKkl2k)yBPٿ"@/Hw1_xeP1vɦD0o)k `'`^@8dA_϶1'юQq#6K n/dF:*q՛lvHx$7?Z,퍝:('DGhcd-"?(\hj>XqU 'Ɣ_UDH*M?xѪEJ])ni D±o528M( ci8'>?sֻ,FRa!;-%Kp'u[ -˅![FanW]}!G^q}>(2d !;UQQT_}f;MK.ۯڐ ҇U-k('&2 ,"OWp< f'wZލ5h908D% }GBtȖRFMYE[tQyk9}mWC9J*r#"YƐxAPcIY/ytUNξ }lʞVYWr}͆AV.W{<Ѻ{JI:]cx0) 35o~rjzk r0aAt;0Հ\!+N6k d&2XLXd0,^UiG^:J;)TPA/|>})NڻKWƟ쇀2I@jkiݢpc-nIz^vgxuA+(k![:է{[<j5<+/B.M?ҠO sϸGֵۏxA  Xw0Fu(Z]F7hy0?Fj<6zAJJ}YkRمf$Ϸ]KnԻ2*|T|i% 4sFZF]u(#V(Lxi*_qu*)O.LV% &ťR5/N9%_~k]yO d:PaVE|pcgc ::J-/N(\\/cbQ(fG+;%b1KeK8(B^D)y=/ycGƏcoߠLu/nfQ$d?]:I{C fS  ,1 rGPqՆ7\IށjzNT0@V@`@yC]t:.l4 ̄ .W]B+S = Ҟ)}i2ERɯo5 Pɥ7n`M7ڍ:W}LOED$toZ,Y?9AXuh]iZy+ S^bhz]{Hȝab+zPO|Pnm2] Kv? sHh.,>k}bǤL]5ە2 IY6tf@y &&II*bX &&2 S%rw߭oe$$I$$$ Kp86}bDK< 4Tk?}¯{!/zJId( Mvz^oi} JB1{?lZ-YyQu/B˪-aÿar#z|"Bk2忩ʃ+u?@.}*O>b Z.;Ӳw^[m53e2=w37{,5Q_]wQY`49,-E$MWg^wW3v'd羜f$ TɺŌ$U 4x (nS^JCŐ0Q&c$a[ρ_COȆ|wBJw!n 9ElHu` o簭KM{wOmIqxWSȹe$Gh7Z[Ȕy_*u_oGwY]OmXTc"Q ;C+>k=c)|+UEDKjtR Us=׷QͭV9`}EOVڡW.[ۅ&*-%}Iv]=qMyWOOv)5i'~~VcIS"UeZ#m'u&6:8٩E?{'ô3+˚+Ȩ)fnfFKQJU91R+yUZ\Vl|UYV)(r y<8(- *]EI4gKXrA8@=:M$!*0xXȁ2pڅA+hा&,j)Eܛ.VJp}E.:?+Z,IjOW8 58=ie]/Ѧ>=ee$ ˘Ҹ׺5k*;/]t"$)tq>RyTLQݬ*mVlRv 4|~F__ѵ#%5ަqY鲝{~j\cn#>»ynPJHm7Tg.k/RK_n= ;CèlWN,UO1 s|7+K|Յ=dY+d`q5tVd*S[:T{!`Iv'EZֈF), ]}+={\*ͣ\R\2/hSEkW1U|ԗ\oqNFL }:ũ+?W3VtVTU w+Ǻ_iḽÏoyQ̲r9U~#+yܱҵ"w/g$1YF_YNr3mp_?ck$W OeTn .s1l39Tj'XoٵPTV R}*o9zֳv˫W!UN:U?A/w˸J$8c+"_jtabzj^/YSomoqmuz6M.ě2a4 Ցc%ٙ.iOVgj)1 |S_`=vn?vnlKe8rV'\U *]h׳6iWQ R[âh([rXv-y"ݕ}:%6R[hB{o z-t&\R+X]ꨒIgU`Þ8w}GǫVF iKwiح u2H3mkv+O>E7UYp{|ūiWk?~:}KWEީБ8q蜱 >Wo_k^w%H$\t f;- C40!C1+IEAL0lzt݅$ٮ l0̤iS,ާ>u(ڿr*\]3\-u~5{U>%O?iñ  yS99Quj;?*EE˵sej·ee:p@/5MG୨S:My4)ٯz(,0'fV{y[2;ĢYsf?.Q`1w: <܏ĪȿKOhjm2I0v 扛 f &T l~W -=A|\{?կaB.[CL4G^dPfzmDZ?5H&:gI$0&Fbo TVĭەM?u /EV1^1=؇~ث]Y7)93cc1jpb'|OU{|FOCQXH.dIC QeE4SHuK >K(tˉ3=ͱʩLUJl9:/CLе~eMKYd12r G EW5FdCvvyXeRH<(0 #v`yVIu16}%haфC @ 4 4Z0ogp¢iӵݾ^~{ߋ5GUAUB W@@|" oԞs7.!6l͋^7Xrb*v,y2 Wy4^'uSV$kӲv/j6*jKSs+޳IVIoA]ޥԤ;}g;ޙj~  t:_XѬW'^Hfz:hJ:c2CwChw_!/:<@K9c lq,?`3`}*pŪ6E nlNG6ye U/_*H4p*:D6FHgfsx󲃢}2DNy&3Ȣs'˾`sgϩO'?o>~?Ut=oT\ܪ*(4TTAB(@dȢ d;>^ к^iGvQ}!/W/CdKEޏհGGMDGzgj}r;'Ч:mr/|J@nF`eIfΚxԃXfRuסp0X -ï)[gtoW60_,5Sb&ʂ-2bl'2wKNנ;Fr\zwUEƲ!w\ =c@ێo +4)Ig}-NciԎy. *jo{Q 6XMdB<=}~բ2uFKh/s)5}]̯+U^Sae6U;{<>o GT$hAP.E|BDb!B BD 4edC%Ƽ$/w]Y`eX_` !"y/^aIR̭tmH:2eNRn`xlRbXe DJ2(ʒL&6a,v?oP1ȑ#*> M&.?uABθz엜/.<BNB͚FQsqN͟d땕XlVٹ5U||˹?f5%_ xR_FT~<<"b QKmZȫq80S')\nl(ߘqŶ7H?π}8hh1_EqF"s"nȾ& _LOTJ/EU0`@΍܊on;*ɰ`<[QAnQ'7䧖xۗ~볥讂TG4E \$G Z5Uk*W\pI~F\U2$ Qx 0ILь=N@.uk 1zFMZ^[?U*^-+^(tλR5$vg&lmEH0gځ[wé73[L- fL&LaeM4 1f0C: FSk'bS~. M$H!"]ޝ֞TO|_E4Xc4l*1Х=3dQNzGk+6\ !S|y+sf}o()R7ِwX_r%̜k3B n"/+U:Hj9r9wڟ".rBעl3bzjش)b_ézG/F]uэlQa$wJ=u]?OYW:HE=o n}1MǭW J2Ge|cݟo_*6E%q2xh,]!Na ]y5M6Cy<:uW^J-1!ݏE<G≸'٭w9YlZ<1ev8&>L7OGڽ^)`v`|:*f@ z}!r4 7PYg˫ONn?׊,t=%|~>& Ʒ30ImRETuL~C])G'˭9$jS0*u!R  jDT maǓo|\#![]my9eԫTkQ@CIsU_|WOzDpcUDϊ9 v(Tt3Π7s$| \ئHc `3V_Ӡۧhې]zLy*5њ&$E&m=Ȥ[:GL* {PB`bu{+0# 霝 wCbyK"‰<_a-=We%<д590 ?B[:{I4Np&R0] p SrMw?kl^-X'ghm+we8KK4$}w~d"TB\)H1"$}8hsyW@hodr<'IcDb0#D"1b6mm7GMy{g轘O@a!p*OX$>tDCkzk/d7xxȜ٘8;'VsL7Q5*XSAf`OsŔ4ɢw‘6lDU}.Bh;jo3tǩupz8"B OG&ۺ13j Z[:fF8hBj:;H".i%NB!h3;CAG 8zhslI'3=)ybK0Ni?S;G:F7RȞz:t;ki_KORVe?ʲzcP1œHF Q;wT 5 a:+߇Ndz0L&L`3 &#\a,.pjmFᆵ9:ywɠD`#@@?~a9^S&*YWӦ* 1qcAKv\< ?)-$a!ԭ Dܐ 8|"([߹YؓC1&.dɑEG}\=IxBYr)M@_osUg*w8$SJoOg: ~ϝ1.?Fަ4q$ 嫸vW N\'XCdwK! SWI~0'B`k%_1*&!ֲȬD΋Ca/G:nkR~onG\( r@$ܑTxu <E@D F""=\a\m^UF6u^,0Uj $!II>ʼ؏]S<Dž<<knAU]'NU+L5ysvTHs ǃ%!P_y% 5zzg׉7k 8d]6b{Eڪ=X~[gMvU.[\%DJƚ 1d7ww{2''UɊLRcDaE0=g+}/"Sd &I$Ӑ_M@H$N&5ͯ\0qZmo,t\:6o{kf { bb֤kQexJif7KAU7.2r9^sJce[hcĹ1#n_F٢))hܝ5ϩ_$w;gB:IrIو,QvE6iE,wzreދo_z~֩,/R1 Os `brMq82TKn iGrA{r:S7|ey @w._/lizk- -|"I ͤעYCR2#d)|7;XVha #('&P˓>2a 0h2LC%<f͏U'&6*2R\+%0(v7T2Zyl~ڝi徱T͟9Y亞_M!Z&|~LL ˅_$T|,x cDQ)̞@O F5}}5esD'O3Ȟ"RRBB臰wGr}>e%8=EMXy<$gS AB 8RI#^x^/РoѰ|F49;vfKZt=LAb$bG3MxOޤBD“f$ |c]t{iYղfҨ/d\^izÌ`Ծ Os;w2mau~gLcPGɈy)YMDGPk#G#?Ȧ_?!(10@b=>Y"Oqv~'V_ xdӁ<23\Ll 7[!ǭ"\DF "1DD""'].tt:m*lY ;Og9Ǭ=a.؞q /#!kf*bcb֎oV/P)$L/7ÒVH$EU]nty0]4CiZT{)QI |p.aBŜ[|;BAXf7W'@tZ?Ưܳ+jh6ȉp< @_W;a&(Y4L[ռ˜]nn42DL N R6P#8i:8@l1\<a[--֬6Yqg:q'NtM-Ζ-Mnȫyͩ}yR [ U%ݡnkjYHH ՈAL~_"'`|G?V_[ m5.#ZC^=]M/=*^EKzWV(CBDOƯxh+D2ϓ1>x1Qޏ4=Wg[KPci6{{{hBG:72_,+p2-Ro9I7as.Fk\]0zkh[f?ɾF+ҺX"uJ4ʄOH]D޿.S};ԃ'xKL09 26|Ri̚X0(.0=,8AyɺoaLr, V6bVM8 ˪z=J$4o<y#E06/_Ȁ`0_/|8ZhCLde֚h;lۓw ]G)Ɖe9KX TCWBFUa^=Awl0~c((y`4&#qeR紕cOMeۮ֟'x-}喅)gj뚥ӄ]o꫱A'u.,(=W&x4|}cH;,-W^&=ҺF {:c=_1;[[8~ o1!p1||o=b 6& (ljwp` R_f\Oq5bo ́jXWy*PIRJ1?%ـ1 *Jl[AnF" qA:e&?Npaq  !#5ojm%O~s{~^\,h=2;( p"|j3b1E@d2d0d2  QU\L[p,SÝ;ڽ> D u*NS Z &TdOF{4-VL&?w' e“Ik`LlyNdh:>mV2tէXK:mlv<>mnl.,$S>(s쵋FWհ S *WQ g:8q_U%']5WTyqp~wJөt=Du$Ox'{*rNʗ*ѨPf؝Mr! }'sF'9|U0 N-Ȫ,:gYWP^!f+D[ziˌVQ$@`"(:ym_"@0tFJ)gDx1 >{]B@lOG,YWG,k^JzL$H2@ 7 \l6mr~@vnFw^aVqfTel0 !@ А%D 8Cu*~.WG@NiA8R~f} @tW:_:?\Y?Yi;b(ܦ$S^7g"SWO8}dS&[NNvh M1FVFh1gTvnW:J5{[ A:5+kH ?f^OT yԄ1S=vd~Y'?oJh[~G&s<;&iovsM">3;EAFCʳj|_@㔇a჉˘l/)\ة};`{#.8`mO^G 0 0@d2,` :ϔ:gk^w8)EI}lNLJ ~"FEc~H vqge^d$#qN E^U"C9cI͊lFZ9W8ixb'L8 a/ j2{XtwT%Q)<葻3T^` Em[N6Hdsum5SHO cHqHFgf;3/ZT(J% RBUEs^ Sp{˅3J)::m%|ƕվXiCW+4|=jRQ(+LFcd7W(8JKr۪S_6}/V.\7zyڨgR _{hie1pQNbO܉䃡ZjDlb) Ǚ82n/pq6' Bx`ˬY(UM{f≒1@ʬOL;5{qqpo|B@[@DWS d̓7&ώ3Fc1qb:yp8NL͔Ǧ5ׇw˷'<.)O y/ C-e%^ rZ1RvS[2g7 Mh.;DBUҀ衟Ypt%!Pc۽?Dώ3 ;j[|mI"bmXPnq AM8|aB۩VpVԃh1 |(Yxt$}MtVPkTG/[/Ϙh=<$}f|wNPqaN>mmd C,)NEzZy'pV୐1k:pw']7ra&/k|'m~{(o?B '޸gdxE9*9 dod_ix|%V #!z!A- o\PA c"0~ Iumu**!D4B3a@45deU vmjQƚK澊+ B @0;kz+ʟ QGKGb ?1^I Cꅁ9Lh܋wnBM; /h/[_R_J۳B@E%Չ|y5% ytXjN'}ԔB-*/;fQWFM,(m ҀD/}xq~ |ɓ씲#Ƒ{Эtqq{tE+$DlU RebJM0rR؅`EGbX&!ӅX̞/Rs0 3 G#y#|m]] _/ OBt7Z(z2;H R0DA}{\oXvDQy #"41{CXH [&xԭx@C}! @Ya9?5Rn8E4:1.E٣ZK't9C0to>*\gB3CDVu gSC4Ky?3 XKK:Q#HRV=>E 6b<n<6v8 IChrqW 838NDN;wM4 jb ?,yP5\n3Xwa/e?N#}#s҂5}lOZH숨B^}LW\!zKu`D*w%>Z_?KvZӁՃ6.hO8p 0d72xܑ$2$&Id$2H$ %pso`wsw{MdPDBu`o9 a4mZ}13H_0Izq42: ^"L4g<\?}ݐMz"GBX]d)~YK) . ~B`2/|msߍǕG=lWƪ(Yb]YK,M(T@2 a/M{ Z_)_>cMLb8o-$|kq87ΓDPBŢͪb2o`:qV➈{rQ. ACMyhbdRN#Y|hug$fUp*pl P _STuOkЕDv,*38"$hnGɚ<  M-N3qKк·km/{΅@hdd[ /ߦ ȋ(oq<lp@"`!U#oÿ;2ͼZuK"~GRoe:UGa`ۿDAEPU*CT ?:뮻Jzu;X'Wr^UONgN&XZ%#A~~q7Rm _)k Njy:_ZuٛB E1&AH{i~^_jJnP]I0tw_pi?FʧyPi$u"p‡@ ß~q2bCٌO2u~oI~z`zqjoHzV>1 {GthMT2 |28~JĦ;}>)o)GF֬}Oඨ;>?oIV.8CJfHaYNjޣPQ4!$ - m~af.Lx geR@;:\-8?LRc҉TSIL`t&^ O}n~"ֲ0WϾ\U:h⻂/p]ͽ%ԛSg!h,S+jϖ ~>iFod3HWzS*Э}%ǹy٦^C[&W7];}Lovrd= ?-֓ |{P2 P|N7yW ~Ewq(D0L&0L 0`뮸p8{a9룆~_osN/)NA(1vw;4 7'AkLmNQwf /x 8^-vC~,#*7Epw= wKE >s>7M_Ё)kV]*~}}tMNƧ!ۦ>tu`E&.:}ƣNu|z-1˟Ec>J_wZGxoc QrxP'ϥ@tģ_\h9#6qJ(wiB>X87zu >P1JӧPHSͰd8Ij#KFCS5J>󤟂$(#ty98#j Ҁ`S y }wiόb1F#1n8mal]veC,M7t0J

ǐ_|z *. |RqCJm&H^Q3mXPV~rEg%_nݑvnDHݑؑ7`W2*ݾL(J2%J2D$"Htκ\8]kmpޟY_ߵ_ڔDJ#:r5mϾq&F1nBIJ*}TzCBtQ~F{$2>CTSJ٪od] ՒVZ,XY!ȉuѴ&"bmoVwؐ0'^-Y3v {]l?Z-osP$wv aͶ`4?wa({W/@{Р*: xF49flЊ [笮Lbzmp" 9<ys 0/}1`F#"#pmˎpyv[ߧR8CrRBOpxS/ {ǂ 폶U|"2&?c!"Fvb^ G%oWD!yX1T/WUz.j+q*;1±- 0 je]}f^z*x< #GgV7 wN►[t'X ڷ}x@J`z[w?ƒ[p(٠v Yd),h֛SqlÏMgOVtv]eŮVPE~{ oÁPk@]uy[uYtѰGxکC?ާ(@_#zހ4`dF2h|q;~_0Ld̘&%`K2̲aX.ǁeˍ>Qr6A!H &H&H @$1&faoF3Z&/wJM4{~UR$_VWiK"]=|OI3ڢe/:yR(~P>Z|3s[q/~+dV4־DprKͿ.]>V<0Y:0C+5m|` Q6x#QhܗL?e{Py(Y*<#1!ϥ}* `Q&N;0d 7g{Z LgnI驍0š4i0p6m3iQ|v#! "a~l)ei-{4d>:룰>4Sri^#@ SJ٥y6t|N~Pc<|/{lI%?G'Z9A -Vv#9OvSPXD >#`Ҵ:?U9oNu |Swj=35BmZlo9tcϕ.s[VWL,^MdQbY1HtV%@חVj9RַNhEĵ%]$DwoIכ.ylWիݠy j9{  5mz08#F/Ic ^N%Gd{ɛ}?0t=Ъ6{pr&8|+O__c_@}$/u|>->|.8lnνm 4#o'?}@wxz\ C@-$< "h%JzrC:.iE1Z/xWYBPsQB˼+V$):=01ѾEgl%zG ~ԲV';%Wixѝ7M=N1њN^MP+(>8cHUvVA;a7Ţ?]w.5hn &VMrȫy`@bԜ,vp@ڏi)럟mԚP " m@C bx=xK`QmV(~oNQ Al"2 `"@c jbUJzߝr#$3MP8xwEV'<9A-zH}E_ );v!h:)/F\bs`srxT`.E=,9L `7OA!/8*Bʐy;\?>.n\ [;WR=3B>Z ʦI7Jbx=ѲEx0ywOqQ#hVbDvcUZMANU( vE ` 4Ov7 Dz}VZ2$DH0#.8l6rbE joxP4*d+&A$[$>g;cm룁Ga0d (rH@.5jΟ WD`h-gt͞Z>qeOlAѤrː"j:,]{cMA%jAЧ"6(FR6_21@چYMo/qMlٳf3f@8upWtqC"uQLqgi"^Ϲ=s=jWW2H2-`@V}UЮR/㡻CKgOT_]]P}ݢBW%"1OwH.52-umE1My6Pw4d lM& M1Pug|8X=AK==9oÎFdc[^xXaCPN(\;ETL` WFua> SH=zʹW I)a_:dIJtǒCFiu ba]!WcGG(Jbú٣Jm~NQoE5?AE.A`@eG AyF@b%>P   up0T8,:I|+l%ysqή.}vU^lDd v7sԖ%nZʧo%783E0LvqCiE_yb<>Gjz\"B? h9B+zS@tǨ3pt8|[_; 7S&&+LՎLG_7 [$D u5Px`HA,Jڤ:Ū?O:ka[Lzdn -j@|hQp1n0tB_q5*Am>)-g-$$e1W(g-("ȳgXsq⃕7\F9=;SCO G$ 2L$&H$ !i 2?ZmeE0}dIĎz0Iz}'}ޝH ڪȫE$K."U"!/92? !δ~' ;,(_X9kg൦oEz[ah$[5A?Ĭ/hn|v3܄{2=څ5&O>"Q1#A}6o^QpU |:i&zB ieY(o\mT!|_AP1ɸ_Y4}98WLTTnbg=1FQM 0ۜNPVp :2.xTkBɝ8|=; t/K!AKWsV< =g|mɖM%$(4u*PINSDG ;m#~j7@pm؇| `zÑ5L7_;}!}.||糮EyK^/@C@0 L{ /^rRؤSo4*)/ ~=6v"ڇ< +8.:}NET;ޟmߺ֒  OWV=`Q Pޅf`Y~p8>Që;C[`}a7 A0GW5G>=h~k,ey^VylDɄ,'4wn}ո_CXnjJԒ˩/H~>PWIM,o#V%D)S#%*)%~Ϥ-CWdUWl8ڐܠ~׃Pɀ 9 #q.V_Kzy Es{v>F(4T@QD(@Qʚx]l6iO/e-W6Oc>!Z.trjTTU**UjTb-ywg!~蚐,uZ@@AL$+`WG*{E>~|okv}g1£UKN+)_O-P ߒy3x<;}" 捦+,q#X WQ=5#c^OK?6~&ڟND;Ź ʩ ]_Ȱb>Zqխ;nxܖU*%ݢS QdnIwnHbicM:EӪ?2Pxje4saHl> En-ǧ*B+__wa< ɣJq„dTx#E}!<$ԫ\ZR:"ec[< :?t6ˬ^-%wFb2.?ATCSV#1(7բ?RpRaga#(x&9[sH ~.6cLpnH6~İH#F qu\. snR_ߢpsDw.z#/ _$FS+$b=wL]}UkCITdttEyv[e@1Wb~`9UZ9 #'"("99AUz0x:Ò.^7Q %xzm P?4CdDZ3tqU~ۺZ3jWv>eX NL< c 4b-+^hwG0[oǕ$X9E |/LP@̤"([,=0/Q?30dMdP1̧Pw18Uِe _6.M)r:ᷨ;`D k9o> \ " =~ _apvDT=z<x'<3am m 2,a`hl.BRf^=𗔽Ȼʞ/:{?uL۰i^1= z-(|h)?ta}ZTr^ /-Gh j; zW@כ`{ TNml(_^ (4y+2SUS,tc1dQY6RĻ^-|\s^SW{{#+h`Wn`{d/ymo (Pw(0 @kg,p-zyd`Kw=껅I7[ .}Te?S$Qͼp(WUGď%Eb}{Z*5KQE |į9t*kwBGG@Y\U`-1fYˆN8Ȍap#8f0 mml5jNM`/aD1$ҚXAHI W^5x8<^nyE ~qP~[EâjWA7asR~g^!ݹJ&?Tt-2{bc!vE:v(tcu/+AeP3yN%ױ8hvXR z- w}^S&ES0t۞A!ppG+ھlg/ "XDB# $BD0mbmh~Ut@myvQpX$ȆȂRDK2 m;ӵx]Oow_:gQE$n!pɆu Eۮ@fr i vC0r(6=i}U %@SzU%ѕG(ןi^[j(_vׇKGZv'4པ694a;5{hQ2<* f_)]5ۋm>Vd(m3m #G*] 4O^/@thde 29,Upm, ֑善>lîs{ԽiOrQHx~F[I.'7O!$ЖsY|,ªXҰ Cf C5O%l|jmc4\9I ^eAXRE2~].GuL7 )-JVȳS%!HSSdDXS}k?!l{C-qힵ T<0~t$Eq|YM܅)jw^cH/u! [I&| K4~Ĺ>7Λnu |#Cì 9;|q|[vlޢġܐo sAB2{O_4/̰w|aPB4P( 4iiHyaZ 5ge*_'kmm0.3L5V}ă%MR"LC4@!"o˻xv!E)CBkL/LkN݄;+Bg%H2w\Vqy'ա/Cݎjd涘7АaRSNbě I]6KB T9竭?w@$3%ro+ U|+U>o ynyOI4'vhQijjgvk+"v u!6BhNUr<[Y"2 G07J'&@CBCYfLPRme}t!n2Hϓ#|+rHa9U0 )@}D B!`MjiH~辭3aHZ 4ga ,*뮺WmT| K``_TvW>yIv'zN;o:8l(̣Q݌fsdePrcy4em,o}-<9,BzGD,yg"kfg@m$&PT:q)wJj / k#ٱ{ùB\~HMtԙWXȼ)L1@bH4:p7d rW@N " 0 l:qd24CdʥRBV=:\B@y@aw˽_ /|v"Au1̇_+.aoe Rdzꌆ*xF_:"P8"OAU0\{A~+$V}:Kd]^:+Fchz(Q`ޕ *r`V1E2Ph鞆)0v=?p2%4n|jNhA=Vxad1 T%I|ECt$F]0|$L6;n7|^ !ŅCh[)tߎ\GB* KHpw=?dA[@aUic,IY0Z҄,'D+9ɲP@I8 aq GK:6~!BhE &P(EMl6m- ;sEP@*aR O^yB'Q4(ڨ}Wz{l^v^2?'/h^~H RQ#']͋SaN@tdlWSAY%h^q8`\BxO ƪR;,\] y}x6?hI<~M]kEFLK[ڲXhkO;O'G{_GzηZcHL6VCeo#I9nJRrN%c{:H*lzWIX )k(x(:̀4T\0U*62eR@k'dN$&quDnaGIwsdc|,al`6N*X-6LN$@:6BR |@mmm~M0.j44Q4p$*/@OƏ|K;.O|@3ZQl=hэ6(ױv ! jch=`O¿ w`;cxW$c${i0FAGLw/Y`vk"?$#襄YH߂aaoNԌ#h,|fd+G:c}r4:b wiFnj@hylui&0Fbz4Uw,vgqR(ўW  m(t=‟dlaL< !Q5Z m9!!RCaT[z/fE7(H  "xGXG`d ƗY vi8Ng8MfL3Ơq@Sqq!,4uBsXVaSpᦅ'U1݊yƯ/?xKR.NЀaУ=+^/&ާڥ{LWɢ_sqpщx\1"-B`v,wLk;\wV @}gTfPO̅3QG͊5鿬`jI_5?gʛ9>^:J}ƛRŮv#Z3- K,Ӫ4PI6}0dSWpܴ0&J;q Èk%͢&~+~>28?©7LX?Up.:>MPиƟZ,rv=ͺ@ u_* rz-yXB@Xt7 #'jwo°`*`G8. qu۷`Lӛ_zhW9Z|@-<|^k$P%@i.:aBtWCn,)HlKޑHJ{D:G)Ysˣ!P/(-:<E| ݂*:UIoc) /Az.c=LQ:C9Y"aw;VwfZB1!~P}7pW#ܳ\;;Wn#r{;*\=bhaᛁȁЍ@&/cqpfo9$ɜKc30X4y0ĹbE 1IVh;aiR 2YƧA(<}9vuNtKlvH.];W[Yw ۷8e֮^AivhaKPncv{\gWSmwuUwwNR]rޗmw=]zS(;`Pנ-nlo^٥Ow@z^|:UwG׬^s]vg_]].xp\{^3o'{λש՟xݨ[}]wr/]붶yg{ǹ{wϧz[P >=Pv=^@h>itA{:qS_]:w}}mvwOs}Cӻzmo]^;uٲsǧ={ݯN{zGuzylӷwZYݺ5mtanm}=յMmwgikXMvvVwXGvLv{Ν.wۚޯkgP}n/-GΉλվb<8kۑ).ݫ6u]VӮBxJ=qTlggv˸ޝD@@hh:A@ w`(;A>w: =h(=(>>tP @׼f>ZV[j:drv-*)JaUlU'm*uHvglv6MlT["ڴm.l귻r{]t]BZZeonmOMm[uثnkmvw^4-PMwm:⋮u@\BwjkYuvK֕'lYʺ:iڭ]ܮ+]Djm̗v6;NdƝРnin`uΪvQ+W^볽uvwt$wwm4mڴnڕPdלelezemm.κ)Zh;Xힼ=ޗg]{ vˍwu۶w\rI5n}^Ʒֻ#M3w5U#aZնgXek9EǮ9m} ttwlԷmT5u9wkJQݙl)]Mk4I1J:ݶ[-,evVɫne3;;w.+ml5+[Nu.ݲUG2j;:զ.,unjM\Wt9^l֖z6]vnevn]cCƻ%f.um{(Z3;wuuHۜ:wgbۗs{rVksv\㭯wv骪y]gUe"Ɯgm&ݷOo^Y۶!h˪)^W8*Ӯ4=gngn^:{^}[^vhֻ^oMSwmUݏTgy{;JnSol+nܬukZ}PP@hnwg1zϒooo}}sBdu=k.^[};YsMػۦﻻgm3[g{w^C]k9]nvm{Mw{{\S};MϫNPiۼQv{r^}LcOtl^t>ﴺrY:瞹{ݼwm`x;z4=gףwM{x'ݚO[{þ:}};ohv:݁/ Pϰw&uB]g}]z>CƺqSթ7{cku|U=oy魾=O>@z)@}vT ;z `=%Zw}zkw//v]4ޟ}>M{yvygT &S`0 &#&4dM0Ph0FM0#LF44hU4@Lhi5O`&M4&d)a2idL@Pd`4h4@`d`2`%OFi4 {@jj!U? dd &LAhhjy4AM1diA@d 4h &4h'dv8msXdcH'a5dB }37p05!ad7?)~i3,m3jB P [%745˜ N  ο=NФUu6(Btj NN$nس15ǢC=*V"T/q®Zɍ06,n:i+d+#Mˑl"6@|hފ'O-Zϐ+͠B*҂KFxzdLF81(D!C\Rg@M&OÄb !:rBR«^;VX\ߣ\NjŨ G$&{^KRtiOLE}V==̭V1vlV.bfД)YI"Ȁ]sJ#@y7DHlE5m#f3Y ލtcbOnXxKp%]6I2YAbx=85Qh{V$@f e #1XY `5TMLY316>E mF&yGhC@6j&Ua!qɨzΕ2DVD`p B q %NP0btF,q $Pʉd<1$r(=5j4MH]3CIw L I ) 9]VkМ D{>ᓢ3PآȮObA8 …NMP)$[h6lrheLejdi5ED B$&ǕE_Tjpj,Ȩ f"݁DGQBĈ'vzRj%#G\Xh|Iv2ٚ'IhIs%#G ,yjUP B&\Ί=!X W4+t_90?!$O3bYhI'+1L`S<`YV)1( @@b,70(%*Dc Lhղ8+GPHs "Fr(ż"M[cX.ffB؎O= όٰM#&|ipX]M'S ,bL<.zy]94@&z7 )iĖt}! ˤِWlXytDa|bY0}t8M~~%KC^QF 4Z |a9iS"RA]2p@#,$R xX&UvJXCesV%f[2a`/3`|7♚/s~XݢBl屶-stt".$=T򲟣E(555o[̕X]QCuezr柧5Y1ŝdl@2; ՝0!>}X_1.Ъ"ՒyqbX/WΊH[x~6s첩~+bBf4[UEL>; "H4CgMMeKz'oq-(cQ Y.̝ē9(]>bȣ]kBh>$`Z/D{]YWG:/-f;hd&(ϩJoE`%^P%zI12U!#M{G4ÔriïR\GFr-7K z^21F E\؟J°aqh9ްX5,u0\0-nux<~Z^q̰yaBPLN|q'DpJ[˹I&'VaŇ >즂nt_T3kHcȂk8}LQ_u\~I){f# LƹH7A})3EBnjn_?mћgM/%۱O#_|^]&jw mَߨR_R*vaIdF.[fxAψgG0&ρ^-x4qo|:i]]ٓ`൏ZsggہR {& ;Fu֓nfE$nJm %T!R'Iӯ%?$#D͛TՁBWN-WO0T1|Q椣mgb )NTcZ+O*5нA$refކY،[fZiI5[V%euPCz]hܻhsoHH:%eSgXbB)f_&>$㆏bڣI}ĒNoi—Sv© Ln̔ޚTܺpG̱\QqZeǸf0ҪE}0Q zւ5az92D! dY]mqp9EFEr&u;\hRG2ZDXIQjtpS,^JYՋEOȼ :A2+ċ`%CjlCEk֓BMv)ϾV5*Mkt^33zj \͢9)lΊǟU&$8K*eL-(ņgՕiݓTw#"LCHM?nJj*' Aؙ*khR%v\qAٯQ .a\QnDVhGjqv4Ē6h~Ց8'<Лa,߽uEw)n'J6$EkُP!(<%B&OǐvA2&'RqrGﻄsG>Rc3O^ֹ`Ux2r肬&T' aDa(YYiR8ƽ>0/?ZC* ,%3RLiv(O,gNVppǕZ+UX m2ns)7D൏y?Ҍ$Yϐ:̦"Ȃs2AyQͪRڳb`!;f%C'R *_+n><NI@zs:AX^ t)O\EX"'G6A G]T"j|g妆qPx3mvk2)Vm",~t,kZ;ĽHqy'Xʩ׾kUNBmMZ2w:6:- -u{J~eEs_/GZZ\tL/TWUO^o9 "@_ QV+C;eWo1ms Qåb|:㔃],Kdߊ-!=t){̥jy"# ljC];[(3hOX v5i&M^F*TyfN9 = (yቆFێr=6j+ScmgBUO6ʲJ+(|̕; GPAgEno戨/,& ˡQLjrCTR:t B/ш`'U}[&!@̧Ѽ=ZS~d{w~25Зo%ELݣ-,)y i9fSC_NBL %u Ҡ m.^FJG`|ep+1y?(fOIF{5ǩ?kkC[q)2mQgC{/Lm LN9$-e xcPևPt̔j9.Fv&p< [ /'JOwL~k df(?c ӝ*^ըa.F0L`~ TeBǭ?rEy#D-* H]j?Aij0I9whGǵ&`Pe  #]a rPІj*F{O^"w鞕]Cv$mWuRWU z}o˪YA&L0IVm~r,U=^rrnoDgȑ կiuu ?YݔG,UYw#"ҎfS>X?^ϻl`["N {J:J2G,2/"Yn"لEЃqvo'V~k~@$}nn,4~Vb[Tʫ̕غdOae ?vN. s Gy,Y$ej\s;X(;gMEUYf jHp!- vt\ݛ2qi+wPEkq/*'qB`=f)T[,;9ɯC,woH'O&1ELyf hw*q,Xy7_%D-q%s`׃*jDLaqd~בJLo@[񷌠r-˒;ڡ%S sX3  7nSi(0Z)+f{Wڻ()#^Ş%'&ZӒ.ɦI:(1 %7QYUd(1c#IR0Q({U"[.PlAU+rU6O<&dݔl yY ;q[ )p؀qp~\J4!vR}5UG$bQ{Ge~!CK )S;AB}r:8$ned,:ӽg=8OtNliz9?.ҢGeK \H b׺ffLtr u،Dq#fJ %Bv۾TZ%9%$AG݀R%P?W)E[_ѝh([A JW҇AP;ZnRIHr8ڝP&f_Q\{ڭm/c(_N](@)ói-Rrj^sT.[uYW5ڨWB@*CTV<􄬽Jޅr3}MV@GZ~HxZݛ=uzxLBؕSm^x5QǶ;Bmpzpbvf~ngAe%5;B]k@ď!߃օU5naZ]fdx* 8~G(M&KYespMݩKJ {*^m 1Rr&nѪ *I$%8F]0ۨm*mİUͼO UEC^Pc<>e#6zp}Oٙ>?g<̊3X6Ʀ[+#lRxao[?j.$7WL?{9, ML R[E_c4f-Y\P|^]qWWӪwo" pbq=&&4R镈y܊p#V'M *ZMm $VZ31x.M)!q)ǶQ^zx^H3I_g˹2Zm" T9$6ʬBlpxi J%qk_2-B0:Ҹ8)d2T>F|QuO7uV/ &J-?K–("s~ ׏\zbF~*AsP{^Nd=%!(}PhĝVypA`{w$qoa^D$sT;l )%S}EfI#eԖ[etfŁҫV y#[o=7K٢ҁ2ek@s3>Ck瀅TWB)?(o"@3,J+!|6FJKW 9e1W+t$}E!E3o~Y;."k~L\M8&4BMKlrV OCr]5rv58\&VٙVl FS%}H$/N5ϝUS`}CS΍lg6W` ! K,J,dFJҹ[:E1F+6 +%2$xe ml!A;, KKuE-&r`O 9 }{ Y ]lp*F[iyIE{գ"eҧ %狑+;0 dzoMIv)fHmI40\JDR(3rR7Q K d4HA2+da*uiuzEZ{i8+.vY N" vRu";c5~Z<4E[XQm⎻  t}~y@Z|5u)bru)]bP&-Y}$։s hV^e}Gh:DzՁk3f1"[nA9ہp/m-%h2ŭY.šO v [iG ogWdÇvhq~sK*)#Vp̜ o?%~؋?N%n;k^+(EԞW;uLG)PWObẏw荣WR|LxU+ YT[htYQ^gSKS՜9 3pR~ȗt[Sn.:SD5ϕt2nz/MHYN:k;܏iAokQ"_QoNgN~} -8ոۡ d)]--nvKd#taʿqL :DP1:J0*iRC *F5l>#dZP%>4ichra#Am !FŚg~ȷf;H6Y읽Rd4P; wɱ^;(f )rM')dsu秲ܤŸ;{N4a!H𩞡0i .w&Ϳ u1܂dvZOC+@/&xĝGJckfIC$g?u[,tYg_ޖTj`(FYp߹T۲4-#rQP~쵑&O/hM iC!zuOgz,L6JV$6Euo#0G?*  m c% )\,ğd &B:y q3c̍0Fx>i; Ts3vyt=h2^ƱA"I.@Oqfj%E%=N aǵ!t-9};hW'qc("LI"F*]va#p0l^>Q.)4// 4{Ue(cY,MR gVQS-x{OX%[/P󂰅iA =g٪ nj t&tN^vy'='  CPpa:= _ )H)ZfP&.(t0'>(8ԥ0a;X|7peդ^;A-aY50)i19ՠt|B΍7}Г0BV*h3_(p, 0X eϓXސn-<6ȓ&&BBToigG҅"! לiڿUdƙ>"E $"**!F*m˕+ |FE&Hq6A2+{e"KpMWDz2d-i 9}eaNUcp TY$٤IN)t2~ xU8 McȲr0MtŏTuv )&xK 6(rrCjl=7=/ҔΓFM̛rDd\l%=;&JMSzL_A3sFҜSAMl:5my` 2D 㺠v?|@őw>TT/ .*eF)pɸnb#_Y.!E[ObHCrH20O uEWu$Lm? Xvvζ8. k0K&S=Y4.WR}lcY ">ijD[ĵ6EV4'.zXB3N{G;辢0qVyr*սy]L;֖q :̫cPE")؅rC2Cw E41cۈ 5Yʴ!IT? +oZ 6Jm) ÌKDp8~ WQѽ3vCf'4$$Y*U`ǃTfQD|}RqPκVMs(|R:qD=v9,3 Σόi 'ՈJT7P#P}(#keɊs%[y11Bt J6ZޗML@V*TTh[̛c\ȮnaC$n-RvP$y^Wa,;G'w{װْRN4[|ȲeNf+pF\pg{T.RJN DBA+W Z027ED`#_vay6?k6|{+Fn]3El!kI\Ұjvҭ$"Mjǣ~v[;A{_.՝"k]1 +avޗ$I=N+eGiKFCqF-6LLK3 l1Gm]~@JI#يJLȦAg6qݔau)tkS3 ɵbsYE&*TZZc Dݣ5K Qly;k4:FnC`wTE4@(Ξj8RE_Ҥ!*)^T{N,͘NZ՜x>*[SD8=6LAhsyYw{J1dp\BeF2BZ;JiR/ɣyAU&C6~T!VT쒖٭c)ɋ:q [pT[m;)!!7T^WB8NkG_p@XW82cj%p6'\.3m{[I//cUZijB!,· bni]X>e}aatNBGaκ@IeqQDQk?y*Pfp t~/CBWQ@fO_mwI>}NGe$΄[q:d֐Ѷg*gjL^(iUOUN1L`s? \K3KԖTn޺sw١4r0E>xJ U E"614HIvro"@ t3Xh2!)"ݎb/{!el/w\C J #XJoYX8乨9ϰ'o$&E?no- ћ'T-Vy!Q=cd* qܢ89h VISecX#0my֤e,Z -ЁUs lY3{Zehe ^I.#v%S#QS{@KCd G9ou$%3*鹃Ӣ}m5UOyNl91Sd3,zGJ0h$:-&(ѯlQa(!T@Cbd(!p Eﲥy;JSY KQf%ɳ߾vvhM.*=S@4*ϺU cGy͗ΕJE#A70SdI\P~ɸcx.J5bƙ$mCۄ2Ҧ7h3my—+NEm^>Ǵo`ʅMa6+<:7$n{s= )vXBZW S">eT2 ߇^$9RV|= &DGiG5z$({Vqma5m{T3.7UݖtJNI}WeᛪniĐ:*;my^$8aXҧZĝJ,^=֒w"k(zfd&cgfAѱ27d?D+9ᬍMfPwyUڥ$f"qNO ~1>&~AIiՐES`Iݸo} V]r%V]US<WA)Rjuµ!< Zl껽i+0^OmMJ/[=z QE$_BƯ{<ޣŖN-SKe rH5]G2"ۣ;O^v O$3- 1]DG=|T) 0ִjz8+*c:#xS/Alb <5)id )SYZRЇ1'ȓ1)~QmU'P"9W47rrb$L7_S:9+#Jc<]pYJE4a %$eSL=KLUfdFnFKvZ'IPSӫ2ԏle Tk\xfMUlظ?əUӽ䬫֊/Ʋ~ Ɨ}v{}]◡3&3Ƙ\S = V}m\Xy]ngcmDI-~aQW'C ݪ= áÁrAR'x m͡1zP B;aN) eDԠQGga"mJ "zY?Pb} - rx0dsr'(<Bm # _ 3H }ov-gc? !'xw(`!ɪv =Ǝ"Z>&]-}R;@`$6nWa .?QDLmU9X'kҦpBC 辔 :ŒiFILJɞP\64FpU7̆Yvk ̩ p  9{gI ɐExB!fD)QU!E4|A")5n1R^Jڰd # 'Ak8ߓ׎u ݄KL_(#DM+ (ʑ$ * @ncym~ ˤ'NzQ]{Rr&ĥ7)) K t+:8}7{aj9dX{LFyRAzTe#\jPbA\ga@h _ Ι 4ݯ:yKL;uءN^AwN%uKiHLLJʼ}$Qa Q@LL=v5[Ϋu-]e~ph7.ܜ Gf'YI?Ѥ6+|aB xB l)} !|‚{]Qv]_sΪY|7|ߞVG,Bx%q4z_^DB}ʾݡi:Juh:0 `,EO*1 )5iSǨM0Jb6C!z4H8Hb' <3~sXJg'p&)Q!2f=j24+VrKޝܕ)~<~8twGw&ܕ"[{RF#tcqˆ3\a|3Bs^7^r<:\׺ :sf\64ңŷ&YrP;¦T Oenk D[Z>F N@c9T&@wr veZ-:bi9lQvqm;`~a6Cdu&{0.u>wSM3fMӰ8"48wZFөuêDOSz~=с>ʘh\aQR,ik|lɱ'ljrIju׌\|Q?LsL'uz/dQ,ʸ2̽^UL|;oKwY\1TGw}O9 W j7fI:qQb}.-P0Savt ^,oxp,E$pACEy'IJ х*LoF:ZDiI,~L',4چGy`Bi%_v)lbHbZUJ5M-;%pP(ѮEHZ1'N_V?%䩜Qc**uY/~JOE ׽C@`52ÒN1*[1_bWKVeTpQTc`_g쑫AA|1UYA:(v.:^uK~~Q*RƌqM.& S&)Gq߉d"+$<;V6-4ⅫojLoZ{KW|0"Swg2.1M9yڢWJ(^ߵyLvҊ.V{ Oh0y\zbڷ(e')/ BL`;-(+=$&)j6@J+ y+Z-r.Z|#ZN_wfv|T%Ew]{P1J "PyU" q"ZA<Pzv.W'/'l|,r#̵Jp"̚K[8&|w$]bBgؒwf!?O]eE/6 a^n[w@$Eh֞pDwY-ǝ+JgnaܺYz#MՓx/a]dWh~xdz5$W\)4WˎA?!zY`S6-(bc<`__@r$jڏuj)C~qR5YnӴtH^<h 喚=@vm@3kYY\oĀ/eGN-=En۽LQ"pe^7mk-gt  wP; @#_ P,4g#-J+FIPxAe zQ@ YJ1(ބ>sk (}P~' rIP/}* Ǒ<>Xq?8L;;GęGvsqSX+328Q"B$D p.~dRLtȣX m͘ 7LacT/N0,E;5)]5XM3*.@`}Ya~3e{'Ҕm,o.>Ҙ1^zZFg}n:pb?-ImvmgɷMd`宜P0ձT#=DXٳʪJ Mi`RC ҹ+3@ Np& lS}Csت#@;g3{M9Foe.]Hcle18HVT72eh T4V6nk9?n|%J,Z[DնNtGa2:^[6Dnorմp5d2(ے, z9 Dz U#}VkEeJmTm̎&3usX gG7MO&.1M2m :5K.3bs-lxr*$Jbj|w.ky.f…R yi(9)qF#wiANlUǁՠVq kgaYݱ.HA,?~G>D96nOzh'UW==* 2.TYK.J'\傮lś D|%jI/.󾹄Sx7S4(# b{bRONe!aY9jO[ *D*s,z[c+ߐom ax>ydD?B$Ph3kΖhfb|d ڶzpy5 o^4CM[Y-v`^MDrʑ<1//MP6gm9 ~5D we,$Z9 J%|ÿ~Z'K"plQT!%.xɰpE&feP$Sxtjla_=̷7ܹ^%٧W3:]Vm5X?V L†'!- 44ۦ|ѬFI(߶6vЩtcTkeY4;h(DQ'B‚HV&|vG!Z7\_-fQano~Գv^˞Qeod~#Ye`Qnc萶 -r! "ChJvrT!J|,NscSh]Y,Tߗg ?p0HQ)3g5n4< jg`͗>EO%I."փW<ȶS2lDS[_S{W*p<5uU%8ỠhV[h*$lO]lOR9B.Xʚe}Rx|(g}uQ9r-tJS/YH-)EOʙ,|8$$ E\#nktOqb$-۬[ʜ 5\-۽el()N-mGt%:iH,6Mj* 8=4|TNx O|yޢ({?b+v;? '.s՘FW3ڟ]?Z9뼷+pn@Tl9U)'ɏJ7Fy<){$Njg\e'0o%i Gkjn,ϙB"HkVm\{^UqЍTb65k]̆ -0.SԽGFyLhymXX#Ԍr$NԚl"q!TRƦ ~P.6{ .&yjkp cg,M{sRZԕUU޹Scߍ*7}zNO<V*b+Cq[ y^ : _];q{|dQjMQ.3jwPAGz4KHGa6 7Y6ਧ5s!<4cL_h"M'~w]VwÀBz걯)s֡ǔzCLDNy_AR40bFí*lx>nSWig?ZчI xi}v/ԪyoWcV9+3-и3e6sPwޝQ4,Rj f*ݗfcC:vFJ6kT?>]xn% k8$`{R6XQ1':q) Lba>R̪3gy< i9BvT)m@VߊoBW9\MLx6̃S!?@*%Q お0::ꧡ^/ F&˱Ck?4nFTfuC!S4U_0Qjcnaվe^C{fׄ^5+v5L<~*jGm543ڏ"`.~oG+KЉ~F)?u_=1.vRptU`"ʟ!7̻Ϩ4E0k,! !g2^2E2aXn (Nzܰ048@@qF4.23#3C?&"",/m"r!^1Ffffffffffffff` 2F @DDDFFFdD@ 0! `20@0dDFdD@2H0@O:nD؍#9:`؈ȁ4sY(dȈ64"0 0 9D,7C0 D C`Ez;M  0@ <"$@ 2"K0 H 3 d0D`""0` @"B"0@&B@^Y@uS"!2`"# D&D8D'$ɐ"9I=[$ρ͆ MA[DihL"xdE: Y6H($%: P#0F`$tt9@E>sdŌȈj"-fL \7uP|G @R !° Q r'* "( "3 @sxHDD``.(DDNu`UecPg`Mcee ?@0":}+" bܔ[m09ƭH_)y0D@e@~Apd ` E @Bdy6ָA)M7H=XD@NDz Q)DߺPqfXx"TJkPR W@TٓSP" Q /` YDlq.vvZS\~òku"6B"0D@O\ɳ dwM)i_CUXz5"!ɡ59SH0& !gɵftRSk@NMۦ_V#i%O~]גſYyW)i<Z[Ū]O_g$mh;b7./kBv)==VBWeV(Ry]$9}MKc9I58VQlbnbEl=ّqN|_ 3YWvrk:ȣܝ,1^T]K1P~z|H7JI8 W5 f9BYnqD* :U1֐-AuBP +N= kıX`%O\V9Oƿ _E+ 76܈Iu 6rD|> hnu; .x}>ukD1">cso Jvn{2X2fODw+mh0Ywl2f% : լq-[k 2Z @L}=\U,m:ToZuW`*fZgN([Jp-=4gǁ1,fU^F֟Qid2{G~aҢ[v&,<(1s{rcg3Ͳ_8UKi0l\Jx,tOLQ?PҊjj/L e4*?;/ yߧ[q:p^PĠc75y_ʧ/n966ޭ;Xݜ `J>D+ BWwԛ +r9"zr>9΅ҽ5Ê`eC e̅ ۊ{F9I~*硽NMxԽ9A,AI{[q"Bg3*T8E䍘%?HjrUsbI1{ޮ8! $ᅲWĞgfs=!`OwTtԾgŁũShD1N!;^sX~ [?o] @ꝥyyQtO,UAVú ŋM>s0&x`PbD X.3b3n; Z~}ShRê{j V^޺DTx էd}y .i!Q=T8gv"1΢)_;O-ZGS2ZAxI 3f) !qP ?g~ 0@"yE1 @3޽erq&N8?+V7F̧3ʡb&Ǵ=8a>gŷpQ0|t-w)eMYv]ìjttL2^Icɬ ̺GZJv w񂩙VجiBmauxmTUcz8Gp^vOH]4PهeJ;P%%X1JC̵ý~*vL25}~SUX.%U;Yiio>D,4|84V3;:{]ה0 B@DdD<& dH%{T3{.-KA]丿ڂٵ㯻b~^۠zْ'–0w1oKCr(AB64W1cN& Nm(9}6ġH]P/ W(*ogARQ+@_QAKE2'"2h12-E0D! s,ِ @S S )ͩ7c*[6["qN7"r^;6O-e=u^WEO}6YLgd6CYX$;s:bOF|j,Y38H󑙧~xg#HC*-ۓ>PiN'f m >m++TŒ>癩P= :e/Ƞ,rgޔ;I ٲ7vAǑ-?V_96xZUReBL"J;^Y ${_h)VAwuaAx=$u# :pТaNg=0B|,*ɱ(z+NadZ<'vK&&@eVmMƵ/5@/߆$H縒+1@aXf}Цw@]ՇHP6oJ)mT{j cumksu8c?j lC]^w;p dWa_U%<טfsHBL=:=u ` p 㭇^ w]>5z[n7l]KIFJ8%|\RQ;c~i4@۹ 2.ײ=vrwQ~zRs.:IR&mōwriĂa+A^j<0C7uSxDIK.eOךPF)Ĺ:Lz4j^zRIHɰ d̉ uմq.3O,'8n~Beq P4 |gF3'acU&NEyBN'ñj$O|W wOXɫ`f\ÿ<ͰYDu0~;XvBL(Z 2Xߋ/zR$?rfMD587} .p ['Ȱ]&'T#)o\ˀb'Jy Z(vl#D!2ӵ;? /hVpTC9 LegƇJK,Db7o_ B m}51]QY]T'H"ю{_̫9l2\d{ ?.Dfl// +InA[ڡUSR45 +{e߭#A0:zwEC"V2'ljo۵73PM:$.?%閘 L\kmMAhh+ܪL'_ ˢ TX4T=T\߶.o0~%wrNo$LBB-,O5 `ఖ"<:2ǚɃ F%$GXQlPWƈSBzeƠ(sV60@(o bBQ &@Ȉ   /"0E$d XdGȈH2"f@ .|(*POL_s0֘ P̈ DSDB`3.!c DȈ"D0fDV y"$2s D;Dz c` laȈ#*dS"v 9! 2 V!2 eS0@^CF 0@R `2``deȀ"@&0C" < + `!g2>d@0D_"!2 D(FDE2 0` *0f`S3D[sz0D4 zd30D5YC| !02+Iɘt0@ȁ̈\FK0 3@zS' 3!Ecc`78AF\ٳAXMUr[NN ;/,0:y9!Z a>)@&d+[N@dg;,&Ͷ]B؇?)LN0\/y3 mU|鹥UoWKpšDuI`BLkm=eߋiSY|+%>LJhDp.WvG@y07Kn,S~9Hg57d2TW0e y.qSkLqK>YFx7%gJhVI`>7V8Cꔆ$/`. /8V93[۟{q/-z ]׮5H]SЄ~\!O4M^߽%B*pڳ / 5_:5ZmYvnIOxͮv>ݘe/ SJ{-B@́ c"!f22" ڙ!0DD2ZCdZ#""*92|`"|2K{HQc[ paQkba[(}g4Nl9l=s{l#mqzEǎ%Ǚ9J98~ l1.O,뉜#<QW'tXY9V/]?d0|.KC9+t'Zw֌OK:e5jU%aZ/daDZ(c-{#Ah+Q;[! q@ŏʇUJdܻh=n HuH0qnp^ %eԦj$^3YWLkFޗrjvxmVFsV(FL˶tV{ 'k?p [}Pp؝Uuy1ɿAU}.@$8 %eVb466š nC~H&%Ja;1`edOG}V f#cXknyůzSւ檋J!ԘNj tB|`aт.˙hm 0AẎ8Ȳ6@?~nYLJ1$DB}M tk[ =ilNp+-;r] qhfi14' [n0=PiN}fTw!6h&2t OC3 t}z[w־\}s r>]81 ~^9r/_] P`BzK΀“ ez-:'_3Mc8T7+LI= C'B}؝qlSnLVO^bl"sk]_v+=idc5rOiIq Bn,OqzO.|)O΍7YX Ĕs+IKFсAڮM~p{{sHD}S)'Ϳ(OYCMɄ[hkr:ϲUt:=wUAǼ(l80*}[O^#;_>ٽzz{CMvU.CÊd흛 G 9m?hTEFH@i|j篢:Feg/@\6ǻWLb6]*֥ϡҫiI*ơT(U ]||K^q6W2S0]<7O>+dgI_UPY u,8ju.4Ff';_n 1d6A|μ`݉}3tt?ۊ*db`kj ~38[OZf($.4z}Yİ6GPkxb8 = US߁Q#kye_CCА.F9y}&>89Z_'.g8]VGv9:RRQkrΆu0ꮻMy3Qla^4HJD->Ζj&r;&vetA r#X Ԉ÷u@88 j#\TsЙ%ü1[Ϫ7HIT8>` ]V&3c2γ~,Q(]Pt'<_~5Ub5rLc8@άpx|B +ݘn5g!tA%XŐUݔ6ȟx|~%ȴJvP?dG1ё8)\=n;Ry]<ə]욽k6ud_-"'Y'YDs< ݩ UQOkxHa@"5P"b}V D<qJrAsP;2.L9 x vv)aS, @ b$s@O,wFN70Vp8jhH ;Ph-{ qg@˄;њQ&}IBq0p૩w7%vkJX &tϵ7cw͇ <^xinqqi}ɏۖA[(FXV6|i%|Cǽ`Ƙ{5JCN97нIB4B5 8^v}ǽYs(Rr呠' .88i kq_elÙ[$ g8ʢq/&}Ny]=HN8 <ԣ}Oe?vh6Kʫ{1m&'<' }6ИҴcY߮s] ";5_$GF9zίy"k>hթרvҶ,lڋ8eYs*b[I13U yꢘo3?L!@i1Fw=f #=6]駱|n#d[gԲ>9a\5 \a ϕW>F` ,HdALbEa5K~㌥t 1 5:ܧ~ 58 zpK }[ж*ј^~}}"oXWvi@-FXu]7nֈ6`9qFJkӫKT>X;A_/M B<3^). ^oGrBKNQ,Kad͸%Q(1.l0^btCզlyn.F-!QD]D*)$f^BppeeYhb$^w{c|dBS ](g"zLc%8\¦xܩKSDUZ4Wq wxB3t%D+'QpJ.ehb3V찁x Iwѣ5a6f^8K61I:;ƻ@Y?-D0[Yڠ@Ǎ4мW-Br4V!ԯMIu57>=|6y FӠ&â!>2" (<q9<&ǪҎO87kKi(hp=@=Zt7xyS'X~B|_c}}$I)JY5DEJaI93Ae iI#yF1UēRt 6?E.5wC &A:P䂮GE|>nc.m䦞F^IU r0T`yӡw!@J2tBUSe]#icGjfb>l5&i@#/)6lX+1vc\)>dZY({ Z# *SϕRXZ'Y2f S dR@ICaTh|Aa4"Y, ';WDž Ird:*G|,v~'\ỳ\Z(q`ռW- 5*u m]s?"A"KpjF:Pf |D}ͻY1FJWbzo[Rn:T;}: ld Qtg^BؒbqhXnK0U"u12٬Skez WV?e^<=D{lDw@x6 ;@מ*" Ner0SYƬq3\C?Kaw5"HPwϔ<2vܵXbW% 8Q@xkŇ)9FYJg8@X5Ls_T  / 1 F@p wHV@!3]%[LߜCՒ\`ATOoeks7u2?Ds_PuB֑= 7adúekM-=T;Rl8 ??z9ޥl LP$M-'*YF|gJd(x/}Bg28DGJSf ]f3kwh&l`J}ԐBx DFM>t)%ߓ 2ɰ g|perZ 9C)fu/mw+Ou0g!CJhAhp`Eҁ@ƇBr8lmU.|p0WaBHom_yP i,a ,4*& `0fD_0 0lf mzw2!0@yL`LYX_ rd\ D]32#08G2ssäQ 2 3Bc^` ЋbdR@ Q#3-L+y>2"C `2~ ̀x̅TY[SzcPd?BxdBxd6!NL(@C!12r.wVҽ ?G$l)3H *2z/:yCn|NXBD!kY#}.@qbgl+؜KCQ%86I#yhealQs1t۴bψ'3'r7nڐ8&"nf 9jF2RlY}O8%LX⊥Llw5Ǜ>mg __vw&, RK9•9ς)X;["uvΉvC38obY]{y.;`|Hb\pϕ4 u_+ YOEZxiruLpeˉaFt;qY%!aW9:] h\@f1؁ 'YRܙ)KZمG7oR^C0}ݑiV?XqO4m=i +M~;ބU8j/T 6xZ7u,7d-\l[{.c,ы*:. I <`"U-"nS/4PǙ ˪sFixXqhu@(De'E.} !_6F6yN U8;Ė#Gb4g8qbdH}r+!%J,.ֹD OO(. n1l\ ,'|[œUX;x9mi&. )qh  .VSc N]P?M\t{Ek3.iG1Jks0 go3Bod+ۍoVnA/bBu+O0 5#Pn}[&\u+d/9?BkNS֩lb,y)! ؎uE e"%p 1' 75 `F=C1vc>E i_sl(]ӁfEFD?\b+A0EY]HA1DL>ݗa=BZ35op+c &71.qۣ@3,dԿ*[@>5 v *9ﺸ ϓP~SQzd3KcǾ(|#`L!@Z; „" n?׾aCN}f&z%rְš|䧢\ LDZRH[LcPd `o?B3>uV B:R5Yv4d Ɋ8k"Lb%Tk>z^lsqb iblPҸtK4P`OB l"Pe%}RCyu)u0fphK=W`i\4! drbNvBG-bqyxUL42cE0։`YOFޏYI}j<3΂g976 pm7k-PfѠSm=ń:@p]LP;NYv;#Ù+h={"?ce]M(1@沯8\K/,?!tv*^b}\y?SBKWb$,mc~,|4f!0 ɐ ;F;@]4`d @," fE2e}2)™(@e 2 a @0&И""C``&C'@ Vb '/Hn7^82_jx{ЃL3`o v$3X` !>A@9d-Dɤ;kgP*0l5p̕4*+‚&ۭ [ub_wA4ed6 iGVGZT,{o9D"8nkȁ011gnύW$*ؐ;BnٶӅLOUq D,1~*㲬MY &! T<zZR@nc0FW?I.Nçr-Y-eJv8U$E-e,MO^]NPo~@hZcf?HIfU=i.L$l=Ht„ +yB=|Ve1n㬟˫:0Ήj"ɀ@ !?Y *9XZ""" Bd Ȉ?" E0 q}T) %Rtj|>F$+Bb7g[an<c wE%FRKYl8pf@=206q mv>B&Ľ yH[ic]UE'|<\C*9"SnX<EQtnϲ-f 3?XL, #Nd5:|Ԍz}f(#' hCtdMI7-A3>qm?S,y}`N?Rv 2:#c9DlД'/TcшT7MƺpOɫzp/}A=ps(FQ=\>I>PF'v챢>k ;}iw_#OBHcJV !6 ux @A){y=&Rwu/i)C1`젇11z1;Lxz 9Ĭ%KyD*NOY ζ)^ʠ҅yy[k˟g5VlJyXUK;i7airwFac'@Kp c9't\wY؏SK=b=I@%ɚa$d5 !t3QL=؋呁_g.z7m:X:4OnoOlHD>H};qt{"5LU#^EQl=tl8jev<3i mĠ#}[s`!+?ͼ"JQ_mBԛ>#4H:~ƵK-ohrMh).}2Yx,V<@?QD૊60$`^"P :^4z>ںXo#x#C("Pɔ>婄P 4G `E]kR}V4 U|SA*xw7ih$(S٘pC^K_s]^f^A{jXxz9υ7V&I:bB e.HC<[y $ΊzGn_#q o{;zϱ.wTVHV u;Qa A @̢ЊU&ZL<u/?B o0/LbH^5"0 }=4^ҙ(&|g8U*Hr~cqD x K  f:@u/ZҰ,Qe (Bm֞}+jG}1wm<wL4f FڎH!7.9g~"J|$'S4UB@bF"Emx\ @uwNȅT(+8IW#OL/: \ iDp=[f0>_} F%&{cBgUόX`8Md e= ) 0k X.晐٤]Du{5~*Ꭓ?NSq_ICn1G:#"lgæiE t= e4+(&d;"Uq[\}wrdeEM eH]?J01(0jwhDG"co6WUS07ȮKp*%0#9C/dxˈ _V!Ëa&PaeuRyfLW%| ^H'vUEPk_{ѓo떆3i4? h,aF~>^ ",MKzG1Q 'BtqUUFs/ƿ^ep9̉Ӯťs/ Rʊc׈&Jpgo#_G!Mjjث}{6[d9^k'r-ىZOUmaAu=5h*%6h6$g鹚KN).C\; R(.6, < ճ#mkixVrthfĶtÇHAkL>%ͪ^V?L/ ;aQWhx!hb)VERI".Cvq{xpB{l"þ9NнQ@/)Y-֯`>n>|S#;Xj2H;OCwL=]Nvg, O('90c]HgilW4-fbu̲ >7q5 kh (42I]5cBZFpWxl%2R5bnv<:"a*7.$*GBL={!~MG s㆝WU?>mF]Ab2.ߺW4i<1Z@T,or^ŏ59-$R!3<d2瓦=P V4[NE38P(BΜ~!_8;DG䠿TPj߫2??~U=fžuS`NV[#ߥv 5Mg S6e=UEjNQ=!qU^$&>sT⩓JwX,.=nLĜQ?W8g-/ƷGTN[ *V3#zX;xS~UMꇝ=2lHg>ي*ǥnr5' r?UTgy=wɬ 4keCȏ`]P\jk蟠>CZtC`* = o[Ar1|ZmmGTSBt/e>zsOg)YIdz{蒿 1DS˼qL>heEE|D@wBT)S)uXӧ?30HM.ӗԻǕ=%[ ))[Bp7el` L,d[g?аL+; جux(([}@8OpW?!%0w#CCVнtzbby,<+}L_J`oNU17'{^IvvjdG1pwSKC[mg}Cп-6ݫ_7~(.-s9t5T+vVIR*aGHt .a7P>fpǣ[;U~9T]<-s>k>:1$CA r:t;ѐ=i U <ԽʥqaE ly"?1zU`gsDOWDEF5{=v"v-fEr햙G/e!;djiu`?A[+' _,;>Ɯ֞a֓~b\dIARz _R8M"yion? _Su ju痢dI[ysy x5%jLmO߾ϤēvЙJ8dY2tZb*rj'i!0Sf/&72`lj{ZZ s@M>>YZNAj`؎mLDmaCs͇}^ FuV+T ^-ڿwYhՃ?!b`ZGHfC/ '/Sޡ0,G0-qU) gA, 替5S&]Os=Zz*Vk!a3Ǽ@{G1̅l]}p5?D< <[e]1nn'K۝RŞ9Ef*{zW0xa!sq0{$ 쏷waOs >JNf]lI ߴ"[lB ;; >,DM 9@?D9Gux)F8$V)_RuMٮ 7ݡ'SoeEC(tCBT=k3W 8vg1By35罰X2EgCT= U2wcMbcDt'KVrw< nG+sNAPFFVo׈+ВoMOUsLJRfD$ VNK031*`y٘ Llʶx %/Qn2AZPSuGؙ 9e9ǡLcsTژK%ϸaG&`:阡pȭgw10c>,w)hHiPގ`WL*ҏF@`LqL 5J6ARg0MrL`s. M&[Ԟ7\W^l)^C;0s*O#qx(k)a~ׇaۉZzۍFEoX-!;v`R*9X6ӝet> E:xqCCS DvdT^x0^*>SRL\5.lZEЪ &=uJ̞kx>Ԁ|OTcLè[>Ua3=X6LGbxlZSGj8w?Ooph^;^P2Bi c|/,zm'/KXd;Nc^LcԘS"uժN>-\f ^s4ubk8--c9İ$:7u ~I0Ďɽzk`0_W:uQLkPH~>;?6ri 0XÂ2",s*\ ϶eb2[E>:W};|fQS(ml:6z{$ hVU:RI11ѥXx#=w?&LzJc1pMAD/&Ʋ)&^&WqܱDbV{xX2TEk JScq[A,g򒥳۰k[*~C5ʽ@ 1M1zdZ=Dm[j"Z b:N!R<6#zOcٳ[Wq0(7ާZi`L #DvYn =t6Fw :f\~bu%=Σ~)zCP~uqdFyA7YWlقHj'J3<1Hjzqj:4ϜvV`(xnv 94_#CvcuBc5u<߶ySpnf_"iڟFf uJ3PccGOձ>4lf skQ@Wƚ.ͺOBkP!ly.}&/2Qym['8 ag+Ts(S:j@xLBPֻT1;A1"@`NFY;Ӛ*/~#ں/ ]b <{bLD9җl]pOA\kn4sn P\qm6]!'_l'*wv ?&Y42}kRst vQ$ ( |/F_Z6d hYih;}]<݄(.qFŝkih6z|lK*ALZ/P`T Z>B/NBtGA%tТ> VYHiED +?)#!\?,%#v9bq))~2/Zj E0.YO0`):;ݜ5g jWA8Da&>fh'X3]ƘlJ ZO}勿mI+bάYןAbHZ U mh+F&gҥ6~재i(Qs[FӾB|Ǣ\B2<$ǝSs<14^$**} ">۫lW?u']Zb+|n:C{_M&֪ﻩQ-2zק16'ćcꢵI U;qi8~gNbtLp\?Vсtc(K7I[zŋR>Q )ϸ<)0$o ̷\8= M:jqm "mkTx-iKgWWEG;D0O_!uY#iGOe%hS8ф m0{Z຺ ec>uy6p_:<5LTq;z=ַ uoxޫK$?TKѱ ym*wi6)v4-O#}X19\(rvuⰭoR(p<,XZtRf+UoIHe;}O4yT 2c{C9_cGQNOA91&e~(;w5 ,T=3xqsҿ}>+&q̄=F C`,5&" >,)̈fLܘ~212!=2 Ȅ)2d@f\[d@"2Ss  fxYt*.QN47E !G'+1r3p*iQy)߉Vxl vr76WnbByk7,ֵbr*ɏD/[&X=eNս$%׏k8ː`0K02a-Ѭ#0MH2PΊeyh\FYhju> (|+H9i~1=Q\?DVmP0RGOYQV16ErcL?[FyX٬gy2[_[6:1p;}K1犨}5  n1boQ]SX.sžgtM;X 2C1tfhH,O0sXt#Z;>'Q]=!6D}8J6s/F.vD6id0tI׽.5e3c6<ɀ`@~7V#SW>,£0=gѮqfU$_2d{xyT=V 9vB%f8OɺEzZLO~ 뤅8cW $aM6^yK;UM:jQQ4dI0OddÝ̶ 0jB`nuƀ#`D5 [}lNI{CNLbO: Ȋ۩$fOmX>J#.5+m}( A?Nqۄ0 jtMbxNg uiݒJS lh6!P׽7 ?1}*pԑ(Fnޘka*rZl2\ CJ%XFr5 9`LRe 4h*{5h2ϜTN45BHlCl tzFCu_0raz,r#W2/ˢ`-N "M1p8`tI<'Nx:(]xU~b35rh騾ʗh"E>!˄^ uP"LҞ|{%ۚq}Y<:XhP [6y Jn|nsbVv,Ut=F ~ة{[8$ @W(W[R`g0A<>:vV# ff͜7!n)`}2Ŏ6Ɓs5QL{0Z%\W]y)?;,tbWW93"%]9jYNWM$2߻M5?sJNn֬tdB[_35=n=ԞoĝnCҽ#}B*:OP{%y3=M  DpQ4UnZPl;c› ro{Z*+ÐJşPLjឨʜ5Hy15P3:HCvqq>R.WQ9їj6V1Z6{:ؠT! | W&ۘr{?;WX°PzuHS-!XLTP6uwTU2AGؘ]PC4U{$q;Ir[{u Cɒڰ<萯z Er?3^ފ.췶dF'h 8MXrYR1G;F\k6|޽~>UF+tg" e w1[ຘZ3 Ш5% / y`5aό{((TzYDU`;S a\Nⴱ񉜩 rO&u?ua!8jUWY:6-ތ: -lKrCteˍPV$"` ?4]Jݞ}Z?&8r[0`VV,fi[Pcy(J<ЈH!,~_ S$maX⺮R/:{|9QbgLk#/aYf0sa ݭTs&BeaZ̺6* !XSNsYa (AO'FcCQPzыqi*6=Qn)`B;)C](c\5/ * M>X+ۻcEwA>I啝`,>A|Sgm_] Qwx4T lأPQb* es3!0 .^say4~mdΞMQEm>Uy?uwΓ=gmu\2[Xq^̅"ˡq6FB,!b񖨪VZu#l\o8L4p꫺oU>9MіTֺ,Qٲ?]ts=ߪ~;1Rf}֌kߐ}ku~Yik:\ONp?JX cAf]Dd}V=f8f7CɘSQ5@GR14>7T3F`dÕQLSg ,(J l?]B8l8V搧#2?Gp2ny A ͶèFJ+jLO109ɊNWA; bd^r\lF0J92fW:y׼is *\C@N~x}n&=(5M*^sghC>,0krAn~d|!VڨG#7 M̛F1N-w\˰3Q2^`|޴rHoyVLZ})F[Qe]`3eB;ɔ$Zh{%L+o]K:"Ҙڻʑ=1.i~A^f$Jm'#0|ٴ GhT)~RQ.=Cu -:+Z* Z5R 'x#5ƬfyF}V@ǠM\|޿qoqB'W\ٱm1PY*>ZDy|MFΨ']?(")Ei,W| Ts {cҳiqBNOTx`|N4>e^V0Ȁ߳]2dc} 4S-=I\C6EaU&.P'}W4}P dswh}+T>yG\Pv1Sh^r_vCJ} mtܩ;vAq ԧKϥW\:͒& U+tdG|B- S"3r&c cWEj*/ۮ~U~,<4{L|tkfe]ީ ~qoNZAyIOiHė_kkҸ6kZuCZ?D;caTړ^>Q+؁}oA>+rJ^PX -vNQnѸ*'!`|yn{jGhg{**zo_;Oj!FeޡvҰ٨:[a|0)[Y+u2A2_`Igcy~#H*[۝Ƿ;c׺BHxP?(cWs6=sJX#Cpy̔9Ј= 'rسcAmWfcМ8J(z_v*dnkӜV}:[~fx={r={,G(# 壂^Ȣٜ4pm e:-;N -kmK3d{_G0Ԃf(?AfRV(/ }[8np ld.ck {1?(wq}偲: ;ϝS>I$2%iSW<'RG,-L#')yҗR=U=j_<{7&ҟݓ脮<{=ߚ@ M ^gQcҨg:׶;'F`Fq ٥ )٥ZӍZj\U{Ei+/p1˔ ġP&9UKgd*ݒ 0'}*qFR,C`v)TBR0~v?OϦaS-tD3X_/dX?IsI8*&͊ p5&1?g Yހڠ FpMbxe!p7K81B9 IR -Skbئi順ūJcY;5n?bqpA]2S8<o^Zpblw_eⅡ h%@\^2)7~Zq~p'c_SbVZ:ܕT2#07]ꝎAq(#q42*q7]k:K,=Wk_MylfYf;^΋AC:nEѸ+qAfs Ϝ!kXd\n&LQzZ2#֘PnH+g0/7?j?GdU~n0)ߝw~tW2BcPF #{"c(p8,ΑrP7gkb)x% A Ďp]Uz&Z.Rx7g Ny׀aI1?p3` i$+B7;uclqTnfҀʅ!/FA|&Z3q\o0o] i+VUu`Cj8. X`OшTMmC&O×@o~6'gN=ngHx~j㐴f!d>q=A`OL4$1?"[ 6=z 6O5BHOI)'nϣ~?9h~62 ARSf>V{_Vm,U*/YC`5LpA1Eeρ o IyL AwkiIR(Q5 *uVU+tn33Ko+Kv37qCߝS;FDԼ뜿OT:$T2@\9.ue$|gKr̸?gL+%(*g6|‚ *SSo:)bOڶbA#V qܯUNf:v رtuJ %pe?}Y%_?nݏ1]j?!mW_d_a|='&Gud!aףvƨ%v<%=bL=j$aK ahx*|㴼m^Jy_\KE{rcVN _)pZkӫ&\"qYJRꊈ)dY 3@z P*BwNn|؟VJǹwYFѐ1f@f=` ޡ3fߗ_L|A9~f9B$DP1tQǠI%"p٠y6.+pN#])`檍9J,A\מ[J Km.w;XUYd?G{ԃ𥖧|Xq1JD{+^H͢*zkaľ5Jܖ(h>`R/2f7=nI.}8ãh$\I,;%WcFngolJI'=f]QP?u9W $86-H*^M"ȶLŪ ס?/?yE5U}3Q/;6rp o UY<'@էpP:ߡ0K#@i=щZt;pz@"jQAb3vDdȽàz`aPEP@Q+qjE&`ʽ YYTJ{8aŒ;33ϋnzV3ll|B~~p\)Mhu͘N MPߍ 9,b;nHN}!`.TW3=8]>"g'_v)r/Xi xzFP"?!ng]>Ҫjq%yyn|"H P5a韞NdPp"޽gt ]HZAKA; ]["-=џW+@Wv%xֱ NDGBx׌(=S{@/1]SwTLaLQߘ`Ut{ ?ETҫhh?R@[3a>ƅ95{gZG1|=z'ƺ1P]Uq1fo=če"|@#CJ_iu)}nfEQ=Ǫ(URgy_˥hgHeJfRDOVDӗ_$^ #8\&نD(8+`DF6-+MՇ791?F5[?O9t@|KȊ썩l ASd!5{-x9oV+Iv3`*yRf c;Q#ABAXUGS<`_!zMcyE6 JA:w EآV龁 D"^yX=9~Ir"]Ni[ `@ CWLPr>dZ X `m VT%"u g8d] |L.iS" ̈[c ]s"B?9F3 &[*f@h w;P2 A0D[RY8x_B!W .Ls"#L/0Vc`C'lLS ,fQ>~V0Bd[ \p [N̈0_2BȈ 9v̈ x̻F@eL`,/B"L0 8ØNMB`~9\"{ Pd+6"+眨]d9%v)\} Uk$svR A=H>雂c48rrUOÍrO.8BȄ@J, J_ZXp@꩗Az|'HN$-XkS_DE.xQFEƀJPC5DB:!HGRvWǺW ^A?8Gҥ.x_LkIz_ӁB*N5W;'؁ Sa聪 467DO KskubT(sS@A#o3 !EhB $Xzo#1 Ah%~ N)9w&)^v u0B@ 'zSqQMܺt}N)'O< )}+'Hg"@ Xc* 4㘽 e"*ё/?Xd;tx}=0e@`_K6WqM퍝sQyLwŦQs{O03"\3=ӵ?`&CRǦۀhbsDJY sKM݇c;k{ͣQUy>R3w a-TAtC Wu0w+i _9,aƒKc1,Gй,U S`貮J@.@H4Opgur%1#MlY{^|Tiq|bk'"1W"#VHQxSM9r?wWY.fM_- x'%[߶%Jwv MU؄}B=9}ݒ*^ܓPPJF'ceMm8ip[3kW˃'`ݠ}dDӢcESVED rU"ql]0SR rhgl"uiOOq x#XA!RH(fx k'`?]A zRYwEmનhA[V 4`IhvceZFv=02 * 6ל0pB#'M9fBH2i.BI|xC@.y}<#. KBU !ӎmr9H*@ H+yA]C}i>pC7۬od}1 zwJz^.SHЧǛCzII^rHEX=NXto7Ĥ{jBmɈ-8K[xs|jO98!G!l6C#0p:€:6ipY8YwbD 3ڰh7)YY-LoQIVƳܶR/aT,ҵ-]+{26(BoEpvEܩĔd0@R<32$WEK%~jlS m ј5x\¿ޓ՝m?Ut7G*9O٢W W3S2\m@E|0:=x^W?^s{=YMJLe*uw4v˘ĮۧbAź Uܗ F]OKiD{H %|b؂ s쾀>Hgz|x@I&=GѬ4 @8~|9L; 0saF MbޢݎV}_>BA* ۩:wE>0EX.]1E`e6KL,&DtMuT8XCX*HnK=}뿰~/`s54 r?+o ;AM~ nxw j@MlTMu0~7-M>Tqh\('ן0$cݰ _zdvsi-zᎷ@ }<ݭI.m :YY.-i%yIÂJm[}_iO_߾55JBfcs`1uT'Mrə%e׏}ϻ#C6BmjݰJށL b crei"p[ED~W)2۾4(Cs_ fYni͏d^Yt|:f ܤ・ʟ7 <K rrЄ*Mb5}DnY5@@[#uWJ"w`,]ulhqD.UyD?} ?!`ρ#>E6h5{*MA[bev\d5g9h!TGZ\UD@k^x9d 5w#ǭG+'8dF!b:S@^089M8PÚ"F`0@ OQbBЫ*?\fu ӈYe|1\uĥ9=R3#^Nur_um6Y.)RĕD(|}o.+gzH P$z9trb1>, CrViK75! 5wC'Ӛ(dёZT2[]`y{}N0à{df|!zHp$B yGcb;q`$w?cP6g_- ˞'̗h 7nARK )VJBsB>E1%p8^ki\^l?T/*h_0u9;8Ah@|[tm52_.p @КV^1*$G6-dI.zA75a#p njs_}w3b3(ڻgVY$X(>g׮hrN^sWߝfPunrdCBѹkۇJ`5< T f$Kk?,*Aėٮ%PTxd(R]8N4ظaul\}'#qѐ$$#Xg1Usp]3H{b_a]26I\Xr=[?a&Ϥw'MP>f1UC_ >tOj!bwUypA?0seJvwǏw%le0ti68f8ȯw͠#ct-#y/vdGc||ɻo/M4)8]B~- iӕ 9#D\3+ f-F)}X9ޖIz+Q-jwlRwJ mS:μp ]`T^22Mr@s}H@ ^Ik}9~~^[Ys2@_+]/u>Û2AA22p>8GY(MԔ!mp} |v p ?t6x< W6o'/o '*(!"Lyu@^o'l!+.Yr_ ~!s"sҿTp(x!c%M 7:]E+64xAUM_ ם4NJE8M04}+ug8|敲5V|\݋w Kڻsa} 8C:eI)9bNWGoƸ7$FSswbwqPpw^q= }F_( 茆TN#gõqv;R˺y.WAUڬ?Ç~Py@QdA]zxNc,vߙ L]Z&S+ދzP3z V(-gsA`. g2ZrǝX<] yi|0h͍f8q4 ![BHv> M޳~'-ar'ư[V'([Gsk G o9a&βC?+@ĘL뤌ٻ TUřSea $ 0$c<9}*@Wk F$'W{-VjAdLa߹_)}U[YX7~7],T $S%@cVds ]A\‡+Sx_{#ׅ$J(ϯ4F4Bؚ[@AU]zMt }=C(.--d :PCiց*] =8v0rc:D鴗A"?4 ŅH.ee~9ҾSߊ[~Qcõ]ڕ~EG]xkeS?Ca!a0|,!PH04؊m #_ NȲp},Bsf6No,JWKXM )UyݾS:!+.@K|v2@l~j˞_pKߛo!-I`Yd_Tp88(@R'!l6<:_@!hjbD|M0,0U;C9a8d@} ƾsvPe{qx/$RF9ɑ7 iG!W3:<É)[ϝ.qUITذvoEW<{aY &uY&NU\Z ڗ'&: Á )@_I8'N-WqWgE, 3|~4~"ڋ OH"8e!"iM٠߮TВ:ոgeb[riAa (ޙSrusHD`qb&>ڏLt7:{uv2%~B;Y, zwwie6@gC1h.Rcf-9|`:г%GA^Jws""eAo?2ԈfX°B W )=<#|M:3+(j &+ld1߻ !fE@Ho$~ _dp,8e8?iL-Ǥmq)bg S 9ݼ :mhGO\S|-ΞÆ-O˽CŠN 1SJ||^۩l$. q.+ş>4w;R[ v[z~B0"owxv!3bF hjʠsFl]h &hΦhk`i7E.`A%GOjr53V+߸]h ?+eӀ(tnQfmĄ=ŏ#W6?jF`_ob#aPDŽXʤZ*5dyDiw+&)4z?x0饲"4 H^.ϕW˾T7O]< ަl za 3q 4nD*%iԣO"Q͊|LhE9&,}a0/w āw @=O(=g?L31@[$!bw49쩂Z7V*E~x$ oK8Q5;IQbެ}.׍w=n ]D;`- rXPbR\FM"]VVn<ļ§?UQcK;S伬1yQ$Yu͛d& !x$_jIZj11Ҽ@\%yơ=3PC(|ChЋ ]$ qo#ƒ37[ُ"VmJ 4L! RG,7}< J",*#є};j6W4,O7bšDR]Mqoڌe Ei#ҵLDς cuf&cB1C;fMo%>)}{mlɔ@>r1en9̫``iNb(#"+xL A?QnP &e0^0?֝GބCd7 AU0@V̀ 8& G=z2*Ơʪc,`YOF aLPLO"MDh4b`)Y hNe0EX00(3!C=Impj )镔;OO`OL9s0'30/Z =ߚ@k,22S@5ΏEy2.QFDZ2L` e[@ E)o<=3|ݦoލ"ʨA fIA =/6 0;OTz}q87 O i#.Nt[JrL2`'TSKqGi Œ?甁\W[N'q2$6I5a^(}T5c;B|/ZBtCg @_p^sqhx X|RQTy ԍq]A01Q$UzYtɒBw{D`x0bN*qwAqAvvAP#F;X}ĵt#!Tw:;S"28H8&FWɽ=i`W:P7ooiy0I R ޙ}Ͼ6'QeG" Yi6baBu"ڑI`6,/׹u?ߓ\r$.B}g[Iap,!^;P״论G. }rZ} c\~C'xʁ f*0J k%dg-fG02O xO>CclH4ޙ bש ,+lgzSp#,_"߽}d"Uc@#[X7+7AY{p 'xwt\~~ۼ5t&H ko z6OYeS.O<1ʼn4B_ͣ)1@E]Ywp>a[-% g*b_0<0I0Ɓ,0ӗ=jN~M%p)jl&비k;']鈜j'r(nwX8#;X}G]ܐ~r[٬~CLi p9;_AəA%?͑ahf7*Fo9G0Q~>wz^p+p9r~$cknP_x yCH`2eѠIәCMs!KрtW/jցb¨z8t089̹3SƩ3\--ԑ4d^ؔb i4q 4~ M׏hg5~=f67QGB5Oĭ#{ݩQ#9$C䇤 C+~v;!.k 3+i Yl(PS(~Lol?ÊL2ӽL)el 'C9~us6,ת@pjP*57?PU %ynW:>Aˆ*.jb-B0e@{~xYWQ>Uߍ3[ / >bB{&MJ :ӍaY@I޽" 3Wݘ{_<]uǡWC30ͨvu6/  p _%XV`T%ugȒg5+:E-{_3F*~twĽw1ͼ4zy'GiP㚐œ{D:DplLbۮBD}fl*Lz:`vTtvQo rR nmEno[N&_xShq'Wk}>7N(0'F DHwvmne,B查BĮlHm : dP lDHCs[=퇯1~*Mֱ\^]u@Ps2kW($gef@aJ71@0ɼ?՚OIkrL'$Έ[k &7J8g] ҃v_e1!NJmGa:"m .KwS(%B5?OƓ\9'n_\^Ӷ$@eCx>69z?x^>t2+͡sƪ|nG+ ! ,{~9;*?{èNV!uC!$zFz92*5%ge@ +{մ4xrm )t=ڼH4&τ[Ryf[j=iyμ%[G&˭ :SD&.~]p`1BEXӣEjc>l+gj7 -j(ZA072huG~<"˄WCl:zs)ʄAĴ<׊^+WgaqjDٿ_ش3$ƅmA9'ƚ5z:02rPǻ0/Z1f ;]]aN6 OS6XDSY"]Iu61i>g<,eTRSdgc6-!PY0;*wkaLƢv6Q'j@ziriĹPwxZxA,'C"d(@@d|KD?51Ȯ˅~v,P-U^RK ?P\XW$Fmb&~8ou4 7ZcC;UK8|Lt(]ΆJFawuTf/];RR` k R س³}$!6F 7۴FP!7Lrgj:PPد9:w{W:vOcЀVH|Tj:$&>ٷb/2\χA1AH0qdCkj!@{:PΡz+UMKo){0=@fa#!zV3ko4ARF5K[(ʄg+R_@4u-OR.IdlʠybZX.gTUGpςNԓ7\&rY$l<+&UDp\ff0u63]"Y)6ISqF#;GyY1Uf[$ 9P[6)G;ƠhQYJ=uJ}`5y 'x Pݷ\;Rӱ藆'շ^w^vO|WȥuƉCq`Oߵt#Eל҆&\Î֥$.w Q׀>V>jp4<[N ]\ه{'Ey{`yk2~u.v:= J*0n*)=>qM;6/E SC(OK*}~ƖʹaZ7 *7M\5I _{|h M&DH7sy28ɑ-x;dɡb/Xܻ'z- 'd6l._aTcȢf*=1w/F:++I( 95Q6??F%bl7W]˩H2' Z >Z:JJ,h8a!X_u=g@FDü1mZCfQ&faoШ4ǵdQL8zhȐ6!Cr/礉&ͽ!Zw_8ٖ UfE!#1}~T-bdꅄƃIdy:2Ub]A%W\aa!2-:2,q6TeMȤᎁY"Q[ϟ7]F Le֔FIewѽAz bt]\ 9tIS%/eZ,F +/45M)t]zHMP3 u Z=ß(m7QvϤu}ѕf-}U?hyQ=1#R(" SAPN+sr$ɧ9Q~l)YbJ:f4a`YƉECy@A&šCT'%4Mkvq23_*xK46zpXpNr}>vP< w.lI>'U^S*'tT*%rV FǎZW@l=MUB|qƔ^vhT"JJ[Q2ޡy ͨ'^ )y%өxɢV~"]N LQb=͕žڑlwgvc &( \]gT/kᆦCs(ʃ)Yo[Ua)j i)vc*DY9\R<8_60KcRbkUڪO(?x<>+12!Q|sjޛ}ӜĘ+e p`8eO x{)IJ>p pb1\TfPzamj& +/Ju'<@:l]MU=Ǖ<)BB*T8fF-;aK<.Y1gٚP d}Y fȀ2 xuY8|vE_CBSה K8Z3*pZf'[11d 3|x:*(M߃u/'GMUY#MHbU0Т8H Ƌdjgl~JO+&cCa6D迩j~rë}~qx,|<ml+)LX`4NT\>vSK:zj; \g- R=6'nMb5*x4C_I^*ᶛs Fwp}Q71o*~ se 6QMO9f2t4X<,}Må,8I@CS8/pV7>FEaRYr @fֈv6RF^:}Ƞgy) x^oPalfwcmY $lx),|ܴ.WrDtBzԇ!«N-|,]szuEycvNӃn?,I`Pp3{6JU^K`e6M*NCTm;w(k~=3/htn@8괯Vȣ2hفuk8mtΤكfoLJZjRe52ۍ_1w!WHG^MQSka\@W/I-eaŽA6uAvLC*D"oWQ{xfйiTekAܥ-r "`mF?-j̙a%:YC(~ٴNѲ55(Aw聓WuGBc} ٖU?{}Ko-!3dΤ{I%J%9}bp~gL6`=~_4ąbxW0aWwANOT 3/Y~*2r-b} 9pKĴ8ʝV$b@[[5V' >loGW'IТj2pW"*Dvcx`l+⪅VÄu4tx-㦆,#UvKf1DdDV}eL~<'h 5$ijy3`M%x^"uv s nCʷ ޵^RۑCV*5[ \yz٫dz4rȕXʧj@Wӹrܧr‘9c JA Zdsis _؏ #uck0J8;k"{uBv]xCүR^ oA~]%+u'eWӅD`Q=z> iE=+kK_0l`BlB\/0 fzf}yno!4A %Џۚ ##D'Fu(o^0%tI^W!YԌS,'2*|&ʊ"FS0[OSi ! e0_e"z _OIbd[50Q*BSeئmQSs1x0BDɹO$`@o xd ldHʒ`` ^[ԧ {-wt,(P/kPwͽ4Q`tm 碵^XMv lr< n㊟Pf_s.6<ӄȢ#\|0ϒ [] zfl`}ɰ7 \*Wzjpp"=IeBdNk* d.2U ˵P,H H'lws@y>xUhX񅐓ht&^<1 bg jٝ`nH|v2 Д85Sȴ4O0aQTb_ 1.eWx3 fmǭ*ْ836JpN7 `b<Ҷ8Hjko 'O w;I8on@8\ *n]̦1wZ{t:E _gk$e=Vy3-yn !2_afKtw\Yhti/&8`4xN}CvtOw @.{gPԞur8m´0Z8UaL$кL\4Ϲ`=/s)|_`̿X`bg='IZGb 9yM)y@,/(tV%ݿ4͹4 4scy.-d׵8v}"#]eu!t84(I'/C6}GY~E4Ϊ挗ϫ_z_#r(cA&خUvt"_3şjDV8@3Hd8`uִg_\@ 7f6U;]n-BJ `n4\De6+f:쩐/2@gvpȢZA,EjOW"R?"k VEᢾ_T@ЁEmCb6JAގ-@F}@ n*Н$O [H)4'ii nv.u0Xgqـ] >q7zx!YQvovQ-[(Ȟse{71 ~IagqskExc~Ү }lQP, -^b臾ulXRB*tmSWT/E} 5]Fw)w3q^,e}bUGC<ڦ*ϜS^^{51iG(EA̍,KGmNN(lRe/^?SƜ}B h6mxOd y}AC1:>l̾(6|휦咦Bֺv4n 2)55ob!fzb۰׶}u^]F㫝Q%1Val;7LV9f@i:;=+` ՂEa[=/;ّdRrxK=^~ eHr@om֓bR@x___k 60]Q!ɔq|ylQ= b0Yr,Wsɏ ;~c0PD_kt:G44x@I|Z;yf+3Y9SrzFiE&%8䶶g YҖ@X{a\ nƆ왁>[0p`4K=Ց]-q]59G]~PڷSu*]3cߴZKu-b?(tǝ-l8GbS-?!>Z!~&cx{289jh{ H[ yBpZzHt h^qbT](G琹 -aXt h=1%YA7o[P> fWRYa]GQ̼rpnF~9K=:]2rr K TK)|y \J_Uq'K`Kzۭ8ܾjT8'Lz/`8g^*V/$IOin ~7uX rdadDf𭏐vfʩڀ὚+MuiMl If-u*I~P*ՌN44Oj%漢1=IT+!@h]`ݝ7nb/Y|^9Dx>Feá#\6ԙ/OۅnۺEyI_6&^=ov9&c(0Rq0ھChOta>zk4"xB4u\1< iol vnh)/ >fcMFДAŚsz>۴ 8-Fva)m.֨~J4B) 1Q8s>K & u-d܎$䛸ſ&*G+!v"j!8+ (NS:z5lHDLb6!INgȌ"||C#^چ;ĥɄ01+sgWn YQ8ɭBդ797X47cDGS@ڝT rjuv={ ۦK\ &i&iۇjEW{_;}p-œ$h¯[xChϒմ{r@#.@?=iAE+c>+\ ZUq2Qd )k^񬾄CKTJ:NG?(#oߌHAKFD} y@{edJ,Oh'aH(_nfɰA+1KV'nib5tIofa{׹;|ԩ@`Bb 8kr)wIs(dߠ՛;h-}WP4R:}\O v26ӂ9gֽP[dM!ʭ$(m{[u %^7@s@Y~9>޸29yG<A hp07x>EZP݌`*NuhB;fS8̇_;)3f`A|]v<؃KjыLs"˜[n<ӏ{%,2Fan+O^Qw!dfNǡ:.#a- ]v%lPȈ[x}'' eZ)?]VABC4 ckė'kE}APd`>h+μX%BaǪ<fgFc}ST$W@? ː!rԱ#x6 F%RعȞ_, .&^}XSX '5#r!hϳğV/&FN|\$.?bَ7{g]0qDtʶMПCn!WO?n DyL.!#mzM [41 An~<Gx\cfį]c;I e#ݢ|<9vķґàj}"١9pa>tʥG-*$<9Ӯt32y u\d|}`^~|z /|vFV(r7xyW={+`ڿ7tP KM\2CY!JM0E&2AYjӜ0a[2eZ IA-!7&+>sKQAyD;ȅҺ'Lxe22z0S23ݘQO2)S[DZP.gXȷ7lc `Pt0(PǸ|Ƅ QLT>]3E0d& hH& jܟYH=ZuiIvJЙ~jw+,5-qƵ`(9%u^7dP8%`d2`HbjPtk=@0&/K,/^P6SkӌR!XZ?`0i5L—1#`U {ފp\?gζ(~pү7IR{[yѪ9=orj08{?P˭LL)6:pk*P M9͢ఝv[\/sNΟk|(yL{ZЉ6;4B~F/Qu^BS6(5hIWsl@tK5~}zl4hI6фB&{E5@0ͰmL*lJv']1`_3 II WMwkljvSh6..tK7CP5"6*w;%XM߉3b;z],Dy "E+Z@*$}n)LH ` 4щIe]}eNdL;'\$'v QFeQǁ~r?O2CcDz `|Fגn'l"0N';sE;-߶4Ize6B:8iڦ"{@p2g P:0L:Eu*/wDd$v_tD\7P[L<%ؗ&:<#g{꠻Kqۏ;4SQ ytb0(J8WEb;: ֟ Fn)6ƂT܏O*[(-k3q_"?_ ؅an,d.ZCismȘo'Ȅ s=Wkm ,;_\_.1G` bX 9Uo_HYqVG*]0k~o(ROa$.SU ߯3}VGh'3ff87?X>}$D !>ݾ: A #QRI៌MZ% `Y!Ps;yQk}ީpEgbN g9k1xs8iػn !Й '/F~Zæ};v)#9A`A|u}`M3nGVD/bJxh7q)`j@5`^lWb2輗5B}˯7[1-~36u37a<[t,N>!6=:L$ۍӽ7-q&mY DŽk˛z+QYQZ9I)ZOQCb&/sh=B *aDP_$Ӻ,vKk2-#:CLxN{6&b#JgO| [.2 8X}[k[JºW *mbp=|,A553>ӅMKO^No?QW+gltI_ݚ|@) ShU{+a&;˼鴭N2hq#"hv;b9#@|H;6}TG<1^I/&1²bB sgIBTAXRbXPĈ) '$çh n5Y@iNY@#~R! LvW '{?n }'ڿ>/N )h E2"6Gm]ĠHE[־B x mK3K$5(&'|A)n` #MӆC,HҺ>ݝ}6A5뮣'Iy}үy #ei1{"$~CZ.$ <9Z f;}޿E7h} Օ>q7":1q5;(SuP^pQE۶ې#IUK:>a %E -Ux"C5/kupcF{3NJ ǚ26~^@?Gi6"i,^OFh)PZ{w}mL@ċsU3>'C@\\0oV5FU2uL?I^2# k5 WFC :y=J}hȀ \ UvJGC^{rƸzPlj*BsCcW Xf{& Z+a<\q>< ^?fM5ہ_cΐ#: A"X6HG&Zuh%e!~mc7tC7P| -Dx^GWED;Ϫ$EJ?_;8Էo2NG7xq&ɌKT]"Wv1 405nLs{~gH# 3[0Yi) y*BZNolb"t``9u#C.I]whR \ǟCAUC gS(ݡ"ƛl^@:P8gH+Q#Lu Kc~:kHy`cԌ +,cs fH|p1Af z+C4vZO4d3 h}[%5$713՚`غB7!)V}3ɛ͜ ~ʄʟ/6Mb=Rѻ|2~u% KfZD\fV\îEB2_%lK|7d]qzkHݲfdCS $؁XTx *Kl SKiMm4ǐ`䈞$.6҉$r"K$Ƕr]r,#FR]+O\++- ĨLHϞ*u^e嘂 b uI IQ7FΤr$Ut([Y!Td7HyWZO\UOƹɀ4#-e =  f{fDš7Db*|v-S#K2aB"%8|9kWlȏCyDr =Ձ zGdyS]XU\}Y994e2s10 ^!'ث5E&rKI> mKߏ*X6̩G7a 7pFԺV^4˟RՅ\}9Zn]>h2B}Z4x$D62,OnkWRvi,:=` O52wkYo8 ёo}B| ΂_L?2bm*6%;nh/8?ֽGr.6S >z#9OH1k/- R)Ǫ?TsO̗ZVs-;9QIh  'j=u_SYJ ;E>{ d̟: a dQL]V 钭zZ+0e@g1q}K V5nD"nύW&"!:q`d$623wBFN#ENs^ K߹n:!vDYX2UUu9KK)*QH9j;rOBd}g1x ؼ6H1{?(N{NUwkt(k0M1.{hUR^ e{ Tt9&# !\\=&3Mo6җ.M|Zwau㮫 /H]|)ʄ6ZldZ‘b#+kDK5SWj%=@F=K5BG~n9p! ~BRnaz>վSc&Z9_\e3OɫaXyuEJ>`i"-&NqW#1ӄvs='m]:DUDݹC_Wu řɅU;򕥧`a u~qLi\"@f\jn0 2YE6,h2<ސS;:s&$͌樂M/X p"{"=+"boבw?[f3\'"D1C r4I ` ٬^R=)ΚBB0cux'&Bm+07O rVKL ,C/qͫͤUNF|LlkM㭂ϪY9[vl"7k|*6Q3od4EKטZF)@ɮHjK3~ TLn*G@!a?olzq` WA;Y50g"v pP =c.֞#FmW/1t{W_ h( omēOjJR&{+ [W_0c$*贷D@87U g 0<ƀ.lySt;5&z<*1Uɠv.SC47ά;}ËF $vm*Y/S1H!eTdjIs1?e}{$`Vǎ; !s4:3Cr]#bOAWU1 gUgK|,E|G+:/BHY*}Uj}xf?̽Ο b8vG)o=C꾣D)@-?=|\"N9"^pǻ%T#W.k nۄ{6 #>0"Ko)zt2dz 9ڻ>'6F貘mYn<]4ypyjů燠oy.++ ,([@ʴ^GaDz,ed0{?l&DcDɷvLhsIџ;^O?W=,Z2$W&qcWh J..MD1z_fC7P$smµ?XV{@L7[C9@",Xf<ďDf *a!&3{]paY]gduN!Jq [[0:dqJӑ.'Pl^-NRXAf ߍi&//:ѳWIktp6 k d9;2X%hTu0 N=1a ڇAlgH:jJ8uMLhɰ,L\ƃ#TGj|!KqyMlF8}RiSoO5z$*:r!yol&&'>Taeְ v!1m7fn]=되~*E?X*zԎb7+$Ob.A]ɼ|Yb^#P_sx I|^K0D|>9$ 8Agm..\?&I}Hs6haoĠճь^?ЕacUNi\,c5cl_L,bA67xs=$ %S#3OYzyrJ*8cn3+krJ_@( d$p *gA>}ɿ\ړzV&Z{p4nq <2|" xI=Q3Ss dF\.Y)9ѨK-0P,#zʎܧc(848sF;û]!!!9[bH>SW{ITk޾бB"mJ&ډYi ml]2$ڠTS`QgF&dUjv5ڟʙ5#fi~kwvlVsG㹼B#Q w {F U!&Y-871B6+VhD7bA140ޏNa`@{D_-XſV9*Eu!m6+h|!X8 D{!Es y`*fJRNǹ?+vy,ٷ?=:(l]I28*J?δ\+6.EZ= &l_D(_qew͡5U),?IL^^{&%+`L4pѲ+'<ɛcJ<&mԗE`NL3+ۑG{u7I؀Fuakrk:ug)7vF\˳2OvzLON ^Q\޶3\{;{)ZBk9v̼B k(5 {EqWos-aFWh z5;6(5!=)K3OR3f_5j!=OBׅ0t "7K,[9}eMw:_Γ:5|!n4Ԫtprt*녺6-^/-7YL;{-T,L&sRpͨݦeY Rx>(8]61Zr x3vq+TA:/Dأȗ)%W-'Fw vPp2z6?t g}Bd;cd3jTΝ,r/2CVɾ61F`jY_5t[VݤU,?#LQ;^S!?nC yM낺 pj鉀D.<ϗۜwRI,賱W*<f Vv> `!5|Yv-~#sͫ>)IwF z`zL RsqEfgt`MfCV̻?K*C9(B ϕ *dn [y.'B|;ei7UȢC9uJ=*=~.ECzeP)mu.z# x<qLKjK%`/a'O8݂7 u V>Np?|}HTʜ\E.yl|f>OabNQ+GLd6 i+C2v.CO4l,%>`'fQ`Yd\VbwU$tS ;c~[ipioGۻ(/ ~@?݌HVEAWZCqpekDp҈j"Ԙ65j]`ϡ:3ڦek{}[vb^~X/ZX q̩9wCf1BX?WU7'HgUg~>S E*C~\mBSaϒ"(P{fu& $bez'-^.OgFyx ^~@oo(a,.V oP&e{cv=鷤^ߢBԽ-:"X; ,6 nk[[VEҸ+l~Ou`] tff3ܢۻ̣c|]m}k< ! BrEd<7Wuv!Jbv iӏz))'&,5tn%R}@ P&J^"LjҀdZsP;~c])4OwN&`:I^-.A#_Gh{u[u'. Ov܅5W#O[3%}^V@z˷7§iNR˸aW%oX^ NП-VGQ(6MDAd 8L#_+ H4Gy~^+`٢7g4)bHهڶ.KeE7V4YfH@0k*0@&:))k5Dh \dT@"鵚lCy jN[7(b=iV2GW ԋ@C*u= aӁ,:Lk@R +dsN>ndyuqYℱuJg( E%)FM0J*t_4-)AiJ,V:a$OG}l^XmhH.( $/)-w)N>¿R&sq,fо!O8P?[z,fŪ/0 _X{jy#j&SghfFjVhzQO8#spUqh |k,xᙈ =+9083Z #ښ kkbwZ msURmغcgsve~*~_.l^p.zȅktXYp<^' e"Y*Lp-XpCLMP^IMAMj%a+%`{^^AaDa*'7u=] 8u% )q˝IXtmbҀ8@Ug ̦',%)Z(]uK{iQgrS| ɈJ !b`z K+B\䌄 {>_8@&']e"+[pWMhfef5A(5,$s!zuk7*!1eON ^wJ_C+"eD@|Ƿ0 Vϵ(|Y D<%QTIW,v㉀+ƤP?ǘ#MbE*F= WRCaCз|GT 47|+T̤.'Y[Ua_ 4}o7>#`X!ׄlT{JRJ0mo#v_ u[޻QZ*R^*oE8? N m]S[jgʘSiyXtopJSZV}:46Sfp*n7 ۍ-$w 3< \\7Ye`B+F "L   ! H`l~Y~cx'Zk:hG & Ի82o wo3FY"0C욌s"eyX\ULk7w;[\L4pױB|lOT/P?cscS},ȷs}g=(6:yB#06!b}fK KP :6VZ`DD[ l#k*$=O#=;}[S7_# J=hr6v8i, D*bv.ϳ) bp޲L%%Y3&Ui]F,(ٟٖ6U!h-fԖҙѐq,9 gHG Uge[n-oHV]+icM5;G0/o tF'prk;~__ !2}csQvƥ9#~B24&:kހxO:jms;"?H ˋVuӇB.| M0]IverI)fpotxvk'n"'|4!͆px''rZ)v5wDQC L?qb]I) =){6h'y:`bjt( 6iU޲Mf::aV^CDڼ٪D(l p@>Qg5F28ntchy=&aT1d Zx3&CiuG+-a)e#*ݟlE9R($_+#r2!iGqj"O*,fc{⥜G+{^~Z iqmKpb 'shi-Nc1kͨQVvdux{}[!@@@N0HLؓgb'n*-aEUv!JOP {!X`pɅ0w|stdiгұ@X[+)XgU+H)LKcp @;,^]`hvDU=F[#%%aJ1 {%05*tbCVɷ)P qW(%;3 l!L6 a\?=Tk "݄<6.CGѡcs@T '1,qgInuw8d 70:A8# ^{V'0S=g#)H:=81]mI\OGg1[Nl?o39}gd3MHAB` -;wzJ p2q5g9XppWiwxAKw 3r$oI?(tW)v MwW6Fڥ"NЃK|舾̑WG2Q?Sxk:)tz ;ęG[z#Bf@_fLC%ARߓ5 ZktO\USPE'?KI<[dK~+&>E.w/G]T_X2˄dqArhfEڜ% V->p±IP6a.T B!ijhKqO[ױF-ݘd|/ ?usLTaZi;_O.3=уV5 F'ȊXwq{ E c+36:1!pp{4_3ޔA jjaECFO>fG"ȎTcUv1"4..paՏTinK[Oj] xPzWȨ×cBU{x="@A Ctk'B6ھ&-?Eܱ2%N0#\81E&q!xch'&byex'C,g{`:}\O\ؙp}~!ρ| G. D%]u+`p^K7J:9ee;er"e?rCG1=;P 4'uP 7ۨBT>9[t#u0߲#ۅ!ۓ:hO+zG~^+ߒ<q߄ψLоBgҫ+1sV~J8N.#͒'Z``kh\~׾Ҏ 6rx8M{KyrSrWNLMzC1Sz?}-PkGPO=$53m31E1O/s^% 4O3,'Zk׆x N§bJ嗃hu(b L&G(VRa$L$3y2[I}ӾK +<=8Wk2DYZ[I_xrA߆*K%sQװєW/K31ί46pv}2jPqYI""q+ <"No+@p2>>f/*> ^s$[VK_NZ3LP?#~rmk0_LA?D} 礨zlDQ447ٸpwKEy!q^H"$d9q5fo@%vm ;R&vExiA¹ȸYm<-IdD6C81N8ެ2qh\ª ;? ||;t0/)Rԕ*Y%{KI;(wRƇ ^WL6rVambdab-Cs%7^hl5HAn,[!.f@0c[0fm18 o> -y;_4*Uo@u^ l~6vvCfVJs90KTI$M0Caxm4yjdXEN%q N,~ZS $qDBc,^Z]|.uLV{CKOs -⍝JF//0!jчWU" 9h탐^O] qG<˙|Y( HA]H|뒃zǖ YFn9TyW̾ mwcUA}ǕK9}k!>X.gZ] *p?'|^p`PX^\z͵103l|?r?R;r# ݹ-Bw9r# poyHZ|Vv CB~hS%<[thjն0} (h1Qib),vS?-:l0?Vk|0_ (B C`X-f EusLtFm@K/%qX.w猟m4vbNAٌu\UܣUŋ{ȤmcޒtL"S;x!5v;C26 FuT (.L!T\ nI7dFih ۸}#pĸLwȪ ;cÐ'55}COr[-R[R08? `څ 0:tU{ojIzc`;Ors X[/ $0O(2tp* jĩ^ 6p̹5"* _<)3lAQ9b^o_:Iumk57gT 0Jy-m vp"4OօshW4zć-|IZP^ OQ[ٲhŷi}şM Alo/ֿV.ŋa8ݳwr~oκ 2@vuC9p*8'/\ Φ ‚/b\' 0;K`HR^=kNpkƹ$vP'A҄A)|&eg3(K`.2Xg%^mPl,X,HAX<,S0 ֓ 1as$;1sqxޘT_Rvx>*62i3*Wğ_@\Łh|3sdӱ daMÔ1q}epq#XLø7OäYXB(M_M‹2y83{g 1b yxtW :s`uFIk7F:ܷ@(_r0 H4\2Fh˳cBlăs؝y䆇}1-8Hg|n៾bVKx3id$aX@+]'Gl>0}DwXд O? nZV}W-v/{]xՅy G3tQi:ùgؼ_< бwr6mBŴ -ǖ0סut1~dVȌaä(:%cbH= i";1CۧG:  XQZ_g+cZcLoN\flH58-"|4Fζ ^bjաİ>L0dzZf쒰 GTd曮k??t7x\gh_ĕn!ߍ37iL~ᣵzv¨#axj5zboylkBPྭ3 &#Mx"13$MAoٌQ'_5izЬ5P0#Ù7+?N7XBe |t0y%̽ .Ə7d˚L띋L: (g@& FJ, 6k jXlpȆhE% 0"1d 0ujƣS\wxBIH ў!@Dh숧n xyRQB8Y}Œ<vK!Ss&LO[Q8 _h-÷ClFzF<{t`L&<<'7'@dGΈfK@+KzsJϢCg3r_f([RZGmRق5Dl>@OP%<_JNAӅ "Fp) 2E]hC5ڠX WwGq͸\+@l FBޅAal!|P6ւȤ$ Jw~SVgTZUս?p@y3#CUpG`k!^KO*653ZakP:L̜wcՊ*!OϺ_XoV7bW8藅Fo/ݺ ɏ'v'mN/C> h65#tM.R. |BfyHPu7@%8zڐe_3fN 90NR-[i fb}e=cm$Ս84[7O\S?N*F]Uq;z YB);9Թi)V" *L1; Z֌i!MtҺK++X}Wa J֡hS$ 7Nń%">a u9,F_ck+;y| `M;҃ge?j[~`2S$6 ?N tI {g_=t_v 8\3]1MkoUHzA4Fx-cL%$ %$$ )p%0+{8j!J.#'-)68J2K0fh6 `zDQU[;ݷuڍ,_콴3{y sLwҵv^*xUƶ'pC~@+;6r`"bp Ke1gK2~&PGwUbDL>5`5IX ;oӓלRΟt|iޜhE?@gةlXnD61 Ks⨺^cdBuDtQ8% cAYN3y~!)˶ζx* v?ts |js@9`=B_NLSdl=k5@nWŠy;)"dz4+ wP2%1Ѻ䮹j8T=ux,;(`W94LP"@KLS3l~\%mvu+*O0ruR2֛23DQ}*6U>R@DWlLT 괜OCk3V(0d5U D9)v|˜l @+bQ*)fxv[7`M$ŏw#d ZW"D̈5VğdÐ gc2H)uHGl,6SwwQ/~@ڛ]wT@{[9>Ss`[jN7 7$ Oƛ)u^Va`vLavR6v| ;Vmi4Pn͆)1mG$`qwE:D]Nm 7+$wxۄd\?Kܥ&`1<MZ{W|U~)GvIU䦉D *ݚ@SP;~uqv,"ã B :(A/)^cah;᫏"ïs  8?O38V=A)Ā&J 埒Ī|ύqi0|܅<- qB55PQdtWCK+?RP?$+ \lЕaho@7 I"<‼4Q Ao28ra#$bv-D+a:j^\+w;[.Կt,R`Z",|J<(9 {`  <<:xD \a ވnC G$/#͌v8D;+T.L3ciD GsBF>܄xHtXeauwNMdHn_qKew@aٍ(q hj1Ћd+s_[wIɦh+dCE}ؑUZ!EQi>Ad<7Eᑎ!WdY^!;+fdYd ?mI):QҮ[t BZ\T~4rbp^.bWtߚ_P` هq92e<{fKMB!֜Y燊0(66MTvw~&߂EJ +5Gtȯ2m2v.?< l_HfGGWTٗhp(%G} dU̖ ~Ƞ:{2dMN2ȃĤ̘KAb/'`m!,\ $X.IkDm8NX)12*N{fb"ph60h fIMδӨbHpOhO5'$9?O'a0rf xXO^ @\?~O|"O>?ᴍ~efɚV6,@jϿkN,|]:FAnA:.I/`Q;>"un:ZM}/t,B.W;s'$˴4M ݬ.Jɯ4A:Ο:Jjk93kDY9FHǴ^Kvu/ J6[w+ijnf d񣹥's9PϺ["q8ڀ!޵9ڄX@N a-3/t40`UCfv@|Q温>{+5WH-M  a.ٛsuK`o7-/(3]+B48k B;gOaϔ3[ٝ*ܺZ ZS>s?pu<b4?fNZ| _v>*ߥr1R5uC Qa9`ju/ǚh# >Kq2ב)b857/S7ˬY0rDa; ̉xVn`,}N={kAlwū}&O-~H ]{Pz*[z0LkGLr,UTtj! ;@JtYe[4DYXrS2&PBd'Ŷ^[?PoUy6eICH ty9PZ{k%WI^ 1Wč bؒzfYÕxj (zAq.#|aXL)6[v5_7@I[qa΍)Z[ҺaI[.q?6’偺B;bd>qZ"\ˑڕdיP@ _J Km{b g,)g#2"Y0G|5v #Vи}P߆Hu',G\Cj7]OtEΒYʞı^o[~'Iݫ,mҵv[V:"{1}1!ćXȨGuzp(?ڌŒp "4 D Aԣ} 99l&6{懽7@4FWp-m)&x?)݄l-EQCҵ\R0ˎVYCXVeFR6͇SOh9"D*aPq\ SSFC Y$PF5v_\U@d6%SfX`5I|s-5,[af[N㿺]ic vNxkNqmUo$Fg$0 =_HcsPWF'A4;# {.d%ayy00;cܝ6/f>Z+Ij5',R!T;;mF ΢,w( !Dr[o^,=wpN$Z!ծZ;W ^z6-uQe5Z&,lZZ͏GC7=Lwq=f kd6A)ou kv/gX\=VarkUcu!al㚘^N7ް9mC_ [boqNcץjbLem~.W=n?WQgdiCQMS4ۣ7 '_q`ېR[n x\MVCqvݦ12K&/fEږF携`a0z1אM|F)vQUmff/B+Fs3ѸHOyz |ßÜゞi3Fa螉Jo! 9ie-#宓x HBڭ܅`^ ޅ61aEU|[zl#61?Rz<\1hw~[LQe9r`ۤA[!H7@ WRPo[,BBX)g nC/db^E͊AdqsLk\m4qyQ)/! ~d 9 m&i3BC]k2*mc!d/3`;َzWLxp7HC\^2^2VJ#UTM{/M(18=1DqG?pڠS %Z z:Epz>]J9v5.PCA1heA\I `}D/Ļ-AX_iqߌM;+PeI-g%ȐHlf/[/bt4'Ei{=~2<^HAj8=2Irv)A@䟺}K-*BZfh Y;ɔԾ9t%uuQ%vAޥWטg͇R3%c3*R ?mr0wDp>w(0\RZZ9Fj n\H2uȬ+sL?g`2^q_ ?#Y CrzC9%ԲSړ{W%F3~D)_ME5d^T QGԀ <.~ D+`㮴g` isgi PpypN3= :r][&ypsWnB>JqvH2ko$tf/Ekءn'Xi0gtsPb?EOܲHaBzSwmC$$K5S;ҫ.r|Q iz#o`zU.=0o+2͵n$p""n4Z R*2 UJ|U BCRfX H@PvF꼆Qe=(oEo<>qK筀RgbC”I󷰉#q>"8 )RK +¶YpbYms4e1) x{|,41k]~4nJ 3Ӥ$rɎ=KV^մĠ48ނi.:zqrjĄ"R2ѡQ~+.ǡίw9ܹ0_05̕$ץnc%w"G_zSǺߛ ǐ,z6QcmFva[@Zю~SB4M|K>+:0XlH .MpCK9_ڀrm%(W"9~*(-Ћ~͇j0Z|w<< 2Nv֘WŐUAe8 F `0{<)ɇ3AU#E}czȟ(tb5 6{a WbRbLC"aށ:ds';E$KʮQ_{R;J{9лb$'0ym^X>oȺm!_kOw`Æ_* uazL6'j?RQ]ib/:G[>C-&U; C2Ocҋ;l(Z[ EBB"sաO&*gQ<--Y^纊lq5Dqz l<1pm1T.D(w\|ݦL};}Ts<ؘtB ¶_|ڴD7eС(%y{'ԙױi%b~ <ت]=:9@;~"H @CS]fj8Hc#kT1xDhV)" ڽԑM)^Lۄm/-[A9/E!n|.iݮQ=Guå@@@A.-=<l$+jGFεF#I o2X4+=T;#3:Y=X 325=C aV)lznǞrE* ۤXPl~÷&y\y׿ZD>̓|_, L%c< cbr!XPlut8+"HB#`uma"0$?De24G"gՉ %)^ji[-Rfc 2Qc^ He,Sqf=jU)"և "S,ǭQ?:;Lze ?p_#90Xq 戤F)f fg swueC;@P]1  niV:Ԙȑ.V ̪'ݍSZ/m͈]~"َ75d1WW ݚF~FṆL4Lϒfud@ș38 ƗvK㖇* ^p} KϣRIFX{&ZN ,Cօʦ^rD?Kq@G2A;ە!. " R-Y5B<"+ 1&y h{^ `g2{,/+R7M (xƂ):{ Z,EjKE?<hFuﰢI.b }l9ǘ-r'8؆ر /B"Irsx}c0ÿ0B̊'OMmEH@@~,^~[P$+w%[#@Rӯ2?$ Zm'bJ,f.J)ZzB>+j3.c&Lcլ * F3YC|B.yzs!*Y- M޵-Flq D=\5|G"j 3\}9\O^e'&e! #bd$.9\H厍0 gVX}97qB#aͥ(y'ӷU|p;pϒdzID4w0%~ͦ(f8別qgpN?PR:8 `yF8W53i5$q^~#OoP3l6O{Wl9Ac;S`EF`"/KLOarP%J[7UODFWVK^;t/0@\iL7rצ0;FgbO:&}!Mh|sߑ O)>Fp\yWw0q@}SwHģޣRfUǍdӎ,\Ŗ=)<1t~grm>*7akv;cyC^%eHq?Q. %9yd+0_e[& *X<9]Ǐ-פV:V2)u@pWfܜ&{ ˜2 gp'#~ɟ;r%{j%Z}/)㈥T& sǥ2ʶ ^;ic-W^8VmSYk9αo`:\bw**5GOOv$T%eI(/>,Ջz ؘ%_yic% 3+{=Cz]jъ'Y^Er>%s# ,8\v!J=rUw>'z`_3'']DFjw?humfؚd~8x:%cX^IÆlmQ8FpmR#>*F!#[y ΂鸁z`D¾3zY'01B,DO1ιd҅ 4HnM:nYݚ Pn$77t"G$p7.uwgM, S3 DxϼK1ԕ܋K 4-7=$% 8X:o./+eedH426j<9WšNui <`. xi[apo!%?wJa3Bi?ETwO #a2 Ww Y#~*!_,d Z"XW#S0yqdJԓ /o:_Ir -ԢheGaG[8St }?ϹaꜤOѓ75>eV`il2.$ƀh6a!_FfOz}B6߉#9J\!p6 ݬa ȯ9#7`ҜpM0;oz$f+S*44O&lvQ:P3Z`Нv)6OK]TW!\t6} WD-PYcŝ7*KvS}<膚!/;ɺ@T Ŗ8޾:%73 "d̰\ 02jO>i2lZZ>5Q1P*,\./vm·kU* I+HF[s,` c,.1>$.DjC-+ >6R [WE@vE:ShT{1U4vn\@={`,> y=ibfYM\풜&yFB&phB幍\\bȢ0]?k7]-T٬lAvQv w43Y8v $ekYևg{";&DI0|vT@ֽR8q\ ^8# *'cÈBb,d! &L} ,Gh pŰhbt:cacAUZJsyLIy%ÄrlnE X&A[7B^8NדP%n' 8n1!nC83alq x_qgpӀ4utOdqi{BSYoLڴۻ7t~IyM>x7x<,ͽaHTjZS5NDp?ԷS0 1qcrg ¿[7ALn8KZ,g2"\li$H꾙A47|I !<n1oPW޸ v\BCD {„,o\-l?`  ,y1dgwF'^_ul(xK]?lwn1[z(z ^vafõfH<>MUܕ);8ƇY|k3"M$y5?NC5[s4cv;J#ax7ܯ* 8s +r8am ~ uY?52#FvFͭc`` a;<`l|'p7؁;#2|*#hnf{&j&%@HX%Gِ I5!av~ "sTǔƨ쌿)~GFN+ц,*VfS)|A"06IHuqCP#bM_vUS$:W;J1Ё;f{$p6e f]@#ei8 //8LhO*q` <k_ASOH Q?I;)CYvjCcu֘lmO/)Ao:N).v9ѡਊ|zr eJ6Azӂi2Ilnsddٯl !m:4^Br޿B^&\bk.C6SN1Vv`԰kH(ub>) (@G5@FIk.y»9ì:Q#`8w9od;Fp&46$i&l][~ʉq:@dq2ū } 쐕-C Z ߬M bƝ?)w Q8#C& qu3Pj1s"39r\JQ!6#zl1QNگzj R^r-KG`$ah |oAWMػ8; g}Ve2l?mMAi_L`PCΈ}@ =7 {DHs@я j% 漧U-Oͥ J3m!㦣Gdź$BkTA3 qmd s_<dnnQ`lRe"OP Jwo緬Q;ۤ 0 ZkS"U' )X^CAANN # EF&pXƱ{ܠtr:vsM^Wl3!]E;*kGioCP5uTi@POL󪝊MJ0,PS<8/M`cÍD"DWW_+=d.*yors.L 6j\K($ Rfov2:#ՀzH&y(hHlà z/N"47p5F}ۡM)8<ە,`JzaHeFesl@Fr"3f $&q :jXMkʶ;(|=gS4c+D( 5nzԇ3b~ \($>b[jՎb> 8r<1@wAJFR\uPwV 8# D;w. ]PE`DEߺ7tf,&cpL[[!Cr-\ cg/{&Ƨ/ԇh-v#nَZO2>IP -改;o76"V7X^Z^ߺ x8`X ^ 3g\wZ,_$xt~2Wc d)?FzqknQ 0mxvYS\8=%rI 0#7/ykxj'eb9XeB5)v~?˦X׸ 1>moXPK<%K8`h[6V+Qus&Nis~r;r%$dYZm!Lf` p,,z\lxA%")(/"wW(':;sAA9pFD`ЂuLAٜ8hkGVTUKv3툀IfFEh1$8%4Y更Mp_kS8:ߋs&k|?sfs;1 qfNg.d6Gik4g .0n2VYx]wm STQ*qPdhAWAt5mjS˹!į^TsGlsU},n~.= кf˵Gl ڠo ۜLĢCC}c%mWd/VkJdE,P⧛l*L @A k.F]6oD` 3V=RG/ MV0DD{-˼в;(s@#eX˓ɂψWLpڷB*cOy B~x/r#8HkpFv2~3q7b>u %X6jɭc>ЪpHc,qAcchgIY3?l%;ekݘ@kn)˸9e]S!1 |} s0cֆ:# ;͚4Ks(ȢBGB^B"jE뱤W8gQ܋Co8WH\v$8adsuֺ''GqtxZ oԤ~I\W`Γܝh@.4F_St{PݣulfVwi[.:{.& ڲ ӘGae{#XN"X9 C#_i2\lp5Ec_YSeRS'JGYYk[gZ5ȸ zs'' { @E1#` ;7epސiW޺|^s v.hyHn {0sF]~04kN܄魆sJ|P|,ۓ ˙"Srh/Ǜ}߷[^\X/8MxV)LC+)[l` 5d~XGbuQ#U+:V*c+L.jqpped{ڙVc[lXvva8]^ygZF>X]ͥB(*!TL3/n|Ro7s̙,RğiEB=/1"k6DR&Z|"Y3}nl]U95U`M\BhPZy$َ…tQbK /5dH]Xό*HJ0w;͡X(TQ!Llzh$q}w~49ywsu>S"?Vp^ :l&8K 'L; er8g{,m1`jıWs28HvU)!8(!" wl|OSbn p\V)aqŇ6)C"^Hwp{bC:O{0b+tb!p2GVQ {ߗLEmɴw]E:|wz>|:fiٌInІ.h(2x\ik_̦/US?nl,y!=UNB)20hs?&AWC@t'ꬊ.K8+R=ȥI3׉V.$$q KK归VXިCi.wI2\Rml(܊"! b>u Hb\%<@HzGT!<[vҬWqe'* ropї"k `iFCwSfHXgj^hKHӥK̍wciFp奢Bē:wu8 ,R)GBobO 2Ɇ!dylv$췢Woe 度wq5%?dC, ,K‹ &90VjݍQTY豖[9MF!$0+#[8H 1η9luUƓ݆bFdwoK!*b*f1Vw p'SZ'n/.]<tv>#!gؘ{2Z5g@1 ',ԾVMi0xw(S@ =1rl h/+jFrDt%y 4@;lu9o]eŶ-ohSDX!%#+x2$d62-1 6SEHX@@^SKW 6FX ڽcH,BaБ03vW$v 5yn2rra:6 9_ $PBh "#&i QӑOqQ>°"w D&!$x\`Xw=2=ض-,۞2xX+tdyj?w׳=2 "s|1੗@p/\$6ɒr>zO8ѾQIqOg3W{~L%brlE9UUAڥ9S1C<$YX$k؎ .EWM2srp`< xqMO enn O+MqR~4miea#'*7UY]٠dփpYjqÕGru|o0&|bx@軉bl`tj}AX 4gB30q3:J!q\THeFTou?nj}}n ?A)DQ ])q劋zicN<hXq&H~wHh{'T SEm+4DDŠ#@Yfzz^@2-Zl: G*fnå2JPɖmRޤ v2PlO, $݁ٞɪ.Gwrnn(_x\Ѵ/zH00I WT5gCexVl`*(OdSa8ݺ 0z}]Q -ʈ|t9;%4MO]8&dz ~VIf=c!'Js#/{I )-V0#q''v{;kzF D`RHvV+ v)pvQI)r mp]}81<٠puHUfhC)3dᠬŠ#u!8[kfMS*h0xԫѨ$|yA h򡽦- n\ʷQj'vb);08!xJǽ}p%YCm C.b!.xU wcHzQ9Zn=goPs PKz5Q`A~`Û ,0#7(8m:FN7 j&ua/Sg3(љtMþ5e-'BЀ ! %pE0sTgD#ȶk"4A7Tw6h/IO5SZBe%oF?q)%*e*Z ZjKq+8MeY`1ec v< (xX0#:Hq.Ald ,󟁨19RB}h!2Tv!Gull#B'G ˨a(?aQ./GQ${]L~sXuA57tܖ, |Obڛ 'TB6CX' gK*__Y?qA'( 1w.;&^*#W>gɹ^d>H@=v:cyQkBey#ϱT_pL{0YcBZ[QaB_sYsp1`;p򴋄v2 ~Jۧ4`4-3l)9ܻ8i"@LԚc+ %xX߮#zW,j$V'5'wSmq܇ D;}F"E{@%17e< ~e$% 3= DZ= _hmQ@"+jGD {t˝ u3eWh;(zAꀃky0M_:y3t4srԸ ,0‹4R:RHUϪ|@[D_b`bp;ڟ~3+v6-` TF>$y!WR%3Djxl+#7HW;@A+ǜpt`u]"Y@!+PbݘbT_)gbyUkSd9-aN&,W`SS2c#oYVBtlx2~% A3MGWO ǚZmWٵBOs#Z`@0Q[+Yd۝{k^A~yp6J:> a;iIa-攃jGȖw/TME_#:N:J tgK8_\^ T@HWqto cD--0`[_J.n_o˩-*qb Xrzߨ ";_}b,~6ƻ "5~-ZcA8ح5B(y~Ε !z6,#QN!sg" 0}7Ѭv9ڷ/q'?M\4cY ,kYtWa4eeI7IғH C7" $ >bky|唕 Wt`?5ȱ3IGRL$hC!ܫѾCڴ: x6'yy39{힘a0*ٸUYEp'v!>Ђ44CÕP磋~AG^Mc(,= AIlp`ߠTε=l& NFwҳ Vz{Zm0/=$'dtFE6:E;# q+TZ@2:J#8Px.VK伵UyB6/H,aFMXsCBKVxdJYDڙ,fE-YL#h[{ e":ϯ11AP)*Zld4ri{`${>2'`F XPwB8wV2-L]9H){MSqgD|;5,Ht't% rRO؇1wwBme6ǸH ŽH'omuJ,@JE öҭc_x <A&, 7Lj vzcUEuT``!5*08'LXY, =g5A:wf[ k[BA.(<~7u1ӿy.l6>A=r.B.Bi./xL gw ut 2R/75DM B8A1ҵȃ|zybm]}xhP5f#uJt_zb V4q Z9eLz2B kgi ,i#a,ސ!j~l& Q{U"`V0.B'E l_h#1}A͋D8ėZ9ZbE%̉$B(0EBZQH`u_x 4|܉!ԇq~<I=ގ'lME6s[Pc920lM@X66YLQz"TMs`}\NDn|Wa[adinre V^O7n @<2]QG?oXzۮM$ӳ\,ݠ90'@@ YXBSr/t_i/5'栘r2v 1kñ=tGu8hhI~9 d,V-Gb`Y4J|SM '?hdCQ4Vspa(&Z|ɤoDdtcj>3YblQg}Ј dU='mv'=s V{aYe8YhqwԿ.ϋ0uA#k J~X,T=*_4 ."Px0 {!sKQA/gG|v5,tRCzeuw2#27lUnT*ZX7fCѴRj[s~mVek=kw&5qUom2Q#ף<) ~^zs֗&&M;:i4!f2hjxŤx(qqq9ٰ`uC7N Y…]cuC0S8|qDF3fտ9n6D=1ܑץgi~y3lz-[%m?\D~yR,\}FHzlS)cZ9QB+Hib˷oOyE.ʵx>68c+W1a8i) n=UUOc׻ (5hkf^S&3NLj'^ 9U~f{J ), }z:k N]5R.9D( J=lUEƿ7=U3*IKOR i2Ҝx{{GZ.ܨ v_͵AڰcAaF>\ґ[V}xc+˕YooLAqʔKY0 H dΨ,׶#kE݃Ȁx4zCPAx𭧃;yRD@1g?vN%l\ S4L/ M{2L3;@X7bnۆ·#ٕ= 9j$-[H8At _n: +bi%z̅PG 8!Y\o $AGKb^Sԁ@lG d "9$`-Z̠[\Àha϶`Cc?ͫ؇z6=Q 꽝 Um*m%_^7nM@?{[,6V[  xj[A5}JYQ {~yɛEkhb:?Xu'q ;?#y!ƏuJYۛ`OO_|5C\kzEW8U gPmC*gNxOx|kfa1B8#\@g(a6f8YB[KtG򌚗3:(oDb֢/ؘKg?W}؛рGd_kRHZw< Vޥx{ 1n;YY[O!ג1OzAm4aTpg$# ;ݎܪEIfuSDɋ e3ѿl+CnLKE  0{: lE%igrx{[+ id`m ٘ʴG>tn$u]`}W5 <8Mgz؁]Z!=cT饪ykubHCC=T @C* V $h" h)K&,'ԹU!θ*[?0/^o[d+YjGѼ :Yq́>7k ,yxH*M Ę?wz70͗xUR{ds;E~I &@x[YX_&򺽔ch5j\>)=Q*v/E+hyR|>= AK/<anTS"8$?w`p,b+C旜aym-9 Ln訡$aݨkxc VoG~&i } 3}dvn9[n'Յ W* i=[ې,p yA֤_NPh^!n0ҽ]G!;?i[ڵg<&iz(! O q%`X7{x^ve!D)[=ooE}*:xQ~Eoe="7^E#lG9Xb$d3xr,\fe ֖V 0 m0$eͮ8 0ڿxWȽ$2~Afy=r|kmӯēT<|;" Q~lɖ/Tv_)sOb&b1`.`GcjwAP}@ 5PrZ@z{-2ʀ.8?LOc[29Gas9ɼ"o) "y&,mrHPXRMH4QO)e K}18E`Q::z]a]/5AngQ8퉖7^ z=KR ߟShF8c~|% M&L{7"/*Y::NyǶټIEoȡ|{4NU5Sjqk /yV&?YkBpiXZ ׷S ^񔢔,inkY^T]b]* [=99#XBb3Hg~^dlylZ ,s΀O;9MNCQj u&ҏ?J,j6gFG͐ⲳF%yy[0 `pWz=4A E ̩d*/39+LV>PS!Vٔ޲ 2U aԛWfubn|1NͽN;xҗ@ @Z,[p?)7ESF6W5<&1^IVWH.Ë>k^ҽC4'?DAZq\uo07-!8L. Ӫso.6{&bk(0aW^!\m0nWNpMlmzt3?N-- <]kx`?9/QL/>Z,-%g!u=kF-$5v;@>$ .sxn Fc v{6M)Ym[;B<:]VQ'&W@pYEa;EzJR^Ogf܁?} ݁N&{v,%eD "==4zt+zͽfY'z}43.F&/HntV W~-IO~,ȏP" C"!P7 uW-I{]+7OtM3o>1 ipO}0)|A쬡.-/CD憆#)'ye}XJV8mK=`G â_q j%Y[r-NN|-e@ϟi@;V_| JSi4R"$eˣ֭zQ7u喘IgStM8*Hzy)G_iQ?=Kr(,@>k ]V2Xds <\ veԦޭ!3\E8HaLKej2e(_-D3= D. 03;MߑgEǬDc>:Ũm^ylQӛ m7r]kj&k\-/.jf Lu Ukԙp :rLu=:KVZlJ@2MU&1m4}ݢN=lkH,\uRTF`@zmˑ:>%SOyax*~%9-L`0 O]"03vwt@*e/W)9GQpWm][F21ܘ0sf!֘MS4pןA| ZD0"1ztB=ߊƦ~4XA5”cqs>,Y͗ W`鄎{ B #=#W_^( ` @PV~O5jUƖ!E64?2g~ %x~#JN_2um:  Wedx!JF\VB&ԶI0yn"ߜ93 ]QgqkP, ,hGDR~6A[z9΅ C+TRb6FD5d½TݔVŇX>JJ9y *Hmӹ[6ЉH5*v3(`?v%+ȬPzӤ!WUqGIc240G 0Bep ? z?YO.=b(f8W> F|‡})*E)),"֛":Z:hGйZ*_ec[!#8'o\,4Ȩ}y4-(U&=@Gt͓y @c{et?zqunsPOO]Z~OȲr"%h@򱻀AJ4dܥCҶ\Gk8 .r+ sTӜ6Ss6TL>哼9'm3eZ-Sv~=tN "nNMwL62tR,tV2ifeH޷HrC{9;PD*ɞԘSSB vڪ4ôTiJ+^'N jgbYLj?[cw+Ly`j6sۇo(k U. >rAv.k,fU II%oA!K՜ *!wFhSbi bq7}iw.^yyZthꪀ9gݘs1`xϴ-ղQFk[Ax|$>C4~>'12oyLjHB)f(jNy2I\EtsV^vsNlWE{A1\"cYO$dx`]Nm>G+t}SXFCDn}qHib0lmՒM\-t TD YQ" 7ĕovamG^[՜FFtc!dT Dpj5~j Ru|ɷT(] S`ɐ6|Uj{x"jaWۓz|Kw븲_# @ Bބ#)5C4a&be#"xy< ȂOALi 'USCne'މs?DĨ=c2Qly!U+-ߗ3?glМ֏PtELYSik'/ 0v[ J<]rb5xZ^G#DѲP"u[݃ RuOΡP(7'ф*!}V֐HX(*$'|;ץ71| 1ݎ.ʪ)AV$J~N&>tتnf #O٣W@_5TE;3{dpWag)~+7# ~}C:ş2vտ8CGIӫ%w f_0I]HO1 " dlt"`>ϥdm#_L'39wELÿs솩WsoI֟d4+JԌUfOk _N¥$i=-Q8~S1S+>F%-rE{Jb96FŞ?j2&8s\P^o8.rK꾬aV^ |1T񶗃b)slp\"fT=Yt=WC+h*e[802[ v^&lǾ X>'5N2g8o8 A!l/%9߮z ؅5`e%v_PSGZ;%IUf<7pUuΞi?w0h )VbeX~f,fX.ϏZI)>u1.ߜI,J'>Z7]|`aYqz㨫z ,BL~{sj'ʜ[ŠgDMN@|TH-[mɀu֙l/YO;=hr33Ss/5/q?kqj@!}Uaeay~ZRN]-|U5./J.i-9wgϢ7+Ե,s860WTҊջn^#% <_}٩^<Wv\ڮUmyB{a.{۠*CJtA8QQgÐҨ|hw>Љ A[mカp֑I2"O=؂q!Zl}'윻. &~(ᰠNU%,].p=Fj6_Ƀ)'N_b\a޽۳JB뵏> R{φk!䰛 h+\-X *P :`|]]NeYnס%ȴua0"my>l+M.tnػ, Rz;BH#ANLjD-ⷘ<&~UB\0tPZ;b"EnMov ݫII}va+jXZOyU(y@7wn(|pe7 }֖4$ ] 4<7=8d^F"\ϨKQTrÝ]07 :| ey3FOwTU71S53e*wh0sD wy:uQBI4G> 훖feSlכHQ (ޓs<v3jv .m|UsL$eGPbanVx[T~zZ;z] S 1g-r4JEP]$K>?aZ:9^ՖgޜӊvAB9YuuAcFy/,x7\{܌G^,Aս`;ViI%1kE\"w0q퐡v&fU[5=}=sI7x_eSa9ǃ f94lζљzyʦAݫ1}\B}29}G>Îɔ3_} сqr}Fa2 DyU6jW=y-0ɺ%2|Fam=_gYFFub@oŅi$s?3R.Ge0ȋO;5>t]cGmXW/BIv% lFl!0qNeD]vLvaorM1v#C{ꏳAG\^m^_U%܂ U(ˌ PJ2#3*d:w]R*DZŘw,N -/>л%+DziVǿsgp$GH=$>?/Co4Dc(K m/Y f !,xnyMќr;.J=KC wwxw0\FH^h>65B'm_ntbdԅgO̠dOo'KpVɖ?PKdRއ}͍Rb\ه ]efs$gϮ=;Y@}aVѶ*LN9\_)*p9 q:O$!iD) }qk?]SfB9rB( Ѹ!Z;a;! B{?_Bܣg952ٴ1Zfb.M060J[;$J҃ԁ>m&c& 0hЌY7;G@iR͍ RIzZ7_rebwy^5!bT &q7G_,H-,2 RJFI"N':|oӡC/f0gIh쥈7218YS|iW 45:Zf QY!rr-)T Ty_y=xߍQ^_<Ǒ)~4JpHc~w[OrwwY <`}xm? c+]lWҳWbl^8DeB`,7(}p 8[.qsr3L;ɩ] "vB k; ɶݾ?Mȅ"̈́LE|.w#H=k o7ݿˎ0v -0|*Zխ?.?xqxC8v7wX$W]JWgz s4а/޿cNcu] _dr!mML.Կ؉' =id젫\QBCiTYkmB3GV5i[O,!5{H`Ƀ{3x\<)YNsn۹ -;*BE)jqѭm*uQ/h#l;Ђ{;z P\%Mg&.B}Ϳ؎πAx^i?x{v7?mKP<O *mT np'ȯ*5BNpۧ+7CX5NbK$ EbNnFJUҳ"azaA\gjFZ M$//$ F5[*nԲ--}B`_ lz`ټ䤪Y'HX=b\BX9Ϟmhb&A%c-Z{e$2=k>VߋR!iuIL!S" ==dڇυ9+"ܼS_SZ(*.pq4#n*,yJD*wmZsk7U .&F~h$EmoZtIԜToGe2a|&@G]OJʈ&KZ֫|N 40psȃDAc"ypCf]{9O@ 2ANlW)hQ<$,0%Sp1hgL rF. qFs<$ twXD(MoX%Ihmݐ%c]JH3ku\=F>9R:e4\t*^OJFܻf`%bBK-r >B Bkh'Z4î(߁thzg[@';hAwAI^ٽLSӛ=U)`%֟㙀nCQ^,Q\=X9xx&:'r')GrPsk{шgMU;BHTKɼ֬ ^us>%9pwQyݸYX`hG7hv爢\@KDsY jZV6?xGk_wk"It4kpH: 4;YxIMn‡2[.GMKoK/Z`:a mP@Tެu'ή{=.:"iY #;ӓzo_ bj;2 JZJ76_q|4GlpsC~*Ag˂vX\ DScvuRWp(|Q `e]ƵR]|b}'+˃\WWc6X=J`2X*.[xr&"NVvV Њ-73͗Hn-w{L|(>Γ6τ˘ɠYы&:UПj?dB]a0.xzm㳪~G~q ݾC ⨧\5/X GO|J V呈Sᑹ^ ]=U{*D0 (4Wg4rϹIJT勼 Umqatkm"!U( )9<:PfFj. ϟmdܠFj!ngוԲbrYd?in"?6J:G#YaX EuKSyZ_@b*;"{ڰf^4Hau\z kj}&eWEj*txœo..O#ȓن@63]No_]sXC"'zʿԉ-#6ԑ0FҟҲXYߩLݙ{wX01 ?`(y0~YZ4KJg' M7V]{@MY&?喬CN+9&ZwPuo3!VwN'QQ{ϾI:.o23LҶҞh/z&`5o.`;~7dW׻Ч=YUird1Y˛fynQ/18T,D]zwD9J;mEԑ ci@^/=)U|.eu.E-h鋠koADF\>h[*/H |jmR%.",~A-p=Z5ΈTi!k9>.OBP)!*n0[ةFl) |,FA v mP45. F10MxA %n0CZbqAԢq&1"ygKJKK٭ P~WU>Qf-3S Cz"Ps/~"1-@P ?鞙exm :Gc+E˻i3~Rfk{eP NκN4\҃%f);-niQ(tV?#R{k6zzV-J'v@K@F$f  eRܧ)S뀮*ز]G m٣#sngo~HT>!n$}V/fV̥CvJ Z u`OdK@3c"kKZo֐sL+ʮN4W įËyuLfAY :X1X} X@ݜ&@EdFA2 UGL^q~.*y^F:`W?WCZLNl]7m%^%"L LmT>X]DZP6"^tTΘ[+`qUk{q|_e ǗƚO? &s!SN-T;v${v0?[~❜'IaqrÁk>ds<2ؿ zޛɑ(9beH*3D'5~*w6G ė 95_17 [9 4?WG;^@"SuگT6Ԓvi5n׎߀Ļx>!N^:+ Pz/?#Bߔ"5[Ő7=qZ*L1ce%7tp(av Uj 7?p3޻8qT8G3j;p5.lڋBT?Cf9/ :xJGObMU\^Hbg9}𮧍ܛVdw~ƌ\ouf$A֘#lx!#lY *tK5QhG-kpm!!_qx^07!9T l0lȌqO;^؏ę_OE᥂(>y K`"r"IT'M |RDĵG\q$XEgoK|j}ĈRO@ZuoYVbOtc+u1@DIUB'-o'7$d9C^}=0xfV9ԩ}=a 9fi ӈPtdAYՎ!Ʒفjﰏmơx]["}vU x :s1_Tq)9YevS\+m{̂C$/gT Ϡ;F?+XOINO>"44w /9|wסV 0wY^4 v9" ?xp'}?HI iq~JIEMFTَ.؆әُ_A$ bZCi ܌e6 ci?3w(L/[qWߊ.@zXH P"6v i栺ˋqyf[vZw<Ӕkb|PVg֨'\RŰW@pNApsubQm{Nh0,a >]QAQ[1Wv'#fK&'tiR|)~v\wr p(1oʲ 6 ]2~_2"%E4fzlڏi [7 ßhu5 RqGEv.|vSmh[]2, Aչ&ۉd,YJ'laTHêWf}|"[=`j{ l٧'Yqw.M-h`y.pwc߬=U9Wv*'||f6`NA{jWWk䶰>fʅؾzDU Gִ&_rmWXzfJa)Is5C*?mwo`iTNj ?C|0uzlNNSH$RNɭ2vГ'*x1bvsrjM ΣfMjMb29pNɎ,A=(٫a @ϕZy66<JO末m)ݦ@sURL*<^ a XytUQ|ߠ್潻KFInT6yd;)_3%x  8 < ` Tl4@Owҥ\DH< Iw6)HH]7J? /h,muIE, Qܱ*'{fIjȵQ(/ͯCLkݒWR?\szjV[ ^g r">M_g )8ՙH |K 1 Z <:I6ES'e ě4xNkX~E6{K2fyYpLc;0tE r]j@۰Go&z ɧ O!EC]\Ggv49Vn{-n,d? N;_F~V;w?~gIn{K-F+xPY(Xb;R|9GG=ťre $ t`B]$:aBꮱ2 fgry&\nEQyr8feų@ZM!)YH ZZ-럞:ynQҏ+:W,ӦyTT@OP®N0Ӈp685HYzqCh`eeQUGApt-ul2؍0 /Ru| 0 7%8, 3Y@g iQHHBs zr Ǜu-.'vsd⊜-s݃Ʈ_kA;8"iNoٜSm5#(6W؊WI}K#b`CD1#VWOd=CFkKk~_$w EXVGd2ϯ7+oew -SPNݺUyBr|saPͺT'a_= -:Vj .Vu7nqx Eo$ 'V sPΕPzh2g%v?S '1Iz;E9nٞc\XCy)TeE{ᶎZhWqckˠ/>E!@yG#-uyS-\><:x@ %`yf_C*ej%ih}uP)y@'1Se2K m :ckpV$] ܁nzՁA QZSiAC"#J=_?tfxIn'M5a\ހVw2@lpI\zz.]^Sp?=~'ڞV[ C#2hݒP)|4[r&9>dkMZK#Ξ\v GAҭ)X|_OR\gj ޷%xx&\I^Q >ğkUvVs섨0 i2|Kf/P0d`z*3*pXjEZI#!5n>[#Kx!+ 4J [!RrmAS̳biadx  ?Z dVCNp2EA~V:u<.ƑegT!))-;@\Ry5v<#k^v8,39t Ɲ(w˴h;?,naJԬMhTpHDUDkmYiE0ƺzڼKށ+ @J^ӻݜiH#k(<5{5?s2E$sh8l->Ts}V^z%Sy=}ecI yei5iG?7;0j&T8VtɾȅK  f2At 6eX~p#i:Q`WNC@|>+I2>ca }ȌsI'lp×_.v݂ʞ }=,?"E*BXAcg^sN[q8T2}7k'K8&1%-p7ռZdM]/,T?ACL+~}'2O5/T EV`}$Ϳʩ@iiA>)5T?a)E`4msn8[hr c),j@? u`}OV *$ +l'u쾬B}?]&en)Hˡ܇UWd+ڸBC+ S:W{1bJaM/eP&.յ/@p&*UN>ʬ@`:?LҟkǾS%@z|;T+E*_A`H]Q:9f Pb?HihǔڂnjcJG~/Y eY_A: l*#%t]I; w&[LTC^,yl&ogZD LJU4*apT/QXj望:9$cBv ɏ+AJ-y庥,X^s|j7 *6Y(6"If]U?%NiI63;óBN߀jgC ?ҷ2. E[V?ZlyOWMQ}]n"`j%,ZR6j1Hm~3Iź /&H7oT# hbsqF7D 1-Xdo6?(}Rkpf2KݨʸC8*+X}J1?UhWo3R7M[$K)0LHMc_Gj5Z6$#7KN~fO^KI~ /Q99$ԉfQf^ø#yVʹA$}AU_#Sdr?[ /詛22)",K(`^~˨ u3_XvJ߮ZQ(/|ʉp_lL\7|lց]kn7*KSKgM$Nq+T܊cS>rh VհEw3AE/セQ=qKUw(՘cIyʫab"e+.ubxUmD B,ʈۉm ^O@ژBnD12C/yz3K[K0At%ixIz 0`r7afcN%\7p62*@F( ̒ A,_/PYY 55`q}IP{3u>{eW;jS JDYޤp6YG^g17Er{'C-}-:A Wq^+罚C WCge!_v N28#t] ${U4ۀj#$5}a,<0!ݗY f9Nz| ~8aghyܻ :n5D*j?xj79u-Q}'=gVIJЎqAD0XgrKl=`dM<ܤ+k֨Τ5tBMi&!TxXLD+X4:19FЏˏ6?zpw?gn}DG[*)m>*#@؈JxU^QيZz{IRjlkGpֽwRIv?5%$zWRTU/؃1ɟe3_A`W\Of>}Z|F|H5Pv I ]=}VʟZt>;ڑmsp5->i;ɂhcՎQ/' ]oCMSvOW˨ l\Ob}ǀ*}kIX pIJ~d|U]%w(Hh:pnl)̍dӝ 'p薝S\R=atӱ=_vo&E|!"_K6pStvӂ / L"yA=yw u5gEav-h}[Kv# x֤٭WPNX-I%8/ǝvEvi},j}[=Y~̀kwst ׬a[Z4bX`a;oe֚FF8#7~)o_"bV9v^06Rxt `4ڗ"}θ_~VM^P8vM sY<:X2zRPUgQ9 8:<͸{̷뱅~z0~J-ud5bWbsZDg-Gͮ-.>}JO F͑r鯚iaf5ee984ǟ`S V;S0: 9~r$,2"L5N!|0[1H ӥuW ;c1ڛmS4Yաi'M"9K-!s>?>:`hh@WTEߡӮH8OǏԔsct2o)ȃz)x9(t1A ]fnکXM|M墯eC=Tz:I a\Ji/,^6G1z@d?sV]ݻ;ZJڐR%>+$n >T֕ fQtu\'bWgrm\DfG*ݰ3j=QdCOnn\;J[w0e]e$Uk#N.+u!WR3_$ 5}{ +6nn`ƕ)5W =k*PYx^&YSbL=[ {ߌ>q[%Lea{$owmAbz|6]xe1n૪QWrG7Xaj/aJC 4p9YkQyNJwC%boQ?Nfcv4Կ4 iZU P.Η0؂JP+, 8C0D4~~xQFi`DgDO_aG[r=?@샴`)J7>[?k){X.j¿=lC²HT>^2NN^t?D,e\98RvJprɑӆyQ1#JP [iҶ'3#xKMgjXPZS U5?*Prj̵w|ߨӁw|dTϑ*f5<)5D'ݢ?`ZmvɾaOL(lAQn)L -ݘcEk #TO;yQ8T%M8{fWT:nu}pF !h:I҉霹x\QN#j T5`ڣ]Ua'N7]Ҏ^ T'v DzPQo di"NSUAr~!r$vLj9`Hu)[,͓u,!fG>vi|dK!&^(ES~DL`.W'un/ybvr$!2Nw?GAiӽ>E_lwuqCk7Jlj,*}7p1'_?TSXUg1]5y>tؾ GX(w>$N_ 'j]J8p3Ab.Ow?sLJJ:LݸVBviN89z2x$w9֗csrp;\ڶX}?bl]?unmKV@_W;t=]g@#ƓTZX_>iwS/K1,y޲B']|IO9q&5>3oJ.}'Z \ź!\]}v,>_?:C`rَf E[NceԴlM ј~cp qkRB)D}V|R.3Bdtxh[< z$l²%%(-ј9vA#%sKX a5Qϣ &vOi1O:(Ek|&HP*?O̿U͞7W񡺚閽.eΌ|1LL@/ gOv3xXI& )k,ꗊ0nxV˷z{["h,ҔEoyģԺW=I 5A54D>Q J+ci!$G3F>'3GkaqӳX6Ô԰qE*OE!_et  O"~Q~8|CqY^ nhAA^nCQ2XV/+t~(Tl}ׇ1U!}PoW 1iwTOzRcUmV2v@j8x=b36%'=&pf)X/GyzԔ ]Mϥ[B=?Tהm!G#"2l1~\?'Jbw@@=n"$xOV p+D!wH$} |yEX[ P̅dӏf}c؃6Dq*[#GGdD5j@n]8Uѧޱ䔸LW,=D*3iN%`x>J% ?-[cawtslJHɻ`Oc~ ccP15IPFЮo$3zZ])ʧ[y Y/;߇whEma+i[|d? nv\K OGҿg: ZGcyL&aA.A{c#vVMX;D$ަu/Q2'фyu0Lʼg_uW8H0*#Q-=yb|<927 h.[@)'4k&s_ga7?e;@(>eWJۓ=Ii:3ހ sluFioo.edx3& S)Am_I)|9Ȧ_bAYߓBWܕag~x5NV(dhkvK?\֥2P}يkN sҼ_pw}x;0ϣ"%CJĴClBg)/+O=sqoS2Ck O @[7YU8ńw>(4W7{.o *m CFn䈞PMFL^C 5$L|?W򏧴6zs ]Wǵc.zC~{V Vlc&2Fd5A%6!ׄ9#kns?5{/33MtwVdԥ.?-{nJbyו߈ϺֈJy1sm$`G4se?]}T{\E/+۲Fh Ey|$>io&9Z7`_E Xo5ų2&,=1;Y)xN=? Hf9RoSgץ XڑN,9BC?V/$ٻ1eMt5eP:jzFG/ϨE'=3JjT W%w|IzYCWDڟ8Ksoo}%jzz(5LCw]|{#OXa~tPTP*YQdԵ$i\R;e4n,M]ѿvYBlQ:Zd#so,ΛQC"_)[armUg|ڍ'5WR,S=$@=^Om+Ng] xrF+:ؑZ+1x;>3.4dY}ux+^Ӿl.*߉Π@J|}3! Xڮb8f֢˩'#Bȧwv+vn@Gi<8ܽf;k$$6VE*. 'G ԜN]p9|A R f8~O0QMEO"C#̤,*xbTΑ,'Nb,M۟3m[Ljb+V?;Qzή_CE Lkqi9r1`H3uKM@Pd28$zF+[_ *vx0SRgfEU=깼eW c=x[1x{-C#2qT >{PVMm7"ފtky&805^}Fvf4Hε߫K•R|"&SSi)ů$Κ."U {bB!ɦu3"sDuȓ,X*͆Yu)Hr&`fh*8lT|>WHKJ Q/3WX7uqIJ:g!I'$ҾJB;O׬A~G!)j ϿjrSZ`ׁ2`I..=%؋B){WH9xr[B іٯNvPbbN*y?0]Ka< .0OB+& z4_L~;Z'okpm7 %ޱLoCǎ-@s vy*W >R7sS%O-ZGe}SK_Blj% ݣB^rÇH\nn Lm\ZN)EAUGYɒb'$KJ?|':ؕֆ]Y.:c3gť;۬Z.eDZN0g8\>VKce5hrZ}SViXnR5X{ E DE fWì]a\ sIyfBOlwq2H +$#z3y|{) 3= ؽ?v}4j<'Qɿee6{ûQHz9N/RyGcM^ j!.h>{z={MTTER'*sHkIk/Lt`ʐvċV?%hkz<ZՊ?lCiUfQ$X ůA g#^,iod\ Y(߹~{4:hPey圥@pΌ]~>{[\ʍ5 d0S]Dթ5w[$ F?N|Nυ{4V:Bq_EJ[RhQJI0wHVvbb19Em7n7eF.01Gutv4 ^| Fi(<;D>h{7/2Jm9ig0E{opӽpfw<͍f'iί;ۈW^S.f _K+aRqY Jo=Q? 9$ )^\9GȌ7r7协a^"]^{UŁa&48m˞ь&ZKHy/17g7RqĒ_㶘c1O^'gKɖݸbfKX6;]׻AKtu7̔@ 5:u[wAs<[Nea 3=Y,=`Q|uJgSbX0zИK$Lt8PM~Ɇ$ .hO.>lxPPpws}P_4hq84`/9lbAʊ#2 ݕAʊ4NÁZWm*Dtmd 44Zn.(,o"ӗ"K+2tr2d{2a2M7JB,(g@`,0" Jst_->x%ߺTf;CnF>lr|W*pHEs~T7kuIQQdGzG]xr<'@u- ,K}'@DJAQvZ[W.b wY;oj ĴykKUBZxDw&1 95Or5Ѧ |8StՂ#'lk0!*+%ga&vi)db'H`Dk>[5R2`)ׅP3`>c";~9ly]{IY?~- N&_`Cц٬j:i¤F҆Gf~".l7s1[8à:7Pւ2Բܔހn`>IG9zi'2z*CQA.xdPk_MA=]QXS(*:g?ǐq{)2U?|sUM8)SLZTL9bcJT<*2u2.1پF%|ͫF/gmGహZ䈼!9HgPo:dBH5&ݽ$}懳ڀΟ1X+wdY9Ši껢|-{`񮚯dβ w\@uس4LHù2B/3GR͓-öO|`Ƥ.`^Y֫pWŤuw^ư!RŪ HDcI=O/N }e,& rLsn|S#`꯼fT&0s|8O p`w5XRR^NNCT#=~=*0 VqGTC9*PI-V;ͪ#@Rʸb UҦ͋={K|I,/vz Ťw{uhzW+xhK߾K2=_DUk?qL* ۔W$pVDom~OͷI:ǹaRkbDd9> \$'vGcu?C +N%41?!O8Iki?ap4YAyWhG#9 L%?DFFp5eD얜alE2do2R PnA SPyNfh,1%P[yZQ)Huv?q~W%c);J/Tgxk 3D؅b@>593RV@ 2H4TxGc:oև\fa'|籌m}4mzpZ[7 JO~9W(;Nv)LSB݅{L2ҙAny q~4xUۍRW=h/oXYnɠ<w+K 7vt2Ɍ7T=#Qq :ʞWa/ÎEu&ܯuPI|(s̉Q#J`K/;}y~p-33y&7K3֋xn]U9_WXPh=C'uA6_z:8_؜&!qnnι@J(MS‰K 0a-D_Zezs<2sImX&Qbni@kY$ܗS= i97} jߒqݾ|*H maY59lXZު%PJ]צwehNWKf!I[.Yj|  (QQXI 9@S`ig;pX> n@4?=0` c#ZzݕM5ƫCX7$U' ׺^{K0m٘=Dsw'L~ғɀBǧϘ,>a[\/ܔvl _^h7˫] YTU3+!u0N1( ^V9*DC߽}`d$UJGZVG˓x/$7Ŭ)">4yS1aѶԴ.yFZt9򤁵&Zf}@I zWz-Uls@7hy2M\Fo^S͒uÁQgnh7xE]lжYtxy #~wAUc4(ݭS9w?,"g^JBDjB )Yo Kʕ|;X^š&;9#5@[@StNٹy)ݫ84j[ht`s+!`_ p 1+eK gnӋ=GQy(\3DI]{vhukWTn-;A>@Cʵ0S3%!'ZK+= \՞4J 4}Ziqtͅ:m-^eɨ#$՛|v+I+y6>8o${W|f1v ? \:%e!5Te}gLTsBKzqsASgE<S[QU{|ZG-!-kcҢizHYrL2iƓqMF:;p9FHGX2vk#J"?ϹoS}5K7ˢ9ǘTO-5~2&HvS}hXJD-pj1H9ȚpsoY#{6}w |kSH__BYpGi:];OEz7 Xn,@k΂wn|`FBRpal޳iUqExu=@rnE ­O2peF ZLwǒ+Sid HصANKlFcpjcAf 8A }a)gj<2U4lA̍xiz>|mHI a#N/IDkWuVt֛HqSdxq:dkt[z4TSh^ᮀc*B gH?"n7Mr?3M5vu֦~ a0de, iʸVH>*ގfsϷl9/|E s,|d Vu#ZOfzCٮrPasg_ܟYq 9Rf x!JQ`Kapgݟ}k sbK'w9KJnu;{5' 6KuH8l))("|/j]]21t5ٚ#MeEK讐wz2Ɨ-2ZDVn\37?{= ahK)trfrùc"ݑ wt}t jQv y}Px} F]l C_&kЉ $XjT9[FRY[Y : A` g||qh<6p׋1;oǽC ciz}rr>Y_k$m7L|v\Qă7 ُe{2WH4Osƪ^^4Ax܌W@S#c"7sz7cU3wvi6kiAsqį na(Qסycx(7?9޳&[Gsm8"!BRKbژO$LvdmcŨ1q8Ԑ/e`Fh9:g/uP㞕 aDSx1{=-'%k4QEpG'8]+}Nf.Z'yz/ԇ%3 6~cCrvjd=I g\$&tižc[l>v`.svFTK ߕU¼{6i_VL $ M߰W9'STCeoH ٹm,kqz)1^pc /ui*(a)$K_I_)wundm_FpH1v!"];("zq?5x5|o5IbuMQ>h l?2^(C2,Ë˶\nX) .s#'ush-2癘&zE2 Y(qZ2-ivBՉ`Iw!A*0G;[Q*fu5Fm(&wv v矄~g+Y ?>W!6^E#MZm<&̂|GybO؀N"켄k*c8YW܋Sa~ScWuW`6S/>ȳ=LEO_7tB?I;G vI콦=V|zW7C}rZPS]7%xCgg.CkƧ`ЙH oy娄gHsjU+mb8JR1%0nDÁ"| 1 !# Qv/` Bԅ+ᶝ{G9HVAJe?::3N:KY1Qp=K̩~OjXӡKnt_J{oaƙE9dO1NoV3Xb&7CBo`['G 2uKl.եI!nAڃ؉8=F%l?`p[\IʷF.ÊWk5$_aVLe[N9~Qӛv (LC9oa&!&7q3[.jw/liXG0Da/\;)LR=G)zЯfb{]a,Z19LuQiMkL {AкZISPK)G:tнXI"X `2E}D{;lqI(HF Еy3)T_-; G b}`OsS|W#y^C;|U2V‰/7_o2_ӭH4qTk?n_%%W}1u` l̉uϣ[uh"aw*'o vF1H*ADi,U :e.R5OnfgO |?s/|0a=S,s9 5gkw `&e}lzԬt+% Pvنb"!t a8b߂$1H/sZI[8)\@REh'9*'@R5qTƆ@SAԸ่vH8jޞ;˸M~%EMGFBt}hdTh ?W)7BNw5/Зpxdcm":Na#-zIH9J[v:/'^b/CK+ 1u#xݱ庻XkKFFxI/L[p ,c }v0RY-͗d4ɞjp0C_}œf̔a1F dXû:T ,0V 2`@HΊ$NTvGSXi|뤢T!;ƹ^>V?@:R`MI]}~t~?v=^OyX  Z<ώJܡ@q!ݕGF[l7y6zc&&p^-<`wt0tq>wIRKAԵw;-pIKCIJCvg ^M\Wh:Bu+u2z[bB0t AoWe/l3kr:`/_oǧILz6 yYz!yL"KUX{٩ˍWD#(l002dJ%}} rmrw4;L`Эǟa00.bXTyL-!α<)k(m`﹡"ܑ+3{y1" c'-g[R5\t!vgCH]̀1 B4ni ;]-#nݹON+0<{QSn_I4Q`4KMޡ0]QC=FP7D l+";sV˺F )=}(_{(K+kͺwQ,3ɱ!X݀><ũezഗ'yQwN'+s2Z8qhg,:=υ 4Krt<X,O tv٧ ]gbaSh҇fؗqO!.@2S_)}'>b|<>]JϰtSṆ}ݽ&Ƭ(Lm %Ŭ.H "dqN%vOEV}dLټl9C}v"0?:TZ Qr/I+s!D>=8?qk PtE':N6:b-ץW4/9DnJFzŕ%vUUm󔑾\j+GF8鋎-9;*bWX\,|.2KhVѫ&jf]đQ3>B4 8ҔQU73=6UWC2Oڄ[v́4Fduuϒנm78zYE8m6Vax44;wȗaKstǥ k9?Uo^RYvқ]I*]WT]5*&4:P˭XGn|Є?DF60 ? ӊ5VleSˁ'gѶJ$ v8GYU'l.hIʋW@LsbA=?KϢ>s kZp>- A<NjڦrжTsOQ3ufXR97@ʱ@^? CWw0NNDL9P6Clv% \H+8[Agy =P@;SL-' Kk6bZ6 HWIkcmkgUq>ޔCYK@- ]ʴk3p͑R W B 1f(5G+on_) ԀqC^o1dCy#g[gtsmٞWP)Uf F l׳@g¬2sHFoޡu׷5BOO 7PDZ7#|de#^ kɻGnEiYj1{WLS%Wս`.L>`p;7x @dp6Steݒ&;$xjYˍr|ըܖEyJ >IUmo *K]`J]/txx;?;]Ńwy3VMi{tb'4oշaTKإw}"*&=O$_'ٙkWm:y5,ΞK'@jjeG,>nr],w5T*PŦ(Bwq"1_a;+V A'ɅMkgJH+j.Ҭ[>Ue Jz_.MwHm0F*Ѫ̘`fa^j'-U/n{~(X9A`?z0_Sd콏j*Ֆ24޻9]MX;uT[\^x34 tIir`UӜ1$`6׷lUda\|99p>ޭ5b eZrz Zj*z2EAK͗5qv_b'`ˣ}[3 mOaC:/JtdȬ! 11$%~/Ē=U,:X)Uwg{C) y俆V%% ۩Pv>,g|tKoO'gmIC2)jj;d@*H@x$RaL^#/R9sY1XVT9p%w^zF2%q% _l!p{/ A?=g۫9ras<w^ oWnYHWDd;76B_Q~gje?TPҬɃuշýmu]_q3EƖ^Z OcYӸ5P;95-| їG]! a#kr+!!ⅳ~U?8UVc\$yXCыCQ"osްinw˯ ^7Ǡq⣥1d> ҰLS@CɐhzKvlJCYᐗnwy^fE튍łGoQjci&q2^X\?pziT6 U?ifUT ;j딀ҿ<_Ua8x> (a(8MW= c=%$Cwy2K)_]l>=N*HEE$][x?N&FGE|HzqGa G|.|wk@^o>!2qHWYR+B\L~k13q,c܆>OSD e`l@ }oj**0x&1?UUVF)Y4LfBĐE$YP y85р*FwN=Қ@B(5q5 =5#jnJQ>ʭIcVD !.$w\6xxM~|fժQb;Tq$JV9-aXxi* Lo0x`zt+;mT:]tku/{zgujKEINUEkXϧgn,T=a)N𨿿J>pʊǘ~9 rؾ=po?hmT [eZg0<Se(Wx I%' M+a;:3oC6h3=Rgm [;ؚͫF!,1ܘ|I>hbnw0:{D2,g]q&3;LMeTQ{ef QX>MחTZ.BQ$E,ɉlG"琣2R{sE&{M:U=EYg 8`:w胃c/nQkډh%TsKkZ&?RT2&H` YɐCp^»4Doy{ˎ-[όmaJ k/'[;eؼ`=-tlEBEg? %5Z2H viӈnv3 AT],U%V߰R}<(Sg_v=ƛ$ N$f@DK׆LK|)S8WJڔ7;OrJS%r{;Ł-{nU'+7y.[i-! {Wm6/*hhhr8-8O_P jn<ގzD AcCXw܁ߵl7!M^"y0-vE  ťT\`6+U]B]RuV`aAcqmבG^vۢ*AkVxrn_4P =#[vH$PV r^(RKD~LF$+(a%ܯD_ApzF|: o s"MMHui=c匝ߕɰױ95tCd>NNA,(u53Ntԩ+K~n!(&K@\2A}SWѰVgq!#j"I[4}9cmot]˿@<96RA*SF|/ZqeV{Z>&8dmw9e Qz~J#ԧ+ߏ'e0TJJO*?iv&GryB+i@tFbKT-ow]EN}T>91\k";HȀQ<۷D*[W}CտZt<dC[*=ENjYYj1{Ov(Uߋ۾@ANS* ( 6;P.UiA.4>!d&:UwqkBcmOoY\-!}YT%>h_WlyK1Gv"Ԯo~sKF1yÌa2QF&-X5pw<PYw6Lq/˧t3x gٮ͛gJ~>"=".":ȰkІեB9}.]DK8of%SfsBwc3ɸmKEُ41| [y8p׀* r)r>:$Gz| '9cNۉKiu+e淟#a$g}+5M.pV%)5@ېܴ_"X9Ȫ[w2{b=<*T 8ͧfWzҔG<-A._e.%Qr^Lj+yӓOaġݺ#GOD hWa|"v76Zkt[̯Okhd0o yj\->NsuaP=SZ4sv{Yz]\֢U3ΙfP )"}(N,h##&tH3=e &~%fM#;|j7vR㹖w<";%s0Y'}oj q~,=Iǰ"r3+6rq5EʕMJZy1\V`{jH־I2hL)B7 JEcc)}Irg&F{MS *oRxi*R)U++{MSqmˀI?[8_%vL~UYTn0rnyOr =ԆB_COVt?u!ѳז)KF oi,#alƟY2_5{JΦ0I'U˲oA2\?/zJxn^_socΈ`|uRgv a( 2QSqoʤ6ʵ))iWHZeҔGzTO3[Ѳ:9 R6SCZh˵RޅJ%21`E)1.*R5SQx:YϒqԀv_$-AhKvbcDlyej6¥a#4{ő,l1xNV5 : >_D rf?&j uO^}(˄ G$-/RS(Z[9h>dya:8猖e . l ;;{E| XD*vN-'}KzOᜤG3gvȣFNy3%}؞GT vkKql] 0+!Ѳᕤy|5A7D9VOf"f%ޞen[ ?P.Qu I{+p0r{ e븙܏U?dIGF^U:P \{=5U~ m&1 킸o|rb*r *o⽥8֫9ԅsu5.y\8iZlY,$`9gQgݾc^ۅ"ћ|̨\s1 q IJ{58ݨČUU24`Hٹ:H *ؓx^gFuުO/Рv`+O EkJ_4CM:&[>"wIzL[9ϟgz<@:?x!s쮃:ҎMLDqaBG}[5qIdvǿB7*d 0^ "<3eok} yRĐX=*"(Cψk3Λiv1\}eK=1n%{wEc'']}5r,9m5M'W:e쁡f\|/F[u2HJ COl>&ɴխV'yĶoSS-)tv n&ۮ#Oܧboq_(.IUkȬ'o?,*emDf \ѱBJԩHKxv]v(-J;D[n6j?Q:u 'W^7v{EaVR;>MW!E`5˕P)"q$>gޞ; <Ku@ȝFҝwݲQHe|bPl5{fղ(32(gRPGR\ d\<ހKF˯)AZd}%0h̉bi 쯮ۥ3Gn8?l?jyDy$>qd@eχ㗉Cn@]\O5X?z0 dQ7^*#ZZxQ@QX~'&cH֔w c&v.2O^S=Nc`D' 1˥50j;_JBs;[1y}6sdN@ީ=\*f!8Ew$q.[8cL}(ʇ/bWGKI+S6xSo0 5_LI̢Xz l=fv+%J_liP$ovurzf\=R{*T= !>"ZK8N|BS|h*f=("X eEUMrFfT/T!5x:sU-w᩾Ώj"lJPБ5n%"zC';) q~Nwd' 7d]VϚKUc??;9$l).y( 'k2˯,9of ye^4iOv>^GNB)[<[t<|r;L Z"(o5cw_>.v݈l5lrHשk4_ǀ0eg+i0YWՆ%%a+-π x? tky`ʫ %pxlP#մ 3`P0kO~E*C;YHA`ahkZ/cqX/rQߴrN@|$f?1cj"]Q4 N56rfP)',aFU>kR4'䚸{ʀӧfc'V$&>y@5hxv_l@yժw?I^K򾥭Cj4Bᦜ͐].Wv#1g1a.=]G+1;utGfwڒT")t&zᛇ~%1tʊf"Q]losJ9 l 1|%$gZ<*\8{I ⲷ_&}뙌<%({F+urZ*AJ?9}7Oh T.N/78Qa/ѪmLؘI~.ͳ^bO L Rd>TZ.L L܌leEϡASs-C=IPrd7Nqv+/_=K3L='$Gx/Vdh?wJ^9jlm%wT]4d}8`TFđ@%N{y1fnB=kTη~ ~GL`vw x4d2^}S͖ovb3Y0n`:$HKKhl7:ɤ뻅zT'@بeqmqOnVXj;HAQ0@ǫ^iSR|E{ЪwGSxGџe44is= 6}tu_2+/cseCc\s^i9KW-_ Rm-H>:!ll>B/܍1b!څg .ZK9` ˟SLD)%Y!ն+Vfrg]i@ b>PRHe>!ى|^L%\2_blMѳ)@pƨ: 'S tGQ%8 \ۻIop^%t3Akn` O/ p5 r=O/$긲Ewlj~TlH+KG3Q&]%KpM9[d! G HucϚ.0qW}Ӝ^deG?]ۄw+,)(2VƭrܿASSՊnq[k{Pf/I/F\ԦbE>,=`Y/W|TjIPQ5n/\rkGe >>~?s\Dej<׺ޣ|a2.BȱB,hCiJf0>z̆`Zzx~׿ۍ[nc=Iq7jL˯oBh^2ы18y;9F5(rTH#Z(B8&gQTdURaCa83+6>&}Mto@l EQ9E9- ť2_͜hOM$:b\! 3i؊eް|.ַT z=_ B; 'wHm{dzKc܇:o$&uk~*hAFm<0}s{["X1nG"kv+b3\&Չ%-Y̴,[-b50y5{i8WsJ##M97׹Fn1tg{OW"0/V[c" WvH_NR >^8Xӊ @ytj]K70 bjr\ )b qtxZȔ$OEV_؆L.6OAj!ѫmhΗ.2x.eߵAH R$EXwQ]ƀP$lhܧ=~㓤d`֡eETe:+1jrSw e(ǶQ1AaΌ63Tl G=9I~S ѥb>/pRw ޲_׳m0a,菼M._tw-e!hKLQ`!s払'iyح_)Uz a pט{Ku'~Y7ٗU|[ປkfIQŐ8d}FB:K܉4PH 7FovjO%}p)< ,_h-:uTGFNwgE@g6E+K3lŰ>i=KRxh<5s 7 &s(֮BʶYE, p>.R":Xsd  u3= Hڴչ ^vI.|1$[BX=z?CALaתp}tZ2BkvUbi9c0FQ) >4[D ~|GW:O6K1v;f V)^XU>,)-5WtdX;? uvwAHK/ -. JwP('Cw}W= t}L4`6^IävwDSgL6w/É]\׾DJfGtĂB2GYwZŖXӼ=PQ$)c`E;TxvCqE7C.i>qŐuhz}_ހ!xSɕ5&ޫ, X\>"DDdd"l&>0&Em.:Pp{µs1]{1—e4 A?h2* lH]m~8ʀV4&=hnDX 0s昗go.WXNW @9o7 ǔ 40"%'nβ;z鐢 RmNP kP+"⧃p 됎jr qi'p֭,W-sbo夯jF+\*QTڡRevzԨ&r?G%9bV~6EThjHKaP2J5[ Đff|ڼ2ޥhkWpG<ծż  2~֣-v mm:b`|~hhHܔ54OWqh!û)];LyrL#nŵp< fwk]sI|tgOK?)[c?r7#Y&"3( '?^jt'aݎ&%;yQrPĊwy>q"A}y3~B' KE;DY]b?ʳIw5VrZĝut`|jpXrHX h乪Cokj1, ۣfJ`+l6H|ixvk&1 ig= rKy߇(MFg/<Ʀ>C6>V>Ap~`M+'-WE4K*sOX"8GL.tyx(`@(u稠zxuvoy&g쭏oEAx]y ':úeRKP}*B x r(E_ \Hr] U?%"Bdpyr"c}!ӓ]wo8p6cOܹͅ%́L(ӰL#~PyU>Lco,[6]86CG j`qu?L9z?2SjĨ>j[ZӯUp`^ bE} ,{%f 5,e]˰*{0?*>I~_44I/HbOn9\jk|{&N]H34^gϫ8-6Mr!7j?Z}S SeɼzJW3Lb"EExY曂E2^PFbj=xL+ҥbvPOG Ps_>bΡ@ \|--٤4)I xWJHu]:f>&̯|o n{"alSƼRF=ގRگmcYZw] DZ-=ϣAܻkm%OfV6A7,+4T܁if =Ҍ]|a=)V8Wo M,soe(Zy]bSoI#G[nOaI Wo)h })P і L*>}{ԏCNꞭAݣ8O`lY}*cP_άMc'Ե;(9OS3~T`O,Lnv3q:{u&O"g7wdA 9c(@Oio AZ{i$l&7@nFÝC{O_-6׋t*RYaI8KǬ"3(ߙW1Ө7T&c3 1o.wsUs> _ӏ opS}TĐ@fXXc .SM*fSZ`K)uxaMw=yum0)88vmL AC~L>I@AoII[Lvwǂ[G@0sČ &k/֫ɖ)o}D:YAtǥ=by5OuƤ_2`3+q hjLoa\ИF4 Sq.K^0PJŃ"^,zReqΔ CYW EψlWu_h_I(qMvoz9mS >9qC(:!)]Ņ/YLU~|_2XjE@MxG&,]Aˡ'!h V/Jבxeḷqn]A532, 4VуY̸q{I6ϡ1\Am҇M_nBv̷z5(ɷ%bw, suF^[ Zq+_>4w?Vbt0qÜg &=\I1d>Yм ߸/#M2K:,C=ز R#W'BIG?̩xrʅ,,c<o^BWSyaE8ﵧMU tc+JQ}kVC8M"mIuO#[d畸WcUjpKDlH lşcpgm44tUR&,=}}&@jxՈ5/A ɯC~'B|LurO%wcĆD@2h%s0%pځIJo?k)&=*?]_>ulG(֡ɞ2}$FDmnھJS?5JO\cdJzs8*^vqWHxM sR7YMumdeіN|eZf`^ .x_%y24-3KgQVBoRj2 IT"oZD?S `OsH^J|k2*>K59i)%f#CSSh'́ I}c Ȕc%Rbmcܯ9FflI|F*J[chh 0VD#XDɼߵmUy~YĩfHb%AlCmQ^ pNv +um/R6CZn,=n!K]@r_pIݱ<|R*O7yFuq{=#T7me<9V8z=5sjb*b2(&h;]d߹3wk w\./1'~eا}E).W V@]IՕm f fN7bܵ6 *$V=q"HW2=V}_c|ySlƳ>scHK6ԛm$ow]VG`2nvh* v5MRqXw(ŪYoWTRG_& mij:f[0ڇ"i2WH򮧔sl-et1@*u>(P/&{ЍeoG'Ňd8f'bui"feK#3jSI2Q\n<<V* --1/ۊ_Bp3ZM:d\d 2Yur9R ϟIw({Ѵ$Tҩ{9 * *Ct~^1aE4oCZ+?aD|V[]JhK`eĮݴd.M(X)JRY:Bx)ѕ u7uEuDY j> n-'MdO\zk2XxF=F^ӓHXjbDjd]ΡtX0 ّ/ω[2`>T&Ԝ @* ,@+:>7d9 Uhl7/_>\:K2(2%ZJBFwF$Ƃd @Up-&B'zy3t&I|NG_ La-ϢLOu Q{YZ,5ìI3/TMp愧IU>VA?nRvȴ6@ȶrqh켕L= WgZɲ0-gPp9pQB[]ǢM(Y'VC&eUqgMqlʥq _z1Uf /Yu_1SΏ8$7Mӯe|p yoiƦ [##w=YW~:n$?nY^yL>4e)"(A G},DOVמЀ&)R; +lq,7*\q$>Q:GH濁\Daݩs`H |P 9^2HMd")KCakwxZ%4z;GhZE <!Q^CaJz (?^(+UH#VlHo^oא==F;tU}ogV}鸕 gN8R;T)]53QcWoKxv);/bgI!|0Y^_9 6<pOBwx{MN\9|,&޳g -, @n$"ROc!wkĹJ[0/yq%G_E]VQo|U}y֞_*rN.msT|{I:~dAܞŞն?ڥl(mڶ'YŅ@ZRy0\JgVkn{办/u1ndjvU:n=x]ʺ:jԵKy</[RG2^Op6uXj.h #Ž%j5Ye[[ɓ-yح@@xЮAjKRk # jl Y#xHV!l~ g0P2h8Nޅlt GfN R9+D:鲸{*7Jț](}}49h>xӧANO?Bx}+]%5/0L⽁}9A?'Ct:΀Q'C\4(m2+͏.+h*^ D9=z͜iqI^mYvd`C›d|SE49q\~ ~^Un׀} Ȁ{4FmqL]K mrv3q\9{Ҥ'qvD5M R\?}DїRy&[Qbw>vBێ j)NIyp4 َ `,'.m |gaL⇱{ No g:]~ 6(] C-@y*YKmNfw1a3 G:wJڴOϽDXxO%n˧Q³pE.Z5.z(X; lIP& wIeԂj<DCaW}'"E?һHpsu<_AV+d6fms ^dZk⬡lg}^Hs݉8w8EV/)_>Z̩->XzʧNVslt&z?n[*zgkv/91B= e;3l@CZWH%mTe6wHP:w߄}6Bia$@FxlOQ b*;Գavf*Fz2j>79'۔lsdEBmc5_x>=ܵ ({D%xa벹Feo\b}4M=`L*/1=Shh,dc?^Fx~we5˳8˰ie~wh*F Vngw e+:<Ň`$*k=h9VߩUFp39J$J)L|o@ϥ\vtuccpqtzCLRﭬjn( /hK=Wiq! znkM]<X#3ΓhA @#=ӯ QB_4@{ K[UCtL*c]<5U?8W_gw:⨓}rE:ȿ^S7JA%jx8oY揞&($RہI 9< 9Arkx0Z{i{ۭ\>7f,iE2T)\ɐ{¾ kv%şU^0AackW3;iBl/܅%$˸U hs*>1ʂOR 6}OeC1+7Tl7<նENUɩFuB*> > djg- ^"a:GDSV򇧁$ŴDeV5xhxf<}&08&[` XX61~I$zX_zKdnwK_TAJ8\ufw<6b~ RŎap􇩤۬7Pb' %zLu:ve\ίt :0>jTg ̕P0U?\DDh"L]h+7) p;@qb*^z3䣷@C rqsTv"F\a >@  {y;%~f?%R@~ةf% Bt3g*2X/nRNl. he/ 7Cbj h<34+;\C Bl n2Ib6sFn (``͞ahm*_9օ2nR7:߹ހ>OһHI.1 oVkBθ6P5*zSUQ&3Kvmok(9MGAK.K;.*]0JWTrMzN#K@c>418cY!5?ǂ̀YWgT]3qBߗF4^S85ĸ4|vMdO~d΍_,G/j?B(‰[R0nNbNY[6-^L@WW{~XXEFya:FjG?4}P.A(Ԡ#chrV4S=Pɥ ypOLڏhȸ"1QrF=B Lb/#WXdT#3W KLV|4r½$PAFlFgKr5U|i`@soThsUWoPbl[ }W..eu 0AtH֓2i/2 o.Y|ݸs/<kAhb~EAA5x ĵ73p}McX6[UoiT6,elm(|EECTEJ_)qsVA#ymb_U4R"".r"^#|>_)M-lO1l z96> cYt};6s4 EY2/½3`8tN!JU'r!QA`D4 ed1z@㞄$3\'1 @p"-#*"$a2 2 WB"p18 N!fhJr Mc?ܥȜ5RM  lFJ#8󵊊5)r@Rh 2ljq$d(B' .D2ae ϧD_ fNr@ s, n͐E8#٨FpFU@IC&!5 $d‰_sxvG%o}pSK,rIUbn3rłmWᐌaŽ˜в)לJg~Su/aԝ TW2nt;ѫ*/7:oȈڥ(ai?TdR"fS(cMf*nL!%!O]ɐBPIRi d0El&_ԯ&! ;?f"rhOWe8~@d0&c* ߩ7-gR`Ab ,|tSlCmd%|<^]c! ^]Ƅg"An3 *Ǽf}Z=`jֳ`.7#Cj棌S^+o{k[C0z0xsJprW{^ V,0B+c@}'M p t c"Yk"vONK"Ҡ~_a&f9СcBݞ3;{ؐUx*TUŀ_X&1el&^?3FQ_2utKt`0r3C2塬ZHĕw|Yq^dW5vGu~vapm'+pz-Wڶ?L@p\bM5 Jh>i0}ӓxI1egfepjeǻ~ϼV{7@"Grv@X/oȀ WİgkօpINeڶؓ9 lߑǿ C 2@F^Bi%F`yU0>0\VpU |xDHb^勋0ퟤ@0K] 䴔z<ô`'(sX W2W6- nGk`딐r֣ʨ'_bg:?әiaE.=|n1ꩾO |ɸB~:0v#jx(Bc9t2Zn?zA+$x5m0](v[Cc]Tёewx6QEw7I(7O\?olͮHI\Z$9QGjk-Dأ]UUNFLM Sef*ٌy]% mfex1oγ:]q8]0D+E8?J̴y8ۢ8K}&l0: ; , G@u7z~:(_3N6DtH-";mDQfDiZ <$K Js?࡜Tz}ܬ@)y>A mpd^d:+D#RKR_fI|\8|M2 |gK:M]bTï{^evUUҥHm)Jgeɰ(2K5c`Yr@_O`85R%ܟG2gbRO@x=A%}^^Mڦ@ vsɓ*} \QyvՁ3B{fp w [ .jz/ZׂW6TQ+8uWdqS;)K08ISQ? ~#6BS;∻l]|a9*\G8ϴ+M{p8Xlɨ!M="sF߃mԂ# : G P),D ~X;z$ O\vi6;d߂缙V"ք>|` Dso|NP|:4, 4,l<][_ռD'ImW% 'P_R.DdXf ȑ¯}?ҺhWE_<Ťn ;8_?<_]=uW8şҸ]eW+([y‹3)B` ;~tBC _bB]ìܳU` Ā=3x$?m-BZNX1P, b33ϊ{ y1t3pC̘*:r&{Dx-s,3#grc&xɠ A] s=|؛$x|r 5tY'ͪnmo7Đ(AcoIGE?m%D-'axV4ƾ8ε]s#݋qk!,*YNuL|}~y^8Q6x<ηw<~ɓ"G|WɖCm)wܔ? ѷ$p+^Cٱ6M4@4h2%Ǵt}K ʤQE,ɾ $%%*}cbLZ9U>FVhR )r1QW.}}WTԍA[-P[ss!Zi"OD 5+cj9%KX`G`$9˻V:X$dLlRq3(w.UYG*r^s;Qd`q!y;a>Jեgr л"IE!l~ bt˝H7!4̛~89$V%+C=SR բ֊XuP3F^T'b{"TK*9/n bMp‰%M)k^?n G\`IR(ߕ!+oAr=,Xr򋲼YZPs5ǿW!#W yFi9^ __=̹?qʎIY$] ͲvӠZAXֱ a(k&sX z ҫ0 ,^k)F Ȋ{@+CDD+[)/@W_Py\.\?ӹ4[mVO._j/)FT3B-W}PҊs?$~R&+{+\k>} ~N?wd5*/zFrW_SV6L=FUưjwԡ:ZҏĒD^[2MmiWfR 6 {r=n-LqFfB xgNߒ+؇٫<]ȉ!BB ъ_rrhꥏ5s$t^'m'G#ZTJ^=4H Vy[m-%8]ݯx/1Qߕga:GR%D g>Tlg=93$&9W2RuJ$kkX~pnlf6 % Mz9  }~H Ү*ZoaoAcKy| [7ꮸZj[.~Z Sy!=`;Y4p8'aNƘ' Z 5җ_* x ~Bk0ǣc`?%^QD=?1,r=q_YikgγIKh rTѺ[q {v" U!n9M8KOT]ύdxM.NޫaawA-U@QߎB6 BbZ+)Sn [:{P,4xgHѭG+~ ;h8J Ib&aYw4qrדm<TMua y4 jYw @ %uۯuk*;4x.Gp7Ň1U8?*4<'!p*_-_O:_{5-<#k)`,|><j1p'vEI-^Vǃ*ʗ/Cby0dקKW{R)Ž6?"ZxsD? ;1:aXo~a'{Ӯ~A/svURI[QԣR0 ٿwN ! kOa(Gbn4W˼m;;q'&հֽ<לϊUm6Fd,˼9Ò!x1!<,VK%LA| :5z,\f~ Mx7dX&aTh)w7xӻPL,^OrlV(8: gQB4bu +., nrVLCNzNJA`Hzz|Dm32qO$AxkA*)AE<9'7uxԕcq!d9Ė]yR`d蹖'+cvxMց^t2{*Iσ_;ƇGw_+K@]#s/yq]*(=\Β<ߎ9]_/y /uHH4Y KX:դg נ(ڴ;#a*#R|!prFn.~>cxHٰ2I[g,!ųnLdDdUEw_f?B(麠HHpRK=5)0@9 R[ok7AY Jh*|uMtAd܀;y gsER-?Ync]03į'Scr>2i1j#ڔF C#?ȍ.`@ l1/˲P=D#87 D>N'&oRfik[ܹ۝NMvrĹ3'$eiRQSDvW4uv<*h?<#Sӛt2n"'|R?.\et oAȆONjx`_Zc$eo& HK@JGgq6M(Dz9;k;KŘj "6垯ԟ0:F2FhQrF ϊߘ>R9!al L3fו[smJfkf"9D*9t(<df ax 1w +4ovJ\G'kD]|aUVөގL審nr?@ gNuh聛,mhr_>I"D'lɌ-j*H﫢Ue4'n3%xj0 ͐~nhJ?7MB,/ a!50  C+%:j֌ pk|?i:>[Q.~L~[8¨A!fj_ʴkvR)0\\"ǍRR Qo7j]g%6t S/;65PoaZ\W]ӔzpMJW%^+~L]*\)FfjY2BȽ9(E[YBcK6 DY[ؤ-A\Ra Hld}颒]^Tā%uܽq9zfXxk4"r%*m}D}}u !fH?Y1[r:VT+h13Ӟ;7fwEߵg=GCHcq\X Fv^nR]$˝o܁LfL 5 4T)*0]K.)I>Arϰ|͖"{@Gҍ2U@< v%䭉>VhRFW#-w!S]&v33Y]=Z}_ِ 5N*1cBڟYީrISWU,!-aſ9NBL 0{ɯD_2&8XhWл-~?r#}0366mp62neTsWUWT0c*S~CKy'QT,eP }Q[?GV{?NVѠ;S=nTtfƽy9Dke\q.=*~$Ö5ڝD-?2c}[U;o(ђXűSQ8XuLYlpESG ([7_-s5㔤^M fFWr:M/ %rN1DLsWǫ5L" 舐x$MkDTf^ |1ijNu==\Ac}v~g'iȘw~cSktw]T!}*]%w79/ {|4V,P2iC4\H0G$1<9@P sp= Q~R<_"ܞHu.KK?*pYR:kDlrH"8$!cQ ]$t10ŀHi]rӰyHkr/L ПB?6NǑB_G(͹Za @ng%FfW>˗NYe*wn):BX.cqs՝% Zb3ҹ!ӸX94=(di(ܑ+vY#QtOGnX=e2 V%q 1UFgԜ5+~%ԙ݃z1{d-/%ݘ;8hPcXz:iGN q V8U;|@PP?jc1oPv٫VoGBAD |]P "ުOdWiwaM5N_~\P{0J7 Sc=Z-k,Ebcv^/@^n eQ]Ov7:b'#NCT/#J. g{p Vx;QT.2|<*hnN*Ğ cJJkUJ[<_#xul6(aL5ĬEsP]a<#jycxPtث"Dm?-q~k}q y~"G;yN_' FF&r5N߫P_ti?}fx οoBIJ-&a+ðI2Lar Z:cˤi]xGRoEBtVgRxRwԃvMA ȸx7rlɐ־b0)t:o D錻o$}]\ҵ3hjgNX@uN_{WN0H!8 xـ5ذ&$JW4O3Gh=%ϋO<͡Q+kN Emri@]ɝP~qп)CeіR`m.ѠY,lȍ۔X:U`okazK9q.n'۵B|ӿGab%:fW| }WzvӞ5;7YE|bHQsO?eN=@oHYMj|}#c|Ҍ>o+m=V٢ I?~96I\zfIAY]MSWᦿ̓̾An[˹jEp+/AY&HY#! ٗMEd6g>K_HEBʮ]?iE6L8&zœBOMN~s\\˝OwA3)hgF|aݜϗ`c[!'I`r~vD7R\ߝu#[K@֤ufmtN-s?WjwhA}4&prlw*X|:fTbfy>zi(?ޏ,-e;gh7TinicXdjAh:PPij'm uZphb5`x_ @?=JۡGK{W=4)8 3Ϊ&z{GAX|v YvfΨǓIu"*O ( .> ?#(P+G٦m[JV)ReҐ#/W^Z1òcw|S8'( A7PRel?=df(x9s4K6 YMh>fjљ| *4ijB;`Dm?kpjI:xsï&?$Az|Wj~Ox1.>` 6)f]wgٝf3|m GZIdY&y 1>δV; SaSgEō稗S!X̶x"B!k\) R93C#O钄 li o{t}xsƗ&5pCO\s:F[~@+mKfIl J ՓVY,ϡ /~r&!ԭJj6TN jY$I%#:d*z۷^h)V7k){/L`}5h%fͨ.x 䒨tq]NtMicv b Khj#ίt9-GІ^ =Y"Ǹ2| +B7sҴZwte+\A2blp>~҇A$JK g CFzJ"p'\Oд,x05@vy9Z包攚ggkS.+;HjǕrq鏨1uS}_0wP"Ԓ3GX{m)3z|?_!=A0R߈*q}~+K },~ť݄}2t/B\j[2m87EyJ:6v560HNJbݦ9ckAREz>vCAJ!O*[ 0x=4"e4 `AROȹ"H<<VkG}&aw]VN9uPyẃ-VŅǷ!ȉFA{X#\oX\`FXQaZЉ[փ\E{QӲ_z@yvW'{3`B\E.z Ԇtw^t)7ү:r|$ةMV;RbM6wTݵS\ -_nn6w+r442R>kb>7o"TuBG^~I_'4lפå9(5Hڞ4N`AlėWes Mߔ7G%<˄^F+u>`?4|YKf–SNDNӪ[NB`8^F}6C DBIWaC eӺQ(#+'tڕtLcل[3"eb kU]WQ1۴-A7‰Lv#*aZқMJM 3- '}N %s^5,ޟ%]6-F2]|!>qzc:slJAaD[]kS\;{P(:$Y`ҷ1,f! VeP’bSh|>ުQex)xGSt|WӾ:! @:3OSRԫLQ8i&K1TH#ԗe1ljBaM@W>?r?U{rE%mkv,iIEb^m$i^FW7Zk_]{/UdCd'7s}87,0'ɟm\a{F@gV6U(G݃6,)r,}')x+Qsj5jK=y77} )E$ ;t4> #h]^fiQkǬyqNܒDL P9XNeX~oE, W?5"uj&_}pE%! y 0,H{lV|r_nέ׸y:Ka!:BS&~9eH^O ?ラG)8s~%,L3~N,Hn,9VzH>$>ÜކkdIyq8'ڮHab^DݔJĵ-Av'`; oGrS#EΊFlfbTAה`+%U fz-nڞOaZ>ʼnݖraoن0!#b5!(ٶ%7ND0P|6OdW]GL? lg|{ܡ(F?38 j͘ xuЋe慥+` SE ЈdN-)KʎQGхH>\3.zDeVLC|łWMK# :gje3Keio|kC/Bߗw1Rڸi}('ܐ7^vcE^xi[:<wrFM+ܗ?y)q`m]1Mvh_Ҭ=5̀>-~w> %2`erj8+W!ojS*@0)׈kq;QV jm6GƳ5u*ctFRyBGAK/D]X胨oZY ߧAju"pkJuMؤ?RϦ9F(XxTSqѦ)4&.v:p0h1R=U{ BBfZ8/Sifk~B}(0#'BURV{h*!GҐ{ܜϡ6\Nq.W{kWwҕ)=x20gE7À:i{;JS9I5\ ?=?ro$P)4b_j)2ZX;>YJ rzԂ#z"SQ|L?7hcj(DiY&N8"k򃌉F-H-hܙwz>Ϥlrt$H#~d]"5%IrEѦMc2|)Z#۬`p`ЇdF.oI{܄;qZ^uv|da L޺ +3xCDeSrkq UE*(bz읎(fKyP!CX! T-ng>`ȶ7KGcyan<Û) [fWyGC`5"@WP "a /4Pq׷ V )xα)Wea7e =gRAZmFZc%n\{> B50܍T)Ex~c+0tlFs^"PR:Еq55y¾60TfNYC"7C\nݧ~\~- {v [+T%cM'S)hكKީ#Wۄtls 'N&YeIr,L"R=ˀ帠mQhE=br^U1["͢. mT:4?f >^^ >\U7voWφiː.U|AW_*ƙ*p/ﺟq#m9 TJS _Xdqam¯|E.'{AKH qGjd{ǭQۆNx`*:LӺ [$$hSQfehcErR؆h-nގηH*Y+ȟ@<2Sy=U[pJ >\+[pB!%? .P:mRP@'qVƐ^qϮx-{2|к2|r/GH/ ״ňiEɺdhA*PbEew s'> s%,b˃NS0GPs~lXAD ^1j\͑ӎ4RG$F;m9[*(5cӃk.:rO?Pܑ% 5~V,)L:RK~QS7"3gBe e$[M9(w޾qN]eܗ[QEqow7< mMGKvwE>Vh8+[{TBF^&Ռ^[m z== lSv2mc6]O[p!ѦG*|ӏ=u|֦6={[<\`F.5zPa~D6&CLE{<[r ѭjvSR9,cs7 7y)[1l$fJ4q~D!n]Щ\KI3vro'f,x*ʙ)R~<"Jb@wmgu(|`D֤UȆ3"WK%z(7EpkH,{7#TZO>MJ(Yp\HΎ/DGBH @iV4x =zqbe+6 htx1n?a7%[;w ,j_#e85%-ONZ!:ǀc,lapuGiLwV% ՘S`B'O4Zx;Wֳ" `,5,C G]uehXAz[Ex_Kκ9çZVǰҶh" ?^SեQiB߽Y9__n.vYiG }X[d\$B!/1_UpYB~~r^B S{4v>qt{y[XIXMy2|ȣܡ({8qd5ufIࢇqn"*ya-37T*)ob60X0ƥ5n{qnh_zu]y8Dg`EC#!^1=F>+j1 Ż^V87?A,I[Es;f#20pG(Rn}䟢Ro7?sS akRn uQnTjsxRHGO qywj4Ο a:ǍYxA=BOm혯k%0 2xxh$Ka\0Q0bis⚵o<‹1?kat "7RGօGEPK~tj1>_c ]YAZ*=f QbS<,+1x>Xu$!r&OҦmJU$;[91 ur0Ai.1MsEf-\\Oez{ /Q #3 ;N FbR, D9X7Ca&0Su&n-3~< ة0sԁ;Y aW|`&_-B_$VVs 8KȱOM ]EtL?DL`[Vˏ@Ĥ>tWx[o-Zj?B`Y-tů.Vgݧˈn̐~ V GTD;pg] t|sZn<-w0$eks ]L/#y >^ wStD)kJ"74(~3 (gwhx/HzGd]2eZ*Þi4~)0{'xseppww{SJ̄.B-g\5.#{45ΆdR`_x=CsY*<`N"<a>Q S4WOTB']kuPԄ[tP0tjinף۹]m ō^vrqlxy2Kc;Onl2)0|ʆdoB+% '\x2,bǣ|l  >8VNqnf2,@mA6q"7~ƙkvr^Y7qp6Őa؆~RY (7Үu nKw]t%}56=[nK 8*"CyS*BqJRXz5.oxR?許zE1҉JCbUR 3n g_*E\iqI` {TGΘ/i &5_8@t=[j2R8Ǘ*tZĕXdIPt͞5\(I̜Y}r07c mG>CZ娂*y=D;5(JdɮdV o4^ց 2eq;r3Tkd/RXOH\۾WfE>E8u``rA_U1M)e|2DW/ y_?Ǜ!Ng&d:m^둆SkBzY_/$lSIDNÇy1V3k:r_"|K xF!̜@EhH,}kdѣ",EB6J\8e3QidƕO!q<~:Ţ̱*۔)1g2I̩hoI{ {j[z/7m9)4?;p_KtR§[{ؓI@vB69*!l`bN_sDK3rxuys[X\cW$cŬ$/*SVCn!җ$,S"#"5Gܡ|}D۩݆ݐ #dKX3MC4V ^?_TVG + %:PiUvJc zT9-Fy.6XE8 P_c٠mu'_jOQu[^jꬖ d8_YyF^7=q D8X}tcքOј"(y;͚etK1HdKPR >b4 `=arOƚ7\H#N^_n[RxPn. |煔! o܁A8wv.}tݛr(J†-VpU0l ]H69Pi5M37{ყYjnF\WM& aq 9cGdi]P0嗻D~ji).Fŵf3జ[+|e䖋ޤ_W&~ڐ̒(0)/-' !N,[Z`'&=]{lG/"H$Yw+p!١ pG_1C,DTPC$S3Lx O7z.Au %-CWW@1V8,R<>5Q*;#[)ICLI"gUzc%l-RNwIPH^{?zHxt[N_m&wavܰD&9]]p:(JJ@-sv!AO%apZ q=H;U1>[edbxmӵo<9Jv"s xs&pbhKNP42lδ1':lJT_V rGX8&bKV=Ӵ fCnZ?CŸrQYS l!hq"CJ%r]}uZZ=3eQQW \2{5 eg;?ңxJG`>kGP,x܏7nQHdVRY{brPb |!/Oy,>(zQ5cvKiOBd - lf uh+T[0zf81e/vugE:Q\I]*6b@((J[/cKN^{[orvM<`BzR81 ;2vlE2"H>~&")ZkdHA7p՝smVr|vNp?X)hHYm*4N=?~+)TغW@A doiO_SY;ԐlѨpCwZG2.&1ThO 1(pvs)Qdzs9i b˶XCG~$9MTήv(:R'f\[:N]tT-Wўr %:₰?V ]b6Rg!5 |Aj,I\OɄ=fYUzie{=zRǕOՖ40xQA1bwM3J幛$A"NN|ظA2isVI1=3_Of),[ @9Z30 A45r GO;6`ϪMo" 46fEh+^(ҫ|c8d!,P$J脚!""}1FsF`fNrҖC(tM oԚo'F᧰0DنXi?\@. D{WʧeC^jh!=Mnk_ )L 9sg BN+hZGF]ߣu֚T/m/K tth8d-47FӾl\StC"At!k :߶g:Wb$N7,mVr9*] 䓼4ۮP]hpagQ@EjdHR,#o<]Ʋa@aS2n8:8W/E9C;КK]Y@(4-vz̑XD=p1Н:N^z:(>l>uO5%⻿R>E>$Y' qX0Ak/RcjS_mqlJţjXRȬ|ێ1FoSE%Rxbx#9-xAliwSj]0 T}/f1,Z ZįpSy̺W X>b/z":eh@'&!6s׷hZ!qU*0/(zk +qvMxʽ]3r?$e)*13=9o-Y,TJd?.WލuJ2o61$gy#y-ʰOz3*ľ9<)l1|fg^odLJW)`[>(atҋy!\ ֿMcMɍb _hgvŵpHo8V7vX%W/k@!ͭC@IXryCXx,%Yh?K &u{޵ΓiKx-Qr@H;lW@{%`޸H#$g`]u~aA^嵞u_KNI _=Kl LIwB?Byy%LX3˂EyW~]$TاDDI2Yꈟl >&ߵ-L z;[ٓ6trc1˶Z^ggNnOƉ_ӮI){&Y"sTs}  m܀C=(p ,("ct#&9@x~I0%F:) R]0a$Zo]}X1M'Թ L C7$Qn1l J)oGܦwa,9.WyC7~L7lNIu>1`eDo=pW)F*'B2ZL  AfيuǕĊR늆mѼf`&jf̲Tj!qf]1} GAނA1m))B8ڡĩFr5 D$7xpɎ3Iވ$5z"f!XMse\f$nIѰ|LHpWr=© oLH57 %mpj)^(DŽOiF9)¦A.F'= vOY82eXIu-= : GPa%yeQvA l5ks'DEYv\mJH&gs<&I3Jv-i1I~K{ #³rR==r<Ngt>/_+Agq4 _/L^"/#/6)Sw^i .bFyo6a5En6a\ 8}@q0;yZT*a&14'N-QuŠJ*<ЂXl(?YtFXW֦.z^P+1߭~߯\39FRH]zUe/I$|(=}Wv,qea>NonZ&lCc$N݊*W?1a˟+Hi;j۟TDQ,"h85{RI:zJHZ$V gm\+ e jRqA>smBP 6ƪKI"3+HBn(-JJ8̍K  [_@ 8^xf\,IY( CRU9z-29#%=PT:N ]kPqoQz_ H<@d \,Ѱy!9R>vkz¸\.emPj)E eJ3DXKJD`H{<@%d>8cw; x˗c t(~b.X]YE-!aAT=|28Av@5^4'&~'i9 du 덁vn\fD׉hӄzqI`z~5Uj?ք)h{o03 GpO^15pbVۇ'ED5i(݋'_OL(Q?HP21(QVALHSi*<}ݮEǶ]F(Fm,cq#IC3/ tĀ wt%~3 gW]i~Y3D1CɁ4Y7QфT8[z{2|k Kϔ='Ko 7 IQdKix"st;ly YKND| 5I_7R,ȺCCc2ĺ&\=LONW\{5S#%mFcmto6'<[ ʻ"z$ T| W"eYMaЃ6`"lc=4m&p<<y?TIQm.6:6 vJu 7)'5͸P`4>Vs:'hs嵎!0`2j\]uJyВ־Q,"[)u+gpy>jًB8Hꔬ"$$K9 )Mx^\xb=,"3ǒ^ϓA^ϪCA fh^s+fTZk>i}O !-=g`s9&ިMd93 m9b*|]/ .z^+D]qP@@[tJH\#r|C4^åsJ}H]oahcGi.w)*zT(mbl2 kp}TO)A6{Ii.UJyw> 7(O5{I@J{ZH(qZwg]CKw cXW[T/~K;\Fp:/;0 ;;fcs r [ng&H/ c J,|9c ]zOe4f$}1&y$H֑:M=Ic!"RvtXM{D[io9j tZWej") vv'pO}n$\WMm.ruDkߢ7dZ;$\1BZKv]j O4[@<:]CTgsSVȶRSKz)5Gݻ@|,hx#r-#owCOcO+4  ^(M쌼؂Zo^f p6ąVWuc,<;F\x(1˴sFY+_<'REmA{U4*xyw ?;|J]uЍ4^cf-/&&u"yclUkըc;>f8& WA(.'x>$f^ 'L爠%Md~ ӽ,0mB BJ6,Mm$h"Ӹsnl*@-Tu]W^YEr +:ZvL%&(u!0J*OzLHs s-`?I̋M>E}8-bŃF`U2:8z]!6lw~}X[. (F{2Z&؍ps>9SޟbQ֯EHrcX媧IȃIhoa\2*6)lCɉZUS%y~M߫xZ0+o7ZX@\b?j|89ռ#bjK85]9O] d~H5J0݂P3ۘ^eݫInu}xSgsdY`6R[f'|FG.?[DI 8:F0FmT noS P]Tq0 0ɀTqQ)D`i{FHϖA Y8(nuB/A%}R-gj^Espv>20;gSu&SC~ hxPC:F'd{[mb^C@Gě a.b3 G}U"0FRR)S! W\Ѕi XV:TРO3)@ ƽ}==c #)ʙkXʈn:\:.{|qzKKx]NI׏.P{۔P]kYoâ05 *2SkT1/pSBg0?"ρk.%cЎ?0 =HDvڏ /~Y]W+`v'Vl0D?^baҼ=y@Ao(Y}yQX_?jQji>l * ROC 1%tt$e=u Ju-֧W(7ſXL?h.ӌm\Q5/'T&xhS{Ckkp(>1pW5a^jR=*mKb!z=#0U/H}[sqGmdulP0?:VUu.toP%:x^h>i:9iDg^geۥ$5 *kzhW%0ޱu_\u@VaM߽O:kg98яH{3b[[FK1@)?;;jZ>qSs Jpqm~gͷ1}\?W'[o&K ҋUIiЃB)c#w:+VcJS%(I^2A#=й'ca*Ky)鞈# l7 8R0fvewT:M'}~BFqLN渫|xnSS#i?] 'l]SL/%T/c;l;Njn;\gsI)WnB ^YM, +RAxW|2:fR8uǻeƂ#&pCRmG3듓)kSӬoXS@3뎜~YwCrmyuq;COGݹ3`}Ue9'ZE ^A#&'4Bm\X-asz2@١ Iz@!Rct!4ZI Gicӟz*LFuZs#߯)pҟ"3Jw_ D@rQ0cuXW@ U4(#E> SM:baD8u sFjR~D)zf`Nԩ!0lm Ȱgi ~ -yWs^ ^T="5s8B6  JgctUFA41;5kr­XsH}[;=;i7 lюktԷud2.-ABXq9e_k$"TyO|f3کCyo{A| jEF׫wmlZ gd<҈ IcT~ak^%7$_T-ābO/N9DGE,"cdb%U)YPx}/Ci Ȳ}bpE v͏4hfSS} G>;*_a|l bc1A=uKd0!=,ce &cK^/rs1/9]\ѩY'3]NVĤ6Wf0wK$ӂǁ!;bsy"E3q5gYK&K}< $%>ח.SH"=gF> Med,ϖ,)V \  Ho-%.,@080S÷kP[caF |$hmO74Щ)v"g Ӿ 胾Vw`K@T)ٕ5VxeU[G1Տ\x;nc(\SgAP+@sLEEBUz [>D.b4gj)ŠT(@Y/xg˻f2E@]$Vmi!Gq\}ƍ7l͌EDlNlGM*~;I@"8S//UiXu"a(ZD]1JL.4XyI˜XVߪ $ퟩ=am@j pB}7n@PoyBh\p኉hvǰ9醃V!*b<<07}i=8>}r%r^˻.^tqk%; yazBרj4A1lf1ݓm8Y:ނpK,mw~,:x>w U fJMC'TGlS|S|N#+b?{oZ+r`^1B;=)\ GP }=i"42ͣ:tB&|hM ZlFf0+_NmC~tcepvd4}y:pem3.Ldԑ .bz%5apZ=i߮z&7r1]ݭV 1DAHhUg}O?fػbWߩ=ߢ,=4ٴ{a)aﵠ)o4ONql{ MUj_BU9]q!>޹_,*>w:%Q-J:5 chz6r3g^:1hQ&. "!F<mbAٚB,Д'X}JeGDH3iU!-I'Oڝ].ëⲊ |fw6ȧޚ\E|@]kB ֙υh%f!xn؀|.f4w=')@r7:_jZ[ H@.>H"-z j~%&FiQ( ;ӔV՞V0AB E`M7jPO5RLeRq0;" t }mlPC+&#RXp@ sS{t j0ꇋ5r濱n#OMra">%Ϋ/ fI_3YR }jY OA0u d/=6/{"]﴾ FOUaתQU/| (*j9Fmo D==)ab'KeXDz Y`DF>*E/k4AX}Zi}W.2jG3;z bՅZR(dd'3ZjuKt}3 T6ot=CvdlRNG^z5?n 4rqg) L^Iά6hQ5Κ뼚4"CDO!o3AWh@ Ws' }!CbfA;Q ڶ5,@,R:Z DKHo1QǢmJ)"r˂ւaz}}%Rkg">yTh2^R 9Ҭ-‘$baJV=L}G/'/zC̫~WtpGS{5OD>K5i\IK/rt8~*;~ȾQvddR5qCu4[M*VKO1kZy;\T쮷*Ӳ5џ.yR1㖍e wME@qxSZƵDO Ev^a'&Kd!xd,|Y͛|HtJSqw7cBV9bob#;Ǒ7,G+-bJ>Οe^9:IBx!^poX33U-TƼSh>}<(zk"]./97Ia 5?ïS>E7m( 'hVX<H Z6t}򜖰W:whVk RƹبwAay}L?1: B= 1Z*Ý74IEl P!oZcB\9C-Tlմ_󙗔||_crf]jűɦCS7p‘s̺a{xϤ'tH'j.݂ xk̚Ci7b*'H-:^o{ A8X/~9e4QDRB|2fVC=pC6Qyg3"^-[9\-:;肿ۿ.dF=Tcd u41>8\ȁ[cЌ"*W?+c ~}&!L3_egT=ey7ivOA(RX.ᄓ}-s̮I<֒)da>Zml^҅#VOY\J*Dk{1Y?͙5F67t`6_j65v,(k%ɧ]Hc>}cciS4sU;;/%<`1UTj/8kOb#fk"b/fEPsPìQ{(d#}tY4A?~æ=5dhk a4MJE. YۍݪT ~>bo0%}bE]bDOy]ldA=Wi %nIF7ރ2s**z"iѸ` ]%fMdo턂ArĵFP}|9w;} rC(>#h˚kNP;܄2@"[Sd(@b`-Qe)}k`8<0lx!TbW:,y|:UbPU!'݁0HphvoVp=u <gmZ>|^jyQ=8?z%?Ino#V|8 YL]*uh>'OdSl֞ G~㓆 \]dxI/qp+\`Y)i9PV +xpX=3=M̶v:x&(KPp9V&z3 $'yt{!Uᒦѯ4hO%H)"@{^nG~*)J߯hD޳R.aJ1mK:6quR~E~a\#eC&@/9u^#b1X_S82G@ uR&|~+/ \ˤ6|$R`DUE`d!nVCdcUPB^PZov57wӳ }#tvq*il΄.6OI[%4>ST7]0!qs0\~p_ 邐‘~`Cq#w(|Ssn;`>c?sHW}$(b9f- H A: mvSG0C'uM@K-8YKa h4 dWJ80s6 eKxߊ.53FsD6uxi!{n/ U0C/_?'읢 1Ł}L-I%L:BI%w_@ߋq / l>N(z"\@vd Vvc ?N(VLf}>lZq_>HK[]-@"Zխ r;rz Y\/f`{P}9@P|@ ]#bim (RFHSFN_!=6=`Z펷= k%:&Uo)XލIre>z<>CIa˟D{wv\)Q@'sYjO{+۸g sWd`jCr$-Xo4-XчoT Bv;'$ ko78p¿1_^ e%1h$ I(e #Zִ7O_^Cger /2#iQ/VD(.ݱ",.![]x)eZgP"t11'Jz+d[UX>HE.lf 1ggzvR ڞI헊\_=~ di|1B??JJSh8Z22Rex|i4fL_| c/ yȷ],!;ϑtWT?*?bT?Xіb>oר <[T13˺ vmE,2#J*%[YmF 3 8( kid9R8bZ5ݫk):ѣ0p>`}G M3ʅ}6v5fTz1_k;DL9.66µ_GF+,o[qAɾ5;iwnS޼#>+3&LVou^&/b$ !U$u|8hq3qIn+|H?#xx-T36ӂ=ЮrA|VveE>C{4(yӜrx1vH[R 0س6><$S3ٔ'ww1JiXɚUt& ΢kCZ!@YF7ҟyIet5i Û$%~ 3XW:};0ZY@5 <"v>&aޟM gK/S놌-ˏMx&(K%wJW qgh-* @WLZͷVGɞ;)O<2kX"M@62KtxqJw 09E+3kI0Qb>fѦwxDt jc䀣qIjVa_W?pYw>kzhJ}휊[?.0yW3ݗ C_w0 9sdi6"M䓤]續<+Є"8xxht b5 m2Uݥ[$J ^^wt]"˛q`wV\>927l)jp3޽˶'zZ6L{? fU0EC$ӆ%?vƞ0XyǶ˚ٙRbS45VޱY_ ;c>bh%uͪ )B@6ݜ [I]L?`WEfzo"q 5*փ7K>;#yNcn u&]As/)h$T!ِi z̻+s%_DÇz~߂HEWЅD,HoRW6_od8` GC)~ XTwfΡ QAw8@QHD+iA Ԩ ( gS a.#-Lc-Tܢ۳rU.¾~9hb+ q^/N/v!:q51 DŽ`o2?NH*lU 9\ѽ&w,dO헖=%b^o`rDIIJDvҨߵh4PPVU"Nzv 92X'*}2, KU>퀐L&/Y7~§) ˎE3.7phIH2.PN'Bg o,s+nZk@Z0*?MZŇBH`!ס煞pX^8%7ˇѴvej7w4q xR t̎Ąr+' j>wQU8om淚RNz^q -"co՘2o !p+MFLOgZ~$Lek'Q i~GA]%BM<)\!q{@[~8T"n"e㰼 $%4Y5NkAXv$%7d T*ZUO[Ci,4^02 A8 \0 qOiٟɗd!Qq!m78Q.Jx 'a{>mLF'CDT<$Z8Brrkt"o'!>NqܿhN/k;9Q{@3H OaԀQwbT\X]ñ|n[(=.\@sPꔳĬ ~Q9h=-MO?m,S#]˜VeW?¼Za:$v^'qg.ϴ3' ЂܯOAq+p^[Ujh}'*]|QDѧ0׃?u}D=j33V$UJ1$ Xߵ8w:odSֿE[#"tv `| N[?oU,E|ԡS(;JtMU46W(+Pb| f0rVw7D>w kS縡_ D&w)cŌ6 d͆yiOVtbpOrmp&C#W'˨RnZpW W0 &]1,so3m&O2rX&a%, &b,xBºfG9fT"w<<- rNEi rrқ?p4Q*WTl\.T!1wxEκuD&Ӿ[P-2{pq>d >?Vwdg!:!j9][fgo~'g&Tw\HU䟹߱ۋ}wQ=T00%s#:} o6J9%a{lG캶3cu#]VĄQ9,ClZC|Lː w'3D-.lMNݙ<,ނǪ=~ >Dl:aU@c0k^"TFߤE.}}~h-t'ũRQO{8U9/ֵ܎OM" Da 4fuM^PPw>vt"dPq;b, Ёwi7 5XMF Ӧ`IxH܌ȡKj>?2K;>QtcD 퇋N1=H+Bߕ}0_xId\1`$y٬캾#MՋų.qzjg:@3\#Tn_gٴ]Io ֹAiKA 1)&; ߚixh~Mfnz[ pf3wKCTMĴjfejQvA'ٱtENݯ|~e;p?S8-TvVh‘ZF, gCl{tub8($^jol?dYX ]'|Oae=cW/T*+=:f@.拙%Kw] 5۹9ݻNƈng\tUZ.I $n~ϟTJIck)uέ7#np~;۔Et`thB\;f3\)QZ=\#\CԒ=90:ev@ 騰hf0q9uzΝV}ÍLPx덧Va#Zv5" sD0y=uD(h XPu"(q}=t;SP Ң4I^b(h:C~5K1>Y$`*@ƾo.ę&ztu$Fi={";&qAσ5 *.Uo&Dʜdv^E}ߥUcS{ߕ.RUQ` {>i!\Hͭ̆Rk6V"[C҉^!`;XFOBNa^YI-cʪ\Wj& Lu2_B ,n\:&~'0 %z$eP#dHAJ(uVZZx6r1wXUWƉy Fu~j9!?( <\KrH(\΢+XVЁKn!,O&e]VԚBR!K {fY);m6)h!VyB$=2O V0y͂h)Ee2h,XӶ(_eq1kbN`/|By5O#,(sh{ic ]gC`)@>?۠(qx|kP:L߭Z#C'?ջ[5vp|3ֹۭKt8GñkY(+Va4 H/-CnLTGe|ΰ㖞Agw7i3^ oXO=.1Zw?gMS?nK$ao6yk~qF0`zz]זB4FUfm":y*"̈́T0CP@QR'Eh9>CpH k96e!)6g-w+L?e)_|θ @-G}8`IP&![qcIYi_:]9FBO}#dFNiq~_ Af5=ؗaM%K{ȓdlח!LvI$_%Sc-ZY)# ?gVA-nIJg>X_UnkFi2MUC7pZڱzJZ$4i/"~*'@Gsϙ\s!MJ^{Ht|[%2D`3kMXxChFj*cȏD8yx`K yҬg>ш, U015;c':]7;sYDX|;[X^׺'6ҍ$=GCvJHTw~SDxEMŮ_U 蹸+* rVOMt٭LCX&ȈD&O_+LWO;;uX K8i'#QGoΤ1_;_sKqurҖ.^Aq]Ra $WF=\Q`O:שy~vU.&H]֪Zd?W--4R[XjQ_]s o<{*X4٫ ׍ڤL8Z -zݶ/6-ɉԴ:r@Bۭw/?"}+?ķЀ BmÏ1P"I8a>[hT-f)WmR},Gx `3Nž~bNQhL}djT".Lf)kh?Yb5؆`,n-s|`FʖAPO@4s yAo8$7{ۻ,ZUt{+}-RN-Y|L؂v**B:@Z=%T?h:ߝ[̂=!1p_g_ 8k9qgf-=]}r^$L tSXK|v9icGTcun.F-+4,~xa(p@e`twI$n\vؾ*ez+$Z }=nq?x&*͙bwg9 (JAje +L"^YU႘w ғGzQ;S㐃º!#˩awDUg):[pU'(@})?qBd˘7]^Lw,3BtPwiL=Z?>ESEa\$*~C$Dˇ {yڢlG2Ǝ;Woxnۥ+T*q'zE6|(8mjIlͰo1Nu|_K+ppiJ'it?]A6MONn\l+ 9m'bDN:ΣM% ᝵ AU#nYWÏx5~i dHz} %s8ji<@#(>ﳔ  @Oru~C"{ /b^W=,R;֠PtFx t[Ikڷ@z|SA'q^w9FgoXl^p*#";*c݋1EATOi>CK6z,'iܩEfݮt?t;Z?FtF%[ˮCLbt/ӿ*؋mg/Yk\YEO~˖dc:Ub{T9|[wl1b&pT_נ7ML4Q3Dyeх)MUdE0y2U'YnqK^]2@"ś&@U[I]je_Kq{(c،płY(3vo5E_#?Պ'Qy8Ʉ!a`F<Δy5]sT݊1 M@pq^nr{brtH mWD,mD5sN%nd:~yfǍ_9~y8W XQ ,FkȕH?8z0'!1mL i.@CkXnz&yш 'hԦ>@JmrG ?3A}Gō(ZN>Q͑DbCOFrS"k2~H;NE4iqwsל`do+M-'ar0UP]vL tNQ} i4Y!ǯ[3Lsmvჭ:u|V֥#׹+HֺO RoRu?W!I^Gd=;U'/Ƨ#4,GOzv% jVJZg 'F4 ?Y[ҝKe'jVv{V=MPŏ-?5tP=Nԥ$>vkouڛ w1N8o@?{i2>5GdO@čOuTkiNg7K +ﴀAESe.jG]8gM*M%:*[Va}if\G.pBvN!M!8=٘44Gk(]>N'v@ >eJhyld=!bc0gGJ ;\`ˊdotBG0vvr<)K2H12(EGC0nꀀoF< R0$04Y ~ooS!Kl{Do[?+o< O6oFmevoUoh*[hm;[JEZv}>B qv}Ds@Z_ BL(2bxѼQ,ԼJvCOɹ";`9OטKj -KM* }'u*3i9NX-/ՌǟKl<gͧnEe9)!b0c,`?+~)Bpz/===5)Ky]zVO&W59`FF= ?;x j;<).W4r`fD;WYT.>Xw CLL,^&F%X޾WxJ7:2J7< UIJR((Y-Cvs2}9\WC}*oۥiHf)!y&YP A9 R 7~;ph+ g`jq 2R'iR>ytV 9pm,׾xDeM O<,B [ niWZDGEaRc qY*[TPح/F^ƶ@dxoOuUj.X{}\+MGm1iWw⠷5(ЎӳZ=\Eԥ5Pч>X&n8 vGWL)S[T@KHpu5*90~_O*;4w,>dBU.tB[Qw>:5J;#eU _ͯwnj^%egbx*twĮ 鑲%n]]#YQ?,97,1v=j Ld*h? 7<-/>wk0z"-ˎqٝ͜D28}M6LzS PnL^} tL=E<^pJ0}[NBAUL?Kr|%J*` *KHz3H~"?$'j,Fnd!/͝&r)kTîT_<׆~ؙi> H\YoY,P@SRd'-bϷQδԓGkk"C%X7)w'[l9N'>վTO_eXe yiDDxRm /԰䜱zMӍ6E ̠,2'gJ-ICt ȓy]2xlvEt= l}T"V= +Y%`葚}3XB3 \fAvxd7:xwHQB}x}zhX?+-sVǶ­݀)M/M!9g=z^Y>5ܴ\NZh|2fv Acv$3]+YT$D*ƒỏYJc59YMkyʣj҇o5|;vFmRpH鯇 #)r#ɰ 7QY"ÂgZ!|s^?8 `̪zӆmJh]nPәhZ A:C4"-(&I޸PBJ(]HEhuށ2Mp}}ֆm>ٲ\F^Z(PReͻŒt26͹F`-yh߄8Φ]CAo€i`Ψ$ !ͺr<^LZ+EQm{nvD1tȄL}m͔(!O  R,j0r4:;%ܾ@+4p[8=|Ek+YɣȱA_c/:_ @//^ )xAt:Зz@vin:\: vp6LzUBA(s( ZpnQ hE*]!/ˍU뵵DPUĉh0¥*Zb|XzA6,̇˔/=x]fD[Hȵl1%4J?R,o$k9r2꣏W̹)"҆GRZ /eSpkѱE r6v\cB{Nao%/ &~Gamv:B+3GMH1 fabl܂m 4#;o6pҭtpʰ$w/Z%RR[CcEN*q撐'+o*nyiM|wiD(Kpf! >7Zu9PH69P okquHO=>W%bҏf=sF_zS=MfXGi{(.̬2Dkw|,ݎp|vMdyh""R@ (b2*hF}(W`/2;R9- ܎(XeM'"scO\"], vj+ #dA:ܯ?az @#?N,a_PQ ܧ>$}K&'$$HP =+lasud''EYw?DUwyOOi<XB=㸳iҍU@'-BUIմѱ M ݶT^r kg}୞N(Ɗg"LtR5|'"E`<7-+Д{C@T?_:1L=21Y/!6 N_l7DJw;>y7~\mUR?lrGPE%S4=;y56Cll (?ҵ‚ދ[Dޠ-, j иf))GD@T;/#L?Ť!8XbI8eˇJbFY$}^(tGg]u$0i#OM&@ F̻ض1RkcVqųQ4tTdxs<~u:6ep*<FKnkPKMc"xՋ"g<`*ˌ&aCVY9>yOrR\ʣ]Bh3{Qe>"e@?@A!C>V[>>)Őy`1J*1)oeC=vL ?ivDyn%F*Է@? rlG=kcx9'qMQ9"l9 ?ѪbAaZD,9>F`?\`2Eü4۔S;0F+R !*i$4AW6C"n\aK)Ϊd9hd8$Mʳf_=NM;Aw[fxWIGi(-p)v,otZ?LHg{  3 '5 bI,_"`w"Fs~LkBو.c2)8('t* P3m`?g(f"^9h"aQ/HeS/O!H:"6m@aCb(Jee%!9N՚^n AI@'HаNYN#9bi)%P9_ aP.\! i-6bxX!~j!bWDwV /ᷫ}[R=(`L3 y A&A}MU;̠uPgڤXkl/'m_(+j". F$Û_Za@&)Г<.?P $_ U< a˲_Y)CAT܁8=_RO}#%Q< f8J>kn {W^:8g(+@-T2/P ,扲YljC?wK ѐJ%+lI2;}}䖪QwsQOƒZP,;2ux*nҩ+:4Q7+tcG$}zX>װxQ wvw/G1 NSyJ0": M)Kp Xrޠ3ň'DRlX>l\pvJ9V`" w[YYX ƔHsBG H76Rg 1 DW[T8q1Xu}BBwd8x=-JP!&ɑSY'*.BXGN{ݞWPEÉ% /Po%%ڃI?w_nl`~2Uf}r&wϊSs0)w'17fuu p}ڇ42*_anĆѰܟ`#߷Q%A5GY&%9S*h[$r[Q5 Oi!(_L7[i}M ~ rl|IIC L# WzrSOFCA |F0CMںo:_l qUHZO 1'^7T55RWЗA0Ka#|' v7I;n\1h(&[Bb z([F4~ pHQJH9bSrY Gɡ儵S*O !uQj]{B5ܫQ45eM B Se] 'I% ]]%}R֔j'<pKzDT@lώJOӐM,~I(blAqSz.RHgoJ/m3 -iJj<Ϩi&ߪ;&/Y3x 턎~ @ZWoFQ,ORF,.XoTXQ=ez<~.TXkz2~5l/}4khFx@Ob\V^8 S)̢S)AmmS)q'=4&QSv urp0;A?CZf.< 0*C1q~u 6VZ )YWz&[=78yp pҟ>'[ $ݘyhK%HY^e9@i3BAz@]"8{0~Ԧy Հꉿ szJȒK/-so8A b//&0QysDw)OF.EDKZwkB~< PQ9WW:x 2 q?) S`rζ| ՓmxeNeזA뎟.958+і{ߎMOФ'#Җfq} $8UUn. TMNYJ&ŇUᓢwSZعjQj^496v 66)9)4;$c(IC  Cmǥ`IEe7v^BfOeD 34?|! ̳߶K4tǮ·\VZ^EN(XܽCiC(I=ԕ$Ga %(R OȖ'ҠX2.l.cwfBg,*FbAz؈x-mr)L lr1|a6a  +1k:p"yon%e|`R8Kpc; q;[xdZ9]:xFft9;Q@!4$x)'-Wq$G~o9(/[Y-h A1}'HP- O?iY9:6k2;0wX Y}Ǣ5kez|r}[Hq;%_~^o` ?w<lMߒ̖,Ʊ-~[xK9PlQX֝|rjc{||Tԫ/Xh -;ȨwzfƟ6rrz`ه! !K?fsXτrFGtcP'*e?9M}!ݸx)fLhWM>H@ъ/ ƥ zFV  #@**(1|ɖNSp jlz տ&JEĨ9lq%Z :<,l_AUM'r?+oa=M{s#1T~6&i?y*?zs ꝧ$*r~b|\yET$3kp{Iڄr.W 8q֜&6Z6tU%.9s*9u^,ܣ`O؉UXuy |~[PwG;Z{X5 {no #Wo'+TuSt;` f/ Z> 2>`Na N pQED{@4RZ$޼wTˣ|䕛t_}Vp-%`v:&=GrowVi((љNS~eD*Aє&زS3sVk'ba9 /#[rZ k>DkXgȞIC }x_LW\ n,QeCU` ~& D^j]Xc2HC2}Vgna4؈. o=$$H%PiUC pGٌ]jY G+k"Q֩zE? /HdAb7oWuH|z?,>3GB4ŕg jm4c\qAK >b:%7% 3%{}f%s}N5]9#ؘIT05B Y{8m]`c>~H^lPL lcA)K2Y<t?*]qD3a&'Cλ#.sU`zT'Pv3aяw%dXUzQ"j >EDD>"~0|뺔V,'^*,W3˯NG7˥-5BrPU(*7߽t}`isKF$AD©Ė;"))ɓ(>1 !GC ѡ˟ȝDjg{6ΗJL7耍q1(HX+خ(ԍ-TcM} u2vk.s >6AcNiR yx y犫b0JXw/Nȵ5 AzZ_V.Plm~xQ=ޟ 04 f* oIl>󍴃SsT/Txe ^Õ}@ #J+Ɏ֥!+pHoG ΀95J`6R2~Y9Q}v0w߀'ݯ@!ݔu4J[a0 !N>rUd`B<%ۣ]i{Uh,ޕ2I5 SX{74AM={3( ï[̋zXM]oHmOwot~חZ W8m<*uO5}؇0tSnD1iG'{p׉N|߯vEWrL?O\EՑQHgx* Amf~}g8ow;w y[6 !C{ Y !϶mDOhG2yGqk?GОW1mxܚfR+]ʨ(fyI<ċ YH)=PAaQ]kQo7|][*PrvynI)_X>rEa] (+gx@aWܯpOI^ ح<' =P)&#T+eTbb X0݉v/oߐw>9bY0 :BtȆl_-1Q OV=\s*Q?ﲚHEO)EE) )(KV֕ kVu&g 5њpG!Aꭆ67큶}(]c%}pxM[@ ј g(U,XPџ&r%>'S=!P#lH1[0\T}AkѠ{ ÊoфvlSdDz}wť\Nn&,P@^A~vwZ 炜!<&>%~DH@o;~Y)aC$NUbc2)@vHR1d: YR=4w/TږY3y3WJDw:y2v|砋:Td*Ra1A4@ {v'V IS31V3amB0ue}u  ZKZ2aF\a6Vߦy|=dC1+& [:ӈh>_)t+~,fǗkң",2'\JA$aYp+6I lB{^(a,# +_8ݛE B"J~֬g0kM3SYhRKnWc.ɚ]ϓg*Aк忪dMgp eT^P%TbndM-Hc=AO[8bf\%dH-"ktN7o7-E8FSq4 P!s#@ut >B.l^}Z;Mb>- `eyNLt[2Y{L-7!fMBG#N7 RyX3KfBOHtY*Ӿ F=vrlNwXmzw;jЏ%$*OzAu( J*לFpw|a)YM2B0:<; r'?lQ<Ҿ+= vE4+ZQ|ha`~2$0@j` ;Kz6P D B3>B*[:,DU!1![F7,T/ЭLN*cH> !8Y̹d%(?-q2

ԁs/6jl4~$'N(n@5 .6;P *(TNh Zh]h%NDNzkyv0+ ԌC6WBQYlq99B [uCjwx.Yȿ8f*QHG<-\;EX?DLXjPE$@+vn!X]E `96A@ !Rr޼4NUEήb ^%O# dDUt󭡠1Yiȫr&#OU*őLGT:nEtՈB#_d$Q OJ.]zPWα|i`DNx_At-Malg $"x.r;F BSٰDvID#1}K?=$\ގi&W'4?YEC|=[?ȎC lUHHZz ҐbVt?-H0zZzf:;o)ީQԊB+3*r) ODsx#EbqWW?=Ai@!eR8I,_@5DYx} o9=JB DLqrI\pg@S b8 P@*Ľ׿6 yHĺނEHr5@l %u~1ל#uv+8 qm۫IwH^ob(F{BkA =<-Y 8BCߩl1V)+I:pf `sZ[ z mVs :qIPq|Pa ^7%7%  fCGFlÂjRhB&vȩ:YI+:wT]TIe-)&ݕ D?ٯƭaad K_ez%ŷ>%Q"*mΏy?$5~_˥g :8h25j8nksɓ.8297EPx~=5)[i74T6Rh VM 1Sb E}Ҩg_-(PFZMoc =!h7'ʀ~=$ŷC}| zw`-mB&R j= P8\_^Z(/fy*4Dkm7tx% ٛz5~,+7r: s+9Lb ~^ f_KI*{! Jb;nR23UT?p@ L6uy-zỊpFX//kkNݔB1Z v$[(P ᬔd\E|A x+b%ʧohP&tm{3^;'Cl|vۖdom'ɇξ SRF$7^uO ~/"sM  )T"xܠN%~X0M4Y/((qUZԯ05DŠhY_?fD-1܄aqg{W1OM7swcm &uoq3qgky-#,>+4 @3r2b\6R3B7#|.,?Npm< a9!"K%u>pst]sq[qݏ}M#c39,^Բxe.'q&n#R.؍EⳠmҞ!02eU_oSMxC|0D󴹚.B:t4aܒ,z8 ecXj3MY;|_g*U_˗f~kѽ6opP<_B V*}bVWhm w.U3n]ĒΝ#z{YLbtCCs3EN eVaG{K~qYP2AJ=ܡĈ>ӝGO`* s8nn#=!!Cφ[0Dޑ/)5{uqmmt } 6r!Km/[6=67xPk@ #;a2 )=@ 4iKmݨ 7ki3*9m,1 %miug{,D wNp׻P7%H-nA&0 = BPf24r^/7ۻ}KpAC0z"8 BARg[S]{%{6XO?Ei}1* !>mkd`r.K2{@k(ÃTpB @T) IIBt,I=HRd#}57m7ذ†y"1]To-P|fJt /BEca^VDaR ,!|$D!0iC`rJtk=Xb )/(Bʽ/^hcUGb|[V5B3U@z ~Ցq}k̄ΈSn:Ɖ Yz-j]; }`<) iƒd;T#YKpc5Cj`2O*u ,;C@ mr+.QEQբjߠ bߺ~5c z%GOO @Yp?`0Fw}akVȏPA.vMڶ4Bqt:^N8I#{ɜ􎗀to|CRz{^=y'kuCjr &ᱟiD+kT/[@!Tdu)WC``.9]lWP"8Ru} ?۸($, ?Ѝm؊f"\6j,"wUm}"dks(%Fb4x:#͑ռd$;%=^P{dP~>`i γoS+V5Di'c*|uWP > .\s[C= 6s]ߕ`_QϽ$M4Ne|5Q2M7NqG0B)w;}3 _m_dm }z 'tIHΥl~nL#qK!@wFpy)ު \:qgYpӀ֐PK&HJeaV#'_M*E&B(Bu2>pe]sπ0LPi;v Tyz|s6Nk"bLEϚhbcS Π68Wy$`.mV#/[c%Sc{T&>7J8/d4-H\[9_™@/ vy .803`=Jdh?n>|YjI UKMC{{ Q `cIhl]1C.-h+RP[_ѥb L9KI~S3H8AsWq))Ca euujc=#obhn}_ݻ@RlBnZ„ nCi:>}@du"Un\U^1̾!w?ġoOp6"50 <:Mt0AA>8H {HJ` H}KSׅ߻lwdo}]2YW0)Y2цo7 3_ ɪyg8C=V5kJ:wTYm/82&a?2pihSx{5=قo"lOd5Mjyb{,&nJ꥿1HJy~ҧ݋g5 -Kڄf{țf_GQ62j䆞O۶Lx{lӽ8'J\r 6_gNS!kI$=mdfrHv+:Kl{.nM 7O޵J{{5K}5,0|u4e:&{$z$F9WPnB݄Tx<o@\F|_>S=H:> rdb(sM3AJn^2 0_V0o$ ˓o1bT3#h~FXjwYloTYGı75w@bpt"M0l ѶK/s s)P,7Ca6XUgfgp E)ܹ"Ih>t%ny:Fӱ Jhw{zF9|K\Q8T=K8BL%WfoĐTRIeAތ> 7\&_0 |\O$#\pC$Aܸ'*E!rTaO͢R PG{]ǟ|6%o%?aT|}=S Rэ,33nL _7X,f썵YNsdX6p%z[h .Lׄ*tҫs~j*uY?p!Q_Kp bMh>O"!N?`HnQ9ǝ2}XOc+bbNTLgm`# |E ń !ׁ!P„(epG1e>ҫnuȘ :*e!qm 4VϑZĀ LBi/ӡ|EiudW4f9"iW/‚&Hγc W| !ҁ(moPO׹jcUI~r.`K @!zBHdw=PYl|Es\:5>yuwwld=VJIPr1v]Re3\N `cB'S輫fX{mUH6J"@/ ,lZsez0b FػW3p ڈo3| PZyd3A<ָcr1Sp77$ c* /7($JL !|>Wsғ-Ɍn[S 7,ҾYJBV0ߟPFJݸe^PJz!\> +U`t([jy|o#3a 7^X}f#>7Jeß~l\~@HC tEԭksPA@(Rj \1Z?b#9<%;u9Iم>ӱ5G[ܻ. r_џGCu<2%SCݮs1L0ԗ$oZ&L $$ p13%䌕]I|I+ Z-W.lV T+έ8) ˝e"*̹?Kyxk? .83~0~ĀW6 DdV b΄kUꅘH>Xбῖ#'zsK(0\?G@+C96.8!˿N%Vy̶CPH0yK;F)zB$ cʌ{]9l{vUP&_B{L|8ʥDg'Nd"gAnbQsb~qk8X;+~rd5U@~,Dv6y; Vurݰjoޑ8 .ņW}JQ1y@BPYPPԼ)6I~ (׎5\:X'J$lr =ܾk Q&UiaP5'UA迿boM7V!iI Nw\ʉrц&Ge%u8d/]eB:U@=i5O]> ܌&YAafKφ,$ y8n?8Ak11 V8j|)ErA\ڤP7 +$j&]DSy[`z GtP줉ƒ^3_M~΂T$q櫫*`݁ 1%{هo_`nqcsL JO;*m7 S%1Zhه^{W>wS6 OA^kTw,M@Eg^XVy%ANdԞYx,DPحnK)ӕYZ:ϰ3Neg-!%qq-gWa0IM{bnմT~zWf0UZvq-jC"[]+]!x KsYDjH?4$bi A)_/Ԋc :ѱ+7"T}NsY^_%s.0ZT'ӑ^p7" 8r<Ɯ#z÷WnUbzw仂惱V} ~̤\g߲JfɣOxYLr>$Y<*Ƽhm4`;l mС2_XN]|%d qk~!n7y-kz";׿c3qN ڑ1$vva((@0 GE 2u9<\Zd}y%ZZA+tW19p-n҆ Umi__#{zGw dV(6FAS0Ͽ契!`XHIbSmJ]#t4| 5p>ڽ8wN:z 1z O}#fOh {h`0.U'xK9 E A30fZGlE]#(wĔreaG2%C mhNWղ[S'@"<;p_ЖQ̂hNx,;ma2Ytzʱ ]ʩ dSLc_$;zx>tQ)<=MS2)0|J(Q=5|V 3ol'4EORϬq_J O]>QLiE/y7V+Dݎr((XN4 Q+zG=Dh|vM{K࣐X UB\ۉV&ttI{ s։WS,Usl#^ :cxRɣCn EUψeG ?זkR[rb<օVNnI9y_2Zv|̠ zWzspg9 *󏆻ħ^ StO6Af`8YTU\U<2Js7;WϚ4i 2ڠ#FXHk\2zzIz"mo + ,;?ϳW/a;@$AU Ey-94C"ѻw))I:<@ yTP 7j/Kb}|(75?=';*旄,v#3 ? sdv~X(߮.k_y# 65s]!2F$|?g0F~7xNe G] =$M_$Ws:{h3P>U5ݐQ>SU= ԏH }O~p< }!:JxFbf1SAQ,Lss,k#{9s_]P%& Zj탫or`\i!pާNbi! AV S9R7v[YY|+UL |pG!~=0JTac2Q2dcGhNK|`OCWӳLȯ[H*D\ 4;;Ffp'@I*j>BQgbveB8OyZBpZ5!>g0^atם^F^a@Eq iyp5 +؀tx Q6Ab3Y;%LRk\Xة\mW {5p_q ʸ#(\Y@߂ICGS9 ( $&yo[S5< =[.%窿*Kh?>7!S4CLdVqaii5.Ю\ yOG]a 3YFs\#x5:oξ[uddW.ܰ(4L֦Q妱 ՞bts~'zqJ(^Y`9*@݅R$bZ0߁{) ]Nb72hGLb΅,󔽢m X.ym(g޺Tфrۍ!O1 `Ffc:iJg왛cc!=4?B$MM+e?4VگD}1RI}F&.jJ\na / &6RI:"QjYh9;㓸bJʽDm%NkJZIz])0v/P祈#Q%99zEyrG`xH$bS~+N^0kvq7bLUC֡sRw L{3e͌7<>ad^RE{H.kZ'<|pҭ6CS|O@g'fKvMAk]YD`',^VMH Mj7$]r4_x$~)/V9QyfRS RR<a.626~~@cW M9e|L5D=Am/]mY@):C7(:oOѸĕYcX xwmKOY"`nb0Su4>f0A# /BVdlEzZ֫L[36ݬLNxEm1Y~3p h/g~37| ś)j"Gp1|Ҟ,A0 c],EXw~{Eo(r2L6囼5ؠT;)}{S,XXKYJPZ_E܏ ~8/3w|[Kou3(m䎫? Im:X2Gxf@-dl$)K7v>WFL; W ڙ[ZI["፞;L5 IJ0<&T6ENcd}s d8#^Њ0f>𐾅s(0x 3YA]c/qyii4fЂeYM/➎+t8n :y:rkV N<A}#|-nj E12}h}5Gs#De4\wʶ2aU.ҵL3 u2 u<'D^M+x(.0Lw%?3)l3;>FbDjސg8P{}JM+Ippҗ\õd`QfUQn)Zs?&a-U*az&q\rZbnSku8^ GR 9k&D&DfʅN (u]6)`~Fǵ`_3 g¸PZk|AXEL7XV,Q CfuEPV߾D0K>+E*߹XqwnF#A#1\c6/&RX$k;4a%GsKL_+=L^MƳ"I?I7k éP﫺ǃv]_hVWDi+r ,? GYd8 0ܿ_vRzs m>@ƶ|Jt lm3L/w\DH{)(co7h*5ӫgѪ*Ʊ8$†C{mO0KIݮntc}%-Q!-sݟ j!H tvS lsN,zg,)9G heAT]b-S4~7[=te9QB0j{ [^4AxSB$ HK7'9{E@QeEUVٞ|0+̎-xCU>Z 7:ll,t Uȁrs:X3})Q\C2AhVw)&kϛɩ~{Ik=lDtCGt 0O@7+]cE^} ӸP VcvL9̋YVjC YbuCJpFuڤ'ּ۱T Xivirݼ5/Rhᾫ+W"gDnkmzvt-俆fOp`xFchfKtQ `Y? n3*11@s4'm֕t5>0U͌OWK75`FVug6|@a?ql&*о-t 9`@fHC+5~g;&=[ I4G>xoe@t!l/X7"n$ kdqm&,$BʱR}J:PhVCy}W-Imj~>,aO-$kݹ"!j+# - '|Um\R?RcA,7z>&Nh[Da&2WONSU~[n@ _"⮪K`|Ԙ*VDGqO hYMϥQҸ<1^Sv>S :rlKIqvKũr!5ަ9s~JZsV6uf`JGygE>vw)05 *v` C?~w]?T`zGOeZ՟ g1U>Sog.^[/*Y7`V{^mK^;k)atƘ"T׾Os] SMOg̟_ZVyJ0wb]K"|.wyX6?l(5E~~/ǜ#eKp`>`|QFӗN z(.BJzZ9zjwt`Å)1躢x۹O%WDYI`ق"aօȨZ{'g7j#V my֣XmpT\4ڰNk];(>WJa4a,|R1h!(Ԉaz"/ 1/YID~C΁{X aU̔?L/geAO.ZgM.p/V+G#SUdʒ@61g1=oy#+)6y4g2xK9'- ;_8_Ly@CCr1JиJZ؆Yz-|Pݤ/ZFKbMZySp_n `r-B%\XFf7\Een&9󴾞MxK}]{?޹P?Ǐp7FB5ȯ]ش`Ln/콖LcK Q/¡lsSB"cz+av-LߪC{\o6qG S[-. q@p;K`m'! Rm׵Z=N^1-^ a΁WM魶ۗմRy'ݻO?oͳf#2~^?"V|0v_]E=4?LGv9 8ҺP:^C8 s@"bBa8Zgf]2Ƥx.dnG|@Nt$~L_1 ~+rWUh8r0ijY;(i3pZB=YWG'>:$H 4ނLw[x1r+ӆaZ:yD5nn'_qg5$!O^xL7Dq(eEcr@ɷnۂֱ\Z2 $b>h?cIЉYsC'P iȣ~i#PBՏVzƔHL|为|nsڵ()Űr"{¨{OTBk<"X!ImykX|~Dg"JjC|67u&׌cNx׾űEmL^-i^nA= Sa|qBAc}MAp˧Œ8z8{}l5g3 %AQ, 'IB Vj27A/ح"B ~ T>0 bC8 ;+ \cs %1l4m]ZAEgQ]œvrnR.3',,eŁ[$l |$uo3r 38~}WDGh@vIJoIoa\o Jx "_NMGA"wDp cܹ ]]6L?r p6P9B< +dx򋇁ȧ#gz+(#o[R?? S IԕH QAˤ.~=B@TF"Ѥu_V%$EXte<&-(f`w ^`@2D.VgClMn57ÆW`&LQXH1HZ5ܭ!V9| #&hJX5) j6[ZZ30#ZDK k7S?f)bke"ϰP޶4ByZt(u ~4ZUԿpo}soL7ڊė!Uljv'bvRu}ؗt=62s.A42dcƙ΀jʹW M-3<{>.%ԟ aGY=FI$DR t{/}!G|/EqzDn%8̖h03gU@|Q;l載z-c>+yhFjBY_m1!V-LG3Nc4x(S-?( w{[1JQ<$]xR__aLeix{UlEx_ƈ/@*H崭3F[JXTU;\.vT Ts;9㘃u\cQsc~"ďgM=Rq'"4 `.=ZCN9}KS(!¸7D'uX&$8uKlbYT 4gm+GZuhnfrQүe]&A."XdoxD4.qs|%Ƈ?ayq4mBj[!`չF;T.3y!JadN A}|,ibttBGC!hVMdt9<QR~{+7$d+eKsꄂ贸a\el*_4ht@?U:<5EJtH@%Re{NQx0KyoϥՒ:"8ys03Aa%k,pm#)q5C_n9l*xtJĆ qp`b ք ^a|Hgf]a@2kDP' ΌSo]ζljE|eƒnRڅЙOn'o̶#{N׉?$)籟:ژ{+I<|NZɀw5 AxL_ST_(Tx2G:<28Q-[PU^?.zZnh GL3ӲS'{{h`VpM͝zPMK@1𥠗}(_[u<!O^+mU^`~-0]?ma,PWJ'l]݅V{5eoѝA'iܐ^B"zkNR'kqQUNKq^=a_jk u;zu B4'܆菝K+b..-9ޠצ!1BRDj˔bEq$~W>zwpyzGul8 |ЃAq аdXWX,qT dynvaA;b+i] )\6k˂G:V/,zJ.6߬NtjX[D.B$ +pQEUu,A/<~r„|ѿEb 0w[mh*pCs Gf'$$tL$&I#n >.,:uLD}Pz/ n3l9yŋd-4S歌8` =Wy)oÏaSƟ`1 ڏcUR?e '~4v  |0=. !E^֞k1va v\ehacCg=^`y"-[wdFyEԏY1X4:'N5뫗֭TKJNgB1$(,FGWXᰙTW|04&fO ^~bTeB5 H8cJ4k8GW lL)b};j)9FcjF;?"O{1:A`wv;q\f_%c@x닠( ˋa8D-W1h$]'Rw9 v^I4ފv>*Q޾RͳU;7%݀H6.ߠ_*Au+l,[YRKsШ:02.h,cfeڻS3 6{&Rd5t<.EOb9'! ҷg%_ D#b7M 4{_+wf5!ސxGct>7&gziJooF5?RV)ZP,_mj?Asz:i?h@RGB=F5p>26LjSɉ`+(߮Bw| 2}Q3uzQ9mMeݷ!W/8 +M7M ʌx9ug|q#/'z&ŷt)e y-٭Bb~5qZԝNXOc{V y?}vŬikCrҐ 8вH-Q3>A*qW+%=,wMzx@I s.ϳfPA|iJA˓oTո~x۞ >D6`J4t3^jɃSYeEՂ{pdz(b}sX8'Ϯhe"8V f`  "v5`yB^ *=0`K KShYi]r{Iy3Z8Q$4g$ 2 UߐQsK&ϴXrUa; a*Oo'$"V N:,?hp?MwH:Peݘ̡EJlgEDB^\b-,\m͇]BOMnT@PP;vp+k&3r:KΊFCTSvXZ`; AaYM5?W\1E7묤$ R" \jZ!H JZX!+V ]Q]F'KMJWckK\]Sy wF/ڝ.w*Bvʤ&O\r'bxk?>g(М۳)v=Q%Ek,"K,3_QvlPGA R/U&&N?:8*xcNi? \_VgvcNf]2zW+|C5BV#S;j%T_O ۽X ~|Sۭ񍝒ߪIF}hj_Ul%l}>Fpa/۱gg Q\&pUt|oL F:^(LK_N.Ժ֣t`+ Ar; 2e[782ҪEF֎KJd!^e(שLD]7W\m khb+7l5O@@moDoO AQ#H'xL?童iCԦVЭTz:N{c3\њg8~EqJX_02gN ]Hpmw]@0y2ql־05 ; &=5WY;8 0}68m_ q$02 -DyJz!⅑(DGhK0$RRqz[$zl^Owؒ(ʍ +?m_ލ'ͮm; _^ViNUX#\xӭxpw|oղ5iJ'*2SOվˉXì_en}`Fx8=>#O7?V;R$mPy"Dw5"}}YiϬ2s^yOqaO(--Dk2\%V lGs>Xқ)\/(>j1ۤz]SjƦ+\h܀0YL')_8`gLY^8v@oaK=XD% @@\PyxLVL`?P(D ޓq{@ 6tu@9:NY|4pÁ )\_a{d?"fT]lư[n"gJ 7>DzŽfcڃiIʉ@n`}#+Ҽu%(LǾoxV3LOmDzkCo#Jju|+( # q^d"x7:= Pj1Q|5_3doN bW L"פw][0==8!K{,jhG]01/g=A&A25NȽ_IcN9m$a5{E҂@-tn70qXb/;m?|NcUbZ55V Z(UݱhW.6ET7F`up?^NJ$ؒw]}R?NqHs;7Vgv57/Ff(`e߿|ąOWVq0giTk Gg?{6iQu!S{ ܼ0 M/|! +qPo ~1NjÂ/-fA CAݨ8Qc\$q$짐N]39%eU:t9tS8`W Ͼ1F\Wh9,HGZ`Q$ܠWkWC+{v=kA~܂c %>PmF%b8I@M]$8EkO{ve]e,vXqًO7REp6mYG'6i*MX3N ]ʼBiġ 읡$3ya(*7h9޾@*뤇@bfzܱyp)9_xȆT z'ZlJEM֩PēPG3G[WB!^2څ;WC٥ X= {iD+SϮ鮛U_bUGzfΧDlo]PuFᒌsf!p&)IY])-ɮ:Gʊ_za=5 V+ʸ7W)l7StW]w.9Qaw2Azجk YbLo <\`/npH2$@gU[sQbqP@h3V?:?=uB,;ٮk}.yHK(0x+,#ſ>8tWsWԀs!+81:x͏BǀX9 *Yʁ O>3^,}8*8*`,bNċ d() @'ivd|oG[{B#YɈI}/@M9}z (!S E~S Hn_= Xvtgbk&~w"Yk$Cxyu9>Ob|Rɘ!nQ ZcI.Nw LԻVe6ԲBzj c/4UL[do|,F[cʻ>_Nf3ֈWbCG̚%/t8qV9uF_,xk,胻? vU-__$`~XZ-b]CTK@Q']٨ZQۀwy㕜JLoB&_65h*W 5i |RiUFl}ϹŘ p'R[DX! 9M>v!2JbO}NK?@hϹ~sly|M=[;bͯHctp}\2w,U4(Pv@n} pO@\p:jـE:!abS*,u4oNiX v5jPOl/Z+!(\>t,d݇q"|x#8yn(u)PC&)Ё4[yaRUWVGq`U$91 E4alNFh 'Zcq]i]K,}4& B־5L >\aJ@!g` 4N􋄬pu ÖrCIp->Y2Xs\ B=_$Q6[ &z$3Mh^({|WB0srh'^,Y^TQw#Uq{q(CNgΟ}B}K6cOSUot2P>x nvz7FJ0DuPuR!$W+XZ4Ӱ ~Xpl,M-X?졜&Hə Բ\lBhň,27tjm. B~dQ^LoIg ]iB=O.zNF yZ쬲LF“LVA,6!J,f46N6~x ms wm1UvZ,CFsp_얿͡CX@bõ!…M$qSieϟER +/.G}PEW)-Cc@hż^DX#<$SJtWfsuH]x58ncMO/{eϮ=GtJ)c &$ - pdvH&C: @jx@SEaap^`Y^¸SBtƬX6 !Ո: ~zb;e ,m}7W%h^/$9DۻJ5xKޣY JxܛB/Ĺ>Vh0/Zm@R*̎ \fo'.|"׶\ #Hjs)^.DVѭ~!m5hRƙ^ء)efaM2,F }j!)+ZJEq4q}:&/[jYǃ%_NFah,Et'peG}?܅->_@=4{<,C®yKa5`@hV"Cy5i7ҍd7~һpߋ8x*!.}`( Gα]Y]vvB*Bմ wX1cD"̯7bIq.>zW EEsEv3}=[_8‡laR¼8S}!Brآ=Aߓ$4/7%0J5RakYB~nafP:`Y?|13'|DbS FYm)o@``f8 7ި70WM{ZdLjbO9-v{6]"AǐU*KxG^5Ԧ&d)0ɲ>Ŕ%p`>ahG ]c?38F7_CL6+rk^{+;\E0hz6С)*{]:LEP.p ftutr COXnm.-IAvvd^@}]tO?=uM HS?(TYGC+UQ׉hLR 4` ¢Xz(5~;rӵJِP_dn.0N1k6>P8.Myw6 > s%2 |~YBC\]j⏡դKc)~v@׈>B]*}Y5| R2 ;oW3@fQi䲀6 @ug;+:yi3+Dų4,e,_ԠңjwHb,jwlvr מf9:UC\yV`U׊їF20xu:Th+ON/<"$Hb:UXo^D ̓^ `Fl=@(]|W7% l"R9p&NaXytaZY<ϱhfXյ̏yʹ1 kF ZiEWD_G0J,@ q~dARo+\ a *B㇙2*PdA A4Dx$量fhdAp:"X6O/ :fҸ?(}_AC 4J9S2}`XnLʨ7Di0DB)/e3 Z}7bFw`$j?|(0fO =xbӀ PQX~M~.Y2&g>du: >Rx|K0/ƙ_BAf \ B`=7K=iEDgdXĤ ~$) 0wncNOpu_B7?~[(~:lxg|R8$5j}ҍ-;wHI.PReґw:8Tb76먦oz>ק{ϭ d, Y5%?D@2)Ѓ}=3;ꋋe]%dh(foByjl볮#JYn0#g}ܚD#%L_hBo.o[#ƙ$ AQ^ {+O?Pf+B h)2}_66L)P/Sn;}uԠM }&ljy{?Dy2' 񱫊{'2i?{f=zJRy ~޾)?-hXaŵтFY/Iͷ`^iئ,|`Tu hFt6- 5+)1uOд|s7ܦ$8YC1x]f|iec=30ρzϣE]bABP]<@ D" uZhǥw;:Tt#pN-z78A9 Vuс[\΁.H/c-ݱm`D9Bx](G@|ZM=lGIw^Qd>9%cG}ѡډ)O)"IESϪՓA~VH(wy-f!qZVˆ~7uuמхN@ut(mHs*34 <;OҒ^GN&#4hLF G8J%Ӗ~]%(m~a9xZ}rE)r 75iYڣ)?.YnڏL9R^^OG p~}dIߋ%z1զ0:4GH;gl|N @~WhgJ-%,g\(_9[? *^;hy#*x1to~:`,Րk yPp4xR2|嶃@kǘLȲuiiuh_Jg A҆ج0Z5f{> !7;x2">HiPG@ !$3Ҁ;@R3 +RÄoT3qhb' pw}*?5; ^WJ074'jMqCy*XJAo{hBxرba`9iDt UL)M~RAh)Jv G= a? B-FpƝTJgXKH*_.=DؖLV|&YO)O0 RPn=U9 uRpu`/Q3.E,I%ؒdSwg R :?bV`-> |Dہ`>f] LHd;k>(E<eQze8ǎi[~~ KAwHRbaQH(bJqf"E9 MM*=q4{B*λҒ I\qU1~ORofyuXa/F J ,(ct7>8vxrj1|&H A9y9v%/GB63u(x]CkE 4$Ih{x軴 Iggy\}0APT=qtc},\wg=br^IP$(&6J~4:V89Eѡۆmy!9VZ'D:zTc,oGlM<jv @C)4E7Xg荣ّsUE8YtT!E D; |n*Q ޑHey>FЎ/=u#m!q>|)~ȟxe*V}[OC띗l?^5VAJǖ朲lr(W)_:O{=}bN;1 "?#98{C27=*6ROe4rL60  A2c/c˯p/fLe)"* [Xi#!=_~Q"~s> C-Բ@Bu gi+ZP4h = LhMՂ>,vH< hBLN, njC1(6UY49v[IhWevMK T\96r>Ohv)hr,RWN:D$(PfX'@XU;4<ޙY1)͚ QVF7fΤU a_؍Hb:HO:jO%13+J_`UOٴg{1fy2;P .t%T#%-[̹M)$/cj`_{Ȩ:W23Ӧm2{_? ~Q9h _DߟLDv)/-:K p;Yսq2~4̼ Ȝ|а;23+Dey,}RF $`:tC)6N ^8X,hn?cd@(p  夕3x%$N#Kq-;0NWm)[ %o םij/ j[7Hݨ-#( ik @L9g 1I mFp?\-Jۓ\E%/ My5e;|:*VӋ3яTo ?brqpK@l>ESy{2Ԥ,GQ5z;ٍhHᰈ@>}n+* z_9VͪI ,_V y{2,us._R36N~7oVKo[A1O75l_ RPcja e=rS+ht ΩooN skRK~^J1]\@ Mی0묝o<ALXN}HըVEџq==d|k-HۃYQYHwx!p̱jcdەPUg7JYGae^Ұn5\AMerV*b3y b׺5fȭHX=G-@ޅ*Mnp_QXopnUYl+3__La'Ǿ\jFɥ]{vD{]3/|\Omk#-r쪷ǭ$D9kiOz^k#pۿCG[U ?%t3TK 6׼2:v|§{{djp͜0z!tg|ɟ_)tjP'V's9^׫ mHN c%e։Psdyfh]r^26cZ]A#йLjB h%*b-X08mk$pZv }iꕟv|KAnl_ZRñ# )эd/ӛ Ca4nϙIv/x }0v˸#C)`eH]/Bٱ֐Sݰx̢5|c~i]Cw#S8ȶ {> u1=m gjVZitTE5TЧ Q[IfPv+)}c'2]0WVѣNKuۚgWVhb&@qaRQ'_kWaZh}ph`(KX.G*9j#L8i?3J:I 7fbVD$\&E vPPrSG629)qSH "Bq6PA&Ims1~7'H^i̶;C3OpF"dI&(&3o~Dퟳ#[mm_B"ydү|@xSrTy-kT{}kʩKu,-`$]J2U_A`r%0燂` kRB\ Cî/V>C<{SBzznjj~ߪYzm1 Ŏuגw[3rcD:)g5_VeR$ilfOWoÓ'(-"\`z?ս@i֯'O8o3r>/R·,in{Ay+{ie}*-vNk瘜w"ZOH0gƬ4 6 xxDS03!au:4|YYcg<sC.%&^<Ꜽpm49{/dxXE?:7!г ߱ Gqt# 9#N1$ ʲ1ڷxw*QWA,Td%:,p:.]c_ens 4>l8(ԍGCͪf0_QҴrU\o ~j)vj㺋?sW VW4^bU=ZEp\U> o*2o>ye x`*:.?? #ɜh1Rv=2Wvx}?mmOܠ;vXbW9dMN0iJiV ܎7.|hw;$ \.Ǩj}- v+S' XJz`uw.j 3gj6c9Ɵ)}pŭoX)m#qSI}'oe5~}L8pr y2n-(VŠי`_q˳ZKgGv=gB;)UZ^6R;7s ܮ(w~ ^&`e _KJAu"{'jV0 aKNW;a{c_ü @`x/ϳ8r'Q[]<_{93 C u4yu,=@ɵPsGfdzLW n9׻@3*VQPM^Orӫ暋PP߫腥AyKk5o_ -0m],kN=M4q'~Ǽ)e8mT!}/7tM@sႠ@gkNngx*.R[ӊۤM@^"m!/CU-vf?֯\{?X4s<ųfl' xf)F\_3r޶TpSV9ms3up}Si]{( 7 ͉vxp]E> VXH,3"<)-s @[*KÔƅ@QplSf$omvoX cϤ~W8Pj p+^f>{<(z>Y9A>]_潵|%\55{XsS0*)OT@Ry?^9ܹ<=hMUN%(0A{߷YHm@ŀ51U`^ "v Z)]>EIJ6BF ZQ{J8'翠]D}T[JAWcAP_?$ʴdUPWw T//d Eh{QxM A/-MSdâO AS֥x-u"ӍxAlK^zGC߶%$Ծ&r0s˭HxP,(1ǸK2{qc>!cۄ¼ zv&0nl[Ba#ﳍ3tJB>! q>a[*$V1 >6!lp T'Lܝ%k|mM;ylHq"!|Cwv0>vD>n6.;$.7\Q:_y)Et3/:Mm=!2vhwÍd*blk3/Y;>"hD&V@B=n2biZkm9X}:+;k[ Q#CU@3g*bL ODcRփ V.z8X}hCO`q!*y͖ *uȵOEXOB-C BJ €G,o #E)vy9Y 5\:.>C& 6@`2sMlFr`p :jNsi4U5kR3ҿ͝.N'jOxla^KT;aF/فg/`+jCh MkDm֏TΤ{ .KBw~uV9zdE_-8kfu() XʶkgKeͷD^u:Z|!a4 `6Cjp%4v8#87e3)xM8E/bٵ nt Ku85>բ&EwNj+q\n;mt7 8^pثJjZ\CLK!ߊ6쯦%Rtg" hkcV4]R*C͠ x nBQؿ^4^WmgGYr&_)#{d՚^ %6c$3>aϪ&]}J VC cv{F -HWU"6fqǝ UYC?+ !Œ$5>$Pk#8 op2SُD5"5c߶h-3uS L*OQjQ`hz(7/\hKpSnБt1ôtA)+6*)40,?([=ȋ}|ֵ2}׿K=lMR~_w)>Ҍ{,r'L1j+cDSB %j<[%<V\&EOOOX#4z*󼚣;/ϊZ)ϱQ \]x8?ԇ \yq_3P?m /e+P Ϲp?`y‰ {񙭘و]1\ׂo:|mm}EWPm_lgЉnvnVSz5jBm.v8_$L% Qt2 SCI5{ j_ iO8{ܓC30mdޑwF^8n[Li d`qiDC?YH.)y3]Mq&~Aa1^Ma<(2xX]JmD+_'t]QjKh+{#?K*$v#I7zN e:SBmRg15ºBUĻ6'\.O"h?5PKU;m|0EӠjt$z{/'D淎]:R3ǥ|CVqh^bF!-$qTj|Tv.vE%h6$BnskaQq|j⸁븕je;u7M?5D.޺a}d)֨Il~V?UHmцSO53J 3yb ܅ڽoP)F0ZORo.pgkaKPܴxNpg"|%A`߫r144@fCpA?SMv/z[MM}%b5iu[h3;#~7FwQU \F[Q}CP܂ b;h:lmr8jOk`(рf* *[tn7St,fcm1.Gqh^o$ߝHdu-Y?yEdbxx{J(~Db0xRO7O<V9B{Nvl,) 5o6ixȈ ֜k5׵6xe!Q)M*V*4ó^Oʣz0D*N[ݛ~%.\/#>$ ~2=4@׽ѷL" 7 Zvw,[Eo&fǀj0#ܼ & qfs Y1xM 0hLI(ޥkfV,T'5:`n˄O÷X=aV1eqGs.4:]!:|VXGUD4\ ,KWU7(/9wKzl#/r zuVU]2҂FCɬ:J\]<5vTG&P$~'Wѧ#g#qgL b Bȧ2FݓBOV!a2mr<)*lo;iϥA}r5Ylvw*]d/BRLPΙ{o*TDAӺ{oAIڮ 7F7NmH?}"0Zy!dH2PDm RT[&c)yZbPcԦqkyr7qPhnHzV8P2\*eB.Qmv2P aBÈ^6L88B1OKPw}sH^<#9_d7ݥ:eqQb~2b8F@mú*jw9NWq: g@.X T#R^ 5ȴA8bEaVR * qSi^{|7.4:~ҒbP%dHY?j+^ 46M䛗B⃮: _Z:W;\mN2Y;&\\{TLZwB 𙒀 Y^H1b4׹"t׮r?+Yq4b?6بS=zR[O'i|P%Bt va-x:X4 Y3D@eetޥ d)Mԟ ]TVv' h@J}u}11@dbMtwf3oinT,m>gn\qS[lh"sN˫Wjs9;4L[P^tkpS{.зOXyQ>S%OB1Z7u'c-'h% s6ԴJx~Cr) uB kO6b.&r!EH.e-'dA[%99CiIj$MS*^]Fv Wa '@W~y饂yt%JSH䫚7󜱞^?H©B;U.jDOLn!m+RA$lV؞cceȳB|! NP먋l{)9a(2ce8Dwۚl _+fLOfbiXBd=8^b) 2@rNy}lBoŹDT!a"㘵3PN.N jrFbۂx:4 sBtwqA" w 9jsuX

:Ѵl`~~0iغ[REePX}fd,Wy-tK^Tb(PݾYO"aq R,/;دWm~G~x䴭݅aZdŝ'YUpAӳF/,@%v0]D nC#H YKvL3{.%8 q܀ Ai)3J~cȺi`tF74!N]*Y}ekT/y}XzPy`EZ9}x Š=E e*lDa+Rc;wEȿJ ~}@U)z$VlT}d?_CfqPƥW$NgrIUl}6.;10VXROUqvABF ?kPKmJܨ,8,%F 'D(h86gMJVȩ+]fzML" E\HoP_Y7'|#\,e̒Z`7йO43&뜭L sHTevs7 J,DbX7L.`m lQW>/]wխ$:߶6; .4eAXFeSCFٿE0BrW;&6;^eJ,@E̾E pƖiSH+5zՋ:x-Qt!/ Pfֳb}흆RT;y^{n*??Yt80hެI(Qwl/:po@:W5K F?pS-qSzӎ}n_c_ɵiة+Hu5:<~%| ^Wׇ5_n ^ʶl]=9]v:sr3j {d7px{^Noϋ\%|<,OFP_U`7"лʒ%GyPYCCʣ[p!Owm¬8&5`7k ,bKBT\bOy zͦZmkz}i8 r.Ͷ*Q 7(}!]m\>sk Ԓ؁WڐwLo옎aePe\ylnhLx ;P\/5O'1Xn迒R܌Z-VÂPJT}VZiA˳ғk_na3U!N_&ԄZk{0Y݋B 6b(0`k`R5u~P۳YqV ڽӽ3,Hj=&5*g~>l[Q}Rom o@(!;_E6cp>B,}O?̖, {g -l%}by^ZO')ݹ;*_t>wD"+,"]1a|:R"(C{j>NW:8xSni(b^j/--s/oŽ[<G0)TxAI/.i|%j[ Y4, /]DG؏QIx[0؀0Iq! x$[S\^$ ᙨ5ԫ9YDPZg>J;VK   m;X'6ijޣ|lQYg* #H|QXxK qeF+43mPV; yU ɪ;Ty`~̳^ܮ+ =:Z` |xd҃A]W'6߽T:-;Fr({F?ь\D;(5dc>N7_y.B.1|JZ-qtM`y;?Ҁ|PwyEXO}>ܙpLnuOvyROٻM"S5NTl \cMIyU4Eq3y8v5ݶ6A!v [pt=rjSQwD9H@& 44_tbnb,a[m~%0Slg~/Q'lt>/v }͎긃chfY7pg:Ow\KǹyvK X6lbvp>$pɏai=XBg S{zDz$Zm p8ržu"Myry{>師v}id_֟3'T]UE钷Ӳa%/m)@}i:\N#S1BSpiCj0nv\Od`8}Z^&$=d•c9{ H D3׃Az>X-غV2mqqWIJ38o|;v5J{w^!8c|k;#Н_z-05^uvd }&e v|'hD ÄF1&ax,T);[{g6@&C0гɄ`uV4DdY#O-hk,f:o8RX'GJ"ʺky;#14WKk߄sX0C8Nx}9z!8Q`Aw@8 Ax`Fgb>i=0j⚥bu' ׏E0[? fn,54O*xX2]kj*pv n8dA3Cgaf mbDSl?q <)I#$bJa4A[nR ]j xhX<W{ZQKy9ݮXwki'yjP[{t^꟭QQg#a^FrKi8NR;,|@ Fi3fV2,t 6YW#7 BHN6 δR zmH/ݻP 5BxRLxW7{+:l) Y&vGgSGt}nו&LJ湣FXA O*V/wԦ797n3-FWKpRj#āIL{jAs.NwtZZDҢHP=T ѝndfmh YhðkB?ŦPÐx}gp(W^=2F|r`Ye__n+: ڋ׊ۇQ$a|WQ ɘ 8=Ԡd6/ڞɱ0u܌3([-ȏ{c6{nT1a{fWJhԆ >6A+IFtmGcBW5mD``H?M1o!^`uE'7ʗu(Z@!ި)\UIhE]`g@t;-ᅶd!um$;Ƃ}-Nx5GBiXhZ}@`o4V1КY[V;u 幔H f0> lTW մdn}O}x]c{6w Wxx\ꙩzIPURXHZ ʢ&3D,$9Fe犳5(Ueslj;Jq֙9أ+v,j>n;cA2^ D\NOiTWv1{*E@]nWİp*rZ>@8z"i"tO E5JHj? hډ],x&d-q?3OOx"4TJM;*"'7W[VPo{.͋”8߲DH+Wnz4VϙbW)<9h6Bo6T}ת[|@.f͗nt( |\FH.9b9ލOZ V򹪟iqY]g6'ҪZ~`_T>?uS b,Oyc$,Ga7U:+\SXg@'ފF.0koŵ[H ^<*8ɔ4񀳒r#Xڒ}jk))OEMd=fөvc4pq&zFe4*^Y ՇܽCf:֛t{XqtAɈ]Ro25޿4*Ńڭ0HWgz$]5ktL/s nd㞧h{?ߔ>[n] I܋M >:Vkg4ՠlP>!L5ԀC-+5KPpDŽ̹"yTWiDP9UX5Qn$Y)6{T[Ϳ;C7w/cը,WoY`Xz[ʵJ!k9MR~Cyndrl ~*1q?yXf9m*c~KUi-f&Â ?bn 8O,Vνe'kA<#Ba몟LwKZVǴ=AM^b6Ǿ zlfL -t)&A!'}ZheBC 1ih<ėM̏MƔS?b7yMG4ߦY9-1[Kۚ os8M35U^.L6k1S 9][h&5$}b}]GCڬݿ.cݴ6,/9z( `8 0E_Lm9#)Aa 4h*o)cnWɕ*D(AX@&Q1-d o!e@"bYwm@vDܬsh*B/f@U>>/Ⱥ#dX*Dz.dD4)XlNjOrOOm `m#%E2XgoF24? 56sΠw]$"{jq_vҪmPHlW* ˙^߾cL zQǦuWYE4xA.CwӁv, D@?6tuygY->?E9[uHx_yZ ݛaVP.p0bRCh\@97𓆸|Lg)≠LTP!`yHzC)WXp';cRrOLx~CчR mlc/;@,ņMpVN`XXG|pH[wJZXC>wmTg)ѺWLksYOsKHF6|-LsZCķIx%`!F_jURQQOsuaairbEtLE[ēT/M`Wu%C[3 P\1bvR,1y"?'DXG,:n"j~OV4{ Ơ.&afL(ƒ'.lDAW~6Hp(PeY1*yi:ֺنꄶC2X'#&&s,9ͯ:(ǒO BxeV'sVt_:L/RYOWER?d[ + <@vSGse' |c3ǺQ8,օv bC Oße:,tcK3=-PN:~*wz gӪj)]r'_FSf5x{Ԩ?8w/(>_ J/[DY2Y{goކTks xX `(` ڹH %6F\sD{v#nA]EnEx牂mFO^"݉ՑSCGJS.8ڃ.7ΣC) Ia9e,Ŵvs#6mH3\~=3;e+=B_=HX>i Y1ӧj.OXBuL~#?ZD]HOUcq 90!ʖmPWSG,:4ˮ4&߿Cvgͣ٥uEYt@(bp陾ȡj0s!:ϨA[R{O׵CRAdAbkL|hLR WP>M݆P7dgS _|3i9¯!A1PLB۠Xd)Qu[NJC@RVZ!?Gp01SEp2-]t9xwI_Oz a)R]j2 7w,:SB> p{j1Vsv`= }QL;2;U7T*䳹a`V&=nOwtMd%;nACm0q+-xsi|%V⯫-,Nt`{Fae28ְR4 ; #.ߦV̅=?Vc=)]u`Z`.wG}CR_PmRj쁛CmƿR:`j$C^>!h|' =?/S7!JMNӌ:"T+G|A ^ҿ=$h{=]uZp(McIt䂷U@Zqâ05t1>1$fx usP'S"}˞tQ&OR O+iDTpៗ^aCʮ}}k};2vy YcJ~oOY k_XF]~͚Zx&|,w>A^8^Ysޮ~qOu?,B،& ?8F:RrsJ/:W&y٦ ea>CY|5O"UK`l=oAݨ (2:! eEK$8JW6xYLSjJ~9buZ`ΤLgpƺ9U8jkLn1rۓ|L`/:@29WlS\Cd{>;X ^ZFfN^V˵(<륧`Cf:kK؅!YCީrK7Tqj=EՄuz E.'Ope9&Yt>oO#dvX UD?3o JtAym}+cԩu>D:4|ދm2 ZS*͓d}y#K>.SԘ?L4 =֓Gw-\ˢ.go6iYl gT+$VcGEA|Fn=Yt+)3ʳ[K6\;}j":085F/"=Mיfo>5b4OIw)@~oWb燿`UVwSMsft E|\tKj˦sxcjɎPvLf?n R%O6~n =I@n ;97DߛZCQ]՗8 R0y+ (D7N}Ag}«)A;wiP;~^e2/]^}i;ZVUQ|9K=z?ؽ!){RP?攳$2ƶt0K ÅIBeQ[f*׌#l.]!L0/AA`;Q COW~rǪVEǘY_>FIT{ݠ-.t7M*5CP!1ԓRG助{L5՞ks^s!nGbܨq^k7,ҟL:V+)׭9MЦOޔ }4?Yڅ{LwUTV^ZD,{;͢؍\nj״2漷-׈l-`}*gj},'bU0hklLџrO𛺩F`JOq%GPkC/h}Zp 8gVb1~`9^E>b5*gW1.ȟ3:Cq xWs)G;?|jFSeqWjo-APVْKQֻ)ƞ@;% W@xktigbمA= t͙ZWb8ŎƢҐ^nCUR]VTS=LVA!/o ,U[(S9{XuLb(l e҉EB`ECHY{(SU 2uG^jǭQ)`Ԉ]!ezE_`4KstUnI4,#~lImmX|1n(ˤ/&MS߾Tɉ9WCEd]طK0S*~bs1lu?0P8}uk,N٥b*U9)h-*r>9O#=@~|ba/1/7 } ̪&BfmZg{RkoJTvrڎK|g!P/= eHc?ٮ<^䠱3Ljmﰵq3"d1TDvs/Cܞn8Z6,={:,c_״n#4imf g4:< kZ|!|c]|/XeBi@, ᬯ|f18nFl.> xbcQ:[1E pU4R)l |7 )xse7Yz'VbYitQYzcc(U{jO(%6%anfqadoߓ2geMSĈWkm(,̇,u5Rw쒌+`c)n:O+iJO|P=+T ꘡Ntyݺ92X׋oxf}Cq;Q_4RL."Aᶷ6xйNlXX3W*>mg|VSS`_Opd:[LlO< <(Q2lV?)v2MЛo[gz ΂]e=!NIc׻'̠pTo#{:{e_:~h>E`ߡ3 y8{';²4f6CDU>g@DeJ^9Ү| +֋P:m(Є&̓q Ua,:RaWA?bլ8f%r*(RO;Ka7M}^ƒJ@UsS1(=OYew:^Wf0@b0sq{Sw\wNU Xlno'{ƖF:=dԝ.S$ ,~: Dy[ƊL%bt\'WxMw+0#cV_C*&kom9.am PU:Ycgd->r';4Q>K/ti}*>>3K3;̼r(!D3MUAD,F^A7#1RPLw4, lX(jv\(:Kt/ysطY6G(Bw5'n|=5~)Eb⛋ZG|s 1|W׶"em3P}43<]wRO 6'`MNʦCbb݄/o[FRdCX7ANu9..wæW=[f]RO/)ڷ!fϮ|}oFoPڪjҶni8YKj/i-hU/޷;j y||nE:# $ Še 9 ;DӚ[o<\-g 9c }T٩5^p[LRrE:с1aH{6WrvI,T(ďʜTp˴+9蝂^O-U j#8q]5ieLՀ:;1!a*{J:Vʳғ~`oNkB\xgO*~%'>KKVfr^mp>/V WQa0CV,v=DbO|ˉ[yă^K՚NcOuOΝ7AP.cϦ\wWf)7'dWtǕ\I⪋T"m/yKĵ* oڳk; `Xh~4yxQxc~fH \7bkB?ew@?\cdOOcvxjRb]],/g~oC󑙲ntFg?SL6˽C9ڸ&[^ $hHAK3JĤbv<[ rY7kv'y)15dyΊ C zc/m/ިWQKƍV_%J zɬ\gʩ-\3ʋ*{ ^]fƻxZ&9<~¾OGgD 1uf.VX h֯1OwCAYMS62[qܨ u 5U\8N5̋N͗IJ5b4XmKkcZ6q `|ixN1N稟54ô?IsiMa?k0b;?6R_~˟W1/h AίX em>u{w^-pws';U '옆z$,d#wYz`Iӟ ZLظY<51q+w@u 5!G%C$\#'X&ȼvTZpIߧrK"/&MC4*M|77KWH!cnBvЃAbe2G|)`}zf|M>6xjW2!Oc}٧]Xp2?Z/ fvW wcw.C˃:id<Dc Br:o|Hq IaUb_*RbHCn sV!՗*o:yʆzE!ItssS :KOš_96Z9 g+:]oyABH_V{*ӓgq<S@;Qj%s+*30 ݜ WU58{vÙobS}YCboj }4횊V¥ұq4 u|aϨS\63'@zY_ 뗱 <߂rQ'J3Am2k?zTaX/K/ցI ZwΈ33s;5*XܤVoXntC~SO 090sķ9M6@uz?DnZ6GWD۸rWMwjcw ;'0T1jTS@>J1G PĹ7 1+_CU}+ʉ+𒰪Pg%t7_kq/+fs=c$VGwlFp i-kLC=˵ߞ2^w*u~wnC \cGcY)+zhTR 姄t.s1$iؽɣ=v6"YP2S ?=vmwc^o!{(l-F- 4k+D'"vD l@B\yشAܢⰷ tW\o};9Y1 9l;MkRt F"NV&d%8nkٷJT0,#Dž﮿MɋMnl υctuYv_ l,R5,%pR$-dT[!1Vbtf\%{0@X[uji^!M U(07֖hOIm_=zQNf>>ݶԽy ]ƒ%ˣ$p‡UI:v+c`G4*YMxʐv[\[ne<a w3Mm6qH˥sݷBw!eʿMZ H˙|їY[ZU''jK3|]Qj7Z@8HY5jm"7G.cw>`)!@Zn)rJ4 2naV(:Dz[J2/ x'!(2E-nƻ/pdʝ̲Fv J\Mu}O^,CvN:_'//@5U>z\fMzn,vb1f }F(f|gԧ/cz?zxz`nx{\~OK~ k_q/x-q.!g57Ml9!O}`tH<\d:}, ?yv.\پ+t2K~<w}>uvBO@#[M' aCl㨨.>%Qjg _ȻMe^!q#\SS 8zԟ]i.п8/B%eT)w笻]sY[Cqu\ >l1=3 ~9ewi`,6Pto@m*ƝM73.+c]q>~YWJR $O뺬 =U;rR9w8Jg? [f^Uy nďeËȴs^̻Cˀ~]o >.0sccg$̀L`Z F xEW?) ?L+u87tӟ^̐:.~dGD+Y.T7Gl( Bm}Id*i~eXMj Y9jUZ엪Fkv>5Dz0(G񾀾ю#GSy:=U4-Տh[[k^:IJRb>fA ot Neb:ŊXNe]h=c1hX@d|AjX8l cQwh.cxKW2R4\.>|,R{P>m:!d0nmGޚE(.t,MkgH@o& _x-OW%C\*(v9-sTȦP,/@/ bis3!_pFU{`v'6m׆sT߁ w`4״:U*&eq}67<̳Hn=Qe\SsZ ńrQQ(jX2 ʅňsgΧoGt5Z"=zJgǾ1L]Εa0M-x#/@JyBHhvF +U$oU_ ϳ=^@pupr4)c,_/5kkapIkx(p/p1tʶ+k@i/>WOt8w'>g5z+}k~u̴]%E#]v~">`% /-d,Ftnw N֬!O> Eދu!%OeCJbnzwU\QvAb(W.Ȓf%S|KUvpr|ix+;w,YJjaBjo`s Kfe7#7ܱ0?Z3LLڝ|ljc˹7dׯ,v),?cZiCpB m 2|Od+$eΗADS`eu?},~D놾o"m|JA4{iĩu @ ugåg9KUle3vK4K<+L w9pve M3YdbH;-/=+/\SwM%W 7W߿ItW#sX+oCG]Xl*,g (Mѱrzlݐ!<6[x˃&:Ca6'( ,Jz(фA% 7Ok |#('F-T_9S.F^xqvvo=_ ȻJ( -D;&~ hý&}RngTxVڹ[}/mΝ5+Jv X!ecW'\õ.ƈNTkĵ#J|7S.SjXKaTsnL}0xαڄѻsfr VQyCV_Tz^`>폍 THq˶OqdJ8桵@rQXӏQfx/ruis|Rݵ/GT/Lb}/e~_́֬+ F>V;~u>qYS^.6nQuRT5&=AQM@ͯki@_ցH?L@ήiXѣ &x<$8O wfL\6MG9(ƅLB0S;p# |ͦ_JMhwޑ{xC$ۣDYwB01A;uv~Q5+hj \2cgHrASj|,&us kN19 z+=#A5#F҂v/0:'#a8UJ;ڏbƦJֶ<՝ wyd?-[%ܘ,j"u:&swJwBRr*Xz uQw=]y Ř P<ym"neu{UQv߼B'4Ўbbx$:qQۛ!E]ee"V!)&4p#sD+|LkkƗ:1<}_߇؈x6rD7 mKq3P1833 ث0֋G; )XUS`H˃Sx`bPC7bZLB__URSNe6YUz1X]\Mu*UBf蝔-V=OXv죨"vRjαWCܠ#\L8Wߦ#C`zs ֵO&tɞ9ϮJM×/4.xPJtC̵^ǒ5!g/ADH#@{,rG꧝I|)yBrs+rM֮XdnIvi@ OIy`}Nt[hd=g%X8x, }!q= OԊv׺7~_sgU;F0~Al2REu"?YDr-Ë5³}-J8ˆp+ 1c(~)vٛYzڇ؄4W>+!ﶷ.8r3^uĸVMde[At;7oa\-Cέ˯3An25%1qoT?SYCK_GU4"^Pc[^D;+eT5g<I6srr.85A2qu  ^(.1t6oG TlVvE#Wk..:sk_?tI a8 Q@w߀Bc< nJSǢVEVE[Nk𼶷Yh1} ֺ"8jx{Ֆۆ2d]™'7&xnJ5EbL)ᘬ@j3`',g#Wۆ;01FtVˌ  ThFr&0$kUԨTۛ< $N/f6Lo\vv*5t#;q]s mu? +P&7"i6(8jtSvmYr(<>~:} de\LH`%>DJ.)fw,vee3-|4v=XÈ&tj'y+DrWgQ"'Z>N;Ϛjr@6$fh.ȩ yzbN Cm{ WﭫӅuv>ZO)dҶrߗZn:[P/RlS5\%o 0~M 7MF4<{~gD*! pݽh54'%2)mKJ{M!(I8r/ĂnQ|s˺;TZ|N\ͽRB,_50tPw *qh'lڧvk'=&{;nY:MaWpQpz&82]eyy9 ocIY!aL7;L4Pw(٤cQ@DBCh{ؓI $@AxEAB2*bã|8 Vv"J{֧AN,+} lBC}%E1C>* |wUh3dG_h H0yj!5)N{([]f}{~8e&yYm  g-OԦݕo/'mn*>(l52iԲg##؜Elz`}BA@ j}ہI2؍ˇNTYo z^ki?aAh_8y*dNLq+Rp]uẰDr6YƩs= ^ئw5OaYvFyCۥpSdD#2ϯIl#{Zo XgUKxzNz۫Uү~4Rmtv+/Noca1mв$;qJ;( 0[}kP&x:ы`xzj1À=_.(3|1dKUHһ쩗NӖVn[{AVԝ\{ 6ndf.5 m<:k",t,YjW nV7Q@-uTq;h,@%>|(W4~=F{ .B&[Fhj 5U Mh퓻Mɰ6Gu?b_82VfpCNԿP*owzfMVC_#Žǻ ITվf?LadN#Peq2bPVZ z h"ASPÞ "hTTnq/|*yINIWўllEΒ`wy=.3IrC>|(Q {̯/hr]@}yއS)J~w| >MĻTi*j՚6s@*Sn[ (7հa2$]mRϠZ'+IjNAG=5iWI[IܿAsGw>d-xTc:QT6P:َѕ,M$~rh9a%x|Ũበ4i,oq!+1,WXM؋I*=LSOhVmm7#=i pG0G?`c 6iϥ(MF/~ NG\0b˜kO1n<(zp>VlMl?b^Z./I~}#/C~?RH^\ {-|5HzdIkkA+Eg޵Zt*:,nVolE/Mis޺$ՈPŲB3p=4z3 T&rwF (b@ǓAtlw  |pF H'!6_ 2G9OMJُw8}>Fc@U:^z@jjMz{۵eS^@RyyxӶUnB{}(Y!&I9}H w msiyV)=0 |~qqP/TQ }PĉBerNX{$ ׬7Tr媓L K8wX{Tv<Q́7J75wɄ{l;U( xXi ɱQ^ #]BEVSŮ3;qOp>m@!_.ȉ7iϯ Ed->$#]Ɵ8,_&;w W GvɶqR瓸$%h/L4{Zh}k`JŽCz%0º\^ri/Sߨ[9$^Wls_r=;v[;u+rݿ oe}]/yOS*COP!kF_†!h.]6Hʥ\S|66/"6CAcg|S պ,2QhSƗV.`N@ d'7נp>qmHR:a"H1B-2C'0WhhG FXQaT1\5T?.UHR,M5v$qk|*|Zohƀfq f?6 UIVD7. N8(nBWoLJhzlw|&:o%UVjʚW4N1`oٳw7ߤiJ)0p-ϒ('CWھz;PwA\s(?:t:LW+}vP3D&y;ev,4[wp_!3$r؍Rp=g8i4bWxxw0'ĩ3W3BA/{؉&}Q5Be>PWߔ KyGLX%{Ƃ^,PDyhd€-8Sp`θ`tNt jkOZhCMN[Wߞ6GCl=7/ wEc r,Zm9Nb :Aa tMBSm]<Ήޤq$m~_M2s.+OADe3,c t"x1`; >AmG;{5='Bhg|L3g'z ^3A6/Nc\KmΜi£ʧ5]xD~¦ W*A[ 'Hli ӈFAf(z*cִȵlxkF;d:;l'y}_hkI)|3Q 7l,~ @>YCrɩ˹<>Mquvf߰Rzi7:$6![vm(//3~6siE.'pbaT:4g4vu8w98IbtH%oZޅwG҅ZǷjO@{ژV-=Syz,:!Nr@<Ď5݄OҩYǖRgbtv,P)dyOuUʭeϗ|)l-q@9{> }au$P٨ʓ _CH"H n' nͪ@8b;/O/.=1xNpZq4!3,h97GnᶞkWټ7hXEu=I5:֙$/)߀x /cw}}YPgBuJuڳ|*%+m`&nS_YҮ ﴈ OihXHﴂ3XD (0'sȣgAAě#Ѕ;єϳ+BZ QK{vD[K='hᰆJN!(b <yv}W4W0b:`GL/xEe6?^ *5dk@C,a $ sk{v mIjg(@F ށsC"GaiSd" _wLbY12Ȍ Ubv}zMoD4WCBh.kݧt2~vYᦽJ1 <emS?!sx;Ѭ<*C2z, 1aasHqKzt8I8xT$GtίqocGk5EAdɧCH0=pA&:V6fVEow~7thhoP=$>A{X1}a`KNOlrP|uh5#VǼۊ@_w#-i73 if +Ix&Wr@^r $2#xQShTUADe7c=A{vQФ'jYx ؁mL鹖(c_{0kn=(qIufay3f_Uc0.\k\ ƳYcآa8.`1=oTǦ~c~sze B(ۦLO]_*/`?mfqkma-\™>T/=ug ̓ x+\s:MpY^b|_gٶ:X&nEh h1`T7h -Uqg1+b2QO\n?,Q^ sX:{h,W+ "JIC1'bS fI`PY`dErj.V&G4K^Z}QBL%c0M8|`)󥤣˜|/9U:eb=yϸwq\Dy BcVv ޸0Bs٥ N Etxs,2/O/ xcI0BB"~mLuh3ᯟ qoǸUZL;B]Ἒj~G؝Ow1 9uE,]ϚBLJ![EvC}YK5zu*z ȱ $Qo+~,g&Yf41'MaPcTCv#J3,`La1;`\mG}Ջ9"LlUg%ຨ(F!Z'xteF=j1;)G$pӰPGf%^3^/ c*)v`06fJ< %@ݖY;^>qA^XzeU~e,]j~^Y*eBe_]v?Z׮B=oX瘯NQ,ijҦfQ>vu9Rh&MuC+ƯPN=sYk/ +&C V,Ⱦ Rpa_f6Y6@zwBNj+ԵܸN[!9U W ~DYkv7{'a+dQekne::rCmih=50[td?鮬N獛LYlKLFwp8|A CD7ڞ2qa=Zk/`%\<=[CB[Oayx*w^=ujIC{,K5U*wc9K؍fc8NIJi۶u"zVNn )'gυ lձHup\2/&0cpO–(~ }0cR~ZL@R&L ͊o"097#v53TFJyqg:eBâ ?w ST6>zu1]s:YZu7&Sځ2ҙ !*Dž&*5gqUzqSEec0=qPquM}A2ꯤYy'iP~W|ZN zxL^vv pgbQ:2sJ4S{w6iZmv? 枍 *z6)BWs:wDGt^b"pV\چ(".o'2͘LC(z9} Z틹(U,c vbUk]Pi[+d-OON0_it$]:'Ozw 9ӌNOAtS8N^b^f.A_-8O='1H߷-C7z7m^Zȯ b:jdPX8uҵ#QQ? UGǶؘ*lc1wGMR6O3"Jz1[V1+äT bS(B ۊ|]uab;lWoGVnHQL_rصX얃d+b_ƽӿa~!4k3b.M2AplӼ4l31g^&_[X6T.Lbx(𪁠Hx6yy uݻ>nfw!]o(&90Κǔ,J=eD=^uL%:FO+J !{i/<x>el8`āO9̆!Pì[0j ï1s-r59 *E"Uha'i[_Ƙ1[3IE5Sҳ'֔*ƘqMקqa @./f cPR: K{ɴʸ*uXu Oo2'0sc_{:/%OCk\Nb7W;ҷ.=1',N2{3SRPmg eGeLoMX;#:se𡛛zRbaJgPx#U2c/7:FYHi,kuM-94(TtlefKtӫƴ r\c$4)S$nճX{p:׿qFdʂ~[;ijwzM6;cyZW&e~տ( 68GhV?w:&J byk}Sn MfXᠯF; jE&Nii .%Nlȷ(ϓ.7wHC6!4 Mڝ!]ƬpU7}mJA |% 'Lӽyhևq6J`hY/ E61 ܋L\' T|$g=B^Y6{-<)ӕOVk6z݉bivE wZl ňYfO!ݷz2zb4goz1p3wf ]v9Kl?eޚ~$C\U VAnC!XD Nj.nq)s?g\/Ԗ\X]7` Bs9Թgx=;?&ᩇJ>ڸod el=r)]:!˟Q x巇lCƎv3O%YxmFnﬥZ$DMOhik2ďڊiqnPe>Qn>ɅKĿ?FOk7_c86?Jyژoհ3@+Hn23=nk'Ss9nTJ'oTڝ ;h?qG)Zލg_iF>>oLfe3"nVFRYzXxѳO<o_/0x`gX 'Y]_*(Yfz-qt<և=ZMi P0>_w\hLI104)8!P*bc PQX&B0#5>&5rN"GPvU}0AZfiDKaC8tPܟө8v<zx7[<7}$!dp Hsq_`ssΒnbWI;گ)*(1bv?GLCM-p!5$1.TyBky)<@C%i:яL9{E+L^[:^b!1xm߈k] R Wh:eD<,rZb&:T rFTa>bo극>e K I(&*:Ât=I]^;jj$*:MןWcJP78z9h'}coK,zYkGDìA`IϠNئ/z7Xa2o9^5!6=D_,TQ*~0:gk{r/Ԁ7Z9^韖xD9.,Ɂ:eq:z*tt~6=]<𢩞މS.8J+P|K:|13M jzW _ ug m {ya4o,އqHKM&?˳< l/mUfr[/sҰ >}r@f`l_=q8Yju0cAc04|*v~XE9FၰW,YE|k-+ƃo_O@11 EW:ޝ9V̢y駭ʿ_~gH4Bެ,EU_i.{0ºUNZ8XL0z.qL8Pj/94PmªPQ.2cTԮY|< JcM߫2C`cg9Fp<@ |sAJ["9E9b\={-RWeYO4)/Ru-b* x|<1Gw9*eBbˆ+ eցe\j.ϨP<Y@КV@lONş4:r7º=Qzy({s?A P'dytLߩNu}7_l6pSw+#w5݂HƬߟ8z^" 99bpHskx'"$7}K<Q oL$]U%( !Z1e#BTR"H%8*iưнdΏsqEVmmTQ1Dk=OmCRpw<^*A/}?N:[Uռ)O]JiI4!VyTEr5^;*Ƴl7lEhԒ6JB\ HH .lX RP{ӫ;tG]$}PPvvKUJc~6ןhId1LVL wk0WGL )dF0bօ,c C&V-i8nBܬbx#ھ1ؚڇ~Nh(ʴW1U 8y65<*cYwlID/Ai-61L08 :2t,^T; P>$/gMtx],2taPObyS}_arR=w0+yYS@n}s 6I ဈz޹R_\2 Ծ(_(l:؏pFz8ZGgAQSjmbLxy˵jW{ {bcP\[>Ɋj1|\BGAv}RÀ c3 CL-]씺!bTN1>vPck߫:KH&B'@1z6x*KȽUjtfUT+ɷ7gA酜pN6'~+BpXf/nÝ(1젠N޷PJ l=#alņnom:%zdjϽLhk1 })<*7XG"!|y h'>uʀ|p漪aWڝ0yCD)H4h.- jf(Q}6Phc_L$3 >;PK:nz}FS1؂ I"󃁝! 7 m "(+I1дQZsKzICbwFi(\jQc7Թ^'!1o/W0lv&?3zӴr5Xϼ{=Kubg>iŵإ˾1(l'n?Zu0:{f(,K"8 '%aB*OA5p/uY~$NO4{r(:[_`LlUf:Kh*U|qDz(mCX#ͤ&nvcڎecdMti*g^+.R2\$+ )Iu7->ɋS?>[W`#Fa#9J@{jCRw+A. y4da۝ښJT/z%C'7z+l&>{ş_)Z]\C-_?`97/[PGr;P~[Xw1Tzsb?n7 3Rt"cX:)>U6ȋSR[M9W 4dF bH 4j ?[N .B q-Ps Jb< 6A~<( y؀2eeM2_h0>G=oSY-4k"ǂ>߰~-GdԕG &fH]a 6yoL;)gNggC(^nK^<\ cd-&%1Z׽Kare3Li KO,Lm_!k=PTzae-Ѯ G6 1W,1Yo]qcM%I.iBCXSF!I|\雳S"y #Wt,+#6F+g~7)6Gk0/Tԣ^wQ/aN+Z΅#h??WEj}oN(-wztkZ =Lwjb;3t o-arfqދ ޲7I]9yۅ $O5Bň7(z-{${fZFc6Zn߈q~zpk:!lIf~ݗ˵MͤY_XmEaA2v;G53\Ý~i3A`bO6otQql>}t oCW{Fᦪn.Fo7sff8eRd5tM$MFRvzLpLCOw߳|:i u2}]x)NLy *Yg FlhbDp!N >2V2+8PvG8@n.pAI3շ+ætP̙^ߒ}1=*񠸨ZÐ4"$a[f}-?#  >[F5 "Vp1BT?ge d|l%EWXzO,ᶁd GNZZ-ϴnjN/stƌhOxfo8NYIk% AſH Um8}Jh{c@\cQH.ŃAD7wt+@{ 9OcJ#4WUd.m6Mp\hhYmmGP-Ep10T6Ea0PTkL{MY#הe*{bexgn2cff&(^EP[1; 'mGɑtg@y!ߕp8蝻4@>83qoTCTjLxӅUX#aŞpCK4ss}\4_*'!xm@Fxu7_p~?uu84'_~6X X ]-9 vxK6K2эn_,2>?r}arȊyЄ{)Y%K 8;O!O{TqIו,B>JʴS”~^4noV竼<ïWOl8G`i õvaU!?}FMBBjDT1Z`瘳+f:H% GHカFf[y/1#Ccvgk>+xUSk)WKIϧ `LA|?G9)S4,>LG,X/>]>1F0n+ʠ0avܙAmx{{٠$[׉,psтf"0G"{ٝr>"P̲5 Ǫ[i0!(m9 Φ)&tdAѱZ-CLڕܮ P!clC!xO&t[{xQdiZ=_r` K]xma添bIAxZx [ŞU9yLy7gu[TkQ˰*ls5J6{EW17|^OA6Pz\3# H\:OLq^5*'"D94D[!BʹAnwywbuSv@=kWuVx/fk!ϳĤv $A $@:;؉Ə3 4g9_G+ u+|.R Tua!ucb6͙[] 洛'/>Ō'9y[W}9Z|c?28r %f48I#SԮ2?B~dkEpxvʟ*)+ʶE|yIQ-R?'g,I.aҲ'eߠ{6,m2S~338ݍO!Zz7@;Vq;-4:׋ w_i]|D@"PgOw@^ڼ0!{/?f5u1@3#n;!FisӺ~šVݒE#y'ikXޝ]FkNC^6(a7ZYaJv%Adb&| 'O'։`>{":uD~;&if_ (⬠~;{@-|faN$Ͽ4knY{7Oִ4m~o}0kfs>oJwn1MG?1{2l]q' Qx*ɟBmqE .xQTaS((Vsko;XASTnxp'Ye0P7"ΣA?m(!ܞRbA1٢tZ>"h^BIȌY߈tZwwjBCJ36]hQBF烨H}bD-([ډFqa/cPc- -`C.zU@xAT,3 YoΘeV> h[CͯF6#Ŗ7Ɨb$(P#*>tDcEẘH48 .|[BEDN~F&ćl:wJ*yeV5A*7Hm^詟u!:qfalYJ"(oP8`pOh0\qG; JUG&.Fod,d8&]p +(懿JXxB=nkDvbUF+"  H?%6$uv7Φ0d}w)3L`SKrJ.Bc|EإOshPj[al T+)k4>Ӓ81m֗с֒Re߼:n K?0c7AՕB] s'3ٝH% iA"ξaGC?7 3?0m]9&j^|ۆzD/z]v*s6HP,űWcrbn \G"y!kؠ2SmI ןYi ^]۶{C9f9ī1!2$C023y*Re l~Yt%dE:}Z6ۆE?U;oG҄sLe3ov3xj5A~C]#mT 3:vr.e1q/x^\*AGYeVye!1P0@B8yjXb Q͇uީ鯨޻ϟcpJ9L#~~NAOR"~= Ɩl,6ʱ{Eu`Mϰ|J&uҡEaZ*t@QrHdN} ЂyV `@u ƓZ6P(1 KȶPeo/.<A/0G"Z^8JX{ׯ~)mG x :@xlڨKR{w> Zůg1cR U@@oCRDVtg5^ v -؊C?KttݡA=0`θ O*`( ʦː;>;Yj `͵;?x{®K=|tmu<"?m!r>/JK@ea <<+sf ̜ r:i@殨K%ƭ #l{N3 %g&$7$OЃPi_bп S0Œeu-pFڜ=+≰@)C~vWMH}gD|^E,/+$ٝO$ h,)Ïi4+D'SxX'!/v.С2p}z/7,R "mZ? V)V.y†m"e͇J(srζ|dp`CJϼiqi!~QƵ!rGs1Lx1tm sNg!SH.ARݘqP?_=f0Νݙ`̜wGjgY0 pNW`$)'Ulo (npZCfQZӕD,\=NfBLvx ]TJbDLH2(n(ue1}q~d1uĪ TdVqnh-MVcuOM[(2yS2BV\Gpy)oiGc.[a,~3ļc^ݬ5}^3B}nܖ"NɡNO{09:h=my euDe9 /KJ~ϒʣ_VC* QgV!%ojtD; XAH.vvCY CwSbJ_lel - }719B8=i_plmB굾s5o-n4woLAOO|ΒqiEjkYKksyW ۩vsBvv+^PJ&f y~~w$7pA] 1?vQR-[`?Fz!.G6bZf>nM ӭ &w4=CKr6hm(R@8YJzR]_( e *>FMxPƟL𠫲VqCp"NaN~^/JkfǤuO,xfH|aܹ0Av {.HXW);ΣN ]q酉5E uk첬g%y/\7LhŴ|2.^ ʤ Kg!*\ۉ< yC/8DHlAs,˻ -1AX r&Y7`excͨb~6^aCಊ0 ^ 6a=e\S<{sȋjtwPԚ2y,qCiܪNA]uVozcKAW%4[+3/үi]B{ ؄:O>JD*H Operformance/R/performance_mae.R0000644000176200001440000000314614077615731016241 0ustar liggesusers#' @title Mean Absolute Error of Models #' @name performance_mae #' #' @description Compute mean absolute error of models. #' #' @inheritParams performance_rmse #' @inheritParams model_performance.lm #' #' @return Numeric, the mean absolute error of `model`. #' #' @examples #' data(mtcars) #' m <- lm(mpg ~ hp + gear, data = mtcars) #' performance_mae(m) #' @export performance_mae <- function(model, ...) { UseMethod("performance_mae") } #' @rdname performance_mae #' @export mae <- performance_mae #' @export performance_mae.default <- function(model, verbose = TRUE, ...) { pred <- tryCatch( { insight::get_predicted(model, verbose = verbose, ...) }, error = function(e) { NULL } ) observed <- insight::get_response(model) mean(abs(observed - pred)) } # mfx models ------------------------------- #' @export performance_mae.logitor <- function(model, verbose = TRUE, ...) { performance_mae(model$fit, verbose = verbose, ...) } #' @export performance_mae.logitmfx <- performance_mae.logitor #' @export performance_mae.probitmfx <- performance_mae.logitor #' @export performance_mae.poissonirr <- performance_mae.logitor #' @export performance_mae.poissonmfx <- performance_mae.logitor #' @export performance_mae.negbinirr <- performance_mae.logitor #' @export performance_mae.negbinmfx <- performance_mae.logitor #' @export performance_mae.betaor <- performance_mae.logitor #' @export performance_mae.betamfx <- performance_mae.logitor #' @export performance_mae.model_fit <- performance_mae.logitor performance/R/item_difficulty.R0000644000176200001440000000305414077615731016274 0ustar liggesusers#' @title Difficulty of Questionnaire Items #' @name item_difficulty #' #' @description Compute various measures of internal consistencies #' for tests or item-scales of questionnaires. #' #' @param x Depending on the function, `x` may be a `matrix` as #' returned by the `cor()`-function, or a data frame #' with items (e.g. from a test or questionnaire). #' #' @return A data frame with three columns: The name(s) of the item(s), the item #' difficulties for each item, and the ideal item difficulty. #' #' @details This function calculates the item difficulty, which should #' range between 0.2 and 0.8. Lower values are a signal for #' more difficult items, while higher values close to one #' are a sign for easier items. The ideal value for item difficulty #' is `p + (1 - p) / 2`, where `p = 1 / max(x)`. In most #' cases, the ideal item difficulty lies between 0.5 and 0.8. #' #' @examples #' data(mtcars) #' x <- mtcars[, c("cyl", "gear", "carb", "hp")] #' item_difficulty(x) #' @export item_difficulty <- function(x) { d <- sapply(x, function(.x) { .x <- stats::na.omit(.x) round(sum(.x) / (max(.x) * length(.x)), 2) }) # ideal item item_difficulty fun.diff.ideal <- function(.x) { p <- 1 / max(.x, na.rm = TRUE) round(p + (1 - p) / 2, 2) } di <- apply(x, 2, fun.diff.ideal) structure( class = c("item_difficulty", "data.frame"), data.frame( item = colnames(x), difficulty = d, ideal = di, stringsAsFactors = FALSE ) ) } performance/R/check_multimodal.R0000644000176200001440000000747614075351756016436 0ustar liggesusers#' Check if a distribution is unimodal or multimodal #' #' For univariate distributions (one-dimensional vectors), this functions #' performs a Ameijeiras-Alonso et al. (2018) excess mass test. For multivariate #' distributions (dataframes), it uses mixture modelling. However, it seems that #' it always returns a significant result (suggesting that the distribution is #' multimodal). A better method might be needed here. #' #' #' @param x A numeric vector or a data frame. #' @param ... Arguments passed to or from other methods. #' #' @examples #' \dontrun{ #' if (require("multimode")) { #' # Univariate #' x <- rnorm(1000) #' check_multimodal(x) #' } #' #' if (require("multimode") && require("mclust")) { #' x <- c(rnorm(1000), rnorm(1000, 2)) #' check_multimodal(x) #' #' # Multivariate #' m <- data.frame( #' x = rnorm(200), #' y = rbeta(200, 2, 1) #' ) #' plot(m$x, m$y) #' check_multimodal(m) #' #' m <- data.frame( #' x = c(rnorm(100), rnorm(100, 4)), #' y = c(rbeta(100, 2, 1), rbeta(100, 1, 4)) #' ) #' plot(m$x, m$y) #' check_multimodal(m) #' } #' } #' @references \itemize{ #' \item Ameijeiras-Alonso, J., Crujeiras, R. M., \& Rodríguez-Casal, A. (2019). Mode testing, critical bandwidth and excess mass. Test, 28(3), 900-919. #' } #' @export check_multimodal <- function(x, ...) { UseMethod("check_multimodal") } #' @export check_multimodal.data.frame <- function(x, ...) { insight::check_if_installed("mclust") mclustBIC <- mclust::mclustBIC # this is needed as it is internally required by the following functions model <- mclust::Mclust(x, verbose = FALSE) model_h0 <- mclust::Mclust(x, G = 1, verbose = FALSE) # Parametric loglik <- stats::logLik(model) loglik0 <- stats::logLik(model_h0) rez <- list(Chisq = as.numeric(loglik - loglik0), df = attributes(loglik)$df - 2) rez$p <- 1 - stats::pchisq(rez$Chisq, df = rez$df) # Text text <- "The parametric mixture modelling test suggests that " if (rez$p < .05) { text <- paste0( text, "the multivariate distribution is significantly multimodal (Chi2(", insight::format_value(rez$df, protect_integers = TRUE), ") = ", insight::format_value(rez$Chisq), ", ", insight::format_p(rez$p), ").\n" ) color <- "green" } else { text <- paste0( text, "the hypothesis of a multimodal multivariate distribution cannot be rejected (Chi2(", insight::format_value(rez$df, protect_integers = TRUE), ") = ", insight::format_value(rez$Chisq), ", ", insight::format_p(rez$p), ").\n" ) color <- "yellow" } attr(rez, "text") <- text attr(rez, "color") <- color attr(rez, "title") <- "Is the data multimodal?" class(rez) <- c("easystats_check", class(rez)) rez } #' @export check_multimodal.numeric <- function(x, ...) { insight::check_if_installed("multimode") rez <- multimode::modetest(x, mod0 = 1, method = "ACR") rez <- list(p = rez$p.value, excess_mass = rez$statistic) text <- "The Ameijeiras-Alonso et al. (2018) excess mass test suggests that " if (rez$p < .05) { text <- paste0( text, "the distribution is significantly multimodal (excess mass = ", insight::format_value(rez$excess_mass), ", ", insight::format_p(rez$p), ").\n" ) color <- "green" } else { text <- paste0( text, "the hypothesis of a multimodal distribution cannot be rejected (excess mass = ", insight::format_value(rez$excess_mass), ", ", insight::format_p(rez$p), ").\n" ) color <- "yellow" } attr(rez, "text") <- text attr(rez, "color") <- color attr(rez, "title") <- "Is the variable multimodal?" class(rez) <- c("easystats_check", class(rez)) rez } performance/R/r2_somers.R0000644000176200001440000000225514063671504015024 0ustar liggesusers#' @title Somers' Dxy rank correlation for binary outcomes #' @name r2_somers #' #' @description Calculates the Somers' Dxy rank correlation for logistic regression models. #' #' @param model A logistic regression model. #' #' @return A named vector with the R2 value. #' #' @examples #' \dontrun{ #' if (require("correlation")) { #' model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") #' r2_somers(model) #' } #' } #' #' @references Somers, R. H. (1962). A new asymmetric measure of association for #' ordinal variables. American Sociological Review. 27 (6). #' @export r2_somers <- function(model) { info <- insight::model_info(model, verbose = FALSE) if (!info$is_binomial) { stop("'r2_somers()' only accepts logistic regression models.", call. = FALSE) } insight::check_if_installed("correlation") input <- data.frame( y = .recode_to_zero(insight::get_response(model, verbose = FALSE)), pred = stats::predict(model, type = "response"), stringsAsFactors = FALSE ) out <- correlation::cor_test(input, "y", "pred", method = "somers") r2somers <- out$Dxy names(r2somers) <- "Somers' Dxy" r2somers } performance/R/check_homogeneity.R0000644000176200001440000001363514117336011016570 0ustar liggesusers#' Check model for homogeneity of variances #' #' Check model for homogeneity of variances between groups described #' by independent variables in a model. #' #' @param x A linear model or an ANOVA object. #' @param method Name of the method (underlying test) that should be performed #' to check the homogeneity of variances. May either be `"levene"` for #' Levene's Test for Homogeneity of Variance, `"bartlett"` for the #' Bartlett test (assuming normal distributed samples or groups), #' `"fligner"` for the Fligner-Killeen test (rank-based, non-parametric #' test), or `"auto"`. In the latter case, Bartlett test is used if the #' model response is normal distributed, else Fligner-Killeen test is used. #' @param ... Arguments passed down to `car::leveneTest()`. #' #' @return Invisibly returns the p-value of the test statistics. A p-value < #' 0.05 indicates a significant difference in the variance between the groups. #' #' @note There is also a [`plot()`-method](https://easystats.github.io/see/articles/performance.html) implemented in the \href{https://easystats.github.io/see/}{\pkg{see}-package}. #' #' @examples #' model <<- lm(len ~ supp + dose, data = ToothGrowth) #' check_homogeneity(model) #' #' # plot results #' if (require("see")) { #' result <- check_homogeneity(model) #' plot(result) #' } #' @export check_homogeneity <- function(x, method = c("bartlett", "fligner", "levene", "auto"), ...) { UseMethod("check_homogeneity") } #' @export check_homogeneity.default <- function(x, method = c("bartlett", "fligner", "levene", "auto"), ...) { method <- match.arg(method) resp <- insight::find_response(x) pred <- insight::find_predictors(x, component = "conditional", flatten = TRUE) # edge case, whitespace in name, so surround with backticks ws_pred <- pred != make.names(pred) if (any(ws_pred)) { pred[ws_pred] <- paste0("`", pred[ws_pred], "`") } if (length(pred) > 1) { pred <- paste0("interaction(", paste0(pred, collapse = ", "), ")", collapse = "") } f <- stats::as.formula(sprintf("%s ~ %s", resp, pred)) if (method == "auto") { check <- tryCatch( { utils::capture.output(p <- check_normality(x)) p }, error = function(e) { NULL } ) if (is.null(check)) { insight::print_color("'check_homogeneity()' cannot perform check for normality. Please specify the 'method'-argument for the test of equal variances.\n", "red") return(NULL) } method <- ifelse(check < 0.05, "fligner", "bartlett") } if (method == "fligner") { r <- stats::fligner.test(f, data = insight::get_data(x)) p.val <- r$p.value } else if (method == "bartlett") { r <- stats::bartlett.test(f, data = insight::get_data(x)) p.val <- r$p.value } else if (method == "levene") { insight::check_if_installed("car") r <- car::leveneTest(x, ...) p.val <- r$`Pr(>F)` } method.string <- switch(method, "bartlett" = "Bartlett Test", "fligner" = "Fligner-Killeen Test", "levene" = "Levene's Test" ) if (is.na(p.val)) { warning(paste0("Could not perform ", method.string, "."), call. = FALSE) invisible(NULL) } else if (p.val < 0.05) { insight::print_color(sprintf("Warning: Variances differ between groups (%s, p = %.3f).\n", method.string, p.val), "red") } else { insight::print_color(sprintf("OK: There is not clear evidence for different variances across groups (%s, p = %.3f).\n", method.string, p.val), "green") } attr(p.val, "object_name") <- deparse(substitute(x), width.cutoff = 500) attr(p.val, "method") <- method.string class(p.val) <- unique(c("check_homogeneity", "see_check_homogeneity", class(p.val))) invisible(p.val) } #' @rdname check_homogeneity #' @export check_homogeneity.afex_aov <- function(x, method = "levene", ...) { if (!requireNamespace("car")) { stop("car required for this function to work.") } if (tolower(method) != "levene") { message("Only Levene's test for homogeneity supported for afex_aov") } if (length(attr(x, "between")) == 0) { stop("Levene test is only aplicable to ANOVAs with between-subjects factors.") } data <- x$data$long # Use this to also get id column dv <- attr(x, "dv") id <- attr(x, "id") between <- names(attr(x, "between")) is_covar <- sapply(attr(x, "between"), is.null) ag_data <- stats::aggregate(data[, dv], data[, c(between, id)], mean) colnames(ag_data)[length(c(between, id)) + 1] <- dv if (any(is_covar)) { warning(insight::format_message("Levene's test is not appropriate with quantitative explanatory variables. Testing assumption of homogeneity among factor groups only."), call. = FALSE) # ## TODO maybe add as option? # warning("Testing assumption of homogeneity on residualzied data among factor groups only.", call. = FALSE) # ag_data[dv] <- stats::residuals(stats::lm(ag_data[,dv] ~ as.matrix(ag_data[between[is_covar]]))) between <- between[!is_covar] } form <- stats::formula(paste0(dv, "~", paste0(between, collapse = "*"))) test <- car::leveneTest(form, ag_data, center = mean, ...) p.val <- test[1, "Pr(>F)"] method.string <- "Levene's Test" if (is.na(p.val)) { warning(paste0("Could not perform ", method.string, "."), call. = FALSE) invisible(NULL) } else if (p.val < 0.05) { insight::print_color(sprintf("Warning: Variances differ between groups (%s, p = %.3f).\n", method.string, p.val), "red") } else { insight::print_color(sprintf("OK: There is not clear evidence for different variances across groups (%s, p = %.3f).\n", method.string, p.val), "green") } attr(p.val, "object_name") <- deparse(substitute(x), width.cutoff = 500) attr(p.val, "method") <- method.string class(p.val) <- unique(c("check_homogeneity", "see_check_homogeneity", class(p.val))) invisible(p.val) } performance/R/r2_coxsnell.R0000644000176200001440000001230014073606417015335 0ustar liggesusers#' @title Cox & Snell's R2 #' @name r2_coxsnell #' #' @description #' Calculates the pseudo-R2 value based on the proposal from \cite{Cox & Snell #' (1989)}. #' #' @param model Model with binary outcome. #' @param ... Currently not used. #' #' @details #' This index was proposed by \cite{Cox & Snell (1989, pp. 208-9)} and, #' apparently independently, by \cite{Magee (1990)}; but had been suggested #' earlier for binary response models by \cite{Maddala (1983)}. However, this #' index achieves a maximum of less than 1 for discrete models (i.e. models #' whose likelihood is a product of probabilities) which have a maximum of 1, #' instead of densities, which can become infinite \cite{(Nagelkerke, 1991)}. #' #' @return A named vector with the R2 value. #' #' @examples #' model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") #' r2_coxsnell(model) #' @references #' \itemize{ #' \item Cox, D. R., Snell, E. J. (1989). Analysis of binary data (Vol. 32). #' Monographs on Statistics and Applied Probability. #' #' \item Magee, L. (1990). R 2 measures based on Wald and likelihood ratio #' joint significance tests. The American Statistician, 44(3), 250-253. #' #' \item Maddala, G. S. (1986). Limited-dependent and qualitative variables in #' econometrics (No. 3). Cambridge university press. #' #' \item Nagelkerke, N. J. (1991). A note on a general definition of the #' coefficient of determination. Biometrika, 78(3), 691-692. #' } #' @export r2_coxsnell <- function(model, ...) { UseMethod("r2_coxsnell") } # helper --------------------------- .r2_coxsnell <- function(model, l_base) { l_full <- insight::get_loglikelihood(model) G2 <- -2 * (l_base - l_full) # Is it still necessary? if (inherits(model, c("vglm", "vgam", "clm2"))) { n <- suppressWarnings(insight::n_obs(model)) } else { n <- attr(l_full, "nobs") if (is.null(n)) n <- suppressWarnings(insight::n_obs(model)) } r2_coxsnell <- as.vector(1 - exp(-G2 / n)) names(r2_coxsnell) <- "Cox & Snell's R2" r2_coxsnell } # r2-coxsnell based on model information --------------------------- #' @export r2_coxsnell.glm <- function(model, verbose = TRUE, ...) { info <- insight::model_info(model) if (info$is_binomial && !info$is_bernoulli && class(model)[1] == "glm") { if (verbose) { warning(insight::format_message("Can't calculate accurate R2 for binomial models that are not Bernoulli models."), call. = FALSE) } return(NULL) } else { # if no deviance, return NA if (is.null(model$deviance)) { return(NULL) } r2_coxsnell <- (1 - exp((model$deviance - model$null.deviance) / insight::n_obs(model))) names(r2_coxsnell) <- "Cox & Snell's R2" r2_coxsnell } } #' @export r2_coxsnell.BBreg <- r2_coxsnell.glm #' @export r2_coxsnell.mclogit <- r2_coxsnell.glm #' @export r2_coxsnell.bife <- function(model, ...) { r2_coxsnell <- (1 - exp((model$deviance - model$null_deviance) / insight::n_obs(model))) names(r2_coxsnell) <- "Cox & Snell's R2" r2_coxsnell } # mfx models --------------------- #' @export r2_coxsnell.logitmfx <- function(model, ...) { r2_coxsnell(model$fit, ...) } #' @export r2_coxsnell.logitor <- r2_coxsnell.logitmfx #' @export r2_coxsnell.poissonirr <- r2_coxsnell.logitmfx #' @export r2_coxsnell.poissonmfx <- r2_coxsnell.logitmfx #' @export r2_coxsnell.probit <- r2_coxsnell.logitmfx #' @export r2_coxsnell.negbinirr <- r2_coxsnell.logitmfx #' @export r2_coxsnell.negbinmfx <- r2_coxsnell.logitmfx # r2-coxsnell based on loglik stored in model object --------------------------- #' @export r2_coxsnell.coxph <- function(model, ...) { l_base <- model$loglik[1] .r2_coxsnell(model, l_base) } #' @export r2_coxsnell.survreg <- r2_coxsnell.coxph #' @export r2_coxsnell.svycoxph <- function(model, ...) { l_base <- model$ll[1] .r2_coxsnell(model, l_base) } # r2-coxsnell based on loglik of null-model (update) --------------------------- #' @export r2_coxsnell.multinom <- function(model, ...) { l_base <- insight::get_loglikelihood(stats::update(model, ~1, trace = FALSE)) .r2_coxsnell(model, l_base) } #' @export r2_coxsnell.clm2 <- function(model, ...) { l_base <- insight::get_loglikelihood(stats::update(model, location = ~1, scale = ~1)) .r2_coxsnell(model, l_base) } #' @export r2_coxsnell.bayesx <- function(model, ...) { junk <- utils::capture.output(l_base <- insight::get_loglikelihood(stats::update(model, ~1))) .r2_coxsnell(model, l_base) } #' @export r2_coxsnell.clm <- function(model, ...) { l_base <- insight::get_loglikelihood(stats::update(model, ~1)) # if no loglik, return NA if (length(as.numeric(l_base)) == 0) { return(NULL) } .r2_coxsnell(model, l_base) } #' @export r2_coxsnell.crch <- r2_coxsnell.clm #' @export r2_coxsnell.cpglm <- r2_coxsnell.clm #' @export r2_coxsnell.censReg <- r2_coxsnell.clm #' @export r2_coxsnell.truncreg <- r2_coxsnell.clm #' @export r2_coxsnell.polr <- r2_coxsnell.clm #' @export r2_coxsnell.glmx <- r2_coxsnell.clm #' @export r2_coxsnell.DirichletRegModel <- r2_coxsnell.clm performance/R/helpers.R0000644000176200001440000000673114056373005014553 0ustar liggesusers# trim leading / trailing whitespaces .trim <- function(x) gsub("^\\s+|\\s+$", "", x) .get_BIC <- function(x) { if (inherits(x, c("vgam", "vglm"))) { insight::check_if_installed("VGAM") VGAM::BIC(x) } else if (inherits(x, "bayesx")) { stats::BIC(x)[["BIC"]] } else { tryCatch( { stats::BIC(x) }, error = function(e) { NULL } ) } } # safe deparse, works for very long strings .safe_deparse <- function(string) { paste0(sapply(deparse(string, width.cutoff = 500), .trim, simplify = TRUE), collapse = "") } # is string empty? .is_empty_object <- function(x) { if (is.list(x)) { x <- tryCatch( { .compact_list(x) }, error = function(x) { x } ) } # this is an ugly fix because of ugly tibbles if (inherits(x, c("tbl_df", "tbl"))) x <- as.data.frame(x) x <- suppressWarnings(x[!is.na(x)]) length(x) == 0 || is.null(x) } # has object an element with given name? .obj_has_name <- function(x, name) { name %in% names(x) } .std <- function(x) { if (!is.numeric(x)) { return(x) } # remove missings tmp <- stats::na.omit(x) # standardize tmp <- (tmp - mean(tmp)) / stats::sd(tmp) # and fill in values in original vector x[!is.na(x)] <- tmp x } # recode numeric vector, so lowest value stats with 0 # factors are coerced to numeric .recode_to_zero <- function(x) { # check if factor if (is.factor(x) || is.character(x)) { # try to convert to numeric x <- .factor_to_numeric(x) } # retrieve lowest category minval <- min(x, na.rm = TRUE) sapply(x, function(y) y - minval) } # safe conversion from factor to numeric .factor_to_numeric <- function(x, lowest = NULL) { if (is.data.frame(x)) { as.data.frame(lapply(x, .factor_to_numeric_helper, lowest = lowest)) } else { .factor_to_numeric_helper(x, lowest = lowest) } } .factor_to_numeric_helper <- function(x, lowest = NULL) { if (is.numeric(x)) { return(x) } if (is.logical(x)) { return(as.numeric(x)) } if (anyNA(suppressWarnings(as.numeric(as.character(stats::na.omit(x)))))) { if (is.character(x)) { x <- as.factor(x) } x <- droplevels(x) levels(x) <- 1:nlevels(x) } out <- as.numeric(as.character(x)) if (!is.null(lowest)) { difference <- min(out) - lowest out <- out - difference } out } # remove NULL elements from lists .compact_list <- function(x, remove_na = FALSE) { if (remove_na) { x[!sapply(x, function(i) length(i) == 0 || is.null(i) || (length(i) == 1 & is.na(i)) || any(i == "NULL", na.rm = TRUE))] } else { x[!sapply(x, function(i) length(i) == 0 || is.null(i) || any(i == "NULL", na.rm = TRUE))] } } # remove column .remove_column <- function(data, variables) { data[, -which(colnames(data) %in% variables), drop = FALSE] } .remove_backticks_from_parameter_names <- function(x) { if (is.data.frame(x)) { if ("Parameter" %in% colnames(x)) { x$Parameter <- gsub("`", "", x$Parameter, fixed = TRUE) } if ("Term" %in% colnames(x)) { x$Term <- gsub("`", "", x$Term, fixed = TRUE) } } x } .get_sigma <- function(model, verbose = TRUE) { s <- insight::get_sigma(model, ci = NULL, verbose = verbose) if (!is.null(s)) { as.numeric(s) } else { NULL } } performance/R/check_sphericity.R0000644000176200001440000000351614077615730016436 0ustar liggesusers#' @title Check model for violation of sphericity #' @name check_sphericity #' #' @description Check model for violation of sphericity #' #' @param x A model object. #' @param ... Arguments passed to `car::Anova`. #' #' @return Invisibly returns the p-values of the test statistics. A p-value < #' 0.05 indicates a violation of sphericity. #' #' @examples #' if (require("car")) { #' soils.mod <- lm( #' cbind(pH, N, Dens, P, Ca, Mg, K, Na, Conduc) ~ Block + Contour * Depth, #' data = Soils #' ) #' #' check_sphericity(Manova(soils.mod)) #' } #' @export check_sphericity <- function(x, ...) { UseMethod("check_sphericity") } #' @export check_sphericity.default <- function(x, ...) { stop("Test not supported yet for object of class ", class(x)[1]) } #' @export check_sphericity.Anova.mlm <- function(x, ...) { S <- summary(x, multivariate = FALSE, univariate = TRUE) test <- S$sphericity.tests p.val <- test[, 2] if (any(p.val < .05)) { pp <- p.val[p.val < .05] pp <- paste0("\n - ", names(pp), " (", insight::format_p(pp), ")", collapse = "") insight::print_color(sprintf("Warning: Sphericity violated for: %s.\n", pp), "red") } else { pp <- insight::format_p(min(p.val)) pp <- sub("=", ">", pp) insight::print_color(sprintf("OK: Data seems to be spherical (%s).\n", pp), "green") } invisible(p.val) } #' @export check_sphericity.afex_aov <- function(x, ...) { if (length(attr(x, "within")) == 0) { stop("Mauchly Test of Sphericity is only aplicable to ANOVAs with within-subjects factors.") } check_sphericity.Anova.mlm(x, ...) } #' @export check_sphericity.mlm <- function(x, ...) { if (!requireNamespace("car")) { stop("car required for this function to work.") } check_sphericity.Anova.mlm(car::Anova(x, ...)) } performance/R/performance_rmse.R0000644000176200001440000000372014077615731016443 0ustar liggesusers#' @title Root Mean Squared Error #' @name performance_rmse #' #' @description Compute root mean squared error for (mixed effects) models, #' including Bayesian regression models. #' #' @param model A model. #' @param normalized Logical, use `TRUE` if normalized rmse should be returned. #' @inheritParams model_performance.lm #' #' @details The RMSE is the square root of the variance of the residuals and indicates #' the absolute fit of the model to the data (difference between observed data #' to model's predicted values). It can be interpreted as the standard #' deviation of the unexplained variance, and is in the same units as the #' response variable. Lower values indicate better model fit. #' \cr \cr #' The normalized RMSE is the proportion of the RMSE related to the #' range of the response variable. Hence, lower values indicate #' less residual variance. #' #' @return Numeric, the root mean squared error. #' #' @examples #' if (require("nlme")) { #' m <- lme(distance ~ age, data = Orthodont) #' #' # RMSE #' performance_rmse(m, normalized = FALSE) #' #' # normalized RMSE #' performance_rmse(m, normalized = TRUE) #' } #' @export performance_rmse <- function(model, normalized = FALSE, verbose = TRUE) { tryCatch( { # compute rmse rmse_val <- sqrt(performance_mse(model, verbose = verbose)) # if normalized, divide by range of response if (normalized) { # get response resp <- .factor_to_numeric(insight::get_response(model, verbose = FALSE)) # compute rmse, normalized rmse_val <- rmse_val / (max(resp, na.rm = TRUE) - min(resp, na.rm = TRUE)) } rmse_val }, error = function(e) { if (inherits(e, c("simpleError", "error")) && verbose) { insight::print_color(e$message, "red") cat("\n") } NA } ) } #' @rdname performance_rmse #' @export rmse <- performance_rmse performance/R/check_convergence.R0000644000176200001440000000720514077615727016556 0ustar liggesusers#' @title Convergence test for mixed effects models #' @name check_convergence #' #' @description `check_convergence()` provides an alternative convergence #' test for `merMod`-objects. #' #' @param x A `merMod`-object. #' @param tolerance Indicates up to which value the convergence result is #' accepted. The smaller `tolerance` is, the stricter the test #' will be. #' @param ... Currently not used. #' #' @return `TRUE` if convergence is fine and `FALSE` if convergence #' is suspicious. Additionally, the convergence value is returned as attribute. #' #' @details \subsection{Convergence and log-likelihood}{ #' Convergence problems typically arise when the model hasn't converged #' to a solution where the log-likelihood has a true maximum. This may result #' in unreliable and overly complex (or non-estimable) estimates and standard #' errors. #' } #' \subsection{Inspect model convergence}{ #' **lme4** performs a convergence-check (see `?lme4::convergence`), #' however, as as discussed [here](https://github.com/lme4/lme4/issues/120) #' and suggested by one of the lme4-authors in #' [this comment](https://github.com/lme4/lme4/issues/120#issuecomment-39920269), #' this check can be too strict. `check_convergence()` thus provides an #' alternative convergence test for `merMod`-objects. #' } #' \subsection{Resolving convergence issues}{ #' Convergence issues are not easy to diagnose. The help page on #' `?lme4::convergence` provides most of the current advice about #' how to resolve convergence issues. Another clue might be large parameter #' values, e.g. estimates (on the scale of the linear predictor) larger than #' 10 in (non-identity link) generalized linear model *might* indicate #' [complete separation](https://stats.idre.ucla.edu/other/mult-pkg/faq/general/faqwhat-is-complete-or-quasi-complete-separation-in-logisticprobit-regression-and-how-do-we-deal-with-them/). #' Complete separation can be addressed by regularization, e.g. penalized #' regression or Bayesian regression with appropriate priors on the fixed effects. #' } #' \subsection{Convergence versus Singularity}{ #' Note the different meaning between singularity and convergence: singularity #' indicates an issue with the "true" best estimate, i.e. whether the maximum #' likelihood estimation for the variance-covariance matrix of the random effects #' is positive definite or only semi-definite. Convergence is a question of #' whether we can assume that the numerical optimization has worked correctly #' or not. #' } #' #' @examples #' if (require("lme4")) { #' data(cbpp) #' set.seed(1) #' cbpp$x <- rnorm(nrow(cbpp)) #' cbpp$x2 <- runif(nrow(cbpp)) #' #' model <- glmer( #' cbind(incidence, size - incidence) ~ period + x + x2 + (1 + x | herd), #' data = cbpp, #' family = binomial() #' ) #' #' check_convergence(model) #' } #' @export check_convergence <- function(x, tolerance = 0.001, ...) { UseMethod("check_convergence") } #' @export check_convergence.default <- function(x, tolerance = 0.001, ...) { insight::print_color(sprintf("check_convergence() does not work for models of class '%s'.\n", class(x)[1]), "red") } #' @export check_convergence.merMod <- function(x, tolerance = 0.001, ...) { insight::check_if_installed("Matrix") relgrad <- with(x@optinfo$derivs, Matrix::solve(Hessian, gradient)) # copy logical value, TRUE if convergence is OK retval <- max(abs(relgrad)) < tolerance # copy convergence value attr(retval, "gradient") <- max(abs(relgrad)) # return result retval } performance/R/r2_tjur.R0000644000176200001440000000300514077615732014500 0ustar liggesusers#' @title Tjur's R2 - coefficient of determination (D) #' @name r2_tjur #' #' @description This method calculates the Coefficient of Discrimination `D` #' (also known as Tjur's R2; \cite{Tjur, 2009}) for generalized linear (mixed) models #' for binary outcomes. It is an alternative to other pseudo-R2 values like #' Nagelkerke's R2 or Cox-Snell R2. The Coefficient of Discrimination `D` #' can be read like any other (pseudo-)R2 value. #' #' @param model Binomial Model. #' #' @return A named vector with the R2 value. #' #' @examples #' model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") #' r2_tjur(model) #' @references Tjur, T. (2009). Coefficients of determination in logistic regression models - A new proposal: The coefficient of discrimination. The American Statistician, 63(4), 366-372. #' #' @export r2_tjur <- function(model) { # check for valid object class if (!insight::model_info(model, verbose = FALSE)$is_binomial) { stop("`model` must be binomial.") } y <- .recode_to_zero(insight::get_response(model, verbose = FALSE)) pred <- stats::predict(model, type = "response", re.form = NULL) # delete pred for cases with missing residuals if (anyNA(stats::residuals(model))) { pred <- pred[!is.na(stats::residuals(model))] } categories <- unique(y) m1 <- mean(pred[which(y == categories[1])], na.rm = TRUE) m2 <- mean(pred[which(y == categories[2])], na.rm = TRUE) tjur_d <- abs(m2 - m1) names(tjur_d) <- "Tjur's R2" tjur_d } performance/R/print_md.R0000644000176200001440000000475514062460542014731 0ustar liggesusers#' @rdname display.performance_model #' @export print_md.performance_model <- function(x, digits = 2, ...) { formatted_table <- format( x = x, digits = digits, format = "markdown", ... ) insight::export_table( x = formatted_table, digits = digits, format = "markdown", caption = "Indices of model performance", align = "firstleft", ... ) } #' @export print_md.compare_performance <- function(x, digits = 2, ...) { table_caption <- "Comparison of Model Performance Indices" formatted_table <- format(x = x, digits = digits, format = "markdown", ...) if ("Performance_Score" %in% colnames(x)) { footer <- sprintf("Model %s (of class %s) performed best with an overall performance score of %s.", formatted_table$Model[1], formatted_table$Type[1], formatted_table$Performance_Score[1]) } else { footer <- NULL } insight::export_table( x = formatted_table, digits = digits, format = "markdown", caption = table_caption, footer = footer, align = "firstleft" ) } #' @export print_html.compare_performance <- function(x, digits = 2, ...) { table_caption <- "Comparison of Model Performance Indices" formatted_table <- format(x = x, digits = digits, format = "html", ...) if ("Performance_Score" %in% colnames(x)) { footer <- sprintf("Model %s (of class %s) performed best with an overall performance score of %s.", formatted_table$Model[1], formatted_table$Type[1], formatted_table$Performance_Score[1]) } else { footer <- NULL } insight::export_table( x = formatted_table, digits = digits, format = "html", caption = table_caption, footer = footer, align = "firstleft" ) } #' @export print_md.check_itemscale <- function(x, digits = 2, ...) { insight::export_table( lapply(1:length(x), function(i) { out <- x[[i]] attr(out, "caption") <- sprintf("Component %i", i) attr(out, "footer") <- sprintf( "Mean inter-item-correlation = %.3f Cronbach's alpha = %.3f", attributes(out)$item_intercorrelation, attributes(out)$cronbachs_alpha ) out }), digits = digits, format = "markdown", missing = "", align = "firstleft", zap_small = TRUE ) } # Reexports models ------------------------ #' @importFrom insight print_md #' @export insight::print_md #' @importFrom insight print_html #' @export insight::print_html performance/R/performance_rse.R0000644000176200001440000000126014077615731016263 0ustar liggesusers#' @title Residual Standard Error for Linear Models #' @name performance_rse #' #' @description Compute residual standard error of linear models. #' #' @inheritParams performance_rmse #' #' @details The residual standard error is the square root of the residual #' sum of squares divided by the residual degrees of freedom. #' #' @return Numeric, the residual standard error of `model`. #' #' @examples #' data(mtcars) #' m <- lm(mpg ~ hp + gear, data = mtcars) #' performance_rse(m) #' @export performance_rse <- function(model) { # Residual standard error sqrt(sum(insight::get_residuals(model)^2, na.rm = TRUE) / insight::get_df(model, type = "residual")) } performance/R/model_performance.rma.R0000644000176200001440000000734014077615731017355 0ustar liggesusers#' Performance of Meta-Analysis Models #' #' Compute indices of model performance for meta-analysis model from the #' \pkg{metafor} package. #' #' @param model A `rma` object as returned by `metafor::rma()`. #' @param metrics Can be `"all"` or a character vector of metrics to be #' computed (some of `c("AIC", "BIC", "I2", "H2", "TAU2", "R2", #' "CochransQ", "QE", "Omnibus", "QM")`). #' @param ... Arguments passed to or from other methods. #' @inheritParams model_performance.lm #' #' @return A data frame (with one row) and one column per "index" (see #' `metrics`). #' #' @details \subsection{Indices of fit}{ #' \itemize{ #' \item{**AIC**} {Akaike's Information Criterion, see #' `?stats::AIC`} #' #' \item{**BIC**} {Bayesian Information Criterion, see #' `?stats::BIC`} #' #' \item **I2**: For a random effects model, `I2` estimates (in #' percent) how much of the total variability in the effect size estimates #' can be attributed to heterogeneity among the true effects. For a #' mixed-effects model, `I2` estimates how much of the unaccounted #' variability can be attributed to residual heterogeneity. #' #' \item **H2**: For a random-effects model, `H2` estimates the #' ratio of the total amount of variability in the effect size estimates to #' the amount of sampling variability. For a mixed-effects model, `H2` #' estimates the ratio of the unaccounted variability in the effect size #' estimates to the amount of sampling variability. #' #' \item **TAU2**: The amount of (residual) heterogeneity in the random #' or mixed effects model. #' #' \item **CochransQ (QE)**: Test for (residual) Heterogeneity. Without #' moderators in the model, this is simply Cochran's Q-test. #' #' \item **Omnibus (QM)**: Omnibus test of parameters. #' #' \item **R2**: Pseudo-R2-statistic, which indicates the amount of #' heterogeneity accounted for by the moderators included in a fixed-effects #' model. #' } #' See the documentation for `?metafor::fitstats`. #' } #' #' @examples #' if (require("metafor")) { #' data(dat.bcg) #' dat <- escalc(measure = "RR", ai = tpos, bi = tneg, ci = cpos, di = cneg, data = dat.bcg) #' model <- rma(yi, vi, data = dat, method = "REML") #' model_performance(model) #' } #' @export model_performance.rma <- function(model, metrics = "all", verbose = TRUE, ...) { if (all(metrics == "all")) { metrics <- c("AIC", "BIC", "I2", "H2", "TAU2", "COCHRANSQ", "OMNIBUS", "R2") } else if (all(metrics == "common")) { metrics <- c("AIC", "BIC", "I2") } out <- list() attrib <- list() s <- summary(model) if ("AIC" %in% toupper(metrics)) { out$AIC <- performance_aic(model) } if ("BIC" %in% toupper(metrics)) { out$BIC <- .get_BIC(model) } if ("I2" %in% toupper(metrics)) { out$I2 <- s$I2 / 100 } if ("H2" %in% toupper(metrics)) { out$H2 <- s$H2 } if ("TAU2" %in% toupper(metrics)) { out$TAU2 <- s$tau2 } if (any(c("QE", "COCHRANSQ") %in% toupper(metrics))) { out$CochransQ <- s$QE out$p_CochransQ <- s$QEp out$df_error <- tryCatch( { stats::df.residual(model) }, error = function(e) { NULL } ) } if (any(c("QM", "OMNIBUS") %in% toupper(metrics))) { out$Omnibus <- s$QM out$p_Omnibus <- s$QMp } if ("R2" %in% toupper(metrics)) { R2 <- r2(model) if (!is.null(R2)) { attrib$r2 <- attributes(R2) out <- c(out, R2) } } out <- as.data.frame(.compact_list(out)) row.names(out) <- NULL class(out) <- c("performance_model", class(out)) # Add attributes attributes(out) <- c(attributes(out), attrib) out } performance/R/r2_nakagawa.R0000644000176200001440000001302614077615732015272 0ustar liggesusers#' @title Nakagawa's R2 for mixed models #' @name r2_nakagawa #' #' @description Compute the marginal and conditional r-squared value for #' mixed effects models with complex random effects structures. #' #' @param model A mixed effects model. #' @param by_group Logical, if `TRUE`, returns the explained variance #' at different levels (if there are multiple levels). This is essentially #' similar to the variance reduction approach by \cite{Hox (2010), pp. 69-78}. #' @param tolerance Tolerance for singularity check of random effects, to decide #' whether to compute random effect variances for the conditional r-squared #' or not. Indicates up to which value the convergence result is accepted. When #' `r2_nakagawa()` returns a warning, stating that random effect variances #' can't be computed (and thus, the conditional r-squared is `NA`), #' decrease the tolerance-level. See also [check_singularity()]. #' #' @return A list with the conditional and marginal R2 values. #' #' @details #' #' Marginal and conditional r-squared values for mixed models are calculated #' based on \cite{Nakagawa et al. 2017}. For more details on the computation of #' the variances, see `?insight::get_variance`. #' \cr \cr #' The marginal r-squared considers only the variance of the fixed effects, #' while the conditional r-squared takes both the fixed and random effects into #' account. The random effect variances are actually the mean random effect #' variances, thus the r-squared value is also appropriate for mixed models #' with random slopes or nested random effects (see \cite{Johnson 2014}). #' #' @references \itemize{ #' \item Hox, J. J. (2010). Multilevel analysis: techniques and applications #' (2nd ed). New York: Routledge. #' #' \item Johnson, P. C. D. (2014). Extension of Nakagawa & Schielzeth’s R2 GLMM #' to random slopes models. Methods in Ecology and Evolution, 5(9), 944–946. #' \doi{10.1111/2041-210X.12225} #' #' \item Nakagawa, S., & Schielzeth, H. (2013). A general and simple method for #' obtaining R2 from generalized linear mixed-effects models. Methods in #' Ecology and Evolution, 4(2), 133–142. \doi{10.1111/j.2041-210x.2012.00261.x} #' #' \item Nakagawa, S., Johnson, P. C. D., & Schielzeth, H. (2017). The #' coefficient of determination R2 and intra-class correlation coefficient from #' generalized linear mixed-effects models revisited and expanded. Journal of #' The Royal Society Interface, 14(134), 20170213. \doi{10.1098/rsif.2017.0213} #' } #' #' @examples #' if (require("lme4")) { #' model <- lmer(Sepal.Length ~ Petal.Length + (1 | Species), data = iris) #' r2_nakagawa(model) #' r2_nakagawa(model, by_group = TRUE) #' } #' @export r2_nakagawa <- function(model, by_group = FALSE, tolerance = 1e-5) { vars <- tryCatch( { insight::get_variance(model, tolerance = tolerance, name_fun = "r2()", name_full = "r-squared" ) }, error = function(e) { if (inherits(e, c("simpleError", "error"))) { insight::print_color(e$message, "red") cat("\n") } NULL } ) if (is.null(vars) || all(is.na(vars))) { return(NA) } # check if we have successfully computed all variance components... components <- c("var.fixed", "var.residual") check_elements <- sapply(components, function(.i) !is.null(vars[[.i]])) if (!all(check_elements)) { return(NA) } # compute R2 by group if (isTRUE(by_group)) { # with random slopes, explained variance is inaccurate if (!is.null(insight::find_random_slopes(model))) { warning(insight::format_message("Model contains random slopes. Explained variance by levels is not accurate."), call. = FALSE) } # null-model null_model <- insight::null_model(model) vars_null <- insight::get_variance(null_model, tolerance = tolerance) # names of group levels group_names <- insight::find_random(model, split_nested = TRUE, flatten = TRUE) # compute r2 by level r2_random <- 1 - (vars$var.intercept / vars_null$var.intercept) r2_fixed <- 1 - (vars$var.residual / vars_null$var.residual) out <- data.frame( Level = c("Level 1", group_names), R2 = c(r2_fixed, r2_random), stringsAsFactors = FALSE ) class(out) <- c("r2_nakagawa_by_group", "data.frame") out } else { # Calculate R2 values if (.is_empty_object(vars$var.random) || is.na(vars$var.random)) { # if no random effect variance, return simple R2 insight::print_color("Random effect variances not available. Returned R2 does not account for random effects.\n", "red") r2_marginal <- vars$var.fixed / (vars$var.fixed + vars$var.residual) r2_conditional <- NA } else { r2_marginal <- vars$var.fixed / (vars$var.fixed + vars$var.random + vars$var.residual) r2_conditional <- (vars$var.fixed + vars$var.random) / (vars$var.fixed + vars$var.random + vars$var.residual) } names(r2_conditional) <- "Conditional R2" names(r2_marginal) <- "Marginal R2" structure( class = "r2_nakagawa", list( "R2_conditional" = r2_conditional, "R2_marginal" = r2_marginal ) ) } } #' @export as.data.frame.r2_nakagawa <- function(x, row.names = NULL, optional = FALSE, ...) { data.frame( R2_conditional = x$R2_conditional, R2_marginal = x$R2_marginal, stringsAsFactors = FALSE, row.names = row.names, optional = optional, ... ) } performance/R/r2_bayes.R0000644000176200001440000002720014120565031014603 0ustar liggesusers#' @title Bayesian R2 #' @name r2_bayes #' #' @description Compute R2 for Bayesian models. For mixed models (including a #' random part), it additionally computes the R2 related to the fixed effects #' only (marginal R2). While `r2_bayes()` returns a single R2 value, #' `r2_posterior()` returns a posterior sample of Bayesian R2 values. #' #' @param model A Bayesian regression model (from **brms**, #' **rstanarm**, **BayesFactor**, etc). #' @param robust Logical, if `TRUE`, the median instead of mean is used to #' calculate the central tendency of the variances. #' @param ci Value or vector of probability of the CI (between 0 and 1) to be #' estimated. #' @param ... Arguments passed to `r2_posterior()`. #' @inheritParams model_performance.lm #' #' @return A list with the Bayesian R2 value. For mixed models, a list with the #' Bayesian R2 value and the marginal Bayesian R2 value. The standard errors #' and credible intervals for the R2 values are saved as attributes. #' #' @details `r2_bayes()` returns an "unadjusted" R2 value. See #' [r2_loo()] to calculate a LOO-adjusted R2, which comes #' conceptually closer to an adjusted R2 measure. #' \cr \cr #' For mixed models, the conditional and marginal R2 are returned. The marginal #' R2 considers only the variance of the fixed effects, while the conditional #' R2 takes both the fixed and random effects into account. #' \cr \cr #' `r2_posterior()` is the actual workhorse for `r2_bayes()` and #' returns a posterior sample of Bayesian R2 values. #' #' @examples #' library(performance) #' if (require("rstanarm") && require("rstantools")) { #' model <- stan_glm(mpg ~ wt + cyl, data = mtcars, chains = 1, iter = 500, refresh = 0) #' r2_bayes(model) #' #' model <- stan_lmer( #' Petal.Length ~ Petal.Width + (1 | Species), #' data = iris, #' chains = 1, #' iter = 500, #' refresh = 0 #' ) #' r2_bayes(model) #' } #' \dontrun{ #' if (require("BayesFactor")) { #' data(mtcars) #' #' BFM <- generalTestBF(mpg ~ qsec + gear, data = mtcars, progress = FALSE) #' FM <- lm(mpg ~ qsec + gear, data = mtcars) #' #' r2_bayes(FM) #' r2_bayes(BFM[3]) #' r2_bayes(BFM, average = TRUE) # across all models #' #' #' # with random effects: #' mtcars$gear <- factor(mtcars$gear) #' model <- lmBF( #' mpg ~ hp + cyl + gear + gear:wt, #' mtcars, #' progress = FALSE, #' whichRandom = c("gear", "gear:wt") #' ) #' r2_bayes(model) #' } #' #' if (require("brms")) { #' model <- brms::brm(mpg ~ wt + cyl, data = mtcars) #' r2_bayes(model) #' #' model <- brms::brm(Petal.Length ~ Petal.Width + (1 | Species), data = iris) #' r2_bayes(model) #' } #' } #' @references Gelman, A., Goodrich, B., Gabry, J., & Vehtari, A. (2018). R-squared for Bayesian regression models. The American Statistician, 1–6. \doi{10.1080/00031305.2018.1549100} #' @export r2_bayes <- function(model, robust = TRUE, ci = .95, verbose = TRUE, ...) { r2_bayesian <- r2_posterior(model, verbose = verbose, ...) if (is.null(r2_bayesian)) { return(NULL) } if (insight::is_multivariate(model)) { structure( class = "r2_bayes_mv", rapply(r2_bayesian, ifelse(robust, stats::median, mean)), "SE" = rapply(r2_bayesian, ifelse(robust, stats::mad, stats::sd)), # "Estimates" = rapply(r2_bayesian, bayestestR::point_estimate, centrality = "all", dispersion = TRUE), "CI" = rapply(r2_bayesian, bayestestR::hdi, ci = ci), "robust" = robust ) } else { structure( class = "r2_bayes", lapply(r2_bayesian, ifelse(robust, stats::median, mean)), "SE" = lapply(r2_bayesian, ifelse(robust, stats::mad, stats::sd)), # "Estimates" = lapply(r2_bayesian, bayestestR::point_estimate, centrality = "all", dispersion = TRUE), "CI" = lapply(r2_bayesian, bayestestR::hdi, ci = ci), "robust" = robust ) } } #' @export #' @rdname r2_bayes r2_posterior <- function(model, ...) { UseMethod("r2_posterior") } #' @export #' @rdname r2_bayes r2_posterior.brmsfit <- function(model, verbose = TRUE, ...) { insight::check_if_installed("rstantools") algorithm <- insight::find_algorithm(model) if (algorithm$algorithm != "sampling") { warning(insight::format_message("`r2()` only available for models fit using the 'sampling' algorithm."), call. = FALSE) return(NA) } tryCatch( { mi <- insight::model_info(model) if (insight::is_multivariate(model)) { res <- insight::find_response(model) if (mi[[1]]$is_mixed) { br2_mv <- list( "R2_Bayes" = rstantools::bayes_R2( model, re.form = NULL, re_formula = NULL, summary = FALSE ), "R2_Bayes_marginal" = rstantools::bayes_R2( model, re.form = NA, re_formula = NA, summary = FALSE ) ) br2 <- lapply(1:length(res), function(x) { list( "R2_Bayes" = unname(as.vector(br2_mv$R2_Bayes[, x])), "R2_Bayes_marginal" = unname(as.vector(br2_mv$R2_Bayes_marginal[, x])) ) }) names(br2) <- res } else { br2_mv <- list("R2_Bayes" = rstantools::bayes_R2(model, summary = FALSE)) br2 <- lapply(1:length(res), function(x) { list("R2_Bayes" = unname(as.vector(br2_mv$R2_Bayes[, x]))) }) names(br2) <- res } } else { if (mi$is_mixed) { br2 <- list( "R2_Bayes" = as.vector(rstantools::bayes_R2( model, re.form = NULL, re_formula = NULL, summary = FALSE )), "R2_Bayes_marginal" = as.vector(rstantools::bayes_R2( model, re.form = NA, re_formula = NA, summary = FALSE )) ) names(br2$R2_Bayes) <- rep("Conditional R2", length(br2$R2_Bayes)) names(br2$R2_Bayes_marginal) <- rep("Marginal R2", length(br2$R2_Bayes)) } else { br2 <- list("R2_Bayes" = as.vector(rstantools::bayes_R2(model, summary = FALSE))) names(br2$R2_Bayes) <- rep("R2", length(br2$R2_Bayes)) } } br2 }, error = function(e) { if (inherits(e, c("simpleError", "error"))) { insight::print_color(e$message, "red") cat("\n") } NULL } ) } #' @export #' @rdname r2_bayes r2_posterior.stanreg <- r2_posterior.brmsfit #' @export r2_posterior.stanmvreg <- function(model, verbose = TRUE, ...) { if (isTRUE(verbose)) { warning("Models of class 'stanmvreg' not yet supported.", call. = FALSE) } NULL } #' @param average Compute model-averaged index? See [bayestestR::weighted_posteriors()]. #' @inheritParams bayestestR::weighted_posteriors #' @inheritParams r2_bayes #' @export #' @rdname r2_bayes r2_posterior.BFBayesFactor <- function(model, average = FALSE, prior_odds = NULL, verbose = TRUE, ...) { mi <- insight::model_info(model, verbose = FALSE) if (!mi$is_linear || mi$is_correlation || mi$is_ttest || mi$is_binomial || mi$is_meta) { if (verbose) { warning("Can produce R2 only for linear models.", call. = FALSE) } return(NULL) } if (average) { return(.r2_posterior_model_average(model, prior_odds = prior_odds, verbose = verbose)) } insight::check_if_installed("rstantools") insight::check_if_installed("BayesFactor") # Estimates params <- insight::get_parameters(model, unreduce = FALSE) # remove sig and g cols params <- params[, !grepl(pattern = "^sig2$|^g_|^g$", colnames(params))] # Model Matrix mm <- BayesFactor::model.matrix(model[1]) colnames(mm)[1] <- "mu" # match? if ((length(colnames(params)) != length(colnames(mm))) || !all(colnames(params) == colnames(mm))) { if (utils::packageVersion("BayesFactor") < package_version("0.9.12.4.3")) { stop("R2 for BayesFactor models with random effects requires BayesFactor v0.9.12.4.3 or higher.", call. = FALSE) } stop("Woops, you seem to have stumbled on some weird edge case. Please file an issue at https://github.com/easystats/performance/issues", call. = FALSE) } # Compute R2! y <- insight::get_response(model, verbose = FALSE) yy <- as.matrix(params) %*% t(mm) r2s <- rstantools::bayes_R2(yy, y = y) r2_bayesian <- data.frame(R2_Bayes = r2s) rand <- insight::find_predictors(model[1], effects = "random", flatten = TRUE, verbose = FALSE) if (!is.null(rand)) { idx <- sapply(paste0("\\b", rand, "\\b"), grepl, x = colnames(params)) idx <- apply(idx, 1, any) params[idx] <- 0 yy <- as.matrix(params) %*% t(mm) r2s_marginal <- rstantools::bayes_R2(yy, y = y) r2_bayesian$R2_Bayes_marginal <- r2s_marginal } r2_bayesian } #' @keywords internal .r2_posterior_model_average <- function(model, prior_odds = NULL, verbose = TRUE) { insight::check_if_installed("BayesFactor") BFMods <- bayestestR::bayesfactor_models(model, verbose = FALSE) if (!is.null(BFMods$log_BF)) { BFMods$BF <- exp(BFMods$log_BF) } has_random <- !is.null(insight::find_predictors(model, effects = "random", flatten = TRUE)) if (any(is.na(BFMods$BF) | is.infinite(BFMods$BF))) { if (verbose) { warning(insight::format_message("Can't compute model-averaged index. One or more Bayes factors are NA or infinite."), call. = FALSE) } return(NULL) } # extract parameters intercept_only <- which(BFMods$Model == "1") params <- vector(mode = "list", length = nrow(BFMods)) for (m in seq_along(params)) { if (length(intercept_only) && m == intercept_only) { params[[m]] <- data.frame(R2_Bayes = rep(0, 4000)) } else if (m == 1) { # If the model is the "den" model params[[m]] <- suppressMessages(r2_posterior(1 / model[1])) } else { params[[m]] <- suppressMessages(r2_posterior(model[m - 1])) } # when there is no random effect, marginal = conditional if (has_random && is.null(params[[m]]$R2_Bayes_marginal)) { params[[m]]$R2_Bayes_marginal <- params[[m]]$R2_Bayes } } # Compute posterior model probabilities if (!is.null(prior_odds)) { prior_odds <- c(1, prior_odds) } else { prior_odds <- rep(1, nrow(BFMods)) } posterior_odds <- prior_odds * BFMods$BF posterior_odds <- posterior_odds[-1] / posterior_odds[1] do.call( bayestestR::weighted_posteriors, c(params, list(missing = 0, prior_odds = posterior_odds)) ) } #' @export as.data.frame.r2_bayes <- function(x, ...) { out <- data.frame( R2 = x$R2_Bayes, SD = attributes(x)$SE$R2_Bayes, CI = attributes(x)$CI$R2_Bayes$CI, CI_low = attributes(x)$CI$R2_Bayes$CI_low, CI_high = attributes(x)$CI$R2_Bayes$CI_high, stringsAsFactors = FALSE ) if (!is.null(x$R2_Bayes_marginal)) { out_marginal <- data.frame( R2 = x$R2_Bayes_marginal, SD = attributes(x)$SE$R2_Bayes_marginal, CI = attributes(x)$CI$R2_Bayes_marginal$CI, CI_low = attributes(x)$CI$R2_Bayes_marginal$CI_low, CI_high = attributes(x)$CI$R2_Bayes_marginal$CI_high, stringsAsFactors = FALSE ) out$Component <- "conditional" out_marginal$Component <- "marginal" out <- rbind(out, out_marginal) } out } performance/R/model_performance.lavaan.R0000644000176200001440000001363714077615731020046 0ustar liggesusers#' Performance of lavaan SEM / CFA Models #' #' Compute indices of model performance for SEM or CFA models from the #' \pkg{lavaan} package. #' #' @param model A \pkg{lavaan} model. #' @param metrics Can be `"all"` or a character vector of metrics to be #' computed (some of `c("Chisq", "Chisq_DoF", "Chisq_p", "Baseline", #' "Baseline_DoF", "Baseline_p", "CFI", "TLI", "NNFI", "RFI", "NFI", "PNFI", #' "IFI", "RNI", "Loglikelihood", "AIC", "BIC", "BIC_adjusted", "RMSEA", #' "SMRM")`). #' @param verbose Toggle off warnings. #' @param ... Arguments passed to or from other methods. #' #' @return A data frame (with one row) and one column per "index" (see #' `metrics`). #' #' @details \subsection{Indices of fit}{ #' \itemize{ #' \item **Chisq**: The model Chi-squared assesses overall fit and the #' discrepancy between the sample and fitted covariance matrices. Its p-value #' should be > .05 (i.e., the hypothesis of a perfect fit cannot be #' rejected). However, it is quite sensitive to sample size. #' #' \item **GFI/AGFI**: The (Adjusted) Goodness of Fit is the proportion #' of variance accounted for by the estimated population covariance. #' Analogous to R2. The GFI and the AGFI should be > .95 and > .90, #' respectively. #' #' \item **NFI/NNFI/TLI**: The (Non) Normed Fit Index. An NFI of 0.95, #' indicates the model of interest improves the fit by 95\% relative to the #' null model. The NNFI (also called the Tucker Lewis index; TLI) is #' preferable for smaller samples. They should be > .90 (Byrne, 1994) or > #' .95 (Schumacker & Lomax, 2004). #' #' \item **CFI**: The Comparative Fit Index is a revised form of NFI. #' Not very sensitive to sample size (Fan, Thompson, & Wang, 1999). Compares #' the fit of a target model to the fit of an independent, or null, model. It #' should be > .90. #' #' \item **RMSEA**: The Root Mean Square Error of Approximation is a #' parsimony-adjusted index. Values closer to 0 represent a good fit. It #' should be < .08 or < .05. The p-value printed with it tests the hypothesis #' that RMSEA is less than or equal to .05 (a cutoff sometimes used for good #' fit), and thus should be not significant. #' #' \item **RMR/SRMR**: the (Standardized) Root Mean Square Residual #' represents the square-root of the difference between the residuals of the #' sample covariance matrix and the hypothesized model. As the RMR can be #' sometimes hard to interpret, better to use SRMR. Should be < .08. #' #' \item **RFI**: the Relative Fit Index, also known as RHO1, is not #' guaranteed to vary from 0 to 1. However, RFI close to 1 indicates a good #' fit. #' #' \item **IFI**: the Incremental Fit Index (IFI) adjusts the Normed Fit #' Index (NFI) for sample size and degrees of freedom (Bollen's, 1989). Over #' 0.90 is a good fit, but the index can exceed 1. #' #' \item **PNFI**: the Parsimony-Adjusted Measures Index. There is no #' commonly agreed-upon cutoff value for an acceptable model for this index. #' Should be > 0.50. } #' #' See the documentation for `?lavaan::fitmeasures`. #' } #' #' \subsection{What to report}{ #' Kline (2015) suggests that at a minimum the following indices should be #' reported: The model **chi-square**, the **RMSEA**, the **CFI** #' and the **SRMR**. #' } #' #' @examples #' # Confirmatory Factor Analysis (CFA) --------- #' if (require("lavaan")) { #' structure <- " visual =~ x1 + x2 + x3 #' textual =~ x4 + x5 + x6 #' speed =~ x7 + x8 + x9 " #' model <- lavaan::cfa(structure, data = HolzingerSwineford1939) #' model_performance(model) #' } #' @references \itemize{ #' \item Byrne, B. M. (1994). Structural equation modeling with EQS and #' EQS/Windows. Thousand Oaks, CA: Sage Publications. #' #' \item Tucker, L. R., \& Lewis, C. (1973). The reliability coefficient for #' maximum likelihood factor analysis. Psychometrika, 38, 1-10. #' #' \item Schumacker, R. E., \& Lomax, R. G. (2004). A beginner's guide to #' structural equation modeling, Second edition. Mahwah, NJ: Lawrence Erlbaum #' Associates. #' #' \item Fan, X., B. Thompson, \& L. Wang (1999). Effects of sample size, #' estimation method, and model specification on structural equation modeling #' fit indexes. Structural Equation Modeling, 6, 56-83. #' #' \item Kline, R. B. (2015). Principles and practice of structural equation #' modeling. Guilford publications. #' } #' #' @export model_performance.lavaan <- function(model, metrics = "all", verbose = TRUE, ...) { insight::check_if_installed("lavaan") if (isTRUE(verbose)) { measures <- as.data.frame(t(as.data.frame(lavaan::fitmeasures(model, ...)))) } else { measures <- as.data.frame(t(as.data.frame(suppressWarnings(lavaan::fitmeasures(model, ...))))) } row.names(measures) <- NULL out <- data.frame( "Chi2" = measures$chisq, "Chi2_df" = measures$df, "p_Chi2" = measures$pvalue, "Baseline" = measures$baseline.chisq, "Baseline_df" = measures$baseline.df, "p_Baseline" = measures$baseline.pvalue, "GFI" = measures$gfi, "AGFI" = measures$agfi, "NFI" = measures$nfi, "NNFI" = measures$tli, "CFI" = measures$cfi, "RMSEA" = measures$rmsea, "RMSEA_CI_low" = measures$rmsea.ci.lower, "RMSEA_CI_high" = measures$rmsea.ci.upper, "p_RMSEA" = measures$rmsea.pvalue, "RMR" = measures$rmr, "SRMR" = measures$srmr, "RFI" = measures$rfi, "PNFI" = measures$pnfi, "IFI" = measures$ifi, "RNI" = measures$rni, "Loglikelihood" = measures$logl, "AIC" = measures$aic, "BIC" = measures$bic, "BIC_adjusted" = measures$bic2 ) if (all(metrics == "all")) { metrics <- names(out) } out <- out[, metrics] class(out) <- c("performance_lavaan", "performance_model", class(out)) out } performance/R/plot-methods.R0000644000176200001440000000270314077615731015533 0ustar liggesusers#' @export plot.performance_roc <- function(x, ...) { insight::check_if_installed("see", "to plot ROC-curves") NextMethod() } #' @export plot.check_outliers <- function(x, ...) { insight::check_if_installed("see", "to plot outliers") NextMethod() } #' @export plot.check_collinearity <- function(x, ...) { insight::check_if_installed("see", "to plot collinearity-check") NextMethod() } #' @export plot.check_distribution <- function(x, ...) { insight::check_if_installed("see", "to plot predicted distributions") NextMethod() } #' @export plot.check_distribution_numeric <- function(x, ...) { insight::check_if_installed("see", "to plot predicted distributions") NextMethod() } #' @export plot.check_normality <- function(x, ...) { insight::check_if_installed("see", "for residual plots") NextMethod() } #' @export plot.check_heteroscedasticity <- function(x, ...) { insight::check_if_installed("see", "for residual plots") NextMethod() } #' @export plot.check_homogeneity <- function(x, ...) { insight::check_if_installed("see", "for homogeneity plots") NextMethod() } #' @export plot.compare_performance <- function(x, ...) { insight::check_if_installed("see", "for model comparison plots") NextMethod() } #' @export plot.check_model <- function(x, ...) { insight::check_if_installed("see", "for model diagnositic plots") NextMethod() } performance/R/performance_roc.R0000644000176200001440000001072514077615731016263 0ustar liggesusers#' @title Simple ROC curve #' @name performance_roc #' #' @description This function calculates a simple ROC curves of x/y coordinates #' based on response and predictions of a binomial model. #' #' @param x A numeric vector, representing the outcome (0/1), or a model with #' binomial outcome. #' @param predictions If `x` is numeric, a numeric vector of same length #' as `x`, representing the actual predicted values. #' @param new_data If `x` is a model, a data frame that is passed to #' `predict()` as `newdata`-argument. If `NULL`, the ROC for #' the full model is calculated. #' @param ... One or more models with binomial outcome. In this case, #' `new_data` is ignored. #' #' @note There is also a [`plot()`-method](https://easystats.github.io/see/articles/performance.html) implemented in the \href{https://easystats.github.io/see/}{\pkg{see}-package}. #' #' @return A data frame with three columns, the x/y-coordinate pairs for the ROC #' curve (`Sensitivity` and `Specificity`), and a column with the #' model name. #' #' @examples #' library(bayestestR) #' data(iris) #' #' set.seed(123) #' iris$y <- rbinom(nrow(iris), size = 1, .3) #' folds <- sample(nrow(iris), size = nrow(iris) / 8, replace = FALSE) #' test_data <- iris[folds, ] #' train_data <- iris[-folds, ] #' #' model <- glm(y ~ Sepal.Length + Sepal.Width, data = train_data, family = "binomial") #' as.data.frame(performance_roc(model, new_data = test_data)) #' #' roc <- performance_roc(model, new_data = test_data) #' area_under_curve(roc$Specificity, roc$Sensitivity) #' #' m1 <- glm(y ~ Sepal.Length + Sepal.Width, data = iris, family = "binomial") #' m2 <- glm(y ~ Sepal.Length + Petal.Width, data = iris, family = "binomial") #' m3 <- glm(y ~ Sepal.Length + Species, data = iris, family = "binomial") #' performance_roc(m1, m2, m3) #' #' # if you have `see` package installed, you can also plot comparison of #' # ROC curves for different models #' if (require("see")) plot(performance_roc(m1, m2, m3)) #' @export performance_roc <- function(x, ..., predictions, new_data) { dots <- list(...) object_names <- c( .safe_deparse(substitute(x)), sapply(match.call(expand.dots = FALSE)$`...`, .safe_deparse) ) if (insight::is_model(x)) { info <- insight::model_info(x) } else { info <- NULL } if (is.numeric(x) && !missing(predictions) && !is.null(predictions)) { .performance_roc_numeric(x, predictions) } else if (inherits(x, c("logitor", "logitmfx", "probitmfx", "model_fit")) && length(dots) == 0) { if (missing(new_data)) new_data <- NULL .performance_roc_model(x$fit, new_data) } else if (info$is_binomial && length(dots) == 0) { if (missing(new_data)) new_data <- NULL .performance_roc_model(x, new_data) } else if (length(dots) > 0) { .performance_roc_models(list(x, ...), names = object_names) } } .performance_roc_numeric <- function(x, predictions) { if (length(x) != length(predictions)) { stop("'x' and ' predictions' must be of same length.", call. = FALSE) } x <- .recode_to_zero(x) x <- x[order(predictions, decreasing = TRUE)] res <- data.frame( Sensitivity = c(0, cumsum(x) / sum(x), 1), Specificity = c(0, cumsum(!x) / sum(!x), 1) ) class(res) <- c("performance_roc", "see_performance_roc", "data.frame") res } .performance_roc_model <- function(x, new_data, model_name = "Model 1") { predictions <- stats::predict(x, newdata = new_data, type = "response") if (is.null(new_data)) new_data <- insight::get_data(x) response <- new_data[[insight::find_response(x)]] if ((is.data.frame(response) || is.matrix(response)) && ncol(response) > 1) { stop(insight::format_message("Can't calculate ROC for models with response-matrix (i.e. response variables with success/trials)."), call. = FALSE) } dat <- .performance_roc_numeric(response, predictions) dat$Model <- model_name dat } .performance_roc_models <- function(x, names) { l <- lapply(1:length(x), function(i) { if (.valid_roc_models(x[[i]])) { .performance_roc_model(x = x[[i]], new_data = NULL, model_name = names[i]) } else { warning("Object '", names[i], "' is not valid.", call. = FALSE) } }) do.call(rbind, l) } # add supported glm models here .valid_roc_models <- function(x) { if (inherits(x, "model_fit")) { x <- x$fit } inherits(x, c("glm", "glmerMod", "logitor", "logitmfx", "probitmfx")) } performance/R/performance_score.R0000644000176200001440000001551414077615731016614 0ustar liggesusers#' @title Proper Scoring Rules #' @name performance_score #' #' @description Calculates the logarithmic, quadratic/Brier and spherical score #' from a model with binary or count outcome. #' #' @param model Model with binary or count outcome. #' @inheritParams model_performance.lm #' #' @return A list with three elements, the logarithmic, quadratic/Brier and spherical score. #' #' @details Proper scoring rules can be used to evaluate the quality of model #' predictions and model fit. `performance_score()` calculates the logarithmic, #' quadratic/Brier and spherical scoring rules. The spherical rule takes values #' in the interval `[0, 1]`, with values closer to 1 indicating a more #' accurate model, and the logarithmic rule in the interval `[-Inf, 0]`, #' with values closer to 0 indicating a more accurate model. #' \cr \cr #' For `stan_lmer()` and `stan_glmer()` models, the predicted values #' are based on `posterior_predict()`, instead of `predict()`. Thus, #' results may differ more than expected from their non-Bayesian counterparts #' in **lme4**. #' #' @references Carvalho, A. (2016). An overview of applications of proper scoring rules. Decision Analysis 13, 223–242. \doi{10.1287/deca.2016.0337} #' #' @note Code is partially based on [GLMMadaptive::scoring_rules()](https://drizopoulos.github.io/GLMMadaptive/reference/scoring_rules.html). #' #' @seealso [`performance_logloss()`][performance_logloss] #' #' @examples #' ## Dobson (1990) Page 93: Randomized Controlled Trial : #' counts <- c(18, 17, 15, 20, 10, 20, 25, 13, 12) #' outcome <- gl(3, 1, 9) #' treatment <- gl(3, 3) #' model <- glm(counts ~ outcome + treatment, family = poisson()) #' #' performance_score(model) #' \dontrun{ #' if (require("glmmTMB")) { #' data(Salamanders) #' model <- glmmTMB( #' count ~ spp + mined + (1 | site), #' zi = ~ spp + mined, #' family = nbinom2(), #' data = Salamanders #' ) #' #' performance_score(model) #' } #' } #' @export performance_score <- function(model, verbose = TRUE) { # check special case if (inherits(model, c("logitor", "logitmfx", "probitmfx", "negbinirr", "negbinmfx", "poissonirr", "poissonmfx"))) { model <- model$fit } minfo <- insight::model_info(model, verbose = verbose) if (minfo$is_ordinal || minfo$is_multinomial) { if (verbose) insight::print_color("Can't calculate proper scoring rules for ordinal, multinomial or cumulative link models.\n", "red") return(list(logarithmic = NA, quadratic = NA, spherical = NA)) } resp <- insight::get_response(model, verbose = verbose) if (!is.null(ncol(resp)) && ncol(resp) > 1) { if (verbose) insight::print_color("Can't calculate proper scoring rules for models without integer response values.\n", "red") return(list(logarithmic = NA, quadratic = NA, spherical = NA)) } prob_fun <- if (minfo$is_binomial) { function(x, mean, pis, n) stats::dbinom(x, size = n, prob = mean) } else if (minfo$is_poisson && !minfo$is_zero_inflated) { function(x, mean, pis, n) stats::dpois(x, lambda = mean) } else if (minfo$is_negbin && !minfo$is_zero_inflated) { function(x, mean, pis, n) stats::dnbinom(x, mu = mean, size = exp(.dispersion_parameter(model, minfo))) } else if (minfo$is_poisson && minfo$is_zero_inflated && !minfo$is_hurdle) { function(x, mean, pis, n) { ind0 <- x == 0 out <- (1 - pis) * stats::dpois(x, lambda = mean / (1 - pis)) out[ind0] <- pis[ind0] + out[ind0] out } } else if (minfo$is_zero_inflated && minfo$is_negbin && !minfo$is_hurdle) { function(x, mean, pis, n) { ind0 <- x == 0 out <- (1 - pis) * stats::dnbinom(x, mu = mean / (1 - pis), size = exp(.dispersion_parameter(model, minfo))) out[ind0] <- pis[ind0] + out[ind0] out } } else if (minfo$is_hurdle && minfo$is_poisson) { function(x, mean, pis, n) { ind0 <- x == 0 trunc_zero <- stats::dpois(x, lambda = mean) / stats::ppois(0, lambda = mean, lower.tail = FALSE) out <- (1 - pis) * trunc_zero out[ind0] <- pis[ind0] out } } else if (minfo$is_hurdle && minfo$is_negbin) { function(x, mean, pis, n) { ind0 <- x == 0 trunc_zero <- stats::dnbinom(x, mu = mean, size = exp(.dispersion_parameter(model, minfo))) / stats::pnbinom(0, mu = mean, size = exp(.dispersion_parameter(model, minfo)), lower.tail = FALSE) out <- (1 - pis) * trunc_zero out[ind0] <- pis[ind0] out } } pr <- .predict_score_y(model) resp <- if (minfo$is_binomial) { .recode_to_zero(resp) } else { .factor_to_numeric(resp) } p_y <- prob_fun(resp, mean = pr$pred, pis = pr$pred_zi, sum(resp)) quadrat_p <- sum(p_y^2) structure( class = "performance_score", list( logarithmic = mean(log(p_y)), quadratic = mean(2 * p_y + quadrat_p), spherical = mean(p_y / sqrt(quadrat_p)) ) ) } .dispersion_parameter <- function(model, minfo) { if (inherits(model, "MixMod")) { model$phis } else if (inherits(model, "glmmTMB")) { if (minfo$is_zero_inflated) { insight::check_if_installed("glmmTMB") glmmTMB::getME(model, "theta") } else { sum(stats::residuals(model, type = "pearson")^2) / stats::df.residual(model) } } else { tryCatch( { sum(stats::residuals(model, type = "pearson")^2) / stats::df.residual(model) }, error = function(e) { 0 } ) } } .predict_score_y <- function(model) { pred <- NULL pred_zi <- NULL tryCatch( { if (inherits(model, "MixMod")) { pred <- stats::predict(model, type = "subject_specific") pred_zi <- if (!is.null(model$gammas)) attr(pred, "zi_probs") } else if (inherits(model, "glmmTMB")) { pred <- stats::predict(model, type = "response") pred_zi <- stats::predict(model, type = "zprob") } else if (inherits(model, c("hurdle", "zeroinfl"))) { pred <- stats::predict(model, type = "response") pred_zi <- stats::predict(model, type = "zero") } else if (inherits(model, c("clm", "clm2", "clmm"))) { pred <- stats::predict(model) } else if (all(inherits(model, c("stanreg", "lmerMod"), which = TRUE)) > 0) { insight::check_if_installed("rstanarm") pred <- colMeans(rstanarm::posterior_predict(model)) } else { pred <- stats::predict(model, type = "response") } }, error = function(e) { return(NULL) } ) list(pred = pred, pred_zi = pred_zi) } #' @export as.data.frame.performance_score <- function(x, row.names = NULL, ...) { data.frame( logarithmic = x$logarithmic, quadratic = x$quadratic, spherical = x$spherical, stringsAsFactors = FALSE, row.names = row.names, ... ) } performance/R/binned_residuals.R0000644000176200001440000001174214077615727016436 0ustar liggesusers#' @title Binned residuals for binomial logistic regression #' @name binned_residuals #' #' @description Check model quality of binomial logistic regression models. #' #' @param model A `glm`-object with *binomial*-family. #' @param term Name of independent variable from `x`. If not `NULL`, #' average residuals for the categories of `term` are plotted; else, #' average residuals for the estimated probabilities of the response are #' plotted. #' @param n_bins Numeric, the number of bins to divide the data. If #' `n_bins = NULL`, the square root of the number of observations is #' taken. #' @param ... Further argument like `size` (for point-size) or #' `color` (for point-colors). #' #' @return A data frame representing the data that is mapped in the accompanying #' plot. In case all residuals are inside the error bounds, points are black. #' If some of the residuals are outside the error bounds (indicated by the #' grey-shaded area), blue points indicate residuals that are OK, while red #' points indicate model under- or over-fitting for the relevant range of #' estimated probabilities. #' #' @details Binned residual plots are achieved by \dQuote{dividing the data into #' categories (bins) based on their fitted values, and then plotting #' the average residual versus the average fitted value for each bin.} #' \cite{(Gelman, Hill 2007: 97)}. If the model were true, one would #' expect about 95\% of the residuals to fall inside the error bounds. #' \cr \cr #' If `term` is not `NULL`, one can compare the residuals in #' relation to a specific model predictor. This may be helpful to check if a #' term would fit better when transformed, e.g. a rising and falling pattern #' of residuals along the x-axis is a signal to consider taking the logarithm #' of the predictor (cf. Gelman and Hill 2007, pp. 97-98). #' #' @note Since `binned_residuals()` returns a data frame, the default #' action for the result is *printing*. However, the `print()`-method for #' `binned_residuals()` actually creates a plot. For further #' modifications of the plot, use `print()` and add ggplot-layers to the #' return values, e.g. `print(binned_residuals(model)) + #' see::scale_color_pizza()`. #' #' @references #' Gelman, A., & Hill, J. (2007). Data analysis using regression and #' multilevel/hierarchical models. Cambridge; New York: Cambridge University #' Press. #' #' @examples #' if (require("see")) { #' # creating a model #' model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") #' #' # this will automatically plot the results #' (result <- binned_residuals(model)) #' #' # if you assign results to an object, you can also look at the dataframe #' as.data.frame(result) #' } #' @export binned_residuals <- function(model, term = NULL, n_bins = NULL, ...) { fv <- stats::fitted(model) mf <- insight::get_data(model) if (is.null(term)) { pred <- fv } else { pred <- mf[[term]] } y <- .recode_to_zero(insight::get_response(model, verbose = FALSE)) - fv if (is.null(n_bins)) n_bins <- round(sqrt(length(pred))) breaks.index <- floor(length(pred) * (1:(n_bins - 1)) / n_bins) breaks <- unique(c(-Inf, sort(pred)[breaks.index], Inf)) model.binned <- as.numeric(cut(pred, breaks)) d <- suppressWarnings(lapply(1:n_bins, function(.x) { items <- (1:length(pred))[model.binned == .x] model.range <- range(pred[items], na.rm = TRUE) xbar <- mean(pred[items], na.rm = TRUE) ybar <- mean(y[items], na.rm = TRUE) n <- length(items) sdev <- stats::sd(y[items], na.rm = TRUE) data.frame( xbar = xbar, ybar = ybar, n = n, x.lo = model.range[1], x.hi = model.range[2], se = 2 * sdev / sqrt(n) ) })) d <- do.call(rbind, d) d <- d[stats::complete.cases(d), ] gr <- abs(d$ybar) > abs(d$se) d$group <- "yes" d$group[gr] <- "no" resid_ok <- sum(d$group == "yes") / length(d$group) if (resid_ok < .8) { insight::print_color(sprintf("Warning: Probably bad model fit. Only about %g%% of the residuals are inside the error bounds.\n", round(100 * resid_ok)), "red") } else if (resid_ok < .95) { insight::print_color(sprintf("Warning: About %g%% of the residuals are inside the error bounds (~95%% or higher would be good).\n", round(100 * resid_ok)), "yellow") } else { insight::print_color(sprintf("Ok: About %g%% of the residuals are inside the error bounds.\n", round(100 * resid_ok)), "green") } add.args <- lapply(match.call(expand.dots = FALSE)$`...`, function(x) x) size <- if ("size" %in% names(add.args)) add.args[["size"]] else 2 color <- if ("color" %in% names(add.args)) add.args[["color"]] else c("#d11141", "#00aedb") class(d) <- c("binned_residuals", "see_binned_residuals", class(d)) attr(d, "resp_var") <- insight::find_response(model) attr(d, "term") <- term attr(d, "geom_size") <- size attr(d, "geom_color") <- color d } performance/R/get_gradients.R0000644000176200001440000000353614056373005015730 0ustar liggesusers# Tests # data(iris) # iris$w <- rnorm(nrow(iris), 1, .3) # x <- lm(Sepal.Length ~ Species * Sepal.Width, data=iris) # all(sandwich::estfun(x) == .get_gradients(x)) # x <- lm(Sepal.Length ~ Species * Sepal.Width + Petal.Length * Petal.Width, weights = w, data=iris) # all(sandwich::estfun(x) == .get_gradients(x)) # x <- glm(vs ~ mpg, data=mtcars, weights = wt) # all(sandwich::estfun(x) == .get_gradients(x)) .get_gradients <- function(x, ...) { UseMethod(".get_gradients") } .get_gradients.default <- function(x, ...) { insight::check_if_installed("sandwich") sandwich::estfun(x, ...) } # .get_gradients.lm <- function(x, ...) { # insight::get_residuals(x) * insight::get_weights(x, null_as_ones = TRUE) * insight::get_modelmatrix(x) # } # # .get_gradients.lmer <- .get_gradients.lm # # # # # .get_gradients.glm <- function(x, ...) { # w <- as.vector(residuals(x, "working")) * weights(x, "working") # if (substr(x$family$family, 1, 17) %in% c("poisson", "binomial", "Negative Binomial")) { # dispersion <- 1 # } else{ # dispersion <- sum(w^2, na.rm = TRUE)/sum(weights(x, "working"), na.rm = TRUE) # } # rez <- w * insight::get_modelmatrix(x) / dispersion # rez # } # # .get_gradients.glmer <- function(x, ...) { # w <- as.vector(insight::get_residuals(x, "working")) * insight::get_weights(x, "working") # w * insight::get_modelmatrix(x) / insight::get_auxiliary(x, type = "dispersion") # } .get_gradients.glmmTMB <- function(x, ...) { if (insight::model_info(x)$is_linear) { insight::get_residuals(x) * insight::get_weights(x, null_as_ones = TRUE) * insight::get_modelmatrix(x) } else { w <- as.vector(insight::get_residuals(x)) * insight::get_weights(x, null_as_ones = TRUE) w * insight::get_modelmatrix(x) / insight::get_auxiliary(x, type = "dispersion") } } performance/R/test_vuong.R0000644000176200001440000002011214056373005015273 0ustar liggesusers#' @rdname test_performance #' @export test_vuong <- function(...) { UseMethod("test_vuong") } #' @export test_vuong.default <- function(..., reference = 1) { # Attribute class to list and get names from the global environment objects <- insight::ellipsis_info(..., only_models = TRUE) names(objects) <- match.call(expand.dots = FALSE)$`...` # Sanity checks (will throw error if non-valid objects) .test_performance_checks(objects) # If a suitable class is found, run the more specific method on it if (inherits(objects, c("ListNestedRegressions", "ListNonNestedRegressions", "ListLavaan"))) { test_vuong(objects, reference = reference) } else { stop("The models cannot be compared for some reason :/") } } # TODO: Add a nice printing method with some interpretation (see nonnest2's output) #' @export test_vuong.ListNestedRegressions <- function(objects, ...) { .test_vuong(objects, nested = TRUE, reference = NULL) } #' @export test_vuong.ListNonNestedRegressions <- function(objects, reference = 1, ...) { .test_vuong(objects, nested = FALSE, reference = reference) } # ------------------------------------------------------------------------- # Utils ------------------------------------------------------------------- # ------------------------------------------------------------------------- # The code below is adapted from nonnest2: https://github.com/cran/nonnest2/blob/master/R/vuongtest.R # All credits go to its author # Testing snippets before each function were added for quick testing, but can be removed later # TODO: Get rid of dependencies. Currently the functions require: # - sandwich::estfun() # - CompQuadForm::imhof() .test_vuong <- function(objects, nested = FALSE, reference = NULL, ...) { out <- data.frame(Omega2 = NA, p_Omega2 = NA, LR = NA, p_LR = NA, stringsAsFactors = FALSE) for (i in 2:length(objects)) { if (is.null(reference)) { ref <- objects[[i - 1]] } else { ref <- objects[[reference]] } rez <- .test_vuong_pairs(ref, objects[[i]], nested = nested, adj = "none") out <- rbind(out, data.frame(Omega2 = rez$Omega2, p_Omega2 = rez$p_Omega2, LR = rez$LRTstat, p_LR = rez$p_LRT, stringsAsFactors = FALSE)) } out <- cbind(.test_performance_init(objects), out) attr(out, "is_nested") <- nested attr(out, "reference") <- reference class(out) <- c("test_performance", class(out)) out } # Vuong test for two models ----------------------------------------------- # ------------------------------------------------------------------------- # m1 <- lm(mpg ~ disp, data=mtcars) # m2 <- lm(mpg ~ drat, data=mtcars) # ref <- nonnest2::vuongtest(m1, m2, nested=FALSE) # rez <- .test_vuong(m1, m2, nested=FALSE) # all(ref$omega == rez$Omega2) # ref$p_omega == rez$p_Omega2 # ref$LRTstat == rez$LRTstat # # m1 <- lm(mpg ~ disp, data=mtcars) # m2 <- lm(mpg ~ disp + drat, data=mtcars) # object1 <- m1; object2 <- m2 # ref <- nonnest2::vuongtest(m1, m2, nested=TRUE) # rez <- .test_vuong(m1, m2, nested=TRUE) # all(ref$omega == rez$Omega2) # ref$p_omega == rez$p_Omega2 # ref$LRTstat == rez$LRTstat # # ref <- nonnest2::vuongtest(m2, m1, nested=TRUE) # rez <- .test_vuong(m2, m1, nested=TRUE) # all(ref$omega == rez$Omega2) # ref$p_omega == rez$p_Omega2 # ref$LRTstat == rez$LRTstat .test_vuong_pairs <- function(object1, object2, nested = FALSE, adj = "none") { insight::check_if_installed("CompQuadForm") # If nested==TRUE, find the full model and reverse if necessary if (nested) { dfs <- c(insight::get_df(object1, type = "residual"), insight::get_df(object2), type = "residual") if (order(dfs)[1] == 2) { temp <- object2 object2 <- object1 object1 <- temp } } # Get individual log-likelihoods llA <- attributes(insight::get_loglikelihood(object1))$per_obs llB <- attributes(insight::get_loglikelihood(object2))$per_obs # DISTINGUISABILITY TEST -------- # Eq (4.2) n <- insight::n_obs(object1) omega_hat_2 <- (n - 1) / n * stats::var(llA - llB, na.rm = TRUE) # Get p-value of weighted chi-square dist lamstar <- .test_vuong_lambda(object1, object2) # Note: dr package requires non-negative weights, which does not help when nested==TRUE # tmp <- dr::dr.pvalue(lamstar^2, n * omega_hat_2) # pOmega <- tmp[[4]] p <- suppressWarnings(CompQuadForm::imhof(n * omega_hat_2, lamstar^2)$Qq) # ROBUST LRTEST ----------- # Calculate likelihood ratio; Eq (6.4) lr <- sum(llA - llB, na.rm = TRUE) # Adjustments to likelihood ratio if (adj != "none") { # FIXME lavaan equality constraints; use df instead? nparA <- insight::n_parameters(object1, effects = "fixed") nparB <- insight::n_parameters(object2, effects = "fixed") if (adj == "aic") { lr <- lr - (nparA - nparB) } if (adj == "bic") { lr <- lr - (nparA - nparB) * log(n) / 2 } } # Null distribution and test stat depends on nested if (nested) { teststat <- 2 * lr p_LRTA <- CompQuadForm::imhof(teststat, -lamstar)[[1]] p_LRTB <- NA } else { teststat <- (1 / sqrt(n)) * lr / sqrt(omega_hat_2) ## Two 1-tailed p-values from a normal: p_LRTA <- stats::pnorm(teststat, lower.tail = FALSE) p_LRTB <- stats::pnorm(teststat) } rval <- list( Omega2 = omega_hat_2, p_Omega2 = p, LRTstat = teststat, p_LRT = min(c(p_LRTA, p_LRTB), na.rm = TRUE) ) rval } # Compute lambda (Eq 3.6) ------------------------------------------------- # ------------------------------------------------------------------------- # m1 <- lm(Sepal.Length ~ Petal.Width, data=iris) # m2 <- lm(Sepal.Length ~ Sepal.Width, data=iris) # ref <- nonnest2:::calcLambda(m1, m2, n=150, score1=NULL, score2=NULL, vc1=stats::vcov, vc2=stats::vcov) # rez <- .test_vuong_lambda(m1, m2) # all(ref == rez) .test_vuong_lambda <- function(model1, model2) { # Compute lambda (Eq 3.6) # Get AB AB1 <- .test_vuong_AB(model1) AB2 <- .test_vuong_AB(model2) # Eq (2.7) Bc <- crossprod(AB1$sc, AB2$sc) / AB1$n W <- cbind( rbind( -AB1$B %*% chol2inv(chol(AB1$A)), t(Bc) %*% chol2inv(chol(AB1$A)) ), rbind( -Bc %*% chol2inv(chol(AB2$A)), AB2$B %*% chol2inv(chol(AB2$A)) ) ) lamstar <- eigen(W, only.values = TRUE)$values # Discard imaginary part, as it only occurs for tiny eigenvalues? Re(lamstar) } # Compute AB (Eq 2.1 and 2.2) --------------------------------------------- # ------------------------------------------------------------------------- # m <- lm(Sepal.Length ~ Petal.Width * Species, data=iris) # ref <- nonnest2:::calcAB(m, n=150, scfun = NULL, vc = stats::vcov) # rez <- .test_vuong_AB(m) # all(ref$A == rez$A) # all(ref$B == rez$B) # all(ref$sc == rez$sc) # # structure <- " visual =~ x1 + x2 + x3 # textual =~ x4 + x5 + x6 # speed =~ x7 + x8 + x9 # # visual ~~ textual + speed " # model <- lavaan::sem(structure, data = lavaan::HolzingerSwineford1939) # ref <- nonnest2:::calcAB(model, n=insight::n_obs(model), scfun = NULL, vc = lavaan::vcov) # rez <- .test_vuong_AB(model) # all(ref$A == rez$A) # all(ref$B == rez$B) # all(ref$sc == rez$sc) .test_vuong_AB <- function(model) { # A, B as defined in Vuong Eq (2.1) and (2.2) n <- insight::n_obs(model) # Get A (Eq 2.1) if (inherits(model, "lavaan")) { insight::check_if_installed("lavaan") covmat <- lavaan::vcov(model) # model@vcov$vcov duplicates <- duplicated(colnames(covmat)) covmat <- n * covmat[!duplicates, !duplicates] scaling <- 1 } else { scaling <- insight::get_sigma(model, ci = NULL, verbose = FALSE)^2 if (is.null(scaling) || is.na(scaling)) scaling <- 1 covmat <- n * insight::get_varcov(model, component = "conditional") } A <- chol2inv(chol(covmat)) # Get B (Eq 2.2) sc <- (1 / scaling) * .get_gradients(model) sc.cp <- crossprod(sc) / n B <- matrix(sc.cp, nrow(A), nrow(A)) list(A = A, B = B, sc = sc, n = n) } performance/R/r2_kl.R0000644000176200001440000000164514077615732014132 0ustar liggesusers#' @title Kullback-Leibler R2 #' @name r2_kullback #' #' @description Calculates the Kullback-Leibler-divergence-based #' R2 for generalized linear models. #' #' @param model A generalized linear model. #' @param adjust Logical, if `TRUE` (the default), the adjusted R2 value is #' returned. #' #' @return A named vector with the R2 value. #' #' @examples #' model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") #' r2_kullback(model) #' @references #' Cameron, A. C. and Windmeijer, A. G. (1997) An R-squared measure of goodness #' of fit for some common nonlinear regression models. Journal of Econometrics, #' 77: 329-342. #' #' @export r2_kullback <- function(model, adjust = TRUE) { if (adjust) { adj <- model$df.null / model$df.residual } else { adj <- 1 } klr2 <- 1 - (model$deviance / model$null.deviance) * adj names(klr2) <- "Kullback-Leibler R2" klr2 } performance/R/check_heterogeneity_bias.R0000644000176200001440000000566314117453720020123 0ustar liggesusers#' Check model predictor for heterogeneity bias #' #' `check_heterogeneity_bias()` checks if model predictors or variables may #' cause a heterogeneity bias, i.e. if variables have a within- and/or #' between-effect. #' #' @param x A data frame or a mixed model object. #' @param select Character vector (or formula) with names of variables to select #' that should be checked. If `x` is a mixed model object, this argument #' will be ignored. #' @param group Character vector (or formula) with the name of the variable that #' indicates the group- or cluster-ID. If `x` is a model object, this #' argument will be ignored. #' #' @seealso #' For further details, read the vignette #' and also #' see documentation for `?datawizard::demean`. #' #' @examples #' data(iris) #' iris$ID <- sample(1:4, nrow(iris), replace = TRUE) # fake-ID #' check_heterogeneity_bias(iris, select = c("Sepal.Length", "Petal.Length"), group = "ID") #' @export check_heterogeneity_bias <- function(x, select = NULL, group = NULL) { if (insight::is_model(x)) { group <- insight::find_random(x, split_nested = TRUE, flatten = TRUE) if (is.null(group)) { stop("Model is no mixed model. Please provide a mixed model, or a data frame and arguments 'select' and 'group'.") } data <- insight::get_data(x) select <- insight::find_predictors(x, effects = "fixed", component = "conditional", flatten = TRUE) } else { if (inherits(select, "formula")) { select <- all.vars(select) } if (inherits(group, "formula")) { group <- all.vars(group) } data <- x } unique_groups <- .n_unique(data[[group]]) combinations <- expand.grid(select, group) result <- mapply(function(predictor, id) { # demean predictor d <- datawizard::demean(data, select = predictor, group = id, verbose = FALSE) # get new names within_name <- paste0(predictor, "_within") # check if any within-variable differs from zero. if yes, we have # a within-subject effect if (any(sum(abs(d[[within_name]]) > 1e-5, na.rm = TRUE) > 0)) { predictor } else { NULL } }, as.character(combinations[[1]]), as.character(combinations[[2]]), SIMPLIFY = FALSE) out <- unname(unlist(.compact_list(result))) if (is.null(out)) { message("No predictor found that could cause heterogeneity bias.") return(invisible(NULL)) } class(out) <- c("check_heterogeneity_bias", class(out)) out } #' @export print.check_heterogeneity_bias <- function(x, ...) { cat("Possible heterogeneity bias due to following predictors: ") insight::print_color(paste(x, collapse = ", "), "red") cat("\n") invisible(x) } #' @keywords internal .n_unique <- function(x, na.rm = TRUE) { if (is.null(x)) { return(0) } if (isTRUE(na.rm)) x <- stats::na.omit(x) length(unique(x)) } performance/R/r2_mckelvey.R0000644000176200001440000000472314077615732015343 0ustar liggesusers#' @title McKelvey & Zavoinas R2 #' @name r2_mckelvey #' #' @description Calculates McKelvey & Zavoinas pseudo R2. #' #' @param model Generalized linear model. #' #' @return The R2 value. #' #' @references #' \itemize{ #' \item McKelvey, R., Zavoina, W. (1975), "A Statistical Model for the Analysis of Ordinal Level Dependent Variables", Journal of Mathematical Sociology 4, S. 103–120. #' } #' #' @details McKelvey & Zavoinas R2 is based on the explained variance, #' where the variance of the predicted response is divided by the sum #' of the variance of the predicted response and residual variance. #' For binomial models, the residual variance is either `pi^2/3` #' for logit-link and 1 for probit-link. For poisson-models, the #' residual variance is based on log-normal approximation, similar to #' the *distribution-specific variance* as described in #' `?insight::get_variance`. #' #' #' @examples #' ## Dobson (1990) Page 93: Randomized Controlled Trial: #' counts <- c(18, 17, 15, 20, 10, 20, 25, 13, 12) # #' outcome <- gl(3, 1, 9) #' treatment <- gl(3, 3) #' model <- glm(counts ~ outcome + treatment, family = poisson()) #' #' r2_mckelvey(model) #' @export r2_mckelvey <- function(model) { UseMethod("r2_mckelvey") } #' @export r2_mckelvey.default <- function(model) { .r2_mckelvey(model) } .r2_mckelvey <- function(model) { faminfo <- insight::model_info(model) n <- insight::n_obs(model) if (faminfo$is_binomial | faminfo$is_ordinal | faminfo$is_multinomial) { dist.variance <- switch(faminfo$link_function, probit = 1, logit = pi^2 / 3, clogloglink = pi^2 / 6, NA ) } else if (faminfo$is_count) { dist.variance <- switch(faminfo$link_function, log = .get_poisson_variance(model), sqrt = 0.25, 0 ) } y.hat <- stats::predict(model, type = "link") # fix for VGAM yhat_columns <- ncol(y.hat) if (!is.null(yhat_columns) && yhat_columns > 1) y.hat <- as.vector(y.hat[, 1]) dist.residual <- sum((y.hat - mean(y.hat))^2) mckelvey <- dist.residual / (n * dist.variance + dist.residual) names(mckelvey) <- "McKelvey's R2" mckelvey } .null_model <- function(model) { stats::update(model, ~1) } .get_poisson_variance <- function(model) { mu <- exp(stats::coef(.null_model(model))) if (is.na(mu)) { return(0) } cvsquared <- stats::family(model)$variance(mu) / mu^2 log1p(cvsquared) } performance/R/r2_nagelkerke.R0000644000176200001440000001044214073606417015623 0ustar liggesusers#' @title Nagelkerke's R2 #' @name r2_nagelkerke #' #' @description Calculate Nagelkerke's pseudo-R2. #' #' @param model A generalized linear model, including cumulative links resp. #' multinomial models. #' @param ... Currently not used. #' #' @return A named vector with the R2 value. #' #' @examples #' model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") #' r2_nagelkerke(model) #' @references Nagelkerke, N. J. (1991). A note on a general definition of the coefficient of determination. Biometrika, 78(3), 691-692. #' #' @export r2_nagelkerke <- function(model, ...) { UseMethod("r2_nagelkerke") } # helper --------------------------- .r2_nagelkerke <- function(model, l_base) { L.full <- insight::get_loglikelihood(model) D.full <- -2 * L.full D.base <- -2 * l_base # Is it still necessary? if (inherits(model, c("vglm", "vgam", "clm2"))) { n <- insight::n_obs(model) } else { n <- attr(L.full, "nobs") if (is.null(n)) n <- insight::n_obs(model) } r2_nagelkerke <- as.vector((1 - exp((D.full - D.base) / n)) / (1 - exp(-D.base / n))) names(r2_nagelkerke) <- "Nagelkerke's R2" r2_nagelkerke } # Nagelkerke's R2 based on Cox&Snell's R2 ---------------- #' @export r2_nagelkerke.glm <- function(model, verbose = TRUE, ...) { info <- insight::model_info(model) if (info$is_binomial && !info$is_bernoulli && class(model)[1] == "glm") { if (verbose) { warning(insight::format_message("Can't calculate accurate R2 for binomial models that are not Bernoulli models."), call. = FALSE) } return(NULL) } else { r2cox <- r2_coxsnell(model) if (is.na(r2cox) || is.null(r2cox)) { return(NULL) } r2_nagelkerke <- r2cox / (1 - exp(-model$null.deviance / insight::n_obs(model))) names(r2_nagelkerke) <- "Nagelkerke's R2" r2_nagelkerke } } #' @export r2_nagelkerke.BBreg <- r2_nagelkerke.glm #' @export r2_nagelkerke.bife <- function(model, ...) { r2_nagelkerke <- r2_coxsnell(model) / (1 - exp(-model$null_deviance / insight::n_obs(model))) names(r2_nagelkerke) <- "Nagelkerke's R2" r2_nagelkerke } # mfx models --------------------- #' @export r2_nagelkerke.logitmfx <- function(model, ...) { r2_nagelkerke(model$fit, ...) } #' @export r2_nagelkerke.logitor <- r2_nagelkerke.logitmfx #' @export r2_nagelkerke.poissonirr <- r2_nagelkerke.logitmfx #' @export r2_nagelkerke.poissonmfx <- r2_nagelkerke.logitmfx #' @export r2_nagelkerke.probitmfx <- r2_nagelkerke.logitmfx #' @export r2_nagelkerke.negbinirr <- r2_nagelkerke.logitmfx #' @export r2_nagelkerke.negbinmfx <- r2_nagelkerke.logitmfx # Nagelkerke's R2 based on LogLik ---------------- #' @export r2_nagelkerke.multinom <- function(model, ...) { l_base <- insight::get_loglikelihood(stats::update(model, ~1, trace = FALSE)) .r2_nagelkerke(model, l_base) } #' @export r2_nagelkerke.clm2 <- function(model, ...) { l_base <- insight::get_loglikelihood(stats::update(model, location = ~1, scale = ~1)) .r2_nagelkerke(model, l_base) } #' @export r2_nagelkerke.clm <- function(model, ...) { l_base <- insight::get_loglikelihood(stats::update(model, ~1)) # if no loglik, return NA if (length(as.numeric(l_base)) == 0) { return(NULL) } .r2_nagelkerke(model, l_base) } #' @export r2_nagelkerke.polr <- r2_nagelkerke.clm #' @export r2_nagelkerke.cpglm <- r2_nagelkerke.clm #' @export r2_nagelkerke.bracl <- r2_nagelkerke.clm #' @export r2_nagelkerke.glmx <- r2_nagelkerke.clm #' @export r2_nagelkerke.brmultinom <- r2_nagelkerke.clm #' @export r2_nagelkerke.mclogit <- r2_nagelkerke.clm #' @export r2_nagelkerke.censReg <- r2_nagelkerke.clm #' @export r2_nagelkerke.truncreg <- r2_nagelkerke.clm #' @export r2_nagelkerke.DirichletRegModel <- r2_coxsnell.clm # Nagelkerke's R2 based on LogLik stored in model object ---------------- #' @export r2_nagelkerke.coxph <- function(model, ...) { l_base <- model$loglik[1] .r2_nagelkerke(model, l_base) } #' @export r2_nagelkerke.survreg <- r2_nagelkerke.coxph #' @export r2_nagelkerke.crch <- r2_nagelkerke.coxph #' @export r2_nagelkerke.svycoxph <- function(model, ...) { l_base <- model$ll[1] .r2_nagelkerke(model, l_base) } performance/R/item_split_half.R0000644000176200001440000000330714077615731016260 0ustar liggesusers#' @title Split-Half Reliability #' @name item_split_half #' #' @description Compute various measures of internal consistencies #' for tests or item-scales of questionnaires. #' #' @param x A matrix or a data frame. #' @param digits Amount of digits for returned values. #' #' @return A list with two elements: the split-half reliability `splithalf` #' and the Spearman-Brown corrected split-half reliability #' `spearmanbrown`. #' #' @details This function calculates the split-half reliability for items in #' `x`, including the Spearman-Brown adjustment. Splitting is done by #' selecting odd versus even columns in `x`. A value closer to 1 #' indicates greater internal consistency. #' #' @references #' \itemize{ #' \item Spearman C. 1910. Correlation calculated from faulty data. British #' Journal of Psychology (3): 271-295. \doi{10.1111/j.2044-8295.1910.tb00206.x} #' #' \item Brown W. 1910. Some experimental results in the correlation of mental #' abilities. British Journal of Psychology (3): 296-322. #' \doi{10.1111/j.2044-8295.1910.tb00207.x} #' } #' #' @examples #' data(mtcars) #' x <- mtcars[, c("cyl", "gear", "carb", "hp")] #' item_split_half(x) #' @export item_split_half <- function(x, digits = 3) { # Calculating total score for even items score_e <- rowMeans(x[, c(TRUE, FALSE)], na.rm = TRUE) # Calculating total score for odd items score_o <- rowMeans(x[, c(FALSE, TRUE)], na.rm = TRUE) # Correlating scores from even and odd items shr <- stats::cor(score_e, score_o, use = "complete.obs") # Adjusting with the Spearman-Brown prophecy formula sb.shr <- (2 * shr) / (1 + shr) list(splithalf = shr, spearmanbrown = sb.shr) } performance/R/check_heteroscedasticity.R0000644000176200001440000001331314077615727020154 0ustar liggesusers#' @title Check model for (non-)constant error variance #' @name check_heteroscedasticity #' #' @description Significance testing for linear regression models assumes that #' the model errors (or residuals) have constant variance. If this assumption #' is violated the p-values from the model are no longer reliable. #' #' @param x A model object. #' @param ... Currently not used. #' #' @return Invisibly returns the p-value of the test statistics. A p-value < #' 0.05 indicates a non-constant variance (heteroskedasticity). #' #' @note There is also a [`plot()`-method](https://easystats.github.io/see/articles/performance.html) implemented in the \href{https://easystats.github.io/see/}{\pkg{see}-package}. #' #' @details This test of the hypothesis of (non-)constant error is also called #' *Breusch-Pagan test* (\cite{1979}). #' #' @references Breusch, T. S., and Pagan, A. R. (1979) A simple test for heteroscedasticity and random coefficient variation. Econometrica 47, 1287–1294. #' #' @examples #' m <<- lm(mpg ~ wt + cyl + gear + disp, data = mtcars) #' check_heteroscedasticity(m) #' #' # plot results #' if (require("see")) { #' x <- check_heteroscedasticity(m) #' plot(x) #' } #' @export check_heteroscedasticity <- function(x, ...) { UseMethod("check_heteroscedasticity") } #' @name check_heteroscedasticity #' @aliases check_heteroscedasticity #' @export check_heteroskedasticity <- check_heteroscedasticity #' @export check_heteroscedasticity.default <- function(x, ...) { # only for linear models info <- insight::model_info(x) if (!info$is_linear) { msg <- "This Breusch-Pagan Test currently only works Gaussian models." if (info$is_count) { paste0(msg, " You may check your model for overdispersion or zero-inflation instead (see 'check_overdispersion()' and 'check_zeroinflation()').") } message(insight::format_message(msg)) return(NULL) } r <- .pearson_residuals(x) S.sq <- insight::get_df(x, type = "residual") * .sigma(x)^2 / sum(!is.na(r)) .U <- (r^2) / S.sq mod <- stats::lm(.U ~ stats::fitted(x)) SS <- stats::anova(mod)$"Sum Sq" RegSS <- sum(SS) - SS[length(SS)] Chisq <- RegSS / 2 p.val <- stats::pchisq(Chisq, df = 1, lower.tail = FALSE) if (p.val < 0.05) { insight::print_color(sprintf("Warning: Heteroscedasticity (non-constant error variance) detected (%s).\n", insight::format_p(p.val)), "red") } else { insight::print_color(sprintf("OK: Error variance appears to be homoscedastic (%s).\n", insight::format_p(p.val)), "green") } attr(p.val, "object_name") <- deparse(substitute(x), width.cutoff = 500) class(p.val) <- unique(c("check_heteroscedasticity", "see_check_heteroscedasticity", class(p.val))) invisible(p.val) } .sigma <- function(x) { s <- tryCatch( { estimates <- insight::get_parameters(x)$Estimate sqrt(insight::get_deviance(x) / (insight::n_obs(x) - sum(!is.na(estimates)))) }, error = function(e) { NULL } ) if (.is_empty_object(s)) { s <- insight::get_variance_residual(x, verbose = FALSE) } s } .pearson_residuals <- function(x) { pr <- tryCatch( { stats::residuals(x, type = "pearson") }, error = function(e) { NULL } ) if (.is_empty_object(pr) && inherits(x, c("glmmTMB", "MixMod"))) { faminfo <- insight::model_info(x) if (faminfo$is_zero_inflated) { if (faminfo$is_negbin) { pr <- .resid_zinb(x, faminfo) } else { pr <- .resid_zip(x, faminfo) } } } pr } .resid_zinb <- function(model, faminfo) { if (inherits(model, "glmmTMB")) { v <- stats::family(model)$variance # zi probability p <- stats::predict(model, type = "zprob") # mean of conditional distribution mu <- stats::predict(model, type = "conditional") # sigma betad <- model$fit$par["betad"] k <- switch(faminfo$family, gaussian = exp(0.5 * betad), Gamma = exp(-0.5 * betad), exp(betad) ) pvar <- (1 - p) * v(mu, k) + mu^2 * (p^2 + p) pred <- stats::predict(model, type = "response") ## (1 - p) * mu } else if (inherits(model, "MixMod")) { sig <- insight::get_variance_distribution(model, verbose = FALSE) p <- stats::plogis(stats::predict(model, type_pred = "link", type = "zero_part")) mu <- stats::predict(model, type_pred = "link", type = "mean_subject") v <- mu * (1 + sig) k <- sig pvar <- (1 - p) * v(mu, k) + mu^2 * (p^2 + p) pred <- stats::predict(model, type_pred = "response", type = "mean_subject") } else { sig <- insight::get_variance_distribution(model, verbose = FALSE) pvar <- mu * (1 + sig) pred <- stats::predict(model, type = "response") } # pearson residuals (insight::get_response(model, verbose = FALSE) - pred) / sqrt(pvar) } .resid_zip <- function(model, faminfo) { if (inherits(model, "glmmTMB")) { p <- stats::predict(model, type = "zprob") mu <- stats::predict(model, type = "conditional") pvar <- (1 - p) * (mu + p * mu^2) pred <- stats::predict(model, type = "response") ## (1 - p) * mu } else if (inherits(model, "MixMod")) { p <- stats::plogis(stats::predict(model, type_pred = "link", type = "zero_part")) mu <- stats::predict(model, type = "mean_subject") pvar <- (1 - p) * (mu + p * mu^2) pred <- stats::predict(model, type_pred = "response", type = "mean_subject") } else { sig <- insight::get_variance_distribution(model, verbose = FALSE) pvar <- mu * (1 + sig) pred <- stats::predict(model, type = "response") } # pearson residuals (insight::get_response(model) - pred) / sqrt(pvar) } performance/R/r2_efron.R0000644000176200001440000000257614073606417014635 0ustar liggesusers#' @title Efron's R2 #' @name r2_efron #' #' @description Calculates Efron's pseudo R2. #' #' @param model Generalized linear model. #' #' @return The R2 value. #' #' @details #' #' Efron's R2 is calculated by taking the sum of the squared model residuals, #' divided by the total variability in the dependent variable. This R2 equals #' the squared correlation between the predicted values and actual values, #' however, note that model residuals from generalized linear models are not #' generally comparable to those of OLS. #' #' @references #' \itemize{ #' \item Efron, B. (1978). Regression and ANOVA with zero-one data: Measures of residual variation. Journal of the American Statistical Association, 73, 113-121. #' } #' #' @examples #' ## Dobson (1990) Page 93: Randomized Controlled Trial: #' counts <- c(18, 17, 15, 20, 10, 20, 25, 13, 12) # #' outcome <- gl(3, 1, 9) #' treatment <- gl(3, 3) #' model <- glm(counts ~ outcome + treatment, family = poisson()) #' #' r2_efron(model) #' @export r2_efron <- function(model) { UseMethod("r2_efron") } #' @export r2_efron.default <- function(model) { .r2_efron(model) } .r2_efron <- function(model) { y_hat <- stats::predict(model, type = "response") y <- .factor_to_numeric(insight::get_response(model, verbose = FALSE), lowest = 0) (1 - (sum((y - y_hat)^2)) / (sum((y - mean(y))^2))) } performance/R/model_performance.kmeans.R0000644000176200001440000000136314077615731020053 0ustar liggesusers#' Model summary for k-means clustering #' #' @param model Object of type `kmeans`. #' @inheritParams model_performance.lm #' #' @examples #' # a 2-dimensional example #' x <- rbind( #' matrix(rnorm(100, sd = 0.3), ncol = 2), #' matrix(rnorm(100, mean = 1, sd = 0.3), ncol = 2) #' ) #' colnames(x) <- c("x", "y") #' model <- kmeans(x, 2) #' model_performance(model) #' @export model_performance.kmeans <- function(model, verbose = TRUE, ...) { out <- as.data.frame(model[c("totss", "tot.withinss", "betweenss", "iter")]) colnames(out) <- c( "Sum_Squares_Within", "Sum_Squares_Between", "Sum_Squares_Total", "Iterations" ) row.names(out) <- NULL class(out) <- c("performance_model", class(out)) out } performance/R/check_overdispersion.R0000644000176200001440000001307714077615727017337 0ustar liggesusers#' @title Check overdispersion of GL(M)M's #' @name check_overdispersion #' #' @description `check_overdispersion()` checks generalized linear (mixed) #' models for overdispersion. #' #' @param x Fitted model of class `merMod`, `glmmTMB`, `glm`, #' or `glm.nb` (package \pkg{MASS}). #' @param ... Currently not used. #' #' @return A list with results from the overdispersion test, like chi-squared #' statistics, p-value or dispersion ratio. #' #' @details Overdispersion occurs when the observed variance is higher than the #' variance of a theoretical model. For Poisson models, variance increases #' with the mean and, therefore, variance usually (roughly) equals the mean #' value. If the variance is much higher, the data are "overdispersed". #' #' \subsection{Interpretation of the Dispersion Ratio}{ #' If the dispersion ratio is close to one, a Poisson model fits well to the #' data. Dispersion ratios larger than one indicate overdispersion, thus a #' negative binomial model or similar might fit better to the data. A p-value < #' .05 indicates overdispersion. #' } #' #' \subsection{Overdispersion in Poisson Models}{ #' For Poisson models, the overdispersion test is based on the code from #' \cite{Gelman and Hill (2007), page 115}. #' } #' #' \subsection{Overdispersion in Mixed Models}{ #' For `merMod`- and `glmmTMB`-objects, `check_overdispersion()` #' is based on the code in the #' [GLMM FAQ](http://bbolker.github.io/mixedmodels-misc/glmmFAQ.html), #' section *How can I deal with overdispersion in GLMMs?*. Note that this #' function only returns an *approximate* estimate of an overdispersion #' parameter, and is probably inaccurate for zero-inflated mixed models (fitted #' with `glmmTMB`). #' } #' #' \subsection{How to fix Overdispersion}{ #' Overdispersion can be fixed by either modeling the dispersion parameter, or #' by choosing a different distributional family (like Quasi-Poisson, or #' negative binomial, see \cite{Gelman and Hill (2007), pages 115-116}). #' } #' #' @references \itemize{ #' \item Bolker B et al. (2017): #' [GLMM FAQ.](http://bbolker.github.io/mixedmodels-misc/glmmFAQ.html) #' \item Gelman, A., & Hill, J. (2007). Data analysis using regression and #' multilevel/hierarchical models. Cambridge; New York: Cambridge University #' Press. #' } #' #' #' @examples #' if (require("glmmTMB")) { #' data(Salamanders) #' m <- glm(count ~ spp + mined, family = poisson, data = Salamanders) #' check_overdispersion(m) #' #' m <- glmmTMB( #' count ~ mined + spp + (1 | site), #' family = poisson, #' data = Salamanders #' ) #' check_overdispersion(m) #' } #' @export check_overdispersion <- function(x, ...) { UseMethod("check_overdispersion") } #' @export check_overdispersion.default <- function(x, ...) { stop(paste0("'check_overdisperion()' not yet implemented for models of class '", class(x)[1], "'.")) } # Overdispersion for classical models ----------------------------- #' @export check_overdispersion.glm <- function(x, ...) { # check if we have poisson info <- insight::model_info(x) if (!info$is_poisson && !info$is_binomial) { stop("Model must be from Poisson or binomial family.", call. = FALSE) } # check for Bernoulli if (info$is_bernoulli) { stop("Model is not allowed to be a Bernoulli model.", call. = FALSE) } if (info$is_binomial) { return(check_overdispersion.merMod(x, ...)) } yhat <- stats::fitted(x) n <- stats::nobs(x) k <- length(insight::find_parameters(x, effects = "fixed", flatten = TRUE)) zi <- (insight::get_response(x, verbose = FALSE) - yhat) / sqrt(yhat) chisq <- sum(zi^2) ratio <- chisq / (n - k) p.value <- stats::pchisq(chisq, df = n - k, lower.tail = FALSE) structure( class = "check_overdisp", list( chisq_statistic = chisq, dispersion_ratio = ratio, residual_df = n - k, p_value = p.value ) ) } #' @export check_overdispersion.fixest <- check_overdispersion.glm #' @export check_overdispersion.glmx <- check_overdispersion.glm # mfx models ------------------------------ #' @export check_overdispersion.poissonmfx <- function(x, ...) { check_overdispersion(x$fit, ...) } #' @export check_overdispersion.poissonirr <- check_overdispersion.poissonmfx #' @export check_overdispersion.negbinirr <- check_overdispersion.poissonmfx #' @export check_overdispersion.negbinmfx <- check_overdispersion.poissonmfx #' @export check_overdispersion.model_fit <- check_overdispersion.poissonmfx # Overdispersion for mixed models --------------------------- #' @export check_overdispersion.merMod <- function(x, ...) { # check if we have poisson or binomial info <- insight::model_info(x) if (!info$is_poisson && !info$is_binomial) { stop("Model must be from Poisson or binomial family.", call. = FALSE) } # check for Bernoulli if (info$is_bernoulli) { stop("Model is not allowed to be a Bernoulli model.", call. = FALSE) } rdf <- stats::df.residual(x) rp <- stats::residuals(x, type = "pearson") Pearson.chisq <- sum(rp^2) prat <- Pearson.chisq / rdf pval <- stats::pchisq(Pearson.chisq, df = rdf, lower.tail = FALSE) structure( class = "check_overdisp", list( chisq_statistic = Pearson.chisq, dispersion_ratio = prat, residual_df = rdf, p_value = pval ) ) } #' @export check_overdispersion.negbin <- check_overdispersion.merMod #' @export check_overdispersion.glmmTMB <- check_overdispersion.merMod performance/R/model_performance.bife.R0000644000176200001440000000233313737643601017477 0ustar liggesusers#' @export model_performance.bife <- function(model, metrics = "all", verbose = TRUE, ...) { if (any(tolower(metrics) == "log_loss")) { metrics[tolower(metrics) == "log_loss"] <- "LOGLOSS" } if (all(metrics == "all")) { metrics <- c("AIC", "R2", "LOGLOSS", "PCP") } else if (all(metrics == "common")) { metrics <- c("AIC", "R2") } info <- insight::model_info(model) out <- list() attrib <- list() if ("AIC" %in% toupper(metrics)) { out$AIC <- performance_aic(model) } if ("R2" %in% toupper(metrics)) { R2 <- r2(model) attrib$r2 <- attributes(R2) out <- c(out, R2) } if (("LOGLOSS" %in% toupper(metrics)) && info$is_binomial) { .logloss <- performance_logloss(model, verbose = verbose) if (!is.na(.logloss)) out$Log_loss <- .logloss } if (("PCP" %in% toupper(metrics)) && info$is_binomial && !info$is_multinomial && !info$is_ordinal) { out$PCP <- performance_pcp(model, verbose = verbose)$pcp_model } # TODO: What with sigma and deviance? out <- as.data.frame(out) row.names(out) <- NULL class(out) <- c("performance_model", class(out)) # Add attributes attributes(out) <- c(attributes(out), attrib) out } performance/R/model_performance.lm.R0000644000176200001440000002161414077615731017206 0ustar liggesusers#' Performance of Regression Models #' #' Compute indices of model performance for regression models. #' #' @param model A model. #' @param metrics Can be `"all"`, `"common"` or a character vector of #' metrics to be computed (some of `c("AIC", "AICc", "BIC", "R2", #' "R2_adj", "RMSE", "SIGMA", "LOGLOSS", "PCP", "SCORE")`). `"common"` #' will compute AIC, BIC, R2 and RMSE. #' @param verbose Toggle off warnings. #' @param ... Arguments passed to or from other methods. #' #' @return #' A data frame (with one row) and one column per "index" (see `metrics`). #' #' @details Depending on `model`, following indices are computed: #' \itemize{ #' \item{**AIC**} {Akaike's Information Criterion, see `?stats::AIC`} #' \item{**AICc**} {Second-order (or small sample) AIC with a correction for small sample sizes} #' \item{**BIC**} {Bayesian Information Criterion, see `?stats::BIC`} #' \item{**R2**} {r-squared value, see [r2()]} #' \item{**R2_adj**} {adjusted r-squared, see [r2()]} #' \item{**RMSE**} {root mean squared error, see [performance_rmse()]} #' \item{**SIGMA**} {residual standard deviation, see [insight::get_sigma()]} #' \item{**LOGLOSS**} {Log-loss, see [performance_logloss()]} #' \item{**SCORE_LOG**} {score of logarithmic proper scoring rule, see [performance_score()]} #' \item{**SCORE_SPHERICAL**} {score of spherical proper scoring rule, see [performance_score()]} #' \item{**PCP**} {percentage of correct predictions, see [performance_pcp()]} #' } #' #' @examples #' model <- lm(mpg ~ wt + cyl, data = mtcars) #' model_performance(model) #' #' model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") #' model_performance(model) #' @export model_performance.lm <- function(model, metrics = "all", verbose = TRUE, ...) { if (any(tolower(metrics) == "log_loss")) { metrics[tolower(metrics) == "log_loss"] <- "LOGLOSS" } if (all(metrics == "all")) { metrics <- c("AIC", "BIC", "R2", "R2_adj", "RMSE", "SIGMA", "LOGLOSS", "PCP", "SCORE") } else if (all(metrics == "common")) { metrics <- c("AIC", "BIC", "R2", "R2_adj", "RMSE") } # check model formula if (verbose) { insight::formula_ok(model) } info <- suppressWarnings(insight::model_info(model, verbose = FALSE)) ## TODO remove is.list() once insight 0.8.3 is on CRAN if (is.null(info) || !is.list(info)) { info <- list(family = "unknown") } out <- list() attrib <- list() # AIC ------------- if ("AIC" %in% toupper(metrics)) { out$AIC <- tryCatch( { performance_aic(model) }, error = function(e) { NULL } ) } # AICc ------------- if ("AICC" %in% toupper(metrics)) { out$AICc <- tryCatch( { performance_aicc(model) }, error = function(e) { NULL } ) } # BIC ------------- if ("BIC" %in% toupper(metrics)) { out$BIC <- tryCatch( { .get_BIC(model) }, error = function(e) { NULL } ) } # R2 ------------- if (any(c("R2", "R2_ADJ") %in% toupper(metrics))) { R2 <- tryCatch( { r2(model, verbose = verbose) }, error = function(e) { NULL } ) if (!is.null(R2)) { attrib$r2 <- attributes(R2) if ("R2" %in% toupper(metrics) && "R2" %in% names(R2)) { out$R2 <- R2$R2 } if ("R2_ADJ" %in% toupper(metrics) && "R2_adjusted" %in% names(R2)) { out$R2_adjusted <- R2$R2_adjusted } if (!any(c("R2", "R2_adj") %in% names(R2))) { out <- c(out, R2) } } } # RMSE ------------- if ("RMSE" %in% toupper(metrics)) { out$RMSE <- tryCatch( { performance_rmse(model, verbose = verbose) }, error = function(e) { NULL } ) } # SIGMA ------------- if ("SIGMA" %in% toupper(metrics)) { out$Sigma <- tryCatch( { .get_sigma(model, verbose = verbose) }, error = function(e) { NULL } ) } # LOGLOSS ------------- if (("LOGLOSS" %in% toupper(metrics)) && isTRUE(info$is_binomial)) { out$Log_loss <- tryCatch( { .logloss <- performance_logloss(model, verbose = verbose) if (!is.na(.logloss)) { .logloss } else { NULL } }, error = function(e) { NULL } ) } # SCORE ------------- if (("SCORE" %in% toupper(metrics)) && (isTRUE(info$is_binomial) || isTRUE(info$is_count))) { .scoring_rules <- tryCatch( { performance_score(model, verbose = verbose) }, error = function(e) { NULL } ) if (!is.null(.scoring_rules)) { if (!is.na(.scoring_rules$logarithmic)) out$Score_log <- .scoring_rules$logarithmic if (!is.na(.scoring_rules$spherical)) out$Score_spherical <- .scoring_rules$spherical } } # PCP ------------- if (("PCP" %in% toupper(metrics)) && isTRUE(info$is_binomial) && isFALSE(info$is_multinomial) && isFALSE(info$is_ordinal)) { out$PCP <- tryCatch( { performance_pcp(model, verbose = verbose)$pcp_model }, error = function(e) { NULL } ) } out <- as.data.frame(.compact_list(out, remove_na = TRUE)) # check if model was actually supported... if (nrow(out) == 0 || ncol(out) == 0) { if (isTRUE(verbose)) { warning(paste0("Models of class '", class(model)[1], "' are not yet supported."), call. = FALSE) } return(NULL) } row.names(out) <- NULL class(out) <- c("performance_model", class(out)) # Add attributes attributes(out) <- c(attributes(out), attrib) out } #' @export model_performance.glm <- model_performance.lm #' @export model_performance.Arima <- model_performance.lm #' @export model_performance.glmx <- model_performance.lm #' @export model_performance.lmrob <- model_performance.lm #' @export model_performance.betareg <- model_performance.lm #' @export model_performance.censReg <- model_performance.lm #' @export model_performance.clm <- model_performance.lm #' @export model_performance.clm2 <- model_performance.lm #' @export model_performance.coxph <- model_performance.lm #' @export model_performance.felm <- model_performance.lm #' @export model_performance.iv_robust <- model_performance.lm #' @export model_performance.multinom <- model_performance.lm #' @export model_performance.plm <- model_performance.lm #' @export model_performance.polr <- model_performance.lm #' @export model_performance.bayesx <- model_performance.lm #' @export model_performance.survreg <- model_performance.lm #' @export model_performance.svyglm <- model_performance.lm #' @export model_performance.truncreg <- model_performance.lm #' @export model_performance.vglm <- model_performance.lm #' @export model_performance.fixest <- model_performance.lm #' @export model_performance.DirichletRegModel <- model_performance.lm #' @export model_performance.flexsurvreg <- model_performance.lm #' @export model_performance.hurdle <- model_performance.lm #' @export model_performance.zeroinfl <- model_performance.lm #' @export model_performance.zerotrunc <- model_performance.lm # mfx models ------------------------------- #' @export model_performance.logitor <- function(model, ...) { model_performance(model$fit, ...) } #' @export model_performance.logitmfx <- model_performance.logitor #' @export model_performance.probitmfx <- model_performance.logitor #' @export model_performance.poissonirr <- model_performance.logitor #' @export model_performance.poissonmfx <- model_performance.logitor #' @export model_performance.negbinirr <- model_performance.logitor #' @export model_performance.negbinmfx <- model_performance.logitor #' @export model_performance.betaor <- model_performance.logitor #' @export model_performance.betamfx <- model_performance.logitor #' @export model_performance.model_fit <- model_performance.logitor # other models ------------------------------- #' @export model_performance.mlogit <- function(model, metrics = "all", verbose = TRUE, ...) { if (requireNamespace("mlogit", quietly = TRUE)) { model_performance.lm(model = model, metrics = metrics, verbose = verbose, ...) } else { NULL } } #' @export model_performance.margins <- function(model, metrics = "all", verbose = TRUE, ...) { orig_mod_call <- attributes(model)$call model_performance(eval(orig_mod_call), metrics = metrics, verbose = verbose, ...) } #' @export model_performance.sem <- function(model, metrics = "all", verbose = TRUE, ...) { if (inherits(model, "sem") && inherits(model, "lme")) { model_performance.lm(model, metrics = metrics, verbose = verbose, ...) } else { NULL } } performance/R/performance_pcp.R0000644000176200001440000001621614077615731016263 0ustar liggesusers#' @title Percentage of Correct Predictions #' @name performance_pcp #' #' @description Percentage of correct predictions (PCP) for models #' with binary outcome. #' #' @param model Model with binary outcome. #' @param ci The level of the confidence interval. #' @param method Name of the method to calculate the PCP (see 'Details'). #' Default is `"Herron"`. May be abbreviated. #' @inheritParams model_performance.lm #' #' @return A list with several elements: the percentage of correct predictions #' of the full and the null model, their confidence intervals, as well as the #' chi-squared and p-value from the Likelihood-Ratio-Test between the full and #' null model. #' #' @details `method = "Gelman-Hill"` (or `"gelman_hill"`) computes the #' PCP based on the proposal from \cite{Gelman and Hill 2017, 99}, which is #' defined as the proportion of cases for which the deterministic prediction #' is wrong, i.e. the proportion where the predicted probability is above 0.5, #' although y=0 (and vice versa) (see also \cite{Herron 1999, 90}). #' \cr \cr #' `method = "Herron"` (or `"herron"`) computes a modified version #' of the PCP (\cite{Herron 1999, 90-92}), which is the sum of predicted #' probabilities, where y=1, plus the sum of 1 - predicted probabilities, #' where y=0, divided by the number of observations. This approach is said to #' be more accurate. #' \cr \cr #' The PCP ranges from 0 to 1, where values closer to 1 mean that the model #' predicts the outcome better than models with an PCP closer to 0. In general, #' the PCP should be above 0.5 (i.e. 50\%), the closer to one, the better. #' Furthermore, the PCP of the full model should be considerably above #' the null model's PCP. #' \cr \cr #' The likelihood-ratio test indicates whether the model has a significantly #' better fit than the null-model (in such cases, p < 0.05). #' #' #' @references \itemize{ #' \item Herron, M. (1999). Postestimation Uncertainty in Limited Dependent #' Variable Models. Political Analysis, 8, 83–98. #' #' \item Gelman, A., & Hill, J. (2007). Data analysis using regression and #' multilevel/hierarchical models. Cambridge; New York: Cambridge University #' Press, 99. #' } #' #' @examples #' data(mtcars) #' m <- glm(formula = vs ~ hp + wt, family = binomial, data = mtcars) #' performance_pcp(m) #' performance_pcp(m, method = "Gelman-Hill") #' @export performance_pcp <- function(model, ci = 0.95, method = "Herron", verbose = TRUE) { # fix special cases if (inherits(model, c("model_fit", "logitor", "logitmfx", "probitmfx"))) { model <- model$fit } method <- match.arg(method, choices = c("Herron", "Gelman-Hill", "herron", "gelman_hill")) mi <- insight::model_info(model, verbose = verbose) if (!mi$is_binomial) { stop("`performance_pcp()` only works for models with binary outcome.") } resp <- insight::get_response(model, verbose = verbose) if (!is.null(ncol(resp)) && ncol(resp) > 1) { if (verbose) insight::print_color("`performance_pcp()` only works for models with binary response values.\n", "red") return(NULL) } m0 <- suppressWarnings(stats::glm( formula = stats::as.formula(sprintf("%s ~ 1", insight::find_response(model))), family = stats::binomial(link = "logit"), data = insight::get_data(model, verbose = verbose), weights = stats::weights(model) )) if (method %in% c("Herron", "herron")) { .pcp_herron(model, m0, ci, verbose = verbose) } else { .pcp_gelman_hill(model, m0, ci, verbose = verbose) } } .pcp_herron <- function(model, m0, ci, verbose = TRUE) { y_full <- .recode_to_zero(insight::get_response(model, verbose = verbose)) y_null <- .recode_to_zero(insight::get_response(m0, verbose = verbose)) n_full <- suppressWarnings(insight::n_obs(model)) n_null <- suppressWarnings(insight::n_obs(m0)) pr_full <- stats::predict(model, type = "response") pr_null <- stats::predict(m0, type = "response") pcp_full <- (sum(1 - pr_full[y_full == 0]) + sum(pr_full[y_full == 1])) / n_full pcp_null <- (sum(1 - pr_null[y_null == 0]) + sum(pr_null[y_null == 1])) / n_null lrt.p <- 1 - stats::pchisq( q = model$null.deviance - model$deviance, df = model$df.null - model$df.residual, lower.tail = TRUE ) lrt.chisq <- 2 * abs(insight::get_loglikelihood(model, verbose = verbose) - insight::get_loglikelihood(m0, verbose = verbose)) structure( class = "performance_pcp", list( pcp_model = pcp_full, model_ci_low = pcp_full - stats::qnorm((1 + ci) / 2) * sqrt(pcp_full * (1 - pcp_full) / n_full), model_ci_high = pcp_full + stats::qnorm((1 + ci) / 2) * sqrt(pcp_full * (1 - pcp_full) / n_full), pcp_m0 = pcp_null, null_ci_low = pcp_null - stats::qnorm((1 + ci) / 2) * sqrt(pcp_null * (1 - pcp_null) / n_null), null_ci_high = pcp_null + stats::qnorm((1 + ci) / 2) * sqrt(pcp_null * (1 - pcp_null) / n_null), lrt_chisq = as.vector(lrt.chisq), lrt_df_error = model$df.null - model$df.residual, lrt_p = lrt.p ) ) } .pcp_gelman_hill <- function(model, m0, ci, verbose = TRUE) { y_full <- .recode_to_zero(insight::get_response(model, verbose = verbose)) y_null <- .recode_to_zero(insight::get_response(m0, verbose = verbose)) n_full <- suppressWarnings(insight::n_obs(model)) n_null <- suppressWarnings(insight::n_obs(m0)) pr_full <- stats::predict(model, type = "response") pr_null <- stats::predict(m0, type = "response") pcp_full <- 1 - mean((pr_full > .5 & y_full == 0) | (pr_full <= .5 & y_full == 1)) pcp_null <- 1 - mean((pr_null > .5 & y_null == 0) | (pr_null <= .5 & y_null == 1)) lrt.p <- 1 - stats::pchisq( q = model$null.deviance - model$deviance, df = model$df.null - model$df.residual, lower.tail = TRUE ) lrt.chisq <- 2 * abs(insight::get_loglikelihood(model, verbose = verbose) - insight::get_loglikelihood(m0, verbose = verbose)) structure( class = "performance_pcp", list( pcp_model = pcp_full, model_ci_low = pcp_full - stats::qnorm((1 + ci) / 2) * sqrt(pcp_full * (1 - pcp_full) / n_full), model_ci_high = pcp_full + stats::qnorm((1 + ci) / 2) * sqrt(pcp_full * (1 - pcp_full) / n_full), pcp_m0 = pcp_null, null_ci_low = pcp_null - stats::qnorm((1 + ci) / 2) * sqrt(pcp_null * (1 - pcp_null) / n_null), null_ci_high = pcp_null + stats::qnorm((1 + ci) / 2) * sqrt(pcp_null * (1 - pcp_null) / n_null), lrt_chisq = as.vector(lrt.chisq), lrt_df_error = model$df.null - model$df.residual, lrt_p = lrt.p ) ) } #' @export as.data.frame.performance_pcp <- function(x, row.names = NULL, ...) { data.frame( "Model" = c("full", "null"), "Estimate" = c(x$pcp_model, x$pcp_m0), "CI_low" = c(x$model_ci_low, x$null_ci_low), "CI_high" = c(x$model_ci_high, x$null_ci_high), "Chisq" = c(NA, x$lrt_chisq), "df_error" = c(NA, x$lrt_df_error), "p" = c(NA, x$lrt_p), stringsAsFactors = FALSE, row.names = row.names, ... ) } performance/R/test_bf.R0000644000176200001440000000510214050416527014527 0ustar liggesusers#' @rdname test_performance #' @export test_bf <- function(...) { UseMethod("test_bf") } #' @rdname test_performance #' @export test_bf.default <- function(..., text_length = NULL) { # Attribute class to list and get names from the global environment objects <- insight::ellipsis_info(..., only_models = TRUE) names(objects) <- match.call(expand.dots = FALSE)$`...` # Sanity checks (will throw error if non-valid objects) .test_performance_checks(objects, multiple = FALSE) if (length(objects) == 1 && isTRUE(insight::is_model(objects))) { stop("'test_bf()' is designed to compare multiple models together. For a single model, you might want to run bayestestR::bf_parameters() instead.", call. = FALSE) } # If a suitable class is found, run the more specific method on it if (inherits(objects, c("ListNestedRegressions", "ListNonNestedRegressions", "ListLavaan"))) { test_bf(objects, text_length = text_length) } else { stop("The models cannot be compared for some reason :/") } } #' @export test_bf.ListModels <- function(objects, reference = 1, text_length = NULL, ...) { if (.test_bf_areAllBayesian(objects) == "mixed") { stop("You cannot mix Bayesian and non-Bayesian models in 'test_bf()'.", call. = FALSE) } # Adapt reference but keep original input if (reference == "sequential") { ref <- 1 } else { ref <- reference } rez <- bayestestR::bayesfactor_models(objects, denominator = ref) # check for log-BF if (!is.null(rez$log_BF)) { rez$BF <- exp(rez$log_BF) } row.names(rez) <- NULL # Adjust BFs for sequential testing if (reference == "sequential") { # TODO: Double check that formula and whether it works for increasing and # decreasing order. # For increasing rez$BF <- exp(c(NA, diff(log(rez$BF)))) # For decreasing # ref <- nrow(rez) # rez$BF <- exp(c(-diff(log(rez$BF)), NA)) } else { rez$BF[ref] <- NA } # add log-BF rez$log_BF <- log(rez$BF) # Replace denominator attr(rez, "denominator") <- ref attr(rez, "text_length") <- text_length class(rez) <- c("bayesfactor_models", "see_bayesfactor_models", class(rez)) rez } # Helpers ----------------------------------------------------------------- .test_bf_areAllBayesian <- function(objects) { bayesian_models <- sapply(objects, function(i) isTRUE(insight::model_info(i)$is_bayesian)) if (all(bayesian_models == TRUE)) { "yes" } else if (all(bayesian_models == FALSE)) { "no" } else { "mixed" } } performance/R/model_performance.bayesian.R0000644000176200001440000002460714120564234020364 0ustar liggesusers#' Performance of Bayesian Models #' #' Compute indices of model performance for (general) linear models. #' #' @param model Object of class `stanreg` or `brmsfit`. #' @param metrics Can be `"all"`, `"common"` or a character vector of #' metrics to be computed (some of `c("LOOIC", "WAIC", "R2", "R2_adj", #' "RMSE", "SIGMA", "LOGLOSS", "SCORE")`). `"common"` will compute LOOIC, #' WAIC, R2 and RMSE. #' @param ... Arguments passed to or from other methods. #' @inheritParams model_performance.lm #' #' @return A data frame (with one row) and one column per "index" (see #' `metrics`). #' #' @details Depending on `model`, the following indices are computed: #' \itemize{ #' \item{**ELPD**} {expected log predictive density. Larger ELPD values #' mean better fit. See [looic()].} #' #' \item{**LOOIC**} {leave-one-out cross-validation (LOO) information #' criterion. Lower LOOIC values mean better fit. See [looic()].} #' #' \item{**WAIC**} {widely applicable information criterion. Lower WAIC #' values mean better fit. See `?loo::waic`.} #' #' \item{**R2**} {r-squared value, see [r2_bayes()].} #' #' \item{**R2_adjusted**} {LOO-adjusted r-squared, see #' [r2_loo()].} #' #' \item{**RMSE**} {root mean squared error, see #' [performance_rmse()].} #' #' \item{**SIGMA**} {residual standard deviation, see #' [insight::get_sigma()].} #' #' \item{**LOGLOSS**} {Log-loss, see [performance_logloss()].} #' #' \item{**SCORE_LOG**} {score of logarithmic proper scoring rule, see #' [performance_score()].} #' #' \item{**SCORE_SPHERICAL**} {score of spherical proper scoring rule, #' see [performance_score()].} #' #' \item{**PCP**} {percentage of correct predictions, see #' [performance_pcp()].} #' } #' #' @examples #' \dontrun{ #' if (require("rstanarm") && require("rstantools")) { #' model <- stan_glm(mpg ~ wt + cyl, data = mtcars, chains = 1, iter = 500, refresh = 0) #' model_performance(model) #' #' model <- stan_glmer( #' mpg ~ wt + cyl + (1 | gear), #' data = mtcars, #' chains = 1, #' iter = 500, #' refresh = 0 #' ) #' model_performance(model) #' } #' #' if (require("BayesFactor") && require("rstantools")) { #' model <- generalTestBF(carb ~ am + mpg, mtcars) #' #' model_performance(model) #' model_performance(model[3]) #' #' model_performance(model, average = TRUE) #' } #' } #' @seealso [r2_bayes] #' @references Gelman, A., Goodrich, B., Gabry, J., & Vehtari, A. (2018). #' R-squared for Bayesian regression models. The American Statistician, The #' American Statistician, 1-6. #' #' @export model_performance.stanreg <- function(model, metrics = "all", verbose = TRUE, ...) { if (any(tolower(metrics) == "log_loss")) { metrics[tolower(metrics) == "log_loss"] <- "LOGLOSS" } all_metrics <- c("LOOIC", "WAIC", "R2", "R2_adjusted", "RMSE", "SIGMA", "LOGLOSS", "SCORE") if (all(metrics == "all")) { metrics <- all_metrics } else if (all(metrics == "common")) { metrics <- c("LOOIC", "WAIC", "R2", "RMSE") } # check for valid input metrics <- toupper(.check_bad_metrics(metrics, all_metrics, verbose)) algorithm <- insight::find_algorithm(model) if (algorithm$algorithm != "sampling") { if (verbose) { warning(insight::format_message("`model_performance()` only possible for models fit using the 'sampling' algorithm."), call. = FALSE) } return(NULL) } insight::check_if_installed("loo") mi <- insight::model_info(model) out <- list() attri <- list() if (insight::is_multivariate(model)) { out$Response <- insight::find_response(model, combine = FALSE) mi <- mi[[1]] } # LOOIC ------------------ if ("LOOIC" %in% metrics) { loo_res <- suppressWarnings(looic(model, verbose = verbose)) out <- append(out, loo_res) attri$loo <- attributes(loo_res)$loo # save attributes } # WAIC ------------------ if ("WAIC" %in% metrics) { out$WAIC <- suppressWarnings(loo::waic(model)$estimates["waic", "Estimate"]) } # R2 ------------------ attri_r2 <- list() if ("R2" %in% metrics) { r2 <- r2_bayes(model, verbose = verbose) if (!is.null(r2)) { # save attributes attri_r2$SE$R2_Bayes <- attributes(r2)$SE$R2_Bayes attri_r2$CI$R2_Bayes <- attributes(r2)$CI$R2_Bayes attri_r2$CI$R2_Bayes_marginal <- attributes(r2)$CI$R2_Bayes_marginal attri_r2$robust$R2_Bayes <- attributes(r2)$robust # Format to df then to list r2_df <- as.data.frame(t(as.numeric(r2))) names(r2_df) <- gsub("_Bayes", "", names(r2), fixed = TRUE) out <- append(out, as.list(r2_df)) } } # LOO-R2 ------------------ if (("R2_ADJUSTED" %in% metrics | "R2_LOO" %in% metrics) && mi$is_linear) { r2_adj <- tryCatch( { suppressWarnings(r2_loo(model, verbose = verbose)) }, error = function(e) { NULL } ) if (!is.null(r2_adj)) { # save attributes attri_r2$SE$R2_loo <- attributes(r2_adj)$SE$R2_loo attri_r2$CI$R2_loo <- attributes(r2_adj)$CI$R2_loo attri_r2$CI$R2_loo_marginal <- attributes(r2)$CI$R2_loo_marginal attri_r2$robust$R2_loo <- attributes(r2_adj)$robust # Format to df then to list r2_adj_df <- as.data.frame(t(as.numeric(r2_adj))) names(r2_adj_df) <- gsub("_loo", "_adjusted", names(r2_adj), fixed = TRUE) out <- append(out, as.list(r2_adj_df)) } } if (length(attri_r2) > 0) { attri$r2 <- attri_r2 attri$r2_bayes <- attri_r2 } # RMSE ------------------ if ("RMSE" %in% metrics && !mi$is_ordinal && !mi$is_multinomial && !mi$is_categorical) { out$RMSE <- performance_rmse(model, verbose = verbose) } # SIGMA ------------------ if ("SIGMA" %in% metrics) { out$Sigma <- tryCatch( { s <- .get_sigma(model, verbose = verbose) if (.is_empty_object(s)) { s <- NULL } s }, error = function(e) { NULL } ) } # LOGLOSS ------------------ if (("LOGLOSS" %in% metrics) && mi$is_binomial) { out$Log_loss <- tryCatch( { .logloss <- performance_logloss(model, verbose = verbose) if (!is.na(.logloss)) { .logloss } else { NULL } }, error = function(e) { NULL } ) } # SCORE ------------------ if (("SCORE" %in% metrics) && (mi$is_binomial || mi$is_count)) { .scoring_rules <- tryCatch( { performance_score(model, verbose = verbose) }, error = function(e) { NULL } ) if (!is.null(.scoring_rules)) { if (!is.na(.scoring_rules$logarithmic)) out$Score_log <- .scoring_rules$logarithmic if (!is.na(.scoring_rules$spherical)) out$Score_spherical <- .scoring_rules$spherical } } out <- as.data.frame(out) row.names(out) <- NULL out <- out[sapply(out, function(i) !all(is.na(i)))] attributes(out) <- c(attributes(out), attri) class(out) <- c("performance_model", class(out)) out } #' @export model_performance.brmsfit <- model_performance.stanreg #' @export model_performance.stanmvreg <- model_performance.stanreg #' @export #' @inheritParams r2_bayes #' @rdname model_performance.stanreg model_performance.BFBayesFactor <- function(model, metrics = "all", verbose = TRUE, average = FALSE, prior_odds = NULL, ...) { if (all(metrics == "all")) { metrics <- c("R2", "SIGMA") } mi <- insight::model_info(model, verbose = FALSE) if (!mi$is_linear || mi$is_correlation || mi$is_ttest || mi$is_binomial || mi$is_meta) { warning("Can produce ", paste0(metrics, collapse = " & "), " only for linear models.", call. = FALSE) return(NULL) } out <- list() attri <- list() if ("R2" %in% c(metrics)) { r2 <- r2_bayes(model, average = average, prior_odds = prior_odds) attri$r2_bayes <- attributes(r2) # save attributes # Format to df then to list r2_df <- as.data.frame(t(as.numeric(r2))) names(r2_df) <- gsub("_Bayes", "", names(r2), fixed = TRUE) out <- append(out, as.list(r2_df)) } if ("SIGMA" %in% toupper(metrics)) { sig <- suppressMessages(.get_sigma_bfbayesfactor(model, average = average, prior_odds = prior_odds)) out$Sigma <- bayestestR::point_estimate(sig, "median")[[1]] } out <- as.data.frame(out) row.names(out) <- NULL attributes(out) <- c(attributes(out), attri) class(out) <- c("performance_model", class(out)) out } # helper ------------------- .get_sigma_bfbayesfactor <- function(model, average = FALSE, prior_odds = NULL) { if (average) { return(.get_sigma_bfbayesfactor_model_average(model, prior_odds = prior_odds)) } params <- insight::get_parameters(model) if (!"sig2" %in% colnames(params)) stop("This is not a linear model.") sqrt(params$sig2) } .get_sigma_bfbayesfactor_model_average <- function(model, prior_odds = NULL) { insight::check_if_installed("BayesFactor") BFMods <- bayestestR::bayesfactor_models(model, verbose = FALSE) if (!is.null(BFMods$log_BF)) { BFMods$BF <- exp(BFMods$log_BF) } # extract parameters intercept_only <- which(BFMods$Model == "1") params <- vector(mode = "list", length = nrow(BFMods)) for (m in seq_along(params)) { if (length(intercept_only) && m == intercept_only) { y <- insight::get_response(model) params[[m]] <- rep(stats::sd(y), 4000) } else if (m == 1) { # If the model is the "den" model params[[m]] <- suppressMessages(.get_sigma_bfbayesfactor(1 / model[1])) } else { params[[m]] <- suppressMessages(.get_sigma_bfbayesfactor(model[m - 1])) } } params <- lapply(params, data.frame) # Compute posterior model probabilities if (!is.null(prior_odds)) { prior_odds <- c(1, prior_odds) } else { prior_odds <- rep(1, nrow(BFMods)) } posterior_odds <- prior_odds * BFMods$BF posterior_odds <- posterior_odds[-1] / posterior_odds[1] do.call( bayestestR::weighted_posteriors, c(params, list(missing = 0, prior_odds = posterior_odds)) )[[1]] } performance/R/check_singularity.R0000644000176200001440000001271714077615727016636 0ustar liggesusers#' @title Check mixed models for boundary fits #' @name check_singularity #' #' @description Check mixed models for boundary fits. #' #' @param x A mixed model. #' @param tolerance Indicates up to which value the convergence result is #' accepted. The larger `tolerance` is, the stricter the test #' will be. #' @param ... Currently not used. #' #' @return `TRUE` if the model fit is singular. #' #' @details If a model is "singular", this means that some dimensions of the #' variance-covariance matrix have been estimated as exactly zero. This #' often occurs for mixed models with complex random effects structures. #' \cr \cr #' \dQuote{While singular models are statistically well defined (it is #' theoretically sensible for the true maximum likelihood estimate to #' correspond to a singular fit), there are real concerns that (1) singular #' fits correspond to overfitted models that may have poor power; (2) chances #' of numerical problems and mis-convergence are higher for singular models #' (e.g. it may be computationally difficult to compute profile confidence #' intervals for such models); (3) standard inferential procedures such as #' Wald statistics and likelihood ratio tests may be inappropriate.} #' (\cite{lme4 Reference Manual}) #' \cr \cr #' There is no gold-standard about how to deal with singularity and which #' random-effects specification to choose. Beside using fully Bayesian methods #' (with informative priors), proposals in a frequentist framework are: #' \itemize{ #' \item avoid fitting overly complex models, such that the #' variance-covariance matrices can be estimated precisely enough #' (\cite{Matuschek et al. 2017}) #' \item use some form of model selection to choose a model that balances #' predictive accuracy and overfitting/type I error (\cite{Bates et al. 2015}, #' \cite{Matuschek et al. 2017}) #' \item \dQuote{keep it maximal}, i.e. fit the most complex model consistent #' with the experimental design, removing only terms required to allow a #' non-singular fit (\cite{Barr et al. 2013}) #' } #' Note the different meaning between singularity and convergence: singularity #' indicates an issue with the "true" best estimate, i.e. whether the maximum #' likelihood estimation for the variance-covariance matrix of the random #' effects is positive definite or only semi-definite. Convergence is a #' question of whether we can assume that the numerical optimization has #' worked correctly or not. #' #' @references \itemize{ #' \item Bates D, Kliegl R, Vasishth S, Baayen H. Parsimonious Mixed Models. #' arXiv:1506.04967, June 2015. #' #' \item Barr DJ, Levy R, Scheepers C, Tily HJ. Random effects structure for #' confirmatory hypothesis testing: Keep it maximal. Journal of Memory and #' Language, 68(3):255-278, April 2013. #' #' \item Matuschek H, Kliegl R, Vasishth S, Baayen H, Bates D. Balancing type #' I error and power in linear mixed models. Journal of Memory and Language, #' 94:305-315, 2017. #' #' \item lme4 Reference Manual, #' } #' #' @examples #' if (require("lme4")) { #' data(sleepstudy) #' set.seed(123) #' sleepstudy$mygrp <- sample(1:5, size = 180, replace = TRUE) #' sleepstudy$mysubgrp <- NA #' for (i in 1:5) { #' filter_group <- sleepstudy$mygrp == i #' sleepstudy$mysubgrp[filter_group] <- #' sample(1:30, size = sum(filter_group), replace = TRUE) #' } #' #' model <- lmer( #' Reaction ~ Days + (1 | mygrp / mysubgrp) + (1 | Subject), #' data = sleepstudy #' ) #' #' check_singularity(model) #' } #' @export check_singularity <- function(x, tolerance = 1e-5, ...) { UseMethod("check_singularity") } #' @export check_singularity.merMod <- function(x, tolerance = 1e-5, ...) { insight::check_if_installed("lme4") theta <- lme4::getME(x, "theta") # diagonal elements are identifiable because they are fitted # with a lower bound of zero ... diag.element <- lme4::getME(x, "lower") == 0 any(abs(theta[diag.element]) < tolerance) } #' @export check_singularity.rlmerMod <- check_singularity.merMod #' @export check_singularity.glmmTMB <- function(x, tolerance = 1e-5, ...) { insight::check_if_installed("lme4") vc <- .collapse_cond(lme4::VarCorr(x)) any(sapply(vc, function(.x) any(abs(diag(.x)) < tolerance))) } #' @export check_singularity.glmmadmb <- check_singularity.glmmTMB #' @export check_singularity.clmm <- function(x, tolerance = 1e-5, ...) { insight::check_if_installed("ordinal") vc <- ordinal::VarCorr(x) any(sapply(vc, function(.x) any(abs(diag(.x)) < tolerance))) } #' @export check_singularity.cpglmm <- function(x, tolerance = 1e-5, ...) { insight::check_if_installed("cplm") vc <- cplm::VarCorr(x) any(sapply(vc, function(.x) any(abs(diag(.x)) < tolerance))) } #' @export check_singularity.MixMod <- function(x, tolerance = 1e-5, ...) { any(sapply(diag(x$D), function(.x) any(abs(.x) < tolerance))) } #' @export check_singularity.lme <- function(x, tolerance = 1e-5, ...) { insight::check_if_installed("nlme") any(abs(stats::na.omit(as.numeric(diag(nlme::getVarCov(x)))) < tolerance)) } #' @export check_singularity.default <- function(x, ...) { FALSE } .collapse_cond <- function(x) { if (is.list(x) && "cond" %in% names(x)) { x[["cond"]] } else { x } } performance/R/cronbachs_alpha.R0000644000176200001440000000547514077615730016233 0ustar liggesusers#' @title Cronbach's Alpha for Items or Scales #' @name cronbachs_alpha #' #' @description Compute various measures of internal consistencies #' for tests or item-scales of questionnaires. #' #' @param x A matrix or a data frame. #' #' @return The Cronbach's Alpha value for `x`. #' #' @details The Cronbach's Alpha value for `x`. A value closer to 1 #' indicates greater internal consistency, where usually following #' rule of thumb is applied to interpret the results: #' \ifelse{html}{\out{α}}{\eqn{\alpha}{alpha}} < 0.5 is unacceptable, #' 0.5 < \ifelse{html}{\out{α}}{\eqn{\alpha}{alpha}} < 0.6 is poor, #' 0.6 < \ifelse{html}{\out{α}}{\eqn{\alpha}{alpha}} < 0.7 is questionable, #' 0.7 < \ifelse{html}{\out{α}}{\eqn{\alpha}{alpha}} < 0.8 is acceptable, #' and everything > 0.8 is good or excellent. #' #' @references Bland, J. M., \& Altman, D. G. Statistics notes: Cronbach's #' alpha. BMJ 1997;314:572. 10.1136/bmj.314.7080.572 #' #' @examples #' data(mtcars) #' x <- mtcars[, c("cyl", "gear", "carb", "hp")] #' cronbachs_alpha(x) #' @export cronbachs_alpha <- function(x) { UseMethod("cronbachs_alpha") } #' @export cronbachs_alpha.data.frame <- function(x) { # remove missings .data <- stats::na.omit(x) # we need at least two columns for Cronach's Alpha if (is.null(ncol(.data)) || ncol(.data) < 2) { warning("Too less columns in `x` to compute Cronbach's Alpha.", call. = FALSE) return(NULL) } # Compute Cronbach's Alpha dim(.data)[2] / (dim(.data)[2] - 1) * (1 - sum(apply(.data, 2, stats::var)) / stats::var(rowSums(.data))) } #' @export cronbachs_alpha.matrix <- function(x) { cronbachs_alpha(as.data.frame(x)) } #' @export cronbachs_alpha.parameters_pca <- function(x) { ## TODO change to data_name once parameters 0.10.0 is on CRAN pca_data <- attr(x, "data") if (is.null(pca_data)) { warning("Could not find data frame that was used for the PCA.", call. = FALSE) return(NULL) } # fetch data used for the PCA pca_data <- get(pca_data, envir = parent.frame()) # get columns from parameters_pca-object where loadings are saved loadings_columns <- attributes(x)$loadings_columns # find component with max loading for each variable factor_assignment <- apply(x[, loadings_columns], 1, function(i) which.max(abs(i))) # sort and get unique IDs so we only get data from relevant columns unique_factors <- sort(unique(factor_assignment)) # apply cronbach's alpha for each component, # only for variables with max loading cronb <- sapply(unique_factors, function(i) { cronbachs_alpha(pca_data[, as.vector(x$Variable[factor_assignment == i]), drop = FALSE]) }) names(cronb) <- colnames(x)[loadings_columns[unique_factors]] unlist(cronb) } performance/R/item_reliability.R0000644000176200001440000000602614077615731016445 0ustar liggesusers#' @title Reliability Test for Items or Scales #' @name item_reliability #' #' @description Compute various measures of internal consistencies #' for tests or item-scales of questionnaires. #' #' @param x A matrix or a data frame. #' @param standardize Logical, if `TRUE`, the data frame's vectors will be #' standardized. Recommended when the variables have different measures / #' scales. #' @param digits Amount of digits for returned values. #' #' @return A data frame with the corrected item-total correlations (*item #' discrimination*, column `item_discrimination`) and Cronbach's Alpha #' (if item deleted, column `alpha_if_deleted`) for each item #' of the scale, or `NULL` if data frame had too less columns. #' #' @details #' #' This function calculates the item discriminations (corrected item-total #' correlations for each item of `x` with the remaining items) and the #' Cronbach's alpha for each item, if it was deleted from the scale. The #' absolute value of the item discrimination indices should be above 0.1. An #' index between 0.1 and 0.3 is considered as "fair", while an index above 0.3 #' (or below -0.3) is "good". Items with low discrimination indices are often #' ambiguously worded and should be examined. Items with negative indices should #' be examined to determine why a negative value was obtained (e.g. reversed #' answer categories regarding positive and negative poles). #' #' @examples #' data(mtcars) #' x <- mtcars[, c("cyl", "gear", "carb", "hp")] #' item_reliability(x) #' @export item_reliability <- function(x, standardize = FALSE, digits = 3) { # check param if (!is.matrix(x) && !is.data.frame(x)) { warning("`x` needs to be a data frame or matrix.", call. = FALSE) return(NULL) } # remove missings, so correlation works x <- stats::na.omit(x) # remember item (column) names for return value # return value gets column names of initial data frame df.names <- colnames(x) ret.df <- NULL # check for minimum amount of columns can't be less than 3, because the # reliability test checks for Cronbach's alpha if a specific item is deleted. # If data frame has only two columns and one is deleted, Cronbach's alpha # cannot be calculated. if (ncol(x) > 2) { # Check whether items should be scaled. Needed, # when items have different measures / scales if (standardize) x <- .std(x) # calculate cronbach-if-deleted cronbachDeleted <- sapply(seq_len(ncol(x)), function(i) cronbachs_alpha(x[, -i])) # calculate corrected total-item correlation totalCorr <- sapply(seq_len(ncol(x)), function(i) stats::cor(x[, i], apply(x[, -i], 1, sum), use = "pairwise.complete.obs")) ret.df <- data.frame( term = df.names, alpha_if_deleted = round(cronbachDeleted, digits), item_discrimination = round(totalCorr, digits), stringsAsFactors = FALSE ) } else { warning("Data frame needs at least three columns for reliability-test.", call. = FALSE) } ret.df } performance/R/logLik.R0000644000176200001440000000405414117453720014327 0ustar liggesusers#' @exportS3Method logLik ivreg logLik.ivreg <- function(object, ...) { res <- object$residuals p <- object$rank w <- object$weights N <- length(res) if (is.null(w)) { w <- rep.int(1, N) } else { excl <- w == 0 if (any(excl)) { res <- res[!excl] N <- length(res) w <- w[!excl] } } N0 <- N val <- 0.5 * (sum(log(w)) - N * (log(2 * pi) + 1 - log(N) + log(sum(w * res^2)))) attr(val, "nall") <- N0 attr(val, "nobs") <- N attr(val, "df") <- p + 1 class(val) <- "logLik" val } #' @exportS3Method logLik plm logLik.plm <- function(object, ...) { res <- object$residuals w <- object$weights N <- length(res) if (is.null(w)) { w <- rep.int(1, N) } else { excl <- w == 0 if (any(excl)) { res <- res[!excl] N <- length(res) w <- w[!excl] } } N0 <- N val <- 0.5 * (sum(log(w)) - N * (log(2 * pi) + 1 - log(N) + log(sum(w * res^2)))) attr(val, "nall") <- N0 attr(val, "nobs") <- N attr(val, "df") <- insight::get_df(object, type = "model") class(val) <- "logLik" val } #' @exportS3Method logLik cpglm logLik.cpglm <- logLik.plm #' @exportS3Method logLik iv_robust logLik.iv_robust <- function(object, ...) { res <- insight::get_residuals(object) p <- object$rank w <- object$weights N <- length(res) if (is.null(w)) { w <- rep.int(1, N) } else { excl <- w == 0 if (any(excl)) { res <- res[!excl] N <- length(res) w <- w[!excl] } } N0 <- N val <- 0.5 * (sum(log(w)) - N * (log(2 * pi) + 1 - log(N) + log(sum(w * res^2)))) attr(val, "nall") <- N0 attr(val, "nobs") <- N attr(val, "df") <- p + 1 class(val) <- "logLik" val } #' @exportS3Method logLik svycoxph logLik.svycoxph <- function(object, ...) { val <- object$ll[2] attr(val, "nall") <- insight::n_obs(object) attr(val, "nobs") <- insight::n_obs(object) attr(val, "df") <- object$degf.resid class(val) <- "logLik" val } performance/R/r2_mcfadden.R0000644000176200001440000000762314077615732015267 0ustar liggesusers#' @title McFadden's R2 #' @name r2_mcfadden #' #' @description Calculates McFadden's pseudo R2. #' #' @param model Generalized linear or multinomial logit (`mlogit`) model. #' @param ... Currently not used. #' #' @return For most models, a list with McFadden's R2 and adjusted McFadden's #' R2 value. For some models, only McFadden's R2 is available. #' #' @references #' \itemize{ #' \item McFadden, D. (1987). Regression-based specification tests for the #' multinomial logit model. Journal of econometrics, 34(1-2), 63-82. #' #' \item McFadden, D. (1973). Conditional logit analysis of qualitative choice #' behavior. #' } #' #' @examples #' if (require("mlogit")) { #' data("Fishing", package = "mlogit") #' Fish <- mlogit.data(Fishing, varying = c(2:9), shape = "wide", choice = "mode") #' #' model <- mlogit(mode ~ price + catch, data = Fish) #' r2_mcfadden(model) #' } #' @export r2_mcfadden <- function(model, ...) { UseMethod("r2_mcfadden") } # helper ----------------------- .r2_mcfadden <- function(model, l_null) { l_full <- insight::get_loglikelihood(model) k <- length(insight::find_parameters(model)) mcfadden <- 1 - (as.vector(l_full) / as.vector(l_null)) mcfadden_adjusted <- 1 - ((as.vector(l_full) - k) / as.vector(l_null)) out <- list( R2 = c(`McFadden's R2` = mcfadden), R2_adjusted = c(`adjusted McFadden's R2` = mcfadden_adjusted) ) attr(out, "model_type") <- "Generalized Linear" structure(class = "r2_generic", out) } # r2 via loglik and update -------------------------- #' @export r2_mcfadden.glm <- function(model, verbose = TRUE, ...) { info <- insight::model_info(model) if (info$is_binomial && !info$is_bernoulli && class(model)[1] == "glm") { if (verbose) { warning(insight::format_message("Can't calculate accurate R2 for binomial models that are not Bernoulli models."), call. = FALSE) } return(NULL) } else { l_null <- insight::get_loglikelihood(stats::update(model, ~1)) .r2_mcfadden(model, l_null) } } #' @export r2_mcfadden.clm <- r2_mcfadden.glm #' @export r2_mcfadden.cpglm <- r2_mcfadden.glm #' @export r2_mcfadden.glmx <- r2_mcfadden.glm #' @export r2_mcfadden.polr <- r2_mcfadden.glm #' @export r2_mcfadden.bracl <- r2_mcfadden.glm #' @export r2_mcfadden.brmultinom <- r2_mcfadden.glm #' @export r2_mcfadden.mclogit <- r2_mcfadden.glm #' @export r2_mcfadden.censReg <- r2_mcfadden.glm #' @export r2_mcfadden.truncreg <- r2_mcfadden.glm # mfx models --------------------- #' @export r2_mcfadden.logitmfx <- function(model, ...) { r2_mcfadden(model$fit, ...) } #' @export r2_mcfadden.logitor <- r2_mcfadden.logitmfx #' @export r2_mcfadden.poissonirr <- r2_mcfadden.logitmfx #' @export r2_mcfadden.poissonmfx <- r2_mcfadden.logitmfx #' @export r2_mcfadden.negbinirr <- r2_mcfadden.logitmfx #' @export r2_mcfadden.probitmfx <- r2_mcfadden.logitmfx #' @export r2_mcfadden.negbinmfx <- r2_mcfadden.logitmfx # special models ------------------------------------------- #' @export r2_mcfadden.vglm <- function(model, ...) { if (!(is.null(model@call$summ) && !identical(model@call$summ, 0))) { stop("Can't get log-likelihood when `summ` is not zero.", call. = FALSE) } l_null <- insight::get_loglikelihood(stats::update(model, ~1)) .r2_mcfadden(model, l_null) } #' @export r2_mcfadden.clm2 <- function(model, ...) { l_null <- insight::get_loglikelihood(stats::update(model, location = ~1, scale = ~1)) .r2_mcfadden(model, l_null) } #' @export r2_mcfadden.multinom <- function(model, ...) { l_null <- insight::get_loglikelihood(stats::update(model, ~1, trace = FALSE)) .r2_mcfadden(model, l_null) } #' @export r2_mcfadden.mlogit <- function(model, ...) { R2 <- as.vector(summary(model)$mfR2) names(R2) <- "McFadden's R2" R2 } performance/R/compare_performance.R0000644000176200001440000002443114120327442017111 0ustar liggesusers#' @title Compare performance of different models #' @name compare_performance #' #' @description `compare_performance()` computes indices of model #' performance for different models at once and hence allows comparison of #' indices across models. #' #' @param ... Multiple model objects (also of different classes). #' @param metrics Can be `"all"`, `"common"` or a character vector of #' metrics to be computed. See related #' [`documentation()`][model_performance] of object's class for #' details. #' @param rank Logical, if `TRUE`, models are ranked according to 'best' #' overall model performance. See 'Details'. #' #' @return A data frame (with one row per model) and one column per "index" (see #' `metrics`). #' #' @note There is also a [`plot()`-method](https://easystats.github.io/see/articles/performance.html) implemented in the \href{https://easystats.github.io/see/}{\pkg{see}-package}. #' #' @details \subsection{Model Weights}{ #' When information criteria (IC) are requested in `metrics` (i.e., any of `"all"`, #' `"common"`, `"AIC"`, `"AICc"`, `"BIC"`, `"WAIC"`, or `"LOOIC"`), model #' weights based on these criteria are also computed. For all IC except LOOIC, #' weights are computed as `w = exp(-0.5 * delta_ic) / sum(exp(-0.5 * delta_ic))`, #' where `delta_ic` is the difference between the model's IC value and the #' smallest IC value in the model set (Burnham & Anderson, 2002). #' For LOOIC, weights are computed as "stacking weights" using #' [loo::stacking_weights()]. #' } #' #' \subsection{Ranking Models}{ #' When `rank = TRUE`, a new column `Performance_Score` is returned. #' This score ranges from 0\% to 100\%, higher values indicating better model #' performance. Note that all score value do not necessarily sum up to 100\%. #' Rather, calculation is based on normalizing all indices (i.e. rescaling #' them to a range from 0 to 1), and taking the mean value of all indices for #' each model. This is a rather quick heuristic, but might be helpful as #' exploratory index. #' \cr \cr #' In particular when models are of different types (e.g. mixed models, #' classical linear models, logistic regression, ...), not all indices will be #' computed for each model. In case where an index can't be calculated for a #' specific model type, this model gets an `NA` value. All indices that #' have any `NA`s are excluded from calculating the performance score. #' \cr \cr #' There is a `plot()`-method for `compare_performance()`, #' which creates a "spiderweb" plot, where the different indices are #' normalized and larger values indicate better model performance. #' Hence, points closer to the center indicate worse fit indices #' (see [online-documentation](https://easystats.github.io/see/articles/performance.html) #' for more details). #' } #' #' @references #' Burnham, K. P., & Anderson, D. R. (2002). #' _Model selection and multimodel inference: A practical information-theoretic approach_ (2nd ed.). #' Springer-Verlag. \doi{10.1007/b97636} #' #' @examples #' data(iris) #' lm1 <- lm(Sepal.Length ~ Species, data = iris) #' lm2 <- lm(Sepal.Length ~ Species + Petal.Length, data = iris) #' lm3 <- lm(Sepal.Length ~ Species * Petal.Length, data = iris) #' compare_performance(lm1, lm2, lm3) #' compare_performance(lm1, lm2, lm3, rank = TRUE) #' #' if (require("lme4")) { #' m1 <- lm(mpg ~ wt + cyl, data = mtcars) #' m2 <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") #' m3 <- lmer(Petal.Length ~ Sepal.Length + (1 | Species), data = iris) #' compare_performance(m1, m2, m3) #' } #' @inheritParams model_performance.lm #' @export compare_performance <- function(..., metrics = "all", rank = FALSE, verbose = TRUE) { # objects <- list(...) # object_names <- match.call(expand.dots = FALSE)$`...` objects <- list(...) if (length(objects) == 1) { if (insight::is_model(objects[[1]])) { modellist <- FALSE } else { objects <- objects[[1]] modellist <- TRUE } } else { modellist <- FALSE } if (isTRUE(modellist)) { object_names <- names(objects) if (length(object_names) == 0) { object_names <- paste("Model", seq_along(objects), sep = " ") names(objects) <- object_names } } else { object_names <- match.call(expand.dots = FALSE)$`...` if (length(names(object_names)) > 0) { object_names <- names(object_names) } else if (any(sapply(object_names, is.call))) { object_names <- paste("Model", seq_along(objects), sep = " ") } else { object_names <- sapply(object_names, as.character) names(objects) <- object_names } } supported_models <- sapply(objects, function(i) insight::is_model_supported(i) | inherits(i, "lavaan")) if (!all(supported_models)) { warning(sprintf("Following objects are not supported: %s", paste0(object_names[!supported_models], collapse = ", "))) objects <- objects[supported_models] object_names <- object_names[supported_models] } m <- mapply(function(.x, .y) { dat <- model_performance(.x, metrics = metrics, verbose = FALSE) model_name <- gsub("\"", "", .safe_deparse(.y), fixed = TRUE) perf_df <- data.frame(Name = model_name, Model = class(.x)[1], dat, stringsAsFactors = FALSE) attributes(perf_df) <- c(attributes(perf_df), attributes(dat)[!names(attributes(dat)) %in% c("names", "row.names", "class")]) return(perf_df) }, objects, object_names, SIMPLIFY = FALSE) attri <- lapply(m, function(x) { attri <- attributes(x) attri[!names(attri) %in% c("names", "row.names", "class")] }) dfs <- Reduce(function(x, y) merge(x, y, all = TRUE, sort = FALSE), m) if (any(c("AIC", "AICc", "BIC", "WAIC") %in% names(dfs))) { dfs$AIC_wt <- .ic_weight(dfs$AIC) dfs$AICc_wt <- .ic_weight(dfs$AICc) dfs$BIC_wt <- .ic_weight(dfs$BIC) dfs$WAIC_wt <- .ic_weight(dfs$WAIC) } if ("LOOIC" %in% names(dfs)) { lpd_point <- do.call(cbind, lapply(attri, function(x) x$loo$pointwise[, "elpd_loo"])) dfs$LOOIC_wt <- as.numeric(loo::stacking_weights(lpd_point)) } # check if all models were fit from same data resps <- lapply(objects, insight::get_response) if (!all(sapply(resps[-1], function(x) identical(x, resps[[1]]))) && verbose) { warning(insight::format_message("When comparing models, please note that probably not all models were fit from same data."), call. = FALSE) } # create "ranking" of models if (isTRUE(rank)) { dfs <- .rank_performance_indices(dfs, verbose) } # Reorder columns if (all(c("BIC", "BF") %in% names(dfs))) { idx1 <- grep("^BIC$", names(dfs)) idx2 <- grep("BF", names(dfs)) last_part <- (idx1 + 1):ncol(dfs) dfs <- dfs[, c(1:idx1, idx2, last_part[last_part != idx2])] } if (all(c("AIC", "AIC_wt") %in% names(dfs))) { idx1 <- grep("^AIC$", names(dfs)) idx2 <- grep("AIC_wt", names(dfs)) last_part <- (idx1 + 1):ncol(dfs) dfs <- dfs[, c(1:idx1, idx2, last_part[last_part != idx2])] } if (all(c("BIC", "BIC_wt") %in% names(dfs))) { idx1 <- grep("^BIC$", names(dfs)) idx2 <- grep("BIC_wt", names(dfs)) last_part <- (idx1 + 1):ncol(dfs) dfs <- dfs[, c(1:idx1, idx2, last_part[last_part != idx2])] } if (all(c("AICc", "AICc_wt") %in% names(dfs))) { idx1 <- grep("^AICc$", names(dfs)) idx2 <- grep("AICc_wt", names(dfs)) last_part <- (idx1 + 1):ncol(dfs) dfs <- dfs[, c(1:idx1, idx2, last_part[last_part != idx2])] } if (all(c("WAIC", "WAIC_wt") %in% names(dfs))) { idx1 <- grep("^WAIC$", names(dfs)) idx2 <- grep("WAIC_wt", names(dfs)) last_part <- (idx1 + 1):ncol(dfs) dfs <- dfs[, c(1:idx1, idx2, last_part[last_part != idx2])] } if (all(c("LOOIC", "LOOIC_wt") %in% names(dfs))) { idx1 <- grep("^LOOIC$", names(dfs)) idx2 <- grep("LOOIC_wt", names(dfs)) last_part <- (idx1 + 1):ncol(dfs) dfs <- dfs[, c(1:idx1, idx2, last_part[last_part != idx2])] } # dfs[order(sapply(object_names, as.character), dfs$Model), ] class(dfs) <- c("compare_performance", "see_compare_performance", class(dfs)) dfs } .rank_performance_indices <- function(x, verbose) { # all models comparable? if (length(unique(x$Type)) > 1 && isTRUE(verbose)) { warning(insight::format_message("Models are not of same type. Comparison of indices might be not meaningful."), call. = FALSE) } # set reference for Bayes factors to 1 if ("BF" %in% colnames(x)) x$BF[is.na(x$BF)] <- 1 # don't include test statistic in ranking x$p_CochransQ <- NULL x$p_Omnibus <- NULL x$p <- NULL x$p_LRT <- NULL # use weights instead of information criteria x$AIC <- NULL x$AICc <- NULL x$BIC <- NULL x$LOOIC <- NULL x$WAIC <- NULL # remove extra columns from LOO criteria x$ELPD <- NULL x$ELPD_SE <- NULL x$LOOIC_SE <- NULL # don't rank with BF when there is also BIC (same information) if ("BF" %in% colnames(x) && "BIC_wt" %in% colnames(x)) { x$BF <- NULL } out <- x # normalize indices, for comparison out[] <- lapply(out, function(i) { if (is.numeric(i)) i <- .normalize_vector(i) i }) # recode some indices, so higher values = better fit for (i in c("RMSE", "Sigma")) { if (i %in% colnames(out)) { out[[i]] <- 1 - out[[i]] } } # any indices with NA? missing_indices <- sapply(out, anyNA) if (any(missing_indices) && isTRUE(verbose)) { warning(insight::format_message(sprintf( "Following indices with missing values are not used for ranking: %s", paste0(colnames(out)[missing_indices], collapse = ", ") )), call. = FALSE) } # create rank-index, only for complete indices numeric_columns <- sapply(out, function(i) is.numeric(i) & !anyNA(i)) rank_index <- rowMeans(out[numeric_columns], na.rm = TRUE) x$Performance_Score <- rank_index x <- x[order(rank_index, decreasing = TRUE), ] rownames(x) <- NULL x } .normalize_vector <- function(x) { as.vector((x - min(x, na.rm = TRUE)) / diff(range(x, na.rm = TRUE), na.rm = TRUE)) } .ic_weight <- function(ic) { # ic should be in the deviance metric (-2 * loglik) if (is.null(ic)) return(NULL) diffs <- ic - min(ic) f <- exp(-0.5 * diffs) f / sum(f) } performance/R/check_distribution.R0000644000176200001440000001234714077615727017002 0ustar liggesusers#' Classify the distribution of a model-family using machine learning #' #' Choosing the right distributional family for regression models is essential #' to get more accurate estimates and standard errors. This function may help to #' Machine learning model trained to classify distributions #' #' Mean accuracy and Kappa of 0.86 and 0.85, repsectively. #' "classify_distribution" #' Classify the distribution of a model-family using machine learning #' #' Choosing the right distributional family for regression models is essential #' to get more accurate estimates and standard errors. This function may help to #' check a models' distributional family and see if the model-family probably #' should be reconsidered. Since it is difficult to exactly predict the correct #' model family, consider this function as somewhat experimental. #' #' @param model Typically, a model (that should response to `residuals()`). #' May also be a numeric vector. #' #' @note This function is somewhat experimental and might be improved in future #' releases. The final decision on the model-family should also be based on #' theoretical aspects and other information about the data and the model. #' \cr \cr #' There is also a #' [`plot()`-method](https://easystats.github.io/see/articles/performance.html) #' implemented in the #' \href{https://easystats.github.io/see/}{\pkg{see}-package}. #' #' @details #' #' This function uses an internal random forest model to classify the #' distribution from a model-family. Currently, following distributions are #' trained (i.e. results of `check_distribution()` may be one of the #' following): `"bernoulli"`, `"beta"`, `"beta-binomial"`, #' `"binomial"`, `"chi"`, `"exponential"`, `"F"`, #' `"gamma"`, `"lognormal"`, `"normal"`, `"negative #' binomial"`, `"negative binomial (zero-inflated)"`, `"pareto"`, #' `"poisson"`, `"poisson (zero-inflated)"`, `"uniform"` and #' `"weibull"`. #' \cr \cr #' Note the similarity between certain distributions according to shape, skewness, #' etc. Thus, the predicted distribution may not be perfectly representing the #' distributional family of the underlying fitted model, or the response value. #' \cr \cr #' There is a `plot()` method, which shows the probabilities of all predicted #' distributions, however, only if the probability is greater than zero. #' #' @examples #' if (require("lme4") && require("parameters") && require("see") && require("patchwork")) { #' data(sleepstudy) #' #' model <<- lmer(Reaction ~ Days + (Days | Subject), sleepstudy) #' check_distribution(model) #' plot(check_distribution(model)) #' } #' @export check_distribution <- function(model) { UseMethod("check_distribution") } #' @export check_distribution.numeric <- function(model) { insight::check_if_installed("randomForest") dat <- .extract_features(model) dist <- as.data.frame(t(stats::predict(classify_distribution, dat, type = "prob"))) out <- data.frame( Distribution = rownames(dist), p_Vector = dist[[1]], stringsAsFactors = FALSE, row.names = NULL ) class(out) <- unique(c("check_distribution_numeric", "see_check_distribution_numeric", class(out))) attr(out, "data") <- model out } #' @export check_distribution.default <- function(model) { insight::check_if_installed("randomForest") if (inherits(model, "brmsfit")) { x <- stats::residuals(model)[, "Estimate"] } else { x <- stats::residuals(model) } # x_scaled <- .normalize(x) dat <- .extract_features(x) dist_residuals <- as.data.frame(t(stats::predict(classify_distribution, dat, type = "prob"))) # Extract features x <- .factor_to_numeric(insight::get_response(model, verbose = FALSE)) dat <- .extract_features(x) dist_response <- as.data.frame(t(stats::predict(classify_distribution, dat, type = "prob"))) out <- data.frame( Distribution = rownames(dist_response), p_Residuals = dist_residuals[[1]], p_Response = dist_response[[1]], stringsAsFactors = FALSE, row.names = NULL ) class(out) <- unique(c("check_distribution", "see_check_distribution", class(out))) attr(out, "object_name") <- deparse(substitute(model), width.cutoff = 500) out } .extract_features <- function(x) { data.frame( "SD" = stats::sd(x), "MAD" = stats::mad(x, constant = 1), "Mean_Median_Distance" = mean(x) - stats::median(x), "Mean_Mode_Distance" = mean(x) - as.numeric(bayestestR::map_estimate(x, bw = "nrd0")), "SD_MAD_Distance" = stats::sd(x) - stats::mad(x, constant = 1), "Var_Mean_Distance" = stats::var(x) - mean(x), "Range_SD" = diff(range(x)) / stats::sd(x), "Range" = diff(range(x)), "IQR" = stats::IQR(x), "Skewness" = .skewness(x), "Kurtosis" = .kurtosis(x), "Uniques" = length(unique(x)) / length(x), "N_Uniques" = length(unique(x)), "Min" = min(x), "Max" = max(x), "Proportion_Positive" = sum(x >= 0) / length(x), "Integer" = all(.is_integer(x)) ) } .is_integer <- function(x) { tryCatch( expr = { ifelse(is.infinite(x), FALSE, x %% 1 == 0) }, warning = function(w) { is.integer(x) }, error = function(e) { FALSE } ) } performance/R/skewness_kurtosis.R0000644000176200001440000000166214073606417016721 0ustar liggesusers.skewness <- function(x) { if (is.matrix(x)) { apply(x, 2, .skewness_numeric) } else if (is.vector(x)) { .skewness_numeric(x) } else if (is.data.frame(x)) { sapply(x, .skewness_numeric) } else { .skewness_numeric(as.vector(x)) } } .skewness_numeric <- function(x) { x <- x[!is.na(x)] n <- length(x) (sum((x - mean(x))^3) / n) / (sum((x - mean(x))^2) / n)^(3 / 2) } .kurtosis <- function(x) { if (is.matrix(x)) { apply(x, 2, .kurtosis_numeric) } else if (is.vector(x)) { .kurtosis_numeric(x) } else if (is.data.frame(x)) { sapply(x, .kurtosis_numeric) } else { .kurtosis_numeric(as.vector(x)) } } .kurtosis_numeric <- function(x) { x <- x[!is.na(x)] n <- length(x) n * sum((x - mean(x))^4) / (sum((x - mean(x))^2)^2) } .normalize <- function(x) { as.vector((x - min(x, na.rm = TRUE)) / diff(range(x, na.rm = TRUE), na.rm = TRUE)) } performance/R/r2_loo.R0000644000176200001440000001376714117453720014315 0ustar liggesusers#' @title LOO-adjusted R2 #' @name r2_loo #' #' @description Compute LOO-adjusted R2. #' #' @param model A Bayesian regression model (from **brms**, #' **rstanarm**, **BayesFactor**, etc). #' @param robust Logical, if `TRUE`, the median instead of mean is used to #' calculate the central tendency of the variances. #' @param ci Value or vector of probability of the CI (between 0 and 1) to be #' estimated. #' @param ... Arguments passed to `r2_posterior()`. #' @inheritParams model_performance.lm #' #' @return A list with the Bayesian R2 value. For mixed models, a list with the #' Bayesian R2 value and the marginal Bayesian R2 value. The standard errors #' and credible intervals for the R2 values are saved as attributes. #' #' @details `r2_loo()` returns an "adjusted" R2 value computed using a #' leave-one-out-adjusted posterior distribution. This is conceptually similar #' to an adjusted/unbiased R2 estiamte in classical regression modeling. See #' [r2_bayes()] for an "unadjusted" R2. #' \cr \cr #' Mixed models are not currently fully supported. #' \cr \cr #' `r2_loo_posterior()` is the actual workhorse for `r2_loo()` and #' returns a posterior sample of LOO-adjusted Bayesian R2 values. #' #' @return A list with the LOO-adjusted R2 value. The standard errors #' and credible intervals for the R2 values are saved as attributes. #' #' @examples #' if (require("rstanarm")) { #' model <- stan_glm(mpg ~ wt + cyl, data = mtcars, chains = 1, iter = 500, refresh = 0) #' r2_loo(model) #' } #' @export r2_loo <- function(model, robust = TRUE, ci = 0.95, verbose = TRUE, ...) { loo_r2 <- r2_loo_posterior(model, verbose = verbose, ...) if (is.null(loo_r2)) { return(NULL) } loo_r2 <- structure( class = "r2_loo", lapply(loo_r2, ifelse(robust, stats::median, mean)), "SE" = lapply(loo_r2, ifelse(robust, stats::mad, stats::sd)), # "Estimates" = lapply(r2_bayesian, bayestestR::point_estimate, centrality = "all", dispersion = TRUE), "CI" = lapply(loo_r2, bayestestR::hdi, ci = ci), "robust" = robust ) return(loo_r2) } #' @export #' @rdname r2_loo r2_loo_posterior <- function(model, ...) { UseMethod("r2_loo_posterior") } #' @export #' @rdname r2_loo r2_loo_posterior.brmsfit <- function(model, verbose = TRUE, ...) { insight::check_if_installed("rstantools") algorithm <- insight::find_algorithm(model) if (algorithm$algorithm != "sampling") { warning(insight::format_message("`r2()` only available for models fit using the 'sampling' algorithm."), call. = FALSE) return(NA) } tryCatch( { mi <- insight::model_info(model) if (insight::is_multivariate(model)) { res <- insight::find_response(model) if (mi[[1]]$is_mixed) { br2_mv <- list( "R2_loo" = rstantools::loo_R2( model, re.form = NULL, re_formula = NULL, summary = FALSE ), "R2_loo_marginal" = rstantools::loo_R2( model, re.form = NA, re_formula = NA, summary = FALSE ) ) br2 <- lapply(1:length(res), function(x) { list( "R2_loo" = unname(as.vector(br2_mv$R2_loo[, x])), "R2_loo_marginal" = unname(as.vector(br2_mv$R2_loo_marginal[, x])) ) }) names(br2) <- res } else { br2_mv <- list("R2_loo" = rstantools::loo_R2(model, summary = FALSE)) br2 <- lapply(1:length(res), function(x) { list("R2_loo" = unname(as.vector(br2_mv$R2_loo[, x]))) }) names(br2) <- res } } else { if (mi$is_mixed) { br2 <- list( "R2_loo" = as.vector(rstantools::loo_R2( model, re.form = NULL, re_formula = NULL, summary = FALSE )), "R2_loo_marginal" = as.vector(rstantools::loo_R2( model, re.form = NA, re_formula = NA, summary = FALSE )) ) names(br2$R2_loo) <- rep("Conditional R2_adjusted", length(br2$R2_loo)) names(br2$R2_loo_marginal) <- rep("Marginal R2_adjusted", length(br2$R2_loo)) } else { br2 <- list("R2_loo" = as.vector(rstantools::loo_R2(model, summary = FALSE))) names(br2$R2_loo) <- rep("R2_adjusted", length(br2$R2_loo)) } } br2 }, error = function(e) { if (inherits(e, c("simpleError", "error"))) { insight::print_color(e$message, "red") cat("\n") } NULL } ) } #' @export #' @rdname r2_loo r2_loo_posterior.stanreg <- r2_loo_posterior.brmsfit #' @export r2_loo_posterior.stanmvreg <- function(model, verbose = TRUE, ...) { if (isTRUE(verbose)) { warning("Models of class 'stanmvreg' not yet supported.", call. = FALSE) } NULL } #' @export r2_loo_posterior.BFBayesFactor <- function(model, verbose = TRUE, ...) { if (isTRUE(verbose)) { warning("Models of class 'BFBayesFactor' not yet supported.", call. = FALSE) } NULL } #' @export as.data.frame.r2_loo <- function(x, ...) { out <- data.frame( R2 = x$R2_loo, SD = attributes(x)$SE$R2_loo, CI = attributes(x)$CI$R2_loo$CI, CI_low = attributes(x)$CI$R2_loo$CI_low, CI_high = attributes(x)$CI$R2_loo$CI_high, stringsAsFactors = FALSE ) if (!is.null(x$R2_loo_marginal)) { out_marginal <- data.frame( R2 = x$R2_loo_marginal, SD = attributes(x)$SE$R2_loo_marginal, CI = attributes(x)$CI$R2_loo_marginal$CI, CI_low = attributes(x)$CI$R2_loo_marginal$CI_low, CI_high = attributes(x)$CI$R2_loo_marginal$CI_high, stringsAsFactors = FALSE ) out$Component <- "conditional" out_marginal$Component <- "marginal" out <- rbind(out, out_marginal) } out } performance/R/model_performance_default.R0000644000176200001440000000254314044716503020274 0ustar liggesusers#' @export model_performance.default <- function(model, metrics = "all", verbose = TRUE, ...) { if (any(tolower(metrics) == "log_loss")) { metrics[tolower(metrics) == "log_loss"] <- "LOGLOSS" } # all available options... all_metrics <- c("AIC", "BIC", "R2", "R2_adj", "RMSE", "SIGMA", "LOGLOSS", "PCP", "SCORE") if (all(metrics == "all")) { metrics <- all_metrics } else if (all(metrics == "common")) { metrics <- c("AIC", "BIC", "R2", "R2_adj", "RMSE") } # check for valid input metrics <- .check_bad_metrics(metrics, all_metrics, verbose) if (!insight::is_model(model) || !insight::is_model_supported(model)) { if (isTRUE(verbose)) { warning(paste0("Objects of class '", class(model)[1], "' are not supported model objects."), call. = FALSE) } return(NULL) } model_performance.lm(model = model, metrics = metrics, verbose = verbose, ...) } .check_bad_metrics <- function(metrics, all_metrics, verbose = TRUE) { # check for valid input bad_metrics <- which(!metrics %in% all_metrics) if (length(bad_metrics)) { if (verbose) { warning(paste0("Following elements are no valid metric: ", metrics[bad_metrics], collapse = ", " )) } metrics <- metrics[-bad_metrics] } metrics } # default methods ----------------------- performance/R/r2.R0000644000176200001440000004133414120316673013432 0ustar liggesusers#' @title Compute the model's R2 #' @name r2 #' #' @description Calculate the R2, also known as the coefficient of #' determination, value for different model objects. Depending on the model, #' R2, pseudo-R2, or marginal / adjusted R2 values are returned. #' #' @param model A statistical model. #' @param ci Confidence Interval (CI) level. Default is \code{NULL}. Confidence #' intervals for R2 can be calculated based on different methods, see #' \code{ci_method}. #' @param ci_method Method for constructing the R2 confidence interval. #' Options are \code{"analytical"} for sampling-theory-based frequentist #' intervals and \code{"bootstrap"} for bootstrap intervals. Analytical intervals #' are not available for all models. For Bayesian models, [r2_bayes()] is used. #' @param verbose Logical. Should details about R2 and CI methods be given (`TRUE`) or not (`FALSE`)? #' @param ... Arguments passed down to the related r2-methods. #' @inheritParams r2_nakagawa #' #' @return Returns a list containing values related to the most appropriate R2 #' for the given model (or `NULL` if no R2 could be extracted). See the #' list below: #' \itemize{ #' \item Logistic models: [Tjur's R2][r2_tjur] #' \item General linear models: [Nagelkerke's R2][r2_nagelkerke] #' \item Multinomial Logit: [McFadden's R2][r2_mcfadden] #' \item Models with zero-inflation: [R2 for zero-inflated models][r2_zeroinflated] #' \item Mixed models: [Nakagawa's R2][r2_nakagawa] #' \item Bayesian models: [R2 bayes][r2_bayes] #' } #' #' @note If there is no `r2()`-method defined for the given model class, #' `r2()` tries to return a "generic r2 value, calculated as following: #' `1-sum((y-y_hat)^2)/sum((y-y_bar)^2))` #' #' @seealso [r2_bayes()], [r2_coxsnell()], [r2_kullback()], #' [r2_loo()], [r2_mcfadden()], [r2_nagelkerke()], #' [r2_nakagawa()], [r2_tjur()], [r2_xu()] and #' [r2_zeroinflated()]. #' #' @examples #' model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") #' r2(model) #' #' if (require("lme4")) { #' model <- lmer(Sepal.Length ~ Petal.Length + (1 | Species), data = iris) #' r2(model) #' } #' @export r2 <- function(model, ...) { UseMethod("r2") } # Default models ----------------------------------------------- #' @rdname r2 #' @export r2.default <- function(model, ci = NULL, ci_method = "analytical", verbose = TRUE, ...) { ci_method <- match.arg(ci_method, choices = c("analytical", "bootstrap")) # check input ci <- .check_r2_ci_args(ci, ci_method, "bootstrap", verbose) out <- tryCatch( { if (insight::model_info(model)$is_binomial) { resp <- .recode_to_zero(insight::get_response(model, verbose = FALSE)) } else { resp <- .factor_to_numeric(insight::get_response(model, verbose = FALSE)) } mean_resp <- mean(resp, na.rm = TRUE) pred <- insight::get_predicted(model, verbose = FALSE) list(R2 = 1 - sum((resp - pred)^2) / sum((resp - mean_resp)^2)) }, error = function(e) { NULL } ) if (is.null(out) && isTRUE(verbose)) { insight::print_color(sprintf("'r2()' does not support models of class '%s'.\n", class(model)[1]), "red") } if (!is.null(out)) { names(out$R2) <- "R2" class(out) <- c("r2_generic", class(out)) } out } #' @export r2.lm <- function(model, ...) { .r2_lm(summary(model)) } .r2_lm <- function(model_summary) { out <- list( R2 = model_summary$r.squared, R2_adjusted = model_summary$adj.r.squared ) names(out$R2) <- "R2" names(out$R2_adjusted) <- "adjusted R2" f.stat <- model_summary$fstatistic[1] DoF <- model_summary$fstatistic[2] DoF_residual <- model_summary$fstatistic[3] if (!is.null(f.stat)) { attr(out, "p") <- stats::pf(f.stat, DoF, DoF_residual, lower.tail = FALSE) attr(out, "F") <- f.stat attr(out, "df") <- DoF attr(out, "df_residual") <- DoF_residual } attr(out, "model_type") <- "Linear" structure(class = "r2_generic", out) } #' @export r2.summary.lm <- function(model, ...) { .r2_lm(model) } #' @export r2.systemfit <- function(model, ...) { out <- lapply(summary(model)$eq, function(model_summary) { s <- list( R2 = model_summary$r.squared, R2_adjusted = model_summary$adj.r.squared ) names(s$R2) <- "R2" names(s$R2_adjusted) <- "adjusted R2" s }) names(out) <- names(insight::find_formula(model)) out } #' @export r2.ols <- function(model, ...) { out <- list(R2 = model$stats["R2"]) names(out$R2) <- "R2" attr(out, "model_type") <- "Linear" structure(class = "r2_generic", out) } #' @export r2.lrm <- r2.ols #' @export r2.cph <- r2.ols #' @export r2.mhurdle <- function(model, ...) { resp <- insight::get_response(model, verbose = FALSE) mean_resp <- mean(resp, na.rm = TRUE) ftd <- model$fitted.values[, "pos", drop = TRUE] * (1 - model$fitted.values[, "zero", drop = TRUE]) n <- length(resp) K <- insight::n_parameters(model) Ko <- length(model$naive$coefficients) out <- list( R2 = 1 - sum((resp - ftd)^2) / sum((resp - mean_resp)^2), R2_adjusted = 1 - (n - Ko) / (n - K) * sum((resp - ftd)^2) / sum((resp - mean_resp)^2) ) names(out$R2) <- "R2" names(out$R2_adjusted) <- "adjusted R2" attr(out, "model_type") <- "Limited Dependent Variable" structure(class = "r2_generic", out) } #' @export r2.aov <- function(model, ...) { model_summary <- stats::summary.lm(model) out <- list( R2 = model_summary$r.squared, R2_adjusted = model_summary$adj.r.squared ) names(out$R2) <- "R2" names(out$R2_adjusted) <- "adjusted R2" attr(out, "model_type") <- "Anova" structure(class = "r2_generic", out) } #' @export r2.mlm <- function(model, ...) { model_summary <- summary(model) out <- lapply(names(model_summary), function(i) { tmp <- list( R2 = model_summary[[i]]$r.squared, R2_adjusted = model_summary[[i]]$adj.r.squared, Response = sub("Response ", "", i) ) names(tmp$R2) <- "R2" names(tmp$R2_adjusted) <- "adjusted R2" names(tmp$Response) <- "Response" tmp }) names(out) <- names(model_summary) attr(out, "model_type") <- "Multivariate Linear" structure(class = "r2_mlm", out) } #' @export r2.glm <- function(model, verbose = TRUE, ...) { info <- insight::model_info(model) if (info$family %in% c("gaussian", "inverse.gaussian")) { out <- r2.default(model, ...) } else if (info$is_logit && info$is_bernoulli) { out <- list("R2_Tjur" = r2_tjur(model)) attr(out, "model_type") <- "Logistic" names(out$R2_Tjur) <- "Tjur's R2" class(out) <- c("r2_pseudo", class(out)) } else if (info$is_binomial && !info$is_bernoulli && class(model)[1] == "glm") { if (verbose) { warning(insight::format_message("Can't calculate accurate R2 for binomial models that are not Bernoulli models."), call. = FALSE) } out <- NULL } else { out <- list("R2_Nagelkerke" = r2_nagelkerke(model)) names(out$R2_Nagelkerke) <- "Nagelkerke's R2" attr(out, "model_type") <- "Generalized Linear" class(out) <- c("r2_pseudo", class(out)) } out } #' @export r2.glmx <- r2.glm # mfx models --------------------- #' @export r2.logitmfx <- function(model, ...) { r2(model$fit, ...) } #' @export r2.logitor <- r2.logitmfx #' @export r2.poissonirr <- r2.logitmfx #' @export r2.poissonmfx <- r2.logitmfx #' @export r2.probitmfx <- r2.logitmfx #' @export r2.negbinirr <- r2.logitmfx #' @export r2.negbinmfx <- r2.logitmfx #' @export r2.betamfx <- r2.logitmfx #' @export r2.betaor <- r2.logitmfx #' @export r2.model_fit <- r2.logitmfx # Cox & Snell R2 --------------------- #' @export r2.BBreg <- function(model, ...) { out <- list("R2_CoxSnell" = r2_coxsnell(model)) names(out$R2_CoxSnell) <- "Cox & Snell's R2" class(out) <- c("r2_pseudo", class(out)) out } #' @export r2.crch <- r2.BBreg #' @export r2.bayesx <- r2.BBreg # Nagelkerke R2 ---------------------- #' @export r2.censReg <- function(model, ...) { out <- list("R2_Nagelkerke" = r2_nagelkerke(model)) names(out$R2_Nagelkerke) <- "Nagelkerke's R2" class(out) <- c("r2_pseudo", class(out)) out } #' @export r2.cpglm <- r2.censReg #' @export r2.clm <- r2.censReg #' @export r2.clm2 <- r2.censReg #' @export r2.coxph <- r2.censReg #' @export r2.multinom <- r2.censReg #' @export r2.mclogit <- r2.censReg #' @export r2.polr <- r2.censReg #' @export r2.survreg <- r2.censReg #' @export r2.truncreg <- r2.censReg #' @export r2.bracl <- r2.censReg #' @export r2.brmultinom <- r2.censReg #' @export r2.bife <- r2.censReg # Zeroinflated R2 ------------------ #' @export r2.hurdle <- function(model, ...) { r2_zeroinflated(model) } #' @export r2.zerotrunc <- r2.hurdle #' @export r2.zeroinfl <- r2.hurdle # Nakagawa R2 ---------------------- #' @rdname r2 #' @export r2.merMod <- function(model, tolerance = 1e-5, ...) { r2_nakagawa(model, tolerance = tolerance, ...) } #' @export r2.glmmTMB <- r2.merMod #' @export r2.cpglmm <- r2.merMod #' @export r2.glmmadmb <- r2.merMod #' @export r2.lme <- r2.merMod #' @export r2.clmm <- r2.merMod #' @export r2.mixed <- r2.merMod #' @export r2.MixMod <- r2.merMod #' @export r2.rlmerMod <- r2.merMod #' @export r2.wbm <- function(model, tolerance = 1e-5, ...) { out <- r2_nakagawa(model, tolerance = tolerance) if (is.null(out) || is.na(out)) { s <- summary(model) r2_marginal <- s$mod_info_list$pR2_fe r2_conditional <- s$mod_info_list$pR2_total names(r2_conditional) <- "Conditional R2" names(r2_marginal) <- "Marginal R2" out <- list( "R2_conditional" = r2_conditional, "R2_marginal" = r2_marginal ) attr(out, "model_type") <- "Fixed Effects" class(out) <- "r2_nakagawa" } out } #' @export r2.sem <- function(model, ...) { r2_conditional <- model$r2c r2_marginal <- model$r2m names(r2_conditional) <- "Conditional R2" names(r2_marginal) <- "Marginal R2" structure( class = "r2_nakagawa", list( "R2_conditional" = r2_conditional, "R2_marginal" = r2_marginal ) ) } # Bayes R2 ------------------------ #' @export r2.brmsfit <- function(model, ...) { r2_bayes(model, ...) } #' @export r2.stanreg <- r2.brmsfit #' @export r2.BFBayesFactor <- r2.brmsfit # Other methods ------------------------------ #' @export r2.gam <- function(model, ...) { # gamlss inherits from gam, and summary.gamlss prints results automatically printout <- utils::capture.output(s <- summary(model)) if (!is.null(s$r.sq)) { list( R2 = c(`Adjusted R2` = s$r.sq) ) } else { NextMethod() } } #' @export r2.scam <- r2.gam #' @export r2.betareg <- function(model, ...) { out <- list(R2 = c(`Pseudo R2` = model$pseudo.r.squared)) attr(out, "model_type") <- "Beta" class(out) <- c("r2_generic", class(out)) out } #' @export r2.rma <- function(model, ...) { s <- summary(model) if (is.null(s$R2)) { return(NULL) } out <- list(R2 = s$R2 / 100) attr(out, "model_type") <- "Meta-Analysis" structure(class = "r2_generic", out) } #' @export r2.feis <- function(model, ...) { out <- list( R2 = c(`R2` = model$r2), R2_adjusted = c(`adjusted R2` = model$adj.r2) ) attr(out, "model_type") <- "Fixed Effects Individual Slope" structure(class = "r2_generic", out) } #' @export r2.fixest <- function(model, ...) { insight::check_if_installed("fixest") r2 <- fixest::r2(model) out_normal <- .compact_list(list( R2 = r2["r2"], R2_adjusted = r2["ar2"], R2_within = r2["wr2"], R2_within_adjusted = r2["war2"] ), remove_na = TRUE) out_pseudo <- .compact_list(list( R2 = r2["pr2"], R2_adjusted = r2["apr2"], R2_within = r2["wpr2"], R2_within_adjusted = r2["wapr2"] ), remove_na = TRUE) if (length(out_normal)) { out <- out_normal } else { out <- out_pseudo } attr(out, "model_type") <- "Fixed Effects" structure(class = "r2_generic", out) } #' @export r2.felm <- function(model, ...) { model_summary <- summary(model) out <- list( R2 = c(`R2` = model_summary$r2), R2_adjusted = c(`adjusted R2` = model_summary$r2adj) ) attr(out, "model_type") <- "Fixed Effects" structure(class = "r2_generic", out) } #' @export r2.iv_robust <- function(model, ...) { out <- list( R2 = c(`R2` = model$r.squared), R2_adjusted = c(`adjusted R2` = model$adj.r.squared) ) attr(out, "model_type") <- "Two-Stage Least Squares Instrumental-Variable" structure(class = "r2_generic", out) } #' @export r2.ivreg <- function(model, ...) { model_summary <- summary(model) out <- list( R2 = c(`R2` = model_summary$r.squared), R2_adjusted = c(`adjusted R2` = model_summary$adj.r.squared) ) attr(out, "model_type") <- "Instrumental-Variable" structure(class = "r2_generic", out) } #' @export r2.bigglm <- function(model, ...) { out <- list("R2_CoxSnell" = summary(model)$rsq) names(out$R2_CoxSnell) <- "Cox & Snell's R2" class(out) <- c("r2_pseudo", class(out)) out } #' @export r2.biglm <- function(model, ...) { df.int <- ifelse(insight::has_intercept(model), 1, 0) n <- suppressWarnings(insight::n_obs(model)) rsq <- summary(model)$rsq adj.rsq <- 1 - (1 - rsq) * ((n - df.int) / model$df.resid) out <- list( R2 = rsq, R2_adjusted = adj.rsq ) names(out$R2) <- "R2" names(out$R2_adjusted) <- "adjusted R2" attr(out, "model_type") <- "Linear" structure(class = "r2_generic", out) } #' @export r2.lmrob <- function(model, ...) { model_summary <- summary(model) out <- list( R2 = c(`R2` = model_summary$r.squared), R2_adjusted = c(`adjusted R2` = model_summary$adj.r.squared) ) attr(out, "model_type") <- "Robust Linear" structure(class = "r2_generic", out) } #' @export r2.complmrob <- r2.lmrob #' @export r2.mlogit <- function(model, ...) { out <- list("R2_McFadden" = r2_mcfadden(model)) names(out$R2_McFadden) <- "McFadden's R2" class(out) <- c("r2_pseudo", class(out)) out } #' @export r2.mmclogit <- function(model, ...) { list(R2 = NA) } #' @export r2.mclogit <- function(model, ...) { list(R2 = NA) } #' @export r2.Arima <- function(model, ...) { if (!requireNamespace("forecast", quietly = TRUE)) { list(R2 = NA) } else { list(R2 = stats::cor(stats::fitted(model), insight::get_data(model))^2) } } #' @export r2.plm <- function(model, ...) { model_summary <- summary(model) out <- list( "R2" = c(`R2` = model_summary$r.squared[1]), "R2_adjusted" = c(`adjusted R2` = model_summary$r.squared[2]) ) attr(out, "model_type") <- "Panel Data" structure(class = "r2_generic", out) } #' @export r2.selection <- function(model, ...) { model_summary <- summary(model) if (is.null(model_summary$rSquared)) { return(NULL) } out <- list( "R2" = c(`R2` = model_summary$rSquared$R2), "R2_adjusted" = c(`adjusted R2` = model_summary$rSquared$R2adj) ) attr(out, "model_type") <- "Tobit 2" structure(class = "r2_generic", out) } #' @export r2.svyglm <- function(model, ...) { rsq <- (model$null.deviance - model$deviance) / model$null.deviance rsq.adjust <- 1 - ((1 - rsq) * (model$df.null / model$df.residual)) out <- list( R2 = c(`R2` = rsq), R2_adjusted = c(`adjusted R2` = rsq.adjust) ) attr(out, "model_type") <- "Survey" structure(class = "r2_generic", out) } #' @export r2.vglm <- function(model, ...) { out <- list("R2_McKelvey" = r2_mckelvey(model)) names(out$R2_McKelvey) <- "McKelvey's R2" class(out) <- c("r2_pseudo", class(out)) out } #' @export r2.vgam <- r2.vglm #' @export r2.DirichletRegModel <- function(model, ...) { out <- list("R2_Nagelkerke" = r2_nagelkerke(model)) names(out$R2_Nagelkerke) <- "Nagelkerke's R2" class(out) <- c("r2_pseudo", class(out)) out } # helper ------------------- .check_r2_ci_args <- function(ci = NULL, ci_method = "bootstrap", valid_ci_method = NULL, verbose = TRUE) { if (!is.null(ci) && !is.na(ci)) { if (!is.null(valid_ci_method) && !ci_method %in% valid_ci_method) { if (verbose) { warning(paste0("Method '", ci_method, "' to compute confidence intervals for R2 not supported."), call. = FALSE) } return(NULL) } } ci } performance/R/print-methods.R0000644000176200001440000004340714117453720015710 0ustar liggesusers#' @export print.compare_performance <- function(x, digits = 3, ...) { table_caption <- c("# Comparison of Model Performance Indices", "blue") formatted_table <- format(x = x, digits = digits, format = "text", ...) if ("Performance_Score" %in% colnames(formatted_table)) { footer <- c(sprintf("\nModel %s (of class %s) performed best with an overall performance score of %s.", formatted_table$Model[1], formatted_table$Type[1], formatted_table$Performance_Score[1]), "yellow") } else { footer <- NULL } cat(insight::export_table(x = formatted_table, digits = digits, format = "text", caption = table_caption, footer = footer, ...)) invisible(x) } #' @export print.performance_model <- function(x, digits = 3, ...) { formatted_table <- format(x = x, digits = digits, format = "text", ...) cat(insight::export_table(x = formatted_table, digits = digits, format = "text", caption = c("# Indices of model performance", "blue"), ...)) invisible(x) } #' @export print.check_outliers <- function(x, ...) { outliers <- which(x) if (length(outliers) >= 1) { o <- paste0(" (cases ", paste0(outliers, collapse = ", "), ")") insight::print_color(sprintf("Warning: %i outliers detected%s.\n", length(outliers), o), "red") } else { insight::print_color("OK: No outliers detected.\n", "green") } invisible(x) } #' @export print.check_model <- function(x, ...) { insight::check_if_installed("see", "for model diagnositic plots") NextMethod() } #' @export print.check_distribution <- function(x, ...) { insight::print_color("# Distribution of Model Family\n\n", "blue") x1 <- x[order(x$p_Residuals, decreasing = TRUE)[1:3], c(1, 2)] x1 <- x1[x1$p_Residuals > 0, ] x1$p_Residuals <- sprintf("%g%%", round(100 * x1$p_Residuals)) colnames(x1) <- c("Distribution", "Probability") insight::print_color("Predicted Distribution of Residuals\n\n", "red") print.data.frame(x1, row.names = FALSE, ...) x2 <- x[order(x$p_Response, decreasing = TRUE)[1:3], c(1, 3)] x2 <- x2[x2$p_Response > 0, ] x2$p_Response <- sprintf("%g%%", round(100 * x2$p_Response)) colnames(x2) <- c("Distribution", "Probability") insight::print_color("\nPredicted Distribution of Response\n\n", "red") print.data.frame(x2, row.names = FALSE, ...) invisible(x) } #' @export print.check_distribution_numeric <- function(x, ...) { insight::print_color("# Predicted Distribution of Vector\n\n", "blue") x1 <- x[order(x$p_Vector, decreasing = TRUE)[1:3], c(1, 2)] x1 <- x1[x1$p_Vector > 0, ] x1$p_Vector <- sprintf("%g%%", round(100 * x1$p_Vector)) colnames(x1) <- c("Distribution", "Probability") print.data.frame(x1, row.names = FALSE, ...) invisible(x) } #' @export print.performance_roc <- function(x, ...) { if (length(unique(x$Model)) == 1) { cat(sprintf("AUC: %.2f%%\n", 100 * bayestestR::area_under_curve(x$Specificity, x$Sensitivity))) } else { insight::print_color("# Area under Curve\n\n", "blue") dat <- split(x, f = x$Model) max_space <- max(nchar(x$Model)) for (i in 1:length(dat)) { cat(sprintf( " %*s: %.2f%%\n", max_space, names(dat)[i], 100 * bayestestR::area_under_curve(dat[[i]]$Specificity, dat[[i]]$Sensitivity) )) } } invisible(x) } #' @export print.item_difficulty <- function(x, ...) { spaces <- max(nchar(x$item)) insight::print_color("# Item Difficulty\n\n", "blue") insight::print_color(sprintf(" %*s ideal\n", spaces + 10, "difficulty"), "red") for (i in 1:length(x$item)) { cat(sprintf(" %*s %.2f %.2f\n", spaces, x$item[i], x$difficulty[i], x$ideal[i])) } invisible(x) } #' @export print.performance_pcp <- function(x, digits = 2, ...) { insight::print_color("# Percentage of Correct Predictions from Logistic Regression Model\n\n", "blue") cat(sprintf(" Full model: %.2f%% [%.2f%% - %.2f%%]\n", 100 * x$pcp_model, 100 * x$model_ci_low, 100 * x$model_ci_high)) cat(sprintf(" Null model: %.2f%% [%.2f%% - %.2f%%]\n", 100 * x$pcp_m0, 100 * x$null_ci_low, 100 * x$null_ci_high)) insight::print_color("\n# Likelihood-Ratio-Test\n\n", "blue") v1 <- sprintf("%.3f", x$lrt_chisq) v2 <- sprintf("%.3f", x$lrt_df_error) v3 <- sprintf("%.3f", x$lrt_p) space <- max(nchar(c(v1, v2))) cat(sprintf(" Chi-squared: %*s\n", space, v1)) cat(sprintf(" df: %*s\n", space, v2)) cat(sprintf(" p-value: %*s\n\n", space, v3)) invisible(x) } #' @export print.looic <- function(x, digits = 2, ...) { insight::print_color("# LOOIC and ELPD with Standard Error\n\n", "blue") out <- paste0(c( sprintf(" LOOIC: %.*f [%.*f]", digits, x$LOOIC, digits, x$LOOIC_SE), sprintf(" ELPD: %.*f [%.*f]", digits, x$ELPD, digits, x$ELPD_SE) ), collapse = "\n" ) cat(out) cat("\n") invisible(x) } #' @export print.r2_generic <- function(x, digits = 3, ...) { model_type <- attr(x, "model_type") if (!is.null(model_type)) { insight::print_color(sprintf("# R2 for %s Regression\n", model_type), "blue") } if (all(c("R2_adjusted", "R2_within_adjusted") %in% names(x))) { out <- paste0(c( sprintf(" R2: %.*f", digits, x$R2), sprintf(" adj. R2: %.*f", digits, x$R2_adjusted), sprintf(" within R2: %.*f", digits, x$R2_within), sprintf(" adj. within R2: %.*f", digits, x$R2_within_adjusted) ), collapse = "\n" ) } else if ("R2_adjusted" %in% names(x)) { out <- paste0(c( sprintf(" R2: %.*f", digits, x$R2), sprintf(" adj. R2: %.*f", digits, x$R2_adjusted) ), collapse = "\n" ) } else { out <- sprintf(" %s: %.*f", names(x$R2), digits, x$R2) } cat(out) cat("\n") invisible(x) } #' @export print.r2_pseudo <- function(x, digits = 3, ...) { model_type <- attr(x, "model_type") if (!is.null(model_type)) { insight::print_color(sprintf("# R2 for %s Regression\n", model_type), "blue") } cat(sprintf(" %s: %.*f\n", names(x[[1]]), digits, x[[1]])) invisible(x) } #' @export print.r2_mlm <- function(x, digits = 3, ...) { model_type <- attr(x, "model_type") if (!is.null(model_type)) { insight::print_color(sprintf("# R2 for %s Regression\n\n", model_type), "blue") } else { insight::print_color("# R2\n\n", "blue") } for (i in names(x)) { insight::print_color(sprintf("## %s\n", i), "cyan") out <- paste0(c( sprintf(" R2: %.*f", digits, x[[i]]$R2), sprintf(" adj. R2: %.*f", digits, x[[i]]$R2_adjusted) ), collapse = "\n" ) cat(out) cat("\n\n") } invisible(x) } #' @export print.r2_nakagawa <- function(x, digits = 3, ...) { model_type <- attr(x, "model_type") if (is.null(model_type)) { insight::print_color("# R2 for Mixed Models\n\n", "blue") } else { insight::print_color("# R2 for %s Regression\n\n", "blue") } out <- paste0(c( sprintf(" Conditional R2: %.*f", digits, x$R2_conditional), sprintf(" Marginal R2: %.*f", digits, x$R2_marginal) ), collapse = "\n" ) cat(out) cat("\n") invisible(x) } #' @export print.r2_bayes <- function(x, digits = 3, ...) { insight::print_color("# Bayesian R2 with Compatibility Interval\n\n", "blue") r2_ci <- insight::format_ci( attributes(x)$CI$R2_Bayes$CI_low, attributes(x)$CI$R2_Bayes$CI_high, ci = attributes(x)$CI$R2_Bayes$CI, digits = digits ) out <- sprintf(" Conditional R2: %.*f (%s)", digits, x$R2_Bayes, r2_ci) if ("R2_Bayes_marginal" %in% names(x)) { r2_marginal_ci <- insight::format_ci( attributes(x)$CI$R2_Bayes_marginal$CI_low, attributes(x)$CI$R2_Bayes_marginal$CI_high, ci = attributes(x)$CI$R2_Bayes_marginal$CI, digits = digits ) out <- paste0(c(out, sprintf(" Marginal R2: %.*f (%s)", digits, x$R2_Bayes_marginal, r2_marginal_ci)), collapse = "\n") } cat(out) cat("\n") invisible(x) } #' @export print.r2_loo <- function(x, digits = 3, ...) { insight::print_color("# LOO-adjusted R2 with Compatibility Interval\n\n", "blue") r2_ci <- insight::format_ci( attributes(x)$CI$R2_loo$CI_low, attributes(x)$CI$R2_loo$CI_high, ci = attributes(x)$CI$R2_loo$CI, digits = digits ) out <- sprintf(" Conditional R2: %.*f (%s)", digits, x$R2_loo, r2_ci) if ("R2_loo_marginal" %in% names(x)) { r2_marginal_ci <- insight::format_ci( attributes(x)$CI$R2_loo_marginal$CI_low, attributes(x)$CI$R2_loo_marginal$CI_high, ci = attributes(x)$CI$R2_loo_marginal$CI, digits = digits ) out <- paste0(c(out, sprintf(" Marginal R2: %.*f (%s)", digits, x$R2_loo_marginal, r2_marginal_ci)), collapse = "\n") } cat(out) cat("\n") invisible(x) } #' @export print.icc <- function(x, digits = 3, ...) { insight::print_color("# Intraclass Correlation Coefficient\n\n", "blue") out <- paste0(c( sprintf(" Adjusted ICC: %.*f", digits, x$ICC_adjusted), sprintf(" Conditional ICC: %.*f", digits, x$ICC_conditional) ), collapse = "\n" ) cat(out) cat("\n") invisible(x) } #' @export print.icc_by_group <- function(x, digits = 3, ...) { insight::print_color("# ICC by Group\n\n", "blue") cat(insight::export_table(x, digits = digits)) invisible(x) } #' @export print.r2_nakagawa_by_group <- function(x, digits = 3, ...) { insight::print_color("# Explained Variance by Level\n\n", "blue") cat(insight::export_table(x, digits = digits)) cat("\n") invisible(x) } #' @export print.check_zi <- function(x, ...) { insight::print_color("# Check for zero-inflation\n\n", "blue") cat(sprintf(" Observed zeros: %i\n", x$observed.zeros)) cat(sprintf(" Predicted zeros: %i\n", x$predicted.zeros)) cat(sprintf(" Ratio: %.2f\n\n", x$ratio)) lower <- 1 - x$tolerance upper <- 1 + x$tolerance if (x$ratio < lower) { message("Model is underfitting zeros (probable zero-inflation).") } else if (x$ratio > upper) { message("Model is overfitting zeros.") } else { message(insight::format_message("Model seems ok, ratio of observed and predicted zeros is within the tolerance range.")) } invisible(x) } #' @export print.check_overdisp <- function(x, digits = 3, ...) { orig_x <- x x$dispersion_ratio <- sprintf("%.*f", digits, x$dispersion_ratio) x$chisq_statistic <- sprintf("%.*f", digits, x$chisq_statistic) x$p_value <- pval <- round(x$p_value, digits = digits) if (x$p_value < .001) x$p_value <- "< 0.001" maxlen <- max( nchar(x$dispersion_ratio), nchar(x$chisq_statistic), nchar(x$p_value) ) insight::print_color("# Overdispersion test\n\n", "blue") cat(sprintf(" dispersion ratio = %s\n", format(x$dispersion_ratio, justify = "right", width = maxlen))) cat(sprintf(" Pearson's Chi-Squared = %s\n", format(x$chisq_statistic, justify = "right", width = maxlen))) cat(sprintf(" p-value = %s\n\n", format(x$p_value, justify = "right", width = maxlen))) if (pval > 0.05) { message("No overdispersion detected.") } else { message("Overdispersion detected.") } invisible(orig_x) } #' @export print.icc_decomposed <- function(x, digits = 2, ...) { # print model information cat("# Random Effect Variances and ICC\n\n") reform <- attr(x, "re.form", exact = TRUE) if (is.null(reform)) { reform <- "all random effects" } else { reform <- .safe_deparse(reform) } cat(sprintf("Conditioned on: %s\n\n", reform)) prob <- attr(x, "ci", exact = TRUE) cat(insight::print_color("## Variance Ratio (comparable to ICC)\n", "blue")) icc.val <- sprintf("%.*f", digits, x$ICC_decomposed) ci.icc.lo <- sprintf("%.*f", digits, x$ICC_CI[1]) ci.icc.hi <- sprintf("%.*f", digits, x$ICC_CI[2]) # ICC cat(sprintf( "Ratio: %s CI %i%%: [%s %s]\n", icc.val, as.integer(round(prob * 100)), ci.icc.lo, ci.icc.hi )) cat(insight::print_color("\n## Variances of Posterior Predicted Distribution\n", "blue")) null.model <- sprintf("%.*f", digits, attr(x, "var_rand_intercept", exact = TRUE)) ci.null <- attr(x, "ci.var_rand_intercept", exact = TRUE) ci.null.lo <- sprintf("%.*f", digits, ci.null$CI_low) ci.null.hi <- sprintf("%.*f", digits, ci.null$CI_high) full.model <- sprintf("%.*f", digits, attr(x, "var_total", exact = TRUE)) ci.full <- attr(x, "ci.var_total", exact = TRUE) ci.full.lo <- sprintf("%.*f", digits, ci.full$CI_low) ci.full.hi <- sprintf("%.*f", digits, ci.full$CI_high) ml <- max(nchar(null.model), nchar(full.model)) ml.ci <- max(nchar(ci.full.lo), nchar(ci.null.lo)) mh.ci <- max(nchar(ci.full.hi), nchar(ci.null.hi)) # Conditioned on fixed effects cat(sprintf( "Conditioned on fixed effects: %*s CI %i%%: [%*s %*s]\n", ml, null.model, as.integer(round(prob * 100)), ml.ci, ci.null.lo, mh.ci, ci.null.hi )) # Conditioned on random effects cat(sprintf( "Conditioned on rand. effects: %*s CI %i%%: [%*s %*s]\n", ml, full.model, as.integer(round(prob * 100)), ml.ci, ci.full.lo, mh.ci, ci.full.hi )) cat(insight::print_color("\n## Difference in Variances\n", "red")) res <- sprintf("%.*f", digits, attr(x, "var_residual", exact = TRUE)) ci.res <- attr(x, "ci.var_residual", exact = TRUE) ci.res.lo <- sprintf("%.*f", digits, ci.res$CI_low) ci.res.hi <- sprintf("%.*f", digits, ci.res$CI_high) # ICC cat(sprintf( "Difference: %s CI %i%%: [%s %s]\n", res, as.integer(round(prob * 100)), ci.res.lo, ci.res.hi )) invisible(x) } #' @export print.binned_residuals <- function(x, ...) { insight::check_if_installed("see", "to plot binned residuals") NextMethod() } #' @export print.performance_hosmer <- function(x, ...) { insight::print_color("# Hosmer-Lemeshow Goodness-of-Fit Test\n\n", "blue") v1 <- sprintf("%.3f", x$chisq) v2 <- sprintf("%i ", x$df) v3 <- sprintf("%.3f", x$p.value) space <- max(nchar(c(v1, v2, v3))) cat(sprintf(" Chi-squared: %*s\n", space, v1)) cat(sprintf(" df: %*s\n", space, v2)) cat(sprintf(" p-value: %*s\n\n", space, v3)) if (x$p.value >= 0.05) { message("Summary: model seems to fit well.") } else { message("Summary: model does not fit well.") } invisible(x) } #' @export print.performance_accuracy <- function(x, ...) { # headline insight::print_color("# Accuracy of Model Predictions\n\n", "blue") # statistics cat(sprintf("Accuracy: %.2f%%\n", 100 * x$Accuracy)) cat(sprintf(" SE: %.2f%%-points\n", 100 * x$SE)) cat(sprintf(" Method: %s\n", x$Method)) invisible(x) } #' @export print.performance_score <- function(x, ...) { # headline insight::print_color("# Proper Scoring Rules\n\n", "blue") results <- format( c( sprintf("%.4f", x$logarithmic), sprintf("%.4f", x$quadratic), sprintf("%.4f", x$spherical) ), justify = "right" ) cat(sprintf("logarithmic: %s\n", results[1])) cat(sprintf(" quadratic: %s\n", results[2])) cat(sprintf(" spherical: %s\n", results[3])) invisible(x) } #' @export print.check_collinearity <- function(x, ...) { insight::print_color("# Check for Multicollinearity\n", "blue") if ("Component" %in% colnames(x)) { comp <- split(x, x$Component) for (i in 1:length(comp)) { cat(paste0("\n* ", comp[[i]]$Component[1], " component:\n")) .print_collinearity(comp[[i]][, 1:3]) } } else { .print_collinearity(x) } invisible(x) } .print_collinearity <- function(x) { vifs <- x$VIF x$Tolerance <- 1 / x$VIF x$VIF <- sprintf("%.2f", x$VIF) x$SE_factor <- sprintf("%.2f", x$SE_factor) x$Tolerance <- sprintf("%.2f", x$Tolerance) colnames(x)[3] <- "Increased SE" low_corr <- which(vifs < 5) if (length(low_corr)) { cat("\n") insight::print_color("Low Correlation\n\n", "green") print.data.frame(x[low_corr, ], row.names = FALSE) } mid_corr <- which(vifs >= 5 & vifs < 10) if (length(mid_corr)) { cat("\n") insight::print_color("Moderate Correlation\n\n", "yellow") print.data.frame(x[mid_corr, ], row.names = FALSE) } high_corr <- which(vifs >= 10) if (length(high_corr)) { cat("\n") insight::print_color("High Correlation\n\n", "red") print.data.frame(x[high_corr, ], row.names = FALSE) } } #' @export print.test_likelihoodratio <- function(x, digits = 2, ...) { # Footer if ("LogLik" %in% names(x)) { best <- which.max(x$LogLik) footer <- c(sprintf("\nModel '%s' seems to have the best model fit.\n", x$Model[best]), "yellow") } else { footer <- NULL } # value formatting x$p <- insight::format_p(x$p, name = NULL) cat(insight::export_table( x, digits = digits, caption = c("# Likelihood-Ratio-Test (LRT) for Model Comparison", "blue"), footer = footer )) invisible(x) } #' @export print.check_itemscale <- function(x, digits = 2, ...) { insight::print_color("# Description of (Sub-)Scales", "blue") cat(insight::export_table( lapply(1:length(x), function(i) { out <- x[[i]] attr(out, "table_caption") <- c(sprintf("\nComponent %i", i), "red") attr(out, "table_footer") <- c(sprintf( "\nMean inter-item-correlation = %.3f Cronbach's alpha = %.3f", attributes(out)$item_intercorrelation, attributes(out)$cronbachs_alpha ), "yellow") out }), digits = digits, format = "text", missing = "", zap_small = TRUE )) } performance/R/check_model_diagnostics.R0000644000176200001440000001444214056373005017733 0ustar liggesusers.diag_vif <- function(model) { dat <- .compact_list(check_collinearity(model)) if (is.null(dat)) { return(NULL) } dat$group <- "low" dat$group[dat$VIF >= 5 & dat$VIF < 10] <- "moderate" dat$group[dat$VIF >= 10] <- "high" if (ncol(dat) == 5) { colnames(dat) <- c("x", "y", "se", "facet", "group") dat[, c("x", "y", "facet", "group")] } else { colnames(dat) <- c("x", "y", "se", "group") dat[, c("x", "y", "group")] } } .diag_qq <- function(model) { if (inherits(model, c("lme", "lmerMod", "merMod", "glmmTMB"))) { res_ <- sort(stats::residuals(model), na.last = NA) } else if (inherits(model, "glm")) { res_ <- sort(stats::rstandard(model, type = "pearson"), na.last = NA) } else { res_ <- tryCatch( { sort(stats::rstudent(model), na.last = NA) }, error = function(e) { NULL } ) if (is.null(res_)) { res_ <- tryCatch( { sort(stats::residuals(model), na.last = NA) }, error = function(e) { NULL } ) } } if (is.null(res_)) { insight::print_color(sprintf("QQ plot could not be created. Cannot extract residuals from objects of class '%s'.\n", class(model)[1]), "red") return(NULL) } fitted_ <- sort(stats::fitted(model), na.last = NA) stats::na.omit(data.frame(x = fitted_, y = res_)) } .diag_reqq <- function(model, level = .95, model_info) { # check if we have mixed model if (!model_info$is_mixed) { return(NULL) } insight::check_if_installed("lme4") tryCatch( { if (inherits(model, "glmmTMB")) { var_attr <- "condVar" re <- .collapse_cond(lme4::ranef(model, condVar = TRUE)) } else { var_attr <- "postVar" re <- lme4::ranef(model, condVar = TRUE) } }, error = function(e) { return(NULL) } ) se <- tryCatch( { suppressWarnings(lapply(re, function(.x) { pv <- attr(.x, var_attr, exact = TRUE) cols <- seq_len(dim(pv)[1]) unlist(lapply(cols, function(.y) sqrt(pv[.y, .y, ]))) })) }, error = function(e) { NULL } ) if (is.null(se)) { insight::print_color("Could not compute standard errors from random effects for diagnostic plot.\n", "red") return(NULL) } mapply(function(.re, .se) { ord <- unlist(lapply(.re, order)) + rep((0:(ncol(.re) - 1)) * nrow(.re), each = nrow(.re)) df.y <- unlist(.re)[ord] df.ci <- stats::qnorm((1 + level) / 2) * .se[ord] data.frame( x = rep(stats::qnorm(stats::ppoints(nrow(.re))), ncol(.re)), y = df.y, conf.low = df.y - df.ci, conf.high = df.y + df.ci, facet = gl(ncol(.re), nrow(.re), labels = names(.re)), stringsAsFactors = FALSE, row.names = NULL ) }, re, se, SIMPLIFY = FALSE) } .diag_norm <- function(model) { r <- try(stats::residuals(model), silent = TRUE) if (inherits(r, "try-error")) { insight::print_color(sprintf("Non-normality of residuals could not be computed. Cannot extract residuals from objects of class '%s'.\n", class(model)[1]), "red") return(NULL) } dat <- as.data.frame(bayestestR::estimate_density(r)) dat$curve <- stats::dnorm(seq(min(dat$x), max(dat$x), length.out = nrow(dat)), mean(r), stats::sd(r)) dat } .diag_influential_obs <- function(model, threshold = NULL) { s <- summary(model) if (inherits(model, "lm", which = TRUE) == 1) { cook_levels <- round(stats::qf(.5, s$fstatistic[2], s$fstatistic[3]), 2) } else if (!is.null(threshold)) { cook_levels <- threshold } else { cook_levels <- c(.5, 1) } n_params <- tryCatch( { model$rank }, error = function(e) { insight::n_parameters(model) } ) infl <- stats::influence(model, do.coef = FALSE) resid <- insight::get_residuals(model) std_resid <- tryCatch( { stats::rstandard(model, infl) }, error = function(e) { resid } ) plot_data <- data.frame( Hat = infl$hat, Cooks_Distance = stats::cooks.distance(model, infl), Fitted = insight::get_predicted(model), Residuals = resid, Std_Residuals = std_resid, stringsAsFactors = FALSE ) plot_data$Index <- 1:nrow(plot_data) plot_data$Influential <- "OK" plot_data$Influential[abs(plot_data$Cooks_Distance) >= max(cook_levels)] <- "Influential" attr(plot_data, "cook_levels") <- cook_levels attr(plot_data, "n_params") <- n_params plot_data } .diag_ncv <- function(model) { ncv <- tryCatch( { data.frame( x = stats::fitted(model), y = stats::residuals(model) ) }, error = function(e) { NULL } ) if (is.null(ncv)) { insight::print_color(sprintf("Non-constant error variance could not be computed. Cannot extract residuals from objects of class '%s'.\n", class(model)[1]), "red") return(NULL) } ncv } .diag_homogeneity <- function(model) { faminfo <- insight::model_info(model) r <- tryCatch( { if (inherits(model, "merMod")) { stats::residuals(model, scaled = TRUE) } else if (inherits(model, c("glmmTMB", "MixMod"))) { sigma <- if (faminfo$is_mixed) { sqrt(insight::get_variance_residual(model)) } else { .sigma_glmmTMB_nonmixed(model, faminfo) } stats::residuals(model) / sigma } else if (inherits(model, "glm")) { stats::rstandard(model, type = "pearson") } else { stats::rstandard(model) } }, error = function(e) { NULL } ) if (is.null(r)) { insight::print_color(sprintf("Homogeneity of variance could not be computed. Cannot extract residual variance from objects of class '%s'.\n", class(model)[1]), "red") return(NULL) } data.frame( x = stats::fitted(model), y = sqrt(abs(r)) ) } .sigma_glmmTMB_nonmixed <- function(model, faminfo) { if (!is.na(match(faminfo$family, c("binomial", "poisson", "truncated_poisson")))) { return(1) } betad <- model$fit$par["betad"] switch(faminfo$family, gaussian = exp(0.5 * betad), Gamma = exp(-0.5 * betad), exp(betad) ) } performance/R/r2_ci.R0000644000176200001440000000367214120316673014110 0ustar liggesusers.r2_ci <- function(model, ci = .95, ...) { alpha <- 1 - ci n <- insight::n_obs(model) df_int <- ifelse(insight::has_intercept(model), 1, 0) model_rank <- tryCatch( { model$rank - df_int }, error = function(e) { insight::n_parameters(model) - df_int } ) model_r2 <- r2(model, ci = NULL) out <- lapply(model_r2, function(rsq) { ci_low <- stats::uniroot( .pRsq, c(.00001, .99999), R2_obs = as.vector(rsq), p = model_rank, nobs = n, alpha = 1 - alpha / 2 )$root ci_high <- stats::uniroot( .pRsq, c(.00001, .99999), R2_obs = as.vector(rsq), p = model_rank, nobs = n, alpha = alpha / 2 )$root c(rsq, CI_low = ci_low, CI_high = ci_high) }) names(out) <- names(model_r2) out } .dRsq <- function(K1, R2_pop, R2_obs, p, nobs) { NCP <- R2_pop / (1 - R2_pop) F1_obs <- ((nobs - p - 1) / p) * (R2_obs / (1 - R2_obs)) exp(log( suppressWarnings(stats::pf( q = F1_obs, df1 = p, df2 = (nobs - p - 1), ncp = NCP * K1, lower.tail = FALSE )) ) + stats::dchisq(x = K1, df = (nobs - 1), log = TRUE)) } .pRsq <- function(R2_pop, R2_obs, p, nobs, alpha = 1) { a1 <- 1 - alpha # This approach avoids undersampling the area of the chi-squared # distribution that actually has any density integrals <- mapply(function(i, j, ...) { dots <- list(...) stats::integrate(.dRsq, i, j, R2_pop = dots$R2_pop, R2_obs = dots$R2_obs, p = dots$p, nobs = dots$nobs) }, seq(0, 2, by = .25) * nobs, c(seq(.25, 2, by = .25), Inf) * nobs, MoreArgs = list( R2_pop = R2_pop, R2_obs = R2_obs, p = p, nobs = nobs ), SIMPLIFY = TRUE ) sum(unlist(integrals["value",])) - a1 } performance/R/test_performance.R0000644000176200001440000003377014077615732016465 0ustar liggesusers#' @title Test if Models are Different #' #' @description #' #' Testing whether models are "different" in terms of accuracy or explanatory power is a delicate and often complex #' procedure, with many limitations and prerequisites. Moreover, many tests exist, each coming with its own interpretation, and set of strengths and weaknesses. #' \cr \cr #' The `test_performance()` function runs the most relevant and appropriate tests based on the type of input (for instance, whether the models are *nested* or not). However, it still requires the user to understand what the tests are and what they do in order to prevent their misinterpretation. See the **details** section for more information regarding the different tests and their interpretation. #' #' @param ... Multiple model objects. #' @param reference This only applies when models are non-nested, and determines #' which model should be taken as a reference, against which all the other #' models are tested. #' @param text_length Numeric, length (number of chars) of output lines. #' `test_bf()` describes models by their formulas, which can lead to #' overly long lines in the output. `text_length` fixes the length of #' lines to a specified limit. #' #' @return A data frame containing the relevant indices. #' #' @seealso [`compare_performance()`][compare_performance] to compare #' the performance indices of many different models. #' #' @details #' #' \subsection{Nested vs. Non-nested Models}{ #' Model's "nesting" is an important concept of models comparison. Indeed, many #' tests only make sense when the models are *"nested",* i.e., when their #' predictors are nested. This means that all the predictors of a model are #' contained within the predictors of a larger model (sometimes referred to as #' the encompassing model). For instance, `model1 (y ~ x1 + x2)` is #' "nested" within `model2 (y ~ x1 + x2 + x3)`. Usually, people have a list #' of nested models, for instance `m1 (y ~ 1)`, `m2 (y ~ x1)`, #' `m3 (y ~ x1 + x2)`, `m4 (y ~ x1 + x2 + x3)`, and it is conventional #' that they are "ordered" from the smallest to largest, but it is up to the #' user to reverse the order from largest to smallest. The test then shows #' whether a more parsimonious model, or whether adding a predictor, results in #' a significant difference in the model's performance. In this case, models are #' usually compared *sequentially*: m2 is tested against m1, m3 against m2, #' m4 against m3, etc. #' \cr\cr #' Two models are considered as *"non-nested"* if their predictors are #' different. For instance, `model1 (y ~ x1 + x2)` and `model2 (y ~ x3 #' + x4)`. In the case of non-nested models, all models are usually compared #' against the same *reference* model (by default, the first of the list). #' \cr\cr #' Nesting is detected via the `insight::is_nested_models()` function. #' Note that, apart from the nesting, in order for the tests to be valid, #' other requirements have often to be the fulfilled. For instance, outcome #' variables (the response) must be the same. You cannot meaningfully test #' whether apples are significantly different from oranges! #' } #' #' \subsection{Tests Description}{ #' #' \itemize{ #' \item **Bayes factor for Model Comparison** - `test_bf()`: If all #' models were fit from the same data, the returned `BF` shows the Bayes #' Factor (see `bayestestR::bayesfactor_models()`) for each model against #' the reference model (which depends on whether the models are nested or #' not). Check out #' [this #' vignette](https://easystats.github.io/bayestestR/articles/bayes_factors.html#bayesfactor_models) for more details. #' #' \item **Wald's F-Test** - `test_wald()`: The Wald test is a rough #' approximation of the Likelihood Ratio Test. However, it is more applicable #' than the LRT: you can often run a Wald test in situations where no other #' test can be run. Importantly, this test only makes statistical sense if the #' models are nested.\cr Note: this test is also available in base R through the #' [`anova()`][anova] function. It returns an `F-value` column #' as a statistic and its associated `p-value`. #' #' \item **Likelihood Ratio Test (LRT)** - `test_likelihoodratio()`: #' The LRT tests which model is a better (more likely) explanation of the #' data. Likelihood-Ratio-Test (LRT) gives usually somewhat close results (if #' not equivalent) to the Wald test and, similarly, only makes sense for #' nested models. However, Maximum likelihood tests make stronger assumptions #' than method of moments tests like the F-test, and in turn are more #' efficient. Agresti (1990) suggests that you should use the LRT instead of #' the Wald test for small sample sizes (under or about 30) or if the #' parameters are large.\cr Note: for regression models, this is similar to #' `anova(..., test="LRT")` (on models) or `lmtest::lrtest(...)`, #' depending on the `estimator` argument. For `lavaan` models (SEM, #' CFA), the function calls `lavaan::lavTestLRT()`. #' #' \item **Vuong's Test** - `test_vuong()`: Vuong's (1989) test can #' be used both for nested and non-nested models, and actually consists of two #' tests. #' \itemize{ #' \item The **Test of Distinguishability** (the `Omega2` column and #' its associated p-value) indicates whether or not the models can possibly be #' distinguished on the basis of the observed data. If its p-value is #' significant, it means the models are distinguishable. #' \item The **Robust Likelihood Test** (the `LR` column and its #' associated p-value) indicates whether each model fits better than the #' reference model. If the models are nested, then the test works as a robust #' LRT. The code for this function is adapted from the `nonnest2` #' package, and all credit go to their authors.} #' } #' } #' #' @examples #' # Nested Models #' # ------------- #' m1 <- lm(Sepal.Length ~ Petal.Width, data = iris) #' m2 <- lm(Sepal.Length ~ Petal.Width + Species, data = iris) #' m3 <- lm(Sepal.Length ~ Petal.Width * Species, data = iris) #' #' test_performance(m1, m2, m3) #' #' test_bf(m1, m2, m3) #' test_wald(m1, m2, m3) # Equivalent to anova(m1, m2, m3) #' #' # Equivalent to lmtest::lrtest(m1, m2, m3) #' test_likelihoodratio(m1, m2, m3, estimator = "ML") #' #' # Equivalent to anova(m1, m2, m3, test='LRT') #' test_likelihoodratio(m1, m2, m3, estimator = "OLS") #' #' test_vuong(m1, m2, m3) # nonnest2::vuongtest(m1, m2, nested=TRUE) #' #' # Non-nested Models #' # ----------------- #' m1 <- lm(Sepal.Length ~ Petal.Width, data = iris) #' m2 <- lm(Sepal.Length ~ Petal.Length, data = iris) #' m3 <- lm(Sepal.Length ~ Species, data = iris) #' #' test_performance(m1, m2, m3) #' test_bf(m1, m2, m3) #' test_vuong(m1, m2, m3) # nonnest2::vuongtest(m1, m2) #' #' # Tweak the output #' # ---------------- #' test_performance(m1, m2, m3, include_formula = TRUE) #' #' #' # SEM / CFA (lavaan objects) #' # -------------------------- #' # Lavaan Models #' if (require("lavaan")) { #' structure <- " visual =~ x1 + x2 + x3 #' textual =~ x4 + x5 + x6 #' speed =~ x7 + x8 + x9 #' #' visual ~~ textual + speed " #' m1 <- lavaan::cfa(structure, data = HolzingerSwineford1939) #' #' structure <- " visual =~ x1 + x2 + x3 #' textual =~ x4 + x5 + x6 #' speed =~ x7 + x8 + x9 #' #' visual ~~ 0 * textual + speed " #' m2 <- lavaan::cfa(structure, data = HolzingerSwineford1939) #' #' structure <- " visual =~ x1 + x2 + x3 #' textual =~ x4 + x5 + x6 #' speed =~ x7 + x8 + x9 #' #' visual ~~ 0 * textual + 0 * speed " #' m3 <- lavaan::cfa(structure, data = HolzingerSwineford1939) #' #' test_likelihoodratio(m1, m2, m3) #' #' # Different Model Types #' # --------------------- #' if (require("lme4") && require("mgcv")) { #' m1 <- lm(Sepal.Length ~ Petal.Length + Species, data = iris) #' m2 <- lmer(Sepal.Length ~ Petal.Length + (1 | Species), data = iris) #' m3 <- gam(Sepal.Length ~ s(Petal.Length, by = Species) + Species, data = iris) #' #' test_performance(m1, m2, m3) #' } #' } #' @references #' \itemize{ #' \item Vuong, Q. H. (1989). Likelihood ratio tests for model selection and #' non-nested hypotheses. Econometrica, 57, 307-333. #' #' \item Merkle, E. C., You, D., & Preacher, K. (2016). Testing non-nested #' structural equation models. Psychological Methods, 21, 151-163. #' } #' @export test_performance <- function(..., reference = 1) { UseMethod("test_performance") } #' @export test_performance.default <- function(..., reference = 1, include_formula = FALSE) { # Attribute class to list and get names from the global environment objects <- insight::ellipsis_info(..., only_models = TRUE) names(objects) <- match.call(expand.dots = FALSE)$`...` # Sanity checks (will throw error if non-valid objects) .test_performance_checks(objects) # If a suitable class is found, run the more specific method on it if (inherits(objects, c("ListNestedRegressions", "ListNonNestedRegressions", "ListLavaan"))) { test_performance(objects, reference = reference, include_formula = include_formula) } else { stop("The models cannot be compared for some reason :/") } } #' @export test_performance.ListNestedRegressions <- function(objects, reference = 1, include_formula = FALSE, ...) { out <- .test_performance_init(objects, include_formula = include_formula, ...) # BF test tryCatch( { rez <- test_bf(objects, reference = "sequential") if (!is.null(rez)) { rez$Model <- NULL out <- cbind(out, rez) } }, error = function(e) { # Do nothing } ) # Vuong tryCatch( { rez <- test_vuong(objects) rez$Model <- NULL out <- merge(out, rez, sort = FALSE) }, error = function(e) { # Do nothing } ) attr(out, "is_nested") <- attributes(objects)$is_nested attr(out, "reference") <- if (attributes(objects)$is_nested_increasing) "increasing" else "decreasing" class(out) <- c("test_performance", class(out)) out } #' @export test_performance.ListNonNestedRegressions <- function(objects, reference = 1, include_formula = FALSE, ...) { out <- .test_performance_init(objects, include_formula = include_formula, ...) # BF test tryCatch( { rez <- test_bf(objects, reference = reference) if (!is.null(rez)) { rez$Model <- NULL out <- cbind(out, rez) } }, error = function(e) { # Do nothing } ) # Vuong tryCatch( { rez <- test_vuong(objects, reference = reference) rez$Model <- NULL out <- merge(out, rez, sort = FALSE) }, error = function(e) { # Do nothing } ) attr(out, "is_nested") <- attributes(objects)$is_nested attr(out, "reference") <- reference class(out) <- c("test_performance", class(out)) out } # TESTS IMPLEMENTED IN OTHER PACKAGES # # Non-nested # lmtest::coxtest(m2, m3) # lmtest::jtest(m2, m3) # lmtest::encomptest(m2, m3) # nonnest2::icci(m2, m3) # Helpers ----------------------------------------------------------------- #' @export format.test_performance <- function(x, digits = 2, ...) { # Format cols and names out <- insight::format_table(x, digits = digits, ...) if (isTRUE(attributes(x)$is_nested)) { footer <- paste0( "Models were detected as nested and are compared in sequential order.\n" ) } else { footer <- paste0( "Each model is compared to ", x$Name[attributes(x)$reference], ".\n" ) } attr(out, "table_footer") <- footer out } #' @export print.test_performance <- function(x, digits = 2, ...) { out <- insight::export_table(format(x, digits = digits, ...), ...) cat(out) } #' @export print_md.test_performance <- function(x, digits = 2, ...) { insight::export_table(format(x, digits = digits, ...), format = "markdown", ...) } #' @export print_html.test_performance <- function(x, digits = 2, ...) { insight::export_table(format(x, digits = digits, ...), format = "html", ...) } #' @export display.test_performance <- function(object, format = "markdown", digits = 2, ...) { if (format == "markdown") { print_md(x = object, digits = digits, ...) } else { print_html(x = object, digits = digits, ...) } } .test_performance_init <- function(objects, include_formula = FALSE) { names <- insight::model_name(objects, include_formula = include_formula) out <- data.frame( Name = names(objects), Model = names, stringsAsFactors = FALSE ) row.names(out) <- NULL out } .test_performance_checks <- function(objects, multiple = TRUE, same_response = TRUE) { # TODO: we could actually generate a baseline model 'y ~ 1' whenever a single model is passed if (multiple && insight::is_model(objects)) { stop("At least two models are required to test them.", call. = FALSE) } if (same_response && !inherits(objects, "ListLavaan") && attributes(objects)$same_response == FALSE) { stop(insight::format_message("The models' dependent variables don't have the same data, which is a prerequisite to compare them. Probably the proportion of missing data differs between models."), call. = FALSE) } # check formula of all models, but warn only once already_warned <- FALSE for (i in objects) { if (!already_warned) { check_formula <- insight::formula_ok(i) } if (check_formula) { already_warned <- TRUE } } objects } performance/R/model_performance.mixed.R0000644000176200001440000001151614077615731017704 0ustar liggesusers#' Performance of Mixed Models #' #' Compute indices of model performance for mixed models. #' #' @param metrics Can be `"all"`, `"common"` or a character vector of #' metrics to be computed (some of `c("AIC", "AICc", "BIC", "R2", "ICC", #' "RMSE", "SIGMA", "LOGLOSS", "SCORE")`). `"common"` will compute AIC, #' BIC, R2, ICC and RMSE. #' @param ... Arguments passed to or from other methods. #' @inheritParams r2_nakagawa #' @inheritParams model_performance.lm #' #' @return A data frame (with one row) and one column per "index" (see #' `metrics`). #' #' @details #' This method returns the *adjusted ICC* only, as this is typically of #' interest when judging the variance attributed to the random effects part of #' the model (see also [icc()]). #' \cr \cr #' Furthermore, see 'Details' in [model_performance.lm()] for #' more details on returned indices. #' #' @examples #' if (require("lme4")) { #' model <- lmer(Petal.Length ~ Sepal.Length + (1 | Species), data = iris) #' model_performance(model) #' } #' @export model_performance.merMod <- function(model, metrics = "all", verbose = TRUE, ...) { if (any(tolower(metrics) == "log_loss")) { metrics[tolower(metrics) == "log_loss"] <- "LOGLOSS" } # all available metrics all_metrics <- c("AIC", "AICc", "BIC", "R2", "ICC", "RMSE", "SIGMA", "LOGLOSS", "SCORE") if (all(metrics == "all")) { metrics <- all_metrics } else if (all(metrics == "common")) { metrics <- c("AIC", "BIC", "R2", "ICC", "RMSE") } # check for valid input metrics <- .check_bad_metrics(metrics, all_metrics, verbose) # check model formula if (verbose) { insight::formula_ok(model) } mi <- insight::model_info(model, verbose = FALSE) out <- list() if ("AIC" %in% toupper(metrics)) { out$AIC <- performance_aic(model) } if ("AICC" %in% toupper(metrics)) { out$AIC <- performance_aic(model) } if ("BIC" %in% toupper(metrics)) { out$BIC <- .get_BIC(model) } if ("R2" %in% toupper(metrics)) { rsq <- suppressWarnings(r2(model)) if (!all(is.na(rsq))) out <- c(out, rsq) } if ("ICC" %in% toupper(metrics)) { icc_mm <- suppressWarnings(icc(model)) if (!all(is.na(icc_mm))) out$ICC <- icc_mm$ICC_adjusted } if ("RMSE" %in% toupper(metrics)) { out$RMSE <- performance_rmse(model, verbose = verbose) } if ("SIGMA" %in% toupper(metrics)) { out$Sigma <- .get_sigma(model, verbose = verbose) } if (("LOGLOSS" %in% toupper(metrics)) && mi$is_binomial) { out$Log_loss <- performance_logloss(model, verbose = verbose) } if (("SCORE" %in% toupper(metrics)) && (mi$is_binomial || mi$is_count)) { .scoring_rules <- performance_score(model, verbose = verbose) if (!is.na(.scoring_rules$logarithmic)) out$Score_log <- .scoring_rules$logarithmic if (!is.na(.scoring_rules$spherical)) out$Score_spherical <- .scoring_rules$spherical } # TODO: What with sigma and deviance? out <- as.data.frame(out) row.names(out) <- NULL class(out) <- c("performance_model", class(out)) out } #' @export model_performance.lme <- model_performance.merMod #' @export model_performance.glmmadmb <- model_performance.merMod #' @export model_performance.rlmerMod <- model_performance.merMod #' @export model_performance.MixMod <- model_performance.merMod #' @export model_performance.mixed <- model_performance.merMod #' @export model_performance.glmmTMB <- model_performance.merMod #' @export model_performance.mixor <- function(model, metrics = "all", verbose = TRUE, ...) { if (any(tolower(metrics) == "log_loss")) { metrics[tolower(metrics) == "log_loss"] <- "LOGLOSS" } if (all(metrics == "all")) { metrics <- c("AIC", "BIC", "LOGLOSS", "SCORE") } mi <- insight::model_info(model) out <- list() if ("AIC" %in% metrics) { out$AIC <- performance_aic(model) } if ("BIC" %in% metrics) { out$BIC <- .get_BIC(model) } if (("LOGLOSS" %in% metrics) && mi$is_binomial && !mi$is_ordinal && !mi$is_multinomial) { out$Log_loss <- performance_logloss(model, verbose = verbose) } if (("SCORE" %in% metrics) && (mi$is_binomial || mi$is_count) && !mi$is_ordinal && !mi$is_multinomial) { .scoring_rules <- performance_score(model, verbose = verbose) if (!is.na(.scoring_rules$logarithmic)) out$Score_log <- .scoring_rules$logarithmic if (!is.na(.scoring_rules$spherical)) out$Score_spherical <- .scoring_rules$spherical } out <- as.data.frame(out) row.names(out) <- NULL class(out) <- c("performance_model", class(out)) out } performance/R/performance_logloss.R0000644000176200001440000000410514077615731017155 0ustar liggesusers#' @title Log Loss #' @name performance_logloss #' #' @description Compute the log loss for models with binary outcome. #' #' @param model Model with binary outcome. #' @param ... Currently not used. #' @inheritParams model_performance.lm #' #' @return Numeric, the log loss of `model`. #' #' @details Logistic regression models predict the probability of an outcome of #' being a "success" or "failure" (or 1 and 0 etc.). `performance_logloss()` evaluates #' how good or bad the predicted probabilities are. High values indicate #' bad predictions, while low values indicate good predictions. The lower #' the log-loss, the better the model predicts the outcome. #' #' @seealso [`performance_score()`][performance_score] #' #' @examples #' data(mtcars) #' m <- glm(formula = vs ~ hp + wt, family = binomial, data = mtcars) #' performance_logloss(m) #' @export performance_logloss <- function(model, verbose = TRUE, ...) { UseMethod("performance_logloss") } #' @export performance_logloss.default <- function(model, verbose = TRUE, ...) { resp <- .recode_to_zero(insight::get_response(model, verbose = verbose)) ll <- suppressWarnings(mean(log(1 - abs(resp - stats::fitted(model))) * -1)) if (is.na(ll)) { if (verbose) insight::print_color("Can't calculate log-loss.\n", "red") return(NA) } ll } #' @export performance_logloss.brmsfit <- function(model, verbose = TRUE, ...) { yhat <- stats::fitted(object = model, summary = TRUE, ...)[, "Estimate"] resp <- .recode_to_zero(insight::get_response(model, verbose = verbose)) ll <- suppressWarnings(mean(log(1 - abs(resp - yhat)) * -1)) if (is.na(ll)) { if (verbose) insight::print_color("Can't calculate log-loss.\n", "red") return(NA) } ll } # mfx models ------------------------------- #' @export performance_logloss.logitor <- function(model, ...) { performance_logloss(model$fit, ...) } #' @export performance_logloss.logitmfx <- performance_logloss.logitor #' @export performance_logloss.probitmfx <- performance_logloss.logitor performance/R/check_itemscale.R0000644000176200001440000000745014077615727016230 0ustar liggesusers#' @title Describe Properties of Item Scales #' @name check_itemscale #' #' @description Compute various measures of internal consistencies #' applied to (sub)scales, which items were extracted using #' `parameters::principal_components()`. #' #' @param x An object of class `parameters_pca`, as returned by #' `parameters::principal_components()`. #' #' @return A list of data frames, with related measures of internal #' consistencies of each subscale. #' #' @details #' #' `check_itemscale()` calculates various measures of internal #' consistencies, such as Cronbach's alpha, item difficulty or discrimination #' etc. on subscales which were built from several items. Subscales are #' retrieved from the results of `parameters::principal_components()`, i.e. #' based on how many components were extracted from the PCA, #' `check_itemscale()` retrieves those variables that belong to a component #' and calculates the above mentioned measures. #' #' @note \itemize{ #' \item *Item difficulty* should range between 0.2 and 0.8. Ideal value #' is `p+(1-p)/2` (which mostly is between 0.5 and 0.8). See #' [item_difficulty()] for details. #' #' \item For *item discrimination*, acceptable values are 0.20 or higher; #' the closer to 1.00 the better. See [item_reliability()] for more #' details. #' #' \item In case the total *Cronbach's alpha* value is below the #' acceptable cut-off of 0.7 (mostly if an index has few items), the #' *mean inter-item-correlation* is an alternative measure to indicate #' acceptability. Satisfactory range lies between 0.2 and 0.4. See also #' [item_intercor()]. #' } #' #' @references \itemize{ #' \item Briggs SR, Cheek JM (1986) The role of factor analysis in the #' development and evaluation of personality scales. Journal of Personality, #' 54(1), 106-148. doi: 10.1111/j.1467-6494.1986.tb00391.x #' #' \item Trochim WMK (2008) Types of Reliability. #' ([web](https://conjointly.com/kb/types-of-reliability/)) #' } #' #' @examples #' # data generation from '?prcomp', slightly modified #' C <- chol(S <- toeplitz(.9^(0:15))) #' set.seed(17) #' X <- matrix(rnorm(1600), 100, 16) #' Z <- X %*% C #' if (require("parameters") && require("psych")) { #' pca <- principal_components(as.data.frame(Z), rotation = "varimax", n = 3) #' pca #' check_itemscale(pca) #' } #' @export check_itemscale <- function(x) { if (!inherits(x, "parameters_pca")) { stop("'x' must be an object of class 'parameters_pca', as returned by 'parameters::principal_components()'.") } insight::check_if_installed("parameters") data_set <- attributes(x)$data_set subscales <- parameters::closest_component(x) out <- lapply(sort(unique(subscales)), function(.subscale) { columns <- names(subscales)[subscales == .subscale] items <- data_set[columns] reliability <- item_reliability(items) .item_discr <- reliability$item_discrimination if (is.null(.item_discr)) .item_discr <- NA .item_alpha <- reliability$alpha_if_deleted if (is.null(.item_alpha)) .item_alpha <- NA s_out <- data.frame( Item = columns, Missings = sapply(items, function(i) sum(is.na(i)) / nrow(items)), Mean = sapply(items, mean, na.rm = TRUE), SD = sapply(items, stats::sd, na.rm = TRUE), Skewness = sapply(items, function(i) as.numeric(datawizard::skewness(i))), "Difficulty" = item_difficulty(items)$difficulty, "Discrimination" = .item_discr, "alpha if deleted" = .item_alpha, stringsAsFactors = FALSE, check.names = FALSE ) attr(s_out, "item_intercorrelation") <- item_intercor(items) attr(s_out, "cronbachs_alpha") <- cronbachs_alpha(items) s_out }) class(out) <- unique(c("check_itemscale", class(out))) out } performance/R/test_wald.R0000644000176200001440000000455414062460542015100 0ustar liggesusers#' @rdname test_performance #' @export test_wald <- function(...) { UseMethod("test_wald") } #' @export test_wald.default <- function(...) { # Attribute class to list and get names from the global environment objects <- insight::ellipsis_info(..., only_models = TRUE) names(objects) <- match.call(expand.dots = FALSE)$`...` # Sanity checks (will throw error if non-valid objects) .test_performance_checks(objects) # If a suitable class is found, run the more specific method on it if (inherits(objects, c("ListNestedRegressions", "ListNonNestedRegressions", "ListLavaan"))) { test_wald(objects) } else { stop("The models cannot be compared for some reason :/") } } #' @export test_wald.ListNestedRegressions <- function(objects, ...) { out <- .test_wald(objects, test = "F") attr(out, "is_nested") <- TRUE class(out) <- c("test_performance", class(out)) out } #' @export test_wald.ListNonNestedRegressions <- function(objects, ...) { stop("Wald tests cannot be run on non-nested models. Try `test_vuong()`.") } # Helpers -------------------------- .test_wald <- function(objects, test = "F") { # Compute stuff dfs <- sapply(objects, insight::get_df, type = "residual") # sort by df if (!all(sort(dfs) == dfs) && !all(sort(dfs) == rev(dfs))) { objects <- objects[order(dfs)] dfs <- dfs[order(dfs)] } dfs_diff <- c(NA, diff(sapply(objects, insight::get_df, type = "model"))) dev <- as.numeric(lapply(objects, insight::get_deviance)) dev_diff <- c(NA, -diff(dev)) out <- data.frame( df = dfs, df_diff = dfs_diff, stringsAsFactors = FALSE ) # Find reference-model related stuff refmodel <- order(dfs)[1] scale <- dev[refmodel] / dfs[refmodel] # test = "F" if (test == "F") { f_value <- (dev_diff / dfs_diff) / scale f_value[!is.na(f_value) & f_value < 0] <- NA # rather than p = 0 out$`F` <- f_value p <- stats::pf(f_value, abs(dfs_diff), dfs[refmodel], lower.tail = FALSE) # test = "LRT" } else { chi2 <- dev_diff / scale * sign(dfs_diff) chi2[!is.na(chi2) & chi2 < 0] <- NA # rather than p = 0 out$Chi2 <- chi2 p <- stats::pchisq(chi2, abs(dfs_diff), lower.tail = FALSE) } out$p <- p row.names(out) <- NULL out <- cbind(.test_performance_init(objects), out) out } performance/R/display.R0000644000176200001440000000316314077615731014562 0ustar liggesusers#' @title Print tables in different output formats #' @name display.performance_model #' #' @description Prints tables (i.e. data frame) in different output formats. #' `print_md()` is a alias for `display(format = "markdown")`. #' #' @param object,x An object returned by [`model_performance()`][model_performance] #' or [`compare_performance()`][compare_performance]. #' or its summary. #' @param format String, indicating the output format. Currently, only #' `"markdown"` is supported. #' @param digits Number of decimal places. #' @param ... Currently not used. #' #' @return A character vector. If `format = "markdown"`, the return value #' will be a character vector in markdown-table format. #' #' @details `display()` is useful when the table-output from functions, #' which is usually printed as formatted text-table to console, should #' be formatted for pretty table-rendering in markdown documents, or if #' knitted from rmarkdown to PDF or Word files. See #' [vignette](https://easystats.github.io/parameters/articles/model_parameters_formatting.html) #' for examples. #' #' @examples #' model <- lm(mpg ~ wt + cyl, data = mtcars) #' mp <- model_performance(model) #' display(mp) #' @export display.performance_model <- function(object, format = "markdown", digits = 2, ...) { print_md(x = object, digits = digits, ...) } #' @export display.compare_performance <- display.performance_model #' @export display.check_itemscale <- display.performance_model # Reexports models ------------------------ #' @importFrom insight display #' @export insight::display performance/R/performance_mse.R0000644000176200001440000000524614077615731016266 0ustar liggesusers#' @title Mean Square Error of Linear Models #' @name performance_mse #' #' @description Compute mean square error of linear models. #' #' @inheritParams performance_rmse #' @inheritParams model_performance.lm #' #' @details The mean square error is the mean of the sum of squared residuals, #' i.e. it measures the average of the squares of the errors. Less technically #' speaking, the mean square error can be considered as the variance of the #' residuals, i.e. the variation in the outcome the model doesn't explain. #' Lower values (closer to zero) indicate better fit. #' #' @return Numeric, the mean square error of `model`. #' #' @examples #' data(mtcars) #' m <- lm(mpg ~ hp + gear, data = mtcars) #' performance_mse(m) #' @export performance_mse <- function(model, ...) { UseMethod("performance_mse") } #' @rdname performance_mse #' @export mse <- performance_mse #' @export performance_mse.default <- function(model, verbose = TRUE, ...) { res <- tryCatch( { insight::get_residuals(model, verbose = verbose, type = "response", ...) }, error = function(e) { NULL } ) if (is.null(res)) { res <- tryCatch( { def_res <- insight::get_residuals(model, verbose = FALSE, ...) if (verbose) { warning(insight::format_message("Response residuals not available to calculate mean square error. (R)MSE is probably not reliable."), call. = FALSE) } def_res }, error = function(e) { NULL } ) } if (is.null(res) || all(is.na(res))) { return(NA) } # for multivariate response models... if (is.data.frame(res)) { if (verbose) { warning(insight::format_message("Multiple response variables detected. Cannot reliably compute (R)MSE."), call. = FALSE) } return(NA) } mean(res^2, na.rm = TRUE) } # mfx models ------------------------------- #' @export performance_mse.logitor <- function(model, verbose = TRUE, ...) { performance_mse(model$fit, verbose = verbose, ...) } #' @export performance_mse.logitmfx <- performance_mse.logitor #' @export performance_mse.probitmfx <- performance_mse.logitor #' @export performance_mse.poissonirr <- performance_mse.logitor #' @export performance_mse.poissonmfx <- performance_mse.logitor #' @export performance_mse.negbinirr <- performance_mse.logitor #' @export performance_mse.negbinmfx <- performance_mse.logitor #' @export performance_mse.betaor <- performance_mse.logitor #' @export performance_mse.betamfx <- performance_mse.logitor #' @export performance_mse.model_fit <- performance_mse.logitor performance/R/check_outliers.R0000644000176200001440000010133714077615727016127 0ustar liggesusers#' @title Outliers detection (check for influential observations) #' @name check_outliers #' #' @description Checks for and locates influential observations (i.e., #' "outliers") via several distance and/or clustering methods. If several #' methods are selected, the returned "Outlier" vector will be a composite #' outlier score, made of the average of the binary (0 or 1) results of each #' method. It represents the probability of each observation of being #' classified as an outlier by at least one method. The decision rule used by #' default is to classify as outliers observations which composite outlier #' score is superior or equal to 0.5 (i.e., that were classified as outliers #' by at least half of the methods). See the **Details** section below #' for a description of the methods. #' #' @param x A model or a data.frame object. #' @param method The outlier detection method(s). Can be "all" or some of #' c("cook", "pareto", "zscore", "zscore_robust", "iqr", "eti", "hdi", "bci", #' "mahalanobis", "mahalanobis_robust", "mcd", "ics", "optics", "lof"). #' @param threshold A list containing the threshold values for each method (e.g. #' `list('mahalanobis' = 7, 'cook' = 1)`), above which an observation is #' considered as outlier. If `NULL`, default values will be used (see #' 'Details'). If a numeric value is given, it will be used as the threshold #' for any of the method run. #' @param ... When `method = "ics"`, further arguments in `...` are #' passed down to `ICSOutlier::ics.outlier()`. #' #' @return A logical vector of the detected outliers with a nice printing #' method: a check (message) on whether outliers were detected or not. The #' information on the distance measure and whether or not an observation is #' considered as outlier can be recovered with the `as.data.frame` #' function. #' #' @note There is also a #' [`plot()`-method](https://easystats.github.io/see/articles/performance.html) #' implemented in the #' \href{https://easystats.github.io/see/}{\pkg{see}-package}. **Please #' note** that the range of the distance-values along the y-axis is re-scaled #' to range from 0 to 1. #' #' @details Outliers can be defined as particularly influential observations. #' Most methods rely on the computation of some distance metric, and the #' observations greater than a certain threshold are considered outliers. #' Importantly, outliers detection methods are meant to provide information to #' consider for the researcher, rather than to be an automatized procedure #' which mindless application is a substitute for thinking. #' #' An **example sentence** for reporting the usage of the composite method #' could be: #' #' *"Based on a composite outlier score (see the 'check_outliers' function #' in the 'performance' R package; Lüdecke et al., 2021) obtained via the joint #' application of multiple outliers detection algorithms (Z-scores, Iglewicz, #' 1993; Interquartile range (IQR); Mahalanobis distance, Cabana, 2019; Robust #' Mahalanobis distance, Gnanadesikan & Kettenring, 1972; Minimum Covariance #' Determinant, Leys et al., 2018; Invariant Coordinate Selection, Archimbaud et #' al., 2018; OPTICS, Ankerst et al., 1999; Isolation Forest, Liu et al. 2008; #' and Local Outlier Factor, Breunig et al., 2000), we excluded n participants #' that were classified as outliers by at least half of the methods used."* #' #' \subsection{Model-specific methods}{ #' \itemize{ #' \item **Cook's Distance**: #' Among outlier detection methods, Cook's distance and leverage are less #' common than the basic Mahalanobis distance, but still used. Cook's distance #' estimates the variations in regression coefficients after removing each #' observation, one by one (Cook, 1977). Since Cook's distance is in the metric #' of an F distribution with p and n-p degrees of freedom, the median point of #' the quantile distribution can be used as a cut-off (Bollen, 1985). A common #' approximation or heuristic is to use 4 divided by the numbers of #' observations, which usually corresponds to a lower threshold (i.e., more #' outliers are detected). This only works for Frequentist models. For Bayesian #' models, see `pareto`. #' #' \item **Pareto**: #' The reliability and approximate convergence of Bayesian models can be #' assessed using the estimates for the shape parameter k of the generalized #' Pareto distribution. If the estimated tail shape parameter k exceeds 0.5, the #' user should be warned, although in practice the authors of the `loo` #' package observed good performance for values of k up to 0.7 (the default #' threshold used by `performance`). #' }} #' #' #' \subsection{Univariate methods}{ #' \itemize{ #' \item **Z-scores** `("zscore", "zscore_robust")`: #' The Z-score, or standard score, is a way of describing a data point as #' deviance from a central value, in terms of standard deviations from the mean #' (`"zscore"`) or, as it is here the case (`"zscore_robust"`) by #' default (Iglewicz, 1993), in terms of Median Absolute Deviation (MAD) from #' the median (which are robust measures of dispersion and centrality). The #' default threshold to classify outliers is 1.959 (`threshold = #' list("zscore" = 1.959)`), corresponding to the 2.5\% (`qnorm(0.975)`) #' most extreme observations (assuming the data is normally distributed). #' Importantly, the Z-score method is univariate: it is computed column by #' column. If a dataframe is passed, the Z-score is calculated for each #' variable separately, and the maximum (absolute) Z-score is kept for each #' observations. Thus, all observations that are extreme on at least one #' variable might be detected as outliers. Thus, this method is not suited for #' high dimensional data (with many columns), returning too liberal results #' (detecting many outliers). #' #' \item **IQR** `("iqr")`: #' Using the IQR (interquartile range) is a robust method developed by John #' Tukey, which often appears in box-and-whisker plots (e.g., in #' `geom_boxplot`). The interquartile range is the range between the first #' and the third quartiles. Tukey considered as outliers any data point that #' fell outside of either 1.5 times (the default threshold) the IQR below the #' first or above the third quartile. Similar to the Z-score method, this is a #' univariate method for outliers detection, returning outliers detected for at #' least one column, and might thus not be suited to high dimensional data. #' #' \item **CI** `("ci", "eti", "hdi", "bci")`: #' Another univariate method is to compute, for each variable, some sort of #' "confidence" interval and consider as outliers values lying beyond the edges #' of that interval. By default, `"ci"` computes the Equal-Tailed Interval #' (`"eti"`), but other types of intervals are available, such as Highest #' Density Interval (`"hdi"`) or the Bias Corrected and Accelerated #' Interval (`"bci"`). The default threshold is `0.95`, considering #' as outliers all observations that are outside the 95\% CI on any of the #' variable. See [bayestestR::ci()] for more details #' about the intervals. #' }} #' #' #' \subsection{Multivariate methods}{ #' \itemize{ #' \item **Mahalanobis Distance**: #' Mahalanobis distance (Mahalanobis, 1930) is often used for multivariate #' outliers detection as this distance takes into account the shape of the #' observations. The default `threshold` is often arbitrarily set to some #' deviation (in terms of SD or MAD) from the mean (or median) of the #' Mahalanobis distance. However, as the Mahalanobis distance can be #' approximated by a Chi squared distribution (Rousseeuw & Van Zomeren, 1990), #' we can use the alpha quantile of the chi-square distribution with k degrees #' of freedom (k being the number of columns). By default, the alpha threshold #' is set to 0.025 (corresponding to the 2.5\% most extreme observations; #' Cabana, 2019). This criterion is a natural extension of the median plus or #' minus a coefficient times the MAD method (Leys et al., 2013). #' #' \item **Robust Mahalanobis Distance**: #' A robust version of Mahalanobis distance using an Orthogonalized #' Gnanadesikan-Kettenring pairwise estimator (Gnanadesikan \& Kettenring, #' 1972). Requires the \pkg{bigutilsr} package. See the #' `bigutilsr::dist_ogk()` function. #' #' \item **Minimum Covariance Determinant (MCD)**: #' Another robust version of Mahalanobis. Leys et al. (2018) argue that #' Mahalanobis Distance is not a robust way to determine outliers, as it uses #' the means and covariances of all the data – including the outliers – to #' determine individual difference scores. Minimum Covariance Determinant #' calculates the mean and covariance matrix based on the most central subset of #' the data (by default, 66\%), before computing the Mahalanobis Distance. This #' is deemed to be a more robust method of identifying and removing outliers #' than regular Mahalanobis distance. #' #' \item **Invariant Coordinate Selection (ICS)**: #' The outlier are detected using ICS, which by default uses an alpha threshold #' of 0.025 (corresponding to the 2.5\% most extreme observations) as a cut-off #' value for outliers classification. Refer to the help-file of #' `ICSOutlier::ics.outlier()` to get more details about this procedure. #' Note that `method = "ics"` requires both \pkg{ICS} and \pkg{ICSOutlier} #' to be installed, and that it takes some time to compute the results. #' #' \item **OPTICS**: #' The Ordering Points To Identify the Clustering Structure (OPTICS) algorithm #' (Ankerst et al., 1999) is using similar concepts to DBSCAN (an unsupervised #' clustering technique that can be used for outliers detection). The threshold #' argument is passed as `minPts`, which corresponds to the minimum size #' of a cluster. By default, this size is set at 2 times the number of columns #' (Sander et al., 1998). Compared to the others techniques, that will always #' detect several outliers (as these are usually defined as a percentage of #' extreme values), this algorithm functions in a different manner and won't #' always detect outliers. Note that `method = "optics"` requires the #' \pkg{dbscan} package to be installed, and that it takes some time to compute #' the results. #' #' \item **Isolation Forest**: #' The outliers are detected using the anomaly score of an isolation forest (a #' class of random forest). The default threshold of 0.025 will classify as #' outliers the observations located at `qnorm(1-0.025) * MAD)` (a robust #' equivalent of SD) of the median (roughly corresponding to the 2.5\% most #' extreme observations). Requires the \pkg{solitude} package. #' #' \item **Local Outlier Factor**: #' Based on a K nearest neighbours algorithm, LOF compares the local density of #' an point to the local densities of its neighbors instead of computing a #' distance from the center (Breunig et al., 2000). Points that have a #' substantially lower density than their neighbors are considered outliers. A #' LOF score of approximately 1 indicates that density around the point is #' comparable to its neighbors. Scores significantly larger than 1 indicate #' outliers. The default threshold of 0.025 will classify as outliers the #' observations located at `qnorm(1-0.025) * SD)` of the log-transformed #' LOF distance. Requires the \pkg{dbscan} package. #' }} #' #' \subsection{Threshold specification}{ #' Default thresholds are currently specified as follows: #' #' \preformatted{ #' list( #' zscore = stats::qnorm(p = 1 - 0.025), #' iqr = 1.5, #' ci = 0.95, #' cook = stats::qf(0.5, ncol(x), nrow(x) - ncol(x)), #' pareto = 0.7, #' mahalanobis = stats::qchisq(p = 1 - 0.025, df = ncol(x)), #' robust = stats::qchisq(p = 1 - 0.025, df = ncol(x)), #' mcd = stats::qchisq(p = 1 - 0.025, df = ncol(x)), #' ics = 0.025, #' optics = 2 * ncol(x), #' iforest = 0.025, #' lof = 0.025 #' ) #' }} #' #' @references \itemize{ #' \item Archimbaud, A., Nordhausen, K., \& Ruiz-Gazen, A. (2018). ICS for multivariate outlier detection with application to quality control. Computational Statistics & Data Analysis, 128, 184–199. \doi{10.1016/j.csda.2018.06.011} #' #' \item Gnanadesikan, R., \& Kettenring, J. R. (1972). Robust estimates, residuals, and outlier detection with multiresponse data. Biometrics, 81-124. #' #' \item Bollen, K. A., & Jackman, R. W. (1985). Regression diagnostics: An expository treatment of outliers and influential cases. Sociological Methods & Research, 13(4), 510-542. #' #' \item Cabana, E., Lillo, R. E., \& Laniado, H. (2019). Multivariate outlier detection based on a robust Mahalanobis distance with shrinkage estimators. arXiv preprint arXiv:1904.02596. #' #' \item Cook, R. D. (1977). Detection of influential observation in linear regression. Technometrics, 19(1), 15-18. #' #' \item Iglewicz, B., & Hoaglin, D. C. (1993). How to detect and handle outliers (Vol. 16). Asq Press. #' #' \item Leys, C., Klein, O., Dominicy, Y., \& Ley, C. (2018). Detecting multivariate outliers: Use a robust variant of Mahalanobis distance. Journal of Experimental Social Psychology, 74, 150-156. #' #' \item Liu, F. T., Ting, K. M., & Zhou, Z. H. (2008, December). Isolation forest. In 2008 Eighth IEEE International Conference on Data Mining (pp. 413-422). IEEE. #' #' \item Lüdecke, D., Ben-Shachar, M. S., Patil, I., Waggoner, P., \& Makowski, D. (2021). performance: An R package for assessment, comparison and testing of statistical models. Journal of Open Source Software, 6(60), 3139. \doi{10.21105/joss.03139} #' #' \item Rousseeuw, P. J., \& Van Zomeren, B. C. (1990). Unmasking multivariate outliers and leverage points. Journal of the American Statistical association, 85(411), 633-639. #' } #' #' @examples #' data <- mtcars # Size nrow(data) = 32 #' #' # For single variables ------------------------------------------------------ #' outliers_list <- check_outliers(data$mpg) # Find outliers #' outliers_list # Show the row index of the outliers #' as.numeric(outliers_list) # The object is a binary vector... #' filtered_data <- data[!outliers_list, ] # And can be used to filter a dataframe #' nrow(filtered_data) # New size, 28 (4 outliers removed) #' #' # Find all observations beyond +/- 2 SD #' check_outliers(data$mpg, method = "zscore", threshold = 2) #' #' # For dataframes ------------------------------------------------------ #' check_outliers(data) # It works the same way on dataframes #' #' # You can also use multiple methods at once #' outliers_list <- check_outliers(data, method = c( #' "mahalanobis", #' "iqr", #' "zscore" #' )) #' outliers_list #' #' # Using `as.data.frame()`, we can access more details! #' outliers_info <- as.data.frame(outliers_list) #' head(outliers_info) #' outliers_info$Outlier # Including the probability of being an outlier #' #' # And we can be more stringent in our outliers removal process #' filtered_data <- data[outliers_info$Outlier < 0.1, ] #' #' # We can run the function stratified by groups: #' if (require("dplyr")) { #' iris %>% #' group_by(Species) %>% #' check_outliers() #' } #' \dontrun{ #' # You can also run all the methods #' check_outliers(data, method = "all") #' #' # For statistical models --------------------------------------------- #' # select only mpg and disp (continuous) #' mt1 <- mtcars[, c(1, 3, 4)] #' # create some fake outliers and attach outliers to main df #' mt2 <- rbind(mt1, data.frame( #' mpg = c(37, 40), disp = c(300, 400), #' hp = c(110, 120) #' )) #' # fit model with outliers #' model <- lm(disp ~ mpg + hp, data = mt2) #' #' outliers_list <- check_outliers(model) #' #' if (require("see")) { #' plot(outliers_list) #' } #' #' insight::get_data(model)[outliers_list, ] # Show outliers data #' #' if (require("MASS")) { #' check_outliers(model, method = c("mahalabonis", "mcd")) #' } #' if (require("ICS")) { #' # This one takes some seconds to finish... #' check_outliers(model, method = "ics") #' } #' } #' @export check_outliers <- function(x, ...) { UseMethod("check_outliers") } #' @rdname check_outliers #' @export check_outliers.default <- function(x, method = c("cook", "pareto"), threshold = NULL, ...) { # Check args if (all(method == "all")) { method <- c( "zscore_robust", "iqr", "ci", "cook", "pareto", "mahalanobis", "mahalanobis_robust", "mcd", "ics", "optics", "iforest", "lof" ) } method <- match.arg( method, c( "zscore", "zscore_robust", "iqr", "ci", "hdi", "eti", "bci", "cook", "pareto", "mahalanobis", "mahalanobis_robust", "robust", "mcd", "ics", "optics", "iforest", "lof" ), several.ok = TRUE ) # Remove non-numerics data <- insight::get_modelmatrix(x) # Thresholds if (is.null(threshold)) { thresholds <- .check_outliers_thresholds(data) } else if (is.list(threshold)) { thresholds <- .check_outliers_thresholds(data) thresholds[[names(threshold)]] <- threshold[[names(threshold)]] } else { stop("The `threshold` argument must be NULL (for default values) or a list containig threshold values for desired methods (e.g., `list('mahalanobis' = 7)`).") } # Others if (!all(method %in% c("cook", "pareto"))) { df <- check_outliers(data, method, threshold, ...) df <- attributes(df)$data } else { df <- data.frame(Obs = row.names(data)) } # Cook if ("cook" %in% method & insight::model_info(x)$is_bayesian == FALSE & !inherits(x, "bife")) { df <- cbind(df, .check_outliers_cook(x, threshold = thresholds$cook)$data_cook) } # Pareto if ("pareto" %in% method & insight::model_info(x)$is_bayesian) { df <- cbind(df, .check_outliers_pareto(x, threshold = thresholds$pareto)$data_pareto) } # Composite outlier score df$Outlier <- rowMeans(df[grepl("Outlier_", names(df))]) df <- df[c(names(df)[names(df) != "Outlier"], "Outlier")] # Out outlier <- df$Outlier > 0.5 # Attributes class(outlier) <- c("check_outliers", "see_check_outliers", class(outlier)) attr(outlier, "data") <- df attr(outlier, "threshold") <- thresholds attr(outlier, "method") <- method attr(outlier, "text_size") <- 3 attr(outlier, "influential_obs") <- .influential_obs(x) outlier } #' @rdname check_outliers #' @export check_outliers.numeric <- function(x, method = "zscore_robust", threshold = NULL, ...) { check_outliers(as.data.frame(x), method = method, threshold = threshold, ...) } #' @rdname check_outliers #' @export check_outliers.data.frame <- function(x, method = "mahalanobis", threshold = NULL, ...) { # Remove non-numerics x <- x[, sapply(x, is.numeric), drop = FALSE] # Check args if (all(method == "all")) { method <- c("zscore_robust", "iqr", "ci", "cook", "pareto", "mahalanobis", "mahalanobis_robust", "mcd", "ics", "optics", "iforest", "lof") } method <- match.arg(method, c("zscore", "zscore_robust", "iqr", "ci", "hdi", "eti", "bci", "cook", "pareto", "mahalanobis", "mahalanobis_robust", "robust", "mcd", "ics", "optics", "lof"), several.ok = TRUE) # Thresholds if (is.null(threshold)) { thresholds <- .check_outliers_thresholds(x) } else if (is.list(threshold)) { thresholds <- .check_outliers_thresholds(x) thresholds[[names(threshold)]] <- threshold[[names(threshold)]] } else if (is.numeric(threshold)) { thresholds <- .check_outliers_thresholds(x) thresholds <- lapply(thresholds, function(x) threshold) } else { stop("The `threshold` argument must be NULL (for default values) or a list containig threshold values for desired methods (e.g., `list('mahalanobis' = 7)`).") } out <- list() # Z-score if ("zscore" %in% method) { out <- c(out, .check_outliers_zscore(x, threshold = thresholds$zscore, robust = FALSE, method = "max")) } if ("zscore_robust" %in% method) { out <- c(out, .check_outliers_zscore(x, threshold = thresholds$zscore, robust = TRUE, method = "max")) } # IQR if ("iqr" %in% method) { out <- c(out, .check_outliers_iqr(x, threshold = thresholds$iqr, method = "tukey")) } # CI if (any(c("ci", "hdi", "eti", "bci") %in% method)) { for (i in method[method %in% c("ci", "hdi", "eti", "bci")]) { out <- c(out, .check_outliers_ci(x, threshold = thresholds$ci, method = i)) } } # Mahalanobis if ("mahalanobis" %in% method) { out <- c(out, .check_outliers_mahalanobis(x, threshold = thresholds$mahalanobis, ...)) } # Robust Mahalanobis if (any(c("robust", "mahalanobis_robust") %in% method)) { out <- c(out, .check_outliers_robust(x, threshold = thresholds$robust)) } # MCD if ("mcd" %in% method) { out <- c(out, .check_outliers_mcd(x, threshold = thresholds$mcd, percentage_central = .66)) } # ICS if ("ics" %in% method) { out <- c(out, .check_outliers_ics(x, threshold = thresholds$ics)) } # OPTICS if ("optics" %in% method) { out <- c(out, .check_outliers_optics(x, threshold = thresholds$optics)) } # Isolation Forest # if ("iforest" %in% method) { # out <- c(out, .check_outliers_iforest(x, threshold = thresholds$iforest)) # } # Local Outlier Factor if ("lof" %in% method) { out <- c(out, .check_outliers_lof(x, threshold = thresholds$lof)) } # Combine outlier data df <- data.frame(Obs = row.names(x)) for (i in names(out[sapply(out, is.data.frame)])) { df <- cbind(df, out[[i]]) } df$Obs <- NULL # Remove temp column # Composite outlier score df$Outlier <- rowMeans(df[grepl("Outlier_", names(df))]) # Out outlier <- df$Outlier > 0.5 # Attributes class(outlier) <- c("check_outliers", "see_check_outliers", class(outlier)) attr(outlier, "data") <- df attr(outlier, "threshold") <- thresholds attr(outlier, "method") <- method attr(outlier, "text_size") <- 3 outlier } #' @export check_outliers.grouped_df <- function(x, method = "mahalanobis", threshold = NULL, ...) { info <- attributes(x) # dplyr < 0.8.0? if ("indices" %in% names(info)) { grps <- lapply(attr(x, "indices", exact = TRUE), function(x) x + 1) } else { grps <- attr(x, "groups", exact = TRUE)[[".rows"]] } # Initialize elements data <- data.frame() out <- c() thresholds <- list() # Loop through groups for (i in 1:length(grps)) { rows <- grps[[i]] subset <- check_outliers(as.data.frame(x[rows, ]), method = method, threshold = threshold, ...) data <- rbind(data, as.data.frame(subset)) out <- c(out, subset) thresholds[[paste0("group_", i)]] <- attributes(subset)$threshold } class(out) <- c("check_outliers", "see_check_outliers", class(out)) attr(out, "data") <- data attr(out, "method") <- method attr(out, "threshold") <- thresholds attr(out, "text_size") <- 3 out } # Methods ----------------------------------------------------------------- #' @export as.data.frame.check_outliers <- function(x, ...) { attributes(x)$data } #' @export as.numeric.check_outliers <- function(x, ...) { attributes(x)$data$Outlier } # Thresholds -------------------------------------------------------------- .check_outliers_thresholds <- function(x) { suppressWarnings(.check_outliers_thresholds_nowarn(x)) } .check_outliers_thresholds_nowarn <- function(x) { zscore <- stats::qnorm(p = 1 - 0.025) iqr <- 1.5 ci <- 0.95 cook <- stats::qf(0.5, ncol(x), nrow(x) - ncol(x)) pareto <- 0.7 mahalanobis <- stats::qchisq(p = 1 - 0.025, df = ncol(x)) robust <- stats::qchisq(p = 1 - 0.025, df = ncol(x)) mcd <- stats::qchisq(p = 1 - 0.025, df = ncol(x)) ics <- 0.025 optics <- 2 * ncol(x) iforest <- 0.025 lof <- 0.025 list( "zscore" = zscore, "iqr" = iqr, "ci" = ci, "cook" = cook, "pareto" = pareto, "mahalanobis" = mahalanobis, "robust" = robust, "mcd" = mcd, "ics" = ics, "optics" = optics, "iforest" = iforest, "lof" = lof ) } # Methods ----------------------------------------------------------------- .check_outliers_zscore <- function(x, threshold = stats::qnorm(p = 1 - 0.025), robust = TRUE, method = "max") { # Standardize if (robust == FALSE) { d <- abs(as.data.frame(sapply(x, function(x) (x - mean(x, na.rm = TRUE)) / stats::sd(x, na.rm = TRUE)))) } else { d <- abs(as.data.frame(sapply(x, function(x) (x - stats::median(x, na.rm = TRUE)) / stats::mad(x, na.rm = TRUE)))) } out <- data.frame(Obs = 1:nrow(as.data.frame(d))) out$Distance_Zscore <- sapply(as.data.frame(t(d)), method, na.omit = TRUE, na.rm = TRUE) # Filter out$Outlier_Zscore <- as.numeric(out$Distance_Zscore > threshold) out$Obs <- NULL list( "data_zscore" = out, "threshold_zscore" = threshold ) } .check_outliers_iqr <- function(x, threshold = 1.5, method = "tukey") { d <- data.frame(Obs = 1:nrow(as.data.frame(x))) for (col in 1:ncol(as.data.frame(x))) { v <- x[, col] if (method == "tukey") { iqr <- stats::quantile(v, 0.75, na.rm = TRUE) - stats::quantile(v, 0.25, na.rm = TRUE) } else { iqr <- stats::IQR(v, na.rm = TRUE) } lower <- stats::quantile(v, 0.25, na.rm = TRUE) - (iqr * threshold) upper <- stats::quantile(v, 0.75, na.rm = TRUE) + (iqr * threshold) d[names(as.data.frame(x))[col]] <- ifelse(v > upper, 1, ifelse(v < lower, 1, 0) ) } d$Obs <- NULL out <- data.frame(Obs = 1:nrow(as.data.frame(d))) out$Distance_IQR <- sapply(as.data.frame(t(d)), function(x) { ifelse(all(is.na(x)), NA, mean(x)) }) out$Outlier_IQR <- sapply(as.data.frame(t(d)), function(x) { ifelse(all(is.na(x)), NA, max(x)) }) out$Obs <- NULL list( "data_iqr" = out, "threshold_iqr" = threshold ) } .check_outliers_ci <- function(x, threshold = 0.95, method = "HDI") { # get CIs cis <- bayestestR::ci(x, ci = threshold, method = method) # Run through columns d <- data.frame(Obs = 1:nrow(x)) for (col in names(x)) { d[col] <- ifelse(x[[col]] > cis[cis$Parameter == col, "CI_high"] | x[[col]] < cis[cis$Parameter == col, "CI_low"], 1, 0) } d$Obs <- NULL # Average over rows out <- data.frame(x = as.numeric(sapply(as.data.frame(t(d)), mean, na.omit = TRUE, na.rm = TRUE))) names(out) <- paste0("Distance_", method) # Filter out[paste0("Outlier_", method)] <- as.numeric(out[[paste0("Distance_", method)]] > 0) output <- list( "data_" = out, "threshold_" = threshold ) names(output) <- paste0(names(output), method) output } .check_outliers_cook <- function(x, threshold = NULL) { # Compute d <- unname(stats::cooks.distance(x)) out <- data.frame(Obs = 1:length(d)) out$Distance_Cook <- d # Filter out$Outlier_Cook <- as.numeric(out$Distance_Cook > threshold) out$Obs <- NULL list( "data_cook" = out, "threshold_cook" = threshold ) } .check_outliers_pareto <- function(x, threshold = 0.7) { insight::check_if_installed("loo") # Compute d <- suppressWarnings(loo::pareto_k_values(loo::loo(x))) out <- data.frame(Obs = 1:length(d)) out$Distance_Pareto <- d # Filter out$Outlier_Pareto <- as.numeric(out$Distance_Pareto > threshold) out$Obs <- NULL list( "data_pareto" = out, "threshold_pareto" = threshold ) } .check_outliers_mahalanobis <- function(x, threshold = NULL, ...) { out <- data.frame(Obs = 1:nrow(x)) # Compute out$Distance_Mahalanobis <- stats::mahalanobis(x, center = colMeans(x), cov = stats::cov(x), ...) # Filter out$Outlier_Mahalanobis <- as.numeric(out$Distance_Mahalanobis > threshold) out$Obs <- NULL list( "data_mahalanobis" = out, "threshold_mahalanobis" = threshold ) } # Bigutils not yet fully available on CRAN .check_outliers_robust <- function(x, threshold = NULL) { out <- data.frame(Obs = 1:nrow(x)) insight::check_if_installed("bigutilsr") # Compute U <- svd(scale(x))$u out$Distance_Robust <- bigutilsr::dist_ogk(U) # Filter out$Outlier_Robust <- as.numeric(out$Distance_Robust > threshold) out$Obs <- NULL list( "data_robust" = out, "threshold_robust" = threshold ) } .check_outliers_mcd <- function(x, threshold = NULL, percentage_central = .50) { out <- data.frame(Obs = 1:nrow(x)) insight::check_if_installed("MASS") # Compute mcd <- MASS::cov.mcd(x, quantile.used = percentage_central * nrow(x)) out$Distance_MCD <- stats::mahalanobis(x, center = mcd$center, cov = mcd$cov) # Filter out$Outlier_MCD <- as.numeric(out$Distance_MCD > threshold) out$Obs <- NULL list( "data_mcd" = out, "threshold_mcd" = threshold ) } .check_outliers_ics <- function(x, threshold = 0.025, ...) { out <- data.frame(Obs = 1:nrow(x)) insight::check_if_installed("ICS") insight::check_if_installed("ICSOutlier") # Get n cores n_cores <- if (!requireNamespace("parallel", quietly = TRUE)) { NULL } else { parallel::detectCores() - 1 } # Run algorithm # Try outliers <- tryCatch( { ics <- ICS::ics2(x) ICSOutlier::ics.outlier(object = ics, ncores = n_cores, level.dist = threshold, ...) }, error = function(e) { NULL } ) if (is.null(outliers)) { if (ncol(x) == 1) { insight::print_color("At least two numeric predictors are required to detect outliers.\n", "red") } else { insight::print_color(sprintf("'check_outliers()' does not support models of class '%s'.\n", class(x)[1]), "red") } } # Get results cutoff <- outliers@ics.dist.cutoff out$Distance_ICS <- outliers@ics.distances out$Outlier_ICS <- as.numeric(out$Distance_ICS > cutoff) out$Obs <- NULL # Out list( "data_ICS" = out, "threshold_ICS" = threshold ) } .check_outliers_optics <- function(x, threshold = NULL) { out <- data.frame(Obs = 1:nrow(x)) insight::check_if_installed("dbscan") # Compute rez <- dbscan::optics(x, minPts = threshold) rez <- dbscan::extractXi(rez, xi = 0.05) # TODO: find automatic way of setting xi out$Distance_OPTICS <- rez$coredist # Filter if (is.null(rez$cluster)) { out$Outlier_OPTICS <- 0 } else { out$Outlier_OPTICS <- as.numeric(rez$cluster == 0) } out$Obs <- NULL list( "data_optics" = out, "threshold_optics" = threshold ) } # .check_outliers_iforest <- function(x, threshold = 0.025) { # out <- data.frame(Obs = 1:nrow(x)) # # # Install packages # insight::check_if_installed("solitude") # # # Compute # if (utils::packageVersion("solitude") < "0.2.0") { # iforest <- solitude::isolationForest(x) # out$Distance_iforest <- stats::predict(iforest, x, type = "anomaly_score") # } else if (utils::packageVersion("solitude") == "0.2.0") { # stop("Must update package `solitude` (above version 0.2.0). Please run `install.packages('solitude')`.", call. = FALSE) # } else { # iforest <- solitude::isolationForest$new(sample_size = nrow(x)) # suppressMessages(iforest$fit(x)) # out$Distance_iforest <- iforest$scores$anomaly_score # } # # # # Threshold # cutoff <- stats::median(out$Distance_iforest) + stats::qnorm(1 - threshold) * stats::mad(out$Distance_iforest) # # Filter # out$Outlier_iforest <- as.numeric(out$Distance_iforest >= cutoff) # # out$Obs <- NULL # list( # "data_iforest" = out, # "threshold_iforest" = threshold # ) # } .check_outliers_lof <- function(x, threshold = NULL) { out <- data.frame(Obs = 1:nrow(x)) insight::check_if_installed("dbscan") # Compute out$Distance_LOF <- log(dbscan::lof(x, k = ncol(x) - 1)) # Threshold # TODO: use tukey_mc from bigutilsr package cutoff <- stats::qnorm(1 - threshold) * stats::sd(out$Distance_LOF) # Filter out$Outlier_LOF <- as.numeric(out$Distance_LOF > cutoff) out$Obs <- NULL list( "data_lof" = out, "threshold_lof" = threshold ) } # influential observations data -------- .influential_obs <- function(x, threshold = NULL) { tryCatch( { .diag_influential_obs(x, threshold = threshold) }, error = function(e) { NULL } ) } # Non-supported model classes --------------------------------------- #' @export check_outliers.glmmTMB <- function(x, ...) { NULL } #' @export check_outliers.lme <- function(x, ...) { NULL } #' @export check_outliers.lmrob <- function(x, ...) { NULL } #' @export check_outliers.glmrob <- function(x, ...) { NULL } performance/R/model_performance.R0000644000176200001440000000240514077615731016574 0ustar liggesusers#' @title Model Performance #' @name model_performance #' #' @description See the documentation for your object's class: #' \itemize{ #' \item [Frequentist Regressions][model_performance.lm] #' \item [Instrumental Variables Regressions][model_performance.ivreg] #' \item [Mixed models][model_performance.merMod] #' \item [Bayesian models][model_performance.stanreg] #' \item [CFA / SEM lavaan models][model_performance.lavaan] #' \item [Meta-analysis models][model_performance.rma] #' } #' #' @seealso [`compare_performance()`][compare_performance] to compare performance of many different models. #' #' @param model Statistical model. #' @param ... Arguments passed to or from other methods, resp. for #' `compare_performance()`, one or multiple model objects (also of #' different classes). #' #' @return A data frame (with one row) and one column per "index" (see `metrics`). #' #' @examples #' model <- lm(mpg ~ wt + cyl, data = mtcars) #' model_performance(model) #' #' model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial") #' model_performance(model) #' @export model_performance <- function(model, ...) { UseMethod("model_performance") } #' @rdname model_performance #' @export performance <- model_performance performance/R/model_performance.ivreg.R0000644000176200001440000000315014077615731017705 0ustar liggesusers#' Performance of instrumental variable regression models #' #' @inheritParams model_performance.lm #' @param metrics Can be `"all"`, `"common"` or a character vector of #' metrics to be computed (some of `c("AIC", "AICc", "BIC", "R2", "RMSE", #' "SIGMA", "Sargan", "Wu_Hausman")`). `"common"` will compute AIC, BIC, #' R2 and RMSE. #' @export model_performance.ivreg <- function(model, metrics = "all", verbose = TRUE, ...) { all_metrics <- c("AIC", "BIC", "R2", "R2_adj", "RMSE", "SIGMA", "Sargan", "Wu_Hausman") if (all(metrics == "all")) { metrics <- all_metrics } else if (all(metrics == "common")) { metrics <- c("AIC", "BIC", "R2", "R2_adj", "RMSE") } # check for valid input metrics <- .check_bad_metrics(metrics, all_metrics, verbose) out <- model_performance.lm(model, metrics = metrics, verbose = verbose, ...) diagnostics <- c("Sargan", "Wu_Hausman") if (any(metrics %in% diagnostics)) { s <- summary(model, diagnostics = TRUE) if ("Sargan" %in% metrics) { out$Sargan <- s$diagnostics["Sargan", "statistic"] out$Sargan_p <- s$diagnostics["Sargan", "p-value"] } if ("Wu_Hausman" %in% metrics) { out$Wu_Hausman <- s$diagnostics["Wu-Hausman", "statistic"] out$Wu_Hausman_p <- s$diagnostics["Wu-Hausman", "p-value"] } # remove NA columns completed_tests <- intersect(c("Sargan", "Sargan_p", "Wu_Hausman", "Wu_Hausman_p"), colnames(out)) missing <- sapply(out[completed_tests], function(i) all(is.na(i))) if (any(missing)) { out[completed_tests[missing]] <- NULL } } out } performance/R/backports.R0000644000176200001440000000050414001035622015057 0ustar liggesusers.str2lang <- function(s) { stopifnot(length(s) == 1L) ex <- parse(text = s, keep.source = FALSE) stopifnot(length(ex) == 1L) ex[[1L]] } isTRUE <- function(x) { is.logical(x) && length(x) == 1L && !is.na(x) && x } isFALSE <- function(x) { is.logical(x) && length(x) == 1L && !is.na(x) && !x } performance/R/icc.R0000644000176200001440000003156114077615731013656 0ustar liggesusers#' Intraclass Correlation Coefficient (ICC) #' #' This function calculates the intraclass-correlation coefficient (ICC) - #' sometimes also called *variance partition coefficient* (VPC) - for mixed #' effects models. The ICC can be calculated for all models supported by #' `insight::get_variance()`. For models fitted with the #' **brms**-package, `icc()` might fail due to the large variety of #' models and families supported by the **brms**-package. In such cases, an #' alternative to the ICC is the `variance_decomposition()`, which is based #' on the posterior predictive distribution (see 'Details'). #' #' @param model A (Bayesian) mixed effects model. #' @param re_formula Formula containing group-level effects to be considered in #' the prediction. If `NULL` (default), include all group-level effects. #' Else, for instance for nested models, name a specific group-level effect #' to calculate the variance decomposition for this group-level. See 'Details' #' and `?brms::posterior_predict`. #' @param ci Credible interval level. #' @param by_group Logical, if `TRUE`, `icc()` returns the variance #' components for each random-effects level (if there are multiple levels). #' See 'Details'. #' #' @inheritParams r2_bayes #' @inheritParams insight::get_variance #' #' @return A list with two values, the adjusted and conditional ICC. For #' `variance_decomposition()`, a list with two values, the decomposed #' ICC as well as the credible intervals for this ICC. #' #' @references \itemize{ #' \item Hox, J. J. (2010). Multilevel analysis: techniques and applications #' (2nd ed). New York: Routledge. #' \item Nakagawa, S., Johnson, P. C. D., & Schielzeth, H. (2017). The #' coefficient of determination R2 and intra-class correlation coefficient from #' generalized linear mixed-effects models revisited and expanded. Journal of #' The Royal Society Interface, 14(134), 20170213. \doi{10.1098/rsif.2017.0213} #' \item Rabe-Hesketh, S., & Skrondal, A. (2012). Multilevel and longitudinal #' modeling using Stata (3rd ed). College Station, Tex: Stata Press #' Publication. #' \item Raudenbush, S. W., & Bryk, A. S. (2002). Hierarchical linear models: #' applications and data analysis methods (2nd ed). Thousand Oaks: Sage #' Publications. #' } #' #' @details #' \subsection{Interpretation}{ #' The ICC can be interpreted as \dQuote{the proportion of the variance #' explained by the grouping structure in the population}. The grouping #' structure entails that measurements are organized into groups (e.g., test #' scores in a school can be grouped by classroom if there are multiple #' classrooms and each classroom was administered the same test) and ICC indexes #' how strongly measurements in the same group resemble each other. This index #' goes from 0, if the grouping conveys no information, to 1, if all #' observations in a group are identical (Gelman \& Hill, 2007, p. 258). In #' other word, the ICC \dQuote{can also be interpreted as the expected #' correlation between two randomly drawn units that are in the same group} #' \cite{(Hox 2010: 15)}, although this definition might not apply to mixed #' models with more complex random effects structures. #' } #' \subsection{Calculation}{ #' The ICC is calculated by dividing the random effect variance, #' \ifelse{html}{\out{σ2i}}{\eqn{\sigma^2_i}}, by #' the total variance, i.e. the sum of the random effect variance and the #' residual variance, \ifelse{html}{\out{σ2ε}}{\eqn{\sigma^2_\epsilon}}. #' } #' \subsection{Adjusted and conditional ICC}{ #' `icc()` calculates an adjusted and conditional ICC, which both take all #' sources of uncertainty (i.e. of *all random effects*) into account. #' While the *adjusted ICC* only relates to the random effects, the #' *conditional ICC* also takes the fixed effects variances into account #' (see \cite{Nakagawa et al. 2017}). Typically, the *adjusted* ICC is of #' interest when the analysis of random effects is of interest. `icc()` #' returns a meaningful ICC also for more complex random effects structures, #' like models with random slopes or nested design (more than two levels) and #' is applicable for models with other distributions than Gaussian. For more #' details on the computation of the variances, see #' `?insight::get_variance`. #' } #' \subsection{ICC for unconditional and conditional models}{ #' Usually, the ICC is calculated for the null model ("unconditional model"). #' However, according to \cite{Raudenbush and Bryk (2002)} or #' \cite{Rabe-Hesketh and Skrondal (2012)} it is also feasible to compute the #' ICC for full models with covariates ("conditional models") and compare how #' much, e.g., a level-2 variable explains the portion of variation in the #' grouping structure (random intercept). #' } #' \subsection{ICC for specific group-levels}{ #' The proportion of variance for specific levels related to the overall model #' can be computed by setting `by_group = TRUE`. The reported ICC is #' the variance for each (random effect) group compared to the total #' variance of the model. For mixed models with a simple random intercept, #' this is identical to the classical (adjusted) ICC. #' } #' \subsection{Variance decomposition for brms-models}{ #' If `model` is of class `brmsfit`, `icc()` might fail due to #' the large variety of models and families supported by the **brms** #' package. In such cases, `variance_decomposition()` is an alternative #' ICC measure. The function calculates a variance decomposition based on the #' posterior predictive distribution. In this case, first, the draws from the #' posterior predictive distribution *not conditioned* on group-level #' terms (`posterior_predict(..., re_formula = NA)`) are calculated as #' well as draws from this distribution *conditioned* on *all random #' effects* (by default, unless specified else in `re_formula`) are taken. #' Then, second, the variances for each of these draws are calculated. The #' "ICC" is then the ratio between these two variances. This is the recommended #' way to analyse random-effect-variances for non-Gaussian models. It is then #' possible to compare variances across models, also by specifying different #' group-level terms via the `re_formula`-argument. #' \cr \cr #' Sometimes, when the variance of the posterior predictive distribution is #' very large, the variance ratio in the output makes no sense, e.g. because #' it is negative. In such cases, it might help to use `robust = TRUE`. #' } #' #' @examples #' if (require("lme4")) { #' model <- lmer(Sepal.Length ~ Petal.Length + (1 | Species), data = iris) #' icc(model) #' } #' #' # ICC for specific group-levels #' if (require("lme4")) { #' data(sleepstudy) #' set.seed(12345) #' sleepstudy$grp <- sample(1:5, size = 180, replace = TRUE) #' sleepstudy$subgrp <- NA #' for (i in 1:5) { #' filter_group <- sleepstudy$grp == i #' sleepstudy$subgrp[filter_group] <- #' sample(1:30, size = sum(filter_group), replace = TRUE) #' } #' model <- lmer( #' Reaction ~ Days + (1 | grp / subgrp) + (1 | Subject), #' data = sleepstudy #' ) #' icc(model, by_group = TRUE) #' } #' @export icc <- function(model, by_group = FALSE, tolerance = 1e-05) { # special handling for smicd::semLme() if (inherits(model, "sem") && inherits(model, "lme")) { return(model$icc) } if (insight::is_multivariate(model)) { if (inherits(model, "brmsfit")) { return(variance_decomposition(model)) } else { insight::print_color("Multiple response models not yet supported. You may use 'performance::variance_decomposition()'.\n", "red") return(NULL) } } if (!insight::is_mixed_model(model)) { warning("'model' has no random effects.", call. = FALSE) return(NULL) } vars <- tryCatch( { insight::get_variance(model, name_fun = "icc()", name_full = "ICC", tolerance = tolerance ) }, error = function(e) { if (inherits(e, c("simpleError", "error"))) { insight::print_color(e$message, "red") cat("\n") } NULL } ) if (is.null(vars) || all(is.na(vars))) { return(NA) } # check if we have successfully computed all variance components... components <- c("var.fixed", "var.random", "var.residual") check_elements <- sapply(components, function(.i) !is.null(vars[[.i]])) if (!all(check_elements)) { return(NA) } # Calculate ICC values by groups if (isTRUE(by_group)) { # with random slopes, icc is inaccurate if (!is.null(insight::find_random_slopes(model))) { warning(insight::format_message("Model contains random slopes. Cannot compute accurate ICCs by group factors."), call. = FALSE) } # icc per group factor with reference to overall model icc_overall <- vars$var.intercept / (vars$var.random + vars$var.residual) out <- data.frame( Group = names(icc_overall), ICC = unname(icc_overall), stringsAsFactors = FALSE ) # iccs between groups # n_grps <- length(vars$var.intercept) # level_combinations <- utils::combn(1:n_grps, m = n_grps - 1, simplify = FALSE) # icc_grp <- sapply(level_combinations, function(v) vars$var.intercept[v[1]] / (vars$var.intercept[v[1]] + vars$var.intercept[v[2]])) # # out2 <- data.frame( # Group1 = group_names[sapply(level_combinations, function(i) i[1])], # Group2 = group_names[sapply(level_combinations, function(i) i[2])], # ICC = unname(icc_grp), # stringsAsFactors = FALSE # ) class(out) <- c("icc_by_group", class(out)) out } else { # Calculate ICC values icc_adjusted <- vars$var.random / (vars$var.random + vars$var.residual) icc_conditional <- vars$var.random / (vars$var.fixed + vars$var.random + vars$var.residual) structure( class = "icc", list( "ICC_adjusted" = icc_adjusted, "ICC_conditional" = icc_conditional ) ) } } #' @export as.data.frame.icc <- function(x, row.names = NULL, optional = FALSE, ...) { data.frame( ICC_adjusted = x$ICC_adjusted, ICC_conditional = x$ICC_conditional, stringsAsFactors = FALSE, row.names = row.names, optional = optional, ... ) } #' @param ... Arguments passed down to `brms::posterior_predict()`. #' @inheritParams icc #' @rdname icc #' @export variance_decomposition <- function(model, re_formula = NULL, robust = TRUE, ci = .95, ...) { if (!inherits(model, "brmsfit")) { stop("Only models from package 'brms' are supported.") } mi <- insight::model_info(model) # for multivariate response models, we need a more complicated check... if (insight::is_multivariate(model)) { resp <- insight::find_response(model) is.mixed <- unlist(lapply(resp, function(i) mi[[i]]$is_mixed)) if (!any(is.mixed)) { warning("'model' has no random effects.", call. = FALSE) return(NULL) } } else if (!insight::is_mixed_model(model)) { warning("'model' has no random effects.", call. = FALSE) return(NULL) } insight::check_if_installed("brms") PPD <- brms::posterior_predict(model, re_formula = re_formula, summary = FALSE, ...) var_total <- apply(PPD, MARGIN = 1, FUN = stats::var) PPD_0 <- brms::posterior_predict(model, re_formula = NA, summary = FALSE, ...) var_rand_intercept <- apply(PPD_0, MARGIN = 1, FUN = stats::var) if (robust) { fun <- get("median", asNamespace("stats")) } else { fun <- get("mean", asNamespace("base")) } var_icc <- var_rand_intercept / var_total var_residual <- var_total - var_rand_intercept ci_icc <- rev(1 - stats::quantile(var_rand_intercept / var_total, probs = c((1 - ci) / 2, (1 + ci) / 2))) result <- structure( class = "icc_decomposed", list( "ICC_decomposed" = 1 - fun(var_icc), "ICC_CI" = ci_icc ) ) attr(result, "var_rand_intercept") <- fun(var_rand_intercept) attr(result, "var_residual") <- fun(var_residual) attr(result, "var_total") <- fun(var_total) attr(result, "ci.var_rand_intercept") <- bayestestR::ci(var_rand_intercept, ci = ci) attr(result, "ci.var_residual") <- bayestestR::ci(var_residual, ci = ci) attr(result, "ci.var_total") <- bayestestR::ci(var_total, ci = ci) attr(result, "ci") <- ci attr(result, "re.form") <- re_formula attr(result, "ranef") <- model$ranef$group[1] # remove data attr(attr(result, "ci.var_rand_intercept"), "data") <- NULL attr(attr(result, "ci.var_residual"), "data") <- NULL attr(attr(result, "ci.var_total"), "data") <- NULL result } performance/R/r2_zeroinflated.R0000644000176200001440000000447214077615732016213 0ustar liggesusers#' @title R2 for models with zero-inflation #' @name r2_zeroinflated #' #' @description #' Calculates R2 for models with zero-inflation component, including mixed #' effects models. #' #' @param model A model. #' @param method Indicates the method to calculate R2. See 'Details'. May be #' abbreviated. #' #' @return For the default-method, a list with the R2 and adjusted R2 values. #' For `method = "correlation"`, a named numeric vector with the #' correlation-based R2 value. #' #' @details The default-method calculates an R2 value based on the residual #' variance divided by the total variance. For `method = "correlation"`, #' R2 is a correlation-based measure, which is rather crude. It simply computes #' the squared correlation between the model's actual and predicted response. #' #' @examples #' \donttest{ #' if (require("pscl")) { #' data(bioChemists) #' model <- zeroinfl( #' art ~ fem + mar + kid5 + ment | kid5 + phd, #' data = bioChemists #' ) #' #' r2_zeroinflated(model) #' } #' } #' @export r2_zeroinflated <- function(model, method = c("default", "correlation")) { method <- match.arg(method) mi <- insight::model_info(model, verbose = FALSE) if (!mi$is_zero_inflated) { warning("Model has no zero-inflation component.") } if (method == "default") { .r2_zi_default(model) } else { .r2_zi_correlation(model) } } .r2_zi_correlation <- function(model) { r2_zi <- stats::cor( insight::get_response(model, verbose = FALSE), stats::predict(model, type = "response") )^2 names(r2_zi) <- "R2 for ZI-models" r2_zi } .r2_zi_default <- function(model) { n <- insight::n_obs(model) k <- length(insight::find_parameters(model)[["conditional"]]) y <- insight::get_response(model, verbose = FALSE) # pred <- stats::predict(model, type = "response") var_fixed <- sum((stats::fitted(model) - mean(y))^2) var_resid <- sum(stats::residuals(model, type = "pearson")^2) r2_zi <- var_fixed / (var_resid + var_fixed) r2_zi_adj <- 1 - (1 - r2_zi) * (n - 1) / (n - k - 1) out <- list(R2 = r2_zi, R2_adjusted = r2_zi_adj) names(out$R2) <- "R2" names(out$R2_adjusted) <- "adjusted R2" attr(out, "model_type") <- "Zero-Inflated and Hurdle" structure(class = "r2_generic", out) } performance/R/performance_aicc.R0000644000176200001440000001106014077615731016370 0ustar liggesusers#' @title Compute the AIC or second-order AIC #' @name performance_aicc #' #' @description Compute the AIC or the second-order Akaike's information criterion (AICc). #' `performance_aic()` is a small wrapper that returns the AIC. It is #' a generic function that also works for some models that don't have a AIC method #' (like Tweedie models). `performance_aicc()` returns the second-order (or "small sample") AIC that incorporates a correction for small sample sizes. #' #' @param x A model object. #' @param ... Currently not used. #' #' @return Numeric, the AIC or AICc value. #' #' @references \itemize{ #' \item Akaike, H. (1973) Information theory as an extension of the maximum likelihood principle. In: Second International Symposium on Information Theory, pp. 267–281. Petrov, B.N., Csaki, F., Eds, Akademiai Kiado, Budapest. #' \item Hurvich, C. M., Tsai, C.-L. (1991) Bias of the corrected AIC criterion for underfitted regression and time series models. Biometrika 78, 499–509. #' } #' #' @examples #' m <- lm(mpg ~ wt + cyl + gear + disp, data = mtcars) #' AIC(m) #' performance_aicc(m) #' @export performance_aicc <- function(x, ...) { UseMethod("performance_aicc") } #' @rdname performance_aicc #' @export performance_aic <- function(x, ...) { UseMethod("performance_aic") } # default ------------------------------------------------- #' @export performance_aic.default <- function(x, ...) { info <- suppressWarnings(insight::model_info(x)) aic <- NULL ## TODO remove is.list() once insight 0.8.3 is on CRAN if (is.null(info) || !is.list(info)) { info <- list(family = "unknown") } if (info$family == "Tweedie") { insight::check_if_installed("tweedie") aic <- suppressMessages(tweedie::AICtweedie(x)) } else { aic <- tryCatch( { stats::AIC(x) }, error = function(e) { NULL } ) if (is.null(aic)) { aic <- tryCatch( { -2 * as.numeric(insight::get_loglikelihood(x)) + 2 * insight::get_df(x, type = "model") }, error = function(e) { NULL } ) } } aic } # VGAM models ------------------------------------ #' @export performance_aic.vgam <- function(x, ...) { insight::check_if_installed("VGAM") VGAM::AIC(x) } #' @export performance_aic.vglm <- performance_aic.vgam # Survey models -------------------------------------- #' @export performance_aic.svyglm <- function(x, ...) { tryCatch( { stats::AIC(x)[["AIC"]] }, error = function(e) { NULL } ) } #' @export performance_aic.svycoxph <- performance_aic.svyglm # mfx models -------------------------------------- #' @export performance_aic.logitor <- function(x, ...) { performance_aic(x$fit, ...) } #' @export performance_aic.logitmfx <- performance_aic.logitor #' @export performance_aic.probitmfx <- performance_aic.logitor #' @export performance_aic.poissonirr <- performance_aic.logitor #' @export performance_aic.poissonmfx <- performance_aic.logitor #' @export performance_aic.negbinirr <- performance_aic.logitor #' @export performance_aic.negbinmfx <- performance_aic.logitor #' @export performance_aic.betaor <- performance_aic.logitor #' @export performance_aic.betamfx <- performance_aic.logitor # Other models -------------------------------------- #' @export performance_aic.bayesx <- function(x, ...) { stats::AIC(x)[["AIC"]] } # methods ------------------------------------------ #' @export AIC.bife <- function(object, ..., k = 2) { -2 * as.numeric(insight::get_loglikelihood(object)) + k * insight::get_df(object, type = "model") } # AICc ------------------------------------------ #' @export performance_aicc.default <- function(x, ...) { n <- suppressWarnings(insight::n_obs(x)) ll <- insight::get_loglikelihood(x) k <- attr(ll, "df") -2 * as.vector(ll) + 2 * k * (n / (n - k - 1)) } #' @export performance_aicc.bife <- function(x, ...) { n <- suppressWarnings(insight::n_obs(x)) ll <- insight::get_loglikelihood(x) nparam <- length(insight::find_parameters(x, effects = "fixed", flatten = TRUE)) k <- n - nparam -2 * as.vector(ll) + 2 * k * (n / (n - k - 1)) } #' @export performance_aicc.Arima <- performance_aicc.bife #' @export performance_aicc.vglm <- function(x, ...) { insight::check_if_installed("VGAM") VGAM::AICc(x) } #' @export performance_aicc.rma <- function(x, ...) { stats::AIC(x, correct = TRUE) } performance/R/r2_xu.R0000644000176200001440000000204514077615732014153 0ustar liggesusers#' @title Xu' R2 (Omega-squared) #' @name r2_xu #' #' @description Calculates Xu' Omega-squared value, a simple R2 equivalent for #' linear mixed models. #' #' @param model A linear (mixed) model. #' #' @return The R2 value. #' #' @details `r2_xu()` is a crude measure for the explained variance from #' linear (mixed) effects models, which is originally denoted as #' \ifelse{html}{\out{Ω2}}{\eqn{\Omega^2}}. #' #' @references #' Xu, R. (2003). Measuring explained variation in linear mixed effects models. #' Statistics in Medicine, 22(22), 3527–3541. \doi{10.1002/sim.1572} #' #' @examples #' model <- lm(Sepal.Length ~ Petal.Length + Species, data = iris) #' r2_xu(model) #' @export r2_xu <- function(model) { mi <- insight::model_info(model) if (!mi$is_linear) { stop("Xu's R2 is only applicable for linear models.") } .r2_xu <- 1 - stats::var(stats::residuals(model, verbose = FALSE)) / stats::var(insight::get_response(model, verbose = FALSE)) names(.r2_xu) <- "Xu's R2" .r2_xu } performance/R/pp_check.R0000644000176200001440000001717314120316137014662 0ustar liggesusers#' @title Posterior predictive checks #' @name check_predictions #' #' @description Posterior predictive checks mean \dQuote{simulating replicated data #' under the fitted model and then comparing these to the observed data} #' \cite{(Gelman and Hill, 2007, p. 158)}. Posterior predictive checks #' can be used to \dQuote{look for systematic discrepancies between real and #' simulated data} \cite{(Gelman et al. 2014, p. 169)}. #' #' \pkg{performance} provides posterior predictive check methods for a variety #' of frequentist models (e.g., `lm`, `merMod`, `glmmTMB`, ...). For Bayesian #' models, the model is passed to \code{\link[bayesplot:pp_check]{bayesplot::pp_check()}}. #' #' @param object A statistical model. #' @param iterations The number of draws to simulate/bootstrap. #' @param check_range Logical, if `TRUE`, includes a plot with the minimum #' value of the original response against the minimum values of the replicated #' responses, and the same for the maximum value. This plot helps judging whether #' the variation in the original data is captured by the model or not #' (\cite{Gelman et al. 2020, pp.163}). The minimum and maximum values of `y` should #' be inside the range of the related minimum and maximum values of `yrep`. #' @param re_formula Formula containing group-level effects (random effects) to #' be considered in the simulated data. If `NULL` (default), condition #' on all random effects. If `NA` or `~0`, condition on no random #' effects. See `simulate()` in **lme4**. #' @param ... Passed down to `simulate()`. #' #' @return A data frame of simulated responses and the original response vector. #' #' @details An example how posterior predictive checks can also be used for model #' comparison is Figure 6 from \cite{Gabry et al. 2019, Figure 6}. #' \cr #' \if{html}{\cr \figure{pp_check.png}{options: width="90\%" alt="Posterior Predictive Check"} \cr} #' The model shown in the right panel (b) can simulate new data that are more #' similar to the observed outcome than the model in the left panel (a). Thus, #' model (b) is likely to be preferred over model (a). #' #' @note Every model object that has a `simulate()`-method should work with #' `check_predictions()`. On R 3.6.0 and higher, if \pkg{bayesplot} #' (or a package that imports \pkg{bayesplot} such as \pkg{rstanarm} or \pkg{brms}) #' is loaded, `pp_check()` is also available as an alias for `check_predictions()`. #' #' @references \itemize{ #' \item Gabry, J., Simpson, D., Vehtari, A., Betancourt, M., & Gelman, A. (2019). Visualization in Bayesian workflow. Journal of the Royal Statistical Society: Series A (Statistics in Society), 182(2), 389–402. https://doi.org/10.1111/rssa.12378 #' \item Gelman, A., & Hill, J. (2007). Data analysis using regression and multilevel/hierarchical models. Cambridge; New York: Cambridge University Press. #' \item Gelman, A., Carlin, J. B., Stern, H. S., Dunson, D. B., Vehtari, A., & Rubin, D. B. (2014). Bayesian data analysis. (Third edition). CRC Press. #' \item Gelman, A., Hill, J., & Vehtari, A. (2020). Regression and Other Stories. Cambridge University Press. #' } #' #' @examples #' library(performance) #' model <- lm(mpg ~ disp, data = mtcars) #' if (require("see")) { #' check_predictions(model) #' } #' @export check_predictions <- function(object, iterations = 50, check_range = FALSE, re_formula = NULL, ...) { if (isTRUE(insight::model_info(object, verbose = FALSE)$is_bayesian)) { UseMethod("pp_check") } else { pp_check.lm(object, iterations = iterations, check_range = check_range, re_formula = re_formula, ...) } } pp_check.lm <- function(object, iterations = 50, check_range = FALSE, re_formula = NULL, ...) { out <- tryCatch( { stats::simulate(object, nsim = iterations, re.form = re_formula, ...) }, error = function(e) { NULL } ) if (is.null(out)) { stop(insight::format_message(sprintf("Could not simulate responses. Maybe there is no 'simulate()' for objects of class '%s'?", class(object)[1])), call. = FALSE) } # get response data, and response term, to check for transformations response <- insight::get_response(object) resp_string <- insight::find_terms(object)$response pattern <- "^(scale|exp|expm1|log|log1p|log10|log2|sqrt)" # check for transformed response, and backtransform simulations if (!is.null(resp_string) && grepl(paste0(pattern, "\\("), resp_string)) { out <- .backtransform_sims(out, resp_string) } out$y <- response attr(out, "check_range") <- check_range class(out) <- c("performance_pp_check", "see_performance_pp_check", class(out)) out } #' @rawNamespace if (getRversion() >= "3.6.0") { #' S3method(bayesplot::pp_check, lm) #' S3method(bayesplot::pp_check, glm) #' S3method(bayesplot::pp_check, glmmTMB) #' S3method(bayesplot::pp_check, glm.nb) #' S3method(bayesplot::pp_check, merMod) #' S3method(bayesplot::pp_check, MixMod) #' S3method(bayesplot::pp_check, mle2) #' S3method(bayesplot::pp_check, negbin) #' S3method(bayesplot::pp_check, polr) #' S3method(bayesplot::pp_check, rma) #' S3method(bayesplot::pp_check, vlm) #' S3method(bayesplot::pp_check, wbm) #' } pp_check.glm <- pp_check.glmmTMB <- pp_check.glm.nb <- pp_check.lme <- pp_check.merMod <- pp_check.MixMod <- pp_check.mle2 <- pp_check.negbin <- pp_check.polr <- pp_check.rma <- pp_check.vlm <- pp_check.wbm <- pp_check.lm #' @rdname check_predictions #' @export posterior_predictive_check <- check_predictions #' @rdname check_predictions #' @export check_posterior_predictions <- check_predictions # methods ----------------------- #' @export print.performance_pp_check <- function(x, verbose = TRUE, ...) { original <- x$y replicated <- x[which(names(x) != "y")] if (min(replicated) > min(original)) { if (verbose) { insight::print_color( insight::format_message("Warning: Minimum value of original data is not included in the replicated data.", "Model may not capture the variation of the data."), "red" ) } } if (max(replicated) < max(original)) { if (verbose) { insight::print_color( insight::format_message("Warning: Maximum value of original data is not included in the replicated data.", "Model may not capture the variation of the data."), "red" ) } } if (requireNamespace("see", quietly = TRUE)) { NextMethod() } invisible(x) } #' @export plot.performance_pp_check <- function(x, ...) { insight::check_if_installed("see", "to plot posterior predictive checks") NextMethod() } .backtransform_sims <- function(sims, resp_string) { if (grepl("log(log(", resp_string, fixed = TRUE)) { sims[] <- lapply(sims, function(i) exp(exp(i))) } else if (grepl("log(", resp_string, fixed = TRUE)) { sims[] <- lapply(sims, function(i) exp(i)) } else if (grepl("log1p(", resp_string, fixed = TRUE)) { sims[] <- lapply(sims, function(i) expm1(i)) } else if (grepl("log10(", resp_string, fixed = TRUE)) { sims[] <- lapply(sims, function(i) 10^i) } else if (grepl("log2(", resp_string, fixed = TRUE)) { sims[] <- lapply(sims, function(i) 2^i) } else if (grepl("sqrt(", resp_string, fixed = TRUE)) { sims[] <- lapply(sims, function(i) i^2) } else if (grepl("exp(", resp_string, fixed = TRUE)) { sims[] <- lapply(sims, function(i) log(i)) } else if (grepl("expm1(", resp_string, fixed = TRUE)) { sims[] <- lapply(sims, function(i) log1p(i)) } sims } performance/R/format.R0000644000176200001440000000150414120347647014377 0ustar liggesusers#' @export format.compare_performance <- function(x, digits = 2, ...) { # if we have ranking, add score and remove incomplete indices in print if ("Performance_Score" %in% colnames(x)) { x$Performance_Score <- insight::format_value(x$Performance_Score, as_percent = TRUE) x <- x[!sapply(x, anyNA)] } # format weighted ICs weighted_ics <- grepl("_wt$", colnames(x)) if (any(weighted_ics)) { x[weighted_ics] <- lapply(x[weighted_ics], insight::format_bf, name = NULL) } if ("BF" %in% colnames(x)) { x$BF[is.na(x$BF)] <- 1 # x$BF <- insight::format_bf(x$BF) } insight::format_table(x, digits = digits, ...) } #' @export format.performance_model <- function(x, digits = 2, ...) { # format p-values for meta-analysis insight::format_table(x, digits = digits, ...) } performance/NEWS.md0000644000176200001440000005101214125272314013651 0ustar liggesusers# performance 0.8.0 ## Breaking Changes * The `ci`-level in `r2()` for Bayesian models now defaults to `0.95`, to be in line with the latest changes in the *bayestestR* package. * S3-method dispatch for `pp_check()` was revised, to avoid problems with the _bayesplot_ package, where the generic is located. ## General * Minor revisions to wording for messages from some of the check-functions. * `posterior_predictive_check()` and `check_predictions()` were added as aliases for `pp_check()`. ## New functions * `check_multimodal()` and `check_heterogeneity_bias()`. These functions will be removed from the _parameters_ packages in the future. ## Changes to functions * `r2()` for linear models can now compute confidence intervals, via the `ci` argument. ## Bug fixes * Fixed issues in `check_model()` for Bayesian models. * Fixed issue in `pp_check()` for models with transformed response variables, so now predictions and observed response values are on the same (transformed) scale. # performance 0.7.3 ## Changes to functions * `check_outliers()` has new `ci` (or `hdi`, `eti`) method to filter based on Confidence/Credible intervals. * `compare_performance()` now also accepts a list of model objects. * `performance_roc()` now also works for binomial models from other classes than *glm*. * Several functions, like `icc()` or `r2_nakagawa()`, now have an `as.data.frame()` method. * `check_collinearity()` now correctly handles objects from forthcoming *afex* update. # performance 0.7.2 ## New functions * `performance_mae()` to calculate the mean absolute error. ## Bug fixes * Fixed issue with `"data length differs from size of matrix"` warnings in examples in forthcoming R 4.2. * Fixed issue in `check_normality()` for models with sample size larger than 5.000 observations. * Fixed issue in `check_model()` for *glmmTMB* models. * Fixed issue in `check_collinearity()` for *glmmTMB* models with zero-inflation, where the zero-inflated model was an intercept-only model. # performance 0.7.1 ## New supported models * Add support for `model_fit` (*tidymodels*). * `model_performance` supports *kmeans* models. ## General * Give more informative warning when `r2_bayes()` for *BFBayesFactor* objects can't be calculated. * Several `check_*()` functions now return informative messages for invalid model types as input. * `r2()` supports `mhurdle` (*mhurdle*) models. * Added `print()` methods for more classes of `r2()`. * The `performance_roc()` and `performance_accuracy()` functions unfortunately had spelling mistakes in the output columns: *Sensitivity* was called *Sensivity* and *Specificity* was called *Specifity*. We think these are understandable mistakes :-) ## Changes to functions ### `check_model()` * `check_model()` gains more arguments, to customize plot appearance. * Added option to detrend QQ/PP plots in `check_model()`. ### `model_performance()` * The `metrics` argument from `model_performance()` and `compare_performance()` gains a `"AICc"` option, to also compute the 2nd order AIC. * `"R2_adj"` is now an explicit option in the `metrics` argument from `model_performance()` and `compare_performance()`. ### Other functions * The default-method for `r2()` now tries to compute an r-squared for all models that have no specific `r2()`-method yet, by using following formula: `1-sum((y-y_hat)^2)/sum((y-y_bar)^2))` * The column name `Parameter` in `check_collinearity()` is now more appropriately named `Term`. ## Bug fixes * `test_likelihoodratio()` now correctly sorts models with identical fixed effects part, but different other model parts (like zero-inflation). * Fixed incorrect computation of models from inverse-Gaussian families, or Gaussian families fitted with `glm()`. * Fixed issue in `performance_roc()` for models where outcome was not 0/1 coded. * Fixed issue in `performance_accuracy()` for logistic regression models when `method = "boot"`. * `cronbachs_alpha()` did not work for `matrix`-objects, as stated in the docs. It now does. # performance 0.7.0 ## General * Roll-back R dependency to R >= 3.4. ## Breaking Changes * `compare_performance()` doesn't return the models' Bayes Factors, now returned by `test_performance()` and `test_bf()`. ## New functions to test or compare models * `test_vuong()`, to compare models using Vuong's (1989) Test. * `test_bf()`, to compare models using Bayes factors. * `test_likelihoodratio()` as an alias for `performance_lrt()`. * `test_wald()`, as a rough approximation for the LRT. * `test_performance()`, to run the most relevant and appropriate tests based on the input. ## Changes to functions ### `performance_lrt()` * `performance_lrt()` get an alias `test_likelihoodratio()`. * Does not return AIC/BIC now (as they are not related to LRT *per se* and can be easily obtained with other functions). * Now contains a column with the difference in degrees of freedom between models. * Fixed column names for consistency. ### `model_performance()` * Added more diagnostics to models of class `ivreg`. ### Other functions * Revised computation of `performance_mse()`, to ensure that it's always based on response residuals. * `performance_aic()` is now more robust. ## Bug fixes * Fixed issue in `icc()` and `variance_decomposition()` for multivariate response models, where not all model parts contained random effects. * Fixed issue in `compare_performance()` with duplicated rows. * `check_collinearity()` no longer breaks for models with rank deficient model matrix, but gives a warning instead. * Fixed issue in `check_homogeneity()` for `method = "auto"`, which wrongly tested the response variable, not the residuals. * Fixed issue in `check_homogeneity()` for edge cases where predictor had non-syntactic names. # performance 0.6.1 ## General * `check_collinearity()` gains a `verbose` argument, to toggle warnings and messages. ## Bug fixes * Fixed examples, now using suggested packages only conditionally. # performance 0.6.0 ## General * `model_performance()` now supports `margins`, `gamlss`, `stanmvreg` and `semLme`. ## New functions * `r2_somers()`, to compute Somers' Dxy rank-correlation as R2-measure for logistic regression models. * `display()`, to print output from package-functions into different formats. `print_md()` is an alias for `display(format = "markdown")`. ## Changes to functions ### `model_performance()` * `model_performance()` is now more robust and doesn't fail if an index could not be computed. Instead, it returns all indices that were possible to calculate. * `model_performance()` gains a default-method that catches all model objects not previously supported. If model object is also not supported by the default-method, a warning is given. * `model_performance()` for metafor-models now includes the degrees of freedom for Cochran's Q. ### Other functions * `performance_mse()` and `performance_rmse()` now always try to return the (R)MSE on the response scale. * `performance_accuracy()` now accepts all types of linear or logistic regression models, even if these are not of class `lm` or `glm`. * `performance_roc()` now accepts all types of logistic regression models, even if these are not of class `glm`. * `r2()` for mixed models and `r2_nakagawa()` gain a `tolerance`-argument, to set the tolerance level for singularity checks when computing random effect variances for the conditional r-squared. ## Bug fixes * Fixed issue in `icc()` introduced in the last update that make `lme`-models fail. * Fixed issue in `performance_roc()` for models with factors as response. # performance 0.5.1 ## Breaking changes * Column names for `model_performance()` and `compare_performance()` were changed to be in line with the _easystats_ naming convention: `LOGLOSS` is now `Log_loss`, `SCORE_LOG` is `Score_log` and `SCORE_SPHERICAL` is now `Score_spherical`. ## New functions * `r2_posterior()` for Bayesian models to obtain posterior distributions of R-squared. ## Changes to functions * `r2_bayes()` works with Bayesian models from `BayesFactor` ( #143 ). * `model_performance()` works with Bayesian models from `BayesFactor` ( #150 ). * `model_performance()` now also includes the residual standard deviation. * Improved formatting for Bayes factors in `compare_performance()`. * `compare_performance()` with `rank = TRUE` doesn't use the `BF` values when `BIC` are present, to prevent "double-dipping" of the BIC values (#144). * The `method` argument in `check_homogeneity()` gains a `"levene"` option, to use Levene's Test for homogeneity. ## Bug fixes * Fix bug in `compare_performance()` when `...` arguments were function calls to regression objects, instead of direct function calls. # performance 0.5.0 ## General * `r2()` and `icc()` support `semLME` models (package *smicd*). * `check_heteroscedasticity()` should now also work with zero-inflated mixed models from *glmmTMB* and *GLMMadpative*. * `check_outliers()` now returns a logical vector. Original numerical vector is still accessible via `as.numeric()`. ## New functions * `pp_check()` to compute posterior predictive checks for frequentist models. ## Bug fixes * Fixed issue with incorrect labeling of groups from `icc()` when `by_group = TRUE`. * Fixed issue in `check_heteroscedasticity()` for mixed models where sigma could not be calculated in a straightforward way. * Fixed issues in `check_zeroinflation()` for `MASS::glm.nb()`. * Fixed CRAN check issues. # performance 0.4.8 ## General * Removed suggested packages that have been removed from CRAN. ## Changes to functions * `icc()` now also computes a "classical" ICC for `brmsfit` models. The former way of calculating an "ICC" for `brmsfit` models is now available as new function called `variance_decomposition()`. ## Bug fixes * Fix issue with new version of *bigutilsr* for `check_outliers()`. * Fix issue with model order in `performance_lrt()`. # performance 0.4.7 ## General * Support for models from package *mfx*. ## Changes to functions * `model_performance.rma()` now includes results from heterogeneity test for meta-analysis objects. * `check_normality()` now also works for mixed models (with the limitation that studentized residuals are used). * `check_normality()` gets an `effects`-argument for mixed models, to check random effects for normality. ## Bug fixes * Fixed issue in `performance_accuracy()` for binomial models when response variable had non-numeric factor levels. * Fixed issues in `performance_roc()`, which printed 1 - AUC instead of AUC. # performance 0.4.6 ## General * Minor revisions to `model_performance()` to meet changes in *mlogit* package. * Support for `bayesx` models. ## Changes to functions * `icc()` gains a `by_group` argument, to compute ICCs per different group factors in mixed models with multiple levels or cross-classified design. * `r2_nakagawa()` gains a `by_group` argument, to compute explained variance at different levels (following the variance-reduction approach by Hox 2010). * `performance_lrt()` now works on *lavaan* objects. ## Bug fixes * Fix issues in some functions for models with logical dependent variable. * Fix bug in `check_itemscale()`, which caused multiple computations of skewness statistics. * Fix issues in `r2()` for *gam* models. # performance 0.4.5 ## General * `model_performance()` and `r2()` now support *rma*-objects from package *metafor*, *mlm* and *bife* models. ## Changes to functions * `compare_performance()` gets a `bayesfactor` argument, to include or exclude the Bayes factor for model comparisons in the output. * Added `r2.aov()`. ## Bug fixes * Fixed issue in `performance_aic()` for models from package *survey*, which returned three different AIC values. Now only the AIC value is returned. * Fixed issue in `check_collinearity()` for *glmmTMB* models when zero-inflated formula only had one predictor. * Fixed issue in `check_model()` for *lme* models. * Fixed issue in `check_distribution()` for *brmsfit* models. * Fixed issue in `check_heteroscedasticity()` for *aov* objects. * Fixed issues for *lmrob* and *glmrob* objects. # performance 0.4.4 ## General * Removed `logLik.felm()`, because this method is now implemented in the *lfe* package. * Support for `DirichletRegModel` models. ## New functions * `check_itemscale()` to describe various measures of internal consistencies for scales which were built from several items from a PCA, using `parameters::principal_components()`. * `r2_efron()` to compute Efron's pseudo R2. ## Bug fixes * Fixed issue in documentation of `performance_score()`. # performance 0.4.3 ## General * Support for `mixor`, `cpglm` and `cpglmm` models. ## New functions * `performance_aic()` as a small wrapper that returns the AIC. It is a generic function that also works for some models that don't have a AIC method (like Tweedie models). * `performance_lrt()` as a small wrapper around `anova()` to perform a Likelihood-Ratio-Test for model comparison. ## Bug fixes * Fix issues with CRAN checks. ## Changes to functions * `model_performance()` now calculates AIC for Tweedie models. # performance 0.4.2 ## General * Support for `bracl`, `brmultinom`, `fixest`, `glmx`, `glmmadmb`, `mclogit`, `mmclogit`, `vgam` and `vglm` models. * `model_performance()` now supports *plm* models. * `r2()` now supports *complmrob* models. * `compare_performance()` now gets a `plot()`-method (requires package **see**). ## Changes to functions * `compare_performance()` gets a `rank`-argument, to rank models according to their overall model performance. * `compare_performance()` has a nicer `print()`-method now. * Verbosity for `compare_performance()` was slightly adjusted. * `model_performance()`-methods for different objects now also have a `verbose`-argument. ## Minor changes * `check_collinearity()` now no longer returns backticks in row- and column names. ## Bug fixes * Fixed issue in `r2()` for `wbm`-models with cross-level interactions. * `plot()`-methods for `check_heteroscedasticity()` and `check_homogeneity()` now work without requiring to load package *see* before. * Fixed issues with models of class `rlmerMod`. # performance 0.4.0 ## General * `performance()` is an alias for `model_performance()`. ## Deprecated and Defunct * `principal_components()` was removed and re-implemented in the **parameters**-package. Please use `parameters::principal_components()` now. ## Changes to functions * `check_outliers()` now also works on data frames. * Added more methods to `check_outliers()`. * `performance_score()` now also works on `stan_lmer()` and `stan_glmer()` objects. * `check_singularity()` now works with models of class *clmm*. * `r2()` now works with models of class *clmm*, *bigglm* and *biglm*. * `check_overdispersion()` for mixed models now checks that model family is Poisson. ## Bug fixes * Fixed bug in `compare_performance()` that toggled a warning although models were fit from same data. * Fixed bug in `check_model()` for *glmmTMB* models that occurred when checking for outliers. # performance 0.3.0 ## General * Many `check_*()`-methods now get a `plot()`-method. Package **see** is required for plotting. * `model_performance()` gets a preliminary `print()`-method. ## Breaking changes * The attribute for the standard error of the Bayesian R2 (`r2_bayes()`) was renamed from `std.error` to `SE` to be in line with the naming convention of other easystats-packages. * `compare_performance()` now shows the Bayes factor when all compared models are fit from the same data. Previous behaviour was that the BF was shown when models were of same class. ## Changes to functions * `model_performance()` now also works for *lavaan*-objects. * `check_outliers()` gets a `method`-argument to choose the method for detecting outliers. Furthermore, two new methods (Mahalanobis Distance and Invariant Coordinate Selection) were implemented. * `check_model()` now performs more checks for GLM(M)s and other model objects. * `check_model()` gets a `check`-argument to plot selected checks only. * `r2_nakagawa()` now returns r-squared for models with singular fit, where no random effect variances could be computed. The r-squared then does not take random effect variances into account. This behaviour was changed to be in line with `MuMIn::r.squaredGLMM()`, which returned a value for models with singular fit. * `check_distribution()` now detects negative binomial and zero-inflated distributions. Furthermore, attempt to improve accuracy. * `check_distribution()` now also accepts a numeric vector as input. * `compare_performance()` warns if models were not fit from same data. ## New check-functions * `check_homogeneity()` to check models for homogeneity of variances. ## Bug fixes * Fixed issues with `compare_performance()` and row-ordering. * Fixed issue in `check_collinearity()` for zero-inflated models, where the zero-inflation component had not enough model terms to calculate multicollinearity. * Fixed issue in some `check_*()` and `performance_*()` functions for models with binary outcome, when outcome variable was a factor. # performance 0.2.0 ## General * `r2()` now works for more regression models. * `r2_bayes()` now works for multivariate response models. * `model_performance()` now works for more regression models, and also includes the log-loss, proper scoring rules and percentage of correct predictions as new metric for models with binary outcome. ## New performance-functions * `performance_accuracy()`, which calculates the predictive accuracy of linear or logistic regression models. * `performance_logloss()` to compute the log-loss of models with binary outcome. The log-loss is a proper scoring function comparable to the `rmse()`. * `performance_score()` to compute the logarithmic, quadratic and spherical proper scoring rules. * `performance_pcp()` to calculate the percentage of correct predictions for models with binary outcome. * `performance_roc()`, to calculate ROC-curves. * `performance_aicc()`, to calculate the second-order AIC (AICc). ## New check-functions * `check_collinearity()` to calculate the variance inflation factor and check model predictors for multicollinearity. * `check_outliers()` to check models for influential observations. * `check_heteroscedasticity()` to check models for (non-)constant error variance. * `check_normality()` to check models for (non-)normality of residuals. * `check_autocorrelation()` to check models for auto-correlated residuals. * `check_distribution()` to classify the distribution of a model-family using machine learning. ## New indices-functions * `r2_mckelvey()` to compute McKelvey and Zavoinas R2 value. * `r2_zeroinflated()` to compute R2 for zero-inflated (non-mixed) models. * `r2_xu()` as a crude R2 measure for linear (mixed) models. ## Breaking changes * `model_performance.stanreg()` and `model_performance.brmsfit()` now only return one R2-value and its standard error, instead of different (robust) R2 measures and credible intervals. * `error_rate()` is now integrated in the `performance_pcp()`-function. ## Changes to functions * `model_performance.stanreg()` and `model_performance.brmsfit()` now also return the _WAIC_ (widely applicable information criterion). * `r2_nakagawa()` now calculates the full R2 for mixed models with zero-inflation. * `icc()` now returns `NULL` and no longer stops when no mixed model is provided. * `compare_performance()` now shows the Bayes factor when all compared models are of same class. * Some functions get a `verbose`-argument to show or suppress warnings. ## Bug fixes * Renamed `r2_coxnell()` to `r2_coxsnell()`. * Fix issues in `r2_bayes()` and `model_performance()` for ordinal models resp. models with cumulative link (#48). * `compare_performance()` did not sort the `name`-column properly, if the columns `class` and `name` were not in the same alphabetical order (#51). performance/MD50000644000176200001440000002655114125552432013077 0ustar liggesusers51f3283aad7a050945b82b4482ad2928 *DESCRIPTION 87cde7bb6f973df88ff510181165fa66 *NAMESPACE 70d3d1f865e13922b70234f19228bae5 *NEWS.md bf51304a14b6f7997659a2fff1f1573d *R/backports.R fc96ed3a50cebfc4b20d6b3d7483407a *R/binned_residuals.R d10209646afdc5603878401f05370794 *R/check_autocorrelation.R 41d7e2fe4f3f40b3ea5c9e40638bfb97 *R/check_collinearity.R 2bd1a76a1b2213f920b917e49cad668c *R/check_convergence.R 4a164a21ffabf428905bd90a927e3b4b *R/check_distribution.R 0ce5262629dfd2be41e8c9f0402e6299 *R/check_heterogeneity_bias.R 90ae4df18d53fb89c28694673726a168 *R/check_heteroscedasticity.R 773cd428d5b84b2640b4996938ca447e *R/check_homogeneity.R 036557f00279e46a36f295f1b0d3c108 *R/check_itemscale.R 6488f9465030662ada151e960dc5b92c *R/check_model.R 3404718c1c70c4a8cbe3e1b6a0b54684 *R/check_model_diagnostics.R 64eee128b356cd82f5a8e8c50c41fd59 *R/check_multimodal.R 0440bb4bd60958602228c4d3019ab8f5 *R/check_normality.R 6872f50c080208c47ea5703c8ca110ae *R/check_outliers.R 609e2e3d8a318a777d060f16f4fee99b *R/check_overdispersion.R 0f78bebcc8253f84c1e33d92d1c62c77 *R/check_singularity.R 796499bf41bfcfae82ea89fb20fb51c8 *R/check_sphericity.R 153d4d7d7f3072734029c4b82f4e523d *R/check_zeroinflation.R 8ab58e7be047e8518d3847013e41f310 *R/compare_performance.R 9ed4ff66b8deb172edaa67e5d8c43752 *R/cronbachs_alpha.R 0ae9338b1af7a216043c6036f851b18d *R/display.R eeab4d74ecc4f1cf22c35809a6cec3d4 *R/format.R 20fafec872a9a7af0572f78839075de8 *R/get_gradients.R 46be3a1ea5e0ecbd2f00a15c67d8fff7 *R/helpers.R 43c58680663927802a7f3389378fad76 *R/icc.R 28af002b97464ff13c52c7aed0e8f227 *R/item_difficulty.R 242eb98c7c3ef75f582f91c3f0f64590 *R/item_intercor.R c84fc4b9fff05d6513b4999b5c56da0c *R/item_reliability.R 213d8b393bd981fd32ce56a8e6b95d85 *R/item_split_half.R ebf9968a6c5a54e75970153498473c42 *R/logLik.R b038794c0d225e5f8e6958ddc2d37851 *R/looic.R 12b199d81474d62bd17eb88a3e7ab375 *R/model_performance.R 63b3cbd4ebe996a12d436ec8712470e0 *R/model_performance.bayesian.R 58c7fa728214790aa447c8a3917e5d69 *R/model_performance.bife.R 03a52499e0012dd79f43ff7953f403f6 *R/model_performance.ivreg.R 1922890befe78df61f71edeafd6d0fb1 *R/model_performance.kmeans.R 9759bfc7c710e3a7e90e174ae7744b0d *R/model_performance.lavaan.R 121ad559321175a71e2b213b6ac6c4f2 *R/model_performance.lm.R be141cf31f94a985eb2994c5f7acf208 *R/model_performance.mixed.R fd6524cf13b577f27648dc0c2ca4fd2b *R/model_performance.rma.R e6592a377611128ab6787207d4c09cb6 *R/model_performance_default.R 4835e55f295c5257cf3ddca0f0080466 *R/performance_accuracy.R cb1ecb28ed70a947c1ae995f14133a0c *R/performance_aicc.R 00740d9c93393551f43e9c057c8d0129 *R/performance_hosmer.R 2746846ea7f2d23eb4b8c89eaedf3577 *R/performance_logloss.R d79c9d63080b7a392727577edb3a1626 *R/performance_mae.R ebfcc1bf24df69061948052959bc7399 *R/performance_mse.R d90fdbef5336d55e75b6614eb050bfa3 *R/performance_pcp.R b31080224b7eefb5e8d291f463c96919 *R/performance_rmse.R 4dcdb249a3540f791e48279038fe8b2e *R/performance_roc.R 2c7e55fbc18fbf1278e54f24321689a9 *R/performance_rse.R 7a7d010b3c5e032070a0b47dff50ffe3 *R/performance_score.R c525fd2a5d81d37cefceb852fd93d73c *R/plot-methods.R 7f337e7c7bac92113593b86d3fc6c116 *R/pp_check.R 72f7d8a63f138293f4487b912c773072 *R/print-methods.R 23da76d0f90ea6e36fe3389aa2c70b4e *R/print_md.R 2d271521396a28e4f4a21884072cd2b8 *R/r2.R a6bad861c0952af9add2b1340f1353c9 *R/r2_bayes.R fa8f2c0a36a1c3cb7dfb9c317f23188c *R/r2_ci.R a9fcab57924a447af5566a7e36aa20b6 *R/r2_coxsnell.R 0761980ef1a589f3e0959140148a1e60 *R/r2_efron.R a09eb8a21a9721020774515f9921269e *R/r2_kl.R d3f73a1c0c376588f81a2a85d95762ef *R/r2_loo.R df0045dc002b58d16e64d7309344433f *R/r2_mcfadden.R c0478ea4878921860cbd6781b91923bf *R/r2_mckelvey.R 8f1a6c4d75484bfd3deb1d8f00f2fda3 *R/r2_nagelkerke.R 1bb2f1c894de222220895492f317d42e *R/r2_nakagawa.R 550a290fd8e00141d8f8a7cb2d14a2b0 *R/r2_somers.R e5afe3c1f5efd582abf147e952fe98ea *R/r2_tjur.R 95aeafcb9f87cfb192c02dd1851482bf *R/r2_xu.R b2c83cfc5ff083177bb3aafd42158437 *R/r2_zeroinflated.R e97aebe915907fcef649e4fefa04f44f *R/residuals.R 1101cb3feb58384028a2734fec7ca7e0 *R/skewness_kurtosis.R 835cd45a08dc0b6009451f00874bf096 *R/sysdata.rda c3d62cc9c0d540b6c75cf593c4d864d2 *R/test_bf.R ef64b695f5eb9351dae49986ab8564a0 *R/test_likelihoodratio.R 1474af6d113a893b76d5df3394936dc5 *R/test_performance.R a824f65e17319dfc38a1c638757228eb *R/test_vuong.R e74931ed3897ff833e6423be01c6266e *R/test_wald.R 663f934f496784ce9796ac79d20136d9 *README.md cb2df46b6b4d91725f0e1be1257b8c58 *build/partial.rdb b3f9f88d249c4b33a27a9567252871b1 *inst/CITATION 7e6e0e4a979cc1bf6aaafb08a9b9f555 *inst/WORDLIST f1a951851f9c6b93ff13dae3e80a345a *man/binned_residuals.Rd 12ffb075d6c5dbcde39ac65871fb0cb0 *man/check_autocorrelation.Rd 2ddcc1f243cf3c1a8cb62b49ed538792 *man/check_collinearity.Rd 44ef3b8d497acabea07dab5a8c8252fe *man/check_convergence.Rd aee145cdfc6c951988288e75c8370461 *man/check_distribution.Rd 13aee95bbfcf409c4591b4b781686465 *man/check_heterogeneity_bias.Rd 676ebb9e16b6c714e5fdd60413880bfb *man/check_heteroscedasticity.Rd cca14fb84ec031dcd70a3abece2e18a8 *man/check_homogeneity.Rd 2b353a393f5b2d5e03dae6a865246bc6 *man/check_itemscale.Rd 39e4601217a206acb34797d15f6d64c8 *man/check_model.Rd e491af18049809985b8f924c9a165151 *man/check_multimodal.Rd 5b96920d908064c8172f7c877db851d7 *man/check_normality.Rd 670c80b56945a5b14351f06c648f5b6f *man/check_outliers.Rd 7fe9aa14be81b9d599e60aa45688efa1 *man/check_overdispersion.Rd 93b301c0ac7f9bfc2c15c02912cce3c3 *man/check_predictions.Rd 04a511fe01fba985613e1dcfcd4d03e3 *man/check_singularity.Rd 5904f1634c95d7879599f0e217a96992 *man/check_sphericity.Rd 4a6ab246ec876480bf1359c023f09800 *man/check_zeroinflation.Rd cf19805edf49f2d50c339bfebd083db9 *man/classify_distribution.Rd 1dfc66c8e4fbb17288da5887e923f1ef *man/compare_performance.Rd b6fae066f4096c82ec063b7443180428 *man/cronbachs_alpha.Rd 460fc3070d9d82ea3466328717a46e01 *man/display.performance_model.Rd 3c5fef75dbf3fc529506455b847cfd56 *man/figures/figure_workflow.png 1c7a7648e019e82f9c2e2558193a5dd2 *man/figures/logo.png 899848437d58da611299750568a41d8b *man/figures/pp_check.png 831e818b3def197b92046c4581138239 *man/figures/unnamed-chunk-14-1.png 33eed1a6f21d8f5b18dc641794252afc *man/figures/unnamed-chunk-15-1.png e4a9564c2466f49bde996f8aa097baac *man/figures/unnamed-chunk-20-1.png 0da25d332ce85011d1964f50874e8e49 *man/figures/unnamed-chunk-21-1.png 158deb703bc9f5c7aa94a38544f4731d *man/icc.Rd 630a5e2703a29b61dcfea0725581f395 *man/item_difficulty.Rd bf57ceec0527c1afb863f7096e403e7b *man/item_intercor.Rd 3b2c02fa016b7d27d2628fd21fc8725c *man/item_reliability.Rd 50f7d3a5d53b4615f2f1ba0187d25f53 *man/item_split_half.Rd 57f5cad94376cf2b864c65f8e2a12c1f *man/looic.Rd 5df3d2c6d383ab942dde0445a2810b62 *man/model_performance.Rd d440aadf1b7cfb429d3b8051028d74f5 *man/model_performance.ivreg.Rd 22a996e9543ade69ed83021baf4fc64f *man/model_performance.kmeans.Rd 87725315247f1af8132af0ed777f9101 *man/model_performance.lavaan.Rd 14b5a6fe409943f0ae68b54ccd4943cb *man/model_performance.lm.Rd a143a3d860c55e74dc2e538b09672496 *man/model_performance.merMod.Rd c1df4da22bba03726454d4a0e323308c *man/model_performance.rma.Rd babf3850a62938dd89323ab849f8b53d *man/model_performance.stanreg.Rd e574743f6ff8f9a418c8163d95247050 *man/performance_accuracy.Rd b1cdec468b13d77daa08dae19d86a1cc *man/performance_aicc.Rd 697b2dd3fa2899a8a074083711b3be47 *man/performance_hosmer.Rd a91605244473f007746491c500238aad *man/performance_logloss.Rd 9e6a786b50de3722168f1245614bbd4d *man/performance_mae.Rd 23cc8cbabbed3279282ff07dd2a74b9f *man/performance_mse.Rd c690a9fda9e1ea4d4a4bac90d8438cfa *man/performance_pcp.Rd 5d78ae2c09ddbe285065b952ee0ad35d *man/performance_rmse.Rd fa00903da080110fe8f41a3cbb5949e7 *man/performance_roc.Rd c286a0eb42a42e8f6120fa9f2069f67a *man/performance_rse.Rd 0c9a1f57c3f8301b48e64618ebb7e2b8 *man/performance_score.Rd 2ed8cbdea8c10ba66d16d3dc5376b092 *man/r2.Rd 3925e12551f97b6c479cb352084e95cb *man/r2_bayes.Rd 4b5f5da226761d694b85e9597a17a90e *man/r2_coxsnell.Rd 45732368704debee83115714e2128761 *man/r2_efron.Rd 94a566d84512af3dae4cd847dab7409d *man/r2_kullback.Rd 135eb3623ababef60c589490aeaf3d2f *man/r2_loo.Rd 21eb973dc4522ab990c4d8c164128fde *man/r2_mcfadden.Rd b1b18756dcf4ed233a9ab28f1e5e32e0 *man/r2_mckelvey.Rd cf6f2d35cefe50df3b0ca1a18ef0831a *man/r2_nagelkerke.Rd 9f76484363070d1ea6c821d6af0cf939 *man/r2_nakagawa.Rd cf89a9a5cda01921bb6159353a3f4909 *man/r2_somers.Rd b53884e38408caf336c6739482946cfa *man/r2_tjur.Rd d999be4ed1f5c8489dcb6ddfafb3dc73 *man/r2_xu.Rd 88a7bba2b45fda4b343baade1e2c102c *man/r2_zeroinflated.Rd 84e48370485f85b0bf055f74afd279de *man/reexports.Rd 84dcb68d072388f6364bc68fecd17fd7 *man/test_performance.Rd dbd9bab057163c01c320d0b9d3bb9620 *tests/spelling.R e132a2fbd98a5a18e0a42499e3a35b13 *tests/testthat.R c89c8592c1f0c04b91935a5892bc6460 *tests/testthat/helper-requiet.R aa437d32e9001c2ecf5b05666f7e15a5 *tests/testthat/test-backticks.R 5d7ff0df14e82ed26d0aa3444c468e45 *tests/testthat/test-check_collinearity.R 17ac5dfab1ea533773148cd35b8e5612 *tests/testthat/test-check_convergence.R 1b5c0dc8fc9d92557149c7d9ec458732 *tests/testthat/test-check_homogeneity.R 618eee53bd08c2302237192eb4bf7be6 *tests/testthat/test-check_normality.R e3b51fa0008a309623195d2607fc6d5e *tests/testthat/test-check_overdispersion.R 8171b42d19473611a62de446b2d529c8 *tests/testthat/test-check_singularity.R 6ee5dd8efa0569ce8a5fefb37ce6f02b *tests/testthat/test-check_sphericity.R 600a09cd30de7d22dd35fd6bf8a37147 *tests/testthat/test-check_zeroinflation.R 496a3155aa95a9377ba8d3b98918fdfd *tests/testthat/test-compare_performance.R 50f0638814b44447469ee813bd5ffc2c *tests/testthat/test-coxph.R 2646f3e2758b42862bd62337a3f709da *tests/testthat/test-cronbachs_alpha.R e7d55a596c0b34543d1a0b4e3262b10a *tests/testthat/test-icc.R 961a408c184c6f508e4c867fd2ea265b *tests/testthat/test-item_difficulty.R 9cceaa714c3e4782e3fbf80081645a85 *tests/testthat/test-item_intercor.R 84e260f1f3dcf52b842e3e4ead5d5fea *tests/testthat/test-item_reliability.R e93ff89c5fd0d2895c2aee13143b648b *tests/testthat/test-item_splithalf.R 3a9bbbab711d89176a35a74060e0afc4 *tests/testthat/test-model_performance-various.R f3993492e706ca87b59a06bda009e40b *tests/testthat/test-model_performance.bayesian.R 217356b6ec030938e3755e3c5d271c86 *tests/testthat/test-model_performance.gam.R b8e50bcaa5f54ba05bf98c2f5ca4f0a0 *tests/testthat/test-model_performance.kmeans.R 52b618a86a416dc95ec6e5727b8f80cc *tests/testthat/test-model_performance.lm.R cb743f3533f0c993e8f8284f691f79e0 *tests/testthat/test-model_performance.merMod.R 4be2fd0457c006f6d7c347325b2c3315 *tests/testthat/test-model_performance.rma.R 5d4f00f7ae982b28a721f6d01e164875 *tests/testthat/test-performance_roc.R cef9ca3c079e4cc6a23c6c613c6773a4 *tests/testthat/test-r2_bayes.R 8fb53d1ce15f3521dc0bdf16e1054c78 *tests/testthat/test-r2_coxsnell.R f3e3dc7a47a28ce975406bda69ac0c41 *tests/testthat/test-r2_kullback.R 2d7ce46bfe3b87a30959bfa4cfdb4cf8 *tests/testthat/test-r2_mcfadden.R 908a20262569d576f14d2acf86f32a1d *tests/testthat/test-r2_nagelkerke.R bb8b3152875483d85da0a19f480e85dd *tests/testthat/test-r2_nakagawa.R 07857a41132a1d6b9562530e9adf20dd *tests/testthat/test-r2_tjur.R a09c61a376a119470e77cd56d0c48fab *tests/testthat/test-r2_zeroinflated.R 2c746d423983412f8aa45f08e59a2048 *tests/testthat/test-rmse.R c656af1b63f01151cd964078e636ee03 *tests/testthat/test-roc.R ee2dab008dbaa135df408ce990934648 *tests/testthat/test-test_likelihoodratio.R 1d2ea9aa8fcdd401da32af49e4ec6fe3 *tests/testthat/test-test_performance.R 74302bd3d4d0736e9e761fa13f6464be *tests/testthat/test-test_vuong.R c30dd64a06f065dbf4f8a697dafb64ee *tests/testthat/test-test_wald.R performance/inst/0000755000176200001440000000000014075351756013545 5ustar liggesusersperformance/inst/CITATION0000644000176200001440000000122614040075427014671 0ustar liggesusersbibentry( "Article", title = "{performance}: An {R} Package for Assessment, Comparison and Testing of Statistical Models", author = c(person("Daniel", "Lüdecke"), person("Mattan S.", "Ben-Shachar"), person("Indrajeet", "Patil"), person("Philip", "Waggoner"), person("Dominique", "Makowski")), year = 2021, journal = "Journal of Open Source Software", volume = 6, number = 60, pages = 3139, doi = "10.21105/joss.03139", textVersion = "Lüdecke et al., (2021). performance: An R Package for Assessment, Comparison and Testing of Statistical Models. Journal of Open Source Software, 6(60), 3139. https://doi.org/10.21105/joss.03139" )performance/inst/WORDLIST0000644000176200001440000000442114075351756014740 0ustar liggesusersAGFI AICc Adressing Agresti Akademiai Alonso Ameijeiras Analysing Ankerst Archimbaud Asq BFBayesFactor BMJ Baayen BayesFactor Betancourt Biometrics Biometrika Bolker Bollen Bollen's Breunig Breusch Bryk Byrne CFA CFI CRC Carvalho Casal Chisq CochransQ Cronbach's Crujeiras Csaki DBSCAN DOI De Distinguishability Dominicy Dordrecht Dunson Durbin Dxy ELPD EQS Econometrica Efron Efron's Erlbaum Fligner Francoeur GFI GL GLMM GLMMadaptive GLMMadpative GLMMs Gabry Gazen Gelman Gnanadesikan Guilford HJ Hastie Herron Hesketh Hoaglin Hoboken Holger Hosmer Hox Hurvich ICCs ICS IFI Iglewicz Intra Intraclass JM Jackman Kettenring Kiado Killeen Kliegl Kullback LOF LOGLOSS LOOIC Laniado Leibler Lemeshow Levene's Ley Leys Lillo Liu Lomax Maddala Magee Mahwah Matuschek McElreath McKelvey Merkle Michalos Multicollinearity Mundlak NFI NNFI Nagelkerke Nagelkerke's Nakagawa Nakagawa's Nordhausen Normed PHQ PNFI Petrov Postestimation Psychometrika QE REWB RFI RL RMR RMSEA Rabe Raudenbush Rodríguez Rousseeuw Routledge SEM SRMR Scheepers Schielzeth Schielzeth’s Schumacker Sensivity Shachar Shinichi Skrondal Somers Specifity Springer Stata Subscales TLI Technometrics Tibshirani Tily Tjur Tjur's Trochim Tsai Tweedie VIF VPC Vanhove Vasishth Vehtari Visualisation Vuong Vuong's WAIC WMK Windmeijer Witten Xu Zavoina Zavoinas Zhou Zomeren afex al analyse aov arXiv autocorrelated bci behaviour bife bigglm biglm bigutilsr bmj brms brmsfit clmm complmrob conceptionally de detrend discriminations doi easystats endogeneity et eti favour gam geoms ggplot github glm glmmTMB glmrob grey hdi heteroskedasticity homoskedasticity https ics intra intraclass io iqr kmeans lavaan lfe lme lmrob lof mahalanobis mcd meaned metafor mfx mhurdle mis mlm mlogit modelfit modelling models’ multicollinearity multiresponse nd neighbours overfitted pareto plm poisson preprint quartile quartiles repsectively rescaling rma rmarkdown rmse rsif rssa rstanarm se smicd sphericity subscale subscales tidymodels unadjusted underfitted underfitting visualisation xy youtube zscore