new external interfaces draft

Steve Huss-Lederman (lederman@super.org)
Wed, 8 Nov 1995 12:20:40 -0500

Hello,

Attaced is the postscript of the latest external interfaces chapter.
PLEASE read it over. I want to send it out to the whole group soon.
This is our last shot before it goes public for SC95. The major
changes from the draft at the October meeting are:

- generalized requests was cleaned up and now use HWAIT.
- added mechanism to determine request type
- updated Datatype accessor section
- removed datatype compacting function and added function to get true
extent of datatype
- modified caching proposal to limit handles allowed
- removed handle callback functions

Here are the main items that we still need to decide:

- When you init a generalized request you give a comm. Is it
collective? Is communication limited to this comm?
- What are we going to do with status for generalized requests?
- what does cancel/failure do? are we allowing a cancel?
- is the true extent of a datatype what everyone needs? someone
mentioned about fudges in this value. can someone clarify?
- in fortran the caching calls need to know what type of handle they
got
- the datatype accessor section still needs to be merged and rewritten
by the authors
- the profiling and debugging section needs to be written.

Steve
----------------------------------------------------------------------
%!PS-Adobe-2.0
%%Creator: dvips 5.54 Copyright 1986, 1994 Radical Eye Software
%%Title: temp.dvi
%%CreationDate: Wed Nov 8 11:36:01 1995
%%Pages: 25
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%EndComments
%DVIPSCommandLine: dvips -o temp.ps temp
%DVIPSParameters: dpi=300, comments removed
%DVIPSSource: TeX output 1995.11.08:1135
%%BeginProcSet: tex.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 4 get round 4 exch put dup dup 5 get
round 5 exch put 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 add]{
ch-image}imagemask restore}B /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 showpage
userdict /eop-hook known{eop-hook}if}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
TeXDict begin 40258431 52099146 1000 300 300
(/tmp_mnt/net/u01/src/lederman/mpi2-std/Editor/temp.dvi)
@start /Fa 8 118 df<1FE0007FF8007FFC00783C00301E00000E00000E0003FE001FFE
007E0E00F00E00E00E00E00E00F01E00F83E007FFFE03FE7E00F83E013127E9116>97
D<03E00FF81FFC3C1E780E7007E007FFFFFFFFFFFFE000E000700778073C0F1FFE0FFC03
F010127D9116>101 D<001F00007F8000FF8001E78001C30001C00001C0007FFF00FFFF
00FFFF0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
0001C0003FFE007FFF003FFE0011197F9816>I<FFC000FFC000FFC00001C00001C00001
C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
C00001C00001C00001C00001C000FFFF80FFFF80FFFF8011197E9816>108
D<FF0FC0FF3FE0FF7FE007F04007E00007C0000780000780000700000700000700000700
00070000070000070000FFFC00FFFC00FFFC0013127F9116>114
D<0FEC3FFC7FFCF03CE01CE01CF0007F801FF007FC003EE00EE00EF00EF81EFFFCFFF8C7
E00F127D9116>I<0300000700000700000700000700007FFF00FFFF00FFFF0007000007
000007000007000007000007000007000007010007038007038007078007878003FF0003
FE0000F80011177F9616>I<7E1F80FE3F807E1F800E03800E03800E03800E03800E0380
0E03800E03800E03800E03800E03800E07800F0F800FFFF007FFF803E3F01512809116>
I E /Fb 18 119 df<70F8F8F0E005057B840E>46 D<0000020000000600000006000000
0E0000001E0000001E0000003F0000002F0000004F0000004F0000008F0000010F000001
0F0000020F0000020F0000040F00000C0F0000080F0000100F0000100F0000200F80003F
FF800040078000C007800080078001000780010007800200078002000780060007801E00
0F80FF807FF81D207E9F22>65 D<01FFFFFE001E001C001E000C001E0004001E0004003C
0004003C0004003C0004003C00040078080800780800007808000078180000F0300000FF
F00000F0300000F0300001E0200001E0200001E0200001E0001003C0002003C0002003C0
004003C00040078000800780018007800100078007000F001F00FFFFFE001F1F7D9E1F>
69 D<01FFFF00001E03C0001E00E0001E0070001E0078003C0078003C0078003C007800
3C0078007800F0007800F0007801E0007801C000F0070000F01E0000FFF00000F0380001
E01C0001E01E0001E00E0001E00F0003C01E0003C01E0003C01E0003C01E0007803C0007
803C0807803C0807803C100F801C10FFF00C20000007C01D207D9E21>82
D<00F1800389C00707800E03801C03803C0380380700780700780700780700F00E00F00E
00F00E00F00E20F01C40F01C40703C40705C40308C800F070013147C9317>97
D<007E0001C1000300800E07801E07801C07003C0200780000780000780000F00000F000
00F00000F00000F0000070010070020030040018380007C00011147C9315>99
D<0000780003F80000700000700000700000700000E00000E00000E00000E00001C00001
C000F1C00389C00707800E03801C03803C0380380700780700780700780700F00E00F00E
00F00E00F00E20F01C40F01C40703C40705C40308C800F070015207C9F17>I<007C01C2
07010E011C013C013802780C7BF07C00F000F000F000F0007000700170023804183807C0
10147C9315>I<00007800019C00033C00033C000718000700000700000E00000E00000E
00000E00000E0001FFE0001C00001C00001C00001C000038000038000038000038000038
0000700000700000700000700000700000700000E00000E00000E00000E00000C00001C0
0001C0000180003180007B0000F300006600003C00001629829F0E>I<00C001E001E001
C000000000000000000000000000000E003300230043804300470087000E000E000E001C
001C001C003840388030807080310033001C000B1F7C9E0E>105
D<03C01FC0038003800380038007000700070007000E000E000E000E001C001C001C001C
0038003800380038007000700070007100E200E200E200E200640038000A207C9F0C>
108 D<1C0F802630C04740604780604700704700708E00E00E00E00E00E00E00E01C01C0
1C01C01C01C01C03843803883803083807083803107003303001C016147C931A>110
D<007C0001C3000301800E01C01E01C01C01E03C01E07801E07801E07801E0F003C0F003
C0F003C0F00780F00700700F00700E0030180018700007C00013147C9317>I<1C1E0026
61004783804787804707804703008E00000E00000E00000E00001C00001C00001C00001C
000038000038000038000038000070000030000011147C9313>114
D<00FC030206010C030C070C060C000F800FF007F803FC003E000E700EF00CF00CE00840
1020601F8010147D9313>I<018001C0038003800380038007000700FFF007000E000E00
0E000E001C001C001C001C003800380038003820704070407080708031001E000C1C7C9B
0F>I<0E00C03300E02301C04381C04301C04701C08703800E03800E03800E03801C0700
1C07001C07001C07101C0E20180E20180E201C1E200C264007C38014147C9318>I<0E03
803307802307C04383C04301C04700C08700800E00800E00800E00801C01001C01001C01
001C02001C02001C04001C04001C08000E300003C00012147C9315>I
E /Fc 6 113 df<000001C00000078000001E00000078000001E00000078000000E0000
003C000000F0000003C000000F0000003C000000F0000000F00000003C0000000F000000
03C0000000F00000003C0000000E0000000780000001E0000000780000001E0000000780
000001C01A1A7C9723>60 D<E0000000780000001E0000000780000001E0000000780000
001C0000000F00000003C0000000F00000003C0000000F00000003C0000003C000000F00
00003C000000F0000003C000000F0000001C00000078000001E00000078000001E000000
78000000E00000001A1A7C9723>62 D<00F1800389C00707800E03801C03803C03803807
00780700780700780700F00E00F00E00F00E00F00E10F01C20F01C20703C20705C40308C
400F078014147E9318>97 D<00E001E001E000C000000000000000000000000000000E00
130023804380438043808700070007000E000E001C001C001C2038403840384038801900
0E000B1F7E9E10>105 D<0000C00001E00001E00001C000000000000000000000000000
0000000000000000001E0000630000438000838001038001038002070000070000070000
0700000E00000E00000E00000E00001C00001C00001C00001C0000380000380000380000
380000700000700030700078E000F1C0006380003E00001328819E13>I<03C1E0046218
04741C08781C08701E08701E10E01E00E01E00E01E00E01E01C03C01C03C01C03C01C038
0380780380700380E003C1C0072380071E000700000700000E00000E00000E00000E0000
1C00001C0000FFC000171D819317>112 D E /Fd 10 118 df<78FCFCFCFC7800000000
000078FCFCFCFC7806127D910D>58 D<FFFFF800FFFFFF000FC01FC00FC007E00FC001F0
0FC001F80FC000F80FC000FC0FC0007C0FC0007C0FC0007E0FC0007E0FC0007E0FC0007E
0FC0007E0FC0007E0FC0007E0FC0007E0FC0007C0FC0007C0FC0007C0FC000F80FC000F8
0FC001F00FC007E00FC01FC0FFFFFF00FFFFF8001F1C7E9B25>68
D<FFC00003FFFFE00007FF0FE00007F00DF0000DF00DF0000DF00DF0000DF00CF80019F0
0CF80019F00C7C0031F00C7C0031F00C3E0061F00C3E0061F00C1F00C1F00C1F00C1F00C
1F00C1F00C0F8181F00C0F8181F00C07C301F00C07C301F00C03E601F00C03E601F00C01
FC01F00C01FC01F00C01FC01F00C00F801F00C00F801F0FFC0701FFFFFC0701FFF281C7E
9B2D>77 D<03FC000E0E001C1F003C1F00781F00780E00F80000F80000F80000F80000F8
0000F800007800007801803C01801C03000E0E0003F80011127E9115>99
D<03F8F00E0F381E0F381C07303C07803C07803C07803C07801C07001E0F000E0E001BF8
001000001800001800001FFF001FFFC00FFFE01FFFF07801F8F00078F00078F000787000
707800F01E03C007FF00151B7F9118>103 D<1E003F003F003F003F001E000000000000
00000000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F
001F00FFE0FFE00B1E7F9D0E>105 D<FF0FC0FF31E01F40F01F80F81F80F81F00F81F00
F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF1812
7F911B>110 D<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F800
F8F800F8F800F87800F07800F03C01E01E03C00F078001FC0015127F9118>I<1FD83078
6018E018E018F000FF807FE07FF01FF807FC007CC01CC01CE01CE018F830CFC00E127E91
13>115 D<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F
00F81F00F81F00F81F00F81F01F80F01F80786FF01F8FF18127F911B>117
D E /Fe 10 58 df<1F00318060C04040C060C060C060C060C060C060C060C060404060
C031801F000B107F8F0F>48 D<0C003C00CC000C000C000C000C000C000C000C000C000C
000C000C000C00FF8009107E8F0F>I<1F00618040C08060C0600060006000C001800300
06000C00102020207FC0FFC00B107F8F0F>I<1F00218060C060C000C0008001800F0000
8000400060C060C060804060801F000B107F8F0F>I<0300030007000F000B0013003300
23004300C300FFE003000300030003001FE00B107F8F0F>I<20803F002C002000200020
002F0030802040006000600060C06080C061801F000B107F8F0F>I<0780184030C060C0
6000C000CF00F080E040C060C060C060406060C030801F000B107F8F0F>I<40007FE07F
C08080808001000200040004000C0008000800180018001800180018000B117E900F>I<
1F00208040404040404070803F000F00338061C0C060C060C060404060801F000B107F8F
0F>I<1F00318060C0C040C060C060C06040E021E01E600060004060C0608043003E000B
107F8F0F>I E /Ff 89 126 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F87000000000
0070F8F8F870051C779B18>33 D<4010E038F078E038E038E038E038E038E038E038E038
E038E03860300D0E7B9C18>I<030600078F00078F00078F00078F00078F00078F007FFF
C0FFFFE0FFFFE07FFFC00F1E000F1E000F1E000F1E000F1E000F1E007FFFC0FFFFE0FFFF
E07FFFC01E3C001E3C001E3C001E3C001E3C001E3C000C1800131C7E9B18>I<3803007C
07807C0780EE0F80EE0F00EE0F00EE1F00EE1E00EE1E00EE3E007C3C007C3C00387C0000
780000780000F80000F00001F00001E00001E00003E00003C00003C00007C00007838007
87C00F87C00F0EE00F0EE01F0EE01E0EE01E0EE03E0EE03C07C03C07C018038013247E9F
18>37 D<01C00007E0000FF0000E70001C38001C38001C38001C38001C73F01C73F01CE3
F00FE3800FC7000F87000F07001F0E003F0E007B8E0073DC00E1DC00E0F800E0F800E070
70E0787070FC707FFFE03FCFE00F03C0141C7F9B18>I<387C7C7E3E0E0E0E1C1C38F8F0
C0070E789B18>I<007000F001E003C007800F001E001C00380038007000700070007000
E000E000E000E000E000E000E000E0007000700070007000380038001C001E000F000780
03C001F000F000700C24799F18>I<6000F00078003C001E000F000780038001C001C000
E000E000E000E00070007000700070007000700070007000E000E000E000E001C001C003
8007800F001E003C007800F00060000C247C9F18>I<01C00001C00001C00001C000C1C1
80F1C780F9CF807FFF001FFC0007F00007F0001FFC007FFF00F9CF80F1C780C1C18001C0
0001C00001C00001C00011147D9718>I<00600000F00000F00000F00000F00000F00000
F00000F0007FFFC0FFFFE0FFFFE07FFFC000F00000F00000F00000F00000F00000F00000
F00000600013147E9718>I<1C3E7E7F3F1F070E1E7CF860080C788518>I<7FFF00FFFF80
FFFF807FFF0011047D8F18>I<3078FCFC78300606778518>I<000300000780000780000F
80000F00001F00001E00001E00003E00003C00007C0000780000780000F80000F00001F0
0001E00003E00003C00003C00007C0000780000F80000F00000F00001F00001E00003E00
003C00003C00007C0000780000F80000F00000F0000060000011247D9F18>I<01F00007
FC000FFE001F1F001C07003803807803C07001C07001C0E000E0E000E0E000E0E000E0E0
00E0E000E0E000E0E000E0E000E0F001E07001C07001C07803C03803801C07001F1F000F
FE0007FC0001F000131C7E9B18>I<01800380038007800F803F80FF80FB804380038003
80038003800380038003800380038003800380038003800380038003807FFCFFFE7FFC0F
1C7B9B18>I<03F0000FFE003FFF007C0F807003C0E001C0F000E0F000E06000E00000E0
0000E00001C00001C00003C0000780000F00001E00003C0000780000F00001E00007C000
0F80001E00E03C00E07FFFE0FFFFE07FFFE0131C7E9B18>I<07F8001FFE003FFF007807
807803C07801C03001C00001C00003C0000380000F0003FF0003FE0003FF000007800003
C00001C00000E00000E00000E0F000E0F000E0F001C0F003C07C07803FFF001FFE0003F8
00131C7E9B18>I<001F00003F0000770000770000E70001E70001C70003870007870007
07000E07001E07003C0700380700780700F00700FFFFF8FFFFF8FFFFF800070000070000
0700000700000700000700007FF000FFF8007FF0151C7F9B18>I<1FFF803FFF803FFF80
3800003800003800003800003800003800003800003800003BF8003FFE003FFF003C0780
1803C00001C00000E00000E06000E0F000E0F000E0E001C07003C07C0F803FFF001FFC00
03F000131C7E9B18>I<007E0001FF0007FF800F83C01E03C01C03C03801803800007000
00700000E1F800E7FE00FFFF00FE0780F803C0F001C0F000E0E000E0F000E07000E07000
E07000E03801C03C03C01E07800FFF0007FE0001F800131C7E9B18>I<E00000FFFFE0FF
FFE0FFFFE0E003C0E00780000700000E00001E00001C0000380000380000700000700000
E00000E00000E00001C00001C00001C00001C00003C00003800003800003800003800003
8000038000038000131D7E9C18>I<03F8000FFE001FFF003E0F803803807001C07001C0
7001C07001C03803803C07801FFF0007FC000FFE001F1F003C07807001C0F001E0E000E0
E000E0E000E0E000E07001C07803C03E0F801FFF000FFE0003F800131C7E9B18>I<03F0
000FFC001FFE003C0F00780780700380E001C0E001C0E001C0E001E0E001E07001E07803
E03C0FE01FFFE00FFEE003F0E00000E00001C00001C00001C0300380780780780F00783E
003FFC001FF00007C000131C7E9B18>I<3078FCFC783000000000000000003078FCFC78
300614779318>I<183C7E7E3C180000000000000000183C7E7E3E1E0E1C3C78F060071A
789318>I<000300000780001F80003F00007E0001FC0003F00007E0001FC0003F00007E
0000FC0000FC00007E00003F00001FC00007E00003F00001FC00007E00003F00001F8000
078000030011187D9918>I<7FFFC0FFFFE0FFFFE0FFFFE0000000000000000000000000
FFFFE0FFFFE0FFFFE07FFFC0130C7E9318>I<600000F00000FC00007E00003F00001FC0
0007E00003F00001FC00007E00003F00001F80001F80003F00007E0001FC0003F00007E0
001FC0003F00007E0000FC0000F0000060000011187D9918>I<0FF0003FFC007FFF0070
0F00F00380F00380600780000F00003E00007C0001F00001E00003C00003C00003C00003
C00003C00003800000000000000000000000000000000003800007C00007C00007C00003
8000111C7D9B18>I<00700000F80000F80000D80000D80001DC0001DC0001DC00018C00
038E00038E00038E00038E000306000707000707000707000707000FFF800FFF800FFF80
0E03800E03801C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>65
D<FFFC00FFFF00FFFF801C03C01C01C01C00E01C00E01C00E01C00E01C01E01C01C01C07
C01FFF801FFF001FFFC01C03C01C00E01C00F01C00701C00701C00701C00701C00F01C00
E01C03E0FFFFC0FFFF80FFFE00141C7F9B18>I<00F8E003FEE007FFE00F07E01E03E03C
01E03800E07000E07000E0700000E00000E00000E00000E00000E00000E00000E00000E0
00007000007000E07000E03800E03C00E01E01C00F07C007FF8003FE0000F800131C7E9B
18>I<7FF800FFFE007FFF001C0F801C03C01C03C01C01E01C00E01C00E01C00F01C0070
1C00701C00701C00701C00701C00701C00701C00701C00F01C00E01C00E01C01E01C01C0
1C03C01C0F807FFF00FFFE007FF800141C7F9B18>I<FFFFF0FFFFF0FFFFF01C00701C00
701C00701C00701C00001C00001C0E001C0E001C0E001FFE001FFE001FFE001C0E001C0E
001C0E001C00001C00001C00381C00381C00381C00381C0038FFFFF8FFFFF8FFFFF8151C
7F9B18>I<FFFFE0FFFFE0FFFFE01C00E01C00E01C00E01C00E01C00001C00001C1C001C
1C001C1C001FFC001FFC001FFC001C1C001C1C001C1C001C00001C00001C00001C00001C
00001C00001C0000FFC000FFC000FFC000131C7E9B18>I<01F1C003FDC00FFFC01F0FC0
1C03C03803C03801C07001C07001C0700000E00000E00000E00000E00000E00000E00FF0
E01FF0E00FF07001C07001C07003C03803C03803C01C07C01F0FC00FFFC003FDC001F1C0
141C7E9B18>I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01
C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C01C01C01C01C01C01C01C01
C01C01C01C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>I<7FFF00FFFF807FFF0001
C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
C00001C00001C00001C00001C00001C00001C00001C00001C00001C0007FFF00FFFF807F
FF00111C7D9B18>I<7F07F0FF87F87F07F01C03C01C07801C07001C0E001C1E001C3C00
1C38001C70001CF0001DF0001DF0001FB8001FB8001F1C001E1C001C0E001C0E001C0700
1C07001C03801C03801C01C07F03F0FF87F87F03F0151C7F9B18>75
D<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E00000E00000E00000E00
000E00000E00000E00000E00000E00000E00000E00000E00000E00700E00700E00700E00
700E00707FFFF0FFFFF07FFFF0141C7F9B18>I<FC01F8FE03F8FE03F83B06E03B06E03B
06E03B06E03B8EE03B8EE0398CE0398CE039DCE039DCE039DCE038D8E038D8E038F8E038
70E03870E03800E03800E03800E03800E03800E03800E0FE03F8FE03F8FE03F8151C7F9B
18>I<7E07F0FF0FF87F07F01D81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C0
1CE1C01C61C01C71C01C71C01C31C01C39C01C39C01C39C01C19C01C19C01C1DC01C0DC0
1C0DC01C0DC07F07C0FF87C07F03C0151C7F9B18>I<0FF8003FFE007FFF00780F007007
00F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E003
80E00380E00380E00380E00380E00380F00780700700780F007FFF003FFE000FF800111C
7D9B18>I<FFFE00FFFF80FFFFC01C03C01C01E01C00E01C00701C00701C00701C00701C
00701C00E01C01E01C03C01FFFC01FFF801FFE001C00001C00001C00001C00001C00001C
00001C00001C0000FF8000FF8000FF8000141C7F9B18>I<0FF8003FFE007FFF00780F00
700700F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380
E00380E00380E00380E00380E1E380E1E380F0E78070F700787F007FFF003FFE000FFC00
001C00001E00000E00000F0000070000070011227D9B18>I<7FF800FFFE007FFF001C0F
801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FFE001C0F
001C07001C03801C03801C03801C03801C03801C039C1C039C1C039C7F01F8FF81F87F00
F0161C7F9B18>I<03F3801FFF803FFF807C0F80700780E00380E00380E00380E0000070
00007800003F00001FF00007FE0000FF00000F800003C00001C00000E00000E06000E0E0
00E0E001E0F001C0F80780FFFF80FFFE00E7F800131C7E9B18>I<7FFFF8FFFFF8FFFFF8
E07038E07038E07038E07038007000007000007000007000007000007000007000007000
00700000700000700000700000700000700000700000700000700000700007FF0007FF00
07FF00151C7F9B18>I<FF83FEFF83FEFF83FE1C00701C00701C00701C00701C00701C00
701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00
701C00700E00E00F01E00783C003FF8001FF00007C00171C809B18>I<FF07F8FF07F8FF
07F81C01C01C01C01C01C01C01C00E03800E03800E03800E03800F078007070007070007
0700070700038E00038E00038E00038E00018C0001DC0001DC0001DC0000D80000F80000
F800007000151C7F9B18>I<FE03F8FE03F8FE03F87000707000707000703800E03800E0
3800E03800E03800E038F8E038F8E039DCE039DCE019DCC019DCC019DCC0198CC01D8DC0
1D8DC01D8DC01D8DC00D8D800D05800F07800F07800E0380151C7F9B18>I<7F8FE07F9F
E07F8FE00E07000F0700070E00078E00039C0003DC0001F80001F80000F00000F0000070
0000F00000F80001F80001DC00039E00038E00070F000707000E07800E03801E03C07F07
F0FF8FF87F07F0151C7F9B18>I<FF07F8FF07F8FF07F81C01C01E03C00E03800F078007
0700070700038E00038E0001DC0001DC0001DC0000F80000F80000700000700000700000
700000700000700000700000700000700001FC0003FE0001FC00151C7F9B18>I<3FFFE0
7FFFE07FFFE07001C07003C0700780700700000F00001E00001C00003C00007800007000
00F00001E00001C00003C0000780000700000F00001E00E01C00E03C00E07800E07000E0
FFFFE0FFFFE0FFFFE0131C7E9B18>I<FFF8FFF8FFF8E000E000E000E000E000E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000FFF8FFF8FFF80D24779F18>I<600000F00000F00000F8000078
00007C00003C00003C00003E00001E00001F00000F00000F00000F800007800007C00003
C00003C00003E00001E00001F00000F00000F800007800007800007C00003C00003E0000
1E00001E00001F00000F00000F8000078000078000030011247D9F18>I<FFF8FFF8FFF8
003800380038003800380038003800380038003800380038003800380038003800380038
003800380038003800380038003800380038003800380038FFF8FFF8FFF80D247F9F18>
I<018007C01FF07EFCF83EE00E0F067C9B18>I<7FFF00FFFF80FFFF807FFF0011047D7F
18>I<1FE0003FF8007FFC00781E00300E0000070000070000FF0007FF001FFF007F0700
780700E00700E00700E00700F00F00781F003FFFF01FFBF007E1F014147D9318>97
D<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E000EFF800FFFC00FC1
E00F80E00F00700E00700E00380E00380E00380E00380E00380E00380F00700F00700F80
E00FC1E00FFFC00EFF80063E00151C809B18>I<01FE0007FF001FFF803E078038030070
0000700000E00000E00000E00000E00000E00000E000007000007001C03801C03E03C01F
FF8007FF0001FC0012147D9318>I<001F80003F80001F80000380000380000380000380
00038003E3800FFB801FFF803C1F80380F80700780700380E00380E00380E00380E00380
E00380E00380700780700780380F803C1F801FFFF00FFBF803E3F0151C7E9B18>I<01F0
0007FC001FFE003E0F00380780700380700380E001C0E001C0FFFFC0FFFFC0FFFFC0E000
007000007001C03801C03E03C01FFF8007FF0001FC0012147D9318>I<001F80007FC000
FFE000E1E001C0C001C00001C00001C0007FFFC0FFFFC0FFFFC001C00001C00001C00001
C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0007FFF007F
FF007FFF00131C7F9B18>I<01E1F007FFF80FFFF81E1E301C0E00380700380700380700
3807003807001C0E001E1E001FFC001FF80039E0003800001C00001FFE001FFFC03FFFE0
7801F0700070E00038E00038E00038E000387800F07E03F01FFFC00FFF8001FC00151F7F
9318>I<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E000EFF800FFF
C00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00
E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B18>I<03800007C00007C00007C00003
80000000000000000000000000007FC000FFC0007FC00001C00001C00001C00001C00001
C00001C00001C00001C00001C00001C00001C00001C00001C00001C000FFFF00FFFF80FF
FF00111D7C9C18>I<0038007C007C007C003800000000000000000FFC1FFC0FFC001C00
1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
1C001C001C6038F078FFF07FE03F800E277E9C18>I<FE0000FE0000FE00000E00000E00
000E00000E00000E00000E3FF00E7FF00E3FF00E07800E0F000E1E000E3C000E78000EF0
000FF8000FFC000F9C000F0E000E0F000E07000E03800E03C0FFC7F8FFC7F8FFC7F8151C
7F9B18>I<7FE000FFE0007FE00000E00000E00000E00000E00000E00000E00000E00000
E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
E00000E00000E0007FFFC0FFFFE07FFFC0131C7E9B18>I<7CE0E000FFFBF8007FFFF800
1F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C00
1C1C1C001C1C1C001C1C1C001C1C1C001C1C1C007F1F1F00FFBFBF807F1F1F0019148193
18>I<7E3E00FEFF807FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E0
0E00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC1714809318>I<01F0
000FFE001FFF003E0F803803807001C07001C0E000E0E000E0E000E0E000E0E000E0F001
E07001C07803C03C07803E0F801FFF000FFE0001F00013147E9318>I<7E3E00FEFF807F
FFC00FC1E00F80E00F00700E00700E00380E00380E00380E00380E00380E00380F00700F
00700F80E00FC1E00FFFC00EFF800E3E000E00000E00000E00000E00000E00000E00000E
00007FC000FFE0007FC000151E809318>I<01E38007FB801FFF803E1F80380F80700780
700780E00380E00380E00380E00380E00380E00380700780700780380F803C1F801FFF80
0FFB8003E380000380000380000380000380000380000380000380003FF8003FF8003FF8
151E7E9318>I<7F87E0FF9FF07FBFF803F87803F03003E00003C00003C0000380000380
000380000380000380000380000380000380000380007FFE00FFFF007FFE0015147F9318
>I<07F7003FFF007FFF00780F00E00700E00700E007007C00007FE0001FFC0003FE0000
1F00600780E00380E00380F00380F80F00FFFF00FFFC00E7F00011147D9318>I<018000
0380000380000380000380007FFFC0FFFFC0FFFFC0038000038000038000038000038000
0380000380000380000380000380400380E00380E00380E001C1C001FFC000FF80003E00
13197F9818>I<7E07E0FE0FE07E07E00E00E00E00E00E00E00E00E00E00E00E00E00E00
E00E00E00E00E00E00E00E00E00E00E00E01E00F03E007FFFC03FFFE01FCFC1714809318
>I<7F8FF0FF8FF87F8FF01E03C00E03800E03800E0380070700070700070700038E0003
8E00038E00038E0001DC0001DC0001DC0000F80000F80000700015147F9318>I<FF8FF8
FF8FF8FF8FF83800E03800E03800E01C01C01C01C01C71C01CF9C01CF9C01CD9C01CD9C0
0DDD800DDD800DDD800D8D800F8F800F8F8007070015147F9318>I<7F8FF07F9FF07F8F
F0070700078E00039E0001DC0001F80000F80000700000F00000F80001DC00039E00038E
000707000F07807F8FF0FF8FF87F8FF015147F9318>I<7F8FF0FF8FF87F8FF00E01C00E
03800E0380070380070700070700038700038600038E0001CE0001CE0000CC0000CC0000
DC0000780000780000780000700000700000700000F00000E00079E0007BC0007F80003F
00001E0000151E7F9318>I<3FFFF07FFFF07FFFF07001E07003C0700780000F00001E00
003C0000F80001F00003C0000780000F00701E00703C0070780070FFFFF0FFFFF0FFFFF0
14147F9318>I<0007E0001FE0007FE000780000E00000E00000E00000E00000E00000E0
0000E00000E00000E00000E00000E00001E0007FC000FF8000FF80007FC00001E00000E0
0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000007800007F
E0001FE00007E013247E9F18>I<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0600424769F18>I<7C0000FF0000FFC00003C00000E000
00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000F000007FC0
003FE0003FE0007FC000F00000E00000E00000E00000E00000E00000E00000E00000E000
00E00000E00000E00003C000FFC000FF00007C000013247E9F18>I
E /Fg 39 118 df<01F1C003F1C007F1C00701C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C0FFF1C0FFF1C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0121D809C16>13
D<001C0000003E0000003E0000002E0000006700000067000000E7800000C7800000C380
0001C3C0000183C0000181C0000381E0000381E0000700F0000700F0000600F0000E0078
000FFFF8000FFFF8001C003C001C003C0018003C0038001E0038001E0070001F0070000F
0070000F00E0000780191D7F9C1C>65 D<FFF800FFFF00F00F80F003C0F001E0F000F0F0
00F0F000F0F000F0F000F0F001E0F007C0FFFF80FFFE00FFFF80F03FC0F003E0F001F0F0
00F0F00078F00078F00078F00078F00078F000F0F001E0F007C0FFFF80FFFC00151D7C9C
1C>I<003FC000FFF003C0F00780300F00001E00003C00003C0000780000780000780000
F00000F00000F00000F00000F00000F00000F00000F00000F00000780000780000780000
3C00003C00001E00000F000807801803C07800FFF0003F80151F7D9D1B>I<FFFC00FFFF
00F00F80F003E0F001F0F000F0F00078F00038F0003CF0003CF0001CF0001EF0001EF000
1EF0001EF0001EF0001EF0001EF0001EF0003CF0003CF0003CF00078F000F0F000F0F003
E0F00FC0FFFF00FFFC00171D7C9C1E>I<FFFFC0FFFFC0F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000FFFF80FFFF80F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000FFFFC0FFFFC0121D7C9C
19>I<FFFF80FFFF80F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000FFFF00FFFF00F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000111D7C9C18>I<003F8001FFF003C0F80780
380F00181E00003C00003C0000780000780000780000F00000F00000F00000F00000F000
00F00000F007F8F007F8F000387800387800387800383C00383C00381E00380F00380780
3803C0F801FFF0003F80151F7D9D1C>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0041D7C9C0C>73 D<F0003CF00078F000F0F001E0F003C0F00780
F00F00F01E00F03C00F07800F0F000F0E000F1F000F3F000F77800FE7C00FC3C00FC1E00
F81F00F00F00F00F80F00780F003C0F003E0F001E0F000F0F000F0F00078F0007C161D7C
9C1D>75 D<F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F0
00F000F000F000F000F000F000F000F000F000F000F000FFFEFFFE0F1D7C9C16>I<FC00
07E0FC0007E0FC0007E0EE000DE0EE000DE0EE000DE0E70019E0E70019E0E70019E0E780
39E0E38031E0E3C071E0E3C071E0E1C061E0E1C061E0E1E0E1E0E1E0E1E0E0E0C1E0E0F1
C1E0E07181E0E07181E0E07181E0E03B01E0E03B01E0E03B01E0E01E01E0E01E01E0E01E
01E0E00001E01B1D7C9C24>I<FC0070FC0070FE0070EE0070EF0070E70070E70070E780
70E38070E3C070E3C070E1E070E1E070E0E070E0F070E07070E07870E07870E03C70E03C
70E01C70E01E70E00E70E00E70E00F70E00770E007F0E003F0E003F0141D7C9C1D>I<00
3F000001FFE00003FFF00007C0F8000F807C001E001E003E001F003C000F007800078078
00078078000780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F0
0003C0F80007C078000780780007807C000F803C000F003E001F001F003E000F807C0007
C0F80003FFF00001FFE000003F00001A1F7E9D1F>I<FFFC00FFFF00F00F80F003C0F001
E0F000F0F000F0F000F0F000F0F000F0F000F0F001E0F003E0F00FC0FFFF80FFFE00F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00141D7C9C1B>I<003F000001FFE00003FFF00007C0F8000F807C001F003E003E001F00
3C000F00780007807800078078000780F00003C0F00003C0F00003C0F00003C0F00003C0
F00003C0F00003C0F00003C0F00003C07800078078000780780E07803C0F0F003E079F00
1E03DE000F83FC0007C1F80003FFF00001FFF800003F780000003C0000003E0000001F00
00000F801A237E9D1F>I<FFF800FFFF00F00F80F003C0F001E0F000F0F000F0F000F0F0
00F0F000F0F001E0F003E0F00FC0FFFF80FFFF00FFF800F03C00F01C00F01E00F00F00F0
0F00F00780F00780F003C0F003C0F001E0F000F0F000F0F00078151D7C9C1B>I<03F800
0FFE001C0F00380700700300600000E00000E00000E00000E00000F000007800007F0000
3FE0001FFC0007FE0001FF00001F800007800003C00003C00001C00001C00001C00001C0
C00180E00380F007007C0E001FFC0007F000121F7E9D17>I<FFFFFF80FFFFFF80001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000191D7F
9C1C>I<F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F000
70F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F000
707800E07800E03C01C01E03800F078007FE0001F800141E7C9C1D>I<F0000380F00003
807800070078000700780007003C000E003C000E003E000E001E001C001E001C000F0038
000F0038000F003800078070000780700003C0600003C0E00003C0E00001E0C00001E1C0
0001E1C00000F1800000F380000073000000730000007B0000003E0000003E0000001C00
00191D7F9C1C>I<F000F00070F000F80070F000F800707800B8006078019C00E078019C
00E078019C00E03C039C01C03C031E01C03C030E01C01E030E01801E070F03801E070F03
801E060703800F060703000F0E0787000F0C078700070C038600070C038600078C038E00
079803CE00039801CC00039801CC00039801CC0001D001C80001D000D80001F000F80001
E000F80000E0007000241D7F9C27>I<F80001E07C0001C03E0003801E0007801F000700
0F800E0007801E0007C01C0003E03C0001E0380001F0700000F0F0000078E000007DC000
003DC000001F8000001F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F0000000F0000000F0000000F00001B1D809C1C>89
D<7FFFF07FFFF00001E00003E00003C00007C0000780000F00001F00001E00003E00003C
0000780000F80000F00001F00001E00003C00007C0000780000F80000F00001E00003E00
003C00007C0000780000FFFFF0FFFFF0141D7E9C19>I<0FC03FF07FF87038401C001C00
1C00FC0FFC3FFC781CE01CE01CE01CF07C7FFC7FDC3F1C0E127E9114>97
D<07E00FF81FFC3C1C70047000E000E000E000E000E000E000700070043C1C1FFC0FF807
E00E127E9112>99 D<07C01FE03FF078787018601CFFFCFFFCFFFCE000E000E000700070
043C1C3FFC1FF807E00E127E9112>101 D<00FC01FC03FC07000E000E000E000E000E00
0E000E00FFE0FFE00E000E000E000E000E000E000E000E000E000E000E000E000E000E00
0E000E000E1D809C0D>I<03C3C00FFFC01FFFC01C3800381C00381C00381C00381C0038
1C001C38001FF8001FF0003BC0003800003800001FFC001FFF003FFF80700780E001C0E0
01C0E001C0F003C07C0F803FFF001FFE0007F800121B7F9115>I<F0F0F0F00000000000
0000707070707070707070707070707070707070041D7E9C0A>105
D<E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0031D7D9C0A>
108 D<E3F03F00EFF8FF80FFFDFFC0F81F81E0F00F00E0E00E00E0E00E00E0E00E00E0E0
0E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E0
0E00E01B127D9122>I<E3E0EFF0FFF8F83CF01CE01CE01CE01CE01CE01CE01CE01CE01C
E01CE01CE01CE01CE01C0E127D9115>I<03F0000FFC001FFE003C0F00780780700380E0
01C0E001C0E001C0E001C0E001C0F003C07003807807803C0F001FFE000FFC0003F00012
127F9115>I<078E1FEE3FFE7C3E781E700EE00EE00EE00EE00EE00EE00EF00E701E7C3E
3FFE1FEE0F8E000E000E000E000E000E000E000E000E0F1A7E9115>113
D<E380E780EF80FC00F800F000F000E000E000E000E000E000E000E000E000E000E000E0
0009127D910E>I<1FC03FF07FF0F030E000E000F0007F003FC01FE000F0003800388038
F078FFF07FE01FC00D127F9110>I<1C001C001C001C001C001C00FFE0FFE01C001C001C
001C001C001C001C001C001C001C001C001C001C201FF00FF007C00C187F970F>I<E01C
E01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE07CFFFC7FDC3F1C0E12
7D9115>I E /Fh 61 123 df<007E0001C1800301800703C00E03C00E01800E00000E00
000E00000E00000E0000FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07F87F8151D809C17>12
D<007FC001C1C00303C00703C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFFF
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C00E01C07FCFF8151D809C17>I<003F07E00001C09C18000380F0
18000701F03C000E01E03C000E00E018000E00E000000E00E000000E00E000000E00E000
000E00E00000FFFFFFFC000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C00
0E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E
00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF80211D809C23>I<6060F0F0F8
F86868080808080808101010102020404080800D0C7F9C15>34 D<60F0F8680808081010
204080050C7C9C0C>39 D<004000800100020006000C000C001800180030003000700060
0060006000E000E000E000E000E000E000E000E000E000E000E000E00060006000600070
0030003000180018000C000C00060002000100008000400A2A7D9E10>I<800040002000
100018000C000C000600060003000300038001800180018001C001C001C001C001C001C0
01C001C001C001C001C001C0018001800180038003000300060006000C000C0018001000
2000400080000A2A7E9E10>I<60F0F0701010101020204080040C7C830C>44
D<FFE0FFE00B0280890E>I<60F0F06004047C830C>I<00030003000700060006000E000C
001C0018001800380030003000700060006000E000C000C001C001800380030003000700
060006000E000C000C001C001800180038003000700060006000E000C000C00010297E9E
15>I<60F0F0600000000000000000000060F0F06004127C910C>58
D<60F0F0600000000000000000000060F0F0701010101020204080041A7C910C>I<7FFF
FFC0FFFFFFE0000000000000000000000000000000000000000000000000000000000000
0000FFFFFFE07FFFFFC01B0C7E8F20>61 D<0FE03038401CE00EF00EF00EF00E000C001C
0030006000C0008001800100010001000100010001000000000000000000000003000780
078003000F1D7E9C14>63 D<000600000006000000060000000F0000000F0000000F0000
0017800000178000001780000023C0000023C0000023C0000041E0000041E0000041E000
0080F0000080F0000180F8000100780001FFF80003007C0002003C0002003C0006003E00
04001E0004001E000C001F001E001F00FF80FFF01C1D7F9C1F>65
D<001F808000E0618001801980070007800E0003801C0003801C00018038000180780000
807800008070000080F0000000F0000000F0000000F0000000F0000000F0000000F00000
00F0000000700000807800008078000080380000801C0001001C0001000E000200070004
000180080000E03000001FC000191E7E9C1E>67 D<FFFFC0000F00F0000F003C000F000E
000F0007000F0007000F0003800F0003C00F0001C00F0001C00F0001E00F0001E00F0001
E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001C00F0001C00F0003C00F0003
800F0007800F0007000F000E000F001C000F007000FFFFC0001B1C7E9B20>I<FFFFFC0F
003C0F000C0F00040F00040F00060F00020F00020F02020F02000F02000F02000F06000F
FE000F06000F02000F02000F02000F02010F00010F00020F00020F00020F00060F00060F
000C0F003CFFFFFC181C7E9B1C>I<FFFFF80F00780F00180F00080F00080F000C0F0004
0F00040F02040F02000F02000F02000F06000FFE000F06000F02000F02000F02000F0200
0F00000F00000F00000F00000F00000F00000F00000F8000FFF800161C7E9B1B>I<001F
808000E0618001801980070007800E0003801C0003801C00018038000180780000807800
008070000080F0000000F0000000F0000000F0000000F0000000F0000000F000FFF0F000
0F80700007807800078078000780380007801C0007801C0007800E00078007000B800180
118000E06080001F80001C1E7E9C21>I<FFF3FFC00F003C000F003C000F003C000F003C
000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000FFFFC
000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C
000F003C000F003C000F003C000F003C00FFF3FFC01A1C7E9B1F>I<FFF00F000F000F00
0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
0F000F000F000F000F00FFF00C1C7F9B0F>I<FFF8000F80000F00000F00000F00000F00
000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
000F00080F00080F00080F00180F00180F00100F00300F00700F01F0FFFFF0151C7E9B1A
>76 D<FF8000FF800F8000F8000F8000F8000BC00178000BC00178000BC001780009E002
780009E002780008F004780008F004780008F00478000878087800087808780008780878
00083C107800083C107800083C107800081E207800081E207800081E207800080F407800
080F40780008078078000807807800080780780008030078001C03007800FF8307FF8021
1C7E9B26>I<FF007FC00F800E000F8004000BC0040009E0040009E0040008F0040008F8
040008780400083C0400083C0400081E0400080F0400080F0400080784000807C4000803
C4000801E4000801E4000800F40008007C0008007C0008003C0008003C0008001C000800
0C001C000C00FF8004001A1C7E9B1F>I<003F800000E0E0000380380007001C000E000E
001C0007003C00078038000380780003C0780003C0700001C0F00001E0F00001E0F00001
E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003C0780003C0380003
803C0007801C0007000E000E0007001C000380380000E0E000003F80001B1E7E9C20>I<
FFFF800F00E00F00780F003C0F001C0F001E0F001E0F001E0F001E0F001E0F001C0F003C
0F00780F00E00FFF800F00000F00000F00000F00000F00000F00000F00000F00000F0000
0F00000F00000F0000FFF000171C7E9B1C>I<003F800000E0E0000380380007001C000E
000E001C0007003C00078038000380780003C0780003C0700001C0F00001E0F00001E0F0
0001E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003C0780003C038
0003803C0E07801C1107000E208E0007205C0003A0780000F0E020003FE0200000602000
003060000038E000003FC000003FC000001F8000000F001B257E9C20>I<FFFF00000F01
E0000F0078000F003C000F001C000F001E000F001E000F001E000F001E000F001C000F00
3C000F0078000F01E0000FFF00000F03C0000F00E0000F00F0000F0078000F0078000F00
78000F0078000F0078000F0078000F0078100F0078100F0038100F003C20FFF01C200000
07C01C1D7E9B1F>I<07E0801C1980300580700380600180E00180E00080E00080E00080
F00000F800007C00007FC0003FF8001FFE0007FF0000FF80000F800007C00003C00001C0
8001C08001C08001C0C00180C00180E00300D00200CC0C0083F800121E7E9C17>I<7FFF
FFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F0020800F0020000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F800003FF
FC001B1C7F9B1E>I<FFF07FC00F000E000F0004000F0004000F0004000F0004000F0004
000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004
000F0004000F0004000F0004000F0004000F0004000F0004000700080007800800038010
000180100000C020000070C000001F00001A1D7E9B1F>I<FFE0FFE0FF1F001F003C1E00
1E00180F001F00100F001F00100F001F001007801F00200780278020078027802003C027
804003C043C04003C043C04003E043C04001E081E08001E081E08001E081E08000F100F1
0000F100F10000F100F100007900FA00007A007A00007A007A00003E007C00003C003C00
003C003C00003C003C00001800180000180018000018001800281D7F9B2B>87
D<FFF007FC0F8001E00780008007C0018003C0010003E0020001F0020000F0040000F804
0000780800007C1800003C1000001E2000001F2000000F4000000FC00000078000000780
000007800000078000000780000007800000078000000780000007800000078000000780
00007FF8001E1C809B1F>89 D<08081010202040404040808080808080B0B0F8F8787830
300D0C7A9C15>92 D<1FC000307000783800781C00301C00001C00001C0001FC000F1C00
381C00701C00601C00E01C40E01C40E01C40603C40304E801F870012127E9115>97
D<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C7C
001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C00
C01C01C01C01801E030019060010F800131D7F9C17>I<07E00C301878307870306000E0
00E000E000E000E000E00060007004300418080C3007C00E127E9112>I<003F00000700
00070000070000070000070000070000070000070000070000070003E7000C1700180F00
300700700700600700E00700E00700E00700E00700E00700E00700600700700700300700
180F000C370007C7E0131D7E9C17>I<03E00C301818300C700E6006E006FFFEE000E000
E000E00060007002300218040C1803E00F127F9112>I<00F8018C071E061E0E0C0E000E
000E000E000E000E00FFE00E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E007FE00F1D809C0D>I<00038003C4C00C38C01C3880181800381C00381C
00381C00381C001818001C38000C300013C0001000003000001800001FF8001FFF001FFF
803003806001C0C000C0C000C0C000C06001803003001C0E0007F800121C7F9215>I<FC
00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C7C001C
87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
03801C03801C03801C0380FF9FF0141D7F9C17>I<18003C003C00180000000000000000
00000000000000FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C
001C001C00FF80091D7F9C0C>I<FC00001C00001C00001C00001C00001C00001C00001C
00001C00001C00001C00001C3FC01C0F001C0C001C08001C10001C20001C40001CE0001D
E0001E70001C78001C38001C3C001C1C001C0E001C0F001C0F80FF9FE0131D7F9C16>
107 D<FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
001C001C001C001C001C001C001C001C001C001C001C00FF80091D7F9C0C>I<FC7E07E0
001C838838001D019018001E01E01C001C01C01C001C01C01C001C01C01C001C01C01C00
1C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C
01C01C001C01C01C00FF8FF8FF8021127F9124>I<FC7C001C87001D03001E03801C0380
1C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380
FF9FF014127F9117>I<03F0000E1C00180600300300700380600180E001C0E001C0E001
C0E001C0E001C0E001C06001807003803003001806000E1C0003F00012127F9115>I<FC
7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C
01C01C01C01C01801E03001D06001CF8001C00001C00001C00001C00001C00001C00001C
0000FF8000131A7F9117>I<03C1000C3300180B00300F00700700700700E00700E00700
E00700E00700E00700E00700600700700700300F00180F000C370007C700000700000700
000700000700000700000700000700003FE0131A7E9116>I<FCE01D301E781E781C301C
001C001C001C001C001C001C001C001C001C001C001C00FFC00D127F9110>I<1F903070
4030C010C010E010F8007F803FE00FF000F880388018C018C018E010D0608FC00D127F91
10>I<04000400040004000C000C001C003C00FFE01C001C001C001C001C001C001C001C
001C001C101C101C101C101C100C100E2003C00C1A7F9910>I<FC1F801C03801C03801C
03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C07800C
07800E1B8003E3F014127F9117>I<FF07E03C03801C01001C01000E02000E0200070400
07040007040003880003880003D80001D00001D00000E00000E00000E00000400013127F
9116>I<FF3FCFE03C0F03801C0701801C0701001C0B01000E0B82000E0B82000E118200
0711C4000711C4000720C40003A0E80003A0E80003C0680001C0700001C0700001803000
008020001B127F911E>I<7F8FF00F03800F030007020003840001C80001D80000F00000
700000780000F800009C00010E00020E000607000403801E07C0FF0FF81512809116>I<
FF07E03C03801C01001C01000E02000E020007040007040007040003880003880003D800
01D00001D00000E00000E00000E000004000004000008000008000F08000F10000F30000
6600003C0000131A7F9116>I<7FFC70386038407040F040E041C003C0038007000F040E
041C043C0C380870087038FFF80E127F9112>I E /Fi 29 91 df<3078F8787005057C84
0D>46 D<003F8000C1E00100F00200780400780400780F007C0F807C0F807C0F00780600
780000F80000F00001E00001C0000380000700000E00001C0000380000600000C0000180
000300200600200800401000403FFFC07FFF80FFFF80161E7E9D17>50
D<0000600000600000E00001C00003C00005C0000DC00009C00011C000238000438000C3
80008380010380020380040700080700180700100700200700400700FFFFF0000E00000E
00000E00000E00000E00001C00001E0001FFE0141E7E9D17>52 D<01803001FFE003FFC0
03FF0003FC00020000020000020000040000040000040000047C000587000603800C0180
0801C00001C00001E00001E00001E00001E07003C0F803C0F003C0E00380800780400700
400E00201C0018700007C000141F7D9D17>I<000F8000704000C0200180E00301E00701
E00E00C01E00001C00003C000038000078F800790E007A07007C0300F80380F80380F003
C0F003C0F003C0F003C0F00780E00780E00780E00700E00F00600E00701C003018001870
0007C000131F7C9D17>I<2000003FFFE07FFFC07FFF80400100C0020080020080040000
08000010000020000040000040000080000180000300000300000700000600000E00000E
00001E00001C00001C00003C00003C00003C0000780000780000780000300000131F799D
17>I<003F0000C1C00100600200600400300C00300C00300C00300C00600E00600F80C0
0FC18007F60003FC0001FC0001FF00063F800C0F801007C03003C06001C06000C0C000C0
C000C0C000C0C00080C0010060030030040018180007E000141F7D9D17>I<0000100000
001800000038000000380000007800000078000000FC000001BC0000013C0000033C0000
023C0000063C0000043E0000081E0000081E0000101E0000101E0000201E0000200F0000
400F0000400F0000FFFF0000800F0001000F800100078002000780020007800400078004
0007800C0007C03E0007C0FF807FFC1E207E9F22>65 D<07FFFF00007C01C0003C01E000
3C00F0007800F8007800F8007800F8007800F8007800F8007800F000F001F000F001E000
F003C000F00F8000FFFE0000F00F0001E007C001E003C001E003E001E001E001E001E001
E001E003C001E003C003E003C003E003C003C003C007C003C00F8007800F0007803E00FF
FFF0001D1F7E9E20>I<0001F808000E061800380138007000F801E0007803C000700780
0030078000300F0000301F0000301E0000303E0000203C0000007C0000007C0000007C00
00007C000000F8000000F8000000F8000000F8000000F800000078000040780000807800
00803C0000803C0001001C0002000E00020006000C000300100001C0E000003F00001D21
7B9F21>I<07FFFF00007C01E0003C00F0003C00780078003C0078003C0078001E007800
1E0078001E0078001F00F0001F00F0001F00F0001F00F0001F00F0001F00F0001F01E000
1E01E0003E01E0003E01E0003E01E0003C01E0007C03C0007803C000F003C000F003C001
E003C003C003C0078007800F0007803C00FFFFE000201F7E9E23>I<07FFFFF8007C0078
003C0038003C001800780018007800080078000800780008007800080078080800F01000
00F0100000F0100000F0300000FFF00000F0700001E0200001E0200001E0200001E02000
01E0000801E0001003C0001003C0001003C0002003C0002003C0006003C000C0078001C0
078007C0FFFFFF801D1F7E9E1F>I<07FFFFF8007C0078003C0038003C00180078001800
7800080078000800780008007800080078000800F0100000F0100000F0100000F0300000
F0700000FFF00001E0600001E0200001E0200001E0200001E0200001E0000003C0000003
C0000003C0000003C0000003C0000003C000000780000007C00000FFFE00001D1F7E9E1E
>I<0001FC04000F030C003C009C0070007C00E0003C01C0003803800018078000180F00
00181F0000181E0000183E0000103C0000007C0000007C0000007C0000007C000000F800
0000F8000000F8007FFCF80003E0780001E0780001E0780003C0780003C03C0003C03C00
03C01C0003C00E0007C007000B800380118001E06080003F80001E217B9F24>I<07FFC7
FFC0007C00F800003C007800003C007800007800F000007800F000007800F000007800F0
00007800F000007800F00000F001E00000F001E00000F001E00000F001E00000FFFFE000
00F001E00001E003C00001E003C00001E003C00001E003C00001E003C00001E003C00003
C007800003C007800003C007800003C007800003C007800003C007800007800F000007C0
0F8000FFF8FFF800221F7E9E22>I<07FFE0007C00003C00003C00007800007800007800
00780000780000780000F00000F00000F00000F00000F00000F00001E00001E00001E000
01E00001E00001E00003C00003C00003C00003C00003C00003C00007800007C000FFFC00
131F7F9E10>I<07FFF000007E0000003C0000003C000000780000007800000078000000
780000007800000078000000F0000000F0000000F0000000F0000000F0000000F0000001
E0000001E0000001E0000001E0000001E0008001E0010003C0010003C0010003C0030003
C0020003C0060003C0060007801E0007807C00FFFFFC00191F7E9E1C>76
D<07FC0000FFC0007C0000F800003C00017800003C00017800004E0002F000004E0002F0
00004E0004F000004E0004F000004E0008F000004E0008F00000870011E00000870011E0
0000870021E00000870021E00000870041E00000838041E00001038083C00001038083C0
0001038103C00001038203C0000101C203C0000101C403C0000201C40780000201C80780
000201C80780000201D00780000200F00780000600E00780000600E00F00000F00C00F80
00FFE0C1FFF8002A1F7E9E2A>I<07FC01FFC0003E003E00003E001800003E001800004F
001000004F001000004780100000478010000043C010000043C010000083C020000081E0
20000081E020000080F020000080F020000080782000010078400001007C400001003C40
0001003C400001001E400001001E400002000F800002000F800002000F80000200078000
0200078000060003800006000300000F00010000FFE0010000221F7E9E22>I<0003F800
001E0E000038070000E0038001C001C003C001E0078000E00F0000F00F0000F01E0000F0
1E0000F83E0000F83C0000F87C0000F87C0000F87C0000F87C0000F8F80001F0F80001F0
F80001F0F80001F0F80003E0780003E0780003C0780007C07C0007803C000F003C001E00
1E001C000E0038000700F00003C3C00000FE00001D217B9F23>I<07FFFF00007C03C000
3C01E0003C00F0007800F0007800F8007800F8007800F8007800F8007800F000F001F000
F001E000F003C000F0078000F00F0000FFF80001E0000001E0000001E0000001E0000001
E0000001E0000003C0000003C0000003C0000003C0000003C0000003C000000780000007
C00000FFFC00001D1F7E9E1F>I<0003F800001E0E000038070000F0038001E001C003C0
01E0078001E00F0000F00F0000F01F0000F01E0000F83E0000F83C0000F87C0000F87C00
00F87C0000F87C0000F8F80001F0F80001F0F80001F0F80001F0F80003E0780003E07800
03C0780007C0781E07803C210F003C409E001E409C000E80B8000740F00003C1C04000FE
C0400000C0400000C0800000E1800000FF800000FF000000FF0000007E0000003C001D29
7B9F23>I<07FFFC00007C0700003C03C0003C01E0007801E0007801F0007801F0007801
F0007801F0007801E000F003E000F003C000F0078000F00F0000F03C0000FFF00001E030
0001E0380001E01C0001E01C0001E01C0001E01E0003C03E0003C03E0003C03E0003C03E
0003C03E0003C03E0207803E0407C01F04FFFC0F18000003E01F207E9E21>I<003F0400
60CC01803C03801C03001C0700180600080E00080E00080E00080E00000F00000F80000F
E00007FE0003FF8001FFC0007FE00007E00001E00000E00000F00000F04000E04000E040
00E04000E06000C0600180E00380F80300C60C0081F80016217D9F19>I<3FFFFFF03C07
80F03007803060078030400F0010400F0010C00F0010800F0010800F0010800F0010001E
0000001E0000001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C
0000003C0000003C000000780000007800000078000000780000007800000078000000F0
000001F800007FFFE0001C1F7A9E21>I<FFFC3FF80F8007C007800300078003000F0002
000F0002000F0002000F0002000F0002000F0002001E0004001E0004001E0004001E0004
001E0004001E0004003C0008003C0008003C0008003C0008003C0008003C000800380010
003800100038001000380020003C0040001C0040001C0080000E0100000706000001F800
001D20799E22>I<03FFC0FFC0007F007E00003E003800001E003000001E002000000F00
4000000F008000000F81000000078200000007C600000003C400000003E800000001F000
000001F000000000F000000000F800000000F8000000017C000000023C000000043C0000
000C1E000000081E000000101F000000200F000000400F800000C0078000008007C00001
0003C000070003E0001F8007E000FFE01FFE00221F7F9E22>88 D<FFF003FF1F8000F80F
0000600F8000400780008007C0018003C0010003E0020001E0040001F00C0001F0080000
F0100000F8200000786000007C4000003C8000003F0000001F0000001E0000001E000000
1E0000001C0000003C0000003C0000003C0000003C0000003C0000003800000078000000
7C00000FFFC000201F7A9E22>I<03FFFFC003E007800380078007000F0006001E000400
3C000C003C00080078000800F0000801F0000001E0000003C0000007800000078000000F
0000001E0000003C0000003C00000078000000F0010001E0010001E0020003C002000780
02000F8006000F0004001E000C003C001C007C003C007800F800FFFFF8001A1F7D9E1C>
I E /Fj 1 64 df<07F8001FFE00381F80780F80FC0FC0FC0FC0FC0FC0780FC0301F8000
1F00003E00007C0000700000E00000E00000C00000C00000C00000C00000C00000C00000
000000000000000000000001C00007F00007F00007F00007F00007F00001C00012207D9F
19>63 D E /Fk 6 107 df<FFFFFFC0FFFFFFC01A027C8B23>0 D<07E01FF83FFC7FFE7F
FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF807E010127D9317>15
D<00000C00000C00001C0000180000380000300000700000600000E00000C00001C00001
80000380000300000700000600000E00000C00001C000018000038000030000030000070
0000600000E00000C00001C0000180000380000300000700000600000E00000C00001C00
00180000380000300000700000600000E00000C00000C00000162C7AA000>54
D<000F0038006000E001C001C001C001C001C001C001C001C001C001C001C001C001C001
C001C0038007001E00F8001E000700038001C001C001C001C001C001C001C001C001C001
C001C001C001C001C001C000E000600038000F102D7DA117>102
D<F8001E000700038001C001C001C001C001C001C001C001C001C001C001C001C001C001
C001C000E000600038000F0038006000E001C001C001C001C001C001C001C001C001C001
C001C001C001C001C001C0038007001E00F800102D7DA117>I<C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C002
2D7BA10D>106 D E /Fl 40 122 df<0000C018000000C018000000C018000001C03800
000180300000018030000001803000000380700000030060000003006000000300600000
0700E000000600C000000600C000000600C000000E01C000000C018000FFFFFFFFC0FFFF
FFFFC0001803000000180300000018030000003807000000300600000030060000003006
00000030060000FFFFFFFFC0FFFFFFFFC000600C000000E01C000000C018000000C01800
0000C018000001C038000001803000000180300000018030000003807000000300600000
030060000003006000000700E000000600C000000600C00000222D7DA229>35
D<F0F0F0F004047B830E>46 D<00C001C007C0FFC0FFC0FBC003C003C003C003C003C003
C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003
C003C0FFFFFFFFFFFF10227CA118>49 D<03F0000FFC001FFE003C1F003007807007C060
03C0E003E0C001E04001E04001E00001E00001E00001E00003C00003C000078000078000
0F00001E00003C0000780000F00001E00001C0000380000700000E00001C000038000070
0000FFFFE0FFFFE0FFFFE013227EA118>I<01F00007FC001FFF003E0F003807807003C0
2003C02003C00003C00003C00003C0000780000780000F00001E0003FC0003F80003FE00
000F000007800003C00003C00001E00001E00001E00001E00001E08001E0C003C0E003C0
7007803C0F801FFF000FFC0003F00013237EA118>I<001F00001F00002F00002F00006F
0000EF0000CF0001CF0001CF00038F00038F00078F00070F000F0F000E0F001E0F003C0F
003C0F00780F00780F00F00F00FFFFF8FFFFF8FFFFF8000F00000F00000F00000F00000F
00000F00000F00000F00000F0015217FA018>I<007E0001FF0003FF0007C1000F00001E
00001E00003C00003C000078000078000078F800F1FE00F7FF00FF0F80FC0780F803C0F8
03C0F801C0F001E0F001E0F001E0F001E0F001E07001E07001E07801E07803C03803C03C
03801C07801F0F000FFE0007FC0001F00013237EA118>54 D<FFFFE0FFFFE0FFFFE00000
E00001C0000380000780000700000E00001E00001C00003C0000380000780000780000F0
0000F00000E00001E00001E00001E00003C00003C00003C00003C00003C0000780000780
0007800007800007800007800007800013217EA018>I<001F0000001F0000003F800000
3F8000003B8000007BC0000073C0000071C00000F1E00000F1E00000E0E00001E0F00001
E0F00001C0F00003C0780003C078000380780007803C0007803C0007003C000F001E000F
001E000FFFFE001FFFFF001FFFFF001C000F003C0007803C00078038000780780003C078
0003C0700003C0F00001E0F00001E0E00001E01B237EA220>65 D<000FF000007FFC0000
FFFF0001F01F0003C00700078000000F0000001E0000003E0000003C0000003C00000078
0000007800000078000000F0000000F0000000F0000000F0000000F0000000F0000000F0
000000F0000000F00000007800000078000000780000003C0000003C0000003E0000001E
0000000F0000000780008003C0038001F00F8000FFFF00007FFC00000FF00019257DA31F
>67 D<FFFFF0FFFFF0FFFFF0F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000FFFFE0FFFFE0FFFFE0F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFFF8FFFFF8FFFFF8
15237BA21D>69 D<FFFFF0FFFFF0FFFFF0F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000FFFFC0FFFFC0FFFFC0F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F0000014237BA21C>I<000FF000003FFE0000FFFF8001F80F8003E0038007800000
0F0000001E0000001E0000003C0000003C000000780000007800000078000000F0000000
F0000000F0000000F0000000F0000000F0000000F000FFC0F000FFC0F000FFC0780003C0
780003C0780003C03C0003C03C0003C01E0003C01E0003C00F0003C0078003C003E003C0
01F807C000FFFFC0003FFF00000FF8001A257DA321>I<F0001EF0001EF0001EF0001EF0
001EF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0001EFFFFFEFF
FFFEFFFFFEF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0
001EF0001EF0001EF0001EF0001EF0001EF0001E17237BA222>I<F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237CA20D>I<F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000FFFFC0FFFFC0FFFFC012237BA21A>
76 D<FC00007EFE0000FEFE0000FEFE0000FEF70001DEF70001DEF70001DEF78003DEF3
80039EF380039EF3C0079EF3C0079EF1C0071EF1C0071EF1E00F1EF0E00E1EF0E00E1EF0
F01E1EF0F01E1EF0701C1EF0783C1EF0783C1EF038381EF03C781EF03C781EF01C701EF0
1C701EF01EF01EF00EE01EF00EE01EF00FE01EF007C01EF007C01EF007C01EF000001E1F
237BA22A>I<FFFE00FFFF80FFFFC0F003E0F000F0F00078F00078F0003CF0003CF0003C
F0003CF0003CF0003CF00078F00078F000F0F003E0FFFFC0FFFF80FFFE00F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
F0000016237BA21F>80 D<FFFC00FFFF80FFFFC0F003E0F000F0F00078F00038F0003CF0
003CF0003CF0003CF0003CF00038F00078F000F0F003E0FFFFC0FFFF80FFFE00F01E00F0
0F00F00700F00780F00380F003C0F001E0F001E0F000F0F000F0F00078F00038F0003CF0
001EF0001EF0000F18237BA21F>82 D<FFFFFFF0FFFFFFF0FFFFFFF0000F0000000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F00001C237EA221>84 D<F0003CF0003CF0003CF0003CF0003CF0
003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0
003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003C78007878007878
00783C00F01E01E01F87E00FFFC003FF0000FC0016247BA221>I<07E01FF83FFC381E20
1E000F000F000F000F00FF07FF1FFF3E0F780FF00FF00FF00FF00FF83F7FFF3FEF1F8F10
167E9517>97 D<01FC0007FF000FFF801F03803C0180780000780000700000F00000F000
00F00000F00000F00000F000007800007800007800003C00401F03C00FFFC007FF8001FC
0012167E9516>99 D<0003C00003C00003C00003C00003C00003C00003C00003C00003C0
0003C00003C00003C00003C003E3C00FFBC01FFFC03F0FC03C07C07803C07803C0F003C0
F003C0F003C0F003C0F003C0F003C0F003C0F003C07803C07803C03C07C03E0FC01FFFC0
0FFBC003E3C012237EA219>I<03F00007FC001FFE003E0F003C0780780380780380F001
C0FFFFC0FFFFC0FFFFC0F00000F00000F000007000007800007800003C00801F07800FFF
8007FF0001F80012167E9516>I<003F00FF01FF03C00380078007800780078007800780
07800780FFF8FFF8FFF80780078007800780078007800780078007800780078007800780
078007800780078007800780102380A20F>I<01F07807FFF80FFFF81F1F001E0F003C07
803C07803C07803C07803C07801E0F001F1F000FFE001FFC0019F0003800003800003C00
001FFE001FFFC01FFFE03FFFF07801F07800F8F00078F00078F00078F000787800F03E03
E01FFFC00FFF8001FC0015217F9518>I<F0F0F0F0000000000000000000F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>105 D<F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>108
D<F0F807C0F3FE1FF0F7FF3FF8FE0F7078FC0FE07CF807C03CF807C03CF007803CF00780
3CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF00780
3CF007803CF007803CF007803CF007803C1E167C9527>I<F1F8F3FCF7FEFE1EF80FF80F
F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10167C95
19>I<01FC0007FF000FFF801F07C03C01E07800F07800F0700070F00078F00078F00078
F00078F00078F000787800F07800F07C01F03E03E01F07C00FFF8007FF0001FC0015167F
9518>I<F1F000F7FC00FFFE00FC3F00F80F00F00780F00780F007C0F003C0F003C0F003
C0F003C0F003C0F003C0F007C0F00780F00F80F80F00FC3E00FFFE00F7F800F1F000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F0000012207C9519>I<03
E3C007FBC00FFFC01F0FC03C07C07C03C07803C0F803C0F003C0F003C0F003C0F003C0F0
03C0F003C0F803C07803C07803C03C07C03F0FC01FFFC00FFBC003E3C00003C00003C000
03C00003C00003C00003C00003C00003C00003C00003C012207E9519>I<F0E0F3E0F7E0
FF00FE00FC00F800F800F000F000F000F000F000F000F000F000F000F000F000F000F000
F0000B167C9511>I<07F01FFC3FFE3C0E7806780078007C003F003FF01FF80FFC01FE00
1F000F000F000FC00FF81EFFFE3FFC0FF010167F9513>I<0F000F000F000F000F000F00
FFF8FFF8FFF80F000F000F000F000F000F000F000F000F000F000F000F000F000F000F08
0F1C07FC07F803E00E1C7F9B12>I<F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0
0FF00FF00FF00FF00FF00FF00FF01FF83F7FFF7FCF1F0F10167C9519>I<7801F07C01E0
3E03C01E07C00F0780078F0007DE0003FC0001FC0000F80000700000F80001FC0003DC00
039E00078F000F07801E07801E03C03C01E07800F0F800F81516809516>120
D<F001E0F001E07803C07803C07C03C03C07803C07801E07801E07001E0F000F0F000F0E
00070E00079E00039C00039C00039C0001980001D80000F80000F00000F00000F00000E0
0000E00001E00001C00001C0000380007F80007F00007E000013207F9516>I
E /Fm 54 123 df<00F8F001F8F003F8F00780F00700F00F00F00F00F00F00F00F00F00F
00F00F00F00F00F0FFF8F0FFF8F0FFF8F00F00F00F00F00F00F00F00F00F00F00F00F00F
00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F01420809F
18>13 D<007000E001C00380078007000E001E001E003C003C003C007800780078007800
7000F000F000F000F000F000F000F000F000F000F000F000F00070007800780078007800
3C003C003C001E001E000E0007000780038001C000E000700C2E7EA112>40
D<E000700038001C001E000E0007000780078003C003C003C001E001E001E001E000E000
F000F000F000F000F000F000F000F000F000F000F000F000E001E001E001E001E003C003
C003C00780078007000E001E001C0038007000E0000C2E7DA112>I<7878787818303060
60E0050A7D830D>44 D<FFC0FFC0FFC00A037F8B0F>I<07F0000FFC001FFE00383F0070
0F00600780E00780E003C04003C04003C00003C00003C00003C0000780000780000F0000
0E00001C00003C0000780000E00001C0000380000700000E00001C0000380000700000FF
FFC0FFFFC0FFFFC0121F7E9E17>50 D<F0F0F0F0000000000000000000000000F0F0F0F0
04147C930D>58 D<001F0000001F0000003F8000003B8000003B8000007BC0000073C000
0071C00000F1E00000E1E00000E0E00001E0F00001E0F00001C0F00003C0780003C07800
0380780007803C0007803C0007003C000FFFFE000FFFFE000FFFFE001E000F001E000F00
3C000F803C0007803C000780780007C0780003C0780003C0F00003E01B207F9F1E>65
D<001FC000FFF801FFFC03E03C07800C0F00001E00003E00003C00007C00007800007800
00780000F00000F00000F00000F00000F00000F00000F00000F000007800007800007800
007C00003C00003E00001E00000F000207800E03E03E01FFFC00FFF0001FC017227DA01D
>67 D<FFFC00FFFF80FFFFC0F007E0F001F0F000F8F00078F0003CF0003CF0001EF0001E
F0000EF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0001EF0001E
F0001EF0003CF0007CF000F8F001F0F007E0FFFFC0FFFF80FFFC0018207B9F21>I<FFFF
C0FFFFC0FFFFC0F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000FFFF80FFFF80FFFF80F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000FFFFE0FFFFE0FFFFE013207B9F1B>I<FFFFC0FFFFC0FF
FFC0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FF
FF00FFFF00FFFF00F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F0000012207B9F1A>I<001FE000FFF801FFFE03E03E
07800E0F00001E00003E00003C00007C0000780000780000780000F00000F00000F00000
F00000F00000F00000F003FEF003FE7803FE78001E78001E7C001E3C001E3E001E1E001E
0F001E07801E03E03E01FFFE00FFF8001FC017227DA01E>I<F00078F00078F00078F000
78F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078FFFFF8FFFF
F8FFFFF8F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F000
78F00078F00078F00078F0007815207B9F20>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207C9F0D>I<F0003EF0007CF000F8F001F0F0
03E0F007C0F00780F00F00F01F00F03E00F07C00F0F800F1F000F3F800F3F800F7FC00FF
BC00FF1E00FE1F00FC0F00F80780F00780F003C0F003E0F001E0F000F0F000F8F00078F0
003CF0003CF0001EF0001F18207B9F20>75 D<F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF
80FFFF80FFFF8011207B9F19>I<F80001F8FC0003F8FC0003F8F4000378F6000778F600
0778F6000778F3000E78F3000E78F3000E78F3801E78F3801E78F1801C78F1C03C78F1C0
3C78F0C03878F0C03878F0E07878F0E07878F0607078F070F078F070F078F030E078F039
E078F039E078F019C078F019C078F019C078F00F8078F00F8078F00F8078F00000781D20
7B9F28>I<FC0078FE0078FE0078F60078F70078F70078F38078F38078F38078F3C078F1
C078F1E078F1E078F0E078F0F078F07078F07078F07878F03878F03C78F03C78F01C78F0
1E78F00E78F00E78F00E78F00778F00778F00378F003F8F003F8F001F815207B9F20>I<
003F000000FFC00003FFF00007E1F8000F807C001F003E001E001E003C000F003C000F00
780007807800078078000780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0
F00003C0F00003C0F00003C0F80007C07800078078000780780007803C000F003C000F00
1E001E001F003E000F807C0007E1F80003FFF00000FFC000003F00001A227DA021>I<FF
F800FFFF00FFFF80F00FC0F003E0F001E0F000F0F000F0F000F0F000F0F000F0F000F0F0
00F0F001E0F003E0F00FC0FFFF80FFFF00FFF800F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F0000014207B9F1D>I<003F000000FF
C00003FFF00007E1F8000F807C001F003E001E001E003C000F003C000F00780007807800
078078000780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F000
03C0F00003C0F00003C07800078078000780781E07803C0F0F003C0F8F001E079E001F03
FE000F83FC0007E1F80003FFF00000FFF800003F780000007C0000003E0000001E000000
1F0000000F801A277DA021>I<FFF800FFFF00FFFF80F007C0F003E0F001E0F000F0F000
F0F000F0F000F0F000F0F001E0F003E0F007C0FFFF80FFFF00FFF800F03C00F01E00F01E
00F00F00F00F00F00780F00780F003C0F001C0F001E0F000F0F000F0F00078F00078F000
3C16207B9F1D>I<01FC0007FF800FFFC01F03C03C00C03C000078000078000078000078
00007800007C00003C00003F00001FE0000FFC0007FE0001FF00003F800007C00003C000
03E00001E00001E00001E00001E00001E00001C0C003C0F007C0FC0F807FFF001FFE0003
F80013227EA019>I<FFFFFFC0FFFFFFC0FFFFFFC0001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E00001A207E9F1F>I<
F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0
F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0
F000F07801E07801E03C03C03C03C01F0F800FFF0007FE0001F80014217B9F1F>I<F000
01E0F00001E0780003C0780003C0780003C03C0007803C0007803C0007801E000F001E00
0F001F000F000F001E000F001E0007801C0007803C0007803C0003C0380003C0780003C0
780001E0700001E0F00001E0F00000F0E00000F1E00000F1E0000071C000007BC000003B
8000003B8000003F8000001F0000001F00001B207F9F1E>I<F0007C000FF0007E000FF0
007E000F78006E000E7800EE001E7800E7001E7800E7001E3C00E7003C3C01E7803C3C01
C7803C3C01C3803C1E01C380781E03C3C0781E0383C0780E0381C0700F0381C0F00F0781
E0F00F0701E0F0070700E0E0078700E1E0078F00E1E0078E00F1E0038E0071C0038E0071
C003CE0073C001DC00738001DC003B8001DC003B8001DC003B8000F8003F0000F8001F00
00F8001F0028207F9F2B>I<780007807C000F003E001F001E001E000F003C000F807C00
0780780003C0F00003E1F00001F1E00000F3C000007FC000007F8000003F0000001F0000
001E0000003F0000007F8000007FC00000F3C00001F1E00001E0F00003C0F80007C07800
07803C000F003E001F001E001E000F003C000F807C0007C0780003C0F00003E01B207F9F
1E>I<F80000F87C0001F03C0001E03E0003E01F0003C00F0007800F800F8007C00F0003
C01F0003E01E0001F03C0000F07C00007878000078F000003CF000001CE000001FE00000
0FC000000780000007800000078000000780000007800000078000000780000007800000
07800000078000000780000007800000078000000780001D20809F1E>I<07E03FF87FFC
701E401F000F000F000F003F07FF1FFF7E0FF80FF00FF00FF00FF83F7FFF3FEF1F8F1014
7E9316>97 D<F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F1F000F7FC00FFFE00FC3E00F80F00F00F00F00780F00780F00780F00780
F00780F00780F00780F00F00F00F00F81F00FC3E00FFFC00F7F800F1E00011207D9F17>
I<03F00FFC1FFE3E0E3C0278007800F000F000F000F000F000F000780078003C013E0F1F
FF0FFE03F010147E9314>I<000780000780000780000780000780000780000780000780
00078000078000078000078007C7800FF7801FFF803E1F807C0780780780F80780F00780
F00780F00780F00780F00780F00780F00780780780780F803E1F801FFF800FF78007C780
11207E9F17>I<03F0000FFC001FFE003E1F003C0700780700700380FFFF80FFFF80FFFF
80F00000F00000F000007000007800003C01003E07001FFF0007FE0001F80011147F9314
>I<007E01FE03FE078007000F000F000F000F000F000F000F00FFF0FFF0FFF00F000F00
0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F20809F0E>
I<03E0F00FFFF01FFFF03E3E003C1E00780F00780F00780F00780F00780F003C1E003E3E
001FFC003FF80033E0003000003800003FFE003FFF801FFFC03FFFE07803F0F000F0F000
F0F000F0F801F07E07E03FFFC00FFF0003FC00141E7F9317>I<F000F000F000F000F000
F000F000F000F000F000F000F000F1F8F3FCF7FEFC1FF80FF80FF00FF00FF00FF00FF00F
F00FF00FF00FF00FF00FF00FF00FF00FF00F10207D9F17>I<F0F0F0F000000000000000
00F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F0B>I<F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F01F00F01E00F03C
00F07800F0F000F1E000F3C000F78000FFC000FFC000FFE000F9F000F8F000F0F800F07C
00F07C00F03E00F01E00F01F00F00F8011207D9F16>107 D<F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F0B>I<F0FC07E0F3FE1FF0
F7FF3FF8FE0FF07CF807C03CF807C03CF007803CF007803CF007803CF007803CF007803C
F007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803C
1E147D9325>I<F1F8F3FCF7FEFC1FF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF0
0FF00FF00FF00FF00FF00F10147D9317>I<01F80007FE001FFF803F0FC03C03C07801E0
7801E0F000F0F000F0F000F0F000F0F000F0F000F07801E07801E03C03C03F0FC01FFF80
07FE0001F80014147F9317>I<F1F000F7FC00FFFE00FC3E00F81F00F00F00F00F80F007
80F00780F00780F00780F00780F00780F00F00F00F00F81F00FC3E00FFFC00F7F800F1E0
00F00000F00000F00000F00000F00000F00000F00000F00000F00000111D7D9317>I<03
C7800FF7801FFF803E1F807C0F80780780780780F00780F00780F00780F00780F00780F0
0780F807807807807C0F803E1F801FFF800FF78007C78000078000078000078000078000
0780000780000780000780000780111D7E9317>I<F0E0F3E0F7E0FF00FC00FC00F800F8
00F000F000F000F000F000F000F000F000F000F000F000F0000B147D9310>I<07F01FFC
3FFC780C7800780078007C003FC01FF00FF803F8007C003C003CC03CF07CFFF87FF00FC0
0E147F9311>I<1E001E001E001E001E001E00FFF0FFF0FFF01E001E001E001E001E001E
001E001E001E001E001E001E001E001E201FF00FF007C00C1A7F9910>I<F00FF00FF00F
F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF01FF03FFFFF7FEF3F0F1014
7D9317>I<F003C0F003C07803807807807807803C0F003C0F003C0F001E0E001E1E001E
1E000E1C000F3C000F3C0007380007380007380003B00003F00001E00012147F9315>I<
7801E07C03C03E07801E0F000F0F00079E0003FC0003F80001F80000F00001F00001F800
03FC00079E000F0F000E0F001E07803C03C07801E0F801F01414809315>120
D<F003C0F003C07807807807807C07803C0F003C0F001E0F001E1E000E1E000F1C000F1C
00073C0007380003B80003B80003B00001B00001F00000E00000E00001C00001C00001C0
000380000780007F00007E00007C0000121D7F9315>I<7FFF7FFF7FFF003E003C007800
F800F001E003E007C007800F001F001E003C007C00FFFFFFFFFFFF10147F9314>I
E /Fn 45 123 df<00000F80003F8F80007F8F8000FF8F8001FF8F8003E0000003C00000
07C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C00000
FFFF8F80FFFF8F80FFFF8F8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F80
07C00F8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F80
07C00F8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F8007C00F80
192B7FAA20>12 D<F8F8F8F8F805057A8411>46 D<00180000380000F80007F800FFF800
FFF800F8F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800
00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800
00F80000F80000F80000F80000F80000F80000F80000F8007FFFF07FFFF07FFFF014287B
A71E>49 D<00FE0003FFC007FFE00FFFF01F03F83C00FC38007E78003E70003EF0001FF0
001F60001F20001F00001F00001F00001F00003E00003E00007C00007C0000F80001F000
01E00003C0000780000F00001E00003C0000780000F00001E00003C0000780000F00001E
00003C00007FFFFF7FFFFF7FFFFF7FFFFF18287EA71E>I<007F000001FFC00007FFF000
0FFFF8001FC1F8003E007C003C003E0078003E0038003E0010003E0000003E0000003E00
00003C0000007C000000FC000001F8000007F00000FFE00000FFC00000FFE00000FFF000
0001FC0000007C0000003E0000001F0000001F0000000F8000000F8000000F8000000F80
00000F8040000F8060001F00F0001F00F8003F007E007E003F81FC001FFFF8000FFFF000
03FFE000007F000019297EA71E>I<0003F0000007F0000005F000000DF000000DF00000
1DF0000039F0000039F0000079F0000079F00000F1F00000F1F00001E1F00003E1F00003
E1F00007C1F00007C1F0000F81F0000F81F0001F01F0001F01F0003E01F0007C01F0007C
01F000F801F000FFFFFF80FFFFFF80FFFFFF80FFFFFF800001F0000001F0000001F00000
01F0000001F0000001F0000001F0000001F0000001F0000001F00019277EA61E>I<3FFF
FC3FFFFC3FFFFC3FFFFC3E00003E00003E00003E00003E00003E00003E00003E00003E00
003E00003E3F003EFFC03FFFE03FFFF03FE1F83F807C3F003E3E003E00003E00001F0000
1F00001F00001F00001F00001F00001F20001F60003E70003EF8007C7C00FC3F03F81FFF
F00FFFE007FF8000FE0018287EA61E>I<000FF000003FFC0000FFFC0001FFFC0003F80C
0007E000000FC000000F8000001F0000001E0000003E0000003C0000007C0000007C0000
007C3FE000F8FFF000F9FFF800FBFFFC00FF807E00FF003E00FE003F00FC001F00FC001F
00FC000F80F8000F80F8000F80F8000F80F8000F8078000F807C000F807C000F807C000F
003E001F003E001F001F003E001F807C000FC1FC0007FFF80003FFF00001FFC000007F00
0019297EA71E>I<FFFFFF80FFFFFF80FFFFFF80FFFFFF800000078000000F0000001E00
00003C0000007C00000078000000F0000001F0000001E0000003C0000007C00000078000
000F8000000F0000001F0000001F0000001E0000003E0000003E0000007C0000007C0000
007C00000078000000F8000000F8000000F8000000F8000000F8000001F0000001F00000
01F0000001F0000001F0000001F0000001F0000019277EA61E>I<007F000001FFC00007
FFF0000FFFF8001FC1FC003F007E003E003E007E003F007C001F007C001F007C001F007C
001F007C001F003E003E003E003E001F007C000FC1F80007FFF00003FFE00003FFE0000F
FFF8001FC1FC003F007E003E003E007C001F007C001F00F8000F80F8000F80F8000F80F8
000F80F8000F80F8000F807C001F007C001F007E003F003F007E001FC1FC000FFFF80007
FFF00003FFE000007F000019297EA71E>I<0001F000000003F800000003F800000007FC
00000007BC00000007BC0000000F3E0000000F1E0000000F1E0000001F1F0000001E1F00
00001E0F0000003E0F8000003C0F8000003C078000007C07C000007807C00000F803E000
00F803E00000F003E00001F001F00001F001F00001E001F00003E000F80003E000F80003
C000F80007FFFFFC0007FFFFFC000FFFFFFE000F80003E000F80003E001F00003F001F00
001F001E00001F003E00000F803E00000F803C00000F807C000007C07C000007C0780000
07C0F8000003E0F8000003E0232A7EA928>65 D<0001FF00000FFFE0003FFFF8007FFFF8
00FE01F801F8003003F0001007C000000F8000001F8000001F0000003E0000003E000000
7E0000007C0000007C0000007C000000F8000000F8000000F8000000F8000000F8000000
F8000000F8000000F8000000F8000000F80000007C0000007C0000007C0000007E000000
3E0000003E0000001F0000001F8000000F80000007C0000003F0000401F8001C00FE00FC
007FFFFC003FFFF8000FFFE00001FF001E2C7CAA26>67 D<FFFFF00000FFFFFC0000FFFF
FF0000F8003FC000F80007E000F80003F000F80001F800F80000FC00F800007C00F80000
3E00F800001E00F800001F00F800000F00F800000F80F800000F80F800000780F8000007
C0F8000007C0F8000007C0F8000007C0F8000007C0F8000007C0F8000007C0F8000007C0
F8000007C0F8000007C0F800000780F800000F80F800000F80F800000F80F800001F00F8
00001F00F800003E00F800007E00F800007C00F80000F800F80003F000F80007E000F800
3FC000FFFFFF0000FFFFFE0000FFFFF00000222A7BA92B>I<FFFFFFE0FFFFFFE0FFFFFF
E0FFFFFFE0F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F8000000F8000000FFFFFF80FFFFFF80FFFFFF
80FFFFFF80F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000FFFFFF
F0FFFFFFF0FFFFFFF0FFFFFFF01C2A7BA924>I<FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC0
F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
F8000000F8000000F8000000F8000000F8000000F8000000FFFFFE00FFFFFE00FFFFFE00
FFFFFE00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
F8000000F80000001A2A7BA922>I<0001FF00000FFFE0003FFFFC007FFFFE00FF01FE01
F8003E03F0000C07C000000FC000001F8000001F0000003F0000003E0000007E0000007C
0000007C0000007C000000F8000000F8000000F8000000F8000000F8000000F8000000F8
000000F8001FFEF8001FFEF8001FFE7C001FFE7C00003E7C00003E7E00003E3E00003E3F
00003E1F00003E1F80003E0FC0003E07C0003E03F0003E01F8003E00FF00FE007FFFFE00
3FFFFC000FFFE00001FF001F2C7CAA28>I<F800003EF800003EF800003EF800003EF800
003EF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800
003EF800003EF800003EF800003EF800003EFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEF800
003EF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800
003EF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800
003EF800003E1F2A7BA92A>I<F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7AA911>I<FE0000007F80FE000000
7F80FE0000007F80FF000000FF80FB000000EF80FB800001EF80FB800001EF80FB800001
EF80F9C00003CF80F9C00003CF80F9C00003CF80F8E000078F80F8E000078F80F8F0000F
8F80F8F0000F8F80F870000F0F80F878001F0F80F878001F0F80F838001E0F80F83C003E
0F80F83C003E0F80F81E007C0F80F81E007C0F80F80E00780F80F80F00F80F80F80F00F8
0F80F80700F00F80F80781F00F80F80781F00F80F80381E00F80F803C3E00F80F803C3E0
0F80F801C3C00F80F801E7C00F80F800E7800F80F800E7800F80F800E7800F80F8007F00
0F80F8007F000F80F8007F000F80F8003E000F80F80000000F80292A7BA934>77
D<FFFFE000FFFFFC00FFFFFF00F8003F80F8000FC0F80007E0F80001E0F80001F0F80000
F0F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F0F80001F0F80001
F0F80003E0F8000FC0F8003F80FFFFFF00FFFFFE00FFFFF000F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F8000000F80000001D2A7BA926>80
D<FFFFE000FFFFFC00FFFFFF00F8003FC0F80007E0F80001F0F80000F8F80000F8F80000
7CF800007CF800007CF800007CF800007CF800007CF80000F8F80000F8F80001F0F80007
F0F8003FE0FFFFFF80FFFFFF00FFFFFC00FFFFF000F801F000F800F800F8007800F8007C
00F8003C00F8003E00F8001F00F8001F00F8000F80F8000780F80007C0F80003E0F80003
E0F80001F0F80001F0F80000F8F800007CF800007CF800003E1F2A7BA927>82
D<FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF00000F800000000F800000000F80000
0000F800000000F800000000F800000000F800000000F800000000F800000000F8000000
00F800000000F800000000F800000000F800000000F800000000F800000000F800000000
F800000000F800000000F800000000F800000000F800000000F800000000F800000000F8
00000000F800000000F800000000F800000000F800000000F800000000F800000000F800
000000F800000000F800000000F800000000F800000000F800000000F80000242A7EA929
>84 D<F800007CF800007CF800007CF800007CF800007CF800007CF800007CF800007CF8
00007CF800007CF800007CF800007CF800007CF800007CF800007CF800007CF800007CF8
00007CF800007CF800007CF800007CF800007CF800007CF800007CF800007CF800007CF8
00007CF800007CF800007CF800007CF800007CF800007C7C0000F87C0000F87C0000F83E
0001F01F0003E01F8007E00FC00FC007F03F8001FFFE0000FFFC00001FE0001E2B7BA929
>I<01FE000FFF803FFFC03FFFE03C03F03001F00001F80000F80000F80000F80000F800
00F8007FF807FFF81FFFF83FE0F87F00F8FC00F8F800F8F800F8F800F8FC01F87E07F87F
FFF83FFFF81FFCF80FE0F8151B7E9A1D>97 D<F80000F80000F80000F80000F80000F800
00F80000F80000F80000F80000F80000F80000F80000F80000F80000F83F00F9FFC0FBFF
E0FFFFF0FF07F0FC01F8F800FCF8007CF8007CF8007EF8003EF8003EF8003EF8003EF800
3EF8003EF8003EF8007CF8007CF8007CFC00F8FC01F8FF07F0FFFFE0FBFFC0F9FF80F87E
00172A7BA91F>I<007FC001FFF007FFFC0FFFFC1FC07C1F00083E00007C00007C00007C
0000F80000F80000F80000F80000F80000F80000F800007C00007C00007E00003E00001F
000C1FC07C0FFFFC07FFFC01FFF0007F80161B7E9A1B>I<00003E00003E00003E00003E
00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00FC3E
03FF3E07FFFE0FFFFE1FC1FE3F007E3E003E7C003E7C003EFC003EF8003EF8003EF8003E
F8003EF8003EF8003EF8003EFC003E7C003E7C003E3E007E3F00FE1FC1FE0FFFFE07FFBE
03FF3E00FC3E172A7EA91F>I<007E0003FF8007FFC00FFFE01F83F03F00F03E00787C00
787C003878003CFFFFFCFFFFFCFFFFFCFFFFFCF80000F80000F800007800007C00007C00
003E00003F000C1FC07C0FFFFC07FFFC01FFF0007F80161B7E9A1B>I<001FC0007FC000
FFC001FFC003F00003E00007C00007C00007C00007C00007C00007C00007C00007C00007
C000FFFE00FFFE00FFFE0007C00007C00007C00007C00007C00007C00007C00007C00007
C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007
C00007C00007C00007C000122A7FA912>I<00F8078003FE7FC00FFFFFC01FFFFFC01F07
C0003E03E0003E03E0007C01F0007C01F0007C01F0007C01F0007C01F0007C01F0003E03
E0003E03E0001F07C0001FFFC0003FFF80003BFE000038F8000078000000780000003C00
00003FFFC0003FFFF8001FFFFC001FFFFE003FFFFF007C007F00F8001F80F8000F80F800
0F80F8000F80FC001F807E003F003F80FE003FFFFE000FFFF80007FFF00000FF80001A28
7E9A1E>I<F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8
0000F80000F80000F80000F80000F83F00F8FF80FBFFC0FFFFE0FF07E0FE03F0FC01F0FC
01F0FC01F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F8
01F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0142A7BA91F>I<F8F8F8F8F800
000000000000000000F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
052A7CA90E>I<F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8052A7CA90E>108 D<F83F003F00F8FFC0FFC0FBFFE3FF
E0FFFFF7FFF0FF83F783F0FE01FE01F8FC00FC00F8FC00FC00F8FC00FC00F8F800F800F8
F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F8
00F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800
F800F8F800F800F8F800F800F8251B7B9A30>I<F83F00F8FF80FBFFC0FFFFE0FF07E0FE
03F0FC01F0FC01F0FC01F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F8
01F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0141B7B9A1F>I<
007F000001FFC00007FFF0000FFFF8001FC1FC003F007E003E003E007C001F007C001F00
78000F00F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F807C001F00
7C001F007E003F003E003E003F007E001FC1FC000FFFF80007FFF00001FFC000007F0000
191B7E9A1E>I<F83F00F9FFC0FBFFE0FFFFF0FF07F0FC01F8F800FCF800FCF8007CF800
7EF8003EF8003EF8003EF8003EF8003EF8003EF8003EF8007CF8007CF800FCFC00F8FC03
F8FF07F0FFFFE0FBFFC0F9FF80F87E00F80000F80000F80000F80000F80000F80000F800
00F80000F80000F80000F80000F8000017277B9A1F>I<00FC3E03FF3E07FFBE0FFFFE1F
C1FE3F80FE3E007E7E003E7C003E7C003EF8003EF8003EF8003EF8003EF8003EF8003EF8
003EFC003E7C003E7E003E3E007E3F00FE1FC1FE1FFFFE0FFFBE03FF3E01F83E00003E00
003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E17277E9A
1F>I<F838F8F8F9F8FBF8FFC0FF00FE00FE00FC00FC00F800F800F800F800F800F800F8
00F800F800F800F800F800F800F800F800F800F8000D1B7B9A14>I<03FC001FFF803FFF
C07FFFC07C07C0F80080F80000F80000F80000FC00007F80007FF8003FFE001FFF0007FF
8000FFC0000FE00007E00003E00003E04003E0E007E0FC0FC0FFFFC07FFF801FFE0003F8
00131B7E9A17>I<07C00007C00007C00007C00007C00007C00007C000FFFFC0FFFFC0FF
FFC007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007
C00007C00007C00007C00007C00007C00007C00007C04007E1C003FFE003FFE001FF8000
FC0013227FA116>I<F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0
F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F801F0F803F0
F803F0FC0FF0FFFFF07FFDF03FF9F01FC1F0141B7B9A1F>I<7C000FC03E001F803F001F
001F803E000F807C0007C0FC0003E0F80001F1F00001FBE00000FFC000007FC000003F80
00001F0000001F0000003F8000007FC00000FBC00000F3E00001F1F00003E0F80007C07C
000F807C000F803E001F001F003E000F807E000FC0FC0007E01B1B809A1C>120
D<F8000F80FC000F807C001F007E001F003E003E003E003E001F003E001F007C001F007C
000F807C000F80F80007C0F80007C0F00007C1F00003E1F00003E1E00001E1E00001E3E0
0001F3C00000F3C00000F38000007380000073800000370000003F0000003E0000001E00
00001E0000003C0000003C0000003C0000007800000078000000F0000000F000007FE000
007FE000007FC000007F00000019277F9A1C>I<FFFFF8FFFFF8FFFFF8FFFFF00003F000
07E00007C0000FC0001F80001F00003E00007E0000FC0000F80001F80003F00003E00007
C0000FC0001F80001F00003F00007E00007FFFFCFFFFFCFFFFFCFFFFFC161B7E9A1A>I
E /Fo 12 121 df<FFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFE00FF
FFFFFFFFFFFFFE00FFFFFFFFFFFFFFFF00001FFFC00001FFFF00001FFFC000001FFF0000
1FFFC0000007FF00001FFFC0000003FF00001FFFC0000000FF00001FFFC00000007F0000
1FFFC00000007F00001FFFC00000003F00001FFFC00000003F80001FFFC00000001F8000
1FFFC00000001F80001FFFC00000001F80001FFFC00000000F80001FFFC00000000F8000
1FFFC0007C000F80001FFFC0007C000F80001FFFC0007C0007C0001FFFC0007C0007C000
1FFFC0007C0007C0001FFFC0007C0007C0001FFFC000FC000000001FFFC000FC00000000
1FFFC000FC000000001FFFC001FC000000001FFFC003FC000000001FFFC01FFC00000000
1FFFFFFFFC000000001FFFFFFFFC000000001FFFFFFFFC000000001FFFFFFFFC00000000
1FFFFFFFFC000000001FFFC01FFC000000001FFFC003FC000000001FFFC001FC00000000
1FFFC000FC000000001FFFC000FC000000001FFFC000FC000000001FFFC0007C00007C00
1FFFC0007C00007C001FFFC0007C00007C001FFFC0007C0000F8001FFFC0007C0000F800
1FFFC0007C0000F8001FFFC000000000F8001FFFC000000001F8001FFFC000000001F000
1FFFC000000001F0001FFFC000000001F0001FFFC000000003F0001FFFC000000003F000
1FFFC000000007F0001FFFC000000007E0001FFFC00000000FE0001FFFC00000001FE000
1FFFC00000003FE0001FFFC00000007FE0001FFFC0000000FFE0001FFFC0000003FFC000
1FFFC000000FFFC0001FFFC00000FFFFC0FFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFC0FF
FFFFFFFFFFFFFF80FFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFF8046467CC54E>69
D<FFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFE000FFFE000000FFFE000
000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE00000
0FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000F
FFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFF
E000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE0
00000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000
000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE00000
0FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000F
FFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFF
E000000FFFE000FFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFE27477DC6
2D>73 D<0007FFFC000000007FFFFFC0000001FFFFFFF8000003FFFFFFFE000007FE001F
FF000007FF0003FFC0000FFF8001FFE0000FFF8000FFF0000FFF80007FF0000FFF80007F
F8000FFF80007FF80007FF00003FFC0007FF00003FFC0003FE00003FFC0000F800003FFC
00000000003FFC00000000003FFC00000000003FFC00000000003FFC00000007FFFFFC00
0000FFFFFFFC000007FFFFFFFC00003FFFE03FFC0000FFFE003FFC0003FFF0003FFC0007
FFC0003FFC000FFF00003FFC001FFE00003FFC003FFC00003FFC007FF800003FFC007FF8
00003FFC00FFF000003FFC00FFF000003FFC00FFF000003FFC00FFF000003FFC00FFF000
003FFC00FFF000007FFC007FF80000FFFC007FF80001EFFC003FFC0003EFFC003FFF0007
CFFF000FFFC03F8FFFF807FFFFFF07FFFC01FFFFFC03FFFC007FFFF001FFFC0003FF8000
7FF8362E7DAD3A>97 D<00001FFFC0000000FFFFF8000007FFFFFE00001FFFFFFF80007F
FC00FFC000FFE001FFC001FFC003FFE003FF8003FFE007FF0003FFE00FFE0003FFE00FFE
0003FFE01FFC0001FFC01FFC0001FFC03FFC0000FF803FFC00003E007FF8000000007FF8
000000007FF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8
00000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8000000007FF8
000000007FF8000000007FFC000000003FFC000000003FFC000000001FFC000000F81FFE
000000F80FFE000000F80FFF000001F007FF800003F003FFC00007E001FFE0000FC000FF
F0001F80007FFE00FF00001FFFFFFE000007FFFFF8000000FFFFE00000001FFE00002D2E
7CAD35>99 D<00001FFE00000001FFFFE0000007FFFFF800001FFFFFFE00007FFC07FF00
00FFE001FF8001FFC0007FC003FF80003FE007FF00003FF00FFE00001FF01FFE00000FF8
1FFC00000FF83FFC00000FFC3FFC000007FC7FFC000007FC7FF8000007FC7FF8000007FE
7FF8000007FEFFF8000007FEFFF8000007FEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFFFE
FFFFFFFFFFFCFFF800000000FFF800000000FFF800000000FFF8000000007FF800000000
7FF8000000007FFC000000003FFC000000003FFC000000003FFC0000001C1FFE0000003E
0FFE0000003E07FF0000007E07FF000000FC03FF800001F801FFC00003F0007FF0001FE0
003FFE00FFC0001FFFFFFF800007FFFFFE000000FFFFF80000000FFF80002F2E7DAD36>
101 D<000000FFC000000007FFF80000003FFFFC000000FFFFFF000001FFC1FF000007FF
03FF80000FFC03FF80000FF807FFC0001FF807FFC0003FF007FFC0003FF007FFC0003FE0
03FF80007FE003FF80007FE001FF00007FE000FE00007FE0003800007FE0000000007FE0
000000007FE0000000007FE0000000007FE0000000007FE0000000007FE0000000007FE0
000000007FE0000000007FE0000000FFFFFFFE0000FFFFFFFE0000FFFFFFFE0000FFFFFF
FE0000FFFFFFFE0000007FF0000000007FF0000000007FF0000000007FF0000000007FF0
000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0
000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0
000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0
000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0
000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0
000000007FF00000003FFFFFF800003FFFFFF800003FFFFFF800003FFFFFF800003FFFFF
F800002A487DC724>I<007FC000FFFFC000FFFFC000FFFFC000FFFFC000FFFFC00003FF
C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF
C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF
C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF
C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF
C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF
C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF
C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000FFFFFF80FFFFFF80FFFF
FF80FFFFFF80FFFFFF8019487CC720>108 D<007FC001FFC00000FFFFC00FFFF80000FF
FFC03FFFFE0000FFFFC0FFFFFF0000FFFFC1FC07FF8000FFFFC3E003FFC00003FFC7C001
FFC00001FFCF0001FFE00001FFDE0000FFE00001FFDC0000FFE00001FFFC0000FFF00001
FFF80000FFF00001FFF00000FFF00001FFF00000FFF00001FFF00000FFF00001FFE00000
FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001
FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000
FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001
FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000
FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001
FFE00000FFF00001FFE00000FFF00001FFE00000FFF000FFFFFFC07FFFFFE0FFFFFFC07F
FFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE03B2E7CAD42>110
D<00FF803F8000FFFF80FFF000FFFF83FFFC00FFFF87FFFE00FFFF8FC3FF00FFFF8F07FF
0003FF9E0FFF8001FFBC0FFF8001FFB80FFF8001FFF80FFF8001FFF00FFF8001FFF007FF
0001FFF007FF0001FFE003FE0001FFE000F80001FFE000000001FFE000000001FFC00000
0001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC00000
0001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC00000
0001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC00000
0001FFC000000001FFC000000001FFC000000001FFC000000001FFC0000000FFFFFFE000
00FFFFFFE00000FFFFFFE00000FFFFFFE00000FFFFFFE00000292E7CAD31>114
D<000FFF00E0007FFFF3E001FFFFFFE007FFFFFFE00FF800FFE01FC0001FE03F80000FE0
3F000007E07F000003E07F000003E0FF000003E0FF000003E0FF800003E0FFC0000000FF
F0000000FFFE000000FFFFF800007FFFFFC0007FFFFFF0003FFFFFFC001FFFFFFF000FFF
FFFF8007FFFFFFC003FFFFFFE000FFFFFFF0003FFFFFF00003FFFFF800001FFFF8000000
FFFC0000001FFC7800000FFCF8000007FCF8000003FCFC000003FCFC000003FCFE000003
F8FE000003F8FF000003F8FF800007F0FFC0000FF0FFF0001FE0FFFC00FFC0FFFFFFFF80
FC7FFFFE00F81FFFF800E003FF8000262E7CAD2F>I<0001F000000001F000000001F000
000001F000000001F000000001F000000003F000000003F000000003F000000007F00000
0007F000000007F00000000FF00000000FF00000001FF00000003FF00000003FF0000000
7FF0000001FFF0000003FFF000000FFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFF
FFFFC000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0
000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF000
0000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF00000
00FFF0000000FFF0000000FFF001F000FFF001F000FFF001F000FFF001F000FFF001F000
FFF001F000FFF001F000FFF001F000FFF001F0007FF001E0007FF803E0003FF803E0003F
FC07C0001FFE0F80000FFFFF800007FFFE000001FFFC0000001FF00024427EC12E>I<7F
FFFF801FFFFF007FFFFF801FFFFF007FFFFF801FFFFF007FFFFF801FFFFF007FFFFF801F
FFFF00007FF80001FF0000007FFC0001FC0000003FFE0003F80000001FFF0007F0000000
0FFF0007E000000007FF800FC000000003FFC01F8000000003FFE03F8000000001FFF07F
0000000000FFF8FE00000000007FF9FC00000000003FFFF800000000003FFFF000000000
001FFFE000000000000FFFC0000000000007FFC0000000000003FFC0000000000001FFE0
000000000001FFF0000000000001FFF8000000000003FFFC000000000003FFFE00000000
0007FFFE00000000000FEFFF00000000001FCFFF80000000003F87FFC0000000007F03FF
E000000000FE01FFE000000001FC00FFF000000001F8007FF800000003F0007FFC000000
07F0003FFE0000000FE0001FFF0000001FC0000FFF0000003F800007FF800000FF800007
FFC000FFFFF8003FFFFFC0FFFFF8003FFFFFC0FFFFF8003FFFFFC0FFFFF8003FFFFFC0FF
FFF8003FFFFFC03A2E7EAD3F>120 D E /Fp 8 117 df<00000FF80000007FFF000003FF
FF80000FFC07C0001FE003E0007FC001F000FF800FF001FF001FF803FE003FF807FE003F
F807FC003FF80FFC003FF81FF8003FF81FF8003FF81FF8001FF03FF8000FE03FF8000000
7FF00000007FF00000007FF00000007FF0000000FFF07FF000FFF1FFFE00FFF3F7FF00FF
F7807FC0FFF7003FE0FFFE001FF0FFFC001FF8FFFC001FFCFFFC000FFCFFF8000FFEFFF8
000FFEFFF8000FFEFFF0000FFFFFF0000FFFFFF0000FFFFFF0000FFF7FF0000FFF7FF000
0FFF7FF0000FFF7FF0000FFF7FF0000FFF3FF0000FFF3FF0000FFF3FF0000FFE1FF8000F
FE1FF8000FFE0FF8000FFC0FF8001FFC07FC001FF803FE003FF003FF007FE001FF80FFC0
007FFFFF80003FFFFE000007FFF8000000FFC00028397CB731>54
D<0000001FFF000070000001FFFFE000F000000FFFFFFC01F000007FFFFFFF03F00001FF
FE007F87F00007FFE0000FEFF0000FFF000003FFF0003FFE000001FFF0007FF8000000FF
F000FFF00000007FF001FFE00000003FF003FFC00000001FF003FF800000001FF007FF80
0000000FF00FFF0000000007F00FFF0000000007F01FFE0000000007F01FFE0000000003
F03FFC0000000003F03FFC0000000003F07FFC0000000001F07FFC0000000001F07FFC00
00000001F07FF8000000000000FFF8000000000000FFF8000000000000FFF80000000000
00FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF800
0000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF80000000000
00FFF80000000000007FF80000000000007FFC0000000000007FFC0000000000F07FFC00
00000000F03FFC0000000000F03FFC0000000000F01FFE0000000000F01FFE0000000001
F00FFF0000000001E00FFF0000000003E007FF8000000003E003FF8000000007C003FFC0
00000007C001FFE00000000F8000FFF00000001F00007FF80000003E00003FFE0000007C
00000FFF000001F8000007FFE00007F0000001FFFE003FC00000007FFFFFFF800000000F
FFFFFC0000000001FFFFF000000000001FFF0000003C3D7BBB47>67
D<001FFF00000001FFFFF0000007FFFFFC00000FF807FF00001FF801FF80001FFC00FFC0
001FFC007FE0001FFC007FE0001FFC007FF0001FFC003FF0000FF8003FF00007F0003FF0
0001C0003FF0000000003FF0000000003FF0000000003FF0000000FFFFF000000FFFFFF0
00007FF83FF00003FF803FF00007FE003FF0001FFC003FF0003FF8003FF0007FF0003FF0
007FE0003FF000FFE0003FF000FFC0003FF000FFC0003FF000FFC0003FF000FFC0007FF0
00FFC0007FF000FFE000FFF0007FF001DFF0003FF803DFF8001FFC0F8FFFF00FFFFE0FFF
F001FFFC07FFF0003FE000FFF02C267DA530>97 D<0001FFC000000FFFF800003FFFFE00
00FF80FF0001FE003F8007FC001FC00FF8000FE00FF8000FF01FF00007F03FF00007F83F
F00007F87FE00007F87FE00003FC7FE00003FC7FE00003FCFFE00003FCFFFFFFFFFCFFFF
FFFFFCFFFFFFFFFCFFE0000000FFE0000000FFE0000000FFE00000007FE00000007FE000
00007FE00000003FE00000003FF000003C1FF000003C1FF000003C0FF800007807FC0000
F803FE0001F001FF0007E000FFC03FC0003FFFFF000007FFFC000000FFE00026267DA52D
>101 D<00FF00000000FFFF00000000FFFF00000000FFFF00000000FFFF0000000007FF
0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF
0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF
0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF007FC00003FF
01FFF80003FF07FFFE0003FF1F03FF0003FF3C01FF0003FF7801FF8003FF7000FF8003FF
E000FFC003FFC000FFC003FFC000FFC003FF8000FFC003FF8000FFC003FF0000FFC003FF
0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF
0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF
0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF
0000FFC003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFF
FC3FFFFF303C7CBB37>104 D<00FF01FF8000FFFF0FFFF000FFFF3FFFFC00FFFFFE03FF
00FFFFF001FFC003FFE0007FE003FF80007FF003FF80003FF803FF00001FF803FF00001F
FC03FF00000FFC03FF00000FFE03FF00000FFE03FF00000FFE03FF000007FF03FF000007
FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007
FF03FF000007FF03FF000007FF03FF00000FFE03FF00000FFE03FF00000FFE03FF00001F
FC03FF00001FFC03FF00001FF803FF80003FF003FFC0007FF003FFE000FFE003FFF001FF
8003FFFC07FF0003FF3FFFFC0003FF0FFFF00003FF01FF000003FF0000000003FF000000
0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000
0003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000FFFFFC0000
00FFFFFC000000FFFFFC000000FFFFFC00000030377DA537>112
D<00FE03F000FFFE0FFE00FFFE3FFF80FFFE3C7FC0FFFE707FC007FEF0FFE003FEE0FFE0
03FEC0FFE003FFC0FFE003FF80FFE003FF807FC003FF803F8003FF800E0003FF00000003
FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF
00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00
000003FF00000003FF00000003FF00000003FF00000003FF000000FFFFFE0000FFFFFE00
00FFFFFE0000FFFFFE000023267DA529>114 D<00078000000780000007800000078000
00078000000F8000000F8000000F8000000F8000001F8000001F8000003F8000003F8000
007F800000FF800001FF800007FF80001FFFFFF0FFFFFFF0FFFFFFF0FFFFFFF001FF8000
01FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF8000
01FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF8000
01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C00FF8078
00FFC078007FC0F8007FE1F0001FFFE00007FFC00001FF001E377EB626>116
D E /Fq 77 123 df<001F83E000F06E3001C078780380F8780300F03007007000070070
000700700007007000070070000700700007007000FFFFFF800700700007007000070070
000700700007007000070070000700700007007000070070000700700007007000070070
000700700007007000070070000700700007007000070070007FE3FF001D20809F1B>11
D<003F0000E0C001C0C00381E00701E00701E00700000700000700000700000700000700
00FFFFE00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
E00700E00700E00700E00700E00700E00700E00700E07FC3FE1720809F19>I<001F81F8
0000F04F040001C07C06000380F80F000300F00F000700F00F0007007000000700700000
0700700000070070000007007000000700700000FFFFFFFF000700700700070070070007
007007000700700700070070070007007007000700700700070070070007007007000700
700700070070070007007007000700700700070070070007007007000700700700070070
070007007007007FE3FE3FF02420809F26>14 D<7038F87CFC7EFC7E743A040204020402
0804080410081008201040200F0E7E9F17>34 D<000300C0000300C0000300C0000701C0
00060180000601800006018000060180000E0380000C0300000C0300000C0300000C0300
001C0700001806007FFFFFFCFFFFFFFE00300C0000300C0000300C0000701C0000601800
006018000060180000601800FFFFFFFE7FFFFFFC01C07000018060000180600001806000
018060000380E0000300C0000300C0000300C0000300C0000701C0000601800006018000
060180001F297D9F26>I<0F0000301880007030600060703001E0602C07C06013F980E0
100380E0100700E0100600E0100E00E0101C00E010180060103800602070007020600030
40E0001881C0000F018000000380E00003031000070608000E0604000C0C04001C0C0400
381C0200301C0200701C0200E01C0200C01C0201C01C0203801C0203000C0407000C040E
0006040C0006081C000310180000E01F257DA126>37 D<70F8FCFC740404040808101020
40060E7C9F0D>39 D<0020004000800100020006000C000C001800180030003000300070
00600060006000E000E000E000E000E000E000E000E000E000E000E000E0006000600060
007000300030003000180018000C000C000600020001000080004000200B2E7DA112>I<
800040002000100008000C00060006000300030001800180018001C000C000C000C000E0
00E000E000E000E000E000E000E000E000E000E000E000C000C000C001C0018001800180
03000300060006000C00080010002000400080000B2E7DA112>I<000600000006000000
060000000600000006000000060000000600000006000000060000000600000006000000
060000000600000006000000060000FFFFFFF0FFFFFFF000060000000600000006000000
060000000600000006000000060000000600000006000000060000000600000006000000
06000000060000000600001C207D9A23>43 D<70F8FCFC74040404080810102040060E7C
840D>I<FFC0FFC00A027F8A0F>I<70F8F8F87005057C840D>I<00030003000700060006
000E000C000C001C0018001800380030003000700060006000E000C000C001C001800180
01800380030003000700060006000E000C000C001C001800180038003000300070006000
6000E000C000C000102D7DA117>I<03F0000E1C001C0E00180600380700700380700380
700380700380F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0
F003C0F003C0F003C07003807003807003807807803807001806001C0E000E1C0003F000
121F7E9D17>I<018003800F80F380038003800380038003800380038003800380038003
80038003800380038003800380038003800380038003800380038007C0FFFE0F1E7C9D17
>I<03F0000C1C00100E00200700400780800780F007C0F803C0F803C0F803C02007C000
07C0000780000780000F00000E00001C0000380000700000600000C00001800003000006
00400C00401800401000803FFF807FFF80FFFF80121E7E9D17>I<03F0000C1C00100E00
200F00780F80780780780780380F80000F80000F00000F00000E00001C0000380003F000
003C00000E00000F000007800007800007C02007C0F807C0F807C0F807C0F00780400780
400F00200E001C3C0003F000121F7E9D17>I<000600000600000E00000E00001E00002E
00002E00004E00008E00008E00010E00020E00020E00040E00080E00080E00100E00200E
00200E00400E00C00E00FFFFF0000E00000E00000E00000E00000E00000E00000E0000FF
E0141E7F9D17>I<1803001FFE001FFC001FF8001FE00010000010000010000010000010
000010000011F000161C00180E001007001007800003800003800003C00003C00003C070
03C0F003C0F003C0E00380400380400700200600100E000C380003E000121F7E9D17>I<
007C000182000701000E03800C07801C0780380300380000780000700000700000F1F000
F21C00F40600F80700F80380F80380F003C0F003C0F003C0F003C0F003C07003C07003C0
7003803803803807001807000C0E00061C0001F000121F7E9D17>I<4000007FFFC07FFF
807FFF804001008002008002008004000008000008000010000020000020000040000040
0000C00000C00001C0000180000380000380000380000380000780000780000780000780
00078000078000078000030000121F7D9D17>I<03F0000C0C0010060030030020018060
01806001806001807001807803003E03003F06001FC8000FF00003F80007FC000C7E0010
3F00300F806003804001C0C001C0C000C0C000C0C000C0C000806001802001001002000C
0C0003F000121F7E9D17>I<03F0000E18001C0C00380600380700700700700380F00380
F00380F003C0F003C0F003C0F003C0F003C07007C07007C03807C0180BC00E13C003E3C0
000380000380000380000700300700780600780E00700C002018001070000FC000121F7E
9D17>I<70F8F8F8700000000000000000000070F8F8F87005147C930D>I<7FFFFFE0FFFF
FFF00000000000000000000000000000000000000000000000000000000000000000FFFF
FFF07FFFFFE01C0C7D9023>61 D<000100000003800000038000000380000007C0000007
C0000007C0000009E0000009E0000009E0000010F0000010F0000010F000002078000020
78000020780000403C0000403C0000403C0000801E0000801E0000FFFE0001000F000100
0F0001000F00020007800200078002000780040003C00E0003C01F0007E0FFC03FFE1F20
7F9F22>65 D<FFFFE0000F80380007801E0007801F0007800F0007800F8007800F800780
0F8007800F8007800F8007800F0007801F0007801E0007803C0007FFF00007803C000780
1E0007800F0007800F8007800780078007C0078007C0078007C0078007C0078007C00780
078007800F8007800F0007801F000F803C00FFFFF0001A1F7E9E20>I<000FC040007030
C001C009C0038005C0070003C00E0001C01E0000C01C0000C03C0000C07C0000407C0000
4078000040F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00F8000000780000007C0000407C0000403C0000401C0000401E0000800E000080070001
000380020001C0040000703800000FC0001A217D9F21>I<FFFFE0000F803C0007801E00
0780070007800380078003C0078001E0078001E0078001F0078000F0078000F0078000F8
078000F8078000F8078000F8078000F8078000F8078000F8078000F8078000F8078000F0
078000F0078000F0078001E0078001E0078003C0078003800780070007800E000F803C00
FFFFE0001D1F7E9E23>I<FFFFFF000F800F000780030007800300078001000780018007
8000800780008007800080078080800780800007808000078080000781800007FF800007
818000078080000780800007808000078080000780002007800020078000200780004007
80004007800040078000C0078000C0078001800F800F80FFFFFF801B1F7E9E1F>I<FFFF
FF000F800F00078003000780030007800100078001800780008007800080078000800780
0080078080000780800007808000078080000781800007FF800007818000078080000780
800007808000078080000780000007800000078000000780000007800000078000000780
0000078000000FC00000FFFE0000191F7E9E1E>I<000FE0200078186000E004E0038002
E0070001E00F0000E01E0000601E0000603C0000603C0000207C00002078000020F80000
00F8000000F8000000F8000000F8000000F8000000F8000000F8007FFCF80003E0780001
E07C0001E03C0001E03C0001E01E0001E01E0001E00F0001E0070001E0038002E000E004
6000781820000FE0001E217D9F24>I<FFF8FFF80F800F8007800F0007800F0007800F00
07800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F00
07FFFF0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F00
07800F0007800F0007800F0007800F0007800F0007800F000F800F80FFF8FFF81D1F7E9E
22>I<FFFC0FC00780078007800780078007800780078007800780078007800780078007
800780078007800780078007800780078007800780078007800FC0FFFC0E1F7F9E10>I<
FFFE000FC000078000078000078000078000078000078000078000078000078000078000
078000078000078000078000078000078000078000078000078002078002078002078002
07800607800407800407800C07801C0F807CFFFFFC171F7E9E1C>76
D<FF80001FF80F80001F800780001F0005C0002F0005C0002F0005C0002F0004E0004F00
04E0004F000470008F000470008F000470008F000438010F000438010F000438010F0004
1C020F00041C020F00041C020F00040E040F00040E040F00040E040F000407080F000407
080F000407080F000403900F000403900F000401E00F000401E00F000401E00F000E00C0
0F001F00C01F80FFE0C1FFF8251F7E9E2A>I<FF803FF807C007C007C0038005E0010005
E0010004F001000478010004780100043C0100043C0100041E0100040F0100040F010004
078100040781000403C1000401E1000401E1000400F1000400F1000400790004003D0004
003D0004001F0004001F0004000F0004000700040007000E0003001F000300FFE001001D
1F7E9E22>I<001F800000F0F00001C0380007801E000F000F000E0007001E0007803C00
03C03C0003C07C0003E0780001E0780001E0F80001F0F80001F0F80001F0F80001F0F800
01F0F80001F0F80001F0F80001F0F80001F0780001E07C0003E07C0003E03C0003C03C00
03C01E0007800E0007000F000F0007801E0001C0380000F0F000001F80001C217D9F23>
I<FFFFE0000F80780007801C0007801E0007800F0007800F8007800F8007800F8007800F
8007800F8007800F8007800F0007801E0007801C000780780007FFE00007800000078000
000780000007800000078000000780000007800000078000000780000007800000078000
0007800000078000000FC00000FFFC0000191F7E9E1F>I<FFFF80000F80F00007807800
07803C0007801E0007801E0007801F0007801F0007801F0007801F0007801E0007801E00
07803C00078078000780F00007FF80000781C0000780E0000780F0000780700007807800
078078000780780007807C0007807C0007807C0007807C0407807E0407803E040FC01E08
FFFC0F10000003E01E207E9E21>82 D<07E0800C1980100780300380600180600180E001
80E00080E00080E00080F00000F000007800007F00003FF0001FFC000FFE0003FF00001F
800007800003C00003C00001C08001C08001C08001C08001C0C00180C00380E00300F006
00CE0C0081F80012217D9F19>I<7FFFFFE0780F01E0600F0060400F0020400F0020C00F
0030800F0010800F0010800F0010800F0010000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F0000000F0000000F0000001F800007FFFE001C1F7E9E21>
I<FFFC3FF80FC007C0078003800780010007800100078001000780010007800100078001
000780010007800100078001000780010007800100078001000780010007800100078001
00078001000780010007800100078001000780010007800100038002000380020001C002
0001C0040000E008000070180000382000000FC0001D207E9E22>I<FFF003FE1F8000F8
0F0000600F800060078000400780004003C0008003C0008003C0008001E0010001E00100
01F0010000F0020000F0020000F806000078040000780400003C0800003C0800003C0800
001E1000001E1000001F3000000F2000000F20000007C0000007C0000007C00000038000
0003800000038000000100001F207F9E22>I<FFF07FF81FF01F800FC007C00F00078003
800F00078001000F0007C00100078007C00200078007C00200078007C0020003C009E004
0003C009E0040003C009E0040003E010F00C0001E010F0080001E010F0080001F0207808
0000F02078100000F02078100000F0403C10000078403C20000078403C20000078C03E20
00003C801E4000003C801E4000003C801E4000001F000F8000001F000F8000001F000F80
00001E00078000000E00070000000E00070000000C000300000004000200002C207F9E2F
>I<7FF83FF80FE00FC007C0070003C0020001E0040001F00C0000F0080000781000007C
1000003C2000003E4000001E4000000F8000000F8000000780000003C0000007E0000005
E0000009F0000018F8000010780000207C0000603C0000401E0000801F0001800F000100
0780020007C0070003C01F8007E0FFE01FFE1F1F7F9E22>I<FFF003FF1F8000F80F8000
600780004007C0004003E0008001E0008001F0010000F0030000F80200007C0400003C04
00003E0800001E0800001F1000000FB0000007A0000007C0000003C0000003C0000003C0
000003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000007C0
00007FFE00201F7F9E22>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE072D7CA10D>91
D<080410082010201040204020804080408040B85CFC7EFC7E7C3E381C0F0E7B9F17>I<
FEFE06060606060606060606060606060606060606060606060606060606060606060606
06060606060606FEFE072D7FA10D>I<1FE000303000781800781C00300E00000E00000E
00000E0000FE00078E001E0E00380E00780E00F00E10F00E10F00E10F01E10781E103867
200F83C014147E9317>97 D<0E0000FE00000E00000E00000E00000E00000E00000E0000
0E00000E00000E00000E00000E3E000EC3800F01C00F00E00E00E00E00700E00700E0078
0E00780E00780E00780E00780E00780E00700E00700E00E00F00E00D01C00CC300083E00
15207F9F19>I<03F80E0C1C1E381E380C70007000F000F000F000F000F000F000700070
00380138011C020E0C03F010147E9314>I<000380003F80000380000380000380000380
00038000038000038000038000038000038003E380061B801C0780380380380380700380
700380F00380F00380F00380F00380F00380F003807003807003803803803807801C0780
0E1B8003E3F815207E9F19>I<03F0000E1C001C0E00380700380700700700700380F003
80F00380FFFF80F00000F00000F000007000007000003800801800800C010007060001F8
0011147F9314>I<007C00C6018F038F07060700070007000700070007000700FFF00700
070007000700070007000700070007000700070007000700070007000700070007007FF0
1020809F0E>I<0000E003E3300E3C301C1C30380E00780F00780F00780F00780F00780F
00380E001C1C001E380033E0002000002000003000003000003FFE001FFF800FFFC03001
E0600070C00030C00030C00030C000306000603000C01C038003FC00141F7F9417>I<0E
0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E
3E000E43000E81800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16207F9F19>I<1C001E003E00
1E001C000000000000000000000000000E007E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E00FFC00A1F809E0C>I<00E001F001F001F000
E0000000000000000000000000007007F000F00070007000700070007000700070007000
700070007000700070007000700070007000700070007000706070F060F0C061803F000C
28829E0E>I<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E0000
0E00000E00000E0FF00E03C00E03000E02000E04000E08000E10000E30000E70000EF800
0F38000E1C000E1E000E0E000E07000E07800E03800E03C00E03E0FFCFF815207F9F18>
I<0E00FE000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00B20809F0C>I<
0E1F01F000FE618618000E81C81C000F00F00E000F00F00E000E00E00E000E00E00E000E
00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00
E00E000E00E00E000E00E00E000E00E00E000E00E00E00FFE7FE7FE023147F9326>I<0E
3E00FE43000E81800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16147F9319>I<01F800070E00
1C03803801C03801C07000E07000E0F000F0F000F0F000F0F000F0F000F0F000F07000E0
7000E03801C03801C01C0380070E0001F80014147F9317>I<0E3E00FEC3800F01C00F00
E00E00E00E00F00E00700E00780E00780E00780E00780E00780E00780E00700E00F00E00
E00F01E00F01C00EC3000E3E000E00000E00000E00000E00000E00000E00000E00000E00
00FFE000151D7F9319>I<03E0800619801C05803C0780380380780380700380F00380F0
0380F00380F00380F00380F003807003807803803803803807801C0B800E138003E38000
0380000380000380000380000380000380000380000380003FF8151D7E9318>I<0E78FE
8C0F1E0F1E0F0C0E000E000E000E000E000E000E000E000E000E000E000E000E000E00FF
E00F147F9312>I<1F9030704030C010C010C010E00078007F803FE00FF0007080388018
8018C018C018E030D0608F800D147E9312>I<020002000200060006000E000E003E00FF
F80E000E000E000E000E000E000E000E000E000E000E000E080E080E080E080E08061003
1001E00D1C7F9B12>I<0E01C0FE1FC00E01C00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E03C00603C0030DC001F1FC1614
7F9319>I<FF83F81E01E01C00C00E00800E00800E008007010007010003820003820003
820001C40001C40001EC0000E80000E80000700000700000700000200015147F9318>I<
FF9FE1FC3C0780701C0300601C0380200E0380400E0380400E03C0400707C0800704C080
0704E080038861000388710003C8730001D0320001D03A0000F03C0000E01C0000E01C00
00601800004008001E147F9321>I<7FC3FC0F01E00701C007018003810001C20000E400
00EC00007800003800003C00007C00004E000087000107000303800201C00601E01E01E0
FF07FE1714809318>I<FF83F81E01E01C00C00E00800E00800E00800701000701000382
0003820003820001C40001C40001EC0000E80000E8000070000070000070000020000020
00004000004000004000F08000F08000F100006200003C0000151D7F9318>I<3FFF380E
200E201C40384078407000E001E001C00380078007010E011E011C0338027006700EFFFE
10147F9314>I E /Fr 45 122 df<70F8FCFC7404040404080810102040060F7C840E>
44 D<FFE0FFE00B027F8B10>I<70F8F8F87005057C840E>I<01F000071C000C06001803
003803803803807001C07001C07001C07001C0F001E0F001E0F001E0F001E0F001E0F001
E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E07001C07001C07001C07803
C03803803803801C07000C0600071C0001F00013227EA018>48 D<008003800F80F38003
800380038003800380038003800380038003800380038003800380038003800380038003
800380038003800380038003800380038007C0FFFE0F217CA018>I<03F8000C1E001007
002007804007C07807C07803C07807C03807C0000780000780000700000F00000E000038
0003F000001C00000F000007800007800003C00003C00003E02003E07003E0F803E0F803
E0F003C04003C0400780200780100F000C1C0003F00013227EA018>51
D<000200000600000E00000E00001E00001E00002E00004E00004E00008E00008E00010E
00020E00020E00040E00040E00080E00100E00100E00200E00200E00400E00800E00FFFF
F8000E00000E00000E00000E00000E00000E00000E00001F0001FFF015217FA018>I<10
00801E07001FFF001FFE001FF80013E00010000010000010000010000010000010000010
F800130E001407001803801003800001C00001C00001E00001E00001E00001E07001E0F0
01E0F001E0E001C08001C04003C04003802007001006000C1C0003F00013227EA018>I<
007E0001C1000300800601C00E03C01C03C0180180380000380000780000700000700000
F0F800F30C00F40600F40300F80380F801C0F001C0F001E0F001E0F001E0F001E0F001E0
7001E07001E07001E03801C03801C01803801C03000C0600070C0001F00013227EA018>
I<01F800060E000803001001802001802000C06000C06000C06000C07000C07801803E01
003F02001FC4000FF80003F80003FC00067F00083F80100F803007C06001C06000E0C000
E0C00060C00060C00060C000606000406000C03000801803000E0E0003F00013227EA018
>56 D<01F000060C000C0600180700380380700380700380F001C0F001C0F001C0F001E0
F001E0F001E0F001E0F001E07001E07003E03803E01805E00C05E00619E003E1E00001C0
0001C00001C0000380000380300300780700780600700C002018001030000FC00013227E
A018>I<0001800000018000000180000003C0000003C0000003C0000005E0000005E000
000DF0000008F0000008F0000010F800001078000010780000203C0000203C0000203C00
00401E0000401E0000401E0000800F0000800F0000FFFF000100078001000780030007C0
020003C0020003C0040003E0040001E0040001E00C0000F00C0000F03E0001F8FF800FFF
20237EA225>65 D<0007E0100038183000E0063001C00170038000F0070000F00E000070
1E0000701C0000303C0000303C0000307C0000107800001078000010F8000000F8000000
F8000000F8000000F8000000F8000000F8000000F800000078000000780000107C000010
3C0000103C0000101C0000201E0000200E000040070000400380008001C0010000E00200
00381C000007E0001C247DA223>67 D<FFFFFFC00F8007C0078001C0078000C007800040
078000400780006007800020078000200780002007802020078020000780200007802000
078060000780E00007FFE0000780E0000780600007802000078020000780200007802008
0780000807800008078000100780001007800010078000300780003007800070078000E0
0F8003E0FFFFFFE01D227EA121>69 D<FFFFFFC00F8007C0078001C0078000C007800040
078000400780006007800020078000200780002007802020078020000780200007802000
078060000780E00007FFE0000780E0000780600007802000078020000780200007802000
078000000780000007800000078000000780000007800000078000000780000007800000
0FC00000FFFE00001B227EA120>I<FFFC0FC00780078007800780078007800780078007
800780078007800780078007800780078007800780078007800780078007800780078007
800780078007800FC0FFFC0E227EA112>73 D<FFC00003FF0FC00003F007C00003E005E0
0005E005E00005E004F00009E004F00009E004F00009E004780011E004780011E0047800
11E0043C0021E0043C0021E0043C0021E0041E0041E0041E0041E0040F0081E0040F0081
E0040F0081E004078101E004078101E004078101E00403C201E00403C201E00401E401E0
0401E401E00401E401E00400F801E00400F801E00400F801E004007001E00E007001E01F
007003F0FFE0203FFF28227EA12D>77 D<FF8007FF07C000F807C0007005E0002004F000
2004F0002004780020047C0020043C0020041E0020041F0020040F002004078020040780
200403C0200401E0200401E0200400F0200400F8200400782004003C2004003E2004001E
2004000F2004000F20040007A0040003E0040003E0040001E0040001E0040000E00E0000
601F000060FFE0002020227EA125>I<FFFFF0000F803C0007800F0007800780078007C0
078003C0078003E0078003E0078003E0078003E0078003E0078003E0078003C0078007C0
0780078007800F0007803C0007FFF0000780000007800000078000000780000007800000
078000000780000007800000078000000780000007800000078000000780000007800000
0FC00000FFFC00001B227EA121>80 D<FFFFE000000F803C000007800E00000780078000
078007C000078003C000078003E000078003E000078003E000078003E000078003E00007
8003C000078007C000078007800007800E000007803C000007FFE0000007807000000780
38000007801C000007801E000007800E000007800F000007800F000007800F000007800F
000007800F800007800F800007800F800007800F808007800FC080078007C0800FC003C1
00FFFC01E2000000007C0021237EA124>82 D<03F0200C0C601802603001E07000E06000
60E00060E00060E00020E00020E00020F00000F000007800007F00003FF0001FFE000FFF
0003FF80003FC00007E00001E00000F00000F0000070800070800070800070800070C000
60C00060E000C0F000C0C80180C6070081FC0014247DA21B>I<7FFFFFF8780780786007
8018400780084007800840078008C007800C800780048007800480078004800780040007
800000078000000780000007800000078000000780000007800000078000000780000007
800000078000000780000007800000078000000780000007800000078000000780000007
80000007800000078000000FC00003FFFF001E227EA123>I<0FE0001838003C0C003C0E
0018070000070000070000070000FF0007C7001E07003C0700780700700700F00708F007
08F00708F00F087817083C23900FC1E015157E9418>97 D<0E0000FE00001E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E1F000E61C0
0E80600F00300E00380E003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E
0E001C0E003C0E00380F00700C80600C41C0083F0017237FA21B>I<01FE000703000C07
801C0780380300780000700000F00000F00000F00000F00000F00000F00000F000007000
007800403800401C00800C010007060001F80012157E9416>I<0000E0000FE00001E000
00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E001F8E007
04E00C02E01C01E03800E07800E07000E0F000E0F000E0F000E0F000E0F000E0F000E0F0
00E07000E07800E03800E01801E00C02E0070CF001F0FE17237EA21B>I<01FC00070700
0C03801C01C03801C07801E07000E0F000E0FFFFE0F00000F00000F00000F00000F00000
7000007800203800201C00400E008007030000FC0013157F9416>I<003C00C6018F038F
030F070007000700070007000700070007000700FFF80700070007000700070007000700
0700070007000700070007000700070007000700070007807FF8102380A20F>I<000070
01F198071E180E0E181C07001C07003C07803C07803C07803C07801C07001C07000E0E00
0F1C0019F0001000001000001800001800001FFE000FFFC00FFFE03800F0600030400018
C00018C00018C000186000306000303800E00E038003FE0015217F9518>I<0E0000FE00
001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
000E1F800E60C00E80E00F00700F00700E00700E00700E00700E00700E00700E00700E00
700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FF18237FA21B>I<1C
001E003E001E001C00000000000000000000000000000000000E00FE001E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC00A227FA10E
>I<01C003E003E003E001C00000000000000000000000000000000001E00FE001E000E0
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
00E000E000E000E060E0F0C0F18061803E000B2C82A10F>I<0E0000FE00001E00000E00
000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E03FC0E01
F00E01C00E01800E02000E04000E08000E10000E38000EF8000F1C000E1E000E0E000E07
000E07800E03C00E01C00E01E00E00F00E00F8FFE3FE17237FA21A>I<0E00FE001E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E00FFE00B237FA20E>I<0E1F
C07F00FE60E183801E807201C00F003C00E00F003C00E00E003800E00E003800E00E0038
00E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800
E00E003800E00E003800E00E003800E00E003800E00E003800E0FFE3FF8FFE27157F942A
>I<0E1F80FE60C01E80E00F00700F00700E00700E00700E00700E00700E00700E00700E
00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FF18157F941B>I<
01FC000707000C01801800C03800E0700070700070F00078F00078F00078F00078F00078
F00078F000787000707800F03800E01C01C00E038007070001FC0015157F9418>I<0E1F
00FE61C00E80600F00700E00380E003C0E001C0E001E0E001E0E001E0E001E0E001E0E00
1E0E001E0E003C0E003C0E00380F00700E80E00E41C00E3F000E00000E00000E00000E00
000E00000E00000E00000E00000E0000FFE000171F7F941B>I<0E3CFE461E8F0F0F0F06
0F000E000E000E000E000E000E000E000E000E000E000E000E000E000F00FFF010157F94
13>114 D<0F8830786018C018C008C008E008F0007F803FE00FF001F8003C801C800C80
0CC00CC008E018D0308FC00E157E9413>I<02000200020002000600060006000E001E00
3E00FFF80E000E000E000E000E000E000E000E000E000E000E000E040E040E040E040E04
0E040708030801F00E1F7F9E13>I<0E0070FE07F01E00F00E00700E00700E00700E0070
0E00700E00700E00700E00700E00700E00700E00700E00700E00700E00F00E00F0060170
03827800FC7F18157F941B>I<FFC1FE1E00780E00300E00200E00200700400700400380
8003808003808001C10001C10000E20000E20000E2000074000074000038000038000038
0000100017157F941A>I<FF8FF8FF1E01E03C1C01C0180E01C0180E01E0100E01E01007
026020070270200702702003843040038438400384384001C8188001C81C8001C81C8000
F00D0000F00F0000F00F0000600600006006000060060020157F9423>I<FFC1FE1E0078
0E00300E00200E002007004007004003808003808003808001C10001C10000E20000E200
00E200007400007400003800003800003800001000001000002000002000002000004000
F04000F08000F180004300003C0000171F7F941A>121 D E /Fs
20 118 df<FFFF80FFFF80FFFF8011037F9016>45 D<FFFFFFE00000FFFFFFFC000007E0
007F000003E0000F800003E00007C00003E00001E00003E00000F00003E00000780003E0
00007C0003E000003E0003E000003E0003E000001F0003E000001F0003E000000F8003E0
00000F8003E000000FC003E000000FC003E0000007C003E0000007C003E0000007E003E0
000007E003E0000007E003E0000007E003E0000007E003E0000007E003E0000007E003E0
000007E003E0000007E003E0000007E003E0000007E003E0000007C003E0000007C003E0
000007C003E000000FC003E000000F8003E000000F8003E000000F8003E000001F0003E0
00001F0003E000003E0003E000007C0003E00000780003E00000F80003E00001F00003E0
0007E00003E0000F800007E0007F0000FFFFFFFC0000FFFFFFE000002B317CB033>68
D<FFFF80FFFF8007F00003E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00007F000FFFF
80FFFF8011317DB017>73 D<FFF00000007FF8FFF00000007FF807F00000007F0002F800
0000BE0002F8000000BE0002F8000000BE00027C0000013E00027C0000013E00023E0000
023E00023E0000023E00023E0000023E00021F0000043E00021F0000043E00021F000004
3E00020F8000083E00020F8000083E00020F8000083E000207C000103E000207C000103E
000207C000103E000203E000203E000203E000203E000201F000403E000201F000403E00
0201F000403E000200F800803E000200F800803E000200F800803E0002007C01003E0002
007C01003E0002007C01003E0002003E02003E0002003E02003E0002003E02003E000200
1F04003E0002001F04003E0002000F88003E0002000F88003E0002000F88003E00020007
D0003E00020007D0003E00020007D0003E00020003E0003E00020003E0003E00020003E0
003E00070001C0003E000F8001C0007F00FFF801C00FFFF8FFF800800FFFF835317CB03D
>77 D<FFFFFFC000FFFFFFF80007E000FE0003E0001F0003E0000F8003E00007C003E000
03E003E00003F003E00001F003E00001F003E00001F803E00001F803E00001F803E00001
F803E00001F803E00001F803E00001F003E00001F003E00003E003E00003E003E00007C0
03E0000F8003E0001F0003E000FC0003FFFFF00003E000000003E000000003E000000003
E000000003E000000003E000000003E000000003E000000003E000000003E000000003E0
00000003E000000003E000000003E000000003E000000003E000000003E000000003E000
000003E000000003E000000003E000000007F0000000FFFF800000FFFF80000025317CB0
2D>80 D<007F802001FFE06007C078600F001CE01E0006E03C0003E0380001E0780000E0
700000E070000060F0000060F0000060F0000020F0000020F0000020F8000020F8000000
7C0000007E0000003F0000003FC000001FFC00000FFF800007FFF80003FFFE0000FFFF00
000FFF800001FFC000001FE0000007E0000003F0000001F0000000F0000000F8000000F8
8000007880000078800000788000007880000078C0000078C0000070E00000F0E00000E0
F00000E0F80001C0EC000380E7000700C1F01E00C07FFC00800FF0001D337CB125>83
D<00FE00000303C0000C00E00010007000100038003C003C003E001C003E001E003E001E
0008001E0000001E0000001E0000001E00000FFE0000FC1E0003E01E000F801E001F001E
003E001E003C001E007C001E00F8001E04F8001E04F8001E04F8003E04F8003E0478003E
047C005E043E008F080F0307F003FC03E01E1F7D9E21>97 D<003F8000E0600380180700
040F00041E001E1C003E3C003E7C003E7C0008780000F80000F80000F80000F80000F800
00F80000F80000F80000F800007800007C00007C00003C00011E00011E00020F00020700
0403801800E060003F80181F7D9E1D>99 D<0000006000000FE000003FE000003FE00000
03E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00000
01E0000001E0000001E0000001E0000001E0000001E0001F81E000F061E001C019E00780
05E00F0003E00E0003E01E0001E03C0001E03C0001E07C0001E0780001E0F80001E0F800
01E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0780001E07800
01E03C0001E03C0001E01C0001E01E0003E00E0005E0070009E0038011F000E061FF003F
81FF20327DB125>I<003F800000E0E0000380380007003C000E001E001E001E001C000F
003C000F007C000F0078000F8078000780F8000780F8000780FFFFFF80F8000000F80000
00F8000000F8000000F8000000F8000000780000007C0000003C0000003C0000801E0000
800E0001000F0002000780020001C00C0000F03000001FC000191F7E9E1D>I<0007E000
1C1000383800707C00E07C01E07C01C03803C00003C00003C00003C00003C00003C00003
C00003C00003C00003C00003C00003C000FFFFC0FFFFC003C00003C00003C00003C00003
C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003
C00003C00003C00003C00003C00003C00003C00003C00003C00003C00007E0007FFF007F
FF0016327FB114>I<000000F0007F030801C1C41C0380E81C070070080F0078001E003C
001E003C003E003E003E003E003E003E003E003E003E003E003E003E001E003C001E003C
000F007800070070000780E00009C1C000087F0000180000001800000018000000180000
00180000001C0000000E0000000FFFF80007FFFF0003FFFF800E000FC0180001E0300000
F070000070E0000038E0000038E0000038E0000038E00000387000007070000070380000
E01C0001C00700070001C01C00003FE0001E2F7E9F21>I<07000F801F801F800F800700
0000000000000000000000000000000000000000000001801F80FF80FF800F8007800780
078007800780078007800780078007800780078007800780078007800780078007800780
0780078007800FC0FFF8FFF80D307EAF12>105 D<0180FE001FC0003F83078060F000FF
8C03C1807800FF9001E2003C000FA001E4003C0007A000F4001E0007C000F8001E0007C0
00F8001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000
F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0
001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F000
1E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E
000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83FFF0341F7E9E38>109
D<0180FE00003F83078000FF8C03C000FF9001E0000FA001E00007A000F00007C000F000
07C000F000078000F000078000F000078000F000078000F000078000F000078000F00007
8000F000078000F000078000F000078000F000078000F000078000F000078000F0000780
00F000078000F000078000F000078000F000078000F000078000F000078000F0000FC001
F800FFFC1FFF80FFFC1FFF80211F7E9E25>I<001FC00000F0780001C01C00070007000F
0007801E0003C01C0001C03C0001E03C0001E0780000F0780000F0780000F0F80000F8F8
0000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8780000F07C0001F03C
0001E03C0001E01E0003C01E0003C00F00078007800F0001C01C0000F07800001FC0001D
1F7E9E21>I<0183E03F8C18FF907CFF907C0FA07C07C03807C00007C00007C000078000
078000078000078000078000078000078000078000078000078000078000078000078000
0780000780000780000780000780000780000FC000FFFE00FFFE00161F7E9E19>114
D<01FC100E03301800F0300070600030E00030E00010E00010E00010F00010F800007E00
003FF0001FFF000FFFC003FFE0003FF00001F80000F880003C80003C80001CC0001CC000
1CE0001CE00018F00038F00030EC0060C301C080FE00161F7E9E1A>I<00400000400000
400000400000400000C00000C00000C00001C00001C00003C00007C0000FC0001FFFE0FF
FFE003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003
C00003C00003C00003C00003C00003C01003C01003C01003C01003C01003C01003C01003
C01001C02001E02000E0400078C0001F00142C7FAB19>I<01800030003F8007F000FF80
1FF000FF801FF0000F8001F000078000F000078000F000078000F000078000F000078000
F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0
00078000F000078000F000078000F000078000F000078000F000078000F000078001F000
078001F000078001F000038002F00003C004F00001C008F800007030FF80001FC0FF8021
1F7E9E25>I E /Ft 5 85 df<00000000600000000000700000000000F00000000001F0
0000000001F00000000003F00000000003F00000000007F00000000007F0000000000FF0
000000000FF0000000001BF00000000033F00000000033F00000000063F00000000063F8
00000000C1F800000000C1F80000000181F80000000381F80000000301F80000000601F8
0000000601F80000000C01F80000000C01F80000001801F80000001801F80000003001F8
0000006001F80000006001F8000000C001F8000000C001FC000001FFFFFC000001FFFFFC
0000030000FC0000070000FC0000060000FC00000C0000FC00000C0000FC0000180000FC
0000180000FC0000300000FC0000700000FC0000600000FC0000E00000FC0001E00000FC
0003E00000FE000FF00001FE00FFFE003FFFF0FFFE003FFFF02C327CB135>65
D<000FFFFFFF0000000FFFFFFFC00000003F8007F00000003F8001F80000003F00007C00
00003F00007E0000007F00003E0000007F00001F0000007E00001F0000007E00001F8000
00FE00000F800000FE00000F800000FC00000FC00000FC00000FC00001FC00000FC00001
FC00000FC00001F800000FC00001F800000FC00003F800000FC00003F800001FC00003F0
00001FC00003F000001FC00007F000001FC00007F000001F800007E000003F800007E000
003F80000FE000003F80000FE000003F00000FC000007F00000FC000007F00001FC00000
7E00001FC00000FE00001F800000FC00001F800000FC00003F800001F800003F800001F0
00003F000003F000003F000007E000007F000007C000007F00000FC000007E00001F8000
007E00003F000000FE00007E000000FE0000F8000000FC0001F0000000FC0007E0000001
FC003F800000FFFFFFFE000000FFFFFFF000000032317CB036>68
D<000FFFFFFFFE000FFFFFFFFE00003F8000FE00003F80003E00003F00001E00003F0000
1E00007F00000C00007F00000C00007E00000C00007E00000C0000FE00000C0000FE0000
0C0000FC00000C0000FC00000C0001FC00001C0001FC00C0180001F800C0000001F800C0
000003F801C0000003F801C0000003F00180000003F00380000007F00F80000007FFFF80
000007FFFF00000007E00F0000000FE0070000000FE0070000000FC0060000000FC00600
00001FC00E0000001FC00E0000001F800C0000001F80000000003F80000000003F800000
00003F00000000003F00000000007F00000000007F00000000007E00000000007E000000
0000FE0000000000FE0000000000FC0000000000FC0000000001FC00000000FFFFFC0000
00FFFFFC0000002F317CB02F>70 D<000FFFFFF800000FFFFFFF0000003F801FC000003F
8007E000003F0003F000003F0001F800007F0000FC00007F0000FC00007E0000FC00007E
0000FC0000FE0000FC0000FE0001FC0000FC0001FC0000FC0001FC0001FC0001F80001FC
0003F80001F80003F00001F80007E00003F80007E00003F8000F800003F0003F000003F0
007E000007F003F8000007FFFFE0000007FFFF80000007E007C000000FE003F000000FE0
01F000000FC000F800000FC000F800001FC000FC00001FC000FC00001F8000FC00001F80
00FC00003F8001FC00003F8001FC00003F0001FC00003F0001FC00007F0003F800007F00
03F800007E0003F800007E0003F80600FE0003F80E00FE0003F80C00FC0003F80C00FC00
03F81C01FC0001F838FFFFF000FC70FFFFF0007FE0000000001F802F327CB034>82
D<07FFFFFFFFF807FFFFFFFFF80FE007F001F80F8007F000F80E0007E000701E0007E000
701C000FE0007018000FE0007038000FC0007038000FC0007030001FC0006070001FC000
6060001F80006060001F80006060003F8000E0E0003F8000C000003F00000000003F0000
0000007F00000000007F00000000007E00000000007E0000000000FE0000000000FE0000
000000FC0000000000FC0000000001FC0000000001FC0000000001F80000000001F80000
000003F80000000003F80000000003F00000000003F00000000007F00000000007F00000
000007E00000000007E0000000000FE0000000000FE0000000000FC0000000000FC00000
00001FC0000000001FC0000000001F80000000003F80000000007FC00000007FFFFFC000
007FFFFFC000002D3174B033>84 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300dpi
TeXDict begin

%%EndSetup
%%Page: 1 1
1 2 bop 75 356 a Fp(Chapter)34 b(6)75 564 y Fo(External)41
b(In)m(terfaces)75 805 y Fn(6.1)59 b(Intro)r(duction)75
906 y Fq(This)16 b(c)o(hapter)f(deals)h(with)f(ho)o(w)g(users)g(and)h
(external)f(pac)o(k)m(ages)g(can)h(in)o(terface)f(with)h
Fm(MPI-2)p Fq(.)75 1046 y Fn(6.2)59 b(Generalized)19
b(Requests)75 1149 y Fl(6.2.1)49 b(Intro)q(duction)75
1235 y Fq(The)20 b(goal)f(of)g(this)h Fm(MPI-2)e Fq(extension)j(is)f
(to)e(allo)o(w)i(users)g(to)e(create)i(requests)f(for)g(additional)i
(non-)75 1291 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 1348 y(supp)q(orted)d(b)o(y)g Fm(MPI)f
Fq(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 1404
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 1461 y(The)20 b(metho)q(d)g(tak)o(en)g(in)g
(de\014ning)i(this)e Fm(MPI-2)f Fq(extension)i(is)f(to)f(try)h(and)g
(generalize)h(curren)o(t)75 1517 y Fm(MPI)e Fq(functions.)33
b(F)l(or)19 b(example,)i(the)e Fm(MPI)g Fq(functions)h(of)f
Fm(MPI)p 1208 1517 14 2 v 16 w Fk(f)p Fm(TEST)p Fk(j)p
Fm(W)l(AIT)p Fk(gf)p Fm(ANY)p Fk(j)p Fm(SOME)p Fk(j)p
Fm(ALL)p Fk(g)75 1573 y Fq(are)f(generalized.)32 b(The)19
b(one-sided)h Fm(MPI)p 802 1573 V 16 w(HW)l(AIT)e Fq(function)i(of)e
(Section)h Fj(??)30 b Fq(is)19 b(used)g(for)f(the)h(in)o(ter-)75
1630 y(rupts.)28 b(Also,)18 b(whenev)o(er)g(additional)h(functions)g
(are)e(needed)i(they)f(are)g(made)g(to)f(lo)q(ok)h(lik)o(e)h(similar)75
1686 y(functions)13 b(curren)o(tly)g(a)o(v)m(ailable)h(in)f
Fm(MPI)p Fq(.)f(Th)o(us,)g(these)h(extensions)g(are)f(based)h(on)f(the)
h Fm(MPI)e Fq(p)q(ersisten)o(t)75 1743 y(comm)o(unication)16
b(requests)f(and)g(the)h(cac)o(hing)g(features.)166 1799
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
1856 y(function)c Fm(MPI)p 340 1856 V 16 w(REQUEST)p
559 1856 V 18 w(TYPE)p 694 1856 V 16 w(CREA)l(TE)h Fq(and)e(freed)g
(with)h Fm(MPI)p 1290 1856 V 16 w(REQUEST)p 1509 1856
V 18 w(TYPE)p 1644 1856 V 16 w(FREE)p Fq(.)g(The)75 1912
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
1969 y(user)18 b(creates)f(a)g(sp)q(eci\014c)j(instance)e(of)f(a)g
(request)h(via)g Fm(MPI)p 1125 1969 V 16 w(REQUEST)p
1344 1969 V 17 w(INIT)p Fq(.)f(The)h(op)q(eration)g(asso-)75
2025 y(ciated)k(with)f(the)g(request)g(is)g(b)q(egun)h(with)f
Fm(MPI)p 958 2025 V 16 w(ST)l(ART)p Fk(f)p Fm(ALL)p Fk(g)p
Fq(.)37 b(Completion)21 b(of)g(the)g(request)f(is)75
2082 y(done)g(with)g Fm(MPI)p 381 2082 V 16 w Fk(f)p
Fm(TEST)p Fk(j)p Fm(W)l(AIT)p Fk(gf)p Fm(ANY)p Fk(j)p
Fm(SOME)p Fk(j)p Fm(ALL)p Fk(g)p Fq(.)31 b(The)20 b(sp)q(eci\014c)h
(request)f(can)g(b)q(e)g(freed)g(with)75 2138 y Fm(MPI)p
160 2138 V 16 w(REQUEST)p 379 2138 V 18 w(FREE)p Fq(.)166
2194 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 2251 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 2307 y(blo)q(c)o(king)f(v)o(ersion)e(of)g
Fm(MPI)p 547 2307 V 16 w(ALLGA)l(THER)p Fq(.)75 2425
y Fl(6.2.2)49 b(F)o(unctionalit)o(y)75 2511 y Fq(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 2591 y Fm(init)p 139 2591
V 17 w(fn)23 b Fq(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 2647 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
2704 y(p)q(erform)15 b(other)f(initialization.)964 2828
y(1)p eop
%%Page: 2 2
2 3 bop 75 -100 a Fq(2)894 b Fi(CHAPTER)15 b(6.)35 b(EXTERNAL)16
b(INTERF)-5 b(A)o(CES)75 45 y Fm(sta)o(rt)p 164 45 14
2 v 17 w(fn)23 b Fq(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 102 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
158 y(comm)o(unications)c(that)g(initiate)i(the)e(op)q(eration.)75
252 y Fm(complete)p 248 252 V 17 w(fn)23 b Fq(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
308 y(used)d(to)g(set)g(return)g(v)m(alues)h(in)g(extra)p
852 308 V 16 w(state)f(or)f(clean)i(up)g(from)f(the)g(op)q(eration.)75
402 y Fm(free)p 148 402 V 16 w(fn)23 b Fq(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 459 y(example,)15
b(to)g(deallo)q(cate)h(memory)l(.)75 552 y Fm(cancel)p
194 552 V 17 w(fn)23 b Fq(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 609 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 Fm(MPI)p
1448 609 V 16 w(CANCEL)h Fq(is)f(called)i(to)189 665
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
722 y(cancel)c(in)o(ternal)g(messages,)e(reset)h(state,)f(etc.)166
828 y(A)h(new)h(t)o(yp)q(e)f(of)g(request)g(is)h(created)f(with)75
979 y Fm(MPI)p 160 979 V 16 w(REQUEST)p 379 979 V 18
w(TYPE)p 514 979 V 17 w(CREA)l(TE\(init)p 779 979 V 17
w(fn,)f(sta)o(rt)p 946 979 V 17 w(fn,)f(complete)p 1196
979 V 17 w(fn,)h(free)p 1347 979 V 16 w(fn,)g(cancel)p
1543 979 V 17 w(fn,)g(t)o(yp)q(e)p 1704 979 V 17 w(req\))117
1056 y Fh(IN)155 b Fm(init)p 382 1056 V 17 w(fn)472 b
Fh(Creation)14 b(callbac)o(k)f(function)h(for)f(t)o(yp)q(e)p
1542 1056 13 2 v 16 w(req)117 1131 y(IN)155 b Fm(sta)o(rt)p
407 1131 14 2 v 17 w(fn)447 b Fh(Request)15 b(start)g(callbac)o(k)e
(function)g(for)h(t)o(yp)q(e)p 1630 1131 13 2 v 15 w(req)117
1206 y(IN)155 b Fm(complete)p 491 1206 14 2 v 17 w(fn)363
b Fh(Request)15 b(complete)e(callbac)o(k)g(function)h(for)g(t)o(yp)q(e)
p 1706 1206 13 2 v 15 w(req)117 1282 y(IN)155 b Fm(free)p
391 1282 14 2 v 17 w(fn)463 b Fh(Request)15 b(free)g(callbac)o(k)e
(function)g(for)h(t)o(yp)q(e)p 1610 1282 13 2 v 15 w(req)117
1357 y(IN)155 b Fm(cancel)p 437 1357 14 2 v 18 w(fn)416
b Fh(Request)15 b(cancel/failure)f(callbac)o(k)f(function)g(for)h(t)o
(yp)q(e)p 1790 1357 13 2 v 15 w(req)117 1432 y(OUT)108
b Fm(t)o(yp)q(e)p 401 1432 14 2 v 18 w(req)430 b Fg(MPI)13
b Fh(created)j(request)f(t)o(yp)q(e)g(for)e(future)i(reference)75
1556 y Ff(int)23 b(MPI)p 245 1556 15 2 v 17 w(Request)p
430 1556 V 16 w(type)p 542 1556 V 17 w(create\(MPI)p
799 1556 V 16 w(Init)p 911 1556 V 17 w(function)f(*init)p
1262 1556 V 17 w(fn,)h(MPI)p 1446 1556 V 17 w(Start)p
1583 1556 V 17 w(function)393 1613 y(*start)p 540 1613
V 17 w(fn,)g(MPI)p 724 1613 V 17 w(Complete)p 933 1613
V 16 w(function)g(*complete)p 1380 1613 V 16 w(fn,)393
1669 y(MPI)p 468 1669 V 17 w(Free)p 581 1669 V 17 w(function)f(*free)p
932 1669 V 17 w(fn,)h(MPI)p 1116 1669 V 17 w(Cancel)p
1277 1669 V 16 w(function)g(*cancel)p 1676 1669 V 16
w(fn,)393 1726 y(MPI)p 468 1726 V 17 w(Type)p 581 1726
V 17 w(Request)f(*type)p 908 1726 V 17 w(req\))75 1812
y(MPI)p 150 1812 V 17 w(REQUEST)p 335 1812 V 16 w(TYPE)p
447 1812 V 17 w(CREATE\(INIT)p 728 1812 V 15 w(FN,)i(START)p
959 1812 V 16 w(FN,)g(COMPLETE)p 1263 1812 V 16 w(FN,)f(FREE)p
1470 1812 V 17 w(FN,)g(CANCEL)p 1726 1812 V 17 w(FN,)393
1869 y(TYPE)p 492 1869 V 17 w(REQ\))170 1925 y(EXTERNAL)g(INIT)p
484 1925 V 17 w(FN,)g(START)p 716 1925 V 17 w(FN,)g(COMPLETE)p
1020 1925 V 16 w(FN,)h(FREE)p 1228 1925 V 16 w(FN,)g(CANCEL)p
1484 1925 V 16 w(FN)170 1981 y(INTEGER)f(type)p 460 1981
V 17 w(req)166 2068 y Fq(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 2124 y(called.)j Fm(t)o(yp)q(e)p 304 2124 14
2 v 18 w(req)14 b Fq(is)h(a)f(unique)i(id)g(that)e(is)h(generated)f(b)o
(y)g Fm(MPI)g Fq(that)g(can)h(b)q(e)g(used)g(to)f(create)g(requests)75
2181 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 Fm(t)o(yp)q(e)p 925 2181 V 18 w(req)g Fq(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
2237 y(cannot)15 b(b)q(e)h(transfered)f(to)f(another)h(pro)q(cess.)166
2294 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 Fm(MPI)p
1711 2294 V 16 w(HLOCK)75 2350 y Fq(and)j Fm(MPI)p 248
2350 V 16 w(UNHLOCK)h Fq(as)e(describ)q(ed)k(in)e(Section)g
Fj(??)p Fq(.)166 2407 y(T)l(o)f(get)g(an)g(instance)h(of)f
Fm(t)o(yp)q(e)p 684 2407 V 17 w(req)p Fq(,)g(one)g(calls:)1967
46 y Fe(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: 3 3
3 4 bop 75 -100 a Fi(6.2.)34 b(GENERALIZED)16 b(REQUESTS)1071
b Fq(3)75 45 y Fm(MPI)p 160 45 14 2 v 16 w(REQUEST)p
379 45 V 18 w(INIT\(t)o(yp)q(e)p 584 45 V 16 w(req,)15
b(extra)p 782 45 V 17 w(state,)h(comm,)d(request\))117
122 y Fh(IN)155 b Fm(t)o(yp)q(e)p 401 122 V 18 w(req)430
b Fh(T)o(yp)q(e)10 b(of)f(request)h(desired)h(\(from)c(MPI)p
1519 122 13 2 v 16 w(REQUEST)p 1738 122 V 15 w(TYPE)p
1870 122 V 16 w(CREA)m(TE\))117 197 y(IN)155 b Fm(extra)p
416 197 14 2 v 17 w(state)384 b Fh(Extra)14 b(state)h(passed)g(to)f
Fg(init)p 1365 197 13 2 v 15 w(fn)117 271 y Fh(IN)155
b Fm(comm)470 b Fh(Comm)o(unicator)11 b(to)j(asso)q(ciate)g(request)i
(with)117 346 y(OUT)108 b Fm(request)452 b Fh(Handle)14
b(to)g(request)75 470 y Ff(int)23 b(MPI)p 245 470 15
2 v 17 w(Request)p 430 470 V 16 w(init\(MPI)p 638 470
V 17 w(Type)p 751 470 V 16 w(request)g(type)p 1054 470
V 17 w(req,)g(void)g(*extra)p 1453 470 V 17 w(state,)g(MPI)p
1709 470 V 17 w(Comm)393 527 y(comm,)g(MPI)p 611 527
V 17 w(TYPE)p 724 527 V 17 w(Request)g(*request\))75
613 y(MPI)p 150 613 V 17 w(REQUEST)p 335 613 V 16 w(INIT\(TYPE)p
567 613 V 16 w(REQ,)g(EXTRA)p 822 613 V 17 w(STATE,)g(COMM,)g
(REQUEST\))170 670 y(INTEGER)g(TYPE)p 460 670 V 17 w(REQ,)g(EXTRA)p
716 670 V 17 w(STATE,)g(COMM,)g(REQUEST)166 756 y Fq(This)16
b(function)g(in)o(v)o(ok)o(es)f(the)g(callbac)o(k)h(function)g
Fm(init)p 1100 756 14 2 v 17 w(fn)p Fq(.)21 b(In)15 b(C)g(this)h(is)g
(de\014ned)g(as:)75 858 y Ff(typedef)23 b(int)g
(MPI_Request_init_fn\(MPI_Reque)o(st)e(type_req,)i(void)75
914 y(*extra_state,)f(MPI_Comm)h(comm,)g(MPI_Request)f(request\);)166
1016 y Fq(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 1073 y Ff(FUNCTION)23
b(REQUEST)p 461 1073 15 2 v 16 w(INIT)p 573 1073 V 17
w(FN\(TYPE)p 758 1073 V 16 w(REQ,)g(EXTRA)p 1013 1073
V 17 w(STATE,)g(COMM,)g(REQUEST\))170 1129 y(INTEGER)g(TYPE)p
460 1129 V 17 w(REQ,)g(EXTRA)p 716 1129 V 17 w(STATE,)g(COMM,)g
(REQUEST)166 1215 y Fm(MPI)p 251 1215 14 2 v 16 w(REQUEST)p
470 1215 V 18 w(INIT)18 b Fq(in)o(v)o(ok)o(es)g(the)h(user)f(function)i
Fm(init)p 1180 1215 V 17 w(fn)f Fq(with)f(input)i(argumen)o(ts)e
Fm(t)o(yp)q(e)p 1789 1215 V 17 w(req)p Fq(,)75 1272 y
Fm(extra)p 173 1272 V 16 w(state)p Fq(,)h Fm(comm)p Fq(,)d(and)i
Fm(request)h Fq(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 1328 y Fm(MPI)p
160 1328 V 16 w(REQUEST)p 379 1328 V 18 w(INIT)p Fq(.)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 1385 y(structures)j(of)g(the)h
(request.)29 b(It)18 b(can)h(return)f(in)h Fm(extra)p
1048 1385 V 17 w(state)g Fq(a)f(p)q(oin)o(ter)h(to)f(this)h(in)o
(ternal)g(structure)75 1441 y(since)g Fm(extra)p 287
1441 V 17 w(state)g Fq(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 1498 y(user)g(function,)h Fm(MPI)p 457 1498
V 16 w(REQUEST)p 676 1498 V 18 w(INIT)e Fq(creates)g(and)h(returns)g
(in)g Fm(request)i Fq(a)d(handle)i(to)e(the)h(newly)75
1554 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 Fm(init)p 1345 1554
V 17 w(fn)15 b Fq(returns)g Fg(MPI)p 1645 1554 13 2 v
15 w(SUCCESS)e Fq(if)75 1611 y(it)i(succeeds.)21 b(The)16
b(consequence)g(of)f(returning)h(failure)g(is)g(discussed)h(later.)166
1743 y Fd(Discussion:)166 1793 y Fg(MPI)p 243 1793 V
14 w(REQUEST)p 445 1793 V 14 w(INIT)d Fh(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 1843 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 1893 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
1942 y(and)j(structures.)31 b(Comm)o(uni)o(cations)15
b(are)j(not)f(limited)e(to)i(that)g(comm)o(unicator.)26
b(F)m(or)17 b(example,)f(y)o(ou)h(could)75 1992 y(create)e(a)f
(subgroup)g(to)g(w)o(ork)f(with.)166 2131 y Fq(A)k(request)f(is)h(b)q
(egun)h(with)e(the)h(curren)o(t)g Fm(MPI)e Fq(functions)j
Fm(MPI)p 1284 2131 14 2 v 16 w(ST)l(ART)f Fq(and)g Fm(MPI)p
1631 2131 V 16 w(ST)l(ART)l(ALL)p Fq(.)75 2188 y(Calling)g(these)e
(functions)h(cause)f(the)h Fm(sta)o(rt)p 833 2188 V 16
w(fn)g Fq(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 2290 y Ff(typedef)23 b(int)g
(MPI_Request_start_fn\(void)e(*extra_state,)h(MPI_Comm)h(comm,)75
2346 y(MPI_Request)f(request\);)166 2448 y Fq(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
2504 y Ff(FUNCTION)23 b(REQUEST)p 461 2504 15 2 v 16
w(START)p 597 2504 V 16 w(FN\(EXTRA)p 805 2504 V 17 w(STATE,)g(COMM,)g
(REQUEST\))170 2561 y(INTEGER)g(EXTRA)p 484 2561 V 17
w(STATE,)g(COMM,)g(REQUEST)166 2647 y Fq(The)14 b(input)h
Fm(extra)p 476 2647 14 2 v 16 w(state)g Fq(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 2704 y(b)o(y)j(the)g Fm(init)p 282 2704
V 16 w(fn)h Fq(callbac)o(k)f(function.)23 b Fm(sta)o(rt)p
810 2704 V 16 w(fn)16 b Fq(ma)o(y)g(initiate)h(one)e(or)h(more)f(comm)o
(unications,)h(as)g(part)-32 46 y Fe(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: 4 4
4 5 bop 75 -100 a Fq(4)894 b Fi(CHAPTER)15 b(6.)35 b(EXTERNAL)16
b(INTERF)-5 b(A)o(CES)75 45 y Fq(of)16 b(starting)h(the)g(op)q
(eration.)25 b(The)17 b(user)g(should)h(use)f(the)g Fm(MPI)p
1190 45 14 2 v 16 w(HW)l(AIT)g Fq(function)h(in)f(Section)h
Fj(??)25 b Fq(to)75 102 y(cause)15 b(a)g(user)h(function)g(to)e(b)q(e)i
(in)o(v)o(ok)o(ed)g(when)f(the)h(comm)o(unication)f(completes.)166
158 y Fm(sta)o(rt)p 255 158 V 17 w(fn)20 b Fq(returns)g
Fg(MPI)p 565 158 13 2 v 15 w(SUCCESS)e Fq(if)j(it)f(succeeds.)36
b(The)21 b(consequence)g(of)f(returning)h(a)f(failure)75
214 y(co)q(de)c(is)g(discussed)g(later.)166 271 y(A)f(request)g(is)h
(mark)o(ed)f(completed)h(b)o(y)f(calling:)75 422 y Fm(MPI)p
160 422 14 2 v 16 w(REQUEST)p 379 422 V 18 w(MARK)p 528
422 V 16 w(COMPLETE\(request\))117 499 y Fh(INOUT)62
b Fm(request)452 b Fh(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 624 y Ff(int)23 b(MPI)p 245 624
15 2 v 17 w(Request)p 430 624 V 16 w(mark)p 542 624 V
17 w(complete\(MPI)p 847 624 V 16 w(Request)g(*request\))75
710 y(MPI)p 150 710 V 17 w(REQUEST)p 335 710 V 16 w(MARK)p
447 710 V 17 w(COMPLETE\(REQUEST\))170 766 y(INTEGER)g(REQUEST)166
853 y Fq(This)16 b(function)g(in)o(v)o(ok)o(es)f(the)g(callbac)o(k)h
(function)g Fm(complete)p 1209 853 14 2 v 17 w(fn)f Fq(de\014ned)i(as:)
75 949 y Ff(typedef)23 b(int)g(MPI_Request_complete_fn\(void)d
(*extra_state,)i(MPI_Request)h(request\);)166 1045 y
Fq(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 1101 y Ff(FUNCTION)23 b(REQUEST)p
461 1101 15 2 v 16 w(COMPLETE)p 669 1101 V 16 w(FN\(EXTRA)p
877 1101 V 16 w(STATE,)g(REQUEST\))170 1158 y(INTEGER)g(EXTRA)p
484 1158 V 17 w(STATE,)g(TYPE)p 764 1158 V 17 w(REQ)166
1244 y Fm(MPI)p 251 1244 14 2 v 16 w(REQUEST)p 470 1244
V 18 w(MARK)p 619 1244 V 16 w(COMPLETE)c Fq(in)o(v)o(ok)o(es)g(the)g
(user)h(function)g Fm(complete)p 1592 1244 V 16 w(fn)g
Fq(with)f(input)75 1300 y(argumen)o(ts)d Fm(request)i
Fq(and)f Fm(extra)p 639 1300 V 16 w(state)h Fq(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
1357 y(of)e Fm(MPI)p 212 1357 V 16 w(REQUEST)p 431 1357
V 17 w(INIT)p Fq(.)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
1413 y(mation)g(in)g Fm(extra)p 381 1413 V 17 w(state)h
Fq(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 1470 y(a)e(call)h(to)f
Fm(MPI)p 337 1470 V 16 w Fk(f)p Fm(TEST)p Fk(j)p Fm(W)l(AIT)p
Fk(g)f Fq(will)j(indicate)g(that)d Fm(request)j Fq(has)e(completed.)166
1526 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 1583 y Fm(MPI)p 160 1583 V 16 w(ST)l(ART)p Fq(.)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 Fm(MPI)p 1670 1583
V 16 w(REQUEST)p 1889 1583 V 18 w(FREE)75 1639 y Fq(whic)o(h)16
b(uses)g(the)f(callbac)o(k)h(function:)75 1735 y Ff(typedef)23
b(int)g(MPI_Request_free_function\(voi)o(d)e(*extra_state,)h(MPI_Comm)h
(comm,)75 1791 y(MPI_Request)f(request\);)166 1887 y
Fq(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 1944 y Ff(FUNCTION)23 b(REQUEST)p
461 1944 15 2 v 16 w(FREE)p 573 1944 V 17 w(FN\(EXTRA)p
782 1944 V 16 w(STATE,)g(COMM,)g(REQUEST\))170 2000 y(INTEGER)g(EXTRA)p
484 2000 V 17 w(STATE,)g(COMM,)g(REQUEST)166 2087 y Fq(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
2143 y(w)o(ere)h(storted)f(in)i Fm(extra)p 485 2143 14
2 v 17 w(state)p Fq(.)166 2200 y(The)f Fm(cancel)p 378
2200 V 18 w(fn)g Fq(is)h(de\014ned)g(as:)75 2295 y Ff(typedef)23
b(int)g(MPI_Request_cancel_fn\(void)e(*extra_state,)h(MPI_Comm)h(comm,)
75 2352 y(MPI_Request)f(request\);)166 2448 y Fq(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 2504 y Ff(FUNCTION)23 b(REQUEST)p 461
2504 15 2 v 16 w(CANCEL)p 621 2504 V 16 w(FN\(EXTRA)p
829 2504 V 16 w(STATE,)g(COMM,)h(REQUEST\))170 2561 y(INTEGER)f(EXTRA)p
484 2561 V 17 w(STATE,)g(COMM,)g(TYPE)p 907 2561 V 17
w(REQ)166 2647 y Fq(This)18 b(callbac)o(k)g(function)h(is)e(in)o(v)o
(ok)o(ed)h(b)o(y)f Fm(MPI)g Fq(when)h(the)g(request)f(is)h(cancelled)i
(\(via)d(a)g(call)i(to)75 2704 y Fm(MPI)p 160 2704 14
2 v 16 w(CANCEL)p Fq(\))14 b(or)g(when)g(there)g(is)h(a)f(failure)h(in)
g(callbac)o(k)g(function)g Fm(init)p 1351 2704 V 17 w(fn)p
Fq(,)f Fm(sta)o(rt)p 1518 2704 V 17 w(fn)p Fq(,)g(or)g
Fm(complete)p 1824 2704 V 17 w(fn)1967 46 y Fe(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: 5 5
5 6 bop 75 -100 a Fi(6.2.)34 b(GENERALIZED)16 b(REQUESTS)1071
b Fq(5)75 45 y(\(failure)23 b(is)g(describ)q(ed)i(b)q(elo)o(w)e(in)g
(section)g(6.2.3\).)40 b(This)23 b(callbac)o(k)g(function)h(can)e
(deallo)q(cate)i(the)75 102 y(in)o(ternal)13 b(data)f(structures)g(and)
h(cancel)g(the)g(in)o(ternal)g(messages)f(of)g(the)g(request)h(\(these)
f(are)g(accessible)75 158 y(via)j Fm(extra)p 247 158
14 2 v 17 w(state)p Fq(\).)166 214 y(Finally)l(,)26 b(since)d(allo)q
(cation)h(of)e(the)h Fm(t)o(yp)q(e)p 901 214 V 17 w(req)g
Fq(ma)o(y)f(use)h(some)f(system)g(resources,)i(it)f(can)f(b)q(e)75
271 y(returned)16 b(to)e(the)h(system)g(with:)75 422
y Fm(MPI)p 160 422 V 16 w(TYPE)p 293 422 V 17 w(REQUEST)p
513 422 V 18 w(FREE\(t)o(yp)q(e)p 738 422 V 17 w(req\))117
499 y Fh(INOUT)62 b Fm(t)o(yp)q(e)p 401 499 V 18 w(req)430
b Fh(T)o(yp)q(e)14 b(of)g(request)h(to)f(b)q(e)g(freed)75
624 y Ff(int)23 b(MPI)p 245 624 15 2 v 17 w(Type)p 358
624 V 17 w(request)p 543 624 V 16 w(free\(MPI)p 751 624
V 16 w(TYPE)p 863 624 V 17 w(REQUEST)g(*type)p 1191 624
V 16 w(req\))75 710 y(MPI)p 150 710 V 17 w(TYPE)p 263
710 V 16 w(REQUEST)p 447 710 V 17 w(FREE\(type)p 680
710 V 16 w(req\))170 766 y(INTEGER)g(TYPE)p 460 766 V
17 w(REQ)166 853 y Fq(It)14 b(is)h(legal)g(to)e(free)i(a)f
Fm(t)o(yp)q(e)p 625 853 14 2 v 17 w(req)g Fq(for)g(whic)o(h)h(an)f
(activ)o(e)g Fm(request)i Fq(still)g(exists.)k Fm(MPI)13
b Fq(will)j(deallo)q(ciate)75 909 y(the)f Fm(t)o(yp)q(e)p
236 909 V 18 w(req)g Fq(when)h(it)f(is)h(safe)f(to)f(do)i(so.)166
966 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 1022 y(t)o(yp)q(e)15 b(of)g(request)g(one)h
(can)f(use:)75 1173 y Fm(MPI)p 160 1173 V 16 w(REQUEST)p
379 1173 V 18 w(TYPE\(request,)h(t)o(yp)q(e)p 776 1173
V 18 w(req\))117 1250 y Fh(IN)155 b Fm(request)452 b
Fh(request)117 1326 y(OUT)108 b Fm(t)o(yp)q(e)p 401 1326
V 18 w(req)430 b Fh(t)o(yp)q(e)15 b(of)e(request)75 1450
y Ff(int)23 b(MPI)p 245 1450 15 2 v 17 w(Request)p 430
1450 V 16 w(type\(MPI)p 638 1450 V 17 w(REQUEST)f(request,)h(MPI)p
1132 1450 V 17 w(TYPE)p 1245 1450 V 17 w(REQUEST)g(type)p
1549 1450 V 16 w(req\))75 1536 y(MPI)p 150 1536 V 17
w(REQUEST)p 335 1536 V 16 w(TYPE\(REQUEST,)f(TYPE)p 781
1536 V 17 w(REQ\))170 1593 y(INTEGER)h(REQUEST,)g(TYPE)p
675 1593 V 17 w(REQ)166 1755 y Fd(Missing:)166 1805 y
Fh(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 Fg(status)p
Fh(,)h(so)f(that)g(new)h(op)q(erations)75 1855 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
1905 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 1905 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
1955 y(transfers)h(information)10 b(from)i(the)i(extra)p
733 1955 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 2004 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 2054 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 2104 y(status)j(\014eld.)j
(This)c(could)f(also)h(b)q(e)g(done)g(with)g(extra)p
938 2104 V 15 w(state)h(on)f(the)g(complete)f(call.)75
2308 y Fl(6.2.3)49 b(F)o(ailed)17 b(User)e(F)o(unctions)h(and)g
(Cancelling)i(Requests)75 2394 y Fq(When)i(a)f(callbac)o(k)h(function)h
(fails,)g Fm(MPI)d Fq(in)o(v)o(ok)o(es)i(callbac)o(k)g(function)h
Fm(cancel)p 1471 2394 14 2 v 17 w(fn)p Fq(.)33 b(When)19
b Fm(cancel)p 1823 2394 V 18 w(fn)75 2451 y Fq(returns,)c
Fm(MPI)f Fq(terminates)h(the)g(request.)20 b(The)15 b
Fm(cancel)p 1032 2451 V 17 w(fn)g Fq(should)h(cancel)h(all)e(in)o
(ternal)h(messages)f(and)75 2507 y(free)g(all)h(in)o(ternal)g(data)f
(structures)g(asso)q(ciated)g(with)h(the)f(request.)166
2640 y Fd(Missing:)-32 46 y Fe(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: 6 6
6 7 bop 75 -100 a Fq(6)899 b Fi(CHAPTER)15 b(6.)30 b(EXTERNAL)16
b(INTERF)-5 b(A)o(CES)166 45 y Fh(The)16 b(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 95 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
145 y(here.)166 360 y Fd(Discussion:)166 410 y Fh(Should)h(a)h(failure)
f(in)g Fg(free)p 580 410 13 2 v 16 w(fn)h Fh(in)o(v)o(ok)o(e)f
Fg(cancel)p 877 410 V 17 w(fn)p Fh(?)166 460 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 509 y(curren)o(tly)c(unrelated.)166 559 y(Can)f
Fg(cancel)p 361 559 V 16 w(fn)g Fh(fail?)j(If)c(so,)h(what)f(happ)q
(ens?)166 609 y(I)h(don't)f(ha)o(v)o(e)h(an)o(y)f(brigh)o(t)h(ideas)g
(here.)166 659 y(Should)f Fg(MPI)g Fh(in)o(v)o(ok)o(e)g
Fg(free)p 585 659 V 16 w(fn)h Fh(immediately)d(after)j
Fg(cancel)p 1089 659 V 16 w(fn)g Fh(for)g(all)e(dynamic)h(memory)e
(allo)q(cation?)166 709 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 758 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 808
y(Stev)o(e)i(Lederman)e(raised)h(the)h(follo)o(wing)c(p)q(oin)o(ts:)166
858 y(Should)i(there)i(b)q(e)g(a)e(default)h Fg(cancel)p
748 858 V 16 w(fn)p Fh(?)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 908 y(during)e(a)h
(CANCEL)g(to)f(a)o(v)o(oid)f(writing)h(a)g Fg(cancel)p
867 908 V 17 w(fn)p Fh(.)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 Fg(MPI)p 1710 908 V 15 w(ABORT)p
Fh(.)75 958 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 1007 y(user)j(an)o(yw)o(a)o(y)m(.)166
1223 y Fd(Discussion:)166 1272 y Fh(Since)21 b(there)h(are)f(lots)g(of)
f(p)q(oten)o(tial)g Fg(comm)p 901 1272 V 13 w(req)i Fh(and)e(only)g
(one)h(status)h(returned)g(b)o(y)f Fg(MPI)p 1702 1272
V 14 w(W)m(AIT)f Fh(or)75 1322 y Fg(MPI)p 152 1322 V
14 w(TEST)p Fh(,)d(it)f(is)g(not)g(clear)h(where)h(the)f
Fg(status)g Fh(for)f(eac)o(h)h Fg(comm)p 1151 1322 V
13 w(req)g Fh(is)g(returned.)27 b(F)m(or)16 b(example,)g(ho)o(w)g(can)
75 1372 y(y)o(ou)d(do)h(a)g Fg(MPI)p 323 1372 V 14 w(TEST)p
441 1372 V 15 w(CANCELLED)g Fh(to)f(see)j(whic)o(h)d
Fg(comm)p 1048 1372 V 13 w(req)i Fh(completed.)75 1576
y Fl(6.2.4)49 b(Example)17 b(of)f(MPI)p 556 1576 15 2
v 18 w(ALLGA)l(THER)75 1662 y Fq(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
Fm(MPI)p 1392 1662 14 2 v 15 w(ALLGA)l(THER)p Fq(.)f(It)f(will)h(b)q(e)
75 1719 y(done)13 b(with)f(a)g(generalized)i(request)e(b)o(y)g(p)q
(erforming)h Fc(p)t Fk(\000)t Fq(1)f(wrapp)q(ed)h(shifts)f(of)g(data)f
(\()p Fc(p)h Fq(=)h(#)f(pro)q(cesses)75 1775 y(in)k(the)f(comm)o
(unicator\).)166 1832 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
Fc(a)p Fq([)p Fc(p)p Fq(])d(and)h(its)h(v)m(alue)g(is)g(in)75
1888 y Fc(a)p Fq([)p Fc(i)p Fq(].)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
Fc(i)11 b Fk(\000)h Fq(1\)\045)p Fc(p)17 b Fq(and)g(sending)i(data)e
(to)75 1945 y(\()p Fc(i)10 b Fq(+)g(1\)\045)p Fc(p)p
Fq(.)20 b(A)o(t)15 b(eac)o(h)h(step,)f(pro)q(cess)h Fc(i)f
Fq(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 2001 y(shift)i Fc(p)11
b Fk(\000)h Fq(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 2057 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 2114 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 Fc(a)p Fq([)p Fc(i)p Fq(].)k(After)c(the)75
2170 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 2227 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 2283 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
2340 y(directly)i(in)o(to)e(the)g(correct)g(lo)q(cations)h(in)g(arra)o
(y)e(a.\))166 2396 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 Fm(MPI)75 2453 y Fq(without)15
b(a)g(non-blo)q(c)o(king)i(request.)75 2615 y Ff(MPI_Comm_size\(comm,)k
(&p\);)75 2672 y(MPI_Comm_rank\(comm,)g(&i\);)1967 46
y Fe(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: 7 7
7 8 bop 75 -100 a Fi(6.2.)29 b(GENERALIZED)16 b(REQUESTS)1076
b Fq(7)75 45 y Ff(/*)24 b(init)f(your)g(location)g(in)h(array)f(*/)75
102 y(a[i])g(=)h(i;)75 158 y(/*)g(set)f(initial)g(send)g(value)g(*/)75
214 y(as)h(=)f(a[i])75 271 y(/*)h(process)e(to)i(recv)f(from)h(and)f
(persistent)g(request)g(*/)75 327 y(from)g(=)h(\(i)g(-)f(1\))h(\045)g
(p;)75 384 y(MPI_Recv_init\(&ar,)d(1,)j(MPI_DOUBLE,)e(from,)i(13,)f
(comm,)g(&req_recv\);)75 440 y(/*)h(process)e(to)i(send)f(to)h(and)f
(persistent)g(request)g(*/)75 497 y(to)h(=)f(\(i)h(+)g(1\))f(\045)h(p;)
75 553 y(MPI_Send_init\(&as,)d(1,)j(MPI_DOUBLE,)e(to,)i(13,)f(comm,)g
(&req_send\);)75 610 y(/*)h(do)f(send)g(and)h(recv)f(p)h(-)g(1)f(times)
h(*/)75 666 y(for)f(\(c1)h(=)g(0;)f(c1)h(<)g(p)f(-)h(1;)g(c1++\))f({)
147 723 y(/*)g(begin)g(persistent)g(send)g(and)h(recv)f(*/)147
779 y(MPI_Start\(&req_recv\);)147 835 y(MPI_Start\(&req_send\);)147
892 y(/*)g(when)g(recv)h(complete)f(copy)g(result)g(in)h(final)f(array)
g(a)h(*/)147 948 y(MPI_Wait\(&req_recv,)d(&status_recv\);)147
1005 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
1061 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 1118 y(MPI_Wait\(&req_send,)e
(&status_send\);)147 1174 y(as)i(=)h(ar;)75 1231 y(})75
1287 y(/*)g(free)f(up)g(persistent)g(requests)g(*/)75
1344 y(MPI_Request_free\(&req_recv)o(\);)75 1400 y
(MPI_Request_free\(&req_send)o(\);)166 1506 y Fq(A)o(t)17
b(the)i(start,)e Fc(a)p Fq([)p Fc(i)p Fq(])f(=)i Fc(i)g
Fq(and)g Fc(a)p Fq([)p Fc(j)s Fq(])e(=)i(0)g(\()p Fc(j)i
Fk(6)p Fq(=)d Fc(i)p Fq(\))h(on)g(pro)q(cess)g Fc(i)p
Fq(.)29 b(A)o(t)17 b(the)h(end,)i Fc(a)p Fq([)p Fc(j)s
Fq(])c(=)i Fc(j)i Fq(on)e(all)75 1563 y(pro)q(cesses.)166
1619 y(As)d(an)g(example,)h(with)f Fc(p)e Fq(=)g(4,)h(pro)q(cess)i(1)f
(do)q(es:)p 75 1664 364 2 v 74 1720 2 57 v 100 1703 a(c1)p
167 1720 V 50 w(send)p 305 1720 V 50 w(recv)p 437 1720
V 75 1722 364 2 v 74 1778 2 57 v 110 1761 a(0)p 167 1778
V 68 w Fc(a)p Fq([1])p 305 1778 V 62 w Fc(a)p Fq([0])p
437 1778 V 74 1835 V 110 1818 a(1)p 167 1835 V 68 w Fc(a)p
Fq([0])p 305 1835 V 62 w Fc(a)p Fq([3])p 437 1835 V 74
1891 V 110 1874 a(2)p 167 1891 V 68 w Fc(a)p Fq([3])p
305 1891 V 62 w Fc(a)p Fq([2])p 437 1891 V 75 1893 364
2 v 166 1959 a(No)o(w)e(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 2015 y(cation)j(request)g(to)f(send)i(to)e(\()p
Fc(i)11 b Fq(+)g(1\)\045)p Fc(p)16 b Fq(and)h(a)g(request)g(to)f(recv)h
(from)f(\()p Fc(i)11 b Fk(\000)h Fq(1\)\045)p Fc(p)p
Fq(.)24 b(The)17 b(algorithm)75 2072 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 2128
y(\014nishes,)21 b(y)o(ou)d(w)o(an)o(t)g Fm(MPI)g Fq(to)g(call)h(y)o
(our)g Fm(handler)p 950 2128 14 2 v 17 w(fn)p Fq(.)30
b(When)20 b(the)e(recv)h(\014nishes)h(y)o(ou)f(can)f(cop)o(y)h(the)75
2185 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 2241 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 2297 y(y)o(ou)e(ha)o(v)o(e)g(not)f
(\014nished.)166 2354 y(Belo)o(w)h(is)h(C)f(co)q(de.)166
2410 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 2517 y Ff(/*)24
b(this)f(supplies)g(the)g(init,)g(start,)g(complete,)g(free,)g(and)h
(cancel)f(functions)147 2573 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
2630 y(MPI_Request_type_create\(in)o(it_fn,)d(start_fn,)j(complete_fn,)
f(free_fn,)75 2686 y(cancel_fn,)g(&type_req\);)-32 46
y Fe(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: 8 8
8 9 bop 75 -100 a Fq(8)899 b Fi(CHAPTER)15 b(6.)30 b(EXTERNAL)16
b(INTERF)-5 b(A)o(CES)75 102 y Ff(/*)24 b(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
158 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 214 y(associated)f(with)h
(extra_state.)g(This)g(is)h(not)f(shown)g(*/)75 327 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 384 y(MPI_Request_init\(type_req,)d(extra,)j(comm,)h
(&request\);)75 497 y(/*)g(start)f(the)g(non-blocking)f(operation.)47
b(This)23 b(calls)g(start_fn.)g(*/)75 553 y(MPI_Start\(&request\);)75
666 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 723 y(going.)46 b(This)24
b(is)f(not)h(shown.)f(*/)75 835 y(/*)h(now)f(wait)g(until)h
(non-blocking)e(operation)g(is)i(done)f(*/)75 892 y(/*)h(it)f(is)h(not)
f(clear)g(what)h(is)f(put)h(into)f(status)g(*/)75 948
y(MPI_Wait\(&request,)e(&status\);)75 1061 y(/*)j(done)f(with)g
(request,)g(free)g(up.)48 b(This)23 b(calls)g(free_fn.)g(*/)75
1118 y(MPI_Request_free\(&request\))o(;)75 1231 y(/*)h(done)f(with)g
(type_req,)g(free)g(up)h(*/)75 1287 y(MPI_Type_request_free\(&typ)o
(e_req\);)166 1393 y Fq(The)15 b(functions)h(for)f(the)g(generalized)i
(request)e(are:)75 1556 y Ff(init_fn\(type_req,)22 b(*extra,)g(comm,)i
(request\))75 1613 y({)75 1725 y(/*)g(initialize)e(counters)h(and)g
(info)h(*/)75 1782 y(MPI_Comm_size\(comm,)d(&extra->p\);)75
1838 y(MPI_Comm_rank\(comm,)g(&extra->i\);)75 1895 y(extra->request)h
(=)i(request;)75 1951 y(/*)g(process)e(to)i(recv)f(from)h(and)f
(persistent)g(request)g(*/)75 2008 y(from)g(=)h(\(extra->i)f(-)g(1\))h
(\045)g(extra->p;)75 2064 y(MPI_Recv_init\(&extra->ar,)c(1,)k
(MPI_DOUBLE,)e(from,)i(13,)f(comm,)g(extra,)123 2121
y(&extra->req_recv\);)75 2177 y(/*)h(process)e(to)i(send)f(to)h(and)f
(persistent)g(request)g(*/)75 2234 y(to)h(=)f(\(extra->i)g(+)h(1\))f
(\045)h(extra->p;)75 2290 y(MPI_Send_init\(&extra->as,)c(1,)k
(MPI_DOUBLE,)e(to,)i(13,)f(comm,)123 2346 y(&extra->req_send\);)75
2403 y(*)h(completed)e(ok)i(*/)75 2459 y(return)f(MPI_SUCCESS;)75
2516 y(})1967 46 y Fe(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: 9 9
9 10 bop 75 -100 a Fi(6.2.)29 b(GENERALIZED)16 b(REQUESTS)1076
b Fq(9)75 45 y Ff(start_fn\(*extra,)22 b(comm,)h(request\))75
102 y({)75 158 y(/*)h(init)f(your)g(location)g(in)h(array)f(*/)75
214 y(extra->a[extra->i])e(=)j(extra->i;)75 271 y(/*)g(set)f(initial)g
(send)g(value)g(*/)75 327 y(extra->as)g(=)g(extra->a[extra->i])75
384 y(/*)h(haven't)e(done)i(any)f(yet)h(*/)75 440 y
(extra->num_completed)d(=)j(0;)75 497 y(extra->num_done)e(=)i(0;)75
610 y(/*)g(begin)f(persistent)f(recv)i(and)f(send)g(*/)75
666 y(MPI_Start\(&extra->req_recv)o(\);)75 723 y
(MPI_Hwait\(&extra->req_recv)o(,)e(handler_fn,)i
(&extra->status_recv\);)75 779 y(MPI_Start\(&extra->req_send)o(\);)75
835 y(MPI_Hwait\(&extra->req_send)o(,)e(handler_fn,)i
(&extra->status_send\);)75 948 y(return)g(MPI_SUCCESS;)75
1005 y(})166 1111 y Fq(Eac)o(h)15 b(time)g(a)g(hsend)h(or)f(hrecv)h
(\014nishes,)g(the)f(handler)p 1129 1111 14 2 v 18 w(fn)g(gets)g
(called:)75 1217 y Ff(handler_fn\(extra,)22 b(status\))75
1274 y({)75 1330 y(/*)i(note)f(a)h(send)f(or)h(recv)f(finished)g(*/)75
1387 y(extra->num_completed++;)75 1443 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
1500 y(if)h(\(extra->num_completed)d(!=)i(2\))h({)170
1556 y(return)f(\(MPI_SUCCESS\);)75 1613 y(})75 1725
y(extra->num_completed)e(=)j(0;)f(/*)h(reset)f(*/)75
1838 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 1895 y(/*)h(note)f(another)g(round)g
(completed)g(*/)75 1951 y(extra->num_done++;)75 2064
y(/*)h(copy)f(received)g(data)g(*/)75 2121 y(extra->a[\(extra->i)e(-)j
(1)g(-)g(extra->num_done)d(+)j(extra->p\))f(\045)g(extra->p])218
2177 y(=)h(extra->ar;)75 2234 y(/*)g(see)f(if)h(completely)e(done)h(*/)
75 2290 y(if)h(\(extra->num_done)d(==)j(extra->p)f(-)g(1\))h({)170
2346 y(/*)g(mark)f(request)g(done)h(*/)170 2403 y
(MPI_Request_mark_completed\(&e)o(xtra->re)o(quest\);)75
2459 y(})75 2516 y(else)f({)170 2572 y(/*)h(set)f(data)h(to)f(be)h
(sent)f(*/)170 2629 y(extra->as)g(=)h(extra->ar;)-32
46 y Fe(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: 10 10
10 11 bop 75 -100 a Fq(10)871 b Fi(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)170 45 y Ff(/*)24
b(begin)f(new)h(round)f(*/)170 102 y(MPI_Start\(extra->req_recv\);)170
158 y(MPI_Start\(extra->req_send\);)170 214 y
(MPI_Hwait\(&extra->req_recv,)e(handler_fn,)h(&extra->status_recv\);)
170 271 y(MPI_Hwait\(&extra->req_send,)f(handler_fn,)h
(&extra->status_send\);)75 327 y(})75 440 y(return)h(\(MPI_SUCCESS\);)
75 497 y(})75 666 y(free_fn\(comm,)f(request,)h(*extra\))75
723 y({)75 779 y(/*)h(free)f(up)g(the)h(persistent)e(communications)g
(requests)h(*/)75 835 y(MPI_Request_free\(&extra->r)o(eq_recv)o(\);)75
892 y(MPI_Request_free\(&extra->r)o(eq_send)o(\);)75
948 y(return)g(MPI_SUCCESS;)75 1005 y(})166 1244 y Fd(Missing:)166
1293 y Fh(The)14 b Fg(cancel)p 358 1293 13 2 v 17 w(fn)g
Fh(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.)75
1519 y Fn(6.3)59 b(Determining)19 b(Request)f(T)-5 b(yp)r(e)75
1621 y Fq(With)13 b(man)o(y)f(p)q(ossible)j(v)m(alues)f(for)e
(requests,)g(it)h(w)o(ould)h(b)q(e)f(desirable)h(to)e(b)q(e)i(able)f
(to)f(\014nd)i(out)e(the)h(t)o(yp)q(e)75 1677 y(of)h(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 1734 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.)75 1885 y Fm(MPI)p 160 1885
14 2 v 16 w(REQUEST)p 379 1885 V 18 w(CLASS\(request,)h(class\))117
1962 y Fh(IN)155 b Fm(request)452 b Fh(An)14 b(MPI)p
1056 1962 13 2 v 15 w(Request)117 2037 y(OUT)108 b Fm(class)500
b Fh(De\014ned)15 b(constan)o(t)f(sp)q(ecifying)g(\\class")g(of)f
(request)75 2161 y Ff(int)23 b(MPI)p 245 2161 15 2 v
17 w(Request)p 430 2161 V 16 w(mark)p 542 2161 V 17 w(class\(MPI)p
775 2161 V 16 w(Request)g(*request,)g(int)g(class\))75
2248 y(MPI)p 150 2248 V 17 w(REQUEST)p 335 2248 V 16
w(MARK)p 447 2248 V 17 w(CCLASS\(REQUEST,)e(CLASS\))170
2304 y(INTEGER)i(REQUEST,)g(CLASS)166 2391 y Fq(This)i(routine)g
(returns)g(the)g(class)g(of)f(an)h Fm(MPI)p 1035 2391
14 2 v 15 w(Request)j Fq(structure.)48 b(P)o(ossible)25
b(classes)h(are:)75 2447 y Fg(MPI)p 152 2447 13 2 v 14
w(SEND)p Fq(,)10 b Fg(MPI)p 371 2447 V 15 w(RECV)p Fq(,)e
Fg(MPI)p 589 2447 V 14 w(A)o(CCEPT)p Fq(,)g Fg(MPI)p
860 2447 V 15 w(SP)m(A)-5 b(WN)p Fq(,)9 b Fg(MPI)p 1110
2447 V 14 w(NOTIFY)p Fq(,)g Fg(MPI)p 1373 2447 V 15 w(GENERALIZE)p
Fq(,)g(and)h Fg(MPI)p 1814 2447 V 14 w(INA)o(CTIVE)p
Fq(.)75 2504 y(F)l(or)15 b(example,)h(this)g(routine)g(can)g(b)q(e)g
(used)g(after)f(a)g Fm(MPI)p 1075 2504 14 2 v 16 w Fk(f)p
Fm(W)l(AIT)p Fk(j)p Fm(TEST)p Fk(gf)p Fm(ANY)p Fk(j)p
Fm(ALL)p Fk(g)f Fq(call)j(to)e(deter-)75 2560 y(mine)f(what)e(kind)i
(of)f(request)g(has)g(completed.)20 b(This)13 b(ma)o(y)f(also)h(b)q(e)h
(useful)g(to)e(determine)i(the)f(v)m(alidit)o(y)75 2617
y(of)i(\014elds)h(of)f(the)g(corresp)q(onding)h(MPI)p
757 2617 V 17 w(Status)e(structure.)1967 46 y Fe(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: 11 11
11 12 bop 75 -100 a Fi(6.4.)34 b(PR)o(OPOSAL)17 b(F)o(OR)e(USER)h(A)o
(CCESS)f(TO)g(AN)h(MPI)f(D)o(A)l(T)l(A)g(TYPE)393 b Fq(11)166
45 y Fd(Discussion:)166 95 y Fh(There)12 b(is)f(already)g(a)f(prop)q
(osed)i(routine)f(called)g(\\MPI)p 1030 95 13 2 v 15
w(Request)p 1189 95 V 16 w(t)o(yp)q(e",)g(used)h(for)f(Generalized)g
(Requests,)75 145 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 145 V 15 w(Request)p 1041 145
V 16 w(class.)18 b(It)12 b(could)g(also)f(b)q(e)i(MPI)p
1539 145 V 15 w(Get)p 1621 145 V 15 w(request)p 1765
145 V 17 w(class.)75 195 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 420 y Fn(6.4)59
b(Prop)r(osal)20 b(F)n(o)n(r)h(User)f(Access)e(T)-5 b(o)20
b(An)f(MPI)h(Data)f(T)-5 b(yp)r(e)75 616 y Fm(MPI)p 160
616 14 2 v 16 w(GET)p 264 616 V 17 w(CHAR)p 401 616 V
17 w(D)o(A)l(T)l(A)p 533 616 V 17 w(TYPE)15 b(\(dataT)l(yp)q(e,)h(cha)o
(rDataT)l(yp)q(e\))117 694 y Fh(IN)155 b Fm(dataT)l(yp)q(e)412
b Fh(MPI)14 b(Data)g(T)o(yp)q(e)g(\(user)h(de\014ned)g(or)f
(prede\014ned\))117 769 y(OUT)108 b Fm(cha)o(rDataT)l(yp)q(e)322
b Fh(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 943 y Ff(int)23 b(MPI_Get_char_data_type)e
(\(MPI_Datatype)h(dataType,)h(char)g(charDataType,)743
999 y(int)h(charDataTypeLen\))75 1112 y(MPI_GET_CHAR_DATA_TYPE)d
(\(DATA_TYPE,)h(CHAR_DATA_TYPE,)g(CHAR_DATA_TYPE_LEN,)f(IERROR\))147
1169 y(INTEGER)h(DATA_TYPE)147 1225 y(CHARACTER*\(CHAR_DATA_TY)o
(PE_LEN\))e(CHAR_DATA_TYPE)147 1282 y(INTEGER)i(CHAR_DATA_TYPE_LEN)147
1338 y(INTEGER)g(IERROR)166 1444 y Fq(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 1501 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 1557 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
1614 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
1670 y(HINDEXED,)f(MPI)p 445 1670 V 16 w(UB,)g(MPI)p
644 1670 V 17 w(LB\).)75 1821 y Fm(MPI)p 160 1821 V 16
w(D)o(A)l(T)l(A)p 291 1821 V 17 w(TYPE)p 425 1821 V 16
w(FROM)p 569 1821 V 17 w(CHAR)h(\(cha)o(rDataT)l(yp)q(e,)g(dataT)l(yp)q
(e\))117 1898 y Fh(IN)155 b Fm(cha)o(rDataT)l(yp)q(e)322
b Fh(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 1974 y(OUT)108 b Fm(dataT)l(yp)q(e)412
b Fh(A)14 b(Resulting)f(MPI)i(Data)e(T)o(yp)q(e)75 2148
y Ff(int)23 b(MPI_data_type_from_char)e(\(char)i(*charDataType,)f
(MPI_Datatype)h(dataType\))75 2261 y(MPI_DATA_TYPE_FROM_CHAR)e
(\(CHAR_DATA_TYPE,)g(DATA_TYPE,)i(IERROR\))147 2317 y
(CHARACTER*\(<size>\))e(CHAR_DATA_TYPE)147 2374 y(INTEGER)h(DATA_TYPE)
147 2430 y(INTEGER)g(IERROR)166 2536 y Fq(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 2593 y(that)g(came)i(from)e
(MPI)p 489 2593 V 16 w(GET)p 605 2593 V 16 w(CHAR)p 755
2593 V 17 w(D)o(A)l(T)l(A)p 899 2593 V 16 w(TYPE)h(or)g(a)g(string)g
(the)g(program)f(created.)-32 46 y Fe(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: 12 12
12 13 bop 75 -100 a Fq(12)876 b Fi(CHAPTER)15 b(6.)30
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 45 y Fm(String)15
b(F)o(o)o(rmat:)43 b Fq(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 102 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 158 y(\(in)c(the)g(BNF)f(b)q(elo)o(w,)h
(this)g(is)g(de\014ned)h(as)e Fc(<)p Fq(basicT)o(yp)q(eRep)p
Fc(>)p Fq(\).)29 b(A)17 b(sequence)i(of)e(these)h(strings)f(are)75
214 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 271 y(as)j Fc(<)p Fq(t)o(yp)q(eRep)p
Fc(>)p Fq(\).)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 327 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 384 y(BNF)d(b)q(elo)o(w)h(as)f
Fc(<)p Fq(t)o(yp)q(eDescC)p Fc(>)h Fq(for)e(C)h(and)g
Fc(<)p Fq(t)o(yp)q(eDescF77)p Fc(>)h Fq(for)e(the)h(F)l(ortran)f(77.)18
b(The)12 b(enco)q(ding)g(of)75 440 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
497 y(MPI)p 167 497 14 2 v 16 w(GET)p 283 497 V 16 w(CHAR)p
433 497 V 17 w(D)o(A)l(T)l(A)p 577 497 V 16 w(TYPE\))k(or)g(T)g(and/or)
f(U)i(\(for)e(MPI)p 1266 497 V 16 w(D)o(A)l(T)l(A)p 1409
497 V 16 w(TYPE)p 1554 497 V 17 w(FR)o(OM)p 1710 497
V 16 w(CHAR\))75 553 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 610 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
666 y(temp)q(orary)14 b(subt)o(yp)q(es)i(within)h(a)d(single)j(string.)
75 786 y Fm(T)l(emp)q(o)o(ral)k(Uniqueness)k(of)c(Sequence)j(Numb)q
(ers:)46 b Fq(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 843 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 899 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
956 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
1012 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 1118 y Fb(A)n(dvic)n(e)i(to)i(users.)
61 b Fq(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 1175 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 1231 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 Fb(End)d(of)g(advic)n(e)g(to)h(users.)p Fq(\))166
1420 y Fd(Discussion:)32 b Fh(F)m(or)11 b(MPI)p 587 1420
13 2 v 16 w(D)o(A)m(T)m(A)p 720 1420 V 13 w(TYPE)p 850
1420 V 16 w(FR)o(OM)p 993 1420 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 1477
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 1533 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 1533 V 15 w(GET)p 1414 1533 V 15 w(TYPE)p 1546 1533
V 16 w(SEQ)p 1645 1533 V 15 w(NUM)h(to)f(get)75 1589
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 1646 y(T)m(a)o(ylor's)d
(\(TMC\))i(prop)q(osal\).)75 1849 y Fm(Interlanguage)k(Issues:)46
b Fq(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 1905 y(creating)e
(language.)75 2025 y Fm(Implementation)i(Note:)45 b Fq(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 2082 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 2138 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
2195 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 2251 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
2357 y Ff(TABLE)23 b(I)719 2414 y(Character)g(representations)123
2527 y(Type)333 b(Character)23 b(representation)123 2583
y(-----------------)e(----------------------------)o(--)123
2640 y(byte)333 b(b)123 2696 y(packed)285 b(p)1967 46
y Fe(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: 13 13
13 14 bop 75 -100 a Fi(6.4.)29 b(PR)o(OPOSAL)17 b(F)o(OR)e(USER)h(A)o
(CCESS)f(TO)g(AN)h(MPI)f(D)o(A)l(T)l(A)g(TYPE)398 b Fq(13)123
45 y Ff(char)333 b(c)123 102 y(unsigned)22 b(char)119
b(uc)123 158 y(short)309 b(s)123 214 y(unsigned)22 b(short)95
b(us)123 271 y(int)357 b(i)123 327 y(unsigned)22 b(int)143
b(ui)123 384 y(long)333 b(l)123 440 y(unsigned)22 b(long)119
b(ul)123 497 y(long)23 b(long)214 b(ll)123 553 y(unsigned)22
b(ll)167 b(ull)123 610 y(float)309 b(f)123 666 y(double)285
b(d)123 723 y(long)23 b(double)166 b(ld)123 779 y(INTEGER)261
b(I)123 835 y(INTEGER*2)213 b(I2)123 892 y(INTEGER*4)g(I4)123
948 y(INTEGER*8)g(I8)123 1005 y(LOGICAL)261 b(L)123 1061
y(REAL)333 b(R)123 1118 y(REAL*4)285 b(R4)123 1174 y(REAL*8)g(R8)123
1231 y(DOUBLE)23 b(PRECISION)46 b(D)123 1287 y(COMPLEX)261
b(C)123 1344 y(DOUBLE)23 b(COMPLEX)94 b(DC)123 1400 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 1456 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 1513 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 1569 y(vector)285
b(V:Type:count:blocklength:str)o(ide)123 1626 y(hvector)261
b(HV:Type:count:blocklength:st)o(ride)123 1682 y(Indexed)g
(X:Type:count:blocklength/dis)o(placeme)o(nt,...)123
1739 y(HIndexed)237 b(HX:Type:count:blocklength/di)o(splacem)o(ent,...)
123 1795 y(Struct)285 b(S:count:Type/count/displacem)o(ent,...)75
1908 y(Examples:)147 2021 y(Type)23 b(threeslice)f(from)i(example)f
(3.29)g(\(assume)g(sizeofreal)f(is)i(4\))147 2134 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 2247 y(Type)f(ltype)g(from)g(example)g(3.30)147
2360 y("330:\(X:R:100:1/99,101/)o(98,202/)o(97,...,1)o(0000/0\))o(")147
2473 y(Type)g(xpose)g(from)g(example)g(3.31)h(\(assume)f(sizeofreal)f
(is)i(4\))147 2586 y("331:\(HV:U3311:100:1:4\))o(3311:\(V)o(:R:100:1)o
(:100\)")147 2698 y(Type)f(Particletype)f(from)h(example)g(3.33)h
(\(assume)f(double)g(alignment,)f(sizeof)h(int)h(4,)-32
46 y Fe(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: 14 14
14 15 bop 75 -100 a Fq(14)876 b Fi(CHAPTER)15 b(6.)30
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)1030 45 y Ff(sizeof)23
b(double)g(8,)g(base)h(=)f(96\))147 158 y("333:\(S:4:i/1/0,d/6/8,c)o
(/7/56,U)o(B/1/64\)")147 271 y(Type)g(Particletype)f(from)h(example)g
(3.34)h(\(assume)f(addr)g(particle)g(is)g(96,)1030 327
y(double)g(alignment,)f(sizeof)h(int)h(4,)1030 384 y(sizeof)f(double)g
(8\))147 497 y("334:\(S:3:i/1/96,d/6/10)o(4,c/7/1)o(52\)")75
610 y(BNF:)75 723 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 835 y(<Int>)g(::=)h(-<digit>)
e(|)i(<digit>)f(|)h(<Int>)f(<digit>)75 948 y(<nonNegInt>)f(::=)i
(<digit>)f(|)g(<nonNegInt>)g(<digit>)75 1061 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
1174 y(<posInt>)f(::=)g(<posDigit>)g(|)g(<posInt>)g(<digit>)75
1287 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 1344 y(ul)g(|)g(ll)f(|)h(ull)f(|)h(f)g
(|)g(d)f(|)h(ld)75 1456 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 1569 y(<typeDescUser>)e(::=)h(U<nonNegInt>)g(|)g
(T<nonNegInt>)75 1682 y(<typeDescBasic>)f(::=)h(<typeDescC>)g(|)g
(<typeDescF77>)f(|)i(<typeDescUser>)75 1795 y(<typeDescAdv>)e(::=)i(UB)
f(|)h(LB)f(|)h(<typeDescBasic>)75 1908 y(<typeDescVec>)e(::=)i
(V:<typeDescBasic>:<posI)o(nt>:<po)o(sInt>:<)o(Int>)75
2021 y(<typeDescHVec>)e(::=)h(HV:<typeDescBasic>:<posInt>:<)o(posInt>)o
(:<Int>)75 2134 y(<typeDescIndex>)f(::=)h(X:<typeDescBasic>:<posInt>:<)
o(posInt>)o(/<Int>)e(|)552 2190 y(<typeDescIndex>,<posInt>/<In)o(t>)75
2303 y(<typeDescHIndex>)h(::=)h(HX:<typeDescBasic>:<posInt>)o(:<posIn)o
(t>/<Int>)d(|)576 2360 y(<typeDescIndex>,<posInt>/<I)o(nt>)75
2473 y(<typeDescStruct>)i(::=)h(S:<posInt>:<typeDescAdv>/<p)o(osInt>/)o
(<Int>)e(|)576 2529 y(<typeDescStruct>,<typeDescA)o(dv>/<po)o(sInt>/<I)
o(nt>)75 2642 y(<typeDescSimple>)h(::=)h(<typeDescBasic>)f(|)i
(<typeDescVec>)e(|)h(<typeDescHVec>)f(|)576 2698 y(<typeDescIndex>)g(|)
i(<typeDescHIndex>)d(|)j(<typeDescStruct>)1967 46 y Fe(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: 15 15
15 16 bop 75 -100 a Fi(6.5.)34 b(TR)o(UE)15 b(EXTEXT)g(OF)g(D)o(A)l(T)l
(A)l(TYPES)936 b Fq(15)75 102 y Ff(<typeDesc>)22 b(::=)i(<posInt>)f
(<typeDescSimple>)e(|)j(<typeDescSimple>)75 214 y(<basicTypeRep>)e(::=)
h(<nonNegInt>:\(<typeDesc>\))75 327 y(<typeRep>)g(::=)g(<basicTypeRep>)
f(|)i(<basicTypeRep>)e(<typeRep>)75 440 y(<createTypeRep>)g(::=)h
(\(<typeDesc>\))f(|)i(\(<typeDesc>\))e(<typeRep>)75 640
y Fn(6.5)59 b(T)-5 b(rue)20 b(Extext)d(of)j(Datat)n(yp)r(es)75
741 y Fq(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 798 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 854 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 911
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 967 y(the)i Fg(MPI)p 237 967 13
2 v 14 w(UB)g Fq(and)g Fg(MPI)p 500 967 V 14 w(LB)g Fq(v)m(alues.)42
b(The)22 b(writer)g(of)f(the)i(gather)e(routine)h(could)h(determine)h
(this)75 1024 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)75 1080 y(desired.)k(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 1231
y Fm(MPI)p 160 1231 14 2 v 16 w(TRUE)p 294 1231 V 17
w(EXTENT\(datat)o(yp)q(e,)i(size\))117 1308 y Fh(IN)155
b Fm(datat)o(yp)q(e)424 b Fh(datat)o(yp)q(e)14 b(to)g(get)g(true)h
(exten)o(t)g(of)117 1383 y(OUT)108 b Fm(size)519 b Fh(true)15
b(exten)o(t)g(of)e(datat)o(yp)q(e)75 1508 y Ff(int)23
b(MPI)p 245 1508 15 2 v 17 w(True)p 358 1508 V 17 w(extent\(MPI)p
615 1508 V 16 w(Datatype)f(datatype,)h(MPI)p 1156 1508
V 17 w(Aint)g(size\))75 1594 y(MPI)p 150 1594 V 17 w(TRUE)p
263 1594 V 16 w(EXTENT\(DATATYPE,)f(SIZE\))170 1651 y(INTEGER)h
(DATATYPE,)g(SIZE)166 1813 y Fd(Missing:)166 1863 y Fh(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
1913 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
2139 y Fn(6.6)59 b(Cacheing)19 b(on)h(MPI)g(Handles)75
2316 y Fd(Missing:)166 2366 y Fh(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
2416 y(b)q(e)g(able)e(to)h(tell)f(what)h(it)g(is.)166
2555 y Fq(The)19 b Fm(MPI)f Fq(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 2612 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 2668 y(other)h Fm(MPI)f Fq(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.)-32 46 y Fe(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: 16 16
16 17 bop 75 -100 a Fq(16)871 b Fi(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 45 y Fl(6.6.1)49
b(F)o(unctions)75 131 y Fq(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 187 y(ing)i(t)o(yp)q(es)f(MPI)g
(handles:)143 281 y Fk(\017)23 b Ff(MPI)p 264 281 15
2 v 16 w(COMM)143 375 y Fk(\017)g Ff(MPI)p 264 375 V
16 w(DATATYPE)143 469 y Fk(\017)g Ff(MPI)p 264 469 V
16 w(GROUP)166 639 y Fd(Missing:)166 688 y Fh(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 877 y
Fb(R)n(ationale.)49 b Fq(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 934 y(p)q(erformance)f(impact.)20 b(F)l(or)14
b(example,)i Fm(MPI)p 975 934 14 2 v 16 w(REQUEST)g Fq(are)f(created)g
(and)g(destro)o(y)o(ed)g(in)h(time)189 990 y(critical)g(sections)g(of)f
(co)q(de.)20 b(\()p Fb(End)c(of)g(r)n(ationale.)p Fq(\))166
1097 y(A)11 b Ff(keyval)g Fq(created)g(b)o(y)h(the)f
Fm(MPI)g Fq(function)h Fm(MPI)p 1007 1097 V 16 w(KEYV)l(AL)p
1193 1097 V 17 w(CREA)l(TE)g Fq(ma)o(y)f(b)q(e)h(used)g(for)f(cac)o
(heing)75 1153 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 1210 y(signatures.)75
1303 y Ff(typedef)i(int)g(MPI_Copy_function\(void)e(*handle,)i(int)g
(keyval,)791 1360 y(void)g(*extra_state,)f(void)i(*attribute_val_in,)
791 1416 y(void)f(*attribute_val_out,)e(int)j(*flag\))75
1529 y(typedef)f(int)g(MPI_Delete_function\(void)e(*handle,)i(int)g
(keyval,)839 1586 y(void)g(*attribute_val,)f(void)h(*extra_state\);)75
1755 y(SUBROUTINE)f(COPY_FUNCTION\(HANDLE,)f(KEYVAL,)i(EXTRA_STATE,)672
1811 y(ATTRIBUTE_VAL_IN,)e(ATTRIBUTE_VAL_OUT,)h(FLAG,)h(IERR\))75
1868 y(INTEGER)g(HANDLE,)g(KEYVAL,)g(EXTRA_STATE,)f(ATTRIBUTE_VAL_IN,)
75 1981 y(SUBROUTINE)g(DELETE_FUNCTION\(HANDLE,)f(KEYVAL,)i
(ATTRIBUTE_VAL,)f(EXTRA_STATE,)g(IERR\))75 2037 y(INTEGER)h(HANDLE,)g
(KEYVAL,)g(ATTRIBUTE_VAL,)f(EXTRA_STATE,)g(IERR)166 2131
y Fq(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
2188 y(di\013eren)o(t)15 b(formal)f(argumen)o(t)g(list)i(\(the)e
Ff(MPI)p 845 2188 15 2 v 17 w(COMM)g Fq(argumen)o(t)g(is)h(replaced)h
(b)o(y)e(an)o(y)h(of)f(the)h(previously)75 2244 y(listed)h(t)o(yp)q(es)
g(of)e(MPI)i(handles\).)1967 46 y Fe(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: 17 17
17 18 bop 75 -100 a Fi(6.6.)29 b(CA)o(CHEING)15 b(ON)g(MPI)h(HANDLES)
979 b Fq(17)75 45 y Fm(MPI)p 160 45 14 2 v 16 w(A)l(TTR)p
293 45 V 17 w(PUT\(handle,)16 b(k)o(eyval,)f(attribute)p
877 45 V 18 w(val\))117 122 y Fh(IN)155 b Fm(handle)465
b Fh(handle)14 b(to)g(whic)o(h)f(attribute)i(will)d(b)q(e)j(attac)o
(hed)f(\(handle\))117 197 y(IN)155 b Fm(k)o(eyval)471
b Fh(k)o(ey)14 b(v)n(alue,)f(as)h(returned)h(b)o(y)905
254 y Fg(MPI)p 982 254 13 2 v 15 w(KEYV)m(AL)p 1154 254
V 13 w(CREA)m(TE)d Fh(\(in)o(teger\))117 329 y(IN)155
b Fm(attribute)p 484 329 14 2 v 18 w(val)352 b Fh(attribute)15
b(v)n(alue)75 548 y Fm(MPI)p 160 548 V 16 w(A)l(TTR)p
293 548 V 17 w(GET\(handle,)h(k)o(eyval,)f(attribute)p
874 548 V 18 w(val,)f(\015ag\))117 625 y Fh(IN)155 b
Fm(handle)465 b Fh(handle)14 b(to)g(whic)o(h)f(attribute)i(is)f(attac)o
(hed)g(\(handle\))117 700 y(IN)155 b Fm(k)o(eyval)471
b Fh(k)o(ey)14 b(v)n(alue)f(\(in)o(teger\))117 775 y(OUT)108
b Fm(attribute)p 484 775 V 18 w(val)352 b Fh(attribute)15
b(v)n(alue,)d(unless)j Fg(\015ag)f Fh(=)g(false)117 851
y(OUT)108 b Fm(\015ag)518 b Fa(true)14 b Fh(if)h(an)f(attribute)i(v)n
(alue)e(w)o(as)h(extracted;)i Fa(false)d Fh(if)g(no)905
907 y(attribute)h(is)e(asso)q(ciated)i(with)f(the)g(k)o(ey)75
1126 y Fm(MPI)p 160 1126 V 16 w(A)l(TTR)p 293 1126 V
17 w(DELETE\(handle,)i(k)o(eyval\))117 1203 y Fh(IN)155
b Fm(handle)465 b Fh(handle)14 b(to)g(whic)o(h)f(attribute)i(is)f
(attac)o(hed)g(\(handle\))117 1278 y(IN)155 b Fm(k)o(eyval)471
b Fh(The)15 b(k)o(ey)e(v)n(alue)h(of)f(the)i(deleted)f(attribute)h
(\(in)o(teger\))75 1468 y Fl(6.6.2)49 b(Example)75 1554
y Fq(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 1610 y(mation)g(ab)q(out)g(the)g(request)h(b)q(eing)g(w)o(aited)f
(on.)75 1717 y Ff(#define)23 b(MPI_SSEND_TYPE)f(0)75
1773 y(#define)h(MPI_RSEND_TYPE)f(1)75 1829 y(#define)h(MPI_SEND_TYPE)
46 b(2)75 1942 y(typedef)23 b(struct)g(_mpi_send_info)f({)170
1999 y(int)48 b(type;)170 2055 y(int)g(dest;)170 2112
y(int)g(tag;)170 2168 y(MPI_datatype_info)22 b(*dtype;)170
2225 y(int)48 b(context;)75 2281 y(})24 b(mpi_send_info;)75
2394 y(int)f(send_keyval,)g(datatype_keyval;)75 2507
y(/*)h(Profiling)e(functions)h(*/)75 2563 y(int)g(MPI_Init\(argc,)f
(argv\))75 2620 y(int)h(*argc;)75 2676 y(char)g(***argv;)-32
46 y Fe(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: 18 18
18 19 bop 75 -100 a Fq(18)876 b Fi(CHAPTER)15 b(6.)30
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 45 y Ff({)147
158 y(MPI_Keyval_create)21 b(\()j(MPI_NULL_COPY_FN,)d(MPI_NULL_DEL_FN,)
624 214 y(&send_keyval,)h(NULL)h(\);)147 271 y(MPI_Keyval_create)e(\()j
(MPI_NULL_COPY_FN,)d(MPI_NULL_DEL_FN,)624 327 y(&datatype_keyval,)g
(NULL)j(\);)147 440 y(PMPI_Init\(argc,argv\);)147 553
y(/*)f(store)g(datatype)g(info)g(for)h(predefined)e(types)i(*/)75
610 y(})75 779 y(int)f(MPI_Isend\(buf,)f(count,)h(type,)h(dest,)f(tag,)
g(comm,)g(req\))75 835 y(void)g(*buf;)75 892 y(int)g(count,)g(dest,)h
(tag;)75 948 y(MPI_Datatype)e(type;)75 1005 y(MPI_Comm)h(comm;)75
1061 y(MPI_Request)f(*req;)75 1118 y({)170 1174 y(mpi_datatype_info)g
(*dtype;)170 1231 y(int)i(id,)f(err;)170 1287 y(mpi_send_info)g(*sinfo)
g(=)g(\(mpi_send_info)f(*\)malloc\(sizeof\(mpi_send_inf)o(o\)\);)170
1400 y(MPI_Attr_get)h(\()g(type,)h(datatype_keyval,)d(\(void)i
(**\)&dtype,)g(&flag)g(\);)170 1513 y(mpi_send_info->type)f(=)h
(MPI_SEND_TYPE;)170 1569 y(mpi_send_info->dtype)f(=)h(dtype;)170
1626 y(mpi_send_info->dest)f(=)h(dest;)170 1682 y(mpi_send_info->tag)f
(=)i(tag;)170 1739 y(MPI_Comm_id)f(\()h(comm,)f(&id)g(\);)170
1795 y(mpi_send_info->context)e(=)j(id;)170 1908 y(err)g(=)g
(PMPI_Isend\(buf,count,)d(type,)i(dest,)g(tag,)g(comm,)g(req\);)170
2021 y(MPI_Attr_put)g(\()g(req,)h(send_keyval,)e(\(void)h(*\)sinfo\);)
170 2134 y(return)g(err;)75 2190 y(})75 2360 y(int)g(MPI_Wait)g(\()h
(req)f(\))75 2416 y(MPI_Request)f(*req;)75 2473 y({)170
2529 y(mpi_send_info)h(*sinfo;)170 2642 y(MPI_Attr_get)g(\()g(req,)h
(send_keyval,)e(\(void)h(**\)&sinfo,)g(&flag)g(\);)170
2698 y(if)h(\(flag\))1967 46 y Fe(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: 19 19
19 20 bop 75 -100 a Fi(6.7.)29 b(D)o(A)l(T)l(A)l(TYPE)15
b(A)o(CCESSOR)h(FUNCTIONS)849 b Fq(19)242 45 y Ff(printf\("Completing)
21 b(send:)47 b(tag=\045d,)23 b(dest=\045d\\n",sinfo->tag,sinfo->)o
(dest\);)170 102 y(return)g(PMPI_Wait\(req\);)75 158
y(})75 301 y Fn(6.7)59 b(Datat)n(yp)r(e)18 b(Accesso)n(r)h(F)n
(unctions)75 479 y Fd(Missing:)166 529 y Fh(The)14 b(next)h(t)o(w)o(o)e
(subsections)j(are)e(slated)g(to)g(b)q(e)g(merged)g(in)o(to)f(a)g
(single)h(prop)q(osal.)75 733 y Fl(6.7.1)49 b(Prop)q(osal)18
b(#1)75 819 y Ff([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 875 y(are:)266
932 y(.)i(that)f(it)h(includes)e(both)i(the)f(language)g(independent)f
(notation)h(and)266 988 y(the)g(FORTRAN)g(notation)g(in)h(addition)e
(to)i(the)f(C)h(notation.)266 1101 y(.)g(that)f(MPI_Type_elements)e
(now)j(contains)f(one)g(additional)g(argument)f(--)266
1157 y('combiner'.)266 1270 y(.)i(that)f(some)g(predefined)g(constants)
f(are)i(specified)e(\(possible)h(values)266 1327 y(for)g('combiner'\).)
75 1440 y(The)g(first)h(two)f(functions)g(mentioned)f(below)i
(\(MPI_Type_count)d(and)75 1496 y(MPI_Type_elements\))g(have)j(now)f
(been)g(implemented.)75 1609 y(Additionally,)f(for)i(testing)e
(purposes)h(I)h(have)f(implemented)g(a)g(function)75
1666 y('print_mpi_datatype')e(which)i(prints)g(MPI)h(datatypes)e(using)
i(a)f(slight)g(variation)75 1722 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
1778 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 1835 y(Message-Passing)f
(Interface".)46 b(This)23 b(function)g(will)g(be)h(described)f(in)g(a)
75 1891 y(separate)g(e-mail)g(message.])75 2004 y(There)g(are)h(useful)
f(packages)f(that)i(could)f(be)h(implemented)e(to)h("supplement")g(or)
75 2061 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 2117 y(implementation.)75
2230 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 2287 y(implement)g(a)g(portable)g
(version)g(of)h(the)f(MPI-IO)g(draft)g(0.3)h(specification.)75
2343 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 2399 y(which)f(is)h(independent)e(of)i
(any)f(specific)g(implementation)f(of)h(MPI:)266 2512
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 2569 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 2625
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 Fe(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: 20 20
20 21 bop 75 -100 a Fq(20)876 b Fi(CHAPTER)15 b(6.)30
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 45 y Ff(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 102 y(of)g(the)f(three)g(categories)g(above.)75
214 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 271 y(draft)f(of)h("MPI-2:)f
(Extensions)f(to)i(the)f(Message-Passing)f(Interface")h(provides)75
327 y(the)g(functionality)g(needed)g(for)g(the)g(third)h(category)e
(above.])75 440 y(MPI)h(Data)h(type)f(accessors:)75 497
y(========================)75 553 y(MPI_TYPE_COUNT\(datatype,)e
(count\))75 610 y(IN)167 b(datatype)23 b(datatype)f(\(handle\))75
666 y(OUT)143 b(count)23 b(number)g(of)h(entries)e(in)i(the)g(datatype)
75 779 y(int)75 835 y(MPI_Type_count\(MPI_Datatyp)o(e)d(datatype,)433
892 y(int)i(*count\))75 1005 y(MPI_TYPE_COUNT\(DATATYPE,)e(COUNT,)i
(IERROR\))170 1061 y(INTEGER)g(DATATYPE,)g(COUNT,)g(IERROR)75
1174 y(Returns)g(in)g('count')g(the)h(number)f(of)g(entries)g(in)h(the)
f(datatype.)75 1231 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 1287 y("top-level".])75
1400 y(Whether)g(this)g(function)g(returns)g(the)g(number)g(of)h
("top-level")e(entries)h(or)75 1456 y("bottom-level")f(entries)h(is)g
(implementation)f(dependent.)47 b(However,)23 b(it)75
1513 y(must)g(be)h(the)f(same)h(as)f(for)h(MPI_Type_elements)d
(\(below\).)75 1626 y([NOTE:)i(It)h(is)f(preferred)g(that)g
("top-level")g(entries)f(be)i(returned)f(rather)g(than)75
1682 y("bottom-level")f(entries;)h(does)g(anyone)g(know)g(of)h(an)g
(implementation)e(where)h(this)75 1739 y(would)g(be)h(difficult)e(to)i
(do?])75 1852 y(MPI_TYPE_ELEMENTS\(datatype)o(,)d(count,)i(combiner,)g
(array_of_blocklengths,)505 1908 y(array_of_displacements,)d
(array_of_types\))75 1965 y(IN)167 b(datatype)23 b(datatype)f
(\(handle\))75 2021 y(INOUT)95 b(count)23 b(input:)g(how)g(big)h(the)f
(arrays)g(are;)h(output:)75 2077 y(how)f(many)h(elements)f(were)g
(actually)g(filled)g(in)75 2134 y(OUT)143 b(combiner)23
b(top)g(level)g(type)g(combiner)g(\(MPI_BASIC)g(if)75
2190 y(datatype)g(is)g(a)h(basic)f(type;)g(else)h(one)f(of)75
2247 y(MPI_CONTIG,)f(MPI_VECTOR,)h(MPI_HVECTOR,)75 2303
y(MPI_INDEXED,)f(MPI_HINDEXED,)g(MPI_STRUCT)75 2360 y(OUT)143
b(array_of_blocklengths)75 2416 y(OUT)g(array_of_displacements)75
2473 y(OUT)g(array_of_types)75 2586 y(int)75 2642 y
(MPI_Type_elements\(MPI_Data)o(type)21 b(datatype,)505
2698 y(int)i(*count,)1967 46 y Fe(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: 21 21
21 22 bop 75 -100 a Fi(6.7.)29 b(D)o(A)l(T)l(A)l(TYPE)15
b(A)o(CCESSOR)h(FUNCTIONS)849 b Fq(21)505 45 y Ff(int)23
b(*combiner,)505 102 y(int)g(*array_of_blocklengths,)505
158 y(MPI_Aint)f(*array_of_displacements,)505 214 y(MPI_Datatype)g
(*array_of_types\))75 327 y(MPI_TYPE_ELEMENTS\(DATATYPE)o(,)f(COUNT,)i
(COMBINER,)g(ARRAY_OF_BLOCKLENGTHS,)505 384 y(ARRAY_OF_DISPLACEMENTS,)d
(ARRAY_OF_TYPES,)i(IERROR\))170 440 y(INTEGER)h(DATATYPE,)g(COUNT,)g
(COMBINER,)g(ARRAY_OF_BLOCKLENGHTS\(*\))o(,)170 497 y
(ARRAY_OF_DISPLACEMENTS\(*\),)e(ARRAY_OF_TYPES\(*\),)g(IERROR)75
610 y(Given)i(an)h(MPI_Datatype)e('datatype',)g(returns)h(at)h(most)f
(the)h(first)f('count')75 666 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
723 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 835 y(Whether)g(this)g(function)g
(returns)g(information)f(about)h(the)h("top-level")75
892 y(entries)f(or)g("bottom-level")f(entries)h(is)h(implementation)e
(dependent.)75 948 y(However,)h(it)g(must)h(be)f(same)h(as)f(for)h
(MPI_Type_count)e(\(above\).)75 1061 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
1118 y(MPI_Type_count)f(when)h(malloc'ing)g(the)g(array)g(to)h(pass)f
(to)h(MPI_Type_elements.)75 1231 y(Whether)f(you)g(are)h(done)f
(decomposing)f('datatype')h(after)g(one)h(call)f(to)75
1287 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 1344 y(is)h(implementation)e
(dependent)g(--)i(thus)f(a)h(correct)f(program)g(must)g(iterate)g
(until)75 1400 y(nothing)g(is)g(left)h(except)f(fundamental)f(types.)75
1513 y(If)i('count')e(is)i(less)f(than)h(zero,)f(then)g(an)h(error)f
(is)h(returned.)75 1626 y(If)g('count')e(is)i(zero,)f(then)h
('array_of_blocklengths')o(,)d('array_of_displacements',)75
1682 y(and)i('array_of_types')f(are)i(not)f(touched)g(\(and)g(can)h(be)
f(NULL\).)75 1795 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 1852 y(1.1)f(for)h(a)g
(list\),)f(the)g(type)g(itself)g(is)h(returned.)75 1965
y(The)f(value)h(of)f('combiner')g(is)g(one)h(of)f(the)h(constants:)266
2077 y(MPI_BASIC)266 2134 y(MPI_CONTIG)266 2190 y(MPI_VECTOR)266
2247 y(MPI_HVECTOR)266 2303 y(MPI_INDEXED)266 2360 y(MPI_HINDEXED)266
2416 y(MPI_STRUCT)75 2529 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 2586
y(parameter)f(\(FORTRAN\).)46 b(In)24 b(C,)f(they)g(are)h(usable)f(in)h
(a)f(switch)g(statement.)75 2698 y(If)h('combiner')e(is)i(MPI_BASIC,)e
(then)h(the)h(type)f(is)h(returned)f(\(again\))g(in)g(the)-32
46 y Fe(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: 22 22
22 23 bop 75 -100 a Fq(22)876 b Fi(CHAPTER)15 b(6.)30
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 45 y Ff(first)23
b(element)g(of)h('array_of_types'.)75 158 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 214 y(the)g(first)h(elements)e(of)i('array_of_blocklengths')d
(and)i('array_of_types')75 271 y(respectively.)75 384
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 440 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
497 y(first)f(elements)g(of)h('array_of_blocklengths')o(,)d
('array_of_displacements',)g(and)75 553 y('array_of_types',)h
(respectively.)75 666 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
723 y(in)h('count',)e(the)i(array_of_blocklengths)d(and)i
(array_of_displacements)e(are)75 779 y(returned)i(in)g(the)h(first)f
('count')g(elements)g(of)g('array_of_blocklengths')e(and)75
835 y('array_of_displacements')g(respectively,)h(and)h(oldtype)g(is)h
(returned)e(in)i(the)75 892 y(first)f(element)g(of)h('array_of_types'.)
75 1005 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 1061 y(the)g(array_of_blocklengths,)
e(array_of_displacements,)g(and)i(array_of_types)75 1118
y(are)g(returned)g(in)h(the)f(first)g('count')g(elements)g(of)h
('array_of_blocklengths',)75 1174 y('array_of_displacements',)c(and)k
('array_of_types',)d(respectively.)75 1352 y Fl(6.7.2)49
b(Prop)q(osal)18 b(#2)75 1495 y Ff(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
1551 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 1608 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
1664 y(process)f(of)g(implementing)g(MPI-IO.)g(Out)g(of)h(this)f(work)g
(they)h(have)f(defined)75 1720 y(four)g(MPI)h(calls)f(that)g(were)h
(needed)f(to)g(handle)g(derived)g(datatypes.)75 1777
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 1833 y(MPI-2)f(specification.)75
1946 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 2003 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
2172 y(int)g(MPIDE_Type_first)f(\(MPI_Datatype)g(datatype,)h(int)g
(search_mode,)600 2229 y(MPIDE_Type_itor)f(*handle,)h(MPI_Datatype)f
(*firsttype,)600 2285 y(int)h(*disp\))147 2454 y(Description)f(-)i(the)
f(MPIDE_Type_{first,next})e(functions)h(can)i(be)g(used)f(for)147
2511 y(^^^^^^^^^^^)70 b(traversing)22 b(a)i(derived)f(datatype)g
("tree".)46 b(The)24 b(first)f(function)481 2567 y(basically)f
(initializes)h(the)g(traversal)g(and)g(returns)g(the)h(first)481
2624 y(datatype)e(and)i(the)f(displacement)g(for)g(the)g(first)h
(datatype)e(which)481 2680 y(it)h(finds)g(in)h(the)f(derived)g
(datatype.)1967 46 y Fe(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: 23 23
23 24 bop 75 -100 a Fi(6.7.)29 b(D)o(A)l(T)l(A)l(TYPE)15
b(A)o(CCESSOR)h(FUNCTIONS)849 b Fq(23)147 102 y Ff(Parameters)147
158 y(^^^^^^^^^^)218 214 y(datatype[IN])22 b(-)i(datatype)f(to)g
(traverse)218 327 y(search_mode[IN])f(-)i(specifies)e(the)i(mode)f
(used)g(for)h(traversing)e(the)i(data-)648 384 y(type)f(tree.)47
b(Possible)23 b(values)g(are)g(MPIDE_DEPTH_FIRST)648
440 y(and)g(MPIDE_TOPLEVEL_ONLY.)505 497 y(MPIDE_DEPTH_FIRST)e(causes)i
(the)h(traversal)e(to)i(go)f(to)h(the)934 553 y(tree)f(bottom,)g(thus)h
(returning)e(only)934 610 y(basic)h(datatypes)g(and)g(their)934
666 y(corresponding)f(displacements.)505 723 y(MPIDE_TOPLEVEL_ONLY)f
(causes)i(a)h(breadth)e(traversal)h(of)h(the)934 779
y(level)f(directly)g(below)g(the)h(top)f(node.)218 892
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 948 y(be)g(used)f(in)h(subsequent)e(calls)h
(to)h(the)f(next)h(function.)218 1061 y(firsttype[OUT])e(-)i(pointer)f
(to)g(datatype)g(found)g(in)h(the)f(derived)g(datatype.)624
1118 y(contains)g(0)g(if)h(there)f(is)h(no)f(tree)h(to)f(traverse.)47
b(For)624 1174 y(example)23 b(if)g('datatype')g(is)g(a)h(basic)f
(datatype)g(then)624 1231 y(there)g(is)h(no)f(tree)h(to)f(traverse.)218
1344 y(disp[OUT])g(-)h(displacement)e(of)h(the)h(datatype)f(returned)f
(in)i('firsttype')75 1456 y(--------------------------)o(-------)o
(--------)o(-------)o(-------)o(--------)o(-------)o(-)75
1569 y(int)f(MPIDE_Type_next)f(\(MPIDE_Type_itor)g(*handle,)h
(MPI_Datatype)f(*nexttype,)576 1626 y(int)i(*disp\))147
1795 y(Description)e(-)i(this)f(function)g(is)g(a)h(continuation)e(of)i
(the)f(MPIDE_Type_first)147 1852 y(^^^^^^^^^^^)70 b(function.)46
b(Each)23 b(time)h(this)f(function)g(is)g(called)h(it)f(will)481
1908 y(return)g(the)g(next)g(datatype)g(in)h(the)f(tree.)47
b(The)24 b(function)481 1965 y(returns)f(a)g(0)h(for)f(nexttype)g(when)
h(the)f(traversal)g(is)g(finished.)147 2077 y(Parameters)147
2134 y(^^^^^^^^^^)266 2190 y(handle[IN])f(-)i("traversal")e(handle)i
(which)f(was)g(returned)g(by)h(a)f(call)h(to)576 2247
y(MPIDE_Type_first.)266 2360 y(nexttype[OUT])e(-)i(pointer)f(to)g(next)
h(datatype)e(found)h(in)h(the)g(datatype)e(tree.)648
2416 y(contains)g(0)i(when)g(tree)f(traversal)f(is)i(complete.)266
2529 y(disp[OUT])f(-)g(displacement)f(of)i(found)f(datatype.)75
2642 y(--------------------------)o(-------)o(--------)o(-------)o
(-------)o(--------)o(-------)o(-)-32 46 y Fe(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: 24 24
24 25 bop 75 -100 a Fq(24)871 b Fi(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 45 y Ff(int)23
b(MPIDE_Type_equal)f(\(MPI_Datatype)g(datatype1,)h(MPI_Datatype)f
(datatype2\))147 214 y(Description)g(-)i(compares)e(the)i(the)f(two)h
(datatypes)e(for)i(equality.)46 b(Equality)147 271 y(^^^^^^^^^^^)70
b(is)23 b(defined)g(here)g(as)h(two)g(datatype)e(which)h(have)h
(identical)481 327 y(typemaps.)147 440 y(Parameters)147
497 y(^^^^^^^^^^)266 553 y(datatype{1,2}[IN])d(-)j(two)g(datatypes)e
(to)i(compare.)147 723 y(Return)f(Value)g(-)h(Returns)e(TRUE)i(if)f
(the)h(datatypes)e(are)i(equal,)f(otherwise)g(FALSE.)147
779 y(^^^^^^^^^^^^)75 892 y(--------------------------)o(-------)o
(--------)o(-------)o(-------)o(--------)o(-------)o(--)75
1005 y(int)g(MPIDE_Type_basic)f(\(MPI_Datatype)g(datatype\))147
1174 y(Description)g(-)i(Function)e(determines)h(if)h(datatype)e(is)i
(a)g(basic)f(datatype.)147 1231 y(^^^^^^^^^^^)70 b(Basic)23
b(datatypes)f(are)i(those)f(that)g(are)h(predefined)e(within)481
1287 y(the)h(MPI)h(document,)e(e.g.)i(MPI_DOUBLE)147
1456 y(Parameter)147 1513 y(^^^^^^^^^)242 1569 y(datatype[IN])e(-)i
(datatype)f(to)g(identify)147 1739 y(Return)g(Value)g(-)h(Returns)e
(TRUE)i(if)f(datatype)g(is)h(basic,)f(otherwise)f(FALSE.)147
1795 y(^^^^^^^^^^^^)75 1908 y(--------------------------)o(-------)o
(--------)o(-------)o(-------)o(--------)o(-------)o(--)75
2221 y Fn(6.8)59 b(P)n(o)n(rtable)20 b(MPI)g(Debuggers)f(and)h
(Pro\014lers)75 2398 y Fd(Discussion:)166 2448 y Fh(This)15
b(section)i(needs)f(a)g(c)o(hampion)d(to)j(write)f(it)h(up.)23
b(More)16 b(input)f(is)g(w)o(elcome)g(from)f(p)q(oten)o(tial)h(users)i
(of)75 2498 y(these)e(functions.)166 2637 y Fq(Ev)o(ey)o(one)c(agrees)g
(that)f(making)i(it)f(p)q(ossible)i(for)e(debuggers)h(to)e(b)q(e)i
(able)h(to)d(w)o(ork)h(p)q(ortably)g(on)g(top)75 2693
y(of)17 b Fm(MPI)f Fq(is)h(a)g(go)q(o)q(d)g(thing.)26
b(Debuggers)16 b(t)o(ypically)j(w)o(an)o(t)d(access)h(to)f(the)h
(message)g(state,)f(datat)o(yp)q(es,)1967 46 y Fe(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: 25 25
25 26 bop 75 -100 a Fi(6.8.)34 b(POR)l(T)l(ABLE)17 b(MPI)e(DEBUGGERS)g
(AND)g(PR)o(OFILERS)592 b Fq(25)75 45 y(comm)o(unicators,)20
b(etc.)34 b(The)20 b(problem)h(is)f(that)f Fm(MPI)h Fq(delib)q(erately)
i(left)e(these)g(as)g(implemen)o(tation)75 102 y(issues)k(so)e(it)h(is)
g(hard)g(to)f(sa)o(y)g(what)h(it)g(means)f(to)g(access)h(some)g(of)f
(these.)43 b(The)23 b(three)g(options)75 158 y(suggested)15
b(w)o(ere:)131 264 y(1.)22 b(Mak)o(e)16 b(no)h(additions)h(to)e(the)h
(curren)o(t)g Fm(MPI)g Fq(standard)f(in)i Fm(MPI-2)p
Fq(.)25 b(This)17 b(is)h(ob)o(viously)g(easy)f(to)189
321 y(implemen)o(t)f(but)f(mak)o(es)g(it)h(hard)f(or)f(imp)q(ossible)k
(to)c(get)h(p)q(ortable)h(debuggers.)131 415 y(2.)22
b(F)l(or)12 b(all)j(the)e(opaque)h(information)g(w)o(an)o(ted,)e
(require)j(that)d Fm(MPI)h Fq(k)o(eep)h(shado)o(w)f(information)h(for)
189 471 y(the)g(debugger)h(if)g(one)f(links)i(with)f(a)f(sp)q(ecial)i
(library)l(.)21 b(The)14 b(negativ)o(es)h(is)g(that)f(it)g(adds)h(exp)q
(ense)189 527 y(and)f(one)h(cannot)f(call)h(a)f(debugger)h(with)g(a)f
(regular)g(program)g(\(not)f(sp)q(ecially)k(link)o(ed\))f(and)e(get)189
584 y(this)h(info.)131 678 y(3.)22 b(Add)17 b(functions)h(that)e(can)h
(deco)q(de)h(the)f(opaque)g(ob)s(jects)f(and)i(info.)25
b(The)17 b(p)q(oten)o(tial)h(negativ)o(e)189 734 y(here)h(is)h(that)f
(if)h(a)f(break)g(o)q(ccurs)h(at)f(a)g(bad)g(place)i(then)e(it)h(ma)o
(y)f(b)q(e)h(imp)q(ossible)h(to)e(get)g(the)189 791 y(desired)d(info.)
166 897 y(A)o(t)f(the)g(August)g(meeting)h(w)o(e)f(decided)i(to)d
(pursue)i(the)f(last)h(t)o(w)o(o)d(options.)-32 46 y
Fe(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
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF