From 2ba794297255b899bba1d914099cd67519da64bf Mon Sep 17 00:00:00 2001 From: Nicholas Clark Date: Fri, 29 Sep 2023 20:55:54 +1000 Subject: [PATCH] dynamic in trend_formula bugs --- R/plot_mvgam_fc.R | 22 +++++++---- R/stan_utils.R | 72 ++++++++++++++++++++++++++-------- src/mvgam.dll | Bin 1051136 -> 1051136 bytes tests/testthat/Rplots.pdf | Bin 22862 -> 22864 bytes tests/testthat/test-dynamic.R | 15 +++++++ 5 files changed, 85 insertions(+), 24 deletions(-) diff --git a/R/plot_mvgam_fc.R b/R/plot_mvgam_fc.R index 3b18ac59..a843a6dd 100644 --- a/R/plot_mvgam_fc.R +++ b/R/plot_mvgam_fc.R @@ -106,11 +106,6 @@ plot_mvgam_fc = function(object, series = 1, newdata, data_test, } } - # Use sensible ylimits for beta - if(object$family == 'beta'){ - ylim <- c(0, 1) - } - # Prediction indices for the particular series data_train <- object$obs_data ends <- seq(0, dim(mcmc_chains(object$model_output, 'ypred'))[2], @@ -252,8 +247,17 @@ plot_mvgam_fc = function(object, series = 1, newdata, data_test, dplyr::distinct() %>% dplyr::arrange(time) %>% dplyr::pull(y) - ylim <- c(min(cred, min(ytrain, na.rm = TRUE)), - max(cred, max(ytrain, na.rm = TRUE)) + 2) + + if(tolower(object$family) %in% c('beta', 'lognormal', 'gamma')){ + ylim <- c(min(cred, min(ytrain, na.rm = TRUE)), + max(cred, max(ytrain, na.rm = TRUE))) + ymin <- max(0, ylim[1]) + ymax <- min(1, ylim[2]) + ylim <- c(ymin, ymax) + } else { + ylim <- c(min(cred, min(ytrain, na.rm = TRUE)), + max(cred, max(ytrain, na.rm = TRUE))) + } } if(missing(ylab)){ @@ -530,7 +534,9 @@ plot.mvgam_forecast = function(x, series = 1, max(cred, max(ytrain, na.rm = TRUE)) * 1.1) if(object$family == 'beta'){ - ylim <- c(0, 1) + ymin <- max(0, ylim[1]) + ymax <- min(1, ylim[2]) + ylim <- c(ymin, ymax) } if(object$family %in% c('lognormal', 'Gamma')){ diff --git a/R/stan_utils.R b/R/stan_utils.R index 08d8e8d4..052b9e58 100644 --- a/R/stan_utils.R +++ b/R/stan_utils.R @@ -2588,9 +2588,26 @@ add_trend_predictors = function(trend_formula, trend_smooths_included <- FALSE # Add any multinormal smooth lines - if(any(grepl('multi_normal_prec', trend_model_file))){ + if(any(grepl('multi_normal_prec', trend_model_file)) | + any(grepl('// priors for smoothing parameters', trend_model_file))){ trend_smooths_included <- TRUE + # Replace any noncontiguous indices from trend model so names aren't + # conflicting with any possible indices in the observation model + if(any(grepl('idx', trend_model_file))){ + trend_model_file <- gsub('idx', 'trend_idx', trend_model_file) + idx_data <- trend_mvgam$model_data[grep('idx', names(trend_mvgam$model_data))] + names(idx_data) <- gsub('idx', 'trend_idx', names(idx_data)) + model_data <- append(model_data, idx_data) + + idx_lines <- grep('int trend_idx', trend_model_file) + model_file[min(grep('data {', model_file, fixed = TRUE))] <- + paste0('data {\n', + paste(trend_model_file[idx_lines], + collapse = '\n')) + model_file <- readLines(textConnection(model_file), n = -1) + } + if(any(grepl("int n_sp; // number of smoothing parameters", model_file, fixed = TRUE))){ model_file[grep("int n_sp; // number of smoothing parameters", @@ -2607,10 +2624,28 @@ add_trend_predictors = function(trend_formula, spline_coef_headers <- trend_model_file[grep('multi_normal_prec', trend_model_file) - 1] + if(any(grepl('normal(0, lambda', + trend_model_file, fixed = TRUE))){ + spline_coef_headers <- c(spline_coef_headers, + trend_model_file[grep('normal(0, lambda', + trend_model_file, fixed = TRUE)-1]) + } spline_coef_headers <- gsub('...', '_trend...', spline_coef_headers, fixed = TRUE) + spline_coef_lines <- trend_model_file[grepl('multi_normal_prec', trend_model_file)] + if(any(grepl('normal(0, lambda', + trend_model_file, fixed = TRUE))){ + lambda_normals <- (grep('normal(0, lambda', + trend_model_file, fixed = TRUE)) + for(i in 1:length(lambda_normals)){ + spline_coef_lines <- c(spline_coef_lines, + paste(trend_model_file[lambda_normals[i]], + collapse = '\n')) + } + } + spline_coef_lines <- gsub('_raw', '_raw_trend', spline_coef_lines) spline_coef_lines <- gsub('lambda', 'lambda_trend', spline_coef_lines) spline_coef_lines <- gsub('zero', 'zero_trend', spline_coef_lines) @@ -2681,23 +2716,28 @@ add_trend_predictors = function(trend_formula, } - S_lines <- trend_model_file[grep('mgcv smooth penalty matrix', - trend_model_file, fixed = TRUE)] - S_lines <- gsub('S', 'S_trend', S_lines, fixed = TRUE) - model_file[grep("int n_nonmissing; // number of nonmissing observations", - model_file, fixed = TRUE)] <- - paste0("int n_nonmissing; // number of nonmissing observations\n", - paste(S_lines, collapse = '\n')) + if(any(grepl('mgcv smooth penalty matrix', + trend_model_file, fixed = TRUE))){ + S_lines <- trend_model_file[grep('mgcv smooth penalty matrix', + trend_model_file, fixed = TRUE)] + S_lines <- gsub('S', 'S_trend', S_lines, fixed = TRUE) + model_file[grep("int n_nonmissing; // number of nonmissing observations", + model_file, fixed = TRUE)] <- + paste0("int n_nonmissing; // number of nonmissing observations\n", + paste(S_lines, collapse = '\n')) - S_mats <- trend_mvgam$model_data[paste0('S', 1:length(S_lines))] - names(S_mats) <- gsub('S', 'S_trend', names(S_mats)) - model_data <- append(model_data, S_mats) + S_mats <- trend_mvgam$model_data[paste0('S', 1:length(S_lines))] + names(S_mats) <- gsub('S', 'S_trend', names(S_mats)) + model_data <- append(model_data, S_mats) + } - model_file[grep("int num_basis_trend; // number of trend basis coefficients", - model_file, fixed = TRUE)] <- - paste0("int num_basis_trend; // number of trend basis coefficients\n", - "vector[num_basis_trend] zero_trend; // prior locations for trend basis coefficients") - model_data$zero_trend <- trend_mvgam$model_data$zero + if(!is.null(trend_mvgam$model_data$zero)){ + model_file[grep("int num_basis_trend; // number of trend basis coefficients", + model_file, fixed = TRUE)] <- + paste0("int num_basis_trend; // number of trend basis coefficients\n", + "vector[num_basis_trend] zero_trend; // prior locations for trend basis coefficients") + model_data$zero_trend <- trend_mvgam$model_data$zero + } if(any(grepl("vector[n_sp] rho;", model_file, fixed = TRUE))){ model_file[grep("vector[n_sp] rho;", model_file, fixed = TRUE)] <- diff --git a/src/mvgam.dll b/src/mvgam.dll index 4f52c29b710d963924f6fe840bfd1603bbcda338..b52e44d48f89ae694dc7b6e517c24eb7699d89fe 100644 GIT binary patch delta 75 zcmV-R0JQ&rlt6%#K#+(6RiTlJP67isf!c-I0fpKEh1vs!+60B#1%=uMh1v&&+6aZ( h35D7Uh1v^++6;x-4Tahcwb~CVu>w`0w+6Bg`d92OA(a3C delta 75 zcmV-R0JQ&rlt6%#K#+(6LO79%P6FIzf!c-I0fpKEh1vs!+60B#1%=uMh1v&&+6aZ( h35D7Uh1v^++6;x-4Tahcwb~CVu>wLkw+6Bg`d0>WA)^2Q diff --git a/tests/testthat/Rplots.pdf b/tests/testthat/Rplots.pdf index 9e6dab08bb923ef140ebf3939e6ed315f66388b9..fdc1786ab531a2ae6ad99898057894e247f6d289 100644 GIT binary patch delta 19016 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

}U>) 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 delta 19021 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�W@3{#iyk3y-Y$yCn&q#lE;aAdxMH*Y)L~YZ$ zjLp)UPeA3tdeUlaYO4LLY-R2hUlGXXwTyp{E@_&s+2;l2>BYPoTjUdjY@=5cLk=i= zjZM!gKf8PfYagAW?LJGe3hDhgy8i3wFyQYs(_cF;qsNM1uFUzohtkHT8x1XwQt$n3 zXJ4IH{Wu|W%2<#_uAq0$@eWo4kkt3Z&zrPygrD`S(#x8oL}Sy_^L37O$x2|6KF9ix zOt6)88wFWfM0pClqdD)~ujC^I{lE&|845^K6#%XKNEV81W>PlU-#>f(h^GxhT_G6) zAgv$jBD?KsUVkw*1ylL_Xs7|g2PD}r6%*5;froQyH*;SwD0(%tO!x;~BN?J#)3WFg z`-_9sv#fR5>#@eBbqA<_yH3E3PL8{Gjt{o#mh()HO=@$;0v>LgNVXMi!_z_+M0B^| zsaa*YrKbb5MjL`Yyh*1Dy!+w#2dUC0yie4mO{3~qJqY+f)e;Nfqg2RK30pcl`Rr!J z>!^RM1!L?X;^S+)k9k7#lrPv-yl8g*&L+Xm!AI}IFQ%9w+2czPsOR7o>~s3_nEUFP zDY+Vk^&T-}%!a@B_uUEsuTcEyTH(l)7l8XYt?g5)IVIV zUe5<(IKwe)0OLW`bi4cMHtu*yUHU$F@f)?T zMyBhLfa=d~d_tj~MPY5-sr%_%;RLVI^x5nN;2mt}8|ko$uXTF3Z_`Q9qO`&k6UBYwVo$Ai^`!M+T>GBqU$8Y)m27cpI zq-%T+x(1`ros^qm9mnu;}SGw7;Rkrk%<)he=X~=OU-A zKO!eXP~?O@7dhR`U2n#|z7zkTBoC=|30yR#JouJ0ad6vz|_gv#tYn<|Sqx5IP zmC-3m$2zcW?QED)m37x9$MsAvKd%`HjH^9C+ zv+EQ6Lc74}1pdh>3f7l*Oq$l}Z0)6l_%KMl(K$~~*KaqV(zBcN)xIQ~=f?wXMg=b< zS*~y))AK|P?vSZBfU+lMLO;f}q_P^Dd#!3tG@7-Q`q92atvRpXwDHXn+V4hQikAZQ z#4R$My}wj-BXJUcDttRCjfy!6WnGTZn`U2W>-@3%0T>Xzh4bXiwZjVEGGN1B z0@vc~lh=j$Zas#sI-nP9A0@5}i_*{g_!$b*t0UO&iF`cX`&EK&v*oCNS`P}T%D7YP zKzY-1${vgQSm}B_+*Yf_vp`H~ts%_m28D)|Vmo)n6P$(Dv&^rC_LKC9Cw;3GtDin9 zeM}M;t`fll`ZUU_Ps?q-#{?ZKjb?W0dBwGQ9_Jy6+a!*M`E9q#iU)7)=Yu6r^Tesq2JrkK<^?{VaV?o0C-g@fBB z(gU<3Rkptev_~dvz4xG+Ef%761!Wd(iFK-}Bt03GuNZll%5Omp?kngCiUjv&cm3|h zx^=$jzFhA4+v8|!yGOI?rV(ul1Yu^=F4zsQ1#G+aBl1|iEJSaNudK#HOX*WnASq!U z>YhtqvMpof1^Zw2bLF9wFM3blmWI+TX>iv2J&DyLlErk~^FxBcxHoP)JxKX|@;dzaevv{sm8fXbNENGpQzbNIW;%BzwZ))xBp?eTM~P6@yd{bV;@vH zxj2dYm-nP-cS(XovQrU}#$!u7HuEpfpsq&0wHm2DE61v2N5p{Aq8j8*C%+T1*SduJuVsb8U z?n}tX=@ji=LuOn_E~X&Q!)OOPYapFyjv|wbcR+9AIO69ld^~B`orK&11!j|=2csqQ z30^9jGyr6SReV_n%hcx~IcL#pt>ZPBKWE_ZcpIbdEmH8(%-E;GEp{6<>o;{|VZJu{ ze9ef}YZ?4VX{7+V3+x<#x_=t7B&|@w9}fEak5z zzo671Jm}kzxT;&}Mw1;h6yjx>V?Px-1#!i6rELmvmpI!$#25pWA~dI#`+WiZXe<^b zSw1Ei{mqSLcTk;!%0@7Z4Nw3j93lBo0OkotaKX!cVe#Z>vn?^BOFUk|Bo zfThf1qvqO&%Nj%0k{*_jEpe~qw~~U~NJE(9PjT85W$)Tf&l{nPxd6^a!C*taRhCt#9>xn%h+C1YN&1 zb(CKJwSL0rP!LBeek30M`=cAp>GsJAPu5L_vPp4my-?@UbixoEe9A)@*Qdk)gr8b$ zNia`&Y$grMhI!rJ;yN{e=s}!WKK3OB#sBJ)=>FiAQg+-dK1Bb)t&Tf(C!0HMXCCp0 z-Ez8CaJOtWxqO4^pwG*(3?n|I7w9%6Avqv!^Cl^BVolOP?DAGmb8z8k*HB>L(qN@{ z#l&LKI4ZXKsVkagFf*tr#x+U;h>h%Pda1PVJXVKZoV&tpYCW|YLM@~{v0+{7xL)(7 zc2ZYAM6yX-!Aq2eV{geWRAQfOOM+`~VN@~HwtvdQYu$ABZg1E_ujRxdzWf}n;<945 z6pQ@H+uBptLF67)6$`=JQ>e3EzJ}W088V)Vn@Sg;UYyEw6sayBd@Z{V^r5Lc_xc2+ zy;!#xiuh_Vwy_hATU;lx*L&Z(y4gRd=4a0x@zOyk+3S07E;uij29Ci`-{IyqQScrME68@^!6+Nm8NTRML%MCozTC(0SeQY# zY%wXPKfQlDNmI7z)=jr??MLj-_YOsDX^WnsR#Wkip7gA#is=_h#q68OdC7*8h8@0i zDDgbW1eCau(RhXuerbQr0&d)^ z??O{xa+k%P#<(T=(dYr^JSMiCqM4u8V$dEn*s?%f@?sYb$LQiJ4t@Lh}s1Ec+k$BIs$iin|eqQ(M}&;#W@ag2GFd zwmks5ZBPG9P--Lf@7@M#qr+HU?!$h|9`N5aelsWY*UK*_yld7x8=3FHmVWutUR2ci zPMTQHxxWoz z<;Q~Q+EZn8E3971xCoxYK2^89PbZ2$klCZ+TdJ# zPS5{>egEb~&3qL{CHgL?fzl~`AE}3&#x(hlcQ~(qTh(%>=9ziS85_;M6aLk z3^?Rqvy&{&vdgWBa&=P|)aj$ng;0wZ>7G+EF$2-Bdmq8cW929#CFY_vXDFh{2Ni#n zPki{odNXQ= zuBa5!Y&CyGQ$f_-FcpaK4A@mbM?}f-PZ5Y}0m{u+G z3RZCCiBWYx;g&+r7Z);^9xV2TWc+(X`hCOBMQ&ztJU9eApUH=1-Lq{r==o9PPCEIO zjnvEERSd&E#2RfSvK^OH|ARq4_Qpin1XtzW>jfkdIADa)Lre4Rmw`V+c~P2xhb!?K zrk}$#(&L3hORX}sgVUb3J)D&0*c-bVBwBAn!)+dFivGUATCtFh5CcTJTPSaE*m$7~ zSyL0#!Qpz*c%xyz4IWwK-q~b2%7?fxl|zmR=lQBwO~5Z7!F)4{ms=cco|I&(iUV_26%1!?r z$B49pqq-`+SSESa3asXngaSyBPgdPr$K|f$<}B4;_GqeT)>2cNTJyDQt&DsL##goew?A>GLGi#499ObwwICqi7>jX>RPXc zmRqs4o83peDGYtPuN*cH-cg3V=qa684Z|0P>mz$!04$~hcni@_+34k`8^U&1-bv3$ z{|nWv+uz)L?Kr?B2L zI|Tm@^lDWu2lmEP8K^N#}UtXGS-`8-;S z^G5oPfdvuqK8?TFv`QeQK;?Rry&tZqY^$-KuRgz-OEk-=SQz>0<4PY4zr!=6@U}GA z$AiaDWENdoZKB-?zp4Y{fhOPHgk)r5l^i?nEd`aa-2eP9qnx<%O{s!7nU{>xi5{!^ zB?d22U>};)xyKU6;ibH53b6+nB5I@myQHag4oe6A=DM#9W?RI!HF?@t%iy#KZ8ikEzcy{!F&U0A}a<^@!)UFW)$(4+-tGJXAo<;un`XYBOzY>5#%eFiB9!fy3o(0NFgF;@S;}tZXpB+rxX6A3MoYDy@n1*9 ze@Yx-xgpN(CEu=hKf!iX2u*$xW5%O!SR525dH8Ah*(iq%NIflAq@r)GhE2V`)dytM_Ui4X(ykhLkLYX*vzynFm#1zumsbozvs2%=?}T2T zgj6BwG&Is-8Hh66#>rYX4LH2<;o9$IM!EMiKPR<2)vfH|5yso8Y|~z@yrP?9q1|b3 z;RN1I??{Be-@J7Fu-;&)Ik!>2QP+J=nBc%#q+R`L>Z&OKV+e*fj#?}4(}v&j4Fl?`D6^bT zlmYhgQgBuw$?jXM6$e)!H9=pdu*R{1$N!WXMUR3<%?lDXPB}O|DF+f-T|w3Qm;IB^ zX~&)A@j(=It)V;$YmRx#tb|)1DiC!|UN6wH5EvGH^bOu^Q7am2I7h9+K(0VGWopA% z#HhNNo>w2GDluix2uA56V?U=&bSX%(@4k;gdG+mDN4j@9dhve)jBZC>m3kOh{FV#M zP&X`khfkyN-rG__fb4X&^@I`BFja#ZrazTwO;fvLu0Ya&o?BOP3!Imq>j_0^M2TSv zo+9FUvZPW5gDpwe1n$Q%E!8hTg8u-DH(~N`yUyv-%d5%Yj1)y)jY9u_d}-)P?Jz57 zQ%R)V45LwCm>DuA^{CCk*t!B+PkhTW&$X(sJQypvT2(jCg5+FsUPrL|^k03zhFMVs zL^^KP%%oG@X6#$*WCFjc!IAP<7`r651v>zdP=RDyNLcaSs=6ja15X1>i_QNcrM0WS zgsc#F<;O8#&(2Tcg@s24E*sl#_6tdpke}@^Z~^A%DVuj-txRPZ~l`3r7QtlKII_VJ($?_16fi5gOvktcFNqdX9%} z6(MiXV1^z4(?Ob5a*qygQ8;WBXU^*Wz|drurI))BC=fv>AW2y7V1I-2bOfx6iQ1v? zQkyt;8xv3E;s1uql=PTVA1BB2RCR0tjQfHR})V?Jfn2Ar@ zRT#v+#tDKdU7PCwIMQ&1mxD5y^D1#Z?pe}#RrFeLO8BgU)ji-l-1@-Q{XlX`){2Sq z;*bZk)ZEb*R!s@@y~v>QxB6O?;~{0C$O*7UDDlF3J)O8>M0(w|*ID2VGQW0%-8D2z zc16^lq}6wM!FD{Bl~5a;JN!C{tnRya&9_No-q1$_BTOle{;C#wiyl?$)e#(@f*bRe zid4hvw&kPUyO*wPBw%dBr#EZBc^cV9jrp1*87l489JqMIV*0PB(1**l+*Wo0+_q!S z;^3!+-&|CYubbQTH!(3CI38iE?3_#(z((wb>s9U ztB8awbF6fQ2`__%FLU=JuHQ4>-AWY*HM|ZRFKS#Rx^yAruZug~l$6f7N8sE1D=|I+6#6a&okC;vu|xFjdGTRPH>^z^L|1_?AB{R-rHDor~8#XZvrYe zM~fE5tbp~Q6hAA2c>)GAf}LaX{cEWz9Sud-8u)|6lk`R&tM&y^Fgzoes&N*rDO=9J zVnjN{PNq-aA?Zvxqx1Xvcu2@P2 zc5@r&F+8T}c(^ZLVD+pLVRNB&aQi1_xAp9&s-jm z^fS{<*K-M6m%V+@&+O|tzk3gLpHJ4x9#mB^HSot?m?#*wTWUfRxcSQf#M7#zQg!ZE zL1hQ{=zF^Zd@%EetluZT?i8zTCNITCq5i*^cbR(`v*QM2gPefDl>7>9Asbh*2fZOiJ3qb`I&jP z%lMWnXm;Jk5j!A$eI3=;qSDB-oS}PWwa@5n{R)&U2jp`B#(kh2Gb5B)!(mk7D5jb5 z#|`|ri+!mMSHV(1!0;^SMHx?U`CR(Owc?e31xTu)=#2F7D7RHwL}NwIcl1xm27V^f znZZ+`dOJbIwa>}JgyWL08o0ozQRo=&^2c3Tt~v7A%02}meyjNZMx^o;_UrZ z6exSYi`-^in$c@mL1H2@LFjk#(W;;}MVT(PFA;>L{cFHT9$z9qxe%r#&g0U&l%vG+ zqmuNoY$9TYx3sgbyrBge>UpvKvw>C!4U*Otu)7$RPsk7;edo_PX2T5f`0n`|+bOwl zX4xQ`U$D>6^(#)q74YwLFKQpbn8BBxZ}nxqi~dHia`CY+l>^22oqv<($KMd_4vGpi zQlYszl;baIViWw#a2MK*wL8nnP2oadzJNL=Vo=BAPv&n{rs`dQLtkEgw zAlg+s^mBUFRV?jic6yG6%{a@J=P2ebijci<@u;$P_-0b_{q|r7MRKb0lumW zA&z7HtG)%TzbN^Pj>}f|4DYz+&Ux3KL&Q)V>HoT{`-(T2@LzU4&&>5_AOg@JEu;Ma zvwXsuEE_GOB->k$X-@A7Q%KFV{o%SaqVlVE(ZlqtGvg8sMW`!(Iopxyg03@FutXVxI#WfrWUMHMnqv6m}bP!y7UfXhXNT>Y;0Aj1BD;T`J<{mBWyRdWo-yBLp$aYwS6f8~*R{PV=`vUvo%BjVE$il>I)j`+35_{CUl>zq$9yTA0~3 z${#SSpY}jIG*{X0D$8GB%8uoeah@YxQ*C)Y)l>GtjOh#$M-bOx98dHi~Lb zf{wYoP2Tx-oenS;1g&iaHEAt>G4$1k?%x{x;d)ei{9oP3iM+tlRk>%&xe2ir^1$j~ zzROK$ixyaX{1q-(BVFL5rCs5DeNAFIvjy9!Et|7*p5Nx(etMGEfsJn&^H#cx)o)R| zweOEI%SCue2TJEU6J?h_(ES>|`c)tI0||{U;R2i4HhI>u*2amG}7o1^~oBI9M6X_1n%B6aofUt{e1S_bLDvq#^&Tg2A4F@-tj+MBpv$I@Aa3f9Oxka#D1;{8X(?#dPH1vwH0 zYql$Q*Tgc__xZ9%Z-iG|pv2DcBs?H^^J!~i2TqGHz5<`enxA&xtqi^f%*@H1wQDY= zCQcG6$oW;AbpHu^$^P&9U*PqJnbv{m%lDFVRGE*zFckUI+QR>H+HByiCs28v!+dh) zn!P`ONeh@q(ja*R*Z`^5VV?jDpNr<_^8W0NxwH8pD=_6B<$e^^RBiR??b1w0wbk@x z>1nA&>c9fyy)$s66S8=zAg52iG5NBA?p~%nt~NbRO#B5s^0omV#6KFGn!jhiIXK-W z9oSgc{^pqcE?^9mHYDHp{RBKrs#dV(&yVlNzC6~euGnm1x9@my&L7h(<)4Y+f3{}+ zUv@wKm(QBoQ}0bn9==Gu?4SGn{k?zk3<}xun~!>V^D>%E7K{+qG*vJF0fjsTE-=H; z(%2GH%*4oIvTuY{y@e5)asx|qGh;L{BO^m2Ofe%v3k-F}hGv*zX6V)%8JQTGfYnWA Qi*({J=2BI4^>^a}0L(-Q