<xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
<xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
<xs:attribute name="ModuleTypeList" type="ModuleTypeList" use="optional"/>\r
+ <xs:attribute name="Name" type="KeywordType" use="optional"/>\r
</xs:attributeGroup>\r
<xs:attributeGroup name="LibraryAttributes">\r
<!-- LibraryAttributes is used for Libraries / Library elements in FPD files -->\r
<xs:attribute name="RecommendedInstanceVersion" type="xs:decimal" use="optional"/>\r
<xs:attribute name="RecommendedInstanceGuid" type="GuidType" use="optional"/>\r
<xs:attribute name="Usage" type="LibraryUsage" use="required"/>\r
+ <xs:attribute name="Name" type="xs:normalizedString" use="optional"/>\r
</xs:attributeGroup>\r
<xs:attributeGroup name="MsaGuidAttributes">\r
<xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
<!-- DO NOT USE remove Version from use, Start using ModuleVersion instead -->\r
<xs:attribute name="Version" type="VersionDataType" use="optional"/>\r
</xs:attributeGroup>\r
+ <xs:attributeGroup name="FfsAttributes">\r
+ <xs:attribute name="FfsFormatKeyword" type="FfsNameType" use="required"/>\r
+ <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>\r
+ </xs:attributeGroup> \r
<xs:attributeGroup name="MsaAttributes">\r
<!-- DO NOT USE remove Arch from use, use SupArchList instead -->\r
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
<xs:element minOccurs="0" maxOccurs="unbounded" ref="Ffs"/>\r
<xs:element minOccurs="0" maxOccurs="1" ref="Sections"/>\r
<xs:element minOccurs="0" maxOccurs="unbounded" ref="Filenames"/>\r
+ <xs:element ref="Options" minOccurs="0" maxOccurs="1"/>\r
<xs:sequence minOccurs="0">\r
<xs:element minOccurs="0" maxOccurs="unbounded" name="Option">\r
<xs:complexType>\r
</xs:complexType>\r
</xs:element>\r
</xs:sequence>\r
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/> \r
</xs:sequence>\r
<xs:attribute name="ToolChain" type="ToolChains"/>\r
</xs:complexType>\r
</xs:element>\r
+ <xs:element name="Options">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element minOccurs="1" maxOccurs="unbounded" ref="Option"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="Option">\r
+ <!-- This element is used to store flags from the Tools -->\r
+ <xs:complexType>\r
+ <xs:simpleContent>\r
+ <xs:extension base="xs:normalizedString">\r
+ <xs:attributeGroup ref="OptionAttributes"/>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ </xs:element> \r
+ <xs:element name="ModuleBuildOptions">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##local"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="ModuleSaBuildOptions">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element minOccurs="0" maxOccurs="1" name="FvBinding" type="FfsNameType"/>\r
+ <!-- The FfsFileNameGuid allows the Platform Integrator to specify a GUID for the FFS File Name GUID -->\r
+ <xs:element minOccurs="0" maxOccurs="1" name="FfsFileNameGuid" type="GuidType"/>\r
+ <!-- If binding is specified, you MUST specify the FfsFormatKey -->\r
+ <xs:element minOccurs="0" maxOccurs="1" name="FfsFormatKey" type="FfsNameType"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="Options"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="ModuleDefinitions">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element minOccurs="1" maxOccurs="1" name="SupportedArchitectures" type="ArchListType"/>\r
+ <xs:element minOccurs="1" maxOccurs="1" name="BinaryModule" type="xs:boolean" default="false"/>\r
+ <xs:element minOccurs="1" maxOccurs="1" name="OutputFileBasename" type="FileNameConvention"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element> \r
<xs:element name="C_Name" type="C_Name">\r
<xs:annotation>\r
<xs:documentation xml:lang="en">C_Name is valid for all Description Files</xs:documentation>\r
<xs:complexType>\r
<xs:sequence minOccurs="1">\r
<xs:element minOccurs="0" maxOccurs="1" name="PcdIsDriver" type="PcdDriverTypes"/>\r
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="Specification"/>\r
<xs:element minOccurs="0" maxOccurs="unbounded" name="Extern">\r
<xs:complexType>\r
<xs:choice minOccurs="1">\r
<xs:attributeGroup ref="ExternAttributes"/>\r
</xs:complexType>\r
</xs:element>\r
- <xs:element minOccurs="0" maxOccurs="unbounded" ref="Specification"/>\r
<!-- Remove Arch and use Arch Attribute in above. -->\r
<xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
<xs:complexType>\r
<xs:annotation>\r
<xs:documentation xml:lang="en">Describe the valid content of a GUID element in and MSA file.</xs:documentation>\r
</xs:annotation>\r
- <xs:complexType>\r
+ <xs:complexType mixed="true">\r
<xs:sequence minOccurs="0" maxOccurs="1">\r
<xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
<!-- DO NOT USE removing GuidValue from use -->\r
<xs:element name="IndustryStdHeader">\r
<xs:complexType>\r
<xs:sequence>\r
- <xs:element minOccurs="1" maxOccurs="1" name="Header" type="UiNameType"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" name="Header" type="UiNameType"/>\r
<xs:element minOccurs="1" maxOccurs="1" name="IncludeHeader" type="PathAndFilename"/>\r
<xs:element minOccurs="1" maxOccurs="1" ref="HelpText"/>\r
</xs:sequence>\r
<xs:complexType>\r
<xs:sequence minOccurs="1">\r
<xs:element minOccurs="0" maxOccurs="unbounded" name="Library">\r
- <xs:complexType>\r
+ <xs:complexType mixed="true">\r
<xs:simpleContent>\r
<xs:extension base="xs:NCName">\r
<xs:attributeGroup ref="LibraryAttributes"/>\r
</xs:simpleContent>\r
</xs:complexType>\r
</xs:element>\r
- <xs:element minOccurs="1" maxOccurs="1" ref="IncludeHeader"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="IncludeHeader"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" name="RecommendedInstanceGuid" type="GuidType"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" name="RecommendedInstanceVersion" type="xs:decimal"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="HelpText"/>\r
</xs:sequence>\r
</xs:complexType>\r
</xs:element>\r
<xs:complexType>\r
<xs:sequence>\r
<xs:element minOccurs="1" maxOccurs="unbounded" ref="LibraryClassDeclaration"/>\r
+ <xs:element name="LibraryClass" minOccurs="0" maxOccurs="unbounded">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="IncludeHeader" type="PathAndFilename" minOccurs="1" maxOccurs="1"/>\r
+ <xs:element ref="HelpText" minOccurs="1" maxOccurs="1"/>\r
+ </xs:sequence>\r
+ <xs:attributeGroup ref="LibraryClassAttributes"/>\r
+ </xs:complexType>\r
+ </xs:element> \r
</xs:sequence>\r
</xs:complexType>\r
</xs:element>\r
</xs:simpleContent>\r
</xs:complexType>\r
</xs:element>\r
+ <xs:element name="ProcessStep">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element minOccurs="1" maxOccurs="1" name="ToolName" type="xs:string"/>\r
+ <xs:element minOccurs="1" maxOccurs="1" name="ToolArgs" type="xs:string"/>\r
+ <!-- Input patterns to be processed by the tool above -->\r
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="InputPattern" type="xs:string"/>\r
+ <!-- A pattern to match for the output -->\r
+ <xs:element minOccurs="1" maxOccurs="1" name="OutputPattern" type="xs:string"/>\r
+ </xs:sequence>\r
+ <xs:attributeGroup ref="SectionAttributes"/>\r
+ </xs:complexType>\r
+ </xs:element> \r
+ <xs:element name="FfsFormatDeclarations">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="FfsFormatDeclaration">\r
+ <!-- Required Attributes are the FfsFormatKeyword and SupModuleList -->\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element minOccurs="1" maxOccurs="unbounded" ref="ProcessStep"/>\r
+ </xs:sequence>\r
+ <xs:attributeGroup ref="FfsAttributes"/>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="PackageDefinitions">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element minOccurs="1" maxOccurs="1" name="ReadOnly" type="xs:boolean" default="false"/>\r
+ <xs:element minOccurs="1" maxOccurs="1" name="RePackage" type="xs:boolean" default="false"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element> \r
<xs:element name="PCDs">\r
<!-- PCDs section is going away to be replaced by something else TB Named later -->\r
<xs:annotation>\r
</xs:annotation>\r
<xs:complexType>\r
<xs:sequence maxOccurs="unbounded">\r
- <xs:element minOccurs="1" maxOccurs="unbounded" ref="PackageName"/>\r
+ <xs:choice>\r
+ <xs:element minOccurs="1" maxOccurs="unbounded" ref="Package"/>\r
+ <xs:element minOccurs="1" maxOccurs="unbounded" ref="PackageName"/> \r
+ </xs:choice>\r
</xs:sequence>\r
<xs:attributeGroup ref="PackageNameAttributes"/>\r
</xs:complexType>\r
</xs:annotation>\r
<xs:complexType>\r
<xs:sequence maxOccurs="unbounded">\r
- <xs:element minOccurs="1" name="Package">\r
+ <xs:element minOccurs="0" name="Package">\r
<xs:annotation>\r
<xs:documentation xml:lang="en">This tag is used in the Framework Package Database File to track individual package information. The Path is a relative path to the SPD File.</xs:documentation>\r
</xs:annotation>\r
<xs:attributeGroup ref="PackageAttributes"/>\r
</xs:complexType>\r
</xs:element>\r
+ <xs:element name="Filename" type="PathAndFilename" minOccurs="0" maxOccurs="unbounded"/>\r
</xs:sequence>\r
</xs:complexType>\r
</xs:element>\r
+ <xs:element name="Package">\r
+ <xs:annotation>\r
+ <xs:documentation xml:lang="en">This tag is used in the Package Surface Area Description File to track package dependencies for a module (SPD) </xs:documentation>\r
+ </xs:annotation>\r
+ <xs:complexType mixed="true">\r
+ <xs:simpleContent>\r
+ <xs:extension base="UiNameType">\r
+ <xs:attributeGroup ref="PackageAttributes"/>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ </xs:element>\r
<xs:element name="PackageName">\r
<xs:annotation>\r
<xs:documentation xml:lang="en">This tag is used in the Package Surface Area Description File to track package dependencies for a module (SPD) </xs:documentation>\r
<xs:complexType>\r
<xs:sequence minOccurs="1" maxOccurs="unbounded">\r
<xs:element name="SystemTable">\r
- <xs:complexType>\r
+ <xs:complexType mixed="true">\r
<xs:sequence minOccurs="1" maxOccurs="unbounded">\r
- <xs:choice>\r
- <xs:element minOccurs="0" maxOccurs="1" name="GuidC_Name" type="GuidC_NameType"/>\r
- <!-- Remove Entry from Use -->\r
- <xs:element minOccurs="0" maxOccurs="1" name="Entry" type="xs:normalizedString"/>\r
- </xs:choice>\r
+ <!-- Remove Entry from Use -->\r
+ <xs:element minOccurs="0" maxOccurs="1" name="Entry" type="xs:normalizedString"/>\r
</xs:sequence>\r
<xs:attributeGroup ref="SystemTableAttributes"/>\r
</xs:complexType>\r
</xs:complexType>\r
</xs:element>\r
<xs:element name="Version" type="xs:normalizedString"/>\r
+ <xs:element name="FarList">\r
+ <xs:annotation>\r
+ <xs:documentation xml:lang="en">This tag is used in the Framework Package Database File to track all DISTRIBUTION packages (FAR files) installed in a workspace. (Database)</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename" type="PathAndFilename"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element> \r
</xs:schema>\r
<xs:enumeration value="SOMETIMES_PRODUCED"/>\r
</xs:restriction>\r
</xs:simpleType>\r
+ <xs:simpleType name="ModuleListType">\r
+ <xs:list itemType="FrameworkModuleTypes"/>\r
+ </xs:simpleType> \r
+ <xs:simpleType name="IntermediateOutputType">\r
+ <xs:restriction base="UCNameType">\r
+ <xs:enumeration value="MODULE"/>\r
+ <xs:enumeration value="UNIFIED"/>\r
+ </xs:restriction>\r
+ </xs:simpleType> \r
<xs:simpleType name="BuildTargets">\r
<xs:restriction base="xs:NCName">\r
<xs:enumeration value="DEBUG"/>\r
<xs:enumeration value="BOTH"/>\r
</xs:restriction>\r
</xs:simpleType>\r
+ <xs:simpleType name="BuildTargetList">\r
+ <xs:union memberTypes="UCNameType DEBUG RELEASE"/>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="DEBUG">\r
+ <xs:restriction base="UCNameType">\r
+ <xs:pattern value="DEBUG"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:simpleType name="RELEASE">\r
+ <xs:restriction base="UCNameType">\r
+ <xs:pattern value="RELEASE"/>\r
+ </xs:restriction>\r
+ </xs:simpleType> \r
<xs:simpleType name="ComponentExecutionPhase">\r
<xs:restriction base="UCNameType">\r
<xs:enumeration value="MDE"/>\r
<xs:element name="ToolArgs" type="xs:string"/>\r
</xs:sequence>\r
</xs:complexType>\r
+ <xs:simpleType name="FfsNameType">\r
+ <xs:annotation>\r
+ <xs:documentation xml:lang="en"> This defines what an FFS Name can consist of.</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:restriction base="xs:string">\r
+ <xs:pattern value="[a-zA-Z][_\-a-zA-Z0-9]*(.)?[a-zA-Z0-9]*"/>\r
+ </xs:restriction>\r
+ </xs:simpleType> \r
</xs:schema>\r
<xs:element minOccurs="0" maxOccurs="1" name="ModuleName" type="UiNameType"/>\r
</xs:choice>\r
<xs:element minOccurs="1" maxOccurs="1" ref="ModuleType"/>\r
- <xs:element minOccurs="1" maxOccurs="1" ref="ComponentType"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="ComponentType"/>\r
<xs:choice>\r
<!-- Guid needs to be removed -->\r
<xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\r
<!-- ModifiedDate needs to be removed -->\r
<xs:element minOccurs="0" maxOccurs="1" ref="ModifiedDate"/>\r
</xs:choice>\r
- <xs:element minOccurs="0" maxOccurs="1" name="SupportedArchitectures">\r
- <xs:simpleType>\r
- <xs:list itemType="SupportedArchitectures"/>\r
- </xs:simpleType>\r
- </xs:element>\r
<xs:element default="false" minOccurs="0" name="BinaryModule" type="xs:boolean"/>\r
<!-- Specification needs to be required - FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052 -->\r
<xs:element minOccurs="0" maxOccurs="1" ref="Specification"/>\r
</xs:complexType>\r
</xs:element>\r
</xs:choice>\r
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="Specification"/>\r
<xs:choice>\r
<!-- DO NOT USE! REMOVE PcdBuildDeclarations in FINAL -->\r
<xs:element minOccurs="0" maxOccurs="1" ref="PcdBuildDeclarations"/>\r
</xs:choice>\r
<!-- BuildOptions stays in FINAL -->\r
<xs:element minOccurs="0" maxOccurs="1" ref="BuildOptions"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="ModuleSaBuildOptions"/>\r
</xs:sequence>\r
<xs:attributeGroup ref="MsaAttributes"/>\r
</xs:complexType>\r
<xs:complexType>\r
<xs:sequence maxOccurs="unbounded">\r
<xs:element ref="Platform"/>\r
+ <xs:element name="Filename" type="PathAndFilename" minOccurs="0" maxOccurs="unbounded"/>\r
</xs:sequence>\r
</xs:complexType>\r
</xs:element>\r
</xs:sequence>\r
</xs:complexType>\r
</xs:element>\r
+ <xs:element name="FlashDeviceDefinitions">\r
+ <xs:complexType>\r
+ <xs:annotation>\r
+ <xs:documentation xml:lang="en">We allow specifying the Flash layout in this directory, or we allow specifying a flashmap filename</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:sequence>\r
+ <xs:element minOccurs="0" maxOccurs="1" name="FlashDefinition" type="FlashData"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="FvImages"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element> \r
+ <xs:element name="PlatformDefinitions">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <!-- This is the list of ALL architectures that are supported by this Platform -->\r
+ <xs:element minOccurs="1" maxOccurs="1" name="SupportedArchitectures" type="ArchListType"/>\r
+ <xs:element minOccurs="1" maxOccurs="1" name="BuildTargets" type="BuildTargetList"/>\r
+ <xs:element default="UNIFIED" name="IntermediateDirectories" type="IntermediateOutputType"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" name="OutputDirectory" type="xs:anyURI"/>\r
+ <!-- SkuInfo is only defined if Sku enabled -->\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="SkuInfo"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="FlashDeviceDefinitions"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="FfsFormatDeclarations"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element> \r
<xs:complexType name="Components">\r
<xs:sequence minOccurs="1" maxOccurs="unbounded">\r
<xs:element ref="ModuleSA"/>\r
<xs:pattern value="([0-9])+[a-zA-Z0-9]*(-?.?([a-zA-Z0-9])*)*"/>\r
</xs:restriction>\r
</xs:simpleType>\r
+ <xs:simpleType name="KeywordType">\r
+ <xs:restriction base="xs:normalizedString">\r
+ <xs:pattern value="[a-zA-Z]+(_*[a-zA-Z0-9]*)*"/>\r
+ </xs:restriction>\r
+ </xs:simpleType> \r
</xs:schema>\r
<xs:element minOccurs="1" maxOccurs="1" ref="FdbHeader"/>\r
<xs:element minOccurs="1" maxOccurs="1" ref="PackageList"/>\r
<xs:element minOccurs="0" maxOccurs="1" ref="PlatformList"/>\r
+ <xs:element minOccurs="1" maxOccurs="1" ref="FarList"/> \r
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>\r
</xs:sequence>\r
</xs:complexType>\r
</xs:element>\r
<xs:complexType>\r
<xs:sequence>\r
<xs:element minOccurs="1" maxOccurs="1" ref="PlatformHeader"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="PlatformDefinitions"/> \r
<xs:element minOccurs="0" maxOccurs="1" ref="SkuInfo"/>\r
<xs:element minOccurs="0" maxOccurs="1" ref="Flash"/>\r
<!-- DO NOT USE! removing TianoImage, use FrameworkModules instead. -->\r
<xs:complexType>\r
<xs:sequence>\r
<xs:element minOccurs="1" maxOccurs="1" ref="MsaHeader"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="ModuleDefinitions"/>\r
<xs:element minOccurs="0" maxOccurs="1" ref="LibraryClassDefinitions"/>\r
<xs:element minOccurs="1" maxOccurs="1" ref="SourceFiles"/>\r
<xs:choice minOccurs="0">\r
<xs:element minOccurs="0" maxOccurs="1" ref="PcdCoded"/>\r
</xs:choice>\r
<xs:element minOccurs="0" maxOccurs="1" ref="BuildOptions"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="ModuleBuildOptions"/>\r
<xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>\r
</xs:sequence>\r
</xs:complexType>\r
<xs:complexType>\r
<xs:sequence>\r
<xs:element minOccurs="1" maxOccurs="1" ref="SpdHeader"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="PackageDefinitions"/> \r
<xs:element minOccurs="0" maxOccurs="1" ref="LibraryClassDeclarations"/>\r
<xs:element minOccurs="0" maxOccurs="1" ref="IndustryStdIncludes"/>\r
<!-- DO NOT USE removing THIS INSTANCE of PackageDependencies, this is moving to FDP installation process -->\r
<xs:element minOccurs="0" maxOccurs="1" ref="PackageDependencies"/>\r
<!-- DO NOT USE removing MsaFiles, use MsaFileList instead , do not wrap in choice, too many entries to convert all at once. -->\r
<xs:element minOccurs="0" maxOccurs="1" ref="MsaFiles"/>\r
- <xs:element minOccurs="0" maxOccurs="1" ref="MsaFileList"/>\r
<xs:element minOccurs="0" maxOccurs="1" ref="PackageHeaders"/>\r
<xs:element minOccurs="0" maxOccurs="1" ref="GuidDeclarations"/>\r
<xs:element minOccurs="0" maxOccurs="1" ref="ProtocolDeclarations"/>\r