[comp.sources.atari.st] v03i078: pi1tomon -- Display .PI1 pictures on a mono monitor

koreth@panarthea.ebay.sun.com (Steven Grimm) (07/25/90)

Submitted-by: rosenkra%c1yankee@convex.com (Bill Rosenkranz)
Posting-number: Volume 3, Issue 78
Archive-name: pi1tomon

pi1tomon - display degas .pi1 (low res) image on monochrome monitor

i had tried to persuade some others to let me have the src to the
floyd-steinberg algorithm for displaying multi-shade images on bi-level
(i.e. monochrome) devices. no luck. couldn't even BUY it! so i dug
up a reference on it and wrote my own. this could be the kernel of
a monochrome imaging system for someone to write. does not use gem
(enter command from shell). uses line_a for put_pixel, draw_line.

this was really a quick hack to see how floyd-steinberg dithers works.
pretty well, considering it took only a couple hours. it reads in degas
(uncompressed) .pi1 files and dithers with the f-s error-distribution
algorithm. monochrome only!

uses 2x2 or 3x3 neighborhood. only displays 320x200 image on mono screen.
does not handle .pi2 (med res) yet. lets u rotate image +/-90 deg. displays
(rather wimpy) histogram representing color/number of pixels of that color
(there are 16 colors in a .pi1). should be easy to add a new palette on
the command line (e.g. "-p000111222333444555666777..." or somesuch).

see man page for more info. both nroff source and nroff output included.
i suppose i should update my earlier nroff(1) post (it now supports .if
and some more things). i have also included pieces of my line_a library
to be able to link this. src and .a included for that.

use as u like. no restrictions.

-bill rosenkranz

table
 !"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
begin 644 pi1mons.arc
M&@),24),24Y%02Y!4D, :@T  )44$:, Y&H-   :"$Q)0DQ)3D5!     /_0z
M 0  <Q. BY"4K ,   S_RK!)XZ9,&!@NW@" %($+  !@-"P<(&'A @X+%3BQy
M\A#).0#@0 %@\NT  "=>G-1)XB8-G84$@$T4^65@P8, 1"TT8!+2@)X%>OX$x
M<,"FP1@)%T;0]3#B1 \6Q63<^!"$&P (1*#!2F(K QFN $ @$98!J  H529Qw
M0F7M1)F0""" 0F6*6Y]P"3" 0T?.P@)Y$>!9>" O@SR$\SH8\X;-&[]X84*Hv
M2?!HSIU",T_4[!.HR:*5P\Q("@E" %Y-)?HDDC$ AJD< 5C%&H,/@   ,-2^u
M#4##;MP<?@/P$./J:Q#% 5@ ("(Y!0 D0EQE ,"$=+$ 5( :D+;.$"%)J,!Xt
M"Q/#]_ QR,?5<)Z*#/4$.+2? =\#DRE4F+@%D!<$$R=-!#'%$@_E)<(533Q!s
M1!'PD8!%>I 8D)<)64 H(4PH8/%>A'FID,6&%\;% E^0 0:38%] :&)<AZ7Xr
MEV)X?+'AB@1 D(>,+\(D01MOD%$&3'E1T$88<ZP!)$P6O,%7CG%A0-E-].D4q
M(6=#01+47YYAJ:6567))V&=&A7$#:1&0D=I$RT%RT515=/21 "RT@14H!Y $p
MQ$E=J 2'&(Z-821_)SYIT V73;G9H5YV1A1,&@A,24),24Y%02Y.1%@ 2   o
M ',3@8O@.(H    ,_^H (#"031HW9<+ </$& *0% @PB#!.#H<,%>B0FG&$1n
MDH( 4#2&N=%1P0 47T3"<%@@Y<&$,1P2".!RX@R9 FHFO"%S@$P:"$Q)0DQ)m
M3D5!+D]55 "<    <Q.!BW2*[0    Q&TK I X)-&C=EPL!P\68'B#=FS,PIl
M0P<$##PR0!P$$4;.&#1I[)1IH"!!$2Q0GDBA,D4'B"\&$2H$03+@P(('$\9@k
MZ!"B1(H6\=P(HM$-1X\@19(TB5(E2Y<P<X:)05.!38(Q$\[@^3#BQ(H78]2 j
M4?3HQY C2YY,N;+ERZQA9E2]BE/F#:X^OP:=(0-'V8YGE:IMVA8JW!M5 1H(i
M3$E.14$N34L 3U54 +    "5%->:60?Y    #"- M FSIHR9-&S*@##S1@X(h
M-FG<E/D2YF$:,7+"R,D# D48-F/RO'$#@H:+&#12-% P8F7 @05!M#!C46(8g
M%VW6N'0)0DH0)TR2" &19@X(.64^LN%(YDU$,F7PN( T8*>"E1#%0+2I(\'6f
MI#!<O*F9-(98LF%FG/T:YH;8E0D2D$ 11$J*HW8L:HV8%&W8L6S- N:;=BUAe
MMV_@RD7A$ZC0NUG9@O 1F;#8.G16K@0:"$Q)3D5!,"Y3 $]55 !G 0  <Q."d
MBSG)V0$   PJ&BA0D8!-&C=EPL  T0*$G#)TZLAQ X+-&S=G0,!Y<Y!.&3D@c
MZ+P!,8>.G#ICZ @,.##!G#QNWL"9DV:.CI4K$\ Q":('"!0E3Z:L>+#,ES @b
M5*0@BE#ASQ0[<"H0F,1-&CH]2 2! 6F 0($)7)RQ*(9-@B\&F\+XJB"L1SPJa
MIRI 6U3AS;9IUR0(8X/%"!@)NJH@22?,F#4@S,@)TZ8,V#9O[)1IX\*LPA9Az
M9+!H@2+,C10)$@R>$T:RPS)GYH"X4P;$&+)B/OXL@V=,F9T@R,!(P38!F3$Ny
M[B2H>I7MX(T=98LD+)0.B)AW0!S,O3",&S(@%+K('H.AC^QR%N<!\<9,XHO.x
MT20D\W$.B^PRO(,7OY*\^;0)$]=QDS+-Q3F]0289969U]MD*+%R666B#/532w
M&P^=EAI8^[&A%U^!#3"8&6G@09AAB"G&F&-R)2 ''7,$1L!@NDFG&G)N>"1'v
M;RZ4<1U;&@A,24Y%03$N4P!/550 C0$  ',3@XNS#2T"   ,*AHH4)& 31HWu
M9<+$ -$"!)PZ=!RFP5.&C<"  Q/,R>/F#9PY:>;HN'@Q@9TW:<B ,(A0(0@4t
M<^C(J3,F(LLR7\* 4 %')@L0>'[F^3GF#9LW<E+L(*G@XLJ#"4'$G%D3Q!LSs
M9N:4H2-2H, D3JB [8%#(!0J4\;&D.%U((@P<LZ(?'E'3L288<:L 6%&3I@Vr
M91S*?&LC1=N><L@*Q--CK< \C6D(+'HT<0P;;04F<''FJ!@V";[<5-AV,YTRq
M>.BT%0U5X4@%!0^N21#&!HL1,$JV>6.G3!L7H,/ 8-$"19@;AIO"WMT;> +$p
MQ@NS$)X@@8JG+:7*I!D1L6;F99R#%>O$.(P4TV-\YQT>]-FTY86C#\-V.7L7o
M=Q)01AH=O?$8*51WW4,1[2<'" <AZ 8="=(1QF=EK-<<:'CTQX)Q,@1HG4,0n
M@5 44BHEV!-(;H#@((2ED3$&?@F0$ 0,,,20 "0#7$>&7W=(1)%%RA$$WF^@m
M&8?<"M/E!EL=;K Q6VVEV35'9K"Y4(8;9+0%&@A,24Y%03(N4P!/550 7P$ l
M ',3A(O!\]D!   ,*AHH4)& 31HW9<+( -$"Q)DR=$# 28.G#!N! 0<FF)/'k
MS1LX<]+,T8$18X*#$0TB#!,#!(HY=.34&9/R8)DO84"H@!.3!0@\/O.DV%%2j
M 480*A."@"F3)H@W9LS,@3A2H$ H5*8D<=(CA@RK T&$D7-FI,L[<B+"##-Fi
M#0@S<L*T*2,QIE@;*<#RE-,#AT \7;\JR-.5!EB!"5R<8?-&#)L$7Y(J!)N8h
M3AD\=,!&MJF0I(*"!]<D"&.#Q0@8B-N\L5.FC8O'86"T8,FB!8HP-_(:_:R:g
M]>L$>V_C91$[00(52#DOC3DSXM[4J\O\QJK5R6T8*8C'@.[[,1[AV6_'2&$<f
M.9PZ$<>\>2.'#(B#=4.Z 4$GC.,RE,F,<7$G 8D@,, @0P*0#(#<0\Y19)$+e
M(,@!41URN#$'"&3 P!]EO;7VVVVYK4"<;"PA5H<;;(A&&F5IS7'89RZ4X089d
M8 $:"$Q)3D5!,RY3 $]55 "$ @  <Q.%BV@OV0,   PJ&BA0D8!-&C=EPLP c
MT0($&3EA[H PB%!@P($)YN1Q\P;.G#1S=%BTF,#.FS1D)AY,N!#%'#IRZHRAb
MHQ+AES @5,"!R0($GA@]\P#U*2-H41!MWI IT[--F#EK>G:DDV+'2(QUYI29a
M4[,,B" @Z+QQ"%$B3HI>S<AYT\8G4*%AQ^(IFD>&BZL6N^)\&7,FB#=FS&BEz
M$U*@P"%"DE"!T4,&C<.)J<1H; .R8AF-<5BF,J/'#!@"F4RAPB2)$\\R0CMIy
M$F3*$L^/%5QI\H1($<^5%6"9/$.S@BR3:8#6C9E&ZM_%8QL>""*,G#,A08! x
M<4<.S9=AQJP!H39,&Z\[Y32WD6)Y^!Z^\7R9'.-XGO4]8L16CSE&[O?U?2==w
MVGBX4ZB-'3=58\HID( +9[#QAAAL)/ %6@HM=R =9>!!QW(/KJ202 92M$8"v
M8=C P@C#"91 4G:4X4*#X:$08@HLA %# @FHT-57(!R4!DTNPL"0#R#P)1,=u
M=<A11GD*F(BBBG<D, )0B"D&0X\IT&@C'&R$@1 (/KK(!AM(GOA&BBXT^20+t
M44I&I94@8*FE5S%,-\8;"HKWAAMLY!'FDF4Z"65D,JQ98YM9;BG#= J"8"17s
M=^:YYYA,^HEF9#,(>F6A7K64Z*)_X:FGDI#V.96+Y+$@&FFFK6GC0Q%-]!1-r
M<*2!1QEL_&5&5S^ 2F:3_ZU!*HQ,K-;:$JK>V.MT<]")4@]&0$+ H[N*N=2Oq
M+,Q66Q'%5K>C5_MYA8*1;HY11@\P0*MB@^K%0.UNEH(PYQMRI 18FR>Y09BNp
MYR9 W[J!RHBDB62,T2<)0<  PPP)0#+ JF5U)6$=>'X8HH36S2&A"V6X0<9Ro
M&@A,24Y%03<N4P!/550 -P$  ',3AHO:P)@!   ,*AHH4)& 31HW9<+< -$"n
MA)@T=!P:I",PX, $<_*X>0-G3IHY.BI63&#G31HR( PB5 @"!9LW;LY(A/@%m
M3A@Y;;Z(>3EF38H=(A4(A+/S3<\>. 0J59# Q9F7.Q-\49GPQM*F=,K@H2A4l
MP=2#54,R5;DF09@:+$; 2 !I@ H0<\I$K ,'1!BX=,+T!&%&3I@V94#<@8C&k
M;@V!"=J\L5.FC0LV9FVP:(%"88H$"=[."</8K@VX!\<$A@CB(X@Z<<E<5<SXj
M<0*B/-=4KI&"11@;F-^.X9C'KAR9=-YX;MG"Q\R(-G%*-.KS*IDQ+NXD(!$$i
M!HP;;-V"(",<HHNVJQ<W=EWY1HH5MG%G!B&GS)S@[3TCKN.&3=FS5^70F<.6h
MP-OV=-0AAQMS@+ 1'6@<=,95+I3AAFH* !H(4D5!1$U%+DQ)0@!4 -0   "5g
M%!&;)+S]    #'30I)D#8B"(,"#FU!$SIPP=$&_,@&B3!P2;-&[*?$%X48R<f
M,'+RN  1L(S%-&(*TFG(1F(8-V02RAES4(Y)C&/8U"%3AHR+!@K2/+SS1LX:e
M@F8PFKPC%,U!-F/RO'%S$&9"-&_JL(DYYDT;.&G8F$R:$033@"":7!G"@B36d
M.F><I@&!)HR=,D#=O'E(1TZ:GB/UTBFCPZW)C@4)8JQI P<(%&&@2G63 H29c
MHFW"/'P9LR0(%V].$ 1I,O*<-T")2$GR(G+4J8^=/*&2=FV(%#\5  4: !H(b
M34%+149)3$4 05)# *0"  "5%!VBOWSA P  #"- M FSIHR9-&S*@##S1@X(a
M.&EBT'G3YHT;$"C"L!F3QR((&BYBT  QAB*<,'32B$F8HH&"$2X#VBDC9TX:z
MCS%<P- !8@I*$$'@.)01 P0,&SIFU- A$D2,'#E@Q'3I<DJ1(502).CAU.40y
M(TR"')FBM4=,$"W<O#'#YLU/.F78L)DC, _),2 F@F"3QLT:$&% J%W8]J?0x
MOG3,8 SCALQ".6G*-)[34@$3(F#%DMV*EF[:M87IG.6[LF^9,"X"IZ';QNZ;w
M.Q?YNBGS1;4;N'+,A!E3Q@6(.7+P]AW#I@Z9,F1\#RP(HF,=AZ_=N( TP"63v
M)$(V<VTAUW08ET^$*-'^,.+$BM+?5)4RA#Q$B10MNACC$DF1($2*2"$_L^9-u
MZ6BX1$404AQ11%:<O7>>?'30 8=+!'Z5!!-%E%4>?.BE%IQ+303A!!1B59B@t
M>?%)1P(*5F%568=.3,&>A0J6Z,) ;G@5!!4@&@@CB1F.@9)+1"0Q!15&3%@$s
M65S)<1H9;2BTG$$(*70BBRX.D0(()U8YQ94GVH>??EM2I<!9 _655QARG%$&r
M'=-5]Y)+)PY8X($IZ)# B>&-5YE6)PYA)98H7);96%>V\ :@<AI(!9<HY+DEq
MH-=E5]E9=<RAT(R,S?>3''4DA%$:#[TQ!UR.,2:8'&LI%M@=:$0)@AB[K<$"p
M""$MY.IPQ1WG&!HTE5$93 I,Z6&.1=1Y)PI#W$CLG@F, 0>@R>(8(J,L+BMFo
MG\I.:Z>P+;(WZ9@O@? &';PZ1 >::M(Q1YM3*4#<:6[HX))6<K0!J*-7TE23n
MF,2](888--GY+F/S)E OH@0J^BV:8\BK )\H1'AE8"=&6"2%C 8YY,5'?GO6m
M<7!(=IP;8T2V+G7MQICA&W:J+!]>_=DD7X#@ AH(34%.249%4U0 K,%K +H#l
M  "5%)NK]'XL!P  #'/HU#%C!D0:-R#HH"D#@DR:@'+2B*E#)\T;A&\*PDD3k
M@\Z;-A=U-% PTB.=,&Q W) QLH6<.RT@'0 ! D9-$) 8S*"Q$T00.') R(@!j
M(D8.'3)H@& CD:F;,F%<A)$S)H'3,E_"@)A#]053,2U?QIQYTR:D!CERS/ )i
M5"A1HSIBV #1)LR:,F;2L"F3((%'$!/UDC%()RQ,F31MFF40 \>,N3^##A4*h
M ZG2NF[2F"D3L*_"AR#R[C4\-O'-G#'DYF K^>V,N#) ;.SX\:*+&'W=R,EHg
MYL1@S'#"G"E#&G%9G MBS,!10VEDMT5EZ.@YVR-(-RZJ)N ZICA9Q3@9PX!!f
M]/EDY;!E<[1N&W,"W;RW4C6,)Z8!TV:3WQ@/N>UYZ3/<H!YMU[E !QUPJ)! e
M&7B4,09%88@QF@(N'?;=:8S=8!1KT,E065(@R $5&6WP9=4;;ZP!0AAT$.8=d
M?LC-X&%/YKUU% QS<:6A"[/U14899X0QQU)OW&%0&V>\>-Q9-. 06XV4Q;66c
M1V2\T=<=#Z&QU$-TN #) $J"=Y9J'$Z&XW1SV5&&''-8A!T:?;7)!AMY@+!0b
M&#_*,=)(8UQ$1QENT#%D1EM*>!!44E$E$DD*.!%&B3@IP 2@9RB$$P%3>'2'a
M< Q!@JD1. TP11IZ,.1&D301P6*G!U"1!J2>#B'%$"/UD!--MB* *R2Z@F Kz
M ;OV:FL"N][GJZ<C,9&$$,HZ4400R.5 @TT@#"%''6Z,L=!@7]800PDX'4"#y
M#4H5M9H3;]@! @ZK=8L4#G#0)&T.,"2[;+//NN $$5B$JQP.-%F+K;9E<#M x
MD^#RNA)-&Z*K+KNAUO!NO" L5T2]DMZ;A+-!N/!$%52$*T.  5^;[;:ASE!#w
MP@?$4,-<YH+@\+KM#B"Q#/#2A$,0-]!@+\<N-+$$<DFM5JW)!!L\ PPLQW #v
MS),]1V^H-R E \4PW%!##C\_"X,+4R!'PPUK'3TPRE_*L'*X*AO=<+HT1SQQu
MP&IQG3'',8"-7 TU"&CVR06'*D,.+,^0@]]O/USSS3G71(00,W0=A QZ0[+ t
MV&4+#+C!,MA0N+<,GPLWQ.[B3+$1,PP1@^0S5+Y #LR5?';@7ZK,,KGE)AYWs
MZ8W+8(0-.$A^@^O3 OQWTH+34'AJH<L\^N)S5PL#$4&,),6S1#11A O*"H%3r
M FIGCC3: SC-\E"Q02>U60-4G13%0@R1U$@X(?!KL.'=?RP"(U'QQDDI@40!q
M8F 6 XQ-.3AIP$X29H 9Q( &+%$ &@A023%43TU/3BXQ $, V (  )44BW&Xp
M89$$   ,#10T<!*D21$0(!H$! $) 9PT,>B\:?/&#8@6(,94M%-&#AT08=R0o
M 4$FS1PX;,+D 4&DS)DP<T"X@)(D!@@S:=B4 9'&(D4W;\:@D3-QIT*! J=Dn
M<?($RI0D4Q >9>@0HL2?(+:TH-,E:XLT7;7F@ &"#X@58[OBU"D3T@"I >,2m
M*3)EB)0D4*@D>>($K@*J4*Q.K(BPSIPR,4'00;/3")LW><BTF$*G3$\Q'<^ l
MZ$A4#DF3=.2D$5.'3AK"8=B<>2-Z<9NI#25^/IER)8C'=Q#*0?R&3>G3%EFZk
MA(DP39LP9Q C1#&S)L*UB%,@) P2-H*?08<6G8U2I0N&!*:\>1[&,\^/8T*"j
MJ,AF94G:*A4S7B_Z3,_4UF?(@(%G/UGCR"G7$PCZ\><?" _A408;,1&VV$[8i
M"454&Q!6E(9$<GSG5A)T6'<<'(D]B! <J95!1V49541'&#V5,=* (D*GV'AAh
M@+!;2J9QQ),;E;DQQX5Y6*<31VR ,$<=0LD7QD<)+AC3'1>BD>)CGO5$1AEXg
MK&<&"/S!X!9(NR$D1DICK(%02&18M]@;AX$ Y6)3LK;CE5GR=\.7Y>UT!QH7f
MEO$="$GPV!&%)2VYDT94QI1G0@LU]"$<+LZX8V5R$)J&H4:B$<:5<_QY5%Q4e
M43'?5]/!81IU/7'D46)CAE'FF2*YR6=E?XJZTU;KF0I<1F$8AIAU#T4TF$6Rd
M^0H2@2"(L=(,(+AAV1EHB,$:&F^\,9(9<KX7VFB_N:&9B)S):9T<2S+FV6+Jc
MB7BE&;VR\9$,R:XD0ZWS 9@<KQ9A9N,;*U8V$EIDB=LH BV,19)+NRE'W!T+b
MLL'"109CUI-F8SQ6)I2'>1I74D4<% 034SSA%U4/C4%'';NA<(-TGPI$E1 Ha
M)V<>F@@=D1,;:2#V,*""DFMR&CJ",,1$<)364<WDPL'G&'/L' 09[U5DW16(z
MZ93'PS'D@$,.&B/5 !H(4$DQ5$]-3TXN0P!# (X7  "5%%UL*84>-@  #"]4y
M-%  0D4".&EBT'G3YHT;$"U D$DS!PZ;,'E N$ 8 X29-&S*L/#(YDT>,BWFx
MT"F3QHV8,G+.2$Q#!PW,@05Q&N2XL.'#+2WHH$ CITR9%%U  $V#PHT=F'20w
M*FV1 P8(/B!65$WZ,:1&2 -TOA@X<$3+,6SJD"D#@H?*B6]<H/%1]FS:M6W;v
MA*DIEZX"LV[0JF7+X\T<,2W)]*T;^"Y;$4_ES$GC4*X(L@K*KOWHAJT0)D&&u
M+$F0( ;I@" 0XBG#!L28-R4E%QS[=W-+ME>0)*%2A#0,S"WID";SYHN9DB=!t
MH$BQ8V!PTG7FA#G#=GES!<\3M*2IG/EI%2#VAI&3!L04*K.=NQ&>@#-%--UWs
M? ]/9WSY\^FQKR<]QN:8-5^L449&ULTG'GGFH8>"$$D\,44*^65W1Q@T!3A@r
M? ;6AR!^"S;X8(3[)3!'&71\H1IK&": VH'W*<C&;2 $ :$*M&4W1AV2O2%'q
MBBMJV*)RU+5!W!PCV4%'#3+,6&.(;=CQQ8TY[EB@BN"QF*!R1B*II'KLH27'p
M%W.,4509#TW9HWU7HA#DD$4>F61^);EQQG#%T9%&&]5Y1R5]:'*XIF$CS9''o
M'':,MV5FB'))6IARN+%%##;  %87UV4'1Q@AT;'2HS90.E"<<R: !D4+<>IIn
MH@H$U (D'M X4$ )Z-52 F"YFJH*J[9*FZQECG?&&"/Y:D<*BOHZQG7]C0="m
MK<)N<>H> VD7XAMPT'&=M.RA 1L98(KIAGRHF:$C"-JR008(+XE;% A%T8'Cl
M0PM)5,8<:RP$1W[8DM;NM:"2QEH8<(Q(!KC@_1MP&>>.^)H;9,R!KQ%),-';k
ML@>HT-*UV14U!\8ANE%4& -'FUU+D5DK<HARO%&?R0KDFT!-8WXA1A[7)BM'j
M A2K$/!UF%$9;4'+#K"=G9BFH0=;-;5TQAPN@/6SK=)R9UW/U-)!<0\@Q'!Mi
MN=PR^A#66D>;\LK+%H U#!R7O"P!9U\+LU$R9P1"VST;VT(+P<9DQPHK\(RHh
MSRT##=:EDK'E*]-.!P[U':-ZA8*Q()A@@G(JJ"#LW%B?T,()5V%5^>4]9+["g
M"2D0VS*T+6MG!N66ZXTY"">,'OGD(:C4Z!AMW(M"ZV?8,9((6L$@PD@SE!XMf
M6&/O-3<(55V; &LC@I#&ZKOS;L?KFI,>;0*HTSK ''?0U!_ENPN[0@S&MPQ6e
M]V"-$4;T)^1P@@[S46756C(E;Z=#^$)"@/[+L]^U_">&CZUA@ -P'_S2,+_Yd
MD PJZ+K(?U[ .)JP!6K^>Z <K :V 1*@@&4(PP&/E\#WL>4$=&C@GJ+#EAG@c
M808@Z$P:SH &,>C(81@DP-O*$+?EA4U]'S0@ ONP/2+^+0%VPUMX],:W:QE1b
M9-2#' ^R9CKH2(<Z\<%,M +RM*"5A%H@X%]1>*4TCX!D7DT+B^)HDX *.BZ)a
M543=]KS4K3&5B3E:3!T74R>X 5"+3&8,R?;PI3KEH* ERQ,7',@D!LH)ZW=Rz
M$$'I7H<"B$FL(!""016Y1T(SP($\ZZ'>6V BA]^]I@[FBJ'*PKC(AY1@#EQPy
MP_ *(BP\JF\ 9<"#U-#G/".2)F#+LUX3\_B=08('>2$\5U?*8$QCEJ:-.B)#x
M C0&FSKLSPW.A!0TY2#-2V5J)=F,%%BV*4U&&>4A>&J('/)@3#8FP&/)3.3'w
MSH4"$VAL)#(820Q&TA);DF9ZRH$GR$ 0 K!MDGT#\"0HZ2!*.JQ%#J4$@0A.v
MF4HWK'*>[)I7-:\92TDBT QH,4QU^HG 7.[2GPGPY3LQBC4S8!0%WB312O"Iu
M3QOPTPTH!6A3,%K0K-G@H)W\9' :^M"(3O0-J#R71:V&T9AJJ@P=]2=80%J2t
MZ!T2IR75I=50P,LB;D^@YVKI2[U&4Y]*:@ WS2GUP$I0L(ES $"]I4*'JIQ1s
M0M242*WH1>-I3C)%]:,AM2I)26C2K78U=4],'55%JIS!HJJ8?#SF (@C/3JDr
ML9W;(\X7[(0GY1PVL\4YCDGHJ;^;EFPD.XR;+;=G,($M3[.<K4Z2_+:]/9*Fq
MCR&A#L,N&UEW-NE).)K#N%!0@WUF#0?, 4%J%DH]$02R##I0[BMG&3"4_A9*p
MPI52<?69@^0NEZXH<&YK$0:"V"ZO!*E$@<)2,,OQDL&Z3L+N<+<+ AGP4KE"o
M#:5RG!L&-V1$0!F)U\+LY(8ZE"&-'B4FX&XKV0EQ1UWA 0& /SDOQ*F1P>YTn
M<(D G,66)7;!?41+"!]2AWOU]UR%#>@;,NJN1E417^Z9 WR&LJTZ8G4@B<VCm
MJEAE*UA%9SIE\%Z/<<5CVOP8B\L9B!Q;-E?]JM>AI/P=3QC"/Z!4Y2I9V<I4l
MTI 4H-"!*V?<2$*^,H"_]DR^4CKL\[3J65OF&%']0N(8;M2&+<Q !C?HPA9Dk
M (,\RV=/I!Q7&.9<AS:@<B^4><AXY("1_&!FQ[IZE4$T*]J3D&;(N;+5<RB-j
M'-*J;"^FA0IJB0*WF9GN.?JKU'XTR++GI'9FUUGR'@ORLGE9K=(H40E+7 (3i
MF4RD)C!Q ;G&0X;P%469X[HS#/# Y]\0Q%9B*\,92 43Z>U'QM-CV32E3>T=h
M/2<Q>+A64::M:V_OIU!L$#>WRVUMX:0!#RR8SXE:4^ VO&1'&!0:S>:3LCO$g
ML-#WQI>EX$U".- L6G$.M!SXY9!0E6&?A)4!P^7TS_60:6,G8X]%O@ #%A2<f
M#5^ ^"TWGL^/?V$&M&V9;?M(!D;[VX9X6")2&28]O5#G:6S4J?[B"-HOO*@Se
MRE%N#D8"EJ'7-P8=#UIWG:?9GU='Z$0?@-&+3KP9:)+IQ7&Z<NR;]!E8'9](d
MC_K2>ZYU%'"]ZDFG.@B\?O5H^1)ZS#P=V6&$ J@K'>UB1VG3Z6YWM:N=ZWK/c
M.MW9#O:N?UWI@??YX ]_]KL?O>T>)N;*):L7 8%@#CA"VHJ/EK(P6A,$"@\/b
MH0U]D94LD=%Y" '.HP7A0V:D;=++R!3Y?(,=Q)YO/%?L<-^]/+1)+^93O'/Ma
M?X][$@Z:SEMXMY[3D(>DT"WRCYU\T$2LK%&IY UG8'0;5L_DW;\>!+YG?EM\z
M:GOF%U_NJ;-^J9CO?/ SP8F2%XCB@A;"\?6;MSB#6NO%#WOQSQX&X9<'Y\=)y
M>B1_#!8T8=)?X<$&*]$HB"8G[#)#:+!59? 4#]%O<P A)P8"(6$&6_4&9' Nx
M&+A)?00'UD1@,@%LY65KGD<'DX$7*OA%]T(1'O$^#:@<8O!YB'$&U"$') @Uw
MA>1ZD4-%VX-0M@46?92 #]&!EI4XWI,3M]1']0<?\V9M[/(&=X!_2)AO^Q=Sv
M6#,#,9 #Y1=S/M!_>' W5;0^QT, 1T@ ?40=5A,<%T<3:3 O'C$N\Q8H[A,2u
MYP(#+8!TSD8K;IA#X*9<6".$X($#FI05C15S+^!3,P("-.!!V.:!/E0#$-&(t
M(% "D.@W@KAQ5G&(ZN4MR<<P>) 4/N #ES<J'@@ADZ-F_K-Q'2&*7E.*9( 's
MYX.*JEB)43&$L$@ )+<\*#"*C6*+N"@#NKB*V>:*5.1!&P=#M$B*X+8",Y",r
MO,B,GP5$Z":,S]@6P0<A6 %3("<#WEA?X*@<LEB.Z+.&RR(!X0B*JP5$<N@&q
M#G.(H (A,(4I,E4&6X!N71"/@JA^;]"/F)(4*P V[T=,_M.&+%>!:3 &;#&/p
MDV$G\Q)=,- #8B!!:S 2RW8#8-$#%01.0 2%@MA'2>,P-*B"-C$>5O,&JZ."o
M9I 2"W@&T<499,".DJ6"Z&9@8;0Z:V$'#QF1%C>1!()()XF3TV="X!=&.^*1n
M< 4"%30^;; =4WDT#J.""N<"2 D6 ,5J(Y$L<L(6&3EH:U!>*Q:2AD-S0"D=m
M6SD D2$=6CB(;)1!U/-J>9"&!, ^!0 '7OA[C"AQQ[.7WR=^*Y U'N1+_@-Wl
M:ZB7?+D\O%>8/T0K@NF8&0&9A]DS=-E83@$5>*F7#^>8%D>/C'A\A;8%?*EGk
M!G<JDED&Y(@U$CF:HV>:IVB:S9>)'0D6"0E$B$D B@E$GCF+[79QL(E\ITF;j
M21$1MSD N;F:K1F<HEF8I%EGQ9F:E_E8"VF _M-'40D?I"0]#C,'>L$&(2$'i
M/X"3<TD .A4&8N P*/!P$#)%ZLF>K)D^@JB71U@ VCDJ*R%L(1$&3[& #G%@h
M3@@)^(E!!1!Z6/-PU2F(O5F?@7F??326_R%LKQ$;E:6%!1J8?80&)^85^I-Hg
MY (3<2>9_7.@$#4N"0J8?T.@.O=I5C-%FG0\!C B)5*%9@> F4B869-TC[FCf
M4G6@;! ]+4HVJABCZC.C)&(B[X8B0@B97<=G.1IS3OJC#0H)2%JC2]H:AR2Ee
M.\I/E>FCU;F&#"E9T7EHIA=ZB"1#-&1#DA&7_8.>=4EJ/&1JBVE\L<F7?XB:d
M<M-^T2F;>4J;RF606P<T"@<ACRB&=DJ<,0<">IJ+R].GC<FHM.FHA6EVA'JBc
M/@@"AXI D'J&R BHC/JH=^JI>AJHC-B>F*JIS"-5 ]"I@3JIR"BJBOJJ!K<"b
ML5JIH7>HK-JI?UJK,<"GH]JK OBKIYJK(/!3G!JLG^JKP*JH+;"LPRJHJ)HRa
M._*(,8!<R>JLOPJKS5J:>+JMM7JKRF&LU[JKRMJHL8HUO JMMBJMY(JM:[B;z
M59J7B>JM9PBNM?F1HJ>M>IH48%&I,%0PF&JH(( #V6JOC4JL^MJI">NO P"Py
METJM!&NP]2J=]]JPLFJOPDJIXYJJCT@#4D4 ;R:(8QHT$^(P82!A%T)A<R Px
M/R ]JR-<(Y%B$&9163B@<KF&.M4?9? ?%D(@]$F@[?(N;39$7I4Z#4J WG.$w
M Y"$[G.!$MB$%[:%)"2%@T:%66J%]S>@3<N%N]>7,/!^?AE\?":V[S: :@A$v
M)0L6<.B<$UF'#@-A>7AY>TA>?@B(YJFSIFB(C941B;B(E<I[UOI30#.):\B+u
MEYB)6[J)G8B9P ARH6A(M0ANULB*O?B*(9N.T5B,TTBLJ:B,K>B+F3N.PDB,t
MCC*-L?JYURBZS@ART"BYTFB*U%BYR\BZCKN-A]B-//"-6":.7T".NVN.O9N.s
MP;N.(PD)[HB.D N0&12:]:@<]XB.^OA4!,D&_^B)_B.0U6N0")ER)(N=@Q@Tr
M/QF4;DN'%0E^&*F1^H0"9Y4"(*F?(YJ=A!BG,4.GOAF8C>F:7*JBDFEPE,F(q
MD>D_\AJD\4NOZK.7?=FC 3R9KOFE 2RR"@FGFEDRG1F8G^F:SCN<"&N< W2@p
MS?F:T#FJ_6J;>."4RRG :SBOOPF:*_&<^[K!J4G")MS!K,G"PAG"BMJO82J/o
M4;2>XXH^XQ>?XYHD%7S " IZ#SS (U*G1IRJ*8J]!3"DR@.C:7BE2KH:6MILn
M.>K /,JE2$>E! RSR@% 15K%-'K%3*JC8;=V4!H1"@QYJTG ,GK&-OK&7@K m
M<(S"*RK!*&"71>P]G9J+H-JM%BO(_ANJE4J. BNQJHJHM^2JDLJL&6NQM!JMl
MIZK(H#>PC7RPA0RMIJJNH]JN@URL'KNJG"R;E=RNDXS*D2R XCJMXZ*KI\R7k
MAFS)H*RHM<RQL%RMQVJNN,RNQ'K+]BK*DHRKI5RNLXR+^*K*PES(R_S*[^K+j
MP\RNZ?K"G8RN[GK,\*J;*2S']_O(H8RO#MO,LEG+#@NQBZPC$YO,&+NP(CRIi
M"ONPRA&PF<S(CTBQX(S+RQS,UES.^YS-U*JJ(+O#8@J^VOD^$<9A+.NR8BRSh
MH,=F-8N%;CJ_RL&S/LMARY&&!3"TC5*T)*12OO1AT@<6+1<&_B:0V1<&V[=&g
MT:)9 CG&+@J0'%TFD/=FCT9DD78K">#2I/(&ET8;D*9I^\'3UP?3*W-J^Y%Jf
M2G;3.K'3+D<N/9W2*^UH+?-M$S<G:* 7X99Q"8 '(@<"I,%L'D<0I)$'7UW6e
M*KI%!LAR3PUS,E<'-(?2VL=].RUX0(<"- " 8C<2-% #-9!WU[)W=YW7:2=Ud
M?*W7RH4#8]<R@ET=??W7B6UTCPW8+6W7CNW7(U&PDHW8F@V061T&8'LM^]=[c
MY3=^D%)^ ]@]0:B]7 8"JOC9>)"& P#;R\/:JOEAH]U_IFT#J+T"N1?6P$G8b
MSF/6/D2.E8J)X)$&*,5LR^/5IQH<^$A<5@$>MDVPL(U2>="<9HUUBG?77CT2a
M9CT28@T"V>U/1F33B!+40&T00R-DZYUI2R(UIB-K\D=K*L&2(%!BY34J<@*Wz
MRO%'#Q$^#(.%1.(:_;DC?46/,TL'8V Z5)T =)3@'0;AP35<< Q;=U(=D(=Cy
M>733\"UI[;$=,N;>DO;A"A!C,\8U-H;4PJ'B7A-K3/UL(>X&[Y'?<,!;#ZY3x
M+NXMOQTK\57AVF5<]N5=^<50^Q4>_J6R ;9BA95&99-@J:-A/SOAOH1F'OTWw
M*<:^;M;AZ8W30P;A_@$@ /;3)5YD V'18GXA2:8 ]-W4_]&S:Q"W@J;D2*Y,v
M:2%C=@A@-D1LZ%('9F &P286/:-30K P][U51+RTR;TZ0_ $3C %3W!)'(JRu
MKL&A<N#D4*/:;E0=A>X0A[YUI<-O\60S4-DX2&,3ZS(>%S27 ]#I-%XFLS4?t
M-G.5*_92QQ$=:' HVS/31:OHY#TOHR:B4(G0*<MA4/-AO*[E\G&=JD3GT*8 s
MZ%WF.0TK4C[F"8!I9JX U:[F\QWCM*9A<KXCQ7XA&WCK>.XP>OX&?)Z#?Q[Hr
MST8;T;+IRA$"KO[I9A?J8($:&G:'XJ[DF.Y.GBCO"V+H9'/O*>#K E(&]S)/q
M923OP+8N0.CJB'3ORSX *[(N'-82)NB"_XX9T7XK)@XK=)RE9 [RV3[R6-R(p
M7LKBVK'5^N%N!\?FWFX0-*H<)7T'&I@:60N4*>MT82#H6(X'#;B$#9< /F\5o
M4],RN33T[6;TMQ$&'9'TT7+H#\F!11\$)D('.W(V[[<G\>)T+1 $EZ?U=3 &n
M5O/L+I,&8^T]:L Q[%%OGJC67<25-&XU6B?V -49"(,P^"=PU!,"6%\M/K@]m
M@:_URW/T';8]"/?T45_X$?5N7JI/6XXJ'I[ML-+8)&[R.=W8RO'=Y&U<XUW>l
MBN+YX0T"H:^B;2[C-Q]A3B=L+.0P/@_TT;+T,$'T%(?X2;]F3/\</@]#4M\Rk
M5#\&5D]QCM][N=DS(ST =V]M#Y8&DD$'_+0Z>K\6-\G25?WWCK])Q8\UN ^0j
MO:\<CB_>QE7ZI\^1'(D'1N _'!F/'Z_>((YFF>_^"F#E*+"6:9"11Z$H]H__i
M,-[E3=UB#V'E#O$"+FD&LG_]6$(1]Q\2FS0$"W,'["D"7.!U90#ES^/-I#$$h
M"W,'["D"7.!U9@#E'$[Y71[R!G%=0%[R\G]=0%[1L#$2_<;R%:IJPM%O_2]Ig
M3=T0_VGE\=)O+%"ARM%Q5D&#5< $KJ$CG>&#PB:W"Z4TLM\R1=Y<7.!U65 "f
M8U "8S!+*& S^-AOC,@YI#,2*& S^%BAC,@YI.-/?W[G,_862!45?M/^7K[>e
M$,X&7Y+@)2__$2XFY]0=2^W_,DY]""XFYS02VM)9:";[+3,$"W,'["D"7.!Ud
M10#E[>_EZUW7FY7A\>_EM-$O&-Y9*% U+%\UR\Z&X'&10\,",= #][U!+" #c
M/4 FI$4BH'<1!_->MI+ZM,99960&<&WVB<8T(;HN=X T&9[?DP&!6HP$>G!Yb
M@[(2;5!>&2X'L@_\*U/U<#T99] 9Y](O][U!UQ+\^4V/,]09Y](OUP<'GM@Oa
M8"$=3]&R<' M<#T99] 9YY)P%W$P S,?"N,0#4/54Q\^##YC5?/;"L06,$ _z
M5HH:&D,B!OX&_X$O"L06,4 _5HH:][U!!OX&_T%(TO$4+7LO6#,%)59M[,L$y
M*'7?&Q0T6*,"*  JF*0<RT8#8A &*#4%)59MZN6?%08'* 5"(N2)"L06,D _x
M5HH:UV=B-.=>A"0=3]&R]X(U4U!BU<:^3(!2UW<O_H,U*H "H())RK%L-" &w
M88!24U!BU:9>_EEA< "007A]]S)%][U!LNU>PAB]3P9&$7'?&\2('9G^!\ $v
M!-MLR_D\WNP][B6,T?MD8!01][U!!-MLQY\ZR8X"T>M>YMTSR1ZV[(\9&@A0u
M23%43TU/3BY-04X V0(  )44A'%[5^D#   ,+J@@ 0$E20PJ3YH\<0(B!A,0t
M(D1 E!@1Q$(F29P4::# Q92!3H(TV:@ 3IH8=-ZT>>,&1 L08UC:*2.'#H@Ps
M;LB ()-F#APV8?* (%+F3)@Y(%P4C '"3!HV94"D:;G2S9LQ:.2H+,/1X\ Ir
M69P\@3(ER12.)E&J9 EB2PLZ7=JV2!/7;0X8(/B 6'$WKE.H22$-Z/IQ:)$Iq
M0Z0D@4(ER4*.4$ZFK JBSIPR2.F@B6J$S9L\9%I,H5-FJAB:9T#0U"IG9T\Zp
M<M*(J4,G#=LP;,Z\B:VY#8B4KGT"S</1\QT0<C"_84/;=DNB1I&F:1/F#&80o
M*)0:;/H4<PH0MT%4O9IU:_"?05UPG/*F:9C6:6R.P0G>#1NA/(4'_;T9?.PSn
M4^$&P@PRP(!'@7A-5]UU4PU8X($PX&42'F6P,0=';&D6U7A8:=7&ABS%MYMZm
M"B1A$W5P9-8?'+B500=I,+%$1QA3E:%3@QIR!QAP82!781BUS225&Z2Y,4=\l
M0D$U$QL<S5$'5OP!"<*$%2)U1WQHQ.@9?#F5@0=X9H!@( R"W90<"&( -<8:k
M-^7$WQN7@7"E9EKNQM%49'@I)AXWE/E>5'>@$5\9)"9!)$T?\@1D5#%MB=2?j
MXH4!!QPV_M;>5*3)D6@:BX(P!QIAY#D'B4I!P1$5_<T%'ARUL3753#4AE688i
M:[:I4Z"#DHAJ5&^MVFI+\UEV75J39=B>L#<-B*90,X#@1FEGH"'&;FB\\89.h
M9NP6'&RR->?&&1SEN)JV<@"Y66N:T9=CGF:$40<;-LFP+ @RZ-J?@M;!1-]Ig
MR+TQ(VDZ\867MBW<M5-1R5UWE)P5LL&"2P:?-E5J8WBVYI67D5J8"%,4400(f
M03 QQ1,BH)7&&'34D1P*-Z30E4\<":&R=:WAI-,13[&1!F8/&YHIK4%&-81*e
M<-!&$PA'E N'H&/,\7 09.3'UA68097'PS'D@$,.I!:!!4<:"%)%041-10!.d
M+DU!3@"&!   E10(JV'NMP8   QPTL2@\Z;-&S<@6H @DV8.'#9A\BPL<R;,c
M'! N L8 @8+-FSL@Y)29DP)$FC9ASI0!<1"$03=OQJ"14W#ERS0$Y310L#,-b
M"#1AR("@(R=-&:$$0< I(V=.G: KY]1D20<-TXM)V92AXW(E4#LKJT:5,V;Ha
MFZ%6=YKQF(=,BSETRJ1Q(X;I&1!AV)QY4[1J&Q!F^"YL^##BW+MMZK"AD^8Mz
M4#(K3Z8<R1*AF,9:P;+9B2*-BS(N7!Z,.;-F2<AVTHP9&1HF"#9UQJP)/>:-y
M8C)N3G M Q:AD"I93-() 4*JR85USNRL P=OR#)FF)9QL[JR<+QNA-ZA&=>Ex
MQ(]N0E=M"*+V;1!UT:Y<P]1-&38LS>P,(QJF3)IM(J,\<[AX'KAE_!68',75w
M=%!89VV'$V@+O4$93%S5,<=**K7!V71Q$5A;&RAE!QA^Q5G%!ALIA"8A96S,v
M5<87] VH5!UT?!$0'N^QL) <8=SQ18KNN;#33N-==(=%S^7%AD3TQ5&':FO\u
M%(9L9A57AE<? <:66P#.59<<=S$D5E,@W,'7&G/XJ  <(M%!AT1WO,>&C;6Yt
M,4<:D!7EQETXF?5&DP<=Z9QY#U%91U.AY2E24!?--5%%<W!6!W4%H3G2A&24s
ME)% @*6AU45A>.BE56#>@1,:Z@'V%@A,T21'"PS!5908,*9QT'QZ\35J&Z&]r
M1!I^*_691P@_*G#B13+@(0-+!,Z QPP@N)?&&6B(P1<:;[Q!1FB^#N801/^!q
M,(,,,!@+ PPF[=<K0KH6-X9(TYE)AH,70>AD=EIA%-"Q*.0GE$@D@9#'5J%Ip
M1<=%=83T!AUA=">92B"L\$(+.9 +V1FAM5K8?YSA^&68)\&11TEH-$30&3C^o
M)9*D$[K!V)WEO>&1'"^X44<;6\:G5!HTLG'1&V:@E7#++W/VY4IAB 1"##8 n
MS5>B"-%W:0PEAF@;&T*E5X9%$B45E%#TN0<2''EMU=VL"HC5,H>="L7C2BB m
M1C$((K0 !PR0#!!#W3+4/4/=--1=0]TVU'U#W2[4+0*R!>;GE$PE!CNA39TJl
M-1E@@AED]%R!A29M5<W29$;/4@U:7=J=\]RS;73  :-)U,$&V;4]%<<<'&],k
M>-P<U)[''!D)VR31U7*DR%3IGZ, M5*U<]495S"!Y!0<M,LQ,$9IR*< Z5+Ej
M)YK1X]U)4J%.@H67SF?--8;K1]U<QFH[]]R&1&NS^%H:8N H1QY GI5>&&+4i
MF]5<30I2:.9 %NP(Q07T,1_ZA.*BJB3,3+0RC@+K\#J3<,I>F)I#&-H0J$SYh
M[RP7XUA5"L65(5TD3F"17OJ2\C2U@,AI#BD+"ARR/J+,K"02Y IYY&4VDETMg
M+G IUV3 =R*A5,\,8W"#':+TKI[088",&9&-\D0>LVF*#2TP0^^$,@4IM. &f
M&Q$"1&1S&3D(18+EB5R*Q"<JSN&D< ,(UHGP0K#YL:<U9^$7453#F(.4*5@Me
MN,R(#):R->#(#7K@#)K>( ;^^8DFA<01$%!8!CRX8$,V4H.$N"*33JE$*&I@d
M9)GJEH)@ 1H(5$]$3P!% $XN34%. &H!  "5%*BI_D'B 0  #&[>W&$! HU c
M$'3>@&@39DT9$&% S) ! P]%&"#2,#SST$P:-FP@+GP3$,2<,7+*E'$# H4-b
M&A5APDCA @2<,G+0A($SIX&"-&[HX(3SADT8.D#/@!!3ALX=E2S+X$DS!ZD;a
MI7#2X"G#9@Y"A1SI($3SL W5.4E!D"PSY\?",'F89J3C\\Z;.FS(+'W(E(Y0z
M.5]!>!0;<0X<-D#+O)A31XZ9,&/X-GVZ$@2-%S%LV'P#E,X<@BD-EQF#U [7y
M/"Y\^GQ#ARS@UDF])@1!YHT.U0H2J  AA_71AQK#< 2QXD4+$#DPDBFC%$5Mx
M-V52X-8-8HS.JP_AA&'35.CTW6WP(CW<\2/;EL^C?Z==IPV<P"ZRSEB/LS=@w
MZZ/7I$61QDS&H#BYL1UOY]5V7D!B,42'=2!()90;:)$DG0(^48<&50F=(4<8v
M;:"WUH05[C8#'C.H!0=2)'D('8@*P-&;&&&(P48>(Z7D B0#X 8:"%9%4E-)u
M3TXN2 !!3@"@    E123/%19J0    PO5#10 $)% CMEY,Q)\\:-"S0@S+R1t
M P).FAATWK1I.+#@BX$#1Y I8R:-FS(@K!21,B7)$R<)$L2  0.D@C%HPLA)s
M &D 0H4,W7PYLJ4+B!X@1%C$J+$A"#LQ7,  @6*CFS<I0-Q10Y'&BQPP1.P8r
MB%,GSP%#WD#)(R4-E3)%01Q-BF),UA@Y<.0 (20-&S8@I+R94\;-&CEAW.@1q
$:Q,:  %#p
 o
end