<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-poirier-rats-eat-da-00" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title abbrev="EAT DA">An EAT Profile for Device Attestation</title>
    <seriesInfo name="Internet-Draft" value="draft-poirier-rats-eat-da-00"/>
    <author fullname="Mathieu Poirier">
      <organization>Linaro</organization>
      <address>
        <email>mathieu.poirier@linaro.org</email>
      </address>
    </author>
    <author fullname="Thomas Fossati">
      <organization>Linaro</organization>
      <address>
        <email>thomas.fossati@linaro.org</email>
      </address>
    </author>
    <date year="2025" month="June" day="12"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>attestation</keyword>
    <keyword>device assignment</keyword>
    <keyword>EAT</keyword>
    <abstract>
      <?line 42?>

<t>In confidential computing, device assignment (DA) is the method by which a device (e.g., network adapter, GPU), whether on-chip or behind a PCIe Root Port, is assigned to a Trusted Virtual Machine (TVM).
For the TVM to trust the device, the device must provide the TVM with attestation Evidence confirming its identity and the state of its firmware and configuration.</t>
      <t>Since Evidence claims can be consumed by 3rd party attestation services external to the TVM, there is a need to standardise the representation of Evidence to ensure interoperability.
This document defines an attestation Evidence format for DA as an EAT (Entity Attestation Token) profile.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://rats-device-attestation.github.io/draft-poirier-rats-eat-da/draft-poirier-rats-eat-da.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-poirier-rats-eat-da/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Remote ATtestation ProcedureS Working Group mailing list (<eref target="mailto:rats@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/rats/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/rats/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/rats-device-attestation/draft-poirier-rats-eat-da"/>.</t>
    </note>
  </front>
  <middle>
    <?line 50?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>In confidential computing, device assignment (DA) is the method by which a device (e.g., network adapter, GPU), whether on-chip or behind a PCIe Root Port, is assigned to a Trusted Virtual Machine (TVM).
Most confidential computing platforms (e.g., Arm CCA, AMD SEV-SNP, Intel TDX) provide DA capabilities.
Such capabilities prevent agents which are untrusted by the TVM (including other TVMs and the host hypervisor) from accessing or controlling a device that has been assigned to the TVM.
This includes, for example, protection of device MMIO interfaces and device caches.
From a trust perspective, DA allows a device to be included in the TVM's Trusted Computing Base (TCB).
For the TVM to trust the device, the device must provide the TVM with attestation Evidence confirming its identity and the state of its firmware and configuration.</t>
      <t>This document defines an attestation Evidence format for DA as an EAT <xref target="RFC9711"/> profile.
The format is designed to be generic, extensible and architecture agnostic.
Ongoing work on DA concentrates on PCIe devices that support the SPDM protocol, but other bus architecture and protocols are expected to be supported as the technology gains wider adoption.
As such we focus on the formalization of an Evidence format for SPDM compliant devices while leaving room for the definition of other Evidence format such as CXL and CHI.
This list is by no means exhaustive and is expected to expand.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="device-attestation-claims">
      <name>Device Attestation Claims</name>
      <t>The Device Attestation claim is the encompassing envelope for the individual device claims to be presented.
It can be used as a standalone entity but typically enclosed in a wider platform specific attestation token.
The Device attestation claim consists of an EAT profile identifier, a nonce and an EAT submodule (<xref section="4.2.18" sectionFormat="of" target="RFC9711"/>) that contains any number of individual device claims.
Each individual device claim is the combination of a device name and a standard claims format based on the bus or protocol the device supports.
As previously mentioned, this draft currently defines the claims set for SPDM compliant devices and PCIe legacy devices that do not support the SPDM protocol.
Careful condideration was also given to the overall design in order to leave room for future expansion.</t>
      <sourcecode type="cddl"><![CDATA[
da-token = {
  &(eat_profile: 265) => "tag:linaro.org,2025:device#1.0.0"
  &(eat_nonce: 10) => bytes .size 64 ; same as realm nonce
  &(eat_submods: 266) => {
    + device-name => $device-claims
  }
}

device-name = text .regexp "dev-[A-Za-z0-9]+"

$device-claims /= #6.1000000(spdm-claims)
$device-claims /= #6.1000001(cxl-claims)
$device-claims /= #6.1000002(chi-claims)
$device-claims /= #6.1000003(pcie-legacy-claims)
]]></sourcecode>
      <section anchor="spdm-claims">
        <name>SPDM Claims</name>
        <t>A SPDM claim instance is expected to be present for each SPDM compatible device to be attested.
Each instance consists of measurements and a certificates section.
There can be up to 239 measurements per device with the entire measurement log optionally signed by the certificate populated in one of the 8 certificate slots.
It should be noted that measurements formalized herein follow the DMTF measurement specification.</t>
        <sourcecode type="cddl"><![CDATA[
spdm-claims = {
  &(measurements: 1) => {
    + block-id => spdm-measurement
    ? "signature" => spdm-measurement-blocks-signature
  }
  &(certificates: 2) => spdm-certificates
}

block-id = 1..239
]]></sourcecode>
        <section anchor="measurement-claims">
          <name>Measurement Claims</name>
          <t>SPDM measurements start with a component type that reflects one of the 10 categories defined by the SPDM specification.
Following is the measurement itself represented by either a raw bitstream or a digest.
The size of the digest value is derived from the measurement hash algorithm conveyed by the SPDM ALGORITHMS message response.</t>
          <sourcecode type="cddl"><![CDATA[
spdm-measurement = {
  &(component-type: 1) => component-type
  measurement
}

measurement //= ( &(digest-measurement: 2) => digest-measurement )
measurement //= ( &(raw-measurement: 3) => raw-measurement )

component-type /= &(immutable-rom: 0)
component-type /= &(mutable-firmware: 1)
component-type /= &(hardware-config: 2)
component-type /= &(firmware-config: 3)
component-type /= &(freeform-measurement-manifest: 4)
component-type /= &(device-mode: 5)
component-type /= &(mutable-firmware-version: 6)
component-type /= &(mutable-firmware-svn: 7)
component-type /= &(hash-extend-measurement: 8)
component-type /= &(informational: 9)
component-type /= &(structured-measurement-manifest: 10)

raw-measurement = bytes
digest-measurement = digest

digest = [
  alg: uint / text
  val: bytes
]
]]></sourcecode>
        </section>
        <section anchor="measurement-claims-signature">
          <name>Measurement Claims Signature</name>
          <t>SPDM compliant devices can optionally support the capability to sign measurements.
Included in the measurement claim signature are all the elements needed by a third party entity to reconstruct the original measurement log signed by the device.
Those elements include L1 (see CDDL below), the combined SPDM prefix, the hash algorithm used to generate a digest of the measurement log and nonces provided by the requester and responder.
The slot number of the leaf certificate used to sign the measurement log is also provided.</t>
          <sourcecode type="cddl"><![CDATA[
;
; What follows is based on SPDM v1.3.2 (DSP0274_1.3.2.pdf)
;

;
; Algorithms currently supported by SPDM.
; See "MeasurementHashAlgo", table 21, page 79.
;
hash-algorithm-type /= &(tpm_alg_sha_256: 0)
hash-algorithm-type /= &(tpm_alg_sha_384: 2)
hash-algorithm-type /= &(tpm_alg_sha_512: 4)
hash-algorithm-type /= &(tpm_alg_sha3_256: 8)
hash-algorithm-type /= &(tpm_alg_sha3_384: 16)
hash-algorithm-type /= &(tpm_alg_sha3_512: 32)
hash-algorithm-type /= &(tpm_alg_sm3_256: 64)

;
; See signature generation and verification algorithms for
; MEASUREMENTS messages on page 126.
;
; L1 = Concatenate(VCA, GET_MEASUREMENTS_REQUEST1,
;               MEASUREMENTS_RESPONSE1, ...,
;               GET_MEASUREMENTS_REQUESTn-1,
;               MEASUREMENTS_RESPONSEn-1,
;               GET_MEASUREMENTS_REQUESTn, MEASUREMENTS_RESPONSEn)
;
spdm-measurement-blocks-signature = {
   &(slot: 1) => 0..7, ; Slot of the certificate chain used to
                       ; authenticate the measurement.  Default
                       ; should be 0.
   &(requester-nonce: 2) => bytes .size 32,
   &(responder-nonce: 3) => bytes .size 32,
   &(combined-spdm-prefix: 4) => bytes .size 100,
   &(IL1: 5) => bytes, ; L1 (see comment above)
   &(base-hash-algo: 6) => hash-algorithm-type,
   &(signature: 7) => bytes
}
]]></sourcecode>
        </section>
        <section anchor="certificate-claims">
          <name>Certificate Claims</name>
          <t>According to the specification, SPDM compliant devices should support at most 8 slots, with slot 0 populated by default.
Slot 0 <bcp14>SHALL</bcp14> contain a certificate chain that follows the Device certificate model or the Alias certificate model.
Regardless of the certificate model used, a certificate chain comprises one or more DER-encoded X.509 v3 certificates <xref target="RFC5280"/>.
The certificates <bcp14>MUST</bcp14> be concatenated with no intermediate padding.</t>
          <sourcecode type="cddl"><![CDATA[
spdm-certificates = {
  default-cert-slot => cert-chain
  ? aux-cert-slots => cert-chain
}

; ASN.1 DER-encoded certificates concatenated with no intermediate
; padding.
cert-chain = bytes

default-cert-slot = 0
aux-cert-slots = 1..7
]]></sourcecode>
        </section>
      </section>
      <section anchor="pcie-legacy-device-claims">
        <name>PCIe Legacy Device Claims</name>
        <t>The definition of a device claims set for PCIe legacy devices that do not implement the extensions needed to attest for their provenance and configuration is provided, making it is possible to keep using current assets as secures ones are being provisioned.
This legacy device claims set simply mirrors the type 0/1 common registers of the PCIe configuration space, mandating only that the vendor and device identification code be provided.
Other fields of the configuration space header may optionally be included should they add value.</t>
        <sourcecode type="cddl"><![CDATA[
pcie-legacy-claims = {
  &(legacy-header: 1) => pcie-type-0-1-config-space
  ? $$pcie-legacy-claim-extension
}

pcie-type-0-1-config-space = {
  &(vendorID: 1) => bytes .size 2
  &(deviceID: 2) => bytes .size 2
  ? &(command: 3) => bytes .size 2
  ? &(status: 4) => bytes .size 2
  ? &(revisionID: 5) => bytes .size 1
  ? &(classCode: 6) => bytes .size 3
  ? &(cacheLineSize: 7) => bytes .size 1
  ? &(latencyTimer: 8) => bytes .size 1
  ? &(headerType: 9) => bytes .size 1
  ? &(BITS: 10) => bytes .size 1
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="collated-cddl">
      <name>Collated CDDL</name>
      <sourcecode type="cddl"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

da-token = {
  &(eat_profile: 265) => "tag:linaro.org,2025:device#1.0.0",
  &(eat_nonce: 10) => bytes .size 64,
  &(eat_submods: 266) => {+ device-name => $device-claims},
}
device-name = text .regexp "dev-[A-Za-z0-9]+"
$device-claims /= #6.1000000(spdm-claims) / #6.1000001(cxl-claims) \
            / #6.1000002(chi-claims) / #6.1000003(pcie-legacy-claims)
spdm-claims = {
  &(measurements: 1) => {
        + block-id => spdm-measurement,
        ? "signature" => spdm-measurement-blocks-signature,
},
  &(certificates: 2) => spdm-certificates,
}
block-id = 1 .. 239
spdm-measurement = {
  &(component-type: 1) => component-type,
  measurement,
}
measurement //= (&(digest-measurement: 2) => digest-measurement // &\
                             (raw-measurement: 3) => raw-measurement)
component-type /= &(immutable-rom: 0) / &(mutable-firmware: 1) / &(\
hardware-config: 2) / &(firmware-config: 3) / &(freeform-measurement\
-manifest: 4) / &(device-mode: 5) / &(mutable-firmware-version: 6) \
/ &(mutable-firmware-svn: 7) / &(hash-extend-measurement: 8) / &(\
           informational: 9) / &(structured-measurement-manifest: 10)
raw-measurement = bytes
digest-measurement = digest
digest = [
  alg: uint / text,
  val: bytes,
]
spdm-certificates = {
  default-cert-slot => cert-chain,
  ? aux-cert-slots => cert-chain,
}
cert-chain = bytes
default-cert-slot = 0
aux-cert-slots = 1 .. 7
hash-algorithm-type /= &(tpm_alg_sha_256: 0) / &(tpm_alg_sha_384: 2\
) / &(tpm_alg_sha_512: 4) / &(tpm_alg_sha3_256: 8) / &(\
tpm_alg_sha3_384: 16) / &(tpm_alg_sha3_512: 32) / &(tpm_alg_sm3_256\
                                                                : 64)
spdm-measurement-blocks-signature = {
  &(slot: 1) => 0 .. 7,
  &(requester-nonce: 2) => bytes .size 32,
  &(responder-nonce: 3) => bytes .size 32,
  &(combined-spdm-prefix: 4) => bytes .size 100,
  &(IL1: 5) => bytes,
  &(base-hash-algo: 6) => hash-algorithm-type,
  &(signature: 7) => bytes,
}
cxl-claims = {}
chi-claims = {}
pcie-legacy-claims = {
  &(legacy-header: 1) => pcie-type-0-1-config-space,
  ? $$pcie-legacy-claim-extension,
}
pcie-type-0-1-config-space = {
  &(vendorID: 1) => bytes .size 2,
  &(deviceID: 2) => bytes .size 2,
  ? &(command: 3) => bytes .size 2,
  ? &(status: 4) => bytes .size 2,
  ? &(revisionID: 5) => bytes .size 1,
  ? &(classCode: 6) => bytes .size 3,
  ? &(cacheLineSize: 7) => bytes .size 1,
  ? &(latencyTimer: 8) => bytes .size 1,
  ? &(headerType: 9) => bytes .size 1,
  ? &(BITS: 10) => bytes .size 1,
}
]]></sourcecode>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="new-cwt-claims-registrations">
        <name>New CWT Claims Registrations</name>
        <t>TODO IANA CWT allocations</t>
      </section>
      <section anchor="new-cbor-tags-registrations">
        <name>New CBOR Tags Registrations</name>
        <t>TODO IANA CBOR Tag allocations</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC9711">
        <front>
          <title>The Entity Attestation Token (EAT)</title>
          <author fullname="L. Lundblade" initials="L." surname="Lundblade"/>
          <author fullname="G. Mandyam" initials="G." surname="Mandyam"/>
          <author fullname="J. O'Donoghue" initials="J." surname="O'Donoghue"/>
          <author fullname="C. Wallace" initials="C." surname="Wallace"/>
          <date month="April" year="2025"/>
          <abstract>
            <t>An Entity Attestation Token (EAT) provides an attested claims set that describes the state and characteristics of an entity, a device such as a smartphone, an Internet of Things (IoT) device, network equipment, or such. This claims set is used by a relying party, server, or service to determine the type and degree of trust placed in the entity.</t>
            <t>An EAT is either a CBOR Web Token (CWT) or a JSON Web Token (JWT) with attestation-oriented claims.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9711"/>
        <seriesInfo name="DOI" value="10.17487/RFC9711"/>
      </reference>
      <reference anchor="RFC5280">
        <front>
          <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
          <author fullname="D. Cooper" initials="D." surname="Cooper"/>
          <author fullname="S. Santesson" initials="S." surname="Santesson"/>
          <author fullname="S. Farrell" initials="S." surname="Farrell"/>
          <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
          <author fullname="R. Housley" initials="R." surname="Housley"/>
          <author fullname="W. Polk" initials="W." surname="Polk"/>
          <date month="May" year="2008"/>
          <abstract>
            <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5280"/>
        <seriesInfo name="DOI" value="10.17487/RFC5280"/>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
    <?line 357?>

<section anchor="examples">
      <name>Examples</name>
      <sourcecode type="cbor-diag"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

{
  / profile / 265: "tag:linaro.org,2025:device#1.0.0",
  / nonce / 10: h'\
f9efc3341597f75f8d94432ad39566a8c5704b2004ba001c094f475bfc057f9f25d7\
       aa40cd86cd30ebaae746fb19f008c1e6a1f23ad6a178e18dceda918f7f6e',
  / submods / 266: {
    "dev-a": 1000000({
      / measurements / 1: {
        1: {
          / component-type /  1: 2, / hardware config /
          / raw-measurement / 3: h'4f6d616861'
        }
      },
      / certificates / 2: {
        / device certs / 0: h'\
                          676f616e6e61747261646974696f6e6d6f6e676572'
        / no aux certs /
      }
    }),
    "dev-b": 1000000({
      / measurements / 1: {
        1: {
          / component-type / 1: 1, / mutable firmware /
          / digest-measurement / 2: [
            / alg / 1,
            / val / h'6b656e6e656c6c79'
          ]
        },
        6: {
          / component-type / 1: 2, / hardware config /
          / digest measurement / 2: [
            / alg / 0,
            / val / h'756e646572637279'
          ]
        }
      },
      / certificates / 2: {
        / device certs / 0: h'61746865697A656178696C6C6172',
        / aux certs (slot=2) / 2: h'23451576923AE99106783948598A'
      }
    })
  }
}
]]></sourcecode>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA91b63LbOJb+z6fAKl1te4ekRN2lHnePYjsdV9mx11K6e7aT
SkEkKLFCkRqCsuNOuZ9ln2WfbM85AChSl1iZyf7YdapsETgADs7lOxcqjuNY
eZTHYshqo4RdjCbsNkvDKBYsTDN2Lu4jX7BRnguZ8zxKk5rFp9NM3AM9Ep+P
apbPczFLs8chi5Iwtawg9RO+gB2DjIe5s0yjLBKZk/FcOoLnTsCdRsOSq+ki
khK2zB+XAtcGYingV5JbyWoxFdnQCmDnoeWniRSJXMkhC3kshQWHtyyeCQ5M
jIW/yqL8sWY9pNnHWZauljB6JxZpDnxPCr7xWr4IVpkY16yP4hGog6HFHMbX
d8PHQN2YA2ezZIHMwCDc1LoXyQqYYezAMxhT96r9CnxFyYz9jOtwfMGjGMZR
Hn+LRB66aTbDcZ75cxif5/lSDut1JMOh6F64hqyOA/Vplj5IUccN6rhwFuXz
1VRv6agbOKV71fcqAlfHHAlLB+/ZxVXHuFG6f7/9M+48X8Q1y+KrfJ5mKHk4
mrFwFcfKWK55Po/Eit2qtTQLN+ZJ9AcdP2RXUcKzlCaEkuFCrXH1eX+LiQIF
tb3/ZJ4uuGSvUilhv4O2z2mJG6ol5d2tJM3gcFANWsTdq7NBz/OGzNxXjXWa
/caQLT9GnywLPaNYYTkO2N1U5hn3c8u6TBiYeBih6Uc8hofFcpWDydjb1siO
z0cnLJLAm2ALARwGbPrIHuaRP2fc0B8Ld+baLBE5OgXjAV/mIrPZz7dvT2wg
hnUiY2nigHUtQQxsKubgf7DB7dmlYHdpmoMestzGk9ThImB5CgSTbCVzePgl
yvIVMHvNYY8Ejpz8cn3iWq9gM2QNnpA+R2oaUJzZpc9sgXPLLL2HmxeLHsDI
yj7JLnA6AXKSUbZAV4pyyZS48kfGgXFcjQsES0OaRcoHgAiapZWzVabM2LLG
Ee633jjm0UIynycgBySWq4UgsbaygC15hoeUOJIiQ/4lE59AqgkIAW+q+KcL
wrEoN5C/khosTAKeBZFU98zEMhMAaXo/YLngBagR6nCHBDZPlyLj0yiGe7rW
ZA67AriuyBACEYLc4Zhkt7iUvSkUH4ESkRAR+/hCia2E6WySfhTJCeoCkd9V
BrqIgiAWlvWCXSZ5lgYrnzDy/5W5Xqdggrtvw5YAjChEafgbZQt2djaCD9fn
bHzxizN+c2ujcETMJue/nRS2DPL2+VLpLRLStcYruG55CEjFPcqHz+C3NAIB
ta+SXLMMcjJOcQwGG68C5ColWcCgLAx/jpeYQ7ABs5RpdsLCLF0w7oOJSlqS
4RVBhXGMj4XY8znYxxwsYypEUpGbPlebnDpcSJuMSXzii2UMngy3zYVvLFjv
eX19eaNMN+S+UDzqKR9Ej8J4RdxpaACm5RJ3uYcd0U7jGGJbiccUfVJzEMAH
w9uRLHR7VqjsJZeo2rOX/1eQ6Nu49OfPRaR9elp78WReLMFTxFq/IFKwO5FF
vk0glshoGisOKeNAvSIG8VkCthX5rnWTzFK8Lzko8IQmngJPYFaYPuAQ+aIS
qFS2JVfLJbglyWR8e35NJpP6aWyz6SrXpjxdyY1DgQtDKMknxCc0kYJ1vS08
cwUssHKepHE6e2QzHiXgTiCwDHAkXSo5jyQsAgd7QIH4K2I3N9KJdQaACuO7
pU3MIzLEESc9qUuC14LUYsHvUTRZCnYdaqsjVUZmW3XTzZ2JJbjC2W9XdOmz
15fa4+JIks4AApIUcJMnGGzmHMwUHIWII1kRC3yGUbAogOuzNEFsgbOV/50X
vEiLjALSX1RkIFnt+u14UrPVX/bmhj7fXfzH28u7i3P8PH49uroqPliaYvz6
5u3V+frTeuXZzfX1xZtztRhGWWXIql2P/g4zyFXt5nZyefNmdFVTXl12BFS6
8XyAEgBLpW0LjNjPoqlCgpdnt//9X14bzP/fINtqet4ArF899L1eGx4gdCTq
tDSJH/Uj6OLR4sul4BnuAoiD0BzlUFrYqA45Tx8ShlEcxPnvv6Nk3g/ZX6f+
0mv/qAfwwpVBI7PKIMlse2RrsRLijqEdxxTSrIxvSLrK7+jvlWcj99LgX3+K
MSg6Xv+nH8mEtus+dkZZkjKgHdOURJlID1YOzsJV+BFgjTEkMoVvQOiOwBUw
HJvQoDIwpXKdGwmw5svcZGUrqdyd62QqThM8hmAXsQRqrcgHVT7i2XEqlYVw
jQQmlDOMNVEY+RV8zTH7ccsX41sXw6wQnFIakADU1Tir4T+MMGOBnA9RUSGp
IsM6F5InIDz+/HmsA2bbbbpeHzcrIfeJQk2M1YRiPAH3p0qYYskeqbnWBQTW
fdNGI6CPKZQvBc4ZIqyNFLdFlmq0oVFqylGYGjARrEGLBp7LMVSjsiS0xfQm
SlcS9LFQUCQCWzs5VogMivYMJmDeBD3iUp0sxRdhF9mlYBOLGfcfqzEnSEEF
Xwg9rnUG6AJlIco5QOtQQnlA44plCsU0gKdJgtJ7mI9jHTzRpAA2QR8wjbAv
1qAfrih4EQ5LFdz//PNP5kMObQXcIRtjp+wzlIbfH4O6P2jzGbJmt3PCTn9k
tZzPhusa0242mp2hutsLz224jVqxloxsyLwGLZw+YgR2ZfSHYN02+4FJUqqE
OoPHC2WRxVJljhKP7dLqz1Tx/kVL0SGDgOHv9LNSCdA8WU+WVSGCuPspZ24m
ZnBrVoM55/eR85/c+aPhDN7/BYr96iasfspedF2vQT/Hchks9MzJlyi9Y/9T
fAhh8xiyiEMIW8dLPxKOMp9iAagLoO+FMheDdiNthMqXEvQRX2wG3zVoqQwZ
/bGwXTAvzK0q+azCF0Q47bt63zLKQNTHOnBB9YHyUF9kCDQ+ZVxSQQnhViYK
nFziEc3WoLoe0mzDAaW1CqTzKBNlOgYpFFM5E0GpThh1IVI6nS3T5Qr7RoSy
CMXAMNL0K1QyThEPAMUhpq7iABkE50ShoatWODSpGEzifWDbMMVagLY9v568
qjBqcNzk0YWrlYyq8LbyOeA0Faufxqn/0YkCHKO1JWIi+YnVUAwcvbu2i8qh
LaRTUJGv4LlldYG/nRSryxPoVWsmmOe6oDxjiy/YdenSxibJtCrCA/MBrFMF
CxkdqCShoKirPEC8GOxFlnXlNZju3GJBqmC4UDadsSHlV6QQqnpMQb9mDkod
EYfr1obaSkSU+XKW8Qc2BZocMGmBIQQiUDQDJ1Bxl7BL86XG2T2PV0IVLhlA
cqCq2s1joXyFO8d4iXxOYfpePG5cY3T1883d5eT19RiWSgklN7Apl9hV3jKd
8t7GfgqBOqqjqyyoOopt3ZLlgFLLO9UBfY5hJ3W18iHGLrZn2MnOLUCQ1fUt
Wr8xDIutKoMIgN8fR4vFKueARw4Ic8gaJzupDI0pXfHKOwnnkC4ggaPqWrzM
TjqzUUHX2kOXCYFAUPGvBU+ikDrU7d2rNNBDWANOO4ddyYHALqnt2z1wgbwH
4t4+Oci5Q4V0UFVOfzd90Q1GoB2ywW4qcJYVlcTBHnlA/LesTc2fqnzA2mFR
p9rMLD0JA7/je4cYNLKK0MgopMPQPbKl9nn/JTBi4wL1rD3ZGgamckwpJWZF
R+yRuqSYYZVhDSLHRt+nfBkVkgvUpZoRUzUKbbEGRuzAKjTgmH0W7VxdOcCp
mcCgS5JWGV8WzSLs6W7GxWowVLdD8IJaY32eblSxK48dSyHY2fn5FUQ9gM0T
u5SHwz46KQXU/aRmNpCMCh7gj/o0GEwNYBqY3OQPUwRK9aTpZBXMZuIfK8w3
MiJS2AeoqqEXgnSpzEB6SG3DSiA3zJCKdh0e6eTZnFzG1R+sH9ivc+qkqOYe
NjZMUUFiuPfclttkx+fj20az1/5Aj+4yCE9gMa0fGbnIUuWw7gPBPXEjFyjH
IPVayVBfg1hxdQ2kjA7Nmp4NRgAxoDcAeotctxB7yfvy5eIDjH+Qc/6h2ekS
WB5E3Oq3CQgPIu54TcK1Q4hbio/+odTEiNc9lJxYaR3E+EKz0gXOST8o9bUr
apvFsgoNDqC2yCLWFk4pHyy9vhiN395dXF+8mRTxmRp0pCSv2XXpBPCoU+xs
oT3CMeL4F+zE/3wx+VDe4AP2YS7GE8+GJdWfDbLx7c2b8QXYguu628T79k2c
Q3feSbl3W3vPJugAzyacOlHBiAG+bPKThuv2bCgGx+jf2rHLPu3POaCq9myL
7f75geH7WkRLWrPh+i7D3iJfxfn+9evMv+EqJgs0cnQZ29yqYltN29BqrDK0
rf20BlodEpiCVvStzQVQA+oVl1ceJgwFAYrLIDfsplqR0/RenCh6RC2n8A5M
HXDpDnfR+xcawsShOAWSwyKinpUUUpScvp9m9K5HNyEqabi9ryuiBW3iK9ZX
+F6or6owW1UHBPaNUvk2pQYMqtC1xmpS9Sh1F6padWqjyctonq/bZmVKzMZi
pjt+I2BVbk+71h2U4FkQg9fvMlG1B5qovZMPFEIWSaHLmgwWgDecX9w52IDE
APib22kM2H2rWjp//uzgW/mnJxUBK3PU3VWvgQ3UBEp2Saq60QsRRFQD8wC1
tF19lrdTrqlFTFMO6QALCHygi1hYZvLVp/W83CCAegKC4PiN61WuVznqWY5h
i4Ln9d5Fwmjt4JI1rE2+sETtFc0S6sNdqT6ctoJyo7j6GoRv9HtNn++5Zl6E
LxzJGym5Uy+s8O2GTu/wTS91VEyLOaIW5T3IwjRjKy/eMAMxmYrNFvyjepNH
w6lU78Jgz49CLMH6cFInHfiSVGA7htov4Nhkeeol1VTQS2PcVlK/07zLKd+r
fHOJ13pkiyjL0ky/yMJQ26h7hD7AZyZmESJl4R0kqepd5JLj28wFNm/pJSi9
6iDx4QoQQpBm5fewpl+tAzJakupgmdTthmr2MBJxsHbL7TPZXHDshS74YznB
L7+u1ZiEb1wYWJ6q6csOs92HK6puPaoOMUGN6FFKTsPxdDXpEDfkQ999t7Wh
U5gLOtH+9cW5SmCX5+bIcuhoEoWSI1JsR64m8UHBCDWyK2AZEnzBgN9p245Q
hgKb6Mg5HtXZjmPmqBis8oyK3+52dDRE+PL9CsLjGEYr4WhjNwwLif84iRYo
9f5eOqWXCTVEBnupXl5Oxjv71F4RBSGpi1UswmKpZBun1R98F3YxZEfvjhi9
rHrI+HJJLgc2ePfqjPV7gybbWHRqfbPmu31Q931Ntd1of6bH/mSDTL6uwX5w
fx0q+939dPaukrrV93TTyxO7u+df13h9vvlqF3Rf34EFQdqHd2BR7OUOLFQE
2ED/1/qBdrUhiGdsdfO+sh9Yr7Pv3+1LtNXPgd3BPU2pzd4gKH13L5Am3lk7
un80s6Pbp8Z3dPfeWZX+HtFt9PN2slHu34EN7yTRHTta/4UOnb5NSYxb7Tki
Oagd9890477YjLMr3Tjbev/PJpn2s1kmGumOvPDQtBD9pvdV/RQS63br5J21
PaP7JJvjRUtEK3Fn/2N7kWl1VGdUV+MZFzvgR/VFDi3bN6p2kqJCr4ML5a+o
k7+6TN5RJVtfXQvvK4XJ4opghAKB5yLqqOdvlyLaz+eIyNC/miPazyeJ9gFZ
oqH5QppoSJ7JE4vTvpgoFlTPZoqG8tlU0RA+kysasv3Jor3OFs3/98BeoCy+
voHl5s35TTFL31oevRltUUHJ+kY8sLNfJ+YNxh3VWNVt1FKgwa+j+ptrX97c
sQmffWmpJqmuxy9VT7n/EZm7UN+ilTrfnaaZAzX67FslvWim9eIbSnVMc4cH
5rh1/RWmOmhiyOZH76xwIEK/1Wp7nUEv7HXCfjBot1tNHrQGnW6X9/1Or9Ge
Nhvwi0N66TcG7bDd60xDv9HphYOw2Ql6Bapy3m74Qb/rB62GmHIueu1uOPUG
YaPR9z3R5V7YbPEA/vb6wusHvgj4wOuHvbArjhR/OrOmawH4q4ySsmNeQ/tR
6a9JNOvVV+VwrWEpCa08IPFmZkQkTRs+mHRH18KsXlm3GfjrrIXSa4fdoOt1
+13vqCB/0p+e7ILFSjiHe5W5qhe9AyDCWa2W/QGo2+uGcKiAf16v3WvC53Z3
AIIewLgAhvB3r9vpNY9KpyQpZgfmFMMj/X06sddCnv4vCBkoPJSxzuHWX5qu
CnlXVozC+n2jiIEIhJvaG8OQR6Eej7rTboek0+n6Xb83OCrRvV+rab28e8gF
DjASnekdyH9jH/895L6N+uu2es29/H8LM0MDAuvtgPmM4Dc4JRjRGfzzwHjs
0uK16VA+c0rJVRO3aLbaHa/T6w6ardHFYOA1ur1+a9Dudwb90dGGmenvmWms
H/kfk/QhFsGMzMr6PFTvKUVwWqP/CVh70qjLC0rhWv8DW36iL9Q4AAA=

-->

</rfc>
