From 1dd7070882c57cb6af4b11ed38eabd68fd86d292 Mon Sep 17 00:00:00 2001 From: Lachlan Grose Date: Mon, 4 Aug 2025 15:07:38 +1000 Subject: [PATCH 1/3] docs: adding images --- docs/static/dem_widget.png | Bin 0 -> 5619 bytes docs/static/fault_layers.png | Bin 0 -> 6908 bytes docs/static/fault_topology_hamersley.png | Bin 0 -> 74665 bytes docs/static/model-setup.png | Bin 0 -> 16815 bytes docs/static/src/fault_topology_hamersley.svg | 1332 ++++++++++++++++++ docs/static/stratigraphic_column_01.png | Bin 0 -> 7296 bytes docs/static/stratigraphic_column_02.png | Bin 0 -> 9213 bytes docs/static/stratigraphic_column_03.png | Bin 0 -> 9174 bytes docs/static/stratigraphic_column_04.png | Bin 0 -> 11713 bytes docs/static/stratigraphic_layer.png | Bin 0 -> 16896 bytes docs/usage/interface.md | 51 + 11 files changed, 1383 insertions(+) create mode 100644 docs/static/dem_widget.png create mode 100644 docs/static/fault_layers.png create mode 100644 docs/static/fault_topology_hamersley.png create mode 100644 docs/static/model-setup.png create mode 100644 docs/static/src/fault_topology_hamersley.svg create mode 100644 docs/static/stratigraphic_column_01.png create mode 100644 docs/static/stratigraphic_column_02.png create mode 100644 docs/static/stratigraphic_column_03.png create mode 100644 docs/static/stratigraphic_column_04.png create mode 100644 docs/static/stratigraphic_layer.png create mode 100644 docs/usage/interface.md diff --git a/docs/static/dem_widget.png b/docs/static/dem_widget.png new file mode 100644 index 0000000000000000000000000000000000000000..500675709684a42ed8c030521f9bf15ce8ccbc9e GIT binary patch literal 5619 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 PfuF9Xp$1;v{`Y?X4kG#9 literal 0 HcmV?d00001 diff --git a/docs/static/fault_layers.png b/docs/static/fault_layers.png new file mode 100644 index 0000000000000000000000000000000000000000..22071bc4bf70d4383a25da22d5b624a1fd570d54 GIT binary patch literal 6908 zcmeHMXIN9&y53e4u~P+M7(_}ylwv@dU>k~n^d6~F3<#kZs*30+QUpQ^f`~K&;Si~z z#F0TtK#%~T8Z{)82n>WG{jR_{&zw)bgt__P+9zeHK#q` zc>kSWY)}w%sFCy9(d=933PC5H>s{6{zw0Z;yt9YXrj_-#yR{SU<-^s)3C8nY`4tPBWxXX0><3w(Tu zH5BKHKTZsq%D`*ds}w-cuXSJf<|Z3M?gue)&g2_eE&TC%?0_iD4-AkLg`FLPAi)P; z`TQy0j@L)56Q4`jDv#}e1b1l)%)x14x#qIHW(~_sVfNQ>54_Ki=d>=oD(`swF1`Dr zQuv9%iie`Y|~SkxsitOp|Bsb7szt6*7x}rUROAu@obuq>;EjL z<%usB?p%0H4P5dotuJi4qG#JX`Q~-6MTx$@rDeIGhUK@fUfy|#H`;{@1`ki|!QmE4 zW@k2y4~ub))b7+I!J&83teS*d?(XwV0*LVrEIfqGj6E$SRZAd|N;lWWv{$~xC@3o_ zxoEB3eZerdeNI6~^&Q30s-~)`j`l^Qs$Os{JYL_wyn4KxTsa$aC4Aw`9-YB3|PTIVO63SXOT z)-Rx}4AD07*Vn^OiinI4`I36)<_P@!{OygM?S666<&Qr0jt$+J_oiC?Zu;`4gv_QZ zYF?Z0yKB`|$iQ1y^5RB7<_4tbro84lEIMvQTES##N8&kCOC_!4X>=+bRzH5r?Mh5Z z34Iz#XWEC8mtIeOzfw}HT0raRUHf6?5)%?Q`-5sZ#;VF9p?ZhHFZDlHK=&;8KNW(0 z^88l38NkHCedk$-P21Jg)fKwfW??WboT}kEU#wM}y87+7&xf6meW8*7;S>^y^o)!| z%#b!4)Kn5J#rmuoVvHSQwDv;wuTgx85L7LAi};8Kg3jtDFE&jPqyJiM_=+k9hMG+v;+ zUZf_u5OOdb=>{M+lR>>lzrHssGcndXa2txOAgq+32 zezR7C3v@WxQ5vLR=@y~ktM)bu1ttx3T2_NP=Vi$3!FYCkoJD}?)Rh2wP3?#H6F3r8 zy7;|!MaH2+hxUoPerJya(ZWlC_g*#V1C=&y3A*NCt&@~ zgDKfla-Zp8g@z3-3qv#dL#e||`f!+cQ&#XLhW~>9lBRKlx6gH<0}gp!F3(ZdZ)Y+E#Q*XKjjDd~@k z3j3#`D-~!}7^C1moC3|a^pRPO3HQ!DmGX8C8l9=5vPz>!KXwRMrDxtLsi}N1O|}RH zdHKL_q`TlF>z2pMj{0f^Wyhw1^Fn>@6ZDLAi2b%X+3l9Ze!qiZ@)89#?}OJ@+DP$J z>=^ef`-evqKR#)ummKrKr**ir^Vq)Twn@BQ>-eyN=HTvRjW~y;3v~ER!UAc&_%7r? zQ0VH)c-h5)+bFVaB6cRHi*||OzVaE;2Vk+8)T8o%JNm(~Cl4d$bH&olpnIZgpmvxRnSVn}zHd5Pg#c?YpW^f~ z;aW1<|ETW135BSu;=7&t!rjxW<>w!jRqc0 zVar|{l?nl6phE^A=S}aMjoJ9f@y5g2$^{?4fBAB;*UN%Jp)iwwcj)7Qht(7#u(I44 ziGT8BKk5W@=YefWK531iu<|A9Fb8uJO6pT*yt&brF=RL7?b~UMV7BcY9S$BsF&yNd zFoLfjyjW#k=2Tb#MM=j*ge$sr6Y zjq6YX*2+yj*QsF-^p0_)Rd=y|QMRhW3w*RKm0R3Oz@(y*wexwRZWGq+JKQ{)*})|} z@h6rvZS;&C3G0r7odacaz9k95Fvrqm`;)Mxk2AP)qOO{Z_sq@5AJ_}*^c z02l`bjL$+AU9+Hr&N|_8B@bgZ-9I&a(MCZ^iWXKZ-qJ?an{akfc@fMS8gc9rB$He7 zCWo4uV+~9NTRvJ%!oDySAcvXdvk1H_=INYIp*>sp4!gu695viJim8+YGNmD+ArgA$ z##^sji5!??pc_tEr9YEcZU|eRlQT%cn4U>~@MT=()l6P8YOYO;^7Q@;EI_F(;LM9g z6DRLbupZ~LHmm)Lyw&SAGN;R~4382QByJB)3nC*BQua#I^i?j%-UzJtkmW7OKu^a5 zLF?1AkCJ^6 zw=pvYadhR%VwPP^$pZp%z^VB>GQnc8%d0zeY>)m}e1p%hd1UPEr4eeSy!t$YYcfKi zIaYYGbAnpBuvdph4Q6!;wJcpiy}=jEh(UMK4;CaaWD$likC8eHgd}q$WLde{OikuR z5DUkw8)_JUVJJD1bK%R}7z34Tb{g^~ywurtimpMLT{Chirq_$Wef-&NwXyPyOA2?7 zT}wA)ug>va=-?wrP%DPufeUk-5UOlUv>z>RXuu=Zz6mh@c(MWX65IIJ&UbbJgW50j z#N%K3lGZKN)z!gw`2_`mtBc63+}+~BFXg(T-5hS|dh#C#@<%`ASJ_nZV1NJF$2%a+ zG%VIkLlpkFlTjY8d80+5@E_c!d;IuurZV(pcZKcsJX5{5Z{G^ow(-sh%JOpCT3dI; z3d7quV6UvKoS&aC3!iJ1V)mrJuxzovv_;ONM=fx@pr&L>fI1Q{%_(qO6~t74Fk_?d zz6&LIklA`=pZM!4p2j=eYAv#!HiQfGW#*0g1Ay7G;v)7UvfMb>DxUrct3hKq?A#ts z;sN-wNgS0$6cu(GepWeLeX;U3BUyOr5Rfy@m*hqz1Yu*$pDVq+2bYMJwcRMU`poxC z{U2$VQmh`VB}fbZ+tLNgNxfdgX_NDwt?Ud`)>_)244Z&B{t1;Loq#KcCpXH!j;$>DI+oHo<1=7A#(sA`CoeDW2?)5= zl~9nK6vbbpn{sLhpZaPhSi!3CZ=YW=??#HaDaM77LQk?(7kX>dA_yyOH7M)_eY-y9 z6A);6mbF|ygW)zpirnlPz9Cfp3m*Y%WDqNVljKq|kxwBA!x4dTRjPRV)ln?bcDQ`- zfYY_~XD}L$R?T-|y(D2I?1m>J`GPw+G_C!3%n{vRt|uiWX>L9fQQoNjeIH0m{Zq$) z3_S-_rDp%<&z6AN;te3^tdI2QQ8%CZBY)?#Kjq?IvDtYzJdn-o=<7HD-P`y+Jw3@F zrxF8MDQbc4TwGjlEO8lGS?3E*`AnX;&S8s|pRel%_^9I?EeTU$VUJ3FOCZE}w-rWY(pTof z^@41hDxQr`CV`3OnaVhjB1STI-YYZ3_0IQNAv{qiN@n6I$s|3np{#)%HZ8Ljp~Pzr zRDM5e?h!{$9eyf{dDYz}GlpfW#?`Frf=v65koqJu>QdwHpa-C1dgP8@jTLkMRq&gP zygbP!`fMNdu&9RW?AYkp%LNIICOJs*`DVY<+epm>2@FPceEe8hS-7S1lsScKV%c9w z%0Uc|xE7R2kH3gTJ0I0;sg~l8@kFC-mS$+$93_YRHTpZ*JL0^t(cw+Njn zMe7hl@fdEw<8^*(Yim~I)kA}KrU}!%H-cU0=Fz%3PcG{!DJgA5ZfIyo7NhSHlBxnh zE^>n~*G#<}ldfxG;lFbWK_5LrL+uce>nh-MHd_ASc5rYo7%V$ID*wfclh?0bpJ?M- zSyk*G9_|5MxgA^qf>z$v*5XnX5R-i+cA$ELP8W31ULhfanTh=b(f^#_LxlWW7FTG+$(iD>9b_wP;b-AYE7V5?G}J z2M!SZ=#SL)K;ysl^`&HKg|~^NLeR}&lNO1#HJl_^jurAtz;10CWgMNGsw4bDcTv-( zwRk5g>{+^$0O*!JEAlkTjQ)gs?bhlgS#%qx$4T_~r@uuYwt?_x;xR2MG!0-B$e|-p zVb?()B?{g9r1HD&^cUCilwiiKx7u@dZ^@U$DZQ$}#Biii=^_&3D$%B;nyu&Z(i zcT>+_7-xzm$QkINWWr7%9A$y5wXexw=f`;uV4lhrXuoVki>?N31@#%qxhyRuB?YwR zI9J61N@uH1%vEtN8%a%s&*|KcfgTA9<_M9}lMcmTei~kUgCcAOT;a!sIFUdfn3#%t zd-kYC{7LBV-5F>kK<7D4BSm^l7xD}qIWUk)trM5EAn|*r;OT`f2GuULYV9&^HUv|k z3*pl(K^P;r*qA}dSO7*LKhORR{d95ehmhVG7l)cN@IX){&MK*?4X`^~bZWyQ?cXoC zx*_?fL@SC1?BA2w85*}x0U*1T@!WW8@m=qPkiNbwRw>Cn`WaiPGrj}-PjmwcFe9X z*E2la0dOl3H5Ru8skgT}fsLc0t?kS4FYGv+GdMERyRt&e&(G)hJx04ABVhNGS5*}N z`UCzVYNh=jl9c)C>|Zr$+m44rpTrv=I9*&CMfL)x#K*^I_U^EVRw`whQ(a7I?E9F^ z{9{jcXJ6WTPpj8U1*6X?zm6UI%%A%Y=Mbaat(~urjH+8b#f`54RgVpNK0e%C$_DgXBfcSr41|kAWY2U zQ!?p>vgw8yjUfw@7@$9Ygnw^c3UBorgt@>=>tF*DuVgVQZke2>E-&Vdx$K+rr*QL| zV-`icn96Xsfp62!J|y5QRbNS*9;qz=^*Gw8|EZfz$o%;8>Cg3{4{j%L^`q~5 zJo(sC#mHTVh;iAZbMUvw8oWg7a~GqpU4PAtJY@+()Px$Ju-PpY@IkH2+R(tjAmhag zB=QEfIZdcsoZnvzAiFl_Z4~i`xC~p zpGTd~tSz3k1iC=-*#3_8_B4)baog7yXD%B{bLazMR_8?4PT^n6do7Vbm`hjl7#tYj z*phhr9Fjs*N5}P%I`rE>_D<-fHc)0E%X4`?BSbfl)W7|9AGj8vqw0`(f+b$1fYb(- zb>P^?lPGSeE9zEfRuLe^h=|VsEEJ!~SN~_s_t$**|7ZV2B5W*Vh>6 zD2|{<{|c<@86fb%a}jDU&MI(W(gK)KQ07hGm4p8cnWI)!kKfs=IF8D7AMA*cjv(003aWeFN110ECT~{vjI5OM5L~8vgP^cX^}d4gfe^ z|2?2y=R(Vuk7ORNbv@oYTYGq$xmf|;-rihx9~|5*%v`LvoZW1`9Z8S_04?wqDx>L> zd0^!2p*cDAeCU2Okn4?)uPD1im5Yg>fxHWgj%H!GioT1wb5xz!eqSZkLa$pDik!^V zri9H2DWppbzp&g|^1r(79SHx&V+W2F>!`CX6ZJd}9BR5gY8h_72lKBhpM2~YTLfxp z>G+uE55}1(Vnsy-wt}(O3or+9f!GG!=EtImMdX1v^h##@$Ev>q z$KpB{)b;u;1A?(SU!u02Ei;BQRZNEG9i616FQ1w4IkO!y628BsLCk&7=k4WCD?Xk* zS&L(W^5Wt@k}A|*>WsIRG2dUUSA?cUnLmTq?1x(s;2(K%a*M#?CT=1^lSo<5_>;zL z-C9JGQAFm~3e8d#%saQgSy*Wn2Of6vpwGhN0?Xn$9<8UjJ!AXsuglw$3m1^e!C0USk?MQ$={^J=M&ql2x^o$dJe8t}o4NM$Dpje3}?(0WJ&D4lV0DU-Pa<_BRv*nyGLTo z?R=Y&l4(ymo}}>&WGH~qw5o6O<&9=uP<>LChKhSe+^qu;6!AdcMaH_puIwI5l^6$$ zKeTAy0LA3p3mBQGe~m>({6oDZL%^9rO|yIFHeCH#BYx32qwFIH5t2*{r`i08#!|%4 zZJ-_!^urev@>+J`d!FV63#;?(5rRGg8rsaCfYiMNw zA*5(-`Bg!+kNMn0aB%U~zQ3Wrzg@kk2(t(gOl~p`q>u5|D>ci-c^R>Vw_^S>Q2Ehh zS6+|ds){ulia8iVQ}FW+LliHMAg)v;X*6Z0qiCR_RLveMgk0;dIGA(3bHOufT;)fs z?05Kt(`A$wGO#D&K91o-1dvXi^#7y9h(|my6&gzOrPtFUAtz~rEBZ3xH$i+v&j0am zl~8)v3@sxsytjKz{}~6Vo1a8Wdy+}#UwR`x5sxqy!US~uArC*OwkD$hGivYb9iu7` zT9?LN=U9M;jD)DKwU?r>U$KI))jKN#@_puyrI9>uXS}<5x8fo-f&)buC`Nf>rM(AN zV3ew#C9e=3oWoMnVa1K(W}P)ataYF?K|&HRHp_4YI5=}9+)@|6>(7d`y(4T;AJ<0( z?U8rs&VFm!kf<_1AxN)zh2X5E8}&wcs(r4%=cs+4%0a!+-(cSOlx^hS3Y#>nosWa(C%UmQ!A5`$B&yai&Z~ z3{aE zU&1sf2p&bCeH4qHcWAD-K)WFf^%J_Qf*ia|J>)wiX*7O^!sOxuXs(v=PAHT`oN}cZ zO6C-Cvk^r5&uIGZrS`1I)vG&R^1rnpYbE$5r(wsgkU^Io#A%xJxKJsHOhMBylBJAn^!R5U<-zQ5 zi;%%OF|;2QopwU+SAmR!oCp?$jU zXV3~rE#HaIu`^14)74W{}v%I*7P?a`9QJ-F=ftw(p(kxDHq zVP%)7eA5Rq6bxRALNIqX0THmG3#a$i^M+%gAR(rdLtk;d(%*XflVmjB7%E}JU~ z>g9Gyjy2gN^%*4Ff_56jqPCGzLhRBiIXd^UkNLK(vQ`srxKkVKsueBV8*eQS z3ZHlxc#>`1;T8JoKtOeANTC9oQUS#Lt|rrL?Fe&d5I-*Z%0>9l#_upnYz?5KslZYe z9jiQCrztqP=Ut%@fJl7dh~$SCkv#lQXjrAwNh}RCquk#GNDx7b;XeGocM<*qB1kMp zwA}^Vz-ME335Il*?PZOng)cig6s8EK*egQN4oPgN?^Fl*&Qg-CYfi~`huHHBg1~Dw zwaE0-kY>ZuAw&T)DWD2DrWK+de|RwWcJs1B9h=Jj6q zEiuJdESX$L!&Vg(TcgYM&56{#45Ho&mX=2pWg5Va=ey=lF2*(eWb-IDfJa3Kn3$-s#9o^JVCIOw=?EwQDK4GW4UG7si;?=MqaOnN=RnO1o0KA`Z4$7YEe zIzpW%A0$KQo2At5tAVpLIp&{+#eAK+Hf(QQ3psL6Dm zxxm-GXzv;|QlEz&hKMxgg7^ogCHHOkBZmNOB!pYD&fm0f{mAqdYTm)!X?y)6olmDF zEk{oN+m0zmgw+D+Wf3=Aq%#GeD}5tS^Gg{hJJC5Gz!N^=mVWq| zNPyD}hXf*{M7M+qXds5bWphqHZav{97mdQTRLA0X7tK92UV3c^bHjId(D9 z?#s@w9S1lWMKZa1wyhH;d^Qx~$~>-$Iw1JzzGYEED>)%S@MJq%&L&n{G_GYCJ zC+!xpeW(~WC>+aejbBIBYgkCYiDq4nYHEwdGwcy4{R8s{VhCc6z!ncU*%i-E8FsD1 zD#(>?tLFgMBkmOGlL!dY5GIFKCEy$FPSGs5KSbNL6DTIlX~0s^R~QuIW`0ZXXu=}D zBTyrTM8fb%KqeFeQ(m$XBr3Jy38Ks~P0noRE-gK0@De4UQ++GQZs3sugZEXatv`BV zt3uJfHp}In1yt#~%@R5w%0*2tQJ#&TN^{3+n)}Ca0s=e!68iXhz{!g@LEk!KoQ8hy zs=6e>7fN%WX8(qrPHI=V))2K;c`M#d(J0WcNC|k*PHwvHLM{H;HVk}xiML9Ob6p{( z*0CvW9GNLS!wzfMzs6;U25e<6dd4PENK?^IN%^}{BOY97PX%dGwv@ut zKp_>0Zmr_Zuq0uGl{@JEhlyJ1qlbdf89(Sg=wwnOzC3nYTQ)!ukY2G84WxY2sttQ~ zFIXf#`|sb8+NGlhg^+OF65l+-)|7jZL%}by$20Yw+-paW#5E}u>0tzCIulGt<&p0-?4LGP; z%LW?|59Kn6|6MLw(4fuuW1LQ4;l>Q3O_SRz){bO(*CqW#&f&r{-!g}|Zx16Ne2tol z1VwNoT&4#a{N*NELk9x#z}|jmCv0HPIPfqJt;5>f)iYOo_Pi`L2B9Fm*bHpPlnPEj zH$zKAb?FnGqUrqB5IpV{q5v{GF4h-F?zzxdFeQ)~`e@zBh=(X6M zc>G2~s=K_^di=CC)S@-+XBT1*sm&h{0pQ4^+)KlY+FVqYAz*F}6oiFaRfDoJ1fc7j zj0e*9w!H2+O_-ZNuxxuC;SBnb5D0jA>u3xsfRJ%rB0uHbD8>=IPm6m89 z4<3c8nqv`~)`#AfAimLUexuKpz>4&MLNLDhB+iz)5=Y9`W5^^8{-g>b3L~D=-MgY| z$@v7ey}UALLoPoq>S&g!(3hx`XY_@d)Fy%ungW8?mO!95+G*&ofOD>`UqCxb2>n)k zU6jyr(Mz`O;RDkOBH1!r)39P5}Ml5cxG2;USP5>6}n|A*Q`X|vVDbUd3;za0!t2f zo6oC6A5T&9o>Jd-kJ95C>cpB`4>*xC61=PfIj{Iud;MFj!l62r|@6gcwVm%LA2o>Xe_EP;6@xeK)cp1zE)Xo+f*D z)irq*i0^bmJ(q5YJIScJ>#UbwMeDIzrOH79K<Gkz z&#QBw@q5b$54^SBrF^~S{=1~bcBf`ADprn1?4rRL*+8nK?8FVzmgG@2u4iD8F!yTb z(XMf*puKop^k1uTjoNZG_+kZXT|fUzFz26Q@idWgX9p?~1^_Ew;Vj##i~BdzBuRb0 z0>GOR77vBw#d(Rx>h`(FD@PhB&G{Y{T=A)A1#trnLqz5SMx8B!|5iMVOd7Reul_HCbbdJrKU^y9Vm06gkItOf@_5Ls_b zVuIiU6PI{P^Z1Aa`@XyuW;(?kM_FZi3AAqXZy&& zJZ~Yrn)LI=bSO;tPC=8ay5bt+L9_W2g3gMf7rACgVt^vE{%*-~aSmuD(OBwZ-{nZ@ z{)6dWrfE)+H;49KnHnv>I!slcz^UT3#|=LHqh8m|qv2>7x}iVvl?!~Fo+<(n#vm(6cjc4XbQ)34-K;n+ z|3PQ(32TemZr~7PDySx)+V{-CGstEl9Q1I>+t0J4>P0R%*I`p5*o@8MeK>&>#FWuw zR1{POv%bb(EBPRM&}uyGtx9Zu!ZF@zJLGty54#p(70f3aZS4C*cSPE-U9J2orlL1NGvP3WM{1$7SvDQ@cim?-PYHLO!8 z!i(r+YDsG5LT>y(aS~ia+%L%QV5)PN9nHqR;U3W_rc;!Y58W@5l1fstIdTbUn&yY9 zd^ay272f7nalhiClfppqlD5j&Y!8+EP**<>pGbqkv7LFZDdC!SKJ7m;v|GdkyxFu+ z0S+jcR?+iMe&Z{JY`mV~>Z;tg{35A(=!g z`5GxhuNg&!C3VgADxd*-eIIaX$&j~YN1+Dq9S`XvT^>MAoQcfeS7V4n$43Qi0*eJpLqSV?3U&suxz)` z%Cd~9RT;Pn6@di)X?LjV4_`(wQ6&@FU2*uW~|*`B%EUyK%qWwN^X;r4X8 z*H)$FjMRNy42nuU;aTwewWZUm&5b|M>t&TB-S@Tccu>;;ftAJv2drC{nrKf}ky}W$ zP5ZvodnOA=ZvTur)$)bMH_i#1Hx!AJzc!CnK4mp&Yu$rFq?5=I0CcF*g0HqsBI$wk zhZVhRU$}_4ONPNGkAIbKi^dVU!VzWxwSf45V~bD~pi;dEok9X<)Hl4)tlh!8jCn)@ zCe0Y4na9jQCwBPS3i0zM*|)OSzK58G+`_~(DA1UMDs;v^uey@4MnSJbz5-UkGl3;T z-@4(GfRtBdQ&-lMWV6Tz>OB*!l1WCQ9LOjj4 zxU1^4Ls60%hcy1YdwQ8jt2$BIyw3Q`p9Rh++f%~40R0aCH@A-{dDQQ0sL@xJfkYHt zVeq40=B)nmt>-b>J*N)xqOyChaLD)aiA`^VGNUCok*NSEp`a3s;z@IF^lWaEzrlaO zzRj|@-1!y>md(}OZKN2d!Z;^1E6`CId!!7X%~oo%F4b^e-n=WkAcHf%ikg#0@Eycv z$g7rW<^9yOqQz=cuD!QZ5#ht0v2*oyplO((=lRWrHl4eg99&gmUYT#Orvop`@b3b5 zlx;sdPOrVU9s@kPfz@;HEp2_=OD36`-8b^Si2FT^*;(D*(16tmud`T|_K0ybnV3oRUA{U zfKKz>_D+FkXBzhsKdFGfF=1wxGwx8#BOFF0YjWI0KD?!nXk@TsFZZke%jN@s}j$f4Knm4Bh-ZSOma3 zgwXqBKT+Jy&5U|PNL=QHcVxM9hKz@!^m$0AhSZ2IY_bV*gOm5EfW@=M`|;hUDmx*y z#Qcd9DGjL^U6?d3zwm;Jhf=YIQL$`IjM>2rK8tAXMCE8kea>g_{dki7Wu0A6yjy^K zZ)(y(pghb7HLd09>seL4EQc%b>swN@d4Wd5y*(l@J3v)2QR^BQ{zmkdqXB#(aZph* z4N_}Us4>2HxrgVp449VKNeLK^W8lN$opp-)->sAr40!GlB;OLVE^NwQe6y2sDd>?! z0m4KtEV^!*BJA>!#5O71%knu(*t>raDAqkr2sms^tcNNFW+-|XV4Rdx+08UI{7(fBJPWlSHo=$~BNrcgwok$F^SH4*#cxXaw>`lAsf z0qNTe^L#u}$e0q-Dmo>G2r}y%`*KgpiI7GkBkd>imAMUJTlT!g5Im zCp(9FoO9KU|Gx$Ydd6Rho_~LBux!O&garhLbPP7Jc!m_0}DDZfA-?( zG}|(yo0l5RzkwNCq;9c zuZY)zj-}>AEIytaWlT+HUDJb?qHU!zQ4uy?;pc@T_H1CKUq*Pduvp8#*J;e-qNZz1 zBRdAI)@7y;P#@#%{d;8RJ}?V}D<3!OL3A6>^DAfgpXF8d)e~$tlXuJeK zLZX|a)}NZz%1E8JqKto;f+^KMWS)mH96@V4iTa$|Z64Xf8^_ngG=C7Q;iHk7L1a|n z%W4sokpr<$vI_;EJ`5Ks_&Qz4IytL?R(D55Wu!Mq#XR&UmvQuZRCO-@#6*f1G?E~S zueH}0G0A0Y@TGV+gOavk*u}qKrm)z-o<~W5nE3*nhDd(ifyD0fd@;?jtY$AQc#$NT zsZCN3vZfzhV%!Gl-3mdDIlKF{(reByzX>`_sTl9RCCcl#KWf3~FZp(LRMGsXGxcP6 zF77Z@`u3E+VV} zN)#6%@DZ2yGbN6KonK>8n8Umy@^_DyHsWW*O?Tk2OM`c$WT`_9k#6P(p**KO@L{@b zmB-bFjijmFakFRdW#MV7T*s{4nBOflBU!RR zr(FZ--aelsJ*HLZ=Tf1y&$X8qCta%eorAETi_DJskUyMJLD9sr)0x9_vDC7yBKdaX zOn}eFq_E;@YJ>1_OGbPuwu*;y;pNtfFmN^sfOA|&j+xompqi~A`Ga?K%$9zf|6nyd zo@(1?h#x55mq6M@1ppDd%Uw!;9LV&(N@UQiRiYhVP)WM;9+e+8DP_*ft0v-GN5B9Ipc7>_8Aq)bh4HX+})CR z(A^m9b@yR7A^m?t$?kJvKta^l}@4(hD&rYX+2bU*pJq&i` zrM+hX+?nSDE17mVPXD5P5Bt)NEH9AaHf@-I=na@Akr8*ZlJ9chbr1OJ zzfn6UmmF@);3$~kjRhf1pXHNuaCL(!H294_pNWNu+NRs3+#y|!)ka0nrYL*35S*_d z6tp6%L~T8-)NW)6UBBFUh6&6aiASb}D9PV=a3IV~niSDwn=avsB#3{ElbP!z{8Qoq!1RNOo-U%=AiIBS1IWUx}{~W*N!8*{d1eC*b z!u8+2 zg?*SK1c5+kI9`4UhsIS1``YEuATzqT2D>mW2Kkklt3wgj72u1wr>sjRKZ4WLcS(_E z2a>%y`v_QWE?@0+nO+ztg%D)gQ{auFY%iT$-#I7O>#3zS-IMd-zoNeQ|4mpyCr8Uc zocpq*LNQOZg0^vspCas-MJ3ulv^DTC&d#fXF6}LCtbWLZq3rPc2{_^vWPkqiDOAvX z%XB`TsuC^q`{UgYneCxBMzv^u>Uj9~7c#D{uDhh)dU|F=oT4++ro%(>kN}AsJD=6>{wG_ddNb9wc;*s5u3i35*WAWfRvB-O<{N%r zX1DnZPgUqg43u(&M}+4DJ>J=l{zSEOaoP0~Z}k(5c6T4m4GyjZ=iS=vPnj+5P4ZCT z2)rme^);4sc*|UFSslkoOD?c|ReKgnALZIovt#UEmD29ZAk*(N+ zGqv2)sP~UaaL>?Uiy2$QpMU>$e0qo~!^4w4KhJCp{vG@a>H4r}ijK+t-pl3IZKtQl zR=^Zu*Kt+K;b>Hcv8#{(ugn3^Pfr_jb-0mwdsF-VFfq-vd9cdTGbr7pLu(JGaV=|- zvq;9fkMfj0d!5i$S673nh$4uc=5mghQj`3bS)HG_yB~*JS|#QLU7st;AG9?7K9{?& zZx}`RSSQ;_1^&3b6*ouxY=t#CXSlT?9Ljjj3JsToj^UU*fA?qvizp{ZhC5`xS5TgSR2#+JOrGr>HK{x+7q-)2CXy9p6K{$PZI!gP0L9QK{|-)=;1_!#YoEn1m~zS30}(;ir-I z2d3zG#9A2gm~~Ttz7+v?Lt#kMncx%7CTs$d8!FD3F>%QI(z;}gMZMtkoY}4p51SDB%bs?Uw>IXu3meQ_F%Q*t#{h>V%n4S zW3-Nlg_quqKO}i&rMyhH#fx*Q+$fUjK0!t&xpwxFfvY8ebjhR^*uuyn!~wA3UR-kfqR=S>E~xhO`&J=i9+=f3I5jcu1H+& zuhe25w&@ozJchnpg#>CN=D^EI9Ua}^nMyOFv6iR1{r=qJw(BLn-J@preScW|kTclo!MDJeHa`vf*mLvTHAu)!6ghbVpxqw%=Y6M*p(UdK}*_ z8NYSX+u;ns66L#>6|jE|x)@bp-{|$1T=Ls5vl{bW^0i67c)VUVDZ4ys3u>L#v6?Qp ze(b!ztKbMUR`&rrD^o{`f4?PVpK|UTLhLouyn3kFHd}5N$mEdt*sFlmtt9Qt`98DB zADtPy4QqPgp5|cqoP{UG)z*YOew&z1*n&pLSt;zNtR0fSsm&zke#xnN{fnDB*;adQL8%KjrIXZsYQ(nRBx` zRfv1AY-zNoHzhTU$(V;ACD-#}A@UG)BC%T9b$n>bIz)q>kP-j~rK{y8Y>n*00?L(P zbP+ukvZQ%Lqod9}G)M8UaEJIzfp=B%BXRh;0-(1;KO%W<%slPneSz5NB&R{x~3 zN=*Q0C??XTsf`F=%SMmg>Ku6vVSO7!Df&0I-x;{rIE~5QWncH(x-PjKy^H6UV(2e4 zEUfS(eBehV5ALT$9Iz>O)z92Yu#m9PwcutmwITtvmy*i3DGR2DoUG3P9y*8)T68lY z#z9O)o0FSM+WaBYi;;(4j#bNg27shvjM3WWf(Ce0#syWW-H+Bhmsi8y4F82hPC1#@ z==Kl2E|U1p-(zYz_#QL9#(VQ4H4qUe6Sw`rAZr$~7h zj8DTY3X?;<`uS{B@pCYgg!k!R^3F^JdOTG^&;Ib$ubX+}-tN?8$i>+;k4*tpkFPK3 z`Gi4ZOYpg3?_)N#{< z&0Uc%&a`c5>W-tPQCPC3El9fb2>mRfjx0M(OfHthvYRvNnO2c)Z$8e~M>r$o;idH!P8OTUZBHwecYpEG}^j)Z%NBS}%uK92|M!Mrs>tdoG`qA=moCz3B6k4)6TkU;m{_0E0u&=Z zukk$^GYz@p0bjoy_1X4CPhH;lgIb2*ctlAmbr{39R9K#Kc^(yKHKB$5KhT6&W<<*u zeYup?Y~alHy|t4G0G3G?qr^eQk_0#nnAdta$^I^OP<52e$J6!P{$+Oy!H#(Nh%l}6 zf`t5_5rYOrr+uUOT^42_dcXEn_v~C>VE3AKuH2uPKS(cB{$AKZ&YG%K_+Cn4=H81I zE?G|T^olrGE&Q*ary4sCsa-yzzxLoSTz>x3UnqYDxC?&Ty%ExG7ebdVm5y&u4X1VJ zx=w2;QHq(O0@HPRsh0#2E9G zlBSy~+ZX-%aL->sB79!vLo@~>V(4gSb}=?fjkv0@nXx9@z2e@OSA$*dG@SAp)8*i% zmeZaDhmzdHXDymPf|srR4@47bA%G)CfFP4?_6; z6C$e}+Dyq@29oeE>3ovn@+IsVsVj4^VIr4>x0(qqb*Vp-CAgg^*Rmc2Ok+qpFN&ibL~1n(e$4 zIfM?Po|S{C2H{RKZ5xst{)6Y6?_>#vvgEXxV-v3$T|20$TP1$-2nh|9VXRer%Tixr;~}n%yhKN|V&TIOs?{NDP%a_@(MHKnNs3-jR<| zFM?$*Gk%T1cO-_C={5O9CmO8MMeVD0;^TgZ0Cox{gN|Mr#-9|UoC`-Jt0Y>nLLoT0 z$7{_3VzBPCAOi&zll>qynknd6W$T70u=I(#ed87Pvy+Hxu10UO2ao%N2n zFg`s|b2sCU*8_!pB=f#%e?YVY#Gg(~#WkaF-UtH1cVkIRDKQmdPE2bX4-^Gn(8KS(%P0;|iH{${)Ehn^{6-{j={Xs?*_anTH8Ujr zK)FEJB6JKjyq8J4yK;cd-E$rV-Dv$4BN(YadOkVWm{telM-?UlF6HQX5jjo;Lxn9j z;;j#NQb^%FIsbCRPlL&D*OFNqWTBJ27VFf%>lBQ8etN4wpb)G(EQgqIzbG{9TDoR0 ziI4bm=D+#9*OP?{R#Wmm+X}3C#ZtQv**`vkKE;uLs^m+J`!wTsiARMGgbV)8S&F(@ zOZ9fGtVB8u{D?AA zZfjm|%5IDyBpL6zk?njr9-o5wxP)$tj{knAoDo8)){>~*G3{jjfjplXl-DCRKu;wf zN+n-T#gxueX|rFM3f7(Ltg4eyA(ur$0fg9DSWYe;Z^(gf%sCVx^V=y|L95+ZR%x^? zh%P%JW* zOlv|rV~k5@jffPjYfFd}hv3T9u-oq+Q&aMlg)bo|O^AW#gi*hnnNGAA^xN?VSkqJK z`8MQ-$H2Q=Z2i&8N;TWMIqfTAe`t1OB83HbyxOVB^Wau=rg@KIGej-*Y%`H$)mm|5N>0-U7(ZL>!Gv|z8$j$Zr4AopvKK2%L=?|R{10$-_TrXVV4<6&i)qA19|oOX+@-8)>Xe0L1@(xzlgyI25KxEp{^tNvZk2mkxVQ|DLG&? zJ;{<%JMLdkJsml=)9B%pO7eyF@pIKUrSxO0{l2vy{S%Bnr^m0yZ-S?~Y}3IB-7x3` z<}teKcSDO}+&@1SA zM9HIdD!7?+kH&Mv)6)2pHAsfT4?aoj*SOW9-s^b|6_T{9`=HirMCYkTM_v6&M!bu{ zV1I-q+?KdhA|3QW?RMYhJ0Dw-t99W4Mc6qe1-aKj#4G8YkCijwZVp+4h?{3o<2=v# zBOSGTLG`#39d}(b+|SYmPc;!Qo*n<7zxpF!V^}$Y4)IrLD8y30^4u%&5+9Ng4w(!~ zPW4{Z63E%AQeN>966rwWV?eFv5dWBr9s0Qnrg#vZgMyBRm4Nc^jI&+v5+#p>h}PlS z%d$c#v`R^#bqe#cF8|$}7LQ0aI*pdodrNAW_$mU&+0YrZ-<3CBg%nGJyRK{dO205e z&MZYUy-8!P4&*XD1zNS5GSbA+DPn)a759;+6(KEubWHajq;swvFpK{vS!s0+gqYig z7L-mip}Hj!lIWUIsNSmdu<#mQwtea`cl@2FV<}UUbQx9Th~@rn$F`C^hfS%`5J?HM zS-#uM?n?cDYd~gvW!#%=A%N60KtC;h$VR3@;zr{ScP8@d7b-f}?{&7VpY%&?TUlUY z0~)i?U=YyT^&NrLa{lVqmpSPP6GCCu^Je$j?{H-X`M_-Y7G>wWvvP+h( zW~bL*jnL7>BAox#jPt@Y5z9n&_#6r*3y1v`LrZYNHmHGVlz4dtv!#W0ZnSE}q|>>2!}v%RHU!h*RR&5}G2u z{-pJm%-dU^sBj^m@PYv1$DEjjs}vgVf+6Q(O8C(NA8)K!{G-JhUD@P&*bs62M+r*R zS=jFj4-uSA8A@zu4g>M1zC!q4Ml|))n9in0lrLsFvwuAtA-u;5vPn^&R(Wml7pX@> z>$swY{}rDlz7N2Uxi0(jTywo-=0>%heteueG)~}m29R1J(Bi)hVN7$+=VMi`ciioB zOR@5AtIxhaxHGPpra17NGD6jhXGi^qp$%vGOwYOn;6sPZ+`bR(X1@1)-m%LmC^)|u z0Qh}QSJKC~HE))R#k5QUw@Zq5N94ugT8K57iKsqv{7CFqG6565{h9m)A% z{$zq!FC;K-DdH_=K}m0V@#3zk=d=C!IfvzsWmM!yuB}`6Ep5~=9 z=V((uNW0#$2)U|IO8+a+j(i=f*%sT!!PgF;?%O%9+{New@||}G1mZN^(}U{F)R{Ot z$)l~%)mGePB_E@cHkR-p)!ggvLN29T z?AHkZ!!S^14o`whon@hZq*UKhNxb}L<$jk!C1K0un|nY1-c|lr`B#(YQuD7R-{r)= z8kw&0Uq1YGT}Q{VA(B9x8$zD!M-9etS}IKqoisLg<8IrGdt(4cLlaU6>~sn{oy1Bd zuu@5cnZ^nyu~Km~!-e;n8}N1X%-ix^cE)7e2;0h>lqhVZkO(tP@WN?=Cr@EcM^UCV zT#*i3W;+4xMw|q2YE2gpY*}bX1X5ZEY=lgbk`u)30TQwwn;?c}5%9TK=WnIm*G7wb zAFZCYMUk!EkVukdlJB1U0ip0(I@G5yl*QQ$!;~SMZRI>|=fdgnBL_pZ``}B79G$?i z|3zA_ZNRgk`(irjp)l)?4RY7RT~#GLIw434KT6K&JBpZQP48L!f!Zc#V!o5x88qk) z+8u6A#Db(sEZS5QC39BLBBLH0ui`4M;wrAI4%Rg0Q;%pRn1%ZBm+^Pm|9S~!WcMa3>#vye!kzVZS+@9RNx&vte4zkHfc+|!EN zRb9G6V-l$bX5BO7d2YTh1e8Bms1WL@Aa^)DL~VNqq9Zrx2iPVB7J zn7dGrQu6lTyPO>M(4&76U0K*Q0fm&VgfU8EV^7s-sfH6r8q#GJV-%FbvXL*pO4oHh zRM(|;C(;)3xl?@lre-=?D|c0aOx;d~6oi`N<|8dS1Fx`pvo;f^dZp7!h`R0488Dnk zDVa>C*yt%7MgeYiHr6S}%2CYkZ#iMP^Sg?xD20{Y{#QExBCCWPRV-qxwF=f7ot&Y*v=%CZ*$M0&u zW4LH?Z6n}r$Enw5!K?;_s-w`(FQs;asT7se|B>;d9O~C-)ow#m7K8s>dD6|3IQ`Wt zfSPXLv^7#v7A&b!{N?!pe98pg&Ff~}H;;_+u*YP>nn1yLrI1PsEa8Nla#ZaB)@>T5 zsV$>Y*YZBvQHi&fwFm_YpmoL-ZPHAZj4GCBtMFpwbN1|6gb)`O&|HqlPAC>CPA%y# zCa&_o%Ks|=tNa%#&gH;gQ4}_A+*tIPo>|XXSje(|+?A}3wQW+-5N13=Iv&AFBoN6o z!m^OIjTK1{8yUkKk0FBsC8?nb2TnCWt8pWKeLWb9J0mn@gs9a|Oq@e%{rEf)x&i_2 zYu`?%@2*SSs+_RQXM!W8B$S$FFx*Ep8DuorhaC%|*#aTOjPfnf6dg+uSh|MG+d@zC zdUkg0MXNy}D<|tj?tz6cx4>wFiFUVCF5v42JYtST_l8UVLB9wiByWeICla6 z=GlJhRwPB|(LwJ0(CUJ5%hms}Qz1@`Y|Xi2)98Ga+aH_f#3}~OCF*}>Dm)hjgl%(V ztp4NaWJx}Yv`k|bq?AQvN+y$R*|MdgbS{UEI~R*7Pc#}uQ53x1%jb*fV)7p!A14q9 zTwEA@IbbpQkBp4a)z!5k+rJQkiHQk1IyzP)|9Cu(ZQJ<${uRj|z_x8tsZ`aww-me1 z{Vk>B{Q2`G^VhSP)q?zZ=~x6S5hpo4#nj;=qz1#-sT7K-p_)z%%ZF}x(QPlf^kLw| zt+;7Y3^c`!h6~l@KvU}H^j%H~5}4RBfhl4nWIu6v3{4Nx9q_ZSeFJ{yjWoGhFbY`a zt1Y*(lNTf@D@n>uVcRANE6zxGfT`#xvBWfnE$E?vUagTGYA=lq+i{)XcT9GdywZODZUOIOKKMzzKr{2oAEtB+X-)8*-?<*RnRQ<;$ zhKYB1P>t%py6D5_aqOFI9Z$V8!2R3(c-)1R-%|B2CA@nyPB4A##gn)U`v`YDbclwQ z+UqTquu)RrDpB{<)JkB+LOzjBEXk+Sa-DO&OxgNZ6a`JwN_L#Naq<xfAZ`t<@jgsEf@aP zwttx0_tg`nbpVMjB8ODm>2@0Ro%poX==nQsC@kr*^8jfP zBx?5&vQA>jNj$CuJCXO;`(c3r9&b_@grDxlMAH3Ou zsdNIMiV3!?{}#8sZ+@LaA|mjm>es=v7*13aCex)|Ru&4ieA3K92!Wy~7yoAOWy9rm z(79o<_p|qMJNtYKN^bbvbcziS`7-3^ou5V_PKDy;%92}l<@gs0v(orWDOWWAVtFoi z{<$t~%c%a9Vmwv||BGR(Y5z+BMN!Z*if3iYrxZ4c>2cztqeS}pi5wY3nbc^Mo9IyP z$Eh^s?CV`SO3kdQLFTl}Ns?lMq!`6khtVAqxLwfcYvk^>t+cpzp(!ec=9qo@#1$FdH6(_q0qHR-Gh{pj)re>|3@RtclJ8opJH{yRh=2U1aw8kP*tYPRLO9Qe=Jbx zMVFmQOkP3vpan{wc;zy~AJr=@)R_{_}k9$*sKd5C0$k{M-?u(P?h_zy5$< zd}I^ZgJu_!e<`J8;rI)Zk!gPP^w(k213YkD50TLeeC?~xvggAeV_SOzxmb4mr{3eg z{LUA+Fg3-t_x&cHeYlrD|E-_pouHe2@BbA(^XPW;oS}K4+y7$o7j~M-Gq3TFPfzmc z&wU7O;2?kUhkwG5V*@|)xnE;P=j<=I%dP$oeCv<+{J$MSw65cqfBAE?4nE6&`}=Pa z58TY}|KFdX#XZ+rzZm`BVna%a4sy0WBPF((M%os_7DPt}312u%VrUFIW}=21xTm`C z$aS=8x8PI*DAZSxtwk9Z(n4Zk$v9E_EHQB!lMxzR3O!BDtZwYW<5)|;eFHv6^?O#= z0wHbEc8XwPnxiA{5Q>fCH(|BX$W3~H4&O!`g?5IivvJ;~I;VU(eu$6QtG$P-~p{+31M0een<=M#5~|SDUq62+1pN2Z^b- z0-%a9Hg7pb*V_5HZb>N#j+*S1{<^g(g^W_J)nUTC5GdAmvI9ddigmt)I`vAP6$)3Z zqc8T{P}}*rKl&oUAO0TS-hYAzc6Sxcs}lK3-7l7=l=5O(Ee`)NzWEnlU%9dUFhBFDzvq~59WS{) z%Afsi6aUYD{1St=|2J0q7oLAs8C`7tR%(*({oP;l&2wA$@y`nS-uN!@%^&CE4X^WW z&%Da^pSWXD>VK*Dw{F6JI0iViRPZR5#*RiVc_QjJ$*i0uUnTU-NNrgyTNs_53@!$}R!eF~=4XYiyaX9K* zc=jBrlJNti?FLqK9XXbk##Sz@nauA)%1$^=R*p?#K3X5tG8x3 zY~77a*)U_gl9r9D$jO!EFfyLx?UU`GHUbi-{U&?vtMIE;3I4){KHg)MtN^Z@u=)j0^_bw{Igl^bX&B=_pR`LpTkA5DU*ge?qc2 z{53Y-{vkg6#>)&L5yHvMkN+5VzHz>2yIm;$LWnu}Eja&{&FpD58GiW)`tFV>FKU>y|&0lr2@zhT~#nXRs3@Ihikty7rO*DAD zgb#)nt^Svaf9K{s$ix_5AJy4;Qx^mK1;>w{#7Kr2y)cQmp`oI*=gYqk&&7nIDCofx zXF2-Ee}^O4j6c1J09)x$JZOp=)nzRB-rnUQXHL3IVad!M;0bX7TkA*DLj;;U>oGj?+5Nd)oR}c&`Kp37ZWIf zoi)oM-CpdJg#jQWiUh-`t=%0zlj8jJod76elFiq=OIvqk?_DYW!j?GCD){U84okq4 z5=Xg1trp3Ep3A>fSx70d?c#?S6^m2#WUq=i`C+raw?6nup0NLzzy9iL-27|B7c4IX zvSno3_TusvHbP3Iu(53$Yvf&i<5z!$e|jd!fBEiHbh&J*tiGCH+cuVE%~=3kDdtoE zwk@#j41a73AtknLRo!mqgNykWkgpQd%73cwWj_D4AwK;ZPcilCAKw$oJ0B5dy}olsxE2%9?z;iy>)#SK5{XeR?h+UpDzT8~TXyoV^HIv*yIB0J zl{McQR4Cv4^bUOGk9md7C@0R-z4_9o>SETOLYALWWmArSHU94P;~(O+=U-W?0Vu83>|rw9;K6!gWuw1e+N$8hf6KI zps?Qj^Xq=G_zNq-JFmUPX#XH@95~H}9orfH>Ua3IbAm1R-BYliSWf)E|7ZV^FP>P% zCmtQ=(8&Qdd!4j+TkvhYn|rr77ma^CQA?VNqM)ldW}U7mDLmz@HiJ@OZJ8orj}jL{ zB*id_K8D8?#-S@XbO#+yFU_t-T0I?f`mV#Nx$0hE+4Ry@im~_z)A0!sW}J!0Ac^QC zN;*Z8=4Fl1#%@Okt=eW3T`9h2bCL9y8X-GM)a{_r)jaEdEi+$<d&PHm~boYjWh z&b!ccp?)rZkjf34MgAh8O7bd{-kR%g?s^R2bMiMzlG*sD9r_}f6qF8{HH%bG-Z=Yr)atH<9ycfG-ty)Kl9lq=xj8K=37tx zx&QOyEcE+twrt_2e|!s$w8g4z5AamtHAd|wZoXmtocxv>|4p}kgr`+vXw`SuO~z9EO%Y*K zeFgn4=)L=)dSpibp_d753!oJ7fiBkml)S1}M*7fi?ghY}inDuF^-A>EM2fGzxB*jH z2S^%?A9DL+aX?BvETWbyI$?&ke#uba6q5u&(ds#yB@-174%#Xrj-zpNIPe-pPo{&-%R zt*qZQH|@pXU&x1+oEBYw{wnR8Zs4&^H(a`Z!yT;OlYKt79V{gO#cuyb%Np)^aP_P- z+i!oI9R=!rA^GR>TTK3{-oQ;cXK5&k!VPykRIuGI$NFD;-97Z~&P{U_5B6@)JkKl~ zSv3CnoJ-xS2l8dm0c4%OFH30=wFd}U$4JV4eC`CjZOyE6`RMjML){*H_kgPhm529 zGm{+s%s9O_G?a-k8@4U^x2J;)B|eN)b#(g_cRlLFL99AmKWI?8s9O z`K|>1sZ@$YA~A2j-7As55Q0=HMLZr~k@cTQBv4hAXf#@LKBeMa?)(8$9P#)#3rIdt1Ax1_2{)KoH3ttG8#4A^}h2j?D44IP( z+uGU)hr>ipo@Dr6|26Zasuup4z?YsW%Eh!Qxh~0nCS1Mw>mCo?pZEkphl7cU38tr~ zXT`6Ie;IkoVJYh0;c&2K%^Iesrx_j|CLWJ32>+#S|Hb+Rzu!-LdpnUxgyG@gi|>AZ z*mAO7?)6`YzpARVwzksQ*-3YIcSStQ$yMlC{t2l0(50-*KAs6@AuzFIjJW6{Vx7cN z#_%{Lt6G{^)6|2{v4KwCZ8$XNthlu(<5Eg&X=6(pA*`8$bp{y<_YqA_lS(I0Z40l^ zXu^qKakEBsv0dxI=XBxK+zYFGOBP-6D3+x_GHOoqV(J8|S6#>5ZTI0dd<8-lh${ur zbd&=l2RSh^jl;g4cI`n7!&_RGN@uARmXjb&zvtWd?(SgIz9%WPXtbD*cP{44%!SRF zx4%!~?rkXE`TJ*!Q)lsR2_U5;d3KTw?M~dT;uDta7@CDGB>()h#zcA_VA0+3O&OhDV0zS~rO&`sZa0)FVa`~N99n6&n#*m<>-BoswryL%K{>x2pFVw>j*bqR zo2#D;E(e@GeHtkxJ9g~A<#JUuz!e*as+nNqhk?0@K&9yyidziXE#Jlu9>nzz|G>?y zt(oJ*Gl>*bm~)k6g-aiXlx)7a%JWP*HS;f|u+Kct%`YoQwnfj8zsMxON+hs{h6uH` z5(os?vSmxv3eM$H|GB8N{?q9+sZ@$oDn)N^FHKENS1kWp+P`U<1cO0bE*IBcdo6Ca zyC(jH^1a;oOPSeWCmN07tm78Z`OwOIS)Q?wUleQBFCk45VuYyGPeKfXHi6HbAmDY< z?((yyaW!k2Zm(KFDuuWiV<3EiU}BO)Iz}Q9B$)`Ir%l|7j$ie#!Du0%_t4^KK(FW4 zFx6rStbm2G4BAm%OPnOx=;zL@AIImY+nz>J~_dy*R_<4l3z^E zy)?o*eUD=+O}Oo6c<{rgXj@g8n?NP}BhwaVo{jQAI8c>lT*VQeoRR$z+mEn>L~ASLWi~S|FvQzrUZzv14>3611;dH(QCF z9XRv1h;lpYcd;;quCw_RikEvoUyefg=b~6%xql6VBhNq2cvlxYcI+S!s6&5w1;Ms$ z_V3?MDwSgI-o3b7wXM6lQV|RW85kHqRaG`_+_<9NeSm?10W8Z}&^$_wD^f~yQ$(0D z-$P|kwkFD`x4#l61ggS4F@k_wZw;v}sEqu~LjBEy); z7`lWu#Y>yoK%4Hzqprc>(lJ~bhN{=a?WJPN?h>LB8Dk>J@$?|4^ay*l-cP{Wj;>Z< zWtEa}I?P)G?{a1=MgzCA%2BF2;29Vcp zzhp6*N7`a^60a+U>eR4@-p>Y-w?J>NG=Dk5oU610>Dqo0ja_Ts*ojZ?~ z-b1&(4OLmZMGW}}TF04O`zC8Xaxb3N&Wrc!QAeS{^Bf;}6Y=PcC~DqdTO-7UethdQ zu0ZLNW9(b&!Re^X3@wD@pS~62y^&9%5@k)tx4H3tfvU}oUyF=~o(;3=2Tneb?#5NZ zG(MlAjoKLtf^U%zg{lPQ%B+xOJpcMC78gsQ9F?PyFcCCp`j&?eXUK$NA=$F@vQ3{unMSaAaX1{r!gx}AjJAVeX3LoK=o#NTk zFEKdLO1Id(BW{Us&Ep@hZ~9Ua95}<_;a9L8FTCG)b;-^6w^(TBzhF4q zMp{bin_9c?EoyHVtEZamN5W*&u znr1RKMkFy!A{E9=CvXdufa0cA@v%np;8ix^YjELG3+%8`XWk2`G*^^vHCB@vFl|LR zl4r%NweDf73P@iVXA0`S&1k7u}AHRk{9D#-FlvDzQn65D|HfX|DC) z0ssIY07*naRPO;gKXM~Y8#mRZ-Y&jiw#CG`qnw<27wfK_^G+8o@wZN#qq)b0<}rxx zALM~vH!f%S36YfW?vW5*{?RUy%0@KnB)2|rh>kV2D7AA7Iy`9-eJ;&SM%RK^)^h77 zYG+(l8s=EY^VXj%fE=Zet^ab?k4gsP>^%T88D?yB8cTQ5-qwcOv4m?@774k7SMDI4 zMX7tG!W2R!=@&~oKTN5?zf$>SZa*%>#YLLA5?s8eTyhVQS@)Kid$Z!@gd>}0p>Q+z zFYdiOlcvm#S4Mggd3Z+pX{fpN#3(g8DIpxYP|6rIawf>!EP!&UxE2_1Rq zr4A*7OeMydN=y<@M@U%-(pC!7j3ZMi3|ruo3NCa!ijyYI&3e57zZ#&)?OW3A1ebbd zvrx*oDJ@=)9b?ETSl_#w2ikTN$-Z#@(}^iwIR6S`lkKz{AH$(HEr^`OH9<+j9wTC( zCoE4PHm7LV(!=^4kKt-+tzY&t{Lj7dJ^Hm#bin(oZ_xO-2IaQ!`% z$v-e0<4^vjjWP2v5HZ>tzQ?{t4b++(t>?z+dpp6tk!BWSXUeE;p(+ZVIVW|_mTR$l zfMF04ng8?Li+eFKZ}y4;mNjbg4{tl2Fg`U#a|SZTt0v zJ~VZPZ@%@H=u*L{=rpJ4KGIHN__ynZkDH*dnI!cRP$3i00XQH~6S2&j+K(y4{NvGi?gu_)u_MEdNMr4skfhI{2DLnmig~Bo)6JCM58}~5ojkh z7~)p9psT(79^auznm_z|mE#kSg9>i-0QY{NAKj?WT8UWLBKeBNF1@;giE2gIOyg2D z^fD)PF2yb@Q09G;lF6}2cHZ+aNB;e9c>3@S{KPH27vmMerdvPBZ(cLabN}`wEZ^m} znd9Y;E3yBVa7iK0%3jFAJtyMaFa`PNhRgk1Rxnv!o=Vdyl&-3xT!G41y|57N^h#>~ zSNSjfq*Cuz{d~}S1Af(mR_8s7vze@9RKs5)Nehb$<~aM)=UBD+dhTxBj>l2?t~R!` zIXZTfxBAbZr*EZO--@QxaiMIs-$!7}G?t7K5+@0(Cozo(#u_&bn^w~hXr;AjBi^r(#HOZ;C-M~=IGjE|$wRL*6j$i2!wHsG0t)%lX76Wz7xMEg7A`-HLibDM zU&y_vP=5LHR+?_1`v`%w?KyjkQ-t@da5?TMx!2h=3f-@me@^^4{AU#Fn)%Nx>dgKw zSFg*h{`2#=%710@Un)o`(G5kzqq;6Bx!Rv!`jJaKghyDN&($vi`QtVntxxYkC)FK z!AL$tr=uICh!=0QWoXMJF?)!RevEkYAbOXJ=B=A(>$w}l*65XZkD+_pbs#KQPGcJIkNo*f$vC zpT5^jR9-)ms!dnh+pOJs=_^#VZ8=}|(3r*Ab1s^za2_wqzr?e&urZ~;rE29B@+Iiw z6s63fP9Zq((hq3gbrTvEY3q`8d{(%eGCKT?Kjimc4&u>tKK84>xNyQ>X2`cDEmR(b zu#o+Kxipj+1y_MfE-U%UZvO9?MUr#&Ezb>`s|?SCQwpV5BJL~&zBqxoa^&D5w>;$> z08N`?!CXjOj`d$owt8Z|{eLZ}r2Q`zRwDm=1w0>_k$fI9EX2!OEWNtqQ)gLg;NYV;ug{Xcz+jve>$b9Zel+kWr(#XsYY zm7|AWM6q(o{lr`7^K&_iSFyPH@e75iSQ^`CpaRQ!w9|041)#%DS6FH{EgM!7LczvPrwTLz0cqq-bXumK{A zE_#jH3EobfVb~4#?)?<*D&10Yad!F)ube+ZI<}p5$0MloJjBVCDMHq9ruAc(YbOcp z-p2ObpF-0eMJF-^>pyFGsTNX_iiSvqCW%dsk_b%_iHs3UPhz%tQQyBCwb@T0mh))B zg+-Z|#_{@dbUoOO=5rt|f#c2dJaKpDtld!x@qg)!QNH`my;$n%nL9Q<^+(+JptElC z!NJo>*1YGUt%`-d^F>nFq@Oct{K}-Wviq-6 z$SNg;?ic!-e_briVsVS5RcdljNt{aW!6gehQf8ELWv)d$e=EV<{JKZ4L{% zk>sU2OTzrT;L`Sm*>rPcEGTCI4nXEBV+9Jza<2bkc~r__Iq=VY?^hcCrPOB?MagV? zSPsQzJ}U*)@-L)}TheC0n&b`Z0@tj&m7UG&G1Tgmsg#u@VI>GAL%cnBkYKo#M&$#v zIJ>G!XRd4sf*fJWa{$i`9dvHJj)tyPmlk7Is{j>I(xsG0+d|kDQrOt(G-fhJbbOG| zcpuT=7-_{M-C$s^Zbj*71lJmrrtRpy(i4}uD&vtTj@O@~R1_x3~Qpd-5xCxq@ zO4r%&SdxGIuAc~(4kS|T5jJf-LQ`9P76nQPqpzlTFcF|08|ReIFVp@_AxH}wx2l)j zWo4mUR_0^DC^fj$E03$VvLU6sXhojovXbr73K<)66zW`snL^5Wq43#zg~Aldr&PYx z{LN3tvI_R~SI7UA!9UmXoPU3%@L%Y@zf?J9Eab?t+RRF*j8d2{|F}r;!}uYTmJaS% z^CUh;<%VTg@2%BdZ_B>D1J-uAB_haZT z_uN2L^0!h6lEDd*!AX*lAn9lbD;dW!Q&?7tv`mv$EYePi)#yU;dy&^RqxbFuSH>k~ zsg7Tf!7#?l&(d{oCwfCh7Hd4ln&X2!_`X$WWqdLI^}A6Hjs6(qD6Ag+5PR=Q0QK4J zX6ST+RR^7{)e6+r0wCM|Q^F=K1Rh;4yU+MixU4|w!K0uxG-nX1#?rH#k^hN!#X(Ur ze%QtKAel9U){#CQq0 zJIytZJb~`^R$RtXO6*jEbSz9N5+WT95etnIjf@jXOk%16>33s$9VmV;tZ77PU5#SQ zG&fZRRYB2pbX}{vUw^HTfQ+IXXbQG^UAtf)rImI*Y z?8Q{pT)eNy1nbwmLhrVDxR&Htv=ULl;5U=}gw~ZPL=lt!ilM((FTC&Sj;V ze&VVEUKm+RQSN8meE&_D>kpcHFF#DVXZh*n=37iTD)zkC#H*MrbNorO+zV`pnVWL1 zx2K$WN3-|H{axTXH~y^jit*2hbCG{;8u|GbxR?8^(6ypzm$>KVvqI`WH{JZ-D}jG8 zfAT{7i^+JU^Iz(5K)(`vD6ceSTp)?s37$O z7oxibrP+z}cA^Hhp!mEf3T0<|`Cm?#5@KQs=bO*bad#Jn--WaVsWf9Tc2@BgXZo8}RB2`wbz9ARz?~ zR2+(efs$F&DFhx(U$lMC^HEM2FE)9XQeND1ywo6(4SS{aIrW61D5$E6Wm#x5$EoL* zNvW?1c7~%VuNuOLI@1QKyPTkN~e(y$3+XX%!bWZl4YLX zcg}T5{yAkjOQ~nJlAcX3`+OF=oC(An{sm;nPb+(!O~VG9t5)H3I!PvzMU}F0^ zx}59Zwr!lw%*nl}R0@~t()k(7x&7zH(Pwrmvn=c4bus>hCMj2H{Yxp)bse>gp=rJ- zHLggRby=xUFSs0WISrl?$*?)ayQ%Y}{0&^U;r+CF+Dpfgg1*oN4vrk>{J27^aSz?v zdZ=*cjOzGH2IcqB?viYO;8PXFNQI}FIDMGukuyx#6IdO7)H^q#cI^f-&8Ak>upZS` zkNUUXJBD}o5Z#ZjMNwxy^M2JKD0=}i~!Ekyet7HQtHqf85n32CuWb#k-eCuwK4J#?!&YPmcY>6I)t zFcb=Bnr1}lzsa+^xShOS^mr(CUY&$v*gH8)F~AwSBBi*d1W>8 zqi}w?adYw{UycHD&Bw_Kw#D+WFb&)LXokM*Lm=qPa#zsw{Y0G zGmM2)+%0J{WKMF#8Y1R#vUC0Yw0hdh9(CUz?qh%dQN}_(n$?F{>ue|EMKoXjg=CB~ z1P3OZuOV^H{WfRzX%;R@Id289T{N%}b|l@O?ALHM*M8q-mYc& zkn)lSQP=TvK8kOBl;*icg-(#jCNSs4bmr?!1jPP3z0X2_~oc(S;WooM@(5 zy@wuSU5&X{20@w&u79WX!`INdZC8O1vrAz7_&c0C{xY%adQk7W8P!pp&w8Pcs$Pf_2v7q<%%Omjv%FE-MV!}>v%cVzhzk%hH+6T&2IzCnLlJE zV~V1XPN!*TXrQ~hdrr9J%wI}LEEYpmRXRF4a60FnIkH^&OPO(5iN#{`mTNwkIT&bR ztXWqIs$rj&7L!((X*YXq8F*t_|oG`mY5$ODit6Fh(JWzLL3x8q6HINE9#x*|w| z)-lFAUT5QHK7_+p%#U3`*cQPHCpmNUc|xl_=s$UPW~Yp0)HXyYf;eyxXa8~5J+KaE zcSea8DVx;6LGGKJ;Ia3uD!F(w7jM27=J)>fX2QzOInTNpzrqK9Y8tn9{=VK5gJ}}q zFuC36n0H!*kl&FtDjM5VH!X_Jdd)>d+DPD}Wui#%YW3N^vEC@xDVI{_bDv2m866#E z-@bjb{76>dCmv112;K>0CkIl;DV z_V3?MDwSf-o;|qTi?fT><$_Qs#PIMis;aVU*Deg>^6cjq3IhWJ3;tE0)c7>xva+)$$0f-VU@17F|jydGY+qjE`?;t!p>x zf^Kjlv1E)v<%g&@nryiDeMOaVDJ7}!6zAXlA)~G^;^Cd>fu@3CuVl!v35?fXB(T+u z=eBLAP8}&Eb|``I%2__vt#j-BtI#X--9K|7$``-UM1GfmCV1C(Pp93pK)2qF8EkbIj#t#rNx*Tqc+Pe1;PVi^MDExMp&ikKEcu@2bj= zv^OompM6PkXzU|MWwz4o5Qn+tw&%I#hWc1nPVJAe{jitbMcQ**AW2EV9-{#-DqlCJ zXi_v*DGs8xiBf?N`BI|XKvJkf%)giW2{-rNN*SaUdQiIDv5=qHuLNAJ|H6I5)%sul zSn4{~XO>tmsSxE*H=iRUwiH;>CM8XRc9ftUXWR}mp`}P`DsGpb)m>ZJ)7XolIWaT` zx}sNW z5~IW?w?uG)qpy6G&_+MX2X86sC%%*|q}IuROs0^py-C15LGwdvP#qc~X_7iKMb|s$ zc>IPIcHG&EVN|}=Q8;Sy#jiwo^}?qRYR;DgY2i~}WZ#`Ha_^I(E}lN&2@CNZ!S$AZ z(JDYgVW;lpm>uVK-OqhSBi~C;vqg6ku}oA&!CPjr^5u$32AXoa0F+wLSWVpA-=*&7 z%2g;%u|<;k@k+^l6|+%F8DGr$&(EV!oW-dBmD2u;^$(Xj|3WgMBOF_|JEGWV^S@KRM!G#zh4JDp9vwCJ1I=xL+L z)q+;Rp4<|NkOEs+q^uO@f@e5C-A^=~Ad!|>W((M@xYSNmx@po@<20J6S*t42XoR$| zh%s)zLD+K|-@Y!|x9_HL^}5U<4@Hm&PH_00ZxXq41L~@U@k_2Jswy=hk*0|l9z#3) z9<8fv{5SM~ElKr}=y{NNh=zRG>%q=de~IDh-K6we+107AXAouw+L@$1j= z=o4?U{bmDApZ`lPgyi`5BRn?QhO2@$SxRIo@!9a zWhM7{q0T!$T=swN{rv0vIHjIf61QBqa`{!0PO;x}6jEU$QBhT}Obc5GRNcVP7Ix3x zr9^JsXMY#E&i%cd>VKv3&%J-8@UJzUQnFo1{OeW!`J5L575I?P55)$+DpH`F$|aD5 ztr*jGlyNIW(2fyR(!@21>hhxNE>J*Mbu?ASp}R1&M%;#ncEg9)@Y3LH#Ov_Q>!|r~ zDo9`GJX47vW07e_LN=z^fKOkIPkR8b+DW78%`BB&z_0q2j5B2(B;-DUvc;xp>t?p^ z_%vz-t^|qT1c%@H2GP5(L2aGCulT&{UzWH2SCoupAx@k_^!4MI?5Ckaqv_UFINH1< zPK;w59_AK3&7%)>(cD;_g*TqCc;U54{_-1Z8A^W;sd%%QqNNYAYx}pj|Dy?7yX$8; z?mLoT)mu(ht4qJA&^6;DAF)jo6ny%niA>S@UjoBJDc{FjB_lC;nxi8gc3soN@i$&z z|EV$DYp&hr%z9hOO4(O7QvUucqA3d@auwOCI4YvHld`B#fl@0OI=Z4Z@8H>wq?5}(b|VKUDw zY!Y^gq)ZdDQ-nmEDH&rz#z-gvO*im*nh7+lX1#wknyO=HPTaZ&N6sho`81GA)&W5z z9U+>I5=lilGj*P!P#Dv4V8}JNmFsXQ&8#;3Xbv|D#VtkkYOuCUkr1OyX$MKP4bphs zI@VtM0IueiS&De6{L;}d$KL)Xv0K)o6i~*Or2gkqHkO4LpF$o#fjV>nf2RZgu4Wu9 z8&Mq^=0FJf(iv`X+1$0SneGlZdI_suzN|vR;Bbt;`m)KZXC5VFUJFX5tts|6ZN6u@ z^FxQ(d5gqV3{b-{K4=2DfZ33&i`7ojicws=xX=yjlcXOy0(9j+uEvI&@})4ufCXX{X;G%1-HMA zfM(N=g7o(Cv%mHG^!Nt&&7b^3&cs-@3VEeU>2j<8Tnl+6SZ@5Gx=G1Z{+AbjDzWeu zi@3nn@k%i3q|SvXxMFE0MVbja#6Wt25p$Y|NMaj0hTBg|QzsrrJ3fbx)t**bJ#A=8 zWhUqOa2SpbaD3u86R{~G2}v^5hCvq|?Ir^1Y7D)hY72WYdE({-X)8>VyYzm)5{n7* zT_%*baO`RzuyZSGH{Xk96t>0|%Wvw;5&BNQLFl$#l%B%dEiPvL&j(Tn#Ie(eLr3vC zBQ#yxg8SBWXr4@&BnQJ-FP!GqM!0iNGi%rQDyp@7S%3J-7=Qci9!^g`f~{UUkViF- zvVGGxxaY$`dNw#H_5Rnw|IkZe?igyOMXi3@sri(5xwx?zmz8q+kV9rNvlJ-BK?uRB z-H-6=pE$~IpO6S|Cm;UUCm?o?m%s8nx*-uFb3!M~Rq%6_m3;rrEb_x-@8!x@>RE0Y z`6!it_Fl33`RNu?yygzX3Qawm*s;EyK0t9c(Bl*w`}b!E?YNigT8kF-6^}yoyAtaE zD*w69Rto>zd~*L@N&Eq&9_@djP%e)JIjJ)XQ(A=VjH}7C6=6!o2`eTs9W=v<$K61C z`&xE2-c5@;)4MBxqSV*ECXvL=7{SC8k#vN(nIvVU7>!Ia8BY*R3T(@bQ)|VqT}Okq zfezJ!;#63O!bzBueDCCEiKd6Rf8!t0)o??eycQAbJd?@+lB-AYZ|mjSTRw^AD6RbE zBNYiUdFC*E7xokFaH2iD8^vG#^vMN*lwb?cYxF-B5-~E4IC&al;1o@3Tr_@Q6}q=4 zvr&*ONt_tRb#Ray)ifV?tcNDQQPWG-HyGouziRQr!}pQYZUj{UDN)4$ZN6u@{e4H- z`+x>^eZ2k+Ufpp4Ql`EKxm`K*&zxQdIOhzn_Z%DK9D7wh%}u5VnmV!3+QL&scjO zXO~YPM0Ng)`Paq5RP(IZ^K$uDB1bv73l7o>fCM|qx#K_J%WpXOrC<3VmG4V*W#MZ5 zuU!76@~kAyQu0*#tP)ukf`2ir6#m5~0`)|xGFOxe_aQGOsE`5^o7Bu=%Ag%%#11kh zBE+%K9B%x+R=S$DvfA+C)ZO@9jkq*-N%Gk|O<`i%X-wP15;kd(W;i^=SZsoDDv4=X zGYljO3i9F?i_C9D(MVZoEL%m21{4uMmjMi=30?8fsCWrDyy#9hN|BA8rL2pa^F=sx zAL|46@zVL<;e~Vmnfo{X0Ri_lSTaV4lT5kaLEq}8dLlBhNl=k zeSqQNqa?2FMtS@O^k#p}B&y~wB{Cevdg~q3@iDNij6$n|Pz_{bGfM9o)V3B-RnRn~ zs-oyRio*aSv({KKEo3x?xX_Ps`V?-rN#iCjt{XR?`<;lSg`?5S*#H0_07*naR5caH zJUE1BV46ER9Nct)qR;j^2TaR~9N}Gf|MpT?9 zV)x++SZr*#jWfqy<@=|8nH$%C2C*tg)2-{+wDZF_e2s-9DVaxNdV>D_KV-xjA-%C3 z{ocD#>!2A`!(YY|*l!)cIeLbUolQ9QwxfF-C{7JURWO4|(xVYlqwit$C$W<@RvIiz z!lP1xZ&fy-I=33q2x{VENziAa-Pwgvd zFAT)^+pos>(TRHr%bPR25vb`yZ0vo8+aDg|nmsNSY_+b0qt8XzbIMP%a(SJQrl61z zHYs7zq*wM;KrECjC6uL71B#S0KI8|U=6`?v0HMTTzVwU_^XPF73>@X?YhUKUpZyEsX2`JY0wau#}4>N9Go{N|HKH8SQt2aUCRALUQKaz7Gqy1m@<%&S-eK*8-> zt~T=GpO%+<{pUZ+zg{f<`C%8c{pVw)^DoAAIr3l1Ny&_b{1T*;nAjvliiAiJpZOmX zNn)5xDvAG}z4wljFA&gO8tw|9FvC!J1NNJ2;;KthOM4B|^L(F7X<27|E; zCS!8=VUv+TL<az0(q<=fla+Z-m(ba&P7kJ;Iq-J7^O8}63R>$R`x?XK{A zs;aA>dg`ev;yUPti>hEftuFC11)Lm#frn3`vf=DVv+>Vp9Q&^5o!j97) z9VC=UF%*lDus|p`2Gw}Ac1%%^TWi3D2ahlirh(?t#}-h|)M&NH$fS&PEEOZ}oFJxp zh~_D@CNgo9?}j za3b1?bJ-TO`c)X_>>u8uqA~P8-a+FklfcC*5vF#^%VySiFl#*c*EFVI1O>`bC`Y2? z*smpVqA84EEt;O$?gb_?vBxZyPIut_VyeN*) zg?y$^ti#OrVaeQY-+C3F`~R*w`QW8z^Nu`eXO#F-WXLyNn(un-SCQrOm@my-Q?F&@ zQMQcPWoWp4RJ(mABe~DKQ+#tFU)^V(6}wkT-DE2dh4Pt;`j=8JIR1tHFO<$yWt-3Z z7i#^_^h`*h!JSeHBOy~9N}XW93DaYb5LXt;G%(!(e1U4}{Vli+4|RrzCGH@#p85&9 znoNcxZEWQbw_@z>+eKHXhiKBqvRx=Ah>`(xYA{6;x>$-^tECcQevY!DSCFVJSdrcM9t2$_|+e)x?DZ2YqWoFy8Zz36u@Yt{Zi$8tub6ow;-^5?r zSdv*f86KhQnLl$Pe3;Z(%Mi;iL7M|b8~~-TA9#dCXZ!JW)Rq)Qi1hjep$WvK!+Fd) z@3?XvdH67{!vkE{ptECRHOtx?aJiWcfEoHYf-`lN@B~hBIeyZ z_*`0u78>TO8^mn2f%(dRwlLrL=bIIojr`^VX2Vr2pW!0|W6-qO8&ot`t>J>26$IV6 zTqO!4nu>5_D~1xhX$U- z-ntBZ{beN=?M#gVo!$GWGyCu@J$2U@JC;HwY+SY8qGhjaNxX9e=hz6Yfe6bIan4^I zV8`p0;C4;F0V$;z97%EeeM9`}-Zh*^ycwmX+q{sY1dV$*|B{Ee{BxMXfov7V<)!W+5N)$?+ynhnAB5T%nThY_YWF+eh**s4Plp zOG1>l_2=n?Qs1S8&i_nBA^x*%A4IAN)>|h-tb-kp7`w#xci&`%H{9-6v3v}3Bjy*l!1fKa-{P~l3Ny| zF1{Ge>n_XBrqT^gDFyKauKmwach%wvlBD+bp*?+^20Mi*Ad*tV4V`$E2h|urr5s4w zh?Ik{Y}|l95@&6-$yv+&w5_S8zP1UEJHIu&)cTiF(L0df-iM?7@ex1I555jdEJJA~ zLJs2Bo@UvyKXdu3le8=?=LFBGzr^u~!~Wk#c-fIgnzgAd6fHOZsmdC5thCFDIZ;kE zws?9nX3B>=*R*3PmYsalm8IOzR@`&>8s@u~t8OOem(TYx6E341W&fXVsyAO=*>MWV zpG&@liuqLk+3{w&{xi=OGJjxvN2Z0uzmN;aLg1fEzDlD|`a%c{0eN>87>W z5)nq?5fUjccB%@U2He^rJlbYzv_{-|5a#F@<(VAOC>)~paYD|1Mx6twUKYCmgg3V05rLc_GQFQvAng+q_rgOZY~|K&TFV{R^k`=8~=bAM)JeGU4n&I7kA zqXy0Ca90R{{q$}cS9{U@CtaBmyLxzGPaiujtf9TtkFED8(P{>EYIgTRA-ZGLm8)2orEHl8>@(^&On^!co?q z?Ez7qE6h~uJ{EF#?tenOPmY`Yf4=pX{2Zq3hFg2Rq%N>pG6( zv{mkTK+mSy4boa~nu0)I`@FpRXztK&H1*9(Ea zQVP>F(X_dB<1lP#Gm;o2F$#*trW50 zeq#OIjP!NVH*%On&_L{1#nNlPiuTp-bLe+>a@*%Wz_ypaj={l03^#!I>vPdPGqdI1 zRG};zaqKXj4JUWhvG??H*|8H`dwDBnmT$OeXf!prX>OPuw}+!$QU3Huh+o~km?7tF z*xC}5mL7s?PB+cLKXBz6_p$z5H=6Lw%FsqB80ob*_`@i#Jkdmpm|yjo4IaM>S~a{IqxaSA=p^(>bx znQNEJh2KB__Q0P_1Ofq+QtaEeZ~WdusDCLX4Gj%wn#RDu0HdR$CCgAO-08&Mwr!3c zJvu%ZFGYr8;Z6tsE|-fyAb`u|;^4u9ITiA$$~xcqODU|0Dl95p&{l^*X+D9bZN5ZYJ zSGK^GT14YT7y%!QHIlY>U5}Hr*niud42>M4?PKr4T)Cv8zVAilE;X-25-%alU^@WG zu2I$FVKFTyZRO+z4Xq+(<=g`sO0hQKs5G#w0GE4TVjf$b;;hLYU;$5HNowv|J} zFT>K7gQkz=Z{b$Yv1#Kiyx{6+o;}4CmC(*}mE-6Mi(@~Hab0&4jpEd{RkZWT<03NC z2-_BJO~Xbs_6np>XBItwdghxCkMrs;a`W zEc|}|IQK&3op}!VEpVmsFI2vj;$N)ogu`J{sT5L51_uWV#yOMPKY(Ev=(>&&0?V=p zhr@HuKUZDO6n~%3hpwl$k&Z^A*tWf(_yZFLVKaeZ-yg%xN)~DFz$l`8m!+hYn0cN^ z1s+P0a+J92A?BPQ?(|_B5wuzjM@vG+|3-}I^_e7H8s-uoo`yQ=+E!Ax{2D}=Qxj9+ z@1zp+?tGXNz55vTTc{d8;_Mc*CF>Eoo^x7X2!T;oL&rzojS~tp_|TK6pWVcgkGu=r zJ3E%;Ts-sfcb-tQWy@a`ymtJieOa(W`OvjtRaKLPe=DZ|1VAp5gqfO!Dt3UON9mm>hnv zJ4NsJ5?tHYM6H(FPrXDKtDW;@*yvTe4Q*nFc@URh7Bd9bKt-M zgb?VuPD8`#cRqYEg{}~ET_=%9V45buU~qhfpwjuwHz<{!whjaWM59qwu3S0SBFzcn z@i@nh9Rr}PE&s*>^BGfVmrA8AZisv&Mm@0q6Fi0kon5IcxU0uO< ze?FsJ{@L$-BodiH$qE~dlu~Jpq!dMCO3HPaP)HmVCndvJDvTw=SXzjLF+j>cgbbw6 zJtk&jkU(22jY}^=_xR8<$FYm?gvPGNtmT@9?s6kaR3>tv9R9Jv9tI9Q$IcW~;$MS31^QQCQ6T^J>=CyPuUj_*WMjXUZ2TeG*(uik|N!czJ(gUS)hHpr$$F0N_YPQc66Uj(Z;a7Z+>m<#f`=k00m!^Ut5)N4gL& zG&Dp{PYRY=b?NGW;z@yAJ}Qf%M8 z9j|wK9s=_L<+T6N(NXs9-HWd4Y}vBqv{lHnQ4asEt}ZOgnqi3w!%$GE8Tuj^bI2E< zl!L^^QArZAkC^HqMi)tjP%a0($-v!OgRiXxZ&fvZPaU4xIy}|&({drnDb+L;R^>QI z$08XXW%T$VhPw|ktVT$zX+pc`Vze=<_Ed5(8)|9)`@g}7#u&WyUWBgE{=v7Sl`*YS zjN6p?+YZLgCun$4OL|L7Ak`b;>{^4`>fA4~WlL_j#mkAri%^&_b|R%BZBezg^VuIg zmxIrCbI-0$S^|4mT;D}gO_C+8Zq_XKQCn@YYk!2Dd*dAGt>Iw*2I5W|DO!+PbB=u;iNmQUd_6kuH63bOyE3S%toI$k8q0ib0+bhYWrX4{O3xZ z9A3Utfx=cXQZkIA5;(-MWi0)x;y5aWB#G24q?y7FMxa(=)Os;|KD-U}ENb0ORci;D zKD!o~vMN9+>|_Ef7AD+#j7aY>Lg79}ol#Oj6V*_S@uHPz4O^&`9nsa?!190p5QjhU zW%~c;4uq!B_TD$4`+dbDmw>4$<2LrKce8j$5VI~Vhm2e3ckShxSG1mD&CXz8FhOTu zHIhO{Zfi(=F%cGXAaVf*A|Q?=(H=X9TO7t?T7*+=SmqYU_+aOlcn~<~)=m~T-OY=x z>toG!6LQqbOuv9bCsOo&Kf!DInyHy(WxN!W!e1(dg~ULh&v8dRooV9ic=@jLg+GIl zvqCe|xMw=f6vd;Gn6IuFGlWwbz(V4mtNkx@{&NWf(hJ2(gThfsQZj_4!lW1^Vs?@A z^@Cp^+@N_)jDQE-=fM@I!dG35tEw8q>TXd-ht61`pchULf z@6mtL9SFmq^__1(4^&1eFAK>O&NI)^uqckNM;UFIPW$ggyEorn`ot}Sxj z&Z*Ni3Kx!RJu%i31IRl;pb#>ICQr~*{Qx^IKET$C1y!|kqX_pOPSXFQ1TPzEnwBy? z*A|`Pjy`(F$(5U3^S^XC`I>Ef2Qxi)7YjUuBEW*eW)5g1YNK+faYHbRX((U ze_ZL#s3o(ZCJ6!VwicFtWOvY%VMOSMT;uK4(Sl-!TvInE{jQ^~(|Ao$fHc-@M#a1y!?Y%fEi6ui= zdI-xC#`Z^1RW`ccg)3N%e{l;dS6_q69|QqHXs0Mj3Y5sLQRNjNf1Kh_N@2&NScy2A zuA%7$LetYbm}IVtS@eXUVf7Y{^z9_|vh9d~FFh?k1tn-IT*?`Zx|$nU@%fK(_>*6w z_h&budEG2}^J~yNuF5FpD*p;V=TIlc&L>!WP8FWTCwHDm9vGnMvBSLWC9Oq|wzqAC zQWL`{g%Y{84pBBj4Wl`O2pIxWXv8q|7^V@yPK0n^J6lp+Ws31EG0l zdz>=HMd4Vm?~y1=f9v96r?IFUQ?W+OL>iEP*gS3_7XqWu`;;xn43&Sr&NSomT&OHE zag(9r92s=8vZEdy816YtSZkoYF)(eHnCV)UW-H%P(wq%B<}3d+ERH_;XTI~}+j!~w zKg=a7t9kCO-|)pB@8N63#PY_>whMZ zYw(dRyAiMHWn}d;1Qxea)!2m4TQR(DOs^l)Uv-LGNg?u6QLKx`Q3}US;iOVXD@iIA zCft9V@ZfPGBYoJy!O;}Lkq9LaYAit|#y`?RXz03$rW@$GiQ#f%xV_lPI94iwZKbe# zy0M@1VqSVqF>&%LSySR)WuCRnw{i5d-=^nhzeD$XX@31H5S7>sVX`brp+-VD z4?aTBHA3Ab&6xFG5CR#uNd5T`JM0+OUbTq2n&JoC2sp(#YN9f(5ONg1{uEW7r>UtA zvwU5Qro|2(pFqC9#z(ZXwSSWHudJ3QbvNLn%q;Q@8TfFMk`g7d zz2npT-OD#kuoC4;t6={(g?gAz^*=eyh0H&LR5V0aXBRQ407YV`pCi5fIJ2`8!ki#q z-NTt(|KqlVS>#Uz8d0VB7fN#>)c*(d*j{U7)w$N%%^=w2@kuY57WsL)bUrI5oRzfhzJGw)r#gAd#sFK_FD@(Tyv3&+40|UVR^P%omyNJ;n;T6Rq?b8N zcd(J~<5~VkHDCLW4BPDaNtjFa*Rf8UXD1y_lfDA%v18{;#ax`!SqN#X4=mnt6(4^6 zZa%qBA*IH;E8omJ_wVH?()$n#A&^p@VkMgVAf^UPgd3zvTyCaZQ_!j_IZ$Nu+l_9d6m@w=l1;++1-wiFkeZGtnW{&TrDGhv4-kIM1 zi^;eU`@h+Q5F&FhP-PN~hld$FdVs@^-pAmPeO&OS58$gA`+TePQT2{(G1_&Ify289 z4R#Z+cVRX95zSSo6?KS)pB9y}E=|^^ULvIfv9>eQ%@HQBj^&UJgsK%&mM)$c; zwnU{I!jB$<1N|%#lGknvvUcSnOrw0K1WnV^`;Sk8VLii3U;7xFFVvXb<+9U*l!~KI z$8mn;@apLF7jI@`u1D(G@M;E&JU*U_3^8IQS>i3UZRHr|pr0#NX5*bRCp&4y$^Nfc z=RKR4tNPDnIa;_#^2F`Gx13YtrJ6;4O| zrT+hdxx_+ke`6N%X?}o|!cN5S`T|_`j*oE9w?4_!zyEK#_dLyI@BA2EzmL)5hZzoa zGpa{X4MEtx6l2+XAlL5D3mdX;2zjCpH8KJtBk17)+#-%yW#U~@gJ)w9S3?s*Pb;sk zWwjj7R0?Fh^wImp`UF0 zPTV5dIfC6CB6xg=Wy)fGM}TcFX`-R7xJyqyq*4wCk0y}Dl1Wb#jkS-lbe+TOdLB;? z$+%?ST@jYw>g7VCan5%inMvqEu+&>c$hPRW5~W3&gW@PQtDuyk>zUj5)-NBTEBq9{ z*xJF_vHQ5;PkRU%Ut-JJAMwIvqGHpS#inh`k-gM>%1N`>ly2s4q47U?ZLs{@m++PE zUxIFWSQPM3bb`4kw~KA zaY&^Qwgr}ja4a-kpe&1%+RCX7LLf0sg}2#*x7CNa&V%7!ism)ZOl{1fH<5qCmL+WY zhbwvF-*2JoGv8vxRp;WX^Ac?F;BE0?uJfXM+R!})!exvr;C48P)fYxZQaA?(@DD_& zb!^tOdfB|hN6VH)R9Bgp=JXZi(Xh>~qpc{VPf*qb3b!kSVU|{>^P&Euqc*#54D*6L zwX8R0*F-i~{Fi#teZt{b2Uw_L^Ne{faSlMa4x<(qPbt%SwA z*tBiFu!X`D;#Y2(rEr~3{L76yJ^nhitsT^6?bI4rwu+W1OL=-=KDYmJ*`DviAggfAoK7!30a+ux%0#9Z<3@C7h5js3AuNpa_DQD>=cE2UtrJLw;kW!wM&AOJ~3K~!9r>H43P{=^RI zFIZ5R55|wV!gObcW(u?U{?AALGmTm9Ur%{v48(gFj6aQB=fm8%oP7`7$??Ghw14pJ z1U9Y##(L$kIc+&NOc6pN=ECWC48`gn z(k}dmpNyjaTJhFs8(vK>yFTY@2d7Xu7pY~-+U}{M#&mP{Ko<`-E#*2!`I;hHl7@u5qHs{y0%=-F|V#;(bU+7%-3L&4{Mz*4o&;PKHg=zA$$@eq&a{Zqx?ObV2 zmZgwPg{~*dI9>kv+vjY$qGRUcZ62 zK_}pIBg9FiIiojA$%Ol98OQFAg~>cq3N%e1$LIgkO1Ti@m!#X}$;Omew}G#wBHVHB zAy#x$^MQAsO~7A)LxZM(Bgdlr{P$sQf96VJ;w%uS4#0#;(AYePFW{RI8KzVJO2P4c zae96o=ZX`JEZ0uIRa}+qWM0wKK|nY8#J)%Q*z=F_&nvfcWkY%U&`%fTS}?Nt=h{ju zA2dzFwryN4*C~1D`^_a^vB5(wt4zNCC*RNhkQP!b3ZDI>#Fq!?>^QBiV|9tY# z7yeR8bX{NYin(DJ*tT7?9?r!2Hw**Eaj+~4_axoqOy>{jeoqL2<2d8}K)&?OH2xXx zGl^o~149ULQZodEu2J{W%WyAg?*QNtss zqn&8I$MJd`Hoks6_Ul*im%wFeXc`#0Ml9iQ@TkR;dvp%;E~hJcJ&x9pk12+|lT}-_u|t5y?#_eyAMQ=j z`B0puKbc(bwBfJN{^F%zKJd>4O$aWpZ^Kw~9-lt=1Rvk`D3)}1VZ&m)lgdZVfqaE5 zo$2*3>9q>EI`Qml$8l(GZszFGqj5oYjg5_1mc_AS#|pmtaOUyPy!)nU za`foYg6}?@S^Sk!_&BJ+SyM)`D_*KGU)rquN{w5fQQ)+;a@)QotlQJaxm#)qD&tZqluYkc zEmc~njYRE}NssyMDipe=;dW_wJUWJ+oF!O^c|5_;s7*MkGY|?g z6sch}*-YGSKnPdb?M5lUMk9*bNRV`@u~aQ7)q>Is58!m!#rCuBVEwrhJHEM6Mx|85 zLXzG0h0vc6oHta>W>HmA+7T4bpPO&JpZ15q4jlFQ`6RrHad)v7{%0*m_7qnlONB7 zO4=v+iHx7hNktqX5W-+Mq=>{#q6rrXs|KU`rSu=Vg`fR)H|?!Kl9nPAPB9v?2t{lX zNkz|q&9NSnqrE=*Myg54AhxU`Za1OKc9h}OCpiLvMhqZ;DV`tr4(+r8{4)g49XS~|C*YbQwE{4 z2_XcA%J?5EmEKc37Dpu#sNQ~5PcM3Ogk};{UA2wQhxX9*pFhKR@g~;1`2xHxE6_X! znyY+;N_U&A{OcX~+iKYL-TUbJ=1++3+Rvgly&89YE!cMY&vDWUsO_Zp{SHSU7K20_ zl1W4=iEu20bP&2g*$$ef&`k}^B`~}Ox<^O%YUq9g-L0c}bac0o-U>p1&^(}d(+e-P zu?3g{65U}2?;9b~vx0~w9n2~rZ@l-7d)r8a&_)wY#!bTV~Gj$|X1ebb_wX5#oC9jWA zRXaUbkSQyp3Zfy0zQYMl{3%IWmy1`$n`zQq=*C>zc}vG^E92Q%?W^X?>n`A~f#dwB zYcF3p{0w*Wck;fDO>C~Jn-v+d`4=mTQrojqisQ$RbN1P1_+8XFr~v0}xn$}=DM@7c45+S=MVm0>O+grKvt zlWp6!jSt9X3v*rnp-_l@`}PqEh1k4#^SDAjTbOJ9-QC?-mNlb!6#51!r7+Y`2753_DDMwJJlZ=&^?^*sHhJ2-UPGg!98)(>8ZH<;U^T}t6< zhECfH*AiUO$kSiBlb$>7Bl^@XI$pS);G!x_7Z`4V?laH~k>1POrK4Ay2)B;z@u0c= z>HBUS&1ImO6Azv#L_VK<)<~SedydlcKs(X!i;%|h327=(&Cb5RLTCnxJp57PJFAoo zAxJCLI;sNgQZsAtHC)Q@!N+;-xN`|Ji8&nx>8aRXY7bnCteRdH3fELI@0x7^P-a1Ky5CbkCxb7UD@zO3|>Tofmxj z4LtUVn>l{>9)|avV8RpUyu%!1j;7j72Y4 zot|2t0*z2Aq~#z}V}CIVYb1dkNn(vyBzh$A6M{s)3&(08ZoLtuwW5queUAXp{3yUo z-G|%g10uF z$xJ$&8o#_YIG>eq$S>bi_zNLu_XPOYRcG_6mgRi?$WCtUKUz6qD}-E1c{y_Y3POoVUGLks;pm4*D*{NE4QxUTOWOr@UidW3T{U;ya*Y?!{ap7KFI}F_Oo(} zAXt}u4E#x78p9MUUYVW=Sa%NCmLxQIg79!R!+nb9pLWyRT@6Z6RUN0cF+qK^O>?`3 z+pF*g!C$T84V=1ay^@O|b3r;V+HY~_fhfk4aPepj%Y_ejo?U11NitI}a9&Hr43|qj zOozXQU{h5c|FQOb{%`n1Wd*AM3i%{v`!DADD3xmME!7Pr+pn=)OY&60gbeb=A~VyKtErj$FmnS9I{vf4`3>KKBPghx^&^u1hcj<*ic9 z7DjXFEP3%pWXj>`|G0xkKJh!w`^+n8+|iLYexf@>=-FOIo)LtOtiZOHAe}LPXyHd` zRiIU+{kU@qFzL5U*yeT~dPK2e({I>t-co@58zAyaq12ZVA8t(euQPeTl}_ zwXEH+k1gkiSbdfov&?~%VQSR1Xw7%^b1f*!XBEnKuh{caE%Al&EhX=A z!{rKJOxCIJFEz}3=RX~8rG%O9{1+;+6}DnHlj?seZQ)GgKilm;`&%W1z;L1|l206? zt#g3w)jDh2{d8=v!|T>@yVKk7<$|sWF1=t0Kl=JreBoPsYgV2{Lq?{hfU{ z-UhaS&o$zq(HH*tW(NPFkzovmN z{>!C&{+o|*)2;h>`b&3k(bry=UR;?aL|(E=p&W%ZnjrLaAK|?rLWdU<55I=svhx`| z{4JjP{B5|ZJ=AY*M@dEK$rJS4nPlkbPF%{)-! z_tNrZ7W8BaPK-xkl6P&o(WcW>K*TwZKm0m|&;KXZoMq0LLXwv4)O)o}9$xdFwS4C7 z4{`Ue53=#R8X8)C)9O%5Zut2elPjF3Z7Fu&7lsEE7x&e$Qukw&yRf!GvP>mhCG(sO z6q040O+=&>Z4{5*@_ioct*3k6b6olM4-vZeM;!46*#F>O-u;!IbJ3ECaZX1p~c*E0n#)p?E6eJ~1BZ~te? zdviMTFjlm9xo~?U9=Fa^HK*oAKVSTpOVI@U;^w_P|C0w<^QH^NmGV>kW^74nC`R%` zgxJv#qdQH)or|!X7vPwiP?(^Bw+Rqcj2`|15B=kB+3@=FF~Sn(aEh8h9ZS~#3a>Yc z%dHTaft_-QgiIpg0I_%wD`nzH9qDK&Wgw*vnn2SmG-0Fb5>0c^bqAqY=wsKJd+F`( zDIbw&4Y8z`TYeg#b$M*s+xg7|mT#=#HSbx&ufP2~ zH-2pofBTtj7_O75Q@OQYa>K9S`;jlt!_P$N|KB9%9YA8wMV2b!LMJnni8ScQ6>yWAnrPZeQ z1&8zw9dZ!AxrdIGPvcs@gvajL%l;eg=lTzAV$G{-aCu_5+!}@}K<3nLDHV1~kxIsK z>^RC%NC~L19Z1GJa}^3r8?z(}$n5T;W%eZ(S=VHY={8Db(o28bl>#LdQVLQ@u#ys& z$G}%Lef!`{SVDz>ORrnPzGsGc;@(~!xb-*}U%eQ8%q?j?jVnukkzoHl5gPtra7Ahn z)g|nkJfE!0`7o0*=5lEQD%t>MaAG1a3M=CZ$8peflaYOQ@W6?B{&rIvPdx3T=g?m6 zd3KPO)JPmhA*DRUQdWwegc%r0 z@%XbN{P7VV`;P^PTI-3bbxImbghGsI(Avqb`efa=S`ugTp0PPZKXl`OAf z*6gV~D-<@{DwStKZJwuY8OF%g_H? zw+Yv2bfR&oSjhFC&uYC;_`}=}Rtx~!mUNv+a{K)u9^DmSZ{JHvunZ|`GluN3R_Y+I zKqe3>i6Dj`h9(jS6-N^Zbj`uv;zvZA2>0KHw|XPq`U_EbKr_+`Jr1DI8KlN_FKf0P zEfG`G9Z^6cuO>4KNMVHroCALahvb<(jm$VD$-JU%X%Nu{B*bSt=WaSAAhzYwtP z1k14r&)(egOc_f=C3|iOao)oN4An>@Vf zqZ|43-#o;xzPXq7l~r`COS@alz0z1({*JBa>r66mJcZk*v1plxs=DbfRWFynrVFlp z`%1bFhWW!!4zglX4Vy1$oVFY@jqs4oo?nEyVplyYHQ)ICIj{d&%YSZs--=^m{uVBK* zIkuu_f0C}7V>F&H*=YNT3Wo!}2=R7F(*-f_99_5!` z-%HbCA1zD##TZe}Oh6?pw@RfI@$Tp2@JGcf`kQFg+|x>P_As|ICv%0l*kuJuo5q|R zW+pq~)5YBD2$thMa}+5JF(2WFxj{0d!C{n(W1^ z{>19F2iSUHjMimP-Do02c?yuG3(k9SE6+U8&trF=;J%xW@#5DnL(g+$c{w=y@@9@a zKgz8?ImjP>afDaDXH9xnlv#pOW4o`6xhbR@umGh{V?OyxK|JCR4>?3fZ2ER3S@ook z>l3X6HDla_cyYXz6MK^E-y3CbU6|n(i@K$5nwGopR_T~-4a234ZM_JlTSGTN6JmTv z7?HV#vUR^@8)|sz8&~kV@9pR2@9pOupWK2dSeE5wFx5sbrNXfl!zU~bJRC*a2U|~6 zu~iG=7pK#HTc<~7RB_A^?Q(Yyn0&ubyj)YFlNJ2Q;d0&2_mRrTkey~JdE}F|)bw)2 zsTBW0@#iD|O!%4PKcDOWFGwR-|8S!_m6X_4T0xYyLfRm0g<~nOK-r*@3d0h} z0Wd}do|wReh6jy+ZE%sRnMJyL!d$*m3QY*wbPsKKxOAi*IilFRGs-~~WkgFN1t7qY z>9VpNNzznUeuZ5lG3zuek3#c-;Sm^af#FIk@l|yO4XrMG!TbuWt_!Yu<1!BK9_7!! z?_%BA^;~rI;#nEsWWOBAm?9Rk89b39Jmiq-br8=f8i(AxT5D#J;hvSf#T9DSj;)`M zAHmbzo?mWfox$XLLI|Xk6Yk~eOmivtg_PQ2VREH8l|e+Vyh=$=2!S@X4{WiIbiTAo z;a>=)$XhI}sq)t}Eoa^5%kxaD|4iL4RAkD)ahw^g|6(!}`Yk1`snma_?PuQgnQs3= z2&I%drL&%^_OI)+Yv{{0cri@TPjkb6a?w=-bgUIr)di@ej?mcZ<2CPH!`DCfB)|F2 zKAPM8G%WIt3y??BoIbhP1pJu1w?zN|AOJ~3K~zDLYu~<#@BGtK+;+nu)@-Xq&#@<} zk_yKG$C5Y>*eQu^fpQe_h$P%+5$(2#cR7ftz_bKr0(_Q^&(Ud;235+S4ii&oX|cw{ z6DrL?D9{jS3QROSLc?REPYea}j%#x9*AT2T{Hzy&$q&-}b%CW6$%rHwme|K6wopis zRwk8#7!IS#V$fyrOmGC+1dV68s9Ws9Ut{3*XcM$9ms{tR?_9}=BN2Z0y#p*-8erv? z+KRRVfK);fk4TcS^sGUo$02syA$h_Y-B5awXUKl3rk1t}$#Wfio}WbQkTLsL@|$BrE%5D1*2sOPe-ax61Uq;Fc`$LEV{e9a}Lzb zRQ|SYQ(IfhLWU56rluyky1EDi0t>4Cl~M$QK{QR{`0?YoT&|hsFXjt>DJ3qK3zy5q zOd{9pK{kwz<;S?@J#_@9xUjGkC28H+^<43~rQG_{L;Uae5AfDcY$_&op4(zVkS!NA zvEkeXp8j(mJ0Bik>qSjiNlDLUvnB#ld5~zq_rAZ8h^wq52C{hr ztR=Os$4Q}tW|P*Q#Z!?g_v+(jUomL?l9a`C`9~x=uf|rng8yRk`s>o{oED=Ek@sJ| zQiWzkPwmN1b})o3l}}Bc^N^?@v8UMXU5vx=xe7g*=h|fRzJt26=RMv1`s{Ek$!&(u zUanP(m?piH=aA7#u-&P*>2KI;4{69*vMOqeW&LUfZ6MS18XO0u-7PVrYYujrWZ9bW zV|x1Tu28x?`i|FrO_sIrq`jx*V4&;YbxML|yPAb)$Jt0HMX=@%B)4};2gd(G%+XHI zEG|OG)f=7`k4XEq8FHjPw;RH9pv3(Bx8PJ>ZxciE1Y6=ezZi+W+Jx;VuB3bGB_*k^ zq%X9cgmnKx#s9kb#-A$o*AaP;@pR{R$p=Y9sb6p+@3Ipx5Wir|*oLEWo~`LSoNG&! zshv;%I~cnU9nsfYqdC%FV?27zvdEqjI2apy%1U+F7dUTcr(}Jmp?DKV9>!ywE6;GK zM;x3V$#@h7CE)^zp!YsaKTcRQAHV1DFyL$g=@V z0{IT;op@*Dob@FO?O4<8-08ijrFWcL@Uu~_ppa)4vVTt>%vuT3KSMQ)##&lHSbEuK ztsGYIBr;`wk(b%kpwGsVor@RVf){vI{X30cT71=Q04G>_78VO@>yKRsPVtwbe^2W#Pe+mo?3>Qx?T5%Tih~$%F zD9Iv215tH69QHpAh&nP=R&O1ON*tW(j8wM89Yl*z1=x8>>@hPq5F^v!26ExVW#0uV z^-y9S{OPG=C2LCNyv(d*=brs~zCOv;fdgu<;bQdrC=mbim_;3y#5q9DeqQoUGf23h zTG=i&E8iyVt01wF_2lPY-9OqQAUxT73qMKPTl1sAC3BJ4-w?CX(V|#mQ+_FaPn#hl zeK(15Sok+QK(4qM8z(}s(82nYPBGeEju~|aMDP^c6Mq9y8X8fKbdvn%FD0s>f#-8~ znu@FycHi9hnmJ*E%_x%Vdg*Pp4VBXHrGe3oSh%_-`bXeF7yHRvHj_1s8degHg}_;( zr29*-)EB-14E;aoU;_k~h5r2XHo@*1)4gywDD4wTb__kWgV!r@PL6)=gmLv z=NF3}SMh$2$s=qG z%aS9@mdNF2|H7xGA2t#`ETW{gDvmhAp{VB8PwTapzBC*eV)W{u+?wl zy=7YC*|8tB_DpqoM8zaFeZJ)n)jiZS63r#q^ZluP~5+*L#-mG71ZGjbq9D9cc&$>+qV$4lI znYkP5IMi>@AmLCm7d>DJggHdLGn2mW%ESXc5n9--d&OdXvMm=~34Qja+8Lc_@~Fqq zRJbLBNZ%9?1eO0T=i5}K$3;t%MUgP-={Z{_%;H%a7iuKicHkoGD>#nmq_0^xyH38o zy7E3FJKmp)6SQZjf=CwH)~(7rmpoeN6q>iCqjR0@n$VIRMEnbdhJMjdF>9DH^q4aA zaB?wwzY~Wj68D+5NZb>YA9FB>&{9+tNOsq#Vqa4;b+)y)cYEp%RnN;8gBTYt<6BZnUhEXL(CGb`}oibu|Q zEwGX&s;kq#GF?B1%VBV7$R7KyusF?6`3I5Ha?BEw%9&`v{Q7YA0+G5_bHu$!Xq&jnaL(_i1<7268n(@z! zK||-|Kp3VA6-Xwkopw9b0G&@%UAB;+Ty3C(!0Fb{&l~scp|oN+-Ryd+caV*3u{mR{ z-n+7jS1f&W#9m3;c41)=(A{~W5nUL{LCT3Js8w@2>hXa;f#kht?N@N~$yYFpseJzt z60%jBb{k`6eaJ8LFrv|{;KhEP4BrKXDl9!LqbofCiqA zT6@k<`i@1>#L6qK>U<;{dzKB?T-)25KFh!XC;UP6AtIUaw{(JoYxY2%R&#|fa2qDXVkm%iQ$k$Ag~OWfZYX`!3#01;7<|**p`UyeP`fxi0#am zr=${;RNd?|4;s^WiCU8yzfpof{)5Nfj2{^_ua{&9!_#BlYdcp8%n=!QwU~bYtgB%4 zj}cIEn9!MEV;rH z{v*Znk9@RH%UYD$A1SaK*{GHDzV0$3vk9(@UIouyM%%u|>1jZ~HMH>Iv0p`1^K?~v zE`#EXTL5^>qQZeg6j@W#SUjmHotdI2XBfAKD{;ZnnR(gC74B$AV&n)NZSGs`@|l5# z?|&ErK1O76X*4;?h*5%teWPVjt~W2J|BG7=6M~~OMc}4|2B)Yh!fbQ;2crTCf_Pd9 zky>zRqO&)>h{gxh2D4vO)}l!A&@hH~dJTpRNYAgE?|M1zV5)vayp1U*b)Qz!q)6#w zq>u`ExN1}e@H?FEK$tP{vRj`Nu-OGYm^dLR{QD#6ErK}<0+r=nY<G-zRdekWEw;IiP(pyi$*9_TBe87n7d?0hgD&sh|En>qxXf5#@Th_+ExFZ9UxR3 zzYz}5itiROn)K>XfYp4hH2D~n;O=WsktaH(QmNF@y}u2!=N$@F;P2VU^oiz8PbdSa z$-IhMx;!GL9<*R&m^KxG!dk{?_t!d^myQ_r^5oi}hhY-XqC32Yo_QNb8(d+@vxw-N z&&}i7VF8~%%bgng2Ct|_MWLY+k&xP#Sm&+@P2BrHTon8enzB7JNY0ek73aoIO4FQ5 zwHAfHjqaM<&jnDdIO*|FWQKws{SuZkO_}Vuys1X={eo&(-=B*Qu8Kl#BV*Y~uL$;0 z8aydIYx1SR5&T%03U@jq1R??*IjzaV;QQ)HMERSmRTYUty9LkvS((L_qErXiZfLtB zeUDoccu%K2BW^f!S(|!;*W46}A3}x678XJ+u4+tZm=+(qK}Gx(F*;o~BfQ6IxX=lq z3UiNJspdGb@ju5qJ_&Jws{Hi<*>HVqOe4aEKCL>K;slb0V< zZ-v*T(H7>Q$J_fNvIe?)zFrlW944D>yv&^@Jgp1ydJ96`o55!ZdNe>C@Z`-;%3Tg8Elw>32W{S7V#D5?SYe!wN?3Ot@uX_*tMbSn>14Vf$<~Gv~a?{VF}R+(k6oe zj^A{9dQ3Jb1Cq(thu5gr3!iQ?m84X!yEGh2A#3o;7Ez{yvR7p3xl(E|BgkDu;yF)Va90saczcoN95mtY*TSnb`fP_ePE_8>H&GW=$uA=5SMyKhn#6+gOutwXKUV%-U_11FV~JT$`z5A zLV<$rwbQ4Ui%52L~C#8NJLzDrs44C|YRX1w7Qyf@kN^M`VJ>x2x_9xj@nrSbj ztEDh_1I6un(h)r`4kKwEZa_2qilQ(qtgqzQGUDq#nBt`N7UE2#8HV?)u7PyERviT~ z;2tB%lz^TzzK<+ba<`Hn2?_~FS$A_oy0Udky3nY2YOX1d{_n;5Cu70G#yS?7?(P)a z1bRjLgH)?`gvN~b&rgdf@2~A~SD$~a8LN#f?R9JsdpnjLW@7Z-ydOF0`NSF)Idjzy z!KYW*Z8iPM8cyv{ikDPZ_6M=noQ`>KKk-;yUtb?0)Y$cRX6HRnz!)j* z1?T@5;&3co&P55-<^Rq2;#kDY(jdd5qV42>_kWBJr9@AHg|Y&Rh2J(-JmnbMO%_@i}zyg_f$ICLlbw8&;IaCbQvUm$hIr?oyjB15ZFYvOWX9<@R(Yp?ee${w~_va6l^ z3TDyYB*+Gzk3qd2%Z_DLj_N*$m%+0e`WM0ZjTgw}>D?#;ujeP9Lbhjl*~2!b&zB~u&I^(XMIl}l#rPVd#7jh$1j{gE15 zq$Llw(y2|;MCINWm0AqK4U3dJZ&O@jb7cNqfm3vFyUH0L0bM*$&YUFh@dFKx7K3x^ zIK8l=2^5~;3!0$ME6?low$$=_tY@_oK@em807!7zPjEzbK-pC3>a#a5OQaD#ayw() zk+~l-t3Xagetu9^7AZd|WP~1r)`_2jM!BwEQ*1R?`3V&Melzw(TN}&JB zH+6dn8#G8i1M#QsV{u`AeOf^b@f@m+N^dU+5+)A`3Bh%`uayxz7QzhMy!8Akm*DU3 z?-e4S(;ndrSWe}Z+x}y=NTCPJyw=zCPw&P=g6qbmn|Nk8l(0X@jc&w`DofW}q5n8$ zi2(6OqRAbE)M}HGcJ?LYy|BZ3nL7u`1{Nna*Sfh}8|gA_TTVzR1Au=eL&>(@tqxRs z!RZy+^GR^V{mnPzf7FfRNQN;*kt_~=pRxs?h=Je*N0q%?Pga%equ>Rc2)WxYnK)_< zMz5l92f4kUDH$2NyTb_tUP{ltLUVI-D5$7YD=X=a+~20Et;$itLR5jBr!YSK7}G80 z68`7ZWG+=$?;tgIHLc->jQ+LN6aGi|_kP{tLMyx6{G z&&8?p>W&H&wgf{~68@TAFq_g4@?R%1HWx?gzMPZYE61EUX869_TzQgI%xVT1{EY2T znH(?DWM$aLfTo2eCu8TJwkJOB&9Ys$Bsl_ty@4eGzS$82BY3apAI~`yXwSW(9`glkpre5|&Bd!fL)d`%68-5AzU(-y5 zT6qW7%!b7H_;^g&ncW61^{Ew|7Q=-6hDsRY@i9IbnZ$w{Mchz;%|h+#8yp;*hZkRL zF)7b~+VciVi7n{yot=V_4>%$7&98vczi4K-P%a%;w@#ni<4jlnT0ym`rmMl7r@uJT zSVHe|f;*E{*{H^)peX<$gvH6*+IB!DD=W+r?t?$&gkl0aEI##?u>&eYPGC~)YBE-E z4Ep1QVDW4MD%hd3Lu27vEjSw033vt2pZ~gVWykRB8@<0pS`RygdRmtwRUAMUjiqE6 zm!drKfkcD9=75)vZ>hzFmKki*-O?Y+v}SxIv$v!r?OTFRLQ;^I7Z?_X#Obge*>9|+ z{#qslkQ)HH7a17|ye5ksKKHfP26B(-g;G8~d;qM@!O1y2Ki_!ztdZ~vK>Z1{3YaMH zRyH>2c$JN$H`ysEe>ysTYI$Kx$$>Ka^P(2>ZZLC0lEMb{P~LgUnNi-OyIo)V%X9Mm zyhf?Qm=P&R=2kIg!W90reI*~mjxvOZ9x~_|Rp8n^e|8dVYA`%%7BM=Q-K5(c8ZFdg zF(ELh;jXJ772P8>!o(@q2L0^keJs^E?-qc$HgG=MXkPzTwerT`OS$_CJ8Q9u*WDQQ z=yLzQ4L&?)`j;x!;FiyNKnUa|k+82ZtkIm$d{rLdd09w1OT~y14-=(W{CD@Q#IN*G z13TD}TNVg5TaM*2FIZ6@v4=^I9`*ZGa$FX9Yj)q&ZY4?e1F3r)4P7DfjujutdGTV# zB!t!fE&CXxr`P#!hEP3SUu2bzG;^xaD=q&Jm+;Fo75|tR!B+DYBn{LuFSPQ`bOk@1 zh~|AIW66G#jW#zcPY>*bUw&w8tyj;e=DLXJzPeX!q|2Rj=QZanavFd~KsAe3b(Mbc zP}-Jo@|Xp#xC1(^R!wv-8W>xP2DH)-H$<$6DpS7hu^jiMZtd0N79s{+qFLD+Y=nUl zyEL6IUv(gl2Rhje@}*CVLEjlmYA0=wJ{_~yFn8Nz*f{7k%yqkKAPF6v8*&rxY6%4B z(ajB1WKb?cctS|NIjuPeo_gx#p9EfJmTUoP$L zLH08G4p*+$xX_BJ4osMujOe}DGEcwvTMODR1F+~WdmdPAl13{i*+=lTH7UNW7&da) zmEyde9dVoMcUspqe*+PXrhtll5>{*g@(J!(Ye{Tzz>Hfen?H7XhW?ug*{E8n8ghTT z(oFEN;GGS#bP^Q4MPzC+ctn$9ET6-Zmv{Jm94jee%vC+>aNyKsqR8=5E4qx;X7Gg~ zlf*m!KmA)RvP_0+Hyz_S-8-4V~me~|0moRL%6 zz($GKm{7*26Jh{xc%9G6m=GR#jV)(WRxoG?qYUxET*6`B#B0eR##d5qcHS?^9)iiX za`C#hEk`$yy_c|#O2u0P>t$If4(EE5UE{rxrq>!Mw(-ls)$5pxWePdz^PPp)!OHpo z+3T7gJMM3`o11&jrM&SZmujNYZn^5+eD-Wh+`Km!Hn8wU27|-=@(P zXeA!5h94Qc5m6kSGr$SpQn%aP4;LpTINCeGQ}{IOs7jIf7$)DQnu*SJo;$I>8y!ta zoK7g^ICn*t_z3Ykk%avIv{f>>7!FP!`JM7_%ojQrbAjM@VZVMc?{R&Shv)S?p>RFF z;v1^bd8=@k(z?3UkFJ9!{c;c?Jmp7yrchh3RU4pCsZ#zVjWit~!{MOs9d~c+p%1O_O4Ht(mW)~hVH-{e)GUfk#bVv68YXRg+ zGtKA3qbBKb2svvWB(H>jD&*QXM$~+DfcJZ#RaEGnCBfGUsH1(!-@6h&Q~x|VcqhOsoZ13 zm~uzAP4I2L4Mn^FjE$||L&%3O#u?SYO7)N=wQr?4Wzrv zJ?UZK!WJj$ew5Ea{?Q@Xc_eG$7+-CrXw{Hc?vG&q&By73qm3FnBnJJe42X91Re=j? z-*RbKN2rn0b4AVDBaY3BzzZ7RTr3uld<7?mSFE|lx!5pw4Gwo(Ukef+3WgCs@g}|z zVUv{v-|+R|<6z#KN5#`1-wGn6uQI5I2E-fA7bap{5y_$u-M9rAY1o_US@X_(g?4YO zPc-ooHPbvO=z1@mJ6G&cZ9GhwRKsv9%RZ$PYB@qyq(>5%LIksSWnjWa1-Ag~kd6LP z3YJtF1D!xiYW;^`b(FGsBtdFAqAWGKtCV$y{XAs=ihXQovX~B!ErnqUkCo%4?6m4v zexeHcGqK-SSX_@l^R+n3) zn}UiC@DAO%+^7CZG_C#W-RmaBa>%w^43|}WbbJv zyft756UJ4~dzERC2-{aQjn`nlRd8iqc^uT&uzai%eS!Ea9C225-FD~-oril1g6zb# zaHNEnW0O)xYn3&pJ=>}C!z=>Vf>q|Yd3ah4)3iaPKKy30OS=5*oPYB_br;YOs6*If zpz-4a3l2G+9LmE}#}^luQ9jKteLK%DP?6`+Mw?5^T{b4vc40Z5I4@wGJcAtPRZ2X3=$KR1GOPUPD9NcE(~mi=O(-X73SkVJAhwzD zq9JI~v>sw=EXfAwDG*U*N%WlZj&QMa6px21xP+!^v|{W_eaH*?_OCt>^-%={E9;n# zwioa@q?wDm;9?GES@B$oi`4S7CGliEcy9Oas{MYnNSG^zDeojF2w0S8GCtDEG|k^a z<_7KJM)S-3&Z&=HQ02Uuc}45|d4zJlT#fn#;SrhKQ%&r>(7*G| z(4YUF-Q^g+ph5Vpq6vMMqds#T>J#GF44Cbey;v}!t4Pa_(vvcgb^lD5P$HfWcrc z{#r(?#C{Lx$(vthcR&r-_6dP(ZJtV)dzeo9#z~vsEpq%7 zY>!g21CP#muotsj!WviyK{&MGIuu|G3sF-w>b0)PrTfVHM-xX?EpwDT!DvsI91Eg+ zdMQkq5EEreMl(E3!<%*Ji~WwVz%QpZ{t-{P15!H;tX#V{>}Z1B2EgZjZn~DA)x2vS zg&H~Vp#!*~PlFx(&QR4wvWkVv6#yc3>9iqLC4(>zTdC0@#z2)Wk?wIRF-W#|{g35B zL8nUU!6_*U+^^Qjps%ex_`VnH*>6e4@}+FAdx*Q2Z6vA{JzcTcRJ@wJ82hokIvGSs zt@ZRfQP^=9tVsPk~ftu~Ce!V}`vJ^?kX5m~xCz(S2Glwp@4C)!KRGAMnmvE$BeJt%v{ z5&Q9bG$9>1O!q|S2~DT!@%{CFB=)c%eI8;^3YwPISbj?qMcn4o&m;ikezq=72kxR$ zDJ}Z9i(=k|hf?U=q*$~fGBaKh zFSxz}v*Uhl+1rE$I6wty6C~dh>1g1YNZ2ooI4nQ+LoYnZM?KAUsgCBNm}jhpv2fA7 zjL0J_Br*OnhYs>=93VqmjyMxlDoe&C`(90L>h>ru@WC+}(3NFYSz)4u#!?8+qU6zG zQu4mwaOGcr7R#H8Tu!n|^X$-vhldAbQOJU_+oO>};M2u&;+loN(JY1- z(FK~v-;&fayi0(61X}2OayY;rLbGDtEw9T6Uy}(J*ty(o7#kKA7HK-1{2Jz4mH!$i z2?wYXsW6Q^Jw4Azs!5LldjSBX0-%@gpZ@}O^aTY4QZwaZFM-{k(Lw_$S}4~fl4$zI z#DXmnSpER)7S0~g!+yaGzrZ|%afFMiV?MXIy*NJ&08czY^-Y$sco=Dlo*pmi(Q+u) zFYDL;fqX7vBJ#<_t4GXxa^Jpyx(s*AJXe!&kPW=<%BN~gra$r3E|Mt@909Y>st#d_GsZdX z^1V9t*~orjL2^Amq^K;Z#wj(Zt{5h^@1J-8lti3l4#1Dp)YJem(d5!nizN@HTW$nT zwgPZGxDg-ZX1IOsm* znD4>}7#RU9bc(8~Vj}QZn0c}R{n(oQpn2WY(o(8o=R;hbtPq9Di~QYXY;mM3*|*e0 z@G<_^1IH0OLhK3ex+BHlO*b_;(8)A`@2rPE(8=Z$ESj2EHNDI39|1^tP`;POk7zii zWL5D&>z=~WXQLf=-T*96%MM+IJc~}okq1mW{M7-F>`?X!fS#tc^mVmIi)k#CY=K%s zWq|6_AAK#ab5G4QxO^#9`B4Agsb6u#0#v3jLniZQgqY+)%z_L&;aRIf^cJ2Ry^FFx z0Zf!bC*MFp0wLi<5Q`!`OK8CuX|{kl!`sqE_$8<@ky!&X$Il$%Rt(i$x zRa7r7o?cuXTC%)seOAML${k@4ebG?P(mm-~QyT#|`|HaD1;@eQyyxEevYH|!H_dQ< zfTV6x=ema8^@7TtP{=ITyYr^LLI@LP>2cky(GuavY+5G$h9WOOu90u4dxCJOl_^=7 zFxeSCg?uN(99MKiqxZ}uybXyOZ^g>?_IltZ#gg*i7;@R?4s1k>dx=j5^UznM!s0H6 z^mcUlOLIyI9(~uVAR*H5_9VaB9HHds&^?=w4vS+69<9Ov1s@A8#B= z?YDBaNIN%tqASiY_0>Ax!qJU^)DEg&vcu(_e;_-yTYuC-NA)3Ab*P@&RaKfjav~yl z!WcQ4jJfou8-zT0J@nA+2Z?54YrcOcq1cZ#MJH0UMrc^g8&IKMaQTrh{bY5Kn4u;n z$Vxg|h*Rpo=!2TxVN3J^<$MB0SV*xgs`L2C+C!w7TH5VCZ9IKkDDB;< zwKsDFHobEG&@rW&5F9(v`!5ab+P1B>Zr&Q6jFxVm(78>q^$sJ(Z}YoYpBh_153b0N z7}TrB(*2-;C+itM*4^pFp^#UA{Hrn|8l;u@Po$u`Q)b>o3oRZrPMzB*(t%1|GrvA8 z<~@%F_nuxSstC;3J1fE9ztV|3E0a-O8DH4Vwd78O&XmP*FFgmQiS?f;msmGaP>TxF z#KmSrPobp%|CxkHRm@DxJEPC@4m6w zdp5G}Qb)WU%7T>{W2Ro^niU58y4du!`;y!C6X+$6g!I%Swg+u#bb#zDr!@7|@mDsg zYoTs^&H8@s+|l0QF5>%~zv080bmj0SCV}Jq66x;b{*VT;T&`V+_IlkTvSD^nz&)pJ z5f}F6IfTrZf^b-y=ki&ZXcIx>R^`b8?XG=FX2u&T*ZPi1KKXKEo!v}4e$mqN#GnQuhyHC&xwLG^$Y3mO+GmbYYZu=CuBT+&ZD1lM zs;SXW;n-A-vQ^^)GqYPz(*YAC64en%YTNC^H9 zL_}4%<$$$$W4}Qb1e|X@blyQ%@Wbn1KC8vn=A_^8b!?#;R* z|7`c^RTp%*%jmN1z?2AY)h>NSXisXd^F@X&dqu7&2u}DAHC~Qfp=yGwdrdJC z+GHL}eir@AVzp13bP?>E@jyU|YMv~>W11O7B&7J2$3Nr`UZg8?+rBC}oTt*?TdKyR zZIf75OM0lFW&+xu=R7GC(g}CPnAjIz7f$ zHai1+k&R3#)XD%sAqMp#H~u(dMB|W*S9#z4_^+~vrYgCoo*5Q8`u#;&xBZ279qNk1?ks2pLw!jmypWCCAyh7B~I_k=WWyA{A;X&40rmiAoWjCIE-a{^KR~VH= zmSVMynPqr@Roa8dP9m4sqIZ;hFD^@(nO8_zKTY)_NBbV(+_<{C?t!Q@qAdOcEea6C zBo#5EQc^-hr{K~mH*e??=QR}@h`$B!pMuiP%l_+t+98%E+E-^hsG5CyYm|GoPK1fc8{|H1}czb)1DvO zrf%@?=xe>{2zP*tpoM$%sC4^XuD7UiQjbT=iwdjO==f{06*N9MGGx; zs;Ejsb;kpO@Wsw6@=eJ5*_Dh$En8&o9a4gA3qFLU7j?2UPJzp-DY7V+U0*DM8abBk zq7chA@vGX6Tg44?kr}+>wE9;Kqc%hY>QFMI%a^Kej=Q@RYh*v~qxtIeLK3f7eg(0L z`G0>?HkWphb$5TSqMhdTRHMm+Of!i4zsx`(Q_$6wU0b_LL?%zPi|etDa%H=v?SbL)X#T^36}vdplB16Wp6>_=Ve#OL0eb?!(Z9YyZR{kwO3X8Y!`;b; z&l=ED`ntvGLY>lAVMIW~X3IiGuHL>UEp~hyfZsk+-TRt*e!Ow1HPk7{T@F2o_OY>bk`^LcU$f+?p| z>aj}ylxA6SIE0^S?G1%VRqmt*eBg?%De{C2ddxVP zCuaNAWjbW=jCTOKedW2n^I7|CR#y3$^A@_23|~;IJc8%z`d8uQLPl+5=NUddRW6;P zf7{fAz~UfAb5%A@Y%|-hJ-d>L!>nO`%GB6zdNESq5yeE(KB>z6(V^;eE?z5E?y@o` z5UFWzO+%~r^tou|=Rw%#gJ@BL)49WzdjIaYe?fCElKotIy8b^gDw8Lx|1Yu#PJJHG z)U4l2S?XWMJ0zw(Dp{w$^OUA`FA6A3x5N!A^fy;hbn~~zImG=Cq4uK*7!Fv)3Tjr!}IQ@Zzl?;H6B6^opopZ{O+Bv$GxDILb? z(BJ#+xGwql=Uh;a52x)OL_uKK&o$dLy$#M`mCe1*3t-Sz(mhN*L!saC^t$QS7pkKI z*GJkzt9PfLGC0oPRrp2ZI_tcs1AXBxz`WJ0Y4zNh^(DyAUz)H{^|t?sno+{(@o1R1 zTO-w_Ugm$&Qv0yb;r^bls$>@$`uH#hb9KBa(VrkA%k|Pha<9PtrYzWT+DHhVN+T5&waeXZKpXL*xl7 zM9ZUBDW(W2g;SivD8&?25uuZYQ$x+Of)}2{Cn_@pl_phdg{n%&_Q1RA2zwb1OQ=ZS zj`jI|HodaNL4Ek∨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 literal 0 HcmV?d00001 diff --git a/docs/static/model-setup.png b/docs/static/model-setup.png new file mode 100644 index 0000000000000000000000000000000000000000..bfe1d567353630a783944a94591b5f4d39942b62 GIT binary patch literal 16815 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

^uWFL;4^l9Dd^+0388brspZ{9Gn6`!>=MuO-MX zZ5myuM?joEFEc}k1hKYiUZ7%5tkboP?R-3P`F0Vl#}ucg86!->s!p2_mLqr>HCPW# zT)S#+&tmI=gRnTGq4pH%*psOn zyZe2CdtM|azg%n%p6fl{1k;{??0a#cJ9XL!C9fIfXo5aRQWUrY3<~+)*IyV{f`)lW z_r7|7h=r67nQ6_xg~T5H5YRS##Y$MgaX%@Bv%hP(M$9lw7!3UvCLu`^UZ0XVLg;Qq z)KL#d4d(K>%yG@tYkp*B;hy&vU)0}w$iWUWtm&d9=yQ#k3ktRm{kwR^HU&upzb?zU zDBch2QH?vB$KJm1K(A*F{{Rfx4w(u+c916QcXxzG6SzT`oLM#H%~@1ts!IrV4{i$C z$Se7gmzHSk)hvNR_LGXVd(1z%1Ym=i;!wxFeYzLj5Fl*p>96T5QWzo;HW($;rb^Wb z_c;Cb^9{=qYqYud-YzGSfuCRzrn^#30>e~C1Wzo0AFuGMHaK2#X5a5m%rEw7k&EC2 zT%89P)n`g>;$o1UIlCUaFT*n+iCsms+;z4u;@4*%xfeO+oNpWX5_5Nf)6la*B9p=s{9C$ZRiL&ePA zCTPU^Pd5V~>Q&SimiGk;ZvNOG(E1M57hJDX?i0K59m*Gfa}KD_>oUeKuMa@H70SyCc{uI7IeB>*7yPNMEohye z_9570YUTw&-h)~zA5YrX2RL~)dDv-0u9p-1h$s!8?LVtN{K4fwmEt%q|634O9*{j@ zF7$VOKy5usd1Tw(s_0c=3q<3Q!uavZxOM7?bRwV(r~tPOaEj^}W(8Nae?7oummr$! zGcKDz85(pjqO+7h)3X0h=!ER95k-OkWNas;%;&iE5y$GmZ;g4|Z~Y-DbCmplpUm4m z1j+(I#eYxOfrtu}K>la-lmAVY|JOl(jo#ni!}@C={znf)XFpH}`){B^<_3QS6zP9WC`0x*o1RSr+?NQ53ZVAqavQ<9 qvAiyFa%zA;`}+q0o&QZnv!|1G-{9z23NKf?1R3j_-@sjSiThs>SEGFZ literal 0 HcmV?d00001 diff --git a/docs/static/src/fault_topology_hamersley.svg b/docs/static/src/fault_topology_hamersley.svg new file mode 100644 index 0000000..dc71f3c --- /dev/null +++ b/docs/static/src/fault_topology_hamersley.svg @@ -0,0 +1,1332 @@ + + + +A. Map showing fault labelsB. Fault abutting relationships diff --git a/docs/static/stratigraphic_column_01.png b/docs/static/stratigraphic_column_01.png new file mode 100644 index 0000000000000000000000000000000000000000..e960323f125fa4ab82b3901f22f09f21b0a5e609 GIT binary patch literal 7296 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 literal 0 HcmV?d00001 diff --git a/docs/static/stratigraphic_column_02.png b/docs/static/stratigraphic_column_02.png new file mode 100644 index 0000000000000000000000000000000000000000..cdc7b36a293620e6eca07176168b9c3f5e81cfed GIT binary patch literal 9213 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

1dKCog&zI-WQZ&pVyzVYiA?(a`vv+&UZ*CBox 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 G=6?XfM>Q7! literal 0 HcmV?d00001 diff --git a/docs/static/stratigraphic_column_04.png b/docs/static/stratigraphic_column_04.png new file mode 100644 index 0000000000000000000000000000000000000000..a6ebbd84353633957544ed424f27c2cd16157158 GIT binary patch literal 11713 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 w9!UJZaoc|mFPHubW?=Y%0DzcJ9UQ)_m^ium@a+m1yM}0}>8fJxJb3Xx0Or#+82|tP literal 0 HcmV?d00001 diff --git a/docs/static/stratigraphic_layer.png b/docs/static/stratigraphic_layer.png new file mode 100644 index 0000000000000000000000000000000000000000..3c706b941b449316545a15f05bca501e6adbd08a GIT binary patch literal 16896 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 literal 0 HcmV?d00001 diff --git a/docs/usage/interface.md b/docs/usage/interface.md new file mode 100644 index 0000000..540f08d --- /dev/null +++ b/docs/usage/interface.md @@ -0,0 +1,51 @@ +# Plugin interface + +## Selecting Layers +The LoopStructural plugin interfaces with QGIS to define the model input data and parameters. + +### Bounding box +The bounding box defines the spatial extent of the model and can be either specified manually or automatically by calculating the extent from a selected layer or the current view. Not that the bounding box currently has to be axis aligned, meaning that the bounding box is defined by the minimum and maximum x, y and z coordinates. + + +![Bounding Box](../static/bounding_box_widget.png) +### Elevation data +The elevation data is used to define the height of the input data. If a digital elevation model (DEM) is available, the height for all data points will be extracted from the layer. Otherwise a constant elevation can be used. + +If the points being modelled contain a Z coordinate, this can be used instead of the DEM or constant elevation and is selected on a per layer basis. + +![DEM](../static/dem_widget.png) +### Fault layers +The faults trace layer is usually a line layer that contains the trace of the fault. The fault trace is used to define the location of the fault in the model. Optional attributes can be used to further constrain the model: +- **fault name** the name of the fault to be used in the model, if this is left blank the feature ID will be used instead. +- **Dip** the dip of the fault, if this is left blank the fault will be assumed to be vertical. +- **Displacement** - The maximum displacement magnitude of the fault. If this is not specified, a default value will be used. +- **Pitch** - defines the pitch of the fault slip vector in the fault surface. If this is left blank a vertical slip vector is assumed and projected onto the fault surface. + +![Fault Layer](../static/fault_layers.png) +### Stratigraphy +Two layers can be used to constrain the stratigraphy of the model: +1. Basal contacts - this layer defines the basal contacts of the stratigraphy. The layer should contain a line layer with the contact traces. The attributes can be used to define the name of the contact. +2. Structural data - this layer defines the structural data that is used to constrain the model. The layer should contain a point layer with the structural data. The attributes can be used to define the orientation of the data, such as dip and dip direction. + +![Stratigraphic Layer](../static/stratigraphic_layer.png) + +## Stratigraphic Column +The stratigraphic column defines the order of the contacts and any unconformable relationships between them. The column is defined by a list of units - these units are ordered from oldest at the bottom to youngest at the top. Unconformities can be inserted between units to define an unconformable relationship. The thicknesses define the true thickness of each unit and are used to parameterise the interpolation. The unit names should match the names of the contacts in the basal contacts layer. Units without basal contacts can be included in the stratigraphic column but will not be constrained by any data. + +The stratigraphic column can be initialised from the basal contacts layer by clicking the "Initialise from Layer" button. This will create a column with the contacts in the order they are found in the layer. The column can then be edited to add unconformities or change the order of the units. To change the order of units simply drag the units in the list. To add an unconformity, click the "Add Unconformity" button and drag the unconformity the location in the column. + + +![Stratigraphic Column](../static/stratigraphic_column_04.png) + + +## Fault topology relationships + +The fault-fault relationship table defines the interaction between faults in the model. This is used to define abutting relationships and where one fault is faulted by another fault. The fault table is updated whenever the faults layer or fault name field is changed. For each fault the columns indicate whether the fault is abutting to another fault. By clicking the cell the relationship can be toggled between no relationship (white background), abutting (red) and faulted (green). + +![Fault Topology](../static/fault_topology_hamersley.png) + +## Model parameters +Once the layers have been selected, stratigraphic column defined and the fault topology relationships set, the LoopStructural model can be initialised. + +Initialise model will create a LoopStructural model with all of the geological features in the model. For each feature in the model the number of interpolation elements (degrees of freedom), the weighting of the regularisation, contact points and orientation weight can be changed. +![Model Parameters](../static/model-setup.png) \ No newline at end of file From a93645d3bb752a17c4b23c4b751b8e2dd9adbec9 Mon Sep 17 00:00:00 2001 From: Lachlan Grose Date: Thu, 31 Jul 2025 14:07:50 +1000 Subject: [PATCH 2/3] docs: adding content to docs --- docs/index.md | 6 +++- docs/static/bounding_box_widget.png | Bin 0 -> 11531 bytes docs/usage/3d-modeling.md | 30 +++++++++++++++++++ docs/usage/faq.md | 0 docs/usage/install/development.md | 34 ++++++++++++++++++++++ docs/usage/install/linux.md | 43 ++++++++++++++++++++++++++++ docs/usage/install/macosx.md | 36 +++++++++++++++++++++++ docs/usage/install/qpip.md | 0 docs/usage/install/windows.md | 33 +++++++++++++++++++++ docs/usage/installation.md | 23 ++++++++++----- docs/usage/interface.md | 2 +- docs/usage/tutorials.md | 0 12 files changed, 198 insertions(+), 9 deletions(-) create mode 100644 docs/static/bounding_box_widget.png create mode 100644 docs/usage/3d-modeling.md create mode 100644 docs/usage/faq.md create mode 100644 docs/usage/install/development.md create mode 100644 docs/usage/install/linux.md create mode 100644 docs/usage/install/macosx.md create mode 100644 docs/usage/install/qpip.md create mode 100644 docs/usage/install/windows.md create mode 100644 docs/usage/tutorials.md diff --git a/docs/index.md b/docs/index.md index 9e1818a..6c8ea8a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -15,7 +15,11 @@ caption: Usage maxdepth: 1 --- -Installation +usage/installation +usage/3d-modeling +usage/interface +usage/tutorials +usage/faq ``` ```{toctree} diff --git a/docs/static/bounding_box_widget.png b/docs/static/bounding_box_widget.png new file mode 100644 index 0000000000000000000000000000000000000000..24774f71b62e03d8068924d8fa958c857591b829 GIT binary patch literal 11531 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ë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 Se*hFPgC0LplP{As3I1PUt!ah; literal 0 HcmV?d00001 diff --git a/docs/usage/3d-modeling.md b/docs/usage/3d-modeling.md new file mode 100644 index 0000000..885fc01 --- /dev/null +++ b/docs/usage/3d-modeling.md @@ -0,0 +1,30 @@ +# 3D Modelling Background + +### Background on 3D Modeling + +A **3D model** is a mathematical representation of a three-dimensional object or phenomenon. In the context of geology, 3D models are used to visualize and analyze the subsurface structure of the Earth. These models are constructed by integrating various types of geological data, such as borehole logs, geological maps, geophysical surveys, and structural measurements. The goal is to create a coherent representation of the subsurface that can be used for exploration, resource management, and scientific research. + + + +#### Implicit Modeling + +Implicit modeling is a modern approach to constructing 3D geological models. Unlike traditional methods that rely on explicit surfaces and manual digitization, implicit modeling uses mathematical functions to represent geological features. These functions are defined over the entire model space and allow for the automatic generation of surfaces, such as stratigraphic boundaries and faults. + +Key advantages of implicit modeling include: +- **Efficiency**: Models can be constructed more quickly, even with large datasets. +- **Flexibility**: Implicit methods can handle complex geometries and data uncertainties. +- **Automation**: The process is less reliant on manual interpretation, reducing subjectivity. + +Implicit modeling has become a cornerstone of modern geological modeling, enabling geoscientists to create detailed and accurate representations of the Earth's subsurface. + +## LoopStructural +LoopStructural is an open-source Python library designed for implicit geological modeling. It provides tools for creating 3D geological models based on various types of input data, including borehole data, surface data, and structural measurements. LoopStructural provides both the implicit modelling algorithms and parameterisation of geological objects. + +### Stratigraphic Modelling +In LoopStructural stratigraphic surfaces can be modelled using implicit functions. The function is approximated to fit observations of the surface for example the location of contacts, the orientation of the surface at the location of a contact. Combined with a stratigraphic column which defines the order of the contacts and any unconformable relationships between them, LoopStructural can interpolate a function which approximates the geometry of the surface. + +### Fault modelling +Faults are modelled in LoopStructural by building three implicit functions defining the fault surface, fault slip vector and the fault extent. Combined with a parametric representation of the fault displacement within these coordinates a kinematic model. + + + diff --git a/docs/usage/faq.md b/docs/usage/faq.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/usage/install/development.md b/docs/usage/install/development.md new file mode 100644 index 0000000..b41bba0 --- /dev/null +++ b/docs/usage/install/development.md @@ -0,0 +1,34 @@ +## Development version + +If you want to install the development version of LoopStructural plugin, you can clone the repository and install the dependencies using `pip`. +1. Clone the repository: + ```bash + git clone https://github.com/Loop3d/plugin_loopstructural.git + ``` +2. Navigate to the cloned directory: + ```bash + cd plugin_loopstructural + ``` +3. Install the required dependencies: + ```bash + pip install -r loopstructural/requirements.txt + ``` +4. To add the plugin to QGIS make a symbolic link between the plugin location and the QGIS plugin folder: + + **linux** + ```bash + ln -s $(pwd)/loopstructural ~/.local/share/QGIS/QGIS3/profiles/default/python/plugins/LoopStructural + ``` +**macOS** + +```bash +ln -s $(pwd)/loopstructural ~/Library/Application\ Support/QGIS/QGIS3/profiles/default/python/plugins/LoopStructural +``` + +**Windows** + +```bash +mklink /D "%APPDATA%\QGIS\QGIS3\profiles\default\python\plugins\LoopStructural" "%cd%\loopstructural" +``` +5. Restart QGIS to load the plugin. +6. Install plugin autoreload diff --git a/docs/usage/install/linux.md b/docs/usage/install/linux.md new file mode 100644 index 0000000..6e6a7ce --- /dev/null +++ b/docs/usage/install/linux.md @@ -0,0 +1,43 @@ +# Linux + +## Installation Instructions + +### Step 1: Install QGIS +1. Open a terminal on your Linux system. +2. Add the QGIS repository to your system: + ```bash + sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable + sudo add-apt-repository ppa:qgis/qgis-stable + ``` +3. Update your package list: + ```bash + sudo apt update + ``` +4. Install QGIS: + ```bash + sudo apt install qgis python3-qgis + ``` + + + +### Step 2: Install Dependencies Using pip +1. Ensure you have `pip` installed. If not, install it using: + ```bash + sudo apt install python3-pip + ``` +2. Use `pip` to install the required dependencies for the plugin. Navigate to the directory containing the `requirements` files and run: + ```bash + pip install LoopStructural pyvista pyvistaqt meshio geoh5py + ``` + +### Step 3: Install the Plugin via QGIS Plugin Manager +1. Open QGIS on your system. +2. Navigate to the **Plugins** menu and select **Manage and Install Plugins**. +3. In the Plugin Manager, search for the plugin by name (e.g., `LoopStructural`). +4. Click **Install Plugin** to download and install it. + +### Step 4: Verify Installation +1. Restart QGIS if necessary. +2. Confirm that the plugin is available under the **Plugins** menu. + +You are now ready to use the plugin on your Linux system! \ No newline at end of file diff --git a/docs/usage/install/macosx.md b/docs/usage/install/macosx.md new file mode 100644 index 0000000..7849dbc --- /dev/null +++ b/docs/usage/install/macosx.md @@ -0,0 +1,36 @@ +# MacOS + +## Installation Instructions Using Homebrew or MacPorts + +### Step 1: Install QGIS +1. Open a terminal on your Mac. +2. Install Homebrew if you haven't already: + ```bash + /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + ``` +3. Use Homebrew to install QGIS: + ```bash + brew install qgis + ``` + +### Step 2: Install Dependencies Using pip +1. Ensure you have `pip` installed. If not, install it using: + ```bash + sudo easy_install pip + ``` +2. Use `pip` to install the required dependencies for the plugin. Navigate to the directory containing the `requirements` files and run: + ```bash + pip install -r requirements/development.txt + ``` + +### Step 3: Install the Plugin via QGIS Plugin Manager +1. Open QGIS on your system. +2. Navigate to the **Plugins** menu and select **Manage and Install Plugins**. +3. In the Plugin Manager, search for the plugin by name (e.g., `LoopStructural`). +4. Click **Install Plugin** to download and install it. + +### Step 4: Verify Installation +1. Restart QGIS if necessary. +2. Confirm that the plugin is available under the **Plugins** menu. + +You are now ready to use the plugin on your MacOS system! \ No newline at end of file diff --git a/docs/usage/install/qpip.md b/docs/usage/install/qpip.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/usage/install/windows.md b/docs/usage/install/windows.md new file mode 100644 index 0000000..aa7c3f9 --- /dev/null +++ b/docs/usage/install/windows.md @@ -0,0 +1,33 @@ +# Installation Instructions for Windows + +## Step 1: Install QGIS +1. Visit the [QGIS official website](https://qgis.org/en/site/forusers/download.html). +2. Download the latest QGIS installer for Windows. +3. Run the installer and follow the on-screen instructions to complete the installation. + +## Step 2: Open the OSGeo4W Shell +1. After installing QGIS, locate the **OSGeo4W Shell**. You can find it in the Start Menu under the QGIS folder. +2. Open the **OSGeo4W Shell**. This shell provides a command-line environment for managing QGIS and its dependencies. + +## Step 3: Install Dependencies Using `pip` +1. In the **OSGeo4W Shell**, ensure that Python is available by typing: + ```bash + python --version + ``` + This should display the Python version bundled with QGIS. +2. Use `pip` to install the required dependencies. Run the following command: + ```bash + pip install LoopStructural pyvista pyvistaqt meshio geoh5py + ``` + +## Step 4: Install the Plugin Using the QGIS Plugin Manager +1. Open QGIS. +2. Navigate to the **Plugins** menu and select **Manage and Install Plugins**. +3. In the Plugin Manager, search for the plugin by name (e.g., "LoopStructural"). +4. Click **Install** to download and install the plugin. +5. Once installed, the plugin will be available in the QGIS interface. + +## Step 5: Verify Installation +1. Restart QGIS to ensure all changes take effect. +2. Check the **Plugins** menu or toolbar for the installed plugin. +3. Open the plugin and verify that it is functioning as expected. diff --git a/docs/usage/installation.md b/docs/usage/installation.md index 832d4c1..6c75e9c 100644 --- a/docs/usage/installation.md +++ b/docs/usage/installation.md @@ -4,16 +4,25 @@ This plugin is published on the official QGIS plugins repository: . -## Beta versions released +LoopStructural plugin requires the installation of LoopStructural, pyvista, pyvistaqt, meshio and geoh5py Python packages. -Enable experimental extensions in the QGIS plugins manager settings panel. +To install these dependencies you can follow the instructions below for your operating system. -## Earlier development version +---- -If you define yourself as early adopter or a tester and can't wait for the release, the plugin is automatically packaged for each commit to main, so you can use this address as repository URL in your QGIS extensions manager settings: +```{toctree} +:caption: Installation +:maxdepth: 1 -```url -https://github.com/Loop3d/loopstructural-qgis//plugins.xml +install/windows +install/linux +install/macosx ``` -Be careful, this version can be unstable. +--- +```{toctree} +:caption: Development +:maxdepth: 1 + +install/development +``` diff --git a/docs/usage/interface.md b/docs/usage/interface.md index 540f08d..88bbd81 100644 --- a/docs/usage/interface.md +++ b/docs/usage/interface.md @@ -48,4 +48,4 @@ The fault-fault relationship table defines the interaction between faults in the Once the layers have been selected, stratigraphic column defined and the fault topology relationships set, the LoopStructural model can be initialised. Initialise model will create a LoopStructural model with all of the geological features in the model. For each feature in the model the number of interpolation elements (degrees of freedom), the weighting of the regularisation, contact points and orientation weight can be changed. -![Model Parameters](../static/model-setup.png) \ No newline at end of file +![Model Parameters](../static/model-setup.png) diff --git a/docs/usage/tutorials.md b/docs/usage/tutorials.md new file mode 100644 index 0000000..e69de29 From ea08d4cce4c6deb1efa4b1eb4ec5dd63764150e7 Mon Sep 17 00:00:00 2001 From: lachlangrose Date: Wed, 3 Sep 2025 15:54:21 +0930 Subject: [PATCH 3/3] docs: updating docs --- docs/usage/3d-modeling.md | 6 +- docs/usage/install/linux.md | 2 +- docs/usage/install/macosx.md | 2 +- docs/usage/installation.md | 13 ++--- tests/conftest.py | 109 +++++++++++++++++++++++++++++++++++ 5 files changed, 120 insertions(+), 12 deletions(-) create mode 100644 tests/conftest.py diff --git a/docs/usage/3d-modeling.md b/docs/usage/3d-modeling.md index 885fc01..2dda489 100644 --- a/docs/usage/3d-modeling.md +++ b/docs/usage/3d-modeling.md @@ -2,7 +2,7 @@ ### Background on 3D Modeling -A **3D model** is a mathematical representation of a three-dimensional object or phenomenon. In the context of geology, 3D models are used to visualize and analyze the subsurface structure of the Earth. These models are constructed by integrating various types of geological data, such as borehole logs, geological maps, geophysical surveys, and structural measurements. The goal is to create a coherent representation of the subsurface that can be used for exploration, resource management, and scientific research. +A **3D model** is a mathematical representation of a three-dimensional object. In the context of geology, 3D models are used to visualize and analyze the subsurface structure of the Earth. These models are constructed by integrating various types of geological data, such as borehole logs, geological maps, geophysical surveys, and structural measurements. The goal is to create a coherent representation of the subsurface that can be used for exploration, resource management, and scientific research. @@ -11,11 +11,11 @@ A **3D model** is a mathematical representation of a three-dimensional object or Implicit modeling is a modern approach to constructing 3D geological models. Unlike traditional methods that rely on explicit surfaces and manual digitization, implicit modeling uses mathematical functions to represent geological features. These functions are defined over the entire model space and allow for the automatic generation of surfaces, such as stratigraphic boundaries and faults. Key advantages of implicit modeling include: -- **Efficiency**: Models can be constructed more quickly, even with large datasets. +- **Efficiency**: Models can be constructed quickly, even with large datasets. - **Flexibility**: Implicit methods can handle complex geometries and data uncertainties. - **Automation**: The process is less reliant on manual interpretation, reducing subjectivity. -Implicit modeling has become a cornerstone of modern geological modeling, enabling geoscientists to create detailed and accurate representations of the Earth's subsurface. +Implicit modeling has become widely used, enabling geoscientists to create detailed and accurate representations of the Earth's subsurface. ## LoopStructural LoopStructural is an open-source Python library designed for implicit geological modeling. It provides tools for creating 3D geological models based on various types of input data, including borehole data, surface data, and structural measurements. LoopStructural provides both the implicit modelling algorithms and parameterisation of geological objects. diff --git a/docs/usage/install/linux.md b/docs/usage/install/linux.md index 6e6a7ce..cdca991 100644 --- a/docs/usage/install/linux.md +++ b/docs/usage/install/linux.md @@ -27,7 +27,7 @@ ``` 2. Use `pip` to install the required dependencies for the plugin. Navigate to the directory containing the `requirements` files and run: ```bash - pip install LoopStructural pyvista pyvistaqt meshio geoh5py + pip install -e requirements.txt ``` ### Step 3: Install the Plugin via QGIS Plugin Manager diff --git a/docs/usage/install/macosx.md b/docs/usage/install/macosx.md index 7849dbc..ae36307 100644 --- a/docs/usage/install/macosx.md +++ b/docs/usage/install/macosx.md @@ -20,7 +20,7 @@ ``` 2. Use `pip` to install the required dependencies for the plugin. Navigate to the directory containing the `requirements` files and run: ```bash - pip install -r requirements/development.txt + pip install -r requirements.txt ``` ### Step 3: Install the Plugin via QGIS Plugin Manager diff --git a/docs/usage/installation.md b/docs/usage/installation.md index 6c75e9c..6bb5882 100644 --- a/docs/usage/installation.md +++ b/docs/usage/installation.md @@ -4,10 +4,14 @@ This plugin is published on the official QGIS plugins repository: . -LoopStructural plugin requires the installation of LoopStructural, pyvista, pyvistaqt, meshio and geoh5py Python packages. +LoopStructural plugin requires the installation of `LoopStructural, loopsolver, pyvista, pyvistaqt and pyqtgraph`. Optionally meshio and geoh5py can also be installed for exporting surfaces/models into different formats. To install these dependencies you can follow the instructions below for your operating system. +### Using QPIP +You can also use the experimental QGIS plugin QPIP which is developed by OPENGIS.ch that manages the Python dependencies for your QGIS environment and keeps the dependencies up to date. + + ---- ```{toctree} @@ -17,12 +21,7 @@ To install these dependencies you can follow the instructions below for your ope install/windows install/linux install/macosx + ``` ---- -```{toctree} -:caption: Development -:maxdepth: 1 -install/development -``` diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..ffb1fad --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,109 @@ +import os +import pickle +import importlib +import pytest + +from qgis.core import QgsApplication, QgsProcessingContext, QgsProcessingFeedback + + +@pytest.fixture(scope="session", autouse=True) +def qgis_app(): + """Start a headless QGIS application for tests. + + Requires QGIS_PREFIX_PATH to be set in the environment (pointing to the QGIS install). + """ + prefix = os.environ.get("QGIS_PREFIX_PATH") + if not prefix: + raise RuntimeError( + "QGIS_PREFIX_PATH environment variable must be set to your QGIS install path for tests to run." + ) + + app = QgsApplication([], False) + app.setPrefixPath(prefix, True) + app.initQgis() + + yield app + + app.exitQgis() + + +@pytest.fixture +def qgis_context(): + """Return a fresh processing context.""" + return QgsProcessingContext() + + +@pytest.fixture +def feedback(): + """Return a simple QgsProcessingFeedback instance for algorithms.""" + return QgsProcessingFeedback() + + +@pytest.fixture +def ensure_loopstructural(monkeypatch): + """If the real LoopStructural classes are not available, inject minimal fakes into + the algorithm module so tests can run without the external dependency. + + The algorithm module imports FaultTopology and FaultRelationshipType at import-time + and uses those module-level names; this fixture patches the algorithm module + attributes when they are missing. + """ + mod_name = "loopstructural.processing.algorithms.modelling.add_fault_topology" + mod = importlib.import_module(mod_name) + + if getattr(mod, "FaultTopology", None) is not None and getattr(mod, "FaultRelationshipType", None) is not None: + # real dependency present; nothing to do + return + + class _FakeFaultTopology: + def __init__(self, strat_col=None): + self.strat_col = strat_col + self.faults = set() + # store relationships in a dict for simple inspection + self._rels = {} + + def add_fault(self, name): + self.faults.add(name) + + def update_fault_relationship(self, a, b, rel): + self._rels[(a, b)] = rel + + def __repr__(self): + return f"FakeFaultTopology(faults={sorted(self.faults)})" + + class _FakeFaultRelationshipType: + ABUTTING = 1 + + monkeypatch.setattr(mod, "FaultTopology", _FakeFaultTopology, raising=False) + monkeypatch.setattr(mod, "FaultRelationshipType", _FakeFaultRelationshipType, raising=False) + + return + + +@pytest.fixture +def simple_model_pickle(tmp_path): + """Create and return a path to a simple pickled model object suitable for tests. + + The returned object has a `features` attribute with simple feature-like objects + exposing a `name` attribute so the algorithm can find faults. + """ + class DummyFeature: + def __init__(self, name): + self.name = name + + def __repr__(self): + return f"DummyFeature({self.name})" + + class DummyModel: + def __init__(self, names=("fault1", "fault2")): + self.features = [DummyFeature(n) for n in names] + + def __repr__(self): + return f"DummyModel(features={self.features})" + + model = DummyModel() + path = tmp_path / "model.pkl" + with open(path, "wb") as fh: + pickle.dump(model, fh) + + return str(path)