<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-kelley-webbotauth-sail-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="SAIL">SAIL: Source Address Identity List</title>
    <seriesInfo name="Internet-Draft" value="draft-kelley-webbotauth-sail-00"/>
    <author fullname="Kevin Kelley">
      <organization>Anthropic</organization>
      <address>
        <email>kelleyk-ietf@kelleyk.net</email>
      </address>
    </author>
    <date year="2026" month="October" day="22"/>
    <area>Web and Internet Transport</area>
    <workgroup>Web Bot Auth</workgroup>
    <keyword>crawler</keyword>
    <keyword>bot</keyword>
    <keyword>IP ranges</keyword>
    <keyword>egress prefixes</keyword>
    <keyword>user-agent verification</keyword>
    <abstract>
      <?line 78?>

<t>This document defines SAIL (Source Address Identity List), a
metadata format served at a well-known URI in which the operator of
automated HTTP clients publishes the IP prefixes its services send
from, together with two optional assertions: that a service sends from
nowhere else, and that nothing else of the operator's sends from a
given set of prefixes. A site that receives a request claiming to be
one of those services can use that metadata to confirm the claim or,
under those assertions, to refute it. The mechanism is intended to
complement reverse-DNS verification and HTTP Message Signatures.</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-kelley-webbotauth-sail/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Web Bot Auth Working Group mailing list (<eref target="mailto:web-bot-auth@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/web-bot-auth/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/web-bot-auth/"/>.
      </t>
    </note>
  </front>
  <middle>
    <?line 90?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines SAIL (Source Address Identity List), a
machine-readable and machine-discoverable metadata format that allows
service operators to publish information about which addresses other
parties should expect to receive inbound traffic from.  It also
defines a well-known URI for discovering that metadata.</t>
      <t>Among other uses, this mechanism is intended to allow a consumer
that has received a request to determine whether the identity the
request claims is consistent with the address it arrived from.  For
example, it allows a consumer that has received an HTTP request to
determine whether the service named in the <tt>User-Agent</tt> header could
have sent it, or whether the request may be an attempt to impersonate
that service.</t>
      <t>Operators of well-behaved automated clients already publish
documentation about the services that they operate, including e.g. IP
prefixes; however, each publisher chooses its own schema and
publication location today, which makes automatically consuming that
metadata difficult.</t>
      <t>A SAIL document is published by a single operator and describes only
traffic that operator itself originates. It identifies that operator's
services, not the people or organisations on whose behalf a service
may be acting: identity that is delegated, federated, or scoped more
finely than the operator — per user, per customer, or per task — is
outside the scope of this document.</t>
      <t>Site operators extend privileges to automated clients they recognise
and trust, such as access that other clients are refused or higher
rate limits, so impersonating such a client is valuable.</t>
      <t>This draft is intended to complement, and not to be an alternative to,
reverse-DNS verification and HTTP Message Signatures <xref target="RFC9421"/> as
applied to automated clients by <xref target="WBA-ARCH"/>, which are two other
widespread means of accomplishing the same outcome.</t>
    </section>
    <section anchor="conventions">
      <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?>

<t>This document uses the following terms:</t>
      <dl>
        <dt>Publisher:</dt>
        <dd>
          <t>The operator that generates and serves a SAIL document describing
its own services and the prefixes they send from.</t>
        </dd>
        <dt>Consumer:</dt>
        <dd>
          <t>A party that retrieves a SAIL document and acts on it, typically the
operator of a site that receives automated requests, or an
intermediary acting on such a site's behalf.</t>
        </dd>
        <dt>Holder:</dt>
        <dd>
          <t>Any party in possession of a copy of a SAIL document, however
obtained: a consumer that fetched it from the publisher, or one that
received it from a shared cache, a mirror, or a file. Every consumer
is a holder; <xref target="validity"/> places obligations on holders generally.</t>
        </dd>
        <dt>Origin:</dt>
        <dd>
          <t>The scheme, host, and port of a URI, as defined in Section 4.3.1 of
<xref target="RFC9110"/>. A SAIL document speaks for the origin at whose
well-known URI it was requested (<xref target="location"/>).</t>
        </dd>
        <dt>Service:</dt>
        <dd>
          <t>A named source of outbound traffic operated by the publisher,
typically an automated HTTP client such as a crawler or fetcher,
described by an entry in the document's <tt>services</tt> array
(<xref target="schema"/>). <xref target="http"/> describes how a request claims a service.</t>
        </dd>
        <dt>Prefix:</dt>
        <dd>
          <t>An IPv4 or IPv6 address prefix in CIDR notation <xref target="RFC4632"/>, or a
single address, written as described in <xref target="prefix-syntax"/>. "IP
range" and "address list" in deployed practice refer to the same
thing; arbitrary start–end ranges that are not a single prefix cannot
be expressed.</t>
        </dd>
        <dt>Prefix set:</dt>
        <dd>
          <t>A named collection of prefixes published together, typically
corresponding to one egress pool, and the unit over which <tt>exclusive</tt>
is asserted (<xref target="schema"/>).</t>
        </dd>
      </dl>
    </section>
    <section anchor="location">
      <name>Location of the SAIL Document</name>
      <t>A publisher <bcp14>MUST</bcp14> serve its SAIL document at the well-known URI
<xref target="RFC8615"/> whose path component is "/.well-known/sail" on the origin
by which it wishes its services to be identified (<xref target="http"/>):</t>
      <artwork><![CDATA[
https://example.com/.well-known/sail
]]></artwork>
      <t>The document <bcp14>MUST</bcp14> be served using the "https" scheme only; it <bcp14>MUST NOT</bcp14>
be served with any other URI scheme, and a consumer <bcp14>MUST</bcp14> query it using
HTTPS only. If the HTTPS request fails, a consumer <bcp14>MUST NOT</bcp14> reissue it
over a non-secure connection. A publisher <bcp14>MUST</bcp14> serve it with
status 200 (OK) and Content-Type <tt>application/sail+toml</tt>
(<xref target="serialization"/>). A consumer <bcp14>MUST NOT</bcp14> treat a response with any
other status code as a SAIL document, and <bcp14>MUST</bcp14> accept a 200 response
whose body parses and validates as a SAIL document (<xref target="schema"/>)
whatever Content-Type it carries.</t>
      <t>Retrieval <bcp14>MAY</bcp14> result in an HTTP redirect, and redirects are handled as
<xref target="RFC9309"/> (Section 2.3.1.2) handles them for robots.txt. A consumer
<bcp14>SHOULD</bcp14> follow at least five consecutive redirects, even across origins;
if the document is reached within five, it is fetched, validated, and
applied in the context of the origin whose well-known URI was
originally requested; if there are more than five, the consumer <bcp14>MAY</bcp14>
treat the document as unavailable. Any such redirect <bcp14>MUST</bcp14> be to an
"https" URI; a consumer <bcp14>MUST NOT</bcp14> follow a redirect to any other scheme.
A publisher <bcp14>MAY</bcp14> redirect other schemes to "https".</t>
      <t>A document obtained by following redirects therefore speaks for the
origin whose well-known URI was originally requested, not for the
origin that ultimately serves it: a redirect is an act of the requested
origin, and a consumer redirected from <tt>a.example</tt> to <tt>b.example</tt> has
obtained <tt>a.example</tt>'s SAIL document.  This lets a publisher serve one
document for several hosts, or from static hosting on another origin
(<xref target="redirected"/>).</t>
      <t>The well-known path is the only location this specification
defines. Consumers <bcp14>MUST NOT</bcp14> look for the document elsewhere on the
origin.</t>
      <t>Many automated clients include, in the comment portion of their
<tt>User-Agent</tt> header field, a URL for a page describing the client and
its operator <xref target="CBCP"/>. A publisher whose clients do so <bcp14>MUST</bcp14> also serve
its SAIL document, directly or by redirect, at the well-known path on the
host of that URL, so that <tt>https://&lt;that-host&gt;/.well-known/sail</tt>
resolves as described above. A consumer that receives such a request
can then derive the location of the publisher's SAIL document from
the request alone, without prior configuration.</t>
      <t>A publisher <bcp14>SHOULD</bcp14> additionally link to the well-known URI from the
human-readable page that describes its automated clients, for example
alongside links to existing machine-readable lists of egress addresses
it already publishes.</t>
    </section>
    <section anchor="format">
      <name>Document Format</name>
      <t>This section defines the serialization, schema, and prefix notation of
a SAIL document, and how a consumer resolves its prefixes. <xref target="example"/>
gives a complete example.</t>
      <section anchor="serialization">
        <name>Serialization</name>
        <t>A SAIL document is a TOML <xref target="TOML"/> document and, as TOML requires,
<bcp14>MUST</bcp14> be encoded in UTF-8 <xref target="RFC3629"/>. Its date-time values are TOML
offset date-times, which are <xref target="RFC3339"/> timestamps. Its media type is
<tt>application/sail+toml</tt>
(<xref target="iana"/>; the <tt>+toml</tt> suffix is not yet registered, see the note
there).</t>
        <t>We use TOML rather than alternatives such as JSON so that the document
can carry comments.</t>
        <t>A document <bcp14>MUST NOT</bcp14> exceed 524288 octets (512 KiB). The limit applies
to the TOML text itself, after any HTTP content coding has been
removed, not to the size on the wire. A consumer <bcp14>MAY</bcp14> stop reading a
response once the limit is passed. A document that exceeds the limit,
is not valid UTF-8, or is not valid TOML is invalid (<xref target="invalid"/>).</t>
        <t>[[EDNOTE: 512 KiB is a first guess.  Also open is whether per-item
limits (counts of prefix sets, services, or prefixes per set) are
needed in addition.]]</t>
      </section>
      <section anchor="invalid">
        <name>Invalid Documents</name>
        <t>Wherever this specification says a document is <em>invalid</em>, a consumer
<bcp14>MUST</bcp14> ignore it in its entirety and <bcp14>MUST NOT</bcp14> act on any part of it. In
particular a consumer <bcp14>MUST NOT</bcp14> act on the readable portion of a
truncated or partly parseable document.  For example, an incomplete
list under <tt>exhaustive</tt> would cause genuine traffic to be rejected.</t>
        <t>A final response with any status code other than 200 (OK), once
redirects have been followed, is invalid.</t>
        <t>A consumer that already holds a valid document from the same origin
<bcp14>SHOULD</bcp14> continue to use it until its effective expiry (<xref target="validity"/>),
as if the invalid retrieval had not occurred.</t>
      </section>
      <section anchor="schema">
        <name>Schema</name>
        <t>A SAIL document (<xref target="serialization"/>) is a single TOML table with the
following top-level keys. Unrecognised keys at any level <bcp14>MUST</bcp14> be
ignored.</t>
        <dl>
          <dt>schema (string, <bcp14>REQUIRED</bcp14>):</dt>
          <dd>
            <t>The specification the document conforms to; for this version,
"draft-kelley-webbotauth-sail-00".</t>
          </dd>
          <dt>modified (offset date-time, <bcp14>REQUIRED</bcp14>):</dt>
          <dd>
            <t>When the document's content last changed, for the benefit of mirrors,
caches, and other systems that track the metadata a SAIL document
expresses. Regenerating or re-serving unchanged content, or changing
only the expiry, <bcp14>MUST NOT</bcp14> advance it.</t>
          </dd>
          <dt>expires (offset date-time) / expires_after (integer seconds):</dt>
          <dd>
            <t>A publisher <bcp14>MUST</bcp14> include exactly one. <tt>expires</tt> is the absolute
instant at which the content ceases to be valid (<xref target="validity"/>).
<tt>expires_after</tt> obliges any holder to refresh the document within
that many seconds of receiving it and not to rely on an unrefreshed
copy beyond that; it <bcp14>MUST NOT</bcp14> exceed 2592000 (30 days), and a consumer
that receives a larger value <bcp14>MUST</bcp14> treat it as 2592000. It
is provided for publishers for whom regularly advancing an absolute
<tt>expires</tt> is infeasible. A document with neither key is invalid
(<xref target="invalid"/>); a consumer that receives a document with both <bcp14>MUST</bcp14>
use whichever yields the earlier effective expiry (<xref target="validity"/>).</t>
          </dd>
          <dt>prefix_sets (array of tables):</dt>
          <dd>
            <t>Each entry describes one egress pool:
</t>
            <ul spacing="normal">
              <li>
                <t><tt>name</tt> (identifier, <bcp14>REQUIRED</bcp14>; see <xref target="ident"/>) — unique within
the document and meaningless outside it.</t>
              </li>
              <li>
                <t><tt>ipv4_prefixes</tt>, <tt>ipv6_prefixes</tt> (arrays of strings) — prefixes in
the syntax of <xref target="prefix-syntax"/>, subject to <xref target="prefix-validity"/>.</t>
              </li>
              <li>
                <t><tt>exclusive</tt> (boolean, default false) — the publisher asserts that all
of <em>its own</em> use of these prefixes is described in this SAIL
document
(<xref target="inference"/>).</t>
              </li>
            </ul>
            <t>A prefix set that no service references and is not marked
<tt>exclusive</tt> asserts nothing and <bcp14>MUST</bcp14> be ignored. One that no service
references and <em>is</em> marked <tt>exclusive</tt> is meaningful: it states that
none of the publisher's services send from those prefixes, so that
any request claiming one of them from there is refuted
(<xref target="inference"/>); a publisher can use this for address space it holds
but does not send from. A prefix <bcp14>MAY</bcp14> appear in more than one set and
in service entries; <xref target="overlaps"/> defines how occurrences combine, and
a prefix in an unreferenced exclusive set that also appears elsewhere
in the document takes its services from those other occurrences.</t>
          </dd>
          <dt>services (array of tables):</dt>
          <dd>
            <t>Each entry describes one source of outbound traffic:
</t>
            <ul spacing="normal">
              <li>
                <t><tt>name</tt> (identifier, <bcp14>REQUIRED</bcp14>; see <xref target="ident"/>) — unique within
the document. This is the name a request claims (<xref target="http"/>).</t>
              </li>
              <li>
                <t><tt>prefix_sets</tt> (array of identifiers) — names of prefix sets in this
document from which the service sends. An unknown name makes the
document invalid.</t>
              </li>
              <li>
                <t><tt>ipv4_prefixes</tt>, <tt>ipv6_prefixes</tt> (arrays of strings) — prefixes from
which the service sends, listed directly. Exactly equivalent to an
anonymous prefix set, referenced only by this service, whose other
keys all take their default values.</t>
              </li>
              <li>
                <t><tt>exhaustive</tt> (boolean, default false) — the publisher asserts that
this service sends from nowhere outside its prefixes as resolved by
<xref target="overlaps"/> (<xref target="inference"/>; see <xref target="publisher"/> on when to set it).</t>
              </li>
            </ul>
            <t>A service with no <tt>prefix_sets</tt> and no directly listed prefixes has
no prefixes.</t>
          </dd>
        </dl>
        <t>A document with duplicate prefix-set names, duplicate service names, a
dangling prefix-set reference, an identifier that violates
<xref target="ident"/>, neither expiry key, or <tt>expires</tt> not later than
<tt>modified</tt> is invalid (<xref target="invalid"/>).</t>
        <section anchor="ident">
          <name>Identifiers</name>
          <t>Prefix-set names, service names, and the references to prefix sets in a
service's <tt>prefix_sets</tt> array are <em>identifiers</em>. An identifier is a TOML
string whose value:</t>
          <ul spacing="normal">
            <li>
              <t><bcp14>MUST</bcp14> be a <tt>token</tt> as defined in Section 5.6.2 of <xref target="RFC9110"/>: one or
more of the ASCII characters ALPHA, DIGIT, and
<tt>!</tt> <tt>#</tt> <tt>$</tt> <tt>%</tt> <tt>&amp;</tt> <tt>'</tt> <tt>*</tt> <tt>+</tt> <tt>-</tt> <tt>.</tt> <tt>^</tt> <tt>_</tt> <tt>`</tt> <tt>|</tt> <tt>~</tt>; and</t>
            </li>
            <li>
              <t><bcp14>MUST NOT</bcp14> exceed 128 characters.</t>
            </li>
          </ul>
          <t>Length limits on strings in this specification are stated in
characters and apply to the parsed TOML string value, after the
document has been decoded and any TOML escapes resolved; only the
overall document limit (<xref target="serialization"/>) is stated in octets,
because it is checked before parsing.</t>
          <t>This is the same grammar as an HTTP product name, so every service name
can appear verbatim in a <tt>User-Agent</tt> field value (<xref target="http"/>) and as a
robots.txt product token, which <xref target="RFC9309"/> likewise matches
case-insensitively.</t>
          <t>Identifiers are compared ASCII-case-insensitively: two identifiers are
equal if and only if they are identical, character for character,
after each character in the range U+0041–U+005A ("A"–"Z") is replaced
by the corresponding character in the range U+0061–U+007A
("a"–"z"). No other folding or normalisation is applied. This rule
governs uniqueness of names within a document, resolution of
<tt>prefix_sets</tt> references, and matching a service name against a
<tt>User-Agent</tt> field value (<xref target="http"/>).</t>
        </section>
      </section>
      <section anchor="prefixes">
        <name>Prefixes</name>
        <section anchor="prefix-syntax">
          <name>Syntax</name>
          <t>Each element of <tt>ipv4_prefixes</tt> and <tt>ipv6_prefixes</tt> is a TOML string in
exactly one of two forms:</t>
          <ul spacing="normal">
            <li>
              <t>CIDR notation <xref target="RFC4632"/>: an address in the family's textual form,
"/", and a decimal prefix length ("192.0.2.0/24", "2001:db8::/32"); or</t>
            </li>
            <li>
              <t>a bare address with no "/", which denotes that single address and is
equivalent to the same address with "/32" (IPv4) or "/128" (IPv6).</t>
            </li>
          </ul>
          <t>No other form is permitted: start–end ranges, netmask notation,
wildcards, and lists within one string <bcp14>MUST NOT</bcp14> be used. Each element of
<tt>ipv4_prefixes</tt> <bcp14>MUST</bcp14> be an IPv4 prefix and each element of
<tt>ipv6_prefixes</tt> an IPv6 prefix. Publishers <bcp14>SHOULD</bcp14> write prefixes in
canonical form, with all bits beyond the prefix length zero and, for
IPv6, in the text representation of <xref target="RFC5952"/>; a consumer that
receives one with host bits set <bcp14>MUST</bcp14> honour it as the prefix obtained
by clearing those bits, and neither this nor a non-canonical text
representation alone makes the document invalid.</t>
        </section>
        <section anchor="prefix-validity">
          <name>Permitted Address Space</name>
          <t>A prefix <bcp14>MUST</bcp14> lie wholly within globally reachable unicast space. It
<bcp14>MUST NOT</bcp14> overlap:</t>
          <ul spacing="normal">
            <li>
              <t>any block whose "Globally Reachable" property is anything other than
an unqualified True in the IANA IPv4 Special-Purpose Address Registry
<xref target="IANA-IPV4-SP"/> or IPv6 Special-Purpose Address Registry
<xref target="IANA-IPV6-SP"/> (established by <xref target="RFC6890"/> and <xref target="RFC8190"/>; this
covers private, shared, loopback, link-local, documentation,
benchmarking, discard, and reserved space);</t>
            </li>
            <li>
              <t>multicast space (224.0.0.0/4 <xref target="RFC5771"/>, ff00::/8 <xref target="RFC4291"/>);</t>
            </li>
            <li>
              <t>IPv6 prefixes that embed IPv4 addresses (::ffff:0:0/96 and ::/96,
Section 2.5.5 of <xref target="RFC4291"/>); or</t>
            </li>
            <li>
              <t>transition-mechanism and shared-anycast assignments from which no
single operator originates ordinary unicast traffic, even where the
registry marks them reachable: 6to4 (2002::/16 <xref target="RFC3056"/>, and the
deprecated relay anycast prefix 192.88.99.0/24 <xref target="RFC7526"/>), Teredo
(2001::/32 <xref target="RFC4380"/>), the NAT64 well-known prefix (64:ff9b::/96
<xref target="RFC6052"/>), AS112 (192.31.196.0/24 and 2001:4:112::/48 <xref target="RFC7535"/>;
192.175.48.0/24 and 2620:4f:8000::/48 <xref target="RFC7534"/>), and AMT
(192.52.193.0/24 and 2001:3::/32 <xref target="RFC7450"/>).</t>
            </li>
          </ul>
          <t>The registries <xref target="IANA-IPV4-SP"/> <xref target="IANA-IPV6-SP"/> are authoritative for
the first item and consumers <bcp14>SHOULD</bcp14> track them as updated; the
remaining items are fixed by this specification.</t>
          <t>A consumer <bcp14>MUST</bcp14> validate every prefix on receipt. A document containing
any prefix that is malformed (<xref target="prefix-syntax"/>), in the wrong family
for its key, or outside the permitted space <bcp14>MUST</bcp14> be treated as
invalid (<xref target="invalid"/>).</t>
          <t>[[EDNOTE: Whole-document rejection is simple and consistent with the
handling of unparseable and oversize documents, but one bad prefix
then withdraws the publisher's entire document until corrected.  More
graceful degradation is probably possible, but I haven't thought about
it carefully yet.]]</t>
        </section>
        <section anchor="overlaps">
          <name>Resolving Prefixes</name>
          <t>A consumer resolves a document into, for each address family, a map
from prefix to the set of services that send from it and whether it is
exclusive, as follows.</t>
          <ol spacing="normal" type="1"><li>
              <t>Every prefix contributes equally, whether it appears in a named
prefix set or in a service's anonymous set (<xref target="schema"/>). A prefix is
associated with every service that references the set containing
it (with no service, if it appears only in an unreferenced
<tt>exclusive</tt> set), and is exclusive if that set is marked
<tt>exclusive</tt>. Prefixes of unreferenced sets not marked <tt>exclusive</tt>
do not contribute.</t>
            </li>
            <li>
              <t>After clearing host bits (<xref target="prefix-syntax"/>), identical prefixes are
merged: the associated services are the union of those from each
occurrence, and the prefix is exclusive if any occurrence is. Exact
duplicates therefore carry no additional meaning and <bcp14>SHOULD</bcp14> be
discarded.</t>
            </li>
            <li>
              <t>For a given address, the <em>governing prefix</em> is the longest resolved
prefix that contains it. The services and <tt>exclusive</tt> value that
apply to the address are those of the governing prefix alone; any
shorter prefix that also contains the address contributes nothing
to it. A publisher can thus list a broad allocation under one
service and carve a more specific prefix out of it for another
without enumerating the remainder.</t>
            </li>
          </ol>
          <t>An address is "within S's prefixes", for the purposes of <xref target="inference"/>,
if and only if S is among the services of its governing prefix.</t>
          <t>A consumer that observes a request's source as an IPv4-mapped IPv6
address (Section 2.5.5.2 of <xref target="RFC4291"/>, <tt>::ffff:0:0/96</tt>), as is common
on dual-stack hosts, <bcp14>MUST</bcp14> match it against <tt>ipv4_prefixes</tt> as the
embedded IPv4 address and <bcp14>MUST NOT</bcp14> match it against <tt>ipv6_prefixes</tt>.</t>
        </section>
      </section>
      <section anchor="example">
        <name>Example</name>
        <t>The following is a complete SAIL document for a publisher that
operates two crawlers from a dedicated egress pool, a fetcher that
additionally uses shared corporate egress, holds a block it does not
send from, and wishes to disown a name it has retired. The prefixes
shown are documentation prefixes <xref target="RFC5737"/> <xref target="RFC3849"/>; a real
document could not contain them (<xref target="prefix-validity"/>).</t>
        <sourcecode type="toml"><![CDATA[
schema        = "draft-kelley-webbotauth-sail-00"
modified      = 2026-09-02T14:00:00Z
expires_after = 604800   # 7 days

# Dedicated crawl egress. All of our own use of these prefixes is
# described in this document.
[[prefix_sets]]
name          = "crawl"
exclusive     = true
ipv4_prefixes = ["192.0.2.0/24"]
ipv6_prefixes = ["2001:db8:4000::/40"]

# Shared with staff and other internal systems; not exclusive.
[[prefix_sets]]
name          = "corp"
ipv4_prefixes = ["198.51.100.64/26"]

# Held but unused: nothing of ours sends from here.
[[prefix_sets]]
name          = "parked"
exclusive     = true
ipv4_prefixes = ["198.51.100.0/26"]

# ExampleBot sends only from the crawl pool.
[[services]]
name        = "ExampleBot"
exhaustive  = true
prefix_sets = ["crawl"]

# ExampleBot-News sends only from two addresses, listed directly.
[[services]]
name          = "ExampleBot-News"
exhaustive    = true
ipv4_prefixes = ["203.0.113.7", "203.0.113.8"]

# Example-Fetcher sends from the crawl pool and corporate egress.
[[services]]
name        = "Example-Fetcher"
exhaustive  = true
prefix_sets = ["crawl", "corp"]

# Retired name; we send nothing as OldExampleBot any more.
[[services]]
name       = "OldExampleBot"
exhaustive = true
]]></sourcecode>
        <t>Based on the rules in <xref target="inference"/>:</t>
        <ul spacing="normal">
          <li>
            <t>A request claiming <tt>ExampleBot</tt> from 192.0.2.10 is confirmed.</t>
          </li>
          <li>
            <t>One claiming <tt>ExampleBot</tt> from 198.51.100.70 is refuted, because
<tt>ExampleBot</tt> is exhaustive and that address is not within its
prefixes.</t>
          </li>
          <li>
            <t>A request claiming <tt>Example-Fetcher</tt> from 198.51.100.70 is
confirmed.</t>
          </li>
          <li>
            <t>A request from 192.0.2.10 claiming <tt>ExampleBot-News</tt> is refuted
twice over: <tt>ExampleBot-News</tt> is exhaustive and does not list that
address, and the governing prefix 192.0.2.0/24 is exclusive and
<tt>ExampleBot-News</tt> is not among its services.</t>
          </li>
          <li>
            <t>Every request claiming <tt>OldExampleBot</tt> is refuted.</t>
          </li>
          <li>
            <t>A request from 198.51.100.10 claiming any of these services is
refuted: <tt>parked</tt> is exclusive and no service references it.</t>
          </li>
          <li>
            <t>The document says nothing about a request from 192.0.2.10 that
claims no identity, or that claims some other operator's.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="validity">
      <name>Validity Period</name>
      <t>HTTP caching <xref target="RFC9111"/> governs when a consumer refetches the
<em>resource</em>; <tt>modified</tt> and the expiry keys describe the <em>data</em>. The
in-document keys exist because HTTP response metadata is not always
passed along faithfully.</t>
      <t>The <em>effective expiry</em> of a document is the earliest of:</t>
      <ul spacing="normal">
        <li>
          <t>the value of <tt>expires</tt>, if present;</t>
        </li>
        <li>
          <t>the time at which the holder received the document plus
<tt>expires_after</tt> seconds, if present; and</t>
        </li>
        <li>
          <t>the time at which the holder received the document plus 2592000
seconds (30 days), in every case.</t>
        </li>
      </ul>
      <t>The last term bounds how long any copy can be relied on regardless of
what the document says. A holder <bcp14>MUST NOT</bcp14> act on a document more than
30 days after receiving it without refreshing it, even if <tt>expires</tt> is
later, and publishers <bcp14>SHOULD NOT</bcp14> set <tt>expires</tt> further ahead than
that.  This limits how long a copy the publisher cannot recall (in a
cache, a mirror, or on disk) can continue to assert something the
publisher has since withdrawn (<xref target="false-assertions"/>).</t>
      <t>For <tt>expires_after</tt> each holder uses its own receipt time, from
whichever source it fetched, so the obligation applies per hop.  As a
consequence, publishers <bcp14>SHOULD</bcp14> prefer to provide <tt>expires</tt> rather than
<tt>expires_after</tt>; <tt>expires_after</tt> is provided for use in situations where
regularly refreshing the <tt>expires</tt> timestamp is difficult.  A SAIL
document using <tt>expires_after</tt> and whose receipt time is unknown <bcp14>MUST</bcp14> be
treated as expired.</t>
      <t>A consumer <bcp14>MUST NOT</bcp14> act on a document after its effective expiry,
regardless of HTTP cache state, except in cases where the origin is
unavailable.  Consumers using stale metadata in that situation <bcp14>SHOULD</bcp14>
exercise caution.  When a document expires, confirmations and
refutations (<xref target="inference"/>) alike lapse.</t>
      <t>A consumer <bcp14>MAY</bcp14> refresh more often than expiry or HTTP freshness
require, but is not obliged to. Publishers <bcp14>SHOULD</bcp14>, where feasible,
send HTTP freshness information (<tt>Cache-Control: max-age</tt> or
<tt>Expires</tt>) that agrees with the document's own expiry and in no case
extends beyond it.</t>
      <t>Consumers <bcp14>MUST NOT</bcp14> refresh a non-expired SAIL document more
frequently than every 1800 seconds, regardless of other caching
signals.</t>
    </section>
    <section anchor="http">
      <name>Identity Claims</name>
      <t>A service name is not by itself an identity.  Names are chosen freely
by each publisher, and nothing prevents two publishers, or a publisher
and an impostor, from using the same one. The identity that a SAIL
document speaks to, and that a consumer confirms or refutes, is the
pair (origin of the SAIL document, service name). Any trust or policy
a consumer attaches to a service <bcp14>MUST</bcp14> be attached to that pair, with
the origin established by means outside the request.</t>
      <t>In particular, a URL carried in a request (such as the <tt>User-Agent</tt>
comment used for discovery in <xref target="location"/>) tells a consumer only
where the sender says to look; it is not evidence of which origin is
authoritative for a name (<xref target="counterfeit-origin"/>).</t>
      <t>The inferences in <xref target="inference"/> apply to a request that <em>claims</em> one of
the publisher's services. For HTTP, that claim is carried in the
request's <tt>User-Agent</tt> header field (Section 10.1.5 of <xref target="RFC9110"/>);
a request claims service S when S's <tt>name</tt> appears there. Publishers
<bcp14>SHOULD</bcp14> choose each service's <tt>name</tt> to be the product token its client
sends, and for crawlers the token it answers to in robots.txt (Section
2.2.1 of <xref target="RFC9309"/>), so that one identifier serves throughout.</t>
      <t>[[EDNOTE: This is a little bit tricky because <tt>User-Agent</tt> headers
routinely contain lots of different things.  In practice, heuristic
libraries are used to interpret these values.  We should figure out if
there's something more definite we can say here.]]</t>
    </section>
    <section anchor="inference">
      <name>Permissible Inferences</name>
      <t>A SAIL document lets a consumer test a request's <em>claim</em> to be one of
the publisher's services (<xref target="http"/>) against the address the request
came from. It provides a basis for exactly the following conclusions,
and for no others.</t>
      <dl>
        <dt>Confirmation:</dt>
        <dd>
          <t>A request that claims service S and originates from an address
within S's prefixes is supported by the SAIL metadata. No assertion
(e.g. <tt>exhaustive</tt> or <tt>exclusive</tt>) is required beyond S being
listed.</t>
        </dd>
        <dt>Refutation by service (<tt>exhaustive</tt>):</dt>
        <dd>
          <t>If S is marked <tt>exhaustive</tt>, the publisher has stated that S sends
from nowhere else. A request claiming S from an address outside S's
prefixes is therefore not from the publisher, and the consumer <bcp14>MUST</bcp14>
treat the claim as refuted, <bcp14>MUST NOT</bcp14> extend to the request any
treatment it reserves for S, and <bcp14>MAY</bcp14> additionally reject the
request. Absent <tt>exhaustive</tt>, no such conclusion follows; the listed
prefixes are a subset.  A consumer <bcp14>MAY</bcp14> nonetheless count the absence
of a matching prefix as a weak signal against the claim, for example
as one input to its own risk scoring, provided it does not reject or
otherwise treat the request as refuted on that basis alone. A
service that has no prefixes (<xref target="schema"/>) and is marked <tt>exhaustive</tt>
is valid and means that the service currently sends from nowhere, so
every request claiming it is refuted. A publisher can use this to
retire a service name, or to disown one it has never used but sees
being impersonated.</t>
        </dd>
        <dt>Refutation by prefix (<tt>exclusive</tt>):</dt>
        <dd>
          <t>If the prefix governing an address (<xref target="overlaps"/>) is exclusive, the
publisher has stated that none of its other services send from
there. A request from that address claiming any of the publisher's
services <em>other than</em> those associated with that prefix (or claiming
any of them at all, if the prefix has no associated service) is
therefore not from the publisher.  The consumer <bcp14>MUST</bcp14> treat the claim as
refuted, <bcp14>MUST NOT</bcp14> extend to the request any treatment it reserves
for the claimed service, and <bcp14>MAY</bcp14> additionally reject the request.
Absent <tt>exclusive</tt>, no such conclusion follows.</t>
        </dd>
      </dl>
      <t>Used together the two assertions close the mapping in both directions:
<tt>exhaustive</tt> says "this service of ours, only from here"; <tt>exclusive</tt>
says "from here, only these services of ours". Where either refutation
permits a consumer to reject the request, this document does not
specify the form the rejection takes (see the note at the end of this
section).</t>
      <t>These conclusions serve permissive decisions as well as restrictive
ones. A consumer <bcp14>MAY</bcp14> use confirmation to allowlist a service — for
example to exempt requests that claim S and arrive from S's prefixes
from challenges, rate limits, or blocks applied to other automated
traffic — just as it uses the refutations to deny impostors. In
every case the decision is keyed on the pair of claimed identity and
source address, never on the address alone.</t>
      <t>A SAIL document provides no basis for any of the following, and a
consumer that acts as though it did is acting on its own evidence,
outside this format (<xref target="unverified-claims"/>):</t>
      <ul spacing="normal">
        <li>
          <t>that traffic from a listed prefix which makes no identity claim, or
claims some other operator's identity, is from the publisher — no key
in the format speaks to unidentified traffic, and <tt>exclusive</tt> concerns
only which of the publisher's <em>own</em> services use a prefix, not who
else does;</t>
        </li>
        <li>
          <t>that the publisher owns, is the registered holder of, or is the sole
occupant of any prefix it lists;</t>
        </li>
        <li>
          <t>anything about parties other than the publisher — two publishers may
list overlapping prefixes, each truthfully;</t>
        </li>
        <li>
          <t>either refutation above when the corresponding flag is false or
absent.</t>
        </li>
      </ul>
      <t>[[EDNOTE: Open issue: We should define response error codes and a way
for signaling why SAIL metadata caused the request to be refused.]]</t>
    </section>
    <section anchor="publisher">
      <name>Publisher Responsibilities</name>
      <t>The value of a SAIL document to consumers, and the safety of its
assertions, rest entirely on the publisher keeping it true.</t>
      <dl>
        <dt>Accuracy:</dt>
        <dd>
          <t>A publisher <bcp14>MUST NOT</bcp14> list prefixes it does not control, nor any
prefix from which its traffic cannot actually originate, nor any
prefix outside the space permitted by <xref target="prefix-validity"/>. It <bcp14>MUST
NOT</bcp14> set <tt>exhaustive</tt> or <tt>exclusive</tt> unless the assertion is true when
published and is expected to remain true until the document's
effective expiry (<xref target="validity"/>). In particular, a publisher <bcp14>SHOULD</bcp14>
add new egress addresses to the document, and allow the previously
published document's validity period to elapse, before an
<tt>exhaustive</tt> service begins sending from them. A false assertion
harms no third party; its cost falls on the publisher's own traffic
and on consumers that wanted it (<xref target="false-assertions"/>).</t>
        </dd>
        <dt>Completeness:</dt>
        <dd>
          <t>A publisher <bcp14>SHOULD</bcp14> set <tt>exhaustive</tt> on every service for which it is
true. A document without it lets consumers confirm genuine requests
but never refute impostors, which forgoes the format's main benefit.
A publisher <bcp14>MAY</bcp14> list, with no prefixes and <tt>exhaustive</tt> set, names it
has retired or has never used but sees impersonated (<xref target="inference"/>),
and <bcp14>MAY</bcp14> list, as an <tt>exclusive</tt> prefix set that no service
references, address space it holds but sends nothing from
(<xref target="schema"/>).</t>
        </dd>
        <dt>Shared address space:</dt>
        <dd>
          <t>Listing address space that the publisher shares with other parties —
a provider's general-purpose egress pool, for example — allows those
parties' traffic to be confirmed as the publisher's services, since
confirmation rests on source address alone. A publisher <bcp14>SHOULD</bcp14>
prefer dedicated egress for any service whose identity consumers are
expected to act on, and <bcp14>SHOULD NOT</bcp14> mark shared space <tt>exclusive</tt>:
although the assertion concerns only the publisher's own services
and may be literally true, it signals dedicated use and invites the
over-reading cautioned against in <xref target="unverified-claims"/>.</t>
        </dd>
        <dt>Stable origin:</dt>
        <dd>
          <t>Because consumers attach trust to the pair (origin, service name)
(<xref target="http"/>), a publisher <bcp14>SHOULD</bcp14> serve its SAIL document from one
well-known origin, link to it from its crawler documentation, and
keep the host in its clients' <tt>User-Agent</tt> comment stable, so that
consumers can associate the pair once and are not exposed to the
confusion described in <xref target="counterfeit-origin"/>.</t>
        </dd>
      </dl>
      <t>Other publisher requirements appear where they arise: location and
discovery in <xref target="location"/>, choice of service names in <xref target="http"/>,
canonical prefix form in <xref target="prefix-syntax"/>, HTTP freshness in
<xref target="validity"/>, and granularity of disclosure in <xref target="disclosure"/>.</t>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <section anchor="request-derived-fetch">
        <name>Fetching from Request-Derived Locations</name>
        <t>A consumer that derives the location of a SAIL document from the host
of the URL in a request's User-Agent comment (<xref target="location"/>) is acting
on attacker-controlled input.  Any client can name any host, turning
the consumer into a fetcher of the attacker's choosing. A consumer
doing so <bcp14>SHOULD NOT</bcp14> fetch inline with handling the triggering request,
<bcp14>MUST</bcp14> fetch only via "https" on port 443 at exactly the well-known
path, <bcp14>MUST</bcp14> rate-limit fetches, and <bcp14>SHOULD</bcp14> cache
negative results, so that a stream of requests naming fresh hosts
cannot be used for request amplification or to probe internal
services. Only the host of the URL is used: any port, path, or query
it carries is ignored, a URL whose scheme is not "http" or "https" is
ignored, and a consumer <bcp14>MUST NOT</bcp14> fetch when the host is an IP literal.</t>
      </section>
      <section anchor="unverified-claims">
        <name>Unverified Prefix Claims</name>
        <t>Nothing in a SAIL document establishes that the publisher controls,
holds, or solely occupies any address it lists. The format carries no
proof of holdership, and a careless or hostile publisher can list space
belonging to, or shared with, someone else. The inferences in
<xref target="inference"/> tolerate this because each is keyed on a claim of the
publisher's own identity: a wrong listing causes the publisher's names
to be honoured or refused in the wrong places and affects no one else.
Any decision keyed on the address alone — admitting, blocking, or
labelling traffic from a listed prefix regardless of what identity it
claims — lacks that protection and lands on whoever actually occupies
the space. A consumer that makes such a decision is acting on its own
evidence, outside this format, and should first establish the
publisher's control of the prefix by independent means (for example
forward-confirmed reverse DNS, or RPKI <xref target="RFC6480"/> or IRR origin
data), bearing in mind that control does not imply sole occupancy.</t>
      </section>
      <section anchor="false-assertions">
        <name>False Assertions</name>
        <t>A false <tt>exhaustive</tt> (the service in fact also sends from elsewhere)
or a false <tt>exclusive</tt> (another of the publisher's services in fact
also sends from the set) causes consumers to refuse genuine traffic
from the publisher the treatment it is due. The harm falls on the
publisher, which is the party that made the assertion; third parties
are unaffected because neither assertion concerns them. In-document
expiry (<xref target="validity"/>) bounds how long a once-true assertion can
outlive the deployment it described.</t>
      </section>
      <section anchor="disclosure">
        <name>Infrastructure Disclosure</name>
        <t>A SAIL document necessarily reveals something about the publisher's
egress.  Fine-grained prefix sets and service names can reveal
considerably more: data-centre footprint, provider relationships,
internal service boundaries, and the timing of deployments as entries
appear and disappear. Publishers should treat the document as a public
interface and choose its granularity accordingly.</t>
      </section>
      <section anchor="redirected">
        <name>Redirected Documents</name>
        <t>Because a document reached by redirect is attributed to the origin that
issued the redirect (<xref target="location"/>), an origin can point its well-known
URI at some other publisher's document. Doing so is self-limiting: the
redirecting origin thereby adopts that document's prefixes and
assertions as its own statement about its own service names, and can
cause only claims of (its own origin, name) to be confirmed or refuted
by them (<xref target="http"/>). It gains nothing it could not have said directly,
and the other publisher's names are unaffected.</t>
      </section>
      <section anchor="counterfeit-origin">
        <name>Counterfeit Documentation URLs</name>
        <t>A SAIL document speaks for the origin at whose well-known URI it was
requested (<xref target="location"/>), not for any product token that appears in it.
Nothing prevents an impostor from sending</t>
        <artwork><![CDATA[
User-Agent: AcmeBot/1.0 (+https://not-really-acme.example/bot.html)
]]></artwork>
        <t>and serving, at <tt>https://not-really-acme.example/.well-known/sail</tt>, a
well-formed document that lists the impostor's own addresses under a
service named <tt>AcmeBot</tt> with <tt>exhaustive = true</tt>. A consumer that
derives the document's location from the User-Agent comment
(<xref target="location"/>) and then checks the request against that document will find
the claim "confirmed" — correctly, in the narrow sense that the operator
of <tt>not-really-acme.example</tt> did send it — while learning nothing about
whether Acme did.</t>
        <t>This is why <xref target="http"/> defines the identity as the pair (origin, service
name) and why a request-supplied URL is not evidence of authority. A
consumer that has pinned (<tt>acme.example</tt>, <tt>AcmeBot</tt>) by means outside
the request is unaffected: the counterfeit document speaks only for
<tt>not-really-acme.example</tt>, and if Acme's genuine document marks
<tt>AcmeBot</tt> <tt>exhaustive</tt>, the impostor's request is refuted by it
regardless of what the counterfeit says, and the consumer <bcp14>SHOULD</bcp14> act
on that refutation. A consumer with no pinned origin for <tt>AcmeBot</tt>
learns from the counterfeit document only that some party at
<tt>not-really-acme.example</tt> vouches for the request, and <bcp14>MUST NOT</bcp14> carry
over to it any standing it associates with Acme.  <xref target="publisher"/>
advises publishers on keeping their origin stable so that this
confusion does not arise for their own names.</t>
        <t>[[EDNOTE: Should we discuss <tt>Forwarded</tt> and <tt>X-Forwarded-For</tt>
headers?]]</t>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="well-known-uri">
        <name>Well-Known URI</name>
        <t>IANA is requested to register the following in the "Well-Known URIs"
registry established by <xref target="RFC8615"/>:</t>
        <dl>
          <dt>URI suffix:</dt>
          <dd>
            <t>sail</t>
          </dd>
          <dt>Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Specification document(s):</dt>
          <dd>
            <t>this document, <xref target="location"/></t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Related information:</dt>
          <dd>
            <t>N/A</t>
          </dd>
        </dl>
      </section>
      <section anchor="media-type">
        <name>Media Type</name>
        <t>IANA is requested to register the following in the "Media Types"
registry, per the procedure in <xref target="RFC6838"/>:</t>
        <dl>
          <dt>Type name:</dt>
          <dd>
            <t>application</t>
          </dd>
          <dt>Subtype name:</dt>
          <dd>
            <t>sail+toml</t>
          </dd>
          <dt>Required parameters:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Optional parameters:</dt>
          <dd>
            <t>N/A. The format version is carried in-document by the <tt>schema</tt> key
(<xref target="schema"/>).</t>
          </dd>
          <dt>Encoding considerations:</dt>
          <dd>
            <t>8bit. A SAIL document is TOML, which is UTF-8 text
(<xref target="serialization"/>).</t>
          </dd>
          <dt>Security considerations:</dt>
          <dd>
            <t>see <xref target="security"/></t>
          </dd>
          <dt>Interoperability considerations:</dt>
          <dd>
            <t>Consumers accept a document that parses and validates regardless of
the Content-Type it was served with (<xref target="location"/>), to accommodate
publishers on static hosting that cannot set this type.</t>
          </dd>
          <dt>Published specification:</dt>
          <dd>
            <t>this document</t>
          </dd>
          <dt>Applications that use this media type:</dt>
          <dd>
            <t>operators of automated HTTP clients publishing their egress
addresses, and sites and intermediaries verifying the claimed
identity of automated requests</t>
          </dd>
          <dt>Fragment identifier considerations:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Additional information:</dt>
          <dd>
            <t>Deprecated alias names for this type: N/A.
Magic number(s): N/A.
File extension(s): N/A.
Macintosh file type code(s): N/A.</t>
          </dd>
          <dt>Person &amp; email address to contact for further information:</dt>
          <dd>
            <t>see Authors' Addresses</t>
          </dd>
          <dt>Intended usage:</dt>
          <dd>
            <t>COMMON</t>
          </dd>
          <dt>Restrictions on usage:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Author:</dt>
          <dd>
            <t>see Authors' Addresses</t>
          </dd>
          <dt>Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
        </dl>
      </section>
      <section anchor="structured-syntax-suffix">
        <name>Structured Syntax Suffix</name>
        <t>[[EDNOTE: <tt>+toml</tt> is not currently in the IANA "Structured Syntax
Suffixes" registry. Either this document registers it per Section 6 of
<xref target="RFC6838"/> (Name: TOML; +suffix: +toml; References: <xref target="TOML"/>;
encoding, fragment identifier, and security considerations as for TOML
text; Contact and Change controller: IETF), or the media type above
falls back to a bare <tt>application/sail</tt>. To be resolved before this
document progresses.]]</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC3629">
          <front>
            <title>UTF-8, a transformation format of ISO 10646</title>
            <author fullname="F. Yergeau" initials="F." surname="Yergeau"/>
            <date month="November" year="2003"/>
            <abstract>
              <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems. The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo. UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values. This memo obsoletes and replaces RFC 2279.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="63"/>
          <seriesInfo name="RFC" value="3629"/>
          <seriesInfo name="DOI" value="10.17487/RFC3629"/>
        </reference>
        <reference anchor="RFC4291">
          <front>
            <title>IP Version 6 Addressing Architecture</title>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <date month="February" year="2006"/>
            <abstract>
              <t>This specification defines the addressing architecture of the IP Version 6 (IPv6) protocol. The document includes the IPv6 addressing model, text representations of IPv6 addresses, definition of IPv6 unicast addresses, anycast addresses, and multicast addresses, and an IPv6 node's required addresses.</t>
              <t>This document obsoletes RFC 3513, "IP Version 6 Addressing Architecture". [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4291"/>
          <seriesInfo name="DOI" value="10.17487/RFC4291"/>
        </reference>
        <reference anchor="RFC4632">
          <front>
            <title>Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan</title>
            <author fullname="V. Fuller" initials="V." surname="Fuller"/>
            <author fullname="T. Li" initials="T." surname="Li"/>
            <date month="August" year="2006"/>
            <abstract>
              <t>This memo discusses the strategy for address assignment of the existing 32-bit IPv4 address space with a view toward conserving the address space and limiting the growth rate of global routing state. This document obsoletes the original Classless Inter-domain Routing (CIDR) spec in RFC 1519, with changes made both to clarify the concepts it introduced and, after more than twelve years, to update the Internet community on the results of deploying the technology described. 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="122"/>
          <seriesInfo name="RFC" value="4632"/>
          <seriesInfo name="DOI" value="10.17487/RFC4632"/>
        </reference>
        <reference anchor="RFC5952">
          <front>
            <title>A Recommendation for IPv6 Address Text Representation</title>
            <author fullname="S. Kawamura" initials="S." surname="Kawamura"/>
            <author fullname="M. Kawashima" initials="M." surname="Kawashima"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>As IPv6 deployment increases, there will be a dramatic increase in the need to use IPv6 addresses in text. While the IPv6 address architecture in Section 2.2 of RFC 4291 describes a flexible model for text representation of an IPv6 address, this flexibility has been causing problems for operators, system engineers, and users. This document defines a canonical textual representation format. It does not define a format for internal storage, such as within an application or database. It is expected that the canonical format will be followed by humans and systems when representing IPv6 addresses as text, but all implementations must accept and be able to handle any legitimate RFC 4291 format. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5952"/>
          <seriesInfo name="DOI" value="10.17487/RFC5952"/>
        </reference>
        <reference anchor="RFC6890">
          <front>
            <title>Special-Purpose IP Address Registries</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="L. Vegoda" initials="L." surname="Vegoda"/>
            <author fullname="R. Bonica" initials="R." role="editor" surname="Bonica"/>
            <author fullname="B. Haberman" initials="B." surname="Haberman"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>This memo reiterates the assignment of an IPv4 address block (192.0.0.0/24) to IANA. It also instructs IANA to restructure its IPv4 and IPv6 Special-Purpose Address Registries. Upon restructuring, the aforementioned registries will record all special-purpose address blocks, maintaining a common set of information regarding each address block.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="153"/>
          <seriesInfo name="RFC" value="6890"/>
          <seriesInfo name="DOI" value="10.17487/RFC6890"/>
        </reference>
        <reference anchor="IANA-IPV4-SP" target="https://www.iana.org/assignments/iana-ipv4-special-registry/">
          <front>
            <title>IANA IPv4 Special-Purpose Address Registry</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="IANA-IPV6-SP" target="https://www.iana.org/assignments/iana-ipv6-special-registry/">
          <front>
            <title>IANA IPv6 Special-Purpose Address Registry</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </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>
        <reference anchor="RFC8615">
          <front>
            <title>Well-Known Uniform Resource Identifiers (URIs)</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="May" year="2019"/>
            <abstract>
              <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
              <t>In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8615"/>
          <seriesInfo name="DOI" value="10.17487/RFC8615"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC9111">
          <front>
            <title>HTTP Caching</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document defines HTTP caches and the associated header fields that control cache behavior or indicate cacheable response messages.</t>
              <t>This document obsoletes RFC 7234.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="98"/>
          <seriesInfo name="RFC" value="9111"/>
          <seriesInfo name="DOI" value="10.17487/RFC9111"/>
        </reference>
        <reference anchor="RFC9309">
          <front>
            <title>Robots Exclusion Protocol</title>
            <author fullname="M. Koster" initials="M." surname="Koster"/>
            <author fullname="G. Illyes" initials="G." surname="Illyes"/>
            <author fullname="H. Zeller" initials="H." surname="Zeller"/>
            <author fullname="L. Sassman" initials="L." surname="Sassman"/>
            <date month="September" year="2022"/>
            <abstract>
              <t>This document specifies and extends the "Robots Exclusion Protocol" method originally defined by Martijn Koster in 1994 for service owners to control how content served by their services may be accessed, if at all, by automatic clients known as crawlers. Specifically, it adds definition language for the protocol, instructions for handling errors, and instructions for caching.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9309"/>
          <seriesInfo name="DOI" value="10.17487/RFC9309"/>
        </reference>
        <reference anchor="TOML" target="https://toml.io/en/v1.0.0">
          <front>
            <title>TOML: Tom's Obvious Minimal Language, v1.0.0</title>
            <author>
              <organization/>
            </author>
            <date year="2021"/>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC3056">
          <front>
            <title>Connection of IPv6 Domains via IPv4 Clouds</title>
            <author fullname="B. Carpenter" initials="B." surname="Carpenter"/>
            <author fullname="K. Moore" initials="K." surname="Moore"/>
            <date month="February" year="2001"/>
            <abstract>
              <t>This memo specifies an optional interim mechanism for IPv6 sites to communicate with each other over the IPv4 network without explicit tunnel setup, and for them to communicate with native IPv6 domains via relay routers. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3056"/>
          <seriesInfo name="DOI" value="10.17487/RFC3056"/>
        </reference>
        <reference anchor="RFC3339">
          <front>
            <title>Date and Time on the Internet: Timestamps</title>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <date month="July" year="2002"/>
            <abstract>
              <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3339"/>
          <seriesInfo name="DOI" value="10.17487/RFC3339"/>
        </reference>
        <reference anchor="RFC3849">
          <front>
            <title>IPv6 Address Prefix Reserved for Documentation</title>
            <author fullname="G. Huston" initials="G." surname="Huston"/>
            <author fullname="A. Lord" initials="A." surname="Lord"/>
            <author fullname="P. Smith" initials="P." surname="Smith"/>
            <date month="July" year="2004"/>
            <abstract>
              <t>To reduce the likelihood of conflict and confusion when relating documented examples to deployed systems, an IPv6 unicast address prefix is reserved for use in examples in RFCs, books, documentation, and the like. Since site-local and link-local unicast addresses have special meaning in IPv6, these addresses cannot be used in many example situations. The document describes the use of the IPv6 address prefix 2001:DB8::/32 as a reserved prefix for use in documentation. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3849"/>
          <seriesInfo name="DOI" value="10.17487/RFC3849"/>
        </reference>
        <reference anchor="RFC4380">
          <front>
            <title>Teredo: Tunneling IPv6 over UDP through Network Address Translations (NATs)</title>
            <author fullname="C. Huitema" initials="C." surname="Huitema"/>
            <date month="February" year="2006"/>
            <abstract>
              <t>We propose here a service that enables nodes located behind one or more IPv4 Network Address Translations (NATs) to obtain IPv6 connectivity by tunneling packets over UDP; we call this the Teredo service. Running the service requires the help of "Teredo servers" and "Teredo relays". The Teredo servers are stateless, and only have to manage a small fraction of the traffic between Teredo clients; the Teredo relays act as IPv6 routers between the Teredo service and the "native" IPv6 Internet. The relays can also provide interoperability with hosts using other transition mechanisms such as "6to4". [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4380"/>
          <seriesInfo name="DOI" value="10.17487/RFC4380"/>
        </reference>
        <reference anchor="RFC5737">
          <front>
            <title>IPv4 Address Blocks Reserved for Documentation</title>
            <author fullname="J. Arkko" initials="J." surname="Arkko"/>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="L. Vegoda" initials="L." surname="Vegoda"/>
            <date month="January" year="2010"/>
            <abstract>
              <t>Three IPv4 unicast address blocks are reserved for use in examples in specifications and other documents. This document describes the use of these blocks. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5737"/>
          <seriesInfo name="DOI" value="10.17487/RFC5737"/>
        </reference>
        <reference anchor="RFC5771">
          <front>
            <title>IANA Guidelines for IPv4 Multicast Address Assignments</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="L. Vegoda" initials="L." surname="Vegoda"/>
            <author fullname="D. Meyer" initials="D." surname="Meyer"/>
            <date month="March" year="2010"/>
            <abstract>
              <t>This document provides guidance for the Internet Assigned Numbers Authority (IANA) in assigning IPv4 multicast addresses. It obsoletes RFC 3171 and RFC 3138 and updates RFC 2780. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="51"/>
          <seriesInfo name="RFC" value="5771"/>
          <seriesInfo name="DOI" value="10.17487/RFC5771"/>
        </reference>
        <reference anchor="RFC6052">
          <front>
            <title>IPv6 Addressing of IPv4/IPv6 Translators</title>
            <author fullname="C. Bao" initials="C." surname="Bao"/>
            <author fullname="C. Huitema" initials="C." surname="Huitema"/>
            <author fullname="M. Bagnulo" initials="M." surname="Bagnulo"/>
            <author fullname="M. Boucadair" initials="M." surname="Boucadair"/>
            <author fullname="X. Li" initials="X." surname="Li"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>This document discusses the algorithmic translation of an IPv6 address to a corresponding IPv4 address, and vice versa, using only statically configured information. It defines a well-known prefix for use in algorithmic translations, while allowing organizations to also use network-specific prefixes when appropriate. Algorithmic translation is used in IPv4/IPv6 translators, as well as other types of proxies and gateways (e.g., for DNS) used in IPv4/IPv6 scenarios. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6052"/>
          <seriesInfo name="DOI" value="10.17487/RFC6052"/>
        </reference>
        <reference anchor="RFC6480">
          <front>
            <title>An Infrastructure to Support Secure Internet Routing</title>
            <author fullname="M. Lepinski" initials="M." surname="Lepinski"/>
            <author fullname="S. Kent" initials="S." surname="Kent"/>
            <date month="February" year="2012"/>
            <abstract>
              <t>This document describes an architecture for an infrastructure to support improved security of Internet routing. The foundation of this architecture is a Resource Public Key Infrastructure (RPKI) that represents the allocation hierarchy of IP address space and Autonomous System (AS) numbers; and a distributed repository system for storing and disseminating the data objects that comprise the RPKI, as well as other signed objects necessary for improved routing security. As an initial application of this architecture, the document describes how a legitimate holder of IP address space can explicitly and verifiably authorize one or more ASes to originate routes to that address space. Such verifiable authorizations could be used, for example, to more securely construct BGP route filters. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6480"/>
          <seriesInfo name="DOI" value="10.17487/RFC6480"/>
        </reference>
        <reference anchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
        <reference anchor="RFC7450">
          <front>
            <title>Automatic Multicast Tunneling</title>
            <author fullname="G. Bumgardner" initials="G." surname="Bumgardner"/>
            <date month="February" year="2015"/>
            <abstract>
              <t>This document describes Automatic Multicast Tunneling (AMT), a protocol for delivering multicast traffic from sources in a multicast-enabled network to receivers that lack multicast connectivity to the source network. The protocol uses UDP encapsulation and unicast replication to provide this functionality.</t>
              <t>The AMT protocol is specifically designed to support rapid deployment by requiring minimal changes to existing network infrastructure.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7450"/>
          <seriesInfo name="DOI" value="10.17487/RFC7450"/>
        </reference>
        <reference anchor="RFC7526">
          <front>
            <title>Deprecating the Anycast Prefix for 6to4 Relay Routers</title>
            <author fullname="O. Troan" initials="O." surname="Troan"/>
            <author fullname="B. Carpenter" initials="B." role="editor" surname="Carpenter"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>Experience with the 6to4 transition mechanism defined in RFC 3056 ("Connection of IPv6 Domains via IPv4 Clouds") has shown that the mechanism is unsuitable for widespread deployment and use in the Internet when used in its anycast mode. Therefore, this document requests that RFC 3068 ("An Anycast Prefix for 6to4 Relay Routers") and RFC 6732 ("6to4 Provider Managed Tunnels") be made obsolete and moved to Historic status. It recommends that future products should not support 6to4 anycast and that existing deployments should be reviewed. This complements the guidelines in RFC 6343.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="196"/>
          <seriesInfo name="RFC" value="7526"/>
          <seriesInfo name="DOI" value="10.17487/RFC7526"/>
        </reference>
        <reference anchor="RFC7534">
          <front>
            <title>AS112 Nameserver Operations</title>
            <author fullname="J. Abley" initials="J." surname="Abley"/>
            <author fullname="W. Sotomayor" initials="W." surname="Sotomayor"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>Many sites connected to the Internet make use of IPv4 addresses that are not globally unique. Examples are the addresses designated in RFC 1918 for private use within individual sites.</t>
              <t>Devices in such environments may occasionally originate Domain Name System (DNS) queries (so-called "reverse lookups") corresponding to those private-use addresses. Since the addresses concerned have only local significance, it is good practice for site administrators to ensure that such queries are answered locally. However, it is not uncommon for such queries to follow the normal delegation path in the public DNS instead of being answered within the site.</t>
              <t>It is not possible for public DNS servers to give useful answers to such queries. In addition, due to the wide deployment of private-use addresses and the continuing growth of the Internet, the volume of such queries is large and growing. The AS112 project aims to provide a distributed sink for such queries in order to reduce the load on the corresponding authoritative servers. The AS112 project is named after the Autonomous System Number (ASN) that was assigned to it.</t>
              <t>This document describes the steps required to install a new AS112 node and offers advice relating to such a node's operation.</t>
              <t>This document obsoletes RFC 6304.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7534"/>
          <seriesInfo name="DOI" value="10.17487/RFC7534"/>
        </reference>
        <reference anchor="RFC7535">
          <front>
            <title>AS112 Redirection Using DNAME</title>
            <author fullname="J. Abley" initials="J." surname="Abley"/>
            <author fullname="B. Dickson" initials="B." surname="Dickson"/>
            <author fullname="W. Kumari" initials="W." surname="Kumari"/>
            <author fullname="G. Michaelson" initials="G." surname="Michaelson"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>AS112 provides a mechanism for handling reverse lookups on IP addresses that are not unique (e.g., RFC 1918 addresses). This document describes modifications to the deployment and use of AS112 infrastructure that will allow zones to be added and dropped much more easily, using DNAME resource records.</t>
              <t>This approach makes it possible for any DNS zone administrator to sink traffic relating to parts of the global DNS namespace under their control to the AS112 infrastructure without coordination with the operators of AS112 infrastructure.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7535"/>
          <seriesInfo name="DOI" value="10.17487/RFC7535"/>
        </reference>
        <reference anchor="RFC8190">
          <front>
            <title>Updates to the Special-Purpose IP Address Registries</title>
            <author fullname="R. Bonica" initials="R." surname="Bonica"/>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Haberman" initials="B." surname="Haberman"/>
            <author fullname="L. Vegoda" initials="L." surname="Vegoda"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>This memo updates the IANA IPv4 and IPv6 Special-Purpose Address Registries to address issues raised by the definition of a "global" prefix. It also corrects several errors in registry entries to ensure the integrity of the IANA Special-Purpose Address Registries.</t>
              <t>This memo updates RFC 6890.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="153"/>
          <seriesInfo name="RFC" value="8190"/>
          <seriesInfo name="DOI" value="10.17487/RFC8190"/>
        </reference>
        <reference anchor="RFC9421">
          <front>
            <title>HTTP Message Signatures</title>
            <author fullname="A. Backman" initials="A." role="editor" surname="Backman"/>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Sporny" initials="M." surname="Sporny"/>
            <date month="February" year="2024"/>
            <abstract>
              <t>This document describes a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over components of an HTTP message. This mechanism supports use cases where the full HTTP message may not be known to the signer and where the message may be transformed (e.g., by intermediaries) before reaching the verifier. This document also describes a means for requesting that a signature be applied to a subsequent HTTP message in an ongoing HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9421"/>
          <seriesInfo name="DOI" value="10.17487/RFC9421"/>
        </reference>
        <reference anchor="CBCP" target="https://datatracker.ietf.org/doc/draft-illyes-aipref-cbcp/">
          <front>
            <title>Crawler Best Practices</title>
            <author>
              <organization/>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="WBA-ARCH" target="https://datatracker.ietf.org/doc/draft-meunier-web-bot-auth-architecture/">
          <front>
            <title>Web Bot Auth Architecture</title>
            <author>
              <organization/>
            </author>
            <date year="2026"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 964?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA7V9eXobR5bn/3GKaGqmTaoAiJsoiqylaS1tjbWNKLen2l9N
IQEkyCwmMtGZCdKwRv7qDj0HmLPMUeok837vvdgSoFxVPV1fqw0CmbG8ePsW
w+HQdEVX5md25/Li1esze1mvmmluL2azJm9b+2qWV/TA2r4u2m7HZJNJk9/q
wztmmnX5Vd2sz2zbzcysnlbZgoaaNdm8G97kZZmvh3f5ZFJ32aq7HrZZUQ73
9027miyKti3qqlsv6flXLz6+NDTqkcmaPKPRv88nNqtm9lXV5U2Vd/Zjk1Xt
sm5oCXd1c3PV1KulPvd13dkLGn3H3ORr+nF2Zqwd2mmT3ZV5w59pfv7vq/eW
xrnKW/4rv+IdLpt8Xvyo363avBlmV7Rne5s3xbygHdIyzW1erXIMvH1maxe0
NfqaNjuk2YbY7j8VeTcf1c0VgY3+rBtZ2HxVlgKmnW/z26Ky3zKcMIi19HRW
FT/xpGf2ouqum3pZTPm3XOYQsN4MMfo/6R8jgpExVd0s6M1bXuiHl88ODw6e
6sejk0P38fjw6YH7eHJ0qB8fP33sPp6cPt3Hx1cXby+Gr97/y/Hw8v0Zr8Bh
Cn4hYN4e28tlPi2ycvh+1SzrNqDNh/yK8KXRXXVZc5V3Z/a665bt2aNHd3d3
oyKrMgDnUUaIcFUtCOTtI3w5LJa3x8NWB250oEc8UICjAuuMV8l/zwgXz+w8
K9s8WvzJvYs/+c9a/Ml/ePF0CKcHT471PE5PDh7rx6cHB/vhozvGp0f7fLgf
3715ne6Vv7Ef68VXrX03uS3qVWvfFFWxyEr7mihhRag+sLcHo/3R/vbddvWi
HBX1o7x6JI9Fyz3cPzwwpqjmPbw72n984j4eHXkUPD32KHh06rbx+MnRE//x
idvRyX7AxmP/7Mnp0al+fHL82H375PHhif94dBw+OqCdHjz1QDs+5Cmeff2s
hxXPhF3Yr/O2s++bbNoV07zdDhPafdbRIzd5M3I0/oiY3yPhe0VZrvN2mBXg
LMPpZLp8lALthP78/uuL4cWHZ9+kq4i5ir1optdFl0+7VZP/XQtZ5KuqIH4W
M6VhFo26sS4zHA5tNmkxKDGUj9dFa2m8FRDczohPVnlrwfrt7pfkxN7AZmaR
dxkWaAU9LHHW23xm6VNm74htDW+q+q6y3314ZYkJ3l0X02vbXee2XuZN1tWN
refgmzW9S6998/HjezstC1CaXa4mZdFe01rwAnF1x8NtQb9iIhwefahmZt7U
i4HtagLcNZ3vXUGQ7e5qmgY8luiASDhv8Lk9o+F4eToCD9BajEC89Y5ez21O
FDpg2cTPVnV3XVRX/DUtONnAV200AAHkiiikoq86POhWPLIXtqXzkOGafJrT
Uy2tocn/bQVcnJZZscAUXW0nuakrnQcMy+90mlUQXTKIBzy9Ma2redEseF08
EvGdgVlVMwKFjBG2DyjRtPMVraboRvYjvbPIp9ckkNqFJUwoSBrTm7T12kzr
xbLMGS9IIcibNh8+f3uZCE2GEp/bG8IQ4jT2knhlBsRrR4Jqi2I2K3NjHkDS
N/VsNWVp+x9EvIwwvMqJ+xIYJmXO63Bfzop2WtMq+Yc+isrxl2V91xqHA+40
W0BHEc96noddTupVp/ibyaJorTWwzSwzAi0w8bpelTOb/0iCoRMw80HTQPQ2
kIkIluDGqDIi6YVltLVxO9+gGJreuq0wcsQHT8C9WNT0LS8CiIGzBUjvO07Z
NE1D+NIS0BvDA15nrVvpLEJJen6Wk2JGaJnTxoWwgGGFOwv6wyQI3GJCDE6H
hCMVMqRXFGKEcDZrGp5IYfCybkz+YwY0G/DPfC7RGu2WNVaCcGGlZvtK3elC
EZuB/+DL8XfQ/i6g/Y3tNWEPPTzFwZnr7Ja5QUcLGRAJJWO5yRbZmigUa8i6
Ll8sGVDFgvCnJUbT5QJTnZnO6J3HLCJoPt9JjolmNrA9x/GyEti8dghoHG3E
KBjtqxXY0DdrRWDAsJqWqxlzq9HViNimcUzo3F7Xd6Digc2JTjx/pe1f13Wr
fBW4106vSQ0FRRl+SCm9rPVDV8+y9UCpYZHdAHdlM/QoyUU9PIeyQUjMCuD/
quyAvELpnv6LwPFndrIGg6YBykhUgMJneTttigloryrXxlEUA8I/SPvIyzmd
YHFV4EyI/xKtCd7OCwe3wMEdGyACIlbPIF7m9RJzN6qst7xzzErbBkfFKdIc
XowYhxjE3CpS+iIqyXhzs7zMr3DcAzvPZ3xaM8Yyou8lbXlRN7kBIyj5nSoV
k3/58/+mNTGZ0/nh03TVEsjxF/2ML7qsveHnitYQprS0AsEWjC/iJOK3dAKX
kEiB8+U/glOQzCpuC1pqzrxwE0kZ3YgW6yuCSm5YSDa0loFtV2COhAvTKYhd
gMwE5BG8yVn2tDQerfq6uAL/BChsSfKvowNoY2oCBsmoOgQAeZuVKzD2kZMg
UIP6rC5ILpHjfK61o9wSBicrs/TlwPw9ss1++qSq5ufPtGmTLZe0wtl2mBE6
f/rklMHPnx3pAByspbAYuaMDa5fgAMTBs4oZBoESGyGiEGKi0yReZul46XtA
4IF9Vle3QDVgJ9b7HNKkkL8/PZiGXz8DXjlZlmsLA7q1O2++u/y4M5D/2rfv
+POHF//9u1cfXjzH58tvLl6/9h+MPnH5zbvvXj8Pn8Kbz969efPi7XN5mb61
yVdm583F73fkOHbevf/46t3bi9c7wpZjRYChwkeFA20IIgAlgdjRPrNy0u3/
7/85OCa4/oMawXQO8gesKvqDuHcls4FV6J/AXpxVnjUYhbgVqVXLoiNBPADu
kgwnBgglkID78AdA5g9n9tek3h8c/1a/wIaTLx3Mki8ZZpvfbLwsQNzy1ZZp
PDST73uQTtd78fvkbwf36Mtf/66E4BwenP7ut6avlUGtYLyb15DMjIUkadsz
Y947+XFmzliN9MyKKZ8ELDM5wUq2CyDXU6avR0rDkpHixY8Tb6KA50HxZ94D
dVvUB2OeqZaAJVxYKGJrp2N3TZFvmxKDEpNmVg45362XKrWgz9jYMmEZtKm1
e/JWnaBlFpxV2AIwlpSNImvWKgowj/IwDEb2gogOWv03dTnTtVdrXT0h5bKG
cgnHmayB+PdaPiU7GTh5jkVPuowOcXa2oTnN824KiUq6FVsoDE93crxwGBss
pm1QsdzTtOZrokfiZKQxwCQiZb5panmRNGoSFCP7gtawDkqlBS/OaHHY3DnR
JDHsYkaikGhyWWY42JrmvwoSVR5tFWXoKKA3sfB2qMUaSY4dt8rQ4SYUoJCm
zKQrajQzh8ucTQx7PDoaHcDEtMquDw72P3+GNZbiREv84KZlfZulLs8NI5Zl
Pb3dN2XpF9ZI+fxpzt1Pn5x29PnzHmSr4LDgpeifrZg0tGZi36lBoNob6z3p
AdHcAUEhurbZykHyOocojkdOnocInHPCo9A7zdopxA4KhJljR3pj6OnZml6l
nYk6iH0RFOGVoIMMetg1mxQ9OyCLNOD3TL2C5eJPpMWxa86ZBULfWM+zV88/
QFaL+OUzg/sSIhMIR+tRpVBfJUnaFKSHV4IAkXz49ElGHbZrUqB/xKnvkDJs
xTe8I1LILaCE2xtvzfJlWa9zaEHiHIK6AlKqvfDFiUAanxOIJgWdIEGy7Yh2
//LnfwdnEt+zWpkkyqB5eF1Wd0qWfMXeahJyZC6yNTnzoIL3IEacKbFeRejI
pxBpy87vETEzGntaNzTwsq5m6lgAoTt3eF2XA89fV6QvWBiZqpeM8x/JiGiJ
E4yVmtl9IHgesAHax2tnE6hbhOnquaOrTw88VUDhDxYHi1GWCcz1exxaVPCU
5gwjA7ykLNqhgi8zMi+hH9HGRDXceTQKbz1CIGIH/CXQtJmsdY8gYfEuJd4k
VTycqcA7FpTfI5H3888/G+eWU6t1RAvYmJUfZG3Lb4p3PMmdg2zVOoVuhwfc
URbHuso5Vuc0DRNeYns6I1EhWjU4kWOMLNUC6+eXiSJB5Z1MZsAwLnl8Mofk
tOQrR7tzWjm0oN4wUC+avGjbFQ7LMJ5khNbVsM2npArj8UrwE5z1nkPmxRsi
lG7V2sP9fbv77ts9XjbJcHgLhh/XZKaMWY8WnGFQ/gq+6bEB4pFmTpLkJ89l
abLNlXakQHfMkID6hCUOaEaApiuY1rNcOGZPpmJFPBismCVGwmLdaEaNv3rG
8rpVJYUlnOg6mwpHTDP0Pj0GCCa7JvBM4Rhhl9kHUV2y0pLyhpnJXmZd1bs9
ZgUJal2r+0uMK7IbZ6VoyyLwjvahF+86gXgIgTg63NMHWaNasNxr6kndtaPu
xy6Gq1FVVLQ/UGaZZ0AVmE54iDCAzSi/jIHN4QDNpg1pMUp17bkp5omsAbE2
8EIoVtP2MCS7gOgnVVoGHrAz3qw3slRyTQHDHzvvkhWxLUfUk9gkro36AyBJ
veQmUuOXCXaAH4xwsb5lOTqL4tjF742gV7IVOvJVld0SrrJVyrocC2QHE0/7
sA0r4wielnW+ldgcsMMA/KIjeyH5UcpPGVP06fgx5mg6Iztd/LKdygiVICj3
AZ0YKHPAI9WOzC+A2W4DszhWeiOwiCTkLqDQlGtnIxTdWbx3iB/gkz9mP6iO
s8H83KvqZSSeMlJmPQY0xpPw5zXQwgEieu6rnkwaWct2UZmD0CLAC3sjAeSd
dbzLFjROFAx9VcwDXgmYD6l7+FYtg6yS01LxRLwirF5k7MdUFLLQK8QmY7s2
eOWwQA5K+oC2epZH1tlJbcCysq5vvMbrF48Qh8RARG4qjGkdb4CBm64N8Tey
41GpZcEDQT8PekHRmG1+V5KwJUibcOc1r4VACzdLMAs1plGo5WbYRnQW2qdP
CPGJQh+ORBDTrW9Ww6UkHL2kT3xgZkPpGFiBOgGUBp6sYy67oY7wGSh8cJay
SXqOtsEeLP5j7DSFX+PPIR787YamMDbE4OvyVkRH0GCzCcnZRMKlRqhalEoL
Zir+QiiwDXu1aMFlTzXzEOojt8S+Yid3VhJGD5gzw+e8bIq6kSjT1arhQUep
PqdigvTpQgJuQMyiunGKcz+woZaouV4tsirEcPjweaPBvsBRbaDdgLFFqdVg
uVfs78SczPLyHwuhsY04EXR99q2pKuyjOYbDD4kHnuXxg6DPvpQI0qcHEhj6
rN6SVqWrC+Sojz5oKwN1qavpKlq+N3MQAt2mhlwnwRrrEQUQCZHFT58UDJ8/
c/BRgif4ossdhLCLB2QVR0uiTaQK1VaPfMbpBjQH/gOzL/KisNHNPwNtiFja
gXGSLq+gYLGg/u7jy+GpmHLITwG1vgJd0nEOifXn7M/NRX3BaKaezxE+9Q+0
sbtUxjk6glbDP3a0wVaGZL8LTKAcLvAvaJLI4fj8+VzCQfI1EdScbdCWJdU6
B60hr4NYIe20zYWm6DdEeOhLsObvc47HCgwyDRWl/uXW2+b/7fLdW88bYp7L
xAv1b+2YZ5tKas+yySzLCaiPD48PT09tTTKCdr37+ODQflt8vSexXPajW1GU
WqPkxytkVUlCI3R08w5qPLF08SOINgq1GESDcNskzytiTgviQyq+nRFc/OSk
A3GIJuVSUETarl5Cu+OhMuM18bqaKmfiNSLgk7Hha6PNMnhko214eGD0YFgh
FJxisZp8zdvkQID8jaOWjyJKf/jhxXOC44szqzATFJ8XDfG8K0JCQiR7ASlB
IqbCjy4CSBJnWHT5wkiYwu5O61UlbGTpbXZEL3wgCUEZb6mzotDtAYNNRTsT
ynDccvSHPzB9vtJlO3YD/71bPyEbsO6WUawv522brbGRmHIf6psPY4NO6LO4
qqDWFWxVYDcwdpu8WwfjB9jGKlfFOALXJPaKhIFXlQS8p6sya7bqr/qiCBTH
2YM6kJESvaqmzM4BJRqsVGuKH410rpeByYMlQtlQzmbAxq2kOIzzH6+zVQty
G9s7jsFPMxAm6RoruLZ9lJCN+yb/E6tXTGRzaKqbxmJiJtaBsp3hOmBkNkFb
5tgxSEZ1adBMwESeKpXkTtLA94mzk6NPRHIU7xHtUKUsiLWoVmxPYJuw8Omb
Us5yPoc0umXHUkE8ZTd2wO4NDJG2GmOOTBpvcF5nEimrp2TYNwwiyA0JB5PA
EDN2U1Jssc6FtNTtJfyHT9flBJgooFAvhyWhdonYFJHgd5UPL874K04nokOR
h1TGGEFjrFHj1btthzSJgXXxmD3vPk6oJVF4odWQMIfScK7qMGKMpCpDbhtr
d34hzxVm1YLYpniL+sKrt5jvoaP1nK6O95YwrJG5ccUxYtXMJ3lFXISpT1zv
LRbF7vhWo1ti7q1JVi1cSgDSxfh1H3rvaRg0hnM8EsQ/5BqtYasEqsaQORn9
RZQqS3LrZNbG30nUho0QTCX4Noj4wOw2A8svEGzmX4kXbkBozz6y+uMfRSrt
IopyxTyT5py1exrdSR1LaniAP4jaXpEkGutIY2ciZRNSmlZdzrEZImpxL4Y8
NC/48qz17j8vPSLCGdEI42SdYwljsAtorTEMTa6iZ65TNBMnB/uOkcPDLEZ2
h5MVtR7gLro4XN3kvDGwvlWl45LdayUkNMnXtaaoJR5DpyccPn5K/IoY1tE+
gXvd7vUtZbecKCGtRPJhIzqZDCgej4L9HDoi1C1xDC+b+raAOAO6+gMSXwHZ
YQsoUZATCF4wNrBKUMXHkhxZUc3pIArxo6TQs1VeMKYjgB1Yq4QogphPXCr9
3aUDEiFf8x5pDPBRxgoWsWvYpYJAOS2+oK9+ga8Shou4/2PLShmHT9jyAtcT
FH6BrBsJvcRpLIlT/sxw+vgYnv8xUYJzRDeBkZyzNkp7xm/gtMj5WFUFmW4B
zWzPR1VJUgGzY/jlND8EpMnzIR37j05hGQ/4i5PwhW6IkVW4bCvzhpzMMKtE
XPDoRhAGSSKTP6lLy/8a4KirCfEHuzshqNDKB7CuMrhCOX9aZk/MWo1SuNBL
WUqu/ZxUIQksP+RTFmu4jaLKRS90xBIA3FISZwPHVFSbkyJGfE1O3YIzeRXQ
5Yv61DMOH+FpcRSrurrImhum43inbvku29QrYwhIqKyz7zRYG83BcdtklodF
+1DnSGbg3EBGgvmqPANNQ83RYBUNU/m809RbkOTaOtWkjkDonR40CFjbRlpr
GHjhVRuooK2monoyDrA9T/xsIfe1EO7iQnftMmMRI4oUQmorEi51LoAOuQLh
mGCihAyQ4PHFGnGEcDNBWvgzBMkWyJ/79AnBjzJbthwBFWMfVrrqS3wApKFO
ikpCMgBHFN10bFz2iExRPZqAOuyjktW1wRkn60kouuO0uyR2FR2MOhXDsqAl
uef+NuZ0f9j6P4dXjcTTqvIbY2+Gl0NQThlGxHvH0f7CkpRdYbi+1eZIPqF2
AWbQE5Jkcfj4aRfiz+IVShKkJJBEg3j1//8Pj2U/HSa4Z10Ddm4RYjlf5si+
UO0IHhpaC2NOLbkqINW6Wi9QLhLAMbARgrJuxzkJhcezgTpYJWkNw4iKXpaM
k+Lt9cxanDuerQc77e/k64ouYTlx9r1L3w/SLTjKLOdrsAcNIQ8eJ6HnlP04
xPWroCc49xP6e830WnSO/7uliJpS99BR9LngX9Yz8gtDDAK8N/j0Eu8PDzpb
iS/LsdwhFsDIPIh+i/OdYRyYGWnpJfhv9JY/XrGoPYUI/7kt6hIiwXiaHXjF
SxUfOm62AYLiBk6Lt8RINmNnDo2/5Ix5AI9HoE/4OnhClwURb7G/Mc1biMRe
V/dJOnMMD3kt6YEwe4A38WHEIB4yVUfw8O5PI9SoeM8YTaxv6IVzZsddfZNX
43uykB6PTkaHog75HKQzEYkgIJZAKnUvLp+9egXrCukngMrF6/ffXAzs81f/
/OqjEynjfxjb8QP691/o33+lf/9I/76ifw/p36/o35D+jejf/6R/f6R/9H/8
//4X/ft5fM7DDDfMhYPD02hmOqHXeXVFuKcuL7iZhCt5HSk1qwFQ1ieweRPt
gY2O5RJmongQ2dej7jqFLUPVuSXBRz3+O18kQVZ8yjwcKRn8OomqbJkH0j73
9ignKoAr+ZHE7XiPr8KvXP2qAzPJxYskrkqyDKbQpyYSE8UWaN0uB1mlFTtr
rppssYBrrPUh+6VUvTD+sq6Uc8pcjNbsBVa1hH6c0NoWjMZpwQJHzNQ8C1JQ
YNLC2erD+H5Sxk3nQ4+zAsriJr8rWkgvhNtbWkKbD8lMzqu2AJfmRLyYRjPO
9lgsOSWQcXW4+c4Z5zQX6WuGBFBWwvPkE3LFCyWEKE9Ps3IQUJDVPP/XwAhu
cOlCeEbVIk66st/9an//+OAvf/53fHh8YXd3Lnbor51/3dkTVZPTD2dGs+zS
BKkvjHnixnxyYXZ3Mh7zp529kX2rudtw+s3Ud8L1uaUWDDATkaQF1WuaVZmb
K+Bm1aomVLFFNlflRNMhsigYxMi9crGilJkFHjjQEqhuKuZDgl42u8rgACEU
+SvwSfx+752E+vTAiabPwrcvxcJz3zvzzhjRIrVkjLbU03l4hX21J4SZlBcQ
94icOswaCaHYS8d8994kwTN2LbhaIznFebYoyjXJAIQ/gIIYh/16j3acP4Q4
CxfLqgQphe/t7hw8PRztj+jfo8NjpLQf7u8fnM0mp2dnj44Od8hCIf49pPcn
QGE3r1MCeHwhOkLu2plZvQRGtQrhjks0NM9NkmF3MK/dRRLlHnBt5xExbfni
BIcW4WPD1V9LVEV1HRKDN3MUIdm7BapGHDAH5q4oZ9OsmSk2SbBUUZKtATki
LzsmHAIj5O6dvOmfvBeWmgOqsMYk+ZZXTxKkkXRR+WZk3wc/k3rEkQSaJ76I
KXRbMBQ5b3XskzSYQJZ5z1neO/Of8qaW2Ca9ZjCrT2zg8BmxEDoNX5LlZDrq
6qEz9lxPxrueADpeAqcLTMRsU4/ddV2RiaUetmhJLi8F7GpKqrKWAHL+GZfK
sGKpuhnL46p2mXlh+1i26S2bw/vBZtlirzCVv3fI48swL9nY9mTv/TacDKDW
NbZE/A7aErIAFHeuynqiKUF02hwJWGGBbScWPLsUPVapWs7UDlE/Kevpjepf
O//shvrghtqBrCNU79aSLbQWB0qI27BbgiaEDBJH/ccG2Yxysn99owPOI487
JsAqaP66PgPJuyfy7i7i11HNGyMTOjOgpohOV3JeD/D3ubNRuRq05TItLviT
BP0B8nmWk2x6M+AkiCGyP0iaJiWEA844rqbX8A1xpATVpUTtLpVQ80z5RPbO
CfgLpGeFU7K7h4fH6A9ALPFYUf/JkwMYCfP5/j7xRY30o/0EfDhmGJOuY4H5
Ap42hniopd09O5vT/872z/YfPT3hBdF4T0+w6JC++Hj02FOdm0TYcIfmIRxP
HYYCWC49YQANCS14I1Ezh9jIr+qQXB5KQHwFIX0kAY9cb4e26gTRfEcxPMUB
4BpCsAtOUyw92p/Zk64+JkDu7x/S/g5ONKVh//EJwKimDefsE9CmWmdSwmDR
DSihQTidno6ePmXxJKOgSwKCfPYj0hawo12WWZBXCrOj031+Aoj/9uLjyXGS
2CRD754c01k8nTD8Xe0EujXwmxeXBweHdhfzHx2MDp6eyAKwcp7s+Ix+p1eP
T92ijh4T/tI4eOXgyePR8Wn0ysnh/tnx/Ox0n/EneumYZ8MzF2/goucZH9MI
T496Mx5FG0TPiJA4p0dRcL1ej3A3qJGlOLfvKDopDoQQYCWCMwSQAMCTTn02
ncofH29bcDboklNWOb8EGRTExSW0g/gcJgEpzIJfJbai0kgxM0SXA6tGg5MO
lQQ2ll0SKUE8S+YzHLiXh10NKik5EIeS1t5zze95SXfXoKxcFCczl3pab/XH
laVeu1Du4PNcETKSLORfTsX4nuREPvQbkOi8qs5tgWi/h3mvrNxwEjNz+jmR
ZcggYBODQ7g/BeFGAhOuYUi+SebcL4aT5jDgrMnu2g3Pt2RGROVwHGdnw4FT
CKx9g7JdMvmm+XxFtmZOH2de9SexNKEVrbmkC1EtWcMrTheovoLPt15dXXdS
220kDRwD0SvrvNPEkAckQ2DdYqeRTu59VwnKhHTCWKx3tWbMZaF/gZ4wF3Vl
S26h4fFFFVDpYpGWm4cYgMYqXY4M28nG+7Q5PUyC/HAmHLg6MVcCU8OrTtCg
cdk2LLmi3A/lfOBsCnEdDFx2UaSllgJOG7w8wZ2J39PCJa+fiJ+XhEBN0rpz
RRWpPa5hw+BcUlhExGVRrmh3nbLvfaPFPF682Lkbjn+8HcdlkBs0cPGhEBQo
5g7iSrwaNIrfHQWMYCKInLfsCAvRpl5VDxJj8WM4h5E5JDixke3VzaCubmcY
zmyP3KwcrbCEilewOjgGH4AdSjtFWkKaugxVKE2MV0BSjBHCF8Hl508xhRNn
x/vH6Wf1fPNGnX80zmmXfDs6uZCy6mJjPJcy9glvRrUk5JocjTgpKbPS58WX
oWFtD8WsD/7Wh84vhPxUhC+clypCZT5hRazWd2RJSmBjVBFL3XnCE6+atygZ
tHVoVdNfluj/51wUQ4O0JPBw6PGCOAzlVxWPHtOtRioxCJpgdGketuQkr6S6
DlZyUxPfRYMPdRhK9hZy57EKpT3m9RmS6jPxjDrx6AXfSlPRJAxY+TiEy1bO
KzBCyWURLzEkME0F2Rr5B1q7o8bJ5VchTrATUm+Wosm3onBGwYGB6fmxLtnu
4G4sXXx6vM524wC2pIPVE18hrbEuxF0l9CaORKjLwwU4C6vOJ8ZtZDfRjiNP
s+jHAztONOvxHnNm7tSyoCUbJC4T/x2SKUJKjFYssChnXxLzM3UebbhzJObF
+vysp9KnyYRbh4qMfPE4vZBcPxJuLqdZ1LiQK1Yk6c29NHYpIPAIyFSipbUt
+5C0OtY1ayJxPStExU7rIl3trAyRZLVzQbwriq4JQbh7hbw+8Nl8YrAWIRJt
vNgUXqa1h2iyU7RQvUXIcSCbI1XQO2bCDHzvQmlOkEUKiRCSZ75qkR09YfVW
27GJY4JUstJEaiKyJB3/z0TxW0RMPk1t+fnnny3SpF2mnf7vN7+cHBdS4/QN
dCAb7j8d7h9+PDg+I51/f/9fTZr/9Rt7sn9M9gA9/8A+4dQlzsL3h8XHqDAn
nlOWEp1uuHvAfTkeNMJmlkfohvLDD5FblfQuPg0b7ZQn3Qn6jX7fNavcJGRB
X/6Qug7/YBJk5we8L/FYDZ/9HSh79lJQixULosj5PMrx4+4CkFSa7HfOJ+hX
9NdsgjB2Z+tyT0ePyZjb3x+dHD86PJG1fAPfMBTWVQUn35lPTRFwJ53PpGXG
Ly5gybrI3wBGv659vyzlEl9rfoeqWT5jVrADlIz1OF7cWwwtJQyD5bjItF9M
nM6Fpcj59xYwfJvftZuruKuDY2MzKH//qnrr4tHTxX0BVof7ZBePDg6ORk/E
We3+PE1WPXypvC06vBRsam+lvO2vgqUb+28A6ECRkpf4Qdges8JzeyfB/ZAQ
1dp35Sw6fWh90BHuXxstLXklWZiui2u1v864J5FGflYle5FTqc/eyIvN3KZx
GH4s4HTEf7CvDdHQnQ/a45Dzt774psf3J/tRehTZjRKNRPg3fosVYb8j37Ew
UnLAIlTPIV3EWM8TR1/ejjvLe1bGnshoY2GkPgi2bZcxe5zmf3V33ImPVKWz
7Y/2NuqTvFi/dNlnTiF3BsOG8htz5tSO0Oj6tqm5iQPrd3HGFfYtRu0mFBO0
i3e6FVgetjG82KhxkszrlAx6HYsAJQx1vLGTe5IQkfA5ZK0iND9BzpGnMW4y
l917mApmzcOqat/njJ1DYszIb2298HlovtMal9P9i+oWCDAU9Yy0vSiQIOVI
mcQwXcIEemy5mCmn4CRlcaKsiSr6ECYWtOaH5zbKQ3HYEFJYQs6n2G5Ikn/I
+pYpquCO4ie5mNBRoCvC14oRn2DvsKS8g74ilU1sacGVRvTHXh11Sz7sZxM/
lFY2cQFPSD7mAlPmPvhOLEDEVl3+DXsdNMBzrk9xZV2S6a4J6r7FTxL4WRLi
bElw1xT1ZALNHvk7J3Ep5HC2a/57lJ5OPEo8McgqUFhxWQS6KllOPpSESwYr
6IMT4WFpcmEPNwdgz+gV2euS6TznngvpSoDyMFZ1uRslT+FJnx5qdJWaopJk
7DvLUzP05VsNDBTzJMPdcJ6U1oFuxDGxBnh7whvzVcMklKFiWhYCIvP16JKb
E0AiAEnz56TbDJaMAOgu50Zt6+cEQ7Bob/YYnnGRkSTgMUV3rhGdCePDYGmL
ShPg4EitYElwPt8wdJ4VU+JllDnm0Iy9knoWq7gRpXq4rVTScPpjSNJX67jo
QruIVjwhob2UK4TkErzreon6PqTJcOsKpF7At7R5Dkvf9UcLHKITiQo9TW8j
5xs765dIcD5RhUZgK21/Jfm9oUwiwiFsJczrq105X9030rTazCrYdtJapr8S
8dTCKxQDFWO5RFZXVxW891qXM9sSlNhOLUIb28rQ0GQxoknr2bzmjA04C23J
JYlTLsXxETXX14OIJ+mzETU1kC3TQHG7X9dhwgNbT5dUwLyZIu+J+Ll0rZG6
rGgjCryB03Ey31/RsOjVv3sp68TuixtwrCVzr15ZrKsL0ny/jivB0IxLZBJh
BwOFH0JKkNGyaokZqHiRkiO0fNqSBzFQoLkamoF4HdJhk7bGu+NnOIMhutE0
dXlmF9mPuBlhjJgqaUKCe3uqVJIhoAlKCTv9SohV98Fu7AqqAc7RSFdRn3LB
tWBbulE44Ej6guJdz78jHVJZM6k61yVV5MUB3AVeWqWopi1IRaUwCP4SY2JF
xHeVfiYqy6cHnP+Ek0typxT2k7XrLOsTZ7s1Ic9bztvi3DgQWAVY5+UaeRtp
o13fivRa9dFbjkLDXAw8SFvr+S+M5DuiK2rddmDVrJOFBlJSIYrqN4jLtO9s
1uMN2soF4aBgKwQ0VWxvpQYQKmY7UF2ENJqisbtKi3G3r5CnFgNtTxrhcGtY
LvOty2K6NtFkWddlU3WChWQ1nyckv87Eu03LxPySx2MiptBLoNDGqVGMUhVZ
JDJWNhQuu6Yj0nZJyrG90rvravaZA0fpcsZ1N+EOtnF77rWYi1ETQNJZyjLp
ZM0diwNbA21CjEGpoE2iH8u5JpuyWwdSo5LKC1GwAh/ciFI79yExJK5Mz5t5
XnRDeSOEwz2z2rRuQywhagEOuD8Uff6h5uKZ+4qDJDACXjOI7AA2gAOMu9Ay
HGnZ97WECT7tAzKJopQPSZ7eOzcbJSEOfy7FQIBLXwtTXDCOgz8x1/T11Nz+
Wmg1yhmXt6UiVEJPUT4tCzlpRmK09gIExSmrzsnMKrI+TL+2d7n0lyc4RGm6
bqvmEBZW2Cnn6O6FdjIAf5SdruECXB2zuoL2mQTVXVJyRhpi15WcMUa0WExv
1t6O2QJ9kjk0kvSgdo7hspY+B1A5gCxAC2SBo4F95fskDmiEVYOeK1NTFpMm
45wL8EQmFd61NvNVg1YrQ0j25q5zPreX4fINUpulzcZXbaR2suScSX9j9JRh
RZXoR5yPHCyXpDUJttP6PLqjk4LD9c36dW3rFEIy3AQnisQIETxUbPgFSkgS
szXcEYfQIrZEevgi1wK1V53TFTmCQCK8dV1upp3WWIdACK2VrX1c6WAc6lWa
/9mKkPWaixRQJ2S9QTbsZg75ThIh8eEyY+2WYBnnaKyWaO4QmpcyaP0tBciR
9jYAsni4LX1SCiQWgQtxaqo2qz4zpzZc0geJNIozldvkOT0ME7t97MYjc2Hb
Kw3PhSi4/33QM5TYkJE6AIbRpfhIadakvAhleaNtrrPLPtS8JCKgRZ43Faka
iubOaFta8zqfRaJ4w0/mW9AJh80iL2FU08HN3DU07Ps6ccSXBxA3Q+eS/gTV
LrX/ISok46CXJOX49DaRqPZiwpclpBCF2wnSM+CnSwKRfjtyfjEwOO0KdcFk
+bI5k2jNqEml90qJPa8qJSVMzaWv7DfxSe8uwC2XaWQ3VtS9hAwZamkDKSSE
CIOtliu50cFZoGQQo4O+NJbwtlwU2XPA4Voepj6uqQin5IHvz0n8zPSzEDmH
4wmcJkTB/aUXUVlYktHiskW2YLVU5kvalav7DldF+CkkWaIr11sq6CB1kJK+
3bdZdLE7cyPm78t0u5qxhTOo0moEcRb62CdDXvfLpj3LDFg9bc5XtjHxx7ds
bDIAl7oYcxIl/yhvJHiDIyLdjesA9xJP6kBx/n4e4WqmGWE61xIwrZbmPgt5
kzANpfjIV7/F7xuLl4AdJI5CavND62/4STKaRGdWoEAr0dG1QtsVY0ul/MC1
hNEXFPM2E3f2xP38S8yL3VM9zrWFbwVH9l/DubbzLTBnzdfgYcNaf5GXBdvA
RrzMYc+XWBlh33dt1HhZVL27SNLhOOtWFEckbUhdi7SckEAg30VlEkHIpsBO
Ut2qkdZBFF0E7HfOk3QuedH/OvBFcG2ajIKhdkb2exFjUjkQ/BlG8jlTTaje
ArBBGjyPkhw4V8epKnojVcjolJr13biZmuuuiCPXK0qMttNTo6XNY11HG24u
Vcu7zbl4R34ipEUus1b6QtsFWHGZVrvRo2wlw3oNyV+PpMlKDv6oRp6HO4qk
tSBf++Oa/8fGjmhRcsWRHFasLUmK5fSa5sml/ia5+QR9J5E24ivGuGe3eH9d
/0N/4Q3W9aeVSJUiuqYh9k7xDU5EN85z0HLzruBgFyeOgg9s7yZfhyAo2/t0
JI6qvGMBTjCXmeSibcK29U2fAMRybVPb9louEVhQcyOu57VcLdAyvdZZ3O0Y
+4Xpw7K4YGEYLlxw4tsZ0YPoRhyZD30cifGvKrnwJZ8NRSOWRt9D6/oo+Qu7
2JaKKreT64+iQJjTL1gf+FIsLAqdFe0WJioNC2qcSuj/4K7Zc34cJFCGZuW+
JqGfNggKQvTM9WtSh8Jmq4+H3CfF8wyQietgIU0A765ZM8BNeCD7cw+qZOk0
ivccRY0UnZO/nrvmfayR1KyCIX9zmUndYJS7XkiAl2fypT0SpnQXr0UN2jYh
mHrXcH+XWhGuymgZFEfQJLsBumalETtMu8EppT2rdgPYqCSdlxknqnEARPCA
9dXURH8nLQbbVX4WmcBSPh7CizmiM9yGTuuo7V0mSfmi2Upd+jo1uqT93Sxm
2b73HV++5GxlD6gPMl8xKcqCQfrpQeh8IL4jH3fs9zeXCwjFoRusljabo6Og
aEYmvn8QvFkT66W7VXpmN3m+VC0T6RngH0jszabrrW3AuJVx4ctiOHgUdPOp
+LUHUhrH1o+iVVT6A2bhKF1jZcRJOCU9WMRbhkgu2eICiFAQwcVcm+2NYOSr
GRfF+u4zhYm4S+cw8BBkqkH1GrAvUk1nIYF8Kc2vWXYvOLkPz0vtQuq4Byn/
QmMru+E37bf9lbQLkgF3Gz11nRqXNraVewhV3+T7avnCirCTKLLglgLYIlkA
ApgDLANXis/lfakepcJ7kqP5POvhTJfKYrkZkBBn7Jm4zhpJaSAW08zkOp5z
8fPVfDsC3Ll9dNXYh6IPK9csQUOJEHPHO+JrYjbeGxh9pkmtiNH0MV0dlZvo
UvUqF6Tvmt5vIao6aKjfS409bOr2Cit114i6tplOw9GmSiLjG7061OkUrsaZ
Zr6q/V1REFJfgdlC55UOhiNplZW0rAfhDnzFdPAIVLP+gdJjUh5fdHxUPkWW
75HbbjgmBmM/VjfQswrLkDTrmPzu7+uV9Nwa3NOMShcC49rFfNQa7F2jojmf
yShAgdfawzodfou45XxkjcyJMHSikSSgNqFinQv4qrcsDTW9PU19jrwiLD31
Ps5O70HSYb/qtVT1mWC+hHmLW3QgSQIhcUxEacNKNLqLJDql94psYzcan99I
33Z6pG/Iw6Zx0Mw8qkuVSswpJZg9iIs/JG+9uXHp3gL+CEFwrXNWqhqaMmmn
cIX2mH2W4cCieKjXR5L4lSuwmHD5PgyNWEa7Za2Mw6y3Ref7TkGdGbq2yxra
xomo64sDPlvUXeCftGat/ZVbX2uIIAIYh+M0nOfbuISIYC/4JziuTvBtMuPe
y3+YSUtNSFSY6iZxPeXd/WTMnfXKq7TUWbP5oE1oZlLr+x1rE/mv0hCIi+1x
RDGPW9pFLBJuI+cVicykSitX3IVPhFl164KXDuXFhdC7pWpbuA7XnwkVe6ip
Q1zKlrVNjA8loodK0ZIe6UtrsPl7Q5PosVKrcyHprCQPyqkNohYKTmXiphJb
rtYabKYYmFiJEKq6arIKKkQhaiGWV9YtAj48ZvibAYB29aT2cXQeminfmKqX
Wrb6C3cjsZyn6uX7BxFaw+e53DPsLqjCeyrQhnJJwmzIeUOfN4tx5HdXuhVu
Uehrvt5mA3IZtaYQVY6jyUTuAcs8kqUXxgXjFdU4TGs39IpqryXjynLF3nHk
vMl1GMBFae3C7WfZLbNi56ZJwgao/oxKWnSZbhI0IEb8E82M4ot/ZjWn1NQx
M+QhaDy+L1LaWbgKXHaAEfpeyU3VzlEkLR3kPeaEt0Xmb7xC5Qpu8Ts+PrLc
9D3EuQLpG1y2oe5BuEuG0sVJcz4Tfs3pRKbCLbtyJRFuTgq9KeHVgQtxIR13
1XtDEBTcQfYJFz8ZtQG0tYncjuTckLiM1Xe8ql2KmLurlPi0b7OIXp26m3BH
iKIHG9a4rBFmLoFgYGWXNCBf2mXChVDcQk26f7qcBZFqel+YZgswTHe4J4xC
l7S/8N6W28HCgXozVnikVps5USSVWd95waEFpyFnZlOmoBGN6DtMCCnRhIyN
dpsqozjfDgzrUHJDcl2yqQgHQaH9lqMrxdk9INkv6h5xsKtqQ6cDx+fcXTJ5
XSw9PIhbS5JQI1fylL2sSTEsWeybSY4ES2lXLosKhToDdvBwJ18ODW6kWpg0
1aKj/TQiQIrWx+PZ8RB74TL1KgrmmL4C4dQa3JYkJful6os83qYixjzeiMYm
TWdEfVanQFr+rzd1MqTYQmTTyO/RgBF532HiOEwUOFEiZ7CK2Z/HHk7+VDem
zAiqwj6+5GhL07k4m9erdGQOqI8NE9Gab1oX+qg7dTtzI6NMSnRAPGwpBAtf
scp4M37z2h1x8umdO7HHdMPjaLzH0W7xOA60IYlmO6CphCeHjTNWSvBeOgEG
ktCqWb5E8hBy4ji4txsHM+nzHcFrGJRyvd/aPn97yaj74f23r7SpxzHagXAP
mw8f3DUDcCHtwbzOtB2XJRap4S63KO9hQYeGNVOoc+BN18IyXrKFfREiIp8e
bFi+fAUDP5c2B40DlbgbDtq5Xt/kY5W+O+6ekcto3Tihd7S/XesLPY11eNMf
XpbQ7Tlqiiz6Wkmmf8GE2eLEFcEYBa4QOFkpk4DLIXEsBARwdrX6SKOrjReZ
+pw8HM8jlwUwmdNuKiFbzqEQBuN6RW2xUsQr8ioUPpitzqDNFHxWfYfsX4qG
zSr420t3E5XcquoA4BXgkd56Mm8yEsyrKe5Vt8+DWvjpQaQTboYRqhzXzBOO
clDvNoeNFHKFxEPcj6G6mlH7EndCkUbKvTrjzqHusuqgFEMQyPgch2BNFD09
kI10hnsMsuEUjZMhfepuSTTT+UyBhnv3MK6T4CGhFko4nY8KEOVsqeA77bRp
9jyCHEc8tBO1u8Ccq6CKVv5K8oGVxWy/rVCtsaksZp65qntJg+OC9UhVxxX0
6H10VSpdfwjX68U31UT31hnjDMgopdpd9xjdrcYctNN2Aj7kG90OaNg/7hzZ
+lKqOnMXW30FJ7UkvZWvOYp1SNw5lnVxGCZmBaHz9HOn9HIEtpyLsknfcSML
f92LdHrUVRIDwqXKs3rpYoGR9zJ2aUVOcInaqR8AyQRyNBPxyyX+gbjnLehK
4Mq6tAo+QpNd95Kzk9kI33DO+Kxe1wJzEfd8hG+afQXeW1XEheJ8w02bFaGQ
VfLO+Mg2YFr5nOjAiAR9ngWD1+OPqNOk2wKRtljEm8T/5Ru7t9/X7TJP8/59
3eF2Sok7xXmeYjmEZjRwZL7tZ3BH6dl60aO4nOXG4GD+ndmL6QIFgY8ORvt2
91fuhkCaHp4bUkeGGT3grqF8NKm70XW3KPekSNXzJo6MRjcM3vf+xm2DaArN
32kbqPTaLen2CHi63aiqGfz50rPD91bWG6rHuq2xWIXjjSLb8YZOZWIjO6IY
b297WbppPZue9axoWEmT3iTBMsr8iiiTllmWuPtpZkI+yo4nlB1WJrXLE/oS
qWZckVlBkg+9biM3rIvowgEwvuckxhyi5oQgwkWMTtIdlxESWnE6UlJ/aVwf
JIAVb0ZthhHsi25hDxcOhvi80xi2eOeMMAYpBloHJ8UQWZycc6D2aT8D3WWc
r5GnlirH8L4viwqCdHecbHoQEGNvIzs/uXCSy5AcnzjTmGrgE32yl2QYlKjc
B29tpzRnEIrTmzW1UEyC3nwmIO5mXmhEA9EyXQofF4OYLaZJf+3IzdmSzOlu
zCTN02UDhvhyQi0+PCIwVlYHbuVXbxiP4mL+bcBTV7QThKJSEiXej7S39Yor
NByb9fk/SW8X7qUk94KLa1YvUJOoG/c1VY+phiiw7JFNu+ubbHZbgMNEsXq2
LCUa3PGtArp38dBGlykWrYkcrM40YaeoW3sh3UFYLiVx+EtRle5y9kiu6CTH
L8WCcoXD4/8x9N/g09hotvzvJIzO/UM3nJR8ySRLvO/BcL/1F9kbfr7wWOUi
tZIkkSbAOM6zk47R7hjfZHJbC9HTk4PH3LCAr4jnmy3h1uer6c0zvs/Leudi
w2mSLz6+NOYyaejuEGdXbghJcr4GiUeZQwjdiuOWiIFnFbi0+QDdlx0LvuIM
T7x9dMFwecP3deIC9L8PJuH9CB4DLvUUg7me5jPvX+bOqkenDBa+dB2ogOVE
94TSPlaTLv7RXxyK3WhOOhEO/YrW9n4375baQ2zjt8QvpdfKpUUxodhcE+jH
Ehsca+ZPL1j4otJLOqcJxmG604n04Nq4xhXdtSODUq5k5c7Adls/fISEnPN9
cxa5GMP74D+jsoo2zGKQ80e2vRRK/sieQJ1n1tM9uHujmF+u4WXbq+OWe2Ke
yY1tQz5DUeys9q1l5tJX7Ti2x62uMGacy6t3GiRXcouTQxzAEveFAU5TEUze
+/yEpGXnBm2QthpQSm0CnxQdLqnFe053aFXG6i3HUh2rN1jregMXFCM2NLtw
5kHLwUAJDKJgHjOxG5T9s+twmzYn9CGnzKkMyeQ+7G9eNtmVoFCoO9o8WiaA
i9BGr0ftz0MfWzrXzJkG/qpFBgVTCq3oTXZFh1GtFpO8Adtx37+EssSZwaCf
+Jc32RQBjvaa1DnkZwIrkC4VnjHvOQnA/qNFMkwZynC0w91UVH9Xad9bPrD9
gpWf9ivX05kscMb5asbB2OyKz/LZuzdv3r0Fn9Dc05rDv+EBARSP9aWRv8Cf
0XrfeUpmrgv/JfP3WKS5O41VjwuZ/nHD652NkYyMRNzUtzAe2RdRf/HIlhfG
zO538FtXrncCOo14rd1FcewZM6Bz+ysVRZbXd24/+BSKM3/F9LnJlcGh0HUD
/xTTt3Mn6TjayKUtYG/nzC3YeUhvbQKWwbqnrUvy+AJpTvAz4pqbcHPf2jX6
37hYmoybj5pd5+4XkswkVkzitNcrvXATesNwOOSRoUFcTGGjlfmMt9uaT2dC
AvnsNzvs1txBEt675+/M/wOojVpvy58AAA==

-->

</rfc>
