From 755625843938d73ab0f9d1fdff79576634caf584 Mon Sep 17 00:00:00 2001
From: Anthony Sena Creating covariates based on other cohorts
Martijn J.
Schuemie
- 2024-04-18
+ 2024-04-22
Source: vignettes/CreatingCovariatesBasedOnOtherCohorts.Rmd
CreatingCovariatesBasedOnOtherCohorts.Rmd
Creating covariates using cohort attributes
Martijn J.
Schuemie
- 2024-04-18
+ 2024-04-22
Source: vignettes/CreatingCovariatesUsingCohortAttributes.Rmd
CreatingCovariatesUsingCohortAttributes.Rmd
Using the attributes as covariatescovariates object:
-covariates <- getDbCovariateData(connectionDetails = connectionDetails,
- cdmDatabaseSchema = cdmDatabaseSchema,
- cohortDatabaseSchema = cohortDatabaseSchema,
- cohortTable = "rehospitalization",
- cohortIds = c(1),
- covariateSettings = looCovSet)
covariates <- getDbCovariateData(
+ connectionDetails = connectionDetails,
+ cdmDatabaseSchema = cdmDatabaseSchema,
+ cohortDatabaseSchema = cohortDatabaseSchema,
+ cohortTable = "rehospitalization",
+ cohortIds = c(1),
+ covariateSettings = looCovSet
+)
In this case we will have only one covariate for our predictive model, the length of observation. In most cases, we will want our custom covariates in addition to the default covariates. We can do this by @@ -277,12 +279,14 @@
In this example both demographic covariates and our length of observation covariate will be generated and can be used in our predictive model.
diff --git a/docs/articles/CreatingCustomCovariateBuilders.html b/docs/articles/CreatingCustomCovariateBuilders.html index 60fcd463..6dac1055 100644 --- a/docs/articles/CreatingCustomCovariateBuilders.html +++ b/docs/articles/CreatingCustomCovariateBuilders.html @@ -33,7 +33,7 @@ @@ -100,7 +100,7 @@vignettes/CreatingCustomCovariateBuilders.Rmd
CreatingCustomCovariateBuilders.Rmd
looCovSet <- createLooCovariateSettings(useLengthOfObs = TRUE)
-covariates <- getDbCovariateData(connectionDetails = connectionDetails,
- cdmDatabaseSchema = cdmDatabaseSchema,
- cohortDatabaseSchema = resultsDatabaseSchema,
- cohortTable = "rehospitalization",
- cohortIds = c(1),
- covariateSettings = looCovSet)
+covariates <- getDbCovariateData(
+ connectionDetails = connectionDetails,
+ cdmDatabaseSchema = cdmDatabaseSchema,
+ cohortDatabaseSchema = resultsDatabaseSchema,
+ cohortTable = "rehospitalization",
+ cohortIds = c(1),
+ covariateSettings = looCovSet
+)
In this case we will have only one covariate for our predictive model, the length of observation. In most cases, we will want our custom covariates in addition to the default covariates. We can do this by @@ -380,12 +385,14 @@
In this example both demographic covariates and our length of observation covariate will be generated and can be used in our predictive model.
diff --git a/docs/articles/CreatingCustomCovariateBuildersKorean.html b/docs/articles/CreatingCustomCovariateBuildersKorean.html index ade16feb..ee1cb196 100644 --- a/docs/articles/CreatingCustomCovariateBuildersKorean.html +++ b/docs/articles/CreatingCustomCovariateBuildersKorean.html @@ -33,7 +33,7 @@ @@ -100,7 +100,7 @@vignettes/CreatingCustomCovariateBuildersKorean.Rmd
CreatingCustomCovariateBuildersKorean.Rmd
looCovSet <- createLooCovariateSettings(useLengthOfObs = TRUE)
-covariates <- getDbCovariateData(connectionDetails = connectionDetails,
- cdmDatabaseSchema = cdmDatabaseSchema,
- cohortDatabaseSchema = resultsDatabaseSchema,
- cohortTable = "rehospitalization",
- cohortIds = c(1),
- covariateSettings = looCovSet)
이 경우 우리는 예측 모델인 관측 길이에 대한 공변량만 가질 것이다. 대부분의 경우, 우리는 기본 공변량 외에 우리의 맞춤 공변량을 원할 것이다. 공변량 설정 목록을 생성하여 이 작업을 수행할 수 있다.
@@ -342,12 +347,14 @@이 예에서 인구 통계학적 공변량과 관찰 공변량의 길이가 모두 생성되어 예측 모델에 사용될 수 있다.
diff --git a/docs/articles/UsingFeatureExtraction.html b/docs/articles/UsingFeatureExtraction.html index 1ca008df..9bea3ad5 100644 --- a/docs/articles/UsingFeatureExtraction.html +++ b/docs/articles/UsingFeatureExtraction.html @@ -33,7 +33,7 @@ @@ -100,7 +100,7 @@vignettes/UsingFeatureExtraction.Rmd
UsingFeatureExtraction.Rmd
covariateSettings <- createDefaultCovariateSettings()
-covariateData <- getDbCovariateData(connectionDetails = connectionDetails,
- cdmDatabaseSchema = cdmDatabaseSchema,
- cohortDatabaseSchema = resultsDatabaseSchema,
- cohortTable = "cohorts_of_interest",
- cohortIds = c(1118084),
- rowIdField = "subject_id",
- covariateSettings = covariateSettings)
+covariateData <- getDbCovariateData(
+ connectionDetails = connectionDetails,
+ cdmDatabaseSchema = cdmDatabaseSchema,
+ cohortDatabaseSchema = resultsDatabaseSchema,
+ cohortTable = "cohorts_of_interest",
+ cohortIds = c(1118084),
+ rowIdField = "subject_id",
+ covariateSettings = covariateSettings
+)
summary(covariateData)
covariateSettings <- createDefaultCovariateSettings()
-covariateData2 <- getDbCovariateData(connectionDetails = connectionDetails,
- cdmDatabaseSchema = cdmDatabaseSchema,
- cohortDatabaseSchema = resultsDatabaseSchema,
- cohortTable = "cohorts_of_interest",
- cohortIds = c(1118084),
- covariateSettings = covariateSettings,
- aggregated = TRUE)
+covariateData2 <- getDbCovariateData(
+ connectionDetails = connectionDetails,
+ cdmDatabaseSchema = cdmDatabaseSchema,
+ cohortDatabaseSchema = resultsDatabaseSchema,
+ cohortTable = "cohorts_of_interest",
+ cohortIds = c(1118084),
+ covariateSettings = covariateSettings,
+ aggregated = TRUE
+)
summary(covariateData2)
Note that we specified aggregated = TRUE
. Also, we are
no longer required to define a rowIdField
because we will
@@ -724,13 +728,15 @@
covariateSettings <- createTable1CovariateSettings()
-covariateData2b <- getDbCovariateData(connectionDetails = connectionDetails,
- cdmDatabaseSchema = cdmDatabaseSchema,
- cohortDatabaseSchema = resultsDatabaseSchema,
- cohortTable = "cohorts_of_interest",
- cohortIds = c(1118084),
- covariateSettings = covariateSettings,
- aggregated = TRUE)
+covariateData2b <- getDbCovariateData(
+ connectionDetails = connectionDetails,
+ cdmDatabaseSchema = cdmDatabaseSchema,
+ cohortDatabaseSchema = resultsDatabaseSchema,
+ cohortTable = "cohorts_of_interest",
+ cohortIds = c(1118084),
+ covariateSettings = covariateSettings,
+ aggregated = TRUE
+)
summary(covariateData2b)
In this example we have chosen to exclude any covariates derived from the two concepts that were used to define the two cohorts: celecoxib diff --git a/docs/articles/UsingFeatureExtractionKorean.html b/docs/articles/UsingFeatureExtractionKorean.html index 425dc4cc..a724c412 100644 --- a/docs/articles/UsingFeatureExtractionKorean.html +++ b/docs/articles/UsingFeatureExtractionKorean.html @@ -33,7 +33,7 @@
@@ -100,7 +100,7 @@vignettes/UsingFeatureExtractionKorean.Rmd
UsingFeatureExtractionKorean.Rmd
covariateSettings <- createDefaultCovariateSettings()
-covariateData <- getDbCovariateData(connectionDetails = connectionDetails,
- cdmDatabaseSchema = cdmDatabaseSchema,
- cohortDatabaseSchema = resultsDatabaseSchema,
- cohortTable = "cohorts_of_interest",
- cohortIds = c(1118084),
- rowIdField = "subject_id",
- covariateSettings = covariateSettings)
+covariateData <- getDbCovariateData(
+ connectionDetails = connectionDetails,
+ cdmDatabaseSchema = cdmDatabaseSchema,
+ cohortDatabaseSchema = resultsDatabaseSchema,
+ cohortTable = "cohorts_of_interest",
+ cohortIds = c(1118084),
+ rowIdField = "subject_id",
+ covariateSettings = covariateSettings
+)
summary(covariateData)
covariateSettings <- createDefaultCovariateSettings()
-covariateData2 <- getDbCovariateData(connectionDetails = connectionDetails,
- cdmDatabaseSchema = cdmDatabaseSchema,
- cohortDatabaseSchema = resultsDatabaseSchema,
- cohortTable = "cohorts_of_interest",
- cohortIds = c(1118084),
- covariateSettings = covariateSettings,
- aggregated = TRUE)
+covariateData2 <- getDbCovariateData(
+ connectionDetails = connectionDetails,
+ cdmDatabaseSchema = cdmDatabaseSchema,
+ cohortDatabaseSchema = resultsDatabaseSchema,
+ cohortTable = "cohorts_of_interest",
+ cohortIds = c(1118084),
+ covariateSettings = covariateSettings,
+ aggregated = TRUE
+)
summary(covariateData2)
aggregated = TRUE로 지정했다. 또한 더 이상 personId 데이터를 받지 않기 때문에 더 이상 rowIdField를 정의 할 필요가 없다.
@@ -648,13 +652,15 @@
covariateSettings <- createTable1CovariateSettings()
-covariateData2b <- getDbCovariateData(connectionDetails = connectionDetails,
- cdmDatabaseSchema = cdmDatabaseSchema,
- cohortDatabaseSchema = resultsDatabaseSchema,
- cohortTable = "cohorts_of_interest",
- cohortIds = c(1118084),
- covariateSettings = covariateSettings,
- aggregated = TRUE)
+covariateData2b <- getDbCovariateData(
+ connectionDetails = connectionDetails,
+ cdmDatabaseSchema = cdmDatabaseSchema,
+ cohortDatabaseSchema = resultsDatabaseSchema,
+ cohortTable = "cohorts_of_interest",
+ cohortIds = c(1118084),
+ covariateSettings = covariateSettings,
+ aggregated = TRUE
+)
summary(covariateData2b)
위의 예에서는 celecoxib (1118084)와 diclofenac (1124300)의 두 가지 코호트를 정의하는 데 사용 된 두 가지 개념에서 파생 된 공변량을 diff --git a/docs/articles/index.html b/docs/articles/index.html index 34b10b49..c61270a7 100644 --- a/docs/articles/index.html +++ b/docs/articles/index.html @@ -17,7 +17,7 @@
diff --git a/docs/authors.html b/docs/authors.html index ee6dde43..1ee525be 100644 --- a/docs/authors.html +++ b/docs/authors.html @@ -17,7 +17,7 @@ @@ -111,13 +111,13 @@Schuemie M, Suchard M, Ryan P, Reps J, Sena A, Inberg G (2024). FeatureExtraction: Generating Features for a Cohort. -R package version 3.5.0, https://github.com/OHDSI/FeatureExtraction. +R package version 3.5.1, https://github.com/OHDSI/FeatureExtraction.
@Manual{, title = {FeatureExtraction: Generating Features for a Cohort}, author = {Martijn Schuemie and Marc Suchard and Patrick Ryan and Jenna Reps and Anthony Sena and Ger Inberg}, year = {2024}, - note = {R package version 3.5.0}, + note = {R package version 3.5.1}, url = {https://github.com/OHDSI/FeatureExtraction}, }diff --git a/docs/index.html b/docs/index.html index 08e4ef7e..eeb65efb 100644 --- a/docs/index.html +++ b/docs/index.html @@ -33,7 +33,7 @@ diff --git a/docs/news/index.html b/docs/news/index.html index 6447f18b..e274ae01 100644 --- a/docs/news/index.html +++ b/docs/news/index.html @@ -17,7 +17,7 @@ @@ -75,6 +75,11 @@
NEWS.md
+ Bug Fixes:
+New Features:
diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index 7ecb9550..492a0fd4 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -8,5 +8,5 @@ articles: CreatingCustomCovariateBuildersKorean: CreatingCustomCovariateBuildersKorean.html UsingFeatureExtraction: UsingFeatureExtraction.html UsingFeatureExtractionKorean: UsingFeatureExtractionKorean.html -last_built: 2024-04-18T09:32Z +last_built: 2024-04-22T16:15Z diff --git a/docs/pull_request_template.html b/docs/pull_request_template.html index 2f72df7b..56f0cdd8 100644 --- a/docs/pull_request_template.html +++ b/docs/pull_request_template.html @@ -17,7 +17,7 @@Covariate Data
Aggregate covariate data
convertPrespecSettingsToDetailedSettings()
Convert prespecified covariate settings into detailed covariate settings
Covariate Data
zxHiegbG&z=lZWT3B#s4bC+*t!HKnr}&{;{-{t7WJPE$^rLI|J}!0zLCn9?lG zc@v;n>x}(W?ghk#W^3K=;0^Q(C-Al44Rpy!@QX_ZeP@~e(~t}BYrP%xjZgHaRxg+> z_oo~P>=?go6=;}e-UyLs@J%AJJc(1ZDeRo!%tMTAB^9yTkFoI+QAKAI;>OlX` zo&P7z1e5MvG8J6mI|T=ks|Q@KUHebQpsQTM*II+X$}nKr*x%O%v0rI&TyK7%i2}|J zfBWKK3Hl#t>(yKKJ--GMJ%iPBfZs_LE|``7-TXq}56r{-`{KV)^MV7+{~NB~y~w8j zf1|kr^V?li4%7T@0gZ}`wQ!>q;mA7v+%t!RhyJmaIziNpjoCdfW;3J<5=(dy)NSF> zd#T@eJa<{5undRy=J9Gu*DZYjA;F8Nd4Gfmtax6EM^1{q*@Rqz^~tIia;5L2t`Fx3 z)xL7DLvZItUJF)|^1D6R5z5!5m5Qhbc^;_yd6{w_<|Ielv;o_jC?E>;TdRj?=oTc4 z5l$^u_mhq&XDyuRkH@?l_5`sXIL_6K1X@b+EyvoF>$f ^iAsWiWRNiLWL zE#+rgqU3RF;c%Xnv&!Av{&w7Zn ^V$LUmdpaA*W+i6MoL+I4k4W*Jb#OadIW7Rca*GgdSmiY>}Vuq#A373lC|NXRx8< zQxpy7$sM^BhP{Opw!ho>OuWA>zv>`0EdbTkdc*1T?Htp~3=5KD3!2)!W4jfn#JjgO z>GJ7sA1d}3odFhBY8&Ed6?!8=65jgjpY2n0#U#>c&Y{=R-zs$pA;Y1Of7LvK?vD)T zvf0n!4&D`s-Y{9;Rp_*oxw$}WGbaMm*1u(6G+D+0Tcz!4q_Ln!beIbnt=+p5BCcw$ zbacGiz6vk6LfT@qe rP-XtZ{lGLqQluCuU1Ch`h#>&~kW*zQ=3T86_EesRIf=<( zVN1mD>wrUXpF~{q*>@r1lMH(Jv#(oa3RIVsYgFVD9}CnCZFUsquUCdfwtX;EDV!pv z$;35httnnl0}+K637^10Bv)?}sW>NeBMWfiaU43(1;!-84EmY4uj^S;HCu(%Z=r9M z`Dr9@V_*VpB>Lq-NTyZ}1(ZIHkbod}SI2%5RI$WJcM^1Gr
P7qj961*IN zB=6T6o)n2UDZqYpyO&?^-0bG+@V0~yu_;TbX=yExGqycc?+wQp&BQ*{f)6tuj=8wO zjUvVGeHZi@?{-sPo*YV(lX+;bgf=k){+Ro&$poT8Udc+N^U89MO8k!SQ!8Ld+UL L7F{xSRnx}^X9>;B32i1 d7+c5(1z1PcfFqrZR8pQ$zebeTBW`B=EYWJ `J*EtfI)mc3l$v3$^}_;Q#03@-JdP{a> Sa z!01d(d9j~nlJW>AW3g>BuVeEhR*L#S8JDe66Z5GuYXts>2yZ9+7zqU-0WB&Cx@|MM zFy-ZNzPzX@+YQNhkAtb`v?MQdflLNKWL3spPpM?$IH}{!XmmuRoYcD`Pe{L-*Y|J6 z5^%-p3QJ y{U`p)c{!&Vp8V&X8__*3 Weo%e(2Aq+6)v>9p9`=9WPFS=G+=<0#Fb-5cJX zowP+BuLT#QDsOoNJmzoMz3-5A2xMu}%BJ?*cX`LI?^H-~njRc3d0%4BVQ#3r+%uEc zn4InoUogNrS AtnBPdZ&y(* |0=OBO1b&8;+waI0gC@q^S%8-@PzD0dE%@Szzsi=ED z9n-<{(MvwRYV=dNMTCi&`x{TB*-1$Zmzv4$LYp`9Utpg@@wzi;3C<%kGORYOF;|M- zc$noK`sO)GB!W40`gx+3g%JFHdp{xMNA2#+&>MdGV#zpbAurNODGypG$U&|)JgqJp zyBQ(`B(-qct{(UlWP1>Ukb`2t81;kE`dw~sbuvigHeNRT!q``ex55z%QNkQ(QgAH@ z8|+Mxtkfaap4c-x4Kg0pK4+us= ^EBh9wu+$(Pi)!e-lzTYisOY_? z#vZ7eJ}x|vCraIVn2fuW0a^*8)MA|GGmqbv$zsgI554q< ~J?r z@={@E9q~mHZwCq2py7WC-17Kx_S&^mABRGXD)5t_O>lO|i6#3u9?Mb$kl*xjdxM3| z4UUuB;vHTJrz~vJ4JfUp+S->IRf3Q4@v)#)BHq5LF-y>9@b_BmzD;?bog%W!OQTF$ zu(#9vU2~7^YF;vXnN8 BI4k{ttpw^zWvE^H?Q$<3`W^`IBS>Ptw^>v3nN1B zU$RWiRbW}$Vp?{sKS^E=ciB=m?{JPTfu2F48s@R#sw-7%eDNWqtyRRApAR2jW2 $vkNdw~RJXzJ-0}HXZD_3Xx^>hv~1ZykqYgm~JI-tbgGH?iylQF>1D> z47hFx(e>#itPRH|Fc=1odpk$8^rD`k;zmwn7di`DR4nLKo}aOYxKs6}ePOj~Ea{xg zYzcKgEop}+4t{kb-EwRvcc4{D2y1K})#osQU4LO;3$;i%(*b3ShdXf#M82*|NUU`9 zp=r$a&bYqcj(~0(NSas#m_M{LyC>i9q)~xn+Ap_MwT=#tT98RWcf#9-%w=PWn}01b zaI$QPiujH&g4#OOn#Yl|N*Q5=9-h|e4ef`vf-$~4R;D)z2e(0Jbg22_&-(Le@SwdR zxph^~ZoD#u%en>;{Y+2}uwH>g|3O6GX_|jRM3 Ulni4G68zJf#ZohA@uc|N0HH&ky$4(Vp> zlDZd_#I9W~)6D3e<$C}1nfbF6-{hb#TaR&7$v-JB9k~Ot@Q%Fk643FvI;bGF4{$nj zcWx&SS|)`Y--;X;;lx-6;-iaLnRd0@-Kg03(t|NvoHFmy2*saPveZHTnko z%49i9T+1fT#AxkdP_S6FPy5MohzQ=&%L~>rn){W0-sOc{zn$@1*u0^uXE?hXZ%r dx1Gj!$b>Ep+pdS#0K-$=u^+wN#H-Q;--$?jyGTT)afR+qB6d z8yl4oUWBb@aK|T#A+zN!(y@RJU5$)G7cpBl}PYU b1l4YcT T0w7J2gMhAlm^GIG`wV=`f--64xl)pQ|Im`PD#H9 z>8Qq`!vXx+nJmjpNE#B4X=TSkcGQ;KJQrEoqjaRsyx)cOx=Z=Bt7DZ04mGNoeC@V+ zsm+(}tZoCeHxzAV>b1B&F&8VbFFZzi5CQY$fk8{YRPM*6QO#Mi%*|GQbKRbSN+8nh z^=7_6!rmCJgF?%UyGraSC@$3RgN~UNo`guxzAd1O!)lPb(Vetn+{3~&tKwVHUvR$W z>d)=0QZZZ(6KbbkSa)}4$tmcK6bS8JveLULSv<-p! 35H5=<}daiBd_rICR%*3j^fa xzE{TnQ zcHuu;|Kq~JnI_LqZO8BB^-H>t|J4`-W-tb;vi+Mmh?|Xt2R#4rn-{%GLJYcY=a=#R z8ihm9H=@fp!$>&bBE`MVmJ_T{c#(GCTjPITuhYI(8g%tN`%nT^~Oa?s%?NHGE?< zuaA{a3{5XC`5pb(u-LN`lCW$hh6pSR|Br`;F_bF@uaQH @lDr0ja$($ zQ^H@Bx%-h2Q>uQ~RPttHpE_}nd|lS7TX`I(4H4<4>&1$9t+k0o(`XwN%4*vP+#D@u z!y74J3Mc`H`FFc4@7AUjP+w@P=6RJIO2QPMCs!QSw5DkBwXQI7>Jj@W4o6sQ3C0Ma z%8~nO#*oAKLoi7CErNe}0>Lmc6jm^ 6iR`SGJ|LX|!7&iF6n>}k^jtf;nt8X)?RnCPXF zl8`OXXM1{^!a^n6tLISdWbSrG31MBe`oLIkt&(k;!F|;L$K}^p3mH}DF5_}&F6 rGUkOh&Z$xav-Z{J& zOP;#6rUO+O(QGDYgIc|pn`^Q}JFPVMLJ#&m(D;`7K1vI(P-x8qx)3F}=IAdO*r}+3 z6zn2;1Ij03b1i~tZl&@>0gaO-RsyfLoSxpWQ`T9Jn8`&IRRjfl1SLW`Bv$)+&hvh` z=WZT-`W8S^tSOu)**}Nm+sZIN-jAa&Y*>$%k2LCXT_TyukV $A#T {pw(1j0bs|WIrQJz9$_J1Zh zPlCGjU}xOsETAEE_N_$9$JGiDtn_Hla}+?A0gFsK^fOn2@+Yk4=Bg7gTbur%GanQ4 zWv0EX^OLh1!k?L|ehK)%rEUP|mx-V2bLC4a=wBP^-$;`GcE;&@_u%J%&v{W${W)%4 zZshOMP0&?#>2KfSN_mzC9PqiW$-2N%=3-^Q`a1*9e`O5 +P{zt|7R$ioBP`Yl}{o%K!G4rbITSz zS6!_p(v?+@>q&cd`lH7*sGIv1T`$?Vkll(vc4*y7_XZlCujq#$iNcb5TC_x#gokbi z45IpW!R->0!*BU-1Z1GuIn3SXg*lqOv3aX~6fZ8LDZo|C^3 ;9R7LwOzlGWSDOLu5Ue7ia*>G<~tz1f}g z(BUh$YmcGDkS5sh8B40F^k)OgefsLX^ON_K5s{q9L %4;>}>de2AP9X6@8TCc;gDF4L%#)aWtgqaEP!;-R#xaXYD2 zhmK@;;t28)no<95jW#NQQz;DEh_V%XC-ECc`P?2VhH~2X3~bB-E9O*->_7-nU+pl1 zb=I)+NpO3#szf^U8Vv>w>6_Y|nEOfGZp `H1!xFgeY{7-Wsw zDeb$;t++tV@DsklQ(gDC1#Z z?Janya_d+aM~uo4;G>A(3Rr=`lVjlw;-d-u{4c)to2v!;q92~)dRKe-l>h2#zmaMG zo2v!BpB28&*Z#cjh0D3z$X~kJUs!Xm8h`gVJRksEg1n~J3A$wH{q8gVWX=vQXtG~3 z!gEyy;FpbmU;CReaLoYF<(2!s_78vc=Pct-ZMeV4D`2b 6XN4zBbJU@7=w*Dc4EwKIwghHW +Ret z#X5{81!AMNWt00b6J~Z^89f-xld>o=Py8dh $FKFJ z<>fO7jvcHrHpzCL%BGGy)^5$Vc^#<4`EJkE+8F{N*v@-s%Rv>oUszIaKdACec7p mTWFbeuoc3&_FQF!)9I`*Hy{-$jlM{`_U(+=X0+9Q2Kw8vO6K zQ}4eFA^cKJ{ t}d9#BLPk{hVFsU@SDh&d+e8G7<7=W;F@$g(*asN?pS2Z%W zHDkXrdGKw^zh1I`-yWdHD$OdxDz0-;q-O)Kt88ZCdU4>46AUx>$T`3|v25Uw4dMY$ zOM?sS9N=;_A1~J*_h(_|dfQms!QIH&%E;C1wvnsR)m>gvwSM2_ZE`>d^o^ (=G~PZ@Ar`#mpS zgYV`){L}x4r!L^s&5Nt_7v2i&ta#$ctFhzCoS5Qd)6oFifUS^QuE(qVB{rj`3Av?c z$ivVK>;z+4r`vE&k2>udVI0sfqCTYhY&XCmL#o_=skP&WnHoV4L(p$2-MUC>7-)#C z5~Bz$gZ)4T)m}hptR>~1AOX$pOfOrHVXARom3~`|Va{V$taljUIYYKH8hUd4MfTGC za(4vyaLpKi@B$~(8xz@%9APFg+UkS?Bl^-}(vG%dn0SS>Nia_}8oE!d)l||}awn~%`Ak>+C5LKWl2c_U+Oj3Fd;?1lq zwFSfYP_k?hieoXJbldCEm9#PetbtGL)ZauxkKXg0j(ilgu&F&>^03w@zsjh@;EC_Y zHjY4S f z8>_0)z(mlCA?39`GRajO7r*pwi8~~v@eJokvEo2Fo-db5;} qD4Y7q&j_-k7RGMINy{b0#Ms!oj RnOG4PK|`#W b1gBq$%KxcF{DSv>IK)2#wtp)NgLm^+{t)`oAzlnk3uSmf=Ela= zWeDNO3@H*&%--Rwzq^4be$WF`iK{y;8HbqJ0*TL4)sxu|3G`VTbzk??{oES;!&CSB zKqmMQ>BUpT`lmArSB@xr2Sq=gI?yj%M3=Yzr<(k~954l4vJ`!PRjwL;f9SZl!7=xr zkb6VuQ97>4kNfnOf$Jxf{db`XOoTy>4F!I ?*$9XjIZ<~CGOXlu@SgO zR0Ct6h(}7v Eu1*L8foGYHGP%=9j%=KJy|Q#KlX-nz zyKj;%=T5_Tl}C9x=!rQed$J?@Yhwj<` nxi4yW+N_#4^jd1XTatO3BN5kbE0Ih=3*rbUHvvE5cf z{vKi8xuC+lA%A)xScA6eagS``Y;tCXJ&%SeBCSXdn&+0w>ys!6cJfPKq9^Z;YJlc$ Zp%9`)Cf<(A{?``)} z&&*7UQ@VEh)6!3eA5J!M?Q6Bua9^7D6TK9XyMfHecMsYoRo8tv(N@g^F{DW*W@ayK z>sXKwfB#wL`ap08w?OCecvlidaKuw6r9PvI{Ou!3K%p7kBnd{ufkG^Dz<2%&Z4G)4 zPuu`cT#M(2&W3jXTO}`ONCB*I)Py5J;{EX8-3>Slq@C2;guxj+uJ<2{N#Sb+(sRI( z$?|_zTthdO3P;D8S%^gBpV6EoaUhoMngkO fZ!3@3Ix-pXDzDE@MCu=FtG6~if`hq*CspC*r1(i!kmGbceA)tT zZ1ofLc!-~ZJ@$BiI7xdT2_vpgqWhSrb-B1zx%hY+Y6*#ZKGEiraP*O99Z|4M?)jv| zNDdD_-&HmOG2t9~tl!luQ$^)lb+4JQE-8E;$^fuOeR(VB`j+@r;3+N_14sba-q>EZ z=Xlo< 7oi5$txxy0oo=a^eW|R`y3Bx93 9s)l~JP9^~YG`2@D@ukRYI;QGCfZ$U;iKB5 z!a$8l^iCa- {H*CyOoS=#+s 6Bk)}gN^2tPAy1+pBz;QK-vTbikJ)MjBCvp7AhKa6F4BreMO_=$~jTMEDiFZh`K z7L0&@di }w*;hhu) z5xsTOy$JGd&(7Hy-EP>Cd4=N45^TOQPr3@_n5`=1O0O4mi;@{NuM@4Tzb52&_J%Yr zd)$l9nXf_n~Top<*$AH6c2u9g&xZe9_|naSp@|z`=DOW83|7LR!dlq z2MO{QN){+HH$DD)yv#fvhvj>&w!3$}&nJq8;wJuKl$zs$zjR>$e{0FRq}=^iHu2&U zelv-e;HclN+6A}iUyo8>UjC=_FFW_I{E`2`wEYHo;@}QO#|$0J62OvwquAf_fD5)% zlcPnaQlJeZF1;j_BAXm=vOh(G{m>*M!c5eSbGIjI10Kv{jiz_E=IE3FxYZdI8BG>_ zdF)DZ*Bzd!23FYUw8q;ER6g&Z&Ty0$%-Vflq-#aekk9_OuAH!$MVCE-Ilmo+oj$*J z(kG$nwI9jp*pmfu(+|0XltN5q!y6yDRIw@_Y>rnLGu!d+Vr;tu*+Z3mYZ$Xp`*LZ` z3f39xM CKY1hGxN&qi+Yf zw79Y@8Y*IM3DbueZ3j^cn)IkrscEEk=Fr(F)xT?{6~JWnma1KGB8l8}Yk(a~!Wk`= zLkpLl9fzG&j#YRMK-e@0s3ng! nNW1K!HrDPwN*E!ktVJ#hpMAq~M>Ma_}G(F`~9oLDtqs(So~KK(?T0 zLMBDJN qb!C3OUJK5oA_#qJ+ zai$^N&v-B<1_Z%M$;k0a%UG{iN4%50>m*S7VK+stxm`-1+U2`HbY}c4=biI1L3^hs zpFo0K@U7U1D+o|{_9lYyHWDI `u2)`7 `;NOCwX)#G6batnlFUaRZ zo{)L`Y-}PuYEb}I9MdP?e{GnUq)fhx!nfi6U1&RiTIW1KXA{PGnEn}h4A%E3-Q+uJ ze*Lm52NTP^RE%^RVrJ6oDH9BV0rrci?`T>ER-fO0VNp}i3Y4DHX7xA=cJF5>;m {Fxtkq=Jhdi|^EfDCCKje$L_1&iQXz%nC@htCsE2O>g&OP{} z+1^1&06^tUSh7#Vxjj(FL;m@@GK?D;FFj@**@q4CLB4yrUo|N!btoZo+K#4Z*mPu4 zWCK!o_f|4j&|2TCbOm~C=dl;n78i5vd`u3H)9B1rvsl~oI>NOt;ZJH`+%B;z{m!^< zX7mU;j`+bh=fOuxYRVN_x1ogJ5a6*^92g--Mgk5M!7Fp0F)=40VK}Q@t0Ib@$M=wP z&q19!hN^4V>^8FAp0YU-I7rOfZgkg+R)T1DXJX|1?C3k|xt;Lls3;bIXkdB!?uIbw z3RddoFbNE~`jPql-6mYbnExxAa6M~xd5}MqL#{10=HR|w{{3D0XPm?ej<#6ADb#-i z$k&-)7lTvaySbX#WaR+&dH+lp0$0r0@A367gY H2)Nj6JdZ7JSV {J200!$K~Ga_KF $LUySRZ6ieiif3iERTxpV;4kiw!d`4{^Q~%lM93bP@c>loe!R_*| z%PZoVpEW-7Z-gHb>+d0Q^B};PHPfW7r>IWIO%{K>|917!tWBy)&1XL0it;mBKefB! zJOQQ?gC~4U!$RnEZEw4e!DyjJ`a7!y%z*^#6m6b#7%g}3dJHrej&T;Xd<{OHV`q~{ z`ZqmnW3#-gpXsAU3Ld0M9PN&MCuTh=MnSU?SvKXK6T pxu~XzNcQP*eyS0y(9jl6lomoy|Ko$+8A~Z;Lt?oQXBU6a z9&thL;786p4fY~z48NspBDSsWrVytG=$-PdpW!KN&6gHK-`?Q`-b$UVyczaL>v8Gf zeI0p+q%eilmUUPIfe1I>dL`aHN7I#Vh&S~^19Z63q2WPpH*cbuGZZ6LH?}K}`$+1d zo3%_;FtXZ|-{1_zQ|X1X7q*&?cqC?X3lJGXY07d$y6Ap~_2{gWcZpRp8TkS&zDuCg zrz)eYxO2x=CwF7E0;|(9cYR-*G>+ht<{#})mI@3cLZr1UqTVui_Gna(XAt37`F?6$ ziKY1_?}-}}PD|v6QP0^#=@_{iRL>P2-p#7#C-3X0<^jNCv^*Epm;Z(8VY@OIc#&ke zJjkC^&y|(x03yc~aM^X~pQ`7N6p1TTy+29+u@cLDy wDT5BY8YIu70VwTI`3%@+EyAl z9d?;HPIX&73{G6lzPGM3cqX~)9j`EGsm+-6m9SFoWoNX-gBOqIr##6YK6!J$-FxwC zSnz>=3)ynzyh!>pril9HQTcPlARqVwT(%6w7pna2pVAUP8txfu<)M$`4n_g!R4Qq( z#8O!iA89`AJfEc~h$?N>rLt`sqOGN*SkzKJ)t=+)A@5RcbP0m}P{92nyLVSok7*(@ z0kL~y22qza*d+A3U3@ZrnnaR@*|cyR`F;?!_bY`(+LHBt*t^A+5ro#(G%C+m(=}A? z3GFiQiG12Jl==#_a%9H$Ru8=fnEbNKpa6Ik)jZc{P>NDV@g~rHG#aTVbla``dn>2h z2Xjht=AGLuW%`ChIHBq|1D_8I!_#8=D)3%C34EU3sp=6kyuhNA^FXJP8)uChA19l! zCb<(xO#En(Qa`!aI5WpHVQMP8{7KVt-!m)PASA;+hS=i0jO8F#A}-PTQ{XT-jT7}a z{+&zqNt2?J)bO{^Gz08GJAyXib2)P9>HL((%Md}k7U6}(V i~Y_UWE=s`WFuljeiZLQm(c zvT5RN@GX;yKYg)~>)swCnU@6w@7#G>9N@RE4L>>Fuaj%Hca9VV?f>Q`mH3~N);|ba zR|51)rs1D8B6w)~3dkOGN$t84p jeyWB`we;_k)}ZUGGccI!iaYgV`ihgAg^3j$ z_+R(NK-Y0)*TpZ#uQ