new version of chapter

Steve Huss-Lederman (lederman@cs.wisc.edu)
Mon, 12 Feb 1996 13:53:38 -0600

Attached is the postscript of the latest version of the external
interfaces chapter. I welcome comments - especially to the new items
where I hope I got everyones opinion. The major changes are:

- Should we keep generalized requests and do they have a performance
impact.

- A whole new section on accessor functions to opaque objects. Some
were there before, but most are new.

Steve
----------------------------------------------------------------------
%!PS-Adobe-2.0
%%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software
%%Title: mpi2-report.dvi
%%Pages: 29
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%EndComments
%DVIPSCommandLine: dvips -o mpi2-report.ps mpi2-report
%DVIPSParameters: dpi=300, compressed, comments removed
%DVIPSSource: TeX output 1996.02.12:1346
%%BeginProcSet: texc.pro
/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
%%EndProcSet
%%BeginProcSet: special.pro
TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N
/vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen
false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B
/@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit
div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{
/CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{
10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B
/@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale
true def end /@MacSetUp{userdict /md known{userdict /md get type
/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup
length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{}
N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath
clippath mark{transform{itransform moveto}}{transform{itransform lineto}
}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{
itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{
closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39
0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N
/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1
scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get
ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip
not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0
TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR
pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1
-1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg
TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg
sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr
0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add
2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp
{pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72
div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray}
N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict
maxlength dict begin /magscale true def normalscale currentpoint TR
/psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts
/psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx
psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy
scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR
/showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{
psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2
roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath
moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict
begin /SpecialSave save N gsave normalscale currentpoint TR
@SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial
{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto
closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx
sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath
}N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{
end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin}
N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{
/SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX
SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X
/startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad
yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end
%%EndProcSet
TeXDict begin 40258431 52099146 1000 300 300 (mpi2-report.dvi)
@start /Fa 7 112 df<3801F180EA07FFEA0E1FEA1C071238EA7003A348C7FCA7387003
80A338380700121CEA0E0EEA07FCEA01F011177F9614>67 D<EAFFF8A2EA0700B3EAFFF8
A20D177D9614>73 D<38FC1F80A2007C1300EA7637A4EA7777A2EA7367A313E7EA71C7A2
EA7007A638F80F80A211177F9614>77 D<EA1FF0EA7FFCEA783CEA701CEAE00EAFEA701C
EA783CEA7FFCEA1FF00F177E9614>79 D<EAFFF013FCEA381E130E1307A5130E131EEA3F
FC13F0EA3800A812FEA210177F9614>I<EAFB8EEAFFDF383CF380A2EA38E3AA38FEFBE0
13791310808F14>109 D<EA07C0EA1FF0EA3C78EA701CA2EAE00EA6EA701CEA783CEA3C
78EA1FF0EA07C00F107E8F14>111 D E /Fb 4 107 df<EA03C0EA0FF0EA1FF8EA3FFCEA
7FFEA2B5FCA4EA7FFEA2EA3FFCEA1FF8EA0FF0EA03C010107E9115>15
D<133C13E0EA01C013801203AD13005A121C12F0121C12077E1380AD120113C0EA00E013
3C0E297D9E15>102 D<12F0121C12077E1380AD120113C0EA00E0133C13E0EA01C01380
1203AD13005A121C12F00E297D9E15>I<12C0B3B3A502297B9E0C>106
D E /Fc 2 57 df<1240EA7FFC13F8EA4010EA80301320EA00401380EA0100A25A120212
06A2120EA512040E147E9311>55 D<EA0FC0EA1070EA20181260A21270EA3C30EA3F60EA
0F8013E0EA31F0EA6078EAC01C130CA3EA6018EA3030EA0FC00E137F9211>I
E /Fd 10 117 df<12181238127812381208A21210A212201240A21280050C7D830D>44
D<1230127812F0126005047C830D>46 D<EA01E3EA0717EA0C0F1218EA380E12301270A2
EAE01CA41339A3EA6079EA319AEA1E0C10127C9115>97 D<13F8EA0704120CEA1802EA38
041230EA7008EA7FF0EAE000A5EA60041308EA30101360EA0F800F127C9113>101
D<EB78C0EA01C5EA03031206000E1380120C121CA238380700A4130EA3EA181EEA0C7CEA
079CEA001CA25BA2EAC030EAE070EAC1C0007FC7FC121A7E9113>103
D<EA01801203EA0100C7FCA7121C12261247A2128EA2120E5AA35AA21271A31272A2123C
091C7C9B0D>105 D<EA0FC01201A2485AA448C7FCA4380E07801308EB11C01321381C41
80EB8000001DC7FC121EEA3FC0EA38E01370A2EA7071A31372EAE032EA601C121D7E9C13
>107 D<391C1E078039266318C0394683A0E0384703C0008E1380A2120EA2391C0701C0
A3EC0380D8380E1388A2EC0708151039701C032039300C01C01D127C9122>109
D<EA01F0EA0608120C131CEA1818EA1C00121F13C0EA0FF01207EA00781338EA603012E0
12C0EA8060EA60C0EA1F000E127D9111>115 D<12035AA3120EA4EAFFE0EA1C00A35AA4
5AA4EAE080A2EAE100A2126612380B1A7C990E>I E /Fe 3 81 df<12F0B3A8041A7D99
0B>73 D<00FCEB07E0A300EE130DA200EF131D00E71319A2EB803900E31331A2EBC071A2
38E1E0E1A200E013C1A213F1EB7181A2137BEB3B01A2131EA31B1A7D9922>77
D<EAFFF813FE38F00F80EB03C0A2EB01E0A5EB03C0A2EB0F8038FFFE0013F800F0C7FCAB
131A7D9919>80 D E /Ff 6 115 df<143014F0EB03C0EB0700131C1378EA01E0EA0780
000EC7FC123812F0A21238120E6C7EEA01E0EA0078131C1307EB03C0EB00F0143014167D
921B>60 D<EA0710EA18F0EA30701260136012C0A3EA80C013C4A212C1EA46C8EA38700E
0E7E8D13>97 D<120313801300C7FCA6121C12241246A25A120C5AA31231A21232A2121C
09177F960C>105 D<121F1206A45AA4EA181C1366138EEA190CEA3200123C123FEA3180
EA60C013C4A3EAC0C813700F177E9612>107 D<EA383CEA44C6EA47021246EA8E06120C
A3485A144013181480EA3009EB0E00120E7F8D15>110 D<EA30F0EA4918EA4E38EA4C30
EA9C001218A35AA45AA20D0E7F8D10>114 D E /Fg 49 122 df<EA60C0EAF1E0EAF9F0
EA68D0EA0810A3EA1020A2EA2040EA40800C0B7F9913>34 D<1380EA010012025A120C12
0812185AA35AA412E0AA1260A47EA37E1208120C12047E7EEA008009267D9B0F>40
D<7E12407E7E12181208120C7EA37EA41380AA1300A41206A35A1208121812105A5A5A09
267E9B0F>I<126012F0A212701210A31220A21240A2040B7D830B>44
D<EAFFC0A20A0280880D>I<126012F0A2126004047D830B>I<130CA3131EA2132F1327A2
EB4380A3EB81C0A200017F1300A248B47E38020070A2487FA3487FA2003C131EB4EBFFC0
1A1A7F991D>65 D<B51280380E00E014701438143CA514781470EB01E0380FFFC0380E00
F01478143C141C141EA4141C143C147814F0B512C0171A7F991B>I<EB3F023801C0C638
03002E000E131E48130E14065A007813021270A200F01300A600701302A2127800381304
7E14087E000313303801C0C038003F00171A7E991C>I<B57E380E00E01470808080A280
A21580A81500A25C140E5CA2147814E0B51280191A7F991D>I<B512F8380E0038141814
08140C1404A3EB0100A35BEA0FFFEA0E037FA390C7FCA8EAFFE0161A7F9919>70
D<39FFE1FFC0390E001C00AB380FFFFC380E001CAC39FFE1FFC01A1A7F991D>72
D<EAFF80EA1C00B3A6EAFF80091A7E990E>I<EA0FFEEA0070B3124012E0A2EA40E0EA61
C0EA1F000F1A7E9914>I<39FFE01FC0390E000F00140C14085C5C5C495A0102C7FC5B13
0C131C132E1347EB8380EA0F03380E01C06D7EA2147080A280141E141F39FFE07FC01A1A
7F991E>I<EAFFE0000EC7FCB01408A3141814101430147014F0B5FC151A7F9918>I<B414
FF000F14F0A2390B800170A23809C002A33808E004A2EB7008A3EB3810A3EB1C20A2EB0E
40A3EB0780A2EB0300121C39FF8307FF201A7F9923>I<00FEEB7FC0000FEB0E001404EA
0B80EA09C0A2EA08E01370A21338131CA2130E1307EB0384A2EB01C4EB00E4A21474143C
A2141C140C121C38FF80041A1A7F991D>I<137F3801C1C038070070000E7F487F003C13
1E0038130E0078130F00707F00F01480A80078EB0F00A20038130E003C131E001C131C6C
5B6C5B3801C1C0D8007FC7FC191A7E991E>I<B51280380E01E0EB007014781438143CA4
143814781470EB01E0380FFF80000EC7FCABEAFFE0161A7F991A>I<EA0FC2EA1836EA20
0EEA600612C01302A3EAE0001270127EEA3FE0EA1FF8EA03FCEA007E130E130713031280
A3EAC0021306EAE004EAD818EA87E0101A7E9915>83 D<007FB5FC38701C0700401301A2
00C0148000801300A300001400B13803FFE0191A7F991C>I<39FFE07FC0390E000E0014
04B200065B12076C5B6C6C5A3800E0C0013FC7FC1A1A7F991D>I<39FF801FC0391C0007
0014066C1304A36C5BA26C6C5AA36C6C5AA26C6C5AA3EB7080A213790139C7FCA2131EA3
130CA21A1A7F991D>I<EA2040A2EA4080A2EA8100A3EAE1C0EAF1E0A2EA60C00B0B7A99
13>92 D<EA1FC0EA38707FEA101C1200A2EA03FCEA1E1C1238127012E01480A2133CEA70
5F381F8F0011107F8F13>97 D<12FC121CA913FCEA1D07381E0380381C01C0130014E0A6
EB01C01480381E0300EA1906EA10F8131A809915>I<EA07F8EA1C1C1238EA700813005A
A612701304EA3808EA1C18EA07E00E107F8F11>I<133F1307A9EA03E7EA0C17EA180F48
7E127012E0A6126012706C5AEA1C373807C7E0131A7F9915>I<EA07C0EA1C30EA301812
70EA600C12E0EAFFFCEAE000A41260EA7004EA3808EA1C18EA07E00E107F8F11>I<EA01
F0EA0718EA0E38EA1C101300A6EAFFC0EA1C00AEEAFF800D1A80990C>I<EA0FCF381871
8038303000EA7038A4EA30306C5AEA2FC00060C7FCA21270EA3FF013FC6C7EEA600FEAC0
03A4EA6006EA381CEA07E011187F8F13>I<12FC121CA9137CEA1D87381E0380A2121CAB
38FF9FF0141A809915>I<1218123CA212181200A612FC121CAE12FF081A80990A>I<EA01
80EA03C0A2EA0180C7FCA6EA0FC01201B21241EAE180EAE300127E0A2182990C>I<12FC
121CA9EB1FC0EB0F00130C5B13205B13E0121DEA1E70EA1C7813387F131E7F148038FF9F
E0131A809914>I<12FC121CB3A6EAFF80091A80990A>I<38FC7C1F391D8E6380391E0781
C0A2001C1301AB39FF9FE7F81D107F8F20>I<EAFC7CEA1D87381E0380A2121CAB38FF9F
F01410808F15>I<EA07E0EA1C38EA300CEA700EEA6006EAE007A6EA6006EA700EEA381C
EA1C38EA07E010107F8F13>I<EAFCFCEA1D07381E0380381C01C0A2EB00E0A6EB01C014
80381E0300EA1D06EA1CF890C7FCA6B47E1317808F15>I<EAFC78EA1D9CEA1E1C1308EA
1C00ABEAFF800E10808F0F>114 D<EA1F20EA60E0EA402012C0A2EAF000127FEA3FC0EA
1FE0EA00F0EA8070133012C01320EAF040EA8F800C107F8F0F>I<1208A41218A21238EA
FFC0EA3800A81320A41218EA1C40EA07800B177F960F>I<38FC1F80EA1C03AB1307120C
EA0E0B3803F3F01410808F15>I<38FF0F80383C0700EA1C061304A26C5AA26C5AA3EA03
A0A2EA01C0A36C5A11107F8F14>I<39FE7F1F8039381C0700003C1306381C0C04130E38
0E16081317A238072310149013A33803C1A014E0380180C0A319107F8F1C>I<38FE3F80
383C1E00EA1C086C5AEA0F306C5A6C5A12017F1203EA0270487E1208EA181CEA381E38FC
3FC012107F8F14>I<38FF0F80383C0700EA1C061304A26C5AA26C5AA3EA03A0A2EA01C0
A36C5AA248C7FCA212E112E212E4127811177F8F14>I E /Fh 1
1 df<B512F0A214027D881B>0 D E /Fi 10 62 df<120112021204120C1218A21230A2
12701260A312E0AA1260A312701230A21218A2120C12041202120108227D980E>40
D<12801240122012301218A2120CA2120E1206A31207AA1206A3120E120CA21218A21230
12201240128008227E980E>I<EA07C0EA1830EA3018EA701CEA600CA2EAE00EA9EA600C
A2EA701CEA3018EA1C70EA07C00F157F9412>48 D<1206120E12FE120EB1EAFFE00B157D
9412>I<EA0F80EA30E0EA4070EA8030EAC03812E0124012001370A2136013C0EA0180EA
03001206EA0C081208EA1018EA3FF0127F12FF0D157E9412>I<EA0FE0EA3030EA6018EA
701CA21200131813381360EA07E0EA00301318130C130EA212E0A2EAC00CEA4018EA3030
EA0FE00F157F9412>I<1330A2137013F012011370120212041208121812101220124012
C0EAFFFEEA0070A5EA03FE0F157F9412>I<EA6030EA7FE013C0EA44001240A4EA4F80EA
70E0EA4070EA00301338A2124012E0A2EA8030EA4060EA20C0EA1F000D157E9412>I<EA
01F0EA0608EA080CEA181C1230EA7000126012E0EAE3E0EAEC30EAF018130CEAE00EA312
60A2EA300C1318EA1830EA07C00F157F9412>I<B512FCA2C8FCA6B512FCA2160A7E8C1B>
61 D E /Fj 6 113 df<1206A2120E121E12FE12EE120EACEAFFE0A20B147D9312>49
D<EA1FC0EA3FF0EA3838EA101C1200EA07FC123FEA781C12E0A3EA703C383FFF80EA1FCF
110E7F8D12>97 D<1206120FA21206C7FCA3127FA21207AAEAFFF0A20C157D9412>105
D<13C0EA01E0A2EA00C01300A3EA1FE0A21200AFEA40C012E1EAFF80EA7E000B1C7E9412
>I<EAF71CEAFFBEEA79E7A2EA71C7A838F9E780EAF8E3110E808D12>109
D<EAFBE0EAFFF0EA3C38EA381C130C130EA4130C131CEA3C38EA3FF0EA3BC0EA3800A512
FEA20F157F8D12>112 D E /Fk 2 81 df<141C143C14F8EB01E0EB03C0EB0780EB0F00
130E131E5BA35BB3B3A25BA3485AA2485A5B48C7FC120E5A127812E0A21278121C7E7E6C
7E7F6C7EA26C7EA31378B3B3A27FA37F130E130FEB0780EB03C0EB01E0EB00F8143C141C
167C7B8121>40 D<B712F0A20070C7EA0FF8007814006C1538001C151C6C150C000F1504
6C15066C6C14026D14006C7E1200137013787F131C131E7F7F6D7EA291C8FC5B13065B5B
133813305B5B120149140248C8120600061504000E150C000C151C4815384815F8007014
0F007FB612F0B7FC272A7E7F2C>80 D E /Fl 55 122 df<3801F1C0120312071301120E
A7EAFFF1A2EA0E01B0121D809C16>13 D<EA01C0EA0380EA0700120EA25AA25AA35AA45A
AE1270A47EA37EA27EA27EEA0380EA01C00A2A7D9E10>40 D<12E012707E7EA27EA27EA3
EA0380A4EA01C0AEEA0380A4EA0700A3120EA25AA25A5A5A0A2A7E9E10>I<1203138013
00A2EAE31CEAF33CEAFB7CEA3FF0EA0FC0A2EA3FF0EAFB7CEAF33CEAE31CEA0300A21380
13000E127D9E15>I<12E0A312601240A312C003087C820C>44 D<EAFFE0A20B0280890E>
I<5A1207123FB4FC12C71207B3A3EAFFF8A20D1C7C9B15>49 D<EA07C0EA1FF0EA3878EA
701CEA601EEAE00EEAC00F124013071200A2130F130E131E131C133C137813F0EA01E013
C0EA0380EA0700120E5A5A5AB5FCA2101C7E9B15>I<133C137C135C13DCA2EA019C1203
A2EA071CA2120EA2121CA212381278127012F0B512C0A238001C00A7121B7F9A15>52
D<EA07E0EA1FF8EA3C3CEA700EA2EAE007A4EA700EA2EA3C3CEA1FF8EA07E0EA1FF8EA3C
3CEA700EA2EAE007A6EA700EEA781EEA3C3CEA1FF8EA07E0101D7E9B15>56
D<131C133EA2132E1367A2EBE78013C713C300017F1383138100037F1301486C7EA21206
000E1378380FFFF8A2381C003CA2121800387FA248131F80126000E0EB0780191D7F9C1C
>65 D<EAFFF813FF38F00F80EB03C0EB01E0EB00F0A5EB01E0EB07C0B51280EBFE00EBFF
8038F01FC0EB03E0EB01F013001478A514F0EB01E0EB07C0B51280EBFC00151D7C9C1C>
I<EB3FC03801FFF8EA03C03807801848C7FC121E5AA25AA35AA91278A37EA27E6C130838
0780183803C0783801FFF038003F80151F7D9D1B>I<EAFFFC13FF38F00F80EB03E01301
EB00F014781438143CA2141C141EA8143CA3147814F0A2EB03E0EB0FC0B5120013FC171D
7C9C1E>I<B512C0A200F0C7FCABB51280A200F0C7FCACB512C0A2121D7C9C19>I<B51280
A200F0C7FCABB5FCA200F0C7FCAE111D7C9C18>I<EB3FC0EBFFF83803E07C3807801C38
0F000C001E1300121C123C12381278A25AA6EB03FCA2EB001C1278A21238123C121C121E
7EEA07803803E07C3800FFF8EB3FC0161F7E9D1C>I<00F013F0ADB5FCA2EAF000AE141D
7C9C1D>I<12F0B3AB041D7C9C0C>I<00F0133C147814F0EB01E0EB03C0EB0780EB0F0013
1E5B5B5B5BEAF1F012F3EAF778EAFE7CEAFC3C7FEAF81F487E14801307EB03C014E01301
EB00F0A21478147C161D7C9C1D>75 D<12F0B3A9B5FCA2101D7D9C16>I<00FCEB07E0A3
00EE130DA300E71319A3EB803900E31331EBC071A200E11361A2EBE0E1A200E013C113F1
EB7181A3EB3B01A3131EA313001B1D7C9C24>I<00FC1370A27E12EE12EF12E7A2138012
E313C0A2EAE1E0A212E013F013701378A2133CA2131C131E130EA2130F130714F01303A2
141D7C9C1D>I<133F3801FFE0487F3807C0F8380F807C381E001E003E131F003C7F48EB
0780A348EB03C0A86C130700781480A2007C130F003C1400003E5B6C133E6C6C5A6C6C5A
6CB45A6C5BD8003FC7FC1A1F7E9D1F>I<EAFFFC13FF38F00F80EB03C0EB01E0EB00F0A6
EB01E01303EB0FC0B51280EBFE0000F0C7FCAD141D7C9C1B>I<133F3801FFE0487F3807
C0F8380F807C48487E003E7F003C7F48EB0780A348EB03C0A90078EB0780A2130E393C0F
0F00383E079F381E03DE380F83FC6C6C5A6CB45A6C7F38003F78EB003C143E80EC0F801A
237E9D1F>I<EAFFF813FF38F00F80EB03C0EB01E0EB00F0A5EB01E01303EB0FC0B51280
140013F8EAF03C131C131E7FA2EB0780A2EB03C0A2EB01E0EB00F0A21478151D7C9C1B>
I<EA03F8EA0FFEEA1C0F487E487E0060C7FC12E0A47E1278127FEA3FE0EA1FFCEA07FEEA
01FF38001F801307EB03C0A21301A400C01380EAE00338F00700EA7C0EEA1FFCEA07F012
1F7E9D17>I<B61280A2D8001EC7FCB3A9191D7F9C1C>I<00F01370B3A5007813E0A2383C
01C0381E0380EA0F073807FE00EA01F8141E7C9C1D>I<00F0EB0380A2007814005CA26C
130EA2123E001E5BA26C5BA36C6C5AA23803C06014E0A26C6C5A13E1A23800F18013F301
73C7FCA2137B133EA2131C191D7F9C1C>I<00F001F81370A3007801B81360D9019C13E0
A3D83C03EB01C0141E140E001E15809038070F0313061407000F1500010E1387130C0007
EB0386A2019C138E019813CE0003EB01CCA339019000C801D013D801F013F85B00001470
241D7F9C27>I<00F8130E007C131E003C5B6C13386C13785C380781E03803C1C0EA01C3
EBE780D800F7C7FC137E133E133CA2137E1377EBE780EA01E33803C1C0EB81E048C67E48
7F000E1378487F003C133E487F00707F00F01480191D7F9C1C>I<00F8EB01E0007C14C0
6CEB0380001E1307001F1400380F800E0007131EEBC01C3803E03C000113386D5A000013
F0EB78E0EB7DC0133F6D5A91C7FC7FAC1B1D809C1C>I<387FFFF0A2380001E0130314C0
13071480EB0F005B131E133E133C5B13F85B12015B485A12075B120F90C7FC121E123E12
3C127C1278B512F0A2141D7E9C19>I<EA0FC0EA3FF0EA7FF8EA7038EA401C1200A213FC
120F123FEA781C12E0A3EAF07CEA7FFC13DCEA3F1C0E127E9114>97
D<12E0ABEAE3E0EAEFF8EAFFFCEAF83EEAE01E130E1307A6130EEAF01EEAF83CEAFFF8EA
EFF0EAE3E0101D7D9C15>I<EA03F0EA0FFCEA1FFEEA3C0EEA7802EA70005AA61270EA78
02EA3C0EEA1FFEEA0FFCEA03F00F127F9112>I<1307ABEA07C7EA1FF7EA3FFFEA3C1FEA
7807127012E0A61270EA780FEA3C1FEA3FFFEA1FF7EA07C7101D7F9C15>I<EA07E0EA0F
F0EA3FF8EA3C3CEA700C130EEAFFFEA3EAE000A31270EA7802EA3C0EEA1FFEEA0FFCEA03
F00F127F9112>I<13FC12011203EA0700120EA7EAFFE0A2EA0E00B00E1D809C0D>I<3807
C3C0EA0FFF5A38383800487EA56C5AEA3FF05BEA77C00070C7FCA2EA3FFC13FF481380EA
700738E001C0A3EAF003387C0F80383FFF006C5AEA07F8121B7F9115>I<12F0A41200A7
1270B2041D7E9C0A>105 D<12E0B3AB031D7D9C0A>108 D<38E3F03F39EFF8FF80D8FFFD
13C039F81F81E038F00F00EAE00EAD1B127D9122>I<EAE3E0EAEFF0EAFFF8EAF83CEAF0
1C12E0AD0E127D9115>I<EA03F0EA0FFC487EEA3C0F38780780EA700338E001C0A5EAF0
0300701380EA7807383C0F00EA1FFE6C5AEA03F012127F9115>I<EAE3E0EAEFF8EAFFFC
EAF83EEAE01E130E1307A5130F130EEAF01EEAF87CEAFFF8EAEFF0EAE3E0EAE000A8101A
7D9115>I<EA07C7EA0FF7EA1FFFEA3E1FEA780FEA700712F012E0A51270EA780FEA3C1F
EA3FFFEA1FF7EA07C7EA0007A8101A7F9115>I<EAE38012E712EFEAFC005A5AA25AAB09
127D910E>I<EA1FC0EA3FF0127FEAF030EAE000A27E127FEA3FC0EA1FE0EA01F0EA0038
A21280EAF078EAFFF0EA7FE0EA1FC00D127F9110>I<121CA6EAFFE0A2EA1C00AC1320EA
1FF0120FEA07C00C187F970F>I<EAE01CAE137CEAFFFCEA7FDCEA3F1C0E127D9115>I<EA
E007A212F0EA700EA2EA381CA3EA1C38A3EA0E70A2EA0660120713E0EA03C0A210127F91
13>I<EAE007A2EA700EA21278EA381CA2121C1338120CEA0E3013701206EA0760120313
C01201A21380A2EA0300A25A12FE5A5A101A7F9113>121 D E /Fm
32 122 df<13E01201EA0380EA0700120E5AA25AA25AA35AA91270A37EA27EA27E7EEA03
80EA01E012000B217A9C16>40 D<12C07E12707E7E7EA27EA2EA0380A3EA01C0A9EA0380
A3EA0700A2120EA25A5A5A5A5A0A217B9C16>I<1238127C127EA2123E120E121E121C12
7812F01260070B798416>44 D<127012F8A312700505788416>46
D<13F8EA03FC487EEA0F07381C3B80EA38FF12793873C7C01383EAE701A73873838013C7
3879FF00EA38FEEA1C38380F03C0EA07FF6C1300EA00FC12197E9816>64
D<EA7FFCEAFFFEEA7FFCEA0380B3EA7FFCEAFFFEEA7FFC0F197D9816>73
D<38FC07E0EAFE0FA2383A0B80EA3B1BA513BBEA39B3A413F3EA38E3A21303A538FE0FE0
A313197F9816>77 D<387E07F038FF0FF8387F07F0381D81C0A313C1121C13E1A2136113
71A313311339A21319131D130DA3EA7F07EAFF87EA7F031519809816>I<EA7FF8EAFFFE
6C7E381C0F80130314C01301A313031480130F381FFF005B13F8001CC7FCA7127F487E6C
C7FC12197F9816>80 D<387FFFE0B5FCA2EAE0E0A400001300AFEA07FC487E6C5A13197F
9816>84 D<EA1FE0487E487EEA783CEA300E1200A2EA03FE121FEA3E0E127012E0A3EA78
3E387FFFE0EA3FE7EA0F8313127E9116>97 D<EA03F8EA0FFCEA1FFEEA3C1EEA780CEA70
005AA57EEA70071278EA3E0EEA1FFCEA0FF8EA03F010127D9116>99
D<133FA31307A4EA03C7EA0FF748B4FCEA3C1F487EEA700712E0A6EA700F12786C5A381F
FFE0EA0FF7EA07C713197F9816>I<EA03F0EA0FFC487EEA3C0F487E3870038012E0B5FC
A300E0C7FCA2387003801278EA3E07381FFF00EA07FEEA01F811127E9116>I<131E137F
3801FF8013C7380383001380A2EA7FFFB5FCA2EA0380ACEA7FFC487E6C5A11197F9816>
I<3803E3C03807F7E0EA0FFF381C1CC038380E00A56C5AEA0FF8485AEA1BE00038C7FC12
18EA1FFC13FF481380387003C038E000E0A4387001C0EA7C07383FFF80380FFE00EA03F8
131C7F9116>I<12FCA3121CA41378EA1DFCEA1FFE130FEA1E07121CAA38FF8FE0139F13
8F13197F9816>I<1203EA0780A2EA0300C7FCA4EAFF80A31203ACEAFFFC13FE13FC0F1A
7C9916>I<13301378A213301300A4EA0FF8121F120FEA0038B3EA6070EAF0F0EAFFE0EA
7FC0EA3F800D237E9916>I<127E12FE127E120EA4EB7FE0A3EB0F00131E5B5B5B120F7F
13BC131EEA0E0E7F1480387F87F0EAFFCFEA7F871419809816>I<EA7FC012FF127F1201
B3EA7FFFB512806C130011197E9816>I<38F9C38038FFEFC0EBFFE0EA3C78A2EA3870AA
38FE7CF8A31512809116>I<EAFC78EAFDFCB47EEA1F0FEA1E07121CAA38FF8FE0139F13
8F13127F9116>I<EA03E0EA0FF8487EEA3C1E487EEA700738E00380A5EAF00700701300
EA780FEA3C1EEA1FFC6C5AEA03E011127E9116>I<EAFC7CEAFDFEB5FC381F0780381E03
C0EA1C01EB00E0A6EB01C0EA1E03381F0780EBFF00EA1DFEEA1C7890C7FCA6B47EA3131B
7F9116>I<387F0FC038FF3FE0EA7F7F3807F040EBC0005BA290C7FCA8EA7FFC12FF127F
13127F9116>114 D<EA0FECEA3FFC127FEAF03CEAE01CA2EA7000EA7F80EA1FF0EA07F8
EA003CEA600E12E012F0EAF81EEAFFFC13F8EAC7E00F127D9116>I<12035AA4EA7FFFB5
FCA20007C7FCA75BEB0380A3EB8700EA03FE6C5A6C5A11177F9616>I<EAFC3FA3EA1C07
AB131F381FFFE0EA0FF7EA07C713127F9116>I<387F1FC038FF9FE0387F1FC0381C0700
A2EA0E0EA36C5AA4EA03B8A3EA01F0A26C5A13127F9116>I<38FF1FE0A338380380A4EA
39F3A20019130013B3A3EA1DB71317EA1F1FEA0F1EEA0E0E13127F9116>I<387F1FC038
FF9FE0387F1FC0381C0700120E130EA212075BA2EA039CA21398EA01B8A2EA00F0A35BA3
485A1279127BEA7F8090C7FC123C131B7F9116>121 D E /Fn 82
124 df<EB7E1F3901C1B180390303E3C0000713C3000EEBC180903801C000A6B512FC38
0E01C0B0387F87FC1A1D809C18>11 D<137E3801C180EA0301380703C0120EEB018090C7
FCA5B512C0EA0E01B0387F87F8151D809C17>I<EB7FC0EA01C1EA03031207EA0E01A7B5
FCEA0E01B0387FCFF8151D809C17>I<90383F07E03901C09C18380380F0D80701133C00
0E13E00100131892C7FCA5B612FC390E00E01CB03A7FC7FCFF80211D809C23>I<126012
F0A71260AD1200A5126012F0A21260041E7C9D0C>33 D<EA6060EAF0F0EAF8F8EA6868EA
0808A3EA1010A2EA2020EA4040EA80800D0C7F9C15>I<126012F012F812681208A31210
A2122012401280050C7C9C0C>39 D<1380EA0100120212065AA25AA25AA35AA412E0AC12
60A47EA37EA27EA27E12027EEA0080092A7C9E10>I<7E12407E12307EA27EA27EA37EA4
1380AC1300A41206A35AA25AA25A12205A5A092A7E9E10>I<126012F0A212701210A412
20A212401280040C7C830C>44 D<EAFFE0A20B0280890E>I<126012F0A2126004047C83
0C>I<130113031306A3130CA31318A31330A31360A213C0A3EA0180A3EA0300A31206A2
5AA35AA35AA35AA35AA210297E9E15>I<EA03C0EA0C30EA1818EA300CA2EA700EEA6006
A2EAE007ADEA6006A2EA700EEA300CA2EA1818EA0C30EA07E0101D7E9B15>I<5A120712
3F12C71207B3A5EAFFF80D1C7C9B15>I<EA07C0EA1830EA201CEA400C130EEAF00F12F8
1307A21270EA000F130EA2131CA213381370136013C0EA0180EA0300EA0601120C1218EA
1002EA3FFE127F12FF101C7E9B15>I<EA07E0EA1830EA201CA2EA781E130E131E1238EA
001CA2131813301360EA07C0EA0030131CA2130E130FA2127012F8A3EAF00EEA401C1220
EA1830EA07C0101D7E9B15>I<130CA2131C133CA2135C13DC139CEA011C120312021204
120C1208121012301220124012C0B512C038001C00A73801FFC0121C7F9B15>I<EA300C
EA3FF813F013C0EA2000A6EA23E0EA2C30EA3018131CEA200E1200130FA3126012F0A3EA
800EEA401E131CEA2038EA1870EA07C0101D7E9B15>I<13F0EA030CEA0404EA0C0EEA18
1E1230130CEA7000A21260EAE3E0EAE430EAE818EAF00C130EEAE0061307A51260A2EA70
06EA300E130CEA1818EA0C30EA03E0101D7E9B15>I<1240387FFF801400A2EA4002485A
A25B485AA25B1360134013C0A212015BA21203A41207A66CC7FC111D7E9B15>I<EA03E0
EA0C30EA1008EA200C13061260A21270A2EA7C0CEA3E18EA3FB0EA1FE0EA07F013F8EA18
FCEA307EEA601E130FEAC0071303A4EA60021304EA300CEA1C10EA07E0101D7E9B15>I<
EA03C0EA0C30EA1818EA300C1270EA600EEAE006A21307A51260EA700F1230EA1817EA0C
27EA07C7EA0006A2130EEA300C127813181270EA2030EA10C0EA0F80101D7E9B15>I<12
6012F0A212601200AA126012F0A2126004127C910C>I<126012F0A212601200AA126012
F0A212701210A41220A212401280041A7C910C>I<007FB512C0B612E0C9FCA8B612E06C
14C01B0C7E8F20>61 D<EA0FE0EA3038EA401CEAE00E12F0A3EA000C131C1330136013C0
138012011300A6C7FCA51203EA0780A2EA03000F1D7E9C14>63 D<1306A3130FA3EB1780
A2EB37C01323A2EB43E01341A2EB80F0A338010078A2EBFFF83802003CA3487FA2000C13
1F80001E5BB4EBFFF01C1D7F9C1F>65 D<B512C0380F00788080140E140FA4140E141E5C
14F8EBFFF0EB003C8080801580A5EC0F00A2141E1478B512E0191C7F9B1D>I<90381F80
80EBE0613801801938070007000E13035A14015A00781300A2127000F01400A800701480
1278A212386CEB0100A26C13026C5B380180083800E030EB1FC0191E7E9C1E>I<B512C0
380F00F0143C140E80A2EC038015C01401A215E0A815C0A21403158014071500140E5C14
70B512C01B1C7E9B20>I<B512FC380F003C140C1404A214061402A213011400A35B13FF
13037FA3140113001402A31406A2140C143CB512FC181C7E9B1C>I<B512F8380F007814
181408A2140C1404A213011400A35B13FF13037FA490C7FCA8EAFFF8161C7E9B1B>I<90
381F8080EBE0613801801938070007000E13035A14015A00781300A2127000F01400A6EC
FFF0EC0F80007013071278A212387EA27E6C130B380180113800E06090381F80001C1E7E
9C21>I<39FFF0FFF0390F000F00AC90B5FCEB000FAD39FFF0FFF01C1C7F9B1F>I<EAFFF0
EA0F00B3A8EAFFF00C1C7F9B0F>I<3807FF8038007C00133CB3127012F8A21338EA7078
EA4070EA30E0EA0F80111D7F9B15>I<39FFF01FE0390F000780EC060014045C5C5C5C5C
49C7FC13021306130FEB17801327EB43C0EB81E013016D7E1478A280143E141E80158015
C039FFF03FF01C1C7F9B20>I<EAFFF8EA0F8090C7FCB01408A31418A2141014301470EB
01F0B5FC151C7E9B1A>I<B46CEBFF80000FECF800A2390BC00178A33809E002A23808F0
04A3EB7808A3EB3C10A3EB1E20A3EB0F40A2EB0780A3EB0300121C3AFF8307FF80211C7E
9B26>I<B4EB1FF0390F8003809038C00100120BEA09E0EA08F0A21378133C133E131E13
0F14811307EB03C1EB01E114F113001479147D143D141FA2808080121CB46C7E1C1C7F9B
1F>I<EB3F80EBE0E03803803848487E000E7F487F003C148000381303007814C0A20070
130100F014E0A8007014C000781303A200381480003C1307001C14006C130E6C5B6C6C5A
3800E0E0EB3F801B1E7E9C20>I<B51280380F00E01478143C141C141EA5141C143C1478
14E0EBFF8090C7FCACEAFFF0171C7E9B1C>I<EB3F80EBE0E03803803848487E000E7F48
7F003C148000381303007814C0A20070130100F014E0A8007014C000781303A200381480
383C0E07D81C111300380E208E0007135C3803A0783900F0E020133FEB0060EC3060EC38
E0EC3FC0A2EC1F80EC0F001B257E9C20>I<B5FC380F01E0EB007880141C141EA4141C14
3C5CEB01E001FFC7FCEB01E0EB0070147880A61510A2141CA239FFF00E20C7EA03C01C1D
7E9B1F>I<3807E080EA1C19EA30051303EA600112E01300A36C13007E127CEA7FC0EA3F
F8EA1FFEEA07FFC61380130FEB07C0130313011280A300C01380A238E00300EAD002EACC
0CEA83F8121E7E9C17>I<007FB512C038700F010060130000401440A200C014201280A3
00001400B1497E3803FFFC1B1C7F9B1E>I<39FFF01FF0390F000380EC0100B3A26C1302
138000035BEA01C03800E018EB7060EB0F801C1D7F9B1F>I<39FFE00FF0391F0003C0EC
01806C1400A238078002A213C000035BA2EBE00C00011308A26C6C5AA213F8EB7820A26D
5AA36D5AA2131F6DC7FCA21306A31C1D7F9B1F>I<3AFFE1FFC0FF3A1F003E003C001E01
3C13186C6D1310A32607801F1320A33A03C0278040A33A01E043C080A33A00F081E100A3
9038F900F3017913F2A2017E137E013E137CA2013C133C011C1338A20118131801081310
281D7F9B2B>I<39FFF07FC0390FC01E003807800CEBC00800035B6C6C5A13F000005BEB
7880137C013DC7FC133E7F7F80A2EB13C0EB23E01321EB40F0497E14783801007C00027F
141E0006131F001F148039FF807FF01C1C7F9B1F>I<39FFF003FC390F8001E00007EB00
C06D13800003EB01006D5A000113026C6C5A13F8EB7808EB7C18EB3C10EB3E20131F6D5A
14C06D5AABEB7FF81E1C809B1F>I<12FEA212C0B3B312FEA207297C9E0C>91
D<EA0808EA1010EA2020EA4040A2EA8080A3EAB0B0EAF8F8EA7878EA30300D0C7A9C15>
I<12FEA21206B3B312FEA20729809E0C>I<EA1FC0EA3070EA78387F12301200A2EA01FC
EA0F1C12381270126000E01340A3EA603C38304E80381F870012127E9115>97
D<12FC121CAA137CEA1D87381E0180381C00C014E014601470A6146014E014C0381E0180
38190700EA10FC141D7F9C17>I<EA03F8EA0C0CEA181E1230EA700CEA600012E0A61260
EA70021230EA1804EA0C18EA03E00F127F9112>I<EB1F801303AAEA03F3EA0E0BEA1807
EA30031270126012E0A6126012701230EA1807EA0E1B3803E3F0141D7F9C17>I<EA07E0
EA0C30EA1818EA300CEA700EEA600612E0EAFFFEEAE000A41260EA70021230EA1804EA0C
18EA03E00F127F9112>I<13F8EA018CEA071E1206EA0E0C1300A6EAFFE0EA0E00B0EA7F
E00F1D809C0D>I<EB03803807C4C0EA1C783838388038301800EA701CA4EA3018EA3838
6C5AEA27C00020C7FCA21230EA3FF86CB4FC1480EA2003386001C0EAC000A33860018038
300300EA1C0EEA07F8121C7F9215>I<12FC121CAA137C1387EA1D03001E1380121CAD38
FF9FF0141D7F9C17>I<1218123CA21218C7FCA712FC121CB0EAFF80091D7F9C0C>I<13C0
EA01E0A2EA00C01300A7EA07E01200B3A21260EAF0C012F1EA6180EA3E000B25839C0D>
I<12FC121CAAEB0FE0EB0780EB06005B13105B5B13E0121DEA1E70EA1C781338133C131C
7F130F148038FF9FE0131D7F9C16>I<12FC121CB3A9EAFF80091D7F9C0C>I<39FC7E07E0
391C838838391D019018001EEBE01C001C13C0AD3AFF8FF8FF8021127F9124>I<EAFC7C
EA1C87EA1D03001E1380121CAD38FF9FF014127F9117>I<EA03F0EA0E1CEA1806487E00
701380EA600100E013C0A600601380EA700300301300EA1806EA0E1CEA03F012127F9115
>I<EAFC7CEA1D87381E0180001C13C0EB00E0A21470A614E0A2EB01C0001E1380381D07
00EA1CFC90C7FCA7B47E141A7F9117>I<3803E080EA0E19EA1805EA3807EA7003A212E0
A61270A2EA38071218EA0E1BEA03E3EA0003A7EB1FF0141A7F9116>I<EAFCE0EA1D38EA
1E78A2EA1C301300ACEAFFC00D127F9110>I<EA1F90EA2070EA4030EAC010A212E0EAF8
00EA7F80EA3FE0EA0FF0EA00F8EA8038131812C0A2EAE010EAD060EA8FC00D127F9110>
I<1204A4120CA2121C123CEAFFE0EA1C00A91310A5120CEA0E20EA03C00C1A7F9910>I<
38FC1F80EA1C03AD1307120CEA0E1B3803E3F014127F9117>I<38FF07E0383C0380381C
0100A2EA0E02A2EA0F06EA0704A2EA0388A213C8EA01D0A2EA00E0A3134013127F9116>
I<39FF3FC7E0393C0703C0001CEB01801500130B000E1382A21311000713C4A213203803
A0E8A2EBC06800011370A2EB8030000013201B127F911E>I<38FF0FE0381E0700EA1C06
EA0E046C5AEA039013B0EA01E012007F12011338EA021C1204EA0C0E487E003C138038FE
1FF014127F9116>I<38FF07E0383C0380381C0100A2EA0E02A2EA0F06EA0704A2EA0388
A213C8EA01D0A2EA00E0A31340A25BA212F000F1C7FC12F312661238131A7F9116>I<EA
7FFCEA70381260EA407013F013E0EA41C012031380EA0700EA0F04120E121CEA3C0CEA38
0812701338EAFFF80E127F9112>I<B512F01401808B15>I E /Fo
19 119 df<127812FCA412781200A6127812FCA4127806127D910D>58
D<EA0FF0EA303CEA601EEAF01F12F8A21270EA003E133C137013E0EA01C01380A2EA0300
A5C7FCA4EA0780EA0FC0A4EA0780101D7D9C17>63 D<EB0380A2497EA3497EA2497E131B
EB3BF81331A2EB60FCA2EBE0FEEBC07EA248487E90B5FC481480EB001F4814C00006130F
A248EB07E0A239FF803FFEA21F1C7E9B24>65 D<B512F814FF390FC01FC0EC07E0EC01F0
15F8140015FC157CA2157EA8157CA315F8A2EC01F0EC07E0EC1FC0B6120014F81F1C7E9B
25>68 D<D8FFC0EB03FF6D5B000F15F0D80DF0130DA3D80CF81319A2017C1331A26D1361
A26D13C1A390380F8181A2903807C301A2EB03E6A2EB01FCA3EB00F8A23AFFC0701FFFA2
281C7E9B2D>77 D<EA0FF8EA1C1E383E0F80130714C0121C1200137FEA07E7EA1F07123C
127C12F8A3EA780B383E13F8EA0FE115127F9117>97 D<EA03FCEA0E0EEA1C1F123C1278
130E00F8C7FCA61278EB0180123C381C0300EA0E0EEA03F811127E9115>99
D<EA03FCEA0F07381C0380383C01C0127814E012F8A2B5FC00F8C7FCA3127814607E6C13
C0380F03803801FC0013127F9116>101 D<3803F0F0380E1F38EA3C0F38380730007813
80A400381300EA3C0FEA1E1CEA33F00030C7FCA3EA3FFF14C06C13E014F0387801F838F0
0078A300701370007813F0381E03C03807FF00151B7F9118>103
D<121E123FA4121EC7FCA6127FA2121FAEEAFFC0A20A1E7F9D0E>105
D<B4FCA2121FB3A7EAFFE0A20B1D7F9C0E>108 D<38FF0FC0EB31E0381F40F0EB80F8A2
1300AB38FFE7FFA218127F911B>110 D<EA01FC380F0780381C01C0003C13E0387800F0
A200F813F8A6007813F0A2383C01E0381E03C0380F07803801FC0015127F9118>I<38FF
3F80EBE1E0381F80F0EB0078147C143C143EA6143C147C1478EB80F0EBC1E0EB3F0090C7
FCA6EAFFE0A2171A7F911B>I<EAFE3E1347381E8F80A3381F070090C7FCAAEAFFE0A211
127F9114>114 D<EA1FD8EA3078EA601812E0A2EAF000EAFF80EA7FE013F0EA1FF8EA07
FCEA007CEAC01CA212E01318EAF830EACFC00E127E9113>I<1203A45AA25AA2EA3FFC12
FFEA1F00A9130CA4EA0F08EA0798EA03F00E1A7F9913>I<38FF07F8A2EA1F00AC130112
0F380786FFEA01F818127F911B>I<38FFC1FCA2381F00601380000F13C0A23807C180A2
3803E300A213F7EA01F613FE6C5AA21378A2133016127F9119>I
E /Fp 44 125 df<121C123E127EA2123A12021204A21208A21210122012401280070E76
9F0E>39 D<14C0A3495AA449C7FCA41306A2B612E0A2D8000CC7FCA45BA45BA413201B1C
7A9823>43 D<EA7FF0EAFFE0127F0C037D8A10>45 D<127012F8A212F012E005057B840E
>I<1207120F121FA2120E1200AA127012F8A212F012E008147B930E>58
D<14021406A2140E141EA2143F142F144F14CF148FEB010FA21302A213041308A2011013
8014071320EB3FFFEB40071380A2EA0100A2120212061204001E14C039FF807FF81D207E
9F22>65 D<ECFE02903807818690381C004C49133C136049131C00011418485A48C7FC5A
001E1410A2481400A25AA45AA415801270A2EC01007E140200185B6C13186C1320380381
C0D800FEC7FC1F217A9F21>67 D<48B512FE39001E001C150C1504A25BA4903878040815
00A2140C495AEBFFF8EBF018A23801E010A3EC001048481320A21540A248481380140115
001407380F001FB512FE1F1F7D9E1F>69 D<ECFC04903807030C90381C00980130137813
E04848133848481330A248C7FC120E001E1420A2481400A25AA45AECFFF0EC0780A2EC0F
001270A3141E7E0018133E001C132E6C13CC38038304D800FCC7FC1E217A9F23>71
D<9039FFF1FFE090391F003E00011E133CA3495BA4495BA449485A90B5FCEBF001A24848
485AA44848485AA4484848C7FCA4000F5B39FFF1FFE0231F7D9E22>I<3801FFF038001F
00131EA35BA45BA45BA4485AA4485AA4485AA4120FEAFFF0141F7D9E12>I<90380FFF80
9038007C001478A35CA4495AA4495AA4495AA449C7FCA212301278EAF81EA2485AEA8038
EA40706C5AEA1F8019207D9E18>I<D801FEEC7FC0D8001EECFC005E0117EB0178A20127
EB02F01504A215080147EB09E015111521A20187495AEB83801583A23A01038107801482
A2148400024AC7FC14881490A2390401E01EA214C0000C1380001C143E3AFF8103FFC02A
1F7D9E29>77 D<01FFEB3FE0011FEB0F001504EB1780A201275BEB23C0A3903841E010A2
14F0134001805B1478A348486C5AA3141E00025CA2140FA24891C7FC80A2120C001C1302
EAFF80231F7D9E22>I<48B5128039001E00E015701538153C5BA4491378A215F015E090
38F003C0EC0F00EBFFFC01F0C7FC485AA4485AA4485AA4120FEAFFF01E1F7D9E1F>80
D<90B5FC90381E03C0EC00E0157015785BA44913F0A2EC01E015C09038F00700141EEBFF
F0EBF01C48487E140F8015803903C00F00A43807801E1508A21510000F130ED8FFF01320
C7EA03C01D207D9E21>82 D<903807E04090381C18C09038300580EB600313C000011301
018013001203A391C7FC7FA213F86CB47E14E06C6C7E131FEB01F8EB0078A21438A21220
A2143000601370146014E000705B38E80380D8C606C7FCEA81F81A217D9F1A>I<000FB5
12FC391E03C03800181418001014081220EB078012601240A239800F001000001400A313
1EA45BA45BA45BA41201387FFF801E1F799E21>I<393FFC0FF83907C003C09038800100
A3380F0002A4001E5BA4485BA4485BA4485BA35CA200705B49C7FCEA3002EA3804EA0C18
EA07E01D20779E22>I<39FFF003FC001FC712E06C14C01580EC0100A21402A25C5C1380
00075B143014205CA25C138191C7FC13C2120313C413CC13C813D0A213E05BA25B120190
C8FC1E20779E22>I<EBF180380389C038070780EA0E03121C123C383807001278A3EAF0
0EA31420EB1C40A2EA703C135C38308C80380F070013147C9317>97
D<EA0780123FEA0700A4120EA45AA213F0EA1D0CEA3A0E123CEA380FA21270A4EAE01EA3
131C133C1338EA607013E0EA31C0EA1F0010207B9F15>I<137EEA01C138030080EA0E07
121E001C1300EA3C0248C7FCA35AA5EA70011302EA3004EA1838EA07C011147C9315>I<
1478EB03F8EB0070A414E0A4EB01C0A213F1EA038938070780EA0E03121C123C38380700
1278A3EAF00EA31420EB1C40A2EA703C135C38308C80380F070015207C9F17>I<137CEA
01C2EA0701120E121C123CEA3802EA780CEA7BF0EA7C0012F0A4127013011302EA3804EA
1838EA07C010147C9315>I<1478EB019CEB033CA2EB07181400A2130EA5EBFFE0EB1C00
A45BA55BA55BA5485AA35B1231007BC7FC12F31266123C1629829F0E>I<EB1E30EB7138
EBE0F03801C070EA03801207EB00E05AA3381E01C0A4EB0380A2EA0E07130B38061700EA
01E7EA0007A2130EA21230EA781C485AEA6070EA3FC0151D7F9315>I<EA01E0120FEA01
C0A4485AA448C7FCA2131E1363380E8180380F01C0120EA2381C0380A438380700A3EB0E
1000701320A2131CEB0C4000E013803860070014207D9F17>I<13C0EA01E0A213C0C7FC
A7120E12131223EA4380EA4700A21287120EA35AA3EA38401380A21270EA31001232121C
0B1F7C9E0E>I<EA01E0120FEA01C0A4485AA448C7FCA2EB03C0EB0420380E08E0131113
21EB40C0381C8000001DC7FC121EEA1FC0EA38E01370A2EB384038707080A3EB310012E0
EA601E13207D9F15>107 D<EA03C0121FEA0380A4EA0700A4120EA45AA45AA45AA31271
12E2A4126412380A207C9F0C>I<391C0F80F0392630C318394740640C903880680EEB00
70A2008E495A120EA34848485AA3ED70803A3803807100A215E115623970070064D83003
133821147C9325>I<381C0F80382630C0384740601380EB0070A2008E13E0120EA3381C
01C0A3EB038400381388A2EB0708EB031000701330383001C016147C931A>I<137CEA01
C338030180000E13C0121E001C13E0123C1278A338F003C0A3EB07801400EA700F130EEA
3018EA1870EA07C013147C9317>I<3801C1E0380262183804741C1378EB701EA2EA08E0
1200A33801C03CA3143838038078147014E0EBC1C038072380EB1E0090C7FCA2120EA45A
A2B47E171D809317>I<EBF040380388C038070580EA0E03121C123C383807001278A3EA
F00EA45BA2EA703C135CEA30B8EA0F381200A25BA45BA2EA0FFE121D7C9315>I<EA1C1E
EA266138278380EA47871307EB0300008EC7FC120EA35AA45AA45A123011147C9313>I<
13FCEA0302EA0601EA0C03130713061300EA0F8013F0EA07F8EA03FCEA003E130E1270EA
F00CA2EAE008EA4010EA2060EA1F8010147D9313>I<EA018013C0EA0380A4EA0700A2EA
FFF0EA0700120EA45AA45AA31320EA7040A21380A2EA3100121E0C1C7C9B0F>I<000E13
C0001313E0382301C0EA4381EA4701A238870380120EA3381C0700A31410EB0E201218A2
381C1E40EA0C263807C38014147C9318>I<380E0380EA1307002313C0EA4383EA470113
0000871380120EA3381C0100A31302A25BA25BEA0E30EA03C012147C9315>I<000EEBC1
C0001313E3392301C3E0384381C1384701C015603987038040120EA3391C070080A3EC01
00A21306EB0F02000C5B380E13083803E1F01B147C931E>I<38038380380CC440381068
E013711220EB70C03840E0001200A3485AA314403863808012F3EB810012E5EA84C6EA78
7813147D9315>I<B8128029017B8C2E>124 D E /Fq 10 58 df<121FEA3180EA60C0EA
4040EAC060A8EA4040EA60C0EA3180EA1F000B107F8F0F>48 D<1218127812981218AC12
FF08107D8F0F>I<121FEA6180EA40C0EA806012C01200A213C0EA0180EA030012065AEA
10201220EA7FC012FF0B107F8F0F>I<121FEA2180EA60C0A212001380EA0100121FEA00
801340136012C0A2EA8040EA6080EA1F000B107F8F0F>I<EA0180A212031205120D1219
12111221124112C1EAFFE0EA0180A4EA0FE00B107F8F0F>I<EA20C0EA3F80EA2E001220
A3122FEA3080EA2040EA0060A312C0EA80C0EA6180EA1F000B107F8F0F>I<EA0780EA18
40EA30C0126013005A12CFEAF080EAE040EAC060A31240EA60C0EA3080EA1F000B107F8F
0F>I<1240EA7FF013E0EA8040A2EA0080EA01001202A212061204A2120CA50C117F900F>
I<121FEA3180EA60C0A3EA3180EA3F00120EEA3380EA61C0EAC060A31340EA60C0EA1F00
0B107F8F0F>I<121FEA3180EA60C0EAC0401360A3EA40E01221EA1E6012001340EA60C0
1380EA6300121E0B107F8F0F>I E /Fr 67 123 df<1478137C13FC12013803C0005B12
07A838FFFC78A3EA0780B3152480A31A>12 D<EA783CA4EA180CEA3018A2EA6030A2EAE0
700E0A7FA218>34 D<ECC018A349485AA449485AA501065BA449485AB712C0A226001803
C7FCA4EB3006A4B712C0A22600600CC7FC495AA448485AA448485AA400065BA3222D7DA2
29>I<137013E0EA01C01203EA078013005A120E121E121C123CA212381278A4127012F0
AE12701278A41238123CA2121C121E120E120F7E1380EA03C01201EA00E013700C327DA4
13>40 D<12E012707E123C7E120E120F7E1380120313C0A2120113E0A4120013F0AE13E0
1201A413C01203A21380120713005A120E121E5A12385A5A0C327DA413>I<EAFFF8A30D
03808C10>45 D<12F0A404047B830E>I<14801301A2EB0300A31306A35BA35BA35BA35B
A35BA3485AA448C7FCA31206A35AA35AA35AA35AA35AA311317DA418>I<EA01F0EA07FC
487EEA1F1F383C0780A2387803C0A3EA700100F013E0AF387803C0A4383C0780A2381F1F
00EA0FFE6C5AEA01F013237EA118>I<1340EA01C0120712FFA212FB1203B3A7B5FCA310
227CA118>I<EA03F0EA0FFC487EEA3C1F38300780387003C0126000E013E0EAC0011240
A21200A3EB03C0A2EB0780A2EB0F00131E5B5B5B485A5B485A48C7FC120E5A5A5AB512E0
A313227EA118>I<EA03F0EA07FCEA1FFFEA3E0F38380780387003C01220A21200A3EB07
80A2EB0F00133EEA03FC5B13FEEA000FEB0780EB03C0A2EB01E0A5128038C003C012E038
700780EA3C0F381FFF00EA0FFCEA03F013237EA118>I<131FA2132FA2136F13EF13CF12
01A2EA038FA21207130F120F120E121E123CA21278A212F0B512F8A338000F00A915217F
A018>I<387FFF80A30078C7FCA9EA79F8EA7BFCEA7FFFEB0F80EA7E07387C03C0127838
0001E0A7384003C0A212E038700780387C1F00EA3FFEEA0FFCEA03F013227EA018>I<13
7E48B4FC5AEA07C148C7FC121EA25AA25AA213F8EAF1FEEAF7FF38FF0F80EAFC0738F803
C0A2130100F013E0A51270A21278EB03C01238003C1380EA1C07381F0F00EA0FFE6C5AEA
01F013237EA118>I<B512E0A3C7FCEB01C0EB038013071400130E131E131C133C133813
78A25BA25B1201A3485AA5485AA713217EA018>I<EA01F0EA07FC487EEA1E0F383C0780
A2387803C0A500381380EA3C07381E0F00EA0F1EEA07FC6C5AEA0FFEEA1E0F383C078038
7803C0A238F001E0A6387803C0A2383C0780EA3E0F381FFF00EA07FCEA01F013237EA118
>I<EA01F0EA07FC487EEA1E0F487E00381380EA780314C012F0130114E0A6EA70031278
A2EA3C07EA3E1FEA1FFDEA0FF13803E3C0EA0003A21480130714005BEA201EEA383CEA7F
F86C5AEA0FC013237EA118>I<EB0F80A2497EA2131DEB3DE013391338EB78F0A2EB7070
EBF078A213E000017FA213C000037FA2138000077FA290B5FC481480A2380E0007001EEB
03C0A24814E01401A24814F01400A24814F81D237FA220>65 D<EAFFFEEBFF8014E038F0
07F0EB01F8EB0078143CA6147814F0EB03E0B512C0140014C038F00FF0EB01F8EB007814
3C141C141EA5143C147C14F8EB03F0B512E014C0140017237BA220>I<EB0FF0EB7FFC90
B5FC3801F01F3807C00749C7FC48C8FC121E123E123CA25AA35AA91278A37EA2123E121E
7E6C6C1380EBC0033801F00F6CB51200EB7FFCEB0FF019257DA31F>I<EAFFFEEBFFC080
38F003F0EB00F8147C80141E80A2EC0780A3EC03C0A915801407A3EC0F005C141E5C14F8
1303B512E05C49C7FC1A237BA223>I<B512F0A300F0C7FCACB512E0A300F0C7FCAEB512
F8A315237BA21D>I<B512F0A300F0C7FCADB512C0A300F0C7FCB014237BA21C>I<EB0FF0
EB3FFE90B512803801F80F3803E003D80780C7FC48C8FC121EA25AA25AA35AA6ECFFC0A3
00781303A37EA27EA27EEA0780EA03E03801F8076CB5FC013F1300EB0FF81A257DA321>
I<00F0131EAFB512FEA338F0001EB117237BA222>I<12F0B3B104237CA20D>I<00F0EB0F
80EC1F00143E5C5C495A495A5C1307495A49C7FC133E5B5B12F1EAF3FCA2EAF7DEEAFF9F
130F486C7E00FC7FEAF803486C7EA26D7E80147880143E141E80A2EC078015C01A237BA2
22>75 D<12F0B3AEB512C0A312237BA21A>I<00FC147E6C14FEA300F7EB01DEA3EB8003
00F3149EA2EBC007A200F1141EA2EBE00F00F0130EA2EBF01EA2EB701CEB783CA2EB3838
EB3C78A2EB1C70A2EB1EF0EB0EE0A2130FEB07C0A390C7FC1F237BA22A>I<00FC131E7E
A312F7A2EAF380A213C012F1A213E012F013F0A21378A21338133CA2131EA2130E130F13
07A2149E1303A2EB01DEA2EB00FEA3147E17237BA222>I<EB1FC0EB7FF03801FFFC3803
F07E3807C01F390F800F80391F0007C0001E130348EB01E0A248EB00F0A30070147000F0
1478A9007814F0A3007C1301003C14E0003E1303001E14C0001F1307390F800F803907C0
1F003803F07E6CB45A38007FF0EB1FC01D257DA324>I<EAFFFEEBFF8014C038F003E0EB
00F01478A2143CA61478A214F0EB03E0B512C01480EBFE0000F0C7FCAF16237BA21F>I<
EB1FC0EB7FF03801FFFC3803F07E3807C01F390F800F80391F0007C0001E130348EB01E0
A248EB00F0A4481478A900701470007814F0A2EB0780003CEBC1E01303391E01E3C0001F
13F7390F80FF803907C07F003803F07E3801FFFEEA007FEB1FDF9038000F80EC07C01403
15E0EC01F01D2A7DA324>I<EAFFFCEBFF8014C038F003E0EB00F014781438143CA51438
147814F0EB03E0B512C01480EBFE00EAF01E7FA2EB0780130314C0EB01E0A2EB00F0A214
78A2143C141EA2140F18237BA21F>I<13FF000313C04813F0EA1F81381E0070481300A2
5AA5127C123C123FEA1FC0EA0FFC6CB4FC0001138038003FC0EB07E0EB01F0130014F814
78A600C013F07E38F801E0387E07C0383FFF80000F1300EA01FC15257EA31B>I<B612F0
A3D8000FC7FCB3AE1C237EA221>I<00F0133CB3A900781378A36C13F0381E01E0EA1F87
380FFFC000031300EA00FC16247BA221>I<00F01478A2007814F0A36CEB01E0A36CEB03
C0A36CEB0780A213800007EB0F00A23803C00E141EA23801E01C143CA23800F0381478A2
EB787014F0A2EB38E0133DEB1DC0131FA26D5AA21D237FA220>I<00F0011FEB01E0EC3F
80A2007816C0027B130315C014736C0171EB078014F115E014E16C01E0EB0F00130115F0
14C0000FEC701E130315781480D80783EB381C163C0187133C000301001338151C01C714
7813CFD801CEEB1E70150EA201EE14F0D800EC5C01FC1307A301785C2B237FA22E>I<EA
381CEA3018A2EA6030A2EAC060EAF078A40E0A78A218>92 D<EA07F0EA3FFC487EEA781F
EA400F38000780A4137FEA07FF121FEA3E07127812F0A3130FEA7C1FEA7FFFEA3FF7EA1F
8711167E9517>97 D<12F0AD13F8EAF3FEB5FC38FE0F80EAF80738F003C0A2EB01E0A713
0314C0A238F80780EAFE1F38F7FF00EAF3FCEAF1F813237DA219>I<EA01FCEA07FF4813
80EA1F03EA3C0148C7FCA2127012F0A61278A36C1340381F03C0EA0FFF6C13803801FC00
12167E9516>I<EB01E0ADEA03E1EA0FF9EA1FFFEA3F07EA3C03EA7801A212F0A8127813
03123CEA3E0FEA1FFDEA0FF9EA03E113237EA219>I<EA01F8EA07FE487E381F0780383C
03C0EA7801A2387000E0B5FCA300F0C7FCA312701278127C6C1340381F03C0EA0FFF6C13
803800FC0013167F9516>I<137FEA01FF5AEA07C013005AA8EAFFF8A3EA0F00B3102380
A20F>I<3803F078380FFFF85A383E1F00EA3C0F38780780A5383C0F00EA3E1FEA1FFE48
5AEA33F00070C7FCA21278EA3FFEEBFFC06C13E04813F0EA780138F000F81478A4007813
F0383E03E0381FFFC06C13803801FC0015217F9518>I<12F0ADEAF1F8EAF3FCEAF7FEEA
FE1EEAF80FA212F0B010237CA219>I<12F0A41200A912F0B3A404237DA20B>I<13F0A413
00A913F0B3A91280EAE3E012FFEA7FC0EA1F000C2D83A20D>I<12F0ADEB1F80EB3F0013
3E5B5BEAF1F0EAF3E0EAF7C012FFA27FA2EAFDF0EAF8F8EAF078137C7F131E131F7F1480
EB07C012237CA218>I<12F0B3B104237DA20B>I<39F0F807C039F3FE1FF039F7FF3FF839
FE0F707800FCEBE07C39F807C03CA200F01380AF1E167C9527>I<EAF1F8EAF3FCEAF7FE
EAFE1EEAF80FA212F0B010167C9519>I<EA01FCEA07FF481380381F07C0383C01E03878
00F0A20070137000F01378A6007813F0A2EA7C01383E03E0381F07C0380FFF806C1300EA
01FC15167F9518>I<EAF0F8EAF3FEB5FC38FE1F80EAF80738F003C0A214E01301A61303
14C0130700F81380EAFE1F38F7FF00EAF3FCEAF1F800F0C7FCAA13207D9519>I<3803E1
E0EA07F9EA1FFD130FEA3C03127CEA780112F812F0A612F812781303123CEA3F0FEA1FFD
EA0FF9EA03E1EA0001AA13207E9519>I<EAF0E012F312F7EAFF005A5A5AA25AAE0B167C
9511>I<EA07F0EA1FFCEA3FFEEA3C0EEA78061300A2127C123F13F0EA1FF8EA0FFCEA01
FEEA001F130FA312C0EAF81EEAFFFEEA3FFCEA0FF010167F9513>I<121EA6EAFFFCA3EA
1E00AE1308EA1F1CEA0FFC13F8EA07C00E1C7F9B12>I<EAF00FB1131FEAF83FEA7FFF13
CFEA1F0F10167C9519>I<38F001E0A212F8387803C0A2003C13801307A2001E13005BA2
EA0E0EEA0F1EA2EA071C139C13BCEA03B8A213F86C5AA213167F9516>I<39F007803CEB
0FC0A2D8780D1378131D14E0131CD83C1813F0133814F0001C14E0001E13711370147900
0EEB39C01360000F133B00071480141BEBC01FA2000314001E167F9521>I<007813F038
7C01E0383E03C0EA1E07000F138038078F0013DEEA03FE6C5A6C5A137013F8487EEA03DC
139EEA078F380F0780121EEB03C0383C01E0387800F000F813F81516809516>I<38F001
E0A2387803C0A2127C383C0780A2121EEB0F00A2120F130E131E1207139C1203139813B8
120113F01200A25BA212015BA2485A1207007FC7FCA2127C13207F9516>I<387FFFC0A3
38000F801400131E133E5B13785B1201485A5B485A120F48C7FC121E5A127CB512C0A312
167F9515>I E /Fs 51 121 df<1306130C13101330136013C013801201EA0300A21206
120E120CA25AA21238A21230A21270A21260A312E0A81260A57EA2121012181208120C12
047E0F2E7AA112>40 D<138013C0134013201330A21318A3130CAD131CA31318A21338A2
1330A21370136013E013C0A2EA018013005A120612045A12185A12405A0E2E80A112>I<
144014C0A5495AA649C7FCA3B612F8A2D80003C7FC1306A65BA65B13081D207C9A23>43
D<1218123C127CA2123C1204A21208A21210A2122012401280060E7D840D>I<EAFFF0A2
0C027E8A0F>I<1230127812F81278127005057C840D>I<137EEA01C338030180000713C0
EA0E0014E05AA2EA3C0112381278A538F003C0A51480130712E01400A2130E1260EA701C
EA3038EA3870EA0FC0131F7C9D17>48 D<13181338EA01F8EA0E701200A513E0A6EA01C0
A6EA0380A6EA07001380EAFFFC0E1E7B9D17>I<EB3F80EBC1E038010070000213785AA2
000F137C1380A2EB00781206C712F814F0EB01E014C0EB0380EB0700130E5B5B13605B48
5A380300201206000813405A383FFFC0481380B5FC161E7E9D17>I<137F380183C03802
01E0EA0400000713F05A1301A2000013E0A2EB03C0EB07801400131CEA01F8EA000E7F14
8014C0130313071230127812F8A200F0138038800F00EA400E6C5AEA1078EA0FE0141F7D
9D17>I<1460A214E0EB01C013031305130D13091311EB2380134313C31383EA01031202
3804070012081218121012201240B512F038000E00A55B131E3801FFC0141E7E9D17>I<
380180303803FFE014C0140013FC0002C7FCA25AA4137CEA0587380A0380EA0C01000813
C0120014E0A4387003C012F812F000E01380EA800700401300130E6C5AEA1070EA0FC014
1F7D9D17>I<EB1F80EB7040EBC020380180E0EA03011207380E00C0001E1300121C123C
1238EA78F8EA790EEA7A07EA7C0300F81380A200F013C0A4EB078012E0A214005BEA600E
EA701CEA3018EA1870EA07C0131F7C9D17>I<1220383FFFF04813E014C03840008038C0
010012801302485A5B5B5BA25B13C0485AA2120390C7FC5AA25A120EA2121EA35AA31218
141F7A9D17>I<133FEBC1C03801006000021320481330120CA3000E1360A2380F80C0EB
C1803807F600EA03FC120113FF38063F80EA0C1F381007C0EA3003EA600113005AA31480
EB0100EA6003EA3004EA1818EA07E0141F7D9D17>I<137EEA01C338030180000613C012
0EEA1C00003C13E0A213011278A41303A2003813C01307EA1C0BEA0C133803E380EA0007
A214005BEA600EEAF01C1318485AEA8060EA41C0003FC7FC131F7C9D17>I<1408140C14
1C143CA2147C147E149EA2EB011EA21302801304A21308A20110138014071320A2EB7FFF
90384007C0EB8003A2EA0100A21202EC01E01206001F130339FF801FFE1F207F9F22>65
D<0007B5FC3900F803C090387801E0EC00F04913F8A515F03801E001EC03E015C0EC0F80
9038FFFE009038E00F803903C003C0EC01E015F0A21400A2485A1401A215E01403EC07C0
390F000F80EC3E00B512F01D1F7E9E20>I<ECFE02903807018690381C004E0170133E49
131E4848131C4848130C120748C7FC5A121E003E1408003C1400127CA45AA41278151015
20A27E1540001C14806CEB01006C13023803800C3800E030EB3FC01F217C9F21>I<0007
B57E3900F801E0903878007081497F151E150E150FA348481480A6484814005DA3151E15
3E4848133C5DA25D4A5A4A5A260F000FC7FC143CB512F0211F7E9E23>I<0007B512FC39
00F8007C0178131C150C5B1504A414043901E00800A31438EBFFF8EBE0383803C010A4EC
00081510485AA21520A2156015C0380F00011407B612801E1F7E9E1F>I<0007B512F839
00F800780178133815185B1508A53901E00800A314181438EBFFF83803C0301410A491C7
FC485AA648C8FC7FEAFFFC1D1F7E9E1E>I<ECFE02903807018690381C004E0170133E49
131E4848131C4848130C120748C7FC5A121E003E1408003C1400127CA45AA2EC3FFEEC01
F000781300A2EC01E0A27EA2121C6C13036CEB05C0380380083900E0304090383FC0001F
217C9F24>I<3A07FF83FFC03A00F8007C000178133CA2495BA648485BA490B5FCEBE000
4848485AA64848485AA64848485A01807F39FFF07FF8221F7E9E22>I<3807FF803800F8
001378A25BA6485AA6485AA6485AA648C7FC7FEAFFF0111F7E9E10>I<EB7FFCEB03E013
01A2EB03C0A6EB0780A6EB0F00A6131E1230127812F8131CEAF03CEA8038EA40706C5AEA
1F8016207E9E17>I<3A07FF803FE03A00F8001F000178130C5D4913205D5D4AC7FC1402
140848485A5C146014F013E1EBE4F83803C878EBD07CEBE03CEBC03E141E141F48487E81
140781140381380F00016D487E39FFF00FFE231F7E9E23>I<3807FFE0D800FCC7FC1378
A25BA6485AA6485AA41580EC0100EA0780A25C14021406140E380F001E147CB512FC191F
7E9E1C>I<D807F8EC7FE00000ED7C00017814BCA2019C495AA21502A2018E13041508D8
010E5C1510A26D1320A215400002EC41E09038038081EC8101A21482A23A0401C403C0A2
14C8A2EB00F0000C13E04B5A001E01C07FD8FFC0EB7FFC2B1F7E9E2A>I<D807F8EB7FC0
D8007CEB1F00150C015E1304019E5B138FA2EB8780A2EB83C0D801035BEB01E0A2EB00F0
A2147800025C143CA2141EA2140F485CEC07C0A21403A21401000C5C001E1300B47E221F
7E9E22>I<EB01FCEB0E0790383801C090387000E0484813F048481378485A153C48C7FC
5A001E143E123E123C127CA448147CA3157815F81278EC01F0007C14E01403003C14C000
1CEB0780001EEB0F006C131E380780383801C0E038007F801F217C9F23>I<0007B5FC39
00F803C090387800F015785B157CA41578484813F815F0EC01E0EC03C0EC0F00EBFFFCD8
03C0C7FCA6485AA648C8FC7FEAFFF81E1F7E9E1F>I<EB01FCEB0E0790383803C0903870
01E03901E000F048481378485A153C48C7FC5A001E143E123E123C127CA448147CA31578
15F8127815F0EC01E0EA7C0F393C1083C0391C204780001EEB4F00380F405E3807A07839
01E0E010EA007F9038006030EC702015E0147F15C0EC3F80A2EC1E001F297C9F23>I<38
07FFFE3900F8078090387801E0EC00F05B15F8A415F03801E00115E0EC03C0EC0780EC1E
00EBFFF03803C03880141E140EA2140F48485AA51502D80F001304EB800F39FFF00788C7
EA01F01F207E9E21>I<EB1F82EB7066EBC01E3801800EEA030048130C00061304120EA3
000F1300A27FEA07F013FF6C13C06C13E038003FF0EB03F813001478143CA200401338A3
143000601370146000F013C038E8018038C60300EA81FC17217E9F19>I<003FB512F038
3C078000301430126039400F0010A212C01280A3D8001E1300A65BA65BA65B7F383FFFE0
1C1F7A9E21>I<39FFF00FF8391F0003E06CEB01801400001EEB0100A6481302A6485BA6
00705BA25CA200785B1238001813C06C48C7FCEA0706EA01F81D20799E22>I<39FFF001
FE391F8000F86CC712601540A215807F0007EB0100A214021406EBC00400035BA25CA26C
6C5AA25CA26D5A120001F1C7FC13F2A213FC137C1378A21370A213201F207A9E22>I<3B
FFF07FF81FF03B1F000FC007C0001E903907800380001FED01006C1502140F5EEC17C002
135B142301805C000713435E14C3913883E0401481D981015B13C1D803C213E193C7FC13
C415F2EBC80015F4EA01F015F85B5D5B15605B000014402C207A9E2F>I<3A03FFC0FFC0
3A007F003E00013C1318013E1310011E5B011F5B6D5B0281C7FCEB078314C2EB03C414E8
EB01F0A2130080A2EB017CEB023CEB043EEB0C1EEB081F497E132001407FEB8007000180
EB0003000780391F8007F039FFC01FFE221F7F9E22>I<39FFF001FF391F8000786CC712
606D134000071480EBC00100031400EBE0025C12016D5A00005B6D5A1378EB7C40EB3C80
013FC7FC7F131EA3131C133CA513381378137C3807FF80201F7A9E22>I<0003B512F090
38F001E0EB8003010013C00006EB0780EC0F000004131E143E143C5CC75A495A13035C49
5A49C7FC131E133E133C4913805B3901E00100120313C048485A380F0002001E1306003E
130E003C131E4813FCB5FC1C1F7E9E1C>I<13FEEA0383380E0780121C0038130090C7FC
12785AA45AA37E5BEA70026C5AEA1C18EA07E011147D9314>99 D<1438EB01F8EB007814
38A21470A614E013FCEA0382EA0601121CEA3C00383801C0127812F0A438E00380A412F0
EA700738380F00381C37803807C7E015207D9F19>I<13F8EA070EEA0E07121C38380380
1278127012F0A2B5FC00F0C7FC5AA46C5AEA7002EA3004EA1C18EA07E011147D9314>I<
EA01C0EA03E0A213C0EA0180C7FCA6EA0380121F12071203A2EA0700A6120EA65A121EEA
FF800B1F7F9E0C>105 D<38038F80381F90E0EA07A03803C0601380000713E01300A538
0E01C0A6381C0380001E13C038FF8FF014147E9319>110 D<13FCEA0387380E0180381C
00C04813E0A24813F012F0A438E001E0A214C0130300F0138038700700EA380E6C5AEA07
E014147D9317>I<1380EA0100A35A5A5A121EEAFFF8EA0E00A45AA65A1310A41320A2EA
1840EA0F800D1C7C9B12>116 D<381C0380EAFC1FEA3C07EA1C03A238380700A6EA700E
A4131EA25BEA305E381F9F8011147B9319>I<381FF0FF3803C0780001137014403800E0
C0EBE180EB73001376133CA2131C132E134E1387EA0107380203801204380C01C0383C03
E038FE07FC18147F9318>120 D E /Ft 58 123 df<131E133C137813F0120113E0EA03
C012071380120F13005AA2121E123EA35AA5127812F8AF1278127CA57EA3121E121FA27E
1380120713C01203EA01E013F012001378133C131E0F3D7CAC17>40
D<12F012787E7E121F7EEA078013C0120313E0120113F0A2120013F8A3137CA5133C133E
AF133C137CA513F8A313F01201A213E0120313C012071380EA0F005A121E5A5A5A0F3D7D
AC17>I<1438B2B712FEA3C70038C7FCB227277DA12E>43 D<EAFFFEA30F037F8E14>45
D<12F8A505057B8410>I<137E3801FF80000713E04813F0381FC3F81300003E137CA200
3C133C007C133EA20078131EA200F8131FAF0078131E007C133EA46C137C003F13FC6C13
F813C3380FFFF06C13E00001138038007E0018297EA71D>48 D<13301370EA01F0120F12
FFA212F11201B3ACB512E0A313287BA71D>I<13FE3803FF80000F13C04813E0EB07F038
3C01F8387800FC147C127000F0133EA212601220C7FCA3147CA2147814F8EB01F014E013
03EB07C0EB0F80EB1F00133E5B5B485A485A5B485A48C7FC121E5A387FFFFEA417287EA7
1D>I<137E3803FF804813E0001F13F0383F83F8EA3E0048137C123812301210C7FCA214
F8A21301EB03F0EB0FE03801FFC0148014C014E0380001F8EB00FC147C143EA2141FA57E
6C133E7E6C137E007C13FC383F01F8381FFFF06C13E0000313C03800FE0018297EA71D>
I<EB07E0130F130B131BA2133BA21373A213F3A2EA01E3A2120313C31207EA0F83A2EA1F
03A2123EA2127CA212F8B6FCA4380003E0AA18277EA61D>I<383FFFF8A4003EC7FCAA13
3EEBFF80003F13E014F013C1EB00F8147C123EC7FC143EA712400060137C12E06C13F8EA
7801387F07F0383FFFE0000F13C06C1300EA01FC17287EA61D>I<EB0FE0EB3FF813FF5A
3803F0183807E000EA0F8090C7FC5A123EA2123C127C1302EB3FC038F8FFE000F913F000
FB13F838FF80FC38FE007C143E5A143F141F5AA41278127CA2141E003C133E123E001E13
7C001F13FC380FC1F83807FFF06C13E06C138038007E0018297EA71D>I<B6FCA4C7120F
141E143C147814F814F0EB01E0130314C0EB0780130F14005B131E133EA2133C137CA25B
A35B1201A5485AA718277EA61D>I<137E3803FFC04813E04813F0381F81F8383F00FC00
3E137C007E137E007C133EA56C137CA26C13F8380FC3F03807FFE06C13C0A2000F13F038
1F81F8383F00FC003E137C48133EA248131FA6007C133EA2007E137E6C13FC381F81F838
0FFFF06C13E06C13C038007E0018297EA71D>I<137E3801FF80000713C04813E0381F83
F0EB00F8003E137848137C143C0078133E12F8A2141E141FA4143F7E127C147F7E383F01
FF381FFFDF6C139F6C131F3803FC1E3800403E1300A2147CA214F8A2EB01F0381803E038
1E0FC0383FFF806C13006C5AEA03F818297EA71D>I<EB03F0A2497EA21478497EA3EB1E
3E141EA2EB3E1F133C90387C0F80A213789038F807C0A213F000016D7EA213E000036D7E
A213C000076D7E90B5FCA24880903880007C90C7FC4880A2121E003E80A2123C007CEC0F
80A24815C01507A2222A7EA927>65 D<B512C014F814FE38F800FFEC1F80EC07C0EC03E0
140115F0A214001401A215E01403EC07C0EC1F80EC7F00B512FE14F88014FF39F8007FC0
EC0FE0EC03F01401EC00F81578157CA615F81401EC03F0EC0FE0EC3FC0B61280ECFE0014
F01E2A7BA927>I<EB03FF010F13E0013F13F890B5FC3801FE013903F80070D807E01310
491300485A121F90C8FC123EA25AA45AAA127CA47EA27E7F120F6C7E6D1308D803F81338
3901FE01F86CB5FC013F13F0010F13C0903803FE001D2C7CAA25>I<B512E014FC14FF39
F8007F80EC0FC06E7EEC01F06E7EA2157C81A2151E151FA2811680AA16005DA3153EA25D
A25D4A5A4A5AEC0FC0EC3F80B6C7FC14FC14E0212A7BA92A>I<B612C0A400F8C8FCAEB6
FCA400F8C8FCB0B612E0A41B2A7BA923>I<B61280A400F8C8FCAFB512FCA400F8C8FCB3
192A7BA921>I<EB03FE90380FFFC0013F13F84913FC3801FE013903F8007CD807E01318
491300485A121F90C8FC123EA2127E127CA35AA7EC3FFCA3127CEC007CA2127E123EA27E
7F120F6C7E7FEA03F83901FE01FC38007FFF6D13F8010F13C0903803FE001E2C7CAA27>
I<00F8147CB2B612FCA400F8C7127CB3A21E2A7BA929>I<12F8B3B3A6052A7BA910>I<00
FE15FFA36C5C00FB15DF6D1303A3D8F9C0EB079FA36D130F00F8151FA26D131F0170131E
A20178133E0138133C013C137CA2011C1378011E13F8A2010E13F0EB0F01A2010713E014
83A2010313C014C7A20101138014EFA20100130014FF147EA391C7FC282A7BA933>77
D<B4147CA27FA2EAFBC0A2EAF9E0A27F12F8A27F1378137C133C133E131E131F7F1480A2
EB07C0A2130314E0130114F0130014F81478147C143CA2143E141EA2140FA2EC07FCA214
03A21E2A7BA929>I<EB03FCEB0FFF013F13C090B512F03901FE07F83903F801FC3907E0
007E48487F497F48C7EA0F80A2003EEC07C0A248EC03E0A30078140100F815F0AA007CEC
03E0A3007E1407003E15C0A26CEC0F806D131F000F15006D5B6C6C137E3903F801FC3901
FE07F86CB55A013F13C06D5BD903FCC7FC242C7DAA2B>I<B512C014F814FE38F8007FEC
1F80EC07C0140315E0140115F0A615E01403A2EC07C0EC1F80EC7F00B512FE5C14F000F8
C8FCB21C2A7BA925>I<B512E014FC14FF39F8003F80EC0FC0EC03E0EC01F0A2EC00F8A6
EC01F0A2EC03E0140FEC3FC0B61280ECFE0014F814E0EAF801806D7EA2147C143C143E14
1E141FEC0F80A2EC07C0A2EC03E0140115F0EC00F8A2157C1E2A7BA926>82
D<EB7FC03801FFF8000713FE487F381FC07F383F000F007E1306007C90C7FCA25AA57E12
7E127F6C7EEA1FF86CB4FC6C13E06C13F8C67FEB0FFEEB00FF143FEC1F80140F15C01407
A6EC0F80126000F0EB1F0000FC5B38FF80FE6CB45A001F5B000713E0C613801A2C7DAA21
>I<B712E0A4260001F0C7FCB3B3A2232A7EA928>I<00F8D901F8EB01F0140381007CEE03
E015BCEC07BE6C029E14C01707A2EC0F1F6C17806F130FA2021F1380260F801E15000307
5BA2023E13C02607C03C141E0303133EA2027C13E02603E078143C0301137CA2000101F8
EBF07814F001F0010013F8A200005ED9F1E013F801F91478167901795D5C017B1439163D
013B5DD93F80133F161FA26DC75B342A7FA937>87 D<EA01FC380FFF80003F13C014E038
3C03F0EA3001000013F81300A4130113FF1207121FEA3FC0EA7E005A5AA3EAFC01EA7E07
EA7FFF7EEA1FFCEA0FE0151B7E9A1C>97 D<12F8AF133F38F9FFC000FB13E0B512F0EB07
F8EAFC0138F800FC147CA2143EA8147E147CA26C13F8130138FF07F0EBFFE000FB13C000
F9138038F87E00172A7CA91E>I<EB7F803801FFE0000713F85A381FC078383F0010003E
13005AA35AA7127CA37E003F1318381FC078380FFFF87E000113E038007F80151B7E9A1A
>I<143EAFEA01FCEA03FF000F13BE4813FE13C1383F007E003E133E5AA212FC5AA77E12
7CA2007E137E6C13FEEA1FC113FF6C13BE3803FE3EEA01F8172A7EA91E>I<13FCEA03FF
4813804813C0381F87E0EA3F01383E00F05A1470481378B512F8A400F8C7FCA31278127C
A27E003F1318381FC0F8EA0FFF7E000113E038007F00151B7E9A1A>I<EB3FC013FF5A5A
3807E0005B485AA9EAFFFEA3EA0F80B3A6122A7FA912>I<90387C07803901FF3FC00007
13FF5A903883E000381F01F0A2383E00F8A56C485AA2380F83E013FF485B001D90C7FCEA
1C7C003CC8FCA2123E381FFFE014F86C13FE487F481480387E003F007CEB0FC0481307A4
6C130F007EEB1F80393F807F00381FFFFE6C5B000313F038007F801A287F9A1D>I<12F8
AF133FEBFFC000FB13E0B512F0138338FE01F8EAFC00A35AB2152A7CA91E>I<12F8A512
00AA12F8B3A9052A7CA90E>I<13F8A51300AA13F8B3AF1240EAE3F012FF13E0EA7FC0EA
1F800D3683A90F>I<12F8AFEB01F8EB03F0EB07E0EB0FC01480EB1F00133E5B5BEAF9F0
12FB12FF7F7FA2EAFE7E487E12F8EB1F80130F14C0EB07E0A2EB03F0130114F8EB00FC16
2A7CA91C>I<12F8B3B3A6052A7CA90E>I<D8F83F133F9039FFC0FFC000FB01E313E0B500
F713F0018313833AFE01FE01F839FC00FC00A3485BB2251B7C9A2E>I<EAF83FEBFFC000
FB13E0B512F0138338FE01F8EAFC00A35AB2151B7C9A1E>I<137E3801FF80000713E048
13F0381F81F8383F00FC003E137C48133EA20078131E00F8131FA7007C133EA36C137C00
3F13FC381FC3F8380FFFF06C13E06C13C038007E00181B7E9A1D>I<EAF83F38F9FFC000
FB13E0B512F0EB07F8EAFC0138F800FCA2147C147E143EA7147E147C14FC6C13F8130138
FF07F0EBFFE000FB13C000F9138038F87E0090C7FCAC17277C9A1E>I<EBFC3EEA03FF48
13BE4813FEEA1FC1EA3F00003E137E007E133E127C12FC5AA77E127C127E147E6C13FEEA
1FC113FF6C13BE3807FE3EEA01F8C7FCAC17277E9A1E>I<EAF83C13FC12F912FBEAFFE0
138013005A5AA35AB00E1B7C9A14>I<EA07F8EA1FFF4813805AEA7C0738F8010090C7FC
A37E127F13F0EA3FFC6C7EEA07FFC61380EB1FC0130F1307A2124012E038FC1F80B5FC6C
1300EA1FFEEA07F8121B7E9A16>I<EA0F80A7B51280A3380F8000B2148013C33807FFC0
A26C1300EA01F812227FA115>I<00F813F8B3A213011303EAFC07B5FCEA7FFEEA3FF8EA
1FC0151B7C9A1E>I<00F8131FA2007C133EA36C137CA36C13F8A3380F81F0A33807C3E0
A3000313C013E700011380A30000130013F713FF137EA2181B7F9A1B>I<00F801F813F8
130100FC7F007C9038DC01F0A21303003E90389E03E0A21307149F001F90388F07C0140F
130F000F158090388F078FA2138ED8079E1400EC03CFA2D803DC13DEA2140113D8D801F8
13FCA21400251B7F9A28>I<007CEB1F80007EEB3F006C133E6C5B380F80FC6C6C5AEBE1
F03803E3E0EA01F76CB45A6D5A91C7FC133EA2133F497E497E3801F3E0EA03E1803807C0
F8380F807C121F497E003E7F007E148048EB0FC01A1B809A1B>I<00F8131F7E007C133E
A27E147CA27E14F81380000F13F01381EA07C114E013C31203EBE3C0120113E71480EA00
F714001377A2137E133EA2133CA2137C1378A25BA21201EA7FE05B5B90C7FC18277F9A1B
>I<B512F8A314F0EA0003EB07E014C0130FEB1F801400133E137E5B5B1201485A5B485A
120F485A90C7FC5A127E387FFFF8B5FCA3151B7E9A19>I E /Fu
5 81 df<B61280A619067F9820>45 D<EB03FE90381FFFE0017F13F890B57E000314FF48
158016C0260FFC0713E0381FE00049EB7FF04848131F48C7EA0FF8127EED07FC5A150300
7815FEA21238003014011210C8FCA21503A216FCA3150716F8150F16F0151F16E0ED3FC0
ED7F80A2EDFF004A5A4A5A4A5A4A5A4A5A5D4A5A4AC7FC14FE495A495A495A495A495A49
5A49C8FC13FE485A485A5B485A485A485A48C9FC48B612FEA727457CC431>50
D<EAFF80B3B3B3B2094877C71B>73 D<D8FFF0933807FFC06D5EA36D5EA36D5E017E177F
A2017F167F6D167EA26E15FEA2011F16FC6E1401A36D6CEC03F8A36E1407010716F0A26E
140F010316E0A26E141F010116C0A26E143F01001680A26E147F6E1500A26F5BA2023F5C
EDC001A2021F5CEDE003A2020F5CEDF007A202075CEDF80FA202035CA2EDFC1F02015CA2
6E6C485AA3037E90C7FCED7F7FA2ED3F7E16FEA26F5AA36F5AA392C9FC424877C755>77
D<B612FCEDFFC016F016FC82EEFF80902680001F13C0030113E0ED007FEE3FF0EE1FF8EE
0FFC1607160317FE1601A217FFA817FEA2160317FC1607160FEE1FF8EE3FF0EE7FE0ED01
FF031F13C090B71280EEFE005E16F016C003FCC7FC0180C9FCB3AC304878C73E>80
D E /Fv 19 121 df<143C147CEB01FC1307133FB5FCA313CFEA000FB3B3A7007FB61280
A4213879B730>49 D<EB07FC90387FFFC048B512F04814FC3907E01FFE390F8007FF261E
00031380486D13C0007E6D13E0D87F80137F6D14F012FF6DEB3FF8A46C5A6C5A6CC7FCC8
FC16F0157F16E0A2EDFFC016805C16004A5A4A5A5DEC0FE04A5A4A5A4AC7FC14FC495A5C
49481378EB078049C7FC131E4914F05B5B4848130148B6FC5A5A5A5A4815E0B7FCA42538
7BB730>I<EB03FF011F13F0017F13FC9038FC07FE3901F001FF2603C00013804848EB7F
C0D80FE014E07F486C14F07FA46C5A6C4814E06C5AD8008013FF90C713C016804A13005D
4A5A4A5AEC1FF090380FFFC05D15F090380007FEEC00FFED7FC016E0ED3FF016F8A2ED1F
FCA216FEA2EA1F80487E487E487EA216FCA349EB3FF86C5A49EB7FF0003EC713E0D81FC0
EBFFC0260FF80313806CB61200000114FC6C6C13F0010790C7FC27397CB730>I<ED0F80
A2151F153F157F15FFA25C5C5CA25C141E143E5C14785C495A13035C495A495A5B133E13
3C5B5B12015B485A485A120F48C7FC121E5A5A12F8B81280A4C70001EB8000AA0103B612
80A429377DB630>I<000C15C0D80F80130701F8137F90B6128016005D5D5D5D15C092C7
FC14FCEB1F8090C9FCA8EB03FE90381FFFE0017F13F89038FC07FC9038E001FE496C7E49
EB7F8090C713C0000E15E0C8123F16F0A316F8A3121F487E487E12FF7FA216F05B5B6CC7
EA7FE0127C003C15C0003EECFF806C491300390FC003FE3907F00FFC6CB55A6C14E06C6C
1380D90FF8C7FC25397BB730>I<EC0FF8ECFFFE0103EBFF8090390FF80FC090391FE003
E090397F8001F09038FF0003484813074848EB0FF8151F485A120F5B001FEC0FF0ED07E0
003FEC03C092C7FC5B127FA3EC7FF039FFE1FFFC01E37F9039E7007F8001EEEB3FC001EC
EB1FE001F814F0A249EB0FF8A216FCA24914FEA4127FA5123FA216FC6C7E16F8120FED1F
F06C7E6C6CEB3FE06C6CEB7FC03A00FF81FF8090397FFFFE006D5B010F13F00101138027
397CB730>I<123C123EEA3FE090B71280A41700485D5E5E5EA2007CC7EA03E000784A5A
4B5A93C7FC48141E153E5D5DC7485A5D14034A5A5D140F4AC8FCA25C143E147E14FE5CA2
1301A21303A2495AA4130FA5131FA86D5AA2EB03C0293B7BB930>I<49B47E010F13F001
3F13FC90387E01FE3901F0003F4848EB1F8049EB0FC04848EB07E0120FED03F0A2121FA2
7F7F7F6DEB07E013FE3A0FFF800FC014C09138F01F806C9038FC3F006CEBFFFC5D6C14E0
6C14F86D7F011F13FF49148090B612C0D801F814E02607F03F13F048486C13F8381FC007
D9800113FC003FEB007F48C7123FED0FFE00FE1407150315011500A316FCA2127FED01F8
6C7EED03F0D81FE0EB07E06C6CEB0FC0D807FEEBFF806CB61200C614FC013F13F0010313
8027397CB730>I<EB03FF011F13E0017F13F89038FF01FC3903FC00FF4848EB7F804848
133F001FEC1FC016E0485A007F15F0150F16F812FFA216FCA416FEA4127F151FA2123FA2
6C6C133F120F156F6C6C13EF3903FC01CFC6B5128F6D130FD91FFC13FC90C7FCA316F815
1FEA0780486C14F0487E486C14E0153F16C0157F4914806C48EBFF0049485A000FEB07FC
9038E01FF86CB512E000015C6C91C7FCEB1FF027397CB730>I<ED01E04B7EA24B7EA34B
7EA24B7EA34B7EA24B7F157BA203F37F15F102018015E00203805D167F020780ED803F02
0F80ED001FA24A80021E130F023E80023C7FA24A818202F8814A7FA249B77EA24982A2D9
07C0C76C7E5C173F010F8291C8121F4982011E150FA2013E82013C81017C8301788113FC
B500F00103B612C0A4423B7DBA49>65 D<DB1FFE14600203B500E013E0021FECF801027F
ECFE03903B01FFFC00FF07010701C0EB1FCF4990C7EA07FFD91FFC1401D93FF080494815
7F4948153F4849151F4890C9120F5A48481607A248481603A2485A1801A2127FA24993C7
FCA212FFAB127FA27FF001E0123FA36C7EF003C06C7EA26C6CEE07807E6C6DED0F006C6D
5D6D6C153E6D6C5DD91FFC5D6DB4EC03F06D01C0EB0FE0010101FCEB7F806D6CB6C7FC02
1F14FC020314E09126001FFEC8FC3B3D7BBB46>67 D<EB3FFE48B512E0000714F8390FE0
07FC9038F001FE486C6C7E6F7E82153F6C48806C5A6C5AC8FCA491B5FC131F90387FF83F
3803FF803807FC00EA0FF0485A123F485AA2485AA4157F6C7E15DF3A3FE0039FF03B1FF8
0F0FFFE03807FFFE0001497E39003FE0002B267DA52F>97 D<49B47E010F13F0017F13FC
9038FF81FE3A03FE007F80D807F8133F4848EB1FC0ED0FE0485A003F15F01507485A16F8
A212FFA290B6FCA301C0C8FCA4127FA36C7E1678121F7F000F15F06C6C13016C6CEB03E0
6C6CEB0FC03A00FFC07F8090393FFFFE00010F13F8010013C025267DA52C>101
D<13FE12FFA412071203B0EDFF80020313F0020F7F91381E03FC91383801FE02607F4A7E
01FF15805C91C7FCA35BB3A4B5D8F83F13FEA42F3C7CBB36>104
D<D801FCEBFF8000FF010313F0020F7F91381E03FC91383801FE000701607F0003497E01
FD15805C01FFC7FCA35BB3A4B5D8F83F13FEA42F267CA536>110
D<9038FE01FF00FF011F13F0027F13FC9138FC07FE9039FFF001FF00079039C0007F806C
90C7EA3FC04915E0EE1FF017F8160F17FCA2160717FEA917FC160FA317F8EE1FF0A26DEC
3FE06EEB7FC06EEBFF806E4813009039FEFC07FE91387FFFF8021F13E0DA03FEC7FC91C9
FCADB512F8A42F377DA536>112 D<3901FC03F000FFEB0FFC4AB4FC91383C3F80EC707F
00079038E0FFC000035BEBFD80A201FFEB7F809138003F00151E92C7FC5BB3A3B512FCA4
22267DA528>114 D<130FA55BA45BA25BA25B5A5A5A001FEBFFF0B6FCA3000190C7FCB3
153CA86C14781480017F13F090383FC1E090381FFFC06D1380903801FE001E377EB626>
116 D<B539E00FFFF8A4000190390001FC00028013F06CEBC0036D6C485A013F5C6D6C48
5A6D6C48C7FCECFC3E6D6C5A903803FFFC6D5B6D5B5D147F6E7E141F4A7E4A7E81ECFBFF
D901F17FEB03E049486C7E010F8049486C7E4A6C7E013E130F496D7E496D7E000181B501
1F13FCA42E267EA533>120 D E /Fw 24 122 df<127012F8A3127005057C840D>58
D<127012F012F8A212781208A31210A31220A21240050E7C840D>I<EC01C0EC0780EC1E
001478EB01E0EB0780010EC7FC133813F0EA03C0000FC8FC123C12F0A2123C120FEA03C0
EA00F01338130E6D7EEB01E0EB0078141EEC0780EC01C01A1A7C9723>I<12E01278121E
EA0780EA01E0EA0078131C1307EB03C0EB00F0143C140FEC03C0A2EC0F00143C14F0EB03
C049C7FC131C1378EA01E0EA0780001EC8FC127812E01A1A7C9723>62
D<3801FFF038001F00131EA35BA45BA45BA4485AA4485AA4485AA4120FEAFFF0141F7E9E
14>73 D<D801FEEC0FF8D8001EEC1F8001171500162F164F0127145E169EED011EA29039
4380023CA21504150801835C15101520EB81C0D80101495A1580A2ECC10000024A5A14C2
14C4EB00E4489038E803C014F0A2000C13E0001EEBC007D8FFC0EB7FFC2D1F7E9E2C>77
D<48B512E039001E0078151C150E150F5BA449131EA2153C15784913E0EC03C09038FFFE
0001F0C7FC485AA4485AA4485AA4120FEAFFF8201F7E9E1D>80 D<EBF180380389C03807
0780EA0E03121C123C383807001278A3EAF00EA31410EB1C20A2EA703CEB5C40EA308C38
0F078014147E9318>97 D<EA0780123FEA0700A4120EA45AA213F0EA1D0CEA3A0E123CEA
380FA21270A4EAE01EA3131C133C1338EA607013E0EA31C0EA1F0010207E9F14>I<137C
EA01C338070080EA0E07121E001C1300EA3C0248C7FCA35AA5EA70011302EA3004EA1838
EA0FC011147E9314>I<1478EB03F8EB0070A414E0A4EB01C0A213F1EA038938070780EA
0E03121C123C383807001278A3EAF00EA31410EB1C20A2EA703CEB5C40EA308C380F0780
15207E9F18>I<137CEA0182EA0701120E121C123CEA3802EA780CEA7BF0EA7C0012F0A4
127013011302EA3004EA1838EA0FC010147E9315>I<147C14CEEB019E1303140CEB0700
A4130EA3EBFFF0EB0E00A25BA55BA55BA55BA45B1201EA3180127948C7FC1262123C1729
7E9F16>I<EB1E30EB7138EBE0F03801C070EA03801207EB00E05AA3381E01C0A4EB0380
A2EA0E07130B38061700EA01E7EA0007A2130EA21230EA781C485AEA6070EA3FC0151D80
9316>I<13E01201A2EA00C01300A7120E1213EA23801243A3EA87001207A2120EA25AA2
1320EA3840A31380EA1900120E0B1F7E9E10>105 D<14C0EB01E0A214C090C7FCA7131E
1323EB43801383EA0103A2380207001200A3130EA45BA45BA45BA21230EA78E0EAF1C0EA
6380003EC7FC1328819E13>I<EA01C0121FEA0380A4EA0700A4120EA45AA45AA45AA312
7112E2A4126412380A207E9F0E>108 D<391E07C07C39231861869038A032033843C034
D980381380A23A87007007001207A3000EEBE00EA3ED1C10261C01C01320153816401518
263803801380D81801EB0F0024147E9328>I<381E0780382318C0EBA0603843C0701380
A2388700E01207A3380E01C0A3EB0382001C1384EB07041408130300381310381801E017
147E931B>I<3803C1E038046218EB741CEA0878EB701EA2EA10E01200A33801C03CA314
3838038078147014E0EBC1C038072380EB1E0090C7FCA2120EA45AA2EAFFC0171D819317
>112 D<EA1C1EEA26213847438013871307EB0300008EC7FC120EA35AA45AA45A123011
147E9315>114 D<EA018013C0EA0380A4EA0700A2EAFFF8EA0700120EA45AA45AA31310
EA7020A213401380EA3100121E0D1C7F9B10>116 D<000F136038118070002113E013C0
1241EA4380388381C0EA0701A3380E0380A31484EB0708120CA2380E0F10EA06133803E1
E016147E931A>I<001E13600023137014E0EA438013001247388701C0120EA3381C0380
A4EB07001218121C5BEA0C3EEA03CEEA000EA25BEAF0181338485AEAC060EA41C0003FC7
FC141D7E9316>121 D E /Fx 40 122 df<92380FFF804AB512E0020F14F891393FFC01
FC9139FFE0003E01030180133F4948C7B47E4948497F011F5C5C133F5C137FA3705B7090
C7FC177E94C8FCA793387FFFE0B9FCA43A007FF0000182B3B3003FB5D8E07FEBFFC0A43A
487EC741>12 D<EA07C0EA1FE0EA3FF8127F13FCEAFFFEA313FFA27EA27EEA1FF7EA07C7
EA0007A2130F130EA3131CA31338A2137013F013E0EA01C0EA0380EA0700120E5A120810
23788E20>44 D<B612FEA91F097F9B27>I<EE07C04C7EA24C7EA34C7EA24C7EA34C7EA2
4B7FA34B80A24B8016DF16CF030F801687031F80160782033F80ED3E01037E80157C8203
FC804B137F0201815D830203824B7F0207825D83020F824B7F021F8292C7FC834A82023E
80027FB77EA391B87E02F8C8127F0101834A81A20103844A810107844A81A24948838401
1F8491C97EA2013E84D9FFC081B66C0107B612FEA44F487CC758>65
D<B912C018FCF0FF8019E0D8001F90C7000313F805007FF03FFE727E1A807213C0841AE0
A2841AF0A84E13E0A21AC0601A804E13004E5A4E5A4E5A050313E0057F138092B600FCC7
FCF0FF8019F092C8EA7FFCF01FFF060713807213C01AE07213F07213F81AFCA2F17FFEA3
1AFFA81AFEA219FF1AFC601AF84E13F04E13E04E13C0063F13804DB51200BA12FC19F019
8006F8C7FC48477CC653>I<DC7FFE1406030FB500C0131E037F02F8133E0203B600FE13
7E020F903AF800FF80FE023F0180EB1FC1DAFFFCC7EA07F34901F0EC01FF010701C0EC00
7F4990C9123F4948161F4948160F49481607495A4818034A16015A48491600A2485B1A7E
5A91CBFC48193EA35A491800A312FFAD127FA37F6C191EA37E806C193E1A3C6C7FA26C6D
17787E6E17F06C18016D6C17E06D6CEE03C06D6CEE07806D6C6CED0F006D6D153E010101
F05D6D01FC4A5A91263FFF80EB0FF0020F01F8EB7FC0020390B6C7FCDA007F14FC030F14
E09226007FFEC8FC47497AC754>I<B97E18FCF0FF8019E0D8001F902680000F13F80500
13FEF01FFF060713C0727F727F726C7E86737E191F737E1B80851BC0A27313E0A21BF085
A31BF8A41BFCAE1BF8A41BF0A2611BE0A34F13C0A24F13801B0061624F5A4F5A4F5A0603
5B4E5B061F5BDE7FFEC7FC943807FFFCBA12F0198006FCC8FC18804E477CC659>I<BA12
FCA4D8001F90268000017FEF001F1807180318011800197E193E193F85A385A40578EB07
80A496C7FCA217F8A316011603161F92B5FCA4ED801F160316011600A31778A21AF0A3F1
01E094C7FCA41903A21AC01907A3190F191FA2F13F80197F19FF1803180F95B5FCBBFC1A
00A344477CC64C>I<BA12F0A4D8001F902680000713F8EF007F181F180718031801A218
0019FC197CA3193CA4191E1778A31900A317F8A316011603161F92B5FCA4ED801F160316
011600A31778A694C8FCB2B712FEA43F477CC649>I<B712F0A4D8001FEB8000B3B3B3A9
B712F0A424477DC62B>73 D<B712FEA4D8001F0180C9FCB3B3A419F0A4F001E0A41803A3
1807A219C0180F181FA2183F187FEF01FF5F170F94B51280BAFCA43C477CC646>76
D<B66C051FB512F86F5FA26F5FD8001FF3C000A2011E6D17F7A26E6CEE01E7A26E6CEE03
C7A36E6CEE0787A26E6CEE0F07A26E6D151EA26E6D153CA36E6D1578A26E6D15F0A26F6C
EC01E0A36F6CEC03C0A26F6CEC0780A26F6CEC0F00A26F6D131EA36F6D5BA26F6D5BA26F
6D5BA3706C485AA2706C485AA2706C485AA3706C48C7FCA270139EA27013FCA2705BA370
5BA2715AA2715AEB7F80B600C0043FB612F8715AA271C7FC65477CC66E>I<923803FFF0
037FEBFF800203B612F0020F9038003FFCDA3FF8EB07FFDAFFE0010113C0010301809038
007FF04990C86C7E49486F7E49486F7E49486F7E49486F7F01FF8448496F7F48854A8148
854A167F4885A24890CA6C7EA24885A3481A804983A400FF1AC0AE007F1A806D5FA36C1A
00A36C6D4C5AA36C6D4C5AA26C616C6D4B5BA26C6D4B5B6C6D4B5B017F606E5D6D6C4B90
C7FCD90FFFED3FFC6D01C0ECFFF86D6D495B010001F8010713C091277FFF807F5B020F90
B500FCC8FC020315F0DA007F1480030301F0C9FC4A497AC757>79
D<B9FC18F818FEF0FFC0D8001F902680001F7F050113F8717FF03FFE727E1A80841AC084
1AE0A21AF0A81AE0A31AC0601A80601A004E5AF0FFFC050313F0051F5B92B7128006FCC7
FC18E00380CAFCB3ABB712F0A444477CC64F>I<B812F8EFFFE018FC18FFD8001F902680
003F13C0050313F005007FF07FFE727E84727F86A2727FA286A862A24E5BA2624E90C8FC
4E5A4E5AF0FFF005075B053F138092B600FCC9FC18E084DB800013FCEF1FFF717F050313
E08583717F85187FA285A785A5F30180F303C01A8084A272EC07801AC072EC0F00B700F0
6D6D5A0601EBF83E9539007FFFFC071F5BCD13C052487CC657>82
D<DA7FF013030107B55B011FECE00F017F6E5A903AFFC00FFC3F4848C76C5AD803F8EC3F
FF4848140F48488048488082003F814981127F83A200FF82A27FA2837F7F7F01FE92C7FC
6C6C7E14F8ECFF806C14FCEDFFC06C15F86C15FF6C8217E06C826C826C6C816D81010F81
1303D9007F1580020315C0EC003F030114E0ED001F16077013F01600A20070167F00F016
3FA3171FA27E18E0A27E18C06C163F7E188001C0ED7F007F01F815FE01FEEC03FC26FE7F
C0495A26FC3FFCEB3FF0D8F80FB612C0D8F00392C7FC48C66C13FC48010313E034497AC7
41>I<003FBA12FCA49026FE00079038E0007F01F0170FD87FC0EF03FE49170190C71600
007E197EA2007C193EA30078191EA400F8191F48190FA5C81700B3B3A60103B812C0A448
467CC551>I<90380FFFF090B6FC000315C03A07F8007FF0486CEB1FFCED07FE486C6D7E
838183816C48816C5A6C5AC9FCA5157F023FB5FC0103B6FC011F13F090387FFE003801FF
E0481380D80FFEC7FC485A5B123F485AA2485AA45DA26C6C5BED077F6C6C130F6C6C013E
13F83C0FFF80F83FFFE000039038FFF01FC6ECC00F90390FFE0003332E7CAD38>97
D<EB7FC0B5FCA412037EB3A2ED1FFC92B57E02C314F09139CFE01FFC9139DF0003FE02FC
6D7E4A6D13804AEC7FC04AEC3FE04A15F0EF1FF8A218FCA2EF0FFEA418FFAA18FEA318FC
171FA218F8EF3FF0A26EEC7FE06E15C06EECFF80023C491300D9FE1FEB07FE903AFC0FC0
3FF8D9F803B512E049C6148049D91FF8C7FC38487CC741>I<91381FFFC049B512FC0107
14FF903A1FF8007F80D97FE0EBFFC0EBFF8048494813E0485A1207485AA248486D13C000
3FED7F80EE3F00007F92C7FC5BA312FFAA127FA27FA2123FA26C6C15F0120F6DEC01E012
076C6CEC03C06C6DEB07806C6DEB0F00D97FF0133E90391FFC01FC0107B512F0010114C0
9026001FFCC7FC2C2E7CAD34>I<EFFF804BB5FCA4ED000782B3A2EC1FFC49B512830107
14E390391FFC03F390397FE0007FD9FF807F4890C7120F484880000781485AA2485A123F
A25B127FA312FFAA127FA46C7EA2121FA26C7E00075D6C6C5C6C6C5C6C6D137F6D6C01FB
13C090273FF807E313FF010FB512C3010114039038003FF038487CC741>I<EC1FFC49B5
12C0010714F090391FF80FFC90397FC001FE49486C7E4890C7EA7F804848EC3FC04848EC
1FE0120F484815F0160F003F16F8A25B007F150717FCA212FFA290B7FCA301F0C9FCA512
7FA36C7EA2001F163CA26C7E17786C6C15F86C6CEC01F06C6DEB03E06C6DEB07C0D93FE0
EB1F80903A1FFC01FF000107B512FC010014E0020F90C7FC2E2E7DAD35>I<EDFFC0021F
13F0027F13FC903901FFC0FE49EB01FF903807FC034948481380131FEB3FF0137F14E001
FF6D13006F5A6F5A163093C7FCABB612FEA4C601E0C8FCB3B3A2007FEBFFF0A429487DC7
24>I<171FDA7FF0EBFFC00107B5000313E0011FECC7E7903B7FE03FFF0FF09039FF800F
FC48EB00074848EB03FE00079238FF07E0496DEB03C0000FEE8000A2001F82A8000F5EA2
000793C7FC6D5B00035D6C6C495A6C6D485A9138E03FF0D801DFB512C0D803C791C8FC90
38C07FF04848CAFCA37FA27FA213F890B612F06C15FF17E06C8217FC6C826D8148B81280
1207D80FF0C7001F13C0D81FC014014848EC007F007FEE3FE048C9FC171FA56C6CED3FC0
A26C6CED7F806C6CEDFF00D80FF8EC03FED803FEEC0FF82601FFE0EBFFF06C6CB612C001
0F4AC7FCD9007F13C034447DAE3A>I<EB7FC0B5FCA412037EB3A2ED07FE92383FFFC04B
13F09139C1F81FF89139C3C00FFC9139C70007FE14CE02DC8002F87F18805CA25CA35CB3
A9B60081B6FCA438487BC741>I<137C48B4FC4813804813C0A24813E0A56C13C0A26C13
806C1300EA007C90C7FCACEB7FC0B5FCA412037EB3B2B6FCA418497CC820>I<EB7FC0B5
FCA412037EB3A293383FFFF0A4933807FE00EE03F04C5AEE1F804CC7FC167E5E4B5AED07
E04B5A4B5A4BC8FC157EECC1FEECC3FF14C702CF7F91B57E8214FD02F87F4A6C7E02C07F
EC803F6F7E6F7E83816F7F6F7F8381707E707E83161F707E18C0B690B512FEA437487DC7
3D>107 D<EB7FC0B5FCA412037EB3B3B3A8B61280A419487CC720>I<9027FF8003FFEC03
FFB5011F01E0011F13E0037F01F8017F13F8913D81F80FFC01F80FFC913D83C007FE03C0
07FE0003903D878003FF078003FF6CD98E00EC0E00029C039C8102B86D01B87F06F88102
F05DA24A5DA34A5DB3A9B66CB66CB61280A4592E7BAD62>I<9039FF8007FEB590383FFF
C04B13F0913981F81FF8913983C00FFC00039039870007FE6C138E029C8002B87F188014
F0A25CA35CB3A9B60081B6FCA4382E7BAD41>I<EC0FFE49B512F0010714FC90391FF803
FF90267FE00013C0D9FF80EB3FE04890C76C7E48486E7E48486E7E000F82491403001F82
003F17804980A2007F17C0A300FF17E0AA007F17C0A46C6C4A1380A2001F17006D5C000F
5E6C6C4A5A00035E6C6C4A5A6C6D495AD97FE0EBFFC090261FFC0790C7FC0107B512FC01
0114F0D9001F90C8FC332E7DAD3A>I<90397FC01FFCB590B57E02C314F09139CFE03FFC
9139DF0007FE000301FC6D7E6C496D13804A6D13C04AEC7FE04A15F0EF3FF8A2EF1FFCA2
18FEA2170FA218FFAA18FE171FA218FCA2173F18F818F0177F6EECFFE06E15C06E491380
6E49130002DFEB0FFE9139CFC03FF802C3B512E002C01480DB1FF8C7FC92C9FCB0B67EA4
38427CAD41>I<90397F803F80B5EBFFE0028113F8913883C3FC91388707FE0003138E6C
90389C0FFF14B8A214F0A2ED07FE9138E003FCED01F892C7FCA25CB3A8B612E0A4282E7D
AD2F>114 D<90390FFE01C090B512C7000314FF3807F801390FC0007F48C7121F48140F
007E1407A2150312FEA27E7F01E090C7FC13F8387FFFC014FF6C14E015F86C806C14FF6C
1580000115C06C6C14E0131F010014F014039138007FF80070141F00F0140F15077E1503
A26C15F0A27E6CEC07E07F6DEB0FC001F0EB1F80D8FEFCEBFF0039F87FFFFCD8F01F13F0
D8E0031380252E7CAD2E>I<EB01E0A61303A31307A3130FA2131F133FA2137FEA01FF5A
000F90B512C0B7FCA3C601E0C7FCB3A616F0A9017F14E0ECF001133FED03C0D91FF81380
90390FFE0F00903807FFFE01015B9038001FF024427EC12D>I<D97FC0ECFF80B549B5FC
A40003EC00076C81B3AA5EA36C5D5EA26D6C133B013F02F313C090271FF803E313FF6DB5
1283010314039038003FF8382E7BAD41>I<B649B5FCA4000101C09038001FC06EEC0F80
6C17006E5C017F151E6E143E013F153C80011F5D8017F8010F5D6E13016D5DED80036D5D
EDC0076D5D15E06D4AC7FC15F05E027F131EEDF83E023F133CEDFC7C021F1378EDFEF802
0F5B15FF6E5BA36E5BA26E5BA26E90C8FCA2157EA2153C382E7EAD3D>I<B5D8FE07B539
E003FFFEA400039027C0001FF8C7EA3FC06CF10F006E6D7E6C191E16076E6E143E017F18
3C6E6E147C013F18785E6E6F13F8011F4A5D6E011EEBC001010F60EE3C7F6EEDE0036D02
7C5D923A80783FF0076D60EEF01F03C0ECF80F6D01C193C7FC923AE1E00FFC1F6D171E92
38E3C00703F3ECFE3EDA7FF7153C923AFF8003FF7C6E16784C7E19F86E5E4B7F020F5E4B
147FA202075E4B143F02035E4B141FA26E486EC8FC4F2E7EAD54>I<B500FE90381FFFFC
A4C601E0903803FE006EEB01F86D6C5C6D6C495A011F4A5A6D6C495A6E49C7FC6D6D5A6D
EBC07E6D147C6D6D5AEDF1F091387FFBE06EB45A806E5B93C8FC6E7F6E7F6E7FA24A7F4A
7F8291380F9FFEEC1F0F91383E07FF027C804A6C7F01016D7F49487E4A6D7E4948804948
6D7E49C76C7E013E140F017E6E7E48B41680B500E0017F13FFA4382E7EAD3D>I<B649B5
FCA4000101C09038001FC06EEC0F806C17006E5C017F151E6E143E013F153C80011F5D80
17F8010F5D6E13016D5DED80036D5DEDC0076D5D15E06D4AC7FC15F05E027F131EEDF83E
023F133CEDFC7C021F1378EDFEF8020F5B15FF6E5BA36E5BA26E5BA26E90C8FCA2157EA2
153CA2157C157815F85D1401001F5C383F8003D87FC05B38FFE0075D140F4AC9FC141E38
7FC07C495A383F03F06CB45A00071380D801FCCAFC38427EAD3D>I
E /Fy 90 126 df<127012F8B012701200A5127012F8A31270051C779B18>33
D<EA4010EAE038EAF078EAE038AAEA60300D0E7B9C18>I<EA0306EA078FA6387FFFC0B5
12E0A26C13C0380F1E00A6387FFFC0B512E0A26C13C0381E3C00A6EA0C18131C7E9B18>
I<EA3803387C0780A2EAEE0F1400A25B131EA2133EEA7C3CA2EA387CEA0078A213F85B12
015BA212035BA21207EB8380EB87C0120FEB0EE0A2121F121EA2123E383C07C0A2381803
8013247E9F18>37 D<EA01C0EA07E0487EEA0E70487EA4EB73F813F313E3380FC1C0EBC3
8013831303381F0700EA3F87EA7B8EEA71CEEAE1FC12E0137CEB7870A2EA70FE387FFFE0
EA3FC7380F03C0151C7F9B18>I<1238127CA2127E123E120EA3121CA2123812F812F012
C0070E789B18>I<137013F0EA01E0EA03C0EA0780EA0F00121E121C5AA25AA45AA81270
A47EA27E121E7EEA0780EA03C0EA01F0120013700C24799F18>I<126012F012787E7E7E
EA07801203EA01C0A2EA00E0A41370A813E0A4EA01C0A2EA03801207EA0F00121E5A5A5A
12600C247C9F18>I<EA01C0A4EA41C138F1C780EAFDDF387FFF00EA1FFCEA07F0A2EA1F
FCEA7FFF38FDDF80EAF1C73841C100EA01C0A411147D9718>I<136013F0A7387FFFC0B5
12E0A26C13C03800F000A7136013147E9718>I<121C123E127E127F123F121F1207120E
121E127C12F81260080C788518>I<387FFFC0B512E0A26C13C013047E8F18>I<12301278
12FCA2127812300606778518>I<1303EB0780A2130F14005B131EA2133E133C137C1378
A213F85B12015B12035BA212075B120F90C7FCA25A121E123E123CA2127C127812F85AA2
126011247D9F18>I<EA01F0EA07FC487EEA1F1FEA1C0738380380007813C0EA7001A238
E000E0A9EAF001007013C0A2EA780300381380381C0700EA1F1FEA0FFE6C5AEA01F0131C
7E9B18>I<EA01801203A21207120F123F12FF12FB12431203B0EA7FFCEAFFFEEA7FFC0F
1C7B9B18>I<EA03F0EA0FFEEA3FFF387C0F80387003C0EAE00138F000E0A21260C7FCA2
EB01C0A21303EB0780EB0F00131E5B5B5B485AEA07C0485A381E00E05AEA7FFFB5FC7E13
1C7E9B18>I<EA07F8EA1FFE487E38780780EB03C0130112301200EB0380A2EB0F00EA03
FF5B7F38000780EB03C01301EB00E0A312F0A2EB01C01303387C0780383FFF006C5AEA03
F8131C7E9B18>I<131F5B1377A213E7120113C7EA038712071307120E121E123C123812
7812F0B512F8A338000700A6EB7FF0A3151C7F9B18>I<383FFF80A30038C7FCA8EA3BF8
EA3FFE7F383C0780383003C0EA0001EB00E0A2126012F0A238E001C0EA7003387C0F8038
3FFF00EA1FFCEA03F0131C7E9B18>I<137E48B4FC00071380380F83C0EA1E03121C3838
018090C7FC5AA2EAE1F8EAE7FEB5FC38FE078038F803C0EAF001EB00E05A7E1270A33838
01C0EA3C03381E0780380FFF006C5AEA01F8131C7E9B18>I<12E0B512E0A214C038E003
80EB0700C65A131E131C5BA25B13F05BA2485AA3485AA448C7FCA7131D7E9C18>I<EA03
F8EA0FFE487E383E0F80EA3803387001C0A438380380EA3C07381FFF00EA07FC487EEA1F
1F383C0780387001C000F013E0EAE000A4387001C0EA7803383E0F80381FFF006C5AEA03
F8131C7E9B18>I<EA03F0EA0FFC487EEA3C0F38780780EA700338E001C0A314E0A21270
EA7803EA3C0FEA1FFFEA0FFEEA03F0C7FCEB01C0A338300380EA7807EB0F00133EEA3FFC
EA1FF0EA07C0131C7E9B18>I<1230127812FCA2127812301200A81230127812FCA21278
12300614779318>I<1218123C127EA2123C12181200A81218123C127EA2123E121E120E
121C123C127812F01260071A789318>I<14C0EB03E01307EB1FC0EB3F80EBFE00485AEA
07F0485AEA3F8048C7FC12FCA2127F6C7EEA0FE06C7EEA01FC6C7EEB3F80EB1FC0EB07E0
1303EB00C013187E9918>I<387FFFC0B512E0A3C8FCA4B512E0A36C13C0130C7E9318>I<
126012F87E127F6C7EEA0FE06C7EEA01FC6C7EEB3F80EB1FC0EB07E0A2EB1FC0EB3F80EB
FE00485AEA07F0485AEA3F8048C7FC12FC5A126013187E9918>I<EA0FF0EA3FFC48B4FC
EA700F38F00380A2EA600738000F00133E5BEA01F05B485AA55BC8FCA5EA0380487EA36C
5A111C7D9B18>I<137CEA01FEEA07FF380F8780381E03C0EA3C1DEA387F3870FFE0EA71
E313C112E1EAE380A638E1C1C0127113E33870FF8038387F00EA3C1C381E00E0EA0F8338
07FFC00001138038007E00131C7E9B18>I<137013F8A213D8A2EA01DCA3138CEA038EA4
EA0707A5380FFF80A3EA0E03381C01C0A3387F07F000FF13F8007F13F0151C7F9B18>I<
EA7FFCB5FC6C1380381C03C01301EB00E0A4130114C01307381FFF80140014C0EA1C03EB
00E014F01470A414F014E01303387FFFC0B51280387FFE00141C7F9B18>I<EBF8E0EA03
FEEA07FFEA0F07EA1E03EA3C01EA38005AA214005AA8127014E0A27E123C381E01C0EA0F
073807FF803803FE00EA00F8131C7E9B18>I<EA7FF8EAFFFE6C7E381C0F80EB03C0A2EB
01E01300A214F01470A814F014E0A2130114C01303EB0F80387FFF00485AEA7FF8141C7F
9B18>I<B512F0A3381C0070A41400A2130EA3EA1FFEA3EA1C0EA390C7FCA21438A5B512
F8A3151C7F9B18>I<B512F8A3381C0038A41400A21307A3EA1FFFA3EA1C07A390C7FCA7
EAFFC0A3151C7F9B18>I<3801F1C0EA03FDEA0FFFEA1F0FEA1C03123813011270A290C7
FC5AA5EB0FF0131F130F387001C0A213031238A2EA1C07EA1F0FEA0FFFEA03FDEA01F114
1C7E9B18>I<387F07F038FF8FF8387F07F0381C01C0A9EA1FFFA3EA1C01AA387F07F038
FF8FF8387F07F0151C7F9B18>I<EA7FFFB512806C1300EA01C0B3A4EA7FFFB512806C13
00111C7D9B18>I<387F07F038FF87F8387F07F0381C03C0EB07801400130E131E5B1338
5B13F0121DA2EA1FB8A2131C121EEA1C0EA27FA2EB0380A2EB01C0387F03F038FF87F838
7F03F0151C7F9B18>75 D<EAFFC0A3001CC7FCB114E0A5B5FCA3131C7E9B18>I<38FC01
F8EAFE03A2383B06E0A4138EA2EA398CA213DCA3EA38D8A213F81370A21300A638FE03F8
A3151C7F9B18>I<387E07F038FF0FF8387F07F0381D81C0A313C1121CA213E1A3136113
71A213311339A31319A2131D130DA3EA7F07EAFF87EA7F03151C7F9B18>I<EA0FFE383F
FF804813C0EA7803EA700100F013E0EAE000B0EAF001007013C0EA7C07EA7FFF6C138038
0FFE00131C7E9B18>I<EAFFFEEBFF8014C0EA1C03EB01E013001470A514E01301EB03C0
EA1FFF1480EBFE00001CC7FCA8B47EA3141C7F9B18>I<EA0FFE383FFF804813C0EA7803
EA700100F013E0EAE000AE1370A2EAF079387039C0EA783FEA7FFF6C1380380FFE00EA00
0FEB0780A2EB03C01301A213227E9B18>I<EA7FF8EAFFFE6C7E381C0F80130314C01301
A313031480130F381FFF005BA2EA1C0F7FEB0380A5149CA3387F01F8EAFF81387F00F016
1C7F9B18>I<3803F1C0EA1FFF5AEA7C0FEA7003EAE001A390C7FC12701278123FEA1FF0
EA07FEC67EEB0F80EB03C01301EB00E0A2126012E0130100F013C038F80780B5FCEBFE00
EAE7F8131C7E9B18>I<387FFFF8B5FCA238E07038A400001300B2EA07FFA3151C7F9B18>
I<38FF83FEA3381C0070B36C13E0EA0F01380783C03803FF806C1300EA007C171C809B18
>I<38FE03F8EAFF07EAFE03383C01E0001C13C0A3EA1E03000E1380A438070700A4EA03
8EA4EA018C13DCA3EA00D813F8A21370151C7F9B18>I<38FE03F8A338700070A36C13E0
A513F8EA39FC13DCA2001913C0A3138CA2EA1D8DA31305000D1380EA0F07A2EA0E03151C
7F9B18>I<387F0FE0139F130F380E0700120FEA070E138EEA039C13DCEA01F8A212005B
137013F07F487E13DCEA039E138EEA070F7F000E13801303001E13C0387F07F000FF13F8
007F13F0151C7F9B18>I<38FE03F8EAFF07EAFE03381C01C0EA1E03000E1380EA0F0700
071300A2EA038EA2EA01DCA3EA00F8A21370A9EA01FC487E6C5A151C7F9B18>I<383FFF
E05AA2387001C01303EB07801400C65A131E131C133C5B137013F0485A5B1203485A90C7
FC5A001E13E0121C123C5A1270B5FCA3131C7E9B18>I<EAFFF8A3EAE000B3ACEAFFF8A3
0D24779F18>I<126012F0A27E1278127C123CA2123E121E121F7EA27F12077F1203A27F
12017F12007F1378A2137C133C133E131EA2131F7F14801307A2EB030011247D9F18>I<
EAFFF8A3EA0038B3ACEAFFF8A30D247F9F18>I<EA0180EA07C0EA1FF0EA7EFCEAF83EEA
E00E0F067C9B18>I<387FFFC0B512E0A26C13C013047E7F18>I<EA0FF0EA1FFC487EEA3C
0FEA180738000380A213FF1207121FEA7F03127812E0A3EAF007EA780F383FFFF8EA1FFD
EA07F015147E9318>97 D<127E12FE127E120EA5133EEBFF80000F13C0EBC1E01380EB00
70120E1438A6000F1370A2EB80E013C1EBFFC0000E138038063E00151C809B18>I<EA01
FEEA07FF001F1380EA3E073838030048C7FCA25AA61270EB01C01238EA3E03381FFF8000
071300EA01FC12147D9318>I<EB1F80133F131F1303A5EA03E3EA0FFBEA1FFFEA3C1FEA
380FEA7007130312E0A6EA7007A2EA380FEA3C1F381FFFF0380FFBF83803E3F0151C7E9B
18>I<EA01F0EA07FCEA1FFEEA3E0F38380780EA7003A238E001C0A2B5FCA300E0C7FC12
70EB01C01238EA3E07381FFF8000071300EA01F812147D9318>I<EB1F80EB7FC0EBFFE0
13E13801C0C01400A3387FFFC0B5FCA23801C000AEEA7FFFA3131C7F9B18>I<3801E1F0
3807FFF85A381E1E30381C0E00487EA5EA1C0EEA1E1EEA1FFC5BEA39E00038C7FC7EEA1F
FEEBFFC04813E0387801F038700070481338A4007813F0EA7E03381FFFC06C13803801FC
00151F7F9318>I<127E12FE127E120EA5133EEBFF80000F13C013C1EB80E01300120EAB
387FC7FC38FFE7FE387FC7FC171C809B18>I<EA0380EA07C0A3EA0380C7FCA4EA7FC012
FF127F1201AEB5FCA3101D7C9C18>I<1338137CA313381300A4EA0FFCA3EA001CB3A4EA
6038EAF078EAFFF0EA7FE0EA3F800E277E9C18>I<127E12FE127E120EA5EB3FF0A3EB07
80EB0F00131E5B5B5BEA0FF87F139C130EEA0E0F7FEB038014C0387FC7F812FF127F151C
7F9B18>I<EAFFC0A31201B3A4B51280A3111C7D9B18>I<38F9C1C038FFF7F013FF383E3E
38EA3C3CA2EA3838AB38FE3E3EEB7E7EEB3E3E1714809318>I<EA7E3E38FEFF80007F13
C0EA0FC1EB80E01300120EAB387FC7FC38FFE7FE387FC7FC1714809318>I<EA01F0EA0F
FE487E383E0F80EA3803387001C0A238E000E0A5EAF001007013C0EA7803383C0780EA3E
0F381FFF006C5AEA01F013147E9318>I<EA7E3E38FEFF80007F13C0380FC1E01380EB00
70120E1438A6000F1370A2EB80E013C1EBFFC0000E1380EB3E0090C7FCA7EA7FC0487E6C
5A151E809318>I<3801F380EA07FBEA1FFFEA3E1FEA380FEA7007A2EAE003A6EA7007A2
EA380FEA3C1FEA1FFFEA0FFBEA03E3EA0003A7EB1FF0EB3FF8EB1FF0151E7E9318>I<38
FF0FC0EB3FE0EB7FF0EA07F0EBE060EBC0005BA290C7FCA9EAFFFC7F5B14147E9318>I<
EA07F7EA3FFF5AEA780FEAE007A3007CC7FCEA7FE0EA1FFCEA03FEEA001F38600780EAE0
03A212F038F80F00B5FC13FCEAE7F011147D9318>I<487E1203A4387FFFC0B5FCA23803
8000A9144014E0A33801C1C013FF6C1380EB3E0013197F9818>I<387E07E0EAFE0FEA7E
07EA0E00AC1301EA0F033807FFFC6C13FE3801FCFC1714809318>I<387F8FF000FF13F8
007F13F0381C01C0380E0380A338070700A3138FEA038EA3EA01DCA3EA00F8A213701514
7F9318>I<38FF07F8138F1307383800E0A4381C01C0137113F9A213D9EA1DDD000D1380
A3138DEA0F8FA23807070015147F9318>I<387F8FF0139F138F380F0700EA078EEA039E
EA01DC13F81200137013F07FEA01DCEA039E138EEA0707000E1380387F8FF000FF13F800
7F13F015147F9318>I<387F8FF000FF13F8007F13F0380E01C0EB0380A21207EB0700A2
EA0387A2138EEA01CEA213CC120013DC1378A31370A313F05B1279EA7BC0EA7F806CC7FC
121E151E7F9318>I<383FFFF05AA2387001E0EB03C0EB078038000F00131E5B13F8485A
EA03C0485A380F0070121E5A5AB512F0A314147F9318>I<EB07E0131F137FEB780013E0
AB1201EA7FC0485AA26C7EEA01E01200AB1378EB7FE0131F130713247E9F18>I<126012
F0B3B012600424769F18>I<127CB4FC13C01203C67EAB7FEB7FC0EB3FE0A2EB7FC0EBF0
005BABEA03C012FF90C7FC127C13247E9F18>I E /Fz 13 107 df<B612C0A21A027C8B
23>0 D<127012F8A3127005057C8D0D>I<0040130400C0130C006013186C13306C13606C
13C03806018038030300EA0186EA00CC13781330A2137813CCEA0186EA03033806018038
0C00C048136048133048131848130C0040130416187A9623>I<14FF010713E090381F00
F80178131E01E01307D80180EB018048C812C000061560481530A248151848150CA24815
06A4481503A900601506A46C150CA26C15186C1530A26C15606C15C06C6CEB0180D800E0
EB07000178131E011F13F8903807FFE0010090C7FC282B7EA02D>13
D<EA03F0EA0FFC487E487E481380A2B512C0A66C1380A26C13006C5A6C5AEA03F012127E
9317>15 D<15C01403EC0F00143C14F0EB03C049C7FC131C1378EA01E0EA0780001EC8FC
127812E01278121EEA0780EA01E0EA0078131C1307EB03C0EB00F0143C140FEC03C01400
1500A7007FB51280B612C01A247C9C23>20 D<12C012F0123C120FEA03C0EA00F0133813
0E6D7EEB01E0EB0078141EEC0780EC01C0EC0780EC1E001478EB01E0EB0780010EC7FC13
3813F0EA03C0000FC8FC123C127012C0C9FCA7007FB51280B612C01A247C9C23>I<140C
A21418A21430A21460A214C0A2EB0180A3EB0300A21306A25BA25BA25BA25BA25BA2485A
A248C7FCA21206A35AA25AA25AA25AA25A1240162C7AA000>54 D<130F1338136013E0EA
01C0AFEA0380EA0700121E12F8121E1207EA0380EA01C0AFEA00E013601338130F102D7D
A117>102 D<12F8121E1207EA0380EA01C0AFEA00E013601338130F1338136013E0EA01
C0AFEA0380EA0700121E12F8102D7DA117>I<1320136013C0A3EA0180A2EA0300A31206
A25AA25AA35AA25AA35AA21260A37EA27EA37EA27EA27EA3EA0180A2EA00C0A313601320
0B2E7CA112>I<12C0A21260A37EA27EA37EA27EA27EA3EA0180A2EA00C0A31360A213C0
A3EA0180A2EA0300A31206A25AA25AA35AA25AA35AA20B2E7EA112>I<12C0B3B3A9022D
7BA10D>I E /FA 74 123 df<90387E03F03801FE0F0003131F3907803C00EB00384813
78A739FFF07F80A3390F007800B11C20809F1B>11 D<14F013F8120112033807800090C7
FC5AA738FFF8F0A3EA0F00B1142180A018>I<EBF8F012011203EA078013005AA7EAFFF8
A3EA0F00B11420809F18>I<9038018030A349485AA501065BA549485AA2B71280A22600
1803C7FCEB3006A6495AB71280A22600C018C7FC48485AA548485AA500065BA321297E9F
26>35 D<13E0EA01C0EA0380120713005A121EA2121C123CA212381278A3127012F0AE12
701278A31238123CA2121C121EA27E7E13801203EA01C0EA00E00B2E7CA112>40
D<12E012707E123C121C121E7EA27E1380A2120313C0A3120113E0AE13C01203A3138012
07A213005AA2121E121C123C12385A5A0B2E7EA112>I<1303AFB612FCA2D80003C7FCAF
1E207E9A23>43 D<1278A412181230A21260A212E0050A7D830D>I<EAFFF0A30C03808B
0F>I<12F0A404047C830D>I<144014C0EB0180A3EB0300A31306A25BA35BA35BA25BA35B
A3485AA348C7FCA21206A35AA35AA25AA35AA35AA2122D7EA117>I<EA03F0487EEA1FFE
EA1E1E487EEA380700781380A2EA700300F013C0AE38780780A300381300EA3C0FEA1E1E
EA1FFE6C5AEA03F012207E9E17>I<13C01201120712FFA212FB1203B3A4EAFFFEA30F1F
7C9E17>I<EA03F0EA0FFC487EEA383FEA700F3860078012E0EB03C01240A21200A3EB07
80A2EB0F00130E5B133C5B13E0485A485A48C7FC120E5A5A5AB512C0A3121F7E9E17>I<
EA03F0EA1FFC487EEA7C1FEAF00F3860078012401200A3EB0F005B133EEA07FC13F013FC
EA001E7FEB0780A2EB03C0A4128012C0EB0780EA700F387C1F00EA3FFEEA0FFCEA03F012
207E9E17>I<131FA2132F136FA213EF13CF12011203138F1207130F120F121EA2123C12
38127812F0B512F0A338000F00A8141E7F9D17>I<383FFF80A3003CC7FCA713F8EA3FFE
7FEB8F80EA3E0314C0123C380001E0A7384003C0126038F00780387C0F00EA3FFEEA0FFC
EA03F0131F7F9D17>I<137CEA01FE1207EA0F8290C7FC121E5AA25AA213F8EAF3FCEAF7
FEEAFE1F38FC0F80EAF807A238F003C0A512701278A2EB07801238383C0F00EA1E1EEA0F
FEEA07F8EA01F012207E9E17>I<12F0A41200AC12F0A404147C930D>58
D<B612FCA2C9FCA8B612FCA21E0C7E9023>61 D<EB1FC0EB7FF048487E3803F07C3807C0
1EEA0F00381E03EF383E0FFFEA3C1F39783E3F80EB7C1FEB780F12F0EBF007A69038780F
001278EB7C1FEB3E3E383C1FFC383E0FF8381E03E06CC8FCEA07C03903F00F806CB51200
38007FFCEB1FE019207E9F1E>64 D<131FA2497E133BA2EB7BC013731371EBF1E013E113
E000017FA213C000031378A2138000077FA21300380FFFFEA2487F381E000FA248148014
07A24814C01403A248EB01E01B207F9F1E>I<EAFFFCEBFF8014C038F007E0EB01F01300
1478A514F0EB01E0EB0FC0B51280A214E038F003F0EB00F8143C141C141EA5143C14FCEB
03F8B512F014C0EBFE0017207C9F1E>I<EB1FC0EBFFF84813FC3803E03C3807800C48C7
FC121E123E123C127C1278A35AA81278A3127C123C123E121E6C13023807800E3803E03E
3801FFFC6C13F0EB1FC017227DA01D>I<B5FC14C08038F003F8EB00FC143E141E80A2EC
0780A3EC03C0A815801407A2EC0F00A2141E143E5CEB03F8B55A14C091C7FC1A207C9F21
>I<B512F0A300F0C7FCABB512C0A300F0C7FCACB512F0A314207C9F1B>I<B512E0A300F0
C7FCABB51280A300F0C7FCAF13207C9F1A>I<EB1FE0EBFFF84813FE3803E03E3807800E
48C7FC121E123E123C5AA35AA7EB03FEA33878001EA37E123E121E7EEA07803803E03E38
01FFFE6C13F8EB1FC017227DA01E>I<00F0131EAEB512FEA338F0001EAF17207C9F20>I<
12F0B3AE04207C9F0D>I<00F0EB1F801500143E5C5C495A495A495A495A49C7FC133E5B
5B12F1EAF3FC12F7EAFF9E131F487E486C7E00F87FEAF0038013016D7E80147880143E14
1E80158019207C9F20>75 D<12F0B3ABB512C0A312207C9F19>I<00F8147E6C14FEA200
F414DE00F61301A300F3EB039EA2EB8007A200F1141EEBC00FA200F0130EEBE01EA2EB60
1CEB703CA2EB3038EB3878A2EB1870EB1CF0A2EB0CE0A2EB07C0A390C7FC1F207C9F28>
I<00FC131E7EA212F7A2138012F3A2EAF1C0A213E012F013F013701378A2133CA2131C13
1E130E130F1307A2EB039EA214DE1301A2EB00FEA2147E17207C9F20>I<EB1F80EBFFF0
487F3803E07C3807801E48487E001EEB078048EB03C0A248EB01E0A30070130000F014F0
A86C1301007814E0A2007C1303003C14C0003E1307001E14806CEB0F00EBC03F3807E07E
3801FFF86C5BEB1F801C227EA021>I<EAFFFEEBFF8014E038F003F0130014781438143C
A51438147814F01303B512E01480EBFE0000F0C7FCAD16207C9F1D>I<EB1F80EBFFF048
7F3803E07C3807801E48487E001EEB0780003E14C0003C130348EB01E0A30070130000F0
14F0A90078EB01E0A2130F393C0783C0003E13C7D81E031380390F01EF00EB81FF3807E0
FE3801FFF86C7FEB1FBCEB003E80801580EC07C01C277EA021>I<EAFFFEEBFF8014E038
F003F0EB00F81478143CA5147814F8EB03F0B512E01480EBFE00EAF01E130E130FEB0780
A2EB03C0A2EB01E0A2EB00F014701478143CA2141E17207C9F1D>I<EA01FC3807FF8000
1F13C0EA3E03EA7C00007813005AA57E127C127EEA3FE0EA1FFCEA07FF0001138038003F
C0EB07E01303EB01F01300A5EB01E012C038F003C0EAFC0F387FFF80381FFE00EA03F814
227EA019>I<B612C0A3D8001EC7FCB3AB1A207E9F1F>I<00F0133CB3A700781378A26C13
F0EA3E01381F03E0380FFFC000031300EA00FC16217C9F1F>I<00F0EB01E0A2007814C0
1403A26CEB0780A36CEB0F00A36C131EA2138000075BA23803C0381478A23801E07014F0
A26C6C5A13F1A2EB71C0137BEB3B80A2133F6DC7FCA21B207F9F1E>I<00F0017C130F14
7EA20078016E130E02EE131E14E7A26C153C0101138014C714C3001E1578010313C01483
000E01811370000F15F0010713E014010007010013E0018713E1018F13F1138E0003EC71
C0A201CE1373D801DCEB7B80153BA213D8D800F8EB1F00A328207F9F2B>I<0078EB0780
007C130F6CEB1F00001E131E001F133E6C6C5A000713786C6C5A13E13801F1E03800F3C0
137F5C6DC7FC7F131E133F80497E13F33801F1E0EBE0F048487E00071378497E380F003E
48131E001E7F481480007CEB07C0007813034814E01B207F9F1E>I<00F814F8007CEB01
F0003C14E0003E13036C14C06CEB0780EB800FD807C0130000035BEBE01E6C6C5A000013
7CEB78785C133CEB1CE0131F6D5A6D5AAE1D20809F1E>I<387FFFFEA3C7127C147814F8
EB01F014E0130314C0EB0780130F1400131E133E133C5B13F85B485A12035B485A120F90
C7FC5A123E123C127CB512FEA317207E9F1C>I<EAFF80A3EAF000B3B3A3EAFF80A3092D
7DA10D>I<EAFF80A31207B3B3A312FFA3092D80A10D>93 D<EA07E0EA3FF8EA7FFCEA70
1EEA401FEA000FA3133FEA07FF121FEA7E0F12F812F0A3EAF83FEA7FFFEA3FEFEA1F8F10
147E9316>97 D<12F0ACEAF1F0EAF7FCB47EEAFC1F38F80F80EAF007A2EB03C0A6EB0780
A238F80F00EAFC3FEAFFFEEAF7FCEAF1F012207D9F17>I<EA01FCEA07FF001F1380EA3E
07EA3C0148C7FCA25AA61278A26C1380EA3E07EA1FFF00071300EA01F811147F9314>I<
EB03C0ACEA03E3EA0FFBEA1FFFEA3F0FEA7C031278A212F0A61278A2EA7C07EA3E0FEA1F
FFEA0FFBEA03E312207F9F17>I<EA03F0EA0FFC487EEA3E1FEA7C07127838700380B5FC
A300F0C7FCA3127012786C1380EA3E07EA1FFF00071300EA01F811147F9314>I<137EEA
01FE1203EA078013005AA7EAFFF0A3EA0F00B10F20809F0E>I<3803E0F0EA0FFF5A383E
3E00EA3C1E487EA5EA3C1EEA3E3EEA1FFC485AEA33E00030C7FC1238EA3FFEEBFF806C13
C0007F13E0387803F0EAF000A3EAF801387E07E0383FFFC0000F1300EA03FC141E7F9317
>I<12F0ACEAF1F8EAF3FCEAF7FEEAFC1FEAF80FA212F0AE10207D9F17>I<12F0A41200A8
12F0B3A204207D9F0B>I<EA01E0A4C7FCA8EA01E0B3A7EAC3C012FF1380EA3F000B2983
9F0C>I<12F0AC131F131E5B5B5BEAF1E0EAF3C0EAF780B47EA27FEAF9F012F8487E137C
A27F131E131FEB0F8011207D9F16>I<12F0B3AE04207D9F0B>I<39F0FC07E039F3FE1FF0
39F7FF3FF839FE0FF07C39F807C03CA200F01380AE1E147D9325>I<EAF1F8EAF3FCEAF7
FEEAFC1FEAF80FA212F0AE10147D9317>I<EA01F8EA07FE381FFF80383F0FC0EA3C0338
7801E0A238F000F0A6387801E0A2383C03C0EA3F0F381FFF803807FE00EA01F814147F93
17>I<EAF1F0EAF7FCB47EEAFC3F38F80F80EAF007A2EB03C0A6EB0780A238F80F00EAFC
3FEAFFFEEAF7FCEAF1F000F0C7FCA9121D7D9317>I<3803E3C0EA0FFBEA1FFFEA3F0FEA
3C07EA7803A212F0A61278A2EA7C07EA3F0FEA1FFFEA0FFBEA03E3EA0003A9121D7F9317
>I<EAF0E012F312F7EAFF0012FCA25AA25AAC0B147D9310>I<EA0FF0EA3FFC127FEA780C
EAF000A312FCEA7FE0EA3FF0EA1FF8EA03FCEA003E131EA212C0EAF03CEAFFFCEA7FF8EA
0FE00F147F9311>I<121EA6EAFFF0A3EA1E00AD1310EA0FF8A2EA07E00D1A7F9910>I<EA
F00FAF131F133FB5FCEA7FEFEA3F0F10147D9317>I<38F003C0A212F838780780A2383C
0F00A3EA1E0E131EA2EA0F1C133CA2EA0738A213B8EA03F0A26C5A12147F9315>I<D8F0
1F13F01480A239781B81E0133B14C11339393C31C3C0137114E3D81C701380EA1E6014E7
13E0000EEB770013C0A20007137E143E13801C147F931F>I<387801E0387C03C0383E07
80EA1E0F000F1300EA079EEA03FC5B12016C5A12017F487EEA079EEA0F0F120E381E0780
383C03C0387801E000F813F01414809315>I<38F003C0A238780780A2127C383C0F00A2
121E131EA2EA0F1CA2EA073C133813B8120313B0EA01F05B1200A2485AA212035B1207B4
C7FC5A5A121D7F9315>I<EA7FFFA3EA003E133C137813F813F0EA01E01203EA07C01380
EA0F005A121E5A127CB5FCA310147F9314>I E /FB 90 125 df<90381F83E09038F06E
303901C07878380380F8903800F03048EB7000A7B612803907007000B2383FE3FF1D2080
9F1B>11 D<133FEBE0C0EA01C0380381E0EA0701A290C7FCA6B512E0EA0700B2383FC3FC
1620809F19>I<EB3FE013E0EA01C1EA0381EA0700A8B5FCEA0700B2383FE7FC1620809F
19>I<90381F81F89038F04F043901C07C06390380F80FEB00F05A0270C7FCA6B7FC3907
007007B23A3FE3FE3FE02320809F26>I<EA7038EAF87CEAFC7EA2EA743AEA0402A3EA08
04A2EA1008A2EA2010EA40200F0E7F9F17>34 D<9038018030A449485AA501065BA54948
5A007FB6FCB7128026001803C7FCA2EB3006A4495AA2B712806C15002600C018C7FC4848
5AA548485AA500065BA321297E9F26>I<D807801318EA1840486C5B011813E039601703
60903808FCC000E0EB0180A24AC7FC1406A25C00605B131000305B495AEA1840380780C0
3900018078EC8184903803030281EB0607EB0C0691380E008013181330A2136013C0A23A
01800601003803000714030006140248EB01840004EB007821257EA126>37
D<137813841201EA03021207A45BA25BA2EA03909038A00FFC9038C001E0EC00C0000114
80EC0100EA02E000041302EA08703818780438303808EA703CEB1C10EAF00EEB0F20EB07
C09038038004387001C0397802E0083938047018391C183C303907E00FC01E227EA023>
I<127012F812FCA212741204A31208A21210A212201240060E7C9F0D>I<13401380EA01
005A12061204120C5AA212381230A212701260A412E0AC1260A412701230A212381218A2
7E120412067E7EEA008013400A2E7BA112>I<7E12407E12307E1208120C7EA212077EA2
13801201A413C0AC1380A412031300A25A1206A25A120812185A12205A5A0A2E7EA112>
I<1303AFB612FCA2D80003C7FCAF1E207E9A23>43 D<127012F012F8A212781208A31210
A31220A21240050E7C840D>I<EAFFF0A20C02808A0F>I<127012F8A3127005057C840D>
I<144014C0EB0180A3EB0300A31306A25BA35BA35BA25BA35BA3485AA348C7FCA21206A3
5AA35AA25AA35AA35AA2122D7EA117>I<EA03F0EA0E1C487EEA1806EA380738700380A4
00F013C0AD00701380A3EA780700381300EA1806EA1C0E6C5AEA03F0121F7E9D17>I<13
801203120F12F31203B3A6EA07C0EAFFFE0F1E7C9D17>I<EA03F0EA0C1CEA100E487E00
401380128000F013C0EAF803A3EA200712001480A2EB0F00130E5B5B5B13605B485A48C7
FC000613405A5A00101380EA3FFF5AB5FC121E7E9D17>I<EA03F0EA0C1CEA100EEA200F
007813801307A2EA380F12001400A2131E131C1370EA07F0EA003C130E130FEB0780A214
C0122012F8A300F013801240EB0F00EA200EEA183CEA07F0121F7E9D17>I<1306A2130E
A2131E132EA2134E138EA2EA010E1202A212041208A212101220A2124012C0B512F03800
0E00A7EBFFE0141E7F9D17>I<EA1803EA1FFE5B5B13E00010C7FCA6EA11F0EA161CEA18
0EEA10071480EA0003A214C0A3127012F0A200E013801240EB0700EA20066C5AEA0838EA
07E0121F7E9D17>I<137CEA0182EA0701380E0380EA0C0712183838030090C7FC127812
70A2EAF1F0EAF21CEAF406EAF807EB0380A200F013C0A51270A214801238EB07001218EA
0C0E6C5AEA01F0121F7E9D17>I<1240387FFFE014C0A23840008038800100A21302485A
A25B5BA25BA21360A213E05B1201A41203A76C5A131F7E9D17>I<EA03F0EA0C0CEA1006
EA3003382001801260A3127038780300123EEA3F06EA1FC8EA0FF0EA03F8487EEA0C7EEA
103F38300F80EA6007EB01C012C01300A31480EA600100201300EA1002EA0C0CEA03F012
1F7E9D17>I<EA03F0EA0E18487E487E13071270EB038012F0A214C0A5EA7007A21238EA
180BEA0E13EA03E338000380A3EB07001230EA7806130EEA700CEA2018EA1070EA0FC012
1F7E9D17>I<127012F8A312701200AA127012F8A3127005147C930D>I<127012F8A31270
1200AA127012F012F8A212781208A31210A31220A21240051D7C930D>I<007FB512F8B6
12FCC9FCA8B612FC6C14F81E0C7E9023>61 D<EA0380EA07C0A3EA0380C7FCA55AA65A12
021206A25A121C5A5AEAF006130FA21307EA70021304EA3818EA0FE010207E9615>I<EA
0FE0EA103CEA601EEA400EEAE00F12F0A21260EA001E131C13381370136013C01380A2EA
0100A6C7FCA5EA0380EA07C0A3EA038010207E9F15>I<EB1FE0EB601838018006380200
0148EB008048144039100F80203920386010EB70103940E00808EBC0071241D881801304
1283A61281EA41C012409038E00F0838207017903838631039100F81E06CC8FC7E6C141C
6C6C13F03900600F8090381FF8001E207E9F23>I<5B497EA3497EA3EB09E0A3EB10F0A3
EB2078A3497EA2EBC03EEB801EA248B5FCEB000FA20002EB0780A348EB03C0A2120C001E
14E039FF801FFE1F207F9F22>I<B512E0380F0078141EA2801580A515005C141E147CEB
FFF0EB007C141FEC0F80EC07C0140315E0A515C014071580EC0F00143EB512F01B1F7E9E
20>I<90380FE0109038381C309038E002703803C00139078000F048C71270121E15305A
1510127C127800F81400A91278007C1410123CA26C1420A27E6C6C13406C6C13803900E0
0300EB380CEB0FF01C217E9F21>I<B512F83807801EEC0780EC03C0EC01E0EC00F01570
1578A2153CA3153EA8153CA2157C1578A215F0EC01E0EC03C0EC0780EC1E00B512F81F1F
7F9E23>I<B61280380F000F14031401140015C01540A314401500A214C0130113FF1301
13001440A3EC0020A31540A315C01401EC0380140FB6FC1B1F7E9E1F>I<B61280380780
071401A2140015C01540A4EC2000A3146014E013FF138014601420A391C7FCA87FEAFFFE
1A1F7F9E1E>I<90380FE0109038381C309038E002703803C00139078000F048C7127012
1E15305A1510127C127800F81400A7EC3FFEEC01F000781300127C123CA27EA27E6C7E39
03C001703900E002309038380C1090380FF0001F217E9F24>I<39FFF07FF8390F000780
AD90B5FCEB0007AF39FFF07FF81D1F7E9E22>I<EAFFF0EA0F00B3ABEAFFF00C1F7E9E10>
I<3807FFC038003E00131EB3A3122012F8A3EAF01CEA403CEA6038EA1070EA0FC012207F
9E17>I<39FFF007FC390F0003E0EC0180150014025C5C5C5C5C5C49C7FC5B497E130FEB
13C0EB21E01341EB80F0EB0078A28080A280EC0780A2EC03C015E015F039FFF01FFE1F1F
7E9E23>I<EAFFF8EA0F8090C7FCB21402A414061404A2140C141C147CB512FC171F7E9E
1C>I<B46CEB07FE000715C0A2D805C0130BA2D804E01313A301701323A26D1343A36D13
83A290380E0103A3EB0702A3EB0384A2EB01C8A3EB00F0A21460121FD8FFE0EB7FFE271F
7F9E2A>I<B4EB0FF8390F8003E0EC0080EA0BC0EA09E0A2EA08F01378A27F7FA27FEB07
80A2EB03C0EB01E0A2EB00F01478A2143C141EA2140F1407A214031401123E38FF80001D
1F7E9E22>I<EB1FE0EB70383801C00E48487E39070003804814C0001EEB01E048EB00F0
A2007C14F8A20078147800F8147CA900781478007C14F8A2003C14F0003E1301001E14E0
6CEB03C06C148039038007003801E01E38007038EB1FE01E217E9F23>I<B512E0380F00
7C141E80EC0780A215C0A41580A2EC0F00141E147CEBFFE090C8FCAEEAFFF01A1F7E9E1F
>I<EB1FE0EB70383801C00E48487E39070003804814C0001EEB01E0003E14F0003C1300
007C14F8A20078147800F8147CA900781478007C14F8A2003C14F0383E0781391E0841E0
390F1023C00007148039039017003801D01E3900783804EB1FF8EB001CEC0C0CEC0E1CEC
0FF8A2140715F0EC01E01E297E9F23>I<B57E380F00F0143C8080A21580A41500A2141E
5C14F0EBFF80EB01C0EB0070A280143CA3143EA31504143F141FEC0F0839FFF00788C7EA
01F01E207E9E21>I<3803F040380C0CC0EA1803EA3001EA6000A212E01440A36C13007E
127CEA7F80EA3FF86CB4FC00071380C613C0EB1FE013031301EB00F014707EA46C136014
E06C13C038F8018038C60300EA81FC14217E9F19>I<007FB512E038780F010060EB0060
00401420A200C0143000801410A400001400B3497E3803FFFC1C1F7E9E21>I<39FFF00F
F8390F0003E0EC0080B3A46CEB01001380120314026C6C5A6C6C5AEB3830EB0FC01D207E
9E22>I<39FFF003FE391F8000F86CC7126015206C6C1340A36C6C1380A2EBE001000114
00A23800F002A213F8EB7804A26D5AA36D5AA2131F6D5AA2EB07C0A36D5AA36DC7FC1F20
7F9E22>I<3BFFF07FF81FF03B1F000FC007C06C903907800180170015C001805C000715
02EC09E013C000035DEC19F01410D801E05CA2EC2078D800F05CA2EC403C01785CA2EC80
1E017C1460013C144090383D000F133F6D5CA2011E1307010E91C7FCA2010C7F01041302
2C207F9E2F>I<397FF81FF8390FE007C03907C0030000031302EBE0063801F00400005B
EBF818EB78106D5AEB3E60EB1E406D5AA213076D7E497E1305EB08F0EB18F8EB1078EB20
7CEB603EEB401EEB801F3901000F801407000214C000061303001FEB07E039FFC01FFE1F
1F7F9E22>I<39FFF001FF391F800078000F146012076D1340000314807F3901F0010012
00EBF802EB7C06EB3C04EB3E08131EEB1F10EB0FB0EB07A014E06D5AACEB3FFC201F7F9E
22>I<387FFFFE387E003C127800701378006013F814F0384001E0130314C0EB07801200
EB0F00131EA25B137C13785B1201EBE002EA03C0A2EA0780000F13061300001E1304003E
130C123C48133C14FCB5FC171F7E9E1C>I<12FFA212C0B3B3A512FFA2082D7CA10D>I<EA
0804EA1008EA2010A2EA4020A2EA8040A3EAB85CEAFC7EA2EA7C3EEA381C0F0E7A9F17>
I<12FFA21203B3B3A512FFA2082D80A10D>I<120812101220A21240A21280A312B812FC
A2127C1238060E7D9F0D>96 D<EA1FE0EA3030EA7818131CEA300E1200A313FEEA078EEA
1E0E1238127800F01310A3131E127838386720380F83C014147E9317>I<121C12FC121C
AA137CEA1D87381E0180EB00C0001C13E01470A21478A6147014F014E0001E13C0381A01
8038198700EA107C15207E9F19>I<EA01FCEA0706EA1C0F123813060078C7FC127012F0
A61270127800381380A2381C0100EA0706EA01F811147F9314>I<EB01C0130F1301AAEA
01F1EA070DEA0C03EA180112381278127012F0A61270A21238EA1803120CEA070D3801F1
F815207F9F19>I<EA03F0EA0E1C487E487EA21270EB038012F0A2B5FC00F0C7FCA31270
A26C1380A2381C0100EA0706EA01F811147F9314>I<137CEA01C6EA030F1207EA0E0613
00A7EAFFF0EA0E00B2EA7FE01020809F0E>I<14E03803E330EA0E3CEA1C1C38380E00EA
780FA5EA380E6C5AEA1E38EA33E00020C7FCA21230A2EA3FFE381FFF8014C0383001E038
600070481330A4006013606C13C0381C03803803FC00141F7F9417>I<121C12FC121CAA
137C1386EA1D03001E1380A2121CAE38FF8FF014207E9F19>I<1238127CA31238C7FCA6
121C12FC121CB1EAFF80091F7F9E0C>I<13E0EA01F0A3EA00E01300A61370EA07F01200
1370B3A31260EAF06013C0EA6180EA3F000C28829E0E>I<121C12FC121CAAEB1FE0EB07
80EB060013045B5B5B136013E0EA1DF0EA1E70EA1C38133C131C7F130F7F148014C038FF
9FF014207E9F18>I<121C12FC121CB3ABEAFF8009207F9F0C>I<391C3E03E039FCC30C30
391D039038391E01E01CA2001C13C0AE3AFF8FF8FF8021147E9326>I<EA1C7CEAFC86EA
1D03001E1380A2121CAE38FF8FF014147E9319>I<EA01F8EA070E381C0380383801C0A2
387000E0A200F013F0A6007013E0A2383801C0A2381C038038070E00EA01F814147F9317
>I<EA1C7CEAFD87381E018014C0381C00E014F014701478A6147014F014E0381E01C0EB
0380381D8700EA1C7C90C7FCA8B47E151D7E9319>I<3801F04038070CC0EA0E02EA1C03
EA38011278127012F0A6127012781238EA1C03EA0C05EA0709EA01F1EA0001A8EB0FF815
1D7F9318>I<EA1CF0EAFD18EA1E3CA21318EA1C00AEEAFFC00E147E9312>I<EA0FC8EA30
38EA6018EAC008A3EAE000127CEA3FE0EA1FF0EA07F8EA003CEA800E130612C0A21304EA
E00CEAD818EA87E00F147F9312>I<1202A31206A2120EA2123EEAFFF8EA0E00AB1304A5
EA07081203EA01F00E1C7F9B12>I<381C0380EAFC1FEA1C03AE1307120CEA061B3803E3
F014147E9319>I<38FF83F8383E00E0001C13C06C1380A338070100A21383EA0382A2EA
01C4A213E4EA00E8A21370A3132015147F9318>I<39FF9FE1FC393C078070391C030060
EC8020000E1440A214C0D80704138014E0A239038861001471A23801D032143A143E3800
E01CA2EB6018EB40081E147F9321>I<38FF87F8381E03C0380E0180EB0300EA0702EA03
84EA01C813D8EA00F01370137813F8139CEA010E1202EA060738040380000C13C0003C13
E038FE07FC16147F9318>I<38FF83F8383E00E0001C13C06C1380A338070100A21383EA
0382A2EA01C4A213E4EA00E8A21370A31320A25BA3EAF080A200F1C7FC1262123C151D7F
9318>I<EA7FFFEA700E1260EA401C133813781370EA00E0120113C0EA03801207130112
0E121EEA1C03EA3802EA7006130EEAFFFE10147F9314>I<B512FC1601808C17>I<B812F0
2C01808C2D>I E /FC 58 124 df<EB0FE0EB7FF8EBF81C3801E07C1203EA07C0A21438
91C7FCA3EBC1FEB5FCA23807C03EB0393FF9FFC0A21A20809F1D>12
D<1238127C12FE12FFA2127F123B1203A21206A2120E120C12181230122008107C860F>
44 D<EAFFF0A40C047F8B11>I<1238127C12FEA3127C123807077C860F>I<137013F012
0712FF12F91201B3A4387FFFC0A2121D7D9C1A>49 D<EA03FC381FFF8038381FC0387C07
E038FE03F0A214F81301127C1238EA000314F0A2EB07E0EB0FC01400131E5B13705B3801
C018EA0380EA0600481338381FFFF05A5AB5FCA2151D7E9C1A>I<EA03FC380FFF80381C
0FC0383C07E0387E03F0A31307003C13E01200EB0FC0EB3F803803FE005B38000F80EB07
C0EB03E014F014F81238127C12FEA214F012FC387807E0383C0FC0381FFF803803FC0015
1D7E9C1A>I<EB01C013031307A2130F131F133B1373136313C3EA01831203EA0703120E
120C12181238127012E0B512FEA2380007C0A6EBFFFEA2171D7F9C1A>I<001C13E0EA1F
FF14C01480140013FC13C00018C7FCA4EA19FE381FFF80381E07C0381803E0381001F012
0014F8A2127812FCA314F0EA7803007013E0383C0FC0380FFF00EA03FC151D7E9C1A>I<
133F3801FFC03807C0E0EA0F81381F03F0121E123E127CEB01E090C7FCEAFC1013FF00FD
13C0EB03E038FE01F0A200FC13F8A4127CA3003C13F0123E381E03E0380F07C03807FF80
3801FE00151D7E9C1A>I<1260387FFFF8A214F014E014C038E0018038C00300A21306C6
5A5B13381330137013F0A2485AA21203A41207A56C5A6C5A151E7D9D1A>I<EA01FE380F
FF80381E07C0383801E0EB00F01278A2127C127FEBC1E0383FE3C0381FFF80380FFE0038
07FF8014C0001F13E0383C3FF0EA780FEB03F8EAF00113001478A214701278007C13E038
3E03C0380FFF803803FC00151D7E9C1A>I<EA01FCEA0FFF381F0780383E03C0007C13E0
130100FC13F0A314F8A4EA7C03A2EA3E05EA1FFDEA07F9EA0041EB01F0123C127EEB03E0
A214C0383C078038381F00EA1FFCEA07F0151D7E9C1A>I<EA07F8EA1FFE38381F80EA78
0F00FC13C0A3127838301F8000001300133E5B13705BA25BA690C7FCA4EA01C0487E487E
A36C5A6C5A12207D9F19>63 D<14E0A2497EA3497EA2EB06FCA2EB0EFEEB0C7EA2497EA2
01307F141F01707FEB600FA2496C7E90B5FC4880EB8003000380EB0001A200066D7EA200
0E803AFFE00FFFE0A2231F7E9E28>65 D<B512FEECFFC03907C007E0EC03F0EC01F815FC
A515F8140315F0EC0FE090B5128015C09038C003F0EC01F815FC140015FEA515FC1401EC
03F8EC07F0B612E015001F1F7E9E25>I<903807FC0290383FFF0E9038FE03DE3903F000
FE4848133E4848131E485A48C7120EA2481406127EA200FE1400A7127E1506127F7E150C
6C7E6C6C13186C6C13386C6C13703900FE01C090383FFF80903807FC001F1F7D9E26>I<
B512FEECFFC03907E007F0EC01F86E7E157E81A2ED1F80A316C0A91680A3ED3F00A2157E
5D4A5AEC07F0B612C04AC7FC221F7E9E28>I<B612E0A23807E007140114001560157015
30A21430A21500147014F013FFA213E014701430150CA214001518A31538157815F8EC03
F0B6FCA21E1F7E9E22>I<B612E0A23807E00714011400156015701530A21430A2150014
7014F013FFA213E014701430A391C7FCA8B57EA21C1F7E9E21>I<B5FCA2EA07E0B3A9B5
FCA2101F7E9E14>73 D<B57EA2D807E0C7FCB115C0A31401A3EC0380A2140F141FB6FCA2
1A1F7E9E1F>76 D<D8FFE0EC3FF86D147F00071600D806F814DFA3017CEB019FA26DEB03
1FA26D1306A290380F800CA2903807C018A3903803E030A2903801F060A2903800F8C0A2
EC7D80A2EC3F00A3141ED8FFF0903803FFF8140C2D1F7E9E32>I<D8FFE0EBFFF07F0007
EC06007FEA06FC137E7F1480131FEB0FC0EB07E0EB03F0EB01F814FC1300147E143FEC1F
8615C6EC0FE61407EC03F6EC01FE1400A2157E153E151E150ED8FFF01306A2241F7E9E29
>I<EB1FF890B5FC3901F81F803907E007E0390FC003F0391F8001F890C7FC4814FC4814
FE007E147EA200FE147FA9007E147E007F14FEA26C14FCEB8001001F14F8390FC003F039
07E007E03901F81F806CB51200EB1FF8201F7D9E27>I<B512FEECFF803907E00FE0EC03
F0EC01F8A215FCA515F8A2EC03F0EC0FE090B51280ECFE0001E0C7FCACB5FCA21E1F7E9E
24>I<B512FCECFF803907E00FE0EC03F081140181A45D14035DEC0FE090B5128002FCC7
FCEBE03FEC0F8081140781A381A31630EC03F802011360B53800FFC0ED3F80241F7E9E27
>82 D<3803FC08380FFF38381E03F8EA3800481378143812F01418A26C13007EEA7FC013
FE383FFF806C13C06C13E06C13F0C613F81307EB00FC147C143C12C0A36C1338147800F8
137038FE01E038EFFFC000811300161F7D9E1D>I<007FB512FCA2397C07E07C0070141C
0060140CA200E0140E00C01406A400001400B10003B512C0A21F1E7E9D24>I<B53801FF
E0A23A07E0000C00B3A400035C6C7E5D6C6C5B90387E03C090381FFF80D903FCC7FC231F
7E9E28>I<D8FFFEEB3FF8A2D80FE0EB0380000715006D5B000314067F00015C7F00005C
A2017E5BA2017F13706D1360EC80E0011F5B14C090380FC180A2D907E3C7FCA2EB03F6A2
14FE6D5AA26D5AA21470A2251F7F9E28>I<EA07FC381FFF80383F07C0EB03E0EB01F0A2
120C1200133FEA07FDEA1F81EA3E01127C12F8A3EAFC02EA7E0C383FF87E380FE03E1714
7F9319>97 D<B4FCA2121FAAEB1FC0EB7FF0EBE0F8EB807CEB007E143EA2143FA6143EA2
147C1380381EC1F8381C7FE038181F8018207E9F1D>I<EA01FE3807FF80381F0FC0123E
A2127CEB030000FCC7FCA6127C127E003E1360003F13C0EA1F813807FF00EA01FC13147E
9317>I<EB07F8A21300AAEA01F8EA07FEEA1F83EA3E01EA7E00127CA212FCA6127CA212
7EEA3E01EA1F07380FFEFFEA03F818207E9F1D>I<EA01FE3807FF80380F83C0381E01E0
383E00F05A14F812FCB5FCA200FCC7FCA3127CA26C1318121E380F80703807FFE0C61380
15147F9318>I<EB3F80EBFFC03803E3E0EA07C71387120FEB83C0EB8000A5EAFFFCA2EA
0F80B0EA7FF8A213207F9F10>I<3803FC3C380FFFFE381E079E383C03DE007C13E0A500
3C13C0381E0780381FFF00EA13FC0030C7FCA21238383FFF806C13F06C13F84813FC3878
007C0070133E00F0131EA30078133CA2383F01F8380FFFE000011300171E7F931A>I<B4
FCA2121FAAEB0FC0EB3FE0EB61F0EBC0F813801300AD38FFE7FFA218207D9F1D>I<121C
123E127FA3123E121CC7FCA6B4FCA2121FB0EAFFE0A20B217EA00E>I<1338137C13FEA3
137C13381300A6EA01FEA2EA003EB3A212301278EAFC3C137CEA7878EA3FF0EA1FC00F2A
83A010>I<B4FCA2121FAAEB01FEA2EB00F014C0EB0380EB0700130C5B137C13FC139E13
0F001E1380EB07C01303EB01E014F0EB00F838FFC3FFA218207E9F1C>I<B4FCA2121FB3
AAEAFFE0A20B207E9F0E>I<3AFE0FE03F8090391FF07FC03A1E70F9C3E09039407D01F0
EB807E121FEB007CAC3AFFE3FF8FFEA227147D932C>I<38FE0FC0EB3FE0381E61F0EBC0
F81380EA1F00AD38FFE7FFA218147D931D>I<48B4FC000713C0381F83F0383E00F8A248
137CA200FC137EA6007C137CA26C13F8A2381F83F03807FFC00001130017147F931A>I<
38FF1FC0EB7FF0381FE1F8EB80FCEB007EA2143E143FA6143E147E147CEB80FCEBC1F8EB
7FE0EB1F8090C7FCA7EAFFE0A2181D7E931D>I<3801F8183807FE38381F8778383F01F8
123EEA7E00127C12FCA6127C127EA2EA3F01EA1F87EA0FFEEA03F8C7FCA7EB07FFA2181D
7E931C>I<EAFE3EEB7F80381ECFC0138FA2121FEB030090C7FCABEAFFF0A212147E9316>
I<EA0FE6EA3FFEEA701EEA600EEAE006A2EAF800EAFFC0EA7FF8EA3FFCEA1FFE1203EA00
1FEAC007A212E0EAF006EAF81EEAFFFCEAC7F010147E9315>I<1203A45AA25AA2123FEA
FFFCA2EA1F00AA1306A5EA0F8CEA07F8EA03F00F1D7F9C14>I<38FF07F8A2EA1F00AD13
01A2EA0F063807FCFF6C5A18147D931D>I<39FFE07F80A2391F001C00380F8018A26C6C
5AA26C6C5AA2EBF0E000015B13F900005B13FF6DC7FCA2133EA2131CA219147F931C>I<
3AFFC7FE1FE0A23A1F00F0030014F8D80F801306A29038C1BC0E0007140CEBC3BE3903E3
1E18A29038F60F380001143001FE13B03900FC07E0A2EBF80301785BA290383001802314
7F9326>I<38FFC0FFA2380F80703807C0606D5A3803E180EA01F36CB4C7FC137E133E13
3F497E136FEBC7C0380183E0380381F048C67E000E7F39FF81FF80A219147F931C>I<39
FFE07F80A2391F001C00380F8018A26C6C5AA26C6C5AA2EBF0E000015B13F900005B13FF
6DC7FCA2133EA2131CA21318A2EA783012FC5BEAC0E0EAE1C0EA7F80001EC8FC191D7F93
1C>I<383FFFE0A2383C07C038380F80EA701F38603F00133E5BC65A1201485AEBE060EA
07C0EA0F80001F13E0383F00C0EA3E01EA7C03B5FCA213147F9317>I<B61280A2190280
8C1A>I E /FD 41 122 df<127012F812FCA212741204A41208A21210A212201240060F
7C840E>44 D<EAFFF8A20D02808B10>I<127012F8A3127005057C840E>I<13801203120F
12F31203B3A9EA07C0EAFFFE0F217CA018>49 D<EA03F0EA0C1CEA100700201380384003
C0A2008013E012F0EAF801A3EA2003120014C0A2EB07801400130E5B13185B5B5B485A90
C7FC000213205A5A00181360481340383FFFC05AB5FC13217EA018>I<1303A25BA25B13
17A21327136713471387120113071202120612041208A212101220A2124012C0B512F838
000700A7EB0F80EB7FF015217FA018>52 D<00101380381E0700EA1FFF5B13F8EA17E000
10C7FCA6EA11F8EA120CEA1C07381803801210380001C0A214E0A4127012F0A200E013C0
1280EA4003148038200700EA1006EA0C1CEA03F013227EA018>I<137EEA01C138030080
380601C0EA0C03121C381801800038C7FCA212781270A2EAF0F8EAF30CEAF4067F00F813
80EB01C012F014E0A51270A3003813C0A238180380001C1300EA0C06EA070CEA01F01322
7EA018>I<EA01F8EA060EEA0803381001801220386000C0A31270A238780180003E1300
EA3F02EA1FC4EA0FF812036C7EEA067EEA083F38100F80383007C0EA6003EB00E05A1460
A40060134014C06C138038180300EA0E0EEA03F013227EA018>56
D<EA01F0EA060C487EEA1807383803801270A238F001C0A314E0A5127013031238EA1805
120CEA0619EA03E1380001C0A3EB0380A21230387807001306EA700CEA20186C5AEA0FC0
13227EA018>I<497EA3497EA3EB05E0A2EB09F01308A2EB1078A3497EA3497EA2EBC01F
497EA248B51280EB0007A20002EB03C0A348EB01E0A348EB00F0121C003EEB01F839FF80
0FFF20237EA225>65 D<903807E0109038381830EBE0063901C0017039038000F048C7FC
000E1470121E001C1430123CA2007C14101278A200F81400A812781510127C123CA2001C
1420121E000E14407E6C6C13803901C001003800E002EB381CEB07E01C247DA223>67
D<B512F0380F801E00071307EC0380EC01C0EC00E015F01578A2157C153CA3153EA9153C
A2157C1578A215F015E01401EC03C0EC0700000F131EB512F01F227EA125>I<B612C038
0F80070007130114001540A215601520A314201500A3146014E013FF138014601420A491
C7FCA9487EEAFFFE1B227EA120>70 D<EAFFFCEA0FC0EA0780B3ACEA0FC0EAFFFC0E227E
A112>73 D<D8FFC0EB03FF000F15F0000715E0D805E01305A2D804F01309A301781311A3
6D1321A36D1341A26D1381A39038078101A3EB03C2A2EB01E4A3EB00F8A31470120E001F
EC03F03AFFE0203FFF28227EA12D>77 D<39FF8007FF3907C000F81570D805E01320EA04
F0A21378137C133C7F131F7FEB0780A2EB03C0EB01E0A2EB00F014F81478143C143E141E
140FA2EC07A0EC03E0A21401A21400000E1460121FD8FFE0132020227EA125>I<B512F0
380F803C0007130FEC078015C0140315E0A615C014071580EC0F00143CEBFFF00180C7FC
AE487EEAFFFC1B227EA121>80 D<B512E0380F803C0007130E6E7E81140381A55D14075D
020EC7FC143CEBFFE0EB80708080141E140E140FA481A3168015C014073A0FC003C10039
FFFC01E2C8127C21237EA124>82 D<3803F020380C0C60EA1802383001E0EA7000006013
6012E0A21420A36C1300A21278127FEA3FF0EA1FFE6C7E0003138038003FC0EB07E01301
EB00F0A214707EA46C1360A26C13C07E38C8018038C60700EA81FC14247DA21B>I<007F
B512F839780780780060141800401408A300C0140C00801404A400001400B3A3497E3801
FFFE1E227EA123>I<EA1FE0EA3038EA780C130EEA30071200A313FFEA07C7EA1E07123C
1278127000F01308A3130FEA7817383C2390380FC1E015157E9418>97
D<120E12FE121E120EAB131FEB61C0EB8060380F0030000E1338143C141C141EA7141C14
3C1438000F1370380C8060EB41C038083F0017237FA21B>I<EA01FEEA0703380C078012
1C383803000078C7FC127012F0A712700078134012386C1380380C0100EA0706EA01F812
157E9416>I<14E0130F13011300ABEA01F8EA0704EA0C02EA1C01EA38001278127012F0
A7127012781238EA1801EA0C0238070CF03801F0FE17237EA21B>I<EA01FCEA0707380C
0380381C01C01238007813E0EA700012F0B5FC00F0C7FCA512700078132012386C13406C
138038070300EA00FC13157F9416>I<133E13E33801C780EA0387130748C7FCA9EAFFF8
0007C7FCB27FEA7FF0112380A20F>I<14703803F198380E1E18EA1C0E38380700A20078
1380A400381300A2EA1C0EEA1E1CEA33F00020C7FCA212301238EA3FFE381FFFC06C13E0
383000F0481330481318A400601330A2003813E0380E03803803FE0015217F9518>I<12
0E12FE121E120EABEB1F80EB60C0EB80E0380F0070A2120EAF38FFE7FF18237FA21B>I<
121C123EA3121CC7FCA8120E127E121E120EB1EAFFC00A227FA10E>I<120E12FE121E12
0EABEB03FCEB01F014C01480EB02005B5B5B133813F8EA0F1CEA0E1E130E7F1480EB03C0
130114E0EB00F014F838FFE3FE17237FA21A>107 D<390E1FC07F3AFE60E183803A1E80
7201C03A0F003C00E0A2000E1338AF3AFFE3FF8FFE27157F942A>109
D<380E1F8038FE60C0381E80E0380F0070A2120EAF38FFE7FF18157F941B>I<EA01FCEA
0707380C0180381800C0003813E0481370A200F01378A700701370007813F0003813E038
1C01C0380E038038070700EA01FC15157F9418>I<EA0E1F38FE61C0380E8060380F0070
000E1338143CA2141EA7143CA21438000F1370380E80E0EB41C0EB3F0090C7FCA9EAFFE0
171F7F941B>I<EA0E3CEAFE46EA1E8FEA0F0F13061300120EAD120FEAFFF010157F9413>
114 D<EA0F88EA3078EA601812C01308A212E0EAF000127FEA3FE0EA0FF0EA01F8EA003C
EA801C130CA212C01308EAE018EAD030EA8FC00E157E9413>I<1202A41206A3120E121E
123EEAFFFCEA0E00AB1304A6EA07081203EA01F00E1F7F9E13>I<000E137038FE07F0EA
1E00000E1370AD14F0A238060170380382783800FC7F18157F941B>I<39FF8FF87F393E
01E03C001CEBC01814E0000E1410EB0260147000071420EB04301438D803841340EB8818
141CD801C81380EBD00C140E3900F00F00497EA2EB6006EB400220157F9423>119
D<38FF80FE381E00781430000E1320A26C1340A2EB80C000031380A23801C100A2EA00E2
A31374A21338A31310A25BA35B12F05B12F10043C7FC123C171F7F941A>121
D E /FE 19 121 df<B51280A311037F9016>45 D<127812FCA412781200B3127812FCA4
1278061F7A9E12>58 D<B712F0A23907E0000700031400167816381618A21608A41604A3
15401600A415C0A2140390B5FCA2EBE0031400A21540A31601A215001602A41606A21604
160CA2161C163C16FC0007EC07F8B7FCA228317DB02D>69 D<B51280A23807F0006C5AB3
B3A7487EB51280A211317DB017>73 D<D8FFF0ED7FF8A200071700D802F815BEA3017CEC
013EA26D1402A36D1404A36D6C1308A36D6C1310A36D6C1320A26D6C1340A36D6C1380A3
91387C0100A3EC3E02A36E5AA2EC0F88A3EC07D0A3EC03E0A300076D5AD80F80157FD8FF
F891380FFFF8EC008035317CB03D>77 D<B612E015FC3907E0003F0003EC0F80ED03C0ED
01E016F0ED00F8A21678167CA6167816F816F0150116E0ED03C0ED0F80ED3E0090B512F8
01E0C8FCB3A3487EB57EA226317DB02D>80 D<13FE380303C0380C00E00010137080003C
133C003E131C141EA21208C7FCA3EB0FFEEBFC1EEA03E0EA0F80EA1F00123E123C127C48
1404A3143EA21278007C135E6CEB8F08390F0307F03903FC03E01E1F7D9E21>97
D<EB1FC0EBF0303801C00C38078002EA0F00000E130F001E5B5AA2007C1304007890C7FC
12F8A91278127C123C15807E000EEB0100120F380780023801C00C3800F030EB1FC0191F
7E9E1D>99 D<EB3F80EBE0E0380380383807003C000E7F121E001C7F123C127C00781480
140712F8A2B6FC00F8C8FCA61278127C123C15807E000EEB0100000F13027E3801C00C38
00F030EB1FC0191F7E9E1D>101 D<EB07E0EB1C10EB3838EB707C13E01201EBC0380003
1300ACB512C0A23803C000B3A8487EEA7FFFA216327FB114>I<15F090387F03083901C1
C41C380380E8390700700848EB7800001E7FA2003E133EA6001E133CA26C5B6C13706D5A
3809C1C0D8087FC7FC0018C8FCA5121C7E380FFFF86C13FF6C1480390E000FC00018EB01
E048EB00F000701470481438A500701470A26C14E06CEB01C00007EB07003801C01C3800
3FE01E2F7E9F21>I<EA078012FFA2120F1207AF14FE903883078090388C03C090389001
E013A06E7E13C0A25BB3A2486C487E3AFFFC1FFF80A221327EB125>I<120FEA1F80A4EA
0F00C7FCABEA0780127FA2120F1207B3A6EA0FC0EAFFF8A20D307EAF12>I<380780FE39
FF83078090388C03C0390F9001E0EA07A06E7E13C0A25BB3A2486C487E3AFFFC1FFF80A2
211F7E9E25>110 D<EB1FC0EBF0783801C01C38070007481480001EEB03C0001C130100
3C14E0A248EB00F0A300F814F8A8007814F0007C1301003C14E0A26CEB03C0A26CEB0780
3907800F003801C01C3800F078EB1FC01D1F7E9E21>I<380783E038FF8418EB887CEA0F
90EA07A01438EBC000A35BB3487EEAFFFEA2161F7E9E19>114 D<3801FC10380E033038
1800F048137048133012E01410A37E6C1300127EEA3FF06CB4FC6C13C0000313E038003F
F0EB01F813006C133CA2141C7EA27E14186C1338143000CC136038C301C03880FE00161F
7E9E1A>I<1340A513C0A31201A212031207120F381FFFE0B5FC3803C000B01410A80001
132013E000001340EB78C0EB1F00142C7FAB19>I<39FFF003FFA2390FE001F8D803C013
E001E01380000191C7FC6C6C5AEB7802EB7C04EB3C086D5AEB0F3014A0EB07C01303806D
7E1302EB0478EB087CEB183EEB101E497E01407F9038C007C0EB800348486C7E000780D8
1F807F3AFFC007FFC0A2221F7F9E23>120 D E /FF 5 81 df<B5FCA410047F9116>45
D<EB7F803801FFE0000713F8487F487FEB81FF393E007F8048131F0078EB0FC0A2481307
15E01270006013031220C7FC1407A215C0A2140F1580141F1500143E147E5C5C495A495A
495A495A49C7FC133C5B5B485A485A485A48C8FC121E5A5AB612E0A51B307DAF22>50
D<12FCB3B3AE06327AB113>73 D<B46CEC07FCA36D140FA200FB150E6D141EA2D8F9F014
3CA36D147C00F81578A26D14F8017C14F0A2017E1301A2013E14E0013F1303A26D14C0EC
8007A2010F1480ECC00FA2010714006E5AA20103131EECF03E0101133CA2ECF87C010013
78A3EC7CF0A3EC3CE0A2143F6E5AA36E5A91C8FC2E327AB13B>77
D<B512F814FF158015E039FC001FF0EC07F81401EC00FC157EA2153E153FA7153E157EA2
15FCEC01F81407EC1FF0B612E01580150014F800FCC8FCB3A320327AB12B>80
D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300dpi
TeXDict begin

%%EndSetup
%%Page: 82 1
82 90 bop 75 361 a Fv(Chapter)31 b(6)75 568 y Fx(External)40
b(In)m(terfaces)75 791 y FB(This)14 b(c)o(hapter)f(has)g(had)g
(signi\014can)o(t)i(c)o(hanges)e(since)h(the)g(release)g(for)e(the)h
(Europ)q(ean)h(F)l(orum)f(meeting.)75 847 y(A)i(summary)g(is:)143
953 y Fz(\017)23 b FB(Should)16 b(w)o(e)f(k)o(eep)h(generalized)h
(requests)e(and)g(do)g(they)h(ha)o(v)o(e)e(a)h(p)q(erformance)h
(impact.)143 1047 y Fz(\017)23 b FB(A)12 b(whole)i(new)e(section)i(on)e
(accessor)h(functions)g(to)f(opaque)h(ob)s(jects.)18
b(Some)13 b(w)o(ere)f(there)h(b)q(efore,)189 1104 y(but)i(most)f(are)h
(new.)75 1247 y Ft(6.1)59 b(Intro)r(duction)75 1348 y
FB(The)12 b FA(MPI)f FB(F)l(orum)h(has)g(alw)o(a)o(ys)f(w)o(an)o(ted)g
(writers)h(of)f(external)i(pac)o(k)m(ages)e(to)h(b)q(e)g(able)h(to)e
(create)h(the)g(t)o(yp)q(e)75 1405 y(of)e(functionalit)o(y)i(found)g
(in)o(ternal)f(to)g FA(MPI)p FB(.)e(F)l(or)i(example,)h(in)g
FA(MPI-1)p FB(,)e(the)h(cac)o(hing)h(on)e(comm)o(unicators)75
1461 y(allo)o(ws)16 b(users)g(to)f(store)h(information)g(in)h(a)e
(similar)i(w)o(a)o(y)e(to)h(whic)o(h)g(an)g FA(MPI)g
FB(implemen)o(tations)h(could)75 1518 y(store)e(top)q(ology)g
(information.)21 b(The)15 b(cac)o(hing)h(capabilit)o(y)h(has)f(b)q(een)
g(expanded)h(to)d(other)h(handles)i(in)75 1574 y FA(MPI-2)p
FB(.)24 b(Another)17 b(mec)o(hanism)h(in)g(whic)o(h)g(users)f(ha)o(v)o
(e)f(expressed)i(in)o(terest)f(is)h(the)f(abilit)o(y)h(to)e(create)75
1631 y(new)g(non-blo)q(c)o(king)h(op)q(erations)f(similar)h(to)e(the)h
(ones)g(o\013ered)f(in)i FA(MPI)p FB(.)e(This)h(c)o(hapter)f(includes)k
(this)75 1687 y(capabilit)o(y)l(.)166 1744 y FA(MPI-1)c
FB(w)o(as)g(delib)q(erately)j(designed)f(with)f(opaque)g(ob)s(jects.)k
(This)d(allo)o(ws)f(\015exibilit)o(y)i(in)e(imple-)75
1800 y(men)o(tations)f(and)g(allo)o(ws)g(for)f(future)h(enhancemen)o
(ts)g(without)g(c)o(hanging)h(the)f(users)g(view)g(of)g(ob)s(jects)75
1856 y(already)h(presen)o(t)g(in)g FA(MPI)p FB(.)f(T)l(o)g(allo)o(w)h
(users)g(to)f(gain)h(access)g(to)f(needed)i(information)f(in)g(opaque)g
(ob-)75 1913 y(jects,)f FA(MPI)g FB(has)g(a)g(n)o(um)o(b)q(er)h(of)f
(accessor)h(functions.)21 b(F)l(or)15 b(example,)h FA(MPI)p
1375 1913 14 2 v 16 w(GET)p 1479 1913 V 17 w(COUNT)g
FB(will)h(return)75 1969 y(the)g(the)g(n)o(um)o(b)q(er)g(of)f(en)o
(tries)h(receiv)o(ed)h(as)e(stored)h(in)g(the)g(opaque)g(part)f(of)h
(the)f(status)g(ob)s(ject.)24 b(One)75 2026 y(dra)o(wbac)o(k)15
b(to)f(this)i(approac)o(h)f(is)h(that)e(only)i(information)g(with)f
(explicit)j(accessor)d(functions)h(can)f(b)q(e)75 2082
y(easily)f(and)g(p)q(ortably)g(gotten)e(from)h(an)g FA(MPI)g
FB(implemenation.)21 b(In)14 b FA(MPI-1)p FB(,)e(the)i
FA(MPI)e FB(F)l(orum)h(included)75 2139 y(all)19 b(the)e(accessor)g
(functions)i(that)e(seemed)h(to)f(b)q(e)h(needed)h(b)o(y)e(users.)28
b(Ho)o(w)o(ev)o(er,)16 b(to)q(ol)i(writers)f(ha)o(v)o(e)75
2195 y(noted)g(that)f(they)g(need)i(access)e(to)g(information)h(not)f
(t)o(ypically)i(needed)g(b)o(y)f(users.)24 b(F)l(or)16
b(example,)h(a)75 2252 y(pro\014ling)f(library)g(often)e(needs)i(the)f
(length)h(of)e(a)h(message)f(b)q(egun)i(b)o(y)f FA(MPI)p
1403 2252 V 15 w(ST)l(ART)h FB(for)e(a)h(p)q(ersistan)o(t)75
2308 y(request.)20 b(This)c(c)o(hapter)e(adds)i(in)g(a)e(n)o(um)o(b)q
(er)i(of)e(functions)i(to)f(allo)o(w)g(greater)f(access)h(to)g
(information)75 2365 y(in)h FA(MPI)f FB(opaque)g(ob)s(jects.)75
2508 y Ft(6.2)59 b(Generalized)20 b(Requests)75 2685
y Fo(Discussion:)952 2828 y FB(82)p eop
%%Page: 83 2
83 91 bop 75 -100 a Fs(6.2.)34 b(GENERALIZED)16 b(REQUESTS)1049
b FB(83)166 49 y Fn(A)o(t)12 b(the)h(Jan)o(uary)g(MPIF)f(meeting)g
(there)h(w)o(as)g(a)f(v)o(ote)g(on)g(generalized)h(requests.)20
b(The)13 b(sen)o(tamen)o(t)f(w)o(as)g(to)75 99 y(drop)i(this)h(feature)
g(though)f(the)h(v)o(ote)g(w)o(as)f(mixed.)k(W)m(e)c(need)h(to)g(ha)o
(v)o(e)f(another)h(v)o(ote)f(at)g(the)h(Marc)o(h)g(meeting)75
149 y(to)f(see)h(if)e(p)q(eople)h(w)o(an)o(t)g(to)f(k)o(eep)i(or)f
(remo)o(v)o(e)f(this)h(feature.)166 199 y(The)j(justi\014cation)e(for)h
(the)h(feature)g(is)f(that)g(it)g(allo)o(ws)f(users)j(to)e(create)i
(non-blo)q(c)o(king)d(op)q(erations)h(and)75 249 y(use)f(the)f
(standard)h Fl(MPI)e Fn(mec)o(hanisms)f(\(suc)o(h)j(as)f
Fl(MPI)p 948 249 13 2 v 14 w Fb(f)p Fl(TEST)p Fb(j)p
Fl(W)m(AIT)p Fb(g)p Fn(\))f(to)h(con)o(trol)g(them.)j
Fl(MPI)c Fn(cannot)i(hop)q(e)75 298 y(to)d(de\014ne)i(ev)o(ery)g
(non-blo)q(c)o(king)d(op)q(eration)h(that)h(users)h(ma)o(y)d(w)o(an)o
(t.)17 b(Similar)10 b(reasoning)j(lead)f(to)h(allo)o(wing)d(user)75
348 y(de\014ned)16 b(reductions)f(op)q(erations)g(in)f
Fl(MPI-1)p Fn(.)k(The)d(coun)o(ter)g(argumen)o(t)f(is)g(that)g(the)h
(handler)g(functions)f(in)g(the)75 398 y(one-sided)h(c)o(hapter)g(giv)o
(e)e(y)o(ou)h(the)h(capabilit)o(y)d(to)i(create)i(y)o(our)e(o)o(wn)f
(non-blo)q(c)o(king)g(op)q(erations.)19 b(This)14 b(feature)75
448 y(is)j(actually)g(used)i(in)e(generalized)h(requests.)31
b(Th)o(us,)19 b(the)f(main)d(thing)i(y)o(ou)g(lose)h(b)o(y)f(giving)g
(up)g(generalized)75 498 y(requests)k(is)e(the)h(abilit)o(y)d(to)i(con)
o(trol)g(the)h(non-blo)q(c)o(king)e(op)q(erations)h(within)g(standard)g
Fl(MPI)g Fn(calls.)33 b(Those)75 547 y(opp)q(osed)15
b(to)e(generalized)i(requests)h(felt)d(this)h(w)o(as)g(a)g(small)d
(gain)i(for)h(adding)f(a)g(few)h(more)f(functions)h(to)g
Fl(MPI)p Fn(.)166 763 y Fo(Discussion:)166 812 y Fn(Recen)o(tly)h(a)g
(discussion)h(started)g(on)f(the)h(MPI-IO)g(mailing)11
b(list)k(and)g(then)h(spread)g(to)f(include)g(external)75
862 y(in)o(terfaces.)k(MPI-IO)13 b(is)g(prop)q(osing)f(to)h(create)i(a)
d(n)o(um)o(b)q(er)g(of)h(non-blo)q(c)o(king)e(op)q(erations)j(to)e(do)h
(IO)g(op)q(erations.)75 912 y(One)f(question)g(raised)f(is)g(whether)i
(they)f(are)g(going)e(to)h(use)h(their)g(o)o(wn)f(TEST/W)-5
b(AIT)11 b(functions)g(or)h(the)g(ones)f(in)75 962 y
Fl(MPI)p Fn(.)g(I)i(b)q(eliev)o(e)f(a)h(n)o(um)o(b)q(er)e(of)h(those)h
(in)o(v)o(olv)o(ed)e(in)h(MPI-IO)h(w)o(ould)f(lik)o(e)g(to)g(use)h
(generalized)g(requests)i(and)d(sta)o(y)75 1012 y(within)f(MPI.)h(It)g
(w)o(as)g(noted)g(that)g(this)g(w)o(ould)g(allo)o(w)e(users)j(to)f(w)o
(ait)f(for)h(IO)g(and)g Fl(MPI)f Fn(calls)h(sim)o(ultaneously)m(.)j(It)
75 1061 y(w)o(ould)e(also)g(mak)o(e)g(MPI-IO)h(ha)o(v)o(e)g(a)f(few)h
(less)h(functions)f(\(a)g(goal)e(for)i(all!\).)i(Ho)o(w)o(ev)o(er,)e
(Bill)f(Gropp)h(has)g(raised)75 1111 y(the)i(issue)g(that)g(he)g(feels)
g(the)g(curren)o(t)h(de\014nition)f(of)e(generalized)j(requests)g(mak)o
(es)e(it)g(v)o(ery)h(di\016cult)f(to)g(ha)o(v)o(e)75
1161 y(implemen)o(tatio)o(ns)c(that)h(do)h(not)g(ha)o(v)o(e)f(p)q
(erformance)h(consequences.)20 b(F)m(or)13 b(example,)e(an)h
Fl(MPI)g Fn(implemen)o(tation)75 1211 y(ma)o(y)h(busy)j(w)o(ait)e(to)h
(see)h(if)e(a)h(generalized)h(request)h(has)e(completed.)21
b(I)15 b(will)f(not)h(recreate)i(all)d(the)h(e-mail)e(and)75
1261 y(discussion)i(that)f(has)g(o)q(ccurred.)21 b(Ho)o(w)o(ev)o(er,)14
b(I)g(think)f(w)o(e)i(need)g(to)f(ha)o(v)o(e)g(an)g(extended)h
(discussion)g(to)f(decide)h(if)75 1310 y(generalized)h(requests)i(ha)o
(v)o(e)d(a)g(p)q(erformance)h(impact)e(or)h(not.)23 b(Coming)13
b(to)i(agreemen)o(t)h(on)f(this)g(ma)o(y)f(ha)o(v)o(e)h(a)75
1360 y(large)f(impact)e(on)i(whether)h(w)o(e)f(k)o(eep)h(generalized)f
(requests)i(or)e(not.)166 1575 y Fo(Missing:)166 1625
y Fn(Sev)o(eral)f(minor)e(or)i(mo)q(dest)g(issues)h(w)o(ere)f(raised)h
(ab)q(out)f(generalized)g(requests)i(at)e(the)h(Jan)o(uary)e(meeting.)
75 1675 y(I)g(am)f(not)h(psyc)o(hed)i(ab)q(out)e(tuning)g(this)h
(section)g(un)o(til)f(w)o(e)g(decide)i(if)d(w)o(e)i(are)g(going)e(to)h
(k)o(eep)h(it.)18 b(These)13 b(c)o(hanges)75 1725 y(will)f(b)q(e)j
(made)e(once)h(a)g(decision)g(is)g(reac)o(hed.)19 b(The)14
b(issues)h(recalled)g(are:)145 1812 y Fb(\017)23 b Fn(Ho)o(w)13
b(can)h(w)o(e)g(use)h(status)145 1887 y Fb(\017)23 b
Fn(Ho)o(w)13 b(do)h(w)o(e)g(do)g(cancel)145 1962 y Fb(\017)23
b Fn(There)15 b(is)e(no)h(complete)f(function)h(in)f(the)i(example)75
2203 y Fr(6.2.1)49 b(Intro)q(duction)75 2289 y FB(The)20
b(goal)f(of)g(this)h FA(MPI-2)e FB(extension)j(is)f(to)e(allo)o(w)i
(users)g(to)e(create)i(requests)f(for)g(additional)i(non-)75
2346 y(blo)q(c)o(king)g(op)q(erations.)33 b(These)20
b(requests)f(could)i(b)q(e)f(used)g(to)f(p)q(erform)h(additional)h(op)q
(erations)e(not)75 2402 y(supp)q(orted)d(b)o(y)g FA(MPI)f
FB(suc)o(h)h(as)f(in)o(tricate)h(non-blo)q(c)o(king)h(collectiv)o(e)h
(op)q(erations.)j(They)16 b(could)h(also)e(b)q(e)75 2458
y(used)h(to)e(create)h(a)g(non-blo)q(c)o(king)i(send-receiv)o(e)g(t)o
(yp)q(e)e(function.)166 2515 y(The)20 b(metho)q(d)g(tak)o(en)g(in)g
(de\014ning)i(this)e FA(MPI-2)f FB(extension)i(is)f(to)f(try)h(and)g
(generalize)h(curren)o(t)75 2571 y FA(MPI)e FB(functions.)33
b(F)l(or)19 b(example,)i(the)e FA(MPI)g FB(functions)h(of)f
FA(MPI)p 1208 2571 14 2 v 16 w Fz(f)p FA(TEST)p Fz(j)p
FA(W)l(AIT)p Fz(gf)p FA(ANY)p Fz(j)p FA(SOME)p Fz(j)p
FA(ALL)p Fz(g)75 2628 y FB(are)e(generalized.)30 b(The)18
b(one-sided)h FA(MPI)p 797 2628 V 16 w(POST)p 931 2628
V 17 w(HANDLER)f FB(function)h(of)e(Section)i(4.10)d(is)i(used)h(for)75
2684 y(the)d(in)o(terrupts.)24 b(Also,)17 b(whenev)o(er)g(additional)g
(functions)h(are)e(needed)h(they)g(are)f(made)g(to)g(lo)q(ok)h(lik)o(e)
-32 46 y Fq(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 84 3
84 92 bop 75 -100 a FB(84)871 b Fs(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 49 y FB(similar)18
b(functions)g(curren)o(tly)f(a)o(v)m(ailable)i(in)e FA(MPI)p
FB(.)f(Th)o(us,)h(these)g(extensions)h(are)f(based)g(on)g(the)g
FA(MPI)75 106 y FB(p)q(ersisten)o(t)f(comm)o(unication)g(requests)f
(and)g(the)g(cac)o(hing)h(features.)166 162 y(In)22 b(analogy)f(to)g
(the)h(cac)o(hing)g(feature,)h(a)e(new)h(t)o(yp)q(e)g(of)f(request)h
(is)g(\014rst)f(created)h(using)g(the)75 219 y(function)c
FA(MPI)p 340 219 14 2 v 16 w(REQUEST)p 559 219 V 18 w(TYPE)p
694 219 V 16 w(CREA)l(TE)h FB(and)e(freed)g(with)h FA(MPI)p
1290 219 V 16 w(REQUEST)p 1509 219 V 18 w(TYPE)p 1644
219 V 16 w(FREE)p FB(.)g(The)75 275 y(rest)i(of)f(the)h(prop)q(osal)h
(mimics)g(the)f(mec)o(hanisms)h(in)g(p)q(ersisten)o(t)f(comm)o
(unication)h(requests.)35 b(The)75 332 y(user)18 b(creates)f(a)g(sp)q
(eci\014c)j(instance)e(of)f(a)g(request)h(via)g FA(MPI)p
1125 332 V 16 w(REQUEST)p 1344 332 V 17 w(INIT)p FB(.)f(The)h(op)q
(eration)g(asso-)75 388 y(ciated)k(with)f(the)g(request)g(is)g(b)q
(egun)h(with)f FA(MPI)p 958 388 V 16 w(ST)l(ART)p Fz(f)p
FA(ALL)p Fz(g)p FB(.)37 b(Completion)21 b(of)g(the)g(request)f(is)75
444 y(done)g(with)g FA(MPI)p 381 444 V 16 w Fz(f)p FA(TEST)p
Fz(j)p FA(W)l(AIT)p Fz(gf)p FA(ANY)p Fz(j)p FA(SOME)p
Fz(j)p FA(ALL)p Fz(g)p FB(.)31 b(The)20 b(sp)q(eci\014c)h(request)f
(can)g(b)q(e)g(freed)g(with)75 501 y FA(MPI)p 160 501
V 16 w(REQUEST)p 379 501 V 18 w(FREE)p FB(.)166 557 y(This)i(section)h
(b)q(egins)g(with)f(an)f(o)o(v)o(erview)h(of)f(the)h(functionalit)o(y)h
(whic)o(h)g(is)f(follo)o(w)o(ed)g(b)o(y)g(the)75 614
y(sp)q(eci\014c)e(calls.)28 b(It)18 b(is)g(follo)o(w)o(ed)g(b)o(y)f
(sho)o(wing)h(ho)o(w)f(these)h(functions)g(can)g(b)q(e)h(used)f(to)f
(create)g(a)h(non-)75 670 y(blo)q(c)o(king)f(v)o(ersion)e(of)g
FA(MPI)p 547 670 V 16 w(ALLGA)l(THER)p FB(.)75 790 y
Fr(6.2.2)49 b(F)o(unctionalit)o(y)75 876 y FB(The)15
b(b)q(eha)o(vior)h(of)f(the)g(request)g(is)h(de\014ned)h(b)o(y)e(these)
g(callbac)o(k)h(functions:)75 969 y FA(init)p 139 969
V 17 w(fn)23 b FB(This)13 b(callbac)o(k)h(function)g(is)f(in)o(v)o(ok)o
(ed)g(when)h(a)e(new)h(instance)h(of)e(the)h(request)g(is)g(created.)19
b(This)189 1026 y(function)i(can)f(b)q(e)i(used,)f(for)f(example,)i(to)
e(allo)q(cate)h(memory)f(for)g(the)g(request)h(ob)s(ject)f(and)189
1082 y(p)q(erform)15 b(other)f(initialization.)75 1172
y FA(sta)o(rt)p 164 1172 V 17 w(fn)23 b FB(This)e(callbac)o(k)h
(function)g(is)f(in)o(v)o(ok)o(ed)g(when)g(the)g(op)q(eration)g(asso)q
(ciated)g(with)g(request)f(is)189 1228 y(started.)30
b(This)19 b(function)h(can)f(b)q(e)g(used,)h(for)e(example,)i(to)e
(start)g(one)h(or)f(more)h(non)o(blo)q(c)o(king)189 1285
y(comm)o(unications)c(that)g(initiate)i(the)e(op)q(eration.)75
1374 y FA(complete)p 248 1374 V 17 w(fn)23 b FB(This)18
b(callbac)o(k)h(function)f(is)h(in)o(v)o(ok)o(ed)f(when)g(the)g
(request)f(has)h(completed.)29 b(It)17 b(can)h(b)q(e)189
1431 y(used)d(to)g(set)g(return)g(v)m(alues)h(in)g(extra)p
852 1431 V 16 w(state)f(or)f(clean)i(up)g(from)f(the)g(op)q(eration.)75
1520 y FA(free)p 148 1520 V 16 w(fn)23 b FB(This)f(callbac)o(k)f
(function)h(is)f(in)o(v)o(ok)o(ed)g(when)g(the)g(request)g(is)g(freed.)
37 b(It)21 b(can)g(b)q(e)g(used,)i(for)189 1577 y(example,)15
b(to)g(deallo)q(cate)h(memory)l(.)75 1666 y FA(cancel)p
194 1666 V 17 w(fn)23 b FB(This)15 b(callbac)o(k)h(function)f(is)g(in)o
(v)o(ok)o(ed)g(whenev)o(er)g(there)g(is)g(a)f(failure)h(in)h(callbac)o
(k)f(functions)189 1723 y(\(see)k(section)g(6.2.3)f(for)g(a)h
(discussion)h(of)f(failure\))h(or)e(whenev)o(er)h FA(MPI)p
1448 1723 V 16 w(CANCEL)h FB(is)f(called)i(to)189 1779
y(cancel)f(the)f(request.)31 b(This)19 b(function)h(can)f(b)q(e)h
(used,)g(for)e(example,)i(to)f(deallo)q(cate)h(memory)l(,)189
1836 y(cancel)c(in)o(ternal)g(messages,)e(reset)h(state,)f(etc.)166
1929 y(A)h(new)h(t)o(yp)q(e)f(of)g(request)g(is)h(created)f(with)75
2080 y FA(MPI)p 160 2080 V 16 w(REQUEST)p 379 2080 V
18 w(TYPE)p 514 2080 V 17 w(CREA)l(TE\(init)p 779 2080
V 17 w(fn,)f(sta)o(rt)p 946 2080 V 17 w(fn,)f(complete)p
1196 2080 V 17 w(fn,)h(free)p 1347 2080 V 16 w(fn,)g(cancel)p
1543 2080 V 17 w(fn,)g(t)o(yp)q(e)p 1704 2080 V 17 w(req\))117
2158 y Fn(IN)155 b FA(init)p 382 2158 V 17 w(fn)472 b
Fn(Creation)14 b(callbac)o(k)f(function)h(for)f(t)o(yp)q(e)p
1542 2158 13 2 v 16 w(req)117 2231 y(IN)155 b FA(sta)o(rt)p
407 2231 14 2 v 17 w(fn)447 b Fn(Request)15 b(start)g(callbac)o(k)e
(function)g(for)h(t)o(yp)q(e)p 1630 2231 13 2 v 15 w(req)117
2304 y(IN)155 b FA(complete)p 491 2304 14 2 v 17 w(fn)363
b Fn(Request)15 b(complete)e(callbac)o(k)g(function)h(for)g(t)o(yp)q(e)
p 1706 2304 13 2 v 15 w(req)117 2377 y(IN)155 b FA(free)p
391 2377 14 2 v 17 w(fn)463 b Fn(Request)15 b(free)g(callbac)o(k)e
(function)g(for)h(t)o(yp)q(e)p 1610 2377 13 2 v 15 w(req)117
2450 y(IN)155 b FA(cancel)p 437 2450 14 2 v 18 w(fn)416
b Fn(Request)15 b(cancel/failure)f(callbac)o(k)f(function)g(for)h(t)o
(yp)q(e)p 1790 2450 13 2 v 15 w(req)117 2523 y(OUT)108
b FA(t)o(yp)q(e)p 401 2523 14 2 v 18 w(req)430 b Fl(MPI)13
b Fn(created)j(request)f(t)o(yp)q(e)g(for)e(future)i(reference)75
2647 y Fy(int)23 b(MPI)p 245 2647 15 2 v 17 w(Request)p
430 2647 V 16 w(type)p 542 2647 V 17 w(create\(MPI)p
799 2647 V 16 w(Init)p 911 2647 V 17 w(function)f(*init)p
1262 2647 V 17 w(fn,)h(MPI)p 1446 2647 V 17 w(Start)p
1583 2647 V 17 w(function)393 2704 y(*start)p 540 2704
V 17 w(fn,)g(MPI)p 724 2704 V 17 w(Complete)p 933 2704
V 16 w(function)g(*complete)p 1380 2704 V 16 w(fn,)1967
46 y Fq(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 85 4
85 93 bop 75 -100 a Fs(6.2.)34 b(GENERALIZED)16 b(REQUESTS)1049
b FB(85)393 49 y Fy(MPI)p 468 49 15 2 v 17 w(Free)p 581
49 V 17 w(function)22 b(*free)p 932 49 V 17 w(fn,)h(MPI)p
1116 49 V 17 w(Cancel)p 1277 49 V 16 w(function)g(*cancel)p
1676 49 V 16 w(fn,)393 106 y(MPI)p 468 106 V 17 w(Type)p
581 106 V 17 w(Request)f(*type)p 908 106 V 17 w(req\))75
192 y(MPI)p 150 192 V 17 w(REQUEST)p 335 192 V 16 w(TYPE)p
447 192 V 17 w(CREATE\(INIT)p 728 192 V 15 w(FN,)i(START)p
959 192 V 16 w(FN,)g(COMPLETE)p 1263 192 V 16 w(FN,)f(FREE)p
1470 192 V 17 w(FN,)g(CANCEL)p 1726 192 V 17 w(FN,)393
249 y(TYPE)p 492 249 V 17 w(REQ,)g(IERROR\))170 305 y(EXTERNAL)g(INIT)p
484 305 V 17 w(FN,)g(START)p 716 305 V 17 w(FN,)g(COMPLETE)p
1020 305 V 16 w(FN,)h(FREE)p 1228 305 V 16 w(FN,)g(CANCEL)p
1484 305 V 16 w(FN)170 362 y(INTEGER)f(type)p 460 362
V 17 w(req,)g(IERROR)166 448 y FB(The)c(callbac)o(k)g(functions)h(are)e
(describ)q(ed)j(b)q(elo)o(w)e(with)g(the)g(routines)g(that)f(cause)h
(them)f(to)g(b)q(e)75 504 y(called.)j FA(t)o(yp)q(e)p
304 504 14 2 v 18 w(req)14 b FB(is)h(a)f(unique)i(id)g(that)e(is)h
(generated)f(b)o(y)g FA(MPI)g FB(that)g(can)h(b)q(e)g(used)g(to)f
(create)g(requests)75 561 y(of)h(this)g(t)o(yp)q(e.)20
b(This)c(call)h(is)e(lo)q(cal)i(and)e(the)g FA(t)o(yp)q(e)p
925 561 V 18 w(req)g FB(is)h(a)f(lo)q(cal)h(quan)o(tit)o(y)f(to)f(the)i
(calling)h(pro)q(cess.)j(It)75 617 y(cannot)15 b(b)q(e)h(transfered)f
(to)f(another)h(pro)q(cess.)166 674 y(If)c(the)h(user)f(needs)h(their)f
(callbac)o(k)i(function)f(to)e(b)q(e)i(atomic,)f(then)h(s/he)f(should)h
(call)g FA(MPI)p 1711 674 V 16 w(HLOCK)75 730 y FB(and)j
FA(MPI)p 248 730 V 16 w(UNHLOCK)h FB(as)e(describ)q(ed)k(in)e(Section)g
(4.10.)166 787 y(T)l(o)f(get)g(an)g(instance)h(of)f FA(t)o(yp)q(e)p
684 787 V 17 w(req)p FB(,)g(one)g(calls:)75 938 y FA(MPI)p
160 938 V 16 w(REQUEST)p 379 938 V 18 w(INIT\(t)o(yp)q(e)p
584 938 V 16 w(req,)g(extra)p 782 938 V 17 w(state,)h(comm,)d
(request\))117 1015 y Fn(IN)155 b FA(t)o(yp)q(e)p 401
1015 V 18 w(req)430 b Fn(T)o(yp)q(e)10 b(of)f(request)h(desired)h
(\(from)c(MPI)p 1519 1015 13 2 v 16 w(REQUEST)p 1738
1015 V 15 w(TYPE)p 1870 1015 V 16 w(CREA)m(TE\))117 1090
y(IN)155 b FA(extra)p 416 1090 14 2 v 17 w(state)384
b Fn(Extra)14 b(state)h(passed)g(to)f Fl(init)p 1365
1090 13 2 v 15 w(fn)117 1165 y Fn(IN)155 b FA(comm)470
b Fn(Comm)o(unicator)11 b(to)j(asso)q(ciate)g(request)i(with)117
1240 y(OUT)108 b FA(request)452 b Fn(Handle)14 b(to)g(request)75
1365 y Fy(int)23 b(MPI)p 245 1365 15 2 v 17 w(Request)p
430 1365 V 16 w(init\(MPI)p 638 1365 V 17 w(Type)p 751
1365 V 16 w(request)g(type)p 1054 1365 V 17 w(req,)g(void)g(*extra)p
1453 1365 V 17 w(state,)g(MPI)p 1709 1365 V 17 w(Comm)393
1421 y(comm,)g(MPI)p 611 1421 V 17 w(TYPE)p 724 1421
V 17 w(Request)g(*request\))75 1508 y(MPI)p 150 1508
V 17 w(REQUEST)p 335 1508 V 16 w(INIT\(TYPE)p 567 1508
V 16 w(REQ,)g(EXTRA)p 822 1508 V 17 w(STATE,)g(COMM,)g(REQUEST,)g
(IERROR)g(\))170 1564 y(INTEGER)g(TYPE)p 460 1564 V 17
w(REQ,)g(EXTRA)p 716 1564 V 17 w(STATE,)g(COMM,)g(REQUEST,)g(IERROR)166
1651 y FB(This)16 b(function)g(in)o(v)o(ok)o(es)f(the)g(callbac)o(k)h
(function)g FA(init)p 1100 1651 14 2 v 17 w(fn)p FB(.)21
b(In)15 b(C)g(this)h(is)g(de\014ned)g(as:)75 1757 y Fy(typedef)23
b(int)g(MPI_Request_init_fn\(MPI_Reque)o(st)e(type_req,)i(void)75
1813 y(*extra_state,)f(MPI_Comm)h(comm,)g(MPI_Request)f(request\);)166
1920 y FB(A)15 b(F)l(ortran)f(declaration)i(for)f(suc)o(h)g(a)g
(function)h(is)g(as)f(follo)o(ws:)75 1976 y Fy(INTEGER)23
b(FUNCTION)g(REQUEST)p 652 1976 15 2 v 16 w(INIT)p 764
1976 V 17 w(FN\(TYPE)p 949 1976 V 16 w(REQ,)g(EXTRA)p
1204 1976 V 17 w(STATE,)g(COMM,)g(REQUEST\))170 2032
y(INTEGER)g(TYPE)p 460 2032 V 17 w(REQ,)g(EXTRA)p 716
2032 V 17 w(STATE,)g(COMM,)g(REQUEST)166 2119 y FA(MPI)p
251 2119 14 2 v 16 w(REQUEST)p 470 2119 V 18 w(INIT)18
b FB(in)o(v)o(ok)o(es)g(the)h(user)f(function)i FA(init)p
1180 2119 V 17 w(fn)f FB(with)f(input)i(argumen)o(ts)e
FA(t)o(yp)q(e)p 1789 2119 V 17 w(req)p FB(,)75 2175 y
FA(extra)p 173 2175 V 16 w(state)p FB(,)h FA(comm)p FB(,)d(and)i
FA(request)h FB(whic)o(h)f(are)f(the)h(argumen)o(ts)e(that)h(w)o(ere)g
(passed)h(b)o(y)f(the)h(caller)g(of)75 2232 y FA(MPI)p
160 2232 V 16 w(REQUEST)p 379 2232 V 18 w(INIT)p FB(.)12
b(The)h(callbac)o(k)i(function)f(will)h(usually)g(allo)q(cate)f(and)f
(initialize)j(in)o(ternal)f(data)75 2288 y(structures)j(of)g(the)h
(request.)29 b(It)18 b(can)h(return)f(in)h FA(extra)p
1048 2288 V 17 w(state)g FB(a)f(p)q(oin)o(ter)h(to)f(this)h(in)o
(ternal)g(structure)75 2345 y(since)g FA(extra)p 287
2345 V 17 w(state)g FB(is)g(passed)g(to)e(all)j(the)e(user)g(callbac)o
(k)i(functions)f(for)e(this)i(request.)29 b(Outside)20
b(the)75 2401 y(user)g(function,)h FA(MPI)p 457 2401
V 16 w(REQUEST)p 676 2401 V 18 w(INIT)e FB(creates)g(and)h(returns)g
(in)g FA(request)i FB(a)d(handle)i(to)e(the)h(newly)75
2458 y(created)15 b(request.)21 b(This)15 b(request)h(is)g(lo)q(cal)g
(to)f(the)g(calling)i(pro)q(cess.)k FA(init)p 1345 2458
V 17 w(fn)15 b FB(returns)g Fl(MPI)p 1645 2458 13 2 v
15 w(SUCCESS)e FB(if)75 2514 y(it)i(succeeds.)21 b(The)16
b(consequence)g(of)f(returning)h(failure)g(is)g(discussed)h(later.)166
2647 y Fo(Discussion:)-32 46 y Fq(1)-32 103 y(2)-32 159
y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667
y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40
1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40
1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40
2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p
eop
%%Page: 86 5
86 94 bop 75 -100 a FB(86)871 b Fs(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)166 49 y Fl(MPI)p
243 49 13 2 v 14 w(REQUEST)p 445 49 V 14 w(INIT)14 b
Fn(tak)o(es)h(a)f(comm)o(unicator)e(as)i(an)h(argumen)o(t.)j(Is)d(this)
g(call)e(in)o(tended)j(to)e(b)q(e)h(collec-)75 99 y(tiv)o(e?)i(Must)c
(all)f(comm)o(uni)o(cations)e(used)j(in)f(this)h(request)g(use)h(this)e
(comm)o(unicator?)j(My)d(thinking)g(is)g(that)g(the)75
149 y(call)h(is)h(lo)q(cal)g(and)g(the)h(comm)o(unicator)c(is)j(giv)o
(en)g(to)g(allo)o(w)e(initialization)g(and)i(creation)g(of)g
(appropriate)g(arra)o(y)75 199 y(and)e(structures.)20
b(Comm)n(unications)9 b(are)j(not)g(limited)e(to)h(that)h(comm)o
(unicator)e(but)i(are)g(lik)o(ely)e(to)i(only)f(in)o(v)o(olv)o(e)75
249 y(the)j(comm)o(unicator)e(giv)o(en.)17 b(F)m(or)d(example,)e(y)o
(ou)h(could)h(create)h(a)f(subgroup)g(to)g(w)o(ork)f(with.)166
388 y FB(A)k(request)f(is)h(b)q(egun)h(with)e(the)h(curren)o(t)g
FA(MPI)e FB(functions)j FA(MPI)p 1284 388 14 2 v 16 w(ST)l(ART)f
FB(and)g FA(MPI)p 1631 388 V 16 w(ST)l(ART)l(ALL)p FB(.)75
444 y(Calling)g(these)e(functions)h(cause)f(the)h FA(sta)o(rt)p
833 444 V 16 w(fn)g FB(callbac)o(k)g(function)g(to)f(b)q(e)h(in)o(v)o
(ok)o(ed.)k(It)15 b(is)h(de\014ned)g(as:)75 550 y Fy(typedef)23
b(int)g(MPI_Request_start_fn\(void)e(*extra_state,)h(MPI_Comm)h(comm,)
75 607 y(MPI_Request)f(request\);)166 713 y FB(A)15 b(F)l(ortran)f
(declaration)i(for)f(suc)o(h)g(a)g(function)h(is)g(as)f(follo)o(ws:)75
770 y Fy(INTEGER)23 b(FUNCTION)g(REQUEST)p 652 770 15
2 v 16 w(START)p 788 770 V 16 w(FN\(EXTRA)p 996 770 V
16 w(STATE,)h(COMM,)f(REQUEST\))170 826 y(INTEGER)g(EXTRA)p
484 826 V 17 w(STATE,)g(COMM,)g(REQUEST)166 912 y FB(The)14
b(input)h FA(extra)p 476 912 14 2 v 16 w(state)g FB(is)f(a)g(p)q(oin)o
(ter)g(to)f(the)h(in)o(ternal)h(state)e(of)g(the)h(request)g(that)f(w)o
(as)g(returned)75 969 y(b)o(y)23 b(the)f FA(init)p 295
969 V 17 w(fn)h FB(callbac)o(k)h(function.)43 b FA(sta)o(rt)p
858 969 V 17 w(fn)23 b FB(ma)o(y)f(initiate)i(one)f(or)f(more)g(comm)o
(unications,)j(as)75 1025 y(part)16 b(of)g(starting)g(the)g(op)q
(eration.)24 b(The)17 b(user)f(should)i(use)e(the)h FA(MPI)p
1285 1025 V 16 w(POST)p 1419 1025 V 17 w(HANDLER)g FB(function)g(in)75
1082 y(Section)f(4.10)e(to)h(cause)g(a)g(user)g(function)h(to)f(b)q(e)h
(in)o(v)o(ok)o(ed)f(when)h(the)f(comm)o(unication)h(completes.)166
1138 y FA(sta)o(rt)p 255 1138 V 17 w(fn)k FB(returns)g
Fl(MPI)p 565 1138 13 2 v 15 w(SUCCESS)e FB(if)j(it)f(succeeds.)36
b(The)21 b(consequence)g(of)f(returning)h(a)f(failure)75
1195 y(co)q(de)c(is)g(discussed)g(later.)166 1251 y(A)f(request)g(is)h
(mark)o(ed)f(completed)h(b)o(y)f(calling:)75 1402 y FA(MPI)p
160 1402 14 2 v 16 w(REQUEST)p 379 1402 V 18 w(MARK)p
528 1402 V 16 w(COMPLETE\(request\))117 1479 y Fn(INOUT)62
b FA(request)452 b Fn(T)o(yp)q(e)14 b(of)g(request)h(to)f(b)q(e)g(mark)
o(ed)f(as)h(complete)75 1604 y Fy(int)23 b(MPI)p 245
1604 15 2 v 17 w(Request)p 430 1604 V 16 w(mark)p 542
1604 V 17 w(complete\(MPI)p 847 1604 V 16 w(Request)g(*request\))75
1690 y(MPI)p 150 1690 V 17 w(REQUEST)p 335 1690 V 16
w(MARK)p 447 1690 V 17 w(COMPLETE\(REQUEST,)e(IERROR)i(\))170
1747 y(INTEGER)g(REQUEST,)g(IERROR)166 1833 y FB(This)16
b(function)g(in)o(v)o(ok)o(es)f(the)g(callbac)o(k)h(function)g
FA(complete)p 1209 1833 14 2 v 17 w(fn)f FB(de\014ned)i(as:)75
1939 y Fy(typedef)23 b(int)g(MPI_Request_complete_fn\(void)d
(*extra_state,)i(MPI_Request)h(request\);)166 2046 y
FB(A)15 b(F)l(ortran)f(declaration)i(for)f(suc)o(h)g(a)g(function)h(is)
g(as)f(follo)o(ws:)75 2102 y Fy(INTEGER)23 b(FUNCTION)g(REQUEST)p
652 2102 15 2 v 16 w(COMPLETE)p 860 2102 V 16 w(FN\(EXTRA)p
1068 2102 V 16 w(STATE,)g(REQUEST\))170 2159 y(INTEGER)g(EXTRA)p
484 2159 V 17 w(STATE,)g(TYPE)p 764 2159 V 17 w(REQ)166
2245 y FA(MPI)p 251 2245 14 2 v 16 w(REQUEST)p 470 2245
V 18 w(MARK)p 619 2245 V 16 w(COMPLETE)c FB(in)o(v)o(ok)o(es)g(the)g
(user)h(function)g FA(complete)p 1592 2245 V 16 w(fn)g
FB(with)f(input)75 2302 y(argumen)o(ts)d FA(request)i
FB(and)f FA(extra)p 639 2302 V 16 w(state)h FB(whic)o(h)g(are)e(the)h
(argumen)o(ts)e(that)h(w)o(ere)h(passed)g(b)o(y)f(the)h(caller)75
2358 y(of)e FA(MPI)p 212 2358 V 16 w(REQUEST)p 431 2358
V 17 w(INIT)p FB(.)g(This)g(function)h(t)o(ypically)h(cleans)f(up)g
(after)e(the)h(call)h(and)g(ma)o(y)e(put)i(infor-)75
2414 y(mation)g(in)g FA(extra)p 381 2414 V 17 w(state)h
FB(whic)o(h)f(is)h(of)e(in)o(terest)h(to)f(the)h(calling)i(program.)j
(Once)16 b(this)h(call)g(completes,)75 2471 y(a)e(call)h(to)f
FA(MPI)p 337 2471 V 16 w Fz(f)p FA(TEST)p Fz(j)p FA(W)l(AIT)p
Fz(g)f FB(will)j(indicate)g(that)d FA(request)j FB(has)e(completed.)166
2527 y(Once)20 b(the)f(non-blo)q(c)o(king)i(request)e(has)f
(\014nished,)k(it)d(can)g(b)q(e)g(restarted)g(with)g(another)g(call)h
(to)75 2584 y FA(MPI)p 160 2584 V 16 w(ST)l(ART)p FB(.)11
b(Once)g(the)f(user)g(is)h(done)f(with)h(a)f(request,)g(it)h(is)g
(freed)f(using)h(the)f(curren)o(t)g FA(MPI)p 1670 2584
V 16 w(REQUEST)p 1889 2584 V 18 w(FREE)75 2640 y FB(whic)o(h)16
b(uses)g(the)f(callbac)o(k)h(function:)1967 46 y Fq(1)1967
103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328
y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959
836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 87 6
87 95 bop 75 -100 a Fs(6.2.)34 b(GENERALIZED)16 b(REQUESTS)1049
b FB(87)75 49 y Fy(typedef)23 b(int)g(MPI_Request_free_function\(voi)o
(d)e(*extra_state,)h(MPI_Comm)h(comm,)75 106 y(MPI_Request)f
(request\);)166 212 y FB(A)15 b(F)l(ortran)f(declaration)i(for)f(suc)o
(h)g(a)g(function)h(is)g(as)f(follo)o(ws:)75 268 y Fy(INTEGER)23
b(FUNCTION)g(REQUEST)p 652 268 15 2 v 16 w(FREE)p 764
268 V 17 w(FN\(EXTRA)p 973 268 V 16 w(STATE,)g(COMM,)g(REQUEST\))170
325 y(INTEGER)g(EXTRA)p 484 325 V 17 w(STATE,)g(COMM,)g(REQUEST)166
411 y FB(This)15 b(callbac)o(k)g(function)h(can)e(deallo)q(cate)i(the)e
(in)o(ternal)h(data)f(structures)g(of)g(the)h(request)f(whic)o(h)75
468 y(w)o(ere)h(storted)f(in)i FA(extra)p 485 468 14
2 v 17 w(state)p FB(.)166 524 y(The)f FA(cancel)p 378
524 V 18 w(fn)g FB(is)h(de\014ned)g(as:)75 631 y Fy(typedef)23
b(int)g(MPI_Request_cancel_fn\(void)e(*extra_state,)h(MPI_Comm)h(comm,)
75 687 y(MPI_Request)f(request\);)166 793 y FB(A)15 b(F)l(ortran)f
(declaration)i(for)f(suc)o(h)g(a)g(function)h(is)g(as)f(follo)o(ws:)75
850 y Fy(INTEGER)23 b(FUNCTION)g(REQUEST)p 652 850 15
2 v 16 w(CANCEL)p 812 850 V 16 w(FN\(EXTRA)p 1020 850
V 16 w(STATE,)g(COMM,)h(REQUEST\))170 906 y(INTEGER)f(EXTRA)p
484 906 V 17 w(STATE,)g(COMM,)g(TYPE)p 907 906 V 17 w(REQ)166
993 y FB(This)18 b(callbac)o(k)g(function)h(is)e(in)o(v)o(ok)o(ed)h(b)o
(y)f FA(MPI)g FB(when)h(the)g(request)f(is)h(cancelled)i(\(via)d(a)g
(call)i(to)75 1049 y FA(MPI)p 160 1049 14 2 v 16 w(CANCEL)p
FB(\))14 b(or)g(when)g(there)g(is)h(a)f(failure)h(in)g(callbac)o(k)g
(function)g FA(init)p 1351 1049 V 17 w(fn)p FB(,)f FA(sta)o(rt)p
1518 1049 V 17 w(fn)p FB(,)g(or)g FA(complete)p 1824
1049 V 17 w(fn)75 1106 y FB(\(failure)g(is)g(describ)q(ed)i(b)q(elo)o
(w)e(in)g(section)g(6.2.3\).)k(This)c(callbac)o(k)g(function)h(can)e
(deallo)q(cate)i(the)f(in)o(ter-)75 1162 y(nal)h(data)e(structures)h
(and)h(cancel)g(the)f(in)o(ternal)i(messages)d(of)h(the)g(request)h
(\(these)f(can)g(b)q(e)h(accessible)75 1218 y(via)g FA(extra)p
247 1218 V 17 w(state)p FB(\).)166 1275 y(Finally)l(,)26
b(since)d(allo)q(cation)h(of)e(the)h FA(t)o(yp)q(e)p
901 1275 V 17 w(req)g FB(ma)o(y)f(use)h(some)f(system)g(resources,)i
(it)f(can)f(b)q(e)75 1331 y(returned)16 b(to)e(the)h(system)g(with:)75
1482 y FA(MPI)p 160 1482 V 16 w(TYPE)p 293 1482 V 17
w(REQUEST)p 513 1482 V 18 w(FREE\(t)o(yp)q(e)p 738 1482
V 17 w(req\))117 1559 y Fn(INOUT)62 b FA(t)o(yp)q(e)p
401 1559 V 18 w(req)430 b Fn(T)o(yp)q(e)14 b(of)g(request)h(to)f(b)q(e)
g(freed)75 1684 y Fy(int)23 b(MPI)p 245 1684 15 2 v 17
w(Type)p 358 1684 V 17 w(request)p 543 1684 V 16 w(free\(MPI)p
751 1684 V 16 w(TYPE)p 863 1684 V 17 w(REQUEST)g(*type)p
1191 1684 V 16 w(req\))75 1770 y(MPI)p 150 1770 V 17
w(TYPE)p 263 1770 V 16 w(REQUEST)p 447 1770 V 17 w(FREE\(type)p
680 1770 V 16 w(req,)g(IERROR)g(\))170 1827 y(INTEGER)g(TYPE)p
460 1827 V 17 w(REQ,)g(IERROR)166 1913 y FB(It)14 b(is)h(legal)g(to)e
(free)i(a)f FA(t)o(yp)q(e)p 625 1913 14 2 v 17 w(req)g
FB(for)g(whic)o(h)h(an)f(activ)o(e)g FA(request)i FB(still)g(exists.)k
FA(MPI)13 b FB(will)j(deallo)q(ciate)75 1970 y(the)f
FA(t)o(yp)q(e)p 236 1970 V 18 w(req)g FB(when)h(it)f(is)h(safe)f(to)f
(do)i(so.)166 2026 y(One)j(ma)o(y)f(receiv)o(e)i(a)e(non-blo)q(c)o
(king)i(request)f(for)f(whic)o(h)h(the)g(t)o(yp)q(e)g(is)g(unkno)o(wn.)
30 b(T)l(o)18 b(tell)i(the)75 2083 y(t)o(yp)q(e)15 b(of)g(request)g
(one)h(can)f(use:)75 2234 y FA(MPI)p 160 2234 V 16 w(REQUEST)p
379 2234 V 18 w(TYPE\(request,)h(t)o(yp)q(e)p 776 2234
V 18 w(req\))117 2311 y Fn(IN)155 b FA(request)452 b
Fn(request)117 2386 y(OUT)108 b FA(t)o(yp)q(e)p 401 2386
V 18 w(req)430 b Fn(t)o(yp)q(e)15 b(of)e(request)75 2510
y Fy(int)23 b(MPI)p 245 2510 15 2 v 17 w(Request)p 430
2510 V 16 w(type\(MPI)p 638 2510 V 17 w(REQUEST)f(request,)h(MPI)p
1132 2510 V 17 w(TYPE)p 1245 2510 V 17 w(REQUEST)g(type)p
1549 2510 V 16 w(req\))75 2597 y(MPI)p 150 2597 V 17
w(REQUEST)p 335 2597 V 16 w(TYPE\(REQUEST,)f(TYPE)p 781
2597 V 17 w(REQ\))170 2653 y(INTEGER)h(REQUEST,)g(TYPE)p
675 2653 V 17 w(REQ)-32 46 y Fq(1)-32 103 y(2)-32 159
y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667
y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40
1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40
1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40
2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p
eop
%%Page: 88 7
88 96 bop 75 -100 a FB(88)871 b Fs(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)166 49 y Fo(Missing:)166
99 y Fn(It)16 b(w)o(ould)f(b)q(e)i(con)o(v)o(enien)o(t)g(to)f(b)q(e)h
(able)e(to)h(attac)o(h)h(new)f(attributes)h(to)f Fl(status)p
Fn(,)h(so)f(that)g(new)h(op)q(erations)75 149 y(can)c(return)i(new)f
(information)c(with)j(status.)19 b(T)m(o)12 b(do)h(so,)g(w)o(e)h(need)g
(one)f(additional)f(callbac)o(k)g(function,)h(that)g(is)75
199 y(in)o(v)o(ok)o(ed)h(b)o(y)h(W)m(ait/T)m(est)e(calls,)i(with)f(the)
i(extra)p 855 199 13 2 v 15 w(state)g(and)f(the)g(status)h(argumen)o
(ts.)k(This)15 b(callbac)o(k)f(function)75 249 y(transfers)h
(information)10 b(from)i(the)i(extra)p 733 249 V 16 w(state)g(to)g(the)
g(status)g(\(it)f(is)h(only)e(the)j(later)e(that)h(is)f(accessible)i
(to)e(the)75 298 y(user\).)31 b(W)m(e)17 b(also)g(need)i(a)e(new)i
(status)f(\014eld)g(whic)o(h)f(is)h(used)h(for)e(stu\016ng)h
(information)c(generated)20 b(b)o(y)d(user-)75 348 y(de\014ned)c
(requests.)19 b(The)12 b(user)h(pro)o(vides)f(its)g(o)o(wn)f(status)h
(deco)q(ding)g(functions)g(that)g(can)g(access)h(this)f(additional)75
398 y(status)j(\014eld.)j(This)c(could)f(also)h(b)q(e)g(done)g(with)g
(extra)p 938 398 V 15 w(state)h(on)f(the)g(complete)f(call.)75
602 y Fr(6.2.3)49 b(F)o(ailed)17 b(User)e(F)o(unctions)h(and)g
(Cancelling)i(Requests)75 688 y FB(When)i(a)f(callbac)o(k)h(function)h
(fails,)g FA(MPI)d FB(in)o(v)o(ok)o(es)i(callbac)o(k)g(function)h
FA(cancel)p 1471 688 14 2 v 17 w(fn)p FB(.)33 b(When)19
b FA(cancel)p 1823 688 V 18 w(fn)75 745 y FB(returns,)c
FA(MPI)f FB(terminates)h(the)g(request.)20 b(The)15 b
FA(cancel)p 1032 745 V 17 w(fn)g FB(should)h(cancel)h(all)e(in)o
(ternal)h(messages)f(and)75 801 y(free)g(all)h(in)o(ternal)g(data)f
(structures)g(asso)q(ciated)g(with)h(the)f(request.)166
934 y Fo(Missing:)166 983 y Fn(The)h(MPIF)g(has)g(not)g(b)q(een)h(able)
e(to)h(agree)g(on)f(ho)o(w)h(to)f(cancel)i(non-blo)q(c)o(king)d(op)q
(erations.)24 b(This)16 b(needs)75 1033 y(further)d(discussion)g(and)g
(a)f(new)h(prop)q(osal.)k(What)12 b(happ)q(ens)i(with)e(non-blo)q(c)o
(king)f(collectiv)o(e)i(will)e(ha)o(v)o(e)h(impact)75
1083 y(here.)166 1298 y Fo(Discussion:)166 1348 y Fn(Should)h(a)h
(failure)f(in)g Fl(free)p 580 1348 13 2 v 16 w(fn)h Fn(in)o(v)o(ok)o(e)
f Fl(cancel)p 877 1348 V 17 w(fn)p Fn(?)166 1398 y(This)18
b(is)g(not)g(in)g(the)h(curren)o(t)g(prop)q(osal.)31
b(The)19 b("request-free")h(and)e("cancel/failure")f(op)q(erations)i
(are)75 1448 y(curren)o(tly)c(unrelated.)166 1497 y(Can)f
Fl(cancel)p 361 1497 V 16 w(fn)g Fn(fail?)j(If)c(so,)h(what)f(happ)q
(ens?)166 1547 y(I)h(don't)f(ha)o(v)o(e)h(an)o(y)f(brigh)o(t)h(ideas)g
(here.)166 1597 y(Should)f Fl(MPI)g Fn(in)o(v)o(ok)o(e)g
Fl(free)p 585 1597 V 16 w(fn)h Fn(immediately)d(after)j
Fl(cancel)p 1089 1597 V 16 w(fn)g Fn(for)g(all)e(dynamic)h(memory)e
(allo)q(cation?)166 1647 y(This)h(migh)o(t)f(a)o(v)o(oid)g(duplicating)
h(co)q(de)i(for)e(deallo)q(cation)f(in)i(b)q(oth)f(callbac)o(k)g
(functions)h(at)g(the)g(exp)q(ense)i(of)75 1697 y(some)d(\015exibilit)o
(y)g(\(the)i("request-free")h(and)f("cancel/failure")e(op)q(erations)i
(w)o(ould)e(no)h(longer)h(b)q(e)f(orthogonal\).)166 1746
y(Stev)o(e)i(Lederman)e(raised)h(the)h(follo)o(wing)c(p)q(oin)o(ts:)166
1796 y(Should)i(there)i(b)q(e)g(a)e(default)h Fl(cancel)p
748 1796 V 16 w(fn)p Fn(?)k(This)c(w)o(ould)f(allo)o(w)f(a)i(user)h
(who)e(do)q(es)i(not)f(care)g(what)g(happ)q(ens)75 1846
y(during)e(a)h(CANCEL)g(to)f(a)o(v)o(oid)f(writing)h(a)g
Fl(cancel)p 867 1846 V 17 w(fn)p Fn(.)18 b(The)13 b(default)f(b)q(eha)o
(vior)g(migh)o(t)f(b)q(e)i(to)f(call)g Fl(MPI)p 1710
1846 V 15 w(ABORT)p Fn(.)75 1896 y(The)h(coun)o(ter-argumen)o(t)f(here)
h(is)f(that)h(an)o(y)e(user)j(who)e(is)g(using)g(generalized)h
(requests)h(should)e(b)q(e)h(an)f("exp)q(ert")75 1946
y(user)j(an)o(yw)o(a)o(y)m(.)166 2161 y Fo(Discussion:)166
2211 y Fn(Since)21 b(there)h(are)f(lots)g(of)f(p)q(oten)o(tial)g
Fl(comm)p 901 2211 V 13 w(req)i Fn(and)e(only)g(one)h(status)h
(returned)g(b)o(y)f Fl(MPI)p 1702 2211 V 14 w(W)m(AIT)f
Fn(or)75 2261 y Fl(MPI)p 152 2261 V 14 w(TEST)p Fn(,)d(it)f(is)g(not)g
(clear)h(where)h(the)f Fl(status)g Fn(for)f(eac)o(h)h
Fl(comm)p 1151 2261 V 13 w(req)g Fn(is)g(returned.)27
b(F)m(or)16 b(example,)g(ho)o(w)g(can)75 2310 y(y)o(ou)d(do)h(a)g
Fl(MPI)p 323 2310 V 14 w(TEST)p 441 2310 V 15 w(CANCELLED)g
Fn(to)f(see)j(whic)o(h)d Fl(comm)p 1048 2310 V 13 w(req)i
Fn(completed.)75 2515 y Fr(6.2.4)49 b(Example)17 b(of)f(MPI)p
556 2515 15 2 v 18 w(ALLGA)l(THER)75 2601 y FB(In)h(this)h(example)f
(the)g(user)g(is)h(trying)f(to)f(p)q(erform)g(a)h(non-blo)q(c)o(king)i
FA(MPI)p 1392 2601 14 2 v 15 w(ALLGA)l(THER)p FB(.)f(It)f(will)h(b)q(e)
75 2657 y(done)13 b(with)f(a)g(generalized)i(request)e(b)o(y)g(p)q
(erforming)h Fw(p)t Fz(\000)t FB(1)f(wrapp)q(ed)h(shifts)f(of)g(data)f
(\()p Fw(p)h FB(=)h(#)f(pro)q(cesses)1967 46 y Fq(1)1967
103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328
y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959
836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 89 8
89 97 bop 75 -100 a Fs(6.2.)34 b(GENERALIZED)16 b(REQUESTS)1049
b FB(89)75 49 y(in)16 b(the)f(comm)o(unicator\).)166
106 y(More)k(sp)q(eci\014cally)l(,)j(assume)e(eac)o(h)f(pro)q(cess)g(i)
h(has)f(an)h(arra)o(y)e(of)g(size)j Fw(a)p FB([)p Fw(p)p
FB(])d(and)h(its)h(v)m(alue)g(is)g(in)75 162 y Fw(a)p
FB([)p Fw(i)p FB(].)25 b(The)18 b(algorithm)f(w)o(orks)g(b)o(y)g
(accepting)h(data)f(from)g(pro)q(cess)g(\()p Fw(i)11
b Fz(\000)h FB(1\)\045)p Fw(p)17 b FB(and)g(sending)i(data)e(to)75
219 y(\()p Fw(i)10 b FB(+)g(1\)\045)p Fw(p)p FB(.)20
b(A)o(t)15 b(eac)o(h)h(step,)f(pro)q(cess)h Fw(i)f FB(forw)o(ards)f
(the)h(data)g(it)h(receiv)o(ed)h(in)f(the)g(last)f(step.)21
b(Once)16 b(y)o(ou)75 275 y(shift)i Fw(p)11 b Fz(\000)h
FB(1)17 b(times,)g(eac)o(h)h(pro)q(cess)f(has)g(a)g(cop)o(y)g(of)g
(what)g(w)o(as)f(stored)h(on)g(all)h(other)f(pro)q(cesses.)27
b(Use)75 332 y(p)q(ersisten)o(t)17 b(comm)o(unication)f(requests)g(to)g
(send)g(and)h(receiv)o(e)g(the)f(data.)22 b(T)l(o)16
b(accomplish)h(this,)f(ha)o(v)o(e)75 388 y(a)f(separate)f(send)i(and)f
(recv)g(bu\013er.)20 b(Initialize)e(the)d(send)h(bu\013er)f(on)g(pro)q
(cess)h(i)f(to)g(b)q(e)g Fw(a)p FB([)p Fw(i)p FB(].)k(After)c(the)75
444 y(send)h(and)f(recv)h(has)f(o)q(ccurred,)g(cop)o(y)h(the)f(recv)g
(bu\013er)h(in)o(to)f(arra)o(y)f(a)h(and)g(also)h(in)o(to)f(the)g(send)
h(bu\013er)75 501 y(and)f(rep)q(eat)g(the)g(pro)q(cess)g(un)o(til)h
(done.)21 b(\(This)15 b(ma)o(y)f(not)h(b)q(e)g(the)g(normal)g(w)o(a)o
(y)f(to)g(do)h(this)h(but)f(I)g(w)o(an)o(t)75 557 y(to)g(utilize)j
(di\013eren)o(t)e(features)f(for)g(discussion)i(sak)o(e.)k(Most)14
b(p)q(eople)j(w)o(ould)f(probably)g(do)g(a)f(sendrecv)75
614 y(directly)i(in)o(to)e(the)g(correct)g(lo)q(cations)h(in)g(arra)o
(y)e(a.\))166 670 y(The)20 b(Blo)q(c)o(king)i(C)e(co)q(de)g(is)h(b)q
(elo)o(w.)35 b(This)21 b(is)f(to)g(sho)o(w)f(ho)o(w)h(it)g(w)o(ould)h
(b)q(e)g(done)f(no)o(w)g(in)h FA(MPI)75 727 y FB(without)15
b(a)g(non-blo)q(c)o(king)i(request.)75 889 y Fy(MPI_Comm_size\(comm,)k
(&p\);)75 946 y(MPI_Comm_rank\(comm,)g(&i\);)75 1002
y(/*)j(init)f(your)g(location)g(in)h(array)f(*/)75 1059
y(a[i])g(=)h(i;)75 1115 y(/*)g(set)f(initial)g(send)g(value)g(*/)75
1172 y(as)h(=)f(a[i])75 1228 y(/*)h(process)e(to)i(recv)f(from)h(and)f
(persistent)g(request)g(*/)75 1285 y(from)g(=)h(\(i)g(-)f(1\))h(\045)g
(p;)75 1341 y(MPI_Recv_init\(&ar,)d(1,)j(MPI_DOUBLE,)e(from,)i(13,)f
(comm,)g(&req_recv\);)75 1398 y(/*)h(process)e(to)i(send)f(to)h(and)f
(persistent)g(request)g(*/)75 1454 y(to)h(=)f(\(i)h(+)g(1\))f(\045)h
(p;)75 1510 y(MPI_Send_init\(&as,)d(1,)j(MPI_DOUBLE,)e(to,)i(13,)f
(comm,)g(&req_send\);)75 1567 y(/*)h(do)f(send)g(and)h(recv)f(p)h(-)g
(1)f(times)h(*/)75 1623 y(for)f(\(c1)h(=)g(0;)f(c1)h(<)g(p)f(-)h(1;)g
(c1++\))f({)147 1680 y(/*)g(begin)g(persistent)g(send)g(and)h(recv)f
(*/)147 1736 y(MPI_Start\(&req_recv\);)147 1793 y
(MPI_Start\(&req_send\);)147 1849 y(/*)g(when)g(recv)h(complete)f(copy)
g(result)g(in)h(final)f(array)g(a)h(*/)147 1906 y(MPI_Wait\(&req_recv,)
d(&status_recv\);)147 1962 y(a[\(i)i(-)h(1)f(-)h(c1)g(+)f(p\))h(\045)g
(p])f(=)h(ar;)47 b(/*)24 b(add)f(p)h(to)g(make)f(sure)g(mod)h(is)f
(positive)g(*/)147 2019 y(/*)g(when)g(send)h(completes,)e(copy)i(recv)f
(buf)g(into)h(send)f(buf)g(for)h(next)f(round)g(*/)147
2075 y(MPI_Wait\(&req_send,)e(&status_send\);)147 2131
y(as)i(=)h(ar;)75 2188 y(})75 2244 y(/*)g(free)f(up)g(persistent)g
(requests)g(*/)75 2301 y(MPI_Request_free\(&req_recv)o(\);)75
2357 y(MPI_Request_free\(&req_send)o(\);)166 2464 y FB(A)o(t)17
b(the)i(start,)e Fw(a)p FB([)p Fw(i)p FB(])f(=)i Fw(i)g
FB(and)g Fw(a)p FB([)p Fw(j)s FB(])e(=)i(0)g(\()p Fw(j)i
Fz(6)p FB(=)d Fw(i)p FB(\))h(on)g(pro)q(cess)g Fw(i)p
FB(.)29 b(A)o(t)17 b(the)h(end,)i Fw(a)p FB([)p Fw(j)s
FB(])c(=)i Fw(j)i FB(on)e(all)75 2520 y(pro)q(cesses.)166
2576 y(As)d(an)g(example,)h(with)f Fw(p)e FB(=)g(4,)h(pro)q(cess)i(1)f
(do)q(es:)-32 46 y Fq(1)-32 103 y(2)-32 159 y(3)-32 215
y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32
498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724
y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40
1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40
1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40
1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40
2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40
2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 90 9
90 98 bop 75 -100 a FB(90)876 b Fs(CHAPTER)15 b(6.)30
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)p 75 5 364 2 v 74
62 2 57 v 100 45 a FB(c1)p 167 62 V 50 w(send)p 305 62
V 50 w(recv)p 437 62 V 75 63 364 2 v 74 120 2 57 v 110
103 a(0)p 167 120 V 68 w Fw(a)p FB([1])p 305 120 V 62
w Fw(a)p FB([0])p 437 120 V 74 176 V 110 159 a(1)p 167
176 V 68 w Fw(a)p FB([0])p 305 176 V 62 w Fw(a)p FB([3])p
437 176 V 74 233 V 110 216 a(2)p 167 233 V 68 w Fw(a)p
FB([3])p 305 233 V 62 w Fw(a)p FB([2])p 437 233 V 75
234 364 2 v 166 300 a(No)o(w)13 b(to)h(do)g(this)h(with)g(a)e(non-blo)q
(c)o(king)j(generalized)g(request.)k(Create)14 b(a)g(p)q(ersisten)o(t)g
(comm)o(uni-)75 357 y(cation)j(request)g(to)f(send)i(to)e(\()p
Fw(i)11 b FB(+)g(1\)\045)p Fw(p)16 b FB(and)h(a)g(request)g(to)f(recv)h
(from)f(\()p Fw(i)11 b Fz(\000)h FB(1\)\045)p Fw(p)p
FB(.)24 b(The)17 b(algorithm)75 413 y(is)g(demand)f(driv)o(en.)24
b(Begin)17 b(b)o(y)f(starting)g(the)g(p)q(ersisten)o(t)h(recv)f(and)h
(send.)23 b(Eac)o(h)16 b(time)h(one)f(of)g(these)75 469
y(\014nishes,)21 b(y)o(ou)d(w)o(an)o(t)g FA(MPI)g FB(to)g(call)h(y)o
(our)g FA(handler)p 950 469 14 2 v 17 w(fn)p FB(.)30
b(When)20 b(the)e(recv)h(\014nishes)h(y)o(ou)f(can)f(cop)o(y)h(the)75
526 y(data)e(in)o(to)i(the)f(correct)f(lo)q(cation)i(in)g(the)f(arra)o
(y)f(a.)29 b(If)18 b(the)g(send)h(is)g(done,)f(then)h(y)o(ou)f(can)g
(cop)o(y)g(the)75 582 y(recv)g(data)e(in)o(to)i(the)f(send)h(bu\013er.)
26 b(Once)19 b(b)q(oth)e(are)g(done)h(y)o(ou)f(can)h(start)e(a)h(new)g
(send)h(and)g(recv)f(if)75 639 y(y)o(ou)e(ha)o(v)o(e)g(not)f
(\014nished.)166 695 y(Belo)o(w)h(is)h(C)f(co)q(de.)166
752 y(The)g(main)h(routine)g(whic)o(h)g(calls)g(the)f(non-blo)q(c)o
(king)i(op)q(eration)f(w)o(ould)f(do:)75 857 y Fy(/*)24
b(this)f(supplies)g(the)g(init,)g(start,)g(complete,)g(free,)g(and)h
(cancel)f(functions)147 913 y(for)g(the)g(request.)47
b(MPI)24 b(returns)e(in)i(type_req)f(the)g(new)h(request)f(*/)75
970 y(MPI_Request_type_create\(in)o(it_fn,)d(start_fn,)j(complete_fn,)f
(free_fn,)75 1026 y(cancel_fn,)g(&type_req\);)75 1139
y(/*)i(set)f(up)h(the)f(information)f(needed)h(by)h(the)g(calls.)46
b(Thus,)24 b(the)f(extra_state)147 1195 y(is)g(done.)47
b(Need)24 b(to)f(put)h(all)f(the)g(extra_state)g(into)g(some)g(sort)h
(of)f(structure)147 1252 y(associated)f(with)h(extra_state.)g(This)g
(is)h(not)f(shown)g(*/)75 1365 y(/*)h(Initialize)e(the)i(request.)46
b(This)23 b(MPI)h(routine)f(will)g(call)g(the)h(init_fn.)f(*/)75
1421 y(MPI_Request_init\(type_req,)d(extra,)j(comm,)h(&request\);)75
1534 y(/*)g(start)f(the)g(non-blocking)f(operation.)47
b(This)23 b(calls)g(start_fn.)g(*/)75 1591 y(MPI_Start\(&request\);)75
1703 y(/*)h(do)f(other)g(stuff)h(that)f(can)g(go)h(on)f(while)h
(non-blocking)e(operation)h(is)147 1760 y(going.)46 b(This)24
b(is)f(not)h(shown.)f(*/)75 1873 y(/*)h(now)f(wait)g(until)h
(non-blocking)e(operation)g(is)i(done)f(*/)75 1929 y(/*)h(it)f(is)h
(not)f(clear)g(what)h(is)f(put)h(into)f(status)g(*/)75
1986 y(MPI_Wait\(&request,)e(&status\);)75 2099 y(/*)j(done)f(with)g
(request,)g(free)g(up.)48 b(This)23 b(calls)g(free_fn.)g(*/)75
2155 y(MPI_Request_free\(&request\))o(;)75 2268 y(/*)h(done)f(with)g
(type_req,)g(free)g(up)h(*/)75 2324 y(MPI_Type_request_free\(&typ)o
(e_req\);)166 2429 y FB(The)15 b(functions)h(for)f(the)g(generalized)i
(request)e(are:)75 2591 y Fy(init_fn\(type_req,)22 b(*extra,)g(comm,)i
(request\))75 2647 y({)1967 46 y Fq(1)1967 103 y(2)1967
159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385
y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611
y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 91 10
91 99 bop 75 -100 a Fs(6.2.)29 b(GENERALIZED)16 b(REQUESTS)1054
b FB(91)75 49 y Fy(/*)24 b(initialize)e(counters)h(and)g(info)h(*/)75
106 y(MPI_Comm_size\(comm,)d(&extra->p\);)75 162 y
(MPI_Comm_rank\(comm,)g(&extra->i\);)75 219 y(extra->request)h(=)i
(request;)75 275 y(/*)g(process)e(to)i(recv)f(from)h(and)f(persistent)g
(request)g(*/)75 332 y(from)g(=)h(\(extra->i)f(-)g(1\))h(\045)g
(extra->p;)75 388 y(MPI_Recv_init\(&extra->ar,)c(1,)k(MPI_DOUBLE,)e
(from,)i(13,)f(comm,)g(extra,)123 444 y(&extra->req_recv\);)75
501 y(/*)h(process)e(to)i(send)f(to)h(and)f(persistent)g(request)g(*/)
75 557 y(to)h(=)f(\(extra->i)g(+)h(1\))f(\045)h(extra->p;)75
614 y(MPI_Send_init\(&extra->as,)c(1,)k(MPI_DOUBLE,)e(to,)i(13,)f
(comm,)123 670 y(&extra->req_send\);)75 727 y(*)h(completed)e(ok)i(*/)
75 783 y(return)f(MPI_SUCCESS;)75 840 y(})75 1065 y(start_fn\(*extra,)f
(comm,)h(request\))75 1122 y({)75 1178 y(/*)h(init)f(your)g(location)g
(in)h(array)f(*/)75 1235 y(extra->a[extra->i])e(=)j(extra->i;)75
1291 y(/*)g(set)f(initial)g(send)g(value)g(*/)75 1348
y(extra->as)g(=)g(extra->a[extra->i])75 1404 y(/*)h(haven't)e(done)i
(any)f(yet)h(*/)75 1461 y(extra->num_completed)d(=)j(0;)75
1517 y(extra->num_done)e(=)i(0;)75 1630 y(/*)g(begin)f(persistent)f
(recv)i(and)f(send)g(*/)75 1686 y(MPI_Start\(&extra->req_recv)o(\);)75
1743 y(MPI_Post_Handler\(&extra->r)o(eq_recv)o(,)e
(&extra->status_recv,)g(handler_fn\);)75 1799 y
(MPI_Start\(&extra->req_send)o(\);)75 1856 y
(MPI_Post_Handler\(&extra->r)o(eq_send)o(,)g(&extra->status_send,)g
(handler_fn\);)75 1969 y(return)i(MPI_SUCCESS;)75 2025
y(})166 2131 y FB(Eac)o(h)15 b(time)g(a)g(hsend)h(or)f(hrecv)h
(\014nishes,)g(the)f(handler)p 1129 2131 14 2 v 18 w(fn)g(gets)g
(called:)75 2238 y Fy(handler_fn\(extra,)22 b(status,)g(comm\))75
2294 y({)75 2351 y(/*)i(note)f(a)h(send)f(or)h(recv)f(finished)g(*/)75
2407 y(extra->num_completed++;)75 2464 y(/*)h(if)f(num_complete)f(!=)i
(2)g(then)f(not)g(both)h(send)f(and)h(recv)f(done)g(*/)75
2520 y(if)h(\(extra->num_completed)d(!=)i(2\))h({)170
2576 y(return)f(\(MPI_SUCCESS\);)75 2633 y(})-32 46 y
Fq(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836
y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062
y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288
y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514
y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740
y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966
y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191
y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417
y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 92 11
92 100 bop 75 -100 a FB(92)871 b Fs(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 49 y Fy(extra->num_completed)21
b(=)j(0;)f(/*)h(reset)f(*/)75 162 y(/*)h(We)f(don't)g(get)h(here)f
(unless)g(both)g(the)h(send)f(&)h(recv)f(completed)g(*/)75
219 y(/*)h(note)f(another)g(round)g(completed)g(*/)75
275 y(extra->num_done++;)75 388 y(/*)h(copy)f(received)g(data)g(*/)75
444 y(extra->a[\(extra->i)e(-)j(1)g(-)g(extra->num_done)d(+)j
(extra->p\))f(\045)g(extra->p])218 501 y(=)h(extra->ar;)75
557 y(/*)g(see)f(if)h(completely)e(done)h(*/)75 614 y(if)h
(\(extra->num_done)d(==)j(extra->p)f(-)g(1\))h({)170
670 y(/*)g(mark)f(request)g(done)h(*/)170 727 y
(MPI_Request_mark_completed\(&e)o(xtra->re)o(quest\);)75
783 y(})75 840 y(else)f({)170 896 y(/*)h(set)f(data)h(to)f(be)h(sent)f
(*/)170 953 y(extra->as)g(=)h(extra->ar;)170 1065 y(/*)g(begin)f(new)h
(round)f(*/)170 1122 y(MPI_Start\(extra->req_recv\);)170
1178 y(MPI_Start\(extra->req_send\);)170 1235 y
(MPI_Post_Handler\(&extra->req_)o(recv,)e(&extra->status_recv,)g
(handler_fn\);)170 1291 y(MPI_Post_Handler\(&extra->req_)o(send,)g
(&extra->status_send,)g(handler_fn\);)75 1348 y(})75
1461 y(return)i(\(MPI_SUCCESS\);)75 1517 y(})75 1686
y(free_fn\(comm,)f(request,)h(*extra\))75 1743 y({)75
1799 y(/*)h(free)f(up)g(the)h(persistent)e(communications)g(requests)h
(*/)75 1856 y(MPI_Request_free\(&extra->r)o(eq_recv)o(\);)75
1912 y(MPI_Request_free\(&extra->r)o(eq_send)o(\);)75
1969 y(return)g(MPI_SUCCESS;)75 2025 y(})166 2264 y Fo(Missing:)166
2314 y Fn(The)14 b Fl(cancel)p 358 2314 13 2 v 17 w(fn)g
Fn(is)g(not)f(sho)o(wn)h(since)h(it)e(is)h(not)g(clear)g(ho)o(w)g(this)
g(is)f(going)g(to)h(w)o(ork)f(at)h(the)h(curren)o(t)g(time.)1967
46 y Fq(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 93 12
93 101 bop 75 -100 a Fs(6.3.)34 b(A)o(CCESSING)15 b(INF)o(ORMA)l(TION)i
(IN)f FA(MPI)e Fs(OP)l(A)o(QUE)i(OBJECTS)429 b FB(93)75
49 y Ft(6.3)59 b(Accessing)20 b(Info)n(rmation)h(in)e(MPI)h(Opaque)f
(Objects)75 152 y Fr(6.3.1)49 b(Intro)q(duction)75 238
y FB(The)19 b(success)h(of)f FA(MPI-1)g FB(has)g(motiv)m(ated)g(man)o
(y)g(to)q(ol)g(writers)g(to)g(la)o(y)o(er)g(pac)o(k)m(ages)g(on)g(top)g
(of)g FA(MPI)p FB(.)75 295 y(A)i(common)f(t)o(yp)q(e)h(of)g(pac)o(k)m
(age)g(b)q(eing)h(implemen)o(ted)h(is)e(designed)h(to)f(p)q(erform)f
(pro\014ling.)39 b FA(MPI-1)75 351 y FB(included)21 b(a)d(pro\014ling)i
(in)o(terface)f(to)e(allo)o(w)i(for)f(easy)g(la)o(y)o(ering)h(of)f(suc)
o(h)h(a)f(pac)o(k)m(age)g(on)h(top)f(of)g FA(MPI)p FB(.)75
408 y(Though)c(the)g(pro\014ling)h(in)o(terface)g(has)e(b)q(een)j
(successful,)f(pro\014ling)g(library)g(writers)f(ha)o(v)o(e)f(found)i
(that)75 464 y(a)e(n)o(um)o(b)q(er)h(of)e(pieces)j(of)e(information)g
(that)g(they)g(need)h(concerning)h(information)e(inside)i
FA(MPI)e FB(cannot)75 520 y(b)q(e)k(gotten)g(in)g(a)g(p)q(ortable)g(w)o
(a)o(y)l(.)24 b(This)17 b(arises,)g(mostly)l(,)g(as)g(a)f(consequence)i
(of)f(the)g(extensiv)o(e)g(use)g(of)75 577 y(opaque)e(ob)s(jects)g(in)h
FA(MPI)p FB(.)166 633 y(This)d(section)f(adds)g(a)g(n)o(um)o(b)q(er)h
(of)e(new)i(opaque)f(ob)s(ject)f(accessor)h(functions.)20
b(Though)12 b(primarily)75 690 y(motiv)m(ated)j(b)o(y)h(pro\014ling)g
(libraries,)g(these)g(functions)g(ha)o(v)o(e)e(more)h(general)h
(applicabilit)o(y)l(.)189 796 y Fp(R)n(ationale.)189
871 y FB(The)d FA(MPI)g FB(F)l(orum)g(decided)j(to)d(include)i(these)f
(calls)h(instead)f(of)f(the)h(alternativ)o(es.)19 b(An)14
b(alterna-)189 928 y(tiv)o(e)g(to)f(get)g(the)h(request)g(t)o(yp)q(e)g
(in)h(a)e(pro\014ling)j(library)e(is)h(to)e(in)o(tercept)h(ev)o(ery)g
(call)h(that)e(creates)189 984 y(or)i(destro)o(ys)f(a)i(request)f(in)h
FA(MPI)p FB(.)f(The)h(pro\014ling)h(library)f(could)g(log)g(eac)o(h)g
(ev)o(en)o(t)f(and)h(note)f(the)189 1041 y(address)c(of)h(the)g(handle)
h(along)e(with)i(its)f(c)o(haracteristics.)19 b(Then)12
b(whenev)o(er)g(a)f(handle)i(is)g(used)f(in)189 1097
y(a)h(pro\014led)h(call,)h(the)e(address)h(w)o(ould)g(b)q(e)g(logged.)
19 b(By)14 b(matc)o(hing)f(up)h(these)g(ev)o(en)o(ts,)f(the)h(needed)
189 1154 y(information)i(could)h(b)q(e)f(gotten.)21 b(Ho)o(w)o(ev)o
(er,)15 b(the)h FA(MPI)f FB(F)l(orum)h(felt)g(that)f(this)h(mec)o
(hanism)h(w)o(as)189 1210 y(cum)o(b)q(ersome)g(and)g(could)g(substan)o
(tially)h(add)f(to)f(the)h(o)o(v)o(erhead)f(either)i(during)f(the)g
(program)189 1266 y(execution)d(or)f(during)h(p)q(ost)f(pro)q(cessing)h
(of)f(log)g(\014les)h(to)f(matc)o(h)f(up)i(the)f(information)h(for)e
(ev)o(en)o(ts)189 1323 y(in)o(v)o(olving)k(the)f(same)g(request.)20
b(These)15 b(new)g(accessor)g(functions)h(w)o(ere)f(felt)g(to)g(b)q(e)g
(inexp)q(ensiv)o(e)189 1379 y(and)g(ha)o(v)o(e)g(no)g(additional)i(o)o
(v)o(erhead)d(if)i(they)f(are)g(not)g(called.)21 b(\()p
Fp(End)16 b(of)g(r)n(ationale.)p FB(\))189 1486 y Fp(R)n(ationale.)189
1561 y FB(An)i(original)h(goal)f(w)o(as)f(to)h(allo)o(w)g(debuggers)g
(to)g(b)q(e)g(able)h(to)f(p)q(ortably)g(get)g(the)g(information)189
1617 y(of)e(in)o(terest)g(from)g FA(MPI)p FB(.)f(The)i(t)o(yp)q(e)f(of)
g(information)g(desired)i(w)o(as)e(message)f(state,)h(datat)o(yp)q(es,)
189 1674 y(comm)o(uicators,)i(etc.)31 b(Some)19 b(of)f(these)h(items)g
(are)f(di\016cult)i(to)f(giv)o(e)g(since)g FA(MPI)g FB(delib)q(erately)
189 1730 y(do)q(es)c(not)g(sp)q(ecify)i(their)e(meaning,)h(e.g.,)e
(message)h(queues.)20 b(The)c(problem)g(with)f(giving)h(other)189
1787 y(information)c(is)h(that)e(debuggers)i(are)f(often)f(making)i
(information)f(requests)g(at)g(un)o(usual)h(places)189
1843 y(in)g(a)f(programs)g(execution.)20 b(F)l(or)12
b(example,)h(it)g(ma)o(y)f(b)q(e)h(in)h(the)f(middle)h(of)e(an)h
FA(MPI)f FB(op)q(eration)g(or)189 1899 y(in)k(an)g(error)f(state.)21
b(A)o(t)16 b(these)g(p)q(oin)o(ts,)g(it)g(can)g(b)q(e)g(hard)g(or)g
(imp)q(ossible)i(to)d(return)h(the)g(desired)189 1956
y(information.)37 b(The)21 b(alternativ)o(e)g(prop)q(osed)g(w)o(as)f
(to)h(ha)o(v)o(e)f FA(MPI)g FB(k)o(eep)i(shado)o(w)e(information)189
2012 y(whic)o(h)h(the)f(debugger)h(could)g(access.)35
b(The)21 b(problem)g(with)f(this)h(is)g(that)e(it)i(adds)f(o)o(v)o
(erhead)189 2069 y(to)c(program)h(execution)h(ev)o(en)g(when)g(the)f
(information)h(is)g(not)f(used.)27 b(No)17 b(concrete)h(prop)q(osal)189
2125 y(w)o(as)e(giv)o(en)i(that)f(meet)g(all)h(of)f(the)h(desired)g
(goals.)26 b(As)17 b(a)g(result,)h(man)o(y)f(of)g(the)h(features)f
(that)189 2182 y(debuggers)e(ma)o(y)g(ha)o(v)o(e)f(w)o(an)o(ted)h(are)g
(left)g(out)g(of)g(this)h(section.)k(\()p Fp(End)c(of)g(r)n(ationale.)p
FB(\))75 2303 y Fr(6.3.2)49 b(Determining)16 b(Request)f(T)l(yp)q(e)75
2389 y FB(With)f(man)o(y)f(p)q(ossible)i(t)o(yp)q(es)f(for)f(requests,)
h(it)f(w)o(ould)h(b)q(e)h(desirable)g(to)e(b)q(e)h(able)h(to)e(\014nd)h
(out)f(the)h(t)o(yp)q(e)75 2446 y(of)g(a)g(giv)o(en)h(request.)20
b(F)l(or)14 b(example,)h(pro\014lers)g(ma)o(y)f(w)o(an)o(t)f(to)h(tell)
i(if)f(a)f(request)g(b)q(eing)i(w)o(aited)f(on)f(is)h(a)75
2502 y(send)h(or)e(a)h(recv)h(to)e(b)q(e)i(able)g(to)f(prop)q(erly)h
(asso)q(ciate)f(the)g(calls.)-32 46 y Fq(1)-32 103 y(2)-32
159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667
y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40
1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40
1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40
2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p
eop
%%Page: 94 13
94 102 bop 75 -100 a FB(94)871 b Fs(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 49 y FA(MPI)p
160 49 14 2 v 16 w(REQUEST)p 379 49 V 18 w(CLASS\(request,)16
b(class\))117 126 y Fn(IN)155 b FA(request)452 b Fn(An)14
b(MPI)p 1056 126 13 2 v 15 w(Request)117 202 y(OUT)108
b FA(class)500 b Fn(De\014ned)15 b(constan)o(t)f(sp)q(ecifying)g
(\\class")g(of)f(request)75 326 y Fy(int)23 b(MPI)p 245
326 15 2 v 17 w(Request)p 430 326 V 16 w(class\(MPI)p
662 326 V 16 w(Request)g(request,)g(int)h(*class\))75
413 y(MPI)p 150 413 V 17 w(REQUEST)p 335 413 V 16 w(CLASS\(REQUEST,)e
(CLASS\))170 469 y(INTEGER)h(REQUEST,)g(CLASS)166 555
y FB(This)18 b(routine)f(returns)g(the)g(class)g(of)g(an)g
FA(MPI)p 981 555 14 2 v 16 w(Request)i FB(opaque)e(ob)s(ject.)25
b(P)o(ossible)18 b(classes)g(are:)75 612 y Fl(MPI)p 152
612 13 2 v 14 w(SEND)p FB(,)10 b Fl(MPI)p 371 612 V 15
w(RECV)p FB(,)e Fl(MPI)p 589 612 V 14 w(BARRIER)p FB(,)g
Fl(MPI)p 873 612 V 15 w(BCAST)p FB(,)g Fl(MPI)p 1118
612 V 15 w(GA)m(THER)p FB(,)h Fl(MPI)p 1392 612 V 14
w(SCA)m(TTER)p FB(,)g Fl(MPI)p 1686 612 V 14 w(ALL)m(TO)o(ALL)p
FB(,)75 668 y Fl(MPI)p 152 668 V 14 w(REDUCE)p FB(,)j
Fl(MPI)p 429 668 V 15 w(REDUCE)p 607 668 V 13 w(SCA)m(TTER)p
FB(,)g Fl(MPI)p 903 668 V 15 w(SCAN)p FB(,)h Fl(MPI)p
1126 668 V 14 w(A)o(CCEPT)p FB(,)f Fl(MPI)p 1401 668
V 14 w(SP)m(A)-5 b(WN)p FB(,)14 b Fl(MPI)p 1655 668 V
14 w(CONNECT)p FB(,)75 725 y Fl(MPI)p 152 725 V 14 w(GENERALIZE)p
FB(,)g(and)i Fl(MPI)p 603 725 V 14 w(INA)o(CTIVE)p FB(.)166
857 y Fo(Discussion:)166 907 y Fn(Do)j(w)o(e)g(w)o(an)o(t)g(to)g(ha)o
(v)o(e)g Fl(MPI)p 645 907 V 14 w(INA)o(CTIVE)f Fn(or)h(should)g(w)o(e)g
(return)i(the)f(request)h(t)o(yp)q(e?)34 b(Returning)19
b(the)75 957 y(request)i(t)o(yp)q(e)f(w)o(ould)e(giv)o(e)h(information)
d(ab)q(out)j(the)h(t)o(yp)q(e.)35 b(The)19 b(coun)o(ter)i(is)e(that)g
(y)o(ou)g(cannot)g(get)h(more)75 1007 y(information)11
b(out)j(of)f(a)h(inactiv)o(e)f(request.)166 1057 y(Also,)d(do)h(w)o(e)g
(w)o(an)o(t)f(to)g(ha)o(v)o(e)g(the)i(option)d(to)i(return)h
Fl(MPI)p 1061 1057 V 14 w(INV)m(ALID)p Fn(?)d(Th)o(us,)i(the)g(co)q(de)
g(w)o(ould)f(not)h(generate)75 1106 y(an)j(error)h(if)f(a)g(NULL)g
(\(or)g(other)h(in)o(v)n(alid\))d(handle)j(w)o(as)f(giv)o(en.)k(The)d
(negativ)o(e)f(is)g(that)h(lo)q(oking)d(at)i(these)i(sorts)75
1156 y(of)d(handles)h(is)g(probably)f(an)h(error)h(and)f(is)f(suc)o(h)i
(in)e(other)i(places)f(in)g Fl(MPI)p Fn(.)166 1371 y
Fo(Discussion:)166 1421 y Fn(I)f(ha)o(v)o(e)g(listed)h(the)f(ma)r(jor)f
(classes)j(for)d(eac)o(h)i(request:)20 b(is)13 b(this)g(what)g(w)o(e)h
(w)o(an)o(t?)j(F)m(or)c(example,)f(should)h(w)o(e)75
1471 y(simply)e(return)k Fl(MPI)p 411 1471 V 14 w(COLLECTIVE)p
Fn(?)d(This)h(seems)h(simplier,)e(but)h(it)g(seems)h(to)f(me)g(that)g
(pro\014lers)i(often)e(state)75 1521 y(what)j(t)o(yp)q(e)h(of)e
(collectiv)o(e)h(op)q(eration)g(w)o(as)g(p)q(erformed.)25
b(On)16 b(the)h(same)e(lines,)i(I)f(ha)o(v)o(e)g(not)g(included)g(v)n
(arien)o(ts)75 1571 y(of)d(the)h(calls.)k(The)c(\\all")e(and)i(\\v")f
(collectiv)o(e)g(calls)h(and)f(the)h(\\m)o(ultiple")d(and)j(\\indep)q
(enden)o(t")g(in)g(dynamic.)i(I)75 1620 y(w)o(as)f(guessing)h(that)g
(users)h(of)d(these)j(functions)f(are)g(more)e(lik)o(ely)g(to)i(w)o(an)
o(t)f(to)g(kno)o(w)g(the)h(general)g(t)o(yp)q(e.)23 b(This)75
1670 y(reduces)16 b(the)f(n)o(um)o(b)q(er)e(of)g(returned)j(v)n(alues)e
(\(and)g(lik)o(ely)f(cases)i(to)f(in)o(terprete\).)20
b(Ho)o(w)o(ev)o(er,)14 b(it)g(do)q(es)h(reduce)g(the)75
1720 y(information)c(returned.)166 1935 y Fo(Discussion:)166
1985 y Fn(There)h(is)f(already)g(a)f(prop)q(osed)i(routine)f(called)g
(\\MPI)p 1030 1985 V 15 w(Request)p 1189 1985 V 16 w(t)o(yp)q(e",)g
(used)h(for)f(Generalized)g(Requests,)75 2035 y(so)h(this)g(routine's)g
(name)f(is)h(prop)q(osed)h(to)f(b)q(e)g(MPI)p 882 2035
V 15 w(Request)p 1041 2035 V 16 w(class.)18 b(It)12 b(could)g(also)f(b)
q(e)i(MPI)p 1539 2035 V 15 w(Get)p 1621 2035 V 15 w(request)p
1765 2035 V 17 w(class.)75 2085 y(It)h(can)g(certainly)g(b)q(e)h
(argued)f(that)g(there)h(are)f(or)g(will)e(b)q(e)j(more)e(classes)i
(de\014ned)g(than)f(those)g(listed)g(ab)q(o)o(v)o(e.)75
2289 y Fr(6.3.3)49 b(Communicato)o(r)16 b(ID)75 2375
y FB(Pro\014ling)e(libraries)h(often)e(w)o(an)o(t)g(a)g(comm)o
(unicator)g(ID)g(so)g(that)g(they)g(can)h(asso)q(ciate)f(calls)i(that)e
(o)q(ccur)75 2431 y(on)k(the)g(same)f(comm)o(unicator.)25
b(This)17 b(is)h(also)e(useful)i(since)g(pro)q(cesses)g(can)f(ha)o(v)o
(e)f(the)h(same)g(rank)f(in)75 2488 y(di\013eren)o(t)i(comm)o
(unicators)g(or)f(the)i(same)e(pro)q(cess)i(can)f(b)q(e)h(in)o(v)o(olv)
o(ed)g(in)f(di\013eren)o(t)h(comm)o(unicators.)75 2544
y(Th)o(us,)c(the)g(follo)o(wing)h(call)g(is)g(giv)o(en:)1967
46 y Fq(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 95 14
95 103 bop 75 -100 a Fs(6.3.)34 b(A)o(CCESSING)15 b(INF)o(ORMA)l(TION)i
(IN)f FA(MPI)e Fs(OP)l(A)o(QUE)i(OBJECTS)429 b FB(95)75
49 y FA(MPI)p 160 49 14 2 v 16 w(COMMUNICA)l(TOR)p 542
49 V 18 w(ID\(comm,)12 b(id\))117 126 y Fn(IN)155 b FA(comm)470
b Fn(Comm)o(unicator)11 b(to)j(return)h(id)e(of)117 202
y(OUT)108 b FA(id)553 b Fn(id)14 b(of)f(comm)75 326 y
Fy(int)23 b(MPI)p 245 326 15 2 v 17 w(Communicator)p
550 326 V 16 w(id\(MPI)p 710 326 V 16 w(Comm)g(comm,)h(int)f(*id\))75
413 y(MPI)p 150 413 V 17 w(COMMUNICATOR)p 455 413 V 15
w(ID\(COMM,)g(ID\))170 469 y(INTEGER)g(COMM,)h(ID)166
555 y FB(Most)19 b(libraries)j(w)o(ould)f(prefer)g(a)f(globally)i
(unique)g(comm)o(unicator)e(ID.)g(Ho)o(w)o(ev)o(er,)h
FA(MPI)f FB(w)o(as)75 612 y(carefully)15 b(sp)q(eci\014ed)h(so)d(as)g
(to)g(a)o(v)o(oid)h(needing)h(suc)o(h)f(a)f(v)m(alue)i(in)f(an)g
(implemen)o(tation.)21 b(This)14 b(w)o(as)f(done)75 668
y(to)k(reduce)i(p)q(oten)o(tial)f(o)o(v)o(erheads)f(in)i(comm)o
(unicator)e(creation.)28 b(Requiring)20 b(that)d(a)g(comm)o(unicator)75
725 y(ID)d(b)q(e)g(unique)h(could)g(add)f(o)o(v)o(erhead)f(to)g(all)i
(comm)o(unicators)e(in)h(some)g(implemen)o(tations.)20
b(Ho)o(w)o(ev)o(er,)75 781 y(some)e(implemenations)j(ma)o(y)d(already)h
(ha)o(v)o(e)f(a)h(unique)h(ID)f(that)f(can)h(b)q(e)g(giv)o(en)h(for)e
(no)h(additional)75 838 y(cost.)f(T)l(o)11 b(mak)o(e)f(returning)i(the)
f(comm)o(unicator)f(ID)h(c)o(heap)h(and)f(also)g(the)g(most)f(useful,)i
(the)g(additional)75 894 y(function)k(is)g(giv)o(en:)75
1045 y FA(MPI)p 160 1045 14 2 v 16 w(COMMUNICA)l(TOR)p
542 1045 V 18 w(ID)p 606 1045 V 15 w(UNIQUE\(unique\))117
1122 y Fn(OUT)108 b FA(unique)464 b Fn(one)14 b(of)g(de\014ne)h
(constan)o(ts)f(giv)o(en)g(b)q(elo)o(w)75 1247 y Fy(int)23
b(MPI)p 245 1247 15 2 v 17 w(Communicator)p 550 1247
V 16 w(id)p 614 1247 V 17 w(unique\(int)f(*unique\))75
1333 y(MPI)p 150 1333 V 17 w(COMMUNICATOR)p 455 1333
V 15 w(ID)p 518 1333 V 17 w(UNIQUE\(UNIQUE\))170 1390
y(INTEGER)h(UNIQUE)166 1476 y FA(unique)12 b FB(has)e(the)g(v)m(alue)i
Fl(MPI)p 640 1476 13 2 v 14 w(COMM)p 784 1476 V 15 w(ID)p
841 1476 V 14 w(UNIQUE)d FB(if)h(the)g(comm)o(unicator)g(id)h(returned)
g(in)g FA(MPI)p 1779 1476 14 2 v 15 w(COMMUNICA)l(TOR)p
2160 1476 V 18 w(ID)75 1533 y FB(is)16 b(unique.)21 b(Otherwise)16
b(is)g(returns)f Fl(MPI)p 781 1533 13 2 v 14 w(COMM)p
925 1533 V 15 w(ID)p 982 1533 V 14 w(NOT)p 1084 1533
V 16 w(UNIQUE)p FB(.)166 1665 y Fo(Discussion:)166 1715
y Fn(What)c(do)q(es)h(it)g(mean)e(to)i(b)q(e)g(unique.)17
b(Is)12 b(it)f(unique)h(for)f(the)i(en)o(tire)f(run)g(or)f(just)h(at)g
(that)f(momen)o(t)f(in)h(time?)166 1765 y(Should)i(w)o(e)h(ha)o(v)o(e)g
(a)f(CPP)i(v)n(alue)e(so)h(y)o(ou)f(can)h(mak)o(e)e(this)i(c)o(hoice)g
(at)g(compile)e(time?)17 b(I)d(don't)f(recall)h(if)f(w)o(e)75
1815 y(do)h(this)g(an)o(ywhere)g(else.)19 b(\(Standard)14
b(F)m(ortran)g(do)q(es)g(not)g(supp)q(ort)h(this.\))75
2019 y Fr(6.3.4)49 b(Info)o(rmation)17 b(from)e(a)i(Send/Recv)f
(Request)75 2105 y FB(Pro\014ling)d(libraries)h(usually)g(w)o(an)o(t)d
(to)h(log)g(information)h(ab)q(out)f(sends)h(and)f(receiv)o(es)h(when)g
(they)g(b)q(egin)75 2161 y(and/or)i(end.)21 b(This)16
b(information)f(can)h(b)q(e)g(gotten)e(from)h(most)f(send)i(and)g
(receiv)o(e)g(calls.)22 b(Ho)o(w)o(ev)o(er,)14 b(it)75
2218 y(is)k(not)f(a)o(v)m(ailable)j(when)e(a)f(p)q(ersistan)o(t)h
(request)g(is)g(b)q(egun.)28 b(T)l(o)18 b(o)o(v)o(ercome)e(this,)j(the)
e(follo)o(wing)i(calls)75 2274 y(are)c(giv)o(en.)75 2425
y FA(MPI)p 160 2425 14 2 v 16 w(REQUEST)p 379 2425 V
18 w(T)l(A)o(G\(request,)h(tag\))117 2502 y Fn(IN)155
b FA(request)452 b Fn(Send)15 b(or)f(Receiv)o(e)g(request)117
2577 y(OUT)108 b FA(tag)526 b Fn(tag)14 b(asso)q(ciated)g(with)g
(request)75 2702 y Fy(int)23 b(MPI)p 245 2702 15 2 v
17 w(Request)p 430 2702 V 16 w(tag\(MPI)p 614 2702 V
17 w(Request)g(request,)f(int)i(*tag\))-32 46 y Fq(1)-32
103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32
385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611
y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40
1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40
1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40
2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40
2699 y(48)p eop
%%Page: 96 15
96 104 bop 75 -100 a FB(96)871 b Fs(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 49 y Fy(MPI)p
150 49 15 2 v 17 w(REQUEST)p 335 49 V 16 w(TAG\(REQUEST,)22
b(TAG\))170 106 y(INTEGER)h(REQUEST,)g(TAG)75 287 y FA(MPI)p
160 287 14 2 v 16 w(REQUEST)p 379 287 V 18 w(P)l(ARTNER\(request,)17
b(pa)o(rtner\))117 364 y Fn(IN)155 b FA(request)452 b
Fn(Send)15 b(or)f(Receiv)o(e)g(request)117 439 y(OUT)108
b FA(tag)526 b Fn(partner)15 b(asso)q(ciated)g(with)e(request)75
563 y Fy(int)23 b(MPI)p 245 563 15 2 v 17 w(Request)p
430 563 V 16 w(partner\(MPI)p 710 563 V 16 w(Request)g(request,)g(int)g
(*partner\))75 650 y(MPI)p 150 650 V 17 w(REQUEST)p 335
650 V 16 w(PARTNER\(REQUEST,)f(PARTNER\))170 706 y(INTEGER)h(REQUEST,)g
(PARTNER)166 793 y FB(If)15 b FA(request)i FB(is)e(a)g(send)g(then)g
(the)g(destination)h(is)g(returned)f(in)h FA(dest)p FB(.)21
b(If)15 b FA(request)i FB(is)e(a)g(receiv)o(e)h(then)75
849 y(the)f(source)h(is)f(returned)h(in)g FA(pa)o(rtner)p
FB(.)75 1000 y FA(MPI)p 160 1000 14 2 v 16 w(REQUEST)p
379 1000 V 18 w(LENGTH\(request,)g(length\))117 1077
y Fn(IN)155 b FA(request)452 b Fn(Send)15 b(or)f(Receiv)o(e)g(request)
117 1153 y(OUT)108 b FA(tag)526 b Fn(length)14 b(of)f(message)h(asso)q
(ciated)h(with)e(request)75 1277 y Fy(int)23 b(MPI)p
245 1277 15 2 v 17 w(Request)p 430 1277 V 16 w(length\(MPI)p
686 1277 V 16 w(Request)g(request,)g(int)g(*length\))75
1363 y(MPI)p 150 1363 V 17 w(REQUEST)p 335 1363 V 16
w(LENGTH\(REQUEST,)f(LENGTH\))170 1420 y(INTEGER)h(REQUEST,)g(LENGTH)
166 1506 y FA(length)16 b FB(gets)f(the)g(coun)o(t)g(of)g(datat)o(yp)q
(es)g(asso)q(ciated)g(with)h(the)f(send)h(or)e(receiv)o(e.)166
1639 y Fo(Discussion:)166 1689 y Fn(W)m(e)g(delib)q(erately)i(made)d
(it)i(a)f(function)h(call)f(to)h(get)g(coun)o(t)g(from)e(status)j(in)e
Fl(MPI-1)p Fn(.)20 b(This)15 b(w)o(as)g(b)q(ecause,)75
1738 y(unlik)o(e)f(tag)h(and)f(source,)i(it)f(ma)o(y)e(not)i(b)q(e)g
(stored)h(directly)f(but)g(ma)o(y)e(ha)o(v)o(e)i(to)g(b)q(e)g
(computed.)21 b(If)14 b(it)h(has)g(to)f(b)q(e)75 1788
y(computed)h(that)h(an)f(o)o(v)o(erhead)h(will)f(b)q(e)h(added.)24
b(Is)16 b(there)h(a)e(w)o(a)o(y)g(to)g(de\014ne)i(this)f(so)g(this)f
(could)h(b)q(e)g(a)o(v)o(oided?)75 1838 y(Also,)10 b(some)g(ma)o(y)f
(prefer)i(to)g(ha)o(v)o(e)f(the)h(n)o(um)o(b)q(er)f(of)g(b)o(ytes)h
(returned)i(instead)e(of)f(coun)o(t.)17 b(I)10 b(w)o(en)o(t)h(with)f
(coun)o(t)h(since)75 1888 y(this)k(is)f(the)i(basic)f
Fl(MPI)f Fn(unit)g(and)h(also)f(b)q(ecause)i(this)f(is)g(what)f(is)h(a)
o(v)n(ailable)e(in)h(the)h(call)f(for)h(a)f(non-p)q(ersistan)o(t)75
1938 y(send/recv.)166 2153 y Fo(Discussion:)166 2203
y Fn(Pro\014ling)d(libraries)h(requested)j(to)d(get)h(this)f
(information)e(when)i(the)h(send)h(or)e(recv)h(is)g(started)g(-)f(not)g
(when)75 2253 y(it)i(w)o(aited)h(on.)20 b(Th)o(us,)15
b(the)h(three)g(calls)e(ab)q(o)o(v)o(e)h(are)g(really)f(needed)i(for)f
(pro\014ling)e(when)j(a)e(p)q(ersistan)o(t)i(requests)75
2302 y(are)e(started.)19 b(Should)13 b(w)o(e)g(limit)e(the)j(requests)h
(to)e(p)q(ersistan)o(t)h(ones?)19 b(Do)q(es)14 b(this)f(help/h)o(urt)h
(implem)o(en)o(tations?)75 2352 y(If)i(w)o(e)g(do)g(limit)d(this)k
(then)f(w)o(e)h(should)f(probably)f(add)h(information)d(to)j(the)h
Fl(MPI)p 1411 2352 13 2 v 14 w(REQUEST)p 1613 2352 V
14 w(CLASS)f Fn(to)g(sa)o(y)75 2402 y(whether)i(it)f(is)f(p)q(ersistan)
o(t)i(or)f(not.)27 b(\(I)17 b(also)f(think)g(pro\014lers)i(w)o(an)o(t)e
(it)h(at)g(a)f(w)o(ait.)26 b(The)17 b(tag)g(can)g(b)q(e)g(used)h(to)75
2452 y(easily)e(matc)o(h)f(messages.)26 b(Along)16 b(those)h(lines:)24
b(Ho)o(w)16 b(are)h(m)o(ultiple)d(non-blo)q(c)o(king)h(collectiv)o(e)i
(op)q(erations)g(of)75 2502 y(the)d(same)f(t)o(yp)q(e)i(\(example,)d(3)
i(b)q(casts\))h(matc)o(hed)e(without)h(the)g(tag?\))1967
46 y Fq(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 97 16
97 105 bop 75 -100 a Fs(6.3.)34 b(A)o(CCESSING)15 b(INF)o(ORMA)l(TION)i
(IN)f FA(MPI)e Fs(OP)l(A)o(QUE)i(OBJECTS)429 b FB(97)75
49 y Fr(6.3.5)49 b(Accessing)16 b(MPI)h(Datat)o(yp)q(es)75
135 y FB(Pro\014ling)k(libraries)h(and)e(a)g(n)o(um)o(b)q(er)g(of)g
(other)g(applications)i(w)o(an)o(t)d(to)g(b)q(e)i(able)g(to)f
(determine)h(the)75 192 y(comp)q(ostition)f(of)g(an)g
FA(MPI)f FB(datat)o(yp)q(e.)33 b(The)21 b(next)f(three)g(sections)g
(address)g(this)g(need.)35 b(The)20 b(\014rst)75 248
y(returns)c(a)g(c)o(haracter)g(string)g(represen)o(tation.)23
b(The)17 b(next)f(t)o(w)o(o)f(allo)o(w)i(the)f(datat)o(yp)q(e)g(to)g(b)
q(e)h(deco)q(ded)75 304 y(in)f(a)f(more)g(piece)h(meal)g(fashion.)166
437 y Fo(Discussion:)166 487 y Fn(The)e(relationship)g(of)f(these)j
(three)f(prop)q(osals)g(needs)g(to)f(b)q(e)h(w)o(ork)o(ed)f(out.)k(The)
d(authors)f(of)g(the)h(last)e(t)o(w)o(o)75 537 y(ha)o(v)o(e)h(promised)
f(to)g(merge)h(them)f(in)o(to)g(one.)75 738 y FA(Prop)q(osal)i(F)o(o)o
(r)f(User)h(Access)i(T)l(o)e(An)h(MPI)f(Data)g(T)l(yp)q(e)75
918 y(MPI)p 160 918 14 2 v 16 w(GET)p 264 918 V 17 w(CHAR)p
401 918 V 17 w(D)o(A)l(T)l(A)p 533 918 V 17 w(TYPE)g(\(dataT)l(yp)q(e,)
h(cha)o(rDataT)l(yp)q(e\))117 995 y Fn(IN)155 b FA(dataT)l(yp)q(e)412
b Fn(MPI)14 b(Data)g(T)o(yp)q(e)g(\(user)h(de\014ned)g(or)f
(prede\014ned\))117 1069 y(OUT)108 b FA(cha)o(rDataT)l(yp)q(e)322
b Fn(A)14 b(c)o(haracter)h(string)f(represen)o(tation)i(of)d(the)i
(data)e(t)o(yp)q(e)75 1235 y Fy(int)23 b(MPI_Get_char_data_type)e
(\(MPI_Datatype)h(dataType,)h(char)g(charDataType,)743
1291 y(int)h(charDataTypeLen\))75 1404 y(MPI_GET_CHAR_DATA_TYPE)d
(\(DATA_TYPE,)h(CHAR_DATA_TYPE,)g(CHAR_DATA_TYPE_LEN,)f(IERROR\))147
1461 y(INTEGER)h(DATA_TYPE)147 1517 y(CHARACTER*\(CHAR_DATA_TY)o
(PE_LEN\))e(CHAR_DATA_TYPE)147 1574 y(INTEGER)i(CHAR_DATA_TYPE_LEN)147
1630 y(INTEGER)g(IERROR)166 1728 y FB(This)c(routine)g(returns)f(a)g(c)
o(haracter)g(represen)o(tation)h(of)f(an)g(MPI)h(data)e(t)o(yp)q(e.)27
b(This)18 b(represen-)75 1784 y(tation)h(can)g(then)h(b)q(e)g(parsed)f
(b)o(y)g(the)h(user's)e(co)q(de)i(to)f(repro)q(duce)h(or)f(in)o
(terpret)g(the)g(data)g(t)o(yp)q(e)g(as)75 1841 y(is)g(necessary)l(.)30
b(The)18 b(string)h(can,)g(of)e(course,)i(b)q(e)g(sen)o(t)g(to)e
(another)h(pro)q(cess)h(but)f(ma)o(y)g(not)g(b)q(e)h(com-)75
1897 y(pletely)e(p)q(ortable)g(when)f(o\013sets)f(or)h(absolute)g
(addresses)g(are)g(used)g(\(as)f(in)i(STR)o(UCT,)f(HVECTOR,)75
1954 y(HINDEXED,)f(MPI)p 445 1954 V 16 w(UB,)g(MPI)p
644 1954 V 17 w(LB\).)75 2105 y FA(MPI)p 160 2105 V 16
w(D)o(A)l(T)l(A)p 291 2105 V 17 w(TYPE)p 425 2105 V 16
w(FROM)p 569 2105 V 17 w(CHAR)h(\(cha)o(rDataT)l(yp)q(e,)g(dataT)l(yp)q
(e\))117 2182 y Fn(IN)155 b FA(cha)o(rDataT)l(yp)q(e)322
b Fn(A)14 b(c)o(haracter)h(string)f(represen)o(tation)i(of)d(a)h(data)f
(t)o(yp)q(e)117 2256 y(OUT)108 b FA(dataT)l(yp)q(e)412
b Fn(A)14 b(Resulting)f(MPI)i(Data)e(T)o(yp)q(e)75 2421
y Fy(int)23 b(MPI_data_type_from_char)e(\(char)i(*charDataType,)f
(MPI_Datatype)h(dataType\))75 2534 y(MPI_DATA_TYPE_FROM_CHAR)e
(\(CHAR_DATA_TYPE,)g(DATA_TYPE,)i(IERROR\))147 2591 y
(CHARACTER*\(<size>\))e(CHAR_DATA_TYPE)147 2647 y(INTEGER)h(DATA_TYPE)
147 2704 y(INTEGER)g(IERROR)-32 46 y Fq(1)-32 103 y(2)-32
159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667
y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40
1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40
1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40
2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p
eop
%%Page: 98 17
98 106 bop 75 -100 a FB(98)876 b Fs(CHAPTER)15 b(6.)30
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)166 49 y FB(This)14
b(routine)h(creates)f(an)g(MPI)g(data)f(t)o(yp)q(e)h(from)f(a)h(string)
g(description.)21 b(This)14 b(ma)o(y)g(b)q(e)g(a)g(string)75
106 y(that)g(came)i(from)e(MPI)p 489 106 14 2 v 16 w(GET)p
605 106 V 16 w(CHAR)p 755 106 V 17 w(D)o(A)l(T)l(A)p
899 106 V 16 w(TYPE)h(or)g(a)g(string)g(the)g(program)f(created.)75
226 y FA(String)h(F)o(o)o(rmat:)43 b FB(The)16 b(string)f(format)f(con)
o(tains)h(a)g(sequence)h(n)o(um)o(b)q(er)g(follo)o(w)o(ed)f(b)o(y)g(a)g
(colon)h(\(:\))j(and)75 282 y(an)i(op)q(en)g(paren)o(theses.)37
b(The)21 b(top)g(lev)o(el)h(description)h(follo)o(ws)d(ending)j(with)e
(a)f(close)i(paren)o(theses)75 339 y(\(in)c(the)g(BNF)f(b)q(elo)o(w,)h
(this)g(is)g(de\014ned)h(as)e Fw(<)p FB(basicT)o(yp)q(eRep)p
Fw(>)p FB(\).)29 b(A)17 b(sequence)i(of)e(these)h(strings)f(are)75
395 y(concatenated)12 b(together)g(to)f(supply)i(the)g(lo)o(w)o(er)e
(lev)o(el)j(datat)o(yp)q(es)d(\(in)i(the)f(BNF)g(b)q(elo)o(w,)h(this)g
(is)g(de\014ned)75 451 y(as)j Fw(<)p FB(t)o(yp)q(eRep)p
Fw(>)p FB(\).)24 b(Lo)o(w)o(er)15 b(lev)o(el)j(t)o(yp)q(es)e(app)q(ear)
g(in)h(the)f(string)g(suc)o(h)h(that)e(if)i(scanned)f(from)g(righ)o(t)g
(to)75 508 y(left,)e(all)g(t)o(yp)q(es)f(are)g(built)i(b)q(efore)e
(they)h(are)f(used.)20 b(The)13 b(basic)h(pre-de\014ned)h(data)e(t)o
(yp)q(es)g(app)q(ear)h(in)g(the)75 564 y(BNF)d(b)q(elo)o(w)h(as)f
Fw(<)p FB(t)o(yp)q(eDescC)p Fw(>)h FB(for)e(C)h(and)g
Fw(<)p FB(t)o(yp)q(eDescF77)p Fw(>)h FB(for)e(the)h(F)l(ortran)f(77.)18
b(The)12 b(enco)q(ding)g(of)75 621 y(the)k(names)f(are)h(en)o(umerated)
g(in)g(T)l(able)h(I)f(b)q(elo)o(w.)22 b(User)16 b(de\014ned)h(data)e(t)
o(yp)q(es)h(ha)o(v)o(e)f(the)h(co)q(de)g(U)g(\(for)75
677 y(MPI)p 167 677 V 16 w(GET)p 283 677 V 16 w(CHAR)p
433 677 V 17 w(D)o(A)l(T)l(A)p 577 677 V 16 w(TYPE\))k(or)g(T)g(and/or)
f(U)i(\(for)e(MPI)p 1266 677 V 16 w(D)o(A)l(T)l(A)p 1409
677 V 16 w(TYPE)p 1554 677 V 17 w(FR)o(OM)p 1710 677
V 16 w(CHAR\))75 734 y(follo)o(w)o(ed)j(b)o(y)f(their)h(sequence)g(n)o
(um)o(b)q(er)g(\(e.g.)38 b(U3129)20 b(refers)h(to)g(t)o(yp)q(e)g(3129)g
(whic)o(h)h(sho)o(ws)f(up)g(as)75 790 y(3129:\(....\))o(\).)29
b(If)19 b(a)g(user)g(is)h(creating)f(a)g(data)f(t)o(yp)q(e)i(from)e(a)h
(string,)h(the)f(T)g(t)o(yp)q(e)g(is)h(used)f(to)g(de\014ne)75
847 y(temp)q(orary)14 b(subt)o(yp)q(es)i(within)h(a)d(single)j(string.)
75 967 y FA(T)l(emp)q(o)o(ral)k(Uniqueness)k(of)c(Sequence)j(Numb)q
(ers:)46 b FB(The)22 b(sequence)h(n)o(um)o(b)q(er)f(of)f(eac)o(h)h
(data)f(t)o(yp)q(e)g(is)75 1023 y(unique)f(within)h(the)e(pro)q(cess.)
31 b(It)19 b(is)g(unique)i(for)d(all)i(time)f(within)h(the)f(pro)q
(cess)h(as)e(w)o(ell,)j(that)d(is)h(a)75 1079 y(sequence)c(n)o(um)o(b)q
(er)e(is)h(not)f(reused)h(for)f(a)g(new)h(data)e(t)o(yp)q(e)i(ev)o(en)g
(if)g(the)f(old)h(data)f(t)o(yp)q(e)g(has)g(b)q(een)i(freed.)75
1136 y(This)k(temp)q(oral)f(uniqueness)j(allo)o(ws)d(a)g(user)g
(application)i(\(or)e(library\))h(to)e(recognize)j(a)e(previously)75
1192 y(encoun)o(tered)e(t)o(yp)q(e)f(so)g(that)f(reparsing)i(ma)o(y)e
(not)h(b)q(e)h(necessary)l(.)189 1298 y Fp(A)n(dvic)n(e)i(to)i(users.)
61 b FB(Note)19 b(that)f(some)g(F)l(ortran)g(77)g(implemen)o(tations)i
(limit)g(the)f(maxim)o(um)189 1354 y(length)j(of)f(a)h(c)o(harater)f
(string.)39 b(This)23 b(ma)o(y)e(result)h(in)h(the)f(inabilit)o(y)h(to)
f(extract)f(c)o(haracter)189 1410 y(represen)o(tation)15
b(of)g(v)o(ery)g(complex)h(t)o(yp)q(es)f(in)h(F)l(ortran)e(77.)19
b(\()p Fp(End)d(of)g(advic)n(e)g(to)h(users.)p FB(\))166
1598 y Fo(Discussion:)32 b Fn(F)m(or)11 b(MPI)p 587 1598
13 2 v 16 w(D)o(A)m(T)m(A)p 720 1598 V 13 w(TYPE)p 850
1598 V 16 w(FR)o(OM)p 993 1598 V 15 w(CHAR)g(w)o(e)h(ma)o(y)e(w)o(an)o
(t)i(to)g(ha)o(v)o(e)f(an)h(extra)g(parameter)75 1655
y(that)k(returns)h(the)f(sequence)i(n)o(um)o(b)q(er)d(of)g(the)i(new)f
(t)o(yp)q(e)g(as)g(an)f(in)o(teger.)24 b(This)16 b(will)e(b)q(e)i
(useful)g(if)f(the)h(user)h(is)75 1711 y(building)11
b(a)g(hierarc)o(h)o(y)i(of)e(data)h(t)o(yp)q(es.)19 b(W)m(e)11
b(ma)o(y)f(also)i(w)o(an)o(t)g(to)g(ha)o(v)o(e)f(a)h(MPI)p
1308 1711 V 15 w(GET)p 1414 1711 V 15 w(TYPE)p 1546 1711
V 16 w(SEQ)p 1645 1711 V 15 w(NUM)h(to)f(get)75 1768
y(the)k(sequence)i(n)o(um)o(b)q(er)d(of)f(a)i(t)o(yp)q(e)g(\(I)f(b)q
(eliev)o(e)h(a)f(function)h(lik)o(e)e(this)i(ma)o(y)d(ha)o(v)o(e)j(b)q
(een)g(in)f(a)h(v)o(ersion)f(of)g(Da)o(vid)75 1824 y(T)m(a)o(ylor's)d
(\(TMC\))i(prop)q(osal\).)75 2027 y FA(Interlanguage)k(Issues:)46
b FB(The)18 b(basic)f(\(prede\014ned\))i(data)d(t)o(yp)q(es)h(are)g
(returned)h(in)g(the)f(dialect)h(of)f(the)75 2083 y(creating)e
(language.)75 2203 y FA(Implementation)i(Note:)45 b FB(Since)18
b(the)f(implemen)o(tation)h(ma)o(y)e(c)o(ho)q(ose)h(to)f("optimize")h
(a)g(user)g(de\014ned)75 2260 y(data)i(t)o(yp)q(e,)h(the)f(c)o
(haracter)f(represen)o(tation)i(only)g(guaran)o(tees)e(to)h(accurately)
g(represen)o(t)h(the)f(t)o(yp)q(e)75 2316 y(map)e(of)h(the)f(user)h
(de\014ned)h(data)e(t)o(yp)q(e.)27 b(P)o(arsing)17 b(the)h(string)f
(and)h(pro)q(ducing)h(a)e(user)h(de\014ned)h(data)75
2373 y(t)o(yp)q(e)c(will)i(not)e(necessarily)i(result)f(in)g(the)f
(same)g(sequence)h(of)f(calls,)h(but)g(will)h(result)e(in)h(a)f(data)g
(t)o(yp)q(e)75 2429 y(that)f(can)i(b)q(e)g(used)f(in)o(terc)o
(hangeably)i(with)e(the)g(original)i(data)d(t)o(yp)q(e.)934
2534 y Fy(TABLE)23 b(I)719 2591 y(Character)g(representations)123
2704 y(Type)333 b(Character)23 b(representation)1967
46 y Fq(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 99 18
99 107 bop 75 -100 a Fs(6.3.)29 b(A)o(CCESSING)15 b(INF)o(ORMA)l(TION)i
(IN)e FA(MPI)g Fs(OP)l(A)o(QUE)h(OBJECTS)434 b FB(99)123
49 y Fy(-----------------)21 b(----------------------------)o(--)123
106 y(byte)333 b(b)123 162 y(packed)285 b(p)123 219 y(char)333
b(c)123 275 y(unsigned)22 b(char)119 b(uc)123 332 y(short)309
b(s)123 388 y(unsigned)22 b(short)95 b(us)123 444 y(int)357
b(i)123 501 y(unsigned)22 b(int)143 b(ui)123 557 y(long)333
b(l)123 614 y(unsigned)22 b(long)119 b(ul)123 670 y(long)23
b(long)214 b(ll)123 727 y(unsigned)22 b(ll)167 b(ull)123
783 y(float)309 b(f)123 840 y(double)285 b(d)123 896
y(long)23 b(double)166 b(ld)123 953 y(INTEGER)261 b(I)123
1009 y(INTEGER*2)213 b(I2)123 1065 y(INTEGER*4)g(I4)123
1122 y(INTEGER*8)g(I8)123 1178 y(LOGICAL)261 b(L)123
1235 y(REAL)333 b(R)123 1291 y(REAL*4)285 b(R4)123 1348
y(REAL*8)g(R8)123 1404 y(DOUBLE)23 b(PRECISION)46 b(D)123
1461 y(COMPLEX)261 b(C)123 1517 y(DOUBLE)23 b(COMPLEX)94
b(DC)123 1574 y(user)23 b(data)g(type)95 b(Uxxxx)23 b(\(where)g(xxx)h
(is)g(the)f(sequence)g(number)g(of)g(the)h(type\))123
1630 y(temporary)e(type)95 b(Txxxx)23 b(\(where)g(xxx)h(is)g(a)f
(sequence)g(number)g(of)h(the)f(type\))123 1686 y(contiguous)189
b(xxxType)23 b(\(where)g(xxx)h(is)f(positive)g(and)g(Type)h(is)f(any)h
(type\))123 1743 y(vector)285 b(V:Type:count:blocklength:str)o(ide)123
1799 y(hvector)261 b(HV:Type:count:blocklength:st)o(ride)123
1856 y(Indexed)g(X:Type:count:blocklength/dis)o(placeme)o(nt,...)123
1912 y(HIndexed)237 b(HX:Type:count:blocklength/di)o(splacem)o(ent,...)
123 1969 y(Struct)285 b(S:count:Type/count/displacem)o(ent,...)75
2082 y(Examples:)147 2195 y(Type)23 b(threeslice)f(from)i(example)f
(3.29)g(\(assume)g(sizeofreal)f(is)i(4\))147 2307 y
("329:\(HV:U3291:9:1:4000)o(0\)3291:)o(\(HV:U329)o(2:9:1:4)o(00\)3292)o
(:\(V:R:9:)o(1:2\)")147 2420 y(Type)f(ltype)g(from)g(example)g(3.30)147
2533 y("330:\(X:R:100:1/99,101/)o(98,202/)o(97,...,1)o(0000/0\))o(")147
2646 y(Type)g(xpose)g(from)g(example)g(3.31)h(\(assume)f(sizeofreal)f
(is)i(4\))-32 46 y Fq(1)-32 103 y(2)-32 159 y(3)-32 215
y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32
498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724
y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40
1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40
1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40
1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40
2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40
2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 100 19
100 108 bop 75 -100 a FB(100)853 b Fs(CHAPTER)15 b(6.)30
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)147 49 y Fy
("331:\(HV:U3311:100:1:4\))o(3311:\(V)o(:R:100:1)o(:100\)")147
162 y(Type)23 b(Particletype)f(from)h(example)g(3.33)h(\(assume)f
(double)g(alignment,)f(sizeof)h(int)h(4,)1030 219 y(sizeof)f(double)g
(8,)g(base)h(=)f(96\))147 332 y("333:\(S:4:i/1/0,d/6/8,c)o(/7/56,U)o
(B/1/64\)")147 444 y(Type)g(Particletype)f(from)h(example)g(3.34)h
(\(assume)f(addr)g(particle)g(is)g(96,)1030 501 y(double)g(alignment,)f
(sizeof)h(int)h(4,)1030 557 y(sizeof)f(double)g(8\))147
670 y("334:\(S:3:i/1/96,d/6/10)o(4,c/7/1)o(52\)")75 783
y(BNF:)75 896 y(<digit>)g(::=)g(0)h(|)g(1)g(|)f(2)h(|)g(3)f(|)h(4)g(|)g
(5)f(|)h(6)g(|)g(7)f(|)h(8)g(|)f(9)75 1009 y(<Int>)g(::=)h(-<digit>)e
(|)i(<digit>)f(|)h(<Int>)f(<digit>)75 1122 y(<nonNegInt>)f(::=)i
(<digit>)f(|)g(<nonNegInt>)g(<digit>)75 1235 y(<posDigit>)f(::=)i(1)g
(|)f(2)h(|)g(3)g(|)f(4)h(|)g(5)f(|)h(6)g(|)g(7)f(|)h(8)g(|)g(9)75
1348 y(<posInt>)f(::=)g(<posDigit>)g(|)g(<posInt>)g(<digit>)75
1461 y(<typeDescC>)f(::=)i(b)g(|)f(p)h(|)g(c)f(|)h(uc)g(|)f(s)h(|)g(us)
g(|)f(i)h(|)g(ui)f(|)h(l)g(|)552 1517 y(ul)g(|)g(ll)f(|)h(ull)f(|)h(f)g
(|)g(d)f(|)h(ld)75 1630 y(<typeDescF77>)e(::=)i(p)f(|)h(I)g(|)f(L)h(|)g
(R)g(|)f(D)h(|)g(C)g(|)f(DC)h(|)g(Char)f(|)h(I2)f(|)h(I4)g(|)f(I8)h(|)g
(R4)f(|)h(R8)75 1743 y(<typeDescUser>)e(::=)h(U<nonNegInt>)g(|)g
(T<nonNegInt>)75 1856 y(<typeDescBasic>)f(::=)h(<typeDescC>)g(|)g
(<typeDescF77>)f(|)i(<typeDescUser>)75 1969 y(<typeDescAdv>)e(::=)i(UB)
f(|)h(LB)f(|)h(<typeDescBasic>)75 2082 y(<typeDescVec>)e(::=)i
(V:<typeDescBasic>:<posI)o(nt>:<po)o(sInt>:<)o(Int>)75
2195 y(<typeDescHVec>)e(::=)h(HV:<typeDescBasic>:<posInt>:<)o(posInt>)o
(:<Int>)75 2307 y(<typeDescIndex>)f(::=)h(X:<typeDescBasic>:<posInt>:<)
o(posInt>)o(/<Int>)e(|)552 2364 y(<typeDescIndex>,<posInt>/<In)o(t>)75
2477 y(<typeDescHIndex>)h(::=)h(HX:<typeDescBasic>:<posInt>)o(:<posIn)o
(t>/<Int>)d(|)576 2533 y(<typeDescIndex>,<posInt>/<I)o(nt>)75
2646 y(<typeDescStruct>)i(::=)h(S:<posInt>:<typeDescAdv>/<p)o(osInt>/)o
(<Int>)e(|)576 2703 y(<typeDescStruct>,<typeDescA)o(dv>/<po)o(sInt>/<I)
o(nt>)1967 46 y Fq(1)1967 103 y(2)1967 159 y(3)1967 215
y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967
498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959
724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959
949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 101 20
101 109 bop 75 -100 a Fs(6.3.)29 b(A)o(CCESSING)15 b(INF)o(ORMA)l(TION)
i(IN)e FA(MPI)g Fs(OP)l(A)o(QUE)h(OBJECTS)411 b FB(101)75
106 y Fy(<typeDescSimple>)22 b(::=)h(<typeDescBasic>)f(|)i
(<typeDescVec>)e(|)h(<typeDescHVec>)f(|)576 162 y(<typeDescIndex>)g(|)i
(<typeDescHIndex>)d(|)j(<typeDescStruct>)75 275 y(<typeDesc>)e(::=)i
(<posInt>)f(<typeDescSimple>)e(|)j(<typeDescSimple>)75
388 y(<basicTypeRep>)e(::=)h(<nonNegInt>:\(<typeDesc>\))75
501 y(<typeRep>)g(::=)g(<basicTypeRep>)f(|)i(<basicTypeRep>)e
(<typeRep>)75 614 y(<createTypeRep>)g(::=)h(\(<typeDesc>\))f(|)i
(\(<typeDesc>\))e(<typeRep>)75 790 y FA(Prop)q(osal)15
b(#1)g(fo)o(r)f(datat)o(yp)q(e)j(accessing)75 876 y Fy([This)23
b(is)h(a)f(modification)g(of)g(my)h(earlier)f(proposal.)46
b(The)24 b(principal)e(changes)75 933 y(are:)266 989
y(.)i(that)f(it)h(includes)e(both)i(the)f(language)g(independent)f
(notation)h(and)266 1045 y(the)g(FORTRAN)g(notation)g(in)h(addition)e
(to)i(the)f(C)h(notation.)266 1158 y(.)g(that)f(MPI_Type_elements)e
(now)j(contains)f(one)g(additional)g(argument)f(--)266
1215 y('combiner'.)266 1328 y(.)i(that)f(some)g(predefined)g(constants)
f(are)i(specified)e(\(possible)h(values)266 1384 y(for)g('combiner'\).)
75 1497 y(The)g(first)h(two)f(functions)g(mentioned)f(below)i
(\(MPI_Type_count)d(and)75 1554 y(MPI_Type_elements\))g(have)j(now)f
(been)g(implemented.)75 1666 y(Additionally,)f(for)i(testing)e
(purposes)h(I)h(have)f(implemented)g(a)g(function)75
1723 y('print_mpi_datatype')e(which)i(prints)g(MPI)h(datatypes)e(using)
i(a)f(slight)g(variation)75 1779 y(on)h(the)f(BNF)g(syntax)h(given)f
(in)g(Section)g(3.5)h("Proposal)e(of)i(Leslie)f(Hart)g(and)h(Tom)75
1836 y(Henderson")e(of)i(the)g(August)f(7,)g(1995)g(draft)h(of)f
("MPI-2:)g(Extensions)g(to)g(the)75 1892 y(Message-Passing)f
(Interface".)46 b(This)23 b(function)g(will)g(be)h(described)f(in)g(a)
75 1949 y(separate)g(e-mail)g(message.])75 2062 y(There)g(are)h(useful)
f(packages)f(that)i(could)f(be)h(implemented)e(to)h("supplement")g(or)
75 2118 y("fill)g(out")g(MPI)h(which)f(currently)g(require)g(access)g
(to)g(internals)g(of)h(the)f(MPI)75 2175 y(implementation.)75
2288 y(This)g(proposal)g(attempts)g(to)g(specify)g(some)h(of)f(the)h
(MPI)f(interfaces)g(needed)g(to)75 2344 y(implement)g(a)g(portable)g
(version)g(of)h(the)f(MPI-IO)g(draft)g(0.3)h(specification.)75
2400 y(There)f(are)h(three)f(sets)g(of)h(MPI)f(interfaces)g(needed)g
(to)g(implement)g(an)h(MPI-IO)75 2457 y(which)f(is)h(independent)e(of)i
(any)f(specific)g(implementation)f(of)h(MPI:)266 2570
y(.)h(those)f(needed)g(to)g(do)h(any)f(I/O)h(--)g(e.g.,)f(access)g(to)g
(type)h(maps)266 2626 y(.)g(those)f(needed)g(for)g(efficiency)g(--)g
(e.g.)h(knowing)f(when)g(a)h(type)f(is)h(free'd)266 2683
y(.)g(those)f(needed)g(for)g('immediate')g(i/o)g(\(the)g('i')h(calls)f
(in)h(MPI-IO\))-32 46 y Fq(1)-32 103 y(2)-32 159 y(3)-32
215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32
498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724
y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40
1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40
1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40
1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40
2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40
2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 102 21
102 110 bop 75 -100 a FB(102)853 b Fs(CHAPTER)15 b(6.)30
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 106 y Fy(The)23
b(following)g(proposed)g(additions)f(to)i(MPI)g(attempt)e(to)i(address)
f(the)g(first)h(two)75 162 y(of)g(the)f(three)g(categories)g(above.)75
275 y([I)h(believe)e(that)i(Section)f(3.2)g("Generalized)f(Requests")h
(of)h(the)f(August)g(7,)h(1995)75 332 y(draft)f(of)h("MPI-2:)f
(Extensions)f(to)i(the)f(Message-Passing)f(Interface")h(provides)75
388 y(the)g(functionality)g(needed)g(for)g(the)g(third)h(category)e
(above.])75 501 y(MPI)h(Data)h(type)f(accessors:)75 557
y(========================)75 614 y(MPI_TYPE_COUNT\(datatype,)e
(count\))75 670 y(IN)167 b(datatype)23 b(datatype)f(\(handle\))75
727 y(OUT)143 b(count)23 b(number)g(of)h(entries)e(in)i(the)g(datatype)
75 840 y(int)75 896 y(MPI_Type_count\(MPI_Datatyp)o(e)d(datatype,)433
953 y(int)i(*count\))75 1065 y(MPI_TYPE_COUNT\(DATATYPE,)e(COUNT,)i
(IERROR\))170 1122 y(INTEGER)g(DATATYPE,)g(COUNT,)g(IERROR)75
1235 y(Returns)g(in)g('count')g(the)h(number)f(of)g(entries)g(in)h(the)
f(datatype.)75 1291 y([i.e.,)g(as)h(per)f(MPI)h(spec)f(1.0)g(except)g
(for)h(the)f(deletion)g(of)h(the)f(words)75 1348 y("top-level".])75
1461 y(Whether)g(this)g(function)g(returns)g(the)g(number)g(of)h
("top-level")e(entries)h(or)75 1517 y("bottom-level")f(entries)h(is)g
(implementation)f(dependent.)47 b(However,)23 b(it)75
1574 y(must)g(be)h(the)f(same)h(as)f(for)h(MPI_Type_elements)d
(\(below\).)75 1686 y([NOTE:)i(It)h(is)f(preferred)g(that)g
("top-level")g(entries)f(be)i(returned)f(rather)g(than)75
1743 y("bottom-level")f(entries;)h(does)g(anyone)g(know)g(of)h(an)g
(implementation)e(where)h(this)75 1799 y(would)g(be)h(difficult)e(to)i
(do?])75 1912 y(MPI_TYPE_ELEMENTS\(datatype)o(,)d(count,)i(combiner,)g
(array_of_blocklengths,)505 1969 y(array_of_displacements,)d
(array_of_types\))75 2025 y(IN)167 b(datatype)23 b(datatype)f
(\(handle\))75 2082 y(INOUT)95 b(count)23 b(input:)g(how)g(big)h(the)f
(arrays)g(are;)h(output:)75 2138 y(how)f(many)h(elements)f(were)g
(actually)g(filled)g(in)75 2195 y(OUT)143 b(combiner)23
b(top)g(level)g(type)g(combiner)g(\(MPI_BASIC)g(if)75
2251 y(datatype)g(is)g(a)h(basic)f(type;)g(else)h(one)f(of)75
2307 y(MPI_CONTIG,)f(MPI_VECTOR,)h(MPI_HVECTOR,)75 2364
y(MPI_INDEXED,)f(MPI_HINDEXED,)g(MPI_STRUCT)75 2420 y(OUT)143
b(array_of_blocklengths)75 2477 y(OUT)g(array_of_displacements)75
2533 y(OUT)g(array_of_types)75 2646 y(int)75 2703 y
(MPI_Type_elements\(MPI_Data)o(type)21 b(datatype,)1967
46 y Fq(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 103 22
103 111 bop 75 -100 a Fs(6.3.)29 b(A)o(CCESSING)15 b(INF)o(ORMA)l(TION)
i(IN)e FA(MPI)g Fs(OP)l(A)o(QUE)h(OBJECTS)411 b FB(103)505
49 y Fy(int)23 b(*count,)505 106 y(int)g(*combiner,)505
162 y(int)g(*array_of_blocklengths,)505 219 y(MPI_Aint)f
(*array_of_displacements,)505 275 y(MPI_Datatype)g(*array_of_types\))75
388 y(MPI_TYPE_ELEMENTS\(DATATYPE)o(,)f(COUNT,)i(COMBINER,)g
(ARRAY_OF_BLOCKLENGTHS,)505 444 y(ARRAY_OF_DISPLACEMENTS,)d
(ARRAY_OF_TYPES,)i(IERROR\))170 501 y(INTEGER)h(DATATYPE,)g(COUNT,)g
(COMBINER,)g(ARRAY_OF_BLOCKLENGHTS\(*\))o(,)170 557 y
(ARRAY_OF_DISPLACEMENTS\(*\),)e(ARRAY_OF_TYPES\(*\),)g(IERROR)75
670 y(Given)i(an)h(MPI_Datatype)e('datatype',)g(returns)h(at)h(most)f
(the)h(first)f('count')75 727 y(block)g(lengths,)g(displacements,)f
(and)h(types)h(that)f(make)g(it)h(up.)47 b(The)24 b(number)f(of)75
783 y(items)g(filled)g(in)h(is)f(returned)g(in)h('count')f(\(and)g(is)h
(<=)f(the)h(value)f(passed)g(in\).)75 896 y(Whether)g(this)g(function)g
(returns)g(information)f(about)h(the)h("top-level")75
953 y(entries)f(or)g("bottom-level")f(entries)h(is)h(implementation)e
(dependent.)75 1009 y(However,)h(it)g(must)h(be)f(same)h(as)f(for)h
(MPI_Type_count)e(\(above\).)75 1122 y(The)h(intent)g(here)h(is)f(to)h
(allow)f(you)h(to)f(use)h(the)f('count')g(returned)g(by)75
1178 y(MPI_Type_count)f(when)h(malloc'ing)g(the)g(array)g(to)h(pass)f
(to)h(MPI_Type_elements.)75 1291 y(Whether)f(you)g(are)h(done)f
(decomposing)f('datatype')h(after)g(one)h(call)f(to)75
1348 y(MPI_Type_elements)f(or)h(you)h(have)f(to)g(iterate)g(to)h(get)f
(to)h(the)f(fundamental)g(types)75 1404 y(is)h(implementation)e
(dependent)g(--)i(thus)f(a)h(correct)f(program)g(must)g(iterate)g
(until)75 1461 y(nothing)g(is)g(left)h(except)f(fundamental)f(types.)75
1574 y(If)i('count')e(is)i(less)f(than)h(zero,)f(then)g(an)h(error)f
(is)h(returned.)75 1686 y(If)g('count')e(is)i(zero,)f(then)h
('array_of_blocklengths')o(,)d('array_of_displacements',)75
1743 y(and)i('array_of_types')f(are)i(not)f(touched)g(\(and)g(can)h(be)
f(NULL\).)75 1856 y(For)g(each)h(fundamental)e(type)h(\(see)h("Section)
f(3.2.2)g(Message)g(data")g(of)g(MPI)h(Spec)75 1912 y(1.1)f(for)h(a)g
(list\),)f(the)g(type)g(itself)g(is)h(returned.)75 2025
y(The)f(value)h(of)f('combiner')g(is)g(one)h(of)f(the)h(constants:)266
2138 y(MPI_BASIC)266 2195 y(MPI_CONTIG)266 2251 y(MPI_VECTOR)266
2307 y(MPI_HVECTOR)266 2364 y(MPI_INDEXED)266 2420 y(MPI_HINDEXED)266
2477 y(MPI_STRUCT)75 2590 y(Each)f(of)h(the)f(above)h(constants)e(is)i
(a)f(defined)g(integer)g(constant)g(\(C\))h(or)75 2646
y(parameter)f(\(FORTRAN\).)46 b(In)24 b(C,)f(they)g(are)h(usable)f(in)h
(a)f(switch)g(statement.)-32 46 y Fq(1)-32 103 y(2)-32
159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667
y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40
1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40
1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40
2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p
eop
%%Page: 104 23
104 112 bop 75 -100 a FB(104)853 b Fs(CHAPTER)15 b(6.)30
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 49 y Fy(If)24
b('combiner')e(is)i(MPI_BASIC,)e(then)h(the)h(type)f(is)h(returned)f
(\(again\))g(in)g(the)75 106 y(first)g(element)g(of)h
('array_of_types'.)75 219 y(If)g('combiner')e(is)i(MPI_CONTIG,)e(then)h
(the)h(count)f(and)g(oldtype)g(are)h(returned)f(in)75
275 y(the)g(first)h(elements)e(of)i('array_of_blocklengths')d(and)i
('array_of_types')75 332 y(respectively.)75 444 y(If)h('combiner')e(is)
i(MPI_VECTOR)e(or)i(MPI_HVECTOR,)e(then)h(the)h(count)f(is)h(returned)
75 501 y(in)g('count')e(and)i(the)f(blocklength,)g(stride,)g(and)g
(oldtype)g(are)g(returned)g(in)h(the)75 557 y(first)f(elements)g(of)h
('array_of_blocklengths')o(,)d('array_of_displacements',)g(and)75
614 y('array_of_types',)h(respectively.)75 727 y(If)i('combiner')e(is)i
(MPI_INDEXED)e(or)i(MPI_HINDEXED,)e(then)h(the)g(count)h(is)f(returned)
75 783 y(in)h('count',)e(the)i(array_of_blocklengths)d(and)i
(array_of_displacements)e(are)75 840 y(returned)i(in)g(the)h(first)f
('count')g(elements)g(of)g('array_of_blocklengths')e(and)75
896 y('array_of_displacements')g(respectively,)h(and)h(oldtype)g(is)h
(returned)e(in)i(the)75 953 y(first)f(element)g(of)h('array_of_types'.)
75 1065 y(If)g(combiner)e(is)i(MPI_STRUCT,)e(then)i(the)f(count)g(is)h
(returned)f(in)g('count',)g(and)75 1122 y(the)g(array_of_blocklengths,)
e(array_of_displacements,)g(and)i(array_of_types)75 1178
y(are)g(returned)g(in)h(the)f(first)g('count')g(elements)g(of)h
('array_of_blocklengths',)75 1235 y('array_of_displacements',)c(and)k
('array_of_types',)d(respectively.)75 1413 y Fr(6.3.6)49
b(Prop)q(osal)18 b(#2)e(fo)o(r)g(datat)o(yp)q(e)g(accessing)75
1555 y Fy(We)24 b(at)f(NEC)h(are)f(currently)g(working)g(with)g(the)g
(University)g(of)g(Houston)g(on)75 1612 y(a)h(project)f(involving)f
(our)i(Cenju-3)f(machine.)f(U)i(of)g(H)f(is)h(working)f(on)h(a)75
1668 y(UNIX)f(server)g(as)h(well)f(as)h(a)g(parallel)e(file)i(system.)f
(They)g(are)g(in)h(the)75 1725 y(process)f(of)g(implementing)g(MPI-IO.)
g(Out)g(of)h(this)f(work)g(they)h(have)f(defined)75 1781
y(four)g(MPI)h(calls)f(that)g(were)h(needed)f(to)g(handle)g(derived)g
(datatypes.)75 1838 y(They)g(would)g(like)h(to)f(propose)g(that)h
(these)f(new)g(calls)g(be)h(added)f(to)h(the)75 1894
y(MPI-2)f(specification.)75 2007 y(The)g(four)h(functions)e(that)i
(were)f(created)g(begin)g(with)g(MPIDE)h(instead)f(of)g(MPI)75
2063 y(to)h(distinguish)e(them)h(from)h(the)f(standard.)g(\(Our)g(OS)h
(is)f(called)g(Cenju-3/DE\).)75 2233 y(int)g(MPIDE_Type_first)f
(\(MPI_Datatype)g(datatype,)h(int)g(search_mode,)600
2289 y(MPIDE_Type_itor)f(*handle,)h(MPI_Datatype)f(*firsttype,)600
2346 y(int)h(*disp\))147 2515 y(Description)f(-)i(the)f
(MPIDE_Type_{first,next})e(functions)h(can)i(be)g(used)f(for)147
2571 y(^^^^^^^^^^^)70 b(traversing)22 b(a)i(derived)f(datatype)g
("tree".)46 b(The)24 b(first)f(function)481 2628 y(basically)f
(initializes)h(the)g(traversal)g(and)g(returns)g(the)h(first)481
2684 y(datatype)e(and)i(the)f(displacement)g(for)g(the)g(first)h
(datatype)e(which)1967 46 y Fq(1)1967 103 y(2)1967 159
y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967
441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959
667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959
893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 105 24
105 113 bop 75 -100 a Fs(6.3.)29 b(A)o(CCESSING)15 b(INF)o(ORMA)l(TION)
i(IN)e FA(MPI)g Fs(OP)l(A)o(QUE)h(OBJECTS)411 b FB(105)481
49 y Fy(it)23 b(finds)g(in)h(the)f(derived)g(datatype.)147
162 y(Parameters)147 219 y(^^^^^^^^^^)218 275 y(datatype[IN])f(-)i
(datatype)f(to)g(traverse)218 388 y(search_mode[IN])f(-)i(specifies)e
(the)i(mode)f(used)g(for)h(traversing)e(the)i(data-)648
444 y(type)f(tree.)47 b(Possible)23 b(values)g(are)g(MPIDE_DEPTH_FIRST)
648 501 y(and)g(MPIDE_TOPLEVEL_ONLY.)505 557 y(MPIDE_DEPTH_FIRST)e
(causes)i(the)h(traversal)e(to)i(go)f(to)h(the)934 614
y(tree)f(bottom,)g(thus)h(returning)e(only)934 670 y(basic)h(datatypes)
g(and)g(their)934 727 y(corresponding)f(displacements.)505
783 y(MPIDE_TOPLEVEL_ONLY)f(causes)i(a)h(breadth)e(traversal)h(of)h
(the)934 840 y(level)f(directly)g(below)g(the)h(top)f(node.)218
953 y(handle[OUT])g(-)g(this)h(value)f(is)g(returned)g(by)h(the)f
(first)g(function)g(and)h(will)552 1009 y(be)g(used)f(in)h(subsequent)e
(calls)h(to)h(the)f(next)h(function.)218 1122 y(firsttype[OUT])e(-)i
(pointer)f(to)g(datatype)g(found)g(in)h(the)f(derived)g(datatype.)624
1178 y(contains)g(0)g(if)h(there)f(is)h(no)f(tree)h(to)f(traverse.)47
b(For)624 1235 y(example)23 b(if)g('datatype')g(is)g(a)h(basic)f
(datatype)g(then)624 1291 y(there)g(is)h(no)f(tree)h(to)f(traverse.)218
1404 y(disp[OUT])g(-)h(displacement)e(of)h(the)h(datatype)f(returned)f
(in)i('firsttype')75 1517 y(--------------------------)o(-------)o
(--------)o(-------)o(-------)o(--------)o(-------)o(-)75
1630 y(int)f(MPIDE_Type_next)f(\(MPIDE_Type_itor)g(*handle,)h
(MPI_Datatype)f(*nexttype,)576 1686 y(int)i(*disp\))147
1856 y(Description)e(-)i(this)f(function)g(is)g(a)h(continuation)e(of)i
(the)f(MPIDE_Type_first)147 1912 y(^^^^^^^^^^^)70 b(function.)46
b(Each)23 b(time)h(this)f(function)g(is)g(called)h(it)f(will)481
1969 y(return)g(the)g(next)g(datatype)g(in)h(the)f(tree.)47
b(The)24 b(function)481 2025 y(returns)f(a)g(0)h(for)f(nexttype)g(when)
h(the)f(traversal)g(is)g(finished.)147 2138 y(Parameters)147
2195 y(^^^^^^^^^^)266 2251 y(handle[IN])f(-)i("traversal")e(handle)i
(which)f(was)g(returned)g(by)h(a)f(call)h(to)576 2307
y(MPIDE_Type_first.)266 2420 y(nexttype[OUT])e(-)i(pointer)f(to)g(next)
h(datatype)e(found)h(in)h(the)g(datatype)e(tree.)648
2477 y(contains)g(0)i(when)g(tree)f(traversal)f(is)i(complete.)266
2590 y(disp[OUT])f(-)g(displacement)f(of)i(found)f(datatype.)75
2703 y(--------------------------)o(-------)o(--------)o(-------)o
(-------)o(--------)o(-------)o(-)-32 46 y Fq(1)-32 103
y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32
385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611
y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40
1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40
1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40
2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40
2699 y(48)p eop
%%Page: 106 25
106 114 bop 75 -100 a FB(106)848 b Fs(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 106 y Fy(int)23
b(MPIDE_Type_equal)f(\(MPI_Datatype)g(datatype1,)h(MPI_Datatype)f
(datatype2\))147 275 y(Description)g(-)i(compares)e(the)i(the)f(two)h
(datatypes)e(for)i(equality.)46 b(Equality)147 332 y(^^^^^^^^^^^)70
b(is)23 b(defined)g(here)g(as)h(two)g(datatype)e(which)h(have)h
(identical)481 388 y(typemaps.)147 501 y(Parameters)147
557 y(^^^^^^^^^^)266 614 y(datatype{1,2}[IN])d(-)j(two)g(datatypes)e
(to)i(compare.)147 783 y(Return)f(Value)g(-)h(Returns)e(TRUE)i(if)f
(the)h(datatypes)e(are)i(equal,)f(otherwise)g(FALSE.)147
840 y(^^^^^^^^^^^^)75 953 y(--------------------------)o(-------)o
(--------)o(-------)o(-------)o(--------)o(-------)o(--)75
1065 y(int)g(MPIDE_Type_basic)f(\(MPI_Datatype)g(datatype\))147
1235 y(Description)g(-)i(Function)e(determines)h(if)h(datatype)e(is)i
(a)g(basic)f(datatype.)147 1291 y(^^^^^^^^^^^)70 b(Basic)23
b(datatypes)f(are)i(those)f(that)g(are)h(predefined)e(within)481
1348 y(the)h(MPI)h(document,)e(e.g.)i(MPI_DOUBLE)147
1517 y(Parameter)147 1574 y(^^^^^^^^^)242 1630 y(datatype[IN])e(-)i
(datatype)f(to)g(identify)147 1799 y(Return)g(Value)g(-)h(Returns)e
(TRUE)i(if)f(datatype)g(is)h(basic,)f(otherwise)f(FALSE.)147
1856 y(^^^^^^^^^^^^)75 1969 y(--------------------------)o(-------)o
(--------)o(-------)o(-------)o(--------)o(-------)o(--)75
2281 y Ft(6.4)59 b(T)-5 b(rue)20 b(Extext)f(of)h(Datat)n(yp)r(es)75
2383 y FB(Supp)q(ose)i(w)o(e)f(implemen)o(t)h(gather)f(as)f(a)h
(spanning)h(tree)f(implemen)o(ted)i(on)e(top)g(of)f(p)q(oin)o(t-to-p)q
(oin)o(t)75 2439 y(routines.)f(Since)11 b(the)g(recv)f(bu\013er)g(is)h
(only)g(v)m(alid)h(on)e(the)h(ro)q(ot)e(pro)q(cess,)i(one)g(will)g
(need)h(to)d(allo)q(cate)i(some)75 2496 y(temp)q(orary)i(space)i(for)e
(receiving)j(data)d(on)h(in)o(termediate)h(no)q(des.)20
b(The)14 b(di\016cultly)i(is)f(in)f(determining)75 2552
y(the)20 b(size)i(one)e(needs)h(to)f(allo)q(ciate.)37
b(This)20 b(o)q(ccurs)h(since)h(the)e(user)g(can)h(mo)q(dify)g(the)f
(exten)o(t)g(using)75 2609 y(the)i Fl(MPI)p 237 2609
13 2 v 14 w(UB)g FB(and)g Fl(MPI)p 500 2609 V 14 w(LB)g
FB(v)m(alues.)42 b(The)22 b(writer)g(of)f(the)i(gather)e(routine)h
(could)h(determine)h(this)75 2665 y(information)16 b(b)o(y)g(deco)q
(ding)i(the)e(datat)o(yp)q(e.)21 b(Ho)o(w)o(ev)o(er,)15
b(this)i(is)f(more)g(w)o(ork)f(and)h(more)g(painful)h(than)1967
46 y Fq(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 107 26
107 115 bop 75 -100 a Fs(6.5.)34 b(CA)o(CHEING)15 b(ON)g(MPI)h(HANDLES)
951 b FB(107)75 49 y(desired.)21 b(Th)o(us,)15 b(a)g(new)g(function)h
(is)g(pro)o(vided)g(whic)o(h)g(returns)f(the)g(true)g(exten)o(t)g(of)g
(the)g(datat)o(yp)q(e.)75 200 y FA(MPI)p 160 200 14 2
v 16 w(TRUE)p 294 200 V 17 w(EXTENT\(datat)o(yp)q(e,)i(size\))117
277 y Fn(IN)155 b FA(datat)o(yp)q(e)424 b Fn(datat)o(yp)q(e)14
b(to)g(get)g(true)h(exten)o(t)g(of)117 353 y(OUT)108
b FA(size)519 b Fn(true)15 b(exten)o(t)g(of)e(datat)o(yp)q(e)75
477 y Fy(int)23 b(MPI)p 245 477 15 2 v 17 w(True)p 358
477 V 17 w(extent\(MPI)p 615 477 V 16 w(Datatype)f(datatype,)h(MPI)p
1156 477 V 17 w(Aint)g(size\))75 563 y(MPI)p 150 563
V 17 w(TRUE)p 263 563 V 16 w(EXTENT\(DATATYPE,)f(SIZE\))170
620 y(INTEGER)h(DATATYPE,)g(SIZE)166 782 y Fo(Missing:)166
832 y Fn(The)14 b(issue)h(of)e(the)i(p)q(ossible)f(fudges)g(b)q(et)o(w)
o(een)h(the)g(size)f(returned)i(and)e(the)g(amoun)o(t)e(needed)j(to)f
(hold)f(the)75 882 y(datat)o(yp)q(e)h(w)o(as)g(men)o(tioned)f(at)g(the)
i(Octob)q(er)g(meeting.)i(Can)d(someone)f(remind)g(me)g(of)g(the)i
(details?)75 1108 y Ft(6.5)59 b(Cacheing)20 b(on)g(MPI)g(Handles)75
1285 y Fo(Missing:)166 1335 y Fn(A)o(t)14 b(the)h(August)f(meeting)g
(it)f(w)o(as)h(p)q(oin)o(ted)g(out)h(that)f(the)g(calls)g(in)g(F)m
(ortran)g(will)e(need)k(a)d(handle)h(t)o(yp)q(e)h(to)75
1385 y(b)q(e)g(able)e(to)h(tell)f(what)h(it)g(is.)166
1524 y FB(The)19 b FA(MPI)f FB(standard)g(pro)o(vides)h(a)f(\\cac)o
(hing")h(facilit)o(y)h(that)e(allo)o(ws)g(an)h(application)h(to)e
(attac)o(h)75 1581 y(arbitrary)12 b(pieces)j(of)d(information,)h
(called)i(attributes,)d(to)h(comm)o(unicators.)18 b(Pro)o(viding)c(cac)
o(heing)g(for)75 1637 y(other)h FA(MPI)f FB(handles)j(pro)o(vides)e(a)g
(w)o(a)o(y)g(for)f(attac)o(hing)h(information)g(to)g(these)g(handles)i
(as)d(w)o(ell.)75 1759 y Fr(6.5.1)49 b(F)o(unctions)75
1845 y FB(MPI-2)13 b(pro)o(vides)h(general)h(cac)o(heing)f(functions)g
(that)f(allo)o(w)h(attributes)f(to)g(b)q(e)h(cac)o(hed)h(on)e(the)h
(follo)o(w-)75 1901 y(ing)i(t)o(yp)q(es)f(MPI)g(handles:)143
1995 y Fz(\017)23 b Fy(MPI)p 264 1995 V 16 w(COMM)143
2089 y Fz(\017)g Fy(MPI)p 264 2089 V 16 w(DATATYPE)143
2182 y Fz(\017)g Fy(MPI)p 264 2182 V 16 w(GROUP)166 2352
y Fo(Missing:)166 2402 y Fn(W)m(e)13 b(ha)o(v)o(e)h(not)g(y)o(et)g
(determined)g(whic)o(h)g(of)f(the)i(new)f(handles)g(w)o(e)g(ma)o(y)e
(also)h(include)189 2591 y Fp(R)n(ationale.)49 b FB(It)17
b(w)o(as)f(decided)i(not)f(to)f(allo)o(w)h(cac)o(hing)g(on)g(all)g
(handles)h(since)g(it)f(could)h(ha)o(v)o(e)e(a)189 2647
y(p)q(erformance)f(impact.)20 b(F)l(or)14 b(example,)i
FA(MPI)p 975 2647 14 2 v 16 w(REQUEST)g FB(are)f(created)g(and)g
(destro)o(y)o(ed)g(in)h(time)189 2704 y(critical)g(sections)g(of)f(co)q
(de.)20 b(\()p Fp(End)c(of)g(r)n(ationale.)p FB(\))-32
46 y Fq(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272
y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 108 27
108 116 bop 75 -100 a FB(108)848 b Fs(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)166 49 y FB(A)11
b Fy(keyval)g FB(created)g(b)o(y)h(the)f FA(MPI)g FB(function)h
FA(MPI)p 1007 49 14 2 v 16 w(KEYV)l(AL)p 1193 49 V 17
w(CREA)l(TE)g FB(ma)o(y)f(b)q(e)h(used)g(for)f(cac)o(heing)75
106 y(on)19 b(an)o(y)g(of)f(the)i(ab)q(o)o(v)o(e)e(MPI)h(handles.)33
b(The)19 b(cop)o(y)g(and)h(delete)g(functions)g(ha)o(v)o(e)e(sligh)o
(tly)j(di\013eren)o(t)75 162 y(signatures.)75 256 y Fy(typedef)i(int)g
(MPI_Copy_function\(void)e(*handle,)i(int)g(keyval,)791
312 y(void)g(*extra_state,)f(void)i(*attribute_val_in,)791
369 y(void)f(*attribute_val_out,)e(int)j(*flag\))75 482
y(typedef)f(int)g(MPI_Delete_function\(void)e(*handle,)i(int)g(keyval,)
839 538 y(void)g(*attribute_val,)f(void)h(*extra_state\);)75
708 y(SUBROUTINE)f(COPY_FUNCTION\(HANDLE,)f(KEYVAL,)i(EXTRA_STATE,)672
764 y(ATTRIBUTE_VAL_IN,)e(ATTRIBUTE_VAL_OUT,)h(FLAG,)h(IERR\))75
821 y(INTEGER)g(HANDLE,)g(KEYVAL,)g(EXTRA_STATE,)f(ATTRIBUTE_VAL_IN,)75
933 y(SUBROUTINE)g(DELETE_FUNCTION\(HANDLE,)f(KEYVAL,)i(ATTRIBUTE_VAL,)
f(EXTRA_STATE,)g(IERR\))75 990 y(INTEGER)h(HANDLE,)g(KEYVAL,)g
(ATTRIBUTE_VAL,)f(EXTRA_STATE,)g(IERR)166 1084 y FB(The)f(follo)o(wing)
g(functions)h(con)o(tin)o(ue)f(to)g(w)o(ork)e(with)i(comm)o(unicators,)
h(with)f(only)g(a)g(sligh)o(tly)75 1140 y(di\013eren)o(t)15
b(formal)f(argumen)o(t)g(list)i(\(the)e Fy(MPI)p 845
1140 15 2 v 17 w(COMM)g FB(argumen)o(t)g(is)h(replaced)h(b)o(y)e(an)o
(y)h(of)f(the)h(previously)75 1197 y(listed)h(t)o(yp)q(es)g(of)e(MPI)i
(handles\).)75 1348 y FA(MPI)p 160 1348 14 2 v 16 w(A)l(TTR)p
293 1348 V 17 w(PUT\(handle,)g(k)o(eyval,)f(attribute)p
877 1348 V 18 w(val\))117 1425 y Fn(IN)155 b FA(handle)465
b Fn(handle)14 b(to)g(whic)o(h)f(attribute)i(will)d(b)q(e)j(attac)o
(hed)f(\(handle\))117 1500 y(IN)155 b FA(k)o(eyval)471
b Fn(k)o(ey)14 b(v)n(alue,)f(as)h(returned)h(b)o(y)905
1556 y Fl(MPI)p 982 1556 13 2 v 15 w(KEYV)m(AL)p 1154
1556 V 13 w(CREA)m(TE)d Fn(\(in)o(teger\))117 1631 y(IN)155
b FA(attribute)p 484 1631 14 2 v 18 w(val)352 b Fn(attribute)15
b(v)n(alue)75 1850 y FA(MPI)p 160 1850 V 16 w(A)l(TTR)p
293 1850 V 17 w(GET\(handle,)h(k)o(eyval,)f(attribute)p
874 1850 V 18 w(val,)f(\015ag\))117 1928 y Fn(IN)155
b FA(handle)465 b Fn(handle)14 b(to)g(whic)o(h)f(attribute)i(is)f
(attac)o(hed)g(\(handle\))117 2003 y(IN)155 b FA(k)o(eyval)471
b Fn(k)o(ey)14 b(v)n(alue)f(\(in)o(teger\))117 2078 y(OUT)108
b FA(attribute)p 484 2078 V 18 w(val)352 b Fn(attribute)15
b(v)n(alue,)d(unless)j Fl(\015ag)f Fn(=)g(false)117 2153
y(OUT)108 b FA(\015ag)518 b Fm(true)14 b Fn(if)h(an)f(attribute)i(v)n
(alue)e(w)o(as)h(extracted;)i Fm(false)d Fn(if)g(no)905
2210 y(attribute)h(is)e(asso)q(ciated)i(with)f(the)g(k)o(ey)75
2428 y FA(MPI)p 160 2428 V 16 w(A)l(TTR)p 293 2428 V
17 w(DELETE\(handle,)i(k)o(eyval\))117 2506 y Fn(IN)155
b FA(handle)465 b Fn(handle)14 b(to)g(whic)o(h)f(attribute)i(is)f
(attac)o(hed)g(\(handle\))117 2581 y(IN)155 b FA(k)o(eyval)471
b Fn(The)15 b(k)o(ey)e(v)n(alue)h(of)f(the)i(deleted)f(attribute)h
(\(in)o(teger\))1967 46 y Fq(1)1967 103 y(2)1967 159
y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967
441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959
667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959
893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 109 28
109 117 bop 75 -100 a Fs(6.5.)29 b(CA)o(CHEING)15 b(ON)g(MPI)h(HANDLES)
956 b FB(109)75 49 y Fr(6.5.2)49 b(Example)75 135 y FB(An)15
b(\(incomplete\))h(example)f(of)f(ho)o(w)g(one)h(migh)o(t)g(use)g
(these)f(cac)o(heing)i(functions)f(to)f(prin)o(t)h(out)g(infor-)75
192 y(mation)g(ab)q(out)g(the)g(request)h(b)q(eing)g(w)o(aited)f(on.)
166 324 y Fo(Missing:)166 374 y Fn(This)i(example)f(cac)o(hes)i(on)f(a)
g(t)o(yp)q(e)g(of)g(handle)g(that)g(is)g(not)g(allo)o(w)o(ed.)26
b(It)17 b(is)g(an)g(artifact)f(of)h(a)g(previous)75 424
y(draft.)h(It)c(will)e(b)q(e)j(\014xed)f(up)g(once)h(the)f(prop)q
(osals)g(are)g(settled.)75 613 y Fy(#define)23 b(MPI_SSEND_TYPE)f(0)75
669 y(#define)h(MPI_RSEND_TYPE)f(1)75 725 y(#define)h(MPI_SEND_TYPE)46
b(2)75 838 y(typedef)23 b(struct)g(_mpi_send_info)f({)170
895 y(int)48 b(type;)170 951 y(int)g(dest;)170 1008 y(int)g(tag;)170
1064 y(MPI_datatype_info)22 b(*dtype;)170 1121 y(int)48
b(context;)75 1177 y(})24 b(mpi_send_info;)75 1290 y(int)f
(send_keyval,)g(datatype_keyval;)75 1403 y(/*)h(Profiling)e(functions)h
(*/)75 1459 y(int)g(MPI_Init\(argc,)f(argv\))75 1516
y(int)h(*argc;)75 1572 y(char)g(***argv;)75 1629 y({)147
1742 y(MPI_Keyval_create)e(\()j(MPI_NULL_COPY_FN,)d(MPI_NULL_DEL_FN,)
624 1798 y(&send_keyval,)h(NULL)h(\);)147 1855 y(MPI_Keyval_create)e
(\()j(MPI_NULL_COPY_FN,)d(MPI_NULL_DEL_FN,)624 1911 y
(&datatype_keyval,)g(NULL)j(\);)147 2024 y(PMPI_Init\(argc,argv\);)147
2137 y(/*)f(store)g(datatype)g(info)g(for)h(predefined)e(types)i(*/)75
2193 y(})75 2363 y(int)f(MPI_Isend\(buf,)f(count,)h(type,)h(dest,)f
(tag,)g(comm,)g(req\))75 2419 y(void)g(*buf;)75 2476
y(int)g(count,)g(dest,)h(tag;)75 2532 y(MPI_Datatype)e(type;)75
2589 y(MPI_Comm)h(comm;)75 2645 y(MPI_Request)f(*req;)75
2701 y({)-32 46 y Fq(1)-32 103 y(2)-32 159 y(3)-32 215
y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32
498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724
y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40
1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40
1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40
1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40
2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40
2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 110 29
110 118 bop 75 -100 a FB(110)848 b Fs(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)170 49 y Fy(mpi_datatype_info)22
b(*dtype;)170 106 y(int)i(id,)f(err;)170 162 y(mpi_send_info)g(*sinfo)g
(=)g(\(mpi_send_info)f(*\)malloc\(sizeof\(mpi_send_inf)o(o\)\);)170
275 y(MPI_Attr_get)h(\()g(type,)h(datatype_keyval,)d(\(void)i
(**\)&dtype,)g(&flag)g(\);)170 388 y(mpi_send_info->type)f(=)h
(MPI_SEND_TYPE;)170 444 y(mpi_send_info->dtype)f(=)h(dtype;)170
501 y(mpi_send_info->dest)f(=)h(dest;)170 557 y(mpi_send_info->tag)f(=)
i(tag;)170 614 y(MPI_Comm_id)f(\()h(comm,)f(&id)g(\);)170
670 y(mpi_send_info->context)e(=)j(id;)170 783 y(err)g(=)g
(PMPI_Isend\(buf,count,)d(type,)i(dest,)g(tag,)g(comm,)g(req\);)170
896 y(MPI_Attr_put)g(\()g(req,)h(send_keyval,)e(\(void)h(*\)sinfo\);)
170 1009 y(return)g(err;)75 1065 y(})75 1235 y(int)g(MPI_Wait)g(\()h
(req)f(\))75 1291 y(MPI_Request)f(*req;)75 1348 y({)170
1404 y(mpi_send_info)h(*sinfo;)170 1517 y(MPI_Attr_get)g(\()g(req,)h
(send_keyval,)e(\(void)h(**\)&sinfo,)g(&flag)g(\);)170
1574 y(if)h(\(flag\))242 1630 y(printf\("Completing)d(send:)47
b(tag=\045d,)23 b(dest=\045d\\n",sinfo->tag,sinfo->)o(dest\);)170
1686 y(return)g(PMPI_Wait\(req\);)75 1743 y(})1967 46
y Fq(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272
y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959
554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959
780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959
1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959
1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959
1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959
1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959
1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959
2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959
2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959
2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF