<?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.19 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-scitt-receipts-ccf-profile-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="COSE Receipts with CCF">COSE Receipts with CCF</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-receipts-ccf-profile-00"/>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@ietf.contact</email>
      </address>
    </author>
    <author initials="A." surname="Delignat-Lavaud" fullname="Antoine Delignat-Lavaud">
      <organization>Microsoft Research</organization>
      <address>
        <postal>
          <street>21 Station Road</street>
          <city>Cambridge</city>
          <code>CB1 2FB</code>
          <country>UK</country>
        </postal>
        <email>antdl@microsoft.com</email>
      </address>
    </author>
    <author initials="C." surname="Fournet" fullname="Cedric Fournet">
      <organization>Microsoft Research</organization>
      <address>
        <postal>
          <street>21 Station Road</street>
          <city>Cambridge</city>
          <code>CB1 2FB</code>
          <country>UK</country>
        </postal>
        <email>fournet@microsoft.com</email>
      </address>
    </author>
    <author initials="A." surname="Chamayou" fullname="Amaury Chamayou">
      <organization>Microsoft Research</organization>
      <address>
        <postal>
          <street>21 Station Road</street>
          <city>Cambridge</city>
          <code>CB1 2FB</code>
          <country>UK</country>
        </postal>
        <email>amaury.chamayou@microsoft.com</email>
      </address>
    </author>
    <date year="2026" month="February" day="20"/>
    <area>Security</area>
    <workgroup>TBD</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 69?>

<t>This document defines a new verifiable data structure type for COSE Signed Merkle Tree Proofs specifically designed for transaction ledgers produced via Trusted Execution Environments (TEEs), such as the Confidential Consortium Framework (<xref target="CCF"/>) to provide stronger tamper-evidence guarantees.</t>
    </abstract>
  </front>
  <middle>
    <?line 73?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The COSE Receipts document <xref target="I-D.ietf-cose-merkle-tree-proofs"/> defines a common framework for defining different types of proofs, such as proof of inclusion, about verifiable data structures (VDS). For instance, inclusion proofs guarantee to a verifier that a given serializable element is recorded at a given state of the VDS, while consistency proofs are used to establish that an inclusion proof is still consistent with the new state of the VDS at a later time.</t>
      <t>In this document, we define a new type of VDS, associated with an application of the Confidential Consortium Framework (CCF) ledger that implements the SCITT Architecture defined in <xref target="I-D.ietf-scitt-architecture"/>. This VDS carries indexed transaction information in a binary Merkle Tree, where new transactions are appended to the right, so that the binary decomposition of the index of a transaction can be interpreted as the position in the tree if 0 represents the left branch and 1 the right branch.
Compared to <xref target="RFC9162"/>, the leaves of CCF trees carry additional internal information for the following purposes:</t>
      <ol spacing="normal" type="1"><li>
          <t>To bind the full details of the transaction executed, which is a super-set of what is exposed in the proof and captures internal information details useful for detailed system audit, but not for application purposes.</t>
        </li>
        <li>
          <t>To allow the distributed system executing the application logic in Trusted Excecution Environments to persist signatures to storage early, but only enable receipt production once they are fully committed by the consensus protocol.</t>
        </li>
      </ol>
      <section anchor="requirements-notation">
        <name>Requirements Notation</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>
    <section anchor="description-of-the-ccf-ledger-verifiable-data-structure">
      <name>Description of the CCF Ledger Verifiable Data Structure</name>
      <t>This documents extends the verifiable data structure registry of <xref target="I-D.ietf-cose-merkle-tree-proofs"/> with the following value:</t>
      <table align="left" anchor="verifiable-data-structure-values">
        <name>Verifiable Data Structure Algorithms</name>
        <thead>
          <tr>
            <th align="left">Name</th>
            <th align="left">Value</th>
            <th align="left">Description</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">CCF_LEDGER_SHA256</td>
            <td align="left">TBD_1 (requested assignment 2)</td>
            <td align="left">Historical transaction ledgers, such as the CCF ledger</td>
            <td align="left">RFCthis</td>
          </tr>
        </tbody>
      </table>
      <t>This document defines inclusion proofs for CCF ledgers.</t>
      <section anchor="merkle-tree-shape">
        <name>Merkle Tree Shape</name>
        <t>A CCF ledger is a binary Merkle Tree constructed from a hash function H, which is defined from the log type. For instance, the hash function for <tt>CCF_LEDGER_SHA256</tt> is <tt>SHA256</tt>, whose <tt>HASH_SIZE</tt> is 32 bytes.</t>
        <t>The Merkle tree encodes an ordered list of <tt>n</tt> transactions T_n = {T[0], T[1], ..., T[n-1]}. We define the Merkle Tree Hash (MTH) function, which takes as input a list of serialized transactions (as byte strings), and outputs a single HASH_SIZE byte string called the Merkle root hash, by induction on the list.</t>
        <t>This function is defined as follows:</t>
        <t>The hash of an empty list is the hash of an empty string:</t>
        <artwork><![CDATA[
MTH({}) = HASH().
]]></artwork>
        <t>The hash of a list with one entry (also known as a leaf hash) is:</t>
        <artwork><![CDATA[
MTH({d[0]}) = HASH(d[0]).
]]></artwork>
        <t>For n &gt; 1, let k be the largest power of two smaller than n (i.e., k &lt; n &lt;= 2k). The Merkle Tree Hash of an n-element list D_n is then defined recursively as:</t>
        <artwork><![CDATA[
MTH(D_n) = HASH(MTH(D[0:k]) || MTH(D[k:n])),
]]></artwork>
        <t>where:</t>
        <ul spacing="normal">
          <li>
            <t>|| denotes concatenation</t>
          </li>
          <li>
            <t>: denotes concatenation of lists</t>
          </li>
          <li>
            <t>D[k1:k2] = D'_(k2-k1) denotes the list {d'[0] = d[k1], d'[1] = d[k1+1], ..., d'[k2-k1-1] = d[k2-1]} of length (k2 - k1).</t>
          </li>
        </ul>
      </section>
      <section anchor="transaction-components">
        <name>Transaction Components</name>
        <t>Each leaf in a CCF ledger carries the following components:</t>
        <sourcecode type="cddl"><![CDATA[
ccf-leaf = [
  ; Byte string of size HASH_SIZE(32)
  internal-transaction-hash: bstr .size 32

  ; Text string of at most 1024 bytes
  internal-evidence: tstr .size (1..1024)

  ; Byte string of size HASH_SIZE(32)
  data-hash: bstr .size 32
]
]]></sourcecode>
        <t>The <tt>internal-transaction-hash</tt> and <tt>internal-evidence</tt> byte strings are internal to the CCF implementation. They can be safely ignored by receipt Verifiers, but they commit the TS to the whole tree contents and may be used for additional, CCF-specific auditing.</t>
        <t><tt>internal-transaction-hash</tt> is a hash over the complete entry in the <xref target="CCF-Ledger-Format"/>, and <tt>internal-evidence</tt> is a revealable <xref target="CCF-Commit-Evidence"/> value that allows early persistence of ledger entries before distributed consensus can be established. This mechanism is useful to implement high-throughput transparency applications in Trusted Execution Environments that only provide a limited amount of memory, while maintaining high availability afforded by distributed consensus.</t>
        <t><tt>data-hash</tt> summarises the application data included in the ledger at this transaction, which is a Signed Statement as defined by <xref target="I-D.ietf-scitt-architecture"/>.</t>
      </section>
    </section>
    <section anchor="ccf-inclusion-proofs">
      <name>CCF Inclusion Proofs</name>
      <t>CCF inclusion proofs consist of a list of digests tagged with a single left-or-right bit.</t>
      <sourcecode type="cddl"><![CDATA[
ccf-proof-element = [
  ; Position of the element
  left: bool

  ; Hash of the proof element: byte string of size HASH_SIZE(32)
  hash: bstr .size 32
]

ccf-inclusion-proof = bstr .cbor {
  &(leaf: 1) => ccf-leaf
  &(path: 2) => [+ ccf-proof-element]
}
]]></sourcecode>
      <t>Unlike some other tree algorithms, the index of the element in the tree is not explicit in the inclusion proof, but the list of left-or-right bits can be treated as the binary decomposition of the index, from the least significant (leaf) to the most significant (root).</t>
      <section anchor="ccf-inclusion-proof-signature">
        <name>CCF Inclusion Proof Signature</name>
        <t>The proof signature for a CCF inclusion proof is a COSE signature (encoded with the <tt>COSE_Sign1</tt> CBOR type) which includes the following additional requirements for protected and unprotected headers. Please note that there may be additional header parameters defined by the application.</t>
        <t>The protected header parameters for the CCF inclusion proof signature <bcp14>MUST</bcp14> include the following:</t>
        <ul spacing="normal">
          <li>
            <t><tt>verifiable-data-structure: int/tstr</tt>. This header <bcp14>MUST</bcp14> be set to the verifiable data structure algorithm identifier for <tt>ccf-ledger</tt> (TBD_1).</t>
          </li>
          <li>
            <t><tt>label: int</tt>. This header <bcp14>MUST</bcp14> be set to the value of the <tt>inclusion</tt> proof type in the IANA registry of Verifiable Data Structure Proof Type (-1).</t>
          </li>
        </ul>
        <t>The unprotected header for a CCF inclusion proof signature <bcp14>MUST</bcp14> include the following:</t>
        <ul spacing="normal">
          <li>
            <t><tt>inclusion-proof: bstr .cbor ccf-inclusion-proof</tt>. This contains the serialized CCF inclusion proof, as defined above.</t>
          </li>
        </ul>
        <t>The payload of the signature is the CCF ledger Merkle root digest, and <bcp14>MUST</bcp14> be detached in order to force verifiers to recompute the root from the inclusion proof in the unprotected header. This provides a safeguard against implementation errors that use the payload of the signature but do not recompute the root from the inclusion proof.</t>
      </section>
      <section anchor="inclusion-proof-verification-algorithm">
        <name>Inclusion Proof Verification Algorithm</name>
        <t>CCF uses the following algorithm to verify an inclusion receipt:</t>
        <artwork><![CDATA[
compute_root(proof):
  h := proof.leaf.internal-transaction-hash
       || HASH(proof.leaf.internal-evidence)
       || proof.leaf.data-hash

  for [left, hash] in proof:
      h := HASH(hash + h) if left
           HASH(h + hash) else
  return h

verify_inclusion_receipt(inclusion_receipt):
  let label = INCLUSION_PROOF_LABEL
  assert(label in inclusion_receipt.unprotected_header)
  let proof = inclusion_receipt.unprotected_header[label]
  assert(inclusion_receipt.payload == nil)
  let payload = compute_root(proof)

  # Use the Merkle Root as the detached payload
  return verify_cose(inclusion_receipt, payload)
]]></artwork>
        <t>A description can also be found at <xref target="CCF-Receipt-Verification"/>.</t>
      </section>
    </section>
    <section anchor="usage-in-cose-receipts">
      <name>Usage in COSE Receipts</name>
      <t>A COSE Receipt with a CCF inclusion proof is described by the following CDDL definition:</t>
      <sourcecode type="cddl"><![CDATA[
protected-header-map = {
  &(alg: 1) => int
  &(vds: 395) => 2
  * cose-label => cose-value
}
]]></sourcecode>
      <ul spacing="normal">
        <li>
          <t>alg (label: 1): <bcp14>REQUIRED</bcp14>. Signature algorithm identifier. Value type: int.</t>
        </li>
        <li>
          <t>vds (label: 395): <bcp14>REQUIRED</bcp14>. verifiable data structure algorithm identifier. Value type: int.</t>
        </li>
      </ul>
      <t>The unprotected header for an inclusion proof signature is described by the following CDDL definition:</t>
      <sourcecode type="cddl"><![CDATA[
inclusion-proof = ccf-inclusion-proof

inclusion-proofs = [ + inclusion-proof ]

verifiable-proofs = {
  &(inclusion-proof: -1) => inclusion-proofs
}

unprotected-header-map = {
  &(vdp: 396) => verifiable-proofs
  * cose-label => cose-value
}
]]></sourcecode>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>See the privacy considerations section of:</t>
      <ul spacing="normal">
        <li>
          <t><xref target="I-D.ietf-cose-merkle-tree-proofs"/></t>
        </li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security consideration of <xref target="I-D.ietf-cose-merkle-tree-proofs"/> apply.</t>
      <section anchor="trusted-execution-environments">
        <name>Trusted Execution Environments</name>
        <t>CCF networks of nodes rely on executing in Trusted Execution Environments to secure their function, in particular:</t>
        <ol spacing="normal" type="1"><li>
            <t>The evaluation of registration policies</t>
          </li>
          <li>
            <t>The creation and usage of receipt signing keys</t>
          </li>
        </ol>
        <t>A compromise in the Trusted Execution Environment platform used to execute the network may allow an attacker to produce invalid and incompatible ledger branches.
Clients can mitigate this risk in two ways: by regularly auditing the consistency of the CCF ledger; and by regularly fetching attestation information about the TEE instances, available in the ledger and from the network itself, and confirming that the nodes composing the network are running up-to-date, trusted platform components.</t>
      </section>
      <section anchor="operators">
        <name>Operators</name>
        <t>The operator of a CCF network has the ability to start successor networks, with a distinct identity, which endorse the receipts produced by a previous instance.
This functionality is important to provide service continuity in the case of a catastrophic failure of a majority of nodes, but allows a potentially malicious operator to start from a prefix of an earlier ledger.
Clients can mitigate this risk by auditing the successor ledger and its attestation information, as described above. In particular, clients can check that the latest receipt they hold is present in the successor ledger before they begin making use of it.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="additions-to-existing-registries">
        <name>Additions to Existing Registries</name>
        <section anchor="tree-alg-registry">
          <name>Tree Algorithms</name>
          <t>This document requests IANA to add the following new value to the 'COSE Verifiable Data Structures' registry:</t>
          <ul spacing="normal">
            <li>
              <t>Name: CCF_LEDGER_SHA256</t>
            </li>
            <li>
              <t>Value: 2 (requested assignment)</t>
            </li>
            <li>
              <t>Description: Append-only logs that are integrity-protected by a Merkle Tree and signatures produced via Trusted Execution Environments containing a mix of public and confidential information, as specified by the Confidential Consortium Framework.</t>
            </li>
            <li>
              <t>Reference: This document</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC9162">
        <front>
          <title>Certificate Transparency Version 2.0</title>
          <author fullname="B. Laurie" initials="B." surname="Laurie"/>
          <author fullname="E. Messeri" initials="E." surname="Messeri"/>
          <author fullname="R. Stradling" initials="R." surname="Stradling"/>
          <date month="December" year="2021"/>
          <abstract>
            <t>This document describes version 2.0 of the Certificate Transparency (CT) protocol for publicly logging the existence of Transport Layer Security (TLS) server certificates as they are issued or observed, in a manner that allows anyone to audit certification authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
            <t>This document obsoletes RFC 6962. It also specifies a new TLS extension that is used to send various CT log artifacts.</t>
            <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9162"/>
        <seriesInfo name="DOI" value="10.17487/RFC9162"/>
      </reference>
      <reference anchor="I-D.ietf-cose-merkle-tree-proofs">
        <front>
          <title>COSE (CBOR Object Signing and Encryption) Receipts</title>
          <author fullname="Orie Steele" initials="O." surname="Steele">
            <organization>Tradeverifyd</organization>
          </author>
          <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
            <organization>Fraunhofer SIT</organization>
          </author>
          <author fullname="Antoine Delignat-Lavaud" initials="A." surname="Delignat-Lavaud">
            <organization>Microsoft</organization>
          </author>
          <author fullname="Cedric Fournet" initials="C." surname="Fournet">
            <organization>Microsoft</organization>
          </author>
          <date day="2" month="December" year="2025"/>
          <abstract>
            <t>   COSE (CBOR Object Signing and Encryption) Receipts prove properties
   of a verifiable data structure to a verifier.  Verifiable data
   structures and associated proof types enable security properties,
   such as minimal disclosure, transparency and non-equivocation.
   Transparency helps maintain trust over time, and has been applied to
   certificates, end to end encrypted messaging systems, and supply
   chain security.  This specification enables concise transparency
   oriented systems, by building on CBOR (Concise Binary Object
   Representation) and COSE.  The extensibility of the approach is
   demonstrated by providing CBOR encodings for Merkle inclusion and
   consistency proofs.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-cose-merkle-tree-proofs-18"/>
      </reference>
      <reference anchor="I-D.ietf-scitt-architecture">
        <front>
          <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
          <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
            <organization>Fraunhofer SIT</organization>
          </author>
          <author fullname="Antoine Delignat-Lavaud" initials="A." surname="Delignat-Lavaud">
            <organization>Microsoft Research</organization>
          </author>
          <author fullname="Cedric Fournet" initials="C." surname="Fournet">
            <organization>Microsoft Research</organization>
          </author>
          <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
            <organization>ARM</organization>
          </author>
          <author fullname="Steve Lasker" initials="S." surname="Lasker">
         </author>
          <date day="10" month="October" year="2025"/>
          <abstract>
            <t>   Traceability in supply chains is a growing security concern.  While
   verifiable data structures have addressed specific issues, such as
   equivocation over digital certificates, they lack a universal
   architecture for all supply chains.  This document defines such an
   architecture for single-issuer signed statement transparency.  It
   ensures extensibility, interoperability between different
   transparency services, and compliance with various auditing
   procedures and regulatory requirements.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-architecture-22"/>
      </reference>
      <reference anchor="CCF" target="https://github.com/microsoft/ccf">
        <front>
          <title>Confidential Consortium Framework</title>
          <author>
            <organization/>
          </author>
          <date>n.d.</date>
        </front>
      </reference>
      <reference anchor="CCF-Ledger-Format" target="https://microsoft.github.io/CCF/main/architecture/ledger.html">
        <front>
          <title>CCF Ledger Format</title>
          <author>
            <organization/>
          </author>
          <date>n.d.</date>
        </front>
      </reference>
      <reference anchor="CCF-Commit-Evidence" target="https://microsoft.github.io/CCF/main/use_apps/verify_tx.html#commit-evidence">
        <front>
          <title>CCF Commit Evidence</title>
          <author>
            <organization/>
          </author>
          <date>n.d.</date>
        </front>
      </reference>
      <reference anchor="CCF-Receipt-Verification" target="https://microsoft.github.io/CCF/main/use_apps/verify_tx.html#receipt-verification">
        <front>
          <title>CCF Receipt Verification</title>
          <author>
            <organization/>
          </author>
          <date>n.d.</date>
        </front>
      </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>
  </back>
  <!-- ##markdown-source:
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
HMDAviQDTocuGt2pwgNwYs1WwcgXONzFWW09Uun2lAx53ULdKZlwvnfT1xqH
wEKMFnybgcOuKyeqkoN7Quw2bPVEEVn9WIH31YKnKRu8Euomhop9cZ6qCPFN
m5So8wUYxF1rUsxQroZ2VuTldEbZi8VFJSv1SVrFk1mtm7aXTcQSo/Sq50Wx
HtxTkkmpa018pSrNi2XVlqHWImpB7kQRLULeoTKUY51o5BY5mbgGD+xpK+ek
6tonboHj0lQW2vgo0S7+GK8ynoqbEtbLmNsIFL4bW1mphn3nkVr6TmqyyZ6g
7Kn+CKFw8puzGsW5fmUQsDetYzvfV2rlSPyKNaUukCan07oNVAEEQpphXoS+
56Apza+EQF65zlRVLHy31iLx3/GNFkRkyfPEhaQq4TXlvh87XIEkT0Wr7YGK
Kau5dzSCNjcsGsPDHzD3dx2K30OB/HT4k6jiOX9YSItlB/zhw7dig9Hr4NFF
w/dZouegMkd9kYOHwkUXWSPvvdUWUUsYq90fw20J9YnMSdff1jRYx7daeRv6
qT0Vy8pWz+lXG1h7LdytpO9LcMsbpLKkulUY5Sy08pnwoc+6W8yRrVtWpV+l
57rv4UKu2GKxzje4Id2M7jhcHjcV3y2NuKFN+rfi+OXFJVcN3cq/nEeuZ/VW
A6xoN0GIGOqRKC5aKBKXWfM8UzKmqki8IyEpUpqqu4SFqjJJa3E3QyDgoQa1
dDrQ8uu1ENKr5bOyXXty1ZfbJq1GRtx98Iyv8g0I8424fbLQHFJa3icEcevj
uyeBV6QsDNjrzeDpUr02f+G6xtxv5xrNeRmFxFvR4aIaZgOCEI9Vwpt/xb6c
3bzt3tZCuPVS4P6295+zo7dHK42Dp4tlZ6kjmtwJGUKSKjZ1/wVr/Xr5r8Wm
YTs0bYldlUz4hB91MC/Zqv22ELPXziByDBxSGZdcJrmMK/k1NOuN5kS7+HNZ
wkGTSifUY41mLtdxhUwagngiVZ+ycE+z4KBTWicKXq6ONRse7xS3KXcvAp/3
uYYFIKTDHfA3JanYNfgoVFHkhQcNQCYuxzzFPkXWOOco/BvodTFvPd61D0Kb
LoxLyqXZDEW1u0BY7uxz9XjIA11f4HniboiwDlPRpTPZmRgeeqIoWveexKd8
Mos/FINcIG6bU2HObmtwa1wNiCiJk0N8oES0x+n4mnTozNpPZsp4K8bE3wqq
uF3uqpanPzeCPnNNrhJDVxYKBfVkAjv5U+FaLDdeLJ2NNywPKtA5rCDzn709
Pn9/dXbx9ubd5cXFq5vzo5en53TLxsCLbMcN0y2RVyv1WoZ44wyx69euUMXX
zPnAO1w3O25Oqgzz8FBkOqk3qd6KLVon4e+K92all3RJ5uqTfu2gfplGnF6W
1ETdpGWvGt91IOdIxK2GKeELbqWMyYbLjM9GXSWy7bqAR6nvDZ1qQMQrx8vc
Rmy9qNDnE1igaez73Nn40PHJybk/cXaXFBqYWisjdMoIU7mAQB0EhO9VCFAz
QP1d5y42Q/Hdi+/55QCvvnE3Wbwx/eSeOAtVMDAkHxYdn8X63aGoWv29Bvxs
TYs935R298tAQg+LgYJ6MSKkvdxvy7pblv9iXts8lF5JEP+aAjaR+JYcF6wP
M1RNIBqsz772kcDBl3qoU+dGYg0r3a6uDcUFLRlss4y7eEHS/4Hnb+z4VWax
i3yg7yTqXDo0h1YKV+kGwZXy6ch/j1a+I7f7/uqE8cKW8w5avLrKuLH6iOGB
/7iy9BOHJ4RBl1XX7EsVuMthmbJ06s+HvRn3yAtqzdRHvWQPX1HM545IloQu
Wl1vSiCysDoqE1n482YqnEi4NRse1vnz25zqJmWCgRsaUfVDHxjAc+zhKS7K
cO0CGudqySGIYisSPKr6Cn98kXSxSKSl0+fmboc74fYXNVg4XAq4Y2QKmBaR
eO4Qkr8dhK3Aj3Y1BuyTzvGtHid1z8Cd8NPRxHGiWWIUelO411TyXnQ/RZs5
03yfi3u5NEPXF5uS4Kgp7PtV9RlwdT+ldVzndvsjk7EyeaJsNGN8Yi31fTbu
WrgLOiyu09P6fIbOR12HJanFWXVBstbpTiUn1KwqmThkGdFFkyJ1FPurF87A
fNnqWanmUh+xKDNWZrkIbU7lDJ0QefXVimp6uM7KLxbkEECHzlly/+g6Iy0T
JyziqjTfL+IjetgmHeiBV0MHAt4b9qrsRX0kKNT6OGyXVatHZTG29LCyumFV
XxaD8CWeAL3y0tTi7K0eq0imAi+AdfPCUvXdvgGmijsdue6mzkoe6jQQUbXK
3CEtS7optgBJYgJFkQfyl1T+LeeQUbm16zf4FiJoy627AwTjSCU5HBFay64W
jT/pAysT/ak6yYFJURXobz7+mkmP12y3kXbLlKjb8YRt+vKnylauAAJOb8WV
PRG1aICjRfPG6OhOlbF1wOCW8ixPYsElCF/RqSS7QZrvo/KcMYIUGJRztlCn
Am6i7bradD1ywzSPfO+AA+TpJ7alKQASRzsKcRi0606LmgNe8bDLV2+BAcKq
3t048/Wn18ZtTbfh4ngti/NtSYcYXLH9jOHZk2WzeVaX15yp3rrr1+snsfjC
OGQoBtsP0bsY0TqVH4ojvpMVcq83yae+iqvODaZkpmEDYdh12udoZB6tizW/
5UKmL7I58ME02YAX5Tih9n8Voqq7cOsW5w8KGnz0qzfnqPtRX0AYihWFubua
YySO4P8AcsICbVIxAAA=

-->

</rfc>
