<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.22 (Ruby 3.2.5) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC2104 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2104.xml">
<!ENTITY RFC3629 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3629.xml">
<!ENTITY RFC4086 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4086.xml">
<!ENTITY RFC4422 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4422.xml">
<!ENTITY RFC5056 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5056.xml">
<!ENTITY RFC5234 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5234.xml">
<!ENTITY RFC5280 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml">
<!ENTITY RFC5929 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5929.xml">
<!ENTITY RFC6125 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6125.xml">
<!ENTITY RFC6920 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6920.xml">
<!ENTITY RFC7627 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7627.xml">
<!ENTITY RFC8446 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
<!ENTITY RFC9266 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9266.xml">
<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC5802 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5802.xml">
<!ENTITY RFC6120 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6120.xml">
<!ENTITY RFC8126 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml">
]>


<rfc ipr="trust200902" docName="draft-ietf-kitten-sasl-ht-00" category="std" consensus="true">
  <front>
    <title>The Hashed Token SASL Mechanism</title>

    <author initials="F." surname="Schmaus" fullname="Florian Schmaus">
      <organization>Friedrich-Alexander-Universität Erlangen-Nürnberg</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>flow@cs.fau.de</email>
      </address>
    </author>
    <author initials="C." surname="Egger" fullname="Christoph Egger">
      <organization>Chalmers University of Technology</organization>
      <address>
        <postal>
          <country>Sweden</country>
        </postal>
        <email>christoph.egger@chalmers.se</email>
      </address>
    </author>

    <date year="2025" month="February" day="21"/>

    <area>Security</area>
    <workgroup>Common Authentication Technology Next Generation (kitten)</workgroup>
    

    <abstract>


<?line 71?>

<t>This document specifies the family of Hashed Token SASL mechanisms which enable a proof-of-possession-based authentication scheme and are meant to be used to quickly re-authenticate of a previous session.
The Hashed Token SASL mechanism's authentication sequence consists of only one round-trip.
The usage of short-lived, exclusively ephemeral hashed tokens is achieving the single round-trip property.
The SASL mechanism specified herein further provides hash agility, mutual authentication and support for channel binding.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-kitten-sasl-ht/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/flowdalic/xeps/tree/master/draft-ietf-kitten-sasl-ht"/>.</t>
    </note>


  </front>

  <middle>


<?line 78?>

<section anchor="introduction"><name>Introduction</name>

<t>This specification describes the family of Hashed Token (HT) Simple Authentication and Security Layer (SASL) <xref target="RFC4422"/> mechanisms, which enable a proof-of-possession-based authentication scheme.
The HT mechanism is designed to be used with short-lived, exclusively ephemeral tokens, called SASL-HT tokens, and allow for quick, one round-trip re-authentication of a previous session.</t>

<t>Further properties of the HT mechanism are 1) hash agility, 2) mutual authentication, and 3) support for channel binding.</t>

<t>Clients should to request SASL-HT tokens from the server after being authenticated using a "strong" SASL mechanism like SCRAM <xref target="RFC5802"/>.
Hence a typical sequence of actions using HT may look like the following:</t>

<figure name="Example sequence using the Hashed Token (HT) SASL mechanism"><artwork><![CDATA[
A) Client authenticates using a strong mechanism (e.g., SCRAM)
B) Client requests secret SASL-HT token
C) Service returns SASL-HT token
   <normal client-server interaction here>
D) Connection between client and server gets interrupted,
   for example because of a WiFi ↔ GSM switch
E) Client resumes the previous session using HT and token from C)
F) Service revokes the successfully used SASL-HT token
   [goto B]
]]></artwork></figure>

<t>The HT mechanism requires an accompanying, application-protocol-specific extension, which allows clients to request a new SASL-HT token (see <xref target="requirements-for-the-applicationprotocol-extension">Section 5</xref>).
Examples of such an application-protocol-specific extension based on HT are <xref target="XEP-0397"/> and <xref target="XEP-0484"/>.
This XMPP <xref target="RFC6120"/> extension protocol allows, amongst other things, B) and C),</t>

<t>Since the SASL-HT token is not salted, and only one hash iteration is used, the HT mechanism is not suitable to protect long-lived shared secrets (e.g., "passwords").
You may want to look at <xref target="RFC5802"/> for that.</t>

<section anchor="conventions-and-terminology"><name>Conventions and Terminology</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"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
These words may also appear in this document in
lower case as plain English words, absent their normative meanings.
<?line -8?></t>

</section>
<section anchor="applicability"><name>Applicability</name>

<t>Because this mechanism transports information that an attacker should not control, the HT mechanism <strong>MUST</strong> only be used over channels protected by Transport Layer Security (TLS, see <xref target="RFC8446"/>) or over similar integrity-protected and authenticated channels.
Also, the application-protcol-specific extension that requests a new SASL-HT token <strong>SHOULD</strong> only be used over similarly protected channels.</t>

<t>Also, when TLS is used, the client <strong>MUST</strong> successfully validate the server's certificate (<xref target="RFC5280"/>, <xref target="RFC6125"/>).</t>

<t>The family of HT mechanisms is not applicable for proxy authentication since they can not carry an authorization identity string (authzid).</t>

</section>
</section>
<section anchor="the-ht-family-of-mechanisms"><name>The HT Family of Mechanisms</name>

<t>Each mechanism in this family differs by choice of the hash algorithm and the selection of the channel binding <xref target="RFC5929"/> type.</t>

<t>An HT mechanism name is a string beginning with "HT-" followed by the capitalized name of the used hash, followed by "-", and suffixed by one of 'ENDP', 'UNIQ', 'EXPR' or 'NONE'.</t>

<t>Hence, each HT mechanism has a name of the following form:</t>

<figure><artwork><![CDATA[
HT-<hash-alg>-<cb-type>
]]></artwork></figure>

<t>Where &lt;hash-alg&gt; is the capitalized "Hash Name String" of the IANA "Named Information Hash Algorithm Registry" <xref target="iana-hash-alg"/> as specified in <xref target="RFC6920"/>, and &lt;cb-type&gt; is one of 'ENDP', 'UNIQ', 'EXPR' or 'NONE' denoting the channel binding type.
In the case of 'ENDP', the tls-server-end-point channel binding type is used.
In the case of 'UNIQ', the tls-unique channel binding type is used.
In the case of 'EXPR', the tls-exporter <xref target="RFC9266"/> channel binding type is used.
Valid channel binding types are defined in the IANA "Channel-Binding Types" registry <xref target="iana-cbt"/> as specified in <xref target="RFC5056"/>.</t>

<t>In the special case of 'NONE' no channel binding will be used.
In this case, cb-data is to be an empty string.</t>

<texttable title="Mapping of cb-type to Channel Binding Types">
      <ttcol align='left'>cb-type</ttcol>
      <ttcol align='left'>Channel Binding Type</ttcol>
      <c>ENDP</c>
      <c>tls-server-end-point</c>
      <c>UNIQ</c>
      <c>tls-unique</c>
      <c>EXPR</c>
      <c>tls-exporter</c>
      <c>NONE</c>
      <c><em>No</em> Channel Binding</c>
</texttable>

<t>The following table lists some examples of HT SASL mechanisms registered by this document.</t>

<texttable title="Examples of HT SASL mechanisms">
      <ttcol align='left'>Mechanism Name</ttcol>
      <ttcol align='left'>HT Hash Algorithm</ttcol>
      <ttcol align='left'>Channel-binding unique prefix</ttcol>
      <c>HT-SHA-512-ENDP</c>
      <c>SHA-512</c>
      <c>tls-server-end-point</c>
      <c>HT-SHA-512-UNIQ</c>
      <c>SHA-512</c>
      <c>tls-unique</c>
      <c>HT-SHA3-512-ENDP</c>
      <c>SHA3-512</c>
      <c>tls-server-end-point</c>
      <c>HT-SHA-256-UNIQ</c>
      <c>SHA-256</c>
      <c>tls-unique</c>
      <c>HT-SHA-256-NONE</c>
      <c>SHA-256</c>
      <c>N/A</c>
</texttable>

</section>
<section anchor="the-ht-authentication-exchange"><name>The HT Authentication Exchange</name>

<t>The mechanism consists of a simple exchange of precisely two messages between the initiator and responder.</t>

<t>The following syntax specifications use the Augmented Backus-Naur form (ABNF) notation as specified in <xref target="RFC5234"/>.</t>

<section anchor="initiator-first-message"><name>Initiator First Message</name>

<t>The HT mechanism starts with the initiator-msg, which is sent by the initiator to the responder.
The following lists the ABNF grammar for the initiator-msg:</t>

<figure><artwork><![CDATA[
initiator-msg = authcid NUL initiator-hashed-token
authcid = 1*SAFE ; MUST accept up to 255 octets
initiator-hashed-token = 1*OCTET

NUL    = %0x00 ; The null octet
SAFE   = UTF1 / UTF2 / UTF3 / UTF4
         ;; any UTF-8 encoded Unicode character except NUL

UTF1   = %x01-7F ;; except NUL
UTF2   = %xC2-DF UTF0
UTF3   = %xE0 %xA0-BF UTF0 / %xE1-EC 2(UTF0) /
         %xED %x80-9F UTF0 / %xEE-EF 2(UTF0)
UTF4   = %xF0 %x90-BF 2(UTF0) / %xF1-F3 3(UTF0) /
         %xF4 %x80-8F 2(UTF0)
UTF0   = %x80-BF
]]></artwork></figure>

<t>The initiator's first message starts with the authentication identity (authcid, see<xref target="RFC4422"/>) as UTF-8 <xref target="RFC3629"/> encoded string.
It is followed by initiator-hashed-token separated by a single null octet.</t>

<t>The value of the initiator-hashed-token is defined as follows:</t>

<figure><artwork><![CDATA[
initiator-hashed-token := HMAC(token, "Initiator" || cb-data)
]]></artwork></figure>

<t>HMAC() is the function defined in <xref target="RFC2104"/> with H being the selected HT hash algorithm, 'cb-data' represents the data provided by the selected channel binding type, and 'token' are the UTF-8 encoded octets of the SASL-HT token string, which acts as a shared secret between initiator and responder.</t>

<t>The initiator-msg <strong>MAY</strong> be included in TLS 1.3 0-RTT early data, as specified in <xref target="RFC8446"/>.
If this is the case, then the initiating entity <strong>MUST NOT</strong> contain any further application protocol payload in the early data besides the HT initiator-msg and potentially required framing of the SASL profile.
The responder <strong>MUST</strong> abort the SASL authentication if the early data contains an additional application-protocol payload.</t>

<ul empty="true"><li>
  <t>SASL-HT allows exploiting TLS 1.3 early data for "0.5 Round Trip Time (RTT)" re-authentication of the application protocol's session.
Using TLS early data requires extra care when implementing: The early data should only contain the SASL-HT payload, i.e., the initiator-msg, and not an application-protocol-specific payload.
The reason for this is that another entity could replay the early data.
Therefore, the early data needs must represent an idempotent operation.
On the other hand, if the responding entity can verify the early data, it can send an additional application-protocol-specific payload together with the "re-authentication successful" response to the initiating entity.</t>
</li></ul>

</section>
<section anchor="initiator-authentication"><name>Initiator Authentication</name>

<t>Upon receiving the initiator-msg, the responder calculates the value of initiator-hashed-token and compares it with the received value found in the initiator-msg.
If both values are equal, then the initiator has been successfully authenticated.
Otherwise, if both values are not equal, then authentication <strong>MUST</strong> fail.</t>

</section>
<section anchor="final-responder-message"><name>Final Responder Message</name>

<t>After the responder authenticated the initiator, the responder continues the SASL authentication by sending the responder-msg to the initiator.</t>

<t>The ABNF for responder-msg is:</t>

<figure><artwork><![CDATA[
responder-msg = success-response / error-response
success-response = NUL 1*OCTET
failure-response = %x01 1*SAFE
]]></artwork></figure>

<section anchor="success-response"><name>Success Response</name>

<t>The success-response value is defined as follows:</t>

<figure><artwork><![CDATA[
success-response := NUL HMAC(token, "Responder" || cb-data)
]]></artwork></figure>

<t>A success response starts with an octet whose value is set to zero (null), followed by the octet string of the result of the HMAC  function.</t>

<t>The initiating entity <strong>MUST</strong> verify the responder-msg to achieve mutual authentication.</t>

</section>
<section anchor="failure-response"><name>Failure Response</name>

<t>The failure-response value is defined as follows:</t>

<figure><artwork><![CDATA[
failure-response := %x01 <failure-description>
failure-description = "unknown-user" /
                      "invalid-token" /
                      "other-error"/
                      failure-description-ext
failure-description-ext = <additional custom failure reasons>
]]></artwork></figure>

<t>A failure response starts with an octet whose value is set to one (0x01), followed by an an octet string describing the reason for the failure.</t>

<t>Unrecognized failure descriptions should be treated as "other-error".
The responder may substitute the actual failure cause with "other-error" to prevent information disclosure.</t>

</section>
</section>
</section>
<section anchor="compliance-with-sasl-mechanism-requirements"><name>Compliance with SASL Mechanism Requirements</name>

<t>This section describes compliance with SASL mechanism requirements specified in Section 5 of <xref target="RFC4422"/>.</t>

<t><list style="numbers" type="1">
  <t>"HT-SHA-256-ENDP", "HT-SHA-256-UNIQ", "HT-SHA3-512-ENDP", "HT-SHA3-512-UNIQ", ….</t>
  <t>Definition of server-challenges and client-responses:
a)  HT is a client-first mechanism.
b)  HT does send additional data with success (the responder-msg).</t>
  <t>HT is not capable of transferring authorization identities from the client to the server.</t>
  <t>HT does not offer any security layers (HT offers channel binding instead).</t>
  <t>HT does not protect the authorization identity.</t>
</list></t>

</section>
<section anchor="requirements-for-the-applicationprotocol-extension"><name>Requirements for the Application-Protocol Extension</name>

<t>It is <strong>REQUIRED</strong> that the application-protocol-specific extension provides a mechanism to request a SASL-HT token in the form of a Unicode string.
The returned token <strong>MUST</strong> have been newly generated by a cryptographically secure random number generator, and it MUST contain at least 128 bits of entropy.</t>

<t>It is <strong>RECOMMENDED</strong> that the protocol allows the requestor to signal the name of the SASL mechanism that he intends to use with the token.
If a token is used with a mechanism different from the one signaled upon requesting the token, then the authentication <strong>MUST</strong> fail.
This requirement allows pinning the token to a SASL mechanism, which increases the security because it makes it impossible for an attacker to downgrade the SASL mechanism.</t>

<t>It is <strong>RECOMMENDED</strong> that the protocol defines a way for a client to request rotation or revocation of a token.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>The HT mechanism <strong>MUST</strong> be used over a TLS channel that has the session hash extension <xref target="RFC7627"/> negotiated.</t>

<t>It is <strong>RECOMMENDED</strong> that implementations periodically require a full authentication using a strong SASL mechanism that does not use the SASL-HT token.</t>

<t>A cryptographically secure random generator must generate the SASL-HT token.
See <xref target="RFC4086"/> for more information about Randomness Requirements for Security. 
In addition, a comparison of the initiator's HMAC with the responder's calculated HMAC <strong>SHOULD</strong> be performed via constant-time comparison functions to protect against timing attacks.</t>

<t>The tokens used with HT mechanisms <strong>SHOULD</strong> have a limited lifetime, e.g., based on usage count or time elapsed since issuance.</t>

<t>Due to the additional security properties afforded by channel binding, it is <strong>RECOMMENDED</strong> that clients use HT mechanisms with channel binding whenever possible.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>IANA is requested to add the following family of SASL mechanisms to the SASL Mechanism registry established by <xref target="RFC4422"/>:</t>

<ul empty="true"><li>
  <t>To: iana@iana.org</t>

  <t>Subject: Registration of a new SASL family HT</t>

  <t>SASL mechanism name (or prefix for the family): HT-*</t>

  <t>Security considerations:
  <xref target="security-considerations"></xref> of draft-schmaus-kitten-sasl-ht</t>

  <t>Published specification (optional, recommended):
  draft-schmaus-kitten-sasl-ht-XX (TODO)</t>

  <t>Person &amp; email address to contact for further information:
IETF SASL WG <eref target="mailto:kitten@ietf.org">kitten@ietf.org</eref></t>

  <t>Intended usage: COMMON</t>

  <t>Owner/Change controller: IESG <eref target="mailto:iesg@ietf.org">iesg@ietf.org</eref></t>

  <t>Note: Members of this family MUST be explicitly registered
using the "IETF Review" <xref target="RFC8126"/> registration procedure.
Reviews MUST be requested on the Kitten WG mailing list
<eref target="mailto:kitten@ietf.org">kitten@ietf.org</eref> (or a successor designated by the responsible
Security AD).</t>
</li></ul>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">

&RFC2104;
&RFC3629;
&RFC4086;
&RFC4422;
&RFC5056;
&RFC5234;
&RFC5280;
&RFC5929;
&RFC6125;
&RFC6920;
&RFC7627;
&RFC8446;
&RFC9266;
<reference anchor="iana-hash-alg" target="https://www.iana.org/assignments/named-information/named-information.xhtml#hash-alg">
  <front>
    <title>IANA Named Information Hash Algorithm Registry</title>
    <author initials="N." surname="Williams" fullname="Nicolas Williams">
      <organization>IANA</organization>
    </author>
    <date year="2010"/>
  </front>
</reference>
<reference anchor="iana-cbt" target="https://www.iana.org/assignments/channel-binding-types/channel-binding-types.xhtml">
  <front>
    <title>IANA Channel-Binding Types</title>
    <author initials="N." surname="Williams" fullname="Nicolas Williams">
      <organization>IANA</organization>
    </author>
    <date year="2010"/>
  </front>
</reference>
&RFC2119;
&RFC8174;


    </references>

    <references title='Informative References' anchor="sec-informative-references">

&RFC5802;
&RFC6120;
&RFC8126;
<reference anchor="XEP-0397" target="https://xmpp.org/extensions/xep-0397.html">
  <front>
    <title>XEP-0397: Instant Stream Resumption</title>
    <author initials="F." surname="Schmaus" fullname="Florian Schmaus">
      <organization></organization>
    </author>
    <date year="2018" month="November" day="03"/>
  </front>
</reference>
<reference anchor="XEP-0484" target="https://xmpp.org/extensions/xep-0484.html">
  <front>
    <title>XEP-0484: Fast Authentication Streamlining Tokens</title>
    <author initials="M." surname="Wild" fullname="Matthew Wild">
      <organization></organization>
    </author>
    <date year="2024" month="June" day="30"/>
  </front>
</reference>


    </references>

</references>


<?line 336?>

<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>This document benefited from discussions on the KITTEN WG mailing list.
The authors especially thank Thijs Alkemade, Sam Whited, and Alexey Melnikov for their comments.
Furthermore, we would like to thank Alexander Würstlein, who devised the idea to pin the token to a SASL mechanism for increased security.
And last but not least, thanks to Matthew Wild for working on the -NONE variant of SASL-HT.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA8Vb3XIbx3K+36eYQJWIYGFBECRlipZ4DFGkpYpI6ohQbJft
i8FiAMzhYhdnZ5c/luXKVZ4gD5CLVJ7iXMVvcp4kX/fM7B9A2k4uonJZ0O5M
T0//zdc9vWEYBrnOY3UkOuOFEm+kWaipGKfXKhFXo6t34lxFC5los+wE0zS6
kEsaOs3kLA+1ymfhtc5zlYRGmjhc5OFggHEyx6DhYHgQDobhcDcI9Co7EnlW
mHw4GDwfDAOZKXkkrlRUZDq/D27nR+IkXS7TRIyKfKGSXEcy1/jnGMsnaZzO
78WFusvF1ypRmX21ZZfuBhh6JEw+DW5UUqijQIi5zhfF5EjM4vR2KmMd7dyp
ldnJM6V2ltLkKtt5cAtBIMFCmoFOCFIi4S2fxWmmJWQSLZayMPQizeYQzE/M
DAZkWk0zHS3CUazuZDJVWfgx0TcqMzr/9T9zcZrFMpljnYtf/5YlE5XNiUiU
Fkme3R9hY9lSJvf0TC2lji3zX0WmP5NFf6oa3JwsMm3ydLUQp/O5yta5OVnI
eImlRcnCvUhnNWk21r66VVOV1JaOPP2+IvpfRY5c36ggSFJwmoMsSfrD2clw
d7Dvfu49Gz53P/cHh8/8z/3h0P08GBz4pwfDvf3y5+HA/3xeUni2OzzwP58P
/YAvng2/cD8P9/c9sefDZ/wTKpLhAkYcynhOD4Tw5v12dDESZL9T8TaZ2T3A
isjixSieQ735Yik+qDl2nt13eG5pCfzHyr5zoaM0lkZ8o+NYy6XpuNfQwJGg
Vfjf3gl2B5YLmc0VzHSR5ytztLNze3vbJ2b7mLUjjdHzZAmzNzu0yDTUFYfr
T/p3i3wZP/Hb9NuOJvmGHcMSkkTF4SudTHUyF+P7lTL/b7uLHDcTy02YEzeb
n9pdInb4jZcGd3A4GFY24g3jcHfIJvDt6ftwsPf8i6YsyqdQvsllkosrRANJ
CjfFckVifUQoLe/vNGVwGO7ugvhGSdwtVyuWAoKXSgyWMRSLmJc+b9BxvH+4
v4FjeirOELHacdFyH+uEdUrh+jGlnsscs29JqdMm88P9cPAs3NusxgeZB1uW
+SAMQyEn8BgZIXKOF9oIHBMFaVuYlYr0TCsjsLiYyaWOOQqtHzJLf8gYcbtA
DBUqkZNYCSlWWZrOQvy3So1RhngIJ9JgumwKxEQLtcSMBG8yBYqk4zwVEyUK
Go6ffy10dA0WMhXWJitiiRZSNzotjHCr9IPN52HJ6lOzxoL6a6GSSCGwQlgm
N0Q5TWjTiRIZou00zDO9sqQLI+e8toG+8jCGfU97Qt1FcWHwG7PUiraUyVgs
LBs561lAxjJaaPAL3ZNoDX7E9RVIbCuV5fd2qSbjpV6mYqEypRMxKzKQyWjW
jZ5CX7SekHMd49zoiWWRF2CitVuStClWKzAv4KHCObFwTty3trHU02mMQ+MJ
/C7P0mkR0WRnKY4RRxALR5mePG4uW2/GXXGllyvsd7TOkEcU4p28x4a2aOdd
8emTO4U+f66ZWu//aGvOQsY1yZL1K4p21uC87d3iaPk9arb67YlIxjGmEfMh
6PvHbNsxUAHLm6251zKtlm0Tsw9Yd3BWKZ1MhdwUQ/P2lsiZdrstixh2NxuF
5XGv+xuGcRJrOg1IJEXMksrIdRDlmlsWsyxdWgtXGWCMAGTD/yeKDL/uwlPI
mZ+JDkJRmsw7bZuP9TX84OTD6NxaA50hnz/3gzfssFLgyAGluPJhEhvbqnG0
SSryXsRpem2psZWmpA+8PgqCX375JRh1hd1cgz1Tsme5q/G1pfrzfs9y1g1e
ldOdQEhhUaZagglO4AOQiAafeFlkYLI5AMH8BeO0WERMMHQS1AkkaDfG3n8c
vMaaKRRkn01UfqvgZ5HbBTm5nYmTwdjpWbGCyHu0COkXaJfdcaIinI0unH6j
z7T4+7/9u/j66lwYOEC0CE5ru8Oh6xy9bZqVuGlx3o61g5NucFbf9w1eWRKm
iCJMnhUx3Ik9bk0a389TmNmrH1lLnwCu9byAZdP5+LJz6nZQKt+ykLcPABt8
GobVEZ+D9ThA2tPYJLYAK4rS5QrQHiThH6tV7JwlhOflKdBW6OOgKM9ZH5vY
3Y3Thql7ihQJDvTGPsWWUUp8f+VUefDj1hPHCIOvEMoKsaewxkPJQrlyt9sP
nDw4IEC2C97G72Nc2IBJwHrMsePTJw+9EHxJo+4BIAT5H58D356/f2/dkvAc
xlXk/FJOEhAgksQ59p9y8MoXkCqewnGI9km3FwRXmlSYu3Ovkg4WSlKgEhmT
9fL48nDm8KZzn1pqw2bUWw+Hnkihcz41oBFiESJHZAB05fiOwIatT53vGu/k
nRWg8G2aTU0HQv4uLTig3DqgwoFF5vXwxO6VL2SOmPnkCbnpDYUUiknE/Rgp
o3bpHNvgtQI5og/E9/Fq3OnZv8XFJf/+cPrnj28/nL6m31dvRu/elT8CN+Lq
zeXHd6+rX9XMk8vz89OL13YynorGo6BzPvquY2XauXw/fnt5MXrXQbQgBdUQ
IRmEPRc5kMD1KXZLE/izf0pzXp28/+//2N2HJP6B08vd5xCF/cfh7hcwGziH
SmoatP+Eru4DmKmSFObIYHCQrqCnmMyGT5tbG/T45EaksrIiJWBMKqq5Ta51
EsD2YG0RbJsorWKJQacAXRpmw1R6hIJpMLjQmShzZAaiZKP94MWfANeVCA//
dBywPkfWpSZ8qAbBKxc/efHK4gCtE0OHKUXfKm8ls2C/zHMZXYM5d5iSdQJ/
4pyJN5jv9jYZxPa2lZvHJynFd3dMG2/PeD65F2O/ukNUJcDaGr+76gkKOGyw
lIt//txFmmipGQ34Ju15M6cJYUWWcUzj9PZr94MRFGH5bgecB+INy6E8LTdF
xe1ta8wbd+34xOOKv4obxw7Zl8B+m3HBHZGlSBun0I2MNeVYNfSChCEioDWz
WceWdfThIQJer4x+BxBi33pzDQGP6xmSC0FOPhSEKEyA/bv7NaDqQ+E9bDex
tiGz7J4NhxNFVzESgP2YBr0CodDZt0Wvf9JTYuaJcAfcWclRWRU0QXCKZKQe
IZ37OPanejajQhRsKVqk2iIrEopFlGXhhQ97llXszi83rgUfXXx8PqSgQIUC
0lLStHI61TlL8ruZqLlOOFVmKN55Mw47DrtZM+eFbLDQP+ERU3AMsLEQt73G
lE7oAp4pZjN9Zx/SWYJpTxEX3z/tiacfL97+mf4+/fb9h6fkHE8vLi9On4Jn
Bp5IBEh4DeaxEplxjYESZJKilw5pYgsvfAXoOHwRTbhqcszvgm8oyokfygE/
HJM42pvscO2LSmJUTtCEmt2KXDnq/P5iGZTSqLzRUW9qeSZswhr48yFbO4nt
B8+zZe53Sg75FazYo7O2bVh7eJu4rZoGSXqWx8Yh4VAhZVqliE8bqXhXX6fm
GPPUikQj9vxBGrypioa6owiLaMRColomBPg4xX+h+LJxjOFTdqpmOrGSrxS6
uRaI6GnV6LUYTfKHFEj1W4Jtfkc8gpIMvzOrpCRdY+1W4zx2odcJBJuhech3
JyFipWQbZXSA8KSWqzIaYT1nK+JnX9AU9U1QqYH//Bxu/hOQDVCJ6+eNJhCQ
UqvXVqcBaal66JUU0Bbt4+2LdLvNDyUXXMJ72TlHiCYOIRfPPra3iX9TphGV
r1t8GXMdyaTwUVVD5YgY7cKZ1aLKfECrIRjIrwzY1t+F3QDItFxaVBL25Vjh
TBxoDXEu2CTezWJ/SBleJwhhQJ/hwe4w9OrB6u6RqP95QGs1Al6BjxJwerXT
9hoL87S99rzH1x0ePGuvi0e/tS5P8zb04LSLnVHNkk4fVT0bT3lIt6pip3c0
bK6seVXHTL1GKQkGUQKs3GB6CHVH2lCBKr9NMdFQvdKUBQLyfp3oXMscwZkC
OvLdVUr3Xv22KZv7JJd3zXIfBzKmMirmZKSw21dAsoUJL2SR8VEntkavLpDz
I+K7Et/GmDTc41SSIPXbkqMznSFLPLdsb0jRTS4JUjMeaOwlXJq5T7+pRkkY
zyGEar/wY3pQ23Jzx9ZteXfYgZhncrmUmcvnWou5A73xTLxkfBYhxl98fFcb
byvBoa1r+CEvxe721ejsVHwpON+TAKKrXBQr4nN4cCBS4NrcBJvJ8PTLk/Hp
OAhoMfx5Kf5xcDcYgB5tKwGitSQCXoXefxyf7Yod+mto/9qzf+0HpRF/+SXM
4p4ehocCaCedQmkfE00/6HigMpSi8hEzi5WDgKny8neD3fCLM6JRe8+r2dcn
w/D1GdEeBLy4fXo6wP9Gg/CVfQWW8Gw3PD0Rwy160BU7FX949Rr/OxyEz+vD
T8PTMz+caO872mdE+znTLonR490Qy+9tIo+pTP6wQW/g6B0SKQvXxnWTQJow
Y9t1LrdmqS2MXyL3LWcOnJXVSt5dchurBX5Kl7RUY3Ea8Ufs25zMvY5wHzAX
o1bQncsPpb98qIzEuT8yoKKEsA+Q4nq5BSrSr23W/KEx5eileHM+Otnif/VE
p/T4jvj5Z48kulauPLDroe+sSCJ30VBiIxYIXWBTUYEE/MZVl6tUBAMROJrZ
CnCpW+kpYgAipbHlOUxiIOMuUsrUoqS0CbBZOPyUN/TUlkgwpek21oG9NJv5
rVVgWTGMKA3m3KdehCrj9uMxuxmEkNqOvkNmy/WaKC6mVmiUCe/298Qg/DAe
I4Oh7Jm23dscn21pAAY2s6ikzEQI+pEp1y2EhOLs2SbWVIICC1TSoKILRRR/
XVWrEFR1wpW8j1NZAt+KO+zC8OWWK4o0t0rCWKU5LS1jviPkwulUzBC6HYjz
oqfFZjp2F0ClCKtKgJxQwaQc3nbYWZsztzlbLp5ONQ2ju5UNJVe/P+jruLQD
VyUGQo1TzSL0KqotQmdPZ9A/EB/otkiM6bZorIEFt6DFbmfzzVGrEFOK+Wnt
JulYfDR+zdp6ZQ1c3eWZpLqDsoUUhhp04tO1CR8wtVmuisWFGq/zusm77feE
7qt+b9PJTZrk+shv1axLSR4Lq0dpsEN7RHsz5RqbLTU7q4yYPzh9LO9benSU
AJPTzJp2fWeJUlRsLExehQxiEja5tJYn6CLOdniA0qXduF0cYYP2PKujjpqr
UHEHEFXP2ixhTs5vsdr0d5jXmnQQY+aKWSjPn866pVSlr47jziiPkdYcu43U
moAVIADTQSVSurzgbqm4Ab3otjQqYr5my+vnzgMHCNkH38iQbUI65b7sknB5
S2HGbqKTdQY4lE2gGDvSJtywdhmvx7M044LOhEJvo0DYKID2g0uS8a2mkKjX
iZM91xdoib8MPDOpYyveM00q/lAKqQTCI75CbUqwWYxtcL8m7JT8tnCy3hTe
cOSRsXnVlVM5zDZtIvXHDoNk8rzmaO2xQPPxSy/JsLS1HaGyDNrxD4K1ES8Z
SHugS4IqYMe11wQ5HY626OEJxHhlyThBGpdIrBG3FvMYmlmbcmQZamCZUl0b
sMzIr1o5WB0YwrUZIyDEpnWGjOLLpZ9Ulootwmjd3lrh0050pdK0jDFFnJcd
AeBSlACqiRXWTmzYYS0Wrenftq6ozQ0EfSv2M6ueltjXlPbbYl+bcuQU/cK/
sTdP3AB2HGx4CMvoFMl1kt4mITJWqKaG8Rt/Ojrhqr+NM4+M45AessF2Hhq0
gRO6o93EIT0Hly9qoT3CKZMuPRF3tJljb0nV8z9uSVSn3UJyuNsyJDpbkqYp
uUu9KhLUDthSm9D4xwShN50nXJT2vNU2WDaKAIdS25u9M2zKsY3F6FLPFBMD
uyzcLQyQMRmcX8Bettn7gDole6WrbuzNX1X7nmoTxamxLNNlLGCMlnS/wjSa
zdKw3Ori3Xc7KZ9++D6naBONtS6Cpe2VqePq8oqfHLSW6oGz3T6ZWK3URBUu
urRtFa2qR1UhrP3Mjfv7v/5XPxgS3dfkZ9qDQ1cXo+bgWCVzZW+lXb+Jty3j
WhFlVzDqpszEDfFprttv3w6c2IHTVBmHWiq7ZiBlu6lcMNxaizHdfrBHvNrF
7JXXimupFMzoOnMGRfsOorUbMOqDKtuO3BWfO7XsfvvBviPPLNICKV1xcWpi
/PVoTLelhjpG7FuzlvoB7+dK0gXbQZue7yjw2f76NR2bYN3GSrca1VDde580
nJbXpZ/+Fy0hnwNXHNje9i0EiPEMjjdd1D7UGVJ2F8r67Xa9o6XVr5G4269s
aYuUvnbkKxbW46n9yfdGVifQQt4oi7oSdQu4NbffDfiiRZTdr4BsM7laUNtX
7DQHejBhKD8plhPueeJZBIPItIEWOSUtk9FcxIqac3eHh9CrTdAV3b2vSEOV
0MpWibrcWq0tLkayLGyFkRoJqStwoRrXga0owfQWtqMimfINShnY+IKJBMOQ
VVaNMFVbYl0Z9q6WLL70AAr3lg9qsrPInFn0Ud1hlxL3Pg5NORDWLNDvfeWu
Z0uKjBRaWy2rsklEZ4lv/vIu5/vPoKWlvLbgHrlmijTVX5LX+yWwwBSHOmxg
qjbI9Q/oz6IPsutbnDq8Ti1yePPOfBGbYe5NWm/PdDqCT5f9FSdUn5+6fNDA
b/0+w6jxZlP7WSn0RquD5AzdhyFrNtLL0LbecZWr8lg+WeiDi8+f4UbzlOAe
JSuPSabM7h3jSGl1OnVO5jQPVigJattKq0lyk52XIdJfHjRCBrUC/KZrlz5t
c3EfGDZRu/LdLfQxi2vHWiK3b+ACOUmLXHxg4onNFVph2eu0L+je0x9nPbIS
zkO1qYot9TIwo+5aeuoOOeoj8Snv1A6qtbhA5RA5sUeZrObiEn/wEOZU7Kmt
6OG8qTexyTkVomC4mqte1luMQ/yuK7cKHs3GlBoXHH6liEGFmIz1TNHyPWE7
4comQdsEzx8ikV8wiyqWK3ptm1e0MQUhJLDwuiiLCjVMUPp/rZFZziAAV39t
nbtcEXnIeH2fJVlXc2+83bU7bVivItfyQYZd2H5203BSeAw9dLEP0cD2h2MX
7QaPssOmfb3rNt6CmeXVPWgC42huVp3c1zHhEVUKx+kRfyT0lf8qJzim+mEx
+QuUfuQbOWoRybdReY7ejO2Mpk/ysbTF3Ud0N1zD9jSpe4Rp4bad6LXUjF5H
eCXE9z9uPRTeusSO/VbP2I9v2p/rEfX3hd9785OCrXRlraRH1Z10CZ+EVXTt
qo9RDb/9VmyNL19fdi19ADiQ+yf7fRzpLSNPh04YCkS20d3XpWvRgVZ6ezo+
s4L75mvxwq7zFX14SHo4Zvpv+ezmNnb4w5Egw7y84FeXt4hPOyf2WtY19sUq
OwLZK5CDtc9bxC5S+rTnXBGCcVcGVTsW45eJ4lqxjnTOQdk3DmBy1fncYb4/
qButbjuukr87pDCY1a0FXhepKWdFx260KVeprD216OCfefckCBKkvynFzDW5
sFlJj/Px235Y4SFcFRHZ8eoWNnpNTWv89ckEwYtcchRRAg8IM7cJ2acjC/DU
9GVnJmOjOp/bHy9N4NozDl6MhSj7K/iQNOVe3o7HpxftvVhYalG7gVvaBhm6
RYcKrwUW+YsRo/galjRFPLySS/HNQpcdyfTxqIKaVJzo6/TGe5SmytuSme/7
LzeWXGW+pTZWSo7tNwmpW6f8CFV88+vfkGbFSnNTOUAPdGR8mW+qJEd/h7Uf
hF7Mh8dd0zLm9oMReI4JAk9wCNLBzIC4Z7lgD6l/e8ZkbtPsmitNdk3bC3Ej
6QO73Ec+HML94H8AlHSzUJ08AAA=

-->

</rfc>

