[net.micro.atari16] Yet Another Fractal Program

rlp@cbosgd.UUCP (J. Knapp) (05/04/86)

Here is a type of fractal generation program that you've probably not 
seen yet. It generates something like a topographical map of a random 
relief. The relief is divided into 15 altitude zones, each with a different
color. The resulting maps can be very pretty.  This is a TTP application.
Run the program without parameters and you will get the usage directions.

The algorithm is due to (who else) Benoit Mandelbrot. It is based on
the "Brownian plane-to-line" function of Paul Levy.

note: This program is public-domain. I put no restrictions on its use.
      Comments/improvements are welcome.

-----------------------------------------------------------------------
begin 666 levy.ttp
M8!H  ':*                             "9O  0CRP  9D1!ZP" 0H(4
M&"A(4T(D2 P0  IG  $ #!  (&<   H,$  )9@  #%*(4T)JXF   .8,$  \
M9P  K P0 #YG  ":#!  /6<*#!  )6=*8   QE*(< !R !(0#$$ .6X:!$$ 
M,&T4XX O .6 T)_0@5*(4T)K  ":8-Q*@&<  )(,@   ! !N!B \   $ "/ 
M  !M\F  _WI2B'  <@ 2$ Q! #EN& 1! #!M$N. +P#E@-"?T(%2B%-":U1@
MWDJ 9TX,@   " !N!B \   ( "/   !LQF  _SA#^0  9A!@   (0_D  &7P
M<A]2B%-":R0,$  @9P#_& P0  EG /\0#!  "F< _P@2V%')_^!P\6   )A*
M0FL&%-A1RO_\0AHB*P 8TJL '" /D+D  &WRD($D.0  ;,9F"B0 !((  !  
M8 X,@@  " !N!B0\   ( "8!EHO6@M:Y  !M\B\#+PM"9S\\ $I.04J 9P8P
M//_98#P@ BY!W\+?^0  ;?(CP0  9C CP0  9C0CP   9CA.N0  ,.(O#$OY
M  #EZ"Q-3KD  !&\< !.N0  -\H_ #\\ $Q.06#\("\ !&#J  !.5O]T80 (
M#DAN_Y1(;O^62&[_F$AN_^A(;O_T2&[_^$AN_^Q(;O_P+RX #"\N  AA  @2
M3^\ *$IN_Y9G  "&2&[_=$AY  !F2&$ !6A0CTAY  !F2$AN_Y@]0/_J80 .
MJ%"/2H!J)G !+P!.N0  3+!8CS N_^I(P"\ 80 ,1%B/< $O $ZY   =M%B/
M2'D  &9(< 8O $ZY  !-3%"/< $O $ZY  !,L%B/,"[_ZDC +P!A  P,6(]"
MITZY   =M%B/+R[_]$ZY   6S%B/("[_\.. (B[_[$ZY  !.3"\ 3KD  "%4
M6(\M0/_\2H!F+$AY  !F:$AY  !RXDZY   :W%"/< $O $ZY  !,L%B/< $O
M $ZY   =M%B/+R[_["\N__ O+O_\80 #)$_O  Q(;O]T2'D  &9(80 $=E"/
M/4#_ZDC ,B[_Z$C!-"[_E$C"+P(O 2\N__@O+O_L+R[_\"\N__PO &$  (Y/
M[P <2H!G,# N_^I(P#(N_Y1(P2\!+R[_["\N__ O+O_\+P!A  2\3^\ %' !
M+P!.N0  3+!8CTAN_W1(;O^880 ,;%"/2H!J)G !+P!.N0  3+!8CS N_^I(
MP"\ 80 *]%B/< $O $ZY   =M%B/,"[_ZDC +P!A  K:6(]"ITZY   =M%B/
M3EY.=4Y6__A(>0  9GM.N0  '!18CT*N__P@+O_\L*X &&P  +1.N0  $Y@D
M/#_@  !V $ZY  !.%&P6+RX %"\N ! O+@ ,80  E$_O  Q@%"\N !0O+@ 0
M+RX #&$  3Q/[P ,2FX 'F=&2J[__&= ,"X 'DC +T   " N__PB+P  3KD 
M $W$2H%F)# N  I(P#(N ")(P2\!+RX %"\N ! O+@ ,+P!A  .N3^\ %' "
M+P!P 2\ 3KD  $S^4(]*@&<*80 %5G  3EY.=5*N__Q@ /]$< %.7DYU3E;_
MZ$CG PPL+@ 02&[_[$AN__ O+@ 0+RX #&$  91/[P 0("X #%. (BX $$ZY
M  !.3.. (&X "-' *$CC@2!,T<$J2" N  PO0  04X M0  ,2J\ $&=<(B[_
M\$ZY  !.3." T*[_["X 2D=J GX ( =(P+"N !!L+.. V<"YS60,($Q4C# 0
M4D P@&#P( 9(P"]  !#C@)O ("\ $.. XX"9P&">( 8B!DC!XX&9P9O!8)!,
MWS# 3EY.=4Y6_^A(YP,,+"X $$AN_^Q(;O_P+RX $"\N  QA  #63^\ $" N
M  Q3@"(N !!.N0  3DSC@"!N  C1P"A(XX$@3-'!*D@@+@ ,+T  $%. +4  
M#$JO !!G7"(N__!.N0  3DS@@-"N_^PN $I':@)^ " '2,"PK@ 0;"SC@-G 
MN<UD#"!,5(PP$%- ,(!@\" &2, O0  0XX";P" O !#C@.. F<!@GB &(@9(
MP>.!F<&;P6"03-\PP$Y>3G5.5O_X2.< #"IN  @@+@ ,(BX $$ZY  !.3.. 
M(&X "-' *$B[S&0&0E54C6#V3-\P $Y>3G5.5O_@0J[__$*N__A.N0  $Y@D
M/$    !V $ZY  !'F"0\/_   '8 3KD  $@P3KD  $,L+4#__$ZY  !"Q("!
M9\I.N0  $YA.N0  0RPM0/_X3KD  !.8+T   " N  @O00 $3KD  $*<)"\ 
M "8O  1.N0  1YA.N0  0N@M0/_T3KD  !.8+T   " N  PO00 $3KD  $*<
M)"\  "8O  1.N0  1YA.N0  0N@M0/_P("[_^$ZY  !"Q"0\0'   '8 3KD 
M $>8+T   " N__PO00 $3KD  $+$+T  "" O   O00 ,(B\ !"0O  @F+P ,
M3KD  $;L3KD  $+H(&X $"" (( B+O_T3KD  $Y,(CP   $ 3KD  $W$(B[_
M\)* (&X %""!3EY.=4Y6__1A  =<0F[__CU __PP+O_^#$  $&PV2, O0   
MXX @0-'\  !R#G#_+P O+P $< <O "]( !!.N0  34Q/[P ,(&\ !#" 4F[_
M_F# 0F[__C N__X,0  0;"9(P.. (&X #-' (D#3_   9H@P$4C XX B;@ (
MT\ PD5)N__Y@T"\N  QP!B\ 3KD  $U,4(\P+O_\3EY.=4Y6_@Y(YPD,2FX 
M&F<*+7P  &;H_^A@""U\  !FJ/_H2&[_\DAN__ O+@ 4+RX $"\N  QA  $P
M3^\ %$*N__0@+O_T#(     0;   G.. (B[_].6!(&[_Z-'!,B[_\$C!-"[_
M\DC"DH(O0  0(! O00 @3KD  $+$+T  )" O " O00 H3KD  $*<)B\ )"@O
M "@O0  L( ,O00 P(@0O0@ <)"\ +"8O #!.N0  1Y@O0  @("\ '"]! "1.
MN0  0IPD+P @)B\ )$ZY  !(*$ZY  !"Z"(O ! ]@!C(4J[_]&  _UHP+O_F
M4D ]0/_F*FX #$*N__@@+O_XL*X $&Q:0J[__" N__RPK@ 4;"I)[O_(?@ P
M%3(45(RP06T$4D=@\B N__SC@$'N_CC1P#"'5(U2KO_\8,PP+@ *2, O+@ 4
M+R[_^$AN_C@O &$ !@I/[P 04J[_^&"<3-\PD$Y>3G5.5O_X2.< #"!N  @P
M$")N !0R@")N !@RD"I(("X #"(N !!.N0  3DSC@"!-T< H2+O,9" P%2!N
M !0R$+!!;P(P@# 5(&X &#(0L$%L C" 5(U@W$S?, !.7DYU3E;__G "+P!P
M 2\ 3KD  $S^4(]*@&<4< (O "\ 3KD  $S^4(\=0/__8-A.7DYU3E;_^'  
M(&X '""\ "' <R!N !@@@"!N ! @O    4 @;@ 4(+P   #((&X ($)02'D 
M &<K2'D  &<H+RX )"U __Q.N0  .3A/[P ,<  @;@ H,( @;@ L,(!P 2U 
M__@@+O_XL*X "&P  >CE@"!N  S1P")0$!$,   M9@ !U" N__CE@"!N  S1
MP")04HD0$4B 2, B/    ( $@0    AK  &@L+L8"&;P3OL8!@   $E@  &$
M    :6   7P   !88  !4@   'A@  %*    66   2    !Y8  !&    $1@
M  #@    9&   -@   !&8   I@   &9@  ">    56   '(   !U8   :@  
M $Y@   ^    ;F   #8   !38   "@   '-@   "("[_^.6 (&X #-' (E!4
MB2\)3KD  $JT6(\@;@ <((!@  #X("[_^.6 (&X #-' (E!4B2\)3KD  $JT
M6(\@;@ 8((!@  #4("[_^.6 (&X #-' (E!4B2\)3KD  $J(6(\@;@ @,(!@
M  "P("[_^.6 (&X #-' (E!4B2\)2'D  &<T+RX )$ZY   Y.$_O  Q@  "&
M("[_^.6 (&X #-' (E!4B2\)2'D  &<W+RX )$ZY   Y.$_O  P@;@ H,+P 
M 6!4("[_^.6 (&X #-' (E!4B2\)3KD  $J(6(\@;@ 4((!@,B N__CE@"!N
M  S1P")05(DO"4ZY  !*B%B/(&X $"" 8! @;@ L,+P  6 &< $M0/_\4J[_
M^&  _A @+@ ((B[_^+* 9@13@&8&< $M0/_\2J[__&<  @I(>0  9SU(>0  
M9SI(>0  <N).N0  &MQ/[P ,2'D  &=72'D  &=42'D  '+B3KD  !K<3^\ 
M#$AY  !G<4AY  !G;DAY  !RXDZY   :W$_O  Q(>0  9YA(>0  9Y5(>0  
M<N).N0  &MQ/[P ,2'D  &>_2'D  &>\2'D  '+B3KD  !K<3^\ #$AY  !G
MYDAY  !GXTAY  !RXDZY   :W$_O  Q(>0  :!%(>0  : Y(>0  <N).N0  
M&MQ/[P ,2'D  &@Z2'D  &@W2'D  '+B3KD  !K<3^\ #$AY  !H94AY  !H
M8DAY  !RXDZY   :W$_O  Q(>0  :)!(>0  :(U(>0  <N).N0  &MQ/[P ,
M2'D  &B[2'D  &BX2'D  '+B3KD  !K<3^\ #$AY  !HYTAY  !HY$AY  !R
MXDZY   :W$_O  Q(>0  :1-(>0  :1!(>0  <N).N0  &MQ/[P ,2'D  &DA
M2'D  &D>2'D  '+B3KD  !K<3^\ #$AY  !I,TAY  !I,$AY  !RXDZY   :
MW$_O  Q(>0  :5E(>0  :59(>0  <N).N0  &MQ/[P ,2'D  &EM2'D  &EJ
M2'D  '+B3KD  !K<3^\ #$AY  !IEDAY  !RXDZY   :W%"/< $O $ZY  !,
ML%B/< $O $ZY   =M%B/3EY.=4Y6   P+@ *2, O $ZY  !:DEB/0J=P 2\ 
M<!4O $ZY  !-3$_O  Q(>0  <@YP!B\ 3KD  $U,4(\P+@ *2, O $ZY  !/
MA%B/3KD  %U(3EY.=4Y6_VQ.N0  7 !"KO]P#*X    *_W!L$B N_W#C@%*N
M_W ]O  !".9@Y#U\  +_^DAN_W1(;O_^2&[_YDZY  !/&$_O  PP+O_^2, O
M $ZY  !:OEB/<  O "\ <!4O $ZY  !-3$_O  PP+O_^2, O $ZY  !/J%B/
M,"[__DC <@$O 2\ 3KD  %;44(\P+O_^3EY.=4Y6__Q(YP$$*FX #"XN ! ]
M1__\+BX %#U'__X@!R('4T$N 3U'__Y*0&<\,"X "DC (@=(P>.!($W1P3(0
M2,$O 2\ 3KD  %<T4(\P+@ *2,!(;O_\<@$O 2\ 3KD  %"F3^\ #&"T3-\@
M@$Y>3G5.5O_R< (O $ZY  !-3%B/0F[_\B\\  "! 2\N  @M0/_\3KD  "F>
M4(\M0/_X2H!J("\N  A(>0  :;!(>0  <N).N0  &MQ/[P ,</].7DYU< (O
M $AN__(O+O_X3KD  "U<3^\ #'(@+P$O+@ ,+R[_^"U __1.N0  +5Q/[P ,
MT:[_]"\\  !] "\N__PO+O_X3KD  "U<3^\ #"(N__30@2U __0,@   ?2)G
M*B\ 2'D  &G%2'D  '+B3KD  !K<3^\ #"\N__A.N0  +_18CW#_3EY.=2\N
M__A.N0  +_18CW  3EY.=4Y6__(O/   @  O+@ (3KD  "F>4(\M0/_\2H!J
M("\N  A(>0  :>Y(>0  <N).N0  &MQ/[P ,</].7DYU< (O $ZY  !-3%B/
M<@(O 4AN__8O+O_\+4#_\DZY   L+D_O  QR("\!+RX #"\N__PM0/_X3KD 
M "PN3^\ #-&N__@O/   ?0 O+O_R+R[__$ZY   L+D_O  PB+O_XT($M0/_X
M#(   'TB9RHO $AY  !J TAY  !RXDZY   :W$_O  PO+O_\3KD  "_T6(]P
M_TY>3G4O+O_\3KD  "_T6(]P $Y>3G5.5O_N0KD  '(R< $CP   <BX,N0  
M "   '(N;   B"!N  @0$$B 2,!2@") T_P  &SF$!$(   #9P92K@ (8-X@
M;@ ($!!* &=:(#D  '(NY8!2N0  <BX@0-'\  !R,B"N  @@;@ ($!!(@$C 
M2H!G&%* (D#3_   ;.80$0@   -F!E*N  A@VB!N  @0$'( $(%2K@ ('4#_
M_TH 9@#_<$YQ2'D  '*R2'D  &HJ2'D  &7P3KD  !YN3^\ #!(Y  !F$"U 
M__8, 0 ^9R)(>0  <LI(>0  :BQ(>0  9A!.N0  'FY/[P ,+4#_\F @2'D 
M '+*2'D  &HN2'D  &813KD  !YN3^\ #"U __)(>0  <N)(>0  :C%(>0  
M:C!.N0  'FY/[P ,+4#_[DJ 9@QP 2\ 3KD  #!T6(]*KO_V9AXO+O_N2'D 
M &HS3KD  !J"4(]P 2\ 3KD  !VT6(\O.0  ;,Y.N0  )M!8CR\ +R[_]DZY
M   =9%"/(&[_]A H ! "  #W$4  $$JN__)F'B\N_^Y(>0  :DI.N0  &H)0
MCW !+P!.N0  ';18CTAY  !R,B\Y  !R+DZY   !S%"/0J=.N0  ';18CTY>
M3G4  $Y6_\A(;O_D2&[_Z$AN__1"IV$  ]9/[P 02&[_V"\N_^1(;O_H2&[_
M]&$ !3A/[P 0<  O "\ 2&[_V' "+P!A  .H3^\ $" N_^!.N0  0H M0/_0
M+4'_U"0\0/   '8 3KD  $;L+4#_R" N_]PM0?_,3KD  $* +4#_T"U!_]0D
M+O_()B[_S$ZY  !(*"0\0/   '8 3KD  $;L+4#_R" N_]@M0?_,3KD  $* 
M+4#_T"U!_]0D+O_()B[_S$ZY  !(*"0\0/   '8 3KD  $;L3EY.=4Y6_]1(
M;O_P2&[_]$*G< $O &$  OY/[P 02&[_Y"\N__!(;O_T+RX "&$ !&!/[P 0
M("[_Y"!N  @@@%B(("[_Z"" 6(@@+O_L(( @+O_L3KD  $* +4#_W"U!_^ D
M/$#P  !V $ZY  !&["U _]0@+O_H+4'_V$ZY  !"@"U _]PM0?_@)"[_U"8N
M_]A.N0  2"@D/$#P  !V $ZY  !&["U _]0@+O_D+4'_V$ZY  !"@"U _]PM
M0?_@)"[_U"8N_]A.N0  2"@D/$#P  !V $ZY  !&[$Y>3G5.5O_42&[_Y$AN
M_^A(;O_T0J=A  (B3^\ $$AN_]@O+O_D2&[_Z$AN__1A  .$3^\ $'  +P O
M $AN_]AP B\ 80 !]$_O ! @+O_<<A M0/_4XZ" KO_@ H!_____3EY.=4Y6
M_^!(;O_P2&[_]$*G< $O &$  <!/[P 02&[_Y"\N__!(;O_T+RX "&$  R)/
M[P 0(&X """N_^18B" N_^@@@%B(("[_["" ("[_Z'(0+4#_X..@@*[_[ * 
M?____TY>3G5.5O_42&[_Y$AN_^A(;O_T0J=A  %<3^\ $$AN_]@O+O_D2&[_
MZ$AN__1A  *^3^\ $'  +P O $AN_]AP B\ 80 !+D_O ! @+O_<<A M0/_4
MXZ" KO_@3EY.=4Y6_^!(;O_P2&[_]$*G< $O &$  0!/[P 02&[_Y"\N__!(
M;O_T+RX "&$  F)/[P 0(&X """N_^18B" N_^@@@%B(("[_["" ("[_Z'(0
M+4#_X..@@*[_[$Y>3G5.5O_T<! B+@ (X*$"@0  __\M0?_T("X " *   #_
M_RU __@M?   ,P[__'  +P O "\ < 4O &$  'Q/[P 0<  O "\ 2&[_]' "
M+P!A  !F3^\ $$Y>3G5.5@  <  O "\ +P!P!2\ 80  2D_O !!P "\ +P O
M+@ (< 0O &$  #1/[P 03EY.=4Y6   @;@ (T/P #")N  C2_  8+PDO""\N
M  AP R\ 80A/[P 03EY.=4Y6  !(YP @$"X "TB 2, ,@     9D  %,Y8!.
M^P@"8   %F   %Q@  "L8   @&   ,1@  $((&X #""Y  !J;EB((+D  &IR
M6(@@N0  :G8B;@ 0(KD  &IZ6(DBN0  :GY8B2*Y  !J@B1N !0DN0  :H8M
M2  ,+4D $&   /(@;@ 0(+D  &IZ6(@@N0  :GY8B""Y  !J@B)N !0BN0  
M:H8M2  08   QB!N ! CT   :GI8B"/0  !J?EB((]   &J"(FX %"/1  !J
MABU( ! @;@ ,(]   &IN6(@CT   :G)8B"/0  !J=BU(  Q@?"/Y  !J;@  
M:F(C^0  :G(  &IF(_D  &IV  !J:B!N  PCT   :FY8B"/0  !J<EB((]  
M &IV0_D  &IB( E,WP0 3EY.=7 %(\   &IZ(_P  -[L  !J?B/\  #F;0  
M:H)P"R/   !JAF .2'D  &J*3KD  !P46(],WP0 3EY.=4Y6__ @;@ ,("@ 
M"")N  @B*0 (3KD  $Z<T*X $'00+4#_].2@ H   /__)"[_] *"  #__RU 
M__ @*  $3KD  $Z<T*[_\'80+4#_^.:@ H   /__)B[_^ *#  #__RU __ @
M$$ZY  !.G-"N__ "@  /__\M0/_\("@ ""(I  1.N0  3IS0@W80+4#_^.:@
M H   /__)B[_^ *#  #__RU __ @*  $3KD  $Z<(B[__-* TJ[_\ *!  #_
M_R 1+4'__"(H  A.N0  3IPB+O_\TH "@0  __\"@0  __\@;@ 4(($A0P $
M(4( "$Y>3G5.5O_\(&X "! 02(!(P%*N  @M0/_\2H!G.B(Y  !RTE.!(\$ 
M '+22H%K%"!Y  !RRE*Y  !RRA" 2(!(P&#$2'D  '+*+R[__$ZY   C*E"/
M8+ @.0  <M)3@"/   !RTDJ :Q8@>0  <LI2N0  <LIP"A" 2(!(P& 22'D 
M '+*< HO $ZY   C*E"/3EY.=4Y6__A"KO_X(&X "! 02(!(P%*N  @M0/_\
M2H!G-"!N  PB*  (4X$A00 (2H%K#")04I 2@$B 2,!@$"\N  PO+O_\3KD 
M ",J4(\M0/_X8+8@+O_X3EY.=4Y6_NQ(YP @0>X $"U(_^P@;@ ,$!!* &< 
M 19(@$C 4H@M0/_X+4@ # R     )68  ,80$ P  "5F/$B 2,!2K@ ,(&X 
M""(H  A3@2%!  @M0/_X2H%K#")04I 2@$B 2,!@JB\N  @O+O_X3KD  ",J
M4(]@F$AN__1(;O_L2&[^["\N  Q.N0  .?1/[P 0+4#_\$J 9P#_=D*N__PM
M0  ,("[__+"N__1L /]B(&X ""(H  A3@2%!  A*@6L4(E!2D$7N_NS5P! 2
M$H!(@$C 8!Q![O[LT>[__! 02(!(P"\N  @O $ZY   C*E"/4J[__&"L(&X 
M"" H  A3@"%   A*@&L2(E!2D" N__@2@$B 2,!@ /[V+RX ""\N__A.N0  
M(RI0CV  _N),WP0 3EY.=4Y6_NQ![@ ,+4C_["!N  @0$$H 9P !-$B 2,!2
MB"U __@M2  (#(     E9@  VA 0#   )69&2(!(P%*N  @B.0  <M)3@2/!
M  !RTBU __A*@6L4('D  '+*4KD  '+*$(!(@$C 8*)(>0  <LHO+O_X3KD 
M ",J4(]@CDAN__1(;O_L2&[^["\N  A.N0  .?1/[P 0+4#_\$J 9P#_;$*N
M__PM0  (("[__+"N__1L /]8(CD  '+24X$CP0  <M)*@6L<('D  '+*4KD 
M '+*0^[^[-/ $!$0@$B 2,!@'D'N_NS1[O_\$!!(@$C 2'D  '+*+P!.N0  
M(RI0CU*N__Q@HB Y  !RTE. (\   '+22H!K&B!Y  !RRE*Y  !RRB N__@0
M@$B 2,!@ /[:2'D  '+*+R[_^$ZY   C*E"/8 #^Q$Y>3G4  $Y6   O+@ (
M3KD  "#H6(]*K@ ,9@9P $Y>3G4@;@ ($"@ $ (  /L10  0    "!%  ! @
M;@ ,(FX ""*((T@ #"-Y  !LS@ 2< !.7DYU3E;__$*N__P@+O_\#(     4
M;"!R&$ZY  !.3"! T?P  '*R+PA.N0  ('I8CU*N__Q@U$*N__P@+O_\L+D 
M &WJ;! O $ZY   O]%B/4J[__&#D+RX #"\N  A.N0  ,'10CTY>3G5.5O_X
M+7P  '*R__P@;O_\L?P  '229!(0*  02@!G"@:N    &/_\8.(@;O_\L?P 
M '229@9P $Y>3G4O+O_\+RX #"\N  AA"$_O  Q.7DYU3E;_ZB!N !!**  0
M9P@O"&$  ?I8CRUY  !M[O_T+6X #/_P(&[_\! H  %(@$C #(    !B9PX,
M@    &%F$D*N__1@""U\  "  /_T4J[_\"!N__ 0*  !#   *U?!1 %(@4C!
M(&X #! 02(!(P!U!_^\,@    '=G  #0#(    !R9P  @@R     868  10@
M+O_T (     (+T   $HN_^]G!'("8 )R 2 O  " @0"    ! "\\   !I"\ 
M+RX "$ZY   IGD_O  PM0/_X4H!F!G  3EY.=7 "+P!"IR\N__A.N0  +R!/
M[P ,2B[_[V<((#P   " 8 )P BU __Q@  "D2B[_[V<$< )@ G  (B[_](* 
M+P$O+@ (3KD  "F>4(\M0/_X4H!F!G  3EY.=4HN_^]G"" \    @& "< $M
M0/_\8%Y*+O_O9P1P F "< $B+O_T@H  @0   0  @0   @ O/    :0O 2\N
M  A.N0  *9Y/[P ,+4#_^%* 9@9P $Y>3G5*+O_O9P@@/    (!@ G "+4#_
M_& &< !.7DYU("[_^'(&3KD  $Y,($#1_   =A)**  !9Q@([@ "__\@;@ 0
MT/P %B)N ! C2  ,8 @@;@ 00J@ #" N__@@;@ 0$4  $2"H  QP "%   @A
M0  $("[__!%  ! @"$Y>3G5.5@  (&X "! H ! (   !9PXO"'#_+P!.N0  
M(RI0CR!N  @0*  0 @  #$H 9A9*J  29Q O*  2+R@ #$ZY   GV%"/D<@B
M;@ ((T@ #"-( !)"*0 0$"D $4B 2, O $ZY   O]%B/3EY.=4Y6   @;@ (
M$"@ $ @   )G!G  3EY.=2!N  A*J  29QH0*  0"    V80+R@ $B\H  Q.
MN0  )]A0CR!N  C0_  6(FX ""-(  P0*0 0    !!-  !!P "-  !(C0  (
M(T  !$Y>3G4  $Y6__A*K@ (9@9P $Y>3G4@+@ (6( O "U   A.N0  )M!8
MCRU __Q*@&8&< !.7DYU(&[__""N  @M2/_X6(@@"$Y>3G5.5O_T("X ""(N
M  Q.N0  3IPO "U __QAH%B/+4#_]$J 9@9P $Y>3G5"IR\N__PO+O_T3KD 
M $V@3^\ #" N__1.7DYU3E;__"!N  A9B" ((D O$2\ +4#__"U   A.N0  
M)]A0CTY>3G4  $Y6__@@;@ ($"@ $ (  #!* &<&</].7DYU(&X "$JH !)F
M'! H ! (   "9A(O"&$  TY8CTJ 9P9P_TY>3G4@;@ ($"@ $ @   )G"' !
M+4#_^& J(&X "! H ! (   !9P9P_TY>3G4@;@ ($"@ $     $10  0+6@ 
M$O_X(&X "! H !%(@$C +R[_^"\H  PO $ZY   L+D_O  PM0/_\2H!J$"!N
M  @0*  0    (!%  !!*KO_\9A @;@ ($"@ $    ! 10  02J[__&\.(&X 
M""%N__P !""H  P@;@ ($"@ $ (  #!* &<&</].7DYU(&X "" H  13@"% 
M  1*@&L*(E!2D'  $!%@"B\N  AA /[F6(].7DYU3E;_\BUN  C_]B!N  P0
M*  0 @  ,$H 9P9P_TY>3G4@;@ ,2J@ $F9R$"@ $ @   )F: RN_____P (
M9@9P $Y>3G4O+@ ,80 "%%B/2H!G!G#_3EY.=2!N  P0*  0     A%  ! @
M*  2(4  "%. (4  "$J :Q B4%*0("X "!* 2(!(P& .+RX #"\N  AA /]L
M4(].7DYU(&X #! H ! (   "9TH,KO____\ "&8&< !.7DYU("X "!U __\@
M;@ ,$"@ $4B 2,!R 2\!2&[__R\ +4'_\DZY   M7$_O  QR_RU!  @M0/_Z
M8   PB!N  P0*  0"    &<&</].7DYU(&X #! H !     "$4  $ RN____
M_P (9SA*J  (;S(@*  (4X A0  (2H!K$")04I @+@ ($H!(@$C 8 XO+@ ,
M+RX "&$ _K!0CW#_+4  "")N  P@4;'I  QG1$JI  AJ""UI !+_\F 0(&X 
M#" H !*0J  (+4#_\B!N  P0*  12(!(P"\N__(O*  ,+P!.N0  +5Q/[P ,
M+4#_^F *<  M0/_Z+4#_\@RN_______Z9A(@;@ ,$"@ $    " 10  08!H@
M+O_ZL*[_\F<0(&X #! H !     0$4  $"!N  P@*  2(4  "")H  P@B2 N
M  @,@/____]G*"(H  A3@2%!  A*@6L,(E!2D!* 2(!(P& .+RX #"\N  AA
M /W44(\@;@ ,$"@ $ (  #!* &<&</].7DYU#*[_______9F!G  3EY.=2 N
M__9.7DYU3E8  "!N  A*J  29Q 0*  0"    V8&< !.7DYU+SD  &S.3KD 
M ";06(\@;@ ((( A0  ,2H!F#G ,(\   &S*</].7DYU(&X ""%Y  !LS@ 2
M$"@ $ (  /,10  0<  A0  ((4  !$Y>3G4  "/Y  !LT@  ;-H@.0  ;-8C
MP   ;-Y*N0  ;-9F!'#_3G61R")Y  !LVB*((WD  &S>  0@"$YU0J=A!%B/
M3G5.5O_X2JX "&H&</].7DYUD<@CR   ;-(CR   ;-8M?    (#_^"\\   $
M $ZY   PC%B/+4#__$J 9@9P_TY>3G4C[O_\  !LTB/N__@  &S6("X "%. 
M+4  "$J 9QXO/   ! !.N0  ,(Q8CTJ 9PP@+O_XT;D  &S68-1A /] < !.
M7DYU3E;__" Y  !LWN> 3EY.=4Y6__P@+@ (+P M0/_\8098CTY>3G5.5O_P
M2JX "&X&< !.7DYU("X "%Z <@A.N0  3<0M?   ;-K_^"!N__@M4/_\+4#_
M\$JN__QG5B N__ @;O_\(B@ !+* ;3:R@&8((F[_^"*08!8@;O_\("@ !)"N
M__ A0  $YX#1KO_\("[_\)&Y  !LWB!N__P@"$Y>3G4M;O_\__@@;O_\+5#_
M_&"D("[_\.> +P!.N0  ,(Q8CRU __1*@&=&2KD  &S69A CP   ;-(C[O_P
M  !LUF F(#D  &S6YX @>0  ;-+1P")N__0M2/_\L\AF"B N__#1N0  ;-8@
M+O_T3EY.=7  3EY.=4Y6__P@+@ ,+P O+@ (+4#__&$&4(].7DYU3E;_Y$JN
M  QN!G#_3EY.=2!N  @@+@ ,7H!R"$ZY  !-Q"U _^3G@"U(_^S1P" N_^31
MN0  ;-XM?   ;-K_]")N__0M4?_\+4C_Z$JN__QG  #H(&[__" H  3G@-' 
M+4C_^"!N__RQ[O_H8Q@B;O_L(H@C;O_D  0@;O_T((EP $Y>3G4@;O_\L>[_
MZ&8>(F[_["*0("[_Y-"H  0C0  $(&[_]"")< !.7DYU(&[_[+'N__AD$" N
M_^21N0  ;-YP_TY>3G4@;O_LL>[_^&90(&[__$J09QP@;O_H(F[__+'18Q @
M+O_DD;D  &S></].7DYU("[_Y"!N__S1J  $2I!G%B!N_^@B;O_\L=%F"B H
M  31J0 $(I!P $Y>3G4M;O_\__0M;O_X__ @;O_\+5#__&  _Q0@;O_T(*[_
M[)'((F[_["*((V[_Y  $( A.7DYU3E8  $JN  AK)" N  BPN0  ;>IL&'(&
M3KD  $Y,($#1_   =A(0$ @   =F#G )(\   &S*< !.7DYU("X "'(&3KD 
M $Y,($#1_   =A(@"$Y>3G5.5O_P0J[__" N__RPN0  ;>IL''(&3KD  $Y,
M($#1_   =A(0$$H 9P92KO_\8-@@+O_\L+D  &WJ9@YP&"/   !LRG#_3EY.
M=2 N__QR!DZY  !.3"! T?P  '82(#D  &SB H   (  (BX #+. +4  #"U(
M__ (   /9P1P$& "<   @    ( @;O_P$( @+@ , H     ##(     "9SX,
M@     %G$DJ 9E8@;O_P$!    ! $(!@7 @N  , #V<$< A@ G   (     @
M(&[_\!(02(%(P8* $(%@. @N  , #V<$< A@ G   (    !@(&[_\!(02(%(
MP8* $(%@%"!N__!"$' 6(\   &S*</].7DYU<  @;O_P$4   2!N  @0$$H 
M9A8@;O_P$7P  0 !0J@  B N__Q.7DYU0J[_^" N__@,@    !AL1G()3KD 
M $Y,($#1_   :J)2B"\(+RX "$ZY  !.U%"/2H!F'" N__AR"4ZY  !.3"! 
MT?P  &JB(F[_\!-0  %2KO_X8*X(+@ !  YG#"\N  A.N0  ,_98CP@N  , 
M#V<$< )@"B N  P"@     ,O "\N  A.N0  ,210CR!N__ A0  "2KD  &9 
M9T @+@ , H    , 2H!G%D*G+RX "$ZY   R\%"/(&[_\"%   )*N0  9D!G
M2G "(\   &S*(&[_\$(0</].7DYU("X # *    %  R    % &8D(&[_\"\H
M  ).N0  ,V!8CW 1(\   &S*(&[_\$(0</].7DYU("[__$Y>3G5.5@  ("X 
M# *   "   "    # 2(N  P"@?__?_\O 2\ +RX "&$ _7I/[P ,3EY.=4Y6
M_]Y*K@ 0:@YP%B/   !LRG#_3EY.=2\N  AA /S\6(\M0/_B2H!F!G#_3EY.
M=2!N_^(0*  !2(!(P R     !60  .3E@$[[" )@   28   #F    I@  #.
M8    B\N ! O+@ ,(&[_XB\H  ).N0  -#1/[P ,+4#_^DJY  !F0&<*2H!F
M!G#_3EY.=2!N_^(0$ @   1G"" N__I.7DYU<  M0/_V+4#_\B N__:PKO_Z
M;%H@;@ ,T<!2KO_V$! =0/__2(!(P R     #6?:#(     :9B0@+O_VD*[_
M^E. <@$O 2\ +RX "&$  @!/[P ,("[_\DY>3G4@;@ ,T>[_\E*N__(0KO__
M8)Q*KO_R9@A*KO_Z9@#_0B N__).7DYU</].7DYU3E;_XDJN !!J#G 6(\  
M &S*</].7DYU+RX "&$ ^\Y8CRU _^9*@&8&</].7DYU(&[_YA H  %(@$C 
M#(     %9  !<N6 3OL( F   !)@   .8   "F    9@  %0(&[_YA 0"   
M V<2< (O $*G+RX "&$  4Q/[P ,(&[_YA 0"   !&<P+RX $"\N  PO*  "
M3KD  #1V3^\ #"U __9*N0  9D!G!G#_3EY.=2 N__9.7DYU0B[__G  +4#_
M]BU __(M0/_N("[_]K"N !!L  "0(&X #-' 4J[_]A 0'4#__PP   IF$@PN
M  W__F<*'7P #?__4Z[_]B!N__+1_   =)(@+O_R4H 2+O__$($M0/_R'4'_
M_@R     @&VF+P!(>0  =)(@;O_F+R@  DZY   T=D_O  PM0/_JL*[_\F<&
M< !.7DYU2KD  &9 9P9P_TY>3G5"KO_R8 #_:$JN__)G.B\N__)(>0  =)(@
M;O_F+R@  DZY   T=D_O  PM0/_JL*[_\F<&< !.7DYU2KD  &9 9P9P_TY>
M3G4@+O_V3EY.=2 N !!.7DYU<!,CP   ;,IP_TY>3G5.5O_N+RX "&$ ^AY8
MCRU __)*@&8&</].7DYU(&[_\A H  %* &<&< !.7DYU+RX $"\N  P@;O_R
M+R@  DZY   TO$_O  PM0/_Z2KD  &9 9PYP%B/   !LRG#_3EY.=0RN    
M @ 09F!*KO_Z9UH@;O_R$! (   $9DX@+O_Z4X M0/_V2J[_]FLT0J<O+O_V
M+RX "&$ _V9/[P ,2H!G'G !+P!(;O__+RX "&$ _%Q/[P ,2H!F!E.N__9@
MQB N__92@$Y>3G4@+O_Z3EY.=4Y6__0O+@ (80#Y2EB/+4#_^$J 9@9P_TY>
M3G5"KO_\(&[_^"\H  ).N0  ,V!8CTJY  !F0&<&</\M0/_\(&[_^$(0("[_
M_$Y>3G5.5O_<+RX "$ZY   S]EB/2KD  &9 9P9P_TY>3G5P $Y>3G5.5@  
M+RX "&'26(].7DYU3E8  "\N  PO+@ (3KD   '$4(].7DYU3E;_]" N  BP
MN0  9CAO!G  3EY.=2!Y  !F-" N  C1N0  9C21N0  9C@@"$Y>3G5.5O_\
M+RX "&'$6(\M0/_\2H!G!$Y>3G4@?/____\@"$Y>3G5.5O_X(#D  &8TD+D 
M &8PT;D  &8X(_D  &8P  !F-)'((\@  &S:(\@  &S2(\@  &S>(\@  &S6
M( A.7DYU  !.5O_T80 &3 *N     P ,+RX ""\Y  !KEBU __AA  ;\4(\@
M;@ ($A M0/_\2@%F!G $+4#__" N__P,@     5D  "<XX!.^P@"8 A@'F X
M8%)@8$JN  QF  %@0?H$!B)N__@C2  $8  !- RN     0 ,9@ !1$'Z! @B
M;O_X(T@ !&   1@,K@    $ #&8  2A!^@0L(F[_^"-(  1@  #\0?H%E")N
M__@C2  $8   [ RN     0 ,9A!!^@40(F[_^"-(  1@  #20?H$,B)N__@C
M2  $8   P@RN     0 ,9BX@+@ (<A O0   XJ!"IR\O  0O '(#+P%R/"\!
M3KD  $QH3^\ %"/   !F0&!H("X "'(0+T   .*@<@(O 2\O  0O '(#+P%R
M/2\!3KD  $QH3^\ %"/   !F0$J :C8,K@    ( #&8L("X "'(0+T   .*@
M0J<O+P $+P!R R\!<CPO 4ZY  !,:$_O !0CP   9D!*N0  9D!K-"!N__@A
M>0  9D  "$'Z F@B;O_X(T@ !"!N__@@N0  =@8CR   =@9"N0  9D @"$Y>
M3G4O+O_X80 $U%B/< !.7DYU3E;_^&$ !( B+@ (=! O00  Y*%"IR\O  0O
M 70#+P)T/"\"+4#__$ZY  !,:$_O !0CP   9D!*@&H0+R[__&$ !(A8CW  
M3EY.=2!N__PA>0  9D  "$/Z =@A20 $(+D  '8&(\@  '8&3EY.=4Y6__Q(
MYP @+7D  '8&__Q*K@ (9@IP $S?! !.7DYU(&[__+'N  AF#"!N  @CT   
M=@9@'B!N__P@$")N  BSP&<&+4#__&#L(&X "")N__PBD$'Z 6PD;@ ((FH 
M!+/(9APO*@ (< $O ' ^+P!.N0  3&A/[P ,(\   &9 2KD  &9 5\!$ $B 
M2,!,WP0 3EY.=4Y6__P@+@ (<A O0   XJ O+P  +P!R B\!<D$O 4ZY  !,
M:$_O ! CP   9D!*@%?!1 %(@4C!( %.7DYU3E8  $JN  AF&D*G+RX $"\N
M  PO+@ (80 !VD_O !!.7DYU(FX ""!I  1"IR\N ! O+@ ,+PE.D$_O !!.
M7DYU3E8  $JN  AF'' !+P O+@ 0+RX #"\N  AA  )D3^\ $$Y>3G4B;@ (
M(&D !' !+P O+@ 0+RX #"\)3I!/[P 03EY.=4Y6  !(YP @2JX "&8*< !,
MWP0 3EY.=4'Z $PD;@ ((FH !+/(9PIP $S?! !.7DYU<! B+@ ,X*$O+@ 0
M(&X ""\H  @O+@ ,+P%P!"\ <$(O $ZY  !,:$_O !A,WP0 3EY.=4Y6__!*
MK@ 49P1P0& "<#]R$"0N !#BHB(N  QV$"]!  3FH2\O  0O 2\N ! O B!N
M  @O*  (=@4O R\ +4#__$ZY  !,:$_O !PM0/_X2H!J#"/   !F0'  3EY.
M=2 N__A.7DYU3E;__D*G< ,O $ZY  !,:%"/(&X #!" < %.7DYU3E;__$*N
M__P@+O_\L*X $&PF(&X #-' $!!(@$C +P!R 2\!<@0O 4ZY  !,:$_O  Q2
MKO_\8- @+@ 03EY.=4Y6__Q"KO_\("[__+"N !!L)B!N  S1P! 02(!(P"\ 
M<@$O 7(%+P%.N0  3&A/[P ,4J[__&#0("X $$Y>3G5.5O]V("X $ R     
M?VP$4X!@ G!]'4#_@$'N_X @"'(0XJ O""\ <@(O 7(*+P%.N0  3&A/[P 0
M< HO ' !+P!P B\ 3KD  $QH3^\ #! N_X%(@$C <@(M0?]X+4#_?" N_WQ4
M@"(N_WBR@&P^$#88@!U _W<,   -9@8=?  *_W<,+@ :_W=F#" N_WA5@$2 
M3EY.=2 N_WA5@"!N  S1P!"N_W=2KO]X8+0@+O]\#(    !]; H@;@ ,T< 0
MO  *("[_?%* 3EY.=4Y6__I"KO_\("[__+"N !!L4"!N  S1P! 0'4#_^TB 
M2, ,@     IF%G -+P!P 2\ < (O $ZY  !,:$_O  P0+O_[2(!(P"\ <@$O
M 7("+P%.N0  3&A/[P ,4J[__&"F("X $$Y>3G5.5@  2JX %&<&("X $& "
M< !.7DYU3E;__$*N__P@+O_\#(     3;BIR#$ZY  !.3"! T?P  '462J@ 
M!&8.($#1_   =18@"$Y>3G52KO_\8,IP $Y>3G5.5@  (&X "$*H  1.7DYU
M2KD  '8&9PXO.0  =@9A /N&6(]@ZDYU3E8  ! N  L,  !A;1(,  !Z;@P$
M  !A!@  04Y>3G40+@ +3EY.=4Y6__X0+@ +2(!(P"\ 8<A8CQ(N  ](@4C!
M+P$?0  $8;98CQ(O  "R &8$< %@ G  3EY.=4Y6_^IP 2U __QP_RU __AP
M "U __ M0/_T(&X #-'N__!*$&<&4J[_\&#N0J[_[" N_^P@;@ (T<!*$&< 
M )8@;@ (T< 0$!U _^M*KO_\9U(,   ]9P8,   L9A8@+O_P4X B+O_XLH!F
M"" N__1.7DYU("[_^%* $B[_ZTB!2,$@;@ ,T< 4$$B"2,(O B\!+4#_^&$ 
M_S)0CTJ 9@1"KO_\$"[_ZPP  "QG!@P  #UF#' !+4#__'#_+4#_^ PN "S_
MZV8$4J[_]%*N_^Q@ /]>2J[__&<6("[_\%. (B[_^+* 9@@@+O_T3EY.=7#_
M3EY.=0  3E;^Z$'N ! M2/_H+6X "/_L(&X #! 02@!G  ",2(!(P%*(+4#_
M^"U(  P,@    "5F8A 0#   )680(FX "!* 4JX #%*N  A@QDAN__1(;O_H
M2&[^Z"\N  Q.N0  .?1/[P 0+4#_\$J 9Z1"KO_\+4  #" N__RPKO_T;))!
M[O[HT< B;@ ($I!2K@ (4J[__&#@("[_^"!N  @0@%*N  A@ /]L(&X "$(0
M( B0KO_L+4#_]$Y>3G5.5O^T2.< ('  +4#_Z'+_+4'_Y'(@+4'_X"!N  @2
M$"U __ M0/_<+4#_[ P! "UF"G !4JX ""U __ @;@ ($!!(@$C +T  !%* 
M($#1_   ;.80$ @   )G: RO    ,  $9@9P,"U _^ @;@ ($!!(@$C 4JX 
M" *     #RU _]P@;@ ($!!(@$C 4H B0-/\  !LYA 1"    F<D("[_W'(*
M3KD  $Y,$A!(@4C!4JX " *!    #]"!+4#_W&# (&X "! 0#   +F9(4JX 
M"$*N_^0@;@ ($!!(@$C 4H B0-/\  !LYA 1"    F<D("[_Y'(*3KD  $Y,
M$A!(@4C!4JX " *!    #]"!+4#_Y&# (&X "! 0#   ;&8*< %2K@ (+4#_
M[$*N_] @;@ ($!!(@$C <D@$@0    AK  *(L+L8"&;P3OL8!@   &9@  )N
M    96   F    !G8  "4    &-@  (J    <V   =(   !O8  !6    'A@
M  #<    =6   #@   !D8    DJN_^QG#B)N ! @45B1+5#_S& ,(FX $"!1
M6)$M4/_,2J[_S&HH< $M0/_H8"!*KO_L9PXB;@ 0(%%8D2U0_\Q@#")N ! @
M45B1+5#_S' ++4#__" N_\QR"DZY  !-Q"U!__A*@6H$1*[_^%.N__P@+O_X
M!H     P(B[__!V &+@@+O_,<@I.N0  3<0M0/_,2J[_S&:\#*X    !_^AF
M#E.N__P@+O_\';P +0BX0>[_N" N__S1P'(+DH M0?_T+4C_T&   79*KO_L
M9PXB;@ 0(%%8D2U0_\Q@#")N ! @45B1+5#_S' (+4#__%.N__P@+O_, H  
M   /($#1_   :YH@+O_\'9 (N" N_\SH@ * #____RU _\Q*KO_,9LQ![O^X
M("[__-' <@B2@"U!__0M2/_08  ! DJN_^QG#B)N ! @45B1+5#_S& ,(FX 
M$"!16)$M4/_,< LM0/_\4Z[__" N_\P"@     <&@    # B+O_\'8 8N" N
M_\SF@ * '____RU _\Q*KO_,9LY![O^X("[__-' <@N2@"U!__0M2/_08   
MD RN_______D9@@M?    ,C_Y")N ! @45B1(E M2?_0L_P     9@@M?   
M:ZK_T$*N__0@+O_TL*[_Y&Q0(&[_T-' $!!* &=$4J[_]&#D0>[_N' !+4#_
M]"1N ! B4EB2(!$=0/^X+4C_T& @< (M0/_48!A"KO_48!)P 2U _]1@"G  
M3-\$ $Y>3G5*KO_09P  TDJN_]QG"B N_]RPKO_T; 8M;O_T_]P@+O_TD:[_
MW$*N__Q*KO_P9T@@+O_T4X M0/_T2H!K&"!N  S1[O_\4J[__")N_] 0D5*N
M_]!@VB N_]Q3@"U _]Q*@&M<(&X #-'N__Q2KO_\("[_X!" 8-X@+O_<4X M
M0/_<2H!K%"!N  S1[O_\4J[__" N_^ 0@&#>("[_]%. +4#_]$J :Q@@;@ ,
MT>[__%*N__PB;O_0$)%2KO_08-H@;@ 4(*[__"!N  A2B" (3-\$ $Y>3G4,
MKO______Y&8&< 8M0/_D#*X    4_^1M!' 38 0@+O_D+4#_]%* #*X    !
M_]17P40!2(%(P4AN_[A(;O_H2&[_V"\!+P @;@ 0+Q!.N0  0U!/[P 8(&X 
M$%"00>[_N"(N_]@M0/_T+4'__"U(_]!*@6H$1*[__ RN     O_49AI*KO_T
M9PX,K@    ;__&T$< !@ G !+4#_U$JN__1G!%.N_]AP "U __Q*KO_H9P12
MKO_\2J[_U&<J("[_Y%* (B[__-"!+4#__$JN_]AK"" N_]C1KO_\2J[_Y&= 
M4J[__& Z("[_Y%R T:[__$JN_]AJ"" N_]A$@& $("[_V"U __@,@    &-O
M!%*N__P,K@   ^?_^&\$4J[__$JN__!F-" N_]RPKO_\;RH@+O_\D:[_W" N
M_]Q3@"U _]Q*@&L4("[_X"!N  P0@%*N  Q2KO_\8-Y*KO_H9PP@;@ ,$+P 
M+5*N  Q*KO_49P !!DJN_]AJ<"!N  P0O  P4H@0O  N4H@M2  ,("[_Y%. 
M+4#_Y$J :P !Y" N_]A2@"U _]A*@&H.(&X #!"\ #!2K@ ,8-0@+O_T4X M
M0/_T2H!K%"!N_] B;@ ,$I!2KO_04JX #&"R(&X #!"\ #!2K@ ,8*0@+O_8
M4Z[_V$J :S @+O_T4X M0/_T2H!K%"!N_] B;@ ,$I!2KO_04JX #&#2(&X 
M#!"\ #!2K@ ,8,1*KO_D9PP@;@ ,$+P +E*N  P@+O_D4X M0/_D2H!K  $Z
M("[_]%. +4#_]$J :Q0@;O_0(FX #!*04J[_T%*N  Q@SB!N  P0O  P4JX 
M#&# ("[_]%. +4#_]$J :Q0@;O_0(FX #!*04J[_T%*N  Q@#"!N  P0O  P
M4JX #"!N  P0O  N4JX #" N_^13@"U _^1*@&LP("[_]%. +4#_]$J :Q0@
M;O_0(FX #!*04J[_T%*N  Q@T"!N  P0O  P4JX #&#"(&X #!"\ $52B"U(
M  Q*KO_8:@X0O  M4JX #$2N_]A@#"!N  P0O  K4JX #' ++4#_]%.N__0@
M+O_8<@I.N0  3<0&@0   # @+O_T'8$(N" N_]AR"DZY  !-Q"U _]@,K@  
M  G_]&[(2J[_V&;"("[_] R     "VP24J[_]"!N  P0M@BX4JX #&#B#*X 
M   !__!F-" N_]RPKO_\;RH@+O_\D:[_W" N_]Q3@"U _]Q*@&L4("[_X"!N
M  P0@%*N  Q2KO_\8-X@;@ 4(*[__"!N  A2B" (3-\$ $Y>3G4    '+P)"
M@70?3KD  $G>)!].=0              "B\"0H%T'TJ :@9$@ C" !].N0  
M2=XD'TYU                  DO DZY  !(]"0!<@!.N0  2=XD'TYU    
M             !$O B0 "(( 'TJ"9@1P & B3KD  $FH4D)O\@1" "!K"'#_
M"(  'V $1$+DJ$J":@)$@"0?3G4                 ""\"3KD  $FH(@).
MN0  218D'TYU              #H     $Y0_^).40  2.=_,"1H  @@&B(2
M3KD  $FH0FD "$)I  8O (.?9@XD:  <)B@ #%.#8   ^%)",T( !$A",T( 
M"$)&-"D !&=<:A)60FL8"D(  ]5I  1A  $ 8$AA  $R4FD !F 2= 35:0 $
M80  ZF$  /)3:0 &2H!KQ%-I  3CB>.08/)"0D)&+P"#GV<480  TDI&9@P,
M0@ !9@93:0 &8.P&!@ P$X8@"E)"#$( %&O4=@$D*  ,2J@ $&<.*#P    !
MU&D !E-":SIX% Q" !)L,C@"&C$@"P8%  4,!0 Y;R(3O  P( M2,2 *&C$@
M"E-":NA2:0 &4T-Z +JH !!G E*$)&@ '$?Q, H@!&<>4T0V! 1# !1K G@3
M%-M1S/_\2D-K"!3\ #!1R__Z)&@ &$*22FD "&<"4Y(D:  40H$R*0 &2,$D
M@4S?#/Y.64Y83G7BB.*1!$(  6;V3G5\ $CG,  D "8!XXGCD..6XXGCD..6
MTH/1@F0   12AN.)XY#CEDS?  Q.=2\"=  _/ ! XXGCD..2#$( "FT(!(( 
M   *4H%35V;H3^\  B0?3G5.4/_T3E$  $CG?C!P '( ,T   #-   (S0  $
M,T  !F$  70,!@ P9@@ :2    1@[@P& "UF"@!I@   !&$  58,!@ P;3X,
M!@ Y;C@ :2    0S1@ */"D !IUI  (O  *?\    &<&4FD  F#.80#_.CPI
M  H"A@    _2AD*&T89@N P& "YF#$II  9F8%)I  9@I@P& &5G!@P& &5F
M3F$  / ,!@ K9PP,!@ M9@H :1    1A  #:# 8 ,&TN# 8 .6XH.BD  ./I
M  #CZ0  VVD  ./I   "1@ /W6D   QI#_\  &W,XND  #\I  0"7R  9@HD
M:  40I)@  ""-"D  #\I  0"7Q  9P)$0M5I  (O (.?9U0S?  _  !*@&L*
MXXGCD%-I  !@\DII  )G(&L4= 35:0  80#^7&$ _F13:0 "8-9A /Z&4FD 
M F#,=  T*0  /RD ! )?@ !G! C" !].N0  2=XD:  8), D@21H !0DO   
M  %P # I  A,WP1^3EE.6$YU+"@ "&<*(7P       A.=4CG_. D:  03I(\
M $S?!S\S1@ (4Z@ #&8( &D(   $3G4_*0 $ E\( &<"?/].=0          
M    *TCG/P O @)7?_^'GV86+SP    #3KD  $K@3^\ !$* 0H%@1"\  E=_
M_X.?9SHO DZY  !)J"@ *@$L B ?(@-.N0  2:C-0I1&2$9(0KU"2$(L "X!
M0H!"@4*#81 @ 6$,3KD  $G>3-\ _$YU/SP ('( XXE*@V8*N(9E$&8$NH=E
M"IJ'F89D E.#4H'CC>.4XY-35V;<3^\  DYU                 "1(YS\ 
M+P "5W__LY]G5"\" E=__[>?9@9"@$*!8$0O DZY  !)J"@ *@$L B ?(@-.
MN0  2:C41DA&2$*]0DA"+  N 4* 0H%"@V$<+@9A&$J#9PCBD^*0XI%20DZY
M  !)WDS? /Q.=3\\ "#BD^*0XI'BGV0$TH71A$##4U=F[%2/3G4         
M     #-(YS\ 0H=@"DCG/P N/(     H @B$ !\O!(>?9P  G"@ "(0 'R\$
M@Y]F"B "(@._@&   (8O DZY  !)J"@ *@$L B ?(@-.N0  2:@F!C8"ED9L
M'D1##$, 0&T(( 0B!20&8$Y30^*(XI%1R__Z-@9@&&<4#$, 0&T$OX)@-%-#
MXHSBE5'+__HV K6&OX9K#M*%T81D&N*0XI%20V 2FH&9@&0("$, 'T2%0(0@
M!"(%) -.N0  2=Y,WP#\3G4              "TB  * ?____V<62$%(P0*!
M@ !__^Y)!$$ ?^&(",  'TYU+P)*@&=,44$O  *?_P   &<<4D'BB.*2+P "
MG_\   !F\$J":@A2@&#>4T'CB @  !=G]@9! ']O' Q! /]L)@B  !?O23\!
M2$&"7TA!0D& @20?3G4O/     %.N0  2N!"@& :+SP    "3KD  $K@(#Q_
M@   2H%J! C  !]/[P $8,P              #DD  * ?____V8(< !R '0 
M8")(0DC"Z$("@H  !_\$0@/_+P)T"N.)XY!1RO_Z",  'R0?3G4O R\ @Y]G
M9 1"  M*@&8(( %"@01" " O  *?_^   &<D4D+BB.*1XI,O  *?_^   &;N
M2H-J#E*!9 I2@&#84T+CB>.0"   %&?T!D(#_V\>#$('_VPH H  #___Z4H_
M D)"2$*$7TA"@((F'TYU+SP    !3KD  $K@< !@&"\\     DZY  !*X# \
M?_!(0H!"2$!"0$_O  1R &#,             $Y6__PO+@ (3KD  $PX6(](
M;O_\+P M0  (3KD  $KP4(\@+O_\3EY.=0  3E;__"\N  A.N0  3#A8CTAN
M__PO "U   A.N0  2Y10CR N__Q.7DYU  !.5@  (^X "   =@Y.7DYU3E;_
M\'  (&X "!(0+4#__"U __@M0/_P# $ +68,<@$M0?_X+4'_\& 2(&X "! 0
M#   *V8&< $M0/_X("[_^"!N  C1P!(02(%(P5*!($'1_   ;.82$ @!  )G
M+" N__QR"DZY  !.3"!N  C1[O_X4J[_^!(02(%(P02!    ,-"!+4#__&"R
M2J[_\&<$1*[__"!N  P@KO_\("[_^$Y>3G5.5O_P<  @;@ ($A M0/_X+4#_
M\"U __P, 0 M9@QP 2U __@M0/_P8!(@;@ ($! ,   K9@9P 2U __@@+O_X
M(&X "-' $A!(@4C!4H$@0='\  !LYA(0" $  F<L("[__'(*3KD  $Y,(&X 
M"-'N__A2KO_X$A!(@4C!!($    PT($M0/_\8+)*KO_P9P1$KO_\(&X #""N
M__P@+O_X3EY.=4Y6   @;@ ($!!(@$C 4H B0-/\  !LYA 1"    V<&4JX 
M"&#>("X "$Y>3G4  $Y6  !(YW_\*D]"N0  9D!P!Y!N  [E0$[[  (_+@ J
M/RX )C\N "(_+@ >/RX &C\N !8_+@ 2/RX "DY!+DU,WS_^3EY.=4/Y  !K
MKB//  !V"B!/,"\ !N- $C$  ! Q  %G   B2(!30#0 5$+E0B0P(  ! 6< 
M  @O F    0_ E- :N0_*  &3D$N>0  =@I.=4/Y  !L7B//  !V"B!/,"\ 
M!N- $C$  ! Q  %G   B2(!30#0 5$+E0B0P(  ! 6<   @O F    0_ E- 
M:N0_*  &3DTN>0  =@I.=4/Y  !L=B//  !V"B!/,"\ !N- $C$  ! Q  %G
M   B2(!30#0 5$+E0B0P(  ! 6<   @O F    0_ E- :N0_*  &3DXN>0  
M=@I.=0      "2!O  0@+P (;PHB+P ,$,%3@&;Z3G4                 
M%$CG/  J 6<R:@)$@2@ 9RAJ D2 0H)V'^. XY*T@64$E(%2@%'+__(B KF%
M:@)$@+.$:@A$@6 $0H%"@$S? #Q.=0                 .2.?P "\ "(  
M'TJ?:@1$@4" +P((@@ ?2I]J!$2#0(*P@F8"LH-,WP /3G4             
M !1(YW@ * "SA$J 9S!J D2 ) !*@68$0H!@(FH"1($F ,;!2$+$P4A"0D+6
M@DA!P,%(0$) T(-*A&H"1(!,WP >3G4                 #TCG<  D &<@
M2H%F!$* 8!@F ,;!2$+$P4A"0D+6@DA!P,%(0$) T(-,WP .3G4         
M    3E8  "!N  @0$"!N  P2$+ !9A1* &8&< !.7DYU4JX "%*N  Q@W"!N
M  @0$$B 2, @;@ ,$A!(@4C!D(%.7DYU  !!^0  780A;P ,  PB;P (,5$ 
M."%O  0 !$)H "XQ?  + #(Q? !D "Q.N0  77!!^0  781#Z !$(4D !$/H
M!$0A20 ,(F\ "#*H #@R/  +(F\ #$/I %@O"D7H!D0RVE')__PD7TC 3G5!
M^0  780Q;P & #A":  N0F@ ,C%\ &4 +$ZY  !=<$C 3G5!^0  780Q;P &
M #A":  N0F@ ,C%\  , +$ZY  !=<$C 3G5!^0  780Q;P * $0Q;P & #A"
M:  N,7P  0 R,7P =P L3KD  %UP,"@$1$C 3G5!^0  780Q;P * $0Q;P &
M #A":  N,7P  0 R,7P >  L3KD  %UP2,!.=4'Y  !=A"%O  P "#%O  H 
M1#%O  8 .#%\  ( +C%\  $ ,C%\ ($ +$ZY  !=<$'Y  !=A$/H D0A20 (
M2,!.=0  0?D  %V$(6\ #  (,6\ "@ N,6\ !@ X0F@ ,C%\  8 +$ZY  !=
M<$'Y  !=A$/H D0A20 (2,!.=4'Y  !=A"%O  P "#%O  H +C%O  8 .$)H
M #(Q?  ' "Q.N0  77!!^0  781#Z )$(4D "$C 3G5!^0  780Q;P . D8Q
M;P * D0Q;P & #AR_R)O !!2@4H99OHQ00 R<  B;P 0+PI%Z !$$!DTP%')
M__HD7S%\  $ +C%\  @ +$ZY  !=<$C 3G5!^0  780A;P ,  @Q;P * "XQ
M;P & #A":  R,7P "0 L3KD  %UP0?D  %V$0^@"1"%)  A(P$YU0?D  %V$
M(6\ '  $,6\ &@! ("\ %"%  #XQ;P 2 #PB+P ,(4$ .B%O  @ "#%O  8 
M.#%\  ( +L'!(4  ,C%\  H +$ZY  !=<$'Y  !=A$/H $0A20 $0^@"1"%)
M  A(P$YU0?D  %V$,6\ #@!$,6\ "@)&,6\ !@)$,6\  @ X,7P  0 N,7P 
M 0 R,7P 9P L3KD  %UP2,!.=4'Y  !=A"%O  @ "#%O  8 .#%\  ( +D)H
M #(Q? !R "Q.N0  77!!^0  781#Z )$(4D "$C 3G5!^0  780A;P (  @Q
M;P & #@Q?  " "Y":  R,7P  0 V,7P "P L3KD  %UP0?D  %V$0^@"1"%)
M  A(P$YU0?D  %V$,6\ &@!&,6\ %@!$,6\ $@)0,6\ #@)&,6\ "@)$,6\ 
M!@ X,7P !  N,7P  @ R,7P  @ V0F@"2$)H DI": ),0F@"3D)H E(Q?  +
M "Q.N0  77!(P$YU0?D  %V$,6\ &@!&,6\ %@!$,6\ $@)0,6\ #@)&,6\ 
M"@)$,6\ !@ X,7P !  N,7P  @ R,7P  P V0F@"2$)H DI": ),0F@"3D)H
M E(Q?  + "Q.N0  77!(P$YU0?D  %V$,6\ $@),,6\ #@)&,6\ "@)$,6\ 
M!@ X,7P  P N0F@ ,C%\  0 -D)H DA": )*0F@"3C%\  L +$ZY  !=<$C 
M3G5!^0  780Q;P > $8Q;P : $0Q;P 6 DHQ;P 2 D@Q;P . D8Q;P * D0Q
M;P & #@Q?  " "XQ?  " #(Q?  & #8Q?  + "Q.N0  77!(P$YU0?D  %V$
M,6\ '@!&,6\ &@!$,6\ %@)*,6\ $@)(,6\ #@)&,6\ "@)$,6\ !@ X,7P 
M @ N,7P  @ R,7P !P V,7P "P L3KD  %UP2,!.=4'Y  !=A#%O !8"2C%O
M !("2#%O  X"1C%O  H"1#%O  8 .#%\  ( +D)H #(Q?  % #8Q?  + "Q.
MN0  77!(P$YU0?D  %V$(6\ "  (,6\ !@ X,7P  @ N0F@ ,C%\  @ -C%\
M  L +$ZY  !=<$'Y  !=A$/H D0A20 (2,!.=4'Y  !=A"%O  @ "#%O  8 
M.#%\  ( +D)H #(Q?  ) #8Q?  + "Q.N0  77!!^0  781#Z )$(4D "$C 
M3G5!^0  780Q;P > $8Q;P : $0Q;P 6 D@Q;P . D8Q;P * D0Q;P & #@Q
M?  " "YR_R)O !!2@4H99OHQ00 R<  B;P 0+PI%Z !($!DTP%')__HD7P9H
M  ( ,C%\  H -C%\  L +$ZY  !=<$C 3G5!^0  780Q;P * $0Q;P & #A"
M:  N,7P  0 R,7P (  L3KD  %UP,"@$1$C 3G5!^0  780Q;P * $0Q;P &
M #@R/  "(F\ #$/I   O"D7H $8TV5')__PD7T)H "XQ?  $ #(Q?  . "Q.
MN0  77!(P$YU0?D  %V$,6\ "@!$,6\ !@ X0F@ +C%\  $ ,C%\  \ +$ZY
M  !=<# H!$1(P$YU0?D  %V$,6\ "@!$,6\ !@ X0F@ +C%\  $ ,C%\ '$ 
M+$ZY  !=<$C 3G5!^0  780Q;P * D0Q;P & #A": )&,7P  0 N0F@ ,C%\
M !  +$ZY  !=<# H!D1(P$YU0?D  %V$,6\ "@!$,6\ !@ X0F@ +C%\  $ 
M,C%\ !$ +$ZY  !=<# H!$1(P$YU0?D  %V$,6\ #@!&,6\ "@!$,6\ !@ X
M0F@ +C%\  ( ,C%\ &P +$ZY  !=<$C 3G5!^0  780Q;P * $0Q;P & #A"
M:  N,7P  0 R,7P $@ L3KD  %UP,"@$1$C 3G5!^0  780Q;P * D8Q;P &
M #@Q?  ! "Y":  R,7P $P L3KD  %UP,"@&1DC 3G5!^0  780Q;P * $0Q
M;P & #A":  N,7P  0 R,7P %  L3KD  %UP,"@$1$C 3G5!^0  780Q;P *
M D8Q;P & #A": )$,7P  0 N0F@ ,C%\  P +$ZY  !=<$'Y  !=A")O  PR
MJ 9$(F\ $#*H!D8B;P 4,J@&2")O !@RJ 9*2,!.=4'Y  !=A#%O  H 1#%O
M  8 .$)H "XQ?  ! #(Q? !K "Q.N0  77!!^0  780B;P ,,J@&1")O ! R
MJ 9&(F\ %#*H!D@B;P 8,J@&2C H!$1(P$YU0?D  %V$,6\ "@!$,6\ !@ X
M0F@ +C%\  $ ,C%\  T +$ZY  !=<# H!$1(P$YU0?D  %V$,6\ "@!$,6\ 
M!@ X0F@ +C%\  $ ,C%\ !4 +$ZY  !=<# H!$1(P$YU0?D  %V$,6\ "@!$
M,6\ !@ X0F@ +C%\  $ ,C%\ !8 +$ZY  !=<# H!$1(P$YU0?D  %V$,6\ 
M"@!$,6\ !@ X0F@ +C%\  $ ,C%\ &H +$ZY  !=<# H!$1(P$YU0?D  %V$
M,6\ #@!&,6\ "@!$,6\ !@ X0F@ +C%\  ( ,C%\ "< +$ZY  !=<$'Y  !=
MA")O ! RJ 1$(F\ %#*H!$9(P$YU0?D  %V$,6\ "@!$,6\ !@ X0F@ +C%\
M  $ ,C%\ !< +$ZY  !=<# H!$1(P$YU0?D  %V$,6\ "@!$,6\ !@ X0F@ 
M+C%\  $ ,C%\ !@ +$ZY  !=<# H!$1(P$YU0?D  %V$,6\ "@!$,6\ !@ X
M0F@ +C%\  $ ,C%\ !D +$ZY  !=<# H!$1(P$YU0?D  %V$,6\ "@!$,6\ 
M!@ X0F@ +C%\  $ ,C%\ &@ +$ZY  !=<# H!$1(P$YU0?D  %V$("\ ".F 
M(4  ,B%O  0 !#%O  ( .$)H "XQ? !P "Q.N0  77!!^0  781#Z !$(4D 
M!$C 3G4  $'Y  !=A"%O  @ !#%O  8 .$)H "XQ?  E #(Q? !O "Q.N0  
M77!!^0  781#Z !$(4D !$C 3G5!^0  780A;P ( #HQ;P & #A":  N0F@ 
M,C%\ '8 +$ZY  !=<$'Y  !=A")O ! RJ !$(F\ #"*H #Y(P$YU0?D  %V$
M,6\ "@!$,6\ !@ X0F@ +C%\  $ ,C%\ 'H +$ZY  !=<$C 3G5!^0  780Q
M;P & #A":  N0F@ ,C%\ 'L +$ZY  !=<$C 3G5!^0  780Q;P & #A":  N
M0F@ ,C%\ 'P +$ZY  !=<$'Y  !=A")O  @RJ 1$(F\ ##*H!D0B;P 0,J@&
M1DC 3G5!^0  780A;P ( #HQ;P & #A":  N0F@ ,C%\ 'T +$ZY  !=<$'Y
M  !=A")O  PBJ  ^2,!.=4'Y  !=A"%O  @ .C%O  8 .$)H "Y":  R,7P 
M?@ L3KD  %UP0?D  %V$(F\ #"*H #Y(P$YU0?D  %V$(6\ "  Z,6\ !@ X
M0F@ +D)H #(Q? !_ "Q.N0  77!!^0  780B;P ,(J@ /DC 3G5!^0  780Q
M;P & #A":  N0F@ ,C%\ (  +$ZY  !=<$'Y  !=A")O  @RJ 1$2,!.=0  
M0?D  %V80F@ &C%\  $ '$)H !XQ?  * !A.N0  77HP* 0P2,!.=4'Y  !=
MF"%O  P",#%O  H ,C%O  8 ,#%\  ( &C%\  $ '#%\  $ 'C%\  L &$ZY
M  !=>C H!#!(P$YU0?D  %V8(6\ # (P,6\ "@ R,6\ !@ P,7P  @ :,7P 
M 0 <,7P  0 >,7P #  83KD  %UZ,"@$,$C 3G5!^0  79@Q;P & #!":  :
M,7P  0 <0F@ 'C%\  T &$ZY  !=>C H!#!(P$YU0?D  %V8,6\ #@ R,6\ 
M"@ P(6\ ! (P,7P  @ :,7P  0 <,7P  0 >,7P #@ 83KD  %UZ,"@$,$C 
M3G5!^0  79@Q;P * # A;P $ C Q?  ! !HQ?  ! !PQ?  ! !XQ?  / !A.
MN0  77HP* 0P2,!.=4'Y  !=F$)H !HQ?  ! !Q":  >,7P $P 83KD  %UZ
M,"@$,$C 3G4B"# \ '-.0DYU(@@P/ #(3D).=0  7;   %W(  !?R   8<@ 
M &/(  !=L   9<@  %W(  !AR   7\@  &/(                        
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                  , !  %!F %4 1  T  0 !0!#(%
M0P93!$0%50=W3F]T(&5N;W5G:"!M96UO<GD* '=O<FMI;F<N+BX*       "
M  , !@ $  < !0 (  D "@ +  X #  /  T  0     ^&9F:/H   #ZS,S,^
MS,S-/N9F9C\    _#,S-/R9F9C\S,S,_0   /TS,S3]9F9H_9F9F/W,S,S^ 
M        /IF9FC\,S,T_)F9F/RX4>S\UPH\_/7"D/T4>N#]9F9H_84>N/VCU
MPS]N%'L_<S,S/WA1[#]]<*0_@   )7, ;&5V>2YP:3$ )7, )7, )7, 5%10
M('!A<F%M971E<B!U<V%G93H*"@ E<P!N=6UB97(@;V8@:71E<F%T:6]N<SH*
M "5S " @("UN/$X^(&UU<W0@86QW87ES(&)E('-P96-I9FEE9 H* "5S &]P
M=&EO;F%L;'D@6V1E9F%U;'0@=F%L=65S(&EN("@I73H* "5S "US/&EN=#X@
M<V5T<R!R86YD;VT@<V5E9" H,C(Q,3DU-2D* "5S "UX/#$M,S(P/B C(&]F
M(&AO<FEZ;VYT86P@<&EX96QS("@S,C I"@ E<P M>3PQ+3(P,#X@(R!O9B!V
M97)T:6-A;"!P:7AE;',@*#(P,"D* "5S "UU/$X^('5P9&%T92!S8W)E96X@
M979E<GD@3B!I=&5R871I;VYS"@ E<P @(" @(" H9&5F875L=#H@;VYL>2!U
M<&1A=&4@=VAE;B!D;VYE*0H )7, +68\9FEL96YA;64^('-A=F4M9FEL92!N
M86UE("AL979Y+G!I,2D* "5S "UD/&9I;&4^(&1I<W!L87D@<')E=FEO=7-L
M>2US=&]R960@9FEL90H )7, +6D@=&\@9V5N97)A=&4@:7-L86YD+61O;6EN
M871E9"!R96QI968*"@ E<P!E>&%M<&QE<SH* "5S " @("UN,3 P,# @+6D*
M "5S " @("UN,3 P("US.3,T.30Y,#,Y," M9F-O87-T+G!I,0H )7, (" @
M+61C;V%S="YP:3$*"@ E<P!P<F5S<R!A;GD@:V5Y('1O(&%B;W)T(')U;B!I
M;B!P<F]G<F5S<PH* '!R97-S(&%N>2!K97D@=&\@8V]N=&EN=64 ;W!E;B!O
M9B G)7,G(&9A:6QE9 H 9FEL92!W<FET92!E<G)O<CH@;VYL>2 E9"!B>71E
M<R!W<FET=&5N"@!O<&5N(&]F("<E<R<@9F%I;&5D"@!F:6QE('=R:71E(&5R
M<F]R.B!O;FQY("5D(&)Y=&5S(')E860*  !R '< 80  80!#86XG="!O<&5N
M('-T9&EN(&9I;&4* $-A;B=T(&]P96X@<W1D;W5T(&9I;&4*            
M                          4  -[L  #F;0    L*7W9A;&)A;FLZ($EM
M<"X@17)R;W(    !8V]N.@     !0T]..@     "<')N.@     "4%)..@  
M   ";'-T.@     "3%-4.@     ";'!T.@     "3%!4.@     ";'!T,3H 
M   "3%!4,3H    #875X.@     #0558.@     #8V]M.@     #0T]-.@  
M   #8V]M,3H    #0T]-,3H    #<F1R.@     #4D12.@     #<'5N.@  
M   #4%5..@     $;G5L.@     $3E5,.@     $;G5L;#H    $3E5,3#H 
M  !!6$DZ+$%83SHL3%-4.BQ.24PZ+$-/3CH]*@    !K>C Q,C,T-38W.#E!
M0D-$148            !     0 !  $      0$! 0         !        
M                      $!              $!                    
M         0    $        ! @           0(      0$! 0$! 0(! @ !
M!@,& P$! 0,! P    $  @$" 0$! 08##@0! 0   0(                 
M  8# @,! 0 !  $  @(% @(    !  $  0    $& P !         P,! 0 "
M P<#!P     " @("  $ !@<#   #! ,'     @$!      ("  $  0 "  $ 
M 0@$ 0$  0    (      0$                "                    
M         " @(" @(" @("@H*"@H(" @(" @(" @(" @(" @(" @2! 0$! 0
M$! 0$! 0$! 0$(2$A(2$A(2$A(00$! 0$! 0@8&!@8&! 0$! 0$! 0$! 0$!
M 0$! 0$! 0$0$! 0$!""@H*"@H(" @(" @(" @(" @(" @(" @(" A 0$! @
M(" @(" @(" @*"@H*"@@(" @(" @(" @(" @(" @("!($! 0$! 0$! 0$! 0
M$! 0A(2$A(2$A(2$A! 0$! 0$!"!@8&!@8$! 0$! 0$! 0$! 0$! 0$! 0$!
M 1 0$! 0$(*"@H*"@@(" @(" @(" @(" @(" @(" @("$! 0$"         4
M        "                                                   
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M                                                            
M   &DD(*"D@()B(&!@8&" @(7 P<&@@*#!@,$@@0!@8,#"!H'AH8$ 88#E V
M4C".,'0N#@X&"@H&"A(.!@H2#@8.#A(>!A(,.A8P(AX*7!(F$@X&N$820@8.
M 0(D)"0*( HF(D8&!@8*!@8&"@8&!@H&!@8*!@8&"@8&!@H&!@8*!@8&"@8&
M!@H&!@8*!@8&"@8&!@H&!@8*!@8&"@8&!@H&!@8*!@8&"@8&# P8$@H*$ @.
M.!(2$A14&!P:% 8&'!H<'@8&#A(<% 8&%!@:'!X&!@X2$@@*&!X("!PN!@8&
M"A &!@80!@8&#@8&!A82!@P(!@XB!@P(!@8*6A82%@X2%@Y:%A(6#A(6#@$!
M@ @("@@("A8(" H2" @*#@@(# 0&! 8$"@@(!A(*"@@(!B0J*!PH($0("@8.
M"@H("@80"E"$&F(Z5 @.!@X*&B@("@8D" X("@84"AHZ) @(%@H6$ P>.JXB
M.E8Z"&PF)$!4-B@LI %JON(&&! D! 8&!@X()@84& @:$!8Z!E H$ @(" @8
M2A8&A"YZ"@@0$@@8"@@6"A((!JY(" X2"" D$!P0"BP*6&0.O(H.8"0.&B .
M&B!*#@JF""0(,!0."@8T!@8&! @&!@8B\@HF"C *!@P8!@9$"AX0!A(F0@H&
M- KR5!(>/$!(%KX<1 @.* @!Q*Y$%$ 4^BYXV &. 0'F&I@F&@HH-@@N 0$!
M&H@<$")J$"QL$&R6$-(0+!(:$AA:%) 44B@^!D (!D (!D !B"H&/!H*&@HB
M#B(**@84(@82(@822@HB!A)&!AHP"B(&$B@&$E8*5@I "D@*2 HZ"B@&$B@&
M$F@*(@X\"B(.(@HF#B(.* HB#B(.(@XF!BHB!BXB#B(.(@XB#B@&&B(.(@XB
M#B(.)@84(@82( 8:(@H:"AH&(B &$B &$B &$AH&%!H., XP#B ., XJ#AH@
:! 0$! 0$! 0$! $! 0$! 0$! 0$! 0$!!@ &
 
end

rlp@cbosgd.UUCP (J. Knapp) (05/04/86)

Here is the source code for the uuencoded file 'levy.ttp' posted previously:
----------------------------------------------------------------------------
/*
 * levy.ttp:  Brownian Relief Fractal Generation Program for the Atari 520ST
 *
 * This program is distributed in the public domain with no restrictions on
 * its use.
 *
 * The algorithm implemented herein is described in B. B. Mandelbrot "Fractals:
 * Form, Chance, and Dimension" (Freeman 1977) p. 207. It was first defined
 * by P. Levy "Processus Stochastiques et Mouvement Brownien" (Paris:
 * Gauthier-Villars 1948).
 *
 * program author: J. M. Knapp  AT&T Bell Labs   Columbus OH  (cbosgd!nscs!jmk)
 *
 * Background (from Mandelbrot):
 *
 * [The Brownian model of the landscape] finally provides us with our
 * long-sought example of a curve that (a) is devoid of self intersections,
 * (b) is practically devoid of self contacts, (c) has fractal dimension
 * clearly greater than 1, and (d) is isotropic.
 *
 * More precisely, the dimension of these coastlines is 3/2, which is of
 * course much higher than most of Richardson's values [e.g. 1.26 for the
 * coast of Britain]. The Brownian artificial coastline is therefore
 * limited in its applicability. It recalls northern Canada, Indonesian
 * Islands, perhaps western Scotland, and the Aegean. It is applicable to
 * other examples as well, but certainly not to all.
 *
 * It is a pity, because a relief of dimension D=5/2 and coastlines of
 * dimension 3/2 would have been easy to explain. Indeed, the Brown-Levy
 * function is an excellent approximation of the relief that would have
 * been created by superimposing independent rectilinear faults.  The
 * generative model proceeds simply as follows. Starting with a horizontal
 * plateau, break it along a straight line chosen at random to introduce
 * a kind of cliff, a random difference between the levels of the two
 * sides of the break. Then start all over again, ad infinitum. The
 * process merely generalizes the Poisson process. With no need for
 * mathematical or physical details, we can see that the argument seizes
 * at least one aspect of tectonic evolution...
 *
 * From B.B. Mandelbrot "Fractals: Form, Chance, and Dimension"
 * 
 */

#include <stdio.h>
#include <math.h>
#include <fcntl.h>

/* PUT YOUR ST HEADER FILES HERE */
/* the following are Lattice C header files */
#include <gemlib.h>
#include <osbind.h>

#define TRUE  1
#define FALSE 0

#define NX     320           /* max number of horizontal pixels */
#define NY     200           /* max number of vertical pixels */
#define NCOLOR  15           /* number of colors excluding background */
#define GRMODE   0           /* graphics mode 0 (320x200) */
#define SAVEFILE "levy.pi1"  /* DEGAS default save-file */
#define FSIZE  32034         /* size of DEGAS save-file */

#define SEED   2211955       /* default pseudorandom seed */

/* help */
#define US0 "TTP parameter usage:\n\n"
#define US1 "number of iterations:\n"
#define US1a "   -n<N> must always be specified\n\n"
#define US2 "optionally [default values in ()]:\n"
#define US3 "-s<int> sets random seed (2211955)\n"
#define US4 "-x<1-320> # of horizontal pixels (320)\n"
#define US5 "-y<1-200> # of vertical pixels (200)\n"
#define US6 "-u<N> update screen every N iterations\n"
#define US7 "      (default: only update when done)\n"
#define US8 "-f<filename> save-file name (levy.pi1)\n"
#define US9 "-d<file> display previously-stored file\n"
#define US9a "-i to generate island-dominated relief\n\n"
#define US10 "examples:\n"
#define US11 "   -n10000 -i\n"
#define US12 "   -n100 -s9349490390 -fcoast.pi1\n"
#define US13 "   -dcoast.pi1\n\n"
#define US14 "press any key to abort run in progress\n\n"

/* VDI globals */
short contrl[12],
      intin[128],
      intout[128],
      ptsin[128],
      ptsout[128] ;

short oldpalette[16] ;   /* storage for old palette */

/*************/
main(argc,argv) 
int argc ;
char *argv[] ;
{

   short *relief ;   /* pointer to 'relief' data structure */
   long ncyc ;       /* number of iterations of generation process */
   long iseed ;      /* pseudorandom seed */
   int xl, yl ;      /* extent of each axis of screen region */
   short handle ;    /* VDI screen handle */
   short update ;    /* screen update every 'update' iterations */
   char fname[80] ;  /* save-file */
   short loadf ;     /* load flag: if true then load & display pic */
   short island ;    /* if true --> generate island-dominated relief */

   /* VDI palette (increasing altitude) */
   static short palette[NCOLOR+1] = { 0x000, 0x003, 0x004, 0x005,
                                      0x660, 0x550, 0x440, 0x340,
                                      0x040, 0x050, 0x432, 0x543,
                                      0x653, 0x444, 0x555, 0x777 } ;

   short xpalette[NCOLOR+1] ;  /* palette xlated to VDI ordering */

   short cginit(), cgopen() ;

   /* begin */
   conflush() ;   /* clear console input buffer */

   /* process argv[] options */
   options(argc,argv,&xl,&yl,&ncyc,&iseed,&update,fname,&loadf,&island) ;

   if (loadf)  /* load and display DEGAS file */
   {
      handle = cginit(palette,xpalette) ;   /* open screen */
      if (readfrac(fname,palette) < 0)      /* send file data to physbase */
      {
         gemdos(0x1) ;                      /* PAKTC */
         cgclose(handle) ;                  /* file read error */
         exit(1) ;
      }
      Setpallette(palette) ;                /* set new palette */
      gemdos(0x1) ;                         /* PAKTC */
      cgclose(handle) ;                     /* done, restore screen */
      exit(0) ;
   }

   /* generate new relief */

   srand48(iseed) ;  /* randomize */

   /* allocate 'relief' data structure */
   if((relief = (short *)malloc(sizeof(short)*xl*yl)) == 0)
   {
      fprintf(stderr,"Not enough memory\n") ;
      gemdos(0x1) ;  /* PAKTC */
      exit(1) ;
   }

   level(relief,xl,yl) ;  /* initialize to level 'plain' */

   handle = cginit(palette,xpalette) ;  /* initialize graphics device */

   if (cycle(handle,relief,xl,yl,ncyc,update,island))  /* generate relief */
   {
      plotrel(handle,relief,xl,yl,island) ;            /* plot relief */
      gemdos(0x1) ;
   }

   if (writefrac(fname,xpalette) < 0)  /* save screen to DEGAS file */
   {
      gemdos(0x1) ;
      cgclose(handle) ;    /* file write error, clean up & quit */
      exit(1) ;
   }
   cgclose(handle) ;                   /* close graphics device */

   exit(0) ;     /* done */
}

/* fractal generation routine */
int cycle(handle,relief,xl,yl,ncyc,update,island)
short handle ;
short *relief ;
int xl, yl ;
long ncyc ;
short update ;
short island ;
{
   int icyc ;  /* cycle counter */

   printf("working...\n") ;
   for (icyc = 0 ; icyc < ncyc ; icyc++)
   {
      if (drand48() < .5)            /* either inc or dec half-plane */
         inc_hplane(relief,xl,yl) ;
      else
         dec_hplane(relief,xl,yl) ;

      if (update && icyc && !(icyc % update))
         plotrel(handle,relief,xl,yl,island) ;  /* update screen */

      if (Bconstat(2))
      {
         conflush() ;  /* a key was pressed, flush and abort */
         return(FALSE) ;
      }
   }
   return(TRUE) ;
}

/* increment half-plane */
inc_hplane(relief,xl,yl)
short *relief ;
int xl, yl ;
{
   register short *endcolp, *ap ;  /* end-of-column pointer, array pointer */
   register short iy, ryl ;        /* row index, reg yl holder */
   int m, b ;                      /* slope & intercept of random line */

   ryl = yl ;             /* put yl in register */
   rndmb(xl,yl,&m,&b) ;   /* get random line parameters m & b */

   ap = relief + yl * (xl - 1) ;  /* point to beginning of last column */
   endcolp = ap + yl ;            /* point to end of last column */

   /* increment all elements below  random line */
   while (xl--)  /* for all columns */
   {
      iy = ((m * xl) >> 8) + b ;  /* starting y-value to increment */
      if(iy < 0) iy = 0 ;         /* can't start before 0th element! */
      if (iy < yl)                /* no action if past last element in col */
      {
         ap += iy ;                  /* point to 1st value to inc */
         while(ap < endcolp)         /* increment rest of column */
            (*(ap++))++ ;
         endcolp -= ryl ;            /* point to end of previous column */
         ap -= (ryl << 1) ;          /* point to beginning of previous column */
      }
      else
      {
         ap -= ryl ;          /* point to end of previous column */
         endcolp -= ryl ;     /* point to beginning of previous column */
      }
   }   
}

/* decrement half-plane */
dec_hplane(relief,xl,yl)
short *relief ;
int xl, yl ;
{
   register short *endcolp, *ap ;  /* end-of-column pointer, array pointer */
   register short iy, ryl ;        /* row index, reg yl holder */
   int m, b ;                      /* slope & intercept of random line */

   ryl = yl ;             /* put yl in register */
   rndmb(xl,yl,&m,&b) ;   /* get random line parameters m & b */

   ap = relief + yl * (xl - 1) ;  /* point to beginning of last column */
   endcolp = ap + yl ;            /* point to end of last column */

   /* decrement all elements to right of random line */
   while (xl--)  /* for all columns */
   {
      iy = ((m * xl) >> 8) + b ;  /* starting y-value to decrement */
      if(iy < 0) iy = 0 ;         /* can't start before 0th element! */
      if (iy < yl)                /* no action if past last element in col */
      {
         ap += iy ;                  /* point to 1st value to dec */
         while(ap < endcolp)         /* decrement rest of column */
            (*(ap++))-- ;
         endcolp -= ryl ;            /* point to end of previous column */
         ap -= (ryl << 1) ;          /* point to beginning of previous column */
      }
      else
      {
         ap -= ryl ;          /* point to end of previous column */
         endcolp -= ryl ;     /* point to beginning of previous column */
      }
   }   
}

/* set all elements to 0 (level plane) */
level(relief,xl,yl)
short *relief ;
int xl, yl ;
{
   register short *ap, *endp ;   /* array pointer, end pointer */

   ap = relief ;
   endp = relief + xl*yl ;
   while (ap < endp)
      *(ap++) = 0 ;
}

/* return slope (m) and intercept (b) of random line through plane */
/* (slope is scaled by 256) */
rndmb(xl,yl,m,b)
int xl, yl ;
int *m, *b ;
{
   float dx, dy ;  /* delta-x, delta-y */
   int x0, y0 ;  /* random point on plane */
   double drand48() ;

   dx = 0 ; dy = 0 ;
   while((dx = 2.0*drand48() - 1.0) == 0) ; /* prevent division by 0 */
   dy = drand48() ;
   x0 = xl*drand48() ;
   y0 = yl*drand48() ;       /* (x0,y0) random point */

   *m = (256.0*dy)/dx ;
   *b =  y0 - (*m*x0)/256 ;     /* calculate y-intercept */
}

/* initialize screen device */
short cginit(palette,xpalette)
short *palette, *xpalette ;
{
   /* translation from color index to palette index  PI = ctrans[CI] */
   static short ctrans[NCOLOR+1] =
      { 0, 2, 3, 6, 4, 7, 5, 8, 9, 10, 11, 14, 12, 15, 13, 1 } ;
   short colind ;     /* color index */
   short handle ;     /* screen handle */
   short cgopen() ;

   handle = cgopen() ;

   /* save old palette */
   for (colind = 0 ; colind < NCOLOR+1 ; colind++)
      oldpalette[colind] = Setcolor(colind,-1) ;

   /* initialize color look-up table */
   for (colind = 0 ; colind < NCOLOR+1 ; colind++)
      xpalette[colind] = palette[ctrans[colind]] ;
   Setpallette(xpalette) ;

   return(handle) ;
}

/* plot relief */
plotrel(handle,relief,xl,yl,island)
short handle ;
short *relief ;
int xl, yl ;
short island ;
{
   int iy, ix, icol ;   /* row index, column index, color index */
   short minval, maxval ;  /* min, max altitude */
   register short *ap ;    /* array pointer */

   /* extents of color regions (increasing altitude): */

   /* continental relief */
   static float cext_con[NCOLOR+1] = { 0, .15, .25, .35,
                                          .40, .45, .50,
                                          .55, .65, .70,
                                          .75, .80, .85,
                                          .90, .95, 1.00 } ;

   /* island relief */
   static float cext_ile[NCOLOR+1] = { 0, .30, .55,  .65,
                                          .68, .71,  .74,
                                          .77, .85,  .88,
                                          .91, .93,  .95,
                                          .97, .99, 1.00 } ;

   float *cext ;

   /* integer (absolute altitude) extents of color regions */
   short icext[NCOLOR+1] ;

   /* set extents pointer */
   if (island)
      cext = cext_ile ;
   else
      cext = cext_con ;

   minmax(relief,xl,yl,&maxval,&minval) ;  /* find max and min altitude */

   /* calculate integer extents */
   for (icol = 0 ; icol < NCOLOR+1 ; icol++)
      icext[icol] = minval + cext[icol] * (maxval - minval) ;

   icext[NCOLOR]++ ;  /* tricky: bump last value by one */

   ap = relief ;  /* point to beginning */
   for (ix= 0 ; ix < xl ; ix++)  /* for all columns */
   {
      register short colm[NY] ;  /* color indices for screen column */
      for (iy = 0 ; iy < yl ; iy++)   /* for all rows */
      {
         register short *cp, colind ;  /* color pointer, color index */
         cp = icext ;                  /* point to color region 0 */
         colind = 0 ;
         while(*ap >= *(cp++)) colind++ ;
         colm[iy] = colind ;
         ap++ ;
      }
      column(handle,colm,ix,yl) ;  /* plot column */
   }
}

/* find maximum & minimum values of altitude */
minmax(relief,xl,yl,maxval,minval)
short *relief ;
int xl, yl ;
short *maxval, *minval ;
{
   register short *ap, *endp ;   /* array pointer, end pointer */

   *maxval = *relief ; *minval = *relief ;
   ap = relief ;
   endp = ap + xl*yl ;
   while (ap < endp)
   {
      if (*ap > *maxval) *maxval = *ap ;
      if (*ap < *minval) *minval = *ap ;
      ap++ ;
   }
}

/* flush any characters in console input buffer */
conflush()
{
   char ch ;
   while(Bconstat(2))
      ch = Bconin(2) ;
}

/* process argv options */
options(argc,argv,xl,yl,ncyc,iseed,update,fname,loadf,island)
int argc ;
char *argv[] ;
int *xl, *yl ;
long *ncyc ;
long *iseed ;
short *update ;
char *fname ;
short *loadf ;
short *island ;
{
   int help ;
   int optind ;

   /* set defaults */
   help = FALSE ;
   *iseed = SEED ;
   *ncyc = 0 ;
   *xl = NX ;
   *yl = NY ;
   *update = 0 ;
   sprintf(fname,"%s",SAVEFILE) ;
   *loadf = FALSE ;
   *island = FALSE ;

   optind = 1 ;
   while ((optind < argc) && (*argv[optind] == '-'))
   {
      switch(*(argv[optind]+1))
      {
         case 's':
         case 'S':
           *iseed = atol(argv[optind]+2);
           break;

         case 'n':
         case 'N':
           *ncyc = atol(argv[optind]+2);
           break;

         case 'u':
         case 'U':
            *update = atoi(argv[optind]+2) ;
            break ;

         case 'f':
         case 'F':
            sprintf(fname,"%s",argv[optind]+2) ;
            break ;

         case 'd':
         case 'D':
            sprintf(fname,"%s",argv[optind]+2) ;
            *loadf = TRUE ;
            break ;

         case 'y':
         case 'Y':
           *yl = atoi(argv[optind]+2) ;
           break ;

         case 'x':
         case 'X':
           *xl = atoi(argv[optind]+2) ;
           break ;

         case 'i':
         case 'I':
            *island = TRUE ;
            break ;

         default:
           help = TRUE ;
           break ;
      }
      optind += 1 ;
   }

   if((optind != argc) || (argc == 1 )) help = TRUE ;

   if( help )
   {
      fprintf(stderr,"%s", US0);
      fprintf(stderr,"%s", US1);
      fprintf(stderr,"%s", US1a) ;
      fprintf(stderr,"%s", US2);
      fprintf(stderr,"%s", US3);
      fprintf(stderr,"%s", US4);
      fprintf(stderr,"%s", US5);
      fprintf(stderr,"%s", US6);
      fprintf(stderr,"%s", US7);
      fprintf(stderr,"%s", US8);
      fprintf(stderr,"%s", US9);
      fprintf(stderr,"%s", US9a) ;
      fprintf(stderr,"%s", US10);
      fprintf(stderr,"%s", US11);
      fprintf(stderr,"%s", US12);
      fprintf(stderr,"%s", US13);
      fprintf(stderr,"%s", US14) ;
      fprintf(stderr,"press any key to continue") ;
      gemdos(0x1) ;
      exit(1);
   }
}

/* close graphics screen and enable cursors */
cgclose(handle)
short handle ;
{
   v_show_c(handle) ;
   Cursconf(1,0) ;
   Setpallette(oldpalette) ;
   v_clsvwk(handle) ;
   appl_exit() ;
}

/* open graphics screen and disable cursors */
short cgopen()
{
   short handle ;
   short work_in[12],
         work_out[57] ;
   int iwk, set_type ;

   appl_init() ;

   for (iwk = 0 ; iwk < 10 ; work_in[iwk++] = 1) ;
   work_in[10] = 2 ; /* raster coordinates */

   v_opnvwk(work_in,&handle,work_out) ;
   v_hide_c(handle) ;  /* bye mouse */
   Cursconf(0,0) ;     /* bye cursor */
   v_clrwk(handle) ;   /* clear screen */
   set_type = vsm_type(handle,1) ;  /* marker type = point */
   return(handle) ;
}

/* plot column on graphics screen */
column(handle,colm,ix,npoints)
short handle ;
register short *colm ;
int ix ;
int npoints ;
{
   register short pxy[2] ;

   *pxy = ix ;
   *(pxy+1) = npoints ;
   while((*(pxy+1))--)
   {
      vsm_color(handle,colm[*(pxy+1)]) ;
      v_pmarker(handle,1,pxy) ;
   }
}

/* save screen data to disk in DEGAS format */
int writefrac(fname,palette) 
char *fname ;
short *palette ;
{
   char *scrnp ;
   int fd, n ;
   short gmode[1] ;

   scrnp = (char *)Physbase() ;  /* get pointer to display frame */
   *gmode = GRMODE ;

   if ((fd = open(fname, O_RAW | O_CREAT | O_WRONLY)) < 0) {
      fprintf(stderr,"open of '%s' failed\n",fname) ;
      return(-1) ;
      }

   n = write(fd, gmode, 2) ;      /* write graphics mode */
   n += write(fd, palette, 32) ;  /* write palette */
   if ((n += write(fd, scrnp, 32000)) != FSIZE)  /* write screen */
   {
      fprintf(stderr,"file write error: only %d bytes written\n",n) ;
      close(fd) ;
      return(-1) ;
   }
   close(fd) ;
   return(0) ;
}

/* read file (DEGAS format) */
int readfrac(fname,palette)
char *fname ;
short *palette ;
{
   int fd, n ;
   short gmode[1] ;
   char *scrnp ;

   if ((fd = open(fname, O_RAW | O_RDONLY)) < 0) {
      fprintf(stderr,"open of '%s' failed\n",fname) ;
      return(-1) ;
      }

   scrnp = (char *)Physbase() ;
   n = read(fd, gmode, 2) ;      /* read graphics mode */
   n += read(fd, palette, 32) ;  /* read palette */
   if ((n += read(fd, scrnp, 32000)) != FSIZE)  /* read screen */
   {
      fprintf(stderr,"file write error: only %d bytes read\n",n) ;
      close(fd) ;
      return(-1) ;
   }
   close(fd) ;
   return(0) ;
}

turner@imagen.UUCP (05/08/86)

> Here is a type of fractal generation program that you've probably not 
> seen yet. It generates something like a topographical map of a random 
> relief. The relief is divided into 15 altitude zones, each with a different
> color. The resulting maps can be very pretty.  This is a TTP application.
> Run the program without parameters and you will get the usage directions.
> 
> The algorithm is due to (who else) Benoit Mandelbrot. It is based on
> the "Brownian plane-to-line" function of Paul Levy.
> 
> note: This program is public-domain. I put no restrictions on its use.
>       Comments/improvements are welcome.

~~~~~~~~~~~~~~~~~~~~~~~~~\ lineater, \~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

the program looks good, how about posting the sources for us poor
hackers still learning about fractals ?
-- 
----
	"If only you could see what I've seen with your eyes"
		-Blade Runner

Name:	James M. Turner (not the James M. Turner at Lisp Machine Inc.)
Mail:	Imagen Corp. 2650 San Tomas Expressway, P.O. Box 58101
        Santa Clara, CA 95052-8101
AT&T:	(408) 986-9400
UUCP:	...{decvax,ucbvax}!decwrl!imagen!turner
CompuServe: 76327,1575
GEnie     : D-ARCANGEL

turner@imagen.UUCP (05/08/86)

> 
> Here is the source code for the uuencoded file 'levy.ttp' posted previously:
> ----------------------------------------------------------------------------

*** REPLACE THIS LINE WITH YOUR MESSAGE ***

foot-in-mouth alert, foot-in-mouth alert, please ignore my previous
posting re: posting the sources, i should look before i leap, sorry
-- 
----
	"If only you could see what I've seen with your eyes"
		-Blade Runner

Name:	James M. Turner (not the James M. Turner at Lisp Machine Inc.)
Mail:	Imagen Corp. 2650 San Tomas Expressway, P.O. Box 58101
        Santa Clara, CA 95052-8101
AT&T:	(408) 986-9400
UUCP:	...{decvax,ucbvax}!decwrl!imagen!turner
CompuServe: 76327,1575
GEnie     : D-ARCANGEL