<?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-rfc2629 version 1.5.5 -->
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-datagram-06" category="std" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.9.1 -->
  <front>
    <title abbrev="QUIC Datagrams">An Unreliable Datagram Extension to QUIC</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-datagram-06"/>
    <author initials="T." surname="Pauly" fullname="Tommy Pauly">
      <organization>Apple Inc.</organization>
      <address>
        <postal>
          <street>One Apple Park Way</street>
          <city>Cupertino, California 95014</city>
          <country>United States of America</country>
        </postal>
        <email>tpauly@apple.com</email>
      </address>
    </author>
    <author initials="E." surname="Kinnear" fullname="Eric Kinnear">
      <organization>Apple Inc.</organization>
      <address>
        <postal>
          <street>One Apple Park Way</street>
          <city>Cupertino, California 95014</city>
          <country>United States of America</country>
        </postal>
        <email>ekinnear@apple.com</email>
      </address>
    </author>
    <author initials="D." surname="Schinazi" fullname="David Schinazi">
      <organization>Google LLC</organization>
      <address>
        <postal>
          <street>1600 Amphitheatre Parkway</street>
          <city>Mountain View, California 94043</city>
          <country>United States of America</country>
        </postal>
        <email>dschinazi.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2021" month="October" day="05"/>
    <workgroup>QUIC</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document defines an extension to the QUIC transport protocol to
add support for sending and receiving unreliable datagrams over
a QUIC connection.</t>
      <t>Discussion of this work is encouraged to happen on the QUIC IETF mailing list
<eref target="mailto:quic@ietf.org">quic@ietf.org</eref> or on the GitHub repository which contains the draft:
<eref target="https://github.com/quicwg/datagram">https://github.com/quicwg/datagram</eref>.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>The QUIC Transport Protocol <xref target="RFC9000" format="default"/> provides a secure,
multiplexed connection for transmitting reliable streams of application data.
QUIC uses various frame types to transmit data within packets, and each frame
type defines whether or not the data it contains will be retransmitted.
Streams of reliable application data are sent using STREAM frames.</t>
      <t>Some applications, particularly those that need to transmit real-time data,
prefer to transmit data unreliably. In the past, these applications have built
directly upon UDP <xref target="RFC0768" format="default"/> as a transport, and have often added security with
DTLS <xref target="RFC6347" format="default"/>. Extending QUIC to support transmitting unreliable application
data provides another option for secure datagrams, with the added benefit of
sharing the cryptographic and authentication context used for reliable streams.</t>
      <t>This document defines two new DATAGRAM QUIC frame types, which
carry application data without requiring retransmissions.</t>
      <t>Discussion of this work is encouraged to happen on the QUIC IETF mailing list
<eref target="mailto:quic@ietf.org">quic@ietf.org</eref> or on the GitHub repository which contains the draft:
<eref target="https://github.com/quicwg/datagram">https://github.com/quicwg/datagram</eref>.</t>
      <section anchor="specification-of-requirements" numbered="true" toc="default">
        <name>Specification of Requirements</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP 14
<xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> when, and only when,
they appear in all capitals, as shown here.</t>
      </section>
    </section>
    <section anchor="motivation" numbered="true" toc="default">
      <name>Motivation</name>
      <t>Transmitting unreliable data over QUIC provides benefits over existing
solutions:</t>
      <ul spacing="normal">
        <li>Applications that open both a reliable TLS stream and an unreliable
DTLS flow to the same peer can benefit by sharing a single handshake
and authentication context between a reliable QUIC stream and flow
of unreliable QUIC datagrams. This can reduce the latency required
for handshakes.</li>
        <li>QUIC uses a more nuanced loss recovery mechanism than the DTLS
handshake, which has a basic packet loss retransmission timer. This
can allow loss recovery to occur more quickly for QUIC data.</li>
        <li>QUIC datagrams are subject to QUIC congestion control. Providing a single
congestion control for both reliable and unreliable data can be more effective
and efficient.</li>
      </ul>
      <t>These features can be useful for optimizing audio/video streaming applications,
gaming applications, and other real-time network applications.</t>
      <t>Unreliable QUIC datagrams can also be used to implement an IP
packet tunnel over QUIC, such as for a Virtual Private Network (VPN).
Internet-layer tunneling protocols generally require a reliable and
authenticated handshake, followed by unreliable secure transmission
of IP packets. This can, for example, require a TLS connection for
the control data, and DTLS for tunneling IP packets. A single
QUIC connection could support both parts with the use of unreliable
datagrams.</t>
    </section>
    <section anchor="transport-parameter" numbered="true" toc="default">
      <name>Transport Parameter</name>
      <t>Support for receiving the DATAGRAM frame types is advertised by means
of a QUIC Transport Parameter (name=max_datagram_frame_size, value=0x0020).
The max_datagram_frame_size transport parameter is an integer value
(represented as a variable-length integer) that represents the maximum
size of a DATAGRAM frame (including the frame type, length, and
payload) the endpoint is willing to receive, in bytes.</t>
      <t>The default for this parameter is 0, which indicates that the endpoint
does not support DATAGRAM frames. A value greater than 0 indicates
that the endpoint supports the DATAGRAM frame types and is willing to
receive such frames on this connection.</t>
      <t>An endpoint MUST NOT send DATAGRAM frames until it has received the
max_datagram_frame_size transport parameter with a non-zero value. An
endpoint MUST NOT send DATAGRAM frames that are larger than the
max_datagram_frame_size value it has received from its peer.
An endpoint that receives a DATAGRAM frame when it has not indicated support
via the transport parameter MUST terminate the connection with an error of
type PROTOCOL_VIOLATION. Similarly, an endpoint that receives a DATAGRAM frame
that is larger than the value it sent in its max_datagram_frame_size
transport parameter MUST terminate the connection with an error of type
PROTOCOL_VIOLATION.</t>
      <t>For most uses of DATAGRAM frames, it is RECOMMENDED to send a value of 65535 in
the max_datagram_frame_size transport parameter to indicate that this endpoint
will accept any DATAGRAM frame that fits inside a QUIC packet.</t>
      <t>The max_datagram_frame_size transport parameter is a unidirectional limit and
indication of support of DATAGRAM frames. Application protocols that use
DATAGRAM frames MAY choose to only negotiate and use them in a single direction.</t>
      <t>When clients use 0-RTT, they MAY store the value of the server's
max_datagram_frame_size transport parameter. Doing so allows the client to send
DATAGRAM frames in 0-RTT packets. When servers decide to accept 0-RTT data,
they MUST send a max_datagram_frame_size transport parameter greater or equal
to the value they sent to the client in the connection where they sent them
the NewSessionTicket message. If a client stores the value of the
max_datagram_frame_size transport parameter with their 0-RTT state, they MUST
validate that the new value of the max_datagram_frame_size transport parameter
sent by the server in the handshake is greater or equal to the stored value;
if not, the client MUST terminate the connection with error PROTOCOL_VIOLATION.</t>
      <t>Application protocols that use datagrams MUST define how they react to the
max_datagram_frame_size transport parameter being missing. If datagram support
is integral to the application, the application protocol can fail the handshake
if the max_datagram_frame_size transport parameter is not present.</t>
    </section>
    <section anchor="datagram-frame-types" numbered="true" toc="default">
      <name>Datagram Frame Types</name>
      <t>DATAGRAM frames are used to transmit application data in an unreliable manner.
The DATAGRAM frame type takes the form 0b0011000X (or the values 0x30
and 0x31). The least significant bit of the DATAGRAM frame type is the
LEN bit (0x01). It indicates that there is a Length field present. If this
bit is set to 0, the Length field is absent and the Datagram Data field extends
to the end of the packet. If this bit is set to 1, the Length field is present.</t>
      <t>DATAGRAM frames are structured as follows:</t>
      <figure anchor="datagram-format">
        <name>DATAGRAM Frame Format</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
DATAGRAM Frame {
  Type (i) = 0x30..0x31,
  [Length (i)],
  Datagram Data (..),
}
]]></artwork>
      </figure>
      <t>DATAGRAM frames contain the following fields:</t>
      <dl>
        <dt>
Length:  </dt>
        <dd>
          <t>A variable-length integer specifying the length of the Datagram Data field in
bytes. This field is present only when the LEN bit is set to 1. When the LEN bit
is set to 0, the Datagram Data field extends to the end of the QUIC packet. Note
that empty (i.e., zero-length) datagrams are allowed.</t>
        </dd>
        <dt>
Datagram Data:  </dt>
        <dd>
          <t>The bytes of the datagram to be delivered.</t>
        </dd>
      </dl>
    </section>
    <section anchor="behavior-and-usage" numbered="true" toc="default">
      <name>Behavior and Usage</name>
      <t>When an application sends a datagram over a QUIC connection,
QUIC will generate a new DATAGRAM frame and send it in the first available
packet. This frame SHOULD be sent as soon as possible, and MAY be
coalesced with other frames.</t>
      <t>When a QUIC endpoint receives a valid DATAGRAM frame, it SHOULD deliver the
data to the application immediately, as long as it is able to process the frame
and can store the contents in memory.</t>
      <t>DATAGRAM frames MUST be protected with either 0-RTT or 1-RTT keys.</t>
      <t>Note that while the max_datagram_frame_size transport parameter places a limit
on the maximum size of DATAGRAM frames, that limit can be further reduced by
the max_packet_size transport parameter and the Maximum Transmission Unit
(MTU) of the path between endpoints. DATAGRAM frames cannot be fragmented;
therefore, application protocols need to handle cases where the maximum datagram
size is limited by other factors.</t>
      <section anchor="multiplexing-datagrams" numbered="true" toc="default">
        <name>Multiplexing Datagrams</name>
        <t>DATAGRAM frames belong to a QUIC connection as a whole, and are not
associated with any stream ID at the QUIC layer. However, it is expected
that applications will want to differentiate between specific DATAGRAM frames
by using identifiers, such as for logical flows of datagrams or to distinguish
between different kinds of datagrams.</t>
        <t>Identifiers used to multiplex different kinds of datagrams, or flows of
datagrams, are the responsibility of the application protocol running over QUIC
to define. The application defines the semantics of the Datagram Data field
and how it is parsed.</t>
        <t>If the application needs to support the coexistence of multiple flows of
datagrams, one recommended pattern is to use a variable-length integer at the
beginning of the Datagram Data field.</t>
        <t>QUIC implementations SHOULD present an API to applications to assign relative
priorities to DATAGRAM frames with respect to each other and to QUIC streams.</t>
      </section>
      <section anchor="acknowledgement-handling" numbered="true" toc="default">
        <name>Acknowledgement Handling</name>
        <t>Although DATAGRAM frames are not retransmitted upon loss detection, they are
ack-eliciting (<xref target="RFC9002" format="default"/>). Receivers SHOULD support delaying
ACK frames (within the limits specified by max_ack_delay) in response to
receiving packets that only contain DATAGRAM frames, since the sender takes no
action if these packets are temporarily unacknowledged. Receivers will
continue to send ACK frames when conditions indicate a packet might be lost,
since the packet's payload is unknown to the receiver, and when dictated by
max_ack_delay or other protocol components.</t>
        <t>As with any ack-eliciting frame, when a sender suspects that a packet containing
only DATAGRAM frames has been lost, it sends probe packets to elicit a faster
acknowledgement as described in <xref section="6.2.4" sectionFormat="of" target="RFC9002" format="default"/>.</t>
        <t>If a sender detects that a packet containing a specific DATAGRAM frame might
have been lost, the implementation MAY notify the application that it believes
the datagram was lost.</t>
        <t>Similarly, if a packet containing a DATAGRAM frame is acknowledged, the
implementation MAY notify the sender application that the datagram was
successfully transmitted and received. Due to reordering, this can include a
DATAGRAM frame that was thought to be lost, but which at a later point was
received and acknowledged. It is important to note that acknowledgement of a
DATAGRAM frame only indicates that the transport-layer handling on the receiver
processed the frame, and does not guarantee that the application on the receiver
successfully processed the data. Thus, this signal cannot replace
application-layer signals that indicate successful processing.</t>
      </section>
      <section anchor="flow-control" numbered="true" toc="default">
        <name>Flow Control</name>
        <t>DATAGRAM frames do not provide any explicit flow control signaling,
and do not contribute to any per-flow or connection-wide data limit.</t>
        <t>The risk associated with not providing flow control for DATAGRAM frames
is that a receiver might not be able to commit the necessary resources to process
the frames. For example, it might not be able to store the frame contents in memory.
However, since DATAGRAM frames are inherently unreliable, they MAY be
dropped by the receiver if the receiver cannot process them.</t>
      </section>
      <section anchor="congestion-control" numbered="true" toc="default">
        <name>Congestion Control</name>
        <t>DATAGRAM frames employ the QUIC connection's congestion controller. As a
result, a connection might be unable to send a DATAGRAM frame generated by the
application until the congestion controller allows it <xref target="RFC9002" format="default"/>. The sender
implementation MUST either&nbsp;delay sending the frame until the controller allows
it or drop the frame without sending it (at which point it MAY notify the
application). Implementations that use packet pacing (<xref section="7.7" sectionFormat="of" target="RFC9002" format="default"/>)
can also delay the sending of DATAGRAM frames to maintain consistent packet
pacing.</t>
        <t>Implementations can optionally support allowing the application to specify
a sending expiration time, beyond which a congestion-controlled DATAGRAM
frame ought to be dropped without transmission.</t>
      </section>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>The DATAGRAM frame shares the same security properties as the rest of
the data transmitted within a QUIC connection. All application data transmitted
with the DATAGRAM frame, like the STREAM frame, MUST be protected
either by 0-RTT or 1-RTT keys.</t>
      <t>Application protocols that allow DATAGRAM frames to be sent in 0-RTT require a
profile that defines acceptable use of 0-RTT; see <xref section="5.6" sectionFormat="of" target="RFC9001" format="default"/>.</t>
      <t>The use of DATAGRAM frames might be detectable by an adversary on path that is
capable of dropping packets. Since DATAGRAM frames do not use transport-level
retransmission, connections that use DATAGRAM frames might be distinguished from
other frames using the different response to loss.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <section anchor="quic-transport-parameter" numbered="true" toc="default">
        <name>QUIC Transport Parameter</name>
        <t>This document registers a new value in the QUIC Transport Parameter Registry
maintained at
<eref target="https://www.iana.org/assignments/quic/quic.xhtml#quic-transport"/>.</t>
        <dl>
          <dt>
Value:  </dt>
          <dd>
            <t>0x20 (if this document is approved)</t>
          </dd>
          <dt>
Parameter Name:  </dt>
          <dd>
            <t>max_datagram_frame_size</t>
          </dd>
          <dt>
Status:  </dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>
Specification:  </dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
      </section>
      <section anchor="quic-frame-types" numbered="true" toc="default">
        <name>QUIC Frame Types</name>
        <t>This document registers two new values in the QUIC Frame Type registry
maintained at
<eref target="https://www.iana.org/assignments/quic/quic.xhtml#quic-frame-types"/>.</t>
        <dl>
          <dt>
Value:  </dt>
          <dd>
            <t>0x30 and 0x31 (if this document is approved)</t>
          </dd>
          <dt>
Frame Name:  </dt>
          <dd>
            <t>DATAGRAM</t>
          </dd>
          <dt>
Status:  </dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>
Specification:  </dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="acknowledgments" numbered="true" toc="default">
      <name>Acknowledgments</name>
      <t>The original proposal for this work came from Ian Swett.</t>
      <t>This document had reviews and input from many contributors in the
IETF QUIC Working Group, with substantive input from Nick Banks,
Lucas Pardue, Rui Paulo, Martin Thomson, Victor Vasiliev, and Chris Wood.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC9001">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </reference>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol.  QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances.  Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC9002">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
              <organization/>
            </author>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes loss detection and congestion control mechanisms for QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9002"/>
          <seriesInfo name="DOI" value="10.17487/RFC9002"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC0768">
          <front>
            <title>User Datagram Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel">
              <organization/>
            </author>
            <date month="August" year="1980"/>
          </front>
          <seriesInfo name="STD" value="6"/>
          <seriesInfo name="RFC" value="768"/>
          <seriesInfo name="DOI" value="10.17487/RFC0768"/>
        </reference>
        <reference anchor="RFC6347">
          <front>
            <title>Datagram Transport Layer Security Version 1.2</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu">
              <organization/>
            </author>
            <date month="January" year="2012"/>
            <abstract>
              <t>This document specifies version 1.2 of the Datagram Transport Layer Security (DTLS) protocol.  The DTLS protocol provides communications privacy for datagram protocols.  The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.  The DTLS protocol is based on the Transport Layer Security (TLS) protocol and provides equivalent security guarantees.  Datagram semantics of the underlying transport are preserved by the DTLS protocol.  This document updates DTLS 1.0 to work with TLS version 1.2.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6347"/>
          <seriesInfo name="DOI" value="10.17487/RFC6347"/>
        </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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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>
  </back>
  <!-- ##markdown-source:
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
NABt0Fvlwe0O0CRrKsA9lrTVQo4n4/HBwXg8/ovcY/wX3ALA7+OzMReSeHGw
T4UJsIdWSFHOzEruRZFRcp/wPohG3JNaz16f85N7wN6012m9A05W2of9M4+b
p0ajDIlyI/VSShITnwedZpsZex32ltAmE+fLxdxTFgVOL8JTPB/JXYxCFM8C
HyFpxRNl/8SD3Sd2+t2lR9TRTUa1d+7LU47Wh0L89ttv3fPeGj4JyRYB5L8v
v2UtjEakggG++Dkci+9+ofd9xvZGo/2B+My7fjqUj9v56ZQnSZLntd8+2jjw
DX/56PM25aFjGYyFaCaHY5aJeE8LXhwyut9Z9UjHfct1rF/Ct9FidugF2MUX
J74S3hRw1/PzagiGlegnJLTkW7FlL18wCLltECmUkee2DnhSL5b1GqoY6dFA
EqgPvO9vtISUbwWQaaTHsuDIqZjdeFYbwnyjNIdbI9rz6sfyez1Xd4aaGyDu
HeW2ADioaZJEBseMqG4z7pFsTekGvvRnbOdbHYRy+o1478t0Hqd802bkqakQ
CtQdgiR3AKJ8vNZ4VegiT8Kwh7qwFtTh79IiaE+or0E7EyyaUA9MFdpRB5AT
jm8ltUMhz6dnoYX9CeLnjLtBN4PmQEWQJIcjjpzb+UCaxULnhPW4vEC5YKnJ
5QL05vCKVUgSGZBFV49zlKSM0WE7brGWjIcBQxa2Wu+IDJwOIR3KOtBIZFwb
5twjCyj7gF/c6jWJgczPR0xU5YV+cDpaFipjeTGaFmFmEdoQMrYhtooPPtED
8NA8nDZV6PVR15c6NG3N4U3hfhpiWH4bTr1J+7M0Mxd7b2/e7XfxGEKJveqo
esSHrXCFzGdrpq1SswW3ZL4RnFgQAMnWduKUOEKkLA+BZsr5CWile6KJAvat
GqolSRq+NRVMFTjGVs7Pa97GWS9Fvu6uy5YNTDQbGeHtTff07aTV3EY/oWAC
DoVyzmZGtQZDBVno2Z+eyIA3eTNubY7kj4g/sP1YQ+qPSzY3H8Z6o06OBSvl
YXhuplOIofTlT9SAC5OoTfkLanXyPBcFBNYgqlau35Mt7AwnFTxV4IiX3COo
/Ik8S2mMm4t4XkuFvDUU1tJlkPVpd1gLl9pB+xcXD+jQSIpIPlZB9cg4SwjF
TExB49pgjjvxYtWUJbHeNqMJV3ik65FTD7jFqSejeQC22mTuCzmR4wvhZa8+
OJLjhHC6TRAZs+tNjDkY8ZBKlxk7d5TOTt5tqXkOgkhY0iwYzkdtcgZyluH8
vR3OYHlQ3MwEadzLEqhnA21b+8H+QrCOyR6h5ujylL2jN0/De0colLrxfEVG
LCvkRVMbf/Vh08vYTUidYTTDFx+813IwsungK3jwUXZb2lWh85mfPfxI8YEG
feKooGnzbL51THDQ/p0If1WAB0y5rkPm9aUPnheIlUOkpszw+HGvvUPy9PNn
AOUrn+CqVjJRr0hnilCVODr+czx+L9zxYKBF0clFZw0ddMRmHPeB1+5TagoW
rrvWKQ9AfGcgjC0Jb0UkuJUX4O9h5EfwgNIrlxelBV8+pU7DjYq4KTsXoJOt
YEV0kaJUnaDzlGOKRTQYg2Aa3Ta7En4ZBeKB3HizaBtYKg4AF2Y254wA8dcD
0VHrv/+KnIkb52TfTUl0tPelAraofOzls7B9rXzMFz1h8vifzamrIC14LAkD
UIXsukjdV3jAKSuPboIQXcOWGpu+kZugBdI6a2XT/KgzO6GQydyGtmZO0NlO
OgWQ+fPx2HiKco7ub22Y+uZI/tOn65CSXo6ejp7z9YNopD4OtaR7E7+fcnpy
dwLxyhL+sk3HBamiHyUYL8LNUFZsxT/f6CWVFwYpz4kepl4xpnNUpSV9ZDO9
h9AN+ggCJqbKpIkvkxaEskXhJlUCWZIw5bShYWMaPLoreOQcJ94RKm0r7Asq
B2G0wXMpGhRBHGJXc5ZY91GrDqWFF++kqcN8h/VVcP/Ig2uiq50bMP7oOeop
JyNDnlwHwFC24HTTomi0tUkX2/COqVILGcNkdh4Cb7xgEx1TBCDupzHRk4jQ
dhw1awA6kZ2SPlyqi80Ne1ro784zf2TyxgWRU/pRRQSdlWZgLZLdA/X+ucBe
G6G6k+I51MPivPOG7iMc+2nuNl7MbWgn8WUUDiiAc96f+apInAP7c8lEhBcJ
r+NvDZTuW7xYvdTVkBcihHXYc7ii3blO4kwSWviVcbdyE3529HBAS4kg0LcJ
E00bHKLcQ5gO4D2WWYRBTOydkoRURc1CZ5sq81k+SE602kdR8CYdmpt699Zd
neYtcVe11mJmnzR2pXpTzhlbFumMP2n1o6bNK7tc+uybWlpIi937YEZJabnw
1nDcXQy51yaQTQu77lB/p8av3I4LKAWVBMhICt7tgAUH1Bzvqo42ZyIzR3n5
bv+G/8aWQeQuNf4wNQ2l8DYBcWABDaWIx2NlHzW3QitVy742/t//8Vk33lPu
NNk7tn+WoE4lEhQ0kiyINwfjVtSkVDEkhil6vRHWU0apmbmBYdvGd8gp+BOg
Xcyir0avejl0X7TXXjxjMXcEEL01C7Z0GdFDsowqFAL3dThP+PMoL28QRof4
e6B8pyVCSRU7e1vJ1Mb2nVAtOYg2pgrfGwq4E722DJA4iSTqHrYq6PoyIoT+
JA9FF4maSC/HcNfrOt6XPbY8XPSnh0uPGzZJF+FiZcXv41p4Fv8cgVzXxeqO
r7jG6N5LuwFJb19sl0c0CN3swidLRXtLZrMXVZhbH3TS+86D7S6QCA0geNXu
HtAX5i3+NtsOe4lNuHb8114oojQ69a0klfyCgKd/HADCbR9e9g120QkefDF6
2VnyAaPBm+6C0CYdbWjxKJF3B5dk+3TVhyM88aRYgjyyh2cs+Tmq3MlSkgKF
bgPsis0h1/GstsMSiOaF6F8GHCSaTfz2frK79kS4SiHSLmVof7BBtX2HpMTi
IpBN+vTo/GjLnBHt77vYtHlvukKJTcjdhXZtuMeQ3FjedTvqildVVLv44EG4
rhY//7IXryGvVquRUaWiO81PfInNF4z5UjL/N/o4rxfFY/59VivcfTD1nkjg
nvb449Ox3DNhetLSTPB5SThB5/tCdFSd0091aN199y4E/X6mcfwMfHihqKrC
p+mN6NBMT87r5Nmbst0nx3gDPQy/UlF268Pz/zwJMpdDvsy0KcNnYxmHb39X
mJ7CVpBtsP1/Sy5pfiQXzG1lZoZALwVT61TRXRnji5UZUcEXjE7h0tcrXddb
N/7niuqZO6NX4fpWuUTM50ULgqMtQLVV1ILg2/esip9wDLnYD5VtluF3C66Z
0I/6qAuU7nZuslv5vSpv3UCcNRmCPkwubxBwrxrDv9SziL30s5IS7NuFo3Dw
3lALV75XzlD96KuJ4zlgL462+Uj8H1uq04v3OAAA

-->

</rfc>
