From 9ad2647fdd7ad0483244235f19ff858974ea76c5 Mon Sep 17 00:00:00 2001 From: mcastanoUQ Date: Mon, 10 Feb 2025 18:34:03 +0100 Subject: [PATCH] Update in example of the documentation for non-nested DoE --- doc/_src_docs/applications/mfck.rst | 35 ++++++++++++------ doc/_src_docs/applications/mfck.rstx | 4 +- .../mfck_TestMFCK_run_mfck_example.png | Bin 24776 -> 27156 bytes smt/applications/tests/test_mfck.py | 33 +++++++++++------ 4 files changed, 47 insertions(+), 25 deletions(-) diff --git a/doc/_src_docs/applications/mfck.rst b/doc/_src_docs/applications/mfck.rst index 8eab3ea62..81d471703 100644 --- a/doc/_src_docs/applications/mfck.rst +++ b/doc/_src_docs/applications/mfck.rst @@ -1,4 +1,4 @@ -.. _mfk-ref-label: +.. _mfck-ref-label: Multi-Fidelity Co-Kriging (MFCK) ================================ @@ -13,7 +13,7 @@ where :math:`\rho(x)` is a scaling/correlation factor (constant for MFCK) and :math:`\delta(\cdot)` is a discrepancy function. The additive AR1 formulation was first introduced by Kennedy and O'Hagan [1]_. -While MFK follows the recursive formulation of Le Gratiet [2]_. MFCK uses a block-wise matrix construction for :math:`n` levels of fidelity offering freedom in terms of data input assumptions. +While MFK follows the recursive formulation of Le Gratiet [2]_. MFCK uses ab block-wise matrix construction for :math:`n` levels of fidelity offering freedom in terms of data input assumptions. References ---------- @@ -50,32 +50,43 @@ Usage # Problem set up xlimits = np.array([[0.0, 1.0]]) xdoes = NestedLHS(nlevel=2, xlimits=xlimits, random_state=0) - xt_c, xt_e = xdoes(7) + xt_c, xt_e = xdoes(5) + + # Delta value for the non-nested difference applied in the LF + delta= 0.05 + rnd_state = 1 + + np.random.seed(rnd_state) + deltas = np.random.uniform(-delta, delta,np.shape(xt_c)) + x_LF = xt_c + deltas + x_LF = np.clip(x_LF, xlimits[0][0], xlimits[0][1]) + # Evaluate the HF and LF functions yt_e = hf_function(xt_e) - yt_c = lf_function(xt_c) + yt_c = lf_function(x_LF) + - sm = MFCK(theta0=xt_e.shape[1] * [1.0], corr="squar_exp") + sm_non_nested = MFCK(theta0=xt_e.shape[1] * [0.5], corr="squar_exp") # low-fidelity dataset names being integers from 0 to level-1 - sm.set_training_values(xt_c, yt_c, name=0) + sm_non_nested.set_training_values(x_LF, yt_c, name=0) # high-fidelity dataset without name - sm.set_training_values(xt_e, yt_e) + sm_non_nested.set_training_values(xt_e, yt_e) # train the model - sm.train() + sm_non_nested.train() x = np.linspace(0, 1, 101, endpoint=True).reshape(-1, 1) - m, c = sm.predict_all_levels(x) + m_non_nested, c_non_nested = sm_non_nested.predict_all_levels(x) plt.figure() - plt.plot(x, hf_function(x), label="reference") - plt.plot(x, m[1], linestyle="-.", label="mean_gp") + plt.plot(x, hf_function(x), label="reference HF") + plt.plot(x, m_non_nested[1], linestyle="-.", label="mean_gp_non_nested") plt.scatter(xt_e, yt_e, marker="o", color="k", label="HF doe") - plt.scatter(xt_c, yt_c, marker="*", color="g", label="LF doe") + plt.scatter(x_LF, yt_c, marker="*", color="c", label="LF non-nested doe") plt.legend(loc=0) plt.ylim(-10, 17) diff --git a/doc/_src_docs/applications/mfck.rstx b/doc/_src_docs/applications/mfck.rstx index cbd6ff26d..8efb67048 100644 --- a/doc/_src_docs/applications/mfck.rstx +++ b/doc/_src_docs/applications/mfck.rstx @@ -1,4 +1,4 @@ -.. _mfk-ref-label: +.. _mfck-ref-label: Multi-Fidelity Co-Kriging (MFCK) ================================ @@ -13,7 +13,7 @@ where :math:`\rho(x)` is a scaling/correlation factor (constant for MFCK) and :math:`\delta(\cdot)` is a discrepancy function. The additive AR1 formulation was first introduced by Kennedy and O'Hagan [1]_. -While MFK follows the recursive formulation of Le Gratiet [2]_. MFCK uses a block-wise matrix construction for :math:`n` levels of fidelity offering freedom in terms of data input assumptions. +While MFK follows the recursive formulation of Le Gratiet [2]_. MFCK uses ab block-wise matrix construction for :math:`n` levels of fidelity offering freedom in terms of data input assumptions. References ---------- diff --git a/doc/_src_docs/applications/mfck_TestMFCK_run_mfck_example.png b/doc/_src_docs/applications/mfck_TestMFCK_run_mfck_example.png index 3a379d5c3df9be706d0a352911c914b5e7d16272..de6df111250f496f36c3de1d87d6d0a9a4d7eb70 100644 GIT binary patch literal 27156 zcmeFYWmlD7)Gxg0?(ULq1nG1Wk`mG#(%lWx9a0K{(n=%UEuo}HcPiZtXTkrzpYeQz z^WrduL)~0^T`TAO#avOZm1QwdNl_sX2*xWps2T(U8w7#CEF&X=Px!{>*TG*xZqnLr z>W**SJWX6IAW9}~PIiuNcGjlU9u_XH){YL(Ik>qvxY($z+}xa8g*Z9w|Gy_V99=9q zQ(UxNKr1LtayqUM2$sp?ADCkCB5Mf5I_MQtQo}22Zvn|oLwX7E&{Dw%iv~fCDL7O) zNMc+1H9oZRGwi$T+<@X@V_5{K^e*Rg2dW3uuyR7f=b#l&N=gcqIWv2A|87`OPLWyy zS89KMam#bq#q%KT_9EFl=jZ%~G3Mypph)n;`?A6V1`2*O>WLvyj~|4?B!a)>%>Lhh z|1X-2zG4rU^Pe`gwA|b{hK7ctf8A`-UxHP8^O*^?`uq2>&ysN4XR~%_W{?(C+S{=3 z@NWi)I5;?y5`KOnqOyWc_nQy0XYWQ>cqLqpInwcXd@Nz!S^@L>m zAsQPkDZU4CM zn~ktmfu@>SSy`Ej7~Lja5<2OgvCtkL1anBr!onh@riOcbeEgdute-)pjc|g~%g5)N z0V>X$HvtSzHUt5Sm|(SJLl{6^DiCT&7R51OhxQwf#e9!YF&Zl2x1p2@mC+gbblRh@~0<1OS_ zHIeK{&I6I4_MZGUi!*jVU*RPE+sN`z_Eo5djA~GW68#h%;#UI<1Nu4$E)LFEYLxga z-VEJ@FJy}#5> z#lPV8KI=O>6BDvoU#z6A?#GscwwwKKvjoxbi6WJuG>$PfhDg=X=a$3Ji9)57&CPI3 z3L)dMTxkm<+p~X@$43h39MW6EpH@~^-<|DDX^py?YJZ1^^w{m~oRXJupSnNSgr3&$Yq>h6Z)=H@%W5mxHItM;?551i0nCXAP zpjW64W%)u14({R6k))<3VM}W(>%7+M*VK&f2+Oo{5#;+>dGgMFZ@3$7b!s7YF3f0e z5K0`idF;>Y)E(4L8Fn|h?^OC-wb#a=`1O)U;t1){hgu;HHLVUHobF zy{O)b!e-W#xw^kOu!zxnxW79BeK(t~G?@&@_WBtF1Gj!hJC8xa0}WSqZjp}pjGRI% zXDC;r5q;C68QQJ}hlB~8DmOT~-l@>?v4aj3ZVwVDWTY~7S?v5N8$xW0bcGoCpS_v! z(UG5Tci;KLaz|w)Z6QtvH4iM+MBrqbi9ncJH5uJGJla+!{>?yqetlI&UQ6S+Tq z3>GTnO^N24Ci8TG3l;bdGz#$meZ;z*iuU{5%HLIHKTvO={0>UlQ*Hh?)jO-VFKOuM z5ll=>cw$8_mqSw9#K#61|GaIhbifhYnJkGI^4|PlX`b%sebD~UW>>(*$-{%&et&H{ zV?Wla1YNg+l8x6GVf7ytO~HKMkFLHtl%*$z>@=`y*7SWnaxZzAg{Nhxtc(dxLNx!9 z-%0L|G{g$DsI3%_-sqFv!DcS>)CZqQZ^Ns!hH(xD=ljpE+s?|WXQBLO@f5-wy1}dR zJLA!=D4G0@h9)^yRV|4EO9x#)aByY{;Kbp!;^E37U|HP506CB}58n>`Om12Jf6m8Q9=1RB4YV|KW}9O^66+&3Q=w}@HD+0Os@ zniMUq=00OY`bFqsJ1=4N`-oU~e-ho%?)Q;FLe8-_tcb7u?yt5|%h&#GY|zWjD1YRA zRW}F%fkL(|4Wf1A3HyHQ#iD$>rc#dQ7wd__ffKmi<&@@wHa%rdx?w#05H0A`!S+}l zx5uuwU?dd2>-TRB5@Km5{4HEuoFst<2CT?AZ5IPYh{15+gHZIY)bm;1!#;me`L}`8 zH!GDd-FgIda_7{t);V<-dn7`Rd%X3Dlz+3z1dsRjaO1-$)_h!W>c+5|D*u$l&^I-8 zQEf{R6O651sF;-JqgQJ~pHQ(qOTc(%qzwAEVw{!}aQ!Mff|0?RFfU^Wt1E-wF&jNd zMf5C1#K`gTaK#1wyFeg-O2c?VZ91qh2Qm^J?ORGzf|+p#^;v0CMT_&KKF+YzGXxP7 z2yB~acweN^ts3^~=GJ+sR$sRHK@^ph(sXn!1Z=9z&mcL=23?LvP4su9vA02@Z_L~D>z5W;GjBsBg zq%CPi^F3$O94qbuU`)E(fg0rz5KeC-0ftkdK{c2dD9UUr==Q|85hT#iiFfDM$FitblcuH zN&RhBO=t}wRlFG)>spGAF3j&4Rniz^(+pSF)^=)SXlZkW9AQMLAXDT@l2S5ae)CyQ zvX;YFmIu6`?=)3)WdcZtYOH!Gn4~MohEVAGVKr{h>HDBzNN8&5(EYDMfyUP7O*r}` zja~RNlo1#~ri~THW!|PuC{<#m89mziP_6yF`Xvrom>5?`FZ>VFzvYr4{{p_gprxhF z#Pw}EtB{oKm?SG2*)Ta9(`dAHQ#5n8&C^|}gmJn#-`iel51iR!%<)rm=#|HH-Tc|P z*y?*Usbxg-{JFZa8ykZFAs+Vkumpg*D|T<&lgHYZ?BhZ*_!?B8{=6u~4Td5!jE{Yy zj~x2t-0F9AEL0W&md(Mfjpz^+Q5REEvI+sMJ~it^tdLCafgAxT7<-J5M&@@6J)tzK zFwV?}N{5aPYl%Fo+bVt(67OEC?Va!)UBqt&B$K#^60|JcqcTvU>$k20%L%I7CR|Rx zj3QPl4LTmT6Pzy*Y`K`kTK06hP3Qilq5z3oLy1E1Y^o}|DH`<~pZoPk6cB~S*flbO zB`GO+34%akW@gOIK|2)ys4hLH;{^&s+1~>n0veN}i;9Z;ZZo*e64TN&JszqphDJ-Y zI4`fSa}8U48m=}oH@0`wK*UOBSBW9wObhXxUsxFX@)D_$N8wEr>C2ZdH(VWC&oo;u z7JZL*QhlyA(s2j~!c@er@^_s*7rl$JCaPHWn-9d$sl><+T2A7#IOJLqWU2h|dwY8= z5(fJFJEp75Hk|P)IO7LELKxi75f5xDeU%k5`|S;@cT3MV-dC?))oO-lmu>zn%8>#1 zU}a?`I3t62rdo@Ig9Gzr1ZFB<^vzt2b%^-Gt@=Gx3T77WMbrb<(HVTnBnzVy5$je% zW8=U>rgRM9n_{IF87MTg#i%9TOO&?y`Re=?0VmAT63VmvuKF##2gG_b$sk6gS3+P7 z`0zJ0A56I)Zv31Lc3Fqpk9Yng64S6V^er~Im!OB3maXH^$$XYgpqy@WEh6V*mjZK} zz01+E-?TGYWhN_ltsC09zHUxZE+2KsBx4$L1A@Ba_L&dKIJA=KpqI!fWkp(XhOVmz z#A%Zk>AnZ)l_uSYu~g!eDk4Xre*0%rMhPU(-|C+VaPy6Jg`pkIIkpc7dG5`I$x?df z5B{*2{Pu>YA-YUJhITYcff*;G$M+U|$HI#ME(sBfQlI8?lo0#Y0o?MXj z<=@?z?;G|w_iZ54{`@3NgoH`nk^kzw(}?JW@vo13#{t~TP1?Gu@CweiR9?$4A`iDG zZvs@H=5)~~L6Ky^*JZDX$58_JS+CaI%%`|&S@UKKU&mQkSVWohx%hqo*luIFGsML= z$$D|Jeb?yr;H1~R>R_mo!06&vA(40m;`RAn$?3nzlHIx)J53Q0krZyTzLY%$dHLi6 ze*kRX1Ex*-k&7jE@NZ!ttIdgt9jVjmA2enZRMnkZgvF2xh#Eo z8Bwl%V&J(@fKI}b-_O2fgS-1Y+?aSg9UfX7k>-ZKvE?9JAy8wOl$$QuQMb*yfSjg77LM?gS`2Arqb zd94pMfr8&5i^pYM&fB2H17I=M`Gd-@I4v8C=?}?wWp2u^XgH`^B;1uxlDLdz4ikbj?X=YiI0|vQM`9dd{FSXB!dZ zHfxY49P_39@!TGzA&!%o+0d0IukY`d^EP4z$>`6g@?F02I>fPD%PMX29qX$HtT8pM z>%gPSwS+YQYhR9Ji*nn~^3KS63Fb~})aXWQP99e<>%uD-skgKrA2gp%<0jp)*xxmO zwMRZBzg=+>K!##)KGS><40qWwtRdGuCT&7HzUlEVW>;1wAi5&l3Q1jJbU>pOiFyM- zO3t=?%WLaMybFGZdF|{XMutVg5!<;s_UPznjw|<}Kny+A8RxGK{;92f8=Ix2${4E; zQlZ@x!X6sPQSXrL-)(0TurA&n{h-pWG7Z~Z^anJ-LMzas#};+hBGo!=OJ$qM%E4jAtLe!t2VX3#x@qD_bO zkPhXBDTTH#wko_$HEIv=FZ)BSJ5y&rr)jbjRp(-UY|Tci@6!*q2R(T#vSz?yGFj$Ti$Pj5fa)MK#(lmq(^!{7! zajjT24tr^~jeq}G(&6wI{(yb@e&LI0WwbWlwN0(n7%Yg_-62?FOmO9wq^6%kt@!Y6 zcHV7YQ;7Q1kVmn}XvFYU_DWC!n6G;X&)uYV`w)546GS=Y&k37Ft!v%OeRFrQl=Sf< zi{3*|u_L#fH2N)eh;q+Eh1Vhyl^?Yu8m(OP+WpVxBmEtZPihfoNI^Z8Py3SXjahG< zKd;v$XU-ygznPNchK#?#E3-DmFGuz@b*mK6dL4?+y%1$(fJekl`^HTn+QA6t*6KaRMJMP@Tvw^uNND)831Y?9k?QN#_9HDy=2 z;b1(2X4(wHX?tJxC{ifI@88!V^P$3w7c%g!&i8rL_c>52qAx13n1o-dPKhHch5WDG z1m9_8Z86K>qnUo%WmYfjr`EX^!C~sH;d36Ny9GL07wr#6JhzgT9SN^Y(;^fFufEfTi?eic7+0eel*DRyFz?ymZ#6|h zn3_II6RiV~!71CKIay$6q%W_BQ^BWK9308J?e^-Tg0BJYUPO)OI8g4UM4bPl9g!Yn zfa8&s^pCU~Z@fRby}R4cEIo7<%th1I=h$#D=q6GQbSayb!hq&WI@7~RDEqogD1RZL z5i8#&9vo|rkA+Fxl`;sW;+BBg*S&_rv93orteAi6GBl7wLDd`tU~~-|Cxx6STSY+X zYo34UK)*_OR8ZxHhU@P)u4*Lwz6k&G7WjUn1^1+=*6iM11x6Um4%+8LUhm#dLI4n> zrDYdhf^Fa_TEA@%NIHAN5%~`mjvByXO`Wo!MPzBq4$i-EG^F>}HO7$Nu!s_BsoI{J zrNfd?D9h+hurur7#2HyqB*YE*EG#GD`|KN43S*$^JR+h-kKHiM3Pbj8-M4SwhRqQf z8v6XDC-}xdn_F^p5tTfUb0Z7jAnGK}Fr3vI8)1w-3@tM=3Jnd-_Chm1IwG81ZxWp> zOKBdHW+^o-t*{A)6i%#mAe++S`c>d;C!qvco!5~muk|?m-Oa_1V%5BL&3VEbdud~1 z>USX_LmcU7K|kUtUgn7TFaP@&{ijUNY-2E$Nc1hpnGFEKECa>J=j`9gmk3HJW#s{* z!VN71>&b7aexE=FacMQ8&HY%359b(>=cFtyKx9GPF+pNac3EsdFo{zKnPtK`-fvjL zWQtZZdHC?$a{V5Fua&wvhmh7v-LmS%&!4I7W~vc%baXNVoK3@itZ#0bj((QhUThTx z@i06k1-~)vAQT0UEAZa$Dgy{xnCeB!y%AIak${Pt0=dHLuoLMK2ZGeBRp2QLHIGQX zfD2oyh^l)i6bA3YY|ye@Vqo&*Ry@uG zQX{#V)gBres<6l@W$fqI;-}vpaA$M36H~q^=(?#f&8WM#-?)`6Z+mup%+kEKrFFG? z6oE-0Wo2chbBPC4SPDz{JNo4%__xpbF0&q1Z(}%ZO16MAEI=pk%K{31zJ2cJH*GHo z)nFI;M1Ix0t**kEC}3n{^gC?a z6-NAK_jylGk4D2t8e$(d&P>dttlCDMdIpu>g5X_D8W&`intQhX1(hXQ&u5G=8y%sK zI@2xQC(;QxTh~#pFbaAw01`o34HEzsm_cCE#a77{i2~rNtT9mkAetLjZDLLpm*m*i;W@Z*#IAywgpHO9D z5jg_yKUrPjt&C(B2GM*|w7-qTR>kn2rIMSE`Vr00F?;Ue$NLShrssbH^b5sM5$?$t z_6m3@DAc2n2}__^%W%OYt|M=SNM%79gtyVYs7g=vLLVAh+Bo@n1npk}C6{zKXQQno zaGwc}$R7h*83qKVa$y#>bJ4+y^zdN5B%k8ZOn{P-L#ii8gDF?eI0V<=1z$WxzcTDK zv5|Vner25mfA&L>&eM~+&in9*Iq|T)C`hRc)d-0-QBPr&6@=A2)h?XfgD{zZeX!|R zOd!u_X~(r8^A`5Ol)qqqmxpUSxe@tQFx0EJ?UcV}?n*2`lP@ILEVp)c^vbrfgxuxh z7w3Sm$yX8+Nv_~*}E<4knSM0fYlCzso~~#U-G{lL!qOJ((!qURlx6 zs!jO3Bx?Q#ky&HsNA6WNoDzFJQ3yU zGDnvMHU|aVXA14K?D%`%b7OBGA-mx8bfTv~3Dog+)0kD^gBH3eo^q`UN=pAzReU0% zbWsL6Iykc*@nJbRRDcybPbl%P05VHdTf=VDMqZ{{`>v>n(V^u?hD3~0mhH>MBLbeW z%n566Z!bODNH;1!%=r0J@loYI7L7#ctN@ZXpjt({0nV*~5BJBSF*m}V`>}g-^=3e) zYXDJeLu$2v{YycGfwp!e5Wh)5JPVD8Kr%HoU0)l*J78vGQ*2w(b8IEp8cw}cYs)Ir ztIq}fb8>f=c5`zp==242ZF{zsRbO9!{U`t=UXvG@L;Ll*WsisG;|qIKetv$p?NOK* zLiVQBDF#}k$}L%ZDnl4g{LjKgfny?w62g^Ce6?MF7E5(&Q5lu966Y$~uI0n2oSCU` zrHiit`>e8_V3-*f^g3KdrQzn}R0;2QY`a1Pr=|DrM3F^*6YkL&6nU=N0&US}hkeGU z(Pd+>`bIXEI2goyHiIU7VUJx2pf+$BcR=!Uu;u{MN;8-T&dd9Y7>SMb^-xMtALBoz zIz0Gkb)jj0o||;RUx^X2X$OJ*GFU+aYinIhP#a6euPmmV)y@dJX{gh{(T4_ zwj^La(%d5}y;p9;T{mMz91NP=k~-aovjl-3z{%25ha3phf4t`R-6#wpaX& z9mgC$V3-@g{79ZkpcG|ESOGrE;J%82g8KaYd`cJ^(cs+4=CAh&f&sT)GiGAf+jR6y zOxx851&&K?@)d@yEW1171u@5fC=ToZEUperhtzlP-k~O-U}0&AU9IDJFANPSd=L)| zD5&84cYJj8wUQICQ*L7PL6D|dcB#0GgLu4;&At5riyj2LoOPZv{zq8Fo9yBupa&7O zxMRdUwQCOoI-g1$i>#mc2b^8Z3Zx$wnBh9wT*v5`+{MXymyaM{vsn!WCS5!|Un%niuq7?(rKi?`b+CR0RG>~P-a&_P zwcJbr9v-ztEqS-p@Q4U4FN`r4#!|g{We>9S>-G04=0l%G!8cHAQv$QC=<(QXS9em= zb8(B6NP~Y`j@|X;S~z2R-vK`s^+vkh>F*TIfr8sj+7zI|Ypw8PRR@q>nWZm(knsLF3On1ICa=6aTvI7-56<;q*?@3!ICq>#;Trbhx> zo#{1OV_j`~(FM_xZz)7>&dsdz+a~B~jIqJ3MOkf)Ji!~n+d{`pGMfuvdFhasdHK}< zbp~KwGJ?&2(Qi~$4~^O>8#lU=n++2tRaKqFh5P61kD$xTF==znz z8ydvt8jOi)xLY@$M13{uB%=S?b4b^0M#TsiIe?AypFBT2JX~E{Au^WCa2}=E2h>(0 z5aKTM7B_!oa_W_M#ao53F)=aOBD5R|t^(C<>A{?f!yaM2(jqKg13?inpb5 zzBhM)DjN|={>ot-hg=>X=5<23(%mFSgk6wXJ~C46r1>}Odw6GGTaR{M@95!rly?U;?3R|BDxnZ zG~*WuLO7vAnba~2G5dzx#nR~LSHRfhoV#O<)Re>d*W)bYbx3`Gd!ll6draxQj&t>J zI&GG)a=6lc337sYOu=^FpPe%v@8Ryd5f6B?N;;|UUgES)(NhGqQDc1@MmIot?@eJ= zH>W0$)QnXo?9@<1dkMv4vF3M+Mrd@Bju|@jNUYoLk;ATysnlY4j{+3C>Rv@fB(?1A zZ+K4yTeamRbyJX865;z^zf3$gavcUzEIE}Y{*BvBk#*;KM+2`JQ!{?Da-b+co7t)L9= z1_b+&_5uWj^j54@$ss|w9_r=qZb?Ty*ZEjtv0hv~+#z_t_A{EYJWg0EgE8e1umDp) zl|H5BotlHYeX6lMK@9Qw3s{^drwO5&^=sYuHV1Q1n;zqQR)3UO?#O6US?H z0f8kCPOda?=)DTef_&t~fw;Q5ZfFow0RU2P5yLF}2z-GgtED`+1IUnM2;x9eRBcp9 zX%x$k9E@CBPVqYP@vFOQkVIVqYQ_h`9}QH&i%ctK zeAiBcvT?!Pp7oC0u%t+*G18u{FojJVRrV_UZb6HL7G3;#5@o~)`;#xEPSX%CLDPNi zD)@};b9VYoxag>;&O)V34iX3&8rnv|t%y`Qt=R7#pK8-rT%8LGpBR^LKQaC>Q&v(+ z6(=%f7Nc!KOup#0Vuu#42Fv`K1LYbs#7g&@1c0lt2W&*m6)3s9Ri?_=95tAGtv$V)4^A5j#G91TvVuR;?eJv6a;}Jr$?ebPx6W zjt&Wc)TUHZq34}I9t)SCZF*6yuG0N-%mnMBnSMsa>_%eTm^p;a{(}PW{9wvb8Yl<| z+y}NA8yfl*+@to5v$p^;cK@3bzIG&Kf>eWb)Un3#@wTC8XmmYi$#hQ@2lkOpq5@xv z*Xd$^;Z0c_C?t8Y8#^SyF^@fyV*4=OOMb5ME-Q-R~~t9TAj1$R9p@*q$sQ0?ZsyOG}HOgn^c}$wzueykqFA(VFm``}Xfkq1quD zvV3&`GTXQ)2QzMe#s5kYK->g+i2TDU=H-uy9=mRTuiFA0a{E9SJn?pldW1)@q~spm z8(&zNH^MV!A3acmSqT#skP8>{5_Qq4o>{UlU}tg!Kkf72$mh-SNI`C^5bP%SC-#7p z+;pTjuUiR^)A!wKLLzgkek}Dr5`vUFcSTSrVBa0F80^IDf&=@FT<@{SjXZ1;_8|7| z_?xRXQEdqgS>MyiVp2=!=>3>L-b-MTL;+ZY9r2R}6T&1=EA4Qhllet`4e~g^|DLAi ziMLOi!{bN-9AHq>&H9P6V0LBHs5_vA2mwuHM&PM;vaeIn9_H7Mzj=D`Kfde7)4L$0 zmLA;@)?tFLN=2hl>uqvDr24`7`XD`6JHdr+i@$LuR}r8Y{svqdurrdUUe`IvI)Wd zCgcGFs-9-P=JxnsvYaWGdfLRCe-SS+z?=a(5SX@^ulXTl%Oyk7pJ|A`+&h5MIFHb$ zek*U}%rewli`jpf`1_k9Vi);oML!+O&8fQ-m{@}9GvV&X^)OF}KE_t_QZp>0nlS*N zX_)J&*)Os0=S)Hg2BJB2WuV`{>qwrKR5-=O>-~JTQ*>y0=6A44pPm?K^~@Y5VO)AotsnDgg=a_jWUzt$yI0RE7 zuE*z@=a1>LpYKchEdP3J9f+SGwZw;J-4po7`W_|7K26!v0Wg?T}?YnkPk?IDl72oiHHn%_i#0uU(<$Q_0R#!^`M5& zJ1G9F;#vj_oYV#TqtUA-KsPRd_BZH27WYy78Q7CA)mAZSu?3klvalBm9~UWP)Nd9i zm{UMNdyfZsdFa=#DV(4+9HDHh7>plVsUFhT(_?&pdleZQ3kAiN0Kmlq$ZQ5Qu*2iyrtPD!u&`sb zL35r-=Uz|;%Ga!HIcTqukpqSWH|7Ru`CFJdSPshH3=z8k7c*Pw3L^%Fm~=vpplcy| z6nLe3r@nq{o~0TL@hJ08Eih-nR&Ah|1Bij(m&=z&YpILkfC!pfSfm;})^oIgdXDk< z38WXMnfGFTTh|O95xl^$6U0XBZ~;F~t34<{+0^i9kBLEhEOpZdvrwM;+iY$*|9eOG zB!W+?^3zL%AYyl?6WZV3VkmzS3X3D-U;U%!7}jar0bKA&4v;*NV^V^*RS(5HWW)+Q znAeSY{V|QDq~4)FqTrWz*Jop(Ji%_UMaPhlmR4=9Je2JjEd(TmNsch`*h0AFcL->| zIf6kBRx5mGnkDxuX)4b~00LFTFCF*^1*2=6B~WEn@_Y(f-_+-{metpqy?T5pU_}gU zPDzKxC&mItDA`n0D$cI^+x|N@pKr}I zXJ2;>d?^D1+gi}$?YpWC5Cm~GJ^A{Ilb@SZ41PzpGu6OFZ#sI z66S^Y{_5s!J$USA&13!#$tclMS-j_CFC#2@=G*rk0@m9uwAZxrTf0_njv%2azN}nH zHlNQYJy_V$&Ivp^IJgb?QH9yM-bYmabKgiPf&Ec*d|`aF+G{nQkMdSI8-YBnOj{C0GuWAqVH0NQ=bxgH1J<%39@jc0wZ{3iQ)F zqo+?b;P*jTMi>gYth8dPBadufUyHQkft-V)U%fiJ&YvHib6X7J1Do(eU?Vn=iD{ob z%inEs?M}O#n+hDs&s;CQw5R=jTKx+ax-_PfmT+GT+gUd>J^HdKk(V6f$uA+z>9kB>)XxMDH(zqVR)e6 z0~5yd_VNh09B@EfqYn8@{D+c)!k=9p7){k=^$Q+kgdCSJFR?^mi593Lc^jqB5pdW; zXaNI@vU#t}Okrji166ldR73|gtPGs1HW;xr$6Au; zC1g#b5{RMMlNxNo1q*WSS0zSRaUXyUr-!h5;@ezo5dZS|Oy^d8cR2z%F>xetuw~0Q zD^Lha-pz?EM*3S;8xxmxEA0uqi;e8p+!OjlQ%})-3u@YVC29+np|%>p3Y)w>{%Ab9 zGb&!))*^OSAJWgvTVeoUje*qW*VfVQ=y;Phkc>$?YJ(`|>FzS=elAg1Dj{UtO{s#I zPn#>BpCuUP7?a)MkRCBAHvMMLMGjbv6j>$jVJ0GKlcw6|olql^6`zs-QRLEhc?b2l z&co9~kVVHq62#c1B8kkLg&%N*HM;f|FV%e0cZZELMvtE}`>ftNK=tv}osjMA>JiwO z2Q0@Mw$SG9Fv6=ml~zC6W8(2}lCEzjJO|3YIP-%H7-tM|a~nVkYDHUayg^euFyu-9 z{j(qPzUcvMwF19@`GRt!dHHD_8p9{B3X}$Z80T* zjf#}>XS^s4c|ZIP|B_CiCJf|187_!T=VuadW8r#w^0Lx3dA`=k7q+giu*3j3F`FOa z%hKoIM?6OVUR5c&hb&p^E-&G4b4wc9x49zrL6HV_9xI7yzrWd71*YwOa-FErgh8q4H2kabQYmU$|+|TJO~9hC9)??CEwrP9XACIi2-m)+65^l z;K=U4s2D6M&$Kk@bEj9pXnh!Q&XON`(A{D<;p@FKg<;l7iY3I1wJ^vk)!qUepo`f8q6~$?{NeW#_f+ySX$BWE6dV1eJ4p z>WcQ`8_BF8W{s!bF!v7!Nso1kwlssx-3JD%y0it!;i6`x#L_0rwWuT-ca1Seeny+y zM03AQnR!DjgdY&zH}>+eBcSP+EYTpEgTa#UQ#`Mey1LOF>gM1Fv6NB|cPR8@dZ0%)t$@(b29?4yJ)HV8lwS`RohWvUHFsU_Gs9ceD3}7n?_RG>jO^<1Pf4Si(?f zK20qCqWmI>zkSYyG*cz*)g$}Z# zlMJLb$}NfZq#eHK>cxms({$Ae)C$;aJ73PBdVtv<}5q&MgsVV{lp*+NTz2C5&}2)~nf z=6sBH4i_I~|7`#!GLIPYHMcAWhRXAY`BFQM;SwD4Oqkc-tveenX>)ZpLNws&$591b zN;>q~=YES8tt8?9_rfICnOpaTIU4oX5MW~QG{L4x36y0A3*NbNZM$FkJK_c`bl1L% z3I#IaV?7oqPZgJmBc-ojt(#WSAh1T#9N0st_uwLqdz_74h#Y}?3zC&PnlZaf&+Lyw z^8@3?n_l`G?40Z(u=d|@X%6Cr_a&sHdcEg>zd?8L9A52BL)Hviy*CZ_<9Y#}K$L^# zHG~x8NSsI#5%GOVR)dbpoG9aH8msxWdEGYynj{t|{{fzg2#mDq^6tNQpWsd>Ow#qiw))~q;?Z1j;{wq>R zOie{_baWI*3Ek^R4}p}B{GDnI3wYoS{@M{6an0L}7NYmnfMSd<-E{EB0G_OgP%W8W zOs4U#0TFVcPqC_tzK3Z$>Dq7qzB}rDKS&wau@T_4jXLB&)Q$YUic+zSePz6X6;|); z9e2(1TDJW|4qn4itgGnfr<_^gF)^95^w!A(N#gA#k&INYH%O(2ykV+bP;aM{ zd$Y(0O;0NXFWvTDx!Gq$8+8IAjsHHNw_pJ-qwW zag-|2N|-UTP3KolkI}ZTtbGl2481%|Cz`2v{^4r6(GtrAlTG&ZpbwPwX1Q#r;*j_` zx||1Q_b>z2GDO#Ob|Rsxk&D7%(=Pu5s_G2q$dcA=$lE0Q#I&rS*nB)7o=}MW^&OQF z43}xDss5p3+_4B_l;=M}<5Edr-F<%HAY1d7(+=GqTePn=&qMH|h0E#40gExXuJ-W~ zaZm|P>@Qr#a0jUvr2ef)uxONEq{D8+0o5*|C7lW#{f%)I%QQt!aERVR@X(R?7&QFQO&`ej_^OP`u|-9Zr8d(KouM@0bV#s_uL?s z7_DB4k$LBJH;Q(^GrR|KWl0|goK1l{B7Ty(fgASGwNfo%re8?Z4HMYJWFGLR1l@WT zc|l>v?LrEHh=lCAp>qz+d)0hVTNHA8%c;ddV0lYz!`Ka z*Sf*?r#<^56q|U(&7_9TCGLy5Pl=awUcFf;7j<|8-*n~NOXPC$#qG%~_UWw=k=;_GQnwKPS30^kwG^|-Of8SPMZSS@H zT&1XT=d8}oVb^jRF$F%B|AgT#p$E47yiDV-;w7NsL{204@$pWDvLS{&+fShj?XCZn zPvyC`wGidCA)`Em5IbVa(MRQmbVQF+=TdD zo=oobdw=szHmT7O;U9g4ES3eosoMv7&wn&U+ON*`f|d|vX_<0s!subopZ#8UH(pub^sICkc-4vtcl)b160^IMem4xvSqJa;&^|tkt_VSqWh};2Gvuq^S;i z6TDgceJQ;K=56kFTZMEQInkyeWU=*u zum(FOHt8~ahc}B*#mfL9T|{4#nI3@1^1KTQmj`4d7^r zNq~ZzNsgg&o#p2vA&l}K1ZWl29gcv?fbWbyL558gZ)C?%oG@XmH3 z8=1SQ1BVagu!AfizK`s|_8rVk&Px??2w{9!f$mr-Tt0#O9M9|rzWYzcgN>y|m6nWxH z@7|fRIyg|hoALBqU$65hbc=qE7D%sQ8U6knd~0Z|Uk@Wa-3w-d=5Yh3b-Ncozy3H9 zFG~L$@~*f`<%w9^s5hRC1*cObi@$WVih*p zy3Wm(d2a8LCwTff{CL*5ONTLf;qqimB<5tEX1pvgz*ZCzJvvpOK;(D15^-ENX(MfA z#q?M@^;n;;AAji_N*5s@B-ik!2?*t#b zd;14}$$DrC9apO*xpJULe|S}C&e)ykO1STB`FbfU^tAyhtQ!Mc^=aos@7jhfu}L4y zlyh~`LFP6+a)MP<@oS??0Ua15`<0UNT3Pj~;~USz>SGjiA%w89gV3QpS4haFu#4T| zOhY$vHc^OaZ_sU#a>v}9%3d<>NY9Alo(BvO0f7l9Rm>3ac9{_a>=gL(rl9aYRjjD8 z^0nb$Al#UDmF-x--pk9m3K$0wev~EqV10(2NfY}STy1qtg@MMjnO73ZsEO~<*9&32 zw~U8Jq*NUk*t~TrfkwJ1m4)6yNk+DqFfaAo?TW37I@IzNye+Dr9Asao2Bk)=hf|U~Re<>$HKGn9;W-T?rvI&~|CX$FYq;*BV1xBd7@G@cS z>LZn|?{CIjv3FDfD4hPQ@mlQPmtCA_P=6sfHSQ>MbaZOf*qL-EGSvPB9qLhbeTQx|H^6!*_l{I(_7 zjN_Q2#ZRgtjE8DaxE5xdetAfj>7a)m(LCJ3n8m104Chsd?+Vtzms3P9-v=D;1)>?R zzFPCp-JF|bW6_+JaKVDEk=HI9gkQWRIk#$?DpjPMkHAGuEs;Hxl9i=z(%wKp zu7CAvlY@ifSSo#a0=prQ89+`a<>~ONz7LlY;;;{*K4^V@RRlQ+ap9nJxlTqt#yv&F z5mwm|ag~2)e{McfuZs7W&n`yk$FTZW?c9b{yDITbj)idE%l@La@@BFF;vXF)0Zd*0 zeCd9VC=KIG^^af}_|3mw8j|L)^|*3no71f3EIn3ZClomuw95h|u(^`d8zV4&mw)cl zGjJJd1|!1C4JRO2ilh%r**UgBu7*G6_6|FxzHilT46bZuRZn z)6adGA?z5Jq&6KS;yzROOPyF*$)%XV6&xZ_F5@g#c`9hUrFFb1lZ}T`wX5#j%V&VL5=xLZ>{WVsRPB$bjlH`QRfo|!R{jM`m;X>E zMuL;~)IFpPb0mii+#gMOsC}K87xdL5iZ8@5=R1zIpfu1BAV#r&;Vmue+GdmO(F|qN zyB$qqY*l(h9xTIddPZhG{!~0YJKG3q6neY5Rqvq(c`QG|1K<)SU`OOJ5oSE!|p!pC$c)GvdX#!z8AW4 z%ayn+GIF1l;2ckF45?IVktM*rl}!I7+I3L>_>(~s_RBXM_J34y`=Rzrijr&ZUiM$D z(R%e zJf(0dAy+rDxF_RP+jTuUv|?wnd@un}GoqkA!wu0IS-S@m>dkV+gNi#~ht z6XZerdWaf@^BE#yJBC3-bMO*FE|(ScEtW5xm?+i7ueoTwS%j5>FMHVAd*A*~ZD$!( zWzfERKuJlJZjh2jrKD2@L8MU{5drCz2I&wYak z=d9x=SUgTVGtbQ2GuQQ-vBzelAq}Cu8=QZBuJe^xFXGBS_vPUwC>~ERY2GIkexoBw zw7|JD9m1e0HgFT?k{%}0&4K7$`p3yNrBhZfUDxXi zNjYWLb<0C-5A)m@jH&G`z3y+_b;}F^0E^=B_R-`}bO`c&;(7_-x?W-ld zHpcQHR{v21wgi&Ya7pYkc`{{!v~6SG>GZC~7n|$kzgu=ZvOi{RkF0a{BlL$$j>Gb_ zkcEcPPwiE<-RV5U1w8iruMN8vT!T&UQp`64i{eL|IoUCA4d{uoJklwqZe88n zJEpc0pfdf{Ns~98>YMyLjD((^_Xok+aG_yO{m2HrZ$Jaua~HH~4$_UsX)U@3IC-UI zZEx2SMvNn+)NDGPsL)e-Df&u2S!pZJw}T8wOWjiwYiq|@oj1KXY2D>)n9M1g`f_O`hR7a@jOCUMW&j4;(6}6Tq_yT zs4mH{y{kAw)=%ISRMpfjLSKn&pC$7_>$lXSu56_`$R^lSLUbWk+J$ zVV(N0gH-uQ0SjT8ZJXTNuIN;b3QFfg$hUT*+xaJoNDi-T1dq>uKzH4~B=6i*=JR?Y zsk(2icuutX;)Fo?wignJh*_~*c=2Jz# z!{qlFhR0YTxN3c!9E5%~%5rYx=$MLrUW&XPXVqzR!gE99=HdP(;iO(yU0S}31kxwu zH%ll{^qP}0uxH{<^q3ZR|HQ|RV`cw-UU^)h>x*q;ITuaWvzqQ2egyrc)>U?#_NL%bj=nteCp5;-Z|83U%ggb(;JE9z zUBo57URR?9FPFC867c{XOoOqk4|xp2l(T}BEUe_pRzngV`uFz@?P+lB@ry zr6BzIcI)$m58Ww(QVo~f?b_(9swNWHK3kCFzAVGrSIGM2?I2)YTt*d>QLIB+huju& zV{vBs=uDPm>p}D_$=)(?aZ4apwZ&DXv%018ypl+o@#EX}p(NyC51QK@B!R|(QVao| zD1Pt{bJOW}T&-D4jN+B|40;#I7z_LG*#hWP6vRIgh*pVG5-+TWVM!F=Y&*+dG8B@- za%b!qZ{ycuWX$nz{qE^0xvDD`S*Vuh>h}v-E@h-t-tAyf>wStt>ss&29P~TnV~Om# zL-tkFmvSY^T2V8RDI9Mvo}8&hU^`fKe4Nd+r+IQY{A+B)gdpy3m zcdjo{{gwVS)<&$40dX_Nxqp?QwF?U|)7|}}=0UfuMv8&qcWo}8WtP_GpPy&|vexagx z9ycDRa0zr1*?Oo(%2xK`CD$o=$X{YQ7RlYP<{}eZg^AG z=Fi%d{$_OVSBGR{^RRtl$A9?^OK1Ipvx0w*_RH%D{cVe?P&ZO@!Vx{i#*045fP~wu zD;UP(aB~p>w(aB4`Lf3@iu>4=h&rq-h_^PN-@-sv?UhYy9?&1;$s89ExjPpcFYN`B z+YD~VTne4Pf~<6_zNgPi(&W2|KFWI+W7c@|^a~1rbTP#8LM4{-N%4c7T=^>KhE9c;$L=3qrEBE;@Z=Xy==|)4No2aYo1|zwFoAmuBy&SU(B+mLR+k z+C(4Fev$u0=g9q;T`x)K^q#e_GUSQx-;574><&XcG2{B)0goEI-$2C&sV;h)Wk66= z>&?WoK3VCFb5=C6TWk6XbN9>m^J9lkk1u*gc^ImFET7plLgwzQBR!VdbSFZB8QA`RFw=x1mFMryBbRRB1&o zn(0n~3Rc~#=hy#=&J3iKkL)fzFH+nUOnEyVqu(-PavL_N)$&p5L4+PD=}P#YdtJV1B?7-XbIf&VYj$LFfUKLV z-|aM2u2!TsY!GAE`4(Sq)pgrDVQ zj8`Q!ss(r?+bu+r9rb;2nJk`*wSG0ciELq*2o5dnXTZ*GE|J{Gq zQ@q-7f5LH}d%^3i?}w>Sd1h7r;k4 z9A|zhZL5p3aHa{Ho~w3!aWT_UTu$S7vM%6Yz2&FNdf%^h?El1X+6BkV|Drca;?qcl z2m(C+M73WHR95k^($Um)vBdG7*Y}c3w$Daf+?IFscj^IRG6M(8jR^U04I;mUIi}m^ zi{@fB%Q&V7?dvXQGKid?PUJ;6o=RSyckw~y< zJDcq9$M-2$cG{IVZ`O!-vd(EMIkI(G;qOb1!bC#+cf$6FmC2@BpVWYRtGE+OWf%v0 zGaZHwp6>~LZR@tN;PnTC6?_i(PeF&CFyoA}ZawE?=20=|!j`f>{;*&+K}mrF z!Z$;&x&4)F_Q0B&9F6LEy-FL}t5>gXjn`a4GB7^gIR2zc)+}?<{m+s8Q4i1Ip+(if zCHK=u$V*%M`|9~*h#JJGq%(^8;IuM;dv5LO(M`h$^xo~ zA1r`%#~ZaMXVA^dbyq^AnNSp)#J;{hQBPNJu4w-GO-oC`UP$ym^?DEE-_z>fyLWGN zZ_eb_hQS;3*tsx@O1JMm*|M3@xk|y61yYF%uXm0{>unn+1D5<_1(&bCdY4>^_gG!s z9u7jfB|htxn%lY5BNwK?CYc5VMgax|g#;&cjZDl(fsJ{2TyCl7jf_ltq`LWFA*+{B zN)0xMjxhLYreye38eIWUXOehrg^l!&ANP$6#&i1)`wCa8ey?G`@{IGIz+dmjP{R7$ zn5Mq9&2*=Y=Ik;6U5<@6g&q~0NQ zl?$MY&$r74b{jbCu9^3|e=YuMe`cXG771Vnz861lfB{o{Yj?i0L2iGea#tLE?RPnW zNfUm-{tGU}{M1vb~#xT?+$ z1K0eg{)iJNV@1@kZocbC5E&5hb&gyjCMMB*STP#G`awvWBApv+Y2b&Dam&!sj4^j( za>5t4)3Xo#Y<1q{2C`0c;e_WuJL^=PS6w;}X|CYm*=;olWvI^zerloqhC4n(OY9jr zEj~&G#**?;l$oJ|U*_&$54BfKT~u+(uNWi3*7KfezsPpZ&76j@&bl5l&LJN$gP;ab zYEf2xe~x7CL4_y?QIdb|MDmBN$?LjA;q=s@Q`{JD46U0^3MHC`daQEysI=dIAGg%p zT07r2QLyCw_}HIBXvQ?qmFiLWW>iN#YKD$kVJulwzcTvP5?S+4-Ckq-@VmDBYZ;#g(#H_qf}E<2FAUF9HA z+q3TIs@aj7NH966UcHfWetKOQ)BLh1sgWM9&{N471!3wvO%H-%+s=Yp!dt68{FtfC ziuNr(SG7SCy{&`NM2%)NzXK;R9?1pT|A?+)Eo+9xUA@zGXN2pR|Q;B|5)XbLFM8l%x08oWdtFC0PsZ&x)@?-$QSx5-^rlPK zuoY&`k8TI_H{MEFHiUv%IWk#*R+PwtjXY5DggHz-n%Q_!5l8s!8kOFUbmM&@sb{7V zP9`c+v?&(vA|-^TLON!;p5TR+MRCKRWZn83MW63aly}_^Lt8{p}mmq%~PLBH_;N(mzYH zJ!{&3_eizTNMgu}uOxLeg*>X{6r~dH<+U{vX=rfb+~16fGDk8q{p5p{6!!Ih-Q8|j z`-FtNQd?1;abQrhd<=|PUZ@gV=5_`?%`I=1KsjD3Ebl-?U!qFzs3G|-TV=~73_CGa zELg6@R{A_tQm+;O(LA*(1{g^zFJDdz$YO)xSSIV2@%`}%BqIxE>i46bekyaifgjGm)2^0=!*Eedu{d*kNwFuG1XQQCq1-!`BL3EyOpz~D(veA+J z_hYUaf#LhO4xZ_Eumd`=I1}7hd)(x6!d~EzA@63UMVzu&{ zwea{ql7DAWO-t}6lqdp5dMSr$Z37p-bzns2(}$kEc&mcmVjVsfK{7VN)71fjA`94URi$Kg26e9C)+7w2G$zW9d8(S`2GC++<^IOBq7O- zJ4isXqkxIo2^-D%RTuBU>7~fR38lQeJO#hW$`DBgPH9O9UpEF9klR-mY5+S|8p z`2blfEFv-sbPDZEbLcsUnz=sxMiBD1w}xJedG}7&_#9||_Q3OD2826U>K&#hsvWms z4rc^XIoQ@UJ-h@NQ7$*s;6hu9x%EKsFwV=MpIy zS(g&WcBJ}IB)l3ho;sa5j{A)_7Tk+P-vYn~X>;l$k0%qZ9I%*f1qTrC7(Er02SE<( z=^(5)P~d>emNAo;8<$dj=m4Ja`x(6>koL-~M|a*2@_{8s>~JCWS!KQ!=g(ii)PVU= z;)h>>)Q-Z*-rnAR|MGVMw^%}XaC?c%mhccAozhEMC3!V7q!qZ1%DQYYX4F;1U&E?# zvn2Wj9F@l#DB+)t)Hqwc_5yAFvjhFG@bK`uIM**~-zpSNh{sll5MO7D^TZ*^fcE13 zEgj1xog<5~#UC3OMz9WD%oGgiZ!*bA0(yrCW<-(0;)BD;F%bRh9a5p{UI958Ifsax z$qna?gmD2-!~2q@<)&foH+2kNTE5J_-fmJ~a(y@jw8B{zZ^UpuTU#`8Vix zaF~b$GA9X~U??*>RR|PBZZ3uT7`$MGe0$31hT(8ko z_mvx$6?U}g`oF^OH>EG3!~2C%g9{Tno}66b#U_f}Cw>^E;2+h6)$rn1!kLU{2^rWl zM`5v&l9Iw%tLytzB~Nc?E0aW%TQQvjO43;?mzlO3x@Gy&6v117*Yk5Xin&OssdH}wK>bFSyzFcoz|_3akIww-@wM(NJoF%yc|Xyojt|T! zN)iT~mJVFJafyk+b8{xh<73%wOAoF#xiym)-+=2msFoS!N&{dJZISA)%NT@scrt*u zLE+cCNn^_LSldg0D7zz)IoS#?Crv9q@#7BY{6v&DTsY`$ZL`EhACBE zfVzgP6TarIZJRVC3@+#xECW9*cB$rsWAQTywRi>W?mO@Q%! zrUL{S;S2mkaH!5Z>0EeL5#;8n!{Dy#SH~(HjX=R3UXvSSXXMbfWJ)-KjC*HyckwX( z6CwC|2mOVn+++z2bV|%Z#hO0m@W8ND(9MlCc=_^Wu-)jF0_BZ#543WqD+cU`^<8Iy zciRf1>L5?gMu^`P#NOZeXvuHA$#;tZQir0Ixa|#Uga0pEs|d3%DwIg6xWFE4g|AQN zT>_9^ToGsn!c)zb^g|7P=o5~Da58+^De8|8INKzUR zhs!{R>wEv+Q#CB60q(HaanIBPiue;_Iic**(pzQOtnCh6aU45DvDkEOQd4BNSW$8d zVBNh<*K=b06|cW?t9^X@L%z?=dDkM^YYpGq3=iRc1lQL@D)vu4Vrx(qH=NABj_1@i z*xA-oi#6q_gWC~GV$EG0;`0r)<=oAa>C)t(ZMEfVfY^*$a^{# z!o|4B`b=~^VUNGr_(6IEK6k_u<~~kcku`Wx#6x*5rP=g@hT5ggn8|EcojT+T-tQl& zyul-qfBR$|ECayI)pgt+L79Ql@{xY_749e_4+!c^M@xTMb(`p(gr$Vv97 zMIy-)hAaVH;GkZmqvLu0xKCjF_@S~F3lEdb1@777>C=yOhBUJFT)ZE#V3tmaNfj|! z;ZnI|N(~+--z04mkSd6Tf3OJO14&F_G;iapaw}DGGH8(f+ zDiu|Z*iHxY0|kYk2ZQ55sLKY9UKRcw3C$NyAeUgfdGi6C>$bQEusY*&vUZ&2=*yol z!kQ-}d*h$C{r`Cx33JNDiWK4Cjhw{>(ljFn#~15qfRRQ+>oaq5DhS-3*#mo{k^jjKGLXqLx1=0&^L;PK7lkU?lLv+x!8u2s@cf zInHn>$#nBMe2UA%h4d&4)b~_L`l+cYB%oafc*0@V8UQxczy$ zx12Vo^n+yjS(N1#*a0sLHZgH=ptt^glkelW)XP22i;=#JM>g3EtHcW)0o+a`j0483 h{~xy$rE#AVwYK;$5wOhBzy(cc_vKaO3S^A@{})&XTu=Z2 literal 24776 zcmeFZWl)vT_cnZJq`Mm_X{9?3qN0Q}NTYOjcekh@(x4zpcXxMpcXuN^`{?f|q+Byhva$5cO z9UM0HCY+z_HSEDCk8EFPIzS-U2CyHvT=5(;2t=RfB~((yHFyT@{zV&NOc$#6p~RQz`@1Ejr*`Q&fyyh{+Saa(7-Nqa6$0E zZ!?Vl_woNCYY61(__CL3unD-GJQfiVNgv%F;|Kw}R^XS(+||<~rKpH==5AFH#0^pN zL-nDhr8Q5GghHX8W0R93mzMNRaS`+hL%%ex@Wl*4u06AN#Rxu(aQ(eT7i9o>4Eso;i=crn-T#IWzwblo%y&gX z0U@CleXd*`WL#XOa(&2eNhBns7jNFQ2cZ*>aRlWpOBryhN~8!mfe)dfxjiHh3)_!d zS68mn=8qYZ9PRB#&P?gGZQ4a0HZb14eLGZUrd)xDha1;#1o_=OA&v{*E+TDhZEc<) zt*X-K?e+NaAvsKu#b#P0<@e*9>BY2)fzCBpGsaxhht z9Fv?c@YgTanM#|O_6Xtxkr-2Ug3UsWV)ztcm*CRUXMC1Zw*4{MmDZFsj@xvynh{H+ z`1r~jn;H$Cf;G;@BN74=JUbx3vK5cJvc*xwPOy)O60AJkUT^Z8SrTx+}95#_oX z#XnT2C+@g6g)8j57du~XW@c8k8ZEq5ec1RQrt5XCDyUSFc;$Y3v42v9YPaZlin%eE z788JiZP@dPrRw&e_V{wqC&8^?Gu1<0taG_FWVk@5*1~%(g0msiWzkE0;;|ORVeMhV z$HG6yozzc{<{d}hOx1f-Vnoc>II&*WpjLh3x9P}~i72vJ6r1zD-6!EO#W6H8V!hJ> z0Zq+-s>mR^uJ-prz!g^o6$PeHoxPlefFPHl#mAezoTr$OzF?eS03Y}W#?mv@yK9swYg`Ih-591t+ zGDHp(;cAs1`jZR>k_Ar~H+opD4e$}9CJJ;Ss6^dAi5%SD9wxA6-5s@Jm$c{GEH+%7 zPwH_yZVjP{%O^XuV)AztK3s36kvug-(}ZAY%dR8^tzm95KlAxNuY)gD#BVt&<%LEjTwJ&>eeoKXe`Z~2wvkEB+&x8p;3HRH`R03jTOgtMDON)h zEQ{+sF6o{;$(wsW)K>082hnBY;E+eIAh)SI{GkX=GhBrId^;n4xCMdtK zeN+PBiioO($c!zL$$*2b)KnQxPfu5^f6+eL_-3PPuWNTylj!=|PW^Y)Kmm_k{^IA< zT`lU(tu5DXX#dKMq~tqcSHTs*HghUrmxDTERqTRuIjAEhbkkr**VAbZebM@5;1%KB z!2Z6S-0g$AYF7<6WP%R&?UNBg3w9x=oj^VBYZ)pF8*xS{ffc3VOs23^^O`O6tUl>{dIfb_;6P&YrFaHJhY)sX70NCVhr{ zIp+{V0i}aq{`$7CpQC{*3{hO3WjDY05i3&qXA6FR(yZ7jU!96BKWa7SOu z-Y#>Wx&8)&hxyHG9lGd*hA^dcN0wuxNvd#VcgG zoo&u$v6}E~1zw_r#aS3lqmP|QDuSes%dicV zO{Yf1yDI_9*YF8GE@F6Cfh;w38W}m#>xzhnR47yiYKe1tmmeb<(QF0Jb$IZAj5&iw zFAFzoLtKp}KV7gcJCWyvMaxaCKyMI$yWQh;-Zy zIckY@T_r0>!pCWQ$j1~#6q2hxTT6kIHxl?vHbY?nK0dQkY4Rd*y0UnNP>Il#4-y`i z(cYGh%zdLANkW+K-~LPP-D`|jiQGod+0|Y`p~jSK!i`_%gO$ESSKW5(E-jxdzWZ(L z!84EaE=hyzH*gAj_xN77`|Hhhq^$PJwY4>^{J7B27lc3H6P|bHI=cpvPX{N= zDv*v04Xw28FqhWVDwwHw?2pX}KsI;g+)xl$Pm@hriSjMrZ~czP`Z~_3coxF^<@U*Z z64Q?(oZZ&&myzvn9M>0|XRYiBimH$mU)#=Qzr@F&(72T=2iDXqoy*sgWGlKZt>%BO z*J<&v=QoesL@Df?4q_3*t#Xe1XYJyTZFO#^upsLB=X|oOt1A|tGU8EmJ7SyVGCdvL z69)Q694~!(Yah|lRPV>4TwYRso zJ*>ZMX>FB`PShm_ph~-|q@RiSL{m3A(!YS6mI)5xm zp`~~QF&4qYXyJoc2O&J%VHq_0rKBSH1<`p|#GUbFnwK6eklbMZYByv#t>bLCqDyt(VG(?t%Y2ME@%4A_ zi{7a!J9;YbD}&cbJTJvAI>>F>`o2En6jXSPc{ZvbZg73FUNSIW>#`arOZD??7dUX? ziIaTQ;8V;)qG+hG@inV)-2MoQI@uFB^~V$N7bhnl*yvxi+ zpI1P_CwEQ<#XAEZ;jamXU{Ol#PUPEN9T}9F4zJ|N-G)_D`#k)){AdKALggGWoN5CB z*dtha4hsu29ZL5TVU${mrIof_X?rBdw6^~4criY-3oBprQ}Au$G@OruiKX`e^49*= zjrb~|SYx?AyRQmIF`qqmKr>CPReMr*JCwiB_U6oNZ@!jTNlB^Xw(?4iVk*4W&B(~; zy+x{qy~1555fv3j3=;!`&V^fq`g`0#J6<|dXE4vc;)u(jp`oFVM@(m1!_pN};hp%n z!#?+OX-_HxW)Wvpujqx-P=@mAZA(^SxIfigWVW-*EK0j5d8gG;kGBsO@6j!;+|-S9 zwl&bS#GAU+{#QCZ@d}qtzH-;lNUW1rcwNU%#iVtQhK9y*TlYOJ03clj$vwSLfiv8< zj<{9Tl$-aZvKYSRws|XTJIEoK+D<-;uXe_M;(K4O6Hn)DF4>yt7)HGxZeeWEGd9i^ zsW4~_HqXxh;eV>Z%j2sN@gZ@gK&pt_+h9e5-Y@JY?$Bdb5D)B~S1U<=YNND|KT45G zQ>mrMgWH4u@xH?k70_PpZ-_?9jTB+3gI_5VL1X|DL&>ZQfS9hg z`<1`Sg8>ULyuZ7C3JKpfYFolO79qx-!Wo?mZD!-2cZ~n7`p)4Bz)N)tb`ZnZ3Wp*U z@ZgU=n!yV}F%-elXep3>cQEVc5n_uRL82)H-#$&!jD)`jC~lpHo3PzSfo>$6H)Q0f ziC-9JY1{wJ;CX2;kp#$Wr(_Z()Q5Ga(a8^k^Yc2+58>4q(>1bC6*!`2pPULaBMNY5 z%1KQVmSe(;&=W1Cj-Sx4&jTRIFo+wk76DYpl_x zM0OD%^kN$QC4$LQ4ezX7wzV>(TQj>)y1lvoss?O!7VCWdg~YW!yuL7w_F@-}gGRt1 zp>B8BId*1TkzF75<&i1}lm~x&G&`xEA@Y>9zjUz1;gKcYe%AP<{(At>)*ZpxONDCD zr5Qpor{r;t5OYA}K688Dxnhv>?R{Jw9v*)B`@OO8r|HJ4ixD}_pNhP=xT-;uVLodW zMF!&Kav54JZjk)sY0EDb(?5RvpyT4giHnQlBEcvk;^yXlKcPgx>VShAx6dqqALH9% zOz;Fb&}IGHN2{4gg0;f98!s>fZExo|JLIjyVfYg!tb^fl-25E63o2;j6- z92^{`<9UP=zcn4Y1pzdcZS?-Lw6halKV z)(C`;uD-suweI-d(PrUYuJB#$2;oSxRe~JOPeKjja zOsX@Qve@I&S_GhXTNjs307O-8wgGLPoI&qDmRqJoMY9PWNWPbOMgqw%n{^qYHQ#0ijc57X@zqQKIBqe3= zBL|Xr(E*F&5Znx*_Lk7qrE0j|ASc~I#67dFUMH%%-uU)Zq~Y$Q*Y$GVMXtrBH5k)w zYlznKq?-xD7ibhmav#y7lR}nTttrPjg3NId(h2b<@4jbezq{C_Lu6!P>OH+V+g9Em z>(ctVYIoX~&=Ok}@|f7;1G{6Ypjxw4YqT>7}&7X~wGTsValKJ#Km($bX>c4juVvfm(* zkiWyW;b$uE&CqItmP(9#wJq4@8dY;97f^=hHarG<7Kv$r7@&pYgB6LJkvbLsi z8FgUv0R@5D^9U}QO7w{=rqB7fx+{Q7DmUH0Gn6GIY43Y%!VtdL20D^vf^gCcd?R*i zz!T)v^*<5P`p5Ulf)18>v&v;F>^e0B)z#Ho6ZzjL=7k+L`kro9RabXQ(rs^VZ_Skd zqS*I@u~|Qw_O{hF9xl4Ga;sS)Fv~Cb!I`W{K)IT4h}U!#^ug#5YzWwhx)N5gaD3$^ z{boCfB!?vL9Kp;JXWO%S8KZN%$florTxN%R~R5&N<@KAAar++wvWG+X#hnjkBkLegc zfVCx~dhl|OqXTt7eWBX8PvDXu)xo*tXRI`EgeOb9z&oL2@nsg}bBtTkI86RWg90DH@(70kiM(HBID&y-!|;0OEo zGw|=N(jT1*KFyLy?$H6s=J~pPfW6x2_B^fGn@G0-5CFF*@4QkN@Vo~zb^fPvFX4NbJ zU+Z}}qw4ubPkF4clTe~85^e}NbUi5xKXZM8tnOy#m%Uld%Iv{>?Kn&tEAYE^9X|Il z*>zC|vmixC$J8LL#Pe!Ah*0fRYbJAbb)|ttLNyTXdQ&a(kx4}nC)l?&hvg#Qt`@{7~rLc0!_(fkJv zV_kH<*@Y?P8$rt8BCy#xO3N7z8*VvZnj9d{c;tMR67KFoUpREMHYjk>d;n&F@sp`? z3*samGk*{kdmMryBQef)C$RycX^W;5F0x;LmHqwuGQj7G+c`j(6WtscT+U^IkcJB< zIUj(Gnf(-{96eo5lK_3gDlH_k4x_s9>c|JKD8ohCZE?1p9KTjRP*?qy^nThTtzC|@ zUZq6bVuEejUp-aOVPgq!|IScc`ZWM2PK(XQeb~PW3JNCj+oWQIWdj;z1hw=9+su!Rx8(&5hnuxe9oUxqH!l3Tvio-x+81 zp*`;Fd+ipbe|hkrW3jTdlrUmoF=$*~Axj(8 z#|94}U3J#kklY^4p@#zhcE$A#o=&C5#U6`;oV4*a88*>SRV6@rVbfaAu(HF1*5%!<&nCBm0Y;P`=;`ExP189m-JeD1t{=IWK;s~jy?ecG0~mZ4{7jgt5(r+KS@ z9KB$7@v0%!j?OWfII19-7bVa#scYG+RI|kiCB&yyxGPLV^~;)#Rx1apNeMd=Bf2va zp^p1#J}ru`BJM>RP#dO;uXHSqJ|C!xtkjT2?dl1o5Sig?!zle;;_;APC>Mo)GrPpa zW86oUZ~z#V7#-w!X$fKn5;7Sq=-YWiY-*63iadfod^e&s?7K+iOj zKM3&&Bd)iA^3E*lp~i$&Qh|Nv@|aHhlczEHTr76hN-$%7Er``%hT zPW$%+-Ik#Y8HZi3(|-P=%gY4zAeVV3_0MT~zfD*}A4SQa(@$4`efs!P1)%fxZG>S| z{M{e5WzRc(#1lgIgdnOQB+ZrMW>aqtP# z#Jsc)YOAY{SG39B7i-vV^pRfMY%QgCKNyF0Jr_)6)(U?n?3?eS@`X{nA9{rkjnFeQ zY`n5q|0?R?9HiEUii#RLyMptgLhiQ!9vN8=jsmnoS_vn)Tw&qdykqwvm+cL5Q;$1P zqCoT>d&=$$f>DB~ULX>8SKHtqHV72uDh%U@OiWB1!m?1lb(Ixd#3hjvLKL0@oS)8u z#_xGZAraaeBO@cm60D3D!j4xDK|mM@lTqv0Fy5x zCer`NS?!YtQRMts=tOKy&jv;4H_<$gno$53@B`A1!FtbUTRS_YVskKsyxLeNs*E3q z5-5n3hgo2aL5^r9Rrx%_R%}0Fy8HS9|Ep~FQrk$Gd-Ipg@Hj7_vaWl~Gm>|0U4u5a zRxtk^$)jWuoU$~-Onc7Hb*EI#BM1|`x>EP$g*Yoyq`W{4>^H$b_YXDX&N69{wH*n` zbg(4`xtp~e1{sWHudASK1&(F`77rp}sH02Xm~=2}V4KqRIh-tH zl&}~*5q9zM-aUFm$_E;yNr-o9D_~o{N&d|cDnIw3T6A^z?f%=Yo?;}}2pwPhKm68f zq;h&24zF*ZuU;-k$J$8*s~M927jM#A^fomYWQ^&*x{`HE-m?Fz-&uY_b)%P!hQ4}* zHp7eVpTI#Z82)U+YJoH68RE$LU+r(&wDJ&O?R4hwxx?|ghPi|8^N?=KFPBW9Og2bg zL-H36VFF$d_NCEqJ^<6ccK`M84mBOgUw#nE(ec-M0dJL+d-q(G<&5RJ+G&!FLvkx*M(E=M6sx|u+ULgiS?3(1|Yudki# zL>@nerph{U|1~tZF&D`ZsNVG6ijukY?8|2e<66NV4P~B=>I*1Ty$IbVMfvTtwtgNnDu-`pm zT~*6Gob)Q*nab1hkk2FIKmx*`aqGuX2Rpq5<0?|NsXt8;0>Xmh?wBx$G>v8cG&9q#Kn$Xf3m5ccTbAQXQ{b6*tp-uw??q>Ns#fP-LAwM#vP%2 z<_d3-2bxeiir|K}EgtB--1_XRDJKj`R;XfHhc=|w?@JQjm+PXdVxaheqW5&}e78)N zt?<|iBzDBw%A0itrK~fTFKcawUheQ+cn}H^UEeR~+N_@||NM5WscLelYbmPWe(=}H zov5^j)PE2o!$5k!^nJU`>M>In1yDA1@#1D_`E|ySh#SlwZRA zZ^q30-oNHjFD$d1S&RezJw`F5)MH)EY)A$iHROK|LIUK{qB{B$@A?gyUv@aEh<^`2 z)XVUBY)&1l69U=5ioHA#r~WfS-*zkc8ej8I7K~_lz+HgD{XMT5Z=JiWKFnW$Aix*? z@6uSm08Qn9!90jXmOwcJyaTh^mX>_^$Lfi<;u{x9@sx$F2_x0C*{r7_+bGhn^&lHY%?FTSV-l!er;m z(HCrco+%)-V;T{2f#*dDSoO7b_laydN!03d!XEhV@X|+9&4rPl3lHTtJUSTIYs>0c ztpz;}UC+0$*g8z)^$c^oaeOmitNRzvp0~Xh%qU<${Gt!?i)!m%XGZ8FLb7>(CL`Z` zt}z{fFQGhsMD{m6;kXEq3nG1}5+)rQ8W)etPO(irteh8;@EpM=P9h{aHe*(mJZ#V)DzLuz=}311%jL z>&Guifi%g%GQ+gL*#Q7MAM%{R_2Z^u#n#r* zLC4ID8b!w20_s??pFU+fgGv^Z;RLU;d!MwB5BQBUbd=o}lnFZhk*b{~xg?r@bdU)gT$YCtf`U!;&b|>8%b(%| z2L&zXq0{7rG>#nK9TW{Ypziz$00#=dbwIdZ_nx1g zCWX~2tig(S-+TOEnpyMlQ~x9GyU?rz93UDPTI_sG`3mT%aj~(!09Y6R_zh%25?=F9 zGv5JxH2}foWI511N&t>WmGg}rLgL4dbgc{34x5Ug7X?ObwJR*+E&=`=s}L5HwiXU_ z{iTC8P5K6<2?)IOssgBhA>dIt=YJ^2*~PM+XDm)wB9dV0`zONxudZ93}fF!1*L-^u$dSZza@YIld*NlDf`ZIA~u zwIMpp;Xkvyo_kWcy|532hP{7b;q$TlB2#7X5a_*;a{d=Q!q?W^r1;lbV6X}OSS~NN_$5>k>6S!Y4 z^PGeE*0=6(I9oP|s`hGV<*9b2RvL$;xiL0I{JMJp7{UOAkzJHCM-19yrS?9OQ%vK94bxH@`LaVl7pb; zwI-^MIK|%-$|Rkt$=#a%tjji6!mscbCmth1Q|olrgg3Ib{@SKXKNfs7=yk!t#}A;D z4u;S7T{BsYTi=Ah(jjzv%2T+aCe-=%gAw?aqaa28%JhCV^R0qOtD+3 zKmSsj2}A+4e&EH_atRzVztr+!?Flr(!nJ&Z^UwIR2@eLw0#!8^HnzgjC zrM6Ku6+=ZFg;N+y_A}m6FX|nFfX}_Blsl}$lbfkz0 zY?}T+P8fqeQc0@D=^BKe^BgY#_?Cly(YPb2?h98-WN>~V5Sq+p4t=5{%FCvvqE04oF;ldLVpYQ+}8CC*}A z1w@45gJN|6Q`A+uEi;u%l3x=eWx=&wuhEy@{UV}PoJ&`VU_R<6mkI4`zlycGF9dUW zv6nzx;j)@3OLBF8@_ncqA8Y$~=sPuvyF9Xg!Jh;)5NT59U&>^;2?x1L=Zxx{uKsTb zu=-`8ngAV}4VtK~fvF}}AzyB{Y-n6$`Y1cesDhc~I0Cov>qCm%PT}O=9x@Jkc4wx# z*r@0XF+%s`tqsa~XUCVO1lq-e2YMwv5axw+Aa<(lZu2&$PiEMh-nb4r3cu!p*je}m zW-D+m(rVj?8oJ9>2vB(*7WvFXH6*dtdKHn+kUo=c5^>#rWulpJ8EMV zRCwO1uQHb|?1eh@P&&f^dIcMunUdpY2Mh?wAyO)u7`|k+ylqQ)G59JCEQYwVt_NNUd0(@h&2uz=9xJZU6L!TyXD->CoyrZpyLqa*F-p-JplWg;{wo;8taQiRbp;))t6_ zM8&`SbUsS?!JX3Txjb>ru~*I`<()wq#PV0dd@-7=?9yfBEkO*kssUsy-2|nwWj8t| z%VnYVYR#A)gkZW6wuou}BJ|sJufvTvkUYphnO;)Y8gy=a@e@F>@jOzez#G`eh0T(Y zfl3@+JXtowP(nkPWBz%02%KV;wH0+>*N=116sNx&vncg)?r-8ua@c8FwEwm=h8WEO z8XiM<0>Q0qT78As76IJR!>;#zrCs;eN=+*1Fxw{?zMP?}{CX~wr-KICZPSB;#+_s} z)|ivudKR(eFbt5E!W7vT%6CsMd-5H!V5uK;VUATD{}Ea;I8-ur^2!V4}g@}EPuWk_}@Nve2cZ* zQm724+yL{AY2KJ;GWf^ZQZ*p?nc*PNyeyDM4qUu=GD2W8#`;3?Uz&ZldCMZ|wY3R@9KY8=Dgy|nKrF9PeROKvGi6eyJbKHY#%8z-(B z{!;k2L{1GO%t)|?lX=(6XH#aTD8vLb`@+M7mauzO6Z=0vWo3<)TY~IaFT(Oxj=E11 zl>~?)KEa_{5CgR&TM4X@gO~}WYMu{9dy_T}+8Y)ZKu1!hR^|V<*qEGKQo%r0+=u5! zXrR!#v<5IfYy?M5cJ1=ki4GZ^<~J7&L1R^!ysTkm5`lGb^s;me4Bz{Xfo$2eis7fC zIeSkD8OhHm1b{o38!|#D6YY)VK`GpXdEKQgK!xN6+H%8kJHo6NUdA&@Dt(e`V2rM= ztzAyhEL`eJeG@w0h}nsC`223z>qWSD_?(D*rhEd^f_PN4Pl$X?))v(UY)uAO=EM>c z{lm?0=N;ZbXPh4NPZ~)Fen+*J@;gk^mDs=8QoTvm z>?qP|8?b3`ubhq;Vt85Hvv)l0252Fg1(^D1d!g?6w;3;YIcy!da!*cU&tHgm6AUuz zwX9`_2rh|%eE`+x>|f?MGpIiEHDrbNjuca|{snK~hYEulL8MeAkNAmme9O1gH*9q! zN$PtZQi^jj<>K0LEQ-Oi*TfnmTHG|JmHI71n5ptQ9Kn7GxnACniiku%IQ}iFYznEL zK!n7oCe1D+wj5312HBnCo&dA8g*&}m9GrJVP}}?LWB#_ayM7l3i)P^`OHz#+z-DGZ zM$n1(PSG;-3`aueV_4dzc3F-I5vFMpR|GNfiL6pAQ6n{z^Br7Bo6iuJ2{zd(e49H) z{3*O0l~V>Y(eFVtDKWCu7c02QVbdte9V~Z1>>u>^G}hswd$L0e`h_tS{28>@;41J3Gx@rOv_T<1C?2$vcJU>m+uM0|z9PB2_e+2FKr{3) zcw~R-Yq)T9b$M%>yr1b*9c2f`PLO6;XHPv=kwlL4ix;SL^u6-S8KdN2xle4qYxWWS z7K#rzFE%Oqa4R{NR1FvX^#jJ$x_e@#1DBJ;v$-)w9Cu{NTH;UDa@O-nx`oax*>*zT z>lUpY-$XvAudAzz{rdHhf`Zk%J`Xx;PS1vVTt;+`n&5%I%J25fcdR#6ssaVGnPnf5tO?#5vQ{c6(^~Bv9oxu3r1N|Ec-W z>8&A#uWI@@|Ik9CciUL`bBa>Lk_d6`ao$w!X zI3r5|0)?rzrrbFF9&;ErhpY;%v{LCLnD5-5kPM&jn+zns3TljazfQQ)i}^^S!JGWP z3Ey_&Ytj676nNQw8Qa9ISVoVM^~*xr`RMK!T!FNnGr;eMd9t31H_CyYczE_kzl{ek z44dBqbcH%M7YiJrraL*#FS8B8m=tKe&Sz}}su5aCQvEeql9tWCw3=*fki^8pc`eV| zk!U%E2TCK!u7tA~wB;_1jj13aBllSA1!TC(o_@$?p!YtOGxcyMrEnxNWBop2&mo6khIl^5)&WC zdN>tcpZKZ73G$*Ly1uIEAI{J^f2m~8QgX7dF{_~&EbvVE0SQbwyy;}=%mS1EeYo6X zO=g3l$b3xvmzph|Bk^Mk3@mrbACoc9HC`|$osoqh!@(7)erbW<`*TcK7M+3(82l!I z!sCmy82LEqF^;IbrM>BAM}LZbCi8U(*gY^H1m!xD^4?#wb3xSL7A2a#w$a<(>>#_+ zlGmoxq_=-sT;Ay^XD`owUh{$w$prsmx$S^=h{;-_$d1_aQ{U5^$F0<9Jbwr#%dLU| zoLFAJS%hGD*sgT(5!~NFTKXR`D`HHI?8rbDxIZI6EypTU#nWdu!UTR|Lx;}j%@eZR zo_l*gg8(2+Y}5FMPd-H`2vj^)Td~EVmDckG+r^#;gfFM+vF;nA{8>+m`}f@)6YCJ= zpc4=v0loR&LC7!HHb2n6AJprLoWmJa`*K2`NAAmWFQdE;QvlIP=tK zF;^#ggY^13e;;zS8Y8}v>T%EvDy75q9xj3tT3wBl5&Ci14Iy-})w=gq5z?#Quh0poUSsAn|(#75=wzMpJs$uHZG zb2@vHzx@)R?fA*?bjKyc<5bLaqL{xsmPd_^M+DUInVBK-6 zX&M|wdgCv`Es!Zn!I|7*xQQD&VD3BC_ipaHUWjJ2o_;iW8@ZN4Nbne^O z>D$@wk8)=v_CN9rf`Y_;G&~10GmK&#-<=L7P>k-LZ!I>8^VuxCJ1{yqJzdW~BM-eF zt$7fg@}Nc7cX`u#ZsOfUT{>vA!bBdI{I2{!(nFbYvTvO*$&Qhg+NAWhz^M~;Y;c!L#|(Gol{3ZA8b8K94Wm8W)X$O zXZ;Tk4x`7Ok&UNb&> z`!Qy@@AyxbFeM6ThnCl5IqDKeq8` z>v&z!a^BCc8xr-U=EU1q4309Tf__(u$~mR?s!(^+*mcX^FXHL1m&2=dE77MP)U&@O z$0coIFg11@VOa%9(t2?{siSP!smbuB#64ro0zGzwK96|We_K61I6Vw4PqS){Q`U4f zytl9OQ9#_eMf#~jrqleRs??r*xN57Boz5bC8lpj(S#Aq@Fy3oHWD>YPj~`T+a9!u< z9n0@#RgGRUd#0I2EuY5FY)UoM>Ao&Id7Uak3SJ5rS8+L7FZe3#BSuL*;ElDh>O%|l zAzBdZ#Ibz!yo!T(y`VS~;m&c>ZVo5<#wj_&1y#n=8^6juWcdQQ+1AC`_g5BGZTtZ| zg$@M8q-hB?WdSahA0ho&dT#L>PL3JY8n~)aPQ1z*;&R2Y?w=9$+ZncY=bd-H1Ge@! zqxoBLt~bhUolHyT{0oxK*0d$|==y!#(jO*}xWC(deVdiJATvmoDy?9VbT!@_gMHqV zt?Ky2LoD&FApPlv8eiB9x~9aA+t4j|XP@7QC~ALp-|@sEV@+ zidoMI7#kZeRW5qh?p!YMBCbb7M?YU|@Z$b$^6bu5TIihwG*!W$qHWL1Xq=Q4z?Co!8{$yP3mhq*u?nk<~bOW0*7S&{zA<|w}H*o-U1?b zElZ>$$f>$wc}`!69z-%_D(m!UGdYG!NU5m{f5z&4lkYh28@+6ewXkdYC04lV6B7xg zG`W9cV}-XGL$|kEz^q82?=3`C;B=*FfEjsrH(`yQ9v_b{A%N^qk>_rxzW zriVjSxL0QQmM5cRxtVit52(k;7TqGHm#)6qZcI)y3lOSrh8Bx*W&F#ucPl2WP5+eJhW#r-zo)tZ)WzpTUj?&U=KB8@u(=L;$P zVDS>VBurobtpP%IZ=D*)IERNY?BB`B6my`X!aU)_Xj@aT;lrL_bUzE@7_~QAbc3X+ zz=qRVj2D7K!aj>bswhiee@pQ`YpjDl!+oE1Fz3i@&+4028wp_n4p#s^$zehr6E1Eme%_ZL-!3sUky7#>P`oQ?Lb)`){G#JIG-Vn z^7~!&$wxn06>dY7U#M{H^8rC7@v%4k1Y@;kPZ!MUiRp!@WT8_|TO*?I7cH(&i5`9P z_FFyXHFY%L)at4brD>;tODSNN5(RCF?)cVym`xpCVO{;VHaGEeZx=f!q>549Ry=f8c-dxfOpMb&E*enB=RAzo1sj_ObpI8XvVV)1ix1$8LLfjp+qh(@v8G zYJu32bh{>!f#4$PQ0f5Z*lmv0&L zdR69%7R$-e$gm|wLk&>PhSJ}jLc)Iry7p73qO==!+`AxW%?IVbkP#J-ze70}5REji zsCQzm(YYcQCKHR~SX}^}@K4%7E=F$3TO!ZhiEisyIU7{A^J*4n=#2J|O+WC>SsE|V z>%Ma=XX#H2$u2*|b-!}BQ^X0oJhl1K>80O>w@Dg$8trS;OKVEZjoOfUkoOx=%2800 z)FkfOn-h`s=hWdC9DAxRf~+hDsroG18%E=LA}l=}qUgmEk|?3YT<4c6;b1QSk7?#t zJm=CTfIgJNV`+;)jh8=cImy^`^K2@v@m7;ciXQkH1z_>wBRdSzGg;#gP=t4+MI#ik zb!!$BaZMDF6$)}R5y{DkY@CrS_#hA+v#u`ENrzmCaQUld8HzjC%Tny;4R1S3w{A+ce3-R?I&({@)k%EvG67r-u)- z^bW|bHksg1#J^NJc1jqByu*$O)>)bt!4qoyLg;}PLE807rnwtIz{QgvO@1%L;zsgn zok5~(IZWF=gH*PUzbpCc$|P~`ofci$DUGEC9&&xE#n{JvRI6c95BdeE+x~bQJ9pZO zhXo`Zn+Co85}x(F1yy^GxpL7NuDduwz#s^ZI75?Y7d{Fb;o&rzJ=$R`l)~<{u12!ltnrO5&Q-fs1N_eEly_D^$nt4JtsfWqM z^V=5Dsqqs{$C^_l&_x_Ua(&$o(IE6h7?;01x|kxMSS+E4W^$q7x@7j|Iq$HS8>aBz zckC?cb0d>yb{c;6(E72H-6<(L`X-Z5R?$5BfSUpJ_=d~aoiAWz674)mHr*@YNA6*B z<52f~;+vpQuT%FjW|2UWkPoI;XUGDAr}es{Z8rSWG*`Qk`Wpm*WNWM9N$N>QV5MU6r`UX;(;D0|5s160YF zrfu##j1O6?&rVLiO+r3e+1c@=ONUn05#mn5U&Mnh=cPI2pqp z^TVdAPHQAzOcz(I?Ha<{bIUU1(B_H#NF2BKDDhT6e0mr6d8KR(yh2y7nttq>H=ymh z=t=(R;8No7MlT{nBjx#PMUIW!?7Y%Yi`YS%kC*dWb|)q!y0CJZvwWXuwd(;nv%ojh z5TS-6@;le=$?!t>BoVg~k(fNjgDzdfRUR|~6rLSW$DW7)CA_YIFpK-Qc&m2K)3c_A zVV!vsjjMj&W+bG85y?v`)9GF38z`qtp05Kk@m2|}47`_2azsmz`ck6s6Ow68 zOs8B*$@1E^_JNy<+om%9S|kE-3y^lvhC!1r9`3Xt_e|x~uJ}R6TqJ5FTQc0CpTfHf zk-RD(Z@lg%35&i?qe~w|0J^E8%)dpvKBs$r8@?UWM}*Gk;{q{bbgAOo@fX^+{?sWg zCA9{g@@-|Hr&+;@W_nzf-`)_zd3T&mI=l?&?el>QA-WFFe*ma9()Y$UVVRM|L+kAa} zJtN32zV2|;ED#K+iVACs_-r>{)OnOOYdZJwK}c7dw9r{lZFguxeEEB?q>#vP?kFah zrwT31om7Gs(q(6B7okZFV)s*N;khKy*6a!k_ls+M4c0bW81FP9EYV?O>SU_MG9B!a zavXAMmY`N^?xAt?8$Zo>c_V((U?E&^FIf=+tCaWfR{K2bvwc9K-cV@GpiTu{HoxqR zHy4kjg-VvgKTOX52J0dG+g-A5@8T@6OBGDh+Q|P1|c9@p*#PB^nuIHLCG7duaefvAfk>akia zMdmBmJ6o9+BN?3#%M&WPL*d`9cpELArf<6RVvM3jpShMTv-D#J)6V`i)#UH#Ef-t) zV`#46qg(IPN9-?!U9jHRUuOKgN2Hr62QR^8K7su;kW7n>P3q79tF+IT+7u}v4lJ@6 zguPfF=;$7#>(w+d`9?op7#w`&>h&7Z$9p6zG#zdM-Pf@~ z#CKK}sN1_gYX!BL^$GMB7UzP#zER`|noK(;={`CMmz{XObPa!&slVl1u>+UQ-erUv zHn4g0e65^Pii=kVPsQyVn<%~0g2@V#noY|a5&Fs{mI>MfWW{c|MbYBOQ3l3#` zqVB&O2XGr{Sx*FU#CPqvHht?y4`_E{NvQiMh0#uCYuxLYfXghQm|(=JkfHSykceY>1{lgRK^SFb=< zM@7E%Um49~BXkE9O++mHEM)}p@+~W}CKpFfoi4uDVNyCx^xxWX4dVCco!M=>qbqDl z;G5ML-?{H&6sIn)h?~~MqI;SSn}Y5Np|w-w8%hd}p(qL7C6T|S2pX~BO|LF`Iy(%6 zThXl(Y#vjM?~Gh-HVrD~`S#TK!_K1$Ipc~Yr!+LHRt-$;}gwP zAx04r_K%~D(~LR-cVZk@4#-VZr?y?H`r1DQSoY{URr$`&-EnYjK8iRAnPWX9U*^BX*<+%5v<#CuJEupV~5=$yjkJea_Q# zBKMv}@N@?uqi!zvD`<$-{*%z)=Hp7osPw!;fS9;dI4VB%q7?M*?|5U!T8}tpv#Zqi zf15)S?6&Nr{w^e$B937*@sEPX((Sa5SSv3mWm6g%8G(=QZzb_vve;oi+b{Y;ON?`i z>tT5uZ%Pv5YZ+gNvkQw-W=}kM&SBkNI{!sLv8fHi-h#Bt%J5+QW?rioggYn zuk@U~)%rHnhD6Hexv0?mLM(-7tFM#@{?FQq5dK3aOx(rFN7U5H1dM%;DKa%$eR6Y& zza5f(tBysVPEc{kHPPb~20O5^A8Aeoy%WD|!TE4_{_c1x;=!n~+Oea#;FY5(st zg5Y2bov^qkCJafOA!w9FCGS<$j_fzT=yb4)+83~PRJ`7QDuf%2#J9Bo6Or}M<&2bz z7`)U^3?Tz|LNE{P?_XXU3R-Fg)8nF-!ai0P)pb^RZ8UTZVyu`WD~*|X*8fPxoV zr3Z0D0Jok$rp4Uc+;%H^s7hkm^Cs-?bwv*^sZ32c+V1FMenxJVe|>tzYJKt|$Vqt)+A*&f zD5nnkxyNUHWtkol`qz*XJXkFg2YH&akH@LDF7+|hMDqETY730T00)BT6*E5j8LWr} z>pOYLw6nDpSXXx>7C>&KaNB&w#^r5^Y+U5^6nBPPuLg?fs~O<8Qe$Q_58ZZBHj0z(GW zq>@@C1&8Uf^J$|f+(&67!pz1ub}|*`2K8i4S4(wS16atpR52e>ZbFvETqFUl^X)NG zXUCsHX;M5TU?T7OeY9Ag4(qm>bZ8=b(e17L4g>+)kt-|>_RYqbalJ=m9!)`_%2m33 z+kReQmUdlR3eocs)^%vC*|g$V_&8p6$nM-Mw0$CA_o8KNjPAAg<5sNN4_?w?X-Yjl z_VwcZNvEKq5}A7%%*OthONg%d;LeOlh$)JB%IO5T<9Jol=*vNu;MIrAlM))Z1nX1W=$c(V@xzlsMus38Dom;+5z2SA8o$mNd9)SBzY z*OBiR8FLRgTUjaNX*D||t%SwYwq%XjaD%qqr*^#42*1gFSXx;uZHP8WNahci&kXTc zFzob7mMx-@F-Ti{gayicO`MBcPrzI60-Qt?W}(vOkKLT@9?_VuN}l-|xe`qpNkV2Hm{#R~u5>0m)876J?MXR9 zb_99hehW{|*fsl=sWMaxkC#-+mVwxdpp^ z+3YO!jRU;t$NmOyo{da;3WOQ>p8y1E_v=rE=L$p46cec-Mt}I!s_*zEQr;i>myY6C&cU`EE z>~*z-TY6F2^`Oqo^w^xXnyMAE>`&#!n*~v70epWdyuz$!&|du9!@9v2L9svOrV{-F zp`EzdtF93?wwBfFC4NY%+&Qha8O(_gdu4}9ogGkR_YTQT3|V8(t~c`%Y6LgnbW?V? zx9?-(ilCG9v9_zVZmAMsVWjq_`l204Q3qlMo=4Bl1XM5|G}#>9inNR4#M&*oq^qT* z*qn#X@NM}LA1rFLj0<|0+(#i99yAWTOp1LQXD{E@Y9^WIIp4YwGrQQ=>#y?q>NRo` zw^^AR3JN0}Rn1R`nx=wa|9$RjMw`aZok4lmK5fVD>R$dCx;2)_T2;$zi+yc)UPd;3 z|Dyu!?HBt~#(WB%29`KQXB&gSL8SrPYsyVCv5CsdbGJI%Rkj+>lXV0TC~p?r8OTaL z>*)B6t3s-YwkDeD{H}grNkfFD{*<{7b_A@d`vK7-BD|%kDU!L&hh6uXDBqM5)NFbv zPmJG@4G_&5Ko*D7IkmN0c2wU0`A0oh}gfE`P02 zvpZe0Mm^u7+O5rsE5I+c&;PO`Ka7@P5;BmES2R*$P(R)g6TiGTzxYyMTNiZa^%C_` zude2!Zs3{+{QEXUM;dbk{BaUH{jgy%>_B0p-SqC(a=PkV!w!dnu6qK03tz(@Pt;Gi z9QPG#HHg;jkA=iL(%QQhh{}3|6x|Qbi}rOqJCT^pL^HOuG@lpz5%;g=8^zstnsQ#p zFXR#r+mmT74x2y2if?(Y>X%t}s+-#%GRZy($ZG7@-L9-$dRpDIwHk0h{mJEsnzm`w z>iX8htJb=hoVBhK>}G0TR7O<3H~;mDYV%$k6*0HRCY#?3gT5J3rn|FD9@vFx}B41DD+fE6Z!>7p>{T%2V z)Yhdby_xH#^S#A(59Hf|B;FYk#@{icbEGLFNvYuBl{+`L8Nned!7ROE-X+RwdC`@S z{yYuV9irI!79YH*`Gx|Ncj=*BY7`y~ow@LQSDh?lVRZG<-ND1s` zcPesxYECwx)^z^+Zw~k_hOnsBnB-Yy>Zjv%X4lrHQ=H}Zr_U1`(c9{E<-7eky1%@R zk_QZ69f!(jDDqWuVd*0)jmT55H9ERZ4vuU$fVg)F>H#Eo{|FdxlG?m*3IlhD7}Pa%bJ7hk#wLs* z(CP+0%dTmtz6?XryP%6~Sl}`lk}3HD=taG@yUkk7cNO-7u>vLc#~?2W zG>TB0tQi0Lu>$hBe}06iI%&rauEHyMw)(7ObiR93)!Ix{K(>dj1N~?4F7UKL6Wty6 z#Rgw-2aPnmP(XyoHd4KI*4`i!7&rOe;PEJM$_bgw;0ytY@b4Ebw-}mvU=MGM7BxMw zOZ()zlBbl<+-hWAsZ_O7*m>YOlKj)w6k|m_7kMFMgWx{?s2deH;a%zX$qN&4}gJ1~dMC6S{_)W(B;}Q8dzxtQgru zR5^aEA7d|#^zSHEpy`xn(`t@UDYY{jQo3x(naEenIc?LfTDV8L@y^`~?%7?qvdKs1 zW}(Rjvw{mCDzMlm`KaH!cOjgVo_zqbv(p9$C&;%n(UlXTl-o*G%!UZN*W=NC@ML9Y zcS9~Jd` z?o$Ny020A&`qI-YQeB|aFE=HyZ~ShVD&uwGmm?#=aZQmIH5M=|wFKoMkSDzM!Onzk46j-K4g=$b3ab z#q(0br|;jtuTOBVx!W z#QV*}0BVeP7}hS<)9MBC46Hxi*Cc^7mzEBx4Bwmb=K6vNAx>r*IBj4KCIW}|GkFIf zm3g9ztG>Dg2sZ3qVDZ}>RMk6#*pFO~H6(1tLS8^JFMt$e8DXTM34;!3vx(3wmY1RnD5mao`5>>8MdI$B4zB!W`%o zj=VAI9k_l(3MShv3?{w`OxnhKm1EDN8wF#)&7@LNBx*Mf+ew2g#+|@wkjl|AG09*G zLl!*{J&`c#9&-k4rqy)4l!2k)Vh=5(gYv+WsaOX%R11FfJV_vx#m%V0D8_MgjmlZW`RafQ1Hr? zD~f})(T$1iV9`h*BxB%$583lM^CnGk;R-rAJ-yU*bx5&hHTU&PV6=9PiAqcBVJ9}r zjmD3^>GZ^>9f^Ek-;S=f8R5AiB=lE`h(&akMZn4TyzTiIK_1maK1$I@F7R+P%zy8U zW7R>SP%p8oVjvYtjlcW}iw$ZJqc*wQ!Z;JvfZO1XyZ*zfyAf%p4VLqlaH1ri6J`%o zCMmth+fU`d^WY_y-F^1!H&GGyRbNv!#&wyUSo(a$7icu#} zzPKUw?*To`ru_DiFMoRt(ARif)IyV?Dj4-F{xGk1W)^JJ*%fg1PvzG(>+jP`I+~E_ zDC@Kdm@sPp^;aMuXnRUJO}!h8zBx?S*PuEh7jg#Zz-sS_+^NhGDP3$AFsKe}ZM^}W z?i;;4M|#mw>-OxUcWtLy?DU4$}=m%_-{J0llS3 zhGj}fc|Ken%Go~SQtSTU!2@SQd*S?CFr3>YnSJ4-jj>bw3H-gm8ka{XujMpPcr*)x z^QKbuy_D%}u$AmjP|B6tjtTHRK;Q=)V~C7=HpD7bISOc@E`2!PcCW}bH8Bxu-ytU^ z<~k6b_f+g3i-yZ=pY~d2rpFlr&@5D`^4LIT0Vf;@35m1$!&Np8fD^NEauR|aK73Sj zNtRpbL|R(9r<2AOiO8`Fqnyfs74ta@2KthF=S4s=3Rrs1#-Ea(0dNYi34ev#42G%c zc+?CqX=rGCIC=ME(}a=JKP9GV8(@SwOCk5yW6*&;98Z(38|wmv&|=`%MYZZXG+fcg z*9O=k);V;qa(_=RnmcNLb4IW(AjY9;+WS}Kw;8i4QIRjQ*$si#V?Q&G!_Oq^tx0&Z zIJ~K+F>(IYbj(d7r!oPC(?7?8)1|c63)&RA*7C$D?$hw;mi>9YJOEt%i^GI@>S@o7 z0d-QejdB@CNFnTKX_1Fp?D2K@3h-k@@`Bz0@)$UXUDj8?rCkJ0#zYhXfuM%vYwIQa z^h^l~o&56UW#ufn{c*F~YHClm!BoWy4zM0rHzihvipHv#y1Vs>U`Ts;KLv=Mde*4w z^3+@My&pFvg!dAvqlhtp1nE8k;NUiTUW^*z{Y$e9O!u~^vRYcZwMh{kUIsJ84o_Hk zc#jZ!uJkyTrbxNurkY0Z?Ca6e((;tnZ%32*0i5hM^h>t8IO4dL z2hw%kd7~+4XtcgQ<$HQaW?)-NL30CEt%7C` zfTlm^X|Q6MWV&T0xH7V`80bM28qxyPd>+ezI)xkB4D`sY)^ma;!})iuhVv=CcULam z%v`y^$&R4Ip8CwQH*cOsMiL``NCcc5KVM*{h%PZ1{{d#oYFPjP diff --git a/smt/applications/tests/test_mfck.py b/smt/applications/tests/test_mfck.py index 4723aeab6..c75af53b3 100644 --- a/smt/applications/tests/test_mfck.py +++ b/smt/applications/tests/test_mfck.py @@ -27,7 +27,6 @@ print_output = False - class TestMFCK(SMTestCase): def setUp(self): self.nt = 100 @@ -98,32 +97,44 @@ def hf_function(x): # Problem set up xlimits = np.array([[0.0, 1.0]]) xdoes = NestedLHS(nlevel=2, xlimits=xlimits, random_state=0) - xt_c, xt_e = xdoes(7) + xt_c, xt_e = xdoes(5) + + # Delta value for the non-nested difference applied in the LF + delta= 0.05 + rnd_state = 1 + + np.random.seed(rnd_state) + deltas = np.random.uniform(-delta, delta,np.shape(xt_c)) + x_LF = xt_c + deltas + x_LF = np.clip(x_LF, xlimits[0][0], xlimits[0][1]) + # Evaluate the HF and LF functions yt_e = hf_function(xt_e) - yt_c = lf_function(xt_c) + yt_c = lf_function(x_LF) + - sm = MFCK(theta0=xt_e.shape[1] * [1.0], corr="squar_exp") + sm_non_nested = MFCK(theta0=xt_e.shape[1] * [0.5], corr="squar_exp") # low-fidelity dataset names being integers from 0 to level-1 - sm.set_training_values(xt_c, yt_c, name=0) + sm_non_nested.set_training_values(x_LF, yt_c, name=0) # high-fidelity dataset without name - sm.set_training_values(xt_e, yt_e) + sm_non_nested.set_training_values(xt_e, yt_e) # train the model - sm.train() + sm_non_nested.train() x = np.linspace(0, 1, 101, endpoint=True).reshape(-1, 1) - m, c = sm.predict_all_levels(x) + m_non_nested, c_non_nested = sm_non_nested.predict_all_levels(x) plt.figure() - plt.plot(x, hf_function(x), label="reference") - plt.plot(x, m[1], linestyle="-.", label="mean_gp") + plt.plot(x, hf_function(x), label="reference HF") + plt.plot(x, lf_function(x), label="reference LF") + plt.plot(x, m_non_nested[1], linestyle="-.", label="mean_gp_non_nested") plt.scatter(xt_e, yt_e, marker="o", color="k", label="HF doe") - plt.scatter(xt_c, yt_c, marker="*", color="g", label="LF doe") + plt.scatter(x_LF, yt_c, marker="*", color="c", label="LF non-nested doe") plt.legend(loc=0) plt.ylim(-10, 17)