ࡱ> ` 0)bjbj .!    4j????lT@UAAAAABBBTTTTTTT$Vh YxU (B*BBBCU  AAUVNNNC A ATNBTNN  NAA 0=߈?JNPTnUHUNYqLYNNJY6NBBNBBBBBUUNBBBUBBBBD&D&        2007-08-10 DFDL Proposal to simplify length and occurs specification properties. Version 0043 This proposal expands on a theme suggested early on by Kris Rose, and subsequently by Simon Parker. The goal is to decouple the multiple properties from eachother as much as possible and remove meaningless combinations. This first table for scalar lengths. Note that in draft v1 I forgot nullTerminated and endOfData in the Original lengthKind description, so Ive added those here so that original is more correct. All proposals below continue to use prefixLength and prefixLengthIncludesPrefix properties for the prefix style of length. PropertyValues/Description OriginallengthKindfixed, schemaFacet, xpath, prefixed, delimited, nullTerminated, endOfData, regularExpressionlengthliteral or xpath or regular expression based on lengthKindlengthUnitsbits, bytes, characters, fullUnicodeCharacters, digits We agreed to drop digits and fullUnicodeCharacters from lengthUnits. Agreed Simplification To lengthUnitslengthKindfixed, schemaFacet, xpath, prefixed, delimited, nullTerminated, endOfData, regularExpressionlengthliteral or xpath or regular expression based on lengthKindlengthUnitsbits, bytes, characters Two ideas were discussed for even further simplification: Plan A Further SimplificationlengthKindexplicit, schemaFacet, prefixed, delimited, nullTerminated, endOfData nullTerminated implies length and lengthUnits are ignored delimited implies length and lengthUnits are ignored schemaFacet means that the length or maxLength schema facet value is used. (if both facets are present schemaDefinitionError) Requires type=string. prefixed means a value is stored immediately before the string content. Requires representation=text or type=string. Other properties define the nature of the stored prefix. endOfData (TBD: rename to fill for consistency ??) means that the content fills the available space. The available space is constrained by the enclosing construct. lengthliteral or xpath or regexp by special syntaxlengthUnitsbits, bytes, characters Plan B Further SimplificationlengthInBitsliteral value or xpath expression (recognized by special syntax - braces), or special token prefixedlengthInBytesliteral value or xpath expression (recognized by special syntax - braces) or special token prefixedlengthInCharactersliteral number, xpath expression , or regexp (recognized by special syntax - tbd) or special token prefixedlengthKinddelimited, endOfData, nullTerminated, schemaFacet This second table is for vector (occurs) lengths: In draft v1, I had valueDelimited, which is not consistent with the spec. The spec has stopValue=. Where you specify the value to be used as the value delimiter or stop value. I do not mention the occursSeparator property here, but it is used orthogonally to the use of occursKind. That is, occursKind can be explicit with occurs=10, but if occursSeparator is specified, then 9 of them must be found between the elements. OriginaloccursKindfixed, xpath, delimited, stopValue, regularExpressionoccursPathliteral or xpathoccursUnitsbytes, bits, items (I think characters and fullUnicodeCharacters are also needed here but are not in doc draft 019.)stopValueLiteral or expression that gives value used to determine end.  Plan AoccursPathliteral or xpath or regularExpression by special syntax or token delimited or token stopValueoccursUnitsBits, bytes, characters, itemsstopValueLiteral or expression that gives value used to determine end.  Plan BoccursInBitsliteral value or xpath expression (recognized by special syntax - braces)occursInBytesliteral value or xpath expression (recognized by special syntax - braces)occursInCharactersliteral number, xpath expression , or regexp (recognized by special syntax)occursInItemsliteral number, xpath expression (recognized by special syntax - braces)occursKinddelimited, endOfData, stopValuestopValueLiteral or expression that gives value used to determine end when occursKind=stopValue Note: perhaps occursInBits is meaningless? I have never seen this for arrays, though lengthInBits is clearly used for bit fields. Plan C was suggested by Simon Parker. The occurs units are always items in this case. You achieve the equivalent of lengthInBytes in bytes by enclosing the array in a sequence where the sequence has lengthInBytes=. and lengthUnits=bytes which constraints the length the array must live within. This eliminates the need for occursUnits property entirely at the expense of making people introduce this sequence. Note that if their array already has a initiator/terminator then they already need to wrap in a sequence since specifying initiator/terminator on an array element is specifying each element inside the arrays initiator and terminator. Plan Ccccursliteral or xpath occursKindDelimited or stopValue or explicit or or useMaxOccurs or fill (fill is a keyword to replace both delimited and endOfData. Suggestions for a better name are welcome ideas max maxFit maxFill fillAvailableSpace fillAvailable all fit parent enclosed containerCapacity asManyAsFitInEnclosingConstruct) explicit means use the value of the occurs property. useMaxOccurs means use the value of the maxOccurs on the declaration. fill means the occurrences fill the available space which is limited by a containing construct. stopValue means look for a literal or logical stop value which signifies the end of the occurrences. (tbd: or schemaFacet?)occursSstopValueLiteral or expression that gives value used to determine end when the occursKind=stopValue.occursStopValueKindliteral or logical. Literal requires representation=text and indicates that the stopValue is a string marker but need not be a valid string for conversion into the type of the element. E.g., repeating numbers terminated by the word done. E.g., 1|2|3|done would use occursStopValueKind=literal occursStopValue=done type=int Note: I considered further collapsing occursKinds enums as special tokens on the occurs property; however, this makes it impossible to express the combinations of fixed length with delimiters. E.,g., 1,2,3,4 as occurs=4, occursKind=delimited, occursSeparator=, Clarifications: occursKind=delimited fill means the occurs count is determined by finding a terminator of an enclosing sequence or element or the endOfData for that enclosing construct.. Therefore occursSeparator and occursSstopValue can be used together to describe 1,2,3,,-. Also occursKind=explicit and occurs=10 and occursSeparator can be used together.  Length by filling the container capacity Allow length, lengthUnits, and lengthKind to be specified on sequences. Only lengthKind of explicit, endOfData, are allowed. Examples: String maximum length 256 bytes, allocated always 256, stored actual length. String maximum length 256 bytes. However many characters fit in that (some characters could be multi-byte): (issue: what if sequence length was 255 and character encoding utf-16. There is a byte left over. Its worse with variable-length encodings. Same issue arises for arrays. What if not the entire container is used up by the contents. What happens to the left-over space, or should the existence of left-over space be a processing error? Note: this is only left-over space when the dfdl:lengthKind=fill. If there is left-over space for other lengthKinds its no problem.) Array of records fitting into 64KByte buffer.  New, New. New. U_`aA g   0 Z [ \   " # : uqm_[m[__hhCJOJQJ^JaJhYh}ThfCJOJQJ^JaJh}TCJaJh}TCJOJQJ^JaJh;Eh\^CJaJ&h\^56CJOJQJ\]^JaJh\^CJOJQJ^JaJh)*h;Uh.fhiM%hhV;cHdhdhdh&fHh&fhV;hoVh\^h N# TUbcA B g h $$Ifa$gd; $Ifgd;gdiM))  {rr $Ifgd(y $$Ifa$gd(yvkd$$IflFcN %, E0*6    44 lap   [ ~~~ $Ifgd;wkd$$Ifl4FcN %, E0*6    44 lap[ \ ] i ~~~ $Ifgd;wkd$$Ifl4FcN %, E0*6    44 lap  u yyypp $Ifgd(y $$Ifa$gd(ywkd$$Ifl4FcN %, E0*6    44 lap u v w ~ ~~~ $Ifgd(ywkdx$$Ifl4FcN %, E0*6    44 lap ~~~ $Ifgd(ywkd]$$Ifl4FcN %, E0*6    44 lap   # : E yypp $Ifgd(y $$Ifa$gd(ywkdB$$Ifl4FcN %, E0*6    44 lap I}ïïs_K7'HhqfhECJOJQJ^JaJ'HhofhECJOJQJ^JaJ'Hhqfh8\CJOJQJ^JaJ'Hhpfh:,CJOJQJ^JaJ'Hhofh8\CJOJQJ^JaJ'Hhofh]CJOJQJ^JaJ'Hhpfh8\CJOJQJ^JaJ'Hhnfh]CJOJQJ^JaJ'Hhkfh OCJOJQJ^JaJ'Hhkfh}TCJOJQJ^JaJ gL$C$EƀlfIfgd OL$C$EƀkfIfgd(y gL$C$EƀnfIfgd OL$C$EƀpfIfgd O gL$C$EƀqfIfgd OL$C$EƀofIfgd OIJKek{ׯs_sK7'Hhkfh OCJOJQJ^JaJ'HhpfhECJOJQJ^JaJ'Hhtfh1RCJOJQJ^JaJ'Hhufh1RCJOJQJ^JaJ'HhsfhICJOJQJ^JaJ'HhtfhICJOJQJ^JaJ'Hhsfh'kCJOJQJ^JaJ'Hhrfh8\CJOJQJ^JaJ'Hhrfh'kCJOJQJ^JaJ'HhrfhECJOJQJ^JaJJKgL$C$EƀrfIfgd OL$C$EƀpfIfgd'kKgL$C$EƀofIfgd OL$C$EƀrfIfgd1R")*OPQVWXo<XYZNOP(ʼ~zvlz~jh*0JUhV rhChCh\^h.fh\^CJaJhu^|CJOJQJ^JaJh\^CJOJQJ^JaJhCJOJQJ^JaJhpCJOJQJ^JaJh}ThfCJOJQJ^JaJh}TCJOJQJ^JaJh}TCJaJh OCJOJQJ^JaJ$){rr $Ifgd(y $$Ifa$gd}Twkd'$$Ifl4FcN %, E0*6    44 lap)*+7O{rr $Ifgd(y $$Ifa$gd}Twkd$$Ifl4FcN %, E0*6    44 lapOPQXo|yypp $Ifgd; $$Ifa$gd;wkd$$Ifl4FcN %, E0*6    44 lapY~~~ $Ifgd;wkd$$Ifl4FcN %, E0*6    44 lapYZ[n~~~ $Ifgd;wkd $$Ifl4FcN %, E0*6    44 lap~~~ $Ifgd;wkd $$Ifl4FcN %, E0*6    44 lapOPIypp $Ifgd; $$Ifa$gd;wkd $$Ifl4FcN %, E0*6    44 lap IJgh567=#$&,=?@o-./0/洦ʂ~zvhqhh\^h'HCJOJQJ^JaJh CJOJQJ^JaJh\^CJaJh\^CJOJQJ^JaJh)TCJOJQJ^JaJh|bCJaJh|bCJOJQJ^JaJhnCJOJQJ^JaJhCh2ACJaJh2ACJOJQJ^JaJ-IJKVg~~~ $Ifgd;wkdj $$Ifl4FcN %, E0*6    44 lapghiu~~~ $Ifgd;wkd] $$Ifl4FcN %, E0*6    44 lap5~~~ $Ifgd;wkdB$$Ifl4FcN %, E0*6    44 lap567>Iypp $Ifgd(y $$Ifa$gdnwkd$$Ifl4FcN %, E0*6    44 lap~~~ $Ifgd(ywkd$$Ifl4FcN %, E0*6    44 lap#~~~ $Ifgd(ywkd$$Ifl4FcN %, E0*6    44 lap#$%&-:ypp $Ifgd; $$Ifa$gd;wkd$$Ifl4FcN %, E0*6    44 lap~~~ $Ifgd;wkd$$Ifl4FcN %, E0*6    44 lap?~~~ $Ifgd;wkdh$$Ifl4FcN %, E0*6    44 lap?@AO~~~ $Ifgd;wkdM$$Ifl4FcN %, E0*6    44 lap~r $$Ifa$gd; $Ifgd;wkd2$$Ifl4FcN %, E0*6    44 lap $Ifgd;_kd$$Ifl40c%,$0*644 lap.~uu $Ifgd(y $Ifgd;wkd$$Ifl4FcN %, E0*6    44 lap./0 @AHOatkk $Ifgd(y $$Ifa$gdcc"gd&Hwkd$$Ifl4FcN %, E0*6    44 lap /6??@Aabno|ȬȬȬȬr^^^'Hh.fhCJOJQJ^JaJ9h$hCJOJQJ^JaJcHdhdhdh.f9h$h$CJOJQJ^JaJcHdhdhdh-f'HhafhANICJOJQJ^JaJh$CJaJh$CJOJQJ^JaJhFh hqHh]fh&H%hqh&HcHdhdhdh]fabcn{ri $IfgdANI $Ifgd(y $$Ifa$gdcc"wkd$$Ifl4FcN %, E0*6    44 lap&',ï׍yyyeQ='Hhfh^CJOJQJ^JaJ'Hh_fh"CJOJQJ^JaJ'Hh_fhfCJOJQJ^JaJ'Hh/fhCJOJQJ^JaJh$CJOJQJ^JaJ'Hh-fh$CJOJQJ^JaJ'HhbfhANICJOJQJ^JaJ'Hh.fhCJOJQJ^JaJ'HhafhANICJOJQJ^JaJ'Hh`fhANICJOJQJ^JaJgL$C$EƀafIfgdANIL$C$Eƀ`fIfgdANI,@k>OïyeQ=)'Hhefh;CJOJQJ^JaJ'Hhdfh;CJOJQJ^JaJ'HhdfhUCJOJQJ^JaJ'HhcfhUCJOJQJ^JaJ'Hhcfh$CJOJQJ^JaJh$CJOJQJ^JaJ'Hh/fhCJOJQJ^JaJ'Hh_fh"CJOJQJ^JaJ'Hh_fhfCJOJQJ^JaJ'HhfhzCJOJQJ^JaJ'Hhfh^CJOJQJ^JaJ =>ggL$C$EƀdfIfgdANIL$C$EƀcfIfgdANI>ggL$C$EƀefIfgd;L$C$EƀdfIfgd; !()ekæ|_K7K7'Hhgfh;CJOJQJ^JaJ'HhgfhiCJOJQJ^JaJ9h$hU4CJOJQJ^JaJcHdhdhdh,f'Hh,fh$CJOJQJ^JaJh$CJaJh$CJOJQJ^JaJ9h$hCJOJQJ^JaJcHdhdhdh.f'Hh.fhiCJOJQJ^JaJ'HhffhiCJOJQJ^JaJ'HhefhiCJOJQJ^JaJ !2;222 $Ifgd(ywkd$$Ifl4FcN %, E0*6    44 lapL$C$Eƀ.fIfgd(y~~3J$EƀgfIfgdi $Ifgd(ywkd~$$Ifl4FcN %, E0*6    44 lap!!;666gdFwkdU$$Ifl4FcN %, E0*6    44 lapL$C$EƀgfIfgdi!!!+!2!!!!!!!!"r"s"t"u"""""""""ǽڽ޳ޖڒޒtgHhfh1h#>Hhfh1hy h1hyHhfhzhyjh"WF0JU%h9&h&YcHdhdhdhifHhifh&YHhhfh&Y%heCh&YcHdhdhdhhfheCh9&hwOhFh$CJaJh;CJOJQJ^JaJ!!!!!s"u""""#GC$Eƀfgdv4gd:~gdgdeCgd&YgdF "######(#)#C#I#w#x########Φ~hd`\`R`NJF<2CJOJQJ^JaJf*CJOJQJ^JaJNHhfh1h#>CJOJQJ^JaJf*CJOJQJ^JaJHhfhv4NHhfh1h:~CJOJQJ^JaJf*CJOJQJ^JaJ###)#*#x#y###=$I$eGC$EƀkfgdygdygdFGC$Eƀfgd:~ #H$I$o$$$i%m%n%%%%%%%8&W&&V''' ((6(7(U(n((((ʶ謢zvlbXbNXHhfhJHh!fh3Hh fh3Hhjfh!hCHhfhbHhfhbHhfh4\Hhfh4\HhfhCHhfhrfHhyfh~ HhfhCHhwfhrfHhwfhS"VHhvfhS"VHhvfhrfHhvfh%Mh%MI$J$$$%4%ooooGC$EƀvfgdrfGC$Eƀvfgdy4%%%%%o'GC$EƀfgdCGC$EƀyfgdrfGC$EƀvfgdC%'''' (D(eGC$Eƀjfgd%Mgd%MgdyGC$EƀfgdbD(p((( ) )R))))))jegd%MGC$Eƀ!fgd!gdGC$Eƀ!fgd%M ((((((((())))))))))))))h^hrfjhrf0JUh^NhuIjh*0JUh%MhHh"fh3Hh!fh3HhfhJHhifh!)))))))))gdFgdy,1h/ =!"#$% $$If!vh5,5 5E#v,#v #vE:V l0*6,5,5 5E/ /  / ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/  / / ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/  / / ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5$#v,#v$:V l40*6+,,5,5$/ / / / / ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / / /  ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/  / / ap$$If!vh5,5 5E#v,#v #vE:V l40*6+,,5,5 5E/ / /  ap@@@ NormalCJ_HaJmH sH tH Z@Z  Heading 1$<@&5CJ KH OJQJ\^JaJ DA@D Default Paragraph FontRi@R  Table Normal4 l4a (k@(No ListB'@B *Comment ReferenceCJaJ<@< * Comment TextCJaJ@j@@ *Comment Subject5\H@"H * Balloon TextCJOJQJ^JaJMichael J. Beckerle s!!MJB MJBN MJB8 fff !!{00AT(0{00AT(0 {00\ TUbcABgh   [\]i uvw~#:EJK)*+7OPQXo|Y Z [ n    O P     I J K V g h i u 5 6 7 > I #$%&-:?@AO./0 @AHOabcn=> !2su)*xy=IJ4 D p ! !R!!!!!!!!!!!!!0000000000000000000 0 0 0 00 0 0 0 `0 0 0 @0 `0 0 0 @0 000000 0 0 0 0 0 0 0 0 0 0 0 00000 0 000000000000 0 0 0 0 0 0 0 0 0 000 0 0 0 `0 @0 0 @0 0 0 0 0 0 0 0 0 00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 000 0 0 0 `0 @0 @0 @0 `0 @0 0 @0 0 0 0 0 `0 @0 @0 `0 @0 0 @0 0 0 0 0 0000000 0 0 0 0 0 000000000000 0 0 0 0 0 0 0 000 0 000000000000000000000000000000000000000000000000@0000@0@0@0 00 TUb [\]i uvw~#:EJK)*+7OPo|Y Z [ n     I J K V g h i u 5 6 > I #$-:?@AO./0 @HOabcn=> !2su)*xy=IJ4 D p !!y00 i)y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00y0!0"y0!0y00y00y0%0y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00y00@00 y0 0y0 0y0 0y00y00y00y00y00y00y00y00y00y00y00y00y00y0(0y0(0y0(0y0*0y0*0y0*0y0*0y0,0y0,0y0,0y0,0y0 0 L y0 0 Lp@007 y0*0y0*0y0*0y0,0y0,0y0,0y0,0y0Q0- y0Q0- y0R0+ y0 0 @00, E y020y020y020y00y040y040y040y00y060y060y060y00y0:0y0:0y0:0y00y0<0y0<0y00y0>0y0>0y0>0y00y0n0 y0R0+ y0 0 y0@0y0r0(s y0r0'y0r0&y0r0$y0*0y0*0y0*0y0*0y0v0 y0v0 y0v0 y0v0y0v0y0v0y00y0v0y0v0y0v0y0v0y00y0v0y0v0y0v0 y0Q0- y0Q0- y0R0+ y0 0 y0~0 y0~0 y0~0 y00y0~0y0~0 @00r y00T$y00y00y0t0y0t0y0t0y0t0y0t0y0t000000y00y00y00 y0|0y0|0y0|0y0|0y0|0y0|0y0|0y0|0y0|0y0|0y0|0y0|0y0|0y0|0y0|0y0|0y0|0y0|0y0|0000000y0  /,"#()#&.=?ADHJLQ  [ u K)OYIg5#?.a>!#I$4%%D()) !"$%'()*+,-/0123456789:;<>@BCEFGIKMNOPR)8@0(  B S  ?  N 8  u! s!!.:?Y+0PZ]h  *,1HVXact:DOZr #,g|KT +6o{ [ m ~   d r  + e o z     , 5 7 H K U a f i t > H T Y ] n -9KPAN_d!#,>JHNZ_cmo.47>ASVc(!1x+,1#-M\)+9')1Xgo|FU  + U c e m !K!N!}!!!!!!Bf KT> D u z yz?CGQag)'\gJU + Y c !!!!!33333333333333333333333333333333333 Uc ]iw~EI+OQWX|[ n   K g i u 7 I &:AOAOcnuw=H U !!!!!$L3fKQ,qfeJ6z}T'k|byFTi q]JiM;U"cc"9&z'V(*)*:,1U4:V;#>2AeC;E"WF&H'HIANI N^N)TS"VoVY8\\^frfFlV r Qsxvt(yu^|`K; v4nb~ 3d& py1RE&Y^;$:~-i$ @o^7fC OwO.f4\CR-!;DCuIVu]$%MU [\]i uvw~:E)*+7OPQo|Y Z [ n     I J K V g h i u 5 6 7 > I #$&-:?@AO./AHOabcn !2!@K N %!@UnknownMichael J. Beckerle David LooseGz Times New Roman5Symbol3& z Arial5& zaTahoma"qhff = =!24!!2QHP)?_ N2 Michael J. BeckerleMichael J. BeckerleOh+'0   @ L Xdlt| Michael J. Beckerle Normal.dotMichael J. Beckerle7Microsoft Office Word@>y@"JT@HȈ ՜.+,0 hp|  IBM=!  Title  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSUVWXYZ[\]^_`abdefghijklmnopqrstuvwxyz{|}~Root Entry FK߈Data T,1TablecYWordDocument.SummaryInformation(DocumentSummaryInformation8CompObjq  FMicrosoft Office Word Document MSWordDocWord.Document.89q