Warning, /libraries/binschema/src/mso.xml is written in an unsupported language. File is not indexed.

0001 <?xml version="1.0" encoding="UTF-8"?>
0002 <mso xmlns="http://www.example.org/mso" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
0003         xsi:schemaLocation="http://www.example.org/mso mso.xsd">
0004         <struct name="RecordHeader">
0005                 <uint4 name="recVer" />
0006                 <uint12 name="recInstance" />
0007                 <uint16 name="recType" />
0008                 <uint32 name="recLen" />
0009         </struct>
0010         <struct name="CurrentUserAtom">
0011                 <type name="rh" type="RecordHeader">
0012                         <limitation name="recVer" value="0" />
0013                         <limitation name="recInstance" value="0" />
0014                         <limitation name="recType" value="0x0FF6" />
0015                 </type>
0016                 <uint32 name="size">
0017                         <limitation value="0x14" />
0018                 </uint32>
0019                 <uint32 name="headerToken">
0020                         <limitation value="0xE391C05F|0xF3D1C4DF" />
0021                 </uint32>
0022                 <uint32 name="offsetToCurrentEdit" />
0023                 <uint16 name="lenUserName">
0024                         <limitation expression="&lt;=255" />
0025                 </uint16>
0026                 <uint16 name="docFileVersion">
0027                         <limitation value="0x03F4" />
0028                 </uint16>
0029                 <uint8 name="majorVersion">
0030                         <limitation value="0x03" />
0031                 </uint8>
0032                 <uint8 name="minorVersion">
0033                         <limitation value="0x00" />
0034                 </uint8>
0035                 <uint16 name="unused" />
0036                 <uint8 name="ansiUserName" count="lenUserName" />
0037                 <uint32 name="relVersion">
0038                         <limitation value="0x8|0x9" />
0039                 </uint32>
0040                 <uint16 name="unicodeUserName" count="lenUserName"
0041                         condition="rh.recLen&gt;3*lenUserName+0x18" />
0042                 <uint8 name="unknown" count="rh.recLen-0x18-3*lenUserName"
0043                         condition="rh.recLen-0x18-3*lenUserName&gt;0" />
0044         </struct>
0045         <struct name="TODOS">
0046                 <type name="anon" type="Byte" array="true" />
0047         </struct>
0048         <struct name="Byte">
0049                 <uint8 name="b" />
0050         </struct>
0051         <struct name="ZeroByte">
0052                 <uint8 name="b">
0053                         <limitation value="0" />
0054                 </uint8>
0055         </struct>
0056         <struct name="CurrentUserStream">
0057                 <type name="anon1" type="CurrentUserAtom" />
0058                 <type name="trailing" type="Byte" array="true" />
0059         </struct>
0060         <struct name="PicturesStream">
0061                 <type name="anon1" type="OfficeArtBStoreDelay" />
0062                 <type name="trailing" type="Byte" array="true" />
0063         </struct>
0064         <struct name="OfficeArtBStoreDelay">
0065                 <type name="rgfb" array="true" type="OfficeArtBStoreContainerFileBlock" />
0066         </struct>
0067         <struct name="OfficeArtRecordHeader">
0068                 <uint4 name="recVer" />
0069                 <uint12 name="recInstance" />
0070                 <uint16 name="recType" />
0071                 <uint32 name="recLen" />
0072         </struct>
0073         <struct name="OfficeArtFBSE">
0074                 <type name="rh" type="OfficeArtRecordHeader">
0075                         <limitation name="recVer" value="0x2" />
0076                         <limitation name="recInstance" value="0|1|2|3|4|5|6|7|0x11|0x12" />
0077                         <!--
0078                                 <limitation name="recInstance"
0079                                 value="0xF01A|0xF01B|0xF01C|0xF01D|0xF01E|0xF01F|0xF029" />
0080                         -->
0081                         <limitation name="recType" value="0xF007" />
0082                 </type>
0083                 <uint8 name="btWin32" />
0084                 <uint8 name="btMacOS" />
0085                 <uint8 name="rgbUid" count="16" />
0086                 <uint16 name="tag" />
0087                 <uint32 name="size" />
0088                 <uint32 name="cRef" />
0089                 <uint32 name="foDelay" />
0090                 <uint8 name="unused1" />
0091                 <uint8 name="cbName" />
0092                 <uint8 name="unused2" />
0093                 <uint8 name="unused3" />
0094                 <uint8 name="nameData" count="cbName" condition="cbName&gt;0" />
0095                 <type name="embeddedBlip" type="OfficeArtBlip" condition="rh.recLen &gt; 36 + cbName">
0096                         <!--
0097                                 this limitation is currently not supported because it requires
0098                                 dynamic introspection <limitation name="rh.recInstance"
0099                                 value="rh.recInstance" />
0100                         -->
0101                 </type>
0102         </struct>
0103         <struct name="OfficeArtBlipEMF">
0104                 <type name="rh" type="OfficeArtRecordHeader">
0105                         <limitation name="recVer" value="0" />
0106                         <limitation name="recInstance" value="0x3D4|0x3D5" />
0107                         <limitation name="recType" value="0xF01A" />
0108                 </type>
0109                 <uint8 name="rgbUid1" count="16" />
0110                 <uint8 name="rgbUid2" count="16" condition="rh.recInstance == 0x3D5" />
0111                 <type name="metafileHeader" type="OfficeArtMetafileHeader" />
0112                 <uint8 name="BLIPFileData" count="rh.recLen-((rh.recInstance==0x3D4)?50:66)" />
0113         </struct>
0114         <struct name="OfficeArtBlipWMF">
0115                 <type name="rh" type="OfficeArtRecordHeader">
0116                         <limitation name="recVer" value="0" />
0117                         <limitation name="recInstance" value="0x216|0x217" />
0118                         <limitation name="recType" value="0xF01B" />
0119                 </type>
0120                 <uint8 name="rgbUid1" count="16" />
0121                 <uint8 name="rgbUid2" count="16" condition="rh.recInstance == 0x217" />
0122                 <type name="metafileHeader" type="OfficeArtMetafileHeader" />
0123                 <uint8 name="BLIPFileData" count="rh.recLen-((rh.recInstance==0x216)?50:66)" />
0124         </struct>
0125         <struct name="OfficeArtBlipPICT">
0126                 <type name="rh" type="OfficeArtRecordHeader">
0127                         <limitation name="recVer" value="0" />
0128                         <limitation name="recInstance" value="0x542|0x543" />
0129                         <limitation name="recType" value="0xF01C" />
0130                 </type>
0131                 <uint8 name="rgbUid1" count="16" />
0132                 <uint8 name="rgbUid2" count="16" condition="rh.recInstance == 0x543" />
0133                 <type name="metafileHeader" type="OfficeArtMetafileHeader" />
0134                 <uint8 name="BLIPFileData" count="rh.recLen-((rh.recInstance==0x542)?50:66)" />
0135         </struct>
0136         <struct name="OfficeArtBlipJPEG">
0137                 <type name="rh" type="OfficeArtRecordHeader">
0138                         <limitation name="recVer" value="0" />
0139                         <limitation name="recInstance" value="0x46A|0x46B|0x6E2|0x6E3" />
0140                         <limitation name="recType" value="0xF01D" />
0141                 </type>
0142                 <uint8 name="rgbUid1" count="16" />
0143                 <uint8 name="rgbUid2" count="16"
0144                         condition="rh.recInstance == 0x46B || rh.recInstance == 0x6E3" />
0145                 <uint8 name="tag" />
0146                 <uint8 name="BLIPFileData"
0147                         count="rh.recLen-((rh.recInstance == 0x46A || rh.recInstance == 0x6E2)?17:33)" />
0148         </struct>
0149         <struct name="OfficeArtBlipPNG">
0150                 <type name="rh" type="OfficeArtRecordHeader">
0151                         <limitation name="recVer" value="0" />
0152                         <limitation name="recInstance" value="0x6E0|0x6E1" />
0153                         <limitation name="recType" value="0xF01E" />
0154                 </type>
0155                 <uint8 name="rgbUid1" count="16" />
0156                 <uint8 name="rgbUid2" count="16" condition="rh.recInstance == 0x6E1" />
0157                 <uint8 name="tag" />
0158                 <uint8 name="BLIPFileData" count="rh.recLen-((rh.recInstance==0x6E0)?17:33)" />
0159         </struct>
0160         <struct name="OfficeArtBlipDIB">
0161                 <type name="rh" type="OfficeArtRecordHeader">
0162                         <limitation name="recVer" value="0" />
0163                         <limitation name="recInstance" value="0x7A8|0x7A9" />
0164                         <limitation name="recType" value="0xF01F" />
0165                 </type>
0166                 <uint8 name="rgbUid1" count="16" />
0167                 <uint8 name="rgbUid2" count="16" condition="rh.recInstance == 0x7A9" />
0168                 <uint8 name="tag" />
0169                 <uint8 name="BLIPFileData" count="rh.recLen-((rh.recInstance==0x7A8)?17:33)" />
0170         </struct>
0171         <struct name="OfficeArtBlipTIFF">
0172                 <type name="rh" type="OfficeArtRecordHeader">
0173                         <limitation name="recVer" value="0" />
0174                         <limitation name="recInstance" value="0x6E4|0x6E5" />
0175                         <limitation name="recType" value="0xF020" />
0176                 </type>
0177                 <uint8 name="rgbUid1" count="16" />
0178                 <uint8 name="rgbUid2" count="16" condition="rh.recInstance == 0x6E5" />
0179                 <uint8 name="tag" />
0180                 <uint8 name="BLIPFileData" count="rh.recLen-((rh.recInstance==0x6E4)?17:33)" />
0181         </struct>
0182         <struct name="OfficeArtMetafileHeader">
0183                 <uint32 name="cbSize" />
0184                 <type name="rcBounds" type="RECT" />
0185                 <type name="ptSize" type="POINT" />
0186                 <uint32 name="cbsave" />
0187                 <uint8 name="compression" />
0188                 <uint8 name="filter" />
0189         </struct>
0190         <struct name="RECT">
0191                 <int32 name="left" />
0192                 <int32 name="top" />
0193                 <int32 name="right" />
0194                 <int32 name="bottom" />
0195         </struct>
0196         <struct name="POINT">
0197                 <int32 name="x" />
0198                 <int32 name="y" />
0199         </struct>
0200         <struct name="OfficeArtBlip">
0201                 <choice name="anon">
0202                         <type type="OfficeArtBlipEMF" />
0203                         <type type="OfficeArtBlipWMF" />
0204                         <type type="OfficeArtBlipPICT" />
0205                         <type type="OfficeArtBlipJPEG" />
0206                         <type type="OfficeArtBlipPNG" />
0207                         <type type="OfficeArtBlipDIB" />
0208                         <type type="OfficeArtBlipTIFF" />
0209                 </choice>
0210         </struct>
0211         <struct name="OfficeArtBStoreContainerFileBlock">
0212                 <choice name="anon">
0213                         <type type="OfficeArtFBSE" />
0214                         <type type="OfficeArtBlip" />
0215                 </choice>
0216         </struct>
0217         <struct name="PowerPointStructs">
0218                 <type name="anon" type="PowerPointStruct" array="true" />
0219         </struct>
0220         <struct name="PowerPointStruct">
0221                 <choice name="anon">
0222                         <type type="DocumentContainer" />
0223                         <type type="MasterOrSlideContainer" />
0224                         <type type="PersistDirectoryAtom" />
0225                         <type type="NotesContainer" />
0226                         <type type="HandoutContainer" />
0227                         <type type="SlideContainer" />
0228                         <type type="ExOleObjStg" />
0229                         <type type="ExControlStg" />
0230                         <type type="VbaProjectStg" />
0231                         <type type="UserEditAtom" />
0232                 </choice>
0233         </struct>
0234         <struct name="DocumentContainer">
0235                 <type name="rh" type="RecordHeader">
0236                         <limitation name="recVer" value="0xF" />
0237                         <limitation name="recInstance" value="0x0" />
0238                         <limitation name="recType" value="0x03E8" />
0239                 </type>
0240                 <type name="documentAtom" type="DocumentAtom" />
0241                 <type name="exObjList" type="ExObjListContainer" optional="true" />
0242                 <type name="documentTextInfo" type="DocumentTextInfoContainer" />
0243                 <type name="soundCollection" type="SoundCollectionContainer"
0244                         optional="true" />
0245                 <type name="drawingGroup" type="DrawingGroupContainer" />
0246                 <type name="masterList" type="MasterListWithTextContainer" />
0247                 <type name="docInfoList" type="DocInfoListContainer" optional="true" />
0248                 <type name="slideHF" type="SlideHeadersFootersContainer"
0249                         optional="true" />
0250                 <type name="notesHF" type="NotesHeadersFootersContainer"
0251                         optional="true" />
0252                 <type name="slideList" type="SlideListWithTextContainer"
0253                         optional="true" />
0254                 <!-- MS-PPT spec. violation - element contents MUST by strictly
0255                      ordered.  The 2nd presence of SlideHeadersFootersContainer
0256                      is not documented. -->
0257                 <type name="slideHF2" type="SlideHeadersFootersContainer" optional="true" />
0258                 <type name="notesList" type="NotesListWithTextContainer"
0259                         optional="true" />
0260                 <type name="slideShowDocInfoAtom" type="SlideShowDocInfoAtom"
0261                         optional="true" />
0262                 <type name="namedShows" type="NamedShowsContainer" optional="true" />
0263                 <type name="summary" type="SummaryContainer" optional="true" />
0264                 <type name="docRoutingSlipAtom" type="DocRoutingSlipAtom"
0265                         optional="true" />
0266                 <type name="printOptionsAtom" type="PrintOptionsAtom" optional="true" />
0267                 <type name="unknown0" type="UnknownDocumentContainerChild" array="true" />
0268                 <type name="rtCustomTableStylesAtom1" type="RoundTripCustomTableStyles12Atom"
0269                         optional="true" />
0270                 <type name="unknown1" type="UnknownDocumentContainerChild" array="true" />
0271                 <type name="endDocumentAtom" type="EndDocumentAtom" />
0272                 <type name="unknown2" type="UnknownDocumentContainerChild" array="true" />
0273                 <type name="rtCustomTableStylesAtom2" type="RoundTripCustomTableStyles12Atom"
0274                         optional="true" />
0275                 <type name="unknown4" type="UnknownDocumentContainerChild" array="true" />
0276                 <type name="unknown5" type="TextMasterStyle10Atom" optional="true" />
0277         </struct>
0278         <struct name="SoundCollectionContainer">
0279                 <type name="rh" type="RecordHeader">
0280                         <limitation name="recVer" value="0xF" />
0281                         <!--
0282                                 must be 5 according to the documentation, but a value of 0 has been
0283                                 observed
0284                         -->
0285                         <limitation name="recInstance" value="0|5" />
0286                         <limitation name="recType" value="0x7E4" />
0287                 </type>
0288                 <type name="soundCollectionAtom" type="SoundCollectionAtom" />
0289                 <type name="rgSoundContainer" type="SoundContainer" array="true"
0290                         size="rh.recLen-12" />
0291         </struct>
0292         <struct name="SoundCollectionAtom">
0293                 <type name="rh" type="RecordHeader">
0294                         <limitation name="recVer" value="0" />
0295                         <limitation name="recInstance" value="0" />
0296                         <limitation name="recType" value="0x7e5" />
0297                         <limitation name="recLen" value="4" />
0298                 </type>
0299                 <uint32 name="soundIdSeed" />
0300         </struct>
0301         <struct name="SlideHeadersFootersContainer">
0302                 <type name="rh" type="RecordHeader">
0303                         <limitation name="recVer" value="0xF" />
0304                         <limitation name="recInstance" value="3" />
0305                         <limitation name="recType" value="0xFD9" />
0306                 </type>
0307                 <type name="hfAtom" type="HeadersFootersAtom" />
0308                 <type name="userDateAtom" type="UserDateAtom" optional="true" />
0309                 <type name="footerAtom" type="FooterAtom" optional="true" />
0310         </struct>
0311         <struct name="NotesHeadersFootersContainer">
0312                 <type name="rh" type="RecordHeader">
0313                         <limitation name="recVer" value="0xF" />
0314                         <limitation name="recInstance" value="4" />
0315                         <limitation name="recType" value="0xFD9" />
0316                 </type>
0317                 <type name="hfAtom" type="HeadersFootersAtom" />
0318                 <type name="userDateAtom" type="UserDateAtom" optional="true" />
0319                 <type name="headerAtom" type="HeaderAtom" optional="true" />
0320                 <type name="footerAtom" type="FooterAtom" optional="true" />
0321         </struct>
0322         <struct name="HeadersFootersAtom">
0323                 <type name="rh" type="RecordHeader">
0324                         <limitation name="recVer" value="0" />
0325                         <limitation name="recInstance" value="0" />
0326                         <limitation name="recType" value="0xFDA" />
0327                         <limitation name="recLen" value="4" />
0328                 </type>
0329                 <int16 name="formatId">
0330                         <limitation expression="&gt;=0" />
0331                         <limitation expression="&lt;=13" />
0332                 </int16>
0333                 <bit name="fHasDate" />
0334                 <bit name="fHasTodayDate" />
0335                 <bit name="fHasUserDate" />
0336                 <bit name="fHasSlideNumber" />
0337                 <bit name="fHasHeader" />
0338                 <bit name="fHasFooter" />
0339                 <uint2 name="reserved1" />
0340                 <uint8 name="reserved2" />
0341         </struct>
0342         <struct name="UserDateAtom">
0343                 <type name="rh" type="RecordHeader">
0344                         <limitation name="recVer" value="0" />
0345                         <limitation name="recInstance" value="0" />
0346                         <limitation name="recType" value="0xFBA" />
0347                         <limitation name="recLen" expression="%2==0" />
0348                         <limitation name="recLen" expression="&lt;=510" />
0349                 </type>
0350                 <uint16 name="userDate" count="rh.recLen/2" />
0351         </struct>
0352         <struct name="HeaderAtom">
0353                 <type name="rh" type="RecordHeader">
0354                         <limitation name="recVer" value="0" />
0355                         <limitation name="recInstance" value="1" />
0356                         <limitation name="recType" value="0xFBA" />
0357                         <limitation name="recLen" expression="%2==0" />
0358                 </type>
0359                 <uint16 name="header" count="rh.recLen/2" />
0360         </struct>
0361         <struct name="FooterAtom">
0362                 <type name="rh" type="RecordHeader">
0363                         <limitation name="recVer" value="0" />
0364                         <limitation name="recInstance" value="2" />
0365                         <limitation name="recType" value="0xFBA" />
0366                         <limitation name="recLen" expression="%2==0" />
0367                 </type>
0368                 <uint16 name="footer" count="rh.recLen/2" />
0369         </struct>
0370         <struct name="PerSlideHeadersFootersContainer">
0371                 <type name="rh" type="RecordHeader">
0372                         <limitation name="recVer" value="0xF" />
0373                         <limitation name="recInstance" value="0" />
0374                         <limitation name="recType" value="0xFD9" />
0375                 </type>
0376                 <type name="hfAtom" type="HeadersFootersAtom" />
0377                 <type name="userDateAtom" type="UserDateAtom" optional="true" />
0378                 <!--
0379                         according to Microsoft documentation, there should be no headerAtom
0380                         in this struct, however in some ... documents add one. Adding it as
0381                         an optional field here still allows such files to be parsed.
0382                 -->
0383                 <type name="headerAtom" type="HeaderAtom" optional="true" />
0384                 <type name="footerAtom" type="FooterAtom" optional="true" />
0385                 <!--
0386                         according to Microsoft documentation, the userDateAtom must precede
0387                         footerAtom, however in some ... documents their order is swapped.
0388                         userDateAtom2 allows such files to still be parsed.
0389                 -->
0390                 <type name="userDateAtom2" type="UserDateAtom" optional="true" />
0391         </struct>
0392         <struct name="EndDocumentAtom">
0393                 <type name="rh" type="RecordHeader">
0394                         <limitation name="recVer" value="0" />
0395                         <limitation name="recInstance" value="0" />
0396                         <limitation name="recType" value="0x3EA" />
0397                         <limitation name="recLen" value="0" />
0398                 </type>
0399         </struct>
0400         <struct name="DocInfoListContainer">
0401                 <type name="rh" type="RecordHeader">
0402                         <limitation name="recVer" value="0xF" />
0403                         <limitation name="recInstance" value="0" />
0404                         <limitation name="recType" value="0x7D0" />
0405                 </type>
0406                 <type name="rgChildRec" type="DocInfoListSubContainerOrAtom"
0407                         array="true" />
0408         </struct>
0409         <struct name="DocInfoListSubContainerOrAtom">
0410                 <choice name="anon">
0411                         <type type="DocProgTagsContainer" />
0412                         <type type="NormalViewSetInfoContainer" />
0413                         <type type="NotesTextViewInfoContainer" />
0414                         <type type="OutlineViewInfoContainer" />
0415                         <type type="SlideViewInfoInstance" />
0416                         <type type="SorterViewInfoContainer" />
0417                         <type type="VBAInfoContainer" />
0418                 </choice>
0419         </struct>
0420         <struct name="SlideViewInfoInstance">
0421                 <type name="rh" type="RecordHeader">
0422                         <limitation name="recVer" value="0xF" />
0423                         <limitation name="recInstance" value="0|1" />
0424                         <limitation name="recType" value="0x3FA" />
0425                 </type>
0426                 <type name="slideViewInfoAtom" type="SlideViewInfoAtom" />
0427                 <type name="zoomViewInfoAtom" type="ZoomViewInfoAtom" optional="true" />
0428                 <type name="rgGuideAtom" type="GuideAtom" array="true" />
0429         </struct>
0430         <struct name="SlideViewInfoAtom">
0431                 <type name="rh" type="RecordHeader">
0432                         <limitation name="recVer" value="0" />
0433                         <limitation name="recInstance" value="0" />
0434                         <limitation name="recType" value="0x3FE" />
0435                         <limitation name="recLen" value="3" />
0436                 </type>
0437                 <uint8 name="unused1" />
0438                 <uint8 name="fSnapToGrid" />
0439                 <uint8 name="fSnapToShape" />
0440         </struct>
0441         <struct name="ZoomViewInfoAtom">
0442                 <type name="rh" type="RecordHeader">
0443                         <limitation name="recVer" value="0" />
0444                         <limitation name="recInstance" value="0" />
0445                         <limitation name="recType" value="0x3FD" />
0446                         <limitation name="recLen" value="0x34" />
0447                 </type>
0448                 <type name="curScale" type="ScalingStruct" />
0449                 <uint8 name="unused1" count="24" />
0450                 <type name="origin" type="PointStruct" />
0451                 <uint8 name="fUseVarScale">
0452                         <limitation value="0|1" />
0453                 </uint8>
0454                 <uint8 name="fDraftMode" />
0455                 <uint16 name="unused2" />
0456         </struct>
0457         <struct name="ScalingStruct">
0458                 <type name="x" type="RatioStruct" />
0459                 <type name="y" type="RatioStruct" />
0460         </struct>
0461         <struct name="GuideAtom">
0462                 <type name="rh" type="RecordHeader">
0463                         <limitation name="recVer" value="0" />
0464                         <limitation name="recInstance" value="7" />
0465                         <limitation name="recType" value="0x3FB" />
0466                         <limitation name="recLen" value="8" />
0467                 </type>
0468                 <uint32 name="type">
0469                         <limitation value="0|1" />
0470                 </uint32>
0471                 <int32 name="pos">
0472                         <limitation expression="&gt;=-15840" />
0473                         <limitation expression="&lt;=32255" />
0474                 </int32>
0475         </struct>
0476         <struct name="DocProgTagsContainer">
0477                 <type name="rh" type="RecordHeader">
0478                         <limitation name="recVer" value="0xF" />
0479                         <limitation name="recInstance" value="0|1" />
0480                         <limitation name="recType" value="0x1388" />
0481                 </type>
0482                 <type name="rgChildRec" type="DocProgTagsSubContainerOrAtom"
0483                         array="true" size="rh.recLen" />
0484         </struct>
0485         <struct name="DocProgTagsSubContainerOrAtom">
0486                 <choice name="anon">
0487                         <type type="ProgStringTagContainer" />
0488                         <type type="DocProgBinaryTagContainer" />
0489                 </choice>
0490         </struct>
0491         <struct name="DocProgBinaryTagContainer">
0492                 <type name="rh" type="RecordHeader">
0493                         <limitation name="recVer" value="0xF" />
0494                         <limitation name="recInstance" value="0" />
0495                         <limitation name="recType" value="0x138A" />
0496                 </type>
0497                 <type name="rec" type="DocProgBinaryTagSubContainerOrAtom" />
0498         </struct>
0499         <struct name="DocProgBinaryTagSubContainerOrAtom">
0500                 <choice name="anon">
0501                         <type type="PP9DocBinaryTagExtension" />
0502                         <type type="PP10DocBinaryTagExtension" />
0503                         <type type="PP11DocBinaryTagExtension" />
0504                         <type type="PP12DocBinaryTagExtension" />
0505                         <type type="UnknownBinaryTag" />
0506                 </choice>
0507         </struct>
0508         <struct name="PP9DocBinaryTagExtension">
0509                 <type name="rh" type="RecordHeader">
0510                         <limitation name="recVer" value="0x0" />
0511                         <limitation name="recInstance" value="0" />
0512                         <limitation name="recType" value="0x0FBA" />
0513                         <limitation name="recLen" value="0x0E" />
0514                 </type>
0515                 <uint8 name="tagName" count="14" />
0516                 <type name="rhData" type="RecordHeader">
0517                         <limitation name="recVer" value="0x0" />
0518                         <limitation name="recInstance" value="0" />
0519                         <limitation name="recType" value="0x138B" />
0520                 </type>
0521                 <type name="rgTextMasterStyle9" type="TextMasterStyle9Atom"
0522                         array="true" />
0523                 <type name="blipCollectionContainer" type="BlipCollection9Container"
0524                         optional="true" />
0525                 <type name="textDefaultsAtom" type="TextDefaults9Atom" optional="true" />
0526                 <type name="kinsokuContainer" type="Kinsoku9Container" optional="true" />
0527                 <type name="rgExternalHyperlink9" type="ExHyperlink9Container"
0528                         array="true" />
0529                 <type name="presAdvisorFlagsAtom" type="PresAdvisorFlags9Atom"
0530                         optional="true" />
0531                 <type name="envelopeDataAtom" type="EnvelopeData9Atom" optional="true" />
0532                 <type name="envelopeFlagsAtom" type="EnvelopeFlags9Atom"
0533                         optional="true" />
0534                 <type name="htmlDocInfoAtom" type="HTMLDocInfo9Atom" optional="true" />
0535                 <type name="htmlPublishInfoAtom" type="HTMLPublishInfo9Container"
0536                         optional="true" />
0537                 <type name="rgBroadcastDocInfo9" type="BroadcastDocInfo9Container"
0538                         array="true" />
0539                 <type name="outlineTextPropsContainer" type="OutlineTextProps9Container"
0540                         optional="true" />
0541         </struct>
0542         <struct name="TextMasterStyle9Atom">
0543                 <type name="rh" type="RecordHeader">
0544                         <limitation name="recVer" value="0x0" />
0545                         <limitation name="recInstance" value="0|1|2|3|4|5|6|7|8" />
0546                         <limitation name="recType" value="0x0FAD" />
0547                 </type>
0548                 <uint16 name="cLevels">
0549                         <limitation expression="&lt;=5" />
0550                 </uint16>
0551                 <type name="lstLvl1" type="TextMasterStyle9Level" condition="cLevels&gt;0" />
0552                 <type name="lstLvl2" type="TextMasterStyle9Level" condition="cLevels&gt;1" />
0553                 <type name="lstLvl3" type="TextMasterStyle9Level" condition="cLevels&gt;2" />
0554                 <type name="lstLvl4" type="TextMasterStyle9Level" condition="cLevels&gt;3" />
0555                 <type name="lstLvl5" type="TextMasterStyle9Level" condition="cLevels&gt;4" />
0556         </struct>
0557         <struct name="TextMasterStyle9Level">
0558                 <type name="pf9" type="TextPFException9" />
0559                 <type name="cf9" type="TextCFException9" />
0560         </struct>
0561         <struct name="TextPFException9">
0562                 <type name="masks" type="PFMasks">
0563                         <limitation name="hasBullet" value="false" />
0564                         <limitation name="bulletHasFont" value="false" />
0565                         <limitation name="bulletHasColor" value="false" />
0566                         <limitation name="bulletHasSize" value="false" />
0567                         <limitation name="bulletFont" value="false" />
0568                         <limitation name="bulletColor" value="false" />
0569                         <limitation name="bulletSize" value="false" />
0570                         <limitation name="bulletChar" value="false" />
0571                         <limitation name="leftMargin" value="false" />
0572                         <limitation name="indent" value="false" />
0573                         <limitation name="align" value="false" />
0574                         <limitation name="lineSpacing" value="false" />
0575                         <limitation name="spaceBefore" value="false" />
0576                         <limitation name="spaceAfter" value="false" />
0577                         <limitation name="defaultTabSize" value="false" />
0578                         <limitation name="fontAlign" value="false" />
0579                         <limitation name="charWrap" value="false" />
0580                         <limitation name="wordWrap" value="false" />
0581                         <limitation name="overflow" value="false" />
0582                         <limitation name="tabStops" value="false" />
0583                         <limitation name="textDirection" value="false" />
0584                 </type>
0585                 <uint16 name="bulletBlipRef" condition="masks.bulletBlip" />
0586                 <uint16 name="fBulletHasAutoNumber" condition="masks.bulletHasScheme">
0587                         <limitation value="0|1" />
0588                 </uint16>
0589                 <type name="bulletAutoNumberScheme" condition="masks.bulletScheme"
0590                         type="TextAutoNumberScheme" />
0591         </struct>
0592         <struct name="TextAutoNumberScheme">
0593                 <uint16 name="scheme">
0594                         <limitation expression="&lt;=40" />
0595                 </uint16>
0596                 <uint16 name="startNum">
0597                         <limitation expression="&gt;=1" />
0598                 </uint16>
0599         </struct>
0600         <struct name="TextCFException9">
0601                 <type name="masks" type="CFMasks">
0602                         <limitation name="bold" value="false" />
0603                         <limitation name="italic" value="false" />
0604                         <limitation name="underline" value="false" />
0605                         <limitation name="shadow" value="false" />
0606                         <limitation name="fehint" value="false" />
0607                         <limitation name="kumi" value="false" />
0608                         <limitation name="emboss" value="false" />
0609                         <limitation name="reserved" value="0" />
0610                         <limitation name="typeface" value="false" />
0611                         <limitation name="size" value="false" />
0612                         <limitation name="color" value="false" />
0613                         <limitation name="position" value="false" />
0614                         <limitation name="oldEATypeface" value="false" />
0615                         <limitation name="ansiTypeface" value="false" />
0616                         <limitation name="symbolTypeface" value="false" />
0617                         <limitation name="newEATypeface" value="false" />
0618                         <limitation name="csTypeface" value="false" />
0619                         <limitation name="pp11ext" value="false" />
0620                 </type>
0621                 <uint4 name="pp10runid" condition="masks.pp10ext" />
0622                 <uint20 name="unuseda" condition="masks.pp10ext" />
0623                 <uint8 name="unusedb" condition="masks.pp10ext" />
0624         </struct>
0625         <struct name="BlipCollection9Container">
0626                 <type name="rh" type="RecordHeader">
0627                         <limitation name="recVer" value="0xF" />
0628                         <limitation name="recInstance" value="0x0" />
0629                         <limitation name="recType" value="0x07F8" />
0630                 </type>
0631                 <type name="rgBlipEntityAtom" type="BlipEntityAtom" array="true"
0632                         size="rh.recLen" />
0633                 <!--
0634                         TODO: gBlipEntityAtom (variable): An array of BlipEntityAtom record
0635                         that specifies picture bullets. It MUST NOT contain more than one
0636                         BlipEntityAtom record with the same value of rh.recInstance.
0637                 -->
0638         </struct>
0639         <struct name="BlipEntityAtom">
0640                 <type name="rh" type="RecordHeader">
0641                         <limitation name="recVer" value="0" />
0642                         <limitation name="recInstance" expression="&lt;=128" />
0643                         <limitation name="recType" value="0x07F9" />
0644                 </type>
0645                 <uint8 name="winBlipType">
0646                         <limitation value="0x02|0x03|0x05|0x06" />
0647                 </uint8>
0648                 <uint8 name="unused" />
0649                 <type name="blip" type="OfficeArtBStoreContainerFileBlock" />
0650         </struct>
0651         <struct name="TextDefaults9Atom">
0652                 <type name="rh" type="RecordHeader">
0653                         <limitation name="recVer" value="0x0" />
0654                         <limitation name="recInstance" value="0x00" />
0655                         <limitation name="recType" value="0x0FB0" />
0656                 </type>
0657                 <type name="cf9" type="TextCFException9" />
0658                 <type name="pf9" type="TextPFException9" />
0659         </struct>
0660         <struct name="Kinsoku9Container">
0661                 <type name="rh" type="RecordHeader">
0662                         <limitation name="recVer" value="0xF" />
0663                         <limitation name="recInstance" value="0x2" />
0664                         <limitation name="recType" value="0x0FC8" />
0665                 </type>
0666                 <type name="kinsoku9Atom" type="Kinsoku9Atom" />
0667                 <!--
0668                         condition for this field is too complex so we just say it is optional
0669                 -->
0670                 <type name="kinsokuLeadingAtom" type="KinsokuLeadingAtom"
0671                         optional="true" />
0672                 <!--
0673                         condition for this field is too complex so we just say it is optional
0674                 -->
0675                 <type name="kinsokuFollowingAtom" type="KinsokuFollowingAtom"
0676                         optional="true" />
0677         </struct>
0678         <struct name="Kinsoku9Atom">
0679                 <type name="rh" type="RecordHeader">
0680                         <limitation name="recVer" value="0x0" />
0681                         <limitation name="recInstance" value="0x3" />
0682                         <limitation name="recType" value="0x0FD2" />
0683                         <limitation name="recLen" value="0x0004" />
0684                 </type>
0685                 <uint2 name="korLevel">
0686                         <limitation value="0x0|0x2" />
0687                 </uint2>
0688                 <uint2 name="scLevel">
0689                         <limitation value="0x0|0x2" />
0690                 </uint2>
0691                 <uint2 name="tcLevel">
0692                         <limitation value="0x0|0x2" />
0693                 </uint2>
0694                 <uint2 name="jpnLevel">
0695                         <limitation value="0x0|0x1|0x2" />
0696                 </uint2>
0697                 <uint4 name="reserveda">
0698                         <limitation value="0" />
0699                 </uint4>
0700                 <uint20 name="reservedb">
0701                         <limitation value="0" />
0702                 </uint20>
0703         </struct>
0704         <struct name="ExHyperlink9Container">
0705                 <type name="rh" type="RecordHeader">
0706                         <limitation name="recVer" value="0xF" />
0707                         <limitation name="recInstance" value="0" />
0708                         <limitation name="recType" value="0xFE4" />
0709                 </type>
0710                 <uint8 name="todo" count="rh.recLen" />
0711         </struct>
0712         <struct name="PresAdvisorFlags9Atom">
0713                 <type name="rh" type="RecordHeader">
0714                         <limitation name="recVer" value="0x0" />
0715                         <limitation name="recInstance" value="0" />
0716                         <limitation name="recType" value="0x177A" />
0717                         <limitation name="recLen" value="0x4" />
0718                 </type>
0719                 <bit name="fDisableCaseStyleTitleRule" />
0720                 <bit name="fDisableCaseStyleBodyRule" />
0721                 <bit name="fDisableEndPunctuationTitleRule" />
0722                 <bit name="fDisableEndPunctuationBodyRule" />
0723                 <bit name="fDisableTooManyBulletsRule" />
0724                 <bit name="fDisableFontSizeTitleRule" />
0725                 <bit name="fDisableFontSizeBodyRule" />
0726                 <bit name="fDisableNumberOfLinesTitleRule" />
0727                 <bit name="fDisableNumberOfLinesBodyRule" />
0728                 <bit name="fDisableTooManyFontsRule" />
0729                 <bit name="fDisablePrintTip" />
0730                 <uint5 name="reserveda">
0731                         <limitation value="0" />
0732                 </uint5>
0733                 <uint16 name="reservedb">
0734                         <limitation value="0" />
0735                 </uint16>
0736         </struct>
0737         <struct name="EnvelopeData9Atom">
0738                 <type name="rh" type="RecordHeader">
0739                         <limitation name="recVer" value="0x0" />
0740                         <limitation name="recInstance" value="0" />
0741                         <limitation name="recType" value="0x1785" />
0742                 </type>
0743                 <uint8 name="todo" count="rh.recLen" />
0744         </struct>
0745         <struct name="EnvelopeFlags9Atom">
0746                 <type name="rh" type="RecordHeader">
0747                         <limitation name="recVer" value="0x0" />
0748                         <limitation name="recInstance" value="0" />
0749                         <limitation name="recType" value="0x1784" />
0750                         <limitation name="recLen" value="4" />
0751                 </type>
0752                 <bit name="fHasEnvelope" />
0753                 <bit name="fEnvelopeVisible" />
0754                 <uint2 name="reserved1">
0755                         <limitation value="0" />
0756                 </uint2>
0757                 <bit name="fEnvelopeDirty" />
0758                 <uint3 name="reserved2a">
0759                         <limitation value="0" />
0760                 </uint3>
0761                 <uint8 name="reserved2b">
0762                         <limitation value="0" />
0763                 </uint8>
0764                 <uint16 name="reserved2c">
0765                         <limitation value="0" />
0766                 </uint16>
0767         </struct>
0768         <struct name="HTMLDocInfo9Atom">
0769                 <type name="rh" type="RecordHeader">
0770                         <limitation name="recVer" value="0x0" />
0771                         <limitation name="recInstance" value="0" />
0772                         <limitation name="recType" value="0x177B" />
0773                         <limitation name="recLen" value="0x10" />
0774                 </type>
0775                 <uint32 name="unused1" />
0776                 <uint32 name="encoding" />
0777                 <!--ToDo Encoding limitation -->
0778                 <uint16 name="frameColorType">
0779                         <limitation value="0|1|2|3|4|5" />
0780                 </uint16>
0781                 <uint8 name="screenSize" />
0782                 <uint8 name="unused2" />
0783                 <uint8 name="outputType" />
0784                 <bit name="fShowFrame" />
0785                 <bit name="fResizeGraphics" />
0786                 <bit name="fOrganizeInFolder" />
0787                 <bit name="fUseLongFileNames" />
0788                 <bit name="fRelyOnVML" />
0789                 <bit name="fAllowPNG" />
0790                 <bit name="fShowSlideAnimation" />
0791                 <bit name="reserved1">
0792                         <limitation value='false' />
0793                 </bit>
0794                 <uint16 name="unused3" />
0795         </struct>
0796         <struct name="HTMLPublishInfo9Container">
0797                 <type name="rh" type="RecordHeader">
0798                         <limitation name="recVer" value="0xF" />
0799                         <limitation name="recInstance" value="0x0" />
0800                         <limitation name="recType" value="0x177D" />
0801                 </type>
0802                 <uint8 name="todo" count="rh.recLen" />
0803         </struct>
0804         <struct name="BroadcastDocInfo9Container">
0805                 <type name="rh" type="RecordHeader">
0806                         <limitation name="recVer" value="0xF" />
0807                         <limitation name="recInstance" value="0" />
0808                         <limitation name="recType" value="0x177E" />
0809                 </type>
0810                 <uint8 name="todo" count="rh.recLen" />
0811         </struct>
0812         <struct name="OutlineTextProps9Container">
0813                 <type name="rh" type="RecordHeader">
0814                         <limitation name="recVer" value="0xF" />
0815                         <limitation name="recInstance" value="0" />
0816                         <limitation name="recType" value="0x0FAE" />
0817                 </type>
0818                 <type name="rgOutlineTextProps9Entry" type="OutlineTextProps9Entry"
0819                         array="true" />
0820         </struct>
0821         <struct name="OutlineTextProps9Entry">
0822                 <type name="outlineTextHeaderAtom" type="OutlineTextPropsHeaderExAtom" />
0823                 <type name="styleTextProp9Atom" type="StyleTextProp9Atom" />
0824         </struct>
0825         <struct name="OutlineTextPropsHeaderExAtom">
0826                 <type name="rh" type="RecordHeader">
0827                         <limitation name="recVer" value="0" />
0828                         <limitation name="recInstance" expression="&lt;=5" />
0829                         <limitation name="recType" value="0xFAF" />
0830                 </type>
0831                 <uint32 name="slideIdRef" />
0832                 <uint32 name="txType" />
0833         </struct>
0834         <struct name="StyleTextProp9Atom">
0835                 <type name="rh" type="RecordHeader">
0836                         <limitation name="recVer" value="0" />
0837                         <limitation name="recInstance" value="0" />
0838                         <limitation name="recType" value="0xFAC" />
0839                 </type>
0840                 <type name="rgStyleTextProp9" type="StyleTextProp9" array="true"
0841                         size="rh.recLen" />
0842         </struct>
0843         <struct name="StyleTextProp9">
0844                 <type name="pf9" type="TextPFException9" />
0845                 <type name="cf9" type="TextCFException9" />
0846                 <type name="si" type="TextSIException">
0847                         <limitation name="spell" value="false" />
0848                         <limitation name="lang" value="false" />
0849                         <limitation name="altLang" value="false" />
0850                         <limitation name="smartTag" value="false" />
0851                 </type>
0852         </struct>
0853         <struct name="PP10DocBinaryTagExtension">
0854                 <type name="rh" type="RecordHeader">
0855                         <limitation name="recVer" value="0x0" />
0856                         <limitation name="recInstance" value="0" />
0857                         <limitation name="recType" value="0x0FBA" />
0858                         <limitation name="recLen" value="0x10" />
0859                 </type>
0860                 <uint8 name="tagName" count="16" />
0861                 <type name="rhData" type="RecordHeader">
0862                         <limitation name="recVer" value="0x0" />
0863                         <limitation name="recInstance" value="0" />
0864                         <limitation name="recType" value="0x138B" />
0865                 </type>
0866                 <type name="fontCollectionContainer" type="FontCollection10Container"
0867                         optional="true" />
0868                 <type name="rgTextMasterStyle10" type="TextMasterStyle10Atom"
0869                         array="true" />
0870                 <type name="textDefaultsAtom" type="TextDefaults10Atom" optional="true" />
0871                 <type name="gridSpacingAtom" type="GridSpacing10Atom" />
0872                 <type name="rgCommentIndex10" type="CommentIndex10Container"
0873                         array="true" />
0874                 <type name="fontEmbedFlagsAtom" type="FontEmbedFlags10Atom"
0875                         optional="true" />
0876                 <type name="copyrightAtom" type="CopyrightAtom" optional="true" />
0877                 <type name="keywordsAtom" type="KeywordsAtom" optional="true" />
0878                 <type name="filterPrivacyFlagsAtom" type="FilterPrivacyFlags10Atom"
0879                         optional="true" />
0880                 <type name="outlineTextPropsContainer" type="OutlineTextProps10Container"
0881                         optional="true" />
0882                 <type name="docToolbarStatesAtom" type="DocToolbarStates10Atom"
0883                         optional="true" />
0884                 <type name="slideListTableContainer" type="SlideListTable10Container"
0885                         optional="true" />
0886                 <type name="rgDiffTree10Container" type="DiffTree10Container"
0887                         optional="true" />
0888                 <type name="modifyPasswordAtom" type="ModifyPasswordAtom"
0889                         optional="true" />
0890                 <type name="photoAlbumInfoAtom" type="PhotoAlbumInfo10Atom"
0891                         optional="true" />
0892         </struct>
0893         <struct name="FontCollection10Container">
0894                 <type name="rh" type="RecordHeader">
0895                         <limitation name="recVer" value="0xF" />
0896                         <limitation name="recInstance" value="0x0" />
0897                         <limitation name="recType" value="0x07D6" />
0898                 </type>
0899                 <!-- <uint8 name="todo" count="rh.recLen" /> -->
0900                 <type name="rgFontCollectionEntry" type="FontCollectionEntry"
0901                         array="true" size="rh.recLen" />
0902         </struct>
0903         <struct name="TextMasterStyle10Atom">
0904                 <type name="rh" type="RecordHeader">
0905                         <limitation name="recVer" value="0x0" />
0906                         <limitation name="recInstance" value="0|1|2|3|4|5|6|7|8" />
0907                         <limitation name="recType" value="0x0FB2" />
0908                 </type>
0909                 <uint16 name="cLevels">
0910                         <limitation expression="&lt;=5" />
0911                 </uint16>
0912                 <!--
0913                         level field of TextMasterStyleLevel is put here, because its presence
0914                         depends on this structure and currently child access to parent
0915                         properties is not supported
0916                 -->
0917                 <uint16 name="lstLvl1level" condition="cLevels&gt;0 &amp;&amp; rh.recInstance&gt;=5" />
0918                 <type name="lstLvl1" type="TextMasterStyle10Level" condition="cLevels&gt;0" />
0919                 <uint16 name="lstLvl2level" condition="cLevels&gt;1 &amp;&amp; rh.recInstance&gt;=5" />
0920                 <type name="lstLvl2" type="TextMasterStyle10Level" condition="cLevels&gt;1" />
0921                 <uint16 name="lstLvl3level" condition="cLevels&gt;2 &amp;&amp; rh.recInstance&gt;=5" />
0922                 <type name="lstLvl3" type="TextMasterStyle10Level" condition="cLevels&gt;2" />
0923                 <uint16 name="lstLvl4level" condition="cLevels&gt;3 &amp;&amp; rh.recInstance&gt;=5" />
0924                 <type name="lstLvl4" type="TextMasterStyle10Level" condition="cLevels&gt;3" />
0925                 <uint16 name="lstLvl5level" condition="cLevels&gt;4 &amp;&amp; rh.recInstance&gt;=5" />
0926                 <type name="lstLvl5" type="TextMasterStyle10Level" condition="cLevels&gt;4" />
0927         </struct>
0928         <struct name="TextMasterStyle10Level">
0929                 <type name="cf10" type="TextCFException10" />
0930         </struct>
0931         <struct name="TextCFException10">
0932                 <type name="masks" type="CFMasks">
0933                         <limitation name="bold" value="false" />
0934                         <limitation name="italic" value="false" />
0935                         <limitation name="underline" value="false" />
0936                         <limitation name="shadow" value="false" />
0937                         <limitation name="fehint" value="false" />
0938                         <limitation name="kumi" value="false" />
0939                         <limitation name="emboss" value="false" />
0940                         <limitation name="reserved" value="0" />
0941                         <limitation name="typeface" value="false" />
0942                         <limitation name="size" value="false" />
0943                         <limitation name="color" value="false" />
0944                         <limitation name="position" value="false" />
0945                         <limitation name="pp10ext" value="false" />
0946                         <limitation name="oldEATypeface" value="false" />
0947                         <limitation name="ansiTypeface" value="false" />
0948                         <limitation name="symbolTypeface" value="false" />
0949                 </type>
0950                 <!--ToDo check it is correct or not -->
0951                 <uint16 name="newEAFontRef" condition="masks.newEATypeface" />
0952                 <uint16 name="csFontRef" condition="masks.csTypeface" />
0953                 <uint32 name="pp11ext" condition="masks.pp11ext" />
0954         </struct>
0955         <struct name="TextDefaults10Atom">
0956                 <type name="rh" type="RecordHeader">
0957                         <limitation name="recVer" value="0x0" />
0958                         <limitation name="recInstance" value="0x0" />
0959                         <limitation name="recType" value="0x0FB4" />
0960                 </type>
0961                 <type name="cf10" type="TextCFException10" />
0962         </struct>
0963         <struct name="GridSpacing10Atom">
0964                 <type name="rh" type="RecordHeader">
0965                         <limitation name="recVer" value="0x0" />
0966                         <limitation name="recInstance" value="0x0" />
0967                         <limitation name="recType" value="0x040D" />
0968                         <limitation name="recLen" value="0x08" />
0969                 </type>
0970                 <uint32 name="x">
0971                         <limitation expression="&gt;=23224" />
0972                         <limitation expression="&lt;=1179648" />
0973                 </uint32>
0974                 <uint32 name="y">
0975                         <!--
0976                                 TODO: fix generator to handle this expression <limitation
0977                                 expression="x==y" />
0978                         -->
0979                         <limitation expression="&gt;=23224" />
0980                         <limitation expression="&lt;=1179648" />
0981                 </uint32>
0982         </struct>
0983         <struct name="CommentIndex10Container">
0984                 <type name="rh" type="RecordHeader">
0985                         <limitation name="recVer" value="0xF" />
0986                         <limitation name="recInstance" value="0x0" />
0987                         <limitation name="recType" value="0x2EE4" />
0988                 </type>
0989                 <type name="authorNameAtom" type="AuthorNameAtom" optional="true" />
0990                 <type name="authorIndexAtom" type="CommentIndex10Atom" optional="true" />
0991         </struct>
0992         <struct name="AuthorNameAtom">
0993                 <type name="rh" type="RecordHeader">
0994                         <limitation name="recVer" value="0x0" />
0995                         <limitation name="recInstance" value="0x0" />
0996                         <limitation name="recType" value="0x0FBA" />
0997                         <limitation name="recLen" expression="&lt;=104" />
0998                         <limitation name="recLen" expression="%2==0" />
0999                 </type>
1000                 <uint8 name="authorName" count="rh.recLen" />
1001         </struct>
1002         <struct name="CommentIndex10Atom">
1003                 <type name="rh" type="RecordHeader">
1004                         <limitation name="recVer" value="0x0" />
1005                         <limitation name="recInstance" value="0x0" />
1006                         <limitation name="recType" value="0x2EE5" />
1007                         <limitation name="recLen" value="0x08" />
1008                 </type>
1009                 <int32 name="colorIndex">
1010                         <limitation expression="&gt;=0" />
1011                 </int32>
1012                 <int32 name="commentIndexSeed">
1013                         <limitation expression="&gt;=0" />
1014                         <!-- TODO: limitation seems tough to do -->
1015                 </int32>
1016         </struct>
1017         <struct name="FontEmbedFlags10Atom">
1018                 <type name="rh" type="RecordHeader">
1019                         <limitation name="recVer" value="0x0" />
1020                         <limitation name="recInstance" value="0x0" />
1021                         <limitation name="recType" value="0x32C8" />
1022                         <limitation name="recLen" value="0x04" />
1023                 </type>
1024                 <bit name="fSubset" />
1025                 <bit name="fSubsetOptionConfirmed" />
1026                 <uint14 name="unuseda" />
1027                 <uint16 name="unusedb" />
1028         </struct>
1029         <struct name="CopyrightAtom">
1030                 <type name="rh" type="RecordHeader">
1031                         <limitation name="recVer" value="0x0" />
1032                         <limitation name="recInstance" value="0x1" />
1033                         <limitation name="recType" value="0x0FBA" />
1034                         <limitation name="recLen" expression="&lt;=510" />
1035                         <limitation name="recLen" expression="%2==0" />
1036                 </type>
1037                 <uint8 name="copyright" count="rh.recLen" />
1038         </struct>
1039         <struct name="KeywordsAtom">
1040                 <type name="rh" type="RecordHeader">
1041                         <limitation name="recVer" value="0x0" />
1042                         <limitation name="recInstance" value="0x2" />
1043                         <limitation name="recType" value="0x0FBA" />
1044                         <limitation name="recLen" expression="&lt;=510" />
1045                         <limitation name="recLen" expression="%2==0" />
1046                 </type>
1047                 <uint8 name="keywords" count="rh.recLen" />
1048         </struct>
1049         <struct name="FilterPrivacyFlags10Atom">
1050                 <type name="rh" type="RecordHeader">
1051                         <limitation name="recVer" value="0x0" />
1052                         <limitation name="recInstance" value="0x0" />
1053                         <limitation name="recType" value="0x36B0" />
1054                         <limitation name="recLen" value="0x04" />
1055                 </type>
1056                 <bit name="fRemovePII" />
1057                 <uint7 name="reserved2a">
1058                         <limitation value="0x0" />
1059                 </uint7>
1060                 <uint8 name="reserved2b">
1061                         <limitation value="0x0" />
1062                 </uint8>
1063                 <uint16 name="reserved2c">
1064                         <limitation value="0x0" />
1065                 </uint16>
1066         </struct>
1067         <struct name="OutlineTextProps10Container">
1068                 <type name="rh" type="RecordHeader">
1069                         <limitation name="recVer" value="0xF" />
1070                         <limitation name="recInstance" value="0" />
1071                         <limitation name="recType" value="0x0FB3" />
1072                 </type>
1073                 <type name="rgOutlineTextProps10Entry" type="OutlineTextProps10Entry"
1074                         array="true" />
1075         </struct>
1076         <struct name="OutlineTextProps10Entry">
1077                 <type name="outlineTextHeaderAtom" type="OutlineTextPropsHeaderExAtom" />
1078                 <type name="styleTextProp10Atom" type="StyleTextProp10Atom" />
1079         </struct>
1080         <struct name="StyleTextProp10Atom">
1081                 <type name="rh" type="RecordHeader">
1082                         <limitation name="recVer" value="0" />
1083                         <limitation name="recInstance" value="0x0" />
1084                         <limitation name="recType" value="0xFB1" />
1085                 </type>
1086                 <type name="rgStyleTextProp10" type="TextCFException10" array="true" />
1087         </struct>
1088         <struct name="DocToolbarStates10Atom">
1089                 <type name="rh" type="RecordHeader">
1090                         <limitation name="recVer" value="0x0" />
1091                         <limitation name="recInstance" value="0" />
1092                         <limitation name="recType" value="0x36B1" />
1093                         <limitation name="recLen" value="0x01" />
1094                 </type>
1095                 <bit name="fShowReviewingToolbar" />
1096                 <bit name="fShowReviewingGallery" />
1097                 <uint6 name="reserved">
1098                         <limitation value="0x0" />
1099                 </uint6>
1100         </struct>
1101         <struct name="SlideListTable10Container">
1102                 <type name="rh" type="RecordHeader">
1103                         <limitation name="recVer" value="0xF" />
1104                         <limitation name="recInstance" value="0" />
1105                         <limitation name="recType" value="0x2EF1" />
1106                 </type>
1107                 <uint8 name="todo" count="rh.recLen" />
1108         </struct>
1109         <struct name="DiffTree10Container">
1110                 <type name="rh" type="RecordHeader">
1111                         <limitation name="recVer" value="0xF" />
1112                         <limitation name="recInstance" value="0" />
1113                         <limitation name="recType" value="0x2EEC" />
1114                 </type>
1115                 <uint8 name="todo" count="rh.recLen" />
1116         </struct>
1117         <struct name="ModifyPasswordAtom">
1118                 <type name="rh" type="RecordHeader">
1119                         <limitation name="recVer" value="0x0" />
1120                         <limitation name="recInstance" value="0x03" />
1121                         <limitation name="recType" value="0x0FBA" />
1122                         <limitation name="recLen" expression="&lt;=510" />
1123                         <limitation name="recLen" expression="%2==0" />
1124                 </type>
1125                 <uint8 name="modifyPassword" count="rh.recLen" />
1126         </struct>
1127         <struct name="PhotoAlbumInfo10Atom">
1128                 <type name="rh" type="RecordHeader">
1129                         <limitation name="recVer" value="0x0" />
1130                         <limitation name="recInstance" value="0x0" />
1131                         <limitation name="recType" value="0x036B2" />
1132                         <limitation name="recLen" value="0x06" />
1133                 </type>
1134                 <uint8 name="fUseBlackWhite" />
1135                 <uint8 name="fHasCaption" />
1136                 <uint8 name="layout">
1137                         <limitation value="0|1|2|3|4|5|6" />
1138                 </uint8>
1139                 <uint8 name="unused" />
1140                 <uint16 name="frameShape">
1141                         <limitation value="0x0000|0x0001|0x0002|0x0003|0x0004|0x0005|0x0006" />
1142                 </uint16>
1143         </struct>
1144         <struct name="PP11DocBinaryTagExtension">
1145                 <type name="rh" type="RecordHeader">
1146                         <limitation name="recVer" value="0x0" />
1147                         <limitation name="recInstance" value="0" />
1148                         <limitation name="recType" value="0x0FBA" />
1149                         <limitation name="recLen" value="0x10" />
1150                 </type>
1151                 <uint8 name="tagName" count="16" />
1152                 <type name="rhData" type="RecordHeader">
1153                         <limitation name="recVer" value="0x0" />
1154                         <limitation name="recInstance" value="0" />
1155                         <limitation name="recType" value="0x138B" />
1156                 </type>
1157                 <type name="smartTagStore11" type="SmartTagStore11Container" />
1158                 <type name="outlineTextProps" type="OutlineTextProps11Container" />
1159         </struct>
1160         <struct name="SmartTagStore11Container">
1161                 <type name="rh" type="RecordHeader">
1162                         <limitation name="recVer" value="0xF" />
1163                         <limitation name="recInstance" value="0x0" />
1164                         <limitation name="recType" value="0x36B3" />
1165                 </type>
1166                 <uint8 name="todo" count="rh.recLen" />
1167         </struct>
1168         <struct name="OutlineTextProps11Container">
1169                 <type name="rh" type="RecordHeader">
1170                         <limitation name="recVer" value="0xF" />
1171                         <limitation name="recInstance" value="0x0" />
1172                         <limitation name="recType" value="0x0FB5" />
1173                 </type>
1174                 <uint8 name="todo" count="rh.recLen" />
1175         </struct>
1176         <struct name="UnknownBinaryTag">
1177                 <type name="tagNameAtom" type="TagNameAtom" />
1178                 <type name="tagData" type="BinaryTagDataBlob" />
1179         </struct>
1180         <struct name="BinaryTagDataBlob">
1181                 <type name="rh" type="RecordHeader">
1182                         <limitation name="recVer" value="0x0" />
1183                         <limitation name="recInstance" value="0x0" />
1184                         <limitation name="recType" value="0x138B" />
1185                 </type>
1186                 <uint8 name="data" count="rh.recLen" />
1187         </struct>
1188         <struct name="PP12DocBinaryTagExtension">
1189                 <type name="rh" type="RecordHeader">
1190                         <limitation name="recVer" value="0x0" />
1191                         <limitation name="recInstance" value="0" />
1192                         <limitation name="recType" value="0x0FBA" />
1193                         <limitation name="recLen" value="0x10" />
1194                 </type>
1195                 <uint8 name="tagName" count="16" />
1196                 <type name="rhData" type="RecordHeader">
1197                         <limitation name="recVer" value="0x0" />
1198                         <limitation name="recInstance" value="0" />
1199                         <limitation name="recType" value="0x138B" />
1200                 </type>
1201                 <uint8 name="todo" count="rhData.recLen" />
1202         </struct>
1203         <struct name="NotesTextViewInfoContainer">
1204                 <type name="rh" type="RecordHeader">
1205                         <limitation name="recVer" value="0xF" />
1206                         <limitation name="recInstance" value="1" />
1207                         <limitation name="recType" value="0x413" />
1208                 </type>
1209                 <type name="zoomViewInfo" type="ZoomViewInfoAtom" />
1210         </struct>
1211         <struct name="OutlineViewInfoContainer">
1212                 <type name="rh" type="RecordHeader">
1213                         <limitation name="recVer" value="0xF" />
1214                         <!-- OpenOffice writes 0 here. -->
1215                         <limitation name="recInstance" value="0|1" />
1216                         <limitation name="recType" value="0x407" />
1217                 </type>
1218                 <type name="noZoomViewInfo" type="NoZoomViewInfoAtom" />
1219         </struct>
1220         <struct name="NoZoomViewInfoAtom">
1221                 <type name="rh" type="RecordHeader">
1222                         <limitation name="recVer" value="0" />
1223                         <limitation name="recInstance" value="0" />
1224                         <limitation name="recType" value="0x3FD" />
1225                         <limitation name="recLen" value="0x34" />
1226                 </type>
1227                 <type name="curScale" type="ScalingStruct" />
1228                 <uint8 name="unused1" count="24" />
1229                 <type name="origin" type="PointStruct" />
1230                 <uint8 name="unused2" />
1231                 <uint8 name="fDraftMode" />
1232                 <uint16 name="unused3" />
1233         </struct>
1234         <struct name="SorterViewInfoContainer">
1235                 <type name="rh" type="RecordHeader">
1236                         <limitation name="recVer" value="0xF" />
1237                         <limitation name="recInstance" value="1" />
1238                         <limitation name="recType" value="0x408" />
1239                 </type>
1240                 <uint8 name="todo" count="rh.recLen" />
1241         </struct>
1242         <struct name="VBAInfoContainer">
1243                 <type name="rh" type="RecordHeader">
1244                         <limitation name="recVer" value="0xF" />
1245                         <limitation name="recInstance" value="1" />
1246                         <limitation name="recType" value="0x3FF" />
1247                         <limitation name="recLen" value="0x14" />
1248                 </type>
1249                 <type name="vbaInfoAtom" type="VBAInfoAtom" />
1250         </struct>
1251         <struct name="VBAInfoAtom">
1252                 <type name="rh" type="RecordHeader">
1253                         <limitation name="recVer" value="2" />
1254                         <limitation name="recInstance" value="0" />
1255                         <limitation name="recType" value="0x400" />
1256                         <limitation name="recLen" value="0xC" />
1257                 </type>
1258                 <uint32 name="persistIdRef" />
1259                 <uint32 name="fHasMacros">
1260                         <limitation value="0|1" />
1261                 </uint32>
1262                 <uint32 name="version">
1263                         <!-- OpenOffice writes 0 or 1 instead of 2 -->
1264                         <limitation value="0|1|2" />
1265                 </uint32>
1266         </struct>
1267         <struct name="NormalViewSetInfoContainer">
1268                 <type name="rh" type="RecordHeader">
1269                         <limitation name="recVer" value="0xF" />
1270                         <limitation name="recInstance" value="1" />
1271                         <limitation name="recType" value="0x414" />
1272                         <limitation name="recLen" value="0x1C" />
1273                 </type>
1274                 <type name="normalViewSetInfoAtom" type="NormalViewSetInfoAtom" />
1275         </struct>
1276         <struct name="NormalViewSetInfoAtom">
1277                 <type name="rh" type="RecordHeader">
1278                         <limitation name="recVer" value="0" />
1279                         <limitation name="recInstance" value="0" />
1280                         <limitation name="recType" value="0x415" />
1281                         <limitation name="recLen" value="0x14" />
1282                 </type>
1283                 <type name="leftPortion" type="RatioStruct">
1284                         <!--
1285                                 This is not true in a sample doc <limitation
1286                                 expression="numer*denom&gt;=0" /> <limitation
1287                                 expression="denom/numer&gt;=1" />
1288                         -->
1289                 </type>
1290                 <type name="topPortion" type="RatioStruct">
1291                         <!--
1292                                 This is not true in a sample doc <limitation
1293                                 expression="numer*denom&gt;=0" /> <limitation
1294                                 expression="denom/numer&gt;=1" />
1295                         -->
1296                 </type>
1297                 <uint8 name="vertBarState" />
1298                 <uint8 name="horizBarState" />
1299                 <uint8 name="fPreferSingleSet">
1300                         <limitation value="0|1" />
1301                 </uint8>
1302                 <bit name="fHideThumbnails" />
1303                 <bit name="fBarSnapped" />
1304                 <uint6 name="reserved">
1305                         <limitation value="0" />
1306                 </uint6>
1307         </struct>
1308         <struct name="MasterListWithTextContainer">
1309                 <type name="rh" type="RecordHeader">
1310                         <limitation name="recVer" value="0xF" />
1311                         <limitation name="recInstance" value="0x1" />
1312                         <limitation name="recType" value="0x0FF0" />
1313                         <limitation name="recLen" expression="%28==0" />
1314                 </type>
1315                 <type name="rgMasterPersistAtom" type="MasterPersistAtom" count="rh.recLen/28" />
1316         </struct>
1317         <struct name="MasterPersistAtom">
1318                 <type name="rh" type="RecordHeader">
1319                         <limitation name="recVer" value="0" />
1320                         <limitation name="recInstance" value="0" />
1321                         <limitation name="recType" value="0x3F3" />
1322                         <limitation name="recLen" value="0x14" />
1323                 </type>
1324                 <uint32 name="persistIdRef" />
1325                 <uint2 name="reserved1">
1326                         <limitation value="0" />
1327                 </uint2>
1328                 <bit name="fNonOutLineData" />
1329                 <uint5 name="reserved2">
1330                         <limitation value="0" />
1331                 </uint5>
1332                 <uint8 name="reserved3">
1333                         <limitation value="0" />
1334                 </uint8>
1335                 <uint16 name="reserved4">
1336                         <limitation value="0" />
1337                 </uint16>
1338                 <uint32 name="reserved5">
1339                         <limitation value="0" />
1340                 </uint32>
1341                 <uint32 name="masterId" />
1342                 <uint32 name="reserved6">
1343                         <limitation value="0" />
1344                 </uint32>
1345         </struct>
1346         <struct name="SlideListWithTextContainer">
1347                 <type name="rh" type="RecordHeader">
1348                         <limitation name="recVer" value="0xF" />
1349                         <limitation name="recInstance" value="0x0" />
1350                         <limitation name="recType" value="0x0FF0" />
1351                 </type>
1352                 <type name="rgChildRec" type="SlideListWithTextSubContainerOrAtom"
1353                         array="true" />
1354         </struct>
1355         <struct name="NotesListWithTextContainer">
1356                 <type name="rh" type="RecordHeader">
1357                         <limitation name="recVer" value="0xF" />
1358                         <limitation name="recInstance" value="2" />
1359                         <limitation name="recType" value="0x0FF0" />
1360                 </type>
1361                 <type name="rgNotesPersistAtom" type="NotesPersistAtom" array="true" />
1362         </struct>
1363         <struct name="NotesPersistAtom">
1364                 <type name="rh" type="RecordHeader">
1365                         <limitation name="recVer" value="0x0" />
1366                         <limitation name="recInstance" value="0" />
1367                         <limitation name="recType" value="0x03F3" />
1368                         <limitation name="recLen" value="0x14" />
1369                 </type>
1370                 <uint32 name="persistIdRef" />
1371                 <uint2 name="reserved1">
1372                         <limitation value="0" />
1373                 </uint2>
1374                 <bit name="fNonOutlineData" />
1375                 <uint5 name="reserved2a">
1376                         <limitation value="0" />
1377                 </uint5>
1378                 <uint8 name="reserved2b">
1379                         <limitation value="0" />
1380                 </uint8>
1381                 <uint16 name="reserved2c">
1382                         <limitation value="0" />
1383                 </uint16>
1384                 <uint32 name="reserved3">
1385                         <limitation value="0" />
1386                 </uint32>
1387                 <uint32 name="notesId" />
1388                 <uint32 name="reserved4">
1389                         <limitation value="0" />
1390                 </uint32>
1391         </struct>
1392         <struct name="SlideListWithTextSubContainerOrAtom">
1393                 <type name="slidePersistAtom" type="SlidePersistAtom" />
1394                 <type name="atoms" type="TextContainer" array="true" />
1395         </struct>
1396         <struct name="TextClientDataSubContainerOrAtom">
1397                 <choice name="anon">
1398                         <type type="OutlineAtom" />
1399                         <type type="TextContainer" />
1400                 </choice>
1401         </struct>
1402         <!--
1403             This is an interpretation of the OfficeArtClientTextBoxAtom as
1404             specified by the ABNF grammar in the MS-PPT, p.420.
1405           -->
1406         <struct name="OutlineAtom">
1407                 <type name="outlineTextRefAtom" type="OutlineTextRefAtom" />
1408                 <type name="textRulerAtom" type="TextRulerAtom" optional="true" />
1409         </struct>
1410         <!--
1411             This is an interpretation of the OfficeArtClientTextBoxAtom as
1412             specified by the ABNF grammar in the MS-PPT, p.420.
1413           -->
1414         <struct name="TextContainer">
1415                 <type name="textHeaderAtom" type="TextHeaderAtom" />
1416                 <choice name="text" optional="true">
1417                         <type type="TextCharsAtom" />
1418                         <type type="TextBytesAtom" />
1419                 </choice>
1420                 <!--
1421                      TODO: TextStylePropAtom = *1(RT_StyleTextPropAtom / RT_MasterTextPropAtom)
1422                   -->
1423                 <type name="style" type="StyleTextPropAtom" optional="true" />
1424                 <type name="meta" type="TextContainerMeta" array="true" />
1425 
1426                 <!-- Perhaps this does not belong here.  Following containers
1427                      are optional and their order might differ. -->
1428 
1429                 <type name="master" type="MasterTextPropAtom" optional="true" />
1430                 <type name="bookmark" type="TextBookmarkAtom" array="true" />
1431 
1432                 <!--  MS-PPT spec. violation - Unknown container (MS Office2003 specific). -->
1433                 <type name="unknown" type="UnknownTextContainerChild" optional="true" />
1434                 <type name="specialinfo" type="TextSpecialInfoAtom" optional="true" />
1435                 <type name="interactive" type="TextContainerInteractiveInfo" array="true" />
1436                 <!--  ABNF violation - element contents MUST by strictly ordered. -->
1437                 <type name="specialinfo2" type="TextSpecialInfoAtom" optional="true" />
1438                 <!--
1439                      TODO: TextOrMaster = *(RT_TextRulerAtom / RT_MasterTextPropAtom)
1440                   -->
1441                 <type name="textRulerAtom" type="TextRulerAtom" optional="true" />
1442                 <!--  ABNF violation - element contents MUST by strictly ordered. -->
1443                 <type name="interactive2" type="TextContainerInteractiveInfo" array="true" />
1444         </struct>
1445         <!-- our own invention -->
1446         <struct name="TextContainerMeta">
1447                 <choice name="meta">
1448                         <type type="SlideNumberMCAtom" />
1449                         <type type="DateTimeMCAtom" />
1450                         <type type="GenericDateMCAtom" />
1451                         <type type="HeaderMCAtom" />
1452                         <type type="FooterMCAtom" />
1453                         <type type="RTFDateTimeMCAtom" />
1454                 </choice>
1455         </struct>
1456         <!-- our own invention -->
1457         <struct name="TextContainerInteractiveInfo">
1458                 <choice name="interactive">
1459                         <type type="MouseClickTextInfo" />
1460                         <type type="MouseOverTextInfo" />
1461                 </choice>
1462         </struct>
1463         <!-- our own invention -->
1464         <struct name="MouseClickTextInfo">
1465                 <type name="interactive" type="MouseClickInteractiveInfoContainer" />
1466                 <type name="text" type="MouseClickTextInteractiveInfoAtom" />
1467         </struct>
1468         <!-- our own invention -->
1469         <struct name="MouseOverTextInfo">
1470                 <type name="interactive" type="MouseOverInteractiveInfoContainer" />
1471                 <type name="text" type="MouseOverTextInteractiveInfoAtom" />
1472         </struct>
1473         <!-- our own invention -->
1474         <struct name="SlidePersistAtom">
1475                 <type name="rh" type="RecordHeader">
1476                         <limitation name="recVer" value="0" />
1477                         <limitation name="recInstance" value="0" />
1478                         <limitation name="recType" value="0x3F3" />
1479                         <limitation name="recLen" value="0x14" />
1480                 </type>
1481                 <uint32 name="persistIdRef" />
1482                 <bit name="reserved1">
1483                         <limitation value="false" />
1484                 </bit>
1485                 <bit name="fShouldCollapse" />
1486                 <bit name="fNonOutlineData" />
1487                 <uint5 name="reserved2">
1488                         <limitation value="0" />
1489                 </uint5>
1490                 <uint8 name="reserved3">
1491                         <limitation value="0" />
1492                 </uint8>
1493                 <uint16 name="reserved4">
1494                         <limitation value="0" />
1495                 </uint16>
1496                 <int32 name="cTexts">
1497                         <limitation expression="&gt;=0" />
1498                         <limitation expression="&lt;=8" />
1499                 </int32>
1500                 <type name="slideId" type="SlideId" />
1501                 <uint32 name="reserved5">
1502                         <limitation value="0" />
1503                 </uint32>
1504         </struct>
1505         <struct name="TextHeaderAtom">
1506                 <type name="rh" type="RecordHeader">
1507                         <limitation name="recVer" value="0" />
1508                         <limitation name="recInstance" value="0|1|2|3|4|5" />
1509                         <limitation name="recType" value="0xF9F" />
1510                         <limitation name="recLen" value="4" />
1511                 </type>
1512                 <uint32 name="textType" />
1513         </struct>
1514         <struct name="TextCharsAtom">
1515                 <type name="rh" type="RecordHeader">
1516                         <limitation name="recVer" value="0" />
1517                         <limitation name="recInstance" value="0" />
1518                         <limitation name="recType" value="0xFA0" />
1519                         <limitation name="recLen" expression="%2==0" />
1520                 </type>
1521                 <uint16 name="textChars" count="rh.recLen/2">
1522                         <!-- <limitation value="!0" />-->
1523                 </uint16>
1524         </struct>
1525         <struct name="TextBytesAtom">
1526                 <type name="rh" type="RecordHeader">
1527                         <limitation name="recVer" value="0" />
1528                         <limitation name="recInstance" value="0" />
1529                         <limitation name="recType" value="0xFA8" />
1530                 </type>
1531                 <uint8 name="textChars" count="rh.recLen">
1532                         <!-- <limitation value="!0" />-->
1533                 </uint8>
1534         </struct>
1535         <struct name="MasterTextPropAtom">
1536                 <type name="rh" type="RecordHeader">
1537                         <limitation name="recVer" value="0" />
1538                         <limitation name="recInstance" value="0" />
1539                         <limitation name="recType" value="0xFA2" />
1540                 </type>
1541                 <type name="rgMasterTextPropRun" type="MasterTextPropRun" array="true"
1542                         size="rh.recLen" />
1543         </struct>
1544         <struct name="MasterTextPropRun">
1545                 <uint32 name="count" />
1546                 <uint16 name="indentLevel">
1547                         <limitation expression="&lt;=4" />
1548                 </uint16>
1549         </struct>
1550         <struct name="StyleTextPropAtom">
1551                 <type name="rh" type="RecordHeader">
1552                         <limitation name="recVer" value="0" />
1553                         <limitation name="recInstance" value="0" />
1554                         <limitation name="recType" value="0xFA1" />
1555                 </type>
1556                 <!--
1557                         <type name="rgTextPFRun" type="TextPFRun" array="true" /> <type
1558                         name="rgTextCFRun" type="TextCFRun" array="true" />
1559                 -->
1560                 <!-- this one seems very hard to do -->
1561                 <uint8 name="todo" count="rh.recLen" />
1562                 <limitation expression="sum(rgTextPFRun/count)=count(../text/textChars)+1" />
1563                 <limitation expression="sum(rgTextCFRun/count)=count(../text/textChars)" />
1564         </struct>
1565         <struct name="TextPFRun">
1566                 <uint32 name="count">
1567                         <limitation expression="&gt;0" />
1568                 </uint32>
1569                 <uint16 name="indentLevel">
1570                         <limitation expression="&lt;=4" />
1571                 </uint16>
1572                 <type name="pf" type="TextPFException">
1573                         <limitation name="masks.defaultTabSize" value="false" />
1574                         <limitation name="masks.tabStops" value="false" />
1575                 </type>
1576         </struct>
1577         <struct name="TextCFRun">
1578                 <uint32 name="count">
1579                         <limitation expression="&gt;0" />
1580                 </uint32>
1581                 <type name="cf" type="TextCFException" />
1582         </struct>
1583         <struct name="SlideNumberMCAtom">
1584                 <type name="rh" type="RecordHeader">
1585                         <limitation name="recVer" value="0" />
1586                         <limitation name="recInstance" value="0" />
1587                         <limitation name="recType" value="0xFD8" />
1588                         <limitation name="recLen" value="4" />
1589                 </type>
1590                 <int32 name="position" />
1591         </struct>
1592         <struct name="DateTimeMCAtom">
1593                 <type name="rh" type="RecordHeader">
1594                         <limitation name="recVer" value="0" />
1595                         <limitation name="recInstance" value="0" />
1596                         <limitation name="recType" value="0xFF7" />
1597                         <limitation name="recLen" value="8" />
1598                 </type>
1599                 <int32 name="position" />
1600                 <uint8 name="index" />
1601                 <uint8 name="unused" count="3" />
1602         </struct>
1603         <struct name="GenericDateMCAtom">
1604                 <type name="rh" type="RecordHeader">
1605                         <limitation name="recVer" value="0" />
1606                         <limitation name="recInstance" value="0" />
1607                         <limitation name="recType" value="0xFF8" />
1608                         <limitation name="recLen" value="4" />
1609                 </type>
1610                 <int32 name="position" />
1611         </struct>
1612         <struct name="HeaderMCAtom">
1613                 <type name="rh" type="RecordHeader">
1614                         <limitation name="recVer" value="0" />
1615                         <limitation name="recInstance" value="0" />
1616                         <limitation name="recType" value="0xFF9" />
1617                         <limitation name="recLen" value="4" />
1618                 </type>
1619                 <int32 name="position" />
1620         </struct>
1621         <struct name="FooterMCAtom">
1622                 <type name="rh" type="RecordHeader">
1623                         <limitation name="recVer" value="0" />
1624                         <limitation name="recInstance" value="0" />
1625                         <limitation name="recType" value="0xFFA" />
1626                         <limitation name="recLen" value="4" />
1627                 </type>
1628                 <int32 name="position" />
1629         </struct>
1630         <struct name="RTFDateTimeMCAtom">
1631                 <type name="rh" type="RecordHeader">
1632                         <limitation name="recVer" value="0" />
1633                         <limitation name="recInstance" value="0" />
1634                         <limitation name="recType" value="0x1015" />
1635                         <limitation name="recLen" value="0x84" />
1636                 </type>
1637                 <int32 name="position" />
1638                 <uint8 name="format" count="128" />
1639         </struct>
1640         <struct name="TextBookmarkAtom">
1641                 <type name="rh" type="RecordHeader">
1642                         <limitation name="recVer" value="0" />
1643                         <limitation name="recInstance" value="0" />
1644                         <limitation name="recType" value="0xFA7" />
1645                         <limitation name="recLen" value="0xC" />
1646                 </type>
1647                 <int32 name="begin" />
1648                 <int32 name="end">
1649                         <!--
1650                                 TODO: figure out how to do this <limitation expression="&gt; begin"
1651                                 /> <limitation expression="&lt;= begin+255" />
1652                         -->
1653                 </int32>
1654                 <int32 name="bookmarkID" />
1655         </struct>
1656         <struct name="TextRange">
1657                 <int32 name="begin" />
1658                 <int32 name="end" />
1659         </struct>
1660         <struct name="MouseClickTextInteractiveInfoAtom">
1661                 <type name="rh" type="RecordHeader">
1662                         <limitation name="recVer" value="0" />
1663                         <limitation name="recInstance" value="0" />
1664                         <limitation name="recType" value="0xFDF" />
1665                         <limitation name="recLen" value="8" />
1666                 </type>
1667                 <type name="range" type="TextRange" />
1668         </struct>
1669         <struct name="MouseOverTextInteractiveInfoAtom">
1670                 <type name="rh" type="RecordHeader">
1671                         <limitation name="recVer" value="0" />
1672                         <limitation name="recInstance" value="1" />
1673                         <limitation name="recType" value="0xFDF" />
1674                         <limitation name="recLen" value="8" />
1675                 </type>
1676                 <type name="range" type="TextRange" />
1677         </struct>
1678         <struct name="SlideId">
1679                 <uint32 name="slideId">
1680                         <limitation expression="&gt;=100" />
1681                         <limitation expression="&lt;2147483647" />
1682                 </uint32>
1683         </struct>
1684         <struct name="DocumentTextInfoContainer">
1685                 <type name="rh" type="RecordHeader">
1686                         <limitation name="recVer" value="0xF" />
1687                         <limitation name="recInstance" value="0x0" />
1688                         <limitation name="recType" value="0x03F2" />
1689                 </type>
1690                 <type name="kinsoku" type="KinsokuContainer" optional="true" />
1691                 <type name="fontCollection" type="FontCollectionContainer"
1692                         optional="true" />
1693                 <type name="textCFDefaultsAtom" type="TextCFExceptionAtom"
1694                         optional="true" />
1695                 <type name="textPFDefaultsAtom" type="TextPFExceptionAtom"
1696                         optional="true" />
1697                 <type name="defaultRulerAtom" type="DefaultRulerAtom" optional="true" />
1698                 <type name="textSIDefaultsAtom" type="TextSIExceptionAtom" />
1699                 <type name="textMasterStyleAtom" type="TextMasterStyleAtom" />
1700                 <!--
1701                         a document has been observed that has two TextMasterStyleAtom members
1702                 -->
1703                 <type name="textMasterStyleAtom2" type="TextMasterStyleAtom"
1704                         optional="true" />
1705         </struct>
1706         <struct name="TextCFExceptionAtom">
1707                 <type name="rh" type="RecordHeader">
1708                         <limitation name="recVer" value="0x0" />
1709                         <limitation name="recInstance" value="0x0" />
1710                         <limitation name="recType" value="0x0FA4" />
1711                 </type>
1712                 <type name="cf" type="TextCFException" />
1713         </struct>
1714         <struct name="DefaultRulerAtom">
1715                 <type name="rh" type="RecordHeader">
1716                         <limitation name="recVer" value="0x0" />
1717                         <limitation name="recInstance" value="0x0" />
1718                         <limitation name="recType" value="0x0FAB" />
1719                 </type>
1720                 <type name="defaultTextRuler" type="TextRuler">
1721                         <limitation name="fDefaultTabSize" value="true" />
1722                         <limitation name="fCLevels" value="true" />
1723                         <limitation name="fTabStops" value="true" />
1724                         <limitation name="fLeftMargin1" value="true" />
1725                         <limitation name="fLeftMargin2" value="true" />
1726                         <limitation name="fLeftMargin3" value="true" />
1727                         <limitation name="fLeftMargin4" value="true" />
1728                         <limitation name="fIndent1" value="true" />
1729                         <limitation name="fIndent2" value="true" />
1730                         <limitation name="fIndent3" value="true" />
1731                         <limitation name="fIndent4" value="true" />
1732                         <limitation name="fIndent5" value="true" />
1733                 </type>
1734         </struct>
1735         <struct name="TextRuler">
1736                 <bit name="fDefaultTabSize" />
1737                 <bit name="fCLevels" />
1738                 <bit name="fTabStops" />
1739                 <bit name="fLeftMargin1" />
1740                 <bit name="fLeftMargin2" />
1741                 <bit name="fLeftMargin3" />
1742                 <bit name="fLeftMargin4" />
1743                 <bit name="fLeftMargin5" />
1744                 <bit name="fIndent1" />
1745                 <bit name="fIndent2" />
1746                 <bit name="fIndent3" />
1747                 <bit name="fIndent4" />
1748                 <bit name="fIndent5" />
1749                 <uint3 name="reserved1" />
1750                 <uint16 name="reserved2" />
1751                 <int16 name="cLevels" condition="fCLevels" />
1752                 <uint16 name="defaultTabSize" condition="fDefaultTabSize" />
1753                 <type name="tabs" type="TabStops" condition="fTabStops" />
1754                 <uint16 name="leftMargin1" condition="fLeftMargin1" />
1755                 <uint16 name="indent1" condition="fIndent1" />
1756                 <uint16 name="leftMargin2" condition="fLeftMargin2" />
1757                 <uint16 name="indent2" condition="fIndent2" />
1758                 <uint16 name="leftMargin3" condition="fLeftMargin3" />
1759                 <uint16 name="indent3" condition="fIndent3" />
1760                 <uint16 name="leftMargin4" condition="fLeftMargin4" />
1761                 <uint16 name="indent4" condition="fIndent4" />
1762                 <uint16 name="leftMargin5" condition="fLeftMargin5" />
1763                 <uint16 name="indent5" condition="fIndent5" />
1764         </struct>
1765         <struct name="TabStops">
1766                 <uint16 name="count" />
1767                 <type name="rgTabStop" count="count" type="TabStop" />
1768         </struct>
1769         <struct name="TabStop">
1770                 <int16 name="position" />
1771                 <uint16 name="type" />
1772         </struct>
1773         <struct name="TextPFExceptionAtom">
1774                 <type name="rh" type="RecordHeader">
1775                         <limitation name="recVer" value="0x0" />
1776                         <limitation name="recInstance" value="0x0" />
1777                         <limitation name="recType" value="0x0FA5" />
1778                 </type>
1779                 <uint16 name="reserved" />
1780                 <type name="pf" type="TextPFException" />
1781         </struct>
1782         <struct name="TextPFException">
1783                 <type name="masks" type="PFMasks">
1784                         <!--
1785                                 it seems ppt files generated with OpenOffice Impress 3.0 can have
1786                                 bulletBlip = true
1787                         -->
1788                         <limitation name="bulletBlip" value="false" />
1789                         <!--
1790                                 it seems ppt files generated with OpenOffice Impress 3.0 can have
1791                                 bulletHasScheme = true
1792                         -->
1793                         <limitation name="bulletHasScheme" value="false" />
1794                         <!--
1795                                 it seems ppt files generated with OpenOffice Impress 3.0 can have
1796                                 bulletScheme = true
1797                         -->
1798                         <limitation name="bulletScheme" value="false" />
1799                 </type>
1800                 <type name="bulletFlags" type="BulletFlags"
1801                         condition="masks.hasBullet||masks.bulletHasFont||masks.bulletHasColor||masks.bulletHasSize" />
1802                 <int16 name="bulletChar" condition="masks.bulletChar">
1803                         <!--
1804                                 OpenOffice violates this constraint, so we do not check it
1805                                 <limitation value="!0" />
1806                         -->
1807                 </int16>
1808                 <uint16 name="bulletFontRef" condition="masks.bulletFont" />
1809                 <int16 name="bulletSize" condition="masks.bulletSize" />
1810                 <type name="bulletColor" condition="masks.bulletColor" type="ColorIndexStruct" />
1811                 <uint16 name="textAlignment" condition="masks.align" />
1812                 <int16 name="lineSpacing" condition="masks.lineSpacing" />
1813                 <int16 name="spaceBefore" condition="masks.spaceBefore" />
1814                 <int16 name="spaceAfter" condition="masks.spaceAfter" />
1815                 <uint16 name="leftMargin" condition="masks.leftMargin" />
1816                 <uint16 name="indent" condition="masks.indent" />
1817                 <uint16 name="defaultTabSize" condition="masks.defaultTabSize" />
1818                 <type name="tabStops" type="TabStops" condition="masks.tabStops" />
1819                 <uint16 name="fontAlign" condition="masks.fontAlign" />
1820                 <type name="wrapFlags" type="PFWrapFlags"
1821                         condition="masks.charWrap||masks.wordWrap||masks.overflow" />
1822                 <uint16 name="textDirection" condition="masks.textDirection" />
1823         </struct>
1824         <struct name="PFWrapFlags">
1825                 <bit name="charWrap" />
1826                 <bit name="wordWrap" />
1827                 <bit name="overflow" />
1828                 <uint5 name="reserved1" />
1829                 <uint8 name="reserved2" />
1830         </struct>
1831         <struct name="ColorIndexStruct">
1832                 <uint8 name="red" />
1833                 <uint8 name="green" />
1834                 <uint8 name="blue" />
1835                 <uint8 name="index">
1836                         <!-- limitation expression="&lt;8 || &gt;253" />-->
1837                 </uint8>
1838         </struct>
1839         <struct name="BulletFlags">
1840                 <bit name="fHasBullet" />
1841                 <bit name="fBulletHasFont" />
1842                 <bit name="fBulletHasColor" />
1843                 <bit name="fBulletHasSize" />
1844                 <uint12 name="reserved" />
1845         </struct>
1846         <struct name="PFMasks">
1847                 <bit name="hasBullet" />
1848                 <bit name="bulletHasFont" />
1849                 <bit name="bulletHasColor" />
1850                 <bit name="bulletHasSize" />
1851                 <bit name="bulletFont" />
1852                 <bit name="bulletColor" />
1853                 <bit name="bulletSize" />
1854                 <bit name="bulletChar" />
1855                 <bit name="leftMargin" />
1856                 <bit name="unused" />
1857                 <bit name="indent" />
1858                 <bit name="align" />
1859                 <bit name="lineSpacing" />
1860                 <bit name="spaceBefore" />
1861                 <bit name="spaceAfter" />
1862                 <bit name="defaultTabSize" />
1863                 <bit name="fontAlign" />
1864                 <bit name="charWrap" />
1865                 <bit name="wordWrap" />
1866                 <bit name="overflow" />
1867                 <bit name="tabStops" />
1868                 <bit name="textDirection" />
1869                 <bit name="reserved" />
1870                 <bit name="bulletBlip" />
1871                 <bit name="bulletScheme" />
1872                 <bit name="bulletHasScheme" />
1873                 <uint6 name="reserved2" />
1874         </struct>
1875         <struct name="TextCFException">
1876                 <type name="masks" type="CFMasks">
1877                         <limitation name="pp10ext" value="false" />
1878                         <limitation name="newEATypeface" value="false" />
1879                         <limitation name="csTypeface" value="false" />
1880                         <limitation name="pp11ext" value="false" />
1881                 </type>
1882                 <type name="fontStyle" type="CFStyle"
1883                         condition="masks.bold || masks.italic || masks.underline || masks.shadow || masks.fehint || masks.kumi || masks.emboss || masks.fHasStyle != 0" />
1884                 <uint16 name="fontRef" condition="masks.typeface" />
1885                 <uint16 name="oldEAFontRef" condition="masks.oldEATypeface" />
1886                 <uint16 name="ansiFontRef" condition="masks.ansiTypeface" />
1887                 <uint16 name="symbolFontRef" condition="masks.symbolTypeface" />
1888                 <uint16 name="fontSize" condition="masks.size">
1889                         <limitation expression="&gt;=1" />
1890                         <limitation expression="&lt;=4000" />
1891                 </uint16>
1892                 <type name="color" condition="masks.color" type="ColorIndexStruct" />
1893                 <int16 name="position" condition="masks.position">
1894                         <limitation expression="&gt;=-100" />
1895                         <limitation expression="&lt;=100" />
1896                 </int16>
1897         </struct>
1898         <struct name="CFMasks">
1899                 <bit name="bold" />
1900                 <bit name="italic" />
1901                 <bit name="underline" />
1902                 <bit name="unused1" />
1903                 <bit name="shadow" />
1904                 <bit name="fehint" />
1905                 <bit name="unused2" />
1906                 <bit name="kumi" />
1907                 <bit name="unused3" />
1908                 <bit name="emboss" />
1909                 <uint4 name="fHasStyle" />
1910                 <uint2 name="unused4" />
1911                 <bit name="typeface" />
1912                 <bit name="size" />
1913                 <bit name="color" />
1914                 <bit name="position" />
1915                 <bit name="pp10ext" />
1916                 <bit name="oldEATypeface" />
1917                 <bit name="ansiTypeface" />
1918                 <bit name="symbolTypeface" />
1919                 <bit name="newEATypeface" />
1920                 <bit name="csTypeface" />
1921                 <bit name="pp11ext" />
1922                 <uint5 name="reserved" />
1923         </struct>
1924         <struct name="CFStyle">
1925                 <bit name="bold" />
1926                 <bit name="italic" />
1927                 <bit name="underline" />
1928                 <bit name="unused1" />
1929                 <bit name="shadow" />
1930                 <bit name="fehint" />
1931                 <bit name="unused2" />
1932                 <bit name="kumi" />
1933                 <bit name="unused3" />
1934                 <bit name="emboss" />
1935                 <uint4 name="pp9rt" />
1936                 <uint2 name="unused4" />
1937         </struct>
1938         <struct name="FontCollectionContainer">
1939                 <type name="rh" type="RecordHeader">
1940                         <limitation name="recVer" value="0xF" />
1941                         <limitation name="recInstance" value="0x0" />
1942                         <limitation name="recType" value="0x07D5" />
1943                 </type>
1944                 <type name="rgFontCollectionEntry" type="FontCollectionEntry"
1945                         array="true" size="rh.recLen" />
1946         </struct>
1947         <struct name="FontCollectionEntry">
1948                 <type name="fontEntityAtom" type="FontEntityAtom" />
1949                 <type name="fontEmbedData1" type="FontEmbedDataBlob" optional="true" />
1950                 <type name="fontEmbedData2" type="FontEmbedDataBlob" optional="true" />
1951                 <type name="fontEmbedData3" type="FontEmbedDataBlob" optional="true" />
1952                 <type name="fontEmbedData4" type="FontEmbedDataBlob" optional="true" />
1953         </struct>
1954         <struct name="FontEntityAtom">
1955                 <type name="rh" type="RecordHeader">
1956                         <limitation name="recVer" value="0" />
1957                         <limitation name="recInstance" expression="&lt;=128" />
1958                         <limitation name="recType" value="0xFB7" />
1959                         <limitation name="recLen" value="0x44" />
1960                 </type>
1961                 <uint16 name="lfFaceName" count="32" />
1962                 <uint8 name="lfCharSet" />
1963                 <bit name="fEmbedSubsetted" />
1964                 <uint7 name="unused" />
1965                 <bit name="rasterFontType" />
1966                 <bit name="deviceFontType" />
1967                 <bit name="truetypeFontType" />
1968                 <bit name="fNoFontSubstitution" />
1969                 <uint4 name="reserved">
1970                         <limitation value="0" />
1971                 </uint4>
1972                 <uint8 name="lfPitchAndFamily" />
1973         </struct>
1974         <struct name="FontEmbedDataBlob">
1975                 <type name="rh" type="RecordHeader">
1976                         <limitation name="recVer" value="0" />
1977                         <limitation name="recInstance" expression="&lt;=3" />
1978                         <limitation name="recType" value="0xFB8" />
1979                 </type>
1980                 <uint8 name="data" count="rh.recLen" />
1981         </struct>
1982         <struct name="KinsokuContainer">
1983                 <type name="rh" type="RecordHeader">
1984                         <limitation name="recVer" value="0xF" />
1985                         <limitation name="recInstance" value="0x2" />
1986                         <limitation name="recType" value="0x0FC8" />
1987                 </type>
1988                 <type name="kinsokuAtom" type="KinsokuAtom" />
1989                 <type name="kinsokuLeadingAtom" type="KinsokuLeadingAtom"
1990                         condition="kinsokuAtom.level==2" />
1991                 <type name="kinsokuFollowingAtom" type="KinsokuFollowingAtom"
1992                         condition="kinsokuAtom.level==2" />
1993         </struct>
1994         <struct name="KinsokuAtom">
1995                 <type name="rh" type="RecordHeader">
1996                         <limitation name="recVer" value="0x0" />
1997                         <limitation name="recInstance" value="0x3" />
1998                         <limitation name="recType" value="0x0FD2" />
1999                         <limitation name="recLen" value="4" />
2000                 </type>
2001                 <uint32 name="level">
2002                         <!--  MS documentation does not allow value 128 -->
2003                         <limitation value="0|1|2|128" />
2004                 </uint32>
2005         </struct>
2006         <struct name="KinsokuLeadingAtom">
2007                 <type name="rh" type="RecordHeader">
2008                         <limitation name="recVer" value="0" />
2009                         <limitation name="recInstance" value="0" />
2010                         <limitation name="recType" value="0xFBA" />
2011                         <limitation expression="recLen%2==0" />
2012                 </type>
2013                 <uint16 name="kinsokuLeading" count="rh.recLen/2" />
2014         </struct>
2015         <struct name="KinsokuFollowingAtom">
2016                 <type name="rh" type="RecordHeader">
2017                         <limitation name="recVer" value="0" />
2018                         <limitation name="recInstance" value="1 " />
2019                         <limitation name="recType" value="0xFBA" />
2020                         <limitation expression="recLen%2==0" />
2021                 </type>
2022                 <uint16 name="kinsokuFollowing" count="rh.recLen/2" />
2023         </struct>
2024         <struct name="TextSpecialInfoAtom">
2025                 <type name="rh" type="RecordHeader">
2026                         <limitation name="recVer" value="0x0" />
2027                         <limitation name="recInstance" value="0x0" />
2028                         <limitation name="recType" value="0xFAA" />
2029                 </type>
2030                 <type name="rgSIRun" type="TextSIRun" array="true" size="rh.recLen" />
2031         </struct>
2032         <struct name="TextSIRun">
2033                 <uint32 name="count">
2034                         <limitation expression="&gt;=1" />
2035                 </uint32>
2036                 <type name="si" type="TextSIException" />
2037         </struct>
2038         <struct name="TextSIExceptionAtom">
2039                 <type name="rh" type="RecordHeader">
2040                         <limitation name="recVer" value="0x0" />
2041                         <limitation name="recInstance" value="0x0" />
2042                         <limitation name="recType" value="0x0FA9" />
2043                 </type>
2044                 <type name="textSIException" type="TextSIException">
2045                         <limitation name="fPp10ext" value="false" />
2046                         <limitation name="fBidi" value="false" />
2047                         <limitation name="smartTag" value="false" />
2048                 </type>
2049         </struct>
2050         <struct name="TextSIException">
2051                 <bit name="spell" />
2052                 <bit name="lang" />
2053                 <bit name="altLang" />
2054                 <bit name="unused1" />
2055                 <bit name="unused2" />
2056                 <bit name="fPp10ext" />
2057                 <bit name="fBidi" />
2058                 <bit name="unused3" />
2059                 <bit name="reserved1" />
2060                 <bit name="smartTag" />
2061                 <uint2 name="reserved2a" />
2062                 <uint20 name="reserved2b" />
2063                 <uint16 name="spellInfo" condition="spell" />
2064                 <uint16 name="lid" condition="lang" />
2065                 <uint16 name="altLid" condition="altLang" />
2066                 <int16 name="bidi" condition="fBidi">
2067                         <limitation value="0|1" />
2068                 </int16>
2069                 <uint4 name="pp10runid" condition="fPp10ext" />
2070                 <uint4 name="reserved3a" condition="fPp10ext" />
2071                 <uint16 name="reserved3b" condition="fPp10ext" />
2072                 <uint7 name="reserved3bc" condition="fPp10ext" />
2073                 <bit name="grammarError" condition="fPp10ext" />
2074                 <type name="smartTags" type="SmartTags" condition="smartTag" />
2075         </struct>
2076         <struct name="SmartTags">
2077                 <uint32 name="count" />
2078                 <uint32 name="rgSmartTagIndex" count="count" />
2079         </struct>
2080         <struct name="TextMasterStyleAtom">
2081                 <type name="rh" type="RecordHeader">
2082                         <limitation name="recVer" value="0x0" />
2083                         <limitation name="recInstance" value="0|1|2|3|4|5|6|7|8" />
2084                         <limitation name="recType" value="0x0FA3" />
2085                 </type>
2086                 <uint16 name="cLevels">
2087                         <limitation expression="&lt;=5" />
2088                 </uint16>
2089                 <!--
2090                         level field of TextMasterStyleLevel is put here, because its presence
2091                         depends on this structure and currently child access to parent
2092                         properties is not supported
2093                 -->
2094                 <uint16 name="lstLvl1level" condition="cLevels&gt;0 &amp;&amp; rh.recInstance&gt;=5" />
2095                 <type name="lstLvl1" type="TextMasterStyleLevel" condition="cLevels&gt;0" />
2096                 <uint16 name="lstLvl2level" condition="cLevels&gt;1 &amp;&amp; rh.recInstance&gt;=5" />
2097                 <type name="lstLvl2" type="TextMasterStyleLevel" condition="cLevels&gt;1" />
2098                 <uint16 name="lstLvl3level" condition="cLevels&gt;2 &amp;&amp; rh.recInstance&gt;=5" />
2099                 <type name="lstLvl3" type="TextMasterStyleLevel" condition="cLevels&gt;2" />
2100                 <uint16 name="lstLvl4level" condition="cLevels&gt;3 &amp;&amp; rh.recInstance&gt;=5" />
2101                 <type name="lstLvl4" type="TextMasterStyleLevel" condition="cLevels&gt;3" />
2102                 <uint16 name="lstLvl5level" condition="cLevels&gt;4 &amp;&amp; rh.recInstance&gt;=5" />
2103                 <type name="lstLvl5" type="TextMasterStyleLevel" condition="cLevels&gt;4" />
2104         </struct>
2105         <struct name="TextMasterStyleLevel">
2106                 <type name="pf" type="TextPFException" />
2107                 <type name="cf" type="TextCFException" />
2108         </struct>
2109         <struct name="ExOleEmbedAtom">
2110                 <type name="rh" type="RecordHeader">
2111                         <limitation name="recVer" value="0x0" />
2112                         <limitation name="recInstance" value="0x0" />
2113                         <limitation name="recType" value="0x0FCD" />
2114                         <limitation name="recLen" value="0x8" />
2115                 </type>
2116                 <uint32 name="exColorFollow">
2117                         <limitation value="0|1|2" />
2118                 </uint32>
2119                 <uint8 name="fCantLockServer" />
2120                 <uint8 name="fNoSizeToServer" />
2121                 <uint8 name="fIsTable" />
2122                 <uint8 name="unused" />
2123         </struct>
2124         <struct name="DocumentAtom">
2125                 <type name="rh" type="RecordHeader">
2126                         <limitation name="recVer" value="1" />
2127                         <limitation name="recInstance" value="0x0" />
2128                         <limitation name="recType" value="0x03E9" />
2129                         <limitation name="recLen" value="0x28" />
2130                 </type>
2131                 <type name="slideSize" type="PointStruct" />
2132                 <type name="notesSize" type="PointStruct" />
2133                 <type name="serverZoom" type="RatioStruct">
2134                         <limitation expression="numer*denom &gt; 0" />
2135                 </type>
2136                 <uint32 name="notesMasterPersistIdRef" />
2137                 <uint32 name="handoutMasterPersistIdRef" />
2138                 <uint16 name="firstSlideNumber">
2139                         <limitation expression="&lt;10000" />
2140                 </uint16>
2141                 <uint16 name="slideSizeType">
2142                         <limitation value="0|1|2|3|4|5|6" />
2143                 </uint16>
2144                 <uint8 name="fSaveWithFonts" />
2145                 <uint8 name="fOmitTitlePlace" />
2146                 <uint8 name="fRightToLeft" />
2147                 <uint8 name="fShowComments" />
2148         </struct>
2149         <struct name="PointStruct">
2150                 <int32 name="x" />
2151                 <int32 name="y" />
2152         </struct>
2153         <struct name="RatioStruct">
2154                 <int32 name="numer" />
2155                 <int32 name="denom">
2156                         <limitation expression="!= 0" />
2157                 </int32>
2158         </struct>
2159         <struct name="PersistDirectoryAtom">
2160                 <type name="rh" type="RecordHeader">
2161                         <limitation name="recVer" value="0" />
2162                         <limitation name="recInstance" value="0" />
2163                         <limitation name="recType" value="0x1772" />
2164                 </type>
2165                 <type name="rgPersistDirEntry" type="PersistDirectoryEntry"
2166                         array="true" size="rh.recLen" />
2167         </struct>
2168         <struct name="UnknownDocumentContainerChild">
2169                 <type name="rh" type="RecordHeader">
2170                         <limitation name="recType"
2171                                 value="0x416|0x41A|0x101A|0x1773|0x1788|0x178c|0x178d" />
2172                 </type>
2173                 <uint8 name="unknown" count="rh.recLen" />
2174         </struct>
2175         <struct name="UnknownOfficeArtClientDataChild">
2176                 <type name="rh" type="RecordHeader">
2177                         <limitation name="recVer" value="0" />
2178                         <limitation name="recInstance" value="0" />
2179                         <limitation name="recType" value="0xFE8|0x1019" />
2180                 </type>
2181                 <uint8 name="unknown" count="rh.recLen" />
2182         </struct>
2183         <struct name="UnknownSlideContainerChild">
2184                 <type name="rh" type="RecordHeader">
2185                         <limitation name="recVer" value="0" />
2186                         <limitation name="recInstance" value="0" />
2187                         <limitation name="recType" value="0x101D" />
2188                 </type>
2189                 <uint8 name="unknown" count="rh.recLen" />
2190         </struct>
2191         <struct name="UnknownTextContainerChild">
2192                 <type name="rh" type="RecordHeader">
2193                         <limitation name="recVer" value="3" />
2194                         <limitation name="recInstance" value="9" />
2195                         <limitation name="recType" value="0" />
2196                 </type>
2197                 <uint8 name="unknown" count="rh.recLen" />
2198         </struct>
2199         <struct name="PersistDirectoryEntry">
2200                 <uint20 name="persistId" />
2201                 <uint12 name="cPersist" />
2202                 <uint32 name="rgPersistOffset" count="cPersist" />
2203         </struct>
2204         <struct name="PersistIdRef">
2205                 <uint32 name="anon">
2206                         <!--
2207                                 TODO: A 4-byte unsigned integer that specifies a reference to a
2208                                 persist object. It MUST be 0x00000000 or equal to a persist object
2209                                 identifier specified by a PersistDirectoryAtom record. The value
2210                                 0x00000000 specifies a null reference.
2211                         -->
2212                 </uint32>
2213         </struct>
2214         <struct name="MasterOrSlideContainer">
2215                 <choice name="anon">
2216                         <type type="MainMasterContainer" />
2217                         <type type="SlideContainer" />
2218                 </choice>
2219         </struct>
2220         <struct name="MainMasterContainer">
2221                 <type name="rh" type="RecordHeader">
2222                         <limitation name="recVer" value="0xF" />
2223                         <limitation name="recInstance" value="0x0" />
2224                         <limitation name="recType" value="0x03F8" />
2225                 </type>
2226                 <type name="slideAtom" type="SlideAtom" />
2227                 <!-- MS-PPT spec. violation - SlideShowSlideInfoAtom presence NOT documented -->
2228                 <type name="unknown" type="SlideShowSlideInfoAtom" optional="true" />
2229                 <type name="rgSchemeListElementColorScheme" type="SchemeListElementColorSchemeAtom"
2230                         array="true" />
2231                 <type name="rgTextMasterStyle" type="TextMasterStyleAtom" array="true" />
2232                 <type name="roundTripOArtTextSTyles12Atom" type="RoundTripOArtTextStyles12Atom" optional="true" />
2233                 <type name="slideShowInfoAtom" type="SlideShowSlideInfoAtom" optional="true" />
2234                 <type name="perSlideHeadersFootersContainer" type="PerSlideHeadersFootersContainer"
2235                         optional="true" />
2236                 <type name="drawing" type="DrawingContainer" />
2237                 <type name="slideSchemeColorSchemeAtom" type="SlideSchemeColorSchemeAtom" />
2238                 <type name="slideNameAtom" type="SlideNameAtom" optional="true" />
2239                 <type name="slideProgTagsContainer" type="SlideProgTagsContainer" optional="true" />
2240                 <type name="rgRoundTripMainMaster" type="RoundTripMainMasterRecord" array="true" />
2241                 <type name="templateNameAtom" type="TemplateNameAtom" optional="true" />
2242                 <!-- MS-PPT spec. violation - SlideProgTagsContainer presence NOT documented -->
2243                 <type name="unknown3" type="SlideProgTagsContainer" optional="true" />
2244         </struct>
2245         <struct name="SchemeListElementColorSchemeAtom">
2246                 <type name="rh" type="RecordHeader">
2247                         <limitation name="recVer" value="0" />
2248                         <limitation name="recInstance" value="6" />
2249                         <limitation name="recType" value="0x7F0" />
2250                         <limitation name="recLen" value="0x20" />
2251                 </type>
2252                 <type name="rgSchemeColor" type="ColorStruct" count="8" />
2253         </struct>
2254         <struct name="RoundTripOArtTextStyles12Atom">
2255                 <type name="rh" type="RecordHeader">
2256                         <limitation name="recVer" value="0" />
2257                         <limitation name="recInstance" value="0" />
2258                         <limitation name="recType" value="0x423" />
2259                 </type>
2260                 <uint8 name="todo" count="rh.recLen" />
2261         </struct>
2262         <struct name="SlideNameAtom">
2263                 <type name="rh" type="RecordHeader">
2264                         <limitation name="recVer" value="0" />
2265                         <limitation name="recInstance" value="3" />
2266                         <limitation name="recType" value="0x0FBA" />
2267                         <limitation name="recLen" expression="%2==0" />
2268                 </type>
2269                 <uint16 name="slideName" count="rh.recLen/2" />
2270         </struct>
2271         <struct name="SlideProgTagsContainer">
2272                 <type name="rh" type="RecordHeader">
2273                         <limitation name="recVer" value="0xF" />
2274                         <limitation name="recInstance" value="0" />
2275                         <limitation name="recType" value="0x1388" />
2276                 </type>
2277                 <type name="rgTypeRec" type="SlideProgTagsSubContainerOrAtom"
2278                         array="true" size="rh.recLen" />
2279         </struct>
2280         <struct name="SlideProgTagsSubContainerOrAtom">
2281                 <choice name="anon">
2282                         <type type="ProgStringTagContainer" />
2283                         <type type="SlideProgBinaryTagContainer" />
2284                 </choice>
2285         </struct>
2286         <struct name="SlideProgBinaryTagContainer">
2287                 <type name="rh" type="RecordHeader">
2288                         <limitation name="recVer" value="0xF" />
2289                         <limitation name="recInstance" value="0" />
2290                         <limitation name="recType" value="0x138A" />
2291                 </type>
2292                 <type name="rec" type="SlideProgBinaryTagSubContainerOrAtom" />
2293         </struct>
2294         <struct name="SlideProgBinaryTagSubContainerOrAtom">
2295                 <choice name="anon">
2296                         <type type="PP9SlideBinaryTagExtension" />
2297                         <!--
2298                                 PP12 must come first because it fail if it is a PP10, but PP10 does
2299                                 not fail if it is PP12.
2300                         -->
2301                         <type type="PP12SlideBinaryTagExtension" />
2302                         <type type="PP10SlideBinaryTagExtension" />
2303                         <type type="UnknownBinaryTag" />
2304                 </choice>
2305         </struct>
2306         <struct name="PP9SlideBinaryTagExtension">
2307                 <type name="rh" type="RecordHeader">
2308                         <limitation name="recVer" value="0" />
2309                         <limitation name="recInstance" value="0" />
2310                         <limitation name="recType" value="0xFBA" />
2311                         <limitation name="recLen" value="0xE" />
2312                 </type>
2313                 <uint16 name="tagName" count="7">
2314                         <!-- <limitation value='"___PPT9"' /> -->
2315                 </uint16>
2316                 <type name="rhData" type="RecordHeader">
2317                         <limitation name="recVer" value="0" />
2318                         <limitation name="recInstance" value="0" />
2319                         <limitation name="recType" value="0x138B" />
2320                 </type>
2321                 <type name="rgTextMasterStyleAtom" type="TextMasterStyle9Atom"
2322                         array="true" />
2323         </struct>
2324         <struct name="PP10SlideBinaryTagExtension">
2325                 <type name="rh" type="RecordHeader">
2326                         <limitation name="recVer" value="0" />
2327                         <limitation name="recInstance" value="0" />
2328                         <limitation name="recType" value="0xFBA" />
2329                         <limitation name="recLen" value="0x10" />
2330                 </type>
2331                 <uint16 name="tagName" count="8">
2332                         <!-- <limitation value='"___PPT10"' />-->
2333                 </uint16>
2334                 <type name="rhData" type="RecordHeader">
2335                         <limitation name="recVer" value="0" />
2336                         <limitation name="recInstance" value="0" />
2337                         <limitation name="recType" value="0x138B" />
2338                 </type>
2339                 <type name="rgTextMasterStyleAtom" type="TextMasterStyle10Atom"
2340                         array="true" />
2341                 <type name="rgComment10Container" type="Comment10Container"
2342                         array="true" />
2343                 <type name="linkedSlideAtom" type="LinkedSlide10Atom" optional="true" />
2344                 <type name="rgLinkedShape10Atom" type="LinkedShape10Atom" array="true" />
2345                 <type name="slideFlagsAtom" type="SlideFlags10Atom" optional="true" />
2346                 <type name="slideTimeAtom" type="SlideTime10Atom" optional="true" />
2347                 <!-- MS-PPT spec. violation - Structures with a member with
2348                      rectype 0x101d occur in strange places. -->
2349                 <type name="unknown" type="UnknownSlideContainerChild" optional="true" />
2350                 <type name="hashCodeAtom" type="HashCode10Atom" optional="true" />
2351                 <type name="extTimeNodeContainer" type="ExtTimeNodeContainer"
2352                         optional="true" />
2353                 <type name="buildListContainer" type="BuildListContainer"
2354                         optional="true" />
2355         </struct>
2356         <struct name="Comment10Container">
2357                 <type name="rh" type="RecordHeader">
2358                         <limitation name="recVer" value="0xF" />
2359                         <limitation name="recInstance" value="0" />
2360                         <limitation name="recType" value="0x2EE0" />
2361                 </type>
2362                 <uint8 name="todo" count="rh.recLen" />
2363         </struct>
2364         <struct name="Comment10Atom">
2365                 <type name="rh" type="RecordHeader">
2366                         <limitation name="recVer" value="0" />
2367                         <limitation name="recInstance" value="0" />
2368                         <limitation name="recType" value="0x2EE1" />
2369                         <limitation name="recLen" value="0x1C" />
2370                 </type>
2371                 <uint8 name="todo" count="rh.recLen" />
2372         </struct>
2373         <struct name="LinkedSlide10Atom">
2374                 <type name="rh" type="RecordHeader">
2375                         <limitation name="recVer" value="0" />
2376                         <limitation name="recInstance" value="0" />
2377                         <limitation name="recType" value="0x2EE7" />
2378                         <limitation name="recLen" value="8" />
2379                 </type>
2380                 <uint32 name="linkedSlideIdRef" />
2381                 <int32 name="clinkedShapes" />
2382         </struct>
2383         <struct name="LinkedShape10Atom">
2384                 <type name="rh" type="RecordHeader">
2385                         <limitation name="recVer" value="0" />
2386                         <limitation name="recInstance" value="0" />
2387                         <limitation name="recType" value="0x2EE6" />
2388                         <limitation name="recLen" value="8" />
2389                 </type>
2390                 <uint32 name="shapeIdRef" />
2391                 <uint32 name="linkedShapeIdRef" />
2392         </struct>
2393         <struct name="SlideFlags10Atom">
2394                 <type name="rh" type="RecordHeader">
2395                         <limitation name="recVer" value="0" />
2396                         <limitation name="recInstance" value="0" />
2397                         <limitation name="recType" value="0x2EEA" />
2398                         <limitation name="recLen" value="4" />
2399                 </type>
2400                 <bit name="fPreserveMaster" />
2401                 <bit name="fOverrideMasterAnimatino" />
2402                 <uint14 name="unuseda" />
2403                 <uint16 name="unusedb" />
2404         </struct>
2405         <struct name="SlideTime10Atom">
2406                 <type name="rh" type="RecordHeader">
2407                         <limitation name="recVer" value="0" />
2408                         <limitation name="recInstance" value="0" />
2409                         <limitation name="recType" value="0x2EEB" />
2410                         <limitation name="recLen" value="8" />
2411                 </type>
2412                 <type name="fileTime" type="FILETIME" />
2413         </struct>
2414         <struct name="HashCode10Atom">
2415                 <type name="rh" type="RecordHeader">
2416                         <limitation name="recVer" value="0" />
2417                         <limitation name="recInstance" value="0" />
2418                         <limitation name="recType" value="0x2B00" />
2419                         <limitation name="recLen" value="4" />
2420                 </type>
2421                 <uint32 name="hash" />
2422         </struct>
2423         <struct name="ExtTimeNodeContainer">
2424                 <type name="rh" type="RecordHeader">
2425                         <limitation name="recVer" value="0xF" />
2426                         <limitation name="recInstance" value="1" />
2427                         <limitation name="recType" value="0xF144" />
2428                 </type>
2429                 <uint8 name="todo" count="rh.recLen" />
2430         </struct>
2431         <struct name="BuildListContainer">
2432                 <type name="rh" type="RecordHeader">
2433                         <limitation name="recVer" value="0xF" />
2434                         <limitation name="recInstance" value="0" />
2435                         <limitation name="recType" value="0x2B02" />
2436                 </type>
2437                 <uint8 name="todo" count="rh.recLen" />
2438         </struct>
2439         <struct name="PP12SlideBinaryTagExtension">
2440                 <type name="rh" type="RecordHeader">
2441                         <limitation name="recVer" value="0" />
2442                         <limitation name="recInstance" value="0" />
2443                         <limitation name="recType" value="0xFBA" />
2444                         <limitation name="recLen" value="0x10" />
2445                 </type>
2446                 <uint16 name="tagName" count="8">
2447                         <!-- <limitation value='"___PPT12"' />-->
2448                 </uint16>
2449                 <type name="rhData" type="RecordHeader">
2450                         <limitation name="recVer" value="0" />
2451                         <limitation name="recInstance" value="0" />
2452                         <limitation name="recType" value="0x138B" />
2453                 </type>
2454                 <type name="roundTripHeaderFooterDefaultsAtom" type="RoundTripHeaderFooterDefaults12Atom"
2455                         condition="rhData.recLen &gt; 8" />
2456         </struct>
2457         <struct name="RoundTripHeaderFooterDefaults12Atom">
2458                 <type name="rh" type="RecordHeader">
2459                         <limitation name="recVer" value="0" />
2460                         <limitation name="recInstance" value="0" />
2461                         <limitation name="recType" value="0x0424" />
2462                         <limitation name="recLen" value="1" />
2463                 </type>
2464                 <bit name="fIncludeDate" />
2465                 <bit name="fIncludeFooter" />
2466                 <bit name="fIncludeHeader" />
2467                 <bit name="fIncludeSlideNumber" />
2468                 <uint4 name="reserved" />
2469         </struct>
2470         <struct name="ProgStringTagContainer">
2471                 <type name="rh" type="RecordHeader">
2472                         <limitation name="recVer" value="0xF" />
2473                         <limitation name="recInstance" value="0" />
2474                         <limitation name="recType" value="0x1389" />
2475                 </type>
2476                 <type name="tagNameAtom" type="TagNameAtom" />
2477                 <type name="tagValueAtom" type="TagValueAtom" optional="true" />
2478         </struct>
2479         <struct name="TagNameAtom">
2480                 <type name="rh" type="RecordHeader">
2481                         <limitation name="recVer" value="0" />
2482                         <limitation name="recInstance" value="0" />
2483                         <limitation name="recType" value="0xFBA" />
2484                         <limitation name="recLen" expression="%2 == 0 " />
2485                 </type>
2486                 <uint16 name="tagName" count="rh.recLen/2" />
2487         </struct>
2488         <struct name="TagValueAtom">
2489                 <type name="rh" type="RecordHeader">
2490                         <limitation name="recVer" value="0" />
2491                         <limitation name="recInstance" value="1" />
2492                         <limitation name="recType" value="0xFBA" />
2493                 </type>
2494                 <uint16 name="tagValue" count="rh.recLen/2" />
2495         </struct>
2496         <struct name="RoundTripMainMasterRecord">
2497                 <type name="rh" type="RecordHeader">
2498                         <limitation name="recType"
2499                                 value="0x41C|0x40E|0x040F|0x41E|0x0423|0x2B0D|0x2B0B|0x041D|0x2B0C|0x101D" />
2500                 </type>
2501                 <uint8 name="todo" count="rh.recLen" />
2502         </struct>
2503         <struct name="TemplateNameAtom">
2504                 <type name="rh" type="RecordHeader">
2505                         <limitation name="recVer" value="0" />
2506                         <limitation name="recInstance" value="2" />
2507                         <limitation name="recType" value="0x0FBA" />
2508                         <limitation name="recLen" expression="%2==0" />
2509                 </type>
2510                 <uint16 name="templateName" count="rh.recLen/2" />
2511         </struct>
2512         <struct name="SlideContainer">
2513                 <type name="rh" type="RecordHeader">
2514                         <limitation name="recVer" value="0xF" />
2515                         <limitation name="recInstance" value="0x0" />
2516                         <limitation name="recType" value="0x03EE" />
2517                 </type>
2518                 <type name="slideAtom" type="SlideAtom" />
2519                 <type name="slideShowSlideInfoAtom" type="SlideShowSlideInfoAtom"
2520                         optional="true" />
2521                 <type name="perSlideHFContainer" type="PerSlideHeadersFootersContainer"
2522                         optional="true" />
2523                 <type name="rtSlideSyncInfo12" type="RoundTripSlideSyncInfo12Container"
2524                         optional="true" />
2525                 <type name="drawing" type="DrawingContainer" />
2526                 <type name="slideSchemeColorSchemeAtom" type="SlideSchemeColorSchemeAtom" />
2527                 <type name="slideNameAtom" type="SlideNameAtom" optional="true" />
2528                 <type name="slideProgTagsContainer" type="SlideProgTagsContainer"
2529                         optional="true" />
2530                 <!--
2531                         perhaps this undocumented type is part fo the RoundTripSlideRecord
2532                         collection
2533                 -->
2534                 <type name="unknown" type="UnknownSlideContainerChild" optional="true" />
2535                 <type name="rgRoundTripSlide" type="RoundTripSlideRecord" array="true" />
2536                 <!--
2537                         perhaps this undocumented type is part fo the RoundTripSlideRecord
2538                         collection
2539                 -->
2540                 <type name="unknown2" type="UnknownSlideContainerChild" optional="true" />
2541         </struct>
2542         <struct name="RoundTripSlideSyncInfo12Container">
2543                 <type name="rh" type="RecordHeader">
2544                         <limitation name="recVer" value="0xF" />
2545                         <limitation name="recInstance" value="0" />
2546                         <limitation name="recType" value="0x3714" />
2547                 </type>
2548                 <uint8 name="todo" count="rh.recLen" />
2549         </struct>
2550         <struct name="NotesContainer">
2551                 <type name="rh" type="RecordHeader">
2552                         <limitation name="recVer" value="0xF" />
2553                         <limitation name="recInstance" value="0" />
2554                         <limitation name="recType" value="0x03F0" />
2555                 </type>
2556                 <type name="notesAtom" type="NotesAtom" />
2557                 <!-- MS-PPT spec. violation - perSlideHFContainer presence NOT documented. -->
2558                 <type name="perSlideHFContainer" type="PerSlideHeadersFootersContainer" optional="true" />
2559                 <type name="drawing" type="DrawingContainer" />
2560                 <type name="slideSchemeColorSchemeAtom" type="SlideSchemeColorSchemeAtom" />
2561                 <type name="slideNameAtom" type="SlideNameAtom" optional="true" />
2562                 <type name="slideProgTagsContainer" type="SlideProgTagsContainer" optional="true" />
2563                 <!-- MS-PPT spec. violation - perSlideHFContainer presence NOT documented. -->
2564                 <type name="perSlideHFContainer2" type="PerSlideHeadersFootersContainer" optional="true" />
2565                 <type name="rgNotesRoundTripAtom" type="NotesRoundTripAtom" array="true" />
2566         </struct>
2567         <struct name="NotesAtom">
2568                 <type name="rh" type="RecordHeader">
2569                         <limitation name="recVer" value="1" />
2570                         <limitation name="recInstance" value="0" />
2571                         <limitation name="recType" value="0x3F1" />
2572                         <limitation name="recLen" value="0x8" />
2573                 </type>
2574                 <uint32 name="slideIdRef" />
2575                 <type name="slideFlags" type="SlideFlags" />
2576                 <uint16 name="unused" />
2577         </struct>
2578         <struct name="SlideFlags">
2579                 <bit name="fMasterObjects" />
2580                 <bit name="fMasterScheme" />
2581                 <bit name="fMasterBackground" />
2582                 <uint5 name="unused1" />
2583                 <uint8 name="unused2" />
2584         </struct>
2585         <struct name="NotesRoundTripAtom">
2586                 <type name="rh" type="RecordHeader">
2587                         <limitation name="recVer" value="0" />
2588                         <limitation name="recInstance" value="0" />
2589                         <limitation name="recType" value="0x40E|0x40F|0x427" />
2590                 </type>
2591                 <uint8 name="todo" count="rh.recLen" />
2592         </struct>
2593         <struct name="HandoutContainer">
2594                 <type name="rh" type="RecordHeader">
2595                         <limitation name="recVer" value="0xF" />
2596                         <limitation name="recInstance" value="0" />
2597                         <limitation name="recType" value="0x0FC9" />
2598                 </type>
2599                 <uint8 name="todo" count="rh.recLen" />
2600         </struct>
2601         <struct name="ExControlStg">
2602                 <type name="rh" type="RecordHeader">
2603                         <limitation name="recVer" value="0" />
2604                         <limitation name="recInstance" value="0|1" />
2605                         <limitation name="recType" value="0x1011" />
2606                 </type>
2607                 <uint8 name="todo" count="rh.recLen" />
2608         </struct>
2609         <struct name="ExOleObjStg">
2610                 <type name="rh" type="RecordHeader">
2611                         <limitation name="recVer" value="0" />
2612                         <limitation name="recInstance" value="0" />
2613                         <limitation name="recType" value="0x1011" />
2614                 </type>
2615                 <uint8 name="todo" count="rh.recLen" />
2616         </struct>
2617         <struct name="UserEditAtom">
2618                 <type name="rh" type="RecordHeader">
2619                         <limitation name="recVer" value="0" />
2620                         <limitation name="recInstance" value="0" />
2621                         <limitation name="recType" value="0x0FF5" />
2622                         <limitation name="recLen" value="0x1C|0x20" />
2623                 </type>
2624                 <uint32 name="lastSlideIdRef" />
2625                 <uint16 name="version" />
2626                 <uint8 name="minorVersion">
2627                         <limitation value="0" />
2628                 </uint8>
2629                 <uint8 name="majorVersion">
2630                         <limitation value="3" />
2631                 </uint8>
2632                 <uint32 name="offsetLastEdit">
2633                         <!--  TODO: check with offset of this edit -->
2634                 </uint32>
2635                 <uint32 name="offsetPersistDirectory">
2636                         <!-- <limitation expression="&gt;offsetLastEdit" /> -->
2637                         <!--
2638                                 TODO: check with offset of this edit
2639                         -->
2640                 </uint32>
2641                 <uint32 name="docPersistIdRef">
2642                         <limitation value="1" />
2643                 </uint32>
2644                 <uint32 name="persistIdSeed" />
2645                 <uint16 name="lastView">
2646                         <limitation expression="&lt;=18" />
2647                 </uint16>
2648                 <uint16 name="unused" />
2649                 <uint32 name="encryptSessionPersistIdRef" condition="rh.recLen==32" />
2650                 <type name="zeroPadding" type="ZeroByte" array="true" />
2651         </struct>
2652         <struct name="VbaProjectStg">
2653                 <type name="rh" type="RecordHeader">
2654                         <limitation name="recVer" value="0" />
2655                         <limitation name="recInstance" value="0|1" />
2656                         <limitation name="recType" value="0x1011" />
2657                 </type>
2658                 <uint8 name="todo" count="rh.recLen" />
2659         </struct>
2660         <struct name="SlideAtom">
2661                 <type name="rh" type="RecordHeader">
2662                         <limitation name="recVer" value="0x2" />
2663                         <limitation name="recInstance" value="0x0" />
2664                         <limitation name="recType" value="0x03EF" />
2665                         <limitation name="recLen" value="0x18" />
2666                 </type>
2667                 <uint32 name="geom" />
2668                 <uint8 name="rgPlaceholderTypes" count="8" />
2669                 <uint32 name="masterIdRef" />
2670                 <uint32 name="notesIdRef" />
2671                 <type name="slideFlags" type="SlideFlags" />
2672                 <uint16 name="unused" />
2673         </struct>
2674         <struct name="SlideShowSlideInfoAtom">
2675                 <type name="rh" type="RecordHeader">
2676                         <limitation name="recVer" value="0" />
2677                         <limitation name="recInstance" value="0" />
2678                         <limitation name="recType" value="0x03F9" />
2679                         <limitation name="recLen" value="0x10" />
2680                 </type>
2681                 <uint32 name="slidetime" />
2682                 <uint32 name="slideIdRef" />
2683                 <uint8 name="effectDirection" />
2684                 <uint8 name="effectType" />
2685                 <bit name="fManualAdvance" />
2686                 <bit name="reserved" />
2687                 <bit name="fHidden" />
2688                 <bit name="reserved2" />
2689                 <bit name="fSound" />
2690                 <bit name="reserved3" />
2691                 <bit name="fLoopSound" />
2692                 <bit name="reserved4" />
2693                 <bit name="fStopSound" />
2694                 <bit name="freserved5" />
2695                 <bit name="fAutoAdvance" />
2696                 <bit name="reserved6" />
2697                 <bit name="fCursorVisible" />
2698                 <uint3 name="reserved7" />
2699                 <uint8 name="speed" />
2700                 <uint8 name="unused" count="3" />
2701         </struct>
2702         <struct name="SlideShowDocInfoAtom">
2703                 <type name="rh" type="RecordHeader">
2704                         <limitation name="recVer" value="1" />
2705                         <limitation name="recInstance" value="0" />
2706                         <limitation name="recType" value="0x0401" />
2707                         <limitation name="recLen" value="0x50" />
2708                 </type>
2709                 <type name="penColor" type="ColorIndexStruct" />
2710                 <int32 name="restartTime" />
2711                 <int16 name="startSlide">
2712                         <limitation expression="&gt;=0" />
2713                 </int16>
2714                 <int16 name="endSlide">
2715                         <limitation expression="&gt;=0" />
2716                 </int16>
2717                 <uint8 name="namedShow" count="64" />
2718                 <bit name="fAutoAdvance" />
2719                 <bit name="fWillSkipBuilds" />
2720                 <bit name="fUseSlideRange" />
2721                 <bit name="fDocUseNamedShow" />
2722                 <bit name="fShowBrowseMode" />
2723                 <bit name="fKioskMode" />
2724                 <bit name="fWillSkipNarration" />
2725                 <bit name="fLoopContinuously" />
2726                 <bit name="fHideScrollBar" />
2727                 <uint7 name="reserved">
2728                         <!--
2729                                 This value should be zero, but it is not always zero in practice.
2730                         -->
2731                 </uint7>
2732                 <uint16 name="unused" />
2733         </struct>
2734         <struct name="DrawingGroupContainer">
2735                 <type name="rh" type="RecordHeader">
2736                         <limitation name="recVer" value="0xF" />
2737                         <limitation name="recInstance" value="0" />
2738                         <limitation name="recType" value="0x040B" />
2739                 </type>
2740                 <type name="OfficeArtDgg" type="OfficeArtDggContainer" />
2741         </struct>
2742         <struct name="DrawingContainer">
2743                 <type name="rh" type="RecordHeader">
2744                         <limitation name="recVer" value="0xF" />
2745                         <limitation name="recInstance" value="0" />
2746                         <limitation name="recType" value="0x040C" />
2747                 </type>
2748                 <type name="OfficeArtDg" type="OfficeArtDgContainer" />
2749         </struct>
2750         <struct name="SlideSchemeColorSchemeAtom">
2751                 <type name="rh" type="RecordHeader">
2752                         <limitation name="recVer" value="0" />
2753                         <limitation name="recInstance" value="1" />
2754                         <limitation name="recType" value="0x07F0" />
2755                         <limitation name="recLen" value="0x20" />
2756                 </type>
2757                 <type name="rgSchemeColor" type="ColorStruct" count="8" />
2758         </struct>
2759         <struct name="RoundTripSlideRecord">
2760                 <type name="rh" type="RecordHeader">
2761                         <!--  value 0x2b0c is deprecated, but can occur -->
2762                         <limitation name="recType"
2763                                 value="0x40E|0x40F|0x41D|0x3714|0x2B0D|0x2B0B|0x2B0C|0x422" />
2764                         <!--
2765                                 0x40E|0x40F|0x41C|0x41D|0x41E|0x41F|0x420|0x422|0x423|0x425|0x426|0x427|0x428"
2766                         -->
2767                 </type>
2768                 <uint8 name="todo" count="rh.recLen" />
2769         </struct>
2770         <struct name="NamedShowsContainer">
2771                 <type name="rh" type="RecordHeader">
2772                         <limitation name="recVer" value="0xF" />
2773                         <limitation name="recInstance" value="0" />
2774                         <limitation name="recType" value="0x410" />
2775                 </type>
2776                 <uint8 name="todo" count="rh.recLen" />
2777         </struct>
2778         <struct name="SummaryContainer">
2779                 <type name="rh" type="RecordHeader">
2780                         <limitation name="recVer" value="0xF" />
2781                         <limitation name="recInstance" value="0" />
2782                         <limitation name="recType" value="0x402" />
2783                 </type>
2784                 <uint8 name="todo" count="rh.recLen" />
2785         </struct>
2786         <struct name="DocRoutingSlipAtom">
2787                 <type name="rh" type="RecordHeader">
2788                         <limitation name="recVer" value="0" />
2789                         <limitation name="recInstance" value="0" />
2790                         <limitation name="recType" value="0x406" />
2791                 </type>
2792                 <uint8 name="todo" count="rh.recLen" />
2793         </struct>
2794         <struct name="PrintOptionsAtom">
2795                 <type name="rh" type="RecordHeader">
2796                         <limitation name="recVer" value="0" />
2797                         <limitation name="recInstance" value="0" />
2798                         <limitation name="recType" value="0x1770" />
2799                         <limitation name="recLen" value="5" />
2800                 </type>
2801                 <uint8 name="todo" count="rh.recLen" />
2802         </struct>
2803         <struct name="RoundTripCustomTableStyles12Atom">
2804                 <type name="rh" type="RecordHeader">
2805                         <!--  value 0xF is not documented -->
2806                         <limitation name="recVer" value="0|0xF" />
2807                         <limitation name="recInstance" value="0" />
2808                         <limitation name="recType" value="0x428" />
2809                 </type>
2810                 <uint8 name="todo" count="rh.recLen" />
2811         </struct>
2812         <struct name="RoundTripCompositeMasterId12Atom">
2813                 <type name="rh" type="RecordHeader">
2814                         <limitation name="recVer" value="0" />
2815                         <limitation name="recInstance" value="0" />
2816                         <limitation name="recType" value="0x41D" />
2817                         <limitation name="recLen" value="4" />
2818                 </type>
2819                 <uint32 name="compositeMasterId" />
2820         </struct>
2821         <struct name="ColorStruct">
2822                 <uint8 name="red" />
2823                 <uint8 name="green" />
2824                 <uint8 name="blue" />
2825                 <uint8 name="unused" />
2826         </struct>
2827         <struct name="ExObjListContainer">
2828                 <type name="rh" type="RecordHeader">
2829                         <limitation name="recVer" value="0xF" />
2830                         <limitation name="recInstance" value="0x0" />
2831                         <limitation name="recType" value="0x0409" />
2832                         <limitation name="recLen" expression="&gt;=12" />
2833                 </type>
2834                 <type name="exObjListAtom" type="ExObjListAtom" />
2835                 <type name="rgChildRec" type="ExObjListSubContainer" array="true"
2836                         size="rh.recLen-12" />
2837         </struct>
2838         <struct name="ExObjListAtom">
2839                 <type name="rh" type="RecordHeader">
2840                         <limitation name="recVer" value="0x0" />
2841                         <limitation name="recInstance" value="0x0" />
2842                         <limitation name="recType" value="0x040A" />
2843                         <limitation name="recLen" value="4" />
2844                 </type>
2845                 <int32 name="exObjIdSeed">
2846                         <limitation expression="&gt;=1" />
2847                         <!--
2848                                 TODO:exObjIdSeed (4 bytes): A signed integer that specifies a seed
2849                                 for creating a new ExObjId or ExHyperlinkId value. It MUST be
2850                                 greater than or equal to the largest ExObjId value in the file as
2851                                 specified by the ExMediaAtom record or ExOleObjAtom record and MUST
2852                                 be greater than or equal to the largest ExHyperlinkId value in the
2853                                 file as specified by the ExHyperlinkAtom record. It MUST be greater
2854                                 than or equal to 0x00000001.
2855                         -->
2856                 </int32>
2857         </struct>
2858         <struct name="ExObjListSubContainer">
2859                 <choice name="anon">
2860                         <type type="ExAviMovieContainer" />
2861                         <type type="ExCDAudioContainer" />
2862                         <type type="ExControlContainer" />
2863                         <type type="ExHyperlinkContainer" />
2864                         <type type="ExMCIMovieContainer" />
2865                         <type type="ExMIDIAudioContainer" />
2866                         <type type="ExOleEmbedContainer" />
2867                         <type type="ExOleLinkContainer" />
2868                         <type type="ExWAVAudioEmbeddedContainer" />
2869                         <type type="ExWAVAudioLinkContainer" />
2870                         <type type="UnknownExObjListSubContainerChild" />
2871                 </choice>
2872         </struct>
2873         <struct name="ExAviMovieContainer">
2874                 <type name="rh" type="OfficeArtRecordHeader">
2875                         <limitation name="recVer" value="0xF" />
2876                         <limitation name="recInstance" value="0" />
2877                         <limitation name="recType" value="0x1006" />
2878                 </type>
2879                 <uint8 name="todo" count="rh.recLen" />
2880         </struct>
2881         <struct name="ExCDAudioContainer">
2882                 <type name="rh" type="OfficeArtRecordHeader">
2883                         <limitation name="recVer" value="0xF" />
2884                         <limitation name="recInstance" value="0" />
2885                         <limitation name="recType" value="0x100E" />
2886                 </type>
2887                 <uint8 name="todo" count="rh.recLen" />
2888         </struct>
2889         <struct name="ExControlContainer">
2890                 <type name="rh" type="OfficeArtRecordHeader">
2891                         <limitation name="recVer" value="0xF" />
2892                         <limitation name="recInstance" value="0" />
2893                         <limitation name="recType" value="0xFEE" />
2894                 </type>
2895                 <type name="exControlAtom" type="ExControlAtom" />
2896                 <type name="exOleObjAtom" type="ExOleObjAtom" />
2897                 <type name="menuNameAtom" type="MenuNameAtom" optional="true" />
2898                 <type name="progIdAtom" type="ProgIDAtom" optional="true" />
2899                 <type name="clipboardNameAtom" type="ClipboardNameAtom" optional="true" />
2900                 <type name="metafile" type="MetafileBlob" optional="true" />
2901         </struct>
2902         <struct name="ExControlAtom">
2903                 <type name="rh" type="OfficeArtRecordHeader">
2904                         <limitation name="recVer" value="0" />
2905                         <limitation name="recInstance" value="0" />
2906                         <limitation name="recType" value="0xFFB" />
2907                         <limitation name="recLen" value="4" />
2908                 </type>
2909                 <uint32 name="slideIdRef" />
2910         </struct>
2911         <struct name="ExHyperlinkContainer">
2912                 <type name="rh" type="OfficeArtRecordHeader">
2913                         <limitation name="recVer" value="0xF" />
2914                         <limitation name="recInstance" value="0" />
2915                         <limitation name="recType" value="0xFD7" />
2916                 </type>
2917                 <type name="exHyperlinkAtom" type="ExHyperlinkAtom" />
2918                 <type name="friendlyNameAtom" type="FriendlyNameAtom" optional="true" />
2919                 <type name="targetAtom" type="TargetAtom" optional="true" />
2920                 <type name="locationAtom" type="LocationAtom" optional="true" />
2921         </struct>
2922         <struct name="ExHyperlinkAtom">
2923                 <type name="rh" type="OfficeArtRecordHeader">
2924                         <limitation name="recVer" value="0" />
2925                         <limitation name="recInstance" value="0" />
2926                         <limitation name="recType" value="0xFD3" />
2927                         <limitation name="recLen" value="4" />
2928                 </type>
2929                 <uint32 name="exHyperLinkId" />
2930         </struct>
2931         <struct name="FriendlyNameAtom">
2932                 <type name="rh" type="OfficeArtRecordHeader">
2933                         <limitation name="recVer" value="0" />
2934                         <limitation name="recInstance" value="0" />
2935                         <limitation name="recType" value="0xFBA" />
2936                         <limitation name="recLen" expression="%2==0" />
2937                 </type>
2938                 <uint16 name="friendlyName" count="rh.recLen/2" />
2939         </struct>
2940         <struct name="TargetAtom">
2941                 <type name="rh" type="OfficeArtRecordHeader">
2942                         <limitation name="recVer" value="0" />
2943                         <limitation name="recInstance" value="1" />
2944                         <limitation name="recType" value="0xFBA" />
2945                         <limitation name="recLen" expression="%2==0" />
2946                 </type>
2947                 <uint16 name="target" count="rh.recLen/2" />
2948         </struct>
2949         <struct name="LocationAtom">
2950                 <type name="rh" type="OfficeArtRecordHeader">
2951                         <limitation name="recVer" value="0" />
2952                         <limitation name="recInstance" value="3" />
2953                         <limitation name="recType" value="0xFBA" />
2954                         <limitation name="recLen" expression="%2==0" />
2955                 </type>
2956                 <uint16 name="location" count="rh.recLen/2" />
2957         </struct>
2958         <struct name="ExMCIMovieContainer">
2959                 <type name="rh" type="OfficeArtRecordHeader">
2960                         <limitation name="recVer" value="0xF" />
2961                         <limitation name="recInstance" value="0" />
2962                         <limitation name="recType" value="0x1007" />
2963                 </type>
2964                 <uint8 name="todo" count="rh.recLen" />
2965         </struct>
2966         <struct name="ExMIDIAudioContainer">
2967                 <type name="rh" type="OfficeArtRecordHeader">
2968                         <limitation name="recVer" value="0xF" />
2969                         <limitation name="recInstance" value="0" />
2970                         <limitation name="recType" value="0x100D" />
2971                 </type>
2972                 <uint8 name="todo" count="rh.recLen" />
2973         </struct>
2974         <struct name="ExWAVAudioEmbeddedContainer">
2975                 <type name="rh" type="OfficeArtRecordHeader">
2976                         <limitation name="recVer" value="0xF" />
2977                         <limitation name="recInstance" value="0" />
2978                         <limitation name="recType" value="0x100F" />
2979                 </type>
2980                 <uint8 name="todo" count="rh.recLen" />
2981         </struct>
2982         <struct name="ExWAVAudioLinkContainer">
2983                 <type name="rh" type="OfficeArtRecordHeader">
2984                         <limitation name="recVer" value="0xF" />
2985                         <limitation name="recInstance" value="0" />
2986                         <limitation name="recType" value="0x1010" />
2987                 </type>
2988                 <uint8 name="todo" count="rh.recLen" />
2989         </struct>
2990         <struct name="UnknownExObjListSubContainerChild">
2991                 <type name="rh" type="OfficeArtRecordHeader">
2992                         <limitation name="recVer" value="0xF" />
2993                         <limitation name="recInstance" value="0" />
2994                         <limitation name="recType" value="0xFEA" />
2995                 </type>
2996                 <uint8 name="todo" count="rh.recLen" />
2997         </struct>
2998         <struct name="ExOleLinkContainer">
2999                 <type name="rh" type="RecordHeader">
3000                         <limitation name="recVer" value="0xF" />
3001                         <limitation name="recInstance" value="0x0" />
3002                         <limitation name="recType" value="0x0FCE" />
3003                 </type>
3004                 <type name="exOleLinkAtom" type="ExOleLinkAtom" />
3005                 <type name="exOleObjAtom" type="ExOleObjAtom" />
3006                 <type name="menuNameAtom" type="MenuNameAtom" optional="true" />
3007                 <type name="progIdAtom" type="ProgIDAtom" optional="true" />
3008                 <type name="clipboardNameAtom" type="ClipboardNameAtom" optional="true" />
3009                 <type name="metafile" type="MetafileBlob" optional="true" />
3010         </struct>
3011         <struct name="ExOleEmbedContainer">
3012                 <type name="rh" type="RecordHeader">
3013                         <limitation name="recVer" value="0xF" />
3014                         <limitation name="recInstance" value="0x0" />
3015                         <limitation name="recType" value="0x0FCC" />
3016                 </type>
3017                 <type name="exOleEmbedAtom" type="ExOleEmbedAtom" />
3018                 <type name="exOleObjAtom" type="ExOleObjAtom" />
3019                 <type name="menuNameAtom" type="MenuNameAtom" optional="true" />
3020                 <type name="progIdAtom" type="ProgIDAtom" optional="true" />
3021                 <type name="clipboardNameAtom" type="ClipboardNameAtom" optional="true" />
3022                 <type name="metafile" type="MetafileBlob" optional="true" />
3023         </struct>
3024         <struct name="ExOleLinkAtom">
3025                 <type name="rh" type="RecordHeader">
3026                         <limitation name="recVer" value="0x0" />
3027                         <limitation name="recInstance" value="0x0" />
3028                         <limitation name="recType" value="0x0FD1" />
3029                         <limitation name="recLen" value="0xC" />
3030                 </type>
3031                 <uint32 name="slideIdRef">
3032                         <!--
3033                                 A 4-byte unsigned integer that specifies a reference to a
3034                                 presentation slide. It MUST be 0x00000000 or equal to the value of
3035                                 the slideId field of a SlidePersistAtom record. The value 0x00000000
3036                                 specifies a null reference.
3037                         -->
3038                 </uint32>
3039                 <uint32 name="oleUpdateMode" />
3040                 <uint32 name="unused" />
3041         </struct>
3042         <struct name="ExOleObjAtom">
3043                 <type name="rh" type="RecordHeader">
3044                         <limitation name="recVer" value="0x1" />
3045                         <limitation name="recInstance" value="0x0" />
3046                         <limitation name="recType" value="0x0FC3" />
3047                         <limitation name="recLen" value="0x18" />
3048                 </type>
3049                 <uint32 name="drawAspect" />
3050                 <uint32 name="type" />
3051                 <uint32 name="exObjId" />
3052                 <uint32 name="subType" />
3053                 <uint32 name="persistIdRef" />
3054                 <uint32 name="unused" />
3055         </struct>
3056         <struct name="MenuNameAtom">
3057                 <type name="rh" type="RecordHeader">
3058                         <limitation name="recVer" value="0x0" />
3059                         <limitation name="recInstance" value="0x1" />
3060                         <limitation name="recType" value="0x0FBA" />
3061                         <limitation name="recLen" expression="%2 == 0 " />
3062                 </type>
3063                 <uint8 name="menuName" count="rh.recLen" />
3064         </struct>
3065         <struct name="ProgIDAtom">
3066                 <type name="rh" type="RecordHeader">
3067                         <limitation name="recVer" value="0x0" />
3068                         <limitation name="recInstance" value="0x2" />
3069                         <limitation name="recType" value="0x0FBA" />
3070                         <limitation name="recLen" expression="%2 == 0 " />
3071                 </type>
3072                 <uint8 name="progId" count="rh.recLen" />
3073         </struct>
3074         <struct name="ClipboardNameAtom">
3075                 <type name="rh" type="RecordHeader">
3076                         <limitation name="recVer" value="0x0" />
3077                         <limitation name="recInstance" value="0x3" />
3078                         <limitation name="recType" value="0x0FBA" />
3079                         <limitation name="recLen" expression="%2 == 0 " />
3080                 </type>
3081                 <uint8 name="clipboardName" count="rh.recLen" />
3082         </struct>
3083         <struct name="MetafileBlob">
3084                 <type name="rh" type="RecordHeader">
3085                         <limitation name="recVer" value="0x0" />
3086                         <limitation name="recInstance" value="0x0" />
3087                         <limitation name="recType" value="0x0FC1" />
3088                         <limitation name="recLen" expression="&gt;16" />
3089                 </type>
3090                 <int16 name="mm" />
3091                 <int16 name="xExt" />
3092                 <int16 name="yExt" />
3093                 <uint8 name="data" count="rh.recLen-6" />
3094         </struct>
3095 
3096         <!-- NOTE: The OfficeArtDggContainer provides default values => all
3097              containers except the header should be optional, which violates
3098              the MS-ODRAW spec. -->
3099         <struct name="OfficeArtDggContainer">
3100                 <type name="rh" type="OfficeArtRecordHeader">
3101                         <limitation name="recVer" value="0xF" />
3102                         <limitation name="recInstance" value="0x0" />
3103                         <limitation name="recType" value="0x0F000" />
3104                 </type>
3105                 <type name="drawingGroup" type="OfficeArtFDGGBlock" />
3106                 <type name="blipStore" type="OfficeArtBStoreContainer" optional="true" />
3107                 <type name="drawingPrimaryOptions" type="OfficeArtFOPT" optional="true" />
3108                 <type name="drawingTertiaryOptions" type="OfficeArtTertiaryFOPT" optional="true" />
3109                 <type name="colorMRU" type="OfficeArtColorMRUContainer" optional="true" />
3110                 <type name="splitColors" type="OfficeArtSplitMenuColorContainer" optional="true" />
3111                 <!--
3112                     Sometimes the order is messed up in openoffice generated documents
3113                     This second blipSore takes that into account, but is NOT according to
3114                     the specification.
3115                 -->
3116                 <type name="blipStore2" type="OfficeArtBStoreContainer" optional="true" />
3117                 <!-- MS-ODRAW spec. violation. -->
3118                 <type name="unknown" type="OfficeArtTertiaryFOPT" optional="true" />
3119         </struct>
3120         <struct name="OfficeArtDgContainer">
3121                 <type name="rh" type="OfficeArtRecordHeader">
3122                         <limitation name="recVer" value="0xF" />
3123                         <limitation name="recInstance" value="0x0" />
3124                         <limitation name="recType" value="0xF002" />
3125                 </type>
3126                 <type name="drawingData" type="OfficeArtFDG" optional="true" />
3127                 <type name="regroupItems" type="OfficeArtFRITContainer" optional="true" />
3128                 <type name="groupShape" type="OfficeArtSpgrContainer" optional="true" />
3129                 <type name="shape" type="OfficeArtSpContainer" optional="true" />
3130                 <type name="deletedShapes" type="OfficeArtSpgrContainerFileBlock" array="true" />
3131                 <type name="solvers" type="OfficeArtSolverContainer" optional="true" />
3132         </struct>
3133         <struct name="OfficeArtFDGGBlock">
3134                 <type name="rh" type="OfficeArtRecordHeader">
3135                         <limitation name="recVer" value="0x0" />
3136                         <limitation name="recInstance" value="0x0" />
3137                         <limitation name="recType" value="0x0F006" />
3138                 </type>
3139                 <type name="head" type="OfficeArtFDGG">
3140                         <!-- <limitation expression="cidcl==rh.recLen/8.0-2" /> FIX!-->
3141                 </type>
3142                 <type name="Rgidcl" type="OfficeArtIDCL" count="head.cidcl-1" />
3143         </struct>
3144         <struct name="OfficeArtFDGG">
3145                 <uint32 name="spidMax">
3146                         <limitation expression="&lt;67098623" />
3147                 </uint32>
3148                 <uint32 name="cidcl">
3149                         <limitation expression="&lt;268435455" />
3150                 </uint32>
3151                 <uint32 name="cspSaved" />
3152                 <uint32 name="cdgSaved" />
3153         </struct>
3154         <struct name="OfficeArtFDG">
3155                 <type name="rh" type="OfficeArtRecordHeader">
3156                         <limitation name="recVer" value="0x0" />
3157                         <limitation name="recInstance" expression="&lt;=4094" />
3158                         <limitation name="recType" value="0x0F008" />
3159                         <limitation name="recLen" value="8" />
3160                 </type>
3161                 <uint32 name="csp" />
3162                 <uint32 name="spidCur" />
3163         </struct>
3164         <struct name="OfficeArtFRITContainer">
3165                 <type name="rh" type="OfficeArtRecordHeader">
3166                         <limitation name="recVer" value="0" />
3167                         <limitation name="recType" value="0xF118" />
3168                         <limitation expression="recLen==4*recInstance" />
3169                 </type>
3170                 <type name="rgfrit" type="OfficeArtFRIT" count="rh.recInstance" />
3171         </struct>
3172         <struct name="OfficeArtFRIT">
3173                 <uint16 name="fridNew" />
3174                 <uint16 name="fridOld" />
3175         </struct>
3176         <struct name="OfficeArtBStoreContainer">
3177                 <type name="rh" type="OfficeArtRecordHeader">
3178                         <limitation name="recVer" value="0xF" />
3179                         <limitation name="recType" value="0x0F001" />
3180                 </type>
3181                 <!--
3182                         OOo can set number of instances to a wrong value, so use rh.recLen
3183                 -->
3184                 <type name="rgfb" type="OfficeArtBStoreContainerFileBlock" array="true"
3185                         size="rh.recLen" />
3186         </struct>
3187         <struct name="OfficeArtSpgrContainer">
3188                 <type name="rh" type="OfficeArtRecordHeader">
3189                         <limitation name="recVer" value="0xF" />
3190                         <limitation name="recInstance" value="0" />
3191                         <limitation name="recType" value="0x0F003" />
3192                 </type>
3193                 <type name="rgfb" type="OfficeArtSpgrContainerFileBlock" array="true"
3194                         size="rh.recLen" />
3195         </struct>
3196         <struct name="OfficeArtSpgrContainerFileBlock">
3197                 <choice name="anon">
3198                         <type type="OfficeArtSpContainer" />
3199                         <type type="OfficeArtSpgrContainer" />
3200                         <type type="OfficeArtFSP" />
3201                         <type type="OfficeArtFSPGR" />
3202                         <type type="OfficeArtClientAnchor" />
3203                         <type type="OfficeArtClientData" />
3204                 </choice>
3205         </struct>
3206         <!-- MS-ODRAW spec. violation - child containers NOT documented as optional -->
3207         <struct name="OfficeArtSpContainer">
3208                 <type name="rh" type="OfficeArtRecordHeader">
3209                         <limitation name="recVer" value="0xF" />
3210                         <limitation name="recInstance" value="0" />
3211                         <limitation name="recType" value="0x0F004" />
3212                 </type>
3213                 <type name="shapeGroup" type="OfficeArtFSPGR" optional="true" />
3214                 <type name="shapeProp" type="OfficeArtFSP" />
3215                 <type name="deletedshape" type="OfficeArtFPSPL" optional="true" />
3216                 <type name="shapePrimaryOptions" type="OfficeArtFOPT" optional="true" />
3217                 <type name="shapeSecondaryOptions1" type="OfficeArtSecondaryFOPT" optional="true" />
3218                 <type name="shapeTertiaryOptions1" type="OfficeArtTertiaryFOPT" optional="true" />
3219                 <type name="childAnchor" type="OfficeArtChildAnchor" optional="true" />
3220                 <type name="clientAnchor" type="OfficeArtClientAnchor" optional="true" />
3221                 <type name="clientData" type="OfficeArtClientData" optional="true" />
3222                 <type name="clientTextbox" type="OfficeArtClientTextBox" optional="true" />
3223                 <!-- MS-ODRAW spec. violation - (MS Office2003/GoogleDocs specific). -->
3224                 <type name="shapePrimaryOptions2" type="OfficeArtFOPT" optional="true" />
3225                 <!-- This field MUST NOT exist if shapeSecondaryOptions1 exists. -->
3226                 <type name="shapeSecondaryOptions2" type="OfficeArtSecondaryFOPT" optional="true" />
3227                 <!-- This field MUST NOT exist if shapeTertiaryOptions1 exists. -->
3228                 <type name="shapeTertiaryOptions2" type="OfficeArtTertiaryFOPT" optional="true" />
3229                 <!-- MS-ODRAW spec. violation - unknown container (MSOffice2003
3230                      specific).  It has the same length as RTFDateTimeMCAtom. -->
3231                 <type name="unknown" type="UnknownTextContainerChild" optional="true" />
3232         </struct>
3233         <struct name="OfficeArtInlineSpContainer">
3234                 <type name="shape" type="OfficeArtSpContainer" />
3235                 <type name="rgfb" type="OfficeArtBStoreContainerFileBlock" array="true" />
3236         </struct>
3237         <struct name="OfficeArtSolverContainer">
3238                 <type name="rh" type="OfficeArtRecordHeader">
3239                         <limitation name="recVer" value="0xF" />
3240                         <limitation name="recType" value="0xF005" />
3241                 </type>
3242                 <type name="rgfb" type="OfficeArtSolverContainerFileBlock" array="true" />
3243         </struct>
3244         <struct name="OfficeArtSolverContainerFileBlock">
3245                 <choice name="anon">
3246                         <type type="OfficeArtFConnectorRule" />
3247                         <type type="OfficeArtFArcRule" />
3248                         <type type="OfficeArtFCalloutRule" />
3249                 </choice>
3250         </struct>
3251         <struct name="OfficeArtFConnectorRule">
3252                 <type name="rh" type="OfficeArtRecordHeader">
3253                         <limitation name="recVer" value="1" />
3254                         <limitation name="recInstance" value="0" />
3255                         <limitation name="recType" value="0xF012" />
3256                         <limitation name="recLen" value="0x18" />
3257                 </type>
3258                 <uint32 name="ruid" />
3259                 <uint32 name="spidA" />
3260                 <uint32 name="spidB" />
3261                 <uint32 name="spidC" />
3262                 <uint32 name="cptiA" />
3263                 <uint32 name="cptiB" />
3264         </struct>
3265         <struct name="OfficeArtFArcRule">
3266                 <type name="rh" type="OfficeArtRecordHeader">
3267                         <limitation name="recVer" value="0" />
3268                         <limitation name="recInstance" value="0" />
3269                         <limitation name="recType" value="0xF014" />
3270                         <limitation name="recLen" value="8" />
3271                 </type>
3272                 <uint32 name="ruid" />
3273                 <uint32 name="spid" />
3274         </struct>
3275         <struct name="OfficeArtFCalloutRule">
3276                 <type name="rh" type="OfficeArtRecordHeader">
3277                         <limitation name="recVer" value="0" />
3278                         <limitation name="recInstance" value="0" />
3279                         <limitation name="recType" value="0xF017" />
3280                         <limitation name="recLen" value="8" />
3281                 </type>
3282                 <uint32 name="ruid" />
3283                 <uint32 name="spid" />
3284         </struct>
3285         <struct name="OfficeArtFSPGR">
3286                 <type name="rh" type="OfficeArtRecordHeader">
3287                         <limitation name="recVer" value="0x1" />
3288                         <limitation name="recInstance" value="0" />
3289                         <limitation name="recType" value="0x0F009" />
3290                         <limitation name="recLen" value="0x10" />
3291                 </type>
3292                 <int32 name="xLeft" />
3293                 <int32 name="yTop" />
3294                 <int32 name="xRight" />
3295                 <int32 name="yBottom" />
3296         </struct>
3297         <struct name="OfficeArtFSP">
3298                 <type name="rh" type="OfficeArtRecordHeader">
3299                         <limitation name="recVer" value="0x2" />
3300                         <limitation name="recInstance" expression="&lt;= 202" />
3301                         <limitation name="recType" value="0x0F00A" />
3302                         <limitation name="recLen" value="8" />
3303                 </type>
3304                 <uint32 name="spid" />
3305                 <bit name="fGroup" />
3306                 <bit name="fChild" />
3307                 <bit name="fPatriarch" />
3308                 <bit name="fDeleted" />
3309                 <bit name="fOleShape" />
3310                 <bit name="fHaveMaster" />
3311                 <bit name="fFlipH" />
3312                 <bit name="fFlipV" />
3313                 <bit name="fConnector" />
3314                 <bit name="fHaveAnchor" />
3315                 <bit name="fBackground" />
3316                 <bit name="fHaveSpt" />
3317                 <uint20 name="unused1" />
3318         </struct>
3319         <struct name="OfficeArtFOPT">
3320                 <type name="rh" type="OfficeArtRecordHeader">
3321                         <limitation name="recVer" value="0x3" />
3322                         <limitation name="recType" value="0x0F00B" />
3323                 </type>
3324                 <type name="fopt" type="OfficeArtFOPTEChoice" count="rh.recInstance" />
3325                 <uint8 name="complexData" count="rh.recLen-6*rh.recInstance" />
3326         </struct>
3327         <struct name="OfficeArtSecondaryFOPT">
3328                 <type name="rh" type="OfficeArtRecordHeader">
3329                         <limitation name="recVer" value="3" />
3330                         <limitation name="recType" value="0xF121" />
3331                 </type>
3332                 <type name="fopt" type="OfficeArtFOPTEChoice" count="rh.recInstance" />
3333                 <uint8 name="complexData" count="rh.recLen-6*rh.recInstance" />
3334         </struct>
3335         <struct name="OfficeArtTertiaryFOPT">
3336                 <type name="rh" type="OfficeArtRecordHeader">
3337                         <limitation name="recVer" value="3" />
3338                         <limitation name="recType" value="0xF122" />
3339                 </type>
3340                 <type name="fopt" type="OfficeArtFOPTEChoice" count="rh.recInstance" />
3341                 <uint8 name="complexData" count="rh.recLen-6*rh.recInstance" />
3342         </struct>
3343         <!-- This type is invented to make OPTE specific parsing possible -->
3344         <struct name="OfficeArtFOPTEChoice">
3345                 <choice name="anon">
3346                         <type type="Rotation" />
3347                         <type type="ProtectionBooleanProperties" />
3348                         <type type="ITxid" />
3349                         <type type="DxTextLeft" />
3350                         <type type="DyTextTop" />
3351                         <type type="DxTextRight" />
3352                         <type type="DyTextBottom" />
3353                         <type type="WrapText" />
3354                         <type type="AnchorText" />
3355                         <type type="TxflTextFlow" />
3356                         <type type="CdirFont" />
3357                         <type type="HspNext" />
3358                         <type type="Txdir" />
3359                         <type type="TextBooleanProperties" />
3360                         <type type="CropFromTop" />
3361                         <type type="CropFromBottom" />
3362                         <type type="CropFromLeft" />
3363                         <type type="CropFromRight" />
3364                         <type type="Pib" />
3365                         <type type="PibName" />
3366                         <type type="PibFlags" />
3367                         <type type="PictureTransparent" />
3368                         <type type="PictureContrast" />
3369                         <type type="PictureBrightness" />
3370                         <type type="BlipBooleanProperties" />
3371                         <type type="GeoLeft" />
3372                         <type type="GeoTop" />
3373                         <type type="GeoRight" />
3374                         <type type="GeoBottom" />
3375                         <type type="ShapePath" />
3376                         <type type="PVertices" />
3377                         <type type="PSegmentInfo" />
3378                         <type type="AdjustValue" />
3379                         <type type="Adjust2Value" />
3380                         <type type="Adjust3Value" />
3381                         <type type="Adjust4Value" />
3382                         <type type="Adjust5Value" />
3383                         <type type="Adjust6Value" />
3384                         <type type="Adjust7Value" />
3385                         <type type="Adjust8Value" />
3386                         <type type="GeometryBooleanProperties" />
3387                         <type type="FillType" />
3388                         <type type="FillColor" />
3389                         <type type="FillOpacity" />
3390                         <type type="FillBackColor" />
3391                         <type type="FillBackOpacity" />
3392                         <type type="FillCrMod" />
3393                         <type type="FillBlip" />
3394                         <type type="FillBlipName" />
3395                         <type type="FillBlipFlags" />
3396                         <type type="FillWidth" />
3397                         <type type="FillHeight" />
3398                         <type type="FillAngle" />
3399                         <type type="FillFocus" />
3400                         <type type="FillToLeft" />
3401                         <type type="FillToTop" />
3402                         <type type="FillToRight" />
3403                         <type type="FillToBottom" />
3404                         <type type="FillRectLeft" />
3405                         <type type="FillRectTop" />
3406                         <type type="FillRectRight" />
3407                         <type type="FillRectBottom" />
3408                         <type type="FillDztype" />
3409                         <type type="FillShadePreset" />
3410                         <type type="FillShadeColors" />
3411                         <type type="FillOriginX" />
3412                         <type type="FillOriginY" />
3413                         <type type="FillShapeOriginX" />
3414                         <type type="FillShapeOriginY" />
3415                         <type type="FillColorExt" />
3416                         <type type="FillBackColorExt" />
3417                         <type type="FillStyleBooleanProperties" />
3418                         <type type="LineColor" />
3419                         <type type="LineOpacity" />
3420                         <type type="LineBackColor" />
3421                         <type type="LineFillBlip" />
3422                         <type type="LineWidth" />
3423                         <type type="LineStyle" />
3424                         <type type="LineDashing" />
3425                         <type type="LineStartArrowhead" />
3426                         <type type="LineEndArrowhead" />
3427                         <type type="LineStartArrowWidth" />
3428                         <type type="LineStartArrowLength" />
3429                         <type type="LineEndArrowWidth" />
3430                         <type type="LineEndArrowLength" />
3431                         <type type="LineJoinStyle" />
3432                         <type type="LineEndCapStyle" />
3433                         <type type="LineStyleBooleanProperties" />
3434                         <type type="ShadowType" />
3435                         <type type="ShadowColor" />
3436                         <type type="ShadowOpacity" />
3437                         <type type="ShadowOffsetX" />
3438                         <type type="ShadowOffsetY" />
3439                         <type type="ShadowStyleBooleanProperties" />
3440                         <type type="HspMaster" />
3441                         <type type="Cxstyle" />
3442                         <type type="BWMode" />
3443                         <type type="ShapeBooleanProperties" />
3444                         <type type="DxyCalloutGap" />
3445                         <type type="Spcoa" />
3446                         <type type="Spcod" />
3447                         <type type="DxyCalloutDropSpecified" />
3448                         <type type="DxyCalloutLengthSpecified" />
3449                         <type type="CalloutBooleanProperties" />
3450                         <type type="PWrapPolygonVertices" />
3451                         <type type="DxWrapDistLeft" />
3452                         <type type="DyWrapDistTop" />
3453                         <type type="DxWrapDistRight" />
3454                         <type type="DyWrapDistBottom" />
3455                         <type type="LidRegroup" />
3456                         <type type="PosH" />
3457                         <type type="PosRelH" />
3458                         <type type="PosV" />
3459                         <type type="PosRelV" />
3460                         <type type="PctHR" />
3461                         <type type="AlignHR" />
3462                         <type type="DxHeightHR" />
3463                         <type type="DxWidthHR" />
3464                         <type type="BorderTopColor" />
3465                         <type type="BorderLeftColor" />
3466                         <type type="BorderBottomColor" />
3467                         <type type="BorderRightColor" />
3468                         <type type="GroupShapeBooleanProperties" />
3469                         <type type="WzFillId" />
3470                         <type type="DiagramBooleanProperties" />
3471                         <type type="OfficeArtFOPTE" />
3472                 </choice>
3473         </struct>
3474         <struct name="MSOPATHINFO">
3475                 <uint3 name="type" />
3476                 <uint13 name="segments" />
3477         </struct>
3478         <struct name="FixedPoint">
3479                 <!--
3480                         strangely the fraction part seems to come first this conflicts with
3481                         what the spec suggests
3482                 -->
3483                 <uint16 name="fractional" />
3484                 <int16 name="integral" />
3485         </struct>
3486         <!-- Properties: BEGIN -->
3487         <!-- Transform Property Set -->
3488         <struct name="Rotation">
3489                 <type name="opid" type="OfficeArtFOPTEOPID">
3490                         <limitation name="opid" value="0x0004" />
3491                         <limitation name="fBid" value="false" />
3492                         <limitation name="fComplex" value="false" />
3493                 </type>
3494                 <type name="rotation" type="FixedPoint" />
3495         </struct>
3496         <!-- Protection -->
3497         <struct name="ProtectionBooleanProperties">
3498                 <type name="opid" type="OfficeArtFOPTEOPID">
3499                         <limitation name="opid" value="0x007F" />
3500                         <limitation name="fBid" value="false" />
3501                         <limitation name="fComplex" value="false" />
3502                 </type>
3503                 <bit name="fLockAgainstGrouping" />
3504                 <bit name="fLockAdjustHandles" />
3505                 <bit name="fLockText" />
3506                 <bit name="fLockVertices" />
3507                 <bit name="fLockCropping" />
3508                 <bit name="fLockAgainstSelect" />
3509                 <bit name="fLockPosition" />
3510                 <bit name="fLockAspectRatio" />
3511                 <bit name="fLockRotation" />
3512                 <bit name="fLockAgainstUngrouping" />
3513                 <uint6 name="unused6" />
3514                 <bit name="fUsefLockAgainstGrouping" />
3515                 <bit name="fUseLockAdjustHandles" />
3516                 <bit name="fUseLockText" />
3517                 <bit name="fUsefLockVertices" />
3518                 <bit name="fUsefLockCropping" />
3519                 <bit name="fUsefLockAgainstSelect" />
3520                 <bit name="fUsefLockPosition" />
3521                 <bit name="fUsefLockAspectRatio" />
3522                 <bit name="fUsefLockRotation" />
3523                 <bit name="fUsefLockAgainstUngrouping" />
3524                 <uint6 name="unused2" />
3525         </struct>
3526         <!-- Text Property Set -->
3527         <struct name="ITxid">
3528                 <type name="opid" type="OfficeArtFOPTEOPID">
3529                         <limitation name="opid" value="0x0080" />
3530                         <limitation name="fBid" value="false" />
3531                         <limitation name="fComplex" value="false" />
3532                 </type>
3533                 <int32 name="iTxid" />
3534         </struct>
3535         <struct name="DxTextLeft">
3536                 <type name="opid" type="OfficeArtFOPTEOPID">
3537                         <limitation name="opid" value="0x0081" />
3538                         <limitation name="fBid" value="false" />
3539                         <limitation name="fComplex" value="false" />
3540                 </type>
3541                 <int32 name="dxTextLeft" />
3542         </struct>
3543         <struct name="DyTextTop">
3544                 <type name="opid" type="OfficeArtFOPTEOPID">
3545                         <limitation name="opid" value="0x0082" />
3546                         <limitation name="fBid" value="false" />
3547                         <limitation name="fComplex" value="false" />
3548                 </type>
3549                 <int32 name="dyTextTop" />
3550         </struct>
3551         <struct name="DxTextRight">
3552                 <type name="opid" type="OfficeArtFOPTEOPID">
3553                         <limitation name="opid" value="0x0083" />
3554                         <limitation name="fBid" value="false" />
3555                         <limitation name="fComplex" value="false" />
3556                 </type>
3557                 <int32 name="dxTextRight" />
3558         </struct>
3559         <struct name="DyTextBottom">
3560                 <type name="opid" type="OfficeArtFOPTEOPID">
3561                         <limitation name="opid" value="0x0084" />
3562                         <limitation name="fBid" value="false" />
3563                         <limitation name="fComplex" value="false" />
3564                 </type>
3565                 <int32 name="dyTextBottom" />
3566         </struct>
3567         <struct name="WrapText">
3568                 <type name="opid" type="OfficeArtFOPTEOPID">
3569                         <limitation name="opid" value="0x0085" />
3570                         <limitation name="fBid" value="false" />
3571                         <limitation name="fComplex" value="false" />
3572                 </type>
3573                 <uint32 name="wrapText">
3574                         <limitation expression="&lt;5" />
3575                 </uint32>
3576         </struct>
3577         <struct name="AnchorText">
3578                 <type name="opid" type="OfficeArtFOPTEOPID">
3579                         <limitation name="opid" value="0x0087" />
3580                         <limitation name="fBid" value="false" />
3581                         <limitation name="fComplex" value="false" />
3582                 </type>
3583                 <uint32 name="anchorText">
3584                         <limitation expression="&lt;=9" />
3585                 </uint32>
3586         </struct>
3587         <struct name="TxflTextFlow">
3588                 <type name="opid" type="OfficeArtFOPTEOPID">
3589                         <limitation name="opid" value="0x0088" />
3590                         <limitation name="fBid" value="false" />
3591                         <limitation name="fComplex" value="false" />
3592                 </type>
3593                 <uint32 name="txflTextFlow">
3594                         <limitation expression="&lt;=5" />
3595                 </uint32>
3596         </struct>
3597         <struct name="CdirFont">
3598                 <type name="opid" type="OfficeArtFOPTEOPID">
3599                         <limitation name="opid" value="0x0089" />
3600                         <limitation name="fBid" value="false" />
3601                         <limitation name="fComplex" value="false" />
3602                 </type>
3603                 <uint32 name="cdirFont">
3604                         <limitation expression="&lt;=3" />
3605                 </uint32>
3606         </struct>
3607         <struct name="HspNext">
3608                 <type name="opid" type="OfficeArtFOPTEOPID">
3609                         <limitation name="opid" value="0x008A" />
3610                         <limitation name="fBid" value="false" />
3611                         <limitation name="fComplex" value="false" />
3612                 </type>
3613                 <uint32 name="hspNext" />
3614         </struct>
3615         <struct name="Txdir">
3616                 <type name="opid" type="OfficeArtFOPTEOPID">
3617                         <limitation name="opid" value="0x008B" />
3618                         <limitation name="fBid" value="false" />
3619                         <limitation name="fComplex" value="false" />
3620                 </type>
3621                 <uint32 name="txdir">
3622                         <limitation expression="&lt;=2" />
3623                 </uint32>
3624         </struct>
3625         <struct name="TextBooleanProperties">
3626                 <type name="opid" type="OfficeArtFOPTEOPID">
3627                         <limitation name="opid" value="0x00BF" />
3628                         <limitation name="fBid" value="false" />
3629                         <limitation name="fComplex" value="false" />
3630                 </type>
3631                 <bit name="unused1" />
3632                 <bit name="fFitShapeToText" />
3633                 <bit name="unused2" />
3634                 <bit name="fAutoTextMargin" />
3635                 <bit name="fSelectText" />
3636                 <uint3 name="unused3a" />
3637                 <uint8 name="unused3b" />
3638                 <bit name="unused4" />
3639                 <bit name="fUsefFitShapeToText" />
3640                 <bit name="unused5" />
3641                 <bit name="fUsefAutoTextMargin" />
3642                 <bit name="fUsefSelectText" />
3643                 <uint3 name="unused6a" />
3644                 <uint8 name="unused6b" />
3645         </struct>
3646         <!-- Blip Property Set -->
3647         <struct name="CropFromTop">
3648                 <type name="opid" type="OfficeArtFOPTEOPID">
3649                         <limitation name="opid" value="0x0100" />
3650                         <limitation name="fBid" value="false" />
3651                         <limitation name="fComplex" value="false" />
3652                 </type>
3653                 <type name="cropFromTop" type="FixedPoint" />
3654         </struct>
3655         <struct name="CropFromBottom">
3656                 <type name="opid" type="OfficeArtFOPTEOPID">
3657                         <limitation name="opid" value="0x0101" />
3658                         <limitation name="fBid" value="false" />
3659                         <limitation name="fComplex" value="false" />
3660                 </type>
3661                 <type name="cropFromBottom" type="FixedPoint" />
3662         </struct>
3663         <struct name="CropFromLeft">
3664                 <type name="opid" type="OfficeArtFOPTEOPID">
3665                         <limitation name="opid" value="0x0102" />
3666                         <limitation name="fBid" value="false" />
3667                         <limitation name="fComplex" value="false" />
3668                 </type>
3669                 <type name="cropFromLeft" type="FixedPoint" />
3670         </struct>
3671         <struct name="CropFromRight">
3672                 <type name="opid" type="OfficeArtFOPTEOPID">
3673                         <limitation name="opid" value="0x0103" />
3674                         <limitation name="fBid" value="false" />
3675                         <limitation name="fComplex" value="false" />
3676                 </type>
3677                 <type name="cropFromRight" type="FixedPoint" />
3678         </struct>
3679         <struct name="Pib">
3680                 <type name="opid" type="OfficeArtFOPTEOPID">
3681                         <limitation name="opid" value="0x0104" />
3682                 </type>
3683                 <uint32 name="pib" />
3684         </struct>
3685         <struct name="PibName">
3686                 <type name="opid" type="OfficeArtFOPTEOPID">
3687                         <limitation name="opid" value="0x0105" />
3688                 </type>
3689                 <uint32 name="pibName" />
3690         </struct>
3691         <struct name="PibFlags">
3692                 <type name="opid" type="OfficeArtFOPTEOPID">
3693                         <limitation name="opid" value="0x0106" />
3694                         <limitation name="fBid" value="false" />
3695                         <limitation name="fComplex" value="false" />
3696                 </type>
3697                 <uint32 name="pibFlags" />
3698         </struct>
3699         <struct name="PictureTransparent">
3700                 <type name="opid" type="OfficeArtFOPTEOPID">
3701                         <limitation name="opid" value="0x0107" />
3702                         <limitation name="fBid" value="false" />
3703                         <limitation name="fComplex" value="false" />
3704                 </type>
3705                 <type name="pictureTransparent" type="OfficeArtCOLORREF" />
3706         </struct>
3707         <struct name="PictureContrast">
3708                 <type name="opid" type="OfficeArtFOPTEOPID">
3709                         <limitation name="opid" value="0x0108" />
3710                         <limitation name="fBid" value="false" />
3711                         <limitation name="fComplex" value="false" />
3712                 </type>
3713                 <int32 name="pictureContrast" />
3714         </struct>
3715         <struct name="PictureBrightness">
3716                 <type name="opid" type="OfficeArtFOPTEOPID">
3717                         <limitation name="opid" value="0x0109" />
3718                         <limitation name="fBid" value="false" />
3719                         <limitation name="fComplex" value="false" />
3720                 </type>
3721                 <int32 name="pictureBrightness" />
3722         </struct>
3723         <struct name="BlipBooleanProperties">
3724                 <type name="opid" type="OfficeArtFOPTEOPID">
3725                         <limitation name="opid" value="0x013F" />
3726                         <limitation name="fBid" value="false" />
3727                         <limitation name="fComplex" value="false" />
3728                 </type>
3729                 <bit name="fPictureActive" />
3730                 <bit name="fPictureBiLevel" />
3731                 <bit name="fPictureGray" />
3732                 <bit name="fNoHitTestPicture" />
3733                 <bit name="fLooping" />
3734                 <bit name="fRewind" />
3735                 <bit name="fPicturePreserveGrays" />
3736                 <bit name="unused1a" />
3737                 <uint8 name="unused1b" />
3738                 <bit name="fUsefPictureActive" />
3739                 <bit name="fUsefPictureBiLevel" />
3740                 <bit name="fUsefPictureGray" />
3741                 <bit name="fUsefNoHitTestPicture" />
3742                 <bit name="fUsefLooping" />
3743                 <bit name="fUsefRewind" />
3744                 <bit name="fUsefPicturePreserveGrays" />
3745                 <bit name="unused2a" />
3746                 <uint8 name="unused2b" />
3747         </struct>
3748         <!-- Geometry Property Set -->
3749         <struct name="GeoLeft">
3750                 <type name="opid" type="OfficeArtFOPTEOPID">
3751                         <limitation name="opid" value="0x0140" />
3752                         <limitation name="fBid" value="false" />
3753                         <limitation name="fComplex" value="false" />
3754                 </type>
3755                 <int32 name="geoLeft" />
3756         </struct>
3757         <struct name="GeoTop">
3758                 <type name="opid" type="OfficeArtFOPTEOPID">
3759                         <limitation name="opid" value="0x0141" />
3760                         <limitation name="fBid" value="false" />
3761                         <limitation name="fComplex" value="false" />
3762                 </type>
3763                 <int32 name="geoTop" />
3764         </struct>
3765         <struct name="GeoRight">
3766                 <type name="opid" type="OfficeArtFOPTEOPID">
3767                         <limitation name="opid" value="0x0142" />
3768                         <limitation name="fBid" value="false" />
3769                         <limitation name="fComplex" value="false" />
3770                 </type>
3771                 <int32 name="geoRight" />
3772         </struct>
3773         <struct name="GeoBottom">
3774                 <type name="opid" type="OfficeArtFOPTEOPID">
3775                         <limitation name="opid" value="0x0143" />
3776                         <limitation name="fBid" value="false" />
3777                         <limitation name="fComplex" value="false" />
3778                 </type>
3779                 <int32 name="geoBottom" />
3780         </struct>
3781         <struct name="ShapePath">
3782                 <type name="opid" type="OfficeArtFOPTEOPID">
3783                         <limitation name="opid" value="0x0144" />
3784                         <limitation name="fBid" value="false" />
3785                         <limitation name="fComplex" value="false" />
3786                 </type>
3787                 <uint32 name="shapePath">
3788                         <limitation expression="&lt;=4" />
3789                 </uint32>
3790         </struct>
3791         <struct name="PVertices">
3792                 <type name="opid" type="OfficeArtFOPTEOPID">
3793                         <limitation name="opid" value="0x0145" />
3794                 </type>
3795                 <uint32 name="pVertices" />
3796         </struct>
3797         <struct name="PVertices_complex">
3798                 <uint16 name="nElems" />
3799                 <uint16 name="nElemsAlloc" />
3800                 <uint16 name="cbElem" />
3801                 <uint8 name="data" count="(cbElem==0xFFF0)?(4 * nElems):(cbElem * nElems)" />
3802         </struct>
3803         <struct name="PSegmentInfo">
3804                 <type name="opid" type="OfficeArtFOPTEOPID">
3805                         <limitation name="opid" value="0x0146" />
3806                 </type>
3807                 <uint32 name="pSegmentInfo" />
3808         </struct>
3809         <struct name="PSegmentInfo_complex">
3810                 <uint16 name="nElems" />
3811                 <uint16 name="nElemsAlloc" />
3812                 <uint16 name="cbElem" />
3813                 <uint8 name="data" count="(cbElem==0xFFF0)?(4 * nElems):(cbElem * nElems)" />
3814         </struct>
3815         <struct name="AdjustValue">
3816                 <type name="opid" type="OfficeArtFOPTEOPID">
3817                         <limitation name="opid" value="0x0147" />
3818                         <limitation name="fBid" value="false" />
3819                         <limitation name="fComplex" value="false" />
3820                 </type>
3821                 <int32 name="adjustvalue" />
3822         </struct>
3823         <struct name="Adjust2Value">
3824                 <type name="opid" type="OfficeArtFOPTEOPID">
3825                         <limitation name="opid" value="0x0148" />
3826                         <limitation name="fBid" value="false" />
3827                         <limitation name="fComplex" value="false" />
3828                 </type>
3829                 <int32 name="adjust2value" />
3830         </struct>
3831         <struct name="Adjust3Value">
3832                 <type name="opid" type="OfficeArtFOPTEOPID">
3833                         <limitation name="opid" value="0x0149" />
3834                         <limitation name="fBid" value="false" />
3835                         <limitation name="fComplex" value="false" />
3836                 </type>
3837                 <int32 name="adjust3value" />
3838         </struct>
3839         <struct name="Adjust4Value">
3840                 <type name="opid" type="OfficeArtFOPTEOPID">
3841                         <limitation name="opid" value="0x014A" />
3842                         <limitation name="fBid" value="false" />
3843                         <limitation name="fComplex" value="false" />
3844                 </type>
3845                 <int32 name="adjust4value" />
3846         </struct>
3847         <struct name="Adjust5Value">
3848                 <type name="opid" type="OfficeArtFOPTEOPID">
3849                         <limitation name="opid" value="0x014B" />
3850                         <limitation name="fBid" value="false" />
3851                         <limitation name="fComplex" value="false" />
3852                 </type>
3853                 <int32 name="adjust5value" />
3854         </struct>
3855         <struct name="Adjust6Value">
3856                 <type name="opid" type="OfficeArtFOPTEOPID">
3857                         <limitation name="opid" value="0x014C" />
3858                         <limitation name="fBid" value="false" />
3859                         <limitation name="fComplex" value="false" />
3860                 </type>
3861                 <int32 name="adjust6value" />
3862         </struct>
3863         <struct name="Adjust7Value">
3864                 <type name="opid" type="OfficeArtFOPTEOPID">
3865                         <limitation name="opid" value="0x014D" />
3866                         <limitation name="fBid" value="false" />
3867                         <limitation name="fComplex" value="false" />
3868                 </type>
3869                 <int32 name="adjust7value" />
3870         </struct>
3871         <struct name="Adjust8Value">
3872                 <type name="opid" type="OfficeArtFOPTEOPID">
3873                         <limitation name="opid" value="0x014E" />
3874                         <limitation name="fBid" value="false" />
3875                         <limitation name="fComplex" value="false" />
3876                 </type>
3877                 <int32 name="adjust8value" />
3878         </struct>
3879         <struct name="GeometryBooleanProperties">
3880                 <type name="opid" type="OfficeArtFOPTEOPID">
3881                         <limitation name="opid" value="0x017F" />
3882                         <limitation name="fBid" value="false" />
3883                         <limitation name="fComplex" value="false" />
3884                 </type>
3885                 <bit name="fFillOk" />
3886                 <bit name="fFillShadeShapeOK" />
3887                 <bit name="fGtextOK" />
3888                 <bit name="fLineOK" />
3889                 <bit name="f3DOK" />
3890                 <bit name="fShadowOK" />
3891                 <bit name="unuseda" />
3892                 <bit name="unusedb" />
3893                 <uint8 name="unused2" />
3894                 <bit name="fUsefFillOK" />
3895                 <bit name="fUsefFillShadeShapeOK" />
3896                 <bit name="fUsefGtextOK" />
3897                 <bit name="fUsefLineOK" />
3898                 <bit name="fUsef3DOK" />
3899                 <bit name="fUsefShadowOK" />
3900                 <bit name="unused3a" />
3901                 <bit name="unused3b" />
3902                 <uint8 name="unused4" />
3903         </struct>
3904         <!-- Fill Style Property Set -->
3905         <struct name="FillType">
3906                 <type name="opid" type="OfficeArtFOPTEOPID">
3907                         <limitation name="opid" value="0x0180" />
3908                         <limitation name="fBid" value="false" />
3909                         <limitation name="fComplex" value="false" />
3910                 </type>
3911                 <uint32 name="fillType">
3912                         <limitation expression="&lt;=9" />
3913                 </uint32>
3914         </struct>
3915         <struct name="FillColor">
3916                 <type name="opid" type="OfficeArtFOPTEOPID">
3917                         <limitation name="opid" value="0x0181" />
3918                         <limitation name="fBid" value="false" />
3919                         <limitation name="fComplex" value="false" />
3920                 </type>
3921                 <type name="fillColor" type="OfficeArtCOLORREF" />
3922         </struct>
3923         <struct name="FillOpacity">
3924                 <type name="opid" type="OfficeArtFOPTEOPID">
3925                         <limitation name="opid" value="0x0182" />
3926                         <limitation name="fBid" value="false" />
3927                         <limitation name="fComplex" value="false" />
3928                 </type>
3929                 <type name="fillOpacity" type="FixedPoint" />
3930         </struct>
3931         <struct name="FillBackColor">
3932                 <type name="opid" type="OfficeArtFOPTEOPID">
3933                         <limitation name="opid" value="0x0183" />
3934                         <limitation name="fBid" value="false" />
3935                         <limitation name="fComplex" value="false" />
3936                 </type>
3937                 <type name="fillBackColor" type="OfficeArtCOLORREF" />
3938         </struct>
3939         <struct name="FillBackOpacity">
3940                 <type name="opid" type="OfficeArtFOPTEOPID">
3941                         <limitation name="opid" value="0x0184" />
3942                         <limitation name="fBid" value="false" />
3943                         <limitation name="fComplex" value="false" />
3944                 </type>
3945                 <type name="fillBackOpacity" type="FixedPoint" />
3946         </struct>
3947         <struct name="FillCrMod">
3948                 <type name="opid" type="OfficeArtFOPTEOPID">
3949                         <limitation name="opid" value="0x0185" />
3950                         <limitation name="fBid" value="false" />
3951                         <limitation name="fComplex" value="false" />
3952                 </type>
3953                 <type name="fillCrMod" type="OfficeArtCOLORREF" />
3954         </struct>
3955         <struct name="FillBlip">
3956                 <type name="opid" type="OfficeArtFOPTEOPID">
3957                         <limitation name="opid" value="0x0186" />
3958                 </type>
3959                 <uint32 name="fillBlip" />
3960         </struct>
3961         <struct name="FillBlipName">
3962                 <type name="opid" type="OfficeArtFOPTEOPID">
3963                         <limitation name="opid" value="0x0187" />
3964                 </type>
3965                 <uint32 name="fillBlipName" />
3966         </struct>
3967         <struct name="FillBlipFlags">
3968                 <type name="opid" type="OfficeArtFOPTEOPID">
3969                         <limitation name="opid" value="0x0188" />
3970                         <limitation name="fBid" value="false" />
3971                         <limitation name="fComplex" value="false" />
3972                 </type>
3973                 <uint32 name="fillBlipFlags" />
3974         </struct>
3975         <struct name="FillWidth">
3976                 <type name="opid" type="OfficeArtFOPTEOPID">
3977                         <limitation name="opid" value="0x0189" />
3978                         <limitation name="fBid" value="false" />
3979                         <limitation name="fComplex" value="false" />
3980                 </type>
3981                 <int32 name="fillWidth" />
3982         </struct>
3983         <struct name="FillHeight">
3984                 <type name="opid" type="OfficeArtFOPTEOPID">
3985                         <limitation name="opid" value="0x018A" />
3986                         <limitation name="fBid" value="false" />
3987                         <limitation name="fComplex" value="false" />
3988                 </type>
3989                 <int32 name="fillHeight" />
3990         </struct>
3991         <struct name="FillAngle">
3992                 <type name="opid" type="OfficeArtFOPTEOPID">
3993                         <limitation name="opid" value="0x018B" />
3994                         <limitation name="fBid" value="false" />
3995                         <limitation name="fComplex" value="false" />
3996                 </type>
3997                 <type name="fillAngle" type="FixedPoint" />
3998         </struct>
3999         <struct name="FillFocus">
4000                 <type name="opid" type="OfficeArtFOPTEOPID">
4001                         <limitation name="opid" value="0x018C" />
4002                         <limitation name="fBid" value="false" />
4003                         <limitation name="fComplex" value="false" />
4004                 </type>
4005                 <int32 name="fillFocus" />
4006         </struct>
4007         <struct name="FillToLeft">
4008                 <type name="opid" type="OfficeArtFOPTEOPID">
4009                         <limitation name="opid" value="0x018D" />
4010                         <limitation name="fBid" value="false" />
4011                         <limitation name="fComplex" value="false" />
4012                 </type>
4013                 <type name="fillToLeft" type="FixedPoint" />
4014         </struct>
4015         <struct name="FillToTop">
4016                 <type name="opid" type="OfficeArtFOPTEOPID">
4017                         <limitation name="opid" value="0x018E" />
4018                         <limitation name="fBid" value="false" />
4019                         <limitation name="fComplex" value="false" />
4020                 </type>
4021                 <type name="fillToTop" type="FixedPoint" />
4022         </struct>
4023         <struct name="FillToRight">
4024                 <type name="opid" type="OfficeArtFOPTEOPID">
4025                         <limitation name="opid" value="0x018F" />
4026                         <limitation name="fBid" value="false" />
4027                         <limitation name="fComplex" value="false" />
4028                 </type>
4029                 <type name="fillToRight" type="FixedPoint" />
4030         </struct>
4031         <struct name="FillToBottom">
4032                 <type name="opid" type="OfficeArtFOPTEOPID">
4033                         <limitation name="opid" value="0x0190" />
4034                         <limitation name="fBid" value="false" />
4035                         <limitation name="fComplex" value="false" />
4036                 </type>
4037                 <type name="fillToBottom" type="FixedPoint" />
4038         </struct>
4039         <struct name="FillRectLeft">
4040                 <type name="opid" type="OfficeArtFOPTEOPID">
4041                         <limitation name="opid" value="0x0191" />
4042                         <limitation name="fBid" value="false" />
4043                         <limitation name="fComplex" value="false" />
4044                 </type>
4045                 <int32 name="fillRectLeft" />
4046         </struct>
4047         <struct name="FillRectTop">
4048                 <type name="opid" type="OfficeArtFOPTEOPID">
4049                         <limitation name="opid" value="0x0192" />
4050                         <limitation name="fBid" value="false" />
4051                         <limitation name="fComplex" value="false" />
4052                 </type>
4053                 <int32 name="fillRectTop" />
4054         </struct>
4055         <struct name="FillRectRight">
4056                 <type name="opid" type="OfficeArtFOPTEOPID">
4057                         <limitation name="opid" value="0x0193" />
4058                         <limitation name="fBid" value="false" />
4059                         <limitation name="fComplex" value="false" />
4060                 </type>
4061                 <int32 name="fillRectRight" />
4062         </struct>
4063         <struct name="FillRectBottom">
4064                 <type name="opid" type="OfficeArtFOPTEOPID">
4065                         <limitation name="opid" value="0x0194" />
4066                         <limitation name="fBid" value="false" />
4067                         <limitation name="fComplex" value="false" />
4068                 </type>
4069                 <int32 name="fillRectBottom" />
4070         </struct>
4071         <struct name="FillDztype">
4072                 <type name="opid" type="OfficeArtFOPTEOPID">
4073                         <limitation name="opid" value="0x0195" />
4074                         <limitation name="fBid" value="false" />
4075                         <limitation name="fComplex" value="false" />
4076                 </type>
4077                 <int32 name="fillDztype" />
4078         </struct>
4079         <struct name="FillShadePreset">
4080                 <type name="opid" type="OfficeArtFOPTEOPID">
4081                         <limitation name="opid" value="0x0196" />
4082                         <limitation name="fBid" value="false" />
4083                         <limitation name="fComplex" value="false" />
4084                 </type>
4085                 <int32 name="fillShadePreset" />
4086         </struct>
4087         <struct name="FillShadeColors">
4088                 <type name="opid" type="OfficeArtFOPTEOPID">
4089                         <limitation name="opid" value="0x0197" />
4090                 </type>
4091                 <uint32 name="fillShadeColors" />
4092         </struct>
4093         <struct name="FillShadeColors_complex">
4094                 <uint16 name="nElems" />
4095                 <uint16 name="nElemsAlloc" />
4096                 <uint16 name="cbElem" />
4097                 <uint8 name="data" count="(cbElem==0xFFF0)?(4 * nElems):(cbElem * nElems)" />
4098         </struct>
4099         <struct name="FillOriginX">
4100                 <type name="opid" type="OfficeArtFOPTEOPID">
4101                         <limitation name="opid" value="0x0198" />
4102                         <limitation name="fBid" value="false" />
4103                         <limitation name="fComplex" value="false" />
4104                 </type>
4105                 <type name="fillOriginX" type="FixedPoint" />
4106         </struct>
4107         <struct name="FillOriginY">
4108                 <type name="opid" type="OfficeArtFOPTEOPID">
4109                         <limitation name="opid" value="0x0199" />
4110                         <limitation name="fBid" value="false" />
4111                         <limitation name="fComplex" value="false" />
4112                 </type>
4113                 <type name="fillOriginY" type="FixedPoint" />
4114         </struct>
4115         <struct name="FillShapeOriginX">
4116                 <type name="opid" type="OfficeArtFOPTEOPID">
4117                         <limitation name="opid" value="0x019A" />
4118                         <limitation name="fBid" value="false" />
4119                         <limitation name="fComplex" value="false" />
4120                 </type>
4121                 <type name="fillShapeOriginX" type="FixedPoint" />
4122         </struct>
4123         <struct name="FillShapeOriginY">
4124                 <type name="opid" type="OfficeArtFOPTEOPID">
4125                         <limitation name="opid" value="0x019B" />
4126                         <limitation name="fBid" value="false" />
4127                         <limitation name="fComplex" value="false" />
4128                 </type>
4129                 <type name="fillShapeOriginY" type="FixedPoint" />
4130         </struct>
4131         <!--
4132         <struct name="FillShadeType">
4133                 <type name="opid" type="OfficeArtFOPTEOPID">
4134                         <limitation name="opid" value="0x019C" />
4135                         <limitation name="fBid" value="false" />
4136                         <limitation name="fComplex" value="false" />
4137                 </type>
4138                 <type name="fillShadeType" type="MSOSHADETYPE" />
4139         </struct>
4140         -->
4141         <struct name="FillColorExt">
4142                 <type name="opid" type="OfficeArtFOPTEOPID">
4143                         <limitation name="opid" value="0x019E" />
4144                         <limitation name="fBid" value="false" />
4145                         <limitation name="fComplex" value="false" />
4146                 </type>
4147                 <type name="fillColorExt" type="OfficeArtCOLORREF" />
4148         </struct>
4149         <!--
4150         <struct name="FillColorExtMod">
4151                 <type name="opid" type="OfficeArtFOPTEOPID">
4152                         <limitation name="opid" value="0x01A0" />
4153                         <limitation name="fBid" value="false" />
4154                         <limitation name="fComplex" value="false" />
4155                 </type>
4156                 <type name="fillColorExtMod" type="MSOTINTSHADE" />
4157         </struct>
4158         -->
4159         <struct name="FillBackColorExt">
4160                 <type name="opid" type="OfficeArtFOPTEOPID">
4161                         <limitation name="opid" value="0x01A2" />
4162                         <limitation name="fBid" value="false" />
4163                         <limitation name="fComplex" value="false" />
4164                 </type>
4165                 <type name="fillBackColorExt" type="OfficeArtCOLORREF" />
4166         </struct>
4167         <!--
4168         <struct name="FillBackColorExtMod">
4169                 <type name="opid" type="OfficeArtFOPTEOPID">
4170                         <limitation name="opid" value="0x01A5" />
4171                         <limitation name="fBid" value="false" />
4172                         <limitation name="fComplex" value="false" />
4173                 </type>
4174                 <type name="fillBackColorExtMod" type="MSOTINTSHADE" />
4175         </struct>
4176         -->
4177         <struct name="FillStyleBooleanProperties">
4178                 <type name="opid" type="OfficeArtFOPTEOPID">
4179                         <limitation name="opid" value="0x01BF" />
4180                         <limitation name="fBid" value="false" />
4181                         <limitation name="fComplex" value="false" />
4182                 </type>
4183                 <bit name="fNoFillHitTest" />
4184                 <bit name="fillUseRect" />
4185                 <bit name="fillShape" />
4186                 <bit name="fHitTestFill" />
4187                 <bit name="fFilled" />
4188                 <bit name="fUseShapeAnchor" />
4189                 <bit name="fRecolorFillAsPicture" />
4190                 <bit name="unused1a" />
4191                 <uint8 name="unused1b" />
4192                 <bit name="fUseNoFillHitTest" />
4193                 <bit name="fUseFillUseRect" />
4194                 <bit name="fUseFillShape" />
4195                 <bit name="fUseHitTestFill" />
4196                 <bit name="fUseFilled" />
4197                 <bit name="fUseUseShapeAnchor" />
4198                 <bit name="fUsefRecolorFillAsPicture" />
4199                 <bit name="unused2a" />
4200                 <uint8 name="unused2b" />
4201         </struct>
4202         <!--
4203         <struct name="MSOSHADETYPE">
4204                 <bit name="msoshadeNone" />
4205                 <bit name="msoshadeGamma" />
4206                 <bit name="msoshadeSigma" />
4207                 <bit name="msoshadeBand" />
4208                 <bit name="msoshadeOneColor" />
4209                 <uint13 name="unused1a" />
4210                 <uint13 name="unused1b" />
4211                 <bit name="unused1c" />
4212         </struct>
4213         -->
4214         <!--
4215         <struct name="MSOTINTSHADE">
4216                 <choice name="anon">
4217                         <type type="MSOCOLORMODUNDEFINED" />
4218                         <type type="MSOSHADE" />
4219                         <type type="MSOTINT" />
4220                 </choice>
4221         </struct>
4222         -->
4223         <!-- Line Style Property Set -->
4224         <struct name="LineColor">
4225                 <type name="opid" type="OfficeArtFOPTEOPID">
4226                         <limitation name="opid" value="0x01C0" />
4227                         <limitation name="fBid" value="false" />
4228                         <limitation name="fComplex" value="false" />
4229                 </type>
4230                 <type name="lineColor" type="OfficeArtCOLORREF" />
4231         </struct>
4232         <struct name="LineOpacity">
4233                 <type name="opid" type="OfficeArtFOPTEOPID">
4234                         <limitation name="opid" value="0x01C1" />
4235                         <limitation name="fBid" value="false" />
4236                         <limitation name="fComplex" value="false" />
4237                 </type>
4238                 <int32 name="lineOpacity">
4239                         <limitation expression="&gt;=0" />
4240                         <limitation expression="&lt;=65536" />
4241                 </int32>
4242         </struct>
4243         <struct name="LineBackColor">
4244                 <type name="opid" type="OfficeArtFOPTEOPID">
4245                         <limitation name="opid" value="0x01C2" />
4246                 </type>
4247                 <type name="lineBackColor" type="OfficeArtCOLORREF" />
4248         </struct>
4249         <struct name="LineFillBlip">
4250                 <type name="opid" type="OfficeArtFOPTEOPID">
4251                         <limitation name="opid" value="0x01C5" />
4252                 </type>
4253                 <uint32 name="lineFillBlip" />
4254         </struct>
4255         <struct name="LineWidth">
4256                 <type name="opid" type="OfficeArtFOPTEOPID">
4257                         <limitation name="opid" value="0x01CB" />
4258                         <limitation name="fBid" value="false" />
4259                         <limitation name="fComplex" value="false" />
4260                 </type>
4261                 <!--
4262                         default = 0x2535 english metric units. 1587.5 EMUs is 1 Master Units
4263                 -->
4264                 <uint32 name="lineWidth" />
4265         </struct>
4266         <struct name="LineStyle">
4267                 <type name="opid" type="OfficeArtFOPTEOPID">
4268                         <limitation name="opid" value="0x01CD" />
4269                         <limitation name="fBid" value="false" />
4270                         <limitation name="fComplex" value="false" />
4271                 </type>
4272                 <uint32 name="lineStyle" />
4273         </struct>
4274         <struct name="LineDashing">
4275                 <type name="opid" type="OfficeArtFOPTEOPID">
4276                         <limitation name="opid" value="0x01CE" />
4277                         <limitation name="fBid" value="false" />
4278                         <limitation name="fComplex" value="false" />
4279                 </type>
4280                 <uint32 name="lineDashing" />
4281         </struct>
4282         <struct name="LineStartArrowhead">
4283                 <type name="opid" type="OfficeArtFOPTEOPID">
4284                         <limitation name="opid" value="0x01D0" />
4285                         <limitation name="fBid" value="false" />
4286                         <limitation name="fComplex" value="false" />
4287                 </type>
4288                 <uint32 name="lineStartArrowhead">
4289                         <limitation expression="&lt;=8" />
4290                 </uint32>
4291         </struct>
4292         <struct name="LineEndArrowhead">
4293                 <type name="opid" type="OfficeArtFOPTEOPID">
4294                         <limitation name="opid" value="0x01D1" />
4295                         <limitation name="fBid" value="false" />
4296                         <limitation name="fComplex" value="false" />
4297                 </type>
4298                 <uint32 name="lineEndArrowhead">
4299                         <limitation expression="&lt;=8" />
4300                 </uint32>
4301         </struct>
4302         <struct name="LineStartArrowWidth">
4303                 <type name="opid" type="OfficeArtFOPTEOPID">
4304                         <limitation name="opid" value="0x01D2" />
4305                         <limitation name="fBid" value="false" />
4306                         <limitation name="fComplex" value="false" />
4307                 </type>
4308                 <uint32 name="lineStartArrowWidth" />
4309         </struct>
4310         <struct name="LineStartArrowLength">
4311                 <type name="opid" type="OfficeArtFOPTEOPID">
4312                         <limitation name="opid" value="0x01D3" />
4313                         <limitation name="fBid" value="false" />
4314                         <limitation name="fComplex" value="false" />
4315                 </type>
4316                 <uint32 name="lineStartArrowLength" />
4317         </struct>
4318         <struct name="LineEndArrowWidth">
4319                 <type name="opid" type="OfficeArtFOPTEOPID">
4320                         <limitation name="opid" value="0x01D4" />
4321                         <limitation name="fBid" value="false" />
4322                         <limitation name="fComplex" value="false" />
4323                 </type>
4324                 <uint32 name="lineEndArrowWidth" />
4325         </struct>
4326         <struct name="LineEndArrowLength">
4327                 <type name="opid" type="OfficeArtFOPTEOPID">
4328                         <limitation name="opid" value="0x01D5" />
4329                         <limitation name="fBid" value="false" />
4330                         <limitation name="fComplex" value="false" />
4331                 </type>
4332                 <uint32 name="lineEndArrowLength" />
4333         </struct>
4334         <struct name="LineJoinStyle">
4335                 <type name="opid" type="OfficeArtFOPTEOPID">
4336                         <limitation name="opid" value="0x01D6" />
4337                         <limitation name="fBid" value="false" />
4338                         <limitation name="fComplex" value="false" />
4339                 </type>
4340                 <uint32 name="lineJoinStyle">
4341                         <limitation expression="&lt;=2" />
4342                 </uint32>
4343         </struct>
4344         <struct name="LineEndCapStyle">
4345                 <type name="opid" type="OfficeArtFOPTEOPID">
4346                         <limitation name="opid" value="0x01D7" />
4347                         <limitation name="fBid" value="false" />
4348                         <limitation name="fComplex" value="false" />
4349                 </type>
4350                 <uint32 name="lineEndCapStyle">
4351                         <limitation expression="&lt;=3" />
4352                 </uint32>
4353         </struct>
4354         <struct name="LineStyleBooleanProperties">
4355                 <type name="opid" type="OfficeArtFOPTEOPID">
4356                         <limitation name="opid" value="0x01FF" />
4357                         <limitation name="fBid" value="false" />
4358                         <limitation name="fComplex" value="false" />
4359                 </type>
4360                 <bit name="fNoLineDrawDash" />
4361                 <bit name="fLineFillShape" />
4362                 <bit name="fHitTestLine" />
4363                 <bit name="fLine" />
4364                 <bit name="fArrowHeadsOK" />
4365                 <bit name="fInsetPenOK" />
4366                 <bit name="fInsetPen" />
4367                 <bit name="reserved1" />
4368                 <bit name="reserved2" />
4369                 <bit name="fLineOpaqueBackColor" />
4370                 <uint6 name="unused1" />
4371                 <bit name="fUseNoLineDrawDash" />
4372                 <bit name="fUseLineFillShape" />
4373                 <bit name="fUseHitTestLine" />
4374                 <bit name="fUsefLine" />
4375                 <bit name="fUsefArrowHeadsOK" />
4376                 <bit name="fUseInsetPenOK" />
4377                 <bit name="fUseInsetPen" />
4378                 <bit name="unused2" />
4379                 <bit name="unused3" />
4380                 <bit name="fUsefLineOpaqueBackColor" />
4381                 <uint6 name="unused4" />
4382         </struct>
4383         <!-- Shadow Style Property Set -->
4384         <struct name="ShadowType">
4385                 <type name="opid" type="OfficeArtFOPTEOPID">
4386                         <limitation name="opid" value="0x0200" />
4387                         <limitation name="fBid" value="false" />
4388                         <limitation name="fComplex" value="false" />
4389                 </type>
4390                 <uint32 name="shadowType" />
4391         </struct>
4392         <struct name="ShadowColor">
4393                 <type name="opid" type="OfficeArtFOPTEOPID">
4394                         <limitation name="opid" value="0x0201" />
4395                         <limitation name="fBid" value="false" />
4396                         <limitation name="fComplex" value="false" />
4397                 </type>
4398                 <type name="shadowColor" type="OfficeArtCOLORREF" />
4399         </struct>
4400         <struct name="ShadowOpacity">
4401                 <type name="opid" type="OfficeArtFOPTEOPID">
4402                         <limitation name="opid" value="0x0204" />
4403                         <limitation name="fBid" value="false" />
4404                         <limitation name="fComplex" value="false" />
4405                 </type>
4406                 <type name="shadowOpacity" type="FixedPoint" />
4407         </struct>
4408         <struct name="ShadowOffsetX">
4409                 <type name="opid" type="OfficeArtFOPTEOPID">
4410                         <limitation name="opid" value="0x0205" />
4411                         <limitation name="fBid" value="false" />
4412                         <limitation name="fComplex" value="false" />
4413                 </type>
4414                 <int32 name="shadowOffsetX" />
4415         </struct>
4416         <struct name="ShadowOffsetY">
4417                 <type name="opid" type="OfficeArtFOPTEOPID">
4418                         <limitation name="opid" value="0x0206" />
4419                         <limitation name="fBid" value="false" />
4420                         <limitation name="fComplex" value="false" />
4421                 </type>
4422                 <int32 name="shadowOffsetY" />
4423         </struct>
4424         <struct name="ShadowStyleBooleanProperties">
4425                 <type name="opid" type="OfficeArtFOPTEOPID">
4426                         <limitation name="opid" value="0x023F" />
4427                         <limitation name="fBid" value="false" />
4428                         <limitation name="fComplex" value="false" />
4429                 </type>
4430                 <bit name="fShadowObscured" />
4431                 <bit name="fShadow" />
4432                 <uint14 name="unused1" />
4433                 <bit name="fUsefShadowObscured" />
4434                 <bit name="fUsefShadow" />
4435                 <uint14 name="unused2" />
4436         </struct>
4437         <!-- Shape Property Set -->
4438         <struct name="HspMaster">
4439                 <type name="opid" type="OfficeArtFOPTEOPID">
4440                         <limitation name="opid" value="0x0301" />
4441                         <limitation name="fBid" value="false" />
4442                         <limitation name="fComplex" value="false" />
4443                 </type>
4444                 <uint32 name="hspMaster" />
4445         </struct>
4446         <struct name="Cxstyle">
4447                 <type name="opid" type="OfficeArtFOPTEOPID">
4448                         <limitation name="opid" value="0x0303" />
4449                         <limitation name="fBid" value="false" />
4450                         <limitation name="fComplex" value="false" />
4451                 </type>
4452                 <uint32 name="cxstyle">
4453                         <limitation expression="&lt;=4" />
4454                 </uint32>
4455         </struct>
4456         <struct name="BWMode">
4457                 <type name="opid" type="OfficeArtFOPTEOPID">
4458                         <limitation name="opid" value="0x0304" />
4459                         <limitation name="fBid" value="false" />
4460                         <limitation name="fComplex" value="false" />
4461                 </type>
4462                 <uint32 name="bWMode">
4463                         <limitation expression="&lt;=10" />
4464                 </uint32>
4465         </struct>
4466         <struct name="ShapeBooleanProperties">
4467                 <type name="opid" type="OfficeArtFOPTEOPID">
4468                         <limitation name="opid" value="0x033F" />
4469                         <limitation name="fBid" value="false" />
4470                         <limitation name="fComplex" value="false" />
4471                 </type>
4472                 <bit name="fBackground" />
4473                 <bit name="reserved1" />
4474                 <bit name="fInitiator" />
4475                 <bit name="fLockShapeType" />
4476                 <bit name="fPreferRelativeResize" />
4477                 <bit name="fOleIcon" />
4478                 <bit name="fFlipVOverride" />
4479                 <bit name="fFlipHOverride" />
4480                 <bit name="fPolicyBarcode" />
4481                 <bit name="fPolicyLabel" />
4482                 <bit name="unused1" />
4483                 <bit name="unused2" />
4484                 <uint4 name="unused3" />
4485                 <bit name="fUsefBackground" />
4486                 <bit name="unused4" />
4487                 <bit name="fUsefInitiator" />
4488                 <bit name="fUsefLockShapeType" />
4489                 <bit name="fusePreferrelativeResize" />
4490                 <bit name="fUsefOleIcon" />
4491                 <bit name="fUsefFlipVOverride" />
4492                 <bit name="fUsefFlipHOverride" />
4493                 <bit name="fUsefPolicyBarcode" />
4494                 <bit name="fUsefPolicyLabel" />
4495                 <bit name="unused5" />
4496                 <bit name="unused6" />
4497                 <uint4 name="unused7" />
4498         </struct>
4499         <!-- Callout Property Set -->
4500         <struct name="DxyCalloutGap">
4501                 <type name="opid" type="OfficeArtFOPTEOPID">
4502                         <limitation name="opid" value="0x0341" />
4503                         <limitation name="fBid" value="false" />
4504                         <limitation name="fComplex" value="false" />
4505                 </type>
4506                 <uint32 name="dxyCalloutGap" />
4507         </struct>
4508         <struct name="Spcoa">
4509                 <type name="opid" type="OfficeArtFOPTEOPID">
4510                         <limitation name="opid" value="0x0342" />
4511                         <limitation name="fBid" value="false" />
4512                         <limitation name="fComplex" value="false" />
4513                 </type>
4514                 <uint32 name="spcoa" />
4515         </struct>
4516         <struct name="Spcod">
4517                 <type name="opid" type="OfficeArtFOPTEOPID">
4518                         <limitation name="opid" value="0x0343" />
4519                         <limitation name="fBid" value="false" />
4520                         <limitation name="fComplex" value="false" />
4521                 </type>
4522                 <uint32 name="spcod" />
4523         </struct>
4524         <struct name="DxyCalloutDropSpecified">
4525                 <type name="opid" type="OfficeArtFOPTEOPID">
4526                         <limitation name="opid" value="0x0344" />
4527                         <limitation name="fBid" value="false" />
4528                         <limitation name="fComplex" value="false" />
4529                 </type>
4530                 <uint32 name="dxyCalloutDropSpecified" />
4531         </struct>
4532         <struct name="DxyCalloutLengthSpecified">
4533                 <type name="opid" type="OfficeArtFOPTEOPID">
4534                         <limitation name="opid" value="0x0345" />
4535                         <limitation name="fBid" value="false" />
4536                         <limitation name="fComplex" value="false" />
4537                 </type>
4538                 <uint32 name="dxyCalloutLengthSpecified" />
4539         </struct>
4540         <struct name="CalloutBooleanProperties">
4541                 <type name="opid" type="OfficeArtFOPTEOPID">
4542                         <limitation name="opid" value="0x037F" />
4543                         <limitation name="fBid" value="false" />
4544                         <limitation name="fComplex" value="false" />
4545                 </type>
4546                 <bit name="fCalloutLengthSpecified" />
4547                 <bit name="fCalloutDropAuto" />
4548                 <bit name="fCalloutMinusY" />
4549                 <bit name="fCalloutMinusX" />
4550                 <bit name="fCalloutTextBorder" />
4551                 <bit name="fCalloutAccentBar" />
4552                 <bit name="fCallout" />
4553                 <bit name="unused1a" />
4554                 <uint8 name="unused1b" />
4555                 <bit name="fUsefCalloutLengthSpecified" />
4556                 <bit name="fUsefCalloutDropAuto" />
4557                 <bit name="fUsefCalloutMinusY" />
4558                 <bit name="fUsefCalloutMinusX" />
4559                 <bit name="fUsefCalloutTextBorder" />
4560                 <bit name="fUsefCalloutAccentBar" />
4561                 <bit name="fUsefCallout" />
4562                 <bit name="unused2a" />
4563                 <uint8 name="unused2b" />
4564         </struct>
4565         <!-- Group Shape Property Set -->
4566         <struct name="PWrapPolygonVertices">
4567                 <type name="opid" type="OfficeArtFOPTEOPID">
4568                         <limitation name="opid" value="0x0383" />
4569                 </type>
4570                 <uint32 name="pWrapPolygonVertices" />
4571         </struct>
4572         <struct name="PWrapPolygonVertices_complex">
4573                 <uint16 name="nElems" />
4574                 <uint16 name="nElemsAlloc" />
4575                 <uint16 name="cbElem" />
4576                 <uint8 name="data" count="(cbElem==0xFFF0)?(4 * nElems):(cbElem * nElems)" />
4577         </struct>
4578         <struct name="DxWrapDistLeft">
4579                 <type name="opid" type="OfficeArtFOPTEOPID">
4580                         <limitation name="opid" value="0x0384" />
4581                         <limitation name="fBid" value="false" />
4582                         <limitation name="fComplex" value="false" />
4583                 </type>
4584                 <int32 name="dxWrapDistLeft" />
4585         </struct>
4586         <struct name="DyWrapDistTop">
4587                 <type name="opid" type="OfficeArtFOPTEOPID">
4588                         <limitation name="opid" value="0x0385" />
4589                         <limitation name="fBid" value="false" />
4590                         <limitation name="fComplex" value="false" />
4591                 </type>
4592                 <int32 name="dyWrapDistTop" />
4593         </struct>
4594         <struct name="DxWrapDistRight">
4595                 <type name="opid" type="OfficeArtFOPTEOPID">
4596                         <limitation name="opid" value="0x0386" />
4597                         <limitation name="fBid" value="false" />
4598                         <limitation name="fComplex" value="false" />
4599                 </type>
4600                 <int32 name="dxWrapDistRight" />
4601         </struct>
4602         <struct name="DyWrapDistBottom">
4603                 <type name="opid" type="OfficeArtFOPTEOPID">
4604                         <limitation name="opid" value="0x0387" />
4605                         <limitation name="fBid" value="false" />
4606                         <limitation name="fComplex" value="false" />
4607                 </type>
4608                 <int32 name="dyWrapDistBottom" />
4609         </struct>
4610         <struct name="LidRegroup">
4611                 <type name="opid" type="OfficeArtFOPTEOPID">
4612                         <limitation name="opid" value="0x0388" />
4613                         <limitation name="fBid" value="false" />
4614                         <limitation name="fComplex" value="false" />
4615                 </type>
4616                 <uint32 name="lidRegroup" />
4617         </struct>
4618         <struct name="PosH">
4619                 <type name="opid" type="OfficeArtFOPTEOPID">
4620                         <limitation name="opid" value="0x038F" />
4621                         <limitation name="fBid" value="false" />
4622                         <limitation name="fComplex" value="false" />
4623                 </type>
4624                 <uint32 name="posH" />
4625         </struct>
4626         <struct name="PosRelH">
4627                 <type name="opid" type="OfficeArtFOPTEOPID">
4628                         <limitation name="opid" value="0x0390" />
4629                         <limitation name="fBid" value="false" />
4630                         <limitation name="fComplex" value="false" />
4631                 </type>
4632                 <uint32 name="posRelH" />
4633         </struct>
4634         <struct name="PosV">
4635                 <type name="opid" type="OfficeArtFOPTEOPID">
4636                         <limitation name="opid" value="0x0391" />
4637                         <limitation name="fBid" value="false" />
4638                         <limitation name="fComplex" value="false" />
4639                 </type>
4640                 <uint32 name="posV" />
4641         </struct>
4642         <struct name="PosRelV">
4643                 <type name="opid" type="OfficeArtFOPTEOPID">
4644                         <limitation name="opid" value="0x0392" />
4645                         <limitation name="fBid" value="false" />
4646                         <limitation name="fComplex" value="false" />
4647                 </type>
4648                 <uint32 name="posRelV" />
4649         </struct>
4650         <struct name="PctHR">
4651                 <type name="opid" type="OfficeArtFOPTEOPID">
4652                         <limitation name="opid" value="0x0393" />
4653                         <limitation name="fBid" value="false" />
4654                         <limitation name="fComplex" value="false" />
4655                 </type>
4656                 <uint32 name="pctHR" />
4657         </struct>
4658         <struct name="AlignHR">
4659                 <type name="opid" type="OfficeArtFOPTEOPID">
4660                         <limitation name="opid" value="0x0394" />
4661                         <limitation name="fBid" value="false" />
4662                         <limitation name="fComplex" value="false" />
4663                 </type>
4664                 <uint32 name="alignHR" />
4665         </struct>
4666         <struct name="DxHeightHR">
4667                 <type name="opid" type="OfficeArtFOPTEOPID">
4668                         <limitation name="opid" value="0x0395" />
4669                         <limitation name="fBid" value="false" />
4670                         <limitation name="fComplex" value="false" />
4671                 </type>
4672                 <int32 name="dxHeightHR" />
4673         </struct>
4674         <struct name="DxWidthHR">
4675                 <type name="opid" type="OfficeArtFOPTEOPID">
4676                         <limitation name="opid" value="0x0396" />
4677                         <limitation name="fBid" value="false" />
4678                         <limitation name="fComplex" value="false" />
4679                 </type>
4680                 <int32 name="dxWidthHR" />
4681         </struct>
4682         <struct name="BorderTopColor">
4683                 <type name="opid" type="OfficeArtFOPTEOPID">
4684                         <limitation name="opid" value="0x039b" />
4685                         <limitation name="fBid" value="false" />
4686                         <limitation name="fComplex" value="false" />
4687                 </type>
4688                 <type name="borderTopColor" type="OfficeArtCOLORREF" />
4689         </struct>
4690         <struct name="BorderLeftColor">
4691                 <type name="opid" type="OfficeArtFOPTEOPID">
4692                         <limitation name="opid" value="0x039c" />
4693                         <limitation name="fBid" value="false" />
4694                         <limitation name="fComplex" value="false" />
4695                 </type>
4696                 <type name="borderLeftColor" type="OfficeArtCOLORREF" />
4697         </struct>
4698         <struct name="BorderBottomColor">
4699                 <type name="opid" type="OfficeArtFOPTEOPID">
4700                         <limitation name="opid" value="0x039d" />
4701                         <limitation name="fBid" value="false" />
4702                         <limitation name="fComplex" value="false" />
4703                 </type>
4704                 <type name="borderBottomColor" type="OfficeArtCOLORREF" />
4705         </struct>
4706         <struct name="BorderRightColor">
4707                 <type name="opid" type="OfficeArtFOPTEOPID">
4708                         <limitation name="opid" value="0x039e" />
4709                         <limitation name="fBid" value="false" />
4710                         <limitation name="fComplex" value="false" />
4711                 </type>
4712                 <type name="borderRightColor" type="OfficeArtCOLORREF" />
4713         </struct>
4714         <struct name="GroupShapeBooleanProperties">
4715                 <type name="opid" type="OfficeArtFOPTEOPID">
4716                         <limitation name="opid" value="0x03bf" />
4717                         <limitation name="fBid" value="false" />
4718                         <limitation name="fComplex" value="false" />
4719                 </type>
4720                 <bit name="fPrint" />
4721                 <bit name="fHidden" />
4722                 <bit name="fOneD" />
4723                 <bit name="fIsButton" />
4724                 <bit name="fOnDblClickNotify" />
4725                 <bit name="fBehindDocument" />
4726                 <bit name="fEditedWrap" />
4727                 <bit name="fScriptAnchor" />
4728                 <bit name="fReallyHidden" />
4729                 <bit name="fAllowOverlap" />
4730                 <bit name="fUserDrawn" />
4731                 <bit name="fHorizRule" />
4732                 <bit name="fNoshadeHR" />
4733                 <bit name="fStandardHR" />
4734                 <bit name="fIsBullet" />
4735                 <bit name="fLayoutInCell" />
4736                 <bit name="fUsefPrint" />
4737                 <bit name="fUsefHidden" />
4738                 <bit name="fUsefOneD" />
4739                 <bit name="fUsefIsButton" />
4740                 <bit name="fUsefOnDblClickNotify" />
4741                 <bit name="fUsefBehindDocument" />
4742                 <bit name="fUsefEditedWrap" />
4743                 <bit name="fUsefScriptAnchor" />
4744                 <bit name="fUsefReallyHidden" />
4745                 <bit name="fUsefAllowOverlap" />
4746                 <bit name="fUsefUserDrawn" />
4747                 <bit name="fUsefHorizRule" />
4748                 <bit name="fUsefNoshadeHR" />
4749                 <bit name="fUsefStandardHR" />
4750                 <bit name="fUsefIsBullet" />
4751                 <bit name="fUsefLayoutInCell" />
4752         </struct>
4753         <!-- Unknown HTML Property Set -->
4754         <struct name="WzFillId">
4755                 <type name="opid" type="OfficeArtFOPTEOPID">
4756                         <limitation name="opid" value="0x0403" />
4757                 </type>
4758                 <int32 name="wzFillId" />
4759         </struct>
4760         <!-- Diagram Property Set -->
4761         <struct name="DiagramBooleanProperties">
4762                 <type name="opid" type="OfficeArtFOPTEOPID">
4763                         <limitation name="opid" value="0x053F" />
4764                         <limitation name="fBid" value="false" />
4765                         <limitation name="fComplex" value="false" />
4766                 </type>
4767                 <bit name="fPseudoInline" />
4768                 <bit name="fDoLayout" />
4769                 <bit name="fReverse" />
4770                 <bit name="fDoFormat" />
4771                 <bit name="unused1" />
4772                 <bit name="unused2" />
4773                 <uint2 name="unused3a" />
4774                 <uint8 name="unused3b" />
4775                 <bit name="fUsefPseudoInline" />
4776                 <bit name="fUsefDoLayout" />
4777                 <bit name="fUsefReverse" />
4778                 <bit name="fUsefDoFormat" />
4779                 <bit name="unused4" />
4780                 <bit name="unused5" />
4781                 <uint2 name="unused6a" />
4782                 <uint8 name="unused6b" />
4783         </struct>
4784         <!-- Properties: END -->
4785         <struct name="OfficeArtCOLORREF">
4786                 <uint8 name="red" />
4787                 <uint8 name="green" />
4788                 <uint8 name="blue" />
4789                 <bit name="fPaletteIndex" />
4790                 <bit name="fPaletteRGB" />
4791                 <bit name="fSystemRGB" />
4792                 <bit name="fSchemeIndex" />
4793                 <bit name="fSysIndex" />
4794                 <bit name="unused1" />
4795                 <bit name="unused2" />
4796                 <bit name="unused3" />
4797         </struct>
4798         <struct name="OfficeArtChildAnchor">
4799                 <type name="rh" type="OfficeArtRecordHeader">
4800                         <limitation name="recVer" value="0" />
4801                         <limitation name="recInstance" value="0" />
4802                         <limitation name="recType" value="0xF00F" />
4803                         <limitation name="recLen" value="0x10" />
4804                 </type>
4805                 <int32 name="xLeft" />
4806                 <int32 name="yTop" />
4807                 <int32 name="xRight" />
4808                 <int32 name="yBottom" />
4809         </struct>
4810         <struct name="OfficeArtClientAnchor">
4811                 <choice name="anon">
4812                         <type type="PptOfficeArtClientAnchor" />
4813                         <type type="DocOfficeArtClientAnchor" />
4814                         <type type="XlsOfficeArtClientAnchor" />
4815                 </choice>
4816         </struct>
4817         <struct name="PptOfficeArtClientAnchor">
4818                 <type name="rh" type="OfficeArtRecordHeader">
4819                         <limitation name="recVer" value="0" />
4820                         <limitation name="recInstance" value="0" />
4821                         <limitation name="recType" value="0xF010" />
4822                         <limitation name="recLen" value="0x8|0x10" />
4823                 </type>
4824                 <type name="rect1" type="SmallRectStruct" condition="rh.recLen==0x8" />
4825                 <type name="rect2" type="RectStruct" condition="rh.recLen==0x10" />
4826         </struct>
4827         <struct name="DocOfficeArtClientAnchor">
4828                 <type name="rh" type="OfficeArtRecordHeader">
4829                         <limitation name="recVer" value="0" />
4830                         <limitation name="recInstance" value="0" />
4831                         <limitation name="recType" value="0xF010" />
4832                         <limitation name="recLen" value="0x4" />
4833                 </type>
4834                 <int32 name="clientAnchor" />
4835         </struct>
4836 
4837         <!--
4838                 OfficeArtClientAnchorHF, OfficeArtClientAnchorSheet,
4839                 OfficeArtClientAnchorChart
4840         -->
4841         <struct name="XlsOfficeArtClientAnchor">
4842                 <type name="rh" type="OfficeArtRecordHeader">
4843                         <limitation name="recVer" value="0" />
4844                         <limitation name="recInstance" value="0" />
4845                         <limitation name="recType" value="0xF010" />
4846                         <limitation name="recLen" value="0x8|0x12" />
4847                 </type>
4848                 <bit name="fMove" />
4849                 <bit name="fSize" />
4850                 <uint14 name="unused" />
4851                 <int32 name="width" condition="rh.recLen==0x8" />
4852                 <int32 name="height" condition="rh.recLen==0x8" />
4853                 <uint16 name="colL" condition="rh.recLen==0x12" />
4854                 <int16 name="dxL" condition="rh.recLen==0x12" />
4855                 <uint16 name="rwT" condition="rh.recLen==0x12" />
4856                 <int16 name="dyT" condition="rh.recLen==0x12" />
4857                 <uint16 name="colR" condition="rh.recLen==0x12" />
4858                 <int16 name="dxR" condition="rh.recLen==0x12" />
4859                 <uint16 name="rwB" condition="rh.recLen==0x12" />
4860                 <int16 name="dyB" condition="rh.recLen==0x12" />
4861         </struct>
4862 
4863         <struct name="OfficeArtFPSPL">
4864                 <type name="rh" type="OfficeArtRecordHeader">
4865                         <limitation name="recVer" value="0" />
4866                         <limitation name="recInstance" value="0" />
4867                         <limitation name="recType" value="0xF11D" />
4868                         <limitation name="recLen" value="4" />
4869                 </type>
4870                 <uint30 name="spid" />
4871                 <bit name="reserved1" />
4872                 <bit name="fLast" />
4873         </struct>
4874         <struct name="RectStruct">
4875                 <int32 name="top" />
4876                 <int32 name="left" />
4877                 <int32 name="right" />
4878                 <int32 name="bottom" />
4879         </struct>
4880         <struct name="SmallRectStruct">
4881                 <int16 name="top" />
4882                 <int16 name="left" />
4883                 <int16 name="right" />
4884                 <int16 name="bottom" />
4885         </struct>
4886         <struct name="OfficeArtClientData">
4887                 <choice name="anon">
4888                         <type type="DocOfficeArtClientData" />
4889                         <type type="PptOfficeArtClientData" />
4890                         <type type="XlsOfficeArtClientData" />
4891                 </choice>
4892         </struct>
4893         <struct name="PptOfficeArtClientData">
4894                 <type name="rh" type="OfficeArtRecordHeader">
4895                         <limitation name="recVer" value="0xF" />
4896                         <limitation name="recInstance" value="0" />
4897                         <limitation name="recType" value="0xF011" />
4898                 </type>
4899                 <type name="shapeFlagsAtom" type="ShapeFlagsAtom" optional="true" />
4900                 <type name="shapeFlags10Atom" type="ShapeFlags10Atom" optional="true" />
4901                 <type name="exObjRefAtom" type="ExObjRefAtom" optional="true" />
4902                 <type name="animationInfo" type="AnimationInfoContainer"
4903                         optional="true" />
4904                 <type name="mouseClickInteractiveInfo" type="MouseClickInteractiveInfoContainer"
4905                         optional="true" />
4906                 <type name="mouseOverInteractiveInfo" type="MouseOverInteractiveInfoContainer"
4907                         optional="true" />
4908                 <!--  MS-PPT spec. violation - sometimes this array occurs here -->
4909                 <type name="rgShapeClientRoundtripData0" type="ShapeClientRoundtripDataSubcontainerOrAtom"
4910                         array="true" />
4911                 <type name="placeholderAtom" type="PlaceholderAtom" optional="true" />
4912                 <type name="recolorInfoAtom" type="RecolorInfoAtom" optional="true" />
4913                 <type name="unknown1" type="UnknownOfficeArtClientDataChild"
4914                         optional="true" />
4915                 <type name="rgShapeClientRoundtripData" type="ShapeClientRoundtripDataSubcontainerOrAtom"
4916                         array="true" />
4917                 <type name="unknown2" type="UnknownOfficeArtClientDataChild"
4918                         optional="true" />
4919         </struct>
4920         <struct name="DocOfficeArtClientData">
4921                 <type name="rh" type="OfficeArtRecordHeader">
4922                         <limitation name="recVer" value="0" />
4923                         <limitation name="recInstance" value="0" />
4924                         <limitation name="recType" value="0xF011" />
4925                         <limitation name="recLen" value="4" />
4926                 </type>
4927                 <uint32 name="clientData" />
4928         </struct>
4929         <struct name="XlsOfficeArtClientData">
4930                 <type name="rh" type="OfficeArtRecordHeader">
4931                         <limitation name="recVer" value="0" />
4932                         <limitation name="recInstance" value="0" />
4933                         <limitation name="recType" value="0xF011" />
4934                         <limitation name="recLen" value="0" />
4935                 </type>
4936         </struct>
4937         <struct name="ShapeFlagsAtom">
4938                 <type name="rh" type="OfficeArtRecordHeader">
4939                         <limitation name="recVer" value="0" />
4940                         <limitation name="recInstance" value="0" />
4941                         <limitation name="recType" value="0xBDB" />
4942                         <limitation name="recLen" value="1" />
4943                 </type>
4944                 <uint8 name="todo" count="rh.recLen" />
4945         </struct>
4946         <struct name="ShapeFlags10Atom">
4947                 <type name="rh" type="OfficeArtRecordHeader">
4948                         <limitation name="recVer" value="0" />
4949                         <limitation name="recInstance" value="0" />
4950                         <limitation name="recType" value="0xBDC" />
4951                         <limitation name="recLen" value="1" />
4952                 </type>
4953                 <uint8 name="todo" count="rh.recLen" />
4954         </struct>
4955         <struct name="ExObjRefAtom">
4956                 <type name="rh" type="OfficeArtRecordHeader">
4957                         <limitation name="recVer" value="0" />
4958                         <limitation name="recInstance" value="0" />
4959                         <limitation name="recType" value="0xBC1" />
4960                         <limitation name="recLen" value="4" />
4961                 </type>
4962                 <uint32 name="exObjIdRef" />
4963         </struct>
4964         <struct name="AnimationInfoContainer">
4965                 <type name="rh" type="OfficeArtRecordHeader">
4966                         <limitation name="recVer" value="0xF" />
4967                         <limitation name="recInstance" value="0" />
4968                         <limitation name="recType" value="0x1014" />
4969                 </type>
4970                 <type name="animationAtom" type="AnimationInfoAtom" />
4971                 <type name="animationSound" type="SoundContainer" optional="true" />
4972         </struct>
4973         <struct name="AnimationInfoAtom">
4974                 <type name="rh" type="OfficeArtRecordHeader">
4975                         <limitation name="recVer" value="0x1" />
4976                         <limitation name="recInstance" value="0" />
4977                         <limitation name="recType" value="0xFF1" />
4978                         <limitation name="recLen" value="0x1C" />
4979                 </type>
4980                 <uint8 name="todo" count="0x1C" />
4981         </struct>
4982         <struct name="SoundContainer">
4983                 <type name="rh" type="OfficeArtRecordHeader">
4984                         <limitation name="recVer" value="0xF" />
4985                         <limitation name="recInstance" value="0" />
4986                         <limitation name="recType" value="0x7E6" />
4987                 </type>
4988                 <uint8 name="todo" count="rh.recLen" />
4989         </struct>
4990         <struct name="MouseClickInteractiveInfoContainer">
4991                 <type name="rh" type="RecordHeader">
4992                         <limitation name="recVer" value="0xF" />
4993                         <limitation name="recInstance" value="0" />
4994                         <limitation name="recType" value="0xFF2" />
4995                 </type>
4996                 <type name="interactiveInfoAtom" type="InteractiveInfoAtom" />
4997                 <type name="macroNameAtom" type="MacroNameAtom" condition="rh.recLen&gt;24" />
4998         </struct>
4999         <struct name="MouseOverInteractiveInfoContainer">
5000                 <type name="rh" type="RecordHeader">
5001                         <limitation name="recVer" value="0xF" />
5002                         <limitation name="recInstance" value="1" />
5003                         <limitation name="recType" value="0xFF2" />
5004                 </type>
5005                 <type name="interactiveInfoAtom" type="InteractiveInfoAtom" />
5006                 <type name="macroNameAtom" type="MacroNameAtom" condition="rh.recLen&gt;24" />
5007         </struct>
5008         <struct name="InteractiveInfoAtom">
5009                 <type name="rh" type="RecordHeader">
5010                         <limitation name="recVer" value="0" />
5011                         <limitation name="recInstance" value="0" />
5012                         <!--  value should be 0xFF3, but value 0xFF2 has been observed too -->
5013                         <limitation name="recType" value="0xFF2|0xFF3" />
5014                         <limitation name="recLen" value="0x10" />
5015                 </type>
5016                 <uint32 name="soundIdRef" />
5017                 <uint32 name="exHyperlinkIdRef" />
5018                 <uint8 name="action">
5019                         <limitation expression="&lt;8" />
5020                 </uint8>
5021                 <uint8 name="oleVerb">
5022                         <limitation expression="&lt;3" />
5023                 </uint8>
5024                 <uint8 name="jump">
5025                         <limitation expression="&lt;7" />
5026                 </uint8>
5027                 <bit name="fAnimated" />
5028                 <bit name="fStopSound" />
5029                 <bit name="fCustomSoundReturn" />
5030                 <bit name="fVisited" />
5031                 <uint4 name="reserved" />
5032                 <uint8 name="hyperlinkType" />
5033                 <uint8 name="unused" count="3" />
5034         </struct>
5035         <struct name="MacroNameAtom">
5036                 <type name="rh" type="RecordHeader">
5037                         <limitation name="recVer" value="0" />
5038                         <limitation name="recInstance" value="2" />
5039                         <limitation name="recType" value="0xFBA" />
5040                         <limitation name="recLen" expression="%2==0" />
5041                 </type>
5042                 <uint8 name="macroName" count="rh.recLen" />
5043         </struct>
5044         <struct name="PlaceholderAtom">
5045                 <type name="rh" type="OfficeArtRecordHeader">
5046                         <limitation name="recVer" value="0" />
5047                         <limitation name="recInstance" value="0" />
5048                         <limitation name="recType" value="0xBC3" />
5049                         <limitation name="recLen" value="8" />
5050                 </type>
5051                 <int32 name="position" />
5052                 <uint8 name="placementId" />
5053                 <uint8 name="size" />
5054                 <uint16 name="unused" />
5055         </struct>
5056         <struct name="RecolorInfoAtom">
5057                 <type name="rh" type="OfficeArtRecordHeader">
5058                         <limitation name="recVer" value="0" />
5059                         <limitation name="recInstance" value="0" />
5060                         <limitation name="recType" value="0xFE7" />
5061                 </type>
5062                 <uint8 name="todo" count="rh.recLen" />
5063         </struct>
5064         <struct name="OutlineTextRefAtom">
5065                 <type name="rh" type="OfficeArtRecordHeader">
5066                         <limitation name="recVer" value="0" />
5067                         <limitation name="recInstance" value="0" />
5068                         <limitation name="recType" value="0xF9E" />
5069                         <limitation name="recLen" value="4" />
5070                 </type>
5071                 <int32 name="index">
5072                         <limitation expression="&gt;=0" />
5073                 </int32>
5074         </struct>
5075         <struct name="ShapeClientRoundtripDataSubcontainerOrAtom">
5076                 <!--
5077                         <type name="rh" type="OfficeArtRecordHeader"> <limitation
5078                         name="recType" value="0x1388|0xBDD|0x41F|0x420|0x426" /> </type>
5079                         <uint8 name="todo" count="rh.recLen" />
5080                 -->
5081                 <choice name="anon">
5082                         <type type="ShapeProgsTagContainer" />
5083                         <type type="RoundTripNewPlaceHolderId12Atom" />
5084                         <type type="RoundTripShapeId12Atom" />
5085                         <type type="RoundTripHFPlaceholder12Atom" />
5086                         <type type="RoundTripShapeCheckSumForCustomLayouts12Atom" />
5087                 </choice>
5088         </struct>
5089         <struct name="ShapeProgsTagContainer">
5090                 <type name="rh" type="OfficeArtRecordHeader">
5091                         <limitation name="recVer" value="0xF" />
5092                         <limitation name="recInstance" value="0|1|2" />
5093                         <limitation name="recType" value="0x1388" />
5094                 </type>
5095                 <type name="rgChildRec" type="ShapeProgTagsSubContainerOrAtom"
5096                         array="true" />
5097         </struct>
5098         <struct name="ShapeProgTagsSubContainerOrAtom">
5099                 <choice name="anon">
5100                         <type type="ProgStringTagContainer" />
5101                         <type type="ShapeProgBinaryTagContainer" />
5102                 </choice>
5103         </struct>
5104         <struct name="ShapeProgBinaryTagContainer">
5105                 <type name="rh" type="OfficeArtRecordHeader">
5106                         <limitation name="recVer" value="0xF" />
5107                         <limitation name="recInstance" value="0" />
5108                         <limitation name="recType" value="0x138A" />
5109                 </type>
5110                 <type name="rec" type="ShapeProgBinaryTagSubContainerOrAtom" />
5111         </struct>
5112         <struct name="ShapeProgBinaryTagSubContainerOrAtom">
5113                 <choice name="anon">
5114                         <type type="PP9ShapeBinaryTagExtension" />
5115                         <type type="PP10ShapeBinaryTagExtension" />
5116                         <type type="PP11ShapeBinaryTagExtension" />
5117                         <type type="UnknownBinaryTag" />
5118                 </choice>
5119         </struct>
5120         <struct name="PP9ShapeBinaryTagExtension">
5121                 <type name="rh" type="OfficeArtRecordHeader">
5122                         <limitation name="recVer" value="0" />
5123                         <limitation name="recInstance" value="0" />
5124                         <limitation name="recType" value="0xFBA" />
5125                         <limitation name="recLen" value="0xE" />
5126                 </type>
5127                 <uint16 name="tagName" count="7">
5128                         <!-- <limitation value='"___PPT9"' /> -->
5129                 </uint16>
5130                 <type name="rhData" type="RecordHeader">
5131                         <limitation name="recVer" value="0" />
5132                         <limitation name="recInstance" value="0" />
5133                         <limitation name="recType" value="0x138B" />
5134                 </type>
5135                 <type name="styleTextProp9Atom" type="StyleTextProp9Atom" />
5136         </struct>
5137         <struct name="PP10ShapeBinaryTagExtension">
5138                 <type name="rh" type="OfficeArtRecordHeader">
5139                         <limitation name="recVer" value="0" />
5140                         <limitation name="recInstance" value="0" />
5141                         <limitation name="recType" value="0xFBA" />
5142                         <limitation name="recLen" value="0x10" />
5143                 </type>
5144                 <uint16 name="tagName" count="8">
5145                         <!-- <limitation value='"___PPT10"' /> -->
5146                 </uint16>
5147                 <type name="rhData" type="RecordHeader">
5148                         <limitation name="recVer" value="0" />
5149                         <limitation name="recInstance" value="0" />
5150                         <limitation name="recType" value="0x138B" />
5151                 </type>
5152                 <uint8 name="todo" count="rhData.recLen" />
5153         </struct>
5154         <struct name="PP11ShapeBinaryTagExtension">
5155                 <type name="rh" type="OfficeArtRecordHeader">
5156                         <limitation name="recVer" value="0" />
5157                         <limitation name="recInstance" value="0" />
5158                         <limitation name="recType" value="0xFBA" />
5159                         <limitation name="recLen" value="0x10" />
5160                 </type>
5161                 <uint16 name="tagName" count="8">
5162                         <!-- <limitation value='"___PPT11"' /> -->
5163                 </uint16>
5164                 <type name="rhData" type="RecordHeader">
5165                         <limitation name="recVer" value="0" />
5166                         <limitation name="recInstance" value="0" />
5167                         <limitation name="recType" value="0x138B" />
5168                 </type>
5169                 <uint8 name="todo" count="rhData.recLen" />
5170         </struct>
5171         <struct name="RoundTripNewPlaceHolderId12Atom">
5172                 <type name="rh" type="OfficeArtRecordHeader">
5173                         <limitation name="recVer" value="0" />
5174                         <limitation name="recInstance" value="0" />
5175                         <limitation name="recType" value="0xBDD" />
5176                         <limitation name="recLen" value="1" />
5177                 </type>
5178                 <uint8 name="newPlaceHolderId" />
5179         </struct>
5180         <struct name="RoundTripShapeId12Atom">
5181                 <type name="rh" type="OfficeArtRecordHeader">
5182                         <limitation name="recVer" value="0" />
5183                         <limitation name="recInstance" value="0" />
5184                         <limitation name="recType" value="0x41F" />
5185                         <limitation name="recLen" value="4" />
5186                 </type>
5187                 <uint32 name="shapeId" />
5188         </struct>
5189         <struct name="RoundTripHFPlaceholder12Atom">
5190                 <type name="rh" type="OfficeArtRecordHeader">
5191                         <limitation name="recVer" value="0" />
5192                         <limitation name="recInstance" value="0" />
5193                         <limitation name="recType" value="0x420" />
5194                         <limitation name="recLen" value="1" />
5195                 </type>
5196                 <uint8 name="placeHolderId" />
5197         </struct>
5198         <struct name="RoundTripShapeCheckSumForCustomLayouts12Atom">
5199                 <type name="rh" type="OfficeArtRecordHeader">
5200                         <limitation name="recVer" value="0" />
5201                         <limitation name="recInstance" value="0" />
5202                         <limitation name="recType" value="0x426" />
5203                         <!--  documentations says this field should be size 8 -->
5204                         <limitation name="recLen" value="8|40" />
5205                 </type>
5206                 <uint32 name="shapeCheckSum" />
5207                 <uint32 name="textCheckSum" />
5208                 <uint8 name="unknown" count="rh.recLen-8" />
5209         </struct>
5210         <struct name="OfficeArtClientTextBox">
5211                 <choice name="anon">
5212                         <type type="XlsOfficeArtClientTextBox" />
5213                         <type type="DocOfficeArtClientTextBox" />
5214                         <type type="PptOfficeArtClientTextBox" />
5215                 </choice>
5216         </struct>
5217         <struct name="XlsOfficeArtClientTextBox">
5218                 <type name="rh" type="OfficeArtRecordHeader">
5219                         <limitation name="recVer" value="0" />
5220                         <limitation name="recInstance" value="0" />
5221                         <limitation name="recType" value="0xF00D" />
5222                         <limitation name="recLen" value="0" />
5223                 </type>
5224         </struct>
5225         <struct name="DocOfficeArtClientTextBox">
5226                 <type name="rh" type="OfficeArtRecordHeader">
5227                         <limitation name="recVer" value="0|0xF" />
5228                         <limitation name="recInstance" value="0" />
5229                         <limitation name="recType" value="0xF00D" />
5230                         <limitation name="recLen" value="0x4" />
5231                 </type>
5232                 <uint32 name="clientTextBox" />
5233         </struct>
5234         <struct name="PptOfficeArtClientTextBox">
5235                 <type name="rh" type="OfficeArtRecordHeader">
5236                         <limitation name="recVer" value="0|0xF" />
5237                         <!--  documentation says value should be 0 -->
5238                         <limitation name="recInstance" value="0" />
5239                         <limitation name="recType" value="0xF00D" />
5240                         <limitation name="recLen" expression="!=4" />
5241                 </type>
5242                 <type name="rgChildRec" array="true" size="rh.recLen"
5243                         type="TextClientDataSubContainerOrAtom" />
5244         </struct>
5245         <struct name="TextRulerAtom">
5246                 <type name="rh" type="RecordHeader">
5247                         <limitation name="recVer" value="0" />
5248                         <limitation name="recInstance" value="0" />
5249                         <limitation name="recType" value="0xFA6" />
5250                 </type>
5251                 <type name="textRuler" type="TextRuler" />
5252         </struct>
5253         <struct name="OfficeArtIDCL">
5254                 <uint32 name="dgid" />
5255                 <uint32 name="cspidCur" />
5256         </struct>
5257         <struct name="OfficeArtFOPTE">
5258                 <type name="opid" type="OfficeArtFOPTEOPID" />
5259                 <int32 name="op" />
5260         </struct>
5261         <struct name="OfficeArtFOPTEOPID">
5262                 <uint14 name="opid" />
5263                 <bit name="fBid" />
5264                 <bit name="fComplex" />
5265         </struct>
5266         <struct name="OfficeArtColorMRUContainer">
5267                 <type name="rh" type="OfficeArtRecordHeader">
5268                         <limitation name="recVer" value="0x0" />
5269                         <limitation name="recType" value="0xF11A" />
5270                         <limitation expression="recLen==4*recInstance" />
5271                 </type>
5272                 <type name="rgmsocr" type="MSOCR" count="rh.recInstance" />
5273         </struct>
5274         <struct name="MSOCR">
5275                 <uint8 name="red" />
5276                 <uint8 name="green" />
5277                 <uint8 name="blue" />
5278                 <uint3 name="unused1" />
5279                 <bit name="fSchemeIndex" />
5280                 <uint4 name="unused2" />
5281                 <!--
5282                         an addition limitation is needed that says that if fSchemeIndex ==1
5283                         then green and blue must be 0
5284                 -->
5285         </struct>
5286         <struct name="OfficeArtSplitMenuColorContainer">
5287                 <type name="rh" type="OfficeArtRecordHeader">
5288                         <limitation name="recVer" value="0x0" />
5289                         <limitation name="recInstance" value="0x4" />
5290                         <limitation name="recType" value="0xF11E" />
5291                         <limitation name="recLen" value="0x10" />
5292                 </type>
5293                 <type name="smca" type="MSOCR" count="4" />
5294         </struct>
5295         <struct name="todo">
5296                 <!--
5297                         a placeholder for structures that are not in the document
5298                         specification yet
5299                 -->
5300                 <type name="rh" type="RecordHeader">
5301                         <!--
5302                                 disallow structures that are implemented <limitation name="recType"
5303                                 value="!1000" />
5304                         -->
5305                 </type>
5306                 <uint8 name="anon" count="rh.recLen" />
5307         </struct>
5308         <struct name="WordDocument">
5309                 <type name="fib" type="Fib" />
5310         </struct>
5311         <struct name="Fib">
5312                 <type name="base" type="FibBase" />
5313                 <uint16 name="csw">
5314                         <limitation value="14" />
5315                 </uint16>
5316                 <type name="fibRgW" type="FibRgW97" />
5317                 <uint16 name="cslw">
5318                         <limitation value="22" />
5319                 </uint16>
5320                 <type name="fibRgLw" type="FibRgLw97" />
5321                 <uint16 name="cbRgFcLcb">
5322                         <limitation value="0x5D|0x6C|0x88|0xA4|0xB7" />
5323                 </uint16>
5324                 <type name="fibRgFcLcbBlob" type="FibRgFcLcb97" />
5325                 <type name="fibRgFcLcbBlob2" type="FibRgFcLcb2000" condition="cbRgFcLcb&gt;=0x6C" />
5326                 <type name="fibRgFcLcbBlob3" type="FibRgFcLcb2002" condition="cbRgFcLcb&gt;=0x88" />
5327                 <uint16 name="cswNew">
5328                         <limitation value="0|2|5" />
5329                 </uint16>
5330                 <uint8 name="fibRgCswNew" count="2*cswNew" />
5331                 <!--  <type name="fibRgCswNew" type="fibRgCswNew" />-->
5332                 <uint8 name="trail" count="fibRgLw.cbMac-156-8*cbRgFcLcb-2*cswNew" />
5333         </struct>
5334         <!--
5335              The FibBase structure is the fixed-size portion of the Fib.  Let's
5336              support Word6, Word7 and Word8 files.  FibBase of any newer file
5337              is compatible with Word8.
5338           -->
5339         <struct name="FibBase">
5340                 <uint16 name="wIdent" />
5341                 <!-- NOTE: Word6 and Word7 use other magic number.  The
5342                      expected value was Word8 specific. -->
5343                 <!-- <limitation value="0xA5EC" /> -->
5344                 <!-- </uint16> -->
5345                 <uint16 name="nFib">
5346                         <limitation value="0x65|0x67|0x68|0xC0|0xC1|0xC2|0x101|0x10B|0x10C|0x112" />
5347                 </uint16>
5348                 <uint16 name="unused" />
5349                 <uint16 name="lid" />
5350                 <uint16 name="pnNext" />
5351                 <bit name="fDot" />
5352                 <bit name="fGlsy" />
5353                 <bit name="fComplex" />
5354                 <bit name="fHasPic" />
5355                 <uint4 name="cQuickSaves" />
5356                 <bit name="fEncrypted" />
5357                 <bit name="fWhichTblStm" />
5358                 <bit name="fReadOnlyRecommended" />
5359                 <bit name="fWriteReservation" />
5360                 <bit name="fExtChar" />
5361                 <bit name="fLoadOverride" />
5362                 <bit name="fFarEast" />
5363                 <bit name="fObfuscated" />
5364                 <uint16 name="nFibBack" />
5365                 <!-- NOTE: In case of Word6 it's ZERO.  The expected values
5366                      were Word8 specific. -->
5367                 <!--    <limitation value="0xBF|0xC1" /> -->
5368                 <!-- </uint16> -->
5369                 <uint32 name="IKey" />
5370                 <uint8 name="envr" />
5371                 <!-- NOTE: Some Word8 files have different values. -->
5372                 <!--    <limitation value="0" /> -->
5373                 <!-- </uint8> -->
5374                 <bit name="fMac" />
5375                 <!-- NOTE: Some Word8 files have different values. -->
5376                 <!--    <limitation value="false" /> -->
5377                 <!-- </bit> -->
5378                 <bit name="fEmptySpecial" />
5379                 <bit name="fLoadOverridePage" />
5380                 <bit name="reserved1" />
5381                 <bit name="reserved2" />
5382                 <uint3 name="fSpare0" />
5383                 <uint16 name="reserved3" />
5384                 <!-- NOTE: Some Word8 files have different values. -->
5385                 <!--    <limitation value="0" /> -->
5386                 <!-- </uint16> -->
5387                 <uint16 name="reserved4" />
5388                 <!-- NOTE: Some Word8 files have different values. -->
5389                 <!--    <limitation value="0" /> -->
5390                 <!-- </uint16> -->
5391                 <uint32 name="reserved5" />
5392                 <uint32 name="reserved6" />
5393         </struct>
5394         <struct name="FibRgW97">
5395                 <uint16 name="reserved1" />
5396                 <uint16 name="reserved2" />
5397                 <uint16 name="reserved3" />
5398                 <uint16 name="reserved4" />
5399                 <uint16 name="reserved5" />
5400                 <uint16 name="reserved6" />
5401                 <uint16 name="reserved7" />
5402                 <uint16 name="reserved8" />
5403                 <uint16 name="reserved9" />
5404                 <uint16 name="reserved10" />
5405                 <uint16 name="reserved11" />
5406                 <uint16 name="reserved12" />
5407                 <uint16 name="reserved13" />
5408                 <uint16 name="lidFE" />
5409         </struct>
5410         <struct name="FibRgLw97">
5411                 <uint32 name="cbMac" />
5412                 <uint32 name="reserved1" />
5413                 <uint32 name="reserved2" />
5414                 <int32 name="ccpText">
5415                         <limitation expression="&gt;=0" />
5416                 </int32>
5417                 <int32 name="ccpFtn">
5418                         <limitation expression="&gt;=0" />
5419                 </int32>
5420                 <int32 name="ccpHdd">
5421                         <limitation expression="&gt;=0" />
5422                 </int32>
5423                 <uint32 name="reserved3">
5424                         <limitation value="0" />
5425                 </uint32>
5426                 <int32 name="ccpAtn">
5427                         <limitation expression="&gt;=0" />
5428                 </int32>
5429                 <int32 name="ccpEdn">
5430                         <limitation expression="&gt;=0" />
5431                 </int32>
5432                 <int32 name="ccpTxbx">
5433                         <limitation expression="&gt;=0" />
5434                 </int32>
5435                 <int32 name="ccpHdrTxbx">
5436                         <limitation expression="&gt;=0" />
5437                 </int32>
5438                 <uint32 name="reserved4" />
5439                 <uint32 name="reserved5" />
5440                 <uint32 name="reserved6" />
5441                 <uint32 name="reserved7" />
5442                 <uint32 name="reserved8" />
5443                 <uint32 name="reserved9" />
5444                 <uint32 name="reserved10" />
5445                 <uint32 name="reserved11" />
5446                 <uint32 name="reserved12" />
5447                 <uint32 name="reserved13">
5448                         <limitation value="0" />
5449                 </uint32>
5450                 <uint32 name="reserved14">
5451                         <limitation value="0" />
5452                 </uint32>
5453         </struct>
5454         <struct name="FibRgFcLcb97">
5455                 <uint32 name="fcStshfOrig" />
5456                 <uint32 name="lcbStshfOrig" />
5457                 <uint32 name="fcStshf" />
5458                 <uint32 name="lcbStshf" />
5459                 <uint32 name="fcPlcffndRef" />
5460                 <uint32 name="lcbPlcffndRef" />
5461                 <uint32 name="fcPlcffndTxt" />
5462                 <uint32 name="lcbPlcffndTxt" />
5463                 <uint32 name="fcPlcfandRef" />
5464                 <uint32 name="lcbPlcfandRef" />
5465                 <uint32 name="fcPlcfandTxt" />
5466                 <uint32 name="lcbPlcfandTxt" />
5467                 <uint32 name="fcPlcfSed" />
5468                 <uint32 name="lcbPlcfSed" />
5469                 <uint32 name="fcPlcPad" />
5470                 <uint32 name="lcbPlcPad" />
5471                 <uint32 name="fcPlcfPhe" />
5472                 <uint32 name="lcbPlcfPhe" />
5473                 <uint32 name="fcSttbfGlsy" />
5474                 <uint32 name="lcbSttbfGlsy" />
5475                 <uint32 name="fcPlcfGlsy" />
5476                 <uint32 name="lcbPlcfGlsy" />
5477                 <uint32 name="fcPlcfHdd" />
5478                 <uint32 name="lcbPlcfHdd" />
5479                 <uint32 name="fcPlcfBteChpx" />
5480                 <uint32 name="lcbPlcfBteChpx" />
5481                 <uint32 name="fcPlcfBtePapx" />
5482                 <uint32 name="lcbPlcfBtePapx" />
5483                 <uint32 name="fcPlcfSea" />
5484                 <uint32 name="lcbPlcfSea" />
5485                 <uint32 name="fcSttbfFfn" />
5486                 <uint32 name="lcbSttbfFfn" />
5487                 <uint32 name="fcPlcfFldMom" />
5488                 <uint32 name="lcbPlcfFldMom" />
5489                 <uint32 name="fcPlcfFldHdr" />
5490                 <uint32 name="lcbPlcfFldHdr" />
5491                 <uint32 name="fcPlcfFldFtn" />
5492                 <uint32 name="lcbPlcfFldFtn" />
5493                 <uint32 name="fcPlcfFldAtn" />
5494                 <uint32 name="lcbPlcfFldAtn" />
5495                 <uint32 name="fcPlcfFldMcr" />
5496                 <uint32 name="lcbPlcfFldMcr" />
5497                 <uint32 name="fcSttbfBkmk" />
5498                 <uint32 name="lcbSttbfBkmk" />
5499                 <uint32 name="fcPlcfBkf" />
5500                 <uint32 name="lcbPlcfBkf" />
5501                 <uint32 name="fcPlcfBkl" />
5502                 <uint32 name="lcbPlcfBkl" />
5503                 <uint32 name="fcCmds" />
5504                 <uint32 name="lcbCmds" />
5505                 <uint32 name="fcUnused1" />
5506                 <uint32 name="lcbUnused1" />
5507                 <uint32 name="fcSttbfMcr" />
5508                 <uint32 name="lcbSttbfMcr" />
5509                 <uint32 name="fcPrDrvr" />
5510                 <uint32 name="lcbPrDrvr" />
5511                 <uint32 name="fcPrEnvPort" />
5512                 <uint32 name="lcbPrEnvPort" />
5513                 <uint32 name="fcPrEnvLand" />
5514                 <uint32 name="lcbPrEnvLand" />
5515                 <uint32 name="fcWss" />
5516                 <uint32 name="lcbWss" />
5517                 <uint32 name="fcDop" />
5518                 <uint32 name="lcbDop" />
5519                 <uint32 name="fcSttbfAssoc" />
5520                 <uint32 name="lcbSttbfAssoc" />
5521                 <uint32 name="fcClx" />
5522                 <uint32 name="lcbClx" />
5523                 <uint32 name="fcPlcfPgdFtn" />
5524                 <uint32 name="lcbPlcfPgdFtn" />
5525                 <uint32 name="fcAutosaveSource" />
5526                 <uint32 name="lcbAutosaveSource" />
5527                 <uint32 name="fcGrpXstAtnOwners" />
5528                 <uint32 name="lcbGrpXstAtnOwners" />
5529                 <uint32 name="fcSttbfAtnBkmk" />
5530                 <uint32 name="lcbSttbfAtnBkmk" />
5531                 <uint32 name="fcUnused2" />
5532                 <uint32 name="lcbUnused2" />
5533                 <uint32 name="fcUnused3" />
5534                 <uint32 name="lcbUnused3" />
5535                 <uint32 name="fcPlcSpaMom" />
5536                 <uint32 name="lcbPlcSpaMom" />
5537                 <uint32 name="fcPlcSpaHdr" />
5538                 <uint32 name="lcbPlcSpaHdr" />
5539                 <uint32 name="fcPlcfAtnBkf" />
5540                 <uint32 name="lcbPlcfAtnBkf" />
5541                 <uint32 name="fcPlcfAtnBkl" />
5542                 <uint32 name="lcbPlcfAtnBkl" />
5543                 <uint32 name="fcPms" />
5544                 <uint32 name="lcbPms" />
5545                 <uint32 name="fcFormFldSttbs" />
5546                 <uint32 name="lcbFormFldSttbs" />
5547                 <uint32 name="fcPlcfendRef" />
5548                 <uint32 name="lcbPlcfendRef" />
5549                 <uint32 name="fcPlcfendTxt" />
5550                 <uint32 name="lcbPlcfendTxt" />
5551                 <uint32 name="fcPlcfFldEdn" />
5552                 <uint32 name="lcbPlcfFldEdn" />
5553                 <uint32 name="fcUnused4" />
5554                 <uint32 name="lcbUnused4" />
5555                 <uint32 name="fcDggInfo" />
5556                 <uint32 name="lcbDggInfo" />
5557                 <uint32 name="fcSttbfRMark" />
5558                 <uint32 name="lcbSttbfRMark" />
5559                 <uint32 name="fcSttbfCaption" />
5560                 <uint32 name="lcbSttbfCaption" />
5561                 <uint32 name="fcSttbfAutoCaption" />
5562                 <uint32 name="lcbSttbfAutoCaption" />
5563                 <uint32 name="fcPlcfWkb" />
5564                 <uint32 name="lcbPlcfWkb" />
5565                 <uint32 name="fcPlcfSpl" />
5566                 <uint32 name="lcbPlcfSpl" />
5567                 <uint32 name="fcPlcftxbxTxt" />
5568                 <uint32 name="lcbPlcftxbxTxt" />
5569                 <uint32 name="fcPlcfFldTxbx" />
5570                 <uint32 name="lcbPlcfFldTxbx" />
5571                 <uint32 name="fcPlcfHdrtxbxTxt" />
5572                 <uint32 name="lcbPlcfHdrtxbxTxt" />
5573                 <uint32 name="fcPlcffldHdrTxbx" />
5574                 <uint32 name="lcbPlcffldHdrTxbx" />
5575                 <uint32 name="fcStwUser" />
5576                 <uint32 name="lcbStwUser" />
5577                 <uint32 name="fcSttbTtmbd" />
5578                 <uint32 name="lcbSttbTtmbd" />
5579                 <uint32 name="fcCookieData" />
5580                 <uint32 name="lcbCookieData" />
5581                 <uint32 name="fcPgdMotherOldOld" />
5582                 <uint32 name="lcbPgdMotherOldOld" />
5583                 <uint32 name="fcBkdMotherOldOld" />
5584                 <uint32 name="lcbBkdMotherOldOld" />
5585                 <uint32 name="fcPgdFtnOldOld" />
5586                 <uint32 name="lcbPgdFtnOldOld" />
5587                 <uint32 name="fcBkdFtnOldOld" />
5588                 <uint32 name="lcbBkdFtnOldOld" />
5589                 <uint32 name="fcPgdEdnOldOld" />
5590                 <uint32 name="lcbPgdEdnOldOld" />
5591                 <uint32 name="fcBkdEdnOldOld" />
5592                 <uint32 name="lcbBkdEdnOldOld" />
5593                 <uint32 name="fcSttbfIntlFld" />
5594                 <uint32 name="lcbSttbfIntlFld" />
5595                 <uint32 name="fcRouteSlip" />
5596                 <uint32 name="lcbRouteSlip" />
5597                 <uint32 name="fcSttbSavedBy" />
5598                 <uint32 name="lcbSttbSavedBy" />
5599                 <uint32 name="fcSttbFnm" />
5600                 <uint32 name="lcbSttbFnm" />
5601                 <uint32 name="fcPlfLst" />
5602                 <uint32 name="lcbPlfLst" />
5603                 <uint32 name="fcPlfLfo" />
5604                 <uint32 name="lcbPlfLfo" />
5605                 <uint32 name="fcPlcfTxbxBkd" />
5606                 <uint32 name="lcbPlcfTxbxBkd" />
5607                 <uint32 name="fcPlcfTxbxHdrBkd" />
5608                 <uint32 name="lcbPlcfTxbxHdrBkd" />
5609                 <uint32 name="fcDocUndoWord9" />
5610                 <uint32 name="lcbDocUndoWord9" />
5611                 <uint32 name="fcRgbUse" />
5612                 <uint32 name="lcbRgbUse" />
5613                 <uint32 name="fcUsp" />
5614                 <uint32 name="lcbUsp" />
5615                 <uint32 name="fcUskf" />
5616                 <uint32 name="lcbUskf" />
5617                 <uint32 name="fcPlcupcRgbUse" />
5618                 <uint32 name="lcbPlcupcRgbUse" />
5619                 <uint32 name="fcPlcupcUsp" />
5620                 <uint32 name="lcbPlcupcUsp" />
5621                 <uint32 name="fcSttbGlsyStyle" />
5622                 <uint32 name="lcbSttbGlsyStyle" />
5623                 <uint32 name="fcPlgosl" />
5624                 <uint32 name="lcbPlgosl" />
5625                 <uint32 name="fcPlcocx" />
5626                 <uint32 name="lcbPlcocx" />
5627                 <uint32 name="fcPlcfBteLvc" />
5628                 <uint32 name="lcbPlcfBteLvc" />
5629                 <uint32 name="dwLowDateTime" />
5630                 <uint32 name="dwHighDateTime" />
5631                 <uint32 name="fcPlcfLvcPre10" />
5632                 <uint32 name="lcbPlcfLvcPre10" />
5633                 <uint32 name="fcPlcfAsumy" />
5634                 <uint32 name="lcbPlcfAsumy" />
5635                 <uint32 name="fcPlcfGram" />
5636                 <uint32 name="lcbPlcfGram" />
5637                 <uint32 name="fcSttbListNames" />
5638                 <uint32 name="lcbSttbListNames" />
5639                 <uint32 name="fcSttbfUssr" />
5640                 <uint32 name="lcbSttbfUssr" />
5641         </struct>
5642         <struct name="FibRgFcLcb2000">
5643                 <uint32 name="fcPlcfTch" />
5644                 <uint32 name="lcbPlcfTch" />
5645                 <uint32 name="fcRmdThreading" />
5646                 <uint32 name="lcbRmdThreading" />
5647                 <uint32 name="fcMid" />
5648                 <uint32 name="lcbMid" />
5649                 <uint32 name="fcSttbRgtplc" />
5650                 <uint32 name="lcbSttbRgtplc" />
5651                 <uint32 name="fcMsoEnvelope" />
5652                 <uint32 name="lcbMsoEnvelope" />
5653                 <uint32 name="fcPlcfLad" />
5654                 <uint32 name="lcbPlcfLad" />
5655                 <uint32 name="fcRgDofr" />
5656                 <uint32 name="lcbRgDofr" />
5657                 <uint32 name="fcPlcosl" />
5658                 <uint32 name="lcbPlcosl" />
5659                 <uint32 name="fcPlcfCookieOld" />
5660                 <uint32 name="lcbPlcfCookieOld" />
5661                 <uint32 name="fcPgdMotherOld" />
5662                 <uint32 name="lcbPgdMotherOld" />
5663                 <uint32 name="fcBkdMotherOld" />
5664                 <uint32 name="lcbBkdMotherOld" />
5665                 <uint32 name="fcPgdFtnOld" />
5666                 <uint32 name="lcbPgdFtnOld" />
5667                 <uint32 name="fcBkdFtnOld" />
5668                 <uint32 name="lcbBkdFtnOld" />
5669                 <uint32 name="fcPgdEdnOld" />
5670                 <uint32 name="lcbPgdEdnOld" />
5671                 <uint32 name="fcBkdEdnOld" />
5672                 <uint32 name="lcbBkdEdnOld" />
5673         </struct>
5674         <struct name="FibRgFcLcb2002">
5675                 <uint32 name="fcUnused1" />
5676                 <uint32 name="lcbUnused1" />
5677                 <uint32 name="fcPlcfPgp" />
5678                 <uint32 name="lcbPlcfPgp" />
5679                 <uint32 name="fcPlcfuim" />
5680                 <uint32 name="lcbPlcfuim" />
5681                 <uint32 name="fcPlfguidUim" />
5682                 <uint32 name="lcbPlfguidUim" />
5683                 <uint32 name="fcAtrdExtra" />
5684                 <uint32 name="lcbAtrdExtra" />
5685                 <uint32 name="fcPlrsid" />
5686                 <uint32 name="lcbPlrsid" />
5687                 <uint32 name="fcSttbfBkmkFactoid" />
5688                 <uint32 name="lcbSttbfBkmkFactoid" />
5689                 <uint32 name="fcPlcfBkfFactoid" />
5690                 <uint32 name="lcbPlcfBkfFactoid" />
5691                 <uint32 name="fcPlcfcookie" />
5692                 <uint32 name="lcbPlcfcookie" />
5693                 <uint32 name="fcPlcfBklFactoid" />
5694                 <uint32 name="lcbPlcfBklFactoid" />
5695                 <uint32 name="fcFactoidData" />
5696                 <uint32 name="lcbFactoidData" />
5697                 <uint32 name="fcDocUndo" />
5698                 <uint32 name="lcbDocUndo" />
5699                 <uint32 name="fcSttbfBkmkFcc" />
5700                 <uint32 name="lcbSttbfBkmkFcc" />
5701                 <uint32 name="fcPlcfBkfFcc" />
5702                 <uint32 name="lcbPlcfBkfFcc" />
5703                 <uint32 name="fcPlcfBklFcc" />
5704                 <uint32 name="lcbPlcfBklFcc" />
5705                 <uint32 name="fcSttbfbkmkBPRepairs" />
5706                 <uint32 name="lcbSttbfbkmkBPRepairs" />
5707                 <uint32 name="fcPlcfbkfBPRepairs" />
5708                 <uint32 name="lcbPlcfbkfBPRepairs" />
5709                 <uint32 name="fcPlcfbklBPRepairs" />
5710                 <uint32 name="lcbPlcfbklBPRepairs" />
5711                 <uint32 name="fcPmsNew" />
5712                 <uint32 name="lcbPmsNew" />
5713                 <uint32 name="fcODSO" />
5714                 <uint32 name="lcbODSO" />
5715                 <uint32 name="fcPlcfpmiOldXP" />
5716                 <uint32 name="lcbPlcfpmiOldXP" />
5717                 <uint32 name="fcPlcfpmiNewXP" />
5718                 <uint32 name="lcbPlcfpmiNewXP" />
5719                 <uint32 name="fcPlcfpmiMixedXP" />
5720                 <uint32 name="lcbPlcfpmiMixedXP" />
5721                 <uint32 name="fcUnused2" />
5722                 <uint32 name="lcbUnused2" />
5723                 <uint32 name="fcPlcffactoid" />
5724                 <uint32 name="lcbPlcffactoid" />
5725         </struct>
5726         <struct name="Table">
5727                 <type name="stsh" type="STSH" size="468" />
5728                 <type name="plcfSed" type="PlcfSed" size="20" />
5729                 <!--
5730                         size should be gotten from lcbPlcfSed
5731                 -->
5732                 <type name="plcfHdd" type="Plcfhdd" size="52" />
5733                 <type name="plcfBteChpx" type="PlcBteChpx" size="12" />
5734                 <type name="plcfBtePapx" type="PlcfBtePapx" size="12" />
5735                 <type name="cmds" type="Tcg" size="12" />
5736                 <type name="clx" type="Clx" size="21" />
5737                 <type name="sttbfFfn" type="SttbfFfn" size="246" />
5738                 <uint8 name="dop" count="600" />
5739         </struct>
5740         <struct name="STSH">
5741                 <type name="lpstshi" type="LPStshi" />
5742                 <type name="rglpstd" type="LPStd" count="20" />
5743         </struct>
5744         <struct name="LPStshi">
5745                 <uint16 name="cbSthi" />
5746                 <uint8 name="stshi" count="cbSthi" />
5747         </struct>
5748         <struct name="LPStd">
5749                 <uint16 name="cbStd" />
5750                 <uint8 name="std" count="cbStd" />
5751                 <uint8 name="padding" condition="cbStd%2==1" />
5752         </struct>
5753         <struct name="PlcfSed">
5754                 <uint32 name="aCP" count="2" />
5755                 <type name="aSed" type="Sed" count="1" />
5756         </struct>
5757         <struct name="Sed">
5758                 <uint16 name="fn" />
5759                 <int32 name="fcSepx" />
5760                 <uint16 name="fnMpr" />
5761                 <uint32 name="fcMpr" />
5762         </struct>
5763         <struct name="Plcfhdd">
5764                 <uint32 name="aCP" count="13" />
5765         </struct>
5766         <struct name="PlcBteChpx">
5767                 <uint32 name="aCP" count="2" />
5768                 <uint32 name="aPnBteChpx" count="1" />
5769         </struct>
5770         <struct name="PlcfBtePapx">
5771                 <uint32 name="aCP" count="2" />
5772                 <uint32 name="aPnBteChpx" count="1" />
5773         </struct>
5774         <struct name="Tcg">
5775                 <uint8 name="nTcgVer">
5776                         <limitation value="0" />
5777                 </uint8>
5778                 <uint8 name="todo" count="11" />
5779         </struct>
5780         <struct name="Clx">
5781                 <type name="RgPrc" type="Pcr" array="true" />
5782                 <type name="pcdt" type="Pcdt" />
5783         </struct>
5784         <struct name="Pcr">
5785                 <uint8 name="clxt">
5786                         <limitation value="1" />
5787                 </uint8>
5788                 <type name="prcData" type="PrcData" />
5789         </struct>
5790         <struct name="PrcData">
5791                 <int16 name="cbGrpprl">
5792                         <limitation expression="&gt;=0" />
5793                         <limitation expression="&lt;=16290" />
5794                         <limitation expression="%2==0" />
5795                 </int16>
5796                 <type name="GrpPrl" type="Sprm" count="cbGrpprl/2" />
5797         </struct>
5798         <struct name="Sprm">
5799                 <uint9 name="ispmd" />
5800                 <bit name="fSpec" />
5801                 <uint3 name="sgc" />
5802                 <uint3 name="spra" />
5803         </struct>
5804         <struct name="Pcdt">
5805                 <uint8 name="clxt">
5806                         <limitation value="2" />
5807                 </uint8>
5808                 <uint32 name="lcb" />
5809                 <type name="PlcPcd" type="Pcd" count="lcb/8" />
5810         </struct>
5811         <struct name="Pcd">
5812                 <bit name="fNoParaLast" />
5813                 <bit name="fR1" />
5814                 <bit name="fDirtly">
5815                         <limitation value="false" />
5816                 </bit>
5817                 <bit name="fR2" />
5818                 <uint12 name="fR3" />
5819                 <type name="fc" type="FCompressed" />
5820                 <type name="prm" type="Prm" />
5821         </struct>
5822         <struct name="FCompressed">
5823                 <uint30 name="fc" />
5824                 <bit name="fCompressed" />
5825                 <bit name="r1" />
5826         </struct>
5827         <struct name="Prm">
5828                 <choice name="prm">
5829                         <type type="Prm0" />
5830                         <type type="Prm1" />
5831                 </choice>
5832         </struct>
5833         <struct name="Prm0">
5834                 <bit name="fComplex">
5835                         <limitation value="false" />
5836                 </bit>
5837                 <uint7 name="isprm" />
5838                 <uint8 name="val" />
5839         </struct>
5840         <struct name="Prm1">
5841                 <bit name="fComplex">
5842                         <limitation value="true" />
5843                 </bit>
5844                 <uint15 name="igrpprl" />
5845         </struct>
5846         <struct name="SttbfFfn">
5847                 <uint16 name="cData" />
5848                 <uint16 name="cbExtra">
5849                         <limitation value="0" />
5850                 </uint16>
5851                 <type name="data" type="SttbfFfnEntry" count="cData" />
5852         </struct>
5853         <struct name="SttbfFfnEntry">
5854                 <uint8 name="cchData" />
5855                 <uint8 name="Data" count="cchData" />
5856         </struct>
5857         <struct name="CodePageString">
5858                 <!--  limitation here is complicated: todo -->
5859                 <uint32 name="size">
5860                         <!--  <limitation expression="%2==0" /> -->
5861                 </uint32>
5862                 <!--  needs padding to a multiple of 4 -->
5863                 <uint8 name="characters" count="4*(size/4)+((size%4!=0)?4:0)" />
5864         </struct>
5865         <struct name="FILETIME">
5866                 <uint32 name="dwLowDateTime" />
5867                 <uint32 name="dwHighDateTime" />
5868         </struct>
5869         <struct name="ClipboardData">
5870                 <uint32 name="size" />
5871                 <uint32 name="format" />
5872                 <!--  needs padding to a multiple of 4 -->
5873                 <uint8 name="data" count="4*(size/4)+((size%4!=0)?4:0)-4" />
5874         </struct>
5875         <struct name="PropertyIdentifierAndOffset">
5876                 <uint32 name="propertyIdentifier" />
5877                 <uint32 name="offset" />
5878         </struct>
5879         <struct name="TypedPropertyValue">
5880                 <!--
5881                         size="../PropertySetStream._count()"">
5882                 -->
5883                 <uint16 name="type" />
5884                 <uint16 name="padding">
5885                         <!--    <limitation value="0" />-->
5886                 </uint16>
5887                 <uint16 name="vt_I2" condition="type==2" />
5888                 <uint16 name="paddingI2" condition="type==2" />
5889                 <uint32 name="vg_ERROR" condition="type==10" />
5890                 <type name="vt_lpstr" type="CodePageString" condition="type==30" />
5891                 <type name="vg_FILETIME" type="FILETIME" condition="type==64" />
5892                 <type name="vg_CF" type="ClipboardData" condition="type==71" />
5893                 <!--
5894                         <uint8 name="padding"
5895                         count="../PropertySetStream[position()=this._arraypos]" />
5896                 -->
5897         </struct>
5898         <struct name="PropertySet">
5899                 <uint32 name="size" />
5900                 <uint32 name="numProperties" />
5901                 <type name="propertyIdentifierAndOffset" type="PropertyIdentifierAndOffset"
5902                         count="numProperties" />
5903                 <type name="property" type="TypedPropertyValue" count="numProperties" />
5904         </struct>
5905         <struct name="PropertySetStream">
5906                 <uint16 name="byteOrder">
5907                         <limitation value="0xFFFE" />
5908                 </uint16>
5909                 <uint16 name="version" />
5910                 <uint32 name="systemIdentifier" />
5911                 <uint8 name="clsID" count="16" />
5912                 <uint32 name="numPropertySets">
5913                         <limitation value="1|2" />
5914                 </uint32>
5915                 <uint8 name="fmtID0" count="16" />
5916                 <uint32 name="offset0" />
5917                 <uint8 name="fmtID1" count="16" condition="numPropertySets==2" />
5918                 <uint32 name="offset1" condition="numPropertySets==2" />
5919                 <type name="propertySet1" type="PropertySet" />
5920                 <type name="propertySet2" type="PropertySet" condition="numPropertySets==2" />
5921                 <type name="padding" type="Byte" array="true" />
5922         </struct>
5923         <struct name="SummaryInformationPropertySetStream">
5924                 <type name="propertySet" type="PropertySetStream">
5925                         <limitation name="version" value="0" />
5926                 </type>
5927         </struct>
5928         <struct name="DocumentSummaryInformationPropertySetStream">
5929                 <type name="propertySet" type="PropertySetStream">
5930                         <limitation name="version" value="0" />
5931                 </type>
5932         </struct>
5933         <stream name="PowerPointDocument" key="PowerPoint Document"
5934                 type="PowerPointStructs" />
5935         <stream name="CurrentUser" key="Current User" type="CurrentUserStream" />
5936         <stream name="Pictures" key="Pictures" type="OfficeArtBStoreDelay" />
5937         <stream name="WordDocument" key="WordDocument" type="WordDocument" />
5938         <stream name="1Table" key="1Table" type="Table" />
5939         <stream name="SummaryInformation" key="SummaryInformation"
5940                 type="SummaryInformationPropertySetStream" />
5941         <stream name="DocumentSummaryInformation" key="DocumentSummaryInformation"
5942                 type="DocumentSummaryInformationPropertySetStream" />
5943         <!--
5944                 two temporary streams to work around the fact that we cannot parse
5945                 StyleTextPropAtom
5946         -->
5947         <stream name="textPFRun" key="textPFRun" type="TextPFRun" />
5948         <stream name="textCFRun" key="textCFRun" type="TextCFRun" />
5949 </mso>