[comp.binaries.mac] Daisy v1.1

earleh@eleazar.Dartmouth.EDU (Earle R. Horton) (03/08/88)

[Daisy v1.1]

This the documentation for Daisy v1.1, a User/Chooser configurable printer
driver for the Mac and man daisy wheel and dot-matrix printers.  The printer
driver is designed to be obvious to use, and most users will hopefully have
no problems with it.  This file covers some of the subtle points of operation,
which some users will not find obvious.  If you decide to distribute Daisy,
(which you have my permission to do) please include this file.

This is version 1.1 of Daisy, the User/Chooser configurable printer
driver for Daisy wheel and Dot matrix serial printers. 

This is basically the same printer driver documented in the November and
December, 1987 issues of MacTutor Magazine, with the following
additions:

	a)  Converted to MPW C.
	b)  Memory management routines extensively optimized by hand
	    before compiling.  Storage requirements trimmed.
	c)  Error checking improved.  The driver open routine checks
	    for Resource Manager, Memory Manager, and Serial Driver
	    errors, and returns the appropriate error code to PrOpen().
	d)  Print dialog code overhauled.  E.g. the "sideways" item
	    in the Job Dialog actually works, and is saved in the
	    current Print Record.
	e)  If possible, uses the PrGlue trap instead of referencing low
	    memory globals when accessing the printer driver's
	    device control entry and when setting the error code for 
	    the print abort condition.  If the PrGlue trap is not
	    present, then the old method is used.
	f)  Compiled and tested on a Mac II, compatible with the
	    following:
	      i)   MultiFinder.
	      ii)  Machines from 512KE, System 2.0, to Mac II, system 4.2.
	      iii) 64 ROMs, I think so.  (Let me know, please?)
	      iv)  Many, many, many applications and printers.
	g)  Low-level printer calls now do the correct things in
	    almost all cases.  Applications which use them should
	    produce correct results.
	h)  Strings are stored in resources so that the driver can
	    be localized as necessary.

Daisy requires Chooser 3.0 or newer (or a resource editor) to configure
it properly.  Before using Daisy for the first time, you should select
the Daisy icon in the Chooser box, then press the "Setup..." button
which appears.  A dialog box will then appear which will allow you to
set the baud rate, flow control, and several printer control strings. 
"Top of Page" and "Left Margin" are meant for the low-level routines. 
"Top of Page" should advance the paper to the point where you desire
printing to start on the page.  "Left Margin" should contain enough
spaces or tabs to provide the correct left margin.  A "Line Terminator"
string is required; you should obtain the correct string to use from
your printer manual since not all printers use the same string.  A caret
('^') in front of a character means use the control character.  Example:
Most printers will use CR-LF for "Line Terminator".  If this is the case
with your printer, enter "^M^L" for this parameter.  The default
settings in this version of Daisy are correct for a Tandy DMP-110
connected to the modem port at 1200 baud, using CTS flow control. 

The driver reads in the information set in the Chooser configuration box
once, at open time.  For this reason, you are not usually able to
reconfigure Daisy from within a running application.  Recommended
procedure for changing Daisy's parameters is to configure Daisy, using
the Chooser, when in the Finder.  The next time you run an application
which prints with Daisy, the new settings will be used. 

IF YOU USE DAISY WITH THE PRINTER PORT, IT IS UP TO YOU TO MAKE SURE
APPLETALK IS OFF.  You can do this within the Chooser, if you have
version 3.0 or newer.  Daisy will just quit if AppleTalk is on and its
settings say to use the printer port.  Depending on what kind of
error-checking is done by your application, you may get some kind of
error message.

If you have an older System, which Chooser 3.0 will not run with, or if
you simply do not have the Chooser 3.0 desk accessory, then it is very
simple to configure Daisy using ResEdit or REdit. 

The printer control strings are in 'STR#' -4080.  They are, by
number:
	1)  Line Terminator.
	2)  Initialize printer
	3)  Top of paper (low-level routines only).
	4)  End of page (usually "^L").
	5)  Left margin (low-level routines only).
	    (A bunch of spaces is good here. )

The information for the serial port is in 'HEXA' -8192.  ResEdit and
REdit will edit this type resource as hex data.  Daisy interprets it as
three integers.  An integer takes up four characters of hex data.  None
of these integers exceeds 000A.  Invalid values will produce undefined
results, since Daisy is naive and expects the 'HEXA' resource to contain
only valid data.

data 'HEXA' (-8192, "Printer Settings") {
	$"0000 0002 0000 "
};
                    ^ third integer
               ^second integer
          ^first integer

The first integer tells Daisy what port to use.  Allowable values 
are 0000 for the modem port, and 0001 for the printer port.  Make
sure you turn off AppleTalk if you use the printer port.

The second integer determines the baud rate:

	0000	   300
	0001	   600
	0002	  1200
	0003	  1800
	0004	  2400
	0005	  3600
	0006 	  4800
	0007	  7200
	0008	  9600
	0009	 19200
	000A	 57600
	
The third integer specifies which type of flow control to use.  Use 0000
for CTS, 0001 for Xon/Xoff.  Refer to your printer manual to determine
which is appropriate.  If either can be used, then best results are
usually obtained with Xon/Xoff. 

Recommended font/style:  Monaco 9, plain, 11 pixels per line.

Custom 'PREC's (hackers only): Go ahead, enjoy yourself.  Daisy will
reject any 'PREC' it cannot handle.  Attempts to produce more than 66
lines per page are doomed to failure, since that is all I allocate for
storage.  The maximum number of columns is 164. 

Other uses: Daisy can be used to "print" from your word processor to and
serial device, like maybe a modem or mainframe terminal connection.
Draft copies of documents could be uploaded to a mainframe or other
microcomputer, for possible use or even printing by the host computer.

Support: This is FREEWARE.  I do not support it.  LightSpeedC sources
are available from MacTutor Magazine on the December, 1987 source disk. 
Full instructions are provided in the November and December issues for
1987.  Building Daisy with LightSpeedC is a royal pain, but it can be
done.  The current (MPW) sources are available from me for $20.00
American to cover handling.  I have made no attempt to maintain
compatibility between the LightSpeedC sources and the MPW sources, no
attempt at all.  I will not distribute copies of the LightSpeedC
sources, since I do not feel that would be fair to MacTutor, neither
will I supply copies of the article on disk.  (MacTutor supplies back
issues through mail order at a fair price.) The MPW sources come with
all source files necessary to build Daisy, including a Makefile.  I do
not send them out by E-Mail.  For $35.00, I will send you an MPW source
disk via U.S. Post Office overnight mail.  Bear with me, people ask
these kinds of things.  I will answer questions about Daisy on the
phone, but the amount of time I will give you depends on how interesting
you are to talk to.  I do not have the time to supply customized
versions of Daisy, but there are lots and lots of hungry high school
kids around who can program in C, or would be willing to try for a few
bucks, an occasional loan of your car, or a chance to play games on your
Mac or with your daughter. 

-- 
*********************************************************************
*Earle R. Horton, H.B. 8000, Dartmouth College, Hanover, NH 03755   *
*********************************************************************

---
(This file must be converted with BinHex 4.0)

:"@4KDA0j!&"549*%BA0C)!#3"bKFf%F!N!3"!*!$*EJ!!#5i!!!#T!#3)!9NB@P
cH3)!N!038N954'&c@5%!!"3!B!#3""UD!*!%8&*&8N4KFeNK!!!8!'!!!%&G!*!
1RMBccJ#3"LKF!*#%"(4J$J!!8%&$5r!!!!%%!1!!6[S!!L![!!`J,`!))#m!"!a
[!"-!&QB%6VS!H%*!2d!!'#"Ihr`!N!-86Y"19[r`51Fm!#BZ!!Ji,J!1-#i!%NT
!C`!!4$S!8d9J+#m$2`9)E[rk5'lrr%KZrr+TMET%CJS[,[rm2c`!!@!',blrr%*
RU@-`,J!@5-!b"8M"8N9)`C!!J@B!rmC-lJ!mrq"1ANje6PEqd%MR2$KCMbmm5%9
B36mmi!#TS#!I*%#dr!!!C`!$)PQ2,ca69&)M2cc`%+QJ)"mQ3,Em!!"R!!-))&*
+D!!#E3!!$#"5$'J!#J!#E`BJ8N*S!!*CMcmmm""#Tbmmrj!%UA`J(bS!C`!#eLm
&2c`!#%KZrqj)E[rd5'lri+Q0,`8r2!!"5'lrmNKZrrK)E[rBUBe)E[l32cc`%5"
5-#J!!P*!2`"1ZJ,N,blrp%KZrY#TAb"63HJ!!LJ)GJTJ*#m&2`0)E[r`5'lrr%K
Zrp#TM5mZrr`["+Q2F!!S4"!88S$BJ(!2-J0)`9*$5-'3!)&Q!2r15'lrk+Kd,`@
SFbm&U48r2!!%2c`!"+LE5(J!cDKL5'lrf$mmrrXr22rlU+P)E[rB2c`!%$mm!"#
SX%Ki!#'SBMmm!!)r2!!#U*Y)E[rJ2ccrr6mmrrfSU8KZrq!r2!!-2c`!$+L`5(J
!"NKi!!8J8M!35-"DJ#m!,`91Z[iS5(J!&%Ki!"-J8M!S!!4)`()6d)%[!#m&6VV
q$%*Zrqa2l`!JB!!!f%+R5'lrl+Q4-#lrl!a!!"0Y"QiLB!!!KJa!!!9Y!!#iEJ*
J+Ja!!!CQ!Q!L$%!!#'B!!+4J,Ja!!"4Y!!#DEJ*J@Ja!!"9Q!!#1B!!!I#"5-#l
rl%M!@i!`J%Ki!!C)H!!&B&!J8P*S!!)`+!!#$%!!#fB')&*#D!!#5'lqd$mmm"%
J8M!S!!*53$m!6VS"C#mZrr4)E[l3U9pJ1L"5-#lrl%M!FK13!)%a3!!%5(J!&%K
i!"-`,[rX5-![!#m&6VVp2Nr[!""J$Lm&UB-[,[rSU(0J!!$5$'i!!IrXCJ$r)RJ
DGJTJ*#m&2`0)E[r`5'lrr%KZrp#TM5mZrra)E[l3UC!!F!!3,[l3f)"`$c)$5-&
53dM"N!#"CJ$rcLm,6VS!bLm%,`Y1ZJ#U,`Y1ZJ#1X)42l`!3C`i["DQ$,blrk+K
cF!"JBLm,6VS!PL"63HJ!!LJ)GJTBMf!N,`8r!dKZrr")E[rm5'lrd+Q0,blrr#m
%UC!!F!!S4"!88S$BJ(!2-J0)`9*$5-'3!)&Q!2r1,`@TJbmZrqLSFbm+UDS[#kQ
U,`UTX#m,UE"-lK`mrV41ANjeF!!a`!)J)!K1G5"[!!5J*8U!DJD3!-K1q[rU)%"
1q[rL)#m!##"[!!5J*%lkrpBJE`!%S#P1q[r-)'m!"+!U6[Vr`Nj@!!"C6bmm8e4
5)cmZ!!UTS#*Z!!a#%5!ICb!J3#"3-"Jb,J!)XN"Z%R!!8d&R"K!BdF"JpK!38N#
J,NjH)&p3Mdl3!!!'i'!!!!jJ!!'SB!!"cQ!!!J*)jaJi*Qm!)#3[!"`J,`!B5(J
Uc%kk"SSS!&L2CK)[22q3!j41ZJAXGJ"BMf!!!9j+JQB`5(J!XNkk"QBQ!&L2CKJ
["%kk"Q3[22q3!j41ZJA#GJ"3Mf!!!63J3a&m!!%!X'!)*J)J3d)S!,"1ZJ4J*%!
L8d(U!'C`(5$C8FMrr#K$+83!V%)U!+S[!kK[+%0)E!"XU1T"qJ+#+%-T5!"X3IS
$0LK$+8J!P#K$3H`!E#K$+8J!D#K$1+S!D%(U!'iS3d2X!"!Lf#,B3N!S3cP!!!i
S3cP!!!`S3cP!!!SS3cP!!!J[!kKc2bS!G$mU!(+SGM!U!(K)`%5!2`!`+J"f5-"
%J$m!U(Fr+J"SU()["%kk!eSJDJ"3F!!3%#m!)#S!8&+!,`![#Nkk"-JeI!!"!0j
+UJ#X6qm!%'B)3IS$dL9)!+aCMbmm8&*&3cmm!!'TS#!I*N!S#fFH,`ZTSNKi!(J
[%dKU!'C1ZJ9+,`ZTULm,UD02l`!--#S!HT!!DJ"f5-#"r!!,5-!e3!"N,d-!*%c
I("JJAprm!*!$$%l3,`SNE`!),bS!V%kk"3![#UKp5LS!X&L2C`J[#Nkk"1jBMb4
I)&pBMdl351F!-#C[!"!NE`!-6VS#q#"!*!TR#N(S!'iL5L,B)YJ[#kKc,bX!V%k
k!RTBMdcI$!!JAe#26Y")jaJ`*Qm!&%kk!X3N3$!U!+5`DJ$HE`K5DJ$HB!!!mM!
U!+Bb+J$H8QS!hV""E!4J!!$85LS!K@B!!!a1ZJ-N5S"R!!$#+#X!V%*$B!!!TL"
U!+a1N!"1ZJ2d$%!!J'F!!,!`!dM!`I`!TY#%)%!-8!!"CN)b2!#N-!0)`-(m!+E
3K&0"0!&)`L*!$$%!)#J#C`$rjP*"5-%[!6!$5-$"r!#Q)%$4a%(S!!)[##m+6VS
$3Nr[!!`b!dM"-#S!C%M!8i#bJ'`3)'S!9(!!%"![!#"U!&4J$L"U!&a`!"!3,`!
JDJ"F8SJ[##m+6VS$"Nr[!!a53c)U!'4)`6!$5-#5J'F1B!$r6%Ki!)"1ZJ-'@)p
-h``B)&pBMdl36PErq%MR(J!f,J!8+#i!%%KZrrbSG#"Zrr``%%M!$)!!!2d"CJ4
k"f!@)'lrr$!35-!-J!!!r30Q"(S&B!*k"L"Zrr`X+!#X5'lrq+LD5'lrq+K`-#l
rqNM!JF8b!$!ZrrK)`)(m!!Xd!$!$5-![!$!#5-$"r!#Q)%$4aM!"5-""k!!#5(!
)!#m%6VS$$M!#5-$"r!#Q)%$4aM#m!!%`!m(&2`"#CkL86qm!$%cZ!(Mrk%jH)&r
Ir!#3!`j1d%j@rra)ja!`*Li!%#CZ!!`NEJ!)5'lrr+Kd)'lrr$!35-!-J!!!r3&
Q#$9m!!F!"'!H)'lrr$!35-!-J!!!r30Q#$9m!!8!"'!'0A`!"J!%0,`!#69m!!)
!!N*U!!C`!6D!)%-`J$Gm!!B!!L"$-@S!"!!#-#S!"%M!`Hi!'$e!!"T-lJ`)rr"
1AL"Ihr`!N!-56Y")jb!J*'m!$$5m!!&#3Q!--!*)`"@m!#!)!P*#)M`!N!1N-!*
)`*+!CJ$rjN*#B"a)H!#Q-!*)`-(m!+BJ30(+5&")8Nkk!J*2l`!-FN*53M!#5-"
)`*+!CJ$reNcI"!41G5m#,c`!!+LI6VS"lL3!,c`!!+Mp6VS"iV5!8)pR%&Q2,cb
8!*!$U2dJ(b"!B!JJH!%F8)JJ8#"3)'J!&#!3*"p1G8j@rr![!P@22c`!#%KZrr#
TF(!!%"m3!'F`9BmJ,[rb!S!!N!2r,`#SDc!I$%!!,QBB-#lrrNM!!S!!!!%!C`T
)H!#!6VS![&L2*#lrl%jH6R919[rX51F`!&Q22ccIrd+R,ccrN!5TI#!I*J"Q"(!
!B'5S8#m$2c`!!8KZrrT)E[rm5'lrl+Q05'lrp+Kd,`1SFcmm!!-r2!!$U*Y)E[r
X2ccrr$mmrrbSU8KZrq`r2!!32c`!%+L`3UG)E[riUC%[!kQ$,blrp+Kc$'i!![r
iCJ*JQR!"61i!$2rN6Pj1G5"[!!3J,`!))Lm!$#&!!#!K33!N3UG)8%kk!(C3Mdj
e51F`!#3[!!`[2!!!U*p1ZJ#N*J![2!!!U2e1ZJ#BYS"3MfF-2`)[2-!!!J#Sr@!
%-F)*4%cI!!a1G5m#,c`!!+LI6VS!F#3!,c`!!+Mp6VS!C,5!8)pR$P@2,cbk!*!
$U2d`(f!%-$J*4%M!*"p1G5"[!!3J,`!)CJ5J!f!#T!0)`%jeF!!a`!)J)!K1G5!
[!!5K(Nlkrr!JE`!%S"p1q[rQ)#m!$#*[!!JJE`!%S#j1q[r8-#m!"U&')!K1G3!
!#8TJ!!!iB!!!CQ!!!)4J!!#LB!!"D'!!!TCJ!!0HB!!$SL"I)Pm[#%l4)PmJAb!
35%!J`#!35%!JJ%l451F!-#4[!!aCMbmm8&*&3d*RUD!J(bC!,`ZTSL*5)&0`(5,
B8FMrr%cI$!!JAeL26Y![#L![!!K9Mbm!4IS!1#m+6VS#,K!I(d!!$#4I)&pBMdl
3,`SJ,`!)9Bm[!%Ak!1![#Nkk!J`3(ap!!!`NAb"I@)p1d%MR!$!NE`!-5(J!i%k
k#&)Q3&Q22ccJ!#m,,ccrN!5TI#!I)&)-D2d"!!*BMfB15(J!"NKi!!4)H!!%B#i
J8JaSr3)!!QB15(J!"NKi!!4)H!!&B"BJ8JaSr3-!!QB@5(J!"NKi!!4)H!!',`Y
1ZJE-6qm!%#"5-#J!&L"5X'J!&'`15(J!#%Ki!!G)H!!(B!a)H!!)5(J!"dKi!!J
[#dkk"TT2l`!33IS#jLG)!+T"qJ-B*dJ!VLG+!,)[5`!360m-!#"I@)p1d%j@rma
)j`!`*'i!#%Ki!1"1ZJH%*N"CMcmmi!%[#bmmrj!%UA`J(dKi!!C)H!!&5(J!"5m
,6VS'1L"55LJ!(dr[!"4Q$NKi!!j)H!!05(J!$Q!-5(J!$NKi!!e)H!!0,`Y1ZJB
16qm!%#m,2c`!"dKZrrT)E[rm5'lrmUQ0)&)pD!!qrrS`,[rk5-![!%KZrmj1ZJF
U,blrr%KZrmkTMbm,2c`!#8KZrrT)E[rm5'lrmUQ0)&)pD!"!rrS`,[rk5-![!%K
Zrmj1ZJEd,blrr%KZrmkTMbm,2c`!#dKZrrT)E[rm5'lrmUQ0)&)pD!"#rrS`,[r
k5-![!%KZrmj1ZJDq,blrr%KZrmkTMd(k!EJR5!#U3IS$L#G)!+iR5J#b,8X!$%c
Z$!$ra%jH)&pBMdl36PErl%MR'#!Q,J!-)#i!#&Q2,`-[!%kkr9`J(b4!+#S!VN)
U!,G#+J#f5'lrp+Kd,`USFbm+U48[#Mmm!!&)E[ri5'lrr%KZrqbTM6mm!!-r2!!
$U*Y)E[rX2ccrr$mmrrbSU8KZrq`r2!!32c`!%+L`B"B[+J#U5'lrqUQ4,`Sr,[r
k,`3JAdk3!%SU!,GR!2rN,blrp+Kc,`UTJLm+6VS&cNSU!,CBMfF-9Bm[!dkk!"a
`!"!I%#S!YKe!!""-lJ3Brq"1AL"I8)p1d%MR!$!NE`!-,`T1ZJ6)%!"BMfF%3J"
J)PQ2,ca38N9$3QHTS#!I*N![#kQL)P)J8h!G)YK4b2rmF!%I3!!360m-!#"I@)p
1d%MR!$!QE`!3*'m!$#"5)P-aD3!#!!)J8L*63qN!2N(S!$j`"#$C8FMrr#"5)P0
$k3!Z3HJ!,L$C)0NJf5$C)&)L8d2T!"""k!!3)0NJf5"5)P0$k3!#3HJ!!R!'-0P
4b2rm)&)L8d2T!#""k!!JF!B`f9()rra-h``!)&p3Mdl3)#m!$#"[!!JLE`!%$&!
!!fBB)LJ!!J+"!*!$rh!0X)&Q#$+m!!&`!@!#3J!I3!!3)&rIr!#3!`a1d%j@rr!
[#L4Z!!Sb,J!)$%%!"'d3$%%!"Qi+5(J!"NKi!!4J&!a"!!GY)!a"!!KZ'NKi!!K
)H!!(5-%[!5m+6VS$-Nr[!""J!!&+$%%!!@B!!6)[#Mmm!!4)E[rk5'lrr%KZrr+
TM9@2,blrr+PJ-"p63'B-)'S!XL"3-Acp!3!#,`Sr2!!&5'lrqNKZrra)E[rbUBe
9MbmZrrbTB$!I8d"Q$#"U!,)J8$&mr3)!!Lm+2c`!"NKZrrT)E[rm5'lrmUQ09Bm
[,[rmU@!`(e0!CJ`JDJ#b)&!aI2d$!!)[#Mmm!!K)E[rk5'lrr%KZrr+TM9@2,bl
rr+PJ-"p)`#)!F!!JDJ#b)&!d+!!@)'S!XL"3Y'J!&&l!4!#aJ@GB)'S!XL"35'J
!#%kkqSBJDJ#b)&")D!!36VVkH#"U!,)J8%KS!#C1Z[TU)'S!XL"32@J!'[rk)'S
!XL"3)QS!XL*4-@N!(!!D)'S!XL"3-@lrqJ!F6qm!$"9m!!%!Ya9m!!%!YQ!3$%%
!!QB+&A`!!3#h3LS!YL4Zrqa1AL"IA)p1d%j@rmJ[#L4Z!!S`,J!)$%!!!@B!!5`
9I!!"!,F9I!!"!,B[#Mmm!!9)E[rf5'lrr%KZrqkTM9@2,blrr+PJ-"p63'BD)'S
!XL"3-A`!!3!q)'S!XL"3-A`R$`"!B'`[#Mmm!!G)E[rf5'lrr%KZrqkTM5mZrra
)E[r+UC!!5'lrbNKZrrK1ZJ+')'S!XL"3-@lrqJ!q,`Sr2!!*5'lrpNKZrra)E[r
ZUBd[,[rm5'lrbUQ3!%KZrmT)E[ri6VS#8#"U!,)J8$&ZrrS!3#m+2c`!#dKZrrC
)E[rm5'lrlUQ0,blrr%KZrmUTN!")E[r+5'lrq%kk!KSJDJ#b)&!aE[rk!%)[#Mm
m!!j)E[rf5'lrr%KZrqkTM9@2,blrr+PJ-"p63'B1)'S!XL"33LJ!(f!!!*SJDJ#
b)&!4I!!"!"pJ!!#+$%!!!QB+&A`!!3#hB!!!HJa!!!jQ(NKi!!j)H!!05(J!$Lm
+6VS!EL"U!,)J8%)S!"pJ8!a!!!eQ)%Ki!!j)H!!05(J!$5m+6VS!5L"U!,)J8"&
m!!%!(f!U$%!!"@B15(J!"NKi!!9)H!!&B""G3'B@5(J!"NKi!!9)H!!',`T1ZJ!
56qm!%#4Zrm41AL"IA)p1d%j@rr")jc`!*Li!##JZ!!`J,J!35S"R!!!q+J"6K@!
S,`-r"8KZrrK)E[rm5'lrm+Q0ZS4Q#LmZrr`r2!!"B!B[,[rm3QHTBb!Z!"3L"9+
&N!#"CJ$rc%cZ!$cri%jH6R8JE`!%)P!-83!$CJ!!SL*3$'Rp!J!#CaBL8!aTr3%
!!QF-)P!-DId$!!*Q!!##)P!-D3"#!!4Q!!"f)P!-D3")!!CQ!!"U)P"+D3!)CJ!
!B#*35QN!#QB!!&BL8$!T!"C)`#*3-LN!%NM"N!#"$)!!!!-BEJ!!1L*3-#N!&%M
!)P!b+3!35-'3!)%-J!!!!YCZ!!!H)P"++3!IC``L8!`T!!%!(fB!!!SL8%ST!%4
R"%)"B!*b!A!!%!&1GA!!-F!#)#!)6R8J,`!%S4j1q[r`)'m!"+!I6[VrjL"[!!J
r2!!"UHiJE`!%))"1qJ!1)'m!"#![!!K#CkRZ)&p36dl3!*!$'Q!!!!)J,`!-)#m
!##![!!3JAprm!*!$&%l3!!!)2J`!N!JF!#)!+!!Z!$3(,PK3FQPZG!!!5(S!@Q!
@5(S!9'!35(S"6Q!+5(S#)Q!%5(S#F#m*,`JJE`!)6T!!)&mLAeK2##J!!3!'CJ3
[1!Mm6R8&,N&2GA3&,N*2GA3"I!#p!&i!2J!Z!"i!&J!1!!S!"!!!6PErm%MR1$J
J,J!)*'i!$%*$5'lrm%kk"4if!&L2CJ!!TPQ2,ca69&)M2cc`%+QJ)"mS!#m%UD)
["%kk"IS["%kk"H"CMbm%UD8J(bB!G2qdJe#2CJT9MkQ[-"mf!'"Q*!-'JJ#3!qB
[!Nkk"D`P3!!8@)pQ"(D8B%`[+J!86VS&SL"U!"3Q8#m,6VS&*#m$5'X!j5K%,a4
1ZJ@Q,`Y1ZJ,S5'lrm#m,6VS"UMB!6qm!)'F1,bS!&%kk"A*#UJ!8@)m["+QM,c`
!!+LI6VS&K#3!,c`!!+Mp6VS&H,5!8)pR$$m$,cc!!!)!U2eJ"$($#83`!dM!61i
F(2rB6Pj1G8MR!$!NE`!-*Qm!%#mV!"41ZJ83)'X!&#"3-#S!'PL2$%!!"'d!!+S
-3!!)EJ!!SY"!-$X!rNll!!)!PJ!+!*B!*!!`)@S!(!!J)@S!)!!N3UG)8%kk"+4
3Mf!!!(3[+J!F,`K1ZJ0'B1iNDJ!F0,`!"%)U!!4#+J!&3HS!#%2U!!`J2!!"!!%
LJ##!-#S!"NM!$)!!!2d"CJieI!!+!!)eI!!(!!TJ'M!U!!C)`!b!!!$p!fB80A`
!"`!#0A`!"3!+0A`!"J!1B!BeI!!*!!*#3%M!60m-!%je51FJ-#4[!"!J,`!8@Bm
[2%CdB@)r21!!UD!J(bC!Y[`!!'B)9BqTVc!IB#![#kQL$'S!#!!DCK)LDJ!F)&0
`"L,B8FMrr'!!!!*#3%M!60m-"%je,`SJ,`!)*'m!$%UU!"4R$LmU!"41ZJ2S3US
!&&L23N")`#4I6R9)jcJi*Qm!(#B[!#"#3&Q2,ca)49K"2ccJ!+QJ)"mS!#m%UD)
["%kk!lSN5d(V!1!P5!!5+%3J9$!3@)p+3'dXEJ*J"P0!CL4J$NKi!!B[+J!55(V
p0Q!-5(J!"LmU!"*)H[dZ6VS$KNr[!!a#Tbm+6VS$)%TU!""3MfF%B!!!QM9m!!J
!'L)mrrr-!#C%)&-`+!!#5-$3J%(kr2``-!J!5-$5J$9"!"a#Tbm+6VS#d%TU!""
3MfF#B&j#+J!J3LS!)8)U!#0#+J!L)N3J88TS!!4R)L"$5QJ!!QdD3HS!("#m!!&
#+J!G&A`!%3!H&A`!%`!IB!a"kJ!F3K!9I!!"!"deI!!+!"T#Tbm+6VS#F%TU!""
3MfF'-#S!%'!13QS!,%+U!#i["+QM3N")`%cI("a1G5m+*'m!#%(U!1FP5!"8)'S
!9(!!%"$3UJ"88S!P3!"3)'S!8(!!%"$3UJ"38S!P3!"B)'S!@(!!%"$3UJ"B8S!
P3!"F)'S!A(!!%"$3UJ"F8S!P3!"J,bS!9%kk!#S[+J"36VS!)LmU!&K1ZJ!D,bS
!A%kk!")[+J"J6VS!#Nr[!"3NAdje51Fi)#"[!"4i!8)$B%C`!"!$d)JL3!`4!&j
Q*(!!%!63L&)$FJ!5!a3"FJ!5!Y+)G!!L3434FKr%J5*!%S*J%R!!%!63L(3!&!2
8L#*#*%!8N9)%F!!3%(3!&!05!h)!%J+3!)&Q!2qSF!!3"&1!%)"-h`3F6R8[#L"
[!!JLE`!-*%P5LL&+!#"`!"!4)8!!*%+R5&"1ZJ&@8)mNAdje,`SNE`!))#m!$!b
!!!2rrQd%EL4J9!b!!!%!!'d!!'KZ!Q!U$)!!!J!!CJ*J*Jb!!!-!!'C3B$)-J!!
$rrpY4Qi#B#B-J!!%!!"Q1Q!@)'S!8'!%)'S!A%K3,`T1Z[pk8)pJ)L"U!&KJ"#"
U!&4)8#m+6VVrC#"U!'")8#m+6VVr@%r[!"!NAdje51F`-#4[!"4CMbmm8e45)$m
mi!#TS#!I*N![#kQL,`Y1ZJ$H,`Y1ZJ$%9Bmr2!!",`T1ZJ$b-"p)`%TU!!*3Mfd
19Bm[%cmU!!j#*kR%B!C9Mbm6UCF`(dM!*J![#kQMF2q`JfB+9BqTVc!I5-"J!R!
!5-"-h``-6R8[!L)[!!JN2!#3!qCJ"L"#dF&#%#!#8i*+J'B!rr)N(dje)'m!"#!
[!!KQ"+!%B!+N"%M!6R8JE`!%)#m!#'B%S!"J!U3!5-"1G5"[!!3J,`!)CJ5J!f!
#T!0)`%jeF!!a`!)J)!K1G5![!!5K)Nlkrr!JE`!%S#P1q[rQ)'m!"+"*6[Vrh#"
[!!5J5Nlkrp)J,`!-)Qm!##"[!!5J,Nlkrm!`,`!'S8BJ#%je5RJ#MQXL-$`!N!#
M4L*)-$`!RkG'XmKR%#*I)&m`(bm*S*!!2d!!"%je)'m!"$!m!!%L5'!'!a-,!J%
!-$`!%1*!8d"#@&()rr`b[!!")(J#VM0mrri!!J`S!2m!#@G#5LJ!#'iJ-hcrr`!
#5RJ#MQX`-h`!!3!#5RJ,)QSN-h`!!J!#B"a#D3!#$#J!!J!)EK"R#$0m!!3!!Q!
'-h`!!`!#3QN!"!`i!!)",fi+%$J",e*!%d!!"dTi!SjV$JJi!!3,)QF'%h`!!3!
)$(Jrr`+1BJB6I!!"!!N31!)H3IVr@c)m!!5`)&I*rra5360"!!T+1!+4DaJ51!(
l!J%!$``"!!&Q#L"i!Y`6D!!(!!dcH!)3!!j+H!2fE84#D3!1-M`!2%*R8FRrr#"
2-AJ+@!!BF!LLB'BN-@J!0!!@SJGQ'L&S!&S!-#&m49**5`!FF!'LB'B'-fJ!&J!
1h[`!HL"*)PpF6ckmkS41d3!!!3#3"Arrrrj!!!!#3!!!!N!!1!*!!%@#3!('3N!
#4%*!"#K#3!)IJN!$rN*!"$e#3!*FJN!"P%*!!**#3!#6JN!iFJ*!2%`#3"b!!N!
$J!*!!F!#3!,`!N!%F!*!#(!#3!J!!N2r`!*#!%!#3Iq!!N#"!!*!3J!#IrrrrJ#
3#(rrrrjrrrrqIrrrrRrrrrjrrrrqIrrrrRrrrrjrrrrqIrrrrRrrrrjrrrrqIrr
rrRrrrrjrrrrqIrrrrRrrrrjrrrrqIrrrrRrrrrjrrrrqIrrrrRrrrrjrrrrqIrr
rrRrrrrjrrrrqIrrrrRrrrrjrrrrqIrrrrJ#3"`G38N95!*!'#`T%B@PcH5"f-5i
a!*!$(%4KFeN!N!-"5801)`#3"B"'8N9'!*!&J!#3!b8!"3*H634H@ej8#Pj0ANe
H69j0ANd#AN`-)*!-!*!$13!,!c-`-!-f-$!%-6)`-!3a1$!`"$)d-$!%-cB`-!3
d1$!`"$Fb-$!%16B`-!8a16)`-!8e0cB`-!#3!`B!N!-#!*!&"`C6CA4eF-N!N!-
@&90PFQPKE#"3FQPZG'9b)%4bDACPFJ#3!`X+8(*TER3J4QPXC3!!!4B!$3#3"3J
"33!F!Ad%!Np,!*!&#3',!"d"a`3'3f&ZBf9X!*!&"J!'!"F!9iJ+4'&TFhNJGM%
Z-3#3"4i!"3!Z!&Q)#e"KCf8J8Q&ZCf8k!*!'(J"G!#d!LJB$3@aX!*!'(J#-!#i
!b!B&4R*[E6S!N!BH!-d!,J$YN!!!N!BH!2)!,J%1L!08EcS!N!BH!4!!,J%`N!!
!N!Bh!!8!4`"CL!G$Eh"TCA-k!*!'0`"I!%F!Ij!!!6%!N!Bh!*%!4`$)L!9'C@9
N1J#3"MF!c3"'!5m'#N0[ER4TER9[GA-!N!8h!6%!4`'T"JT6D'9PG#"'C@9N!!!
"i!!9!*!&i!"R!2!!V33%8f&fC3#3"C8!"`#P!(J)$N*[G(4[E5"[CL"`B@GP!*!
&"J"$!"F!P)J+4'&TFhNJGM%Z-3#3"4i!"J!Z!$1)"9"[FR3k!*!'(J!j!#i!R3B
+6@pNC@dJ8'pbG!#3"4i!T3!Z!3N'$&"bD@jdCA)J8'pbG!#3"6N!"J"*!&')#N*
KG@3J8Q&dC6S!N!8j!&S!53#0"!#3"MS!Q3"+!5b)%LK)DA3JE@8JCQpb)'e[FQA
*+3#3"9-!"3"M!(U)$daTEQ8J9'9bE@PZBA4[FJ#3"P-!J!"M!8!3!*!'D3#!!(N
"3"!!N!Cr!)!!M`&!%!#3"T8!J!#P!8!3!*!'U`#!!,X"3"!!N!CT!!B!H3"lL!T
*EQPdD@&XDATP!*!&I`!(!)m!I)J,9'p`)'pQ)("KCf8!N!DV!!J!Z`"j#!Y-C@C
d)'eKFQGTEJ#3"X8!#!$9!(N'!d088`#3"X8!T3$9!3N'#&K2ELpB6fCQ!*!&i!#
h!2!!r33'3f&ZBf9X!*!&"J#E!"F"()J58(*TER4PFL"3Eh*d)&0PG(9`!*!$a!!
)!*!&#J%r!"i"H`3#6dX!N!8+!BB!(J(#"!C$B@jMC@`!N!8+!!3!(J"HL!T%B@P
cH5"f-5ia!*!&4J!&!&S!C!B'-6!JBh"T!*!&4J"i!&S!Y!B'-6)JBh"T!*!&4J$
)!&S""!B'-68JBh"T!*!&+!!&!$`!PJB,8h4bB@PRD(3JGA!!N!BS!*X!2!%X"JK
6D@4PGf&jF`#3"3S!E!!H!-D)#cJZ05)JBRNJ-6%L!*!%AJ!$!*!&(J!m!#i!M!3
%4'pZC3#3"4i!S!!Z!2!%"&0dEh!!N!8)!!J!'!"C#!T%B@PcH5"f-5ia!*!&#!"
G!"J!k`J45@jcCA*d)%jPH(3J8fKPCA3!N!3B!$)!&!#)!Hd!!3#3"`(J!30+Ef)
!N!-Z!#J!8!%S!DJ!!3#3#2!3'90PFQPKE#"3Eh*d)%0[EQCTCh9bBA4TEfi!N!-
B!"m!&!"i!HJ!!3#3"`(J!!06G'`!N!-H!$!!-`"N!5`!!Im!N!IIr`P1CAKd)&"
KCf8!N!0i!!2p!J"#!%J!N!3#eJ*N!*!%!YB#C!)!"5J$r!!"r3)!3J")!*!%!YB
#C!#3$J)!!!%R$`!"!!%!N$9i!!2p!J"#!%J!N!3#eJ*N!*!%!YB#C!)!"5J$r!!
"r3)!3J")!*!%!YB#C!#3$J)!!!%R$`!"!!%!N$8F!%)!5!!#!J%)!J#3!`8"!J8
#"!!!rJ!!!J%$!J!!!3#3!b@i!!!NZ!!!!U3!!KmJ!AS!N!-F!FB!$9""3dX!N!0
b8%4&4J!#!(j%8PC5!*!$SNP$6L-!N!1Z4P*&4J#3!lT%BA0C!*!$aN*14%`!N!2
58e45)`!"!0j)49K"!*!$pP088L!!!J%#4%P86!!$!5C%6%p(!!-"9P"548-!!3'
'4R4KBJ!!!Cl`!*!$)!#3"!+3!"3!N!2")!!%H!!#Mq!!"!$()!!,A!!#MqJ!"3$
2)!!8UJ!#Mq6J!!#S)!!8b!!#N!")!)!!"3!!(3S!!Sq`!)$rr`!!(Ji!!Sr)!!$
rr`!!(KN!!Sr%!)$rr`!!(LJ!N!6`%!!+!!!H5!!#N!"%m"%!)J!!(R%!!T!!"1!
!!$-!!"kZ!*!%m!3!4!!!(VJ!!T!!!2!&!&%!!"l$!!+2r1!"rrm!!"lG!!+2q1!
"rrm!!"lX!!+3!"c`%!"F!!!J"J!#N!!Bi!$rr`!!)HS!!T!!*0rr!(3!!#+b!!+
3!#MJ!Irr!!!M&!#3"2!3!)F!!#-`!*!%i!$rr`!!)f)!N!6Ir`#D!!!MIJ#3"l!
!!#1J!!+2l!!"rrm!!#3F!!+2e1!!rrm!!#5B!!+3!#!%6@&TEJ4*3diM&e"bD@j
dCA)JBfpZG(*[E#"cG(*TEQGc%%*KG@3JFQ&dC5"ZB@ePFbi38(*TER4PFL"6CA4
dD@jRF`a5D@GSG#"#GA4dEfi+6'PcG#"XB@*PE"G3FQPZG'9b)%4TB@a[Cb"8C@e
`E'&dC4*1CAKd)&"KCf8J9'9YF'aKG'858(*TER4PFL"$EfjQD@FJ3Qpi$8jPH(3
J8'&RC5"#EhJ(,PK3FQPZG"")B@jNFb"[CQBX)%*[HQmK"84bB@Cd"d4TB@a[Ch-
18(*3D@0'D@aP)&0dG@,)N!!:
---