executor/docs/SynPaper.ps

1477 lines
100 KiB
PostScript

%!PS (but not EPSF; comments have been disabled)
%DVIPSCommandLine: dvips -f synpaper
%DVIPSParameters: dpi=600, compressed, comments removed
%DVIPSSource: TeX output 1995.10.27:1542
/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if}
forall round exch round exch]setmatrix}N /@landscape{/isls true N}B
/@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B
/FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{
/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N
string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N
end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{
/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]
N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup
length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{
128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub
get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data
dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N
/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup
/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx
0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff
.1 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N
/cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id
gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp
add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add
/gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{
dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1
adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2
idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string
putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval
adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg}
{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{
adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2
chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{]
}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup
length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{
cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul
add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict
/eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook
known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false
RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1
false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform
round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail
{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}
B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{
4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{
p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
a}B /bos{/SS save N}B /eos{SS restore}B end
TeXDict begin 40258431 52099146 1000 600 600 (synpaper.dvi)
@start /Fa 30 123 df<1530157815F8A215F01401A215E01403A215C01407A2158014
0FA215005CA2143EA2143C147CA2147814F8A25C1301A25C1303A25C1307A2495AA291C7
FC5BA2131E133EA2133C137CA2137813F8A25B1201A25B1203A2485AA25B120FA290C8FC
5AA2121E123EA2123C127CA2127812F8A25A12601D4B7CB726>47
D<EB0FE0EB7FFCEBF83E3903E00F803907C007C0EB8003000F14E0391F0001F0A24814F8
A2003E1300007E14FCA500FE14FEB2007E14FCA56CEB01F8A36C14F0A2390F8003E03907
C007C0A23903E00F803900F83E00EB7FFCEB0FE01F347DB126>I<13075B5B137FEA07FF
B5FC13BFEAF83F1200B3B3A2497E007FB51280A319327AB126>I<EB3FC0EBFFF0000313
FC380F80FF391E007F80001CEB3FC048EB1FE048130F15F00060130712FC6C14F87E1403
A3007E1307123CC7FC15F0A2140F15E0EC1FC0A2EC3F801500147E5C495A5C495A495A49
5A49C7FC133E133C4913185B485A48481330485A48C7FC001C1470001FB512F05A5AB612
E0A31D327CB126>I<EC01C0A214031407A2140F141FA2143F147F146F14CF1301EB038F
140F1307130E130C131C13381330137013E013C0EA0180120313001206120E120C5A1238
12305A12E0B71280A3C7380FC000A94A7E0107B51280A321337EB226>52
D<000C14C0380FC00F90B5128015005C5C14F014C0D80C18C7FC90C8FCA9EB0FC0EB7FF8
EBF07C380FC03F9038001F80EC0FC0120E000CEB07E0A2C713F01403A215F8A41218127E
12FEA315F0140712F8006014E01270EC0FC06C131F003C14806CEB7F00380F80FE3807FF
F8000113E038003F801D347CB126>I<14FE903807FF80011F13E090383F00F0017C1370
3901F801F8EBF003EA03E01207EA0FC0EC01F04848C7FCA248C8FCA35A127EEB07F0EB1F
FC38FE381F9038700F809038E007C039FFC003E0018013F0EC01F8130015FC1400A24814
FEA5127EA4127F6C14FCA26C1301018013F8000F14F0EBC0030007EB07E03903E00FC039
01F81F806CB51200EB3FFCEB0FE01F347DB126>I<1230123C003FB6FCA34814FEA215FC
0070C7123800601430157015E04814C01401EC0380C7EA07001406140E5C141814385CA2
5CA2495A1303A3495AA2130FA3131F91C7FCA25BA55BA9131C20347CB126>I<EB0FE0EB
7FFC90B5FC3903F01F803907C007C0390F0003E0000EEB01F0001E1300001C14F8003C14
78A3123EA2003F14F86D13F0EBC001D81FF013E09038F803C0390FFE07803907FF0F006C
13DE6C13F87EEB3FFE8001F713C0D803E313E0D8078013F0390F007FF8001E131F003EEB
07FC003C1303481301EC007E12F848143EA2151EA37E153C1278007C14787E6C14F0390F
8003E03907F01FC00001B5120038007FFCEB1FE01F347DB126>I<EB0FE0EB7FF8EBFFFE
3803F83F3907E00F80390FC007C0D81F8013E0EC03F0EA3F0048EB01F8127EA200FE14FC
1400A415FEA5007E1301A2127F7E1403EA1F80000F13073807C00E3803E01C3801F03838
007FF090381FC0FC90C7FC1401A215F8A215F01403001F14E0383F800715C0140FEC1F80
9038003F00001C137E381F01FC380FFFF0000313C0C690C7FC1F347DB126>I<DA03FE13
0C91393FFF801C91B512E0903A03FE01F83C903A0FF0003C7CD91FC0EB0EFCD97F801307
01FEC7120348481401000315005B4848157C485A173C485A171C123F5B007F160CA390C9
FC481600AB7E6D150CA3123F7F001F161C17186C7E17386C6C15306C6C15706D15E01201
6C6CEC01C0D97F80EB0380D91FC0EB0F00D90FF0131ED903FE13FC0100B512F0023F13C0
DA03FEC7FC2E377CB437>67 D<B77E16F016FE3A01FE0001FF00009138003FC0EE0FE070
7E707E707E707E177E177FEF3F80A2EF1FC0A3EF0FE0A418F0AA18E0A3171F18C0A21880
173F18005F17FE5F4C5AEE07F04C5AEE3FC000014AB45AB748C7FC16F8168034337EB23B
>I<D8FFFC923801FFF86D5DA20003EFFE00D801BFED06FCA3D99F80140CA2D98FC01418
A3D987E01430A2D983F01460A3D981F814C0A3D980FCEB0180A2027EEB0300A36E1306A2
6E6C5AA36E6C5AA36E6C5AA26E6C5AA36E6C5AA3913800FD80A2037FC7FCA3486C133ED8
0FF04B7EB5011C90387FFFF8A33D337CB246>77 D<B612FEEDFFC016F03A03FC0007FC00
01EC00FE167FEE3F80EE1FC017E0160FA217F0A617E0A2EE1FC0A2EE3F80EE7F0016FEED
07F890B65A168001FCC9FCB3A2487EB512F8A32C337DB234>80 D<EC07FC91387FFFC090
3901FC07F0903907E000FC4948137E013FC7EA1F80017E6E7E496E7E48486E7E00038249
140148486E7E000F8249157E001F167FA24848ED3F80A2007F17C0A390C9121F4817E0AB
6C17C0A26D153FA2003F1780A26D157F001F1700A2270FE001F013FE0007D907FC5B9039
F00E0E013B03F80C0703F8000190391C0383F03B00FC180187E0017EECCFC0013FECDF80
90271F9C00FFC7FCD907EC13FC902701FE07F013609038007FFF913807FC7091C7007813
E0A2EE7C01EE7E0393387F07C0EE3FFFA21880821800705A705AEE01F033447CB43C>I<
007FB712FEA390398007F001D87C00EC003E0078161E0070160EA20060160600E01607A3
481603A6C71500B3AB4A7E011FB512FCA330337DB237>84 D<B500FE90381FFFF8A30001
90C813006C48153C1718B3AF1738017F1530A217706D6C1460011F15E06E495A010F1403
6D6C495A6D6C49C7FCD901FC131E6DB413FC91383FFFF0020F13C0020190C8FC35357EB2
3A>I<267FFFFC90B512C0A3000101E090381FF80026007F80EB0FC0013F6E5A6E91C7FC
6D6C130E010F140C6E5B6D6C133801035C6E13606D6C13E06D6C485A5EDA7F83C8FCEC3F
C715C6EC1FECEC0FFC5D14076E7EA26E7E815C6F7E9138063FC0140E4A6C7E9138180FF0
EC380702707F91386003FCECC0010101804A6C7E49C77E4981010E6E7E010C6E7E131C49
6E7E01786E7E13FCD807FEEC1FFEB56C90B512F8A335337EB23A>88
D<EB7F803803FFF0380F80FC381C003E003F133F6D6C7E6E7EA26E7EEA1F00C7FCA4EB01
FF131FEBFF873803FC07EA0FF0EA1FC0EA3F80127F13004815C05AA3140FA26C131F6C13
3B3A3F8071F180391FC1E1FF2607FFC013003900FE003C22237DA126>97
D<153FEC0FFFA3EC007F81AEEB07F0EB3FFCEBFC0F3901F003BF3907E001FF48487E4848
7F8148C7FCA25A127E12FEAA127E127FA27E6C6C5BA26C6C5B6C6C4813803A03F007BFFC
3900F81E3FEB3FFCD90FE0130026357DB32B>100 D<EB0FE0EB7FFCEBF83F3903F00F80
D807E013C0390FC007E0381F800315F0EA3F0014014814F8127EA212FEA2B6FCA248C8FC
A5127E127FA26C1418A26C6C1338000F14306D13706C6C13E03901F003C03900FC0F00EB
3FFEEB07F01D237EA122>I<EA03F012FFA312071203AEEC1FC0EC7FF09038F1E0FC9038
F3807C9038F7007E13FE497FA25BA25BB3486CEB7F80B538C7FFFCA326347EB32B>104
D<EA0780EA0FC0EA1FE0A4EA0FC0EA0780C7FCAAEA07E012FFA3120F1207B3A6EA0FF0B5
FCA310337EB215>I<2703F01FE013FF00FF90267FF80313C0903BF1E07C0F03E0903BF3
803E1C01F02807F7003F387FD803FE1470496D486C7EA2495CA2495CB3486C496C487EB5
3BC7FFFE3FFFF0A33C217EA041>109 D<3903F01FC000FFEB7FF09038F1E0FC9038F380
7C3907F7007EEA03FE497FA25BA25BB3486CEB7F80B538C7FFFCA326217EA02B>I<3803
E07C38FFE1FF9038E38F809038E71FC0EA07EEEA03ECA29038FC0F8049C7FCA35BB2487E
B512E0A31A217FA01E>114 D<EBFF06000713CE381F00FE003C133E48131E140E5A1406
A27EA200FE90C7FC6C7EEA7FFC383FFFC014F0000F7F6C7FC67FEB0FFF1300EC3F8000C0
131F140F6C1307A37E15006C5B6C130E6C5B38F7807838E1FFE038C07F8019237EA11E>
I<1330A51370A313F0A21201A212031207381FFFFEB5FCA23803F000AF1403A814073801
F806A23800FC0EEB7E1CEB1FF8EB07E0182F7FAD1E>I<D803F0133F00FFEB0FFFA30007
EB007F000380B35DA35D12016D4813800000903803BFFC90387E073FEB1FFED907F81300
26227EA02B>I<003FB512F0A2EB000F003C14E00038EB1FC00030EB3F800070137F1500
006013FE495A13035CC6485A495AA2495A495A49C7FC153013FE485A12035B4848137048
5A001F14604913E0485A387F000348130F90B5FCA21C207E9F22>122
D E /Fb 1 16 df<EB0FE0EB7FFC497E0003EBFF804814C04814E04814F04814F8A24814
FCA3B612FEA86C14FCA36C14F8A26C14F06C14E06C14C06C1480C6EBFE006D5AEB0FE01F
207BA42A>15 D E /Fc 70 126 df<003C131E007F137F481480A66C1400A6007E7FA600
3E133EA3003C131E001C131C191977B32C>34 D<010F133C90381F807EA8013F13FE4A5A
A4007FB612F0B712F8A4003F15F03A007E01F800A5EBFE0301FC5BA6003FB612F0B712F8
A46C15F03A01F807E000A30003130F01F05BA86C486C5A25337DB22C>I<EB01C0497EA6
EB0FFC90387FFF8048B512E00007804880391FFBEFFC393FC3E1FE903803E07F007E8012
7C00FC158012F8157FA300FCEC3F00A2007E91C7FC127FEA3FC313FBEA1FFF6C13FC6C13
FF000114C06C6C7F011F13F801037F14E7ECE1FEECE07F81001880007E1580150F12FFA3
12FE151F1600007E5C007F143ED83F8313FE9038C3E1FC391FFBEFF86CB55A6C5C6C5CC6
91C7FCEB1FF8EB03E0A66D5A21417BB92C>I<D807801307D81FE0EB0F80151F487E486C
133F1600007C5CD8FCFC137EEAF87C15FE5D14015DA21403D8FCFC5BEA7CF8007F13075D
383FF00FD81FE05BA23807801FC75B143F92C7FCA25C147E14FE5CA213015CA213035C13
075CA2130F5C131FEC800FED3FC0013FEB7FE0140049EBFFF0017E13F9A2D9FE0113F801
FC13F0A2120113F8120313F015F90007010013F05B000F14FF49EB7FE0A20007EC3FC06C
48EB0F0025417DB92C>I<EB0FC0EB3FE0497E497E80EA01F8EBF07C147E0003133E13E0
A5147E147C9138FC3FF89039F0F87FFCEA01F1EBF3F001F7EB3FF89138E01F009038FFC0
3F6CEB803EA2EC007E49137C485A486C13FC00075CEBFF01D80FDF5B381F9F81383F8F83
90380FC3E0387E07E75D38FC03F7EB01FF5D6D1410ED007C80A26CEBFF80D87E0113C0D8
7F03EBE0FC3A3F87F7F1F89038FFE3FF6C01C113F06C13806C9038007FC0D801FCEB1F80
26357EB32C>I<EA0F80EA1FC0EA3FE013F0A213F8A2121F120F1200A4120113F0A21203
13E01207EA0FC0121FEA3F80EA7F0012FE5A5A12700D1B71B22C>I<143814FC13011303
EB07F8EB0FF0EB1FC0EB3F80EB7F0013FE485A485A5B12075B120F5B485AA2123F90C7FC
A25A127EA312FE5AAC7E127EA3127F7EA27F121FA26C7E7F12077F12037F6C7E6C7E137F
EB3F80EB1FC0EB0FF0EB07F8EB03FC130113001438164272B92C>I<127012FC7E7E6C7E
6C7EEA0FE06C7E6C7E6C7E6C7E137F7F1480131F14C0130FEB07E0A214F01303A214F813
01A314FC1300AC130114F8A3130314F0A2130714E0A2EB0FC0131F1480133F14005B13FE
485A485A485A485AEA3FC0485A48C7FC5A5A1270164279B92C>I<EB0380497EA6002014
0800F8143E00FE14FE00FF13C1EBC7C7EBE7CF003FB512F8000F14E0000314806C140038
007FFCA248B5FC481480000F14E0003F14F839FFE7CFFEEBC7C7EB07C100FE13C000F814
3E0020140800001400A66D5A1F247AAA2C>I<EA0F80EA1FE0EA3FF0EA7FF8A213FCA312
3F121F120F120013F8A21201EA03F01207EA1FE0EA7FC0EAFF80130012FC12700E17718A
2C>44 D<007FB6FCB71280A46C150021067B9B2C>I<121FEA3F80EA7FC0EAFFE0A5EA7F
C0EA3F80EA1F000B0B708A2C>I<EB03F8EB0FFE90383FFF80497F90B57E3901FE0FF039
03F803F848486C7EEBE0004848137EA248487FA248C7EA1F80A2003E140F007E15C0A300
7C140700FC15E0AC6C140F007E15C0A46CEC1F80A36C6CEB3F00A26C6C137E6D13FE0007
5CEBF0016C6C485A3901FE0FF06CB55A6D5B6D5BD90FFEC7FCEB03F823357CB32C>48
D<1307497EA2131FA2133F137F13FF5A1207127FB5FC13DF139FEA7C1F1200B3AE007FB5
12E0B612F0A36C14E01C3477B32C>I<EB0FF890387FFF8048B512E00007804814FC391F
F80FFE393FE001FF903880007F48C7EA3F80007E141F00FE15C0150F6C15E01507A3127E
123CC8FCA2150F16C0151F1680153F16005D15FE4A5A14034A5A4A5A4A5A4A5AECFF8049
48C7FC495A495A495AEB3FE0EB7F8049C8FC485A4848EB03C04848EB07E0EA1FE0485A48
B6FCB7FCA36C15C023347CB32C>I<EB0FFC90387FFF8048B512E0000714F84880391FF8
07FEEBC0004848137F6D7F1680151FA26C5A6CC7FCC8FC153F16005D15FE14014A5AEC1F
F890381FFFF0495BA215F86D7F90380007FEEC00FF81ED3F80ED1FC0150FA216E01507A2
123C127EB4FC150F16C0A248141F007FEC3F806DEB7F006C6C5B391FF807FE6CB55A6C5C
6C14E0C66C1380D90FFCC7FC23357CB32C>I<EC07F04A7E141F143FA2147EA214FCEB01
F8A2EB03F0EB07E0A2EB0FC0EB1F80A2EB3F00137EA25B485AA2485A5B1207485AA2485A
48C7FCA2127E5AB712FC16FEA36C15FCC8EAF800AA91387FFFF091B512F8A36E13F02734
7EB32C>I<000FB512FE4880A35D0180C8FCADEB83FE90389FFF8090B512E015F8819038
FE03FE9038F000FF01C07F49EB3F8090C7121F6C15C0C8120FA2ED07E0A4123C127EB4FC
150F16C0A248141F007EEC3F80007FEC7F006C6C5B6D485A391FF80FFC6CB55A6C5C0001
14C06C6C90C7FCEB0FF823347CB22C>I<EC3FC0903801FFF801077F011F7F497F90387F
E07F9039FF003F804848137FEA03F8485A5B000FEC3F004848131E4990C7FC123F90C9FC
A25A127EEB03FE90381FFF80D8FC7F13E000FDB57EB67E9038FE07FC9038F001FE9038C0
007F49EB3F8090C7121F16C048140F16E01507A3127EA47E150F6D14C0001F141F6D1480
000F143F6DEB7F003907F801FE3903FE07FC6CB55A6C5C6D5B011F1380D907FCC7FC2335
7CB32C>I<1278B712C016E0A316C000FCC7EA3F80ED7F0015FE00785CC712014A5A4A5A
5D140F5D4A5A143F92C7FC5C147E14FE5C13015CA2495AA213075CA3495AA4495AA5133F
91C8FCAA131E23357CB32C>I<EB07FC90383FFF8090B512E0000314F84880390FFC07FE
391FF001FF9038C0007F4848EB3F8090C7121F4815C0007E140FA56CEC1F80A26C6CEB3F
006D5B390FF001FE3903FC07F86CB55A6C6C13C0D907FCC7FC90387FFFC048B512F03903
FC07F8390FF001FE391FC0007F497F48C7EA1F80007EEC0FC0A248EC07E0A7007EEC0FC0
A2007F141F6C6CEB3F806C6CEB7F009038F001FF390FFC07FE6CB55A6C5CC614E0013F13
80D907FCC7FC23357CB32C>I<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F00C7FC
AE121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B2470A32C>58
D<EA0F80EA1FC0EA3FE0EA7FF0A5EA3FE0EA1FC0EA0F80C7FCAEEA0F80EA1FC0EA3FE012
7F13F0A4123F121F120F1201120313E01207EA0FC0A2EA3F80EA7F005A5A12F812700C30
71A32C>I<1507ED1F80153F15FF14034A1300EC1FFC4A5AECFFE0491380010790C7FCEB
0FFCEB3FF8EB7FE048485A4890C8FCEA0FFEEA1FF8EA7FF0EAFFC05BA27FEA7FF0EA1FF8
EA0FFEEA03FF6C13C06C6C7EEB3FF8EB0FFC6DB4FC01017F6D13E0EC3FF86E7EEC07FF6E
13801400153F151FED0700212A7BAD2C>I<127012FC7E6C7E13E06C7EEA1FFC6C7E3803
FF80C67FEB7FF0EB1FF8EB0FFEEB03FF6D13C06D6C7EEC3FF8EC0FFC6EB4FC0201138080
A25C02071300EC0FFCEC3FF8EC7FE049485A4990C7FCEB0FFEEB1FF8EB7FF0EBFFC00003
5BD80FFEC8FC485AEA7FF0485A138048C9FC5A1270212A7BAD2C>62
D<EC7F80903803FFE0010F7F013F7F497F9038FFC0FE3901FE007FD803F87F4848EB1F80
9038E00FCF390FC03FFF48484813C091B5FCEA3F01393E03F87F903907F03FE0007EEBE0
1F397C0FC00FEC8007A2EAFC1F00F8EB0003A900FCEB8007D87C0F14C0A2ECC00F3A7E07
E01F80003EEBF03F903903F87F00393F01FFFED81F805B6E5A6C6C6C5A3907E00FC09039
F00007C06C6CEB0FE0D801FE131F3900FFC0FF6DB512C06D1480010FEBFE00010313F890
38007FC023337CB22C>64 D<14FE497EA4497FA214EFA2130781A214C7A2010F7FA314C3
90381F83F0A590383F01F8A490387E00FCA549137E90B512FEA34880A29038F8003FA348
48EB1F80A4000715C049130FD87FFEEBFFFC6D5AB514FE6C15FC497E27347EB32C>I<02
FF13700107EBE0F84913F9013F13FD4913FFEBFF813901FE007F4848131FD807F0130F15
07485A491303485A150148C7FCA25A007EEC00F01600A212FE5AAB7E127EA3007F15F06C
EC01F8A26C7EA26C6C13036D14F06C6C130716E0D803FC131F6C6CEB3FC03A00FF81FF80
6DB512006D5B010F5B6D13F00100138025357DB32C>67 D<007FB5FCB612C015F0816C80
3907E003FEEC00FFED7F80153FED1FC0ED0FE0A2150716F0150316F81501A4ED00FCACED
01F8A3150316F0A2150716E0150FED1FC0153FED7F80EDFF00EC03FE007FB55AB65A5D15
C06C91C7FC26337EB22C>I<007FB612F0B712F8A37E3903F00001A7ED00F01600A4EC01
E04A7EA490B5FCA5EBF003A46E5A91C8FCA5163C167EA8007FB612FEB7FCA36C15FC2733
7EB22C>I<903901FC038090390FFF87C04913EF017F13FF90B6FC4813073803FC01497E
4848137F4848133F49131F121F5B003F140F90C7FCA2127EED078092C7FCA212FE5AA891
3803FFF84A13FCA27E007E6D13F89138000FC0A36C141FA27F121F6D133F120F6D137F6C
7E6C6C13FF6D5A3801FF076C90B5FC6D13EF011F13CF6DEB0780D901FCC7FC26357DB32C
>71 D<007FB512F8B612FCA36C14F839000FC000B3B3A5007FB512F8B612FCA36C14F81E
3379B22C>73 D<D87FF0EB7FFC486CEBFFFEA27F007FEC7FFCD807FEEB07C013DEA213DF
13CFA2148013C714C0A213C314E0A213C114F0A213C014F8A2147CA3143EA2141E141FA2
140F1587A2140715C7A2140315E71401A215F71400A215FFD87FFC137F487E153FA26C48
EB1F8027337EB22C>78 D<EB7FFF0003B512E0000F14F848804880EBE003EB800048C712
7FA2007E80A300FE158048141FB3A86C143FA2007E1500A3007F5CA26C6C13FEEBF00790
B5FC6C5C6C5C000314E0C66C90C7FC21357BB32C>I<007FB512C0B612F88115FF6C1580
2603F00013C0153FED0FE0ED07F0A2150316F81501A6150316F01507A2ED0FE0ED3FC015
FF90B61280160015FC5D15C001F0C8FCB0387FFF80B57EA36C5B25337EB22C>I<387FFF
FCB67E15E015F86C803907E007FE1401EC007F6F7E151FA26F7EA64B5AA2153F4BC7FCEC
01FE140790B55A5D15E081819038E007FCEC01FE1400157F81A8160FEE1F80A5D87FFEEB
1FBFB5ECFF00815E6C486D5AC8EA01F029347EB22C>82 D<90381FF80790B5EA0F804814
CF000714FF5A381FF01F383FC003497E48C7FC007E147F00FE143F5A151FA46CEC0F0000
7E91C7FC127F7FEA3FE0EA1FFCEBFFC06C13FC0003EBFFC06C14F06C6C7F01077F903800
7FFEEC07FF02001380153FED1FC0A2ED0FE0A20078140712FCA56CEC0FC0A26CEC1F806D
133F01E0EB7F009038FE01FF90B55A5D00F914F0D8F83F13C0D8700790C7FC23357CB32C
>I<007FB612FCB712FEA43AFC007E007EA70078153CC71400B3AF90383FFFFCA2497F6D
5BA227337EB22C>I<3B7FFF803FFFC0B56C4813E0A36C496C13C03B03F00001F800B3AF
6D130300015DA26D130700005D6D130F017F495A6D6C485AECE0FF6DB5C7FC6D5B010313
F86D5B9038003F802B3480B22C>I<D87FF0EB07FF486C491380A36C486D1300001FC812
7CA46C6C5CA76C6C495AA4143E147FA33A03E0FF83E0A214F7A201E113C3A3000101E35B
A201F113C701F313E7A314C1A200005DA201F713F71480A301FF13FF017F91C7FC4A7EA4
013E133E29347FB22C>87 D<3A3FFF03FFE0484913F0148714076C6D13E03A01F800FE00
7F0000495A13FE017E5BEB7F03013F5B1487011F5B14CF010F5B14FF6D5BA26D90C7FCA2
6D5AA26D5AA2497EA2497EA2497F81EB0FCF81EB1FC7EC87F0EB3F83EC03F8EB7F01017E
7FEBFE00497F0001147E49137F000380491480151FD87FFEEBFFFC6D5AB514FE6C15FC49
7E27337EB22C>I<003FB612C04815E0A4007EC7EA1FC0ED3F80A2ED7F00157E15FE4A5A
003C5CC712034A5AA24A5A4A5AA24A5A4AC7FCA214FE495AA2495A495AA2495A495AA249
5A49C8FCA213FE485AA24848EB03C049EB07E01207485A5B121F485AA248C7FCB7FCA46C
15C023337CB22C>90 D<007FB6FCB71280A46C150021067B7D2C>95
D<3801FFF0000713FE001F6D7E15E048809038C01FF81407EC01FC381F80000006C77EC8
127EA3ECFFFE131F90B5FC1203120F48EB807E383FF800EA7FC090C7FC12FE5AA47E007F
14FEEB8003383FE01F6CB612FC6C15FE6C14BF0001EBFE1F3A003FF007FC27247CA32C>
97 D<EA7FF0487EA3127F1201AAEC1FE0ECFFF801FB13FE90B6FC16809138F07FC09138
801FE091380007F049EB03F85BED01FC491300A216FE167EA816FE6D14FCA2ED01F86D13
036DEB07F0150F9138801FE09138E07FC091B51280160001FB5B01F813F83900F03FC027
337FB22C>I<903803FFE0011F13F8017F13FE48B5FC48804848C6FCEA0FF0485A49137E
4848131890C9FC5A127EA25AA8127EA2127F6C140F6DEB1F806C7E6D133F6C6CEB7F0039
07FE03FF6CB55A6C5C6C6C5B011F13E0010390C7FC21247AA32C>I<EC0FFE4A7EA380EC
003FAAEB07F8EB3FFE90B512BF4814FF5A3807FC0F380FF00348487E497E48487F90C7FC
007E80A212FE5AA87E007E5CA2007F5C6C7E5C6C6C5A380FF0073807FC1F6CB612FC6CEC
BFFE6C143FEB3FFC90390FF01FFC27337DB22C>I<EB03FE90381FFFC0017F13F048B57E
48803907FE03FE390FF800FFD81FE0EB3F805B4848EB1FC090C7120F5A007E15E015075A
B7FCA416C000FCC9FC7E127EA2127F6CEC03C06DEB07E06C7ED80FF0130F6C6CEB3FC001
FF13FF000190B512806C1500013F13FC010F13F00101138023247CA32C>I<EC0FF8EC3F
FE91B5FC4914805B903807FC7F14F090390FE03F0014C092C7FCA6007FB512FEB7FCA36C
5C26000FC0C7FCB3A8003FB512F04880A36C5C21337DB22C>I<ED03F8903907F80FFC90
391FFE3FFE017FB6FC48B7FC48ECFE7F9038FC0FF82607F003133E3A0FE001FC1CD9C000
1300001F8049137EA66D13FE000F5CEBE0016C6C485A3903FC0FF048B5FC5D481480D99F
FEC7FCEB87F80180C8FCA37F6C7E90B512F06C14FE48ECFF804815E04815F03A3FC0001F
F848C7EA03FC007E1400007C157C00FC157E48153EA46C157E007E15FCD87F801303D83F
E0EB0FF8D81FFCEB7FF06CB612E0000315806C1500D8003F13F8010713C028387EA42C>
I<EA7FF0487EA3127F1201AAEC1FE0EC7FFC9038F9FFFE01FB7F90B6FC9138F03F80ECC0
1F02807FEC000F5B5BA25BB3267FFFE0B5FCB500F11480A36C01E0140029337FB22C>I<
1307EB1FC0A2497EA36D5AA20107C7FC90C8FCA7387FFFC080B5FC7EA2EA0007B3A8007F
B512FCB612FEA36C14FC1F3479B32C>I<140EEC3F80A2EC7FC0A3EC3F80A2EC0E0091C7
FCA748B512804814C0A37EC7120FB3B3A2141F003C1480007E133FB414005CEB01FEEBFF
FC6C5B5C001F5B000790C7FC1A467CB32C>I<EA7FE0487EA3127F1201AA91381FFFF04A
13F8A36E13F0913800FE004A5A4A5A4A5A4A5A4A5A4A5A4AC7FC14FEEBF1FC13F3EBF7FE
90B5FCA2EC9F80EC0FC001FE7FEBFC07496C7E496C7E811400157E811680151F3A7FFFC0
FFFCB500E113FEA36C01C013FC27337EB22C>I<387FFFE0B57EA37EEA0003B3B3A5007F
B61280B712C0A36C158022337BB22C>I<3A7F83F007E09039CFFC1FF83AFFDFFE3FFCD8
7FFF13FF91B57E3A07FE1FFC3E01FCEBF83F496C487E01F013E001E013C0A301C01380B3
3B7FFC3FF87FF0027F13FFD8FFFE6D13F8D87FFC4913F0023F137F2D2481A32C>I<397F
F01FE039FFF87FFC9038F9FFFE01FB7F6CB6FC00019038F03F80ECC01F02807FEC000F5B
5BA25BB3267FFFE0B5FCB500F11480A36C01E0140029247FA32C>I<EB07FCEB1FFF017F
13C048B512F048803907FC07FC390FF001FE48486C7E0180133F003F158090C7121F007E
EC0FC0A348EC07E0A76C140F007E15C0A2007F141F6C15806D133F6C6CEB7F006D5B6C6C
485A3907FC07FC6CB55A6C5C6C6C13C0011F90C7FCEB07FC23247CA32C>I<397FF01FE0
39FFF8FFF801FB13FE90B6FC6C158000019038F07FC09138801FE091380007F049EB03F8
5BED01FC491300A216FE167EA816FE6D14FCA2ED01F86D13036DEB07F0150F9138801FE0
9138E07FC091B51280160001FB5B01F813F8EC3FC091C8FCAD387FFFE0B57EA36C5B2736
7FA32C>I<903903FC078090391FFF0FC0017F13CF48B512EF4814FF3807FE07380FF001
48487E49137F4848133F90C7FC48141F127E150F5AA87E007E141FA26C143F7F6C6C137F
6D13FF380FF0033807FC0F6CB6FC6C14EF6C6C138F6D130FEB07F890C7FCAD0203B5FC4A
1480A36E140029367DA32C>I<D87FFEEB3FC0B53801FFF0020713F8021F13FC6C5B3900
3F7FE1ECFF019138FC00F84A13704A13005CA25C5CA391C8FCAF007FB512E0B67EA36C5C
26247EA32C>I<90387FF8700003B512F8120F5A5A387FC00F387E00034813015AA36CEB
00F0007F140013F0383FFFC06C13FE6CEBFF80000314E0C66C13F8010113FCEB0007EC00
FE0078147F00FC143F151F7EA26C143F6D133E6D13FE9038F007FC90B5FC15F815E000F8
148039701FFC0020247AA32C>I<131E133FA9007FB6FCB71280A36C1500D8003FC8FCB1
ED03C0ED07E0A5EC800F011FEB1FC0ECE07F6DB51280160001035B6D13F89038003FE023
2E7EAD2C>I<3A7FF003FF80486C487FA3007F7F0001EB000FB3A3151FA2153F6D137F39
00FE03FF90B7FC6D15807F6D13CF902603FE07130029247FA32C>I<3A7FFF01FFFCB514
FE148314016C15FC3A03E0000F80A26D131F00011500A26D5B0000143EA26D137E017C13
7CA2017E13FC013E5BA2EB3F01011F5BA21483010F5BA214C701075BA214EF01035BA214
FF6D90C7FCA26D5A147C27247EA32C>I<D87FFFEB7FFF6EB5FCB515806C16004A7ED807
C0EB01F0A66C6C495AA3143E147FA2D801F0495AECFF87A214F7A201F113C700005D9038
F9E3CFA201FB13EFA3D97BC190C7FC017F13FFA21480A2013F5B90381F007C29247FA32C
>I<3A3FFF03FFF048018713F8A36C010313F03A00FC007E005D90387E01F8013F5BEB1F
83EC87E090380FCFC0903807EF80EB03FF6D90C7FC5C6D5A147C14FE130180903803EF80
903807CFC0EB0FC7EC83E090381F01F0013F7FEB7E00017C137C49137E0001803A7FFF01
FFFC1483B514FE6C15FC140127247EA32C>I<3A7FFF01FFFCB5008113FE148314816C01
0113FC3A03E0000F806C7E151F6D140012005D6D133E137C017E137E013E137CA2013F13
FC6D5BA2EB0F815DA2EB07C1ECC3E0A2EB03E3ECE7C0130114F75DEB00FFA292C7FC80A2
143EA2147E147CA214FC5CA2EA0C01003F5BEA7F83EB87E0EA7E0F495A387FFF806C90C8
FC6C5A6C5AEA07E027367EA32C>I<15FF02071380141F147F91B512004913C04AC7FCEB
03F85CB31307EB1FE013FF007F5BB55A49C8FC6D7E6C7FC67F131FEB07F01303B380EB01
FEECFFC06D13FF6E1380141F14070200130021417BB92C>123 D<EA7FC0EAFFF813FE6D
7E6C7FC67F131FEB07F01303B380EB01FEECFFC06D13FF6E1380141F147F91B512004913
C04AC7FCEB03F85CB31307EB1FE013FF007F5BB55A49C8FC13F8EA7FC021417BB92C>
125 D E /Fd 72 123 df<DA0FF813FC91397FFF07FF903B01F807DF83C0903A07E001FF
0F903B1F8007FE1FE090393F000FFC137E16F85B9338F007804848010790C7FC1503ACB8
12F8A32801F80003F0C7FCB3AB486C497E267FFFE0B512F0A3333B7FBA30>11
D<EC0FF8EC7FFE903901F80780903907E001C090391F8000E090383F0007017E497EA25B
A2485A6F5AED018092C8FCA9ED03F0B7FCA33901F8000F1503B3AA486C497E267FFFE0B5
12C0A32A3B7FBA2E>I<EC0FFC91387FFF70903901F803F0903807E00790381F800FEB3F
00137EA25B150748481303ADB7FCA33901F80003B3AB486C497E267FFFE0B512C0A32A3B
7FBA2E>I<DA0FF0EB1FF0DA7FFEEBFFFC903B01F80F83F00F903C07E001CFC00380903C
1F8000FF0001C090273F0007FE130F017E4948497EA2495CA248485C03076E5A03030203
C7FC95C8FCA9F007E0BAFCA33C01F80003F0001F1807B3AA486C496C497E267FFFE0B500
C1B51280A3413B7FBA45>I<001C131C007F137F39FF80FF80A26D13C0A3007F137F001C
131C00001300A40001130101801380A20003130301001300485B00061306000E130E485B
485B485B006013601A197DB92A>34 D<121C127FEAFF80A213C0A3127F121C1200A41201
1380A2120313005A1206120E5A5A5A12600A1979B917>39 D<146014E0EB01C0EB0380EB
0700130E131E5B5BA25B485AA2485AA212075B120F90C7FCA25A121EA2123EA35AA65AB2
127CA67EA3121EA2121F7EA27F12077F1203A26C7EA26C7E1378A27F7F130E7FEB0380EB
01C0EB00E01460135278BD20>I<12C07E12707E7E7E120F6C7E6C7EA26C7E6C7EA21378
A2137C133C133E131EA2131F7FA21480A3EB07C0A6EB03E0B2EB07C0A6EB0F80A31400A2
5B131EA2133E133C137C1378A25BA2485A485AA2485A48C7FC120E5A5A5A5A5A13527CBD
20>I<121C127FEAFF80A213C0A3127F121C1200A412011380A2120313005A1206120E5A
5A5A12600A19798817>44 D<B512FCA516057F941C>I<121C127FEAFF80A5EA7F00121C
0909798817>I<150C151E153EA2153C157CA2157815F8A215F01401A215E01403A215C0
1407A21580140FA215005CA2141E143EA2143C147CA2147814F8A25C1301A25C1303A249
5AA25C130FA291C7FC5BA2131E133EA2133C137CA2137813F8A25B1201A25B1203A25B12
07A25B120FA290C8FC5AA2121E123EA2123C127CA2127812F8A25A12601F537BBD2A>I<
EB03F8EB1FFF90387E0FC09038F803E03901E000F0484813780007147C48487FA248C77E
A2481580A3007EEC0FC0A600FE15E0B3007E15C0A4007F141F6C1580A36C15006D5B000F
143EA26C6C5B6C6C5B6C6C485A6C6C485A90387E0FC0D91FFFC7FCEB03F8233A7DB72A>
I<EB01C013031307131F13FFB5FCA2131F1200B3B3A8497E007FB512F0A31C3879B72A>
I<EB0FF0EB7FFE48B57E3903E03FE0390F000FF0000E6D7E486D7E486D7E123000706D7E
126012FCB4EC7F807FA56CC7FC121CC8FCEDFF00A34A5A5D14035D4A5A5D140F4A5A4A5A
92C7FC147C5C495A495A495A495A91C8FC011EEB01805B5B49130348481400485A485A00
0EC75A000FB6FC5A5A485CB6FCA321387CB72A>I<EB07F8EB3FFF4913C03901F80FF039
03C007F848486C7E380E0001000F80381FE0006D7FA56C5A6C5AC85A1401A25D4A5AA24A
5A5DEC0F80027EC7FCEB1FFCECFF809038000FE06E7EEC01FC816E7EED7F80A216C0A215
3F16E0A2121EEA7F80487EA416C049137F007F1580007EC7FC0070ECFF006C495A121E39
0F8003F83907F00FF00001B512C06C6C90C7FCEB0FF8233A7DB72A>I<1538A2157815F8
A2140114031407A2140F141F141B14331473146314C313011483EB030313071306130C13
1C131813301370136013C01201EA038013005A120E120C5A123812305A12E0B712F8A3C7
3803F800AB4A7E0103B512F8A325397EB82A>I<0006140CD80780133C9038F003F890B5
FC5D5D158092C7FC14FC38067FE090C9FCABEB07F8EB3FFE9038780F803907E007E09038
8003F0496C7E12066E7EC87EA28181A21680A4123E127F487EA490C71300485C12E00060
5C12700030495A00385C6C1303001E495A6C6C485A3907E03F800001B5C7FC38007FFCEB
1FE0213A7CB72A>I<EC3FC0903801FFF0010713FC90380FE03E90383F800790387E001F
49EB3F804848137F485AA2485A000FEC3F0049131E001F91C7FCA2485AA3127F90C9FCEB
01FC903807FF8039FF1E07E090383801F0496C7E01607F01E0137E497FA249148016C015
1FA290C713E0A57EA56C7E16C0A2121FED3F807F000F15006C6C5B15FE6C6C5B6C6C485A
3900FE07F090383FFFC06D90C7FCEB03FC233A7DB72A>I<12301238123E003FB612E0A3
16C05A168016000070C712060060140E5D151800E01438485C5D5DC712014A5A92C7FC5C
140E140C141C5CA25CA214F0495AA21303A25C1307A2130FA3495AA3133FA5137FA96DC8
FC131E233B7BB82A>I<EB03F8EB1FFF017F13C09038FC07F03901E001F848486C7E4848
137C90C77E48141E000E141F001E80A3121FA27F5D01E0131E6C6C133E01FC133C6D5B6C
6C6C5AECC1E06CEBF3C06C01FFC7FC6C5BEB3FFF6D13C081017F13F801F07F3903E07FFE
3907801FFF48486C1380481303003E6D13C0003CEB007F007C143F0078EC0FE000F81407
5A1503A21501A36C15C012781503007C15806CEC07006C5C6C6C131ED807E0137C3903F8
03F0C6B55A013F1380D907FCC7FC233A7DB72A>I<EB03F8EB1FFF017F13C09038FC07E0
3903F803F048486C7E48486C7E49137E121F48487FA2007F158090C7FCA248EC1FC0A616
E0A56C143FA27F123F001F147FA26C6C13FF6C6C13DF000313013901F0039F3900FC0F1F
D93FFC13C0EB07F090C7FC153F1680A316005D000F147E487E486C5BA24A5A4A5A49485A
6C48485A001C495A260F807FC7FC3807FFFC000113F038003FC0233A7DB72A>I<121C12
7FEAFF80A5EA7F00121CC7FCB2121C127FEAFF80A5EA7F00121C092479A317>I<121C12
7FEAFF80A5EA7F00121CC7FCB2121C127F5A1380A4127F121D1201A412031300A25A1206
A2120E5A121812385A1260093479A317>I<EB3FE03801FFFE3907C03F80390E000FC000
3CEB07F000301303007014F8007C130100FE14FC7EA4127E003CEB03F8C7FCEC07F0A2EC
0FE0EC1F80EC3F00147E147C5C495A5C495A5CA249C7FCA31306AA90C8FCA8130EEB3F80
497EA56D5A010EC7FC1E3B7CBA27>63 D<1538A3157CA315FEA34A7EA34A6C7EA202077F
EC063FA2020E7FEC0C1FA2021C7FEC180FA202387FEC3007A202707FEC6003A202C07F15
01A2D901807F81A249C77F167FA20106810107B6FCA24981010CC7121FA2496E7EA3496E
7EA3496E7EA213E0707E1201486C81D80FFC02071380B56C90B512FEA3373C7DBB3E>65
D<B712E016FC16FF0001903980007FC06C90C7EA1FE0707E707E707EA2707EA283A75F16
035F4C5A4C5A4C5A4C5AEEFF8091B500FCC7FCA291C7EA7F80EE1FE0EE07F0707E707E83
707EA21880177F18C0A7188017FFA24C13005F16034C5AEE1FF8486DEB7FF0B812C094C7
FC16F832397DB83B>I<913A01FF800180020FEBE003027F13F8903A01FF807E07903A03
FC000F0FD90FF0EB039F4948EB01DFD93F80EB00FF49C8127F01FE153F12014848151F48
48150FA248481507A2485A1703123F5B007F1601A35B00FF93C7FCAD127F6DED0180A312
3F7F001F160318006C7E5F6C7E17066C6C150E6C6C5D00001618017F15386D6C5CD91FE0
5C6D6CEB03C0D903FCEB0F80902701FF803FC7FC9039007FFFFC020F13F002011380313D
7BBA3C>I<B712C016F816FE000190398001FF806C90C7EA3FE0EE0FF0EE03F8707E707E
177FA2EF3F8018C0171F18E0170F18F0A3EF07F8A418FCAC18F8A4EF0FF0A218E0A2171F
18C0EF3F80A2EF7F0017FE4C5A4C5AEE0FF0EE3FE0486DEBFF80B8C7FC16F816C036397D
B83F>I<B812FCA30001903880000F6C90C71201EE007E173E171E170EA31706A3170783
16C0A394C7FCA31501A21503150F91B5FCA3EC000F15031501A21500A21860A318E093C7
12C0A41701A3EF0380A21707A2170F173F177F486D903807FF00B9FCA333397DB839>I<
B812F8A30001903880001F6C90C71201EE00FC177C173C171CA2170CA4170E1706A2ED01
80A21700A41503A21507151F91B5FCA3EC001F15071503A21501A692C8FCAD4813C0B612
C0A32F397DB836>I<B648B512FEA30001902680000313006C90C76C5AB3A491B6FCA391
C71201B3A6486D497EB648B512FEA337397DB83E>72 D<B612C0A3C6EBC0006D5AB3B3AD
497EB612C0A31A397EB81E>I<B612E0A3000101C0C8FC6C90C9FCB3AD1718A517381730
A31770A317F0A216011603160FEE1FE0486D13FFB8FCA32D397DB834>76
D<B5933807FFF86E5DA20001F0FC002600DFC0ED1BF8A2D9CFE01533A3D9C7F01563A3D9
C3F815C3A2D9C1FCEC0183A3D9C0FEEC0303A2027F1406A36E6C130CA36E6C1318A26E6C
1330A36E6C1360A26E6C13C0A3913901FC0180A3913900FE0300A2ED7F06A3ED3F8CA2ED
1FD8A3ED0FF0A3486C6D5A487ED80FFC6D48497EB500C00203B512F8A2ED018045397DB8
4C>I<B5913807FFFE8080C69238007FE06EEC1F80D9DFF0EC0F001706EBCFF8EBC7FCA2
EBC3FEEBC1FFA201C07F6E7EA26E7E6E7E81140F6E7E8114036E7E168080ED7FC016E015
3FED1FF0ED0FF8A2ED07FCED03FEA2ED01FF6F1386A2EE7FC6EE3FE6A2EE1FF6EE0FFEA2
16071603A216011600A2177E486C153E487ED80FFC151EB500C0140EA2170637397DB83E
>I<EC03FF021F13E09138FE01FC903901F8007ED907E0EB1F8049486D7ED93F80EB07F0
49C76C7E01FE6E7E48486E7E49157E0003167F4848ED3F80A24848ED1FC0A2001F17E049
150F003F17F0A3007F17F8491507A300FF17FCAC007F17F86D150FA3003F17F0A26C6CED
1FE0A36C6CED3FC0000717806D157F000317006C6C15FEA26C6C4A5A017F4A5A6D6C495A
6D6C495AD907E0EB1F80D903F8017FC7FC903900FE01FC91381FFFE0020390C8FC363D7B
BA41>I<B712C016F816FE000190398001FF806C90C7EA3FC0EE0FE0EE07F0EE03F817FC
17FE1601A217FFA717FEA2EE03FCA2EE07F817F0EE0FE0EE3FC0923801FF0091B512FC16
F091C9FCB3A5487FB6FCA330397DB839>I<EC03FF021F13E09138FE01FC903901F8007E
D907E0EB1F8049486D7ED93F80EB07F049C76C7E01FE6E7E48486E7EA24848157F000717
8049153F000F17C049151F001F17E0A24848ED0FF0A3007F17F8A2491507A200FF17FCAC
007F17F8A26D150FA2003F17F0A26C6CED1FE0A36C6CED3FC00007027C14804AB4FC3C03
F80383807F003B01FC0701C0FEEC0E002600FE0CEBE1FC017FEC63F8D93F8CEB77F0D91F
CCEB3FE0D907EE14806DB449C7FC0100D981FC130CEC1FFF0203131C91C7001E131C161F
183CEF807CEFC0F8EE0FFFA318F08218E07013C07013809338007E00364B7BBA41>I<B6
12FEEDFFE016F8000190388007FE6C90C76C7EEE3FC0707E707E707EA2707EA283A65FA2
4C5AA24C5A4C5AEE3F8004FFC8FCED07FC91B512E05E9138000FF0ED03F8ED00FE82707E
707EA2161F83A583A6F00180A217F8160F1803486D01071400B66D6C5A04011306933800
FE0ECAEA3FFCEF07F0393B7DB83D>I<D90FF813C090383FFE0190B512813903F807E339
07E000F74848137F4848133F48C7121F003E140F007E1407A2007C140312FC1501A36C14
00A37E6D14006C7E7F13F86CB47E6C13F8ECFF806C14E06C14F86C14FEC680013F148001
0714C0EB007F020713E0EC007FED3FF0151F150FED07F8A200C01403A21501A37EA216F0
7E15036C15E06C14076C15C06C140F6DEB1F80D8FBF0EB3F00D8F0FE13FE39E03FFFF801
0F13E0D8C00190C7FC253D7CBA2E>I<003FB812E0A3D9C003EB001F273E0001FE130348
EE01F00078160000701770A300601730A400E01738481718A4C71600B3B0913807FF8001
1FB612E0A335397DB83C>I<B6903807FFFEA3000101809038007FE06C90C8EA1F80EF0F
001706B3B2170E6D150C80171C133F17186D6C14385F6D6C14F06D6C5C6D6C495A6D6CEB
07806D6C49C7FC91387F807E91381FFFF8020713E09138007F80373B7DB83E>I<B5D8FC
07B5D8F001B5FCA30007902780001FFEC7EA1FF86C48C7D80FF8EC07E000010307ED03C0
1B807F6C6F6C1500A26E5F017F6E6C1406A280013F4A6C5CA280011F4A6D5BEE067FA26D
6C010E6D5BEE0C3FA26D6C011C6D5BEE181FA26D6C6F5BEE300FA26D6C6F485AEE6007A2
6D6C4CC7FC9338C003FCA203805D913B7F818001FE06A203C1150EDA3FC3C7EAFF0CA203
E3151CDA1FE6EC7F98A215F6DA0FFCEC3FF0A302075E4B141FA202035E4B140FA202015E
4B1407A2020093C8FC4B80503B7EB855>87 D<007FB590383FFFFCA3C601F801071380D9
7FE0D903FCC7FC013FEC01F06D6C5C5F6D6C5C6D6C13034CC8FC6D6C1306160E6D6C5B6D
EB8018163891387FC0306E6C5A16E06E6C5A91380FF18015FB6EB4C9FC5D14036E7EA26E
7F6F7EA24B7E15DF9138019FF09138038FF8150F91380607FC91380E03FE140C4A6C7EEC
38000230804A6D7E14E04A6D7E49486D7E130391C76C7E01066E7E130E010C6E7E011C14
01013C8101FE822607FF80010713E0B500E0013FEBFF80A339397EB83E>I<3901800180
000313033907000700000E130E485B0018131800381338003013300070137000601360A2
00E013E0485BA400CE13CE39FF80FF806D13C0A3007F137FA2393F803F80390E000E001A
1974B92A>92 D<EB1FE0EBFFFC3803E03F3907000F80390F8007E0486C6C7E13E06E7EA2
6E7E6C5A6C5AC8FCA4147FEB07FFEB3FE0EBFE00EA03F8EA0FF0EA1FC0123F485A90C7FC
160C12FEA31401A26C13036CEB077C903980063E18383FC01E3A0FE0781FF03A03FFF00F
E03A007F8007C026277DA52A>97 D<EA03F012FFA3120F1203B0EC1FE0EC7FF89038F1E0
3E9039F3801F809039F7000FC001FEEB07E049EB03F049EB01F85BED00FCA216FEA2167E
167FAA167E16FEA216FC15016D14F8ED03F07F01EEEB07E001C6EB0FC09039C7801F0090
3881E07E903800FFF8C7EA1FC0283B7EB92E>I<EB03FC90381FFF8090387E03E03901F8
0070484813F83907E001FC380FC003A2EA1F80123F90380001F848EB00F01500A2127E12
FEAA127E127FA26C14067F001F140E6D130C000F141C6C6C13386C6C13706C6C13E03900
7C07C090381FFF00EB07F81F277DA525>I<ED0FC0EC03FFA3EC003F150FB0EB03F8EB1F
FF90387E078F9038F801EF3903F0007F4848133F4848131FA24848130F123F90C7FC5AA2
127E12FEAA127E127FA27EA26C6C131FA26C6C133F6C6C137F6C6CEBEFF03A01F801CFFF
39007C078F90381FFE0FD907F813C0283B7DB92E>I<EB07F8EB1FFF90387C0FC03901F8
03E03903F001F0D807E013F8380FC0004848137CA248C7127E153E5A153F127E12FEA3B7
FCA248C8FCA5127EA2127FA26C14037F001F14076C6C13060007140E6D131CD801F01338
6C6C137090387E03E090381FFF80903803FC0020277EA525>I<147E903803FF8090380F
C1E0EB1F8790383F0FF0137EA213FCA23901F803C091C7FCADB512FCA3D801F8C7FCB3AB
487E387FFFF8A31C3B7FBA19>I<ED03F090390FF00FF890393FFC3C3C9039F81F707C39
01F00FE03903E007C03A07C003E010000FECF000A248486C7EA86C6C485AA200075C6C6C
485A6D485A6D48C7FC38073FFC38060FF0000EC9FCA4120FA213C06CB512C015F86C14FE
6CECFF804815C03A0F80007FE048C7EA0FF0003E140348140116F8481400A56C1401007C
15F06CEC03E0003F1407D80F80EB0F80D807E0EB3F003901FC01FC39007FFFF0010790C7
FC26387EA52A>I<EA03F012FFA3120F1203B0EC0FF0EC3FFCECF03F9039F1C01F809039
F3800FC0EBF70013FE496D7EA25BA35BB3A3486C497EB500C1B51280A3293A7EB92E>I<
EA0380EA0FE0487EA56C5AEA0380C8FCAAEA03F012FFA312071203B3AA487EB512C0A312
387EB717>I<EB01C0EB07F0EB0FF8A5EB07F0EB01C090C7FCAAEB01F813FFA313071301
B3B3A2123C127E00FF13F01303A214E038FE07C0127C383C0F00EA0FFEEA03F8154984B7
19>I<EA03F012FFA3120F1203B1913801FFFCA39138007FC01600157C15705D4A5A4A5A
4AC7FC141E1438147814FC13F1EBF3FEEBF73F01FE7FEBF81F496C7E8114076E7E6E7E81
1400157E157F811680ED1FC0486CEB3FF0B500C0B5FCA3283A7EB92C>I<EA03F012FFA3
120F1203B3B3AD487EB512C0A3123A7EB917>I<2703F00FF0EB1FE000FFD93FFCEB7FF8
913AF03F01E07E903BF1C01F83803F3D0FF3800FC7001F802603F70013CE01FE14DC49D9
07F8EB0FC0A2495CA3495CB3A3486C496CEB1FE0B500C1B50083B5FCA340257EA445>I<
3903F00FF000FFEB3FFCECF03F9039F1C01F803A0FF3800FC03803F70013FE496D7EA25B
A35BB3A3486C497EB500C1B51280A329257EA42E>I<EB03FE90380FFF8090383E03E090
38F800F84848137C48487F48487F4848EB0F80001F15C090C712074815E0A2007EEC03F0
A400FE15F8A9007E15F0A2007F14076C15E0A26C6CEB0FC0000F15806D131F6C6CEB3F00
6C6C137EC66C13F890387E03F090381FFFC0D903FEC7FC25277EA52A>I<3903F01FE000
FFEB7FF89038F1E07E9039F3801F803A07F7000FC0D803FEEB07E049EB03F04914F84913
0116FC150016FEA3167FAA16FEA3ED01FCA26DEB03F816F06D13076DEB0FE001F614C090
39F7803F009038F1E07E9038F0FFF8EC1FC091C8FCAB487EB512C0A328357EA42E>I<D9
03F813C090381FFE0190387E07819038FC01C33903F000E3000714774848133749133F00
1F141F485A150F48C7FCA312FEAA127FA37E6D131F121F6D133F120F6C6C137F6C6C13EF
3901F801CF39007E078F90381FFE0FEB07F890C7FCABED1FE00203B5FCA328357DA42C>
I<3807E01F00FFEB7FC09038E1E3E09038E387F0380FE707EA03E613EE9038EC03E09038
FC0080491300A45BB3A2487EB512F0A31C257EA421>I<EBFF03000313E7380F80FF381E
003F487F487F00707F12F0A2807EA27EB490C7FCEA7FE013FF6C13E06C13F86C7F00037F
C67F01071380EB007F141F00C0EB0FC01407A26C1303A37E15806C13077EEC0F00B4131E
38F3C07C38E1FFF038C03F801A277DA521>I<1318A51338A31378A313F8120112031207
001FB5FCB6FCA2D801F8C7FCB215C0A93800FC011580EB7C03017E13006D5AEB0FFEEB01
F81A347FB220>I<D803F0EB07E000FFEB01FFA3000FEB001F00031407B3A4150FA3151F
12016D133F0000EC77F86D9038E7FF8090383F03C790381FFF87903A03FC07E00029267E
A42E>I<B538803FFEA33A0FF8000FF06C48EB07E00003EC03C06D148000011500A26C6C
1306A26D130E017E130CA26D5BA2EC8038011F1330A26D6C5AA214E001075BA2903803F1
80A3D901FBC7FCA214FF6D5AA2147CA31438A227257EA32C>I<B53A1FFFE03FFEA3260F
F8009038000FF86C48017EEB03E018C00003023EEB0180A26C6C013FEB0300A36C6CEC80
06156FA2017E9038EFC00C15C7A2D93F016D5A15830281EBF038D91F831430150102C3EB
F87090260FC6001360A2D907E66D5A02EC137CA2D903FCEB7F804A133FA2010192C7FC4A
7FA20100141E4A130E0260130C37257EA33C>I<B538807FFFA33A03FE003FF00001EC1F
80000092C7FC017E131C6D13186D6C5AECC070010F5B6D6C5AECF180EB03FB6DB4C8FC6D
5AA2147F804A7E8114CF903801C7E090380383F090380703F8EB0601496C7E011C137E49
137F01787F496D7E486C80000FEC3FF0D8FFFE90B51280A329247FA32C>I<B538803FFE
A33A0FF8000FF06C48EB07C00003EC03806C7E16007F00001406A2017E5BA2137F6D5BA2
6D6C5AA2ECC070010F1360A26D6C5AA214F101035BA2D901FBC7FCA214FF6D5AA2147CA3
1438A21430A214701460A25CA2EA7C0100FE5B130391C8FC1306EAFC0EEA701C6C5AEA1F
F0EA0FC027357EA32C>I<003FB512FCA2EB8003D83E0013F8003CEB07F00038EB0FE012
300070EB1FC0EC3F800060137F150014FE495AA2C6485A495AA2495A495A495AA290387F
000613FEA2485A485A0007140E5B4848130C4848131CA24848133C48C7127C48EB03FC90
B5FCA21F247EA325>I E /Fe 43 123 df<B712F0AB240B7F9F2D>45
D<913803FFC0023F13FC91B6FC010315C0010F018113F0903A1FFC003FF849486D7E4948
6D7E49486D7E48496D138048496D13C0A24817E04890C813F0A34817F8A24817FC49157F
A3007F17FEA600FF17FFB3A5007F17FEA6003F17FCA26D15FFA26C17F8A36C17F0A26C6D
4913E0A26C6D4913C06C17806E5B6C6D4913006D6C495AD91FFCEB3FF8903A0FFF81FFF0
6D90B55A01011580D9003F01FCC7FC020313C0384F7BCD43>48 D<157815FC1403140714
1F14FF130F0007B5FCB6FCA2147F13F0EAF800C7FCB3B3B3A6007FB712FEA52F4E76CD43
>I<EC3FFE0103B512E0010F14FC013F14FF90B712C048D9C07F7F2703FE000F13F8D807
F801037FD80FE06D7F48486D7F48488001F01680486C6E13C07F486C6E13E07FA27013F0
A56C5AA26C5AEA0FF0EA03C0C914E05EA218C05E1880A24C13005F4C5A4B5B5F4B5B5F4B
5B4B90C7FC4B5A5E4B5AED7FE04B5A4A5B4A48C8FC4A5A5D4A48EB01F04A5AEC3F804AC7
FC02FEEC03E0495A495A495A495AD91F80140749C8FC013E150F017FB7FC90B812C05A5A
5A5A5A5A5AB9FC1880A4344E79CD43>I<91380FFFC091B512FC0107ECFF80011F15E090
263FF8077F9026FF800113FC4848C76C7ED803F86E7E491680D807FC8048B416C080486D
15E0A4805CA36C17C06C5B6C90C75AD801FC1680C9FC4C13005FA24C5A4B5B4B5B4B13C0
4B5BDBFFFEC7FC91B512F816E016FCEEFF80DA000713E0030113F89238007FFE707E7013
807013C018E07013F0A218F8A27013FCA218FEA2EA03E0EA0FF8487E487E487EB57EA318
FCA25E18F891C7FC6C17F0495C6C4816E001F04A13C06C484A1380D80FF84A13006CB44A
5A6CD9F0075BC690B612F06D5D011F1580010302FCC7FCD9001F1380374F7ACD43>I<17
7C17FEA2160116031607160FA2161F163F167FA216FF5D5DA25D5DED1FBFED3F3F153E15
7C15FCEC01F815F0EC03E01407EC0FC01580EC1F005C147E147C5C1301495A495A5C495A
131F49C7FC133E5B13FC485A5B485A1207485A485A90C8FC123E127E5ABA12C0A5C96C48
C7FCAF020FB712C0A53A4F7CCE43>I<D80380150ED807E0157E01FEEC03FED9FFF0137F
91B65A5F5F5F5F5F94C7FC5E5E16F016C093C8FC15F801E190C9FC01E0CAFCABEC0FFF02
7F13F001E3B512FE01E76E7E9026FFF8077FDAC0017F49C713F8496E7E49143F4981496E
7E6C481680C9FC18C08218E0A418F0A3EA0FE0487E487E487E487EA418E0A35B6C484A13
C05B491680003EC85A003F17006C6C4A5A6D5D6C6C4A5AD807F8495BD803FE01075B2701
FFC03F5B6C90B65A013F4AC7FC6D14F8010314C09026007FF8C8FC344F79CD43>I<ED0F
FF92B512E0020780021F14FC91397FFE03FE903A01FFF0007F4901C0EB3F804990C7121F
4948EC7FC0494814FF49484913E049485B01FF5C485BA2485B5AA2486F13C04A6D138048
6F1300177E94C7FC5AA291CAFC5AA21508913801FFF8020713FFB54814C04A14F04AC66C
7E023C6D7E4A6D7E4A6D7E7013804A15C0A24A15E07013F05C18F8A491C714FCA37EA67E
A46C17F880A27E18F06C5D18E06C6D15C07E6E4913806C6D15006D6C495A6D6CEB7FFC6D
B448485A6D90B55A010315C0010092C7FC023F13FC020713C0364F7ACD43>I<121F7F7F
EBFF8091B81280A45A1900606060A2606060485F0180C86CC7FC007EC95A4C5A007C4B5A
5F4C5A160F4C5A484B5A4C5A94C8FC16FEC812014B5A5E4B5A150F4B5AA24B5AA24B5A15
FFA24A90C9FCA25C5D1407A2140FA25D141FA2143FA4147F5DA314FFA55BAC6D5BA2EC3F
C06E5A395279D043>I<913807FFC0027F13FC0103B67E010F15E090261FFC0113F8903A
3FE0003FFCD97F80EB0FFE49C76C7E48488048486E1380000717C04980120F18E0177FA2
121F7FA27F7F6E14FF02E015C014F802FE4913806C7FDBC00313009238F007FE6C02F85B
9238FE1FF86C9138FFBFF06CEDFFE017806C4BC7FC6D806D81010F15E06D81010115FC01
0781011F81491680EBFFE748018115C048D9007F14E04848011F14F048487F4848130303
0014F8484880161F4848020713FC1601824848157F173FA2171FA2170FA218F8A27F007F
17F06D151FA26C6CED3FE0001F17C06D157F6C6CEDFF806C6C6C010313006C01E0EB0FFE
6C01FCEBFFFC6C6CB612F06D5D010F1580010102FCC7FCD9000F13C0364F7ACD43>I<91
380FFF8091B512F8010314FE010F6E7E4901037F90267FF8007F4948EB3FF048496D7E48
4980486F7E484980824817805A91C714C05A7013E0A218F0B5FCA318F8A618FCA46C5DA3
7EA25E6C7F6C5DA26C5D6C7F6C6D137B6C6D13F390387FF803011FB512E36D14C3010302
8313F89039007FFE03EC00401500A218F05EA3D801F816E0487E486C16C0487E486D4913
80A218005E5F4C5A91C7FC6C484A5A494A5A49495B6C48495BD803FC010F5B9027FF807F
FEC7FC6C90B55A6C6C14F06D14C0010F49C8FC010013F0364F7ACD43>I<BA12C019FEF1
FFC01AF01AFCD8000701F0C7000313FFDE007F7F737F070F7F737F878587858785A287A8
4F5BA263616361634F5B4F5B077F90C7FC4E485A060713F892B812E097C8FC861AF003F0
C7000313FE9539003FFF80070F13E0737F07017F87737F747E1C807413C0A27413E0A31C
F0A386A362A31CE0A2621CC0A250138097B5FC1C004F5B19074F5B073F13F04EB55ABC12
8098C7FC1AF81AC007F8C8FC54527CD160>66 D<932601FFFCEC01C0047FD9FFC0130303
07B600F81307033F03FE131F92B8EA803F0203DAE003EBC07F020F01FCC7383FF0FF023F
01E0EC0FF94A01800203B5FC494848C9FC4901F8824949824949824949824949824990CA
7E494883A2484983485B1B7F485B481A3FA24849181FA3485B1B0FA25AA298C7FC5CA2B5
FCAE7EA280A2F307C07EA36C7FA21B0F6C6D1980A26C1A1F6C7F1C006C6D606C6D187EA2
6D6C606D6D4C5A6D6D16036D6D4C5A6D6D4C5A6D01FC4C5A6D6DEE7F806D6C6C6C4BC7FC
6E01E0EC07FE020F01FEEC1FF80203903AFFE001FFF0020091B612C0033F93C8FC030715
FCDB007F14E0040101FCC9FC525479D261>I<BB12FEA5D8000701F8C700077FF0007F19
1F190785858586861B80A21A1FA31A0FA41BC006F81307A497C7FCA31701A31703170717
0F177F92B6FCA59238F8007F170F170717031701A31700A795C9FCB3B812F8A54A517CD0
55>70 D<B812C0A5D8000701F8C7FCB3B3B3B2B812C0A52A527CD132>73
D<B600FC93B7FC8181A282D800076E9239003FFC0070EE07E08282A28202EF7F02E77F02
E380A202E18002E0806F7F6F7F6F7FA26F7F6F7F6F806F80A26F80707F707F707F707FA2
707F7080708070808583717F717F717F717FA27114807114C07114E07213F07213F8A272
13FC7213FE7213FF721487A27214C77214E77313F77313FF85A285858585A28586868686
A286868686A2D93FFC187FB7173F1B1F1B0F1B07755A60527CD169>78
D<93380FFFC00303B6FC031F15E092B712FC0203D9FC0013FF020F01C0010F13C0023F90
C7000313F0DA7FFC02007F494848ED7FFE4901E0ED1FFF49496F7F49496F7F4990C96C7F
49854948707F4948707FA24849717E48864A83481B804A83481BC0A2481BE04A83A2481B
F0A348497113F8A5B51AFCAF6C1BF86E5FA46C1BF0A26E5F6C1BE0A36C6D4D13C0A26C6D
4D1380A26C1B006C6D4D5A6E5E6C626D6C4C5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B5B6D
6D4B90C7FC6D6D4B5A6D01FF02035B023F01E0011F13F0020F01FC90B512C0020390B7C8
FC020016FC031F15E0030392C9FCDB001F13E0565479D265>I<B912F0F0FF8019F819FF
1AC0D8000701F0C714F0060F7F060113FE727F737F737F85737F87A2737FA387A863A261
6363A24F5B4F5B4F90C8FC4F5A06035B060F13F095B512C092B8C9FC19F819E019F89226
F0000313FE9439007FFF80727F727F727F727F727F8684A28684A787A71D1C75133EA385
75137E73157C7513FC731401B86C6D9038F803F807039038FE07F07390B512E0736C14C0
080F1400CEEA7FFC5F537CD164>82 D<91260FFF80130791B500F85B010702FF5B011FED
C03F49EDF07F9026FFFC006D5A4801E0EB0FFD4801800101B5FC4848C87E48488149150F
001F824981123F4981007F82A28412FF84A27FA26D82A27F7F6D93C7FC14C06C13F014FF
15F86CECFF8016FC6CEDFFC017F06C16FC6C16FF6C17C06C836C836D826D82010F821303
010082021F16801400030F15C0ED007F040714E01600173F050F13F08383A200788200F8
82A3187FA27EA219E07EA26CEFFFC0A27F6D4B13806D17006D5D01FC4B5A01FF4B5A02C0
4A5A02F8EC7FF0903B1FFFC003FFE0486C90B65AD8FC0393C7FC48C66C14FC48010F14F0
48D9007F90C8FC3C5479D24B>I<003FBC1280A59126C0003F9038C0007F49C71607D87F
F8060113C001E08449197F49193F90C8171FA2007E1A0FA3007C1A07A500FC1BE0481A03
A6C994C7FCB3B3AC91B912F0A553517BD05E>I<EC7FFF0107B512F0013F14FE90B77E48
D9E00F7F2703FE000113F0486C6D7F6EEB3FFC48826E131F83707FA36C496D7FA26C90C7
FC6C5AC9FCA6037FB5FC020FB6FC91B7FC01071487013FEBF0074913803901FFFC004813
F0485B485B485B4890C7FC5A5BA2485AA45EA26D5C007F151D163D6C6C02797F6C6D01F1
13F86C9026C003E1EBFFE06C9026F81FC014F06C90B5487EC6ED001F011F01FC010713E0
010101E090C8FC3C387CB641>97 D<913801FFF8021FEBFF8091B612F0010315FC010F90
38C00FFE903A1FFE0001FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2486F1380
91C7FC486F1300705A4892C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15C07E
6E140F6CEE1F806C6DEC3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0010390B5
5A01001580023F49C7FC020113E033387CB63C>99 D<4DB47E0407B5FCA5EE001F1707B3
A4913801FFE0021F13FC91B6FC010315C7010F9038E03FE74990380007F7D97FFC0101B5
FC49487F4849143F484980485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA37EA2
6C7F5F6C6D5C7E6C6D5C6C6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC07FCF
6D90B5128F0101ECFE0FD9003F13F8020301C049C7FC41547CD24B>I<913803FFC0023F
13FC49B6FC010715C04901817F903A3FFC007FF849486D7E49486D7E4849130F48496D7E
48178048497F18C0488191C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA6
127FA27F7EA218E06CEE01F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F80
6D6CECFF00D91FFEEB03FE903A0FFFC03FF8010390B55A010015C0021F49C7FC020113F0
34387CB63D>I<ED3FFC0203B5FC020F14C0023F14E09139FFF81FF0499038C03FF849EB
807F49903800FFFC495A495AA2495AA2EE7FF8495AEE3FF0EE0FC093C7FCAEB712E0A526
007FF8C8FCB3B3A7007FB512FEA52E547CD329>I<DA3FFF14FF0103B5D8F00713C0010F
DAFC1F13E0013FECFF7F90267FFC0F9038FF9FF09026FFE001EBF83F48496C13E0484990
387FF01F4890C7D83FF813E0489338FC0FC0F0078048486E6CC7FCA2003F82A9001F5EA2
6C6C4A5AA26C5E6C6D495A6C6D495A6C6D485BDAFC0F5B4890B6C8FCD803EF14FC01C314
F02607C03F90C9FC91CBFCA2120FA37FA213F813FE90B7FC6C16F817FF18C06C836C836C
836D828448B9FC12074848C700031480D81FF8EC003F4848150748486F13C083485A83A5
6D5D007F18806D5D003F18006C6C4B5AD80FFEED1FFC6C6C6CEC7FF86C01E049485A6C01
FE011F5B6C6CB71280010F03FCC7FC010115E0D9000F01FCC8FC3C4F7CB543>I<EB3FF0
B5FCA51203C6FCB3A4EE1FFC93B512C0030314F0030F8092391FE07FFC92393F001FFE03
7C8003F07FDAF1E081ECF3C0DAF7807F8502FFC7FC5CA25CA45CB3ACB6D8F807B612C0A5
42537BD24B>I<137F497E000313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8FCAD
EB3FF0B5FCA512017EB3B3A6B612E0A51B547BD325>I<EB3FF0B5FCA51203C6FCB3A54C
B512F8A59339003FFE00EF1FF0EF3FC04D5A4DC7FCEE03FEEE07F84C5A4C5AEE7FC04CC8
FC4B5A4B5AED0FF8ED1FE04B7E4B7EECF1FF02F37F02F77F91B6FC83159F030F7F02FE80
DAF8077F4A7E6F7F6F7F83707E82707F84707F707F82707F84707F177F717E4D13C0B6D8
F003B6FCA540537CD247>107 D<EB3FF0B5FCA512017EB3B3B3B1B612F0A51C537BD225>
I<D93FF0D91FFCEDFFE0B591B500C0010713FE030302F0011F6D7E030F6E017F8092271F
E07FFCD9FF037F922A3F001FFE01F8007F0003027C9126FF03E080C602F06DD90780137F
DAF1E0038FC77FDAF3C0159EDAF7806D01BC143F07FC8102FFC75C4A5EA24A5EA44A5EB3
ACB6D8F807B6D8C03FB512FEA567367BB570>I<D93FF0EB1FFCB591B512C0030314F003
0F8092391FE07FFC92393F001FFE0003027C80C602F07FDAF1E081ECF3C0DAF7807F8502
FFC7FC5CA25CA45CB3ACB6D8F807B612C0A542367BB54B>I<913801FFE0021F13FE91B6
12C0010315F0010F9038807FFC903A1FFC000FFED97FF86D6C7E49486D7F48496D7F4849
6D7F4A147F48834890C86C7EA24883A248486F7EA3007F1880A400FF18C0AC007F1880A3
003F18006D5DA26C5FA26C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C495BD93FFE
011F90C7FC903A0FFF807FFC6D90B55A010015C0023F91C8FC020113E03A387CB643>I<
903A3FF001FFE0B5010F13FE033FEBFFC092B612F002F301017F913AF7F8007FFE0003D9
FFE0EB1FFFC602806D7F92C76C7F4A824A6E7F4A6E7FA2717FA285187F85A4721380AC1A
0060A36118FFA2615F616E4A5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0EBFFFC9126FB
FE075B02F8B612E06F1480031F01FCC8FC030313C092CBFCB1B612F8A5414D7BB54B>I<
90397FE003FEB590380FFF80033F13E04B13F09238FE1FF89139E1F83FFC0003D9E3E013
FEC6ECC07FECE78014EF150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55CB3AAB612
FCA52F367CB537>114 D<903903FFF00F013FEBFE1F90B7FC120348EB003FD80FF81307
D81FE0130148487F4980127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC06C13FF15
F86C14FF16C06C15F06C816C816C81C681013F1580010F15C01300020714E0EC003F0307
13F015010078EC007F00F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F8001F8EC
7F0001FEEB01FE9039FFC00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC2C387CB6
35>I<143EA6147EA414FEA21301A313031307A2130F131F133F13FF5A000F90B6FCB8FC
A426003FFEC8FCB3A9EE07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEBF0FC6DEB
FFF86D6C5B021F5B020313802A4D7ECB34>I<D93FF8913801FFC0B50207B5FCA50003ED
001FC61607B3AE5FA35FA2017F5D173B177B6D6C14F3DC01E313F06D6CD907C3EBFFC090
3A0FFFC03F836D90B51203010114FE6D6C13F8020701E091C7FC42377BB54B>I<B600F0
0107B5FCA5000101F8C8EA7FE06C6DED3F00A2017F163E6E157E013F167C6E15FC6D5E6F
13016D5E8117036D5E6F13076D5E6F130F6D5E6F131F6D93C7FC815F6E6C133E177E023F
147C6F13FC6E5C16816E5C16C3A26EEBE3E016E76E5C16FF6E5CA26E91C8FCA26F5AA36F
5AA26F5AA26F5AA26F5A6F5A40367DB447>I<B6D8E07FB5D8C003B512C0A5000101F0C7
01F0C7381FF8006E027FED07E06C715DA26E023F150F017F705DA26E181F013F4B6C92C7
FC6E606D70143E94B5FC6F177E6D4A6E137C03C001F315FC6D715B160303E001E114016D
020702E05B03F013C06D71485A160F03F8D9807F13076D05F85B93381F003F03FC160F02
7F4902FC5BDBFE3E011F131F023F04FE90C8FC167EDBFF7C010F5B6E01FCECFF3E4C6D13
7E6E5FA24C7F6E5F4C7F6E5FA24C7F6E5F4C147FA26E5F93C8123F6F5EA2033E6FC9FC5A
367DB461>I<007FB500F090387FFFFEA5C66C48C7000F90C7FC6D6CEC07F86D6D5C6D6D
495A6D4B5A6F495A6D6D91C8FC6D6D137E6D6D5B91387FFE014C5A6E6C485A6EEB8FE06E
EBCFC06EEBFF806E91C9FCA26E5B6E5B6F7E6F7EA26F7F834B7F4B7F92B5FCDA01FD7F03
F87F4A486C7E4A486C7E020F7FDA1FC0804A486C7F4A486C7F02FE6D7F4A6D7F495A4948
6D7F01076F7E49486E7E49486E7FEBFFF0B500FE49B612C0A542357EB447>I<B600F001
07B5FCA5C601F8C8EA7FE06EED3F00A26D6C153E187E013F167C6E15FC6D5E6F13016D5E
6F13036D5E8117076D6D5C170F6D6D5C171F6D93C7FC6F5B027F143E6F137E023F147C6F
13FCA26E6D5A16816EEBC1F016C36E5C16E76E5C16FF6E5CA26E91C8FCA36F5AA26F5AA2
6F5AA26F5AA26F5AA35E150F5E151F93C9FC5DD81FC0133E486C137E486C137C486C13FC
5D14015D14034A5A6C48485A49485A263FC07FCAFCEB81FE6CB45A6C13F000035BC690CB
FC404D7DB447>I<001FB8FC1880A3912680007F130001FCC7B5FC01F0495B495D49495B
495B4B5B48C75C5D4B5B5F003E4A90C7FC92B5FC4A5B5E4A5B5CC7485B5E4A5B5C4A5B93
C8FC91B5FC495B5D4949EB0F805B495B5D495B49151F4949140092C7FC495A485E485B5C
485E485B4A5C48495B4815074849495A91C712FFB8FCA37E31357CB43C>I
E /Ff 12 117 df<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B0B6C8A33>46
D<1608163E16FF5D15075DED3FFEED7FFC913801FFF0020713E04A1380023F1300EC7FFC
49485A4913E0010F13804990C7FCEB7FFC495A000313E0485B001F90C8FCEA7FFE13F848
5A13C013F06C7E13FEEA1FFF000713C06C7FC613F86D7EEB1FFF6D7F010313E06D13F86D
6C7E6EB4FC020F13806E13E0020113F09138007FFCED3FFEED0FFF81150181163E160828
337BB733>60 D<1210127CB4FC7F13E07FEA7FFC6C7E380FFF806C13E000017F6C13FCEB
3FFE6D6C7E01077F010113F06D7FEC3FFE6E7E020713C06E13E0020013F8ED7FFE151FED
0FFF1503150FED1FFE157FEDFFF8020313E04A13C0021F13004A5AECFFF8495B010713C0
011F5B4948C7FCEBFFFC4813F000075B481380D83FFEC8FC485AEAFFF05B138090C9FC12
7C121028337BB733>62 D<EC07F8EC3FFF91B57E010314E0010F80498090383FFC0F9039
7FE003FC9038FF80014890C77ED803FC147E49EB7E7F0007903801FFBFD9F00713FF4848
481480495A001F5B018013C3003FEB7F810100010013C002FE137F4849133FEA7E014A13
1FA212FEEAFC034A130FA96E131FD8FE011580127EA26E133FD87F0015006C6D5B027F13
FE01801381001F90383FC3FC01C013FF000F6D5B6D6C5B6C6C6C5BD9F80113800003D900
7EC7FC6D9038000F806CB4EC1FC06C6D133FD97FE013FF90263FFC0713806DB612006D5C
010314F801005C023F1380DA07FCC7FC2A3F7CBD33>64 D<EB1FFC90B57E000314E04880
4814FC48809038F007FFEBE0016E7F153F6C48806C48131FC87F150FA5EC0FFF49B5FC13
1F137F48B6FC0007140F4813C0381FFC00EA3FF0EA7FC05B48C7FC5AA56C141F7E6D137F
D83FE0497ED9F807EBFFF06CB712F87E6C14F36C14C1C69138003FF0D91FF090C7FC2D2E
7BAC33>97 D<ECFFF0010713FE011FEBFF804914C04914E048B612F048EBC01F9038FE00
0F485A485A4848EB07E049EB03C0484890C7FC5BA2127F90C9FCA25A5AA97E7EA27F003F
EC01F06DEB03F86C7E6D13076C6C14F06C6C130F01FFEB1FE06CEBE07F6C90B512C06C15
80013F14006D13FC01075B010013C0252E79AC33>99 D<ED7FF84B7E5CA280157F1501AB
EB01FF010713C1011F13F1017F13F990B6FC5A4813813907FE003FD80FF8131F49130F48
481307491303123F491301127F90C7FCA25A5AA97E7E15037F123F6D1307A26C6C130F6D
131F6C6C133F6C6C137F2603FF81B512F091B612F8C602FD13FC6D13F96D01E113F8010F
018013F0D901FEC8FC2E3E7DBC33>I<14E0EB03F8A2497EA36D5AA2EB00E091C8FCAA38
3FFFF8487FA47EEA0001B3AD007FB612C0B712E016F0A216E06C15C0243E78BD33>105
D<02FC137E3B7FC3FF01FF80D8FFEF01877F90B500CF7F15DF92B57E6C010F13872607FE
07130301FC01FE7F9039F803FC01A201F013F8A401E013F0B3A53C7FFE0FFF07FF80B548
018F13C0A46C486C01071380322C80AB33>109 D<EB01FE90380FFFC0013F13F0497F90
B57E488048EB03FF2607FC0013804848EB7FC049133F4848EB1FE049130F4848EB07F0A2
007F15F890C71203A300FEEC01FCAA6C14036C15F8A26D1307003F15F06D130FA26C6CEB
1FE06D133F6C6CEB7FC06C6CEBFF802603FF0313006CEBFFFE6C5C6D5B6D5B010F13C0D9
01FEC7FC262E7AAC33>111 D<ED03FE3B7FFF801FFF80B5D8C07F13E002C1B5FC02C314
F014C76C9038CFFE0F39001FDFF09139FFC007E092388003C092C8FC5C5C5CA25CA25CA3
5CB2007FB512FEB7FCA46C5C2C2C7DAB33>114 D<EB03C0497E130FAA003FB612FC4881
B7FCA36C5D26000FE0C8FCB3A3161FEE3F80A5167F6E140001075C6E5A9138FE07FE6DB5
5A6D5C6D5C6E5B021F1380DA07FCC7FC29387EB633>116 D E /Fg
17 117 df<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A31201138012
0313005A1206120E5A5A5A12600B1D78891B>44 D<143014F013011303131F13FFB5FC13
E713071200B3B3B0497E497E007FB6FCA3204278C131>49 D<EB03FE90381FFFC0017F13
F03901F80FFC3903C001FE48486C7E000EC7EA7F8048EC3FC0ED1FE04815F00030140F00
7015F800601407126CB415FC7F7F1503A46C4813076CC7FCC8FC16F8A2150F16F0151F16
E0A2ED3FC0ED7F8016005D5D4A5A4A5A4A5A5D4A5A4A5A4AC7FC147C5C5C495A495A495A
49C7120C131E5B013814185B5B485A4848143848C81230000E1570001FB612F0A25A5AB7
12E0A326427BC131>I<000615C0D807C0130701FCEB7F8090B612005D5D5D15E0158026
063FFCC7FC90C9FCAE14FF010713C090381F01F090383800FC01F0137ED807C07F49EB1F
8016C090C7120F000615E0C8EA07F0A316F81503A216FCA5123E127F487EA416F890C712
075A006015F0A20070140F003015E00038EC1FC07E001EEC3F806CEC7F006C6C13FE6C6C
485A3901F807F039007FFFE0011F90C7FCEB07F826447BC131>53
D<121CA2EA1F8090B712C0A3481680A217005E0038C8120C0030151C00705D0060153016
705E5E4814014B5A4BC7FCC81206150E5D151815385D156015E04A5AA24A5A140792C8FC
5CA25C141E143EA2147E147CA214FCA21301A3495AA41307A6130FAA6D5AEB01C02A457B
C231>55 D<14FF010713E0011F13F890387F80FC9038FC007E48487F4848EB1F804848EB
0FC0000FEC07E0485AED03F0485A16F8007F140190C713FCA25AA216FE1500A516FFA46C
5CA36C7E5D121F7F000F5C6C6C1306150E6C6C5B6C6C5BD8007C5B90383F01E090390FFF
80FE903801FE0090C8FC150116FCA4ED03F8A216F0D80F801307486C14E0486C130F16C0
ED1F80A249EB3F0049137E001EC75A001C495A000F495A3907E01FE06CB51280C649C7FC
EB1FF028447CC131>57 D<B6D8C003B6FCA3000101E0C70007138026007F80913801FE00
B3A991B7FCA30280C71201B3AC2601FFE0913807FF80B6D8C003B6FCA340447CC349>72
D<B56C933807FFFC6E5EA20001F1FE0026006FE0EE1BF8A3D967F01633A2D963F81663A3
D961FC16C3A3D960FEED0183A2027FED0303A36E6C1406A36E6C140CA26E6C1418A36E6C
1430A36E6C1460A26E6C14C0A36E6CEB0180A3037FEB0300A292383F8006A36F6C5AA36F
6C5AA26F6C5AA36F6C5AA36F6C5AA26FB45AA370C7FC13F0A2486C143ED80FFFEF0FFEB5
00F0011C0107B512FCA34E447BC359>77 D<ED1FFC4AB512C0913907F007F091391F8000
FC027EC7123FD901F8EC0FC049486E7E49486E7E49486E7E49486E7E49C9127E017E8201
FE834848707E4848707EA24848707EA2000F84491603001F84A24848707EA3007F84A249
82A300FF1980AD6C6C4C1300A4003F606D1603A2001F60A26C6C4C5AA26C6C4C5AA20003
606D161F6C6C4C5A000060017F4CC7FC6E5D013F5E6D6C4A5AD907E0EC03F06D6C4A5AD9
01FCEC1FC0D9007E4AC8FCDA1F8013FC913907F007F00201B512C09126001FFCC9FC4148
7BC54C>79 D<EB07FC90383FFF809038F80FE03903C003F048C66C7E000E6D7ED80FC013
7E486C137F6D6D7EA36F7EA26C5AEA0380C8FCA4EC0FFF49B5FC90380FFE1FEB3FC0EBFF
00EA03FC485A485A485A485A127F5B176048C7FCA3153FA36D137F007F14EF6D9038C7E0
C0003F13013A1FE00783F13B07F81E03FF802701FFFC0113003A001FE0007C2B2E7CAC31
>97 D<EA01FC12FFA3120712031201B3EC03FC91380FFF8091383C07E091387001F89039
FDE0007E02807F01FFEC1F8091C713C049EC0FE049140717F0A2EE03F8A217FCA2160117
FEAB17FC1603A217F8A2EE07F0A26DEC0FE017C06D141F01FBEC3F80D9F380EB7E00D9E1
C05B9039E0F001F89039C03C07E09039801FFF80C7D803FCC7FC2F467DC436>I<EC7F80
903803FFF090380FC07C90383F000F01FCEB03804848EB01C00003140F4848EB1FE04913
3F120F485AA2485AED1FC0007FEC070092C7FCA290C9FC5AAB7E7FA2123F16307F001F15
706C6C146016E06C6C14C06C6C13010001EC03806C6CEB0700013F131E90381FC0789038
07FFF001001380242E7DAC2B>I<EB01FE903807FFC090381F03F090387E00FC49137E48
487F485A4848EB1F80000F15C049130F121F484814E01507A2007F15F090C7FCA25AA390
B6FCA290C9FCA67EA27FA2123F16306C7E1670000F15606D14E06C6C14C0000314016C6C
EB03806C6CEB0700013E131E90381F80F8903803FFE0010090C7FC242E7DAC2B>101
D<EC7F80903803FFF090380FC0FC90383E001F496D7E496D7E48486D7E48486D7E48486D
7E000F81A24848147E003F157FA290C87E481680A44816C0AA6C1680A26D147F003F1600
A2001F157E6D14FE000F5D6D130100075D6C6C495A6C6C495A6C6C495A013E49C7FC9038
1FC0FE903807FFF89038007F802A2E7DAC31>111 D<3903F803F000FFEB1FFCEC3C3EEC
707F0007EBE0FF3803F9C000015B13FBEC007E153C01FF13005BA45BB3A748B4FCB512FE
A3202C7DAB26>114 D<90383FE0183901FFFC383907E01F78390F0003F8001E13014813
00007C1478127800F81438A21518A27EA27E6C6C13006C7E13FC383FFFE06C13FC6C13FF
6C14C06C14E0C614F0011F13F81300EC0FFC140300C0EB01FE1400157E7E153EA27EA36C
143C6C147C15786C14F86CEB01F039F38003E039F1F00F8039E07FFE0038C00FF01F2E7D
AC26>I<1306A5130EA4131EA3133E137EA213FE12011207001FB512F0B6FCA2C648C7FC
B3A4150CAA017E131C017F1318A26D133890381F8030ECC070903807E0E0903801FFC090
38007F001E3E7EBC26>I E /Fh 27 122 df<120FEA3FC0EA7FE0EAFFF0A213F8A313FC
127FEA3FDCEA0F1C1200A7133C1338A31378A2137013F0A213E01201EA03C0A2EA078013
005A121E5A5AA212300E2874E324>39 D<4AB4FC021F13F0027F13FC903901FF01FF903A
03F8003F80D90FE0EB0FE049486D7E49486D7E49C76C7E017E140049157E0001167F4981
0003178049151F000717C049150F000F17E0A3001F17F0491507A2003F17F8A54848ED03
FCA700FF17FEB3A8007F17FCA56D1507A3003F17F8A4001F17F06D150FA2000F17E0A36C
6CED1FC0A2000317806D153F000117006D5D6C6C15FE017E5D017F14016D6C495A6D6C49
5A6D6C495AD903F8EB3F806DB448B4C7FC9039007FFFFC021F13F0020190C8FC37607BDD
42>48 D<1778A217F81601A216031607A2160F161FA2163FA2167F16FF16EF1501ED03CF
168F1507160F150E151E151C153C1578157015F015E0EC01C0140315801407EC0F00140E
141E141C5C1478147014F0495A5C13035C49C7FC5B130E131E5B133813785B5B12015B12
03485A90C8FC5A121E121C123C12385A12F0BA12E0A4C9D80FF8C7FCB34C7EEE7FFF4AB7
12C0A43B5F7DDE42>52 D<ED03FF033F13E092B512F8020314FE91390FFE00FFDA1FE0EB
1F80DA7FC0EB07C04AC712034948EC01E0494814034948EC1FF04948143F4948147F5C49
5A137F49C8FCA24848ED3FE0EF1FC0484892C7FCA2485AA2120F5BA2121FA25B123FA312
7F913801FFF0020713FCD9C01F13FF91393E003FC00278EB0FE000FF01E0EB07F8D9C1C0
6D7ED9C3806D7E01C7C8FC01C6157F01CE168001DCED3FC0A201D8ED1FE001F816F04915
0F18F8A25B18FC1707A318FE5BA3127FA67F123FA4001F17FCA27F000F160F18F8A21207
6DED1FF012036D16E00001EE3FC07F0000EE7F806DEDFF006D6C5C013F4A5AD91FE0495A
6D6CEB0FF06D6C495A6DB4EBFFC0010090B5C7FC023F5B020F13F00201138037607BDD42
>54 D<913803FF80021F13F891B512FE01036E7E4948C613E0D91FE0EB1FF0D93F80EB07
FC017EC7EA01FE496E7E48488149ED3F804848ED1FC00007160F4916E0000F1607A24916
F0001F1603A57FA26D150718E07F6C6C150F6D16C07F6C6CED1F8002C0143F6C6D150002
F8147E6C6D5C6C6D495A6E6C485A6D9038C00FE06D9038F01F80010F6D48C7FC6DEBFEFC
0101EBFFF06D5C143F6E13F86E7F4A7F027F6D7E902601F87F7F49486C13F090260FC00F
7F49486C7F90263F000113FF017E6D148049143F48486E13C048486E13E04848020313F0
4848809338007FF84848153F003F161F90C9EA0FFC481607007E160318FE170100FE1600
5AA2187EA66C177C007E17FCA2007F17F86C16016D16F0001F16036D16E06C6C15076C6C
ED0FC06DED1F806C6CED3F006C6C15FE26007F80495AD93FE0EB0FF0D90FFEEB7FE06DB6
128001014AC7FCD9003F13F80203138037607BDD42>56 D<170FA34D7EA24D7EA34D7EA3
4D7EA34C7F17DFA29338039FFC178FA29338070FFE1707040F7FEE0E03A2041E80EE1C01
A2043C80EE3800A24C80187FA24C80183FA24B4880181F0303814C130FA203078193C712
07A24B81030E80A24B8284A24B8284A24B82197F03F0824B153FA20201834B151FA20203
8392B8FCA24A83A292C91207020E8385A24A8485023C84023882A20278840270177FA202
F0844A173FA24948841A1FA24948841A0FA249CB7F1A074985865B496C85497E48486C4D
7F000F01F8051F13F0B60407B612F0A45C657DE463>65 D<DD7FF81560040FB56C14E004
7F14E00303B600FC1301030F9038E003FEDB3FFEC7383F8003DBFFF0EC07C04A01C09138
03F007020790C9EAF80FDA0FFC167C4A48EE1E1FDA7FE0160F4A48EE07BF4949EE03FF49
90CAFC4948834948834A187F495A013F193F4948181F5C01FF190F485BA24890CC1207A2
48481903A2485A1B01121FA25B123F1B005BA2127F1C00A4485AB06C7EA5123F1CE07FA2
121F7FA2000F1A011CC06C7EA26C7E1B036C6D19801B076C7F017F1A006E606D6C181E13
1F6D6C606E18386D6C18786D6C606D6D4C5A6D6D4C5A6E6C1607DA1FF84C5A6E6C4CC7FC
6EB4167C020101C04A5A6E01F0EC07F0DB3FFEEC1FC092280FFFE001FFC8FC030390B512
FCDB007F14F0040F14809326007FF8C9FC53667AE360>67 D<B912F018FF19E019F8C601
FCC8EA7FFED93FF892380FFF80011F04017F9538007FF0F11FF8737EF103FE737E737F74
7E747E747E1A0F87747E1A0387747EA2741380A2F37FC0A21CE01B3FA21CF0A21B1F1CF8
A31CFCA21B0FA41CFEAF1CFCA51B1F1CF8A4F33FF0A21CE0A21B7F1CC01BFF1C80A25013
00A2505A505AA2505A505A505A505A1AFF4F5B4F90C7FCF107FCF11FF8F17FF0953801FF
C0013F04075BD9FFFCDB7FFEC8FCBA12F819E096C9FC18F0576279E165>I<B712C0A4C6
6CEB8000D91FFEC7FC6D5AB3B3B3B3AE497E90387FFF80B712C0A422627AE12F>73
D<B712E0A4C60280CAFCD93FFCCBFC131F5CB3B3B21A1CA61A3C1A38A61A78A41AF8A21A
F01901A219031907A2190F191F193F197FF001FF1807013F043F13E0D9FFFC0203B5FCBB
FCA4466279E153>76 D<B812FCEFFFE018FCF0FF80C601FCC7000F13E0D93FF89138007F
F8011FEE1FFCF007FF06017F727FF13FE0737E86737E737EA2868587A28587A96361A298
C8FC6162624F5A191F4F5A4F5AF1FF804E90C9FCF007FEF01FF8F0FFE0050F138091B700
FCCAFC18E08402F8C7EA1FFE943801FF80716C7EF03FF0727EF007FC727E85727F848673
7EA3737EAA86AA1DE086191FA3070F14017414C007071403496C8390B570EC0780B76F90
38800F00736D5A97383FF03E97380FFFFCCD000313F09738003FC05B6479E162>82
D<EC3FF0903803FFFE010F6D7E90393FC03FE090397E0007F801F86D7ED801E06D7E4848
6D7E48486E7E48C86C7E7F01F06E7E487E6D6E7EA3707EA36C5AEA03E0C9FCA6167FED7F
FF020FB5FC91387FF807903801FF80903807FC00EB1FF0EB7FC0495AD803FEC7FC485A12
0F5B485A485AA2484817E0A312FF5BA2160FA3161F6D141B007F153B16736D913971FC01
C06C6C14E1001FEC01C1D80FFC903A0780FE03806C6C903A0F00FF07002701FF807E6DB4
FC27007FFFF86D5A011F01E0EB1FF8010190C7EA07E03B417ABF42>97
D<4AB47E020F13F8023F13FE9139FF007F80D903FCEB07E0D907F0EB01F0D91FE0EB0078
49488049488049C87E48485D4915FF00034B138048485CA2485AA2485AA2003F6F130049
EC007C94C7FC127FA35B12FFAD127F7FA4123F7FA2001FEE01C07F000F16036D16801207
6C6C15076D160000015E6C6C151E6D6C5C6D6C5C6D6C5CD90FF8495AD903FCEB07C0903A
00FF803F8091263FFFFEC7FC020F13F80201138032417CBF3A>99
D<181EEF3FFEEE07FFA4EE000F1703A21701B3AAEDFF80020F13F8023F13FE9139FF803F
81903A03FC0007C14948EB01E1D91FE0EB00F94948147D4948143D49C8121F4848150F49
1507120348481503491501120F121F5BA2123F5B127FA45B12FFAD127F7FA3123FA27F12
1FA26C6C1503A26C6C150712036D150F6C6C151F0000163D137F6D6CECF9FF6D6CEB01F1
D90FF0D903C113C06D6CD90F81EBFF80D901FFEB7F019039007FFFFC021F13E002010100
91C7FC41657CE349>I<EC03FE91381FFFE091B512F8903901FE03FE903A07F0007F8049
486D7ED93FC06D7E49C76C7E496E7E49140348488148481401000782491400000F828348
5A1880123F49153FA2007F17C0A35BA212FF90B8FCA30180CAFCA9127F7FA3123FA27F12
1FEF01C06C7E17036C6C1680A26C6C15070001EE0F006D150E6C6C151E6D6C5C6D6C5C6D
6C5CD907F0EB03E0D903FC495A902700FF803FC7FC91383FFFFC020F13F0020113803241
7CBF3A>I<F03F80DA03FC903801FFE091273FFFC00713F091B539F01FC1F8903B03FC03
FC3E03903A07F000FE784948EB7FE04948EB3FC04948011FEB01F049C76C6CC7FC01FE6E
7EA248486E7EA2000382A2491401000782AA00035E6D1403A200015EA26C6C4A5AA2017F
4A5A6D6C495A6D6C495A496C49C8FCD937F013FE903973FC03FC0160B512F0D9E03F13C0
DA03FCC9FC4848CBFCA57FA27FA27F6C7E13FF91B512FE6DECFFF06D15FE6D6F7E6D16E0
84013F16FC01FEC700017FD803F8EC001FD807E0ED03FF4848030013804848167F003FEF
3FC090CA121F127EF00FE012FE481707A66C170F007E18C0A2007F171F6C6CEE3F806C6C
EE7F00000F177ED807F04B5A6C6C4B5A6C6C4B5AD8007FED1FC0D93FE0ECFF80D90FFED9
0FFEC7FC0101B612F0D9003F1480020101F0C8FC3D5E7DBF42>103
D<133C13FF487F487FA66C5B6C90C7FC133C90C8FCB3A2EB03C0EA07FF127FA41201EA00
7FA2133FB3B3AC497E497EB612E0A41B5F7DDE23>105 D<EB03C0EA07FFB5FCA41201EA
007FA2133FB3B3B3B3AD497E497EB612F0A41C647DE323>108 D<D903C0D9FFC0EC07FE
D807FF010301F891381FFFC0B5010F01FE027F13F0923D3F00FF8001F807FC0378903B3F
C003C001FEDAC1E090261FE00FC77E0001D9C3C090260FF01E6E7ED8007F49902607F81C
6E7E02C7C75CD93FCE6E6C486E7E02CC166002DC16E002D85E02F8DA01FF6F7E4A5EA24A
93C8FCA44A5DB3B3496C4A6C4B7E496C4A6D4A7EB6D8F007B6D8803FB512FCA4663F7CBE
6F>I<D903C0EB7FE0D807FF903803FFFCB5010F13FFDB3F0013C00378EB1FE04B6D7E00
01D9C1C06D7E27007FC3808002C7C71203D93FCE81170114DC14D802F86E7E5CA35CA35C
B3B3496C4A7F496C4A7FB6D8F003B612C0A4423F7DBE49>I<EDFF80020F13F8023F13FE
9139FF007F80D903FCEB1FE0D907F0EB07F0D90FC0EB01F8D93F80EB00FE49C8127F017E
81496F7E48486F7E00038349150700078348486F7EA2001F83491501A2003F83A348486F
7EA400FF1880AC007F1800A26D5DA2003F5FA36C6C4B5AA36C6C4B5A00075FA26C6C4B5A
6C6C4B5AA26C6C4B5A017F4BC7FC6D6C14FE6D6C495AD90FF0EB07F8D903FCEB1FE0D900
FFEB7F806EB5C8FC020F13F8020113C039417CBF42>I<D903C0EB7FC0D807FF903807FF
FCB5011F13FFDB7F0013C003F8EB1FF0DAC3E0EB07F80001D9C7806D7E26007FCFC76C7E
02DE6E7ED93FFC6F7E4A6F7E4A82181F4A82727E5C727EA2727EA3727EA41A8084AC4E13
00A54E5AA2611807A24E5A6E5E181F6E4B5A6E5E187F6E4B5A02DE4A90C7FC02CF4A5ADA
C780495ADAC3C0EB0FF0DAC1F0EB3FE0913AC07E01FF806FB448C8FC030F13F803001380
93CAFCB3A3497E497EB612F0A4415B7DBE49>I<9039078003F8D807FFEB0FFFB5013F13
C092387C0FE0913881F01F9238E03FF00001EB838039007F8700148FEB3F8E029CEB1FE0
EE0FC00298EB030002B890C7FCA214B014F0A25CA55CB3B0497EEBFFF8B612FCA42C3F7C
BE33>114 D<9139FFE00180010FEBFC03017FEBFF073A01FF001FCFD803F8EB03EFD807
E0EB01FF48487F4848147F48C8123F003E151F007E150F127CA200FC1507A316037EA27E
7F6C7E6D91C7FC13F8EA3FFE381FFFF06CEBFF806C14F86C14FF6C15C06C6C14F0011F80
010714FED9007F7F02031480DA003F13C01503030013E0167F00E0ED1FF0160F17F86C15
071603A36C1501A37EA26C16F016037E17E06D14076DEC0FC06D1580D8FDF0141FD8F8F8
EC7F00013E14FC3AF01FC00FF80107B512E0D8E001148027C0003FF8C7FC2D417DBF34>
I<1438A71478A414F8A31301A31303A21307130F131FA2137F13FF1203000F90B6FCB8FC
A3260007F8C8FCB3AE17E0AE6D6CEB01C0A316036D6C148016076D6C14006E6C5A91383F
C01E91381FF07C6EB45A020313E09138007F802B597FD733>I<D903C0150FD807FFED1F
FFB50203B5FCA40001ED0007D8007F1501A2013F81B3B25FA35FA35F011F15066E140E5F
130F6E4A7F01075D6D6C494813E0D901FE4948EBFFC0903A00FFC01F8091393FFFFE0002
0F13F8020001C0EC800042407DBE49>I<B66C49B512E0A4000101F8C8387FFE0026007F
E0ED1FF819E0013F705A61131F6E93C7FC010F160EA26D6C5DA26E153C01031638A26D6C
5DA26E15F06D5EA26E6C495AA26F1303023F5DA26F1307021F92C8FC6F5B020F140EA26F
131E0207141C6F133C02031438A26F1378020114706F13F06E5CA21681037F5B16C3033F
5BA216E7031F90C9FC16FF6F5AA36F5AA26F5AA36F5AA26F5AA215015E15035EA2150793
CAFC5D150EA2151E151C153CD81F801338487E486C5BA25D14015D49485A383F80074948
CBFC001E133E380FC0FC6CB45A000113E06C6CCCFC435B7FBD46>121
D E /Fi 6 122 df<EE07FE93387FFFE00303B512F8030F14FE92393FF801FF923AFFC0
001F804A90C7EA07C0DA07FC6E7E4A486E7EDA1FE014004A4815784A4814014AC8EA0FF8
49484B7E4948153F0107167F5C495A131F495AA249486F5A725A49486F5A95C8FC4890CC
FCA25A5B1207A2120F5BA2121FA25BA2123FA31620007F91380FFFC0033F13F84990B512
FE913A03F000FF80DA0780EB1FE04AC76C7E023E6E7E00FF013C6E7E4A6E7E4A6E7ED9F1
E06F7E4A8201F3707E5C01F7C96C7E8501FF160F4983A249707EA285A25B721380A51AC0
6C5AA57FA25B7F123FA5121F1A80A27F120F601A0012077F000360180F616C7E4E5A6C6D
5E183F6D6C5E013F4C5A6E15FF6D6C5E6D6C4A90C7FC6D6C4A5A6D6C4A5A6D6CEC1FF86D
01C0EB7FF0913A7FF803FFC0021FB65A6E4AC8FC020314F8DA007F13E0DB0FFEC9FC4275
7AF14F>54 D<ED0FFE92B512E0020714FC021F14FF91267FF00313C04AC7EA3FE0D903F8
EC0FF8D907E0EC03FC49486E7E49C9127F013E707E49707EA249707E4848707EA2484816
0385000717015B851800120FA47FA36D16016D5FA27F6C6C4C5A7F6E15076C6D5E02F04B
5A6E151F6C01FE5E6E4BC7FC6C6E147E6D01E05C6F495A6D01FC495A6D6D495A6D9039FF
801FC06D6E48C8FC0101ECE07E6DECF9F86EEBFFE0021F148080020314E06E806E6C13FC
92B57E020380DA0FC714C0DA3F0380DA7E0014F8D901F86D7F4948011F7F49486D7FD91F
C0010314C049C77E017E6E8001FE033F7F48486F7F49150748486F7F484803007F000F17
7F49EE1FFF001F834982003F71138090CA7E4883127EF17FC0193F12FE48181FA3190FA6
6C1980127E191F1A00127F6C606D173E001F187E6D177C6C6C17FC6D4C5A00074D5A6C6C
4C5AD801FE160F6D4C5A6C6D4B5AD93FE003FFC7FCD91FF8EC03FCD90FFEEC1FF8903B03
FFE001FFF06D90B612C06D6C92C8FC020F14FC020114E09126001FFEC9FC42757AF14F>
56 D<DB3FF815E00203B512C0021F02F81301027F14FE49B7128049D9C007EBC003D90F
FEC7EA3FF0D91FF8913807F807D93FE0EC01FC4948913800FE0F4948153F4890C9EA1F9F
4848EE0FDF49EE07FF484882000F834982121F49177F003F183F5B191F127F190F5B1907
12FFA21903A31901A27FA36D1700A2127F7F7F1A006C7E7F7F6C7F806C7F14F86C7F6CEB
FF8015F86CECFF806C15F86DECFF806D15F06D15FF6D16E0010316F86D16FE6D6C81021F
16C0020382DA003F81030781DB007F80040780DC007F7F050F14801700063F13C07213E0
18077213F084841AF8197F193F1AFC191FA2190F00E019FE1907A41903A27EA57E1AFCA2
7E19077E1AF86C180FA26D18F0191F6D18E06D173F6D18C06DEF7F806D17FF017E4C1300
6D6C5E486C6C4B5AD90FF0ED0FF826FC07FC4B5AD901FF4B5A486C01F0ECFFC091273FFF
800F5B48010F90B548C7FC020315F8020015E048020F14809226007FF8C8FC477C78F858
>83 D<EB01F0EA07FFB5FCA51201EA007F133FA2131FB3B10507B512FEA5050114C07149
C7FC19F019C0614EC8FC60EF01F04D5A604D5A4DC9FC173E5F5F4C5A4C5A4C5A4C5A4CCA
FC163C5E16FC15014B7E4B7E5D033F7F037C7F5D9139F1F07FE09139F3E03FF0ECF7C091
39FF801FF8ED000F02FC804A6D7E4A13034A80707F8284717E173F84717E170F84717EA2
717E717FA2717F727EA2727E85181F858585496C83D9FFFC037F13F0B600FC0103B612C0
A54A787AF753>107 D<D901F0903803FF80D807FF021F13F8B5027F13FE923A01FC03FF
80923A03E0007FE0DB0F80EB1FF0031EC76C7EC65C013F496E7E011F496E7E5DEB0FF1DA
F3C06E7E5D14F792C9FC02FF835CA35CA45CB3B3A8496C4B7FD97FFF030713F0B7D8800F
B612F8A54D4B7ACA58>110 D<B600F84AB512FCA5000191C9003F13C026007FFC040F13
006D4817FC011F715A62010F715A6E5F13076E4C5A130397C7FC6E5E6D170E816D5FA26F
153C027F163881023F5EA26F15F0021F5E81020F4B5AA26F140302075E8102034BC8FCA2
6F5C6E150E826E5DA270133C037F143882033F5CA27013F0031F5C82030F495AA2EEFC03
03075C16FE030349C9FCA2705A6F130E178E6F139CA217FC705AA2705AA3705AA2705AA3
705AA294CAFCA25E160EA25EA2163C1638A25EA216F05EA24B5A120FD83FC01303486C5C
486C130793CBFC5D150E5D153C6C485B495B6C48485A383C0003001F495A260FE03FCCFC
3803FFFE6C13F838003FE04E6C7EC953>121 D E end
TeXDict begin
1 0 bop 1705 963 a Fi(Syn68k)523 1146 y Fh(ARDI's)42
b(dynamically)i(compiling)g(68LC040)d(em)l(ulator)1276
1386 y Fg(Mat)33 b(Hostetter)g Ff(<mat@ardi.com>)1591
1582 y Fg(Octob)s(er)f(27,)h(1995)523 1939 y Fe(1)135
b(Ov)l(erview)523 2121 y Fd(This)36 b(do)r(cumen)n(t)h(is)f(mean)n(t)h
(to)f(giv)n(e)f(a)h(concise)g(tec)n(hnical)g(summary)g(of)g(ho)n(w)g
(syn68k)523 2221 y(w)n(orks.)648 2321 y(\\Syn68k,")22
b(ARDI's)j(68LC040)c(em)n(ulator,)j(is)g(b)r(oth)g(highly)g(p)r
(ortable)f(and)h(fast.)35 b(The)523 2420 y(p)r(ortable)23
b(core)g(of)h(syn68k,)g(whic)n(h)g(w)n(orks)e(b)n(y)i(dynamically)f
(compiling)h(680x0)e(co)r(de)i(in)n(to)523 2520 y(an)39
b(e\016cien)n(t)h(in)n(terpreted)e(form,)k(w)n(as)d(designed)f(to)i
(run)f(on)g(all)g(ma)5 b(jor)38 b(CPU's.)72 b(On)523
2619 y(supp)r(orted)28 b(arc)n(hitectures,)f(syn68k)g(can)h(also)f
(translate)g(680x0)f(co)r(de)i(in)n(to)g(nativ)n(e)g(co)r(de)523
2719 y(that)g(the)g(host)f(pro)r(cessor)f(can)h(run)g(directly)-7
b(.)523 2994 y Fe(2)135 b(Syngen)523 3175 y Fd(ARDI's)25
b(\\syngen")e(system)h(analyzes)f(a)h(lisp-lik)n(e)g(\014le)h
(describing)f(the)g(bit)h(patterns)g(and)523 3275 y(seman)n(tics)19
b(of)h(the)g(680x0)e(instruction)i(set)g(and)f(pro)r(duces)h(lo)r(okup)
f(tables)h(and)f(C)h(co)r(de)g(for)523 3375 y(the)g(run)n(time)g
(system)g(to)f(use.)35 b(This)19 b(pro)r(cess)g(tak)n(es)g(place)g
(only)h(when)g(syn68k)e(is)i(built,)i(so)523 3474 y(w)n(e)i(can)g
(a\013ord)g(extensiv)n(e)g(analysis)f(here.)35 b(The)25
b(co)r(de)f(and)g(tables)h(generated)e(b)n(y)h(syngen)523
3574 y(dep)r(end)30 b(somewhat)e(on)h(the)h(c)n(haracteristics)d(of)i
(the)h(host)f(pro)r(cessor;)f(for)g(example,)i(on)523
3674 y(a)h(little)i(endian)e(mac)n(hine)g(it)i(is)e(adv)-5
b(an)n(tageous)30 b(to)h(b)n(yte)h(sw)n(ap)e(some)h(extracted)g(680x0)
523 3773 y(op)r(erands)c(at)g(compile)g(time)i(instead)e(of)h(at)f(run)
n(time.)648 3873 y(The)d(680x0)e(description)i(\014le)g(can)g(describ)r
(e)g(m)n(ultiple)h(w)n(a)n(ys)e(to)h(em)n(ulate)g(an)n(y)f(partic-)523
3972 y(ular)g(680x0)f(op)r(co)r(de.)36 b(The)24 b(run)n(time)f(system)h
(lo)r(oks)f(at)h(what)g(CC)g(bits)g(are)f(liv)n(e)g(after)h(the)523
4072 y(instruction)32 b(and)f(c)n(ho)r(oses)g(the)h(fastest)g(v)-5
b(arian)n(t)30 b(it)j(can)e(legally)g(use.)49 b(In)32
b(the)g(follo)n(wing)523 4172 y(example,)f(w)n(e)f(ha)n(v)n(e)f(t)n(w)n
(o)h(CC)h(v)-5 b(arian)n(ts)29 b(of)h(lsrw;)i(one)e(computes)g(no)h(CC)
f(bits,)i(and)e(the)523 4271 y(other)d(computes)g(all)h(of)f(them:)523
4454 y Fc(\(defopcode)39 b(lsrw_ea)610 4554 y(\(list)j(68000)f
(amode_alterable_m)o(em)o(ory)c(\(\))42 b(\(list)g("1110001011mmmmm)o
(m"\))o(\))610 4653 y(\(list)g("-----")e("-----")h(dont_expand)523
4753 y(\(assign)g($1.muw)g(\(>>)h($1.muw)f(1\)\)\))610
4852 y(\(list)h("CN0XZ")e("-----")h(dont_expand)1934
5147 y Fd(1)p eop
2 1 bop 523 614 a Fc(\(list)567 714 y(\(assign)40 b(ccx)j(\(assign)d
(ccc)j(\(&)f($1.muw)g(1\)\)\))567 814 y(\(ASSIGN_NNZ_WOR)o(D)c
(\(assign)i($1.muw)h(\(>>)i($1.muw)e(1\)\)\)\)\)\))648
977 y Fd(The)27 b(680x0)f(description)h(\014le)h(can)g(also)e(sp)r
(ecify)i(whic)n(h)g(680x0)e(op)r(erands)g(should)i(b)r(e)523
1076 y(\\expanded")21 b(to)h(b)r(ecome)g(implicitly)h(kno)n(wn)f(b)n(y)
g(the)h(corresp)r(onding)d(syn)n(thetic)j(op)r(co)r(de.)523
1176 y(F)-7 b(or)25 b(example,)h(fully)h(expanding)e(out)h(\\addl)g
(dx,dy")f(w)n(ould)h(result)g(in)g(64)f(syn)n(thetic)h(op-)523
1275 y(co)r(des,)20 b(one)f(for)f(eac)n(h)g(com)n(bination)g(of)h(data)
g(register)e(op)r(erands.)33 b(This)19 b(results)f(in)h(smaller)523
1375 y(and)32 b(faster)g(syn)n(thetic)g(op)r(co)r(des)g(at)g(the)h(exp)
r(ense)f(of)h(increasing)e(the)h(total)g(n)n(um)n(b)r(er)g(of)523
1475 y(syn)n(thetic)e(op)r(co)r(des.)45 b(T)-7 b(o)30
b(conserv)n(e)f(space,)h(w)n(e)g(only)g(expand)g(out)h(common)f(680x0)e
(op-)523 1574 y(co)r(des.)58 b(On)34 b(host)h(arc)n(hitectures)e(where)
h(w)n(e)h(can)f(compile)h(to)f(nativ)n(e)g(co)r(de,)j(w)n(e)d(don't)523
1674 y(w)n(aste)27 b(space)g(b)n(y)g(\\expanding)f(out")i(common)f(syn)
n(thetic)g(op)r(co)r(des.)523 1945 y Fe(3)135 b(T)-11
b(est)45 b(suites)523 2127 y Fd(ARDI)29 b(has)f(a)g(large)f(set)i(of)f
(test)h(suites)f(that)h(try)f(thousands)g(up)r(on)g(thousands)g(of)g(v)
-5 b(ari-)523 2227 y(ations)31 b(of)h(680x0)e(op)r(co)r(des)i(and)f
(compare)g(the)h(results)g(to)g(those)f(generated)g(b)n(y)h(a)f(real)
523 2326 y(68040.)39 b(These)29 b(test)h(suites)f(ha)n(v)n(e)f(pro)n(v)
n(en)g(to)h(b)r(e)h(an)f(in)n(v)-5 b(aluable)28 b(debugging)g(to)r(ol,)
i(b)r(oth)523 2426 y(as)d(new)g(features)f(are)g(added)h(and)g(as)g(w)n
(e)g(ha)n(v)n(e)f(p)r(orted)h(syn68k)e(to)i(other)g(arc)n(hitectures)
523 2525 y(\(notably)j(80x86,)f(680x0,)g(i860)f(and)i(Alpha\).)45
b(Our)30 b(nativ)n(e)f(co)r(de)h(supp)r(ort)g(is)g(so)g(recen)n(t)523
2625 y(that)k(our)e(test)i(suites)g(do)f(not)g(y)n(et)g(adequately)g
(test)h(all)f(of)g(the)h(situations)f(that)h(arise)523
2725 y(when)28 b(generating)e(nativ)n(e)h(co)r(de,)g(but)i(w)n(e)e
(plan)g(to)h(extend)g(them)g(in)g(the)g(near)e(future.)523
2996 y Fe(4)135 b(In)l(terpreted)46 b(co)t(de)523 3178
y Fd(Our)34 b(in)n(terpreted)g(co)r(de)h(consists)f(of)h(con)n(tiguous)
e(sequences)h(of)h(\\syn)n(thetic)f(op)r(co)r(des")523
3277 y(and)j(their)g(op)r(erands.)65 b(Syngen)37 b(can)g(generate)f
(ANSI)i(C,)f(but)h(when)g(compiled)f(with)523 3377 y(gcc)29
b(it)h(uses)g(C)g(language)e(extensions)h(that)h(mak)n(e)f(syn)n
(thetic)h(op)r(co)r(des)f(p)r(oin)n(ters)g(to)h(the)523
3477 y(C)h(co)r(de)g(resp)r(onsible)f(for)g(in)n(terpreting)g(that)h
(op)r(co)r(de.)47 b(This)31 b(\\threaded)f(in)n(terpreting")523
3576 y(en)n(tirely)d(eliminates)h(switc)n(h)f(dispatc)n(h)g(and)h(lo)r
(op)f(o)n(v)n(erhead.)648 3676 y(T)-7 b(o)30 b(illustrate)g(the)h(ab)r
(o)n(v)n(e)e(p)r(oin)n(ts,)j(here)e(is)g(the)h(assem)n(bly)f(language)e
(generated)i(for)523 3775 y(the)25 b(syn)n(thetic)g(op)r(co)r(de)g
(that)g(w)n(ould)f(handle)h(a)g(fully)g(expanded)g(\\addl)f(d0,d1")g
(when)h(no)523 3875 y(CC)30 b(bit)h(v)-5 b(alues)29 b(are)g(required.)
43 b(This)30 b(is)g(what)g(gcc's)f(80x86)f(output)j(lo)r(oks)e(lik)n(e)
h(\(edited)523 3975 y(for)j(readabilit)n(y\))f(after)g(w)n(e)h(run)g
(our)f(in)n(terpreter)g(through)g(ARDI's)i(P)n(en)n(tium-sp)r(eci\014c)
523 4074 y(instruction)27 b(sc)n(heduling)g(P)n(erl)g(script:)523
4237 y Fc(movl)173 b(_d0,\045eax)345 b(;)43 b(fetch)f(d0)523
4337 y(movl)173 b(\(\045esi\),\045edi)213 b(;)43 b(fetch)f(next)g
(synthetic)e(opcode)523 4436 y(addl)173 b(\045eax,_d1)345
b(;)43 b(do)g(the)f(add)523 4536 y(addl)173 b($4,\045esi)389
b(;)43 b(increment)d(synthetic)g(PC)523 4636 y(jmp)217
b(*\045edi)477 b(;)43 b(jump)f(to)h(next)f(synthetic)e(opcode)h
(handler)648 4799 y Fd(W)-7 b(e)23 b(m)n(ust)g(emphasize)g(that)g(the)g
(preceding)g(example)f(is)h(not)g(nativ)n(e)g(co)r(de)g(generated)523
4898 y(b)n(y)h(our)e(em)n(ulator,)i(but)g(merely)g(a)f(snipp)r(et)h(of)
g(what)g(gcc)f(generates)f(for)h(our)g(in)n(terpreter.)1934
5147 y(2)p eop
3 2 bop 523 614 a Fd(This)38 b(giv)n(es)e(y)n(ou)h(some)g(idea)g(of)g
(the)h(e\016ciency)g(of)f(the)h(p)r(ortable)f(comp)r(onen)n(t)h(of)f
(our)523 714 y(em)n(ulator.)523 989 y Fe(5)135 b(Nativ)l(e)46
b(co)t(de)523 1170 y Fd(Syn68k)28 b(supp)r(orts)h(optional)f(arc)n
(hitecture-sp)r(eci\014c)g(nativ)n(e)g(co)r(de)h(extensions.)40
b(On)29 b(sys-)523 1270 y(tems)h(where)f(they)h(are)f(presen)n(t,)h
(the)g(run)n(time)f(system)h(tries)f(to)h(generate)e(nativ)n(e)i(co)r
(de)523 1370 y(whenev)n(er)g(p)r(ossible.)48 b(In)32
b(those)f(rare)f(cases)g(when)i(it)g(cannot,)f(it)h(rev)n(erts)e(to)h
(our)g(in)n(ter-)523 1469 y(preted)22 b(co)r(de.)35 b(Since)22
b(syn68k)f(supp)r(orts)h(b)r(oth)g(nativ)n(e)g(and)g(syn)n(thetic)g(co)
r(de,)h(the)f(run)n(time)523 1569 y(system)e(automatically)f(inserts)h
(gatew)n(a)n(ys)d(b)r(et)n(w)n(een)j(the)h(t)n(w)n(o)e(whenev)n(er)h
(there)f(is)h(a)g(tran-)523 1669 y(sition.)44 b(This)31
b(approac)n(h)d(allo)n(ws)g(us)j(to)f(gradually)e(phase)i(in)g(nativ)n
(e)g(co)r(de)g(handlers)f(for)523 1768 y(most)e(680x0)e(instructions)i
(while)h(lea)n(ving)e(tric)n(ky)g(and)h(unimp)r(ortan)n(t)g(rare)f
(cases)g(alone.)648 1868 y(Although)h(our)g(nativ)n(e)g(co)r(de)g
(compilation)g(engine)g(is)g(not)g(arc)n(hitecture-sp)r(eci\014c,)f(to)
523 1967 y(date)37 b(w)n(e)f(ha)n(v)n(e)f(only)h(implemen)n(ted)i(an)e
(80x86)e(bac)n(k)i(end.)64 b(The)37 b(80x86)e(arc)n(hitecture)523
2067 y(has)c(ac)n(hiev)n(ed)g(suc)n(h)g(imp)r(ortan)n(t)h(status)g(in)g
(the)g(industry)g(that)g(it)g(mak)n(es)f(sense)g(for)g(us)523
2167 y(to)40 b(describ)r(e)g(ho)n(w)f(w)n(e)h(generate)e(nativ)n(e)i
(co)r(de)g(for)f(it,)44 b(ev)n(en)39 b(though)h(man)n(y)f(of)h(these)
523 2266 y(tec)n(hniques)27 b(w)n(ould)h(not)f(b)r(e)h(necessary)e(on)h
(RISC)h(arc)n(hitectures.)648 2366 y(W)-7 b(e)39 b(are)g(glad)f(that)i
(w)n(e)f(implemen)n(ted)h(the)g(most)f(di\016cult)h(bac)n(k)e(end)i
(\014rst.)72 b(W)-7 b(e)523 2466 y(b)r(eliev)n(e)35 b(that,)j(w)n(ere)c
(w)n(e)h(to)h(ha)n(v)n(e)e(started)h(with)h(a)f(RISC)g(bac)n(k)g(end,)j
(w)n(e)d(w)n(ould)g(ha)n(v)n(e)523 2565 y(quite)i(p)r(ossibly)f(arc)n
(hitected)g(a)g(system)h(where)f(retro\014tting)g(the)h(exotic)f(mec)n
(hanisms)523 2665 y(necessary)26 b(for)h(e\016cien)n(t)h(80x86)d(supp)r
(ort)j(w)n(as)e(di\016cult.)648 2764 y(Three)h(ma)5 b(jor)26
b(problems)h(mak)n(e)g(translating)f(680x0)g(co)r(de)h(to)g(80x86)f(co)
r(de)h(di\016cult:)625 2947 y(1.)41 b(The)27 b(80x86)f(has)h(only)g(8)g
(registers,)f(while)i(the)g(680x0)d(has)i(16.)625 3113
y(2.)41 b(The)27 b(80x86)f(is)h(little)i(endian,)e(while)h(the)g(680x0)
d(is)j(big)f(endian.)625 3279 y(3.)41 b(The)19 b(80x86)f(do)r(es)h(not)
g(ha)n(v)n(e)g(general-purp)r(ose)e(p)r(ostincremen)n(t)i(and)g
(predecremen)n(t)731 3379 y(op)r(erators,)25 b(whic)n(h)j(are)e(used)i
(frequen)n(tly)f(in)h(680x0)e(co)r(de.)648 3561 y(On)h(the)h(other)f
(hand,)h(sev)n(eral)d(factors)i(mak)n(e)g(the)h(job)f(easier:)625
3744 y(1.)41 b(The)24 b(80x86)f(has)h(all)h(of)f(the)h(CISC)g
(addressing)e(mo)r(des)i(commonly)f(used)g(in)h(680x0)731
3844 y(co)r(de.)625 4010 y(2.)41 b(The)e(80x86)f(has)h(CC)g(bits)h
(that)g(map)f(directly)h(to)f(their)h(680x0)d(coun)n(terparts)731
4109 y(\(except)27 b(for)h(the)g(680x0's)d(X)j(bit\).)625
4275 y(3.)41 b(The)32 b(80x86)e(supp)r(orts)i(8-,)h(16-)e(and)h(32-bit)
f(op)r(erations,)h(\(although)g(it)h(can)f(only)731 4375
y(supp)r(ort)27 b(8)g(bit)h(op)r(erations)f(on)g(four)g(of)h(its)f
(registers\).)625 4541 y(4.)41 b(The)27 b(80x86)f(and)h(680x0)f(ha)n(v)
n(e)g(analogous)f(conditional)i(branc)n(h)g(instructions.)625
4707 y(5.)41 b(The)c(80x86)e(allo)n(ws)h(unaligned)h(memory)f(accesses)
g(without)i(substan)n(tial)e(o)n(v)n(er-)731 4807 y(head.)1934
5147 y(3)p eop
4 3 bop 648 614 a Fd(The)25 b(toughest)f(problem)h(is)g(the)h(lac)n(k)e
(of)h(registers.)34 b(On)25 b(32-register)d(RISC)k(arc)n(hitec-)523
714 y(tures)h(it's)h(easy)f(to)g(allo)r(cate)g(one)g(RISC)h(register)e
(for)h(eac)n(h)g(680x0)e(register,)i(but)h(on)f(the)523
814 y(80x86)i(a)i(di\013eren)n(t)g(approac)n(h)f(is)h(needed.)47
b(The)32 b(ob)n(vious)d(solution)i(is)g(to)g(p)r(erform)g(full-)523
913 y(blo)n(wn)22 b(in)n(ter-blo)r(c)n(k)g(register)f(allo)r(cation,)h
(but)i(w)n(e)e(fear)g(that)h(using)f(traditional)g(compiler)523
1013 y(tec)n(hniques)27 b(w)n(ould)h(b)r(e)g(unacceptably)f(slo)n(w.)
648 1112 y(F)-7 b(or)36 b(no)n(w,)j(w)n(e)e(ha)n(v)n(e)f(adopted)h(a)g
(simple)h(constrain)n(t:)55 b(b)r(et)n(w)n(een)37 b(basic)g(blo)r(c)n
(ks,)i(all)523 1212 y(registers)17 b(and)i(liv)n(e)f(CC)h(bits)g(m)n
(ust)f(reside)g(in)h(their)g(canonical)f(home)g(in)h(memory)-7
b(.)33 b(Within)523 1312 y(a)27 b(blo)r(c)n(k,)g(an)n(ything)g(go)r
(es.)36 b(So)28 b(what)f(lib)r(erties)h(do)r(es)f(syn68k)f(tak)n(e)h
(within)h(a)g(blo)r(c)n(k?)648 1411 y(The)23 b(80x86)f(register)g(set)i
(is)f(treated)h(as)f(a)g(cac)n(he)g(for)g(recen)n(tly)g(used)g(680x0)f
(registers,)523 1511 y(and)38 b(the)h(80x86)d(CC)i(bits)h(are)e(used)h
(as)g(a)f(cac)n(he)h(for)g(the)g(680x0)e(CC)j(bits.)69
b(A)n(t)38 b(an)n(y)523 1611 y(particular)18 b(p)r(oin)n(t)h(within)h
(a)e(blo)r(c)n(k,)j(eac)n(h)d(680x0)f(register)h(is)h(either)f(sitting)
i(in)f(its)g(memory)523 1710 y(home)35 b(or)f(is)h(cac)n(hed)f(in)h(an)
g(80x86)e(register,)i(and)g(eac)n(h)g(liv)n(e)f(680x0)f(CC)i(bit)h(is)f
(either)523 1810 y(cac)n(hed)28 b(in)h(its)g(80x86)e(equiv)-5
b(alen)n(t)29 b(or)e(stored)h(in)i(its)f(memory)f(home.)40
b(Cac)n(hed)28 b(registers)523 1910 y(ma)n(y)g(b)r(e)i(in)f(canonical)f
(form,)h(ma)n(y)g(b)r(e)g(b)n(yte)g(sw)n(app)r(ed,)h(ma)n(y)e(ha)n(v)n
(e)g(only)h(their)g(lo)n(w)f(t)n(w)n(o)523 2009 y(b)n(ytes)f(sw)n(app)r
(ed,)h(or)e(ma)n(y)h(b)r(e)h(o\013set)g(b)n(y)f(a)g(kno)n(wn)g(constan)
n(t)g(from)g(their)h(actual)f(v)-5 b(alue.)648 2109 y(Eac)n(h)24
b(680x0)f(instruction)j(can)f(require)f(that)i(680x0)e(registers)g(b)r
(e)i(cac)n(hed)e(in)i(partic-)523 2208 y(ular)f(w)n(a)n(ys;)h(the)g
(compilation)g(engine)f(generates)g(the)h(minimal)h(co)r(de)f(needed)g
(to)g(satisfy)523 2308 y(those)33 b(constrain)n(ts)e(and)i(then)g
(calls)f(a)h(sequence)f(of)h(routines)f(to)h(generate)f(the)h(nativ)n
(e)523 2408 y(co)r(de.)j(As)25 b(eac)n(h)g(680x0)e(instruction)i(is)g
(pro)r(cessed,)g(eac)n(h)f(680x0)g(register's)f(cac)n(he)i(status)523
2507 y(is)g(up)r(dated.)37 b(Dirt)n(y)25 b(registers)f(are)g
(canonicalized)h(and)g(spilled)g(bac)n(k)g(to)g(memory)g(at)g(the)523
2607 y(end)j(of)g(eac)n(h)f(blo)r(c)n(k)h(\(or)f(when)h(w)n(e)g(run)f
(out)h(of)g(80x86)e(registers)g(and)i(w)n(e)f(need)h(to)g(mak)n(e)523
2707 y(ro)r(om\).)648 2806 y(W)-7 b(e)22 b(allo)n(w)e(680x0)g
(registers)g(to)i(b)r(e)g(cac)n(hed)f(with)h(v)-5 b(arying)21
b(b)n(yte)h(orders)e(and)i(o\013sets)f(so)523 2906 y(that)26
b(w)n(e)g(can)f(p)r(erform)h(the)g(optimizations)f(of)h(lazy)f(b)n(yte)
h(sw)n(apping)f(and)h(lazy)f(constan)n(t)523 3005 y(o\013setting.)51
b(If)33 b(the)f(680x0)f(program)f(loads)h(a)h(register)f(from)h(memory)
f(and)i(then)f(ends)523 3105 y(up)k(writing)f(it)h(out)g(later,)h(w)n
(e)e(a)n(v)n(oid)g(unnecessary)f(b)n(yte)h(sw)n(aps)g(b)n(y)g(not)h
(canonicaliz-)523 3205 y(ing)c(the)g(v)-5 b(alue)32 b(immediately)-7
b(.)50 b(Lazy)31 b(constan)n(t)h(o\013setting)g(mitigates)f(the)i(o)n
(v)n(erhead)c(of)523 3304 y(p)r(ostincremen)n(t)e(and)h(predecremen)n
(t)f(side)g(e\013ects.)37 b(F)-7 b(or)27 b(example,)g(this)h(680x0)e
(co)r(de:)523 3487 y Fc(pea)260 b(0x1)523 3587 y(pea)g(0x2)523
3686 y(pea)g(0x3)523 3786 y(pea)g(0x4)523 3885 y(...)648
4068 y Fd(b)r(ecomes)27 b(this)h(80x86)d(co)r(de:)523
4251 y Fc(movl)173 b(_a7,\045edi)523 4350 y(movl)g
($0x01000000,-4\(\045)o(ed)o(i\))168 b(;)43 b("push")e(big-endian)f
(constant)523 4450 y(movl)173 b($0x02000000,-8\(\045)o(ed)o(i\))523
4550 y(movl)g($0x03000000,-12\()o(\045e)o(di)o(\))523
4649 y(movl)g($0x04000000,-16\()o(\045e)o(di)o(\))523
4749 y(...)42 b(<more)g(uses)g(of)h(a7)f(may)h(follow,)d(and)j(they'll)
d(use)j(\045edi>)523 4848 y(subl)173 b($16,\045edi)1934
5147 y Fd(4)p eop
5 4 bop 523 614 a Fc(movl)173 b($edi,_a7)523 714 y(...)648
897 y Fd(As)24 b(men)n(tioned)g(ab)r(o)n(v)n(e,)g(w)n(e)g(use)g(the)g
(80x86)f(condition)h(co)r(de)g(bits)g(as)g(a)g(cac)n(he)f(for)h(the)523
996 y(real)j(680x0)e(CC)j(bits.)37 b(Although)28 b(liv)n(e)f(cac)n(hed)
g(CC)g(bits)h(are)f(o)r(ccasionally)f(spilled)h(bac)n(k)523
1096 y(to)g(memory)f(b)r(ecause)g(some)g(80x86)f(instruction)h(is)h(ab)
r(out)g(to)f(clobb)r(er)g(them,)i(this)f(tric)n(k)523
1196 y(almost)33 b(alw)n(a)n(ys)f(w)n(orks.)53 b(Using)33
b(80x86)f(CC)h(bits,)i(w)n(e)f(can)f(frequen)n(tly)g(get)g(a)n(w)n(a)n
(y)f(with)523 1295 y(extremely)20 b(concise)f(co)r(de)h(sequences;)i
(for)e(example,)i(a)e(680x0)e(compare)h(and)h(conditional)523
1395 y(branc)n(h)27 b(b)r(ecomes)g(an)g(80x86)f(compare)g(and)i
(conditional)e(branc)n(h.)523 1669 y Fe(6)135 b(Self-mo)t(difying)46
b(co)t(de)523 1851 y Fd(Lik)n(e)18 b(most)g(dynamically)g(compiling)g
(em)n(ulators,)h(syn68k)e(do)r(esn't)h(detect)h(self-mo)r(difying)523
1951 y(co)r(de;)24 b(the)e(o)n(v)n(erhead)f(is)h(to)r(o)g(high.)35
b(F)-7 b(ortunately)g(,)22 b(self-mo)r(difying)h(programs)c(don't)k(w)n
(ork)523 2050 y(on)29 b(the)h(real)e(68040)f(either.)42
b(W)-7 b(e)29 b(rely)g(on)g(the)h(program)d(making)h(explicit)i(system)
f(calls)523 2150 y(to)34 b(\015ush)g(the)g(cac)n(hes)f(whenev)n(er)g
(680x0)f(co)r(de)i(ma)n(y)f(ha)n(v)n(e)g(b)r(een)i(mo)r(di\014ed)f(or)f
(created.)523 2250 y(Some)d(programs)e(\(lik)n(e)j(Hyp)r(erCard\))e
(\015ush)i(the)g(cac)n(hes)e(v)n(ery)g(often,)j(whic)n(h)e(can)g(cause)
523 2349 y(real)c(p)r(erformance)g(headac)n(hes)g(if)h(co)r(de)g(is)g
(con)n(tin)n(uously)f(recompiled.)36 b(W)-7 b(e)28 b(ha)n(v)n(e)d(solv)
n(ed)523 2449 y(this)i(problem)f(b)n(y)h(c)n(hec)n(ksumming)f(680x0)f
(blo)r(c)n(ks)h(as)g(they)h(are)f(compiled)h(and)f(only)h(de-)523
2549 y(compiling)k(blo)r(c)n(ks)g(whic)n(h)g(fail)h(their)f(c)n(hec)n
(ksums.)47 b(This)32 b(optimization)f(alone)f(sp)r(ed)i(up)523
2648 y(some)27 b(Hyp)r(erCard)g(stac)n(ks)f(b)n(y)h(a)h(factor)e(of)i
(three)f(or)g(so.)523 2923 y Fe(7)135 b(Resp)t(onsiv)l(eness)523
3105 y Fd(Resp)r(onsiv)n(eness)30 b(is)h(a)f(concern)g(for)h(an)n(y)f
(dynamic)h(compiler.)46 b(F)-7 b(ortunately)g(,)32 b(syn68k)d(is)523
3204 y(largely)j(driv)n(en)h(b)n(y)h(automatically)f(generated)f(lo)r
(okup)h(tables)h(so)f(compilation)g(sp)r(eed)523 3304
y(is)e(go)r(o)r(d.)47 b(Lik)n(e)31 b(other)f(dynamic)h(compilers,)g
(syn68k)f(only)h(b)r(others)f(to)h(compile)g(680x0)523
3403 y(co)r(de)c(when)h(it)g(encoun)n(ters)f(it)h(for)f(the)h(\014rst)f
(time.)648 3503 y(When)e(syn68k)f(encoun)n(ters)f(new)i(co)r(de,)h(it)f
(compiles)f(other)h(680x0)e(co)r(de)h(that)h(it)h(can)523
3603 y(reac)n(h)c(from)h(there)g(but)h(do)r(es)f(not)h(compile)f
(through)f(jsr's.)35 b(Only)23 b(when)h(a)f(jsr)g(is)g(actually)523
3702 y(executed)33 b(do)r(es)f(syn68k)g(compile)g(the)h(target)f
(routine.)52 b(Once)32 b(that)h(target)f(routine)g(is)523
3802 y(compiled,)25 b(syn68k)d(mo)r(di\014es)j(the)f(jsr)g(handler)f
(to)h(p)r(oin)n(t)g(directly)g(to)g(the)h(target)e(routine)523
3902 y(so)e(that)h(the)g(jsr)g(will)g(b)r(e)g(extremely)f(fast)h(the)g
(second)f(time)i(it)f(is)f(executed.)35 b(W)-7 b(e'v)n(e)22
b(found)523 4001 y(that)29 b(lazily)g(compiling)f(through)h(jsr's)f(do)
r(es)h(a)f(go)r(o)r(d)h(job)g(of)g(a)n(v)n(oiding)e(compilation)h(lag)
523 4101 y(that)g(migh)n(t)f(anno)n(y)g(the)h(user.)648
4200 y(Syn68k)22 b(do)r(es)i(not)g(attempt)g(to)g(generate)e(nativ)n(e)
h(co)r(de)h(for)f(a)g(basic)h(blo)r(c)n(k)f(un)n(til)h(that)523
4300 y(blo)r(c)n(k)32 b(\(or)g(a)h(nearb)n(y)e(one\))i(has)f(b)r(een)h
(executed)g(50)f(times.)53 b(This)33 b(sa)n(v)n(es)e(memory)h(and)523
4400 y(some)23 b(compilation)g(time,)i(although)e(w)n(e)g(ha)n(v)n
(en't)g(noticed)h(an)n(y)f(particular)f(sluggishness)523
4499 y(when)28 b(compiling)f(to)h(nativ)n(e)f(co)r(de.)1934
5147 y(5)p eop
6 5 bop 523 614 a Fe(8)135 b(Other)45 b(optimizations)523
796 y Fd(Syn68k)20 b(main)n(tains)f(an)i(in)n(ternal)f(\\jsr)f(stac)n
(k")g(to)i(sp)r(eed)g(up)f(the)h(common)f(case)g(of)h(jsr/rts.)523
896 y(W)-7 b(e)26 b(realize)e(that)h(the)h(rts)f(address)e(migh)n(t)j
(ha)n(v)n(e)e(b)r(een)h(\014ddled)h(with,)g(so)f(the)g(rts)g(handler)
523 995 y(v)n(eri\014es)h(at)h(run)n(time)h(that)f(the)h(rts)f(address)
f(matc)n(hes)h(the)g(tag)g(on)g(top)g(of)h(the)f(jsr)g(stac)n(k.)523
1095 y(If)i(it)g(matc)n(hes,)g(syn68k)e(do)r(es)i(a)f(fast)h(jump.)41
b(If)29 b(it)g(do)r(esn't,)g(syn68k)f(lo)r(oks)f(up)i(the)h(co)r(de)523
1195 y(corresp)r(onding)c(to)h(the)h(rts)f(address)g(in)h(a)f(hash)g
(table.)523 1469 y Fe(9)135 b(Neat)46 b(hac)l(ks)523
1651 y Fd(The)25 b(lo)n(w-lev)n(el)e(co)r(de)h(generation)f(routines)h
(for)g(the)h(80x86)e(bac)n(k)g(end)i(are)f(mac)n(hine)g(gen-)523
1751 y(erated)i(from)f(assem)n(bly)g(language)g(templates.)36
b(Thousands)25 b(of)i(op)r(erand)e(p)r(erm)n(utations)523
1850 y(for)c(80x86)d(instructions)j(of)g(in)n(terest)g(are)f(run)g
(through)h(the)g(system's)g(assem)n(bler)e(and)i(an-)523
1950 y(alyzed)k(to)h(deriv)n(e)g(the)g(rules)f(the)i(assem)n(bler)d
(uses)i(to)g(create)f(binaries.)36 b(Those)25 b(rules)g(are)523
2050 y(encapsulated)g(in)n(to)g(C)h(co)r(de)f(and)g(compiled)h(in)n(to)
f(syn68k)f(so)h(w)n(e)g(can)g(generate)f(binaries)523
2149 y(on)j(the)h(\015y)-7 b(.)37 b(Here)28 b(is)f(a)g(sample)g
(template:)610 2332 y Fc({)43 b("i386_leal_indoff)o(",)37
b("",)42 b("",)h("",)f("",)g("-",)785 2432 y("leal)f
(\0450\(\0451\),\0452",)785 2531 y({)i("offset",)d("base",)g("dst")i
(},)785 2631 y({)h({)g(SIZE_32,)d(CONSTANT,)g(IN)j(},)g({)g(SIZE_32,)d
(REGISTER,)g(IN)j(},)697 2730 y({)h(SIZE_32,)c(REGISTER,)g(OUT)i(})h(})
g(},)648 2913 y Fd(This)37 b(approac)n(h)f(has)i(sa)n(v)n(ed)e(us)i
(coun)n(tless)f(hours)g(of)h(debugging)f(and)h(allo)n(ws)e(our)523
3013 y(system)d(to)f(automatically)g(p)r(erform)h(the)g(same)f
(optimizations)h(as)f(the)h(host)g(system's)523 3112
y(assem)n(bler.)648 3212 y(W)-7 b(e'v)n(e)37 b(annotated)g(our)f(80x86)
f(descriptions)i(with)h(information)e(ab)r(out)i(P)n(en)n(tium)523
3312 y(pairabilit)n(y)c(so)g(that)h(future)g(v)n(ersions)e(of)i(syn68k)
f(can)g(sc)n(hedule)h(the)g(nativ)n(e)f(co)r(de)h(w)n(e)523
3411 y(generate)26 b(\(w)n(e)i(already)e(sc)n(hedule)h(our)g(main)h(in)
n(terpreter)e(when)i(w)n(e)f(build)h(syn68k\).)523 3686
y Fe(10)135 b(F)-11 b(uture)44 b(optimizations)523 3868
y Fd(W)-7 b(e)28 b(are)f(w)n(orking)e(on)j(a)f(simple)h(in)n(ter-blo)r
(c)n(k)e(register)g(allo)r(cation)h(algorithm.)648 3967
y(By)20 b(relo)r(cating)f(most)h(680x0)e(register)h(to)h(80x86)e
(register)h(mo)n(v)n(es)g(to)h(the)h(b)r(eginning)f(of)523
4067 y(eac)n(h)25 b(blo)r(c)n(k,)h(w)n(e)g(can)f(impro)n(v)n(e)g(P)n
(en)n(tium)h(pairabilit)n(y)f(and)h(reduce)f(80486)f(and)i(P)n(en)n
(tium)523 4166 y(address)g(generation)g(pip)r(eline)j(stalls.)648
4266 y(No)n(w)g(that)g(w)n(e)h(compile)f(to)g(nativ)n(e)g(co)r(de,)h
(A-line)g(trap)f(o)n(v)n(erhead)f(is)h(b)r(ecoming)g(sig-)523
4366 y(ni\014can)n(t.)35 b(W)-7 b(e)22 b(ma)n(y)g(so)r(on)f(compile)h
(A-line)g(traps)f(to)h(nativ)n(e)g(co)r(de)g(that)g(directly)g(calls)f
(the)523 4465 y(appropriate)27 b(R)n(OMlib)h(routine)f(with)i(the)g
(appropriate)d(argumen)n(ts)h(\(c)n(hec)n(king)h(at)g(run-)523
4565 y(time)f(to)f(mak)n(e)f(sure)h(that)h(neither)f(the)h(trap)f(nor)f
(the)i(A-line)f(v)n(ector)f(has)h(b)r(een)h(patc)n(hed)523
4665 y(out,)h(of)f(course\).)1934 5147 y(6)p eop
7 6 bop 523 614 a Fe(11)135 b(Co)t(de)45 b(examples)523
796 y Fd(Here)22 b(are)e(t)n(w)n(o)i(sample)f(680x0)f(co)r(de)i
(sequences)f(from)g(real)g(applications,)h(and)g(the)g(80x86)523
896 y(co)r(de)g(that)g(syn68k)f(generates)g(for)g(them.)36
b(W)-7 b(e)22 b(c)n(hose)f(these)i(co)r(de)e(sequences)h(sp)r
(eci\014cally)523 995 y(to)39 b(sho)n(w)n(case)e(sev)n(eral)g(of)i(the)
h(tec)n(hniques)f(w)n(e)f(use,)k(so)d(y)n(ou)f(shouldn't)h(use)g(them)h
(as)523 1095 y(a)d(substitute)i(for)e(b)r(enc)n(hmarks.)67
b(Not)38 b(all)f(680x0)f(co)r(de)i(translates)e(as)i(w)n(ell)f(as)g
(these)523 1195 y(examples)27 b(do,)g(but)i(these)e(examples)g(are)g
(far)g(from)g(exotic.)648 1377 y Fb(\017)41 b Fd(Example)26
b(1)i(\(Solarian\):)731 1593 y Fc(680x0)41 b(code:)731
1792 y(addqb)128 b(#1,a4@\(1\))731 1892 y(movel)g(#0,d0)731
1992 y(moveb)g(a4@,d0)731 2091 y(swap)172 b(d0)731 2191
y(clrw)g(d0)731 2291 y(swap)g(d0)731 2390 y(asll)g(#2,d0)731
2490 y(lea)216 b(a5@\(-13462\),a0)731 2589 y(addal)128
b(d0,a0)731 2689 y(moveal)84 b(a0@,a0)731 2789 y(movel)128
b(#0,d0)731 2888 y(moveb)g(a4@\(1\),d0)731 2988 y(cmpw)172
b(a0@,d0)731 3088 y(bcs)216 b(0x3fffee2)731 3287 y(80x86)41
b(code:)731 3486 y(movl)172 b(_a4,\045edi)694 b(;)44
b(addqb)d(#1,a4@\(1\))731 3586 y(addb)172 b($0x1,0x1\(\045edi\))731
3685 y(xorl)g(\045ebx,\045ebx)650 b(;)44 b(movel)d(#0,d0)731
3785 y(movb)172 b(\(\045edi\),\045bl)606 b(;)44 b(moveb)d(a4@,d0)731
3885 y(rorl)172 b($0x10,\045ebx)606 b(;)44 b(swap)d(d0)731
3984 y(xorw)172 b(\045bx,\045bx)738 b(;)44 b(clrw)d(d0)731
4084 y(rorl)172 b($0x10,\045ebx)606 b(;)44 b(swap)d(d0)731
4184 y(shll)172 b($0x2,\045ebx)650 b(;)44 b(asll)d(#2,d0)731
4283 y(movl)172 b(_a5,\045esi)694 b(;)44 b(lea)e(a5@\(-13462\),a0)731
4383 y(leal)172 b(0xffffcb6a\(\045esi\),)o(\045e)o(dx)731
4482 y(addl)g(\045ebx,\045edx)650 b(;)44 b(addal)d(d0,a0)731
4582 y(movl)172 b(\(\045edx\),\045edx)562 b(;)44 b(moveal)d(a0@,a0)731
4682 y(xorl)172 b(\045ebx,\045ebx)650 b(;)44 b(movel)d(#0,d0)731
4781 y(movb)172 b(0x1\(\045edi\),\045bl)474 b(;)44 b(moveb)d
(a4@\(1\),d0)731 4881 y(bswap)128 b(\045edx)870 b(;)44
b(cmpw)d(a0@,d0)1934 5147 y Fd(7)p eop
8 7 bop 731 614 a Fc(movw)172 b(\(\045edx\),\045cx)731
714 y(rorw)g($0x8,\045cx)731 814 y(cmpw)g(\045cx,\045bx)731
913 y(movl)g(\045edx,_a0)694 b(;)44 b(<spill)d(dirty)g(68k)731
1013 y(movl)172 b(\045ebx,_d0)694 b(;)87 b(registers)40
b(back)i(to)h(memory>)731 1112 y(jb)260 b(0x6fae0c)694
b(;)44 b(bcs)e(0x3fffee2)731 1212 y(jmp)216 b(0x6faf0c)694
b(;)44 b(<go)e(to)h("fall)e(through")f(code>)648 1428
y Fb(\017)h Fd(Example)26 b(2)i(\(P)n(ageMak)n(er\):)731
1644 y Fc(680x0)41 b(code:)731 1843 y(movel)128 b(#0,d2)731
1943 y(moveb)g(d0,d2)731 2042 y(lslw)172 b(#8,d0)731
2142 y(orw)216 b(d0,d2)731 2242 y(movel)128 b(d2,d0)731
2341 y(swap)172 b(d2)731 2441 y(orl)216 b(d2,d0)731 2540
y(movel)128 b(a0,d2)731 2640 y(lsrb)172 b(#1,d2)731 2740
y(bcc)216 b(0x3fffed4)731 2939 y(80x86)41 b(code:)731
3138 y(xorl)172 b(\045ebx,\045ebx)650 b(;)44 b(movel)d(#0,d2)731
3238 y(movl)172 b(_d0,\045edx)694 b(;)44 b(moveb)d(d0,d2)731
3337 y(movb)172 b(\045dl,\045bl)731 3437 y(shlw)g($0x8,\045dx)694
b(;)44 b(lslw)d(#8,d0)731 3537 y(orw)216 b(\045dx,\045bx)738
b(;)44 b(orw)e(d0,d2)731 3636 y(movl)172 b(\045ebx,\045edx)650
b(;)44 b(movel)d(d2,d0)731 3736 y(rorl)172 b($0x10,\045ebx)606
b(;)44 b(swap)d(d2)731 3836 y(orl)216 b(\045ebx,\045edx)650
b(;)44 b(orl)e(d2,d0)731 3935 y(movl)172 b(_a0,\045ecx)694
b(;)44 b(movel)d(a0,d2)731 4035 y(movl)172 b(\045ecx,\045ebx)731
4134 y(shrb)g(\045bl)914 b(;)44 b(lsrb)d(#1,d2)731 4234
y(movl)172 b(\045ebx,_d2)694 b(;)44 b(<spill)d(dirty)g(68k)731
4334 y(movl)172 b(\045edx,_d0)694 b(;)87 b(registers)40
b(back)i(to)h(memory>)731 4433 y(jae)216 b(0x3b734c)694
b(;)44 b(bcc)e(0x3fffed4)731 4533 y(jmp)216 b(0x43d48c)694
b(;)44 b(<go)e(to)h("fall)e(through")f(68k)j(code>)1934
5147 y Fd(8)p eop
9 8 bop 523 614 a Fe(12)135 b(Benc)l(hmarks)523 796 y
Fd(These)41 b(p)r(erformance)f(n)n(um)n(b)r(ers)g(w)n(ere)g(computed)h
(with)h(Sp)r(eedometer)f(3.23.)76 b(W)-7 b(e'v)n(e)523
896 y(remo)n(v)n(ed)20 b(the)i(\015oating)e(p)r(oin)n(t)i(tests)f(from)
h(the)f(list)h(since)f(they)h(do)f(not)h(measure)e(syn68k's)523
995 y(sp)r(eed.)35 b(Syn68k)20 b(con)n(tains)g(no)h(sp)r(ecial)f(pro)n
(visions)f(for)i(Sp)r(eedometer's)g(b)r(enc)n(hmarks)f(and)523
1095 y(w)n(e)27 b(b)r(eliev)n(e)g(that)g(these)g(n)n(um)n(b)r(ers)g
(are)f(indicativ)n(e)h(of)g(syn68k's)e(p)r(erformance)h(for)h(man)n(y)
523 1195 y(other)g(CPU-in)n(tensiv)n(e)g(programs.)p
523 1389 3032 4 v 523 1406 V 521 1505 4 100 v 538 1505
V 589 1475 a Fa(T)-6 b(est/CPU)p 1124 1505 V 1140 1505
V 257 w(Quadra)25 b(610)p 1633 1505 V 101 w(P)n(en)n(tium)f(90Mhz)p
2265 1505 V 101 w(486D)n(X4)i(75Mhz)p 2881 1505 V 101
w(486D)n(X/2)h(66Mhz)p 3537 1505 V 3553 1505 V 523 1509
3032 4 v 523 1525 V 521 1625 4 100 v 538 1625 V 589 1595
a Fd(CPU)p 1124 1625 V 1141 1625 V 505 w(16.018)p 1633
1625 V 329 w(28.833)p 2265 1625 V 391 w(15.727)p 2881
1625 V 403 w(13.840)p 3537 1625 V 3554 1625 V 523 1628
3032 4 v 521 1728 4 100 v 538 1728 V 589 1698 a(Dhrystones)p
1124 1728 V 1141 1728 V 275 w(19.586)p 1633 1728 V 329
w(21.886)p 2265 1728 V 391 w(12.084)p 2881 1728 V 424
w(9.424)p 3537 1728 V 3554 1728 V 523 1731 3032 4 v 521
1831 4 100 v 538 1831 V 589 1801 a(T)-7 b(o)n(w)n(er)p
1124 1831 V 1141 1831 V 463 w(18.909)p 1633 1831 V 329
w(27.130)p 2265 1831 V 391 w(12.235)p 2881 1831 V 403
w(11.556)p 3537 1831 V 3554 1831 V 523 1834 3032 4 v
521 1934 4 100 v 538 1934 V 589 1904 a(Quic)n(ksort)p
1124 1934 V 1141 1934 V 331 w(17.759)p 1633 1934 V 329
w(27.105)p 2265 1934 V 391 w(15.606)p 2881 1934 V 403
w(13.919)p 3537 1934 V 3554 1934 V 523 1937 3032 4 v
521 2037 4 100 v 538 2037 V 589 2007 a(Bubble)28 b(sort)p
1124 2037 V 1141 2037 V 259 w(18.409)p 1633 2037 V 329
w(31.154)p 2265 2037 V 391 w(19.286)p 2881 2037 V 403
w(16.875)p 3537 2037 V 3554 2037 V 523 2040 3032 4 v
521 2139 4 100 v 538 2139 V 589 2110 a(Queens)p 1124
2139 V 1141 2139 V 420 w(19.083)p 1633 2139 V 329 w(38.167)p
2265 2139 V 391 w(19.083)p 2881 2139 V 403 w(18.320)p
3537 2139 V 3554 2139 V 523 2143 3032 4 v 521 2242 4
100 v 538 2242 V 589 2213 a(Puzzle)p 1124 2242 V 1141
2242 V 447 w(22.083)p 1633 2242 V 329 w(44.167)p 2265
2242 V 391 w(23.661)p 2881 2242 V 403 w(21.032)p 3537
2242 V 3554 2242 V 523 2246 3032 4 v 521 2345 4 100 v
538 2345 V 589 2316 a(P)n(erm)n(utations)p 1124 2345
V 1141 2345 V 196 w(21.019)p 1633 2345 V 329 w(28.564)p
2265 2345 V 391 w(11.604)p 2881 2345 V 403 w(12.242)p
3537 2345 V 3554 2345 V 523 2349 3032 4 v 521 2448 4
100 v 538 2448 V 589 2418 a(In)n(t.)38 b(Matrix)p 1124
2448 V 1141 2448 V 267 w(24.200)p 1633 2448 V 329 w(26.469)p
2265 2448 V 391 w(19.369)p 2881 2448 V 403 w(16.608)p
3537 2448 V 3554 2448 V 523 2452 3032 4 v 521 2551 4
100 v 538 2551 V 589 2521 a(Siev)n(e)p 1124 2551 V 1141
2551 V 499 w(23.362)p 1633 2551 V 329 w(60.290)p 2265
2551 V 391 w(33.982)p 2881 2551 V 403 w(30.145)p 3537
2551 V 3554 2551 V 523 2555 3032 4 v 523 2571 V 521 2671
4 100 v 538 2671 V 589 2641 a(Av)n(erage)p 1124 2671
V 1141 2671 V 389 w(20.490)p 1633 2671 V 329 w(33.881)p
2265 2671 V 391 w(18.582)p 2881 2671 V 403 w(16.680)p
3537 2671 V 3554 2671 V 523 2674 3032 4 v 648 2823 a(Preliminary)18
b(analysis)g(suggests)g(that)i(w)n(e)g(a)n(v)n(erage)d(a)i(roughly)f
(3:1)h(instruction)h(coun)n(t)523 2923 y(increase)27
b(when)h(translating)g(to)g(80x86)e(co)r(de.)39 b(W)-7
b(e)28 b(ha)n(v)n(e)f(not)i(y)n(et)f(tak)n(en)f(rigorous)f(mea-)523
3022 y(suremen)n(ts,)g(but)i(the)f(3:1)f(\014gure)g(is)h(len)n(t)g
(some)g(credence)f(b)n(y)g(the)i(fact)f(that)g(our)f(75MHz)523
3122 y(486D)n(X4)g(gets)g(nearly)g(the)i(same)e(p)r(erformance)g(as)h
(our)f(Quadra)f(610.)36 b(W)-7 b(e)27 b(b)r(eliev)n(e)g(that)523
3222 y(in)n(ter-blo)r(c)n(k)f(register)g(allo)r(cation)h(will)h
(noticeably)f(impro)n(v)n(e)f(this)i(ratio.)1934 5147
y(9)p eop end
userdict /end-hook known{end-hook}if