<?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.6.39 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ssmith-oobi-01" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="OOBI">Out-Of-Band-Introduction (OOBI) Protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-ssmith-oobi-01"/>
    <author fullname="Samuel M. Smith">
      <organization>ProSapien LLC</organization>
      <address>
        <email>sam@prosapien.com</email>
      </address>
    </author>
    <date year="2023" month="July" day="27"/>
    <area>AREA</area>
    <workgroup>WG Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 177?>

<t>An Out-Of-Band Introduction (OOBI) provides a discovery mechanism that associates a given URI or URL with a given AID (Autonomic IDentifier) or SAID (Self-Addressing IDentifier) <xref target="KERI_ID"/><xref target="KERI"/><xref target="SAID_ID"/><xref target="OOBI_ID"/>. The URI provided by an OOBI acts as a service endpoint for the discovery of verifiable information about the AID or SAID. As such an OOBI itself is not trusted but must be verified. To clarify, any information obtained from the service endpoint provided in the OOBI must be verified by some other mechanism. An OOBI, however, enables any internet and web search infrastructure to act as an out-of-band infrastructure to discover information that is verified using an in-band mechanism or protocol. The primary in-band verification protocol is KERI <xref target="KERI_ID"/><xref target="KERI"/>. The OOBI protocol provides a web-based bootstrap and/or discovery mechanism for the KERI and the ACDC (Authentic Chained Data Container) protocols <xref target="KERI_ID"/><xref target="ACDC_ID"/><xref target="OOBI_ID"/>. Thus the security (or more correctly the lack of security) of an OOBI is out-of-band with respect to a KERI AID or an ACDC that uses KERI. To clarify, everything in KERI or that depends on KERI is end-verifiable, therefore it has no security dependency nor does it rely on security guarantees that may or may not be provided by web or internet infrastructure.  OOBIs provide a bootstrap that enables what we call Percolated Information Discovery (PID) which is based on Invasion Percolation Theory <xref target="IPT"/><xref target="DOMIP"/><xref target="PT"/><xref target="FPP"/>. This bootstrap may then be parlayed into a secure mechanism for accepting and updating data. The principal data acceptance and update policy is denoted BADA (Best-Available-Data-Acceptance).</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://example.com/LATEST"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ssmith-oobi/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        WG Working Group mailing list (<eref target="mailto:WG@example.com"/>),
        which is archived at <eref target="https://example.com/WG"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/USER/REPO"/>.</t>
    </note>
  </front>
  <middle>
    <?line 182?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Vacuous discovery of IP resources such as service endpoints associated with a KERI AID (Autonomic IDentifier) or SAID (Self-Addressing IDentifier) requires an Out-Of-Band Introduction (OOBI) to associate a given URL with a given AID (Autonomic IDentifier) or SAID (Self-Addressing IDentifier) <xref target="KERI_ID"/><xref target="KERI"/><xref target="SAID_ID"/><xref target="OOBI_ID"/><xref target="URL"/>. The principal reason for this requirement is that KERI AIDs are derived in a completely decentralized manner. The root-of-trust of a KERI AID is completely independent of internet and DNS addressing infrastructure. Thus an IP address or URL could be considered a type of Out-Of-Band Infrastructure (OOBI) for KERI.  In this context, an introduction is an association between a KERI AID and a URL that may include either an explicit IP address or a DNS name for its host <xref target="RFC3986"/><xref target="URL"/>. We call this a KERI OOBI (Out-Of-Band-Introduction) and is a special case of Out-Of-Band-Infrastructure (OOBI) with a shared acronym. For the sake of clarity, unless otherwise qualified, OOBI is used to mean this special case of an <em>introduction</em> and not the general case of <em>infrastructure</em>.</t>
      <t>Moreover, because IP infrastructure is not trusted by KERI, a KERI OOBI by itself is considered insecure with respect to KERI, and any OOBI must therefore be later verified using a KERI BADA (Best-Available-Data-Acceptance) mechanism. The principal use case for an OOBI is to jump-start the discovery of a service endpoint for a given AID. To reiterate, the OOBI by itself is not sufficient for discovery because the OOBI itself is insecure. The OOBI merely jump-starts authenticated discovery.</t>
      <t>Using IP and DNS infrastructure to introduce KERI AIDs which AIDs are then securely attributed allows KERI to leverage IP and DNS infrastructure for discovery. KERI does not, therefore, need its own dedicated discovery network, OOBIs with URLs will do.</t>
      <t>A secondary use case for OOBI's is to provide service endpoints or URIs for SAD (Self-Addressed Data) items identifier by their SAID (Self-Addressing IDentifier). A SAID is a content address derived from a cryptographic digest of the serialization of a data item. The SAID protocol provides a derivation process where the SAID is actually included in the SAD. This makes a SAID self-referential. Verification of a SAD resource obtained by querying a URI that includes the SAD's SAID is accomplished by simply re-deriving the SAID of the SAD in the reply and comparing it to the SAID in the URI. The <tt>sad</tt> URI scheme may be simply expressed as <tt>sad:said</tt> where <em>said</em> is replaced with the actual SAID of the referenced SAD item. The mime-type of the returned SAD is determined by the serialization type such as JSON or CBOR for example.</t>
    </section>
    <section anchor="basic-oobi">
      <name>Basic OOBI</name>
      <t>The simplest form of a KERI  OOBI is a namespaced string, a tuple, a mapping, a structured message, or a structured attachment that contains both a KERI AID and a URL (or URI). The OOBI associates the URL with the AID. By convention the URL typically include the word <tt>oobi</tt> in its path to indicate that it is to be used as an OOBI but this is not required. In tuple form this abstractly,</t>
      <sourcecode type="python"><![CDATA[
(url, aid)
]]></sourcecode>
      <t>and concretely,</t>
      <sourcecode type="python"><![CDATA[
("http://8.8.5.6:8080/oobi", "EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM")
]]></sourcecode>
      <t>An OOBI itself is not signed or otherwise authenticatable by KERI but may employ some other Out-Of-Band-Authentication (OOBA) mechanism i.e. non-KERI.</t>
      <t>The OOBI is intentionally simplistic to enable very low byte count introductions such as a may be conveyed by a QR code or Data matrix <xref target="QR"/><xref target="DM"/>.</t>
    </section>
    <section anchor="bada-best-available-data-acceptance-policy">
      <name>BADA (Best-Available-Data-Acceptance) Policy</name>
      <t>The recipient of an OOBI verifies the OOBI by authenticating the endpoint URL given by the OOBI with respect to an authorization signed by the controller of the AID given by the OOBI. This authorization follows the BADA (Best Available Data Acceptance) policy. The BADA policy provides monotonicity for updates to authentically signed data at rest. This follows best practices for zero-trust computing infrastructure for authentic data. The authorization is usually obtained as a resource in reply to a query to the OOBI URL. Specifically, the service endpoint at the URL responds with a resource that contains the supporting reply messages that are KERI authenticatable.</t>
      <section anchor="security-issues">
        <name>Security Issues</name>
        <t>KERI follows a "zero-trust" security model for authentic or securely attributable data. That means that data is signed both in motion and at rest. The primary attack against signed data is a replay attack. In a replay attack, an adversary obtains a copy of data with a verifiable signature and then replays it later. Without some other information, it is difficult for a host to detect that it is indeed a replay or malicious reuse of signed data and not the original use of that data.</t>
        <t>To elaborate, there are two primary types of attacks on authentic or authenticatable data-at-rest. The first is a replay attack. The second is a deletion attack. In a replay attack, an adversary keeps a copy of an authentic message or data together with its verifiable signature that has already been created and used by the controller of a KERI AID and then sometime later replays that same message with the signature. A verifier may thereby be fooled into believing that the replay is actually a new message and not a stale message. There are both interactive and non-interactive mitigations to replay attacks. Interactive mitigations use some type of nonce exchanged between updater and updatee. The nonce exchange introduces latency, scalability, and synchronization limitations. Non-interactive mitigations require a monotonic ordering mechanism. Typically monotonic ordering is based on logic rooted in a sequence number or date-time stamp. Because non-interactive mitigations are asynchronous, however, they do not have the latency and scalability limitations of interactive mitigations and are therefore preferred.</t>
        <t>The KEL (Key Event Log) of a KERI AID provides such a monotonic ordering mechanism as it employs both a sequence number and digest chaining. For authentic data directly anchored to or determined by a KEL, the relative KEL location determines the monotonic order. This ordering determination includes TEL (Transaction Event Logs) which are monotonically ordered with respect to anchoring seals in the associated KEL <xref target="PTEL_ID"/>.  For authentic data not directly anchored or included in a KEL, the relative key state (which is determined by the KEL) may be used in combination with a date-time stamp to ensure monotonic ordering. Finally, for any AID whose key state is fixed, a date-time stamp may be used with appropriate update logic to ensure monotonic ordering. The logic that ensures monotonic ordering is called BADA (Best Available Data Acceptance) and is described later in this section.</t>
        <t>A deletion attack is related to a replay attack. Once erased or deleted, a verifier may not be able to detect a replay attack of the deleted data because it has lost a record of the prior play to compare against. To elaborate, once erased, any stale authenticated data acting as authorization may be replayed without detection. This exposes a problem with the GPDR right-to-erasure, which if naively implemented as total erasure, exposes the data controller to a replay attack of erased data.</t>
        <t>The primary mitigation mechanism for deletion attacks is to maintain redundant copies of the signed authentic data. As long as one of the redundant copies has not been deleted then a comparison between the hosts of the redundant copies will expose the deletion attack given there is at least one undeleted copy. The monotonicity of the data is preserved in each copy. The host need merely compare copies. Only the current data item needs to be kept in full in order to support the use of that data.  For protection against replay attacks using stale data, only copies of the digest or signature of the data need to be kept. To reiterate, a replay attack can be detected by comparing the digest or signature (which is a type of digest) of any undeleted copy with the presented data.</t>
        <t>To summarize, authentic data at rest consists of the data item and signature(s). The two primary attacks are replay and deletion. Replay attack mitigation relies on replay monotonicity in data updates. Deletion attack mitigation relies on the redundancy of monotonic data.</t>
      </section>
      <section anchor="bada-rules">
        <name>BADA Rules</name>
        <t>The BADA (Best-Available-Data-Acceptance) rules apply to any data item stored in a database record whose value is used for some defined purpose. Updates are sourced from the controller of an associated KERI AID. The primary purpose of BADA policy is to enforce monotonicity of the updates with respect to the key state of that associated AID. This primarily protects against replay attacks on the database record. For example, a rollback to an earlier value via replay of an earlier update. An <em>Update</em> or change to the database record is <em>accepted</em> when it follows the BADA rules (policy) for acceptance. The BADA rules ensure the monotonicity of all updates.</t>
        <t>There are two different mechanisms for the controller of an AID to authorize updates to a given database record. The first is by including a reference to the update in the KEL of the authorizing AID. All entries in a KEL must be signed by the current signing key-pair(s) given by the key-state for that KEL. The second is by signing a date-time stamped update. In this case, the update either includes a reference to the key-state in the authorizing AID's KEL from which the signing key-pair(s) needed to verify the signature is obtained or the AID is ephemeral with a fixed key-state (has a non-transferable derivation code). The rules differ for each of the two mechanisms.</t>
        <section anchor="kel-anchored-updates">
          <name>KEL Anchored Updates</name>
          <t>The <em>Update</em> to some record is included in or anchored via a seal to the AID’s key-state in its KEL. In either case, the <em>Update</em> is referenced in an event in the KEL of the AID. By virtue of the reference, the Controller of that KEL's AID is authorizing that Update. The record may have a <em>Prior</em> value that is being updated or the <em>Update</em> serves to create the initial value of the record. <em>Prior</em> means the prior record.</t>
          <artwork><![CDATA[
Rules for the acceptance of the *Update*:  (in order of priority)
  Confirm *Update* is anchored or included in AID's KEL.

  WHEN Update is anchored in AID's KEL AND...
    IF no *Prior* THEN accept. (always)
    IF *Prior* AND...
      *Update’s* anchor appears later in KEL than the Prior’s anchor THEN accept.
  Otherwise, do not accept.
]]></artwork>
        </section>
        <section anchor="signed-not-anchored-updates">
          <name>Signed (Not Anchored) Updates</name>
          <t>The <em>Update</em> to some record is signed by the controller of the AID, but the <em>Update</em> itself is NOT included in or anchored to the AID’s KEL. The record may have a <em>Prior</em> value that is being updated or the <em>Update</em> serves to create the initial value of the record. <em>Prior</em> means the prior record. All date-times are relative to the controller's date-time, NOT the database host's date-time.
There are two cases. These are as follows.</t>
          <ol spacing="normal" type="1"><li>Ephemeral AID whose key-state is fixed (no KEL needed)</li>
            <li>Persistent AID whose key-state is provided by KEL</li>
          </ol>
          <artwork><![CDATA[
Rules for the acceptance of the *Update*:  (in order of priority)
  Confirm signature on the *Update* verifies against indicated key-state under which signature was made.

  WHEN signature verifies AND...
    IF no *Prior* THEN accept (always).
    IF *Prior* THEN ...
      Compare the *Update’s* verified signature key-state against the *Prior's* verified signature key-state.
      IF the *Update’s* key-state appears later in KEL than the *Prior's* key-state THEN accept.
      IF both the *Update’s* and the *Prior's* key-states appear at the same location in KEL AND...
              *Update’s* date-time is later than the *Prior's* date-time THEN accept.
  Otherwise, do not accept.
]]></artwork>
        </section>
      </section>
      <section anchor="run-off-the-crud">
        <name>RUN off the CRUD</name>
        <t>In the conventional client-server database architecture, the database server is responsible for creating records on the behalf of clients and assigning unique identifiers for each record. The server returns to the client the unique record identifier when it creates a record. The server is the source of truth.  But in a zero-trust (end-verifiable) decentralized peer-to-peer architecture, there is no client/server. Every host is a Peer. Each Peer is the source of truth for its own data. Therefore each Peer is responsible for managing its own records. Each Peer <bcp14>MUST</bcp14> be able to create unique identifiers for its own data. This inverts the architecture because each Peer creates a unique identifier for each of its own data items and sends that identifier with the data item to the other Peers. Each Peer stores data on the behalf of the other Peers. This inverted architecture enables consistent authentic data update policies that work asynchronously across multiple Peers and are replay and deletion attack resistant. Each Peer has an end-verifiable (via signature) monotonically updated view of the data records sourced from the other Peers.</t>
        <t>The acronym for the traditional client-server database update policy is CRUD (Create, Read, Update, Delete). The acronym for the new peer-to-peer end-verifiable monotonic update policy is RUN (Read, Update, Nullify). As described above, because the source of truth for each data item is a decentralized controller Peer, a given database hosted by any Peer does not <em>create</em> records in the traditional sense of a server creating records for a client. The hosting Peer merely stores a copy of an Update to records sent out by the source Peer (controller). Thus there is no Create action only Update action. When a Peer has not yet seen any version of a record, then its copy is vacuous and is replaced by the first Update its sees.  To clarify, a source Peer updates other Peers by sending out the latest copy or version of its own record. The original copy or version is always created by the source Peer.</t>
        <t>In order to ensure that the hosting Peers are resistant to replay and deletion attacks, they apply non-interactive monotonic update logic to any updates they receive from the source Peer. This means that a hosting Peer <bcp14>MUST NOT</bcp14> ever delete a record storing the latest version of an Update. Thus there is no Delete. Instead of Delete, Peers Nullify. A Nullify is a special type of Update that indicates that the data in the record is no longer valid without erasing the record that includes a reference to the latest monotonic determining anchor and/or date-time. There are two ways to indicate Nullification. The first is to assign a <tt>null</tt> value to the record. This works for single field records. The second is to assign a Boolean logic flag field that indicates the record has been Nullified. This works for multi-field records.</t>
      </section>
      <section anchor="oobi-keri-endpoint-authorization-okea">
        <name>OOBI KERI Endpoint Authorization (OKEA)</name>
        <t>An important use case for BADA-RUN is to process OOBIs that provide service endpoint discovery of the AIDS of KERI components. These components include but are not limited to, Controllers, Agents, Backers (Witness or Registrar), Watchers, Jurors, Judges, and Forwarders. An endpoint is a URL that may include an IP Scheme, Host, Port, and Path. The model for securely managing endpoint data starts with a Principal Controller of an AID. A Principal Controller authorizes some other component to act as a Player in a Role. Typically a Role serves some function needed by the Principal Controller to support its AID and may be reached at a service endpoint URL for that Role. Each component in turn is the Controller of its own AID. Each component AID is a Player that may provide or act in a Role on behalf of the Principal Controller by providing services at the associated service endpoint for its associated Role.</t>
        <t>The authorization model uses a zero-trust BADA-RUN policy to Update authorizations. A Principal Controller authorizes a Player by signing a Role authorization message that authorizes the Player's AID to act in a role. A Player authorizes its endpoint URL by signing an endpoint authorization message that authorizes a URL (location) with a scheme. Any Peer may keep an updated copy of the latest service endpoint URL(s) provided by a Player in a Role for a given Principal AID by following the BADA-RUN policy on updates sent to its database of these authorizations. The authorizations are issued in the context of the KERI key-state for the Principal and Player AIDs.</t>
        <t>Some components (Players in Roles) are implicitly authorized by the Principal controller by being explicitly designated in the KEL of the Principal, i.e. there is no explicit authorization message of the Player/Role. The authorization is implied by the KEL entry. For example, a Backer designation of a Witness or Registrar AID implicitly authorizes that AID to act as a Player in the Role of Witness or Registrar. An associated explicit endpoint authorization message signed by that Witness or Backer is still needed to provide the URL (location and scheme) of the actual service endpoint for that Player.</t>
        <t>The combination of KERI and the BADA-RUN policy enables any Controller to manage data in a zero-trust architecture at the database level. Any controller may promulgate verifiably authentic information with replay and deletion attack resistance. The authentic information may be merely source data or may be authorizations to enable some other function. The hard work of determining the associated key-state is provided by KERI. KERI makes the establishment of authenticity straightforward. The BADA-Run policy protects against replay and deletion attacks given authentic data.</t>
        <t>This approach follows the many thin layers approach of the Hourglass protocol model.  BADA-RUN is a thin layer on top of KERI authenticity. OOBIs are a thin discovery layer that sits on top of a thin authorization layer (leveraging reply messages and BADA-RUN logic) on top of KERI.</t>
        <t>This also follows the design ethos of KERI of minimally sufficient means. OOBIs leverage the existing Internet discovery mechanisms but without needing to trust the Internet security model (or the lack of one). End-verifiability in KERI provides safety to any OOBI discovery. The Internet's discovery mechanism, DNS/CA, is out-of-band with respect to KERI security guarantees. Thus OOBIs may safely use DNS/CA, web search engines, social media, email, and messaging as discovery mechanisms. The worst case is the OOBI fails to result in a successful discovery and some other OOBI must be used.</t>
        <t>Typically, the query of a ReST endpoint given by the OOBI URL could return as proof any associated authorizing reply message(s) as well as any associated KELs.</t>
        <section anchor="authorized-endpoint-disclosure-example">
          <name>Authorized Endpoint Disclosure Example</name>
          <t>This section provides an example of using OKEA (OOBI KERI Endpoint Authorization) with BADA-RUN for endpoint disclosure.</t>
          <t>The KERI protocol defines a generic <tt>reply</tt> message for updating information using the BADA-RUN policy. Each <tt>reply</tt> message includes a route, <tt>r</tt>, field that indicates both the type of the payload and the handler that should process the message. The route, <tt>r</tt>, field value is a slash, <tt>/</tt> delimited pathname string.  The Principal Controller AID is indicated by the CID (Controller ID) or <tt>cid</tt> field. The endpoint component Player is indicated the EID (Endpoint Controller ID) or <tt>eid</tt> field. There are two different authorization cases. In one case, a CID authorizes an EID in a Role. In the other case, an EID authorizes a Loc (URL location) for a scheme. There are two routes for each type of authorization. One route updates the authorization and the other nullifies the authorization. These are summarized as follows,</t>
          <ul spacing="normal">
            <li>Datetime stamped BADA authorization Reply message by CID of EID in Role (Update)</li>
            <li>Datetime stamped BADA deauthorization by CID of EID in Role (Nullify)</li>
            <li>Datetime stamped BADA authorization by EID of  URL for scheme (Update).</li>
            <li>Datetime stamped BADA deauthorization by EID of URL for scheme  (Nullify)</li>
          </ul>
          <t>A party interested in discovering the service endpoint for a given Controller AID initiates the discovery by providing an OOBI. A successful discovery will result in the return of signed <tt>reply</tt> messages that provide verifiable proof that the service endpoint (either directly provided in the OOBI, or indirectly provided via forwarding) is an authorized endpoint for that AID.</t>
          <t>To summarize, upon acceptance of an OOBI the recipient queries the provided URL for proof that the URL is an authorized endpoint for the given AID. The proof format may depend on the actual role of the endpoint. A current witness for an AID is designated in the current key state's latest establishment event in the AID's KEL. Therefore merely replying with the Key State or KEL may serve as proof for a witness introduced by an OOBI. The actual URL may be authorized by an attendant signed <tt>/loc/scheme</tt> reply message with the URL.</t>
          <t>Other roles that are not explicitly part of key-state (i.e. are not designated in KEL establishment events) must be authorized by explicit signed reply messages. Typically these will be a signed <tt>/end/role/</tt> reply message. The actual URL may be authorized by an attendant signed <tt>/loc/scheme</tt> reply message with the URL.</t>
          <t>Example reply messages.</t>
          <section anchor="player-eid-in-role-by-cid-update">
            <name>Player EID in Role by CID Update</name>
            <sourcecode type="json"><![CDATA[
{
  "v": "KERI10JSON000113_",
  "t": "rpy",
  "d": "Ekd189yFsX1eLhQ2NffI6AaF8ZxKXyej_jfn4wMNJq-w",
  "dt": "2021-01-01T00:00:00.000000+00:00",
  "r": "/end/role/add",
  "a":
  {
    "cid": "EhlsdBaCvxnW0z3m2OXxStaZkG76g0zC_vtPbPPglDK0",
    "role": "witness",
    "eid": "BFUOWBaJz-sB_6b-_u_P9W8hgBQ8Su9mAtN9cY2sVGiY"
  }
}
]]></sourcecode>
          </section>
          <section anchor="player-eid-in-role-by-cid-nullify">
            <name>Player EID in Role by CID Nullify</name>
            <sourcecode type="json"><![CDATA[
{
  "v": "KERI10JSON000113_",
  "t": "rpy",
  "d": "EZ-i0d8JZAoTNZH3ULaU6JR2nmwyvYAfSVPzhzS6b5CM",
  "dt": "2021-01-01T00:00:00.000000+00:00",
  "r": "/end/role/cut",
  "a":
  {
    "cid": "EhlsdBaCvxnW0z3m2OXxStaZkG76g0zC_vtPbPPglDK0",
    "role": "witness",
    "eid": "BFUOWBaJz-sB_6b-_u_P9W8hgBQ8Su9mAtN9cY2sVGiY"
  }
}
]]></sourcecode>
          </section>
          <section anchor="endpoint-location-with-scheme-by-eid-update">
            <name>Endpoint Location with Scheme by EID Update</name>
            <sourcecode type="json"><![CDATA[
{
  "v": "KERI10JSON000108_",
  "t": "rpy",
  "d": "EbAwspDQjS-Ve-tzDtAuzx4K8uhh-0AyXWZrSKm64PFQ",
  "dt": "2021-01-01T00:00:00.000000+00:00",
  "r": "/loc/scheme",
  "a":
  {
    "eid": "BFUOWBaJz-sB_6b-_u_P9W8hgBQ8Su9mAtN9cY2sVGiY",
    "scheme": "http",
    "url": "http://localhost:8080/controller/tam"
  }
}

]]></sourcecode>
          </section>
          <section anchor="endpoint-location-with-scheme-by-eid-nullify">
            <name>Endpoint Location with Scheme by EID Nullify</name>
            <t>To Nullify set the <tt>url</tt> to the empty string <tt>""</tt>.</t>
            <sourcecode type="json"><![CDATA[
{
  "v": "KERI10JSON000108_",
  "t": "rpy",
  "d": "EbAwspDQjS-Ve-tzDtAuzx4K8uhh-0AyXWZrSKm64PFQ",
  "dt": "2021-01-01T00:00:00.000000+00:00",
  "r": "/loc/scheme",
  "a":
  {
    "eid": "BFUOWBaJz-sB_6b-_u_P9W8hgBQ8Su9mAtN9cY2sVGiY",
    "scheme": "http",
    "url": ""
  }
}

]]></sourcecode>
          </section>
        </section>
      </section>
    </section>
    <section anchor="sped-speedy-percolated-endpoint-discovery">
      <name>SPED (Speedy Percolated Endpoint Discovery)</name>
      <t>All the information needed to discover and verify is bootstrapped from the OOBI. Subsequent authorization is non-interactive thus making it highly scalable. BADA-RUN authorization is also lightweight for the host because the only memory requirements are a sequence number, date-time stamp window, and nullification state. This provides what we call zero-trust percolated discovery or speedy percolated discovery <xref target="PT"/><xref target="FPP"/><xref target="IPT"/><xref target="DOMIP"/>. Percolation means that each discoverer in turn may share what it discovers with any subsequent discoverers. Because the information so discovered is end-verifiable, the percolation mechanism does not need to be trusted. Percolating intermediaries do not need to be trusted.</t>
      <section anchor="jitntk-discovery">
        <name>JIT/NTK Discovery</name>
        <t>just-in-time/need-to-know discovery
ToDo</t>
      </section>
    </section>
    <section anchor="oobi-variants">
      <name>OOBI Variants</name>
      <section anchor="multi-oobi-moobi">
        <name>Multi-OOBI (MOOBI)</name>
        <t>An OOBI may include a list of URLs thus simultaneously making an introductory association between the AID and multiple URLs. This would be a multi-OOBI (MOOBI). In general, we may refer to a multi-OOBI as a special case of an OOBI without making a named distinction.</t>
      </section>
      <section anchor="oobi-as-url">
        <name>OOBI as URL</name>
        <t>URLs provide a namespace which means that the mapping between URL and AID can be combined into one namespaced URL where the AID is in the path component and any other hints such as roles or names are in the query component of the URL. This would be a type of self-describing OOBI URL.</t>
        <t>For example, suppose the  <tt>aid</tt>  is</t>
        <sourcecode type="python"><![CDATA[
EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM
]]></sourcecode>
        <t>This may be included as a path component of the <tt>url</tt> such as,</t>
        <sourcecode type="python"><![CDATA[
http://8.8.5.6:8080/oobi/EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM
]]></sourcecode>
        <t>This is called an <strong><em>OOBI URL</em></strong> or <tt>iurl</tt> for short.
This means that all that is needed to bootstrap discovery of a KERI AID is an <tt>iurl</tt>. KERI can leverage the full IP/DNS infra-structure for discovery bootstrap of an <tt>aid</tt> by providing an <tt>iurl</tt> with that <tt>aid</tt> for lookup.</t>
        <t>The aid may act in any of the KERI roles such as <tt>watcher</tt>, <tt>witness</tt>, <tt>juror</tt>, <tt>judge</tt> or <tt>registrar</tt> but is usually a  <tt>controller</tt>. In the later case, the <tt>iurl</tt> may be a service endpoint provided by one of the supporting components for a given controller. Thus the <tt>aid</tt> in an OOBI may be either a controller id, <tt>cid</tt> or an endpoint provider id, <tt>eid</tt>. The resource at that URL in the OOBI is ultimately responsible for providing that detail but an OOBI as a URL may contain hints in the query string for the URL such as a <tt>role</tt> or <tt>name</tt> designation.</t>
        <sourcecode type="python"><![CDATA[
http://8.8.5.6:8080/oobi/EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM?role=watcher&name=eve

https://example.com/oobi/EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM?role=witness
]]></sourcecode>
        <t>When the role is provided in the <tt>iurl</tt>, the AID (EID) of the endpoint provider for that role would be discovered via the proof returned by querying the URL. The proof returned may indicate a different URL for that role. Thus a self-describing OOBI URL may act as a forwarding mechanism.</t>
        <t>To clarify, the minimum information in an OOBI is the pair, <tt>(url, aid)</tt>. A compact representation of an OOBI leverages the namespacing of the URL itself to provide the AID. Furthermore, the query string in the URL namespace may contain other information or hints such as the role of the service endpoint represented by the URL or a user-friendly name.</t>
      </section>
      <section anchor="well-known">
        <name>Well-Known</name>
        <t>An OOBI may be returned as the result of a get request to an IETF RFC 5785  well-known URL. For example,</t>
        <sourcecode type="python"><![CDATA[
 /.well-known/keri/oobi/EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM
]]></sourcecode>
        <t>Where <tt>EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM</tt> is the AID
and the result of the request is either target URL or a redirection to the target URL where the target URL is something like</t>
        <sourcecode type="python"><![CDATA[
https://example.com/witness/witmer

http://8.8.5.5:8080/witness/witmer

http://10.0.5.15:8088/witness/witmer
]]></sourcecode>
        <t>The resultant target URL may be in a different domain or IP address from the <tt>well-known</tt> resource.</t>
      </section>
      <section anchor="full-cid-and-eid">
        <name>Full CID and EID</name>
        <t>A more verbose version would also include the endpoint role and the AID (EID) of the endpoint provider in a self-describing OOBI URL. For example,</t>
        <sourcecode type="python"><![CDATA[
https://example.com/oobi/EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM/witness/BrHLayDN-mXKv62DAjFLX1_Y5yEUe0vA9YPe_ihiKYHE

http://8.8.5.6/oobi/EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM/witness/BrHLayDN-mXKv62DAjFLX1_Y5yEUe0vA9YPe_ihiKYHE
]]></sourcecode>
        <t>Where
<tt>EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM</tt> is the AID (CID) of the controller and</t>
        <t><tt>BrHLayDN-mXKv62DAjFLX1_Y5yEUe0vA9YPe_ihiKYHE</tt> is the AID (EID) of the controller's endpoint provider acting in the role of <tt>witness</tt>.</t>
      </section>
      <section anchor="keri-reply-messages-as-oobis">
        <name>KERI Reply Messages as OOBIs</name>
        <t>A more verbose expression for an OOBI would be a KERI reply message <tt>rpy</tt> that is unsigned. The route, <tt>r</tt>, field in the message starts with <tt>/oobi</tt>. This specifies that it is an OOBI so the recipient knows to apply OOBI processing logic to the message. A list of URLs may be provided so that one reply message may provide multiple introductions.   For example,</t>
        <sourcecode type="json"><![CDATA[
{
  "v" : "KERI10JSON00011c_",
  "t" : "rpy",
  "d": "EZ-i0d8JZAoTNZH3ULaU6JR2nmwyvYAfSVPzhzS6b5CM",
  "dt": "2020-08-22T17:50:12.988921+00:00",
  "r" : "/oobi/witness",
  "a" :
  {
    "urls":
    [
      "http://example.com/watcher/watson",
      "http://example.com/witness/wilma"
    ],
    "aid":  "EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM"
  }
}
]]></sourcecode>
        <t>A service endpoint location reply message could also be re-purposed as an OOBI by using a special route path that starts with <tt>/oobi</tt> but also includes the AID being introduced and optionally the role of the service endpoint provider. This approach effectively combines the information from both the  <tt>/end/role</tt> and <tt>/loc/scheme</tt> reply messages into one. This may allow a shortcut to authenticate the service endpoint. This is shown below.</t>
        <sourcecode type="json"><![CDATA[
{
  "v" : "KERI10JSON00011c_",
  "t" : "rpy",
  "d": "EZ-i0d8JZAoTNZH3ULaU6JR2nmwyvYAfSVPzhzS6b5CM",
  "dt": "2020-08-22T17:50:12.988921+00:00",
  "r" : "/oobi/EaU6JR2nmwyZ-i0d8JZAoTNZH3ULvYAfSVPzhzS6b5CM/watcher",
  "a" :
  {
    "eid": "BrHLayDN-mXKv62DAjFLX1_Y5yEUe0vA9YPe_ihiKYHE",
    "scheme": "http",
    "url":  "http://example.com/watcher/wilma"
  }
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="self-and-blind-introductions">
      <name>Self and Blind Introductions</name>
      <t>A bare URL but no AID may be used as a blind OOBI for blind or self-introductions e.g. a blind OOBI or self OOBI. Querying that blind OOBI may return or result in a default target OOBI or default target endpoint reply. This provides a mechanism for self-introduction or blind i.e. self OOBI (SOOBI). Consider the examples of blind OOBIs below.</t>
      <sourcecode type="python"><![CDATA[
http://8.8.5.7:8080/oobi

http://localhost:8080/oobi

http://8.8.5.7:8080/oobi?role=controller&name=eve

http://localhost:8080/oobi?role=controller&name=eve
]]></sourcecode>
      <t>To elaborate, by default, the result of a <tt>GET</tt> request to a blind OOBI URL could be another OOBI with an AID that is the <tt>self</tt> AID of the node providing the blind OOBI endpoint or the actual authenticatable <tt>self</tt> endpoint with its AID or a default set of authenticatable endpoints. This is useful to bootstrap components in an infrastructure where the target URLs do not use a public DNS address but instead use something more secure like an explicit public IP address or a private IP or private DNS address. A self-introduction provides a bootstrap mechanism similar to a hostname configuration file with the exception that in the OOBI case the AID is not in the configuration file just the bare URL and the given node queries that bare URL (blind OOBI) to get the target endpoint AID.  This allows bootstrap using bare IP addresses in systems where the IP infrastructure is more securely managed than public DNS or where some other Out-Of-Band-Authentication (OOBA) mechanism is used in concert.</t>
      <t>To clarify, because a bare URL, blind OOBI, does not expose an AID, the resultant response when querying the OOBI may depend on other factors such as the source IP of the querier (requester) and/or another out-of-band-authentication (OOBA) mechanism. This supports the private bootstrap of infrastructure.
Of course one could argue that this is just kicking the can down the road but IP addresses are correlatable and a blind OOBI can leverage IP infrastructure for discovery when used in combination with some other OOBA mechanism without unnecessary correlation.</t>
      <t>This may be especially useful to bootstrap components in an infrastructure where the target URLs do not use a public DNS address but use instead something more secure like an explicit public IP address or a private IP or private DNS address. A self-introduction provides a bootstrap mechanism similar to a hostname configuration file with the exception that in the OOBI case the AID is not in the configuration file just the bare OOBI URL and the given node queries that bare OOBI to get the target endpoint AID.  This allows bootstrap using bare IP addresses in systems where the IP infrastructure is more securely managed than public DNS or where some other Out-Of-Band-Authentication (OOBA) mechanism is used in concert.  Because the OOBI itself does not contain an AID the association of the resultant AID is not provided by the OOBI and the resultant AID's association must be secured by some other mechanism.</t>
      <t>For example, a given indirect mode controller is identified by its AID (CID). The controller must also create witness hosts with endpoints. This means first spinning up witness host nodes and creating witness AIDs (WIDs) for those nodes. Given that these WIDs must be eventually designated in the KEL for the CID, the controller of the CID can confirm using its KEL that the signed endpoint reply provided by a bare OOBI request is indeed signed by the corresponding private keys for a WID designated in its KEL. This means that the only place that the WID must appear is in the KEL and not in all the config files used to bootstrap communications between the CID host and its designated WID hosts. Bare OOBIs will do. The redundant configuration information may be a vector for a type of DDOS attack where corrupted inconsistent redundant configuration information results in a failure to boot a system that must be manually fixed. Redundancy for security is best applied in the context of a self-healing or resilient threshold structure that explicitly manages the redundancy as a security mechanism not as un-managed inadvertent redundancy.</t>
      <section anchor="onion-routing-with-blind-oobis">
        <name>Onion Routing with Blind OOBIs</name>
        <t>ToDo</t>
      </section>
    </section>
    <section anchor="oobi-forwarding">
      <name>OOBI Forwarding</name>
      <t>In every case, an OOBI may result in a proof for a different URL than that provided in the OOBI itself. The allows OOBI forwarding so that introductions produced as hard copies such as QR codes do not necessarily become stale. The recipient of the OOBI may choose to accept that proof or not. Ultimately the recipient only treats URLs as valid endpoints when they are fully KERI authenticated. Given that an OOBI result is always KERI authenticated before use in a given role, the worst case from a security perspective is that an OOBI may be part of a DDOS attack but not as part of a service endpoint cache poison attack.</t>
    </section>
    <section anchor="oobi-with-mfa">
      <name>OOBI with MFA</name>
      <t>An OOBI may be augmented with one or more Out-Of-Band Authentications (OOBAs) to minimize the likelihood of a DDOS OOBI attack. A given recipient may require as a precondition to accepting an OOBI one or more  OOBA mechanisms such as text messages, emails, etc that together provide some degree of non-KERI-based security to the OOBI. Thus an OOBI could employ out-of-band (with respect to KERI) multi-factor-authentication (MFA) to preclude any OOBI-based DDOS attacks on KERI.</t>
    </section>
    <section anchor="keri-oobi-use-in-installation-configuration">
      <name>KERI OOBI Use in Installation Configuration</name>
      <section anchor="oobi-discovery">
        <name>OOBI Discovery</name>
        <t>The main value of an OOBI is that it is compact and is not encumbered by authentication proofs but may be used to kick-start the process of authentication (proving).</t>
        <t>One way to pre-configure a vacuous KERI installation is to provide OOBIs in a configuration file. The bootstrap process of the installation then queries the associated URLs to retrieve the KERI authentication proofs (BADA) that then are used to populate its database securely. This simplifies the configuration file.</t>
        <t>In contrast, an alternative would be to populate the configuration file with the KERI authentication proofs. But these proofs may be quite verbose and cumbersome and may make the config file somewhat difficult to manage in human-readable/writable form. Furthermore if one already had the proofs one could just pre-populate the database with those proofs. Therefore OOBI based configuration files may be advantageous as either easier to manage or as a viable option when the proofs are not yet available at configuration time.</t>
        <t>Furthermore, a clean clone replay restart of a given KERI component is designed to fix any unverified corruption of its associated KELs.
If each component uses OOBIs to retrieve the authentication proofs from other components then all the components will have clean proofs instead of stale proofs.</t>
      </section>
      <section anchor="oobi-response">
        <name>OOBI Response</name>
        <t>Each KERI installation may also optionally provide an OOBI permissioning record list associated with each habitat to indicate
which OOBI queries it will respond to.  This may also be inited with
a config file.</t>
      </section>
    </section>
    <section anchor="data-oobi-doobi">
      <name>Data OOBI (DOOBI)</name>
      <t>ToDo</t>
      <section anchor="did-resolvers-with-oobis">
        <name>DID Resolvers with OOBIs</name>
        <t>ToDo</t>
      </section>
      <section anchor="did-comm-with-oobis">
        <name>DID-Comm with OOBIs</name>
        <t>ToDo</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>OOBIs are out-of-band with respect to the security of the infrastructure to which they provide an introduction. OOBIs assume that any introduced endpoints will be subsequently verified by their associated in-band mechanisms. There are no other security considerations.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="OOBI_ID" target="https://github.com/WebOfTrust/ietf-oobi">
          <front>
            <title>IETF OOBI (Out-Of-Band-Introduction) Internet Draft</title>
            <author initials="S." surname="Smith" fullname="Samuel M. Smith">
              <organization>ProSapien LLC</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="KERI_ID" target="https://github.com/WebOfTrust/ietf-keri">
          <front>
            <title>IETF KERI (Key Event Receipt Infrastructure) Internet Draft</title>
            <author initials="S." surname="Smith" fullname="Samuel M. Smith">
              <organization>ProSapien LLC</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="SAID_ID" target="https://github.com/WebOfTrust/ietf-said">
          <front>
            <title>IETF SAID (Self-Addressing IDentifier) Internet Draft</title>
            <author initials="S." surname="Smith" fullname="Samuel M. Smith">
              <organization>ProSapien LLC</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="CESR_ID" target="https://github.com/WebOfTrust/ietf-cesr">
          <front>
            <title>IETF CESR (Composable Event Streaming Representation) Internet Draft</title>
            <author initials="S." surname="Smith" fullname="Samuel M. Smith">
              <organization>ProSapien LLC</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="ACDC_ID" target="https://github.com/trustoverip/tswg-acdc-specification">
          <front>
            <title>IETF ACDC (Authentic Chained Data Containers) Internet Draft</title>
            <author initials="S." surname="Smith" fullname="Samuel M. Smith">
              <organization>ProSapien LLC</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="RFC3986" target="https://datatracker.ietf.org/doc/html/rfc3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC8820" target="https://datatracker.ietf.org/doc/html/rfc8820">
          <front>
            <title>URI Design and Ownership</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="KERI" target="https://arxiv.org/abs/1907.02143">
          <front>
            <title>Key Event Receipt Infrastructure (KERI)</title>
            <author initials="S." surname="Smith" fullname="Samuel M. Smith">
              <organization>ProSapien LLC</organization>
            </author>
            <date year="2021"/>
          </front>
        </reference>
        <reference anchor="IDSys" target="https://github.com/SmithSamuelM/Papers/blob/master/whitepapers/Identity-System-Essentials.pdf">
          <front>
            <title>Identity System Essentials</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="PT" target="https://en.wikipedia.org/wiki/Percolation_theory">
          <front>
            <title>Percolation Theory</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="FPP" target="https://en.wikipedia.org/wiki/First_passage_percolation">
          <front>
            <title>First Passage Percolation</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IPT" target="https://www.physics.purdue.edu/flow/MMproject/Wilkinson1983.pdf">
          <front>
            <title>Invasion Percolation</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="DOMIP" target="https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.103.018701">
          <front>
            <title>Dynamic Opinion Model and Invasion Percolation</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="PTEL_ID" target="https://github.com/WebOfTrust/ietf-ptel">
          <front>
            <title>IETF PTEL (Public Transaction Event Log) Internet Draft</title>
            <author initials="P." surname="Feairheller" fullname="Phil Feairheller">
              <organization>GLEIF</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="Proof_ID" target="https://github.com/WebOfTrust/ietf-cesr-proof">
          <front>
            <title>IETF CESR-Proof Internet Draft</title>
            <author initials="P." surname="Feairheller" fullname="Phil Feairheller">
              <organization>GLEIF</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="IPEX_ID" target="https://github.com/WebOfTrust/keripy/blob/master/ref/Peer2PeerCredentials.md">
          <front>
            <title>IPEX (Issuance and Presentation EXchange) Internet Draft</title>
            <author initials="P." surname="Feairheller" fullname="Phil Feairheller">
              <organization>GLEIF</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="DIDK_ID" target="https://github.com/WebOfTrust/ietf-did-keri">
          <front>
            <title>IETF DID-KERI Internet Draft</title>
            <author initials="P." surname="Feairheller" fullname="Phil Feairheller">
              <organization>GLEIF</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="JSON" target="https://www.json.org/json-en.html">
          <front>
            <title>JavaScript Object Notation Delimeters</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC8259" target="https://datatracker.ietf.org/doc/html/rfc8259">
          <front>
            <title>JSON (JavaScript Object Notation)</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC4627" target="https://datatracker.ietf.org/doc/rfc4627/">
          <front>
            <title>The application/json Media Type for JavaScript Object Notation (JSON)</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="URL" target="https://en.wikipedia.org/wiki/URL">
          <front>
            <title>URL</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="QR" target="https://en.wikipedia.org/wiki/QR_code">
          <front>
            <title>QR Code</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="DM" target="https://en.wikipedia.org/wiki/Data_Matrix">
          <front>
            <title>Data Matrix</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RTE" target="https://gdpr-info.eu/art-17-gdpr/">
          <front>
            <title>GDPR Right to Erasure</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 630?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1923IbR5bgO76ilh2xJrUASMq2TDGmZwYiKZsWKdIkZdme
mBATQIIoqVBVXVUgBSncMb+xb/st+yn7JXuueakCdeuO9mzsODpaBJDXk+d+
Tp4cDAa9Jm0yu59snC2bwdls8MTk08Fx3lTFdDlp0iJPNs/OnhxvJedV0RST
ItvomfG4srfYBX7Y6E1MY2+KarWfpPms6PWmxSQ3CxhyWplZM6jrRdrMB0Ux
Tgc7uz3o93XPVNbsJ6OLo1Hvrqje3FTFstxPXn6fvIRPaX6TfI/f9N7YFfw8
3U9gPbbKbTM4xCF7tzZf2v1ekriO8HezKmHOeIAkWZg0wwb/at+aRZnZ4aRY
wNemmsz3k3nTlPX+9nbw2zaNdQMrXo73kxeXRxfbF0fnZ/BdBtusm/WdTkZX
R5dXvZ5ZNvOigpUNoEOSzJZZxqC4NIulzZLTYXKJ0KBfi+rG5Ok7g0DeR/Be
mjK1eXJyckC/W157bRb/WlZFTT/S8nt5US2g2y3AAFriKbw6PtynTo2pbmyw
St4J78yOz2ZX1bJutlPbzOhEuA9jwPHR1VMaDE78HlzYcieR8Elgd7dp+i/N
a9huuM8kuR8GBIV1m58CtPeThzsPH+IWnx1dfNEW39iqu0UcLNl8ZlfJESBS
k1zYiU3LBrY2q0zdVLDVZWX/qK1ejo4Pv2SrtUmnna3iYMnmpc1mg9F0Wtm6
Rto4PoRtp7PUVn/UJg+OLi++ZJMTW1edTeJgyeZBsSiBSMaZlWO9bIDJLHC/
F7aErcN35o/E4dHB4cGn7LnB7Ra3gLnldlPf3QzMZDoZ1KWdwJFNaAsdEODY
yeYINoEnO0kO5ibN7TQ5NI1JDgrYOXys6j9q6xdPD75+vPdo/dahqWkqMwFa
HeIhD2HIbZAh2/NmkW1Xswl2DXe88SJPZ8AB4VzrYllNbHI8VYRONl9cHG/t
J99b2C8A4nIFe3+7IYvY23u484WLwK7hImCa5NDW6U2eAJNMzu4QvvO07PV6
KAVD/oz8Zv2spnqb3tJUZlxv7z7e+W6483D3m6/DiT7Gp4CTwfhb/4Cj3MXN
HB9eruqP4jANy7Ocbp+bEmCzPc6K8fYCFm6r7bt52tiSv+fDa1YDGLixi8FR
jaSamqweltNZhOrSMuGWiW+JKzu/Wr8sEJp36Zu0tNPUEKzx0/a5rUCXIWp6
BVQD6ks4U/BrcsW/ws9Pz88/Z4qnaVU3r0pT1+bGvir9kOFM1Cg550bhvATs
+/Z0d3c3LOerOp0AkJbVdGmHdrrcnmXF3fbpKWgLr+2k2X6ZZqAL1UW++3jv
6w4w81tT4/5acx6enR7fs83XQG05nospa9pmWWWIuUg4zfbuznB3d+fr7XNY
14W9PbFNM4TPw53dve9A7wumPlwBGgJxnpVpjis4LaaAjUhG9y3q/Oro5Evk
RdnYrMMscbBk83w5zmANV5XJa8OKLpPZSXHzqXzyfJg8tSat5jbLbBWR2Pk8
zdb8SDT2/cnR8dM1bBJor5h9qVgclNh7rXAc0MB/zJ6Oz49++cwtodJWriJ+
UdkZUKytHuL/HVR2qhxiEes8MFmyeVzXS5ODWECMOg8kf3L0y2Ru8ptP1u3+
zrA4PD589iXHO02n6zVZGHBA2uwfsp0fL8+e38+eXgPfISaBfwyAQ6IkDXfw
o7k1l5MKJdrZGPlV8ryQczq0WbqwsKVaBffDbx9/qeCGrtG0sOpk8/7Jt2TK
bx49/O4zp4TZsNd2OB1Ij8SUZSaaG0EjOUVBkVyBwZqAqvAhSGzicmlJLy5O
Pkf4QPNYXTnBQX66+Jwxfrp4NQHWHI7z0wWok/AVYvPp54yFmuirU4Bb+jYS
BaigytcI96uje6hjWlYDVKyGdglqUzPY/W6A30Ww/v7w/CK5SG/mTdIUyREo
SaAfgUI2GAwSFVO93ihPAvM2WefqAFZ6m05tnZhkmtYTVMZXycIi80jrRdLM
TZOAxC4mKfoEoNUN6Ho56YRwnADr5A6o2X1PRhgo50VeoNgLzS9o/nEb7f17
sX9//53/xH/FTsQ/xQHw++9DQjdchuxgmoxXwAbZqofdw1pxubWtblNgkDaf
lkUKMg+xELSgYLcgL9AEmaVkUTmVFmBkxsWyoda4cNnAMBnVSb2czN1saVPD
lpK0TvICmiM3w+VA1wX8mYytjG+nsOoimWQGPq360H8VTVeMG7ZlZlWxoGk7
q3ebTXNqQPO3Z0FI1MXCJgU0qfxpwsp5xf1kXtxZaN6HkXHXtaxFWCsiy50d
w/ToPMI1hlo4IBzAl8ALawb8KmaDMXbptlMgR9sknAJgueUuCQ1gsDTngTz+
AcxLccbxiZdVujDVyjXlQZjjuKY4OgmLNejEwxDcXPOACGDbMHCNQCyKBgmp
RHBsw0LW0YdiE82G6yFk+SQTdcvNX8frFOu5g+7LWnBisqzQNNiEuRcFAHpS
VBWw0mxFv2fArhGntd0WfnCoWkcnRrQLdFgiJ8Zz5Y0ItkMn2god2LK2DNQY
hxGLVs0cDxBQknoTSKDH1JaAtzChfA9zw+eBp7U+rhf0HdxD2iRzgwTk98f9
bT5ZwdcA/gIWAM0qCxuFMV27m6UBzbaxtuZ5F2aFa8B/kB7HNmIRiNdF5XE9
Rtoh+xhr7QIQ8XhAoyvB3OGHOwC+yTKnw1tksh7TDx3GbJ4fH25BnxTJqU4Y
w6DFOitAzDBACjCKEAvIToF/+ROYZowPOI5bG+4W8Y22a6rMrIhJ0JkSpGwL
a81kYsuGCQ9IsARRjx9Q4jtKyydpaTL6Tto7ZZM6QKMCxP0KtwQHVeD+n4wO
R8nmE1s3g9GtSTOE1gAxfzByI2wNRVQt0uk0A7n1p0g29Xo/m8myAHyPmPTx
OaIquUGUAdcdDll7aTVV0eRw+m+RTJX9yzKtiFN+VKgi1HUVgcj8o2Tl+/cw
t3I+f6yVNaihMQuDE5QdLtAyTIWWFHSwbcCgKZDuLQsfA1wHYwINUuPUTqBT
ZbL0Hfy6MDmwN54NrDHiNiQUiRH504A5gjHSXOmd2kWy6PD5ZWI8ENokS6wR
jgUQRFqpbjIpltkUSWJS5DWQM5hTsAIMn+Ac8THGniY+SIQN8zxowFCCkRr7
tumzvArOPqU16LnjN2Pb3Fmbh3vGqQwtzbEqOI5sCZzGpiStYQz7FpVoYHXx
hgzBAY0YWhdoHSDGAarv34vTMTjpl8KYaMky/8fiHSTCSWdCBywgyAS4VAtO
g/VwEryu54YgPKmKfAXqxlORjrV5QwOR1GhAaizzjDaFO75LYZa/LAF5UBno
Ozm1RBYJlLSwRkDfXhd8/yA8gge0BdLBYNIb9IsGrR/EaPMAeNApSJ6C1KCx
nRiYECHe0mLaWt2KgNmPgApfeh0wQDUwRZn1tuWsDIHIAHqXV+K8PBxbisJV
HS2Jp/0kLhtqfjHp41YJLjMW8wpzWNrr5aIc1GCUNF01+R51OmBopBxUgMoA
+oYF/BoQIUDr5Qz0ttTKGH4ePQrX1fdTeAY63MKSPuBXXZM7gBQvkgFuYDjv
F8xDzx1T6Wqsik82YH0sth0XJDHLC4GZTQMWHej6iPdZVtyJ5glDZagboavz
/gmjnQ+5J+k5AKFAO+onuUV0gs0Vdzmw22l7c9CgwfByX9QXQjjgBfgXsIFp
Absf4aKLfIrqc4QA2OWrWs5fFZ+uYCWeCmPPSDq1hJOot1uwSLuAsXyYYkyK
SfoJEg3sE25EXIgYLWCHckAVPmQcwc/VqmyKG9B94HQAEDeWBYyYTSkKIzGr
EHFJh8G1Me7QNOv0f5rFWRMTnPgOj4HGdYuD04PDdrzbmWMAFtHMFsDycDzq
gvg7gKOEcciZN0x+Ds0WWiBCVNUbbwkC8P6yhPNl0kdzl60nnrfWSeH0/NpI
qKb1XAzBFD6tYOgBbQ0HclsRcOHUsoHKYmPEVhwFuDWKW2JZfv/c8gVZAvDH
dW2m17S0ejIH7YGEGrAvmRiEmeAHaGvYdh/Dt9cC1Qf44UFC2kcJlosqbTgD
QzlaqcAQm9Gi3Xku0oUdqFznlkBgubZD7AGWtFCYdpGE+qpSSY4zwPKDJ2cX
hO6aAIGa6hNQ2CdEM70eTk37ROSjQJ1XcRxTNSSz65J2B7QPMEXx0SxLNIEM
wKss5TvHGdAGpjhJnyV/8AMwHDOZk5ZGuDBhgxKNgVjb9brGJpPuVsA3A58O
n+aJBzzx8ScrHBnDBGyzcxsAUzoJUZ9+wcyV5BqTLK4RPZBPlQYHQ37KvErw
thEuA/ixFJxQ8TMmV0taq4AQdXQ6JNULgcUQZpVGfFzZqt/r/fWvfy3BBgXD
YXNZZQDHdLqFX/Z6jMj5pCIdM266gQ63/e3tveHe8Nvho/29nb2dbdzDRj/Z
ODIvHv148TBf3K1+G6Q7070ffxsVV89/++HrFye3v45mlz+fv5u/u3w0/vbg
dEMmG611B2HcFG29KtB2AglFPidRKthlBNRjAaOKyIcTqmAj31ttjlEg65N0
CAIyL3Lylw8ZSRUXU+Kp0I3OkFA3rdFHAWfClm1C4gQEGayqQcV5ieZAoGV5
28soqROirMQFh45T9KXilsnjsSCfJ6ipP12QNXsKCmqPKOmTlJhzMjF5GxUo
gGUqJoIijmhIdaRsBCBWlud0FkRk1liEFVCnji8kl8CCsgg5SemDZFcVGEBQ
loM01xlWxEE80qxgTQEbeSAkDggMtxAIbGcz/VIPMbyd5FqAFQmWJJoNK2JZ
bKATsXlY8KHTNtioRzKrG1mkLmuMiymRvFI0tXG0d7YqxIhDwbBsunYYq4LO
6eUdCfHeSbNn6emkHOGSE37AQVgMkfOCxJ8KIDooOL5hcqlJIjBQf72v1DSO
beGxFuiLEkPFzRVzUBpmWZZFRfvjVQgjFoMYFUB29sU0jKLhT8ml+qQwMGfr
Xo+aKlxNsuHhuOEdWAsKCsfggw8dFZNQQ+GK1iNYRrIsVm9qh6MoCgCOi4L9
2CgJ/FF7LyrJkjeJucHtNxFqpHwmIJS1GTHi1ndkBpspkGCN4/GJsvZWkslA
YwnUAy87zmQIa8Rpmsu45OIjyweMWOiGDviADwZ+5L5Ik2mKhsQyU1uEbGL0
PQPPnzSh3EEXAzkAZAvkJERLG11NlV2ynRjRR2BPAgrfpLkYT0TyAndkscA9
gXILZ/TgxlBpvCscrFHDqIlvEeTILxqdd1sq4NgD0wz8sc0og2LdyVyxY7hQ
Ex4QyvLRf+rRvbG2DA/OhKsTGsBVElxA8bZ0HnSyKO/Xni2BCN26JqusmaKs
gIMGaUzGC7kR6/s4akuRYaMLEKEBTU9MY8UYmqZGv4iu06kybi1oW4igqNRZ
Wtkxia9ZUWTqLR3bLLWiJQsDEaiFej+odPbOzaZYgmqaydwq6FQEEYQg0Sye
YLaU9MkH4XeLtElvDMvYpohPqx5y5HtNU8RHIhHVf2Fc5INvOQNg6vxQLBKq
wH8rlnTcwdvANQE6nwCHrYHTmnGakfsGB6hX+WReFZrVm2QprIlXNEyef2Bn
oteh9qAyC/AKjRMAeuixcKrmmnahDz0rbuAn9DSqa7KGKdBKSPLlYozoRGgL
BgLiDpzRogT9VtwMHzoEPDmjGwUmEcTNADFWYFbTuc/NrZXQC0GL4eMBFsLG
+TbXTYdsmk1N8QKVZPCgEsz6zzNM5/FpcpS/E9OKUwhYSfsgjFHuAmdkbdPZ
D23g4arEvJ5gIAuGYM9eLOuhjQShQGMBec/OO4R8ZHnhUk/6QlcZZQ7SrrJC
1FnXnMVxa/2iqbi9aGvRLdQsprSntflOtUZhENBucFZHKvbadRVB3A/OVluT
1WoAB3EG3ACGZyhzC92v6+CDmNKFEYWivBNhHXjewHkD0oIyvukCSF1zFvpt
qT5OXBVGA1VtrLARGdyiA9b762XVgTQfc5qzgsV+whWh2B1I2HBVqDmmb9F1
2x0+XBCvoAQMBZGIHSWGxPT74YUg8ks7DsJhy/oezoDHGUWiPqRZi9cbsGYC
ShZ0Y9mSqs/ZEgKR+6wlVNlrwVE/UlVbMvmMmGrFbKri3gylSBBJjJJW59WW
1mhqY8ggjFHqKZXYaYaKD/aboDkuHQDUGEPHkWBwdupYVfjIWxsoLoVfMWcn
sDxrOVQ5Gsihw7ZlI+fNa5czRxWOd4WAZAK2b8uiJgcZoAPsfOFF9vfnhxdJ
haktg6YYWE5t6WvsFKSbAaJABwS6XdANwgZEU8BaE9dcJyCg4YoD7aJ7WAgt
OSnV6AIt2fPoVgy1hRDqQl0AcFEPhjmmy3xqcjQxypS1P9VKcNUtY2mEZ8hQ
LfLAk9UahOPkDStTihCkHxn12tVB9AnHQJ24vndAchEzwDySBXjORi1rtagF
gYJuDXpbYZEwkqwAFUdxxoW2qCKu2BR0PaGSIKI1cKS+H2nu5OkWr76iK68T
KUpyHMAwQleq9+pSN/UsvQHixuHxThL+S7wBfxPbjoboaPHMtNEnzJjqrKJY
D5M4DFMGdkSyobWGJ6z+6CrQhkNI0C79atthkzZ6TgwF9pmKmOd7/+x983lp
4UOe3E5SQlat0/M0KJdIAnJA4C2AGtJ3uLxYsolpyZGvANH86ZBCpAvbrMUR
GVpHCl08bt07Kh6CikO82RIAJCDJCjV2sqakX4R+cPy0DHGHDDHhMkLutSOF
ZDIhHPaSRiDyJ/FfXSwzNPSdY+aj/qxqSflWpXo44Bg8oOqmqFQTwG9RyVWO
znL31mRL6+KjyIVI95/aGWkD5bJCOh4mL8T/gwBlZ0eQV9YytfJYmWFVMvYU
yLjYPPQ/McOzaJVP1hO++qHaWhX+5nUIpcRgHbIE4hm4hjRbKXXW99GmHF0L
cqyuig+fiAu2PsbDZzefNVWG0phBe5t6B8Es/Jl3Qkl0Dxi6D5DgxGiSLbUP
DZb/gFNn7PQBBj3QPd51ADJSbDJUt4IEHcSZwO3H7URRatbwWgz6K64TVgae
CPSUUAjKi7HaZbB1UAJVPXEeony3kUdRZEIH0JGXYqxRAo5eueCNwkr0P9Gn
UYkWnNE5sR9nXKKAgvUheaqW7NIeW35ZEQ34LfYHHBuUJq2A68TeWfyBkW+m
GWswatuVMl65kTrarZ06nHDZIQCMfrg5yepwlskaMPiFqGURb/+rmrZLxMss
XXWI9v5QqrBcIQ1zFbtAKPlPXa5y6hI0tCVG7jBbQswEUuiDlW2SF4eM5QbN
KtgC+6h8uBR9/sLYGUsZ3Th+hoJeDhcx0eMfcdI/0QZHahMJ62Km6kgN5Tdy
Ok9YoeFE9on0Rwo2ZKwpiGGb/+c//mcdgxrdVnTicHhyTP743LSk5LuoIyJf
jkmPFBRp460Gzm7TqlkGCpx055EPWoEDxjs4ZA3gBqdPv74QHJMACG4e1Wzy
OpjkwTlq+A+EeWlu7dhid8ZBd9huT6SBESGzL45+BcseY9MykFs707XOoi5n
NSzkdwqs9UgUOoYSJAzKYDr/fpJsOrUMfqOhMFMVr8sWOfCPRQT/+4xlRxtD
TKh/+cPRc4FV1ClsmIyeHw6HQ8qkP36K2aa6sSvszUseJpsmuzOrekvbaaOg
d6IrRLx6ILOhVAdpUXsbEueEM2FMoVEID6V5OCnebtcAYV89S/obxReRTi6Z
120+hx+VXrY+mWA+IYLVlzhsSAEunvn87OpeomtRmmOl/0kxlkSK4+eqd4rH
RfbiAQTY49r2CQyRrEfDJWwybAleZCs1gaO24lRUFQBQd3eYHDn+GzlYBrGD
JdnMC8Io5vNbvYdDzBtGnRv50T1dw+Rn6Pz3J9XAwsnjU3ORWVXXNBsgFC1o
g1Qi2PxQdwZzaKbWk7b/zQ37KdTsiHnYpmZq5On5QIzNYAdM2y4Dz6/Ar153
Rr1o4K8+0kXng5V0pgrG/SAn8TP5Hi1mIlOQU7czj95UWDNOLVNr+JTiKs47
KwuJGKH+F83gVaVUN7Fm9b7V57FCtL4uXjwHjGR0Pbh4cdjrHedKtrea5JBM
MkwXGBD/qDzF4r2WFE0JchZFxCxNSe5j1LhOx5x6wqyHA8PIQ5y5MbZzAwyS
ElxxNvHk16qiLfP0L2izuZy42itFoeIsM3PqUu24EI3JOiUPpAzd59ipXcHM
sXZewGjcVALckmI2w5zWZj5MkifLhrXqIMq/GV/V2GrleJfWVuiew3+7wNS0
WVn7Ni9giF54MCXJzUNeCbziCt8iHPDPe1bosp0p91HTCiRCYsPO7QNbmNzc
cAob95aDC+c8fXF5FfpfRb7cc2btZZAWCrtqeOUhJJx71i/RH09n+EhNDmeR
hEryoNB1GhaYwdmr08Z7EQRzOGSOM0c7Jh9Dzc07GNzpF+wRXZbhBvUqjPh9
KFkz9gyFt0RSTaHAPNUorIbxkElV1MDxl1mTYqYXTe4CYmscQuq+gZ3A1CZv
wh3OOa0sRuFkE+0Cx5C3WtEf1TxuU3sXObCU2DtOlBBMrHpJ4ruTq0Au0/TD
jKhzjwZZWbJ5QJjSTy6smfZFv+uz70qNrPZkGJGOyLK1fe/B6syJrHQznur5
MsvAgtwir7QPjphxcWv7UY72OmolRPb4KCkJIQMJlE+EYL/rUkA2obc6V3yu
mhqdPGBKeuAOR2yxEOBALXJNQBlgh39zwgifjHdBYwuaTrzQQi9RaoTYGRSl
F/SgrDTgpJpeymChgTb9brf8TT7HJfmwEwlVkjdZxjcSM3nJ3n2H3AiDlW1g
UvwewINZHC6VmJfU55gA8hJaON64lGtVEvNyKbeyZHbcqAnV4J5QbY3vrEYb
U5dQQArkMQHUQyjq7VmuJybwq8LFxoyZz8Al2rTbIxqRLudSSLqwHpIa4Dz+
zlMm2kx4vqr0CwMJUy66jKaWkD/7bTtJA23acjFN8rKr4wwHqLC0DXTxd3yD
xUvuuM/rMjFGkrBC88MSEyF24EN+iKgaEBCQh3iRB56EFgYyY0FPCNCcoeAh
f9UXSAk7wCwa+TO+KqTxBaULTlJnZb/24GeWoP51NUthARj3Yg9s6oOGGJHT
/UjrOPt9jTNN9h246yVSzjcd2UqX+7zOXAsSddBcIxQLc5d5y5Jw23Jy8l0/
Ko6UXOfQ8FoN2yKyR+lkUfQx28GNoZaS2mzq1ZLY9xgO/QRzlIwmu8wycyN9
O6B2sEJGQTFCWb7troLk7SBeBGvXlGlJoYAjzaccRZHezbNnR6MtynpOFxhV
QxKKrpWgw3qAosVdLKHrFHxBhZZ9312T+NaRuBUu8W9aEYa+ihwVbbWp/Tcu
Lx3dGHigyCop/4Z8FP3A/QYkPbrBPv3kCZW4qJPNl2mTy3W7C3uTYpJ5tdVP
XppmMqcePy6rgv+d3tiaU6GeFtWdQY5TU3DA7YIoZO1dP76seEn3JfrJD0Di
QGgAQx7v3KBafkXefc0MdcmgTqf1wEKikrtP4r49dze9Dta49ZGK17Zwvv46
zLl0wA1v/ifnGOCv2G64ANwME7b4G3Xa0FCzZc7iTXzUwrnXLiOI1KJ80BRA
l1sAygXdg1h3Hw3B7fz5vK4jjjLrJpD9gH2lxkYMIJVHBKVWR3czSbbuTlXR
mII2jQdJQlH4ULNeu92xjsApRrShWs3vICC29u5dGt94ph2LMhonZhAmLTnn
IrDzHJGKNgiwV90j7F9/Cs44yERBE4JEazGSOMkizg9AIKIhxB0uCEcQregw
RzpH0A1hECFAOH9Aj5+2CLkyoy4Pf7mVqBUpXLRRPHrMmsU51HpQFTEQRetQ
FIM1Ud2SDjlFFys94BEo45U4D1U2ts+wyJ3KUQvZIoicZs3rq7tH3EEbVpFS
TGZ3d9zkArTukjhyO5YWYjpxNN4dXqEE7LxEhhCw7E3+mbR43DsAh6Zd8DXo
bOWPZw3jmESUxG5kvUFNd9PZ5PMbCAI2bpQ+35oJdSJ3C3s92ugItPRt4YAd
skPbGbcR5elRKHPViUqzEHILdur8OpnEzGgNgESyBsTT4ta4BmZOs7UjkwgL
OIoDw0fIKIwtwAKCoWVfGH9oMNPIRymVceKaIqKTDFokuC0XFObrgPcU9IEp
eY/C/cLUR9Ub1OvZppewBk4shkjYerU14pyRKyTQb4nE8O5vxrwiwE8RFqB1
3SCtOOM8uK4UVcqRnImPOj8mAe51RxG5qdYsmxvs/an0xxbV+9tggR6gIlws
ZYMpKejKwbSiQMluSa0PxCLwBikdDF+WxY7AMGHatOb7jYj+uiXMb0AExcTA
GStcPi9icLHMgytR63NE1hh1wl9biXiIQWnNqaqoAoTZGgtEEqx3kwjPcq0E
TX8A+N5kAAB/vZhkL/pZA4XYBIOQF64oPZ4Gex6KvkxRI+7jleNAD6lJc3Hj
SNOYVLn5ptxLX3PDCUHkFkmWxlZrbQ42WV1EcGGulViYr3YbwbwpQIoF3zvz
F/7JwNWduWvydP5vUzZ3XZm/NVWXalLu1UpEdkJ4V3CRBhrHdW9dstoU8aRF
kkACbQ3RxHGeMs7Y11pGPp3ezGzjErbIOgou7l8FU35Vr1tzH6//bx+M+h8r
wUTTrqltJFY7wwypFleU8U1+HTqo2WXzG8yh7ydEiICDWKOuz4XW2crgU5cs
3nVQ5m0BiaPrBplaGlyxnME4ckulxrtXfO9iOUETb7bMggGJlQc3WcOKZZjD
hiillgOHYvjKH2Hxhb288qy+e2nTF3nhqAnuhaqD0jEFbCjMqoiwHlUx6HRn
QTKZut0NpLWmqIy8DuJMYizwlBXkYjpiQS70IWnjQWWBXEU9boxzSNGC5goq
H7K0RQF1dEn+1dBQ5gW4GyIXQWEzzgqksn1SJfqaNn/txLa7KioXOp3UWNb3
qJdiF7UHCp0ygN+g0VxX1/31TgoXlAxv7JdmlRVm6qQ0YOE0c+xtToesPgTi
xMEtqzVTujxJQEtgx3P4cfsaBYD4AvCCOtXS4Rv56Oa8z0ATw88HrwUDD7Ce
RdAOS3wBOK8nWN+AVsGLc6flbUnVx8JRccgjHNLhwZqxbTz22uy+mOtL8gF6
RXMrGU6G1h4aPTlNHVjzEkwVFwD34kaRrXRSTLAQub/AI8mLzlyKF0nnFIQ/
FQGiJWOitxxp6Dtt7UvxhFeYi49rTcsw8cIlMU+DHIx+r/cAL4bYKLWP8i3j
KS9CxoFYcMClKQR0pFZvsvm8de+QUxsPes8wGoD5xKXBKEc8inOBSDkOXdDw
c1YkY7WGClbVG2GZuUaKRtpa7Ctl+8o7PlgvqE1ilM6jhx0UBAr9I3LpHx0B
a6UN3WXwMondoSQZ/NXeFutqOSODkBlLEue97mxmU9IG3bWudeU5+5y21m2D
4UjRZGFnW1pAzIuZromDbql2Mv6yRGKIMni0MoI4g6VkAopVJRC3CD3h1lbx
64+tx0Zln+YKLhYhpKJwRTcNMosBV4nx2QScEY9TE3fvxHKU0lTCfLtmvLZ3
SeRf1epyia2IKFvT5wwGSQRiGhFaIJK5kDpetbzkBPWKc45R8UK3plc0GKN1
1e7ubFiPVgO2tH8Ebcvqco3BLLF8NUdRdRv46jaT33WsuPhVYkGEXo9SZgi6
QakC9H4HzhAkWYR9kNhLfg9tGkOZXBVdUILCpPpbvAHnKpDFx9ZF6CBm9xPR
Ko7idwu738YtbLc2+w+BoKhw7XWT+vcnFdkhkxbWzQyWEuuw5nXvfS9JNm43
9pMN1MZ2d7Cc0M7Ozu7u1682+vhbg79V5Yo/TfHT0Zvp7t7j1dP6l117Mv/p
4fPZ7PjRyDzd++3ts19W9vWr17P8m7vT5z/+ZXAn3WgUfKxisIP/u9rZ2af/
DXfov/9BH7hthU09cM10yt+bDaxB/Z4SuTZAbaGVzLN6+sQc3L7NX+68+3rx
8OyXt0ADv735/rtHNzvvDl7dNufj8/Ob7PAZj47jw6jYV6hAv7Y84pOnL85e
PjE/vhvUT149Gg9eLV+dP365N7958tPe5fLxYtQ8fzz59WH98/fprxvQ8/fe
7y7j9UNwF2H0NwK+U9/Hl/7pVPr5WwE/WTb/TwCeIe/00BN1yxHBcNhKtYRP
Rf6dvQ+cwXh0V5eHP72+HPxsB827w2a0fPf2m2d7y/l8sDNa/fLyt+ry2eLR
N+dPf/rSM/BcYM0JfAm8BNQyJvTGelL67bLK9Kv9bZzbZBjI5yJT3iO4DWqY
Aj5A+U8CvGI/aAMakq8tS+9rmP5aA9B2UbLrDCXb9cbG9fC/DmvtYcUH0aMS
VZfnR1izsLR2ugqrPEceANI8USWmgqtxCXnv7Ha10F3ZcsqhcCWcyzC3jLWG
y+WYqzG0bTqKUMQpKA16hxbmjVTsm6c3c3S6URUKtOecFd8ZiXx5GfpV7yy9
KKDqHSVqhqlelJq0sAusTh1UC1bvZKtyRL9TDeAO1ODijt1PeZhTwQqcu+4n
PpOoxHbgeS/9OQSJAhUmo+Axrf05qp7dqqz9+zAqvx2k33Aemwwi8RO0JUgN
xGK3vMbUuyk1BI+X5/3p+SFqX3mkjSq1xxE7vadaelJGC9XL6C4xLrhXLBVr
g72Rhwcd9egLJFNAcqvX9KIkkB+Pr7afXz3zSN7rvYafAe/oVLexH6YbvsmL
Ow9r4EiHBRIP2SA/w0ygjtU04Cnlm3Ah4lMqHezL5kX5EQmWpRMLtGbcrlPM
VjG55YxRQfWwCjOi5br6y6L3s9dTM0xxYJcPI1WijSTEhAskT4jUEkYPK62T
0o74ImTQw6wrnqy2mLqrdd1UFJIwFA5Ga0y4zBsYit4xoe37WvSukKTclwhQ
lYMTVEnSbRwVZdw0bl6ukHNcTKsdoUcoKE5JVSBdtVPn9hL3XBMmQ2jtYva+
zKlArNYFZBsECJKG5lhuHnh2/ShiBlJFt/ZRqGuIiqdKBip5TbUGXK8XBVAp
ZUTIKrmmGqOw/LDk4+cUdWQhIKVcydRwF5/omFvgkI2w4BU4ROUm7ys2uf2F
i/JlTrAK9oMHChX4k/yEKa2EfDfA7Zthr5NZSMKK7155IeUfFGgVfg6rtsOM
PL6E7xC1oigOFV44Pt92FY8H95Q8DuZjUuFza3t8ZDdirsGauRkOlRXFm2Wp
KS8pZwlpzkjucjFonYyXiqXXd5zUdd2HP1l9xj9fY4IX/zG9AYsRgVlpcPya
Ik9BCUMDqObVuWvnNuUbL/46qexArdYPPOwyXoXFP4JqhEHCROhE87MHb4Qw
fPiyqmOuY19jPgxKp9O+uKzZ4dJekrRAx7Pe6JMYspHqeuQsCt6jQfgAUwSx
xl6V+FKGP1l5JaQxacbpenni+aga+VKcUVhMxEdEp1V1BXv40qTXeNp8fMiG
rsO8iuHfnTL/BWf7s2DUf8cJ/wwE0eute0H5SwdnHGUeQAnh5N5DeziMrAuE
GOH6jpFvHlEEIXa7+SN2HkYaz3HhQB9Bb2XjnHyuvHJYoDpg5Z12LN0ln9YE
wYooYa+SNJolP920nvE7Eqdz9h7UoHgc+UhdzjqJRoxDLxeRwhXQh4Q28SI9
4LovI3xNnkm8GTihRILwib1AuCv341FUolIKvJNweo+2lfdC3tOnywoJc1Ho
bbQIwV3F7ZNAAQhpo1MbE9E+lskOV3yJ9JgBuc35+BZOSJwGtNVqMAONMZ9i
8rvBG66kq7y0WTZ4BtpfHutx46AAt07OPnkSJjeWyzvbWivt0ht/F08Pkm+/
2/s2oWgsaZU5I1Qo6EPaTbaHvim9pvilQvUlqT3Xn9PxWrEGjrCn0Si/Tf7E
m0Rlnlkvv/bmQQukRYEBKrLNBnvQxCtjwZcpp9Tyo0tZ+sa2uVmb4QjnwH8X
turFHO9b5nj3tNkFGx0a7VKrvXYrUUd013SJwq/T6U0RvU+LheGr48HrJs7u
vfbHee0EjSDbU9QqDkSPB3aGMSh6/wpob0ylceSyA7MvMmvDKuUe1SkjVR/r
+jhzlJqS96ih9yLn34X3O5A/qX44MavD54PFL89uHz08HL1+evLL7qtfv10d
vbA7t6PHv57bV+k8ffbrD0etI370j5qWHSdESr0vJqVk8yA4jUBRgRPr9a4/
Z0HxsEdrh/2qXnPiUt4uzSO+6dREto5Jp+SQ8KnLoJIMnQ5uyjMIqTy45KxC
b++wihrFJ66rcnXttPRlziGN+zIeZLUuITO4EXBNGHAtRpY8sK5xIi6OrCuq
3bUVCRsiMfJdFLr6pC/nTeT9DnfTKcrJGMUGvLACp6TQJIYryMVbDvPpna0e
lZ8fJkmX5EJvZtL1/0+cOzP5ewYAdgY7e4OHD692v9v/dmd/9+Hw8d7e44e7
sT8TZ2QCDJ30GwZ+8D5NUDjqDX4P9N/kWr06jyNOzgom/gsbFv/lPU0dq84W
ZoMa/rv4Ow05UD/zkYMwPDDqqg8uczc+zolnxaQTDKSOWPzyw8o9bqTeE07+
4EckKP+ni8xsMgRM3pM6J4EHoVhk9kXp3j34qDKkjECr92uOpwUpRu5WLk44
dmVqQ92LhJlLcQqCmte0jg8EJGvnlXGvyKz4VSEEDdrxk2UTV/SXUijtHei9
7Rq73aHnBwbpOv7/05LK58kqpop1dKWxgs8QGp8SK/gwcSrF+XAaRhJQ96cE
2yxtPRtI0mKMbjK6vII5rQXhcVg9l4ydMfXlBExggfyRboeBchI/0mGHN8O4
h7ST2MJP3moD+gqasX+TU2aqKL1zamcGP4iOp4O2vg4timzV9umbVgnVzsoT
ty/KTHArTjYvxR97IA+sScIwHQDlHPtN1CHCr7Pzv/N2vlOWWlG66LdOL7bJ
vRrRsvnXD3d/J0aTuBrveKWg7XcsqOvvj66uIxsqPMLo6UOTB4m3Epzg+yGi
V5DejXC+ToKnlnJ8wiX01dhwBnfIroIQZWa0nzCQYV1r91yAvjDrkAdDl2G6
vwzgXh/zDA2oAVO+ImdldP+TYwLR0yTr7CgX/cBYjEnKJWxvEj41yb4+uRGt
RfbZ6iLVTt72QwssCV9tlJHajzeWVCmPXoMjLxh/CuajnLYOOQSUE7z26mio
ThdpZiQWgdhGOa0TLM10s6xEIKVZkOti39LDr+4h5sBxRzGLwPWP0PG3vtoj
vtZke8e61KZizyRhkE86Qy6jDTc9KtFrqTcSuG6zEHKOiAyWt2kcDFhloCE9
qLk+ZL2qqWiKP/a17zoGp6gXaykNFw4zwIaiknG+9DmmOqjHnk8sOuMj95RG
WI2DTz8gtb4P7kmJZibfkCcY4rbkZrVcCyjyyTm27vPx5EaPwaBZ7CQS3y5i
6cy5orDOzKZwG3x6Vm7QK2sJ7jMMzIfBoSYI+7VdYTaihSgY0HrktXc2Q5ZW
YVAtd3pldbN0xR2YOxBSvkknb3TzGJyYogrESp/hh9kjjDH6hnYmXIdfTgvY
XRTh6OJSHNOgA7i3BH98FWIUIIpGCJd5btG6MhQq42Wx0zoMR1lRlfkKyD+Q
I1LFeeGK/8URP8ARnSj+JLbICbv/37HCJEqHCN/Pc2xPvdxObbFRlN+5WpUT
BkcVRtXc+LGrVnp8VUeDutrCBBJ+SNPvOQw0tC7x8hlrujfdOouCbcHTqFN5
FNc7vdizE14YpYumaONKWTJNM+aC/oTBbRWJY7xcn6Qu05xL0JVRV0JCvu/n
iiLp7/TO7eZL+P8tCcwUNauDMMP38hQAJxzA99jOQYvSgzkwuv7atYbqDlR+
dWuQHkiuwkSqSzJuS61en+og2b2xsdG6U+/pKvDDyyNg7VKolTwRh5MpJ3pj
VxprhW22tuSqB7cD6y5Rioor+e9wCD5Prq/oUytwY/qGFOK5pJExgyHO4l/D
jjj8YpkLrdVRsgvCkI6ZCj01Ufb8S/kNE5EUPv6VYAnw+gciQh635lIxvmWC
OoSASXM2Dg/PLvWSMnMMhPCyZNgF9eI+ZSqmUyn8jfcO5almBAX6RYjDMZwV
EYGBMRpS3VR8PMDV8nfFVOiapzx2iK7NdG2JA3H8z63JKJxHFnGqJRnh73mR
Tf3zrLyMIOOeWamGwNwqOFXI3U11HJIqXaKrd6A8GJSHKRXfC6A1WWmuUE7X
koqlUvBc3AvshOZELJeK9dSFSqlIliVtxV3tCox/b/KHVxzimK1U8zRNJ/Qc
MHFJ22d5pW4LDdeqEzj2W5TOZ1fzHXN5WEN1VHldNMhdY10JnwcATbrgZMPM
18v2D4ZGuvBkXlC2UKF1YnUveCu4wqGHyQufxRD7xIm+G+ScNStOppbaVf65
7DsJ0a9Iv8SUmFXn5UjEzYCl6inoCbh6Z91+sFe6usLamBM86GBgzhrc25UX
sx26lbai68aYNprW8dTqqZeLIiYiZXZNEYb6Bh3n6QTr8yTwd+3fH/RISEh6
+nTUCRib5Y285kNNKAmmYsUk0DGSWMeoWcmoyYqkGD++VID7RyU0S+GQp8E+
WP7L+0wjhZk7VsZ+eZ6OHyeiYlyphmcZVYJ7aNEyWwp9YFchM1Efr1zCxn8b
ec7KPafoCmLxkx43ldUH/egx3wG/eecOMngVVbMmZFlsH8k7wuF188119823
tBAY2YMdEw5Oa4vTFqyWr+I4kKwnQBGqQSCFAiRCxmowoynWlwNuwOMehBzf
pz4GyaZXlNMI/VyF7yhfw8WuNEFD6hqSrZxPKAlZdIF4R0TltXtuWV2ssEW0
HAcUbNBkF7pvHHumCCh0VPnNFt68yrFe9UpANFBJRtJRKi4SJNJw964oGh04
S+GUn3Bq2xXMyrzkD1bFsYdg2Eatf3cV1l9m51xavLKPL2nIm4Vt1hLAZxNz
xrecBpMTI1NIlUW5zLRQZFA8mU0INfOpRI27lrtmaySJSAs0dcNPkmZYR4EL
sbvwaDjhPcaXv7R3746GVOqYFVfZo5w/0Hzjg7WkFxP6ECFq8TEsU9LWzIhU
KQncv0PrC8dg3toS/h7g86foWti+A8I1kgq3iBJ/8G0z5Cb6VurcTBUHcaHe
60FWJiJaBBF3BAKHwu0xvOnI8Tai2i4IHTRA4wCVDDZAxUJd7oo1dRrVxUG1
ANnkLV+X5QibE3y6cr1ciAVLjXuIz7RVPi6c34tSobA4K1Y9nGQaKWb9pHHS
h1l4XBbQ3xdlVAUlUF67cnXZRR0NqpB2ij4cz/R9Mh2WqqdJ+cIWFa0nIBK8
rSJ6tZCSU/Ld96SD0xsJvGkZJPU1OfnRMTnVIFv8Qnx/vR6VZugyG44jgsIV
BEFdVrmw1BIr+FCGgi+Ry1H8ADRsceIkczPGN03DOpk9Tkqn0ZQFpY27ko3m
FTRXL4Zb05hfcpDReyYkLxIj9GYjx4AO5dKAaLYAgEOwZ2D/ReYvX4TKL7cY
HICxtOZHlEFSK56t4UMsmJFKUA65Lt4uvqMCvxtYfHWjz/9iEVb8++LopxfH
F0eH+PflD6OTE/dHT1pc/nD24uTQ/+V7Hpydnh49P+TOWNQ1+qq3cTr6dYPv
ymycnV8dnz0fnWwk+i7ltAAGRYn4YgxZvtsBfIEfROz5os3Q58nB+f/+X7vf
JO/f/7eLpwcPd3cf//67fNjb/e4b+IBUy7ORcssfUX3tqb3KSDsxJZw7qi9G
g8vIXeCgHvwbQubf95N/Gk/K3W/+Wb7ADUdfKsyiLwlm3W86nRmIa75aM42D
ZvR9C9Lxeke/Rp8V7sGX//QvYGDZZLC79y//rJFdUcc0MGkEf3zlpg8V/OHw
vQzhRHrkoINW7uGniHBD08lViqrr5ULLGuarMA0iME7k6rW/o5St/KsV7BVJ
q5Dy05yX36oPJLU98kL4nNvJJAIG0fHx6PmoA6SrCJu5uDW3NBPt2hsMBgk+
2IajjCaYkZTZKZkLde/9fi6a3p83ZoCYduN3GPXs8AwG0JaAnv8XYZJrnACo
AAA=

-->

</rfc>
