summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Jansen <jack.jansen@cwi.nl>1996-03-18 14:21:15 (GMT)
committerJack Jansen <jack.jansen@cwi.nl>1996-03-18 14:21:15 (GMT)
commitbb653772f5a74b18ac34f005b6b5bb8295e81eb3 (patch)
tree168575a910fcd3b71cfb9b52a4a0f56ee540e2a6
parent0f7af3f79544a5859bfd4aa3ed4e31eb6d439952 (diff)
downloadcpython-bb653772f5a74b18ac34f005b6b5bb8295e81eb3.zip
cpython-bb653772f5a74b18ac34f005b6b5bb8295e81eb3.tar.gz
cpython-bb653772f5a74b18ac34f005b6b5bb8295e81eb3.tar.bz2
Oops... I Inadvertently lost their cvs files...
-rw-r--r--Mac/Lib/test/AEservertest.py219
-rw-r--r--Mac/Lib/test/AEservertest.rsrc.hqx514
-rw-r--r--Mac/Lib/test/tae.py112
-rw-r--r--Mac/Lib/test/tell.py63
4 files changed, 908 insertions, 0 deletions
diff --git a/Mac/Lib/test/AEservertest.py b/Mac/Lib/test/AEservertest.py
new file mode 100644
index 0000000..a372bee
--- /dev/null
+++ b/Mac/Lib/test/AEservertest.py
@@ -0,0 +1,219 @@
+"""AEservertest - Test AppleEvent server interface
+
+(adapted from Guido's 'echo' program).
+
+Build an applet from this source, and include the aete resource that you
+want to test. Use the AEservertest script to try things.
+"""
+
+import addpack
+addpack.addpack('Tools')
+addpack.addpack('bgen')
+addpack.addpack('ae')
+addpack.addpack('evt')
+#addpack.addpack('menu')
+addpack.addpack('win')
+
+import sys
+sys.stdout = sys.stderr
+import traceback
+import MacOS
+import AE
+from AppleEvents import *
+import Evt
+from Events import *
+import Menu
+import Dlg
+import Win
+from Windows import *
+import Qd
+import macfs
+
+import aetools
+import EasyDialogs
+
+kHighLevelEvent = 23 # Not defined anywhere for Python yet?
+
+Quit='Quit'
+
+def mymessage(str):
+ err = AE.AEInteractWithUser(kAEDefaultTimeout)
+ if err:
+ print str
+ EasyDialogs.Message(str)
+
+def myaskstring(str, default=''):
+ err = AE.AEInteractWithUser(kAEDefaultTimeout)
+ if err:
+ return default
+ return EasyDialogs.AskString(str, default)
+
+def main():
+ echo = EchoServer()
+ yield = MacOS.EnableAppswitch(-1) # Disable Python's own "event handling"
+ try:
+ try:
+ echo.mainloop(everyEvent, 0)
+ except Quit:
+ pass
+ finally:
+ MacOS.EnableAppswitch(yield) # Let Python have a go at events
+ echo.close()
+
+
+class EchoServer:
+
+ suites = ['aevt', 'core', 'reqd']
+
+ def __init__(self):
+ self.active = 0
+ #
+ # Install the handlers
+ #
+ for suite in self.suites:
+ AE.AEInstallEventHandler(suite, typeWildCard, self.aehandler)
+ print (suite, typeWildCard, self.aehandler)
+ self.active = 1
+ #
+ # Setup the apple menu and file/quit
+ #
+ self.appleid = 1
+ self.fileid = 2
+
+ Menu.ClearMenuBar()
+ self.applemenu = applemenu = Menu.NewMenu(self.appleid, "\024")
+ applemenu.AppendMenu("All about echo...;(-")
+ applemenu.AppendResMenu('DRVR')
+ applemenu.InsertMenu(0)
+
+ self.filemenu = Menu.NewMenu(self.fileid, 'File')
+ self.filemenu.AppendMenu("Quit/Q")
+ self.filemenu.InsertMenu(0)
+
+ Menu.DrawMenuBar()
+ #
+ # Set interaction allowed (for the return values)
+ #
+ AE.AESetInteractionAllowed(kAEInteractWithAll)
+
+ def __del__(self):
+ self.close()
+
+ def close(self):
+ if self.active:
+ self.active = 0
+ for suite in self.suites:
+ AE.AERemoveEventHandler(suite, typeWildCard)
+
+ def mainloop(self, mask = everyEvent, timeout = 60*60):
+ while 1:
+ self.dooneevent(mask, timeout)
+
+ def dooneevent(self, mask = everyEvent, timeout = 60*60):
+ got, event = Evt.WaitNextEvent(mask, timeout)
+ if got:
+ self.lowlevelhandler(event)
+
+ def lowlevelhandler(self, event):
+ what, message, when, where, modifiers = event
+ h, v = where
+ if what == kHighLevelEvent:
+ msg = "High Level Event: %s %s" % \
+ (`code(message)`, `code(h | (v<<16))`)
+ self.handled_by_us = 0
+ try:
+ AE.AEProcessAppleEvent(event)
+ except AE.Error, err:
+ mymessage(msg + "\015AEProcessAppleEvent error: %s" % str(err))
+ traceback.print_exc()
+ else:
+ if self.handled_by_us == 0:
+ print msg, "Handled by AE, somehow"
+ else:
+ print msg, 'Handled by us.'
+ elif what == keyDown:
+ c = chr(message & charCodeMask)
+ if modifiers & cmdKey:
+ if c == '.':
+ raise KeyboardInterrupt, "Command-period"
+ else:
+ self.menuhit(Menu.MenuKey(message&charCodeMask))
+ ##MacOS.HandleEvent(event)
+ elif what == mouseDown:
+ partcode, window = Win.FindWindow(where)
+ if partcode == inMenuBar:
+ result = Menu.MenuSelect(where)
+ self.menuhit(result)
+ elif what <> autoKey:
+ print "Event:", (eventname(what), message, when, (h, v), modifiers)
+## MacOS.HandleEvent(event)
+
+ def menuhit(self, result):
+ id = (result>>16) & 0xffff # Hi word
+ item = result & 0xffff # Lo word
+ if id == self.appleid:
+ if item == 1:
+ mymessage("Echo -- echo AppleEvents")
+ elif item > 1:
+ name = self.applemenu.GetItem(item)
+ Qd.OpenDeskAcc(name)
+ elif id == self.fileid:
+ if item == 1:
+ raise Quit
+
+ def aehandler(self, request, reply):
+ print "Apple Event!"
+ self.handled_by_us = 1
+ parameters, attributes = aetools.unpackevent(request)
+ print "class =", `attributes['evcl'].type`,
+ print "id =", `attributes['evid'].type`
+ print "Parameters:"
+ keys = parameters.keys()
+ keys.sort()
+ for key in keys:
+ print "%s: %.150s" % (`key`, `parameters[key]`)
+ print " :", str(parameters[key])
+ print "Attributes:"
+ keys = attributes.keys()
+ keys.sort()
+ for key in keys:
+ print "%s: %.150s" % (`key`, `attributes[key]`)
+ parameters['----'] = self.askreplyvalue()
+ aetools.packevent(reply, parameters)
+
+ def askreplyvalue(self):
+ while 1:
+ str = myaskstring('Reply value to send (python-style)', 'None')
+ try:
+ rv = eval(str)
+ break
+ except:
+ pass
+ return rv
+
+_eventnames = {
+ keyDown: 'keyDown',
+ autoKey: 'autoKey',
+ mouseDown: 'mouseDown',
+ mouseUp: 'mouseUp',
+ updateEvt: 'updateEvt',
+ diskEvt: 'diskEvt',
+ activateEvt: 'activateEvt',
+ osEvt: 'osEvt',
+}
+
+def eventname(what):
+ if _eventnames.has_key(what): return _eventnames[what]
+ else: return `what`
+
+def code(x):
+ "Convert a long int to the 4-character code it really is"
+ s = ''
+ for i in range(4):
+ x, c = divmod(x, 256)
+ s = chr(c) + s
+ return s
+
+
+if __name__ == '__main__':
+ main()
diff --git a/Mac/Lib/test/AEservertest.rsrc.hqx b/Mac/Lib/test/AEservertest.rsrc.hqx
new file mode 100644
index 0000000..dd0685c
--- /dev/null
+++ b/Mac/Lib/test/AEservertest.rsrc.hqx
@@ -0,0 +1,514 @@
+(This file must be converted with BinHex 4.0)
+
+:%8&&Ff9bGQ9bG'9cG#jbFh*M!(*cFQ058d9%!3#3"f2$GSF!N!3"!!!!BVS!!''
+k!!!"#6B8)&3JD!!8)&"p%E"S%3!k!@FQ%Lm-6VS#$!`k!&Tj%8&&Ff9bGQ9bG'9
+cG#jbFh*M!J!!!$q3#!#3"$q3#!#3'+a8lVX!N!CM`rm4`+KT!4e!%Irc%h!!%#l
+rmlh5%@B386Dq9@X"!8*%[D'q9@X"!6"4-J&R(N39$!!!('85F!!3,N-9$!!!(f)
+'F!&J!!%"!LaD9#dZ4,d"!"Xm!@B`*e8q'NU!)&-#+!#r!#iL!1d*!J%!3)-Sfc3
+6UGF[$%kk!3P+CfX"!+CA3cS!!!%!N")#!!!!!`!!!Irq!!($!J!#)J)!""!#!!J
+J!L!33#FJ)-!R)((J!L"l-%q!4KK2N!"!$%q3!#!%(p!3""r!#!`I`!`B0@!H-$9
+J1@!ri$(!!J!6J!)!$`!#!!3!!J!%!3)!"!-#!!IrrJ!!!`!!!!%!N"-#!!!!!`!
+!!Irq!!($!J!$iJ)!"r!#!!rJ!L!I`#FJ2m!R)(rJ!L"rm%q!IrK2N!"rr%q3!$r
+m(p!Ir"r!$r`I`!ri2q!Im$rJ2q!ri$r!!J!IJ!)!$`!#!!3!!J!%!3)!"!-#!!I
+rrJ!!!`!!!!%!N!8+81!!2S!!!"p!!*!%"d&38%`!N!BF8&P8C`!!!!&'8N9'!*!
+&J%P$6L-!N!3",!!!!%!)J#P!!L!%%#i)0!3Z!Qi"2`)I"#U)2j!!!L!"3!#!!!!
+)J#R!!q!(m#ri2r`rrRrr2riIr$ri2r!$i!(!!)!!N!3%!*#2r`#3(rrr!*!Arj!
+3!*!3rrrr!*!%rrm!N!Er!*!2r`!!prm!!!$r!*!(r`#3$[m!!#SUprm!N!Vr!*!
+0r`!!+LVhr`#3#rm!!!#`!*!)r`!!+LVhr`#3#,!!!,#`X!!!X!#3"rm!!#SUprr
+r!*!)X!!!X,#`!!#`!*!'rrrr!#VhrrVkr`#3#l!!!!#`!*!'rrVkrbVrqLSUq[m
+!N!@`!!#`N!8!N!MrprFUrrSUN!6kr`#3",!!!,#3"3!!X!#3"Irf!#U3"J!Uq[m
+!!!#`!!#`N!8!!,!!N!Er!!!UN!3!+J!Ur`#3"E#3"`#`!*!(r`!!+LS!+J!U+[m
+!N!@`N!F!N!Vr!!!!+J!U+[Vr!*!&X*!(!*!+rrm!!!!U+[Vr!*!&X,!&X!@`"E#
+`!*!)rrVkr`!U+[Vr!*!'X,!&X!@`"E#`!*!(rrVk+LVr+[Vr!*!(X*!*!*!(rrS
+U+J$rq[m!N!cr!*!-r`!!q[rr!*!0r`#3$Iq3"!#3$[m!N!lr!*!3r`#3$[m!N!R
+r!*!'r`#3$[m!N!Mrr`#3"[m!N!lrN")!N"Irr`#3(rm!N")#!*")m!#3$rm!N!X
+2rj!(m!#3"`rr!!$r!!!!m!#3"r!-m!$`!!!!m!#3"Jm!c-m!N!A`!*!'m!c-m!#
+3"I!!8!!!!!m!c-m!N!43"98!8!!!!2!-c2m!N!43"98!8!!!$rm-cph`!*!&8!"
+3!!!2hIcpc0m!!!8!9993!!!!$mc2h-c0m!!&!&998!8!!!r!c-c-$0m!"3"999!
+&!!!!m!c-`-$2!!!&9999"3!!!!m!c!`-c`!!"99993#3"I!!`-cI!!!&9999!*!
+&r`!-cI!!!&89&493!!!!$ph`c0m!!!"9&4898!!!!2hFcmh`!!!!9C!%8!!!!2h
+-$pm!N!E`!*!&$`$Im!#3"[!!N!Err`#3"r!!N!B2!*!)m!#3"Jm!N!32!!!!m!#
+3"Jm!N!6r!!!!m!#3"JrrN!M`!*!,r`#3$`m!N!S"!*!&r`!!!2m!N!Rr!2m!!2m
+!r`#3$2m!+`$r!*!+r`!V+bX!r`#3"[m!X,#`+j!%!2m!N!Arr`#`qINVN!3!r`#
+3"2m!X,#`+j!'!2m!!2rr+l#`X2NVN!Ir!!$rX*!&q5Z3"2Rr!*!%X*!&q5XV+rR
+r!*!%X!@`"E!&X2NVqIm!N!@`N!IjqIm!N!VrqIRjr`#3$2rjr`#3$[m!N"U!!!$
+`!2!!N!6`m!m2!*!'m-$`!*!%$`c-$`!!!2"9A-c!m!!!r`AGc-`2!!$`99c-c-$
+`$ra9AFc-c-m!p999h-c0m!!&99AFc0m!!&&489h0m!!!9999AGm!N!AphI!!N!8
+2h`#3"r!!N!eBS!#3!!#3"3-18Q9aG@PbC@3J8h9TG'8V9'9bEA-JG'KKG#"PGQ9
+bH5"KF("XD@0KG'P[EL"cD'peE'3JFh9`F'pbG!"bCA&N!!%!!3!%"'p`C@iF6h"
+PEL"dD'8JFh"PBfPQD@9N)'pLDQ9MG#Kc+@&PGR4[C'pMER9XE!!!J!"KE'Pc&fa
+TFh3JEfBJEf*UC@0dFb"dEb"[F'9Z8!!!!!9`FQPZG"e3FQPZG#"dD'8JFh"PBfP
+QD@9N)'pLDQ9MG#Kc+@&PGR4`C'pMER9XE!!!J!"KE'Pc''aTFh3JEfBJEf*UC@0
+dFb"dEb"`FQPZG!"!!!!""@PdC@ecCR0PE'aTFh4T4%mJ6Np8)&9646SJF(*[GQP
+NC@3JCQpb)'*KBfYhBA*NFb"MEfe`BA4TBQPXDA4j)(GTG'JJEfaN)'9fC@jd)(0
+eDA4P,L!J9fPXE#"LC5"bC@e[GQ9N)'PZ)'CeG(9bC5"'D@jNCA*cJ!!%FA9TG#T
+4G@Pd)(4SC5"'D@jNCA)J+'4TFQ9MG#"`BA*KE@9dCA)JD@GZEh*PC#PKCACdFA9
+TG'jeE'`!!)!!ER9XE"aZEb"NDA*PBh3JF'&bB@ePG'9b)(*PFA9TFQ9N!*!!!!!
+!!h*eEM"6C@jd)(4[)'&Z)'&`F'aTBf&dD@pZ)(GSC@iJDA3JDA-JC'peBQaP,@0
+XD@0VC@3!B@9fG'pKF("ZG@aX!!#!!'jeE'`FEQmJC'PbC@0d)("KFQ&YCA4PFL"
+bCA&eDA*PC!#3!!#3#3j6G'&ZC'&bC#"6G@PdC5*$EfeYEfiJG'9bEA-JCQpb)'e
+[Fh3JBA"`E'PMBA4TEfjcBfpbC3!"!!%!%3TME'&cFb"TEQC[*8GPG#"TEQC[FQe
+KG'P[EL"KBQpeG#"KEL"[BQTPBh3JBfaKFh-!BfpbCA&[BQTRBfaT1'%JFQ9MEh*
+N)'0[ER4KD@jTEQFJG'KP)'pLDQ9MG09c)("bEh"PFR4TCA-JB@jN)'9XC@ePER4
+c!!!!G(P`C69dD'8JEf*UC@0d)'0XBA0c)'&LEh9d)(GSD@0S)'PZCQpbE@&dD@p
+Z)'Pc)(*PFA9PFh4PC)!!!!%#D@i!Gh*MC'PZG'a$G'KP)'KeE@&Z)'aKEQGeB@G
+P)'&ZC#"cBh*TF(3JFhPcG'9Y)'PZ)(GSD@0S)(4[)(*PG(9bEL"TEQC[FQeKG'P
+[ES!!"@0XEh0P$d0XEh0P)'&Z)'pLDQ9MG'0[FQ9ME'pcER9XE!!!J!"[BQSJ%h4
+SC5"[BQTPBh3JG'mJBfa[Ff83!!!#"R0KGQPZC`"cBAC[Ff&fEcKcF'9MD@CTCA-
+JGfKPG'KPFL"MD'&ZCf9c)(0SEh9XC#"LC5"cBACPC#"LC@C[FQ8JBfa[FfPZC`#
+J!!PcBACTEQFJD@jVCQPXB@aTFb4dD'8JCQPXC5"TEL"hD'PMD#"dEb"cBACP)(4
+SC5"[BQTPBh3!J!!&BfpeER4%8Q9dGA*Z)(4SC5"ZG@eLCA)JEfBJC@aPE@9ZG(-
+JEfBJB5"`BA*dD@0eE'&b)'0XBA0c)(GTG'KTEL"KEL"[BQTPBh3!BfpbC@0ZG'9
+XEfjR&R4SC5"ZG@eLCA)JEfBJC@aPE@9ZG(-!!!"[BQSJ+h4SC5"[BQTPBh3JGfK
+[Ff8JC@aPE@9ZG(-JBA*P)(4[)'*P)'0[G@jdC@3!!!!""'9KBfJ!DfpME(4jF'8
+RG'KP)'0XBA0c)'pQ)(4SC5"PE'9YC@jdFb"dEb"LC5"MEh9ZG'9N!!!*C'&dB5"
+cDATP*9*PG(9bEL"dD'8JFfPkC5"TEL"LHA4PFb"[CL"KEL"[BQTPBh4MEh*PC(0
+THQa[EQFIG'KP)(0THQ8JEfBJG'KP)'pLDQ9MG#"TEL"LHA4PF`!!Ef*U)#adD'8
+JEf*UC@0d)(GSEh0P)'4KG'%JFfPkC5"TFb"dEb"LC5"bCA4eFQjPC!#3"!%#BA-
+!FR4jF(4jF'8ZG'KP)'4KG'%JG(P`C5"QEh)JGfKTBfJJG'KP)(0THQ8JDA-JBf&
+XBh9XBA4PC!#!!!CNC@aPG'8J4'9XCA4P)'&Z)'9XC@ePER3JCR*[E5"KEL"[BQT
+PBh4MEh*PC'9XEfjeE'`!!)!!Ef*U)"9dD'8JC@aPE@9ZG#"dEb"NC@aPG'83!!!
+!#@4eF'aTBf&dC40%GA"XD@0KG'8JEf*UC@0d+(-TBfpbC@0XEfj[BQSJ'h4[)(4
+SC5"NGA"XD@0KG'9N)'pLDQ9MG#Kc+3!!Ef*U)"TdD'8JEf*UC@0d+(-T)(4[)'4
+eF'aTBf&dC3!3!!!%!R4[!'PZFfKTER0X)R4SC5"ZCAFJE'pMBA4TEfiJCQpb)(4
+SC5"[BQTPBh3SFbN!J!!*FQ9`E'&MD@jRB@abF'*[EfaZ8h"PBfPQD@9c)(GSCA4
+SCA)JEh)JEQpd)(4[)(*PF'aKBf8JDA4PEA-JD@iJG'KP)'4PFh4TEQ&dD@pZ)(4
+SBA3JD'&fC5"dD'8JFf&YC5"ZB@eP)'&c)'PdC@ec)'*PD@jR)'4eF'aTBf&dC@3
+!S!!0F'pcDA4TEfjPC#"KG'efF'aXDA0d88GTGQ9c)'%JE'PcG#!SD@iJE'pMB@`
+JGfPZC'ph)'0[Eh*ND@jKG'9c+5"[CL"`Eh0TG'P[ER-JCQpb)(4SC5"NCA0dD@j
+KG'P[EL"TG'9YFk!!"@PdC@ecCR0PE'aTFh4T4%mJ6Np8)&9646SJF(*[GQPNC@3
+JCQpb)'*KBfYhBA*NFb"MEfe`BA4TBQPXDA4j)(GTG'JJEfaN)'9fC@jd)(0eDA4
+P,L!J9fPXE#"LC5"bC@e[GQ9N)'PZ)'CeG(9bC5"'D@jNCA*cJ!!+CACPER3JD@j
+QEc&(CA3JD@jQEh*YBA4TEfiJB@*[GA3JG'KP)%&`F'aP)'9fC@jdFb"TEL"K)(0
+eDA4P!'0[FQ9RG'9TCACTEM0K)(*PBfpbC#"MEfjdB@PZD@jR)(4SC5"PGQ9ZG(-
+JB@jN)(4SC@Pb)("KFQ&YCA4PFR0!!(4jF'9$G'KP)'9fC@jd)'0XBA0c)'pQ)(4
+SC5""F("XC5"PGQ9ZG(-JCQpb)(GSD@0S)(4[)(*PG(9bEL"TEQC[FQeKG'P[EJ!
+!!!%#D@i!Gh*MC'PZG'a$G'KP)'KeE@&Z)'aKEQGeB@GP)'&ZC#"cBh*TF(3JFhP
+cG'9Y)'PZ)(GSD@0S)(4[)(*PG(9bEL"TEQC[FQeKG'P[ES!!"Q9iDA0dFaT@CA*
+TCRNJD@BJB@iJEf*UC@0d)'9iDA0dFf0[FQ9NEf9iBQp[E"pdFR9P)'PQ)'Pd)'9
+iDA0dFb`JCQ&XFf8JD@BJEQpd!!"[BQSJ&R4SC5"[BQTPBh3JD@iJFA9PFh4TEfi
+!N!8$Cf9d'NGPG#"dD'8JC'&dB5"QEh)JB@iJEf*UC@0d!'0[FQ9RCA4N+T!%'(4
+SC5"NBA4K)'CbEfdJG'KP)'pLDQ9MG!!!!'pLDL!RG'KP)'pLDQ9MG#"hD'pcC5"
+NBA4K)'Pc)(4[)'*P)(*PG(9bEQ9N!!!!!3*KF`"bG(P`G(P`C6CdD'8JC'9cDA*
+PC#"dHA"PFb"QEh)JG'KP)'4KG'%X)'PZ)'pbC'9b)'pQ)("bC@CPFQ9ZBf8!`!!
+%E@&VC4*0B@YP)'%JEQ9h)'9XC@ePER4MEh*PBh*PE'pLDL!8G'mJG'KP)'jPGb"
+[BQTPBh3SFbN!!!"ZG@aX!!#3!!!!"30ZCAGVEf0XG(P`C4adD'8JBfaKFh-JEfB
+JG'KP)'jPGb"PE'9YC@jd!!!!!Q&d!'PZFfKTER0X+h4SC5"XEf0KG'P[EL"KG#"
+hD'PMD#"dEb"TER0PFR3JG'KP)'9XC@ePER3!!!*dE`"dEb!JEf*U)%4hD'9Z)'0
+bC@&dD@jR)'&Z)'&XD@&c)'CTE'8X)(4SC5"[FQPRD@jKE#"TG'9Y)(4[)'0bC@&
+dC5"KEL"KE'PKFb"dE`#!!!PhDA4S)'4KG'&NBA4K+T!%)(4SC5"TEQPdD@&X)'4
+KG'%JCQpb)(4SC5"PE'9YC@jd!)!!$hGTG'JJF(*[F'9bG'PPFh"bC(4bC@0[0(4
+SC5"TEQPdD@&X)(CKE(9PFb"QEh)JG'KP)("bEh"PFR4TCA-JEfBJG'KP)'9XC@e
+PER3!J!!%E@pfC5"0EhCP)'pLDQ9MG#Kc+5"dEb"K)'jPGb"XEf0KG'P[EQ0[FQ9
+YEhCPEf*U)#YdEb"dD'8JEf*UC@0d+(-T)'&QG'9b)(4SCANJD'&fC5"LC@9Z)'e
+[GQ9N!!"[BQSJ&A4SC5"[BQTPBh3SFbNJG'mJE@pfC4!!!!-#G'm!D@jcD'PZFf`
+LG'KP)'jPGb"XEf0KG'P[EL"QEh)JG'KP)'pLDQ9MG#Kc+3!!!!PbCA"XB@0TEQG
+KE(*`BQp[E'P6F'9MD@CTCA-JGfKPG'KPFL"[FL"ZEh3JG'mJFQ9`E'&MC5"TG'9
+YFb"TEL"dD'8JC'9cG'PZBA4TEfiJG'KKG#"SBACP)(4SC5"cB@eP)'jKE@8JBA-
+JDA4PEA-JBQ9TEQFJE@pfC@5J!!e`Eh0TG'P[EQ9N)'&dEAC`E'aTFh444fPfCA-
+JB5"XDA0d)#KTEL"XEf0KE#"hD@jNEhFJBfp[FQ4TEQ&dCA-T)'pQ)("[FfPdD@p
+ZFb"QEh)JG'KP)'4PFh4TEQ&dD@pZ)'PdC@ecS!!%Eh"PEKa2F'9Z)(4SC5"cF'9
+MD@CTC@3JEf*UC@0d+(-TB@9fG'pNEf0ZG@aX!!#!!'pLDL!AE'PcG#"[CL"[BQT
+PBh4c)(4[)'p`C@i3!!!#"A9cD@jRGA0TEQpLDL!XG'KP)'&`F'aTBf&dD@pZ)'C
+TE'8JG'mJEh"PEL"dD'8JEf*UC@0d)(GTG'J!J!!&DA4PEA0QFf9XE'PcG'P%6b"
+16e3J990&1L"`FQpfD@4PC#"QEh)JBQ&MDhGKFQ4c)'0[EA"KG'PLD@aTG(NJGfP
+dD#"[E'3JCACPER3JFh9TG'8Z)#"AD@aX)'*P)(*PE@pfC@3JD@iJCR9dGA*P)%C
+TEQ4PFR1!!!9`FQPZG"e3FQPZG#"dD'8JFh"PBfPQD@9N)'pLDQ9MG#Kc+@&PGR4
+`C'pMER9XE!!!J!"[BQSJ''aTFh3JEfBJEf*UC@0dFb"dEb"`FQPZG!#3"!%&DA4
+PEA0QFf9XE'PcG'P%6b"16e3J990&1L"`FQpfD@4PC#"QEh)JBQ&MDhGKFQ4c)'0
+[EA"KG'PLD@aTG(NJGfPdD#"[E'3JCACPER3JFh9TG'8Z)#"AD@aX)'*P)(*PE@p
+fC@3JD@iJCR9dGA*P)%CTEQ4PFR1!!!4aG@Pd+P&eDA3JG'KP)%CTEQ4PFL!SC'P
+bC@0d)("KFQ&YCA4PFL"TCfj[FQ9N+@&PGR4aG@PdER9XE!!!J!"ZG@aX!!#3!!!
+!!3CcBACTEQF!Ff&fEh0KGQp-Fh"PBfPQD@9c)(GSCA4SCA)JG'mJFf&fC5"MGA*
+bC@jdE(NJEh"PEL"NEf0eE@9ZG(-J+'j[G#"cGA"`Eh*dC@3JBRNJ4QPZC'9b+3#
+J!!4cBACP+&0KGQ8JB@iJEf*UC@0d)#K1Eh3JFh9`F'pbG'9N)'*j)%CTEQ4PFLP
+MEh*PFf&fC@jeE'`!!)!!Ef*U)"*dD'8JEf*UC@0d)(4[)(0KGQ8!%!!!!J*TEJ"
+VCQPXB@aTFcjdD'8JCQPXC5"TEL"hD'PMD#"dEb"cBACP)(4SC5"[BQTPBh3J+'j
+[G#"cGA"`Eh*dC@3JBRNJ4QPZC'9b+3#!!!*KF`"QE(4`G(P`C9&dD'8JCQPXC5"
+dHA"P)'pQ)(4SC5"NEf0eE@9ZG#"TEL"hD'PMD#"dEb"cBACP)(4SC5"NBA4K)#K
+ZEh3JFh9`F'pbG'9N)'*j)%CTEQ4PFLQ!!!0cCA388f9d)'&Z)'pLDQ9MG#Gc)'4
+KG'%!BfpbCA0PG'4ZG@aX!!#!!'pLDL!8G'KP)'pLDQ9MG#"dEb"MD'&ZCf8!%!!
+!!3*dE`"NBA4K+T!%$A4SC5"ZCAFJGQ&XG@8!!!TcG@PdC5"TEQC[*%GPG#"TEQC
+[FQeKG'P[EL"KBQpeG#"PGQ9ZG#"cG@PdC5Kc+@0[FQ9RG(0TFh9TEM&K)(*PBfp
+bC#"MEfjdB@PZD@jR)(4SC5"cG@PdCA-JB@jN)(4SC@Pb)(CPFR0TEfjc3!"dHA"
+P+A4SC5"cG@PdC5"QEh)JGfKTBfJJG'mJFQ9dGA*Z)'PZCQpbE@&dD@pZ!!!!!3*
+TEJ"hFQ0ND@jdE%0dD'8JD(9YB@iJE'&ZCh9KCf8JB@jN)(0MFQP`G#"cHA0dC@d
+JD@iJGfKTBfJJG'mJFQ9dGA*Z)'PZCQpbE@&dD@pZJ!#3"`a'D@jNCA)J8h9TG'8
+K6f*UC@0dFb"KEQ3J4ACPER4c)'C[FL"dD'8J4QPZC'9b!'CZC()!!3!"!!d)Bfa
+PB@iJGA!H3A*bB@jRC5"TG'9YFb"TEL"hD@jNEhFJEQPMC@ajCQjNFQCME(9ZG@a
+X!!#!!'pLDL!@G'KP)(GTEQ4[Gb"dEb"ME'9KEL"eF!#3"!%#BRN!BRNJ)(4jF'8
+UG'KP)'pbC'9b)'PZ)(GSD@0S)(4[)'0XC@&Z)(9`)(4SC5"[BQTPBh4c!)!!#'0
+[EA"eG'9b)&4PFh3JBA4dFQPLGA4PFb"[CL"dD'Pc)'0[EA"eG'9bCQjNFQGcG'a
+XEfjR&h4SC5"bCA0eE(3JEfBJG'KP)(&eCA*jJ!"dHA"P&A4SC5"KG(4bD@*eG'8
+JG'mJG'9cG!!!!!%$D'&cD'&c)'a[EQFHG'9cG#"cF'9MD@CTBb"LDA4c)'pQ)(*
+PFh"[ER0P!)!!"@9UC@0d889UC@0d)(4SC5"cF'9MD@CTC@3JC'PcDbKc+5`JEh)
+JCACPFRNJC@TPBh4KBQaP)'4TFfXJD@BJEQmJF'&bB@ePG'9b)'Pc)(0`C@0TCQP
+PC'CZC(*PDQ0dER9XE!!!J!"[BQSJ%R4SC5"TG'9YFb"dEb"PDQ9MG!#!!!!!"@9
+YF(4j$d9YF(4j)(4SC5"dFQ&cD'CZC(*PEA"dER9XE!!!J!"[BQSJ-0*PEA"dHG-
+JB@jN)0*PEA"dH5"dFQ&cD0-JBQpdD#"NEb"dD'8JFf&YC5"dD'PZC`#3!!!!!!9
+PFQ&cC4Y&FQ&cC5"dD'8JFh"PBfPQD@9N)'4TFfXSFbPQEQ4bCQ9bB@jeE'`!!)!
+!Ef*U)"*dD'8JDA4PEA-JG'mJCA*KFf8!N!8)F(9d)'&hBANJ8(9d)'&hBANJG'K
+P)(0`C@0TCQPPC#"[BQTPBh3SFbPQEQ4bF(4hH@pLDL!XG'KP)'pLDQ9MG#"`GA3
+JBAGKH5"TEL"TG(-JF(9d,@&hBANJE'pMBA4TEfi!!!"[BQSJ&A4SC5"TG'9YFb"
+dEb"`GA3JBAGKH3!!!!%&DA4PEA0QFf9XE'PcG'P%6b"16e3J990&1L"`FQpfD@4
+PC#"QEh)JBQ&MDhGKFQ4c)'0[EA"KG'PLD@aTG(NJGfPdD#"[E'3JCACPER3JFh9
+TG'8Z)#"AD@aX)'*P)(*PE@pfC@3JD@iJCR9dGA*P)%CTEQ4PFR1!!!GbCA0dBA*
+d&9*PFh4KFR3JG'KP)%eKBfPZG'pcD'CZC(*bCA0dER9XE!!!J!"ZG@aX!!#3!!!
+!!!CbCACPB@`R3R*TEQFJG'KP)(0`C@0TCQPPC#"[BQTPBh3SFbNJD@jdEb"fD@9
+h!'eTFf0YGQPcER9XE!!!J!"[BQSJ(A4SC5"[BQTPBh3JG'mJBQ8JE@&NC5"fDA0
+TBQaP%!!!!!CcC@aPBh3H8f9XC@0d)(4SC5"cF'9MD@CTC@3JEf*UC@0d+(-TE@P
+cBh0XBh4ZG@aX!!#!!'pLDL!8G'KP)'pLDQ9MG#"dEb"cC@aPBh3!%!!!!!PcD(9
+d)'4[GfiA8fKeG#"%EhGZ)(4SC5"0B@0TER4[FfKQEQ4bFfKeG'jeE'`!!)!!ER9
+XE!!!N!!!!!!&FfaPCA!68faPCA!JG'KP)%eKBfPZG'pcD'CZC(*cEQpkER9XE!!
+!J!"ZG@aX!!#3!!!!!!4cEh*d,e*PG(9bEL"dD'8JFh"PBfPQD@9N)'pLDQ9MG#K
+c+5"TEL"K)(0[FR4PC#"XDA0d!%4"9%&66e*8Ef*U)#0dD'8JFfpbG'9N)'PdC@e
+c)'PZ)(4SC@Pb)'jPGb"[FQ4PFS!!Ef*U)#"K)'aTFh3JEfBJCQPZC'9b)'pLDQ9
+MG(-JG'mJFfpbG!#3"!%#BRN!BRNJ)(4jF'8KG'KP)("bEh"PFR4j)(4[)(0[FR3
+JG'KP)'PdC@ec)'*j!!!'GA"NBA4P8e9`C'&dC5"dD'8JC'PcF'aKH5"[CL"dD'8
+JFh"PBfPQD@9N)'pLDQ9MG#Kc+5"dEb"YBA4MD#"dD'9TFL"[ELeNDA0V)(*PF(*
+PFf9ZG'&dD@pZ!'CZC(*QGA"NER9XE!!!J!"[BQSJ%R4SC5"TG'9Y)(4[)(9`C'&
+dC3#3"MS4B@0MCA0cEh*j)("bEf0PFh0`Bf4K,8%JF(*[Bf9cFb"XBA9ZBfKPC#"
+QFQpY)'%JC'9cDb"KBf0PFh0[FRNJCQPXC3!"%f4PFfXJB@0MCA0cEh*j)'CTE'9
+NB@CTEf*U)$adD'8JC'9cDb"KBf0PFh0[FRNJCQPXC5"QFQpY)(GSD@0S)(4SDA-
+JF(*[Bf9cFb"hBA-JE'&eEQ0SC@3!N!86B@0MCA0cEh*j)("bEf0PFh0PFh"MC'%
+ACACPFRNJB@0MCA0cEh*j)("bEf0PFh-!!3!!Bd!M)A4jF'8!!!!"!!!5B@0MCA0
+cEh*j)(0eDA4MBA0P!'4cGA3C35"NCA0V)'&MBf9cFfpbH5"cG@PdBf&cC3!!!!&
+MEf*U!!*TEQ4iEQ&YC40KBf0PFh0[FRNJFh9TG'0KFf9cC(0eG"KPGQ9bH5"KBf0
+PFh0[FRNJFh9TG'0KFf8!!!%!!'0!)b&dHA"P!!!!!3!!#Q&XD@&c)'CTE'8!B@a
+TB5P"EL"KE'PKFb"QD@aP)#KMFQ9KG'9N)(GTG'JJdNeKDf8J3@aTBA26+3!"$@p
+bD@GTEQ&X)'PdC@e[FQPREf*U)#PdD'8JEh*TCfPZB@`JDA4PE5"`EfPZG'9N)(4
+[)'*j)(4SC5"KE'PKF`#3"!YKE'PKFb"QD@aPFf&XD@%3CACPFRNJB@aTBA-JCQP
+XC3!!!3!!Bd!M)A4jF'8!!!!"!!!,BA"`E'PMBA4TEfjMBA"`&N&Z)'&`F'aTBf&
+dD@pZ)("bEfGbB@d!!"F8B@*[GA3JG'KTFb"YB@0TER4[FfJ!B@*LH'pLDL"8G'K
+P)0*"BQpeG#"dD'Pc)%eKBfPZG'pcD0-JC'PKE'pR,#"KEQ3JG'KP)'aTFh3JEfB
+JFR9ZEQPZCb"`FQpMCA0cCA-JC'PcF'aKH@9N)'PZ)'Pd!!!!&f&`F'aP)'ePER8
+JDA4PEA-JCQpXC'9bB@eZG@pLDL"9G'KP)(0`C@0TB@`JCQpXC'9b)0*"F("XC5"
+0C@je)%PdC@ec,0-JG'KP)'0[ER4PER4c)'pQ)(GSD@0S)'&`F'9KFL"TEL"dD'8
+J3A"`E'8JE@9ZG3!!#@0XDA"LEf&bC("ME'P[BQSJ(A4SC5"'D@jNCA)RFb"ME'P
+`BQpKFQ3JGfPZC'ph!!!9BfpZG(*[E#"`B@jPE(-JCQpXC'9bBh4bE'pLDL!MG'K
+P)(0`C@0TB@`JCQpXC'9b)0*$EfjdFQpX)&"KEQ9XFp-!!!GNCA0VG'p`C'9cDfp
+LDL!,G'KP)'4PFfYdEh!!!"&PH(4PER0TEfjc)'C[E'4PFQ9iG'j[BQSJ(h4SC5"
+cF'9MD@&X)'C[E'4PFL$54AKdC@jcD@pZFp-!!!aQD@aP)(0SBA*TEQF!CR0SFQ*
+[Ef`65A-JCQPXC5"cD'&bD@jR)'pZ2a!!$'C[ER4c)'C[E'4PFJ"QCQjdEf*U)"T
+dD'8JFh"PBfPKE#"QEfaNCA)JdNC[ER4cd`!!!!PQFQpZG'e[Fh4`DA0QBQp[E#*
+*Fb"dD'Pc)(4SC5"QFQpZG'e[Fh3JBA"`E'PMBA4TEfir!"!!%QPZFf9bG'P[EL"
+XEf0KG'P[EJ"`D@jcEf*U)%adD'8JBfpZG'&TEQ9b)(4SBA3JB5"ZCAFJCQpXC'9
+b)(G[G@aN)'&`F'9KFL"TEL"TCL$56Q9h)%C[E'4PFY-JGf&c)(0PE'9MG'9N!!!
+!%QaKFQGPFh3JCR*PC5"LE'pMD`"YCR*PE'pZCdYdD'8JE'&bCf9cG#"QFQ9P)'*
+XEf0V)'pQ)("bEf0PFh-JE@9YEh*j)'&fB@PXB@*XC5"dEb"XBA9ZBfJJB@iJBA"
+`E'PMBA4TEfi!!"*`FQ9QCA*PEQ0PFb"QEfaNCA)!F(*PCQpLDL!JG'KP)(0`C@0
+TB@`JCQpXC'9b)0*3FQ9QCA*PEQ0PFp-!!!!2F(*[C(9MG#"fCA*cD@pZGQ9b-QP
+dH(3mG'KP)(CPFR0TEfiJEfBJG'KP)&0jFh4PE5"cEfCdGf&bC5"bG@jZD@jR)'p
+Z)(4SDA-J6@&MD@jdEh0S!!!!#A0PE'9MG'P[ER0PE'9[BQSJ)A4SC5"cC@aPBh4
+TEfiJGQPcD@*XC5"dEb"dD'8JGA0PFK!!%h0SBA*TEQFJFh4KFR4TEQFJGA"QFh9
+`BQp[E%e*Fb"'D@aP)(0SBA*TEQFJD@iJG'KP)("bEf0PFh-JEfBJFh4KFR4TEQF
+JGA!J+(0dD@aX)'pQCL`JBR9d)(0[EfiJG'mJBQ8JEfiT2`!!#A0SEh*dBh9dFh0
+MGA4[BQSJ0A4SC5$54QPZC'9b)&0SEh*dBh9dFp-JDA4PE5"TEL"dD'8J4QPZC'9
+b*h-JD'9XF#"YC@je!!!9FfKeG'4[GfiJDA4PEA-JCQpXC'9bFfKNCQpLDL!MG'K
+P)(0`C@0TB@`JCQpXC'9b)0*6D(9dC'phEL"*G'9YFp-!!"4cG'&bG(9`)'PdC@e
+c)'C[E'4PFJ"cG(*dEf*U)#*dD'8JFh"PBfPKE#"QEfaNCA)JdP0dBA*dGA!J5A4
+PEA26!!!!$A0jFh4PE5"QEfaNCA*YB@0cEf*U)"&dD'8J8hPcG'9Y)'C[E'4PFJ!
+!&R4PEA"[FQ&bH5"TG'9YFb"QEfaNCA)!G'9YF'pLDL!`G'KP)(0`C@0TB@`JCQp
+XC'9b)0*8C@e`Eh*KFRNJ5A4PEA26)#KTERCTFfPLE'8T!!!!"hCPFR0TEfjfCA*
+cDA4iG#edD'8JGQ9bFfP[EL"[CL"dD'8J4QPZC'9b)&0MFQP`G'PZCb"&H(4PER0
+TEfi!!""fD@9h)("bC@CPFQ9ZBf9c!("fGh"[BQSJ)R4SC5"fD@9h)("bC@CPFQ9
+ZBf9c)'0[ER4bEf`JF'&ZC@`!!!!(GQPcD@*XCA"fDA0LEfpX(NPc)(4SC5"'D@j
+NCA)RFb"XBAPPFL"fDA0TBQaP2`!3!!!AC(0eG!!#D@jNH'jKE@9KE'PK!!*TEQ4
+iEQ&YC@&`F'B!!fPZC(KZB@eP583J)'0dER)!!QPZC(KZB@ePBhGZC!!#D@jNH'j
+KE@9NGfjN!!*TEQ4iEQ&YC@0MC(B!!QPZC(KZB@ePC'&QD3!#D@jNH'jKE@9MC(0
+V!!*TEQ4iEQ&YC@0NDA-!!fPZC(KZB@eP583J)'4[BfB!!QPZC(KZB@ePCQPXC3!
+#D@jNH'jKE@9MCQpX!!0TEQ4iEQ&YC8P%)#"QER4Q!!*TEQ4iEQ&YC@CcGA3!!QP
+ZC(KZB@ePDAGZC!!#D@jNH'jKE@9MEf*U!!*TEQ4iEQ&YCA0MG()!!QPZC(KZB@e
+PFhGZC!!#D@jNH'jKE@9cEQ4Q!!*TEQ4iEQ&YCA0dBh-!!QPZC(KZB@ePBh4bF`!
+#D@jNH'jKE@9MGfPZ!!*TEQ4iEQ&YC4"KF("XD@0KG'P[EL"QD@aP!'&`F'BG3@i
+JBA"`E'PMBA4TEfiRFb"QD@aP)'pZ)'4TFfX!""CYD@jTEA9Y)("KFR4TG'P[EL"
+cDATP!'e`FR4XEfjR5h4SC5"cE@&XE'9cG#"YC@e[FRNJFfPkC5"dD'&d)(4SC5"
+KF("XD@0KG'P[EL"MB@iJF'pcFfPLE(NJBQ8JE'&eEQ0SC@3JGfPdD"!!$R"KFR4
+TG'P[EL"cDATP!'&`F(4XEfjR1R4SC5"YC@e[FRNJFfPkC5"dD'&d)(4SC5"KF("
+XD@0KG'P[EL"hD@aX)'*P)'aKG@jMD'9N)(GTG'J!%!!+Ff0bDA"dB@*XC3"TFf&
+LBQp[E'p*Fb"dD'Pc)'&`F'aTBf&dD@pZ)'KTCfJYE'9fC@`JCACPER3JBAGKFQ8
+J+'&MBf9`G(-JEh"PEL"KF("XD@0KG'P[EL`JEh"PEL"NEf0eE@9ZG#`JF(*TER3
+JC'pMG@ePER3X)'&ZC#"aG@Pd+6m!!"KcG@GRCA0dC@3JF'&bG'PdD@pZ)(0THQ8
+!Fh"bG'a[EQGDG'KP)'ePE@pbH5"cDATP)(4SBA3JG'KP)'4PGQ9XEh"PFL"bC@0
+[E@ePEQ4c)(4SBA3JG'KP)'&`F'aTBf&dD@pZ)(0SEh9XC#"LC5"XBA9ZBfKPC#"
+hDA4S!*!&%@&`F'aTBf&dD@pZ)'CTE'9cBA"`CKCPGQ9bH5"KF("XD@0KG'P[EL"
+QD@aP!!!"!!"M3#-KG(P`C3!!!!%!!"0KF("XD@0KG'P[EL"`FQpMCA0cF'0KF#Y
+")("bEf0PFh-JE'&eEQ0SC@3JCR*[E5"KEL"KF("XD@0KG'P[EL"QD@aP!!%3BA"
+`E'PMBA4TEfiJCQPXC3"KF("QBA"`CMPdD'8JBA"`E'PMBA4TEfiJCQPXC5"QFQp
+Y)(GSD@0S)(4SDA-JF(*[Bf9cFb"hBA-JE'&eEQ0SC@3!N!39BA"`E'PMBA4TEfi
+JF(*[Bf9cFf9cF'0KF"PPGQ9bH5"KF("XD@0KG'P[EL"`FQpMCA0c!!%!!'0!)b&
+dHA"P!!!!!3!!#@0[ER4KD@jPFQ0dER)K3@iJDA4PE5"dD'&d)'0[ER4KD@jc)'p
+dD'9b)'PdC@ec!!J6BfpYF'aPG'9XH5"PH("KEQ4PC("PH'0LEfpX2NPc)(4SC5"
+MEfjdB@PZCA)JB@jN)'&XE#"[CL"TG(-JBfKTE'4bC@iJEh"PEL"TEL"[GA4XD@j
+P)(CTCAFr!"!!%'0[ER4KD@jPFL"hD@jNEhF!BhGZC'pLDL!KG'KP)'eKD@iJGfP
+ZC'ph)'C[FL"dD'8JBfpZG'&TEQ9b!!!2C@jdDA*P)'0[ER4PER4cC@0dFfpLDL"
+-G'KP)'9ZG'PbC5"MEfjdC@jdFb"[CL"dD'8JBfpZG'&TEQ9b,#"TEQ0XG@4TEQF
+JG'KP)'0[ER4PER4c)'pQ)'PdFb"MD'PXC(*PEJ!!!!TPH("KEQ4KBQaP!("PH'&
+LEfpX28Pc)(4SC5"MEfjdB@PZCA)JBf&`B@*XC5"[CL"LC@PZCb"PH("KEQ4PC#"
+TER4[)'peG'aTEQ8JGQPPGcm!!!KPH("KEQ4PC!"`CAK`BQp[E#C*Fb"dD'8JBfp
+ZG'&TEQ9b)'p`C@iJD@iJEh9dE'PZC5"fD@9h2`!3!"*`FQ9fD@peFb"XDA0d)(C
+TCAF!FhCPGfa[EQGfG'KP)'aKFh3JEQpZ,@PMEfiJGQPPGb!SBRNJEQ&YC5`JBRN
+JC'&dC5`JCA4M,LNJFf9XC@0dC@3JCQpb)(4SC5"MEfjdB@PZCA)J+'C[FQG[G(4
+PEL"KFb"cEfpZ)'&c)(4SC5"hD@jNEhFJDA-JBfa[Ff9N+3!!!!PcC@aPBh4TEfj
+cC@aPEf*U)#&dD'8JFf9XC@0dD@pZ)(CTFfPLE'8JG'mJG'KP)(9cCA)3!!4fD@9
+h!("fCAGXEfjR4A4SC5"fD@9h)(0PE'9MG'9N)'C[FL"dD'8JBfpZG'&TEQ9b)#K
+LH5"TBfpZ,#"LH5"ZB@eP,#"LH5"NBA4P,#"PG'-Z+4!!!!pNFh9d!!*TEQ4iEQ&
+YC@&XD@%!!QPZC(KZB@ePBA"`CJ!#D@jNH'jKE@9MG'jb!!*TEQ4iEQ&YC@0MC(B
+!!QPZC(KZB@ePC'&QD3!#D@jNH'jKE@9NEf0Q!!*TEQ4iEQ&YC@CTE'8!!QPZC(K
+ZB@ePBfC[E!!#D@jNH'jKE@9QER4Q!!*TEQ4iEQ&YC@CcGA3!!QPZC(KZB@ePBfp
+LDJ!#D@jNH'jKE@9cBh4b!!*TEQ4iEQ&YCA0ZC'B!!QPZC(KZB@ePFh4MF`!#D@j
+NH'jKE@8+BfpZG'&TEQ9bF`"MG'jb$f9fCA*j)'0[ER4KD@jPFJ!"!!"M3#-KG(P
+`C3!!!!%!!""MEfjdB@PZCA)JGfPZC'ph!'0hEQ3F35"hD@jNEhFJG'KKG#"MEfj
+dB@PZFb"TG'9YF`!!"`PMEfjdB@PZCA*MG'jbEf*U)#KdD'8JBfpZG'&TEQ9b)(4
+SDA-JGfPZC'ph)'Pc)'p`C@jPC#"QFQpY!!!!"'4TFfX!Bf4TFfpLDL"!G'KP)'4
+TFfXJEfiJGfKTBfJJG'KP)'PdC@dJG'KTFb"hD@jNEhFJGf&c)'p`C@jPC#"QFQp
+Y)'Pc)(0dEh*PC!!!!!CQEfaNCA)!BfC[E'pLDL!PG'KP)'C[E'4PFL"dD'Pc)(G
+TEQ4[Gb"TFb"[F'9ZC@3JCR*[E3!!"'PdC@d!BfpLDQpLDL!MG'KP)'PdC@dJG'K
+TFb"hD@jNEhFJDA-JEh"PEQ9N)'CbEfd!!"*`FQ9fD@peFb"XDA0d)(CTCAF!FhC
+PGfa[EQGcG'KP)'aKFh3JEQpZ,@PMEfiJGQPPGb!SBRNJEQ&YC5`JBRNJC'&dC5`
+JCA4M,LNJFf9XC@0dC@3JCQpb)(4SC5"hD@jNEhFJ+'C[FQG[G(4PEL"KFb"cEfp
+Z)'&c)(4SC5"hD@jNEhFJDA-JBfa[Ff9N+3!!#A0PE'9MG'P[ER0PE'9[BQSJ)A4
+SC5"cC@aPBh4TEfiJGQPcD@*XC5"dEb"dD'8JGA0PFK!!"(CTCAF!F(CPGfa[EQG
+#G'KP)(CTCAFJFf9XC@0dC@3JCQpb)(4SC5"hD@jNEhFJ+'*j)'PMEfiX)'*j)'j
+KE@8X)'*j)'4KG'8X)'9dBbiT!"!!!!pNFh9d!!*TEQ4iEQ&YC@&XD@%!!QPZC(K
+ZB@ePBA"`CJ!#D@jNH'jKE@9MG'jb!!*TEQ4iEQ&YC@0MC(B!!QPZC(KZB@ePC'&
+QD3!#D@jNH'jKE@9NEf0Q!!*TEQ4iEQ&YC@CTE'8!!QPZC(KZB@ePBfC[E!!#D@j
+NH'jKE@9QER4Q!!*TEQ4iEQ&YC@CcGA3!!QPZC(KZB@ePBfpLDJ!#D@jNH'jKE@9
+cBh4b!!*TEQ4iEQ&YCA0ZC'B!!QPZC(KZB@ePFh4MF`!#D@jNH'jKE@84BfpZG'&
+TEQ9b)(GTEQ4[Gh0MGfjN&Q9fCA*j)'0[ER4KD@jPFL"hD@jNEhF!!!%!!'0!)b&
+dHA"P!!!!!3!!$@0[ER4PER3JFh"KBf9NGfjN@%&XE#"hD@jNEhGc,#"TEQ0XG@4
+TEQFJG'KP)'4PFfYdEh!JGfPZC'ph)#M59fPZC'phdb"NEf9c)'j[G#"TEQ0XG@4
+P)(4SC5"NCA0VG'p`)(GTEQ4[GbN!N!81BfpZG'9ZG#"cF'&MCA-!C(GZC"0&GQ9
+bH5"MEfjdC@jd)(0`B@0P!!%!!'0!)b&dHA"P!!!!!3!!$@0[ER4bEf`JF'&ZC@a
+MBf4f$d%JBfpZG(*[E#"`B@jPE!!0&Q0KE'0eE'&dC5"QEfaNCA)JFfPkCA-!FfC
+cHQ*[Efa*+&CTCAGc+5""FQ8JCQpXC'9b)(0THQ9c)'0KE'0eE'&dC@3JB@jN)'4
+TFh"XBAPPC#"TEL"'D@jNCA)JE'PcG#"hD@jNEhGc2a!!$f0[E@ePER3JD'9KC'P
+ZCh0MEfeLEfpX0LK@D@9hFbNJ3A*P)'0[E@ePER4c)'4TFh"XBAPPC#"TEL"'D@j
+NCA)JE'PcG#"hD@jNEhGc2`!3!!aNBA4P)'KPB@4TEQF!Ff4KG'*[Efa!+&CTCAG
+c+5""FQ8JE@pND@CTBf&dD@pZ)'4KG'9c)'4TFh"XBAPPC#"TEL"'D@jNCA)JE'P
+cG#"hD@jNEhGc2`!3!"KNDA0V)'PZCQpbE@&dD@pZ)'KPB@4TEQF!Ff4TEQ*[Efa
+*+&CTCAGc+5"*Fb"TEQC[FQeKG'P[EL"KBQpeG#"dD'8JGQpXG@eP)'4TFh"XBAP
+PC#"TEL"'D@jNCA)JE'PcG#"hD@jNEhGc2a!!#@PMEfiJFfPkC@afDA0XEfjR1LK
+@D@9hFbNJG'KP)(0THQ8JEfBJD@0[ER-JC'PcF'aKH@9N)'PZ)%CTEQ4PFL"XDA0
+d)(GTEQ4[Gh-!%!!-DfPZC#"SC@&ND@jR!(0VEQ4LEfpX2#K@D@9hFbNJ3A*P)'4
+[Bh9YC@jd)'YTEQ4c)'4TFh"XBAPPC#"TEL"'D@jNCA)JE'PcG#"hD@jNEhGc2`!
+3!!eXB@*PE#"SC@&ND@jRFfaLE'*[Ef`d+&CTCAGc+5""FQ8JE'&LC@ac)'4TFh"
+XBAPPC#"TEL"'D@jNCA)JE'PcG#"hD@jNEhGc2`!3!!acDATP)'KPB@4TEQF!Fh0
+THQ*[Ef`h+&CTCAGc+5""FQ8JCQPXC5"cDATPFb"NDA0`E'&jC@3JD@iJ4QPZC'9
+b)'aTFh3JGfPZC'phFa!!$(0ZBA!JG'mJCh*TC!"QCh*NBQp[E%mS9QPPGh-T)%&
+bC5"TG'9YFb"KE(GKHA-JFfjKF("PC#"dEb"dD'8JEQ9KFQ9cG#"RFQPN)("[D@j
+d)(GSC@iJG'KPH5"KFQ8JE@pfC@3r%!!1Fh4KCfGPFQ9N)'GbD@3!CR0dCf*[Ef`
+K+&CTCAGc+5""FQ8JCh*TC#"XD@jPFb"cG'&RCf9bC@3r%!!2GQ9bFfP[EL"SC@&
+ND@jRFhCbFf*[Ef`l+&CTCAGc+5""FQ8JCQPXC5"fCA*cD@pZFb"NDA0`E'&jC@3
+JD@iJ4QPZC'9b)'aTFh3JGfPZC'phFcm3!!PfD@9h)'C[ER4fCQjdE'pZCbmS9QP
+PGh-T)(4SC5"TC#"[CL"dD'8JCQpZG#"eFf9N)'PZ)%CTEQ4PFL"fD@9hFa!!$RC
+TCAFJCQpZG#"cDATP!(CQFhTXEfjR-5K@D@9hFbNJG'KP)(0THQ8JEfBJG'KP)'C
+[ER3JGA0PC#"TEL"'D@jNCA)JGQPPGh-3!!!!$Q0[ER4bEf`JF'&ZC@ac!'0MC(B
+6CACPFRNJBfpZG(*[E#"`B@jPE!!"!!"M3#-KG(P`C3!!!!%!!"0NCA0V)'&MBf9
+cFfpbH5"QD@aPC'&QD49")'4PFfXJB@0MCA0cEh*j)'CTE'8!N!38C'9cDb"KBf0
+PFh0[FRNJCQPXCA-!C'&QD4PPGQ9bH5"NCA0V)'&MBf9cFfpbH5"QD@aP!!%!!'0
+!)b&dHA"P!!!!!3!!$Q4PFfYdEh!YEf*UC@0d!'0NFfXc4'9cDh4[F#e[BQTPBh3
+JDA-JG'KP)'0XBA0c)'pQ)(4SC5$5C'9cDh4[F0-JEf*UC@0d!!)-Fh4KFR4eF#"
+NDA0V!(0NFfY[BQSJ%(4SC5"cG'&bG(9`)'4TFfX!!!!&G(*KFfKdFR0SEf*U)!P
+dD'8JG(*KFfJ!!!!2C(0eG!!#D@jNH'jKE@9KE'PK!!*TEQ4iEQ&YC@&`F'B!!QP
+ZC(KZB@ePBh4ZFJ!#D@jNH'jKE@9MBf4f!!*TEQ4iEQ&YC@4KCQN!!QPZC(KZB@e
+PC'pMCJ!#D@jNH'jKE@9QD@aP!!*TEQ4iEQ&YC@0QEf`!!QPZC(KZB@ePCQjdCJ!
+#D@jNH'jKE@9QFh9d!!*TEQ4iEQ&YC@0[BQS!!QPZC(KZB@ePFf0dFJ!#D@jNH'j
+KE@9cEQ4Q!!*TEQ4iEQ&YCA0dBh-!!QPZC(KZB@eP"'4TFfX!Bf4TF`C")'4TFfX
+!!!8)Bf&`B@0TG(N!Bf&`B@a[EQFdG'KP)(4[G'&X)'jeE@*PFL"[CL"LHA4PFb!
+SCR*PC5"[FL"eFf9N+5"[EL"dD'8JC'PcD`!!!!PPDQ9MG'&LE'9TFf9UBQp[E$G
+$B@iJG'KP)'ePC'PK)'0KEL"LC5"PDQ9MG'9N)#KQE'p`F'PPFb`J3d3RFb`JFhP
+aG@9cG#Nr!!!+CR*PC5"cF'&MC3"QFR0`E'pZCbPdD'8JER9YBQ9b)'pQ)'CbC@8
+JBRPdCA-JE'9QG#"[EL"dD'8JC'PcD`!!$'a[Bf&X)(C[E(9YC3"TFh*fBQp[E$Y
+*Fb"dD'8JE@9ND@%JDA-JB5"XEf0KE#"fEfaeE@8J+(*KG'KPFL"dD'&Z)'%JCQP
+XC5"cCA*fCA)T2`!!"h0dBA*dGA"TFh4NBQp[E"Y*Fb"dD'Pc)'4TFfXJG'KP)'*
+[Eh3JC'PcDcm!!!!2C(0eG!!#D@jNH'jKE@9KE'PK!!*TEQ4iEQ&YC@&`F'B!!QP
+ZC(KZB@ePBh4ZFJ!#D@jNH'jKE@9MBf4f!!*TEQ4iEQ&YC@4KCQN!!QPZC(KZB@e
+PC'pMCJ!#D@jNH'jKE@9QD@aP!!*TEQ4iEQ&YC@0QEf`!!fPZC(K*4#!JEQ&YC@C
+ZG'B!!QPZC(KZB@ePCR0eG!!#D@jNH'jKE@9MEf*U!!*TEQ4iEQ&YCA0MG()!!QP
+ZC(KZB@ePFfjNCJ!#D@jNH'jKE@9cG'0c!!*TEQ4iEQ&YC39NDA0VFf0NDA-+CAC
+PFRNJC'PcD`!!!3!!Bd!M)A4jF'8!!!!"!!!0C'pMG@ePER3JCQPXC@4[BfB235"
+NEf0eE@9ZG#"QD@aP!*!%$Q4[Bh9YC@jd)'CTE'9c!'4[BfB6CACPFRNJC'pMG@e
+PER3JCQPXC3!"!!"M3#-KG(P`C3!!!!%!!!4QD@aP!'CTE'8'35"QD@aP!!!'$'0
+bC@&dEh)JG(P`C3"QBh*dG(P`C6adD'8J6e08HA"P)'PNC@jdD@CjD@jR)(4SC5"
+KF("XD@0KG'P[EL"dD'&d)'0bC@&dC@3JG'KP)'PdC@d!%!!*CQPXC5"dHA"PCQP
+dF(4jF'8pG'KP)%p69(P`C5"TC'9ZG'PQH@PZCb"dD'8JG(P`C5"[CL"NBA4K)'0
+[ER4KD@jPC#"TEL"dD'8JDA4PE4!!"Qa[BfYPC!"TFfaVBQp[E"0*Fb"dD'8JCQP
+XC5"XEf0VC@3r%!!2F(*[C(9MG#"fCA*cD@pZGQ9b-QPdH(4)G'KP)(CPFR0TEfi
+JEfBJG'KP)("bEf4eBh3J+(CTFfPLE'8JBA3JG'KP)(4[F#"[CL"dD'8JdNGPG#"
+*EQC[db"ND@&XEfFT!!!!#R0dBA4TEfjPFRN!F(0`C'*[Ef`G5A-JG'KP)'PdC@d
+JB5"cG'&dD@pZCA*j)("KC$m3!!GfCA*cD@pZGQ9bFfPdH(4)G'KP)(CPFR0TEfi
+JEfBJG'KP)'CTE'8J+(CTFfPLE'8JBA3JG'KP)'*[G(4[E5"[CL"dD'8JdNGPG#"
+*EQC[db"ND@&XEfFT!*!&"@CTE'9cCQPXC3TPGQ9bH5"QD@aP!!!"!!"M3#-KG(P
+`C3!!!!%!!!CQEfaNCA)!BfC[E!K")'C[E'4PFJ#3"!pNFh9d!!*TEQ4iEQ&YC@&
+XD@%!!QPZC(KZB@ePBA"`CJ!#D@jNH'jKE@9MG'jb!!*TEQ4iEQ&YC@0MC(B!!QP
+ZC(KZB@ePC'&QD3!#D@jNH'jKE@9NEf0Q!!*TEQ4iEQ&YC@CTE'8!!QPZC(KZB@e
+PBfC[E!!#D@jNH'jKE@9QER4Q!!*TEQ4iEQ&YC@CcGA3!!QPZC(KZB@ePBfpLDJ!
+#D@jNH'jKE@9cBh4b!!*TEQ4iEQ&YCA0ZC'B!!QPZC(KZB@ePFh4MF`!#D@jNH'j
+KE@8(CQpXC'9bFf0QEf`-CACPFRNJCQpXC'9b!!!"!!"M3#-KG(P`C3!!!!%!!!P
+QEfjd)'CTE'9QER4Q#d%JCQpZG#"QD@aP!*!%#QC[ER3JCQPXCA-!CQjdCJpPGQ9
+bH5"QEfjd)'CTE'8!!3!!Bd!M)A4jF'8!!!!"!!!0CQpZG#"cG@PdBf&cC@CcGA3
+235"QEfjd)(0eDA4MBA0P!!!!!@0[BQS!!QPZC(KZB@eP$QC[ER3JFh9TG'0KFf9
+c!'CcGA36CACPFRNJCQpZG#"cG@PdBf&cC3!"!!"M3#-KG(P`C3!!!!%!!!9RFQp
+eF(0RFR!Y35"(FQpeF#"TEL"dD'8J9A0PFR-JB@jN)%GbEh9`Fb"MEfjdFQpX)("
+KEQ9X!!8'BQpeEQ4c!("LEQ4aC(*d)h4SC5"LEh9ZC'PZCb"bC@0dB@jRE'8JEfB
+JG'KP)'GbEh9`%!!%D@0[EJ"TD@eRD@CKE4adD'8JD@0[EL"LDA4YBA!JEfBJG'K
+P)'GbEh9`!"!!#faKBQ9X)'PZC'9iE'&LD@a[EQF@G'KP)'aKBQ9X)'pQ)(4SC5"
+RFQpeF!!3!!4ZB@eP!("ZB@eTG(Kd&A4SC5"ZB@eP)'pQ)(4SC5"RFQpeF"!!#("
+[FfPdD@pZ!("[Ffj44("d-R4SC5"`Eh0TG'P[EL"[CL"dD'8JCh*[GA!JGfPdD'P
+Z)'PdFb"`BA*PER3JGfPZC'ph!"!!!!!'Ch*[GA"c!(0RFR!,CACPFRNJCh*[GA!
+!!3!!Bd!M)A4jF'8!!!!"!!!5D@jQEh*YBA4TEfiJGfPZC'ph!'PhEQ3Y3@iJD@j
+QEh*YBA4TEfiJGfPZC'ph)#K[F'9ZC@3JBRNJdNGPG#"*EQC[bG-T!!m(BfpYE@9
+ZG'0[EA4TG(Kd#h4SC5"MEfeYC@jd%!!0Bh*PBA4TEfiJC'&dC@0bG'4XC(3J*R4
+SC5"NBA4P)'pZ)(GSD@0S)(4SC5"TG'9Y)(GKFb"MFQ9KG'9N!!!!"'PMEfi!D@P
+YCfPQB@dEG'KP)'PMEfiJBQPdE@&`)'pQ)(4SC5"TG'9Y%!!%DA4PE3"MEf*UEf*
+U)#4dD'8JDA4PE5"dD'Pc)(GTEQ4[Gb"hBA-JEh"PEQ9N)'CbEfd!!!!'E'pMDf9
+N!'PcE'YLEfpX%dPc)(4SC5"TG'9Y)'a[BfYPC$m3!"CYD@jTEA9Y)("KFR4TG'P
+[EL"cDATP!'e`FR4XEfjR5h4SC5"cE@&XE'9cG#"YC@e[FRNJFfPkC5"dD'&d)(4
+SC5"KF("XD@0KG'P[EL"MB@iJF'pcFfPLE(NJBQ8JE'&eEQ0SC@3JGfPdD"!!%@e
+[C'PQD@0KG'P[EL"NBA4PE@pNC'aNG#!XG'KP)'4KG'8JEfiJGfKTBfJJG'KP)'P
+dC@dJGf&c)'aKFh3JE@pND@CTC@3!!!!1F'&bG'PdD@pZ)(0THQ8!BA"`G'a[EQF
+kG'KP)'ePE@pbH5"cDATP)(4SBA3JG'KP)'&`F'aTBf&dD@pZ)(GTE'`JBQ8JE'&
+eEQ0SC@3JGfPdD!!3!!e`D(PcD@0KE#"cDATPF'KjFfa[EQFTG'KP)'&MG(9KE#"
+cF'&MC5"eFf9N)'*j)(4SC5"TG'9Y)'pZ)'4TFfX!!!p`FQpNG@0d)(CPFR0TEfj
+fCA)bDA4iG%KdD'8JGQ9bFfP[EL"[CL"dD'8JF(*[C(9MG#!SGQPcD@*XC5"KG#"
+dD'8JG'p`)'pQ)(4SC5$54f9d)%PZCQr6)'4TB@a[CbN!!!!%FfPkC3"`G(0kE'p
+ZCaadD'8JE'pRD@0KE#"cDATP)'pQ)(4SC5"TG'9Y!!!!#R0dBA4TEfjPFRN!F(0
+`C'*[Ef`G5A-JG'KP)'PdC@dJB5"cG'&dD@pZCA*j)("KC$m3!"KcG@GRCA0dC@3
+JF'&bG'PdD@pZ)(0THQ8!Fh"bG'a[EQGDG'KP)'ePE@pbH5"cDATP)(4SBA3JG'K
+P)'4PGQ9XEh"PFL"bC@0[E@ePEQ4c)(4SBA3JG'KP)'&`F'aTBf&dD@pZ)(0SEh9
+XC#"LC5"XBA9ZBfKPC#"hDA4S!!!!"hCPFR0TEfjfCA*cDA4iG%KdD'8JGQ9bFfP
+[EL"[CL"dD'8JCQPXC5!SGQPcD@*XC5"KG#"dD'8JBQpdG'pY)'pQ)(4SC5$54f9
+d)%PZCQr6)'4TB@a[CbN!!!!8Gf&bEL"LC@C[FQ8JC@e`G(PTEQF!Gf&bEQ*[Ef`
+f5A-JB5"ND@&XEfFJC'PcF'aKH@9N)(GSC@iJdN9YF(4j)(4bBA0SbG-JDA-JFf9
+XC@0dC@3r!"!!!!!6D@jQEh*YBA4TEfiJGfPZC'phFfPhEQ3BCACPFRNJD@jQEh*
+YBA4TEfiJGfPZC'ph!!!"!!"M3#-KG(P`C3!!!!%!!!4TG'9Y!'0[BQS(3@iJDA4
+PE3!6"Q*[G@jNF`"`BQjNF@4bG#*dD'8JBQpeEQ4TEQFJFQ9MG'&ZCfaP)'pQ)(4
+SC5"TG'9Y!"!!"f0[E@ePER4MEfedDA4iG$TdD'8JBfpYE@9ZG#"NDA0`E'&jC@3
+JD@iJG'KP)0*(CA3J5@jQEp-JGfPZC'ph)'pQ)(4SC5"TG'9Y!"!!#@0[ER4KD@j
+PFQ0dER*[BQSJ'R4SC5"MEfjdB@PZCA)JEfBJG'KTFb"TG'9Y!!!!$@0[ER4PER3
+JFh"KBf9NGfjNC(GZC$&dD'8JGfPZC'ph)(4SBA3JGfpeE'3JEh"PEL"TCL"dD'8
+JDA4PE5"hBA-JEh"PEQ9N!!!0Bh*PBA4TEfiJC'&dC@0bG'4XC(3J*R4SC5"NBA4
+P)'pZ)(GSD@0S)(4SC5"TG'9Y)(GKFb"MFQ9KG'9N!!!!"'4TFfX!Bf4TFfpLDL!
+NG'KP)'4TFfXJEfiJGfKTBfJJG'KP)'PdC@dJDA-JFh4[FQ9N!!!!"QC[E'4PFJ"
+MCQpXEf*U)#CdD'8JCQpXC'9b)'PZ)(GSD@0S)(4SC5"TG'9Y)'Pc)(0dEh*PC!!
+!!!4TBfpZ!'PTE@GTCQ&Y'h4SC5"TBfpZ)'*TG'eKF#"[CL"dD'8JDA4PE4!!!QP
+N!%P%)#"XEfjR(Q&Z)'PN)(4SBA3JD@4PER4TCQPPFb"dD'8JDA4PE3!!!"*TEQC
+[FQeKG'P[EL"hD@jNEhF!DAGZC'pLDL!MG'KP)'PZCQpbE@&dD@pZ)(GTEQ4[Gb"
+QEh)JG'KP)'PdC@d!!!4VD@jN!'YTEQ4TG(Kd&(4SC5"VD@jN)'pQ)(4SC5"TG'9
+Y!!!!#faKBQ9X)'PZC'9iE'&LD@a[EQF9G'KP)'aKBQ9X)'pQ)(4SC5"TG'9Y%!!
+4E@pND@CTBf&dD@pZ)'4KG'9YEf4NE'4d)#adD'8JC'&dC5"[EL"hD'PMD#"dD'8
+JDA4PE5"hBA-JE'&cG#"YEf4TCQPPC!!!!!4ZB@eP!("ZB@eTG(Kd&(4SC5"ZB@e
+P)'pQ)(4SC5"TG'9Y!"!!$A"SHA0TBf&X)(0THQ9`D(PcE'pZCbPdD'8JB@0dG@&
+X)(0`B@0P)(9cC@3JBRNJG'KP)'PdC@dJEfiJC'PcD`!!#("[FfPdD@pZ!("[Ffj
+44("d-A4SC5"`Eh0TG'P[EL"[CL"dD'8JDA4PE5"hDA4SD@iJDA4c)("KFQ9ZG#"
+hD@jNEhF3!!KcC@aPBh4PC!"TFh0XBQp[E"9*Fb"dD'8JDA4PE5"cC@aPBh4PC$m
+3!!4cDATP!("dFhTXEfjR((4SC5"XEfGTBf&X)(0THQ8JEfBJG'KP)'PdC@d!!!!
+'GfPZC'ph!'0hD@jMGfPZ-A4SC5"hD@jNEhFJG'KKG#"hEh9XC#"[F'9Z)'PQ)(4
+SC5"TG'9Y)(GKFb"[F'9ZC@3!N!3&DA4PEA0MEf*U#Q9fCA*j)'PdC@d!!!%!!'0
+!)b&dHA"P!!!!!3!!"h"bEf0PFh0`FQ0c)d%JF(*[Bf9cFb"bG@jZD@jR)'pZ)(4
+SDA-J6@&MD@jdEh0S!!S-Bh*PBA4[FL"dHA"P!'CMFR4dHA"P)(4SC5"MFQ9KG'p
+b)(4jF'8JEfBJG'KTFb"`FQpMCA0c!!!!"'CTE'8!CQPXC@pLDL!MG'KP)'CTE'8
+JG'KKG#"XBA9ZBfKPC#"dD'Pc)("bEf0PFh-!!!PQD@aP)(4jF'9QDA4`G(P`C64
+dD'8JCQPXC5"dHA"P)'pQ)(4SC5"QD@aP)(4SBA3JE'&eEQ0SC@3JG'KTFb"`FQp
+MCA0c!!!!#@CbEfjdE@pcG("TFfCLEfpX)NPc)(4SDA-JG'KP)'CbEfjdE@pcG#"
+KF("XD@0KG'P[EMm!%!!%EQ&YC3"`EQ&YDA4iG"GdD'8JEQ&YC5"[CL"dD'8JF(*
+[Bf9cF`!!$R"KFR4TG'P[EL"cDATP!'&`F(4XEfjR3A4SC5"cDATP)'pQ)(4SC5"
+`BA*dDA4TEfiJG'KKG#"dD'Pc)'&`F'aTBf&dD@pZ)(GKFb"XBA9ZBfKPC#"hDA4
+S!!!8F'&bG'PdD@pZ)(0`B@0P)(9cC@3!F(9cC'a[EQFdG'KP)'jeE@*PFL"[CL"
+LHA4PFb"MGA*bC@jdE(NJGA0PC#"TEL"dD'Pc)("KFR4TG'P[EJ!!!!ebC@e[G'8
+JCACPER4cFQ9fG'*[Ef`S9fPXE#"dD'Pc)("bEf0PFh-JB@0MCA"dFb"bC@e[G'8
+JCACPER4c2`!!!!TcBh*TF(4KBQaP!'PcB@*LEfpXDdPc)(4SDA-JF(*[Bf9cFb"
+SD@GS,@aPGQ9X)'9fC@jd)'&hBA*P)#KKBf0PF(4c)'p`C@iJBA"`E'PMBA4TEfi
+X)'p`C@iJC'pMG@ePER3X)("bD@jd)'4[Bh9YC@jd,#"KEQ3JFA9TG#Nr!!!(GQP
+cD@*XCA"fDA0LEfpX(dPc)(4SDA-JF(*[Bf9cFbFJE'&jCA)JGQPcD@*XC6m3!!!
+!#A"bEf0PFh0PFh"bBh-0CACPFRNJF(*[Bf9cF`!"!!"M3#-KG(P`C3!!!!%!!"*
+cD'&bB@*XC5"MEfjdB@PZCA)!Ff0dFM*")'0[ER4KD@jPFL"dD'&d)'eKH5"LC5"
+cD'&bC@3J+'4TFfYc)'&ZC#"QEfaNCA*c+3!!#`KPH("[FR4PC!"cCAK`BQp[E$9
+*Fb"dD'Pc)'C[E'4PFL"K)(0SBA*P)("[D@jd)'pb)'PZFfPNC5"K)(0SBA*P)("
+[D@jd2`!!"@GbEh9`FfGbF'PdH(3hG'KP)(9cCA)JEh)JCh*[GA!JG'KKG#"SBA-
+JFh"PBfPKE#"KBf0PFh-JG'mJG'KP)'C[E'4PFK!!%'GbEh9`)("bDACTE'9RCA-
+!Ch"`FR"bDABrG'KP)(0PC5"QEfaNCA*c,h0PC5"QD@aPFbpYB@YP)'0SB@jRCA-
+JF(*TGQPXC@GPFb"QEh)JG'KP)'GbEh9`%!!3Ch9PFh3JF(*TGQPXC@GPF`"RFh4
+`F(*TGMjdD'8JFf9P)'C[E'4PFR-[Ff9P)'CTE'9c,feKDf8JBfKKEQGPFb"`FQP
+fD@aPCf9c)'C[FL"PGQ9bH@pZC3!3!"4TEQKPFQPdC@3JF(*TGQPXC@GPF`"TF(*
+fBQp[E&&"FQ8JG'KP)("bDACTE'9RCA-JEfBJG'KTFb"TG'9Y)'&XGf&jFb"dD'8
+JFf&YC5"KFb"dD'8JBfpZG'&TEQ9b)'Pd)'Pc)(0dEh*PC#"TEMm3!!GYEh9ZG'9
+NFfe[G@*[Ef`d5A-JG'KTFb"QEfaNCA)JE@peER4PC#"[EL"KEQpdD'9b)'eKBfK
+TEQ8RFb"NCA0VG'p`2`!!!!9[GfjPFR0[GfjTG(Kd(R4SC5"eFf9b)(4SBA3JEhG
+ZFb"dD'Pc)'C[E'4PFJ!3!""[GfjPFL"`FQPfD@aPCf9c!'phER*`FQPf2h4SC5"
+cC@8JCQpXC'9bFbpcC@8JCQPXCA-[E@&VC5"MD'&ZCf9c)("bDACTE'9RCA-JCQp
+b)(4SC5"[GfjPFK!!#A"bEh4PBh4PC(0`FQpLEfpX2%Pc)'0[ER4KD@jPFL"`FQp
+dC@0dC@3JCR*[E5"LC@PZCb"YEhCPC#`JFQ9ZB@ePC#"[FL"NC@aPG'9N2`!3!!C
+cD'&bC@3!FfKKFQ*[Ef`E5A-JBfpZG'&TEQ9b)'%JFfKKFQ8JF'pTER3r%!!1FfK
+KFQPZCb"hD@jNEhF!FhGZC'pLDL!NG'KP)(0SBA*TEQFJGfPZC'ph)'C[FL"dD'8
+JBfpZG'&TEQ9b!*!%$f4cGA3!!QPZC(KZB@ePB@aTB3!#D@jNH'jKE@9KF("Q!!*
+TEQ4iEQ&YC@0dER)!!QPZC(KZB@ePBf0NGJ!#D@jNH'jKE@9NB@CT!!*TEQ4iEQ&
+YC@4[BfB!!QPZC(KZB@ePCQPXC3!#D@jNH'jKE@9MCQpX!!*TEQ4iEQ&YC@CZG'B
+!!QPZC(KZB@ePCR0eG!!#D@jNH'jKE@9MEf*U!!*TEQ4iEQ&YCA0MG()!!QPZC(K
+ZB@ePFfjNCJ!#D@jNH'jKE@9cG'0c!!*TEQ4iEQ&YC40cD'&bB@*XC5"MEfjdB@P
+ZCA*cFf0dFKKPGQ9bH5"cD'&bB@*XC5"MEfjdB@PZCA)!!!%!!'0!)b&dHA"P!!!
+!!3!!%R0SBA*TEQFJF(*TGQPXC@GPF`"`FQPf'd%JFf9d)'pQ)(0SBA*TEQFJF(*
+[F'9bG'PPF`!$$'eKDf8JBfKKEQGPF`"`FRChBQp[E"T`FQPfD@aPCf9c)(4[)'e
+KDf8JBfKKEQGPF`!3!!PcC@8JCQPXCA0`FRCbBQp[E"G`FQPfD@aPCf9c)(4[)(0
+PC5"QD@aPFa!!#h0PC5"QEfaNCA*cF(*fFf*[Ef`CF(*TGQPXC@GPFb"dEb"cC@8
+JCQpXC'9bFa!!!!!1FfKKFQPZCb"hD@jNEhF!FhGZC#G")(0SBA*TEQFJGfPZC'p
+h)#K[F'9ZC@3JBRNJdP0SBA*TEQI*dbN!$JPMEfjdB@PZCA*MG'jbEf*U)#jdD'8
+JBfpZG'&TEQ9b)(4SBA3JG'KTFb"hD@jNEhFJGf&c)'p`C@jPC#"QFQpY!!!!#'9
+iF'pbG'9N!(0PH("LEfpX1%Pc)(4SDA-JBfpZG'&TEQ9b)'%JFfKKFQ8JF'pTER3
+JEh)JD@jcD@4P)'%JFfKKFQ8JF'pTER3r!!!!"QC[E'4PFJ"MCQpXEf*U)#YdD'8
+JCQpXC'9b)(4SBA3JG'KTFb"hD@jNEhFJGf&c)'p`C@jPC#"QFQpY!!!&Ch*[GA"
+cCh*`DA4iG$TdD'8JGA0PFL"[FL"RFQpeF#"dD'&d)'KKFb"cF'9MD@&X)'&MBf9
+cFb"dEb"dD'8JBfpZG'&TEQ9b!"!!%'GbEh9`)("bDACTE'9RCA-!Ch"`FR"bDAB
+rG'KP)(0PC5"QEfaNCA*c,h0PC5"QD@aPFbpYB@YP)'0SB@jRCA-JF(*TGQPXC@G
+PFb"QEh)JG'KP)'GbEh9`%!!3Ch9PFh3JF(*TGQPXC@GPF`"RFh4`F(*TGMjdD'8
+JFf9P)'C[E'4PFR-[Ff9P)'CTE'9c,feKDf8JBfKKEQGPFb"`FQPfD@aPCf9c)'C
+[FL"PGQ9bH@pZC3!3!"4TEQKPFQPdC@3JF(*TGQPXC@GPF`"TF(*fBQp[E&&"FQ8
+JG'KP)("bDACTE'9RCA-JEfBJG'KTFb"TG'9Y)'&XGf&jFb"dD'8JFf&YC5"KFb"
+dD'8JBfpZG'&TEQ9b)'Pd)'Pc)(0dEh*PC#"TEMm3!!4TG'9Y!'0[BQT[BQSJ+A4
+SC5"TG'9Y)(4SBA3JG'KTFb"hD@jNEhFJGf&c)'p`C@jPC#"QFQpY!!!(E@peER4
+PC(0YEh9LEfpX0dPc)(4SDA-JBfpZG'&TEQ9b)'e[G@jdC@3JEfiJB@j[G'KPFL"
+YB@0SD@jP*h-JC'9cDh4[F$m!!!9[GfjPFR0[GfjTG(Kd)(4SC5"eFf9b)(4SBA3
+JEhGZFb"dD'8JBfpZG'&TEQ9b!"!!%'phEQ9b)("bDACTE'9RCA-!EhGZFR"bDAB
+rG'KP)(0PC5"QEfaNCA*c,h0PC5"QD@aPFbpYB@YP)'0SB@jRCA-JF(*TGQPXC@G
+PFb"QEh)JG'KP)'phEQ9b%!!*F(*[G'9MG'9NFh"bEf*[Ef`m5A-JBfpZG'&TEQ9
+b)("bEh4PBh4PC#"QFQpY)'*PD@jR)'e[GQ9N,#"bC@jKE@9N)'pb)'4PE'9dC@3
+r!"!!%R0SBA*KBQaP)'0[ER4KD@jPFJ"cBh4bEf*U)$GdD'8JFfKKFQ&LE'8JBfp
+ZG'&TEQ9b)(4SBA3JG'KTFb"hD@jNEhFJGf&c)'p`C@jPC#"QFQpY!!!'FfKKFQ9
+N!(0SBA*LEfpX'dPc)'0[ER4KD@jPFL"K)(0SBA*P)("[D@jd2a!!!!!2FfKKFQP
+ZCb"hD@jNEhGcFhGZC"4PGQ9bH5"cD'&bD@jR)(GTEQ4[G`!!!3!!Bd!M)A4jF'8
+!!!!"!!!+FfpeEQ3JCQPXC3"cEQ4Q)94SDA-JBfaKFh-JFQ9`FQ9cC@jdFb"cEh9
+ZC#"QD@aPF`#3"!YcEh9ZC#"QD@aPFh0ZC'B3CACPFRNJFfpeEQ3JCQPXC3!!!3!
+!Bd!M)A4jF'8!!!!"!!!0Fh4KG(9c)(GTEQ4[Gh&hEQ4A9'KPFf8JGfPZC'phFb"
+KFQ8JF(*[Ch*PFh-JC'PKE'pRFb!SBfp`H5"hD@jNEhFX)(*PBR9TE'3JC'9cDh4
+[F#"NBA4KBQ&cC5`JC@e`G(NJG(*KFfJT!*!%$R0dBA4eFb"hD@jNEhGc!(&hEQ3
+6CACPFRNJFh4KG(9c)(GTEQ4[G`!"!!"M3#-KG(P`C3!!!!%!!!KcG@PdBf&cC3"
+cG'0c)8%JCQpZG#"[FL"NCA0V)'&MBf9cFfpbH5"cG@PdBf&cC3!!!!&MEf*U!!*
+TEQ4iEQ&YC3PcG@PdBf&cCA0cG'0c$Q9fCA*j)(0eDA4MBA0P!!!"!!"M3#-KG(P
+`C3!!!!%!!!adFQ&cD#e[BQTPBh3!Bh4bFbp8FQ&cD#e[BQTPBh3JDA-JG'KP)'0
+XBA0c)'pQ)(4SC5$5G(*KFfM6)'pLDQ9MG!!"&(GKFQiJBQ9QEh*P)'9YF(4jD@j
+R!(GKFQjLEfpX0NPc)'%JC'PKE'pR)'4TFh"XBAPPC#"hD'9Z)0*&EA"dH5"dFQ&
+cD-R6)'Pc)(0PE'9MG'9N2`!3!!!2C(0eG!!#D@jNH'jKE@9KE'PK!!*TEQ4iEQ&
+YC@&`F'B!!QPZC(KZB@ePBh4ZFJ!#D@jNH'jKE@9MBf4f!!*TEQ4iEQ&YC@4KCQN
+!!QPZC(KZB@ePC'pMCJ!#D@jNH'jKE@9QD@aP!!*TEQ4iEQ&YC@0QEf`!!QPZC(K
+ZB@ePCQjdCJ!#D@jNH'jKE@9QFh9d!!*TEQ4iEQ&YC@0[BQS!!QPZC(KZB@ePFf0
+dFJ!#D@jNH'jKE@9cEQ4Q!!*TEQ4iEQ&YCA0dBh-!!QPZC(KZB@eP"(9cCA)!Bh9
+cC5a")&9cCA)JD@iJG'KP)&9cCA*c)'&ZC#"(FQpeF(-JBfpZG(*[E#"`B@jPE!!
+!"3CLEh9ZC(-!F'*ZC(&NFR3LG'KP)'*[G@jND@jR)(*PBh4KEQGXC5"[CL"dD'8
+JGA0PFJ!3!!4TBfpZ!'PTE@GTCQ&Y'h4SC5"TBfpZ)'*TG'eKF#"[CL"dD'8JGA0
+PFK!!#faKBQ9X)'PZC'9iE'&LD@a[EQF9G'KP)'aKBQ9X)'pQ)(4SC5"eFf9b%!!
+%EQ&YC3"`EQ&YDA4iG"4dD'8JEQ&YC5"[CL"dD'8JGA0PFJ!3!!K`Eh0TG'P[EJ"
+`Eh0Z884`G$&dD'8JF'pcDA4TEfiJEfBJG'KP)(9cCA)JGfPdD'PZ)'PdFb"`BA*
+PER3JGfPZC'ph%!!!!!9eFf9bFf0eFf8+CACPFRNJGA0PFJ!!!3!!Bd!M)A4jF'8
+!!!!"!!!'GfPZC'ph!'0hD@i)35"hD@jNEhF!N!8(GfPZC'phFf0hD@i-CACPFRN
+JGfPZC'ph!!!"!!"M3#-KG(P`C3!!!!%!N!8#GRGLH3!%#@0[EQCXD@0dFf0QE'-
+!!!jPH'PcG'PZCb"TG'9YF`"PH(0T!!!+FfeKE'`JD@0[EJ"cE@PM!!!$B@aXDhP
+KE!!!Ch0PEJ!)!d039A"bEf-!!!0'8&9QF(8J!!!$68e9E@ee)!!!#'KKFQ4hBA*
+P!'KNGh)!!""[F'9bBA4TEQFJFhPcG'9Y!'pc)#!!!!acEh9ZC#"cHA0dC@d!Ffj
+N)!!!%'ePE@pbH5"KGQ&TE'&LE'8!E(*KE3!!%'ePE@pbH5"TER0dB@aXC@3!FQ&
+Y)!#3"3%!!!!"!!!!BVS!!''k!!!"#3$%HY344!!!!"`!qJ!+3Nj%6!!!!&T*3di
+M!!!!CP0*@N8!!!"b4P*&4J!!!(jTBh-M!!!!LQPME$J!!!#@D@0X0!!!!+*TBh-
+i!!!!VQPMFc3!!!#kB@9dC3!!!-C3@94R!!!!dJ#!rrm!!!%G!-4jV!%Xrrm!N!A
+%H'$rN!3!!!%%!-4hV!#!rrm!!!%5!-4iC!%Xrrm!!!%p!-4i&!%Xrrm!!!'"!-4
+i'!%Xrrm!!!@&!-4i)!%Xrrm!!!H*!-4i%!%Xrrm!!!L0!-4i(!!!rrm!!!N4!*!
++BE8!a'5-$NphEQ9b)(*PFfpeFQ0P6M`:
diff --git a/Mac/Lib/test/tae.py b/Mac/Lib/test/tae.py
new file mode 100644
index 0000000..73c36b9
--- /dev/null
+++ b/Mac/Lib/test/tae.py
@@ -0,0 +1,112 @@
+# The oldest AppleEvent test program.
+# Its function has been overtaken by echo.py and tell.py.
+
+import AE
+from AppleEvents import *
+import Evt
+from Events import *
+import struct
+import aetools
+import macfs
+import sys
+import MacOS
+
+MacOS.EnableAppswitch(0)
+
+def aehandler(request, reply):
+ tosend = []
+ print 'request:', aetools.unpackevent(request)
+ param = request.AEGetParamDesc(keyDirectObject, typeWildCard)
+ if param.type == typeAEList:
+ n = param.AECountItems()
+ print 'List has', n, 'items'
+ for i in range(1, 1+n):
+ type, item = param.AEGetNthDesc(i, typeFSS)
+ data = item.data
+ print 'item', i, ':', type, item.type, len(data), 'bytes'
+ vol, dir, fnlen = struct.unpack('hlb', data[:7])
+ filename = data[7:7+fnlen]
+ print 'vol:', vol, '; dir:', dir, '; filename:', `filename`
+ print 'full path:', macfs.FSSpec((vol,dir,filename)).as_pathname()
+ tosend.append(item)
+ else:
+ pass
+ print 'param:', (param.type, param.data[:20]), param.data[20:] and '...'
+ if tosend:
+ passtothink(tosend)
+
+
+def passtothink(list):
+ target = AE.AECreateDesc(typeApplSignature, 'KAHL')
+ event = AE.AECreateAppleEvent(kCoreEventClass,
+ kAEOpenDocuments,
+ target,
+ kAutoGenerateReturnID,
+ kAnyTransactionID)
+ aetools.packevent(event, {keyDirectObject: list})
+ reply = event.AESend(kAENoReply | kAEAlwaysInteract | kAECanSwitchLayer,
+ kAENormalPriority,
+ kAEDefaultTimeout)
+ #print "Reply:", aetools.unpackevent(reply)
+ return
+ event = AE.AECreateAppleEvent(kCoreEventClass,
+ kAEOpenApplication,
+ target,
+ kAutoGenerateReturnID,
+ kAnyTransactionID)
+ reply = event.AESend(kAENoReply | kAEAlwaysInteract | kAECanSwitchLayer,
+ kAENormalPriority,
+ kAEDefaultTimeout)
+
+def unihandler(req, rep):
+ print 'unihandler'
+ aehandler(req, rep)
+
+quit = 0
+def quithandler(req, rep):
+ global quit
+ quit = 1
+
+def corehandler(req, rep):
+ print 'core event!'
+ parameters, attributes = aetools.unpackevent(req)
+ print "event class =", attributes['evcl']
+ print "event id =", attributes['evid']
+ print 'parameters:', parameters
+ # echo the arguments, to see how Script Editor formats them
+ aetools.packevent(rep, parameters)
+
+def wildhandler(req, rep):
+ print 'wildcard event!'
+ parameters, attributes = aetools.unpackevent(req)
+ print "event class =", attributes['evcl']
+ print "event id =", attributes['evid']
+ print 'parameters:', parameters
+
+AE.AEInstallEventHandler(typeAppleEvent, kAEOpenApplication, aehandler)
+AE.AEInstallEventHandler(typeAppleEvent, kAEOpenDocuments, aehandler)
+AE.AEInstallEventHandler(typeAppleEvent, kAEPrintDocuments, aehandler)
+AE.AEInstallEventHandler(typeAppleEvent, kAEQuitApplication, quithandler)
+AE.AEInstallEventHandler(typeAppleEvent, typeWildCard, unihandler)
+AE.AEInstallEventHandler('core', typeWildCard, corehandler)
+#AE.AEInstallEventHandler(typeWildCard, typeWildCard, wildhandler)
+
+
+def main():
+ global quit
+ quit = 0
+ while not quit:
+ ok, e = Evt.WaitNextEvent(-1, 60)
+ if ok:
+ print 'Event:', e
+ if e[0] == 23: # kHighLevelEvent
+ AE.AEProcessAppleEvent(e)
+ elif e[0] == keyDown and chr(e[1]&0xff) == '.' and e[4]&cmdKey:
+ raise KeyboardInterrupt, "Command-Period"
+ else:
+ MacOS.HandleEvent(e)
+
+if __name__ == '__main__':
+ main()
+
+print "This module is obsolete -- use echo.py or tell.py ..."
diff --git a/Mac/Lib/test/tell.py b/Mac/Lib/test/tell.py
new file mode 100644
index 0000000..74e0ca0
--- /dev/null
+++ b/Mac/Lib/test/tell.py
@@ -0,0 +1,63 @@
+# (Slightly less) primitive operations for sending Apple Events to applications.
+# This could be the basis of a Script Editor like application.
+
+from AE import *
+from AppleEvents import *
+import aetools
+import types
+
+class TalkTo:
+ def __init__(self, signature):
+ """Create a communication channel with a particular application.
+
+ For now, the application must be given by its 4-character signature
+ (because I don't know yet how to do other target types).
+ """
+ if type(signature) != types.StringType or len(signature) != 4:
+ raise TypeError, "signature should be 4-char string"
+ self.target = AECreateDesc(typeApplSignature, signature)
+ self.send_flags = kAEWaitReply
+ self.send_priority = kAENormalPriority
+ self.send_timeout = kAEDefaultTimeout
+ def newevent(self, code, subcode, parameters = {}, attributes = {}):
+ event = AECreateAppleEvent(code, subcode, self.target,
+ kAutoGenerateReturnID, kAnyTransactionID)
+ aetools.packevent(event, parameters, attributes)
+ return event
+ def sendevent(self, event):
+ reply = event.AESend(self.send_flags, self.send_priority,
+ self.send_timeout)
+ parameters, attributes = aetools.unpackevent(reply)
+ return reply, parameters, attributes
+
+ def send(self, code, subcode, parameters = {}, attributes = {}):
+ return self.sendevent(self.newevent(code, subcode, parameters, attributes))
+
+ def activate(self):
+ # Send undocumented but easily reverse engineered 'activate' command
+ self.send('misc', 'actv')
+
+
+# This object is equivalent to "selection" in AppleScript
+# (in the core suite, if that makes a difference):
+get_selection = aetools.Property('sele', None)
+
+# Test program. You can make it do what you want by passing parameters.
+# The default gets the selection from Quill (Scriptable Text Editor).
+
+def test(app = 'quil', suite = 'core', id = 'getd', arg = get_selection):
+ t = TalkTo(app)
+ t.activate()
+ if arg:
+ dict = {'----': arg}
+ else:
+ dict = {}
+ reply, parameters, attributes = t.send(suite, id, dict)
+ print reply, parameters
+ if parameters.has_key('----'): print "returns:", str(parameters['----'])
+
+
+test()
+# So we can see it:
+import sys
+sys.exit(1)