<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.13 -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent" [
<!ENTITY RFC3966 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3966.xml">
<!ENTITY RFC5322 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5322.xml">
<!ENTITY RFC5646 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5646.xml">
<!ENTITY RFC6749 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6749.xml">
<!ENTITY RFC6750 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6750.xml">
<!ENTITY RFC7515 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7515.xml">
<!ENTITY RFC7516 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7516.xml">
<!ENTITY RFC7519 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7519.xml">
<!ENTITY RFC7540 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7540.xml">
<!ENTITY RFC8259 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8259.xml">
<!ENTITY RFC8446 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
<!ENTITY RFC7049 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7049.xml">
<!ENTITY RFC8252 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8252.xml">
<!ENTITY RFC8152 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8152.xml">
<!ENTITY RFC8323 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8323.xml">
<!ENTITY RFC8628 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8628.xml">
]>
<rfc ipr="trust200902" docName="draft-hardt-xauth-protocol-00" category="std" consensus="true" obsoletes="" updates="" submissionType="IETF" xml:lang="en" version="3">
  <front>
    <title>The XAuth Protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-hardt-xauth-protocol-00"/>
    <author initials="D." surname="Hardt" fullname="Dick Hardt" role="editor">
      <organization>SignIn.Org</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>dick.hardt@gmail.com</email>
      </address>
    </author>
    <date year="2020" month="January" day="27"/>
    <area>Security</area>
    <abstract>
      <t>Client software often desires resources or identity claims that are managed independent of the client. This protocol allows a user and/or resource owner to delegate resource authorization and/or release of identity claims to an authorization server. Client software can then request access to resources and/or identity claims by calling the authorization server. The authorization server acquires consent and authorization from the user and/or resource owner if required, and then returns the authorization and identity claims that were approved. This protocol can be extended to support alternative client authentication mechanisms, authorizations, claims, and interactions.</t>
      <t>[Editor: suggestions on how to improve this are welcome!]</t>
      <t>[Editor: suggestions for other names than XAuth are welcome!]</t>
    </abstract>
    <note>
      <name>Note to Readers</name>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://github.com/dickhardt/hardt-xauth-protocol">https://github.com/dickhardt/hardt-xauth-protocol</eref>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>This protocol supports the widely deployed use cases supported by OAuth 2.0 <xref target="RFC6749" format="default"/> &amp; <xref target="RFC6750" format="default"/>, and OpenID Connect <xref target="OIDC" format="default"/>, an extension of OAuth 2.0, as well as other extensions, and other use cases that are not supported, such as requesting multiple authorizations in one request. This protocol also addresses many of the security issues in OAuth 2.0 by having parameters securely sent directly between parties, rather than via a browser redirection.</t>
      <t>The technology landscape has changed since OAuth 2.0 was initially drafted. More interactions happen on mobile devices than PCs. Modern browsers now directly support asymetric cryptographic functions. Standards have emerged for signing and encrypting tokens with rich payloads (JOSE) that are widely deployed.</t>
      <t>Additional use cases are now being served with extensions to OAuth 2.0: OpenID Connect added support for authentication and releasing identity claims; <xref target="RFC8252" format="default"/> added support for native apps; <xref target="RFC8628" format="default"/> added support for smart devices; and support for <xref target="browser_based_apps" format="default"/> is being worked on. There are numerous efforts on adding proof-of-possession to resource access.</t>
      <t>This protocol simplifies the overall architectural model, takes advantage of today's technology landscape, provides support for all the widely deployed use cases, and offers numerous extension points.</t>
      <t>While this protocol is not backwards compatible with OAuth 2.0, it strives to minimize the migration effort.</t>
    </section>
    <section anchor="protocol" numbered="true" toc="default">
      <name>Protocol</name>
      <section anchor="parties" numbered="true" toc="default">
        <name>Parties</name>
        <ul spacing="normal">
          <li>
            <strong>Authorization Server</strong> (AS) - manages Client authorization to API resources and release of identity claims about the User. The AS may require explicit consent from the RO or User to provide these to the Client.</li>
          <li>
            <strong>Client</strong> - requests authorization to API resources, and/or identity claims about the User. There are two types of Clients: Registered Clients and Dynamic Clients. An AS may support only one or both types. All Clients have a key to authenticate with the AS.</li>
          <li>
            <strong>Registered Client</strong> - a Client that has registered with the AS and has a Client ID to identify itself, and can prove it possesses a key that is linked to the Client ID. The AS may have different policies for what different Registered Clients can request. The Client MAY be interacting  with a User.</li>
          <li>
            <strong>Dynamic Client</strong> - a Client that has not been registered with the AS, and each instance will generate it's own key pair so it can prove it is the same instance of the Client on subsequent requests. A single-page application with no server is an example of a Dynamic Client. The Client MUST be interacting with a User.</li>
          <li>
            <strong>User</strong> - the person who has delegated making identity claims about themselves to the AS, and is interacting with the Client.</li>
          <li>
            <strong>Resource Server</strong> (RS) - has API resources that require an access token from the AS for access.</li>
          <li>
            <strong>Resource Owner</strong> (RO) - owns the RS, and has delegated RS access token creation to the AS. The RO may be the same entity as the User, or may be a different entity that the AS interacts with independent of the Client.</li>
        </ul>
      </section>
      <section anchor="handles" numbered="true" toc="default">
        <name>Handles</name>
        <t>Handles are strings issued by the AS to the Client, that are opaque to the Client.</t>
        <ul spacing="normal">
          <li>
            <strong>completion handle</strong> - represents the client request. Presented back to the AS in a completion request.</li>
          <li>
            <strong>access handle</strong> - represents the access the AS has granted the Client to the RS. The Client proves possession of its key when presenting an access handle to access an RS. The RS is able to understand the authorizations represented by the access handle directly, or through an introspection call. The RS is able to verify the access handle was issued to the Client that presented it.</li>
          <li>
            <strong>refresh handle</strong> - represents the access the AS has granted the Client to a RS. Presented back to the AS when the Client wants a fresh access token or access handle.</li>
        </ul>
        <t>When presenting any of the above handles, the Client always proves possession of its key.</t>
      </section>
      <section anchor="reused-terms" numbered="true" toc="default">
        <name>Reused Terms</name>
        <ul spacing="normal">
          <li>
            <strong>access token</strong> - an access token as defined in <xref target="RFC6749" format="default"/> Section 1.4.</li>
          <li>
            <strong>Claims</strong> - Claims as defined in <xref target="OIDC" format="default"/> Section 5.</li>
          <li>
            <strong>Client ID</strong> - an AS unique identifier for a Registered Client as defined in <xref target="RFC6749" format="default"/> Section 2.2.</li>
          <li>
            <strong>ID Token</strong> - an ID Token as defined in <xref target="OIDC" format="default"/> Section 2.</li>
          <li>
            <strong>Claims</strong> - Claims as defined in <xref target="OIDC" format="default"/> Section 5.</li>
          <li>
            <strong>NumericDate</strong> - a NumericDate as defined in <xref target="RFC7519" format="default"/> Section 2.</li>
        </ul>
      </section>
      <section anchor="Sequence" numbered="true" toc="default">
        <name>Sequence</name>
        <ol spacing="normal" type="1">
          <li>
            <strong>AS Discovery</strong> The Client discovers the AS end point, keys, supported claims and authorizations, and other capabilities.  Some, or all of this information could be manually preconfigured, or dynamically obtained. Dynamic AS discovery is out of scope of this document.</li>
          <li>
            <strong>Initiation Request</strong> (<xref target="InitiationRequest" format="default"/>) The Client creates an initiation request (<xref target="InitiationRequestJSON" format="default"/>) for authorization to API resources and/or identity claims about the User and sends it with an HTTP POST to the AS endpoint.</li>
          <li>
            <strong>Initiation Response</strong>  (<xref target="InitiationResponse" format="default"/>) The AS processes the request and determines if it needs to interact with the RO or User. If interaction is not required, the AS returns a completion response (<xref target="CompletionResponseJSON" format="default"/>). If interaction is required the AS returns an initiation response (<xref target="InitiationResponseJSON" format="default"/>) that includes completion handle and uri, and interaction instructions if the AS wants the Client to start the interaction.</li>
          <li>
            <strong>Interaction</strong> (<xref target="Interaction" format="default"/>) If the AS sent interaction instructions to the Client, the Client executes them. The AS then interacts with the User and/or RO to obtain authorization. The AS interaction with an RO may be asynchronous, and take time to complete.</li>
          <li>
            <strong>Completion Request</strong> (<xref target="CompletionRequest" format="default"/>) The Client sends the completion handle to the completion uri. The Client may make the completion request while waiting for the interaction to complete.</li>
          <li>
            <strong>Completion Response</strong> (<xref target="CompletionResponse" format="default"/>) When any required interaction has been completed, the AS responds to the Client with a completion response (<xref target="CompletionResponseJSON" format="default"/>) containing authorized RS access tokens and User identity claims. The AS may provide refresh handles and uris for each access token if they are authorized. If proof-of-possession is required for accessing the RS, the AS will provide access handles instead of access tokens. If the AS has not completed the interaction, it will return a retry response for the Client to make a new completion request.</li>
          <li>
            <strong>Resource Request</strong> (<xref target="Bearer" format="default"/> &amp; <xref target="POP" format="default"/>) The Client uses an access token with the RS, or the access handle if proof-of-possession is required for access.</li>
          <li>
            <strong>Access Refresh</strong> (<xref target="Refresh" format="default"/>) If the Client received a refresh handle and uri, it sends the refresh handle to the refresh uri, and receives a fresh access token or handle.</li>
        </ol>
        <t><strong>Sequence Diagram</strong></t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+--------+                                           +---------------+
|        |<-(1)------- Discovery ------------------->|               |
|        |                                           |               |
|        |--(2)------- Initiation Request ---------->|               |
|        |                                           |               |
|        |<-(3)------- Initiation Response-----------|               |
|        |                                           |               |
|        |              +-Interaction-+              |               |
|        |--(4)-------->|    User     |<-------------|               |
|        |              |  and/or RO  |<-------------|               |
|        |              +-------------+              | Authorization |
| Client |                                           |    Server     |
|        |--(5)------- Completion Request ---------->|               |
|        |                                           |               |
|        |<-(6)------- Completion Response ----------|               |
|        |                                           |               |
|        |                            +----------+   |               |
|        |--(7)-- Resource Request -->| Resource |   |               |
|        |                            |  Server  |   |               |
|        |<------ Resource Response --|          |   |               |
|        |                            +----------+   |               |
|        |                                           |               |
|        |--(8)------- Refresh Request ------------->|               |
|        |                                           |               |
|        |<----------- Refresh Response -------------|               |
+--------+                                           +---------------+
]]></artwork>
      </section>
    </section>
    <section anchor="InitiationRequestJSON" numbered="true" toc="default">
      <name>Initiation Request JSON</name>
      <t>Following is a non-normative JSON <xref target="RFC8259" format="default"/> document example where the Client wants to interact with the User with a popup and is requesting identity claims about the User and read access to the User's contacts:</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
Example 1

{ 
    "as"    :"https://as.example",
    "iat"   :"1579046092",
    "nonce" :"f6a60810-3d07-41ac-81e7-b958c0dd21e4",
    "client": {
        "display": {
            "name"  :"SPA Display Name",
            "uri"   :"https://spa.example/about"
        },
        "interaction": {
            "type"  :"popup"
        }
    },
    "authorizations": {
        "type"      :"oauth_scope",
        "scope"     :"read_contacts"
    },
    "claims": {
        "oidc": {
            "id_token" : {
                "email"          : { "essential" : true },
                "email_verified" : { "essential" : true }
            },
            "userinfo" : {
                "name"           : { "essential" : true },
                "picture"        : null
            }
        }
    }
}
]]></artwork>
      <t>Following is a non-normative example where the Client has previously authenticated the User, and is requesting additional authorization:</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
Example 2

{ 
   "as"     :"https://as.example",
    "iat"   :"1579046092",
    "nonce" :"0d1998d8-fbfa-4879-b942-85a88bff1f3b",
    "client": {
        "id"        : "di3872h34dkJW",
        "interaction": {
            "type"  : "redirect",
            "uri"   : "https://web.example/return"
        }
    },
    "user": {
        "identifiers": {
            "oidc": {
                "iss"   :"https://as.example",
                "sub"   :"123456789"
            }
        }
    },
    "authorizations": {
        "type"  :"oauth_scope",
        "scope" :"read_calendar write_calendar"
    }
}
]]></artwork>
      <section anchor="top-level-attributes" numbered="true" toc="default">
        <name>Top Level Attributes</name>
        <t><strong>as</strong> - the unique string identifier for the AS. This attribute is REQUIRED.</t>
        <t><strong>iat</strong> - the time of the request as a NumericDate.</t>
        <t><strong>nonce</strong> - a unique identifier for this request. This attribute is REQUIRED. Note the completion response MUST contain a matching nonce attribute.</t>
      </section>
      <section anchor="client-object" numbered="true" toc="default">
        <name>"client" Object</name>
        <t>The client object MUST contain either the client_id attribute for Registered Clients, or the display object for Dynamic Clients. If the Client can interact with the User, then an interaction object MUST be included.</t>
        <t><strong>client_id</strong> - the identifier the AS has for the Registered Client.</t>
        <t><strong>display</strong> - the display object contains the following attributes:</t>
        <ul spacing="normal">
          <li>
            <strong>name</strong> - a string that represents the Dynamic Client</li>
        </ul>
        <t>[Editor: a max length for the name?]</t>
        <ul spacing="normal">
          <li>
            <strong>uri</strong> - a URI representing the Dynamic Client</li>
        </ul>
        <t>[Editor: a max length for the name?]</t>
        <t>The name and uri will be displayed by the AS when prompting for authorization.</t>
        <t><strong>interaction</strong> - the interaction object contains the type of interaction the Client will provide the User. Other attributes are dependent on the interaction type value.</t>
        <ul spacing="normal">
          <li>
            <t><strong>type</strong> - contains one of the following values. Types are listed from highest to lowest fidelity. The interaction URI is the value returned by the AS in the initiation response interaction object <xref target="interactionObject" format="default"/>, if a User interaction is required by the AS.  </t>
            <ul spacing="normal">
              <li>
                <strong>popup</strong> - the Client will load the interaction URI in a modal popup window. The AS will close the window when the interaction is complete.</li>
              <li>
                <strong>redirect</strong> - the Client will redirect the user agent to the interaction URI provided by the AS. The AS will redirect to the redirect_uri when the interaction is completed.</li>
              <li>
                <strong>qrcode</strong> - the Client will convert the interaction URI to a QR Code per <xref target="QR_Code" format="default"/> and display it to the User, along with a text message. The User will scan the QR Code and/or follow the message instructions.</li>
            </ul>
          </li>
          <li>
            <strong>redirect_uri</strong> - this attribute is included if the type is "redirect". It is the URI that the Client requests the AS to redirect the User to after the AS has completed interacting with the User. If the Client manages session state in URIs, then the redirect_uri should contain that state.</li>
          <li>
            <strong>ui_locales</strong> - End-User's preferred languages and scripts for the user interface, represented as a space-separated list of <xref target="RFC5646" format="default"/> language tag values, ordered by preference.</li>
        </ul>
        <t>[Editor: do we need max pixels or max chars for qrcode interaction? Either passed to AS, or max specified values here?]</t>
        <t>[Editor: other possible interaction models could be a "webview", where the Client can display a web page, or just a "message", where the client can only display a text message]</t>
        <t>[Editor: we may need to include interaction types for iOS and Android as the mobile OS APIs evolve.]</t>
        <t>[Editor: does the Client include parameters if it wants the completion response signed and/or encrypted?]</t>
      </section>
      <section anchor="user-object" numbered="true" toc="default">
        <name>"user" Object</name>
        <t>The user object is optional.</t>
        <t><strong>identifiers</strong> - the identifiers object contains one or more of the following identifiers for the User:</t>
        <ul spacing="normal">
          <li>
            <strong>phone_number</strong> - contains a phone number per Section 5 of <xref target="RFC3966" format="default"/>.</li>
          <li>
            <strong>email</strong> - contains an email address per <xref target="RFC5322" format="default"/>.</li>
          <li>
            <strong>oidc</strong> - is an object containing both the "iss" and "sub" attributes from an OpenID Connect ID Token per <xref target="OIDC" format="default"/> Section 2.</li>
        </ul>
        <t>The user and identifiers objects MAY be included to improve the user experience by the AS. The AS MUST authenticate the User independent of these values.</t>
        <t><strong>discovery</strong> - MUST contain the JSON true value. Indicates the Client requests the AS to return a "discovered" attribute in the initiation response if the AS has a User at the AS with one or more of the identifiers. This attribute is OPTIONAL. Supporting by the AS of the discovery attribute is OPTIONAL. The AS MAY return the TBD error if discovery is not supported, or ignore the request.</t>
      </section>
      <section anchor="authorizations-object" numbered="true" toc="default">
        <name>"authorizations" Object</name>
        <t>The optional authorizations object contains a dictionary of resource objects the Client is requesting authorization to access. The authorizations object may contain one or more of:</t>
        <ul spacing="normal">
          <li>
            <strong>type</strong> - one of the following values: "oauth_scope", "oauth_rich", or "oauth_rich_list". See <xref target="AuthorizationTypes" format="default"/> for details.</li>
          <li>
            <strong>scope</strong> - a string containing the OAuth 2.0 scope per <xref target="RFC6749" format="default"/> section 3.3. Present if type is "oauth_scope" or "oauth_rich".</li>
          <li>
            <strong>authorization_details</strong> - an authorization_details object per <xref target="RAR" format="default"/>. Present if type is "oauth_rich".</li>
          <li>
            <strong>list</strong> - an array of objects containing "scope" and "authorization_details". Present if type is "oauth_rich_list". Used when requesting multiple access tokens and/or handles.</li>
        </ul>
        <t>[Editor: details may change as the <xref target="RAR" format="default"/> document evolves]</t>
      </section>
      <section anchor="claims-object" numbered="true" toc="default">
        <name>"claims" Object</name>
        <t>The optional claims object contains one or more identity claims being requested. The claims may contain:</t>
        <ul spacing="normal">
          <li>
            <t><strong>oidc</strong> - an object that contains one or both of the following objects:  </t>
            <ul spacing="normal">
              <li>
                <strong>userinfo</strong> - Claims that will be returned as a JSON object</li>
              <li>
                <strong>id_token</strong> - Claims that will be included in the returned ID Token. If the null value, an ID Token will be returned containing no additional Claims.</li>
            </ul>
          </li>
        </ul>
        <t>The contents of the userinfo and id_token objects are Claims as defined in <xref target="OIDC" format="default"/> Section 5.</t>
        <ul spacing="normal">
          <li>vc - [Editor: define how W3C Verifiable Credentials <xref target="W3C_VC" format="default"/> can be requested.]</li>
        </ul>
      </section>
      <section anchor="AuthorizationTypes" numbered="true" toc="default">
        <name>Authorization Types</name>
        <ul spacing="normal">
          <li>
            <strong>oauth_scope</strong> - an OAuth 2.0 authorization request per <xref target="RFC6749" format="default"/> section 3.3</li>
          <li>
            <strong>oauth_rich</strong> - a rich authorization request per <xref target="RAR" format="default"/></li>
          <li>
            <strong>oauth_rich_list</strong> - a list of rich authorization requests</li>
        </ul>
      </section>
    </section>
    <section anchor="InitiationResponseJSON" numbered="true" toc="default">
      <name>Initiation Response JSON</name>
      <t>A non-normative example of an initiation response follows:</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "user": {
        "discovered": true
    },
    "interaction": {
        "type"   : "popup",
        "uri"    : "https://as.example/endpoint/ey5gs32..."
    },
    "completion": {
        "handle" : "eyJhb958.example.completion.handle.9yf3szM",
        "uri"    : "https://as.example/completion/ey7snHGs",
        "wait"   : "10"
    }
}
]]></artwork>
      <section anchor="userObject" numbered="true" toc="default">
        <name>"user" Object</name>
        <t>If the initiation request included a discovery attribute, then the AS MAY return a "user" object with the "discovered" property set to the JSON value true if one or more of the identifiers provided in the initiation request identify a User at the AS, or the JSON value false if not.</t>
        <t>[Editor: reference a security consideration for this functionality.]</t>
      </section>
      <section anchor="interactionObject" numbered="true" toc="default">
        <name>"interaction" Object</name>
        <t>If the AS wants the Client to start the interaction, the AS MUST select one of the interaction mechanisms provided by the Client in the initiation request, and include the matching attribute in the interaction object:</t>
        <ul spacing="normal">
          <li>
            <strong>type</strong> - this MUST match the type provided by the Client in the initiation request client.interaction object.</li>
          <li>
            <strong>uri</strong> - the URI to interact with the User per the type. This may be a temporary short URL if the type is qrcode so that it is easy to scan.</li>
          <li>
            <strong>message</strong> - a text string to display to the User if type is qrcode.</li>
        </ul>
        <t>[Editor: do we specify a maximum length for the uri and message so that a device knows the maximum it needs to support? A smart device may have limited screen real estate.]</t>
      </section>
      <section anchor="completion-object" numbered="true" toc="default">
        <name>"completion" Object</name>
        <t>The completion object has the following attributes:</t>
        <ul spacing="normal">
          <li>
            <strong>handle</strong> - the completion handle. This attribute is REQUIRED.</li>
          <li>
            <strong>uri</strong> - the completion URI. This attribute is REQUIRED.</li>
          <li>
            <strong>wait</strong> - the amount of time in integer seconds the Client MUST wait before making the completion request. This attribute is OPTIONAL.</li>
        </ul>
      </section>
    </section>
    <section anchor="Interaction" numbered="true" toc="default">
      <name>Interaction Types</name>
      <t>If the AS wants the Client to initiate the interaction with the User, then the AS will return an interaction object <xref target="interactionObject" format="default"/> so that the Client can can hand off interactions with the User to the AS. The Client will initiate the interaction with the User in one of the following ways:</t>
      <section anchor="popup-type" numbered="true" toc="default">
        <name>"popup" Type</name>
        <t>The Client will create a new popup child browser window containing the value of the uri attribute of the interaction object. 
[Editor: more details on how to do this]</t>
        <t>The AS will close the window when the interactions with the User are complete. [Editor: confirm AS can do this still on all browsers, or does Client need to close]</t>
        <t>The AS MAY respond to an outstanding completion request <xref target="CompletionRequest" format="default"/> before the popup window has been closed.</t>
      </section>
      <section anchor="redirect-type" numbered="true" toc="default">
        <name>"redirect" Type</name>
        <t>The Client will redirect the User to the value of the uri attribute of the interaction object. When the AS interactions with the User are complete, the AS will redirect the User to the redirect_uri the Client provided in the initiation request.</t>
        <t>If the Client made a completion request when starting the interaction, the AS MAY respond to the completion request <xref target="CompletionRequest" format="default"/> before the User has been redirected back to the Client.</t>
      </section>
      <section anchor="qrcode-type" numbered="true" toc="default">
        <name>"qrcode" Type</name>
        <t>The Client will create a <xref target="QR_Code" format="default"/> of the uri attribute of the interaction object and display the resulting graphic and the message attribute of the interaction object as a text string.</t>
      </section>
    </section>
    <section anchor="CompletionResponseJSON" numbered="true" toc="default">
      <name>Completion Response JSON</name>
      <t>Example non-normative completion response JSON document for Example 1 in <xref target="InitiationRequestJSON" format="default"/>:</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
{ 
    "iat":"15790460234",
    "nonce":"f6a60810-3d07-41ac-81e7-b958c0dd21e4",
    "authorizations": {
        "type"          : "oauth_scope",
        "scope"         : "read_contacts",
        "expires_in"    : "3600",
        "method"        : "bearer",
        "token"         : "eyJJ2D6.example.access.token.mZf9p"
    },
    "claims": {
        "oidc": {
            "id_token"      : "eyJhbUzI1N.example.id.token.YRw5DFdbW",
            "userinfo" : {
                "name"      : "John Doe",
                "picture"   : "https://photos.example/p/eyJzdkiO"
            }
        }
    }
}
]]></artwork>
      <t>Example non-normative completion response JSON document for Example 2 in <xref target="InitiationRequestJSON" format="default"/>:</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "iat"   :"15790460234",
    "nonce" :"0d1998d8-fbfa-4879-b942-85a88bff1f3b",
    "authorizations": {
        "type"          : "oauth_scope",
        "scope"         : "read_calendar write_calendar",
        "expires_in"    : "3600",
        "method"        : "pop",
        "access": {
            "handle"    : "ey.example.access.handle.9yf3szM",
            "jwk": {
                "x5u"   : "https://as.example/jwk/VBUEOIQA82" 
            }       
        },
        "refresh": {
            "handle"    : "ey.example.refresh.handle.Jl4FzM",
            "uri"       : "https://as.example/refresh/eyj34"
        }
    }
}
]]></artwork>
      <t>Details of the JSON document:</t>
      <section anchor="top-level-attributes-1" numbered="true" toc="default">
        <name>Top Level Attributes</name>
        <t><strong>iat</strong> - the time of the response as a NumericDate.</t>
        <t><strong>nonce</strong> - the nonce that was included in the initiation request JSON <xref target="InitiationRequestJSON" format="default"/>.</t>
      </section>
      <section anchor="AuthorizationsObject" numbered="true" toc="default">
        <name>"authorizations" Object</name>
        <t>There is an authorizations object in the completion response if there was an authorizations object in the initiation request.</t>
        <ul spacing="normal">
          <li>
            <strong>type</strong> - the type of claim request: "oauth_scope", "oauth_rich", or "oauth_rich_list". See <xref target="AuthorizationTypes" format="default"/> for details.</li>
          <li>
            <strong>list</strong> - an array of objects if the type was "oauth_rich_list". The objects have the following attributes just as if the type was "oauth_rich"</li>
          <li>
            <strong>scope</strong> - the scopes the Client was granted authorization for. This will be all, or a subset, of what was requested.</li>
          <li>
            <strong>authorization_details</strong> - the authorization details granted. Only returned for "oauth_rich" and "oauth_rich_list".</li>
          <li>
            <strong>method</strong> - the access method: "bearer" or "pop". See <xref target="AccessMethod" format="default"/> for details.</li>
          <li>
            <strong>token</strong> - an access token for accessing the resource(s). Included if the access method is "bearer".</li>
          <li>
            <strong>expires_in</strong> - an optional value specifying how many seconds until the access token or handle expire.</li>
          <li>
            <t><strong>refresh</strong> - an optional object containing parameters required to refresh an access token or handle. See refresh request <xref target="Refresh" format="default"/>.  </t>
            <ul spacing="normal">
              <li>
                <strong>handle</strong> - an refresh handle used to create the JSON refresh token.</li>
              <li>
                <strong>uri</strong> - the refresh uri the Client will use to refresh.</li>
            </ul>
          </li>
          <li>
            <t><strong>access</strong> - an object containing the parameters needed to access resources requiring proof-of-possession. Included if the access method is "pop".  </t>
            <ul spacing="normal">
              <li>
                <strong>handle</strong> - the access handle.</li>
              <li>
                <strong>jwk</strong> - the jwk object to use.</li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="claims-object-1" numbered="true" toc="default">
        <name>"claims" Object</name>
        <t>There is a claims object in the completion response if there was a claims object in the initiation request.</t>
        <ul spacing="normal">
          <li>
            <t><strong>oidc</strong>  </t>
            <ul spacing="normal">
              <li>
                <strong>id_token</strong> - an OpenID Connect ID Token containing the Claims the User consented to be released.</li>
              <li>
                <strong>userinfo</strong> - the Claims the User consented to be released.</li>
            </ul>
            <t>
Claims are defined in <xref target="OIDC" format="default"/> Section 5.</t>
          </li>
          <li>
            <t><strong>vc</strong>  </t>
            <t>
The verified claims the user consented to be released. [Editor: details TBD]</t>
          </li>
        </ul>
      </section>
      <section anchor="AccessMethod" numbered="true" toc="default">
        <name>Access Types</name>
        <t>There are two types of access to an RS:</t>
        <ul spacing="normal">
          <li>
            <strong>bearer</strong> - the AS provides a bearer access token that the Client can use to access an RS per <xref target="Bearer" format="default"/>.</li>
          <li>
            <strong>pop</strong> - the AS provides an access handle that the Client presents in a proof-of-possession RS access request per <xref target="POP" format="default"/>.</li>
        </ul>
      </section>
    </section>
    <section anchor="discovery" numbered="true" toc="default">
      <name>Discovery</name>
      <t>The Client obtains the following metadata about the AS prior to initiating a request:</t>
      <t><strong>Endpoint</strong> - the endpoint of the AS.</t>
      <t><strong>"as"</strong> - the unique string identifier for the AS.</t>
      <t><strong>Algorithms</strong> - the asymetric cryptographic algorithms supported by the AS.</t>
      <t><strong>Authorizations</strong> - the authorizations the Client may request, if any.</t>
      <t><strong>Identity Claims</strong> - the identity claims the Client may request, if any, and what public keys the claims will be signed with.</t>
      <t>The client may also obtain information about how the AS will sign and/or encrypt the completion response, as well as any other metadata required for extensions to this protocol, as defined in those extension specifications.</t>
    </section>
    <section anchor="ClientAuthN" numbered="true" toc="default">
      <name>JOSE Client Authentication</name>
      <t>The default mechanism for the Client to authenticate to the AS and the RS is signing a JSON document with JWS per <xref target="RFC7515" format="default"/>. The resulting tokens always use compact serialization.</t>
      <t>It is expected that extensions to this protocol that specify a different mechanism for the Client to authenticate, would over ride this section.</t>
      <t>The completion request JSON is signed with JWS and passed as the body of the POST.</t>
      <t>The completion, refresh, and access handles are signed with JWS resulting in JOSE completion, refresh, and access tokens respectively. These JOSE tokens are passed in the HTTP Authorization header with the "JOSE" parameter per <xref target="JOSEHTTP" format="default"/>.</t>
      <t>The Client will use the same private key to create all tokens.</t>
      <t>The Client and the AS MUST both use HTTP/2 (<xref target="RFC7540" format="default"/>) or later, and TLS 1.3 (<xref target="RFC8446" format="default"/>) or later, when communicating with each other.</t>
      <t>[Editor: too aggressive to mandate HTTP/2 and TLS 1.3?]</t>
      <section anchor="JOSEHeaders" numbered="true" toc="default">
        <name>JOSE Headers</name>
        <t>A non-normative example of a JOSE header for a Registered Client using a key id to identify the Client's public key:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "alg":"ES256",
    "typ":"JOSE",
    "kid":"1"
}
]]></artwork>
        <t>A non-normative example of a JOSE header for a Registered Client using a certificate to assert the Client's public key:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "alg":"ES256",
    "typ":"JOSE",
    "jwk":
        {"kty":"RSA",
        "use":"sig",
        "kid":"1b94c",
        "n":"vrjOfz9Ccdgx5nQudyhdoR17V-IubWMeOZCwX_jj0hgAsz2J_pqYW08
        PLbK_PdiVGKPrqzmDIsLI7sA25VEnHU1uCLNwBuUiCO11_-7dYbsr4iJmG0Q
        u2j8DsVyT1azpJC_NG84Ty5KKthuCaPod7iI7w0LK9orSMhBEwwZDCxTWq4a
        YWAchc8t-emd9qOvWtVMDC2BXksRngh6X5bUYLy6AyHKvj-nUy1wgzjYQDwH
        MTplCoLtU-o-8SNnZ1tmRoGE9uJkBLdh5gFENabWnU5m1ZqZPdwS-qo-meMv
        VfJb6jJVWRpl2SUtCnYG2C32qvbWbjZ_jBPD5eunqsIo1vQ",
        "e":"AQAB",
        "x5c":
        ["MIIDQjCCAiqgAwIBAgIGATz/FuLiMA0GCSqGSIb3DQEBBQUAMGIxCzAJB
        gNVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UEBxMGRGVudmVyMRwwGgYD
        VQQKExNQaW5nIElkZW50aXR5IENvcnAuMRcwFQYDVQQDEw5CcmlhbiBDYW1
        wYmVsbDAeFw0xMzAyMjEyMzI5MTVaFw0xODA4MTQyMjI5MTVaMGIxCzAJBg
        NVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UEBxMGRGVudmVyMRwwGgYDV
        QQKExNQaW5nIElkZW50aXR5IENvcnAuMRcwFQYDVQQDEw5CcmlhbiBDYW1w
        YmVsbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL64zn8/QnH
        YMeZ0LncoXaEde1fiLm1jHjmQsF/449IYALM9if6amFtPDy2yvz3YlRij66
        s5gyLCyO7ANuVRJx1NbgizcAblIgjtdf/u3WG7K+IiZhtELto/A7Fck9Ws6
        SQvzRvOE8uSirYbgmj6He4iO8NCyvaK0jIQRMMGQwsU1quGmFgHIXPLfnpn
        fajr1rVTAwtgV5LEZ4Iel+W1GC8ugMhyr4/p1MtcIM42EA8BzE6ZQqC7VPq
        PvEjZ2dbZkaBhPbiZAS3YeYBRDWm1p1OZtWamT3cEvqqPpnjL1XyW+oyVVk
        aZdklLQp2Btgt9qr21m42f4wTw+Xrp6rCKNb0CAwEAATANBgkqhkiG9w0BA
        QUFAAOCAQEAh8zGlfSlcI0o3rYDPBB07aXNswb4ECNIKG0CETTUxmXl9KUL
        +9gGlqCz5iWLOgWsnrcKcY0vXPG9J1r9AqBNTqNgHq2G03X09266X5CpOe1
        zFo+Owb1zxtp3PehFdfQJ610CDLEaS9V9Rqp17hCyybEpOGVwe8fnk+fbEL
        2Bo3UPGrpsHzUoaGpDftmWssZkhpBJKVMJyf/RuP2SmmaIzmnw9JiSlYhzo
        4tpzd5rFXhjRbg4zW9C+2qok+2+qDM1iJ684gPHMIY8aLWrdgQTxkumGmTq
        gawR+N5MDtdPTEQ0XfIBc2cJEUyMTY5MPvACWpkA6SdS4xSvdXK3IVfOWA=="]
        }    
}
]]></artwork>
        <t>[Editor: the jwk above was copy and pasted from the JWK example. Replace? ]</t>
        <t>The certificate could be signed by the AS, allowing the AS to verify the signature using the AS public key, or the certificate could be signed by a private key the AS has bound to the Registered Client, allowing each instance of the Registered Client to have its own asymetric key pair.</t>
        <t>A non-normative example of a JOSE header for a Dynamic Client including the public key generated by the Client that matches its its private key:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "alg":"ES256",
    "typ":"JOSE",
    "jwk":{
        "kty":"EC",
        "crv":"P-256",
        "x":"Kgl5DJSgLyV-G32osmLhFKxJ97FoMW0dZVEqDG-Cwo4",
        "y":"GsL4mOM4x2e6iON8BHvRDQ6AgXAPnw0m0SfdlREV7i4"
    }
}
]]></artwork>
        <t>A non-normative example of a JOSE Access Token JOSE header for a Client accessing an RS that requires proof-of-possession:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "alg":"ES256",
    "typ":"JOSE",
    "jwk":{
        "x5u":"https://as.example/jwk/VBUEOIQA82" 
    }
}
]]></artwork>
        <t>The "jwk" object in a JOSE access token <xref target="JOSEAccessToken" format="default"/> MUST be the AS jwk object the AS provided with the access handle.</t>
        <t>This decouples how the AS communicates the Client's public key to the RS from how the AS asserts the Client's public key. The RS can have a consistent mechanism assert the Client's public key across all Clients.</t>
        <t>One advantage of this is the AS can create a certificate of a Dynamic Client's public key, and pass it by value or reference to the Client to present to the RS.</t>
        <t>All JOSE headers MUST have:
+ the "alg" attribute.
+ the "typ" attribute set to "jose".
+ either a "kid" or "jwk" attribute.</t>
        <t>[Editor: should we use indicate the type of token (completion, refresh, access) using "typ" or "cty"?]</t>
      </section>
      <section anchor="JOSECompletionToken" numbered="true" toc="default">
        <name>JOSE Completion Token</name>
        <t>A non-normative example of a payload follows:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "as"    :"https://as.example",
    "type"  :"completion",
    "iat"   :"1579046092",
    "jti"   :"f6d72254-4f23-417f-b55e-14ad323b1dc1",
    "handle":"eyJhb958.example.completion.handle.9yf3szM"
}
]]></artwork>
        <t>The payload of the completion token contains:</t>
        <t><strong>as</strong> - the unique string identifier for the AS.</t>
        <t><strong>type</strong> - the string "completion", indicating the type of token.</t>
        <t><strong>iat</strong> - the time the completion token was created as a NumericDate.</t>
        <t><strong>jti</strong> - a unique identifier for the completion token per <xref target="RFC7519" format="default"/> section 4.1.7.</t>
        <t><strong>handle</strong> the completion handle the AS provided the Client in the initiation response <xref target="InitiationResponseJSON" format="default"/>.</t>
      </section>
      <section anchor="JOSERefreshToken" numbered="true" toc="default">
        <name>JOSE Refresh Token</name>
        <t>A non-normative example of a payload follows:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "as"    :"https://as.example",
    "type"  :"refresh",
    "iat"   :"1579049876",
    "jti"   :"4342046d-83c4-4725-8c72-e9a49245f791",
    "handle":"eyJhb958.example.refresh.handle.9yf3szM"
}
]]></artwork>
        <t>The payload of the completion token contains:</t>
        <t><strong>as</strong> - the unique string identifier for the AS.</t>
        <t><strong>type</strong> - the string "refresh", indicating the type of token.</t>
        <t><strong>iat</strong> - the time the JOSE refresh token was created as a NumericDate.</t>
        <t><strong>jti</strong> - a unique identifier for the JOSE refresh token.</t>
        <t><strong>handle</strong> the refresh handle the AS provided the Client in the completion response <xref target="CompletionResponseJSON" format="default"/> or access refresh response <xref target="Refresh" format="default"/>.</t>
      </section>
      <section anchor="JOSEAccessToken" numbered="true" toc="default">
        <name>JOSE Access Token</name>
        <t>The "jwk" object in a JOSE access token header MUST be set to the "jwk" value the AS provided for the access handle.</t>
        <t>A non-normative example of a payload follows:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "type"  :"access",
    "iat"   :"1579046092",
    "jti"   :"5ef47057-08f9-4763-be8d-162824d43dfb",
    "handle":"eyJhb958.example.access.handle.9yf3szM"
}
]]></artwork>
        <t>The payload of the JOSE access token contains:</t>
        <t><strong>type</strong> - the string "access", indicating the type of token.</t>
        <t><strong>iat</strong> - the time the JOSE access token was created as a NumericDate.</t>
        <t><strong>jti</strong> - a unique identifier for the JOSE access token.</t>
        <t><strong>handle</strong> the access handle the AS provided the Client in the completion response <xref target="CompletionResponseJSON" format="default"/> or access refresh response <xref target="Refresh" format="default"/>.</t>
      </section>
      <section anchor="JOSEHTTP" numbered="true" toc="default">
        <name>HTTP Authorization JOSE Header</name>
        <t>The Client authenticates requests by setting the HTTP Authorization header to include the "JOSE" parameter, followed by one or more space characters, followed by the appropriate JOSE token.</t>
        <t>A non-normative example:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Authorization: JOSE eyJhb.example.completion.token.haDwskpFDBW
]]></artwork>
        <t>The JOSE completion token, JOSE refresh token, and the JOSE access token are all passed in this manner.</t>
      </section>
      <section anchor="jose-token-verification" numbered="true" toc="default">
        <name>JOSE Token Verification</name>
        <t>TBD</t>
      </section>
      <section anchor="InitiationRequest" numbered="true" toc="default">
        <name>Initiation Request</name>
        <t>The Client creates a JSON document per <xref target="InitiationRequestJSON" format="default"/>, signs it using JWS <xref target="RFC7515" format="default"/>, and sends the JWS token to the AS end point using HTTP POST, with a content-type of application/jose.</t>
        <ul spacing="normal">
          <li>
            <strong>Payload Encryption</strong></li>
        </ul>
        <t>The AS may require the initiation request to be encrypted. If so, the JWS token is encrypted per JWE <xref target="RFC7516" format="default"/> using the public key and algorithm specified by the AS.</t>
      </section>
      <section anchor="InitiationResponse" numbered="true" toc="default">
        <name>Initiation Response</name>
        <t>If no interaction is required the AS will return a completion response per <xref target="CompletionResponse" format="default"/>, otherwise the AS will return an initiation response per <xref target="InitiationResponseJSON" format="default"/>.</t>
        <t>If the AS wants the Client to start the interaction, an interaction object will be returned in the response.</t>
        <ul spacing="normal">
          <li>
            <strong>Error Responses</strong></li>
        </ul>
        <t>The AS MAY respond with one of the following errors defined in <xref target="ErrorMessages" format="default"/>:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
TBD
]]></artwork>
      </section>
      <section anchor="DeletionRequest" numbered="true" toc="default">
        <name>Deletion Request</name>
        <t>The Client MAY delete an outstanding request using the completion token by making an HTTP DELETE call to the completion uri, setting the HTTP Authorization header per <xref target="JOSEHTTP" format="default"/> with the JOSE completion token.</t>
        <t>A non-normative deletion request example:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
DELETE /completion/ey7snHGs HTTP/2
Host: as.example
Authorization: JOSE eyJhb.example.completion.token.haDwskpFDBW
]]></artwork>
        <ul spacing="normal">
          <li>
            <strong>Error Responses</strong></li>
        </ul>
        <t>The AS MAY respond with one of the following errors defined in <xref target="ErrorMessages" format="default"/>:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
TBD
]]></artwork>
      </section>
      <section anchor="CompletionRequest" numbered="true" toc="default">
        <name>Completion Request</name>
        <t>The Client makes an HTTP GET call to the completion uri, setting the HTTP Authorization header per <xref target="JOSEHTTP" format="default"/> with the JOSE completion token.</t>
        <t>A non-normative completion request example:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
GET /completion/ey7snHGs HTTP/2
Host: as.example
Authorization: JOSE eyJhb.example.completion.token.haDwskpFDBW
]]></artwork>
      </section>
      <section anchor="CompletionResponse" numbered="true" toc="default">
        <name>Completion Response</name>
        <t>The AS verifies the JOSE completion token, and then provides a response according to what the User and/or RO have authorized if required. If no signature or encryption was required, the AS will respond with a JSON document with content-type set to application/json.</t>
        <ul spacing="normal">
          <li>
            <strong>Response Signing</strong></li>
        </ul>
        <t>The AS MAY sign the response with a JWS per <xref target="RFC7515" format="default"/> and the private key matching the public key the AS defined as its completion response signing key. The AS will respond with the content-type set to application/jose.</t>
        <ul spacing="normal">
          <li>
            <strong>Response Encryption</strong></li>
        </ul>
        <t>The AS MAY encrypt the response using the public key provided by the Client, using JWE per <xref target="RFC7516" format="default"/>. The AS will respond with the content-type set to application/jose.</t>
        <ul spacing="normal">
          <li>
            <strong>Error Responses</strong></li>
        </ul>
        <t>The AS MAY respond with one of the following errors defined in <xref target="ErrorMessages" format="default"/>:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
TBD
]]></artwork>
      </section>
      <section anchor="Bearer" numbered="true" toc="default">
        <name>Bearer Token RS Access</name>
        <t>If the access method in the completion response authorizations object <xref target="AuthorizationsObject" format="default"/> was "bearer", then the Client accesses the RS per Section 2.1 of <xref target="RFC6750" format="default"/></t>
        <t>A non-normative example of the HTTP request headers follows:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
GET /calendar HTTP/2
Host: calendar.example
Authorization: bearer eyJJ2D6.example.access.token.mZf9pTSpA
]]></artwork>
        <ul spacing="normal">
          <li>
            <strong>Error Responses</strong></li>
        </ul>
        <t>TBD</t>
      </section>
      <section anchor="POP" numbered="true" toc="default">
        <name>Proof-of-possession RS Access</name>
        <t>If the access method in the completion response authorizations object <xref target="AuthorizationsObject" format="default"/> was "pop", then the Client creates a JOSE access token per <xref target="JOSEAccessToken" format="default"/> for each call to the RS, setting the HTTP Authorization header per <xref target="JOSEHTTP" format="default"/> with the JOSE access token.</t>
        <t>A non-normative example of the HTTP request headers follows:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
GET /calendar HTTP/2
Host: calendar.example
Authorization: JOSE eyJhbG.example.JOSE.access.token.kwwQb958
]]></artwork>
        <ul spacing="normal">
          <li>
            <strong>Error Responses</strong></li>
        </ul>
        <t>TBD</t>
      </section>
      <section anchor="Refresh" numbered="true" toc="default">
        <name>Access Refresh</name>
        <t>If the Client received a refresh handle and uri from the AS in the initiation response, and it wants a fresh access token or handle, it creates a JOSE refresh token per <xref target="JOSERefreshToken" format="default"/>.  setting the HTTP Authorization header per <xref target="JOSEHTTP" format="default"/> with the JOSE refresh token. The AS will then respond with a refresh response.</t>
        <ul spacing="normal">
          <li>
            <strong>Refresh Response</strong></li>
        </ul>
        <t>A non-normative example refresh response with an access handle:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "type"          : "oauth_scope",
    "scope"         : "read_calendar write_calendar",
    "expires_in"    : "3600",
    "method"        : "pop",
    "access": {
        "handle"    : "ey.example.access.handle.9yf3iWszM",
        "jwk": {
            "x5u"   : "https://as.example/jwk/VBUEOIQA82" 
        }       
    },
    "refresh": {
        "handle"    : "ey.example.refresh.handle.4SkjIi",
        "uri"       : "https://as.example/refresh/eyJl4FzM"
    }
}
]]></artwork>
        <t>The refresh response is the same as the authorizations object <xref target="AuthorizationsObject" format="default"/> in the completion response.</t>
        <t>If a new refresh handle and/or refresh uri is returned, the Client MUST use the new refresh handle and/or refresh uri</t>
        <t>[Editor: are there other results relevant for <xref target="RAR" format="default"/>?]</t>
        <ul spacing="normal">
          <li>
            <strong>Error Responses</strong></li>
        </ul>
        <t>The AS MAY respond with one of the following errors defined in <xref target="ErrorMessages" format="default"/>:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
TBD
]]></artwork>
      </section>
    </section>
    <section anchor="ErrorMessages" numbered="true" toc="default">
      <name>Error Messages</name>
      <artwork name="" type="" align="left" alt=""><![CDATA[
\[Editor: return "wait" time in completion response when AS wants Client to wait before retying a completion request.
The Client MUST generate a fresh completion token when retrying the completion request.
] 

TBD
]]></artwork>
    </section>
    <section anchor="ASInitiatedSequence" numbered="true" toc="default">
      <name>AS Initiated Sequence</name>
      <t>[Editor: AS initiated flows have been challenging to implement as OAuth 2.0 did not directly support them, so deployments bounced back and forth between the Client and AS to create a Client initiated flow. Here is a proposal to support AS initiated: authentication; just-in-time (JIT) provisioning; and authorization]</t>
      <t>In this sequence the User starts at the AS, and then based on User input, the AS redirects the User to a Client, passing an initiation token <xref target="InitiationToken" format="default"/>, and then the Client retrieves authorizations and/or identity claims about the User. The Client MUST be a Registered Client. The sequence follows:</t>
      <ol spacing="normal" type="1">
        <li>The User is interacting at the AS and wants to use the Client, and provide the Client identity claims and/or authorizations from the AS that the Client has pre-configured.</li>
        <li>The AS creates a completion handle and uri representing the identity claims and authorizations to be provided to the Client. The AS creates an initiation token containing the AS identifier, the completion handle, and the completion uri.</li>
        <li>The AS redirects the User to a URI the Client has configured to accept initiation tokens, passing the initiation token as a query parameters with the name "token".</li>
        <li>The Client verifies the initiation token.</li>
        <li>The Client makes a completion request per <xref target="CompletionRequest" format="default"/>.</li>
        <li>The AS responds with a completion response JSON document <xref target="CompletionResponseJSON" format="default"/> per <xref target="CompletionResponse" format="default"/>.</li>
      </ol>
      <t>The Client now has the User identity claims and/or authorizations. If Client policy permits, the Client can perform JIT provisioning if the User is new to the Client.</t>
      <t><strong>AS Initiated Sequence Diagram</strong></t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
+--------+              +-------------+             +---------------+
|        |              |             |             |               |
|        |              |    User     |-------(1)-->|               |
|        |              |             |             |               |
|        |              +-------------+             |  (2)          |
|        |                    /\                    |               |
| Client |<--- initiation ---/  \-------------(3)---| Authorization |
|        |         token                            |    Server     |
|    (4) |                                          |               |
|        |                                          |               |
|        |--(5)------- Completion Request --------->|               |
|        |                                          |               |
|        |<-(6)------- Completion Response ---------|               |
|        |                                          |               | 
+--------+                                          +---------------+
]]></artwork>
      <section anchor="InitiationToken" numbered="true" toc="default">
        <name>Initiation Token</name>
        <t>A non-normative example of an initiation token payload follows:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "as": "https://as.example",
    "completion": {
        "handle" : "eyJhb958.example.completion.handle.9yf3szM",
        "uri"    : "https://as.example/completion/ey7snHGs"
    }
}
]]></artwork>
        <ul spacing="normal">
          <li>
            <strong>as</strong> - the "as" identifier for the AS. This attribute is REQUIRED.</li>
          <li>
            <t><strong>completion</strong> - the completion object has the following attributes:  </t>
            <ul spacing="normal">
              <li>
                <strong>handle</strong> - the completion handle. This attribute is REQUIRED.</li>
              <li>
                <strong>uri</strong> - the completion URI. This attribute is REQUIRED.</li>
            </ul>
          </li>
        </ul>
        <t>The initiation token is signed with JWS and uses the compact serialization.</t>
      </section>
    </section>
    <section anchor="extensibility" numbered="true" toc="default">
      <name>Extensibility</name>
      <t>This standard can be extended in a number of areas:</t>
      <ul spacing="normal">
        <li>
          <strong>Client Authentication Mechanisms</strong></li>
      </ul>
      <t>An extension could define other mechanisms for the Client to authenticate and replace JOSE in <xref target="ClientAuthN" format="default"/> with Mutual TLS or HTTP Signing. Constrained environments could use CBOR <xref target="RFC7049" format="default"/> instead of JSON, and COSE <xref target="RFC8152" format="default"/> instead of JOSE, and CoAP <xref target="RFC8323" format="default"/> instead of HTTP/2.</t>
      <ul spacing="normal">
        <li>
          <strong>Initiation Request</strong></li>
      </ul>
      <t>An additional top level object could be added to the initiation request payload if the AS can manage delegations other than authorizations or claims, or some other functionality.</t>
      <ul spacing="normal">
        <li>
          <strong>"client" Object</strong></li>
      </ul>
      <t>Additional information about the Client that the AS would require related to an extension.</t>
      <ul spacing="normal">
        <li>
          <strong>"user" Object</strong></li>
      </ul>
      <t>Additional information about the Client that the AS would require related to an extension.</t>
      <ul spacing="normal">
        <li>
          <strong>"authorizations" Object</strong></li>
      </ul>
      <t>Additional types of authorizations in addition to OAuth 2.0 scopes and RAR.</t>
      <ul spacing="normal">
        <li>
          <strong>"claims" Object</strong></li>
      </ul>
      <t>Additional types of identity claims in addition to OpenID Connect claims and Verified Credentials.</t>
      <ul spacing="normal">
        <li>
          <strong>Interaction</strong></li>
      </ul>
      <t>Additional mechanisms for the Client to start an interaction with the User.</t>
      <ul spacing="normal">
        <li>
          <strong>Access Methods</strong></li>
      </ul>
      <t>Additional mechanisms for the Client to present authorization to a resource.</t>
      <t>[Editor: do we specify access token / handle introspection in this document, or leave that to an extension?]</t>
      <t>[Editor: do we specify access token / handle revocation in this document, or leave that to an extension?]</t>
    </section>
    <section anchor="rational" numbered="true" toc="default">
      <name>Rational</name>
      <ol spacing="normal" type="1">
        <li>
          <t><strong>Why is there only one mechanism for the Client to authenticate with the AS? Why not support other mechanisms?</strong>  </t>
          <t>
Having choices requires implementers to understand which choice is preferable for them. Having one default mechanism in the document for the Client to authenticate simplifies most implementations. Extensions can specify other mechanisms that are preferable in specific environments.</t>
        </li>
        <li>
          <t><strong>Why is the default Client authentication JOSE rather than MTLS?</strong>  </t>
          <t>
MTLS cannot be used today by a Dynamic Client. MTLS requires the application to have access below what is typically the application layer, that is often not available on some platforms. JOSE is done at the application layer. Many AS deployments will be an application behind a proxy performing TLS, and there are risks in the proxy passing on the results of MTLS.</t>
        </li>
        <li>
          <t><strong>Why is the default Client authentication JOSE rather than HTTP signing?</strong>  </t>
          <t>
There is currently no widely deployed open standard for HTTP signing. Additionally, HTTP signing requires passing all the relevant parts of the HTTP request to downstream services within an AS that may need to independently verify the Client identity.</t>
        </li>
        <li>
          <t><strong>What are the advantages of using JOSE for the Client to authenticate to the AS and a resource?</strong>  </t>
          <t>
Both Registered Clients and Dynamic Clients can have a private key, eliminating the public Client issues in OAuth 2.0, as a Dynamic Client can create an ephemeral key pair. Using asymetric cryptography also allows each instance of a Registered Client to have its own private key if it can obtain a certificate binding its public key to the public key the AS has for the Client. Signed tokens can be passed to downstream components in a AS or RS to enable independent verification of the Client and its request. The AS Initiated Sequence <xref target="ASInitiatedSequence" format="default"/> requires a URL safe parameter, and JOSE is URL safe.</t>
        </li>
        <li>
          <t><strong>Why does the AS not return parameters to the Client in the redirect url?</strong>  </t>
          <t>
Passing parameters via a browser redirection is the source of many of the security risks in OAuth 2.0. It also presents a challenge for smart devices. In this protocol, the redirection from the Client to the AS is to enable the AS to interact with the User, and the redirection back to the Client is to hand back interaction control to the Client if the redirection was a full browser redirect. Unlike OAuth 2.0, the identity of the Client is independent of the URI the AS redirects to.</t>
        </li>
        <li>
          <t><strong>Why is there not a UserInfo endpoint as there is with OpenID Connect?</strong>  </t>
          <t>
In OpenID Connect, obtaining claims over the redirect or the Token Endpoint are problematic. The redirect is limited in size, and is not secure. The Token Endpoint is intended to return tokens, and is limited by the "application/x-www-form-urlencoded" format. A UserInfo endpoint returns "application/json", and can return rich claims, just as the completion uri in this protocol.  </t>
          <t>
[Editor: is there some other reason to have the UserInfo endpoint? What are industry best practices now? ]</t>
        </li>
        <li>
          <t><strong>Why is there still a Client ID? Could we not use a fingerprint of the public key to identify the Client?</strong>  </t>
          <t>
Some AS deployments do not allow calls from Registered Clients, and provide different functionality to different Clients. A permanent identifier for the Client is needed for the Client developer and the AS admin to ensure they are referring to the same Client. The Client ID was used in OAuth 2.0, and it served the same purpose.</t>
        </li>
        <li>
          <t><strong>Why have both claims and authorizations?</strong>  </t>
          <t>
There are use cases for each that are independent: authenticating a user vs granting access to a resource. A request for an authorization returns an access token or handle, while a request for a claim returns the claim.</t>
        </li>
        <li>
          <t><strong>Why specify HTTP/2 or later and TLS 1.3 or later for Client and AS communication in ?</strong><xref target="ClientAuthN" format="default"/>  </t>
          <t>
Knowing the AS supports HTTP/2 enables a Client to set up a connection faster. HTTP/2 will be more efficient when Clients have large numbers of access tokens and are frequently refreshing them at the AS as there will be less network traffic. Mandating TLS 1.3 similarly improves the performance and security of Clients and AS when setting up a TLS connection.</t>
        </li>
        <li>
          <t><strong>Why do some of the JSON objects only have one child, such as the identifiers object in the user object in the initiation request?</strong>  </t>
          <t>
It is difficult to forecast future use cases. Having more resolution may mean the difference between a simple extension, and a convoluted extension.</t>
        </li>
        <li>
          <t><strong>Why is the "iss" included in the "oidc" identifier object? Would the "sub" not be enough for the AS to identify the User?</strong>  </t>
          <t>
The AS may use another AS to authenticate Users. The "iss" and "sub" combination is required to uniquely identify the User for any AS.</t>
        </li>
      </ol>
    </section>
    <section anchor="acknowledgments" numbered="true" toc="default">
      <name>Acknowledgments</name>
      <t>This draft derives many of its concepts from Justin Richer's Transactional Authorization draft <xref target="TxAuth" format="default"/>.</t>
      <t>Additional thanks to Justin Richer for his strong critique of earlier drafts.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>[ JOSE parameter for Authorization HTTP header ]</t>
      <t>TBD</t>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>TBD</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC3966" target="https://www.rfc-editor.org/info/rfc3966" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3966.xml">
          <front>
            <title>The tel URI for Telephone Numbers</title>
            <seriesInfo name="DOI" value="10.17487/RFC3966"/>
            <seriesInfo name="RFC" value="3966"/>
            <author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne">
              <organization/>
            </author>
            <date year="2004" month="December"/>
            <abstract>
              <t>This document specifies the URI (Uniform Resource Identifier) scheme "tel".  The "tel" URI describes resources identified by telephone numbers.  This document obsoletes RFC 2806.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC5322" target="https://www.rfc-editor.org/info/rfc5322" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5322.xml">
          <front>
            <title>Internet Message Format</title>
            <seriesInfo name="DOI" value="10.17487/RFC5322"/>
            <seriesInfo name="RFC" value="5322"/>
            <author initials="P." surname="Resnick" fullname="P. Resnick" role="editor">
              <organization/>
            </author>
            <date year="2008" month="October"/>
            <abstract>
              <t>This document specifies the Internet Message Format (IMF), a syntax for text messages that are sent between computer users, within the framework of "electronic mail" messages.  This specification is a revision of Request For Comments (RFC) 2822, which itself superseded Request For Comments (RFC) 822, "Standard for the Format of ARPA Internet Text Messages", updating it to reflect current practice and incorporating incremental changes that were specified in other RFCs.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC5646" target="https://www.rfc-editor.org/info/rfc5646" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5646.xml">
          <front>
            <title>Tags for Identifying Languages</title>
            <seriesInfo name="DOI" value="10.17487/RFC5646"/>
            <seriesInfo name="RFC" value="5646"/>
            <seriesInfo name="BCP" value="47"/>
            <author initials="A." surname="Phillips" fullname="A. Phillips" role="editor">
              <organization/>
            </author>
            <author initials="M." surname="Davis" fullname="M. Davis" role="editor">
              <organization/>
            </author>
            <date year="2009" month="September"/>
            <abstract>
              <t>This document describes the structure, content, construction, and semantics of language tags for use in cases where it is desirable to indicate the language used in an information object.  It also describes how to register values for use in language tags and the creation of user-defined extensions for private interchange.  This document  specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC6749" target="https://www.rfc-editor.org/info/rfc6749" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6749.xml">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <seriesInfo name="DOI" value="10.17487/RFC6749"/>
            <seriesInfo name="RFC" value="6749"/>
            <author initials="D." surname="Hardt" fullname="D. Hardt" role="editor">
              <organization/>
            </author>
            <date year="2012" month="October"/>
            <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>
        </reference>
        <reference anchor="RFC6750" target="https://www.rfc-editor.org/info/rfc6750" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6750.xml">
          <front>
            <title>The OAuth 2.0 Authorization Framework: Bearer Token Usage</title>
            <seriesInfo name="DOI" value="10.17487/RFC6750"/>
            <seriesInfo name="RFC" value="6750"/>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization/>
            </author>
            <author initials="D." surname="Hardt" fullname="D. Hardt">
              <organization/>
            </author>
            <date year="2012" month="October"/>
            <abstract>
              <t>This specification describes how to use bearer tokens in HTTP requests to access OAuth 2.0 protected resources.  Any party in possession of a bearer token (a "bearer") can use it to get access to the associated resources (without demonstrating possession of a cryptographic key).  To prevent misuse, bearer tokens need to be protected from disclosure in storage and in transport.   [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC7515" target="https://www.rfc-editor.org/info/rfc7515" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7515.xml">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <seriesInfo name="DOI" value="10.17487/RFC7515"/>
            <seriesInfo name="RFC" value="7515"/>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization/>
            </author>
            <author initials="J." surname="Bradley" fullname="J. Bradley">
              <organization/>
            </author>
            <author initials="N." surname="Sakimura" fullname="N. Sakimura">
              <organization/>
            </author>
            <date year="2015" month="May"/>
            <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>
        </reference>
        <reference anchor="RFC7516" target="https://www.rfc-editor.org/info/rfc7516" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7516.xml">
          <front>
            <title>JSON Web Encryption (JWE)</title>
            <seriesInfo name="DOI" value="10.17487/RFC7516"/>
            <seriesInfo name="RFC" value="7516"/>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization/>
            </author>
            <author initials="J." surname="Hildebrand" fullname="J. Hildebrand">
              <organization/>
            </author>
            <date year="2015" month="May"/>
            <abstract>
              <t>JSON Web Encryption (JWE) represents encrypted content 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 IANA registries defined by that specification.  Related digital signature and Message Authentication Code (MAC) capabilities are described in the separate JSON Web Signature (JWS) specification.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC7519" target="https://www.rfc-editor.org/info/rfc7519" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7519.xml">
          <front>
            <title>JSON Web Token (JWT)</title>
            <seriesInfo name="DOI" value="10.17487/RFC7519"/>
            <seriesInfo name="RFC" value="7519"/>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization/>
            </author>
            <author initials="J." surname="Bradley" fullname="J. Bradley">
              <organization/>
            </author>
            <author initials="N." surname="Sakimura" fullname="N. Sakimura">
              <organization/>
            </author>
            <date year="2015" month="May"/>
            <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>
        </reference>
        <reference anchor="RFC7540" target="https://www.rfc-editor.org/info/rfc7540" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7540.xml">
          <front>
            <title>Hypertext Transfer Protocol Version 2 (HTTP/2)</title>
            <seriesInfo name="DOI" value="10.17487/RFC7540"/>
            <seriesInfo name="RFC" value="7540"/>
            <author initials="M." surname="Belshe" fullname="M. Belshe">
              <organization/>
            </author>
            <author initials="R." surname="Peon" fullname="R. Peon">
              <organization/>
            </author>
            <author initials="M." surname="Thomson" fullname="M. Thomson" role="editor">
              <organization/>
            </author>
            <date year="2015" month="May"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2).  HTTP/2 enables a more efficient use of network resources and a reduced perception of latency by introducing header field compression and allowing multiple concurrent exchanges on the same connection.  It also introduces unsolicited push of representations from servers to clients.</t>
              <t>This specification is an alternative to, but does not obsolete, the HTTP/1.1 message syntax.  HTTP's existing semantics remain unchanged.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8259" target="https://www.rfc-editor.org/info/rfc8259" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8259.xml">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <seriesInfo name="DOI" value="10.17487/RFC8259"/>
            <seriesInfo name="RFC" value="8259"/>
            <seriesInfo name="STD" value="90"/>
            <author initials="T." surname="Bray" fullname="T. Bray" role="editor">
              <organization/>
            </author>
            <date year="2017" month="December"/>
            <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>
        </reference>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <seriesInfo name="DOI" value="10.17487/RFC8446"/>
            <seriesInfo name="RFC" value="8446"/>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
              <organization/>
            </author>
            <date year="2018" month="August"/>
            <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>
        </reference>
        <reference anchor="OIDC" target="https://openiD.net/specs/openiD-connect-core-1_0.html">
          <front>
            <title>OpenID Connect Core 1.0</title>
            <author initials="N." surname="Sakimora">
              <organization/>
            </author>
            <author initials="J." surname="Bradley">
              <organization/>
            </author>
            <author initials="M." surname="Jones">
              <organization/>
            </author>
            <author initials="B." surname="de Medeiros">
              <organization/>
            </author>
            <author initials="C." surname="Mortimore">
              <organization/>
            </author>
            <date year="2014" month="November"/>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC7049" target="https://www.rfc-editor.org/info/rfc7049" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7049.xml">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <seriesInfo name="DOI" value="10.17487/RFC7049"/>
            <seriesInfo name="RFC" value="7049"/>
            <author initials="C." surname="Bormann" fullname="C. Bormann">
              <organization/>
            </author>
            <author initials="P." surname="Hoffman" fullname="P. Hoffman">
              <organization/>
            </author>
            <date year="2013" month="October"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation.  These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8252" target="https://www.rfc-editor.org/info/rfc8252" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8252.xml">
          <front>
            <title>OAuth 2.0 for Native Apps</title>
            <seriesInfo name="DOI" value="10.17487/RFC8252"/>
            <seriesInfo name="RFC" value="8252"/>
            <seriesInfo name="BCP" value="212"/>
            <author initials="W." surname="Denniss" fullname="W. Denniss">
              <organization/>
            </author>
            <author initials="J." surname="Bradley" fullname="J. Bradley">
              <organization/>
            </author>
            <date year="2017" month="October"/>
            <abstract>
              <t>OAuth 2.0 authorization requests from native apps should only be made through external user-agents, primarily the user's browser.  This specification details the security and usability reasons why this is the case and how native apps and authorization servers can implement this best practice.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8152" target="https://www.rfc-editor.org/info/rfc8152" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8152.xml">
          <front>
            <title>CBOR Object Signing and Encryption (COSE)</title>
            <seriesInfo name="DOI" value="10.17487/RFC8152"/>
            <seriesInfo name="RFC" value="8152"/>
            <author initials="J." surname="Schaad" fullname="J. Schaad">
              <organization/>
            </author>
            <date year="2017" month="July"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size.  There is a need for the ability to have basic security services defined for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol.  This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization.  This specification additionally describes how to represent cryptographic keys using CBOR.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8323" target="https://www.rfc-editor.org/info/rfc8323" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8323.xml">
          <front>
            <title>CoAP (Constrained Application Protocol) over TCP, TLS, and WebSockets</title>
            <seriesInfo name="DOI" value="10.17487/RFC8323"/>
            <seriesInfo name="RFC" value="8323"/>
            <author initials="C." surname="Bormann" fullname="C. Bormann">
              <organization/>
            </author>
            <author initials="S." surname="Lemay" fullname="S. Lemay">
              <organization/>
            </author>
            <author initials="H." surname="Tschofenig" fullname="H. Tschofenig">
              <organization/>
            </author>
            <author initials="K." surname="Hartke" fullname="K. Hartke">
              <organization/>
            </author>
            <author initials="B." surname="Silverajan" fullname="B. Silverajan">
              <organization/>
            </author>
            <author initials="B." surname="Raymor" fullname="B. Raymor" role="editor">
              <organization/>
            </author>
            <date year="2018" month="February"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP), although inspired by HTTP, was designed to use UDP instead of TCP.  The message layer of CoAP over UDP includes support for reliable delivery, simple congestion control, and flow control.</t>
              <t>Some environments benefit from the availability of CoAP carried over reliable transports such as TCP or Transport Layer Security (TLS). This document outlines the changes required to use CoAP over TCP, TLS, and WebSockets transports.  It also formally updates RFC 7641 for use with these transports and RFC 7959 to enable the use of larger messages over a reliable transport.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8628" target="https://www.rfc-editor.org/info/rfc8628" xml:base="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8628.xml">
          <front>
            <title>OAuth 2.0 Device Authorization Grant</title>
            <seriesInfo name="DOI" value="10.17487/RFC8628"/>
            <seriesInfo name="RFC" value="8628"/>
            <author initials="W." surname="Denniss" fullname="W. Denniss">
              <organization/>
            </author>
            <author initials="J." surname="Bradley" fullname="J. Bradley">
              <organization/>
            </author>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization/>
            </author>
            <author initials="H." surname="Tschofenig" fullname="H. Tschofenig">
              <organization/>
            </author>
            <date year="2019" month="August"/>
            <abstract>
              <t>The OAuth 2.0 device authorization grant is designed for Internet- connected devices that either lack a browser to perform a user-agent- based authorization or are input constrained to the extent that requiring the user to input text in order to authenticate during the authorization flow is impractical.  It enables OAuth clients on such devices (like smart TVs, media consoles, digital picture frames, and printers) to obtain user authorization to access protected resources by using a user agent on a separate device.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="browser_based_apps" target="https://tools.ietf.org/html/draft-ietf-oauth-browser-based-apps-04">
          <front>
            <title>OAuth 2.0 for Browser-Based Apps</title>
            <author initials="A." surname="Parecki">
              <organization/>
            </author>
            <author initials="D." surname="Waite">
              <organization/>
            </author>
            <date year="2019" month="September"/>
          </front>
        </reference>
        <reference anchor="RAR" target="https://tools.ietf.org/html/draft-ietf-oauth-rar-00">
          <front>
            <title>OAuth 2.0 Rich Authorization Requests</title>
            <author initials="T." surname="Lodderstedt">
              <organization/>
            </author>
            <author initials="J." surname="Richer">
              <organization/>
            </author>
            <author initials="B." surname="Campbell">
              <organization/>
            </author>
            <date year="2020" month="January"/>
          </front>
        </reference>
        <reference anchor="W3C_VC" target="https://w3c.github.io/vc-data-model/">
          <front>
            <title>Verifiable Credentials Data Model 1.0</title>
            <author initials="M." surname="Sporny">
              <organization/>
            </author>
            <author initials="G." surname="Noble">
              <organization/>
            </author>
            <author initials="D." surname="Chadwick">
              <organization/>
            </author>
            <date year="2019" month="November"/>
          </front>
        </reference>
        <reference anchor="QR_Code" target="https://www.iso.org/standard/62021.html">
          <front>
            <title>ISO/IEC 18004:2015 - Information technology - Automatic identification and data capture techniques - QR Code bar code symbology specification</title>
            <author>
              <organization/>
            </author>
            <date year="2015" month="February"/>
          </front>
        </reference>
        <reference anchor="TxAuth" target="https://tools.ietf.org/html/draft-richer-transactional-authz-04">
          <front>
            <title>Transactional Authorization</title>
            <author initials="J." surname="Richer">
              <organization/>
            </author>
            <date year="2019" month="December"/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="document-history" numbered="true" toc="default">
      <name>Document History</name>
      <section anchor="draft-hardt-xauth-protocol-00" numbered="true" toc="default">
        <name>draft-hardt-xauth-protocol-00</name>
        <ul spacing="normal">
          <li>Initial version</li>
        </ul>
      </section>
    </section>
    <section anchor="comparison-with-oauth-20-and-openid-connect" numbered="true" toc="default">
      <name>Comparison with OAuth 2.0 and OpenID Connect</name>
      <t><strong>Changed Features</strong></t>
      <t>The major differences between this protocol and OAuth 2.0 and OpenID Connect are:</t>
      <ul spacing="normal">
        <li>The Client uses a private key to authenticate in this protocol instead of the client secret in OAuth 2.0 and OpenID Connect.</li>
        <li>The Client initiates the protocol by making a signed request directly to the AS instead of redirecting the User to the AS.</li>
        <li>The Client does not receive any parameters from a redirection of the User back from the AS.</li>
        <li>Refreshing an access token requires creating a refresh token from a refresh handle, rather than an authenticated call with a refresh token.</li>
        <li>The Client can request identity claims to be returned independent of the ID Token. There is no UserInfo endpoint to query claims as there is in OpenID Connect.</li>
      </ul>
      <t><strong>Preserved Features</strong></t>
      <ul spacing="normal">
        <li>This protocol reuses the OAuth 2.0 scopes, Client IDs, and access tokens of OAuth 2.0.</li>
        <li>This protocol reuses the Client IDs, Claims and ID Token of OpenID Connect.</li>
        <li>No change is required by the Client or the RS for existing APIs.</li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAHtcL14AA819+3faWJLw7/4r9Dnn7HQnBgMGv2b368VAHBw/wY84u31y
hCRANkhYEmDszv++VXXfksB2OtM9PjMdW7q6j7pVdet9C4XCmhs6gT329i03
svtJYWhHblJ4tKfJsDCJwiR0wlGhVFpL/GQEjS6HnvWlDi+tc/5yzbUTeFEp
VUqFUrlQ2Vlbc+DJIIwW+1acuGv+JNq3kmgaJ5VSaa9UWbMjz963up4zjfxk
seaEQewF8TSmVt7aGo4dRvtrFvz4ATxuFq1POC16EkYDO/Cf7MQPA+jFHwTt
oHgWDehlFOIkPddPwogesKU1fede68Ib2/4IFgxPi7Te/x7gk6ITjum9E06D
BKd/FfiJ51rdBBYUr60FYTSGcWfe/hq063xsbO1tb++zX2tblYr4dbsqnm7v
VPfkr7US/3WnVq6pX7fVr3vy16pou1upiae7VewXfj9rNxsMPHxXziZe0G5a
jTAIPCeBfyPPKhdLrIkdDbxk3xomySTe39wMoa3fLAZeshlPPCfmDwoO+xj+
jbxC+VupOEzGI+qBbfBpOPPGPS+ydjdgs8tVeqVvlWUV+L98206LVte+98dh
ZOc3OCpaB5HtjrxF/vuTonUUBgD53LcHRcv1rBPP9fwoXNKmUbROwijBOQBi
+UE/vYM7JblBAGmxg7tl9etWZUv8ul3Zpe96UTiPARI9OwbssCcAV2M3iD4q
xZIFw8EKqXHhgBrXobGVuy9JGI7iou8l/SKg+CZCf5ORJD4rhESRfOQCjVzA
kQulqrZJXW+SsF2qVGib9l7epnrROgeSdO79/PdAfTc20AE+WKP/deqdJQvu
+M7QqtNonEStjvcw9eLkz6w6siNkQWqZR3YwtaOFVSlvEON5eZGXRes4dF0v
ioGgk6XoiPP3oqX41rDHk543GiES3Gw1rGuTDK+9yO/7dm/kWY0I8DJIfHsU
W007sQENXW+0lCjnW05x4CfDaa/oh5szpwDrtAtj/GYzjwYr28t318oQUXcS
RsFiyfvDInQLU17yGna/MbTdOfBKXPVFB7iL6xnLbnfPNtuthlXeLZWq+zCt
GvTSFrQGKJB4zjAIR+FgAS8AO0J87lg+QajvO6yVHbi4TNty7EkyBQ5Gn/mI
PfAZHxhoLgL+DL/Ei3GP9YlsTHaTD975vOjHIaFYnMBAwPQ3twFzymku99Hr
RYRahFnlGq758hEx2ljyZWQHse3ggPbIRPg3onlEGFdI9A4LuKNPJmU3PYdt
fXnrtYR9VOTovFYoFCy7F8MgcDqsrTVGPkDeisN+MgfKt+BfLwBmGvsRwBr+
H04jB34D7sX2KFlYzsj2x7GVDO3Ewm/GdmAPgKH5gevBAYLNoB9470FT7L4I
soIfW0KGsOzRCHiXZVtTZJ2wB5vQvRjLCucBPE1CmMXIG8CK1SvbYCfyw5EH
PBCHzEwxhEapr2DImRcBKqdW7kBLmHIA/RGXsmwHFk59KDDwIdPj9OA3WJQf
DGjV+QNeLnkDAz1MCdxM/EkI/c2W/SgcU9crIOb3aerQk7tBXfDVAAEFcc68
sEnuns49AAccKBGwGDe9dwimnmd5jwnutIvgiacT4Cow7VHiRQGdqXzjaUQc
gdP1GMgYJLZ4HG+Yk4G/2QzYzP0AemIkEBfX1v73f1okxoEQOR0MYG/wuQX9
DcM5TsAf01xh9jBT3Mu5NwIBzvt/vy/7Fk/jEKYWkVRI6w64MJv6Hull7Lsg
maytvQNWlkShO6WZra2ZkOFgYKCeA2RHC0DhyShcAJhg3wB0MQzFm8EzwBp1
XD4/cxnx+3frP8RftdL37wwiKbHu+RkFP/aS7UWM8AUSkD3CqxgXMsJ/2Vpl
Qw5m9lRNTVJ0ECZqnhvwKxzldiwoA9F8PB0l/mSUwqkYdg72xRMts4QfA0W6
LmAujgeMYyE4Rcx1AMuPY2Tz0JECDkBqaM9w3IkdwYYBdsTsCwQy0YwLeO8k
8FfPS+YeID60THwPVhrZtEza4plvA9sRQhtQCn0FMy9auJ2efj6NAEQxHEAe
jA20CZ8jk4v9AChOTW1u41x9PN5xv5GRI9GcoNytozF0MoE9RKwdhz0fIOd6
M98RuHfeiIskGESBmF4M2zBX65JUBqedl8BZYTnRYpKEg8ieDOGv/jTgBINK
Cp1rOCiQhTf2Ipw6In0MShLCEbffC6gH4lrhPWAGYC2sCo8hgN5iFNrQwy9H
Z93Wrwo1UogN1Fl3gcDY6adQiWHRHHYDuydG57LuFRIi6UpAZjQXQBMEN181
zj3FTHAJjPfjEClO9k9GQijIA0Fl++JsCsVm0RRE+tym8RgwSezWP2lY/fXz
c1YHgH4A7dna52F0D48RxQDBkLMiaKawJ+E0trx+n3gGrgfgiBgehSFIu/3C
JEQiIbrWziB+LBUz3AeY4AhEH4/xH2CHkY20HzlDENgdOARgf0iK3ACR5B63
yJ3ZQQInN5Fg6NqLf8S5+L+Bo8wAwLG5HdD9SlbHmUy/T7gsVyy51SQEAomR
8m6GSBCJsSA/JjbUs537OeEycOQJ7BqK1IRIGqfzgV0BScw8wqkx0OPYf/Jo
dmMfCITwhYG6iGxcGizW3r1DjQcZBbB66/17U2Hp0gH9/r31S737K0ieTNKJ
hexgnqcwcv28bQoLq4QTuxdOE5rjVSzkg3oXxliIcxxgBXvqwOqEZCDlgM4Z
imT4IY7L9wffwFjwAJs0uOzFFsb+gqUUBHOOX5j/xjJpJ2fiHK2TOQy9mKC8
2Ofjg/DZ8QY+6FrAbcUzAk1zAWcvMC7+rGjVA7F+gWZhAIiF5wnMogenFesc
WgLqia6IxdnWvbcgcU/xCI4mCYG1yKCQmQoBxBYbSlxuSCedbKd1QtPG1/ID
4FcofzDtBc6uJPZGfYb3KCgxsQT2j9MyIgWbKQ4EGA4i4z0TotSOQacGMtAC
XR/JCN9OQkQJj8kwc+xHvcuBNE5DO43lICf1W5Tj5BEFnIct1Wa7yuBl7tES
YBGZeiRr5kGNgcOz4VQBXQSOJgd3BnZw4IHYivvkJ8B5QIgl0ExsH3huiFAz
QOgzxhbD8a/64cIDnxGK1NNejKuFvwSaA7rgqT0YeYUJcjtg0CNxhtA0g1BI
4ig+ojwFuv2IOrdTWGqC8Kp7mYZhFoT4KwEOJzoBVojDDkOCnNBwXNjo+5xT
TJHaGBCLszcdqn6cHV2jfYH0/OhQ7KxD7AynYLIs2lPBfVB1EjoQiAeK+QBi
0gEgTiJjkDNURmiMMxwDtpVtXIdP2Vx3p2uO4USe5EaccgnkwO+QFnqeQgIO
KTuWrGgD+QRvZmtkwVvS4vj8BdS4zJOjukoQwhHxCSY+wiOC/0LMDk+cYBAz
gZWked63Qc0bSnQKJzZgZIo9M+jh2TbyaOFDGoIz6glsDZGxUqYVNZ+zlzg2
HJIKYig725bWpfiCjcXhvXwcsSGsM9wvOEJpHI3W+GidrkESRK2xpYkuePBB
v0jZc9RH+UhMBrWMuRD/Zg/glegZMATJssfeTwMy3HH1Nq19yIWo/TBHENI0
YUoyBIFkMMTBfNTr0HhE8EJdPm/wGRr18rolJYChgcnKae/VnHyxB5HXh4fD
n7AJNgFqKSoQzLUv5jYdvxYb3iA9SdF8VkWUy9I7JvU14Ewzj7eMN/Qh7NHc
XsQrUYFRVcebosB86UXj2EBNmg87bFIsiHhH3w/I2mTozF2+d+VitSgkHmSh
1E2Dc9PU10yHlp/WirqoBMewmALAcUrWR2mnhLOCOGD2xH3FFCvFCh8JxIdL
fa3i75dmWvmzSzxFadx3msCD+aGuPclbAnqkUhOAHezSUQtM//md+PX72lq5
iIJ012r6sYN6yAKG0HiEyx9L5Aa+y3SBDcSNeEMzkYhjMG0QMwwYoKPYoFH7
KMUXLasbjj2ib1RQCFvplFQ2aCecjlw8I8boO0C1HVAcJOy+P5iS8Qy+ddmx
T2/DXmIjMIpSGIBJi1WgwcLCQxpGgicTTw7phg7AFFm8tVZBkLTJTKB7QvCY
fH5Wz/nj799/1QFGZyLpE9zSoDP13A6Oumen2InQmlcrKS/L+EzphX2KURJj
Mk5gfbq8PLfOz0AIUvwG2tBWotqxlVl0PEE9BladnjV7IdYN/QD3cJjAjB1L
kyz6BdD6Ayoe2oiQoViB57kkGIkzXYlBSksqWu2+bo8R6qWymPIFCHtp6gBl
E8RpN+RjMW0O7bwhRPeZ3lNbqbrPQkVsJtMZAmc0db3YykgMBJxp5GcsqCQt
R1NuhvL78miwxVmjThM4WSO27VoHQOtVtpXykUBc+QAn2JZdk666dAoZ+UjO
wHv0nGnCNn0slSCyY6cENh0zEX9hp6FbRqkmystu9PkIFFZipR0vAgcEgiCc
cuaCVhIr8cd09HNw46FYQ1goLDBpWceOPFpmRETSXGYDOVy0F7CdhniFcx3T
tMx2gj7mZEeZ2z6d1n2ScYytNJYCJLqdWYsk0VxUx9WQUICSgERufQCUVEgZ
FMPopIWduCkEECrTW8kNbSK42ySX8A3PKhTs7CBMSbE4Q8cWBhRTLosFTTFl
m1RYQxxhxLQg6V7NgRhBnhlPZwhKgRJeI1SQBGmieizmZAhlMZGSZ7ukneoL
LWr0J7RyuQdpPNhgfBxGYRwJ4A+/RAsFeoE8ijcQ4tnAbuf5usVOUVcDDao4
8ABCEfdsnJ+dp4hiGrPTzYCtYuJdLq2npW7/LVBGbN8lwYT10WE7zebH/9CY
WEPoWo7no+naTqGG4ra+TtSpRhzRxVPJnXm3ywVxKYG/fy9lrKZvgwowfv9+
jXy7Hwr854P1+h/5kfiWuvpDvP7jPwu/lH/l75T8ZhWyP///j1TXf6S6esOs
XuqqUPilImeVlaKsv2dWAKut/FkxEtKA9RfOynz7oaCd0WlMeQXYq7+akCVG
Si//08CGt80K/lTH9p/rykTozAJNc77oihP3m8HO7Ge5swJY1SQyZIWDvw9F
t/Nnxbn8vwGKmj/afn54RVcA9h1YoJU+diyCs3z6x5+c1R9q71/TFUdofVYS
3n8Yvf6VsFrVVfrTF7oCsO9KvOKHZw6q/+XYrn60WWVQfSm2/6QjleJEMocU
iq3W87t8XX1t7WOIQVHkA0CxIAB2LWOM+bfcoY12GGFbkL6KOfngMoa+XK2Y
mDiXuifhZDoRrgQtvuMV9oAIpVAVJCXe/SNmkjmoavtMUmnxOZbZn88qrHDd
jtfx3/11ER1nx0W+pPUN1QwAtk7NyrWdvVJ1u7RX0V8DsBxvHV73t+3t0m65
VNhySzuFatl2Crtlb6fQ26vtOiXXrZS9qv4hs6iv71vP8hk9d/14MrIXmRds
NHsMg8Fo3fM6ykjY0jrFhxvZxiDyrRsLjCe2WOEmAXXd+Oi72ce6JrPnzwY9
ojQb2slUZ/Ivrdt105CWXTzvke0LRd1+I8NWannr7CFvh8jwTez7eu64DJOy
44W+6+SvzXe/kUQMW5vzmppQ/P66egAN4WEcs4Bb/BATCdJgNT//RnZ933PX
l36e+Tqnw3WMzUM744rpctz50elOfAzkUD3sW8F0NMpObhkWrLH/vsBtlvIU
VCsnkTfzw2k8Whi+dldzwmW5ia1ChAzsSzGISppBCP7w0xhEyS3v7e26u4V+
r28Xqrs7e8AbqpXCbs3e3e31++X+Vu81DMJ3tT0AdrG1u1MZblXd+6ObNJm8
moKtdRGPtoqRWBISc68nOQnT4l9D/YikeesRfo0sgVKDpUTKPo9jk8vl7pLx
STzt8R2rbFVr2zu7e+uvx+O3c7PXcDLBxeyRh+Fz1jzyE0/+uZ5DRu/eWZfh
xDr2Zt7IqidJ5PemlB70/r0dS6c/9x0xf3HahaSc3EiJogukn07r4qrdaTXJ
CgAILvsjmyR3w0nLeGz6cOgjQnvu38l3YJGjwgzWzJ+DdRomOWZHLltRJAS3
x8FYwEecIa6VJqB6ZE4jQVTWWe8OkJ3CLrlrO6QnZneez8M3RatvvqtNEleR
DXuRFiN+kouesXUm7sg0+Th2sERm2mCWaO09eTW1OVMwCBnoXdoAOWG5dxr8
NVudQITMQqgXvgbZR2pNHFDMANWXjF2CCMWwDxZgA5w9HBk4KvJoD8PvbEJH
j5/GfX20gBgGABMxY+z0t9/ZAMCieP9XnbbqV9g3zZ6tV3d9yX8XJjdmt+xJ
OBixFzzGAHBUmsBNbwARk+HIKGSM5HmART5CHmzdmK4bsTWLrQqNOyPcVVtB
lmIt1CTIGuhxnJk9miK1IFTxAc1STocC4vqp7aZP0KhN4Xc4zAhRyWVRO0N/
MEQ2AXI6tMff+hi1CQI+M4PrM8DN48FW1Ck3ERtg9sXEsz6sHEA+P2sPGdVj
6Lrf55FSS71mcsAit3kCPEjOldumgx8DljPwpNUQUwpdED+YvgMQc8O59ADQ
184ojNnWsbcqdCI1O80VJOYkDu7caYmX7Cwg7WmgRdCkJ8uRSF+8MU/VnTAu
s7+/EWm8MGdXm/RDhMlTuVMGVAOZOOMIpPlRzIlIwZp4GADN/8LoaXTQcvbk
J7paCGLhKFQBcon3mFhjkHwBFmx9XCuF0WOeiiNH4cZChuz0hn9p+BU5vejw
4ItLn2qCRwtnKNEcPFcCGBwKMuKQFi1Cx6RfgIfQJjLky9hmEZiL2QAGp1ce
mdy4Pemq1sYSQcfCvxEnFDNJuxHzMymDCPGQghzEIUrzpw85lKb+t1GIog0T
U1qBW+DKO3Dtvhch9Y3sYDClocn970T+JFFn1VQSbt92vA0j9oqkEdB0Ha8Q
e5iygQ+RHyHfIjsGJkYDvoghrMQWLAyPbtfj1M8mg+4PIw3IDa25R45/Ojgm
/qM3ilnw3yNmakRsmgzDdQz+zWoxcWJixzGL1qp3N8SXPHsQnrOpWKgA/WYk
EbGIE/Q2USC6ThwUXB+r6BLbWgcRfeZ78/WNrC6FOC4oxYbV9CwMTqWp3E1R
oLPWOZIbXzvqawqOVl3oFGVMee6Ri5OgRfYgQv7MocNA5p+xKOd64Eah74ro
Sp6yAi/r5+3Y8mbhaOYVfzf3xDOiCcQ4WsYOi9dQcQd5oiQmqCAGMZLnKSqe
i7uAsiOpL7rkSGjIzxmMxJkwPRPdfXDQK7UmRwKLMwc9DzXHFPHsCat/KIgA
aYaLV5MhfP0tmGJmpnle2xa9s9g74pkyHksSBNYP+P6dUyeZJVKdBKxWgUif
4qyXlxuQX6KeRh+yUGZzgbgKFkYPU2dKG+4108U0IYVEBvg6lZEjo9PY0Dkx
aXJDVG6hDuhYRZ1zBmwk7/FvvUfo3yeXZ/YIJDHbCPKX7DYbwxt7QiziYrQM
RyuYOgb2QTZWsr4w6ctqBy6NEL/I+LkHfV2MgJYk7cBZISsZHnsuDKkgZToW
cnBSg2ye0nZ2ftk+O60fF60uC6SjfZeyG+9EBbAt+VhAHLaMLxE/uzxoWnA8
hJRvagTBpZIGscUgCDnfUmECSMUppV3QM+GPoOB0bG+aVjHAmyVJRxSUqrJh
Oa7pvMi0RqUj4kSEAA6fPyoyUIEs5obsp6T0FcL5vmUaIcSfmHC3TgDTHnzD
4xLkkK7nAa0ZfkwS8YHykAm5HsxpJGQf6tjU8TTSxzmpxEUWrCi5CI9RjTk1
bxW3ZFQxoakQkfQVpKa8jkwXp2HA8BufooznzXsp4MynU+8AQ1sxPBuNDYZw
kn1HkU3IIHBAW72w8hDHy53E+ktDij25QtFhruWKmxmx6fCjTRnQYSYzi7UT
clF6qThuOQg0Nw8duPHvwoBClnT9GJRUw/01q062TPY65SnypbCMb0+80xB/
P3XCqOOFpMv0UHTQZCiBbww3/GIosrCa61HMLA2dq/lS/SQWSWyaj6s6EZ6C
pZ0okV8Iy7xTcahJqRst6oxgN4yQ7Mx0NNwKQt3E3eDxZYyfYTOyrnBYiPXy
M/Ibj/nhCIuK+2tDuVHEsWYOrFjHKfyCEuOpKkl+GZLnZ1ayBLrj+fxq9xmO
mYETzKjw/C6HDbF4co0rCNxQnMbkt8JiuYLz6H0i3XGORonJKztDokl//E0x
CKmCLO8pznhv+VGd477VwhHX1upLnCgYppcf7MuIQpDC80smek244NWx8szh
q7wN0rMHBxHzFqbs4NzHoDsZlCF/U4R2b3qL2iDeqhSLxSWOPinWZ6fA+CA6
uta9xdEQHbNigKL6rsjj3/YW/a346eRt81TdwEx34uDTYZzuACNkOSDKpRzD
flrTgI3HP7npam2Ns4qcaHzJZ+w8AUvT1k3Jyhbjcc4mDQKGTAmCMiB6ghUP
pG2F8JLZ6Uh4hZNrtcSoDEx5gilfhUhoTYuk0q6uDdsHjkLjggBYNMy6UnlH
cUTUd8BUZuifJ2VLJ4QoX2CTUZIfdDo2q63IGhPljrwlrF1G25IqEHsj7F0T
3wzdXhYuydjnpLq7BJgiHp9pw6RMC/dIjo6Qtp3uWyn5koBFM6ZulP3qrfMS
tXmyYxZNc760gS2NJZlwGxfOgyskMgsz8cagEaCMHg8xpfuqc5w2u3EzTRyy
I5vl+np2TAndaAwUciW3bnBmTgYP4ckIpSVEsznqYhwbJMeKxIw+C+aD8MfT
cdoPgeY03EJhcxTztHlNCOs+wGpGbGdZD3pWCleJfsMsZK2ShErtHvljKi0Y
OxFLogYRwmO2OiHvKYZqqEqa/YTzjaH9ohtISzlM2WA4013tikxjhvY9IMkr
PkbeK7+2x1hfkSjOp7xuQrEBbF2MGVmuQciE9fg5YFY/pMJT90KvyYlIX6UZ
81o+EvGFgKNntLzAUzhFeRnCzfMZSoVei7jPdSPmukokyqXsh/j/Ia+xYRab
MekzlUutW/pftwpR1icjzmOmJ7IoxFImUhAo19LDsBQ2nj3AfDDAAtFOymun
cJ9LSltlB4wQnJEO5W7mMGnOvSyNxOkMlDqmLBjlhsRHuXPxTR6gTP5R5CmP
kCaIUz5hNMbOydTLRgR+hSNhtRfUJnihH5ZxGKrCIsJWSzP63ZLTZBIDZdHw
2mbhNKFsaKbqZxKCchOSBPngGnR/mJa7g+O63FgjnSL5W5vr9/jxzbvRyOWV
YN9IkdeS+Rj+EY2SXpaHilK+kC4Z9ErlZ2B5ARM3BA7nShzmPuYzsJc3j1Yn
N02sL5UErsrA4GayY/AlKtVdem/bQMMDyKAeo2EEgCEKVYncfXGevqrX2Dzw
iYHnBbRzNW1J1tjamgg1M5W1PEcE9SQNMCgMyDhWpo8vybrdz0a5YnSaCk2r
bFWzsWlvj119Qxgn15VeF8vJG5sBnanm3uMECxZ+8wOhh21tl0rpVmMPZmgE
yvUoDyzdjsd4au1ANTyqNLelZsgNtNSwOP7a35v8/BBTbexh7+qpXT6Vw/su
H/q2M681P7q9dJAfdfW28E8Y6SgcBlYzXBoip0V7apruZBgmodJ2J6DkHj25
9/7ZG+LnhJ77M6ih8ipqWBGqmUsPPxCr+ZcQxJLYwJ9EH3Aapxsx1M9HXmFM
sTjipullpRWFerib3y+P6nysTVO4p1lZ4MvN64Or1ln7or5bWbeyyMf/XRne
zjMj37g8/pVY39Go+jF/ecJQtHQVvCegoTvAwpfIpSkEyb6ygQia4FLwsnDQ
5fGbnMBeCOAkyzRFUzKztq1HsSxV8XneyBLaXOmMS1t7Y2lquaRgBOZfzveW
8Qnl8RGm+kesZM5LHeRIYllziArNI+4vWv4rnW3WKzxPuo0D15ozGvlteHOy
BCzT3HlEyMpO19MeQGxIfxmK61wrJJQqMRxGXGUWng5QUVgdFVZVLdnA9c0F
+imPwUtOvyTtVpUaGZ9J0TrDWBbpWemn/IrMZ5cBoDAKIRdVAzHvG3uqRA7a
cGSvcpOp3Qk1y/WlLi9ClE3dF77nX2KsApKKLjNmRB5FPicR7CEPC+lWE848
pkJxCxUOhvorVc0V5pFpAAqlPkwqhdxivQuUjWTWuzlQNk5EC9tRRUxCmcqe
honKWSf4imZKlZEp9loEomaKoiqFRu78lMdncaVEMlzRjElklupNt0ppGfcG
9iNmT1mJTHGIcOylxaT8milrhAYSVNDZ9DgUVEEdBq0llVxfgx2EpWvy6Myx
2aXLdIlmcCbLNvC7dM+GuOZiru9Y4+Yp1/GrmXj+d8t5N3MgL/Hdrog6Su2G
9PJyPZiXSGW7Qh5NqrzqFvM9zW/rgvoQflkyKa2usYXrnMlVIqMXOWaq0joP
d1o6qJWNFLg8aHL3LMMA6ZfVmZnY00xBVpWrSeX1uD2YMSMJE1Z7iVX7tS32
0iT1PEskpym9eh/3yYrSHxwogNz5Q2VqAaZGkUkKFMydV/dDVX4xvcJUb4QM
BrKgxZpu+mBFg9J2cyBIm66gUJmvNF8/jDTrL53TUuRAka3FvaRylcJtKiQ+
CmZ//x5T296UIYQf1UcDOEST4Vg7WJeUA7dlU7PivDAEU3eG8JV/VhvSg6hN
TG4tDN8PFjSvtogo0QrSJdLtqF8vsKor5ikjAWMy7Y1gEVgOjnEh9r2QTHiQ
KJoEedSho3qlIvO8EpRe9o1t5JBHkAtzIXaVijZdxveMivpUChG5oMIUo+qM
WebcKG29kQrtAGjHnlYX27jEJCbMxSLsAnJ1swz68zv2HB+fMuLHzu3pKFFu
y5xyPmYQpSzgJqxzrPKlLBefMgCQMfbopquiOPAiKwzaujRsfiIIipWEpMrg
WMXbwZo5kW+PVFYOi7fH2E+HZZPaySoYsgbKd6eKvb52zRvWnCK1kSFYEUvb
8WMRhlLMeNgMnYqDRhQ6Rkgg4HhUOXfC9UJXlsvEMnkqIkh0uiGkEIb6qUpP
VGQ2NYoCLSAOYcVLvfEtQCTGpYFqynJ+0KiD34stijwxfX6CU3k/Mw5o6Nmu
qB2ATdaxh3UlGHF0wKf4NbHdtJF5Gms1fIGfzhD/ePVuYYDGyvK8qJXRgUBO
4bSnGDPsEEfbrFApJ3ZlGpZygu0fQXc8I/nyuGuVi1u8DV6gZrYhyz0AcwzM
2LFVWgZV/SJKN5zHSQjoNBhgKDbazKg+VoD384i5aGPy4HUC9ycCIR7aBCX2
1wvxQ+xLDvxldUenMSNUBKXvGmXJFRFgfodkrVnbHBwa6/vrrW6ltq1b1kCC
gMe019rTe99Fq/a6sI78tBU4XsTvgmJCBSBllPyLFkEGMMPu87x+nyygZadb
z8QdxWioB5JMv+Cg6O1VnfSrAF7Moruz/tNew3EHj7XgYuouhm7YKe9cF9rT
3s2Jd/a1Mf/y7e6uNBzU46fK0bfJw+1Nadfo6Py49/nbuetfH34+jx6exs12
fNzeieuV2nUr+HRVnjaOT+cH0yu/cVYufyvsuLe9OKr6R+PD0oXR0bRyt9uM
rxeXZftpctT4dnq4W71c1D5/TobThn0eujt+e2deOv68F0bdk+FBaz7/2mw8
Xt48VG2jo9ubujN0dpOCN3b3Hs5mN8n1SbNROfhyH3eCwXD7S613dXu82K4v
Pn2e3RWCq0V5Pni6u71ozj8ZHZ1cTkaN8Di5KoSF3e5p8LWcjDvhYWtvenR/
cOwOa4OPrVO7dxNc1cblrw9fz915t/AQFsbeyczo6Lp/1Nu+O7q+6UxGle5V
0ghuDyuNrcrDrHfTu/v67e7gvFnzpsFD3A7Ls4uM1Ra2qn5RP0g/f6w5KRz5
n/WTdrt5cddo1P2HQX3ePqgP2of1y6fNj9Nj/6ReOmx0Hw677d5W86J1cHBx
VT85bD82nupHB0Y/g9Prg/rtZX10fXlyEc8bF7fN64uLdmt+1Lx8ap1jR/Xy
Vevg8eSwc3g9dcfXi5POfH44uG2aC7+4+Nx6PL2wb2pBuzW6/3pTK9lfOrV2
63TmBPXpSceZf2SdN1vzWsMZj4Y9/6B5e1M2+pnfjq/jXrPufZyXHk+e6ouT
u9bi5KldO7m8tvHZWbNePbm8gOfsmVzWwOjnx5d1bfTz48uam6hKy4Ld6rbn
zYvbo8/h1/Zw5pzWaXfqzcGgdV7H9xdhA34/qB9vV5+C3c2LwMTU2xPva+k4
cMIvdsv1yn3/eFy++3Q3vog/blare+3b+vHJnt/ftscfk/PmorKYPW3djjr+
3fa20U9cGyyOG4uznfrp9Lpz9Fg+7Q38J6feG7UHd4nb35xu3RzufP7Q9r8O
k9ZxEm7Wdz4693s3sdlP92L21JmdtXanXT+67Q3Gd9ufvKp/tnvaWMzsz6W7
9kXn5OTwYh5flR+mh+OPg0/tL+fH/WASGP307buoHF1f1ufJ4Lp23PpabXuj
Dzflw8budHAyXETVzUn5JHHaJ9VKq7578NTa/nrx0Ni5Pn8wmdSsdfe14va+
3tsHw/Oe/7Xe3br1bg86zZtxeVI++5rc2OPLLac1e3g4nwR3x+Uvi5sP4eL6
+t7ox/7q3o+OLyaVg2SQ7D1ElfK4WulX55fzD1+iyXbU+HzaKzXq81a9flk/
PRjcPwzv/cO9eemgbuLP1cd6/Qy2tVUf7j4djvrdkdMuhVvRbfP84KC0Y385
jee9aqtx2v58WGq0Li+vHsdfRnufr46Nfj7sDQ5HD42nmn9zfDa4iYPI+ezc
lmZfzg/3jsrRXv3h4PTy4XTw6aFyWNr6UtqrbAP7a0zOPJO+nj6GH87mvfLT
YzLZOveGH93+xdF2udRoHrfs7t71XudhUt4ZNhaLXmtydng993b7wf2Hfq9l
zqdyEG5dnR9Gk/jT01VoH06a/WR8E8df74eTg6PP1ydHi/5mZ3pe6Y7Hdvtp
HMz3jvzu6Hb4FBr9VJPJk1uLPn4Z3nV6g+rTzV7jQ+UhvP9Q+fDQPCn7R9u7
1cH5p5P27a59fBO5g4vLx/vp+HB8ae77wJ53PpzWTpqJe37Zuih96bcPnIpz
1LpanFze1k7OZ/XGzeS+vt11u9XH7sz98nmrfd0/u6n/13+t/266XfA/QqTQ
xC1u0mJl5+eUSTtZCKFb5rmTlfDms5A9iiBlTEa24/1m8VgfXbaQmZpcyJba
8Qa7oVBYmlial1b8H9vbdC/lNNYaKaFEhsm+MJxtCsBDmQoGqqoKDclIStr8
zGtVuLKRFa2SkHkYsP4+XrSirAbiypXimwW4VD0H5o6StlIJC3nNSzoylTQ4
CmLFqrYJ+78Gj58h2aVcwEyyazXSJ7wTzeD5ecHsmF49wovPg1GtedQdHC+u
C4dblTAeHw8/fn482tv5GJ7clNyv162H5mGhMQ+r6c9xvMP4uDo+O6k+Vrxt
/+x09+DTrNO82K4PvtTPg3lpXOr23VGndb3jV3Ni0V/eFWEMJOtcdp+E7iQ9
Fsw8p1/1EucZ1P4F8EePcl6RoOXeZAkGJF7qU7Mz8/Ub1kmmfTKQEES+f5e1
WTiB6aZxwwypXVtkmtgtftua6wERT1A318xISmc0XG2GlqKuS+H1ONTnTL1Z
+qW8h4QFe85Y3FkQI4Eb1o7VahIsKArRNKtuzgKKPwu81DVwdFeCzG6lIFMR
FKbzspyrkYzhNqQ5BGOhge55MGCk5QSkbkoJhYlXu1oGsB/mq6E0D31HOOyv
fWA2CMRKvcYQf4xYqcWW8ZSJ9bsQlDhsxOsK2Ux7I/8goZderUi7PJTVU5iT
0R5TjVXysXA/M/z7Jd8eQ+j0Kz8v2NxwRAcYkm4d0ELaGDkzM4F6zFD6Ba7A
L29cnmH0yrKLsnaWFoD++qJrdwkvfdjfdncqlVq1UO1XtgrV8k6/0KvVvEK5
artbla1e2XXK+oc87mP/LRlCOpsQyxd3ECuYJrojKd7/gTpd+IkRfMBbGyAS
+CEOQwND8st55U6UxBwiPzc/PgRA/EJ5r5xedZOtnnhXLZaLO9StdDemvpeu
GZNpalS8Itd9+dUWRYX/omqrjvz82d+D+SJAaTna7+3ubOeifXWrWgGqcAu7
Ww7g/k6lVth1dioFb8+u7lWqtf7O3ivRPhXv9G+D8xI4P4jwtOWGP//noHy2
3yxapyv1v4jTeY7w5ddTaLdpqVgI+ZUeDCFQ35DiGObrUszrJSAu/AmhR8sV
ZF/zZMHUggXsMoLPn6M3SUg8jvEHjo+a16/ulGo7hdJufw/oaHur0PN23UJ5
u7JbqbrVLbffex0d5YdFriCjLHANOsolCrHQP0MT5kUYP40k9G6zFJH2v/+N
BJHjetKcJ8J3gh4m0z2kufdkFECM4icQgdyI5X4trTpSnndrg6M502T1LFsq
dUWFp2wnoYQevSUBd4LJuxGlWim32wr64qRkzHOffUp4nScTsT6HdnMe308+
Ng9uGHRSbkI29EYOl9yQDrYsFtIVN1jjUPMRUp5nEJBnTLAxxr9Y3QHmoYZJ
HDSpQU5V9JyC6OaeysvPUh5oJsUsiWzdIBsL6R5M4kbXqeam3tAuNGMmo64I
btFvMmO30vEu5G1nG+rGIqrsUBCUrV0su4lqBg95Oec8pcWvW8eikzKjS7/t
OSM5MRCxsCBZCYsKVcThRmri6DwXTQg4RzctuWQstaZMVbpWiH5iESmi1T/T
Cy+mN04QbU4tBJaIHahEYT//GjTz5qE8RsK2N+8Cqg3mjJ37sZfbXX6xhSy6
GBKo9YMZ5PlJnJlSIbLoCBuUI0aLyiiJmcQaVuj5YaoIVDr5ksowpYqEUJ8n
LLMqlukXggCbXupakud34lEu8eE88K7exEvnGgrkVFiVETl7C5GgK+4KbLaO
W5ctul41/7KzjVcy6nSYgbLb5PK6PDbreqm4DpPv8qnmFZPgDn5q9inESHOl
Q/wUnv334EbOpTVmHl0OfuCVYLHc3sPW5d+wt9mtzQnaMTcXJ/q37GwazJKV
5jA6ueE8cjReDgN5bgd67KZKLXGcMHJ5mYS5iKtM3Z7ITIvqHj2/L7k2nTh4
Sbp0e6hYOUoVtxWHT+fianiaG0NmnKFcVTHO0ZhisT6wq+XYerosKC1FExTI
p3NZOWo2TE3KObr7RZblSJ2RfEGClGzmqFhWuxI7kGbbXDgw0nhh2Up8kMvO
lR9w5XrYopxL7nGfXyNkQwpJLQNQ2yKe72cs4y9maEhqLPSYS6SdrtCwn9/x
mGR55qdi8JerN/nZSqmMoViWbaAUHZHzyuhTkyrYqJyueby0KqZZlpVBt3dq
pe+rDV+Sowp+J6zlpl7O+J5IYcwwO/FmFcvjAeEvJ+hedif15TvPz5zz/DBu
uVEYuv3X7BJlXma2SFM+MgqROqdMZ5O8KVQ/CvEOy59y/KVU+H8LnFDH4KFE
CHxmYsX9fH6B1pgXkcK8oBOwQBgH0lUYXrycU8UErCxZzys0icrEq+/kpAs/
U3hhmjDVDhqWa+ClPwcFUglQOoNOWE1K49BNW1vksWLej4Y7sAybMgYbcX2y
YTJaavwTP0szrn882/rlTOsXs6yXZVi/Jbvav8mpUrcst/pP5FVncqr14gfL
cqlfnUdd7d7ftf1lxfaWzljlUPNE7HznfQaJuJuZ4sB5xPwbOffyM4Ar9Kze
UJY5bDJHtEwRJBMF09WN+8jJhi4C1l/VlXGrCbPpoLxMrmYWux9Thhf63Omo
4FUrxR0qf7XeZ7EBxVvgtmZr1lYv6UdWFl5BURTtyjuFKZ5eWlOUJUUv4AW9
LXjMd86N0jTL1GaIYCLJpbNOU8YDk2ixojYY9f27ZUAC5srtQwA4eevy87t6
Vz4WT43QNDpbxHd9PFqZMsUqKQ1BCvCCAde+fJwJaT+A8apCquu7VD6bFfAZ
LUTKFk5/vIHlv1xvMgoXY8qAw+AwR1T5waMLYAkd9bxk7qVETKzk39UzK5QN
X59x0foks0DRTh3G9kirXWcscV83swNM/0nZ6QU/KBA2/HLUvvyVKRoozsG6
/8msjDoJA7K3uQE5FoCWOimZ2mK95qTUbnuYGInVs3hRssk00W6XZ9DT8jnp
qhKh46DhmhujNBlABA0pyyA/rbVRDZEjiXyPbu42WRXnBKuvzSxm0JlKJGZv
faJ2EjJKYCtrV6XQPSbqChFVNZ6S6MTtn4J5ycBBtGpr1xQJdEjPmy0ntUhd
nErnZ/K7AQtU92wwjShrtiLFEyUxZeMJhLSWuTEqZ1aZ5EQyjisvlVnzKj14
ztansooR06X3bCM/AEK5SUwLFyx4S465DB3ZbTIG2BTIRA7tJMlMNFYYnBJj
uX8GYQsIEy30PHUpOdIFWrzSEsyzaqCiYWFK9wyta0ZrbvTLM7Nlrfa8ahl0
sq2Bhk6xWPlRXqo3tMKtuNxRYOaeBby+ndyNV6E8mb5EBnI48p0FDjj2k9iQ
EzBODp5jrqkF/M9gfyLRXxAtihEmmlIqbu7h0/TtAeylyCNfdj/xqkvQs9cT
49MVN7O/8q9X3PGuXxfPR/+l/Oub74T+eXNaBSdo+kvl19f2xH42/zfv6bI5
iVvn8Zpqncrgz00QsYy5/bL1K91SnX9/fWYgxgJW/Ky4vv6X6q9vuYX7593n
/YpLxmv5l9en7hn/iXeMv3zF+C/b+XNK3zL+L5yTtZIZrPrJu6vc8O6K6KO0
OPSG+vbcCPKKQLxcddK4ffffr5B8Vrdl5WNURB2FGP7IJa/Yjxoyr8Dy64o8
00b/+ULPopsfLvZ8mSemLEmcnwo7eH55AIs0VVYNoOdjhXgekE/+aDtyxTUW
VDGA10SzxYVbiKIgAYoC2PllFE5khXeyhAVaPQaWuMNv1hA1H2Q9+BcqK+Dq
IpaExMx3pJLrJRu4fe9kmkxB68KU8ZAZYoWjq4i1cOIkskml94KZH4UBUwXZ
1FDIbxycdbjnpkT3aWBSkMdC2VBUYkJrA2fAEuDLtUqqFbzjrcL6OW+1Vdky
WzELMUfXbEAPB552G0oSTqwRVcSTVZXEBXmuJrLnBL4IHqJuycJdZtchkv9+
IOxECbshOKeeXMTFO8rIisOx2EDzugG2mtTFxLQUtY5sKRF914farV20PhHU
E3kjmxf3sTWkEkPqt0z8JQPmV/tLDa1KBpng9NXOYv+py6SYgtapdxQ89VpT
y8ZIC+LpQcxyUJoqeC1KKmlX20jE1G74NYZdSbksyicV1GNezsn65z4KVnEp
fssQIsklewmZrCG26pIC3SexKRRomG0UsvIeGG/FLStCeyLUH3mswKCdpBHD
vN/yNcNF3izkXPMHxnpndWwGKLJnvH9/M1xwWzBaSrEQIFo2X126Rm5Pvfub
hX1p99BluPVvQpX6ZM+oZPow9FXRNsxDFAY61J7RfhKgzyxhhYnw1iD2heWL
i1LpbiU+xXFR9IsryBbh4fZqo4zuipXFOBmmmI9DvJVFzE3opi1VHwc5o9i1
zBHFrqvAAi9qyr6qM2QcKXjWprZFriQbZuuLyNzIVjz4BM4wCWj8A2eHu9KT
Vf1cvB5kkckhK7LmcjfIJ6DiCWQaK8fLnjeiKv02u6t3MfHR57rIfIaXhJMx
hzUM+wA2QhN7ZvsjAgeWXcLTAQ7qBNkuwIGd1ojbmCWX5PcKM8ZKUBQfoiy0
soJmYHzR84Y+mrDQPvC4EBYDxBdYtbQq8dJtkR/fxwJl+AfcABTKQBfyJwAP
RbAV//TGkdDBg1h+04rXMdOwM42wwNIIKQxWCAfwgi8abbITVveeSWN9IcHE
QoJR7HG02DDeaTmowkLLPJnKTzIhg3CeT5vucpijcOTZYxQaZ0TOyBN8igUV
lkrzBlx5USgsQcvrThlDFUA5+RAGiHRJmhAPnEFAvqnClmL2CGcEM/3nAOsZ
ZczB7LQzKSXW80G1KKYNy8P7ZAKVd8DDf+RNmDFebOxr97NtMNthKp1bT/0E
Dj4B7gacY6TyxeE4pM3Kqz/Hi7BRlnqczVHPK/6TzlDXI7PYvcF05zEr62Ym
o/Z8FpNK+eOZlNtsJBfqT+ZuFUnUJuygYlhcm1CXRGtIhhoKcARZirBO8nqH
vCxewHmruol2pkXCCxTWvDN+IhMVpH00zwv1nOeF+q5ox6aLlWK77+n5CjiC
YGPivc4m5J3NMCryQ+7d0wzIZpKujGPmV2xMo5HkE+ecerWPZ76NNST5FS/i
K5/FhJPvl9/Y2mdFbTl45FVhkgVKXKV72Qm3ZD1IW/rY2DmsX7KE9lsuoaji
e/oKcC7Sq6EwUXgCYm1Thd9j2S1Yyiugd569iYP3Svf20Ftd1kRvRBSO0l/0
M/2yyqv9qbpFRr4GygxG/r2nU7jhTTGxkPxI6ZuTpZvC9GSE2TMm8thJSjBo
472WsuClLRr43NRvivISc9rpmq8bnM5JQuPFZWf8jjGJe5yAmcWqJcckKSeE
DUPNyRH1CPk3MBFx2xbKP/6TiP3htxcj4nnsm1S/3NsWuKIMMrsQmXtmeB+i
bx5dua6HQj4W5vN5Ac/7AlANkG/o4pV+TMWD8zEHfmyQ2OwHA2LX2YgOFU2m
idCFlkLTFdXCsx4qKa8Laiim/ftyUzVdGW0nmvAlEN6YLIre/JQEbIIJRHj/
GyrxhNp4KAfhHMuw0GGXRSJ2MZL0T7ebvwE28JR73Bu0cQDCA0p4EZwNClNN
jp9T807iWReXlJLUQN8h9MWTiiL2uJczewibvlNVb9KwJNBZIV+JQguwu+g1
sgMlXRimQUWJvK506oWL5hO8+lEvgGi7Yz9g/CmeMuFkwQRHlPHFrXiJiLDR
XaISxsRGpjyfSxcIWDwcylM8aYdVa5xGk5AF18gNZKEOKLcsddKmREk7YkUU
HBuNfjJcMtHwR3AjM9aAAkWoZvKMl46nR6qqsdKgAeJCRKQiKEHmtldGWkvL
mGM9SB9902Y/8o4B9jlRGD7R+aJQw3gdSFFh0ihCKR9ir2awhlaCkinYKWuh
hObnwChRxFVekcTAj61YkRTaNzwgpAlLXQvE8Yflk0Cc458J1YXyGr0+iC6s
dCcGQgjRk11baEcDj5tYzfLS4t5r2s0+wY8kbR4mxec81kMWBBcQo4+wp8BL
5mEEx2dk4zxI1XIZHgg4gooMClwEnYNyDKTJxRmuWZG8yTL9uEQR9g2ZGo1n
dGEXj8sk2JDCKuFjikucLWr3f4gLHMhwQYBBdZEut9uAPcF7hmPt+GVXsJql
0gmlX6qerk5LYhTIZHwHdTvYVoylAmpCXsSrUnHqkvaIMYu2isPRlDpFdWjs
2dwewRmW48kYIpsZH7SqxLymLEJmhr2gJVqzLaY1z3VQNNYzV5Swi5h0FsiW
DacH8XpqE0976xY3F3hBOB0MNR9KhsfjSaQzGJFUSedFwA4w9pmhjuFnMeOG
bKp0xQQNDQTYIwUqnbsY8vxqxLb0FDibWfDa2hjFjNeCjjx3QAeNKCAEqIz8
HJQbL5ZCL8snCTDugx8/R1O8VN7qwLHuRf+IrUvgdrHNz5mUV5j1+fx8+YjP
WTKjbmcFhnZP/NHolCbMXChRiHIW0Aclj8N8PKAo3BzqmRWgbtdP6+SGkFf3
xmg2ZNqFqv+LnZqzI3WdBzb/LoK8Mc+BEWS6S3qPzlUUjalmuzCWfYLzOMTS
7e/esYkVhnbkJoVH3NeCEGgKpRJeAM50pRFqX4ig4rY4GzQKYdHV7ieHrTcF
UIzIaADcBrDtHz3KeZKhmGP7Du8KkTQTa4F3eoFq6nXFGMgdySOlncjkBksV
hUshblqC030z7DiinoDjwSFlHOs5cyimxhdBfrEwOrEhtExO4b0Tp6KMWNS0
JjUhqbHwYyp1G2lqdNJGmRpKgf1ET5o6SZRhG2pQqMXWkDKlhahR9x115qTP
eqk7k5lDVPLXI/nlgHrQ74ZhMuOShdgel2V9pELvRRyVsVomvev3bWt18sNU
+nBGPxO3YhSVfS4Ic3QI6IkFhQnpTNPJ/LTeRZFI56hYk9ynMN9ic9fRLvKk
zzbtBtpQAmacV4oclqAp9Cu71jtqKPlS3gmCXWUx+jREmwAaBHT+bVYf5CcK
FmSjav1+TChQP28Dw/s/znHGJg3LAAA=

-->
</rfc>
