<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.2.2) -->
<?rfc iprnotified="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc colonspace="yes"?>
<?rfc rfcedstyle="no"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-irtf-t2trg-rest-iot-19" category="info" submissionType="IRTF" tocDepth="4" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="RESTful Design for IoT Systems">Guidance on RESTful Design for Internet of Things Systems</title>
    <seriesInfo name="Internet-Draft" value="draft-irtf-t2trg-rest-iot-19"/>
    <author initials="A." surname="Keränen" fullname="Ari Keränen">
      <organization>Ericsson</organization>
      <address>
        <postal>
          <street/>
          <city>Jorvas</city>
          <code>02420</code>
          <country>Finland</country>
        </postal>
        <email>ari.keranen@ericsson.com</email>
      </address>
    </author>
    <author initials="M." surname="Kovatsch" fullname="Matthias Kovatsch">
      <organization>Siemens</organization>
      <address>
        <postal>
          <street>Zählerweg 5</street>
          <city>Zug</city>
          <code>6300</code>
          <country>Switzerland</country>
        </postal>
        <email>matthias.kovatsch@siemens.com</email>
      </address>
    </author>
    <author initials="K." surname="Hartke" fullname="Klaus Hartke">
      <organization/>
      <address>
        <email>hartke@projectcool.de</email>
      </address>
    </author>
    <date year="2026" month="June" day="28"/>
    <area>T2TRG</area>
    <abstract>
      <?line 140?>

<t>This document gives guidance for designing Internet of Things (IoT) systems
that follow the principles of the Representational State Transfer (REST)
architectural style. This document is a product of the IRTF Thing-to-Thing
Research Group (T2TRG).</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-irtf-t2trg-rest-iot/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Thing-to-Thing Research Group mailing list (<eref target="mailto:t2trg@irtf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/t2trg/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/t2trg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/t2trg/t2trg-rest-iot"/>.</t>
    </note>
  </front>
  <middle>
    <?line 147?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Representational State Transfer (REST) architectural style <xref target="REST"/> is a set of guidelines and best practices for building distributed hypermedia systems.
At its core is a set of constraints, which when fulfilled enable desirable properties for distributed software systems such as scalability and modifiability.
When REST principles are applied to the design of a system, the result is often called RESTful and in particular an API following these principles is called a RESTful API.</t>
      <t>Different protocols can be used with RESTful systems, but at the time of writing the most common protocols are HTTP <xref target="RFC9110"/> and CoAP <xref target="RFC7252"/>.
Since RESTful APIs are often lightweight and enable loose coupling of system components, they are a good fit for various Internet of Things (IoT) applications, which in general aim at interconnecting the physical world with the virtual world.
The goal of this document is to give basic guidance for designing RESTful systems and APIs for IoT applications and give pointers for more information.</t>
      <t>Designing a good RESTful IoT system naturally has many commonalities with other Web systems.
Compared to others, the key characteristics of many RESTful IoT systems include:</t>
      <ul spacing="normal">
        <li>
          <t>accommodating for constrained devices <xref target="RFC7228"/>, so with IoT, REST is not only used for scaling out (large number of clients on a Web server), but also for scaling down (efficient server on constrained node, e.g., in energy consumption or implementation complexity)</t>
        </li>
        <li>
          <t>facilitating efficient transfer over (often) constrained networks and lightweight processing in constrained nodes through compact and simple data formats</t>
        </li>
        <li>
          <t>avoiding (or at least minimizing) the need for human interaction through machine-understandable data formats and interaction patterns</t>
        </li>
        <li>
          <t>enabling the system to evolve gradually in the field, as the usually large number of endpoints cannot be updated simultaneously</t>
        </li>
        <li>
          <t>having endpoints that are both clients and servers</t>
        </li>
      </ul>
    </section>
    <section anchor="sec-terms">
      <name>Terminology</name>
      <t>This section explains selected terminology that is commonly used in the context of RESTful design for IoT systems.
For terminology of constrained nodes and networks, see <xref target="RFC7228"/>.
Terminology on modeling of Things and their affordances (Properties, Actions, and Events) was taken from <xref target="I-D.ietf-asdf-sdf"/>.</t>
      <dl>
        <dt>Action:</dt>
        <dd>
          <t>A kind of affordance that can potentially be used to perform a named operation on a Thing.</t>
        </dd>
        <dt>Action Result:</dt>
        <dd>
          <t>A representation sent as a response by a server that does not represent resource state, but the result of the interaction with the originally addressed resource.</t>
        </dd>
        <dt>Affordance:</dt>
        <dd>
          <t>An element of an interface offered for interaction, defining its possible uses or making clear how it can or should be used.
The term is used here for the digital interfaces of a Thing only;
the Thing might also have physical affordances such as buttons, dials, and displays.</t>
        </dd>
        <dt>Cache:</dt>
        <dd>
          <t>A local store of response messages and the subsystem that controls storage, retrieval, and deletion of messages in it.</t>
        </dd>
        <dt>Client:</dt>
        <dd>
          <t>A node that sends requests to servers and receives responses; it therefore has the initiative to interact.
In RESTful IoT systems it is common for nodes to have more than one role (i.e., to be both server and client; see <xref target="sec-architecture"/>).</t>
        </dd>
        <dt>Client State:</dt>
        <dd>
          <t>The state kept by a client between requests.
This typically includes the currently processed representation, the set of active requests, the history of requests, bookmarks (URIs stored for later retrieval), and application-specific state (e.g., local variables).
(Note that this is called "Application State" in <xref target="REST"/>, which has some ambiguity in modern (IoT) systems where resources are highly dynamic and the overall state of the distributed application (i.e., application state) is reflected in the union of all Client States and Resource States of all clients and servers involved.)</t>
        </dd>
        <dt>Content Type:</dt>
        <dd>
          <t>A string that carries the media type plus potential parameters for the representation format such as "text/plain;charset=UTF-8".</t>
        </dd>
        <dt>Content Negotiation:</dt>
        <dd>
          <t>The practice of determining the "best" representation for a client when examining the current state of a resource.
The most common forms of content negotiation are Proactive Content Negotiation and Reactive Content Negotiation.</t>
        </dd>
        <dt>Dereference:</dt>
        <dd>
          <t>To use an access mechanism (e.g., HTTP or CoAP) to interact with the resource of a URI.</t>
        </dd>
        <dt>Dereferenceable URI:</dt>
        <dd>
          <t>A URI that can be dereferenced, i.e., interaction with the identified resource is possible.
Not all HTTP or CoAP URIs are dereferenceable, e.g., when the target resource does not exist.</t>
        </dd>
        <dt>Event:</dt>
        <dd>
          <t>A kind of affordance that can potentially be used to (recurrently) obtain information about what happened to a Thing, e.g., through server push.</t>
        </dd>
        <dt>Form:</dt>
        <dd>
          <t>A hypermedia control that enables a client to construct more complex requests, e.g., to change the state of a resource or perform specific queries.</t>
        </dd>
        <dt>Forward Proxy:</dt>
        <dd>
          <t>An intermediary that is selected by a client, usually via local configuration rules, and that can be tasked to make requests on behalf of the client.
This may be useful, for example, when the client lacks the capability to make the request itself or to service the response from a cache in order to reduce response time, network bandwidth, and energy consumption.</t>
        </dd>
        <dt>Gateway:</dt>
        <dd>
          <t>A reverse proxy that provides an interface to a non-RESTful system such as legacy systems or alternative technologies such as Bluetooth Attribute Profile (ATT) or Generic Attribute Profile (GATT).
See also "Reverse Proxy".</t>
        </dd>
        <dt>Hypermedia Control:</dt>
        <dd>
          <t>Information provided by a server on how to use its RESTful API; usually a URI and instructions on how to dereference it for a specific interaction. Hypermedia Controls are the serialized/encoded affordances of hypermedia systems.</t>
        </dd>
        <dt>Idempotent Method:</dt>
        <dd>
          <t>A method where multiple identical requests with that method lead to the same visible resource state as a single such request.</t>
        </dd>
        <dt>Intermediary:</dt>
        <dd>
          <t>System component in both server and client role. See "Forward Proxy", "Gateway", and "Reverse Proxy".</t>
        </dd>
        <dt>Link:</dt>
        <dd>
          <t>A hypermedia control that enables a client to navigate between resources and thereby change the client state.</t>
        </dd>
        <dt>Link Relation Type:</dt>
        <dd>
          <t>An identifier that describes how the link target resource relates to the current resource (see <xref target="RFC8288"/>).</t>
        </dd>
        <dt>Media Type:</dt>
        <dd>
          <t>An IANA-registered string such as "text/html" or "application/json" that is used to label representations so that it is known how the representation should be interpreted and how it is encoded.</t>
        </dd>
        <dt>Method:</dt>
        <dd>
          <t>An operation associated with a resource. Common methods include GET, PUT, POST, and DELETE (see <xref target="sec-methods"/> for details).</t>
        </dd>
        <dt>Origin Server:</dt>
        <dd>
          <t>A server that is the definitive source for representations of its resources and the ultimate recipient of any request that intends to modify its resources.
In contrast, intermediaries (such as proxies caching a representation) can assume the role of a server, but are not the source for representations as these are acquired from the origin server.</t>
        </dd>
        <dt>Proactive Content Negotiation:</dt>
        <dd>
          <t>A content negotiation mechanism where the server selects a representation based on the expressed preference of the client.
For example, an IoT application could send a request that prefers to accept the media type "application/senml+json".</t>
        </dd>
        <dt>Property:</dt>
        <dd>
          <t>A kind of affordance that can potentially be used to read, write, and/or observe state on a Thing.</t>
        </dd>
        <dt>Reactive Content Negotiation:</dt>
        <dd>
          <t>A content negotiation mechanism where the client selects a representation from a list of available representations.
The list may, for example, be included by a server in an initial response.
If the user agent is not satisfied by the initial response representation, it can request one or more of the alternative representations, selected based on metadata (e.g., available media types) included in the response.</t>
        </dd>
        <dt>Representation:</dt>
        <dd>
          <t>A serialization that represents the current or intended state of a resource and that can be transferred between client and server.
REST requires representations to be self-describing, meaning that there must be metadata that allows peers to understand which representation format is used.
Depending on the protocol needs and capabilities, there can be additional metadata that is transmitted along with the representation.</t>
        </dd>
        <dt>Representation Format:</dt>
        <dd>
          <t>A set of rules for serializing resource state.
On the Web, the most prevalent representation format is HTML.
Other common formats include plain text and formats based on JSON <xref target="RFC8259"/>, XML, or RDF. Within IoT systems, often compact formats based on JSON, CBOR <xref target="RFC8949"/>, and EXI <xref target="W3C.REC-exi-20110310"/> are used.</t>
        </dd>
        <dt>Representational State Transfer (REST):</dt>
        <dd>
          <t>An architectural style for Internet-scale distributed hypermedia systems.</t>
        </dd>
        <dt>Resource:</dt>
        <dd>
          <t>An item of interest identified by a URI.
Anything that can be named can be a resource.
A resource often encapsulates a piece of state in a system.
Typical resources in an IoT system can be, e.g., a sensor, the current value of a sensor, the location of a device, or the current state of an actuator.</t>
        </dd>
        <dt>Resource State:</dt>
        <dd>
          <t>A model of the possible states of a resource that is expressed in supported representation formats.
Resources can change state because of REST interactions with them, or they can change state for reasons outside of the REST model, e.g., business logic implemented on the server side such as sampling a sensor.</t>
        </dd>
        <dt>Resource Type:</dt>
        <dd>
          <t>An identifier that annotates the application-semantics of a resource (see <xref section="3.1" sectionFormat="of" target="RFC6690"/>).</t>
        </dd>
        <dt>Reverse Proxy:</dt>
        <dd>
          <t>An intermediary that appears as a server towards the client, but satisfies the requests by making its own request toward the origin server (possibly via one or more other intermediaries) and replying accordingly.
A reverse proxy is often used to encapsulate legacy services, to improve server performance through caching, or to enable load balancing across multiple machines.</t>
        </dd>
        <dt>Safe Method:</dt>
        <dd>
          <t>A method that does not result in any state change on the origin server when applied to a resource.</t>
        </dd>
        <dt>Server:</dt>
        <dd>
          <t>A node that listens for requests, performs the requested operation, and sends responses back to the clients.
In RESTful IoT systems it is common for nodes to have more than one role (i.e., to be both server and client; see <xref target="sec-architecture"/>).</t>
        </dd>
        <dt>Thing:</dt>
        <dd>
          <t>A physical item that is also available for interaction over a network, thereby enabling digital interaction with the physical world for humans, services, and/or other Things.</t>
        </dd>
        <dt>Transfer protocols:</dt>
        <dd>
          <t>In particular in the IoT domain, protocols above the transport layer that are used to transfer data objects and provide semantics for operations on the data.</t>
        </dd>
        <dt>Transfer layer:</dt>
        <dd>
          <t>Re-usable part of the application layer used to transfer the application specific data items using a standard set of methods that can fulfill application-specific operations.</t>
        </dd>
        <dt>Uniform Resource Identifier (URI):</dt>
        <dd>
          <t>A global identifier for resources.
See <xref target="sec-uris"/> for more details.</t>
        </dd>
      </dl>
    </section>
    <section anchor="basics">
      <name>Basics</name>
      <section anchor="sec-architecture">
        <name>Architecture</name>
        <t>Components of a RESTful system assume one of two roles when interacting: client or server.
Classic user agents (e.g., Web browsers) are always in the client role and have the initiative to interact with other components.
Origin servers govern over the resources they host and always have the server role, in which they wait for requests.</t>
        <t>Simple IoT devices, such as connected sensors and actuators, are commonly acting as servers to expose their physical world interaction capabilities (e.g., temperature measurement or door lock control capability) as resources.
A typical example of an IoT system client is a cloud service that retrieves data from the sensors and commands the actuators based on the sensor information.
Alternatively an IoT data storage system could work as a server where IoT sensor devices send their data in client role.</t>
        <figure anchor="basic-arch-x">
          <name>Client-Server Communication</name>
          <artwork align="center"><![CDATA[
   ________                       _________
  |        |                     |         |
  | User  (C)-------------------(S) Origin |
  | Agent  |                     |  Server |
  |________|                     |_________|
(e.g., Sensor,                (e.g., Data Store,
Cloud Service)                   IoT Device)
]]></artwork>
        </figure>
        <t>Intermediaries implement both roles, as they receive requests in server role and satisfy them by issuing their own requests in client role.
They do not, however, have initiative to issue requests on their own.
They often provide a cache to improve the overall system performance or, in the case of IoT, shield constrained devices from too many requests.
They can also translate requests to different RESTful protocols, for instance, as CoAP-HTTP cross-proxies <xref target="RFC8075"/>.</t>
        <t>A forward proxy is an intermediary selected by the user agent because of local application or system configuration.
It then forwards the request on behalf of the user agent, for instance, when the user agent is restricted by firewall rules or otherwise lacks the capability itself (e.g., a CoAP device contacting an HTTP origin server).</t>
        <figure anchor="basic-arch-a">
          <name>Communication with Forward Proxy</name>
          <artwork align="center"><![CDATA[
       ________       __________                        _________
      |        |     |          |                      |         |
      | User  (C)---(S) Inter- (C)--------------------(S) Origin |
      | Agent  |     |  mediary |                      |  Server |
      |________|     |__________|                      |_________|
(e.g., IoT Device) (e.g., Cross-Proxy)               (e.g., Web Server)
]]></artwork>
        </figure>
        <t>A reverse proxy is usually imposed by the origin server to transparently implement new features such as load balancing or interfaces to non-RESTful services such as legacy systems or alternative technologies such as Bluetooth ATT/GATT <xref target="BTCorev5.3"/>.
In the latter case, reverse proxies are usually called gateways.
Because of the Layered System constraint of REST, which says that a client cannot see beyond the server it is connected to, the user agent is not and does not need to be aware of the changes introduced through reverse proxies.</t>
        <figure anchor="basic-arch-b">
          <name>Communication with Reverse Proxy</name>
          <artwork align="center"><![CDATA[
      ________                        __________       _________
     |        |                      |          |     |         |
     | User  (C)--------------------(S) Inter- (x)---(x) Origin |
     | Agent  |                      |  mediary |     |  Server |
     |________|                      |__________|     |_________|
(e.g., Cloud Service)              (e.g., Gateway)   (e.g., Legacy System)
]]></artwork>
        </figure>
        <t>Components in IoT systems often implement both roles.
Unlike intermediaries, however, they can take the initiative as a client (e.g., to register with a directory, such as CoRE Resource Directory <xref target="RFC9176"/>, or to interact with another IoT device) and act as origin server at the same time (e.g., to serve sensor values or provide an actuator interface).</t>
        <figure anchor="basic-arch-c">
          <name>Communication with Things</name>
          <artwork align="center"><![CDATA[
 ________                                         _________
|        |                                       |         |
| Thing (C)-------------------------------------(S) Origin |
|       (S)                                 ___/ |  Server |
|________| \                            ___/     |_________|
 (e.g.,     \                       ___/   (e.g., Resource Directory)
  Sensor)    \   _________      ___/              _________
              \ |         | ___/                 |         |
               (C) Thing (C)                     |  User   |
                |        (S)--------------------(C) Agent  |
                |_________|                      |_________|
             (e.g., Controller)            (e.g., Configuration Tool)
]]></artwork>
        </figure>
      </section>
      <section anchor="system-design">
        <name>System Design</name>
        <t>When designing a RESTful system, the primary effort goes into modeling the application as distributed state and assigning it to the different components (i.e., clients and servers).
The secondary effort is then selecting or designing the necessary representation formats to exchange information and enable interaction between the components through resources.</t>
        <t>Which resources exist and how they can be used is expressed by the server in so-called affordances, a concept adopted in the field of human-computer interaction <xref target="HCI"/>.
Affordances can be described in responses (e.g., the initial response from a well-known resource) or out of band (e.g., through a W3C Thing Description document <xref target="W3C-TD"/> from a directory).
In RESTful systems, affordances are encoded as hypermedia controls (links and forms):
links allow to navigate between resources and forms enable clients to formulate more complex requests (e.g., to modify a resource or perform a query).</t>
        <t>A physical door may have a door knob as affordance, indicating that the door can be opened by twisting the knob; a keyhole may indicate that it can be locked.
For Things in the IoT, these affordances may be serialized as two hypermedia forms, which include semantic identifiers from a controlled vocabulary (e.g., schema.org) and the instructions on how to formulate the requests for opening and locking, respectively.
Overall, this allows to realize a Uniform Interface (see <xref target="sec-uniform-interface"/>), which enables loose coupling between clients and servers.</t>
        <t>Hypermedia controls span a kind of state machine, where the nodes are resources or action results and the transitions are links or forms.
Clients run this distributed state machine (i.e., the application) by retrieving representations, processing the data, and following the included links and/or submitting forms to trigger the corresponding transition.
This is usually done by retrieving the current state, modifying the copy of the state on the client side, and transferring the new state to the server in the form of new representations -- rather than calling a service and modifying the state on the server side (see <xref target="sec-calling-procedure"/>).</t>
        <t>Client state encompasses the current state of the described state machine and the possible next transitions derived from the hypermedia controls within the currently processed representation.
Furthermore, clients can have part of the state of the distributed application in local variables.</t>
        <t>Resource state includes the more persistent data of an application (i.e., data that exists independent of individual clients).
This can be static data such as device descriptions, persistent data such as system configurations, but also dynamic data such as the current value of a sensor on a Thing.</t>
        <t>In the design, it is important to distinguish between "client state" and "resource state", and keep them separate.
Following the Stateless constraint, the client state must be kept only on clients.
That is, there is no establishment of shared information about past and future interactions between client and server (usually called a session).
On the one hand, this makes requests a bit more verbose since every request must contain all the information necessary to process it.
On the other hand, this makes servers efficient and scalable, since they do not have to keep any state about their clients.
Requests can easily be distributed over multiple worker threads or server instances (cf. load balancing).
For IoT systems, this constraint lowers the memory requirements for server implementations, which is particularly important for constrained servers (e.g., sensor nodes) and servers serving a large number of clients (e.g., Resource Directory).</t>
      </section>
      <section anchor="sec-uris">
        <name>Uniform Resource Identifiers (URIs)</name>
        <t>An important aspect of RESTful API design is to model the system as a set of resources, which potentially can be created and/or deleted dynamically and whose state can be retrieved and/or modified.</t>
        <t>Uniform Resource Identifiers (URIs) are used to indicate resources for interaction, to reference a resource from another resource, to advertise or bookmark a resource, or to index a resource by search engines.</t>
        <artwork><![CDATA[
  foo://example.com:8042/over/there?name=ferret#nose
  \_/   \______________/\_________/ \_________/ \__/
   |           |            |            |        |
scheme     authority       path        query   fragment
]]></artwork>
        <t>A URI is a sequence of characters that matches the syntax defined in <xref target="RFC3986"/>.
It consists of a hierarchical sequence of five components: scheme, authority, path, query, and fragment identifier (from most significant to least significant), while not all components are necessary to form a valid URI.
A scheme creates a namespace for resources and defines how the following components identify a resource within that namespace.
The authority identifies an entity that governs part of the namespace, such as the server "www.example.org" in the "https" scheme.
A hostname (e.g., a fully qualified domain name) or an IP address literal, optionally followed by a transport layer port number, are usually used for the authority component.
The path and optional query contain data to identify a resource within the scope of the scheme-dependent naming authority (i.e., "http://www.example.org" is a different authority than "https://www.example.org"); if no path is given, the root resource is addressed.
The fragment identifier allows referring to some portion of the resource, such as a Record in a SenML Pack (<xref section="9" sectionFormat="of" target="RFC8428"/>).
However, fragment identifiers are processed only at client side and not sent on the wire.
<xref target="RFC8820"/> provides more details on URI design and ownership with best current practices for establishing URI structures, conventions, and formats.</t>
        <t>For RESTful IoT applications, typical schemes include "https", "coaps", "http", and "coap".
These refer to HTTP and CoAP, with and without Transport Layer Security (TLS, <xref target="RFC5246"/> for TLS 1.2 and <xref target="RFC8446"/> for TLS 1.3).
(CoAP uses Datagram TLS (DTLS) <xref target="RFC6347"/><xref target="RFC9147"/>, the variant of TLS for UDP.)
These four schemes also provide means for locating the resource; using the protocols HTTP for "http" and "https" and CoAP for "coap" and "coaps".
If the scheme is different for two URIs (e.g., "coap" vs. "coaps"), it is important to note that even if the remainder of the URI is identical, these are two different resources, in two distinct namespaces.</t>
        <t>Some schemes are for URIs with the main purpose as identifiers, and hence are not dereferenceable, e.g., the "urn" scheme can be used to construct unique names in registered namespaces.
In particular the "urn:dev" URI <xref target="RFC9039"/> details multiple ways for generating and representing endpoint identifiers of IoT devices.</t>
        <t>The query parameters can be used to parameterize the resource.
For example, a GET request may use query parameters to request the server to send only certain kind of data of the resource (i.e., filtering the response).
Query parameters in PUT and POST requests do not have such established semantics and are not used consistently.
Whether the order of the query parameters matters in URIs is up to the server implementation; they might even be re-ordered, for instance by intermediaries.
Therefore, applications should not rely on their order; see <xref section="3.3.4" sectionFormat="of" target="RFC6943"/> for more details.</t>
        <t>When using HTTP, care must be taken with values that contain characters with special meaning in URI paths, such as "/" in JSON Pointers <xref target="RFC6901"/>.
Such characters require percent-encoding when used in path segments (e.g., "/" as "%2F"), but many HTTP servers and intermediaries handle these inconsistently, which can cause interoperability issues and security vulnerabilities.
Placing such values in query parameters instead of path segments may help avoid these problems; see <xref section="2.6.3" sectionFormat="of" target="I-D.ietf-asdf-nipc"/> for further discussion.
Note that this issue does not affect CoAP, as its wire format carries path segments as separate options without percent-encoding.</t>
        <t>Due to the relatively complex processing rules and text representation format, URI handling can be difficult to implement correctly in constrained devices.
Constrained Resource Identifiers <xref target="I-D.ietf-core-href"/> provide a CBOR-based format of URIs that is better suited for resource constrained devices.</t>
      </section>
      <section anchor="representations">
        <name>Representations</name>
        <t>Clients can retrieve the resource state from a server or manipulate resource state on the (origin) server by transferring resource representations.
Resource representations must have metadata that identifies the representation format used, so the representations can be interpreted correctly.
This is usually a simple string such as the IANA-registered Internet Media Types.
Typical media types for IoT systems include:</t>
        <ul spacing="normal">
          <li>
            <t>"text/plain" for simple text (more precisely "text/plain;charset=UTF-8" for UTF-8 encoding)</t>
          </li>
          <li>
            <t>"application/octet-stream" for arbitrary binary data</t>
          </li>
          <li>
            <t>"application/json" for the JSON format <xref target="RFC8259"/></t>
          </li>
          <li>
            <t>"application/cbor" for CBOR <xref target="RFC8949"/></t>
          </li>
          <li>
            <t>"application/exi" for EXI <xref target="W3C.REC-exi-20110310"/></t>
          </li>
          <li>
            <t>"application/link-format" for CoRE Link Format <xref target="RFC6690"/></t>
          </li>
          <li>
            <t>"application/senml+json" and "application/senml+cbor" for Sensor Measurement Lists (SenML) data <xref target="RFC8428"/></t>
          </li>
        </ul>
        <t>A full list of registered Internet Media Types is available at the IANA registry <xref target="IANA-media-types"/>.
Numerical identifiers for media types, parameters, and content codings registered for use with CoAP are listed at CoAP Content-Formats IANA registry <xref target="IANA-CoAP-media"/>.</t>
        <t>The terms "media type", "content type" (media type plus potential parameters), and "content format" (short identifier of content type and content coding, abbreviated for historical reasons "ct") are often used when referring to representation formats used with CoAP.
The differences between these terms are discussed in more detail in <xref section="2" sectionFormat="of" target="RFC9193"/>.</t>
      </section>
      <section anchor="sec-methods">
        <name>HTTP/CoAP Methods</name>
        <t><xref section="9.3" sectionFormat="of" target="RFC9110"/> defines the set of methods in HTTP;
<xref section="5.8" sectionFormat="of" target="RFC7252"/> defines the set of methods in CoAP.
As part of the Uniform Interface constraint (see <xref target="sec-uniform-interface"/>), each method can have certain properties that give guarantees to clients.</t>
        <t>Safe methods do not cause any state change on the origin server when applied to a resource.
For example, the GET method only returns a representation of the resource state but does not change the resource.
Thus, it is always safe for a client to retrieve a representation without affecting server-side state.</t>
        <t>Idempotent methods can be applied multiple times to the same resource while causing the same eventual resource state as a single such request (unless something else caused the resource state to change).
For example, the PUT method replaces the state of a resource with a new state; replacing the state multiple times with the same new state still results in the same state for the resource.
However, responses from the server can be different when the same idempotent method is used multiple times.
For example when DELETE is used twice on an existing resource, the first request would remove the association and return a success acknowledgement, whereas the second request would likely result in an error response due to non-existing resource (note that neither response is a representation of the resource).</t>
        <t>The following lists the most relevant methods and gives a short explanation of their semantics.</t>
        <section anchor="get">
          <name>GET</name>
          <t>The GET method requests a current representation for the target resource, while the origin server must ensure that there are no side effects on the resource state.
Only the origin server needs to know how each of its resource identifiers corresponds to an implementation and how each implementation manages to select and send a current representation of the target resource in a response to GET.</t>
          <t>A payload within a GET request message has no defined semantics.</t>
          <t>The GET method is safe and idempotent.</t>
        </section>
        <section anchor="post">
          <name>POST</name>
          <t>The POST method requests that the target resource process the representation enclosed in the request according to the resource's own specific semantics.</t>
          <t>If one or more resources has been created on the origin server as a result of successfully processing a POST request, the origin server sends a 201 (Created) response containing a Location header field (with HTTP) or Location-Path and/or Location-Query Options (with CoAP) that provide an identifier for the resource created.
The server also includes a representation that describes the status of the request while referring to the new resource(s).</t>
          <t>The POST method is not safe nor idempotent.</t>
        </section>
        <section anchor="put">
          <name>PUT</name>
          <t>The PUT method requests that the state of the target resource be created or replaced with the state defined by the representation enclosed in the request message payload.
A successful PUT of a given representation would suggest that a subsequent GET on that same target resource will result in an equivalent representation being sent.
A PUT request applied to the target resource can have side effects on other resources.</t>
          <t>The fundamental difference between the POST and PUT methods is highlighted by the different intent for the enclosed representation.
The target resource in a POST request is intended to handle the enclosed representation according to the resource's own semantics, whereas the enclosed representation in a PUT request is defined as replacing the state of the target resource.
Hence, the intent of PUT is idempotent and visible to intermediaries, even though the exact effect is only known by the origin server.</t>
          <t>The PUT method is not safe, but is idempotent.</t>
        </section>
        <section anchor="delete">
          <name>DELETE</name>
          <t>The DELETE method requests that the origin server remove the association between the target resource and its current functionality.</t>
          <t>If the target resource has one or more current representations, they might or might not be destroyed by the origin server, and the associated storage might or might not be reclaimed, depending entirely on the nature of the resource and its implementation by the origin server.</t>
          <t>The DELETE method is not safe, but is idempotent.</t>
        </section>
        <section anchor="fetch-query">
          <name>FETCH / QUERY</name>
          <t>The CoAP-specific FETCH method <xref target="RFC8132"/> requests a representation of a resource parameterized by a representation enclosed in the request.</t>
          <t>The fundamental difference between the GET and FETCH methods is that the request parameters are included as the payload of a FETCH request, while in a GET request they are typically part of the query string of the request URI.</t>
          <t>The FETCH method is safe and idempotent.</t>
          <t>For HTTP a new QUERY method is being specified <xref target="I-D.ietf-httpbis-safe-method-w-body"/> for making a safe, idempotent request that contains content.</t>
        </section>
        <section anchor="patch">
          <name>PATCH</name>
          <t>The PATCH method <xref target="RFC5789"/> <xref target="RFC8132"/> requests that a set of changes described in the request entity be applied to the target resource.</t>
          <t>The PATCH method is not safe nor idempotent.</t>
          <t>The CoAP-specific iPATCH method is a variant of the PATCH method that is not safe, but is idempotent.</t>
        </section>
      </section>
      <section anchor="coap-response-codes-and-http-status-codes">
        <name>CoAP Response Codes and HTTP Status Codes</name>
        <t><xref section="15" sectionFormat="of" target="RFC9110"/> defines a set of Status Codes in HTTP that are assigned by the server to indicate whether a request was understood and satisfied, and how to interpret the answer.
Similarly, <xref section="5.9" sectionFormat="of" target="RFC7252"/> defines the set of Response Codes in CoAP.</t>
        <t>The codes consist of three digits (e.g., "404" with HTTP or "4.04" with CoAP) where the first digit expresses the class of the code.
CoAP response codes are encoded as a single byte split into a 3-bit class and a 5-bit detail (e.g., 4.04), giving them a similar structure to HTTP codes with a more compact on-wire representation, but a limited range (e.g., only 4.00 to 4.31 are available).
Implementations do not need to understand all codes, but the class of the code must be understood.
Codes starting with 1 are informational; the request was received and being processed (not available in CoAP).
Codes starting with 2 indicate a successful request.
Codes starting with 3 indicate redirection; further action is needed to complete the request (not available in CoAP).
Codes starting with 4 and 5 indicate errors.
The codes starting with 4 mean client error (e.g., bad syntax in the request) whereas codes starting with 5 mean server error; there was no apparent problem with the request, but the server was not able to fulfill the request.</t>
        <t>For CoAP, the response code alone decides whether a response is cacheable, while HTTP uses explicit cache-control headers or rules over method and code.
CoAP responses with code 2.05, 4.xx, and 5.xx are cacheable, whereas responses with code 2.03 update the cache lifetime of an existing cached response (see <xref section="5.9.1.3" sectionFormat="of" target="RFC7252"/>).
Note that the Max-Age Option defaults to 60 seconds when absent. Applications should set Max-Age according to their detailed knowledge of application state and potential errors, for example, based on resource stability for 2.05 (Content) responses and volatility of error responses (e.g., if a certain query is invalid only temporarily or forever). See also <xref section="5.9.3.4" sectionFormat="of" target="RFC7252"/> and <xref target="RFC8516"/>.
This difference to HTTP also leads to slightly different codes starting with 2; for example, CoAP does not have a 2.00 response code whereas 200 ("OK") is commonly used with HTTP.</t>
      </section>
    </section>
    <section anchor="rest-constraints">
      <name>REST Constraints</name>
      <t>The REST architectural style defines a set of constraints for the system design.
When all constraints are applied correctly, REST enables architectural properties of key interest <xref target="REST"/>:</t>
      <ul spacing="normal">
        <li>
          <t>Performance</t>
        </li>
        <li>
          <t>Scalability</t>
        </li>
        <li>
          <t>Reliability</t>
        </li>
        <li>
          <t>Simplicity</t>
        </li>
        <li>
          <t>Modifiability</t>
        </li>
        <li>
          <t>Visibility</t>
        </li>
        <li>
          <t>Portability</t>
        </li>
      </ul>
      <t>The following subsections briefly summarize the REST constraints and explain how they enable the listed properties.</t>
      <section anchor="client-server">
        <name>Client-Server</name>
        <t>As explained in the Architecture section, RESTful system components have clear roles in every interaction.
Clients have the initiative to issue requests, intermediaries can only forward requests, and servers respond to requests, while origin servers are the ultimate recipient of requests that intend to modify resource state.</t>
        <t>This improves simplicity and visibility (also for digital forensics), as it is clear which component started an interaction.
Furthermore, it improves modifiability through a clear separation of concerns.</t>
        <t>In IoT systems, endpoints often assume both roles of client and (origin) server simultaneously.
When an IoT device has initiative (because there is a user, e.g., pressing a button, or installed rules/policies), it acts as a client.
When a device offers a service, it is in server role.</t>
      </section>
      <section anchor="stateless">
        <name>Stateless</name>
        <t>The Stateless constraint requires messages to be self-contained.
They must contain all the information to process it, independent from previous messages.
This allows to strictly separate the client state from the resource state.</t>
        <t>This improves scalability and reliability, since servers or worker threads can be replicated.
It also improves visibility because message traces contain all the information to understand the logged interactions.
Furthermore, the Stateless constraint enables caching.</t>
        <t>For IoT, the scaling properties of REST become particularly important.
Note that being self-contained does not necessarily mean that all information has to be inlined.
Constrained IoT devices may choose to externalize metadata and hypermedia controls using Web linking, so that only the dynamic content needs to be sent and the static content such as schemas or controls can be cached.</t>
      </section>
      <section anchor="cache">
        <name>Cache</name>
        <t>This constraint requires responses to have implicit or explicit cache-control metadata.
This enables clients and intermediaries to store responses and re-use them to locally answer future requests.
The cache-control metadata is necessary to decide whether the information in the cached response is still fresh or stale and needs to be discarded.</t>
        <t>A cache improves performance, as less data needs to be transferred and response times can be reduced significantly.
Needing fewer transfers also improves scalability, as origin servers can be protected from too many requests.
Local caches furthermore improve reliability, since requests can be answered even if the origin server is temporarily not available.</t>
        <t>Introducing additional components to perform caching only makes sense when the data is used by multiple participants (otherwise client-side caching would be enough).
In IoT systems, however, it might make sense to cache also individual data to protect constrained devices and networks from frequent requests of data that does not change often.
Security often hinders the ability to cache responses.
For IoT systems, object security <xref target="RFC8613"/> may be preferable over transport layer security, as it enables intermediaries to cache responses while preserving security <xref target="I-D.amsuess-core-cachable-oscore"/>.</t>
      </section>
      <section anchor="sec-uniform-interface">
        <name>Uniform Interface</name>
        <t>All RESTful APIs use the same, uniform interface independent of the application.
This simple interaction model is enabled by exchanging representations and modifying state locally, which simplifies the interface between clients and servers to a small set of methods to retrieve, update, and delete state.
This small set can apply to many different applications.</t>
        <t>In contrast, in a service-oriented RPC approach, state is modified remotely, directly by the server, and only the instruction what to modify is exchanged.
Also retrieving state for local use is usually solved through specific instructions depending on the individual information.
This requires to model all the necessary instructions beforehand and assign them to named procedures.
This results in an application-specific interface with a large set of methods/procedures.
Moreover, it is also likely that different parties come up with different ways how to modify state, including the naming of the procedures.
Hence, even very similar applications are likely not interoperable.</t>
        <t>A REST interface is fully defined by:</t>
        <ul spacing="normal">
          <li>
            <t>URIs to identify resources</t>
          </li>
          <li>
            <t>representation formats to represent and manipulate resource state</t>
          </li>
          <li>
            <t>self-descriptive messages with a standard set of methods (e.g., GET, POST, PUT, DELETE with their guaranteed properties)</t>
          </li>
          <li>
            <t>hypermedia controls within representations</t>
          </li>
        </ul>
        <t>The concept of hypermedia controls is also known as HATEOAS: Hypermedia As The Engine Of Application State <xref target="HATEOAS"/>.
The origin server embeds controls for the interface into its representations and thereby informs the client about possible next requests.
The most used control for RESTful systems today is Web Linking <xref target="RFC8288"/>.
Hypermedia forms are more powerful controls that describe how to construct more complex requests, including representations to modify resource state.</t>
        <t>While this is the most complex constraint (in particular the hypermedia controls), it improves many key properties.
It improves simplicity, as uniform interfaces are easier to understand.
The self-descriptive messages improve visibility.
The limitation to a known set of representation formats fosters portability.
Most of all, however, this constraint is the key to modifiability, as hypermedia-driven, uniform interfaces allow clients and servers to evolve independently, and hence enable a system to evolve.</t>
        <t>For a large number of IoT applications, the hypermedia controls are mainly used for the discovery of resources, as they often serve sensor data.
Such resources are "dead ends", as they usually do not link any further and only have one form of interaction: fetching the sensor value.
For IoT, the critical parts of the Uniform Interface constraint are the descriptions of messages and representation formats used.
Simply using, for instance, "application/json" does not help machine clients to understand the semantics of the representation.
Yet defining very precise media types limits the re-usability and interoperability.
Representation formats such as SenML <xref target="RFC8428"/> try to find a good trade-off between precision and re-usability.
Another approach is to combine a generic format such as JSON or CBOR with syntactic (see <xref target="I-D.handrews-json-schema-validation"/> and <xref target="RFC8610"/>) as well as semantic annotations (e.g., <xref target="W3C-TD"/>).</t>
      </section>
      <section anchor="layered-system">
        <name>Layered System</name>
        <t>This constraint enforces that a client cannot see beyond the server with which it is interacting.</t>
        <t>A layered system is easier to modify, as topology changes become transparent (i.e., remain unnoticed by previous layers).
This in turn helps scalability, as reverse proxies such as load balancers can be introduced without changing the client side.
The clean separation of concerns in layers helps with simplicity.</t>
        <t>IoT systems greatly benefit from this constraint, as it allows to effectively shield constrained devices behind intermediaries.
It is also the basis for gateways, which are used to integrate other (IoT) ecosystems.</t>
      </section>
      <section anchor="code-on-demand">
        <name>Code-on-Demand</name>
        <t>This principle enables origin servers to ship code to clients.</t>
        <t>Code-on-Demand improves modifiability, since new features can be deployed during runtime (e.g., support for a new representation format).
It also improves performance, as the server can provide code for local pre-processing before transferring the data.</t>
        <t>As of today, code-on-demand has not been explored much in IoT systems.
Aspects to consider are that either one or both nodes are constrained and might not have the resources to host or dynamically fetch and execute such code.
Moreover, the origin server often has no understanding of the actual application a mashup client realizes.
Still, code-on-demand can be useful for small polyfills <xref target="POLYFILLS"/>, e.g., to decode payloads, and potentially other features in the future.</t>
      </section>
    </section>
    <section anchor="hypermedia-driven-applications">
      <name>Hypermedia-driven Applications</name>
      <t>Hypermedia-driven applications take advantage of hypermedia controls, i.e., links and forms, which are embedded in representations or response message headers.
A hypermedia client is a client that is capable of processing these hypermedia controls.
Hypermedia links can be used to give additional information about a resource representation (e.g., the source URI of the representation) or pointing to other resources.
The forms can be used to describe the structure of the data that can be sent (e.g., with a POST or PUT method) to a server, or how a data retrieval (e.g., GET) request for a resource should be formed.
In a hypermedia-driven application the client interacts with the server using only the hypermedia controls, instead of selecting methods and/or constructing URIs based on out-of-band information, such as API documentation.
The Constrained RESTful Application Language (CoRAL) <xref target="I-D.ietf-core-coral"/> provides a hypermedia-format that is suitable for constrained IoT environments.</t>
      <section anchor="motivation">
        <name>Motivation</name>
        <t>The advantage of this approach is increased evolvability and extensibility.
This is important in scenarios where servers exhibit a range of feature variations, where it's expensive to keep evolving client knowledge and server knowledge in sync all the time, or where there are many different client and server implementations.
Hypermedia controls serve as indicators in capability negotiation.
In particular, they describe available resources and possible operations on these resources using links and forms, respectively.</t>
        <t>There are multiple reasons why a server might introduce new links or forms:</t>
        <ul spacing="normal">
          <li>
            <t>The server implements a newer version of the application.
Older clients ignore the new links and forms, while newer clients are able to take advantage of the new features by following the new links and submitting the new forms.</t>
          </li>
          <li>
            <t>The server offers links and forms depending on the current state.
The server can tell the client which operations are currently valid and thus help the client navigate the application state machine.
The client does not have to have knowledge which operations are allowed in the current state or make a request just to find out that the operation is not valid.</t>
          </li>
          <li>
            <t>The server offers links and forms depending on the client's access control rights.
If the client is unauthorized to perform a certain operation, then the server can simply omit the links and forms for that operation.</t>
          </li>
        </ul>
      </section>
      <section anchor="knowledge">
        <name>Knowledge</name>
        <t>A client needs to have knowledge of a couple of things for successful interaction with a server.
This includes what resources are available, what representations of resource states are available, what each representation describes, how to retrieve a representation, what state changing operations on a resource are possible, how to perform these operations, and so on.</t>
        <t>Some part of this knowledge, such as how to retrieve the representation of a resource state, is typically hard-coded in the client software.
For other parts, a choice can often be made between hard-coding the knowledge or acquiring it on-demand.
The key to success in either case is the use of in-band information for identifying the knowledge that is required.
This enables the client to verify that it has all the required knowledge or to acquire missing knowledge on-demand.</t>
        <t>A hypermedia-driven application typically uses the following identifiers:</t>
        <ul spacing="normal">
          <li>
            <t>URI schemes that identify communication protocols,</t>
          </li>
          <li>
            <t>Internet Media Types that identify representation formats,</t>
          </li>
          <li>
            <t>link relation types or resource types that identify link semantics,</t>
          </li>
          <li>
            <t>form relation types that identify form semantics,</t>
          </li>
          <li>
            <t>variable names that identify the semantics of variables in templated links, and</t>
          </li>
          <li>
            <t>form field names that identify the semantics of form fields in forms.</t>
          </li>
        </ul>
        <t>The knowledge about these identifiers as well as matching implementations have to be shared a priori in a RESTful system.</t>
      </section>
      <section anchor="interaction">
        <name>Interaction</name>
        <t>A client begins interacting with an application through a GET request on an entry point URI.
The entry point URI is the only URI a client is expected to know before interacting with an application.
From there, the client is expected to make all requests by following links and submitting forms that are provided in previous responses.
The entry point URI can be obtained, for example, by manual configuration or some discovery process (e.g., DNS-SD <xref target="RFC6763"/> or Resource Directory <xref target="RFC9176"/>).
For Constrained RESTful environments "/.well-known/core", a relative URI is defined as a default entry point for requesting the links hosted by servers with known or discovered addresses <xref target="RFC6690"/>.</t>
      </section>
      <section anchor="hypermedia-driven-design-guidance">
        <name>Hypermedia-driven Design Guidance</name>
        <t>Assuming self-describing representation formats (i.e., human-readable with carefully chosen terms or processable by a formatting tool) and a client supporting the URI scheme used, a good rule of thumb for a good hypermedia-driven design is the following:
A developer should only need an entry point URI to drive the application.
All further information how to navigate through the application (links) and how to construct more complex requests (forms) are published by the server(s).
There must be no need for additional, out-of-band information (e.g., an API specification).</t>
        <t>For machines, a well-chosen set of information needs to be shared a priori to agree on machine-understandable semantics.
Agreeing on the exact semantics of terms for relation types and data elements will of course also help the developer.
<xref target="I-D.hartke-core-apps"/> proposes a convention for specifying the set of information in a structured way.</t>
      </section>
    </section>
    <section anchor="design-patterns">
      <name>Design Patterns</name>
      <t>Certain kinds of design problems are often recurring in a variety of domains, and often re-usable design patterns can be applied to them.
Also, some interactions with a RESTful IoT system are straightforward to design;
a classic example of reading a temperature from a thermometer device is almost always implemented as a GET request to a resource that represents the current value of the thermometer.
However, certain interactions, for example data conversions or event handling, do not have as straightforward and well established ways to represent the logic with resources and REST methods.</t>
      <t>The following sections describe how common design problems such as different interactions can be modeled with REST and what are the benefits of different approaches.</t>
      <section anchor="collections">
        <name>Collections</name>
        <t>A common pattern in RESTful systems across different domains is the collection.
A collection can be used to combine multiple resources together by providing resources that consist of a set of (often partial) representations of resources, called items, and links to resources.
The collection resource also defines hypermedia controls for managing and searching the items in the collection.</t>
        <t>Examples of the collection pattern in RESTful IoT systems include the CoRE Resource Directory <xref target="RFC9176"/>, CoAP pub/sub broker <xref target="I-D.ietf-core-coap-pubsub"/>, and resource discovery via ".well-known/core".
Collection+JSON <xref target="CollectionJSON"/> is an example of a generic collection Media Type.</t>
      </section>
      <section anchor="sec-calling-procedure">
        <name>Calling a Procedure</name>
        <t>To modify resource state, clients usually use GET to retrieve a representation from the server, modify that locally, and transfer the resulting state back to the server with a PUT (see <xref target="sec-uniform-interface"/>).
Sometimes, however, the state can only be modified on the server side, for instance, because representations would be too large to transfer or part of the required information shall not be accessible to clients.
In this case, resource state is modified by calling a procedure (or "function").
This is usually modeled with a POST request, as this method leaves the behavior semantics completely to the server.
Procedure calls can be divided into two different classes based on how long they are expected to execute: "instantly" returning and long-running.</t>
        <section anchor="instantly-returning-procedures">
          <name>Instantly Returning Procedures</name>
          <t>When the procedure can return within the expected response time of the system, the result can be directly returned in the response.
The result can either be actual content or just a confirmation that the call was successful.
In either case, the response does not contain a representation of the resource, but a so-called action result.
Action results can still have hypermedia controls to provide the possible transitions in the application state machine.</t>
        </section>
        <section anchor="long-running-procedures">
          <name>Long-running Procedures</name>
          <t>When the procedure takes longer than the expected response time of the system, or even longer than the response timeout, it is a good pattern to create a new resource to track the "task" execution.
The server would respond instantly with a "Created" status (HTTP code 201 or CoAP 2.01) and indicate the location of the task resource in the corresponding header field (or CoAP option) or as a link in the action result.
The created resource can be used to monitor the progress, to potentially modify queued tasks or cancel tasks, and to eventually retrieve the result.</t>
          <t>Monitoring information would be modeled as state of the task resource, and hence be retrievable as representation.
CoAP Observe can help to be notified efficiently about completion or other changes to this information.
The result -- when available -- can be embedded in the representation or given as a link to another sub-resource.
Modifying tasks can be modeled with forms that either update sub-resources via PUT or do a partial write using PATCH or POST.
Canceling a task would be modeled with a form that uses DELETE to remove the task resource.</t>
        </section>
        <section anchor="conversion">
          <name>Conversion</name>
          <t>A conversion service is a good example where REST resources need to behave more like a procedure call.
The knowledge of converting from one representation to another is located only at the server to relieve clients from high processing or storing lots of data.
There are different approaches that all depend on the particular conversion problem.</t>
          <t>As mentioned in the previous sections, POST requests are a good way to model functionality that does not necessarily affect resource state.
When the input data for the conversion is small and the conversion result is deterministic, however, it can be better to use a GET request with the input data in the URI query part.
The query is parameterizing the conversion resource, so that it acts like a look-up table.
The benefit is that results can be cached also for HTTP (where responses to POST are not cacheable).
In CoAP, cacheability depends on the response code, so that also a response to a POST request can be made cacheable through a 2.05 Content code.</t>
          <t>When the input data is large or has a binary encoding, it is better to use POST requests with a proper Media Type for the input representation.
A POST request is also more suitable, when the result is time-dependent and the latest result is expected (e.g., exchange rates).</t>
        </section>
        <section anchor="events-as-state">
          <name>Events as State</name>
          <t>In event-centric paradigms such as Publish-Subscribe (pub/sub), events are usually represented by an incoming message that might even be identical for each occurrence.
Since the messages are queued, the receiver is aware of each occurrence of the event and can react accordingly.
For instance, in an event-centric system, ringing a doorbell would result in a message being sent that represents the event that it was rung.</t>
          <t>In resource-oriented paradigms such as REST, messages usually carry the current state of the remote resource, independent from the changes (i.e., events) that have led to that state.
In a naive yet natural design, a doorbell could be modeled as a resource that can have the states unpressed and pressed.
There are, however, a few issues with this approach.
Polling (i.e., periodically retrieving) the doorbell resource state is not a good option, as the client is highly unlikely to be able to observe all the changes in the pressed state with any realistic polling interval.
When using CoAP Observe with Confirmable notifications, the server will usually send two notifications for the event that the doorbell was pressed:
notification for changing from unpressed to pressed and another one for changing back to unpressed.
If the time between the state changes is very short, the server might drop the first notification, as Observe guarantees eventual consistency only (see <xref section="1.3" sectionFormat="of" target="RFC7641"/>).</t>
          <t>The solution is to pick a state model that fits better to the application.
In the case of the doorbell -- and many other event-driven resources -- the solution could be a counter that counts how often the bell was pressed.
The corresponding action is taken each time the client observes a change in the received representation.
In the case of a network outage, this could lead to a ringing sound long after the bell was rung.
Also including a timestamp of the last counter increment in the state can help to suppress ringing a sound when the event has become obsolete. Another solution would be to change the client/server roles of the doorbell button and the ringer, as described in <xref target="sec-server-push"/>.</t>
        </section>
      </section>
      <section anchor="sec-server-push">
        <name>Server Push</name>
        <t>Overall, a universal mechanism for server push, that is, change-of-state notifications and stand-alone event notifications, is still an open issue that is being discussed in the Thing-to-Thing Research Group.
It is connected to the state-event duality problem and custody transfer, that is, the transfer of the responsibility that a message (e.g., event) is delivered successfully.</t>
        <t>A proficient mechanism for change-of-state notifications is currently only available for CoAP: Observing resources <xref target="RFC7641"/>.
The CoAP Observe mechanism offers eventual consistency, which guarantees "that if the resource does not undergo a new change in state, eventually all registered observers will have a current representation of the latest resource state".
It intrinsically deals with the challenges of lossy networks, where notifications might be lost, and constrained networks, where there might not be enough bandwidth to propagate all changes.</t>
        <t>For stand-alone event notifications, that is, where every single notification contains an identifiable event that must not be lost, observing resources is not a good fit.
A better strategy is to model each event as a new resource, whose existence is notified through change-of-state notifications of an index resource <xref target="I-D.bormann-t2trg-stp"/>.
Large numbers of events will cause the notification to grow large, as it needs to contain a large number of Web links.
Block-wise transfers <xref target="RFC7959"/> or pagination can help here.
When the links are ordered by freshness of the events, the first block or page can already contain all links to new events.
Then, observers do not need to retrieve the remaining blocks or pages from the server, but only the representations of the new event resources.</t>
        <t>An alternative pattern is to exploit the dual roles of IoT devices, in particular when using CoAP: they are usually client and server at the same time.
An endpoint interested in observing the events would subscribe to them by registering a callback URI at the origin server, e.g., using a POST request with the URI or a hypermedia document in the payload, and receiving the location of a temporary "subscription resource" as handle in the response.
The origin server would then publish events by sending requests containing the event data to the observer's callback URI; here POST can be used to add events to a collection located at the callback URI or PUT can be used when the event data is a new state that shall replace the outdated state at the callback URI.
The cancellation can be modeled through deleting the subscription resource.
This pattern makes the origin server responsible for delivering the event notifications.
This goes beyond retransmissions of messages;
the origin server is usually supposed to queue all undelivered events and to retry until successful delivery or explicit cancellation.
In HTTP, this pattern is known as REST Hooks.</t>
        <t>Methods for configuring server push and notification conditions with CoAP are provided by the CoRE Dynamic Resource Linking specification <xref target="I-D.ietf-core-dynlink"/>.</t>
        <t>In HTTP, there exist a number of workarounds to enable server push, e.g., long polling and streaming <xref target="RFC6202"/> or server-sent events <xref target="W3C.REC-html5-20141028"/>.
In IoT systems, long polling can introduce a considerable overhead, as the request has to be repeated for each notification.
Streaming and server-sent events (the latter is actually an evolution of the former) are more efficient, as only one request is sent.
However, there is only one response header and subsequent notifications can only have content.
Individual status and metadata needs to be included in the content message.
This reduces HTTP again to a pure transport, as its status signaling and metadata capabilities cannot be used.</t>
      </section>
    </section>
    <section anchor="sec-sec">
      <name>Security Considerations</name>
      <t>This document does not define new functionality and therefore does not introduce new security concerns.
We assume that system designers apply classic Web security on top of the basic RESTful guidance given in this document.
Thus, security protocols and considerations from related specifications apply to RESTful IoT design.
These include:</t>
      <ul spacing="normal">
        <li>
          <t>Transport Layer Security (TLS): <xref target="RFC8446"/>, <xref target="RFC5246"/>, and <xref target="RFC6347"/></t>
        </li>
        <li>
          <t>Internet X.509 Public Key Infrastructure: <xref target="RFC5280"/></t>
        </li>
        <li>
          <t>HTTP security: <xref section="11" sectionFormat="of" target="RFC9112"/>, <xref section="17" sectionFormat="of" target="RFC9110"/>, etc.</t>
        </li>
        <li>
          <t>CoAP security: <xref section="11" sectionFormat="of" target="RFC7252"/></t>
        </li>
        <li>
          <t>URI security: <xref section="7" sectionFormat="of" target="RFC3986"/></t>
        </li>
      </ul>
      <t>IoT-specific security is an active area of standardization at the time of writing.
First finalized specifications include:</t>
      <ul spacing="normal">
        <li>
          <t>(D)TLS Profiles for the Internet of Things: <xref target="RFC7925"/></t>
        </li>
        <li>
          <t>CBOR Object Signing and Encryption (COSE) <xref target="RFC8152"/></t>
        </li>
        <li>
          <t>CBOR Web Token <xref target="RFC8392"/></t>
        </li>
        <li>
          <t>Proof-of-Possession Key Semantics for CBOR Web Tokens (CWTs) <xref target="RFC8747"/></t>
        </li>
        <li>
          <t>Object Security for Constrained RESTful Environments (OSCORE) <xref target="RFC8613"/></t>
        </li>
        <li>
          <t>Authentication and Authorization for Constrained Environments (ACE) using the OAuth 2.0 Framework <xref target="RFC9200"/></t>
        </li>
        <li>
          <t>ACE profiles for DTLS <xref target="RFC9202"/> and OSCORE <xref target="RFC9203"/></t>
        </li>
      </ul>
      <t>Further IoT security considerations are available in <xref target="RFC8576"/>.</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors would like to thank Mike Amundsen, Heidi-Maria Back, Carsten Bormann, Tero Kauppinen, Michael Koster, Mert Ocak, Robby Simpson, Ravi Subramaniam, Dave Thaler, Niklas Widell, and Erik Wilde for the reviews and feedback.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC9112">
          <front>
            <title>HTTP/1.1</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document specifies the HTTP/1.1 message syntax, message parsing, connection management, and related security concerns.</t>
              <t>This document obsoletes portions of RFC 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="99"/>
          <seriesInfo name="RFC" value="9112"/>
          <seriesInfo name="DOI" value="10.17487/RFC9112"/>
        </reference>
        <reference anchor="REST">
          <front>
            <title>Architectural Styles and the Design of Network-based Software Architectures</title>
            <author initials="R." surname="Fielding">
              <organization/>
            </author>
            <date year="2000"/>
          </front>
          <seriesInfo name="Ph.D. Dissertation, University of California, Irvine" value=""/>
        </reference>
        <reference anchor="RFC9176">
          <front>
            <title>Constrained RESTful Environments (CoRE) Resource Directory</title>
            <author fullname="C. Amsüss" initials="C." role="editor" surname="Amsüss"/>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="M. Koster" initials="M." surname="Koster"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>In many Internet of Things (IoT) applications, direct discovery of resources is not practical due to sleeping nodes or networks where multicast traffic is inefficient. These problems can be solved by employing an entity called a Resource Directory (RD), which contains information about resources held on other servers, allowing lookups to be performed for those resources. The input to an RD is composed of links, and the output is composed of links constructed from the information stored in the RD. This document specifies the web interfaces that an RD supports for web servers to discover the RD and to register, maintain, look up, and remove information on resources. Furthermore, new target attributes useful in conjunction with an RD are defined.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9176"/>
          <seriesInfo name="DOI" value="10.17487/RFC9176"/>
        </reference>
        <reference anchor="RFC9039">
          <front>
            <title>Uniform Resource Names for Device Identifiers</title>
            <author fullname="J. Arkko" initials="J." surname="Arkko"/>
            <author fullname="C. Jennings" initials="C." surname="Jennings"/>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <date month="June" year="2021"/>
            <abstract>
              <t>This document describes a new Uniform Resource Name (URN) namespace for hardware device identifiers. A general representation of device identity can be useful in many applications, such as in sensor data streams and storage or in equipment inventories. A URN-based representation can be passed along in applications that need the information.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9039"/>
          <seriesInfo name="DOI" value="10.17487/RFC9039"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <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>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="W3C.REC-exi-20110310" target="https://www.w3.org/TR/2011/REC-exi-20110310/">
          <front>
            <title>Efficient XML Interchange (EXI) Format 1.0</title>
            <author fullname="John Schneider" role="editor"/>
            <author fullname="Takuki Kamiya" role="editor"/>
            <date day="10" month="March" year="2011"/>
          </front>
          <seriesInfo name="W3C REC" value="REC-exi-20110310"/>
          <seriesInfo name="W3C" value="REC-exi-20110310"/>
        </reference>
        <reference anchor="RFC5246">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
            <author fullname="T. Dierks" initials="T." surname="Dierks"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2008"/>
            <abstract>
              <t>This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol. The TLS protocol provides communications security over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5246"/>
          <seriesInfo name="DOI" value="10.17487/RFC5246"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC6347">
          <front>
            <title>Datagram Transport Layer Security Version 1.2</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="January" year="2012"/>
            <abstract>
              <t>This document specifies version 1.2 of the Datagram Transport Layer Security (DTLS) protocol. The DTLS protocol provides communications privacy for datagram protocols. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. The DTLS protocol is based on the Transport Layer Security (TLS) protocol and provides equivalent security guarantees. Datagram semantics of the underlying transport are preserved by the DTLS protocol. This document updates DTLS 1.0 to work with TLS version 1.2. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6347"/>
          <seriesInfo name="DOI" value="10.17487/RFC6347"/>
        </reference>
        <reference anchor="RFC8288">
          <front>
            <title>Web Linking</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="October" year="2017"/>
            <abstract>
              <t>This specification defines a model for the relationships between resources on the Web ("links") and the type of those relationships ("link relation types").</t>
              <t>It also defines the serialisation of such links in HTTP headers with the Link header field.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8288"/>
          <seriesInfo name="DOI" value="10.17487/RFC8288"/>
        </reference>
        <reference anchor="RFC6690">
          <front>
            <title>Constrained RESTful Environments (CoRE) Link Format</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <date month="August" year="2012"/>
            <abstract>
              <t>This specification defines Web Linking using a link format for use by constrained web servers to describe hosted resources, their attributes, and other relationships between links. Based on the HTTP Link Header field defined in RFC 5988, the Constrained RESTful Environments (CoRE) Link Format is carried as a payload and is assigned an Internet media type. "RESTful" refers to the Representational State Transfer (REST) architecture. A well-known URI is defined as a default entry point for requesting the links hosted by a server. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6690"/>
          <seriesInfo name="DOI" value="10.17487/RFC6690"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC7641">
          <front>
            <title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful application protocol for constrained nodes and networks. The state of a resource on a CoAP server can change over time. This document specifies a simple protocol extension for CoAP that enables CoAP clients to "observe" resources, i.e., to retrieve a representation of a resource and keep this representation updated by the server over a period of time. The protocol follows a best-effort approach for sending new representations to clients and provides eventual consistency between the state observed by each client and the actual resource state at the server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7641"/>
          <seriesInfo name="DOI" value="10.17487/RFC7641"/>
        </reference>
        <reference anchor="RFC7959">
          <front>
            <title>Block-Wise Transfers in the Constrained Application Protocol (CoAP)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="Z. Shelby" initials="Z." role="editor" surname="Shelby"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful transfer protocol for constrained nodes and networks. Basic CoAP messages work well for small payloads from sensors and actuators; however, applications will need to transfer larger payloads occasionally -- for instance, for firmware updates. In contrast to HTTP, where TCP does the grunt work of segmenting and resequencing, CoAP is based on datagram transports such as UDP or Datagram Transport Layer Security (DTLS). These transports only offer fragmentation, which is even more problematic in constrained nodes and networks, limiting the maximum size of resource representations that can practically be transferred.</t>
              <t>Instead of relying on IP fragmentation, this specification extends basic CoAP with a pair of "Block" options for transferring multiple blocks of information from a resource representation in multiple request-response pairs. In many important cases, the Block options enable a server to be truly stateless: the server can handle each block transfer separately, with no need for a connection setup or other server-side memory of previous block transfers. Essentially, the Block options provide a minimal way to transfer larger representations in a block-wise fashion.</t>
              <t>A CoAP implementation that does not support these options generally is limited in the size of the representations that can be exchanged, so there is an expectation that the Block options will be widely used in CoAP implementations. Therefore, this specification updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7959"/>
          <seriesInfo name="DOI" value="10.17487/RFC7959"/>
        </reference>
        <reference anchor="RFC6202">
          <front>
            <title>Known Issues and Best Practices for the Use of Long Polling and Streaming in Bidirectional HTTP</title>
            <author fullname="S. Loreto" initials="S." surname="Loreto"/>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="S. Salsano" initials="S." surname="Salsano"/>
            <author fullname="G. Wilkins" initials="G." surname="Wilkins"/>
            <date month="April" year="2011"/>
            <abstract>
              <t>On today's Internet, the Hypertext Transfer Protocol (HTTP) is often used (some would say abused) to enable asynchronous, "server- initiated" communication from a server to a client as well as communication from a client to a server. This document describes known issues and best practices related to such "bidirectional HTTP" applications, focusing on the two most common mechanisms: HTTP long polling and HTTP streaming. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6202"/>
          <seriesInfo name="DOI" value="10.17487/RFC6202"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8613">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="July" year="2019"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE). OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration. Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <reference anchor="W3C.REC-html5-20141028" target="https://www.w3.org/TR/2014/REC-html5-20141028/">
          <front>
            <title>HTML5</title>
            <author fullname="Erika Doyle Navara" role="editor"/>
            <author fullname="Ian Hickson" role="editor"/>
            <author fullname="Robin Berjon" role="editor"/>
            <author fullname="Silvia Pfeiffer" role="editor"/>
            <author fullname="Steve Faulkner" role="editor"/>
            <author fullname="Theresa O'Connor" role="editor"/>
            <author fullname="Travis Leithead" role="editor"/>
            <date day="28" month="October" year="2014"/>
          </front>
          <seriesInfo name="W3C REC" value="REC-html5-20141028"/>
          <seriesInfo name="W3C" value="REC-html5-20141028"/>
        </reference>
        <reference anchor="RFC9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="I-D.ietf-core-href">
          <front>
            <title>Constrained Resource Identifiers</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <date day="21" month="November" year="2025"/>
            <abstract>
              <t>   The Constrained Resource Identifier (CRI) is a complement to the
   Uniform Resource Identifier (URI) that represents the URI components
   in Concise Binary Object Representation (CBOR) rather than as a
   sequence of characters.  This approach simplifies parsing,
   comparison, and reference resolution in environments with severe
   limitations on processing power, code size, and memory size.

   This RFC updates RFC 7595 by adding a column on the "URI Schemes"
   registry.


   // (This "cref" paragraph will be removed by the RFC editor:) After
   // approval of -28 and nit fixes in -29, the present revision -30
   // contains two more small fixes for nits that were uncovered in the
   // RPC intake process.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-href-30"/>
        </reference>
        <reference anchor="I-D.ietf-core-coral">
          <front>
            <title>The Constrained RESTful Application Language (CoRAL)</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>ARM</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   The Constrained RESTful Application Language (CoRAL) defines a data
   model and interaction model as well as a compact serialization
   formats for the description of typed connections between resources on
   the Web ("links"), possible operations on such resources ("forms"),
   and simple resource metadata.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-coral-06"/>
        </reference>
        <reference anchor="I-D.ietf-core-dynlink">
          <front>
            <title>Dynamic Resource Linking for Constrained RESTful Environments</title>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>SmartThings</organization>
            </author>
            <author fullname="Bill Silverajan" initials="B." surname="Silverajan">
              <organization>Tampere University</organization>
            </author>
            <date day="12" month="July" year="2021"/>
            <abstract>
              <t>   This specification defines Link Bindings, which provide dynamic
   linking of state updates between resources, either on an endpoint or
   between endpoints, for systems using CoAP (RFC7252).

Editor note

   The git repository for the draft is found at https://github.com/core-
   wg/dynlink

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-dynlink-14"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="HATEOAS" target="https://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven">
          <front>
            <title>REST APIs must be hypertext-driven</title>
            <author initials="R." surname="Fielding">
              <organization/>
            </author>
            <date year="2008" month="October"/>
          </front>
        </reference>
        <reference anchor="RFC5789">
          <front>
            <title>PATCH Method for HTTP</title>
            <author fullname="L. Dusseault" initials="L." surname="Dusseault"/>
            <author fullname="J. Snell" initials="J." surname="Snell"/>
            <date month="March" year="2010"/>
            <abstract>
              <t>Several applications extending the Hypertext Transfer Protocol (HTTP) require a feature to do partial resource modification. The existing HTTP PUT method only allows a complete replacement of a document. This proposal adds a new HTTP method, PATCH, to modify an existing HTTP resource. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5789"/>
          <seriesInfo name="DOI" value="10.17487/RFC5789"/>
        </reference>
        <reference anchor="RFC8132">
          <front>
            <title>PATCH and FETCH Methods for the Constrained Application Protocol (CoAP)</title>
            <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="A. Sehgal" initials="A." surname="Sehgal"/>
            <date month="April" year="2017"/>
            <abstract>
              <t>The methods defined in RFC 7252 for the Constrained Application Protocol (CoAP) only allow access to a complete resource, not to parts of a resource. In case of resources with larger or complex data, or in situations where resource continuity is required, replacing or requesting the whole resource is undesirable. Several applications using CoAP need to access parts of the resources.</t>
              <t>This specification defines the new CoAP methods, FETCH, PATCH, and iPATCH, which are used to access and update parts of a resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8132"/>
          <seriesInfo name="DOI" value="10.17487/RFC8132"/>
        </reference>
        <reference anchor="RFC6763">
          <front>
            <title>DNS-Based Service Discovery</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="M. Krochmal" initials="M." surname="Krochmal"/>
            <date month="February" year="2013"/>
            <abstract>
              <t>This document specifies how DNS resource records are named and structured to facilitate service discovery. Given a type of service that a client is looking for, and a domain in which the client is looking for that service, this mechanism allows clients to discover a list of named instances of that desired service, using standard DNS queries. This mechanism is referred to as DNS-based Service Discovery, or DNS-SD.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6763"/>
          <seriesInfo name="DOI" value="10.17487/RFC6763"/>
        </reference>
        <reference anchor="RFC7228">
          <front>
            <title>Terminology for Constrained-Node Networks</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Ersue" initials="M." surname="Ersue"/>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <date month="May" year="2014"/>
            <abstract>
              <t>The Internet Protocol Suite is increasingly used on small devices with severe constraints on power, memory, and processing resources, creating constrained-node networks. This document provides a number of basic terms that have been useful in the standardization work for constrained-node networks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7228"/>
          <seriesInfo name="DOI" value="10.17487/RFC7228"/>
        </reference>
        <reference anchor="RFC7925">
          <front>
            <title>Transport Layer Security (TLS) / Datagram Transport Layer Security (DTLS) Profiles for the Internet of Things</title>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>A common design pattern in Internet of Things (IoT) deployments is the use of a constrained device that collects data via sensors or controls actuators for use in home automation, industrial control systems, smart cities, and other IoT deployments.</t>
              <t>This document defines a Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) 1.2 profile that offers communications security for this data exchange thereby preventing eavesdropping, tampering, and message forgery. The lack of communication security is a common vulnerability in IoT products that can easily be solved by using these well-researched and widely deployed Internet security protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7925"/>
          <seriesInfo name="DOI" value="10.17487/RFC7925"/>
        </reference>
        <reference anchor="RFC8428">
          <front>
            <title>Sensor Measurement Lists (SenML)</title>
            <author fullname="C. Jennings" initials="C." surname="Jennings"/>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="J. Arkko" initials="J." surname="Arkko"/>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This specification defines a format for representing simple sensor measurements and device parameters in Sensor Measurement Lists (SenML). Representations are defined in JavaScript Object Notation (JSON), Concise Binary Object Representation (CBOR), Extensible Markup Language (XML), and Efficient XML Interchange (EXI), which share the common SenML data model. A simple sensor, such as a temperature sensor, could use one of these media types in protocols such as HTTP or the Constrained Application Protocol (CoAP) to transport the measurements of the sensor or to be configured.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8428"/>
          <seriesInfo name="DOI" value="10.17487/RFC8428"/>
        </reference>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC6901">
          <front>
            <title>JavaScript Object Notation (JSON) Pointer</title>
            <author fullname="P. Bryan" initials="P." role="editor" surname="Bryan"/>
            <author fullname="K. Zyp" initials="K." surname="Zyp"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>JSON Pointer defines a string syntax for identifying a specific value within a JavaScript Object Notation (JSON) document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6901"/>
          <seriesInfo name="DOI" value="10.17487/RFC6901"/>
        </reference>
        <reference anchor="RFC8516">
          <front>
            <title>"Too Many Requests" Response Code for the Constrained Application Protocol</title>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <date month="January" year="2019"/>
            <abstract>
              <t>A Constrained Application Protocol (CoAP) server can experience temporary overload because one or more clients are sending requests to the server at a higher rate than the server is capable or willing to handle. This document defines a new CoAP response code for a server to indicate that a client should reduce the rate of requests.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8516"/>
          <seriesInfo name="DOI" value="10.17487/RFC8516"/>
        </reference>
        <reference anchor="I-D.bormann-t2trg-stp">
          <front>
            <title>The Series Transfer Pattern (STP)</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Klaus Hartke" initials="K." surname="Hartke">
              <organization>Ericsson</organization>
            </author>
            <date day="7" month="April" year="2020"/>
            <abstract>
              <t>   Many applications make use of Series of data items, i.e., an array of
   data items where new items can be added over time.  Where such Series
   are to be made available using REST protocols such as CoAP or HTTP,
   the Series has to be mapped into a structure of one or more resources
   and a protocol for a client to obtain the Series and to learn about
   new items.

   Various protocols have been standardized that make Series-shaped data
   available, with rather different properties and objectives.  The
   present document is an attempt to extract a common underlying pattern
   and to define media types and an access scheme that can be used right
   away for further protocols that provide Series-shaped data.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-t2trg-stp-03"/>
        </reference>
        <reference anchor="I-D.ietf-asdf-nipc">
          <front>
            <title>An Application Layer Interface for Non-Internet-Connected Physical Components (NIPC)</title>
            <author fullname="Bart Brinckman" initials="B." surname="Brinckman">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Rohit Mohan" initials="R." surname="Mohan">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Braeden Sanford" initials="B." surname="Sanford">
              <organization>Philips</organization>
            </author>
            <date day="21" month="April" year="2026"/>
            <abstract>
              <t>   This document describes an API that allows applications to perform
   operations against a gateway serving one or more devices described by
   an SDF model.  The API consists of a RESTful application layer
   interface that performs operations on those devices, as well as a
   CBOR-based publish-subscribe interface for streaming data.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-asdf-nipc-19"/>
        </reference>
        <reference anchor="I-D.handrews-json-schema-validation">
          <front>
            <title>JSON Schema Validation: A Vocabulary for Structural Validation of JSON</title>
            <author fullname="Austin Wright" initials="A." surname="Wright">
         </author>
            <author fullname="Henry Andrews" initials="H." surname="Andrews">
         </author>
            <author fullname="Ben Hutton" initials="B." surname="Hutton">
              <organization>Wellcome Sanger Institute</organization>
            </author>
            <date day="17" month="September" year="2019"/>
            <abstract>
              <t>   JSON Schema (application/schema+json) has several purposes, one of
   which is JSON instance validation.  This document specifies a
   vocabulary for JSON Schema to describe the meaning of JSON documents,
   provide hints for user interfaces working with JSON data, and to make
   assertions about what a valid document must look like.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-handrews-json-schema-validation-02"/>
        </reference>
        <reference anchor="I-D.hartke-core-apps">
          <front>
            <title>CoRE Applications</title>
            <author fullname="Klaus Hartke" initials="K." surname="Hartke">
              <organization>Ericsson</organization>
            </author>
            <date day="22" month="October" year="2018"/>
            <abstract>
              <t>   The application programmable interfaces of RESTful, hypermedia-driven
   Web applications consist of a number of reusable components such as
   Internet media types and link relation types.  This document proposes
   "CoRE Applications", a convention for application designers to build
   the interfaces of their applications in a structured way, so that
   implementers can easily build interoperable clients and servers, and
   other designers can reuse the components in their own applications.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-hartke-core-apps-08"/>
        </reference>
        <reference anchor="I-D.amsuess-core-cachable-oscore">
          <front>
            <title>Cacheable OSCORE</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="6" month="July" year="2025"/>
            <abstract>
              <t>   Group communication with the Constrained Application Protocol (CoAP)
   can be secured end-to-end using Group Object Security for Constrained
   RESTful Environments (Group OSCORE), also across untrusted
   intermediary proxies.  However, this sidesteps the proxies' abilities
   to cache responses from the origin server(s).  This specification
   restores cacheability of protected responses at proxies, by
   introducing consensus requests which any client in a group can send
   to one server or multiple servers in the same group.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-amsuess-core-cachable-oscore-11"/>
        </reference>
        <reference anchor="I-D.ietf-httpbis-safe-method-w-body">
          <front>
            <title>The HTTP QUERY Method</title>
            <author fullname="Julian Reschke" initials="J." surname="Reschke">
              <organization>greenbytes GmbH</organization>
            </author>
            <author fullname="James M. Snell" initials="J. M." surname="Snell">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Mike Bishop" initials="M." surname="Bishop">
              <organization>Akamai</organization>
            </author>
            <date day="18" month="November" year="2025"/>
            <abstract>
              <t>   This specification defines the QUERY method for HTTP.  A QUERY
   requests that the request target process the enclosed content in a
   safe and idempotent manner and then respond with the result of that
   processing.  This is similar to POST requests but can be
   automatically repeated or restarted without concern for partial state
   changes.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-safe-method-w-body-14"/>
        </reference>
        <reference anchor="W3C-TD" target="https://www.w3.org/TR/wot-thing-description/">
          <front>
            <title>Web of Things (WoT) Thing Description</title>
            <author initials="S." surname="Kaebisch">
              <organization/>
            </author>
            <author initials="T." surname="Kamiya">
              <organization/>
            </author>
            <author initials="M." surname="McCool">
              <organization/>
            </author>
            <author initials="V." surname="Charpenay">
              <organization/>
            </author>
            <author initials="M." surname="Kovatsch">
              <organization/>
            </author>
            <date year="2020" month="April"/>
          </front>
        </reference>
        <reference anchor="IANA-media-types" target="http://www.iana.org/assignments/media-types/media-types.xhtml">
          <front>
            <title>Media Types</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IANA-CoAP-media" target="http://www.iana.org/assignments/core-parameters/core-parameters.xhtml#content-formats">
          <front>
            <title>CoAP Content-Formats</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="CollectionJSON" target="http://amundsen.com/media-types/collection/format/">
          <front>
            <title>Collection+JSON - Document Format</title>
            <author initials="M." surname="Amundsen">
              <organization/>
            </author>
            <date year="2013" month="February"/>
          </front>
        </reference>
        <reference anchor="BTCorev5.3" target="https://www.bluetooth.com/specifications/specs/core-specification-5-3/">
          <front>
            <title>Core Specification 5.3</title>
            <author>
              <organization>Bluetooth Special Interest Group</organization>
            </author>
            <date year="2021" month="July"/>
          </front>
        </reference>
        <reference anchor="POLYFILLS" target="https://www.w3.org/2001/tag/doc/polyfills/">
          <front>
            <title>Polyfills and the evolution of the Web</title>
            <author>
              <organization>W3C Technical Architecture Group (TAG)</organization>
            </author>
            <date year="2017" month="February"/>
          </front>
        </reference>
        <reference anchor="HCI" target="https://www.interaction-design.org/literature/book/the-encyclopedia-of-human-computer-interaction-2nd-ed">
          <front>
            <title>The Encyclopedia of Human-Computer Interaction</title>
            <author>
              <organization>Interaction Design Foundation</organization>
            </author>
            <date year="2013"/>
          </front>
          <refcontent>2nd Ed.</refcontent>
        </reference>
        <reference anchor="I-D.ietf-asdf-sdf">
          <front>
            <title>Semantic Definition Format (SDF) for Data and Interactions of Things</title>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>KTC Control AB</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Ari Keränen" initials="A." surname="Keränen">
              <organization>Ericsson</organization>
            </author>
            <date day="13" month="October" year="2025"/>
            <abstract>
              <t>   The Semantic Definition Format (SDF) is concerned with Things, namely
   physical objects that are available for interaction over a network.
   SDF is a format for domain experts to use in the creation and
   maintenance of data and interaction models that describe Things.  An
   SDF specification describes definitions of SDF Objects/SDF Things and
   their associated interactions (Events, Actions, Properties), as well
   as the Data types for the information exchanged in those
   interactions.  Tools convert this format to database formats and
   other serializations as needed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-asdf-sdf-25"/>
        </reference>
        <reference anchor="RFC8075">
          <front>
            <title>Guidelines for Mapping Implementations: HTTP to the Constrained Application Protocol (CoAP)</title>
            <author fullname="A. Castellani" initials="A." surname="Castellani"/>
            <author fullname="S. Loreto" initials="S." surname="Loreto"/>
            <author fullname="A. Rahman" initials="A." surname="Rahman"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="E. Dijk" initials="E." surname="Dijk"/>
            <date month="February" year="2017"/>
            <abstract>
              <t>This document provides reference information for implementing a cross-protocol network proxy that performs translation from the HTTP protocol to the Constrained Application Protocol (CoAP). This will enable an HTTP client to access resources on a CoAP server through the proxy. This document describes how an HTTP request is mapped to a CoAP request and how a CoAP response is mapped back to an HTTP response. This includes guidelines for status code, URI, and media type mappings, as well as additional interworking advice.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8075"/>
          <seriesInfo name="DOI" value="10.17487/RFC8075"/>
        </reference>
        <reference anchor="RFC8820">
          <front>
            <title>URI Design and Ownership</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>Section 1.1.1 of RFC 3986 defines URI syntax as "a federated and extensible naming system wherein each scheme's specification may further restrict the syntax and semantics of identifiers using that scheme." In other words, the structure of a URI is defined by its scheme. While it is common for schemes to further delegate their substructure to the URI's owner, publishing independent standards that mandate particular forms of substructure in URIs is often problematic.</t>
              <t>This document provides guidance on the specification of URI substructure in standards.</t>
              <t>This document obsoletes RFC 7320 and updates RFC 3986.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="190"/>
          <seriesInfo name="RFC" value="8820"/>
          <seriesInfo name="DOI" value="10.17487/RFC8820"/>
        </reference>
        <reference anchor="RFC6943">
          <front>
            <title>Issues in Identifier Comparison for Security Purposes</title>
            <author fullname="D. Thaler" initials="D." role="editor" surname="Thaler"/>
            <date month="May" year="2013"/>
            <abstract>
              <t>Identifiers such as hostnames, URIs, IP addresses, and email addresses are often used in security contexts to identify security principals and resources. In such contexts, an identifier presented via some protocol is often compared using some policy to make security decisions such as whether the security principal may access the resource, what level of authentication or encryption is required, etc. If the parties involved in a security decision use different algorithms to compare identifiers, then failure scenarios ranging from denial of service to elevation of privilege can result. This document provides a discussion of these issues that designers should consider when defining identifiers and protocols, and when constructing architectures that use multiple protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6943"/>
          <seriesInfo name="DOI" value="10.17487/RFC6943"/>
        </reference>
        <reference anchor="RFC9193">
          <front>
            <title>Sensor Measurement Lists (SenML) Fields for Indicating Data Value Content-Format</title>
            <author fullname="A. Keränen" initials="A." surname="Keränen"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Sensor Measurement Lists (SenML) media types support multiple types of values, from numbers to text strings and arbitrary binary Data Values. In order to facilitate processing of binary Data Values, this document specifies a pair of new SenML fields for indicating the content format of those binary Data Values, i.e., their Internet media type, including parameters as well as any content codings applied.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9193"/>
          <seriesInfo name="DOI" value="10.17487/RFC9193"/>
        </reference>
        <reference anchor="I-D.ietf-core-coap-pubsub">
          <front>
            <title>A publish-subscribe architecture for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Jaime Jimenez" initials="J." surname="Jimenez">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>Dogtiger Labs</organization>
            </author>
            <author fullname="Ari Keränen" initials="A." surname="Keränen">
              <organization>Ericsson</organization>
            </author>
            <date day="3" month="June" year="2026"/>
            <abstract>
              <t>   This document describes a publish-subscribe architecture for the
   Constrained Application Protocol (CoAP), extending the capabilities
   of CoAP communications for supporting endpoints with long breaks in
   connectivity and/or up-time.  CoAP clients publish on and subscribe
   to a topic via a corresponding topic resource at a CoAP server acting
   as broker.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-coap-pubsub-20"/>
        </reference>
        <reference anchor="RFC8152">
          <front>
            <title>CBOR Object Signing and Encryption (COSE)</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="July" year="2017"/>
            <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>
          <seriesInfo name="RFC" value="8152"/>
          <seriesInfo name="DOI" value="10.17487/RFC8152"/>
        </reference>
        <reference anchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="RFC8747">
          <front>
            <title>Proof-of-Possession Key Semantics for CBOR Web Tokens (CWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="March" year="2020"/>
            <abstract>
              <t>This specification describes how to declare in a CBOR Web Token (CWT) (which is defined by RFC 8392) that the presenter of the CWT possesses a particular proof-of-possession key. Being able to prove possession of a key is also sometimes described as being the holder-of-key. This specification provides equivalent functionality to "Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)" (RFC 7800) but using Concise Binary Object Representation (CBOR) and CWTs rather than JavaScript Object Notation (JSON) and JSON Web Tokens (JWTs).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8747"/>
          <seriesInfo name="DOI" value="10.17487/RFC8747"/>
        </reference>
        <reference anchor="RFC9200">
          <front>
            <title>Authentication and Authorization for Constrained Environments Using the OAuth 2.0 Framework (ACE-OAuth)</title>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines a framework for authentication and authorization in Internet of Things (IoT) environments called ACE-OAuth. The framework is based on a set of building blocks including OAuth 2.0 and the Constrained Application Protocol (CoAP), thus transforming a well-known and widely used authorization solution into a form suitable for IoT devices. Existing specifications are used where possible, but extensions are added and profiles are defined to better serve the IoT use cases.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9200"/>
          <seriesInfo name="DOI" value="10.17487/RFC9200"/>
        </reference>
        <reference anchor="RFC9202">
          <front>
            <title>Datagram Transport Layer Security (DTLS) Profile for Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="S. Gerdes" initials="S." surname="Gerdes"/>
            <author fullname="O. Bergmann" initials="O." surname="Bergmann"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines a profile of the Authentication and Authorization for Constrained Environments (ACE) framework that allows constrained servers to delegate client authentication and authorization. The protocol relies on DTLS version 1.2 or later for communication security between entities in a constrained network using either raw public keys or pre-shared keys. A resource-constrained server can use this protocol to delegate management of authorization information to a trusted host with less-severe limitations regarding processing power and memory.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9202"/>
          <seriesInfo name="DOI" value="10.17487/RFC9202"/>
        </reference>
        <reference anchor="RFC9203">
          <front>
            <title>The Object Security for Constrained RESTful Environments (OSCORE) Profile of the Authentication and Authorization for Constrained Environments (ACE) Framework</title>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="M. Gunnarsson" initials="M." surname="Gunnarsson"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document specifies a profile for the Authentication and Authorization for Constrained Environments (ACE) framework. It utilizes Object Security for Constrained RESTful Environments (OSCORE) to provide communication security and proof-of-possession for a key owned by the client and bound to an OAuth 2.0 access token.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9203"/>
          <seriesInfo name="DOI" value="10.17487/RFC9203"/>
        </reference>
        <reference anchor="RFC8576">
          <front>
            <title>Internet of Things (IoT) Security: State of the Art and Challenges</title>
            <author fullname="O. Garcia-Morchon" initials="O." surname="Garcia-Morchon"/>
            <author fullname="S. Kumar" initials="S." surname="Kumar"/>
            <author fullname="M. Sethi" initials="M." surname="Sethi"/>
            <date month="April" year="2019"/>
            <abstract>
              <t>The Internet of Things (IoT) concept refers to the usage of standard Internet protocols to allow for human-to-thing and thing-to-thing communication. The security needs for IoT systems are well recognized, and many standardization steps to provide security have been taken -- for example, the specification of the Constrained Application Protocol (CoAP) secured with Datagram Transport Layer Security (DTLS). However, security challenges still exist, not only because there are some use cases that lack a suitable solution, but also because many IoT devices and systems have been designed and deployed with very limited security capabilities. In this document, we first discuss the various stages in the lifecycle of a thing. Next, we document the security threats to a thing and the challenges that one might face to protect against these threats. Lastly, we discuss the next steps needed to facilitate the deployment of secure IoT systems. This document can be used by implementers and authors of IoT specifications as a reference for details about security considerations while documenting their specific security challenges, threat models, and mitigations.</t>
              <t>This document is a product of the IRTF Thing-to-Thing Research Group (T2TRG).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8576"/>
          <seriesInfo name="DOI" value="10.17487/RFC8576"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA81963IbWXLmfzxFLTs2hlgDoERdWpdwjNm6dMsjtWSR7bY3
HOEoAEWyrEIVXFUghenRPo3fxC+2mV9mnpOnUJR67P2xCruHBFGnziVP3vPL
+Xw+6fq8Xv9rXjV18Szr210xKbctfur603v3nt47naybVZ1v6M/rNr/s52Xb
X8770769mrdFR783/fz+00m3W27Kriubut9v6ctvPl68nqzy/llW1pfNZFs+
m2RZ36yeZX/YF90f6Jduv2mLyy5+QG+um768LIu1+1bflqs+/r5qNtvcf9A1
bZ+Os2poOR19q4iftZerYt31+4o/q5s/yGTWxba/pg8e/mHSlz3/7cdduc7r
VZE1dfbx1fnF5a7KXhZdeVVnl02bvan7oq2LPmsus4vrsr7qsvN91xebbpIv
l21x82z0qeYifq0t8mfZxenFxx8n+a6/btpnk8mcNokWcLbI/lS0//kfdVHT
/GTTz9rSf9i0V8+yV7QlXdfUsj1FwbuBhZf9/ln29017k3fYhzWv9t7pw9N7
si+7um/pG6/LuqJjp4+KTV5Wz7K8LRefijand/xdoYMvaKfDzN7RzJqbvO9W
12Fm7/K+vy7zzv8F0zsvi01Rd252//s//+O6Ktrb4ip7FOb5v3dXYZIvfpo/
fnDvnp/k+W3Z/7lo04lu9J2LT/rOv+vkZcls/7TIfsrb/lMR5vqnKt918UMd
7Rq//922bf6tWPWrpqkW62IyqZuW3lPeFEyyH1+/ePD0yWP98en9+/fij6f4
kc6b/5cISkjorF1dlz0NuGvzKjtnmusyWkXWXxdGFUQ+Pxf9bdN+mi/zrlhn
581lf0u04Z8uOgxrVMI/6wI/LugMi2pNBIiP13lPL6b7eg+/dnSG9B66d8+y
D9eLl4vsJV3Nou1pVU09y36paXFtR6fAE3mRVyVRaV3ms+xNe1PWhS3w+7Ds
ew+e6o9Pnj7Ej78+eLH4+OrFvPhczk/v0bY8CDvz6PTh4/DjE/v08YOH39sY
p0+e2KePn9oXvj99dGo/Pn543358+she/fj0nn3hycPwiieP7z/wE7ruN9Uj
ntLD+/dO6TW8De48fzq7ePX+7Dw5MT7C7OzDmy7bENvLlkV2TTys7YvP/Xzd
0oP1X3sQ2ftV3yyLls/kibwqb6/4Klz3/bZ7dnLSNvvF1bK8YcI9IZLP66uq
WJ/w90/AV/Nt2c15PvNlMR+ZD+/u90/Csdx/YHvz+PvHD8KWnj4J+3j6KGxe
+PTJadhd2sdwVE/v2fY/eXQfG/1m/nKx5H2sa2X+Xb+1P5QFiYS8W1/O63K7
sk+viebb4rab/xtxkzndVbp18xsitjXIMH6NL+F81bQFrZn2Rj/PN92u6Dr5
wypfXefLqpg3Hf+evJh3dEl71eWXxXxT0Bmt57fzZbPeK1nML14mx/1rsXT8
+/jX5mIqv/DtXLXllqd314mfEyfMC3of+F34+II/3pT73H9IXPPd6gWxFf/h
Py6yF7TmbVHn+8GXHSM1UnqanW3bsiI6Or03Ske3t7eL2wcLYrwnFx9PbkkY
97yU+Tou5YR36+znM9qcdZnPWT53yYa848+zC/784B36ijKvc7wk75iBEcvt
uxM3nv958ZnvoL30RXP2Qd6cvJM/pv+QPK37+Wvc0L/u5aCLbd4SfyeZfPC7
TOK7lb7hMrzhRVNVxF5pX/7+/P3PgznZn/6G/0Yn87JZ7fh1mczwLqKgszvb
7Op1p5xCzu410RnxoQdjy8r167j+fh9XYQ4nMmc+vR8uXtDqbh4tHjwbmQKE
7g/Vruibpr/OzrfFqiTJA12FOEn2Y9vstuk6SdDga5flCpcxo6HdzO8/yP5+
V+2Z6u7fSXVLeyPW0PnhOvyqZ5L8Zf5o/oBX9OH9239+/ebt2/M7F0QXN7so
Vtc1PVklYlEWlB1fnP049cv60FT7y7KqorQtbppqh/XRfecP6Oq7Zd77ns+o
3eUtL/X+99+6YMSc75/0+dUJqcQnW3sbL+enF2/uXAjOIceRmvh/TUqOcEE/
/wua4Kt6tV9VzRY3kib9045YLt2hzXZHo/ix8GRL+vQpLfbVepHInxGis7WU
cQhmEjQdrK0q+WPe3pNl03w6od2aF24y84Y4LSaz0snM/Ug0iXmxnkxINu3A
nkXDgqj4OzYZ+CX08RUf3TNht/O+meMH/rzsr3dLfeAkNS9Ir5vPs3xJ2iS9
bTKhZ7psbTfziuRhl12Z3s76tiyLGfqIvn78hvl9p+p4f5339ExVNbcgEGK2
9arcssqmJPOx2NJE6E04L2h0tMnZBWnL3SUdyTFrD1PS673WB0tjkaUzpZ9z
ekGz3q16G53NpOFufKTX8XCBztlYmC5kGzblel2Rkvodr03GYmKYXPzuqWYj
U81++43/9uWLTLKTHeNNLSpSCOVGLZmZbHHiK/qId3q5K6H8ZOuSDbUl0cVa
lCfwNNvmxeSMlt93GTOE5BXEn/lYiZS6WXZ7XdKqb68LMpt2FV8uGo3kJAl+
nGmLn2gHWRkqdQr+zZ1p0frerNvRgGSidMRD8mVZscrLS9k0a2JJ+sli8iu/
ElqgO38ehxSSisxRshVxWuugvdvSZvicdn1X4YBpAjQUvY2nbqYgv7GsMxJO
tHO7Km/pE9Y3lfB4/2iULqE+GktHycM49AhRwcvykg6TCYp2gozYpuKv1qy2
7tiUILvpOjyiGzGjk+ozInWebV9uCl7DbVv2+m7aEDpbutkbYlJxWN6Cny4u
PjB5iPFDFMKrgfTGh6y1f/mymJyXfPvcTOVp2Y+qvLrubwv+Lx7XM62ahhZN
Fh9tMs2DpiTThZHf1AWIgma3l7PIrppmnV2WPc79hozWhoy6O684zk7lkdEW
ncJVURdM93m54Q0BEyMqrFno6mZsr/cdpA4ZaJVuKH9+Q4xsZx8vcOWuGvod
d3lw04limDNlZN6Vq7vY0+CUsDfYOvMa+DXgrxhz22DW8rUNrpQZOWS3E4WE
F+ie2Xt4SN3iOsf1JyF/TfeD+Ppej58UdNwtrJqkO/ENVpjDTWZZRMeBO4E/
yxlln+iYSEln9kDmZ0eUDhaKkQ/fTwRer6od2f6Tyf/K8hXezSKRJs2rCnyB
XrQubsBwlN5On3z5MqOrLjOkIWdydWnT64bIoKY14SLwOHzxQVtE/scVi8Os
3m3YMmPmQ3ebaIx9PbkssmjJMJ7qbanoHX6MdXNbZ8fFJeky/Jx+m5/2s62b
dTHLisXVYsbkxtR2tcc3dput6CJtVm7okm+MU4PeK7Kk+/2UduMyXzFfks2I
r+uNjTf81mPcrGn6anEpCKX4O0c3mjaw4/HKw9kSsV6TpLm6Nucanu8wR9Yo
8sy0Zzqpm6YEwz+mVdD1qYqcGMemrMtN+Wf6fApaqAvdfmgMmVMUwqs2ZNHR
DOakCBEJsRdS2Lx7nfLN+Ow27/mu8zzAQey+KkkTQbLCRxfkqs3XOxB3WeMb
l2ykz1gS8G+7Tv44pIeiXuNqgZ8yLTFL3bJOhe0gFp/XBfGcak8zuM5vcD7h
GagSzKiWrIUbbWErQSgdC+0Lkoxl3VQN0cRv33XFak4r2nRfVKvpRPXPis/b
ig6IP2BrgG+bexBvYgGBC2vkrkuFxfMZ7NCu3Tp1RYarTEZNMq6Xx4E2eAFG
WHTtisLfQ2KC/vmaBWthzFy5sSrjJdHLJU0BfJB49IcgxmfZ2Uq5NH/31Q1v
3DS75dPKP7Ey0DYbeusfU18D/T9PYCIPP5s8y86yTyUNwOI5vEk2i+XjtmFL
sMTJm6wkkqFJML0RB2BXIT29ZT0Y95TZAhYR3kIqFkt6eVmbqFsZ/8QUlrM6
QOKLRNtyD00HbALzWDeFcKnwLH+52bU00Y6VNWE9TqdQPdFfgyCPmra8Kmss
KF+v6QFeko3Hcw67gAkTWQnTwQ7ptSRmw1KaNQq5su5NM6KcyxKChJW3bUMs
hC8pbV3HXGyTf+K/rYgJ0FUnDbqUnWaeed3sqrXts8hKJjUmW+w8CQ6RhtCr
aB09CdIwo050LPHKMIk/n/D35PeN6BHMnukSOnHt6cs0P9rOHqRF6milFEYq
I12vPd2AyQtiQ7I7pI2soA43UFviIW5oX/Mr58PtdkvjOKCthhVx0pb4Ufri
jB4ljbS4ySt9HW27GaFhMLqtZc8TAJ+QGfCFkzGJMtYdjfPvO9K5oUwoD8GA
bbEqYPXYHLvnvPUsjItLnv61Mjo6OyJ4dn3yEHayi8mbelwkO66Cs1HpoPsM
TYOmxzeD6LMhSjguFwXJOfrGUvmeUjtPU1jgc+UZzOuc5VF8+TINyxdDhTeB
6QQXgfSJbS8XSMahN5A4I25gu7IQltnvt3z44PXQKGTpq13LOjJ9rMIPV8Nf
WFFb1A5hgr8pwtjyNxqejnQv1GB/YOt4k7OUPf7l4xs5db06Vc42ejj9qRy/
0+GCL0TXeCxqglAeK7QsAzval+OfiVkJKUCzjNbA0VkcTrbtiGnJ7DdTdJkC
uob0/HyzLEn77CEKmTu3dWoCs73VFoFtiNp+TVeMtm69J55IszXKZ82DpqGz
V9bkDTC3VqMN/xGem/JqiFBVsKnY2tV6Q3h8TxVC8h+NS+pn+sURKUsDQglY
L6ZEXuL+g29T7hjPFWoDpELLgRIxgGCvsg8u21a7LkqLLPoUA78acH7RVwLL
OWL5ewIB/pw1YiKxv/3l4vX8ydEizujn4qrB3RTRdQHfg5jWvLh1IYLZVJwj
Nr6PRl4c7wfs5uJz7p7SSxDPK3fi4WJg9vEqOtUBMMU6ThFEQRJbr8nIIvSU
7v4C7BI6djZdRSBdNCwKWBKR/k83lM6Atqsuu41dDNietEY2N6eehUUZGMQn
Vkc3Mn0PlEr6VA6ffoj6wJLt+fBF0g6FXkclbblmYuDIdHxhGSXiYkL3FQTp
Z5yBP/DOrdMJmXmAE4NFDj9dHDqoCWQTdCwloBP9l1WcYxIYxg6nWbPsc5Y+
0WTM8iXbR7c8zDXd16KW51QA23RNdVcWv9111zQ19ozLzJzfR2WizEys/S5S
Kg0teiY7wiBV1ABybFZf2bBNWV8VwqsPyZj32jS4wFxpDL7XMrnbvF0z6X7e
qxKEA8Y026hKBz3bSZxZMBRuaEnCpGnel8RPVUNsd1WhOoUnqz7vPskOkoYU
hQorlMviOq8ujXXKe1SQbXI7NJLLM9xtvs1bppdAKbqDVb76pHIu35pjy94n
1wLvZL2t4Pe1pkOUK/uCqjdQrmnJrAgxMyaiKvBtkmq7lfsiu41mZgpkS1r0
bbnur2fq0RmaubT7P9Jx3eZ705aZO8N991n3nX68KcXGcMooCK8mYZl6RwJ7
rYqrfLUP4otZYMVmoeo5HDJgc6R0SmAMjpz1KquYJC5LVmHOLkgY0ig/8hqI
eka+8iN/ZzE5J0UGaufRR10M6IrZ+k+R9l8I7fOq37g7potdJ0YBfc56cy+c
kJVs50F7HugPjE3NYbk2cAjFpx2DydQ/lsf74FjaIjucqfAoUYZIBanKPxfr
Exqq4dl6nZqodsy3O3mzLjbCerJ3iL/KiUssVvULtp7Zs6mslO9SuBfKZoki
9BEyKILPtSPhSxdQLI/UWBJri90aVSFnrUPynNwt5+mcDzyLTOrjCis020XG
h32U8I+jWXakJH0kVH9IB2/L+tNfzw3r/Ka84gVFHTdoY6J6tcVy71mhPott
0NeS9K2E1IK2U0fBZQYowsKkTAjl0EgVPzoUQC0PJaq/1yPC34+DH4BzOUSV
j1FkfTfCv21xRSIM1qWqXqmaxFHaI75+R05RPOGUgaPAnE2OVfmyqAY6EKu5
+kV891PNXjpb3NBED1YprgT9DUorbbFarzSAEj4WFGi5dm6BvOuaVQmnEAjX
6VR0o6BKCRkHH2f246uLWfbhF/7P+/MLoZ2Xr96+unhlO8nWkT715Yt6iUlM
V2wMTN7DzieKZEpVNdY5FcpOgxOXsPeICeop8TDD3aI7zGzmgMAyvp8bpkFS
FsptGdwE+yBL5GWs2K1BGQii7NPhYFuC3vOun3lZy/z42M6ehQB/sIIX8Ap7
6Oc5hSilnd5tVFyxtSlxF6xcXbTEWFhNAp+4e81iDbOqyWGE1b/vSlhsLPii
G0UHpu3+qp4r2z+mIkftVTieMlQ+JtEuuoNlZpL81YhsLz5v1Yezjdx8oCm8
9loBbdEgSMDBlGoN9wFe5g5OxsTBsbq97YdmT3IBaYRN9Te4hrIj7Kvb/5c1
0JYY+gwBJ0x7fULLaJbYHdPqvLPta3bEX3cAxifvOgDVfiriUVjSDd25XCRN
QkNiLuFrpKcNtDPwE9z0VLqXtWg2JexIU6ToilyqG5rlzpUGjJiOO3pZBytj
uXcOnPjsgQtDPW520uyYsZiQUo5XjgaLmjm11wiRmFAOJ7yaYHFHIql007he
Nd/j4iZpFDqwKygWucYAcucBTfw1mXog6zUExqG+f6Bra1SEb7RJTz306BRY
TBAh4l2iq98dMAjxX7GmrHlTS5g9myKvg7OgVzVGEgTDNonXn8O4xNUKvWAx
qKHumHGHgYq2BRmsZHOtxdepaQgSgkUkRXh0UPThMZfZ6B7k63WpEf90XiwZ
eH82ZQ9BVzX0Cmc6+0kdnJzmPNkB4n7A4JGgmJ4oTzrVyhaT97Ul28xicJmG
vskr0SLu2IyfLt69pacRc3ROCQ4FmSSFVyVDgIM3xf4cyBd5W6qYPHrK/rB/
evd2xlT18eXrRfZrydlx3uk5s5C9hr5GR5xlL354/1HHffoQ4yJU8U9v6MOx
VFiOk7fm/J78vsQM1TTG0jN87vmc45HFNzMuJuYyM02Q1V+W/pYW5nway735
Ts7qPfIHkzsmgREjNudCOvPuF95FEln5ttuJ8phnpEaICJObzPxQJ0j8VPy2
ThMRduli1PJG8wUwW627pp0l/IJoahc0g/hnttbN555rBBlkMO4WYxdUv8v7
pnUbF73SZxLXMpYaAiFddEbGnbCbF8U5Kxe77bZp+wMntNHbIrxVkjlU1ZcZ
LotVzvahhvS8PReMJ05FkeXtDwcQpSjvoADu+o6OPqQ38YBYne3zctdxyg8Z
2mREr2KoOioqptXwMCHDhmWhqHJyDn4jv2KQINAqtsZ1kfrKi01eWxqB21/V
mM81VPpgcR8bI7nkYookZtmdbh/2dOVtp1akKtQN23ud0x1E0zTJ3HnvSscX
R4NgrAWz5RF0Lgx0qF9mx0o94lVKBDYYX6oyTzXgs6322NzVilQuNnj3cvu8
TyWkH5nW5W5j8JqIC6iDa42Otm1uwnmqH00VOs0IEAV9ph6kkLiTs8pQ0Vdl
Vm3D7lsz8TW2z0zoPL8sxpwCw2io5E/VsDeEZpWAleTSPYQ7zOVmeZ408WZS
jKix6kZ0qVfBvIy65ORUfQx4pkqEROM02EYrX30KprFEIP5/iqlBi5b1h9Bo
GcKVnH3HPqyo2A2ivpJfkpunbxbcDyHnIgnXDl3lg+SpkAUCbdOIz0wAULzk
CfDETR6GDDRxovnMOdU3eYvXzYaUgZnPV1syOcOjzkMxx82qfB94TRstkpBN
A22pWf6b2Af12hx1WeQ/vIZAEp2RJD/oJ40X8YQ/FvNdJ6mKNO+ghzsrTeZ0
MJXh14IDD3MsQU+7TpksUmbatWlm5nIIclszKMfDj3E1tIJf6hL+88Cu30Qe
zTFOUUyyq6pZ8qHHP8pdCpb/eaDJXVuaGwMErr4Metfku+wHzojjZJjv0qxu
SYdJyHmCbDPJBBQpMPAJq4cAXJS2+bbBFeqEQQTypNtgNoForjAJXlRcTrBy
ZlhnRg/ngi1bUumJu07Fa1Dd5vsu5NhER6F4j3Ilu/GAu8+li6mNC/PrWODy
ii+eXj8f2upEql+zFo2AsswlvFTZA88GKWdicuCZ21y9wTFoPjmXxC7coELv
o0lxTYQs1irE5UaYbsQXV4I1knYkewvpr0tgEfF5y1mdkvEzYAaeYXh7xvad
jnSrWehsfHX0vxs9tXXDAfaGGK95U2PkY8pTcIR4ZkkBZqKrjudVSznBUvyw
zW7tgiMwThHDp5lJQpq5ivyu8DbkteoKYYtSl458P03PPIsGOe+hTAuv0QSS
mAXLvhxEW7yKIs4NrEVGt/xIeH1k34Vh1IlHezL5P4f/uEzgX/VfNv7P/vyv
9N2/2Id/Gf1q/PQv+PIvfLWy4xfT+eG/4/NpphdAvnwGT8jdI4tcly/blO74
cpjyXyZKWedqGwz+6V9f8nadcyLHjNgCU8O5UMN0ZHTe+ZfY8unojv7G9bRS
20kG8lX9t0cr1p7bo+w7JAODxc0/S9XH3x5JrsNcV8cO5F2t/ProSxLH4IsS
tHHRDMDtLK9xb4lBUT+NKlPgVaLJwr20Yf21JBaq+QJEOE6F7Q4I6ILfsW5Y
ZZuxx7yAIxZ8aMD4aMw07hlG11FEUTVRa+FHp5Mm6SZyH7x+ymdpzDgX0wiZ
wN01Z3qOpg/LJW4aSUn2WURqMkEtgjCuxA8es6/WIefeBFBQOmaqP7FAZhuT
zgIlb8gEgGI8N2/3b7/9kR0I975/JImL/CSshKC/5wM7xYelBy5DZxRKaNpr
DizmjIm4gDVpqXBk1fbmRPE9jE/H1w1XGQLSqROTHQtcry8zvizb4pYPUNxG
pvDdljTt0Qi2RqvN9ShZFHJ+YPsmcGrLs3Dyc3o3g/NcbMjU7uJ6CdtLeNtf
BqzuDo41YIbyiWeIzABxu+d3cMghi5QhEjZJ/zVSuXsWjnHik5R5RmZ5Bzcd
Y6eOB9ppvQCpw+Ieck2nVclc/juMMw+M07NKUbHScO2XyZiJbDF1YjRNF29W
amCaVs6VDkgijHy3Lm6zywI6SkwwGBjEZlBJKisHeH06g1pB/48SGi4uTjg9
gZhLrBJl9vJG7meFnHkwyVmyGaWm+tl+aH7hlQS4iS/+EBkMD/SWbRZGKgh8
RQu3zC1lqYcdK6dib5n40HR6NlqXxb6xPFqNkqiFbJpn38zuCI8gmdZ8Bqgx
ECM5v81jvEP8Biy8pDyOv6XOjMHyv8owfjd7OOAok/T2f5M7HDCUv9gIX1Of
EvbxGfzk85BbfEOnOuQeB8ziG4rWIfMY4RVfU6j0K5pVMY2fvJU7IcT232EX
y6+wizR7I7U20yiB6itj2teC7Oeq/FQMHHdOQQo+2d6ys5y2lLtMkOOQ9GZZ
E5ZhsCZJuuJc5GiqvWg+voom+0v7gpXqff+YgxTitUvt0LwWSzQagFOz8njc
lBFqySCScFA3GOeo0VuxQeCGB+8KOl30qUdmeKeQ/tZ1O/gXr9u3btoY2dtP
9LDUFNxxyb4ukm0g/vB3zPckuV/uav3LNx/EZN3VsmPgf3c9rQ/qNw8phWvn
xSya2jADnhZe7cdMlCL79y9+U0eey8bUofCPNj8ew+ha6GFhhocPx4HpGEaP
jMY0Pnj48F+j/KSTVu4m3oiqaKfjf3XpohdNU/13eNnqK7xMnKjMxL77zmS0
1IFOpLx57YpCUy/aTEPO5YYlQcFZHX121YgMbWJJ19A9ScwiKb6WlDzmJJ29
quxD6XSwoKIHzFzdI1n8U0m46ArSC9ZuWpLrVKthpLpWXFqP4kNOJudnxkNt
4qTS8EKSBR0rk72jyrIKoFzEuUelIvidaKMl2G9+O6Rvh/yyIAcsMSYJEqoe
GlNHumZuFeAxB5OtItoS5O/k62brKihQ44gczQSmIVnLb7/99OINa4dnLq0z
JMNLaiAGjMEOY/hj2SiaPXNbVNVcEu9s7cio5aRymg+nCsdhZNdywfcYou7E
EmqE1ecXL9mNLG8JMnCaBFtCHN9nqrI+GDJYu5FcTFoXJz52IYugmz6b6CcC
BvHNrEwJHCnBGAn3KBneSMxtNLXdSVBNoBvPZs+Rxs6Lnbg4DtygnCkOr0su
v9PWL6FIhB1g58ga99Slr8iX9bQbyfJnqrvlam29PDzUcxr3U7G/bhDK29tQ
FtkOaQHsjeX0Bs5J01rPGJ2ZWcqdOxXNcI9ZxnBc3Tb+fLCrsVxfsj4sFOOC
D11IXDcGvM5umlW+5CjR3jZZUKcYe2QaEh3vSKGOx5ZEeDX2I4yTy6pp0QiI
8iUoVuLFXUzei6uKV112lg8kiW+8Uk6v0CjLm5Do7lI/d/LHeVCUvnyZ2iZY
wvAALSFNdkqYZ5qPHusTt6yThfQ94dcaq525nDmt+02KwtgoFRYisdqYNwo7
udREy1byifF9nORCK/y6rN3VsjmHMkPnECKfqZyZMpGqQ16yjQZJbK663eJy
M72hDl4jpqyFi88hSOBW9oY7sJGUZ1LwrjQIs2paYXdIz4qL1aIN51BYcxQq
nepBsslM73z4Y7Pdm+Ea8iB93mK5LrS+xPLcopi71UcsUT5IDkgDpjUamb82
THebzzPSSK4lLCpoJZa5ITGQAJESJppMzud/OCLWceY4j/WwxFNGYKa82ZKC
kJZpDioKgyRK6cNILuTf1JwH5glwXTA8nsvtHeP8t5IE5l7/lSpRYm+7lveK
mXlUVZgFSvGxC/H+rrJIevOg3tNnyliilKtkhRTZMl5jh5RXCVhL0tJhuWVM
/oPywSx5jexCTehmZk72GcOY6FqmSsrK1XkGFnI2W1NdsA5TTnInkimFTKAR
x3PnIDWsqDR56KspXWlysDq2ROmbqfuIvXltn0s5xVoE2q7srgObPPIVE0dS
vZHmLWpNx6ei2EpwpCu49JMTGl8njARpYRVnSEUn2Cy5tUK1miqKQmbES5s6
potcSC6GZXLCw5WRxOEUi+7aqvS7a0CtHNbqbXNVLC93iJYmKWF35sFmxwNv
H+8wQHunIWuTuRhDN6oo44oyV4meZ8tSa/ZovCVLpA7IP+zqiKUCWDs89pzT
U1XKgOMqopLOEAxy91AQb7MAezqYh8WZIyoKFgd0J45+y1z6GKfSKHkjxxqz
i2QXJSoVzuSjrZKvQkF2lySx+5uM4HxIdGKDDVyU89u7mFwQAiWk7a0uFwP3
8FRUpiQJFWt0PlUiN8TTkaK/aXRrS4mHhwxcvCqBkomqU+eyZtTdLRdkCK9j
e2oqk1w5KAHTpLAa0gFy4i4gnbt9DQvYpV/JNNFy+qmmgSCDhDTf2k08h8Ll
gU0YQ0vBTUorSSmE2EKCSMQaC9qM7ZEvVlDut6KT1JqgE1iWFUqElGdJMR6y
ukH5kqgmT1rKQHhWMMaQ//t71u2Tk4LGHRWwA2gOKJdWJeJMCFGL1cdnn+Lr
+fqGAVc6mBkGY+Aeje7CNdkrbsglByKBSFfUV5rYJ26Oy6Z5dnKiWRaMA/ns
yb2Hpyd8S07A2P7IucN/i/z8/ruaNk0f/Bd4iP7lX5N/J/H3k2zw84l5X7yf
JvHZjP8iXhvYAQU+EIRGjjbKvy1pQvZlWFy8rDa/4ivFphdXXipiHf1ZS3IC
0JVGOoir0Rs6pTy6i5+lHEuMabhkGUUacRkwxg6yGTLumqgAWU+AH3EvuWT/
cPQ4PNNVzOISZpj9TOatOq9O3edpHYMmkIUPRwmDcYqkFPgm96FYHZWUVQFh
IXo8UG3l+bbaqcD01fRx22m5R52i6gCMPU0XU2SUS6ALWrleVNjda3UhiZ0c
VDja+/ACcRnF8w07gLg6/9xr5q9kWnWJ8haGmSVKiXLZI4bONDonc/LI9Owj
YGse6bp5BzhPiweLYWxiVcQ3/n3HQNucsSqJi3gj/CScA/TBIHwyQeIkU7LZ
SrUAPSsbY5n6w+RG/CjceJbE9AIMWp9sTNhc2THcAD4Oe6HeA5PfolI2Xz8I
2ikyZoL2K9sxj6on80+WHWESqq8eOZzfdH87+HzMaxgfhM1y5CFN/XPT51l5
yboUVkWDMGKeYr20TeNqWPkFhpokGzF2d9SUB6sV26sRYBXedIcsG5moUU9O
7J6ztaXs4byo373NPnDm8HFMXn+qqesMyQ1r6ScLGo3MRW5gNFQkB6/3tqKg
dSHUWvdmrt2SFF5MNPnkySnXpoTKe5+eyd9nbqcSFRRxW9N7r8utOJmBAGpq
eooEGlRX3iMeRZwsHCWfMSUxgEXE+ApVD9CEfN50itpoeXxCTrEMSG8dkc+q
yeUH/sTKsvnDI5wpSuYuJaKPnBFDr5xZMEyqeFkbvAjXCrFuOjJaKkj14u35
TLg4Y9trZit9mN1fnGIIqQx6OPjbA0byQQ4LELM4y+yqzTf46/FL+u9UHmRo
/C9ffvvtfyByxz8LvcJCFEOAH+GBf3n5YTHVhV0SwYWdgWllsTcuXJNjkToY
NVyMRp9rFnHvKs062R5+RrZSdlK5W8D8xN+xvXGnu6NQ0qjcH14eu7ngP7eN
oKEoT9QhbrqFDTEdteTqAINEt6Lmmy3rYP65Ft2TP1AZHaAFgvORPVq3Pn3L
6YDMtm7NWFw5OYIkWb7iYW8VqgwrCInu4OHbXYt017zzF1XI8FpUM61RvgMD
BjJk19ZHQXK6AEEClLKrS+LLMk1x0YfKej/1NF3ehn9GJvwR9kniw/cePCVS
tYsfDRrO3eClCkpqb17P4BPxkIcJa5IEPEu2WwggscgRB6A0WFz4C7tIPYUO
C525gj4alzkk2+HoUImt5DmIboSqa2WXK+6CQZtnTlBzpviXm2i6LDkNx10e
BD3oTv/D8MU04IdfLrBTXOAfzWVvhEIuBDYJw8sKDBA0UzrB3qiGCNcU4InV
W1coPIvO+GAHNsj2wYRArOye3A4dhInB+FysZcHUwyWDLTPHexgVyef9IV80
SXMAkxXUuVmKVqtYC1LeI84PTQLlka2CJVZxPVg85GX9Ef0nHj4YLx9AJFOY
F7OrGUN4RU+LoEXigmo+QgDo4zN3Sju+0ylQvpX5yqZBcXAp8Ucn0PVQWPrB
gHeFbT+9dx/Qx/xNN7ha6uwg4yjuHIEofsHttRVnAQ0alT1XG28588v4nf/z
9PWRwtAiWxW82UMADoAV2FFSFcr1iJs58jFjF0WBSOjCs6gAsbRLTte1CILK
vJtdVds3cM4fqnwV4Dt0e2kZByTItMLwLXSW6RIRtSqqrWDI6lxJ/BAz3HRD
ejhdPF48AFM56C+ilHEpblnm36sdfFhA4UpR8zgNOWSM5SQEiI+K9GeGDegZ
4e0bBweXThvVDeIIVAW5CxrD8IQZe2wXHPIAUZEsfwsCulCF5MTCpc1e7NFY
9QwEicOFUaSB2pK9X1wwJ/nSmpKESMWqF9DbkQRohm6OH466IkgFCfuN3g3X
dLWjusgZuT+8/6gti3TX6IzAaqy4bFkg4bDblb0aH4Gvjk6K/UJpfXQ3CUEj
wTYQx0rKo7WwVWKAhqbEoVEikV3lfSdp7OJY8pum9gwHQH1oxUHgDAAgPt7x
F2E/Us2XVt9H+7M/KLe37WN2MBMMm8OR9cA9WE045cMAVG6YzQOgHURkB1g8
ATXd9X6JNdkO6mGIGpzgdjukwyPxScoEQNHHErhgOJmO78DdsIiiXPGPmd0k
xsFOAEka4q39nBuK5Rt5IG+XJR0dcZ9lWfP/8M4PHxMgITOBwcR14x1IwPCh
1bJp5aFh2f/wm8XnUr74NSSA4UMcf9SGNPoWTuUDhNNrNzcpZx4+7IBZRAM/
/GOcvqR30RnHUqq3cDwdwxydivqjxgtboChK2FVVAET5BsnAiA6FpJpmwLSm
DyIfcdh7iGXmz7sNg60l9YSKZx9pb+bkykxrrgT2RYik89PjZ1m6QbTDVpFo
NAp683604dD4VGPHIpRpsCILkO7sKM5NTE+ZDH4ncv8dCKLTYKDKo0YFx6Qt
tYnfweFwYsjD1dNQaDkoUFSoswVeraIqSLX/0ao/mrpODNIh4hrJLM6jcUem
VOwnwXsiThKzpdjwd6lRnW0S8C5FJoui41Q4cYYGGW/63tP7T5GyzqKANZ0T
nNU7rWiVgICBY00mznsiKkJsTWH+RNF2k7rYUmpGnrvHHy2e6OPSxOIbj8sW
nKVew8OsDhfE+WaCR5ETh9aK+BBRNhPF9TkRpyW7g692REs0hpQVhMiV1Nnb
ZNXqEG3vv19Rn5hi/CgbYzprGFUkmXbsTj1AVxoaVgpnsXOl/w7TzkPT7jrz
B2i1K3d3S/FuQbaqGhy82TQ00fkgDbHQuYBWKGyeAy60vTOUE92KYBlz8nPA
w0M6dPSBwmHOux2yJfjvbEyhXcjvBC3Mjnc1osrsXhQQlqLqZOBiPbaRAR11
OnJIbJDqITF8RL4ywh4BVdIs85BS8lwfSbM/BnsRHCFYbUxH6XouO7c0IXMO
83ciGEl63MHpGbMOXcUt6NOpvuLICQVoGLkcHmSADUwnneyTjKE4fAFm8LaU
7q8cMvismXEujIZEy7brw6ndwswl6WpVi4YPaCmlcjsy5DogzJ2vOFeyKtZX
EMmaehXiDZzxOhid6wtwzyJMRkbMW3RrScVci93BhUYH086Oox+tLkqLDMqD
5bfv7VSlYAzPVNAiJDsFe1EVN7m7RdaqBqQO0YaOFrUfvmyjBwS8/ztmLPIm
x2Fc6kGEoTxAwUYmWgpiaZGsQ2YHhZ1Uo10brEXOwRAPjPjRC/CNgPVwiHBV
jZWNCVoXZxvQASOqBQ4/wFxMVJ6YXybQfPWwN4xlD2Okwd9o99BMAC4uTogO
cCV375ae7RDxE0GKQBQ0IB2BpJ7me6QvaKRn4IqTdgaAm6+bEPP05zo4zlJZ
OZwY4dbq+bPzTJ6AG21IASGRdTh5SyAZMbNIUaka1x7FZh6QdKK1LoP9QXB8
IlK/W8ubywSwJwYzef1LpNxo/sCokLXmINrXQ/mBRAedZyBPnIizkYEEkCbn
Rn/Z8Qt55TSenjq8ZKy3hoR1XeTsOpQ08WNwb9aIEIG0L80/aCzwxH8o/s73
6vw4DgrhNPMwzqDdFBwkuTq6NZbYLzvCUYuQ7XbAhwaQtSaKdl3kUMomcdMT
ldZyJO39x52xMU9bAXjxku9+O0KSvxhF/vIVgkwy/4bU6dJKBJyUhbFrKyYP
293ROoDfScZ2AfWWIgIfyApzhqRHEPRARxKs0N3VVQAJzdHcBDkIPW6tHYIU
gA0WdhsFvQmlf9+V4yh/y0KUMN7YM0ws3MS0x97wJUEvHvLlNMPFWM0ld9YE
h6ycqZIUceD84asPRwpDFk0v2A8eTyHqG2Uw2PCHcB7DbNGLu3irv9MIVhnK
JaCgzH1718Df5lfGplJ14q7hZEq/JDMyCgSYyqH6N07dpL0VtWlGukn0TR5a
InKml/GGG4y31SS6akmEHlhnv5JLQToaiTM5biCbscSVGpOxiu3FwSV1N1sc
6cl09HaL8ifPqiJ45x1PWfAdCp+nsyEZQOSxU1MFM5HqShIu0ITSYqjDx1i2
eKkzLtetU6IEcvi7+EG7mK0Zl6HZ31Hubh0M4lKQei1gNOMDtsWqykmjXnOP
KAMvZd7vYj3SY7A4sAJtHwbKzFeONT2a33Wyr19dvPgpO8n+4ZdXH/9ZRoFf
J8h1+YIOKS6w+w/YC+AUzkPVyRlNPnipiTm/j2n/fk7FHJh3y8+1kxq4vE/k
gAvA5K2rdVA2YEocViCjBfVCZOeBatdb383YYMk7PiTuo57mgTSWLiy8xmST
71T92CaT5AxIbByZe0hFhxxcwYf1O3q/W/xQ0BlzpRbHjxJwbNWYOnOxmfA/
o+krZzkbksuj759wDH2UdEyYapNbhSRIKuz8hmlumvM7jAvDxchcvqrBHJJ9
OXw492km/XB0i+p868KJe/WjaaAvQutAnOu5KG341Dvw7j8a99+FnfMPmgsv
C1h+Umd6UDvpE2hvNXQewdC5raDiM3Nr1AiJVDIzC7WaTYy6CGesu1vmR+fl
pkRG9SzznsSn3/QkDvYmOBRxRit8pmFbOYi20L54MTj88N7Doywo7mia8HAR
PhONPJZxiZsCQ4QyUwM2pZ0LeBn0ag4N0vE5A8IqwFwRZXBaLffs5SE67aVA
OM8ezLkqQIZFLkP2CJ+o11fnz3OdzlgXVcViIyEr3s+YLhYytWQS6poKpZSs
FZBJgrjtEAwdJSZZRSMCaBeORX031AeawD0e/uHiwX0hIAtdcElpmkdvTlSD
GXGQ3pIWuy662KzxYEdDTkIkNd5kXhEN0sI9g6XdV34dSiPy6nlq2kAdA66X
UKuww5gGeIzYdgjCKGFNx193Gq9G7i2FIJrGHnrgE9KlDBeZIxaC18pAZhO0
W5a3xPuZVlP+dVN9iNU+iu+Gx0uR+FejD3Amh7mHxT+mx78k2ad52SnrnQZt
eWzERzKi8hWM+FydRbfi8SB+nVsvbk5k8OjqKl+NRszTnms2girChtOZKgiv
tYdY6C8eLyZg3FmlWyGD03O46NIDnprkmYl8x5VCGiJ74soVynjpO3ODUxT3
AIpYFK4LrjIRAxJ9OmAUej0xq9PFvUd8xz9/Fi76iH4SuEg/FdnrO55/oN12
5RYBEa4qLwvrV+49svjrOi55AApNDHlxP0SHhClP0/yQInuXf56fEYt4r6Xn
xWUOlzUdyuN76ohVKNF8Ccs1OxvJcGL+bkMNrbTS+rjQXIPTF2sZdkUU6NkQ
MhRaH/aZMGhJ747UHB7+Ih9BdqwxzqnbZdheDWej4Lvc6jjxHgcRU7J+aAEo
UfFgqkqKP5goY3SSZdBycZRU+RZAX8tCd6z0GDSvK8rGmC/76D4qIi6uXb7o
KgoADFahsoodnDDNuc7WIUmMMLjn6Z4JhJxFm7Rq/pQFQXqpjDRP6S/HR+//
dDQ97LAcRC+rPIKcHlJq+k4kOT4dg/A/0G1ioDA2ltSqJcnAXki6m4ib+F0I
LlUTQzaI9kAPzaWSCbhIIr2XG7WHJgDWNxTpHB8iwCL9do6qOlAM/faxqMr4
GzBkmYnwL+9Q6BT/+I9s5dsvHziZV38bBBHgarKSxbYsLmmfu91mk4d0UKwp
WTtDdEhv7AipoRAM/XUI98cFq3LqMTYnHMPVQaIqnkAR67RmQ7hhV5UioVp0
PhbIYe71jhpI320tJDLdhRCcAGUe9EtCM+Ua9R8CbBe/6QvzNIDg8l87Y/tN
CjFsjd7Gmz2l5os4qBxOxTAIoglIAtjZSe4PaCL6eoTfHOMmo6mVIocz16gZ
BnqqmXi4bNhNzVYMfdpwvaH6pDublGXzADaPjSfHLAKOyPCay6fmPKBUWqBg
vxm0BYmN3SVzQqGmI/BXLHzEeoeJZWnDeLvLtcuShmfH0cOxQXr2VhKcAwTP
UsWhwos1K12tZ5nl5qKYF2L7ZNvwIRSdJNTnq77zGGM2D5sCOn8buDB6ZGgW
fgIcK7co1D3LRR4rg85Ci53Q6Nr11lErW2MA+29XCSe1wbOklB0BYu4pU9L+
hrepMIn4GwJHyozFcjhFXXd12iHU/C36jvxQ47qBI1rhsV0zOpZBaXAoEhWx
z1vwRuvhwwvcjTFKMPc+7e5KDMSv7ZWzUcAMm6urIgHd7gbXpr/rGE2OaPsH
VUgN1gVboUaIEyzg1jRzVEeN1h57DcwCAp4uPLqj1BmylgEd3PosJWtGn/NG
UiQrISyf4+oKEpB9vLoGhArwnwCwCWiWkLQJ238EL0LyOhi9lDP3kHllPQcb
iwMbqEHsS6aRYNC+sgjzpbvvBdAEANWAcsJ7rSQZqq4KMv5ZCXPs1kWFzhpM
GFPOoBSNav62AXp5wtk7YJmBXMLF0gioUzFbbnxQiGXPxaWNFUyz68SQChLg
5TtmIqakqzQVYyfYOkPaD0jQqVHADkcko1zSR9coz+9zhcH2B8TpaiRdscln
1gnXbqVDnZ4JWmunqPB+CN+GTLbCdc11118ASV3BLYuGn2kgANAUvE82VDdg
D47/zA6AGsMruJ5LcFTvwrt+K42McxQsX0Z2EKC3Rxhb0AwsPQpHSi/xZVlp
gIS91M5USCx/6c8KeFbIs9i/zAOsNQELy9pE4roZEgTvbsgCMqrZKZRaSPsR
RlRuc1RZRPxpoW5JB7Phb607aFGzziA4Y4lSEDA9GQQD8RB0XJbJsNcDtKNR
7QC0YgW0ejaj6ORCk4AA1Oyny1bjsBFH/dLBuwwz6KClcBMOLeAQreUadXLa
oyD2iZZ5hts7AkghHVFiPYhYbI/vc2GO4nhJR0no3tKzYlCWbM+aimeM5ZCZ
DKajuiucewI54abBvv98wwUrndQo8MM88Lzp+HdLJD3MzFRkiYNMTLr0xCMc
pgTIKCSXzTJ9JMKYDkF1sLvRoldGqsnwHn9P8CkCkwWpKhbhCLTVAIdJ1BXl
qgFtGQw+FBnEKX4FH0wSPLsNsPUH7WNiUuVMvTEzLdWHN09VI1lfGGClWETa
g7z2RrovChM127eHjZrnnNhHgS5jHz+84Ke4C+v1zBCRuoCngdArqSy0BeKL
ZJQWHwCQCQfR7PDepMW9a13bBSRITp3ga+vQu2K6ogA27USkWLlF11Q3Dlza
ddt2+HLrYWdHxxaSriDY0SDHA5SJaXpRGibDL1F5dw2vdADeDAJY+vYFOK4u
vCWkZqYYUvO0YzjISP3vgviSEsuJH/kdzaMx1mg9pjRvUfhVoAiwZGizpCju
tLTcZXaiuY3EYPScFDtNopoBAE0QBawnn5uLZiRANsEktyBDUqAo5QGYILNR
VxUHAXXmeu3Jne8UyCFm6sBrItVPDh4hpKTQH++GIA1/kVt+V90SjeH6km5h
KAbbSg/nrl5Qhq79KjSeRg9qjaabp7psY1a5d51wCc5X4NPaYc2WuOUFmjTt
FB8eNbqQPA6SCj+dXbx6f3b+zHelP+syHuoVoGay95fe6aqNM3/7TR8U9+FQ
9Sg2S9bMwmvNu+b5Nx9Yf9gJ1rdbl/vpewEa+FaCP5cqtMiHtRpeKLWXDuHA
iqj6Zp2D/bBV8VasCt9PfeEBHGUWKHRFRRVDQ/FgYX1JmpxdnVg4PgpD6m/T
SDvcu1w+v2pKbdlZ23Es2Eb3xQ/lQSH6CElMB74blh3soPQevDf9mJMJWsWB
ZNaoZd6VEgiOJrHlHd51l0z7jVa49XzelH0wsXOl3QApNXq9L5sOqRjb6Pxk
Dqk9phkm1IHDp6ac7irvgR1D6bX+uIfzdSvQJmObAAzbO0R/ccOSy+sw1d4j
Fqg/1Vq1xkfUDXCI/zUC3DF+3ELFtNAhOA2bYA14dQrUZZ2NRJtNIOfFZD3f
JYjLPP7RmuuPOUX2KA4QUTrB7dmSR2lMiGGaygCrmQNshqDp9LdnZKL1q+uQ
F+ew7xeph4ToC0gUuAIhMvzVaiHzzXqUReHmSqEJEMNhodZCOrvtxV8xbNgz
UhUZoyJclW0gmw7JeOBPShqy9gc5qovJPxe9CEfeIBymVn8mBaW4UJarjU6J
0ac2LE1fDHtS24LNbyKwOq6CMesVm6pEHsIV53jQBq9Jv7y8DEqxzCtWaMRp
cAtkySw1FVSh5YjFLQFCKtgYpCRpIalNBcWlVjMqAAN7aVm0svAk2y6srLXF
bTfnQ5iL32eO+BpWmATIHnNWDLrbMcS2lKIrErL2zZWMbJHzETJb4fbSli2H
bqOCBdzK6st+X7cWLEwhBkMeq3ZZhNZU6UuVebCKHbixSBW5lM2Wm9rsQ3KU
Og5d2x3D4RC4F6JGmlW5EqMpeH7xuoBhyo4gLrZhij70mAzb34x073GeFNdA
xqrJgqHmncjlWpHHOMBQ3xFgAOwrpqpzEwIJ0owtI1dkfcX54kCfrOk+9eaj
LlPIUTGro7NbsmUFceArjdCWBXsFDoA83kS9nZfHfQcUC0ZbApnJmSIV9sWV
YCPg0hzTKqYZHWXsQ47kML5/9fwlU+9aCXHbkgYCH405BgYeLfYyMvQU4rNJ
tWM63h2hH/NdJQ2bAtb9tkI6LFkMAsZQ++4m2q1b6w0PIZT16k9HnPhDd6G7
Ovxuq5XAmqJpSYPPXQWImHWHmM/acvZMODDrkDOMxHuxlr241vQSVKOww7dp
UQUHNHXv4uFS1i1y6VVZLLk6JLeSKC0T08RjRL0iLrinKlgvITU4xDmjSGZP
NFSfNoHRhCTVgG6x2vVaDClZJtGaPHQsqmNL8m+iiHK2IPrOpA3xcpJv3TUZ
m9bQUHDZuWste4gPtjECFbGmDWgDeDuIae05XYexMj68f/vPr9+8fXvOeF0B
1H9d4Gw141YjtR5pVC5KoEjD64Z3HIkFPw1VvCTtxGO7298TuxZdhvI11+Pl
kmwyooiR2g3eOmiC4K84rKi1tYNILQRfeRhqwCSBCBCI7oVJo1Up3NWcUjT+
k+asKYR7N6o7JjaRzHsAJ4UKaedMPoRNdunbgxvt2lzoFxh6ZVTRQcUUYsOa
6HNQiSJ5Dmy1DWYYjDQJBVnKo0GGB+euYXEXsSuU2vooI6H3x0qHqbrz1PfF
OACk++cymrqz8so5A6YhH0/4WzTyrs0BzpNHjJJvzoHJkdwsJwpNFfC1wXJn
JYQWXHLjBBmBg2J3F1dQehJwi3fyNzheQk4UHS+pePOlqJHh4COQE8CCtb2I
K9ZJQHHMB+zW95ZE/o7p+/hF8/Hs7fQQJIf+k1ceVDHZMtUSjegZFyd0Xfd8
lFlzUd+UbVNvVMyR5HxHKs8NJiIOluReS68Jp6aSvOMkJsRlyGDzmjVHPGtv
2YoFH9H2mMGuSBK3ZdNpFnFA2/58XXI6b645tYxNK+xLcscD8DTSFvo/IL2G
3+agtzEhZO4JrcRsOAdPHj/k2ezrVfB/snQGbYf8Zi3YHXibDyHPB/jYi/HW
GDAskY6BZNNGMNRca9K6uGr60rqoeteGFt6Eqx3zW51ZChmgXqODVvKd/6pc
lQO+3CbtRgR1TTbAIl0G+XF7vY+QSCKZgyoLXSbt0AEf5kW8qmG/OlF96CMm
Alc6nEQ63lesNpjRWF7VjXURCW9KpQvcZrfuGeSzaTLsoeyyoYK8XO6ztK9H
+iLXzyM8Ko1IklVq3stggofu+qQ/RVK6ioZ+hZKnkp0IT3e+eazXItYnWZRi
Tu/EEPBPh35Dg01Ou2CYrYFH0sRGi/nHazQ6oVyxhMuRJQqG1qfCFUz8G2fp
mEUtqPlWEWfjWoUIFvhf3Wms6A8Mj7DSbBS4T1um4C4gjEZ9YlcrJvCfFUwy
NE6yBNYwP1zRpHcJn14n7pJmU/aaPJhOUXxTnOVh4whP/pNtL7IF9OwsF2Bw
ACi4Qs8e49gMWwR9Mibf+wihufS1/E2tWi2QvpXe9N7ZFbjNzP460NQuB07c
8ceALjBQiULh9cx8ynfiregoDmcGJ5swOqdoAMdY2WEY3M5PGGJ8VnMdSc2q
DZg1FqLR7oTNjqJ+ON1DHW5Qy2cBps5Vu13n7Xou1S9louZ0ZIFwx1lx+Yny
BzcfmrNdN6VWLYuhsuSbu47xWBvWddwyWuFKCg4Aaue8YI3IlVeXsKGIcL6p
2GhogK5+Y23YW9YHipD4AzVGdfhy0080BLkeJAO55dMciDTLS43rlT1ssdyV
MPDz6bpYQ10JKuamFD3f/T2uM7EdRrXNcDw7q2aK0sDhalhkLmD4ekQ+4DG6
Boqxlzs9NApzlj497oTlh+FWFtxHmWxhtpLQWT8yGp6J5ds0Cq7BYJT0GXwj
eca6CSk+cPr1A+9t6D0E0i6ID6LmFxwQ981mIWgRv2vM+H2MqlJXSDcqe9Z3
pUthUJyLE70UcJyDiiyTcWwYSV+cnJ1IJAEkkSANsgmvfhNZq+PWy+KqrBPX
paGBD0wbyx32hbGKDVSzo1lwkFHvyuscfGiXEnYP/+7NYVaRtd+1wMWo0+cb
kyKmo/mqlsA5PqQI8SpUdg0Up1GFycKdWl6p9oyg1Zq/1eUMja3YugsuJaFz
WMDC2Vs1ek8ljVFZHDJfj1EgS/tVq/Xlz+fz85eKi/j9Y05C4qjqV7sfKyjW
mH3n7azs6GQRG1iesEXHYaPM0FvtIB06Qm61QsnyBeoUm23sVXaZvV/itTaD
CucqgcSmDavmwbUhQechIBUY74AvSnvX7Mddif6K7BfsdpuQVavi+zDAG4Io
6l+XfqGcpwwGIiVZRACS7bDiVje1gvs1rZ0MvoqidxlNfSFNpc2kg7AUV6rt
SGTJinyqIRrOXReJvtss1S+BPxyKA9fwx3P/Z3S91yTsK9YczJWBm4cSzsMr
C39MW94c6NsL5INZYDDJNx40BjUGMVTYpbfo1FcTfyMcnx3j8glU43ZnEOFJ
XtOxdsV1iNd1I6vDhgXH1+wuZ0hoSVLDG2LpPuLV0uiumhlQZnAvlAA04p02
8XJJzgOOzBL/imuYAVOFIefRWQvqcchKZ/xVZwwI+kcacCxMJx9IRmSnsa+r
MLsVuDQIvuw43AMHfTC2Ao1wSwwJyLX9p0JcOXSInXhyGNW/k/ai2rpCtHZs
WWyLeLgpktNmrr01pzPRzk6+s+v6ARDtADl2WPSS3CnfMExsB9vZcv5jqyDl
UrFfSCGf9JJRJdm+jHBmVYQB9ZVDcEOpUdxI5ttMWHDSSE6NEd+fw/pqtfBf
5mycWXGS+Dfphc8nuVREl6uAtQc7JF9L+QprHKzeswdJIZwlCxkQFlabgmgU
0ksUAzIoBMaGE7wKD1opQiywvTv6C8KxFN/rgAjNgvS7kcgyoTgQB3wjYI1A
fAxw3bME/Z9jt4P9Qu8RVnp8UwAsNEkP66WUg/YSx5E6lZCjpk7SA5S+UF2X
5AZJTeMBsYVejwnkUSAFJR1kJVoppNQ6oh1aHvMXNGYpFO3TQOGmDCV53LJ3
pRGNM5uUUipT+TBlKl+1Teenp5RvgmAVBlxgPPvtsKGGxPGd3yxGqq6kvgAB
ZlZ+PIpi7CZgIA2hlPNYLh58gnk1/ZoRzt1wpFyr1LbVtXWkxaknMQS3img7
o4emNc4a8WUK7EmdX1nzDundZiyrVBTvg02bvBLSdjgG4e0j5zKCCY6nAGb9
dc1Mq3JJzJ2Q9pkt24ZLpX777Y9Dv3q+ndOX6Dv8jJZVyLhRU7yhtR8daHBc
CGSz/xtkZvz2W/yEPyA2X0pjsMihYm6HW3u0A60Gx9rlfrCcU00tP2yASzfy
jly62ErWNesCQ/sqru0AF9X6CQtphtRwuBg1eGzRWCb3kNS85D5UaVsQiy/9
cvEt3OIFnDAobEkS2XxDRChewi8kafuwdfAwQ8lq3oaXJ1RlcC2LZJ7xzG15
TZvgEgX/g5fJpJwQm1XoKvEvGg5ZSCp4o+2p2ZsyGxxWkn6+3LuOyeGouf4z
OzJIr6NpDLHY+Sasc4jxiEwBfovgLVRFfqPujWVB8qNsHFhqwNaQfPu4rYtJ
pEieYkx3KM2Q4+8nDZEgpwsXR2MRUTXCLAQAypuVGqt/lh3JwfXV/igThFtj
N/zwvN3VtWQEfQcrXL9LjMG+GqbaaVuX3mdxW+cHTuZxPebCVJL6qtB0Duxo
5ig+boAWCsiQHoFJxhF+6x5S39oyZBNYxR6dBDziudiwofzSnOK88QD5iA5e
EJdz1g1APWIlj5V3jjgrfU6FId10zdz6+Pre7CT/0lbtcHajEA6qyJjQ6GPz
MJyDxap8c23dsq9EJnDYb935f+uUe9RyMcVYM/Lff8qqcB08nTxEhlCoSBCD
0kQZ332gcoYMH1MdwVyYP9JgR33efTpSsg8xY2OZCv0s1ffhQtgNP1Jk1iMD
LT0OuEZAblWIF0ajuD/V9EeFuhGdbzVA7O0+xVkGAe7b06cQrza+dK2RTpNd
JrkT4TBTwoHSoVil4VUDBYr0tLLXtF06ySt2WCDzxSe5qFgi7rbjp2jqUtvK
rL6S31VMNQEoXa5n0usFk5q8kzeK+RO5ehAMxlmhYydQlW7HfIZzbNcrmc7D
OgCFuXm/lLgwIEhhPzZidPciCUIXai5yhWNTObP6tCQ0YAmOYNWI5iRlP4Hr
zOeKNRPix/SJ7r3PxRkLZrSK8BrPF1jSMgHSn+YRQe5dqCeTUxlT7J0jUNmW
AvP4oTqoXoCYbdnUyU3/zW5bUjI1kC1ocpywQvKO9hUEoFYgH8/BIerl0VCQ
dMjprGYFulEA3kzOV7nPi2CSiVlhv1mZmeMEDga+VayRuDbD/YL41coLrhZK
ZD5z38XAwy1Jn+i0zC5V1tc4iW6IbByPp+zkqhexo6fTlLDiCnfCFEaMyWC1
Pm0Kxc1yR6om1oouXKbAmDGWhbp6CcianuYqN9weqrEoKYgbcYtEogw+YrM7
Z4NueAg8yt6TmRuL3BIg1CytbvVAANrAa1iUEuRKWW+5tQRb5lZX4CYfKhYt
n939Ta8g3LzsaCprxplapQW/elO0wRXnx7NzKXFChLwnNxXdHfY4hmZpymoD
wpLDEg3pxcnsrLdsE4JuyLNSiqya5tOcG/1J7dpFtMIDWKjXBQKoQBaAWSCZ
juUmJCACApasvQkDlJeURgtAmX4oaTJCRR43P2IsxenjtSnc/AAg2bhSvnYA
Yi4gA6irF7EfTrGYjNIBXy6YDJwWB+6ozaKs0ZRpB+mppnSrLElqkpw96ArL
+IVDGXJ2gPmMdYOVWBrYLJawRxpkxcW1Tg54Hhy97933gp6kbl2rZc04Ibub
Kkd8dVNoHzsUz6EEFyJ3zr3r2Nhl6luXV84J9EE80PNzsr7Fc3Ss1vpU6ir1
NpttE5auSLjsKSBZKBl8CmGCPulJm8nQr1U8a2iVsBIvHfPzc6Rv88pjCUxb
qE5hOjSAEcFE81vxlw4HMm1AvHOW3EtKzsp1AeCkqteJOaqA5slGmerJbFZk
2Lpp2iX78IIuaGDoYeER+XzUKynTslsNtMcdDKc38eLH2ujDo2K5NYs7ZCfC
zQz3idszUY2khtpxlgNsHTyqqosGiuTgFfUfYrEyL3IeUqSQMlrnHFfZF71g
QDMGAtyNM79lqxH9bejCDejvwb3AiT8CZioeVP3ZCTrHtXPG1LD+lsqcXc4k
GcyNWPK6QrrfZbPWDINYCj6VyIFN/NA5AHQLkWyibYfc/xidBbz8nmZvVdFQ
Ji3zrVFd0/IobOujbMWK5Y0aF95LGjtLKk5Mr0RBJjZ2k1cL3ys10WYVLFZs
V2QMQJ9NSveCT6iqYr070MBum/T7ERE/0nGyWUzROvtnE/+oZMBarhBoLp4s
7NF4yKYraV1efMwcWeHJkCgGk9GDafsmWHDMSGk4d6dJFi08ak3MXgKMgNH1
E8fZ2m66hlyh4VNov7rai0o3QKd0yJSPH96Xci2YlU21s3Q63oCS1pabjQ1N
CdsL53qUVwfRyzeGhtPFzHI7DTIptNzcChGEw2lsNeq/9MXeTylcVqSz1X3R
mjt8B3y75lajT+KzSg/evNneVo2gsdK2F1wbh+aujd4KBOJEtAUDSBFxh0J3
sPjcQFU4JJpfFaHgFm2VON1c4kbK0Gn16sEiZbNX52lYjTDms9izRO0Y9oT2
ZEvYbld514ddQk72RuIpAyep2ZQcI+eNcnJFJhJ0A4sshTI52piGXYCLzMoV
w0k5f6nvriY7euJQ3boD6hBYuaBw8HTARQfQ5eIa1oZq2113bTkKArBI2kN3
rS5x/6XJ5D39jPLnnIuWWb1Fs1GeZdltJMAqQ/ADM5WKHDLBOjikLbuXsiAE
OTisPBdoXNmtAVsLYFA5EkNrxV6MbWt545PGhbwFFxw3mffNHD9wXAPBlOxH
UkS3VjNH970OHtJwxHOZBkN9sGZsAMFQQHZkq61j51m3UrCu4NsOfj/Wk8sA
aYhqTdMvTPnjt03FhKlKSSfxHYakmVPbqMtisO1f3+Cyc1nMYqQGJ8Wlupme
KUtMQ2aI+giXs3ILJ4riHDRLeIyFWk2S47RHsl2DvhLBZkSewVWjjr3IODTw
4vxNkiAVeogqu2k1hUDRYr/eSCtq5U4nOBLSYK2RYS6l8pxktauMWXFMooAs
opGqpuv2AQDKainSUxDBtGTPIEIGdVreOXy4l0wR37VDcK0yTgu5Ldc8Ebh9
tzmyWQA0K+JRc0G+eakC2corC0VbAUx8IutDgwXXJArk49QGJLXoTGWJzQhF
pdoWyUI2tKzpdM+Wz9VeBajITAgWVf67gbOXJ86QgMCVhrEgw4t/z8zNr18O
QaZm/flzpAJJLVmiErSe96d9e0UPb/kWvHXgCXha7SmQXAAATbePi9taDszw
s1b4G9JvYtxgCMxgoIV0oD9UzerTHNhnEWFOrudTboIsgTQSP3mImkM+8cE6
H4smDrKl1a5xaTivkNZ9XRcRAl+W5NslLvn1+g6RfnnFCSH7BNQyBML5kGQQ
sI165u7mAJl/4DPeaOczvLCzNx50lJQYSqhIG4nY4xBsGj4yPznjyQJAEgmC
ITguRdhcc6sVBYB5CqLWwVHCvHQ+tttUV38Wg2/BnjsobDI/ITpzkQrCyAUB
tTYgPIsoixcpnk7o/2UmvqYD8YEaTxRlhPkXFG3ksI50Q7Ly191I/7rI8VBQ
2SbVcaEgL9g5UjZr0X5W8kIypYuH5AFbcJ8d6Qq2SZ7EEeoApK/WaKxv0P8W
e9HzMWj2ne3SUiwfYUKGghgb7EXtzFD+sDtKrH/oks17jtsk2zOIquTrtb0R
GqlLQDDvsAswhtPQSlA/2EBpNDeYa++q9vq1SD+0o5NZ7/q19n6CPDh8n4F2
shO/iozC2fDGM4EXF9Lkxk5II+R2ewTW8YC0ovKjuoZqN+neJxxZB75qgHWw
l3aq4HmoPRjAqjyfHL7To7xx/qqeETxP4FOsYZiSZe6wOnAjNvJJ1fQlPvr1
/QCGNe4jLBf2wqqF4phKQMtCiOKnpmF2PrH22FpHimxqcTQFBVpAJQdieF26
3L7QJz3kemvGKbJ4XiqobcjmMaSqJHH0sCB2vWc03k+wCtyqoCGwoGVaDCKK
dZa8ZXNH2GetuaHODBDmAqvM3Byi8pMA2QTkrMen905FjFmrZ6YMPR1goyw+
vnoxv+431aP56b37D+/fOwXU1hDkM3nRSnDHtXwyD0gJAfaSY67B22M8LwIT
0/0qQoN2qCL+QBh+wBYRWXsy82NVMnv1cq5Mda1RU7vzuijKtttpxAoLEUpB
jK2hvsdplp12ZPzJZfEI9Lj7rjrpNbisNQPWJDLVhULqj8DjWzOtNxH0UEPh
cEIY2q/PIw6dy0KAu9a2zriuAcKQj6PTPhFXrD6Aa253BpuxhVsHilJnL2UP
ZB7IJ7w+VPkq5L6qoIKpNGGrVsFHX9jZy2LNwl19UUSTIMyCJSJ5elKFmgS5
As4caj7C99NC3YB6GmHqfy0MiF54uO8XgToaoHBa8i2rf2EQqJHBR8HwLquQ
zHelNQQaRi41F8oWZB3Zw1ihYipYIW5foGkhSZtFiWcVXUQJ9WmE1u7iQsqC
hAKkLjlAygLLKB7F8cXb8+kzA356iKRC6cp2Kr8EEKXHDx5+/+WLL+z6p8Wj
e08lxLHK/kR61pv6kvFINWX7mQ305B6eA43Zyp95N9792L3sVCYQ/vR90tiM
WFi/4rpY8NuvjiVNUqx4beSbNvKDp09ooYANmrtmxbo/ktqYo2Cc2UEOWAXF
iSz/rJgYffSUMidmzDL2cL2Gxk6UC4yUgzP0B3T8ckonwWk+lyWrueYNDptN
48J10j0zY+P0EdYHmKz3gjJ8znjYei1f1at2L5rC8Yv3568YcOGPaLGnG4MH
mbIvGvYb6l8fPJW/0kzITqP/+9BwXhvip3zG5yF77tIwusIYxGRf/HrRhTd9
rxRjs7NNvbyjnOiVLyc6fn/+4v1HTDsgJtNYZztWLvuAR0MrPdPy5egN94On
g569oBF3BpCSvednOQiavebAMRycMvmnp/eEbOkJcffYsbzkgwpfsk48Mtv4
Oc/WmgSIWHRMyN/ypIpYvILYvEffPxZ3YHaW9rlXiFAp2u5cZ3uNINWfsnf8
29mGdQE2+X4qynU5f8e1itkPpIHOshd5y3Z69oMY1rPsomib7E85KWm0afT7
u5KMdTL6/wQERvq9IN7xfpXTsx+bJSk3jJHXobVLflNm57sl7V9el/lmlr1k
mXVBWjE/+HP5iZho9iutGA5Lpsy2/EQfVOsY+OWMh+JWi8ZJirGeTGufz+eI
TEz+L51Ocg1j9wAA

-->

</rfc>
