From a4b188c29c75ef59f3d032d39f8d555fc4fc56fa Mon Sep 17 00:00:00 2001 From: Wenzel Jakob Date: Tue, 10 Aug 2010 03:25:24 +0200 Subject: [PATCH] initial documentation --- doc/Makefile | 2 + doc/images/integrator_depth.png | Bin 0 -> 71804 bytes doc/images/integrator_green.png | Bin 0 -> 26813 bytes doc/integrator.tex | 303 ++++++++++++++ doc/license.txt | 676 ++++++++++++++++++++++++++++++++ doc/main.tex | 108 +++++ doc/parallelization.tex | 2 + 7 files changed, 1091 insertions(+) create mode 100644 doc/Makefile create mode 100644 doc/images/integrator_depth.png create mode 100644 doc/images/integrator_green.png create mode 100644 doc/integrator.tex create mode 100644 doc/license.txt create mode 100644 doc/main.tex create mode 100644 doc/parallelization.tex diff --git a/doc/Makefile b/doc/Makefile new file mode 100644 index 00000000..b5f27f0c --- /dev/null +++ b/doc/Makefile @@ -0,0 +1,2 @@ +main.pdf: main.tex integrator.tex + pdflatex main.tex diff --git a/doc/images/integrator_depth.png b/doc/images/integrator_depth.png new file mode 100644 index 0000000000000000000000000000000000000000..8454cdf85a4a5c141e5356f054321916e8b19ee0 GIT binary patch literal 71804 zcmXVX1yoes_x1%u1VKV2I(Feq`Q=mmTpF*hmw{CDe3O+&Y_3+?)&?H zXV%QDb!VNq=j_?%+0TCVo-k!aX&fw4EC2v-WIjo%0stB*0HB6GLj|vdl@>99Z` zX*&bJbNv6FC_q{UF#r&$SxHDJD_c6aI5=B6e0d`yA@SymlLOSs)*Jvl<|ehRcqbPd z{rp;mDrWQTvbH_5LI)5`keBmgg*iuFv2}KKYQ9{j1rK!w`YqLu>SO?X|8f% zHbCPD;3;BZ=b`)<08VV##a7t?GbNx&%!v5?vw#9(U?V5T^c&!Dgc9J=)_NWEKsy}J zDny?!(t2~O4FCZ{OoDG&!sAdMr@u$b-W5M31K7GH`DRc6T43Ob%786O02RQ!{ww3a zZ~IMCJG(uL{~sUufN$$m_ITnoUmlu?9K&-`dC>qK;MFT>XQ%s|V+9 z?^t2ZFA2zK0V7n=w4$&fd*IEBfCYt5PV5-KYhXjdI;FS=mXY_^W&=R zDyNMWV1ywmMQv)A=|3&b)&Ba|8{$`iSnYUdSVkE6Mwb>E0eC+F!Z`5in^(f9gumKf zo4my`3B>yAe9BGLaB*XjQ08j zr4a8{E5>h?WMXIQNAB7Tf&SHR5y+D}p+Es2fFbCy4*!1le%ELIZkYm=nK$(*U_?rm zERKVVlY>dt(HES|=^ z=EWSj#0hv<7fF*u1=L7IkM)e+aqZTHpaX3vFH-_3JVfz2MM()n2|2}ZBiqPr+g|Fm zKX(&<6C}o|Y)q6Z#&0IULLM6bg|sjGmG$Z?P6@JwuZlat(j&O6M%W*Wv9^p*{Mtyr zzIhT9^y4L^LI+fpzs9GWdXYEq5b{Jr*9<_`5a zI)B(uc0X|&n-MSjJ7V-m?rwth@2A~CMujQODdh4m^HImYTlJh9hp@$`cn+{KQOb2= znG*i?`pj5D#*If7vlubhk<~qAqFZtGTVkee2L0eebkKTF@2ZRA6t9vVojnl?nO0D7 zw|>XPior_$7m*VWL0SW>^5D9^-mBCnji;X1kn0b3`gg#CkYB3kn-jc^XSYwJQG-RP z&G2QP5n)mUiTx#5rKLd2#LHyJM9<{W$JT$U|59IQk)lDY!K#7F>$MlAm%f+u?VDSI zThnum^TYGuor0a|?|~N7 zNR#<>*S~JMe#^d{j+B2M2^AryEbDUJQm?{jWH{b=##`p*~ihW;-|{Q_NLK) zx1v&`S7RK1Gfo8cf?`5Vw=xHc2BZeGQeo`FRU=iODpM+zKVMcRR4y2i7;8h{SHXYt zSAMM8s+g)0Hp(=n{w-6PT7_O=UZGLxTGdQz`p?8n&FKwayq?t2TcwKi*}R$3S?U?* zS=I^>bHf#*b>;0Z+n=`RHvbH=_lB(|Y*cSWt_gO}4)6`s_q}g3A0QlXO(~AG`C${B z9y9-4AVnawF${@*#Sp_5!>2@}B&{Dd`0E6H8pm}RM|NvH|obKv9U6X?U|Gw4%( zt>UNcXYsIjmv|R*lZ^fZoe6#IiR_aG^euEg^r$D)PoAS6KO4e|4aN@o8;ljqA0&+F z{EY0mG$zsWWqbp?RicVlG6a0AXX<7O>ar6GoD$VCF5;1N`OL51Y0^!-uYJQpW6zrP zVd>3->{kPE-FNb936ikR@Z5yl&<(L(?p_jldwQE9^`fUmj#hEi*)B~k!RO8-O_8X)hH3N$kkvsD9L^D=xRFPex zLg6$b?oV8uYKtmtEWa|uDZwf6ECnk)JW4i1wz1D$LwizmQgw3MnuhCnjj#3eWJ^(h z5k@gggKF}P&5RBC#Ln2v$i!H#HMjMUb(qbKO`=tlWtEM9)wb30bo*|~&cS$n9zsq_ zEjfR_1gW7U#;RIw-~dgZs9mwsm|xnD*i$0ZHK`V9zDiByNGcf?#pL zxzo6l*rVB6EbqD`XM?Pr2F<$Er(I%p^&yd|dD_vlYR=rwJc#kFa%M?pab{Ac*GybY z?z&4gf3;_IHg%&uKmUxOGp)@!V>x?JQE$<2xo_ez|B4V75`!8eqx61QC@ZGPqxo-hnKypZVsmkGvU|!gZ@p=sbO-Ic#f(-T&+JvZ z;!>uHfCG{psd86#yM8Bhw|_rPADw{J=M>;7s@*33(`u!tt^Q5U&%ZxsjqX>zuI%F7 z|M>bNRr!7dKfB5}#8}E0v6{bH(9tUOSt>!gM3VpGl%&0srzDruxD--)`MYsMSY$mB zBXK&p03Iz-G6fGwIhj9)U!b*IsiNpBAN;cM87s%?p0Kenj91GaNN5s2+%Igl>|1l# zILV)_6U-)b(2p0rE+TR>b;me5lEs&iQ}S-?@ff~o{iFxtaz5lkE2ru&4Kg+L^@aTJE1p)r ztuVg)HQe0}7H~%wRTfYy#oa}xbmQ-o8VZ&GY$wqcx zT=(<*hHLpg8jr2LOU-_bVPla;)mGBK(y@8+x|qecOT7(Mld*FZK0HT9J{FeSNS4;J z3j5)s?W@{l?>WAQx_La)@5AJ`Gt6k(T!P_(A&HM+<|G&3Bg!yOVP> z4~`2SLr?l8M{ORa2_4LqI2EiFm;7ulFHZ%M-A#|tmWO>mUH=wNyof!ou+*_^u>a_~ zHC57O`&d8$%imhtn%b%osq$k%zPr!cEFPWid7kxLZMkr{wq=|7jA@Fgh}D%@fVuVI z<-Muh`)%6c;W@*()>};>&4OvSQv9h19y9Ja9y^|%x?gp*Yjo-$0X70DFeb{i0h;I; z>YFPxyyJ%!wL6rjD559;?w!%oUACZS?^-@lU=`AO;Zq0mMQ#2~THSE;y(a#OXZ-z$ zrddQK7N!3r?UW2ZOgqXP!{+Hc;Tb1}NCD9_{gI;qW()6wz}Ers?7!}ko}Gnjbu^lJ zoO$bJ)@Fvi_yhz56ba%9@fu?qxP|70$D=>3LagnklP25unx>kwwW^s_mIp=qe+)n4 zO5>qq-(_!xYML5ARg6+i6OEhaL!e})MD|n%cpJnU1l2+VeBHrY4L!{B_k}(5!%pR- z$N3bc!gW54ZkM-0XZ{~au!u3qpL-GAy*GnIlCw}56Oz1grMoqe_die-B+?LQk4VZ$ zNmg&zH#y5pXrGwnbctCpxcBu#LdN$YAsjro&!ENRoI)Fpy!_in_8JDuvE@Baq6N0M z2?ZIt+g6Nrl}DVrwp$I(v56v;Kh_wYwJdmCxE(BA2ZtR@ zw>w1A-q0p53HxY02=9IyPxvc6*5fc<4y7Dex}D%~H-9+WE;b}>onq0uox1lmmhrB) zl{(ozoD6dPrjS+23{pW{+ixC!qVZlrHt;yU_GPE;5OlvB51#CCTRHfmcHQwr;jeT9 z*wrdb*$Lufbj>;9(I6vyQReN@Qq> zD>;R#e?2!&eKm_!FMCskMN0rl_?3{UF`>~5AGg+;yt4dkU1`}e0UwDT8=XL3#PC9& z_c?!m(MnoPM#*u;HN|brb7Ot`ucTYB|6SYIKiM|xMX!PU#oA7m*`@jR5tXs9jq0ZR zD1<~Z_q1%C&y@=IRO_XJ`i8bwB7XWdN#hX!{22| zdC6$0=5Rkk$ZLU@JR~AgnR1_VOKDf#E8ZjWzURswYRZo}UWA-izv2t>`vl#t!cbg_MP?bRZAGnX?` z3*(f;}T3HN;9D*D`Y$-zVUn(a{K#59z4PALx-c8v8blDg2=ErSN!;lY5R<%BYM5fnZx z*SdKAG>(cKA7yp-lFzwPiM26jU)KAc{XKIhqznIUk{Fjb*5niz9^I!qsmH}!a}BIC7Xkq8+ZQrn8v-Q$5DTSBs@WPXt>$+&n0*UMys< zN^C=pyv?`Yiir5zVWpmNtvIf9{akMkduxz=Yy58Y&&lj}+E}e$iXRI)ue;Mad%FL=g8SHPe>=nX63|-9Vi(^HLscX41Etz za+>?jr<>8@9 zXqL+AE8iD|^d$dOX{NtBn`M;H!epK=>#8%bB&!!&F7t+*P3_KK9WyNw?p5!FAG5Sf zk0Q!&-3_+_*E_^w3sa4O`veLdz_FG(@ zL%qJQeF6kbKPfB$PVg|k)M6CIVf;`=f8z@9#sYe-z$QIP?mqFGq$qzFmHeCM+<53c zKS>PQ7~XwPc^mr=bA#awRa?wcMS}C$pcrdT4sqK*BRw{6wwjdf&ut7QzQ6fq+zx2T zsfH+%qiuSaR})W1uOqI9pO}lk%KjGpXkut6$6H4YR<0Tql`xdu{OjO=L zxvyE`yxFf;@m?ClqKxXX%Qhyv0}GlZ-g#E9XrlK zCUN#P(-~_o+%_+1$t%gN6a(ioGotj=_1`Z(S*#c072<35XbyJ&ge<%vJ*vK%U!@Y0 z!Qp*1LnZ&h5tsReH%U9;?yE$iMG6G9BEwRq*PHCrOMV$IEfXgPhGl!5xe z%#ayW$G-(3c30&Q>BRrU%5E8xzJs8<*1w|u3cYFtHkdfV+m&ZP#B@S{}O0M7fP8T@$Vlu&68ef zogc~nJ}?B%Wrtbv-2(c5zZ;RWS*1K3AWlLlj*05hGzxXZ<~7yBDkH3mobD`Galrrb zL|UB0IBO{7h;tFEndn~s7kNcOVCw2KYJqj_IP%@s@%ZDM&ioO0a2DTbT0SdzwnQLHRQt;KB?*4%%bc)u*)N|4J}t#E z#3}x8jMGSD`ee+d9dwr|s+BUd2!r8{@A}&{(RHn6TO@;6s9sb29FKf3_!NRk;2Q#ia`I32B@49aGQ-dpx2O@Oj zhWb}UUTLcO=Re5mMHwIr-Iv%F5|-Cy=1>8*kwAbKb$S);Z#eN=$A8+nxHlnKKWi-+ zbYh~7Q`ovwXa?R7U@(bHQKZNCel=~=UO)TN;i2Lq*pl8R@#zirnANDpnDf{+KHv9E zYzFL{NNpONF>E!yD%$4){cmjErqgN%-DNh%tP5@nmx5`YZG4wJUUQaeS2~}lYKsW751(c3M+(%t`&TWtN8x4^o z2=-H%;i_|#j`oXfyAJl8U#zgG_X=NHS~#pu-8OtjLRqO6^NXQd!eK+RgQ5P>*RRee zZN)5C7weucXSO`*2v+4bxj4+)d7g(}#e@-FCH9CY_|@LWT_--;m~z?H_$!!}n%S8O z88tggSehPpcjhl`^$rFzr-4eoR%$n+9}W6dTP=0-}k)=lMGiG+M<&Svab8YM)|PV` z7T@r_@PD7Zdmo=S_cE_tW~ewYNjdm?I3wn4U_wEcus9<)6Z``9cL`|m)qtjeV2yHu zRjjq&*EPc23?k&e?C}3v@0i&(s`a)&>1_q}R#O4S(}%5)93)nG#b`EPTob`v{o`%aHQIDGxl@L z%v7`u5jLa8k&0NRX)+|<-rg$m@8;&j2zwbB1qlD&EpnqLRy#sr-beKoS)NcQr^?Sv z4B=xYMb_MEZ+~@}!17YzI;EEv7nz=0sr^aJ#go?f`1tBm|94-0)i@fvxoRs950Cw+ zQfFsp95fAxIM<_EMNolT8C;!#Hsg!9gM&l8UcTyw|5tcUeg6V?{;U?}UQJ%=V>~HI>EqUh~ z>%1bkK#B4{2VuV*!g3}is;zoopS_jitUrgTqjsBf8G$Lo1l(l{cWdhg+!Mzx0{`b8 zahXo_dJs9Wbp5_N!yAoquS7H{t_MDli~hx={oGQdS)3@Fci7r!v#-?xr{J&l`7--5 zo%==kXZmEu(5$70jlovc+gop~(gYfrIGVyk*Gk0O(;StPH5S zp}Zu8YZebLIuGY8BbQ!wWerj@ayRd3*cc)$3irM3@0RU&mhUE7_P~#`XynKY?o2c^ zm>pn$j>}SQ9&I-JmTG!%Sw;5qzOi~S$8U7#`um-f>AHy+@VgxPvxnipE>s)msl0Bp zVD|UzZD|kGF*+A<3as9}TUrSW&aIvY`AFD&ga1`FmBW2t=gf0%-PTOWcPK#H9mVqP z8MDA@B9ZUO0d*zL_07emVY8LX#yu5s|6=w=pyk%VpZ92ysCBLIO*zTpZLhokQH{Ic z`Q;KZLT3@t>)wj25ouaK?712XrH$p6pR}$~XApY0URM&jP_NN(HAoTfl>gv-P|-u_ ze|LK0BOKp5qYovCgwOKleW^@9Qyh$p5xL1J<}u@-W%raSTDUr>n)AK-W_&J$Jjhqg zgUQ60aVS0P>=CB(5JgBu82H?cEIj)7PsY}}lAYZc%S^u5$x%X$- zdqmu?<*$S0OA&VIn0h=ioD`^RDW54;+z-v-JNJ-c9Bf~0dC15l zM48C18rtRMy{|)8{^%uP2yA3S;l?hUH+V8?7WsClE zh0)Pb_vU?l5aCQCcN?O=S2FQn@UjV@b+8eel5yL5%+D`fW*+-&pY~AsuRb@lyphKb z#8ZjOP4eq-voMTU_ga7X;y(Irq85K*KvtVnc|$mi&;shDB$DZUIlFeJ2V=sa>ywq@ z6C3T3?1^D zAo?~LpJF8AV4q)^MJOk}m`<1#kKrF#ZnXXFfAeo;Zje!W+fC&?bu76|&z=8c{l%^o z0L=I!TbDpp5iFduc`u4&A!8oz>2|zXT2~a5Q10fXAJ(eJg%KNqfc%o@W{)DowKoc} z#k8MnD0mEM<@7H*xZad1&_C}#+-mhQ{(U>MsFmf`O=6MZIQKqznO_?t^IpsU;8$>{ z-owB4T7}NULvZ3RMt{$B3q^s$>hZFyrvbZ%%MG1Pt4%OrpOGf(;nHNo^DaYs|LbnV z0Il!-(C+O$!rkzuVtj~qJ#t(TIWS$`oVVMKK~-Pzuol7M?=W66#k120)dQ= zkE^Mvh2m0WWn^&r^ZH!>zUi3w-xwGeI5;SQ!-xGJ5HOE5Or)ogetuxl`}4q?Z)?A+ zr+ID$!kDYORjv)x(H$S3x_eSyE8;X4y{+ZU#85Lg}09%_n_lL z`g6z?({z%*BV-So5Z&dQQMKh8RxqZ0k$TZTym%2~Sig&yUOXL(9fJs1yJDao&K6LK z^l^UQ|0x9EHetC)KA~%yQfl?y-)C*yYY5!7_uQ5i5#%{^hBGcX*~-1z&hlG<#|WP+4f`W|$fmX&mp56x_uZFIQgx|(x@K5e8&}F% zgx8Xa4cVUQSY4rM`CgT3Q6R$@{e3#CL~e_f9@hH}9H(KW!@@UJG5U9j^CFI$ti#%d zx0A`jXH~&|rIqW+KwQ1k%5SPm5(EHJJFpBCXUSq3~^3UEyvcBsiJL8lZuEe|dVqGSV z>)laM%WqJ!xc4+%KD|8l3xAxq6&p1dnr1ABKX!baY}zaMyfi+fn)LRSd{L^c=2suX zn6zOD7TjRL4MZEUIs=$iUqML*seuHr0vwZl*IAD%rW3D6VVnuw2iGV|rEmn=rrCh?334e&T$ zEl~0t+$|6^WEs@@z2s@0E>IbKWcy-e(cSiOCw#BT@iu>W*|96s54myfNqb2cb05(v zRKySAiWj(?82log@4Nmi9mC_Q?)c9}%twZrxy~Gs2bMOZfu|sO3MJo7SNbaaFlU^V z_`oz0CFA0-vE^z^OhM#A-@^Co7H)v<`-t=ChSa92KeA)}tTr|?FY-uLw{T*O$W~hR zr*7k86)D?p})CP`jtl+O&4ps`|HGjN$f;oEj2aEHEm;Liv*d?5OiA`y}46wE`^j!ExOUn;ysAVUD>ajTaGBxJgt^S4XzEW!7;65a@#{v(S ziKVp-@x~&N%a~Fha`Bo8w6*|aDG}`7u8*A)dL#fGq9$~4o?y|P4;=X-`FPTCQFytA z_sWI$uXFnF)t&;DC8)r(|4zm}kwG_srvJ1}OhUKCR^h{sPcoxtoBbA0=v0aJ`fgdX z_Z5p_%fc-Gq@alH2ROf?*u0K`fDs>3aZ^cfb!4VcnC&O_xrDz6HnwQRv&i;4!40P$ zgQVe3J1gxAm_54RHs-b|vhF(?;&pV2J zN+M@8z?5j~RXC#cHo|@JcA`9{cLj%t+_fgy6^j_q>;r^=pNSSIEBKGd8N)2gA+ZWU zA$B!(fLPud!Zm;fw8^h422@4w=%#d7T`Wu3dvv{NLw7&8t^@m`o*4~9DkTi=niZ+T zG#RX48X=Hnx0|7c>c=z}XPuqcz&Dv@xL7p&MOXrH=9j;i^K}j)n+a-O-k#LiV1%+= zZdqjc^WpQMo)upcE|7akc3^gu)=rcaXftJR0et)R+m__~O2Uxp{8Ah=`isA9ZIH;- zxtedRf*oge35faj67y(PSf4y+qGIe1KRlfUN<$q2P3OwZjv?7i- zQLV6y@`Iaug~u}+j}G189gM{hP*M>iySJt8GT})Hm z40X)A9ragZ%tggIw5t$iIfK+IdX9W7k`yKj9Mq~?ON(5SxS;^5%m z7AIcbzN;FGS$~gfpSIbK&>H8v7 zEDerVz1q^}g}_{F`OU^7<>OM|g|t=;L-Ds!Rl=D19kgvdk6my3W|wvM<3HB%+?T`0 zNE-yJMe}jxG$kyw((%0iaSsRPu^+m8`Y}MuXA41fy%X9p5w8UR9L~TtvHSf69}E@X z-A2>$+ncmufJ{~`-`@=K`0N~(->}#=oZwS=bkMe*4@&fA5fb6Ct$h1(+eiRk5p9ihYTLckSC4Ac( zKI>cRchNlU`#`mHoy}u#PY?EP9%{H}^3IG+8*LWW`JOUdAD}X6~10^@JH%eh)|7>?#-CS=+`@K-rY4V?$WzW(SQDol#skU zetbA)Hc%TRLnUh!^f*~*T)JTCpSDa(8ie)_3+wuBjK=0flkOe&Z#w}c>hwzTN>mFK zYJ3lW7DlDD7zm|Q4(!Vh{QG9S=l|UXnls*F327UZaB8IzXA1vDu<2g(%xd)TFSqzZ zr>S#VDJhv)$PO3@oB%c+LrPc*KO6g1(`32cqId4%A4=Ar z0&36upC+UhIhD;kZ^#;iC+?o^hQ}W65BG(?li5tASLnTfp7(Y*KMly(*G-zv-}>1q zqFXAHcay63F)fRk=RF$_=Y(!LC9I6eHX^nP4bAtX6}*JL>*1Gy|AVq&KDVFc+~+@1 z=_D`)vY#6m7|zaW&OZqv!rxjzYEr|BDqjHBE#;vnl$e!WSK0zwZ;M+ibGSR$DrZZ=c~9HEogLVgDFfZId7e3+ z_1xyHxVjkH;)_y_$ zH8jI?Sp)#>q z7^+*WiEa`}iyW}3t`eQnDPl5SL@-p;9oS)yl+EKXWI+hFH~G$D`j7n)av%n^tTMfi z6CU;!TyA4&kgD0L!FimHLUo2s)l|qmsN=-D=-cci$zxeJOO7*nu~FDPgf!Hi;0^96 zUYY&5s7Ql)JjM?vgGXZ~yYFIT)vaO8(`X$wShf@XUaCfL@q+WIbK{$LNwRsWMP{C2 zCJx}%K?!fd^HmMQBzbq$=|B=&cKG{PE>^^;M-E143(d0P|3tVVo5@H~XlId|X1q>7 z$E)<666OEX4TIE@S|vN*x2S<+*+Wt6|I|InJ);cknY=XWT-GpwNhc*FZjjplDTNIr z1!<4<#P-(4y-Jl5be0e^mB6_FNvM0`8P=XFcC>X>}E0 zDJECINuIrtV=Av)!p0_~(Z<@>%dBfYv=e_e&xQ@rX}uZNDXoPLrX@0JaceD52)Gr( ztv!YQrxLzgQLoa6d-j&UoL56Z{#G^NIX{HWwwPW{S#-w;T5ZCxx3osLG0QsMuV3Zd z&XAMs9MTgwIccJredpCI8;ly(l0~FTZ^Ub|1Ww;D3~5HiQu1N$PIKD1xh1hrjgM3J zSDGilld1G?h{8MN!EgH2>&S z6}1hlU(~+DoWEMBrd-~uSyCAqRR&S`jYn#T3jEZ&tL7O0 zPZjP8o#6D?IPu7uIa~a z=_`!K1R}jJVn0GH)3`yocP)$-RKnk`bw`mE6cmJpgoJmQIID94|F#i56z&V)$d(Ab zMIw>6x1egoWAAf5D*ZfI{MGlp%X$BJm8t=2lQuO;yXh6Xy8Ep=1j{FNkxH+Nz0Lk) zUB$XNe=Cx{p|i5n)6>O9_jtn(pfvSdo$GOdgHZk8chP&juRlA9ziR~b!8gxh8K=lo z*p7Vnr1vI55`))6BlhFjWCkzK36Qry#S8i8KdPU}Z;7No&fUp%Z@r+vnsmIaK)YR! zpCzJfh31z;DJD{sl~{G_X{*t={k>ha^PW7uUp;|k)$$krThC!9sx&6vbgFMx1=#*K zl#3@{Pzv%22ndLXI5fZ*!&T`Byu7@gK7Be>s$2JL)7O_a%VP~+N$_pI)4^oEYUw9= z`s8iF#mV&2CZolP_#97BK{t)v2a5Z2>3qDE(Qne444b*G?;cG%Yvs`H4++CG?*RO431x3P{9VW zJSM`wK_=6nCruy69bGD`?Q`8b;4R_M0Zq=g4`0MyBe6UFL94nl10SS3^JPfV6 z@$oYzt@VZ}pT6A_T@fR-e`9F@k6RKm$_xo{xeu6<9*)hk~cO z%GcKyd|h8(2j$4dt0iw9+nJwqvNbvsR8%528}Y9CA}%}1H9CW49Ggy_UEzdU`mTvP zMWi4ONf{?wTQFG)R}Dv}>I@w}&mc7|DuQDx8`O!<{`OidLqp(-_?jP`I5I}0ClgL} zYa4`A1jWxOs0}hre$_LM#tW76m{;7*#bNxg&8fgMcZgBhNgNPZ$coO4V`K|AdEkP@ zDobL0W4e@yE)o;kpwk4ctM_lUY%MolD+Z7EX!BKk)tr>pVjV6g7rd+=y`go#vmQQwnV!_j zTR>n+U#0oUI-jn*^(CCP+tJMOi&L#;8M86Hwuunm`vO@Fg=w6DA_mlfq#9KX2l|`H zznnrZHL8^94rZ$?F7_sa#f`zuSzB9!c|zbP0x1$o%B+->ALjL~t^RIqZo^qZ;IAq7 z38GtJ(ghkM#v3{Br%X#riyK4h26dZIk=9^Hl>Y$X<+c1ead&sOv$F#hDRhg}KhV-* zU|_f(EfiVJou6~QW6`ZW_)Z?o#34G&J zb}-D-fvYOaH@oHjvEE6sxKa?TNBBR5@=$SIe~rwDC{)KrlV7QF5p)QFC&9?-LUSI; zxHPc|w)@kjsv}sFW3fAC*u8c0lBEv*k)1=kE1#)Ag^<3RhFuEL-0;CWQP9W8uoiO<223aT9PrJ7{q z1f(L#ucOfOY6p!L~wu}O7DZ+0@%@H7lYMQkxr>*@gztT2Av73W=rbz z8r_c#Bo~^!>*_59`1pE>_YV&>G-_0fKwd^#41!O(z=yq`AcF|!Z-eTpBe}v`dv4^S z+C$ZzrxjZbmm1DCy4^HTT_VyXp3W{^0xH-ggxo=9)aK%JwI%T|r47AYZ=7)rYfPf6fh`}90uoML1GZgw!V-h5z#vn?AEeq3S`l<3zFn)q35Ii#m6(&*@ zpFuYSL%beKok;u_utmc)U{cocy6VJU@d}!$laN2GUQ?f=bxBd-GdP4MKsk4hbQQ8F zI}%WYhM!cT=o^a5jl4GL8;h|HB>H=8l!o%GM0MQed9+$&`-G3HuTpVO6GK(iw9Hd} z-sMjud_!r|_8fM1`Km>qpMC-J8l6&|?m5LE&u^156{r9C3#dlXmit{4PnR2(Tj@~m zbo3=M8lHS5x&u+N>3S_9Q(WWy#Q3ELGke)-BsR zl^PR6i5a?QjusnXK4&r=Y~Tq3BM(`g%$fO>Nm+jQ3;IFuqhV`IG2zv=kKTt4vx=H zb1i$#MfIHrxwbRi4Ma1nF$E^Z$4zC_K`!}zi}rISJqeXUjZOgwVBI}EG5mXU@p+^X z<{*jL>`QcC^4tdL^8vQHOs!%n%l3c#2y}^LRznsURR@P-aPfoBp8eOPVraMw?iC4Y zJvcZxb~C@yWu}`pQ~K^s`C>2&AU_J@HiT)G;RnaXTM>WQL{+>fV<{Bn~&%>FPsjK zl|T#-F7pct6qM+lsea{K)h#$hkQ^)x9D}}Jy5Ha#QRIExT({UPKOqfm3W2MBOyQ=wsouZB)q7oNTXQO_t3_WdKqkyn#kiN)C(!|{!8DTo6+Et z|0G73CkZk|HIB5n@7I)Nl3%7m1d;sai*vAAOY$h;`K1xe#!UbLK1Nmem=fZma4r^# zKg{;l<9{rPsQ%Ty)1> z{8v4n)_1o`tMx=c;|npvq>lpLx=dDGuCM&v~l`8|LAH>2Eac4ECA9e;4Y(+^Ygjvc!PbA=us z?#KCN(sA7Kf$7{^%%QDXx0KNYi>>fx&!S}`5~(5C5C&6CR1NV&lJ-({2hV=puV!i* zlVAc+YS7Fd-&+XRDV`(^JO1COEAfu1sj{wVa6ewk&d!#M>>2o_lLdB=HM$)(fMgvC zg$@L)q~!};uY3bTxF6VdqF1V!iTdNi7=JL>q|v&kQ4V$}fti;f*#AZH4n*#)qJk_h zuvG64s)DhxFEunCK?vlG-eydc1p}mRt?g|4Hw=G7`m!z9k7ima`DvC3hP5EI zECKV55iTArm+st>F&@K2%4Ju&;&Q`j=S$H?Ybn*79cP6f9Jr}g9tvE}8ghj$$aZPl z1`dvr!!EljuoT#yw@b0JdvoY#SHl7ROHwuw53qhZFTCup+|Rn--^(?EL(OPv5LklB zCDr$Dq`*>j;S$$*^PfvOJ9Spw@uE#JF;jf+ze?Na{jEb8UbFl~esm!GSBC$?&3vuh zf4R$mxv+Lpo$YL;>;9BYSv}Z=cQ#q>=h_ikvdEt}AOXd51h<%$4<-oujc%!--Tx}} zSdyu{!M|+Q*VDp$IO2O#Dl|w;BP&#kszHnEu~;Mxg9thQiY3rio#s{1{uhQnociOg zvwlrr8)P~&V@%B8-sWn2$ns)**j=Qqe%%YlrON8*A!BC8F{%B8m+P?-&TyvwF%y(u zo^kriEA38>$n3XlF2N*E)go^6l-Sj{B0C6$7_H!D8)hJbRSd))_d?=4BTq-p*_8YC z>n^R;MP8()rh*t!w)*nDOq{2mVTb(W3)L-Bm}fH_{-0cOc{mSBCF?PeA=^|V5Vk?V z#5P0ZAF*zo{bFb5|0C+H1ETuAaPJ`$0cj8f2@w#aMY@!fmhMjJ?nX+wJ4EU3X6S~Y zksP{V=w{{~zrXw5m%oO?VP>DR_t|Uh=lSe4y*7<2T%SHU9~2kT8CJ*V*~$}@8${c zUS=QDbXeRj#<;m-(?0`&9Z&wQR!Rc~INJ=4ze=Q*uH_l-@eaKpuSo?yw(aeXOIi25 z)@rU;aw@lim1y_d6b=b$GA(M}3k?5*eqe`l?I>c7&h|8-h(^^dq z7K@`f26KXl*Y{mC@f{reDCRkQDRMCM!;A8_2|eu7f4MR&G@)E`z8J znAIt{*vP9cO6v5dwj{;^_Pi{LlxY4>zPXaS#al&`+HJ>vSwki&qeYsXogE(T9Bhn@t*Rl()XFFF^Ae~p6EeH0^VuSu4}g@JbSLq!K!jNlJB36hPnR1Nl4d)FQJjJcWxaUUou8RhOBRpd zyTmxxA3#*1)4v)zl&^NU!3zV&Sj3KEfFuSHyvf{eXam-0J#5%-cydb)hTiA2Suf;4 zmV0}DGy|T?A3!#`yYrBW2Qoqc?m#!+!SiKjxzl91t{*6}2Ibskz~S(DF#Jkg&m(_7 zwu45)yIW^+tfafq^9=t05bIi(hY$W}dxDEk(d=yv!uydvP zbrt(D^~;seZ~(jFZ3FFE>?DRaJHJ%k;qi+BsWIiMSoG^S#LM ziIsf!F)&;bU?EvU(+(xaHm%ClINB#O(rVsbh^4#x6arMpLu)JS6Dsq$w5(R^b(q*} zClK|4q#zk)q^ao9S>zB!BlR%^C;M!A8jjAK|bPNECL1`5nMaVETWw%Z&I z!#c#68nQEc7YhMMQnH*sJ*Mo!%-@ncBJpEqyQfPSforfm4I`#Y? zdmv}$sr(uBdqV>6o3N2|R5_uQf7TUsK2D(pMH>B?B-)G39-D<4@gw8SG3@`0r~l7k z`&u1-Jrn!5S1A0%K!p6?p9%)~#Ls^_K?G9{Q2yV6|JiF|JmNof>i$ap`%Os{cyazt z>*(D-Q?U5$f6vUnPkp9@QKo!9Q|tEl#cPPtW?1aJMeDmBiqzOnB4KWU(0%VpZ1({OtT*Qt+WIf_2%^89ZRDT>>0x^MfCj`nr0v{E${BZ->jk9(efnI|&|mmR$BBHZ@;XPEacnYvx;<>OKgB42?; z9E~^S+27k)GH|n|-@&1sI}B|;`*PZe+e^mw`j++a^t~fjq8(TDF%Zt&x~|-O49Y)( zH}?gZVmRYC#m3DHsei|Vfj&M^32x2p1Ifcw&E8)bEAXSQ89YY<(PcN?q5MnSYqrT6 zZ8*#;z)$`8!hW~wl=>~EKnjoozcri|aIW%QKoh!2g7oZ{EMPURYOg%3D0mwm&gIwv z|9Ee19+doy10?O0<6*m-?NA(RTqNj*XgBp2#948CXkW4fIT>|0-M%)*9uHNwoeh8AVVFF~ZJUAYe=rV%ugrrwPHSqR9>j-j$Dn^}wo!z0>OX9SR)Vd8b^@2s>|qXY9Y|bih^niB|6S75197BdX3I&- zVVh3Hm^@@0u#Du@YF^;)q0yO}o9~{q-cQ*rHxPgf4&r1Qy^Rhnh(L4{@U#4RVWe+9 z8#{KueF5$Q&T@kdpw|k!Kbe|kH+XOEymtn%fx60wYa4wwQBw2}KTgV1&0&ajznrJ+ zn@r#aJq>oALI^t?f2~Ht6|cS2>L%HE-=%J~8M`de+jzk_;;cc;S6R zk`@?t)Bvo;rgG*X^(=y33&|tdf^CNb2zXCBXT&hu*?`2q@df#`PE#Y5H05jEvJ%-PVwE*&^Mqw8ScZUOS+fLRYX4vKp z;tK42@x%>3f%E%P>B8fnN0n5=O4}VU@B3-SRgV=pb;P01yiUCxg~P%6&Ep8S{!KX< zta(=$>NvN5<<b(5j=)G<}3ltogUgE|vV8fz#$h*1=NAtTWeW38U@0_uo{g!hx zz^V$G>$ttrhF@MTAB}s#PnYpn1#hxozPk&OvlOilUEjsN&7Lo3uk=sa@gUl2xjLhv z2xww7@{FFX`&tPYp7QHP-wpB9*iq|v#|>K!TG(8DNQwZl+@Fm>J$l#$e}3{AaqD2a zse!FNW;MR7Bc8e4%z<}h0g!k0gP+@BP6gy0bs&a<-;=Vox{lk0Tn_(D2gGJ&mm$E; zy@yOdw{jkk-|N*%RY4Q<3uWeO8L!)`Qn4G5So8E^}BD0~2Ha_m%xF zL>6S?KX_3*Ld+Eq85dCBE^)Go)}3Fk#l#+aIAM1?y&1NTD}so-v&KwpfB&$e!|hhP z4>DoTzs9UGq}d^TH=i#+-b+5ZTzFG`O;p?vw* zpvT(*{ioAHzlN)BGT}4HqOQH#C8V_mO7FW`{q}oxP=3jCkTqo{A}OQcO~xc9qkL#r zCNe>5HmK>A^KfCcJ&8d79>cxrxq(aN2MChR+0{)nTf0i>Gg+JO5}uQHFz;J_@vC+j?G`^K@@_^25vAnQf;k7G+Rsd*NpVyA3u=+eW*2IRhlwt&wcaqj z+uLhNp_?snZoRAfgTIM|Nq-7q_ZXQ^7|V@}ZjV-L3kYu$JEFC<-@-u=i0kd6&Q)nh zc;#P^SyKGRQQ6v=I;vD43L();W;wFxJi&4N*1clLnUFqzmnJ(1g$KxbI2KH4y>38E z>$h*VQ?@=pgl>Xva#T?ZkaRAuZnFD^YxAGVp^YJuZ4cf}M-9860@&k}9m{%(0149t?_p2Cr05K zBno#|>&pd6Bo^N>x&}AcQMGvoegj83EFPdH=vAN$W#irZly}QSeq1*lDUaL4V81D7 z$I+m5#q-nj6vV>eJ?CarrJtmoU4dHZ4Cwi6TD25<-G_9usskqL*aGYnLjV1R^gGuG zFPUjjp;f{|fhk__F9-~(c`SHP241$Gxl%`1!fr2PM=e1`swJFKhR;E=a^onS>p`_3 zs?wJM0Uu&cgi%5H3;6zYX!hF<^xV4R$eonn0~ZJ*RomH>A9N|Ae$g8XDOahu1Vq{y zf_%jP=^5zNv;1A*+tv*D?am>5QyGR>Bop==dsavVvfj&C;G{zuJ#=YB^24tL!|%D< z*0F?Y=Bk{KKTGL(4TYH7f{)c7VD||COCEWquJ1d-d}luHvst4grvw@o+Evw#4mu!f zXnU8V?qD_$W!JJL%=);cjxaf%v4M7Ar`{!EwFg-lJZ$0!Rz0{YXrB%%AP%%Zw`WVR z+vWS;F$*C372TzA0k`1iRH}tCEyzv@_2LOfB2SY3Sg$XL>lX<@)TE5#@HHURoVh@s zVs5~jRtV=l&O#hAQxIF-uu_L4$bTB_H88KhM6#VWgc53o3*y?MyCIK9vU~+~^IXaC zd&APS2`8A-!`wxf2+s76;ruvG>Y}gZU=ey+aa(m*D-MqUKe|1*wZj|16dl;(U{{SE z&8^DE9`m+sxVFO6ZO-HNoH?|~Rn-e?@`}`7C7o#&WQkTt@>#WF_)TShNI)x`OA~pI zl{~vl>Kng+;&EunpG&M)NOi?S@yPb>p1wm^!17~;J;DcGh8wyo;TByE_fyw#ejrL& zZYXU#_(6>FxRHi(p3Yesl48o3)WZ1jK&GIkXCM=KiM7>kzD|$gY5S(*MWH#Ub4O1P z$M6RIemy93cgMV6((Ndx7>V#cBG=3d^g)XVbRY8b+1(`>;9{_Vi|W#{c#4&tnmWJ&nmQ79Pk)XI8y5oP+$ zX+s7Q%J0kl{biXZ=Tt`DPwY)EO0=d^EI;S6j~pF7>qt%$2y?#&J7|kLoB;NK@b#Mr zI-J=P1$U6KG+)6>VPFK@s3vxc0q*dTdk(rJN4P=P12&;|2%mdv|Dn5&{sL?-amJIFzdQQE0LaBPDjGt9 znbY}bmJDqaus`S{vu(fRQ195;tQ?YO=E5zFC)&LR%7eF( z?lkq(5&P|sldR0F*OV*OexBF{7EO?n5EBKVhvnmxCvWxFpkbWV+h^`$r7@$Y9iEo9 z4JGO$fL*7fsz&L@B5*rh-U`ZXyMeO`y{P2zkb{+Mf;xO>VH7J@y)dDRj>^>XY`}*a zLE=%rKN=s<)QMF zD(l^HFc`iovx)_(^zQjywe-37?x?u@rlOD9owMw32^V~(hks`@$4Rp7w2o+@hhu67 z%LnYW7A@F(#p-dV>F0TWD~GcT2Q~}9>(s$Q`su0Ss1r9&@atnf&=$mfB_e6zOnTyn zM$*!(-xD#ysZU++rej_Y31q*~DvUT&FBe7q`z@zy27GSLe&h2>UbBooUwQ zji;v~2&3GMh)D=Y=WD@Tg(c#Q73sDwW1N&hwUkUBF46SPZJ3Sp!t?qMfQ8DiJY=}F zQGh_>w~shNO?Q#Zg)TLm#5s4nSx=B3!miN=@q2&>3Hx~2tvdtkta*jvhv=yE z*=Z%V+tRAb^xYc)^CD`%S-!RdP2uPRZRb&^?fmf5>zl{TU3sr1VekW;|8Dzvow#3@ zC(?F|cULf3hvQIiW9P-H@7W#MiG*00pv#!Bjw=ob)V323=C7dKjU4lHW!HJ^;zrC< z>fS#^#0+zC=j6R*e#OD%gY47s7w&VV=|0&CK^#b4x1U^Y=btly2$66n&NsB6I~PdT zS$=$pBS8b;H*3-JSzIb2tHV64PxnAk;L^K`@5H_*%Ta;}kotMt_S5c&4)=9Q7LS1p zB#?ajX$hpG>JukRGnh2V@Go2+@z{X)i16qK`ye)9t=CSJz9Y1Da2$|7rm)+r%zeFs z`#z-Nc9+#}Jt5_?V_zBJx&B*S?UPtA-**5ae_pNNcRw8l;Mpst8uMd*>6VXX*49T+ zcHY2AWI~QM72Xy%0h%C>g@byZ*T-w)?VgCAN$peK;wiPyHczvwUz6}UmVat?b1r!9 z2#b?^NwHdMrKKFIRyl0p)S@#uC>uBI&Mb*Iz)YxZ9A8l`D5 zs$1snIF_~fLEW)55X1F?HAvscm%P~c>nxk-RV`c6$41E)g@v?xrkvaaVg+HxtVa1Y zDuapGM;WO&*@TCVjOJ)+YvAVB70i<%@VVTtU?VSk$&#a` zyqbAyd>XdC{OBz{{wgx<$vBiz=0w+F3s<`>Mbek}Au-OyDnGpaH^)^lTQZqeV~rbp zA{(Vv%i(TuokF0=3HAore;I6~nxj&_7t3sd16vR*eM!Nd$*4}16X#r{YPHz=Yq8{h zJ_Sv^d>=we;B_PGNIHvC09Lp|o6P<)tgTko3 zt@+I0dJUcye2{w?S*Dv!4sG|6uzNH+BLMklT0M1uzL98gOfkxxtO%;2#Cnm{uWT5p zY1G<^rSsQ4td;5L`1aaEjsjLfcU<7Z!u0ApyNt2Sgh>Z*pG^y0(HYZHb)ssW$!(En z@wUyF zg1aStd`bTpkG_h-idI{I1BqnUOnz-V6-Wv;jP&SaU_a!)QdChh327vgMyIWyFthUiVdLPOC^?wUBPG_IlM(49UQr*c|?wc+SJ)?o3fcI|kH^yrJn1#n!H zKkFkD$1Yy(9xg8%d`X&*C97sK@rgV&@9VGaA44VGb?G6XZE~>puCNa=X!W)j*0%ZA zXpBihbkA*pWe@hL?m-M*u;F~Ud9H#9vTy$B|A_($ma7<1K6=1HN@=Q>@%#;BGw z7Fbe@w!rTX6MiaZQRlmvG)W5A`L#)yPNqTKsw@&eNJAZ6d?CLyKg7nKHCI`hLLM(O z3q&2~yrV6EJCTo4sAO-ZAFrArWN)B1)lz9<+q53?Pk+}v^(owOdfm*|(JH;^ zdE4FmWK5*0O7ncP)y-lC8vFGRp&YpQ1#&b<3suH@NSV8e5Cqzr{TRFxUB$bvrTX5H zHty?wf|xiUvHnN>1M;I5_p&|8|5Yjh5fgEc-uJ(nBrgj8JB2z<Hyw1O)t;sHm~A zF{IDc8ae>JS)y7>6TbHkzyNM}p_BkrH2O3Y#1JDrfVgx>Nb8~aw?O^*7j28tS<$@j-ALuW=KV-_CwotDvxJX+a6 zaloe|a(*>CUeMNc1>wiL`3lx_$P&D?(r^Flx9}BQojJwuW(9iJpYR?IcFS@&J)wj< z?%a+kgYVamTha6{ufc-+ZrkSIcCs}E=tcN^b{jHKaX&f%U_WV;GU=XI$8h*SkPHAT zkxnsw3f5=N3zjMoYUjKUfd;sio zRiEa!a6?DvO3u?d3heGM z#T!}k9y6UwI^?_L-pld6_kC*0@EvHt{hnt&BhiPt#{NaCN<_~r+gA#W!hW)Df zs&9x=;HLhyn!hL!R_X_&ub_MQfGwF2>@kW>P?5s3Yhhqi1u6GT9h5eP;{A95BUQ{b zV&W4TlOuxO1u0}XKX41(?^9+!oZ012L0*GoGeYNm59|;Y;>>eN%t>8{|&*{-Z7rkNtPm-u3`(!Fwg`G_6Vma(>?9@zlBQ z;h+BUTecwEbV8{bRxam%k2I}lV7W5D#e)2S@!e0VZ#)ZGJ~Y?+4Cwaur{ls$87TfM zF;Hy#{_{8fws3~p>t5sR_JjG>UCZt20pHsvb1x3i#H|&1mc3!hF7OEXx*Uoo@PXd6 zTnFiswA{+*-w&kd-61+o|6Xp??;yCNbgmFV*XI9iFd_^>)h-0k9N-~<1LHZvu4Ca+ z5X~PL6Hzh$etMxE^W@! zL>A~!-~MGJcgd3d(~cSA_VNi-7eTtVyi!*kK)MgSF_G60BM%p2esVE4V! z`9>kxmUqC;0)hQM2{l_MQw;H#Bgr>rX(lRWyW6WqHXCaynkg5ejL!|M5lt+_$v8I$ zP8W{9=sCh?v16hktZ>y2WjYJo99(>bD4?yB@;9Sh>(z>;3kMWj+@1!*pkhB0am8Zt zMYpe-4K+D(Fv=XX*pzauu7dvlU6*FIx;)DM>lo3^v`Z;Ibzq|IxxYFregiyROpDD< zyFZB-NsMclIQsuQGjx+&S6VzXSupg%7PztrD<5 zP;droWZ??HWJU^5xR1cDJo4ACf8_zQE_t9bKz#zhA+WK6H3`@>@lz>SBmg4-aH3ww zle^3)g6x+a1{90`7Z(ojkC&U3Y2&`)&%JW zTb^D`vmkL|Rtcq468Uv1JLP(B){EJ9p8X8{si|M)qrAy<@f8|y?T1tYz%ozyqf3ov zF@$f#@#^BLCLTy}mUq~Z)?Gy(4MOMcw#)LvNzZKxTz{c0T)~BcsdtSD4%!y0*P88pCVnG}Km7uc#e2AU5Ci)BpKnz@ z5Z*91QTCBs2t%&}l*0xWG@V?7^Ez1kAR`givTrh(+rP|g6v!B9SP-p*2;Ggjztwc8 z8nfSGP@M!(3MYsS_Ya+$ z4;!+Vg1@)8f^bACo@qrew&bc$;RM$9tedq; zG{$3_zB4@aCddJAHjxHU$ZOW4qMt2{j(P{z$xt)>&Pwy?SqeQJASk!hP-NcH)NoE; z>FGHM5(yT5*_``zD44QN!$!8BD(gj=VVs7o4kq)=ijATVL)Qes^QW+p4qY>Ck06K9 zQPFOOC0N%N4p-gB_?5r_VasnBnj?}|84M2{9AerPhp&*>1-c&jr*A2Ch?)6h?akjO z-{tmc4zQ?+gw<1J4uR0SpG>Mj(wMWf)r+}+hmotNNg^c|)*CD!e)*0mW0aqRUHEq! zH67${dbBI6%Bs=}19N<14lB`5Vs)sT2o9W%I*)sxOO_1;m)V3^H=A%h=@BGzsOg&Yf-2@&g>EFCxpz``51N^{WkBq zf`dq4jp%WXRLk(UiFugv!qgjC=be7I`bAVvg~XX3wc_$j=h^4cPHnw0etxvb0zs}h zPKOw=b0n*H$37He&v7F8@Oi?Uj1E{>wy*y5QA);*@%y~{#L%_Z@81{65QiI5CB)1e zN$<)LOMim&Mcb0+TB9!Hr?Ux@LRWuJ7lY0x={nDEH3r+=kKJiF1=V$BY+s;%hoQ^h zzNz0<&G~*xr7l?AG&q+paY>qnSnj?|DCOGcoXnjUUYLJn{}oQZC=q7S_ddyRju?yJO z6psnW=E;RMT9?Xr20yI4e}rYVd((czINe4Wc5SLFb7#=i+j>cFxwP*R%UmehDPHu8 z_HD*_ndbXCzD>h(2=cSfuS{v9rcPP$3%#GO+jF%1b+tsYR>Z{o!c>Gl%zUQPWR`+= zNwEmBdG7VfjKlc4pwfR;cVjPr`$e!RihNn~pz&Azc~xCM<8UVf*{>Jp)aJuI;|80L zEEkw`p6o1dvTvSAb!DJJeX{x(6Tv5Kmes}ea=iFXGL{#-)%phdJwj8UWg*? zV5lUSRgKK>geU%J66H&_47aM`Tyx{ps~@T}c+G0qdfDOSf~w0%Ey9j9?OM0XLyN%8AR1op47Nv1hUh(UBeSu; z5X~z_`4{1rRi6l{3|H+3?4;YWV7-g--!bQUFmnDf!V@-l&@Hfkoy0Ep^Q>qvT`0(` zxxJ1Uu;SJ>wZH>Ar;{LE5R}v8EMZW5?va_VP1@!wr2U)! zLI@9w<8M8_5D_kZ`tVx-CkN!|NWJ~A+=JOjU9b4@5KK~oky$YLktl6NyEPkny7H8n`|@8w!!*-c*^IfB zH51>4e5()KP04U6drKBnkR!bPh@C4x_fFqOt5cWLa9!mofep4K#(W%*%tGFAn$I3! zu!c7;_M>A>j$<)(p-s(7|2YR{q_Lr^(rANfsEA194er}<>jv3-5AKAY+ueh5G z3s=B`-^7O2pF%l$ZC}jrunrGF^7KXkLn#(+z2D|!9 zawOx^RKpLniwaX3(`yzjLA47nJB_hw=+G%A`n`R8cfc);EKASo!m1jk`VFplKv4_q zhk0KHT{xNBDi#iA1>S3WtUMIl0%+B<~e<t z_7}LCMUU?`|J~vSCUZX5UTYhF_S)Fu#fx^EjcBWPCKN$GZclx$s-V4&e)(~r>1S5e zx>P9yF>c>1(*AxD{TvaY5r1rX9A5WV&S<-3*T!{VD6Yw*AtBd&&xZd&M8Ik2H#)9I zPbel|7OtWR7s?j>W$%L->wMgJsp^mwc!1aB$MXApq(TktNRLbV-`tzYOC=n36I9VI z25^)=9!FT&4Q8k{jt*}3EJHi?ffAL!1;c&`R`lLR1vAHUFfq&ix@%Z!cKgI1`s^nz z-dn{5+NqBV**AjE-q@ynWsF0l?(e8{h1r`iHV6cd{$`td>FGEWW2P7bVJzs7iQ#<~ zhEK6W<@&6TA#}_~$O!mWyK-E913N?Uz$yF-DIx*3b=JQv^NTR^Umr-&nO{%(Fq_?7 z-k)#K5caz-dzEDPC)P#2iFr1~Dp=J>l6}3rGtq;Vv)6B!bxy(fHges(`Z+gQ^_%txE%V*5 zIo)@DF5ew5*O@=-z(#E>v{UDJM#ru047P<2| z+ZKtIo4YvJ(X}AoBGTikHaVle*`KPrwo*jk6kW>xG*?c@aeWCL>8bGBAh)9e35r?8 zL37kMX7X0MFmzV$L|AL!dZNY2Ssk0XNA=*v-!yG|fq@`Q?SyKO=$?KdGh_Ph9Dbjv_%=q?&9}fA&h79vVL~!x~=wCjJx`{FR^9w zh+<%gIk!2#qS4}HF_1tnSzT4kbS>uS-dt80nES849}N9{NSUIZ7BhqfMuPDF!YH7g zUl;!Kn#Ah-Gq?UYeXPnyH8PEX}5hbq?=v%Hqs9ZA>4nv#Fd`X5Goqr|tQ#bJ!Rs{0xu0Y`o9+ z&UN52kogNc5(DbeSCA=_z|O&G(srv@e(J9>)ieK++{brl))lzTijHc^wDCrSu<(jorZ2D2+j*y}SRDIQ9aESfiiqw-6= zD9zAMjIwP-y)ql`QTd~#{B0b|A4=)UE?K2{C6=IkoL5y zSG`vzaXds6W4Gl_bHp4cK2CebvqS8EJ>{iFv<#;e)yg@Wcni2t<^{!$8ym|WYx0q# zv@H+tA*nOLU-0W~zq$i!`e&Z`215`A+?e@%90xBqZ@2O>g2gI+li~}y0cueobN4as z#8+ive_1DM|4u<4nU5(8nIPF@@!d3GcmazLMu3agoy`8722-C+NK8v=kxot6@WfR> zHiV5Xzo?o0t3iS+l^nhdo}!B?slX4h8=s<_P0ni6ENKGyKBb{RUm`R8rN?sE$DQ>k z-39*IOLOfiJE3qUESiH{>JdVj{@5)(6-QgPOKOJ14^tFG;o&Ug$!pT1c{VQN?7SB4 zxz)T#`z9+|ctfAWquRa9oZ;!s5jd@X&&^N#&a)__KK~Tu(~qTX`cO+FG<-d3bMUdn z24t)o+m={%i6;}6SDMdMf3-lwtbw8RQ!I)9mt2@fna$*k-N6jKGP#Z*$t*iQCq~zm zutgO~zv_72_|{iO`Gsw$G9}@k9C_paTM~){%6s$_PgwbPnzDj*kGDV-pn zm(^yxwGoju?B|C-BL+jn@FxQWdQX4c8o7V$2!T~=$9kt|rSqBg>ki|+6o?LgyNSvW zZY^Eww@w*I>N&4ISw(8COP#w(lL`duBDFAK!i2oPc2rw6~h%}*@&f6BCUjes93{~Z(3NKOiBaw#5)(6 zo*B4XZ{`C2xZuU#W>cU0GAB+bzinG_+VX`d@+n(-=S3HL5qw@&IM^sy2~eFEQu$&n z2)b~z^S^XG8t=&cRhU}IIzW9>ZuZ?OpQ%HF=&gkFISA5ndz|! zd4%%Wk8Eitvb8G$8ro)z$wnEeh4`#Uv9Y-dX4G&=a<&ljPw^s59c)Il&Q_)N6=7Ku z;k8X8wZ>+c;bVAl&xw$W3AEc0v3s^ZV)IC{eH}jZYoK=+f2?LB7@bl%lgiSOF2e*9 z&3?ycDCno9r}4yZ<%i*<#AjEdrfvj_pZ`$|O+12STuOKIAqZkEjOLcr-w`eDy~cbSK8-YunmUg5?{`12{sRVC(Ymf}L{6@)@0uXYg9^TOWNK!bQYO{5Kc+QJj-6u6Z6_o+D!q=Se8arFkK+_tH5kF zx+f`Sdhg)9RB;0M6QwI^%+~AG&Yk8M`L8cE_ojl}rBK;bbft7}SDr$}%xzK9wAp_; z+hSi=)0~+eWb)A66RlrO!bOa#Qt@HlvTm1(L{;zfzTnTQBsen>pJ9b3eseWpu&q@x z$xklxFiCyDPMx?Q`7S?K-SZY}mmEDBDBERC9QlRBfk2@DG_uSCqh7xH>&d}Rbc9Ds za*I2@Dv5|Wetkz#X^Z%++|DcfEZSmw@AhxfBfEI9$0}myFK78v?=L@HM_&3!(FE?N zt}-@oUl1}4)6#ejvK$C~Wa-oEz^gUCj1%}R)!d^$bbwnO+ty+sqCo9}M%VDE$3i3z zGi-e!xqIy?Jn<-I7ClbjoxSjT+7gqgh$9tIkvscKL#dgjrb?U{f*PKs+!=JrcjB`V z;l=jk5}ALtsQ;C}cZj45e-Tc>81Qd2Yx^y)mtLf+{R!c;eM^Xxq zRr6Y&y*gYHzak58dK(#y3%G;lnaBi6kgBJv5GKqozNKR0 zizvkUSM@49apSu^vXQ%pmQP`7t{v`HkoZ*`GWim)pTQ#i3$^$}SXnBa`|=M9YStGX z!CN;jOgpS8m+7wtcsU{);q`jBA%%DztZ`FQy?~^hYQypMt8<)OwwHN3*i9<@3G~Z3 zUG`F43h!caPn1>)(Cej0w|%gmMmMiq=ffh_(X$BY-yTh}v@BG`WaTiOd~!<~Je8n6 zr;A%WTV_TL2k){OWO@7rGe=S6gc4pPam3#|>UK726J4kFBbsaYdrs6IB&@L%mV z>F#gcy#nmb)}1%94C49<-sm44uA~NeIsOyF^SyuC`jl9=y`2<|UQc7n{7D~guJV_x zAuSH53Fp!+76yc13y#JWk5{p!_^*2i_&6fpH?@Mr-*ht2OuXa{Ch1P1nu*Ea@{WsN zb_{I*YrP}o+>0D`)BeE$f^YP?#jMr z`})f?irRzj`;Hue=|3Nr*78&i=*=%N@zm0iFX9Bk(*kF#bC#vJ{x$c2lsA)zZtX`} zs>D!i{I4HL1d+K-B(P$8CSUB+SglHQvs|+oSr!zKtkF)CtWhL8su&8bR0)DgCTx&I zR7}I(OcG^`N*%MeZFv9s9+1Gg90*sWNQC zmmnlOQ*k|66fRD6oyC{9sVWMEceQt&{jk?;7ra+cl$o3%P!+t^Bfya4Y6cnPpGJI< zay8R!6u8t?tycb>D9Te6X!kif``b*mgw7;-T1|aqQBO9RUWc}*m(K@_#r1G4lhS{^ zP7{$(Oq6(p@WH-b#pcR3INU2AfaAY3SP{vCP4=b#HexlL)j)BKJ`8_~B_aOj{rqlQqTfrrBLg0K<_ zOfxdd>tBB(zRX`uIWr`Tm|&!}d@nH!{P;cKEr`uJxWr5*=~+z`-I_&lE`1I4{pTXH zSjPZnu@N+_z{Kz3)0SHGD)miqTboOG(eYo&A`q{Erv1B9_ZRiE? z=<_f$1e#CEPH+ZL;{PF2nYzNt>R-g|EVA{*eBDgKro(noPx`2(Hx`Ev6wKhDEiW;} z)Rc-N#d(RUYNN9qsJ3j-EBx2Xl$AIZ`J?o|QAR^Uh_%G4(<2hIp2m||qb(>qQj+)A z`MHNyxlXC7WwQ}W0_5{FADysDvr`h57J8Srv(Bnh^E}$uu0X|-l4mfg!6{MdI5AgG z-y9OW;nT7v_83Ur{aeqOi%ZKsrwu-XRSFtn8JG)o_KT6>kFUct(iv1`X1(?G)VBK< zq4-5cnDWaOlOJ@NhM$*$F!mqLf++)OQ$nk|q8PdUP@y8{bV16Z{B< zg$;)f^~(gx=bPLm`{_a)Ksh0E44-Ejr%2WgMV7%ID0QA~cozzcms%6=SbxS?j8v+Z zE?28i1kVdffIgDP8x^_ecFC7*@8&)<9p|uGm*LHm(TmhrXsYWh`{SRk2h~LXbw?AT zm}(=MRGd{(EwyM~)uBsaw=!uJouyVm(tf#T(8to&`o8;dS^l-#GX{+VhNPFj37PTw zxpe7l-^E$;-$iQO6Y1*g#tLd|;XwOpKM}0LlvDFNpC8ut!^=Qp?c1okWqAdXgm4Qdah{ z&H)o1wEQ<_On;(?U(^|>7a>=zm#`gJ9fo_$zrU;xQt44Hc^9RGss}i$Iuw&`VXJ=^vxXiY0-)@`^$QI7?VmXZ> z7@rs%=88$i)7IIUXoqgM>gkhpU^{tw*{sA55teG=A!EO$n5pF*vZEtK$ZEG?WsyoD zwuxpkgnK&Hi1f_YnBtXGcq#8Eji~m1q`laaY$7ZfHd^T8h@!PlnwW@8J4@4HPdOZu ziZ{uI9HFYNIr4qagFESmQ9f(IK4BzVRoEWl+_FOMhA9( z{V>3RwUU~VSvsyRN9R^YJlK_LM|x%-9{9THyeSgutPFN(R23G_3Q*|Yr2 zKdyArMfrPdRkZ7wuX94)y!!q%W{yxo+o)dJ=AcuhA$9C#=XEKEzKpwkMbKkl{sMKC zIm#apDSN)`Z$k4CXZD<4hw+zpC~;p`xaT`(3V(VGWYPTC1KK}u6AM$>9R-P4Ccn@~ zE45H%o=@QDQRe+j6eeWZPxJ@3TCG@hw=}z!vSH|l>_^>isbZafP7C6sycudiq-WQK zoxcs4^tJKgFaMmmI7>O!67l|_QQY3)`>@C9W9ul-XyHQa;@?;9C&M6g%i!A(I?5E~ zgbfNYRN48UB`3o;5hn9C>JT-MMrq?iZQ3O zeu}0YO3dn*Pr*QFf8i2ZB0;0DgDsJqw0iM&;05R#vubJn2WnTieIGQ!;{ayy2bd7@ zBoe4ld&Gp2FBFZ8-RbZP`PTk+M6X7LJs+1FS9O~8w$oEH0l5{OOUS>WGW|aQ=Rg?0 z=tgC}qE$7rI&}9`IeCpD@F`JSxDL7{+6x#i>MDUxXjqmn!P=ms+oP*^P^(nNnr0QXD8M8KvczWIt#5 z*&WZf@c$EGlp+yQ5H*qr)IuKDEPzSG=DXzKRJ@1~GR)CAT%KeY#>~V_CYQD)lAs+H%;oc8l13~v<4lYopw@X^U*4GVUe7iXrJL!$Ft*>Q_~fnkd= zwz!ZKuj#Ah?JT}+w{DfGR<3DPE!UgNb zsqO&Cah#vSlnxQKnpU1I$8(Z#@JOCK1{E^8#6_P`Mya5$+-3DLAhm?|-sr|3#%pR4 z84^9#RwjuYym@#qg?$R|$7Tsiv5&L~Y2Lb~&y3HM=gNrKx@_0{UrQIz_IpG$45Ktt zDovLHu@t7J_X&Gi*$pK?B9S5mMCLL|ro+}Q$SX@pM^>>DlM(QN3AU(J<|?&vE#I40 zGK%#I9Xc`rf>zbavt{1xd)+Yg4=MCis41bfOA?Vs$4|*b;fo;aMvNU!oH!N5v3&_- zj`k!aDj=4i!PwA^xx;g6R&7L4ca2(W!V?-;nXl9;wT?m@l91v`b%9fDA%#jUagB5w z2lj=HIKiJUB!x=o1)W$_k2q~YUuWw^w)8Cmz0I7>40eC5RciIa{_>f+sj1Cag-v~n zxqZ)Jb&sqa5p?ujRKj$~4~Y~E)C5<1Unk6XzCIi&f=VE*5i)(I+>u(+9xqgIOGGTq zl+2i)W+Vl>!l}$vs->!ss!y>Ji2pj9-biUAkHraOQkxRzpvem>jtBO&o-pIf<<~Ps zIXio~xq>-M>eO1Dx?!w2!I34N_eFu5zgE*~<(e~f)mbXcWTc{NBNk6D*ij*n5{q#O z8Rw$7B_<4zs2(P+_Joa1ES^@aYr0bkSxhD6W$Ry9Tjx+&1Bt6~iV>s}6VSLz>ez3ZzLtf72U8K9dRiiB zcNb2H!WZ}Fu*Bz%McphtEcSI!mqcii0vtj5;-s!_4*vJ_@y~}_HqH4PfWjEIn6MY6 z6Q@}CMNB{`y3vX`cMk=35YTa(`y%p2N54rT*q}n_%CFf;ob7-_=AXKAsX-E3#_^B( zok3Tr&H~!^CXW4yBuj}(u;pK4-rScQZ}biVP!cJv^%KKQbOhtIr+Y&>VMf%lRTKl5 zKo6m4oQ=9U^kTT1`@9&JL^ggJYKcxF9F~wTm?Md5PG>iE=TMo#-jWzg7{#4}2);LQ zUcKEquJ@To`%!;N>XtI6n$sO$u#-(wu{ho^zt{5xJ@-A%#xZ~;6A4&EsTGbyp|Cmn z=@(pk4MR7aG9q>6;XLWcRQlbg5>?K$_(8;~Jru&HqL@G6sHQO6&oQs&D!W z)-{j<3U(e(^^g{|H#!Ns=B1 zoqbFSu}Ra=)&+Qhff14hW>WVcwYTI2i`(h-z`mrMFyn=7y1*4(U{ux)I!`7R{B>!) zOu!3hsv2o7u)9kv<)bMn)Y=>3*H3^GdPunAVPJ~tgc*Ky_s%{tsEKZ|&OL~sIl7`V z)~O?qzf6()R1AX(#_{P1y1Km9#gPC%T|{W-9}75&EdirB1xko@nKG4U{`zmt&Vf2T zZN%tIZ*+2>inV@r^&m|W`k6X;KEo35gi!P1H+fRWez4B2j>#X$t>j{zl9=GsdMbb< zc%ygzVAPGL%^>&U5UIPqczoE6_OWn84q+YxKBb)sI>b6<`H>Rm9Ur|v9gCzEa(kn@ zgso}^niP4XllxR+5}ZnhbW%sQj;@ipwh-!peF;BdCKyh2x#JNN`h}S2=FI}VBBa@s zb5wK>)~OVBdE`Dt<_a3HyMd)T)il)@)LJ%X*$sAF5k8ZL5kZnfzEkmk1OIPi!k#6t z^}6&X=#(Q*-sqi)3!Uyhm5%kkFjkX^sEDOVqW!MiEn#9890{jLVta7kU4~&8$u$gk z1VM72N=m-MSnuoR@+2jbr4r&bC6zo&Qw6K;0R})Hx=v z=M^%3r(nG=Jq9XT^6ONV>N?XD=iuVZSk4wH-==|>Y!jk!iY2|?hk_R@Jq5^O?H$}6 z=^U6U{hhO)p;SN*hzV+dWSQvdA|;keb4>^ovOJc^>467XPw$cv_Zc{EVKHNzryQmD zKtuG?ec1gK5uI;rEcS`@Mi=Hj6}%6{6o2&8r8(UODk3Uksc0%*kmU15EDvyCU+nmm zG@MFf(IhR~9WsuhxQ;1$_o);PZ{4!qm#P*)L`5vsnH3v~^ei;jqjSSrd-FTga#Y(|s7150cN_K60ym~e`v{P_t( zrI5-;fUU@*H@fxCzSM>44ql`fcQ!HFqQG>dITd3(iOM;wA%n%8fMiQb+2>4M{fqM9 zA-z#(Fi%4_93I#VTXDHhg=J%)E}KSK;nNjTd|$b{OjABa8G-xtLL5j%rbde5-4QyS zQOl34KKbiSoFhv~k`z}tSR$RDHzseruYPX?;n6XP?IOvZ!bDWWQfXqTV3YqKV|_>m z_KB4ww9q;Sj6yoZQFsLv|1CmZW{Tq2KGzh+IxGq9h-tkqZ4($Gs>FTSq_I>I2OKA7 zspjF5f9Q+_7@WP`113pI&gV*Q8pwPWq_1y@qU6JOs`Ew>6m(6hK`_Fy6_fJh5EVgH ze3Xol%rio-S^;0-763ggR0@1xU#NVdP=g{lw??rI!^Jwaw0VeqJO9&MuEZs+OL!5b z;yZE{j<sny<-K{!Q9Qa8v6Qn$iQzlVWOI2r2iBM_M8@q6NEcuKR5Z!@&UZn(0S=V4nSnFtU^w%+dKCi3V zoTH1_%fO@iRQzLYI+wSie`E3uRB55}ZUCv^EG5ZOgQ9{E24gIf%T(qoL6aRiv=djy^7~ZT^i8(A{}MG+#1t+e3G02K8>o^=Dlt?s z^fOr}GgV-EaP4CmW3nQfd+{uMp*+n+Inrs?0VXj;Rce)*pOi;1XvE?Rl_b&5zF3ef zWo}pkho41MY8f)I38$78PHgT|h=JmlByznkEhG^x+^6E<0Y6zcLsd8+Wv<`Js>~RZ zBuQ9gNai8&az@r_nw^0v#9_tG`6-$T7FJA9!Ota}B60WHBHX83E!9k7phq>Z#cuA3 zD*@32py~z#Rg#IS3!zH%!IX>J@f0bd;E>EIFASKPRjZ|{HjfL0>dRlwF=hB>wV$jNCz-$!ilO&ph_G_$%<@xLCLZlXQ46c z+?fH>J>*wlWCZ3b@qu9_EnN*+r--_u9$;LoSyqlywB9Fvy)Tgw(!(-Ph3b`?NS|4iw$hL!!BugzlMYuy+*RJupLC96wtD#T?zZuF@;%ZIui%7k7f{Jn%zoiaVc*b~6t z8yRRwAlbEf_XbJpeaTqwiy~_&3Yn3vl~xRG>`5|6F)$-SnFqW?cTlblI`eGX}e!a$Xx zpb60um6(wuMO+o6-(!%;XIu}+ixjQU7gQ~{pUSH264DbR$O;o!CQ;Nw7H;k&;*$=T znMGz15mTjo^=O=LM_-3>rFfi3V0IEy(>O~;ZtX6)6Mmdu0_FpRQzVZ=i?1=M`LE7bE*@?rb}+-l6ksx5gbS+< z0ZW)G85lIHL{!mLIgA^vL??jBOjhK^GyS-khD28Zh)R;BD3|$M*o6stPC!J9$k}cJ~7zy;~S?FjrGY+ee}f@N{L}4bQSVj8d1y5QbI(- zFaUu8v;5B+T?HTHn4fcL>Y+pv*ikU2p(@d1df=ob+B((A!3$VIOWbG6L=V3-48ysb z2v{G)FAHKEB_AXU7->?;K$VaoEi95+BZiix=5>~Im6VQ}0RYH~oCdoA^HfmG z`}$vUM7~pT6IkG-qF6fY;G>b<#jVz!}w0tA)^;6k|cg z_CO}GP6th7+7R4Z?`(CgZ{H~a-zCQNz7BIpkHtV03FwG_BgWrmJDaO~WU%3rUcbwu zcX<-bR7<+b=+2l)+=!K&BuO#00Kxo(F?_}j?w-OJip;;(XM{F?^?*|tNlqJAA||s@ z1awI6Y6Df*5LGjFbRI}~zN_gbi|&ZK2Vz3^v3ssdERx#gfS4?_Jcdx7VISBB9ktl! zqdImO#rrQeq3eAvT;k?lmX>&)X>mvwn2d-FR76xF5G1`^)kr^A7MM%_V+Kv|zz~V) z=j#?SjHH1xU+X_&j(cGN?~m+uDeAnX3%ojYAaqWWsAVa;L3g1$vwaQ=vz#%$j~kjp zdddt`iCXfD@}-!xrk^sd@{?M0pUc@!@K~gIOI8&U`Xb?uO16s_v4&CTAm1q>xroOS zzw3RjVLZEfy)SKsf_S(ms$Gzw5EUk|u_qR-0;a9mQ`4^f8oCjCkL}O08}$){Oi;fa z+R!P=+~e;#-MF)lg006q&Y?>uVi9_(Yu5Y3JEV82fhxU31&Q`liyf_+6CflF=KRfJ zE`-kSVM%Nbu;5J}Z+c9G;tF=!1)@L+B);Z^BA?c7po(;11%o^_+yiHV^sNc0D&eIh z^pM|4n|LG%twI81o#PrCNJ7O_?`^f>UU1eW?H74o<$}aI#?3#e{wl zzfvM|kPMTKp;DyRu#g zk!3LWi-afD=7B+Kdphb;@~J%-PBCPz*9abuP-u}_ndc*5DUsL|xuQ>DDy>t*Qpx!e zK0lE2-ad{s_~fql2?;>eB?hXbE%`x&8~qxuqs}aRoN~X$5O92!pK6JoYe-X!huByu zD9Sk7qF5YwB;whr#3^!qiU*a%9fur|Pj^V`eTd2ZM!~L3MGUGKeR|^mjwBzYYa}&5 zE_!nwXju%^bv+^DG3PInGH{2M3bIa-V)zQqo(kp(@DYzjk$U`KSc&Nd16AmwAjVO= zWTpyDP8;_EPm}zcro6LMOKmYUBfM(we;>xb-WTpe#Cz}yGf+iGsGUJnKtvTzq4IH(kM%y^Eal=IkFDFEmn`sMJ+-=~ zhg9+E2UOVf(%w$j;X0Jh?|_~#5J&`0b-uMJ$@qt%U2K1^a|b8MQY;w{F921D5fk`t z#3WUuz&D28X~alW1XZHNW1zBa)S^Rjxbz-wAZ02%mI~KUl8jjMVVr*q6euBy$daC9 z`ycYruRk{WNoo=eR01O=B*#G2NlSh)5)}|piN+}-08a7O0pz)d%P8dlQYIbNs&f%+4b!f+|sEsiW8m;Kw1- zb%C$_;b^gmN7wXfsTz_;fzMhU-e@Z*%vC_f;JjT)L|y0nge%+r{qqBon<{cz$kEv2&R*nNys3?G1^(2*%vTv4lfNb z`f|;8os)|0J1ZGy*(caQ)gk=}6Wu@vs-nax&5%`@F&1Q*-WyAK0x4WXC|%dlK*KOX z9K|?U$_HVv)+Q6#yiOEm`A%@E7W=$1CJ|Lg14-cV(%Ca~5vM%Rgs_2p$7x!$6aS4clJU`-1v$FMSuMfy$Q5A~aC>EMDOwbsVSo5m6CT#Vft0D;Z^RP-j*> z5^_xV(LYGlkJ~d5$}~hFMmlUocxHLGDM^cc%pLhjDKmB0toJ!b%=5I^m!Qo0BR_!y zzi*pR7(^vv%K{M?~y#nt6@W ztWvbcw@RLSMkc!>&PbxtR! z@>f)dT1`__g}*v+;SSoyO)!`6OkZ;T=$#2+DO;`ze3>=n_^!jjE5D%TlO&uH68VtW zE5@;qf4vV~Mmw(_qcJ+9dj*$pBPN7EFk%fCx`%eJOHC?;-DmO`V}uHd3mRTyBh-1kwYNCSVE&O!} zS9$O1bxoIQlAMuQlQ)pXqYx0V?g+&fnmk#@dxXJK%-5e1ZFmuuZt|T9aR5s%7h2Ox zuvvJ^U(rC2Z675`lFwudbx02{VuHx;67Y50R|Z=03sSbJASy`e!e6IyRj`h+R;@9K z$%2tlWeKZX_@=D?( zCM3u}6~U5Uz^~8|LUvum*4S1Pk9Op$_TYX`o8rl3xUP5d%>{8q8DZNKaimpDjEEQ5k<$5gh^^mrs27PA1`%My%;_V$Uu_;Bn)H*aymwho!f3OIQj*d8$ zhR)sV;W>8E|B^gzIe+312NeufnIkS__f1`h32ywY|8@3z1JtYTu}cZWj!u;%yn016 z(x+5RK=VjzfuKEkpoJ4CH{#i!j_%_`h_L%36jcAw=j#$!RnQB{brMmfsVhUb|AIdu zRh_yAkV+>@CBb@{IwvZ!P9@X^klX~j{f4svI~#HmYMp|l7^p%)koXK#olI1zHd95( zTd88HB=+`E&Yf7u*E>9ku@GOu0x?`7aEf(=xsa>wGVyIDymsrpsOLSMjT>EXiZL-g zlpq6D5|J81sHj9#F@5n4fvV1*4kywm1yRIA@aF9#a7a&&=ev}UI@$rR<2{KiG;EJ~ zZtC?814Vv54EGcBo+{5lid;Dg*+3Ql$c?ex9ve}0(%K(^RH8sCyavvKj!-SbBI{^R zD_ZP}iPA9I-rR34930Ypn=Z`1x-bWe$cmF(1C^+2LL-$x1}cFqC@n+qB#ilgS`1)`!zogddJ0k3`*uio z9SdE;i$`Oia_+E#8>mG1dtrcHRHT7QD2K&HR1ovFc7m!TP*l=EDiW4jiam^ncm%8( zvCy6z3A9Nu*4)@0NL^D%#p2}&hG95$0W8vwm5|{oSw88JIZ<^vQF(zX;;K+VD$emM zK!r))`LHaKTOwC{IK|TQ?YkbW!f;4;xt#&W)4iPfhrTLOv<9m5wgusC=}~4s{@C>B z4PFVVVg{)s)${0C%Gp-rVoB=g5b7Odo$8v#pXl@;|7|W=VKR%dxX3^yrjf?wmY#N^ z@IRRJj~H6R6HI-ZNo7mMTx%=fcH4BSAzQzY*3$+v;Z?yrbk35dXi(^UqlP?!8- zoOuT(syLm~{l1i-Ds+lU0!Srffsc7%8s>po5*?3hzK>VU*TEFB?z zjVA+@j|-wOP$kxhN=Q@1aNd}l#h_s4K&KI{ge4mj22%D@h~%qc)WL;+J|vx{JDC6%D@0!11F?7GB|2FTER;3RkO7=D2S zewe@GkOlN4(F6reE>3ke5+&GIG3J51eP}^9B=Tp0V_ql^ePWsImCo?tHohXF>*>z! zaKkZ*J5X;>qQYqVQz1kp2z_kpaH1yRLb)p4Gfzxq^5SPHw(y@naADT)-SNh%4qxo^ z8DTP|{Rl?%WXA|i9tym%_|<$@fgR zC16T29)YJ+@H(HCeSFEtVAuOjb^6+_&olMHvzc9}!iG%v5%0mFnIvjTylRjZ$HjNi(tp+EvHgi7iD-gtW6S6>Tta zD~-O5NzFIfhVewdtdkN0mA_z&QBBsVH>D?7hQUM(i7)I)uBYy$x!8+jXIc?5&}{X!UCT!F*i3T z-_H#rdBVN22&b%Tq>rIaO#K#n(685^IGz_wf*Ponl(W~aHW~v}n4W7seA0a{`Gpua zp#z928mJ<5F-V0t6^w9!&j*6I-r_k%Xi`mOgj3P9uL$?X^EI~Cm<5hYTEbm@tqoM| zwX<=~j3@(@a6?xFKIx*afuOY7$wVa@ce>F`MREkGu#8edS;_+~v7n&S{;s5K;%g2= z>Lo>lQ)#BIxV%JL(#$!kSzYFG&W!I8K%s>hs(~u8OMW3!J_?GeDRN0gG*J;$5lDr2 z1|lY+A*WBFF`E?E=OiV)cUby!NCqkwm|%_=Ckh7xc0hrB(xYDTONLuI2nn6w_}WB&wW~SnT zD&nfxDasMhlMGT2%vmZeO3oR{lGv^x4GjcidyDTA?mCPqn{uIRy0D^-Dypadnh@oZ zUnEXci6$!Hp%g=OiNS6d_Bw;2AOdrgi2CMxfln}!$nl$KA#Yx5_`*HiE-bkX4PCVCn-|P^=e)P0KKMH<|?&nO$dXA3RUj3 zM_kpZ6qQtvVjhE?`?)I?R1%#)MdYW7kwwTD9zp@ynT0$Xs4Sm`01OPna2PTh*N14J z^7kB%4C0ljd;p4d%A+DGQ3gUEL?tV7zBeytWV=or0cBM#3>4a-Dp0a9T%d6=RuNZ4 zGGrv^!1X9uiixjOtP83s1xiR)4}j6XGSufdTc_%Q5<)!}IY8cH4nrl>i7I&25O0io%5k-OHBzt2})&jZzqX zCGl#rNg@A)9ZVq+I2H35z)6CS5O>&6p1QUqAK(k)SL<)7ZFS| zm6B14gTRgN^pd^KQPz7p==&{{K>67ky zaUz|lA|fhZW-2wWW^$QUmg3xq)OL-MRdR(~D7{Baq~eDaQUO>25*af>iLMV}w5+y< z!diY1Hf+Tg-Jm5eVJst(?^Ft*Fp`*C{-MX~z>gf8`@9rL!hO=?oETteZ^ST@y&zeU z3w?!F-*ZpBB5UnWv&F0|%RX%YNrkGQ41qTPMbAv=pS?wX|^G^&=6p{I)BX~N`!Sl&8kvmaA;M1vv&!ic!LVqxp zvLq@7`QE(vWB!r>RqbpcU>!5O|B{f$^nz3fnf4dJGi+)J8>4*ZD5*GwiF{ND-CRWF zhDj>Pr5t7$hC?}+=gfGev8a90y?@Q*J5l-h;{I$@d~eAVGO{9z?=b;nRn8T2p`X!~ zn02%yl1GQ-B1(`-&KQRtXel;|3iGv+*s>$bP;z)B3iu0Ppjy1fXhWZ-TiO@S&HJ|+vNEtwQxx?87uiI4CCYShQmmR2`5j;sp~f@S*>^%v>x9jNa5cIOj1$1C{U64zlDI@=%m^ zqAK(kTDND5^pRyuV%cJrCnX~N*ph8HxBD;pH>SXZCi-i}vbrY>Xb?hbs-DsrJ)foa z2;}I8p9o$WHu^Z{moMI(WgT@n#m})?JD)RSn>FVCdr=4Z@&3vCOG7ywng1-gkWTco zd9r)S*rZ2RWHqbuM?d#4dughAnOvqiU)42zu`MvC_97-RA)lt)G2LT2=HZbQZ}eY) z@n0CYWw2m(v8dkICbCX-V>1q9+!Ah}Vopi2^qumIpFRv!Q7!qU;P9EaZB#9%?1eSo zWw2O^{BcG?*an|)4hs@AVF3tdz-p0vR!G^ZKPEIKVn>c<->JHDy6=bs z&Z&)d$uHEn3B1ovHBlh|Kqi;rH%+xr6c<#rZ1KxwEH;zI0#(FS$pNWw2BVnWq`3F} z#7kG{NQPION&<^SeRf`$rUD_uQi4#=uYsy%>8j--CNZav&KGA3xvWWom;3^KN>NLG z{8>mKQ2}J~nbz)-d7ISoLRHI41ALlLcA^ni#X?cBgH-rNDZ9joS(OW)brQ9DD8*A# z<9c8c0y~MFz9NSFt6o&VPWPnrZT z7KgMGl|vD!IaOBWB`bX)O+=R-NhT{YSNQc9p^CUFZ6%oqkb<@<7dgwYXOF{nV^QjhN0OPyNM*Odi8LA-K zBZ@l@p(3HEq=1w!qm;jM2wK{jA4&@whC+Bg#hpqm5=Hf7ALFGb1C?{21Y5sgo)Qpv zf?-I<%ZPBI66}_q5TatBX1JK9wWnqa9VKh}*<-iv;y#r?s3NpVSmAj1+|hy*a>SVO zk0#s)dn6Es2&ZhnoM1D9&}n^g%MI-rh>wl@loj$0maYb>R4)0sQjS2k^biiZ@kvx} zmN_M(Fo}6y>0^F--lhBd7-LFC@l&h$pel;V51~~|g^(bS0*@di4pzD|?5EV#EzJ{l zVB!+y2N1mu{60W|$3V3d1su}MZ=Fi(lAj>T7fe(bvW*H{h>Fub#Jdu~Ja_bdaLP;3 zMS2t+b`4#{ms8K{dKgJjc- z@N1-d6g8 zU(j;7#JKkN2^v0QfGTG$Nm`V<ITO|ry8x#;Oc=w{ zct9jY;byT20puJSj_(36fXG%tq);_PKcSP7VeT&ISGx| z3?Uop;MXBs)zKZe=kkvj5K+VwIsj~NkxIhMOd-*gB&yE&ze~`JJhu5+duhAZDhE2uzO7lZ|qH2(k4F`BKP`Md@>`w$#S@s?w zh9FJn7?6g!db*eP(kW4#*U_%%0nhiv^kviOl)d2Z3C$*+0??QS_}q5DnL>Xn9n9V9E?H0&Ib9JyB^0DOo~062 zrD4L7oQR5V$&V{{p%ImfZxI5MST>(+k8r}mL>~Wl zA+K*~{eM}|ErjB`$c%ypS{QEIthtzQt4%l1RY%N$lUNiK93dK<>ZAkv1k`L4`XawU zO1aL>Mek{|8Q28)q+790tHpwU$;>4h<1M-W7yW?HT&-`OBxrY;Q)+Tt$eA1MZL%37TY6j1CFYQrNSvsA z9&G3MSH@T~OIdnDN6=qHxzg8SgG`E+B1O;wY0et*zFK&M-r#&}4PAd78$S2)$9Ay#%-R(y3xLPOF ziHe_@I9-BdMb7o)Vml9bsTs_D2cK}9^1;pF%*)Zh1|qZ$_RQD7#{3Kn%-8A14v)iN zP6H6kV2NOL79{iQG3L5D*>-_|rOD_i3X*G)O2~YSa4H_FOzNpC+Op#9)cl5_(sf-0 z)h=reh99maKd%WE>qO;T4pz^UWGUa5U!+wZ&d8#tfYH3#;q=CURg}NIH(!Z}h>K6Q za7bd&_E+ft3;G}A(E7>f%WcPx*~2yRi>K8|bfLPImB$trvBlpotEgk(aq4N zMDtNo3L+hN{xRCm>Vg}n+Q&BTFjOwv_arYz%B0+hO3kUcV$SF0d=^75CieI|LpK^W zIZpv5?CfXA*FNnM6Gf3CS2+v(zP25LmrCVsvIRjL*1j~!0%Xw6H@}_3IAfLBnY(b& z+KPxvY?%mx_lo)(HPFgd%F^n(MAoS^7;jQ?{&6e@Dp5;*&VkV-COHhKJeG-woTvg5 zRVJUw6?2@C#1qoZ2@XBg*yHKTeM(Goz(t&L;ac>&bNH2alWJ&50@;qRJMsxt?4%OylaAYwVaa7t|O4 zfUfD1B1L-Ij7`%(16__kYM#)G9|f3z?t%sGu2Ce7xpSCTOBe=aFHXCcwX+v+uZcI` z-GW?f(eAk9`J0n(^ND?>T_=z z^Kl2`?O3ed5}d|-aF|QK1d)kr`OOjI9fNqN z%Rh42^Oht_hHlt?bQIs%eFhC-ysu85Y;k^$zvA1Vjk4V-fC4E<}1wS2BuqNeUz?wD}E!uIaq9 z_JH=Aa5_L?h~~P4WG#+kp7-%Qk2H7BBQpU0#uko3|8Isa0!9v@*m$F^s5l zOO|yiB$G@iao$jTmV=&ujDizsmfMns&Fmo~*pi>K?^H8w1X=QP|E4SwxAX-w)`TmzSLJj#LveZG zHUb4%^0QvqaVEvkoT#F4OINZ=&p?kPOFs8NC910oW4X$}deDU6pv=Qk3o>-W*;X3E zxWZXC&|?~cgpYEgF@IIU7Q#H?mm_=e7?8XoCI1SeyOoP^O`9!wOIBs4B|nY|**zgQ z38&&GCeO1&(H0{CkQC&|(lD0%kO6a9?6XFhfPUhE-O_^)RVJV58SDwzccs+voL^>~ z0w%F~Rb_4m9{ZY*G}|5w!*CCd5M~QqJl-xUQ1kB* zasg#~-eQbNilo={fHe@r#yMkQRb658ka%z^s-674EhwCAJDw9-l2FLP-y3|%Z{bFV z-Ei&n6EJRq5Vv$MUDT4N<@@sa-hARVdKTr>5h{DRn7cR~<~%Mh2Inm$qZqp39^k_xYWP49 zZ?|BA&II($TV$O|yrMs_54{+uthz0qOMdpo1|~6n<`F|w0^QP=URmfbZmvG^|SpnKIUT!;S&wrus#^r?>7pik@}3N5R}ry?i2JzU`$K^an9^p z=akdj71+?lIge~hvF0p=#K;j#}a?S48~fL;Vk*t zS+*7%o5v6diE>Lf|I|0!r{>g<=0={3PpNZ~Fmywbq~?V`e;H}_;Wdnf**p_l-b+K? zqo9u{kl6Sc$uEj=g_acJ7sZb+j?dxAseeP4zk_$sLkba4QY15OLMT(Uz=w9Hqv!FJ zMkQEdME|WcJz=8K&z4S+h1IHLOfD0p z6)HK#CvTsLHC5N8^$K-l604i3UKHRQlwobzlG|E3`BKF1S&`3RV9J4Rvv>O!A6vEX=~ z5gpyXf}}{YD)alKGcQJ`fVHlJHxDWTdjzLpKG2{aMM!i3Gt^jZUHqMz=ki28LJGd* zXS4;l;*K&Oq7xOjTe=-lWpbIm;l394ug>!uh&V6x$$#Sj+GehDY~zRv$I7y}?bG3H zP)A>g=6iHR&#w?NsrIz{%y%3tcN3srxhu(VjhK|C)G7Dx{xJ5%P-}6=#9^2Cdw_{(fvH%m+u|w z72C_O#LOsDBj16knEe?hQKd7s)%=CA+;g+yPqrtgW`XP#eD|NjOZ<69x$>3|$9V)b zqt+@l%h-pl9u%UQ4-2~~C%WHJB5RyoB(IwX`8puaA+@}3Z)|@>yVXkkl3(Kq3yXaX zaA{5tW6V9=xhE$oA#UmRU{@F@^epQMu_K`H#Svf)i@6VB!O%M>pP|n;dUAl`N)(;eAnNiR&H%#kMhEK{4UDmDKD)#x9X$iO@Rhh^^=U%im>BDnh!~zRrci8XU_W<_ewu?87MvIKp-E97h8H zvMMVXMXPGm-ou^CCon;2qM@%*{{(U`9t0D{?zJ0QEC7*X7rb>c0* z_AO^tY)Ngdn47E33EP!Ly+w35C8TS>M5Zco`bpvmGvER)zL)&aKnJtdB5ZN^Fo|(X z_mcN)F*~qwz&#*>zb)knrw#0&PPUPk0H@=HH)4eszFa(wd4(|MIY*qXegdeAXVaha z+M+XWIW8$S$NlF_c}r@U%rg0musG>RL=^^3q0lz(`%z+Jc%~;Ldhl2H@t_Z|(ISsyZn;hi3&X?(hZ&>a7*tW?(bRF6HQ}h5JK3!DD6E7 zNrO=PQ_zkc#rHoV3m^Sv*(-sC7vPEqyqJg5a5a|rb3Ats7=b}yE0fDqOI2OdQ$bO# z7@EKYclseSnA~Tgt!I?D886R9Yk!_?{7ZiAciTBpAvzc{Bw6x-L{2jsK5Ld8Q89@P ztQaWt7Xl5s?07r&`%azLgn$imvQBqInoXIwr?>3uvO?U z%#6=OK_p$-vn2zkQXa!IIBfaP5ej&Y^ESqoXIkQgkWlGppfzcs{TwBTTe=-@aS)Xx zOUqU-%N28}>@|{Ll}W)wtiHM}s%<9W`+9O<3e-)pK&8aF?&jYV6cTbVuADkguEfJu z6KP4Zl*wnRrK;yP9%TTw)OIaOkiI5?-Cr~*Zzqhf`&k#0Rr~Ush!bX7uXltbmxVKq zB|l`i80Lqy^+Ak#*)F(Sx}(38q)5X@468Xc3EV?54niw?7PN#}m|YphQ0rWZ!r#s$ z?;HAflO&e9T#+ky2rG`oL_Zl>N?N&MjuWT+IW48g)hQ`BmD2fUJg>v35+K5*tbW2w z)BkdDhCQ=*Sn@+K3`3S=yS#X?GX-=@2irwMC8Lb2AF)_@^wM>vpt~VRb8TxZtRSC0 zoRj>M8HQeGn9bRNA+nb*>I#ZnVe=NpN+OSCOOmC0Z=S~|-QP!VNnt#FT}<7VBEFZg z|4kIJF;gAGGc?{3Za=eL#S0iWfun_36IB>)=~hq3_vV+aUM4A0oIFIJlN{V+k$e#h zlFUGdFpAn29F)DlqgR73>IxmX_;@Q6*jh?j*+RB5UvUkZ5M=wO>vXy!r3i22={S4_ zBLbR0rD18IL2(b{H=7|ZBzbkB;wP#`giHsb;&My(L{v@c9qJueG2ksALNYKYhVG1| zB-URHPM8>5%|UTB$48XWXhMm4I^~dgF0`=R%$uGN5^S|NLgjn&^HcMY^aM-O?R5`q=?l-}1hJ6$25p)m%+Wj=hH3So~Q;_4fZbY4H1TD{jQrO zfS*~A{zUNcFJ4l@)zXEtmv`g}w6@3%TmJLtyo_jL*2)!giw3G@b297j_7YwOJK7ap zV1TG3JxA2jygtDaQ~WIXwLiIWz2ge9tjLWRbV1zGo$p=J?j$z6ZaCkQ??4!0UN0x; z^U`E6onKb$WHng01mEn1Z8Q|H40*iigZMmg<}nCtwLdwN%hW2hTBTNhh?D~JPr{V| zoWfKU7>ej+oNwo`#v%6`EwA(xbD_yMe+hkE_ve=G`b#sBk}Rz_dPOFm zNhbFY-^B4LSir9)23F#TlHk>%<1JI6f>&I~#nVd*f-OI!#US6C*Q#1;GFS)URJ0jU z#5eUgCWzrC$#E9q?>HA+!ZsK|5xHE9+*dQVcm&PYdUT>PPeHc3vE29un$+422W*AQWz6fqMgtp$>R5gZYo%#P@tx7DbqUgV=wL+h@`bKC^5aH6t= zp~X`?C1xA490U_p@A6)2mSPE}A~IJ6FFlr;ZXwV}<1cI#Mpsvt%-KSsF7#M#t|#H3 z{}OO;fb)|_EZZMA-$Iu%{AnFQ+T%LK$FKmTM zT9PCc`U>;Y^R7>5?#Tn~xxvm_PZWSt0{fBhALXg9Np}oS3{;Z!VCab87D6T@Cn{Ut zsRh%tEfsk>Lk8T5%GG-8Gd!LDs8u0%Kg3kxT5%X3%dBsq$3y_3QA0i97lv4Y7tP_q zkqdp6hJV=NUPI)}k(yOyMQ)zTM%UGJR<{$sD|#TOOR+(x5+B1;BxwbBu?rdx!bRa69UqRGiq69z*6btXctTh;8NSzW3+_(6{FUFl_4CU*% zB3D57CjYP{+N_0bYk~RR{M_NW80L6(U41%j|7i=9kiei*5mKg*h@+lE$stEeaNfA* zdYs?F^@}qk%TtggX6JVWZX5kXg-&RGf=>e#dhlHF9T2tCprpM%uw*%pr-Ri30GXJ5 zdA@jv)959Jx?E3y_T(=i1h$xJwsx>sQ-r>;9DhizP9wi~gL8tshJ>l*Y zT%X|MC>a0XOT>c@LYSd)5PEO zy@WIHYhH?_8}tETfsSAgnYuiCGI8g^gK-Ok=3O{xW%8L?r50V#1j4BZ2&_YbPNgJ< zr;o4G%1Pp!s1R+(@5Q^^0;~rlDg-n%!`lZ65{$|VQ9+a^Dl9Dgg-BEZV8W#|L=Dy6 z{c=KzI~6*aiSBe+)7A#A+(kxR9LN;~Z?TX`3%DI;n;w!aW=qqhfU_C_O(2B^tz_@) zLofdf`22W-PK6f3Gf+~|3pWTNDnmCG!*wpzlHZ3+REA+VEIY177wd>EQ6cv>pCClV(dI{=8CA2Yl2K$u1^`Kt zBt?>BNtR^pe_vgL%7+u+CyaqEF3P< z0?#q1EM9?-@6FFn&UP^OBm$@6j{mJl(M%NT~CW>f%>RhdbQNsRHW=Ove@ zAn9f*F;LY3!-mi$KOaTv|BO5l9k}bRGyzsFH$#;3!B!p~hk#gTl*3L}qvTjx?>2J;onGoTZdWh>G(UCpRGfj4b`FFatn%`wS< zpzFG>>$P%?r|~PQA}Nw2Ns=s?1ZMunBqm7`0H`^YF(%0p<3+E?!=@+OOa-DGs*+%= zN(+i1-^|BT#~4DmDU0N}9&3Xk6rez}mM7Bkh*`N}Zmu@RbqtY!K9&h1z#1 zK06vOm&F_AT;6Q_wQlGp_Nen>74u{w&9_i4Ujc(%um5>UL3PE`Jh%8~;X zN==d_t){hJ&*!wn^`el8%IP^vpJr%Aty;@r&e<`dl^Ylsx-oTNN>*h>Re*t-Q4vs< zWniGF3a8zRr#^%p>N8PLMO+mnd-+;$^s^Vw*8t(VW6{6!7E2ImW%8L?x#kjD*>BNx zWI($(UD0ERlE9Omu!9;1fmGzkf(SgdBuHyc3gVXD#3E+ECl?p;b}-^_qH_KvS9ni1 zqH66Xtbl-@s1#M_dWndAhW z3Id?*F+7nwJA5(FJ;nB1q$hNwIu?ki1O!ZXBq{(dGZiOMRm;_UZ{F)?bq(&IYr3xM zP_gcU)tp+#I0gW9#xniuP12GT84Wal2?*v7W(*4taV63YRm4?kp)N1T6<(|<9?O>h z`8*5DprvFKC8Jm$5yAX@G3NT4kgH5GT+uQ4$60wvCzq35$Y}`5TWIsYBHm){FNJL= zBhD?|ytomLyfOYYr=3g406SswY9swG5QP+(>eC4_^eZcB6N$Slf>{~y!6S_Zk;So4)DUW z(GNX*_hb^4^_cCQsOn_tgCQgUgX2c4g5a8Fw37q^0-Cc}t>(VJT9PCtGt-yLTxwLa zDk5gG874E6>KeA1i_Y1n-;T8Qfp)ZnPu{sYPl-J zI@Q?{fm0nCCBgmS7~OmQ+0v|i=j~&JI=rR*Oh8*s3g(vXd{|z4!1NAT^|R`pe8+uR zH0kjX6*$K9a;g&O({yAQ1|aB~-gs{bY+W?W6-G0<1R5yGlB~#PNL4^EoxsdGU`CxF zV-+cS*aEMyri7krWP3QE2y0d*pQ%-ABAvYmryM@B!}+^Oh>{QiGWrQRg>ff7;L(H* z?&8kzrCe=P4lR^fg#+yXq5=^?4REnQJUn*k!k_!St_#Xu{D^tB2cm%{SyoF`*N02; z;)0_r%O+seBdG#wczT)UG4W7ETt%>zDAIB`gPHqLOk$a=m4OPlGRTF4WSxqVSA5>< zFD`)9W1Sun*puDbQOTdpOjH~Mhl`oh&mN*7SV`A)7bhf6@`#5BDIT zr|WrdnSq zIoxSORIUtRH|TOL`K5}eoXFDg<2Jv`Gf^RWT7DI2rt%sZ)HhUtAOCSQP&ahzP2-E@ z&KB8Ak|aeky}kfI&8cXhY4A(a&<$PJ^cpNgmzZ)g3Dm($k<9q@W_VRKs~WmdCon~l zByW!Pq|T!#PRv5^dDfnD@-q2MNh{F@3=O9+n(D`WnhIh98cPa-PB~fQY+%cR+jv4u zIY&#kA}Yf$WLb8F$c`i`r$-@g4=BkJ)aObLtP0*_F|JbH)+hpG^`iqq_b zhXP_#!E9+&Pexu?L-UGH9XWkk212z5UqZ7NX*_YIHnNS&$9KRy&6f2|NpbjiPff zP%Q~kZ^JP{*8U=eDi9w*YH@bQggKWq_Bry%3@QN(l#F6}cQsBEGS?za!&u$Xp4cn3 zoq33(AtniWLj71QXdac0uXYif&Ft@t7yd^D3Oa@EiL`K#w_8s{C+{c^Zs|6jIDNC5*du1$JZKKrZUw%S+u0R6ztQfJ^OF z5b9ApZ8CJj^uVi?Yp%usGYWqupD{V!bhI~l3(Ux?=8=wOU{zwT1kZ=V%Zu0(k^T1! z!A))8s_?U#`hSGP>2HAD{1K5d@ub z-E!#q73_#A@cA=N+lC#s5T=c&fa4$HVfQkCi+6J1xF^?NcfvE@-@m zu<5=Uw#5vRd*N^K-e$n{#NzyBDjyjPAF3iYR<(XImh2Ed=qGDvpaERNuo*fP5R|L} z0E()}stjhZd$thMt0}x{$0HO(vwXq7GGV0igp(9lr!Z+HhMdhi+$^Aghldn&O7O13 zX0~u3Du-WN5tZ|?eM^o>PB2k{<1suuVbgt11kp3)G%x%KGn3exsUYCmUqGl5Vyp^{ ztCpB&S=U8JL`42I$9nvF#+b~^I9_U2l@y5qlVpj>OqT0*FK@xUk}LLuzQ)| zyXs*kB&iX?zU~Lcm>FrJz6G*_5z6manS?k*9N-jNGf~pokm8M!kbwMK|F5S$+R}>F zz7ue%SpY> zT3_n6kLs?+V1CnF323W5Q3w769aFD%(&R!91UGU z9jXFZs=RPjY{n{k!xhn0NbCgw%~31cnl?h%ZZvm@MY#K*sH?KLSh@zY) zx*cMjvX48(&u1~HRg`E&bQLC7xenfSUwfm@US`Qx zpkmj}GRAaGHYmBuV`v{pMfIZq3sU{|3X=Pt;~1 zf>gabN^+D0=GmAeTuPAI7dtEqK{wBVn!NrMTidFO|G1F-fSjr22s+g=>s>N_F#9Q+ z-QV1tmyx0M;bo1$=#u1_jUY`#)%+YZ5G2oi1d|z;>B|yXSg;1g8Nr-8(p5mH^66IP z@ukV-DrZ>eR>necYa|Y*JJ|O23wM~|=D8}rRd1|SwF5g3H2&EfI<*l|!Xzyvt01D9 zQ4z6z?oj6{t*+>a+SbQuhYa0Z8B&x4{-9Inw=j{Xo-+5onAz8F#{F>nB((&aac3h- z&+9OV3Iv6uYI;sRk?3I?S_^SHn7*vDZy@IzT`fZ*%~bJ1RTx|a2{``D4l6nZvoJE( z5}Ri3JO;UAe-=Q%djVKYcQlbCsCwyer^0t40(R{{|wCP}gc(qd)c z9X+G0J3NQRrUIu#!bdoa6+`P4m3J>u65J2%!Ju7H>(ahgU~=xDIS*H{>O{EAJZSwE z!9)e(11K1VA<2?!Kig`+lOf72|uC^D#KQF6zmLD(~-g=c*)_to&gJi`fPc z11*U{2V62^u?s`$x?ISWdAIS!&<(>dSd}#n0JY6`Ob|XdDw$Ivo?!Abd@g%RQgF%D@&hH)6R>e)JLd@N zFJN`mSFxiZvve~;vBv@Ls+k@bE*W_ZSs#c+cfH1s449xWwz*SU5vL+IA&T+=W6(;7 zDzHPT)^(l3oVOb6exBctL(_4=I%-!3stlb~BCh%tuJY(jxAAyJ_xv%SI++Rv z1+v21v9>^DJSsAF!~kU7|Rz2^4e)5_%S3Q-OHY|Q>$p(?010fXw` z9uKVsT{WDlfG`9wWv4{*_wTpj`g}?%GIGp|uF*}e1!2XOx_uJ6A2nF%y8?A6isLFR zuRuCg3%GC#<9r8S#gr1;E%~je>z@QC*Vxv{GhYY~-S?5Qr zA6~q+v87H3Vg9R<(|kN0^!`%^Rz6Y{w(FdINqb?n`*y?R$K2M1;-(?@36vs+Q~^>a zPy?9eY5p@m5o*6Uln4OhKCN7p4%6_T=}-9G5PbYRo?K373?+vEgcpXUaIDYL9hDzuC^;&{keiB*=F4|;bFd;nY9F^S!Jof>w!OR~LZzab z-a?`G$^$9p;Q8^ZxWgRgX`YuE5!ZEn{Chl+rDm8E`Rj2(&SKjiDArnJb;Wb++7+sR z+%xHUiyK0f2UjU-C8w*rx%<4S(NgXZsf*0g_>!OOOOI1lO4;~X6G5d0OKH4QMb}6# z+j_cVed6TD4OJ3I%}-I3Ca64P%puInJTLRKOh|B;ncdb`C`+j_Us`;=1LxS>r&Tna-W|{%BAY%y$4ixGIWzez5o-jY3xv!lWU4aQTE=cqq+WKwpuFpKacCU zAM4YN*M!);|BiJ$1x^I(F~ zerqzrJkRsv=dnIk%aC5+PibI-)Nky_y)`R57PP06;!qWkYUxY3=H;vkra|itXk`po zeXf?9PhN^=8PV{h9KzjkYF$Zwjk@L3yS@#rmWDmIA*;Dm71KZTxq5@NavD&LNJ``h z0G7YY(;Wqu?8yM^YjUjEGkMF!i*Ti@J;;%{?SEzP^H zVFc3M2WLp6x}@BNn(Y`ZnJHSPXEcN=HMKt}Q9o3aRK(y<~1`<(mpiN^Fvv8*NJAb-Im~J%VYT#9~_8 z7hiKj(YO;%ArxjBxct9ZZSZ;Wx8SNObS2}GI+GuExt`8w;l9Oq{N^p5rYSit?ACH7 z%h84~RL{R>agh_4-Ha}`dg;!1JqF>n`w^o!KTqwQYC%fipVsou_WnvFC{@?)J!g3T-gz+U}5catxdCwRC4PN8`Zw?EcbfB*iCjnMDX>_@ce_XPgo zGD@O4m|*#{?B`Qb%2G*?q9=+`ThF&`J~$tNd};9oJVMnb&4&SDhOinPs%Ns}W;Cfw z!()qV&gqx$+h7*}4(|f1-q*{vVD+}>O?`)R9QIKMD6>?+02657rhrqZbM|D_mFaw= zkDY46QquRbbkWPvXpo?$j$jU2s1bdQn2$-XAuDd`Ot{vdLXLvJ%s zv5#621R7q7aQQj`!_}1hN_2?8FH0Q|>MYcGx<=;8;-oHQ5`DW7zFlfR)^{|KPu(Uw z5Y-gI>OL&54gC4{LtQi3o$WfAFm`&M-v`)p`0C5;3vQ!Zna`2qC1ShH1`M_EWE>-6 z-|`k$M_ZT)*=sdJV|I;J&z5^H~DgfG^f^%{TsnlFRjFI z)=b8hFJf(64)%(@O7?mI!!z6Z_69`xkDpx#NiW4v^X$11QD0ZRiFc~&%|464dB^b9nd`oS z59UL>5mpQ*onTB}O;Q^EdPhL-C(}PX+4lTto-`x$&1tRhM+hOZ=CWsar-*O&2AXfg zpf2PsM$xV5l%sQECs3TFQpt>gbp1*@Li=qn;jH?FsyI;vRTeyrX*i{VjwqF<0=g!U zX>CMi*{mx1*9p>qj~zqDUPLlD!08f+&mrNU&@IU+q{UXqgnH~;af+I`#Y*5lv9e7;j9PVgIC0R2?P6sMZRp?7kuPkJ2B>QNv; z^hQEXKow5{0GQxy2mQ)YggP)RJ4J33MExP^tSS+e1fJA^R?magrA({W?jiP0nb_s{ zlD)a%J0SR0!~Oq$zANFxCPHDWa45z}_)H(81QJA@_n-zHTWnH4rEB^7Uw`AvBw9mK zN_a}X>`)cuqjjg6FB+WC3hOnmxbh%=1>fX#b%Eyu+xI$$0`J!Zl2eK$$gUi~NBO8S zS0NOM>UA}m^pxQ`FFIWv4Ie!@BSREJJ)?BG0|@7idi;NdQO_`LLaBM+dRCAY(yT!W zE^@)4a(dV*<|MZ1{H0U3+Z|t_=m|M>;){6Zo}#}vAa@>HKbFbTqNZ`sEsCn+lwsmv z6b49gkM+^0M>I@G@s%nCF>w zk@HqQA^X#Z6yOYArR=j>JKi0qOybZriwV6xCt9R*w!|+affET+=%G|ZmI5-}`KQ>7 za}{!kY8OX9yL}vvjX0jH7IGL^KFJR+;BN}Vvz_eJ22$e$48V&*T_|Z;a^(z0uocaq z042-<>U4gcgQjJ=em6x_*Y*Fu|NqaRQ{5rqj9Dl;xv`qli>){N(BBL>)r}Gqj}nW_ z4tWtdoKn|`_M}(H6pN)w#|){;-Sh!N;i@Q9C5Xy{klejKdu))Ccj~K>^g%LPk<|nA zRp4Yn7*dsi<){a`&*Yz|XG9I1eDJk=`P(rD~S#B!+@dQgHZ8$L>3y4Mn zAz13Qg$F#MvOyD(B%|mgb(oi#nk03U{QL4V#3({E8I2*a=aHB20mc11hg?tvwoFLt z-RJQls(j@kgb=2AN?i(L^T(+?{yl6?eL?TARrXF1cj&6P;(Am?Z@eB=E(h&u56GFLH($_SD`8dtopXaxewf@6KP6-qzILo6AH@PQ<|@5T+`!R5g&IaaEqEPMbT?cnhUR!G0+jv)cC( z6uwO{I)9p*FX;&=od}G6?yt13R}7jK2#zOtiwRq~a~=eE;+`2i=2lORP0Be-#B<6~ zkM(~akyVUHrjPednV^YFdKnbm-St=>(J=-V4kwO9hTkakxB-HadCFMTYQq&cMAgV= zlUy~5;tMTVYEYT&L?xQ1DfQ7uKAo;iG&SPIZNZvl{9BnpiAnQEB&|%P-X;|O^GxQD z;FR^>8d;zorzt=iK)LG}ZPvi0iRqDOes&dyZgD9(eo;b^a<-W6E(PFKs2B?c+A8In z#uM`45|v^|N|fkr`|q9}hyPSZ(GZDb4T(1O0b2cx*$YWa4heGQ{affyS`>#C{m9rJ z281C@@;>-@JmPNkkYlX!^JL;kFLtA+^NEYR4H`BQduzCh7;o4TWa}%=f@JF^+^6GU z6Y*P_Jw7o@afdYNKzNF%xRB&JfHNnwY1v@5V|`}!Zs69*cB8i67N4+ro|)^t=M(jB~=s zUM1L@Ar+Ic&ie7~4_!1;5O}^{As<+230oY}ipOb5JHTdJ=0CHhvpjwtS2>1Mi{IMn z6r9l7BJ@+Sia6Cl9D3pNO|tbB)slcQP-RoQGO#HHKwOp*i#}ZKvXZF035j+6^P9zX zX0aFh*{B|}fJ^TO%SACddm+EChC+n3An<(qngq6-NsBrp_qK~ue_l-en^!&?jSg)Gw{EDfum;OcXH@y=EW)ji^Kun^NyU zT-L`rEz?=4~3j}bC$`8URRDVGH;TA1&Io2m7Cj)O2nJQ8rrMsGp1Cp3T^~}cy z&~O;%-&eeD^|vfz5BZa0C-A+c)h7d@uoKS~aW^X|;6+iiLh5tK^A;PntVj#u2JPht zL57d*DI+I!Gq1SjL(!v*Wxho|LeY(I>f__kb?Id^CeJ2YF!Ow#J3v%pDJfB%zYEre zMk7na6y)5R3=(ZDsL>g2x9SDnldrcv6v!}gHTIavo#evM80o{p z(>w_`q%edK)}K`nif&FnBNW{Tr(6&d?{`y74{W`3vK=|;v5A`yhIqe92j#dAjWtVw ze^o_-jW9tQV+Y+W8O!Thv}(Fd6q;o$c_8>Ol;B0)@S=<(32c=}D}LGRk&e`gsH~`* zviyg?FMk$ApT$=wIzcW=kR8Eg^)+y+p1;S6fm+3((*qzs#95Zs_o{7*$S@pnD zMAJ|`rE&h@bJv0qGYVB7=nV=~tS#z#BjMQ^Ll_afDAdK_Eo0cq>>(l(vqIdV#TuB~ z=7TDB>R1gRc+uQ8{cq}>a;^5_S82(Zr+gTVt0b$Np)r-s&S9PJz4WECypCA=fFA(qKC-=Un*`b>opPZH4l7zVH`dl13|g`S*w2pC=o`=WALK$GSHV>3012&d5EGyXe!HPg#@uj5_FiF-`xUW3lW zSooy~mD*+ct)E(dMm4EnbLl&s5S4vHTAa2$`HD&u+6u9bhw#H}=j<>A(ZOI<`?7xJE!#JQy-Ev}402)zA1 z43`{#_`U(h0kUmTe-)y`OB7WBu!2E!;|N7J#wk01!G>SAg)JmyVQ1>OS^JzM4ky`u zR>R?DMN4*DX2M(G%luIdw?1Y9+#1_caZ-}2hGltY52L-HZFP~lc>WdR(akwwD zHckx8xVr(Kn|%x%Ib7lKc#sys7$dnsMR&w0Ra%uMmJ}u5PyP_Q#qnpl8bTX~6W80s zJ6~_7*l9I|OY<@3ERmrq)dT|bcTL$>BLwPh#bYm6!fj~TBu0A$BBD}vS203V!do>- z3ktK_aT755^j>CPluB(3hbFcR!O8L&p_3#Uxhg3%A>Ha@t^GDU!wa8X;z{iKiN2@@?V8n`bd=zf{qc024%((}Y}{uRV<*3O_#q7V<=G>fpiM7ki7?)+7U`I?zKG z#G%(nFJq{N;7v}|u&EzlavjJHNBT*O5&xqJQ+>tz(}hAu%D9UfxeJF zry{^CEWDs|vX}SBr#FD0WRAM#Ki)4J2;t}0wN3Z{$9V^_Q#w8L<_lKhtR{mecXDck zP2K|BH6%Bog+)N}x*xtJ{;A<&x;Cq!%P6o>OrR`{On8g4jmQf-fpWErLEi<;f~YCF@3z>fYc)umhY~whZCUkwn|%Vi zfR$cFRS3&u;zR2A_tHcNoE<}%nHFOc=!UV?SaYJK3TFUW_&)Hc1!SpSy15-wAKBv$ zNtON27#50W%Yw87n3bw$w1%>iCB;@p!IbJt>w|KNcj=$EtZ~XHe48DI&b^v>dYSBK z=k3{fs7Z;3lPvNYq(ca7#-%YWfxD&1+$hrR3CULdl1r4EfQ5&)pMLU4%evo!s*u^$ z?uW)li;U+Zzcs2xv>diFgIYsc=9pD-Wlht>qJ*=W^aCj&RuRTR3qOJ zY+=>w{EjvH0_Go%PCueJbPWiy=QDFz1Q`K%Vw1g}$xt}dHNeQk=LKLmI+CmE>P+Bq z_v1AS3YoS9Ph51hMzIWnm{Auip%z#?Hw|g&FiYUdib|rVru^%Rh@99Z)&wN{-BtNM z@060Ru$R~7QYBNjlaQQbAR?O}?U<=PFje3r-Y^lwzYuv7V9C{+Xj37ctzhUPh$f+4@nz$V0xxWgu zR9QzDJTBRze&37#@bdo?AmaTVh(Q3jHHXn>R)akEdEP?KL(_|`M@fsnZx|&-3fXAf z#_P{ou(Wi>Qt47tA!&H0Dz2-r;`Pll#_%np1fIM#IfGV~(-oVlGE)Uq0$pcj?f8I~ zfQ9dqfy@7+ALzEA{iGt)7B@1d6lb|=hY_;(MfC%rIJ8pxh8C_Y6Sacv8tb|iRupN* zvZ)5MKM(IzP0J%aH0ych^L#K>DzC?eCx<*Rwrb{1vYa&(%w1`zieX|;oHzoWnsT8X zlW{wV3cpa=jh$Rvz#}alHxwOOkenAJW^>!bm_V>Viau&;mHH4(7&ui6k9u8J(%Z`p zc(UHGGZZwxD>iumlgFt*(d}-u&UK;(MO-@YFdud8dD|v;wwA z0)1fdE%=liWt^fJsA5HLVX3PDUkz?!HHFDuY~+&V7Rj9tQ2FNB+(@fD&V|L zU;^JLm2s+)fT!rYHgV{Bv(gVdRTk$Ama^uR6TkGI;f~~>!Uni7iXXSRpcr%GkBwZW zyp>r1ut|%vbx6f54rA?N{j#}leXM&%0U}_9q7!QXRzsXJoE#XxDzDG-oGDg9%207D zx05Y7d0`WD3``X{gg4isBo?F>r^sDOPZNv;#jLcaI2(VIGxO9dqk#$0lNQyR#bKd^ZmiARamqx%v#<4NF>Mp4E6CyLF65-gCPQX&8<}0~pkdrNTAhU+F{&n}&$wq| zv(7B1E(_SQB`qh+A~M!B|8aaoC%j^~BE4eQO-w_rgu9Per?xK=!-4#+jGXJ!2Xo~( z^n1dSF*zx*sbgk>${@kfk=kqa{Q0PRp77W9tD$u-%j-{{Vl|dJ_*JAXA#c%Os}5-y zU>141P*_PkzYCH+77MUGlya(-rN>Iin8!5^-D%s73s2R_$rYQdB;C!I<2`UjaTYlm z>!j4sP@n3M8j(K`1P})D`gFlt1UyoamcpAQW~@xYzVcgI)9WQL1FTOQYoCBqTxS(} zRzM$z4lUqGfFn)FsWWWy1tx6(7|8oGRB>sH((|;TkoVLE)uH34WW$z%wD9l=abuH= zMV$L&rwgui&TzRDuo}BjhIcCPeTFxPLq9A)l$rHR;K|bM=IdGaWQ)O}U3T`q0 zN5vxul2hMzD7;i|-Ex?ey@aCb=rWwmNvn)mLFmnjs%M=TYx7RYM$O~#C^yy$utxF5 zDM8?ruYji^6zi$O6`m@SliuNED__|Tm^$JlYyr?7&!_t$Ts{#^9M)@w6L{6+EqBsV zdb31~CGI@{z)rd>2CUwEMGfmizV%Y6HXh$~jYEgK!IO{A$s3!DnF;vMtOrzb8*xL) zvpY}&+57b5Fy>~T3vZ#B>EK~jNdP_C*z%4cTAI7gE#j!&hR|_CFcn0FoFVO}a$Xsp#N^Z!HaRgvNq@V4>{EcV$tO%6Hux(M-vAD@MPY}31R_X$Y z1z13{HW&i*>wMDGiqa@z!xybZFbbUN;*~%b@MPrnS zmI@6OTcsKTo_IHSs_u5GiA`-4&#UWr@|(jl6A%DF_!t_tu>*5d`B`B=vj^BhJl!{0 zjexW)FiRVobv=qbsk%x^68&nlOaQBrWoT|xO~I>r?38!l6y?4sc?Z40Q>WzAH#XG^ z%{F+DU@*S!LOFfHYb|cGl<@?&-qMPE zlX(wQK}Ltz~^wk8pw&b6YmdoWzKFz(OPIjbBPs3Y_XNa0*qn!;znA!c%i{vh_CkF;kOWEl`ew zp5hEX*kbliq%5gnkIeC+Jw5}m1JT<_*(6m&Hj}Xm_PnT-aoUWt11$0W;9U(@k2qyy zlG&VsC21o<$QRM0rAr zA}AWwPa^qY3VJtu;K@O_)l#)s zNRp6yfqok4c<=it^5Y;iP8tio6N>}&_Vp2$Umvkev&M{QfHSO1Hm0mNP1{0uRgfx= zOc(sH#wIu>6t`f(%dCO;`Wp)7avC?f3Z_4%SVr56Sr3@M#oI`R93U=Hv6c{e7}J`G|m>#?BUI7 z1SjmyygPkiS8g;LR$^r7rY#nhEIHq|h`SOC;LNc!zQo;yDE+o(ZWtbRJUg(nK<_kd zT~>dlIOYN*Q17q|(x#V(v3Byo*>xuFF2636vA;Hgk-B=y`Rg5@LkTKeGE(}&Cew0A4*V^y{t!@yntM=hCz<)KvoWR+X1XdNsnFaf6(Fn4to~VlXi^(UL;a(fM z?=wzj@UYfN%4c>Pt}nDtw9H+r)>c$}VD%C4tOvz_O>eI&8NzA0&6Q(onqtct`JSJ( zd}mKMqnUkI+WJm{cTgH44^-y{b!jNEDre7wSL?Jz68JtTv2Nu~& zJ5`&^LrZw#yM~|%`L3F1cqil@3WZh)`W15c-0TY~X?Do;q(+FVH4+4$BLJ=y75+EBVwb~wI&9Dzvhl`%e%fBA&vR9BdFj=D? zPc&KfT*~VDmUmd68)gj-s$;=%XuEXW9@MTsM`LMATYSYLhzjtZqAs5FZt9CKj0v10 zUF_nyx6W~CBcC9{%dS!_Un%8T_4zPA_dpGjlL!3)f49&VRzCD&80xj2>va^Ay00}EcPC6FsDmn) zY)#0F1T+5(P(@S}aWWrOUPZZ1-v1MEq~*hu7>|X?xVD=)W);kw_t?ws%NFj zW;s7iGJ2`R-hv;~Z5!QcM#{)v)GTo}{CV8|O;p&hBpsOj!d%vl&SPku8P$&*;gf|LQ)b zDGvVzl4meW?Yd^4yuqrB!Q|qerHa=6xyHnbhmF|greW_Jl!=DCJR2S+GuwyE*fIhb(JuUx9^B3U^h7C|SiR;War{B-tz68VF=a(T zUndUDP;c74;#SC59ZU2tu8hIGn4unp}_bWWUY1+Geb)6-`| z99Y2OJ+}A_vN#2k`naXul3VgG7`eXCC`pZFV#z_TfkWJv+wT!D-ifqJKQ>|582{c> z!eA>S<%D*vB)hq`H<_DWdTa#k$@NA?x48TUFV1DPN5W<7i*|kci$8WP!a4!u5HfY1 zXDS2(RoZBx?9HpUYNH&Qzxj41_M=5mlA(QNOPpn3qafa`o(FGgUXY5s8TY>BZ7zOg zwUT7%%dXkQhUGgO=LI%rKvZCm@_MD{RO83?MhGLa;?xKvjVDK?Bcdh|=|BT%IpHc) ze25a?MB3JW%snOW*qR4cWpndk65UzddJewev~*S>)PZFn5Mn{uE5R%}qu`Kg1m$+3 zc35Nyd(IW+Il6lZ30Tq*m-s?O@hy-XXPg?r<|?1`>LUN zx|HEzEkpCOeU$%n)Gy3gVcEocv#Eo(K%3RYd#d+gBR@1A!d6`4!P4>zn^Ij&sECpph^qlb9H^S6@jj))LSjaGY$7Y;wHgg- zxGjEDx@lbtVpYyJ5wYGu>mgq;k7tcu|5~E4UYy~M7*Gq! zAAk99X-oK9Dn&dvjg~9#)_O|irc0@-*SJwQ>|8%a&nlpCo8qtacn9BdMzB^YqF_$a<8*$h=x1lhQQZtCPBOUKsjLqqTX z#S)3y!fLi$0#W<+f`{&=T(b9_sZWlp%d>tu_^G=ho57~l$-`S$roc0t5WoO(|DO6$ zy@y3<7g;~Ff@m2vU|3rmubv*zWj4MVqdOCmpPUPh%>w{XWk4F>p@L3UYBzZdF;qF{ zQ0)WupmInp6~6p|(hS${2#yIX@9LmWz2jB`v= zlnJ|k-}{l_3UyD`)Fdr2CVv_W-dJFiyq{P$Ieu58J<<^Et|CHhz6DUJ{d~R9!1`)g zia`>=&Yr+QRM(dj_stz!DM;G**gUmb%6=ilD2_c2+nkKnFviRofM3&UwozjW|(x&P(BLS6;h>~BTY zF5rBlai=bja=$-T#t+Z{SM-eSt(9rL-{T)D8101ZG-^`k95o4w+wg_!akgqdV=NJ> zR;*z~Y~w8%8EC<|NVCFN9bY9<@YKY)%({-R&W&)bun{!!v_meX`L&BgH9ojiBAeSu zC$o^#JPST4rvKMc%ZI`le`_1NWL74o{Dwm2{w%>BL>m6SR*kvO)#KFvGM8bQx1bs9;-WeMze0BXHIGG$*LYsj0iIh&eiWa_2n2*NAp<_! z34$upPbDYu#_FToT(byHsfpz_=JKd6I-pRw)y<&4WlIH*)?~Mr3)!ZGm539c$?nEy zjZt@=Au+&L2e*}*&zT0IOA~HDZ<{fOP)fB1R|BVEvTahhp9+}l9F59;HCl>z)3tu@ z#9g!=Z;WokJWehK0AQ8ZX$j}I=aU~_`1DyY$C{nWdu1-&`SKPjW3k&MmA9=)lJDMX z&g$KE{aMj(FqG~rM$z=g>eS-lucLn1(kn}Vzawye-v+ezR(BY`5uX!L#fxksm>q!1 z4zNu7!9Ia%i=rxxx8)83i$6%DlO7DM(@WCZXqnayuozM43R=n6{MzLBdjVcbNBs+v z48f?4XGWZ(x74!Jt*LS;GKJwETdMfJazA@2@4#0_(ZmUpk)c&eq>jPf*q}B zl60KiV|L@CP+B)v7Q+?kX#s(rh9K5hA!wU}$f;uKpvUI5Ry`LguYL!KQIwUarBY@F zN^hq|t+^_u5LRCz+Ay`1Yy!BU!Eu!ucUX$or?C-;DH{gsZA9%Z;I=TAQDhq8CiVNu z3mDh=C&QkU2h@&v&Cl_VEQ0E)`Kt2$j=_GW)_>}xF!nKmH2mdA7X>bHduP|0o9 zn=Gghl*~c`yI66>Y^<&Miy~_fKC2e0(-O%2e*41;PP3EKPPvtu2g$#s(|=R`1Z%%u zUTT`|PK8l~tn zzYBpdm1L!U@lK!Esac;Z4kT4m_?y~6%7LL!q6BH2HY-tces;U{)&0iOHZxs00~h{{7GO`QxfF+xV!!yCDgV{z zQY`|0pbCc7xMZI^nmw2xZ4BLYtK0$O!as(s_gY+H?k`vVYb@i(1iaV!ctWxDHrD~t zNc9vn$R+#08bD73*=qtR2_UO6FvC)*Orv9O#u`EiX+nSTlJKCP%oP`Qe*EP7KYBdmf|W8MwT44+ za$VLE?!-0Yfj+qg&e61(6sy&drC<}SVTfsP;BO<=)PEg=>~G^)C-?dD)k+oY)*^zYzr p#(VI|9{Nv~vlVVhbB*__je1`~gCoqpe6a66(8j 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 + +MTS_NAMESPACE_BEGIN + +class MyIntegrator : public SampleIntegrator { +public: + MTS_DECLARE_CLASS() +}; + +MTS_IMPLEMENT_CLASS_S(MyIntegrator, false, SampleIntegrator) +MTS_EXPORT_PLUGIN(MyIntegrator, "A contrived integrator"); +MTS_NAMESPACE_END +\end{cpp} +The \code{scene.h} header file contains all of the dependencies we'll need +for now. +To avoid conflicts with other libraries, the whole framework is located in +a separate namespace named \code{mitsuba}, and the lines starting with +\code{MTS\_NAMESPACE} ensure that our integrator is placed there +as well. + +The two lines starting with \code{MTS\_DECLARE\_CLASS} and \code{MTS\_IMPLEMENT\_CLASS} +ensure that this class is recognized as a native Mitsuba class. +This is necessary to get things like run-time type information, reference counting, +and serialization/unserialization support. Let's take a look at the second of these +lines, because it contains several important pieces of information: + +The suffix \code{S} in \code{MTS\_IMPLEMENT\_CLASS\_S} specifies that this is +a serializable class, which means that it can be sent over the network or +written to disk and later restored. That also implies that certain methods +need to be provided by the implementation --- we'll add those in a moment. + +The three following parameters specify the name of this class (\code{MyIntegrator}), +the fact that it is \emph{not} an abstract class (\code{false}), and the name of its +parent class (\code{SampleIntegrator}). + +Just below, you can see a line that starts with +\code{MTS\_EXPORT\_PLUGIN}. As the name suggests, this line is only necessary +for plugins, and it ensures that the specified class (\code{MyIntegrator}) is +what you want to be instantiated when somebody loads this plugin. It is also +possible to supply a short descriptive string. +\vspace{3mm} + +Let's add an instance variable and a constructor: +\begin{cpp} +public: + /// Initialize the integrator with the specified properties + MyIntegrator(const Properties &props) : SampleIntegrator(props) { + Spectrum defaultColor; + defaultColor.fromLinearRGB(0.2f, 0.5f, 0.2f); + m_color = props.getSpectrum("color", defaultColor); + } + +private: + Spectrum m_color; +\end{cpp} + +This code fragment sets up a default color (a light shade of green), which +can be overridden from the scene file. For example, one could instantiate +the integrator from an XML document like this + +\begin{xml} + + + +\end{xml} +in which case white would take preference. +\vspace{3mm} + +Next, we need to add serialization and unserialization support: +\begin{cpp} + /// Unserialize from a binary data stream + MyIntegrator(Stream *stream, InstanceManager *manager) + : SampleIntegrator(stream, manager) { + m_color = Spectrum(stream); + } + + /// Serialize to a binary data stream + void serialize(Stream *stream, InstanceManager *manager) const { + SampleIntegrator::serialize(stream, manager); + m_color.serialize(stream); + } +\end{cpp} +This makes use of a \emph{stream} abstraction similar in style to Java. +A stream can represent various things, such as a file, a console session, or a +network communication link. Especially when dealing with multiple machines, +it is important to realize that the machines may use different binary representations +related to their respective \emph{endianness}. To prevent issues from arising, +the \code{Stream} interface provides many methods for writing and reading +small chunks of data (e.g. \code{writeShort}, \code{readFloat}, ..), +which automatically perform endianness translation. In our case, the +\code{Spectrum} class already provides serialization/unserialization support, +so we don't really have to do anything. + +Note that it is crucial that your code calls the serialization and unserialization +implementations of the superclass! +We haven't used the \texttt{manager} parameter yet, so here is a quick overview +of what it does: if many cases, we don't just want to serialize a single class, +but a whole graph of objects. Some may be referenced many +times from different places, and potentially there are even cycles. If we just +naively called the serialization and unserialization implementation of members +recursively within each class, we'd waste much bandwitdth and potentially +end up stuck in an infinite recursion. + +This is where the instance manager comes in. Every time you want to serialize +a heap-allocated object (suppose it is of type \code{SomeClass}), +instead of calling its serialize method, write + +\begin{cpp} +ref myObject = ...; +manager->serialize(stream, myObject.get()); +\end{cpp} + +Later, to unserialize the object from a stream again, write +\begin{cpp} +ref myObject = static_cast(manager->getInstance(stream)); +\end{cpp} + +Behind the scenes, the object manager adds annotations to the data stream, +which ensure that you will end up with the exact same reference graph on the +remote side, while only one copy of every object is transmitted and no +infinite recursion can occur. But we digress -- let's go back to our integrator. +\vspace{3mm} + +The last thing to add is a function, which returns an estimate for the +radiance along a ray differential: here, we simply return the stored color +\begin{cpp} + /// Query for an unbiased estimate of the radiance along r + Spectrum Li(const RayDifferential &r, RadianceQueryRecord &rRec) const { + return m_color; + } +\end{cpp} + +Let's try building the plugin: edit the \code{SConstruct} file in the main +directory, and add the following line after the comment ''\code{\# Integrators}'': +\begin{cpp} +plugins += env.SharedLibrary('plugins/myIntegrator', ['src/integrators/myIntegrator.cpp']) +\end{cpp} +After calling, \texttt{scons}, you should be able to use your new integrator +in parallel rendering jobs and you'll get something like this: +\begin{center} +\scalebox{.4}{\includegraphics{images/integrator_green.png}} +\end{center} +That is admittedly not very exciting --- so let's do some actual computation. +\subsection{Visualizing depth} +Add an instance variable \code{Float m\_maxDist;} to the implementation. This +will store the maximum distance from the camera to any object, which is needed +to map distances into the $[0,1]$ range. Note the upper-case \code{Float} --- +this means that either a single- or a double-precision variable is +substituted based the compilation flags. This variable constitutes local +state, thus it must not be forgotten in the serialization- and unserialization routines: +append +\begin{cpp} + m_maxDist = stream->readFloat(); +\end{cpp} +and +\begin{cpp} + stream->writeFloat(m_maxDist); +\end{cpp} +to the unserialization constructor and the \code{serialize} method, respectively. + +We'll conservatively bound the maximum distance by measuring the +distance to all corners of the bounding box, which encloses the scene. +To avoid having to do this every time \code{Li()} is called, +we can override the \code{preprocess} function: +\begin{cpp} + /// Preprocess function -- called on the initiating machine + void preprocess(const Scene *scene, RenderQueue *queue, + const RenderJob *job, int sceneResID, int cameraResID, + int samplerResID) { + SampleIntegrator::preprocess(scene, queue, job, sceneResID, + cameraResID, samplerResID); + + const AABB &sceneAABB = scene->getAABB(); + Point cameraPosition = scene->getCamera()->getPosition(); + m_maxDist = - std::numeric_limits::infinity(); + + for (int i=0; i<8; ++i) + m_maxDist = std::max(m_maxDist, + (cameraPosition - sceneAABB.getCorner(i)).length()); + } +\end{cpp} +The bottom of this function should be relatively self-explanatory. The +numerous arguments at the top are related to the parallelization layer, which will be +considered in more detail in the next section. Briefly, the render queue +provides synchronization facilities for render jobs (e.g. one can wait +for a certain job to terminate). And the integer parameters are +global resource identifiers. When a network render job runs, many associated +pieces of information (the scene, the camera, etc.) are wrapped into global resource chunks +shared amongst all nodes, and these can be referenced using such identifiers. + +One important aspect of the \code{preprocess} function is that it is executed +on the initiating node and before any of the parallel rendering begins. +This can be used to compute certain things only once. Any +information updated here (such as \code{m\_maxDist}) will be forwarded to the +other nodes before the rendering begins. + +Now, replace the body of the \code{Li} method with +\begin{cpp} + if (rRec.rayIntersect(r)) { + Float distance = rRec.its.t; + return Spectrum(1.0f - distance/m_maxDist) * m_color; + } + return Spectrum(0.0f); +\end{cpp} +and the distance renderer is done! +\begin{center} +\scalebox{.3}{\includegraphics{images/integrator_depth.png}} +\end{center} +There are a few more noteworthy details: first of all, the ``usual'' way +to intersect a ray against the scene actually works like this: +\begin{cpp} + Intersection its; + Ray ray = ...; + if (scene->rayIntersect(ray, its)) { + /* Do something with the intersection stored in 'its' */ + } +\end{cpp} +As you can see, we did something slightly different in the distance +renderer fragment above (we called \code{RadianceQueryRecord::rayIntersect()} +on the supplied parameter \code{rRec}), and the reason for this is \emph{nesting}. +\subsection{Nesting} +The idea of of nesting is that sampling-based rendering techniques can be +embedded within each other for added flexibility: for instance, one +might concoct a 1-bounce indirect rendering technique complete with +irradiance caching and adaptive integration simply by writing the following +into a scene XML file: +\begin{xml} + + + + + + + + +\end{xml} +To support this kind of complex interaction, some information needs to be passed between the +integrators, and the \code{RadianceQueryRecord} parameter of the function +\code{SampleIntegrator::Li} is used for this. + +This brings us back to the odd way of computing an intersection a moment ago: +the reason why we didn't just do this by calling +\code{scene->rayIntersect()} is that our technique might actually be nested +within a parent technique, which has already computed this intersection. +To avoid wasting resources, the function \code{rRec.rayIntersect} first +determines whether an intersection record has already been provided. +If yes, it does nothing. Otherwise, it takes care of computing one. + +The radiance query record also lists the particular \emph{types} of radiance requested +by the parent integrator -- your implementation should respect these as much +as possible. Your overall code might for example be structured like this: + +\begin{cpp} + Spectrum Li(const RayDifferential &r, RadianceQueryRecord &rRec) const { + Spectrum result; + if (rRec.type & RadianceQueryRecord::EEmittedRadiance) { + // Emitted surface radiance contribution was requested + result += ...; + } + if (rRec.type & RadianceQueryRecord::EDirectRadiance) { + // Direct illumination contribution was requested + result += ...; + } + ... + return result; + } +\end{cpp} diff --git a/doc/license.txt b/doc/license.txt new file mode 100644 index 00000000..44325404 --- /dev/null +++ b/doc/license.txt @@ -0,0 +1,676 @@ + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. + diff --git a/doc/main.tex b/doc/main.tex new file mode 100644 index 00000000..59342ef4 --- /dev/null +++ b/doc/main.tex @@ -0,0 +1,108 @@ +\documentclass[footexclude,12pt,DIV11]{scrartcl} + +% Wenzel's standard prelude +% ----- 8< ----- 8< ------ + +\usepackage[english]{babel} +\usepackage[T1]{fontenc} +\usepackage{textcomp} +\usepackage{lmodern} +\usepackage{charter} +\usepackage{graphicx} +\usepackage{array} +\usepackage{booktabs} +\usepackage{color} +\usepackage{listings} +\usepackage{amsmath} +\usepackage{enumerate} +\usepackage[utf8]{inputenc} + +\setcounter{tocdepth}{2} + +\usepackage[ + bookmarks + ,bookmarksnumbered + ,colorlinks + ,linkcolor=myblue + ,urlcolor=myblue + ,citecolor=myblue + ,pdfpagelabels + ,pdftitle={Mitsuba documentation} + ,pdfauthor={Wenzel Jakob} + ,pdfstartview=FitH +]{hyperref} + +\typearea[current]{last} +\raggedbottom + +\usepackage[expansion=false]{microtype} +%\UseMicrotypeSet[protrusion]{basictext} + +\renewcommand*\ttdefault{txtt} + +\usepackage{scrpage2} +\ofoot[]{} +\cfoot[]{} +\ihead{\sc\leftmark} +\ohead{\sc\rightmark} +\chead{} +\setheadsepline{.2pt} +\automark[section]{chapter} +\setkomafont{pagenumber}{\normalfont} +\addtokomafont{sectioning}{\color{myblue}\rmfamily} +\addtokomafont{descriptionlabel}{\rmfamily} +\pagestyle{scrheadings} + +\definecolor{myblue}{rgb}{0,.1,.6} +\definecolor{myred}{rgb}{0.63,.16,.16} +\definecolor{lstshade}{gray}{0.94} +\definecolor{lstframe}{gray}{0.75} +\definecolor{lstcomment}{gray}{0.5} + +% Citations +\newcommand{\cfig}[1]{\mbox{Figure \ref{fig:#1}}} +\newcommand{\clst}[1]{\mbox{Listing \ref{lst:#1}}} + +\newcommand{\code}[1]{\texttt{#1}} + +% Listings settings +\lstset{ + mathescape = true, + captionpos = b, + frame = single, + backgroundcolor = \color{lstshade}, + rulecolor = \color{lstframe}, + tabsize = 4, + columns = flexible, + keepspaces, + belowskip = \smallskipamount, + keywordstyle = \bfseries, + commentstyle=\color{lstcomment}\itshape, + basicstyle = \small\ttfamily, + breaklines = true +} + +\lstnewenvironment{cpp}{\lstset{language=c++}} + {} +\lstnewenvironment{xml}{\lstset{language=xml}} + {} + +% ----- 8< ----- 8< ------ + +\title{ + Mitsuba Documentation +} +\author{Wenzel Jakob} +\date{\today} + +\begin{document} +\maketitle +\clearpage +\ofoot[\pagemark]{\pagemark} + +\include{integrator} +\include{parallelization} + +\tableofcontents + +\end{document} diff --git a/doc/parallelization.tex b/doc/parallelization.tex new file mode 100644 index 00000000..c181efe3 --- /dev/null +++ b/doc/parallelization.tex @@ -0,0 +1,2 @@ +\section{Parallelization layer} +TBD