<?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 rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="o-*+"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-satp-core-17" category="std" consensus="true" submissionType="IETF" tocDepth="4" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="SATP Core">Secure Asset Transfer Protocol (SATP) Core</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-satp-core-17"/>
    <author initials="M." surname="Hargreaves" fullname="Martin Hargreaves">
      <organization>Quant Network</organization>
      <address>
        <email>martin.hargreaves@quant.network</email>
      </address>
    </author>
    <author initials="T." surname="Hardjono" fullname="Thomas Hardjono">
      <organization>MIT</organization>
      <address>
        <email>hardjono@mit.edu</email>
      </address>
    </author>
    <author initials="R." surname="Belchior" fullname="Rafael Belchior">
      <organization>INESC-ID</organization>
      <address>
        <email>rafael.belchior@tecnico.ulisboa.pt</email>
      </address>
    </author>
    <author initials="V." surname="Ramakrishna" fullname="Venkatraman Ramakrishna">
      <organization>IBM</organization>
      <address>
        <email>vramakr2@in.ibm.com</email>
      </address>
    </author>
    <author initials="A." surname="Chiriac" fullname="Alex Chiriac">
      <organization>Quant Network</organization>
      <address>
        <email>alexandru.chiriac@quant.network</email>
      </address>
    </author>
    <date year="2026" month="September" day="25"/>
    <area>Applications and Real-Time</area>
    <workgroup>Secure Asset Transfer Protocol</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 159?>

<t>This memo describes the Secure Asset Transfer Protocol (SATP) for digital assets. SATP is a protocol operating between two gateways that conducts the transfer of a digital asset from one gateway to another, each representing their corresponding digital asset networks. The protocol establishes a secure channel between the endpoints and implements a 2-phase commit (2PC) to ensure the properties of transfer atomicity, consistency, isolation and durability.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-satp.github.io/draft-ietf-satp-core/draft-ietf-satp-core.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-satp-core/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Secure Asset Transfer Protocol Working Group mailing list (<eref target="mailto:sat@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/sat/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/sat/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-satp/draft-ietf-satp-core"/>.</t>
    </note>
  </front>
  <middle>
    <?line 163?>

<section anchor="introduction">
      <name>Introduction</name>
      <t anchor="introduction-doc">This memo proposes a secure asset transfer protocol (SATP) that is intended to be deployed between two gateway endpoints
to transfer a digital asset from an origin asset network to a destination asset network.
Readers are directed first to <xref target="ARCH"/> for a description of the architecture underlying the current protocol.</t>
      <t>Both the origin and destination asset networks are assumed to be opaque
in the sense that the interior construct of a given network
is not read/write accessible to unauthorized entities.</t>
      <t>The protocol utilizes the asset burn-and-mint paradigm whereby the asset
to be transferred is permanently disabled or destroyed (burned)
at the origin asset network and is re-generated (minted) at the destination asset network.
This is achieved through the coordinated actions of the peer gateways
handling the unidirectional transfer at the respective networks.</t>
      <t>A gateway is assumed to be trusted to perform the tasks involved in the asset transfer.</t>
      <t>The overall aim of the protocol is to ensure that the state of assets
in the origin and destination networks remain consistent,
and that asset movements into (out of) networks via gateways can be accounted for.</t>
      <t>There are several desirable technical properties of the protocol.
The protocol must ensure that the properties of atomicity, consistency,
isolation, and durability (ACID) are satisfied.</t>
      <t>The requirement of consistency implies that the
asset transfer protocol always leaves both asset networks
in a consistent state (that the asset is located in
one system/network only at any time).</t>
      <t>Atomicity means that the protocol must guarantee
that either the transfer commits (completes) or entirely fails,
where failure is taken to mean there is no change to the
state of the asset in the origin (sender) asset network.</t>
      <t>The property of isolation means that while a transfer
is occurring to a digital asset from an origin network,
no other state changes can occur to the asset.</t>
      <t>The property of durability means that once
the transfer has been committed by both gateways,
that this commitment must hold regardless of subsequent
unavailability (e.g. crash) of the gateways implementing the SATP protocol.</t>
      <t>All messages exchanged between gateways are assumed to run over TLS1.3.
HTTPS must be used instead of plain HTTP.</t>
      <t>The endpoints at the respective gateways should provide access to credentials
(or other identification mechanisms) to prove the legal owner (or operator) of the gateway.
An example of credentials include X509 certificates.</t>
    </section>
    <section anchor="conventions-used-in-this-document">
      <name>Conventions used in this document</name>
      <t anchor="conventions">The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL"
in this document are to be interpreted as described in RFC 2119 <xref target="REQ-LEVEL"/>.</t>
      <t>In this document, these words will appear with that interpretation
only when in ALL CAPS. Lower case uses of these words are not to be
interpreted as carrying significance described in RFC 2119.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t anchor="terminology-doc">The following are some terminology used in the current document, some borrowed from <xref target="NIST"/>:</t>
      <ul spacing="normal">
        <li>
          <t>Digital asset: digital representation of a value or of a right that is able to be
transferred and stored electronically using distributed ledger technology or similar technology <xref target="MICA"/>.</t>
        </li>
        <li>
          <t>Asset network: A monolithic system or a set of distributed systems that manage digital assets.</t>
        </li>
        <li>
          <t>Client application: This is the application employed by a user
to interact with a gateway.</t>
        </li>
        <li>
          <t>Gateway: The computer system functionally capable of acting
as a gateway in an asset transfer.</t>
        </li>
        <li>
          <t>Sender gateway: The gateway that initiates a unidirectional asset transfer.</t>
        </li>
        <li>
          <t>Recipient gateway: The gateway that is the recipient side of
a unidirectional asset transfer.</t>
        </li>
        <li>
          <t>Claim: An assertion made by an Entity. The terms Claim, Claim Name and Claim Value are as defined in <xref target="RFC7519"/>.</t>
        </li>
        <li>
          <t>Claim Type: The intended use of a claim in the context of the message flows (e.g., asset lock claim).</t>
        </li>
        <li>
          <t>Gateway Claim: An assertion made by a Gateway regarding the status or
condition of resources (e.g. assets, public keys, etc.)
accessible to that gateway (e.g. within its asset network or system).</t>
        </li>
      </ul>
      <t>In the remainder of this document, for brevity of description the term “asset network” will often be shorted to "network".</t>
    </section>
    <section anchor="the-secure-asset-transfer-protocol">
      <name>The Secure Asset Transfer Protocol</name>
      <section anchor="satp-protocol">
        <name>Overview</name>
        <t anchor="satp-overview">The Secure Asset Transfer Protocol (SATP) is a gateway-to-gateway protocol used by a sender gateway with a recipient gateway to perform a unidirectional transfer of a digital asset.</t>
        <t>The protocol defines a number of API endpoints, resources and identifier definitions, and message flows corresponding to the asset transfer between the two gateways.</t>
        <t>The current document pertains to the interaction between gateways through API2 <xref target="ARCH"/>.</t>
        <artwork><![CDATA[
                 +----------+                +----------+
                 |  Client  |                | Off-net  |
          ------ |   (App)  |                | Resource |
          |      +----------+                +----------+
          |           |                      |   API3   |
          |           |                      +----------+
          |           |                           ^
          |           V                           |
          |      +---------+                      |
          V      |   API1  |                      |
       +-----+   +---------+----+        +----+---------+   +-----+
       |     |   |         |    |        |    |         |   |     |
       | Net.|   | Gateway |API2|        |API2| Gateway |   | Net.|
       | NW1 |---|    G1   |    |<------>|    |    G2   |---| NW2 |
       |     |   |         |    |        |    |         |   |     |
       +-----+   +---------+----+        +----+---------+   +-----+
                               Figure 1
]]></artwork>
      </section>
      <section anchor="satp-model">
        <name>SATP Model</name>
        <t anchor="the-satp-model">The model for SATP is shown in Figure 1 <xref target="ARCH"/>.
The Client (application) interacts with its local gateway (G1) over an interface (API1) in order to provide instructions to the gateway with regards to actions to assets and related resources located in the local system or network (NW1).</t>
        <t>Gateways interact with each other over a gateway interface (API2). A given gateway may be required to access resources that are not located in network NW1 or network NW2. Access to these types of resources are performed over an off-network interface (API3).</t>
      </section>
      <section anchor="stages-of-the-protocol">
        <name>Stages of the Protocol</name>
        <t anchor="satp-flowtypes">The SATP protocol defines three (3) stages for a unidirectional asset transfer:</t>
        <ul spacing="normal">
          <li>
            <t>Transfer Initiation stage (Stage-1): These flows deal with commencing a transfer from one gateway to another. In this stage the sender gateway delivers a proposal containing the parameters agreed upon in Stage-0.</t>
          </li>
          <li>
            <t>Lock-Assertion stage (Stage-2):
These flows deal with the conveyance of signed assertions from the sender gateway to the receiver gateway regarding the locked status of an asset at the origin network.</t>
          </li>
          <li>
            <t>Commitment Preparation and Finalization stage (Stage-3):
These flows deal with the asset transfer and commitment establishment between two gateways.</t>
          </li>
        </ul>
        <t>In order to clarify discussion, the interactions between the peer gateways prior to the transfer initiation stage is referred to as the setup stage (Stage-0), which is outside the scope of the current specification.</t>
        <t>The Stage-1, Stage-2 and Stage-3 flows will be discussed below.</t>
      </section>
      <section anchor="gateway-cryptographic-keys">
        <name>Gateway Cryptographic Keys</name>
        <t>SATP recognizes the following cryptographic keys which are intended for distinct purposes within the different stages of the protocol.</t>
        <ul spacing="normal">
          <li>
            <t>Gateway signature public key-pair: This is the key-pair utilized by a gateway to digitally sign assertions and receipts.</t>
          </li>
          <li>
            <t>Gateway secure channel establishment public key-pair: This is the key-pair utilized by peer gateways to establish a secure channel (using TLS1.3) for a transfer session.</t>
          </li>
          <li>
            <t>Gateway identity public key pair: This is the key-pair that uniquely identifies a gateway.</t>
          </li>
          <li>
            <t>Gateway-owner identity public key pair: This is the key-pair that identifies the owner (e.g. legal entity) who is the legal owner of a gateway.</t>
          </li>
        </ul>
        <t>When peer gateways deliver public-keys, these are expressed in JSON Web Key (JWK) format <xref target="RFC7517"/>.</t>
        <t>This document assumes that the relevant X.509 certificates are associated with these keys. However, the mechanisms to obtain X.509 certificates is outside the scope of this specification.</t>
      </section>
    </section>
    <section anchor="satp-message-format-identifiers-and-descriptors">
      <name>SATP Message Format, identifiers and Descriptors</name>
      <section anchor="satp-messages-identifiers">
        <name>Overview</name>
        <t anchor="satp-message-identifier-overview">This section describes the SATP message types, the format of the messages exchanged between two gateways, the format for resource descriptors and other related parameters.</t>
        <t>The mandatory fields are determined by the message type exchanged between the two gateways (see section <xref format="counter" target="satp-Stage0-section"/>).</t>
      </section>
      <section anchor="satp-message-digital-signatures-and-key-types">
        <name>SATP Message Digital Signatures and Key Types</name>
        <t anchor="satp-message-signatures">All SATP messages exchanged between gateways MUST be signed <xref target="ECDSA"/>, using the JSON Web Signatures mechanism <xref target="RFC7515"/>.</t>
        <t>Signature algorithms used by gateways for SATP messages SHOULD be selected from those defined in
the JSON Web Algorithms (JWA) specification <xref target="RFC7518"/>, with key types defined in JSON Web Key (JWK) specification <xref target="RFC7517"/>.</t>
        <t>The choice of signature algorithm and key-type must be agreed upon between the gateways prior to the commencement of the SATP protocol session. The agreed values are then included within the Transfer Initialization Claim body in Transfer Proposal Message.</t>
        <t>All SATP implementations MUST implement at minimal the ECDSA signature algorithm with the P-256 curve and the SHA-256 hash function.</t>
        <t>Additional signature algorithms and keying parameters may be negotiated by peer gateways. However, the negotiation protocol is outside the scope of this specification.</t>
      </section>
      <section anchor="satp-message-format-and-payloads">
        <name>SATP Message Format and Payloads</name>
        <t anchor="satp-message-format">SATP messages are exchanged between peer gateways, where depending on the message type one gateway may act as a client of the other (and vice versa).</t>
        <t>All SATP messages exchanged between gateways MUST be JSON format <xref target="RFC8259"/>, and MUST use <tt>application/satp+json</tt> as the application media type
(<xref target="RFC6838"/>; see section <xref format="counter" target="satp-iana-consideration"/>).</t>
        <section anchor="protocol-version">
          <name>Protocol version</name>
          <t anchor="satp-protocol-version">This refers to SATP protocol Version, encoded as "major.minor" (separated by a period symbol).</t>
          <t>The current version is "1.0" defined in this specification. Implementations not understanding a future option value should return an appropriate error response and cease the negotiation.</t>
        </section>
        <section anchor="message-type">
          <name>Message Type</name>
          <t anchor="satp-message-types">This refers to the type of request or response to be conveyed in the message.</t>
          <t>The possible values are defined in the urn:ietf:params:satp:core:msgtype namespace under the IANA SATP registered
namespace urn:ietf:params:satp (see section <xref format="counter" target="satp-iana-consideration"/>):</t>
          <ul spacing="normal">
            <li>
              <t>transfer-proposal-msg: This is the transfer proposal message from the sender gateway carrying the set of proposed parameters for the transfer.</t>
            </li>
            <li>
              <t>proposal-receipt-msg: This is the signed receipt message indicating acceptance of the proposal by the receiver gateway.</t>
            </li>
            <li>
              <t>transfer-commence-msg: Request to begin the commencement of the asset transfer.</t>
            </li>
            <li>
              <t>ack-commence-msg: Response to accept the commencement of the asset transfer.</t>
            </li>
            <li>
              <t>lock-assert-msg: Sender gateway has performed the lock of the asset in the origin network.</t>
            </li>
            <li>
              <t>assertion-receipt-msg: Receiver gateway acknowledges receiving the signed lock-assert-msg.</t>
            </li>
            <li>
              <t>commit-prepare-msg: Sender gateway requests the start of the commitment stage.</t>
            </li>
            <li>
              <t>ack-prepare-msg: Receiver gateway acknowledges receiving the previous commit-prepare-msg and agrees to start the commitment stage.</t>
            </li>
            <li>
              <t>commit-final-msg: Sender gateway has performed the extinguishment (burn) of the asset in the origin network.</t>
            </li>
            <li>
              <t>ack-commit-final-msg: Receiver gateway acknowledges receiving the signed commit-final-msg and has performed the asset creation and assignment in the destination network.</t>
            </li>
            <li>
              <t>commit-transfer-complete-msg: Sender gateway indicates closure of the current transfer session.</t>
            </li>
            <li>
              <t>error-msg: This message is used to indicate that an error has occured at the SATP layer. It can be transmitted by either gateways.</t>
            </li>
            <li>
              <t>session-abort-msg: This message is used by a gateway to abort the current session.</t>
            </li>
          </ul>
        </section>
        <section anchor="digital-asset-identifier">
          <name>Digital Asset Identifier</name>
          <t>This is the identifier that uniquely identifies the digital asset in the origin network which is to be transferred to the destination network.</t>
          <t>The digital asset identifier is a value that is derived by the applications utilized by the originator and the beneficiary prior to starting the asset transfer.</t>
          <t>The mechanism used to derive the digital asset identifier is outside the scope of the current document.</t>
          <t>The digital asset identifier is a JSON object, which may be encoded as a string in base64 <xref target="RFC4648"/>.</t>
        </section>
        <section anchor="asset-profile-identifier">
          <name>Asset Profile Identifier</name>
          <t>This is the unique identifier of the asset schema or asset profile which defines the class or type of asset in question. The asset profile is relevant from a regulatory perspective.</t>
          <t>In some cases the profile identifier may be needed by the receiver gateway at the destination network in order to evaluate whether the asset is permitted to enter the destination network.</t>
          <t>The default format of the asset profile identifier is JSON, with base64 encoding.</t>
          <t>The formal specification of asset profiles and their identification is outside the scope of this document.</t>
        </section>
        <section anchor="gateway-network-id-networkid">
          <name>Gateway Network ID (NetworkID)</name>
          <t>The network identifier (NetworkID) is the unique alphanumeric string representing the asset network behind a gateway.
A gateway may simultaneously stand in front of multiple asset networks.  As such, for a specific asset transfer instance both the sender gateway and recipient gateway must indicate which asset networks are the origin network and destination network respectively.</t>
          <t>The network identifier values of the origin network (senderGatewayNetworkId) and destination network (recipientGatewayNetworkId) must be communicated and agreed upon prior to the commencement of the asset transfer.
This selection is confirmed by peer gateways in the Transfer Initialization Claim that is transmitted within Transfer Proposal Message.</t>
          <t>The mechanism to allocate globally unique network identifier is outside the scope of the current specification.</t>
        </section>
        <section anchor="transfer-context-id">
          <name>Transfer-Context ID</name>
          <t>This is the unique immutable identifier representing the application layer context of a single unidirectional transfer. The method to generate the transfer-context ID is outside the scope of the current document.</t>
          <t>The transfer-context may be a complex data structure that contains all information related to a SATP execution instance. Examples of information contained in a transfer-context may include identifiers of sessions, gateways, networks or assets related to the specific SATP execution instance. The sender gateway provides this value to the receiver gateway.</t>
          <t>The default format of the transfer context identifier is JSON, with base64 encoding.</t>
          <t>The Transfer Context ID (transferContextId) value is established by the sender application (possibly with the assistance of the sender gateway) in the origin network. The value is then communicated to the receiving application in the destination network prior to the commencement of the SATP protocol.  Both the sender gateway and receiver gateway must understand how to process the transferContextId value. The value is used in the Transfer Proposal Message
(with message type satp:core:msgtype:transfer-proposal-msg) between the two gateways.</t>
          <t>The mechanism to derive the Transfer Context ID value and to communicate it between the applications is outside the scope of the current specification.</t>
        </section>
        <section anchor="session-id">
          <name>Session ID</name>
          <t>This is the unique identifier representing a session between two gateways handling a single unidirectional transfer. This may be derived from the Transfer-Context ID at the application level. There may be several session IDs related to a SATP execution instance. Only one Session ID may be active for a given SATP execution instance. Session IDs may be stored in the transfer-context for audit trail purposes.</t>
          <t>The sender gateway provides this value to the receiver gateway.</t>
        </section>
        <section anchor="client-credential-types-supported-by-gateways">
          <name>Client Credential Types Supported by Gateways</name>
          <t>SATP Gateways MUST support JSON Web Tokens (JWT) <xref target="RFC7519"/> with OAUth2.0 <xref target="RFC6749"/> as the minimal credential type for authenticating incoming API calls from Client Applications (see Figure 1).</t>
          <t>A gateway may support additional credential mechanisms, which may be advertised by the gateway through different mechanisms (e.g. config file at a well-known endpoint). However, these mechanisms are out of scope for the current specification.</t>
        </section>
        <section anchor="gateway-supported-tls-schemes">
          <name>Gateway Supported TLS Schemes</name>
          <t>Gateways MUST support TLS1.3 <xref target="RFC8446"/>.</t>
          <t>The TLS scheme is used by peer gateways to establish the TLS session prior to the commencement of an asset transfer. Gateways MUST support cryptographic schemes at least as secure AES-128 in GCM mode with SHA-256 (TLS_AES_128_GCM_SHA256).</t>
          <t>If the client (sender gateway) transmits a list of supported credential schemes, the server (recipient gateway) selects one acceptable credential scheme from the offered schemes.</t>
          <t>If no acceptable credential scheme was offered, a "unsupported
gatewayTlsScheme" (err_1.1.34) reject error message is returned by the server
(see section <xref format="counter" target="satp-stage1-init-reject"/>).</t>
        </section>
        <section anchor="client-offers-other-supported-tls-schemes">
          <name>Client Offers Other Supported TLS Schemes</name>
          <t anchor="satp-client-offers-sec">If a client (sender gateway) wishes to use TLS schemes other than the basic scheme (AES-128 in GCM mode with SHA-256), then the client may may choose to send a JSON object listing the client's supported TLS schemes.</t>
          <t>These must be selected from those defined in TLS1.3 <xref target="RFC8446"/>.</t>
        </section>
        <section anchor="gateway-identifier">
          <name>Gateway Identifier</name>
          <t>This is the unique identifier of the gateway service.  The gateway identifier MUST be uniquely bound to its SATP endpoint (e.g. via X.509 certificates).</t>
          <t>This gateway identifier is distinct from the gateway operator business identifier (e.g., legal entity identifier (LEI) number).
A gateway operator may operate multiple gateways. Each of the gateways
within an asset network MUST be identified by a unique gateway identifier.</t>
          <t>The mechanisms to establish the gateway identifier or the operator identifier is outside the scope of this specification.</t>
        </section>
        <section anchor="payload-hash">
          <name>Payload Hash</name>
          <t>This is the hash of the current message payload. This is utilized in some crucial messages within the SATP message flows to detect errors or attacks, where the payload-hash of the previously received message (from a sender gateway) is included in the response message to that sender gateway.</t>
          <t>For example, the hash of the Transfer Proposal message from the sender gateway is included in the Transfer Commence message. Similarly, the hash of the lock-assertion message (from the gateway at the origin network) is included in the Lock Assertion Receipt Message (sent in response by the gateway at the destination network).</t>
        </section>
        <section anchor="hash-algorithm-supported">
          <name>Hash Algorithm Supported</name>
          <t anchor="satp-hash-algo-supported">All cryptographic hash operations in the current specification follow that used for JSON structures, which includes the canonicalization (normalization) and serialization of the data, prior to the application of the hash algorithm.</t>
          <t>The default hash algorithm that all SATP implementations MUST support is the SHA-256 algorithm <xref target="RFC7515"/>.</t>
        </section>
        <section anchor="signature-algorithms-supported">
          <name>Signature Algorithms Supported</name>
          <t>This is a JSON list of digital signature algorithms supported by a
gateway. Each entry in the list should be either an Algorithm Name value registered in the IANA "JSON Web Signature and Encryption Algorithms" registry established by <xref target="RFC7518"/> or be a value that contains a Collision-Resistant Name.</t>
          <t>See section <xref format="counter" target="satp-message-signatures"/>.</t>
        </section>
        <section anchor="asset-lock-mechanism-within-a-network">
          <name>Asset Lock Mechanism within a Network</name>
          <t>SATP gateways may be providing service to multiple types of asset networks, each of which may utilize different local mechanisms to immobile (lock) a given asset as way to provide exclusion in the case of multiple attempts to change the state of the asset.</t>
          <t>The origin network and the destination network may in fact utilize distinct asset locking mechanisms, and the type of mechanisms to immobile (lock) a given asset may have different convergence (finalization) speeds. Peer gateways must exchange information about the asset locking information in their respective network to enable both gateways to compute an approximate time of convergence (assetLockExpirationTime) and set timers for the transfer of asset. A timer that expires too soon may result in the SATP protocol terminating too early before reaching the final commitment stage.</t>
          <t>Currently, the most common type of mechanisms (NetworkLockType) to temporarily lock an asset in a network are (i) TIME_LOCK, (ii) HASH_LOCK, (iii) HASH_TIME_LOCK.</t>
          <t>Some examples of the use of lock mechanisms are follows. Bitcoin <xref target="BTC"/> utilizes a time-lock for delays in some of its operations (e.g., nLockTime). Ethereum <xref target="ETH"/> uses a Hash-Lock mechanism for atomic swaps. Ethereum and Ripple <xref target="XRP"/> uses Hashed Time-lock in their contracts (HTLC).</t>
          <t>The exact definition of these asset locking mechanisms are network-dependent, and such are out of the scope of the current work.</t>
        </section>
        <section anchor="lock-assertion-claim-format">
          <name>Lock assertion Claim Format</name>
          <t>This is the format of the claim regarding the state of the asset in the origin network.
The default format is JSON, with parts being base64 encoded as needed.</t>
          <t>If the sender gateway offers multiple choices of other formats to the receiver gateway,
the selection must occur prior to the establishment of the session.</t>
        </section>
        <section anchor="lock-assertion-claim">
          <name>Lock assertion Claim</name>
          <t>The actual encoded JSON string representation of the claim using the
format as specified by the corresponding Lock Assertion Claim Format value.</t>
        </section>
      </section>
      <section anchor="negotiation-of-security-protocols-and-parameters">
        <name>Negotiation of Security Protocols and Parameters</name>
        <t anchor="satp-negotiation-params-sec">The peer gateways in SATP must establish a TLS session between them prior to starting the transfer initiation stage (Stage-0). The TLS session continues until the transfer is completed at the end of the commitment establishment stage (Stage-3).</t>
        <section anchor="clients-and-servers">
          <name>Clients and Servers</name>
          <t anchor="satp-clients-servers">In the following steps, the sender gateway is referred to as the client while the receiver gateway as the server.</t>
          <t>Clients and servers MUST use the HTTPS protocol.</t>
          <t>Servers MUST support the use of the HTTPS POST method for the endpoint. It is NOT RECOMMENDED to support the use
of the HTTPS GET method, because the messages may change the state of the protocol and are not idempotent [RFC 9110].</t>
          <t>Clients MUST use the HTTPS POST method to send messages in this stage to the server.</t>
        </section>
        <section anchor="tls-secure-channel-establishment">
          <name>TLS Secure Channel Establishment</name>
          <t anchor="satp-tls-Established-sec">TLS 1.3 MUST be implemented to protect gateway communications.</t>
        </section>
        <section anchor="client-asserts-or-proves-identity">
          <name>Client asserts or proves identity</name>
          <t anchor="client-procedure-sec">The details of the assertion/verification step are specific to the chosen credential scheme and are outside the scope of this document.</t>
        </section>
        <section anchor="messages-can-now-be-exchanged">
          <name>Messages can now be exchanged</name>
          <t anchor="satp-msg-exchange-sec">Handshaking is complete at this point, and the client and server can begin exchanging SATP messages.</t>
        </section>
      </section>
    </section>
    <section anchor="overview-of-message-flows">
      <name>Overview of Message Flows</name>
      <t anchor="satp-flows-overview-section">The SATP message flows are logically divided into three (3) stages <xref target="ARCH"/>, with the preparatory stage denoted as Stage-0. How the tasks are achieved in Stage-0 is out of the scope of this specification.</t>
      <t>The Stage-1 flows pertains to the initialization of the transfer between the two gateways.</t>
      <t>After both gateways agree to commence the transfer at the start of Stage-2, the sender gateway G1 must deliver a signed assertion that it has correctly performed the relevant action on the asset within the origin network (NW1). Examples of actions by G1 include performing a temporary lock on the asset, or performing a permanent disablement (burn) of the asset in NW1.</t>
      <t>If that signed assertion is accepted by gateway G2, it must in return transmit a signed receipt to gateway G1 that it has correctly performed the relevant corresponding action on destination network (NW2). Examples of actions by G2 include creating (minting) a temporary asset under its control in NW2.</t>
      <t>The Stage-3 flows commit gateways G1 and G2 to the burn and mint in Stage-2. The sender gateway G1 must make the lock on the asset in the origin network NW1 to be permanent (burn). The receiver gateway G2 must assign (mint) the asset in the destination network NW2 to the correct beneficiary.</t>
      <t>The reader is directed to <xref target="ARCH"/> for further discussion of this model.</t>
      <artwork><![CDATA[
       App1  NW1          G1                     G2          NW2    App2
      ..|.....|............|......................|............|.....|..
        |     |            |       Stage 1        |            |     |
        |     |            |                      |            |     |
        |     |       (1.1)|--Transf. Proposal -->|            |     |
        |     |            |                      |            |     |
        |     |            |<--Proposal Receipt---|(1.2)       |     |
        |     |            |                      |            |     |
        |     |       (1.3)|---Transf. Commence-->|            |     |
        |     |            |                      |            |     |
        |     |            |<----ACK Commence-----|(1.4)       |     |
        |     |            |                      |            |     |
      ..|.....|............|......................|............|.....|..
        |     |            |       Stage 2        |            |     |
        |     |            |                      |            |     |
        |     |<---Lock----|(2.1)                 |            |     |
        |     |            |                      |            |     |
        |     |       (2.2)|----Lock-Assertion--->|            |     |
        |     |            |                      |            |     |
        |     |            |                 (2.3)|--Record--->|     |
        |     |            |                      |            |     |
        |     |            |<--Assertion Receipt--|(2.4)       |     |
        |     |            |                      |            |     |
      ..|.....|............|......................|............|.....|..
        |     |            |       Stage 3        |            |     |
        |     |            |                      |            |     |
        |     |       (3.1)|----Commit Prepare--->|            |     |
        |     |            |                      |            |     |
        |     |            |                 (3.2)|----Mint--->|     |
        |     |            |                      |            |     |
        |     |            |<----Commit Ready-----|(3.3)       |     |
        |     |            |                      |            |     |
        |     |<---Burn----|(3.4)                 |            |     |
        |     |            |                      |            |     |
        |     |       (3.5)|-----Commit Final---->|            |     |
        |     |            |                      |            |     |
        |     |            |                 (3.6)|---Assign-->|     |
        |     |            |                      |            |     |
        |     |            |<-----ACK Final-------|(3.7)       |     |
        |     |            |                      |            |     |
        |     |            |                      |            |     |
        |     |<--Record---|(3.8)                 |            |     |
        |     |            |                      |            |     |
        |     |       (3.9)|--Transfer Complete-->|            |     |
      ..|.....|............|......................|............|.....|..
                                Figure 2
]]></artwork>
    </section>
    <section anchor="identity-and-asset-verification-stage-stage-0">
      <name>Identity and Asset Verification Stage (Stage 0)</name>
      <t anchor="satp-Stage0-section">Prior to commencing the asset transfer from the sender gateway (client) to the recipient gateway (server),
both gateways must perform a number of verification steps.
The types of information required by both the sender and recipient are use-case dependent and asset-type dependent.</t>
      <t>The verifications include, but not limited to, the following:</t>
      <ul spacing="normal">
        <li>
          <t>Verification of the gateway signature public key: The sender gateway and receiver gateway must validate their respective signature public keys that will later be used to sign assertions and claims. This may include validating the X509 certificates of these keys.</t>
        </li>
        <li>
          <t>Gateway owner verification:
This is the verification of the identity (e.g. LEI) of the owners of the gateways.</t>
        </li>
        <li>
          <t>Gateway device and state validation:
This is the device attestation evidence <xref target="RFC9334"/>
that a gateway must collect and convey to each other,
where a verifier is assumed to be available to decode,
parse and appraise the evidence.</t>
        </li>
        <li>
          <t>Originator and beneficiary identity verification:
This is the identity and public-key of the entity (originator)
in the origin network seeking to transfer the asset to
another entity (beneficiary) in the destination network.</t>
        </li>
      </ul>
      <t>These are considered out of scope in the current specification,
and are assumed to have been successfully completed prior to
the commencement of the transfer initiation flow.
The reader is directed to <xref target="ARCH"/> for further discussion regarding Stage-0.</t>
    </section>
    <section anchor="transfer-initiation-stage-stage-1">
      <name>Transfer Initiation Stage (Stage 1)</name>
      <t anchor="satp-stage1-section">This section describes the transfer initiation stage, where the sender gateway and the receiver gateway prepare for the start of the asset transfer.</t>
      <t>The sender gateway proposes the set of transfer parameters and asset-related artifacts for the transfer to the receiver gateway. These are contained in the Transfer Initiation Claim.</t>
      <t>If the receiver gateway accepts the proposal, it returns a signed receipt message for the proposal indicating it agrees to proceed to the next stage. If the receiver gateway rejects any parameters or artifacts in the proposal, it can provide a counteroffer to the sender gateway by responding with a proposal reject message carrying alternative parameters.</t>
      <section anchor="transfer-initialization-claim">
        <name>Transfer Initialization Claim</name>
        <t anchor="satp-stage1-init-claim">This is set of artifacts pertaining to the asset that
must be agreed upon between the client (sender
gateway) and the server (recipient gateway).</t>
        <t>The format of the identity fields in this message, unless otherwise stated, is a JSON string.</t>
        <t>The Transfer Initialization Claim consists of the following:</t>
        <ul spacing="normal">
          <li>
            <t>digitalAssetId REQUIRED: This is the globally unique identifier for the digital asset located in the origin network.</t>
          </li>
          <li>
            <t>assetProfileId REQUIRED: This is the globally unique identifier for the asset-profile definition (document) on which the digital asset was issued.</t>
          </li>
          <li>
            <t>networkLockType REQUIRED: The default locking mechanism used for an asset. These can be (i) TIME_LOCK, (ii) HASH_LOCK, (iii) HASH_TIME_LOCK.</t>
          </li>
          <li>
            <t>assetLockExpirationTime OPTIONAL: The duration of time (in seconds) for an asset lock to expire in the network, if it is a HASH_TIME_LOCK or a TIME_LOCK.</t>
          </li>
          <li>
            <t>verifiedOriginatorEntityId REQUIRED: This is the identity data of the originator entity (person or organization) in the origin network. This information must be verified by the sender gateway.</t>
          </li>
          <li>
            <t>verifiedBeneficiaryEntityId REQUIRED: This is the identity data of the beneficiary entity (person or organization) in the destination network. This information must be verified by the receiver gateway.</t>
          </li>
          <li>
            <t>originatorPublicKey REQUIRED: This is the public key of the asset owner (originator) in the origin network or system.</t>
          </li>
          <li>
            <t>beneficiaryPublicKey REQUIRED: This is the public key of the beneficiary in the destination network.</t>
          </li>
          <li>
            <t>senderGatewaySignaturePublicKey REQUIRED: This is the public key of the key-pair used by the sender gateway to sign assertions and receipts.</t>
          </li>
          <li>
            <t>receiverGatewaySignaturePublicKey REQUIRED: This is the public key of the key-pair used by the receiver gateway to sign assertions and receipts.</t>
          </li>
          <li>
            <t>senderGatewayId REQUIRED: This is the identifier of the sender gateway.</t>
          </li>
          <li>
            <t>recipientGatewayId REQUIRED: This is the identifier of the receiver gateway.</t>
          </li>
          <li>
            <t>senderGatewayNetworkId REQUIRED: This is the identifier of the origin network or system behind the client.</t>
          </li>
          <li>
            <t>recipientGatewayNetworkId REQUIRED: This is the identifier of the destination network or system behind the server.</t>
          </li>
          <li>
            <t>senderGatewayDeviceIdentityPublicKey OPTIONAL: The device public key of the sender gateway (client).</t>
          </li>
          <li>
            <t>receiverGatewayDeviceIdentityPublicKey OPTIONAL: The device public key of the receiver gateway</t>
          </li>
          <li>
            <t>senderGatewayOwnerId OPTIONAL: This is the identity information of the owner or operator of the sender gateway.</t>
          </li>
          <li>
            <t>receiverGatewayOwnerId OPTIONAL: This is the identity information of the owner or operator of the recipient gateway.</t>
          </li>
        </ul>
        <t>Here is an example representation in JSON format (with the public keys in JWK being replaced with hexadecimal for brevity):</t>
        <t>{
  "digitalAssetId": "2c949e3c-5edb-4a2c-9ef4-20de64b9960d",
  "assetProfileId": "38561",
  "verifiedOriginatorEntityId": "CN=Alice, OU=Example Org Unit, O=Example, L=New York, C=US",
  "verifiedBeneficiaryEntityId": "CN=Bob, OU=Case Org Unit, O=Case, L=San Francisco, C=US",
  "originatorPublicKey": "0304b9f34d3898b27f85b3d88fa069a879abe14db5060dde466dd1e4a31ff75e44",
  "beneficiaryPublicKey": "02a7bc058e1c6f3a79601d046069c9b6d0cb8ea5afc99e6074a5997284756fc9ae",
  "senderGatewaySignaturePublicKey": "02a7bc058e1c6f3a79601d046069c9b6d0cb8ea5afc99e6074a5997284756fc9ae",
  "receiverGatewaySignaturePublicKey": "0243b12ada6515ada3bf99a7da32e84f00383b5765fd7701528e660449ba5ef260",
  "senderGatewayId": "GW1",
  "recipientGatewayId": "GW2",
  "senderGatewayNetworkId": "1",
  "recipientGatewayNetworkId": "43114",
  "senderGatewayDeviceIdentityPublicKey": "0245785e34b4a7b457dd4683a297ea3d78bab35f8b2583df55d9df8c69604d0e73",
  "receiverGatewayDeviceIdentityPublicKey": "03763f0bc48ff154cff45ea533a9d8a94349d65a45573e4de6ad6495b6e834312b",
  "senderGatewayOwnerId": "CN=GatewayOps, OU=GatewayOps Systems, O=GatewayOps LTD, L=Austin, C=US",
  "receiverGatewayOwnerId": "CN=BridgeSolutions, OU=BridgeSolutions Engineering, O=BridgeSolutions LTD, L=Austin, C=US"
}</t>
      </section>
      <section anchor="conveyance-of-gateway-and-network-capabilities">
        <name>Conveyance of Gateway and Network Capabilities</name>
        <t anchor="satp-stage1-conveyance">This is the set of parameters pertaining to the origin network and the destination network, and the technical capabilities supported by the peer gateways.</t>
        <t>Some network-specific parameters regarding the origin network may be relevant for a receiver gateway to evaluate its ability to process the proposed transfer.
For example, if the duration of the lock-time (networkLockExpirationTime) in the origin network is too short, a receiver gateway at the destination network may decline to proceed.</t>
        <t>The gateway capabilities list is as follows:</t>
        <ul spacing="normal">
          <li>
            <t>gatewayDefaultSignatureAlgorithm REQUIRED: The default digital signature algorithm (algorithm-id) from the IANA "JSON Web Signature and Encryption Algorithms" registry used by a gateway to sign claims.</t>
          </li>
          <li>
            <t>gatewaySupportedSignatureAlgorithms OPTIONAL: The list of other digital signature algorithms (algorithm-id) from the IANA "JSON Web Signature and Encryption Algorithms" registry supported by a gateway to sign claims</t>
          </li>
          <li>
            <t>networkLockType REQUIRED: The default locking mechanism used by a network. The values allowed are "TIME_LOCK", "HASH_LOCK", "HASH_TIME_LOCK". Future updates to this specification may define new values and implementations not supporting a value or not understanding a value for this field must return an appropriate error and cease the negotiation.</t>
          </li>
          <li>
            <t>networkLockExpirationTime REQUIRED: The duration of time (in integer seconds) for a lock to expire in the network.</t>
          </li>
          <li>
            <t>gatewayTlsScheme REQUIRED: Specify the TLS1.3 scheme.</t>
          </li>
        </ul>
        <t>Here is an example representation in JSON format:</t>
        <t><tt>
{
  "gatewayDefaultSignatureAlgorithm": "ES256",
  "gatewaySupportedSignatureAlgorithms": ["ES256", "RSA"],
  "networkLockType": "HASH_TIME_LOCK",
  "networkLockExpirationTime": 120,
  "gatewayTlsScheme": "TLS_AES_128_GCM_SHA256"
}
</tt></t>
      </section>
      <section anchor="transfer-proposal-message">
        <name>Transfer Proposal Message</name>
        <t anchor="satp-stage1-init-transfer-proposal">The purpose of this message is for the sender gateway as the client to initiate an asset transfer session with the receiver gateway as the server.</t>
        <t>The client transmits a proposal message that carries the claim related to the asset to be transferred. This message MUST be signed by the client.</t>
        <t>This message is sent from the client to the Transfer Initialization Endpoint at the server.</t>
        <t>The parameters of this message consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>version REQUIRED: SATP protocol Version, as a string "major.minor"; see section <xref format="counter" target="satp-protocol-version"/>.</t>
          </li>
          <li>
            <t>messageType REQUIRED: urn:ietf:params:satp:core:msgtype:transfer-proposal-msg.</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen by the client to identify the current session.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer.</t>
          </li>
          <li>
            <t>transferInitClaimFormat REQUIRED: The default format is JSON, with parts being base64 encoded as needed. The default format is denoted as "TRANSFER_INIT_CLAIM_FORMAT_1".</t>
          </li>
          <li>
            <t>transferInitClaim REQUIRED: The set of artifacts and parameters as the basis for the current transfer.</t>
          </li>
          <li>
            <t>gatewayAndNetworkCapabilities REQUIRED: The set of origin gateway and network parameters reported by the client to the server.</t>
          </li>
        </ul>
        <t>Here is an example of the message request body (with the public keys in JWK being replaced with hexadecimal for brevity):</t>
        <t><tt>
{
  "version": "1.0",
  "messageType": "urn:ietf:params:satp:core:msgtype:transfer-proposal-msg",
  "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
  "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "transferInitClaimFormat": "TRANSFER_INIT_CLAIM_FORMAT_1",
  "transferInitClaim": {
      "digitalAssetId": "2c949e3c-5edb-4a2c-9ef4-20de64b9960d",
      "assetProfileId": "38561",
      "networkLockType": "HASH_TIME_LOCK",
      "assetLockExpirationTime": 120,
      "verifiedOriginatorEntityId": "CN=Alice, OU=Example Org Unit, O=Example, L=New York, C=US",
      "verifiedBeneficiaryEntityId": "CN=Bob, OU=Case Org Unit, O=Case, L=San Francisco, C=US",
      "originatorPublicKey": "0304b9f34d3898b27f85b3d88fa069a879abe14db5060dde466dd1e4a31ff75e44",
      "beneficiaryPublicKey": "02a7bc058e1c6f3a79601d046069c9b6d0cb8ea5afc99e6074a5997284756fc9ae",
      "senderGatewaySignaturePublicKey": "02a7bc058e1c6f3a79601d046069c9b6d0cb8ea5afc99e6074a5997284756fc9ae",
      "receiverGatewaySignaturePublicKey": "0243b12ada6515ada3bf99a7da32e84f00383b5765fd7701528e660449ba5ef260",
      "senderGatewayId": "GW1",
      "recipientGatewayId": "GW2",
      "senderGatewayNetworkId": "1",
      "recipientGatewayNetworkId": "43114",
      "senderGatewayDeviceIdentityPublicKey": "0245785e34b4a7b457dd4683a297ea3d78bab35f8b2583df55d9df8c69604d0e73",
      "receiverGatewayDeviceIdentityPublicKey": "03763f0bc48ff154cff45ea533a9d8a94349d65a45573e4de6ad6495b6e834312b",
      "senderGatewayOwnerId": "CN=GatewayOps, OU=GatewayOps Systems, O=GatewayOps LTD, L=Austin, C=US",
      "receiverGatewayOwnerId": "CN=BridgeSolutions, OU=BridgeSolutions Engineering, O=BridgeSolutions LTD, L=Austin, C=US"
  },
  "gatewayAndNetworkCapabilities": {
      "gatewayDefaultSignatureAlgorithm": "ES256",
      "gatewaySupportedSignatureAlgorithms": ["ES256", "RSA"],
      "networkLockType": "HASH_TIME_LOCK",
      "networkLockExpirationTime": 120,
      "gatewayTlsScheme": "TLS_AES_128_GCM_SHA256"
  }
}
</tt></t>
      </section>
      <section anchor="transfer-proposal-receipt-message">
        <name>Transfer Proposal Receipt Message</name>
        <t anchor="satp-stage1-init-receipt">The purpose of this message is for the server to indicate explicit
acceptance of the parameters in the claim part of the transfer proposal message.</t>
        <t>The message MUST be signed by the server.</t>
        <t>The message is sent from the server to the Transfer Proposal Endpoint at the client.</t>
        <t>The parameters of this message consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>version REQUIRED: SATP protocol Version, as a string "major.minor"; see section <xref format="counter" target="satp-protocol-version"/>.</t>
          </li>
          <li>
            <t>messageType REQUIRED: urn:ietf:params:satp:core:msgtype:proposal-receipt-msg.</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen by the client to identify the current session.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer.</t>
          </li>
          <li>
            <t>hashTransferInitClaim REQUIRED: Hash of the Transfer Initialization Claim received in the Transfer Proposal Message.</t>
          </li>
          <li>
            <t>timestamp REQUIRED: timestamp referring to when the Initialization Request Message was received.</t>
          </li>
        </ul>
        <t>Here is an example of the message request body:</t>
        <t>{
  "version": "1.0",
  "messageType": "urn:ietf:params:satp:core:msgtype:proposal-receipt-msg",
  "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
  "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "hashTransferInitClaim": "154dfaf0406038641e7e59509febf41d9d5d80f367db96198690151f4758ca6e",
  "timestamp": "2024-10-03T12:02+00Z",
}</t>
      </section>
      <section anchor="reject-message">
        <name>Reject Message</name>
        <t anchor="satp-stage1-init-reject">The purpose of this message is for the server to indicate explicit
rejection of the previous message received from the client.
This message can be sent at any time in the session and is taken to mean an immediate termination of the session.</t>
        <t>The server MUST include error details using the Problem Details format defined in <xref target="RFC9457"/>
(see section <xref format="counter" target="satp-protocol-errors-section"/>).</t>
        <t>The message MUST be signed by the server.</t>
      </section>
      <section anchor="transfer-commence-message">
        <name>Transfer Commence Message</name>
        <t anchor="satp-transfer-commence-sec">The purpose of this message is for the client to signal to
the server that the client is ready to start the transfer of the
digital asset. This message must be signed by the client.</t>
        <t>This message is sent by the client as a response to the Transfer Proposal Receipt Message previously
received from the server.</t>
        <t>This message is sent by the client to the Transfer Commence Endpoint at the server.</t>
        <t>The parameters of this message consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>messageType REQUIRED: MUST be the value urn:ietf:params:satp:core:msgtype:transfer-commence-msg.</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen earlier by the client in the Initialization Request Message.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer.</t>
          </li>
          <li>
            <t>hashTransferInitClaim REQUIRED: Hash of the Transfer Initialization Claim in the Transfer Proposal message.</t>
          </li>
          <li>
            <t>hashPrevMessage REQUIRED.  The cryptographic hash of the last message, in this case the
Transfer Proposal Receipt message. The default hash algorithm is SHA256.</t>
          </li>
        </ul>
        <t>For example, the client makes the following HTTP request using TLS:</t>
        <t>{
    "messageType": "urn:ietf:params:satp:core:msgtype:transfer-commence-msg",
    "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
    "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
    "hashTransferInitClaim": "154dfaf0406038641e7e59509febf41d9d5d80f367db96198690151f4758ca6e",
    "hashPrevMessage": "0b0aecc2680e0d8a86bece6b54c454fba67068799484f477cdf2f87e6541db66",
}</t>
      </section>
      <section anchor="transfer-commence-sec-example">
        <name>Commence Response Message (ACK-Commence)</name>
        <t anchor="satp-transfer-commence-resp-sec">The purpose of this message is for the server to indicate agreement
to proceed with the asset transfer, based on the artifacts
found in the previous Transfer Proposal Message.</t>
        <t>This message is sent by the server to the Transfer Commence Endpoint at the client.</t>
        <t>The message MUST be signed by the server.</t>
        <t>The parameters of this message consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>messageType REQUIRED: urn:ietf:params:satp:core:msgtype:ack-commence-msg</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen earlier by the client in the Initialization Request Message.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer.</t>
          </li>
          <li>
            <t>hashPrevMessage REQUIRED. The cryptographic hash of the last message, in this case the Transfer Commence Message. The default hash algorithm is SHA256.</t>
          </li>
        </ul>
        <t>An example of a success response could be as follows:</t>
        <t>{
  "messageType": "urn:ietf:params:satp:core:msgtype:ack-commence-msg",
  "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
  "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "hashPrevMessage": "dd5a61a26fc8f5d72e5ca6052c2a1fca1613115e5582d9417d336375c196db89",
}</t>
      </section>
    </section>
    <section anchor="lock-assertion-stage-stage-2">
      <name>Lock Assertion Stage (Stage 2)</name>
      <t anchor="satp-stage2-section">The messages in this stage pertain to the sender gateway providing
the recipient gateway with a signed assertion that the asset in the origin network
has been locked or disabled and under the control of the sender gateway.</t>
      <t>In the following steps, the sender gateway takes the role of the client
while the recipient gateway takes the role of the server.</t>
      <t>The flow follows a request-response model.
The client makes a request (POST) to the Lock-Assertion Endpoint at the server.</t>
      <section anchor="lock-assertion-message">
        <name>Lock Assertion Message</name>
        <t anchor="satp-lock-assertion-message-sec">The purpose of this message is for the client (sender gateway) to
convey a signed claim to the server (receiver gateway) declaring that the asset in
question has been locked or escrowed by the client in the origin
network (e.g. to prevent double-spending).</t>
        <t>The format of the claim is dependent on the network or system
of the client and is outside the scope of this specification.</t>
        <t>This message is sent from the client to the Lock Assertion Endpoint at the server.</t>
        <t>The server must validate the claim (payload)
in this message prior to the next step.</t>
        <t>The message MUST be signed by the client.</t>
        <t>The parameters of this message consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>messageType REQUIRED: urn:ietf:params:satp:core:msgtype:lock-assert-msg.</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen earlier by the client in the Initialization Request Message.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer.</t>
          </li>
          <li>
            <t>lockAssertionClaimFormat REQUIRED. The default format is JSON, with parts being base64 encoded as needed. The default format is denoted as "LOCK_ASSERTION_CLAIM_FORMAT_1".</t>
          </li>
          <li>
            <t>lockAssertionClaim REQUIRED: The lock assertion claim or statement by the client.</t>
          </li>
          <li>
            <t>lockAssertionExpiration REQUIRED. The expiration date and time <xref target="DATETIME"/> of the lock or escrow upon the asset on the origin network.</t>
          </li>
          <li>
            <t>hashPrevMessage REQUIRED. The cryptographic hash of the last message. The default hash algorithm is SHA256.</t>
          </li>
        </ul>
        <t>Example:</t>
        <t>{
  "messageType": "urn:ietf:params:satp:core:msgtype:lock-assert-msg",
  "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
  "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "lockAssertionClaimFormat": "LOCK_ASSERTION_CLAIM_FORMAT_1",
  "lockAssertionClaim": {},
  "lockAssetionExpiration": "2024-12-23T23:59:59.999Z",
  "hashPrevMessage": "b2c3e916703c4ee4494f45bcf52414a2c3edfe53643510ff158ff4a406678346",
}</t>
      </section>
      <section anchor="lock-assertion-receipt-message">
        <name>Lock Assertion Receipt Message</name>
        <t anchor="satp-lock-assertion-receipt-section">The purpose of this message is for the server (receiver gateway)
to indicate acceptance of the claim in the lock-assertion message
delivered by the client (sender gateway) in the previous message.</t>
        <t>This message is sent from the server to the Assertion Receipt Endpoint
at the client.</t>
        <t>The message MUST be signed by the server.</t>
        <t>The parameters of this message consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>messageType REQUIRED: urn:ietf:params:satp:core:msgtype:assertion-receipt-msg.</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen earlier by the client in the Initialization Request Message.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer.</t>
          </li>
          <li>
            <t>hashPrevMessage REQUIRED. The cryptographic hash of the last message. The default hash algorithm is SHA256.</t>
          </li>
        </ul>
        <t>Example:</t>
        <t>{
  "messageType": "urn:ietf:params:satp:core:msgtype:assertion-receipt-msg",
  "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
  "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "hashPrevMessage": "16c983122d7506c78f906c15ca1dcc7142a0fa94552cdea9578fe87419c2c5d0",
}</t>
      </section>
    </section>
    <section anchor="commitment-preparation-and-finalization-stage-3">
      <name>Commitment Preparation and Finalization (Stage 3)</name>
      <t anchor="satp-phase3-sec">This section describes the transfer commitment agreement between the
client (sender gateway) and the server (receiver gateway).</t>
      <t>This stage must be completed within the time specified
in the lockAssertionExpiration value in the lock-assertion message.
This value is the time when the lock or escrow upon the asset will expire on the origin network.</t>
      <t>The completion of this stage is denoted by the signed Commit-Final Acknowledgement Receipt Message
sent from the receiver gateway (server) to the sender gateway (client).
If the lockAssertionExpiration timer at the client expires before the Commit-Final Acknowledgement Receipt Message
is received by the client, the client may terminate the session.</t>
      <t>The flow follows a request-response model.
The client makes a request (POST) to the Transfer Commitment endpoint at the server.</t>
      <t>The client and server may be required to sign certain messages
in order to provide standalone proof (for non-repudiation) independent of the
secure channel between the client and server.
This proof may be required for audit verifications post-event.</t>
      <section anchor="commit-preparation-message-commit-prepare">
        <name>Commit Preparation Message (Commit-Prepare)</name>
        <t anchor="satp-commit-preparation-message-sec">The purpose of this message is for the client to indicate
its readiness to begin the commitment of the transfer.</t>
        <t>This message is sent from the client to the Commit Prepare Endpoint at the server.</t>
        <t>The message MUST be signed by the client.</t>
        <t>The parameters of this message consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>messageType REQUIRED: It MUST be the value urn:ietf:params:satp:core:msgtype:commit-prepare-msg</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen earlier by the client in the Initialization Request Message.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer.</t>
          </li>
          <li>
            <t>hashPrevMessage REQUIRED. The cryptographic hash of the last message. The default hash algorithm is SHA256.</t>
          </li>
        </ul>
        <t>Example:</t>
        <t>{
  "messageType": "urn:ietf:params:satp:core:msgtype:commit-prepare-msg",
  "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
  "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "hashPrevMessage": "399bdadc07fe0bd57c4dfdd6cc176ceeca50a5e744f774154eccbeee8908fbaa",
}</t>
      </section>
      <section anchor="commit-ready-message-commit-ready">
        <name>Commit Ready Message (Commit-Ready)</name>
        <t anchor="satp-commit-ready-section">The purpose The purpose of this message is for the server to indicate to the client that:
(i) the server has created (minted) an equivalent asset in the destination
network;
(ii) that the newly minted asset has been self-assigned to the server;
and (iii) that the server is ready to proceed to the next step.</t>
        <t>This message is sent from the server to the Commit Ready Endpoint at the client.</t>
        <t>The message MUST be signed by the server.</t>
        <t>The parameters of this message consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>messageType REQUIRED: It MUST be the value urn:ietf:params:satp:core:msgtype:commit-ready-msg.</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen earlier by client in the Initialization Request Message.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer.</t>
          </li>
          <li>
            <t>hashPrevMessage REQUIRED. The cryptographic hash of the last message. The default hash algorithm is SHA256.</t>
          </li>
          <li>
            <t>mintAssertionFormat REQUIRED. The default format is JSON, with parts being base64 encoded as needed. The default format is denoted as "MINT_ASSERTION_CLAIM_FORMAT_1".</t>
          </li>
          <li>
            <t>mintAssertionClaim REQUIRED: The mint assertion claim or statement by the server.</t>
          </li>
        </ul>
        <t>Example:</t>
        <t>{
  "messageType": "urn:ietf:params:satp:core:msgtype:commit-ready-msg",
  "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
  "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "hashPrevMessage": "8dcc8dc4e6c2c979474b42d24d3747ce4607a92637d1a7b294857ff7288b8e46",
  "mintAssertionClaimFormat": "MINT_ASSERTION_CLAIM_FORMAT_1",
  "mintAssertionClaim": {},
}</t>
      </section>
      <section anchor="commit-final-assertion-message-commit-final">
        <name>Commit Final Assertion Message (Commit-Final)</name>
        <t anchor="satp-commit-final-message-section">The purpose of this message is for the client to indicate to the server
that the client (sender gateway) has completed the extinguishment (burn)
of the asset in the origin network.</t>
        <t>The message MUST contain a standalone claim related
to the extinguishment of the asset by the client.
The standalone claim MUST be signed by the client.</t>
        <t>This message is sent from the client to the Commit Final Assertion Endpoint at the server.</t>
        <t>The message MUST be signed by the client.</t>
        <t>The parameters of this message consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>messageType REQUIRED: It MUST be the value urn:ietf:params:satp:core:msgtype:commit-final-msg.</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen earlier by the client in the Initialization Request Message.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer.</t>
          </li>
          <li>
            <t>hashPrevMessage REQUIRED. The cryptographic hash of the last message. The default hash algorithm is SHA256.</t>
          </li>
          <li>
            <t>burnAssertionClaimFormat REQUIRED. The default format is JSON, with parts being base64 encoded as needed. The default format is denoted as "BURN_ASSERTION_CLAIM_FORMAT_1".</t>
          </li>
          <li>
            <t>burnAssertionClaim REQUIRED: The burn assertion signed claim or statement by the client.</t>
          </li>
        </ul>
        <t>Example:</t>
        <t>{
  "messageType": "urn:ietf:params:satp:core:msgtype:commit-final-msg",
  "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
  "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "hashPrevMessage": "b92f13007216c58f2b51a8621599c3aef6527b02c8284e90c6a54a181d898e02",
  "burnAssertionClaimFormat": "BURN_ASSERTION_CLAIM_FORMAT_1",
  "burnAssertionClaim": {},
}</t>
      </section>
      <section anchor="commit-final-acknowledgement-receipt-message-ack-final-receipt">
        <name>Commit-Final Acknowledgement Receipt Message (ACK-Final-Receipt)</name>
        <t anchor="satp--final-ack-section">The purpose of this message is to indicate to the client that the server has
completed the assignment of the newly minted asset to
the intended beneficiary at the destination network.</t>
        <t>This message is sent from the server to the Commit Final Receipt Endpoint at the client.</t>
        <t>The message MUST be signed by the server.</t>
        <t>The parameters of this message consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>messageType REQUIRED: It MUST be the value urn:ietf:params:satp:core:msgtype:ack-commit-final-msg.</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen earlier by client in the Initialization Request Message.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer.</t>
          </li>
          <li>
            <t>hashPrevMessage REQUIRED. The cryptographic hash of the last message. The default hash algorithm is SHA256.</t>
          </li>
          <li>
            <t>assignmentAssertionClaimFormat REQUIRED. The default format is JSON, with parts being base64 encoded as needed. The default format is denoted as "ASSIGNMENT_ASSERTION_CLAIM_FORMAT_1".</t>
          </li>
          <li>
            <t>assignmentAssertionClaim REQUIRED: The claim or statement by the server that the asset has been assigned by the server to the intended beneficiary.</t>
          </li>
        </ul>
        <t>Example:</t>
        <t>{
  "messageType": "urn:ietf:params:satp:core:msgtype:ack-commit-final-msg",
  "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
  "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "hashPrevMessage": "9c8f07c22ccf6888fc0306fee0799325efb87dfd536d90bb47d97392f020e998",
  "assignmentAssertionClaimFormat": "ASSIGNMENT_ASSERTION_CLAIM_FORMAT_1",
  "assignmentAssertionClaim": {},
}</t>
      </section>
      <section anchor="transfer-complete-message">
        <name>Transfer Complete Message</name>
        <t anchor="satp-transfer-complete-message-section">The purpose of this message is for the client to indicate to the server that
the asset transfer session (identified by sessionId)
has been completed and no further messages are to be
expected from the client in regards to this transfer instance.</t>
        <t>The message closes the first message of Stage 2 (Transfer Commence Message).</t>
        <t>This message is sent from the client to the Transfer Complete Endpoint at the server.</t>
        <t>The message MUST be signed by the client.</t>
        <t>The parameters of this message consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>messageType REQUIRED: It MUST be the value urn:ietf:params:satp:core:msgtype:commit-transfer-complete-msg.</t>
          </li>
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen earlier by the client in the Initialization Request Message.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer.</t>
          </li>
          <li>
            <t>hashPrevMessage REQUIRED. The cryptographic hash of the last message. The default hash algorithm is SHA256.</t>
          </li>
          <li>
            <t>hashTransferCommence REQUIRED: The hash of the Transfer Commence message at the start of Stage 2.</t>
          </li>
        </ul>
        <t>Example:</t>
        <t>{
  "messageType": "urn:ietf:params:satp:core:msgtype:commit-transfer-complete-msg",
  "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
  "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "hashPrevMessage": "9c8f07c22ccf6888fc0306fee0799325efb87dfd536d90bb47d97392f020e998",
  "hashTransferCommence": "4ba76c69265f4215b4e2d2f24fe56e708512fdb49e27f50d2ac0095928e1531b",
}</t>
      </section>
      <section anchor="error-message">
        <name>Error Message</name>
        <t anchor="satp-error-msg-payloads">The purpose of this message is for either the sender or the receiver gateways to indicate to its peer that an error has occurred within the transfer protocol flow.</t>
        <t>The default action upon receiving an error message is the immediate termination of the session.</t>
        <t>The error message format and parameters are described in section <xref format="counter" target="satp-protocol-errors-section"/>.</t>
      </section>
      <section anchor="session-abort-message">
        <name>Session Abort Message</name>
        <t anchor="satp-session-abort-msg-section">The purpose of this message is to indicate that one of the peer gateways has decided not to proceed with the session. No further messages will be delivered after the abort message.</t>
        <ul spacing="normal">
          <li>
            <t>messageType REQUIRED: It MUST be the value urn:ietf:params:satp:core:msgtype:session-abort-msg.</t>
          </li>
          <li>
            <t>sessionId REQUIRED: This is the current session in which the abort occurs.</t>
          </li>
        </ul>
        <t>The effect of session aborts on the state of the asset is discussed below.</t>
      </section>
      <section anchor="satp-session-resumption">
        <name>SATP Session Resumption</name>
        <t anchor="satp-session-resume-section">Session recovery and resumption is not supported in the current version of the SATP protocol.
These may be addressed in a future version of SATP, or be defined in a separate specification.</t>
        <t>The reader interested in this topic is directed to <xref target="BELC"/> for further discussion.</t>
      </section>
    </section>
    <section anchor="error-messages">
      <name>Error Messages</name>
      <t anchor="satp-alert-error-messages">SATP distinguishes between session termination initiated by the user at the application layer from session termination cased by errors at the SATP protocol layer.</t>
      <t>A gateway can transmit an error message at any point in the SATP protocol flow to its peer gateway.</t>
      <t>The default action to be taken by the transitting gateway is to terminate the session immediately.</t>
      <t>Error messages at the SATP protocol layer is distinct from time-outs due to gateway crashes.</t>
      <section anchor="session-termination-notification">
        <name>Session Termination Notification</name>
        <t anchor="satp-session-termination-notification">Session closure initiated at the application layer is not considered to be an error at the SATP protocol layer.</t>
        <t>The message type used for application-initiated session termination: session-abort-msg.</t>
        <t>The message type used to indicate protocols errors: error-msg.</t>
        <t>A gateway can transmit the session abort message at any point in the SATP protocol flow. No further messages will be sent by the gateway.</t>
        <t>Any data received after the session termination message MUST be ignored.</t>
      </section>
      <section anchor="connection-errors">
        <name>Connection Errors</name>
        <t anchor="satp-errors-connection-section">Errors may occur at the connection layer, independent of the flows at the SATP layer and errors there.</t>
        <t>(a) connectionError: There is an error in the TLS session establishment (TLS error codes should be reported-up to the gateway level)</t>
        <t>(b) badCertificate: The gateway TLS certificate was corrupt, contained signatures, that did not verify correctly, etc.  (Some common TLS level errors: unsupported_certificate, certificate_revoked, certificate_expired, certificate_unknown, unknown_ca).</t>
        <t>Connection errors resulting in the time-out of the session MUST result in the termination of the transfer session.
In the case of a transfer session termination, gateways SHOULD release its local computing resources and release asset-locks in their respective networks.</t>
      </section>
      <section anchor="satp-protocol-errors">
        <name>SATP Protocol Errors</name>
        <t anchor="satp-protocol-errors-section">The errors at the SATP level pertain to protocol flow and the information carried within each message. These are enumerated in <xref target="error-code-table"/>.</t>
        <t>Many of the errors due to invalid identifiers (e.g., invalid transferContextId, invalid digitalAssetId) may arise within
the execution of the SATP protocol because these identifiers depart from those agreed-upon in Transfer Initialization Claim in the transfer proposal message.
The validity of these identifiers must be verified by the gateways during set-up stage (Stage-0), which is beyond the scope of the current specification.
See section <xref format="counter" target="satp-Stage0-section"/> on the Identity and Asset Verification Stage.</t>
        <t>SATP error messages MUST be encoded as Problem Details objects as defined in <xref target="RFC9457"/>, with content type <tt>application/problem+json</tt>. The <tt>type</tt> field of the Problem Details object MUST be set to a URN of the form <tt>urn:ietf:params:satp:core:error:&lt;code&gt;</tt>, where <tt>&lt;code&gt;</tt> is the error code from the error code table in section <xref format="counter" target="error-code-table"/>. The <tt>status</tt> field MUST match the HTTP status of the response carrying the error and MUST be consistent with the HTTP Status column in the table below.</t>
        <t>The parameters of error messages consist of the following:</t>
        <ul spacing="normal">
          <li>
            <t>messageType REQUIRED: urn:ietf:params:satp:core:msgtype:error-msg</t>
          </li>
          <li>
            <t>type REQUIRED: A URI reference identifying the error type causing the rejection, as defined in <xref target="RFC9457"/>. MUST be a URN of the form
<tt>urn:ietf:params:satp:core:error:&lt;code&gt;</tt> where <tt>&lt;code&gt;</tt> is the error code from the SATP error code table (see section <xref format="counter" target="error-code-table"/>).</t>
          </li>
          <li>
            <t>status REQUIRED: The HTTP status code for this error as an integer, as defined in <xref target="RFC9457"/>. MUST match the HTTP response status and be consistent with the HTTP Status column of the protocol error codes (see section <xref format="counter" target="error-code-table"/>).</t>
          </li>
          <li>
            <t>title REQUIRED: A short, human-readable summary of the error type, as defined in <xref target="RFC9457"/>. SHOULD correspond to the Description
column of the protocol error codes (see section <xref format="counter" target="error-code-table"/>).</t>
          </li>
          <li>
            <t>detail OPTIONAL: A human-readable explanation specific to this occurrence of the error, as defined in <xref target="RFC9457"/>.</t>
          </li>
          <li>
            <t>version REQUIRED: SATP protocol Version, as a string "major.minor"; see section <xref format="counter" target="satp-protocol-version"/>.</t>
          </li>
        </ul>
        <t>This should assist in diagnosing problems when different versions of the standard are used.</t>
        <ul spacing="normal">
          <li>
            <t>sessionId REQUIRED: A unique identifier chosen by the client to identify the current session.</t>
          </li>
          <li>
            <t>transferContextId REQUIRED: A unique identifier used to identify the current transfer session at the application layer. Note that the transferContextId is always included, whereas the instance defined in <xref target="RFC9457"/> is optional, but if supplied, must also contain the transferContextId. The transferContextId is used in all messages, whereas instance is specific to errror messages.</t>
          </li>
          <li>
            <t>instance OPTIONAL: A URI reference identifying the specific occurrence of the error, as defined in <xref target="RFC9457"/>. If supplied, it MUST contain the transferContextId.</t>
          </li>
          <li>
            <t>prevMsgType OPTIONAL: The message type of the previous SATP message that triggered the error. This is a SATP-specific extension field (see <xref target="RFC9457"/>).</t>
          </li>
          <li>
            <t>hashPrevMessage REQUIRED: The cryptographic hash of the last message that caused the rejection to occur. The default hash algorithm is SHA256.</t>
          </li>
          <li>
            <t>timestamp REQUIRED: timestamp of this message.</t>
          </li>
        </ul>
        <t>Here is an example of the error message body:</t>
        <t>{
  "messageType": "urn:ietf:params:satp:core:msgtype:error-msg",
  "type": "urn:ietf:params:satp:core:error:err_1.1.11",
  "status": 422,
  "title": "invalid digitalAssetId",
  "version": "1.0",
  "sessionId": "d66a567c-11f2-4729-a0e9-17ce1faf47c1",
  "transferContextId": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "instance": "89e04e71-bba2-4363-933c-262f42ec07a0",
  "prevMsgType": "urn:ietf:params:satp:core:msgtype:transfer-proposal-msg"
  "hashPrevMessage": "154dfaf0406038641e7e59509febf41d9d5d80f367db96198690151f4758ca6e",
  "timestamp": "2024-10-03T12:02+00Z",
}</t>
      </section>
      <section anchor="protocol-errors-codes">
        <name>Protocol Errors Codes</name>
        <t anchor="error-code-table">The table below defines the error codes used in SATP protocol messages. The error codes are not registered with IANA and are defined solely
in this document.</t>
        <t>Many of the errors due to invalid identifiers (e.g., invalid transferContextId, invalid digitalAssetId) may arise within
the execution of the SATP protocol because these identifiers depart from those agreed-upon in Transfer Initialization Claim in the transfer proposal message.
The validity of these identifiers must be verified by the gateways during set-up stage (Stage-0), which is beyond the scope of the current specification.
See section <xref format="counter" target="satp-Stage0-section"/> on the Identity and Asset Verification Stage.</t>
        <t>In the following table, each entry consists of:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Code</strong>: The enumeration string (e.g., err_3.3.1)</t>
          </li>
          <li>
            <t><strong>Category</strong>: The protocol stage or message type (e.g., Commit Ready errors)</t>
          </li>
          <li>
            <t><strong>Type</strong>: The error type (e.g., badly formed message)</t>
          </li>
          <li>
            <t><strong>Description</strong>: A brief description (e.g., mismatch transferContextId)</t>
          </li>
          <li>
            <t><strong>HTTP Status</strong>: The HTTP status code <xref target="RFC9110"/> associated with this error</t>
          </li>
        </ul>
        <table>
          <thead>
            <tr>
              <th align="left">Code</th>
              <th align="left">Category</th>
              <th align="left">Type</th>
              <th align="left">Description</th>
              <th align="left">HTTP Status</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">err_0.1.1</td>
              <td align="left">General errors</td>
              <td align="left">badly formed message</td>
              <td align="left">invalid message type</td>
              <td align="left">400</td>
            </tr>
            <tr>
              <td align="left">err_0.1.2</td>
              <td align="left">General errors</td>
              <td align="left">authorization error</td>
              <td align="left">insufficient permissions</td>
              <td align="left">403</td>
            </tr>
            <tr>
              <td align="left">err_0.1.3</td>
              <td align="left">General errors</td>
              <td align="left">badly formed message</td>
              <td align="left">bad signature</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.1</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">invalid transferContextId</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.2</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">invalid sessionId</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.3</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">incorrect transferInitClaimFormat</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.11</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed claim</td>
              <td align="left">invalid digitalAssetId</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.12</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed claim</td>
              <td align="left">invalid assetProfileId</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.13</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed claim</td>
              <td align="left">invalid verifiedOriginatorEntityId</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.14</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed claim</td>
              <td align="left">invalid verifiedBeneficiaryEntityId</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.15</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed claim</td>
              <td align="left">invalid originatorPublicKey</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.16</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed claim</td>
              <td align="left">invalid beneficiaryPublicKey</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.17</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed claim</td>
              <td align="left">invalid senderGatewaySignaturePublicKey</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.18</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed claim</td>
              <td align="left">invalid receiverGatewaySignaturePublicKey</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.19</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed claim</td>
              <td align="left">invalid senderGatewayId</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.20</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed claim</td>
              <td align="left">invalid recipientGatewayId</td>
              <td align="left">422</td>
            </tr>
            <tr>
              <td align="left">err_1.1.31</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed parameter</td>
              <td align="left">unsupported gatewayDefaultSignatureAlgorithm</td>
              <td align="left">415</td>
            </tr>
            <tr>
              <td align="left">err_1.1.32</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed parameter</td>
              <td align="left">unsupported networkLockType</td>
              <td align="left">415</td>
            </tr>
            <tr>
              <td align="left">err_1.1.33</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed parameter</td>
              <td align="left">unsupported networkLockExpirationTime</td>
              <td align="left">415</td>
            </tr>
            <tr>
              <td align="left">err_1.1.34</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed parameter</td>
              <td align="left">unsupported gatewayTlsScheme</td>
              <td align="left">415</td>
            </tr>
            <tr>
              <td align="left">err_1.1.35</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed parameter</td>
              <td align="left">unsupported gatewayLoggingProfile</td>
              <td align="left">415</td>
            </tr>
            <tr>
              <td align="left">err_1.1.36</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed parameter</td>
              <td align="left">unsupported gatewayAccessControlProfile</td>
              <td align="left">415</td>
            </tr>
            <tr>
              <td align="left">err_1.2.1</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch transferContextId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_1.2.2</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch sessionId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_1.2.3</td>
              <td align="left">Transfer Proposal/Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashTransferInitClaim</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_1.3.1</td>
              <td align="left">Transfer Commence errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch transferContextId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_1.3.2</td>
              <td align="left">Transfer Commence errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch sessionId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_1.3.3</td>
              <td align="left">Transfer Commence errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashTransferInitClaim</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_1.3.4</td>
              <td align="left">Transfer Commence errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashPrevMessage</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_1.4.1</td>
              <td align="left">ACK Commence errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch transferContextId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_1.4.2</td>
              <td align="left">ACK Commence errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch sessionId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_1.4.3</td>
              <td align="left">ACK Commence errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashPrevMessage</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_2.2.1</td>
              <td align="left">Lock Assertion errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch transferContextId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_2.2.2</td>
              <td align="left">Lock Assertion errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch sessionId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_2.2.3</td>
              <td align="left">Lock Assertion errors</td>
              <td align="left">badly formed message</td>
              <td align="left">unsupported lockAssertionClaimFormat</td>
              <td align="left">415</td>
            </tr>
            <tr>
              <td align="left">err_2.2.4</td>
              <td align="left">Lock Assertion errors</td>
              <td align="left">badly formed message</td>
              <td align="left">unsupported lockAssertionExpiration</td>
              <td align="left">415</td>
            </tr>
            <tr>
              <td align="left">err_2.2.5</td>
              <td align="left">Lock Assertion errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashPrevMessage</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_2.2.7</td>
              <td align="left">Lock Assertion errors</td>
              <td align="left">semantic error</td>
              <td align="left">asset not found</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_2.2.8</td>
              <td align="left">Lock Assertion errors</td>
              <td align="left">semantic error</td>
              <td align="left">asset already locked</td>
              <td align="left">409</td>
            </tr>
            <tr>
              <td align="left">err_2.2.9</td>
              <td align="left">Lock Assertion errors</td>
              <td align="left">semantic error</td>
              <td align="left">asset lock expired</td>
              <td align="left">410</td>
            </tr>
            <tr>
              <td align="left">err_2.4.1</td>
              <td align="left">Lock Assertion Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch transferContextId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_2.4.2</td>
              <td align="left">Lock Assertion Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch sessionId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_2.4.3</td>
              <td align="left">Lock Assertion Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashPrevMessage</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.1.1</td>
              <td align="left">Commit Preparation errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch transferContextId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.1.2</td>
              <td align="left">Commit Preparation errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch sessionId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.1.3</td>
              <td align="left">Commit Preparation errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashPrevMessage</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.3.1</td>
              <td align="left">Commit Ready errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch transferContextId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.3.2</td>
              <td align="left">Commit Ready errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch sessionId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.3.3</td>
              <td align="left">Commit Ready errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashPrevMessage</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.3.4</td>
              <td align="left">Commit Ready errors</td>
              <td align="left">badly formed message</td>
              <td align="left">unsupported mintAssertionFormat</td>
              <td align="left">415</td>
            </tr>
            <tr>
              <td align="left">err_3.5.1</td>
              <td align="left">Commit Final Assertion errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch transferContextId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.5.2</td>
              <td align="left">Commit Final Assertion errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch sessionId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.5.3</td>
              <td align="left">Commit Final Assertion errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashPrevMessage</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.5.4</td>
              <td align="left">Commit Final Assertion errors</td>
              <td align="left">badly formed message</td>
              <td align="left">unsupported burnAssertionClaimFormat</td>
              <td align="left">415</td>
            </tr>
            <tr>
              <td align="left">err_3.7.1</td>
              <td align="left">Commit Final Ack Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch transferContextId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.7.2</td>
              <td align="left">Commit Final Ack Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch sessionId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.7.3</td>
              <td align="left">Commit Final Ack Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashPrevMessage</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.7.4</td>
              <td align="left">Commit Final Ack Receipt errors</td>
              <td align="left">badly formed message</td>
              <td align="left">unsupported assignmentAssertionClaimFormat</td>
              <td align="left">415</td>
            </tr>
            <tr>
              <td align="left">err_3.9.1</td>
              <td align="left">Transfer Complete errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch transferContextId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.9.2</td>
              <td align="left">Transfer Complete errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch sessionId</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.9.3</td>
              <td align="left">Transfer Complete errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashPrevMessage</td>
              <td align="left">404</td>
            </tr>
            <tr>
              <td align="left">err_3.9.4</td>
              <td align="left">Transfer Complete errors</td>
              <td align="left">badly formed message</td>
              <td align="left">mismatch hashTransferCommence</td>
              <td align="left">404</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="effectiveness-of-session-aborts">
        <name>Effectiveness of Session Aborts</name>
        <t anchor="satp-abort-effectiveness-section">The effectiveness of a session-abort message on the state of the asset depends on where the abort message occurs in the SATP protocol flow in Figure 2.</t>
        <t>Note that a session-abort message maybe lost and never be received by the peer gateway. Gateways can crash prior to receiving an abort message.</t>
        <t>If gateway G2 transmits a session-abort message after gateway G1 performs a lock (msgtype:lock-assert-msg) on the asset in network NW1, the gateway G1 can always unlock the asset and restore its state.</t>
        <t>If either gateway G1 or gateway G2 transmits a session-abort message after gateway G1 sends a lock-assert message (msgtype:lock-assert-msg) but before G2 sends the commit ready message (msgtype:commit-ready-msg), the gateway G1 can always unlock the asset and restore its state in network NW1.</t>
        <t>Similarly, if either gateway G1 or gateway G2 transmits a session-abort message immediately after gateway G1 sends a commit-prepare message (msgtype:commit-prepare-msg) but before G2 sends the commit ready message (msgtype:commit-ready-msg), the gateway G2 can always reverse the changes made by G2 to NW2 (i.e. reverse the assignment-to-self of the minted asset).</t>
        <t>However, an abort message (occurring in either direction) after gateway G1 transmits the commit final message (msgtype:commit-final-msg) will not be effective. This is because G1 has already burned the asset in NW1 and G2 has already minted the asset in NW2 and has legally agreed to assign the asset to the appropriate beneficiary in NW2.</t>
        <t>In general, the termination of sessions or aborts occurring before the sender gateway G1 disables (burns) the asset in NW1 (in flow 3.4 in Figure 2) will incur a minimal cost in terms of computing resources or fees on the part of both gateways G1 and G2.</t>
      </section>
    </section>
    <section anchor="security-consideration">
      <name>Security Consideration</name>
      <t anchor="satp-Security-Consideration-section">Gateways may be of interest to attackers because they enable the transferal of digital assets across networks and therefore are an important function in the digital economy.</t>
      <ul spacing="normal">
        <li>
          <t>Disruptions in transfers and denial of service: Disruptions to a transfer session may cause not only resource waste (e.g. CPU usage), but in some cases may result in financial loss on the part of the gateway operator (e.g. fees charged by network). Denial-of-service attacks by third parties to a run of the protocol may result in the termination of the current run (e.g. time-outs at the SATP layer), and for new attempts to be conducted.</t>
        </li>
        <li>
          <t>Dishonest gateways: The SATP protocol requires gateways to sign messages related to the transfer layer, not only to provide message source authentication and integrity but also to maintain honesty on the part of the gateways. Gateway-operators may take-on legal and financial liabilities in certain jurisdictions by digitally signing messages. Dishonest gateways may intentionally delay the delivery of certain messages or intentionally fail (abort) the protocol run at certain crucial points <xref target="ARCH"/>.  Two such crucial points in the message flows are the following: (i) the commit-final-msg, where the sender G1 asserts it has extinguished (burned) the asset in the origin network, and (ii) the ack-prepare-msg where the receiver gateway G2 asserts it is ready to proceed with the final commitment. If gateway G1 intentionally drops the commit-final-msg (commit-final) such that gateway G2 times-out, then G2 may suffer financial loss due to roll-back costs in network NW2. Similarly, if G2 intentionally drops the ack-prepare-msg to signal that it is ready to proceed with the commitment (commit-ready), then gateway G1 may time-out and terminate the protocol run, causing resource waste at G1. Operators of gateways should utlize relevant tools to detect possible dishonest behavior of certain gateways, and select to have their gateways peer with other reliable gateways.</t>
        </li>
        <li>
          <t>Protection of gateway keys: It is crucial to protect the cryptographic keys utilized by gateways. This includes keys for secure session establishment (TLS1.3) and keys utilized for signing SATP messages. Loss of gateway keys may incur financial loss on the part of the gateway-operator. Implementation of gateways should consider utilizing tamper-resistant hardware to store and manage the relevant keys for gateways operational functions.</t>
        </li>
        <li>
          <t>Gateway identification: Mechanisms must be utilized to provide unique identifiers to gateway implementations to ensure global uniqueness and reachability. Existing identification mechanisms such a X509 certificates <xref target="RFC5280"/> and Verifiable Credentials <xref target="W3CVC"/> may be applied for gateway identification.</t>
        </li>
        <li>
          <t>Identification of networks: There needs to be mechanism for gateways to declare or disclose the asset networks it current serves. Combined with strong gateway identification, this allows remote gateways to quickly locate suitable gateways to peer with for the purposes of asset transfers.</t>
        </li>
      </ul>
    </section>
    <section anchor="iana-consideration">
      <name>IANA Consideration</name>
      <t anchor="satp-iana-consideration">The following requests are being made to IANA.</t>
      <section anchor="urn-registration">
        <name>URN Registration</name>
        <t>URN:   Request to be assigned by IANA.</t>
        <t>Common Name:    urn:ietf:params:satp</t>
        <t>Registrant Contact: IESG</t>
        <t>Description: The secure asset transfer protocol (SATP) requires message types, error codes, and parameters to be defined within a unique
namespace to prevent collision.</t>
        <t>This specification will use the sub namespace urn:ietf:params:satp:core.</t>
        <t>Messages types (section <xref format="counter" target="satp-message-types"/>) will use the namespace urn:ietf:params:satp:core:msgtype, whereas error codes (section <xref format="counter" target="error-code-table"/>)
will use the namespace urn:ietf:params:satp:core:error.</t>
      </section>
      <section anchor="internet-media-type-registration">
        <name>Internet Media Type registration</name>
        <t>This specification defines a new Structured Syntax Suffix media type ( see <xref target="RFC6838"/>, section 4.2.8):</t>
        <ul spacing="normal">
          <li>
            <t>Type name: <tt>application/satp+json</tt></t>
          </li>
          <li>
            <t>Suffix:  <tt>+json</tt></t>
          </li>
          <li>
            <t>References: This document</t>
          </li>
          <li>
            <t>Encoding considerations:  Same as <xref target="RFC8259"/></t>
          </li>
          <li>
            <t>Interoperability considerations:  None</t>
          </li>
          <li>
            <t>Fragment identifier considerations:  Same as <xref target="RFC8259"/></t>
          </li>
          <li>
            <t>Security considerations:  see Section <xref format="counter" target="satp-Security-Consideration-section"/> of this document</t>
          </li>
          <li>
            <t>Contact: SATP WG, sat@ietf.org</t>
          </li>
          <li>
            <t>Change controller:  IESG</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t anchor="satp-core-contributors">The authors would like to thank the following people for their input and support:</t>
      <t>Andre Augusto,
Denis Avrilionis,
Rafael Belchior,
Alexandru Chiriac,
Anthony Culligan,
Claire Facer,
Martin Gfeller,
Wes Hardaker,
David Millman,
Krishnasuri Narayanam,
Andy Newton,
Anais Ofranc,
Luke Riley,
John Robotham,
Orie Steele,
Yaron Scheffer,
Peter Somogyvari,
Weijia Zhang.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </reference>
        <reference anchor="RFC7517">
          <front>
            <title>JSON Web Key (JWK)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. This specification also defines a JWK Set JSON data structure that represents a set of JWKs. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7517"/>
          <seriesInfo name="DOI" value="10.17487/RFC7517"/>
        </reference>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC7518">
          <front>
            <title>JSON Web Algorithms (JWA)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification registers cryptographic algorithms and identifiers to be used with the JSON Web Signature (JWS), JSON Web Encryption (JWE), and JSON Web Key (JWK) specifications. It defines several IANA registries for these identifiers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7518"/>
          <seriesInfo name="DOI" value="10.17487/RFC7518"/>
        </reference>
        <reference anchor="REQ-LEVEL">
          <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="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="DATETIME">
          <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="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="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC9457">
          <front>
            <title>Problem Details for HTTP APIs</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="E. Wilde" initials="E." surname="Wilde"/>
            <author fullname="S. Dalal" initials="S." surname="Dalal"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>This document defines a "problem detail" to carry machine-readable details of errors in HTTP response content to avoid the need to define new error response formats for HTTP APIs.</t>
              <t>This document obsoletes RFC 7807.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9457"/>
          <seriesInfo name="DOI" value="10.17487/RFC9457"/>
        </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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="NIST" target="https://doi.org/10.6028/NIST.IR.8202">
          <front>
            <title>NIST Blockchain Technology Overview (NISTR-8202)</title>
            <author initials="D." surname="Yaga">
              <organization/>
            </author>
            <author initials="P." surname="Mell">
              <organization/>
            </author>
            <author initials="N." surname="Roby">
              <organization/>
            </author>
            <author initials="K." surname="Scarfone">
              <organization/>
            </author>
            <date year="2018" month="October"/>
          </front>
        </reference>
        <reference anchor="ETH" target="https://ethereum.org">
          <front>
            <title>Ethereum A next-generation smart contract and decentralized application platform</title>
            <author initials="V." surname="Buterin">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
        </reference>
        <reference anchor="BTC" target="https://bitcoin.org/bitcoin.pdf">
          <front>
            <title>Bitcoin A Peer-to-Peer Electronic Cash System</title>
            <author initials="S." surname="Nakamoto">
              <organization/>
            </author>
            <date year="2008"/>
          </front>
        </reference>
        <reference anchor="XRP" target="https://ripple.com/files/ripple-consensus-whitepaper.pdf">
          <front>
            <title>The Ripple Protocol Consensus Algorithm</title>
            <author initials="D." surname="Schwartz">
              <organization/>
            </author>
            <author initials="N." surname="Youngs">
              <organization/>
            </author>
            <author initials="A." surname="Britto">
              <organization/>
            </author>
            <date year="2014"/>
          </front>
        </reference>
        <reference anchor="ECDSA" target="https://doi.org/10.6028/NIST.FIPS.186-5">
          <front>
            <title>Digital Signature Standard (FIPS 186-5)</title>
            <author>
              <organization/>
            </author>
            <date year="2023" month="February"/>
          </front>
        </reference>
        <reference anchor="MICA" target="https://www.esma.europa.eu/esmas-activities/digital-finance-and-innovation/markets-crypto-assets-regulation-mica">
          <front>
            <title>EU Directive on Markets in Crypto-Assets Regulation (MiCA)</title>
            <author initials="" surname="European Commission">
              <organization/>
            </author>
            <date year="2023" month="June"/>
          </front>
        </reference>
        <reference anchor="BELC" target="https://doi.org/10.1016/j.future.2021.11.004">
          <front>
            <title>Hermes a Fault-tolerant middleware for blockchain interoperability</title>
            <author initials="R." surname="Belchior">
              <organization/>
            </author>
            <author initials="A." surname="Vasconcelos">
              <organization/>
            </author>
            <author initials="M." surname="Correia">
              <organization/>
            </author>
            <author initials="T." surname="Hardjono">
              <organization/>
            </author>
            <date year="2024" month="April"/>
          </front>
        </reference>
        <reference anchor="W3CVC" target="https://www.w3.org/TR/vc-overview/">
          <front>
            <title>Verifiable Credentials Overview</title>
            <author initials="" surname="W3C">
              <organization/>
            </author>
            <date year="2025" month="September"/>
          </front>
        </reference>
        <reference anchor="ARCH" target="https://datatracker.ietf.org/doc/draft-ietf-satp-architecture/">
          <front>
            <title>Secure Asset Transfer (SAT) Interoperability Architecture</title>
            <author initials="T." surname="Hardjono">
              <organization/>
            </author>
            <author initials="M." surname="Hargreaves">
              <organization/>
            </author>
            <author initials="N." surname="Smith">
              <organization/>
            </author>
            <author initials="V." surname="Ramakrishna">
              <organization/>
            </author>
            <date year="2024" month="June"/>
          </front>
        </reference>
        <reference anchor="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="N. Smith" initials="N." surname="Smith"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9334"/>
          <seriesInfo name="DOI" value="10.17487/RFC9334"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+196XobR5LgfzxFffSPJboBCPfB6Z6vKYqSONY1JG13jz+t
XahKkNUCUJiqAmmOpfnmQXZfbp5k48qszDrAQ5Tt9bR2p00AVZmRkZFxR2S7
3W400sxfhz/4y3itDrwblTY20UHD85JFoMI0u1nKt56XxYH1Z7QO1TqzvgjV
Jrs88IbwKY2TLFGLVP+a3qycj1kSBebVIF6tYCTza7ReRut8UvVT1l5GadaG
QebxEh6L23/4I7+38fNh0u3cfLOOG40syhD0MxVsE+UdpqnKvPPEX6cLlXjv
khggjpfe/tnh+bumdxQnquHP54m6glfgK/4mjIO1v4JRwsRfZO1IZYt26meb
dgC/tnuTRuBn6iJObg5gTWGjEW2SAy9LtmnW73Zn3X7DT5R/4O0dbjbLCJ6N
4nXqAba9U+Uv2+fRSu01ruPkw0USbzfw3G5g93CvYMDVgXdyfP688UHdwMsh
fFpnKlmrrP0MwWwEMItap9uUYFGNxpVabxXu6V3nAbTfbGDZe98BcNH6wnuB
L+L3Kz9awveAhL8gNjpxcoFf+0kAW793mWWb9ODJE3wKv4quVEc/9gS/eDJP
4utUPYH3n+B7F1F2uZ3Dmwa1T6pQjY8uAdVpZk1iHunwKJ0orny58svOZbZC
hPrb7DJODhowQRv+D6kP0Pa64730kwvA9RXRlucxGbz2kyxaF3+Dxfnr6D9o
ew+8f93668x7ozLcWPpdMdJW9HLn0rz8l3/HRztr86gFwTlBEP49BlLO5z+/
jFd+6v7izv765Nye81Ke/Msqyjoq3LqTnHa8p2oJ2xQn1iSn/sJXS/cXd5KT
N8dnR+2TZ/ZMCb3Vmctbf8lUsI6CuLOFszuP/c4mc+f+tgMTrfwPSZRern1r
+m/V+oOfJfDbuvREAYynr20IrhJ6uv8XQHI0X3WAG7hTHna8o8soifzAmu5w
qX5yvr7jbvrwHpzkZNsJ+OXCbjai9SJOVjDMFR29Nydn5wc0gCY5/LvNkD3r
eH/zL3z7q3cd77VaLu2v3gDK4vmN/dXXHe8s8JMF8G76OoRDcuC9DbJ4Dge6
3+1N6esMaE7B2dFHJ4wjOpK9bmfc7U+fIHCdk9POtA88i15g5onfe0+XcfAh
uPSB8M9VcLmOl/HFjff2SiVXkbr29vGh0za+2sRjdHz+snadsOlPt8CrorUF
bS2UKrtUidquEFQbqmP53jv01igdLtRaJbRfXoqHDCTDGggoyIjVhipQ+HEZ
/YcKPT/nxN4GWAruEUL99PyoFuqzjvfG/+CvgDs6YHerwZ5HWRADDSKC9d+b
cGGv4Cl/DQt4p1TSzuI2/tc7XqogS2I4N96Rn156Zzdppgi8v56+20U8Z8Hl
NSz8PwrU8rd4u75I7S/hCDxNoqywkN6wciFJBMhSeI6eLKKlSuWLtpEv7evL
KFMbf6OS4grPL5V3So/nsvZIvweHDoQmMG1a2/HRs7PD8uoYuOdqnmz95Aag
7A/uTsvPT96ddXrTcXtkA/UsAknhL72z6GLtZygBz1D3AR7p7eMbHr1BVPz6
5KgCJsHi8TaJNwr40xGoLlGaAjFZIP/Ldq3qwb2+vu4oINOOwkHwP0/wY9oG
eo2uoiwCPIcMZ3sRrf11oNoAYztar+MroluQrskHlaXtILnZAOn4KMXTdqIu
tkt6oL0CCncOzDew9EThBMoDwn/NA8BivCMegzSBFNQSPYa3/zo6OiRUPD1+
VX82iiIkp7Nv/RQIJVDL2KFAEK2gWiUqcrhdUdwxJg83SbREVFbTp7XzvW5v
/OTvncUWd7UDb/Q6vV6n2x3aaHipkpUC/ct77m+XGZy6JbAN4O6rKAyXCg6Q
8oAdePOc30WoWMFWJ/48WkbZDaLju8HRt/X4gF+tBZyBSqxWzIr7o1p6uB7Q
Os5Pn1wF7VgY6xMb9G+BZy4ifw7H6ShRqHhH/jI1TBjhOjw9qme8Rfy26/Sc
nHmcgcpwWWDeRXnsEnzNLvkZivPgAzAJowuCYl1Sy0hhBLUBt9BZfLW2ipp7
k1Vfa4e8Q2sURMvp86PZYDA80H80GmtbLMO3k1FvdqD/4K+m/RF/hX+Yp0b6
qZH5aqK/mvBX48mQX8Q/zFNT/RQKjNPjf22/Ov72+BV92e+ZOYfD8YH+g78a
jof8Kv4BXz07PD8+P3l9TN8NBgN5c9brdQ/0H/zVqD/lr/APeWo4YmjxD4F2
OuDx8Y9Go91ue/48JdHZaJxfRqm3UqsYJGgaJNEcjg4I3jsaVHiQhI15zKA6
bFdFeAA3+mnauQwtjDnoTUqtPdCevAsgq2v/BufzSZqH2yDj2TM9YbyAcZwZ
vEUSr4C9Kf0+GKWgAcSoLbQ85QeXXqI2iUrx9MCM8H2UwOjAjNINzIHfuQOK
LgegozgzQIMZAicRTgExk5TxAQxjvQa12awD3lDrcANiPmObL1qBNCRLF97q
tzeXfqrI+I0yb7//7qiJ8KJ8hNEyng+wgwIBF2sW7mcx8Hcg9RZiJgXLWK0D
+BClsbBu0nq2+kR0eGOZyTUaX+GRSWLEKIqtxs8H3leR9U0bjuYne/cRjDi1
l8rIMQBtCltPmxalxDzXIehcsKy5AiraLOMb+Fix0zmmGvBwvtSqDQaxC7rD
BXBnZ5Nos5FUYW8FDfbPnQaY3KFKYBmwgpCkIcCyiJI0w1d//hn556dPRLi+
kPyGxkHkw3bY7MnbwsKS5Y2QkQdoSWBjDSoA50+B7ug3DSypojXQMVTw1XZl
8AXKwb+D8R4xKaHipBi1+JEEE8hcIgEw8kHXpQNxAWxtrUdtwCYA+QPV++GT
a9C3YIogUKCvoByBWbZrFhWkGeOpQGLr4OZb1L7NIlSd+fgx1PNtsialZBXh
ov3Eh31aedeols9v8gcbvBK9nyC4kC6AqMG2g+mWN7ARKQq10EN2AdhJiEL2
cQIVNhuy2sr9piOVwuK0/o8vIkDwoicv7iAHInBkRrCr6gqxfpnE2wvesyCO
kxBfRIshYLeNkMEGFXXNoBpw6MOlpoLtOmLCgueBZq0TSz8jmxEdzDCWRuPQ
nAEExqEAciTxJ8AZWirMAv30A56uq3iJcAuBuIdSNhF1CX8JxydaGfj1vsJ0
Nr8RIIG1AZkgLRHT1uRXQ8SGfBO0itc5Q8paDXyWhmXIVgALMz/Yotjbj7dI
ss18iKvIzxl/AKd8TuQKJgwd1FjWhOckwfNAS0NoooT0ogxtU1B8l0XGaS26
45L2CvBbwoD7dg23bRhu2yqwW2//8OjkWZOBhCfSRaRC2Y5E/fsWCATRgGNb
A5JwiFRqwGjUMVl/SQhaksrmzZHLuKwEt8y3dkK2dN8skB+H7Qc9lygcrHGU
milZm0/0+YrXcD5x+9ZwoqOVaiKxamyAaADAHKRZKL0Aiw0Ua6Ua9ICKUAS7
4pvlXurto892qTKVNpEHIBNKFEy88KNl2moQS6EPuEdIsv4HFB0xAeCRI8Aj
NkcC+ILYGqLP0LG1YoeU91MUTkmzyBc0hSAN3OAAuVy11gyGL5Ccb9aDrDYO
UAwQM4hvE10yXQuUUY8UFNklXgTTP40n6+FRKqCzCM8CD+2uhoNvUDbgQKm1
IB63HTg1kY8+dK2GbCeshZ8iQqUdvYyXIZDvBdgQSxAgOHO6nadAz/BIA+TI
FXp89QlQnYuOFyR+etnUW2BOttGCNNckrdASnIfAr8BMS33Eg/qJMZJrDWag
gsRMtmtid975q7NeZ9BpvDw/B4ueoAdOsk2J0IHC/RBh2iyRX+EzglRLVyux
azNnehlvAREA7VUUammKswe5UdbYBzrmPY3ou4X2N60ULiZKVympejgKa3pL
QCzowtdrNGvwbdKK46SIvU7jcA0o8RGFxEAsUzBaB8stwPTXUXfmBcjAaF6S
56j1HcXrK3wWRZkgg7ca9L0t7gergkH+2CdGzAd142GYIfX2Xn9zdr7X4v96
b97S32DOfHNyevwM/z57efjqlfmDn2jAh7ffvJLf8a/8zaO3r18fv3nGL78+
/NseM9O9t+/OT96+OXy11ygCSbvO0pFUIFDnSUanxkihhYFJ46FlBWqdMbc+
fQJMnBTGayF6QbHiBV5HKCs3G+Un8Dfpb6jK6oloFxvEF4EvoXfAw2UeHb47
63iv4mtka6jTb1MjeczQCDfqYgR7owB74CcJ6ZJpdLGmfYPzW72iDu7lOWhQ
Efthedey/Aujv6MzY7mMr3FcEkbxCoWkedCiglyBzfFCj8/BOIJ1hcy+fv4Z
fWufPh2ARWF8acSYDgy3MxaWr3Vn37vyl1vku/wJGOBlZowEX1TROfqvbUUR
CSGFM4CaqXGLgi6DcLOlhlHE+RZRCArkBQqY3DsNk6XRCoNQ9rc//4xuPSKE
thiwwogPvEPQUOAx2PUoEFHokSmATyGjtebjn4XXgi4LrKpo7OIMRyDRkWRz
lzP6RVntJJ5u+aLVSltHIHRxaxIKqjLxoSub6NHPOQGM/4L/ZmcrylF0rWvY
F9u1KKKAssDfEKJxAwLkvBiyS/PhPNLtyjpkG6x9lJL6OZ7KmNd8OsBqQD6D
YLsKcMVwpyqINoSVHSOmwn/1oyny2hjdy3eZ4gg4+wr2k5eTMOcF048wu/aO
0cy5YYseT0PKL7T4P94bH8geaY8/fkuky6IGDuQiWvOZ+V7cRe/zKb1zCpme
i3VGli/sIxN9QE/owxavMaqtmbsIO28BhzVl4dmShaEnkt9t2ju+e43mKZbX
Ws6igrEFvpRQ6HwdRvqAwnmNtwlIMhHcTMEtb7OdA3ki/4cPKgs6TdwBx4Ck
/dKbx28jnaLnNEsL9lqsSbOp+bASsyFkd06BMZMrNlFXkSg6lkWeyd55//1f
/8eZ5L//6/8yE48XsAMoJUBiJ2JD7clDe8xDb3VlMWsl16RWT4CxfvWV5XU1
D2inrXDeu/nIIusEYgxIIzI3vVPNEFLnGGpmkBRPk20qls7KDtdZ0eZnSkfw
1ltyX8Mrh+9OciWpZVENGeKi6aiE3yXiSlmcu/Tt+tts7TYH0Pah2f5AAbMo
rHDJGdBRqofTTBNppaQ3ajsf1tM3bh8Y+T//8z/J6ez8+2Pb/Pvjrt/Kb370
NP/HP4u/vV0s2kCO8Kf1Jo9Fj+8fbjbNyjdPBe/Omx8fDK09Q2m2/GtA1sDz
qubc9ebD56R//7vmnW93vLMTKyWklN/5Nn8V1tyrR4p+549mZGseZ7I/mq8K
jxqcfDT/m8/20bM/up+sRz/mY7yBc8w/aAHwEWk8H4M/mR/zl6wxvut5HwE0
eulFz8z8J4b9n3M4XvTxL3r0zXd9G47PX8tj4LTu3/PoAllzj847cnOyP1/H
oRKGDwyE41Er/E4YOv1NIkkHMUCwXJMJoAe0eAm+IYd/31LymoYxpczBUUii
E2aZy9AXvSabsb5EHxc+nPV9pEV8HaQoygGxHlEvisT/S4ad8D9HTLAWQL/5
+WMs5Ik/J2pJbqCco+eOITZPCcRcJ9YSfR+oBYX5C2PbO8oqRVzYEOYVWdqm
vbB+swPaN3uu9RMr+L+5cZiFDDwZ2zmU7FwUu8oCWYOHtGxBC1QK8xiLnY0z
THNLXSUIRxQZin5p2YuYGTaN5II/QBQgHWXksRClrkKJQPlH82klwXZ8GJEL
4knBwIMmKmw4IAckduq9ZJAZNeOENXJKh8EhQN3A/7R7TdJOUy2JQwUD0U5x
BmZAlmIuhXeE0zqeNqR5BolQ2CoKnBfY0USifZs4hclQ8QU5rTVSDByswAbG
hy5g1aAvg16AW8gAd0nnfQU6MOUnJOUl9ZsYw61elGjaV+qGrGn0WIF1TQa3
jJXyEiuAl3ME+Fa4CPO9q1Gjdo7WoCjWi9yEcuMWuW+xzRkj7Fh7B7ayn+Qh
u+fRGpOUKnZucMsyC+oTDmY58Ey4kj5VxVlZITesBQyOJFpQcCbYUnZLq6hW
pY6O5sREYLsxMCUoNEBFRaqk2I0Y+8SQZCOy7cZdfbfZQn8rMBN0sm4zMgfp
2SDeGB+vVgrRaWdcbqIwCv235I8+YUhQKwglqwGjlLxmcjjCD3y0jdlFyTIX
ib9BJ8HXYBg1GnSKgVDii7WJkuWOl8B5A00pWQpyGWMmcrAcwyrAOzfbhOOt
YklRHCtaAKbEmX9RFdewjMPUZDflFlx740eJ633Q3+oAn1ga1hEQE2HJQ9rn
hsUGHI6NuDrM3G4w3CW9+4PjEhaGq/SA5cD7PvuF2P3bFLZpyC9VRMgOsGy0
gHmZA+btAIzkDfDhf99igMJYPGm1V6bN7tyHzGENTVyE/cJkXbOnmIdsAinF
egTbhcyRYAPSd+irdDEpzFmAarOJzxIRCVP9hE48cQ/+y9nbN953ao707u3/
y3dfE25XAKc4QSbvO5IvkHtpyS9vxYdAx1BXmGv1107RP60d+XEQkQTXXC0l
tKQd72V8jcG+ljhLtA8dySGeozypGrSeVaDQKvAIrQSKofqclteyjFqm+Gfi
goiT1BLrOlbRth6v9RPIw9azrusAgWMhX8y6QQC1JU1aREtYDW2F60qqipvY
/N55FQ+K1n6MlyWWJbP6pjXEXGALY11h9iQ8fOPBUpbi5g4Ve5n5CNseLoS7
CrSCmY+xOWXw8PPPfyLUEb/utuXrT59Q7cr1d5mhlOHJy0DSRfdcxb61DbvE
XcPgk43qnREoCoOgj4n1iu8pkfV9SxzUuCpzdix4DAXr8zPC85OnpPo6NzY1
/h8zozFADHgSUkEoyE2uffXZJcgQy2PZcMA5zOeAE33YdE+EBmwKa6HTiEyL
NWXLBVrBFypHEfaAjDqOckWssFjaJmSDRCM6amerhTa1VOsaosaa+Hopumik
AHn/ZHCKTjDlZhzVoUBaaMvfgm5ttDR2/M7jkDzotqOPFV4hy45FWCb+KdVA
RETmS9Qc4ehEK/TXwcREUpX4Msrfu3Z/NEb154od17Tql4f07SVmketIAEIR
stsXzbkqgpNNQPK1lHMxxtbqIs6YRxdFc4FJ6ycpyd7KN7k7Ry4dbObJBOA7
/2YZ+2HVWWaW9km0MnNIWKYVz7GzghZnL2GWmmLXpPiZHd5lW0OIFaoxSMm/
H1lEx1xzH4G9QpJHO8hvdh7IXuigWSIXc1Lfs2uVHsEgw4+WmwGLqzZ//Hsa
r3/UWrUdaQKrNvJpOY397yX38/0/eVUsN/LXPmX7w6axocJs9yvYHePMxsWZ
TELHW96Wn7RkI3Wf5LZ7Kr/lx1qg1wRxyCHRvZX/9zjpYLAy2UOBQKaSVlI3
mPyGcTisCGwW3MIyKxLcXq/T3bOZVgWxeSeFE4nuBMrvo8JINoo5sdyLOf7A
AU1JBkjAYkk4fLZBSzfBI+KBXcNydYNFD2ySKT9VxfMh2NRkjkKqgq5zt4GD
RhKcN3yM0FUC2rFnz8qBcjaCc3fOyjAl8vnHEs6x+KCDMOXB8g4wTfuAeEJ6
gKAdYBHdwSq9oPmxlCrdoEeEEEdvnRy+OfTEOrrAVCQw9BrWgxWDVgv+Siok
l4fW7tvaw9AGgFzN2k6gYp5swhE1tr8Jxos5StkinANra0Aki+0ZSPk3gIh1
VAZIlAX53UATAaUFnAmNjq5Npp0WOiWNYBd9quiX6DjI0GKQ5z4VuiBauDAR
yLKkrAil+sGH0mg5aTGc9xkPHSZtNiN5ODe6TElKuetNu1h2ZXHZrhVjn7rI
Py06cWBV6/iacgZSQaXZbt6cApw0OjtUgNKQE6lK8OUIpjrcmhhcWN4YMuAN
dp3h7gPpBiOj8TatgIuYDSk3xCQYkFoo5H0sNVrecVPUT0inW23WU7Zu8867
JDTlzvmATSoOQssuA8vwBInKHW3wFQxBsGv/Sjmn1UaOfbQoWbESUXKEMXtv
GVNOacE1VemMIEFhsQnDEET9pxwQHlg83msRLrhWyhFEiZnl2u7SvyEPbaaz
aGnePOlP0jEt519bQ9T253GS7YCm6CKi513/m1kbyjVtj3Ek/MRYvY2GzROt
6HGtk4XdYHZKZSWN5Z7Ccu65SMzqzT4vj59DRZF6lvo6RQV2PrrKTVzfrvC3
XVg5iGgoGw19rtYgZIMISxuNEUNHVZN5ZUJ3bjxq4mA4qtDjgH+r31T7bu6E
ClJJ4/nfQVJr36wYCZYK51OfB1gN7M4cVJ/xkNRXrGV6zyr+V0IXoEtigWkt
fTA92FA4zCYNLtXKp2wt+ryR4RiwPLCi0LONyauJ0ZoMJRHnzk1DZxzSucR/
xXm8nhRboucD2I1OFGU/OmXOYSJgqoU3j5JDbwwqFeZEUgo2VNQw5BGo3Fuv
kC6RO4ABk+k8a5PjjcUWfPIp2T+T33ecAbXA6siCY6mAEIcckBjEUSDbTEQA
O9/ReYgJ2rOud8AgXwZN9dGISnmzOy1Hi26/slz1UrHvnTzz9uXvk2dNhsdg
MV+G9UyB6PzlBk4cTJFgXiATdLGMrJDpNFeXEYoZK23XsRrTaAUY9tcK5Dc6
1zPKoFkjbbH6hD9HmONbLEOD8+Kl2+CyJe5tjdJiBAiDwqRAznUVUkHJFQd+
IXuI3C5G2kigolynVMF1awpDrCTq5U2nFvtiemjr2R1aEvVlY/U+YY1PzZz7
ZmHld7RjCQX7dh1xzNjoS+JputWpVGTN4rddiuFC+fPrRUQ6SCmKcSeXkkmE
tES3+KN2eZlcEYHyecmBce9iGc85e5bJumIXHhJd40OnQWofSWbjybNqBg5I
zygR1Zq2fJgsZwXpMnbCJNA8PLesLbZi/g0m2mVMLE/XhjmmWjswcD5ENpaG
EX7ue6wf/oR10ST9tlwtqMtYOUkNC7JMcxBYo/auU9UIaXDqJxVsmZTkIHe8
Y077p1Nivy3DsrXuV8OmawPsgAa6YVlVS1uWF8wcdC1NUxs+wpDmObWgnpf5
jWSrpMyzRZOqDrLvlENW/RAv756iyByenFK9fT2ofId8giGEEfNaXyOoZWk2
me6LF+XGiclHqWPFuyhp1thIhD0zPXmkHWblYI3cBRYc9ebMPT3lIGqe7hYd
rq5CfDV3mnmX8bUkKXG+jbV1Bsu8ysKC7aKEWk7X2Cc0O67ZklPqoNI71Lwt
udRhn5ZyXUU5DDXpLbG9S16UOdM4xsHD2ewZn9da7lrDU3190Ktr7E0J611Y
a2SiAdr+MW60CiGgVViHoyvQBWjTE6XH0sWcqVlgekeu+BaLcdArn+PGcGOu
3WJFibPLaoc5sybWMHHtiZBiia3SsNswIjUgWpqsDaGiz2J/uNeSPpg3++D4
pXe23Ww4ox24kU68k3iHycOjsEDKT+ZxuvP4g1pTwO+8mRcwMMd6e/hNdtnv
dOl77F3xXocOdDQqrzXj88YIQP6UaccliJl4hX9gqjjW6kiClazFaYJHnl6d
Otl06qBJRRbg/TxgZQGQJwEUrE8/vEIXYJoz67yyhLO+80waK5NAChZRZ7vw
yMJBP4t3rZbLNrqh1ibxvelGulInIQF1Yy5rllOtXcS1x9q2WPKdPX91hh2d
gDunVnKls6mc5cLhoOFwrEOs+CZZw47HZkcWTaZfkgOwU0qUK4RqSM7NemKA
qK5yqfyUImaSu3N4fNbu9ad4yl4cvaYsW6ZHHcDcB+B+gKd+gKd+gEd+gB/g
eyohEZYpebZF6ao1Z/RDYPtILlnVKLaIScBriaxL8Czul2yjpuj3KXEbcdGj
JlsaKeeIMZFaqGdgmNfx7rev0avHL7YA9L3t2kDdEFjOlymTxx5QbpL80OsA
LQybwErQISPeQctzxxEqW4HBRTYqgy3kGO61MVuvzePlIT85x28XFH96S86G
Gqo1ESzenjatKMXkjU+EBb923665rwp2p0htgk4lqgq6NLNkUPAMcXn7t1FS
s8W6lEUyK+E1wWUcc0QDYXG9W0Q6pssHvfe/UouOLPj4CKZ58sLuhIyqI2yz
g3v7wjSnw92NUKg5lXXW8zqubLys83jLKgyeFpaRwu6EM2JrhnKOVVOnfVXM
gY4ZndBozoN+Tpc3e3PMlEH90PbEcP2bnejm/Pzq+KQpVUlN27FiBl2ZDyp3
pOSJCseUle4WpTfEtPaLPUY0qgwAuj6TN6G88KISWcFuK7AlYsIs4U5GeVUe
G8blOTvCe+mnly7lUDJIQdHUXGLDb3VMqNK4sCPt0ARjNvKt0nwrPcZJTuN8
WlKeM8OO2J7MMj/4YFItyDnK87Zt2HRoa3mjlaO8hmxf/K8lW8oUwBuVzUTB
jZkg9Yruu4C259h4gs3rVglTZSPktgByBSyW8cAi1QThvTMuU17elKe2wpCc
uGHjwCalynTzSqRgMr2XJ9OfShRapx8gNyZ3uEFeQY2q90k3tT6DhJcnmOUC
whIKuMg2ph21DSeV3DtXc2BkbCTqb1xnleqUJF1LACmVrGpi5cYRY9RFQYsE
Bfw115ZrF9w+dYjTH9nRCBiznHSyQejmabk6k23qyFO0CpNkVXBvuD9KhG9n
rphWsuRUa00pH8NOKySz0WR6WWl/1raYTkiMLa0s6QhQZaJYapshvlZMhLsC
wMmNKR7C4SRVBuNDHHwETpuTCNVcs1GUp4ro9ymNZK+cSEm7crwmgkFk52vb
k1EAhoL3xuQ1Ijcih50V08v9c3BKl/ASxkNPFXtxMgIS8zQrdKaKTNJPboCL
jt1r41nQ4sb0FWb7zajoYs2w1Uh9IVimU98bLdJM6ZLroZdOd/B9bhkJM7eM
Hy7pcsVUtFrFczR+9pHxNI3VLCUtwPGlwFgqz9RPcIhSy+1EzS+c8EWWqdUm
4w4p0p7n0uoxZXzpul1VOahQ585it6a3wAy8fHmiceTF84g821rUQ+r4330w
sKJkiCsbjZRalVwQR99fWPU7lAurQtA33jnGF3eckpw/x4/rz9F0zKMLGnr7
GcZzlFS0EuPwHtkUTlMf8UxhawiTovYTGPToEY9WStpQ5YugyZFcj3/aRMx3
sU29ZoIZvVWR/WQIEWv56Bk+VQqHIX0e1OuY2hSgWE+R99nag0kG5Nxxdijg
SwplI5wGmBDZA7ZrE3Wc8F2V1HLE8kGL1FWcZvQYZnSW912H/nDR6GOh3jxI
t3HiJxHMTTlIRjWkc2soFGDaj5oeNuX84dXbo69b8BE+vzw8e5l/1l+Yp5CP
oE6lLJ8+6fZ8fmjCgl+BpRvQk24d/f3T86P3eXM+n5DeplepnEgtJdhE2hsG
DdB2zWWp6NlrWja198r7an9/fP7yPbex8Umet185ILHzh3qBeem1v0mtd+l2
A278/P1fT9/JMDgImksGRkPKulc3QPTy/NWRTuYE1MBBznsJ5P106g43l4Ly
xrQ5jZf6SBDhbqXkStwztY5XCYQT66Y15+oXB+Y4D9nRq90IBXf6KLfe2NmM
zOpKWIp8uGGNjZ9kWHxHLVOtEAenXHBGQe4cKWimbIXn/Jkz8on82LjmKdM6
32SrwYPqQCdxM25T5ihBbtmXCX/YiUFVyOWdh33fkunHq9IanBN3d/Qrxrgp
umgI3nxjH+WeD7f5REEZtjdYYhOUh/7GymaHKam3B1qlOgM6lax0nRlqKbpW
om+b81zFBYILLYWF2YwiCWGVudnuOSuosKpJG6ovuDTllBxyscfFQxitMQa/
hT+WhYFST+e9mUQzdJSUcxvdfS+UsDpOJMbZGTmiyu4ixBL98sl0islLKkE9
3BhvXdHwqqgoFW8Pd+yrouq89BTnRPlhgSiA5Jn2+CS3lrOKL8/sp7SCbnH0
/KV3b+EJCU9rGaq9LZSzB4t48/bcs5qj0Ra7YzacMV8c6yFbQCGBr8E0pjp7
uar1r7yxJPq+pJoe1DuQf9Q9EnVmDxtLv7cwU4ENe2HalWYAMJn3mTHELXxz
DgG6D9krfCQVncc2OVlEki3T9nGu2esjBQOgQ834bLTxJB1UYZ3ojjBp3iZc
h+KQYmy2k5NZE7ktqE9faio5pU8e+zUpwBkC0Na5DlWGzSttfk8M5skVNXEP
9JlUG+7LpuPp2uuOjsJ1hWdYb9Cdc6Fea/RjHugabOO5VQZjVxmkF239vazj
JUyWXvqsgebn39P9IYlec3Vazlh+YCT1FGWbjIwjOaUvtPH5NSKwBlPrg5pO
oXFCauokTQWg1UXB9T0hkpbxhbSLCyO0VkJuO1vqrqCbdrTyyP1G6vIxuY8J
FjYillZ9ujMBhoGYTVI3Xqph1Z2E8wYG4r6rUDkqvHe0Gq5Ul4WU+xo5qULF
nIgdke3DBWb+uZYBpTzpyDVp/85oeUNgzmOX2vlKzvuix3JL1xX7pV4LbA1E
5PBgMRxg/2c3V9tkWUrvpthubWz5G4sZYtSHxMmQMV0KCDad/yKzSZ8LUfFF
wbfnatGxtx82Pat1x+pdme8AjlbB0N1YxAQ1ncYIkFPc6b0A1EaZzsHTZUU6
jJWjVFeOZLGN/nuh11WDcmRXZtO9+a6/A7l9g1xOsYfxqAk3/NF0kMzY4fIg
NEVI78eywDV1ZrHJf2BahVFvfEOwsEzkMDCnnIc5F16FHvUhN8euX5mCpGl0
5X9Qxr3qklg1eWEfGU4mz6mAd57nKekTACDNxHUGjI9meZoqbGMrJRN9pV20
M8VNG2k/1DEW6WNf7GC/2Cak0OctPAzboVZGbr+zw82m59E6zb8XvcruSdT1
Sf4hrPxyXwbqdD528B//r/xzPtR8bV4z3Zs+Wv/rfOXxJnu94tf2a3cZpvDv
HsPs9zq95sd2m736nTwyoBtk/aLQ8Ic/tdsGDPHqY28uALXf/CWh2cfmG9gW
TCNHRzx+Xdy024dHX1uwCG6GXxQ3v+Rx6Be//nLLMp8Rr9SdibDZh0PxoGEe
CRr5BHD0iQDbbuOo9q9IgKURAEg6JXBS4yTMQfuljkMpAsgb+Ps5DoMHY+fe
yyoR4IClQ7vNvb6kz5f6bRHgQJ+S16Cc/PIEaJCDt/LcCD8eYN+mz1jUnaFB
AJ7iHTYy7fA3wbgGnRFvicYNNYRr/9boZkxAHpJu+yvQDQlygxnZwMkvquN8
7jB/shg/Qj/9jZDfLFdqOVWFa513kt8jMvW6f5Il3JeOrZIZl3ElAsfXv7U9
a2eW39nrNi1HUqGFVKPxTrvQrQ6YuZ3mdsKscHvss9+racVLChV1++wOa7Ya
ru+F7MO8U3feZbvkI0w5KGSi/W7lkLRH1Ve5WDC6FX7on9qmqk0hehMc09Xw
KuO2S+YHMTRtYEwuUQvM7ox7rkbApcj41A3FxEdPzTmcPSnmKFa0KDyoMtrr
i02u/GUUSmGXGxGvGlxf24NdHrGuIDF3wqCvuqK7IQWVUqvkQbs5ZF5NKaXr
VvJAJXWvs/sNcnc+G6nc1jMPJV5V4Mx0EORcTMp/1JWSOGBaQK47Z6gocYRv
00B0afjLk+tHM7xnXW6lQNcpegZ//lmuz/z0Ce+loCwldz8C2HwlVy5zxxlK
STA9gFvwHuf9+bJMKSZ3rjyTe4T4doFQYQgQXwT9SZroYAKDH0nkQYNHK37r
FtnbBfYGhbtwH9lsJW+MqLGrNyGv5cfrEKo9RqlSH3R3e81DLLaCV7BKI10z
rAVuc4eDyCQZ44HWPXGwTbFddrArTY7vZSvcnURZLXQ7VLqlBsmLLd0aYqJ+
OtTY0AG/YvFYVdRxQf1TH+6wymPoeTvgryrbHDscv2dzfElnt0MGtS0WayOn
dsJqBX+qjClKPxYT43PawVS2diiXDHEbWJ6V3zXNjKzOyYaF64opDAYvKKOi
lKRTV3PkOUSV15Piw1UIp1B5nmZQjqiSf9v0PyC3FHm32audlr3ZJoIjIJuW
R1ZjJPSCm7Y2FHnL6yHxInhJAPLqoOJ6hpRutLMwiAzDoEwW7QCNsSxz5ZfH
NxImlEuRhzKdvZvfeJZ/XS7rMCuSMg29YtNvyl/CsGu6mdjttNn4qkT2brl4
meCpfoNk2CeTqyJElK9VwkvleziAvTdua8Ho1m/oDNCmORH1lTR2V4isJOWk
kaiOGAuWWt52zRfPIZe4RgFA4ixsWZmrnCVSrPStrK+X6xGN7HRVF0l9Jd3y
JPT0FWduI69iRb2VtK+J2G2iUuiqX9PBKpNmKJ8zL/MD3a3DSqLa1xHiJgY+
OEG0DCiWIEUgHSiTqK0h1PlxDlh5tlIpIStPwta5c5rNSFuihyXOCZbKKYqe
vjVO4NomuRqFP+9jLpzCm4/SpgMWB4JQWaFcRb0/+opGL8LcOSYzFxq+H8wF
TlSbMNdGjomua7fTED71DHBaYJAuoxUEbDODq8FqkQtAsM4zra0ip+z/3FbQ
51kDWKhmtzvJ6Uee5jrJQxZha2B3XEWVxnP3pVS2xctR+Y50OuxWW70Iq0O3
I6fNvYxG8atR+8wNVzSxtfz7z+xor7t7lDntUUx6/P2nzBuwp3XUUWcsOa3g
9S58IYhKUv0uMDk4uoWK7Zq6isNRbC5zj9Eq6bO6u82dx6wjQd2EKBfVldDf
f8KqqHXlrCa9q7DGZ2RmaidOThUF9s3GaJkoalwwVaT3mTMVt6u0krfIGAB1
9ngVPNFmXbbh7lk3ve4mOHtRX2DSkooG876Ui5X9/MLZQvatbgEuetx+nj9l
eV3woe++lnxlGGDpB7rF/yWMCxY+NRew7vrDzq4/g4G85yphewfeXj+YDWdq
ELRHKpy3h34/aM/UYtjud0M1Hs5ns3E33EN3wZ6rSOG7g+lo3OMf60U0Pnj0
5s+HAD5onG+/+bNkvXhvkwvvG9Ch4Ev9Xct79ec36tr7G+kIR3/+5swdvUJ4
yvBP4zkNfoS+OHtk/AKHPQOkPwf1NQBbOLbHrpBlOGZ30IXVLwbDcDCdTef9
yWI6mg/C6XThd8czfzqZ+XPVG4bzURcwFKrheByGPTX0B73FYjJSwyEPXyWx
aPy+P5kH3dFU9YLxYuBPANG9sDscw+jBbD4Ou8F8qvyRvwhmMzXuTob+aDab
9KfDyWgM3/mKx79FUj3mVLcKIZ5sOJj3+n7oj0e9EfxnMF/MZv4E/uir6XDR
7Q6mg/loMh4twsmk2xv1p2o87g6Hs7k/Uov+uFuxLt7mF9/1DCAFccE/9yte
NcwYH6l533lmOOj1hhUD1TA+WfNoMh2pwXA+BFTDhzAcjqcDvz+bKH8QTqZz
fz4YLYCMRtNBuBiNwlm4mAZj2Ihh2FWTQSWCd804mIwHi+48GE4Xi95oGCwW
wxFs4WDgz8KpPxsOhrNwPPKHo9FkoIZwlP1wPJyN5mM1HcAK+/OKFQoXlBOl
v8S8cDhY+UfvjG/qxdNlffvq/Bmes8MtijL7gFXzWn1ukyi8UGfxkrrH8FSF
77xjTHRVCu1QnLP4c9XEDb4s5Mi5qkq7b1GT0a0Mj/ASX7xhPXI6LIjFn191
9ckt+9YtrHOHR9nuv3vhnVVCh/cqY44t3y4sgLmVoSQOnIsCpPJJ1+mY5GcL
PLd2pgCauRhO9+MkG6xKKTR9MakHiFxNX+hJZfp65744pxg8Ep3HtiUlc7DN
RqVlHBcr5qqNhEhq4fBe2lYV6Dvafq7IoQ8az1pZLjBxeJjEdns3qPqWvOy6
gowcHBf61JLtbrhjXpJbbePvKAn29s2f7Shs5iGzz6rfrew5TNq+xGca1mpM
SXN5PWlB59M1zrH4nHdUOn+Rdbnl0zWL+2zfC41d7itHHQjpVnf09+4Z/8Ve
y9sz/hfzIf+54z3nWxC2m5AiXcQ8ionsQqTY5gTmvjZTYovTiosWBBOcZW0u
iq+6goF/ZBcXTEp+QnYF7LqBYdfFCw56C86kAqKrnEl4fRteO+86lXZ7kzoW
vZo2PtZkZ4RKZpzSIIarPx6gksNJ//HHH1mZvu3Ao4g7PuuPxiwH73Ci4I3v
9Sve3unZ4d57erVAsThwgY6Kj7mYhxd6/a4NRd7uCMaq7geFQhTX6rrKS20D
q93kpT6Buj6PW7rlidN5RyUT1SlEg5yKM+rcTiETVW6dZUrvjNl0a1nauTW0
1dyqdLEFdzPwk0S3TdclqU4bTx2LLDRJ1xFvGatwxZUuo9QOhWKPeGofYlhk
joeKOJJxyB/rXkO64MRerx2mKWyDuPCrPfj6DhjrZFVfOWP3KXfunKm+Ead0
tc0nOtECU4FF33pvSnWLSrshv+OYOaxw+Uu1mLMxRHn8yI0bCbbuHSi349w9
kbmMoGrgElVXNX6kawnsqZEQKBwjNbfVwu3hZdA1w1jVXHvnp4dvzp4fn/5w
8ubk/IejV4cnr394/vb09eH5D729amALYJaiapQ+YMVn+Qxit7KcbxTxZouF
w3UoGr+t8FfPKrqlHY02/V5thdrVyN1zac5bhXxxrxU0dwzRhWeP6fAxckqO
FRnAHTGvrcOF3z/wVGkjUo4VjhSOx/5oPAnavd6i3x5O+rO231Wzdm8SqN7C
XwwngVjhpcOCr09nqjtUk157Pvfh9cF40J4NBkG7P+4vhn0VdCd+1329QPAk
z3YRYPXL8NrPkjT3OU4yen+Xo4weuJs4z8faJdDpqS/qfXNm+AIeOBr/y3rh
aIov7ImjOX45bxxN90t65Mrrc71yGqAdnrnyEBXeucpxajx05QG/vJeuCvFf
3lNXXumX8dZVre6X8dh53ifbQKmW2Dabvp/5Zb/yABPsvnz7DqaYDdGdzDHA
kDbJKi2yQuPBGstMYrj3scco6ci+MwvMcKDwKGtUXKuXq0g6ZZIUvI2Vqld7
f6Dp9LnLUHJsmVo7KYfasZMMsooWkmV+/e4tpKoLFX/3BhI2hTzfYXe8rOpP
WpnnZhqo3nalAi8ZDj2cv9XGmiv/jnvrSNTgWjdTLkyrr5vUvTwwl0wDcW8b
Q4eCH8UqqKKkX9MoqNxkWuJoGMJE3SHoiYPpeNhTEzWajbqzhZovhj2Q9KNw
2l0MxpNwPhv3ZtPxDDShHkA2mgb+WCKgZt/IKACFot3rtruD817/oNv/Y7f7
b/AYR55OOR/1NlZMvcAfhRPzWFY8xVxmmROBkG3Bl9RxPU6SSEjclG5GvGHv
rBC7OWvoewYz3P+ANBvD6z55i6MV3YWMNSS66WAOU84KzvPl8GXdUgnCDmbd
7Se/9B2OFjYI8Z7JL+J5sFp/czUFaHWfPlV3YTdMlJsnu5fe30PsuNLXNB8u
b3X58ljqA3THzc65KoVQlrpSQBPBpSO4uE+XH964t5PanSThc8PJSS24JU2L
9Xu4JV0JQFLNvii5mjsWGyTnvakbZRq1pP2t8xdnNHvzRdyh1dJXE0+mI0P3
8Vja9wI/RCBjX0/86KIluotQ+f2I51qpvLJWitO9A7rTNKgnkg7/VS2zJUyN
l22YBHqdUR9IMAzLn2rp3bQnt12ohV7VMBar+1Ut1M0dCx9U6hIk9YszYp7Z
JpgRIus/y99n06TYNw8U7p8t3r+4gJcJLMIgE37e9VUQ9MfTruqCzT4dz2FH
x3Mw5oej4WLujyfd8XQymw2nQxhvEoSL/mI6UeMRzDsfj1kpILlQKRLassk6
Z0WYlrkW3DSSPzz6uq1/bu4UNMiE7yVtKlQLKlKhLoFWZZB9FZsVeWtRwCA0
nZ+0476xoGswTAGQqCS7r1us5/M1Rl0tn3eMuntYlY8rEm4/bMU74f/nsf5q
Xvw5rLheRbszAz50DCpfF3LmKk6gO/A7qUA/P8iUKtLAr21GFZhgGI78cc/v
jxfBdDEKJ301ArbZHfWDvt9bBH5v3Bv0eiM1Gk374WzYm4QDmGAyCnqzcTif
zsQyKvYHdqpM+6Uq036hMWVN81NJvqupHDQt/xuSElDoJyC1hNXdFXNeV5l6
1sDegFTliykqyAET3c2Q78Dl5nx0OKQ5X11W+j2a8mZGA4AB837bdOYbTlPe
wlKrX3R4H1YYa2ImdZ54RTu/+YVb3VmJE6yPmEe9fWxba/o3uB2j6lVxEn4F
6ijbVO71LfktEXkD6DtbVuXbzeKGFNkbYmDfpRPUpepLJ6mkSfmDPntxijTT
0JegexWUgqXSlDRWybWZ0hqmaSS1KiBZrK6oa2a8BTLDdE9K56quAeUVUIRe
N6iIneypvNCk4dCRtvDvflPSfRJXChu900ATvJc6VMja9uW+o2ajUN/q9k+X
Yma1uZM68Cju4IeqAxaR/w+0BHH1hjKqUlnqclC+QCoLBnV+ODw7Oz7FTNfK
XJYyuIW0kqXblZ+JFg8d1lqvSl6M8qB5AKmAApX/EHJCXMi+up9/fnZ4foxh
qU+f7PzqnOdw7XnOqOLa+unH0M7urHFJJsKDlajCyfk1dag6MsZRdpNVzesY
+/zk/OYSR+6T7rf7g/P+4GA0g//fmc1m/1ar1s37wUDNemDBDoKhUsPhDEzY
0TxYjPrDHia6DFS4UKPBeDgY9boYwZ4uFkMfrOzxZDoYjo3De/claPUSXAcO
jJ53P4O1LIwbjg1bik8Gto+o+jK4hnTcLsnlksZQtGvtMOYuWejasWWsaXHY
+P/Nji1t6/888fX/Fb+s3LDfmOXZGwez6aDX74eTUXccTKaLGfynB+ZnLwyC
SW/Y97sLfzYcgS0aKn82gifUdDLszYJ+MAq72vI8yu9UeSe3EehA1nPrljFt
jA5sY3QDcKmB9qjd3u3Iur/FuNHsTi+NOo5S0enFZW+at7Dhq2M2eVcpq6M/
qQLmup6GxfOqVAsOVuxkjBIplCfTfBITuN6tZFCnOCnhqFM46JDwakzg0CzX
0s40u2Pmx3vbpn30DgO8XxwM8AvGe1EWuby4VCKg2wvWeBPy4viTxU6E8oVt
bpRO39wmV6/hL/cCPcoD/y5vLAQIbkz0VXfYsgOvj23iO542fW3RLouufLWJ
KUGU5oumaks8O9rxg1QcJyELT90/igqa/CVeIg5fAcnsL6jeCbnaZhtGph+K
ZQNzPFSuTA/kcpyKXkw5jEL9PEMRXipTgqmyQn9HUGOyNpnrHePdj1wGZNz7
QgnS2thmP8xO2pv8LdfzcT/Hh6UgNbDcBePGfGU0Va5c6LytfDMLeVv3tPXd
ls27bf1fzSo/yR4UunV25h+++9+2tlPerN+YqjOYzeahH8JDC9Wdh6NJMAwX
YTgOgt5kHCgV+KOuP1KT4XAxAQVnNFRBMFdKTWfd6WLu+8YasxuBlxgMfVvB
Xih/pNoQu59RZltg+uIV4QiXWEKJTcqsx+l6HbzoBqiS7nVRYZOS2YC3wjlU
68z1wFtV3No5+k8N6nRmvK9rdb288Xgsedm4X1O1XLT5Gpm8co9B+Sdq5MlN
0sxYAqWdYFPdJ1Fci3c3/Jxd+m3GLj+PLTJFfb4N+A+OWMMR20TjRvv89Ryl
r0/enN/iKHUgrXKU0oVTd3GUGnp/JIFgyPQ3Jg6mYN/C/w3VGCzZ2WQ2nAzn
w37YH4aDCcyrhmN4fdYfDyZhz5/M+7PhdDRZLCb96XQ+VUOpOy/jPXdE7t62
mtfFEelIGjFfipE7I3Po9wqZQ/dN28qsFex9kEbrMvRGMU2yZHDz3W7aes7I
q46dE7b6xlW+lUzHxnZeNFxm1dL4l5L9jY3ilI439PW+7qzOdAXtl2JixeEe
sai8Zkt/j3q7kN8/nJRfVkjhEfqthPSefnP65hZJVQa3IKn4jkRzMpxkgZ2R
vUcSWIZsf2MCaz7rL3qDbnfS742D0XTRn496/nTc741ms2Dgq8V41J/Mu/1g
2p8O1awbAKhDvzfthdPZVHWlf1sdteAMu3ev5vVcYOUS624ON8655Jtx5Cdb
iMlGYOrWXeNXu22jglnUcCUTGy22fKiwc6RMAL9a4+Gwu97Wt8F6mOXCOCxG
rX4XFoxOx3tEIfEPAVErIHLK/q2ICeAxJy/evD6+1aypA70gMm6zZrxC5phx
VxhPRWUOdNUxf4y4YAX1/8ZkzSyYLrqToN8PgsV4Op0ugu6gO14o1Z3MZoP+
SC3m00m4CEeDcTjrzufDSTibDEBAdfsA4mxqmtruIDyc5y6EsHMox1wq3QR2
S90Y3xb2xewjorpGTnUlJrFv2AsRoNn9Zp74mssoapUTm2tnTLIuev0ptNBQ
P234qpqi6RHpq2nyDnjW1TEppXAUJEmwNFe5LKIkZzvmXnWv7+3XJoE372kU
lTfu92gPVZDeP2yjLyv67IqmvPbHkR32LGWC1sSiyVBfiiRn4PGsjkri+F1K
hao9oc4zc38yDsaz/ngEoPRG86Hqh/1Ff7hQo7GadKejXn8Rzocz1Z8sRt2w
7wfd7mw0609VbzTozU185pjKnMusn0qTEa1tSWpO78brVUQcl9kQObhEABSz
G0oGSER3Fmn9A6MuBBpy9zigA+TmlFitO7inBd9I1rDp3efcGMr+YACo26ge
27aGUIW5e8W4+74obsXecIkyWTlUeXbnOnCO0J8Jjzicx0llAT//3vbxd9qq
O0tlB/WIbnTf6XJ9u6MzoR/buqFmh31bqyrwNGq8NxUil1Jt5ogJncroLzKh
EILcqYZ9VFFSQlCt/LA7ahe6heDG5VcpMcREj6kmhcUCGyzg/XyaqeNDqU4s
4osZXa9tqm/CI32Z6Za2HJu06H0/Vel2RW2GKzY9wR9tPUy/BWQeA5715Zp6
CJzT6sib9wzRy9UdYwRQp11MR64llFwTPwxh4JTH8GHLqW+wNQC+3MKDP1d2
YwQfMERpI6qiYiO/RxDvXwMprEEkct2AiIvcCwa/f3r86uh9zfWChE+Xudld
1f0l5mULj5OfEYe4aBhEO8ApP4oTcfTe2pxB93812hTI/qRWpLM+VzVO4Es/
Z+YDegS3Y49WCw6tVuBr0yq2zNOkYwYrhrLX7oiUfGUz3rwCrIKHSi9Z6rIh
y6XJo4zaO2ugmLlU5nzl/HVJlqEN7q5Fy3GBaQKtFEdA+lgO5IVbkh0GJYmP
u+byz3ML1W/izJBdxamydqW9th61zhcq+1vq/Kw3v3bD5chZF3nKNah6r3Zu
tK280/29+Y1r+UztHIwKyjrwqlhg9cC2SNCwpEKRB55RB+op0N5ph7HfkRR3
iw+7+Dqn08O1XEpmchFz4VJ10orGENhCcUKti/iOhrVIaKLNtKgOpXgNgzxi
cV5+mJgjCQbjdczHoz1tVeT90cpd4mfaQe4t7AARgtJx329aY9KspJXnPZeI
qHTXiVdnBgXYKmi+NHFE/ImfRXdUircVSPWw7iXb3m60uan3eqmuFMZN9+dN
b+6HR/mlyGwa6OdwcOvGZGoRBVI52W6ylnX9qOnGT3Wl2EAnYgWDshZv6BVY
6PKm5aks6HjePt0sgQYAHmmYhAAyBLpdG8n2gzV9y4blB9DQ4w94q6T9JWfC
Fr7crtEbv8aLKemPHwIf7XSLRGRzUMIu+f7SPNe5LRf22mRIJMdPm0fLWmbR
QOzoYlwqJqfa75INaQ3TyhW3s5dvv3n1jK7SwFeRyeMVlUvykmwzbuCbxtsk
UPpKNX6Sr5fEXGLdOM+9gFv89JrJIsm+0+e4dG7qVFxLiy5QP+2qVUbtiiud
lW5fgMXN0I1xQJdS29avXH2r1qAwJX6mmzQxS8MT0MbToUjtfo2MSt8JzdCJ
iInWVPFpmfopF8K2zE8lIzL/ye3k2yRm4Sd40SlDTZ4v9ZMKtjY1uExyrgJ/
yy0FUuXAESpqaigOI9T5+V7XNhk+sNo79anZ0Qzx/FKuFsdbVswV6DYIdbc2
GnoMt1SWjLQFzCW1qu3b3WZLVOwIFa6bWJce5EW+Nfddd0Asl/tr0ajd3JzS
mrhui0pURFvhXmNP73VEDVSueqIlhuXCL3YCi+dyAXFa0w1MAgPIBMkZhLL3
R0uYP9nwiH/8exqvf2TPzY/41I9yH4agonri3MPHnf9975vTN7nDLll5P9ab
TLTagz/h2v75R30j9o/yWVtGuczIfZPWd3SKCnZuxSHjZaFVtE31wgh0OM5i
ZVEPIX4iv8VOd7rQFyrns+N26sWLoxLxa+xTGu6Mh4ODtF2tDckTyNoCK/tA
C0TwRUrVjGpF3kb37UPYwxNuzUgeNu1UdNdPLyFv0F+bFnytemLsGJSVCKVx
V0K5B51YZ8oilmJ7vDK58NWPQguuM9KmEp5M3x4jZEFKkdzjcjsmCuRnCE5m
QCK7O32Z1ofCu211666LBla1dIlBrpW63K78NeUKEhLBxF9hTN0WW0QTO9cs
+gHpWXSZuVb4npHLiv0Oj7ga7qRo3dR0WFwHdpD0RR0yN4fpGIy4AK36WZpo
1xJ/8T64XA7HyjTG4FLS9MDiBSuDzqbw95TL1MJoQefa+F4Ms+OcuoSvcELr
7HfdExeNcpVHnctQoHWzJCVCmnOGIqHk9g0dlqshBOodQvTsL1veHFTzaEF+
MMAMjESai79MY5MjWQkFy61K4LbaFbY0KlOaQ2igsxqV0A1SiSNcaAfMs/Yx
2S0CzJAPOCHeiY2IKHNTRavRgGBimfnr9IJEnXv1muNXKPZ/paNnnqD9TqKL
C/aMaHg7xhnr0wv5JYIwv1oTKbHSQJzHWk5zZ9Ds4B5BM08uWWICtwUqbhwh
+h5xtd19lwveeXRc1rdRdl18dhPle4fSjNohAbBbX2TJD//7Q68D/08CZywd
4c1hvy+diUFq4UjVpo+5RrfU8vnXidzpE3e/t6wD8DmX1tTVmf+SLaLRiC/Y
794RSna24kvinNVkS3EW5lJU/XK26Epcw++888LzKOzQA8T3KCod7+O7GFH9
4oAac7I0XqrljWm0FMbBdsWZDP8w4X+HJjyQIjt8/rwXxFuMEO3d26wvtbUj
Im6xwwiGSG60do+KGNl0f/gDHoU//IGFh/YgkYLKqqKQD3LFQWfQ6TX5JcAY
yIIb/aLZf8aZxcJJTsogThEeUy4Ph2zGwJBbfPLa3A+XN4Qd2DIZl9+zNHl8
/dCbJ5FaSEyao4IyxipKxfwp0j+PZFk4GpCS9cWSuNfrgsYF2m8ccFhCrCRt
lTUaH4m9ePoffBRseTX/PnqkaFR8by2w7mX7cdtO+9j42Hb+FT5W/at75A6v
1j8OgBD5dFGoApAv1BpoTDu24Yuq/YWvNVtyKOmjN+x2PXvIftWQ/hZYTKI5
CJMUjphuF5i5iWd0g07llK0SHHXgjDq4B6DwtXX37kdUFMxYPVl0qQ3vE53K
fVc0lBXz8kz9R5kpN8PKMww+cwaJetTeoViBvYegj1OAP9aItqpZHoK64izu
bXRVszwEfcVZ6m+gq5px+IgzVtxIVzXl6BGmrLikrmqq8SNMVXVZXdVck0eY
65ZL66qmnT7CtLdeXlc18eyx11vNsrqPs77CXXhVrOshjMR4y+EHKwJ7+w30
MD8eBHv+h7CYuvmLF6tXTPcQXnOH6QoXjVdM/BCWcwue87vGK+Z7CL+5Zb5X
8QWwnwvh5VWTPoTz3DLpIbU8P+Le1XVT9z9TnahXhEkLGjpTfZ4+YaZyFIrC
FJ+nUJgpqu80KU43cJFn8rofEWkDF2n3n6IeWQMXWfcf+q5IGn7+NLaDsjjB
kHbh8OjrL7IBQ9qAh41ej/sh4f5ho+7GR1+OdKGr66NhpC/n+KHj1+GkL4f3
nuPafK+2/bTL9HCm4SPOZDUOLE80+gxU3b7Rkx2jp2rlg1YdGHOVU6nRYchX
u5SHm95/OH/JrZWkMz6OOXPGnN1/TGpFKVlmhNKuNeKwirofXVr15dx/7jz1
1D6sovYHyal6EhmIt6CideGjYWogfoLPmaMOSwPxEHzO2LdhaGBjyHYlPgpu
BjZu7jl6PVYGNlbuOert+Bjed2ybM1Y1tXK54qAzslFe7FXziMgf2ch/8Dz1
2zCyt+HB49+2ISN7Q+47i701ta1civszqdgfYFOPzmRxpvIOPWSm+j2aVOzR
Q2a4bZcmFbt0j3nsfbqlo0Jxt2YlI4SLnB9xm2YlI+SeU9Tvz6xkhNxz6Ns2
ZlYyPx4wQanKV89CFaFUzxZdKWrEi9Vcdh2iU0VFRSXKfr6Y4F0cy3crUvJK
+dpaOa6YoGo6zjYsFQ5KOd6OIif45Xl0geEHLELO043qoFn5N3Nsp51yTeda
Yd3qXJU6XjtVU94LHSfFshiqRMrv/XGKT4tljycLUz3xom8KatJa8LjGxbzS
w2ANbji+Qcrmfs0tJE1zLaJuHqevXnrzXa/llHvAqLgMybvarmnc/FUpLsyw
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

-->

</rfc>
