<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.4.2 -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-drip-auth-18" category="std" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.7.0 -->
  <front>
    <title abbrev="DRIP Auth Formats">DRIP Entity Tag Authentication Formats &amp; Protocols for Broadcast Remote ID</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-drip-auth-18"/>
    <author initials="A." surname="Wiethuechter (Editor)" fullname="Adam Wiethuechter">
      <organization>AX Enterprize, LLC</organization>
      <address>
        <postal>
          <street>4947 Commercial Drive</street>
          <city>Yorkville</city>
          <region>NY</region>
          <code>13495</code>
          <country>USA</country>
        </postal>
        <email>adam.wiethuechter@axenterprize.com</email>
      </address>
    </author>
    <author initials="S." surname="Card" fullname="Stuart Card">
      <organization>AX Enterprize, LLC</organization>
      <address>
        <postal>
          <street>4947 Commercial Drive</street>
          <city>Yorkville</city>
          <region>NY</region>
          <code>13495</code>
          <country>USA</country>
        </postal>
        <email>stu.card@axenterprize.com</email>
      </address>
    </author>
    <author initials="R." surname="Moskowitz" fullname="Robert Moskowitz">
      <organization>HTT Consulting</organization>
      <address>
        <postal>
          <street/>
          <city>Oak Park</city>
          <region>MI</region>
          <code>48237</code>
          <country>USA</country>
        </postal>
        <email>rgm@labs.htt-consult.com</email>
      </address>
    </author>
    <date year="2022" month="August" day="13"/>
    <area>Internet</area>
    <workgroup>DRIP Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document describes how to add trust into the Broadcast Remote ID (RID) specification discussed in the DRIP Architecture. It defines message types and associated formats (sent within the Authentication Message) that can be used to authenticate past messages sent by an unmanned aircraft (UA) and provide proof of UA trustworthiness even in the absence of Internet connectivity at the receiving node.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>The initial regulations (e.g. <xref target="FAA-14CFR" format="default"/>) and standards (e.g. <xref target="F3411" format="default"/>) for Unmanned Aircraft (UA) Systems (UAS) Remote Identification and tracking (RID) do not address trust. This is a requirement that will need to be addressed for various different parties that have a stake. DRIP's goal as stated in the charter is:</t>
      <ul empty="true" spacing="normal">
        <li>to specify how RID can be made trustworthy and available in both Internet and local-only connected scenarios, especially in emergency situations.</li>
      </ul>
      <t>UAS often operate in a volatile environment. Small UA offer little capacity for computation and communication. UAS RID must also be accessible with ubiquitous and inexpensive devices without modification. This limits options.</t>
      <t>Generally two communication schemes for UAS RID are considered: Broadcast and Network. This document focuses on adding trust to Broadcast RID (Section 3.2 of <xref target="RFC9153" format="default"/>).</t>
      <t>Without authentication, an Observer has no basis for trust. As the messages are sent via wireless broadcast, they may be transmitted anywhere within wireless range and making any claims desired by the sender.</t>
      <t>DRIP Specific Authentication Methods, to carried in ASTM Authentication Messages (Message Type 0x2) are defined herein. These methods when properly used, enable a high level of trust that the content of other ASTM Messages was generated by their claimed registered source. These messages are designed to provide the Observers with immediately actionable information.</t>
      <t>This authentication approach also provides some error correction (<xref target="fec-details" format="default"/>) as mandated by the United States (US) Federal Aviation Administration (FAA), which is missing from <xref target="F3411" format="default"/> over Legacy Transports (Bluetooth 4.x).</t>
      <t>These DRIP enhancements to <xref target="F3411" format="default"/> further support the important use case of Observers who are sometimes offline at the time of observation.</t>
      <t>A summary of DRIP requirements <xref target="RFC9153" format="default"/> addressed herein is provided in <xref target="req-sum" format="default"/>.</t>
    </section>
    <section anchor="terminology" numbered="true" toc="default">
      <name>Terminology</name>
      <section anchor="required-terminology" numbered="true" toc="default">
        <name>Required Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they appear in all capitals, as shown here.</t>
      </section>
      <section anchor="definitions" numbered="true" toc="default">
        <name>Definitions</name>
        <t>This document makes use of the terms defined in <xref target="RFC9153" format="default"/>. In addition, the following terms are defined:</t>
        <t>DRIP Entity Tag (DET):</t>
        <ul empty="true" spacing="normal">
          <li>An HHIT that is used as an identifier in DRIP as specified in <xref target="drip-rid" format="default"/>.</li>
        </ul>
        <t>DRIP Identity Management Entity:</t>
        <ul empty="true" spacing="normal">
          <li>Registry service for DETs and other information in DRIP as specified in <xref target="drip-registries" format="default"/>.</li>
        </ul>
        <t>Legacy Transports:</t>
        <ul empty="true" spacing="normal">
          <li>use of broadcast frames (Bluetooth 4.x) as specified in <xref target="F3411" format="default"/>.</li>
        </ul>
        <t>Extended Transports:</t>
        <ul empty="true" spacing="normal">
          <li>use of extended advertisements (Bluetooth 5.x), service info (Wi-Fi NaN) or vendor specific element information (Wi-Fi BEACON) in broadcast frames as specified in <xref target="F3411" format="default"/>. Must use ASTM Message Pack (Message Type 0xF).</li>
        </ul>
        <t>Hierarchial Host Identity Tag (HHIT):</t>
        <ul empty="true" spacing="normal">
          <li>A special-use, non-routable, IPv6 address constructed as specified in <xref target="drip-rid" format="default"/>.</li>
        </ul>
        <t>HHIT Domain Authority (HDA):</t>
        <ul empty="true" spacing="normal">
          <li>A class of DIME usually associated with a USS in UTM.</li>
        </ul>
        <t>Hierarchial ID (HID):</t>
        <ul empty="true" spacing="normal">
          <li>Encoding of the RAA and HDA into the HHIT structure as defined in <xref target="drip-rid" format="default"/>.</li>
        </ul>
        <t>Host Identity (HI):</t>
        <ul empty="true" spacing="normal">
          <li>Public key have of an asymmetric keypair used in generating a HHIT as specified in <xref target="drip-rid" format="default"/>.</li>
        </ul>
        <t>Registered Assigning Authority (RAA):</t>
        <ul empty="true" spacing="normal">
          <li>A class of DIME usually associated with a CAA such as the US FAA.</li>
        </ul>
      </section>
    </section>
    <section anchor="background" numbered="true" toc="default">
      <name>Background</name>
      <section anchor="reasoning-for-ietf-drip-authentication" numbered="true" toc="default">
        <name>Reasoning for IETF DRIP Authentication</name>
        <t><xref target="F3411" format="default"/> defines Authentication Message framing only. It does not define authentication formats or methods. It explicitly anticipates several signature options, but does not fully define even those. <xref target="F3411" format="default"/> Annex A1 defines a Broadcast Authentication Verifier Service, which has a heavy reliance on Observer real-time connectivity to the Internet (specifically into UTM) that is not always guaranteed. Fortunately, <xref target="F3411" format="default"/> also allows third party standard Authentication Types, several of which DRIP defines herein.</t>
        <t>The standardization of specific formats to support the DRIP requirements in UAS RID for trustworthy communications over Broadcast RID is an important part of the chain of trust for a UAS ID. Per <xref target="drip-arch" format="default"/> in Section 5, there is a need to have Authentication formats to relay information for Observers to determine trust. No existing formats (defined in <xref target="F3411" format="default"/> or other organizations leveraging this feature) provide the functionality to satisfy this goal resulting in the work reflected in this document.</t>
        <section anchor="ua-attestation" numbered="true" toc="default">
          <name>UA Signed Evidence</name>
          <t>When an Observer receives a DRIP-based Authentication Message (<xref target="drip-wrapper" format="default"/>, <xref target="drip-manifest" format="default"/>, <xref target="drip-frame" format="default"/>) containing UA signed Evidence it SHOULD validate the signature using the HI corresponding to the UA's DET.</t>
          <t>The UA's HI, SHOULD be retrieved from DNS (Section 5, <xref target="drip-registries" format="default"/>), when available as it may have been revoked or updated. It MAY be retrieved from a local cache, if present. The local cache SHOULD be populated by DNS lookups and/or by received Broadcast Endorsements (<xref target="dime-attestation" format="default"/>).</t>
          <t>Once the Observer has the endorsed UA DET/HI pair, all further (or cached previous) DRIP-based Authentication Messages using the UA DET can be validated. The content signed over can now be trusted to have been signed by the holder of the private key corresponding to the DET.</t>
          <t>Whether the content is true is a separate question which DRIP cannot address but sanity checks (<xref target="reqs" format="default"/>) are possible.</t>
        </section>
        <section anchor="dime-attestation" numbered="true" toc="default">
          <name>DIME Endorsement of UA DET/HI</name>
          <t>When an Observer receives a DRIP Link Authentication Message (<xref target="drip-link" format="default"/>) containing an Endorsement by the DIME of the UA DET/HI registration (<xref target="broadcast-endorsement" format="default"/>), it SHOULD validate the signature using the HI corresponding to the DIME's DET.</t>
          <t>The DIME's HI, SHOULD be retrieved from from DNS (Section 5, <xref target="drip-registries" format="default"/>), when available. It MAY be retrieved from a local cache, if present.</t>
        </section>
        <section anchor="dime-hierarchy" numbered="true" toc="default">
          <name>DIME Hierarchy Endorsements</name>
          <t>An Observer can receive a series of DRIP Link Authentication Messages (<xref target="drip-link" format="default"/>) each one pertaining to a DIME's registration in the DIME above it in the hierarchy. Similar to <xref target="dime-attestation" format="default"/>, each link in this chain SHOULD be validated.</t>
        </section>
        <section anchor="rid-trust" numbered="true" toc="default">
          <name>UAS RID Trust</name>
          <t><xref target="ua-attestation" format="default"/>, <xref target="dime-attestation" format="default"/> and <xref target="dime-hierarchy" format="default"/> above complete the trust chain but the chain cannot yet be trusted as having any relevance to the observed UA because reply attacks are trivial. At this point the key nominally possessed by the UA is trusted but the UA has not yet been proven to possess that private key.</t>
          <t>It is necessary for the UA to prove possession by dynamically signing data that is unique and unpredictable but easily verified by the Observer. Verification of this signed data MUST be performed by the Observer as part of the received UAS RID information trust assessment (<xref target="trust-assessment" format="default"/>).</t>
        </section>
      </section>
      <section anchor="auth-message" numbered="true" toc="default">
        <name>ASTM Authentication Message</name>
        <t>The ASTM Authentication Message (Message Type 0x2) is a unique message in the Broadcast <xref target="F3411" format="default"/> standard as it is the only one that is larger than the Bluetooth 4.x frame size. To address this, it is defined as a set of "pages" that each fits into a single Bluetooth 4.x broadcast frame. For other media these pages are still used but all in a single frame.</t>
        <section anchor="auth-page" numbered="true" toc="default">
          <name>Authentication Page</name>
          <figure anchor="astm-auth-page">
            <name>Standard ASTM Authentication Message Page</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+---------------+---------------+
|  Page Header  |                                               |
+---------------+                                               |
|                                                               |
|                                                               |
|                     Authentication Payload                    |
|                                                               |
|                                                               |
+---------------+---------------+---------------+---------------+

Page Header: (1 byte)
    Authentication Type (4 bits)
    Page Number (4 bits)
    
Authentication Payload: (23 bytes per page)
    Authentication Payload, including headers. Null padded.
]]></artwork>
          </figure>
          <t>This document leverages Authentication Type 0x5, Specific Authentication Method (SAM), as the principal authentication container, defining a set of SAM Types in <xref target="drip-authentication-formats" format="default"/>. This is denoted in every Authentication Page in the <tt>Page Header</tt>. The SAM Type is denoted as a field in the <tt>Authentication Payload</tt> (see <xref target="sam-data" format="default"/>).</t>
          <t>The Authentication Message is structured as a set of pages. There is a technical maximum of 16 pages (indexed 0 to 15 in the <tt>Page Header</tt>) that can be sent for a single Authentication Message, with each page carrying a maximum 23-byte <tt>Authentication Payload</tt>. See <xref target="drip-restrictions" format="default"/> for more details. Over Bluetooth 4.x, these pages are "fragmented" into separate Bluetooth 4.x broadcast frames.</t>
          <t>Either as a single Authentication Message or a set of fragmented Authentication Message Pages the structure is further wrapped by outer ASTM framing and the specific link framing (Bluetooth or Wi-Fi).</t>
        </section>
        <section anchor="authentication-payload-field" numbered="true" toc="default">
          <name>Authentication Payload Field</name>
          <t><xref target="astm-auth" format="default"/> is the source data view of the data fields found in the Authentication Message as defined by <xref target="F3411" format="default"/>. This data is placed into <xref target="astm-auth-page" format="default"/>'s <tt>Authentication Payload</tt>, spanning multiple pages.</t>
          <figure anchor="astm-auth">
            <name>ASTM Authentication Message Fields</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+---------------+---------------+
|                     Authentication Headers                    |
|                               +---------------+---------------+
|                               |                               |
+---------------+---------------+                               |
.                                                               .
.                Authentication Data / Signature                .
.                                                               .
|                                                               |
+---------------+---------------+---------------+---------------+
|      ADL      |                                               |
+---------------+                                               |
.                                                               .
.                       Additional Data                         .
.                                                               .
|                                                               |
+---------------+---------------+---------------+---------------+

Authentication Headers: (6-bytes)
    As defined in F3411.

Authentication Data / Signature: (255-bytes max)
    Opaque authentication data.

Additional Data Length (ADL): (1-byte - unsigned)
    Length in bytes of Additional Data.

Additional Data: (255-bytes max):
    Data that follows the Authentication Data / Signature but
    is not considered part of the Authentication Data.
]]></artwork>
          </figure>
          <t>When <tt>Additional Data</tt> is being sent, a single unsigned byte (<tt>Additional Data Length</tt>) directly follows the <tt>Authentication Data / Signature</tt> and has the length, in bytes, of the following <tt>Additional Data</tt>. For DRIP, this field is used to carry Forward Error Correction as defined in <xref target="fec-details" format="default"/>.</t>
        </section>
        <section anchor="drip-restrictions" numbered="true" toc="default">
          <name>ASTM Broadcast RID Constraints</name>
          <section anchor="wireless-frame-constraints" numbered="true" toc="default">
            <name>Wireless Frame Constraints</name>
            <t>A UA has the option of broadcasting using Bluetooth (4.x and 5.x) or Wi-Fi (BEACON or NAN), see <xref target="reqs" format="default"/>.  With Bluetooth, FAA and other Civil Aviation Authorities (CAA) mandate transmitting simultaneously over both 4.x and 5.x. With Wi-Fi, use of BEACON is recommended. Wi-Fi NAN is another option, depending on the CAA. The same application layer information defined in <xref target="F3411" format="default"/> MUST be transmitted over all media being used by a UAS.</t>
            <t>Bluetooth 4.x presents a payload size challenge in that it can only transmit 25-bytes of payload per frame where the others all can support larger payloads per frame. However, the <xref target="F3411" format="default"/> messaging framing dictated by Bluetooth 4.x constraints is inherited by <xref target="F3411" format="default"/> over other media.</t>
          </section>
          <section anchor="paged-authentication-message-constraints" numbered="true" toc="default">
            <name>Paged Authentication Message Constraints</name>
            <t>To keep consistent formatting across the different transports (Legacy and Extended) and their independent restrictions, the authentication data being sent is REQUIRED to fit within the page limit that the most constrained existing transport can support. Under Broadcast RID the transport that can hold the least amount of authentication data is Bluetooth 5.x at 9 pages.</t>
            <t>As such DRIP transmitters are REQUIRED to adhere to the following when using the Authentication Message:</t>
            <ol spacing="normal" type="1"><li>
                <tt>Authentication Data / Signature</tt> data MUST fit in the first 9 pages (Page Numbers 0 through 8).</li>
              <li>The <tt>Length</tt> field in the <tt>Authentication Headers</tt> (which denotes the length in bytes of <tt>Authentication Data / Signature</tt> only) MUST NOT exceed the value of 201. This includes the SAM Type but excludes <tt>Additional Data</tt> such as FEC.</li>
            </ol>
          </section>
        </section>
      </section>
    </section>
    <section anchor="drip-authentication-formats" numbered="true" toc="default">
      <name>DRIP Authentication Formats</name>
      <t>All formats defined in this section are the content for the <tt>Authentication Data / Signature</tt> field in <xref target="astm-auth" format="default"/> and use the Specific Authentication Method (SAM, Authentication Type 0x5). The first byte of the <tt>Authentication Data / Signature</tt> of <xref target="astm-auth" format="default"/>, is used to multiplex between these various formats.</t>
      <t>When sending data over a medium that does not have underlying Forward Error Correction (FEC), for example Bluetooth 4.x, then <xref target="fec-details" format="default"/> MUST be used. <xref target="auth-state-diagrams" format="default"/> gives a high-level overview of a state machine for decoding and determining a trustworthiness state. <xref target="appendix-c" format="default"/> shows an example of using the formats defined in this section.</t>
      <section anchor="drip-authentication-field-definitions" numbered="true" toc="default">
        <name>DRIP Authentication Field Definitions</name>
        <t>ASTM Message (25-bytes):</t>
        <ul empty="true" spacing="normal">
          <li>Full ASTM Message as defined in <xref target="F3411" format="default"/>; specifically Message Types 0x0, 0x1, 0x3, 0x4, and 0x5</li>
        </ul>
        <t>ASTM Message Hash (8-bytes):</t>
        <ul empty="true" spacing="normal">
          <li>Hash of a single full ASTM Message using hash operations described in (<xref target="hash-op" format="default"/>). Multiple hashes MUST be in Message Type order.</li>
        </ul>
        <t>Evidence (0 to 112 bytes):</t>
        <ul empty="true" spacing="normal">
          <li>Opaque evidence data that the UA is endorsing during its flight in <xref target="drip-data" format="default"/>.</li>
        </ul>
        <t>Broadcast Endorsement (136-bytes):</t>
        <ul empty="true" spacing="normal">
          <li>DIME HI over UA DET/HI. Generated by a DIME during a UA DET, being used as a Session ID, registration. Used in <xref target="drip-link" format="default"/>.</li>
        </ul>
        <t>Current Manifest Hash (12-bytes):</t>
        <ul empty="true" spacing="normal">
          <li>Hash of the current Manifest Message (<xref target="drip-manifest" format="default"/>). See <xref target="block-hashes" format="default"/>.</li>
        </ul>
        <t>Frame Type (1-byte):</t>
        <ul empty="true" spacing="normal">
          <li>Sub-type for future different DRIP Frame formats. See <xref target="frame-type" format="default"/>.</li>
        </ul>
        <t>Valid Not Before (VNB) Timestamp by UA (4-bytes):</t>
        <ul empty="true" spacing="normal">
          <li>Timestamp denoting recommended time to start trusting data in <xref target="drip-data" format="default"/>. MUST follow the format defined in <xref target="F3411" format="default"/>. That is a Unix-style timestamp but with an epoch of 01/01/2019 00:00:00.  MUST be set no earlier than the time the signature is generated.</li>
        </ul>
        <t>Valid Not After (VNA) Timestamp by UA (4-bytes):</t>
        <ul empty="true" spacing="normal">
          <li>Timestamp denoting recommended time to stop trusting data in <xref target="drip-data" format="default"/>. MUST follow the format defined in <xref target="F3411" format="default"/>. That is a Unix-style timestamp but with an epoch of 01/01/2019 00:00:00 with an additional offset is then added to push a short time into the future (relative to <tt>Not Before Timestamp</tt>) to avoid replay attacks. The offset used against the Unix-style timestamp is not defined in this document. Best practice identifying an acceptable offset should be used taking into consideration the UA environment, and propagation characteristics of the messages being sent and clock differences between the UA and Observers. A reasonable time would be to set <tt>Not After Timestamp</tt> 2 minutes after <tt>Not Before Timestamp</tt>.</li>
        </ul>
        <t>Previous Manifest Hash (12-bytes):</t>
        <ul empty="true" spacing="normal">
          <li>Hash of the previously sent Manifest Message (<xref target="drip-manifest" format="default"/>). See <xref target="block-hashes" format="default"/>.</li>
        </ul>
        <t>UA DRIP Entity Tag (DET) (16-bytes):</t>
        <ul empty="true" spacing="normal">
          <li>The UA DET <xref target="drip-rid" format="default"/> in byte form (network byte order) and is part of <xref target="drip-data" format="default"/>.</li>
        </ul>
        <t>UA Signature (64-bytes):</t>
        <ul empty="true" spacing="normal">
          <li>Signature over all 4 preceding fields of <xref target="drip-data" format="default"/> using the HI of the UA.</li>
        </ul>
        <section anchor="sam-data" numbered="true" toc="default">
          <name>SAM Data Format</name>
          <t><xref target="sam-frame" format="default"/> is the general format to hold authentication data when using SAM and is placed inside the <tt>Authentication Data / Signature</tt> field in <xref target="astm-auth" format="default"/>.</t>
          <figure anchor="sam-frame">
            <name>SAM Data Format</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+---------------+---------------+
|   SAM Type    |                                               |
+---------------+                                               |
.                                                               .
.                     SAM Authentication Data                   .
.                                                               .
|                                                               |
+---------------+---------------+---------------+---------------+

SAM Type (1 byte):
    Byte defined by F3411 to multiplex SAMs

SAM Authentication Data (0 to 200 bytes):
    Authentication data (opaque to baseline F3411 but parsed by DRIP).
]]></artwork>
          </figure>
          <section anchor="sam-type" numbered="true" toc="default">
            <name>SAM Type</name>
            <t>The SAM Type field is maintained by the International Civil Aviation Organization (ICAO) and for DRIP four are planned to be allocated:</t>
            <table align="center">
              <thead>
                <tr>
                  <th align="left">SAM Type</th>
                  <th align="left">Description</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">0x01</td>
                  <td align="left">DRIP Link (<xref target="drip-link" format="default"/>)</td>
                </tr>
                <tr>
                  <td align="left">0x02</td>
                  <td align="left">DRIP Wrapper (<xref target="drip-wrapper" format="default"/>)</td>
                </tr>
                <tr>
                  <td align="left">0x03</td>
                  <td align="left">DRIP Manifest (<xref target="drip-manifest" format="default"/>)</td>
                </tr>
                <tr>
                  <td align="left">0x04</td>
                  <td align="left">DRIP Frame (<xref target="drip-frame" format="default"/>)</td>
                </tr>
              </tbody>
            </table>
          </section>
          <section anchor="sam-authentication-data" numbered="true" toc="default">
            <name>SAM Authentication Data</name>
            <t>This field has a maximum size of 200-bytes, as defined by <xref target="drip-restrictions" format="default"/>. The Broadcast Attestation Structure (<xref target="bas" format="default"/>) MUST be used in this space.</t>
          </section>
        </section>
        <section anchor="bas" numbered="true" toc="default">
          <name>UA Signed Evidence</name>
          <t>The DRIP Endorsement Structure (DES) <xref target="drip-registries" format="default"/> is used to created Signed Evidence by the UA during flight. It is encapsulated by the <tt>SAM Authentication Data</tt> field of <xref target="sam-frame" format="default"/>.</t>
          <t>The DES MUST be used by DRIP Wrapper (<xref target="drip-wrapper" format="default"/>), Manifest <xref target="drip-manifest" format="default"/> and Frame (<xref target="drip-frame" format="default"/>). DRIP Link (<xref target="drip-link" format="default"/>) MUST NOT use the DES as it will not fit in the ASTM Authentication Message.</t>
          <t>The <tt>identity</tt> section of the DES MUST be set to the UA DET (<tt>hhit</tt>). The <tt>evidence</tt> section MUST be filled in with the data specified in the DRIP Wrapper, Manifest or Frame sections. The <tt>evidence</tt> MAY be a single binary object or each subfield may be its own piece of Evidence. For example ASTM Messages being used as Evidence for DRIP Wrapper is concatenated together to form a single object or individually added as evidence into the DES. This should not have any effect on the signature. The UA private key MUST be used to generate the signature (<tt>sig_b16</tt>) found in the <tt>signature</tt> section.</t>
          <t>The DES MUST be encoded in the binary form (as defined in <xref target="drip-registries" format="default"/>) to create the UA Signed Evidence. The general structure of the binary form can be seen in <xref target="drip-data" format="default"/>.</t>
          <t>When using the DES, the UA is minimally self-endorsing its DET. The HI of the UA DET can be looked up by mechanisms described in <xref target="drip-registries" format="default"/> or by extracting it from a Broadcast Endorsement (see <xref target="drip-link" format="default"/> and <xref target="drip-recommendations" format="default"/>).</t>
          <figure anchor="drip-data">
            <name>Binary Encoded DRIP Endorsement Structure</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+---------------+---------------+
|                                                               |
|                              UA                               |
|                        DRIP Entity Tag                        |
|                                                               |
+---------------+---------------+---------------+---------------+
|                                                               |
.                                                               .
.                            Evidence                           .
.                                                               .
|                                                               |
+---------------+---------------+---------------+---------------+
|                      VNA Timestamp by UA                      |
+---------------+---------------+---------------+---------------+
|                      VNB Timestamp by UA                      |
+---------------+---------------+---------------+---------------+
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                          UA Signature                         |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
+---------------+---------------+---------------+---------------+
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="drip-link" numbered="true" toc="default">
        <name>DRIP Link</name>
        <t>The DRIP Link SAM Type is used to transmit Broadcast Endorsements. For example, the <tt>Broadcast Endorsement: DIME, UA</tt> is sent (see <xref target="drip-recommendations" format="default"/>) as a DRIP Link message. The structure is defined in <xref target="drip-registries" format="default"/> and an example of it can be found in <xref target="broadcast-endorsement" format="default"/>.</t>
        <t>DRIP Link is important as its contents are used to provide trust in the DET/HI pair that the UA is currently broadcasting. This message does not require Internet connectivity to perform signature validations of the contents when the DIME DET/HI is in the receiver's cache. It also provides the UA HI so that connectivity is not required when performing validation of other DRIP Authentication Messages.</t>
        <figure anchor="link-fig">
          <name>DRIP Link</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+---------------+---------------+
|                                                               |
.                                                               .
.                      Broadcast Endorsement                    .
.                                                               .
|                                                               |
+---------------+---------------+---------------+---------------+
]]></artwork>
        </figure>
        <t>This DRIP Authentication Message is used in conjunction with other DRIP SAM Types (such as Manifest or Wrapper) that contain data that is guaranteed to be unique, unpredictable and easily cross checked by the receiving device. The only <xref target="F3411" format="default"/> message type satisfying these requirements is the ASTM Location Message (Message Type 0x2). The hash of such a message MAY merely be included in a DRIP Manifest, but an entire such message SHOULD be encapsulated in a DRIP Wrapper periodically for stronger security.</t>
      </section>
      <section anchor="drip-wrapper" numbered="true" toc="default">
        <name>DRIP Wrapper</name>
        <t>This SAM Type is used to wrap and sign over a list of other <xref target="F3411" format="default"/> Broadcast RID messages.</t>
        <t>The <tt>evidence</tt> section of the DES (<xref target="bas" format="default"/>) is populated with full (25-byte) <xref target="F3411" format="default"/> Broadcast RID messages. The ASTM Messages can be concatenated together into a single byte object (like in <xref target="wrapper-fig" format="default"/>) or be set in the <tt>evidence</tt> section individually.</t>
        <t>The minimum number of messages support is 1 and the maximum supported is 4. The messages MUST be in Message Type order as defined by <xref target="F3411" format="default"/>. All message types except Authentication (Message Type 0x2) and Message Pack (Message Type 0xF) are allowed.</t>
        <figure anchor="wrapper-fig">
          <name>DRIP Wrapper Evidence</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+---------------+---------------+
|                                                               |
.                                                               .
.                         ASTM Message(s)                       .
.                                                               .
|                                                               |
+---------------+---------------+---------------+---------------+
]]></artwork>
        </figure>
        <section anchor="message-count" numbered="true" toc="default">
          <name>Message Count</name>
          <t>When decoding a DRIP Wrapper on a receiver, the number of messages wrapped can be determined by checking the length between the <tt>UA DET</tt> and the <tt>VNB Timestamp by UA</tt> is a multiple of 25-bytes.</t>
        </section>
        <section anchor="extended-wrapper" numbered="true" toc="default">
          <name>Wrapper over Extended Transports</name>
          <t>To send the DRIP Wrapper over Extended Transports the messages being wrapped are co-located with the Authentication Message in a ATM Message Pack (Message Type 0xF). The <tt>evidence</tt> section of the DES is cleared after signing leaving the following binary structure that is placed into the <tt>SAM Authentication Data</tt> of <xref target="sam-frame" format="default"/> and sent in the same Message Pack.</t>
          <figure anchor="set-sig">
            <name>DRIP Wrapper over Extended Transports</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+---------------+---------------+
|                                                               |
|                              UA                               |
|                        DRIP Entity Tag                        |
|                                                               |
+---------------+---------------+---------------+---------------+
|                   Not Before Timestamp by UA                  |
+---------------+---------------+---------------+---------------+
|                    Not After Timestamp by UA                  |
+---------------+---------------+---------------+---------------+
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                          UA Signature                         |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
+---------------+---------------+---------------+---------------+
]]></artwork>
          </figure>
          <t>To verify the signature the receiver must concatenate all the messages in the Message Pack (excluding Authentication Message found in the same Message Pack) in Message Type order and set the DES <tt>evidence</tt> section before performing signature verification.</t>
          <t>The functionality of Wrapper in this form is identical to Message Set Signature (Authentication Type 0x3) when running over Extended Transports. What Wrapper provides is the same format but over both Extended and Legacy Transports allowing the transports to be similar. Message Set Signature also implies using the ASTM validator system architecture which relies on Internet connectivity for verification which the receiver may not have at the time of receipt of an Authentication Message. This is something Wrapper, and all DRIP Authentication Formats, avoid when the UA key is obtained via a DRIP Link Authentication Message.</t>
        </section>
        <section anchor="wrapper-limitations" numbered="true" toc="default">
          <name>Wrapper Limitations</name>
          <t>The primary limitation of the Wrapper format is the bounding of up to 4 ASTM Messages that can be sent within it. Another limitation is that the format can not be used as a surrogate for messages it is wrapping. This is due to high potential a receiver on the ground does not support DRIP. Thus, when Wrapper is being used the wrapper data must effectively be sent twice, once as a single framed message (as specified in <xref target="F3411" format="default"/>) and then again wrapped within the Wrapper format.</t>
        </section>
      </section>
      <section anchor="drip-manifest" numbered="true" toc="default">
        <name>DRIP Manifest</name>
        <t>This SAM Type is used to create message manifests that contain hashes of previously sent ASTM Messages.</t>
        <t>By hashing previously sent messages and signing them we gain trust in a UA's previous reports without retransmitting them. An Observer who has been listening for any length of time SHOULD hash received messages and cross-check them against the manifest hashes. This is a way to evade the limitation of a maximum of 4 messages in the Wrapper Format (<xref target="wrapper-limitations" format="default"/>) and greatly reduce overhead.</t>
        <t>Judicious use of Manifest enables an entire Broadcast RID message stream to be strongly authenticated with less than 100% overhead relative to a completely unauthenticated message stream (see <xref target="operational-proof" format="default"/>).</t>
        <t>The <tt>evidence</tt> section of the DES (<xref target="bas" format="default"/>) is populated with 8-byte hashes of <xref target="F3411" format="default"/> Broadcast RID messages and two special hashes (<xref target="block-hashes" format="default"/>). All these hashes can be  concatenated together into a single byte object or be set in the <tt>evidence</tt> section individually. The <tt>Previous Manifest Hash</tt> and <tt>Current Manifest Hash</tt> MUST always come before the <tt>ASTM Message Hashes</tt> as seen in <xref target="manifest-fig" format="default"/>.</t>
        <t>A receiver SHOULD use the manifest to verify each ASTM Message hashed therein that it has previously received. It can do this without having received them all. A manifest SHOULD typically encompass a single transmission cycle of messages being sent, see <xref target="operational-recommendations" format="default"/> and <xref target="operational-proof" format="default"/>.</t>
        <figure anchor="manifest-fig">
          <name>DRIP Manifest Evidence Structure</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+---------------+---------------+
|                                                               |
|                     Previous Manifest Hash                    |
|                                                               |
+---------------+---------------+---------------+---------------+
|                                                               |
|                     Current Manifest Hash                     |
|                                                               |
+---------------+---------------+---------------+---------------+
|                                                               |
.                                                               .
.                      ASTM Message Hashes                      .
.                                                               .
|                                                               |
+---------------+---------------+---------------+---------------+
]]></artwork>
        </figure>
        <section anchor="hash-count" numbered="true" toc="default">
          <name>Hash Count</name>
          <t>The number of hashes in the Manifest can be variable (2-12). An easy way to determine the number of hashes is to take the length of the data between the end of the <tt>UA DET</tt> and <tt>VNB Timestamp by UA</tt> and divide it by the hash length (8). If this value is not an integer, the message is invalid.</t>
          <!-- TODO(atw): replace with modulo? -->

</section>
        <section anchor="block-hashes" numbered="true" toc="default">
          <name>Pseudo-Blockchain Hashes</name>
          <t>Two special hashes are included in all Manifest messages; the <tt>Previous Manifest Hash</tt>, which links to the previous manifest message, as well as the <tt>Current Manifest Hash</tt>. This gives a pseudo-blockchain provenance to the manifest message that could be traced back if the Observer was present for extended periods of time.</t>
        </section>
        <section anchor="hash-op" numbered="true" toc="default">
          <name>Hash Algorithms and Operation</name>
          <t>The hash algorithm used for the Manifest Message is the same hash algorithm used in creation of a DET <xref target="drip-rid" format="default"/> that is signing the Manifest.</t>
          <t>An DET using cSHAKE128 <xref target="NIST.SP.800-185" format="default"/> computes the hash as follows:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
cSHAKE128(ASTM Message, 8, "", "Remote ID Auth Hash")
]]></artwork>
          <!-- Get a context ID for Remote ID auth hash or use HHIT ctx id? -->

<ul empty="true" spacing="normal">
            <li>Informative Note: <xref target="drip-rid" format="default"/> specifies cSHAKE128 but is open for the expansion of other OGAs.</li>
          </ul>
          <!-- the previous hash could be; null, broadcast endorsement, self-endorsement, det lower 64 or random nonce -->

<t>When building the manifest of hashes the <tt>Previous Manifest Hash</tt> is known from the previous Manifest message. For the first built manifest this value is null filled. The <tt>Current Manifest Hash</tt> is null filled while ASTM Messages are hashed and fill the <tt>ASTM Messages Hashes</tt> section. When all messages are hashed the <tt>Current Manifest Hash</tt> is computed over the <tt>Previous Manifest Hash</tt>, <tt>Current Manifest Hash</tt> (null filled) and <tt>ASTM Messages Hashes</tt>. This hash value replaces the null filled <tt>Current Manifest Hash</tt> and becomes the <tt>Previous Manifest Hash</tt> for the next manifest.</t>
          <section anchor="legacy-transport-hashing" numbered="true" toc="default">
            <name>Legacy Transport Hashing</name>
            <t>Under this transport DRIP hashes the full ASTM Message being sent over the Bluetooth Advertising frame. For paged ASTM Messages (currently only Authentication Messages) all the pages are concatenated together and hashed as one object. For all other Message Types each individual 25-byte message is hashed.</t>
          </section>
          <section anchor="extended-transport-hashing" numbered="true" toc="default">
            <name>Extended Transport Hashing</name>
            <t>Under this transport DRIP hashes the full ASTM Message Pack (Message Type 0xF) - regardless of its content.</t>
          </section>
        </section>
      </section>
      <section anchor="drip-frame" numbered="true" toc="default">
        <name>DRIP Frame</name>
        <t>This SAM Type is for when the authentication data does not fit in other defined formats under DRIP and is reserved for future expansion under DRIP if required.</t>
        <t>The population of the <tt>evidence</tt> section of the DES (<xref target="bas" format="default"/>) is not defined in this document and MUST be openly specified by the implementation (or specification) using it.</t>
        <figure anchor="frame-fig">
          <name>DRIP Frame</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+---------------+---------------+
|  Frame Type   |                                               |
+---------------+                                               .
.                     Frame Attestation Data                    .
.                                                               .
|                                                               |
+---------------+---------------+---------------+---------------+
]]></artwork>
        </figure>
        <section anchor="frame-type" numbered="true" toc="default">
          <name>Frame Type</name>
          <t>Byte to sub-type for future different DRIP Frame formats. It takes the first byte of <tt>Attestation Data</tt> in <xref target="bas" format="default"/> leaving 111-bytes for <tt>Frame Attestation Data</tt>.</t>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Frame Type</th>
                <th align="left">Name</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">0x00</td>
                <td align="left">Reserved</td>
                <td align="left">Reserved</td>
              </tr>
              <tr>
                <td align="left">0xC0-0xFF</td>
                <td align="left">Experimental</td>
                <td align="left">Experimental Use</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
    </section>
    <section anchor="fec-details" numbered="true" toc="default">
      <name>Forward Error Correction</name>
      <t>For Broadcast RID, Forward Error Correction (FEC) is provided by the lower layers in Extended Transports (Bluetooth 5.x, Wi-Fi NaN, and Wi-Fi BEACON). The Bluetooth 4.x Legacy Transport does not have supporting FEC so with DRIP Authentication the following application level FEC scheme is used to add FEC. This section is only used for Bluetooth 4.x transmission/reception.</t>
      <t>The Bluetooth 4.x lower layers have error detection but not correction. Any frame in which Bluetooth detects an error is dropped and not delivered to higher layers (in our case, DRIP). Thus it can be treated as an erasure.</t>
      <t>DRIP supports 2 different FEC encodings. Single Page FEC is the simpler scheme, but can correct for only a single erased page. Multiple Page FEC is more complex, but can correct for multiple erased pages.</t>
      <t>The data added during FEC is not included in the <tt>Authentication Data / Signature</tt> but instead in the <tt>Additional Data</tt> field of <xref target="astm-auth" format="default"/>. This may cause the Authentication Message to exceed 9-pages, up to a maximum of 16-pages.</t>
      <section anchor="general-encoding-rules" numbered="true" toc="default">
        <name>General Encoding Rules</name>
        <t>When encoding two things are REQUIRED:</t>
        <ol spacing="normal" type="1"><li>The FEC data MUST start on a new Authentication Page. To do this the results of parity encoding MUST be placed in the <tt>Additional Data</tt> field of <xref target="astm-auth" format="default"/> with null padding before it to line up with the next page. The <tt>Additional Data Length</tt> field MUST be set to <tt>number of padding bytes + number of parity bytes</tt>.</li>
          <li>The <tt>Last Page Index</tt> field (in Page 0) MUST be incremented from what it would have been without FEC by the number of pages required for the <tt>Additional Data Length</tt> field, null padding and FEC.</li>
        </ol>
      </section>
      <section anchor="general-decoding-rules" numbered="true" toc="default">
        <name>General Decoding Rules</name>
        <t>To determine if Single Page FEC or Multiple Page FEC has been used a simple check of the <tt>Last Page Index</tt> can be used. If the number of pages left after the <tt>Length</tt> of Authentication Data is not exhausted then the remaining pages should be all FEC. The <tt>Additional Data Length</tt> byte can further confirm this; taking into account any null padding needed for page alignment.</t>
        <t>Authentication Page 0 contains various important fields, only located on that page, that help decode the full ASTM Authentication Message. If Page 0 has been reconstructed the <tt>Last Page Index</tt> and <tt>Length</tt> fields are REQUIRED to be sanity checked by DRIP. The pseudo-code in <xref target="decode-pseudo" format="default"/> can be used for both checks.</t>
        <figure anchor="decode-pseudo">
          <name>Pseudo-code for Decode Checks</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
function decode_check(auth_pages[], decoded_lpi, decoded_length) {
  // check decoded Last Page Index (LPI) does not exceed maximum LPI
  if (decoded_lpi >= 16) {
    return DECODE_FAILURE
  }
  
  // check that decoded length does not exceed DRIP maximum
  if (decoded_length > 201) {
    return DECODE_FAILURE
  }

  // grab the page at index where length ends and extract its data
  auth_data = auth_pages[(decoded_length - 17) / 23].data
  // find the index of last auth byte
  last_auth_byte = (17 + (23 * last_auth_page)) - decoded_length

  // look for non-nulls after the last auth byte
  if (auth_data[(last_auth_byte + 2):] has non-nulls) {
    return DECODE_FAILURE
  }

  // check that byte directly after last auth byte is null
  if (auth_data[last_auth_byte + 1] equals null) {
    return DECODE_FAILURE
  }

  // we set our presumed Additional Data Length (ADL)
  presumed_adl = auth_data[last_auth_byte + 1]
  // use the presumed ADL to calculate a presumed LPI
  presumed_lpi = (presumed_adl + decoded_length - 17) / 23

  // check that presumed LPI and decoded LPI match
  if (presumed_lpi not equal decoded_lpi) {
    return DECODE_FAILURE
  }
  return DECODE_SUCCESS
}
]]></artwork>
        </figure>
        <t>Implementations MAY also implement an heuristic extension (<xref target="decoding-optimization" format="default"/>) to decode if both the first page (Page 0) and last page (<tt>Last Page Index</tt>) are missing.</t>
      </section>
      <section anchor="single-fec" numbered="true" toc="default">
        <name>Single Page</name>
        <section anchor="enc-single-page" numbered="true" toc="default">
          <name>Encoding</name>
          <t>To generate the parity a simple XOR operation using the previous parity page and current page is used. Only the 23-byte <tt>Authentication Payload</tt> field of <xref target="astm-auth-page" format="default"/> is used in the XOR operations. For Page 0, a 23-byte null pad is used for the previous parity page.</t>
          <t><xref target="fig-single-fec" format="default"/> shows the last two pages (out of N) of an Authentication Message using DRIP Single Page FEC. The <tt>Additional Data Length</tt> is set to 33 as there is 23-bytes of FEC data and 10-bytes of padding to line it up into Page N.</t>
          <figure anchor="fig-single-fec">
            <name>Example Single Page FEC Encoding</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
Page N-1:
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+---------------+---------------+
|  Page Header  |                                               |
+---------------+                                               |
|                Authentication Data / Signature                |
|                                                               |
|               +---------------+---------------+---------------+
|               |    ADL=33     |                               |
+---------------+---------------+                               |
|                          Null Padding                         |
|                                                               |
+---------------+---------------+---------------+---------------+

Page N:
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+---------------+---------------+
|  Page Header  |                                               |
+---------------+                                               |
|                                                               |
|                     Forward Error Correction                  |
|                                                               |
|                                                               |
|                                                               |
+---------------+---------------+---------------+---------------+
]]></artwork>
          </figure>
        </section>
        <section anchor="dec-single-page" numbered="true" toc="default">
          <name>Decoding</name>
          <t>To decode Single Page FEC in DRIP a rolling XOR is used on each <tt>Authentication Page</tt> received in the current <tt>Authentication Message</tt>. A Message Counter, outside of the ASTM Message but specified in <xref target="F3411" format="default"/> is used to signal a different <tt>Authentication Message</tt> and to correlate pages to them. This Message Counter is only 1-byte in length, so it will rollover (to 0x00) after reaching its maximum value (0xFF). If only 1-page is missing in the <tt>Authentication Message</tt> the resulting parity bytes should be the data of the erased page.</t>
        </section>
      </section>
      <section anchor="multi-fec" numbered="true" toc="default">
        <name>Multiple Page</name>
        <section anchor="enc-multi-page" numbered="true" toc="default">
          <name>Encoding</name>
          <t>For Multiple Page FEC there are two variations: Frame Recovery and Page Recovery. Both follow a similar process, but are offset at what data is protected.</t>
          <t>For DRIP it is REQUIRED to use a Reed Solomon code of <tt>(255, 223)</tt> over a Galois Field of <tt>2^8</tt>. The Galois Field is constructed using the primitive polynomial of <tt>1 + x^2 + x^3 + x^4 + x^8</tt>.</t>
          <t>These parameters were selected as it commonly used in Reed Solomon implementations. A form of it was deployed by the National Aeronautics and Space Administration (NASA) for the Voyager probes <xref target="VOYAGER" format="default"/>; a problem space (pun intended) with far tighter constraints than RID.</t>
          <t><xref target="fig-multi-fec" format="default"/> is a generic example of Multiple Page FEC Authentication Message where 3-pages out of N are used for Reed Solomon FEC. The <tt>Additional Data Length</tt> is set to 72 as there are 10-bytes of padding and 62-bytes of parity from Reed Solomon.</t>
          <figure anchor="fig-multi-fec">
            <name>Example Multiple Page FEC Encoding</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
Page N-3:
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+---------------+---------------+
|  Page Header  |                                               |
+---------------+                                               |
|                Authentication Data / Signature                |
|                                                               |
|               +---------------+---------------+---------------+
|               |    ADL=72     |                               |
+---------------+---------------+                               |
|                          Null Padding                         |
|                                                               |
+---------------+---------------+---------------+---------------+

Page N-2:
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+---------------+---------------+
|  Page Header  |                                               |
+---------------+                                               |
|                                                               |
|                     Forward Error Correction                  |
|                                                               |
|                                                               |
|                                                               |
+---------------+---------------+---------------+---------------+

Page N-1:
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+---------------+---------------+
|  Page Header  |                                               |
+---------------+                                               |
|                                                               |
|                     Forward Error Correction                  |
|                                                               |
|                                                               |
|                                                               |
+---------------+---------------+---------------+---------------+

Page N:
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+---------------+---------------+
|  Page Header  |                                               |
+---------------+                                               |
|                                                               |
|                     Forward Error Correction                  |
|                                                               |
|               +---------------+---------------+---------------+
|               |                                               |
+---------------+          Null Padding                         |
|                                                               |
+---------------+---------------+---------------+---------------+
]]></artwork>
          </figure>
          <ul empty="true" spacing="normal">
            <li>Informative Note: the last page in the example is padded to fill the full page as specified by <xref target="F3411" format="default"/>.</li>
          </ul>
          <section anchor="enc-page" numbered="true" toc="default">
            <name>Page Recovery</name>
            <t>Page Recovery in Multiple Page FEC protects the same content, just the Authentication Message, as Single Page FEC. The benefit is increased protection from a maximum of one page, up to the page maximum (minus pages being used for authentication).</t>
            <t>In Page Recovery, the <tt>Authentication Payload</tt> field of <xref target="astm-auth-page" format="default"/> for each page is used. Reed Solomon is performed in a byte-wise fashion across each Authentication Page to generate a number of parity bytes. The number of these parity bytes directly corresponds to the number of pages of FEC to be append to the Authentication Message. The resulting parity bytes are placed to the corresponding bytes in the FEC pages. This can be considered a form of interleaving that takes advantage of the fixed page length.</t>
            <t>See <xref target="page-example" format="default"/> for a detailed example of encoding for Page Recovery.</t>
          </section>
          <section anchor="enc-frame" numbered="true" toc="default">
            <name>Frame Recovery</name>
            <t>Frame Recovery in Multiple Page FEC protects not just the Authentication Message it is carried in but also other ASTM Messages being sent. This is at the cost of much longer Authentication Messages. Up to 240 messages (255 minus 15 pages maximum for FEC) can be protected using Frame Recovery.</t>
            <t>For Frame Recovery both transmitter and receiver need to agree on what messages are being Reed Solomon'd over. It is RECOMMENDED that the data is limited to a full transmission set of ASTM Messages. For example in the European Union (EU) a full set of ASTM Messages would include: 1x Basic ID, 1x Location/Vector, 1x System and 1x Operator ID. With DRIP this would also included 1x Authentication that would be carrying the FEC (along with DRIP Authentication).</t>
            <t>Similar to <xref target="enc-page" format="default"/>, Reed Solomon is performed in a bytes-wise fashion across messages to generate the desired number of parity bytes. These messages MUST be in Message Type order when performing the Reed Solomon operation. All 25-bytes of the ASTM Message are used during this operation for Frame Recovery. After the computation the new pseudo-frames formed by the parity are concatenated together. The length of this data is used in the calculation of the <tt>Additional Data Length</tt> with the amount of padding needed to align to a new Authentication Page. The padding and parity data are then placed in the <tt>Additional Data</tt> field.</t>
            <t>See <xref target="frame-example" format="default"/> for a detailed example of encoding for Frame Recovery.</t>
          </section>
        </section>
        <section anchor="dec-multi-page" numbered="true" toc="default">
          <name>Decoding</name>
          <t>To determine if Page Recovery or Frame Recovery is used two modulo checks with the <tt>ADL</tt> after the length of the null-pad is removed are needed. One against the value of 23, and the other against the value of 25. If 23 comes back with a value of 0 then Page Recovery is being used. If 25 comes back with 0 then Frame Recovery is used. Any other combination indicates an error.</t>
          <t>As it is known which pages were not received in an <tt>Authentication Message</tt> (or were erased by Bluetooth due to detected errors), the Reed Solomon capacity can be dedicated exclusively to correction of erasures, rather than to detection and correction of errors, thereby doubling its effective capacity. This is accomplished by marking the erasures, i.e., filling the dummy page(s) or frames with nulls.</t>
          <t>For either Page Recovery or Frame recovery the first step on the receiver is to create empty (or dummy) <tt>Authentication Pages</tt> for any pages missing in the <tt>Authentication Message</tt>. Then the <tt>Additional Data</tt> can be extracted from the <tt>Authentication Message</tt>, have its null-padding removed and further processed.</t>
          <section anchor="dec-page" numbered="true" toc="default">
            <name>Page Recovery</name>
            <t>To decode Page Recovery, the received FEC data along with the <tt>Authentication Payload</tt> of each <tt>Authentication Page</tt> has Reed Solomon performed using erasures byte-wise across the pages. The results should have all pages of the <tt>Authentication Message</tt> recovered. The receiver SHOULD validate the rebuilt message before decoding the actual authentication.</t>
          </section>
          <section anchor="dec-frame" numbered="true" toc="default">
            <name>Frame Recovery</name>
            <t>To decode Frame Recovery, the receiver breaks the <tt>Additional Data</tt> into 25-byte chunks. This will produce the pseudo-frames of parity bytes from the <tt>Authentication Message</tt>.</t>
            <t>To build the rest of the message set, static messages such as Basic ID and Operator ID are constant and can be filled in using any received copy that is cache by the receiver for that UA. Dynamic messages in the set, such as Location/Vector or System can be nulled out to have Reed Solomon alway recover them and the results checked against cached copies from recent transmissions of the UA.</t>
            <t>With all the frames in the set, Reed Solomon can be used in an erasure mode to decode byte-wise across the frames to fill in the erasures and rebuild the entire set of messages. Validation of the <tt>Authentication Message</tt> SHOULD be performed before further processing of authentication data.</t>
          </section>
        </section>
      </section>
      <section anchor="fec-limitations" numbered="true" toc="default">
        <name>FEC Limitations</name>
        <t>The worst case scenario is when the <tt>Authentication Data / Signature</tt> ends perfectly on a page (Page N-1). This means the <tt>Additional Data Length</tt> would start the next page (Page N) and have 22-bytes worth of null padding to align the FEC to begin at the start of the next page (Page N+1). In this scenario an entire page (Page N) is being wasted just to carry the <tt>Additional Data Length</tt>. This should be avoided where possible in an effort to maintain efficiency.</t>
      </section>
    </section>
    <section anchor="reqs" numbered="true" toc="default">
      <name>Requirements &amp; Recommendations</name>
      <section anchor="legacy-transports" numbered="true" toc="default">
        <name>Legacy Transports</name>
        <t>With Legacy Advertisements the goal is to attempt to bring reliable receipt of the paged Authentication Message. FEC (<xref target="fec-details" format="default"/>) MUST be used, per mandated RID rules (for example the US FAA RID Rule <xref target="FAA-14CFR" format="default"/>), when using Legacy Advertising methods (such as Bluetooth 4.x).</t>
        <t>Under ASTM Bluetooth 4.x rules, transmission of dynamic messages is at least every 1 second. DRIP Authentication Messages typically contain dynamic data (such as the DRIP Manifest or DRIP Wrapper) and should be sent at the dynamic rate of 1 per second.</t>
      </section>
      <section anchor="extended-transports" numbered="true" toc="default">
        <name>Extended Transports</name>
        <t>Under the ASTM specification, Bluetooth 5.x, Wi-Fi NaN, and Wi-Fi BEACON transport of RID is to use the Message Pack (Message Type 0xF) format for all transmissions. Under Message Pack messages are sent together (in Message Type order) in a single Bluetooth 5.x extended frame (up to 9 single frame equivalent messages under Bluetooth 4). Message Packs are required by ASTM to be sent at a rate of 1 per second (like dynamic messages).</t>
        <t>Without any fragmentation or loss of pages with transmission FEC (<xref target="fec-details" format="default"/>) MUST NOT be used as it is impractical.</t>
      </section>
      <section anchor="drip-recommendations" numbered="true" toc="default">
        <name>Authentication</name>
        <t>It is REQUIRED that a UA send the following DRIP Authentication Formats to fulfill the requirements in <xref target="RFC9153" format="default"/>:</t>
        <ol spacing="normal" type="1"><li>SHOULD: send DRIP Link (<xref target="drip-link" format="default"/>) using the <tt>Broadcast Endorsement: DIME:Apex, DIME:RAA</tt> (satisfying GEN-3); at least once per 5 minutes</li>
          <li>MUST: send DRIP Link (<xref target="drip-link" format="default"/>) using the <tt>Broadcast Endorsement: DIME:RAA, DIME:HDA</tt> (satisfying GEN-3); at least once per 5 minutes</li>
          <li>MUST: send DRIP Link (<xref target="drip-link" format="default"/>) using the <tt>Broadcast Endorsement: DIME:HDA, UA</tt> (satisfying ID-5, GEN-1 and GEN-3); at least once per minute</li>
          <li>MUST: send any other DRIP Authentication Format (RECOMMENDED: DRIP Manifest (<xref target="drip-manifest" format="default"/>) or DRIP Wrapper (<xref target="drip-wrapper" format="default"/>)) where the UA is dynamically signing data that is guaranteed to be unique, unpredictable and easily cross checked by the receiving device (satisfying ID-5, GEN-1 and GEN-2); at least once per 5 seconds</li>
        </ol>
      </section>
      <section anchor="operational-recommendations" numbered="true" toc="default">
        <name>Operational</name>
        <t>UAS operation may impact the frequency of sending DRIP Authentication messages. Where a UA is dwelling in one location, and the channel is heavily used by other devices, "occasional" message authentication may be sufficient for an Observer. Contrast this with a UA traversing an area, and then every message should be authenticated as soon as possible for greatest success as viewed by the receiver.</t>
        <t>Thus how/when these DRIP Authentication Messages are sent is up to each implementation. Further complication comes in contrasting Legacy and Extended Transports.  In Legacy, each message is a separate hash within the Manifest. So, again in dwelling, may lean toward occasional message authentication. In Extended Transports, the hash is over the Message Pack so only few hashes need to be in a Manifest. A single Manifest can handle a potential two Message Packs (for a full set of messages) and a DRIP Link Authentication Message for the <tt>Broadcast Endorsement: DIME, UA</tt>.</t>
        <!-- TODO(atw): is this valid discussion? Do we specify the hashing of -->

<t>A separate issue is the frequency of transmitting the DRIP Link Authentication Message for the <tt>Broadcast Endorsement: DIME, UA</tt> when using a Manifest Message. This message content is static; its hash never changes radically. The only change is the 4-byte timestamp in the Authentication Message headers. Thus, potentially, in a dwelling operation it can be sent once per minute, where its hash is in every Manifest. A receiver can cache all DRIP Link Authentication Message for the <tt>Broadcast Endorsement: DIME, UA</tt> to mitigate potential packet loss.</t>
        <t>The following operational configuration is RECOMMENDED (in alignment with <xref target="drip-recommendations" format="default"/>):</t>
        <ol spacing="normal" type="1"><li>Per CAA requirements, generate and transmit a set of ASTM Messages (example; Basic ID, Location and System).</li>
          <li>Under Extended Transports, generate and include in the same Message Pack as the CAA required ASTM Messages a DRIP Wrapper as specified in <xref target="extended-wrapper" format="default"/>.</li>
          <li>Under Legacy Transports, generate and transmit every 5 seconds a DRIP Manifest (<xref target="drip-manifest" format="default"/>) hashing as many sets of recent CAA required ASTM Messages. The system MAY periodically replace the DRIP Manifest with a DRIP Wrapper (<xref target="drip-wrapper" format="default"/>) containing at least a Location Message (Message Type 0x2).</li>
          <li>Under both Legacy or Extended Transports, generate and transmit a DRIP Link's (<xref target="drip-link" format="default"/>) containing; <tt>Broadcast Endorsement: DIME:HDA, UA</tt> every minute, <tt>Broadcast Endorsement: DIME:RAA, DIME:HDA</tt> every 5 minutes, <tt>Broadcast Endorsement: DIME:Apex, DIME:RAA</tt> every 5 minutes.</li>
        </ol>
        <t>The reasoning and math behind this recommendation can be found in <xref target="operational-proof" format="default"/>.</t>
        <section anchor="wrapper-operations" numbered="true" toc="default">
          <name>DRIP Wrapper</name>
          <t>The DRIP Wrapper MUST NOT be used in place of sending the ASTM messages as is. All receivers MUST be able to process all the messages specified in <xref target="F3411" format="default"/>.  Sending them within the DRIP Wrapper makes them opaque to receivers lacking support for DRIP Authentication Messages. Thus, messages within a Wrapper are sent twice: in the clear and authenticated within the Wrapper. The DRIP Manifest format would seem to be a more efficient use of the transport channel.</t>
          <t>The DRIP Wrapper has a specific use case for DRIP aware receivers. For receiver plotting Location Messages (Message Type 0x2) on a map display an embedded Location Message in a DRIP Wrapper can be marked differently (e.g. via color) to signify trust in the Location data.</t>
        </section>
        <section anchor="trust-assessment" numbered="true" toc="default">
          <name>UAS RID Trust Assessment</name>
          <t>As described in <xref target="rid-trust" format="default"/>, the receiver MUST perform verification of the data being received in Broadcast RID.</t>
          <t>After signature validation of any DRIP Authentication Message containing UAS RID information elements (e.g. DRIP Wrapper <xref target="drip-wrapper" format="default"/>) the Observer MUST use other sources of information to correlate against and perform verification. An example of another source of information is a visual confirmation of the UA position.</t>
          <t>When correlation of these different data streams do not match in acceptable thresholds the data SHOULD be rejected as if the signature failed to validate. Acceptable thresholds limits and what happens after such a rejection are out of scope for this document.</t>
        </section>
      </section>
    </section>
    <section anchor="req-sum" numbered="true" toc="default">
      <name>Summary of Addressed DRIP Requirements</name>
      <t>The following <xref target="RFC9153" format="default"/> are addressed in this document:</t>
      <t>ID-5: Non-spoofability</t>
      <ul empty="true" spacing="normal">
        <li>Addressed using the DRIP Wrapper (<xref target="drip-wrapper" format="default"/>), DRIP Manifest (<xref target="drip-manifest" format="default"/>) or DRIP Frame (<xref target="drip-frame" format="default"/>).</li>
      </ul>
      <t>GEN-1: Provable Ownership</t>
      <ul empty="true" spacing="normal">
        <li>Addressed using the DRIP Link (<xref target="drip-link" format="default"/>) and DRIP Wrapper (<xref target="drip-wrapper" format="default"/>), DRIP Manifest (<xref target="drip-manifest" format="default"/>) or DRIP Frame (<xref target="drip-frame" format="default"/>).</li>
      </ul>
      <t>GEN-2: Provable Binding</t>
      <ul empty="true" spacing="normal">
        <li>Addressed using the DRIP Wrapper (<xref target="drip-wrapper" format="default"/>), DRIP Manifest (<xref target="drip-manifest" format="default"/>) or DRIP Frame (<xref target="drip-frame" format="default"/>).</li>
      </ul>
      <t>GEN-3: Provable Registration</t>
      <ul empty="true" spacing="normal">
        <li>Addressed using the DRIP Link (<xref target="drip-link" format="default"/>).</li>
      </ul>
    </section>
    <section anchor="icao-considerations" numbered="true" toc="default">
      <name>ICAO Considerations</name>
      <t>DRIP requests the following SAM Types to be allocated:</t>
      <ol spacing="normal" type="1"><li>DRIP Link</li>
        <li>DRIP Wrapper</li>
        <li>DRIP Manifest</li>
        <li>DRIP Frame</li>
      </ol>
      <!-- TODO(atw): need help on this section; how should this be formatted? -->

</section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <section anchor="iana-drip-registry" numbered="true" toc="default">
        <name>IANA DRIP Registry</name>
        <!-- TODO(atw): Stu wonders if this can be deferred? -->

<t>This document requests a new subregistry for Frame Type under the <eref target="https://datatracker.ietf.org/doc/html/draft-ietf-drip-rid-28#section-8.2">DRIP registry</eref>.</t>
        <dl newline="false" spacing="normal">
          <dt>DRIP Frame Type:</dt>
          <dd>
  This 8-bit valued subregistry is for Frame Types in DRIP Frame Authentication Messages. Future additions to this subregistry are to be made through Expert Review (Section 4.5 of <xref target="RFC8126" format="default"/>). The following values are defined:</dd>
        </dl>
        <artwork name="" type="" align="left" alt=""><![CDATA[
| Frame Type | Name         | Description      |
| ---------- | ------------ | ---------------- |
| 0x00       | Reserved     | Reserved         |
| 0xC0-0xFF  | Experimental | Experimental Use |
]]></artwork>
      </section>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <section anchor="replay-attacks" numbered="true" toc="default">
        <name>Replay Attacks</name>
        <t>The astute reader may note that the DRIP Link messages, which are recommended to be sent, are static in nature and contain various timestamps. These DRIP Link messages can easily be replayed by an attacker who has copied them from previous broadcasts.</t>
        <t>If an attacker (who is smart and spoofs more than just the UAS ID/data payloads) willing replays an DRIP Link message they have in principle actually helped by ensuring the message is sent more frequently and be received by potential Observers.</t>
        <t>The primary mitigation is the UA is REQUIRED to send more than DRIP Link messages, specifically those that sign over changing data using the current session keypair, and those messages are sent more frequently. An UA beaconing these messages then actually signing other messages using the keypair validates the data receiver by an Observer. An UA who does not either run DRIP themselves or does not have possession of the same private key, would be clearly exposed upon signature verification.</t>
      </section>
      <section anchor="vna-timestamp-offsets" numbered="true" toc="default">
        <name>VNA Timestamp Offsets</name>
        <t>Note the discussion of VNA Timestamp offsets here is in context of the DRIP Wrapper (<xref target="drip-wrapper" format="default"/>), DRIP Manifest (<xref target="drip-manifest" format="default"/>) and DRIP Frame (<xref target="drip-frame" format="default"/>). For DRIP Link (<xref target="drip-link" format="default"/>) these offsets are set by the DIME and have their own set of considerations as seen in <xref target="drip-registries" format="default"/>.</t>
        <t>The offset of the <tt>VNA Timestamp by UA</tt> is one that needs careful consideration for any implementation. The offset should be shorter than any given flight duration (typically less than an hour) but be long enough to be received and processed by Observers (larger than a few seconds). It recommended that 3-5 minutes should be sufficient to serve this purpose in any scenario, but is not limited by design.</t>
      </section>
    </section>
    <section anchor="acknowledgments" numbered="true" toc="default">
      <name>Acknowledgments</name>
      <ul spacing="normal">
        <li>Ryan Quigley and James Mussi of AX Enterprize, LLC for early prototyping to find holes in the draft specifications.</li>
        <li>Soren Friis for pointing out that Wi-Fi implementations would not always give access to the MAC Address, originally used in calculation of the hashes for DRIP Manifest. Also, for confirming that Message Packs (0xF) can only carry up to 9 ASTM frames worth of data (9 Authentication pages).</li>
        <li>Many thanks to Rick Salz for the secdir review.</li>
      </ul>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC9153" target="https://www.rfc-editor.org/info/rfc9153">
          <front>
            <title>Drone Remote Identification Protocol (DRIP) Requirements and Terminology</title>
            <author fullname="S. Card" initials="S." role="editor" surname="Card">
              <organization/>
            </author>
            <author fullname="A. Wiethuechter" initials="A." surname="Wiethuechter">
              <organization/>
            </author>
            <author fullname="R. Moskowitz" initials="R." surname="Moskowitz">
              <organization/>
            </author>
            <author fullname="A. Gurtov" initials="A." surname="Gurtov">
              <organization/>
            </author>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document defines terminology and requirements for solutions produced by the Drone Remote Identification Protocol (DRIP) Working Group. These solutions will support Unmanned Aircraft System Remote Identification and tracking (UAS RID) for security, safety, and other purposes (e.g., initiation of identity-based network sessions supporting UAS applications). DRIP will facilitate use of existing Internet resources to support RID and to enable enhanced related services, and it will enable online and offline verification that RID information is trustworthy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9153"/>
          <seriesInfo name="DOI" value="10.17487/RFC9153"/>
        </reference>
        <reference anchor="drip-arch" target="https://www.ietf.org/archive/id/draft-ietf-drip-arch-28.txt">
          <front>
            <title>Drone Remote Identification Protocol (DRIP) Architecture</title>
            <author fullname="Stuart W. Card">
              <organization>AX Enterprize</organization>
            </author>
            <author fullname="Adam Wiethuechter">
              <organization>AX Enterprize</organization>
            </author>
            <author fullname="Robert Moskowitz">
              <organization>HTT Consulting</organization>
            </author>
            <author fullname="Shuai Zhao">
              <organization>Intel</organization>
            </author>
            <author fullname="Andrei Gurtov">
              <organization>Linköping University</organization>
            </author>
            <date day="8" month="August" year="2022"/>
            <abstract>
              <t>   This document describes an architecture for protocols and services to
   support Unmanned Aircraft System (UAS) Remote Identification (RID)
   and tracking, plus UAS RID-related communications.  This architecture
   adheres to the requirements listed in the DRIP Requirements document
   (RFC9153).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-drip-arch-28"/>
        </reference>
        <reference anchor="F3411">
          <front>
            <title>F3411-22a: Standard Specification for Remote ID and Tracking</title>
            <author>
              <organization/>
            </author>
            <date year="2022" month="July"/>
          </front>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="NIST.SP.800-185" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-185.pdf">
          <front>
            <title>SHA-3 derived functions: cSHAKE, KMAC, TupleHash and ParallelHash</title>
            <author fullname="John Kelsey" surname="Kelsey">
              <organization>Information Technology Laboratory</organization>
            </author>
            <author fullname="Shu-jen Change" surname="Change">
              <organization>Information Technology Laboratory</organization>
            </author>
            <author fullname="Ray Perlner" surname="Perlner">
              <organization>Information Technology Laboratory</organization>
            </author>
            <author>
              <organization abbrev="NIST">National Institute of Standards and Technology</organization>
              <address>
                <postal>
                  <country>US</country>
                  <city>Gaithersburg</city>
                </postal>
              </address>
            </author>
            <date month="December" year="2016"/>
          </front>
          <seriesInfo name="NIST Special Publications (General)" value="800-185"/>
          <seriesInfo name="DOI" value="10.6028/NIST.SP.800-185"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton">
              <organization/>
            </author>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <author fullname="T. Narten" initials="T." surname="Narten">
              <organization/>
            </author>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters.  To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper.  For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed.  This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="drip-rid" target="https://www.ietf.org/archive/id/draft-ietf-drip-uas-rid-01.txt">
          <front>
            <title>UAS Remote ID</title>
            <author fullname="Robert Moskowitz">
              <organization>HTT Consulting</organization>
            </author>
            <author fullname="Stuart W. Card">
              <organization>AX Enterprize</organization>
            </author>
            <author fullname="Adam Wiethuechter">
              <organization>AX Enterprize</organization>
            </author>
            <author fullname="Andrei Gurtov">
              <organization>Linköping University</organization>
            </author>
            <date day="9" month="September" year="2020"/>
            <abstract>
              <t>   This document describes the use of Hierarchical Host Identity Tags
   (HHITs) as a self-asserting and thereby trustable Identifier for use
   as the UAS Remote ID.  HHITs include explicit hierarchy to provide
   Registrar discovery for 3rd-party ID attestation.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-drip-uas-rid-01"/>
        </reference>
        <reference anchor="drip-registries" target="https://www.ietf.org/archive/id/draft-ietf-drip-registries-05.txt">
          <front>
            <title>DRIP Entity Tag (DET) Registration &amp; Lookup</title>
            <author fullname="Adam Wiethuechter">
              <organization>AX Enterprize, LLC</organization>
            </author>
            <author fullname="Stuart Card">
              <organization>AX Enterprize, LLC</organization>
            </author>
            <author fullname="Robert Moskowitz">
              <organization>HTT Consulting</organization>
            </author>
            <author fullname="Jim Reid">
              <organization>RTFM llp</organization>
            </author>
            <date day="11" month="July" year="2022"/>
            <abstract>
              <t>   This document details the required mechanisms for the registration
   and discovery of DRIP Entity Tags (DETs).  The registration process
   relies upon the Extensible Provisioning Protocol (EPP).  The
   discovery process leverages DNS, DNSSEC, and related technology.  The
   lookup process relies upon the Registration Data Access Protocol
   (RDAP).  The DETs can be registered with as their "raw public keys"
   or in X.509 certificates.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-drip-registries-05"/>
        </reference>
        <reference anchor="FAA-14CFR" target="https://www.govinfo.gov/content/pkg/FR-2021-01-15/pdf/2020-28948.pdf">
          <front>
            <title>Remote Identification of Unmanned Aircraft</title>
            <author>
              <organization/>
            </author>
            <date year="2021" month="January"/>
          </front>
        </reference>
        <reference anchor="VOYAGER" target="https://trs.jpl.nasa.gov/bitstream/handle/2014/34531/94-0881.pdf">
          <front>
            <title>Reed-Solomon Codes and the Exploration of the Solar System</title>
            <author>
              <organization/>
            </author>
            <date year="1993" month="August"/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="auth-state-diagrams" numbered="true" toc="default">
      <name>Authentication State Diagrams &amp; Color Scheme</name>
      <t>ASTM Authentication has only 3 states: None, Invalid or Valid. This is because under ASTM the idea is that Authentication is done by an external service hosted somewhere on the Internet so it is assumed you will always get some sort of answer back. With DRIP this classification becomes more complex with the support of "offline" scenarios where the receiver does not have Internet connectivity. With the use of asymmetric keys this means the public key (PK) must somehow be obtained - <xref target="drip-registries" format="default"/> gets more into detail how these keys are stored on DNS and one reason for DRIP Authentication is to send PK's over Broadcast RID.</t>
      <t>There are two keys of interest: the PK of the UA and the PK of the DIME. This document gives a clear way to send the PK of the UA over the Broadcast RID messages. The key of the DIME can be sent over Broadcast RID using the same mechanisms (see <xref target="drip-link" format="default"/> and <xref target="drip-recommendations" format="default"/>) but is not required due to potential operational constraints of sending multiple DRIP Link messages. As such there are scenarios where you may have part of the key-chain but not all of it.</t>
      <t>The intent of this appendix is to give some kind of recommended way to classify these various states and convey it to the user through colors and state names/text.</t>
      <section anchor="state-colors" numbered="true" toc="default">
        <name>State Colors</name>
        <t>The table below lays out the RECOMMENDED colors to associate with state.</t>
        <table align="center">
          <thead>
            <tr>
              <th align="left">State</th>
              <th align="left">Color</th>
              <th align="left">Details</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">None</td>
              <td align="left">Black</td>
              <td align="left">No Authentication being received</td>
            </tr>
            <tr>
              <td align="left">Partial</td>
              <td align="left">Gray</td>
              <td align="left">Authentication being received but missing pages</td>
            </tr>
            <tr>
              <td align="left">Unsupported</td>
              <td align="left">Brown</td>
              <td align="left">Authentication Type/SAM Type of received message not supported</td>
            </tr>
            <tr>
              <td align="left">Unverifiable</td>
              <td align="left">Yellow</td>
              <td align="left">Data needed for verification missing</td>
            </tr>
            <tr>
              <td align="left">Verified</td>
              <td align="left">Green</td>
              <td align="left">Valid verification results</td>
            </tr>
            <tr>
              <td align="left">Trusted</td>
              <td align="left">Blue</td>
              <td align="left">Valid verification results and DIME is marked as trusted</td>
            </tr>
            <tr>
              <td align="left">Questionable</td>
              <td align="left">Orange</td>
              <td align="left">Inconsistent verification results</td>
            </tr>
            <tr>
              <td align="left">Unverified</td>
              <td align="left">Red</td>
              <td align="left">Invalid verification results</td>
            </tr>
            <tr>
              <td align="left">Conflicting</td>
              <td align="left">Purple</td>
              <td align="left">Inconsistent verification results and DIME is marked as trusted</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="state-diagrams" numbered="true" toc="default">
        <name>State Diagrams</name>
        <t>This section gives some RECOMMENDED state flows that DRIP should follow. Note that the state diagrams do not have all error conditions mapped.</t>
        <section anchor="notations" numbered="true" toc="default">
          <name>Notations</name>
          <figure anchor="state-notations">
            <name>Diagram Notations</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
o--------------o
|   PROCESS    |
o--------------o

+--------------+
|    STATE     |
+--------------+

 ooooo
o  N  o    Transition N
 ooooo

+----->    Transition Option False/No

----->     Transition Option True/Yes

]]></artwork>
          </figure>
        </section>
        <section anchor="general" numbered="true" toc="default">
          <name>General</name>
          <figure anchor="std-state-fig">
            <name>Standard Authentication Colors/State</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
o---------------------o      ooooo        +------+
|        Start        |---->o  1  o+----->| None |
o---------------------o      ooooo        +------+
                               |
                               v
                             ooooo        +-------------+
                            o  2  o+----->| Unsupported |
                             ooooo        +-------------+
                               |             ^
                               v             |
          +---------+        ooooo           |
          | Partial |<-----+o  3  o          |
          +---------+        ooooo           |
                               |             |
                               v             +
                             ooooo         ooooo        o-------------o
                            o  4  o------>o  5  o------>| SAM Decoder |
                             ooooo         ooooo        o-------------o
                               +
                               |
                               v
                        o------------------o
                        | AuthType Decoder |
                        o------------------o
]]></artwork>
          </figure>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Transition</th>
                <th align="left">Transition Query</th>
                <th align="left">Next State/Process/Transition (Yes, No)</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">1</td>
                <td align="left">Receiving Authentication Pages?</td>
                <td align="left">2, None</td>
              </tr>
              <tr>
                <td align="left">2</td>
                <td align="left">Authentication Type Supported?</td>
                <td align="left">3, Unsupported</td>
              </tr>
              <tr>
                <td align="left">3</td>
                <td align="left">All Pages of Authentication Message Received?</td>
                <td align="left">4, Partial</td>
              </tr>
              <tr>
                <td align="left">4</td>
                <td align="left">Is Authentication Type received 5?</td>
                <td align="left">5, AuthType Decoder</td>
              </tr>
              <tr>
                <td align="left">5</td>
                <td align="left">Is SAM Type Supported?</td>
                <td align="left">SAM Decoder, Unsupported</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="drip-sam" numbered="true" toc="default">
          <name>DRIP SAM</name>
          <figure anchor="sam-state-fig">
            <name>DRIP SAM Decoder</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
o-------------o      ooooo        o-----------------------------o
| SAM Decoder |---->o  6  o------>| DRIP Wrapper/Manifest/Frame |
o-------------o      ooooo        o-----------------------------o
                       +                 |              ^
                       |                 |              |
                       v                 v              |
                o-----------o    o--------------------o |
                | DRIP Link |--->| Update State Cache | |
                o-----------o    o--------------------o |
                                   |                    |
                                   v                    |
        o--------------o         ooooo       o----------------------o
        | NOP / Return |<------+o  7  o----->| Extract Message from |
        o--------------o         ooooo       | Verification Queue   |
                                             o----------------------o
]]></artwork>
          </figure>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Transition</th>
                <th align="left">Transition Query</th>
                <th align="left">Next State/Process/Transition (Yes, No)</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">6</td>
                <td align="left">Is SAM Type DRIP Link?</td>
                <td align="left">DRIP Link, DRIP Wrapper/Manifest/Frame</td>
              </tr>
              <tr>
                <td align="left">7</td>
                <td align="left">Messages in Verification Queue?</td>
                <td align="left">Extract Message from Verification Queue, NOP / Return</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="link-diagram" numbered="true" toc="default">
          <name>DRIP Link</name>
          <figure anchor="drip-link-state-fig">
            <name>DRIP Link State Decoder</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
o-----------o       ooooo         ooooo        +--------------+
| DRIP Link |----->o  8  o+----->o  9  o+----->| Unverifiable |
o-----------o       ooooo         ooooo        +--------------+
                      |             |
                      |-------------'
                      v
                    ooooo        +------------+
                   o  10 o+----->| Unverified |
                    ooooo        +------------+
                      |
                      v
                o---------------------o
                | Add UA DET/PK       |
                | to Key Cache        |
                o---------------------o
                      |
                      v
                    ooooo         +----------+
                   o  11 o+------>| Verified |
                    ooooo         +----------+
                      |              ^
                      v              |
                o-------------------------o
                | Mark UA DET/PK          |
                | as Trusted in Key Cache |
                o-------------------------o
]]></artwork>
          </figure>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Transition</th>
                <th align="left">Transition Query</th>
                <th align="left">Next State/Process/Transition (Yes, No)</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">8</td>
                <td align="left">DIME DET/PK in Key Cache?</td>
                <td align="left">10, 9</td>
              </tr>
              <tr>
                <td align="left">9</td>
                <td align="left">DIME PK found Online?</td>
                <td align="left">10, Unverifiable</td>
              </tr>
              <tr>
                <td align="left">10</td>
                <td align="left">DIME Signature Verified?</td>
                <td align="left">Add UA DET/PK to Key Cache, Unverified</td>
              </tr>
              <tr>
                <td align="left">11</td>
                <td align="left">DIME DET/PK marked as Trusted in Key Cache?</td>
                <td align="left">Mark UA DET/PK as Trusted in Key Cache, Verified</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="drip-wrappermanifestframe" numbered="true" toc="default">
          <name>DRIP Wrapper/Manifest/Frame</name>
          <figure anchor="drip-state-fig">
            <name>DRIP Wrapper/Manifest/Frame State Decoder</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
o-----------------------------o         +--------------+
| DRIP Wrapper/Manifest/Frame |         | Unverifiable |
o-----------------------------o         +--------------+
           |                                   ^
           v                                   |
         ooooo         ooooo        o--------------------o
        o  12 o+----->o  13 o+----->| Add Message to     |
         ooooo         ooooo        | Verification Queue |
           |             |          o--------------------o
           |             |                    
           |-------------'             
           v                           
         ooooo         ooooo         ooooo        +------------+
        o  14 o+----->o  15 o+----->o  16 o+----->| Unverified |
         ooooo         ooooo         ooooo        +------------+
           |             |             |
           v             v             |
         ooooo        +-------------+  |
        o  17 o+----->| Conflicting |  |
         ooooo        +-------------+  |
           |                           |
           v                           v
         ooooo                  +--------------+
        o  18 o---------------->| Questionable |
         ooooo                  +--------------+
           +
           |
           v
         ooooo        +----------+
        o  19 o+----->| Verified |
         ooooo        +----------+
           |
           v
        +---------+
        | Trusted |
        +---------+
]]></artwork>
          </figure>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Transition</th>
                <th align="left">Transition Query</th>
                <th align="left">Next State/Process/Transition (Yes, No)</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">12</td>
                <td align="left">UA DET/PK in Key Cache?</td>
                <td align="left">14, 13</td>
              </tr>
              <tr>
                <td align="left">13</td>
                <td align="left">UA PK found Online?</td>
                <td align="left">14, Add Message to Verification Queue</td>
              </tr>
              <tr>
                <td align="left">14</td>
                <td align="left">UA Signature Verified?</td>
                <td align="left">17, 15</td>
              </tr>
              <tr>
                <td align="left">15</td>
                <td align="left">Has past Messages of this type been marked as Trusted?</td>
                <td align="left">Conflicting, 16</td>
              </tr>
              <tr>
                <td align="left">16</td>
                <td align="left">Has past Messages of this type been marked as Questionable or Verified?</td>
                <td align="left">Questionable, Unverified</td>
              </tr>
              <tr>
                <td align="left">17</td>
                <td align="left">Has past Messages of this type been marked as Conflicting?</td>
                <td align="left">Conflicting, 18</td>
              </tr>
              <tr>
                <td align="left">18</td>
                <td align="left">Has past Messages of this type been marked as Questionable or Unverified?</td>
                <td align="left">Questionable, 19</td>
              </tr>
              <tr>
                <td align="left">19</td>
                <td align="left">Is UA DET/PK marked as Trusted in Key Cache?</td>
                <td align="left">Trusted, Verified</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
    </section>
    <section anchor="broadcast-endorsement" numbered="true" toc="default">
      <name>Broadcast Endorsement: DIME, UA</name>
      <figure anchor="b-axy-fig">
        <name>Example DRIP Broadcast Endorsement: DIME, UA</name>
        <artwork align="center" name="" type="" alt=""><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+---------------+---------------+
|                                                               |
|                             DRIP                              |
|                      Entity Tag of DIME                       |
|                                                               |
+---------------+---------------+---------------+---------------+
|                                                               |
|                             DRIP                              |
|                       Entity Tag of UA                        |
|                                                               |
+---------------+---------------+---------------+---------------+
|                                                               |
|                                                               |
|                                                               |
|                      Host Identity of UA                      |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
+---------------+---------------+---------------+---------------+
|                     VNB Timestamp by DIME                     |
+---------------+---------------+---------------+---------------+
|                     VNA Timestamp by DIME                     |
+---------------+---------------+---------------+---------------+
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                      Signature by DIME                        |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
+---------------+---------------+---------------+---------------+

DRIP Entity Tag of DIME: (16-bytes)
    DET of DIME.

DRIP Entity Tag of UA: (16-bytes)
    DET of UA.

Host Identity of UA: (32-bytes)
    HI of UA.

VNB Timestamp by DIME (4 bytes):
    Current time at signing.

VNA Timestamp by DIME (4 bytes):
    Timestamp denoting recommended time to trust data to.

DIME Signature (64 bytes):
    Signature over preceding fields using the keypair of 
    the DIME.
]]></artwork>
      </figure>
    </section>
    <section anchor="appendix-c" numbered="true" toc="default">
      <name>Example TX/RX Flow</name>
      <t>In this example the UA is sending all DRIP Authentication Message formats (DRIP Link, DRIP Wrapper and DRIP Manifest) during flight, along with standard ASTM Messages. The objective is to show the combinations of messages that must be received to properly validate a DRIP equipped UA and examples of their various states (as described in <xref target="auth-state-diagrams" format="default"/>).</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
        +-------------------+
  .-----| Unmanned Aircraft |-----.
  |     +-------------------+     |
  | 1       | 2         | 3       | 4
  |         |           |         |

  O         O           O         O
--|--     --|--       --|--     --|--
 / \       / \         / \       / \
  A         B           C         D


Broadcast Paths: Messages Received
1: DRIP Link
2: DRIP Link and DRIP Wrapper or DRIP Manifest
3: DRIP Wrapper or DRIP Manifest
4: None

Observers: Authentication State
A: Unverifiable
B: Verified, Trusted, Unverified, Questionable, or Conflicting
C: Unverifiable
D: None
]]></artwork>
      <t>As the above example shows to properly authenticate both a DRIP Link and a DRIP Wrapper or DRIP Manifest are required.</t>
    </section>
    <section anchor="additional-fec-information" numbered="true" toc="default">
      <name>Additional FEC Information</name>
      <section anchor="decoding-optimization" numbered="true" toc="default">
        <name>Optional Decoding Heuristic</name>
        <t>With <xref target="single-fec" format="default"/>, if Page 0 and the FEC page are missing from the Authentication Message there is a heuristic that can be applied instead of FEC decoding to obtain the Authentication Data. This is based on the structure of the DRIP Authentication Messages and additional information sent over the broadcast or via lookup in DNS.</t>
        <t>Looking at Page 0 (<xref target="fec-pg0" format="default"/>) of any DRIP Authentication Format the payload data is always a DET. For DRIP Link (<xref target="drip-link" format="default"/>) this DET is of the DIME while for DRIP Wrapper (<xref target="drip-wrapper" format="default"/>), Manifest (<xref target="drip-manifest" format="default"/>) and Frame (<xref target="drip-frame" format="default"/>) it is the DET of the DIME.</t>
        <figure anchor="fec-pg0">
          <name>Example Page 0 from DRIP Authentication Message</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------+---------------+---------------+---------------+
|  Page Header  |                                               |
+---------------+     Authentication Headers    +---------------+ 
|                                               |   SAM Type    |
+---------------+---------------+---------------+---------------+ 
|                                                               |
|                              DRIP                             |
|                           Entity Tag                          |
|                                                               |
+---------------+---------------+---------------+---------------+

Page Header: (1 byte)
    Authentication Type (4 bits)
    Page Number (4 bits)

Authentication Headers: (6-bytes)
    As defined in F3411

SAM Type (1-byte):
    Byte defined by F3411 to multiplex SAMs

DRIP Entity Tag: (16-bytes)
  DET of an entity in network byte order
]]></artwork>
        </figure>
        <t>Under DRIP, the Basic ID Message (Message Type 0x1) SHOULD be using Specific Session ID (ID Type 4) subtype IETF DRIP Entity ID (Type 1). This DET of the UA can be used in place of the missing DET in DRIP Wrapper, Manifest and Frame. For DRIP Link, which is missing the DET of the DIME, the lookup properties of the DET enables the discovery, via DNS, DIME's DET.</t>
        <t>These DETs obtained via other means can replace the missing payload of Authentication Page 0 and enable the full decoding and verification of the DRIP Authentication Message.</t>
        <t>When the missing DET is supposed to be of the UA the DET MAY be sourced from the Basic ID Message (Message Type 0x1). Under DRIP, this SHOULD be set to the DET missing in the Authentication Data.</t>
      </section>
      <section anchor="page-example" numbered="true" toc="default">
        <name>Example: Page Recovery</name>
        <!-- TODO(atw): clean up -->

<t>The following example is an Authentication Message with 7 pages that 3 pages of parity are to be generated for. The first column is just the <tt>Page Header</tt> with a visual space here to show the boundary.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
50 098960bf8c05042001001000a00145aac6b00abba268b7
51 2001001000a0014579d8a404d48f2ef9bb9a4470ada5b4
52 ff1352c7402af9d9ebd20034e8d7a12920f4d7e91c1a73
53 dca7d04e776150825863c512c6eb075a206a95c59b297e
54 f2935fd416f27b1b42fd5d9dfaa0dec79f32287f41b454
55 7101415def153a770d3e6c0b17ae560809bc634a822c1f
56 3b1064b80a000000000000000000000000000000000000
]]></artwork>
        <t>For Page Recovery the first column is ignored and the last 23-bytes of each page are extracted to have Reed Solomon performed on them in a column wise fashion to produce parity bytes. This can be considered a form of interleaving that takes advantage of the fixed page length. For the example the following 3-bytes of parity are generated with the first byte of each page:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
dc6c02 = ReedSolomon.encoder(0920ffdcf2713b)
]]></artwork>
        <t>Each set of parity is the placed into a pseudo-frame as follows (each byte in its own message in the same column). Below is an example of the full parity generated and each 23-bytes of parity added into the additional pages as <tt>Additional Data</tt>:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
57 dc6657acd30b2ec4aa582049f52adf9f922e62c469563a
58 6c636a59145a55417a3895fd543f19e94200be4abc5e94
59 02bba5e28f5896d754caf50016a983993b149b5c9e6eeb
]]></artwork>
      </section>
      <section anchor="frame-example" numbered="true" toc="default">
        <name>Example: Frame Recovery</name>
        <!-- TODO(atw): clean up -->

<t>Below is an example of a number of messages. The first column is an additional ASTM Header that contain the Message Type; with a visual space for clarity. The last 24-bytes are the actual message contents; be it location information or an Authentication Page.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
10 42012001001000a0014579d8a404d48f2ef9000000000000
11 249600006efeb019ee111ed37a097a0948081c10ffff0000
12 50098960bf8c05042001001000a00145aac6b00abba268b7
12 512001001000a0014579d8a404d48f2ef9bb9a4470ada5b4
12 52ff1352c7402af9d9ebd20034e8d7a12920f4d7e91c1a73
12 53dca7d04e776150825863c512c6eb075a206a95c59b297e
12 54f2935fd416f27b1b42fd5d9dfaa0dec79f32287f41b454
12 557101415def153a770d3e6c0b17ae560809bc634a822c1f
12 563b1064b80a000000000000000000000000000000000000
13 0052656372656174696f6e616c2054657374000000000000
14 02c2ffb019322d1ed3010000c008e40700fc080000000000
15 004e2e4f5031323334353600000000000000000000000000
]]></artwork>
        <t>A similar process is followed as in <xref target="enc-page" format="default"/>. Here every column of bytes has parity generated for it (even the ASTM Header). In the below example 5-bytes of parity are generated using the ASTM Header column:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
6c3f42b8a8 = ReedSolomon.encoder(101112121212121212131415)
]]></artwork>
        <t>After doing this to all columns the following pseudo-frames would have been generated:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
6c86337bf7ab746f5d62bb7f8de954104b121585d3975f6e92
3f06c1bce165b0e25930d57a63c24f751145e1dd8dc115029b
42e9979580327a6a14d421c12a33aa2e1a2e517daaee581016
b8012a7b3964f7b2720d387bfa77e945556f1831cd477ef3a3
a85bb403aada89926fb8fc2a14a9caacb4ec2f3a6ed2d8e9f9
]]></artwork>
        <t>These 25-byte chunks are now concatenated together and are placed in Authentication Pages, using the <tt>Additional Data</tt>, 23-bytes at a time. In the below figure the first column is the ASTM Header as before, the second column is the <tt>Page Header</tt> for each Authentication Page and then last column is the 23-bytes of data for each page.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
12 57 6c86337bf7ab746f5d62bb7f8de954104b121585d3975f
12 58 6e923f06c1bce165b0e25930d57a63c24f751145e1dd8d
12 59 c115029b42e9979580327a6a14d421c12a33aa2e1a2e51
12 5a 7daaee581016b8012a7b3964f7b2720d387bfa77e94555
12 5b 6f1831cd477ef3a3a85bb403aada89926fb8fc2a14a9ca
12 5c acb4ec2f3a6ed2d8e9f900000000000000000000000000
]]></artwork>
      </section>
    </section>
    <section anchor="operational-proof" numbered="true" toc="default">
      <name>Operational Recommendation Proof</name>
      <t>The recommendations found in (<xref target="operational-recommendations" format="default"/>) may seem heavy handed and specific. This appendix lays out the math and assumptions made to come to the recommendations listed there. This section is solely based on operations using Bluetooth 4.x; as such all calculations of frame counts for DRIP included FEC using (<xref target="single-fec" format="default"/>).</t>
      <section anchor="proof-defs" numbered="true" toc="default">
        <name>Definitions</name>
        <t>Frame:</t>
        <ul empty="true" spacing="normal">
          <li>A single Bluetooth 4.x frame containing an ASTM Message or ASTM Authentication Page.</li>
        </ul>
        <t>Cycle:</t>
        <ul empty="true" spacing="normal">
          <li>A set of frames transmitted in a 1 second window.</li>
        </ul>
      </section>
      <section anchor="methodology" numbered="true" toc="default">
        <name>Methodology</name>
        <t>In the US, the required ASTM Messages to be transmitted every cycle are: Basic ID (0x1), Location (0x2) and System (0x4). Typical implementations will most likely send at a higher rate (2x sets per cycle) resulting in 6 frames sent per cycle.</t>
        <ul empty="true" spacing="normal">
          <li>Information Note: in Europe the Operator ID Message (0x5) is also included; pushing the frame count to 8 per cycle.</li>
        </ul>
        <t>To calculate the frame count of a given DRIP Authentication Message the following formula is used:</t>
        <ul empty="true" spacing="normal">
          <li>1 + ceiling(((88 + (Item Size * Item Count)) - 16) / 23) + 1</li>
        </ul>
        <t>The leading 1 is counting for the Page 0 which is always present. 88 is the number of bytes for the DRIP framing in every DRIP Authentication Format, this is the DET (16-bytes), timestamps (8-bytes) and signature (64-bytes). Item Size (in bytes) is size of each item in a given format; for Wrapper it is 25 (a full ASTM Message), while for Manifest it is 8 (A single hash). The value 16 is the number of bytes not counted (as they are part of Page 0 which is already counted for). 23 is the number of bytes per Authentication Page (pages 1 - 15). After dividing by 23 the value is raised to the nearest whole value as we can only send full frames, not partial. The final 1 is counting for a single page of FEC applied in DRIP under Bluetooth 4.x.</t>
        <ul empty="true" spacing="normal">
          <li>Informational Note: for DRIP Link the Item Size is 48 and Item Count is 1; resulting in a frame count of 8</li>
        </ul>
        <t>Comparing all DRIP Authentication Message frame counts we have the following:</t>
        <table anchor="tbl-frame-counts" align="center">
          <name>Frame Counts</name>
          <thead>
            <tr>
              <th align="left">Item Count</th>
              <th align="left">Wrapper Frames</th>
              <th align="left">Manifest Frames</th>
              <th align="left">Total Frames (Wrapper, Manifest)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1</td>
              <td align="left">7</td>
              <td align="left">6</td>
              <td align="left">8, 7</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">8</td>
              <td align="left">6</td>
              <td align="left">10, 8</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">9</td>
              <td align="left">7</td>
              <td align="left">12, 10</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">10</td>
              <td align="left">7</td>
              <td align="left">14, 11</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">N/A</td>
              <td align="left">7</td>
              <td align="left">N/A, 12</td>
            </tr>
            <tr>
              <td align="left">6</td>
              <td align="left">N/A</td>
              <td align="left">8</td>
              <td align="left">N/A, 14</td>
            </tr>
            <tr>
              <td align="left">7</td>
              <td align="left">N/A</td>
              <td align="left">8</td>
              <td align="left">N/A, 15</td>
            </tr>
            <tr>
              <td align="left">8</td>
              <td align="left">N/A</td>
              <td align="left">8</td>
              <td align="left">N/A, 16</td>
            </tr>
            <tr>
              <td align="left">9</td>
              <td align="left">N/A</td>
              <td align="left">9</td>
              <td align="left">N/A, 18</td>
            </tr>
            <tr>
              <td align="left">10</td>
              <td align="left">N/A</td>
              <td align="left">9</td>
              <td align="left">N/A, 19</td>
            </tr>
            <tr>
              <td align="left">11</td>
              <td align="left">N/A</td>
              <td align="left">9</td>
              <td align="left">N/A, 20</td>
            </tr>
            <tr>
              <td align="left">12</td>
              <td align="left">N/A</td>
              <td align="left">10</td>
              <td align="left">N/A, 22</td>
            </tr>
          </tbody>
        </table>
        <t>The values in <tt>Total Frames</tt> is calculated by adding in the <tt>Item Count</tt> (to either the <tt>Wrapper Frames</tt> or <tt>Manifest Frames</tt> column) to account for the ASTM Messages being sent outside the Authentication Message.</t>
        <section anchor="us-examples" numbered="true" toc="default">
          <name>US Examples</name>
          <t>Each row represents a second and single cycle consisting of two sets of required messages (2x Basic ID, Location, System).</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
+-----------------------------------------------------------+
|                        Frame Slots                        |
| 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
+----+----+----+----+----+----+----+----+----+----+----+----+
| B  | V  | S  | B  | V  | S  |            .....            | -1
+----+----+----+----+----+----+----+----+----+----+----+----+
| B  | V  | S  | B  | V  | S  |            .....            | 0
+----+----+----+----+----+----+----+----+----+----+----+----+
| B  | V  | S  | B  | V  | S  |          M(12)[0,5]         | 1
+----+----+----+----+----+----+----+----+----+----+----+----+
| B  | V  | S  | B  | V  | S  |     M(12)[6,9]    |  L[0,1] | 2
+----+----+----+----+----+----+----+----+----+----+----+----+
| B  | V  | S  | B  | V  | S  |          M(12)[0,5]         | 3
+----+----+----+----+----+----+----+----+----+----+----+----+
| B  | V  | S  | B  | V  | S  |     M(12)[6,9]    |  L[2,3] | 4
+----+----+----+----+----+----+----+----+----+----+----+----+
| B  | V  | S  | B  | V  | S  |          M(12)[0,5]         | 5
+----+----+----+----+----+----+----+----+----+----+----+----+
| B  | V  | S  | B  | V  | S  |     M(12)[6,9]    |  L[4,5] | 6
+----+----+----+----+----+----+----+----+----+----+----+----+
| B  | V  | S  | B  | V  | S  |          M(12)[0,5]         | 7
+----+----+----+----+----+----+----+----+----+----+----+----+
| B  | V  | S  | B  | V  | S  |     M(12)[6,9]    |  L[6,7] | 8
+----+----+----+----+----+----+----+----+----+----+----+----+

# = Empty Frame Slot
B = Basic ID Message (0x1)
V = Location/Vector Message (0x2)
S = System Message (0x4)
L = DRIP Link Authentication Message (0x2)
W[y,z] = DRIP Wrapper Authentication Message (0x2)
  Wrapping Location (0x1) and System (0x4)
M(x)[y,z] = DRIP Manifest Authentication Message (0x2)
  x = Number Hashes
  y = Start Page
  z = End Page
* = Message in DRIP Manifest Authentication Message
]]></artwork>
          <t>Each DRIP Manifest contains the previous 2 seconds worth of required messages. Every required message is manifested. Needs 2 prime seconds, could be filled with a link or a wrapper? 1x link every 8 seconds</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
+-----------------------------------------------------------+
|                        Frame Slots                        |
| 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
+----+----+----+----+----+----+----+----+----+----+----+----+
| B  | V  | S  | B  | V  | S  |            .....            | -1
+----+----+----+----+----+----+----+----+----+----+----+----+
| B  | V  | S  | B  | V  | S  |            .....            | 0
+----+----+----+----+----+----+----+----+----+----+----+----+
| B* | V* | S* | B* | V* | S* |            W[0,5]           | 1
+----+----+----+----+----+----+----+----+----+----+----+----+
| B* | V* | S* | B* | V* | S* |  W[6,7] |       L[0,3]      | 2
+----+----+----+----+----+----+----+----+----+----+----+----+
| B  | V  | S  | B  | V  | S  |          M(12)[0,5]         | 3
+----+----+----+----+----+----+----+----+----+----+----+----+
| B  | V  | S  | B  | V  | S  |     M(12)[6,9]    |  L[0,1] | 4
+----+----+----+----+----+----+----+----+----+----+----+----+
| B* | V* | S* | B* | V* | S* |            W[0,5]           | 5
+----+----+----+----+----+----+----+----+----+----+----+----+
| B* | V* | S* | B* | V* | S* |  W[6,7] |       L[4,7]      | 6
+----+----+----+----+----+----+----+----+----+----+----+----+
| B  | V  | S  | B  | V  | S  |          M(12)[0,5]         | 7
+----+----+----+----+----+----+----+----+----+----+----+----+
| B  | V  | S  | B  | V  | S  |     M(12)[6,9]    |  L[2,3] | 8
+----+----+----+----+----+----+----+----+----+----+----+----+
| B* | V* | S* | B* | V* | S* |            W[0,5]           | 9
+----+----+----+----+----+----+----+----+----+----+----+----+
| B* | V* | S* | B* | V* | S* |  W[6,7] |       L[0,3]      | 10
+----+----+----+----+----+----+----+----+----+----+----+----+
| B  | V  | S  | B  | V  | S  |          M(12)[0,5]         | 11
+----+----+----+----+----+----+----+----+----+----+----+----+
| B  | V  | S  | B  | V  | S  |     M(12)[6,9]    |  L[4,5] | 12
+----+----+----+----+----+----+----+----+----+----+----+----+
| B* | V* | S* | B* | V* | S* |            W[0,5]           | 13
+----+----+----+----+----+----+----+----+----+----+----+----+
| B* | V* | S* | B* | V* | S* |  W[6,7] |       L[4,7]      | 14
+----+----+----+----+----+----+----+----+----+----+----+----+
| B  | V  | S  | B  | V  | S  |          M(12)[0,5]         | 15
+----+----+----+----+----+----+----+----+----+----+----+----+ 
| B  | V  | S  | B  | V  | S  |     M(12)[6,9]    |  L[6,7] | 16 
+----+----+----+----+----+----+----+----+----+----+----+----+

# = Empty Frame Slot
B = Basic ID Message (0x1)
V = Location/Vector Message (0x2)
S = System Message (0x4)
L = DRIP Link Authentication Message (0x2)
W[y,z] = DRIP Wrapper Authentication Message (0x2)
  Wrapping Location (0x1) and System (0x4)
M(x)[y,z] = DRIP Manifest Authentication Message (0x2)
  x = Number Hashes
  y = Start Page
  z = End Page
* = Message in DRIP Manifest Authentication Message
]]></artwork>
          <t>Manifest every 2 seconds (half coverage of stream - can get full by only doing 1/2 of each second?), Wrapper every 2 seconds, 1x Link every 6 seconds, 1x Link every 16 seconds.</t>
          <t>This gives 1 long running link, 1 short running link, 1 wrapper every 2 seconds and 1 manifest every 2 seconds covering last 4 seconds (1/2 of each second)</t>
          <t>Either link could be chosen to be replaced by another link or not sent at all</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
+-----------------------------------------------------------+
|                        Frame Slots                        |
| 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
+----+----+----+----+----+----+----+----+----+----+----+----+
| B* | V* | S* | B* | V* | S* |            L[0,5]           | 1
+----+----+----+----+----+----+----+----+----+----+----+----+
| B* | V* | S* | B* | V* | S* |  L[6,7] | ## | ## | ## | ## | 2
+----+----+----+----+----+----+----+----+----+----+----+----+
| B  | V  | S  | B  | V  | S  |          M(12)[0,5]         | 3
+----+----+----+----+----+----+----+----+----+----+----+----+
| B  | V  | S  | B  | V  | S  |     M(12)[6,9]    | ## | ## | 4
+----+----+----+----+----+----+----+----+----+----+----+----+

# = Empty Frame Slot
B = Basic ID Message (0x1)
V = Location/Vector Message (0x2)
S = System Message (0x4)
L = DRIP Link Authentication Message (0x2)
M(x)[y,z] = DRIP Manifest Authentication Message (0x2)
  x = Number Hashes
  y = Start Page
  z = End Page
* = Message in DRIP Manifest Authentication Message
]]></artwork>
          <t>Manifest every 2 seconds (full stream coverage), Link every 2 seconds, could send 3x more links (2 pages of one in second 4, 2 pages each of 2 in second 2).</t>
        </section>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAHMY+GIAA+196Xob15XgfzzFHembNtABQKwkSE/igUjKYkei1CJlJ1/G
HRaAAlkRUIWuAkjRlOab15jXmyeZs92tqgCQkmw5bjGJQgJVdzn33LMvjUaj
Mk4mUXx5oFbLaWNQqSyj5Sw8UEevT16p4xj+ulXnwaUarpZXIfw5DpZREqun
SToPlpn6F/UqTZbJOJllapqk6kmaBJNxkC3V63CeLEN1clQJRqM0vJYhcRz9
dmWSjONgDrNN0mC6bEQhLGGSRotGAE812oMKzBZeJuntgYriaVKpRIv0QC3T
VbbstFr7rU4lSMPgQJ3EyzCNw2Xl5lKm+TFJ38Ku1PdpslpU3t7YZxpHOBeO
fKCy5aRSyZZBPPl7MEtiWMhtmFUW0YH6G+yprrIkXabhNIPfbuf8yziZzwEO
2U+VCi4ySQ8qlYZSsL7sQA2b6kfYxNUqHF/BbKp6PImWSVqrwAOKdzqcBHPv
IfouSWHhw78gwMN0kUY/h3X1/PkhfZfBEkJYbG+/t6cOcfp0HAUzdZRG1yE9
MYZDOlB/hS1fR7MZf5aGl3BOB+r0r/xIMoHJ293efl/+XsVLhOubsyF9EM6D
aHagAlhe88ZZ3v8M3oVmUU3Yvd3tWVMdBunE2dzZchWkS/vpb2Zb2XLVHMOq
NuzmdVO9SLK3yU20/NnZ0utkFMKW/K9oX8/Oz2HdcbaaLQHTvD09euRs4GXw
Vr0K0rfe+l+cOOvvDTrdvY3rTy/n/3MWjLLm1XLZGPOktPxKTFcJQHZAz79+
erjf7ncP1GNFFykN/3MVpSGhLD3A1ysdX8GNaBw1nSsHn9ETT7u9dptHwx+h
B4/o40anE+Axw40BaKqzRTiOppom4P03t17BI+o8DcZ4DR+Z0fSd0X8zhpyd
v5D7SSMFM/P9BAjAgeq0Op1Gaw/uP1CB/H4H7c4u7jcK4oBgE03ClMZxdpxG
k/yGV0GGHzvPwNnACUZhln/UfsMQGg4b7d7h09cFKOntT5BUGsAkU/Umngdx
HE7UMErHRIA2QuRNHC3hYQD0MszU0xB3NFPD64gHHE7mUYwr4j+rsKCaXUqQ
XiISAqossoOdnZubm+Zlco2gw//fARAtYXk7i7eXO09fNwC27Uar3Wj3dxaT
6Q782Wp0Bvu9QRP+LJ4DPkuf/vDyr8Pvj8tAEE4aZ8ksmcPKDgG/M0IF4B7q
+N1ilqQGJvgRPBik6uw2W4bzzSA5DGYRHH4cBYAqGUy2AkDDKOdAp2KY7vL2
//2f/5upfwuXyJIWq1mG0zwPRjgjsJC18FmmWfMfi1kzDrKAADSKlniRg/nO
Fax8FgJM2r2dbq/fbe/s9xqtwaBdApv2/n4XvgNu0GgouKpwOONlpXJ+FWUK
+NwKr6ACaIzTaAQwuUpu1DIBejthfgZECP5EkJSwUFV9fXJUU5l33SZRNl5l
GaBJFNOLzF/hGgPujJerNGyqE5xyGsUw4TzMsuAyVMvbhRxJkGUJkFxEtKmw
82qGqwQ6dyVj5tj+Cx6kBt8FSzUOYjUK1QrXgHuxz4ZqgRuQOTNFw45uYVq1
0jchkJugqm+GNVrQIgU0nYT4/3CweGuGDJwb4MNXuItMhddhrDcMUA7jMWGB
5u5AQWHwMRAIFFxgjfhcGo5D+ADEgRjwsclHNI8mcLaVymN8N00mqzHuEA8s
hPGjJfIiuPerGZMSVQ2bl011d2cu/4cPvOpMqKHzCJJK/BopYuHm834Z5TP8
46y2hm7QvRESKigwSWAPS0SbFKFB0GkqQjL4b6Aces9ndAOsU8UhnxAclrzJ
Z66ugzRKVoCg0XQapvjSAhg40Dl++Sq4hjdwh28BmRC/vsnUZQKQCTL8dGmR
b3wFL4LIE2UgEP0JJ2NsvSVMh7VrbJkHcML2VG8ZFa+BzQWjGYJejRIQEc2B
4tezZBzMGkk8u9XnCxNn4zDG5YNQFtJcwQy+h/dh93DD4/GtyoBK8PHBoQOg
AVOA9KlkgQyC5grUdYInDDOH8XWUJjGCrqnO5jAa4l+CgFGzaAnEDbawCJCp
E+yA/S5WS3tSKBmuYjm7psLpcNtzvNzBLGPoj8cA/Ag3ipdMrUYRnNcSjwCH
ABR/twiBgwHYJ+F1BA/Tc8kK7hKI6VMzOp34LJoDqYLt6C1+H8bIKAAMAFx/
QQCuKwAMS+l6bSA9K80xQ2CQlvTgak5DPKK3MpmhYVP4JYOBcNsTVB2EgMGR
O6QLidZZSHdKdZsdvKN3dyKdwNWAxf4oGws8ElNHGvESLnZ6DXC/AjyLAXJB
FvHKBeGHGSGdoS+4EaIxwCEBYmk4w9sx0sup49O3gHq3eAhwpeIMIIdIFMS3
N1eweU3zzLvwDBBLBMM8oPsHT6rxLIjgzgIVh8cmSNBwFTAxwA92RARYy0RF
0gnbnQCyApxAFAVhgu4OyT7lVBaIg/ymzoFoq9a7To12yiR9onDhESFDmCEw
aAIF+4mRhAKSAyIgcYYLEtPlCtRVdHmlZkBEZ8SB+eCuhE6KZIDfwBUE8NPi
zGpu4DAuCcOWZvNRykCBD1hIQkQCvWmVjkO7MOeUEHaXMZMjTe9xbn3kjPAq
An1ggrwJthAQFgl1EPkP7oDwVh99VLCAUYPxFV85mQGIVTKHG56mdG/TVBCz
enc3DceNSbgE8pMRQQdGieTc7jAni1XfALm+l0BWh5OIYCGwxnkElx5waJom
c8sfVIIo/jy8DIBUnSNSLoAiwhRPZqtwmSAV7DXf1WijCEdCrzAGoWTMAj3C
0I42XaV0aNlqgePQ2qM5/hrAmQIeANplxCwdWF8lfHcAPMsIyQPQuxkgl2ad
+CHhA72iAT+ESebzIL3Fr2hZrp7hXnSH3zC2IjjkVAj/7+7g1QYM9+FDE5nx
eZgCKEmeU3ePl/avD/DtY2CUNM/EfY559lu44ECu4AI8evHm7PxRnf9fnb6k
318f//ubk9fHR/j72bPh8+fmF/3E2bOXb54f2d/sm4cvX7w4Pj3il+FTlfvo
xfCvj+pEKx69fHV+8vJ0+PwR80WXbiKcmQdHrIKGRIAyIxQSPJ4cvlLtHoDl
vwEMO+32PsCQ/xi093rwB15vnoz4If9J5A1QPwRhGrka8C7gVdESLkGdeDUw
4ZhOoElgPEIKErGOlBNRgdwBGqwYUwgFANKZoTl0ZOZ4QcJkLsCkGx+fJrMZ
aMrIFuhFh2AdCIl0zErVo+PzGkkMw1g9e3ZyztQoyliqDJAvqkjEopA2R0Pg
npjQ6jVpNY/wiJ5haQomegGa4SXLRDw1TfialTqQEgCzgdUSf4HlMCtmAujQ
m61TGx2RVlC41jSngNUwJqAIAd663JUvmUNuOYx8/G6JDGeyZuxQfx1M4Iov
o0wupTNFH6aom23jHlX1x6jxNFKnwWlNoVwIQ8D/aYVDAU8k8LnwkFeeHA8P
X8JbKLjlt7V+G+oFch5csstj1CsQdgtc7ymSwGdw+miiQLH8WQLvmtMlNELU
ETxSIgw2YPQ6SA9xIwUxA9lHXZ28ut41wjNKPsABx3INN+ETYeZRMg+QY5N2
ijNXnx0N9aTABbOMyOHJi2PY2IrEMEfFIrYWqDdnZzj+m/MXuU2hwPQMRHwa
7zhmq6y+g6+HQ8JKmNAqirQo3gEoe0xJnEvqb8ADGUzE87xajWZwvEg7SdaH
6eC+BdktsF/AZfpmAYoa30YYVvg/CUS8gC2Qe22lgmGGrB9fdUAIO3soCA+H
yH+QxbMU+OYMLTLEPZ4A/lzCcccT4RZBltCMeLdPjs+fWiO0lRkqFctEtbZc
LpERXtOxAOll7ToJM9LI+MW8NKL1aphdxDN6C6R8AHu0xO3hw9GCZIsM5DIU
KxBMAZ2piPZ1NVo5c01XCBiZkRRiGDoLHdUTqCmoEmrYNhsKHOE8t7kfwpSJ
6xlTBC24oPANEmMYXN8Cf59FAenajnSehnDLSELwtG5BT6PBVY3dghU0+B7Q
v2YoPSm0s5vgFsTLVQBEbQnqahOdBMtVTCJg3dkZyXUB8hg8/SidkMp6a9Tw
/O6QiKABX2AL6MW7I0TQ0BFJmiUJPVL0szFVGUKoDxT1W0fOKspAeMdFyzJ6
iyi8nl6WsRToa04Rsz0jvOEONSkARTuKrfCOgwc01clRU72CoeQCIl0BcMGz
Wg3rE4MGrCJLgbYJ0L0flqMtfA0HH9x6dB9ntBIkPALiMwljodbOThPAcLj1
cvHYsuTRJiMBp8Jok/QyiAXgGSkoaXBJQgQKJ9OQrkPN0ximq5gVg5kgXQZv
Z9NbfoWsFEDm2TqvrRSoz8Kn0xmbEPIyGglHj1HtP2Ml5RhnQ7S/e7wKGgGo
jBlr/CCN/oh6VuBdBzQz0V1DfGiA1hoW0FFTkqoc002KYlv64UNdHxzoH9EU
5nE+InaK6glqaHD8uCNYZJZbZLRUIrpeA1BQiWH91JCTVcYgBd5xwnoQyA8x
6/B8ad8Mv8lQCJKrQH8+O6nrcUdoTEMh5xoNSKjNHJ2eWUW/Xy+ThkgTQlgZ
Iw8QlmhJ6jhh3yiEb9PwOnkLowJKrBakgBGpBNm6ZNaATUIg5I6vgF5FU8CM
MCPLDS7b+dJZ+QKtwlqzw3XPkuTtakHy3g5MO7rVRzhx7uMxSkJGiILtAb3z
MIGMGS8R/q4eS9QTPwj5/QkeGAB2ByCPHLVOQrrW2aqol+Jy0QgaXqNNrrYd
iTLnQHl0bWTT5z9heGjFXhCGKA4+GSc3bBCBa+tQAzoPeVaU4KtkNsFryjRo
kUbXiF0oN5SiEWMQ3BDanWtbiMhoKTQoC4Gy4UD/uQJw4s4c2gwLdE2dyAEz
uBpw1wFO47d0GEByWW1P8XjZsiaXmIQI5/DEnixHcPe4cI7bb7R6HsVvt11o
0J7f5q4qDOkuREBKCxSA2oXJxQm0fcLI1I3QDkF36jPcdlyCd9/lg403/qOv
/UfdZ+cwtbR8699JOcor/S0c5NA5Q8RzOUfCOFycMVtsONCscKIhmpUSYHNA
r/XRottDQ807Ou2TwYUHI7hxeF7yoVlqE/jMPEIPGFlyiqSlzpPiCgyzYgHA
Ho+965p7sdhxTvLB3WOQxBt0wz+goJtjY8xjCvOSsiFfWMB+kJ2g5XsWCr6x
GMKLwjtqZRS5wLcgAjpEBsgiEBltUUVr6zUJloKSbGhicjkKxwGqiGm4QEl5
uQzw2pMdBQgQKE1NNVwyUBZJFPPcSJPiBMQRkjaRKLD5SVvzhkKCaDF6wfAp
m5r1ctmESqJ1ogdhgdWhfQDwE5ZgQzTroz2MZD0eUAycoX4dsQIWMbmNQYdg
WVjrQ3B8gTV8xBGQQzqBVQzXYBKNSXulxYJCE8GL1yyym11pbG+KMG8dzwQd
oeU0DRnFRoTEKJsVx8ATcgVOwxM1YrnCIJ9+QBsk4gaXhj5r2M+YQwJmbrB1
A55SzI/Yij8wOdr0QoltnHiKgE+7O+XKWX5uhU+jMbA4EjG/Jqsa3nJ9HjP0
F+OpBjKUa6phSwcA+Gc0dyfWMQdgr8uoWvINmOURYB8tkMQ84knojk8j0hqI
oCDhnuVnyllXSEES6Zls5bi4DB2vxiGyRN8fae6IOihvkMdLRudRmGbkYPzK
OZEFH8fdwTS6PIBxySfUAJpzGf/x0ZiiaR59qPxv+Kmolir+tEs+65R81sXX
2/BVV/VUX+2qPTVQ+w/5rPKHhv/z4L8r7xXv/VkYoLij3pcsdNPP++IaHjzC
Q+f89UYoYMntDFDy113DQ0b4dHyoONhwoKptoJXLkENtSswMqtpTGDzCD9Cr
p6v5COV794tKORxh/E6XJsiQONNFLp1KngfyEo9nK5LnrmiFGajeK7jlC6BC
KA7QpaSLqx4D3Zg3zIXmYJ0/PjKRXJsoLW7k0Ye8n0B09KKtTOgxCIWbXaEg
Pw5f1Oraigd8NUZD2CxvQxNBOgSViSgp2x6FjsIQbOFxTI/++w2xQKDRWcdJ
gLqciP6Pu7gtpX/COS4cFLhgdUpP6g5FxB1Y8sxERFyUH9sFBtkAdb3LgnkD
OTKzx/O1wTY4i7Hy+lyEaD2tSVt1lhgNhdIFaNfvovlqjo+1d4UrVKN4Er6D
QVoonbT7pXv0g3sydvmnlm+Ur7LO1lliZYRh6OO+5bPSS+l0G4jeayED4jBB
RlQJVCRIwcjQu4km1IR8SeSsbaqXZDdzWWS9wAIfAZO7RHQNJ4+YuRqVcyNz
xWCK44h4K8N709YVQ4ePxE646ToxylvbPdq4xBTABiGSypLVUjvhteFZh9IZ
gySpBvpbx8cDayL/TG0dh2fa/RQxFvUCQx/QZijLIy8+S43XUXijBUL6gFAd
YzJWscH4NRt2HBOwKccHxAQFR0MJfhaM6UqSKuSTqw8fQL1ahzV1AAZoGrj/
OVr7QDWRi1H5HYklJT85ePD1zcpZ4TZm+rFrcObY9v12OGwdobnliW0/zeII
OSAeITbukPmXjSjbR3jwGn4Lgo2sYXj0XMb89DU8eIRf4DTlZygRCZhOgAf6
8BHuv4bfwmnmJUohBSBR7hLHFcFz6HmIiQw3C+/mbwCKpf0+D4OcnId6uQjI
SOG/i7QcR8yB/3kYXwJLqgK21VCKZimgAao6GyZ4SHkKzUg0F3Cb3EDFoQuL
46DxI2NP4WiUrIw9Fa46KMn0trgkbWCkZw4pGWWNpK2F7E2yNfHf7JE2Pl/k
9neBixmFyNtQEKtbUUTDjoClqvkXBZogzE0ijHab3XqgyPPSPCwuSNDQLowZ
jVU3R1PXsLCxPoWFs3kCjax18eGxbJyZcHESEPGpG1RAjik279DG5uXDGbxA
PS3UIGR91+khBXWAvsCW4YIkSS8+BtlI4jyfkv3GeQuj28QcSOaghbakGRER
98u2dStuVVGIRJhhbI0RvkAgo+gY/OB0eEpBN6HSbgugPRgDa0epYxyDE310
GF1HbpChRE2gAbt6OBzWdKiijWglRIlQDAriMFllaMpCMXmk5VxZYpNnpkXW
deSQrDVCSzanuaEWKTuB5bNbWvy1C474moSLkF0KCcuAsC5WkjKEK4iyM41j
s+A2F1FV6hLW9kk3Spf2gPYrNnTxhViJVZe834AQvkAv/gMU3hci66KRDk3T
M8Rn0e/QxMe6Dtn99KSqo4kKaVn8PirlbO7jkGFCD4RGJgF3sYkJEJuhvJnZ
V5vqWXKDOicHy9lts72Sg0RZmCe7r3gr/b2NHRxHhTaGNUTLnHjNQHPsg01B
fdQ/1ion3kU4T9TbMFwwJcyWognC4XH8zzhNMr4kNn1g6YSxSggcopyOWatp
BSZCTGDkwdfcK8qQKeEsDiHEbeuITqQl08jLWiEFlKLjbXDzHCOgDOQAAiZE
wazZPcKmeoNR3Tnqwg4P/bjRk9E7KpSSgufnmMZHwVQlu4Cle6F4GGq7bzQW
4NEU20TuKXsHUtZn3T0HE8bCJEeKyelmfX/lB31QqbSb92AD1mUwtf6raZRm
Zs2q6hi6MrQsXKXJ6vJKDUD17DAtuBButNlAIlLLhaqyF5hNKy4L8oSD7YvH
K11TOgoYDnxMMS9X5DNbEc3rtNraLETGNJnOWHjI5/JOvilyZx2G9vT4kOLP
SqLLTLJzZYgOfwmHcUgfe2g01xO6ot3l2p+0fbMGtL4uT26kjAe9hz2uvs6a
V+OT5KMnmUNkgHscw9RfU92VArTK/g5u9/ImpFg2tOHozCQBWFMEpEy4DeEl
swWibqs530YTI0eBDCu8wjOyQq2VM6pwdsCYEdDhuwAdmyVGpYIAYtgU7gMD
78hWQSlRDaC1l0DD8alLiR7AtIuGpF1cY5QdW1MCTqICPj7G9DZaxCSU0E88
OR1axXa0fC4cvUyTL4gLv2uM0a11hVIeUCW9HZjIkoMtCCjh4WVoTPjlBY57
obtVzTI5nPMpGqK9B/ICnfCpb5UXHuh69YCavGvV4Z82/tPFf3oc+g4ImZv+
WZCBFDZwl0AfMZTF41VYE8Plih5c6KxhPyC/eneH3zeSBRpq1QttYsIPYYUa
D6LYWzpIfJwTZIKzqmxzbXeUs0RRo0L9kHUEW181x30Q0q9SimWD45vOAKOW
jtGbLckoBpVFLoHS1d11YcMBFSd8hUz0SVN97+b3cGSDnjaQ5+qu/EXW0TPx
bp8c1b0gCOChmRcUzJEUsMjDVUriwguJdZPja3fKzo/oYf6FfNiNjZqraTPy
aJaM3zb4nGhWlvXZU8NKKE90tho1MC2W7t90RcqgFWnoMvCrmhjJBCTR0Zs0
/A8YiKFOgfg8Cadoqq7+cPqkps4xr2YJVxFBCiCs9txN2m+J3SFgHemb82/Q
bL1EFZQIgCF/hcMXRk2SgHPZS68dknP2bweY4fQOaNftjPN9ZLGrpQRcAyVZ
JGM6ilZ7B/4LTHNftVoH9F/QYvQdQBN4nKgwSGeR6zHnTXixSZGTSuaBbjil
whk/nA4/G+SSxW8ScOahwEoVyXSKQGQDPH0jmXKrDCPfgbQjFuDOTBaA4GsV
A3WxLgI+fuEgoQETOnZAarxOoglF1AQmpIZZu8zN1/oSZORsqfPfipuM3Kj3
kkBamD3DWBnM3cPIVM7guZVoOEyDXXBQi8wKO1sBezHZ5JxzSZv0Sjpouugk
69Z17jiIo+IxvApwYlCK4NDHmaYhJg/R0SMocRfphLnwY3rAiCI4GT5kIp6b
aoiB75lkJNJh3OjFk4NpyfBnTLbgVx0FnHyF0mtAX5WfEtyGVxICen/yqING
Mabok8kkkvmyNC1YgMdDzm3YqZv0oYV0ukSqGnMWsciMyBVZCYxslFGehUn8
NVOK6q536+0XxijQw+2PQxKaxC2VH9SPhTRBl2JGQmmfxFYW1dXdY+ObRdcY
/iER2No1xrRLi/MUOIsqYJm656hjOI/euvZ2ZTqc/WMl/N+Xl8soXur35ZPA
fZUd8P1HeMgafhM+CXOUOmyGbfNPkA44/mBiq74mCG9m/H4ZyFiQ7gAD1WQB
hx2WXL1qwuL1kioIhJTXzNMhjwbqIxZEpHY134hv7ryJlPFpxCNtSNa75AgO
s2dj7caUwWUQOaH0XqGjvI33pZMHo6onh8OXTC2nYkxHh3vK4e4zLisiZT1m
GEC9pBzb93YZ70FhQ12GjdjrDvu90sem7K9rf+gFUMyYtrx3AqnzAdPuDPBC
x33hR857KebB1OwLXfcFw9JKWJl+oee+wCJ7NZ9Co5dkj68EySTYiU+R8+B0
EAtZkcly1GqINyQf4FASv8IilpOCZ6Ot1ZkJA8F4/4ASGlzzgtXRF8A0NuUo
4csSyM8M3CqAziRHx2e1soB9zzkDIg5VPcjNYaOoRStkRZRC+0lXHQeLzGbZ
EGNbA2PN0IhXOzxWpyIcn/lQkIu6AXPqFkkKOEK3qBwlmhtQ2BgPtQ0Nl8Xx
wlxZB9MxrWV0g6tPtnURSRLuhbH5iTjibhiFSJORRRJW9eLqKlpeiBnuQlsM
7Cj61SnWyiOcIf3CBOx4SbpLjSICTAdyQGgYTDJwVphRUjiMWWUUxVQKYvQP
eAPfpyCwbDXi85WqK1Sp5iZWiyjkkk0ap9hTqI1VfskR39JgsNBQQ40LEWVz
IwGMA85kupTUo4TFULNYu8oongDtnUiWMWlaQWZNMUbBgnMRE7EoKca8iAkM
IWgNOF7sK7hNLR27qVIeOsPoWgPO6cbVC/j976P27kXNj6+6yKwwaO11+csS
Yu64PWY5HRbGy3PE3aQde/k19uVIAO9MC8A2hE2w2J3OhBByya68mP+j76iA
PdQdsxdaPeecJRHOpg1rBUNEwowlWocrzbsJcJjaB4tekelgHoJGGEfZPGfa
K6OBnAcYvqPybTydTlFaY1nLbMwiUw2dPMNji0UiEEZQ+33J65/yszUqDY70
o0fIa7Afu4atP58xGusT1vDLxVLRj6G8Hz3CvdbwGz6LH06HBXvkr7+GJ198
Dff++W2kgHwdYesInrXtC63h6wj/dCN8OoVx7S1GMtT2licsRx6LMLten2VL
jFXhHP2XNDo3WUcL3ibMq7zMg6eRsEx6UfrkATlI63CFKFAzy8uDRemPHaZ2
deKTkJA5Nx9ks5zOVVM9H39kcnaM0rC2fIAukUZrwOAXU2qGdNtMx59w1JEG
m6m+IgWLdakHXdMi77kWpy2I8G7spChTOkHXRGxI+Zw1pXxxes5YdjQlSX3n
MjpTN3BGymAudQq+rJLifNys5vSbjIsOkAXDrxkpG4HXskRivdwVRd6yJ1J3
k9eIioNdnC2oWRZYoZXdr4qBJS6/mDhbrsM9ZIQHrOG3RmRRPW3gb0JjDQkw
2Z0b8NPQz4hSMv8h1ZfYyuRgt83IrOroONe2JBabmrlQaBz3CyDYImBi3OaU
/nquHAJSQCmHwJGoVBbG2h1t1W8upSxebgzzzYfdclV0XUBKDBJUeMKt6JVZ
E9/zZGs1Ap7uSpy0DAozHZrQ5mGK1W0pdogCDCecnu9Zu7nyGxJ6OBDM6cdx
9Ci2Bohnd7WjaPMY/C9KJhJhhcYzYCNJjBHKWQhEGqiZE/clLwlGlLFPtLhy
6XOgxDoKbxZlTuVgC2E/gHZuid0aO6ZjDbXmcKrwoas3EcZRLJeOOattn49O
wzcuCrcsNxz6lRjYec2mw+osehsydxXTM94pXCXajth2qw12xe25VkcBAlm6
VnMVc644AMDWzZd4cth/2+R+Gk8EfxmSn6nHOzRvboxLW5+SOaQge7dTAEbN
Lgo1A8sqU8PyttTxJGmCavdR1M9Xdidk/pe03rg4X81qa576PbI753Z6HE9T
RW3UEl+ukwOxipdinrbRuD5FxVBtI0OyilByfXUut1AaUyiRbh2xK238lvh2
N/Dogi3aF+beX5TYfy44EM0kPqNjUuJwxVFoVoxkuqR2sLp7rEsGG1capX5g
qHXBUbR+mJIIK719bjPQEA+19UutEzQQtsN7VAVe5wpzWAhqIbMwoMIJFHSl
Sy7Bh9c2JlrnToj3wipiWiZxs9M3OzXz7kxmlFw8mR096Fxzt/aVEloK8NUj
sB6SZeGC66zAv5gFuCSy8Vdfw4PO4usI/xQjfLVCfx3hI0b4vBIjqG6NbI20
uE7wecTSElVkvM1FcriGRm4E5SibFLvsSU0iIPhiD2cf6qr5ZTXp3RCRgnBR
W6cBklSyNIJSiRg1Yl7jmDQdy6tTZlLUWL8eN4hBJjhHwtfIeIsW2AnvYoa2
BL20M1iLE/RdnoXYrbGVNV1xvZ91Z9JUP6LcZswf2qKrCxvZXB4yr9gUeTMW
gqfYmScwrU3cPOBMzFQZ13JtrtkTGZej+WIWeYWbST8TWzFaZqgvnAqcNn5S
FBlL8HPbrXILOfVzc6t/8ms+Dga3TviS3+KHHlospQfEmiA2U0KNOgZd4SZM
CBm5JACnNyTB1iX/xBjngexjZBQMmIwkTBZbeG2vt5zTbp5jsncgeYnnlBER
UYOimflCqwX6FUEAwYkR3iLpuLFa4In2cuaiQlU0STiPsB+ZlEVwZosy6w6R
qbjk9tKEgHFpsVWaJpcB50s4tIBWRhqU9ZmgW4jjmamP1yJBVwc2D7G6qI5E
4y4Y1ruiLUkIVxxtlUl5ZieEzom2wyFEG2TjLFEvDnaDadhuSVBY3lDLiASj
Q9xaaaT+TIwxqbq2F4ypCRBz2pFRG52Efv/MHGOltpNusFZKNJteiA4J1Qcq
FmhJ50ymhVwaDwswwfKWHkZQ5R+1nc7EOCqXfK5u4ERwGuM6C7i2vh4BM7KI
lOh2f1gg2ynqgYMgmtkqvdi6CyOTqVbxjMoz6EYnGJcoBgXEebzfYiomc7Qp
6Ostl2zoDTJK8JLdHDANNAGT23HyJiDnXHgdSCKLf+MCtxBhr8Dr9MFK5k3V
2lTtMJnGkUs8yRkWjZ6sxpwAhIUv4Uz+DTjkmOAotUyMy4E732WOCb3UQKy4
46um5GQex7BQp6WpGC5mUgk6Vu1W67+bRSg3/y4wJbKxA1/sj5KbUfzFJv04
mDWo/6ktC/nxRnJOh3Zwe5uZnK/iTaJ7KOlXq/k0sRqbitlNIg8JbXywQf3B
ZnO2+5RnybG57KI0wfiCreLSa2aMLQFFxuEErHw+eZhdUHsjE7+qrwEb/KkR
nqG7csN0nLi5MUsjG1JYtDcJAY5oH7XG0+Vo8Fo7pEXfV3JRI5AnCQtUmlZI
PXVzr/n6zrA8ul2HrG95uxA/EMYJzxfYcsmcipAczuYe347ZoFiSN6kLGblY
Wwh2kDjYEsz+avGyGkz5CGtSQB8wwkPW8NuFQ3mhgIeM8JA1/Bbg8Iv5gkrI
2wNHeMAafgtn4Wr2LuX21HuDWCbEORdZ9phRTpxC556jRxif1tv1UKYJTxpR
pEK102hjQACIb2GQ3WqRyembVToq6ZXYetv1ELk1eF1vETprdEUe13FU7jSi
2jIRBXNFpiENCYcyTXUA6z2R9hFcLUl3aoupf+mldnuZRgsIB9Jjgbr/j//W
aKjzl0cvq8HypnbA9QbG0vR6nkxWs+Q71Wj8iQH8KgtXk6TxBCUMbh0i6Hn3
2JM6APxF0QSdS14ABYgl5iQ06/qWAbNGZNAN7zA+JtN5V0Yyn+cGo3y/m3A2
05XL1wgbIiTrEkAL3uTIbpIbjLjNT/JTaRVFVxdIyQk1QrtQxGdt1QGWGUy5
btMGlGM/Mq0JNB2cHs4usZ7g1ZzlvpeaUQPcdckbxnjCjEA/zZqVrkxVKDXg
GlnKXsT4IRTkjYJQKCCgnW6OBmWmaVJ3H3yFTSjjs2fDPx+3OwPsknt6cnbe
PHvVHLRajfagD0Nxk3YJ5uPVZLoS5oFIIWaIqksi62pQV4+oAXA4B0UbG3Si
KYJA96jGrzKif49t6jny8N1SScc/+xbVAuVAIGqkyX0zx8t3KprILfiTOtF1
EUGDOIUXD3yQaNU5czaMpis0nCzC2JxG+G4BIpwXc/jy+2Gmr6SH2LQkjVzf
AgGazepOIXQnYLTu5mDJJ0C9FAZypGq3hxsD0XGSzLHfKuAzbYoc6KNVNJvo
QzT4bancpnuJu3sbY9IgZWB5i89fcY7ZJWMLlyiDeZeOFO7TMQwe4kRJUSbW
6Av+s0gmCimKSH9EjqdE7Uisuhf+Y1qf0Hl7ipuN2XAbb6QNZIVzHQmrpTDm
ZtK2bpiqszFWr8tXLGSMkIUBKMQ8E7ZlwbNuKhx8hNrBtvPWWBzjPZrbG0+p
2nlzLL0DmFWpcKVGOmJbnJG4u4NkxeJfThkYA0db+m0o7ZN1SU7BsAVXz/Qg
VbWBzhReuCbAt2Ys/rZBQbmuLMV3r9hGiM2IWFXmJeAofLX9YmmkX1pFWQeC
uByaB9UQLVrOPxmm6wK/GlgYLEgnZD2hYHUTY+5Y8yjxuMSUh3hhTMZlRVZs
a1zOxWbw6BA3XfOOygFKE28uw4IMk7qNOZW/LAl1no+mJtBbrDJianGsMQ+w
02yqncSBdBK+h8QdrYvGciqyGvoRiBBLOJ7TrJs+qQl7jJa/K13bqeD2JerD
rNOMeFluTYd1Zed/j7oVl8HLK1YEE61C2XND+/mSC2U9uOreyZLUocxl81KJ
9CIP/AvJf8ErZ4K92u22lHXGOS/Kjw0rcL13Me29OsXf/VoqbtUUUzfFL5+i
q5Loi/ceZEIhN+6v9NBhqwF08ik+dPwORXa627P8n29AesTSJevLmd49duuU
VirIMDxbb31LKVQyI7PD1FAblvOogDdpu2Xxf1WvqHFdlw0PTtkxyH9yiXGJ
3POLWhfYu1/KVfxXVMr1+BAzckiXLPM1+iF9XglyqsBK74+vwrnnJgomEyrj
K6UetN05Y5ZuVB5/0a7BdAftrwvHIe4/6sGQthQS/NEKIP721VIaD+gTQZPB
rdQcj7RD1w7Lr7Jvg8ZCLpImHHMZT4TLzNA8zXtEr6FdRBUZ5Qo7pGag7XAR
JPIMOqlkS6kDE8gsQYbFLSR7TM4kA3pvLy5Cl0pQAPCxUiZblqlGNH6ltUNi
YKmcA2c54JSydwI1Ad7YpnFuasWAsr6pwuqOS+2h2PHyrnxEEybrDKZTEUiO
4DIgUtpGhkUougYGFu63FWsj5SzOlugaMi/ly0c7BXDcim6SIBfcKu5/uiFW
Fj1vXNZ6nzolZXXxXgd+A7CG3ioQ4++ldsexnJJ6vQKxTPQ1fXTkBSIHv195
nAuHI8AQPLY8OBcopbDoOLwpa6hG/TG164KjErA7u5TYxyQUO7lpUqrDbh8E
QCYNsW6FR4G97OeJyB9DhcAATCYQmfSNhcnDXNdMQ6bLFem5sJY7MxvxmD8o
9xvaIH1x4dRFR6JMOHyCndn0DHgz6dNWzUnkGHMmUig9k2/EW8TFJ23jbu0V
wvMR+u2uAzUPk7Noy4tv2nHdhyVVUuKC5xaZjkIfmc5d+yZIz3k6ABMXL7Hx
Z3N4hFAJjpQ3UnYBZkKquBL3ybR0x7NwupQIcB5E9odNZkquslz78N1VIK3R
tfYBZyCtn3lgW7gU1TJhIBsASgILrlj3ewMtCESZOV2Lb73Cp8F4TH0E0J3v
HUAM910OjzodUDPWOatSZZ0MWzrKITNl1W3CL1fMrDO11SH6iTgjF2QIo1+v
wtmC0yHCnO63LlQIjkKmN+eKPsKYo+u1laNwnGSK8PCv2PsAb5/TC95WB2Po
i62V1sr507TuBn+OZkGLMgRGCv7itvJaX9LhbLLnv9O3VSQwf6eT/9tPdflq
8vfZInL+oKXX1F1FqZ0dQV75UuV2q6rPX53UrKgjtFyTbvgSBoHbU3VmUn/6
IxB0Hl9hnMgqRYPo4cuj478/HZ48f/P6GL75AP9zF8DV8WUVYuTPT0tMXebO
z8tv/AkbJmyfmie+TIORMXdgtBl1n5TmKTIgiJFsfJaKS2QYQK4CQxCsicP8
UTlwz6+podp7NWC+ne5PTXkTJgfdmhGMJ4V7PqPWHGiLxTsIT+EHf6eB6VL+
UVXbe0C0sQvrvzpfUh9WtGD488omsdAUoVCcxA28pZlDZgpTIkjNtv5Wza3g
D6pTO/hJOpHLaPcFtnPKNJZp+8Sr8Vei7ZqFFRUW1P5JAa8IZvz8fRdzw8wR
hUv0SawwEGxTUzB4Sz/392Ay0+e9bkk8iZaM7AxHz7mv1GxMQTDodNHf8U0y
k+A1gvP2Jv2DWotYRRi7A0unBrng8Ddoq+Mrga03Jd01BKdLOe5zk/3vzt4c
Hh6fnVU+aDVcPfYInNbDXzlkkErmMfU+JDqHqvmJZ0XKKC3ZhKmGYowCyr/i
StrsVCLTWFVoKrCjBvaCmkvNUqkgJ3wCAECU1errRAqqWrZBwBFm8scFXsAJ
o6RfxZcsb7hyxN1j1g0aoPKKocHItHePQZhsyPfSw/w8V3JPhDIjZ/zl5Wvb
BsIJ0TVOB3mB6RnGzIm9e+HkxzfVS+okBe9t63dbKr5Kw1M33R7H8tYmFUoY
jNgUTs+kxQTzthbwyrbQxOLW0+iy4UBRtw8x1AvVAOnzg0IlrPW0tjFEWODG
tQB8oW+LaERqN4nU3a74VrkUiuyONAWjdSD82y23SxcLR1q+B8kYRHwSpLhB
kWbs/FejffD7MIn+9vrVP7Cl6i+RSPLpgTv0N3CUP3a79u+Na/j09rYb5qC+
7q8ExT9qhHv9fJbC33zBvl6vX+h6faYR1lqBf8U1/LojfGavh8c4tch1LPW4
8uYOLZdoh4gxl9yh6FaUU0SAKlhPY3FfqjSZzfB9lAs0s09i9gEX5Y3L8MKG
B4tEoYWX/NPCxy8wetgriYARXyADUMcK3QzX86eDfFCe4uHa2SmHDDNWrMl4
3Qo4Gj1hEy5J9CyJcLTUXOykuTUak720GY5i078WBVup243gI6d/FQZDH01N
FKU0pF5sXGZY6+Ec91BFDw2HxckEWu4TCXWdddjsx1o92YBkbYKOHcmE9wmM
XcM3icC+3ezuMVm118vA/LWg1tNSuxtLWtR7EMQ9ilskMfNA3GCvARsBWNzL
k97SnzTVExTwpXVSoHPg0IM0hl1L+aLU9PkB1YnslroTJjyHPgzyquuGwZL7
5Np7UNcLYFKsSJ/MkjmGpyeMhhfYAbquOp1u7ULXIvo+mCUwwlMtXl90/mNw
wdKn9xWXDTf2KFfix+wTjMVaJLPbOJlH1JxJXbRBTXz3Hx36t0v/9ujfwQW7
ETLSKgBm1LLzBsGahTPaoZSNxyB561ICjPF25fv1qdkQpU1yfb8bqtuzmCW3
1jd3qjtJDMM0wVQT7HiE53SG3QJA7cbyQrojm6qeDs+GNaMW/JDcBpecITkC
JPzbDy//Ovz++PVP35LunIxgLdx1ABTZFQd+chtXrsEEB73E8v9sxjQ9aSk7
5vXJkVEwLIZ+4KQhUsNIoTTlC4tYuUa/YPtRlz0aSisltlAhB985MH2I5rHX
sZoHjlimYSBwdzvu53SPySjvTpxTOLpfJaKvCocHSX9M2gkoHHsd+/fGNXxV
OBiS+oJ1vl6wryrHb2uEz4fcX81V5QB98AhfkftzjfDVVPQVtX+FNXwm0epB
a9hwFv9EglHeXGXUsLy1qqh7ufaqsuQk4x9iE4jkIMpw1NpVty42CTFT9k1x
J3gvoN3Wn5XEBM/EIGYMMWD4X2Fto8LaxabgpKFJpkFd/WMlBS3KdUtK7St1
Wo1AYZ2yXYICsdgkwxPhANIiyom5w6wNDp/hgDwTCKGfqWI34ExMWk7pFarg
4S0PC0GcxD5U6qWWpnt5Fqe6RZvvtvTtEJmu+6QLSqO627iJMjhIzBHBSD8u
u81lDUrCjtwOZ8GaWDiGrv1uqU0o1jJmIhnIDJgtEgwZEYDmw7zEQSg9MReL
kA2I60+c519jk5M2m+PQDGKXYMP8BPkJ84JLUxzFVpem7tUUz2ZMOWiotBVI
Ax3XHkyug3iJsBPb3zR6J6Y/MWI2VaXCbZvxw4bcODnUQHHcdzhxDSsmqHKq
XcbGeCfXLWfk4/vG5UsrldyXm28cBjhsuWNi3RsHaSpmYjIRYtQBZ+2UdQDM
qKe4KTqzlMPgTMI51kSfcT3zdb0V1Bu6hJ1ey+bboeFQ8SVs9wWB9OVEWFE0
vByjsVOKkdCHihgvc6Di0AddxUfSuky9kFjq2weXaYhl6dku6iUD8t7de/kN
p/zpdpuvjw9fvnhxfHqEVlJdbEqbVqmAjszBxNcr70EBOtNcdSOvFaMg9vEq
TRYhgOFNTBbE4zc1PWDZGBKPKhHTB6r9Tj0JsmisMPUA/tCl83d+AHgmKX12
JkXP0KX/TvKQYSEnR031o4ny55InNDjHqOiYbHilkAEQLG1TdkQ1XdSf0LUa
ILasTSBAcnsmdmwA3t2dYT8f6vehklkpmTQnm2/8OAkzisXdQCCzexd2zzch
wQm8JZsYEi7go4tFlzp0jElVAuLpBGyAzLSA8k0pDcu3E3NUbUYGRoVLXCaR
Fq4HaO3YOhhnXVIkU2q3CkKUGVx3I2V0/JebmbfO8GsiwIM5hdo6Vl4JssXb
g+G1fI3Wh7bTDqx9WHbDkSpcYCi+XzR7UxN4Tqt6MIUvUKYSd6PnEspHavsS
VpGsGV/eTSKlHCRy1kLzYnj0/MKNg/RqV2CQUkOClNJwnlxLiXCGOMZPhV7x
Mfa+YWXzbt0UQ2deUf5Yn3x0na7ilGOql0BrC+xDLT6SnDjpCmI8SL8wiLxZ
DhXO2EkksnuO9cRN/SrEaZusg7HauswfJ7lzeg/zIfIccXsh67WFV9e6FjED
lF4SdyHcKidRiIsGcr4Q4g4uIKvVi+RhHCyCMcVV65L1EylbRnVIM679p32y
JslVEoOyugLaQH130QVkpiQyiPFyuZdwFXX2tsB6J8lqNNOuV1Nq0CzJ4f9j
yvKJKEEa+7sGqSmkb1cSNcNmndQP/d1kNZ9z6Bs2QsCsQyZEJl0kE0YeRrSJ
NTch1Z/YsEZgXwtdedFweC7gIuUHw/kCoIqnRKuolTrpswtTv0/Ekfs5lon+
rKMqcpISYK2zRzYNV+dsEjwGfVcnXGBMLivWOZD0BXH02qTyvO6G9KYQ11Ci
yhhEtxF+lktv1HUQldaHPWA0tYfilmOzKKcxxtFwhGVrlS1ztQTjqucaqqLT
ZpbVrLmggjW64kS+bpxUgNU1g6V8halUQNlLphkFcazxEgOJfU1xrUSPp6Al
ensM/mN1H31HgLhvszVIRXGVusDA+GoVv9V6D4VXAFZQicalTcaQu5YTb7Yj
Y5MWTGVEdPzEUgPblFIMsUQJChtjt3cOd5/S0qdT44ZkSy1qZNz3LjZtOmwH
dUYQvI4GO8fJ4lbpAjXUOc7vN8VFSvmJN8OmOrqNg7m7LF2omZYsS8zJxEhq
RCSWJeE1xACfFTmpCfM8nKaShhrFKDjGMEqNtTpRRrNMWjvtJ9LHgDvAiq6O
mmDwGvZSqZAwrotYyIG6+8mxEptjw8xLbhpKDaETJV5672R0bUDSFiZ9V1mV
slih22OxQmK7Pv3gNeHbeEFtNy1LIeTi5YidlAkuKUTBATpIwQoFiW+SlKAO
28wAzJiHRRV+LeHellJKuTK4NjaHUK6lE09/2mjXTG9FOMEtki/RMM7aXLop
kHq0mlQhAVTr6GAH2AOLcV46mhWRRb8i88slnjmPLbmh0/KJ/oDLPpEiGAY0
tl6rvygjot0ElJjH1oaElbyNW9aZ3TZhD0tRU1UflJsWgHnRiNVenHw6xSR0
GBnz/ahEMHwUjSMQtkmqBmR3msP9C1FRp/wl0Nw0/M+Mm5MWKonLVZLPdakZ
GQs3cZnA6lmACJZLFB4Iqimz4RnXlXMqdmtWNVlr5yLFF7QKpzrAB5tdire0
jsiFZXcmJPBhXdgUkzlVdepYBYgYnKmnwyE9gemeaMAdDhvt3uHT1zCoFJZm
4pnbIn6EhcOxIpnpD+glyqP2zcVnSBf1k+hpPXXfkAG7nxSILBmJZiHVsSIW
2MaU/iQG7rupB6dTHtW0JpSxSSQxS0Yo+PUDdfCaaXBINaANslGZIW2hkSHJ
BIDp2QR4WR8hTEmBBVuSR7R0r95LXd2//IJT0Acmx0NkRNMJVdtq+Ug186mU
IvLYRVPxKr0xPKMWFw3XlY6qpWaMGhtTJPPf25ktbMdlEapsXd/3yo5jklUE
EpVXk5ur+Tj4VGt6y+TlmdRo4OoEZsk2leMLSg9NegLm0bAmLDNZcRIvrO3S
1uwB8M2SLLPGa5Z0XdTecGdPX5p7K4GF3MYXZXzEYMajHJrfPS5tS1ypnOQi
Lq9oq2+GtgmYLaixobw/sevVzLh8/P6ZGBD8+unhfrvf/fCB6wgwzz3gaWzJ
/6rUvsOCjLhjG5i5qQ/zwXCBhR/o19fDIejETkPP749PG93at5YsUJ06PEK2
AQN7w6x8hO3nWg6sQVbz7OgjVtP9vKuBNXCjancdJ0eNfp1Ww+0l16+LV1Xp
eYsKjK1jPVKoqmOlPsgRTb0XXetNumh6jVf0M7o53YdaTVg2y6VU9YRvHhFu
XTXy1+gpuxWYnTWHzHQjo0v60hbIhhu6qaQ28IDhmWOBxRIhcOcxb5plZrhv
KJ9Qx9mQnVRlJ2Pl4x850lWDEcuair0B/ZezRHMXrU2Mr4I4Dkk0uUL/lY5j
Ht2ammsIF+DRj5IxYCLt45FR1HIiM64fietKJCthKrbLQVMdAhtOA13BUax4
sFr4EL4X/Qwpd2AWGQvLN9qhlfi8Qvzohk5Qis6s8IfzU5sBxE5g9iju4wPX
UXiTR4MwpZhvrKSZ3OxoQT4LN0sYhgeixZB4F9ft8wK/QVwz5SHmtn4RmyK5
ATNBxZGwcPOlrXBQtuZn6jyVUw8QeGyI8erSJMBtuWEKroJCV5fOHCgOCYrU
6fBmIZn5KDrEnvea4yYpv2SJbHeg+dG/oEsxeiIEegcxaH4a3ugChLG9zCQt
2AUPtTDgVWQGzJ3MKCnctE1BE7YvAlTZyu56tww35wY3WzvT2KIqG8gxkeKS
QslUGodLlUZYojkbr0gU+E4dJZRWT0KfrdcsqijVWx3awwT5YWUq8XpkId9V
5DNuxxX7g0JdYKOa8qgSkkGh92S4+ZbsjYQFMd5fIjVUrCaQztVOA2/+Tm+w
x2aopalyLSi8ZkNXFKKV6S44Bh1mcEEIkwwZtJQ28lv/5NhiXRiS2QGFiQgZ
cvHS2IioMhVZj0zHpM9zBqiwgvZLDYUsogOLeEv1ejNd7srKcw7D4WI0lyu9
ad/DXKXq2lJqhkmxrlGcb/1QY/HuFez0cDj05MC6ExSC9FrwkUhRiTe5Knrn
t44X2XRfpzQXMpTVqKYS6x6lJMabVFzHa5umaQ3PWXu+5muuH3Cxu1Ghqe6H
Jop0vMSCQWAdVBiFjLyQbw9fKkBpuhBQ7XJsTcRFtsS8t35TfMGkAxnWgvD6
xusa7kXVV7jyFqlNa9S0NC0SBfYw9QEUW4s3UexkwFFMhUAvuc9RO/hlbtk3
WUGItmv79p5itMgYcv8fogjoMxVBf8vLeaUm97ZcZ4xIS2LtfQaxG3tJX3EN
HHKzuhfUGLp158B1TVoe68K8+lTvTFNtW4tCasR7zxVU1Ei8365kaiwZ1j6A
lhsOTNCU0gY8kIAO5E2MsMX2ieW5pyAAndkJ566I4y15riuLzoEiBv/JHlO7
Clg8+Rh1H7VpUq70uHcJuYtZncwbWJKRuh3UDkz4ArarZlGj0HzKb5rF19W/
imKbEetuGOqOVgFXRwyNoC19snA4aw4S6b5ZcqJX3NtNbE70OtmyDRyCGzaf
CMA4lMjwu8UsYZEjf92zkvvOpu15sEABCNDmlgyy81FIMaUFgkFQ9RYr+I1+
YYxe0YnGQMSqYfOySS0Gx8ksSWs6I5lkKt2bDYFiZjFm/ccKlS80l53Tg8Ms
gwUQL7x7TO82AvPRB/LuT6hg7EhjZBpNGvQgBhJ5LiPCcXE7+E0c/X4fXpsn
GNOr7IoRBabHubTp9NwfyAw24KxLoPVWIx35i7nlM7HkMBB9wlCg9rhq052C
9kcoR0pNlqzSMTsD3Qm8VG/tp6JomhLIcDsVGwQTxO7Y+aFJ17mOspUWcvQX
xr2FOmAkPlSqhKmXYp/K3ALFdCLcww1rd1OwBhV+InwcYylYplhXaQgaKFax
MwdpXU1p+A+bHMxLsac35Ugf7CAm3mHYdOnIFOvHXjEKI7yi2FddioyN1jIX
yU2YkM2Js9k4WWj50ilCTh6Os9WcemiiUDaZpOTm52P3fB/k6Whkq/mHvGjp
2PtozsCMki96DvIimk8O1GkSN4AYJdNgFGEjWQw/t5NbW9cWYaP+AEMTe8H1
E+wlp+Z7ZMo5UK/S5JoA/vIGBAuQrRYbF1VqpAu0Ce9XWHLHWfKTiFjfl4Zi
11nS6/DS5KM/GJCElyeHw5doGKLAau1jpVdI083Eh2bxUPcS0J16sY8vcVVW
U8xsqEO4IEGB3W8z2mt6nQry6jvZJKhSZqIdmnzlvkUbkbZE0RcjXdgclqF7
IamT4emwsLPH8rncPILebXHus+UK+D5KyUJKbBD6JASilZp5zr12AwZmHN6Y
rUapzOHEExJvXhkH1N8E2vzcT9Wr5XKRHezsIHXDMKO3IJ1E4XLaTNLLHZhp
52o5n+1MUqBHDfy8oVvbNDqDxwKixqCJon7FwSacFY7ogE0Hg8YI5HiK4Jt4
y5QOEfadzBRKkRLv62S0p1x2PhCPseQV4LE5w1P8ZsICBRU/TZPV5RUXZgfG
G6JtUFXPhLb2mn3OuwDSN2h3dqlXpk8WaQtsCZQmELoVUVndeZMR5NWfN2lG
NuHHrz6f/5M/WluRvuRPPcMDq9NzYyTgHuF4RYE+Jfj8OiSxbrhcotWN2QZI
MaDQoCYzsZ2qpQWWTxO0TK37dongyRqOMQpyn0qSsjkyCHBCt+KmWET27+qK
uMZ6ZEKuixPSfRL/wEga4UgpDjRC026c1rwUWyPtOCnAxlThM12WUH87mXpv
V/F1RME5Rk2QFxn5odQ3p8BKk2KBYtrJEV07teB4uKxGIVgsKeL6KOS0sBd8
/Vbi/LAVWRSPKaeDw8pgf0jFeGsgSOj4b6+ZDLc8pvgYtjBSuVHq9WOFVHjf
mqG0PKi1Vt2kWyxWIqhZt45bAoYcThYEZdhgPOIzKsCYZII9KFGxXZnshsY5
ZPmNroWE4juu4m14uwiiVLsUEjcA3+htua2TQArrHoXBONF9y9wXyTVh4Kvd
VCy1Wi+1WZOswch+jvxoY/RufW8JrwARyNb25VjWdBXrNIpwnoUzbEqHwahe
kwV0g4QmqsKYxuCYrlEkhxXVnbQKVFSxj+w7eA259wKzSqzq4crqdOl/AB5m
OxG+pIJAcPdPE50IYazdOLv/NJcPQqdTKq0GTb813WPn00UZI6StkWWUqVBU
KuPxceuVBhKOJi4jNODYiCr4BE4Wg77F6Dn2aKTfdVhMrMSNImy+LLdHSirp
uDYfYNLoMeL2UXQNUDihxKtwupr5M5qw47wbypnHiWW5StKlDvLGt7DHIYwx
w1pAmCwitYZsMI1tmo2OGNDQapT1NQopbwsoDHFUptuGdJDmp8OLcUOGfKjq
LEgvzQrIKyQW0hrlRnncAPfebRiLmbsR63gkCpPS0WBWzypFpOZYsFsTlVbX
Pffwxuj8KoxcDxHvSTYdjjGYH9Q2ivQA9G6o17ewyH9fRZezkOnjv1Fo4wvE
ddKt/qKOMSEQrtnPYV09f34oKZp4uzDxLEFAcqAdlbUGnc8GXpJQ5QcDAXlt
qDOgTpilEIl0tEiimCwwFESKMOGYoFzFKbnf1OmT+2Tj4ZJCm5m0yxfDQy22
14GKREBS6ZhNf8diCo447Yy5yPGKzDIALH4hirlJisy55ij4CDkwu4Ao4E9H
/5AdUYfz6yhFDtnaz4t/C4nNaeAiKJhX2n6+jsZv1Vkw+9n4WwCpJhGasVDG
g/NFGQozQeik/VHPlkgij6LgMkWLwL+A2DPDOF5uNHP3mDJwURIJGxN5CI1E
JQX0rwKpYNclySXMSCsGzDjh/qpItymu1WZEjELuFLKygXO4fLjfAXNUgGZu
FlIB4lBYCHorUvQA4SXAwAbgeYjcWTIP2bcl2Q0niKkxkoNEgo6CjCth3yYr
Dv7WeEMPwd4ziTQL4gxb4CD8Cnl94xkMY61eulug29LFZgJoGyyM+QiIE5b7
fWTuaOYEhxg+6bM5swdAuJiyTCi95Ec9vthGg+wWaMgS65QB5xPHrA2tXWC2
Cn2lqq/+XFNzFMpww6jpYeu2EcqXAJhGGQ1H8Mj+KJae47tIS2Q+QlOy9Jqk
XNzx6PSM6AceGxv815qhOaKPZKZXf/5GvOp5a+G5V/aPJtTJyXAzOcn/1Z8d
E5mOArEfIlsTNDQKpe54y5ZsaXZsAsm8AW3fRXdpTnzKOQtC7nS+I7awL0eC
IuFlHqLQF2VzDDilxDqHaUuL+jVOTJfaG4+Z5FJZoTbnPzVV8BxPh+k7VJRa
gf5JqsLSnEYelfFmoT7EMpoTSw2QaXAvYd07inpDTrntH8IuYi+7zpfklPjo
neAHkXa6o28j7h/tMk45Obmat4KXWl9i0qRVqWs4I26uIxcoNXoyGdr5QXoH
lDDY/A7KblLSnT4lcimqINs3RyHWlCQNhnlW6LmjZVyMkM6yZBzhIEQiaBZq
4sYjG2WXKTIp0hRM+QnFOdao2iU69wN/aGwk947e/wSdT/jLaZK/5zmXwD3W
/QrwB9FWxv4+hVPGXzYPjPilk9E4WrVs7DexkGZcynu8lyDhFsdG68aO6e8p
nmmaRmuXiMruUDQ2axSEGu/VX0OqOPqeQ/ydjjie90QveQtMfqB3jBXk+xRl
b/iFuKw/ok6nuTeekLNIH817ij9WW8YmPQQpHXUBIx8WBiS4A/HY/46GO6Q8
DJOXKUXFvAcGR9J9Rnf/I5bvwptmRMvQhDeghZCPhQqOfQiCHvBOEkdhyFcg
bc/ut+7NoHnv0BMtiYm5Uzf0Y+ZENM8lJkyZpjPufRBI/0nRFNhy11Snnj2K
X9GynHYBmaxA7siHOomYFudIfCVNEofS5jCylyU+FUioftCr1y+xzwdDrfBE
vkCQ1D06Ox+eHwukC09UVII/lUSpU6USfIoiJ2iJ6lR/LS/+Kff9SzY9Pg1m
WbhzmpA4LE+VPAaIH+78NdQ7lDpELAHHevumZSiD0cJFF8qW/mLlYNKwYMyi
tWs0+4MHFAIMZSFpLKSVJ1RkLJHdCt0tgPo+s2xF+i0PXG9+oGzSxn3mTqhk
mt2hS6G3LOqj51T5ilv/sXX3/svO43ZeU4LLW1fuccve3v8Pfgue7Aqmf/Lo
pT/+VrcftPfXFkD6i/H+8nE02YYEPfMGIn3f/vWenGPcGSh9EEp8/HrU1o1/
0o0pub7r18PCCQki24FQOrJP3Sai4zvtkIHwgFKRFlLzWOLdIXaF5O69S0S9
P4DPp7db4KVO0RhKg+28YqvZjjNE9a9oIT9NapudRlt/7v88TdR2V/jaZE+U
1T74rrCjTt2XhNfuHSZyCkOWypvqTNO9/DzwfLfui66bJup6E1EtQEn/XxNV
81qE2+/g+V7dl783TdRzJzrJSjdlBOe+t6v3ql8v4vW6ifq5iYxkvh5k9nmH
emwE4nsnmhDeKeXnZRy2nBfb25ejX/ghUrhdl8K5roEdbXjcYSN/ntt/zBrW
AKdYwDNXFHItXywWj8x9spZEXW/7pPimu7sk/4HzTfHN94494z2D+s2CiliI
Sk8B7u8/65wlP6WlNu/1ZhFa3pt5kdsu38GONchhsQIo88tXagfoAPXwE8GE
JJM9/fqf0JPODTBNyD86jB+4Fq3JCokAtsHK5n1gYX/W7sjjdMG8yOn07db3
8SO42v35WP7UHsbVPtZSQxPtuut1Kaa5D9+5T5hP6xtJUcmO9txhTMRsFJec
83dqDQ4VH63nMNIhzXSX7x6jdVS7KT6U0GqD/OsFwhLt1KcWTKgHVjuBv/Z9
XcW1+Hzy/OXIfj/x/b031jdrnioXSdevqnRNqJO2SqCwVmF74Pgbdllc/xpN
uIQTDCcTNOgfHZ/vvPrz2nneo7n2z+GtsIa1z9133ofuh8b2cMYB2NrjaOvj
wPP44QGnsXV0dW+Z4EFsfPtxvQjSt4XzKh33PRrYtBETKI89vYetAWmI0tzD
uGDW8BAiEmLH+2hW4u/i49jKp2lLH+sNoFkH7urJ5imH5R5CmWQOWlerjqT0
oT84q/OazAozcqLQyxg9ret0AZ7Vo9n3n7Vt6//LrLZ7j75wpRPnCY9LXuq+
Dbtk1rYzjgtha1kuQ/zvivdnzZN137Pga0HlUsBGQ6f+KSUw+GO47Dptx9nw
Bvb6oBm909j+4xG4UgG8cFLm13vbn/SqrfgMZLzjShrtrsNjEYe0zLRMHjBr
qcD9fj1InL+2LHjTq/bHe9wb6Zu1z22C+b02fS+JA0Hc8wDe9/7a3SrifOoK
1GYIvl8Pk7Xm6E0mcU9xhA3uORt0/V3vP2rEwvL9nw2b8X+u18HX/Ky937ip
QRFt/5R3Q378DCpnF/Z3tR1o/lr3nQMoE9q2j7J+CX8oedq6et+XPudqzyT/
lIs+ayj35xSGNv/8WpbkTT8PtTJ3nNVbrrxNUNoOiXavjpxi+5O4CPscLeKe
ctP9FpHjUGvMPPisv4h7ilH3WMReHUn49idxEfa59+oZltcJbB2QzAQjLdFi
MsJQi4K8tUbWc+hoHVnIxkXsOi8+bBEePcNgSwd0PrXbJGLSIvY+ehHOXks8
Fj4kBvkH/EUMnBc/DRJ2t98VINFeq3HQIvadRZxkzi3dJmxv/DFEtyBqFxdR
eay2lE9Rd49NZk4jtE9oE9jvok3ZJ/1sa2xFLOzjRjiOl5gtdh5QRSNSxz5u
Ddt/Pkdzrd8wJHOgBLz+yDVs//lngOQXHeEZNik6mYR8IhtO4ze9i191hF8K
o344feInSK2lMb/kGoZffA33//lt4MPXETaOYEX8Tej0y67h6wj/lCN8hg6+
JKYURbcDVW3vcteAGllDQNjX3zVL33ozXPcOtZ4o4aPwfLfjPv/sxDxeTuur
Pe46Ujug5w8l6xtT/5XkiYNCRa+Xkenc6/YBWFaylHwJm3eKo2JCDFWL4mrE
Ce7dd29Ud/1R7TeU27TAEC9u7oXdwcoSxGHP9KbJx/JMTaNG8O7WtTLppq90
BlsUIorCVvqN87/svP6Leop5F3ePdSpRY/yBupOSDuk1CRhKkQBuiqbLXK6v
cEkVxKtrgiVscrY2jNV0WzrOO667/YIyE3JZrG+YjP4hnaUkSU5y7tx+XZlb
+JVD/im9z01P5lJ0sLTZre3eI4XIMFkMo/110pzARXdToax+L42qGhSqhZUl
jFIBHFZF5Sd/JflaKtWk39C2PseabgCJKB1TqjD7CZoVbVEuHUEIBFl+NLlQ
rpWta37rmZH4b1XyOyjfSr00f750HnI+rcCCGw363f7m/k6/VdSO+l/ylf1N
+Z/CdFbOfuJMd2h+O6pUKhb9XwXLq+zAWkV01GalfeDWB3L+KNZ0yuc2V7oH
Wx7ocWpvpWJS2w9K84orQOxcf13lyYGxd9StCcSaZ+o54wz17TYmo8phbrgj
WQfXbhlygmswAgpkrjRek8xDerc+IRfmDHLQCTZv32u4wNnztnUL9j44sRXc
pFK6fGn6GT4LgQZkWN2FelzRh40EHptHP9N7H6TVyt0d14TG9tdYfk83OmyZ
pFbdwJdWpRPHTHuqNWRrqQtSBOrKLIXohWSpws5nXJISjiiY6A7FtpVXIonC
ZbNgbpuT5E2N/SQPOwO2MmY24dS/WFt0HA/DwtatjGfTaHEUY/7Cw8IyibMk
ebuiispHp2dwRs/hb6ngKvCTBhWLyxaVA1tfZlD6AVDuNNeqMf07JWU8QJa/
vcwGvICiQZR5acE3V9HMqUe5qRTI1iog5QVAJOGdZmTRxLLc35GBkM71GZdh
updL3/0pESrp8xwu8PCUMFh8/sGSLT5vYjDLF/HQvx++iCIktoyw1cK3eQRH
fP74NWz9+SxKgoNRKOSTvMsie1lSA4rZ0VJkeu77xa2RzReVcmyCsT39gSqw
Un01pF9UD7hSMXhSbdOzInY/wQry+mkQ+OlpqqYuufvvEMOyguqSU1qELkj3
siX1S4/D5U2SvqVdc38jT0AX4pkXz4W6EgPaQNtRQufS2PgQl5U1HQ/XldRu
15wSpKxQnOnKvmdSAAper2KtW3yjV8OCeOQgOjk+f6pcGOBz9JDpPufQRhB/
c20ATRVoKiYmXJaoeezRbYdIG4Kc4wy6/Ftk+6SWkGYGibAxll2Wke3XiU+H
JCRlpgiVdMNE9gdMj4tvf0P74qoKGb2W2Qof+KSu44XlQXDPbrl0mznPbK+Y
LOTIIrwarmCJbSiMqIBfltUG3oAdupZtAdgZp9dnplqePTANFSwAj2U2qJ6u
0zX2Htilq7VrlITpLL5hLSmpE4HT5FrclklA0hKN7sVBocEsymymTXaxLOaY
epTA2UvpS7cQo+l0TzXy1oh4pFDuSdUDLiZlW746XcsZjrr4PBUjkMKP1CJ4
nMxWcyrMYqr3XTh08cJ0qOYixdkCkYcr2Tg66ggjCgLq6000pN9Srf3B/m5r
NB2MW/1Wr9Nqtem/rQD+r9cPgvHuCP4YjYLO7mC0V+mD5JB7Zm9/Mgh6rd6k
N5h2wun+aLQf9Hp7rWAS9Ee9Sr+jptN2t98Z7/VanWC6P9kPRxMYpNsLB5O9
oN3Z77SmvcleuN8et4O9bqXfVSBE7k1avXBvb7fdbw06/cFud9xvd8a74ai1
1w86rd1gvz/u7486+3thpd9T085+tz+d9Nq7087eqD3qdaaT/mR/Mg2CFtyB
vf1pt9MZ7E178FUfVtVXe21YfbsPVLvd7wZ7e61JN9wdt0btvSDs77YGrf3R
eLfbCwadzrg9rfR3VXfUbu32RgPc+PYfUYeQ6PhItyw51egypjo9Wp2YoRDd
6UrnTN2j2CgYth1zaUNX24KU5f05VzmX6ahZ6hTbPHDVbN1u1+2sK8RYyK+u
9oYLJFuLqfQzwzZOuuLWkorgB5PrIF7iSoUqTKN34YTXzq3cmRLjV67Fx14s
Z9vODbF3w5RyYigyZ3RApOuhTsZwnh31RwKOwKZJ7e7DtNpCtJtOxoAu7e6o
Jqd1jGNIXTyZW2R2oscTLrcUeG2JMfiAF4/FzXEAWhF2PMJCPjexLXvpdAzh
wwBi94QK1TARcSqSGwouy7Db5zZjME2nBFBU5J4WSUq41doWukdCoR2zBld/
D+7d7m5/LxhPuq1RJxz3gqA/6LR6+9N+J5hM96f7nU642xn3dvf7u92g0h+o
Xbgju0F/H4lFv9+Dy9Md7MNF7Pe60/Z+uI8kZRT2gtG4D39U+qBpdICa9MPO
YNoH0jPZ6/fGwbQPpASu9KC7vw+3rLc/6o/3w90wHOmCsA4JL7SnplO4NxFf
A+9AxSwneh2AyygwFg20ICQboeg7rLpLaVgqdefwtm9LaTRVrpvR4fFsfPN7
crKB1CKTft25/kfZt9S/amlarXm6OTdDKxEVNPlvtxQcT3sbQfeIGoi1nR5w
DPjZDadAjeGQw3a7HU66e0FrH//XG7QGQMrhdk2n/E5Hwfk+jNHgO1tXlmM1
+E7ngcwG3+k+kN3gO70HMhx8p/9AloPv7D6Q6bS7qtXqd3bhxT38t70Hl3V3
uhvutnfHnVa/B/e7C8Dx3unBpRwD5PA0YdUTPE0Ce2vcag3CXmuv1ZqOYX3O
O32Ypxd2wh7c3W672+l2u71uv7u7lSFif7V5BChverFEmn5KJwNqgBSDXgO4
ii1YnqEcw51r5BbCHeX7cUUBaTkCiXcKLkU1vBbh1bmjulu0LhCmKUB/C8+x
jhP3wvNyNAHdHXenvc5oEAzW8Bw4/na74/2niwihuQ834JgkPJU0cJ7NZJp8
XXqXB+nKmyQLUBieWbpdHWB1d2803QtGgBTT/mQXKPHedDAJ94Fwt3ojWE5/
0J909/f6gDD7nUp32todt0fjsL3bH7XCTn+/25oAf4Db0elN9/ptuJNhezIZ
TMZtuDid/VGl1wn39/f2+4NWtwMPBm24rB24a52g2w2CTtiG//Xbe5MgCMP+
AACyWwHchq/3Rt39XRh01NnrwL0YwELhhgDP6Pf7u9P2oNseT3rwwbQbdCvB
oD8a9Vow4iQY7O93dqejwXTcgdmC/THQklEvBHzuBrvhpDMZhMC4BMKsf3X4
tNX4ahVL594YcAGoKlqj44AFK2kyTNbP1BEASutP1N1OqnkOW7esmlrjonMv
h4fUOC0slQ3zSBdk0lm+rquMJlRGz33eVw64ICxIDGV6o+l7SZzHH8aVMMja
akZauHwE6NSeehh+0UsgPgCa3R/L6KV9pZHtfrhGLwXKRbntGEcvjVQe8Tbj
Hb00VmXot5Uq+o1c/Xbw2P0CmwI8LvbZ0v27/O7xpjVX1e/NVVKkEitDUqcn
bMh6S20uRcTURYFFFTDFH72SitQrjG4I1nFd6Fplk5Db8YgPu2SJs4iCdckD
IjPoImv4azILsUq+9lnYfmFyzbzG7t9SxWtqU4PE0pYPJrxlGX0MIFk6FYSl
id+E/Ck8ZtX38tTYcnCEVj0pwnb3mKDeAAaO5XdJED2gLiTFbuPYcF5PbTvX
xZ5PGUW0shq+IqQd3oLkqsdnnUSIvenDyQQpMA3qQcaMJ8kNL/0FELBkAjzo
8lac7KF6c6abR5U2JmQzhDu88F1cCpLBA2vBqaKxxumnWKXuW7arIn6AbdLP
uZB3sVY0lvudY2QG9j/HovbUFRoJ5FV0SWXn0TdY7bzjJoTUmwvXUZOCfmL4
2dVQIWeUeaqJgHN8gFSAjxqlHa/QkEdg4EsHx+BapFrv+jX2K2GZYkGUb9Vi
xZ0RiUZbpEKYDbxpzxODhGHhaVI1uOT5pogGn9XjJmA46vqbEUv/Exz5H9Q4
jLBXQ7VaHQzgz+oJgv0s+jlU/6ro90Ocs1ZTDdXerakdIOg1eK7NZAPUIjIN
tnFcWp3MxaV22ahorKTiZVsA7LHFk4IZhUtYxYmZhR6B9od7l4NiVFrv3BNj
n+Mks9bxutNiQ1UH8ikTKjcaRr5oKgsK7DwqjyNpwY+0tSBaatuIFKGndXxL
O9AuQHbbdfqqKp193RtTqzueQ2Nz5lcGqmroAhYwl04u1L8FE0zWQA/rQNJh
wOWrcitRFkZ17d7iwWDXk1vzEiwFpup0102AmyoTBKpsImgjsvRhBJFGo+uI
sGR0i2MuzQ6wMWQQiQ2Y5gmDlBp6YoV5eQjWfxPasut0wwmIfGXrtNsFF7XS
2jYywCJKBhqUCzEtIeG2/nFGK65g7hHhPBmAwZkQTD0/MW7AogxM3hsQctlb
hB+2v/VJT5C/2gOg2skcNYj7RC25nOkmNM0d7MU/wEw9ZwnvDVY+ZZL33iKd
+eQ8wXY68me14BHZmnlXTJ+7R0JdsV7bXs4VqPIZV+/VoK728tXXBvmHiq9h
qYBBvpjafv6p3Pz4XqcO7+aLo7Vb21/ERL52vtjZ6c5w24vwCLzZyRf9KbyZ
T8HSb/byVXzu/WY/XwPi3m/u5us4FN7Mp2rpNwf5Wgz3fnM/X0/hvm92WvkE
zsKbufM1b3Yqdwfq8XI0Yw26IfdQHKlsZKRbR9VkDeUm+8SFe8eoT4ph+NzP
aTJxvFIX9gZfqCpQS+mqQ9/5F/oCRcKL3J2+0MZisgeMmdhoJuvLb1x4m6Ny
Vks02m+IP9KNSc+0bTUTA3gKCmkaCqenzq0sXDK3JSrMAqEUXJY+8tgHwLaL
FvnSxEGiHFfswl23LbhZEyoLKLzvz4acBcmDniXr60xTt7I24Eerg/908Z8e
/tPHf3bxnz38Z4D/7DNmEdoSBkqow8f+A3M/Qdz8Af85w39yfzo/TfzxUbrR
/qLTt36t2V9U253a31r1/k/uDf8VZueJd+v7P/Gc6jmsov0TxrV+0b13v8ze
O/XuTxS9+yX33v8ye+/hKoCjf9G9732Zve/W93Dvg0+cvfJY/VEdzxfLW4cw
V57Ah8X4ELQyVH6ArzTL2PkhHKPK7jzRqVXO4AmxOzhf9GqV5/CFlfPXiOI8
xo9/u63//JN+XnPmja8ofsxrTk5LLhhCKi+q72reBIbNb5nhHbwgQWzPqBEW
fHaL26Wa9Ki7wQc/I0SxYQ/++a/wh9Pg/D6zuQ5w/3mxX4kbXDeh7OieabZj
VoHnN9Uxqfz5L7j/Ag8fTprqlHrLdaijozZog2441p3WptFspv3+gcJQXnJu
KonK/U613/GnbGEY6CG+ihT/pUWKf8Xp8J8z/Cf3p/Pzo09cP5NIsXn2HzUp
5R+UJro/6dn/S4oUIk59BpHiE879M4gUDzz3Hv4ps/+XFClElPxUkeLTzn3/
i9739hfWn76QAiWCdPszkLtPIfWfgd59wp1vf1kdqv2JFE99oibR3lVfdYnf
qS5hnmKx3GoM1atghl2r4WNx5mTLNAzmqkGuIuz9Sk6i0S27jTgiqr3TMY47
Hum7Wt1ANjdHHXWC51Yn2F33Rdt805Rmb9zkrc3NpdNVTJ77GaWMtLl7deHT
m/JF0Lm1japT+JogQONg6E3Pwqe41RqoZmw1JkXHqEZjbC8fm+bXEqREbXkT
+zhgODVFRLtwQH0+K191o/vyjOdfQD0w9PHx4+I///XUA7v3T+WWv1Fu8U9O
z4laCw3XZB1DgyyZ7eTNOhQK0H3HTayRSKGHyKZGYeeuKNaOp15d6e+IJsID
HefrTq1Z+f9EipINjXgBAA==

-->

</rfc>
