# # These are some functions for rendering functions of two variables as a # surface. # # The main one is the rendering function, which takes an argument of the # form ((observer,eccentricty),visualization) to a rendering of the # surface expressed in a LaTeX picture enviornment with pstricks # commands. # # The observer can be a list of floating point numbers giving # the coordinates of the focal point for the image, using a coordinate # system wherein the surface is inscribed in the cube in the first # octant bounded by the origin and <1,1,1>. Alternatively, the observer # can be a string of the form (i|o)(l|m|h)(e|n|w|s)(+|-) specifying the # distance (in or out), the elevation (low, medium or high), and the # azimuth (north, south, east or west, with + or - for a slight positive # or negative angular displacement, respectively) assuming the north # direction coincides with the positive y axis and east with the # positive x axis. # # The eccentricity can be empty or can be a pair of floating point # numbers (x,y) specifying an elongation in the x and y directions of # the cube in 3-space in which the surface is inscribed. Equal values # greater than one specify a pizza box shape, and less than one specify # a tower. Unequal values specify a rectangular prism. Observer # coordinates are automatically displaced consistently with the # eccentricity. # # The visualization contains a family of curves specifying the surface, # with equally many points on each one. The peg fields and pegaxis # should be initialized with the y values and the abscissa with the x # values. True perspective is obtained only when a square picture frame # or at least a square viewport are specified, but the image will be # scaled to fit any given viewport. Displacements and rotations may # be specified for the axis labels and are supported. # # Another useful function in this module is drafts, which takes an # eccentricity and a visualization, as above, and generates 48 different # views in a free standing LaTeX document. # # Copyright (C) 2007-2010 Dennis Furey # # recommended_observers (10479) # back_lit_rendering (209657) # drafts (224623) # left_lit_rendering (209660) # rendering (210557) # right_lit_rendering (209660) # # compressed with granularity 182 # # # 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; version 3. # # 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, write to the Free Software Foundation, # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA # {iwkwowzsKxz{gJc{w{KKwNoAJ_jewwlz{d_gS{[ZmKzwr{owzyN<>ZRkzZ{zZ[ZfVtwv{Kkw{FRt=m x^SdE>JDpzSfxd{ozskgxz{d{odalHz<_vWZ@S\cwQ@bQ{ZSf{{jo{gxz{h[]aEooLobv?vmiu@jqX] FzVcxzd@[@{Zyzkwzz{owzpCztmCP>VdXa>JWGXN^_D_W]Bv=Fx?z>[gv[a[ovDp{KsjSwwjwv{KkvBCzgF=TKDtz=bdYDvtPCpRvCXOg u@j^DrtNkd`Z]AxT_uZ]gtAKZg[[wzz{owz\MZQNJeB^pTc]BvW[<{\c v=mxKzZmmz{pw@{zwk{gxz{ggysDJkCVE{{AdDF_Chd\xV<>{?tOJWdH\ltjXSeJk]AtEzkk]g{cgmy{Ok[_z^{ w{Kkve{Cx[fneMN<^?f\SlSKfVgZN]eCD?BDenGv>OKdFaZkyWdZcbQ{KiovKz\[wz{kgxz{d= w^cz>Sfp^GldDD\Jv^B?otEB?Ngxa>JWHgI?JWdH\oUkcAv^Ij@gvECeKZ?jnZuSmZSjKz{i{w{KivH {bV{[cvfDw>d^df]WD>`LFxAovA=xd>?^ABVgJ^r?otOlIF]Yj_andq^ml>rvFHD_W]BvJG^O[RvKKi[zZ\HJiyJnvK vRkowz]fH[bGBveAFf^>dV`V>\>HV\\_l\EhwdPCpRv=[FaZXSe=Gtq`F\_=HTuXzN\n?=Xz_NXRt>KgUk^O[RvXSfoywChSojf{v{Kkv ?cuL>Cvkfff>D\drDA^nJAl?^\`T>]eCD?BEXuj`LFxfQumZ]Xz\{mgw]nV[{{fWp{h{w{Kkv?=Xw]z gpfff^?T^ZHVB?@X>VdOl>]eCDIb_ClIkewSDLstD[aCv<{qksdbWp{wFKjvkkkxz{d=G\JSfklfffdD >D>_^=DDKDmuecjbJXSmgv^CyohcdJxS{dpywg{zkowzeV=UPk`KjqFHxmuKZP[e[uewEvq{cyw<_fwi{w{Kkv=t=vgPffffd^dFJDtmk zMr\@TaJZEM{cdw_Kzt{?zlww{Kkw`^ViNfffff><_DrEz[TI G`mm>dA\rU[hj?KANoCFIT>WDhD@Ol>rvEX@@k\Dz\BS`yuMz\o[R{ZqkTzOhof{eJzkowz{tFjfffff_gSiN[VgRdq\Eh\>U]eCdDz\=\\x]TU`[>muecdLsu[uMz\KzH{Zl{cywky{k{w{Kkv F\fffffffCrCfdDf?v<LfffffflA]=ff>met=UPd>xEO\EhwP^ml>rv_CnbZNHZ^ffDD`_T\LDz^=ThjMUPexVdEB@M]eCDI^FB>?nRKlIFnXLD<@VD@>HVLHRQGA\>U`wzxbjhzfffffffff ff\^DDrDDLGB\<\@U>kYFfAh]@TAxAovMD?T_^nB>[ B?n@>>M\pf@x@M]eCDMBMdeB\R?B\>{d\t\LDmdLDOlIF_E_=Zcuxu>itzKagoHkIvffffffffffffdDD\JD<>HVoDuzd[D[z@lYwxWkfZ wOPozfffffffffffff^D\t\^<=JlAp@{{GRgMoTkCVuwwWHwOzfffffffffffffd^DKvU^wcuZgkfya Kfz?NzMDr{hWoNSzffffffffffffffF]Z^duj]xcptQcYevs{fznG{vcOeZ{DONgozfffffffffffff ffcv<]bx=T=vdhdfC[z=z[=futf[c{oGgf[kZjrxykIvffffffffffffffI=J\UjU^TqOPtCuxvClC] fzNF]y]xWwInyTAwws?WvniYJ_IvffffffffffffffG{dUjFbF^Y[d[DZktfjkOloPp foOWzfffffffffffffg^`vBPfMnncuxU^vjF\Bez[FF]{zgt>JziyLuzglwjkOPG?QkrhiiVOzfffff fffffffffgKv@VJMPd[iFwaH{kiYYQGOkvfffffffffffffh^Zf ClCxvd\`w[dFzcuz>]xmzjwIdZwF{ondrZF@AtT[k{nfPyxQjo]Xnikvf fffffffffffff`d[^fMztcv]xmzLA]]ZggipuzQ>gjlcvg{P_atT[ez[[WU??DewW iI_>iIkvfffffffffffffdp\a\^fnC\^AvFeCt>t[d@Cw[fjgiGh^[t>ggjup_{zdnffGqDt[tVjB ghT={vzgvkO{weEZbT[fwDYTYfJgRqKvjfXksJiIvfffffffffffffgF>fhtdcd@[hcnuz \G]zAzfdVjBgncuzZV@=TLTpfLEz^f[zgzekVBiN_Pj=qzk>]en{WxwwZfffffffffff fffpnf_EvBhcl@CdHAndVhBkYGSfClC] fwjlgzzAhJpJpq[I`_kGWPtQwSXuxnoivffffffffffffffGFf>Fd@FvF U\c{zEK{\Fcw\LnBDld[qGDV=TKD\G]z]xcnUz]y]vDUZ^d=gfzgp\mw\xpPvPqD[DZN[cm vtvGFxzuVqYygQDqqqORrgkksznagOXpGYVffffffffffffffffddf\HEAyPfBDqFdubC{]ftbvnCwDiY\p_ARYQgQAA=ziYkQkqA[qeTVkfvkfvjjggjjz{[npFxwC?SOIGkvfffff ffffffffffffeI=cyNv==tGEz]f]hGdiuAvNDJP^_d\EZ]dA\x_Ctsf{xgglA]=]jfjvczzLc zNGUECorPPCv]{k@qwmlzk=Z>cJQQPi]f]flVjBk=ftVjBg]fzg]fzgfzgfvvjjvwwyF[wxfQQAhk?J ^ggQPz{vfffffffffffffhfgNf\BCn^\HcvBDqG<[\{FcuyNjgbVDUNNbvuHq{tczzLcDqWfYbLSn>C vv{PnvtxnQHp<[IJz?PBdVdVhBl]flVjBg=ftVjBg]fzg]fzgfzgfvvjjvwvbHY{avxskJa@d@eFsvJ `gGZffffffffffffffffiFdHRffhWdANfEzxlf]x=tVkftf>Bg=hDVxBg]flVjBg]ftVkftVkfvkfvjjkzVO^x[Dyjus XhCdgOqzQ?YFpr{RfffffffffffffgFfqFhfd>SjectqoVeb=]ftVj>VOncuyaungNpyFaSNX[GIInKIgvfffffffffffffhffgNfd>ggAvFezFrNf=d\A\V]dV]hD[]f] glVdVxBg]glVjBgoBdW>Bk=hDVxBgfU]sFClC]fzNDRdqMr?OHtgDaYxPMIIVzgc?JhjiONfwzfffffffffffff fffffffffffffgFffpfffbMzde{HuDfB\RDvOfF^]xe[{{w^U^cu{cuB[xUc{dR^`xHyJAuZ<<\B=TB=TCtA\[]hF\[]D>d>RwfBY=Uz[D[TZ[cs{vAyO<][gPSSf[pqH_CvdmzhXkA>XC u{D[D[\pD>GFdX=Y=C^hcHtXzH_n?gfnHVgSMQyuoxglcuzzglA]=zjggPFX\QdCodUmtngXwhae{{W oiKvoGHoIHoHoHoIHo@oHpoPoHoHoHfphhqGQNFwo>][Q<@wn^Ua\gbTBuk f<<>d\q=\pqFMGf_G\XyKy _^[aL`qEODPlWhAMvoY=wQIBDEgCm{{[Sq[sQsvhnhoHpoHoIIOOHpoHpo @oHoHoIQIQQNffffSkNBcvf]{PS_KH\l[@MX^d]wl l?{_M[>M[Q qZVhEHZf[ectgya?TawL=j\y[lS=flWiQWAR{iYwAQQ]SyQ OoPdTdA<`h[C{ynyYJYGCQoPmEVz{{fiffffffffffffffffff^fgFgHppiIQYQQ]=Jh=cyPBwp]yDE B={LM=Z]@Avsgv>=\eZYYLA]=qnXDSpB[lU{QisyDEKzvNeb^hcFDwfhneGDZKaq@\][LRmoou>B=]=E=g<=gtnPaLZv yKsQMviQa`IysobRE=k@tFNmX[{rj{pxkK]GyWxvvpxkakkLNu[yrFfOFffffffffjffffffffgF^fo IGNpoPoQOHFSg=cyP=wn^HLIPqPkLbw\=k ]Bi=QyN>ZyIM>KV=qQNgQLX_aQpYyNLNmx[{roVAvdwH{phqZNAMoIcawH?pqCziR[a{{lfhff fffffffGFffffffffffhhoQIOH_HfhnN[p_=Zf_`wMDGebVXfSxjCtt[\LDFfqFCmcfwN\F>\jJvf=D \NblkXDm{kyfRYr\D<^\kyqG?Hq=n\WLNjiNfuyCG]ZRAbL=lh>@h[C{yoDJ[fqOJ]zgHulGZSHkSQY HewKyUrSD@[u{U[{WIHoHoOHoOOQGHpoIPqHpmIHnoNiGGPoQOIgAwLu{Q>[g>LS qLJOqQJ{iQToyLHAtVmx[{sP^=JUQF?CtaO=qXAMYQN{py]=qHshsKIQfy=a>cvcyFM[cu{swIPoHoOHoOOQOHp oHPqHppqQDroNqQQQIM`[qAayPaooIAOylrQF]Lnex>LEAHDf\VkJqMCzwGLAziZyK kWgnp>aviPzvpJC_cUPxjWr{aQJh]z<@StBK\]z<[huatWHPoHoOHoOOQOIOHqQOIIIAQQQFgQIQNhF So@WqLABxfqJwGsUQCpVmx[{rGECwJqGFCvi{MTSRSiOAfnUZEP{zxgU=ulIU@tQhgk{pgfn@MZuytmZFS^[p hB[xf`ffffffffgFfffFffnfffgQEQPmIQHeEZqMKQGHxgRyPfDgAZkAP\SbR]zK\YGwYjpWyrRL[Q{wkKmQDF[\HRK`ctTzdK^JE[Cs_GyIIk=hzDSku w?HwjvvzswYmb[\cCvhS_Atm[qEZxfffffffffgGGFfqGFHnfiOQQQDfiHI{hfMJf^UJoO_FdOnRvGv ?D[H[]GNuQCcIzdp=THL=pd[H[cuyeLAdmeR=QD[UxS{ a{tBAwpS=`]@>Vmx[{sH@YHpl<]yIL[hRQyx[\hqCAemH{{jnE{L[YOOkw@rPWD{WwKkwxTNjjjjgfw H{{[mTZyPqMA_DgaSoHSLVW qOHvKw]z?riPIKj_P=SQq[lv?FpjQMuo[qMbC_H=TTSd[>[VBT=vPjLAdmwmzSKCux>[`zpl XjTDVmx[{rnu`Jn@XnBCwcsuv{L[scE{lZnhkxwxtixOooHmsDQskvw{f[oFbTEzFeCv{J_FpjQMuoXfdfc\BTE{=TIXKGzz{fvw ]vkfzgvjBg]fulgjwgkwCx[\MZBCuUzDTzDT{CtULCg=VfgFngFFngGFfpfiINgQQMOFiQLf<=[HQHy P?wpoFEhPdLPE\?AnIlmWPKPKEQsKXI>fMzvvvvjjwpMZhSn[\MZ\MZ?AtHSpCztKukHgFnffnfhi HhfoFffPfhfHqNffj[f]CjffMJffMFg\d^jvgLEVOdUm`tgPfoQk[td>t[\BCvqDVCDvXkNuQCaFez[ ShEzvzF [acuUzBCyJm{wMVfffhgGHfhdfn_IPffpoSIGVyN\]znM`vfGwnh]?Hw]Ijk_Db{XILnYNf`eMSsqo< BCt@[iNubanR\nyGaQcH]y]t=]z=JAJzy{nAQ>dCjC>dbhSC{{ULZq=@dD{Fmm`[cuz uxBCxaxCb[Dn[coazgtYkPf@ZLtEjk^jN>=XnCtE{PyWQc_wAuuEezuGoX{kKnpnkIGODVjBgvkf=jX Bk=hlWHBvBvsvkfzgvjBgvjgfxUgyz[^T[\^[bUz\MZ\MZBCzgHM[{kigOHfiFnhpgQFpffgPgHfiAF ffpfAxeCjf``WiP_DffZXaD=D_wSou@d[s@iHnzqGooHngGOHnfBk=ftVkY=^NBb]y]y]g=uSz]ftVjBg]ftVjBgvkf v<>[h\\At=AtLS\=AtezF[\MZQN>ct{{czqHffo>hhffhnlgMPpfpgPqNnhqPB[P`mJfaOKQN@NnCmCtLLm_c^=YrSpteouUCcu{t hmzJHnfnqJhpgFngFoFfgFBl]glVjqtC=iphIHp>lffdNiNhfHqHiLryHpxmPdx]lOQTQYulyEtqb IQD@CdAN[cvs{ksbB]nJ]ogH^dRAOD[H[bTVuz[[d[BkNKtT=\d\d^^sOHxBk=glVhBg=h]flVzBklmzThW\UxW@t?A\=AtE{ {A\?Pq^gNFoq?^zOQaRUWD@FF Ax?zicu{{w[sbVSEWoHl>=OJLA]=aplA]=\omz[PsCBMzV[cwuPLa{tTyLZq>E<<[\=]?CXCFcYvCu{{tcvd[D[]]zk mNfzfonkpvkwxgHPfhgH=\Y]hDgcFf<<Sx\[v@R[pCx[_{{{oDRf^f]>><^F]FnfiOFPOLSkQ@ZwPoO>jyHl?SIyNwePvGtz?QkO]RQ[YDhR[h[egVA x?tCuzi{w[sbB]nVHnDoEb^ppUdrcd[TZL?a\tSeD[<[oq^[kNZU\ct=fx=Ubk^ub=]f{tSmz[aa\ccEZCt[_]{ L[mzK{tOyp?P^^^fdQQQQQQ@PhMZh`mKFiIL_WqPgAaH\]fVhPUm?PtXfIRPwoSYF\l[@MXeGYcwCvA x?zicuzi{wSqbVUoHdnF]DR< @zU^cuxD[T[{hHS\GCDf`[]fub=f{ftfclgRA]TNDNDF@tCP[<UhOmAvm[> [g=zEkQHFrNKntqUYVzCHI=aUphwfYFMHZfZggTH Cm@SR[h[mWVAx?ziCu{i{iyu{WHe@dd[B[Wn<>Ss=WO[gVCoCvub>[l Ap@g\DS^dtfEzk?aDsZkjOxc{i{DSv[y?wvK{vkvZy`{woQNIIL\Vk{{eCLC{GF<<dCtXNW^ect?IuPh>_FO]Bu^fuD zAzSn@ey{zS{{d[H[]ktKEDxfj]xU{wfEZ[{\MzBl] fvClC]ftBTgMsk>fM{^y[a{Eaq?{YKVWGqcbTE{ft>t[^d]fw>[czt>[kO]P_tSu[V[g {=FzFKxzRDvkyyDpxOs^W{{atE>K\MzSlAMRt>[>LaClgFffmPffiL_yHmAwGOEFWfiPW@Acu{ODOuqVCs?PIrsGUkzyg>LBvrB>\B@C=\w @mvetEtHCm@S>R[h[^DSlKvr[cvr][<{gYNh_X@qthctETIQn>H>fJS@<>`tNkd`ZC>?dpxOsnNcmZ{ [{Ub>[bh]fL_\cuit Ej>[`t@j<=fubB[cuMZ@avClCxt@ C\R=jbTBBfKr QxEuZFO]Fz^MtMCbQ{K^_FO]BuJk^W\cuitE>J>[]sBs`NtKg@g`NtCUbGfxQwRyuYLawbNTE]fH[bG Buv\Dat\[fCtct<[hCtBS]cx={Ct{{[aKzf_FfqNffaFKpmLKhiF\LwfiF?r[h[p`GBQodttvQGdyXg yB[pHg?Ji\EyGddcm\f^_MW\Bs\`DtEz JhpeFkvZvSV{u[{T>t[jkKFN]ftf^ClClTzfOlAt[hv=>=u>d=fTZJVoV=Cuz[=fzOIlX]xmz<[Mxyy kuILxvQPrdaobt@gv_{K]w_TKWduXDemiu@j=]f?@=CmK[EdCv{v[A{{\BC{GNXb<]gl=c`MvEC\f^_MW]w?vnGu`C>=FJW=pZtuh\>BglHiAfLQKZhsqyHCSzZDJ[a \D[\DCtNzD[^=zd[^[^atUZ=atU{<[mzK{Ct{mZK^n^qOAQQPh_vnD{@iLWkQGDmHZ\mvlOiZuoNq`J wPw{>SPB[zuNEHi\<`B>\B@C=\OGUHZfZXvr=]=lUFVrfk?hivJ[uMt<>>TDl?^a>?vnGx=b^W{{avm uSlcax]f[A{{T@[nLCEn=hEbeoBl]EzFb[\Hr^]{{a[vbVT@ClAbTVhXdfWUb>[sS==TXK@Z[crkUhc rRUWExBf==vV^_FO]Btyg_alFddpRttxKgODVOfiVLB@=]p]OA>pt`?QaOjuPx_@ovH[yGFmWgT>LTF=vr=]=lT=`i]\dXhiqPlpXOx<`W{bP> _xTzD@duhLBNj>L_\ctp=Fzd{owMnbeXS{{WEyMIOL[^eTHb^T[\[go^to_lygDDKVtZpRtb?t^[BD>U=lBW M\X=b\t?>\<\HBlnrfIqyndvXyoYS[dCd[SrS_t^[PCxFiIPqPy@@KQFKqQLokOPE]\IRK\DpzuJ[MPz[Ra\QLBCwdbq@Pvr<`BNrB>\Zi^L@Ji qQT{BjzEs{x{\>_UM\X=b`=sBs`Nt<>c`MvEC]L]CEf[A{y{T@C`DF
ctETD]yccux]y]ut[kpC_T <j[bAtL[datNzD[^ezeAuEzFS]av]z[UTHSkmGFTsgT=vrE?@i\VNsIE GWBfvw\EZ[cp{x\><\t?@ZtKgDk^_FO]BtA>mNBexKka{{dA<>@t<[ZM<`tY\@S^xjG^j?pxF?\g\FF=aDCOq{KfxfO_nXO<bT=lA]=bVIevBdsaL@[{[=skAEuwU_^f[uN]xm{acSKqP`{\TuXg\yKDxj >n\>=oNJoVyzqv]qNQiMIo^tbxF\?=xuSdatB[]dS^ezeAuEz>k\e zBCwLT[f@[nqOQOOFFnI_wOHRwqPkHGJoXQ>qKJh?ZyPgOg\<]lBV?t>fJS=]F@RDvkyxbexS{{V<@d>dBVDf=zCTUzd[mQ[ZXXus[uKNxxGF{<>BOAOYNvyNFrFghfIXpOey Ffh[[klL{OQ <@wpoGAaIRpwVOGpIOqdd>^_TL\@k@ g`Nt<@DUnWezkv[A{{j@]u>dqON^@A]S_l[L[FzHgxopE{CxC{aORU\ct>t[yWUz[jQkZ{xZkAk@mT< hnu[{Ggx{u[y=[]RhklYwqPbgfQI`CpuzJ][EzMzEz\ YPqQQNgDl{Pq?ZyQDgUFpjIQQN\@JZGcvJT=]QlVksbssN=vjgfflAb[=V` <@j^\c^=z\UzJ[rS`S\>K\d[\>KdEzezgOQPqOQPQ_wQDzyAPo`aMAO`HcTHn@Zp^ZMOl`RUP=zi^Jr LcibOgYNqGyTTVCtUjD>U=lBVV`tNkd`Z_FZCz>]L[klZtK\HSbVzeoZhWq cwl=]zn[KMURaVU]`?]aOrpd[DZk PXAHSlWKrfBgF`EsQ{JCrgvjBL=BF>Sjt<<\Ic]Bzk\imZ\Zs>MALkldTVdW>Q[swaDfBg]fw^dSyCT<@EtH[^c uL[\`Sr[^alAtHCt=wgQAQOMIQPXKiQLWkQLN=QoG\Dz=MhNq[\>wMFUGT@JrEw?ZiqLDIND>RmzKsr\E{u=z[k{tITauauvjlFfkxf{w{{_mhn[D@XzSNq`\>QRQA na=bGftf^j]xU{gkoEy\pMsV[{wCmzH[C{z>@h[ELEgAm{zxG>[A{{FNcp]f[A{xon@^fmnVam[t vCr@\SjFKVtuXLmXnS[M?Cm{{\eGClDV mx[{ptDNfm\bhSC{\?hef[A{x\xeGANBexS{]lo=_LhPbeXS\XdJEL`o[O{fwmDjBgkiuSqqofcqlVh BgFx]zYh^`=CtLUZL_t@[ayjaoIUZaWMnBg]fubB[crgtQ=?uGf[UdFVmx[{lJ>`mLDVmx[{c@lWLmiCDVcm[t]z =cuctFcuB[\>[]btHAgNoIQQQI@E{ON_`yGQ@WOsD\qDP_PoK\WZ> W\cuGLzLaQUNrC`FCte{wlXC\EZ[cwbTLS{ipTDVmx[zVmYuNVONICOmoItGp=f{MftVkpjZoZzcPjfbv^{J]]fBdVj[{xWuD`=Z=CtD[\@[\ l[pAtgjBiGNffhffd>[fflKjffdoLdtoaRqFfe@i^Zr@Bvrk@a=JdaobtKg@g`Ny?mrO=Pfi=v? AubkfY[wQFWd[<[o^ect?IbTCuEVDAlUx=ZCtbh[C{\VUMM<]gCmzB=dLu@Pef[AtX<@icDVcpL< \fRgeZUJuBMoSBBgRdVjBgap[iP[VwP^fkQJkNCyHjB]dVj[v[co`K`B[fCtmZh[`mzn[\OjEQOHqOI PqEcy@n?`wQQGNkLC\V<\pGvrDRrACJdRl\N]sDkps\pPu>f[z>k\d[ti]c^NbTLS]]M{=b>[^f=gtBgeft>gvuWyp=Y=Dtvj]x=[CkzPcuxBgciXZSabGOAoC]e=j bTBBg=S@hN>uG\lYCuCt=atEAvSjAFnfhhffd=AvfnSJffhGog[MJf NOgTcifAzfFub@A{wbh[LB=A`> B\VlB=>BPee<ClC]a^L<Y`Nf@TvjBkz=y=bFj[avCrC\gtD[\?jBk^fzB]ZCCyFgHfpfn\]{Fn=MjiFe E`Kqflh]CgTVV?vsEgAt<lAbZ[<>RD[\BC tJ=^ZBklVjBg_fwfv<\_=gtfHZqp=TTSbTBBg{`Z]y]z?MYGg{\qdBg]ftCux_K]ftV[crS\fFj]xcp=TLZ NjHS`W^Njfn\[Xg\ON]zi^fSGTbMz]\@\C`Etf`[\= fCnCwYBVE?aC]c^@kfCPQxmYJxS^lEZ?P^[copy{w`CtBnBkl Vzt[]lAp@Zptf<[bQzZR>EFE>ect]jXUz[E`cT[`<fD[DZBKgcu{vUim<[znW^<>THBEfd[T[`\MzF_uGLcuyK{JQ{cuxkZVSG^BvcW_HfoNOwNK\`Y{{t>R>PWmDTdC{HsP{bzrB\H=TMy{cuy{{]jD@Ac[bd@A\LR= =T=ayIQQGQPFAyF\zyPvhx@pI]i\cgWF`zUdq]RQLA\mVjCnC`[cpz]z[D[TZDdxP{k{Gu\qWPBt`AHuE{^={cEq{zM{It\a\NwOQ =qZ[XyL{Jh]JyQA?mOei@admmo^HiSKQ>`jBung]ejBg^\[cqGnnkSPonrBBY=Uz[D[TZ[cs{tXUf=U xEBefV\cyQNqQNpnSqfe@yMIQhED[>SL@A\E>LaL[qGPhqPlV[ft^zxmFgxFNJrEvrd]EzDAURPFdBg\FF^Hb]fubD@oU^xY^E[C{ft^dF\NCrC^U^`=Y=Ez[k_i^mGW>>SbqiT<=glOrC{zPtU^kuz[bwnCr [CZ<^<>_dbTd]xm{zU\Tf@^rndwFj]x]vjdj[qIFf qFeEZm=PogFjaGDwTKgT\cyJpwLW>O]gx={{{zJXveZt[\qtoYlhhoIoOujFjhfgD<Q>ra_FatZBfBdVj=AZqhPxyPkuy[SVkMOMtjh=wwqGFph dUzfMwoF_yt[lXkQnBg fv?cKrcsP[IRC{w]pfOJNL`giY]`hgx>n?TtclQK O[=fB]fpjhgFpYaQNQ{OQsoP]ftfGSDDttwUPnrFSjq?iIdkzubEbTEzBgc ux{zNQrdalfUz>AGlGo_gGd=wim{=dZdr>sPcGzLcvg{PYQ[d[EZIz<@\PPPMG`MmQGjjPzPJKqHarPVQ=\Bd qFPilyZwm{VxnnTYkFcWYLViQQ{^R?bTBBg{`Z[cnhcl\yRPB]uoFdG_EdhRP]MwUCgTZrO@if[{bQzULZEb>[]ft@[]fF\BgbVE<Hn[?hcmTh_btciODu{wOd[c{{j`>]xUt{{ccN]xa^d]z[TnCrCfv?vVPJgvj BgowctqoZBjjPIN\P\XHY{zKlmKdIYXP_@byzYPngx?YZjBqQ>S{d=awpQBe@Gy?TZIwNEEci]zig][ {oz[x{bQ>fMzBghclVWujpLan[cpan]xmz[cuudLA\m?N [crI_P=VbkHP?xoJN<=Ci]`NrDUZ[cp{xcuyS{KtD @@tqyAKM=pFCmcr?`=TTcd[H[tzMbC[lv]ftVjBgGAaIJVFrNtrxy_B[wo] HIStxskMT[ImNHMtlaTNBaaecX]aZkJtHAQYQsopvPCyMQNl>kM<{QBmFci]Zi\mZ]x]tcuyFCnC`[c q[x\BCtVf=CnC^[cqKndDRrI]inSubFlApABTh=Y=NCnC^n[=fB]z[FLqXaRKEkGF=PzErjKQy> fHZfMz[avOz[clf^CrCd[TZvrhSnsJUPaQM=ohPkG@\T\SqQHhAFKp>ciaYIPOFybOHRofzg ]ftDuzqie{A]Ty>SphM{lsIL[whvoJer?aNY?qSfZiaifo_myGG@GvEkHoOo>_x^]WU^dd>F ^U^n=<=>AxPbd>AuRffkPTI[RAtSmAPYES`eIHpQsxy\lYpakQHrgODzoEWT_iba uSya<\>P]j{hXaAKO[OjtD@[bTbPkBVDf{RBnaw`gP=LWuDLA=kdQGKc>Znkj\PsLxrqgJdOQEn rWNuHif\ojoQQQPJKp]]WTdwT?fm[ty__pn?`d[H[aDcupsSfzgndAHpbyGqPX{hySjPoQ=lGeGyy^wMxGNKaq>\dd[f@ FCvgPAJJk?xv\ziMPygi[mz[OaIRt Bg]f{>=H=nHcUFm?sSSSpwHJfmUDTT@TZcYJkO=Du[_lTPwyo>u{Fj[qGK`oKOw_P[RIQDvXCCVFpqqz[ZJ>awGIQLQ _y>LRltwU]I<=yOIH@hf\rXiDOi[NKkLofP?lZvyqrFZ< {M=@AxLM=[QQYliAtqoWLYqLo_ZmR`vnOG>NXN\YrgOSDfK<i={@fpel{@NtlwZ>dBTeKg\pL\Mz>dD[DZWtW{lV=ULauYRqP@^mKuoq=DPOuND{ F^V?k>hFAd{L@[l=CyL[rOm@FrNyQTy>toM{Ugr^Ljgm?jVK@z\X@GwOhth=_{C>`\T[DBCnsCp vR{OJNNUENnHnhGlDS?i=[qpyA>fK@@f=oAyP\Lct<@LwTB]xUuUAF=>dznCmczp=TL[JawqJLF`{KP dx_HkTKQx\k_]xyplHS[c?i{<{xlA \m[yBVGdAdz<_xHTLNZyuZu`VrPyd{OgcbvmEctP ZrwbTUwVCux]bB[cp>dKnmz{?qXaLnlAN\x__EkPQ=L\tXNN`]oMiZypWcUZjoOgr^vj< u{N<@Sh=wVvtfbIHfCrC\f^CrC\^KgjtAOJ?D_\@aFELqpWRaCsRxVQ> wFkOfzg\NSiF[`EwVjg\C]Q@=TLT=Dn[Y=LtcvUwTVjBgcuyTf\^JCPDBp^wMJDS^[?QJNIi=fzKd_ICvGiR[]AobqeVvBgPBg=fjC\cvci]flVyUdzyLdAvCmcp?oFhG[`DfBjdV]d`F[^ci]fCtf?kJFJ[lA\mHHMA\YSLBeiACDPFbalBAnieT{QG] Z?Ai]dA\>vtnU?BubCy\NGYH`r_`b`I>dBBapKKHQQ=gI?n MxzyQLQDDS\?jlHcUFrfHd@\`[RZIXsQQPA=zFZrBg]ftJSggkmIEkNWL=JZCyFmUOO QP`atdRrBg]fvH[FvjPuLXp]eTCyKzj\gUFqILB[hai]flVxA=zgvkODOD][r[h[mMhLFQ?=Z`ai]dA\vKMEtlRrBDqEDT>FLk_ci\QGLdLgt`Ai\]Lw>v=KxFvKn<{\Ftx\> seFqDGz=qF>It<\>{vLsn=et\gtDk^gtH{\\s^etFzds^^ZFc^evfZPetVc]FZpk`Lk]FzAKtLIuFZB k]^ZBc_etPk_?ZHEtvZEEtnZhcaVZ@NZXc]PZmK`@z?K\ovHzMOtCK\Pza[`=[\IZ?[\aZ?[eAZ=ut= k\WtJz=Yt?c\wtEc\uvJZMWt@UtZZ=UvPZOK\`zGK\qz>AZGc\bzDUtjZ?MtHzeS^bZFMthZGCfouNQ tNUuEC`muhZ@mwPzM@z@otQS]AzLQuIZAUtMk`BZOc]PZCK]bZBMtXZKC]PzHQtmc_@ZKC^PZICgOuP QtPUuMCammABY