<?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.4 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-cbor-cde-01" category="bcp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.0 -->
  <front>
    <title abbrev="CBOR CDE">CBOR Common Deterministic Encoding (CDE)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-cde-01"/>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization>Universität Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <city>Bremen</city>
          <code>D-28359</code>
          <country>Germany</country>
        </postal>
        <phone>+49-421-218-63921</phone>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <date year="2024" month="January" day="08"/>
    <area>Applications and Real-Time</area>
    <workgroup>CBOR</workgroup>
    <abstract>
      <?line 53?>

<t>CBOR (STD 94, RFC 8949) defines "Deterministically Encoded CBOR" in
its Section 4.2, providing some flexibility for application specific
decisions.
To facilitate Deterministic Encoding to be offered as a selectable
feature of generic encoders, the present document defines a
CBOR Common Deterministic Encoding (CDE) Profile that can be shared by a
large set of applications with potentially diverging detailed
requirements.</t>
      <t>This document also introduces the concept of Application Profiles,
which are layered on top of the CBOR CDE Profile and can address
more application specific requirements.
Application Profiles are defined in separate documents.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-cbor-cde/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Concise Binary Object Representation Maintenance and Extensions (CBOR) Working Group mailing list (<eref target="mailto:cbor@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/cbor/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/cbor/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/cabo/det"/>.</t>
    </note>
  </front>
  <middle>
    <?line 72?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>CBOR (STD 94, RFC 8949) defines "Deterministically Encoded CBOR" in
its Section 4.2, providing some flexibility for application specific
decisions.
To facilitate Deterministic Encoding to be offered as a selectable
feature of generic encoders, the present document defines a
CBOR Common Deterministic Encoding (CDE) Profile that can be shared by a
large set of applications with potentially diverging detailed
requirements.</t>
      <t>This document also introduces the concept of Application Profiles,
which are layered on top of the CBOR CDE Profile and can address
more application specific requirements.
Application Profiles are defined in separate documents.
<xref target="I-D.mcnally-deterministic-cbor"/> is an example for such a document.</t>
      <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>
    <section anchor="dep">
      <name>CBOR Common Deterministic Encoding Profile (CDE)</name>
      <t>This specification defines the <em>CBOR Common Deterministic Encoding
Profile</em> (CDE) based on the <em>Core Deterministic Encoding
Requirements</em> defined for CBOR in
Section <xref target="RFC8949" section="4.2.1" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/>.</t>
      <t>In many cases, CBOR provides more than one way to encode a data item,
but also provides a recommendation for a <em>Preferred Encoding</em>.
The <em>CoRE Deterministic Encoding Requirements</em> generally pick the
preferred encodings as mandatory; they also pick additional choices
such as definite-length encoding.
Finally, it defines a map ordering based on lexicographic ordering of
the (deterministically) encoded map keys.</t>
      <t>Note that this specific set of requirements is elective — in
principle, other variants of deterministic encoding can be defined
(and have been, now being phased out slowly, as detailed in Section <xref target="RFC8949" section="4.2.3" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/>).
In many applications of CBOR today, deterministic encoding is not used
at all, as its restriction of choices can create some additional
performance cost and code complexity.</t>
      <t><xref target="STD94"/>'s core requirements are designed to provide well-understood and
easy-to-implement rules while maximizing coverage, i.e., the subset of
CBOR data items that are fully specified by these rules, and also
placing minimal burden on implementations.</t>
      <t>Section <xref target="RFC8949" section="4.2.2" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/> picks up on the interaction of extensibility
(CBOR tags) and deterministic encoding.
CBOR itself uses some tags to increase the range of its basic
generic data types, e.g., tags 2/3 extend the range of basic major
types 0/1 in a seamless way.
Section <xref target="RFC8949" section="4.2.2" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/> recommends handling this transition the same
way as with the transition between different integer representation
lengths in the basic generic data model, i.e., by mandating the
Preferred Encoding (Section <xref target="RFC8949" section="3.4.3" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/>).</t>
      <ol spacing="normal" type="1" group="1"><li>
          <t>The CBOR Common Deterministic Encoding Profile (CDE) turns this
recommendation into a mandate: Integers that can be represented by
basic major type 0 and 1 are encoded using the deterministic
encoding defined for them, and integers outside this range are
encoded using the preferred serialization (Section <xref target="RFC8949" section="3.4.3" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/>) of tag 2 and 3 (i.e., no leading zero bytes).</t>
        </li>
      </ol>
      <t>Most tags capture more specific application semantics and therefore
may be harder to define a deterministic encoding for.
While the deterministic encoding of their tag internals is often
covered by the <em>Core Deterministic Encoding Requirements</em>, the mapping
of diverging platform application data types on the tag contents may
be hard to do in a deterministic way; see <xref section="3.2" sectionFormat="of" target="I-D.bormann-cbor-det"/> for
more explanation as well as examples.
As the CDE would continually
need to address additional issues raised by the registration of new
tags, this specification recommends that new tag registrations address
deterministic encoding in the context of this Profile.</t>
      <t>A particularly difficult field to obtain deterministic encoding for is
floating point numbers, partially because they themselves are often
obtained from processes that are not entirely deterministic between platforms.
See <xref section="3.2.2" sectionFormat="of" target="I-D.bormann-cbor-det"/> for more details.
Section <xref target="RFC8949" section="4.2.2" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/> presents a number of choices, which need to
be made to obtain a CBOR Common Deterministic Encoding Profile (CDE).
Specifically, CDE specifies (in the order of the bullet list at the end of Section <xref target="RFC8949" section="4.2.2" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/>):</t>
      <ol spacing="normal" type="1" group="1"><li>
          <t>Besides the mandated use of preferred encoding, there is no further
specific action for the two different zero values, e.g., an encoder
that is asked by an application to represent a negative floating
point zero will generate 0xf98000.</t>
        </li>
        <li>
          <t>There is no attempt to mix integers and floating point numbers,
i.e., all floating point values are encoded as the preferred
floating-point representation that accurately represents the value,
independent of whether the floating point value is, mathematically,
an integral value (choice 2 of the second bullet).</t>
        </li>
        <li>
          <t>There is no special handling of NaN values, except that the
preferred encoding rules also apply to NaNs with payloads, using
the canonical encoding of NaNs as defined in <xref target="IEEE754"/>.
Specifically, this means that shorter forms of encodings for a NaN
are used when that can be achieved by only removing trailing zeros
in the payload.
Further clarifying <xref target="IEEE754"/>, the CBOR encoding uses a leading bit
of 1 to encode a quiet NaN; encoding of signaling NaN is <bcp14>NOT
RECOMMENDED</bcp14> but is achieved by using a leading bit of 0.  </t>
          <t>
Typically, most applications that employ NaNs in their storage and
communication interfaces will only use the NaN with payload 0,
which therefore deterministically encodes as 0xf97e00.</t>
        </li>
        <li>
          <t>There is no special handling of subnormal values.</t>
        </li>
        <li>
          <t>The CBOR Common Deterministic Encoding Profile does not presume
equivalence of basic floating point values with floating point
values using other representations (e.g., tag 4/5).</t>
        </li>
      </ol>
      <t>The main intent here is to preserve the basic generic data model, so
Application Profiles can make their own decisions within that data model.
E.g., an application profile can decide that it only ever allows a
single NaN value that would encoded as 0xf97e00, so a CDE
implementation focusing on this application profile would not need to
provide processing for other NaN values.
Basing the definition of both CDE and Application Profiles on the
generic data model of CBOR also means that there is no effect on CDDL
<xref target="RFC8610"/>, except where the data description documents encoding decision
for byte strings carrying embedded CBOR.</t>
    </section>
    <section anchor="application-profiles">
      <name>Application Profiles</name>
      <t>While the CBOR Common Deterministic Encoding Profile (CDE) provides
for commonality between different applications of CBOR, it is useful
to further constrain the set of data items handled in a group of
applications (<em>exclusions</em>) and to define further mappings
(<em>reductions</em>) that help the applications in such a group get by with
the exclusions.</t>
      <t>For example, the dCBOR Application Profile specifies the use of
Deterministic Encoding as defined in Section <xref target="RFC8949" section="4.2" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/> (see also
<xref target="I-D.bormann-cbor-det"/> for more information) together with some application-level rules.
See <xref target="I-D.mcnally-deterministic-cbor"/> for a definition of the dCBOR Application Profile that
makes use of CDE.</t>
      <t>In general, the application-level rules specified by an Application Profile are
based on the shared CBOR Common Deterministic Encoding Profile; they do
not "fork" CBOR in the sense of requiring distinct generic
encoder/decoder implementations.</t>
      <t>An Application Profile implementation produces well-formed,
deterministically encoded CBOR according to <xref target="STD94"/>, and existing
generic CBOR decoders will therefore be able to decode it, including
those that check for Deterministic Encoding.
Similarly, generic CBOR encoders will be able to produce valid CBOR
that can be processed by Application Profile implementations, if
handed Application Profile conforming data model level information
from an application.</t>
      <t>Please note that the separation between standard CBOR processing and
the processing required by the Application Profile is a conceptual
one: Instead of employing generic encoders/decoders, both Application
Profile processing and standard CBOR processing
can be combined into a encoder/decoder specifically designed for the
Application Profile.</t>
      <t>An Application Profile is intended to be used in conjunction with an
application, which typically will use a subset of the CBOR generic
data model, which in turn
influences which subset of the application profile is used.
As a result, an Application Profile itself places no direct
requirement on what minimum subset of CBOR is implemented.
For instance, an application profile might define rules for the
processing of floating point values, but there is no requirement that
implementations of that Application Profile support floating point
numbers (or any other kind of number, such as arbitrary precision
integers or 64-bit negative integers) when they are used with
applications that do not use them.</t>
    </section>
    <section anchor="cddl-support">
      <name>CDDL support</name>
      <t><xref target="RFC8610"/> defines control operators to indicate that the contents of a
byte string carries a CBOR-encoded data item (<tt>.cbor</tt>) or a sequence of
CBOR-encoded data items (<tt>.cborseq</tt>).</t>
      <t>CDDL specifications may want to specify that the data items should be
encoded in Common CBOR Deterministic Encoding.
This specification adds two CDDL control operators that can be used
for this.</t>
      <t>The control operators <tt>.cde</tt> and <tt>.cdeseq</tt> are exactly like <tt>.cbor</tt> and
<tt>.cborseq</tt> except that they also require the encoded data item(s) to be
in Common CBOR Deterministic Encoding.</t>
      <t>For example, a byte string of embedded CBOR that is to be encoded
according to CDE can be formalized as:</t>
      <artwork><![CDATA[
leaf = #6.24(bytes .cde any)
]]></artwork>
      <t>More importantly, if the encoded data item also needs to have a
specific structure, this can be expressed by the right hand side
(instead of using the most general CDDL type <tt>any</tt> here).</t>
      <t>(Note that the <tt>.cborseq</tt> control operator does not enable specifying
different deterministic encoding requirements for the elements of the
sequence.  If a use case for such a feature becomes known, it could be
added.)</t>
      <t>Obviously, Application Profiles can define similar control operators
that also embody the processing required by the Application Profile,
and are encouraged to do so.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations in Section <xref target="RFC8949" section="10" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/> apply.
The use of deterministic encoding can mitigate issues arising out of
the use of non-preferred encodings specially crafted by an attacker.
However, this effect only accrues if the decoder actually checks that
deterministic encoding was applied correctly.
More generally, additional security properties of deterministic
encoding can rely on this check being performed properly.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t><cref anchor="to-be-removed">RFC Editor: please replace RFCXXXX with the RFC
number of this RFC and remove this note.</cref></t>
      <t>This document requests IANA to register the contents of
<xref target="tbl-iana-reqs"/> into the registry
"<xref section="CDDL Control Operators" relative="#cddl-control-operators" sectionFormat="bare" target="IANA.cddl"/>" of <xref target="IANA.cddl"/>:</t>
      <table anchor="tbl-iana-reqs">
        <name>New control operators to be registered</name>
        <thead>
          <tr>
            <th align="left">Name</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">.cde</td>
            <td align="left">[RFCXXXX]</td>
          </tr>
          <tr>
            <td align="left">.cdeseq</td>
            <td align="left">[RFCXXXX]</td>
          </tr>
        </tbody>
      </table>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <referencegroup anchor="STD94" target="https://www.rfc-editor.org/info/std94">
          <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rfc8949">
            <front>
              <title>Concise Binary Object Representation (CBOR)</title>
              <author fullname="C. Bormann" initials="C." surname="Bormann"/>
              <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
              <date month="December" year="2020"/>
              <abstract>
                <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
                <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
              </abstract>
            </front>
            <seriesInfo name="STD" value="94"/>
            <seriesInfo name="RFC" value="8949"/>
            <seriesInfo name="DOI" value="10.17487/RFC8949"/>
          </reference>
        </referencegroup>
        <reference anchor="IEEE754" target="https://ieeexplore.ieee.org/document/8766229">
          <front>
            <title>IEEE Standard for Floating-Point Arithmetic</title>
            <author>
              <organization>IEEE</organization>
            </author>
            <date/>
          </front>
          <seriesInfo name="IEEE Std" value="754-2019"/>
          <seriesInfo name="DOI" value="10.1109/IEEESTD.2019.8766229"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="IANA.cddl" target="https://www.iana.org/assignments/cddl">
          <front>
            <title>Concise Data Definition Language (CDDL)</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.bormann-cbor-det">
          <front>
            <title>CBOR: On Deterministic Encoding</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="9" month="August" year="2023"/>
            <abstract>
              <t>   CBOR (STD 94, RFC 8949) defines "Deterministically Encoded CBOR" in
   its Section 4.2.  The present document provides additional
   information about use cases, deployment considerations, and
   implementation choices for Deterministic Encoding.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-det-01"/>
        </reference>
        <reference anchor="I-D.mcnally-deterministic-cbor">
          <front>
            <title>dCBOR: A Deterministic CBOR Application Profile</title>
            <author fullname="Wolf McNally" initials="W." surname="McNally">
              <organization>Blockchain Commons</organization>
            </author>
            <author fullname="Christopher Allen" initials="C." surname="Allen">
              <organization>Blockchain Commons</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="4" month="January" year="2024"/>
            <abstract>
              <t>   The purpose of determinism is to ensure that semantically equivalent
   data items are encoded into identical byte streams.  CBOR (RFC 8949)
   defines "Deterministically Encoded CBOR" in its Section 4.2, but
   leaves some important choices up to the application developer.  The
   CBOR Common Deterministic Encoding (CDE) Internet Draft builds on
   this by specifying a baseline for application profiles that wish to
   implement deterministic encoding with CBOR.  The present document
   provides an application profile "dCBOR" that can be used to help
   achieve interoperable deterministic encoding based on CDE for a
   variety of applications wishing an even narrower and clearly defined
   set of choices.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mcnally-deterministic-cbor-06"/>
        </reference>
      </references>
    </references>
    <?line 321?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>An earlier version of this document was based on the work of Wolf
McNally and Christopher Allen as documented in <xref target="I-D.mcnally-deterministic-cbor"/>; more
recent revisions of that document now make use of the present document
and the concept of Application Profile.
We would like to explicitly acknowledge that this work has
contributed greatly to shaping the concept of a CBOR Common
Deterministic Encoding and Application Profiles on top of that.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
3C/UwT9pDnFRXmrpEO9S0YCV7txMD57u7OyM1B7nzUYOU4Hd5RXNvnA3baoh
ZH7A82khyQZU9d/5SCTsJT5T9hMSjQ+jhjKqzzF8WERRTXtHQDSvZSZeQ7YB
6pvDCUglMNpybrkcoY/W7QsyD2BpClHjyyOexqQiOIo//+GmuL7eDc5XArKg
EvFBeO9+X43sAxjdcDAMOzfnrcFvuO/mSy5O2fc9zBN1LibJ8lwWY5bQFDQr
yBRjNs7y4jOWWEmWkjC9jMfDQtEZyibfe6cCHYP7AcjgubAm9ahUzrMCYawZ
cphgNwWwlNxYgXUHHVClxH2hHk8y0dzZa/Fl7hwhb6JsIX6C3JEEDlGKIcVH
RETe3guJMB0Bvt10RZ93JBi0rchGbCbwpiEoE0f9ctr6uNdfQAYHjGD73/U0
RtWV4V2R4aCM84tLZkZtR0hTP4JCtCOZMK7eqjTbjvRkL1d5UPCCi79uNcrK
QvQl2UrsJVoAU0E1R5UZ13N8SrNY1GkAAqYwU0N1Jwc569bnH95711v0Dnu4
AHhDtfS9NoFXD/sMgcW3lsDim897OSpGPv3xkYNs8+SrmXmcWSm5KczrhTBa
mAkzWqqbm5ppPdiwvP1XNIN/KwaSPkUfZ5BnmmpN729/Qzz2knOBEy1jiSA9
F90YWlzbz9Q9qHzXNrQpKhbmynoTU3u0OehgEZwPn3aykToNiaKbCXKvNpqR
poh9L4c8j3wBrlkQNmdLOrsg8RPbopF8K4yvA9HB6CQA5fOTU9Uv0xH2kdel
7zSv25PMS7YMbCH0KjzrCcxKDNJi5Eg9N50KKTTb2fb4lgkCJaW1uhU6re6b
o+n4MKh24K2byy1ydES6wyInL7kVE8cJYYyH7SV/zBujmaV/ngunD8cR3SJO
rKpITCqQ6JCWgTMyRcFAZpFJ43CARucNa8VSndrmq+vc0DHlXUQ80PDR2/1K
f12LjHuRjqLHTutEVQ3jIcJNHN0jtu8YdhpFDA6ScYwQLioxe2tsvoNik5pd
/500aNpqL6zj66pSbb5DkpRjHfqazTe3Sc7r9+alcyI5y5F1Z9gcIJqCi7uj
7arQ+QvoxRdDkkxi1vEaQ3SIKX0nDFE9YIW7ObfDvNfx7k2q5bhdRudUff7e
nApnKcTOZkJuGO2ky9hudZgg6BMhEKE+6B97SdLuB9anpSZFK0KsMpBiOJa0
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
A4mDcSjAMwAA

-->

</rfc>
