Removing current broken history documentation/src dir.

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@6451 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Fabien Costantini 2008-10-17 11:22:35 +00:00
parent 4b5a6d1b23
commit 09cfc1a1ea
148 changed files with 0 additions and 144821 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 362 B

View File

@ -1,537 +0,0 @@
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 498 408
%%Title: (Fl_File_Chooser.eps)
%%Creator: jpeg2eps.ps 1.20 http://rses.anu.edu.au/~andy/jpeg2eps/
%%LanguageLevel: 2
%%DocumentData: Clean7Bit
%%EndComments
498 408 scale
/DeviceRGB setcolorspace
<< % Fl_File_Chooser.eps
/ImageType 1 % 1: opaque, 4: make MaskColor color ranges transparent
/Decode [ 0 1 0 1 0 1 ] % change these values to alter brightness/contrast of each color
% REMOVE % AT START OF NEXT LINE IF /ImageType 4
% /MaskColor [ 245 255 245 255 245 255 ] % don't paint these color ranges if /ImageType 4
/Width 498
/Height 408
/ImageMatrix [ 498 0 0 -408 0 408 ]
/BitsPerComponent 8
/MultipleDataSources false
/Interpolate false
/DataSource currentfile
/ASCII85Decode filter
/DCTDecode filter
>>
image
s4IA0!"_al8O`[\!<E0k!([(is4[N@!"]MH%L`[U%Lim\&J,Tm-lNp<()SbN,onBp1Hdi\1H7<Y
86enT6ruf93)FHh='oELBP0M'EHuM6G[+fmA,k9`6NIc3&f;?#0,b`^@mW.A@q0"Y@q0"Y@q0"Y
@q0"Y@q0"Y@q0"Y@q0"Y@q0"Y@q0"Y@q0"Y@q0"Y@q0"Y@q5PU!"fJ;QiZa[!?qLF&HMtG!WU(<
)?9d<!s&E'zz!!!!#!sAW.#62UA)$'a=!<E3%zz!!!!"!WrQ/s4RG]!s&B'&-EID!!2ZLf_m@(A3F3o
*UE@foORW<_dC%;AQ=oGGu&1bnm9#Xpik2nUr,DscM7?.[X6Y`F+QrCp**c"Os@YrQT-7Hmp[Tg
#pMI`M0"8>NqOZ%i0K>5Gi))a?Rr">4_KGEVk\A-oq$NWA`p`1AZ*mFT4Z04+h1ru<YjYJ\7'7l
Ro,$L@VlsO7OHN>ZsmkhRq,oFXN8sJ22mN),?W%<1,Y#M@j>*sf@(b/q%;sumo##6@o$lW(W$i[
-#P?)(h@EnNZ,NiUX=A;St%=8m@J5l7]6]ggh3:s2cYmdalSAVm*[`'mN.Ze]^oo&JeF+P-!iCT
jrpmPX$%4MW"8q7as#E@,:[HbB$tmoiU^PTU:.+C!!#$-,3:"IW*H-'Ug;,sdB$TK=k\SP7F6Rj
*#A71FWhXl8J*49OV1&R&L9c,&k#>8c:D$iN^dtOCh`NBeS\PP?$2hm##s__ZrETnFlJ.LQ)J8/
)-VbqTp;QfC)M&<^(b7PIA\!<<hYeWASN)dL/t"5W+B]]>)$(OQ)J8/)-VbqTn^0o5&=s*<n2(d
c__Xq]+g-Fe?b0mmt=6OfUe!,gql!(NQ`Vg#i*9U0TFp1lkjqrTBJb,BE/#4z!!!k9[]'#,VpS^K
\Tn,*O2%a;c)X(,3\.U<F&$8*ROMA0k`t`<'m=sTjjHbHA]orlF''+Yg[RGA2=I7%qAt![M[nUu
_HH<>-$ug(H]JZSfO`Hi8X`Y*Qq!E'(ijCUbJmVhn].m(qKhTTdESDdC;p"RVpS^K\TsJ;*:5lO
[;"P^c<#hr#DVq!G`R"qM"\lFpG<sMqEa^kU`VMk61]#j+#`s]o65Q<(GjG0r<tLXI]oBo9'X"J
NqUb?(XoBi\oV)rFu'Rbf@"d(c+Ml%Xll6uc?7TrLTTZa]_,9*e\e<0NBW6RXigR5V0*`Rg8:u^
4Ze?X[u?j01.-$PI38Li!!2&*^(t5*oDJ`O5L]2r]+nXb>@2hA8ZC!iM_[)1<=[^=a/9q\`k<8A
R^Ti",d'5W5.?mDF4E-P<t:i\2#8_;[k>R)>1IFA1Jo`(7bZcs];>>"_E?nu<sU1jWQmm^[t^Ck
3)Om7/Fra80/;[9rdeAr\6U9$.^o3?QVL]<A\;O9WQBP5H5UiT8TVh*1fTfY\7:ME*c9`_ccoKn
M5lIYl!X-<W[bH[*Bn:RoN'L[>N(INok0T5\VcU"@GDoR%n+KS@N/H#2mEgq5%`A<c0(UC00\Dt
L$<lnO$h7c$9ZX)ah-"-kaIe4kH+!U'XuCnF5&:6Zr*pVAD5;8fc9:[DH8>HbqJHh`gr`9fVOjt
gDR$"XC%G8I20.oQFtrq?+)Pj>&AiEV.iPM.db,)mhDo=o)9@r_+u]uG3B[mU.%7A]A[?b%mSDs
H!\33o%aCOq]7+jX'*mg;.l_<RsCpGG:_R=l;I;?fURP4Ph.'B-RI%S?'@smWj]!9Ri6\i[9JtI
o]W>&[)!^R<>rD>RQJ)V("4nEbfa>_Mn:rVZY)sSn)7oMWl#jD<`Oe*nZs9lTBI-iO&O'0e(hC7
RsauP[kR$(<(Uui98QQH[DK4Eh"!<Y9$,(@be6uu`+AcU-eKrLg9UOZVpS^K\SHq'CXomVlKYU5
Qfc^r*7pWT4S0\*:K?RYHG&i>VXeRe(S+^oeSgsn\'LJS_V(,/Sq\9/LC^/3=sKo`UJH4f.BR50
m3\*[mhSXJ3pFaJA@od(S;B(I=m:2QXAr9.B)L<1kcLl?\'rE!RqTC4]g7&dcuZPth%5qR3-5XP
;0mij@sIOWY7!+4I/a14EoHZ\bu8\hp8_m_c^iQ[_JXEtmq\1kc9Ro#(3Z:Ga<dH'b-a_Q8#PAD
;UndTAb0D-U:.+Cm2iZ8ai_NDZXpP:6@t#>*?K[!O#*AtO#k$TH&kXE2gPSOYLVUe)D<d'emcVd
pj%ofch%RLHUbYSq^Hnr^%Hcsrf(R:5(oOk?dc";?VEXtoV:RGoOI%FoL%g=n"[[FlL8-Ln3)1%
*EL^Wc&FoEg9&NOqaGfIB=.,J.pFUd-WCIib@,mJq4"4A?iU0,"2X`ELp(u=0r.VGzz(ok$Cq6?jF
>?/42)dsLb$(q7uz)5AU?GGVcKBX52"UfPSL,Xdb-6qIt97$/*M8J*49OV1&R&X'20O..&9't%8-zz
!!#%,a%%-iFE,^K7i`RkERDfs*K^KrQDp9/3*:r-_Jh\TC%PHVDEn1%zzzz65L!.ehb3Ga^sE;_"k75
d9BV]!!!!D.2:TS81#KTR2%%l?2Z4;S042PD<[Y83'f8%`"N\U5qrM\'+di'0a,E.&55AE"N1rf
Elu^t)LW@.>F.,2M4:pWG<k52<*?sGijmgg.ZL_ig"Qr)e\[_tdk/`OrTtnoR#Q;\c"*\Pk(=tN
l,Q2#Cl1(!,LqHhq>8II3oK=VXq%s&i9pcoc_E[22Dk7\C:>;c!!d`oLlrrQM'=4$Os3GR+s_u-
,"RP7,`%U-849j^[8=8-[9$!5M.3/nTk^99Tf>Xlc&FoEg9&Erzzz!/7i8&?a0W?^Fp:b/L'&&_P9l
3cE<-m3TH;ZWuHu<R1,`Ch`NBeS[VPzzz#:74<#@&9gG!-=WFhuZ7>TId(1P,.-:MrRD5QCcazzzz
!&tPqJh-l>!%JN[!WiE(!s8W/!<E0#!!!!"!WW<7&ebs61'A.3'd>=S,;VV^5XPM)!!iT+!!*6)
@lArbP]8K81H=5HZAca2jf>X&1G^gC5:3iIR":g71G^gC1G^gC1G^gC1G^gC1G^gC1G^gC1G^gC
1G^gC1G^gC.)tG0:YC^36D9/"!Ah*\io+`d=`@Cp=pWEdS<_DugH?g%<^g!n5^-Nil;Ulu[TI?_
Q]:>NE[or&?fFrEAd>91&PoC.T'EpPSTSsJQqil@PYRH<PYNllQqil7UKH#^H;Q_#3`.q83`.q8
3`.q83`.qH3bd%LdnZ?R_K=8(SM6Tkl).3&9fd";$.DY<FM`.KVO]E32!Lo3-VZX9dg=JuRWQDg
e#&ZiSM]T/9IEOISIRff4Ce3`DVp(\[+]@TRn]d/BscT22OdF<dqQ2CD)RkXVUK7g^>a#Wibg+&
DC4@\-K8niibg+&DC4@\-K8ni_q:JR`8#\uBCkcO]o->)rB,jPN7cC6fZ(.qM\s9B:<%*Y])Y#]
h3kO;)6o08"T"&^]1L:VF#Gga2DY:4;oC0#Pu!Te2AK)!)6oYKZ%gIsN7cC6fZfB-c&C<"N7c$V
&3CNKEAl>8AEKN=G(2Q-(Y[10/9SlRKrmmS/d0HGgk1[R;F:Q8K[so7"Zk'qe/9@Z"pK:0QkYAO
/Z(uXU=Ml>r$][)qgI>$[hI4k^jg4T_3EPO$'U*Tf-/W)e[?^sIfUDpinbofSih1;g#>*&BCemU
K9/ho3<WfN3<\CVOA8)%"QU5=cQJ+fUQA5:"0.AI3<\CVO@%)tFVF,rOA8)%"R]'&k9T,YPEKr]
8]`t?,ikJZP&a;haZ1^o09JK3=$LSPD;"j9\,20<r6r%5S9'^1c8ip)k8`NPF,k7c3QF,B*93Q1
NcE?)a#N6%j.(1N%G26O!(kP^%+*6-d*3!Gbm_tD%+*6-d*3!Gbm_tD%+*6-d*3!Gbm_tD%+*6-
56\Y`RWb"L->ITn,XZ>1Xg&?laIioB<]FC:-.PfSFLK+fZ"pPhrl=VJcfUdnY,mP>BoSYj3IqZ7
Cb8XtDDhf5H=@7>rr</mk%7]Xrr?R)[qG;-e#K*s-`2OHH=`XY'<IpNPYSN@eknKN+n]03cEG^7
l?tBMAJ;/>Fd,Y,M:PNbasU=[lR8<8'<IpNPYSN@eknKN-WrsQIXh&URs'9<m6*LYgnMg]$a%fi
D7H3#:S&oL7M.0,3<%B*M8\*-D7H2bQOq`a<>j_obi3K-8ftlVTDai5h4MqR:JH"d8/?N8Rut*t
orP=CJD;L/[sR*>;S9n/TSCD>OZ#*+EXg^Oesc+lJV*mfocMBP/+`EDaZ>>-;.SrDSOJa@Z?+\Z
m%!c<[al[QAemg:NZ'$iH]+]_Z?'//XIRj:CF;!'R`WeEU0>%tDU7I9U%C5Dd]f8GPNheeVqXD-
D#/Rdl1WDSg%>/Se*Wc'[XC?mo_W:Mm@R1_I6Q?2><\ZqkUiE&[XC?mo_W:Mm@R1_I6Q?2>OPpk
We^(DjKLsY1N.*hF%]kMpaQ1io5;n:SY_W1_W,.R/L>-IM9IYj`&<0,If<ab^Dt%>kGC0<?JqHI
^HY^(g1gEL3/W-j1G^dD2LK0-;uBGRh4MqR9+ZoS%n(Qr)SM1D@:af*o_FDOVl#39['D3]?Ve\c
f*;0Gq>-M<!+QPjYDLLa+_*;aq'l:jo5;n:SY8*DZOe+;qQ'5\*l-+cra_h3*h5`+>P1qmDs#lJ
br\EJ?#4\iO,7Si:MEsIi7b_Tq3PW=ErP:0_fd,`jZPk@>I"XF3g$m#S;/QY"11b?r_">#bE$uI
rC#8qX;T&tIJ#B$n1M%W(%E0(JKI+RYN(*jm/C_Q=^2]GC-`GuA\,<ZCWY(E]0f\6C'D(\a0A71
UeW(uX&peaKL&E>N,-?e/(/=^;us/)3GL?F099lGrC"Y;E'"XD!J[O&`"O4DWacRk\X=cOfY^W_
'*U][Gk\96hp&btRWaX4<bG71(k:(CT;nBrG+\V0'Tb6Ig)gqjQ#d+E)0%C!M23jlP&C`hrR4#>
X_*J-Zh_(Co1m^,CD!&%JVe*[<`n9cnL[.AQ41f@\f2Ji/9l#>gU+-G@^`]_S,msPjE\@0mUg-b
&th1koK8)Hp%eHpN'MFbpA)K[BGtGUB#h4:D%Ol]RfP=4Hg;#d"VX`gAdm6&'?0n(Zh^M5AUAu$
"&bD;"r>WlRaed@Ctgqe'2k.@Z].OK5_bLZM)JP"9%8b&-moXEU>q(gi`2DP$Iffi;H[.9.TIP?
q>.@X5p"2PbW16I)2-t5XC]Tjc8\l<c[kJ?g1C@AM3B],B(12'o5;n:SYNWn`RH,f*PI@Z-JH:i
PS2+Llg=P$.3[35n(tfD<=-l_Y]hR0oL9tnJDprHgu.i9KXYL*`k,h5Jog>LmIC$:,'^klG(2@9
)09YE(K2nFWn1W1aH-'XHsuWR0#H!&)TLNTQ!!+LMudN%>@DB@)mlWc/JAu&Ci3^[G$fRnrG-0X
R>UbYN/Imc('YEs)99174p^O6K,FU*:Pm5(>1kj=*CF=\0KY-4n@KS04YQ:hRs'9<m2Z;-V1bs-
LZDT5k>fe3EGX,A<Ct096'S?LEM5EG_%[H<YTaCJm=@*"ZiU8?FBj]c9@^BTTR0c'lfKodZ10X@
^$?(ETJ6)b-Joj,*"$;M3_^rb5rG$ubY1](8jA11gU$^RB^^K-X*qhZ&D4#-C9OnI<LVHF_;"Vj
'q&o.5Ms/'I^j!"i3&uj'ZI1BG/W:u^TdVQR/MLIYN(*jm/C_Q3f[DD!1oeVIgsYZDI\+Gb75bF
f#DN4Xn'g4mIsN&?FDX6#(B@=G5J7N0+a(Ab@=f(1^_6;_H5pd4i%df56pl@%`T%0R@0[nIu4*X
Zh^M4bHgWU9g+r<a4j(9[*bP(Th"#ci$2mfWt'.=(l2:^?_=Bd1BmmHrZg&h9R_O$#PD\Ahr[l8
:ZgK*br\QL&<nrI/.'+OBEdePfrYTbck#Fi+/s)[XeCc(II$Lt+/[p;D#<Df)6CXJbfn2$1[^lW
fqfcJ5FZhG2!l<'ARkJ6Q[I83CI8_#CLcL1XdI$#e7>f\nb5q`]kV-^#lL3BDEd>c[u6YOh6/LC
HMm_;l*JFb*p;9BLGL_B1MKAL5FZhG2!kPW]I=Eo#h>stDC'qn:*kPN!#P-eO=F(TMCVKgg:olL
+3hD^RWb"L->ITn,Vd1(TSHD[Q(tdgaDd/2jonV=4+T:q5n3Wml`;T]V1*pf5FZhG2!l<&aLJ[H
B\K>e1=c3$k3E5npWbNZXg(cc?hlB@o`"oXlmPKl?_@:Xk1uZS4&"4jTi\'*0s,M#k*=1ARb'F"
CL#H$X`I+sQ-ChJf/9^H>h6HfF'@_6`p`9\[AWDVp92gAa7F2pk+/F&:^'J@Y.Gt4-HS/;Z;$Ku
P@U..fd=g!8[;'RCm/D!,hXNd)o&XWFCMiY-_=p^AnGXeAnGXeAnGXeAnGXeAnGXeAnGXeAn-+q
BCemUmPeeM:>b::P5bMr@WiMS@Y;1[N,gHX&$pG/2!t:))&3[FRl7OP,jG2\ZT,ZL9mrM;q580*
)mf@<DoA;*DhFcY&nmIsNUV$]U.l7S$Nd:G,gdrq1e:U\-k/")U.l86P=1ibd3a],8YSolBTkiQ
,gdrq1eFE9&nmIsRO$9-M)7eu9bM-'7%,CK-hcAgbr^@t?Lriq$,JSK"Q;.gE)$Zf,&g9`_)NeF
i.dD-"Q5d`JoFHk_)NeFi1(I4E)$_U3%"jeS.gKn:'n`r-Nr@t'7t0u$,Hnu2eV_WhUR"5n9L[J
Slr[9h#YTo>fLfH%AXJH!W>PiGJWE\/@SY=l33]1S:hY9_Z'V"H!%eU0NqYnfL2upl:0RL;g,Iu
*)C'a[A6Q)h-4r0g.Y_ATtfu-f!B?nb!]GN^ZVrJ]0Da-p&bDU9g/o:39EDLa0d]hL94SJ#Z)(I
):2ca,E6m*;&'/X-.S,]E5\ia$K.iaeV62%W2Kfkf#6G-!LJUNWW\d,DDA`P'WM>,6Oo`p`%]7N
</o#qm.5,@k+07&B#\Y!`b]8,ChC\'B#\Y!`b]8,ChC\'B#\Y!`b]8,ChC\'B#\Y!`b]8,ChC\'
B#\Y!`b]8,ChC\'B#\Y!`b]8,ChC\'I@IS=Vf2+s11j5%R561#baFYNm?s.nAk^=71F?YVT4[Hh
C"rQ8rFM`a;98?sVHRQ(F+n79`;:u>/NGAPT*EM,Ag\tIFsek+[d=!-g\cR"@QK[^B:MA:(!O_:
De,6&A;+>k=b.GVWT'l^'Dl[nk+09-rqA3i2`#M61NPK2EsXGb%^U481NPK2F#Pmr2a5L>r6r.P
NS46Kaeq"8>ul6NSCLALV_qDAWQeE)WcM0#WgqU7C8WpfR]4P2k,NK&3NAV":26[a;js]1<9C3%
<B7(LeP9kW2,fsCbuEi*F&b6#SCLALV_qDAWQeE)WcM0#WgqU7C8WpfR]4P2k,NK&3NAV":26[a
;js]1<9C3%<B7)*205<5H%5k4!$W!T!WiB*!rrE'zz&HNLe!Y@%N+YdA$@=\C3!!iT-!<GCcmR@IK
&;22464een#XT)U+UCCG^),D:cQm>M(+`Z/(+`REGYB7d64een#X[BU=hJkL-5eMHGUt]1n")Gg
,,2rmq%h\'Sp8t"@jbg0OEp.]ojnJq&;@shTZ;[%cQ!VF?24=")#<@fr."ab!%/?Y!<WH*"9JW,zz
!<Ni8&ee+R+<`I)5uKBl,%,s$g&MBZ!W`<d!Ea(\NrD6GVpp#:GX7GQKkT[=n6DS`jSFmQ7q,@\
;T@q*\h%`W)kt@9Z+;K(M]8D1kcq]MDMoI.`os\=/8g@bU;lE%\gt0$ReGrf=/*X$W[Go[VTdB>
Su0a)2J9"q4\_@0CsQ$lHCH_?fq,(beM_'>ZTV$NWbg![ApTq&eCgFjbk3l,WO"`^RHeV7;eC?F
1Xt'b?E":F%U!0*2Q:JM=%00ae^8-q[<,T`/R9-pMcW?JU=IWO<:oHLpDNgucK)&Ia]#_qW1;K7
i>X)#=Jdr,;@"M*'hi@P;]:PGkfVp9N34qGb2Y"2XtmN0j"$(k1:YKcmT4\mMG3TS#i;#A4Vcoi
7>2=dQm8)aU8O&@H5NL"?6[]F=sP83&jOF2]a.e,dRf&L:;i;KO%"A4'uZFO8NdIFYN,*:Y7(/-
d9[Wc4dG"4,H?0'rr<AA";!j%&4$F15m.`b";!j%&4$F15obCS_uMk1!!30&"T\f2!X/Z."TSN&
!!*Z50b=s@1-q$),#MchTeJ_uEIf6q'/NH__'<Eo"@L%9K$iTIs4RGY!<E0)56CA)A*N2&Pqr8p
VNouOKpP-LTk2SS:o@T,:")d#,[#45RTDj4V+92S>mi9=QU8lhC3gbdU-AgJ6S1-oq\EHI3ZN6$
k]+u0TuTN\LE-jc*-=1(ER<a>a$YlB*=b+MF?&K(d,Uh?6]QpB%QYSO39YA/j.XL\Ne\Vb3ZN6$
k]+sj9eT9D+7KpcF0g0fLlB$66YC%Gd1Eo^P5Cl(mrF9T4'^$J?^2gZn'1#]j_OfTbPB&[gS1TQ
"*47u;-Mg3G+G/@WmXa>H>!#Al6r[&M:J"5Q=&UhH&:-Q2d.e3rrCtTf&s2M-(ji#erN[D7f=?-
8_LcV!.AHD,M#N#0$Cm[bIfIN]IqC?0$Cm[bIfIN]IqC?0$Cm[bIfIN]Iq@?-YVf3h,A/"FRK//
OlTC!r(X_K[Ma>;)k"4kc-4tdYM+u[gs$pE9j^;+B'*uCk&+enDJ&$KB'+#Dk&4l*DJ&T\B'+#D
p24L9DeA-MB(g+Sp2=R*DeA]\B(g.Tk&4l*DJ&T\B'+#Dp24L99[DMSgp/p63#MYq*s\Bm4UucX
oJu,Vd-%+K6_9&r%XK,e3TtP2kFp3hSqfH=H5uQ;k]>,6U!H)tLHRBQkFp3hSqfH=H5uQ;k]>,6
U!H)tLHQ,n*:u8TF3s*Dc91_Zl&-YD*a9jlr@i20E,[boCk=dFi8AOhO_Jqc#6t<5ACY`&Sm2qq
:E2>R_i3FTW;@)5)dqU^islP/%LrsY%LrsV)b4]l_%Wa#&,r??PknE1;u<7^\n@/(mcLdCPk98G
32XQF7J&>/FFp%4rB:iFoXEZN.?uD5N?i9-.F1p]o[6`antld[e+"WQ%`u:dV^YAPUbf>sY<<BA
/M;<[0>.qa,#I7Kce+\Mm_\]<[hA<Xc%!j30/e1V9iK<.rrA2p1XclT6T&hPiWk8#%OM*FLeW+Z
l=nLuQBnM7544kY5A^d(j5G:D=/=*18H/\\5:Cb3T0i<7=ga`%XXr2NXP1q#g<H_Qc)cUlK53BN
'eTrsg<H_Qc"UdSZ>qa:2R@0H%BS:.XP1q#g<H_Qc)fXDXP1q#g<H_Qc)fX?b4*qR5F(Sb/(ebE
;s7T?R89MdEokK2/mPr-ji`uC>e+n:bEjhd\T6cR7(.n(>e+n:bEjhd\T6fTQS)OREokK2/mPr-
0P*G%L/+ULC"-n#*+;dBWj8f@Y9m716\9'P0?KWh[>U$,R7Rma^-X6$M!ZA]Q$iHXoIM"[.\egd
?`7sapKkkIK"YGFq"kT/>5,+1adQlA8pe/8@\hW&G-n8%n)9toW1!AT._^=qqA'Y-T>>+9%4[FT
^Y%H1DtZ-e)uYcq`jJV#h<[dLI`DBf@t1buf\c%6p,DjfrJgfrrr?PYZ+nrKlu2SVq]#L=X68/3
TjXqjAk]F.Y_Kf,,o?%`Mj'r?j3lX:VQQ=dmS+j=E@ASiQ3`O,hWALudt-b!NCAZ'rr<8,T4L3?
L02!Sf2#8N._H8ZD.I"9GXLHo:GPhC]m@ES9"ncUR,pirmcN=O042@Wr#1=JBhW)le=ZHTYo:+O
!!RDuAjo:4"&S?cC#H]76HWQgDDrMo`oD%VNGHGD;6=JR_;;41<L\ufioS@M/gg+"5)"[$WAcJO
FTq"_8U=%X?B]LXkq>VS9@@.0oTuAe-L+7PDPXrlkq>VS9@@.0o]&eEaKs(JXBA>m@-QVf)-WZ2
XfJ74SN9N@RTbChmaWtBc06R3e?Z!GU3102$*%9/VaJ%d?Xl13=WWVsZ09tL5!;=]T/<fa5)"`;
IjtlQ2si)6e?Z*%;6PU>buFFXfNPK$PD_qV8bbh\D&UkIL9sgX,+AIc6J&gTm1dMkpj!V'9_Z36
4[StPM^e9L,h@j0?T1hXkh"j1Tt$07Z"6+QK3TWQ<\*hX56Os919&!aD:I$=:m,s5X8U[oPtUOI
Fj45i`Yg#VgYL,?A;F<Fl:t[P`//3b[\I\+8oAjONE8;V&M\]*akb4-jQ5gR8=#h4CPQP%^AZ!8
:8dd[+8]7`H=KOdTc\Y=2>n<cHCFi@M^e9L1K-<H\L/\!nqsb%Q9&A!8sK50A`).bbX)0,]nt96
d+l<P]MIWhlt1.=*2e(qc,$uiR4dLgDQ4G6X*&+pRak=q315CPSGSXmGU5D@=WbeefXp_F&lmHi
J]>CCVo3W3>"6$O+q8PAd+8U!g9XIR/>pk!P@Efko5tc5(i!dU'98GqqO(-Q@98R+=KXluXn`^C
@OUasDO0Sa=K0H>lJ,h%eb)kJYI&&%P/9%TRC(/,0=f#5M]&nF0N4j6J$nK>l\uUphTGLunln\F
XNfR[fmV)uAXFpq9#'*P_m67ZWoF""(U*^m>Ys)E_sZ[9)N%0+&c-Xf9Js^bIIY[u)O!o42.cdf
6RhXY-#P#-:K":AWu?.kZnb>1Rq_i@C6k[3ZCfoaCL=V)o%@r&1_PqF/ac:E)GHQlRT@(9CJ@%'
Qo(Gj34;=Jj22dmIKe%;1e#UG^Ae0RPkl.6>a_D7f*H4b%_>U9i=2b0[4gQ,C/G>7,^tW.9,]!/
N&8FG4/IcL^E&R8()9L>$W=`:>@%PJeTl1SG*&Q8@\1p:nEml54%AeXiShD\0P8Z(jidHG<9#f\
)709=PbMb>q[QlDZ7kl,9Rk/FmYK:"q>RmbadYNF)+l5bYI5I4O!QED'N8p+:[DnGm/>_le5?'\
L;+Bg`J^'obEjZsPkl.88YoDcdE@qiV:9pMKg$dQDQ!2be<?kQ"LOu\:[KqpZZs;?VJ]./d*7hO
M(4c;Pb`"c1M'ME=O!+,LtsL0]O9<jIq[\=/<rXQrJSP9Pn,@$nA_2U?O7bZQ1-D5$iC`t.J,/8
FZ[:<ZgFVDfrf8In:o2/Ib4+`1)'UD'P"P;/b7(#;s7=`Rn9il/+jYR:=<omV6mCo>+5@]B]3^q
m:lEsYtZ2jo>>c1PC(WIhGR*eX8BZJ\c2XBG*M<re_Vd2R]O4NEk7g>WIFPVB)_i8I+:u:^R;Y4
!"sI>l`\jq_m62/G80eN8StAgBn,jA+7SQ<GC@^JW[]F:h_/tYb'aX'2q0upT,]KBh.-B:]oO-t
Rod$:IJsb.r7\ihEo!CIC+8tdM^e9L1<u[m<E&W3nDKf\*g_<[b+nK[6dkG=LjEA%Httqoi[l-3
58$1L76`]8ANkg#FY,'i).0>F4:]gqD9$da;bZr`MHA8%\9=+Sn(=Y/B>*D[j_nK:nnCbCT)SeR
EpK4lJ'#+u!"s0Jj7RUgPpt!_`#[.KV.o41]/B0Z!0]<Ip4)XMJ&Ih@q#+LR4$%Drji$K/T+pD7
'E8'1;#^NN9;fDJN\qOMMgW+TPkl.,c@9ii_HOtPIcl^UrQbp:$l>u=4C%HPoMtMLVpMZieB:QI
NE*lI^B-2?,ug;gBp)IQpQl/#V%".s_iM=X8fA\VTZnrK9cX(6Y(l,'2)I-ioB`C%Y]W@6N6qfX
U84s>?C.X@K"%OB4%BmW1qh&4<5[,t/!'>o*MRN7ko(:9k?ekNrho`BB"kguG+(pJioR+r9"o_<
qA'sL1M)<c<1?UZdqQ2CD)RkXVUK7dg2/a;9r?B5BrTQBl=Q`"=3n1E6GkBE<808j3B9)[3B9)[
3B9)[3B9)[3B8q8.\"hJ:+te`:SD3;m(4mnZL#1UbHgKH0$CQe].V:4m(4mnZL#1UbHgKH0$Cm[
bHgKH0$CQe].V:4m(4mnZL#1UbHgKH0$CQe].V:4m(:6$qA8fmSa$h]mlk5JjipqW,glGIb'aZo
Rou:GBRQdne*S]?3i%XBacF:6PJKJ48q"bIM^e9Olcc9R^)P:lKq^IE%>M_8LtHN%*Rt@o9npPo
Ya%m&jX.lRYh3bM)\%P>@BeC#2B**[_dTe%Cc34AL;RH(fPEGb#N::aoIl'@*#oq<@DTrG*#oq<
@DTdr_83t(_83t(_83t(_83t(_83t(_83t(_83t((c%^M`g7G=jIS4Ng2pr-M'(GnA7bL"'<;dI
@iJZ0]umZ[Wf&UV4lmSXM,XBpbN_05DlDr)`$d*b_qBH0Esf\[8nT^*Y-eu*jO/mB'i.^WU,8.6
o0oQI-[qHNk.(%^'A[[fVj'1cRWE&SVR6)=`6Xhi7)eg>=[&e!R9"'F8q,l9<Spd09%-pL7b4@&
br"7E,M[C]\P1HdeRhbZT&hJ"4L^fbf+q7He44^<eF1j):!C"D&uP[/,g(NC'YFpNR[]iWHm%"?
XTY(N["@<_c::!ceD&GM[Jfh=bgbGm4QNVoIED)QBJc]e/imV:jYcOZF#p[f:Ai+6eW+FEklg-c
q2ONODO2\W3VPA0`69*HkM2cNPk$kB,FY*e"4c^[i_F.H#&MQ[(OB5/'`S0@6)@:\Weu;7&ffEV
W$f^reP:uZIjE0b$fYF%EokK2/mPr-ji`uC>e+n:bEjhd\T6fTQS)OREokK2/mPr-ji`uDM^e9O
krWW<e8;/=;7<6:7bWj0*3:u_D5c2d[\I\/g5WKZC,XV#.J,:X#e;^7[%B-Ip_PPVkW#V/9>a*V
bH,uG\tXRHCGi&L_q)fIK.6FGkmJ32_3o24\8-ePK>FBXMk)ghbNVQ'g$ZZ,](d"gn9?^\6N3)o
dqQ2CD)RkXVQ)>t8[R2g2OdF<dqLcsT0iOib&sUS<s@gOC?`3YH9)k;TmAa9US2up(Sd[M3Z"Qb
H9)k;TmAa9US2up(Sd[M3Z"QbH9)k;TmAa9US2up(Sd[M3Z"QbH9)k;TmAa9US2up(Sd[M3Z"Qb
H9)k;TmAa9US2up(Sd[M3Z"QbH9)k;TmAa9US2up(Sd[M3Z"QbH9)k;TmAa9US2up(Sd[M3Z"Qb
H>VSHNeQ`]1]PAn.1cI\!<NE-!rrE(!<<*"!!!!"&Krkp;.4HqOg4EG&>@Jo_;R(5s4RGY!<E0$
59Xjr0dgIJQ:uB,Zrg-QohDG"rr<p$nWWtQ)&d,g#qZLT$oH(XJ)_jX$=+?66/BD%$3(!aTD6P.
!0!QF`6B%@csDf:c"-hS`Z_U&-lVq;3HS!/&ik&)jj?!Y8EJ5DQUKTU,F:fY>n_-ENa38XFA9F]
3HRgRd5LVfjj><>7,-*6QUHj>'5p:!>nT/>9t_0"F@bN@2Y9Q%d3FuGgX.747#kOdDa]Uk&Xe^r
[Eqra(JQR!.1%j69OD51W`@ZLn^LMVIg:(jKTjcrD<s8q%WQM,4NSkSq)ee85)C&Jki2E5,ZOi/
SCOSV`]k$gWi)5)/$VDPgSJj$#,J6+;g4VX8<T5FKV4uWPUI`\;j9DDM>!M-rl&"dLFj7XFSs7H
M#'Ogd6^Dk8><Vb)o@c,A!<]i(.,8!RRWbaOX2j:[,djPRU+R<Yb.SW?.bdRT:hWYfUoC?TUK0=
T<Or\RU+R<Yb.SW?.bdRT:hWYfUoC?TUK0=T<Or\RU+R<Yb.SW?.bdRT:hWYfUoC?TUK0=T<RiD
+Qm;^1+&!W7P%;9,A=&-Ft09RYmFHbNK7=AM0(m(kmp<5,-kOZoR\G"EZ]9VFB!QRdN4MBLSR'V
kmp=26e)_i6pP-DLk*9h&HRFY+p.l<6j<bWL^XO9&/YqP+>=m*5[Zd3JA?RF!J("j!iFd%KHlh<
i__[m*WH+1jl*b<.]JKnp0%#L%U$t8B.W/7Z^+@^!W`:O5TgUD"9JT(J3Y4g#Qt20!.[<W&-rC?
!BRQQC@iF86W9puFU_*>WRNddL8Rktl5H3\;lFGR%8NUre29:AVbkn.)P'/S`:P%S$!,;GTrHNT
PqpYEmX:CL%`=TQaluc-+YBQ^c68CN3g6N1Z)rb6MO'a:j@>UZA9j9PV$T%%<OFe.8>[/7H'.5W
e>[j#XWeg=0[h;K4D1''7!XlS9%.lQJ8e3I/BJ6VdLedg(=Rkd'em3?A9j<3\f(=G"!:/)Yg`Om
%*B(&&hdM3*b9!W*b7./(h&ip7\;uEctW+jI0Q<0VpK/M)LVg^5cmlFQ4juo_AJ\DOK>J&-2B5M
;<I.PUJg*Q-U6+)(N\rJ.P+hFc<,qE=!Ai7.9eOC+uU2KqIi8*+J%[9S<2186kYYD1uM5Kf4h23
f\A+PImdk5.U*^p<L?Kfd4A!-Y(Gq@EHYNj;KUbgDHNfE0fl-fUe_g>12EJV;"]ZCPU971-R$d=
Bgpu\"FfYY)m1?]65>d8&pg9Eh+W]88ZF$aZ:p]nM.5.]_SsJV`S28\Xi!tl-'`'\M)8Y@VXe97
d=J?3O%:[VTRRO'.!chmP@Rh&.48T$4[N@bLhO!jQ]P(#`hm`KG;6+8>HVj(^hm"a?5X0+6QqQ4
A25#NLMj4&8rFEsh$^@K<fq1?X5WdhF6p6QjDrOKb;j2djd`XkmiTCj*6qlN"I0;tr1YAY+e"PN
iY#:h^G-'F&OI+0,_$)UG+B;/9I3gh)U.'%Y`j!g+h9(#,f3*FJA>PH(^pTN!J%sn0Gk3&!s*qO
a\sok?'J6M:sl'%&k8<Xeq$kq:'Yc_50H'+7kEblZ^,XW=j&g</END.Q?(8Rb;j2djd`ZCEm@h2
3G0o)S?nN%c<8=NB.W/7Z^,XW=j&g</END.Q?(8Rb;j2djd`ZCEm@h23G0o)S?nN*(N\rL`oM0Y
d;hQVM<61QSmlu%jsQOf@X3gm-^^K7H&:Z2R%@c4M<61QSmlu%jsQOf@TeD@92Q[tcuYJZ228?d
)T,Zm%:Q=qL9T5I_cU[`@B;>@Ygs`1=DJ@SX>Pa:ef)@D=gPWMT4OTQ,<^u,@R%*I.\7QVd<82o
r$pDT["Mm4QLmuM+V;ld7/m7n&JJ.S75@HG*#<^TC,DubY``[YS,WK(ZM#p*X!NB3U,0X#rnG%*
`SC>An[TP(4f!0sg;nRg-PehRnO+lR'87dQD!G)@@7[ca=p3(&;(JS:nhr@W'2ki[fW4?neKrqZ
&1&['MbFc+M-#d@fTg(lXoABH.lN5G[a,0X!;g[#G8G>eZc;'6p,XHmpWpZD.5FYC=R`TSA&?9?
Nsc9QBp3N[[ZsSP&`"b&H6*8Q/9k:dZ/K30a+]Q^*YpjhGZaI?iFBaFJ\HLNrrDGuZ.rX2ZHjJO
m.NH!&4K":F-A$s>7!rVEK!IU8_#8@U7m<5R+0Nk%5c9AV,4[QgaB>Gfg/WTXHHF$$,$6I;;?j8
CQR!Zh2mT5P7r'N\=!#RPuL4^B%g*U6=VcCl3eP2(H17WMaZQ"+MfFI[$OZ@7SigS2u`m4G@S.p
T4OTQ+kc3].+G9QKZ#<M(ATDD.V+pc\QW9lVSBBJdr=JD)G$$K>%$W1/;GP6%f46)KTmq\nWT!1
d]=et#"GBLP!Kg3'1Zr"7RS\9b+j%t&Ih59S`X>(d@VWcEVImhfh"eC@\7ES<Q>+c2(7gT6R5nr
.<:YTAD[GYdf0<.K5l:d1F%f9a,)%VOlAq%,^GP8aW=uKgZX>\X/qsle]=B0?9;\Zb$Rd&bdp+e
(`+lqZm3AKj@JheGu?c'ntX?g)B&ae?.eQtkLjL-aMI4@;pXCQQC^;BC6Z]L4e)@4S,>F=r&pPI
4e)@4bPXMmr&pPI4e)@4S,>F=r&pPI4e)@4S,>Fmr&pPI4j3adS,>F=r&pPI4e)@4S,>F=r&rg4
q=&8b]9c\ci@@JY;UQdDBK"\F;0"'b?&#a7rr=@WZ.rX2ZHjJPT#8]%?0oYrP,21fP"_*i6p.DZ
U/YXJ,XC*gC?S8k9%=RWaA:;W=VI=](iD=`Gr1V9KiDUDX<rd@/3pc%26__(4@)A;](0))rXI!h
]Hfj?geA]L?fZm:aUAFDV&[SmiffM2rrAV%Z.rX2ZHjJPT#?7refmSW%iIASSPZ:_Jh&*?Uf>T1
X*FO\bi[!r,"F+4(dJ_UVX=l^=GhH#Pd-JPN?TsC=*RD94.oDCdip5=Bd`R"Enlpl$S?'pPUoS7
m9I81!F,Q[%E34TR&_npP%*U*W;\=*[WG&YJCBZKAu#,kr(Z"-ipM5\Ghe8O.tl`WL+N9H8n=k"
!3a5Kd.n-pbBG(HV>(soM@ojg<"dU.LR;kF@o%p[9('`>G<X24DFSs\F4&r$.J!+?;3plkND!R8
=U/]7\N-YGR:7HZAdq1e'bKb-G*Abu<N4;"RbiN'Pn!89HQfjN3eCrp5&;q/BNHJ18QVU&>RA,F
"F%s39l@0O8d>H%!c2e$iH;tZi3#YQP-74*\.a7k4rJ.]dr_s\8U=ql]+Z"V5qL2]F%,]YgrGr)
N[c;RY9KhdR\m(s.ssWLAHHq+R+#,)Ih[UJPGk^N$\7`7#Yc*1Jj*c%NoKJTQ?_2Dp))<q,ScS[
q?WZlZ,.5n,WHs(8<f7_pb$b31SZb12)pq*r=*B'[<Ei"XfNG29<A,IWBjN/;'YAt-VMg$Bf-V>
F!GeqY0oa"L0P`1X*ogC!td04jHQJ"1m8\ppXD,srp:t9:fclQW1;:Me\BKmVPY2H+>@:<r#ggS
0bl\G&h*k#4"S*n)ik>LW?c/R.mZZg+m(]NXjNP1Lg+:!Z'eO%(.5;nafLT5*tU^B&1C;K^nC*&
r'Jn+-7i2[M&sO&WC,.q?.eQtkLjL-aNn=Q;Wsd>4-AY3#0*tJ'E8')_7=>M'U7>6K.N`h+B),]
"h>@I7-6g<QPZFVJZo$<;VNNr_KLTeahpGWi*5GTQ:+R5OALfEZ+:nEjG9%#Mn:"Kh"rYm\Jaa2
9u>:sLK2UR%hTAK0>].^E;(cW.^;lDOb-Q7:TBnbn:Xn3]iJ*.\CD:N2(jgQiaJcW8p04+AQ[lR
Od&^;S6j2,VU0O`$%%JN@O-Q&Rnrtp.@`)o5_.=mV5Y+d'Jde)\0SeQg(*bK5&h(67q"ulH-s@d
9h*XpnKX_@FY+_]YU8-hHlJ+^VQ3IF.MtYYN^KFG"&Uk%-F+4P7GU@8eY(Y(&N8:$*2X#gYgG-W
Ke2?.\?4g,.T3M,PYbhtW5:kFm`0<k50H'+7XGG6.'o9kH/JBL\<;eR;M\jWTYkg"EJZ6HmrJQ9
-UGjFpO3PuV[f?`,h29d4pNAWh=sD#XX8lF[E^2[Y9B*HWoiX02I\"O8^7_E/QW<gK?/q\Tjhgj
cIFcdc.l'5G[TZ\NL5QldW9sqDR$Q%_+LE&@D<#bWTluPM^^O1LI-PEZMb@>XqL'li7rDZSMM?T
U<lMjEgt^,YL+41Z_3*hJ0l`N*@a8"c%+CH!qIjQN(T?B;@?m!!Tb&T_()sY+mKke4,^ZC=lXNY
fRT-L7.+*Z3e*oo^u=]>Og]qGhni!_Z>S]c@g4P2WbWsL,pKR_^\f$P3;uW)XsE?g\4`Xa9"A#Y
nF1=)jXe2=>_@)`NDYB"&9=nH7Ml2&!/E/5@PGej>EZ3Me96QmRS^"I8DMGq,iCU,Xmp<d:-iAj
I>7t]+Vkj:],elGq^h9J)=1DhV"B![Fi/gppk1Ze)KqN<Th$Z[LoH:B<Wc#Q_jA@*0@<;C"L8HU
Tj-N]AH`Xs317(P$If>T+cIsL\T3ol$i^4%H@]4nfO@&#0iTQJ1hS6,)Erf^(Y0olO]A?r.#LZ^
Tr;>s)j4K%N\MQ4*e15_Yum@<rrD,/D\:,gDaqotpbrj`:!8UaPY\N[^Z_G$N0?:P.\Vi`TLbEC
.OC'tNCllC7F<)),6X3QgoF2%Y9lQ!-kT*MhQhHlN9cFO)NsR=?PD]`M>EdpEpgtfG<X24DFSs\
BrET:Ql8R-`ab1>-(mZEP+C&LgQ8,Qg=_J.mRomD!3f#TUjKjJJ3]:^/D@>hUjKjF$+ba*,%j>Z
jD5_$h;UKs<+f%ZBau)$mgA-O3HF(!OK)377*J+J?n.F3JdP]$)tZZe(E?]2L`of^8O?IM65^Wb
,NlnR-W1V?V3ik^XF$\<;Ifu+UA9h*Bb?&i<'[37/=T*H#pb9SYgceZU)Tec--2hB0[[J;)2U(W
<3n=E6"#LZ7jDrhSoX8>EHaUi4DmW8$<fmYT[)PN+Z^;4["a^U1AJU2efVJ#G<i]f9rpR$U@*S^
k1hKbYK=2pNBAX[Yr7(B#3$P>5Nka5;M7T*VF7+W`/2\%/KkKfZ>=_2N!*!rQkC6u+!O)a66R&a
iaE5,*Q?h2/Fg7glmTlO/FfH$_\AGI_U0(<S$<inPU@*:FE*Jq=t,l:&'N3]&MHYF'(0IdnFKG7
7-I2bf,1V]Bl&[AULH,N9e'kb'_$\'Rd*H5_O3k=ZEdG$^6(`%\INAWWs><^h.o$edp_=&<#h3p
).Fk`5`n`*l:lCHG[X:R-FK,%Io/Ma@pu[<6cE0nab]?JRX5Oj2W`.joHBYAZ.:'McN`B1OK:k+
8eRkKV.;Nb#+$N5OY;Em`k6ku?g,WZQ!#N77*-)iiU6N2e:r1Dh2^L_I?o-5N:miD[Al@Zpao?6
97I0q?%UDa\]d*)i(-8kQ7q4-bW88P84b`n2E`Tcof<$PN/WsdBLs.\NIF&6GZ6eG9PHU$!a%ck
B7k2.VbpqK84*)r@c<+gA/:ue`DL%\&<a8dARqa-,=8SkP,$+Sf^:BTfk6;ccXBhLR!/!;$!L9-
,A]Hc8XlE$1!!B2%$PR&<Sq8i_]`,a1!!B2rr@WRhQd!@e-Xp7>"<b?Z^FVYn89h'Ig#B]22-k#
'1EKd+[",qYrp[@EH8#[!`fA=9a%aY#;Q_i:t#(jlus7em'F^mB<[/,72f*V6n!pkM0G5HN<GR(
'%g29Oqj3oJC0Yt]fJUO*(8`GnG#td43:CI0\Kr?e"g=]L=0NIC+VZCXBOA4eK#rXWoZ$V5LTYa
Qcdfs_RW,;9kgG+MKa,='TC:82!^aonTh42#@5E/.RBpZ<(%'NQff4bYWC5.>)jG$.)9!Q1m^d/
mVD>aP2;("#TSRREg'*k9-KSOBu25&^Rk_mL1?CBNP$*m.>WY6Aj[m,L1ISVCkboUO\nZ;/BRC<
:Vl/iQZbHK\b91dE\l@a$0,HV,YOWQ`S3>Hq/196DBoN_1OfkZHu6fQ.Agoa#mso:!/uP)Ec<-Y
7mGbij"/\]!Mr7-4q7Mlp>+Bh0'Co#NQBFU#FLS=2+jd$WUsJ[)'t-6C,s0%8F2G@e$8PDjHGP`
ZQm7hP;4<H8^Y\ZQF>:k<;dGq\eCMJ=D5F3GD`')<16&JT]EGaF"WI3GW5X&gNR/;]:WZ+2^:J@
]T.k2=V!q(el_M@XG0]uUc+sXH_p(:P?iBekW[,%8&5HfS2h=")Nh*;YsGfHlb/!]A2MY?KUpmt
17tRU2@VW\O]-A-O7[1pbBQF<8L0HpnlO#(W$8%7&9p/6!8D^-\@\AESi7l!Yi.V5_?.kg\A[Pp
r0EO`[$,@8fI'WORaeRo3#<?[4q7Mlp>+Bh0'Co#NQAs&/+q0:$F,@X>)OS;3uZoZ[m@.CCNLKN
#.Hn#ctd_Ah$1>SXjCj*)VkV,6*8LLF;is>[m@.C12cIS>2k[?Y!GWP./A"-L1E(`R1./K6S]O@
b_BXa+dib[Aj\<kON`Gi1Ei.paC[dp)3E'sA2>Bs%*,DY\@\AESi7m[:81i`$"5A2KWpaT_H9G;
@4W^XYa,p==A&s//1#tRQ4h&:9*p+384K]MPJU*%4='E[_G:J#,k.#7:C0-/n<:^b#s9L&PJU*%
4='E[_G:J#,k.#7:C0-/jdjBGq^h9J*4(rOc<8=NB.W/7Z^,XW=j&g</END.Q?(8Rb;j2djd`ZC
Em@h23G0o)S?nN%c<8=NB.W/7Z^,XW=j&g</END.Q9#.KC64TH5:K=W:..\1<>+?n[n@E>PoMho
74)<?,)"_C%FUD@6-D?J\b91dE]Ib`jd`ZCEm@h23G0o)S?nN%c<8=NB.W/7Z^,XW=j&g</END.
Q?(8Rb;j2djd`ZCEm@h23G0o)S?nN%c<8=NB.SZPCJb]&UcU.319#k[[Mhl.;8XP9/Zc8S)mkoS
[3_Vhk(tV!)ap2`keqPeh=M\n\@\AESi7m[Em@h23G0o)S?nN%ajfF9WB-6B3h3Ku-W5(I-W5(7
;KX?bFXL(0-W5(7;KX?bFXL(0-W5(7;KX?bFXL(0-W5(7;KX?bFXL(0-W5(7;KX?bFZF)SG<X24
DFZ8>S?nN%c<8=NB.W/(X;7po<;QogSn<89k%#riK?VXt4Nr_dHAeq)`_SBQbk!X7`u,%n,jUl3
O#&oBo/"V:1H`nQ1X+0$4O!CQbg/(-bk!X7cSI]-o/"V:1H`nQ1X+0$4O!CQbg/(-bk!Pk;Nf(?
G<X24DFZ8>S?nN%c<8=NB.W/6aNR1OPR6E1UM/?o'I<g+,A>d^M%,rS7a\S[)a\)s+`p9/2N=JF
g,=qcB\GA(UM/@>NMC1@2N=JFg,=qcB\GA(UM/@>NM98;0'Co#NQC4OZCm@-<;/$T_+eab2/?p/
$5@Ob7/%ut\0kgh.1&i`<3S(78S7GT7SC-:G1'!)FG`YV#Yru">q!588KF>LJp,p?^(qqm+U2"b
qAT_cZ^O^i#m&"WigD!p#qa9t&oH5RoLW9l%)*qtLOrS#/YNn,dtTKH<(c#d\k%j^U>1]"m6Ht.
DPRq,M.DcD<XT6/f5@jWMB(1WM?Hd(cpC'-_PKTsBdjHrAiCr]*amjJ&[<%6CH"P[AfHn`8[!?e
;2PrD7n"bp>hVF\1D:uI'3uU/,t'04`+iG(rrCulZ.rX2ZHjJPb;j$t[g<2HQhk_l#URCBS_ZY7
EE</jGr]UFP+u-t8g5/d/D^76ZT%jS,6aVe?I<1Jj@u+MN_nFg+411*,uYLfI:rNM,A>k^6l:iS
]I>2h%7LrGYqr1UM/s5tn5K0HQH-u@+`ig"+fBk=f".:C&sYh(gS$LH.`2d-1fk"m8]T^c,tAQC
R.HBQU.E3_?UEM(%%T>ch2oj;=ZQlG#ut[f8k+?c9^&9?F"=.S7^m$<56jJTC,Lp4[*NP%eEX0J
,<.^&g!??\Jukm)@SnP<8gP+,7&!O,PY*57M+.B'ipM5\Ghe<^b;j2djd`ZCEm@h2'.YtUqAR)&
YG&#\CAJj_L9I;Ok\Br4^4rhbX6=<p)SUs0Tr[BlqAR)&YG&#\CAJj_L9I;Ok\Br4^4rhbX6=<p
)SUs0Tr[BlqAR)&YG&#\CAJj_L9I;Ok\Br4^4rhbX6=<p)SUs0Tr[BPXR7_(fk6;cjd`ZCEm@h2
3G0o)S?nN%c<8=NB.W/7Z^,XW=j&g</END.Q?(8Rb;j2djd`ZCEm@h23FdennVE!WLeWc^3Ff3*
1-ae2&J5SEk'%V_m'F^mEm@h23G0o)S?nN%c<8=NB.W/7Z^,XW=j&g</END.Q?(8Rb;j2djd`ZC
Em@h23G0o)S?]Mq\Z?ZOW'\uW7&^kE:"r9C1L+]bS`:uZDWE@dn7&*@jbca+VQas3$8<,tN^874
lsseSV2^WnVX1*Tb,G.oJo/34S]0C]/Fg7jZ^,XW=j&g</END.Q?(8Rb;j2djd`ZCEm@h23G0o)
S?nN%c<8=NB.W/7Z^,XW=j&g</9NBN8RCV$Lf7$V`1(',HR?U)#S<0),?;\ic.#jBN`_LdOJmog
Br4[hPmtV.LdQnI3@#PW9oCJ5\O-;;Nu9R+OJmTHh"rYm\K%rAEm@h23G0o)S?nN%c<8=NB.W/7
Z^,XW=j&g</END.Q?(8Rb;j2djd`ZCEm@h23G0nK-!J+5oecVA5>tA-e+GQr9g;QPe:b%d@qBUn
qO2l1T;eaRC&49IVOsicl79<<B5r,Zb<0Z1l;"/?:8I/MV!:^Nl;"/?:8I/MV!:^Nl;"/?:8I/M
V!:^Nl;"/?:8I/MV!:^Nl;"/?:8I/MV!:^Nl;"/?:8I/MV!:^Nl;"/?:8I/MV!:^Nl;"/?:8Xm=
\b9/HFG3X<e-aJi60ecW*jBt,lNaL4Y^4.O#HSuNHGSnPX<+Tl_<V?-*jBt,lNaL4Y^4.O#HSuN
HGSnPX<+Tl_<V?-*jBt,lNaL4Y^4.O#HSuNHGSnPX<+Tl_<V?-*jBt,lNaL4Y^4+M\gE32*gB^m
:]K,K$j-M1!WW<&!!!SGnkPL68g,YHD#)gLG0c_ckA9tK/Ln!B/22o30Z+$VM^5%=.DC,sT"F0g
bf9\h",]G'RYbd>Bs!*tY7u#o6OY]hJW0Z&!!'n>YegZ"_[J<<$ig8-!!!!1^]a`/9tnfP^AIB5
qrkNu0Z+;Q_[J6:$o\1E7'Qnp;9'Yr`t6&q0Z+;Q_[J6:$pO`c:FsgX*)X-h$oL<j0gR'-%KJ:Q
+>3`#k5<]P1t0c5o?76bQ;,.kCdBOaEIRuYE?+Ml%("8Bo>&2X/+?EUC:+)l@Qsk_I(6D5#k1>8
F$d]&"*]%0f@og:<?D53D`hJ<39(N3df@3!V(qhGmpe**47<1>,qMEA/@3AJo>nb,BZlP7>Aj9V
I%LE02ltBG.,[fZE^7J6KhMBG"hPBBN:-c<IO(*^1uh@oK7gt?R)`04g`sm9*e+1]X9?G!!&B9[
i.Sn#R:Y%GW$(i-"g7pr\$U.m*3m[H0S[DemlWbb>rLT!ER+XTnuRuU*9.G]_ZTrJ0Z+;Q_[J6:
$pO`e.)QHI_[J6:Ui=.,dnM[J9f1<n1u//)zz!!E9%z!!#:b+9_b<zzzz!!!G#Jcu.I!!!$k$t.*Y
0S9cf_[J6:$o#R-0TQ4.9:?ct1aBpUiJKVD"!k4iz!<iIrzzz!!!SJ$nqbl0[B`lzzz!!(\SBF,2k
"'#>Ozzzz!'pSb!!N@RcTLgF4S-l]o?TPjcTLgF4S-l]nc1fP_uLtn!!<3%"9JZ+!<<*"z!!*ZC
+<`En5uBmD@:4Wcg&MBZ!s&Ee&F<VboLsUW&Ke<-M3IS5XK8M)XK8M)XK8M)XK8M)XClW#+G'kA
Jd<KN#U"^)+G'kAJd<KN#gg>;H]ii,Ju@8T.Olnt.Olnt.Olnr^(a=0Z*tkc;$7FqR7^>N,a(R&
=qJf&+G'kAJd<KN#UC!nYh=5cfSWQ&NSPWI?</4!KHr+:U:+;SA(s0=36@5DM!9SrU@<!)S02J&
-Q6[eULQsS.hU5C,Y5sB9?<5$p*Snb8*,kZ(=019`$X,H:;TE>i('JZ(eB<tDC5!8ahIr=@MKPa
Sh<PeT]&aFDM6h@A9\ZA\7EM*Zosq,aA&o0o(9$neu8B]Kc%(>-D[aKorJ!8s24md&HDn5!<WK*
!<`H+z!!!$3@1XS:+>?*DiBU4Z_=1<0JYCKkg&MBZ!W`<d&4iVH<DG?cWZo/>AD0e&rP.stpOT?*
T*)kF4u-;5H/`nS5JWcKrOCp(<daoIfDGoK?2<4LDtk9N/W]eF?/sPS'A(,8f>A9R_\:Y>'A(,8
f>A9R_\:Y>'A(,8f>A9R_\:Y>'A(,8f>A9R_\:Y>'A(()PLn*8"PN9:7.AM8p^N*>&en)RRHAdd
A=4c9RUhg5Bp*#l:/7VGl:spjLIDEY(7XX(S"&`RL\R+1.8!L&V(^cF64een#XT)T8!4F:+UCCG
KHWApG(Q%hc81F>36j==j#G=?N8b";?\J1QT^AerH&9!V.&-f;9uq4lWBG`u6W1(U-O1\f2NUI/
q>binpbc&O<'Z7[,iPp=OGp@e;,4q2[rdE7U*R=n&gD#=-[/j/#[DREH9kTVKD#W$PoJ"#)?c+P
qA4&>C:D;k#098gg`a:I?hb\:73fZ!E])t+06i8H'-XJo0/B^UH+8cE18A7lgS/L:4/?[PM+5'$
,9Yd#N,,0S0'R&ND6YZ*.H""-g%UDe[hu[(B\u7pH65Q->^&_\oVpE+\g^6K^5EQ3?..p*=l[$!
?_tVgII9Qo7Rfj:7Rfj:7Rfj:7Rfj:7Rfj:7Ru*9r_*7k@\9:n!!!'"_uM4t!<<0%!s8Z.!<<3&z
!<<]T0i@I,@<%FGdI;^\Yn/$35iMas!!iT+!!,:q=EC";!ihQgZIH6-itpub>(CD")FB^r>?oS)
2qi[ig3k4"I?WA1r*k8bBnRmbK$&3(.bF$1O3o-u#-+L)Qpbm##qW++Y.@E)HV>66l-au)g3mJb
(-tnu4];n'a_WZ^\,9$tHV8!8%d:X)BIc>mph!4MB>5s&HMmNtB\AET[k_Qr4o&:IfB9mf7a-"g
\W\mRn&j6g^HMAG2IilVbaGKWITF&Qq<u>NZQ3t%ABe/%o!R)Qc[Id3R-T*?->KmEQ*.fLHh"IZ
a'7;d1KC%EX``t$hi4CC3o8Z6R]Q8FCTh*:r,!B-f(S6"eRuWI?$cGCj(R,+\$n,)X$-8^ldt=7
)b/%o]t'=a=msMb?GAYug,<HCmECuuc[Jp+p%e'rdBaj3D?kmDP4,-[E7%"',V:-;'`u'GBt"I6
`W7Sp_8pceM6K8G1]m<'Bbm$V0PZH<BB?=%qnsD!,lf`J5Z4&96p$7VJt<5l(kUgF!D#0crrB@M
7jGHD/IO/.J+<.[([d\$B`+E1%dJjMNAMol=I#lO,HUsoY-6&`&u*?K01G,MN!4!t@e9Fp)OIN3
W;qXe(94<Ckfi`!GBq*>bO>M)/ut'fl#g.=K1<QXbY^rh(@DC1Ma9<&kZi%WHXc(+!DMgA$L$21
n=?XrZR4^SLJpiLX(pe+gN(7hT"?ZL)434FCjG9og2o7'dp'!rI)e/mIk*YSlgG8+)9TBMo]ba(
)f"W>f8dRTS!-(%SpL)(L1UkU>98*4p72Z#FOocu?STgIT?>JCHMbT9#'-i,4Z[pbL>'4SFlTZm
k2akMB:cebiL,<Y<l^f&4f:Ya>rB4`f?A;VBC`CT?G>pQ_47Q9cVC(\Tsh+mh0A8J3OpsA=m)tq
G\1@/<O(_b:MJ21=&!SFFn6U.RJa/Xf<;hC0P;lfo@'VEk\[At[pD,kNc%Pi<dF#_hAM\:Q#(a1
e(Sn%e^Ia+*IPmd-@[O.p$;&TbSeR34S7n*3ZDhuXk/TIA"/ZHQ(E<ppP*8gj]`dPFS;77[<1!c
a'URGae-`%4aR"C1Bqm%O$,ON:57K6CN\[@R-*JUj_(0uIH.cDb:f5"2F,D@XAX+Q;ILYEWJ1fM
lhTcF:tn-^O#t[^hEP_.$bR?WcrjJ$5S2Bdp^i+!=;4t'WLrm;c50RGkgUVQ$GcKQrr>n%64een
!Gi0F+;W0,l*ccjA#cYtJ(\UT96B&n$YBN`gI[:-eQ0l.m'X;K\o4YRZN<1)Ur?I$X(C2^>2,4r
2qA&`JK6Ys@]X]PZL@ZBD96[blN(h;Ngj`;<][86GQ!i9jL7kVJ@8iU9sg:g*E?pfrl\Md>Gh84
>;.;!g.YM,WjZ45!+i:C/^o,U/XR.!D'gaQ<Eh*U!4(22QKc,f(<d'K[Z_G9Wi_V;fkYIuFPg1.
Ad!518W'e'<m/8E[C7HnDla,K!]k1o`E;E+A`*2bgQLAOecONU*B)>TXE@OKn,"\Ra_mU6#HKb?
XDEqnn<!jO0K`J;!%7P9Tc'nGoVUo%(@cO2CW9]a^'T0"pa,E&i0V7k$D9Gd]B`5\XZO8(meYDE
lV?oN42/)iqU<(B:@G;H^9m>)e%=p@n#\[c[-me>]B`5\XZO8(meYDElV?oN42/)iqU<(B:@G:b
Jn47%Jp/j-8bGknohT;p:MKJtC%Y89ohT;p:MKJtC%Y89ohT;p:MKJtC%Y89ohT;p:MKJtC%Y88
86G<%HkOq=9eC#.4f?gnTR`a'()^J95)XZsagL.^JmSX'9,(s2X.4;YZnhd'Q[L9(PheHcaUt-b
XeQI"26B]-r?l7)SW?*\4UKd5,!I.N\dOaBlKPM:@_b8F1pq&VSW?*\4UG+oE-84bkH$Yr=NWH;
"jimq:<0%i5(r9K&[I?4JQJjh5\jb[CgMHhE=j=D%^/s@9h0jtRTd>)D$=.N1j*T8m!9>MkY<KZ
<.:%]mJVf.0eg$*hC9LLTZ3,T>)EUYbVNC0$afu\R#3UZk'ATGH4thSf:`i\QsDJI%p@WY-P;jq
E1+RU$(N>]RDNSCN#@QVmkpgsC(BZ><=<n=GA'=E-'g0O[_EL*m>'e)po]t7<l7`>Mcqlu<oYM2
1lDdG`1KK27N@U\W\/)9^e<UP_%8kk>ArOYqb%'$NEoQXdp;'#i*6K"%]7Q,Sk[WlUQ1bdWjNcS
.R1#,R=GF[bQVk3/X^$#/dI[r;fiZ&XSK]'?p-r)6R?"jln7rR>tXJMl1f$LYa)6;2+_X?qTW5:
`_Oe?d\Wfgd9+mm6E<DHZ$=cc)'rB=jVqpEMjOVg%#e_"n:ij+SFn8pUP(];f"[YHC++\6Q*Ak3
5gZgaT_GYQBW3@YF]n"3@0G1i4-$kIg,Gg("L\f87pVs->[Yqo\".a1$lO5'#X+V4fnaOcJICje
q<KFjap=H`jq`q/8ufRi<`\b4)@E@!3\%)1iFW:^.&?bekJm%L?_k_H92F`1+4:3mmXX25VE'i'
,2TjpYj.QdS#Y5&-:C9o(:4gp9;'Xd#e-k;=Bu<2DD:\KMA6+sODGhh=/7l2C_eG1Nt:Y][7V8a
Wj$&\_ijG!@%u$+28cN_:=SZ+eEp#\m7u0FCpR&=\J1\i;:;lFl.M#(knem(AY"$-16.n9.)Pua
E:*I4L1JV$Yfcl8oNTAe9piX$HkQ3#n4V]+_(UCGA6F&ipqLpCFFfQA-*adO:=-L:5ZT8g-f$0+
-f$0++g'2SW_]Wh*$@/Bfk9+eVo'#"K'n3p(haXJks">qkn4F6>-u`LRdUoA;U8@Pp;Lt69DL?D
mo%;n[aer]<1d-TYU[Lq"aG&Q^tp(Z$r.Y00fWW]`8QQj'8@kC:)KKU3+?jFiJGGcL*mBp+@TUg
?lB6s\BGBYJ)ef//4)fW"hQZ]L0*A1U>A)>CrPm:i0V85JmSYp$%*B\-1FRcQbb>,?Ne(LHkQ3#
n4V]+_(UCI"MP1i')3dB9Al/Q07mO6^'T0"pa,E&i0V85JmSYp$%*B\-1FRcQbb>,?Ne(LHkQ3#
n4V]+_(UCI"MP1i')3dB9Al/Q07k`1^Ckr1nb&)X#@;t$-!=j#`9r$aM8gVNKK^ahHqk7JS0@D^
6fN'?`8M5`_B0GE4spV`:([2j+n7NZic'[ki=Cd^*ts;k-O>)p&GVb=nMinqE/2Bj%uAj(*tn@$
MO+!qoGW:$anrkr:MIe?'8o%%(48k.pmbLW34%UaB>ifUM8c)#M`rL(Hql6fS6>AAZf5t;`8]+"
`Ldg%4sq+n:+Z11=n+JXic/VLim3J#T+d,H-Ph))/GP$T5hoIQIO+bAj6J&9?8>d#O_\H%`X8_i
a7Sh$_o0pcWAMU<q3ElfKX\"LZs*YY(3D0tdW?P6I9&PC75mUN<<ohA9OQ;U$7XQ4Nb/%\#V9BX
X+=bNZD.Y+3/W`pA63ODO@#pS`Ades^!VR(ZNju755D1O#V(&)?M!OSrrCfa9Jl=ZL0*A1U>A)>
CrPE\bP<,pJH9IO3p::j:)q4gnGoH*acT%%B!HcXoUp.[JuHPk?P.]aW.6pi;=oT6MMbFDY^JUR
EY)ap3C8g7>S$l]_=bI<%4f.=cna--/3I##J0BVDD-$7f9"`>YXMrNe*9p[.Q=tOC!4gL2TM*XH
1k@<[Zg@8_!8G%X2"JV?=5m#MhEJ5]`Ut6YaOW\BZld8:NZ#GeLgQtT^,bq8F7/hdh=8h'j.CP9
1UmY)ZVHW[NmX8p[i5J#($^/bT7=mFmuDhR*;dH1pO%&MpugK'cb&50GK2o9Nd]e)qn>)bHun`N
iht]1N`^'\cS,7/Pf$9J=Clq,qCUan-Hn*RjnsqiE`$TRh"l?6n-jp4VN\2]&JU_06p_&O!S/=/
lA7j.VTg+'c$$UVCQY]@g,-Zt0FMS5`BbB7oH[HAo;V@n.YhJU1#GLL<6g@d(00cDZ$8"8ke3&Y
XV#gmiU&/R'`cgq)TQ-\22@E6k#G^T$'&0>""U1hQl=Yd(;Y0bbX"Q,3`I+6]*ETD9E9uV>.p:7
1_@NAX^9:\ZpGNNFNLWVhC2"tY*N5eJ)k?365n1VbPqQ[jY50,()^J95)X[^ag2AX\UPj!/7<$j
IY;E4F_!/uOW,9.!%QU&2_,ID+bCCgcE)8]-(pic*%i3jQ_]eg\,7&.!D>(XJGu8F_@em3,M9SO
9:3[0-o=fP2^BEnN1J]fECnXdOJ*&P\abMcn"+*T@+/8lmM%;l-Bn^o!j5UI5le#*k8ed259B[I
Z+nd.NhS5.6^48Fdec=80OLQ`Dg5>7YEjCSqhm5:DMq^G?FrP3eLf2^?^(IYUbj6rq`LU0Ndu;?
)B5[G5/2u'58<tn."-<Hqu/!lpU'c\-ko_TION\d?qZhi0oSiZ^8"Ip]Wn_-MacJ5rr<U*m>6;M
SRMp1S`-Fa$KLeCYDRbc'`1'BICHT[:W3**`;3!Bqo?Y!3EoM6S!:fd/6HJ4,l0+QlR'h9)g,rU
,m,/'jeDrZ)5X5YedE(Co`"p.iPUE]2E5[7_hS^ACiCGfo4,fN*&qq=Ah(%pBA)A`UK?D8<Ei(\
!`gU4JH]>%1<rj%PjmH,6=)8nd",*C<`K?d@>9RcDtK;E<!cM#^T?4f)L5f0/+G"7D]`+?@e#WC
r.&%SB:u`a$M2u13+]$Fg"OFL!FW43ZN5\//5-\ZOA[e=(_?nR.;Mik3LSBK.m6e&dossd!/h"b
Qar*&8tVbV[[1]u37efZ,pe+[g78<frKg`ATpJ3Tmt3Bo9E5:_8#EU!koiJH]1$Kl>;%R"!8^=W
YOPK\Cb_.nF*18Q,DdLS-8l?Oo[A3(ZMspjFCV?\BA)AX$I=<,k8NQEFr5@KoSO39P,1d%!]d,]
Yf9n":KXASk>:/EncF8`$)k,QWF+aZPq#c4O6\_RL7VMOb5=j'>K>;hR(Qt?IjOAX/nUj#aaj#L
0NUR6Pa!RW9nmg[("JRgqJi4.XaaK/7gMD[9?Vs)+i&XJB73BHqnW'N/a*t7qOOKK_GF<4)"_p;
iqP)t/9(HS9N7=NQ.02KNeSjZ,dpkVRDV=mR*mYg=t6bb\iB5Mlnfp.Au2opno`A3?ks#I>GhJ5
gCR1CJ(Ei(<Z9;jarL7H`U+;cL8E,iMV"`q=1#iNEE,nZ,taFP>f7s-">KmjEMaN.XKe49`&F?B
fLhDZr)BXnV+R";Zhhqh@AfDB1;=HM(@h']AhP#S?cXUf(bJ\rI)DV7)D&BZ_<%>>oK"_WL9p7;
J-r^Z6.1W=E..G19"DiCj/cGhPdRX1KhsT75N8M)JLXar&0OT1E+rDEoS]I"_2+6S6;:2967Ps6
;u6LoXPBZkH"+ZAnL)_&+'CL2nWN#3KDMhX>0-/Hl.s!?J8&\3<_STPJ9b2k,r@4S<h\ehr'Bq?
XL];Wc4^'JL2k'q1k-`[XTqF04Xi_E#.?Xi'H:s>[tX%E]/4Ek17AcT'c@t-otuT!9$3522@HlI
*d>PuHWlAiiM+q+:>;W1!99r#QWW!0,>3cC4`@^*iliXArr<&f%:U"Q3`%?Ybh%k!l4hcISMDm-
0T$`R?Z#PKbsgarQX,RXdd+!G`nD:K>Vm&YIAM!#@3.)k%e447AkuO'fqUm6Yo^;DObX0-]"uh_
C3cb_I1"H+]g"%uW/5(_GCl"%B3f**@BB>gV2Bd-YJa5o(Q7,uK9K-jRLF,Wb0uGK[>_<Y3"!7H
ZkKZ4.0mW_WDFm6177A7@7,rA'G!YZX<B318f"L]#XaBSWDNTp$CH9llSg8ISli5>r(6Nba4<tP
]O\R&-&\]-$=d;Zf8nuC=jdDjWh`gnUY1XD4ge0g+=J*5g8ciGlD!B5QrGeh/Gpg>ZEOgiGPAon
JIM[8C2,6hX.cT6*;=up-)1KD`L+XX+9EGb%"b<J!**r@)DqrPW`>V?^6I1I,+tZ)9iF]+dB[23
gdUsOHKMB,2BiH&SI9ot&I_bYe'u/cL0J',\?XZd0Q%Z:mf<cg!HWTn?>AbS@J4'5^XQCP>Xe<l
Q`b)g=:PaJf[Bd"-qkAQJF:p@#Q`C,\j*Z$5f/DFap5Ycg/-.0T.C1VZ7ploYj73fj8:d,B9^//
oRBbt&6dXJ+I/%q)K\3rgGg#&W%>G0Nj4[^"KEbOgoFqjN5P_\"iNQ%!,gj;?k/*_?f:qa!IGE4
(2X`c!B#SI5Z"^c3j34+9/!mfepJrRQo2U>$\]/-Q#?3i5HNY;)L5f0/+G"7D]`+?@e#WCr/P3q
'3_*5k#`n+)qp47f\"_jp\t50hG\LnZ[$!/rrBXTjdZ8MNf8*hXSY,Ql=t7?O`YJ`!b]puVRmDP
o_4.kUKT_Y!%"]cY*sgtnU];l>Uua']GG:DZ'@fkhQl/VJ)GQZh(:&B["@p8elcrbYX_4tUFQF$
E+&@.BQ`ua9jfl4WE\ZO7+>H"!b?\G1of,G_FnA(eo"Cq4L&=[pljpNO0"g*Gfb"*69;>#`AMtN
pbjRHWbZ3-VYH"(%Y>*u(IH.PVc!i45ZQ89E)LV&U'[JnKH50a?,s%U?Ah^^cK^1fci=)4Jcm#[
Ehoh>5%X$pNe(U2C=PHjOIDCJm))2A[])(YM8P`Pj'ul]Yu<l""4UP">q<:s)RA=Y8DRR=/+Xb6
-)3c3hDSi:O>R(i:g=Lk26_Y7^m(teLDcKL#I$B\?b(rkFK68GGk"]0C<M>X,B\0;YKX4]er9mW
GhItCSgG:*hn(Of#Dfg(7("=i=hP0\WgInnWa=HZ-5A(?.goCeWLS4"H%rZlns\T-O_`Vh9i^)B
cqr,\D,Iu4UbLW4:ImdH7o<WmF:+jePY#i^qSj<qoO\YKJ6A#IFY=<UFJNVP)\VLO2jCeAc/g5Y
r'EPESLf`1<UC;H/ZRqc+"^ukmaiuQ]e1(Z403C7*MR.E@@#A\S!c%soD+l?_bVgcAUYp$/`Z.D
b[*&0^Q=$M(2dGI5<J05"F@0Vh(N:G%\^8>O9O0pY\&\a#DO#GU]g>?dgBf#dp:l^>'"SmrPLA`
_NL(.J.u379@0H1Oh:#m0b"oJraD2K@7a$=Q(nLd21\BM3_NR$VT;9%kmOK<ARPbFJC*1O=A@5u
e11@F(9t(Z[ot@*LktlDT\'X)Yn4<%7Y8D`E*-Md$FeF^i2c<FdK\RkqN_e:[e1!AodU,(;d1,(
!^)^X+V,4#J5']`Zs=L%0\I@A%5g!rOU/OtbLl+&g]jZ;[5J3;Z&%]TBA)B#eD[H.9o">:$I_>C
cfSMj'n%W8+eT$[_u,g/LTY&_9B\)JCSV,Im(&?I#'Il)ijs%c.;AmcR>R@+KuAnI\K$dXZtTf!
.IS]$0?hhE"L(TCdbZ4+YH/=L40`XY*=ZN45nRJ6i2c5a=bheW1hPi'e&rLE?\pt)Gl#Og(Q=\6
jB>!&b6Slu0jl\i;MD0,#eI:F*W!Z%.n'KNrb*a&*s,kZ#Xj7F)]]fhV=8j=TRAMA%_qWVA/$V2
.m`M$!%e@+Mr\uK;S?/QM1d?Vfg;h>T!?\'X>QV_PU8iEMlY8K\dCd6n(nG^/r*RsXc?*>]Kui_
(1JE4TLP$>7^ZHTP6&q(]RN>c'Y<!A'!o3;OqNJGQNEC4d*+L*Fa>bSX<"<HBE;sB@9<[OmjR>d
lR^t0_(liXEYQ(5etXWi)?b#pK<$b3Q3eM#Rh5j!`&6eOm+eHVH"+ZAnL)_&+'CL2nWN#3LdXjn
d\0sKr9c]V0eZ.#Ym;0Jpa"ApNef@m+;kQAgWlo9[oe20WL#j^DX=[?ZF#DL@]T'L6iM2AH$.j;
rr=bl/C8/T/&lJ7bVUOU!J?INkUPOG<A%D@K-uq=Hln^p0Ta_]gmQH[Ln_hN_>upYg?Vni>M2SY
C=;=p2u&f<R?_p=XI+&81g#8o"Y6Ne5-Vm.OrqbZBA*F'$thWPY3W4^NJpF[+;>:PY-jfH>Cs5@
?C+-L^VnXl._$CL?14]_%7Q!)_Hh9+o<'DO-L,8O`Nn##85QQj("'[#ENI_0ca1b,QJWO2_ED9Z
<cp!LWsNcG`$MF0_8J,E<nYsh8(sWIYIh-I2GTh&'+q"iK&"A-G-F\T0F*R]7h18rMq^NM75eF7
+U=l[6;*''eMMsbXa&\;.]_eTd"b"Z8p#AP)QI4,8o<dnMN!unBl;sY'tM]tONlSRU?#>ArrD\\
Pf$9J=Clq,qCUan-HodO>ec@s.!kYAX\S2LEDKZcX$G+hTYr\h`7^A_U]@ul@fHE^=.LI(L/cF7
eBMiMbrr9^K[smJT_>un=e`%GHl2$QfG6eQ@0%L#)Q0ZGVh]dp?fn5u])qds6;gi+g1c/h(X"\>
BZJ8/TdWQ'a2lE:2ZD1SqGp[HDa%X>.4Yqr/r;_"^$:s8%4sOG:G[Wf&\f]p.WqD;r0+@>f1U8Q
UCg>?!1/0ief)l@b#BNnheItS,@hO[UF`*(RDbb[0'^$`=H$BgTddcmW`DtGa%/I41nh$pL/0_^
;AH<'nukZMJIQ9D=I'`"1"H=D6Zgl[eU,hnbRJ_QEl&U"W5=2C\-Yeb8TO)M7CIK,bkXk-$u.:p
irjUlFFFL;c_R_c?(e+gQ>TV14L&=[pljpNO0"g*Gfb"*9qp!<=LW-#dFj0;,*#Q)!Lu(T2,D)@
JD#4Lon-^>D&)sQ?gr[Q=%P!?Tge^-Ubmll+])i!N$.*0dS!uW6MnSs)FP[/W&,/Xrb#fB_ZK,T
:\c\bDc@Fg:5sF_$C>=gCLj@5&e+.A_cZB*?aUmklGHcuGtYq'(hss#AP&$K08H[[;:Sh51[>mP
)PqRc_\>_g\]bW3\n,hG[T8/T:/.r.MCT=O95Q:=KJd=o-WDOra")-W:\22oX2'AD.Aj32jdVLP
:FoUZIO+bAj6J&9?8>d#OLa]mBfhRX@3H:Q)ChJhmup_5'Mb&gP"koWg,7-5d^hm2"-C)J<Z!W;
bd.0h\hnhPr'.u\88hau]a)K]I2faSI;SmH`h?;l!ZPpRl8,dT8`)AG4".F^Q$juq4;+%6.8.kH
"m$/MDY@p9rM>mCo\6Mq2:UA9VKef!l"S_rNF``[iCNXn<kcWmA"d21.dhMkD6[JK+)"8tGs`dF
]pf_N['rj^Y>26ZCT4aSVhd'HY?6asX\U_#&>&/'ZO;grAOU9ZC+p%9;e]s:(H:$CUNY105g)Kq
[/2t^gQc-q<,L%`pWA/I*J+Jd=%3dp*c=-rY+;>r5DkeM4X6jq8d^"_$u&N<[FR)KnBr:)P0'qq
^cr4&%0g:!aUo\*TY9LH#WaXlOXm3s/^s?C!H"A+=h.3_o#6>bi_Q<*5-f"Dj!DnE176OBb&=At
Yb'9P-5a@fkSo#3Q%5V>p0%/^7c36f-*U3<TE:9.muR"['%eTZg^'^6HaPC2(1#=:fg`oTBh$O'
Un_BrG>b7RFV0T?#d`$Z#SFLrm>7TP9o3+$Be"h628QHC82@KUM1Y@_ra8/En#st44JS]Ve*/A$
Pm2!>"TXnrH4J?R0lI*CI3P4liOUaL$r&[2)BQ.c(i6k\@F^3C=o?HB!Yj3/dUL@&0Y2gem2`SG
A.u=<,rtt2EgUS&M[Zf-T1-D@AD)m\9:,2[%)(1h`@n!Ma`T2H:4T`hBYd\G+<1U4dog5kVM$VS
*jX&MqRK_MV<7[7l5&4[oX9uBrC(.p^5Qf..N((Uhkeh0=0!2q]\e*BJ!OAFZ[$-4P09nlD_0`^
;aQ(YCTOi,jdVFVX-R]'$>oEo)V/iXTYefE.*aVp$]p/m3A"hm^HI&*.#ft3L9p7;KWD*ARAUV-
dU$=MgU+p$S,LC'n7$*,-Vh-"kV7]*q1H;.,$%K2Q4$6\D/&1IkoR,&Lin"C!#Tfn&oi(HdQfci
-)0"ZHKorf))'(O6W`'fb$h36/2FsQI2;AGP@cHc/ml_k<'1OSXW0O012nY9W]P\*4i(O6D1Vtu
((!mb-*EOs@"LaG'X;u"0)!5naL8@J56\cnj`^.,7@.nG<TXsjN2WS2ecC!'+A`W9L:9PPL&fK#
>M_2N+$EWt.]fcK9<jUGc)%G3LP`(qRKDqiPWsu6Q!pi&>%a<0nI*N+a%2Mf\8C(J-l5i2fc<=.
qa;PqVR9`\YLUF^P8.d&Xg1#eEgu\q!I(kB+2f0pd+i_HB:B.r'#]O;$F:I%:KtHL;*]FIlAAca
h.IA&!3'GB(F4!jV)5X+WLN>-r&(*ZPk%%u-%T,#23q=?XJM%#7mm'eT$[UuYYA3Y;5?Q]"%Ud_
g"H<m@[Xe]6))7A8T.gF-7;HN3Wh=!Fit!!->H$00Vt!RQN6$#8*-5)_bVgcAUYp$/`Z.Db[*&0
^QQ&V$`,]*Ug%3(bY3W-UpXC?&+\SI//^pC%6pKXR^I"*4WmTE;.BN+0DNdq[a6(W.$,j^Ik-gF
]Hk,3X8?9#8Upso02j,mKiqgUErQ,GX':n'6Yl''QmebVOk#2mm.1/V.,%P*UM33GNJU-CULI**
.+jc#8i@t7&rh`;`1pd=Ype7hCe?T3)\S-e7`;'2;6_P%P\bi=Pf$9J=Clq,qCUan-HodO>ecD:
@nt#NWcuMUmoI?Ed-.Gc`Zb/D2(F9gX-dg%>a/X]k)%Qs>`I:ui>JAebrhYV-sDu-iUhlAAHAf7
%oe',WG/I?dFS/'R.1k,`N(h.%nKo%d'F)GUG0t)W0MIa)a-5NR[Dh$AU63-`dDt0!-j!-h*)Hi
n,EAtUG(*'$6RDI)a]sn2*T>>rO\<3:FoUZIO+bAj6J&9?8?Y=i\J[Y!n)a,k\7\)*5jL$.C,9b
1]gc_NBh="h/uNU+#*d7&d)%ELhD!KB-ebYlE^'[<+BSrBM\s!=C=]MMV9m=X#i\kq5?n;O``(i
dK]gaPmEAW=q/[&J<jtk$^X-%#2?I1-5SAI)rg!.#'VDJl$'aGZGha(;6=[iGHZ@Xgm$TYgm$TY
gm$TYgm2hN2^OrVc,c_A--1fY"?rU^J-(.j?i,$rL7VMOb5=j'>K>;hQsQPgq&$7.EkMJ\H516"
JFnH@PcL]rpG;5Mf$CIjF$A`7bkmh&1[A])c`Ng\53@:;qjI17mUt=l@Z*L_96XsZ`D'[Z+rrfW
\Up4aV:>MFIa9\G]9L3//6HJ4,l0+QlR'hj!iiM2V9"1gM/2*N(fQfHVbjb^PEnsH3Fq68Q;1RC
AEB#@:0BSfjcc!*=ZL$SPEnsH/5jbEPjKoRW#ZunYGSN]9FLn3oZE%bGK]PPg31rRS[@d^D*)Id
:>0m?[[jemVenM0gJ6IGe$bgSmAFe_C"lD:G13mjZj"FK)#V@-=5m#MhEJ5]`UHNB*t:t:S<Gr[
E_PP^aYT)m,gJuOP;st19]VV`1QlArc:OOi3@8c?jI++GP%Q&c8Xtu)1f>NMdb.:+]A%A:;Ro]9
;Ro]9;Ro]9;Ro]9;Ro]9;Ro]9;Ro]9;Ro]9;Ro]9;Ro]9;Ro]9;Ro]9;Ro]9;RoVsU'hC5`1KK2
I:V#hi0V85JmSYp$%*B\-1FRcQbb>,?Ne(LHkQ3#n4V]+_(UCI"MP1i')3dB9Al/Q07mO6^'T0"
pa,E&i0V85JmSYp$%*B\-1FRcQbb>,?Ne(LHkQ3#n4V]+_$M?'le2@$b([ZU=/PFZPfLALLUc1G
6lHZfi6ThJ3@aU#Bl8^g,5S_00ZWO2M(&U/PgHlYbc>EZ:5rB6:lKO>QbaFT?\pt)Gl#Og(VqbV
?Ne(LHkQ3#n4V]+_(UCI"MP1i')3dB9Al/Q07mO6^'T0"pa,E&i0V85JmSYp$%*B\-1FRcQbb>,
?Ne(LHkQ3#n4V]+_(UCI"MP1i')3dB9Al/Q07kFM!NBm*`\Z=#%.(J:XE7^NSsGR'=:6WOoOVPA
:f]!bjdN%^%=iE8VeBZ+onb)HSqOmVAqNGrB_7j4VSRGd%:Z1/.F?cj[U0/>AUYp$/`Z.Db[1Le
$%*B\-1FRcQbb>,?Ne(LjHm\3\l3^JktTV$,r\G6Phe"(;fno$:"#N-2bItZ8PRX&V)M"aPhde"
;fno$:"#N-2bItPh'op6FJe:sd[R'l8oBmL.CrH"VWgh'S#&&9DNrs+\l3^b#dDJL8b?6-ekMOG
$%*B\-1FRcQbb>,?Ne(LHk@6bTRrf(Ag*iPo%>jj\#+?*RG3%#D<[?q)A$g=P=aMTB5Qn(\#'7B
eUVPM8'e>N1Ucr$gXA6&9^TMKYfd'b&nIF6#HDt(RG3%#D<[V#VKUgagNmLLl(,;\G2AYAH=q*Z
S[YJ>hO3,EB5Qn(\#+?*RG3%#D<[V#VKUgagNmLLl(,;\G2AYAH=q*ZS[YJ>hO3,EB5Qml/B3FP
g+5"o&q(Pcooiu@JmSYp$%*B\-1FRcQbb>,?NdUk<%le7UVc8&rLZg[Qfe+1k4tA+q36,0/,oUU
l+]"Oh_P,e0bl23IU^93kN6-@k$OV??^p1bS)t%a1rJnr[f.A:IW(X'Djc&mR=9(BIW(X'Djc&m
R=9(BIW(X'Djc&mR=9(BIW(X'Djc&mR=9(BIW(X'Djc&mR=9(BIW(X'Djc&mR=9(BIW(X'Djc&m
R=9(BIW(X'Dj[34eGR8!eJ;$1/2FsQI2;AGP@cJ"/g'$SBgl,uCL7C$CA'7-)Z;9'J=6d3U=L3I
QRT4o@G/aO?)4#-7i6=(!p*,@;g$Po5;T9\!l`MFAbL6o;bG",BCQV7Q!1sd./^=MKiAGrBN@ZO
6?7WC&9Y^X-1[pG9fn:\[47VQU:;#D^>5O:GSI$i61m#/;_t;A`Y2O.N^$5t$M'S4bE\ko!uY8t
jNu`c`.9L-VNXp\\BBUf.hL?8X5)ldcW%4rLp=ck)kH*K7c4uc_+o?m._n)E'qq6iGb5l]iMrQP
O-g;%OAc-=&[\efMs#)e3%HR*Ph%ebV+alG/2c[f)@Ri1Y:eSuFde,:28)de9Q0Xd93X;#8i1[c
nj=hOj_aj^J4eBA6(WcVS,%Xe"k?9RMTlFl5ZL@/NIpO+%_:I1=fDV5eZOs$=@?t*Fi#]2=>$\Y
T:c`Fp,#cVicY'kZ5@>fBl_KnY59#:!5Lm8l5$VbhcWQ%HH$=*MK3Xt$2($C76!*rJ+pN/FV>3H
Z!ipmPN]K:XICql'(#<:14W]<6qE.95%j:g&mU.rC-QO>-U;NAr_#AV7;C?$YlOF*[28DL%<.b<
1q\:ZNklFlrSe3VNI2uIUaF8M+,gG]@aapCMN7E0M367YC4cLdRrr=GVZa<N++b^p!")SL=eVQZ
m\D2Q5TbpiM3_kl/@1,iR_rfTY(O]Bi!\LYXBV'WH<u`':L<3a?S285+LV_3TK6kQYcU_Y1gfDO
MLqBa##lNZ1G\O"j(RI]>.JMd=@"^5W+WiMjJ")g)B&\nI)?+gTVHm;N+"*p04jc>0D,L%TL!XG
?!_:2IWG-hZ+nerK)1AP<7arr"@t?6F%K3A=sCH*1&Gh((R=hj(sXd.@3EjVL6A)Yd(n-j0f6"e
Z$fk/6+-]U-8CG-)-H`XpSM"nHp;W22\'G-Lmkj>1>jTQ6X\5fC@q*;qPp[j%"?rM7]f!(_+VO5
mTEL`dqIcMeE+6r4_Ja,S\s$&%p@[NB5mO7_q'#B=kl/QE:od>eoqX-gc]:hoo0GW=LsNP4L&=[
pljpNO0"g*HkQ3#n4V]+_(UCI"MP1i')3eqcLj/MiY.,C+ZP/7'8TC,3/$9)Le]*QK]3Z$:*DTM
iY.,C+ZP/7'8TC,3/$9)Le]*QK]3Z$:*DTMiY.,C+ZP/7'8TC,3/$9)Le]*QK]3Z$:*C=OU?^61
AUYp$/`Z.Db[1Le$%*B\-1FRcQbb>,?Ne(LHkQ3#n4V]+_(UCI"MP1i')3dB9Al/Q07mO6^'T0"
pa,E&i0V85JmSYp$%*B\-1FRcQb`s]V8*::@W:MSiQmq0T/26dB+B=7*;Q*bo/LgR3N'Gfbe=@7
:390)*;Q*bo/LgRE9GI(c^D\C1P\/,%XcE#@Ho17d:&=8PN]K:XICql')3dB9Al/Q07mO6^'T0"
pa,E&i0V85JmSYp$%*B\-1FRcQbb>,?Ne(LHkQ3#n4V]+_(UCI"MP1i')3dB9Al/Q07mO66Z!%2
VN[U0*cr=(65TGs^b17uIc>n_VVkJ<@MK]'REe5V@)0J0G/bT6kt@EkQ5=[\DE^>31AE$S7J,o6
cU8GW94F?E1]!+_$NaWj'5EO@>sF8k):T;]U,!1l,s+!YXq/2.UQTFtpkoQa`1KK2I:V#hi0V85
JmSYp$%*B\-1FRcQbb>,?Ne(LHkQ3#n4V]+_(UCI"MP1i')3dB9Al/Q07mO6^'T0"pa,E&i0V85
JmSYp$%*B\-3RB[^Q7kr^nmK%M11S_`F6>o$LSh^XVjt#=5f$3rrAFZV(Y?7$KC?RT$M'g@OqLn
5>Y\=7*ai2A?gLo!]U,ZJ&9?Z?jgkAm^cZE'Hs(6g#=mscq[9JUK*ekAnuV<^7.fM\c[a;;O(@_
n8Lt0=7h!['WI9eYfcl8oNTAe9piX$HkQ3#n4V]+_(UCI"MP1i')3dB9Al/Q07mO6^'T0"pa,E&
i0V85JmSYp$%*B\-1FRcQbb>,?Ne(LHkQ3#n4V]+_(UBjB'NZOl,GH:@i.[kGD=Y7_(*<%g=:]%
N+3^E0kWI_%1'2\r(6Nba'"QTDNrs+\l3^JktTTqV)M"aPhde";fno$:"#N-2bItPh'op6FJe:s
d[R'l8oBmL.CrH"VWgh'S#&&9DNrs+\l3^JktTTqV)M"aPhde";fno$:"#N-2bItPh'op6FJe:s
d[R'l8oBmL.CrH"<\f+LqCU[[<,Nlf12h7#IaLcX7Y:!k>?q&l[/62sqj4\eQaHXV[/62sqj4\e
QaHXV[/62sqj4\eQaHXV[/62sqj4\eQaHXV[/62sqj4\eQaHXV[/62sqj4\eQaHXV[/62sqj4\e
QaHXV[/62sqj4\eQaHXV[/62sqj4\eQaHXV[/62sqj4\eQaHXV[/62sqj4\eQaHXV[/62sqj4\e
QaHXV[/62sqj4\eQaHXV[/62sqj4\eQaBX-ctH_W<nBOUm/_#[d69O?OVWf9J,e1~>
%%EOF

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

View File

@ -1,626 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Creator:giftoeps
%%BoundingBox: 0.000000 0.000000 383.000000 56.000000
currentscreen 3 1 roll pop pop 60 90 3 -1 roll setscreen
/picstr 383 string def
/screen {383 56 8 [383 0 0 -56 0 56]
{currentfile picstr readhexstring pop} image} def
383 56 scale screen
02FEDE6CBEC3C3C3BEC3BEC3C3C6C3C6C3C3C3C3C3C3C3C3C3C3C3C3BEC3BEC3BEC6BEC6BEC6BEC6
BEC3C6C3C3BEC6C3C3BEC6BEC6BEC6BEC6BEC6C6C3C3C6C6C6C3C3BEC3C6C3C3BEC6C6C3C3BEC6BE
C6C3C3C6C3C6C3C6C3C3C3C6C3C6C6C3C3C3C3BEC6C3C6C3C6C3C3C3C6C3C3C3C3C6C3C3BEC6BEC6
BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6
BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6
BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6
BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6
BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6
BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC3C6C3C6C6C3C3C3C3C3C3C3BEC3C3C3C3
C3C6C3C6C3C3C6C3C6C3C3C3C6C3C6C3C3C3C36CDE6C02
02FEDE6CC3BEC3C3C6C3C6C3C3C3C3C3C3C3C3C3C3C3C3C3C3BEC3C3C6C3C6C3C6C3C6C3C6C3C6C3
C6C3C3C3C3C6C3C3C6C6C3C6C3C6C3C6C3C6C3C3C3C3C3C3C3C3C6C6C3C3C3C6C6C3C3C3C3C6C3C6
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3BEC3C3C6C3C3C3C3C3C3C3C3C3BEC3C3C3C3C3C6C6C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C3C3C3BEC3BEC3C3BEC3C3C6BEC3BEC3
C3C3C3C3C3C3C3C3C3BEC3C3C3C3C3C3C3C3C36CDB6C02
02FEDE6CC6C3C3C3C3C3C3C3BEC3BEC3C3BEC3BEC3BEC6BEC6C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3BEC6C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3BEC3BEC3BEC3C3C3C3C3BEC3C3C3C3C3BEC3C3C3C3
C3C3BEC3C3C3C3C3C3BEC3C3C3C3C3C6C3C3C3C3C3C3C3C3C3C3BEC3C6C3C3BEC3C3BEC3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3BEC3C6C3C6C3C3C6C3C3C3C6C3C6C3C3
BEC3C3C3C3BEC3C3C6C3C3BEC3C3C3C3BEC3C36CDE6C02
02FEDE6CC3C3C3BEC3BEC3C3C6C3C6C3C3C6C3C6C3C6C3C6C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3BE
C3C3C6C3C3BEC3C3C3C3C3C3C3C3C3C3BEC3C3C6C3C6C3C6C3C3BEC3C3C6C3C3BEC3C3C6C3C3C3BE
C3C3C6C3BEC3BEC3C3C6BEC3BEC3C3C3C3C3C3BEC3BEC3BEC3C3C6C3C3C3C3C6C3C3C6C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3BEC3C3C6C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C6C3BEC3C3C6C3C3C3C3C3C6C3BEC3C3C6C3C36CDB6C02
02FEDE6CC3C3C6C3C6C3C3C3C3C3C302020202020259C3C302C3C302C3BEC3BEC3BEC3BEC3BEC6C3
C3C3C3C3C6C3C3BEC3BEC3BEC3BEC3C6C3C3C3C3C3C3C3C3C3C6C3C3C3C3C3C6C3C3C3C3C3BEC6C3
C3C3C3C6C3C6C3C3C3C6C3C6C3C3BEC3BEC3C6C3C6C3C6C3C3C3C3C3C3C3C3C3C3C3C3C3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3C6C3C3C3C3C3C3C3C3C3BEC3BEC3C3C3C3C3C3C3
C3C6C3C3C3C3C3BEC3C3C3C3C6C3C3C3C3C3BE6CDE6C02
02FEDE6CC3C3C3C3C3C3C3BEC3C3C302C3C3C3C3C3C3C3C3BEC3C302C3C6C3C6C3C6C3C6C3C6C3C3
C3BEC3C3C3C3C3C6C3C6C3C6C3C6C3C3C3C3C3C3C3C3BEC3C3C3BEC3BEC3C3C3C3C3BEC3C3C6C3C3
BEC3C3C3C3C3C3C3C3C3C3C3C3C3C6C3C6C3C3C3C3C3C3C3C3C3BEC3BEC3BEC3C3BEC3C3C6C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C3C3C3BEC3BEC3BEC3C3C6C3C6BEC3BEC3BEC3C3
C3C3BEC3BEC3C3C6C3BEC3C3C3BEC3BEC3C3C66CDB6C02
02FEDE6CBEC3C3BEC3C3C6C3C3BEC302C3C3C3C3C3C3C3C655C3C302C3C3C3C3C3C3C3C3C3C3C3C3
C6C3C3BEC3BEC3C3C3C3C3C3C3C3C3BEC3BEC3BEC3C6C3C3BEC6C3C6C3C3BEC3BEC6C3C3C3C3C3C6
C3C3BEC3C3C3C3BEC3C3C3C3C3C3C3C3C3C3BEC3C3C3C3C3BEC6C3C6C3C6C3C3C6C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3BEC6C3C6C3C6C3C3C3C3C3C6C3C6C3C6C3C3BE
C3C6C3C6C3C3C3C3C6C3C3C3C6C3C6C3C3C3C36CDE6C02
02FEDB6CC3C3C3C6C3C3C3C3C3C6C302BEC3BEC3BEC3C3C302C3C302C3C3A63C040A43B9C3C30296
1C021484C3C6AE3C04021A7EC3C302790A0A727212021A7EC6C3AB3904044AB9C6C3C302C3C3C3C3
C3C3C6C3BEC3C3C6BEC3BEC3C3C3C3BEC3C3C6BEC3BEC3C3C6C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3BEC3C3BEC3C3C6C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C6
C3C3C3C3BEC3C3C3C3BEC3C3C3C3C3C3C3C3C36CDB6C02
02FEDE6CC3C3C3C3C3BEC3C3C3C3C3020202020214C3C3C302C3C302C3C31A55B9AE3434C3BE023C
ABBE720CC3C34A43B6BE8A04C3C30259BB7E023CABBE6F0AC3BE1C55B9AE3234C3C3C3C3C3BEC3C3
BEC3C3C6C3C3C3C6C3C6C3C3BEC3C6C3C3C3C6C3C6C3C3C3C3C3C3C3C3C3C3BEC3C3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3C6C3C3C6C3C3C3C3C3C3C3C3C3C3BEC3BEC3C3C3C3C3C3C3C3C3
C3C3C3C6C3C3BEC3C6C3C3BEC3C3C3C3BEC3C36CDE6C02
02FEDE6CC3C3BEC3C3C6C3C3C3C3C302C3C3C3C3C3C3C3C302C3C302C38A12C3C3C3A302B6C602AB
C3C3C302C3C1B2BBC3C19302C3C302BBC3C302B9C3C3C302C38D0CC3C3C3A602B6C3BEC3C3C6C3C3
C6C3C3C3C3C3C3C3C3C3C3C3C6C3C3C3C3C3C3C3C3C3C3C3BEC3BEC3BEC3C3C6C3C3C6C3C6C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C3C3C3C3C3C3C3BEC3BEC3BEC3C3C6C3C6BEC3BEC3BEC3C3BEC3
BEC3C3C3C3C3C6C3C3C3C3C6C3BEC3C3C6C3C36CDB6C02
02FEDE6CC3C6C3C3C3C3C3BEC3BEC302C3C3C3C3C3C3BEC302C3C302C36F0202020202029FC302C3
C3C3C302C3C39B3924324A02C3C302C3C3C302C3C3C3C302C372020202020202A3C6C3C3C3C3C3C3
C3C3BEC3C3BEC3C3C3C3C3C3C3C3BEC3BEC3C3C3C3C3BEC6C3C6C3C6C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3BEC3BEC6BEC6C3C6C3C6C3C3C3C3C3C6C3C6C3C6C3C3C6C3C6
C3C3BEC3C3C3C3C3C3C3C3C3C6C3C3C3C3C3BE6CDE6C02
02FEDE6CC3C3BEC3BEC3C3C6C3C6C302C3C3C3C3C3C3C6C302C3C302C37E1AC3C3C3BE9FC3C302C3
C3C3C302C3C31293C3C3C302C3C302C3C3C302C3C3C3C302C37E1AC3C3C3BE9FC3C3BEC3BEC3C3BE
C3C3C6C3C3C6BEC3BEC3C3BEC3C3C6C3C6BEC3BEC3C3C6C3C3C3C3C3BEC3BEC3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3BEC3C3BEC3C3C6C3C6C3C6C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C6C3C3BEC3BEC3BEC3C3C3BEC3BEC3C3C66CDB6C02
02FEDE6CC3C6C3C6C3C3C3C3C3C3C302C3C3BEC3BEC3C3C302C3C302C3B90A64BBB6432BC3C302C3
C3C3C302C3C30A8DC3AB4A02BBC302C3C3C302C3C3C3C302C3B90A62BBB6432BC3C6C3C6C3C3C6C3
C3C3C3C3C3C6C3C6C3C3C6C3C3C3C3C3C6C3C6C3C3C3C3C3C3C3C3C6C3C6C3C3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3C6C3C3C6C3C3C3C3C3C3C3C3C3C3C3C3C3C3BEC3BEC3C3C3C3C3C3C3BEC3C3C3
C3C3C3C3C6C3C6C3C6C3C3C3C6C3C6C3C3C3C36CDE6C02
02FEDB6CC3C3C3C3C3C3C3C3C3C3C302C3C3C6C3C6C3C3C302C3C302C3C39F2E02043CB2C3C302BE
C3C3C302C3C38A1A021C7E2E1CC302C3C3C302C3C3C3C302C3C39F3202043CAEC3C3C302C3C3C3BE
C3BEC3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3BEC3C3C3C3C3C3C3C6C3C6C3C6C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3
C6C3C6C3C6C3C6C3C3C3C3C3C3C3C3C3C3C3C3BEC3BEC3BEC3C3C6C3C6BEC3BEC3BEC3C3C6C3BEC3
C3BEC3C3C3C3C3C3C3BEC3C3C3C3C3C3C3C3C36CDB6C02
02FEDE6CC3C3BEC3C3BEC3BEC3BEC3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C6C3C3C3C6C3
C3BEC3C3C3C3C1C3C3C3C3C3C3C3C3C3BEC3C3C3BEC3C3C3C3C3C3C3C3C3C6C3C3C3C3C3C3BEC6C6
C6C3C3BEC3C3C3C3C3BEC3BEC3BEC3BEC3C3C3C3BEC3BEC6C3C3BEC3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3BEC3BEC3BEC3BEC3BEC6C3C6C3C6C3C3C3C3C3C6C3C6C3C6C3C3C3C3C6C3C3
C6C3C3BEC3C3C3C3C6C3C3BEC3C3C3C3BEC3C36CDE6C02
02FEDB6CC3C3C6C3C3C6C3C6C3C6C3C3C3C3C3C3BEC3C3BEC3C3BEC3BEC3C3C3C3C3BEC3C3C3C3C3
C3C6C3C3C3C3C3C3C3C3C3C3C3C3C3C3C6C3C3C3C6C3C3C3BEC3C3C3C3C3C3BEC3C3BEC3C3C6C3C3
C3C3C3C6BEC3BEC3C3C6C3C6C3C6C3C6C3BEC3C3C6C3C6C3C3C3C6C3BEC3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3BEC3C3BEC3C3C6C3C6C3C6C3C6C3C6C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3BEC3C3C3C3C3
C3C3C3C6C3BEC3C3C3C3C3C6C3BEC3C3C6C3C36CDB6C02
02FEDE6CBEC3C3C3C3C3C3C3C3C3C3BEC3BEC3C6C3C3C6C3C3C6C3C6C3C3BEC6C3C6C3C3BEC3C3C3
C3C3C3BEC3C3C3BEC3C3C3C3C3BEC3C3C3C3BEC3C3C3BEC6C3C3BEC3C3C3C6C3C3C6C3C3C3C3C3C3
C3C3C3C6C3C6C3C3C3C3C3C3C3C3C3C3C6C3C3C3C3C3C3C3C3C3C3C6C3C3BEC3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3
BEC3C6C3C3C6C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3BEC3BEC3C3C3C3C3C3C6C3C3BEC3C3BE
C3BEC3C3C6C3C3BEC3C3C3C3C6C3C3C3C3C3BE6CDE6C02
02FEDE6CC6C3C3C3C3C3C3C3C3C3F6F9F6F9F6F6F6F6F6F6F602F6F6F6F6F9F6F6F6F6F6F9F6F6F6
F6F6F6F9F6F6F6F9F6F6F6F6F6F9F6F6F6F6F9F6F6F6F9F6F602F9F6F6F6F6F6F6F6F6F6F6F6F6F6
F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F602F6F6F6F6F6F6F6F6F6F602F6F9F6F9F6F9F6F9F6
F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F902F9F6
F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6
F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6
F9F6F9F6F9F6F9F6F9F6F9F6F9F6F902F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6
F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6F9F6
F9F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F9F6F9F6F6F6F6F6F6F6F6F6F9F6F6F9
F6F9F6F6F6F6F6F902BEC3C3C3BEC3BEC3C3C66CDB6C02
02FEDE6CC3C3BEC3BEC3BEC3BEC3F6D6D6D6D6D6D6D6D6D68402F6D6D6D6D6D6D6D6D6D6D6D6D6D6
D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D68A02F6D6D6D6D6D6D6D6D6D6D6D6D6D6
D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D68402F6D6D6D6D6D6D6D6D68A02F6D6D6D6D6D6D6D6D6
D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D68A02F6D6
D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6
D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6
D6D6D6D6D6D6D6D6D6D6D6D6D6D68A02F6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6
D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6
D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6
D6D6D6D6D6D6D68A02C3C3C3C6C3C6C3C3C3C36CDE6C02
02FEDB6CC3C3C6C3C6C3C6C3C6C3F6D6C3BEC3C3BEC3C3C38A02F6D6C3C3C3C3C3C3C3C3BEC3BEC3
C3C3BEC3C3C3C3BEC3BEC3C3C3BEC3C3C3C3C3C3C3C3C3C38A02F6D6C3C3C3BEC3BEC3BEC3BEC3BE
C3C3C3BEC3BEC3BEC3BEC3BEC3C3BEC3C3C38A02F6D6BEC3BEC3C3C3C38A02F6D6C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3BE8A02F6D6
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3BE8A02F6D6C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3C3C3C3C3BEC3BEC3BEC3C3C3C3C3C3C3C3C3
C3C3BEC3C3C3BE8A02BEC3C3C3C3C3C3C3C3C36CDB6C02
02FEDE6CC3C3C3C3C3C3C3C3C3C3F6D6C6C3C3C6C3C3C3C38A02F6D6C3C3C3C3C3BEC3C6C3C6C3C3
BEC6C3C3BEC3C6C3C6C3C3C3C6C3C3BEC3BEC3BEC3C3C3C38A02F6D6C3C3C6C3C6C3C6C3C6C3C6C3
C3BEC6C3C6C3C6C3C6C3C6C3C3C6C3C3C3C38A02F6D6C3C6C3C3BEC3C38A02F6D6C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C38A02F6D6
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C38A02F6D6C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C6
C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C3BEC3BEC6C3C6C3C6C3C3BEC3BEC3BEC3C3BE
C3C6C3C3C3C3C38A02C3C3BEC3C3C3C3BEC3C36CDE6C02
02FEDE64C3C3C3C3C3C3C3BEC3C3F6D6C3C3C3C3C3C3C3C38A02F6D6BEC3BEC3C3C6C3C3C3C3C3C3
C6C3C3C3C6C3C3C3C3BEC3C3C3C3C3C6C3C6C3C6C3C3C3BE8A02F6D6C3C3C3C3C3C3C3C3C3C3C3C3
C3C6C3C3C3C3C3C3C3C3C3C3C3C3BEC3C3C38A02F6D6C3BEC3C3C6C3BE8A02F6D6C3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3C3C3C3C18A02F6D6
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3C3C3C3C18A02F6D6BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3
BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3BEC3C3C6C3C6C3C3C3C3BEC3C3C6C3C6C3C6C3C3C6
C3C3C3C3C3C3C18A02C3C3C6C3BEC3C3C6C3C36CDB6C02
02FEE36CC3BEC3BEC3BEC6C3C3BEF6D6C3BEC3BEC3BEC3C38A02F6D6C3C6C3C3C3C3C3BEC3C3BEC3
C3C3C3C3C3C3C3C3C6C3C3BEC3BEC3C3C3C3C3C3C3BEC6C38A02F6D6BEC3BEC3C3C3C3C3C3BEC3C3
C3C3C3C3C3C3C3C3C3C3C3C3BEC6C3C3C3C38A02F9D6C6C3C3C3C3C3C38A02F6D6C6C3C6C3C6C3C6
C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C3BEC6C3C38A02F6D6
C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6
C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6
C3C6C3C6C3C6C3C6C3C3BEC6C3C38A02F6D6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6
C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C3BEC3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C6C3C3C3C3C3C3C3C3C3C6C3C3C3C3C3C3C3C3C3C3C3
C3C3C3BEC3C3C38A02C3C3C3C6C3C3C3C3C3BE6CDE6C02
02FEDE6CC3C6C3C6C3C6C3C3C3C6F6D6C3C6C3C6C3C6C3BE8A02F6D6C3C3C3C3BEC3C3C6C3C3C6C3
BEC3C3BEC3BEC3C3C3C3C3C6C3C6C3C3C3C3BEC3C3C6C3C18A02F6D6C6C3C6C3BEC3BEC3C3C6C3C3
C3BEC3BEC3BEC3BEC3BEC3C3C6C3C3C3C3BE8A02F6D6C3C3C3C3C3C3C18A02F6D6C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C6C3C3C18A02F6D6
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C6C3C3C18A02F6D6C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C6BE
C3BEC3BEC3BEC3BEC3BEC3BEC3BEC3BEC3C3C3C3C3C3C3C3C3BEC3C3C3C3C3C3C3BEC3BEC3C3BEC3
BEC3C3C6C3C3BE8A02BEC3C3C3BEC3BEC3C3C66CDB6C02
02FEDE6CBEC3C3C3C3C3C3C3C3C3F6D6C3C3C3C3C3C3C3C38A02F9D6BEC3C3C6C3C3C3C3C3C3C3C6
C3C3C6C3C6C3C3BEC3C3C3C3C3C3C3BEC3C6C3C3C3C3C3C38A02F6D6C3C3C3C6C3C6C3C3C3C3C3BE
C6C3C6C3C6C3C6C3C6C3C3C3C3C3C3C3C3C38A02F6D6C3C3BEC3C3C3C38A02F6D6BEC3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C38A02F9D6
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C38A02F9D6C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C6C3
C6C3C6C3C6C3C6C3C6C3C6C3C6C3C6C3C3BEC3C3BEC3BEC3C6C3C3BEC3C3BEC3C6C3C6C3C3C6C3C6
C3C3C3C3C3C3C38A02C3C3C3C6C3C6C3C3C3C36CDE6C02
02FEDB6CC3C3C3C3C3C3BEC3C3BEF38A8A8A8A8A8A8A8A8A8A02F38A8A8A8A8A848A848A8A8A8A8A
8A8A8A8A8A8A8A8A8A8A8A8A848A8A8A8A8A8A8A8A8A8A8A8A02F6848A8A8A8A8A8A848A848A8A8A
8A8A8A8A8A8A8A8A8A8A8A8A848A8A8A8A8A8A02F6848A8A8A8A8A8A8A8A02F68A8A8A8A848A848A
848A848A848A848A848A848A848A848A848A848A848A848A848A848A848A8A848A8A8A8A8A02F68A
848A848A848A848A848A848A848A848A848A848A848A848A848A848A848A848A848A848A848A848A
848A848A848A848A848A848A848A848A848A848A848A848A848A848A848A848A848A848A848A848A
848A848A848A848A8A848A8A8A8A8A02F68A848A848A848A848A848A848A848A848A848A848A848A
848A848A848A848A848A848A848A848A848A848A848A848A848A848A848A848A848A848A8A8A8A8A
8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A848A8A8A8A8A8A8A
8A8A8A8A8A8A8A8A02BEC3C3C3C3C3C3C3C3C36CDB6C02
02FEDE6CC3C3C3BEC3C6C3C3C6C60202020202020202020202020202020202020202020202020202
02020202020202020202020202020202020202020202020202020202020202020202020202020202
02020202020202020202020202020202020202020202020202020202020202020202020202020202
02020202020202020202020202020202020202020202020202020202020202020202020202020202
02020202020202020202020202020202020202020202020202020202020202020202020202020202
02020202020202020202020202020202020202020202020202020202020202020202020202020202
02020202020202020202020202020202020202020202020202020202020202020202020202020202
02020202020202020202020202020202020202020202020202020202020202020202020202020202
02020202020202020202020202020202020202020202020202020202020202020202020202020202
020202020202020202C3C3BEC3C3C3C3BEC3C36CDE6C02
02FEDE6CBEC3C3C6C3C3C3C3C3BE8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A
8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A
8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A
8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A
8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A
8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A
8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A
8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A
8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A
8A8A8A8A8A8A8A8AF6C3C3C6C3BEC3C3C6C3C36CDB6C02
02FEDE6CC3C3C3C3C3C3BEC3C3C38A02020202020202020202020202020202020202020202020202
02020202020202020202020202020202020202020202020202020202020202020202020202020202
02020202020202020202020202020202020202020202020202020202020202020202020202020202
02020202020202020202020202020202020202020202020202020202020202020202020202020202
02020202020202020202020202020202020202020202020202020202020202020202020202020202
02020202020202020202020202020202020202020202020202020202020202020202020202020202
02020202020202020202020202020202020202020202020202020202020202020202020202020202
02020202020202020202020202020202020202020202020202020202020202020202020202020202
02020202020202020202020202020202020202020202020202020202020202020202020202020202
02020202020202ABF6C3C3C3C6C3C3C3C3C3BE6CDE6C02
02FEDE6CBEC3C3BEC3C3C6C3C3C18A02FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEABF6BEC3C3C3BEC3BEC3C3C66CDB6C02
02FEDE6CC3C3C6C3C3C3C3C3C3C38A02FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEABF9C3C3C3C6C3C6C3C3C3C36CDE6C02
02FEDE6CC3C3C3C3C3C3C3C3C3C18A02FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEABF6BEC3C3C3C3C3C3C3C3C36CDB6C02
02FEDE6CC3C3BEC3BEC3BEC6C3C38A02FEFEFEFEFEFE101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101010101010
10101010101010101010101010101010FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEABF9C3C3BEC3C3C3C3BEC3C36CDE6C02
02FEDE64C3C3C6C3C6C3C6C3C3BE8A02FEFEFEFEFEFE101010C210FE101010101010101010101010
10101010101010101010101010101010101010101010101010C210101010101010101010101010FE
1010FE10101010101010101010101010101010C210101010101010101010C21090FB3D10FE101010
101010FE1010101010101010101010101010C21010101010101010101010C2101010101010C21010
10101010FE1010101010101010101010101010101010101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010FE1010101010
101010101010101010101010101010C2FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEABF6C3C3C6C3BEC3C3C6C3C36CDB6C02
02FEE36CC3C3C3C3C3C3C3C3C3C38A02FEFEFEFEFEFE1010568210FE101010101010101010101010
10101010101010101010101010101010101010101010101056821010101010101010101010101010
1010FE1010101010101010101010101010105682101010101010101010568210FB2D1010FE1010FE
101010FE101010101010101010101010197AFE101010101010101010197AFE101010101056821010
10101010FE1010101010101010101010101010101010101010101010101010101010101010101010
101010101010101010101010101010101010FE1010101010101010101010FE101010101010101010
10101010101010101010101010105682FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEABF6C3C3C3C6C3C3C3C3C3BE6CDE6C02
02FEDE6CC3C3C3C3C3C3C3C3C3C18A02FEFEFEFEFEFE1010A62D10FE101010101010101010101010
101010101010101010101010101010101010101010101010A62D1010101010101010101010101090
1010FE101010362010101010101010101010A62D101010101010101010A62D10FE101010FE1010FE
101010FE10101036201010101010103DF6F3FE10101010101010103DF6F3FE1010101010A62D1010
10101010FE1010101010101010101010101010101010101010101010101010101010101010101010
101010101010101010101010101010101010FE1010101010101010101010FE101010901010101010
1010101010101010101010101010A62DFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEABF6BEC3C3C3BEC3BEC3C3C66CDB6C02
02FEDE6CBEC3C3BEC3BEC3C3C3C38A02FEFEFEFEFEFE1010C21010FE56DEFEE056101012A1F3F39A
121010FE6AE8F37272E0FEE660101028B6F6F3A119101010C21010FE6AE8F37272E0FEE6601010FE
1010FE10109AD6201028B6F6F3A119101010C210101090E8FBBA2D1010C210FEFEFE4510FE10FEFE
FE3D10FE10109AD620101010101010101010FE1010101010101010101010FE1010101010C210107A
DEFEE06AFE101012A1F3F39A1210101090E8FBBA2D10FE10101010FE1010FE6AE8F37272E0FEE660
101028B6F6F3A1191010FE45D6FEE05610FEFEFE3D1020B2F3FEDE6010FEFEFE3D10FE101012A1F3
F39A121010FE45D6FEE056101012C210FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEABF9C3C3C3C6C3C6C3C3C3C36CDE6C02
02FEDB6CC3C3C3C6C3C6C3C3C3BE8A02FEFEFEFEFEFE1054821010FEBF2D1272F3101094BA2020BF
941010FE901960FEB22D1272F31010DE9A1928BFBA101056821010FE901960FEB22D1272F31010FE
1010FE10A1D1201010DE9A1928BFBA10105682101082BF2819B6BF1054821010FE101010FE1010FE
101010FE10A1D12010101010101010101010FE1010101010101010101010FE101010105682107AD6
3D103DD6FE101094BA2020BF94101082BF2819B6BF10FE10101010FE1010FE901960FEB22D1272F3
1010DE9A1928BFBA1010FEB62D1272F31010FE101010A6A6191056F61010FE101010FE101094BA20
20BF941010FEB62D1272F31010548210FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEABF6BEC3C3C3C3C3C3C3C3C36CDB6C02
02FEDE6CC3C3C3C3C3C3C3C3C3C38A02FEFEFEFEFEFE10A32D1010FE2D101010FE1010E631101031
E61010FE191010FE20101010FE1054EB10101031FE1910A32D1010FE191010FE20101010FE1010FE
1010FEA6FE4F101054EB10101031FE1910A32D1010E6311010286010A32D1010FE101010FE1010FE
101010FEA6FE4F1010101010101010101010FE1010101010101010101010FE10101010A32D10E63D
1010103DFE1010E631101031E61010E6311010286010FE10101010FE1010FE191010FE20101010FE
1054EB10101031FE1910FE2D101010FE1010FE1010102819101045FE1010FE101010FE1010E63110
1031E61010FE2D101010FE1010A32D10FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEABF9C3C3BEC3C3C3C3BEC3C36CDE6C02
02FEDE6CC3C3C3C3BEC3C3C3C3C18A02FEFEFEFEFEFE10C2101010FE10101010FE1010FE12101010
FE1010FE101010FE10101010FE1072FEFEFEFEFEFE3610C2101010FE101010FE10101010FE1010FE
1010FEBAA6D1101072FEFEFEFEFEFE3610C2101010FE121010101010C2101010FE101010FE1010FE
101010FEBAA6D1101010FEFEFE1010101010FE1010101010101010101010FE10101010C21010FE12
10101012FE1010FE12101010FE1010FE121010101010FE10101010FE1010FE101010FE10101010FE
1072FEFEFEFEFEFE3610FE10101010FE1010FE1010103DB6D0C7A1FE1010FE101010FE1010FE1210
1010FE1010FE10101010FE1010C21010FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEABF6C3C3C6C3BEC3C3C6C3C36CDB6C02
02FEDE6CC3BEC3C6C3C3BEC6C3C38A02FEFEFEFEFEFE5482101010FE10101010FE1010E62D101031
E61010FE101010FE10101010FE1060DE1010101936105482101010FE101010FE10101010FE1010FE
1010FE1220EB7A1060DE1010101936105482101010E62D10102D905482101010FE101010FE1010FE
101010FE1220EB7A10101010101010101010FE1010101010101010101010FE10101054821010E03D
1010103DFE1010E62D101031E61010E62D10102D9010FE1010102DFE1010FE101010FE10101010FE
1060DE10101019361010FE10101010FE1010FE101010E648101010FE1010FE101010FE1010E62D10
1031E61010FE10101010FE1054821010FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEABF6C3C3C3C6C3C3C3C3C3BE6CDE6C02
02FEDE6CC3C6C3C3C3C6C6C3C3BE8A02FEFEFEFEFEFEA131101010FE10101010FE10109ABA2020BA
941010FE101010FE10101010FE1020EE7A1920A6C710A131101010FE101010FE10101010FE1010FE
1010FE101060F62D20EE7A1920A6C710A13110101090BA2019B2C2A131101010FE101010FE1010FE
191010FE101060F62D101010101010101010FE1010101010101010101010FE101010A13110107AD6
3D1036D0FE10109ABA2020BA94101090BA2019B2C210F36A102DBFFB1010FE101010FE10101010FE
1020EE7A1920A6C71010FE10101010FE1010FE191010EE54102D9AFE1210FE191010FE10109ABA20
20BA941010FE10101010FE10A1311010FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEABF6BEC3C3C3BEC3BEC3C3C66CDB6C02
02FEDE6CC3C3C3BEC3C3C3C3C3C38A02FEFEFEFEFEFEC710101010FE10101010FE101019A1F3F3A1
121010FE101010FE10101010FE10103DC7FBF6B22012C710101010FE101010FE10101010FE1010FE
1010FE101010BABF103DC7FBF6B22012C710101010109AF3F9BF2DC710101010FE101010FE1010C7
FE3D10FE101010BABF101010101010101010FE10101010FE101010101010FE101012C7101010107A
E0FEE66AA6101019A1F3F3A1121010109AF3FBBF281060E0FEE056A61010FE101010FE10101010FE
10103DC7FBF6B2201010FE10101010FE1010C7FE3D1056E0FEE060C7D610C7FE3D10FE101019A1F3
F3A1121010FE10101010FE12C7101010FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEABF9C3C3C3C6C3C6C3C3C3C36CDE6C02
02FEDB6CBEC3C3C6C3C3C3C3C3C18A02FEFEFEFEFEFE101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101010101010
10101010101010101010101010101010FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEABF6BEC3C3C3C3C3C3C3C3C36CDB6C02
02FEDE6CC3C3C3C3C3BEC6C3C3C38A02FEFEFEFEFEFE101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101010101010
10101010101010101010101010101010FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEABF9C3C3BEC3C3C3C3BEC3C36CDE6C02
02FEDE6CC3C3BEC3C3C6C3C3C3BE8A02FEFEFEFEFEFE101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101010101010
10101010101010101010101010101010FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEABF6C3C3C6C3BEC3C3C6C3C36CDB6C02
02FEDE6CC3C6C3C3C3C3C3C3C3C38A02FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEABF6C3C3C3C6C3C3C3C3C3BE6CDE6C02
02FEDE6CC3C3C3C3BEC3C3C3C3C18A02FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEABF6BEC3C3C3BEC3BEC3C3C66CDB6C02
02FEDE6CC3C3BEC6C3C3BEC6C3C38A02FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEABF9C3C3C3C6C3C6C3C3C3C36CDE6C02
02FEDB6CC3C3C6C3C3C6C6C3C3C18A02FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEABF6BEC3C3C3C3C3C3C3C3C36CDB6C02
02FEDE6CBEC3C3C3C3C3C3C3C3C38AABABABABABABABABABABABABABABABABABABABABABABABABAB
ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB
ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB
ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB
ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB
ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB
ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB
ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB
ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB
ABABABABABABABA6F9C3C3BEC3C3C3C3BEC3C36CDE6C02
02FEDB6CC6C3BEC3C3C3C3C3C3C3F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6
F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6
F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6
F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6
F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6
F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6
F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6
F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6
F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6
F6F6F6F6F6F6F6F9F6C3C3C6C3BEC3C3C6C3C36CDB6C02
02FEDE6CC3C6C3C3BEC3BEC6C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C6C3C3C3C3C3BE6CDE6C02
02FEDB6CC3C3C3C3C6C3C6C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3BEC3C3C3BEC3BEC3C3C66CDB6C02
02FEDE6CBEC3C3C3C3C3C3C3BEC3BEC6C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3
C3BEC6BEC6BEC3C3C6C3C3C3C6C3C6C3C3C3C36CDE6C02
02FEDB6CC3C3C3BEC3BEC3C3C6C3C6C3BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6
BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6
BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6
BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6
BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6
BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6
BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6
BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6
BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC6BEC3
C6C6C3C6C3C6C3C3C3BEC3C3C3C3C3C3C3C3C36CDB6C02
showpage

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 491 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 404 B

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 651 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 640 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -1,113 +0,0 @@
/**
\page advanced 10 - Advanced FLTK
This chapter explains advanced programming and design topics
that will help you to get the most out of FLTK.
<A NAME="multithreading"> </A> <!-- For old HTML links only ! -->
\section advanced_multithreading Multithreading
FLTK supports multithreaded application using a locking mechanism
based on "pthreads". We do not provide a threading interface as part of
the library. However a simple example how threads can be implemented
for all supported platforms can be found in <tt>test/threads.h</tt>
and <tt>test/threads.cxx</tt>.
To use the locking mechanism, FLTK must be compiled with
<tt>--enable-threads</tt> set during the <tt>configure</tt>
process. IDE-based versions of FLTK are automatically compiled with
locking enabled if possible.
In <TT>main()</TT>, call
<a href="Fl.html#Fl.lock"><TT>Fl::lock()</TT></A> before
<A HREF="Fl.html#Fl.run"><TT>Fl::run()</TT></A> or
<A HREF="Fl.html#Fl.wait"><TT>Fl::wait()</TT></A>
to start the runtime
multithreading support for your program. All callbacks and derived
functions like <tt>handle()</tt> and <tt>draw()</tt> will now be properly
locked:
}
\code
int main() {
Fl::lock();
/* run thread */
while (Fl::wait() &gt; 0) {
if (Fl::thread_message()) {
/* process your data */
}
}
}
\endcode
You can now start as many threads as you like. From within
a thread (other than the main thread) FLTK calls must be wrapped
with calls to <a href="Fl.html#Fl.lock"><tt>Fl::lock()</tt></a>
and <a href="Fl.html#Fl.unlock"><tt>Fl::unlock()</tt></a>:
\code
Fl::lock(); // avoid conflicting calls
... // your code here
Fl::unlock(); // allow other threads to access FLTK again
\endcode
You can send messages from child threads to the main thread
using <a href="Fl.html#Fl.awake"><tt>Fl::awake(msg)</tt></a>:</p>
\code
void *msg; // "msg" is a pointer to your message
Fl::awake(msg); // send "msg" to main thread
\endcode
You can also tell the main thread to call a function for you
as soon as possible by using
<a href="Fl.html#Fl.awake"><tt>Fl::awake(callback, userdata)</tt></a>:</p>
\code
void do_something(void *userdata) {
// running with the main thread
}
// running in another thread
void *data; // "data" is a pointer to your user data
Fl::awake(do_something, data); // call something in main thread
\endcode
FLTK supports multiple platforms, some of them which do not
allow any other but the main thread to handle system events and
open or close windows. The safe thing to do is to adhere to the
following rules for threads on all operating systems:
\li Don't <tt>show()</tt> or <tt>hide()</tt>anything that contains
widgets derived from <tt>Fl_Window</tt>, including dialogs, file
choosers, subwindows or <tt>Fl_GL_Window</tt>s
\li Don't call <tt>Fl::wait()</tt>, <tt>Fl::flush()</tt> or any
related methods that will handle system messages
\li Don't start or cancel timers
\li Don't change window decorations or titles
\li The <tt>make_current()</tt> method may or may not work well for
regular windows, but should always work for <tt>Fl_GL_Window</tt>s
to allow for high speed rendering on graphics cards with multiple
pipelines
See also:
<a href="Fl.html#Fl.awake">void awake(void *message)</A>,
<a href="Fl.html#Fl.lock">void lock()</A>,
<a href="Fl.html#Fl.thread_message">void *thread_message()</A>,
<a href="Fl.html#Fl.unlock">void unlock()</A>.
\htmlonly
<hr>
<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
<a class="el" href="fluid.html">[Previous]&nbsp; 9 - Programming with FLUID</a>&nbsp;
<a class="el" href="unicode.html">[Next]&nbsp; 11 - Unicode and utf-8 Support</a>&nbsp;
\endhtmlonly
*/

View File

@ -1,352 +0,0 @@
/**
\page basics 2 - FLTK Basics
This chapter teaches you the basics of compiling programs
that use FLTK.
\section basics_writing Writing Your First FLTK Program
All programs must include the file <tt><FL/Fl.H></tt>.
In addition the program must include a header file for each
FLTK class it uses. Listing 1 shows a simple "Hello,
World!" program that uses FLTK to display the window.
\par Listing 1 - "hello.cxx"
\code
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Box.H>
int main(int argc, char **argv) {
Fl_Window *window = new Fl_Window(300,180);
Fl_Box *box = new Fl_Box(20,40,260,100,"Hello, World!");
box->box(FL_UP_BOX);
box->labelsize(36);
box->labelfont(FL_BOLD+FL_ITALIC);
box->labeltype(FL_SHADOW_LABEL);
window->end();
window->show(argc, argv);
return Fl::run();
}
\endcode
<!-- NEED 2in -->
After including the required header files, the program then creates a
window. All following widgets will automatically be children of this window.
\code
Fl_Window *window = new Fl_Window(300,180);
\endcode
Then we create a box with the "Hello, World!" string in it. FLTK automatically
adds the new box to <tt>window</tt>, the current grouping widget.
\code
Fl_Box *box = new Fl_Box(20,40,260,100,"Hello, World!");
\endcode
Next, we set the type of box and the size, font, and style of the label:
\code
box->box(FL_UP_BOX);
box->labelsize(36);
box->labelfont(FL_BOLD+FL_ITALIC);
box->labeltype(FL_SHADOW_LABEL);
\endcode
We tell FLTK that we will not add any more widgets to <tt>window</tt>.
\code
window->end();
\endcode
Finally, we show the window and enter the FLTK event loop:
\code
window->show(argc, argv);
return Fl::run();
\endcode
The resulting program will display the window in Figure 2-1.
You can quit the program by closing the window or pressing the
<KBD>ESC</KBD>ape key.
\image html hello.C.gif "Figure 2-1: The Hello, World! Window"
\image latex hello.C.eps "The Hello, World! Window" width=8cm
\subsection basics_creating Creating the Widgets
The widgets are created using the C++ <tt>new</tt> operator. For
most widgets the arguments to the constructor are:
\code
Fl_Widget(x, y, width, height, label)
\endcode
The <tt>x</tt> and <tt>y</tt> parameters determine where the
widget or window is placed on the screen. In FLTK the top left
corner of the window or screen is the origin (i.e. x = 0, y =
0) and the units are in pixels.
The <tt>width</tt> and <tt>height</tt> parameters determine
the size of the widget or window in pixels. The maximum widget
size is typically governed by the underlying window system or
hardware.
<tt>label</tt> is a pointer to a character string to label
the widget with or <tt>NULL</tt>. If not specified the label
defaults to <tt>NULL</tt>. The label string must be in static
storage such as a string constant because FLTK does not make a
copy of it - it just uses the pointer.
\subsection basics_hierarchies Creating Widget hierarchies
Widgets are commonly ordered into functional groups, which
in turn may be grouped again, creating a hierarchy of widgets.
FLTK makes it easy to fill groups by automatically adding all widgets
that are created between a <tt>myGroup->begin()</tt> and
<tt>myGroup->end()</tt>. In this example, <tt>myGroup</tt>
would be the <i>current</i> group.
Newly created groups and their derived widgets implicitly call
<tt>begin()</tt> in the constructor, effectively adding all
subsequently created widgets to itself until <tt>end()</tt>
is called.
Setting the current group to <tt>NULL</tt> will stop automatic
hierarchies. New widgets can now be added manually using
<tt>Fl_Group::add(...)</tt> and <tt>Fl_Group::insert(...)</tt>.
\subsection basics_getset Get/Set Methods
<tt>box->box(FL_UP_BOX)</tt> sets the type of box the
Fl_Box draws, changing it from the default of
<tt>FL_NO_BOX</tt>, which means that no box is drawn. In our
"Hello, World!" example we use <tt>FL_UP_BOX</tt>,
which means that a raised button border will be drawn around
the widget. You can learn more about boxtypes in
<A href="common.html#boxtypes">Chapter 3</A>.
You could examine the boxtype in by doing
<tt>box->box()</tt>. FLTK uses method name overloading to make
short names for get/set methods. A "set" method is always of
the form "void name(type)", and a "get" method is always
of the form "type name() const".
\subsection basics_redrawing Redrawing After Changing Attributes
Almost all of the set/get pairs are very fast, short inline
functions and thus very efficient. However, <i>the "set" methods
do not call <tt>redraw()</tt></i> - you have to call it
yourself. This greatly reduces code size and execution time. The
only common exceptions are <tt>value()</tt> which calls
<tt>redraw()</tt> and <tt>label()</tt> which calls
<tt>redraw_label()</tt> if necessary.
\subsection basics_labels Labels
All widgets support labels. In the case of window widgets,
the label is used for the label in the title bar. Our example
program calls the <tt>labelfont()</tt>,<tt> labelsize</tt>,
and <tt>labeltype()</tt> methods.
All widgets support labels. In the case of window widgets,
the label is used for the label in the title bar. Our example
program calls the
<A href=Fl_Widget.html#Fl_Widget.labelfont><tt>labelfont</tt></A>,
<A href=Fl_Widget.html#Fl_Widget.labelsize><tt> labelsize</tt></A>,
and
<A href=Fl_Widget.html#Fl_Widget.labeltype><tt>labeltype</tt></A>
methods.
The <tt>labelfont</tt> method sets the typeface and style
that is used for the label, which for this example we are using
<tt>FL_BOLD</tt> and <tt>FL_ITALIC</tt>. You can also specify
typefaces directly.
The <tt>labelsize</tt> method sets the height of the font in pixels.
The <tt>labeltype</tt>
method sets the type of label. FLTK supports normal, embossed,
and shadowed labels internally, and more types can be added as
desired.
A complete list of all label options can be found in
<A href="common.html#labels">Chapter 3</A>.
\subsection basics_showing Showing the Window
The <tt>show()</tt> method shows the widget or window. For windows
you can also provide the command-line arguments to allow users to
customize the appearance, size, and position of your windows.
\subsection basics_eventloop The Main Event Loop
All FLTK applications (and most GUI applications in general)
are based on a simple event processing model. User actions such
as mouse movement, button clicks, and keyboard activity generate
events that are sent to an application. The application may then
ignore the events or respond to the user, typically by redrawing
a button in the "down" position, adding the text to an input
field, and so forth.
FLTK also supports idle, timer, and file pseudo-events that
cause a function to be called when they occur. Idle functions
are called when no user input is present and no timers or files
need to be handled - in short, when the application is not doing
anything. Idle callbacks are often used to update a 3D display
or do other background processing.
Timer functions are called after a specific amount of time
has expired. They can be used to pop up a progress dialog after
a certain amount of time or do other things that need to happen
at more-or-less regular intervals. FLTK timers are not 100%
accurate, so they should not be used to measure time intervals,
for example.
File functions are called when data is ready to read or
write, or when an error condition occurs on a file. They are
most often used to monitor network connections (sockets) for
data-driven displays.
FLTK applications must periodically check (Fl::check())
or wait (Fl::wait()) for events or use the Fl::run()
method to enter a standard event processing loop. Calling
Fl::run() is equivalent to the following code:
\code
while (Fl::wait());
\endcode
Fl::run() does not return until all of the windows
under FLTK control are closed by the user or your program.
\section basics_standard_compiler Compiling Programs with Standard Compilers
Under UNIX (and under Microsoft Windows when using the GNU development
tools) you will probably need to tell the compiler where to find the
header files. This is usually done using the <tt>-I</tt> option:
\code
CC -I/usr/local/include ...
gcc -I/usr/local/include ...
\endcode
The <tt>fltk-config</tt> script included with FLTK can be
used to get the options that are required by your compiler:
\code
CC `fltk-config --cxxflags` ...
\endcode
Similarly, when linking your application you will need to tell the
compiler to use the FLTK library:
\code
CC ... -L/usr/local/lib -lfltk -lXext -lX11 -lm
gcc ... -L/usr/local/lib -lfltk -lXext -lX11 -lm
\endcode
Aside from the "fltk" library, there is also a "fltk_forms"
library for the XForms compatibility classes, "fltk_gl" for the
OpenGL and GLUT classes, and "fltk_images" for the image file
classes, Fl_Help_Dialog widget, and system icon support.
\note
The libraries are named "fltk.lib", "fltkgl.lib", "fltkforms.lib",
and "fltkimages.lib", respectively under Windows.
As before, the <tt>fltk-config</tt> script included with FLTK can be
used to get the options that are required by your linker:
\code
CC ... `fltk-config --ldflags`
\endcode
<!-- NEED 2in -->
The forms, GL, and images libraries are included with the "--use-foo"
options, as follows:
\code
CC ... `fltk-config --use-forms --ldflags`
CC ... `fltk-config --use-gl --ldflags`
CC ... `fltk-config --use-images --ldflags`
CC ... `fltk-config --use-forms --use-gl --use-images --ldflags`
\endcode
Finally, you can use the <tt>fltk-config</tt> script to
compile a single source file as a FLTK program:
\code
fltk-config --compile filename.cpp
fltk-config --use-forms --compile filename.cpp
fltk-config --use-gl --compile filename.cpp
fltk-config --use-images --compile filename.cpp
fltk-config --use-forms --use-gl --use-images --compile filename.cpp
\endcode
Any of these will create an executable named <tt>filename</tt>.
\section basics_visual_cpp Compiling Programs with Microsoft Visual C++
In Visual C++ you will need to tell the compiler where to
find the FLTK header files. This can be done by selecting
"Settings" from the "Project" menu and then changing the
"Preprocessor" settings under the "C/C++" tab. You will also
need to add the FLTK and WinSock2 (WS2_32.LIB) libraries to
the "Link" settings.
You can build your Microsoft Windows applications as Console or
WIN32 applications. If you want to use the standard C <tt>main()</tt>
function as the entry point, FLTK includes a <tt>WinMain()</tt>
function that will call your <tt>main()</tt> function for you.
<I>Note: The Visual C++ 5.0 optimizer is known to cause problems with
many programs. We only recommend using the "Favor Small Code"
optimization setting.</I> The Visual C++ 6.0 optimizer seems to be much
better and can be used with the "optimized for speed" setting.
\section basics_naming Naming
All public symbols in FLTK start with the characters 'F' and 'L':
\li Functions are either <tt>Fl::foo()</tt> or <tt>fl_foo()</tt>.
\li Class and type names are capitalized: <tt>Fl_Foo</tt>.
\li <A href="enumerations.html">Constants and enumerations</A>
are uppercase: <tt>FL_FOO</tt>.
\li All header files start with <tt><FL/...></tt>.
<!-- NEED 5in -->
\section basics_headerfiles Header Files
The proper way to include FLTK header files is:
\code
#include <FL/Fl_xyz.H>
\endcode
\note
Case <I>is</I> significant on many operating systems,
and the C standard uses the forward slash (/) to
separate directories. <i>Do not use any of the following
include lines:</i>
\code
#include <FL\Fl_xyz.H>
#include <fl/fl_xyz.h>
#include <Fl/fl_xyz.h>
\endcode
\htmlonly
<hr>
<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
<a class="el" href="intro.html">[Previous]&nbsp; 1 - Introduction to FLTK</a>&nbsp;
<a class="el" href="common.html">[Next]&nbsp; 3 - Common Widgets and Attributes</a>&nbsp;
\endhtmlonly
*/

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -1,618 +0,0 @@
/**
\page common 3 - Common Widgets and Attributes
This chapter describes many of the widgets that are provided
with FLTK and covers how to query and set the standard
attributes.
\section common_buttons Buttons
FLTK provides many types of buttons:
\li Fl_Button - A standard push button.
\li Fl_Check_Button - A button with a check box.
\li Fl_Light_Button - A push button with a light.
\li Fl_Repeat_Button - A push button that repeats when held.
\li Fl_Return_Button - A push button that is activated by the
<KBD>Enter</KBD> key.
\li Fl_Round_Button - A button with a radio circle.
\image html buttons.gif "Figure 3-1: FLTK Button Widgets"
\image latex buttons.eps "FLTK Button Widgets" width=10cm
All of these buttons just need the corresponding
<tt><FL/Fl_xyz_Button.H></tt> header file. The constructor
takes the bounding box of the button and optionally a label
string:
\code
Fl_Button *button = new Fl_Button(x, y, width, height, "label");
Fl_Light_Button *lbutton = new Fl_Light_Button(x, y, width, height);
Fl_Round_Button *rbutton = new Fl_Round_Button(x, y, width, height, "label");
\endcode
Each button has an associated <tt>type()</tt> which allows
it to behave as a push button, toggle button, or radio button:
\code
button->type(FL_NORMAL_BUTTON);
lbutton->type(FL_TOGGLE_BUTTON);
rbutton->type(FL_RADIO_BUTTON);
\endcode
For toggle and radio buttons, the value() method returns
the current button state (0 = off, 1 = on). The set() and
clear() methods can be used on toggle buttons to turn a
toggle button on or off, respectively.
Radio buttons can be turned on with the setonly()
method; this will also turn off other radio buttons in the same
group.
\section common_text Text
FLTK provides several text widgets for displaying and receiving text:
\li Fl_Input - A one-line text input field.
\li Fl_Output - A one-line text output field.
\li Fl_Multiline_Input - A multi-line text input field.
\li Fl_Multiline_Output - A multi-line text output field.
\li Fl_Text_Display - A multi-line text display widget.
\li Fl_Text_Editor - A multi-line text editing widget.
\li Fl_Help_View - A HTML text display widget.
The <tt>Fl_Output</tt> and <tt>Fl_Multiline_Output</tt>
widgets allow the user to copy text from the output field but
not change it.
The <tt>value()</tt> method is used to get or set the
string that is displayed:
\code
Fl_Input *input = new Fl_Input(x, y, width, height, "label");
input->value("Now is the time for all good men...");
\endcode
The string is copied to the widget's own storage when you set
the <tt>value()</tt> of the widget.
The <tt>Fl_Text_Display</tt> and <tt>Fl_Text_Editor</tt>
widgets use an associated <tt>Fl_Text_Buffer</tt> class for the
value, instead of a simple string.
<!-- NEED 4in -->
\section common_valuators Valuators
Unlike text widgets, valuators keep track of numbers instead of
strings. FLTK provides the following valuators:
\li Fl_Counter - A widget with arrow buttons that shows the current value.
\li Fl_Dial - A round knob.
\li Fl_Roller - An SGI-like dolly widget.
\li Fl_Scrollbar - A standard scrollbar widget.
\li Fl_Slider - A scrollbar with a knob.
\li Fl_Value_Slider - A slider that shows the current value.
\image html valuators.gif "Figure 3-2: FLTK valuator widgets"
\image latex valuators.eps "FLTK valuator widgets" width=10cm
The <tt>value()</tt> method gets and sets the current value
of the widget. The <tt>minimum()</tt> and <tt>maximum()</tt>
methods set the range of values that are reported by the
widget.
<!-- NEED 5in -->
\section common_groups Groups
The <tt>Fl_Group</tt> widget class is used as a general
purpose "container" widget. Besides grouping radio
buttons, the groups are used to encapsulate windows, tabs, and
scrolled windows. The following group classes are available
with FLTK:
\li Fl_Double_Window - A double-buffered window on the screen.
\li Fl_Gl_Window - An OpenGL window on the screen.
\li Fl_Group - The base container class; can be used to group
any widgets together.
\li Fl_Pack - A collection of widgets that are packed into the group area.
\li Fl_Scroll - A scrolled window area.
\li Fl_Tabs - Displays child widgets as tabs.
\li Fl_Tile - A tiled window area.
\li Fl_Window - A window on the screen.
\li Fl_Wizard - Displays one group of widgets at a time.
\section common_sizeposition Setting the Size and Position of Widgets
The size and position of widgets is usually set when you
create them. You can access them with the <tt>x()</tt>,
<tt>y()</tt>, <tt>w()</tt>, and <tt>h()</tt> methods.
You can change the size and position by using the
<tt>position()</tt>, <tt> resize()</tt>, and <tt>size()</tt>
methods:
\code
button->position(x, y);
group->resize(x, y, width, height);
window->size(width, height);
\endcode
If you change a widget's size or position after it is
displayed you will have to call <tt>redraw()</tt> on the
widget's parent.
<A NAME="colors"></A> <!-- For old HTML links only ! -->
\section common_colors Colors
FLTK stores the colors of widgets as an 32-bit unsigned
number that is either an index into a color palette of 256
colors or a 24-bit RGB color. The color palette is <i>not</i>
the X or WIN32 colormap, but instead is an internal table with
fixed contents.
There are symbols for naming some of the more common colors:
\li <tt>FL_BLACK</tt>
\li <tt>FL_RED</tt>
\li <tt>FL_GREEN</tt>
\li <tt>FL_YELLOW</tt>
\li <tt>FL_BLUE</tt>
\li <tt>FL_MAGENTA</tt>
\li <tt>FL_CYAN</tt>
\li <tt>FL_WHITE</tt>
\li FL_WHITE
These symbols are the default colors for all FLTK widgets. They are
explained in more detail in the chapter
<A HREF="enumerations.html#colors">Enumerations</A>
\li <tt>FL_FOREGROUND_COLOR</tt>
\li <tt>FL_BACKGROUND_COLOR</tt>
\li <tt>FL_INACTIVE_COLOR</tt>
\li <tt>FL_SELECTION_COLOR</tt>
RGB colors can be set using the <tt>fl_rgb_color()</tt> function:
\code
Fl_Color c = fl_rgb_color(85, 170, 255);
\endcode
The widget color is set using the <tt>color()</tt> method:
\code
button->color(FL_RED);
\endcode
Similarly, the label color is set using the <tt>labelcolor()</tt>
method:
\code
button->labelcolor(FL_WHITE);
\endcode
<A NAME="boxtypes"></A> <!-- For old HTML links only ! -->
\section common_boxtypes Box Types
The type <tt>Fl_Boxtype</tt> stored and returned in Fl_Widget::box()
is an enumeration defined in Enumerations.H.
Figure 3-3 shows the standard box types included with FLTK.
\image html boxtypes.gif "Figure 3-3: FLTK box types"
\image latex boxtypes.eps "FLTK box types" width=12cm
<tt>FL_NO_BOX</tt> means nothing is drawn at all, so whatever is
already on the screen remains. The <tt>FL_..._FRAME</tt> types only
draw their edges, leaving the interior unchanged. The blue color in
Figure 3-3 is the area that is not drawn by the frame types.
\subsection common_boxtypes Making Your Own Boxtypes
You can define your own boxtypes by making a small function that draws
the box and adding it to the table of boxtypes.
<CENTER><TABLE WIDTH="80%" BORDER="1" CELLPADDING="5" CELLSPACING="0" BGCOLOR="#cccccc">
<TR>
<TD><B>Note:</B>
<P>This interface has changed in FLTK 2.0!
</TD>
</TR>
</TABLE></CENTER>
\par The Drawing Function
The drawing function is passed the bounding box and background color
for the widget:
\code
void xyz_draw(int x, int y, int w, int h, Fl_Color c) {
...
}
\endcode
<!-- NEED 3in -->
A simple drawing function might fill a rectangle with the
given color and then draw a black outline:
\code
void xyz_draw(int x, int y, int w, int h, Fl_Color c) {
fl_color(c);
fl_rectf(x, y, w, h);
fl_color(FL_BLACK);
fl_rect(x, y, w, h);
}
\endcode
<A name="fl_down"></A> <!-- For old HTML links only ! -->
\par Fl_Boxtype fl_down(Fl_Boxtype)
<tt>fl_down</tt> returns the "pressed" or "down" version of a box.
If no "down" version of a given box exists, the behavior of this function
is undefined and some random box or frame is returned.
See also: <A HREF="drawing.html#fl_frame">fl_frame drawing</A>.
<A name="fl_frame"></A> <!-- For old HTML links only ! -->
\par Fl_Boxtype fl_frame(Fl_Boxtype)
<tt>fl_frame</tt> returns the unfilled, frame-only version of a box.
If no frame version of a given box exists, the behavior of this function
is undefined and some random box or frame is returned.
See also: <A HREF="drawing.html#fl_frame">fl_frame drawing</A>.
<A name="fl_box"></A> <!-- For old HTML links only ! -->
\par Fl_Boxtype fl_box(Fl_Boxtype)
<tt>fl_box</tt> returns the filled version of a frame.
If no filled version of a given frame exists, the behavior of this function
is undefined and some random box or frame is returned.
See also: <tt><A HREF="#fl_frame">fl_frame</A></tt>.
\par Adding Your Box Type
The <tt>Fl::set_boxtype()</tt> method adds or replaces the specified box type:
\code
#define XYZ_BOX FL_FREE_BOXTYPE
Fl::set_boxtype(XYZ_BOX, xyz_draw, 1, 1, 2, 2);
\endcode
The last 4 arguments to <tt>Fl::set_boxtype()</tt> are the
offsets for the x, y, width, and height values that should be
subtracted when drawing the label inside the box.
A complete box design contains four box types in this order:
a filled, neutral box (<tt>UP_BOX</tt>), a filled, depressed box
(<tt>DOWN_BOX</tt>), and the same as outlines only (<tt>UP_FRAME</tt>
and <tt>DOWN_FRAME</tt>). The function
<tt><A HREF="#fl_down">fl_down(Fl_Boxtype)</A></tt>
expects the neutral design on a boxtype with a numerical
value evenly divideable by two.
<tt><A HREF="#fl_frame">fl_frame(Fl_Boxtype)</A></tt>
expects the <tt>UP_BOX</tt> design at a value divideable by four.
<A NAME="labels"></A> <!-- For old HTML links only ! -->
\section common_labels Labels and Label Types
The <tt>label()</tt>, <tt>align()</tt>, <tt>labelfont()</tt>,
<tt>labelsize()</tt>, <tt>labeltype()</tt>, <tt>image()</tt>, and
<tt>deimage()</tt> methods control the labeling of widgets.
\par label()
The <tt>label()</tt> method sets the string that is displayed
for the label. Symbols can be included with the label string by
escaping them using the "@" symbol - "@@" displays a single at
sign. Figure 3-4 shows the available symbols.
\image html symbols.gif "Figure 3-4: FLTK label symbols"
<!-- NEED 2in -->
The @ sign may also be followed by the following optional
"formatting" characters, in this order:
\li '#' forces square scaling, rather than distortion to the widget's shape.
\li +[1-9] or -[1-9] tweaks the scaling a little bigger or smaller.
\li '$' flips the symbol horizontaly, '%' flips it verticaly.
\li [0-9] - rotates by a multiple of 45 degrees. '5' and '6' do no rotation
while the others point in the direction of that key on a numeric keypad.
'0', followed by four more digits rotates the symbol by that amount in
degrees.
Thus, to show a very large arrow pointing downward you would use the
label string "@+92->".
\par align()
The <tt>align()</tt> method positions the label. The following
constants are defined and may be OR'd together as needed:
\li <tt>FL_ALIGN_CENTER</tt> - center the label in the widget.
\li <tt>FL_ALIGN_TOP</tt> - align the label at the top of the widget.
\li <tt>FL_ALIGN_BOTTOM</tt> - align the label at the bottom of the
widget.
\li <tt>FL_ALIGN_LEFT</tt> - align the label to the left of the widget.
\li <tt>FL_ALIGN_RIGHT</tt> - align the label to the right of the
widget.
\li <tt>FL_ALIGN_INSIDE</tt> - align the label inside the widget.
\li <tt>FL_ALIGN_CLIP</tt> - clip the label to the widget's bounding
box.
\li <tt>FL_ALIGN_WRAP</tt> - wrap the label text as needed.
\li <tt>FL_TEXT_OVER_IMAGE</tt> - show the label text over the image.
\li <tt>FL_IMAGE_OVER_TEXT</tt> - show the label image over the text (default).
<A NAME="labeltypes"></A> <!-- For old HTML links only ! -->
\par labeltype()
The <tt>labeltype()</tt> method sets the type of the label. The
following standard label types are included:
\li <tt>FL_NORMAL_LABEL</tt> - draws the text.
\li <tt>FL_NO_LABEL</tt> - does nothing.
\li <tt>FL_SHADOW_LABEL</tt> - draws a drop shadow under the text.
\li <tt>FL_ENGRAVED_LABEL</tt> - draws edges as though the text is engraved.
\li <tt>FL_EMBOSSED_LABEL</tt> - draws edges as thought the text is raised.
\li <tt>FL_ICON_LABEL</tt> - draws the icon associated with the text.
\par image() and deimage()
The <tt>image()</tt> and <tt>deimage()</tt> methods set an image that
will be displayed with the widget. The <tt>deimage()</tt> method sets the
image that is shown when the widget is inactive, while the <tt>image()</tt>
method sets the image that is shown when the widget is active.
To make an image you use a subclass of
<A HREF="drawing.html#Fl_Image"><tt>Fl_Image</tt></A>.
\par Making Your Own Label Types
Label types are actually indexes into a table of functions
that draw them. The primary purpose of this is to use this to
draw the labels in ways inaccessible through the
<tt>fl_font</tt> mechanisim (e.g. <tt>FL_ENGRAVED_LABEL</tt>) or
with program-generated letters or symbology.
<CENTER><TABLE WIDTH="80%" BORDER="1" CELLPADDING="5" CELLSPACING="0" BGCOLOR="#cccccc">
<TR>
<TD><B>Note:</B>
<P>This interface has changed in FLTK 2.0!
</TD>
</TR>
</TABLE></CENTER>
\par Label Type Functions
To setup your own label type you will need to write two
functions: one to draw and one to measure the label. The draw
function is called with a pointer to a <tt>Fl_Label</tt>
structure containing the label information, the bounding box for
the label, and the label alignment:
\code
void xyz_draw(const Fl_Label *label, int x, int y, int w, int h, Fl_Align align) {
...
}
\endcode
The label should be drawn <I>inside</I> this bounding box,
even if <tt>FL_ALIGN_INSIDE</tt> is not enabled. The function
is not called if the label value is <tt>NULL</tt>.
The measure function is called with a pointer to a
<tt>Fl_Label</tt> structure and references to the width and
height:
\code
void xyz_measure(const Fl_Label *label, int &w, int &h) {
...
}
\endcode
The function should measure the size of the label and set
<tt>w</tt> and <tt>h</tt> to the size it will occupy.
\par Adding Your Label Type
The <tt>Fl::set_labeltype</tt> method creates a label type
using your draw and measure functions:
\code
#define XYZ_LABEL FL_FREE_LABELTYPE
Fl::set_labeltype(XYZ_LABEL, xyz_draw, xyz_measure);
\endcode
The label type number <tt>n</tt> can be any integer value
starting at the constant <tt>FL_FREE_LABELTYPE</tt>. Once you
have added the label type you can use the <tt>labeltype()</tt>
method to select your label type.
The <tt>Fl::set_labeltype</tt> method can also be used to overload
an existing label type such as <tt>FL_NORMAL_LABEL</tt>.
<A NAME="add_symbol"></A> <!-- For old HTML links only ! -->
\par Making your own symbols
It is also possible to define your own drawings and add
them to the symbol list, so they can be rendered as part of
any label.
To create a new symbol, you implement a drawing function
<tt>void drawit(Fl_Color c)</tt> which typically uses the
<a href="drawing.html#complex">complex drawing functions</a>
to generate a vector shape inside a two-by-two units sized box
around the origin. This function is then linked into the symbols
table using <tt>fl_add_symbol</tt>:
\code
int fl_add_symbol(const char *name, void (*drawit)(Fl_Color), int scalable)
\endcode
<i>name</i> is the name of the symbol without the "@"; <i>scalable</I>
must be set to 1 if the symbol is generated using scalable vector drawing
functions.
\code
int fl_draw_symbol(const char *name,int x,int y,int w,int h,Fl_Color col)
\endcode
This function draws a named symbol fitting the given rectangle.
\section common_callbacks Callbacks
Callbacks are functions that are called when the value of a
widget changes. A callback function is sent a <tt>Fl_Widget</tt>
pointer of the widget that changed and a pointer to data that
you provide:
\code
void xyz_callback(Fl_Widget *w, void *data) {
...
}
\endcode
The <tt>callback()</tt> method sets the callback function for a
widget. You can optionally pass a pointer to some data needed for the
callback:
\code
int xyz_data;
button->callback(xyz_callback, &xyz_data);
\endcode
Normally callbacks are performed only when the value of the
widget changes. You can change this using the Fl_Widget::when()
method:
\code
button->when(FL_WHEN_NEVER);
button->when(FL_WHEN_CHANGED);
button->when(FL_WHEN_RELEASE);
button->when(FL_WHEN_RELEASE_ALWAYS);
button->when(FL_WHEN_ENTER_KEY);
button->when(FL_WHEN_ENTER_KEY_ALWAYS);
button->when(FL_WHEN_CHANGED | FL_WHEN_NOT_CHANGED);
\endcode
<CENTER><TABLE WIDTH="80%" BORDER="1" CELLPADDING="5" CELLSPACING="0" BGCOLOR="#cccccc">
<TR>
<TD><B>Note:</B>
<P>You cannot delete a widget inside a callback, as the
widget may still be accessed by FLTK after your callback
is completed. Instead, use the Fl::delete_widget()
method to mark your widget for deletion when it is safe
to do so.
<p><B>Hint:</B>
<P>Many programmers new to FLTK or C++ try to use a
non-static class method instead of a static class method
or function for their callback. Since callbacks are done
outside a C++ class, the <tt>this</tt> pointer is not
initialized for class methods.
<P>To work around this problem, define a static method
in your class that accepts a pointer to the class, and
then have the static method call the class method(s) as
needed. The data pointer you provide to the
<tt>callback()</tt> method of the widget can be a
pointer to the instance of your class.
\code
class Foo {
void my_callback(Fl_Widget *w);
static void my_static_callback(Fl_Widget *w, void *f) { ((Foo *)f)->my_callback(w); }
...
}
...
w->callback(my_static_callback, (void *)this);
\endcode
</TD>
</TR>
</TABLE></CENTER>
\section common_shortcuts Shortcuts
Shortcuts are key sequences that activate widgets such as
buttons or menu items. The <tt>shortcut()</tt> method sets the
shortcut for a widget:
\code
button->shortcut(FL_Enter);
button->shortcut(FL_SHIFT + 'b');
button->shortcut(FL_CTRL + 'b');
button->shortcut(FL_ALT + 'b');
button->shortcut(FL_CTRL + FL_ALT + 'b');
button->shortcut(0); // no shortcut
\endcode
The shortcut value is the key event value - the ASCII value
or one of the special keys like
<a href="enumerations.html#key_values"><tt>FL_Enter</tt></a> -
combined with any modifiers like <KBD>Shift</KBD>,
<KBD>Alt</KBD>, and <KBD>Control</KBD>.
\htmlonly
<hr>
<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
<a class="el" href="basics.html">[Previous]&nbsp; 2 - FLTK Basics</a>&nbsp;
<a class="el" href="editor.html">[Next]&nbsp; 4 - Designing a Simple Text Editor</a>&nbsp;
\endhtmlonly
*/

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,462 +0,0 @@
/**
\page development I - Developer Information
This chapter describes FLTK development and documentation.
\note documentation with doxygen will be described here.
<H2>Example</H2>
\note
In the following code example(s) "*" will be replaced by "#"
as a temporary solution.
\code
/## \file
Fl_Clock, Fl_Clock_Output widgets . #/
/##
\class Fl_Clock_Output
\brief This widget can be used to display a program-supplied time.
The time shown on the clock is not updated. To display the current time,
use Fl_Clock instead.
\image html clock.gif
\image latex clock.eps "" width=10cm
\image html round_clock.gif
\image latex clock.eps "" width=10cm
\image html round_clock.eps "" width=10cm #/
/##
Returns the displayed time.
Returns the time in seconds since the UNIX epoch (January 1, 1970).
\see value(ulong)
#/
ulong value() const {return value_;}
/##
Set the displayed time.
Set the time in seconds since the UNIX epoch (January 1, 1970).
\param[in] v seconds since epoch
\see value()
#/
void Fl_Clock_Output::value(ulong v) {
[...]
}
/##
Create an Fl_Clock widget using the given position, size, and label string.
The default boxtype is \c FL_NO_BOX.
\param[in] X, Y, W, H position and size of the widget
\param[in] L widget label, default is no label
#/
Fl_Clock::Fl_Clock(int X, int Y, int W, int H, const char #L)
: Fl_Clock_Output(X, Y, W, H, L) {}
/##
Create an Fl_Clock widget using the given boxtype, position, size, and
label string.
\param[in] t boxtype
\param[in] X, Y, W, H position and size of the widget
\param[in] L widget label, default is no label
#/
Fl_Clock::Fl_Clock(uchar t, int X, int Y, int W, int H, const char #L)
: Fl_Clock_Output(X, Y, W, H, L) {
type(t);
box(t==FL_ROUND_CLOCK ? FL_NO_BOX : FL_UP_BOX);
}
\endcode
\note
From Duncan: (will be removed later, just for now as a reminder)
5. I've just added comments for the fl_color_chooser() functions, and
in order to keep them and the general Function Reference information
for them together, I created a new doxygen group, and used \\ingroup
in the three comment blocks. This creates a new Modules page (which
may not be what we want) with links to it from the File Members and
Fl_Color_Chooser.H pages. It needs a bit more experimentation on my
part unless someone already knows how this should be handled. (Maybe
we can add it to a functions.dox file that defines a functions group
and do that for all of the function documentation?)
\b Update: the trick is not to create duplicate entries in a new group, but
to move the function information into the doxygen comments for the
class, and use the navigation links provided. Simply using \\relatesalso
as the first doxygen command in the function's comment puts it in the
appropriate place. There is no need to have \\defgroup and \\ingroup as
well, and indeed they don't work. So, to summarize:
\code
Gizmo.H
/## \class Gizmo
A gizmo that does everything
#/
class Gizmo {
etc
};
extern int popup_gizmo(...);
Gizmo.cxx:
/## \relatesalso Gizmo
Pops up a gizmo dialog with a Gizmo in it
#/
int popup_gizmo(...);
\endcode
<H3>Example comment:</H3>
You can use HTML comment statements to embed comments in doxygen comment blocks.
These comments will not be visible in the generated document.
The following text is a developer comment.
<!-- *** This *** is *** invisible *** -->
This will be visible again.
\code
The following text is a developer comment.
<!-- *** This *** is *** invisible *** -->
This will be visible again.
\endcode
<H3>Different Headlines:</H3>
\code
<H1>Headline in big text (H1)</H1>
<H2>Headline in big text (H2)</H2>
<H3>Headline in big text (H3)</H3>
<H4>Headline in big text (H4)</H4>
\endcode
<H1>Headline in big text (H1)</H1>
<H2>Headline in big text (H2)</H2>
<H3>Headline in big text (H3)</H3>
<H4>Headline in big text (H4)</H4>
\section development_non-ascii Non-ASCII characters
if you came here from below: back to \ref development_links
\code
Doxygen understands many HTML quoting characters like
&quot;, &uuml;, &ccedil;, &Ccedil;, but not all HTML quoting characters.
\endcode
This will appear in the document:
Doxygen understands many HTML quoting characters like
&quot;, &uuml;, &ccedil;, &Ccedil;, but not all HTML quoting characters.
For further informations about quoting see
\b http://www.stack.nl/~dimitri/doxygen/htmlcmds.html
<H3>Example with UTF-8 encoded text</H3>
\code
<P>Assuming that the following source code was written on MS Windows,
this example will output the correct label on OS X and X11 as well.
Without the conversion call, the label on OS X would read
<tt>Fahrvergn¸gen</tt> with a deformed umlaut u ("cedille",
html "&cedil;").
\#code
btn = new Fl_Button(10, 10, 300, 25);
btn->copy_label(fl_latin1_to_local("Fahrvergnügen"));
\#endcode
\note If your application uses characters that are not part of both
encodings, or it will be used in areas that commonly use different
code pages, you might consider upgrading to FLTK 2 which supports
UTF-8 encoding.
\todo This is an example todo entry, please ignore !
\endcode
This will appear in the document:
<P>Assuming that the following source code was written on MS Windows,
this example will output the correct label on OS X and X11 as well.
Without the conversion call, the label on OS X would read
<tt>Fahrvergn¸gen</tt> with a deformed umlaut u ("cedille",
html "&cedil;").
\#code
btn = new Fl_Button(10, 10, 300, 25);
btn->copy_label(fl_latin1_to_local("Fahrvergnügen"));
\#endcode
\note If your application uses characters that are not part of both
encodings, or it will be used in areas that commonly use different
code pages, you might consider upgrading to FLTK 2 which supports
UTF-8 encoding.
\todo This is an example todo entry, please ignore !
\section development_structure Document Structure
\li \b \\page creates a named page
\li \b \\section creates a named section within that page
\li \b \\subsection creates a named subsection within the current section
\li \b \\subsubsection creates a named subsubsection within the current subsection
All these statements take a "name" as their first argument, and a title
as their second argument. The title can contain spaces.
The page, section, and subsection titles are formatted in blue color and
a size like \b "<H1>", \b "<H2>", and \b "<H3>", and \b "<H4>", respectively.
By <b>FLTK documentation convention</b>, a file like this one with a doxygen
documentation chapter has the name <b>"<chapter>.dox".</b>
The \b \\page statement at the top of the page is
<b>"\page <chapter> This is the title"</b>.
Sections within a documentation page must be called \b "<chapter>_<section>",
where \b "<chapter>" is the name part of the file, and \b "<section>" is a
unique section name within the page that can be referenced in links. The
same for subsections and subsubsections.
These doxygen page and section commands work only in special documentation
chapters, not within normal source or header documentation blocks. However,
links \b from normal (e.g. class) documentation \b to documentation sections
\b do \b work.
This page has
\code
\page development I - Developer Information
\endcode
at its top.
This section is
\code
\section development_structure Document structure
\endcode
The following section is
\code
\section development_links Creating Links
\endcode
\section development_links Creating Links
Links to other documents and external links can be embedded with
\li normal HTML links
\li HTML links without markup - doxygen creates "http://..."
links automatically
\li links to other doxygen chapters with the \\ref statments
\li links to named sections within the same or other doxygen chapters,
if they are defined there with a \\section statement
\code
see chapter \ref unicode creates a link to the named chapter unicode
that has been created with a \subpage statement.
see <a href="drawing.html#character_encoding">chapter 5</a> creates
a link to a named html anchor "character_encoding" within the same file.
For further informations about quoting see
http://www.stack.nl/~dimitri/doxygen/htmlcmds.html
Bold link text: you can see the <b>\e old online documentation</b>
of FLTK 1.3 at \b http://www.fltk.org/doc-1.3/toc.html
see section \ref development_non-ascii
\endcode
appears as:
see chapter \ref unicode creates a link to the named chapter unicode
that has been created with a \\subpage statement.
see <a href="drawing.html#character_encoding">chapter 5</a> creates
a link to a named html anchor "character_encoding" within the same file.
For further informations about quoting see
http://www.stack.nl/~dimitri/doxygen/htmlcmds.html
Bold link text: you can see the <b>\e old online documentation</b>
of FLTK 1.3 at \b http://www.fltk.org/doc-1.3/toc.html
see section \ref development_non-ascii
\section development_old-links Changing Old Links
Old HTML links and anchors in text documentation pages should be changed
as follows:
\code
<H2><A name="event_xxx">Fl::event_*() methods</A></H2>
becomes:
<A NAME="event_xxx"></A> <!-- For old HTML links only ! -->
\section events_event_xxx Fl::event_*() methods
\endcode
The additional HTML "<A NAME=...>" statement is temporary needed, until
all links (references) are modified, then:
\code
<H2><A name="event_xxx">Fl::event_*() methods</A></H2>
becomes:
\section events_event_xxx Fl::event_*() methods
\endcode
The "\section" statement can also be a "\subsection" or "\subsubsection"
statement.
The references (in this example from index.dox) are changed as follows:
\code
\subpage events
<B>
<UL>
<LI><A HREF="events.html#event_xxx">Fl::event_*() methods</A></LI>
<LI><A HREF="events.html#propagation">Event Propagation</A></LI>
</UL>
</B>
becomes:
\subpage events
<b>
\li \ref events_event_xxx
\li \ref events_propagation
</b>
\endcode
\section development_paragraphs Paragraph Layout
There is no real need to use HTML \<P\> and \</P\> tags within the text
to tell doxygen to start or stop a paragraph. In most cases, when doxygen
encounters a blank line or some, but not all, \b \\commands in the text it
knows that it as reached the start or end of a paragraph. Doxygen also
offers the \b \\par command for special paragraph handling. It can be used
to provide a paragraph title and also to indent a paragraph. Unfortunately
\b \\par won't do what you expect if you want to have doxygen links and
sometimes html tags don't work either.
<!-- use verbatim rather than code to avoid links to code reference -->
\verbatim
\par Normal Paragraph with title
This paragraph will have a title, but because there is a blank line
between the \par and the text, it will have the normal layout.
\par Indented Paragraph with title
This paragraph will also have a title, but because there is no blank
line between the \par and the text, it will be indented.
\par
It is also possible to have an indented paragraph without title.
This is how you indent subsequent paragraphs.
\par No link to Fl_Widget::draw()
Note that the paragraph title is treated as plain text.
Doxygen type links will not work.
HTML characters and tags may or may not work.
Fl_Widget::draw() links and &quot;html&quot; tags work<br>
\par
Use a single line ending with <br> for complicated paragraph titles.
\endverbatim
The above code produces the following paragraphs:
\par Normal Paragraph with title
This paragraph will have a title, but because there is a blank line
between the \\par and the text, it will have the normal layout.
\par Indented Paragraph with title
This paragraph will also have a title, but because there is no blank
line between the \\par and the text, it will be indented.
\par
It is also possible to have an indented paragraph without title.
This is how you indent subsequent paragraphs.
\par No link to Fl_Widget::draw()
Note that the paragraph title is treated as plain text.
Doxygen type links will not work.
HTML characters and tags may or may not work.
Fl_Widget::draw() links and &quot;html&quot; tags work<br>
\par
Use a single line ending with \<br\> for complicated paragraph titles.
\section development_html_footer Hack for missing "tiny.gif" file
\todo
*HACK* : include image file for footer. Doxygen does not include
the file "tiny.gif" from "html_footer" in its output html dir.
Find out, how this can be done, or avoid using an image in
the HTML footer.
\image html tiny.gif
\image latex tiny.eps "" width=2cm
\section development_navigation_test 5 Navigation Proposals
\htmlonly
<hr>
\link migration_1_3 [ Previous ] \endlink
<b> [ <a href="index.html">Index</a> ] </b>
<b> Next: </b> \ref license
<hr>
<b>[ <a href="index.html">Index</a> ] </b>
<b> Previous: </b> \ref migration_1_3
<b> Next: </b> \ref license
<hr>
<b>[ <a href="index.html">Index</a> ] </b><br>
<b> Previous: </b> \ref migration_1_3 <br>
<b> Next: </b> \ref license
<hr>
<b>[ <a href="index.html">Index</a> ] </b>
Previous: \ref migration_1_3
Next: \ref license
<hr>
\link migration_1_3 [ Previous ] \endlink
<b> [ <a href="index.html">Top</a> ] </b>
\link license [ Next ] \endlink
<hr>
<br>
<br>
\section development_proposed_nav Proposed (final) Navigation Elements
See below.
<hr>
<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
<a class="el" href="migration_1_3.html">[Previous]</a>&nbsp;
\ref migration_1_3 &nbsp;&nbsp;
<a class="el" href="license.html">[Next]</a>&nbsp;
\ref license
\endhtmlonly
*/

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

File diff suppressed because it is too large Load Diff

View File

@ -1,955 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Creator:giftoeps
%%BoundingBox: 0.000000 0.000000 300.000000 105.000000
currentscreen 3 1 roll pop pop 60 90 3 -1 roll setscreen
/picstr 300 string def
/screen {300 105 8 [300 0 0 -105 0 105]
{currentfile picstr readhexstring pop} image} def
300 105 scale screen
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABA
BABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABA
BABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABA
BABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABA
BABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABA
BABABABABABABABABAFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000CFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDC00000000000000DCDC00DCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDCDCDCDCDCDC
BA00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDC00DCDCDCDCDCDCDCDC00DCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDCDCDCDCDCDC
BA00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDC00DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDCDCDCDCDCDC
BA00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDC00DCDCDCDCDCDCDCDC00DCDC00DC000000DCDCDCDC000000DC00DCDC00DCDCDCDC
BA00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDC00DCDCDCDCDCDCDCDC00DCDC0000DCDC0000DCDC0000DCDC0000DCDC00DCDCDCDC
BA00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDC000000000000DCDCDC00DCDC00DCDCDCDC00DCDC00DCDCDCDC00DCDCDCDCDCDCDC
BA00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDC00DCDCDCDCDCDCDCDC00DCDC00DCDCDCDC00DCDC00DCDCDCDC00DCDCDCDCDCDCDC
BA00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDC00DCDCDCDCDCDCDCDC00DCDC00DCDCDCDC00DCDC00DCDCDCDC00DCDCDCDCDCDCDC
BA00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDC00DCDCDCDCDCDCDCDC00DCDC00DCDCDCDC00DCDC00DCDCDCDC00DCDCDCDCDCDCDC
BA00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDC00DCDCDCDCDCDCDCDC00DCDC00DCDCDCDC00DCDC0000DCDC0000DCDC00DCDCDCDC
BA00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDC00DCDCDCDCDCDCDCDC00DCDC00DCDCDCDC00DCDCDC000000DC00DCDC00DCDCDCDC
BA00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BACFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF
CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF
CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF
CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF
CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF
CFCFCFCFCFCFCFCFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA
FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA
FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA
FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA
FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA
FAFAFAFAFAFAFAFAFAFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABA
BABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABA
BABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABA
BABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABA
BABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABA
BABABABABABABABABAFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000CFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC000000000000DCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDC00DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDCDCDC0000DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDC00DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDCDCDCDC00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDC00DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDCDCDCDC00DCDCDC00000000DCDCDC
00DC000000DCDCDC00DCDCDC00000000DCDCDCDC00000000DCDCDCDC00000000DCDCDC00DCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDCDCDC00DCDCDC0000DCDC0000DCDC
0000DCDC0000DCDC00DCDC0000DCDC0000DCDC0000DCDC0000DCDC0000DCDC0000DCDC00DCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000000000DCDCDCDC00DCDCDCDC00DCDC
00DCDCDCDC00DCDC00DCDCDCDCDCDCDC00DCDC00DCDCDCDCDCDCDC00DCDCDCDC00DCDCDCDCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDCDCDC00DCDCDC000000000000DCDC
00DCDCDCDC00DCDC00DCDCDC0000000000DCDC00DCDCDCDCDCDCDC000000000000DCDCDCDCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDCDCDCDC00DCDC00DCDCDCDCDCDCDC
00DCDCDCDC00DCDC00DCDC0000DCDCDC00DCDC00DCDCDCDCDCDCDC00DCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDCDCDCDC00DCDC00DCDCDCDCDCDCDC
00DCDCDCDC00DCDC00DCDC00DCDCDCDC00DCDC00DCDCDCDC00DCDC00DCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDCDCDCDC00DCDC0000DCDC0000DCDC
0000DCDC0000DCDC00DCDC0000DCDC0000DCDC0000DCDC0000DCDC0000DCDC0000DCDC00DCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDCDCDCDC00DCDCDC00000000DCDCDC
00DC000000DCDCDC00DCDCDC000000DC0000DCDC00000000DCDCDCDC00000000DCDCDC00DCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
00DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
00DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
00DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
BACFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF
CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF
CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF
CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF
CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF
CFCFCFCFCFCFCFCFCFFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA
FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA
FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA
FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA
FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA
FAFAFAFAFAFAFAFAFAFADCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA
FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA
FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA00DCDCDCDCDCFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA
FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA
FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA
FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA00DCDCDCDCDCFAFAFAFAFAFAFAFAFAFA
FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA
FAFAFAFAFAFAFAFAFA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFAE8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8
E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8
E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8BA00DCDCDCDCDCFAE8E8E8E8E8E8E8E8E8E8E8E8E8E8
E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8
E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8
E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8BA00DCDCDCDCDCFAE8E8E8E8E8E8E8E8E8
E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8
E8E8E8E8E8E8E8E8BA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFAE8DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCBA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFAE8DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCBA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFAE8DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCBA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFAE8DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCBA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFAE8DCDCDCDCDCDCDC000000000000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDC00DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00
DCDCDCDCDCDC00DCDC00DCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDC000000000000DC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDC0000DCDCDCDCDC00DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDC00DCDCDCDCDC8F8F8F8F8FDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDCDC
DC000000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
00DCDCDCDCDCDCDCBA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFAE8DCDCDCDCDCDCDC00DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDC00DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00
DCDCDCDCDCDC00DCDC00DCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDC00DCDCDCDC0000
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDC0000DCDCDCDCDC00DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDCDCDCDC
DCDCDCDCDC00FADCDCDCDCDC8FDCDCDCFADCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDC00
00DCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
00DCDCDCDCDCDCDCBA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFAE8DCDCDCDCDCDCDC00DCDCDCDCDC00DCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDC00DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DC
00DCDCDCDCDC00DCDC00DCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDC00DCDCDCDCDC00
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDC00DC00DCDCDCDC00DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDCDCDCDC
DCDCDCDC00DCFADCDCDCDCDC8FDCDCDCFADCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDC00
DCDCDCDCDC00DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
00DCDCDCDCDCDCDCBA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFAE8DCDCDCDCDCDCDC00DCDCDCDCDC00DCDCDC00000000DCDCDC00DC0000
00DCDCDC00DCDCDC00000000DCDCDCDC00000000DCDCDCDC00000000DCDCDCDCDCDCDCDCDCDC00DC
00DCDCDCDCDC00DCDC00DCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDC00DCDCDCDCDC00
DCDCDC00000000DCDCDC00DC000000DCDCDC00DCDCDC00000000DCDCDCDC00000000DCDCDCDC0000
0000DCDCDCDCDCDCDC00DCDC00DCDCDC00DCDCDC00000000DCDC0000DCDCDC000000000000DCDCDC
DCDCDC00DCDCFADCDCDCDCDC8FDCDCDCFADCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDC00DC
DCDCDCDCDCDCDCDCDC00000000DCDCDC00DC000000DCDCDCDC00000000DCDCDCDC00000000DCDCDC
00DCDCDCDCDCDCDCBA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFAE8DCDCDCDCDCDCDC00DCDCDCDC00DCDCDC0000DCDC0000DCDC0000DCDC
0000DCDC00DCDC0000DCDC0000DCDC0000DCDC0000DCDC0000DCDC0000DCDCDCDCDCDCDCDC00DCDC
DC00DCDCDCDC00DCDC00DCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDC00DCDCDCDC00DC
DCDC0000DCDC0000DCDC0000DCDC0000DCDC00DCDC0000DCDC0000DCDC0000DCDC0000DCDC0000DC
DC0000DCDCDCDCDCDC00DCDC00DCDCDC00DCDC0000DCDC0000DCDC00DCDCDC00DCDC00DCDCDCDCDC
DCDC00DCDCDCFA8F8F8F8F8F8FDCDCDCFADCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDC00DC
DCDCDCDCDCDCDCDC0000DCDC0000DCDC0000DCDC0000DCDC0000DCDC0000DCDC0000DCDC0000DCDC
00DCDCDCDCDCDCDCBA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFAE8DCDCDCDCDCDCDC0000000000DCDCDCDC00DCDCDCDC00DCDC00DCDCDC
DC00DCDC00DCDCDCDCDCDCDC00DCDC00DCDCDCDCDCDCDC00DCDCDCDC00DCDCDCDCDCDCDCDC00DCDC
DC00DCDCDCDC00DCDC00DCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDC0000000000DCDC
DCDC00DCDCDCDC00DCDC00DCDCDCDC00DCDC00DCDCDCDCDCDCDC00DCDC00DCDCDCDCDCDCDC00DCDC
DCDC00DCDCDCDCDCDC00DCDCDC00DCDC00DCDC00DCDCDCDC00DCDCDC00DC00DCDCDC00DCDCDCDCDC
DC00DCDCDCDCDCDCDCDCDCDCDCDCDCDCFADCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDC00DC
DCDCDCDCDCDCDCDCDCDCDCDCDC00DCDC00DCDCDCDC00DCDC00DCDCDCDCDCDCDC00DCDCDCDC00DCDC
00DCDCDCDCDCDCDCBA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFAE8DCDCDCDCDCDCDC00DCDCDCDC00DCDCDC000000000000DCDC00DCDCDC
DC00DCDC00DCDCDC0000000000DCDC00DCDCDCDCDCDCDC000000000000DCDCDCDCDCDCDC00DCDCDC
DCDC00DCDCDC00DCDC00DCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDC00DCDCDCDC00DC
DCDC000000000000DCDC00DCDCDCDC00DCDC00DCDCDC0000000000DCDC00DCDCDCDCDCDCDC000000
000000DCDCDCDCDCDC00DCDCDC00DCDC00DCDC000000000000DCDCDCDC00DCDCDCDC00DCDCDCDCDC
00DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCFADCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDC00DC
DCDCDCDCDCDCDCDCDC0000000000DCDC00DCDCDCDC00DCDC00DCDCDCDCDCDCDC000000000000DCDC
00DCDCDCDCDCDCDCBA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFAE8DCDCDCDCDCDCDC00DCDCDCDCDC00DCDC00DCDCDCDCDCDCDC00DCDCDC
DC00DCDC00DCDC0000DCDCDC00DCDC00DCDCDCDCDCDCDC00DCDCDCDCDCDCDCDCDCDCDCDC00000000
000000DCDCDC00DCDC00DCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDC00DCDCDCDCDC00
DCDC00DCDCDCDCDCDCDC00DCDCDCDC00DCDC00DCDC0000DCDCDC00DCDC00DCDCDCDCDCDCDC00DCDC
DCDCDCDCDCDCDCDCDC00DCDCDCDC00DC00DCDC00DCDCDCDCDCDCDCDCDC00DCDCDCDC00DCDCDCDCDC
DCFADCDCDCDCDCDCDCDCDCDCDCDCDCDCFADCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDC00DC
DCDCDCDCDCDCDCDC0000DCDCDC00DCDC00DCDCDCDC00DCDC00DCDCDCDCDCDCDC00DCDCDCDCDCDCDC
00DCDCDCDCDCDCDCBA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFAE8DCDCDCDCDCDCDC00DCDCDCDCDC00DCDC00DCDCDCDCDCDCDC00DCDCDC
DC00DCDC00DCDC00DCDCDCDC00DCDC00DCDCDCDC00DCDC00DCDCDCDCDCDCDCDCDCDCDCDC00DCDCDC
DCDC00DCDCDC00DCDC00DCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDC00DCDCDCDCDC00
DCDC00DCDCDCDCDCDCDC00DCDCDCDC00DCDC00DCDC00DCDCDCDC00DCDC00DCDCDCDC00DCDC00DCDC
DCDCDCDCDCDCDCDCDC00DCDCDCDC00DC00DCDC00DCDCDCDCDCDCDCDC00DC00DCDCDC00DCDCDCDCDC
DCDCFADCDCDCFAFAFAFAFAFAFAFAFAFAFADCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDC00
DCDCDCDCDC00DCDC00DCDCDCDC00DCDC00DCDCDCDC00DCDC00DCDCDCDC00DCDC00DCDCDCDCDCDCDC
00DCDCDCDCDCDCDCBA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFAE8DCDCDCDCDCDCDC00DCDCDCDCDC00DCDC0000DCDC0000DCDC0000DCDC
0000DCDC00DCDC0000DCDC0000DCDC0000DCDC0000DCDC0000DCDC0000DCDCDCDCDCDC00DCDCDCDC
DCDCDC00DCDC00DCDC00DCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDC00DCDCDCDCDC00
DCDC0000DCDC0000DCDC0000DCDC0000DCDC00DCDC0000DCDC0000DCDC0000DCDC0000DCDC0000DC
DC0000DCDCDCDCDCDC00DCDCDCDCDC0000DCDC0000DCDC0000DCDC00DCDCDC00DCDC00DCDCDCDCDC
DCDCDCFADCDCFADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDC00
00DCDCDC0000DCDC0000DCDC0000DCDC00DCDCDCDC00DCDC0000DCDC0000DCDC0000DCDC0000DCDC
00DCDCDCDCDCDCDCBA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFAE8DCDCDCDCDCDCDC00DCDCDCDCDC00DCDCDC00000000DCDCDC00DC0000
00DCDCDC00DCDCDC000000DC0000DCDC00000000DCDCDCDC00000000DCDCDCDCDCDCDC00DCDCDCDC
DCDCDC00DCDC00DCDC00DCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDC00DCDCDCDCDC00
DCDCDC00000000DCDCDC00DC000000DCDCDC00DCDCDC000000DC0000DCDC00000000DCDCDCDC0000
0000DCDCDCDCDCDCDC00DCDCDCDCDC0000DCDCDC00000000DCDC0000DCDCDC0000DCDC0000DCDCDC
DCDCDCDCFADCFADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDCDC
DC000000DCDCDCDCDC000000DC0000DC00DCDCDCDC00DCDCDC00000000DCDCDCDC00000000DCDCDC
00DCDCDCDCDCDCDCBA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFAE8DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDC00DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCFAFADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCBA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFAE8DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDC00DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCFADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCBA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFAE8DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDC00DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCBA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFAE8DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCBA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFAE8DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCBA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFAE8DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCBA00DCDCDCDCDCFAE8DCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCBA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCFABABABABABABABABABABABABABABABABABABABABABABABABABABABABABA
BABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABA
BABABABABABABABABABABABABABABABABABABA00DCDCDCDCDCFABABABABABABABABABABABABABABA
BABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABA
BABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABA
BABABABABABABABABABABABABABABABABABABABABABABABA00DCDCDCDCDCFABABABABABABABABABA
BABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABA
BABABABABABABABABA00DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDC000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000DCDCDCDCDC000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000DCDCDCDCDC00000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000DCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC
showpage

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -1,910 +0,0 @@
/**
\page editor 4 - Designing a Simple Text Editor
This chapter takes you through the design of a simple
FLTK-based text editor.
\section editor_goals Determining the Goals of the Text Editor
Since this will be the first big project you'll be doing with FLTK,
lets define what we want our text editor to do:
-# Provide a menubar/menus for all functions.
-# Edit a single text file, possibly with multiple views.
-# Load from a file.
-# Save to a file.
-# Cut/copy/delete/paste functions.
-# Search and replace functions.
-# Keep track of when the file has been changed.
<!-- NEED 4in -->
\section editor_main_window Designing the Main Window
Now that we've outlined the goals for our editor, we can begin with
the design of our GUI. Obviously the first thing that we need is a
window, which we'll place inside a class called <tt>EditorWindow</tt>:
\code
class EditorWindow : public Fl_Double_Window {
public:
EditorWindow(int w, int h, const char* t);
~EditorWindow();
Fl_Window *replace_dlg;
Fl_Input *replace_find;
Fl_Input *replace_with;
Fl_Button *replace_all;
Fl_Return_Button *replace_next;
Fl_Button *replace_cancel;
Fl_Text_Editor *editor;
char search[256];
};
\endcode
\section editor_variables Variables
Our text editor will need some global variables to keep track of things:
\code
int changed = 0;
char filename[256] = "";
Fl_Text_Buffer *textbuf;
\endcode
The <tt>textbuf</tt> variable is the text editor buffer for
our window class described previously. We'll cover the other
variables as we build the application.
\section editor_menubars Menubars and Menus
The first goal requires us to use a menubar and menus that
define each function the editor needs to perform. The
<A href="Fl_Menu_Item.html"><tt>Fl_Menu_Item</tt></A>
structure is used to define the menus and items in a menubar:
\code
Fl_Menu_Item menuitems[] = {
{ "&File", 0, 0, 0, FL_SUBMENU },
{ "&New File", 0, (Fl_Callback *)new_cb },
{ "&Open File...", FL_CTRL + 'o', (Fl_Callback *)open_cb },
{ "&Insert File...", FL_CTRL + 'i', (Fl_Callback *)insert_cb, 0, FL_MENU_DIVIDER },
{ "&Save File", FL_CTRL + 's', (Fl_Callback *)save_cb },
{ "Save File &As...", FL_CTRL + FL_SHIFT + 's', (Fl_Callback *)saveas_cb, 0, FL_MENU_DIVIDER },
{ "New &View", FL_ALT + 'v', (Fl_Callback *)view_cb, 0 },
{ "&Close View", FL_CTRL + 'w', (Fl_Callback *)close_cb, 0, FL_MENU_DIVIDER },
{ "E&xit", FL_CTRL + 'q', (Fl_Callback *)quit_cb, 0 },
{ 0 },
{ "&Edit", 0, 0, 0, FL_SUBMENU },
{ "&Undo", FL_CTRL + 'z', (Fl_Callback *)undo_cb, 0, FL_MENU_DIVIDER },
{ "Cu&t", FL_CTRL + 'x', (Fl_Callback *)cut_cb },
{ "&Copy", FL_CTRL + 'c', (Fl_Callback *)copy_cb },
{ "&Paste", FL_CTRL + 'v', (Fl_Callback *)paste_cb },
{ "&Delete", 0, (Fl_Callback *)delete_cb },
{ 0 },
{ "&Search", 0, 0, 0, FL_SUBMENU },
{ "&Find...", FL_CTRL + 'f', (Fl_Callback *)find_cb },
{ "F&ind Again", FL_CTRL + 'g', find2_cb },
{ "&Replace...", FL_CTRL + 'r', replace_cb },
{ "Re&place Again", FL_CTRL + 't', replace2_cb },
{ 0 },
{ 0 }
};
\endcode
Once we have the menus defined we can create the
<tt>Fl_Menu_Bar</tt> widget and assign the menus to it with:
\code
Fl_Menu_Bar *m = new Fl_Menu_Bar(0, 0, 640, 30);
m->copy(menuitems);
\endcode
We'll define the callback functions later.
\section editor_editing Editing the Text
To keep things simple our text editor will use the
<A HREF="Fl_Text_Editor.html"><tt>Fl_Text_Editor</tt></A>
widget to edit the text:
\code
w->editor = new Fl_Text_Editor(0, 30, 640, 370);
w->editor->buffer(textbuf);
\endcode
So that we can keep track of changes to the file, we also want to add
a "modify" callback:
\code
textbuf->add_modify_callback(changed_cb, w);
textbuf->call_modify_callbacks();
\endcode
Finally, we want to use a mono-spaced font like <tt>FL_COURIER</tt>:
\code
w->editor->textfont(FL_COURIER);
\endcode
\section editor_replace_dialog The Replace Dialog
We can use the FLTK convenience functions for many of the
editor's dialogs, however the replace dialog needs its own
custom window. To keep things simple we will have a
"find" string, a "replace" string, and
"replace all", "replace next", and
"cancel" buttons. The strings are just
<tt>Fl_Input</tt> widgets, the "replace all" and
"cancel" buttons are <tt>Fl_Button</tt> widgets, and
the "replace next " button is a
<tt>Fl_Return_Button</tt> widget:
\image html editor-replace.gif "Figure 4-1: The search and replace dialog"
\image latex editor-replace.eps "The search and replace dialog" width=10cm
\code
Fl_Window *replace_dlg = new Fl_Window(300, 105, "Replace");
Fl_Input *replace_find = new Fl_Input(70, 10, 200, 25, "Find:");
Fl_Input *replace_with = new Fl_Input(70, 40, 200, 25, "Replace:");
Fl_Button *replace_all = new Fl_Button(10, 70, 90, 25, "Replace All");
Fl_Button *replace_next = new Fl_Button(105, 70, 120, 25, "Replace Next");
Fl_Button *replace_cancel = new Fl_Button(230, 70, 60, 25, "Cancel");
\endcode
\section editor_callbacks Callbacks
Now that we've defined the GUI components of our editor, we
need to define our callback functions.
\subsection editor_changed_cb changed_cb()
This function will be called whenever the user changes any text in the
<tt>editor</tt> widget:
\code
void changed_cb(int, int nInserted, int nDeleted,int, const char*, void* v) {
if ((nInserted || nDeleted) && !loading) changed = 1;
EditorWindow *w = (EditorWindow *)v;
set_title(w);
if (loading) w->editor->show_insert_position();
}
\endcode
The <tt>set_title()</tt> function is one that we will write to set
the changed status on the current file. We're doing it this way
because we want to show the changed status in the window's
title bar.
\subsection editor_copy_cb copy_cb()
This callback function will call
<A href="Fl_Text_Editor.html#Fl_Text_Editor.kf_copy"><tt>kf_copy()</tt></A>
to copy the currently selected text to the clipboard:
\code
void copy_cb(Fl_Widget*, void* v) {
EditorWindow* e = (EditorWindow*)v;
Fl_Text_Editor::kf_copy(0, e->editor);
}
\endcode
\subsection editor_cut_cb cut_cb()
This callback function will call
<A href="Fl_Text_Editor.html#Fl_Text_Editor.kf_cut"><tt>kf_cut()</tt></A>
to cut the currently selected text to the clipboard:
\code
void cut_cb(Fl_Widget*, void* v) {
EditorWindow* e = (EditorWindow*)v;
Fl_Text_Editor::kf_cut(0, e->editor);
}
\endcode
\subsection editor_delete_cb delete_cb()
This callback function will call
<A href="Fl_Text_Buffer.html#Fl_Text_Buffer.remove_selection">
<tt>remove_selection()</tt></A>
to delete the currently selected text to the clipboard:
\code
void delete_cb(Fl_Widget*, void* v) {
textbuf->remove_selection();
}
\endcode
\subsection editor_find_cb find_cb()
This callback function asks for a search string using the
<A href="functions.html#fl_input2"><tt>fl_input()</tt></A>
convenience function and then calls the <tt>find2_cb()</tt>
function to find the string:
\code
void find_cb(Fl_Widget* w, void* v) {
EditorWindow* e = (EditorWindow*)v;
const char *val;
val = fl_input("Search String:", e->search);
if (val != NULL) {
// User entered a string - go find it!
strcpy(e->search, val);
find2_cb(w, v);
}
\endcode
\subsection editor_find2_cb find2_cb()
This function will find the next occurrence of the search
string. If the search string is blank then we want to pop up the
search dialog:
\code
void find2_cb(Fl_Widget* w, void* v) {
EditorWindow* e = (EditorWindow*)v;
if (e->search[0] == '\0') {
// Search string is blank; get a new one...
find_cb(w, v);
return;
}
int pos = e->editor->insert_position();
int found = textbuf->search_forward(pos, e->search, &pos);
if (found) {
// Found a match; select and update the position...
textbuf->select(pos, pos+strlen(e->search));
e->editor->insert_position(pos+strlen(e->search));
e->editor->show_insert_position();
}
else fl_alert("No occurrences of \'%s\' found!", e->search);
}
\endcode
If the search string cannot be found we use the
<A href="functions.html#fl_alert"><tt>fl_alert()</tt></A>
convenience function to display a message to that effect.
\subsection editor_new_cb new_cb()
This callback function will clear the editor widget and current
filename. It also calls the <tt>check_save()</tt> function to give the
user the opportunity to save the current file first as needed:
\code
void new_cb(Fl_Widget*, void*) {
if (!check_save()) return;
filename[0] = '\0';
textbuf->select(0, textbuf->length());
textbuf->remove_selection();
changed = 0;
textbuf->call_modify_callbacks();
}
\endcode
\subsection editor_open_cb open_cb()
This callback function will ask the user for a filename and then load
the specified file into the input widget and current filename. It also
calls the <tt>check_save()</tt> function to give the user the
opportunity to save the current file first as needed:
\code
void open_cb(Fl_Widget*, void*) {
if (!check_save()) return;
char *newfile = fl_file_chooser("Open File?", "*", filename);
if (newfile != NULL) load_file(newfile, -1);
}
\endcode
We call the <tt>load_file()</tt> function to actually load the file.
\subsection editor_paste_cb paste_cb()
This callback function will call
<A href="Fl_Text_Editor.html#Fl_Text_Editor.kf_paste"><tt>kf_paste()</tt></A>
to paste the clipboard at the current position:
\code
void paste_cb(Fl_Widget*, void* v) {
EditorWindow* e = (EditorWindow*)v;
Fl_Text_Editor::kf_paste(0, e->editor);
}
\endcode
\subsection editor_quit_cb quit_cb()
The quit callback will first see if the current file has been
modified, and if so give the user a chance to save it. It then exits
from the program:
\code
void quit_cb(Fl_Widget*, void*) {
if (changed && !check_save())
return;
exit(0);
}
\endcode
\subsection editor_replace_cb replace_cb()
The replace callback just shows the replace dialog:
\code
void replace_cb(Fl_Widget*, void* v) {
EditorWindow* e = (EditorWindow*)v;
e->replace_dlg->show();
}
\endcode
\subsection editor_replace2_cb replace2_cb()
This callback will replace the next occurrence of the replacement
string. If nothing has been entered for the replacement string, then
the replace dialog is displayed instead:
\code
void replace2_cb(Fl_Widget*, void* v) {
EditorWindow* e = (EditorWindow*)v;
const char *find = e->replace_find->value();
const char *replace = e->replace_with->value();
if (find[0] == '\0') {
// Search string is blank; get a new one...
e->replace_dlg->show();
return;
}
e->replace_dlg->hide();
int pos = e->editor->insert_position();
int found = textbuf->search_forward(pos, find, &pos);
if (found) {
// Found a match; update the position and replace text...
textbuf->select(pos, pos+strlen(find));
textbuf->remove_selection();
textbuf->insert(pos, replace);
textbuf->select(pos, pos+strlen(replace));
e->editor->insert_position(pos+strlen(replace));
e->editor->show_insert_position();
}
else fl_alert("No occurrences of \'%s\' found!", find);
}
\endcode
\subsection editor_replall_cb replall_cb()
This callback will replace all occurrences of the search
string in the file:
\code
void replall_cb(Fl_Widget*, void* v) {
EditorWindow* e = (EditorWindow*)v;
const char *find = e->replace_find->value();
const char *replace = e->replace_with->value();
find = e->replace_find->value();
if (find[0] == '\0') {
// Search string is blank; get a new one...
e->replace_dlg->show();
return;
}
e->replace_dlg->hide();
e->editor->insert_position(0);
int times = 0;
// Loop through the whole string
for (int found = 1; found;) {
int pos = e->editor->insert_position();
found = textbuf->search_forward(pos, find, &pos);
if (found) {
// Found a match; update the position and replace text...
textbuf->select(pos, pos+strlen(find));
textbuf->remove_selection();
textbuf->insert(pos, replace);
e->editor->insert_position(pos+strlen(replace));
e->editor->show_insert_position();
times++;
}
}
if (times) fl_message("Replaced %d occurrences.", times);
else fl_alert("No occurrences of \'%s\' found!", find);
}
\endcode
\subsection editor_replcan_cb replcan_cb()
This callback just hides the replace dialog:
\code
void replcan_cb(Fl_Widget*, void* v) {
EditorWindow* e = (EditorWindow*)v;
e->replace_dlg->hide();
}
\endcode
\subsection editor_save_cb save_cb()
This callback saves the current file. If the current filename is
blank it calls the "save as" callback:
\code
void save_cb(void) {
if (filename[0] == '\0') {
// No filename - get one!
saveas_cb();
return;
}
else save_file(filename);
}
\endcode
The <tt>save_file()</tt> function saves the current file to the
specified filename.
\subsection editor_saveas_cb saveas_cb()
This callback asks the user for a filename and saves the current file:
\code
void saveas_cb(void) {
char *newfile;
newfile = fl_file_chooser("Save File As?", "*", filename);
if (newfile != NULL) save_file(newfile);
}
\endcode
The <tt>save_file()</tt> function saves the current file to the
specified filename.
\section editor_other_functions Other Functions
Now that we've defined the callback functions, we need our support
functions to make it all work:
\subsection editor_check_save check_save()
This function checks to see if the current file needs to be saved. If
so, it asks the user if they want to save it:
\code
int check_save(void) {
if (!changed) return 1;
int r = fl_choice("The current file has not been saved.\n"
"Would you like to save it now?",
"Cancel", "Save", "Discard");
if (r == 1) {
save_cb(); // Save the file...
return !changed;
}
return (r == 2) ? 1 : 0;
}
\endcode
\subsection editor_load_file load_file()
This function loads the specified file into the <tt>textbuf</tt> class:
\code
int loading = 0;
void load_file(char *newfile, int ipos) {
loading = 1;
int insert = (ipos != -1);
changed = insert;
if (!insert) strcpy(filename, "");
int r;
if (!insert) r = textbuf->loadfile(newfile);
else r = textbuf->insertfile(newfile, ipos);
if (r)
fl_alert("Error reading from file \'%s\':\n%s.", newfile, strerror(errno));
else
if (!insert) strcpy(filename, newfile);
loading = 0;
textbuf->call_modify_callbacks();
}
\endcode
When loading the file we use the
<A href="Fl_Text_Buffer.html#Fl_Text_Buffer.loadfile"><tt>loadfile()</tt></A>
method to "replace" the text in the buffer, or the
<A href="Fl_Text_Buffer.html#Fl_Text_Buffer.insertfile"><tt>insertfile()</tt></A>
method to insert text in the buffer from the named file.
\subsection editor_save_file save_file()
This function saves the current buffer to the specified file:
\code
void save_file(char *newfile) {
if (textbuf->savefile(newfile))
fl_alert("Error writing to file \'%s\':\n%s.", newfile, strerror(errno));
else
strcpy(filename, newfile);
changed = 0;
textbuf->call_modify_callbacks();
}
\endcode
\subsection editor_set_title set_title()
This function checks the <tt>changed</tt> variable and updates the
window label accordingly:
\code
void set_title(Fl_Window* w) {
if (filename[0] == '\0') strcpy(title, "Untitled");
else {
char *slash;
slash = strrchr(filename, '/');
#ifdef WIN32
if (slash == NULL) slash = strrchr(filename, '\\');
#endif
if (slash != NULL) strcpy(title, slash + 1);
else strcpy(title, filename);
}
if (changed) strcat(title, " (modified)");
w->label(title);
}
\endcode
\section editor_main_function The main() Function
Once we've created all of the support functions, the only thing left
is to tie them all together with the <tt>main()</tt> function.
The <tt>main()</tt> function creates a new text buffer, creates a
new view (window) for the text, shows the window, loads the file on
the command-line (if any), and then enters the FLTK event loop:
\code
int main(int argc, char **argv) {
textbuf = new Fl_Text_Buffer;
Fl_Window* window = new_view();
window->show(1, argv);
if (argc > 1) load_file(argv[1], -1);
return Fl::run();
}
\endcode
\section editor_compiling Compiling the Editor
The complete source for our text editor can be found in the
<tt>test/editor.cxx</tt> source file. Both the Makefile and Visual C++
workspace include the necessary rules to build the editor. You can
also compile it using a standard compiler with:
\code
CC -o editor editor.cxx -lfltk -lXext -lX11 -lm
\endcode
or by using the <tt>fltk-config</tt> script with:
\code
fltk-config --compile editor.cxx
\endcode
As noted in
<A href="basics.html">Chapter 1</A>,
you may need to
include compiler and linker options to tell them where to find the FLTK
library. Also, the <tt>CC</tt> command may also be called <tt>gcc</tt>
or <tt>c++</tt> on your system.
Congratulations, you've just built your own text editor!
\section editor_final_product The Final Product
The final editor window should look like the image in Figure 4-2.
\image html editor.gif "Figure 4-2: The completed editor window"
\image latex editor.eps "The completed editor window" width=12cm
\section editor_advanced_features Advanced Features
Now that we've implemented the basic functionality, it is
time to show off some of the advanced features of the
<CODE>Fl_Text_Editor</CODE> widget.
\subsection editor_syntax Syntax Highlighting
The <CODE>Fl_Text_Editor</CODE> widget supports highlighting
of text with different fonts, colors, and sizes. The
implementation is based on the excellent
<A HREF="http://www.nedit.org/">NEdit</A>
text editor core, which
uses a parallel "style" buffer which tracks the font, color, and
size of the text that is drawn.
Styles are defined using the
<CODE>Fl_Text_Display::Style_Table_Entry</CODE> structure
defined in <CODE><FL/Fl_Text_Display.H></CODE>:
\code
struct Style_Table_Entry {
Fl_Color color;
Fl_Font font;
int size;
unsigned attr;
};
\endcode
The <CODE>color</CODE> member sets the color for the text,
the <CODE>font</CODE> member sets the FLTK font index to use,
and the <CODE>size</CODE> member sets the pixel size of the
text. The <CODE>attr</CODE> member is currently not used.
For our text editor we'll define 7 styles for plain code,
comments, keywords, and preprocessor directives:
\code
Fl_Text_Display::Style_Table_Entry styletable[] = { // Style table
{ FL_BLACK, FL_COURIER, FL_NORMAL_SIZE }, // A - Plain
{ FL_DARK_GREEN, FL_COURIER_ITALIC, FL_NORMAL_SIZE }, // B - Line comments
{ FL_DARK_GREEN, FL_COURIER_ITALIC, FL_NORMAL_SIZE }, // C - Block comments
{ FL_BLUE, FL_COURIER, FL_NORMAL_SIZE }, // D - Strings
{ FL_DARK_RED, FL_COURIER, FL_NORMAL_SIZE }, // E - Directives
{ FL_DARK_RED, FL_COURIER_BOLD, FL_NORMAL_SIZE }, // F - Types
{ FL_BLUE, FL_COURIER_BOLD, FL_NORMAL_SIZE } // G - Keywords
};
\endcode
You'll notice that the comments show a letter next to each
style - each style in the style buffer is referenced using a
character starting with the letter 'A'.
You call the <CODE>highlight_data()</CODE> method to associate the
style data and buffer with the text editor widget:
\code
Fl_Text_Buffer *stylebuf;
w->editor->highlight_data(stylebuf, styletable,
sizeof(styletable) / sizeof(styletable[0]),
'A', style_unfinished_cb, 0);
\endcode
Finally, you need to add a callback to the main text buffer so
that changes to the text buffer are mirrored in the style buffer:
\code
textbuf->add_modify_callback(style_update, w->editor);
\endcode
The <CODE>style_update()</CODE> function, like the <CODE>change_cb()</CODE>
function described earlier, is called whenever text is added or removed from
the text buffer. It mirrors the changes in the style buffer and then updates
the style data as necessary:
\code
//
// 'style_update()' - Update the style buffer...
//
void
style_update(int pos, // I - Position of update
int nInserted, // I - Number of inserted chars
int nDeleted, // I - Number of deleted chars
int nRestyled, // I - Number of restyled chars
const char *deletedText, // I - Text that was deleted
void *cbArg) { // I - Callback data
int start, // Start of text
end; // End of text
char last, // Last style on line
*style, // Style data
*text; // Text data
// If this is just a selection change, just unselect the style buffer...
if (nInserted == 0 && nDeleted == 0) {
stylebuf->unselect();
return;
}
// Track changes in the text buffer...
if (nInserted > 0) {
// Insert characters into the style buffer...
style = new char[nInserted + 1];
memset(style, 'A', nInserted);
style[nInserted] = '\0';
stylebuf->replace(pos, pos + nDeleted, style);
delete[] style;
} else {
// Just delete characters in the style buffer...
stylebuf->remove(pos, pos + nDeleted);
}
// Select the area that was just updated to avoid unnecessary
// callbacks...
stylebuf->select(pos, pos + nInserted - nDeleted);
// Re-parse the changed region; we do this by parsing from the
// beginning of the line of the changed region to the end of
// the line of the changed region... Then we check the last
// style character and keep updating if we have a multi-line
// comment character...
start = textbuf->line_start(pos);
end = textbuf->line_end(pos + nInserted - nDeleted);
text = textbuf->text_range(start, end);
style = stylebuf->text_range(start, end);
last = style[end - start - 1];
style_parse(text, style, end - start);
stylebuf->replace(start, end, style);
((Fl_Text_Editor *)cbArg)->redisplay_range(start, end);
if (last != style[end - start - 1]) {
// The last character on the line changed styles, so reparse the
// remainder of the buffer...
free(text);
free(style);
end = textbuf->length();
text = textbuf->text_range(start, end);
style = stylebuf->text_range(start, end);
style_parse(text, style, end - start);
stylebuf->replace(start, end, style);
((Fl_Text_Editor *)cbArg)->redisplay_range(start, end);
}
free(text);
free(style);
}
\endcode
The <CODE>style_parse()</CODE> function scans a copy of the
text in the buffer and generates the necessary style characters
for display. It assumes that parsing begins at the start of a line:
\code
//
// 'style_parse()' - Parse text and produce style data.
//
void
style_parse(const char *text,
char *style,
int length) {
char current;
int col;
int last;
char buf[255],
*bufptr;
const char *temp;
for (current = *style, col = 0, last = 0; length > 0; length --, text ++) {
if (current == 'A') {
// Check for directives, comments, strings, and keywords...
if (col == 0 && *text == '#') {
// Set style to directive
current = 'E';
} else if (strncmp(text, "//", 2) == 0) {
current = 'B';
} else if (strncmp(text, "/*", 2) == 0) {
current = 'C';
} else if (strncmp(text, "\\\"", 2) == 0) {
// Quoted quote...
*style++ = current;
*style++ = current;
text ++;
length --;
col += 2;
continue;
} else if (*text == '\"') {
current = 'D';
} else if (!last && islower(*text)) {
// Might be a keyword...
for (temp = text, bufptr = buf;
islower(*temp) && bufptr < (buf + sizeof(buf) - 1);
*bufptr++ = *temp++);
if (!islower(*temp)) {
*bufptr = '\0';
bufptr = buf;
if (bsearch(&bufptr, code_types,
sizeof(code_types) / sizeof(code_types[0]),
sizeof(code_types[0]), compare_keywords)) {
while (text < temp) {
*style++ = 'F';
text ++;
length --;
col ++;
}
text --;
length ++;
last = 1;
continue;
} else if (bsearch(&bufptr, code_keywords,
sizeof(code_keywords) / sizeof(code_keywords[0]),
sizeof(code_keywords[0]), compare_keywords)) {
while (text < temp) {
*style++ = 'G';
text ++;
length --;
col ++;
}
text --;
length ++;
last = 1;
continue;
}
}
}
} else if (current == 'C' && strncmp(text, "*/", 2) == 0) {
// Close a C comment...
*style++ = current;
*style++ = current;
text ++;
length --;
current = 'A';
col += 2;
continue;
} else if (current == 'D') {
// Continuing in string...
if (strncmp(text, "\\\"", 2) == 0) {
// Quoted end quote...
*style++ = current;
*style++ = current;
text ++;
length --;
col += 2;
continue;
} else if (*text == '\"') {
// End quote...
*style++ = current;
col ++;
current = 'A';
continue;
}
}
// Copy style info...
if (current == 'A' && (*text == '{' || *text == '}')) *style++ = 'G';
else *style++ = current;
col ++;
last = isalnum(*text) || *text == '.';
if (*text == '\n') {
// Reset column and possibly reset the style
col = 0;
if (current == 'B' || current == 'E') current = 'A';
}
}
}
\endcode
\htmlonly
<hr>
<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
<a class="el" href="common.html">[Previous]&nbsp; 3 - Common Widgets and Attributes</a>&nbsp;
<a class="el" href="drawing.html">[Next]&nbsp; 5 - Drawing Things in FLTK</a>&nbsp;
\endhtmlonly
*/

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

View File

@ -1,301 +0,0 @@
/**
\page enumerations C - FLTK Enumerations
\note This file is not actively maintained any more, but is left
here as a reference, until the doxygen documentation is
completed.
\sa \ref FL/Enumerations.H.
This appendix lists the enumerations provided in the
<FL/Enumerations.H> header file, organized by section.
Constants whose value is zero are marked with "(0)",
this is often useful to know when programming.
\section enumerations_versions Version Numbers
The FLTK version number is stored in a number of compile-time constants:
\li <tt>FL_MAJOR_VERSION</tt> - The major release number, currently 1.
\li <tt>FL_MINOR_VERSION</tt> - The minor release number, currently 3.
\li <tt>FL_PATCH_VERSION</tt> - The patch release number, currently 0.
\li <tt>FL_VERSION</tt> - A combined floating-point version number for
the major, minor, and patch release numbers, currently 1.0300.
<A NAME="events"> </A> <!-- For old HTML links only ! -->
\section enumerations_events Events
Events are identified by an <tt>Fl_Event</tt> enumeration value. The
following events are currently defined:
\li <tt>FL_NO_EVENT</tt> - No event (or an event fltk does not
understand) occurred (0).
\li <tt>FL_PUSH</tt> - A mouse button was pushed.
\li <tt>FL_RELEASE</tt> - A mouse button was released.
\li <tt>FL_ENTER</tt> - The mouse pointer entered a widget.
\li <tt>FL_LEAVE</tt> - The mouse pointer left a widget.
\li <tt>FL_DRAG</tt> - The mouse pointer was moved with a button pressed.
\li <tt>FL_FOCUS</tt> - A widget should receive keyboard focus.
\li <tt>FL_UNFOCUS</tt> - A widget loses keyboard focus.
\li <tt>FL_KEYBOARD</tt> - A key was pressed.
\li <tt>FL_CLOSE</tt> - A window was closed.
\li <tt>FL_MOVE</tt> - The mouse pointer was moved with no buttons pressed.
\li <tt>FL_SHORTCUT</tt> - The user pressed a shortcut key.
\li <tt>FL_DEACTIVATE</tt> - The widget has been deactivated.
\li <tt>FL_ACTIVATE</tt> - The widget has been activated.
\li <tt>FL_HIDE</tt> - The widget has been hidden.
\li <tt>FL_SHOW</tt> - The widget has been shown.
\li <tt>FL_PASTE</tt> - The widget should paste the contents of the
clipboard.
\li <tt>FL_SELECTIONCLEAR</tt> - The widget should clear any selections
made for the clipboard.
\li <tt>FL_MOUSEWHEEL</tt> - The horizontal or vertical mousewheel was turned.
\li <tt>FL_DND_ENTER</tt> - The mouse pointer entered a widget dragging data.
\li <tt>FL_DND_DRAG</tt> - The mouse pointer was moved dragging data.
\li <tt>FL_DND_LEAVE</tt> - The mouse pointer left a widget still dragging
data.
\li <tt>FL_DND_RELEASE</tt> - Dragged data is about to be dropped.
<a name="when"> </A> <!-- For old HTML links only ! -->
\section enumerations_when Callback "When" Conditions
The following constants determine when a callback is performed:
\li <tt>FL_WHEN_NEVER</tt> - Never call the callback (0).
\li <tt>FL_WHEN_CHANGED</tt> - Do the callback only when the widget
value changes.
\li <tt>FL_WHEN_NOT_CHANGED</tt> - Do the callback whenever the user
interacts with the widget.
\li <tt>FL_WHEN_RELEASE</tt> - Do the callback when the button or key
is released and the value changes.
\li <tt>FL_WHEN_ENTER_KEY</tt> - Do the callback when the user presses
the ENTER key and the value changes.
\li <tt>FL_WHEN_RELEASE_ALWAYS</tt> - Do the callback when the button
or key is released, even if the value doesn't change.
\li <tt>FL_WHEN_ENTER_KEY_ALWAYS</tt> - Do the callback when the user
presses the ENTER key, even if the value doesn't change.
<A NAME="button_values"> </A> <!-- For old HTML links only ! -->
\section enumeration_button_values Fl::event_button() Values
The following constants define the button numbers for <tt>FL_PUSH</tt> and
<tt>FL_RELEASE</tt> events:
\li <tt>FL_LEFT_MOUSE</tt> - the left mouse button
\li <tt>FL_MIDDLE_MOUSE</tt> - the middle mouse button
\li <tt>FL_RIGHT_MOUSE</tt> - the right mouse button
<A NAME="key_values"> </A> <!-- For old HTML links only ! -->
\section enumerations_event_key Fl::event_key() Values
The following constants define the non-ASCII keys on the keyboard for <tt>
FL_KEYBOARD</tt> and <tt>FL_SHORTCUT</tt> events:
\li <tt>FL_Button</tt> - A mouse button; use <tt>Fl_Button + n</tt>
for mouse button <tt>n</tt>.
\li <tt>FL_BackSpace</tt> - The backspace key.
\li <tt>FL_Tab</tt> - The tab key.
\li <tt>FL_Enter</tt> - The enter key.
\li <tt>FL_Pause</tt> - The pause key.
\li <tt>FL_Scroll_Lock</tt> - The scroll lock key.
\li <tt>FL_Escape</tt> - The escape key.
\li <tt>FL_Home</tt> - The home key.
\li <tt>FL_Left</tt> - The left arrow key.
\li <tt>FL_Up</tt> - The up arrow key.
\li <tt>FL_Right</tt> - The right arrow key.
\li <tt>FL_Down</tt> - The down arrow key.
\li <tt>FL_Page_Up</tt> - The page-up key.
\li <tt>FL_Page_Down</tt> - The page-down key.
\li <tt>FL_End</tt> - The end key.
\li <tt>FL_Print</tt> - The print (or print-screen) key.
\li <tt>FL_Insert</tt> - The insert key.
\li <tt>FL_Menu</tt> - The menu key.
\li <tt>FL_Num_Lock</tt> - The num lock key.
\li <tt>FL_KP</tt> - One of the keypad numbers; use <tt>FL_KP + n</tt>
for number <tt>n</tt>.
\li <tt>FL_KP_Enter</tt> - The enter key on the keypad.
\li <tt>FL_F</tt> - One of the function keys; use <tt>FL_F + n</tt>
for function key <tt>n</tt>.
\li <tt>FL_Shift_L</tt> - The lefthand shift key.
\li <tt>FL_Shift_R</tt> - The righthand shift key.
\li <tt>FL_Control_L</tt> - The lefthand control key.
\li <tt>FL_Control_R</tt> - The righthand control key.
\li <tt>FL_Caps_Lock</tt> - The caps lock key.
\li <tt>FL_Meta_L</tt> - The left meta/Windows key.
\li <tt>FL_Meta_R</tt> - The right meta/Windows key.
\li <tt>FL_Alt_L</tt> - The left alt key.
\li <tt>FL_Alt_R</tt> - The right alt key.
\li <tt>FL_Delete</tt> - The delete key.
\section enumerations_event_state Fl::event_state() Values
The following constants define bits in the <tt>Fl::event_state()</tt>
value:
\li <tt>FL_SHIFT</tt> - One of the shift keys is down.
\li <tt>FL_CAPS_LOCK</tt> - The caps lock is on.
\li <tt>FL_CTRL</tt> - One of the ctrl keys is down.
\li <tt>FL_ALT</tt> - One of the alt keys is down.
\li <tt>FL_NUM_LOCK</tt> - The num lock is on.
\li <tt>FL_META</tt> - One of the meta/Windows keys is down.
\li <tt>FL_COMMAND</tt> - An alias for <tt>FL_CTRL</tt> on WIN32 and X11,
or <tt>FL_META</tt> on MacOS X.
\li <tt>FL_SCROLL_LOCK</tt> - The scroll lock is on.
\li <tt>FL_BUTTON1</tt> - Mouse button 1 is pushed.
\li <tt>FL_BUTTON2</tt> - Mouse button 2 is pushed.
\li <tt>FL_BUTTON3</tt> - Mouse button 3 is pushed.
\li <tt>FL_BUTTONS</tt> - Any mouse button is pushed.
\li <tt>FL_BUTTON(n)</tt> - Mouse button N (N &gt; 0) is pushed.
<!-- NEED 4in -->
<a name="align"> </A> <!-- For old HTML links only ! -->
\section enumerations_alignment Alignment Values
The following constants define bits that can be used with
<A href=Fl_Widget.html#Fl_Widget.align><tt>Fl_Widget::align()</tt></A>
to control the positioning of the label:
\li <tt>FL_ALIGN_CENTER</tt> - The label is centered (0).
\li <tt>FL_ALIGN_TOP</tt> - The label is top-aligned.
\li <tt>FL_ALIGN_BOTTOM</tt> - The label is bottom-aligned.
\li <tt>FL_ALIGN_LEFT</tt> - The label is left-aligned.
\li <tt>FL_ALIGN_RIGHT</tt> - The label is right-aligned.
\li <tt>FL_ALIGN_CLIP</tt> - The label is clipped to the widget.
\li <tt>FL_ALIGN_WRAP</tt> - The label text is wrapped as needed.
\li <tt>FL_ALIGN_TOP_LEFT</tt>
\li <tt>FL_ALIGN_TOP_RIGHT</tt>
\li <tt>FL_ALIGN_BOTTOM_LEFT</tt>
\li <tt>FL_ALIGN_BOTTOM_RIGHT</tt>
\li <tt>FL_ALIGN_LEFT_TOP</tt>
\li <tt>FL_ALIGN_RIGHT_TOP</tt>
\li <tt>FL_ALIGN_LEFT_BOTTOM</tt>
\li <tt>FL_ALIGN_RIGHT_BOTTOM</tt>
\li <tt>FL_ALIGN_INSIDE</tt> - 'or' this with other values to put
label inside the widget.
<a name="fonts"> </A> <!-- For old HTML links only ! -->
\section enumerations_fonts Fonts
The following constants define the standard FLTK fonts:
\li <tt>FL_HELVETICA</tt> - Helvetica (or Arial) normal (0).
\li <tt>FL_HELVETICA_BOLD</tt> - Helvetica (or Arial) bold.
\li <tt>FL_HELVETICA_ITALIC</tt> - Helvetica (or Arial) oblique.
\li <tt>FL_HELVETICA_BOLD_ITALIC</tt> - Helvetica (or Arial) bold-oblique.
\li <tt>FL_COURIER</tt> - Courier normal.
\li <tt>FL_COURIER_BOLD</tt> - Courier bold.
\li <tt>FL_COURIER_ITALIC</tt> - Courier italic.
\li <tt>FL_COURIER_BOLD_ITALIC</tt> - Courier bold-italic.
\li <tt>FL_TIMES</tt> - Times roman.
\li <tt>FL_TIMES_BOLD</tt> - Times bold.
\li <tt>FL_TIMES_ITALIC</tt> - Times italic.
\li <tt>FL_TIMES_BOLD_ITALIC</tt> - Times bold-italic.
\li <tt>FL_SYMBOL</tt> - Standard symbol font.
\li <tt>FL_SCREEN</tt> - Default monospaced screen font.
\li <tt>FL_SCREEN_BOLD</tt> - Default monospaced bold screen font.
\li <tt>FL_ZAPF_DINGBATS</tt> - Zapf-dingbats font.
<a name="colors"> </A> <!-- For old HTML links only ! -->
\section enumerations_colors Colors
The <tt>Fl_Color</tt> enumeration type holds a FLTK color value.
Colors are either 8-bit indexes into a virtual colormap or 24-bit RGB
color values. Color indices occupy the lower 8 bits of the value, while
RGB colors occupy the upper 24 bits, for a byte organization of RGBI.
\subsection enumerations_color_constants Color Constants
Constants are defined for the user-defined foreground and background
colors, as well as specific colors and the start of the grayscale ramp
and color cube in the virtual colormap. Inline functions are provided to
retrieve specific grayscale, color cube, or RGB color values.
The following color constants can be used to access the user-defined
colors:
\li <tt>FL_BACKGROUND_COLOR</tt> - the default background color
\li <tt>FL_BACKGROUND2_COLOR</tt> - the default
background color for text, list, and valuator widgets
\li <tt>FL_FOREGROUND_COLOR</tt> - the default
foreground color (0) used for labels and text
\li <tt>FL_INACTIVE_COLOR</tt> - the inactive foreground color
\li <tt>FL_SELECTION_COLOR</tt> - the default selection/highlight color
The following color constants can be used to access the colors from the
FLTK standard color cube:
\li <tt>FL_BLACK</tt>
\li <tt>FL_BLUE</tt>
\li <tt>FL_CYAN</tt>
\li <tt>FL_DARK_BLUE</tt>
\li <tt>FL_DARK_CYAN</tt>
\li <tt>FL_DARK_GREEN</tt>
\li <tt>FL_DARK_MAGENTA</tt>
\li <tt>FL_DARK_RED</tt>
\li <tt>FL_DARK_YELLOW</tt>
\li <tt>FL_GREEN</tt>
\li <tt>FL_MAGENTA</tt>
\li <tt>FL_RED</tt>
\li <tt>FL_WHITE</tt>
\li <tt>FL_YELLOW</tt>
The inline methods for getting a grayscale, color cube, or
RGB color value are described in
<A HREF="functions.html#functions">Appendix B - Function Reference</A>.
<a name="cursor"> </A> <!-- For old HTML links only ! -->
\section enumerations_cursors Cursors
The following constants define the mouse cursors that are available in
FLTK. The double-headed arrows are bitmaps
provided by FLTK on X, the others are provided by system-defined
cursors.
\li <tt>FL_CURSOR_DEFAULT</tt> - the default cursor, usually an arrow (0)
\li <tt>FL_CURSOR_ARROW</tt> - an arrow pointer
\li <tt>FL_CURSOR_CROSS</tt> - crosshair
\li <tt>FL_CURSOR_WAIT</tt> - watch or hourglass
\li <tt>FL_CURSOR_INSERT</tt> - I-beam
\li <tt>FL_CURSOR_HAND</tt> - hand (uparrow on MSWindows)
\li <tt>FL_CURSOR_HELP</tt> - question mark
\li <tt>FL_CURSOR_MOVE</tt> - 4-pointed arrow
\li <tt>FL_CURSOR_NS</tt> - up/down arrow
\li <tt>FL_CURSOR_WE</tt> - left/right arrow
\li <tt>FL_CURSOR_NWSE</tt> - diagonal arrow
\li <tt>FL_CURSOR_NESW</tt> - diagonal arrow
\li <tt>FL_CURSOR_NONE</tt> - invisible
\section enumerations_file_when FD "When" Conditions
\li <tt>FL_READ</tt> - Call the callback when there is data to be
read.
\li <tt>FL_WRITE</tt> - Call the callback when data can be written
without blocking.
\li <tt>FL_EXCEPT</tt> - Call the callback if an exception occurs on
the file.
<a name="damage"> </A> <!-- For old HTML links only ! -->
\section enumerations_damage Damage Masks
The following damage mask bits are used by the standard FLTK widgets:
\li <tt>FL_DAMAGE_CHILD</tt> - A child needs to be redrawn.
\li <tt>FL_DAMAGE_EXPOSE</tt> - The window was exposed.
\li <tt>FL_DAMAGE_SCROLL</tt> - The <tt>Fl_Scroll</tt> widget was scrolled.
\li <tt>FL_DAMAGE_OVERLAY</tt> - The overlay planes need to be redrawn.
\li <tt>FL_DAMAGE_USER1</tt> - First user-defined damage bit.
\li <tt>FL_DAMAGE_USER2</tt> - Second user-defined damage bit.
\li <tt>FL_DAMAGE_ALL</tt> - Everything needs to be redrawn.
\htmlonly
<hr>
<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
<a class="el" href="globals_func.html">[Previous] B - Function Reference</a>&nbsp;
<a class="el" href="glut.html">[Next]</a>&nbsp;
\ref glut
\endhtmlonly
*/

View File

@ -1,389 +0,0 @@
/**
\page events 6 - Handling Events
This chapter discusses the FLTK event model and how to handle
events in your program or widget.
\section events_model The FLTK Event Model
Every time a user moves the mouse pointer, clicks a button,
or presses a key, an event is generated and sent to your
application. Events can also come from other programs like the
window manager.
Events are identified by the integer argument passed to the
<A href="subclassing.html#handle"><tt>Fl_Widget::handle()</tt></A>
virtual
method. Other information about the most recent event is stored in
static locations and acquired by calling the \ref events_event_xxx
methods. This static information remains valid until the next event
is read from the window system, so it is ok to look at it outside
of the <tt>handle()</tt> method.
\section events_mouse Mouse Events
\subsection events_fl_push FL_PUSH
A mouse button has gone down with the mouse pointing at this
widget. You can find out what button by calling
<A href="Fl.html#Fl.event_button"><tt>Fl::event_button()</tt></A>.
You find out the mouse position by calling
<A href="Fl.html#Fl.event_x"><tt>Fl::event_x()</tt></A>
and
<A href="Fl.html#Fl.event_y"> <tt>Fl::event_y()</tt></A>.
A widget indicates that it &quot;wants&quot; the mouse click
by returning non-zero from its
<A href="subclassing.html#handle"><tt>handle()</tt></A>
method. It will then become the
<A href="Fl.html#Fl.pushed"><tt>Fl::pushed()</tt></A>
widget and will get <tt>FL_DRAG</tt> and
the matching <tt>FL_RELEASE</tt> events. If <tt>handle()</tt>
returns zero then FLTK will try sending the <tt>FL_PUSH</tt> to
another widget.
\subsection events_fl_drag FL_DRAG
The mouse has moved with a button held down. The current
button state is in
<a href="Fl.html#Fl.event_state"><tt>Fl::event_state()</tt></a>.
The mouse position is in
<a href="Fl.html#Fl.event_x"><tt>Fl::event_x()</tt></a>
and
<a href="Fl.html#Fl.event_y"><tt>Fl::event_y()</tt></a>.
In order to receive <tt>FL_DRAG</tt> events, the widget must
return non-zero when handling <tt>FL_PUSH</tt>.
\subsection events_fl_release FL_RELEASE
A mouse button has been released. You can find out what button by calling
<A href="Fl.html#Fl.event_button"><tt>Fl::event_button()</tt></A>.
In order to receive the <tt>FL_RELEASE</tt> event, the widget must
return non-zero when handling <tt>FL_PUSH</tt>.
\subsection events_fl_move FL_MOVE
The mouse has moved without any mouse buttons held down.
This event is sent to the
<A href="Fl.html#Fl.belowmouse"><tt>Fl::belowmouse()</tt></A>
widget.
In order to receive <tt>FL_MOVE</tt> events, the widget must
return non-zero when handling <tt>FL_ENTER</tt>.
\subsection events_fl_mousewheel FL_MOUSEWHEEL
The user has moved the mouse wheel. The
<A HREF="Fl.html#Fl.event_dx"><tt>Fl::event_dx()</tt></A>
and
<A HREF="Fl.html#Fl.event_dy"><tt>Fl::event_dy()</tt></A>
methods can be used to find the amount to scroll horizontally and
vertically.
\section events_focus Focus Events
\subsection events_fl_enter FL_ENTER
The mouse has been moved to point at this widget. This can
be used for highlighting feedback. If a widget wants to
highlight or otherwise track the mouse, it indicates this by
returning non-zero from its
<A href="Fl.html#Fl.handle"><tt>handle()</tt></A>
method. It then becomes the
<A href="Fl.html#Fl.belowmouse"><tt>Fl::belowmouse()</tt></A>
widget and will receive <tt>FL_MOVE</tt> and <tt>FL_LEAVE</tt>
events.
\subsection events_fl_leave FL_LEAVE
The mouse has moved out of the widget.
In order to receive the <tt>FL_LEAVE</tt> event, the widget must
return non-zero when handling <tt>FL_ENTER</tt>.
\subsection events_fl_focus FL_FOCUS
This indicates an <I>attempt</I> to give a widget the
keyboard focus.
If a widget wants the focus, it should change itself to
display the fact that it has the focus, and return non-zero from its
<A href="Fl_Widget.html#Fl_Widget.handle"><tt>handle()</tt></A>
method. It then becomes the
<A href="Fl.html#Fl.focus"><tt>Fl::focus()</tt></A>
widget and gets
<tt>FL_KEYDOWN</tt>, <tt>FL_KEYUP</tt>, and <tt>FL_UNFOCUS</tt>
events.
The focus will change either because the window manager
changed which window gets the focus, or because the user tried
to navigate using tab, arrows, or other keys. You can check
<A href="Fl.html#Fl.event_key"><tt>Fl::event_key()</tt></A>
to figure out why it moved. For navigation it will be the key
pressed and interaction with the window manager it will be zero.
\subsection events_fl_unfocus FL_UNFOCUS
This event is sent to the previous
<A href="Fl.html#Fl.focus"><tt>Fl::focus()</tt></A>
widget when another widget gets the focus or the window loses focus.
\section events_keyboard Keyboard Events
\subsection events_fl_keydown FL_KEYDOWN, FL_KEYUP
A key was pressed or released. The key can be found in
<A href="Fl.html#Fl.event_key"><tt>Fl::event_key()</tt></A>.
The text that the key should insert can be found with
<A href="Fl.html#Fl.event_text"><tt>Fl::event_text()</tt></A>
and its length is in
<A href="Fl.html#Fl.event_length"><tt>Fl::event_length()</tt></A>.
If you use the key <tt>handle()</tt> should return 1. If you
return zero then FLTK assumes you ignored the key and will
then attempt to send it to a parent widget. If none of them want
it, it will change the event into a <tt>FL_SHORTCUT</tt> event.
To receive <CODE>FL_KEYBOARD</CODE> events you must also
respond to the <CODE>FL_FOCUS</CODE> and <CODE>FL_UNFOCUS</CODE>
events.
If you are writing a text-editing widget you may also want to
call the
<a href="Fl.html#Fl.compose"><tt>Fl::compose()</tt></a>
function to translate individual keystrokes into foreign characters.
<code>FL_KEYUP</code> events are sent to the widget that
currently has focus. This is not necessarily the same widget
that received the corresponding <code>FL_KEYDOWN</code> event
because focus may have changed between events.
\subsection events_fl_shortcut FL_SHORTCUT
If the
<A href="Fl.html#Fl.focus"><tt>Fl::focus()</tt></A>
widget is zero or ignores an <tt>FL_KEYBOARD</tt> event then
FLTK tries sending this event to every widget it can, until one
of them returns non-zero. <tt>FL_SHORTCUT</tt> is first sent to
the <tt>Fl::belowmouse()</tt> widget, then its parents and
siblings, and eventually to every widget in the window, trying
to find an object that returns non-zero. FLTK tries really hard
to not to ignore any keystrokes!
You can also make &quot;global&quot; shortcuts by using
<A href="Fl.html#Fl.add_handler"><tt>Fl::add_handler()</tt></A>.
A global shortcut will work no matter what windows are displayed
or which one has the focus.
\section events_widget Widget Events
\subsection events_fl_deactivate FL_DEACTIVATE
This widget is no longer active, due to
<A href="Fl_Widget.html#Fl_Widget.deactivate"><tt>deactivate()</tt></A>
being called on it or one of its parents. <tt> active()</tt> may
still be true after this, the widget is only active if
<tt>active()</tt> is true on it and all its parents (use <tt>active_r()</tt> to check this).
\subsection events_fl_activate FL_ACTIVATE
This widget is now active, due to
<A href="Fl_Widget.html#Fl_Widget.activate"><tt>activate()</tt></A>
being called on it or one of its parents.
\subsection events_fl_hide FL_HIDE
This widget is no longer visible, due to
<A href="Fl_Widget.html#Fl_Widget.hide"><tt>hide()</tt></a>
being called on it or one of its parents, or due to a parent window
being minimized. <tt>visible()</tt> may still be true after
this, but the widget is visible only if <tt>visible()</tt> is
true for it and all its parents (use <tt>visible_r()</tt> to
check this).
\subsection events_fl_show FL_SHOW
This widget is visible again, due to
<a href="Fl_Widget.html#Fl_Widget.show"><tt>show()</tt></A>
being called on it or one of its parents, or due to a parent window
being restored. <I>Child <tt>Fl_Window</tt>s respond to this by
actually creating the window if not done already, so if you
subclass a window, be sure to pass <tt>FL_SHOW</tt> to the base
class <tt>handle()</tt> method!</I>
\section events_clipboard Clipboard Events
\subsection events_fl_paste FL_PASTE
You should get this event some time after you call
<A href="Fl.html#Fl.paste"><tt>Fl::paste()</tt></A>.
The contents of
<A href="Fl.html#Fl.event_text"><tt>Fl::event_text()</tt></A>
is the text to insert and the number of characters is in
<A href="Fl.html#Fl.event_length"><tt>Fl::event_length()</tt></A>.
\subsection events_fl_selectionclear FL_SELECTIONCLEAR
The <A href="Fl.html#Fl.selection_owner"><tt>Fl::selection_owner()</tt></A>
will get this event before the selection is moved to another
widget. This indicates that some other widget or program has
claimed the selection. Motif programs used this to clear the
selection indication. Most modern programs ignore this.
<A NAME="dnd"></A> <!-- For old HTML links only ! -->
\section events_dnd Drag and Drop Events
FLTK supports drag and drop of text and files from any
application on the desktop. Text is transfered using
the current code page. Files are received as a list of full path
and file names, seperated by newline. On some platforms, path
names are prepended with <tt>file://</tt>.
The drag and drop data is available in <tt>Fl::event_text()</tt>
at the concluding <tt>FL_PASTE</tt>. On some platforms, the
event text is also available for the <tt>FL_DND_*</tt> events,
however application must not depend on that behavior because it
depends on the protocol used on each platform.
<tt>FL_DND_*</tt> events cannot be used in widgets derived
from <tt>Fl_Group</tt> or <tt>Fl_Window</tt>.
\subsection events_fl_dnd_enter FL_DND_ENTER
The mouse has been moved to point at this widget. A widget
that is interested in receiving drag'n'drop data must return 1
to receive FL_DND_DRAG, FL_DND_LEAVE and FL_DND_RELEASE events.
\subsection events_fl_dnd_drag FL_DND_DRAG
The mouse has been moved inside a widget while dragging data.
A widget that is interested in receiving drag'n'drop data should
indicate the possible drop position.
\subsection events_fl_dnd_leave FL_DND_LEAVE
The mouse has moved out of the widget.
\subsection events_fl_dnd_release FL_DND_RELEASE
The user has released the mouse button dropping data into
the widget. If the widget returns 1, it will receive the data in
the immediatly following FL_PASTE event.
<!-- NEED 6in -->
<A NAME="event_xxx"></A> <!-- For old HTML links only ! -->
\section events_event_xxx Fl::event_*() methods
FLTK keeps the information about the most recent event in
static storage. This information is good until the next event is
processed. Thus it is valid inside <tt>handle()</tt> and
<tt>callback()</tt> methods.
These are all trivial inline functions and thus very fast and small:
\li <A HREF="Fl.html#Fl.event_button"><tt>Fl::event_button</tt></A>
\li <A HREF="Fl.html#Fl.event_clicks"><tt>Fl::event_clicks</tt></A>
\li <A HREF="Fl.html#Fl.event_dx"><tt>Fl::event_dx</tt></A>
\li <A HREF="Fl.html#Fl.event_dy"><tt>Fl::event_dy</tt></A>
\li <A HREF="Fl.html#Fl.event_inside"><tt>Fl::event_inside</tt></A>
\li <A HREF="Fl.html#Fl.event_is_click"><tt>Fl::event_is_click</tt></A>
\li <A HREF="Fl.html#Fl.event_key"><tt>Fl::event_key</tt></A>
\li <A HREF="Fl.html#Fl.event_length"><tt>Fl::event_length</tt></A>
\li <A HREF="Fl.html#Fl.event_state"><tt>Fl::event_state</tt></A>
\li <A HREF="Fl.html#Fl.event_text"><tt>Fl::event_text</tt></A>
\li <A HREF="Fl.html#Fl.event_x"><tt>Fl::event_x</tt></A>
\li <A HREF="Fl.html#Fl.event_x_root"><tt>Fl::event_x_root</tt></A>
\li <A HREF="Fl.html#Fl.event_y"><tt>Fl::event_y</tt></A>
\li <A HREF="Fl.html#Fl.event_y_root"><tt>Fl::event_y_root</tt></A>
\li <A HREF="Fl.html#Fl.get_key"><tt>Fl::get_key</tt></A>
\li <A HREF="Fl.html#Fl.get_mouse"><tt>Fl::get_mouse</tt></A>
\li <A HREF="Fl.html#Fl.test_shortcut"><tt>Fl::test_shortcut</tt></A>
<A NAME="event_xxx"></A> <!-- For old HTML links only ! -->
\section events_propagation Event Propagation
FLTK follows very simple and unchangeable rules for sending
events. The major innovation is that widgets can indicate (by
returning 0 from the <tt>handle()</tt> method) that they are not
interested in an event, and FLTK can then send that event
elsewhere. This eliminates the need for &quot;interests&quot;
(event masks or tables), and this is probably the main reason
FLTK is much smaller than other toolkits.
Most events are sent directly to the <tt>handle()</tt> method
of the <tt>Fl_Window</tt> that the window system says they
belong to. The window (actually the <tt>Fl_Group</tt> that
<tt>Fl_Window</tt> is a subclass of) is responsible for sending
the events on to any child widgets. To make the
<tt>Fl_Group</tt> code somewhat easier, FLTK sends some events
(<tt>FL_DRAG</tt>, <tt>FL_RELEASE</tt>, <tt>FL_KEYBOARD</tt>,
<tt>FL_SHORTCUT</tt>, <tt>FL_UNFOCUS</tt>, and
<tt>FL_LEAVE</tt>) directly to leaf widgets. These procedures
control those leaf widgets:
\li <A HREF="Fl.html#Fl.add_handler"><tt>Fl::add_handler</tt></A>
\li <A HREF="Fl.html#Fl.belowmouse"><tt>Fl::belowmouse</tt></A>
\li <A HREF="Fl.html#Fl.focus"><tt>Fl::focus</tt></A>
\li <A HREF="Fl.html#Fl.grab"><tt>Fl::grab</tt></A>
\li <A HREF="Fl.html#Fl.modal"><tt>Fl::modal</tt></A>
\li <A HREF="Fl.html#Fl.pushed"><tt>Fl::pushed</tt></A>
\li <A HREF="Fl.html#Fl.release"><tt>Fl::release</tt></A>
\li <A HREF="Fl_Widget.html#Fl_Widget.take_focus"><tt>Fl_Widget::take_focus</tt></A>
<A name="compose"></A> <!-- For old HTML links only ! -->
\section events_compose_characters FLTK Compose-Character Sequences
The foreign-letter compose processing done by the
<A href="Fl_Input.html#compose"><tt>Fl_Input</tt></a>
widget is provided in a function that you can call if you are writing
your own text editor widget.
FLTK uses its own compose processing to allow "preview" of
the partially composed sequence, which is impossible with the
usual "dead key" processing.
Although currently only characters in the ISO-8859-1
character set are handled, you should call this in case any
enhancements to the processing are done in the future. The
interface has been designed to handle arbitrary UTF-8 encoded
text.
The following methods are provided for character composition:
\li <A HREF="Fl.html#Fl.compose"><tt>Fl::compose()</tt></A>
\li <A HREF="Fl.html#Fl.compose_reset"><tt>Fl::compose_reset()</tt></A>
\htmlonly
<hr>
<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
<a class="el" href="drawing.html">[Previous]&nbsp; 5 - Drawing Things in FLTK</a>&nbsp;
<a class="el" href="subclassing.html">[Next]&nbsp; 7 - Adding and Extending Widgets</a>&nbsp;
\endhtmlonly
*/

View File

@ -1,651 +0,0 @@
/**
\page examples K - Example Source Code
\par March 19, 2005
The FLTK distribution contains over 60 sample applications written
in, or ported to, FLTK. If the FLTK archive you received does not
contain a 'test' directory, you can download the complete FLTK
distribution from \b http://fltk.org/software.php .
Most of the example programs were created while testing a group of widgets.
They are not meant to be great achievements in clean C++ programming, but
merely a test platform to verify the functionality of the FLTK library.
\section example_applications Example Applications
<table width=100% border=0>
<tr>
<td> \ref examples_adjuster </td>
<td> \ref examples_arc </td>
<td> \ref examples_ask </td>
<td> \ref examples_bitmap </td>
<td> \ref examples_blocks </td>
<td> \ref examples_boxtype </td>
</tr>
<tr>
<td> \ref examples_browser </td>
<td> \ref examples_button </td>
<td> \ref examples_buttons </td>
<td> \ref examples_checkers </td>
<td> \ref examples_clock </td>
<td> \ref examples_colbrowser </td>
</tr>
<tr>
<td> \ref examples_color_chooser </td>
<td> \ref examples_cube </td>
<td> \ref examples_CubeView </td>
<td> \ref examples_cursor </td>
<td> \ref examples_curve </td>
<td> \ref examples_demo </td>
</tr>
<tr>
<td> \ref examples_doublebuffer </td>
<td> \ref examples_editor </td>
<td> \ref examples_fast_slow </td>
<td> \ref examples_file_chooser </td>
<td> \ref examples_fluid </td>
<td> \ref examples_fonts </td>
</tr>
<tr>
<td> \ref examples_forms </td>
<td> \ref examples_fractals </td>
<td> \ref examples_fullscreen </td>
<td> \ref examples_gl_overlay </td>
<td> \ref examples_glpuzzle </td>
<td> \ref examples_hello </td>
</tr>
<tr>
<td> \ref examples_help </td>
<td> \ref examples_iconize </td>
<td> \ref examples_image </td>
<td> \ref examples_inactive </td>
<td> \ref examples_input </td>
<td> \ref examples_input_choice </td>
</tr>
<tr>
<td> \ref examples_keyboard </td>
<td> \ref examples_label </td>
<td> \ref examples_line_style </td>
<td> \ref examples_list_visuals </td>
<td> \ref examples_mandelbrot </td>
<td> \ref examples_menubar </td>
</tr>
<tr>
<td> \ref examples_message </td>
<td> \ref examples_minimum </td>
<td> \ref examples_navigation </td>
<td> \ref examples_output </td>
<td> \ref examples_overlay </td>
<td> \ref examples_pack </td>
</tr>
<tr>
<td> \ref examples_pixmap_browser </td>
<td> \ref examples_pixmap </td>
<td> \ref examples_preferences </td>
<td> \ref examples_radio </td>
<td> \ref examples_resizebox </td>
<td> \ref examples_resize </td>
</tr>
<tr>
<td> \ref examples_scroll </td>
<td> \ref examples_shape </td>
<td> \ref examples_subwindow </td>
<td> \ref examples_sudoku </td>
<td> \ref examples_symbols </td>
<td> \ref examples_tabs </td>
</tr>
<tr>
<td> \ref examples_threads </td>
<td> \ref examples_tile </td>
<td> \ref examples_tiled_image </td>
<td> \ref examples_valuators </td>
<td> &nbsp; </td>
<td> &nbsp; </td>
</tr>
</table>
<a name="adjuster"></a> <!-- For old HTML links only ! -->
\subsection examples_adjuster adjuster
\par
\c adjuster shows a nifty little widget for quickly
setting values in a great range.
<a name="arc"></a> <!-- For old HTML links only ! -->
\subsection examples_arc arc
\par
The \c arc demo explains how to derive your own widget to
generate some custom drawings. The sample drawings use the matrix
based arc drawing for some fun effects.
<a name="ask"></a> <!-- For old HTML links only ! -->
\subsection examples_ask ask
\par
\c ask shows some of FLTK's standard dialog boxes. Click
the correct answers or you may end up in a loop, or you may end
up in a loop, or you... .
<a name="bitmap"></a> <!-- For old HTML links only ! -->
\subsection examples_bitmap bitmap
\par
This simple test shows the use of a single color bitmap as a
label for a box widget. Bitmaps are stored in the X11 '.bmp'
file format and can be part of the source code.
<a name="blocks"></a> <!-- For old HTML links only ! -->
\subsection examples_blocks blocks
\par
A wonderful and addictive game that shows the usage of FLTK
timers, graphics, and how to implement sound on all platforms.
\c blocks is also a good example for the Mac OS X specific
bundle format.
<a name="boxtype"></a> <!-- For old HTML links only ! -->
\subsection examples_boxtype boxtype
\par
\c boxtype gives an overview of readily available boxes and
frames in FLTK. More types can be added by the application programmer.
When using themes, FLTK shuffles boxtypes around to give your program
a new look.
<a name="browser"></a> <!-- For old HTML links only ! -->
\subsection examples_browser browser
\par
\c browser shows the capabilities of the Fl_Browser widget.
Important features tested are loading of files, line formatting, and
correct positioning of the browser data window.
<a name="button"></a> <!-- For old HTML links only ! -->
\subsection examples_button button
\par
The \c button test is a simple demo of push-buttons and callbacks.
<a name="buttons"></a> <!-- For old HTML links only ! -->
\subsection examples_buttons buttons
\par
\c buttons shows a sample of FLTK button types.
<a name="checkers"></a> <!-- For old HTML links only ! -->
\subsection examples_checkers checkers
\par
Written by Steve Poulsen in early 1979, \c checkers shows
how to convert a VT100 text-terminal based program into a neat
application with a graphical UI. Check out the code that drags the
pieces, and how the pieces are drawn by layering. Then tell me
how to beat the computer at Checkers.
<a name="clock"></a> <!-- For old HTML links only ! -->
\subsection examples_clock clock
\par
The \c clock demo shows two analog clocks. The innards of
the Fl_Clock widget are pretty interesting, explaining
the use of timeouts and matrix based drawing.
<a name="colbrowser"></a> <!-- For old HTML links only ! -->
\subsection examples_colbrowser colbrowser
\par
\c colbrowser runs only on X11 systems. It reads
<i>/usr/lib/X11/rgb.txt</i> to show the color representation
of every text entry in the file. This is beautiful, but
only moderatly useful unless your UI is written in <i>Motif</i>.
<a name="color_chooser"></a> <!-- For old HTML links only ! -->
\subsection examples_color_chooser color_chooser
\par
The \c color_chooser gives a short demo of FLTK's palette based
color chooser and of the RGB based color wheel.
<a name="cube"></a> <!-- For old HTML links only ! -->
\subsection examples_cube cube
\par
The \c cube demo shows the speed of OpenGL. It also tests
the ability to render two OpenGL buffers into a single window,
and shows OpenGL text.
<a name="CubeView"></a> <!-- For old HTML links only ! -->
\subsection examples_CubeView CubeView
\par
\c CubeView shows how to create a UI containing OpenGL with Fluid.
<a name="cursor"></a> <!-- For old HTML links only ! -->
\subsection examples_cursor cursor
\par
The \c cursor demo shows all mouse cursor shapes that come standard
with FLTK. The <i>fgcolor</i> and <i>bgcolor</i> sliders work only
on few systems (some version of Irix for example).
<a name="curve"></a> <!-- For old HTML links only ! -->
\subsection examples_curve curve
\par
\c curve draws a nice Bezier curve into a custom widget. The
<i>points</i> option for splines is not supported on all platforms.
<a name="demo"></a> <!-- For old HTML links only ! -->
\subsection examples_demo demo
\par
This tool allows quick access to all programs in the \c test directory.
\c demo is based on the visuals of the IrixGL demo program. The menu
tree can be changed by editing <tt>test/demo.menu</tt>.
<a name="doublebuffer"></a> <!-- For old HTML links only ! -->
\subsection examples_doublebuffer doublebuffer
\par
The \c doublebuffer demo show the difference between a single
buffered window, which may flicker during a slow redraw, and a
double buffered window, which never flickers, but uses twice the
amount of RAM. Some modern OS's double buffer all windows automatically
to allow transparency and shadows on the desktop. FLTK is smart enough
to not tripple buffer a window in that case.
<a name="editor"></a> <!-- For old HTML links only ! -->
\subsection examples_editor editor
\par
FLTK has two very different text input widgets. Fl_Input
and derived classes are rather light weight, however
Fl_Text_Editor is a complete port of <i>nedit</i> (with permission).
The \c editor test is almost a full application, showing custom
syntax highlighting and dialog creation.
<a name="fast_slow"></a> <!-- For old HTML links only ! -->
\subsection examples_fast_slow fast_slow
\par
\c fast_slow shows how an application can use the Fl_Widget::when()
setting to receive different kinds of callbacks.
<a name="file_chooser"></a> <!-- For old HTML links only ! -->
\subsection examples_file_chooser file_chooser
\par
The standard FLTK \c file_chooser is the result of many
iterations, trying to find a middle ground between a complex
browser and a fast light implementation.
<a name="fonts"></a> <!-- For old HTML links only ! -->
\subsection examples_fonts fonts
\par
\c fonts shows all available text fonts on the host system.
If your machine still has some pixmap based fonts, the supported
sizes will be shown in bold face. Only the first 256 fonts will
be listed.
<a name="forms"></a> <!-- For old HTML links only ! -->
\subsection examples_forms forms
\par
\c forms is an XForms program with very few changes.
Search for "fltk" to find all changes necessary to port to fltk.
This demo shows the different boxtypes. Note that some
boxtypes are not appropriate for some objects.
<a name="fractals"></a> <!-- For old HTML links only ! -->
\subsection examples_fractals fractals
\par
\c fractals shows how to mix OpenGL, Glut and FLTK code.
FLTK supports a rather large subset of Glut, so that many Glut
applications compile just fine.
<a name="fullscreen"></a> <!-- For old HTML links only ! -->
\subsection examples_fullscreen fullscreen
\par
This demo shows how to do many of the window manipulations that
are popular for games.
You can toggle the border on/off, switch between single-
and double-buffered rendering, and take over the entire
screen. More information in the source code.
<a name="gl_overlay"></a> <!-- For old HTML links only ! -->
\subsection examples_gl_overlay gl_overlay
\par
\c gl_overlay shows OpenGL overlay plane rendering. If no
hardware overlay plane is available, FLTK will simulate it
for you.
<a name="glpuzzle"></a> <!-- For old HTML links only ! -->
\subsection examples_glpuzzle glpuzzle
\par
The \c glpuzzle test shows how most Glut source code compiles
easily under FLTK.
<a name="hello"></a> <!-- For old HTML links only ! -->
\subsection examples_hello hello
\par
\c hello: Hello, World. Need I say more? Well, maybe. This
tiny demo shows how little is needed to get a functioning application
running with FLTK. Quite impressive, I'd say.
<a name="help"></a> <!-- For old HTML links only ! -->
\subsection examples_help help
\par
\c help displays the built-in FLTK help browser. The
Fl_Help_Dialog understands a subset of html and renders
various image formats. This widget makes it easy to provide help
pages to the user without depending on the operating system's
html browser.
<a name="iconize"></a> <!-- For old HTML links only ! -->
\subsection examples_iconize iconize
\par
\c iconize demonstrates the effect of the window functions
hide(), iconize(), and show().
<a name="image"></a> <!-- For old HTML links only ! -->
\subsection examples_image image
\par
The \c image demo shows how an image can be created on the fly.
This generated image contains an alpha (transparency) channel which
lets previous renderings 'shine through', either via true
transparency or by using screen door transparency (pixelation).
<a name="inactive"></a> <!-- For old HTML links only ! -->
\subsection examples_inactive inactive
\par
\c inactive tests the correct rendering of inactive widgets.
To see the inactive version of images, you can check out the pixmap
or image test.
<a name="input"></a> <!-- For old HTML links only ! -->
\subsection examples_input input
\par
This tool shows and tests different types of text input fields based on
Fl_Input_. The \c input program also tests various
settings of Fl_Input::when().
<a name="input_choice"></a> <!-- For old HTML links only ! -->
\subsection examples_input_choice input_choice
\par
\c input_choice tests the latest addition to FLTK1, a text input
field with an attached pulldown menu. Windows users will recognize
similarities to the 'ComboBox'. \c input_choice starts up in
'plastic' scheme, but the traditional scheme is also supported.
<a name="keyboard"></a> <!-- For old HTML links only ! -->
\subsection examples_keyboard keyboard
\par
FLTK unifies keyboard events for all platforms. The \c keyboard
test can be used to check the return values of Fl::event_key()
and Fl::event_text(). It is also great to see the modifier
buttons and the scroll wheel at work. Quit this application by closing
the window. The ESC key will not work.
<a name="label"></a> <!-- For old HTML links only ! -->
\subsection examples_label label
\par
Every FLTK widget can have a label attached to it. The \c label
demo shows alignment, clipping and wrapping of text labels. Labels
can contain symbols at the start and end of the text, like <i>\@FLTK</i>
or <i>\@circle uh-huh \@square</i>.
<a name="line_style"></a> <!-- For old HTML links only ! -->
\subsection examples_line_style line_style
\par
Advanced line drawing can be tested with \c line_style.
Not all platforms support all line styles.
<a name="list_visuals"></a> <!-- For old HTML links only ! -->
\subsection examples_list_visuals list_visuals
\par
This little app finds all available pixel formats for the current X11
screen. But since you are now an FLTK user, you don't have to worry
about any of this.
<a name="mandelbrot"></a> <!-- For old HTML links only ! -->
\subsection examples_mandelbrot mandelbrot
\par
\c mandelbrot shows two advanced topics in one test. It creates
grayscale images on the fly, updating them via the <i>idle</i> callback
system. This is one of the few occasions where the <i>idle</i> callback
is very useful by giving all available processor time to the application
without blocking the UI or other apps.
<a name="menubar"></a> <!-- For old HTML links only ! -->
\subsection examples_menubar menubar
\par
The \c menubar tests many aspects of FLTK's popup menu system.
Among the features are radio buttons, menus taller than the screen,
arbitrary sub menu depth, and global shortcuts.
<a name="message"></a> <!-- For old HTML links only ! -->
\subsection examples_message message
\par
\c message pops up a few of FLTK's standard message boxes.
<a name="minimum"></a> <!-- For old HTML links only ! -->
\subsection examples_minimum minimum
\par
The \c minimum test program verifies that the update regions
are set correctly. In a real life application, the trail would
be avoided by choosing a smaller label or by setting label clipping
differently.
<a name="navigation"></a> <!-- For old HTML links only ! -->
\subsection examples_navigation navigation
\par
\c navigation demonstrates how the text cursor moves from
text field to text field when using the arrow keys, tab, and shift-tab.
<a name="output"></a> <!-- For old HTML links only ! -->
\subsection examples_output output
\par
\c output shows the difference between the single line and
multi line mode of the Fl_Output widget. Fonts can be
selected from the FLTK standard list of fonts.
<a name="overlay"></a> <!-- For old HTML links only ! -->
\subsection examples_overlay overlay
\par
The \c overlay test app show how easy an FLTK window can
be layered to display cursor and manipulator style elements. This
example derives a new class from Fl_Overlay_Window and
provides a new function to draw custom overlays.
<a name="pack"></a> <!-- For old HTML links only ! -->
\subsection examples_pack pack
\par
The \c pack test program demonstrates the resizing
and repositioning of children of the Fl_Pack group.
Putting an Fl_Pack into an Fl_Scroll is
a useful way to create a browser for large sets of data.
<a name="pixmap_browser"></a> <!-- For old HTML links only ! -->
\subsection examples_pixmap_browser pixmap_browser
\par
\c pixmap_browser tests the shared-image interface. When using
the same image multiple times, Fl_Shared_Image will keep it
only once in memory.
<a name="pixmap"></a> <!-- For old HTML links only ! -->
\subsection examples_pixmap pixmap
\par
This simple test shows the use of a LUT based pixmap as a
label for a box widget. Pixmaps are stored in the X11 '.xpm'
file format and can be part of the source code. Pixmaps support
one transparent color.
<a name="preferences"></a> <!-- For old HTML links only ! -->
\subsection examples_preferences preferences
\par
I do have my \c preferences in the morning, but sometimes I
just can't remember a thing. This is where the Fl_Preferences
come in handy. They remember any kind of data between program launches.
<a name="radio"></a> <!-- For old HTML links only ! -->
\subsection examples_radio radio
\par
The \c radio tool was created entirely with <i>fluid</i>. It
shows some of the available button types and tests radio
button behavior.
<a name="resizebox"></a> <!-- For old HTML links only ! -->
\subsection examples_resizebox resizebox
\par
\c resizebox shows some possible ways of FLTK's automatic
resize bahavior..
<a name="resize"></a> <!-- For old HTML links only ! -->
\subsection examples_resize resize
\par
The \c resize demo tests size and position functions with
the given window manager.
<a name="scroll"></a> <!-- For old HTML links only ! -->
\subsection examples_scroll scroll
\par
\c scroll shows how to scroll an area of widgets, one of
them beeing a slow custom drawing. Fl_Scroll uses
clipping and smart window area copying to improve redraw speed.
The buttons at the bottom of the window control decoration rendering
and updates.
<a name="shape"></a> <!-- For old HTML links only ! -->
\subsection examples_shape shape
\par
\c shape is a very minimal demo that shows how to create
your own OpenGL rendering widget. Now that you know that, go ahead
and write that flight simulator you always dreamt of.
<a name="subwindow"></a> <!-- For old HTML links only ! -->
\subsection examples_subwindow subwindow
\par
The \c subwindow demo tests messaging and drawing between
the main window and 'true' sub windows. A sub window is different
to a group by resetting the FLTK coordinate system to 0, 0 in the
top left corner. On Win32 and X11, subwindows have their own
operating system specific handle.
<a name="sudoku"></a> <!-- For old HTML links only ! -->
\subsection examples_sudoku sudoku
\par
Another highly addictive game - don't play it, I warned you.
The implementation shows how to create application icons,
how to deal with OS specifics, and how to generate sound.
<a name="symbols"></a> <!-- For old HTML links only ! -->
\subsection examples_symbols symbols
\par
\c symbols are a speciality of FLTK. These little vector
drawings can be integrated into labels. They scale and rotate,
and with a little patience, you can define your own. The rotation
number refers to 45 degree rotations if you were looking at a
numeric keypad (2 is down, 6 is right, etc.).
<a name="tabs"></a> <!-- For old HTML links only ! -->
\subsection examples_tabs tabs
\par
The \c tabs tool was created with <i>fluid</i>. It tests
correct hiding and redisplaying of tabs, navigation across tabs,
resize behavior, and no unneeded redrawing of invisible widgets.
\par
The \c tabs application shows the Fl_Tabs widget
on the left and the Fl_Wizard widget on the right side
for direct comparison of these two panel management widgets.
<a name="threads"></a> <!-- For old HTML links only ! -->
\subsection examples_threads threads
\par
FLTK can be used in a multithreading environment. There are some
limitations, mostly due to the underlying operating system.
\c threads shows how to use Fl::lock(),
Fl::unlock(), and Fl::awake() in secondary threads
to keep FLTK happy. Although locking works on all platforms,
this demo is not available on every machine.
<a name="tile"></a> <!-- For old HTML links only ! -->
\subsection examples_tile tile
\par
The \c tile tool shows a nice way of using Fl_Tile.
To test correct resizing of subwindows, the widget for region
1 is created from an Fl_Window class.
<a name="tiled_image"></a> <!-- For old HTML links only ! -->
\subsection examples_tiled_image tiled_image
\par
The \c tiled_image demo uses an image as the background
for a window by repeating it over the full size of the widget.
The window is resizable and shows how the image gets repeated.
<a name="valuators"></a> <!-- For old HTML links only ! -->
\subsection examples_valuators valuators
\par
\c valuators shows all of FLTK's nifty widgets to change
numeric values.
<a name="fluid"></a> <!-- For old HTML links only ! -->
\subsection examples_fluid fluid
\par
\c fluid is not only a big test program, but also a very
useful visual UI designer. Many parts of \c fluid were
created using \c fluid. See the \link fluid Fluid Tutorial \endlink
for more details.
\htmlonly
<hr>
<a class="el" href="index.html">[Index]</a> &nbsp;&nbsp;
<a class="el" href="license.html">[Previous]&nbsp; J - Software License</a>&nbsp;
\ref license &nbsp;&nbsp;
\endhtmlonly
*/

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -1,154 +0,0 @@
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 215 200
%%Title: (fl_color_chooser.eps)
%%Creator: jpeg2eps.ps 1.20 http://rses.anu.edu.au/~andy/jpeg2eps/
%%LanguageLevel: 2
%%DocumentData: Clean7Bit
%%EndComments
215 200 scale
/DeviceRGB setcolorspace
<< % fl_color_chooser.eps
/ImageType 1 % 1: opaque, 4: make MaskColor color ranges transparent
/Decode [ 0 1 0 1 0 1 ] % change these values to alter brightness/contrast of each color
% REMOVE % AT START OF NEXT LINE IF /ImageType 4
% /MaskColor [ 245 255 245 255 245 255 ] % don't paint these color ranges if /ImageType 4
/Width 215
/Height 200
/ImageMatrix [ 215 0 0 -200 0 200 ]
/BitsPerComponent 8
/MultipleDataSources false
/Interpolate false
/DataSource currentfile
/ASCII85Decode filter
/DCTDecode filter
>>
image
s4IA0!"_al8O`[\!<E0k!([(is8E!76ZQaHFCeu*GA2/4+B3#c+@f!t;#f8M6N@Ar"pY>9#R:S>
#mgkE$ks-Z$O[@\&ebci*?$"@*?#n;+=&Qe+<i?]*#p@c.4d/-1c.$2-TO=L1-@0F1c#*c!(-bn
#mh"J$lBE_(c!6S+Ykf.1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?
1,:Wb^]4rP!6>/l!s'SG!YGG8&HVpM!#tt=!WrH(!<E0#zz"Tnl3#6Fo3s24n7&-)_5!s&H,%gE@I
"9SW(!!*'$!sAc>"qhRa+Yf20#8A@J;,^Fp@<@WrZI.):1H'B@ZPFc@6q(!_Eg"9s2aUMaUTr>.
,US(qAYHL2_uL\V!<<3&!<E0#zz!!<?-!W`N*_uMA$!!33&!s&Q3!!<3$z!!*-'&Hi7M0l`>LZ-a:0
1dOH*;IP+j,f0N7!"8r1!!3`7&HG#ql\Imj]!GFED471lFgbI%i+4H<'0SFQEH@Z>Gf/:TfFLU:
E_p#;d#Qjh9H<3aOjK3#0B'pPn>fWh^SP:%%WuE<>.mB'.^&H/0!atX5AKFI56pCpZn=rFFfRVS
e`ngP=.ubh=o@^<l7_C'%rfuNX24WRXj9W9:VllJAIF`^B<)R+QEO,78u*B;<ZfY)?D.:_H0m1:
jl$(DA$)J2-/d(EL!0b$eVEb^=5!',<.e+a_tj83m.^.qQb$lIfAQT6<R@(%FL3Z<2&<8XUhsIO
5Ghc+qc4fe<j/j%dk6'PU\t$3Tdog/3[tq-2r.L>oUW&LkOcnUC+WKDdPe;8T@5"?oPa'bIY<TX
^52"Z>g:up<KGQDYI!-8-PZ=0j7KD;UoL.Hn%$nEa!5;',@b;3(eJ>r>Xm+*PW9!JB;]%5^0E1S
?Xr^@Wc;:>]uJG+0*Q*o)!t[@5Q/IkbAO2;7_W[:[RciQHPpR>*9Qt1ELbtI[tB_"=*R8kS4<iX
F^9CGD*)sO;MK+h.HQjLnWr:0O:RP3F$$:"3A!19gMHV.\nX9_.HGSo#*tT1`MAID",r9"lFNm/
irt`phE%3Q$]Fqf&+<Z8^i0,"I'F4N=h_[iqpdq+3fh+KE^se0ir9!06i5GQYT*T3DKOuWmo*>&
Y4R$pN]MKG]p?uTE-U&]Buh#7EjYPi<pB"NAoYZPC%O:H8U*0lprdLN(&n:%(Yq/U>uY`ApBl^k
-(qDX1F7bX#]iZjP<1)9_99p]m1)PkkiE(:!*l!trB7.O$?'fnelO6MhbS"$YGV$U;!Jg3B[5GJ
%Y)e],U%FVHQddib/U`nj,kAsN,&(;.2pDF:3@=&O1b3+<L,LeNN1/?UNIK^7/Fp&g=.jWB!k&W
NG;pMCK.ER(T+TgIps-c.Q&Z3"HHJmHBqV^;EkPFf$U6t!UieJSc8\%0_[6orrBfjB&=e^9(2Wr
4j3L'haFnrGiM]6)<S4aV4AQS^-6A<_n$KZrrA=4'4nslQ$nk[@'6>4W#n@6-^dcsQ,Fipe=)Gu
p83T-,k0N%.df0Zo>'9+'J+UVcib?^7ABhra3!(A^T%OcX\%YRq^$2%6)\PbqO_%tkp(bl.<)5?
>)e[lA7D8#Eu<h))ZCl;EX2\KgD$3A;<s;>M5S_,<N!3h*gqd\R4iU.:U<\g9.Qa6SuSK^1<e4&
L;;2kN!Go[JjqM=2OuL5d$O(Cfp<VUhd`q2B9m4`k,#ReK%=a-hSHuar^hI*$cZFj967Nlm>`,\
T7ZBO[FS1/2j<p:?*\+n6sf8[C#`mN&iJdD#KUrAiB<$2!Cb&/7<Qm+PpK_EMQVQBkkgR;XPQMA
P21l4,\rk,f!I78h36LO4!_2uaqn3Jqsj:EcgUP!lh_ZKO],7oqfSp`Vlk+gWh&lfGp[qCA?D"s
>1`,H9q^'KNuW$'7j5]3XkfH?Wq>IP$UrXa8O6KJ#cKV#9bZ>6@t,ld#0Xe6a"J2t1WD5WbHKO_
m6u)=F`WoU@#>e1DT#NE2tCI<]T$Dk+TDG`aX!M*>tLoMSP8E&FGp>?pksoWO]:-NPqZ,%Q?<\6
/uKVg=DJAHNQR.58S2jDf>e;O8`.XEA`O&Jb3U0(J]Er05+;J4eXp'PrrC4LD%!<lTT09d&ORL)
,E8(+=O8`%",Hq=8PYZrfBTXO6+\oUH)rM)OF2^)!%q-N5+^;Q?VTq3]"6uacfsgueb%_RbF,HP
#&`htF8gHY/f1t$H>@PuCDAj/I#VnhQE`t*;Dj>4Yud2;Khsm$`FY$8>/ar/W#\?m&NqkKB!m%s
'[:BMFW/cJnf*.F"KkcN3!tnQ<F$rB;(G9#6>%f)3Dc.0LIn=A87*RgdCVP;hKtUS+23SBjaIQc
gU<pCFXU`mS8Zn"!&@.&`34$>j/>J[KJBB@fPeF'e5GF@%.^nXrF9j:)QmZ.jDLu3,`5d(-%[`7
)7M+(>F.<,UF3KA!-_!Bl5Mp$,?%lD"];4rWId.gOL_Yc+Nn(%-mQ/_MLN*cm;n?`Q@E2`,T9$H
9am)C=Qq2S*leiS\29:5*/.M*Bg!DIVenlN^8cnm4>F-A?g=A"FpYr:QjhmdO!.=5N]Q;%!4C*:
i^[7gp:86A8RLCfPMkj@l^I7Hh/E/QLMF;F]PVNQDm?X/4RuoZ[b.qrk+U;u]?BN<CCAr=/u,A1
_79Xn2I^Zh#(3*EnoljhSm$GrRktb^Z:O%tSCb-,&4&8uN[uH*J_Eo=>;)t\8Slk%*r!A+S##`S
S8UI;:t3[nSDu[e*+oMC\5@(kH62goi1$P8qj_RcdnnQ;Z(0i91E:$4Qafj(rWd.%'l:U]`5[Db
DREBVRb;SSTnVsl3L%nq1qOUH",f/=!'n6qT'>^o])As<d]$]^;-;hDRY4E\H^Q&7eB'eYfal5f
c6.*:/E>/T!YC"b\Q5sQf<p'9:$p09Wo]\^B4"[7Kf?Irl3fA`S%JS<rrAX(=N7>me`DchZ)bE5
I'"gheu>+WnVpJPWX2R<dZ9AsR>f#Teu>+W?<!@n5T&#u0GgTDH'R#Yb*,_jQ)/Mp1Y%nbQV@&[
Usl1EH(LAHojVVJl/Y[`UK3`n9_GHmeNT>!][]kKfjoj;!(A,BF7qtWQ6H?Q%KZ"Urr@UPWMJWZ
]481sVR6(NPb346QU_HhH+Cs6<rW/5e/`D)aj1(D51,Rf<GO73g\[qJC+]/S,4"N.SKfXkncX"g
k7'-Sk@Yd0PqClD2X,:(U`J-Vm00u<+"PI&*iL/I[3qA<m$.LUqSTXf<F>L-M&s6_>)a](+G)Pq
1mF1YOg1b.F,NQh!Qmu;X-Fuoo1n"dV*2Q(#/!+(eM35o3s9(!A7l%(q+?U-b/W]a\t*Rc$JP:=
ffSY6neUW'OUA)*j:!#G%GMa&\d*%"olY-2P>>Pf2end"^:Mef$CKqNV0tPrFN-/ELIiiDf(^5:
gh`QenSFnZePFcnL/Gq@d24"Y%;tGeZ^*NlP2=$f6]82i^oQ3A\pDK3i0l0%#5]@b[#-iOnXO6&
%-&_%\kj985l-hrgo^F5CMYQ(Z!8OhPdIW8Xmn59figse1CqJZj9Y@g*KM$H\PG*B?Dr%](87Fu
`N$Ooes2;pgAGe7F0uZ9g>pP"Gqm>(fko3h:%&54>3IothK>Vk`OCfd4!8/R4MB1$A[bH<2nTem
CS9QpH.J*J(>^j+m"([;o(P`WZ<))Bf7*$MSR1WnD[;9r_I$Rn-$u1%g@9n+[-.,/'Tdtj"j;%.
"(,'kqnAQSR<9gt[BoQaohUm*S(j?,VHL;O4*FcSc$"B,"un'ai0H-:.\2cK<fF(CAt$_uE)X$X
.qIL:4(e&`nuUB="%G;MV>_rK7\?QZVfU`q/@:@W?LV.G/<"A)!7)mM3;]5YM`TPhWj&qcHL%`D
15i:npRC!VG4tNuXQ)=e*`NcO^4s$-9<"]?)a$`gc7?d[ioOJmIT/)$e#"E_S9WKHgj%B6S<qHF
<"c"VV%b7r9;cdi9I;m$FPX>-W\nKWq:p5G^=;367;sW^I&-Jq=S\8og2YVck'NH+?Z%1O2=\"#
)o'5'e9g*K<P)5`]?q&XcQBM,4nk4IZV?qN]P!P-5A2V^j%e33<tu6N<DPDYL*GeE=$$GB*2K1Q
8H)FBc]'jO>]7:r:d0SJ:GSQq.p$l,$Z/<q,W$6[$He)e7T33P_maG6%s]onNPI2T`cKfA!WaJh
;^q9gVL3*eHK0G;q*<Cm1u#]`^@eOarr>Ca5<\:58HgCr-?W)R\TB/Bk/u*kS<g^G*KEG+&L.G1
Au-)<e^RlA2_.Q9[-suAPtd9.R+O1b$nm\D"qJbk4F840fE4/)JYmg/[sI(_kkRKm4uD$-EPD+D
\)30N`)'IfX0%X_M:4f6ZO=7D@;'oj.38]8HTs"ug)/*F#W3nK<h\Gr,G"8Y9d$DE)j`T5Z'$d\
jLM-WK7UA"VWVZr!"?oj#+>"Yh<U'pVKVje(%RX_(AibbYX\SH4rH`A*K9#'[u^2c`3/4nY5Qq$
3WamEKE/O]^OFJAT?Jb_\X-]/B<"&%FmQkE_<oCIkZ2VZmID[n.lqAscSR(]hGl@EntcD(*`X_'
nu^SE@+,/"BC`$+;<:B=;<:[_T.5]GC/kkmWUd#5T-omK'fe7r[hR\!'WJpH<(Cbsb.X4K3E!:]
j\cE_Wk54ZVBk`G;OP__jiCFJHA5CfF[1Ok-1_jd=/loo=-Y+t;(>7?[Y3\>`ROnfo/,=Z9-5V)
>5Da8e5G^]Q[3Rb2%-UGaU[gTds\/b^@J>u.<DF>UUsMB[Ls&GA#JJ7V6pg#A3SXPT,`%"W#n@6
-^dcsPj\8p[q_sDg1krE.,pu%VL,:VUo8?FOnA'L/<-fU#`8MG0JEMMOd[2kgHF]:Gd^NfgHAdS
_\nTk/Hrq?8a^T#7piU9]D1(L/e6*HW@Ouj%H>PG\uaH<C$tX.gJ$75'$U)<f9[)RpU57,f3jP!
3%Z9fQ.6R+'pf:j3eHAp(<W&Fijd$-)ldYA=Qis.ARGs"!cUOY%2g%%j9;gSp33uq)a5Niq`EQI
NLpgc4_^?GqKmlPFZ1_PPuR0)\Q.=\JZNen1L[UD2dqEnCg0F,7$fmH`gsQYHa[]?.$gT^C'ZEa
X`LK/o#JcG.GR:^q4F&riO?2\PHuTV:=F@!Ia7ZUj(H;j^Lqn;n[%4?>>"<j3q(m;o;b$'cM$_e
B>ge#8gZ08(s^2&\.cihgaBZE'[VLU"iU87]4YGAom@h9X0sW$eP4dZn_R[Z[jo#!/F$aDnmu*A
bn=<RAl7"7TsYqA;=Z4)P_-WS=-Fi<?u.<?X4LVP;Js&9Y>(t;j[VV1<(F2hPFS\YcfI],S'%nS
5F#<UUJ@2:fft`m-h=)bT?<uDq,M')WD#cNCkW"T.bjDAo(d;d<,S4poYW('HDN.D\Kk1FE`ID5
BNGTSShd_DSXuPlUYNI[qbaGW$Wp.bL0kI3km+U7USrnlP)f/'YI,3AqIuhhcDe/\m;+u==fq73
V<6(+ZB"="+*c=0puD#6qW/`dh/U!La1a#m5%h9jg+@26`d;H]?g8^Gm_6)!djVf#I1"JqAO!J$
Nq$IsiL1]SY$+GCl=oF]F[]7>SY<;L-L:polo?D#G.+oh8AWSA-UJlhe3527I;4h?7pkO''(3KA
8(/g/e?_N:/m$baGibONb0_JSP/b`2B?7qZE`a;kc9!VKXC^&+Vt`nfDms)S-b@t!>S0OYe&-).
#pGHc8<*!l99$'?%%WR0c:;F3JQK&J%uGL;>,1>EfD:9@]<A>6oZ=M<iGu'!\5B^5VsY5IZ-7Qn
iH&9p2FqMI/b@/:+k[f.,@_^=b=b98q>-D[K"A8B=\27]dkm;r:Oo``S?[U4U]cDRk6&"THphL,
L]oqkW-h7LqUHZ]YL(Hs4Zne.[SLe'XoLmQOhK$C*m6:K_]2'bkDPOf3jc'Oo</&CIl[X_&;1%n
=&k#c?6?6,p>oT1AG$I3]0<.)E0YQWHrKH;%a5k24"W'0PS9Y0X'.#`:%=bM/GTlb#<LX;q<dWN
jEg77W5b8jUorRArY=Aa'@S?$Q/C%4_S2$l`g(r/EDAPtUObTq3>\Wj+RuW(HA?3TJ#)NSR(a=-
FV*!]oTeIc(W*$Berq+]EFoqCeDcTdj]:E6b.A5M.AfT]b4"SUiDL/\3c2Nr/%;B?Kg@<F8H*P;
]3M*PV]fUM<AS:YY-pBPC!lcLlfjJh?ADE!4?lBmJ'7R7T')sI^>eg3Wh\))U363WQ.EuR4Zkr"
>sHO,012^&T-'j]J*$Qo%s$-Jqi(rl/Ne@B\E!mSGp.>qP+)]3h#@AtpFi-b)LoZmJ*$Ql1Y:"M
(09t&qnD*MOL8",FU>f(jj"BO27iT2e,CG1rr=_-Y=[7;bpJORdq6&$;H;#ah]N?a!o.btN+9+5
Y3Md]^:D8r.;h5,(X^);c;2WQmj`=Qk0C9;N:PaQrpd%pr.=0/mp"E67I[?YhP,=.f6!gu6Z]lN
>$77T)Y4PTF'K[c_abJ/TO8\0W#n@6-^dcsQ(tug>e"C#mq[fDU3^R"l!7(b4.p;(Y)1nAm:4F-
KFOKD4ecsOK"gnrK)'8d\(!T4i2hq.4jehf)W3p$GdGD[E0L;%=hNAaO9tpe#-Lm=MTZ^A'Tk\%
VmmYE)BAK=2,&_k%-.q/7$<-sa`bj&)j1ANSM,#se'Cfo:MmI(gHAQ:RQ:bG:tE'p(tufd+OIq9
!M_[/j_d'M*$kOaeo*GG!$lNIrr?37fDL^<m8g9S%+3YWd+`Ea:f0kU9hdoMl'bg$U-6#]$k3bu
!!bSkXe%Ed$Z+DK>=E%sP2T7/;-P;VQF^`!\29>2`pkdOis]E&BcJDu!7l'Grr=<`PQ(Vc]\!(C
%2-:>cF`gRr93)erj-mRq'[^B2q]J<a(00GA70&mH`.;864a2mE4A)p8%I&C6("pZNQc'L$t8P.
`::L<.l2Y9rrC`%h86j_b<2!*%Nb5eH7k$o4m/@->nTb`-PT(mNjsG^3U"%"E;,rFd<%r0'8dcs
l\E.ESr9=5%sd>$(IXF[32+HS\9lO^kdi$YpRZHRF@dqqMB&#LLV35MMkW]PH07=,7$=6'Tui=#
J&=kX!3G0#qC[V<Wn@*!@:[[eboBs3%BLA#PKAdAT$kG>nf@]5F:/$JT4a_6pT7[l-.)'3^8>h(
]^q_QU.5`>k<0VLP+d*=*-,Pl*qR['/r:Q2kFD0M&k[i:LF,(@ml]d-k`Nd>H-\q,,cFHdEau6n
o?MY7M&\\ASFg)"8qc2Z-9C,S4QiI&Oi-%$cUH5,W(na]A$-mEc?_+"1UG[*po&Ykrr@r/)_sR:
#A\+9Z"&8brrBHi=tM>tFl23qo<0GSOmHW5+!CneOoikb\UX<[pMd5iXY%8MUMI"UhW<kZ06;)*
>1<9mG+(EmWSsF+P[Y34>RP?:(A"hZ8Dm]ZJ@D)5ia).8i+#Tl>RP?:(A"hZ8Dm]ZJ@D)5i_F!7
NC)<;/[)rocH5T$JSfi;hKD\O3K=;$$Y@,^^B&77-cD#K[J1,Tffg\D3#L-sQNGn="ha2o&i^ZY
i%=,&plh*'@c-tkrr<,3"b4k)cJn`PWdG1h5FApNPN#YU)s;u<Ll!&u(Nlkj+8Eo^alM_;"p#*C
^p^uYD`]>bNWlic$[LDh-.arE"uQd"^p^uYD`]>bNWlic$[LDh,j%''e1I!ggAD,em%4nM(>%Ir
k@F@OR,DIN[Tj2Un.tW$Hq<1"?\#VVPN#>IJW3"LE%S9/>L(@\,Cs]\!oA)rM)gS#2/'A+c.@H(
?d>$X/[)rocH5T,'\&ASCjTlhCg4aaYie)-c8eJaQ/e0-lAc`;&;@sQ.7?1+>\%>f\H1$e7&?74
@K"[SV#YC'IZ)X&aP;gS(Spqm83fhY*VqE\pEO]?oNmaL8oGLpD9tQ%>'<lreP=aGi-_C[]u1^H
QgD=p22usn3;.;H8.)F5f30,i,n8MScP:'H@B688UAS\Bd"oVFr`1pID=(i<+FnE9#(pqXoNmaL
7c\dW]dMUA(0g`;mb)?'4E-aGWM$2nO9<(HD2ih"%-5+;nI5+C+jT1b?_TeY\K1N"8bXHM47ljC
mSP,.0'%6?]dMTpaR@N&:Uqp?^%5J<'c-9.*M$b0S8l?k2RYV8A93##HOt@krKb4QX*Wd*3%1e@
SX);)38S-KTQ3#%Pkkq"SJrE_k>)WhAFfV_4%3\(Rq3=_3--:EJX$WV$og,h%N392n9h6.Q9$uP
A)&'d[D7kX$-.+oQKUQ,RX=>053*h,mRM_adXB3lNr9ciqijW:9=Z)>01km_E]`o"PO;:!bZ@M+
E46e*[[)M;7lA^md66n1e]5_7rUI[Z\[ZTeA$Nr[JL=t;?K?=o]dMTpaR@N&:Ut-+)SX1+Y*P*R
]6>ef^&*I9FDu..)8207/WW-'7i*6k/%'e_h,QTq?$>W-o!0`t\Tq]hiMD9!L?u1CD7FYC#E3<#
3!2IW*VqE\pEO]?oNmaL=o3rWZ!-IiUTCWSb7<uii="H])oIDKA8=hJcg;=`a2j0nYH_9sV5(,p
h9-;sIc1[j*#leMDe*WVA'aNS`Q-&Mcu)@&Mpd$pglD=LV#-=ED1&aVpP:)1")+^h"D+7e[)!HE
4FF]%h9I,V'El%1hkKb8Ehbd>&7-gQHU[PP:F/A$7q*CW0rH;jacL$1%jr-/XSkrfKl-[dYO?2P
)?_2h!D>)i_u$A18r5(.hQ@Rc!hPlUgaaV.I/HoA[B:m<Ld"Z'/E;[!0RI&<#)HF]*kV3@FnLVe
R2eA6nNuR-'V-u\h=?<#W]E20!=PrAC0OOC-[B6@b?Z()LhS*<On^&=4(Ok?K2ml?hCeF8<E@`+
kbqb^R`XZ$VikN,(ugLbU-4>YrmoJ?3.N$9c5sUmTlp$c:73(bGO\#clP,mF!g]I_eEP4:CNU(*
,--`e-J-Tu[B6BP?k73!m"p;>AXl!U>]I(CCK>q?Y5ThTI:AD;7h8o':qHMB-VT';+_URrn)B&Q
egWXjE:r,-$a6X0FN=^<qANO0<`;r;]8AMVQL,;iGfarFa`E<\,ik+[3QY33+4Pf1O)iM7p#!^r
YH1WDaPlI"MAKW%V!3sOWnk,un&@8Sj+OU%r=%04<PeDQ;j-s#OuK`:6L$I[)=*/TR9?bOb79K=
73r)e'pOpo_YRAA*mo4k1k=aK2i-XX4G/PS8-^PGrZ8]HTlp$c:73(bGO\#clP,mF"$j0AD:B>:
1G"bkW+M?a,6\NmPln/,:$c@GE_3aG#1-if8]Das:<f@O]D/(BonlM4*'JN96L3qOSMC:1WpH)<
SPGl4[$C<HePZ\?VAlF;e&1sd*n_bJBlf3<E^SRJVR2Wh8nh:@\CPBm@i1qfF5:$o;aU5bBU;T8
*XN<.#ApV^/i^2-@&pq'GO\#clP,mF3-t&QL"Fm)3b/CDLMA>FcM6.*Q'I*_4B'[.3i.gj-Q&V8
_IerP"*])tJ9K:!i[K$,_cn_XoGqGC\C960M:'$VbNWa7$uCejbf7::+N!KQO4k'G[%D=1ho,u,
XAX/]iTn79(LL:?l&Z\J1iq,NYHlCob:9Q^/12S-0N5j4nT&eHE9$@5X$=MRIhXNLYt<ChLT^V)
?%$1GVEef1I]*%Z[f'3-pU'/ClbA;n?Wa,gPS@`mE7P`T$C`VI^7GZ<i%Cso(Mu>+6Jqj'mQ?GP
/eAqC+UA)S63'=`J.RAV"<e$O#XSMX&:b=F+9Whn!=2!l64eYYKHLC@#QY2t!(%6Is4I~>
%%EOF

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Some files were not shown because too many files have changed in this diff Show More