<?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.1 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-reliable-stream-reset-03" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title abbrev="QUIC Reliable Stream Reset">Reliable QUIC Stream Resets</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-reliable-stream-reset-03"/>
    <author initials="M." surname="Seemann" fullname="Marten Seemann">
      <organization>Protocol Labs</organization>
      <address>
        <email>martenseemann@gmail.com</email>
      </address>
    </author>
    <author fullname="奥一穂" asciiFullname="Kazuho Oku">
      <organization>Fastly</organization>
      <address>
        <email>kazuhooku@gmail.com</email>
      </address>
    </author>
    <date year="2023" month="October" day="19"/>
    <area>Transport</area>
    <workgroup>QUIC</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 42?>

<t>QUIC defines a RESET_STREAM frame to abort sending on a stream. When a sender
resets a stream, it also stops retransmitting STREAM frames for this stream in
the of packet loss. On the receiving side, there is no guarantee that any data
sent on that stream is delivered.</t>
      <t>This document defines a new QUIC frame, the RESET_STREAM_AT frame, that allows
resetting a stream, while guaranteeing reliable delivery of stream data up to a
certain byte offset.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://quicwg.github.io/reliable-stream-reset/draft-ietf-quic-reliable-stream-reset.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-quic-reliable-stream-reset/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        QUIC Working Group mailing list (<eref target="mailto:quic@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/quic/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/quic/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/quicwg/reliable-stream-reset"/>.</t>
    </note>
  </front>
  <middle>
    <?line 53?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>QUIC version 1 (<xref target="RFC9000"/>) allows streams to be reset.  When a stream is
reset, the sender doesn't retransmit stream data for the respective stream. On
the receiving side, the QUIC stack is free to surface the stream reset to the
application immediately, without providing any stream data it has received for
that stream.</t>
      <t>Some applications running on top of QUIC send an identifier at the beginning of
the stream in order to associate that stream with a specific subcomponent of the
application. For example, WebTransport (<xref target="WEBTRANSPORT"/>) uses a
variable-length encoded integer to associate a stream with a particular
WebTransport session. It is desirable that the receiver is able to associate
incoming streams with their respective subcomponent of the application, even if
the QUIC stream is reset before the identifier at the beginning of the stream
was read by the application.</t>
      <t>Another use case is relaying data from an external data source. When a relay is
sending data being read from an external source and encounters an error, it
might want to use a stream reset to signal that error, while at the same time
guaranteeing that all data received from the source is delivered to the peer.</t>
      <t>This document describes a QUIC extension defining a new frame type, the
RESET_STREAM_AT frame. This frame allows an endpoint to mark a portion at the
beginning of the stream which will then be reliably delivered, even if the
stream was reset.</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="negotiating-extension-use">
      <name>Negotiating Extension Use</name>
      <t>Endpoints advertise their support of the extension described in this document by
sending the reliable_stream_reset (0x17f7586d2cb570) transport parameter
(<xref section="7.4" sectionFormat="of" target="RFC9000"/>) with an empty value. An implementation that
understands this transport parameter <bcp14>MUST</bcp14> treat the receipt of a non-empty value
as a connection error of type TRANSPORT_PARAMETER_ERROR.</t>
      <t>When using 0-RTT, both endpoints <bcp14>MUST</bcp14> remember the value of this transport
parameter. This allows use of this extension in 0-RTT packets. When the server
accepts 0-RTT data, the server <bcp14>MUST NOT</bcp14> disable this extension on the resumed
connection.</t>
    </section>
    <section anchor="resetstreamat-frame">
      <name>RESET_STREAM_AT Frame</name>
      <t>Conceptually, the RESET_STREAM_AT frame is a RESET_STREAM frame with an
added Reliable Size field.</t>
      <artwork><![CDATA[
RESET_STREAM_AT Frame {
  Type (i) = 0x20,
  Stream ID (i),
  Application Protocol Error Code (i),
  Final Size (i),
  Reliable Size (i),
}
]]></artwork>
      <t>The RESET_STREAM_AT frames contain the following fields:</t>
      <dl>
        <dt>Stream ID:</dt>
        <dd>
          <t>A variable-length integer encoding of the stream ID of the stream being
terminated.</t>
        </dd>
        <dt>Application Protocol Error Code:</dt>
        <dd>
          <t>A variable-length integer containing the application protocol error code
(<xref section="20.2" sectionFormat="of" target="RFC9000"/>) that indicates why the stream is being closed.</t>
        </dd>
        <dt>Final Size:</dt>
        <dd>
          <t>A variable-length integer indicating the final size of the stream by the
sender, in units of bytes; see <xref section="4.5" sectionFormat="of" target="RFC9000"/>.</t>
        </dd>
        <dt>Reliable Size:</dt>
        <dd>
          <t>A variable-length integer indicating the amount of data that needs to be
delivered to the application even though the stream is reset.</t>
        </dd>
      </dl>
      <t>If the Reliable Size is larger than the Final Size, the receiver <bcp14>MUST</bcp14> close the
connection with a connection error of type FRAME_ENCODING_ERROR.</t>
      <t>RESET_STREAM_AT frames are ack-eliciting, and <bcp14>MUST</bcp14> only be sent in the
application data packet number space. When lost, they <bcp14>MUST</bcp14> be retransmitted,
unless the stream state has transitioned to "Data Recvd" or "Reset Recvd" due to
transmission and acknowledgement of other frames (see <xref target="multiple-frames"/>).</t>
    </section>
    <section anchor="resetting-streams">
      <name>Resetting Streams</name>
      <t>A sender that wants to reset a stream but also deliver some bytes to the
receiver sends a RESET_STREAM_AT frame with the Reliable Size field specifying
the amount of data to be delivered.</t>
      <t>When resetting a stream without the intent to deliver any data to the receiver,
the sender uses a RESET_STREAM frame (<xref section="3.2" sectionFormat="of" target="RFC9000"/>). The sender
<bcp14>MAY</bcp14> also use a RESET_STREAM_AT frame with a Reliable Size of zero in place of a
RESET_STREAM frame. These two have the same effect and the behavior of
RESET_STREAM frame is unchanged from the behavior described in <xref target="RFC9000"/>.</t>
      <t>When using a RESET_STREAM_AT frame, the initiator <bcp14>MUST</bcp14> guarantee reliable
delivery of stream data of at least Reliable Size bytes. If STREAM frames
containing data up to that byte offset are lost, the initiator <bcp14>MUST</bcp14> retransmit
this data, as described in <xref section="13.3" sectionFormat="of" target="RFC9000"/>. Data sent beyond that
byte offset <bcp14>SHOULD NOT</bcp14> be retransmitted.</t>
      <t>As described in <xref section="3.2" sectionFormat="of" target="RFC9000"/>, a stream reset signal might be
suppressed or withheld, and the same applies to a stream reset signal carried in
a RESET_STREAM_AT frame. Similary, the Reliable Size of the RESET_STREAM_AT
frame does not prevent a QUIC stack from delivering data beyond the specified
offset to the receiving application.</t>
      <section anchor="multiple-frames">
        <name>Multiple RESET_STREAM_AT / RESET_STREAM frames</name>
        <t>The initiator <bcp14>MAY</bcp14> send multiple RESET_STREAM_AT frames for the same stream in
order to reduce the Reliable Size.  It <bcp14>MAY</bcp14> also send a RESET_STREAM frame, which
is equivalent to sending a RESET_STREAM_AT frame with a Reliable Size of 0. When
reducing the Reliable Size, the sender <bcp14>MUST</bcp14> retransmit the RESET_STREAM_AT frame
carrying the smallest Reliable Size as well as stream data up to that size,
until all acknowledgements for the stream data and the RESET_STREAM_AT frame are
received.</t>
        <t>When sending multiple RESET_STREAM_AT or RESET_STREAM frames for the same
stream, the initiator <bcp14>MUST NOT</bcp14> increase the Reliable Size.</t>
        <t>When receiving a RESET_STREAM_AT frame with a lower Reliable Size, the receiver
only needs to deliver data up the lower Reliable Size to the application. It
<bcp14>MUST NOT</bcp14> expect the delivery of any data beyond that byte offset.</t>
        <t>Reordering of packets might lead to a RESET_STREAM_AT frame with a higher
Reliable Size being received after a RESET_STREAM_AT frame with a lower
Reliable Size.  The receiver <bcp14>MUST</bcp14> ignore any RESET_STREAM_AT frame that
increases the Reliable Size.</t>
        <t>When sending another RESET_STREAM_AT, RESET_STREAM or STREAM frame carrying a FIN
bit for the same stream, the initiator <bcp14>MUST NOT</bcp14> change the Application Error
Code or the Final Size. If the receiver detects a change in those fields, it
<bcp14>MUST</bcp14> close the connection with a connection error of type STREAM_STATE_ERROR.</t>
      </section>
      <section anchor="stream-states">
        <name>Stream States</name>
        <t>In terms of stream state transitions (<xref section="3" sectionFormat="of" target="RFC9000"/>), the effect of a
RESET_STREAM_AT frame is equivalent to that of the FIN bit. Both the
RESET_STREAM_AT frame and the FIN bit on a STREAM frame serve the same role:
signaling the amount of data to be delivered.</t>
        <t>On the sending side, when the first RESET_STREAM_AT frame is sent, the sending
part of the stream enters the "Data Sent" state. Once the RESET_STREAM_AT frame
carrying the smallest Reliable Size and all stream data up to that byte offset
have been acknowledged, the sending part of the stream enters the "Data Recvd"
state. The transition from "Data Sent" to "Data Recvd" happens immediately if
the application resets a stream and all bytes up to the specified Reliable Size
have already been sent and acknowledged. Conversely, the transition might take
multiple network roundtrips or require additional flow control credit issued by
the receiver.</t>
        <t>On the receiving side, when a RESET_STREAM_AT frame is received, the receiving
part of the stream enters the "Size Known" state. Once all data up to the
smallest Reliable Size have been received, it enters the "Data Recvd" state.
Similarly to the sending side, transition from "Size Known" to "Data Recvd"
might happen immediately or involve issuance of additional flow control credit.</t>
      </section>
    </section>
    <section anchor="implementation-guidance">
      <name>Implementation Guidance</name>
      <t>In terms of transport machinery, the RESET_STREAM_AT frame is more akin to the
FIN bit than to the RESET_STREAM frame (see <xref target="stream-states"/>). By sending a
RESET_STREAM_AT frame, the sender commits to delivering all bytes up to the
Reliable Size.</t>
      <t>To the endpoints, the main differences from closing a stream by using the FIN
bit are:</t>
      <ul spacing="normal">
        <li>
          <t>the offset up to which the sender commits to sending might be smaller than
Final Size,</t>
        </li>
        <li>
          <t>this offset might get reduced by subsequent RESET_STREAM_AT frames, and</t>
        </li>
        <li>
          <t>the closure is accompanied by an error code.</t>
        </li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="quic-transport-parameter">
        <name>QUIC Transport Parameter</name>
        <t>This document registers the reliable_stream_reset transport parameter in the
"QUIC Transport Parameters" registry established in <xref section="22.3" sectionFormat="of" target="RFC9000"/>.
The following fields are registered:</t>
        <dl>
          <dt>Value:</dt>
          <dd>
            <t>0x17f7586d2cb570</t>
          </dd>
          <dt>Parameter Name:</dt>
          <dd>
            <t>RESET_STREAM_AT</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>Permanent</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF (iesg@ietf.org)</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>QUIC Working Group (quic@ietf.org)</t>
          </dd>
        </dl>
      </section>
      <section anchor="quic-frame-types">
        <name>QUIC Frame Types</name>
        <t>This document registers one new value in the "QUIC Frame Types" registry
established in <xref section="22.4" sectionFormat="of" target="RFC9000"/>. The following fields are registered:</t>
        <dl>
          <dt>Value:</dt>
          <dd>
            <t>0x20</t>
          </dd>
          <dt>Frame Type Name:</dt>
          <dd>
            <t>RESET_STREAM_AT</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>Permanent</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF (iesg@ietf.org)</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>QUIC Working Group (quic@ietf.org)</t>
          </dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="WEBTRANSPORT">
        <front>
          <title>WebTransport over HTTP/3</title>
          <author fullname="Alan Frindell" initials="A." surname="Frindell">
            <organization>Facebook</organization>
          </author>
          <author fullname="Eric Kinnear" initials="E." surname="Kinnear">
            <organization>Apple Inc.</organization>
          </author>
          <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
            <organization>Google</organization>
          </author>
          <date day="13" month="June" year="2023"/>
          <abstract>
            <t>   WebTransport [OVERVIEW] is a protocol framework that enables clients
   constrained by the Web security model to communicate with a remote
   server using a secure multiplexed transport.  This document describes
   a WebTransport protocol that is based on HTTP/3 [HTTP3] and provides
   support for unidirectional streams, bidirectional streams and
   datagrams, all multiplexed within the same HTTP/3 connection.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-http3-07"/>
      </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"/>
          <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
          <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="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 306?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9VaW3MbtxV+x69A6YfaGZK62KkTNjdaohJNLMml6HoymYwG
3AVJjJa7zAIrmfY40+kv6Use+g/63N/STv9GzwXYG5d23Lc+SYvFAgfn8p3v
HHAwGAhnXKJHsjfViVHzRMs/vTw/kdcu12otp9pqZ3tCzee5voNZ9LKcWp/V
E3EWpWoNa8W5WriB0W4x+Lkw0SD38weW5sMzzB8cPhaRcnqZ5duRtC4Wwmzy
kXR5Yd3x4eHnh8dCwXTYdJar1G6yHPa4z/LbZZ4VGy9LT9zqLQzGI3meOp2n
sPApbi/udFrokZCyOV1Kt93geV/BSiZdym/xNY6vlUlgHCX+BmUfZvkSx1Ue
rWB85dzGjg4OcBoOmTs9DNMOcOBgnmf3Vh/gAgf44dK4VTH3S94vDzrVgBMT
UIN1tT34gyEvMDRZ96cHv0nPw5VbJz0hrFNpfKOSLIXTb7UVdq1yd/NzkcHm
I5lmYmNG8keXRX1pQde5Xlj4b7vGf34SQhVuleWg0AFILKVJ4aOLobzWeq3S
lMbY+hewrE4bL0BFKjVvlDNZOpIv8gx2yRL5XM0tvdes+zV9afnDb5Y4OIyy
ddhyUSQJbUFPUo5G8t+//vqvf/zlP3//qx9SNjJwiu/Vm2KVyavbImw/kmfK
umRb3+6WZmW3RW0rkWb5GuS8o11eTZ7NpuPL6xdX0xk42OCULD6413OHLjlA
ez0Gv00X1VdCDAYDCSeDKZETgiIm1guTaiuVnE6uJ7Ob69l0Mr6QixyOI10G
00Hj0uo0RpfMUpjINhzKVytNj/BO54JMasvXfWmcVInN4DnbWJlrEmxtnMOF
6ttYCUJKtzLWfwsmFG6lZbaQGxXdaieTzNqhvEolDuc60uYOV7Em1n0cy7WE
r9NMLgsF2zgNsq8UCJBuZaycEiCkQ+lpNOxi4fQJqCbX8VCIGQoASFGscW6l
l1TfM/KQsLRdQ1c341n1CvdMEog21gedtVLJ/coANpUy4ssQGUGULZ7aC4iS
y2JDZhCRzp0yqZxvHWpmgQHEFl2bOE60EA8QaPIsLiL0Zm9fWNLCkzySD9++
/d307OTzw8PDd+8eeTH9Vhb3mKNqcVlZmjYoik/DZ2d7g6a0TX/vaoZtiM0m
pRU3OkIHLP3miq3bYUbWM+BBdIvWWeSafNAW+UJFmnfnPUgefAdjQm02iYko
hqVZr3VsALaSLegbYCornNzk2Z0hB0aHqIsJUq+U9bLoGMUWNR8BDV9nEAi1
HWBykaY+GMC10V4sNugF1pdwmNSZhQEdwToo81wvjf9kIWqHAGtCfoB5aGBr
swjlbrgoHgDtACqEFSPQxBywYANIie68aJ9+KM9A7fq1Wm8S0OgrPS8TFJm/
jhroA4VFDxd3Kmd0TnS6hA11GmUxKMOAky7b4qmWbBuARhMVkHlEYz9Y2pJI
544jzZqcHJ3OVzkArA+v+U1tH4AuOCl5h/dQ2g++M3nDqXY1UrdWX2pIt9Kw
3r17hehnJ5prMDo71/tNV/M/cU9Oo2IIx/aW4DPjNENQQv3KSFnNmyVqiwtx
eOTZGp1Fv0ZqoBIetVmRR7pEVvoEoy/AL02ae9yAzXdW4QVgKCYjFkg8LM3I
8yxHTBZrs1w5eQ8AhPpGCdVOUFmzxNXIUv5Lhi6vFUvJway1aGBZgD+Ws4op
lJI+Y+nquOtDWG60zjsw2Ea5mRMKk+nwnCnBGcEzgyvis09XwJ8IR0QnPg8l
Lc9zPfyhatJ4kxlWB+T5W/RpcGDchY8r9jgB6iRagV8mqCqwGAEowfm2OmHp
gbRU+FJ57xsibJ9k6R06HoILmu6UDkfPqBItgUlKpJJW9i5eXs96ff4rL6/o
/+kEtDOdnOL/19+Nnz8v/xF+xvV3Vy+fn1b/VV+eXF1cTC5P+WMYlY0h0bsY
/wBvUKre1YvZ+dXl+HkPgcs1LKVy7TMIYka+gaQAtlVWBBMimMhnJy/++bej
J5IT0fHR0efv3vmHz46ePoGHe1Aj75aloER+BL1tEeW0ynEVdLBIbYwDdgFz
IYWtsvtUIgkAbX7yI2rmp5H8Yh5tjp585QfwwI3BoLPGIOlsd2TnY1Zix1DH
NqU2G+MtTTflHf/QeA56rw1+8XUC7EQOjj77+iuBLnQJ1YoD3EQnnZRR8tIC
LZh4/wbfisEjnbHaw6gtNgTV3qvr0VWzWtPS822JRozhTF9u2LFvGEIeHr4+
erp4+ulnf4iPo/mnTw8fSVcmBkgYEIDgJQJS0rUmsiKfDp+gGDV+wukFwnO9
cVt5p5ICAniMCR5yG4rC+R4xRxTISKiMsCxux26S3AClrGWfDR0eMCRLB7WN
hELIibI09eIRCJKeAGJkmUNvXoyn44vJbDK9mUynV1PwP4LuwqJ+DgfT2awv
5xml1GAEEiOHE6znmikSbclGqIsuStE9cHnIQsgOkyuTgaFoP8+YrU8iTNhy
sLtQUaQ3IABPQ4ju117LECUyNtbn6cYGWSDfFhwhFpVyCMLagHuGogsByIab
FiD69j3MmRhAVwHinUCoGPlIVd2bN1pCmk6Qt//yyy87eE/by7dQKM3QYA/N
I/mlPHx9fNiHId8bOD/FcRwY1/hjWQJOyOQnQITCtDODSZH29iNNgWjwHclD
qN15VItuRUQetbHI0KboLHQaC0VaKR38P5Jj2SZngZQRSdvNSXCq5gDRBWwu
6BzoFDAr1NkHTvyBrf0JAgbU6fcmLMYRgzwS9q4F+vHh8LgV6UQbDGAKNl2A
5622dfnBNZjxRFAEkvCVHT4gp18zyLmg7yyaqqUi2hDk5NKmj8FUQAK2OA/r
LftHeAX+VJ7iyfDTxiFAqoYvfJxgao1MDRck4kT6SLWOfVUGgu3wpbrOiV9g
obNctRQXKMY5H7fprvAeSDvx+5Vid6w0228ydAIHMgBpqoaMvgrYi5VnCJA3
k8uTq9Pzy29LmNwTG8gjAL8GIGhkUD9MBmh7YgRzqj8d56Vm5Ue68/2CtCB0
tfAY6DQIzwXslpcjslb2JICnQRZJoGapqxBSClQ8WCDSRKJkbIPeKe421dFd
3IMiDpuUmPj8QFwgHRJ+daqD6BwgXJrdJzpeUgZDJXGh4I//kL1sXSTOQJYb
8DDECGNs2VFgjAByOA7VOPkMknryGc7CJa+fF74V490IiDigIzl2KKFLS+N6
bTCucDrUYF1Q7KtUrHFEl1cTPaw3XMgsu22Ssmqnigwihql5kD20dEIkBMn7
otac4MK2K6PUoOhxG4kwz4YlBLAwVhqXSO/Rh2ppA9Z8o/MMfXSTYN8CKYbY
lYW2w4i6z8DH7nRVWunFAmQkl+EiFF4bCqqOZTCQizSCGF7Wi63yowaZq/eA
mmxlzxH73gwG2WXmkaDqsgX+J/a1r/DsTiZaWddSE/nfUAI2NZqBopZdag0w
cvBa74ugoozptoBVZAumr8R2lG0rI7jC0ePh4yagSwpwwpq53mZkCWCadQkq
yr8DJphi927W9rt+uwL35TdX6oD/yNPhDWQ/hBr0uRXEW7/0D/IZgkIO6O7l
IpXnhmQRe2w9BMOs8Q4hcLW2W3cQOME+iN1AYNHYasN05ELFzr08ckrvIbU+
hlerDv0toJVetY3YJu9s9FcePJAXHiN3TnLQEfVWvn3QBlXmaDW/gXinFt56
38qNZrXXetWwLjt5AG6Fb1Y2FDiU2AorYYXbhR3C9rmvIJB9/1wYqA48Aoa6
62PB6JAzoCDBAudozGo0dlsBtJ+1C/SobVjQroHk650oh5i711CxK9vR1eZW
JwoAydeZhGr7VpKsKbz2fXD9bk0ANoSMViaaoL295oVdujynbm4RGvkdkIMw
YNII3tsu45fprvTo91sRygKwRYeVQr4TxIdKmhjSY6ndle5ao4M/YodWlEfQ
r7GzSnPqkF5m3RoYtq4ipppCwJckvgz1IJZgt5KQ6b2HXsFkOFkrT/h+p+8m
qgUW879Fe6IdfrMdSgvIiL1fPF33egT6wax2v13L2PSd39Zq/aZrgc80MngZ
SEqenV+KOURdB8rsdTvO/fS2XthRPSeogvWLVfye8m6D4sfageGp78HLEcVG
xs+lKTWPm3WA/Ig6wKviejaeTcoqAHDcl7vXjmq/tw/8BTExbwTp85QqV1vj
FczKK0ZuG6SuSelYZ55P7fCwRgOiCbbk4D7lgU0k2GQon2VMf/csEkDJz+fb
0oahqddS2TXPEigVOT/vKwZ3aPNVWqJ1dXl2H5o9C5MjBu87JBKafv177DK5
Vj2s+doAR7jOuYaRHusdr+9CdvvfkwKmPoD6PRmhhiuCiPFc431IlRfixhHk
bzkCV2bCnwGRoHIg5if1o7YrvBW2n8HRareL4U6pXoK27sDLc3KpFU5Y4ztN
vfBhVYJ3O1s+NBHQVukYD/nGILc6dNVqZ2HAdepWizLVpdrhz1PA34o0drnZ
WESEHD0e0S+O6VOAhgUAJ7V3wDMlgB68AK+xhcaLLlHHi8oR2/e493x5tdcF
A5L3m19/yBHJcb4HHaRNTyzvm0r1ij1eV7lSJQKcb4+r+E2Ep8Rg8GC8RuDt
eFFdzpYb+bs3dqaGL2XYE7rLkjtN6laprxrfaxlqCpw32+HfFibGr5vAWbXD
1ypamVTnH+rGrikt3mIOYJ0GTONeUbbzdSivuYPRRHGsrJ9tqxzZDZ8NEhpl
67VxdWZDX+7Gkmin4xnLVjbcedk1dlxjA3kg16Aey8bCTNZoPcy3vhr2ME6p
GNjkSIgBjfn6hLfn+79uqUu66Ys4D4XcbGs0k/u0tLFhbf5iqZ2vJOiO2RZz
C+GKaNBdllA16IXEYxX8kxgV4e24Sg0vE26CqTE7pJsjSJxFbtwWMQVdOlfh
4vHq9Kp8S1PPx5fjnWmQw6nSq27+X5QXPK373FwvjS2DrfvqqOvmxjf7evv2
sT2/NHBVCHtY1NhVu+o+Pm6X+FQAtjvw1FcIguoYDP9nvJ4ZiZFsX2oJUUog
L+nXX6Od6lggsSksvnoB0ajwZwow6H/PwT87g3cNPQlxwgzshMMdvAbnnE9m
Z/IhlPjL8keAj+iGBUpshxNIPY0fD8qHjd8MPqqsxRckeDli91spSzXdrvMF
lb+y6LW/r5Qv3qf8J63+ykcr/xgUXm37f6Nx/IXWHLI3BtC4TOJU2Yq3I25U
6/jL3kIlVvfe+birpfuh+C+zonvADSsAAA==

-->

</rfc>
