<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-vasters-json-structure-sem-ann-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="JSON Structure Semantic Annotations">JSON Structure: Semantic and Reference-System Annotations</title>
    <seriesInfo name="Internet-Draft" value="draft-vasters-json-structure-sem-ann-00"/>
    <author fullname="Clemens Vasters">
      <organization>Microsoft Corporation</organization>
      <address>
        <email>clemensv@microsoft.com</email>
      </address>
    </author>
    <date year="2026" month="August" day="06"/>
    <area>Web and Internet Transport</area>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 358?>

<t>Data types describe representation, but they do not explain the semantic,
temporal, spatial, and operational characteristics needed to interpret and
compare data. This document defines optional JSON Structure annotations that
bind schema nodes to terms in external vocabularies; annotations for
observation results, observed properties, features of interest, procedures,
time semantics, quality, derivation, and cadence; annotations for spatial
referencing by coordinates, by vector and tensor reference frames, by
transformations between frames, and along linear elements; and annotations for
color spaces, audio channel layouts, spectral bands, code lists, and
measurement conditioning.</t>
      <t>The annotations make an incompatibility between two data sets detectable by
machine; they do not resolve one. They are optional, and their absence does not
make a schema invalid.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://json-structure.github.io/semantic-annotations/draft-vasters-json-structure-sem-ann.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-vasters-json-structure-sem-ann/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/json-structure/semantic-annotations"/>.</t>
    </note>
  </front>
  <middle>
    <?line 375?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>A schema states how a value is written. It gives a type, and with JSON Structure
Units <xref target="JSTRUCT-UNITS"/> it gives a unit, so that a reader knows a member holds a
number of metres. It does not state what the number measures, what the metres
are measured from, or when the measurement applies. Two schemas can agree on
<tt>double</tt> and on <tt>m</tt> and still describe water level above a tide-gauge datum and
height above an ellipsoid, which are not the same quantity and must not be
compared. That difference is usually recorded in prose documentation, inferred
from a member name, or known only to the people who built the system.</t>
      <t>This document is an extension to JSON Structure Core <xref target="JSTRUCT-CORE"/> that
records it in the schema, by annotation, without changing what the schema
validates. Its keywords let a schema author:</t>
      <ul spacing="normal">
        <li>
          <t>bind a type or member to a term in a published vocabulary, so that two systems
naming a thing differently can establish that they mean the same thing;</t>
        </li>
        <li>
          <t>declare what a record observes and which member carries the result, as
distinct from the property observed, the feature it belongs to, the procedure
that produced it, and the time it applies to;</t>
        </li>
        <li>
          <t>name the reference system a value is expressed against, whether a temporal
regime, a coordinate reference system, a vector or tensor reference frame, a
transformation from one frame to another, or a linear reference system, so
that a position, a direction, or an orientation can be interpreted and two of
them compared; and</t>
        </li>
        <li>
          <t>resolve the members that together carry one compound value onto the axes,
channels, or bands that give them meaning, whether those of a color space, an
audio channel layout, or a set of spectral bands.</t>
        </li>
      </ul>
      <t>The same concern applies to a value that stands alone. One keyword binds a
coded value to the register that assigns the code its meaning, so that a number
or a short string can be resolved rather than guessed at from a member name.
Another records the frequency weighting, time weighting, and level reference
that a conditioned measurement already carries, so that a sound level measured
under one weighting is not silently compared with one measured under another.</t>
      <t>Most of these are bindings to a definition maintained elsewhere. This document
defines no vocabulary, no reference system, no color space, no channel layout,
and no code list of its own. Established bodies
publish them, and an annotation refers to one. What is
defined here is the form of that reference, the roles a schema may assign to its
own members, and the rules by which a processor can check that the two agree.</t>
      <t>The roles are the one place where that account needs qualifying. <tt>semanticRole</tt>
and <tt>derivation</tt> do carry a vocabulary of observation concepts, and this document
does not pretend otherwise. What it declines to be is a normative encoding of the
observation model of <xref target="ISO19156"/>. It defines no observation as a type to
instantiate, no classes for procedures or features, and no relationships among
observation entities, and it requires no record to be shaped like an observation.
The roles describe what the members of a record already are, over a structure
someone else fixed. A record does not become an observation by carrying them, a
schema that carries none is not deficient for that reason, and a processor does
not reconstruct an observation entity from the roles it finds
(<xref target="processing-conformance"/>).</t>
      <t>Nor does this document define analytical procedures. Several keywords name an
operation, and naming one is not specifying it. A schema that declares a value
an hourly mean records an operation that has already been performed; it does not
state what a mean computes, how gaps in the set were treated, whether the window
was inclusive of its bounds, or whether a consumer may recompute the value. The
annotations describe what was done, and a processor does not read an instruction
out of them (<xref target="processing-conformance"/>).</t>
      <t>Nor does it define a lineage model, although several keywords carry lineage
facts: <tt>derivation</tt> says how a value was produced, <tt>observingProcedure</tt>
identifies what produced it, and <tt>ingestionTime</tt> says when a system received it.
<xref target="PROV-O"/> gives entities, activities, and agents identities and relates them by
derivation and attribution. What is here is flat and confined to one record,
with no identity for the act that produced a value and no way to chain a value
to the value it came from. The two do not conflict and a record can carry both;
the <tt>concepts</tt> example maps a publication instant onto <tt>prov:generatedAtTime</tt>
(<xref target="concepts"/>).</t>
      <t>The keywords defined here are chosen by one test. A quality of a value earns a
keyword when a consumer must know it to decide whether two values may be
combined or compared, and when it holds for the type rather than varying from
one instance to the next. Axis order, frequency weighting, and the register a
code is drawn from meet that test: get one of them wrong and an arithmetic
result is wrong while every value still validates. Licensing, retention, and
endpoint addressing do not meet it, because they do not change what may be
computed from a value. A per-observation calibration record does not meet it,
because it varies from one record to the next and belongs in the payload rather
than in the schema. Geometry, provenance, and unit algebra do not meet it,
because each is a model in its own right that another specification defines;
this document cites those rather than restating them.</t>
      <t>The annotations are optional and additive. A processor that does not implement
them reads the schema exactly as JSON Structure Core defines it. This document
defines no conversion, and a processor that cannot resolve a referenced
definition reports the check as indeterminate rather than assuming agreement.
Correctly declining to combine two values is the outcome these annotations
enable; transforming them so that they can be combined remains the work of a
tool that holds the authoritative definitions.</t>
      <section anchor="semantic-binding">
        <name>Semantic Binding and External Definitions</name>
        <t>Most keywords defined here share one shape. Each is an object carrying a
<tt>reference</tt> property that identifies a definition and a <tt>kind</tt> property that
names the model the definition belongs to. This lets a reader know how to
interpret it and a processor know what can be checked.
<tt>concepts</tt>, <tt>observedProperty</tt>, <tt>temporalReferenceSystem</tt>,
<tt>coordinateReferenceSystem</tt>, <tt>linearReferenceSystem</tt>, <tt>codedValues</tt>, the entries
of <tt>vectorReferenceFrames</tt>, <tt>colorSpaces</tt>, <tt>audioChannels</tt>, and
<tt>spectralBands</tt>, and the frames named by <tt>tensorReferenceFrames</tt> and
<tt>frameTransforms</tt> all follow this shape.</t>
        <t>A definition is ordinarily maintained outside the schema, and <tt>reference</tt> is
then an absolute URI <xref target="RFC3986"/>. Every one of these keywords except <tt>concepts</tt>
and <tt>observedProperty</tt> also admits a definition held in the schema itself,
carried by a shareable type that
<xref target="meta-types"/> calls a meta-type; <tt>kind</tt> is then <tt>type</tt> and <tt>reference</tt> is a
type reference <tt>{ "$ref": &lt;JSON Pointer&gt; }</tt> to that type. The <tt>kind</tt> determines
which form applies, and each keyword states the rule for its own values.</t>
        <t>A <tt>kind</tt> names a definition model and not the format of the resource that
carries it. The enumerations are open so that an author whose model is not
already named can name it.</t>
        <t>The annotations bind terms; they do not express statements, node identity, or
entailment, and this document defines no prefix mechanism and no compact URI
form.</t>
        <t>A value is read against one temporal or coordinate reference system, quantifies
one phenomenon, and draws its code from one register, so those keywords,
<tt>observedProperty</tt>, and <tt>codedValues</tt> each take a single binding. Vocabularies
overlap by design, and the same notion is
deliberately given a term in several of them, so <tt>concepts</tt> takes a list. The
keywords that resolve components onto axes, channels, or bands take a list for a
different reason: one record can carry several such quantities at once, and one
set of numbers can be published in more than one frame or more than one color
space at once.</t>
        <t><tt>measurementConditioning</tt> stands apart from this shape. It identifies no
external definition, because what it records is not a system a value is read
against but a treatment the value has already undergone, and it states that
treatment directly.</t>
      </section>
      <section anchor="observable-observed-concepts">
        <name>Observable and Observed Property Concepts</name>
        <t>Observation is one application of the general model in <xref target="semantic-binding"/>. An
<em>observable property definition</em> is the externally governed concept, such as
water level or bridge vibration, and this document defines no format for one.
An <em>observed property declaration</em> is the <tt>observedProperty</tt> annotation that
binds one record shape to one such definition.</t>
        <t>An observation act is one concrete execution of an observing procedure for one
declared observed property and feature context, producing one result value and
optionally its qualifiers.</t>
      </section>
    </section>
    <section anchor="conventions">
      <name>Conventions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>Some examples in this document contain lines that exceed the maximum line
length permitted in an RFC. Those examples use the single backslash line
wrapping strategy of <xref target="RFC8792"/> and carry the header that strategy defines.
A line ending in a backslash is continued by the first non-space character of
the following line; the backslash, the line break, and the leading whitespace
are removed to recover the original text.</t>
    </section>
    <section anchor="annotation-model">
      <name>Annotation Model</name>
      <t><tt>concepts</tt> <bcp14>MAY</bcp14> occur on a type definition and on a property, collection item,
map value, or choice member schema, subject to <xref target="vocabulary-annotations"/>.</t>
      <t><tt>semanticRole</tt>, <tt>derivation</tt>, <tt>temporalReferenceSystem</tt>, and <tt>cadence</tt> <bcp14>MAY</bcp14> occur
directly on a property, collection item, map value, or choice member schema,
subject to <xref target="observation-annotations"/>. <tt>phenomenonTimeRelation</tt> and
<tt>supportPeriod</tt> <bcp14>MAY</bcp14> occur on a direct property. <tt>statistic</tt> <bcp14>MAY</bcp14> occur wherever
<tt>derivation</tt> occurs, subject to <xref target="statistic"/>. <tt>temporalReferenceSystem</tt> <bcp14>MAY</bcp14>
also occur on an object or tuple that defines a temporal type, and binds an
existing member of it.</t>
      <t><tt>observedProperty</tt> <bcp14>MAY</bcp14> occur on an object or tuple intended to describe an
observation record, and on a member schema of one that carries a result,
subject to <xref target="observed-property"/>.
<tt>coordinateReferenceSystem</tt>, <tt>vectorReferenceFrames</tt>, <tt>tensorReferenceFrames</tt>,
<tt>frameTransforms</tt>, <tt>linearReferenceSystem</tt>, <tt>colorSpaces</tt>, <tt>audioChannels</tt>, and
<tt>spectralBands</tt> <bcp14>MAY</bcp14> occur on an object or tuple and bind existing properties.
<tt>codedValues</tt> and <tt>measurementConditioning</tt> <bcp14>MAY</bcp14> occur on a property, collection
item, map value, or choice member schema, subject to their sections.
<tt>referenceRole</tt> <bcp14>MAY</bcp14> occur on a member of a meta-type, subject to <xref target="meta-types"/>.</t>
      <t>All keywords defined here are direct peer keywords, and no wrapper is implied.
Every annotation is <bcp14>OPTIONAL</bcp14>, and a schema can use any subset, including none.
Conformance constrains only annotations that are present; it never requires
another annotation or an annotated property to exist.</t>
      <t>Several keywords bind members of the annotated type by name. Such a name is the
name of the property as declared in the schema, and it is resolved against the
effective definition of the annotated type, which includes members contributed
by <tt>$extends</tt> and members of an imported or shadowing definition
<xref target="JSTRUCT-IMPORT"/>. A name that does not resolve to a direct member of that
effective definition is invalid. An alternate, localized, or otherwise
serialization-facing name assigned to a member by another extension, such as
JSON Structure Alternate Names <xref target="JSTRUCT-ALTNAMES"/>, changes how the member
appears in an instance document and does not change the identity the annotation
binds; a processor <bcp14>MUST NOT</bcp14> resolve a member name stated in an annotation
against such a name, and <bcp14>MUST NOT</bcp14> treat the presence of one as altering the
mapping.</t>
      <t>Every <tt>reference</tt> value that is a URI <bcp14>SHOULD</bcp14> be resolvable, and dereferencing it
<bcp14>SHOULD</bcp14> yield a definition of the identified term or system. A processor is not
required to dereference a <tt>reference</tt>, and an unresolved <tt>reference</tt> is
indeterminate rather than incorrect.</t>
      <t>A <tt>reference</tt> identifies whatever its URI identifies, revision included, and
this document defines no version, epoch, or as-of member to stand beside it. A
body that revises definitions and means them to stay citable puts the revision
in the identifier, which is what the naming policy behind the identifiers used
throughout this document provides for: a definition is named
<tt>/def/{objectType}/{authority}/{version}/{code}</tt> <xref target="OGC-NAMES"/>, so the <tt>0</tt> in
<tt>http://www.opengis.net/def/crs/EPSG/0/4326</tt> occupies a version position that a
schema needing one edition rather than another fills in. A schema pins an
edition by writing the identifier the publisher supplies for it.</t>
      <t>A separate member would state in a second place what the URI already carries,
and no processor could reconcile the two without resolving the reference, which
none is required to do. Where a publisher revises without giving each revision
an identifier, a schema <bcp14>SHOULD</bcp14> record that fact in <tt>description</tt>, which informs
a reader without inviting a processor to act on it.</t>
      <t>The enumerations of this document are of two sorts, and one rule divides them.
An enumeration is closed where its values select a behavior that this document
itself defines, so that a value outside it would establish nothing for any
processor. An enumeration is open where its values name a model, register, or
definition that another body maintains, because this document cannot enumerate
what others publish and a value it has not heard of may still be one that a
reader knows.</t>
      <t>Closed are <tt>semanticRole</tt>, <tt>derivation</tt>, <tt>statistic</tt> in both of its forms,
<tt>phenomenonTimeRelation</tt>, <tt>referenceRole</tt>, <tt>sortOrder</tt>, the <tt>kind</tt> of <tt>cadence</tt>,
the <tt>anchor</tt> of <tt>supportPeriod</tt>,
the <tt>variance</tt> of <tt>vectorReferenceFrames</tt> and <tt>tensorReferenceFrames</tt>, the
<tt>symmetry</tt> of <tt>tensorReferenceFrames</tt>, the <tt>encoding</tt> and <tt>rotationSequence</tt> of
<tt>frameTransforms</tt>, and the <tt>alphaMode</tt> and <tt>transfer</tt> of <tt>colorSpaces</tt>. A value
outside a closed enumeration is invalid.</t>
      <t>Open are the <tt>kind</tt> of every reference-style keyword, the <tt>weighting</tt> and
<tt>timeWeighting</tt> of <tt>measurementConditioning</tt>, the <tt>levelReference</tt> of both
<tt>measurementConditioning</tt> and <tt>audioChannels</tt>, the <tt>calibration</tt> of
<tt>spectralBands</tt>, and the <tt>encoding</tt> of <tt>audioChannels</tt>. A value
outside an open enumeration is valid; a processor <bcp14>MUST</bcp14> preserve it and <bcp14>MUST NOT</bcp14>
reject a schema for carrying it.</t>
      <t>Closure states where a value's meaning comes from, and is not a claim that a
list is finished. A later version of this document may add values to a closed
enumeration, and the versioned meta-schema URI a schema names is what tells a
processor which set is in force (<xref target="extension-meta-schema"/>).</t>
      <t>A value defined here is one a processor can act on, and this document states
what each establishes. A value
not defined here establishes nothing, and a processor <bcp14>MUST NOT</bcp14> infer a
constraint from it. This document defines no registry of further values and no
mechanism by which a private value acquires meaning for a processor that does
not already know it.</t>
      <t>Because the open enumerations are open, two authors may choose one token for two
unrelated things. <tt>kind</tt> classifies and <tt>reference</tt> identifies, and that
division bounds the consequence. A processor <bcp14>MUST NOT</bcp14> treat a <tt>kind</tt> value as
establishing the identity of a definition, and <bcp14>MUST NOT</bcp14> conclude from two
schemas carrying equal <tt>kind</tt> values that they draw on the same register, model,
or definition. Where <tt>kind</tt> agrees and <tt>reference</tt> does not, the references
govern. A processor meeting a <tt>kind</tt> it does not recognize reports the check
indeterminate (<xref target="check-outcomes"/>).</t>
      <t>That bounds a collision rather than preventing one. A registry of <tt>kind</tt> values
is the remedy; a future revision of this document is expected to establish one,
and none exists at the time of writing. Until one does, a <tt>kind</tt> value outside
those defined here means what it means only to a processor that already knows
it. A schema <bcp14>SHOULD</bcp14> use a value defined here where one fits, and <bcp14>SHOULD NOT</bcp14> coin
a broad token such as <tt>sensor</tt> or <tt>registry</tt> for a private arrangement, since
the broadest tokens are the ones most likely to be coined twice.</t>
      <table>
        <thead>
          <tr>
            <th align="left">Keyword</th>
            <th align="left">Meaning</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">
              <tt>concepts</tt></td>
            <td align="left">Terms in external vocabularies that the annotated node corresponds to.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>semanticRole</tt></td>
            <td align="left">Function of a result, temporal, quality, status, or operational value.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>observedProperty</tt></td>
            <td align="left">Reference to an observable-property definition.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>phenomenonTimeRelation</tt></td>
            <td align="left">Refinement of how a result relates to <tt>phenomenonTime</tt>.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>supportPeriod</tt></td>
            <td align="left">Length of the phenomenon-time period a result characterizes, and the position anchoring it.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>derivation</tt></td>
            <td align="left">Category describing how a result value was produced.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>statistic</tt></td>
            <td align="left">Summary function that produced a result from a set of values.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>temporalReferenceSystem</tt></td>
            <td align="left">Binding from a temporal-position encoding to its reference definition.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>cadence</tt></td>
            <td align="left">Expected pattern of successive temporal positions.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>coordinateReferenceSystem</tt></td>
            <td align="left">CRS and ordered properties forming a coordinate.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>vectorReferenceFrames</tt></td>
            <td align="left">Frames and ordered properties forming the components of vector quantities.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>tensorReferenceFrames</tt></td>
            <td align="left">Frames and indexed properties forming the components of tensor quantities.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>frameTransforms</tt></td>
            <td align="left">Frames and properties forming a transformation from one frame to another.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>linearReferenceSystem</tt></td>
            <td align="left">LRS and properties forming a location along a linear element.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>colorSpaces</tt></td>
            <td align="left">Color spaces and properties forming the channels of color values.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>referenceRole</tt></td>
            <td align="left">Function of a member within a reference-system meta-type.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>audioChannels</tt></td>
            <td align="left">Audio channel layout, level reference, and encoding for channel values.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>spectralBands</tt></td>
            <td align="left">Spectral bands and ordered properties forming the bands of a multiband value.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>codedValues</tt></td>
            <td align="left">Binding from a coded property to an external code list.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>measurementConditioning</tt></td>
            <td align="left">Frequency or time weighting and level reference a scalar measurement carries.</td>
          </tr>
        </tbody>
      </table>
      <t>Omission means undeclared unless stated otherwise. It never implies compatible,
successful, or acceptable data.</t>
    </section>
    <section anchor="vocabulary-annotations">
      <name>Vocabulary Annotations</name>
      <section anchor="concepts">
        <name>The <tt>concepts</tt> Keyword</name>
        <t>The <tt>concepts</tt> keyword binds the annotated node to terms defined by external
vocabularies, following the model in <xref target="semantic-binding"/>. In this document a
concept is any term that a vocabulary defines, including a class, a property, or
a SKOS concept <xref target="SKOS"/>. The <tt>skos-concept</tt> kind names one such term type and
places no constraint on the others.</t>
        <t>When present, <tt>concepts</tt> <bcp14>MUST</bcp14> be a non-empty array of objects. Each object <bcp14>MUST</bcp14>
have a <bcp14>REQUIRED</bcp14> <tt>reference</tt> string and a <bcp14>REQUIRED</bcp14> <tt>kind</tt> string. No other
properties are permitted.</t>
        <t>The array is unordered and no entry is primary. Every entry holds
simultaneously: the annotated node corresponds to all of the terms listed, and a
reader does not select among them. Two entries <bcp14>MUST NOT</bcp14> carry the same
<tt>reference</tt>.</t>
        <section anchor="concepts-reference">
          <name>The <tt>reference</tt> Property</name>
          <t><tt>reference</tt> <bcp14>MUST</bcp14> be an absolute URI <xref target="RFC3986"/> that identifies one term. The
URI is the identifier that the vocabulary assigns to the term. This document
defines no prefix mechanism, no compact form, and no resolution protocol.</t>
        </section>
        <section anchor="concepts-kind">
          <name>The <tt>kind</tt> Property</name>
          <t><tt>kind</tt> classifies which definition model the URI identifies. It is an open
enumeration. The following values are defined:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Value</th>
                <th align="left">Referenced definition</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>rdfs-class</tt></td>
                <td align="left">A class in RDF Schema <xref target="RDF-SCHEMA"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>rdf-property</tt></td>
                <td align="left">An RDF property <xref target="RDF-CONCEPTS"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>owl-class</tt></td>
                <td align="left">A class in OWL 2 <xref target="OWL2"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>owl-object-property</tt></td>
                <td align="left">An OWL 2 object property.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>owl-datatype-property</tt></td>
                <td align="left">An OWL 2 datatype property.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>skos-concept</tt></td>
                <td align="left">A concept in a SKOS concept scheme <xref target="SKOS"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>dcterms-property</tt></td>
                <td align="left">A property in DCMI Metadata Terms <xref target="DCTERMS"/>.</td>
              </tr>
            </tbody>
          </table>
          <t>Other values <bcp14>MAY</bcp14> identify further definition models. <xref target="vocabulary-uris"/> lists
namespace URIs for the vocabularies named above.</t>
        </section>
        <section anchor="concept-type-compatibility">
          <name>Type Compatibility</name>
          <t>A <tt>kind</tt> denotes either a class or a property, and the two attach to different
schema nodes:</t>
          <ul spacing="normal">
            <li>
              <t><tt>rdfs-class</tt> and <tt>owl-class</tt> denote a class, and the annotation <bcp14>MUST</bcp14> occur on
a type definition.</t>
            </li>
            <li>
              <t><tt>rdf-property</tt>, <tt>owl-object-property</tt>, <tt>owl-datatype-property</tt>, and
<tt>dcterms-property</tt> denote a property, and the annotation <bcp14>MUST</bcp14> occur on a
property, collection item, map value, or choice member schema.</t>
            </li>
            <li>
              <t><tt>skos-concept</tt> denotes neither, and the annotation <bcp14>MAY</bcp14> occur on either.</t>
            </li>
          </ul>
          <t>All entries of one <tt>concepts</tt> array <bcp14>MUST</bcp14> agree. An array <bcp14>MUST NOT</bcp14> combine an
entry whose <tt>kind</tt> denotes a class with an entry whose <tt>kind</tt> denotes a
property. A <tt>kind</tt> outside the values defined above establishes no constraint,
and a processor <bcp14>MUST NOT</bcp14> infer one.</t>
        </section>
        <section anchor="concepts-redundancy">
          <name>Relationship to the Annotation Model</name>
          <t>The keywords defined in this document already state the part a node plays. A
<tt>concepts</tt> entry that names a term whose meaning is that same part carries no
information beyond the annotation it accompanies and <bcp14>SHOULD</bcp14> be omitted.</t>
          <t>A node that carries <tt>observedProperty</tt> is an observation record by
<xref target="annotation-model"/>, and <bcp14>SHOULD NOT</bcp14> also be bound to a general observation
class. A member that carries <tt>semanticRole</tt> <bcp14>SHOULD NOT</bcp14> also be bound to a
vocabulary property whose meaning is that same role, such as a term for the
result of an observation beside <tt>observationValue</tt>, or a term for the feature
that an observation is about beside <tt>featureOfInterest</tt>.</t>
          <t><tt>concepts</tt> is for meaning that the annotation model does not carry: the domain
class of a record, the catalogue or taxonomic term that a member names, or a
correspondence that a consumer needs in order to join the data to another
vocabulary. A redundant entry is not an error, and a processor <bcp14>MUST NOT</bcp14> reject a
document for carrying one.</t>
        </section>
        <section anchor="concepts-and-observed-property">
          <name>Relationship to <tt>observedProperty</tt></name>
          <t><tt>concepts</tt> states which external terms the annotated node corresponds to.
<tt>observedProperty</tt> states which phenomenon a record quantifies. Where the term
is an observable-property definition, <tt>observedProperty</tt> carries it and
<tt>concepts</tt> <bcp14>MUST NOT</bcp14> name it. The same URI <bcp14>MUST NOT</bcp14> appear in both keywords on
one node.</t>
          <t>Correspondences between one observable-property definition and terms in other
vocabularies belong to the definition and are recorded once there, as described
in <xref target="observable-property-mappings"/>. They are not repeated as <tt>concepts</tt> entries
in every schema that cites the definition.</t>
          <t>A binding is a statement about meaning and not about resolution. A missing or
unresolved term is indeterminate and <bcp14>MUST NOT</bcp14> be repaired from property names,
descriptions, labels, or samples.</t>
          <t>Example:</t>
          <sourcecode type="json"><![CDATA[
{
  "name": "TideGaugeReading",
  "type": "object",
  "description": "One water-level reading from a tide gauge.",
  "concepts": [
    {
      "reference": "http://www.w3.org/ns/sosa/Observation",
      "kind": "owl-class"
    }
  ],
  "observedProperty": {
    "reference":
      "https://vocab.nerc.ac.uk/collection/P01/current/ASLVZZ01/",
    "kind": "nerc-p01"
  },
  "properties": {
    "waterLevel": {
      "type": "double",
      "unit": "m",
      "description": "Height of the water surface above datum.",
      "examples": [2.41],
      "semanticRole": "observationValue",
      "concepts": [
        {
          "reference": "http://www.w3.org/ns/sosa/hasSimpleResult",
          "kind": "rdf-property"
        }
      ]
    },
    "issued": {
      "type": "datetime",
      "description": "Instant at which the reading was published.",
      "examples": ["2026-03-11T08:15:00Z"],
      "concepts": [
        {
          "reference": "http://purl.org/dc/terms/issued",
          "kind": "dcterms-property"
        },
        {
          "reference": "http://www.w3.org/ns/prov#generatedAtTime",
          "kind": "rdf-property"
        }
      ]
    }
  }
}
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="observation-annotations">
      <name>Observation Annotations</name>
      <section anchor="observed-property">
        <name>The <tt>observedProperty</tt> Keyword</name>
        <t>The <tt>observedProperty</tt> keyword identifies the observable-property definition
associated with an observation record, or with one result within it, as
introduced in <xref target="observable-observed-concepts"/>.</t>
        <t>When present, <tt>observedProperty</tt> <bcp14>MUST</bcp14> be an object with a <bcp14>REQUIRED</bcp14> <tt>reference</tt>
string and a <bcp14>REQUIRED</bcp14> <tt>kind</tt> string. No other properties are permitted.</t>
        <section anchor="observed-property-reference">
          <name>The <tt>reference</tt> Property</name>
          <t><tt>reference</tt> <bcp14>MUST</bcp14> be an absolute URI <xref target="RFC3986"/> that identifies one immutable
observable-property definition. Version identity, when used, is implied by the
URI itself, and a materially different concept <bcp14>MUST</bcp14> be identified by a
different URI. The URI <bcp14>SHOULD</bcp14> deep-link to one concrete definition entry in the
selected vocabulary. This document does not define a resolution protocol, URI
layout, storage model, or catalog serialization.</t>
        </section>
        <section anchor="observed-property-kind">
          <name>The <tt>kind</tt> Property</name>
          <t><tt>kind</tt> classifies which definition model the URI identifies. It is an open
enumeration, and a value identifies the vocabulary or catalog type that
publishes the definition.</t>
          <t>Examples of catalog types include:</t>
          <ul spacing="normal">
            <li>
              <t><tt>cf-standard-name</tt> for URIs identifying entries from the CF Standard Name
Table, for example a URI identifying <tt>air_temperature</tt>;</t>
            </li>
            <li>
              <t><tt>nerc-p01</tt> for entries from the NERC Vocabulary Server Parameter Usage
Vocabulary (P01) identified by dereferenceable concept URIs.</t>
            </li>
          </ul>
          <t>An organization that publishes its own catalog names its own model. The examples
in this document use <tt>example-catalog</tt> where the cited catalog is fictional.</t>
          <t>Example:</t>
          <sourcecode type="json"><![CDATA[
{
  "observedProperty": {
    "reference":
      "https://vocab.nerc.ac.uk/collection/P01/current/CTMPZZ01/",
    "kind": "nerc-p01"
  }
}
]]></sourcecode>
        </section>
        <section anchor="observed-property-attachment-and-scope">
          <name>Attachment and Scope</name>
          <t><tt>observedProperty</tt> <bcp14>MAY</bcp14> occur on an object or tuple that describes an observation
record, and on a member schema of that object or tuple that carries a result.</t>
          <t>On a record it identifies the observable property of every result in that record
that does not carry one of its own. On a result member it identifies the
observable property of that result alone and takes precedence over the record's.</t>
          <t>Every annotation identifies exactly one observable property for the node it is
attached to. A missing or unresolved reference is indeterminate and <bcp14>MUST NOT</bcp14> be
repaired from labels, mappings, result schemas, units, descriptions, property
names, or samples.</t>
          <t>The feature, procedure, and temporal roles of a record are shared by every
result in it. Where a record carries more than one result, a <tt>resultQuality</tt> on
the record qualifies all of them, and qualifying one result on its own requires
modelling that result as a nested object.</t>
          <t>Example of a record with two results:</t>
          <sourcecode type="json"><![CDATA[
{
  "name": "BuoySurfacePacket",
  "type": "object",
  "properties": {
    "buoy_id": {
      "type": "string",
      "semanticRole": "featureOfInterest"
    },
    "measured_at": {
      "type": "datetime",
      "description": "Time both results occurred",
      "examples": ["2026-07-27T12:00:00Z"],
      "semanticRole": "phenomenonTime"
    },
    "sea_surface_temperature": {
      "type": "double",
      "unit": "Cel",
      "examples": [18.4],
      "semanticRole": "observationValue",
      "observedProperty": {
        "reference":
        "https://vocab.nerc.ac.uk/collection/P01/current/CTMPZZ01/",
        "kind": "nerc-p01"
      }
    },
    "practical_salinity": {
      "type": "double",
      "unit": "1",
      "examples": [35.1],
      "semanticRole": "observationValue",
      "observedProperty": {
        "reference":
        "https://vocab.nerc.ac.uk/collection/P01/current/PSLTZZ01/",
        "kind": "nerc-p01"
      }
    }
  },
  "required": [
    "buoy_id", "measured_at", "sea_surface_temperature",
    "practical_salinity"
  ],
  "additionalProperties": false
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="observable-property-mappings">
        <name>Semantic Mappings and Result Hints</name>
        <t>An authority <bcp14>MAY</bcp14> publish semantic mappings from an observable-property
definition to other identified concepts, using relation kinds such as
<tt>exactMatch</tt>, <tt>closeMatch</tt>, <tt>broader</tt>, <tt>narrower</tt>, <tt>related</tt>, and
<tt>quantityKind</tt>. Mapping targets <bcp14>MUST</bcp14> be absolute URIs, and a mapping <bcp14>SHOULD</bcp14>
carry a review state such as <tt>proposed</tt>, <tt>reviewed</tt>, or <tt>rejected</tt>.</t>
        <t>Only a reviewed <tt>exactMatch</tt> can provide evidence that two distinct identifiers
denote the same observable property. <tt>closeMatch</tt>, hierarchy, relatedness,
label similarity, and quantity-kind classification do not establish
equivalence, and no mapping alone authorizes execution.</t>
        <t>A <tt>quantityKind</tt> mapping can reference a QUDT QuantityKind <xref target="QUDT"/> as a
classification and compatibility hint. Other mappings can target CF Standard
Names, SOSA/SSN concepts, or agency vocabularies
<xref target="CF-STANDARD-NAMES"/> <xref target="SOSA-SSN"/>.</t>
        <t>An authority <bcp14>MAY</bcp14> identify an expected result schema. That schema and any
quantity-kind mapping are hints; the actual result schema and JSON Structure
Units annotations remain authoritative. An observable-property definition <bcp14>MUST
NOT</bcp14> override unit semantics or duplicate authoritative dimensions, unit lists,
conversion factors, or conversion formulas.</t>
      </section>
      <section anchor="semantic-role">
        <name>The <tt>semanticRole</tt> Keyword</name>
        <t>The <tt>semanticRole</tt> keyword identifies the observation or operational function of an
annotated value.</t>
        <t>The value of <tt>semanticRole</tt> <bcp14>MUST</bcp14> be one of a closed set of permitted values
defined in this section. A <tt>semanticRole</tt> value is never a URI; terms drawn from
external vocabularies are carried by <tt>concepts</tt> instead.</t>
        <t><tt>semanticRole</tt> is scalar; therefore each annotated schema element can carry one
<tt>semanticRole</tt> value.</t>
        <t>One containing type <bcp14>MUST NOT</bcp14> declare two direct members with the same value for
any of <tt>phenomenonTime</tt>, <tt>resultTime</tt>, <tt>effectiveTime</tt>, <tt>phenomenonTimeStart</tt>,
<tt>phenomenonTimeEnd</tt>, <tt>effectiveTimeStart</tt>, <tt>effectiveTimeEnd</tt>, <tt>ingestionTime</tt>,
<tt>scheduledTime</tt>, <tt>actualTime</tt>, or <tt>forecastIssueTime</tt>. Each of these roles
identifies one position, and every rule in this document that resolves such a
role to a member presumes one. A type declaring two leaves those rules
unresolvable rather than ambiguous.</t>
        <t>The observation-result and feature roles carry no such restriction. Repetition
is meaningful for them, and the sections defining them state what it projects.</t>
        <section anchor="semantic-role-observation-result-concern">
          <name>Observation Result Concern</name>
          <t>A record using the roles of this concern, together with the feature and
procedure roles defined below:</t>
          <sourcecode type="json"><![CDATA[
{
  "name": "WaterLevelObservation",
  "type": "object",
  "observedProperty": {
    "reference": "https://example.org/props/water-level/v1",
    "kind": "example-catalog"
  },
  "properties": {
    "station": {
      "type": "string",
      "examples": ["USGS-12149000"],
      "semanticRole": "featureOfInterest"
    },
    "procedure": {
      "type": "string",
      "examples": ["Pressure transducer"],
      "semanticRole": "observingProcedure"
    },
    "result": {
      "type": "double",
      "description": "Water level above datum",
      "unit": "m",
      "examples": [2.47],
      "semanticRole": "observationValue"
    },
    "quality": {
      "type": "string",
      "description": "Quality classification for this result",
      "examples": ["validated", "estimated"],
      "semanticRole": "resultQuality"
    }
  },
  "required": ["station", "procedure", "result", "quality"],
  "additionalProperties": false
}
]]></sourcecode>
          <section anchor="observation-value">
            <name><tt>observationValue</tt></name>
            <t>A property carrying the result of an observation act.</t>
            <t>An <tt>observationValue</tt> is the outcome of one observation act, not the act
itself. Each act is represented by one complete value in one annotated
property. Structured or composite results can be represented with an object,
tuple, or another compatible compound type. Multiple <tt>observationValue</tt>
properties in the same containing type represent multiple results, not one
combined act.</t>
          </section>
          <section anchor="result-quality">
            <name><tt>resultQuality</tt></name>
            <t>One result-quality value associated with the observation, corresponding to ISO
result semantics <xref target="ISO19156"/>.</t>
            <t><tt>resultQuality</tt> qualifies the <tt>observationValue</tt>; it is not the result value
itself.</t>
            <t>A single observation act can carry multiple quality qualifiers, and each direct
property with <tt>semanticRole: resultQuality</tt> projects one of them.</t>
            <t>The value schema or external vocabulary defines the quality scale. This
specification defines no threshold, ordering, confidence model, or processing
effect. Omission does not imply acceptable quality. Procedure-level quality
metadata describes the measuring process in general and is distinct from
<tt>resultQuality</tt>, which describes one observation result.</t>
          </section>
        </section>
        <section anchor="semantic-role-feature-and-procedure-concern">
          <name>Feature and Procedure Concern</name>
          <t>A record using the roles of this concern:</t>
          <sourcecode type="json"><![CDATA[
{
  "name": "RiverSampleObservation",
  "type": "object",
  "observedProperty": {
    "reference": "https://example.org/props/dissolved-oxygen/v1",
    "kind": "example-catalog"
  },
  "properties": {
    "observationId": { "type": "uuid" },
    "waterBody": {
      "type": "string",
      "description": "River water body ultimately of interest",
      "examples": ["Rhine", "Niers", "Schwalm"],
      "semanticRole": "ultimateFeatureOfInterest"
    },
    "sampleParcel": {
      "type": "string",
      "description": "Sampled water parcel directly observed",
      "examples": ["Surface sample at station 17"],
      "semanticRole": "proximateFeatureOfInterest"
    },
    "sampler": {
      "type": "uri",
      "description": "Instrument identifier from a device catalogue",
      "examples": [
        "https://vocab.nerc.ac.uk/collection/L22/current/TOOL1248/"
      ],
      "semanticRole": "observingProcedure"
    },
    "dissolvedOxygen": {
      "type": "double",
      "unit": "mg/L",
      "semanticRole": "observationValue"
    }
  },
  "required": [
    "observationId", "waterBody", "sampleParcel", "sampler",
    "dissolvedOxygen"
  ],
  "additionalProperties": false
}
]]></sourcecode>
          <section anchor="feature-of-interest">
            <name><tt>featureOfInterest</tt></name>
            <t>Value identifying or describing the feature whose property is observed: the
entity that is the subject of the observation. It is distinct from
<tt>observedProperty</tt>, which identifies which property is observed, from
<tt>observingProcedure</tt>, which identifies how the value is produced, and from
<tt>observationValue</tt>, which carries the result.</t>
            <t>The annotated property's value can be a scalar, object, tuple, or collection.
The property schema defines representation, cardinality, and requiredness.</t>
            <t>Where the feature is a member of a collection held elsewhere in the document,
JSON Structure Relations <xref target="JSTRUCT-RELATIONS"/> states the reference:</t>
            <sourcecode type="json"><![CDATA[
{
  "definitions": {
    "HydroGraph": {
      "type": "object",
      "name": "HydroGraph",
      "properties": {
        "riverReaches": {
          "type": "array",
          "items": { "$ref": "#/definitions/RiverReach" }
        },
        "observations": {
          "type": "array",
          "items": { "$ref": "#/definitions/RiverObservation" }
        }
      },
      "required": ["riverReaches", "observations"],
      "additionalProperties": false
    },
    "RiverReach": {
      "type": "object",
      "name": "RiverReach",
      "identity": ["reachId"],
      "properties": {
        "reachId": { "type": "string" },
        "riverName": { "type": "string" },
        "fromNodeId": { "type": "string" },
        "toNodeId": { "type": "string" },
        "lengthMeters": { "type": "double", "unit": "m" }
      },
      "required": ["reachId", "riverName", "fromNodeId", "toNodeId"],
      "additionalProperties": false
    },
    "RiverObservation": {
      "type": "object",
      "name": "RiverObservation",
      "identity": ["observationId"],
      "properties": {
        "observationId": { "type": "uuid" },
        "reachIdRef": {
          "type": "string",
          "description": "River reach identifier",
          "semanticRole": "featureOfInterest"
        },
        "waterLevel": {
          "type": "double",
          "semanticRole": "observationValue",
          "unit": "m"
        }
      },
      "relations": {
        "featureReachRef": {
          "cardinality": "single",
          "targettype": { "$ref": "#/definitions/RiverReach" },
          "scope": "#/definitions/HydroGraph/properties/riverReaches"
        }
      },
      "required": ["observationId", "reachIdRef", "waterLevel"],
      "additionalProperties": false
    }
  }
}
]]></sourcecode>
            <t>In an instance, <tt>reachIdRef</tt> carries the same identifier value used by
the relation target identity, for example <tt>"RR-1042"</tt>.</t>
          </section>
          <section anchor="proximate-feature-of-interest">
            <name><tt>proximateFeatureOfInterest</tt></name>
            <t>Value identifying or describing the feature directly involved in observing.</t>
            <t>This role identifies the immediate feature participating in measurement
context (for example a sampled parcel). Where the observation involves
sampling, this is the feature that ISO 19156 <xref target="ISO19156"/> calls a sampling
feature.</t>
          </section>
          <section anchor="ultimate-feature-of-interest">
            <name><tt>ultimateFeatureOfInterest</tt></name>
            <t>Value identifying or describing the feature ultimately of interest.</t>
            <t>This role identifies the broader feature for which the observation is
semantically interpreted.</t>
            <t>Neither proximate nor ultimate feature is inferred from the other. When
<tt>featureOfInterest</tt> and specialized FoI roles coexist, processors <bcp14>MUST</bcp14> preserve
them as separate declarations and <bcp14>MUST NOT</bcp14> assume equivalence. Feature identity
<bcp14>MUST NOT</bcp14> be inferred from observation identity, location, property names, or
transport metadata.</t>
          </section>
          <section anchor="observing-procedure">
            <name><tt>observingProcedure</tt></name>
            <t>Value identifying or describing the procedure used for the observation act.</t>
            <t>Procedure identity is comparability-critical: different procedures can yield
different biases or meanings for the same property and feature. Equality is
evidence for candidate grouping, not proof of statistical interchangeability.
When a shared catalog is available, procedure identifiers <bcp14>SHOULD</bcp14> be expressed
as URIs; a device or instrument registry serves where the procedure is
effectively defined by the instrument or sampler used.</t>
          </section>
        </section>
        <section anchor="semantic-role-temporal-concern-observation-time">
          <name>Temporal Concern (Observation Time)</name>
          <t>A record using the roles of this concern:</t>
          <sourcecode type="json"><![CDATA[
{
  "name": "WaterLevelBulletin",
  "type": "object",
  "properties": {
    "station_id": {
      "type": "string",
      "semanticRole": "featureOfInterest"
    },
    "observed_at": {
      "type": "datetime",
      "description": "Time the water level applied at the station",
      "examples": ["2026-07-27T12:00:00Z"],
      "semanticRole": "phenomenonTime"
    },
    "published_at": {
      "type": "datetime",
      "description": "Time when the result became available",
      "examples": ["2026-07-27T12:00:04Z"],
      "semanticRole": "resultTime"
    },
    "in_force": {
      "type": "object",
      "description": "Period during which the bulletin is in force",
      "semanticRole": "effectiveTime",
      "properties": {
        "start": { "type": "datetime" },
        "end": { "type": "datetime" }
      },
      "required": ["start", "end"],
      "additionalProperties": false
    },
    "water_level": {
      "type": "double",
      "unit": "m",
      "semanticRole": "observationValue"
    }
  },
  "required": [
    "station_id", "observed_at", "published_at", "in_force",
    "water_level"
  ],
  "additionalProperties": false
}
]]></sourcecode>
          <section anchor="phenomenon-time">
            <name><tt>phenomenonTime</tt></name>
            <t>Time during which the result applies to the observed property. It can be
represented as an instant or period.</t>
            <t>When used for an instant, <tt>phenomenonTime</tt> <bcp14>MUST</bcp14> annotate a value whose Core
type and reference binding together encode a temporal position. It <bcp14>MAY</bcp14> instead
annotate a named object or tuple representing a period.</t>
          </section>
          <section anchor="result-time">
            <name><tt>resultTime</tt></name>
            <t>Temporal position at which the result became available.</t>
            <t><tt>resultTime</tt> <bcp14>MUST</bcp14> annotate a value whose Core type and reference binding
together encode a temporal position.</t>
          </section>
          <section anchor="effective-time">
            <name><tt>effectiveTime</tt></name>
            <t>Period during which the record is in force and its use is intended.</t>
            <t><tt>effectiveTime</tt> <bcp14>MAY</bcp14> annotate a named object or tuple representing a period.</t>
            <t><tt>effectiveTime</tt> qualifies the record and not the phenomenon. It states how long
a warning, advisory, or other issued statement is meant to be acted on, and it
gives no boundary to any observed property. A record that describes a period of
the world, including a forecast, states that period with <tt>phenomenonTime</tt> or
with <tt>phenomenonTimeStart</tt> and <tt>phenomenonTimeEnd</tt>. The two are independent: a
warning in force for twelve hours may concern a phenomenon lasting minutes.</t>
            <t>This document defines no record-versioning axis. The role is named
<tt>effectiveTime</tt> rather than <tt>validTime</tt> because the latter names the
bitemporal valid time of ISO 19108 <xref target="ISO19108"/>. <tt>effectiveTime</tt> is not that
valid time, which pairs the period a fact is held true of the world with the
period a system recorded it, and a processor <bcp14>MUST NOT</bcp14> read it as one.</t>
            <t>"Time" or "Duration" in any ISO, boundary, or operational role name defined by
this document does not require a Gregorian, ISO 8601, or RFC 3339 encoding. The
<tt>semanticRole</tt> states semantics; the Core type and any
<tt>temporalReferenceSystem</tt> state representation and reference semantics.</t>
          </section>
        </section>
        <section anchor="semantic-role-temporal-concern-flattened-period-boundaries">
          <name>Temporal Concern (Flattened Period Boundaries)</name>
          <t>A record using the roles of this concern. The two pairs are independent axes:
the phenomenon-time pair bounds what the result is about, and the
effective-time pair bounds how long the record is in force.</t>
          <sourcecode type="json"><![CDATA[
{
  "name": "AirQualityAdvisory",
  "type": "object",
  "properties": {
    "site_id": {
      "type": "string",
      "semanticRole": "featureOfInterest"
    },
    "averaging_window_opens": {
      "type": "datetime",
      "examples": ["2026-07-27T12:00:00Z"],
      "semanticRole": "phenomenonTimeStart"
    },
    "averaging_window_closes": {
      "type": "datetime",
      "examples": ["2026-07-27T13:00:00Z"],
      "semanticRole": "phenomenonTimeEnd"
    },
    "advisory_effective_at": {
      "type": "datetime",
      "examples": ["2026-07-27T15:00:00Z"],
      "semanticRole": "effectiveTimeStart"
    },
    "advisory_expires_at": {
      "type": "datetime",
      "examples": ["2026-07-28T03:00:00Z"],
      "semanticRole": "effectiveTimeEnd"
    },
    "mean_pm25": {
      "type": "double",
      "unit": "ug/m3",
      "semanticRole": "observationValue"
    }
  },
  "required": [
    "site_id",
    "averaging_window_opens",
    "averaging_window_closes",
    "advisory_effective_at",
    "advisory_expires_at",
    "mean_pm25"
  ],
  "additionalProperties": false
}
]]></sourcecode>
          <section anchor="phenomenon-time-start">
            <name><tt>phenomenonTimeStart</tt></name>
            <t>Temporal position encoding the start of the <tt>phenomenonTime</tt> period.</t>
            <t><tt>phenomenonTimeStart</tt> <bcp14>MUST</bcp14> annotate a value whose Core type and reference
binding together encode a temporal position.</t>
          </section>
          <section anchor="phenomenon-time-end">
            <name><tt>phenomenonTimeEnd</tt></name>
            <t>Temporal position encoding the end of the <tt>phenomenonTime</tt> period.</t>
            <t><tt>phenomenonTimeEnd</tt> <bcp14>MUST</bcp14> annotate a value whose Core type and reference
binding together encode a temporal position.</t>
          </section>
          <section anchor="effective-time-start">
            <name><tt>effectiveTimeStart</tt></name>
            <t>Temporal position encoding the start of the <tt>effectiveTime</tt> period.</t>
            <t><tt>effectiveTimeStart</tt> <bcp14>MUST</bcp14> annotate a value whose Core type and reference
binding together encode a temporal position.</t>
          </section>
          <section anchor="effective-time-end">
            <name><tt>effectiveTimeEnd</tt></name>
            <t>Temporal position encoding the end of the <tt>effectiveTime</tt> period.</t>
            <t><tt>effectiveTimeEnd</tt> <bcp14>MUST</bcp14> annotate a value whose Core type and reference binding
together encode a temporal position.</t>
            <t>A paired start and end projects one period, not two separate attributes. Period
closure is not supplied by these role names. This specification uses half-open
<tt>[start,end)</tt> periods only for <tt>phenomenonTimeRelation</tt>; another convention requires a
separate representation or profile.</t>
          </section>
        </section>
        <section anchor="semantic-role-temporal-concern-operational-event-time">
          <name>Temporal Concern (Operational Event Time)</name>
          <t>A planned activity, its execution, and its acceptance by a receiving system:</t>
          <sourcecode type="json"><![CDATA[
{
  "name": "SamplingRun",
  "type": "object",
  "properties": {
    "run_id": { "type": "uuid" },
    "scheduled_sample_time": {
      "type": "datetime",
      "description": "Planned time for sample collection",
      "examples": ["2026-07-27T14:00:00Z"],
      "semanticRole": "scheduledTime"
    },
    "actual_sample_time": {
      "type": "datetime",
      "description": "Time when sample collection actually occurred",
      "examples": ["2026-07-27T14:07:12Z"],
      "semanticRole": "actualTime"
    },
    "ingested_at": {
      "type": "datetime",
      "description": "Time the receiving system accepted the record",
      "examples": ["2026-07-27T14:09:30Z"],
      "semanticRole": "ingestionTime"
    },
    "station_id": {
      "type": "string",
      "semanticRole": "featureOfInterest"
    }
  },
  "required": [
    "run_id",
    "scheduled_sample_time",
    "actual_sample_time",
    "ingested_at",
    "station_id"
  ],
  "additionalProperties": false
}
]]></sourcecode>
          <section anchor="ingestion-time">
            <name><tt>ingestionTime</tt></name>
            <t>Temporal position when a declared system accepted the record.</t>
            <t><tt>ingestionTime</tt> <bcp14>MUST</bcp14> annotate a value whose Core type and reference binding
together encode a temporal position.</t>
          </section>
          <section anchor="scheduled-time">
            <name><tt>scheduledTime</tt></name>
            <t>Planned temporal position for an activity.</t>
            <t><tt>scheduledTime</tt> <bcp14>MUST</bcp14> annotate a value whose Core type and reference binding
together encode a temporal position.</t>
          </section>
          <section anchor="actual-time">
            <name><tt>actualTime</tt></name>
            <t>Temporal position when the planned activity occurred.</t>
            <t><tt>actualTime</tt> <bcp14>MUST</bcp14> annotate a value whose Core type and reference binding
together encode a temporal position.</t>
          </section>
          <section anchor="forecast-issue-time">
            <name><tt>forecastIssueTime</tt></name>
            <t>Forecast-specific <tt>resultTime</tt>: the temporal position when a forecast product
was issued.</t>
            <t><tt>forecastIssueTime</tt> <bcp14>MUST</bcp14> annotate a value whose Core type and reference
binding together encode a temporal position.</t>
            <t>A forecast record states the position or period it describes with
<tt>phenomenonTime</tt>, or with <tt>phenomenonTimeStart</tt> and <tt>phenomenonTimeEnd</tt>. A
forecast is an observation whose result time precedes its phenomenon time, and
it carries the same temporal roles as any other observation; nothing about the
phenomenon-time roles restricts them to positions that have already elapsed.</t>
          </section>
          <section anchor="forecast-lead-duration">
            <name><tt>forecastLeadDuration</tt></name>
            <t>Duration between the forecast issue position and the phenomenon-time position
the forecast describes.</t>
            <t><tt>forecastLeadDuration</tt> <bcp14>MUST</bcp14> annotate Core <tt>duration</tt> or a numeric value with a
temporal unit <xref target="JSTRUCT-UNITS"/>.</t>
            <t>Example:</t>
            <sourcecode type="json"><![CDATA[
{
  "name": "RiverStageForecast",
  "type": "object",
  "properties": {
    "station_id": {
      "type": "string",
      "semanticRole": "featureOfInterest"
    },
    "issued_at": {
      "type": "datetime",
      "description": "Time when the forecast bulletin was issued",
      "examples": ["2026-07-27T09:00:00Z"],
      "semanticRole": "forecastIssueTime"
    },
    "forecast_window": {
      "type": "object",
      "description": "Phenomenon-time period the forecast describes",
      "semanticRole": "phenomenonTime",
      "properties": {
        "start": { "type": "datetime" },
        "end": { "type": "datetime" }
      },
      "required": ["start", "end"],
      "additionalProperties": false
    },
    "lead_time": {
      "type": "duration",
      "description": "Duration from issue to the phenomenon time",
      "examples": ["PT6H"],
      "semanticRole": "forecastLeadDuration"
    },
    "predicted_water_level": {
      "type": "double",
      "unit": "m",
      "semanticRole": "observationValue"
    }
  },
  "required": [
    "station_id", "issued_at", "forecast_window",
    "predicted_water_level"
  ],
  "additionalProperties": false
}
]]></sourcecode>
            <t>These operational values describe the handling of the record. A processor <bcp14>MUST
NOT</bcp14> read any of them as <tt>phenomenonTime</tt>, <tt>resultTime</tt>, <tt>observedProperty</tt>,
<tt>featureOfInterest</tt>, or <tt>observingProcedure</tt>.</t>
          </section>
        </section>
        <section anchor="semantic-role-status-concern">
          <name>Status Concern</name>
          <section anchor="status">
            <name><tt>status</tt></name>
            <t>State of the record itself, or of the feature it describes, such as whether a
value is provisional, verified, superseded, or withdrawn.</t>
            <t><tt>status</tt> <bcp14>MUST</bcp14> annotate a value drawn from a fixed set of states, which is a Core
<tt>string</tt> or an integer type. The states are defined outside this document. The
annotated schema <bcp14>MUST</bcp14> either constrain them with <tt>enum</tt> <xref target="JSTRUCT-CORE"/> or
identify the set that defines them, which <bcp14>MAY</bcp14> be a vocabulary referenced via
<tt>concepts</tt>.</t>
            <t><tt>status</tt> qualifies the record rather than the phenomenon. A change of status
does not change what was observed, and a record <bcp14>MAY</bcp14> be reissued with a new
status and an unchanged result.</t>
            <t><tt>status</tt> and <tt>resultQuality</tt> are distinct. <tt>resultQuality</tt> states how good a
result is, on a scale the quality vocabulary defines; <tt>status</tt> states how the
record carrying it is to be treated. A provisional record and a low-quality
result are independent conditions, and a processor <bcp14>MUST NOT</bcp14> read either
annotation as the other.</t>
            <t>Example:</t>
            <sourcecode type="json"><![CDATA[
{
  "name": "WaterLevelRecord",
  "type": "object",
  "properties": {
    "water_level": {
      "type": "double",
      "unit": "m",
      "semanticRole": "observationValue"
    },
    "record_status": {
      "type": "string",
      "description": "Standing of this record in the lifecycle",
      "enum": ["provisional", "verified", "superseded", "withdrawn"],
      "examples": ["provisional"],
      "semanticRole": "status"
    }
  },
  "required": ["water_level", "record_status"],
  "additionalProperties": false
}
]]></sourcecode>
          </section>
        </section>
      </section>
      <section anchor="derivation">
        <name>The <tt>derivation</tt> Keyword</name>
        <t>The <tt>derivation</tt> keyword classifies how a result value was produced.</t>
        <t>When present, <tt>derivation</tt> <bcp14>MUST</bcp14> be one of:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Derivation</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>measured</tt></td>
              <td align="left">Produced directly by an observation procedure performing measurement.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>statistic</tt></td>
              <td align="left">Produced by summarizing a set of values with one of the functions named by <tt>statistic</tt> (<xref target="statistic"/>).</td>
            </tr>
            <tr>
              <td align="left">
                <tt>calculated</tt></td>
              <td align="left">Produced by a deterministic calculation that <tt>statistic</tt> does not name.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>estimated</tt></td>
              <td align="left">Inferred from incomplete, indirect, or uncertain evidence.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>modeled</tt></td>
              <td align="left">Produced by a model, simulation, or predictive procedure.</td>
            </tr>
          </tbody>
        </table>
        <t>Routine conversion, rounding, or serialization does not by itself change
<tt>measured</tt> to <tt>calculated</tt>. The category identifies no source, formula,
software, or detailed procedure, and it is not a lineage model: it does not
identify the act that produced the value or relate that value to the values it
was derived from (<xref target="PROV-O"/>).</t>
        <t><tt>statistic</tt> and <tt>calculated</tt> divide the calculations between them. Where the
result is one of the summaries this document names, the derivation is
<tt>statistic</tt> and the <tt>statistic</tt> keyword names which one, so a reader can tell an
hourly mean from an hourly maximum without reading prose. Every other
calculation is <tt>calculated</tt>, and the schema <bcp14>SHOULD</bcp14> explain the method in the
<tt>description</tt> of the annotated schema. This document defines no expression
language, and a processor <bcp14>MUST NOT</bcp14> parse a <tt>description</tt> or reproduce a
calculation from it.</t>
        <t>The names alone do not divide the categories, and the tests below do. They are
stated so that two authors describing the same value reach the same category.</t>
        <t>The first division is between <tt>measured</tt> and the rest, and it is the one that
carries the most weight for a consumer. A value is <tt>measured</tt> where it is what
an observation procedure read, and it is not <tt>measured</tt> where any function, fit,
inference, or model stood between the procedure and the value. Unit conversion,
rounding, and serialization are not such functions, as stated above.</t>
        <t>Determinism divides <tt>calculated</tt> from <tt>estimated</tt> and <tt>modeled</tt>. Where the same
inputs must yield the same output, and the function could be written down, the
value is <tt>calculated</tt> however elaborate the arithmetic and however many inputs
it consumes. A dew point obtained from a measured temperature and a measured
humidity by a published formula is <tt>calculated</tt>.</t>
        <t>Dependence on unobserved state divides <tt>modeled</tt> from <tt>estimated</tt>. An
<tt>estimated</tt> value carries only what the observations carry, arranged under an
assumption about their error: an interpolated fill for a failed sensor, or a
strike position derived from arrival times at several detectors, is <tt>estimated</tt>,
because something was observed and the value is an inference from evidence that
does not determine it. A <tt>modeled</tt> value carries information the observations do
not contain, supplied by the model's own representation of the system, and the
procedure would produce a value for a place and time at which nothing was
observed at all. A forecast temperature is <tt>modeled</tt>. A value that a model
produced and that observations then corrected, as in a reanalysis or an
assimilated field, is <tt>modeled</tt>, because the model supplies the state and the
observations only constrain it.</t>
        <t>Where the choice among <tt>calculated</tt>, <tt>estimated</tt>, and <tt>modeled</tt> is genuinely
unclear, the schema <bcp14>SHOULD</bcp14> state the method in <tt>description</tt>. An author <bcp14>MUST NOT</bcp14>
resolve such a case by choosing <tt>measured</tt>, and a processor <bcp14>MUST NOT</bcp14> infer a
formula, a model, an uncertainty, or a procedure from any of these values.</t>
        <t>Example:</t>
        <sourcecode type="json"><![CDATA[
{
  "name": "SeaStateReport",
  "type": "object",
  "properties": {
    "sea_state_index": {
      "type": "double",
      "description": "Composite sea-state index",
      "semanticRole": "observationValue",
      "derivation": "modeled"
    }
  },
  "required": ["sea_state_index"],
  "additionalProperties": false
}
]]></sourcecode>
      </section>
      <section anchor="statistic">
        <name>The <tt>statistic</tt> Keyword</name>
        <t>The <tt>statistic</tt> keyword names the summary function that produced a result value
from a set of values.</t>
        <t>Most summary functions are fully identified by their name. A few are not: a
percentile is not one function but a family, and naming the family without the
rank identifies nothing. <tt>statistic</tt> therefore takes two forms. A function that
takes no parameter is written as a string, and a function that takes one is
written as an object that names the function and carries the parameter.</t>
        <t>When <tt>statistic</tt> is a string, it <bcp14>MUST</bcp14> be one of:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Statistic</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>mean</tt></td>
              <td align="left">Arithmetic mean of the set.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>median</tt></td>
              <td align="left">Middle value of the ordered set.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>mode</tt></td>
              <td align="left">Most frequent value of the set.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>minimum</tt></td>
              <td align="left">Least value of the set.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>maximum</tt></td>
              <td align="left">Greatest value of the set.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>sum</tt></td>
              <td align="left">Total of the set.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>count</tt></td>
              <td align="left">Number of values in the set.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>standardDeviation</tt></td>
              <td align="left">Standard deviation of the set.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>variance</tt></td>
              <td align="left">Variance of the set.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>range</tt></td>
              <td align="left">Difference between the greatest and least value.</td>
            </tr>
          </tbody>
        </table>
        <t>When <tt>statistic</tt> is an object, it <bcp14>MUST</bcp14> carry a <tt>function</tt> member and the
parameter member that <tt>function</tt> requires, and no other members. <tt>function</tt>
          <bcp14>MUST</bcp14> be one of:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Function</th>
              <th align="left">Parameter</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>percentile</tt></td>
              <td align="left">
                <tt>percentile</tt></td>
              <td align="left">Value below which the stated percentage of the set falls.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>nthHighest</tt></td>
              <td align="left">
                <tt>rank</tt></td>
              <td align="left">Value at the stated position counting down from the greatest.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>nthLowest</tt></td>
              <td align="left">
                <tt>rank</tt></td>
              <td align="left">Value at the stated position counting up from the least.</td>
            </tr>
          </tbody>
        </table>
        <t><tt>percentile</tt> <bcp14>MUST</bcp14> be a number greater than zero and less than one hundred, and
<tt>rank</tt> <bcp14>MUST</bcp14> be an integer of two or more. <tt>percentile</tt> <bcp14>MUST</bcp14> be present when
<tt>function</tt> is <tt>percentile</tt> and <bcp14>MUST NOT</bcp14> be present otherwise; <tt>rank</tt> <bcp14>MUST</bcp14> be
present when <tt>function</tt> is <tt>nthHighest</tt> or <tt>nthLowest</tt> and <bcp14>MUST NOT</bcp14> be present
otherwise.</t>
        <t>Both enumerations are closed. A <tt>statistic</tt> that is a string outside the first
table, or an object whose <tt>function</tt> is outside the second, is invalid.</t>
        <t>One meaning has one spelling. A function that takes no parameter <bcp14>MUST</bcp14> be written
in the string form, so <tt>{ "function": "mean" }</tt> is invalid. A percentile of zero
or one hundred <bcp14>MUST</bcp14> be written as <tt>minimum</tt> or <tt>maximum</tt>, and a rank of one <bcp14>MUST</bcp14>
be written as <tt>maximum</tt> or <tt>minimum</tt>, which is why the ranges above exclude
them. A quantile is expressed as the equivalent percentile, so a quantile of
0.95 is written as a <tt>percentile</tt> of 95. Without these rules two schemas could
declare the same statistic in ways that no equality test would match.</t>
        <t>A rank is not a percentile. The fourth-highest value of a set of three hundred
and sixty-five is the 99.18th percentile and of a set of ninety is the 96.7th,
so neither form can be rewritten as the other without knowing how many values
the set held, and <tt>statistic</tt> does not state that. Both forms are needed because
both are what definitions in force actually specify: an air quality limit is
commonly expressed as a rank, and a service level objective as a percentile.</t>
        <t><tt>statistic</tt> and the <tt>statistic</tt> derivation are one declaration in two parts. A
schema whose <tt>derivation</tt> is <tt>statistic</tt> <bcp14>MUST</bcp14> carry a <tt>statistic</tt> keyword, and a
schema carrying a <tt>statistic</tt> keyword <bcp14>MUST</bcp14> have a <tt>derivation</tt> of <tt>statistic</tt>.
The derivation says the value summarizes a set, and the keyword says how. Where
<tt>phenomenonTimeRelation</tt> is <tt>accumulation</tt>,
<tt>statistic</tt> <bcp14>MUST</bcp14> be the string <tt>sum</tt>.</t>
        <t>A calculation that no value in either table names is <tt>calculated</tt> rather than
<tt>statistic</tt>, and <xref target="derivation"/> states what a schema does instead.</t>
        <t>A vocabulary term names the phenomenon and frequently excludes the summary
function, so an hourly mean and an hourly maximum of one phenomenon carry the
same <tt>observedProperty</tt> and differ only here. Two results that carry the same
observable property and different statistics are not comparable as like
quantities. The parameter is part of the statistic: a 95th percentile and a 99th
percentile are different statistics, as are a fourth-highest and a
fifth-highest, and a processor <bcp14>MUST NOT</bcp14> treat two parameterized statistics as
alike unless both the function and the parameter agree.</t>
        <t>The set that the statistic summarizes is the one the other annotations already
establish: the temporal roles give its extent in time, and the feature and
procedure roles give its subject. This document defines no other scoping, and
the only argument <tt>statistic</tt> takes is the one that identifies the function.
It does not state a window alignment, a weighting, a sample count, a treatment
of missing values, an interpolation method by which a percentile is obtained
from a finite set, or a computation, and a processor <bcp14>MUST NOT</bcp14> recompute a
result from it.</t>
        <t>Example:</t>
        <sourcecode type="json"><![CDATA[
{
  "name": "HourlyAirTemperatureSummary",
  "type": "object",
  "observedProperty": {
    "reference":
    "http://vocab.nerc.ac.uk/standard_name/air_temperature/",
    "kind": "cf-standard-name"
  },
  "properties": {
    "station": {
      "type": "string",
      "examples": ["DWD-10382"],
      "semanticRole": "featureOfInterest"
    },
    "hour_start": {
      "type": "datetime",
      "examples": ["2026-07-27T12:00:00Z"],
      "semanticRole": "phenomenonTimeStart"
    },
    "hour_end": {
      "type": "datetime",
      "examples": ["2026-07-27T13:00:00Z"],
      "semanticRole": "phenomenonTimeEnd"
    },
    "temperature_mean": {
      "type": "double",
      "unit": "Cel",
      "description": "Mean air temperature over the hour",
      "examples": [21.4],
      "semanticRole": "observationValue",
      "derivation": "statistic",
      "statistic": "mean"
    },
    "temperature_max": {
      "type": "double",
      "unit": "Cel",
      "description": "Greatest air temperature over the hour",
      "examples": [24.9],
      "semanticRole": "observationValue",
      "derivation": "statistic",
      "statistic": "maximum"
    }
  },
  "required": [
    "station", "hour_start", "hour_end", "temperature_mean",
    "temperature_max"
  ],
  "additionalProperties": false
}
]]></sourcecode>
        <t>The record below carries two parameterized statistics of the same observable
over the same interval. They differ only in the parameter, and nothing but the
parameter distinguishes them.</t>
        <sourcecode type="json"><![CDATA[
{
  "name": "RequestLatencySummary",
  "type": "object",
  "properties": {
    "window_start": {
      "type": "datetime",
      "examples": ["2026-07-27T12:00:00Z"],
      "semanticRole": "phenomenonTimeStart"
    },
    "window_end": {
      "type": "datetime",
      "examples": ["2026-07-27T12:05:00Z"],
      "semanticRole": "phenomenonTimeEnd"
    },
    "latency_p95": {
      "type": "double",
      "unit": "ms",
      "description": "Latency below which 95 percent completed",
      "examples": [128.4],
      "semanticRole": "observationValue",
      "derivation": "statistic",
      "statistic": { "function": "percentile", "percentile": 95 }
    },
    "latency_p99": {
      "type": "double",
      "unit": "ms",
      "description": "Latency below which 99 percent completed",
      "examples": [512.7],
      "semanticRole": "observationValue",
      "derivation": "statistic",
      "statistic": { "function": "percentile", "percentile": 99 }
    }
  },
  "required": [
    "window_start", "window_end", "latency_p95", "latency_p99"
  ],
  "additionalProperties": false
}
]]></sourcecode>
        <t>The record below carries a rank. The fourth-highest daily maximum is the form
in which an ozone air quality standard is stated, and it is not the same
statistic as any percentile unless the number of days in the year is known.</t>
        <sourcecode type="json"><![CDATA[
========== NOTE: '\' line wrapping per RFC 8792 ===========

{
  "name": "AnnualOzoneSummary",
  "type": "object",
  "observedProperty": {
    "reference": "http://vocab.nerc.ac.uk/standard_name/\
        mole_fraction_of_ozone_in_air/",
    "kind": "cf-standard-name"
  },
  "properties": {
    "site": {
      "type": "string",
      "examples": ["US-060370016"],
      "semanticRole": "featureOfInterest"
    },
    "year_start": {
      "type": "datetime",
      "examples": ["2025-01-01T00:00:00Z"],
      "semanticRole": "phenomenonTimeStart"
    },
    "year_end": {
      "type": "datetime",
      "examples": ["2026-01-01T00:00:00Z"],
      "semanticRole": "phenomenonTimeEnd"
    },
    "fourth_highest_daily_max_8h": {
      "type": "double",
      "unit": "[ppb]",
      "description": "Fourth-highest daily maximum 8-hour mean",
      "examples": [68.0],
      "semanticRole": "observationValue",
      "derivation": "statistic",
      "statistic": { "function": "nthHighest", "rank": 4 },
      "phenomenonTimeRelation": "interval"
    }
  },
  "required": [
    "site", "year_start", "year_end", "fourth_highest_daily_max_8h"
  ],
  "additionalProperties": false
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="coded-value-annotations">
      <name>Coded Value Annotations</name>
      <section anchor="coded-values">
        <name>The <tt>codedValues</tt> Keyword</name>
        <t>The <tt>codedValues</tt> keyword binds the annotated property to a code list,
so that the coded value it carries can be resolved to the meaning the list
assigns it.</t>
        <t>A coded value is a number or a short string that stands for a state in a
register maintained elsewhere: a present-weather code, an airport identifier, a
diagnosis code. The register gives each code a meaning, and the value alone does
not. This keyword differs from the reference-style keywords that bind components
to the axes of a space in that it binds a single value to a list of meanings, and
it differs from <tt>concepts</tt> in that <tt>concepts</tt> binds the node to one term while
<tt>codedValues</tt> binds the property to a whole enumeration that its instance values
draw from.</t>
        <t>When present, <tt>codedValues</tt> <bcp14>MUST</bcp14> be an object with a <bcp14>REQUIRED</bcp14> <tt>reference</tt> and a
<bcp14>REQUIRED</bcp14> <tt>kind</tt>, and no other members.</t>
        <section anchor="coded-values-reference-and-kind">
          <name>The <tt>reference</tt> and <tt>kind</tt> Properties</name>
          <t><tt>reference</tt> identifies one specific code list. It <bcp14>MUST</bcp14> be an absolute URI
<xref target="RFC3986"/>, or, where <tt>kind</tt> is <tt>type</tt>, a type reference
<tt>{ "$ref": &lt;JSON Pointer&gt; }</tt> <xref target="JSTRUCT-CORE"/> to a shareable type definition that
enumerates the codes. <tt>kind</tt> does not name the list; it classifies the register
model the list belongs to, so that a processor knows how the list is organized
and how a value joins to an entry. Several lists of one model are distinguished
by <tt>reference</tt>, not by <tt>kind</tt>: the country, currency, and language tables are
three <tt>iso</tt> lists, and the location indicators and aircraft type designators are
two <tt>icao</tt> lists. <tt>kind</tt> is an open enumeration; the following values are
defined here:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Kind</th>
                <th align="left">Kind of list</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>wmo-codes</tt></td>
                <td align="left">A register in the WMO Codes Registry <xref target="WMO-CODES"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>iso</tt></td>
                <td align="left">An ISO code table, such as the ISO 3166 country codes <xref target="ISO3166"/>, the ISO 4217 currency codes <xref target="ISO4217"/>, or the ISO 639 language codes <xref target="ISO639"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>unlocode</tt></td>
                <td align="left">The UN/LOCODE location code list <xref target="UNLOCODE"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>icao</tt></td>
                <td align="left">An ICAO code list, such as the location indicators of <xref target="ICAO7910"/> or the aircraft type designators of <xref target="ICAO8643"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>iata</tt></td>
                <td align="left">An IATA code directory <xref target="IATA-CODES"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>iana</tt></td>
                <td align="left">An IANA registry <xref target="IANA-PROTOCOLS"/>, such as the Language Subtag Registry <xref target="IANA-LANGTAGS"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>icd</tt></td>
                <td align="left">A linearization of the WHO International Classification of Diseases <xref target="WHO-ICD"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>snomed-ct</tt></td>
                <td align="left">A SNOMED CT edition or reference set <xref target="SNOMED-CT"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>loinc</tt></td>
                <td align="left">The LOINC database <xref target="LOINC"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>atc</tt></td>
                <td align="left">The WHO Anatomical Therapeutic Chemical classification <xref target="WHO-ATC"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>unspsc</tt></td>
                <td align="left">The UNSPSC commodity code set <xref target="UNSPSC"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>type</tt></td>
                <td align="left">A meta-type in the annotated schema whose enumeration lists the codes, as <xref target="meta-types"/> describes.</td>
              </tr>
            </tbody>
          </table>
          <t>The annotated value <bcp14>MUST</bcp14> be of a scalar type, a string or an integer, of the
kind the identified list uses for its notations. Where <tt>kind</tt> is <tt>type</tt>, the
identified type enumerates the code notations, and a value denotes the entry
whose notation it equals.</t>
          <t>A value in an instance denotes the entry the register publishes for that value.
How the value is joined to the entry, whether by appending it to the register
URI or by another rule, is stated by the register and not by this document. Some
registers, including <xref target="WMO-CODES"/>, publish each entry at a dereferenceable URI;
a reference to such a register identifies more often than it resolves, which is
true of the other reference-style keywords as well.</t>
          <t>A missing or unresolved register is indeterminate and <bcp14>MUST NOT</bcp14> be repaired from
labels, property names, descriptions, or samples. A value that the register does
not define is not made meaningful by this annotation.</t>
          <t>A processor is not required to dereference the URI. This document does not define
a resolution protocol, URI layout, storage model, or definition serialization.</t>
        </section>
        <section anchor="coded-values-example">
          <name>Example</name>
          <t>The property below carries a present-weather code from the WMO register for
present weather, whose entries are the integers zero through several hundred.</t>
          <sourcecode type="json"><![CDATA[
{
  "name": "SurfaceObservation",
  "type": "object",
  "properties": {
    "stationId": { "type": "string" },
    "presentWeather": {
      "type": "int32",
      "codedValues": {
        "reference": "http://codes.wmo.int/bufr4/codeflag/0-20-003",
        "kind": "wmo-codes"
      }
    }
  },
  "required": ["stationId", "presentWeather"],
  "additionalProperties": false
}
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="measurement-conditioning">
      <name>Measurement Conditioning Annotations</name>
      <section anchor="measurement-conditioning-keyword">
        <name>The <tt>measurementConditioning</tt> Keyword</name>
        <t>The <tt>measurementConditioning</tt> keyword states the frequency weighting, time
weighting, and level reference that a scalar measurement carries, so that two values of
the same unit that were conditioned differently are not compared as like
quantities.</t>
        <t>A weighted level is a single number, not a bundle of channels, and its unit does
not record how it was made. An A-weighted sound level and a Z-weighted one are
both in decibels, and comparing them is a mistake the numbers do not prevent.
The weighting, the time constant, and the reference the level stands against are
the hidden convention this keyword carries.</t>
        <t>When present, <tt>measurementConditioning</tt> <bcp14>MUST</bcp14> be an object with an <bcp14>OPTIONAL</bcp14>
          <tt>weighting</tt>, an <bcp14>OPTIONAL</bcp14> <tt>timeWeighting</tt>, and an <bcp14>OPTIONAL</bcp14> <tt>levelReference</tt>, and no
other members. At least one of the three <bcp14>MUST</bcp14> be present. The annotated value
<bcp14>MUST</bcp14> be of numeric type.</t>
        <section anchor="measurement-conditioning-keyword-weighting">
          <name>The <tt>weighting</tt> Property</name>
          <t><tt>weighting</tt>, when present, names the frequency weighting the value carries. It is
an open enumeration; the values defined here are the frequency weightings of
<xref target="IEC61672-1"/>:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Value</th>
                <th align="left">Meaning</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>a</tt></td>
                <td align="left">A-weighting.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>c</tt></td>
                <td align="left">C-weighting.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>z</tt></td>
                <td align="left">Zero-weighting, the flat response.</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="measurement-conditioning-keyword-time-weighting">
          <name>The <tt>timeWeighting</tt> Property</name>
          <t><tt>timeWeighting</tt>, when present, names the time weighting the value carries. It is
an open enumeration; the values defined here are the time weightings of
<xref target="IEC61672-1"/>:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Value</th>
                <th align="left">Meaning</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>fast</tt></td>
                <td align="left">Fast time weighting.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>slow</tt></td>
                <td align="left">Slow time weighting.</td>
              </tr>
            </tbody>
          </table>
          <t>The impulse time weighting of the superseded IEC 651 is not among these; where a
legacy dataset needs it, it is carried as an open value.</t>
        </section>
        <section anchor="level-reference">
          <name>The <tt>levelReference</tt> Property</name>
          <t><tt>levelReference</tt>, when present, states what the level is relative to. This is one
property appearing in two keywords: the <tt>levelReference</tt> of <tt>audioChannels</tt>
(<xref target="audio-level-reference"/>) takes the same values with the same meanings, since
both answer the same question about a quantity expressed on a logarithmic scale.</t>
          <table>
            <thead>
              <tr>
                <th align="left">Value</th>
                <th align="left">Meaning</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>soundPressure</tt></td>
                <td align="left">The reference is 20 micropascals <xref target="ISO1683"/>, and a level in decibels is sound pressure level.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>fullScale</tt></td>
                <td align="left">The reference is digital full scale, the greatest level the representation admits, and a level in decibels is dBFS.</td>
              </tr>
            </tbody>
          </table>
          <t>The enumeration is open. A value outside it <bcp14>MUST</bcp14> be an absolute URI <xref target="RFC3986"/>
identifying another reference, because a level may be referred to a voltage, a
power, or a quantity that the standard governing an instrument fixes, and this
document does not enumerate what other bodies define. A processor that does not
know a value <bcp14>MUST</bcp14> preserve it, <bcp14>MUST NOT</bcp14> reject the schema for carrying it, and
<bcp14>MUST NOT</bcp14> compare a level against one carrying a different reference.</t>
        </section>
        <section anchor="measurement-conditioning-keyword-example">
          <name>Example</name>
          <t>The property below carries an A-weighted, fast, sound-pressure level.</t>
          <sourcecode type="json"><![CDATA[
{
  "name": "NoiseReading",
  "type": "object",
  "properties": {
    "sensorId": { "type": "string" },
    "soundLevel": {
      "type": "double",
      "unit": "dB",
      "measurementConditioning": {
        "weighting": "a",
        "timeWeighting": "fast",
        "levelReference": "soundPressure"
      }
    }
  },
  "required": ["sensorId", "soundLevel"],
  "additionalProperties": false
}
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="meta-types">
      <name>Reference System Meta-Types</name>
      <t>A reference system need not be published by an authority. Where the <tt>kind</tt> of a
reference-system keyword is <tt>type</tt>, <tt>reference</tt> is a type reference
<tt>{ "$ref": &lt;JSON Pointer&gt; }</tt> <xref target="JSTRUCT-CORE"/> to a shareable type definition, and
that type definition is the
definition of the system. Such a type is a meta-type. It is ordinarily
maintained in its own document and brought into <tt>definitions</tt> with <tt>$import</tt>
        <xref target="JSTRUCT-IMPORT"/>, so that one definition serves every schema that cites it.</t>
      <t>A meta-type declares the members of the system, and the annotation maps the
members of the annotated schema onto them. The two need not agree in member
names, member order, or member count.</t>
      <t>A meta-type is an ordinary type definition that a schema author writes, and it
is unrelated to the extension meta-schema of <xref target="extension-meta-schema"/>, which is
the schema of this specification.</t>
      <section anchor="reference-role">
        <name>The <tt>referenceRole</tt> Keyword</name>
        <t><tt>referenceRole</tt> states the function of a member within a meta-type. It <bcp14>MAY</bcp14> occur
on a property, collection item, map value, or choice member schema of a type
that a <tt>reference</tt> identifies, and it establishes nothing elsewhere.</t>
        <t>When present, <tt>referenceRole</tt> <bcp14>MUST</bcp14> be one of:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Function of the member</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>position</tt></td>
              <td align="left">Carries a temporal position, mapped by <tt>position</tt> (<xref target="temporal-reference-systems"/>).</td>
            </tr>
            <tr>
              <td align="left">
                <tt>linearElement</tt></td>
              <td align="left">Identifies a linear element, mapped by <tt>linearElement</tt> (<xref target="linear-reference-systems"/>).</td>
            </tr>
            <tr>
              <td align="left">
                <tt>measure</tt></td>
              <td align="left">Carries a distance along a linear element, mapped by <tt>measure</tt>.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>direction</tt></td>
              <td align="left">Qualifies direction of travel or orientation, mapped by <tt>direction</tt>.</td>
            </tr>
          </tbody>
        </table>
        <t>One meta-type <bcp14>MUST NOT</bcp14> declare two members with the same <tt>referenceRole</tt>. A
member without <tt>referenceRole</tt> is a component of the system that no annotation
maps, and an annotated schema <bcp14>MAY</bcp14> carry it, under any name, or omit it.</t>
        <t>A mapping is established by <tt>referenceRole</tt> and never by a member name. A
processor <bcp14>MUST NOT</bcp14> infer a role from the name of a member, and a meta-type that
declares no member for a role a keyword requires is unusable by that keyword.</t>
        <t>A coordinate reference system takes no roles, because its meta-type is a <tt>tuple</tt>
and the order of its elements establishes the axes (<xref target="coordinate-reference-systems"/>).
A vector reference frame takes no roles for the same reason
(<xref target="vector-reference-frames"/>).</t>
      </section>
    </section>
    <section anchor="temporal-reference-annotations">
      <name>Temporal Reference Annotations</name>
      <t>The keywords in this section concern temporal positions, the values that place
an observation or an operational event on a time line.
<tt>phenomenonTimeRelation</tt> states how a result relates to the position it
accompanies, <tt>supportPeriod</tt> gives the length of the period a result
characterizes where the record bounds it at one end, <tt>temporalReferenceSystem</tt>
states how a position value is to be read, and <tt>cadence</tt> states how successive
positions are expected to recur.</t>
      <section anchor="phenomenon-time-relation">
        <name>The <tt>phenomenonTimeRelation</tt> Keyword</name>
        <t>The <tt>phenomenonTimeRelation</tt> keyword refines how a result value relates to
<tt>phenomenonTime</tt>. When <tt>semanticRole: observationValue</tt> is also present, it
describes the observation result. It is not a replacement for <tt>phenomenonTime</tt>.</t>
        <t>When present, it <bcp14>MUST</bcp14> be one of:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>instant</tt></td>
              <td align="left">Result applies at the sibling temporal position having role <tt>phenomenonTime</tt>.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>untilNext</tt></td>
              <td align="left">Result applies from that position until the next actual compatible observation.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>interval</tt></td>
              <td align="left">Result characterizes a half-open phenomenon-time period the record encodes.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>accumulation</tt></td>
              <td align="left">Result is accumulated over that half-open phenomenon-time period.</td>
            </tr>
          </tbody>
        </table>
        <t><tt>instant</tt> and <tt>untilNext</tt> can be resolved only when a sibling
<tt>phenomenonTime</tt> annotation identifies a temporal position. <tt>interval</tt> and
<tt>accumulation</tt> can be resolved when sibling <tt>phenomenonTimeStart</tt> and
<tt>phenomenonTimeEnd</tt> annotations identify boundaries in a common reference regime
or through an authoritative conversion, and can be resolved when <tt>supportPeriod</tt>
states the length of the period and a sibling position anchors it
(<xref target="support-period"/>). Otherwise the support is declared but its temporal extent
is indeterminate. Effective-time and operational roles do not supply
phenomenon-time boundaries.</t>
        <t>These values state how a result relates to a phenomenon time and not how it was
produced; the summary function, where there is one, is carried by <tt>statistic</tt>
(<xref target="statistic"/>). They do not authorize summation or prove complete coverage. For
<tt>untilNext</tt>, the successor is the next actual observation with compatible
resolved feature of interest, observed property, declared procedure, value
type, unit, temporal binding, and support. Cadence does not prove a successor
exists; without one the support end is unknown. Omission is not <tt>instant</tt>.</t>
        <t>Example. <tt>air_temperature</tt> holds until the next compatible observation, so it
reads against the sibling <tt>phenomenonTime</tt>; <tt>rainfall</tt> is accumulated over the
period, so it reads against the sibling boundary pair:</t>
        <sourcecode type="json"><![CDATA[
{
  "name": "WeatherReport",
  "type": "object",
  "properties": {
    "observed_at": {
      "type": "datetime",
      "semanticRole": "phenomenonTime"
    },
    "window_opens": {
      "type": "datetime",
      "semanticRole": "phenomenonTimeStart"
    },
    "window_closes": {
      "type": "datetime",
      "semanticRole": "phenomenonTimeEnd"
    },
    "air_temperature": {
      "type": "double",
      "unit": "Cel",
      "semanticRole": "observationValue",
      "phenomenonTimeRelation": "untilNext"
    },
    "rainfall": {
      "type": "double",
      "unit": "mm",
      "semanticRole": "observationValue",
      "phenomenonTimeRelation": "accumulation"
    }
  },
  "required": [
    "observed_at",
    "window_opens",
    "window_closes",
    "air_temperature",
    "rainfall"
  ],
  "additionalProperties": false
}
]]></sourcecode>
      </section>
      <section anchor="support-period">
        <name>The <tt>supportPeriod</tt> Keyword</name>
        <t>The <tt>supportPeriod</tt> keyword states the length of the phenomenon-time period a
result characterizes, for a period the record bounds at one end rather than two.
A mean wind speed over the ten minutes ending at the observation time, a
half-hourly settlement quantity stamped with the instant its period opens, and a
pressure change over the preceding three hours are all of that shape: the length
is fixed by the publishing arrangement, and one position in the record fixes
where the period sits. Such a feed carries no second boundary and gains nothing
from a schema that invents a member for one.</t>
        <t>When present, <tt>supportPeriod</tt> <bcp14>MUST</bcp14> be an object with a <bcp14>REQUIRED</bcp14> <tt>length</tt> and a
<bcp14>REQUIRED</bcp14> <tt>anchor</tt>. No other properties are permitted.</t>
        <section anchor="support-period-length">
          <name>The <tt>length</tt> Property</name>
          <t><tt>length</tt> states the extent of the period and <bcp14>MUST</bcp14> express a positive interval in
the temporal reference system applicable to the anchoring position. For a Core
<tt>datetime</tt>, <tt>date</tt>, or <tt>time</tt>, it <bcp14>MUST</bcp14> be a positive Core <tt>duration</tt>. Another
temporal reference system <bcp14>MAY</bcp14> use a numeric, string, or structured interval
representation defined by that system, on the terms <xref target="cadence"/> states for
<tt>period</tt>.</t>
        </section>
        <section anchor="support-period-anchor">
          <name>The <tt>anchor</tt> Property</name>
          <t><tt>anchor</tt> states which boundary of the period the anchoring position occupies and
<bcp14>MUST</bcp14> be one of:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Value</th>
                <th align="left">Meaning</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>start</tt></td>
                <td align="left">The anchoring position opens the period, which runs forward from it.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>end</tt></td>
                <td align="left">The anchoring position closes the period, which runs back to it.</td>
              </tr>
            </tbody>
          </table>
          <t>The anchoring position is the sibling annotated <tt>phenomenonTimeStart</tt> when
<tt>anchor</tt> is <tt>start</tt>, and the sibling annotated <tt>phenomenonTimeEnd</tt> when <tt>anchor</tt>
is <tt>end</tt>. Where the record carries no member in that role, the anchoring
position is the sibling annotated <tt>phenomenonTime</tt>. Where it carries neither,
the period has a length and no location, and the extent remains indeterminate.</t>
          <t>The period is half-open on the terms <xref target="phenomenon-time-relation"/> states. For an
anchoring position <tt>t</tt>, an <tt>anchor</tt> of <tt>end</tt> gives <tt>[t - length, t)</tt> and an
<tt>anchor</tt> of <tt>start</tt> gives <tt>[t, t + length)</tt>.</t>
          <t><tt>supportPeriod</tt> <bcp14>MUST NOT</bcp14> be present unless <tt>phenomenonTimeRelation</tt> is
<tt>interval</tt> or <tt>accumulation</tt>, and <bcp14>MUST NOT</bcp14> be present where sibling
<tt>phenomenonTimeStart</tt> and <tt>phenomenonTimeEnd</tt> annotations both identify
boundaries, because the record then encodes the period and a stated length would
restate or contradict it.</t>
          <t>The boundary roles do not subsume this keyword. <tt>phenomenonTimeStart</tt> and
<tt>phenomenonTimeEnd</tt> annotate members, so they state a period only where the
record carries a value at each end of it, and the resolution rules of this
document read one sibling in each role. Support is a property of a result
rather than of a record, and one record may carry results of differing extent:
a buoy report may close a twenty-minute wave summary and a three-hour pressure
change at a single observation time, leaving one place to put a boundary and
two periods to state. <tt>supportPeriod</tt> is carried by the result it describes,
so each result states its own extent, and a length fixed by the publishing
arrangement is stated once in the schema rather than transmitted in every
record.</t>
          <t>A support period is a fact about one value and a cadence is a fact about a
producer. The two are often numerically equal and are never the same statement.
A station reporting hourly a mean taken over the last ten minutes of each hour
has a cadence of one hour and a support period of ten minutes, and a schema
declaring only the cadence would leave a reader free to treat fifty minutes of
every hour as observed. <tt>cadence</tt> does not bound a phenomenon time
(<xref target="cadence"/>), and <tt>supportPeriod</tt> asserts nothing about whether a successor
record exists or when it arrives.</t>
          <t>Where the length is not fixed by the schema, because it varies with the station,
the instrument, or the message, there is no length to state and a schema <bcp14>MUST
NOT</bcp14> state a nominal one. The extent is then indeterminate, and a schema <bcp14>SHOULD</bcp14>
record in <tt>description</tt> what governs the length, so that a reader learns where
to obtain it rather than assuming a value.</t>
          <t>Example. A surface report carries a mean wind speed over the ten minutes ending
at the observation time and a rainfall total accumulated over the hour that
opens at the stated instant. The record has one boundary member and two periods:</t>
          <sourcecode type="json"><![CDATA[
{
  "name": "SurfaceReport",
  "type": "object",
  "properties": {
    "observed_at": {
      "type": "datetime",
      "examples": ["2026-07-27T12:50:00Z"],
      "semanticRole": "phenomenonTime"
    },
    "accumulation_opens": {
      "type": "datetime",
      "examples": ["2026-07-27T12:00:00Z"],
      "semanticRole": "phenomenonTimeStart"
    },
    "wind_speed": {
      "type": "double",
      "unit": "m/s",
      "semanticRole": "observationValue",
      "derivation": "statistic",
      "statistic": "mean",
      "phenomenonTimeRelation": "interval",
      "supportPeriod": { "length": "PT10M", "anchor": "end" }
    },
    "rainfall": {
      "type": "double",
      "unit": "mm",
      "semanticRole": "observationValue",
      "derivation": "measured",
      "phenomenonTimeRelation": "accumulation",
      "supportPeriod": { "length": "PT1H", "anchor": "start" }
    }
  },
  "required": [
    "observed_at",
    "accumulation_opens",
    "wind_speed",
    "rainfall"
  ],
  "additionalProperties": false
}
]]></sourcecode>
          <t>The record carries no <tt>phenomenonTimeEnd</tt>, so <tt>wind_speed</tt> anchors on
<tt>observed_at</tt> and covers <tt>[12:40Z, 12:50Z)</tt>. <tt>rainfall</tt> anchors on
<tt>accumulation_opens</tt> and covers <tt>[12:00Z, 13:00Z)</tt>. The two periods overlap and
neither is the other, and a reader that took the observation instant for both
would attribute the hour's rain to ten minutes of it.</t>
        </section>
      </section>
      <section anchor="temporal-reference-systems">
        <name>The <tt>temporalReferenceSystem</tt> Keyword</name>
        <t>The <tt>temporalReferenceSystem</tt> keyword identifies the temporal reference
definition needed to interpret an encoded temporal position or duration.</t>
        <t>It attaches to a temporally typed property or to a type definition that serves
as one. Where that type is an object or tuple, <tt>position</tt> names the member that
carries the position value.</t>
        <t>When present, <tt>temporalReferenceSystem</tt> <bcp14>MUST</bcp14> be an object with a <bcp14>REQUIRED</bcp14>
          <tt>reference</tt> string, a <bcp14>REQUIRED</bcp14> <tt>kind</tt> string, an <bcp14>OPTIONAL</bcp14> <tt>position</tt> string, and
an <bcp14>OPTIONAL</bcp14> <tt>sortOrder</tt> string. No other properties are permitted.</t>
        <t>Core temporal types need no annotation when their Core semantics are fully
intended. A non-Core or ambiguous encoding is indeterminate without one.</t>
        <section anchor="temporal-reference-systems-reference">
          <name>The <tt>reference</tt> Property</name>
          <t><tt>reference</tt> <bcp14>MUST</bcp14> identify one temporal reference definition. Where <tt>kind</tt> is
<tt>type</tt> it <bcp14>MUST</bcp14> be a type reference <tt>{ "$ref": &lt;JSON Pointer&gt; }</tt> <xref target="JSTRUCT-CORE"/>
to a shareable type
definition, and otherwise it <bcp14>MUST</bcp14> be an absolute URI <xref target="RFC3986"/>. <tt>kind</tt> states
which definition model the reference identifies. This document does not define a
resolution protocol, URI layout, storage model, or definition serialization.</t>
          <t>Where the identified definition has a domain of validity, an annotated position
<bcp14>MUST</bcp14> lie in that domain.</t>
        </section>
        <section anchor="temporal-reference-systems-kind">
          <name>The <tt>kind</tt> Property</name>
          <t><tt>kind</tt> classifies which definition model the URI identifies. It is an open
enumeration. The following values are defined here:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Kind</th>
                <th align="left">Referenced definition</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>ogc-trs</tt></td>
                <td align="left">A concept in the OGC temporal reference system register, whose entries follow ISO 19108 <xref target="ISO19108"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>ogc-temporal-crs</tt></td>
                <td align="left">A GML <tt>TemporalCRS</tt> served by the OGC definitions server, establishing a temporal datum, origin, and coordinate system <xref target="ISO19111"/> <xref target="OGC-TOPIC2"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>type</tt></td>
                <td align="left">A meta-type declaring a member whose <tt>referenceRole</tt> is <tt>position</tt>, alongside the components of the regime (<xref target="meta-types"/>).</td>
              </tr>
            </tbody>
          </table>
          <t>Other values <bcp14>MAY</bcp14> name further definition models. <xref target="reference-uris"/> lists
resolvable URIs for the registered kinds.</t>
          <t>Whichever model a <tt>kind</tt> names, the identified definition <bcp14>MUST</bcp14> establish the
components applicable to the encoding it governs. Where it defines a compound
regime that locates a position by scoped components <xref target="OGC-TOPIC25"/>, it <bcp14>MUST</bcp14>
state component order, the scope and reset behavior of each component, and the
rules for comparing positions from different scopes.</t>
          <t>A <tt>type</tt> reference carries a regime that no register holds. The referenced
meta-type <bcp14>MUST</bcp14> declare a member whose <tt>referenceRole</tt> is <tt>position</tt>, and the
type and unit of that member establish the encoding. The <tt>position</tt> property
maps the annotated member onto it. The remaining members of the meta-type are
components of the regime that the annotation does not map. What a type
definition cannot express, such as reset behavior and comparison across scopes,
is stated in its <tt>description</tt>.</t>
        </section>
        <section anchor="temporal-reference-systems-position">
          <name>The <tt>position</tt> Property</name>
          <t><tt>position</tt> is <bcp14>REQUIRED</bcp14> when the annotation is attached to an object or tuple
and is prohibited otherwise. It <bcp14>MUST</bcp14> name a direct member of that object or
tuple, and that member <bcp14>MUST</bcp14> be <bcp14>REQUIRED</bcp14>.</t>
          <t>The named member carries the temporal position. Its values <bcp14>MUST</bcp14> sort in the
direction given by <tt>sortOrder</tt> under the ordering defined for its own type,
which for a string is lexical order. A compound position achieves this by
rendering its components most significant first at fixed width. A processor can
therefore order and compare positions without implementing the referenced
definition.</t>
          <t>The remaining members <bcp14>MAY</bcp14> hold the individual components, identifiers, or other
detail. A processor is not required to interpret them.</t>
        </section>
        <section anchor="temporal-reference-systems-sort-order">
          <name>The <tt>sortOrder</tt> Property</name>
          <t><tt>sortOrder</tt> states how the ordering of the encoded value runs relative to
temporal order. When present, it <bcp14>MUST</bcp14> be one of:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Value</th>
                <th align="left">Ordering</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>forward</tt></td>
                <td align="left">An increasing value is a later position.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>backward</tt></td>
                <td align="left">An increasing value is an earlier position.</td>
              </tr>
            </tbody>
          </table>
          <t>When <tt>sortOrder</tt> is absent, the value is <tt>forward</tt>.</t>
          <t>Most definitions count from an epoch toward the present and are therefore
<tt>forward</tt>. An annotation citing a definition whose values count away from a
datum into the past, such as years before present or a geologic time scale,
<bcp14>MUST</bcp14> declare <tt>sortOrder</tt> as <tt>backward</tt>.</t>
          <t><tt>sortOrder</tt> applies to the annotated value, or to the member named by <tt>position</tt>
where one is named. It states the direction of the ordering and nothing else,
and a definition whose values do not order under their own type at all is not
made orderable by declaring either value.</t>
        </section>
        <section anchor="temporal-reference-systems-type-compatibility">
          <name>Type Compatibility</name>
          <t>The referenced definition establishes an encoding, and the annotated schema
<bcp14>MUST</bcp14> be able to carry it:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Encoding established by the definition</th>
                <th align="left">Compatible schema</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">A date and time in a calendar, following <xref target="RFC3339"/></td>
                <td align="left">Core <tt>datetime</tt>, <tt>date</tt>, <tt>time</tt>, or <tt>string</tt></td>
              </tr>
              <tr>
                <td align="left">A count of units elapsed from an epoch</td>
                <td align="left">a Core integer or number type</td>
              </tr>
              <tr>
                <td align="left">Any other encoding</td>
                <td align="left">
                  <tt>string</tt>, or an object or tuple carrying <tt>position</tt></td>
              </tr>
            </tbody>
          </table>
          <t>Where the definition establishes a unit for its axis, a numeric position <bcp14>MUST</bcp14>
carry a <tt>unit</tt> or <tt>ucumUnit</tt> annotation compatible with that unit. Epoch
definitions differ in unit, so a count of seconds and a count of milliseconds
from the same origin are distinct definitions rather than one definition with
two encodings.</t>
          <t>How much of this a reader can check depends on <tt>kind</tt>. An <tt>ogc-temporal-crs</tt>
definition determines the encoding, since its axis states either a unit of
measure, which takes a numeric position, or a date and time, which takes a
string. A <tt>type</tt> definition declares the type of each component and likewise
determines it. An <tt>ogc-trs</tt> concept names a time scale and establishes no axis,
unit, or encoding, so the compatibility check is indeterminate, as it is for a
<tt>kind</tt> outside this enumeration.</t>
          <t>The annotation does not change the JSON base type, turn a data value into an
identifiable temporal object, or supply a conversion. A processor <bcp14>MUST</bcp14> compare,
order, or combine positions only within the same binding or through an
authoritative transformation. A position whose definition establishes only
order <bcp14>MUST NOT</bcp14> be treated as a metric coordinate without additional authority.
Property names alone establish none of these semantics.</t>
          <t>Example. The clock is defined once as a meta-type and cited by <tt>reference</tt>, so
a record of another shape can name the same definition. The record names the
mapped member <tt>ordinal</tt> rather than <tt>clockPosition</tt>, and <tt>position</tt> establishes
the mapping; the remaining components are carried under the record's own names
and are not mapped. <tt>ordinal</tt> renders the components at fixed width, so a
processor can order two positions without implementing the definition.</t>
          <sourcecode type="json"><![CDATA[
{
  "$schema":
  "https://json-structure.org/meta/semantic-annotations/v0/#",
  "$id": "https://schemas.example.org/racing-speed-observation",
  "name": "RacingSpeedObservation",
  "type": "object",
  "identity": ["observation_id"],
  "observedProperty": {
    "reference": "https://example.org/props/vehicle-speed/v1",
    "kind": "example-catalog"
  },
  "properties": {
    "observation_id": { "type": "uuid" },
    "entry_id": {
      "type": "string",
      "semanticRole": "featureOfInterest"
    },
    "race_clock": {
      "type": "object",
      "semanticRole": "phenomenonTime",
      "temporalReferenceSystem": {
        "reference": { "$ref": "#/definitions/RaceClockPosition" },
        "kind": "type",
        "position": "ordinal"
      },
      "properties": {
        "ordinal": {
          "type": "string",
          "description": "Fixed-width position, ordered lexically",
          "examples": ["2026-07-26/R/S03/L014/01250.5"]
        },
        "session": { "type": "string" },
        "stint": { "type": "uint32" },
        "lap": { "type": "uint32" },
        "distance_driven": { "type": "double", "unit": "m" }
      },
      "required": [
        "ordinal", "session", "stint", "lap", "distance_driven"
      ],
      "additionalProperties": false
    },
    "speed": {
      "type": "double",
      "unit": "km/h",
      "semanticRole": "observationValue",
      "phenomenonTimeRelation": "instant",
      "derivation": "measured"
    }
  },
  "required": ["observation_id", "entry_id", "race_clock", "speed"],
  "additionalProperties": false,
  "definitions": {
    "RaceClockPosition": {
      "name": "RaceClockPosition",
      "type": "object",
      "description": "Motor-racing clock.",
      "properties": {
        "clockPosition": {
          "type": "string",
          "description": "Fixed-width components, sorting lexically",
          "referenceRole": "position"
        },
        "session": { "type": "string" },
        "stint": { "type": "uint32" },
        "lap": { "type": "uint32" },
        "distanceDriven": { "type": "double", "unit": "m" }
      },
      "required": ["clockPosition"]
    }
  }
}
]]></sourcecode>
          <t>The clock locates a position by session, stint, lap, and distance driven within
the lap, with the components rendered most significant first in
<tt>clockPosition</tt>. Stint numbering is entry-specific.</t>
          <t>The compound position is comparable only under the rules of the identified
regime: equal stint, lap, and distance values do not imply equal positions
across sessions or entries. Mapping this clock to UTC or elapsed session time
requires an authoritative synchronization relation or transformation.</t>
        </section>
      </section>
      <section anchor="cadence">
        <name>The <tt>cadence</tt> Keyword</name>
        <t>The <tt>cadence</tt> keyword describes expected producer behavior across successive
values of an annotated temporal position. A temporal role such as
<tt>phenomenonTime</tt>, <tt>resultTime</tt>, <tt>ingestionTime</tt>, or <tt>forecastIssueTime</tt>, when
also present, gives that sequence an observation or operational meaning.</t>
        <t>When present, <tt>cadence</tt> <bcp14>MUST</bcp14> be an object with a <bcp14>REQUIRED</bcp14> <tt>kind</tt> string and an
<bcp14>OPTIONAL</bcp14> <tt>period</tt>. No other properties are permitted.</t>
        <section anchor="cadence-kind">
          <name>The <tt>kind</tt> Property</name>
          <t><tt>kind</tt> states the expected recurrence pattern and <bcp14>MUST</bcp14> be one of:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Kind</th>
                <th align="left">Meaning</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>fixed</tt></td>
                <td align="left">Observations are expected at a regular period.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>irregular</tt></td>
                <td align="left">Observations occur without a regular period.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>onChange</tt></td>
                <td align="left">Observations occur when represented state changes.</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="cadence-period">
          <name>The <tt>period</tt> Property</name>
          <t><tt>period</tt> is <bcp14>REQUIRED</bcp14> when <tt>kind</tt> is <tt>fixed</tt> and is prohibited otherwise. It
<bcp14>MUST</bcp14> express a positive interval in the temporal reference system applicable to
the annotated temporal position. For a Core <tt>datetime</tt>, <tt>date</tt>, or <tt>time</tt>, it
<bcp14>MUST</bcp14> be a positive Core <tt>duration</tt>. Another temporal reference system <bcp14>MAY</bcp14> use a
numeric, string, or structured interval representation defined by that system.</t>
          <t>That latitude is what makes a rapid cadence expressible, and a schema for one
<bcp14>SHOULD</bcp14> use it rather than force the period into civil time. A duration is
written in seconds and their decimal fractions, and many rates that are exact on
their own clock have no exact expression there: audio sampled at 48 kHz advances
one frame every 1/48000 of a second, so any duration written for it is rounded,
and a consumer that places positions by accumulating it drifts further from the
truth with every frame. Writing the period more exactly does not help, because
civil time cannot express the instants either. A stream whose positions are
counted is not a stream whose positions are seconds.</t>
          <t>Where the values are counted on a clock of their own, the schema declares that
clock as a meta-type, names it in <tt>temporalReferenceSystem</tt>
(<xref target="temporal-reference-systems"/>), and gives <tt>period</tt> as a count of that clock's
own units, which for a value recorded once per tick is the integer 1. The
cadence is then exact, because it is stated in the system the values are
expressed in.</t>
          <t>The conversion to seconds is data rather than annotation. A rate varies from one
delivery to the next while the schema stays the same, so a member of the record
carries it, annotated with a <tt>unit</tt> <xref target="JSTRUCT-UNITS"/>, and a consumer <bcp14>MUST NOT</bcp14>
assume a conventional value for it. Where a schema serves one rate and no other,
<tt>const</tt> or <tt>enum</tt> <xref target="JSTRUCT-CORE"/> pins the value on that member.</t>
          <t>No keyword binds a clock to the member carrying its rate. A processor <bcp14>MUST NOT</bcp14>
take a member to be the rate of a clock because of the member's name or because
its unit is one of frequency, and <bcp14>MUST NOT</bcp14> convert a position counted on such a
clock to elapsed civil time unless a relation to civil time is established
outside these annotations. The meta-type declaring the clock states that
relation, or its absence, in its <tt>description</tt> (<xref target="temporal-reference-systems"/>).</t>
          <t>Cadence is not delivery time, a service-level objective, a completeness
assertion, or a phenomenon-time boundary. It does not assert that every
position has a record, that records arrive in order, or that an <tt>untilNext</tt>
successor exists.</t>
          <t>Cadence is an expectation and not a constraint, and the distinction is
normative. A schema that declares a cadence constrains no instance document. An
instance whose values do not follow the declared cadence is not invalid for that
reason, because a stream that misses a beat is late rather than malformed, and a
processor <bcp14>MUST NOT</bcp14> reject an instance, a value, or a schema on the ground that
observed timing departs from a declared cadence. A runtime service level belongs
to an agreement between a producer and a consumer, not to a schema.</t>
          <t>A consumer may still act on a cadence. A declared period sizes a window, sets a
threshold beyond which a value is treated as stale, and makes an absent value
detectable as a gap rather than absorbed silently. Each of those is a decision
the consumer makes about its own processing. None of them changes the meaning of
a value, and none licenses a value to be supplied where none was recorded
(<xref target="security-considerations"/>).</t>
          <t>Example:</t>
          <sourcecode type="json"><![CDATA[
{
  "name": "WindSpeedObservation",
  "type": "object",
  "properties": {
    "measured_at": {
      "type": "datetime",
      "description": "Instant to which the wind speed applies",
      "examples": ["2026-07-27T12:10:00Z"],
      "semanticRole": "phenomenonTime",
      "cadence": {
        "kind": "fixed",
        "period": "PT10M"
      }
    },
    "wind_speed": {
      "type": "double",
      "unit": "m/s",
      "semanticRole": "observationValue"
    }
  },
  "required": ["measured_at", "wind_speed"],
  "additionalProperties": false
}
]]></sourcecode>
          <t>A cadence too rapid for civil time, stated on a clock of its own:</t>
          <sourcecode type="json"><![CDATA[
{
  "name": "AudioSampleFrame",
  "type": "object",
  "properties": {
    "frame_index": {
      "type": "int64",
      "description": "Sample count from the start of delivery",
      "semanticRole": "phenomenonTime",
      "temporalReferenceSystem": {
        "reference": { "$ref": "#/definitions/AudioSampleClock" },
        "kind": "type",
        "sortOrder": "forward"
      },
      "cadence": {
        "kind": "fixed",
        "period": 1
      }
    },
    "sample_rate": {
      "type": "int32",
      "unit": "Hz",
      "description": "Sample frames per second for this delivery"
    },
    "amplitude": {
      "type": "double",
      "semanticRole": "observationValue"
    }
  },
  "required": ["frame_index", "sample_rate", "amplitude"],
  "additionalProperties": false,
  "definitions": {
    "AudioSampleClock": {
      "name": "AudioSampleClock",
      "type": "object",
      "description": "Sample-frame count clock for one delivery.",
      "properties": {
        "frame_count": {
          "type": "int64",
          "description": "Sample count from the start of delivery.",
          "referenceRole": "position"
        }
      },
      "required": ["frame_count"],
      "additionalProperties": false
    }
  }
}
]]></sourcecode>
          <t>The clock advances one unit per frame and does not reset within a delivery, so
positions sort numerically and are comparable within one delivery and not
across deliveries. Elapsed seconds are the count divided by the frame rate of
the delivery, which the meta-type does not supply.</t>
          <t>The cadence here is one sample-clock unit and is exact. Written as a duration it
could only have been approximated: <tt>PT0.0000208333S</tt> is short of a
forty-eight-kilohertz frame by about thirty-three picoseconds, which is nothing
in one frame and a full sample every thirteen seconds of programme, growing
without bound for as long as the recording runs.</t>
        </section>
      </section>
    </section>
    <section anchor="spatial-reference-annotations">
      <name>Spatial Reference Annotations</name>
      <t>Each keyword in this section has two parts. <tt>reference</tt> and <tt>kind</tt> identify an
external definition of a reference system. The remaining properties bind the
components of that system to named members of the object or tuple carrying the
annotation. A position or a vector is held across several members, so these
keywords attach to a complex type and are not meaningful on a scalar.</t>
      <section anchor="coordinate-reference-systems">
        <name>The <tt>coordinateReferenceSystem</tt> Keyword</name>
        <t>The <tt>coordinateReferenceSystem</tt> keyword identifies the coordinate reference
system <xref target="ISO19111"/> under which coordinate values held in properties of an
object or tuple are to be interpreted.</t>
        <t>When present, <tt>coordinateReferenceSystem</tt> <bcp14>MUST</bcp14> be an object with a <bcp14>REQUIRED</bcp14>
          <tt>reference</tt> string, a <bcp14>REQUIRED</bcp14> <tt>kind</tt> string, and a <bcp14>REQUIRED</bcp14> <tt>coordinates</tt>
array. No other properties are permitted.</t>
        <section anchor="coordinate-reference-systems-reference">
          <name>The <tt>reference</tt> Property</name>
          <t><tt>reference</tt> <bcp14>MUST</bcp14> identify one coordinate reference system whose definition
establishes an ordered set of axes, each with an axis direction and unit of
measure. Where <tt>kind</tt> is <tt>type</tt> it <bcp14>MUST</bcp14> be a type reference
<tt>{ "$ref": &lt;JSON Pointer&gt; }</tt> <xref target="JSTRUCT-CORE"/> to a shareable type definition, and
otherwise it <bcp14>MUST</bcp14> be an absolute
URI <xref target="RFC3986"/>. <tt>kind</tt> states which definition model the reference identifies.</t>
          <t>A processor is not required to dereference the URI, and a returned
representation need not expose the axes. This document does not define
a resolution protocol, URI layout, storage model, or definition serialization.</t>
        </section>
        <section anchor="coordinate-reference-systems-kind">
          <name>The <tt>kind</tt> Property</name>
          <t><tt>kind</tt> classifies which definition model the URI identifies. It is an open
enumeration. The following values are defined here:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Kind</th>
                <th align="left">Referenced definition</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>ogc-crs</tt></td>
                <td align="left">A GML CRS served by the OGC definitions server, named according to the OGC name type specification <xref target="OGC-NAMES"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>epsg</tt></td>
                <td align="left">A record in the EPSG Geodetic Parameter Dataset <xref target="EPSG"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>type</tt></td>
                <td align="left">A meta-type that is a <tt>tuple</tt> whose elements in order are the axes of an engineering or local system (<xref target="meta-types"/>).</td>
              </tr>
            </tbody>
          </table>
          <t>Other values <bcp14>MAY</bcp14> name further definition models.</t>
          <t>A <tt>type</tt> reference carries an engineering or local system that no register
holds. The referenced meta-type <bcp14>MUST</bcp14> be a <tt>tuple</tt>, and the order given by its
<tt>tuple</tt> keyword is the axis order. <tt>coordinates</tt> maps the annotated properties
onto those elements by position, so the number of names in <tt>coordinates</tt> <bcp14>MUST</bcp14>
equal the number of elements and each element establishes the unit of its axis.
Axis direction, datum, and origin are stated in the <tt>description</tt> of the
meta-type or of its elements.</t>
          <t>Schema authors <bcp14>SHOULD</bcp14> use a registered definition where one exists.
<xref target="reference-uris"/> lists resolvable URIs for the registered kinds.</t>
        </section>
        <section anchor="coordinate-reference-systems-coordinates">
          <name>The <tt>coordinates</tt> Property</name>
          <t><tt>coordinates</tt> <bcp14>MUST</bcp14> be a non-empty ordered array of distinct property names.
Every name <bcp14>MUST</bcp14> resolve to a direct property of the annotated object or tuple.
The property at array index zero supplies axis 1 of the referenced coordinate
system, the property at index one supplies axis 2, and so on. The number of
names <bcp14>MUST</bcp14> equal the dimension of that coordinate system.</t>
          <t>This ordering is an assertion by the schema author. It is not inferred from
property names or from a representation returned by dereferencing <tt>reference</tt>.</t>
          <t>A name in <tt>coordinates</tt> <bcp14>MAY</bcp14> resolve to a property whose type is <tt>array</tt> or
<tt>tuple</tt>. Where it does resolve to an <tt>array</tt>, that name <bcp14>MUST</bcp14> be the only entry
in <tt>coordinates</tt>, and the elements of the array instances <bcp14>MUST</bcp14> supply the axes
in order rather than the named property supplying one axis.</t>
          <t>For a <tt>tuple</tt>, the number of elements <bcp14>MUST</bcp14> equal the dimension of the
referenced system. A schema using an <tt>array</tt> <bcp14>SHOULD</bcp14> constrain its length. The
axes of a coordinate reference system may carry differing units, which a
<tt>tuple</tt> can state per element and an <tt>array</tt> cannot.</t>
          <t>Coordinate properties <bcp14>MUST</bcp14> have numeric types. When a coordinate property has a
<tt>unit</tt> or <tt>ucumUnit</tt> annotation, that unit <bcp14>MUST</bcp14> be compatible with the
corresponding axis. A processor <bcp14>MAY</bcp14> verify the asserted ordering, units, and
dimension using a trusted authority-specific CRS database. Without such a
definition source, it <bcp14>MUST</bcp14> preserve the declaration but treat those checks and
coordinate transformations as indeterminate.</t>
          <t>Properties not named by <tt>coordinates</tt> are not part of the coordinate. The
annotation therefore applies safely to an existing object that also contains
identity, temporal, status, or other values.</t>
          <t>An object or tuple <bcp14>MUST NOT</bcp14> carry more than one <tt>coordinateReferenceSystem</tt>
annotation. An object containing multiple coordinates <bcp14>SHOULD</bcp14> model each
coordinate as a nested object. This document does not define coordinate epochs
for dynamic coordinate reference systems.</t>
          <t>The coordinate order is significant. OGC CRS84 uses longitude, latitude:</t>
          <sourcecode type="json"><![CDATA[
{
  "name": "Crs84Position",
  "type": "object",
  "coordinateReferenceSystem": {
    "reference": "http://www.opengis.net/def/crs/OGC/1.3/CRS84",
    "kind": "ogc-crs",
    "coordinates": ["lon", "lat"]
  },
  "properties": {
    "lat": {
      "type": "double",
      "unit": "deg"
    },
    "lon": {
      "type": "double",
      "unit": "deg"
    }
  },
  "required": ["lat", "lon"],
  "additionalProperties": false
}
]]></sourcecode>
          <t>EPSG:4326 <xref target="EPSG"/> uses its authoritative latitude, longitude axis order:</t>
          <sourcecode type="json"><![CDATA[
{
  "name": "Epsg4326Position",
  "type": "object",
  "coordinateReferenceSystem": {
    "reference": "http://www.opengis.net/def/crs/EPSG/0/4326",
    "kind": "ogc-crs",
    "coordinates": ["lat", "lon"]
  },
  "properties": {
    "lat": {
      "type": "double",
      "unit": "deg"
    },
    "lon": {
      "type": "double",
      "unit": "deg"
    }
  },
  "required": ["lat", "lon"],
  "additionalProperties": false
}
]]></sourcecode>
        </section>
        <section anchor="coordinate-reference-systems-vertical-and-compound-systems">
          <name>Vertical and Compound Systems</name>
          <t>A vertical coordinate reference system has one axis, and <tt>coordinates</tt> then
names one property. This is the binding that makes a height or a depth
interpretable, because the number and its unit do not state what the value is
measured from.</t>
          <t>The axis direction comes from the referenced definition and not from the
annotation, so whether the axis is positive up or positive down is a fact about
the identified system. Where <tt>kind</tt> is <tt>type</tt>, the <tt>description</tt> of the
meta-type or of its elements states it.</t>
          <t>The following excerpt binds a gauge reading to NAVD88 height:</t>
          <sourcecode type="json"><![CDATA[
{
  "name": "GaugeHeightObservation",
  "type": "object",
  "coordinateReferenceSystem": {
    "reference": "http://www.opengis.net/def/crs/EPSG/0/5703",
    "kind": "ogc-crs",
    "coordinates": ["water_level"]
  },
  "properties": {
    "station": {
      "type": "string",
      "description": "Observed gauging station",
      "examples": ["USGS-12149000"],
      "semanticRole": "featureOfInterest"
    },
    "measured_at": {
      "type": "datetime",
      "examples": ["2026-07-27T12:00:00Z"],
      "semanticRole": "phenomenonTime"
    },
    "water_level": {
      "type": "double",
      "unit": "m",
      "description": "Water surface elevation",
      "examples": [2.47],
      "semanticRole": "observationValue"
    }
  },
  "required": ["station", "measured_at", "water_level"],
  "additionalProperties": false
}
]]></sourcecode>
          <t>Where a horizontal position and a height belong to one compound system, that
system has one definition and one set of axes, so a single annotation names all
of them in order. The annotation of such an object reads:</t>
          <sourcecode type="json"><![CDATA[
{
  "coordinateReferenceSystem": {
    "reference": "http://www.opengis.net/def/crs/EPSG/0/6349",
    "kind": "ogc-crs",
    "coordinates": ["lat", "lon", "height"]
  }
}
]]></sourcecode>
          <t>Where the height belongs to a different system from the horizontal position, or
where it is a result rather than part of a position, the two are separate
bindings. Since an object carries at most one <tt>coordinateReferenceSystem</tt>, the
schema models one of them as a nested object:</t>
          <sourcecode type="json"><![CDATA[
{
  "name": "StationWaterLevel",
  "type": "object",
  "coordinateReferenceSystem": {
    "reference": "http://www.opengis.net/def/crs/EPSG/0/5703",
    "kind": "ogc-crs",
    "coordinates": ["water_level"]
  },
  "properties": {
    "station_position": {
      "type": "object",
      "coordinateReferenceSystem": {
        "reference": "http://www.opengis.net/def/crs/OGC/1.3/CRS84",
        "kind": "ogc-crs",
        "coordinates": ["lon", "lat"]
      },
      "properties": {
        "lat": { "type": "double", "unit": "deg" },
        "lon": { "type": "double", "unit": "deg" }
      },
      "required": ["lat", "lon"],
      "additionalProperties": false
    },
    "water_level": {
      "type": "double",
      "unit": "m",
      "examples": [2.47],
      "semanticRole": "observationValue"
    }
  },
  "required": ["station_position", "water_level"],
  "additionalProperties": false
}
]]></sourcecode>
          <t>This specification does not define a CRS, datum, coordinate operation, or
transformation. Those definitions and semantics come from ISO 19111 and the
referenced authority.</t>
        </section>
      </section>
      <section anchor="vector-reference-frames">
        <name>The <tt>vectorReferenceFrames</tt> Keyword</name>
        <t>The <tt>vectorReferenceFrames</tt> keyword identifies the reference frames on whose
axes the components of vector quantities held in properties of an object or
tuple are resolved.</t>
        <t>A vector quantity has a magnitude and a direction, and its components are its
projections onto the axes of a frame, meaningless apart from it. A frame is an
ordered set of axis directions and has no origin, because moving the origin does
not change a vector, whereas a coordinate reference system has one, fixed by its
datum. A record may carry both kinds of quantity: <tt>coordinateReferenceSystem</tt>
binds the members that give a position (<xref target="coordinate-reference-systems"/>), and
<tt>vectorReferenceFrames</tt> binds the members that give the components of a vector.</t>
        <t>A frame contributes directions only, and so does not establish the units of the
members it binds. The axes of a coordinate reference system may carry differing
units, as in a geographic system with two angles and a height, but the
components of a vector all carry the unit of the quantity. The units of the
members named by one frame <bcp14>MUST</bcp14> be mutually convertible and <bcp14>SHOULD</bcp14> be identical.</t>
        <t>When present, <tt>vectorReferenceFrames</tt> <bcp14>MUST</bcp14> be a non-empty array. Each element
<bcp14>MUST</bcp14> be an object with <bcp14>REQUIRED</bcp14> <tt>reference</tt>, <tt>kind</tt>, and <tt>components</tt>, an
<bcp14>OPTIONAL</bcp14> <tt>variance</tt>, and no other members. The keyword is an array because a
single record may carry more than one vector quantity, and each quantity is
resolved in its own frame.</t>
        <section anchor="vector-reference-frames-reference-and-kind">
          <name>The <tt>reference</tt> and <tt>kind</tt> Properties</name>
          <t><tt>reference</tt> and <tt>kind</tt> have the same value space and the same meaning as in
<tt>coordinateReferenceSystem</tt> (<xref target="coordinate-reference-systems"/>), under one added
condition: the axes of the referenced system <bcp14>MUST</bcp14> be directions rather than
angles, since a component is a projection onto a direction.</t>
          <t>A registered coordinate reference system establishes axis directions, so it may
serve as a frame wherever that condition holds. Registries exist to identify
positions, so most frames in which vectors are reported are not registered
anywhere. Such a frame is written as a <tt>tuple</tt> meta-type whose members, in the
order given by <tt>tuple</tt>, are the axes, and whose member <tt>description</tt> values
state the direction each axis points in. The meta-type establishes the axes and
their order, not the units of the annotated members.</t>
        </section>
        <section anchor="vector-reference-frames-components">
          <name>The <tt>components</tt> Property</name>
          <t><tt>components</tt> behaves as <tt>coordinates</tt> does. It <bcp14>MUST</bcp14> be a non-empty array of
names, and it takes one of two forms. In the first, every name is that of a
direct property of numeric type, and the names are mapped by position onto the
axes of the frame. In the second, the array holds exactly one name, that of a
direct property whose type is <tt>array</tt> or <tt>tuple</tt> and whose elements are of
numeric type, and the elements of that property <bcp14>MUST</bcp14> supply the axes in order
rather than the named property supplying one axis. Because the components of a
vector all carry one unit, an <tt>array</tt> serves here where it would not serve for a
coordinate.</t>
          <t>Every name in <tt>components</tt> <bcp14>MUST</bcp14> resolve to a direct property of the annotated
object or tuple. The names within one <tt>components</tt> array <bcp14>MUST</bcp14> be distinct, since
one value cannot be the component along two axes of one frame. The number of
axes supplied, whether by the names of the first form or by the elements of the
single property of the second, <bcp14>MUST</bcp14> equal the number of axes the frame declares.
The ordering is an assertion by the schema author and is never inferred.</t>
        </section>
        <section anchor="variance">
          <name>The <tt>variance</tt> Property</name>
          <t><tt>variance</tt> states how the components respond to a change of frame. When present,
it <bcp14>MUST</bcp14> be one of:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Value</th>
                <th align="left">Response</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>contravariant</tt></td>
                <td align="left">The components transform with the change of frame, as those of a displacement or a velocity do.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>covariant</tt></td>
                <td align="left">The components transform with the inverse transpose of the change of frame, as those of a gradient or a surface normal do.</td>
              </tr>
            </tbody>
          </table>
          <t>Writing <tt>M</tt> for the matrix that carries coordinates in one frame into
coordinates in another, in the sense <xref target="transform-conventions"/> fixes, a
contravariant triple <tt>v</tt> becomes <tt>M v</tt> and a covariant triple <tt>w</tt> becomes the
inverse transpose of <tt>M</tt> applied to <tt>w</tt>. The change of frame is the passive one:
the quantity does not move, the frame does.</t>
          <t>When <tt>variance</tt> is absent, the value is <tt>contravariant</tt>. That is the default
because the quantities most often reported, among them displacements,
velocities, accelerations, and forces, are contravariant, and the covariant
ones, among them gradients and surface normals, are the ones a schema author is
likelier to be conscious of having.</t>
          <t>The distinction is invisible where two frames differ by a rotation alone,
because the inverse transpose of a rotation is that rotation. It becomes visible
as soon as they differ by a scaling or a shear. A surface normal carried through
a non-uniform scaling by the rule that carries a displacement ceases to be
perpendicular to the surface it describes, and a pressure gradient carried the
same way reports the wrong rate of change. A processor that re-expresses
components without reading <tt>variance</tt> is right for rotations and wrong for
everything else, which is what this member exists to prevent.</t>
        </section>
        <section anchor="vector-reference-frames-multiple-frames-and-shared-components">
          <name>Multiple Frames and Shared Components</name>
          <t>Two elements <bcp14>MAY</bcp14> cite the same <tt>reference</tt>, which is how a record reporting two
distinct vector quantities in one frame is written. A property <bcp14>MAY</bcp14> be named by
more than one element, which asserts that the frames share that axis and that
the value is the same component in both, and is how one quantity expressed in
two frames is written. The assertion is the schema author's, and a processor
<bcp14>MUST NOT</bcp14> infer a shared axis from a shared property, from the names of the
frames, or from equal values in samples.</t>
          <t>Two elements that name one property <bcp14>MUST</bcp14> declare the same <tt>variance</tt>, or omit it
in both. Components of differing variance along one shared axis agree under a
rotation and part company under any other change of frame, so one value cannot
stand for both.</t>
          <t>A property <bcp14>MAY</bcp14> also be named both by <tt>vectorReferenceFrames</tt> and by the
<tt>coordinateReferenceSystem</tt> of the same object or tuple, as a position vector
is. Where it is, the unit established by the coordinate axis and the unit borne
by the components of the vector <bcp14>MUST</bcp14> be mutually convertible.</t>
          <t><tt>vectorReferenceFrames</tt> binds vector quantities and nothing else. A rotation, a
stress, a strain, or any other quantity whose components take more than one axis
index is bound by <tt>tensorReferenceFrames</tt> (<xref target="tensor-reference-frames"/>), since
the declared order of a single frame cannot state which axis each component
belongs to. A quaternion carrying a rotation is bound by neither keyword: three
of its four members lie along the axes of a frame and the fourth does not, so no
ordered list of components states its binding.</t>
          <t>A reference that does not resolve leaves the frame indeterminate. It does not
make the annotation incorrect.</t>
          <t>In the following example a satellite navigation receiver reports a position and
a velocity. EPSG:4979 fixes the position; two of its three axes are angles, so
it cannot serve as a vector frame, and the velocity cites EPSG:4978, whose axes
are geocentric X, Y, and Z. Re-expressing the record in another system would
move the position by the whole of the transformation and would turn the velocity
by its rotation alone, which is the distinction the two keywords carry.</t>
          <sourcecode type="json"><![CDATA[
{
  "name": "NavigationFix",
  "type": "object",
  "coordinateReferenceSystem": {
    "reference": "http://www.opengis.net/def/crs/EPSG/0/4979",
    "kind": "ogc-crs",
    "coordinates": ["lat", "lon", "height"]
  },
  "vectorReferenceFrames": [
    {
      "reference": "http://www.opengis.net/def/crs/EPSG/0/4978",
      "kind": "ogc-crs",
      "components": ["vel_x", "vel_y", "vel_z"]
    }
  ],
  "properties": {
    "lat": { "type": "double", "unit": "deg" },
    "lon": { "type": "double", "unit": "deg" },
    "height": { "type": "double", "unit": "m" },
    "vel_x": { "type": "double", "unit": "m/s" },
    "vel_y": { "type": "double", "unit": "m/s" },
    "vel_z": { "type": "double", "unit": "m/s" }
  },
  "required": ["lat", "lon", "height", "vel_x", "vel_y", "vel_z"],
  "additionalProperties": false
}
]]></sourcecode>
          <t>Most frames have no registered identifier. In the next example a magnetic field
is reported in two such frames, each written as a meta-type. The frames share
their first axis, so the schema reports that component once, under <tt>bx</tt>, and
names it in both elements. The remaining components differ between the frames
and are carried separately.</t>
          <sourcecode type="json"><![CDATA[
{
  "name": "SolarWindSample",
  "type": "object",
  "vectorReferenceFrames": [
    {
      "reference": { "$ref": "#/definitions/GseFrame" },
      "kind": "type",
      "components": ["bx", "by_gse", "bz_gse"]
    },
    {
      "reference": { "$ref": "#/definitions/GsmFrame" },
      "kind": "type",
      "components": ["bx", "by_gsm", "bz_gsm"]
    }
  ],
  "properties": {
    "bx": { "type": "double", "unit": "nT" },
    "by_gse": { "type": "double", "unit": "nT" },
    "bz_gse": { "type": "double", "unit": "nT" },
    "by_gsm": { "type": "double", "unit": "nT" },
    "bz_gsm": { "type": "double", "unit": "nT" }
  },
  "required": ["bx", "by_gse", "bz_gse", "by_gsm", "bz_gsm"],
  "additionalProperties": false,
  "definitions": {
    "GseFrame": {
      "name": "GseFrame",
      "type": "tuple",
      "description": "Geocentric Solar Ecliptic frame.",
      "properties": {
        "x": {
          "type": "double",
          "description": "Earth towards the Sun."
        },
        "y": {
          "type": "double",
          "description":
          "In the ecliptic plane, towards dusk, right-handed."
        },
        "z": {
          "type": "double",
          "description":
          "Parallel to the ecliptic pole, positive north."
        }
      },
      "tuple": ["x", "y", "z"]
    },
    "GsmFrame": {
      "name": "GsmFrame",
      "type": "tuple",
      "description": "Geocentric Solar Magnetospheric frame.",
      "properties": {
        "x": {
          "type": "double",
          "description": "Earth towards the Sun."
        },
        "y": {
          "type": "double",
          "description":
          "Perpendicular to the dipole axis, right-handed."
        },
        "z": {
          "type": "double",
          "description":
          "In the plane of x and the dipole axis, positive north."
        }
      },
      "tuple": ["x", "y", "z"]
    }
  }
}
]]></sourcecode>
          <t>The frames are written separately because they differ, and they share their
first axis because both take x from the Earth towards the Sun. The axis
directions are those the NASA Satellite Situation Center states for these two
frames <xref target="SSC-COORDS"/>.</t>
          <t>This specification does not define a frame, an epoch, or a transformation
between frames. Those definitions come from the referenced authority or from the
meta-type the schema itself supplies.</t>
        </section>
      </section>
      <section anchor="tensor-reference-frames">
        <name>The <tt>tensorReferenceFrames</tt> Keyword</name>
        <t>The <tt>tensorReferenceFrames</tt> keyword identifies the reference frames on whose
axes the components of tensor quantities held in properties of an object or
tuple are resolved. A tensor quantity is a grid of numbers that means nothing
without a frame to read it against. Its rank is how many axes it takes to pick
out one number of the grid: one for a vector, two for a stress or a rotation. An
engineer checking whether a bridge beam will crack uses nine numbers because the
beam can be squeezed along its length and sheared across it at the same time, and
no single number says both.</t>
        <t>At rank 1 the frame's declared order states the binding, which is what
<tt>vectorReferenceFrames</tt> (<xref target="vector-reference-frames"/>) does and why <tt>frames</tt>
requires at least two entries. Above rank 1 the vector model no longer suffices
and member names are insufficient. <tt>vectorReferenceFrames</tt> and
<tt>tensorReferenceFrames</tt> coexist, because vectors are common and should be easy
to declare.</t>
        <t>When present, <tt>tensorReferenceFrames</tt> <bcp14>MUST</bcp14> be a non-empty array. Each element
<bcp14>MUST</bcp14> be an object with a <bcp14>REQUIRED</bcp14> <tt>frames</tt> array, a <bcp14>REQUIRED</bcp14> <tt>components</tt>
member, and an <bcp14>OPTIONAL</bcp14> <tt>symmetry</tt> string. No other members are permitted. The
keyword is an array because one record may carry more than one tensor quantity.</t>
        <section anchor="tensor-reference-frames-frames">
          <name>The <tt>frames</tt> Property</name>
          <t><tt>frames</tt> <bcp14>MUST</bcp14> be an array of at least two objects, each with <bcp14>REQUIRED</bcp14>
            <tt>reference</tt> and <tt>kind</tt> members whose values are as defined for
<tt>vectorReferenceFrames</tt> (<xref target="vector-reference-frames"/>). The number of entries is
the rank of the tensor, and the index in position k ranges over the axes of the
frame given by entry k, in the order that frame declares.</t>
          <t>One frame <bcp14>MAY</bcp14> be named by more than one entry, and is so named for a stress, a
strain, or a seismic moment tensor. Where the two entries of a rank-2 tensor
name different frames, the tensor carries a vector in the second frame to a
vector in the first, as for a rotation matrix or a Jacobian.</t>
          <t>Each entry <bcp14>MAY</bcp14> carry <tt>variance</tt> as defined in <xref target="variance"/>, stating how the
index in that position responds to a change of the frame it ranges over. The
entries of one tensor need not agree. A stress tensor is contravariant in both
indices, while a Jacobian is contravariant in the first and covariant in the
second, which is what makes it a map between frames rather than a quantity in
one.</t>
          <t>Three entries give a rank-3 tensor, and one frame may fill them all. The
piezoelectric strain coefficients of a crystal are one such tensor: an electric
field applied along one axis strains the crystal across every pair of axes, so
each coefficient is picked out by three axes of the same crystal frame.</t>
          <sourcecode type="json"><![CDATA[
{
  "name": "PiezoelectricCoefficients",
  "type": "object",
  "tensorReferenceFrames": [
    {
      "frames": [
        {
          "reference": { "$ref": "#/definitions/CrystalAxes" },
          "kind": "type"
        },
        {
          "reference": { "$ref": "#/definitions/CrystalAxes" },
          "kind": "type"
        },
        {
          "reference": { "$ref": "#/definitions/CrystalAxes" },
          "kind": "type"
        }
      ],
      "components": "d"
    }
  ],
  "properties": {
    "d": {
      "type": "array",
      "minItems": 3,
      "maxItems": 3,
      "items": {
        "type": "array",
        "minItems": 3,
        "maxItems": 3,
        "items": {
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": { "type": "double", "ucumUnit": "C/N" }
        }
      }
    }
  },
  "required": ["d"],
  "additionalProperties": false,
  "definitions": {
    "CrystalAxes": {
      "name": "CrystalAxes",
      "type": "tuple",
      "description": "Orthogonal frame fixed by crystal symmetry.",
      "properties": {
        "x1": {
          "type": "double",
          "description": "First axis of that frame."
        },
        "x2": {
          "type": "double",
          "description": "Second axis, at a right angle to x1."
        },
        "x3": {
          "type": "double",
          "description": "Third axis, right-handed."
        }
      },
      "tuple": ["x1", "x2", "x3"]
    }
  }
}
]]></sourcecode>
          <t><tt>d</tt> is nested three deep because <tt>frames</tt> has three entries, and each level is
indexed by the three axes of <tt>CrystalAxes</tt>, so it holds twenty-seven values. The
outermost index is the axis of the applied field and the two inner ones are the
axes of the strain it produces. Each level constrains its length to three
<xref target="JSTRUCT-VALIDATION"/>, which is how the shape the frames require is stated in
the schema rather than left to the instance.</t>
          <t><tt>symmetry</tt> <bcp14>MUST NOT</bcp14> be present unless <tt>frames</tt> has exactly two entries naming
the same frame and declaring the same <tt>variance</tt>, or omitting it in both, since
it speaks of an exchange of two indices ranging over one set of axes and a pair
of indices of differing variance does not survive the exchange under a change of
frame. It <bcp14>MUST</bcp14> be <tt>symmetric</tt>, <tt>skewSymmetric</tt>, or <tt>none</tt>, and it is
<tt>none</tt> where absent. Under <tt>symmetric</tt> the component at row i and column j
equals the component at row j and column i; under <tt>skewSymmetric</tt> it is the
negation of it and the diagonal is zero. The symmetries of tensors of higher
rank, such as the minor and major symmetries of an elastic stiffness tensor, are
not expressible here, and every component of such a tensor that is carried <bcp14>MUST</bcp14>
be named individually.</t>
        </section>
        <section anchor="tensor-reference-frames-components">
          <name>The <tt>components</tt> Property</name>
          <t><tt>components</tt> <bcp14>MUST</bcp14> take one of two forms, each of which states the pairing of
index to value in the schema, and neither of which admits a layout, packing, or
multiplication convention as a separate declaration.</t>
          <t>The first form is a string naming a direct property of the annotated object or
tuple whose type is an <tt>array</tt> or a <tt>tuple</tt> nested to exactly the depth given by
the number of entries in <tt>frames</tt>, the outermost level indexed by the axes of
the first entry and each further level by the next in turn, and whose innermost
items are of a numeric type. A nesting whose depth differs from the number of
entries in <tt>frames</tt> makes the annotation invalid. At every level, the number of
elements an instance carries <bcp14>MUST</bcp14> equal the number of axes declared by the frame
of the corresponding entry, so a <tt>tuple</tt>, or an <tt>array</tt> whose length is
constrained <xref target="JSTRUCT-VALIDATION"/>, states the shape in the schema where a bare
<tt>array</tt> leaves it to the instance. The nesting carries the layout, so the
row-major and column-major
question does not arise, and a tensor declared <tt>symmetric</tt> or <tt>skewSymmetric</tt> is
written out in full in this form. Every position of the tensor is carried, so
the rule of the paragraph after the next does not apply to this form.</t>
          <t>The second form is a non-empty array of objects, each with a <bcp14>REQUIRED</bcp14> <tt>index</tt>
and a <bcp14>REQUIRED</bcp14> <tt>property</tt> and no other members. <tt>index</tt> <bcp14>MUST</bcp14> be an array of
non-negative integers whose length equals the number of entries in <tt>frames</tt>, and
whose integer in position k <bcp14>MUST</bcp14> be less than the number of axes declared by the
frame of entry k. <tt>property</tt> <bcp14>MUST</bcp14> name a direct property of the annotated object
or tuple having a numeric type. Every component carried states its own index, so
no packing order is defined here and the Voigt-style orderings in circulation
need not be distinguished. Within one <tt>components</tt> array no two entries may
carry equal <tt>index</tt> values, and no two entries may name the same property.</t>
          <t>In the second form, a position named by no entry is determined by <tt>symmetry</tt>
where <tt>symmetry</tt> is <tt>symmetric</tt> or <tt>skewSymmetric</tt>, and is otherwise undeclared;
under <tt>none</tt> every position <bcp14>MUST</bcp14> be named. Where <tt>symmetry</tt> is <tt>symmetric</tt> or
<tt>skewSymmetric</tt>, at least one of each mirrored pair of positions <bcp14>MUST</bcp14> be named,
and where both are named the instance values <bcp14>MUST</bcp14> stand in the relation that
<tt>symmetry</tt> declares. The units of the members named by one element <bcp14>MUST</bcp14> be
mutually convertible and <bcp14>SHOULD</bcp14> be identical.</t>
          <t>The Global CMT catalogue publishes a source solution for every significant
earthquake as a fixed-column text record, and states the frame those solutions
are resolved on only in the document describing that format: six moment-tensor
elements against a spherical frame in which r is up, t is south, and p is east
<xref target="GCMT-NDK"/>. The tensor is symmetric, so those six determine all nine, and the
second form of <tt>components</tt> states the index of each without appeal to a packing
order. What a reader of the text file must look up, the schema carries.</t>
          <sourcecode type="json"><![CDATA[
{
  "name": "MomentTensor",
  "type": "object",
  "tensorReferenceFrames": [
    {
      "frames": [
        {
          "reference": { "$ref": "#/definitions/UseFrame" },
          "kind": "type"
        },
        {
          "reference": { "$ref": "#/definitions/UseFrame" },
          "kind": "type"
        }
      ],
      "symmetry": "symmetric",
      "components": [
        { "index": [0, 0], "property": "mrr" },
        { "index": [1, 1], "property": "mtt" },
        { "index": [2, 2], "property": "mpp" },
        { "index": [0, 1], "property": "mrt" },
        { "index": [0, 2], "property": "mrp" },
        { "index": [1, 2], "property": "mtp" }
      ]
    }
  ],
  "coordinateReferenceSystem": {
    "reference": "http://www.opengis.net/def/crs/EPSG/0/4326",
    "kind": "ogc-crs",
    "coordinates": ["lat", "lon"]
  },
  "properties": {
    "eventName": { "type": "string" },
    "centroidTime": { "type": "datetime" },
    "lat": { "type": "double", "unit": "deg" },
    "lon": { "type": "double", "unit": "deg" },
    "depth": { "type": "double", "ucumUnit": "km" },
    "mrr": { "type": "double", "ucumUnit": "dyn.cm" },
    "mtt": { "type": "double", "ucumUnit": "dyn.cm" },
    "mpp": { "type": "double", "ucumUnit": "dyn.cm" },
    "mrt": { "type": "double", "ucumUnit": "dyn.cm" },
    "mrp": { "type": "double", "ucumUnit": "dyn.cm" },
    "mtp": { "type": "double", "ucumUnit": "dyn.cm" }
  },
  "required": [
    "eventName", "centroidTime", "lat", "lon", "depth",
    "mrr", "mtt", "mpp", "mrt", "mrp", "mtp"
  ],
  "additionalProperties": false,
  "definitions": {
    "UseFrame": {
      "name": "UseFrame",
      "type": "tuple",
      "description":
      "Spherical frame of the Global CMT catalogue, at lat/lon.",
      "properties": {
        "r": { "type": "double", "description": "Up." },
        "t": { "type": "double", "description": "South." },
        "p": { "type": "double", "description": "East." }
      },
      "tuple": ["r", "t", "p"]
    }
  }
}
]]></sourcecode>
          <t>The following is the sample record printed in that same document: an earthquake
beneath El Salvador on 1 January 2005, whose six elements give the
orientation and the size of the movement on the fault, in dyne-centimetres. The
catalogue prints them scaled by a power of ten carried on a line of its own, and
the instance carries the values themselves, that is, with the exponent applied.</t>
          <sourcecode type="json"><![CDATA[
{
  "eventName": "C200501010120A",
  "centroidTime": "2005-01-01T01:20:05.1Z",
  "lat": 13.76,
  "lon": -89.08,
  "depth": 162.8,
  "mrr": 0.838e23,
  "mtt": -0.005e23,
  "mpp": -0.833e23,
  "mrt": 1.050e23,
  "mrp": -0.369e23,
  "mtp": 0.044e23
}
]]></sourcecode>
          <t>The value under <tt>mtp</tt> sits at row 1 and column 2, and the declaration of
<tt>symmetric</tt> puts the same value at row 2 and column 1. Nothing in the instance
says so: the six numbers alone determine nine components only once the schema
has stated the frame, the index of each, and the symmetry.</t>
          <t><tt>UseFrame</tt> is a local frame, and up, south, and east are directions only once a
point on the Earth is given. The point is the one the <tt>coordinateReferenceSystem</tt>
of the same object binds, and the <tt>description</tt> of the meta-type is where a
schema says so. This document defines no member that binds a frame to the
position that orients it, and a processor <bcp14>MUST NOT</bcp14> infer such a binding from the
presence of both keywords on one type.</t>
          <t>A rank-2 quantity whose two entries name different frames is a map from one
frame to the other, and an attitude matrix, a Jacobian, and a sensor alignment
are all of that shape. <tt>tensorReferenceFrames</tt> describes such a quantity
correctly, but it says only what the indices range over. It does not say that
the numbers are a transformation, and it cannot describe the quaternion, the
axis and angle, or the three Euler angles that the same transformation is more
often published as. Where the annotated properties carry a transformation,
<tt>frameTransforms</tt> (<xref target="frame-transforms"/>) <bcp14>SHOULD</bcp14> be used instead.</t>
        </section>
      </section>
      <section anchor="frame-transforms">
        <name>The <tt>frameTransforms</tt> Keyword</name>
        <t>The <tt>frameTransforms</tt> keyword identifies properties of an object or tuple that
carry a transformation from one reference frame to another.</t>
        <t>The keywords before it bind quantities. <tt>coordinateReferenceSystem</tt> binds a
position, <tt>vectorReferenceFrames</tt> binds a direction, and <tt>tensorReferenceFrames</tt>
binds a quantity whose components take more than one axis index. A
transformation is none of those. It is the map between two frames, and the
numbers carrying it mean nothing until the sense of the map, the handedness of
its angles, and the arrangement of its components are all settled.</t>
        <t>Common practice settles none of them. NASA's Navigation and Ancillary
Information Facility, which maintains the toolkit most planetary missions
navigate with, states the position plainly: "there are no standards defining
construction of quaternions, the underlying associated mathematics, or the
connection to rotations. In the absence of such standards, different
organizations adopt disparate definitions, which makes communication difficult"
<xref target="NAIF-QUAT"/>. The same paper enumerates what a reader must resolve before a
rotation can be applied: whether a positive angle turns in the right-hand sense,
whether the rotation turns a vector or turns the frame, whether the matrix
multiplies from the left or the right, whether the sense runs from the base
frame or towards it, and, for a quaternion, where the scalar sits and what sign
its multiplication rule carries. Six independent choices, of which, as that
paper observes, "the composition of several misunderstandings can lead to
correct results in one context, incorrect in another, and frustration in
general". The Robot Operating System reaches the same conclusion about Euler
angles, which it discourages "due to having 24 'valid' conventions with
different domains using different conventions by default" <xref target="REP-103"/>.</t>
        <t>When present, <tt>frameTransforms</tt> <bcp14>MUST</bcp14> be a non-empty array. Each element <bcp14>MUST</bcp14> be
an object with <bcp14>REQUIRED</bcp14> <tt>from</tt>, <tt>to</tt>, <tt>encoding</tt>, and <tt>components</tt>, <bcp14>OPTIONAL</bcp14>
          <tt>rotationSequence</tt> and <tt>translation</tt>, and no other members. The keyword is an
array because one record may carry more than one transformation, as an attitude
message does when it gives the orientation of a single instrument against two
different reference frames.</t>
        <section anchor="transform-conventions">
          <name>The Conventions This Document Fixes</name>
          <t>Every frame named by <tt>from</tt> or <tt>to</tt> <bcp14>MUST</bcp14> be right-handed and <bcp14>MUST</bcp14> declare
exactly three axes, and a positive angle <bcp14>MUST</bcp14> be read as a rotation in the
right-hand sense about the axis it is stated against. Every encoding this
keyword defines presupposes three dimensions, so a frame of any other arity
cannot be named by either member.</t>
          <t>A transformation carries coordinates expressed in the <tt>from</tt> frame into
coordinates expressed in the <tt>to</tt> frame. Writing <tt>x</tt> for the coordinates of a
vector in the <tt>from</tt> frame and <tt>x'</tt> for the coordinates of the same vector in
the <tt>to</tt> frame, the transformation is the <tt>M</tt> for which <tt>x' = M x</tt>, and
<tt>translation</tt>, where present, adds to that as <tt>x' = M x + t</tt>. This is the
frame-transformation sense rather than the vector-rotation sense: the quantity
does not move, the frame does.</t>
          <t>The Consultative Committee for Space Data Systems states that same sense for its
attitude messages. The quaternion "from frame A to frame B" is "the quaternion
of the rotation that transforms the basis vectors of frame A into the basis
vectors of frame B", and the matrix it corresponds to is defined by
<tt>XB = MBA * XA</tt> <xref target="CCSDS-ADM"/>.</t>
          <t>This document fixes these choices rather than offering them as members to be
declared, and that committee is the precedent. Its first issue made both the
direction and the placement of the quaternion scalar into fields a producer
filled in, <tt>ATTITUDE_DIR</tt> taking <tt>A2B</tt> or <tt>B2A</tt> and <tt>QUATERNION_TYPE</tt> taking
<tt>FIRST</tt> or <tt>LAST</tt> <xref target="CCSDS-ADM1"/>. Its second issue deleted both, recording the
rationale as "Simplicity of the standard" and, for the wider set of changes that
pinned the meanings down, "To avoid misuse of exchange data" <xref target="CCSDS-ADM"/>.
Fixing them cost that standard the ability to carry records laid out the other
way, because its records are positional. It costs this document nothing, because
<tt>components</tt> names members rather than positions. A schema whose quaternion is
stored scalar-last and one whose quaternion is stored scalar-first carry the
same annotation, with the names written in the order fixed here.</t>
        </section>
        <section anchor="frame-transforms-from-and-to">
          <name>The <tt>from</tt> and <tt>to</tt> Properties</name>
          <t><tt>from</tt> and <tt>to</tt> <bcp14>MUST</bcp14> each be an object with a <bcp14>REQUIRED</bcp14> <tt>reference</tt> and a
<bcp14>REQUIRED</bcp14> <tt>kind</tt>, whose value spaces and meanings are those they have in
<tt>vectorReferenceFrames</tt> (<xref target="vector-reference-frames"/>). The axes of both frames
<bcp14>MUST</bcp14> be directions rather than angles. <tt>variance</tt> <bcp14>MUST NOT</bcp14> appear in either,
since a frame named by a transformation is not an index position of a quantity.</t>
          <t><tt>from</tt> and <tt>to</tt> <bcp14>MAY</bcp14> cite the same <tt>reference</tt>. A transformation between two
realizations of one frame, or between one frame at two epochs, is written that
way.</t>
        </section>
        <section anchor="frame-transforms-encoding">
          <name>The <tt>encoding</tt> Property</name>
          <t><tt>encoding</tt> states which arrangement of numbers carries the transformation. It is
a closed enumeration, and a value outside it is invalid, because each value
carries an arithmetic meaning that this document defines.</t>
          <table>
            <thead>
              <tr>
                <th align="left">Encoding</th>
                <th align="left">Carried by</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>quaternion</tt></td>
                <td align="left">Four members: the scalar, then the three components of the vector part.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>axisAngle</tt></td>
                <td align="left">Four members: the angle, then the three components of the rotation axis.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>eulerAngles</tt></td>
                <td align="left">Three members: the angles of three successive intrinsic rotations.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>rotationMatrix</tt></td>
                <td align="left">Nine values arranged three by three.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>homogeneousMatrix</tt></td>
                <td align="left">Sixteen values arranged four by four, acting on augmented coordinates.</td>
              </tr>
            </tbody>
          </table>
          <t>Every encoding but the last carries a rotation and nothing else, and an offset
between the origins of the two frames is then carried by <tt>translation</tt>
(<xref target="transform-translation"/>) or not at all. <tt>homogeneousMatrix</tt> carries the
rotation and the offset together in one matrix <tt>M4</tt>, acting on augmented
coordinates as <tt>[x', 1] = M4 [x, 1]</tt> written as column vectors. Its first three
rows and first three columns are the rotation <tt>M</tt>, its fourth column holds in
its first three entries the same three values <tt>translation</tt> would carry and in
its fourth entry a one, and its fourth row is three zeroes and a one.</t>
          <t>The nine values of a <tt>rotationMatrix</tt>, and the first three rows and columns of a
<tt>homogeneousMatrix</tt>, <bcp14>SHOULD</bcp14> be orthonormal with determinant positive one, within
a tolerance appropriate to the numeric type. A processor is not required to
verify this, and this document defines no tolerance. The remaining entries of a
<tt>homogeneousMatrix</tt> <bcp14>MUST</bcp14> be as the previous paragraph states, so a projective
matrix, a matrix carrying a scaling or a shear, and a matrix whose fourth row is
anything other than three zeroes and a one are all outside this encoding.</t>
          <t>The first three entries of the fourth column of a <tt>homogeneousMatrix</tt> carry a
length and the rest of the matrix is dimensionless, so those three entries are
subject to the same unit rule as <tt>translation</tt> (<xref target="transform-translation"/>): their
units <bcp14>MUST</bcp14> be mutually convertible and <bcp14>SHOULD</bcp14> be identical. A single nested
property cannot state a unit for one position and not another, so a schema
carrying a <tt>homogeneousMatrix</tt> in that form <bcp14>MUST</bcp14> establish those units in the
referenced definition or in the indexed form of <tt>components</tt>, which names a
separate property for each position.</t>
        </section>
        <section anchor="frame-transforms-components">
          <name>The <tt>components</tt> Property</name>
          <t><tt>components</tt> names the members that carry the transformation, and its form
follows <tt>encoding</tt>.</t>
          <t>For <tt>quaternion</tt>, <tt>axisAngle</tt>, and <tt>eulerAngles</tt>, <tt>components</tt> <bcp14>MUST</bcp14> be an array
of names of direct properties of the annotated object or tuple, all of numeric
type and all distinct, of the length the encoding requires. Order within that
array is fixed by this document. It is never inferred from the order in which
the properties are declared, from their names, or from their position in a
<tt>tuple</tt>.</t>
          <t>For <tt>rotationMatrix</tt> and <tt>homogeneousMatrix</tt>, <tt>components</tt> <bcp14>MUST</bcp14> be either the
name of one property whose type is an <tt>array</tt> or a <tt>tuple</tt> nested twice, the
outer index selecting the row, or an array of indexed components in the form
<tt>tensorReferenceFrames</tt> uses (<xref target="tensor-reference-frames"/>), each stating its own
<tt>index</tt> of two non-negative integers, row first. Neither form leaves a row-major
or column-major reading open, which a flat array of nine or sixteen values
would.</t>
          <t>In the nested form, each instance level <bcp14>MUST</bcp14> carry three elements for
<tt>rotationMatrix</tt> and four for <tt>homogeneousMatrix</tt>. In the indexed form, every
position <bcp14>MUST</bcp14> be named, nine of them for <tt>rotationMatrix</tt> and sixteen for
<tt>homogeneousMatrix</tt>, and each integer of an <tt>index</tt> <bcp14>MUST</bcp14> be less than three,
respectively four. <tt>symmetry</tt> has no counterpart here, so no position is
determined by any other and none may be left undeclared.</t>
          <section anchor="quaternions">
            <name>Quaternions</name>
            <t>The four names given for <tt>quaternion</tt> are, in order, the member carrying the
scalar and the members carrying the three components of the vector part, in
the axis order the frames declare. Writing <tt>a</tt> for the angle of the rotation
that carries the <tt>from</tt> frame into the <tt>to</tt> frame and <tt>e</tt> for its unit axis, the
scalar is <tt>cos(a/2)</tt> and each of the other three is <tt>sin(a/2)</tt> times the
corresponding component of <tt>e</tt>. The axis is unchanged by its own rotation, so
its components are the same in both frames and the question of which frame they
are resolved in does not arise. Which physical direction the second, third, and
fourth names stand for therefore follows from the axis order the frames declare,
not from any convention of this document.</t>
            <t>The four values taken together <bcp14>SHOULD</bcp14> have unit norm, and the scalar <bcp14>SHOULD</bcp14> be
non-negative, which confines the rotation angle to a half turn either way
<xref target="CCSDS-ADM1"/>.</t>
            <t>A worked case fixes the sense. Let the <tt>to</tt> frame be the <tt>from</tt> frame turned a
quarter turn in the right-hand sense about the third axis, so that the first
axis of the <tt>to</tt> frame has the coordinates 0, 1, 0 in the <tt>from</tt> frame. The
quaternion is then the scalar 0.7071 with axis components 0, 0, 0.7071, and a
vector whose coordinates in the <tt>from</tt> frame are 1, 0, 0 has the coordinates 0,
-1, 0 in the <tt>to</tt> frame. Those are the values <xref target="CCSDS-ADM"/> prints for the same
case.</t>
            <t>One other convention is in wide enough use to name. The SPICE toolkit places
the scalar first, as this document does, and measures its angle as the
rotation of the coordinate system from the base frame in the right-hand sense,
as this document does. It nevertheless carries the negation of the vector part
this document carries, so for the case above it gives the scalar 0.7071 with
vector components 0, 0, -0.7071. The cause is not the parameterization but the
multiplication rule: NAIF records that its own product takes the cross-product
term positive where the other convention in circulation takes it negative, that
this "has the effect of inverting the sense of the rotation", and that
converting a quaternion of the other convention into a SPICE one is done by
moving the scalar to the front and negating the remaining three <xref target="NAIF-QUAT"/>.
The two therefore differ in the sign of the vector part while agreeing on
everything a reader is likely to check, and nothing in the four numbers reveals
which was meant. That is the ambiguity this keyword removes.</t>
            <t>The example below annotates an attitude carried as four separate properties. The
record stores the scalar last, as the current attitude message standard requires
of its own records, and <tt>components</tt> names it first, as this document requires
of the annotation.</t>
            <sourcecode type="json"><![CDATA[
{
  "name": "SpacecraftAttitude",
  "type": "object",
  "frameTransforms": [
    {
      "from": {
        "reference": { "$ref": "#/definitions/BodyFrame" },
        "kind": "type"
      },
      "to": {
        "reference": "http://www.opengis.net/def/crs/EPSG/0/4978",
        "kind": "ogc-crs"
      },
      "encoding": "quaternion",
      "components": ["qc", "q1", "q2", "q3"]
    }
  ],
  "properties": {
    "epoch": { "type": "datetime" },
    "q1": { "type": "double" },
    "q2": { "type": "double" },
    "q3": { "type": "double" },
    "qc": { "type": "double" }
  },
  "required": ["epoch", "q1", "q2", "q3", "qc"],
  "additionalProperties": false,
  "definitions": {
    "BodyFrame": {
      "name": "BodyFrame",
      "type": "tuple",
      "description": "Spacecraft body frame.",
      "properties": {
        "x": {
          "type": "double",
          "description": "Along the instrument boresight."
        },
        "y": {
          "type": "double",
          "description": "Completes a right-handed set."
        },
        "z": {
          "type": "double",
          "description": "Towards the solar array hinge."
        }
      },
      "tuple": ["x", "y", "z"]
    }
  }
}
]]></sourcecode>
            <t>An instance carrying the quarter turn worked above is the following.</t>
            <sourcecode type="json"><![CDATA[
{
  "epoch": "2003-09-30T14:28:15.1172Z",
  "q1": 0.0,
  "q2": 0.0,
  "q3": 0.7071068,
  "qc": 0.7071068
}
]]></sourcecode>
          </section>
          <section anchor="axis-and-angle">
            <name>Axis and Angle</name>
            <t>The four names given for <tt>axisAngle</tt> are, in order, the member carrying the
angle and the members carrying the three components of the axis. The angle is
that of the rotation carrying the <tt>from</tt> frame into the <tt>to</tt> frame, measured in
the right-hand sense about the axis, and the axis components <bcp14>SHOULD</bcp14> have unit
norm. This is the one rotation-only encoding whose members do not all carry one
unit: the angle <bcp14>MUST</bcp14> carry a <tt>unit</tt> or <tt>ucumUnit</tt> annotation of angle through
<xref target="JSTRUCT-UNITS"/>, since radians and degrees are not distinguishable in the
value, and the axis components carry none. <tt>homogeneousMatrix</tt> likewise mixes
units, its rotation entries carrying none and its offset entries carrying a
length.</t>
          </section>
          <section anchor="euler-angles">
            <name>Euler Angles</name>
            <t><tt>eulerAngles</tt> requires <tt>rotationSequence</tt>, and the three names in <tt>components</tt>
are the angles of the first, second, and third rotation in the order that
sequence gives.</t>
            <t>The rotations are intrinsic. The first turns the <tt>from</tt> frame about the axis the
first letter names, the second turns the frame the first produced about the axis
the second letter names, and the third turns the frame the second produced, the
result being the <tt>to</tt> frame. Under the extrinsic reading, where every rotation
is about an axis of the original frame, the same three angles against the same
sequence describe a different transformation. Nothing is lost by fixing the
intrinsic reading, because every extrinsic sequence has an intrinsic equal that
<xref target="rotation-sequence"/> gives; degenerate cases, such as all three angles being
zero, agree under both readings and need no conversion.</t>
            <t>That this needs saying is shown by the standard that most needs it. The current
attitude message standard states the composition is intrinsic exactly once, in
an annex marked informative <xref target="CCSDS-ADM"/>, and the issue that preceded it for
sixteen years never stated it at all <xref target="CCSDS-ADM1"/>.</t>
          </section>
        </section>
        <section anchor="rotation-sequence">
          <name>The <tt>rotationSequence</tt> Property</name>
          <t><tt>rotationSequence</tt> <bcp14>MUST</bcp14> be present when <tt>encoding</tt> is <tt>eulerAngles</tt> and <bcp14>MUST NOT</bcp14>
be present otherwise. Its value <bcp14>MUST</bcp14> be three characters drawn from <tt>X</tt>, <tt>Y</tt>,
and <tt>Z</tt>, no two adjacent characters being equal, which admits twelve values:
<tt>XYX</tt>, <tt>XYZ</tt>, <tt>XZX</tt>, <tt>XZY</tt>, <tt>YXY</tt>, <tt>YXZ</tt>, <tt>YZX</tt>, <tt>YZY</tt>, <tt>ZXY</tt>, <tt>ZXZ</tt>, <tt>ZYX</tt>, and
<tt>ZYZ</tt>. The value is case-sensitive, and only these twelve upper-case strings are
valid. The leftmost character names the axis of the first rotation.</t>
          <t><tt>X</tt> names the first axis of the frame being turned, <tt>Y</tt> the second, and <tt>Z</tt> the
third, in the order that frame declares its axes. The letters are positional and
carry no direction of their own, whatever the frame calls its axes: in a frame
declaring north, east, and down, <tt>X</tt> is north, <tt>Y</tt> is east, and <tt>Z</tt> is down.</t>
          <t>Twelve values are enough for every rotation, including every rotation a source
states extrinsically, and an annotator working from such a source converts
rather than looks for a value that is not there. A rotation stated extrinsically
as a sequence of three axes with three angles is the same rotation as the
intrinsic sequence whose axis letters are those three in reverse, taking the same
three angle values in reverse order. Both reverse. Reversing the letters while
leaving the angles in place, or the reverse of that, gives a different rotation,
and is the error this paragraph exists to prevent.</t>
          <t>The twelve conversions are these. In every row the angles reverse, so
<tt>components</tt> names the member holding the source's third angle first and the
member holding its first angle last.</t>
          <table>
            <thead>
              <tr>
                <th align="left">Extrinsic sequence</th>
                <th align="left">rotationSequence value</th>
                <th align="left">components order</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>XYX</tt></td>
                <td align="left">
                  <tt>XYX</tt></td>
                <td align="left">third, second, first</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>XYZ</tt></td>
                <td align="left">
                  <tt>ZYX</tt></td>
                <td align="left">third, second, first</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>XZX</tt></td>
                <td align="left">
                  <tt>XZX</tt></td>
                <td align="left">third, second, first</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>XZY</tt></td>
                <td align="left">
                  <tt>YZX</tt></td>
                <td align="left">third, second, first</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>YXY</tt></td>
                <td align="left">
                  <tt>YXY</tt></td>
                <td align="left">third, second, first</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>YXZ</tt></td>
                <td align="left">
                  <tt>ZXY</tt></td>
                <td align="left">third, second, first</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>YZX</tt></td>
                <td align="left">
                  <tt>XZY</tt></td>
                <td align="left">third, second, first</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>YZY</tt></td>
                <td align="left">
                  <tt>YZY</tt></td>
                <td align="left">third, second, first</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>ZXY</tt></td>
                <td align="left">
                  <tt>YXZ</tt></td>
                <td align="left">third, second, first</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>ZXZ</tt></td>
                <td align="left">
                  <tt>ZXZ</tt></td>
                <td align="left">third, second, first</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>ZYX</tt></td>
                <td align="left">
                  <tt>XYZ</tt></td>
                <td align="left">third, second, first</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>ZYZ</tt></td>
                <td align="left">
                  <tt>ZYZ</tt></td>
                <td align="left">third, second, first</td>
              </tr>
            </tbody>
          </table>
          <t>The six sequences whose first and third letters are equal reverse to themselves,
and those rows are the ones to read carefully: the value written is the same
string the source gives, which makes it easy to conclude that nothing needs
doing. Something does. The angles still reverse, and an extrinsic <tt>ZXZ</tt> recorded
as an intrinsic <tt>ZXZ</tt> with the angles left in source order is a different
rotation from the one the source states.</t>
          <t>A source giving an extrinsic X-then-Y-then-Z rotation of 10, 20, and 30 degrees
is therefore annotated with a <tt>rotationSequence</tt> of <tt>ZYX</tt>, and <tt>components</tt>
naming the member holding 30 degrees first, then the member holding 20, then the
member holding 10. The members themselves do not move and their values are not
rewritten; only the order in which <tt>components</tt> names them changes. Because
nothing in the annotation records that the source was extrinsic, a schema that
converts <bcp14>SHOULD</bcp14> say so in <tt>description</tt>, so that a later reader comparing the
schema against the source document does not read the reversal as a mistake.
An extrinsic reading <bcp14>MUST NOT</bcp14> be recorded by inventing a thirteenth value, a
lower-case spelling, or any other marking.</t>
          <t>The six values whose first and third characters are equal are permitted, though
the standard that first enumerated them discouraged them "as their use can cause
confusion" <xref target="CCSDS-ADM1"/>.</t>
        </section>
        <section anchor="transform-translation">
          <name>The <tt>translation</tt> Property</name>
          <t><tt>translation</tt>, when present, <bcp14>MUST</bcp14> be an array of exactly three names of direct
properties of the annotated object or tuple, all of numeric type and all
distinct, giving the coordinates of the origin of the <tt>from</tt> frame expressed in
the <tt>to</tt> frame, on the axes of the <tt>to</tt> frame in the order that frame declares
them. That is the <tt>t</tt> of <tt>x' = M x + t</tt> (<xref target="transform-conventions"/>), and it is
the offset from the origin of the <tt>to</tt> frame to the origin of the <tt>from</tt> frame,
not the other way about. Their units <bcp14>MUST</bcp14> be mutually convertible and <bcp14>SHOULD</bcp14> be
identical.</t>
          <t><tt>translation</tt> <bcp14>MUST NOT</bcp14> be present when <tt>encoding</tt> is <tt>homogeneousMatrix</tt>, whose
fourth column carries the same three values in the same sense. Where
<tt>translation</tt> is absent and <tt>encoding</tt> is not <tt>homogeneousMatrix</tt>, the element
declares a rotation and says nothing about the origins, which is the correct
reading for an attitude and the wrong one for a sensor alignment.</t>
          <t>The KITTI dataset publishes the alignment between its laser scanner and its
reference camera in a calibration file holding nine numbers on one line and
three on another, and states in its paper that the rotation and the translation
run from the laser to the camera <xref target="KITTI"/>. Neither the file nor the paper says
whether
the nine numbers are rows or columns; the developer kit for one of its
benchmarks states that its matrices are stored row-major, and the raw
calibration file carries no such statement. The two readings are transposes of
one another, and for a rotation matrix both are valid rotations, so nothing in
the numbers rules either out. Only the physical arrangement of the sensors does.
The schema below states the reading, and the axis directions the file leaves to
the reader, as declarations.</t>
          <sourcecode type="json"><![CDATA[
{
  "name": "SensorAlignment",
  "type": "object",
  "frameTransforms": [
    {
      "from": {
        "reference": { "$ref": "#/definitions/LaserFrame" },
        "kind": "type"
      },
      "to": {
        "reference": { "$ref": "#/definitions/CameraFrame" },
        "kind": "type"
      },
      "encoding": "rotationMatrix",
      "components": "rotation",
      "translation": ["tx", "ty", "tz"]
    }
  ],
  "properties": {
    "calibrationTime": { "type": "datetime" },
    "rotation": {
      "type": "array",
      "minItems": 3,
      "maxItems": 3,
      "items": {
        "type": "array",
        "minItems": 3,
        "maxItems": 3,
        "items": { "type": "double" }
      }
    },
    "tx": { "type": "double", "ucumUnit": "m" },
    "ty": { "type": "double", "ucumUnit": "m" },
    "tz": { "type": "double", "ucumUnit": "m" }
  },
  "required": ["calibrationTime", "rotation", "tx", "ty", "tz"],
  "additionalProperties": false,
  "definitions": {
    "LaserFrame": {
      "name": "LaserFrame",
      "type": "tuple",
      "description": "Frame of the rotating laser scanner.",
      "properties": {
        "x": {
          "type": "double",
          "description": "Forward along the vehicle."
        },
        "y": {
          "type": "double",
          "description": "To the left of the vehicle."
        },
        "z": { "type": "double", "description": "Up." }
      },
      "tuple": ["x", "y", "z"]
    },
    "CameraFrame": {
      "name": "CameraFrame",
      "type": "tuple",
      "description": "Frame of the reference camera.",
      "properties": {
        "x": {
          "type": "double",
          "description": "To the right in the image."
        },
        "y": {
          "type": "double",
          "description": "Down in the image."
        },
        "z": {
          "type": "double",
          "description": "Along the optical axis, from the camera."
        }
      },
      "tuple": ["x", "y", "z"]
    }
  }
}
]]></sourcecode>
          <t>The instance below carries the values that dataset publishes for one recording
day.</t>
          <sourcecode type="json"><![CDATA[
{
  "calibrationTime": "2012-03-15T11:37:16Z",
  "rotation": [
    [0.007533745, -0.9999714, -0.000616602],
    [0.01480249, 0.0007280733, -0.9998902],
    [0.9998621, 0.00752379, 0.01480755]
  ],
  "tx": -0.004069766,
  "ty": -0.07631618,
  "tz": -0.2717806
}
]]></sourcecode>
          <t>Read as rows, the first inner array gives the first axis of the camera frame in
the components of the laser frame, and the matrix maps the forward axis of the
laser onto the optical axis of the camera, which is the arrangement the vehicle
has. Read as columns, it maps them the other way. The file name carries the
direction and nothing carries the layout, which is the division of labor this
keyword ends.</t>
        </section>
      </section>
      <section anchor="linear-reference-systems">
        <name>The <tt>linearReferenceSystem</tt> Keyword</name>
        <t>The <tt>linearReferenceSystem</tt> keyword identifies the linear reference system
<xref target="ISO19148"/> under which a location held in properties of an object or tuple is
to be interpreted.</t>
        <t>When present, <tt>linearReferenceSystem</tt> <bcp14>MUST</bcp14> be an object with <bcp14>REQUIRED</bcp14>
          <tt>reference</tt>, <tt>kind</tt>, <tt>linearElement</tt>, and <tt>measure</tt> strings and <bcp14>OPTIONAL</bcp14>
          <tt>measureEnd</tt> and <tt>direction</tt> strings. No other properties are permitted.</t>
        <section anchor="linear-reference-systems-reference">
          <name>The <tt>reference</tt> Property</name>
          <t><tt>reference</tt> <bcp14>MUST</bcp14> identify one linear reference system. Where <tt>kind</tt> is <tt>type</tt> it
<bcp14>MUST</bcp14> be a type reference <tt>{ "$ref": &lt;JSON Pointer&gt; }</tt> <xref target="JSTRUCT-CORE"/> to a
shareable type
definition, and otherwise it <bcp14>MUST</bcp14> be an absolute URI <xref target="RFC3986"/>. The identified
definition <bcp14>MUST</bcp14> establish the linear referencing method, the measure origin, the
increasing-measure direction, the measure unit, and the linear-element
namespace. <tt>kind</tt> states which definition model the reference identifies.</t>
          <t>A processor is not required to dereference the URI. This
document does not define a resolution protocol, URI layout, storage model, or
definition serialization.</t>
        </section>
        <section anchor="linear-reference-systems-kind">
          <name>The <tt>kind</tt> Property</name>
          <t><tt>kind</tt> classifies which definition model the URI identifies. It is an open
enumeration. The following values are defined here:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Kind</th>
                <th align="left">Referenced definition</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>lrs-network</tt></td>
                <td align="left">A network published by a geospatial feature service whose layer and metadata resources establish the linear elements and the measure, such as the WSDOT State Route system <xref target="WSDOT-LRS"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>type</tt></td>
                <td align="left">A meta-type declaring members whose <tt>referenceRole</tt> is <tt>linearElement</tt> and <tt>measure</tt>, and optionally <tt>direction</tt> (<xref target="meta-types"/>).</td>
              </tr>
            </tbody>
          </table>
          <t>Other values <bcp14>MAY</bcp14> name further definition models. <xref target="reference-uris"/> discusses
the availability of registered definitions.</t>
          <t>Since the identified definition <bcp14>MUST</bcp14> establish the measure unit, the
increasing-measure direction, and the linear-element namespace, a feature
service layer that carries measure values on its vertices and a route
identifier field without stating those is a rendering of positions in a
reference system rather than a definition of one, and it does not qualify as an
<tt>lrs-network</tt>.</t>
          <t>A <tt>type</tt> reference carries a system that no authority publishes, such as one
internal to a plant, a terminal, or a private network. The referenced meta-type
<bcp14>MUST</bcp14> declare a member whose <tt>referenceRole</tt> is <tt>linearElement</tt> and a member
whose <tt>referenceRole</tt> is <tt>measure</tt>, and <bcp14>MAY</bcp14> declare one whose <tt>referenceRole</tt> is
<tt>direction</tt>. The <tt>linearElement</tt>, <tt>measure</tt>, and <tt>direction</tt> properties of the
annotation map the annotated properties onto those members, so the type of the
element identifier and the unit of the measure are checkable. Where the
annotation names a <tt>measureEnd</tt>, that property maps onto the same member of the
meta-type as <tt>measure</tt>, because both carry a distance in the same system. The
referencing method, measure origin, increasing-measure direction, and
linear-element namespace are stated in the <tt>description</tt> of the meta-type or of
its members.</t>
        </section>
        <section anchor="linear-reference-systems-linear-element">
          <name>The <tt>linearElement</tt> Property</name>
          <t><tt>linearElement</tt> <bcp14>MUST</bcp14> name a direct property of the annotated object or tuple.
The property value identifies the road, railway, waterway, route, or other
linear element within the linear-element namespace established by the
identified system.</t>
        </section>
        <section anchor="linear-reference-systems-measure">
          <name>The <tt>measure</tt> Property</name>
          <t><tt>measure</tt> <bcp14>MUST</bcp14> name a direct numeric property, distinct from <tt>linearElement</tt>.
The property gives the
distance from the measure origin along the identified linear element. It <bcp14>MUST</bcp14>
have a <tt>unit</tt> or <tt>ucumUnit</tt> annotation compatible with the measure unit
established by the identified system.</t>
        </section>
        <section anchor="linear-reference-systems-measure-end">
          <name>The <tt>measureEnd</tt> Property</name>
          <t><tt>measureEnd</tt>, when present, <bcp14>MUST</bcp14> name another distinct direct numeric property
whose type and unit are those required of <tt>measure</tt>.</t>
          <t>Where <tt>measureEnd</tt> is absent, the annotation locates a point on the linear
element at <tt>measure</tt>. Where it is present, the annotation locates the span of
that element between <tt>measure</tt> and <tt>measureEnd</tt>, and <tt>measure</tt> is the start of
the span. Both ends lie on the one element that <tt>linearElement</tt> identifies, and
this document defines no span crossing two elements.</t>
          <t>The span is closed at both ends, which differs from the half-open convention
this document uses for temporal intervals. Two spans that share an end therefore
share the point at that end, and a consumer counting over abutting sections <bcp14>MUST</bcp14>
account for that shared point. A span whose ends are equal is the point at that
measure. This
document does not require that <tt>measureEnd</tt> exceed <tt>measure</tt>, since a system
whose increasing-measure direction opposes the direction of travel encodes a
forward span with a decreasing pair.</t>
        </section>
        <section anchor="linear-reference-systems-direction">
          <name>The <tt>direction</tt> Property</name>
          <t><tt>direction</tt>, when present, <bcp14>MUST</bcp14> name another distinct direct property. Its
value qualifies the direction of travel or orientation using the vocabulary
established by the identified system. It does not alter the increasing-measure
direction.</t>
          <t>Properties not named by <tt>linearElement</tt>, <tt>measure</tt>, <tt>measureEnd</tt>, or <tt>direction</tt>
are not part of the linearly referenced location.</t>
          <t>This binding describes a location along one identified linear element, either a
point or a span. This document does not define offsets, referent-relative
addressing, interpolative methods, transformations between linear reference
systems, or network topology.</t>
          <t>The following excerpt locates a point on a Washington State route, where <tt>arm</tt>
is the accumulated route mile measured from the route origin. The cited service
qualifies as an <tt>lrs-network</tt> because the layer it names publishes the route
identifier syntax and the increasing-measure direction in its own metadata
rather than leaving them to a reader of the geometry: it decomposes the route
identifier into its parts and states that "a directional indicator has been added
to the RouteIdentifier to distinguish between the increasing and decreasing
direction of mileposting" <xref target="WSDOT-LRS"/>. It does not state the unit of the
measure values, which is why the <tt>measure</tt> rule requires the annotated property
to carry one:</t>
          <sourcecode type="json"><![CDATA[
========== NOTE: '\' line wrapping per RFC 8792 ===========

{
  "name": "WsdotStateRouteLocation",
  "type": "object",
  "linearReferenceSystem": {
    "reference": "https://data.wsdot.wa.gov/arcgis/rest/services/\
        Shared/LRSData/FeatureServer/9",
    "kind": "lrs-network",
    "linearElement": "route_identifier",
    "measure": "arm",
    "direction": "inventory_direction"
  },
  "properties": {
    "route_identifier": {
      "type": "string"
    },
    "arm": {
      "type": "double",
      "unit": "mi",
      "ucumUnit": "[mi_i]"
    },
    "inventory_direction": {
      "type": "string"
    }
  },
  "required": ["route_identifier", "arm", "inventory_direction"],
  "additionalProperties": false
}
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="colorimetric-reference-annotations">
      <name>Colorimetric Reference Annotations</name>
      <t>Color is the worked instance of a larger family: components resolved onto the
channels of a named space, where the space fixes the basis those numbers weigh,
the reference they stand relative to, and the encoding they carry.
<xref target="spatial-reference-annotations"/> gives that treatment to positions and
directions, and this section gives it to color, because color is the perceptual
signal most often carried in general-purpose JSON — design tokens, stylesheets,
image metadata — and the one most often carried with all of that left silent.
The same family continues past color in <xref target="signal-channel-annotations"/>, where
audio channel layout and multiband imaging resolve channel numbers onto a named
space as color does. A coded value bound to an external list
(<xref target="coded-value-annotations"/>) and the weighting a scalar measurement carries
(<xref target="measurement-conditioning"/>) are relatives of a different shape, each treated
in its own section.</t>
      <section anchor="color-spaces">
        <name>The <tt>colorSpaces</tt> Keyword</name>
        <t>The <tt>colorSpaces</tt> keyword identifies the color spaces in which channel values
held in properties of an object or tuple are to be interpreted.</t>
        <t>A color value is a measurement. Three numbers are not a
color until something states which primaries they weigh, what white they are
relative to, what range they run over, and whether they are proportional to
light or to the signal that drives a display. Most of those are almost never
carried with the numbers, and the ones that are are carried by conventions that
differ between formats.</t>
        <t>The keywords of <xref target="spatial-reference-annotations"/> lean on registers. A
position has the EPSG dataset and the OGC definitions server behind it, and a
schema names a system by a URI that resolves to a definition of it. Color has no
equivalent. The International Color Consortium publishes registries of RGB color
spaces and of print characterization data, but those are pages written for a
reader rather than identifiers minted for a machine <xref target="ICC-REGISTRY"/>. What
exists in place of a register is of two other sorts. A standards document may
assign a code point, as <xref target="ITU-H273"/> assigns combinations of primaries, transfer
function, matrix coefficients, and signal range to four integers. Or the
definition travels with the data as a profile, identified by a checksum over its
own contents <xref target="ICC-SPEC"/>. Neither is a URI and neither dereferences. A
<tt>reference</tt> in this keyword identifies more often than it resolves, which is
true of the other reference-style keywords as well but is true of this one
always.</t>
        <t>When present, <tt>colorSpaces</tt> <bcp14>MUST</bcp14> be a non-empty array. Each element <bcp14>MUST</bcp14> be an
object with <bcp14>REQUIRED</bcp14> <tt>reference</tt>, <tt>kind</tt>, and <tt>channels</tt>, <bcp14>OPTIONAL</bcp14> <tt>codePoints</tt>,
<tt>packing</tt>, <tt>alpha</tt>, <tt>alphaMode</tt>, <tt>transfer</tt>, <tt>illuminant</tt>, and <tt>observer</tt>, and no
other members. The keyword is an array because one record may carry a color in more
than one space, as a characterization dataset does when it gives the device
values that were printed alongside the color that was measured off the result.</t>
        <t>These members can disagree, and one principle settles every case in which they
do. <tt>reference</tt> identifies a definition that describes a class of data, while
<tt>codePoints</tt>, <tt>transfer</tt>, <tt>illuminant</tt>, and <tt>observer</tt> state what is true of
<em>this</em> data. The narrower statement prevails, because a schema author declaring
one is recording a fact about the values in hand and a definition cannot be. The
specific rules follow from that and are stated where each member is defined
(<xref target="color-code-points"/>, <xref target="color-transfer"/>, <xref target="color-illuminant-observer"/>); no
rule lets a definition override a member, and none of them makes a schema
invalid, since a processor that cannot resolve the definition cannot detect the
disagreement in the first place.</t>
        <section anchor="color-spaces-reference-and-kind">
          <name>The <tt>reference</tt> and <tt>kind</tt> Properties</name>
          <t><tt>reference</tt> <bcp14>MUST</bcp14> identify one color space or one set of device control values.
Where <tt>kind</tt> is <tt>type</tt> it <bcp14>MUST</bcp14> be a type reference <tt>{ "$ref": &lt;JSON Pointer&gt; }</tt>
            <xref target="JSTRUCT-CORE"/> to a shareable type definition. Where <tt>kind</tt> is <tt>icc-profile</tt> it <bcp14>MUST</bcp14> be a URI
<xref target="RFC3986"/> identifying the profile; the profile identifier <xref target="ICC-SPEC"/>
computes over the profile contents is not itself a URI, and a schema carrying
only that identifier <bcp14>MUST</bcp14> express it as one, under a scheme of the schema
author's choosing that states which digest the remainder is. Otherwise it <bcp14>MUST</bcp14>
be an absolute URI <xref target="RFC3986"/>.</t>
          <t>What the identified definition <bcp14>MUST</bcp14> establish follows from what is being
identified.</t>
          <table>
            <thead>
              <tr>
                <th align="left">Identified</th>
                <th align="left">What the definition establishes</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">A space whose channels are additive primaries</td>
                <td align="left">The primaries, the white point, and the transfer function.</td>
              </tr>
              <tr>
                <td align="left">A space whose channels are tristimulus quantities, or are computed from them</td>
                <td align="left">The reference white, and the illuminant and the standard colorimetric observer, or else the schema declares them under <tt>illuminant</tt> and <tt>observer</tt>.</td>
              </tr>
              <tr>
                <td align="left">A set of device control values</td>
                <td align="left">The device, medium, and process the values drive, and the measurement conditions under which the result was characterized.</td>
              </tr>
            </tbody>
          </table>
          <t>A set of device control values is not a color space in the colorimetric sense,
and the third row exists because such values are carried alongside colors often
enough that excluding them would push the commonest characterization record out
of this keyword. <tt>channels</tt>, <tt>alpha</tt>, and <tt>alphaMode</tt> apply to it unchanged;
<tt>codePoints</tt>, <tt>transfer</tt>, <tt>illuminant</tt>, and <tt>observer</tt> do not, and <bcp14>MUST NOT</bcp14> be
present on an element identifying one.</t>
          <t><tt>kind</tt> classifies which definition model the reference identifies. It is an open
enumeration. The following values are defined here:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Kind</th>
                <th align="left">Referenced definition</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>itu</tt></td>
                <td align="left">A Recommendation of the International Telecommunication Union.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>iec</tt></td>
                <td align="left">A standard of the International Electrotechnical Commission.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>cie</tt></td>
                <td align="left">A publication of the International Commission on Illumination <xref target="CIE015"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>icc-profile</tt></td>
                <td align="left">An ICC profile, identified as <xref target="ICC-SPEC"/> identifies one.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>icc-registry</tt></td>
                <td align="left">An entry in a registry the International Color Consortium publishes <xref target="ICC-REGISTRY"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>type</tt></td>
                <td align="left">A meta-type in the annotated schema, as <xref target="meta-types"/> describes.</td>
              </tr>
            </tbody>
          </table>
          <t>A processor is not required to dereference the URI. This document does not
define a resolution protocol, URI layout, storage model, or definition
serialization. Where an element carries <tt>codePoints</tt>, <tt>transfer</tt>, <tt>illuminant</tt>,
or <tt>observer</tt> alongside <tt>reference</tt>, those members prevail over the identified
definition where the two disagree (<xref target="color-code-points"/>, <xref target="color-transfer"/>,
<xref target="color-illuminant-observer"/>).</t>
        </section>
        <section anchor="color-code-points">
          <name>The <tt>codePoints</tt> Property</name>
          <t><tt>codePoints</tt>, when present, <bcp14>MUST</bcp14> be an array of exactly four non-negative
integers, being the color primaries, transfer characteristics, matrix
coefficients, and video full range flag that <xref target="ITU-H273"/> defines, in that
order.</t>
          <t>These four integers are the only identifier of a color space that is both
machine-readable and widely deployed. The PNG specification carries the same
four in a chunk of its own, gives that chunk precedence over every other color
declaration a file may hold, and requires the chunk carrying mastering display
metadata to be accompanied by it, on the ground that such metadata means nothing
without the space it is relative to <xref target="PNG3"/>. Where the identified definition
and the code points disagree, the code points are the narrower statement and a
processor <bcp14>MUST</bcp14> prefer them, so that two processors reading one schema do not
part company. <tt>transfer</tt> is narrower still: where <tt>transfer</tt> is <tt>linear</tt>, it
overrides the transfer characteristics code point, and where <tt>transfer</tt> is
<tt>asDefined</tt> or absent, that code point governs.</t>
        </section>
        <section anchor="color-spaces-channels">
          <name>The <tt>channels</tt> Property</name>
          <t><tt>channels</tt> <bcp14>MUST</bcp14> be a non-empty array of names of direct properties of the
annotated object or tuple, all distinct, mapped by position onto the channels of
the space in the order the identified definition declares them. Except where
<tt>packing</tt> is present, the number of channels supplied <bcp14>MUST</bcp14> equal the number the
identified space defines, and an opacity channel is not one of them. As with
<tt>coordinates</tt> and <tt>components</tt>, the ordering is an assertion by the schema author
and is never inferred from property order, property names, or position in a
<tt>tuple</tt>.</t>
          <t>Where <tt>packing</tt> is absent, either every name is that of a property of numeric
type, or the array holds exactly one name, that of a property whose type is
<tt>array</tt> or <tt>tuple</tt> and whose elements are of numeric type, in which case the
elements of that property supply the channels in order. Where <tt>packing</tt> is
present, the array holds exactly one name, that of a property of type <tt>string</tt>,
and the channels are read out of that one value as <xref target="packing"/> states.</t>
          <t>This document does not fix the range or the unit of a channel value. Where the
identified definition does not establish them, as it does not for a device
control value, the schema <bcp14>SHOULD</bcp14> declare them, by a <tt>unit</tt> annotation, by a
numeric range, or in the <tt>description</tt> of the property. The channels of one
element <bcp14>SHOULD</bcp14> share one range convention. A <tt>packing</tt> establishes both, and a
schema carrying one declares neither.</t>
        </section>
        <section anchor="packing">
          <name>The <tt>packing</tt> Property</name>
          <t>A color is often carried not as a set of numbers but as one string that has all
of them inside it. The hexadecimal notation is the commonest such string in the
world, and it asserts four things at once that the numbers alone do not: that the
order is red, green, blue; that each channel is eight bits; that the range runs
from zero to two hundred and fifty-five; and, in the CSS reading, that the space
is sRGB with its transfer function applied. A reader who knows the convention
supplies all four. This keyword exists so that they need not be known.</t>
          <t><tt>packing</tt>, when present, states that one string property carries every channel of
the element. Its value <bcp14>MUST</bcp14> be <tt>hexRgb</tt> or <tt>hexRgba</tt>.</t>
          <table>
            <thead>
              <tr>
                <th align="left">Value</th>
                <th align="left">Meaning</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>hexRgb</tt></td>
                <td align="left">Three channels in three or six hexadecimal digits.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>hexRgba</tt></td>
                <td align="left">Three channels and an opacity in four or eight hexadecimal digits.</td>
              </tr>
            </tbody>
          </table>
          <t>The value of the named property <bcp14>MUST</bcp14> consist of hexadecimal digits, optionally
preceded by a single <tt>#</tt>, and <bcp14>MUST</bcp14> hold three or six digits under <tt>hexRgb</tt> and
four or eight under <tt>hexRgba</tt>. The letters are case-insensitive, as <xref target="CSS-COLOR-4"/>
says in as many words: "the case of the letters doesn't matter - <tt>#00ff00</tt> is
identical to <tt>#00FF00</tt>". The <tt>#</tt> is part of the CSS token rather than of the
notation, and a schema requiring one form or forbidding the other states so by a
<tt>pattern</tt> <xref target="JSTRUCT-VALIDATION"/>; CSS itself accepts the bare form under the
quirks mode of <xref target="CSS-COLOR-4"/>.</t>
          <t>In the six-digit and eight-digit forms each successive pair of digits is one
channel, read as an integer from zero to two hundred and fifty-five, where zero is
the minimum of that channel and two hundred and fifty-five is its maximum. In the
three-digit and four-digit forms each single digit stands for the pair obtained by
writing it twice, so that <tt>#123</tt> is <tt>#112233</tt>. The order is fixed by this document
and is red, green, blue, and, under <tt>hexRgba</tt>, opacity. It is not taken from the
order the identified definition declares, and an element whose identified space
declares its channels in any other order <bcp14>MUST NOT</bcp14> use a <tt>packing</tt>.</t>
          <t>The identified space <bcp14>MUST</bcp14> define exactly three channels, and they <bcp14>MUST</bcp14> be
additive primaries. <tt>alpha</tt> <bcp14>MUST NOT</bcp14> be present where <tt>packing</tt> is <tt>hexRgba</tt>,
whose fourth channel is the opacity; <tt>alphaMode</tt> <bcp14>MAY</bcp14> be present there and applies
to it. <tt>alpha</tt> <bcp14>MAY</bcp14> be present where <tt>packing</tt> is <tt>hexRgb</tt>, which carries none.</t>
          <t>A packing carries eight bits for each channel, which is not enough resolution for
values proportional to light, so <tt>transfer</tt> <bcp14>SHOULD</bcp14> be <tt>asDefined</tt> or absent where
<tt>packing</tt> is present.</t>
          <t>The space is still named by <tt>reference</tt>, and this document does not assume one. A
bare hexadecimal string in a document that says nothing further is sRGB only
because CSS says so, and CSS says so of the CSS notation and not of the digits:
hex colors are among those that "resolve to sRGB" <xref target="CSS-COLOR-4"/>. A record
carrying the same six digits for a wide-gamut display means a different color, and
the difference is invisible in the value.</t>
          <t>The following excerpt is a design token whose color is written the way a
stylesheet would write it.</t>
          <sourcecode type="json"><![CDATA[
{
  "name": "BrandColorToken",
  "type": "object",
  "colorSpaces": [
    {
      "reference":
      "https://www.w3.org/TR/css-color-4/#predefined-sRGB",
      "kind": "iec",
      "channels": ["value"],
      "packing": "hexRgba"
    }
  ],
  "properties": {
    "token": {
      "type": "string"
    },
    "value": {
      "type": "string",
      "pattern": "^#[0-9a-fA-F]{8}$"
    }
  },
  "required": ["token", "value"],
  "additionalProperties": false
}
]]></sourcecode>
        </section>
        <section anchor="color-spaces-alpha-and-alpha-mode">
          <name>The <tt>alpha</tt> and <tt>alphaMode</tt> Properties</name>
          <t><tt>alpha</tt>, when present, <bcp14>MUST</bcp14> name a direct property of numeric type carrying
opacity, distinct from every name in <tt>channels</tt>. Its value is a dimensionless
fraction from zero to one unless the property declares otherwise by a <tt>unit</tt>
annotation or a numeric range, and where it declares otherwise a processor <bcp14>MUST</bcp14>
reduce it to that fraction before applying <tt>alphaMode</tt>. <tt>alphaMode</tt> <bcp14>MUST NOT</bcp14> be
present when both <tt>alpha</tt> is absent and <tt>packing</tt> is not <tt>hexRgba</tt>, and states how
the channel values stand to the opacity, wherever that opacity is carried. When
present, its value <bcp14>MUST</bcp14> be <tt>straight</tt> or <tt>premultiplied</tt>.</t>
          <table>
            <thead>
              <tr>
                <th align="left">Value</th>
                <th align="left">Meaning</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>straight</tt></td>
                <td align="left">The channel values are independent of the opacity value.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>premultiplied</tt></td>
                <td align="left">The channel values have already been multiplied by the opacity value.</td>
              </tr>
            </tbody>
          </table>
          <t>Where an opacity is carried and <tt>alphaMode</tt> is absent, the value is <tt>straight</tt>.
That is also the reading a packed hexadecimal opacity carries on its own, since
the notation of <xref target="CSS-COLOR-4"/> does not premultiply.</t>
          <t>The two are not distinguishable by inspection, except at an opacity of zero,
where the premultiplied channels are all zero and the color is gone. The PNG
specification states its own choice in as many words: "The color values in a
pixel are not premultiplied by the alpha value assigned to the pixel. This rule
is sometimes called 'unassociated' or 'non-premultiplied' alpha", and, flatly,
"PNG does not use premultiplied alpha" <xref target="PNG3"/>. Formats that do premultiply
exist, and values carried from one to the other without the conversion are wrong
everywhere the opacity is neither zero nor one.</t>
        </section>
        <section anchor="color-transfer">
          <name>The <tt>transfer</tt> Property</name>
          <t><tt>transfer</tt>, when present, states whether the channel values carry the transfer
function of the identified space or are proportional to light. Its value <bcp14>MUST</bcp14> be
<tt>asDefined</tt> or <tt>linear</tt>.</t>
          <table>
            <thead>
              <tr>
                <th align="left">Value</th>
                <th align="left">Meaning</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>asDefined</tt></td>
                <td align="left">The values carry the transfer function the identified definition establishes.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>linear</tt></td>
                <td align="left">The values are proportional to radiometric quantity, taking the primaries and white point of the identified space but not its transfer function.</td>
              </tr>
            </tbody>
          </table>
          <t>When absent, the value is <tt>asDefined</tt>.</t>
          <t><tt>linear</tt> is what a renderer means when it calls a color energy-linear. A space
and its linear counterpart are commonly given the same name, and the two are far
apart: under the transfer function the ICC registry publishes for sRGB, a
channel value of 0.5 stands for approximately 0.214 of the light that a channel
value of 1.0 stands for <xref target="ICC-REGISTRY"/>. Arithmetic on color is defined
on the linear values, and the PNG specification requires compositing to be
performed on "intensity samples (not gamma-encoded samples)" <xref target="PNG3"/>.</t>
        </section>
        <section anchor="color-illuminant-observer">
          <name>The <tt>illuminant</tt> and <tt>observer</tt> Properties</name>
          <t><tt>illuminant</tt> and <tt>observer</tt>, when present, state the conditions the values are
relative to. <tt>illuminant</tt> names a standard illuminant, and <bcp14>SHOULD</bcp14> use a
designation of <xref target="CIE015"/>. <tt>observer</tt> names a standard colorimetric observer; it
is an open enumeration, and the values defined here are <tt>cie-1931-2</tt> for the
1931 standard colorimetric observer and <tt>cie-1964-10</tt> for the 1964
supplementary standard colorimetric observer.</t>
          <t>A space whose values are tristimulus quantities, or are computed from them,
does not by itself establish either. The definition of the 1976 L*a*b* space
says as much: it "is applicable to tristimulus values calculated using
colour-matching functions of the CIE 1931 standard colorimetric system or the
CIE 1964 standard colorimetric system" <xref target="ISO11664-4"/>. Values computed under the
two observers from one sample differ, and nothing in the values records which
was used. Where the identified definition does not establish the illuminant and
the observer, a schema <bcp14>SHOULD</bcp14> declare <tt>illuminant</tt> and <tt>observer</tt>. Where the
definition does establish them and the declared members disagree with it, the
declared members prevail and a processor <bcp14>MUST</bcp14> prefer them, for the reason that
the schema author is stating the condition these values were computed under and
the definition is stating the condition its class of values is customarily
computed under. A processor <bcp14>SHOULD</bcp14> report the disagreement, and <bcp14>MUST NOT</bcp14> treat
it as making the schema invalid.</t>
          <t>Published measurement data shows both practices. The characterization datasets
of the International Color Consortium carry their conditions in the file itself.
One widely used print dataset opens by stating its instrument geometry as "D50,
2 degree, geometry 45/0, no polarisation filter, white backing, according to ISO
13655:2009 M1", then repeats the illuminant and the observer angle in fields of
their own and records the national laboratory its measurements are traceable to
<xref target="ICC-REGISTRY"/>. Reference data for a widely used color target, published by
the maker of that target, states the measurement condition and the filter and
names neither an illuminant nor an observer anywhere in the file. The second is
not usable as reference data without information from outside it, and a schema
is a place to put that information.</t>
          <t>An identifier of a color space is also an identifier of an edition of it. The
reference values for that same color target were revised, and for the white
patch alone the lightness moved by more than one unit and the yellow-blue
coordinate by nearly two, under an unchanged product name. A schema naming the
space but not the edition describes two different sets of numbers.</t>
        </section>
        <section anchor="color-spaces-example">
          <name>Example</name>
          <t>A characterization dataset pairs the device values that were sent to a press
with the color that was measured off the printed result. The two are in
different spaces, which is why the keyword is an array, and only one of them is
a color space in the colorimetric sense at all; the other is a set of device
control values whose meaning is precisely the measurement it is paired with.</t>
          <sourcecode type="json"><![CDATA[
========== NOTE: '\' line wrapping per RFC 8792 ===========

{
  "name": "CharacterizationPatch",
  "type": "object",
  "colorSpaces": [
    {
      "reference":
      "https://registry.color.org/cmyk-registry/fogra51",
      "kind": "icc-registry",
      "channels": ["c", "m", "y", "k"]
    },
    {
      "reference": "https://cie.co.at/publications/\
          colorimetry-part-4-cie-1976-lab-colour-space-1",
      "kind": "cie",
      "channels": ["lStar", "aStar", "bStar"],
      "illuminant": "D50",
      "observer": "cie-1931-2"
    }
  ],
  "properties": {
    "sampleId": { "type": "int32" },
    "c": { "type": "double", "unit": "%" },
    "m": { "type": "double", "unit": "%" },
    "y": { "type": "double", "unit": "%" },
    "k": { "type": "double", "unit": "%" },
    "lStar": { "type": "double" },
    "aStar": { "type": "double" },
    "bStar": { "type": "double" }
  },
  "required": [
    "sampleId", "c", "m", "y", "k", "lStar", "aStar", "bStar"
  ],
  "additionalProperties": false
}
]]></sourcecode>
          <t>The instance below is one patch of that dataset, the solid of the third ink.</t>
          <sourcecode type="json"><![CDATA[
{
  "sampleId": 649,
  "c": 0.0,
  "m": 0.0,
  "y": 100.0,
  "k": 0.0,
  "lStar": 88.94,
  "aStar": -4.04,
  "bStar": 92.37
}
]]></sourcecode>
          <t>The three measured values are a position in a space that is undefined until the
illuminant and the observer are known, and the file the numbers came from is one
of the ones that says so. The annotation carries what that file carries, in a
place a processor can read.</t>
        </section>
      </section>
    </section>
    <section anchor="signal-channel-annotations">
      <name>Signal Channel Annotations</name>
      <t>The keywords of this section resolve components onto the channels of a named
space, as <xref target="colorimetric-reference-annotations"/> does for color. A signal is
a bundle of channel numbers that means nothing until something states which
channel is which, what the numbers stand relative to, and how they are encoded.
Color carries that in <tt>colorSpaces</tt>; audio and multiband imaging carry it here.</t>
      <section anchor="audio-channels">
        <name>The <tt>audioChannels</tt> Keyword</name>
        <t>The <tt>audioChannels</tt> keyword identifies the channel layout in which audio sample
values held in properties of an object or tuple are to be interpreted, the level
the samples are relative to, and the encoding they carry.</t>
        <t>An audio sample is a measurement of a signal, and a set of samples is not sound
until something states which loudspeaker or which role each channel drives, what
the numbers stand relative to, and whether they are amplitudes or a companded
encoding of them. A bare array carries none of that, and the conventions that
carry it differ between formats.</t>
        <t>When present, <tt>audioChannels</tt> <bcp14>MUST</bcp14> be a non-empty array. Each element <bcp14>MUST</bcp14> be an
object with a <bcp14>REQUIRED</bcp14> <tt>reference</tt>, a <bcp14>REQUIRED</bcp14> <tt>kind</tt>, a <bcp14>REQUIRED</bcp14> <tt>channels</tt>, an
<bcp14>OPTIONAL</bcp14> <tt>levelReference</tt>, and an <bcp14>OPTIONAL</bcp14> <tt>encoding</tt>, and no other members. The
keyword is an array because one record may carry more than one channel group, as
a programme does when a commentary track accompanies a music-and-effects mix.</t>
        <section anchor="audio-channels-reference-and-kind">
          <name>The <tt>reference</tt> and <tt>kind</tt> Properties</name>
          <t><tt>reference</tt> <bcp14>MUST</bcp14> identify one channel layout whose definition establishes an
ordered set of channels, each with a loudspeaker position or a role. Where
<tt>kind</tt> is <tt>type</tt> it <bcp14>MUST</bcp14> be a type reference <tt>{ "$ref": &lt;JSON Pointer&gt; }</tt>
            <xref target="JSTRUCT-CORE"/> to a shareable type definition, and otherwise it <bcp14>MUST</bcp14> be an
absolute URI <xref target="RFC3986"/>.
<tt>kind</tt> classifies which definition model the reference identifies. It is an open
enumeration; the following values are defined here:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Kind</th>
                <th align="left">Referenced definition</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>itu</tt></td>
                <td align="left">A Recommendation of the International Telecommunication Union, such as the loudspeaker configurations of <xref target="ITU-BS2051"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>type</tt></td>
                <td align="left">A meta-type in the annotated schema, as <xref target="meta-types"/> describes.</td>
              </tr>
            </tbody>
          </table>
          <t>A layout recommendation such as <xref target="ITU-BS2051"/> defines several configurations,
and a bare reference to it names the recommendation rather than one of them; a
schema that must pin one configuration deep-links to it or carries it as a
<tt>type</tt>. Where the recommendation mints no per-configuration URI, the deep link is
a fragment that names the configuration in the recommendation's own notation, as
<tt>#0+5+0</tt> names its five-loudspeaker system with a low-frequency-effects channel;
the fragment identifies the configuration whether or not the recommendation
serves it. A processor is not required to dereference the URI. This document does
not define a resolution protocol, URI layout, storage model, or definition
serialization.</t>
        </section>
        <section anchor="audio-channels-channels">
          <name>The <tt>channels</tt> Property</name>
          <t><tt>channels</tt> <bcp14>MUST</bcp14> be a non-empty array of names of direct properties of the
annotated object or tuple, all distinct, mapped by position onto the channels of
the layout in the order the identified definition declares them. The number of
channels supplied <bcp14>MUST</bcp14> equal the number the identified layout defines. As with
<tt>coordinates</tt> and the channels of <tt>colorSpaces</tt>, the ordering is an assertion by
the schema author and is never inferred from property order, property names, or
position in a <tt>tuple</tt>. A low-frequency-effects channel is one of the channels,
in the position the layout assigns it, and is not inferred from a property name.
Either every name is that of a property of numeric type, or the array holds
exactly one name, that of a property whose type is <tt>array</tt> or <tt>tuple</tt> and whose
elements are of numeric type, in which case the elements of that property supply
the channels in order.</t>
        </section>
        <section anchor="audio-level-reference">
          <name>The <tt>levelReference</tt> Property</name>
          <t><tt>levelReference</tt>, when present, states what the sample amplitudes are relative
to. Its values, their meanings, and its openness are those of the
<tt>levelReference</tt> of <tt>measurementConditioning</tt> (<xref target="level-reference"/>), which
defines them. Under <tt>fullScale</tt> the numeric range of the samples is stated by
the property carrying them and not by this value.</t>
          <t>The default differs from that of <tt>measurementConditioning</tt>. Here, absence means
<tt>fullScale</tt>, because digital audio samples are referred to full scale unless
something says otherwise. Under <tt>measurementConditioning</tt>, absence means that no
level reference is stated, because a conditioned measurement has no comparable
default.</t>
          <t>Programme loudness is not a
per-sample reference: it is an integrated, gated, frequency-weighted measure of
a whole programme, defined by <xref target="ITU-BS1770"/> and given a target by
<xref target="EBU-R128"/>, and a schema that carries it carries it as its own annotated
value, not as the level reference of the channels.</t>
        </section>
        <section anchor="audio-channels-encoding">
          <name>The <tt>encoding</tt> Property</name>
          <t><tt>encoding</tt>, when present, states how the stored numbers stand to amplitude. Its
value <bcp14>MUST</bcp14> be one of the values below or an absolute URI identifying another
encoding.</t>
          <table>
            <thead>
              <tr>
                <th align="left">Value</th>
                <th align="left">Meaning</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>linear</tt></td>
                <td align="left">The numbers are proportional to amplitude, and full scale is the range the annotated member's declared type permits.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>float</tt></td>
                <td align="left">The numbers are proportional to amplitude and full scale is unit magnitude, so a sample of <tt>1.0</tt> is at full scale. A magnitude greater than one is legal and is a level above full scale.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>aLaw</tt></td>
                <td align="left">Each channel value is the eight-bit A-law code word that <xref target="ITU-G711"/> defines.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>muLaw</tt></td>
                <td align="left">Each channel value is the eight-bit mu-law code word that <xref target="ITU-G711"/> defines.</td>
              </tr>
            </tbody>
          </table>
          <t>Where absent, the encoding is <tt>linear</tt>.</t>
          <t>The division between <tt>linear</tt> and <tt>float</tt> is the scale, not the storage type. A
member of floating-point type whose samples run to the range of an integer
quantization is <tt>linear</tt>; a member whose samples are normalized to unit
magnitude is <tt>float</tt>, whatever its declared type. The distinction matters
because every value validates under either and only one of them makes a
decibel level or a sum of channels come out right, and because a <tt>float</tt>
member may legitimately carry a magnitude greater than one that a reader
must not treat as an error.</t>
          <t>Under <tt>aLaw</tt> or <tt>muLaw</tt> each channel value is
an integer from zero to two hundred and fifty-five, and a
reader restores amplitude by the inverse companding before any arithmetic.</t>
          <t>The enumeration is open because a sample encoding is a definition maintained
elsewhere, as G.711 companding is. A value that is a URI <bcp14>SHOULD</bcp14> identify a
definition of the encoding. A processor that does not know a value <bcp14>MUST</bcp14>
preserve it, <bcp14>MUST NOT</bcp14> reject the schema for carrying it, and <bcp14>MUST NOT</bcp14> assume
that the numbers are proportional to amplitude; the check is indeterminate
rather than incorrect. A compressed bitstream is not a set of channel members
and is outside this keyword whatever its encoding is called.</t>
          <t>Object-based and scene-based audio, in which a sample is not one loudspeaker,
are not channel layouts in this sense; they are described by the Audio
Definition Model <xref target="ITU-BS2076"/> and are outside this keyword. The time axis of
audio, the sample rate, is a regular temporal cadence and is carried by
<tt>temporalReferenceSystem</tt> and <tt>cadence</tt> (<xref target="cadence"/>), not here.</t>
        </section>
        <section anchor="audio-channels-example">
          <name>Example</name>
          <t>The record below is one multichannel sample frame of a five-channel-with-LFE
programme, whose layout is the 0+5+0 system of <xref target="ITU-BS2051"/>. The six property
names are the schema author's; the order of <tt>channels</tt> is what binds them to the
layout.</t>
          <sourcecode type="json"><![CDATA[
{
  "name": "SurroundSampleFrame",
  "type": "object",
  "audioChannels": [
    {
      "reference": "https://www.itu.int/rec/R-REC-BS.2051/en#0+5+0",
      "kind": "itu",
      "channels": ["l", "r", "c", "lfe", "ls", "rs"],
      "levelReference": "fullScale",
      "encoding": "linear"
    }
  ],
  "properties": {
    "frameIndex": { "type": "int64" },
    "l":   { "type": "double" },
    "r":   { "type": "double" },
    "c":   { "type": "double" },
    "lfe": { "type": "double" },
    "ls":  { "type": "double" },
    "rs":  { "type": "double" }
  },
  "required": ["frameIndex", "l", "r", "c", "lfe", "ls", "rs"],
  "additionalProperties": false
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="spectral-bands">
        <name>The <tt>spectralBands</tt> Keyword</name>
        <t>The <tt>spectralBands</tt> keyword identifies the spectral bands onto which the
components of a multiband value held in properties of an object or tuple are
resolved, in the order a named sensor or band set declares them.</t>
        <t>A multiband pixel is a row of numbers, one per band, and it means nothing until
something states which wavelengths each band covers and what physical quantity
the number is. The bands of one sensor are not the bands of another even where
they are given the same colour name, and a raw count is not a radiance until the
sensor's calibration is applied.</t>
        <t>When present, <tt>spectralBands</tt> <bcp14>MUST</bcp14> be a non-empty array. Each element <bcp14>MUST</bcp14> be an
object with a <bcp14>REQUIRED</bcp14> <tt>reference</tt>, a <bcp14>REQUIRED</bcp14> <tt>kind</tt>, a <bcp14>REQUIRED</bcp14> <tt>bands</tt>, and an
<bcp14>OPTIONAL</bcp14> <tt>calibration</tt>, and no other members. The keyword is an array because one
record may resolve its components onto more than one band set, as a fused product
does when it carries bands from two instruments.</t>
        <section anchor="spectral-bands-reference-and-kind">
          <name>The <tt>reference</tt> and <tt>kind</tt> Properties</name>
          <t><tt>reference</tt> <bcp14>MUST</bcp14> identify one band set whose definition establishes an ordered
set of bands, each with a wavelength range. Where <tt>kind</tt> is <tt>type</tt> it <bcp14>MUST</bcp14> be a
type reference <tt>{ "$ref": &lt;JSON Pointer&gt; }</tt> <xref target="JSTRUCT-CORE"/> to a shareable type
definition, and
otherwise it <bcp14>MUST</bcp14> be an absolute URI <xref target="RFC3986"/>. <tt>kind</tt> classifies which
definition model the reference identifies. It is an open enumeration; the
following values are defined here:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Kind</th>
                <th align="left">Referenced definition</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>sensor</tt></td>
                <td align="left">A band set published by the operator of an instrument, such as the Operational Land Imager bands of <xref target="USGS-LANDSAT"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>type</tt></td>
                <td align="left">A meta-type in the annotated schema, as <xref target="meta-types"/> describes.</td>
              </tr>
            </tbody>
          </table>
          <t>A publication that lists the band sets of several instruments names one of them
by a deep link, a fragment naming the instrument where the publisher mints no
per-instrument URI, as <tt>#landsat-8-9-oli</tt> names the Operational Land Imager; the
fragment identifies the band set whether or not the publication serves it. A
processor is not required to dereference the URI. This document does not
define a resolution protocol, URI layout, storage model, or definition
serialization.</t>
        </section>
        <section anchor="spectral-bands-bands">
          <name>The <tt>bands</tt> Property</name>
          <t><tt>bands</tt> <bcp14>MUST</bcp14> be a non-empty array of names of direct properties of the annotated
object or tuple, all distinct, mapped by position onto the bands of the set in
the order the identified definition declares them. The number of bands supplied
<bcp14>MUST</bcp14> equal the number the identified set defines. As with the channels of
<tt>colorSpaces</tt>, the ordering is an assertion by the schema author and is never
inferred from property order, property names, or position in a <tt>tuple</tt>. Either
every name is that of a property of numeric type, or the array holds exactly one
name, that of a property whose type is <tt>array</tt> or <tt>tuple</tt> and whose elements are
of numeric type, in which case the elements of that property supply the bands in
order.</t>
        </section>
        <section anchor="spectral-bands-calibration">
          <name>The <tt>calibration</tt> Property</name>
          <t><tt>calibration</tt>, when present, states what physical quantity each band value is.
It is an open enumeration; the values defined here are:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Value</th>
                <th align="left">Meaning</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>digitalNumber</tt></td>
                <td align="left">The values are quantized, calibrated, scaled digital numbers in the identified product encoding, which become a physical quantity only when the per-band coefficients of the acquisition are applied.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>radiance</tt></td>
                <td align="left">The values are spectral radiance, and their unit is stated by JSON Structure Units <xref target="JSTRUCT-UNITS"/>.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>reflectance</tt></td>
                <td align="left">The values are reflectance, a dimensionless fraction, of the kind the identified product defines, such as top-of-atmosphere planetary reflectance with or without a solar-angle correction; where they are stored scaled, the property states the scale.</td>
              </tr>
            </tbody>
          </table>
          <t>Where absent, the calibration is not established by this annotation and the
identified definition or the unit of the property governs. The rescaling from a
digital number to radiance or reflectance is per-band; for the Landsat imagers
it is a multiplicative and an additive coefficient for each band, delivered in
the product metadata <xref target="USGS-LANDSAT-L1"/>, and a schema that holds digital numbers
holds those coefficients as their own values. A quantity the values defined here
do not name, such as brightness temperature, is carried as an open value.</t>
        </section>
        <section anchor="spectral-bands-example">
          <name>Example</name>
          <t>The record below is one pixel of a nine-band Operational Land Imager scene,
whose bands are those of <xref target="USGS-LANDSAT"/>, carried as reflectance.</t>
          <sourcecode type="json"><![CDATA[
========== NOTE: '\' line wrapping per RFC 8792 ===========

{
  "name": "OliPixel",
  "type": "object",
  "spectralBands": [
    {
      "reference": "https://www.usgs.gov/faqs/\
          what-are-band-designations-landsat-satellites",
      "kind": "sensor",
      "bands": [
        "coastalAerosol", "blue", "green", "red",
        "nir", "swir1", "swir2", "pan", "cirrus"
      ],
      "calibration": "reflectance"
    }
  ],
  "properties": {
    "column": { "type": "int32" },
    "row": { "type": "int32" },
    "coastalAerosol": { "type": "double" },
    "blue": { "type": "double" },
    "green": { "type": "double" },
    "red": { "type": "double" },
    "nir": { "type": "double" },
    "swir1": { "type": "double" },
    "swir2": { "type": "double" },
    "pan": { "type": "double" },
    "cirrus": { "type": "double" }
  },
  "required": [
    "column", "row", "coastalAerosol", "blue", "green", "red",
    "nir", "swir1", "swir2", "pan", "cirrus"
  ],
  "additionalProperties": false
}
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="conformance">
      <name>Conformance</name>
      <section anchor="check-outcomes">
        <name>Check Outcomes</name>
        <t>A check defined by this document has one of three outcomes. It is valid when a
processor evaluated it and it held, invalid when a processor evaluated it and it
did not hold, and indeterminate when a processor did not evaluate it because a
definition it depends on was not resolved.</t>
        <t>A processor <bcp14>MUST</bcp14> report the three outcomes distinctly. It <bcp14>MUST NOT</bcp14> report an
indeterminate check as valid, <bcp14>MUST NOT</bcp14> reject a schema solely because a check
was indeterminate, and <bcp14>MUST NOT</bcp14> act on an annotation as though an indeterminate
check had held.</t>
        <t>A rule whose subject lies within the schema is always evaluable, and a check of
such a rule is never indeterminate. A rule whose subject is an external
definition is indeterminate for as long as that definition is unresolved.</t>
        <t>Which definitions a processor holds is a deployment matter, so two conforming
processors <bcp14>MAY</bcp14> reach different outcomes for one schema. They <bcp14>MUST</bcp14> differ only in
that one returns indeterminate where the other returns valid or invalid. A
processor <bcp14>MUST NOT</bcp14> return valid where a processor holding the definition would
return invalid.</t>
        <t>A profile, a deployment, or an agreement between parties <bcp14>MAY</bcp14> require that named
checks be evaluated rather than left indeterminate. This document requires it of
no check.</t>
      </section>
      <section anchor="schema-conformance">
        <name>Schema Conformance</name>
        <t>A conforming schema selects the versioned extension meta-schema URI. It <bcp14>MAY</bcp14> use
any subset of the annotations defined by this document, including none, and it
<bcp14>MUST NOT</bcp14> be rejected merely because an annotation or annotated property is
absent.</t>
        <t>Every annotation that is present:</t>
        <ul spacing="normal">
          <li>
            <t><bcp14>MUST</bcp14> occur at an attachment point permitted by this document;</t>
          </li>
          <li>
            <t><bcp14>MUST</bcp14> have the defined value shape and use an allowed <tt>kind</tt>, <tt>semanticRole</tt>,
or <tt>referenceRole</tt> value;</t>
          </li>
          <li>
            <t><bcp14>MUST NOT</bcp14> repeat, within one containing type, a <tt>semanticRole</tt> that
<xref target="semantic-role"/> states identifies one position;</t>
          </li>
          <li>
            <t><bcp14>MUST</bcp14> be compatible with the Core type of the annotated schema; and</t>
          </li>
          <li>
            <t><bcp14>MUST</bcp14> satisfy the applicable rules of JSON Structure Units <xref target="JSTRUCT-UNITS"/>.</t>
          </li>
        </ul>
        <t>Validation <bcp14>MUST</bcp14> reject malformed annotations and invalid identifiers or values
within annotations, and those checks are never indeterminate. External
resolution, domain-of-validity, mapping-review, and transformation checks are
indeterminate while the definition they depend on is unresolved, and
<xref target="check-outcomes"/> states how a processor reports them.</t>
      </section>
      <section anchor="processing-conformance">
        <name>Processing Conformance</name>
        <t>A conforming processor <bcp14>MUST</bcp14> preserve declarations, externally resolved facts,
and inferences separately. It <bcp14>MUST</bcp14> preserve the differences among an
observation act, its result, an observable-property identity, a definition URI,
an identifiable temporal object, and a temporal-position
value.</t>
        <t>A processor <bcp14>MUST NOT</bcp14> infer:</t>
        <ul spacing="normal">
          <li>
            <t>any <tt>semanticRole</tt>, observed-property annotation, concept binding, derivation,
statistic, or cadence from a name, label, description, type, unit, position,
or sample;</t>
          </li>
          <li>
            <t>a <tt>referenceRole</tt>, or the member of a meta-type that a mapping property names,
from a member name;</t>
          </li>
          <li>
            <t>graph structure, node identity, statements, or entailment from a concept
binding, or a term of one vocabulary from a term of another;</t>
          </li>
          <li>
            <t>identity or semantic equivalence from labels, <tt>closeMatch</tt>, hierarchy,
relatedness, or QuantityKind classification;</t>
          </li>
          <li>
            <t>a feature, procedure, or identity absent from the corresponding
<tt>semanticRole</tt>, or a proximate feature from an ultimate feature or conversely;</t>
          </li>
          <li>
            <t>a temporal reference regime from a non-Core or ambiguous encoding;</t>
          </li>
          <li>
            <t>metric intervals from ordinal positions or an <tt>untilNext</tt> end from cadence;</t>
          </li>
          <li>
            <t>complete coverage from <tt>interval</tt> or <tt>accumulation</tt>;</t>
          </li>
          <li>
            <t>that absent quality means acceptable quality;</t>
          </li>
          <li>
            <t>a coordinate, vector-frame, or linear reference binding from names or samples;</t>
          </li>
          <li>
            <t>the direction, sense, or component order of a frame transformation, or the
variance of a vector or tensor quantity, from member names, from the values
themselves, or from the frames the transformation runs between;</t>
          </li>
          <li>
            <t>a color space, an illuminant, an observer, a transfer function, or an alpha
mode from channel names, from the range the channel values fall in, or from
the number of channels present;</t>
          </li>
          <li>
            <t>an audio channel layout, level reference, or encoding; a spectral band set or
calibration; a code-list binding; or a measurement weighting, time weighting,
or level reference, from names, samples, units, or the number of members
present;</t>
          </li>
          <li>
            <t>that members sharing a name prefix, a unit, or an observed property are the
components of one vector quantity;</t>
          </li>
          <li>
            <t>an observation entity, or any class, identity, or relationship of an
observation model, from the roles a schema declares;</t>
          </li>
          <li>
            <t>an instruction to perform, repeat, or recompute an operation from a keyword
that names one; or</t>
          </li>
          <li>
            <t>permission to aggregate, convert, transform, reject outliers, or infer
causality.</t>
          </li>
        </ul>
        <t>A processor that selects one temporal position as the event-time axis of a
record, for windowing, ordering, or watermarking, <bcp14>SHOULD</bcp14> select the member
annotated <tt>phenomenonTime</tt>, or, where the record bounds the period at both ends,
the member annotated <tt>phenomenonTimeStart</tt>. It <bcp14>SHOULD NOT</bcp14> select a member
annotated <tt>resultTime</tt>, <tt>ingestionTime</tt>, <tt>scheduledTime</tt>, or <tt>actualTime</tt> for
that purpose. Those roles state the handling of the record and not the time of
the phenomenon, and a window built on them reports the behaviour of the pipeline
rather than of the world.</t>
        <t>Where a processor needs both axes and its execution model admits only one, the
phenomenon-time member is the recommended axis, and the operational position is
carried as an ordinary value. A processor that departs from this <bcp14>SHOULD</bcp14> record
the position it selected, so that a reader of the output is not left to infer
which axis produced it.</t>
        <t>A record annotating no phenomenon-time role supplies no phenomenon-time axis. A
processor <bcp14>MUST NOT</bcp14> construct one from a member name, and <bcp14>MUST NOT</bcp14> read an
operational position as one. It <bcp14>MAY</bcp14> still window on an operational position,
which states when the record was handled.</t>
        <t>A processor <bcp14>MAY</bcp14> ignore this extension. A processor claiming support <bcp14>MUST</bcp14> treat
unresolved identifiers, domains, mappings, or conversions
as indeterminate rather than compatible.</t>
      </section>
      <section anchor="inheritance-and-imports">
        <name>Inheritance and Imports</name>
        <t>An annotation on an inherited property or type remains part of the effective
schema. Core inheritance does not define a local override of an inherited
property. Cross-property rules <bcp14>MUST</bcp14> be checked against the effective inherited
type.</t>
        <t>JSON Structure Import copies complete definitions, including annotations
<xref target="JSTRUCT-IMPORT"/>. Shadowing replaces the complete imported definition; it does
not merge individual annotations.</t>
        <t>Member names stated by an annotation are resolved as <xref target="annotation-model"/>
requires: against the effective definition of the annotated type, and against
declared property names rather than serialized ones.</t>
        <t>An annotation belongs to the definition it is written on, so annotations are
part of what a type means rather than of how one schema uses it. A schema that
needs different annotations for the same structure shadows the definition
and restates them, or defines a distinct type. This document defines no overlay
by which a schema attaches annotations to a definition it does not own.</t>
        <t>Where a type would inherit the same keyword from more than one base, the derived
definition <bcp14>MUST</bcp14> state that keyword itself, and the stated value is the effective
one. A definition that leaves two inherited values of one keyword in force is
not conforming, and a processor <bcp14>MUST NOT</bcp14> select between them.</t>
      </section>
    </section>
    <section anchor="extension-meta-schema">
      <name>Extension Meta-Schema</name>
      <t>The extension meta-schema is published at:</t>
      <t><tt>https://json-structure.org/meta/semantic-annotations/v0/#</tt></t>
      <t>It offers one feature, <tt>JSONStructureSemanticAnnotations</tt>, whose add-ins contribute
the keywords defined here to the Core property, object, tuple, array, set, map,
and choice definitions. A schema activates this specification by selecting that
URI and naming the feature in <tt>$uses</tt>. The meta-schema enables JSON Structure
Units, Import, Conditional Composition, and Validation. The annotations carry no
profile or version member; the versioned meta-schema URI is the version
identifier.</t>
      <t>The meta-schema validates the shape of each annotation defined here: the
presence and form of its members, the enumerations that <xref target="annotation-model"/>
states are closed, and the form required of a <tt>reference</tt> for the accompanying
<tt>kind</tt>. It does not express a rule
whose subject lies outside the annotated node. Such rules, including every rule
about a property that an annotation names and every rule about a definition that
a <tt>reference</tt> identifies, are checked against the effective schema rather than by
the meta-schema alone. No companion reference type or import is required.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Incorrect or malicious catalog entries, labels, mappings,
feature identities, or procedure identities can cause results from different
subjects, acts, or concepts to be combined. Implementations <bcp14>MUST</bcp14> preserve
catalog-URI identity, <bcp14>MUST NOT</bcp14> infer equivalence from discovery labels, and <bcp14>MUST NOT</bcp14> treat an
unreviewed or non-exact mapping as approval. Catalog write access and mapping
review therefore require authentication, authorization, audit, and provenance.
Deprecation alternatives are migration advice, not automatic substitutions.</t>
      <t>No annotation is checked against the data it describes. Validation confirms that
a named member exists, that a closed enumeration holds, and that components and
units agree in number and kind; it cannot confirm that a <tt>reference</tt> still
identifies the definition the values are actually expressed against. An
annotation is therefore a claim that can be true when written and false later
without anything failing: an instrument is recalibrated, a station is resurveyed
onto a new datum, a producer reorders channels or changes a rate, a code list is
superseded. The schema continues to validate and the annotation continues to
read as authoritative.</t>
      <t>Stale annotation is for that reason more dangerous than absent annotation. The
prohibitions in <xref target="processing-conformance"/> guard the absent case, where a
processor is required to decline rather than guess; they do not guard the stale
case, where a processor holds an explicit statement, has no ground to doubt it,
and proceeds with a combination it would otherwise have refused. A schema author
<bcp14>MUST</bcp14> revise the annotations of a schema in the same change that alters what the
schema describes, and a consumer <bcp14>MUST NOT</bcp14> treat an annotation as evidence more
current than the schema revision carrying it.</t>
      <t>The same property makes annotations a target. Modifying a schema changes what
data means without touching the data, without failing validation, and without
any signal to a consumer: a substituted CRS reference relocates every
coordinate, an <tt>alphaMode</tt> moved between <tt>straight</tt> and <tt>premultiplied</tt> alters
every composite, an altered <tt>levelReference</tt> shifts every level by an amount
large enough to matter and plausible enough to pass review. Schema distribution
therefore needs the integrity protection the data needs, and a change to an
annotation warrants the review a change to a type warrants.</t>
      <t>Incorrect temporal roles, boundaries, reference systems, transformations, or
domains of validity can reorder positions or create false coverage. Cadence <bcp14>MUST
NOT</bcp14> synthesize a missing <tt>untilNext</tt> successor. Incorrect CRS, axis order, LRS,
measure origin, unit, or direction can place a feature incorrectly. Processors
<bcp14>MUST NOT</bcp14> perform temporal, coordinate, linear, or unit transformations without
validating authoritative definitions.</t>
      <t>Remote registries, schemas, vocabularies, procedures, mapping targets, and
reference systems are untrusted input. Implementations <bcp14>SHOULD</bcp14> use HTTPS where
available, bounded retrieval, caching with version awareness, allow-lists where
appropriate, cycle detection, and explicit trust decisions.</t>
      <section anchor="privacy-considerations">
        <name>Privacy Considerations</name>
        <t>Catalog labels and mappings, procedure and feature identities, locations,
times, statuses, and quality can reveal sensitive operations or subjects. Hidden
labels are not an access-control mechanism. This specification grants no access and
does not replace minimization, privacy review, retention, or export controls.</t>
        <t>Dereferencing a <tt>reference</tt> can disclose processor interest to the party that
serves the definition.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC3339">
          <front>
            <title>Date and Time on the Internet: Timestamps</title>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <date month="July" year="2002"/>
            <abstract>
              <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3339"/>
          <seriesInfo name="DOI" value="10.17487/RFC3339"/>
        </reference>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="JSTRUCT-CORE">
          <front>
            <title>JSON Structure: Core</title>
            <author fullname="Clemens Vasters" initials="C." surname="Vasters">
              <organization>Microsoft Corporation</organization>
            </author>
            <date day="8" month="June" year="2026"/>
            <abstract>
              <t>   This document specifies JSON Structure, a data structure definition
   language that enforces strict typing, modularity, and determinism.
   JSON Structure describes JSON-encoded data such that mapping to and
   from programming languages and databases and other data formats is
   straightforward.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-vasters-json-structure-core-04"/>
        </reference>
        <reference anchor="JSTRUCT-UNITS">
          <front>
            <title>JSON Structure: Symbols, Scientific Units, and Currencies</title>
            <author fullname="Clemens Vasters" initials="C." surname="Vasters">
              <organization>Microsoft Corporation</organization>
            </author>
            <date day="8" month="June" year="2026"/>
            <abstract>
              <t>   This document specifies "JSON Structure Symbols, Scientific Units,
   and Currencies", an extension to JSON Structure Core.  This
   specification defines a set of annotation keywords for associating
   scientific unit and currency metadata and constraints, primarily for
   use with numeric values.

   This extension provides a mechanism for schema authors to explicitly
   declare the unit associated with numeric data, thereby enabling
   precise mapping between schema representations and external data
   systems.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-vasters-json-structure-units-03"/>
        </reference>
        <reference anchor="JSTRUCT-VALIDATION">
          <front>
            <title>JSON Structure: Validation Extensions</title>
            <author fullname="Clemens Vasters" initials="C." surname="Vasters">
              <organization>Microsoft Corporation</organization>
            </author>
            <date day="8" month="June" year="2026"/>
            <abstract>
              <t>   The JSON Structure Validation extension provides schema authors with
   additional means to constrain instance data.  These keywords are
   applied in conjunction with the constructs defined in JSON Structure
   Core.  The keywords defined herein include numeric, string, array,
   and object validation keywords as well as conditional validations.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-vasters-json-structure-validation-03"/>
        </reference>
        <reference anchor="ISO19108" target="https://www.iso.org/standard/26013.html">
          <front>
            <title>ISO 19108:2002 Geographic information - Temporal schema</title>
            <author>
              <organization>International Organization for Standardization</organization>
            </author>
            <date year="2002"/>
          </front>
        </reference>
        <reference anchor="ISO19111" target="https://www.iso.org/standard/74039.html">
          <front>
            <title>ISO 19111:2019 Geographic information - Referencing by coordinates</title>
            <author>
              <organization>International Organization for Standardization</organization>
            </author>
            <date year="2019"/>
          </front>
        </reference>
        <reference anchor="ISO19148" target="https://www.iso.org/standard/75147.html">
          <front>
            <title>ISO 19148:2021 Geographic information - Linear referencing</title>
            <author>
              <organization>International Organization for Standardization</organization>
            </author>
            <date year="2021"/>
          </front>
        </reference>
        <reference anchor="OGC-NAMES" target="https://docs.ogc.org/pol/09-048r6.html">
          <front>
            <title>OGC Name Type Specification - definitions - part 1 - basic name</title>
            <author>
              <organization>Open Geospatial Consortium</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8792">
          <front>
            <title>Handling Long Lines in Content of Internet-Drafts and RFCs</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="E. Auerswald" initials="E." surname="Auerswald"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>This document defines two strategies for handling long lines in width-bounded text content. One strategy, called the "single backslash" strategy, is based on the historical use of a single backslash ('\') character to indicate where line-folding has occurred, with the continuation occurring with the first character that is not a space character (' ') on the next line. The second strategy, called the "double backslash" strategy, extends the first strategy by adding a second backslash character to identify where the continuation begins and is thereby able to handle cases not supported by the first strategy. Both strategies use a self-describing header enabling automated reconstitution of the original content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8792"/>
          <seriesInfo name="DOI" value="10.17487/RFC8792"/>
        </reference>
        <reference anchor="ISO19156" target="https://www.iso.org/standard/82463.html">
          <front>
            <title>ISO 19156:2023 Geographic information - Observations, measurements and samples</title>
            <author>
              <organization>International Organization for Standardization</organization>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="JSTRUCT-RELATIONS">
          <front>
            <title>JSON Structure: Relations</title>
            <author fullname="Clemens Vasters" initials="C." surname="Vasters">
              <organization>Microsoft Corporation</organization>
            </author>
            <date day="8" month="June" year="2026"/>
            <abstract>
              <t>   This document is an extension to JSON Structure Core.  It defines
   keywords for modeling relationships and associations between objects
   in JSON Structure schemas, including the identity, relations,
   targettype, cardinality, scope, and qualifiertype keywords.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-vasters-json-structure-relations-00"/>
        </reference>
        <reference anchor="JSTRUCT-IMPORT">
          <front>
            <title>JSON Structure: Import</title>
            <author fullname="Clemens Vasters" initials="C." surname="Vasters">
              <organization>Microsoft Corporation</organization>
            </author>
            <date day="8" month="June" year="2026"/>
            <abstract>
              <t>   This document specifies the $import and $importdefs keywords as
   extensions to JSON Structure Core.  These keywords allow a schema to
   import definitions from external schema documents.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-vasters-json-structure-import-03"/>
        </reference>
        <reference anchor="JSTRUCT-ALTNAMES">
          <front>
            <title>JSON Structure: Alternate Names and Descriptions</title>
            <author fullname="Clemens Vasters" initials="C." surname="Vasters">
              <organization>Microsoft Corporation</organization>
            </author>
            <date day="8" month="June" year="2026"/>
            <abstract>
              <t>   This document is an extension to JSON Structure Core.  It defines
   three annotation keywords, altnames, altenums, and descriptions,
   which allow schema authors to provide alternative identifiers,
   display names, and multi-variant descriptions for types, properties,
   and enumeration values.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-vasters-json-structure-alternate-names-03"/>
        </reference>
        <reference anchor="OGC-TOPIC2" target="https://docs.ogc.org/as/18-005r4/18-005r4.html">
          <front>
            <title>OGC Abstract Specification Topic 2: Referencing by coordinates</title>
            <author>
              <organization>Open Geospatial Consortium</organization>
            </author>
            <date year="2019"/>
          </front>
        </reference>
        <reference anchor="OGC-TOPIC25" target="https://docs.ogc.org/as/23-049/23-049.html">
          <front>
            <title>OGC Abstract Specification Topic 25: Abstract Conceptual Model for Time</title>
            <author>
              <organization>Open Geospatial Consortium</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="QUDT" target="https://www.qudt.org/">
          <front>
            <title>QUDT Ontologies</title>
            <author>
              <organization>QUDT.org</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="CF-STANDARD-NAMES" target="https://cfconventions.org/Data/cf-standard-names/current/build/cf-standard-name-table.html">
          <front>
            <title>CF Standard Name Table</title>
            <author>
              <organization>CF Conventions</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SOSA-SSN" target="https://www.w3.org/TR/vocab-ssn/">
          <front>
            <title>Semantic Sensor Network Ontology</title>
            <author>
              <organization>World Wide Web Consortium</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="PROV-O" target="https://www.w3.org/TR/prov-o/">
          <front>
            <title>PROV-O: The PROV Ontology</title>
            <author>
              <organization>World Wide Web Consortium</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RDF-CONCEPTS" target="https://www.w3.org/TR/rdf11-concepts/">
          <front>
            <title>RDF 1.1 Concepts and Abstract Syntax</title>
            <author>
              <organization>World Wide Web Consortium</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RDF-SCHEMA" target="https://www.w3.org/TR/rdf-schema/">
          <front>
            <title>RDF Schema 1.1</title>
            <author>
              <organization>World Wide Web Consortium</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="OWL2" target="https://www.w3.org/TR/owl2-overview/">
          <front>
            <title>OWL 2 Web Ontology Language Document Overview</title>
            <author>
              <organization>World Wide Web Consortium</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SKOS" target="https://www.w3.org/TR/skos-reference/">
          <front>
            <title>SKOS Simple Knowledge Organization System Reference</title>
            <author>
              <organization>World Wide Web Consortium</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="DCTERMS" target="https://www.dublincore.org/specifications/dublin-core/dcmi-terms/">
          <front>
            <title>DCMI Metadata Terms</title>
            <author>
              <organization>Dublin Core Metadata Initiative</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="EPSG" target="https://epsg.org/">
          <front>
            <title>EPSG Geodetic Parameter Dataset</title>
            <author>
              <organization>International Association of Oil and Gas Producers</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="WSDOT-LRS" target="https://data.wsdot.wa.gov/arcgis/rest/services/Shared/LRSData/FeatureServer/9">
          <front>
            <title>State Route Linear Referencing System</title>
            <author>
              <organization>Washington State Department of Transportation</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="FHWA-ARNOLD" target="https://www.fhwa.dot.gov/policyinformation/hpms/arnold.cfm">
          <front>
            <title>All Road Network of Linear Referenced Data</title>
            <author>
              <organization>Federal Highway Administration</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="FHWA-HPMS" target="https://www.fhwa.dot.gov/policyinformation/hpms/fieldmanual/">
          <front>
            <title>Highway Performance Monitoring System Field Manual</title>
            <author>
              <organization>Federal Highway Administration</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SPASE" target="https://spase-group.org/data/model/spase-latest/index.html">
          <front>
            <title>Space Physics Archive Search and Extract (SPASE) Data Model, Version 2.7.2</title>
            <author>
              <organization>SPASE Consortium</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="SSC-COORDS" target="https://sscweb.gsfc.nasa.gov/users_guide/Appendix_C.html">
          <front>
            <title>Satellite Situation Center Users Guide, Appendix C: Description of Selected Coordinate Systems</title>
            <author>
              <organization>NASA Goddard Space Flight Center</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="GCMT-NDK" target="https://www.ldeo.columbia.edu/~gcmt/projects/CMT/catalog/allorder.ndk_explained">
          <front>
            <title>Explanation of the ndk file format used for the Global Centroid-Moment-Tensor catalog</title>
            <author>
              <organization>Global CMT Project</organization>
            </author>
            <date year="2006"/>
          </front>
        </reference>
        <reference anchor="CCSDS-ADM" target="https://public.ccsds.org/Pubs/504x0b2.pdf">
          <front>
            <title>Attitude Data Messages, Recommended Standard, CCSDS 504.0-B-2, Blue Book</title>
            <author>
              <organization>Consultative Committee for Space Data Systems</organization>
            </author>
            <date year="2024" month="January"/>
          </front>
        </reference>
        <reference anchor="CCSDS-ADM1" target="https://public.ccsds.org/Pubs/504x0b1c1s.pdf">
          <front>
            <title>Attitude Data Messages, Recommended Standard, CCSDS 504.0-B-1, Blue Book, including Technical Corrigendum 1 (July 2015)</title>
            <author>
              <organization>Consultative Committee for Space Data Systems</organization>
            </author>
            <date year="2008" month="May"/>
          </front>
        </reference>
        <reference anchor="NAIF-QUAT" target="https://naif.jpl.nasa.gov/pub/naif/misc/Quaternion_White_Paper/Quaternions_White_Paper.pdf">
          <front>
            <title>Quaternions White Paper</title>
            <author>
              <organization>NASA Jet Propulsion Laboratory, Navigation and Ancillary Information Facility</organization>
            </author>
            <date year="2003" month="November" day="30"/>
          </front>
        </reference>
        <reference anchor="REP-103" target="https://www.ros.org/reps/rep-0103.html">
          <front>
            <title>REP 103: Standard Units of Measure and Coordinate Conventions</title>
            <author initials="T." surname="Foote" fullname="Tully Foote">
              <organization/>
            </author>
            <author initials="M." surname="Purvis" fullname="Mike Purvis">
              <organization/>
            </author>
            <date year="2010" month="October" day="07"/>
          </front>
        </reference>
        <reference anchor="KITTI" target="https://www.cvlibs.net/publications/Geiger2013IJRR.pdf">
          <front>
            <title>Vision meets Robotics: The KITTI Dataset</title>
            <author initials="A." surname="Geiger" fullname="Andreas Geiger">
              <organization/>
            </author>
            <author initials="P." surname="Lenz" fullname="Philip Lenz">
              <organization/>
            </author>
            <author initials="C." surname="Stiller" fullname="Christoph Stiller">
              <organization/>
            </author>
            <author initials="R." surname="Urtasun" fullname="Raquel Urtasun">
              <organization/>
            </author>
            <date year="2013"/>
          </front>
        </reference>
        <reference anchor="ICC-SPEC" target="https://www.color.org/v4spec.xalter">
          <front>
            <title>Image technology colour management - Architecture, profile format, and data structure (ISO 15076-1:2025, ICC.1:2022, profile version 4.4)</title>
            <author>
              <organization>International Color Consortium</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="ICC-REGISTRY" target="https://registry.color.org/">
          <front>
            <title>ICC Characterization Data Registry</title>
            <author>
              <organization>International Color Consortium</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="ITU-H273" target="https://www.itu.int/rec/T-REC-H.273">
          <front>
            <title>Recommendation ITU-T H.273: Coding-independent code points for video signal type identification</title>
            <author>
              <organization>International Telecommunication Union</organization>
            </author>
            <date year="2024" month="July"/>
          </front>
        </reference>
        <reference anchor="ISO11664-4" target="https://cie.co.at/publications/colorimetry-part-4-cie-1976-lab-colour-space-1">
          <front>
            <title>Colorimetry - Part 4: CIE 1976 L*a*b* colour space (ISO/CIE 11664-4:2019)</title>
            <author>
              <organization>International Commission on Illumination</organization>
            </author>
            <date year="2019"/>
          </front>
        </reference>
        <reference anchor="CIE015" target="https://cie.co.at/publications/colorimetry-4th-edition">
          <front>
            <title>CIE 015:2018 Colorimetry, 4th Edition</title>
            <author>
              <organization>International Commission on Illumination</organization>
            </author>
            <date year="2018"/>
          </front>
        </reference>
        <reference anchor="PNG3" target="https://www.w3.org/TR/png-3/">
          <front>
            <title>Portable Network Graphics (PNG) Specification (Third Edition)</title>
            <author>
              <organization>World Wide Web Consortium</organization>
            </author>
            <date year="2025" month="June" day="24"/>
          </front>
        </reference>
        <reference anchor="CSS-COLOR-4" target="https://www.w3.org/TR/css-color-4/">
          <front>
            <title>CSS Color Module Level 4</title>
            <author>
              <organization>World Wide Web Consortium</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="ITU-BS2051" target="https://www.itu.int/rec/R-REC-BS.2051/en">
          <front>
            <title>Recommendation ITU-R BS.2051-3: Advanced sound system for programme production</title>
            <author>
              <organization>International Telecommunication Union</organization>
            </author>
            <date year="2022" month="May"/>
          </front>
        </reference>
        <reference anchor="ITU-BS1770" target="https://www.itu.int/rec/R-REC-BS.1770/en">
          <front>
            <title>Recommendation ITU-R BS.1770-5: Algorithms to measure audio programme loudness and true-peak audio level</title>
            <author>
              <organization>International Telecommunication Union</organization>
            </author>
            <date year="2023" month="November"/>
          </front>
        </reference>
        <reference anchor="EBU-R128" target="https://tech.ebu.ch/publications/r128">
          <front>
            <title>EBU R 128: Loudness normalisation and permitted maximum level of audio signals</title>
            <author>
              <organization>European Broadcasting Union</organization>
            </author>
            <date year="2023" month="November"/>
          </front>
        </reference>
        <reference anchor="ITU-BS2076" target="https://www.itu.int/rec/R-REC-BS.2076/en">
          <front>
            <title>Recommendation ITU-R BS.2076: Audio Definition Model</title>
            <author>
              <organization>International Telecommunication Union</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="ITU-G711" target="https://www.itu.int/rec/T-REC-G.711">
          <front>
            <title>Recommendation ITU-T G.711: Pulse code modulation (PCM) of voice frequencies</title>
            <author>
              <organization>International Telecommunication Union</organization>
            </author>
            <date year="1988" month="November"/>
          </front>
        </reference>
        <reference anchor="USGS-LANDSAT" target="https://www.usgs.gov/faqs/what-are-band-designations-landsat-satellites">
          <front>
            <title>What are the band designations for the Landsat satellites?</title>
            <author>
              <organization>United States Geological Survey</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="USGS-LANDSAT-L1" target="https://www.usgs.gov/landsat-missions/using-usgs-landsat-level-1-data-product">
          <front>
            <title>Using the USGS Landsat Level-1 Data Product</title>
            <author>
              <organization>United States Geological Survey</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="WMO-CODES" target="https://codes.wmo.int/">
          <front>
            <title>WMO Codes Registry (WMO No. 306 Manual on Codes)</title>
            <author>
              <organization>World Meteorological Organization</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IEC61672-1" target="https://webstore.iec.ch/en/publication/5708">
          <front>
            <title>IEC 61672-1:2013 Electroacoustics - Sound level meters - Part 1: Specifications</title>
            <author>
              <organization>International Electrotechnical Commission</organization>
            </author>
            <date year="2013"/>
          </front>
        </reference>
        <reference anchor="ISO1683" target="https://www.iso.org/standard/64648.html">
          <front>
            <title>ISO 1683:2015 Acoustics - Preferred reference values for acoustical and vibratory levels</title>
            <author>
              <organization>International Organization for Standardization</organization>
            </author>
            <date year="2015"/>
          </front>
        </reference>
        <reference anchor="ISO3166" target="https://www.iso.org/iso-3166-country-codes.html">
          <front>
            <title>ISO 3166: Codes for the representation of names of countries and their subdivisions</title>
            <author>
              <organization>International Organization for Standardization</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="ISO4217" target="https://www.iso.org/iso-4217-currency-codes.html">
          <front>
            <title>ISO 4217: Codes for the representation of currencies</title>
            <author>
              <organization>International Organization for Standardization</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="ISO639" target="https://www.iso.org/iso-639-language-codes.html">
          <front>
            <title>ISO 639: Code for individual languages and language groups</title>
            <author>
              <organization>International Organization for Standardization</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IANA-LANGTAGS" target="https://www.iana.org/assignments/language-subtag-registry">
          <front>
            <title>Language Subtag Registry</title>
            <author>
              <organization>Internet Assigned Numbers Authority</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="UNLOCODE" target="https://unece.org/trade/cefact/unlocode-code-list-country-and-territory">
          <front>
            <title>UN/LOCODE: United Nations Code for Trade and Transport Locations</title>
            <author>
              <organization>United Nations Economic Commission for Europe</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="ICAO7910" target="https://store.icao.int/en/location-indicators-doc-7910">
          <front>
            <title>Location Indicators (Doc 7910)</title>
            <author>
              <organization>International Civil Aviation Organization</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="ICAO8643" target="https://www.icao.int/operational-safety/doc-8643-aircraft-type-designators">
          <front>
            <title>Aircraft Type Designators (Doc 8643)</title>
            <author>
              <organization>International Civil Aviation Organization</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IATA-CODES" target="https://www.iata.org/en/publications/directories/code-search/">
          <front>
            <title>Airline and Airport Code Search</title>
            <author>
              <organization>International Air Transport Association</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="WHO-ICD" target="https://icd.who.int/">
          <front>
            <title>International Classification of Diseases (ICD)</title>
            <author>
              <organization>World Health Organization</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SNOMED-CT" target="https://www.snomed.org/">
          <front>
            <title>SNOMED CT</title>
            <author>
              <organization>SNOMED International</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="LOINC" target="https://loinc.org/">
          <front>
            <title>LOINC</title>
            <author>
              <organization>Regenstrief Institute</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="WHO-ATC" target="https://atcddd.fhi.no/atc_ddd_index/">
          <front>
            <title>ATC/DDD Index</title>
            <author>
              <organization>WHO Collaborating Centre for Drug Statistics Methodology</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="UNSPSC" target="https://www.ungm.org/Public/UNSPSC">
          <front>
            <title>United Nations Standard Products and Services Code (UNSPSC)</title>
            <author>
              <organization>United Nations Global Marketplace</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IANA-PROTOCOLS" target="https://www.iana.org/protocols">
          <front>
            <title>Protocol Registries</title>
            <author>
              <organization>Internet Assigned Numbers Authority</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 5083?>

<section anchor="reference-uris">
      <name>Reference URIs (Informative)</name>
      <t>The URIs below illustrate the <tt>kind</tt> values defined in this document. None of
these lists is exhaustive, and a publisher can supersede any definition.</t>
      <section anchor="vocabulary-uris">
        <name>Vocabularies</name>
        <t>A <tt>reference</tt> identifies a term, not the namespace of the model that defines it;
<xref target="concepts"/> names the model behind each <tt>kind</tt>. Vocabularies that define terms
in those models and that are widely used with observation data include the
Semantic Sensor Network ontology <xref target="SOSA-SSN"/>, which publishes
<tt>http://www.w3.org/ns/sosa/</tt> and <tt>http://www.w3.org/ns/ssn/</tt>, and the Provenance
Ontology <xref target="PROV-O"/>, which publishes <tt>http://www.w3.org/ns/prov#</tt>.</t>
      </section>
      <section anchor="temporal-reference-uris">
        <name>Temporal Reference Systems</name>
        <t>The URIs in this section resolve at the OGC definitions server.</t>
        <t>Time-scale concepts, for <tt>kind</tt> <tt>ogc-trs</tt>:</t>
        <ul spacing="normal">
          <li>
            <t><tt>http://www.opengis.net/def/trs/BIPM/0/UTC</tt>, Coordinated Universal Time;</t>
          </li>
          <li>
            <t><tt>http://www.opengis.net/def/trs/BIPM/0/TAI</tt>, International Atomic Time;</t>
          </li>
          <li>
            <t><tt>http://www.opengis.net/def/trs/IERS/0/UT1</tt>, Universal Time UT1; and</t>
          </li>
          <li>
            <t><tt>http://www.opengis.net/def/trs/USNO/0/GPS</tt>, GPS Time.</t>
          </li>
        </ul>
        <t>None of these constrains the type of the annotated value. Each names a time
scale and establishes no axis, unit, or encoding, so any of them can accompany
a Core temporal type, a string, a numeric epoch count, or a compound position.</t>
        <t>Temporal coordinate reference systems, for <tt>kind</tt> <tt>ogc-temporal-crs</tt>. Each
establishes an origin and an axis, and the axis constrains the annotated type:</t>
        <ul spacing="normal">
          <li>
            <t><tt>http://www.opengis.net/def/crs/OGC/0/GregorianDateTime</tt>, a date and time in
the Gregorian calendar. Its axis carries no unit, and it takes a Core
<tt>datetime</tt>, <tt>date</tt>, or <tt>time</tt>, or a <tt>string</tt> in the same form.</t>
          </li>
          <li>
            <t><tt>http://www.opengis.net/def/crs/OGC/0/UnixTime</tt>, seconds elapsed from
1970-01-01T00:00:00Z. It takes an integer or number carrying UCUM <tt>s</tt>.</t>
          </li>
          <li>
            <t><tt>http://www.opengis.net/def/crs/OGC/0/AnsiDate</tt>, days elapsed from
1601-01-01T00:00:00Z. It takes an integer or number carrying UCUM <tt>d</tt>.</t>
          </li>
          <li>
            <t><tt>http://www.opengis.net/def/crs/OGC/0/JulianDate</tt>, days elapsed from the
Julian period origin. It takes a number carrying UCUM <tt>d</tt>, since its origin
falls at noon and positions are ordinarily fractional.</t>
          </li>
          <li>
            <t><tt>http://www.opengis.net/def/crs/OGC/0/TruncatedJulianDate</tt>, days elapsed
from 1968-05-24T00:00:00Z. It takes a number carrying UCUM <tt>d</tt>.</t>
          </li>
          <li>
            <t><tt>http://www.opengis.net/def/crs/OGC/0/BeforePresentTime</tt>, years counted
backwards from 1950. It takes a number carrying UCUM <tt>a</tt>.</t>
          </li>
          <li>
            <t><tt>http://www.opengis.net/def/crs/OGC/0/ChronometricGeologicTime</tt>, millions of
years counted backwards from year zero. It takes a number carrying UCUM <tt>Ma</tt>.</t>
          </li>
        </ul>
        <t>None of the numeric definitions takes a string, and <tt>GregorianDateTime</tt> does
not take a number. The last two count backwards, so a larger value is an
earlier position and <tt>sortOrder</tt> is <tt>backward</tt>.</t>
        <t>The register also serves a parameterized definition taking an origin and a
unit, which covers epoch counts for which no named definition exists. A count
of milliseconds from the Unix origin is identified by:</t>
        <artwork><![CDATA[
http://www.opengis.net/def/crs/OGC/0/Temporal
  ?epoch=%221970-01-01T00:00:00Z%22&uom=%22ms%22
]]></artwork>
        <t>Parameter values are quoted, and the URI is one line. The constraint follows
the <tt>uom</tt> parameter: this URI takes an integer or number carrying UCUM <tt>ms</tt>.
A count of seconds from the same origin is a different definition, not the same
definition read at a different scale.</t>
      </section>
      <section anchor="coordinate-reference-uris">
        <name>Coordinate Reference Systems</name>
        <t>For <tt>kind</tt> <tt>ogc-crs</tt>:</t>
        <ul spacing="normal">
          <li>
            <t><tt>http://www.opengis.net/def/crs/OGC/1.3/CRS84</tt>, WGS 84 with axes longitude,
latitude;</t>
          </li>
          <li>
            <t><tt>http://www.opengis.net/def/crs/OGC/0/CRS84h</tt>, WGS 84 with axes longitude,
latitude, ellipsoidal height;</t>
          </li>
          <li>
            <t><tt>http://www.opengis.net/def/crs/EPSG/0/4326</tt>, WGS 84 with axes latitude,
longitude;</t>
          </li>
          <li>
            <t><tt>http://www.opengis.net/def/crs/EPSG/0/4979</tt>, WGS 84 with axes latitude,
longitude, ellipsoidal height.</t>
          </li>
        </ul>
        <t>Axis order differs among these definitions, and the definition establishes it.
The first two and the last two describe the same datum in opposite axis order.</t>
        <t>For <tt>kind</tt> <tt>epsg</tt>, the EPSG Geodetic Parameter Dataset serves its own records,
for example <tt>https://apps.epsg.org/api/v1/CoordRefSystem/4326</tt> <xref target="EPSG"/>. A
definition served at an OGC URI under an EPSG code, as in the list above, is
<tt>ogc-crs</tt> rather than <tt>epsg</tt>.</t>
      </section>
      <section anchor="vector-reference-uris">
        <name>Vector Reference Frames</name>
        <t>No register of vector reference frames corresponds to the temporal and
coordinate registers. A registered coordinate reference system whose axes are
directions may be cited with <tt>ogc-crs</tt> or <tt>epsg</tt>, and the URIs listed in
<xref target="coordinate-reference-uris"/> apply unchanged. Most frames in which vector
quantities are reported are not registered at all.</t>
        <t>Some communities publish a closed list of frame <em>names</em> without serving a URI
per frame. The SPASE data model <xref target="SPASE"/> is the case in point: its
<tt>CoordinateSystemName</tt> enumeration fixes tokens such as <tt>GSE</tt>, <tt>GSM</tt>, <tt>GEI</tt>,
<tt>SM</tt>, <tt>RTN</tt>, <tt>HEE</tt>, <tt>MFA</tt>, and <tt>SensorCoordinates</tt>, and defines what each one
means, but the register itself carries no per-token reference URI. A token from
such a list is not a <tt>reference</tt> value. Where the community that publishes the
list also serves a resolvable definition, that URI is the <tt>reference</tt> and the
token is not; where it does not, the frame is written as a <tt>tuple</tt> meta-type in
the schema document and cited with <tt>kind</tt> <tt>type</tt>, as in
<xref target="vector-reference-frames"/>.</t>
      </section>
      <section anchor="linear-reference-uris">
        <name>Linear Reference Systems</name>
        <t>No register of linear reference systems corresponds to the temporal and
coordinate registers. ISO 19148 <xref target="ISO19148"/> specifies the conceptual schema,
in which a location is a measurement along a linear element and optionally an
offset from it, so that overlapping attributes can be carried against one
geometry without fragmenting it. It defines no identifiers for individual
systems. A linear reference system is therefore published by the authority that
maintains the network, which is why <tt>lrs-network</tt> is the value defined here for
a published system, and why a system published in another form is identified by
a value naming the model that publishes it. A system that no authority publishes
is defined as a meta-type in the schema and cited with <tt>type</tt>.</t>
        <t>In the United States, the FHWA ARNOLD directive <xref target="FHWA-ARNOLD"/> requires each
state department of transportation to maintain one linear reference system
covering all public roads, modelled as the HPMS Field Manual prescribes
<xref target="FHWA-HPMS"/>: routes carrying measure values on their vertices, with
attributes held in event tables that cite a route and a measure rather than
segmenting the underlying geometry. A service published under that directive is
an <tt>lrs-network</tt>, and its layer and metadata resources establish the linear
elements and the measure. The Washington state route network used in
<xref target="linear-reference-systems"/> is served at
<tt>https://data.wsdot.wa.gov/arcgis/rest/services/Shared/LRSData/FeatureServer/9</tt>
          <xref target="WSDOT-LRS"/>.</t>
      </section>
      <section anchor="code-list-uris">
        <name>Code Lists</name>
        <t>A <tt>reference</tt> identifies one specific code list, and <tt>kind</tt> classifies the
register model that list belongs to (<xref target="coded-values"/>). The registers fall into
two tiers by how a <tt>reference</tt> behaves.</t>
        <t>Some publish a resolvable URI for the list, or for each entry, so that a
<tt>reference</tt> both identifies and dereferences:</t>
        <ul spacing="normal">
          <li>
            <t><tt>wmo-codes</tt>: a register in the WMO Codes Registry, such as
<tt>http://codes.wmo.int/bufr4/codeflag/0-20-003</tt>, the present-weather register,
whose entries are served beneath it <xref target="WMO-CODES"/>.</t>
          </li>
          <li>
            <t><tt>iana</tt>: a registry served under <tt>https://www.iana.org/assignments/</tt>, such as
<tt>https://www.iana.org/assignments/media-types/media-types.xhtml</tt> for media
types, or <tt>https://www.iana.org/assignments/language-subtag-registry</tt> for the
BCP 47 language subtags <xref target="IANA-PROTOCOLS"/> <xref target="IANA-LANGTAGS"/>.</t>
          </li>
          <li>
            <t><tt>snomed-ct</tt>: an edition under the SNOMED CT URI scheme, <tt>http://snomed.info/sct</tt>
for the International Edition, with a module or version appended for a specific
release <xref target="SNOMED-CT"/>.</t>
          </li>
          <li>
            <t><tt>loinc</tt>: the LOINC code system, <tt>http://loinc.org</tt> <xref target="LOINC"/>.</t>
          </li>
          <li>
            <t><tt>icd</tt>: a WHO linearization, <tt>http://id.who.int/icd/release/11/mms</tt> for the
ICD-11 mortality and morbidity statistics <xref target="WHO-ICD"/>.</t>
          </li>
        </ul>
        <t>The rest publish their lists in standards or directories that mint no per-list
machine URI. A <tt>reference</tt> to one identifies more often than it resolves, and
names the standard's identifier or landing page:</t>
        <ul spacing="normal">
          <li>
            <t><tt>iso</tt>: an ISO code table, named by its catalogue page such as
<tt>https://www.iso.org/iso-3166-country-codes.html</tt>, or by a standard URN such as
<tt>urn:iso:std:iso:3166:-1</tt> <xref target="ISO3166"/> <xref target="ISO4217"/> <xref target="ISO639"/>.</t>
          </li>
          <li>
            <t><tt>unlocode</tt>:
<tt>https://unece.org/trade/cefact/unlocode-code-list-country-and-territory</tt>
              <xref target="UNLOCODE"/>.</t>
          </li>
          <li>
            <t><tt>icao</tt>: the location indicators of Doc 7910,
<tt>https://store.icao.int/en/location-indicators-doc-7910</tt>, or the aircraft type
designators of Doc 8643,
<tt>https://www.icao.int/operational-safety/doc-8643-aircraft-type-designators</tt>
              <xref target="ICAO7910"/> <xref target="ICAO8643"/>.</t>
          </li>
          <li>
            <t><tt>iata</tt>: <tt>https://www.iata.org/en/publications/directories/code-search/</tt>
              <xref target="IATA-CODES"/>.</t>
          </li>
          <li>
            <t><tt>atc</tt>: <tt>https://atcddd.fhi.no/atc_ddd_index/</tt> <xref target="WHO-ATC"/>.</t>
          </li>
          <li>
            <t><tt>unspsc</tt>: <tt>https://www.ungm.org/Public/UNSPSC</tt> <xref target="UNSPSC"/>.</t>
          </li>
        </ul>
        <t>A processor is not required to dereference a <tt>reference</tt> of either tier, and an
unresolved <tt>reference</tt> is indeterminate rather than incorrect. Under <tt>kind</tt>
          <tt>type</tt> the list is a meta-type in the schema and <tt>reference</tt> is the type
reference <tt>{ "$ref": &lt;JSON Pointer&gt; }</tt>, not a URI.</t>
      </section>
    </section>
    <section numbered="false" anchor="change-log">
      <name>Change Log</name>
      <ul spacing="normal">
        <li>
          <t>Initial version.</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The author thanks the JSON Structure community for review and feedback.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9y96XLbWJYw+B9PgXF2RGXWENTi3dlf9ygl2VaXLKlEOTO6
+qswIQIUUQYBFgBKZirdzzLPMk82Z70LAFKSnc7pmIruKgsE7nLuuWdfoigK
mqzJ01fho/8YnZ6Eo6ZaTpplBQ9G6TwummwSxkUSnqfTtEqLSRqNVnWTzsO9
oiibuMnKon4UxJeXVXrdGcMO4b09iZv0qqxWr8K6SYIgKSdFPIcJkyqeNtF1
DONXdfSPuiyiWoeK6nQexUURbW8H9fJyntU1DNasFvDd0eHF66BYzi/T6lWQ
wOCvgglMlBb1sn4VwghpAGt7HMRVGr8Kf0kvaUdHBUxTpE14UcVFvSirJviY
rm7KKnllfosOcEnBdVosYdAwvMqa2fIS9ukvbquWfeIK7T7DMIfF1A28P2ua
Rf1qa8v/bsjjDbOyd4St+wBkOGvm+aMgiJfNrKxwkVE4XeY5g3Q/T+cAh/Bn
HgN+DcOyuoqL7Fea41X4LptUZV1Om3C/rAAK9JjegxVl+atwwkNc/19zfXM4
KedBUJTVHF6+JsCcv95//PjxS/3nyxfP8J//Mbo4f79/Ee2fnh8CUKOD4Zq9
TMoqdd5/f3J0Mdr4wbLImtr54ue946ODvYuj05ONn13HeZboDo9Gpzsvd7Zf
vKLd6i2ApyE/3t3e3g3fpOVVFS9mgMNZMeUtlwXA+CKdI7TysJ7MAFKPaBB7
CPifCEGtyETfweunDvRDGBBuC2BjXCXyjL4lJA5xAby2uLpKAY0Ui25uboZZ
XQ5h+K1aPt/afba985iwwextZ6d3b/B4d3vn5fq96WXPiqvwchVOSrgUWYG4
/G22ufPy/tt8/mT78Ut/m0/6j/AJHuHuzvptHmdFGldhZXf7bba3u/OA7T3d
efJct3f6Zj862Xt3OPL3B4/DE7je4QWQv3C0SCfZNJvorpJ0msHtQAICfy3i
qgl34B+XcQ0AQKqwYZOni7RAeNULGA22uQ+DAGHMlvPeHQDlrofl1YS2sCjz
re2X0faTF9Uz3kBgwG2IxIvnL3dfmYN7+qz34OAxAO3x+oM7vazT6pqJ5CCc
p3ENlxuIVFMTZa/j+SL/Vri6+/j+h/li98kzcyWVVJ0fHhOh2kzgqjTn/Tlf
Hr07Oz2/2PhZNidGZr/ZO75gDNr0VZwzONII8aMWzLs4PTva3+2i3t4lfBlP
mhbmXZQLOKjdV19GPe7AvDsohYeIcb218wLkhKfVE/MP90bxvp4+dGNPX9kX
YHWTdNEsYaHvyiTNCWsusm92t2BLu4/har2U/9Ht/PX9wYW/D3wSnhZNmZdX
2UaI45s4+Fp0/ucyaWh2eGP/dTS62Ds52Ds/6KNI+6/NnRHKFF/mm4ABH8D+
Qa5SHO8uYTKd2DdoHQdxE8PjSO8XY+vWZFkBujVbl8ssTzq/Rw0uRQE2Oh3t
RaPRib98I6aOUjyT8CRtQA78qHBcbdjIL2WVJ+EvWZKSYHnHoSJYbx7TZi7O
t67LSXwZ1XWBED47P/05OvXXJc/Ci1lKv3/rBS2q8joqcTXnB69BajvZPzy7
aB01/BLuDHf0CjDFtTdnVTTxp2+0vCqZ7uyArMgT6zJH+28P3+11FzkiuQzX
+u2WE7Hwh0s5/eW4TSt/OQ53aVg9tvA4Lq6W8VUaHpSTJTKs8PQaOFmW3nyj
NZY3+W5Uyhy4zNFfTlsHik/CUYYsM/xLAR+kCSzQ44mi8hkd8Bsttv5Y1pFK
Yymu9mD/4vD8XWvBB/vvjsJ3aRMDU4hBDq/mm8jcwfIyzwpUblL70REKSCSX
rF1WQt+hYsI83WUJoJnRr6S3bCWTeRY1uAxc8uHZ6I2/XnyChD9JkcScxRVQ
JXg9RHJWp829xZS9ui4nGZ9IOQ1Ps5zu3pu4Ds+qMllOVMFrbydd1FdKyH8Z
HZxeRMfnbSQAlTMNz8sl/LeIxS4bZwTYdOxxPYMXG0QWGuogRcmTUBzWalRs
K091+B1AY3hTJ2UzvImHV+X1VlxNrrJ6qwINegvlvWwCxH40Ay0+2YINEDd4
ncYowYzg57TaQuHg9dtf9qK985PT4wN/i3t5DhuME0PdYV2traYJHcqGfb5O
kxSVvrfZ1ewmXoV7yRyEbSR+azeGyDSFl4e4NdwXCMrZZOVItFuzBeBOXBVl
ngwn07nu4u1ZG/V12rO0oq9hySCAADKXlT2m8HWWwh18Fxcgn/x/s5cprmBO
CyCic7Y3Omwh3CKGtZ/NVqCV1OFeNZnBZQT+C4c+I7Q+/MQc5Xv6+Ac6GBa2
BuHPgOl4C3aHz4e7G3ZIn64TJXef9W4RxLM6ja6qcrmgO4N4uTXHeeUntuls
ZUWSfjJixWgf2OXp+UH7WsG7eZ7BfRhlIC3S1d1P8VaH7wGl6/DNEijlINxb
gHCYZJ/CfSBYaT2psoVe81Gap5MGMHPfyNFyzpuo3sneaC98UyYkkTGsX+dw
zo1M37/1enKTXg6v6ulkWMQ138IlrvPDFa5zS5f5YV83/mb/3UV0cvCXFsX7
tMjjwlCqBsSXIvkYTjNgMYwpIQybkNSMP77Jy0uUiGFpVZkl0bsSCUd0wdIY
0NwYuOeG3er37y6QEv4D4OVbUfpPGpE5T9JyOCnz5fwyi4dpstz676vJvEFJ
CIept2DMLVnAVpzncARpNYTNfEhxj0A+EpSO90cHo2jv4F2L4jTwryVwQsbd
tK6B9YPCep5OyjnsMAEQqNg84EHCp9tPhtvRT9HuIPwpX6bhT2X5cZMcDbi9
zBtiZfDHfJ41TZqyEkunTlMLvvjo/yTa7rdLLJC3TYaTSZ2w3H22vKy3YGGf
ti93h4tk6u545/fb8o6z5QFo/JN8mSBVu0gnswI4L6pMVZVdwSjLebgTfv8f
y3yFOuHTH74JhLZBd3z6YAjtTHZqAdLJ3tHr6K/v99oqGhACYOtkoPllhsTh
LF6k1V23+T/SBrF7scyJ9h3Hl2isLavVAFSu6+yKrxtJ48C08zyuViBAWLPJ
6xieZs3K3+PjCETqx9u92yzibDr8xyK3xAA2Tk+35lk92bIb+UD7+ED7cB7X
7nMByvnhWbSz/bglrx+ehfjQapHv0cCLxOMdW3doYw4JdLTHfsCx/ftimQOO
vC7LJm398i77CIBfgljhn/rONiwv2n6+lmRUJZ95BWIV/hdco21j5PnL0cXF
kb+3nzM6r3mawobOy8sSpMCadTp6e7McyIvdK5IK4ABSJKB/1frxbAbnugiP
0+LX1i/7swr4ebmYAVwBIzpfnsf/XKZ5+B7ksnrZMsmuN3NNrvPssh4WaSMX
QWRiXhx+evQf5+dy3Ef7+9Ho7HC/ZeiboxLU4MVmxQhIcLmsQhAZ4AeSGiMW
CuAdFPAGIVBkh38MCB9IljdmrPB7sh8+3X7+LEIL9+7TAU4/pH/v2hGuRXp4
MnyyiXD4wvc+LLBaK0qsN9PjxirCl+snqEMMP5GxTSBzfvjmaHRx/p8t6Ozv
w9HFKP6klepgRKbO0ysU0Dbp//dYdnudlYzqLBbXd/E+erv7vH1TlZDzqvCl
i/DtEN+DaZBeRygZoZyApzgBwSlclBmaZpHkXoMYUYZ1doWLQ+9dmOF7RrO6
98YuUCyClSwLNdO9Lzqm2ieb7jHwqSGsC3Y/2UKr7H5E2wjYOL3z7NmT6EnL
yoXgyUB5A8oaoSLXhE9g10eH4c7L58/C4z/Hf778s6JyTcwFUXKL3pAB0YT5
EKybi6czRGDnIKdkxb39J5MshSMdxq17OrHbiFBJi55E8GaEewDh9jLiDUS0
gQhFBFg/MNkWLGBP+BAmfxE6gBmET5pZeJhkDzrN++7zxZfuExYVpbwoGOLs
5E0Lrc9QN70E4qDK4Rt2PNTh9/DyDy2L8PcXswx4lOxy03FuNocYRH0abT+L
dp/cw0aygAv2mCyyoxGoHMen5x0sHY3k2oO2tIQtHafXQOSffCOjzaSuCWOq
6IlSjZ9Gu9tPd+6kG+fhT6MhvhkB7dhLrmNSwOtyiS4c1mSRZADZvqpi+Bb/
lQCp/93JxO46Oa9NJs6JTMiqt9LC7Hfn+fPt++0X34zQlZBfAXI2s3kdNqW6
sGBHSVY6O4aLmBQgRBO3w0CGaJHGH+W1HM/194UESoMPgwTuhyFx+BNscWe3
5YuFp+F5iI/DY90MRQ7kWW0lVhAPSS5PQAL4lM1BvKfNofzHe2WOsUnjPVyC
bJzGRfhTVcbJJK4b1B0eskcUR4bp5XI4mfmEpILlO6j9/Nl9URveDPdo/QfG
Kcs2jN/l2B6Ars+fWXR987wdF9DL1N8M8T0QkfM6ZT4+R3oiFPBs/90PeDzX
ZQZsblqlIEmC2vEAr+vdCLnz8sWL+yIkc3BaM7z/fvRmFB3vnRyM2srXL7O4
CWO4amh3uCQhMiXkYoe5WiSO4RfAz7BWA0797xs2hsoKK7bwIpp60fmGCusI
9It0tXYDy/qqJr1qGv+z3rqBpUWwtAiXFbnLArZMy4nsclqbjI5bR/q+RvTH
reBrZj/EC6IdlibZarzJAP3VG9OFC3evt5a4rgh/N5vKeU0RSvOR0HgY+Zd3
p8DgDtquRniMgiYsR4Xh8Ht8dlIOw8fbz8TsiWIEvXU3c36XNmlZmZ25jo9+
aQOHHd7MS8I9vFOH+892nj3fjdrRNof7of6AWlF4iJY8oE6TclmjEgjrGBG3
Y2JHXoFaJUu4ep7Qcf+LJdM0jtlEpat7qXjpJeiMVTrMQFsBUpgWLjXcevp8
+4XIyM9etKQo0r/wKRplwj1nn2fk1qkAl4x/J7yO82XKV05BErNL4zq7ZNMG
Q+ZbRR1tYPrtSI5nT549eeFEHT0Gcb67d3oq2KmUpEoXVVqDjmPMoeS1xn/A
poumAprJ7H2WZqA2LC+T7JpMBr/ztjftE/43wsVHvKRVxEhu9/tkd+d5d7/0
9M79sn/+Qbzhd9kQri6Sybs7esbRiv6G8CHthyYFRRaOIkFykovjlo9K/wrJ
TfAHbwvWGOkCWrvaO9lDhvDmYu9Ni2oax/NoednEV/c3JKQN+h2BE8HVPaEQ
2xpEGnxdTYm9642LWAJX8FsKzdoyi65pDZGaHZCVnRyfIq1v8bCTLXmsjOhE
2LQ5oosqTtg2aFyMIGfeTTFb4x1OyqKcZxNXEcXhWajs3eaySCfsGm5wDVuT
dBpPGnicl3godDIRCLmNuVPI1QGkFXrrVmQA2jt9/nKnpTjo6gH+CdLcEgD+
/UE5CfHVB1gOAHPzcO9a/MV3cjUh+ZOY2RoQ/VwWgvYcWUiUlJMI1yGrf/Hs
SYsD7GXVBIOWOTTxQGQYswf84NvtgTBPdwDnVslAIDZN02aFIVURriCKZZUR
WqCMpFWS+/xo72KvT+6AneVZwbgG/yZMIzRkn+X9vfhZ5eCq49PfcJkavkw+
J663kgwkX3T9YhAUoltNSyE3/9vT6Gi/5QFvQTfHy2lsGkCoDzIYoAYa9z18
erfg9DaN82Z297Fkk2R4MzPi0ujk9N3hQbTfEsz5cbh/scmfy+94+1gLthpu
dJqoNfP49OikZYSmRxtmAxqZFjUy6ClMWaNjq+mnBXmZFRMTYQGg37tozQUP
tg4OcOlJujE86i1Kt3nOzh0U4ckpysTuoFpekSyesVgFkuusTMiA3rusuJkk
STKczrJhUeJfH+DPD+S43iKiOzobtdbZoovGHSOqArO/kQRjMP5/z+NswpfW
qOKufRdXH9NmkceT9VE4y+Jqrh42QPwtnkt53dn56QUwiOPWVYXFNkCEc+Vy
95E8vpLPLWTKOgiiKApjiYcLAlK0kMzUqGhOquyyLSINwstlg6LTKkzKsCib
UFzLJE5pXsggaCThYBBKBCn7QBw6F06M04ARpEhTdLg2JYgy8BRmbfCbANTu
BerAFHMTXswyWJwGpFH4OMqnCxm0ldLj5KfAAuMmuMzQXsfBdgWJgjAfhUPB
rLAXuqt5SMGOyzzG0/jRGwVQOyhtRDeABx229SDkh7CBBXLhqsnQkzzliB8S
oGlXad2Qb2eSJvgcAJXNLdzgi3+CAAeHOICtVdm1wBxBNwG+DYpIZzUK4KBa
G8k8wL+vifqy8M6hCla5mWKUF70WNEjtjR+2Di/T5iZNC/MKfh/nJcyRczhS
mnMw+4/8UwtUZGxl9wJ+TOYlOPiiSFFMXZVLBB26mhoM7kFbAvxN9huURni+
wImZh98KNmTDNodBgI5Jd855/BEfoEMe0abJLsmNbLbR3JTiiEMHZ5Kix45M
6bD1eTyZwZ5+9NAbDqnMr1NQ0VNEPvgBcVHxbeAoQ3CNCJhJmaLVsAl4LYpt
WUH5PEO+c/MsSfI0CL7DG20sxeHtd5nz5+cg2NPPa7ZqzMobGJKU0RAuwk2F
hshiGB414VV2jRI/3V9e100GHM+/EQG7qm9vveylz5/DzA6A6UpwKCXdGPi7
SgH1qvBjUd7gz/MUCQ6sJE/gT0llQwRH5wXI97gWhQEvO0RjEQfW8MtyoHC8
5hf+GLPe9NcEcK6cw8Wq4K20kLcsJsSLRZ7hfBdwpgylGm5JEcZXVYoHFoyT
EghxOmbSU4TjOf+zRv+ypXA3GAEgZg1gZdd4aE0GEspVvLwiurOcEx7CMWNQ
krwD5CLPs0VdZgnuI8NQMFg97ppoIUaWw22Gew34h9POl3VDP1+mStQSxCmA
QJJN9S7CqS5rIAL5CgA/wRCeBEkT0Iw6NYRP6EJWsJ0iQEjZo0GdneCGR4ZO
KhgLyRysapGWGDoLEk6IEeiyVPJf0G1yiWtW0yY/IblA5IQhWuSV4lQtLmHm
HKASEVpee414pcyBjohokb2xA0JSIANEFa6QdhmU4A8CSYNjzKpDSXus4cAa
e7uUWQZRSCSerwHCQGACi4+J0ONy4pBE03oGsDWkfmVxHqlEbYJsAJy4Lvgc
o0bNWTUAVUQ3IOkxDSbfIo2Yo23fYAF992OA2U6THHHkRi8Wwkg5B4srjEiy
6ElckcWFTRXIaOBi45IS5JnFpKErwgfLXGdl+NCAHgsDwmO4TJFsI8Mb6BfM
hWA8WjlbMxHdGkPXQuJPmblt8DVupOBtpQ4PESeYQ5xAMoBFY+hcfAUSAnI+
uMjwVUVHwQICTI6qNSJs7PCszsD4s7AwtN30cjB4B/ficTCGEFBvfoXwAJAP
FkE3JFY21p2vLhUwgC5lnQkrDlmRoT+In4ao06gFCRECSIqRYHDzCElAqHJK
4wGM9PITywRoKo9hCsfiHONSecXwQkRY0S7wWzLDMpjLQi52/AmliVCZa02L
I37KQyFx59kRNwEf7WHAzQHSgt6r0GHXiAJB2MuyBXLAQvErn3sLTya8p+SH
qnBwx6AHrYkMljWJE8BcT2F3crnpDiNzQUlAtyobZUMMLRuPhsRgviEkNiB3
Mzu0PIwZT8DrnqEyi6I23GY5MDmCJATxlGECz6+Wgr5yzzwCOwz2GI9CJXV0
38S3tApviFnQMugOOX/HxopusC6QdRrxBr2LLrPLkQuvlCK4W6s9qzyzzgAe
IVMunHnxShJLznIhXoKGLCfgu4bz8udyUeBI35V1I8GxgCpIwvCEMiYneCes
x3AOV72hWFPgj3UKSFalLbE9ULG9KD3yC392ryE89LCy6GBjgPCk10RsJGkb
A/JuQDI6VPIMC7osEwBeIMSfroNItIXDk3gRtDNCTPLCZbWsOglxRwhMOm+g
MwyYuLGLZwJblTnJU8Ki5vFK0JV0nKYOkDnLfbcEt1riV8AkRaRgOl1zbDEQ
mFk6+Wg4DREWknfk3smc4jLEMyWVNaRjEIyZkI2P9K2a9Y3pCqXpcKx6yDmM
Miawjq0aMkaRmAlR7Bwb7t5ViDTjSXfknbuKhUQaUShD/LrJagPlhngkIQcA
6ZLgHIcmez8E6FLcliCjp4pR3Dv+cHurGbufP7M4avHN/SBWcRnmCpBB4eaB
+TCSocVJXAVWYUPKp0od75CQVtJfZyAOhvEc2Ky3MIwZY30QP8gQUf65zCpe
kAgBvNt6Fi8Aw/KMtRhnkKFzvFZytdIzcw0i4jKikowYAxIxqyp0wg+Dupyn
iB54R8Np9glF0T391JzTJTq920sh7RLxQJy2eIcCQXLCMBVbCpxAqA4ewQT5
pPhe6LrEtWq3Lprj7AHrXlgZg5bcXkLKYrURfxgwANopco7g+9tbGQ8duDCK
JqB8/vwD3JQTmcVHT0ETmCrOV+zfswc/DEdAYZHNGQGUhCBgksaoIQjB4qKz
d07HInBlDYLZBZbIhLWyRrh2oFstq1ykSOUuCACdiL+cIf7KIV+icrvgRBsU
LDKrgwWODhbzmEj5l2QYQH3yKl7URkgHnn5DpALGbdLElRJgDABueRPcxDVH
vNd4JYXYXiIbqlVdEykPzw9gWxHxw53QvDQWbZZU6sBV4H3cxpkSgGQ/koiC
Hies8TOmoGEX9QkmEPPwvqiQ2fNnmfAqZYoCc+eoolzNADotFGByKK8H6FOp
X/k0s45XvtaOW1JJexCOGalhaWeKauNAo0xhVTe9gvkY3ge1AybANG6ZhJTk
WOVwAHaaXdM3w+D2lpNzQTljJd+hSACxa4c6wT4w/JWX0Ki7lygcKyJzNJXY
HfJHDQhTl0uiU8ouDZuc5nHDFiyAPTFQZqyC2YOAxA+ghDLnynhnMaPK10wU
iEJ4MRGsIXmAlDq+PyInihqC1GieEqEgZGMLENt2cEF5NmkEuYT4EZelc70E
9vRjgIONlauNQauhgg2A0UjrQ8fHEQoLYaF8jPnJrwCaeGfTZK+ho0LKpGMx
AuKaDD55IgZy8QnK5kRxEWKYy4X0Q4yETO55o6DDFCgxqwQt2GAvIBof0B6A
IIHlAdnBCEpzuwEqEuKAV5UtFJe0FhQ8RFIUsxIODaOwBUgPi/ioKz1fx8wh
EPQBUUMCz8RI8kX6CXfzKUOumqBC1is9G8FIBX9WCxC1kiq+EQ0PMxZELKIi
RleonBSpIQM3FdosVdajYEbMcA1YrWZbWknWB4y6x3u+EsiytcixQhxnE7SI
4NpIjDGkPwCRhsLHwzhJKqY4imu0Pry/wFLjZZ16RkayfQjJs+BHUpmo5iHk
cg+JfOTJW7Cwy0oFV59966SBTgqndk1GbasWW/lDz4SgpNYC4QuLeJVjOiof
cEAH7Nl1hhhwJUHViPlpERcTodtoUAQiepXCOtvwMEtLY5B2SdpjOS4rVIYP
KzK7sfAqOpeX4azyHd5Vl59PMqZZqN66mIlWePZXIWr0WJFdEy/jTIJa2TUf
gOFBzL8V2JSUTmIuIRzypdoBEBKOCapdQP/7zGgqo6KEsFZboiITlBDS5Ygi
ehWu1Tq2OkkSOEpalaJDV9Rm0iiIpaM9vJqLAcYBGEjCS7aBoaqBixoGmN6W
0oZYYidw4gqJbLgERVQlYMokTIoOacEN1wZN8D9ay40ejTXI4WURVd0Qpgpr
fonurznSMZD/Mhf5iOgTMRLxjbEO4dQcgrP/7jtb+O0nVmo1pZd9QQdOiaLb
70zpM1GAP4ty3E/C6xmhUiGSPWijiuUozmLSppWk42BsDmts7Xm0FUci8JRt
xoHxR1hL65OAA7dIOaD7hP9yvrTWQEG3HB0inrGfxBbSjNQdlzUdrKMXbwT1
6HgQnUCbCCzPNGJOmpzJGvGZmgBNQjvnNY4H+KkaAjs/hmO22PX8QNainwnp
xqyCpxyyFgBmjNl6aD57TQ4t/iwvK0qvpD/J4rUvZrQxE/axGrl+QovV2DIl
douRKpAglx6zZbI9Cw9CL18okuPTHIvx5DnCGc+AkQS9Ps5JMXsEYFQZ6gTW
vILOM+ThrnGdpEMHjbIaqVFBTO8SaAJK3+/Pj0BFlsp3qCEfErez3LJ2JJL0
E56hIwCxWaBznrAXuKxxMs+aFo7OML/f4xVI2NN8OghYUSTAxXxXyBfHKjki
8e0tsJSYIl9AXEJel7MLSh7+qLjPNKYA+MPTcQ8YkDKQhGIMTOPb8NG/wJ+P
XoX/SgT5rCRM/7fw85jZIRKe1YKVFJ1ISSQgFRtoyAIkFk6GP3EylcPEb6eW
HQ7VE77G9JHOW0bnS+vb0+j2ssDbGJtTrAoOkfplNRGAqerNXAQvAEp/HlsD
KBnjYSGkER1CtVIK1loDVS0Zt/F2k8KL+kSHYZLPhdzovvdUXAAMBXITD8jt
bmR91BcDtJ5nOf7cYzRyjTcw2DT7BMePAlNWz1UPIPkUaClgdoDQIZAaPwRr
iOyCEDFaqiGSaLvB5cDuuylREDSlAYZhsr9yXxQ/azpNEkgdkYolVbHSls59
AtrWQwoJXV3qxTjUiAMZuENuLK7D8GcnOCFAw04eL/AKcWiYpU1kg4dTYCIC
7B8ERVJGgIygGlg4HjHVbEVcppU7Sg+upCbFuGbECgyBEFMOyxvknShIgyQl
iLwSvT4J3hpZaymmOjBuNbELvXKlU6uT6ULrJQBI3KvEFvFoVeCELwPxThQS
HiPcyfr9MrxabBMtHP8Qegy9x8QdAk6QlEkAvcaOcX7fCUkYG6cG1TIU+5Qh
7WiMdHh5UQYm5MReeasj3IhN1DhTWdKMe5xtiOSBIjnG6MRswqErZPVh12ZE
Rv4rY13JGkusgJLYr9nhla9YWJJyhkin8atTDXtRdLa1tm6/K827kWK9qYgF
gpNTGZG4HNpekJDaID9cOKvQuVULbm87Qhgwsb0i+LOdzwpDFq5/VklUYY73
AO8PMlNZ1oARKwbq7kQFINpWGVaaulZd6w5KJTQaURt9CMFeEf65HSG0Ettf
7C2uj7Va14QJYqrd60HIpWYV2oDdNdJC33aKlFLAjbtGHRZAkk6WCnVja0Wx
1JhAdTOBWCyTTsgThzmoyxnGbgDSA7HeqE1UFG5jxwlU0YLTQFLKDokM7izi
m1s6ARDKKbL32ZhOQiZEj969H108GvD/hien9O/zw7++Pzo/PMB/j97uHR+b
fwTyxujt6fvjA/sv++X+6bt3hycH/DE8Db1HwaN3e//5iNHg0ekZFsncO37E
go6LFOSLKTtOYaTHbOkkUvTT/tn/83/vPAHc/j9AMNvd2XkJ4g7/8WLn+RP4
A60uSt3ylfyJvDaAO4MebDSBgTw5iReg6CCxjZHqoJxBLrgg+PN/IWT+DuLO
5WSx8+Tf5AFu2HuoMPMeEsy6TzofMxB7HvVMY6DpPW9B2l/v3n96fyvcnYf/
+u8U+RztvPj3fwuCYIQqp9js6u7pIJKi8VBcTkhvUeJNmYOa/E74NcjT4qqZ
OdmfGYnVcELIEZHJm2nEvmM4dzz5WOdxPeOBbio4MbwOVL0qvVqxz0oKzsJR
c7gfcjscZMYamXjM5QshNUBYaMwwZcWVzKB2uqymDWbFkoVskh6zisKQCs6Z
t2GYGKDA4iUqJJlE+JE8Z4dktYqmvAQG8dFKGzksk8N30OqCQ1MwF7DI8ppt
vkisrsWTANr4VUZlFdAIiBfdFl2XKqW331m6FxHxhyvvyCSAC2E5mSyRKKkf
r6Ua0w9KnDCuMM85dAMoDQg5wRwEJyJEJJlMZpQeKj5+1ajqJevpsIHbW+v2
dEufA/uBlXnO04HnBdik7Irwx9Gdzq4CZbt37SK8xy4CbxcOM2htIxxbGRft
1efi2RQFtl4u0G50Bjsrk84J8ILNStGfrOHf7rvkigY8CDw/Cf1Wt8Btvqel
rQMhjh2Q+mkXY8wraBhbor1enG3MoW38kRMuKUEnBchkGSdkCxDJw4VH3GXN
Pgi6syLNLySs2bi20GfohRCTH8RirHd25F8vUt+zGms4WN/BgpClZ4CYudmY
stYq0m/IGHStGJstMg81rdwJUT2p0JySDbimzTpaFF2ttZJ6C337blhw7xvm
Iq4kR/IQuCijWRJtaE9sscyxbLRugmsGQYkuzzc4jfQipmjIU8XT+MyQ+8AP
wBvQYp2hqY4NQI6YCT8qa1VDs2Aj6lFLst+ucIWgZbnVzwoSdvetkzVkDz7Z
aUluaUfk04Ilw4Dc1gXSBhMhEajB31kcR93JA1f6BEgRUgCAOs56QhknTKKx
Fgy8ncg8LtnWMQxHpAKIuYOkcrKm6mdW2q1DIwu3glxFoSLFTCLLVDnD4VLQ
dSctY3T/qjS0mGGM7jnZAzJ2crqmSYCGx3+hQN1EsN4NCClCLrTOvjzQFRJm
73bqwMbwctl2Uqg0ytN1cphQxdISfIu/pJ307g2xTQLggdOHpob7IMTMvTz7
FZ2LqF9oQBDo71WGPzCbmsakQHDIhaa+0CJkdooqZlQxEctWmWs5XPZ0eqr/
7YbDawX6z58H4pVj770NshFxuxbxzzg1rcBfOB448ezh58a93XjGM9bmfvSM
6iqWO34cJ/KQ1XSVP52RFMNqi7+MiWY8UuoFiVNOVxD2QnYBTMZh1wuKRgtO
sWDi4FpTnRBOctihQVmEfBNKiUq4WMlSNzMlawJ5dUWFX+OeG2AsJGxTJKzl
EHXP/SZ2SiEVwmKtES9212zC/JaFuZAtO/l69xdVVkZUZ1Ot+5kfqUGkC5VY
hIj9Df3EnCWv15i5fbDWfGCcfOminMw43raOKMdCo9nJzgTwJhcAhRUFl2Wy
UnsczJfWXnsNJgtxIVEcPMQKnaRsMFk2GmjOaw2EpJl9VIYW1U5GB0c7cWld
WM4sE33Afkb6EG62wiCakvLH3H2juziTrPxXPkJk4loJxlvwdOuWhQFM1/28
datevRX8WwAG/0IB4PMYrrTpR4J3uWb39ngbzqwIxpgWJ1lxaBC/yrhCIM4x
qeotLIK9tb315PHuM5ZMFyx0aTE+DQcXDqbBbxhRqWYOqd/lu1GFQE0zdGNk
hRMKtsgKFj3lM4z/hK1pWRQLTL68YsXECgwSW81+BULQGqtZIw4LstyUy1wc
Eawg1hhXl5jIUDlJxNl2mLGG1joxqDQYReZNsjw1QaiaxsG3S9ftRMQS6gQa
Euhd2hKDhkh4cXamKKwDX2U0KhnGDYri5XTQ00gpQmI0tgG3OCWzV4F6mSlZ
PLbclWTZwPg/dVZgWnwKnqe9JBsaKWDiDPH8LETG2jYgfIhpJeh3N1Zq9glR
4QaJriJToTMa6fB5iWHoHMOL5EUc6zVVW0aNP53F15nGAPgxt+xrU+LiBo5L
BoF4EUFaYUSx+SyIrhTBQxLXKjAQIB7eWiQ5ljpLZIatgXTWMVJWbjiCF9pB
VEzdnLUbMOMZbjjQQReRBoTHNEKtWCSSq4kEQ+M3fjRLMUsYqSnQPw7vuUyt
khUHbsYbHPA+wx9P8Q4t31F4AdUwfkzDIwm/QHtao18PwpaSgIMBqpxiYJQ4
s8VHiL5sNRcMODoNBBCghPyTr6PLCxj0ExPHWu8JZ21pjdpHMsG4Xs0pxIeH
2fBqONZAbfXFiowy4gAvWkifKqnWpHGcL2YxGoJ0XfRWKpt09Uqkohz5p6gc
641poahNwaT2Nholb+HKYV/mIKK6WeXGdycbM5FpYhPB5I5f7DNc3TqNU0Yg
n8K5FSLgE8SUDT4lgkBbeea4RBv9xSBdF6jgHAgu0R+sB4QFX+gWBAl+PbIq
SZPVdaoRIipwwk36B5MoIczTsrIRL0Q98XKhTC6+pxthBLScP5lcHvQsStSa
KFfqCgP9K5vrxSV/IsacYm+AGce05+TIUdbdoc2UlpEkSrBIp2D0CZzNW0DK
QJSfAzq57IuYp0ksJ6XCSEkpBS1Y6ik8Bx2UhJQIFKy+entrNJfIGZvDRNWf
3U5CIdm9lSPCzKnPQ8VAZlpJnNQQewxsVCTQeH0zj/OWMoVu/JlRMigrlaI0
RfUXP2gnss2VeLW+Dh7QdFkRJ5AjYRkksF5/LzkGqa96N+OJ5FUo1hDn6ovY
oz2qtCNhsQDln2xwZgf/bfzEgNNuSPzkeFkgv5RDhyyk/JhyPR54KUB1I2dl
HqEGQBZqM5GCJrK/fqVCjxC0aq2zJXH2HLmHfUOZnvqaUUvfMxFiAqU6MAfq
C5gaUuz6oj39EaU+1F/EsQ0btInXcqlTdOB5E2oyI8WFVPFNWDq5sVYkYBkB
U/Qc56UIhjIchR92Aaba9sCXOeuAvbs+bDDwlAU6DR3yzBuT8qrIfk27EZIt
/RDjuPFxJGGNJpobdipHROmUOZ+aqwYs0PxdNKIpcNqNRX4PckGmOhkoQSsk
vNMlWTCMQtmhZ5x4y1040CBmpDl09Is8j/oJGsoobKLRLF8YSnSOYfge1pcT
PiNsBm0UEjYRcHCLRytYxdTIBf5LM9A7V9G9gbBZNzlGRHiyNfbRPmYUFLiR
qURtPY0AetDzQDLG+qpyJ8UYhDIcCi5j1KrHCvqxoRVMUACd0XLDQUl1xima
KY+XohUPh/Qy7YASYCAo5m7xbilWlRMebjKKGvkt/IuEhf2GrQKIRP0W/BZF
Ef0//O74t37jblFr65KYW+VYDCm2iowV9aIkMgG6FY3rya0w9utlMTH+fpNc
bsu2mDokyDKWHLrjVm+ReHQau+sW+c12KeKM69AJBekJzZCB1jmfaDiApHZo
4nwaiSQwuSlle4Cx7t13W/2G3QeuWDQnbdp8FNE9WNB7dgJbqObX1EnUNEYA
lr41u4tmdD1bv4X70kJaPUD4qreFbmaQrtzqE7+Fo+V8jgmXUz26dm6MjCYZ
AxIAJUGGPN5aF9pvJvZZvtY3I7NNk3rJ2atOuFznHI0387fwUGnRIm4QiSlj
fDmhfKxrJxRPp9GVrndaIUDPR6xBo3bkldwJNXzcLSYgQ65Re+AucBDvHSMy
x7XxbVOtR2Cj0AyUe2OAvYmosNV9J5JyB52JOgHF3hS9ULlvdQSZod+zh1dI
jqB3Eq3GJ5WC4latIHPEVonDQ3VKBa0bmrkxay1clBS/8VC85WtrUzq1iWUo
j7n5EZHE1BlPm4zna0ow3l5vRYRWPr9EAuuVIbVHvvBW23J+/kZldG01hfvg
JL/Im4Prn1GdaJc8ey7RzkXnEguuDy12GI7JqZex1qqoiHmavIXc3St5EPZU
PCB1KQZW5tU5EMMjzhacanFLFiIwXFGcbcsiN1HFXhL5kfoP2bVZh1oFKk/R
VU5kZ7rM2aA+QUZLtm8qLYZBKD/btPY9x1F5+92awA+KiLzwEwSVxVO0moY6
tt7x61z08HBTlUxlHtB59FACVwoYOPE6NtljbZTkUSc8LZBVcVbKij0uaiG0
4DD2Q+vsjVmJGXi+87ICqYu6dOq4t7f4J05OQKC+mfIbACLjjOm0trGLvAL0
yKKBhazUmvyk+qRoEGzug5P7BWP/xYs8cAFNmguGXFDEEzAbdNuCaCdlC6ht
mmTlSKABfhHMYnK6aSScp21I4RBWf+0bLB7zj8PwpOTFBc6lJU+3Ro9pED2t
BWs+FXrNxeSOqSv0C0ikyPY1TYOfU25TUGd44+MiLZd1vnp1tzBIEYIi9jB+
4d3WxE5j+LTlu8TCjCUN2DxN1bYkrcbRC020Gip1biITBQ3LHXGAaKKF7S2x
zVQxzst515zh+hyWsJ0lxWH+Fef8BuSOq7ueFJGfHTQ39WRKA6MN6XjtfISB
m4yANNopEUELJ+eRVF90IcPI0wcU/AXh0bEasAWkkyiinhwLCw461wIChWvV
4itpCYgaXEw6YvIKlRbiHa5Mn7jzthSYKpnC/cZ1ErPkJSNBctocw8mZXshI
GPRDoxrQp/yJ4Uz8kfZ5Np+VN3nvdNzQ+PYWWx17L/M9b0/FrwsNsCFs5itk
EVSAt/c7/bX9pU/saH1KbVH48Ogk6b2pQy5Zk5jQPfWntUCBYXo6DMMg0oyY
xwlOXXsahh8JeqyMra2NSIA2XrjjssowA4uqMnJuIUWPAqrZFHBPO+W0IaqV
p5iOANr3yjIaROfixl7Nxs9OXhSstkQdL80aKSxBx6zWPeE9pmYZWueahlJo
SluvLXDrfgJi/9lHVs5rs9jEczpcTkZ3IpGIMmkkFxbLakehDmUSe3yDfiQc
rMMyDhQI+xDBLLALgXVrpAJpXxVKSjvy0VoPp+DT6V+FG/LG70kYm/ISiUNx
eDfzRlo/lziiyCH7kM08nG6MrnNijJzI1kIbxReqNBEX4aZXA3uFDfq5mZZy
iVQu42KQvoHckVTY4rbBTE4Bc3Q9zp0qQsp/eoKiHXaZgEgcg8D9eU0ViW4u
gpjbOBaAjBiYpcRXAuMBVugFcIOsGVLEKTU3kcQzyRcUG1Ymxiiy6NKQtgRQ
4PRbBi6+KrvIkXFRKrj7hdrDbThRaeSlPRGN3UDYHtuTZle3A2yxbsntbSem
/HPHdEihxDAzmXHZbKk5SM6oAaEUIonG5Hjr8u1tG0cPHPnDEPYNAMZaRya0
TQ9EaLDWs3CzeBT0hMJj5xnx9bFU83NH0RyeQLNESz9TC5B+2ZgR5eXT6ZFU
OEahz8GhjDmE7qVttrSyi42aQ3GSxdmkxFCAQOi9LW/Ftn5pdrykvL0m/iSN
EVwdxgmcYysmajwqE7OB0pTe41IpXBgtK1jxxiP6RymxUMRirZHEOTk24/ON
bKzwTm4mIDhVVVYbXGbqJg3MVfUcpeuJRA/+OyQC5ou6MeHe4Ri3K0qTRu1n
3eBu23JfSLw3orWt2gI7NqtW3Tsqagfe3V1jK+6rJhDavGf2yrc0QISxZi+T
zEsXCeVk87PNoqKwDUNMsZxUkdLu0VvtoY4tj03J8xuXzVxRLfot9MloKDKW
CeVvF3moNNkPDR6MtSkWdottyawkILW/ZxmRRHPWooWvTKXiKl1QnS/yi/hk
H7OL0fdAWqdX3i3TjHY/y1AzlDko1KR8C7XQ66+Z7PzU6kVESTOumVNWgROn
yTnK7foknl+S69THmVaNtnSU733gBH0BFcjjS01HrjllC+NcOXsLBMP//u//
Dv9RY1g0SEuPcIRHr8JHF0Ds3mBF6HPOdHqE5VYfobSGv7JAx8+cyfAnLGxK
2aSRmsBiz9KORJRKTQ/5cz0G+Pa/qJj/rfQAeGSUYhzWiWGUBpdFvVWXdbzl
5NXSiPQtSjK0UJVwucvAZ/jvv9O07UsFL/PE7rQ6mvYVIAweAnOcDOPJcPlx
y4qUW2fbO1vc0ajZ2hsd//y3v8EDWZBZDn4aLbZ3cDWfaR3WYmJXQOCjdnDm
mQN7LvNtt4r1hvD53D5qHclbruQtlhBO9a2X1ZSSvEmio6rfQzuA5vbhoewO
n+z83fzicnrGBJ/B2jE6B+se7kMOeBbXIyo3dE7c3szgQdZVOx6ZFz7Lv/7O
py+nAfdumSa9sAXYoDF3LSiPpOgZVusjks/+akkGjGubcr8Gmo92t3efRdTb
/WL7xaudp6+2t//26O9fCbXFssoJZslki6juluyxF1Zt5cqB1+BLTwrDmr9r
1X/7ipPC+xF8RtqEhmo3dd63VK9L7rOm6i73tCbrPmlhzUdqw3asbmST3cgF
g1h6CGnZ4V5RnatIalViEWnFZZNxDXTtk8Bqjsf1uqUGPndNxD2pfNbMKGYg
XmCvFTh4kBXYdd20rcB3WEc7B/K7m0mz+XxJbpDgLh/9zxJDZ4u3UClAjO4f
OPlkkmnMVleu9CNwmiOhzSjV35b7UPuXrt/J/sCkHqcwCAzI0puTcJKk6SLK
s+Kjlj8wJQ0cCUrEcZLhA7Zpe5X/O3FpqoiYiqA99tsBlZtR/x+2JHNKhpL0
TrpJ6CUybTT6ds/6m1p/9VQkPtq/xm6BZ7sXW5lJqXqPIHioafDooHU+rDX7
hW1vk2mkHSsjlLE4AocMimqdpHgysQ+ZUr/7r22nJ0zfAsJ4wdlG+L2W54xd
ONBAYxAPP2C8AW4f66z+iKtQ+YNn70x2cni+73oFsZsU3OezGN3lKDW8r7Hy
a+i+8z0IPj+00NhJTCKPoyI9blcqdLjtFjmyw4BYC0YpNCXAVJ7S0Uu5JwF9
0DH9YBzVWH6OZJyxKQueklCfmAkohHbCoT4bRONvKjLuX7w7u1tkNCwRbtUe
2XxNEt5oAqvqvVaxeZFU5Bpf/PxF+d2SVc4KWNvwFNyd2U3f9w7aTvXGqHVH
ic6a9YzXaQZiY9q5zGmh+WE4SODndtomE279fJmUPpfld+YO1syttaHwW+ry
wEowFZNaYIViNsCYqhC8rD/VJuvQNRLaGbWSpq9025nVisWVxqh2P584hUT6
iqabEGhjE+7SNgNf21R9UtXsgW5aomMHVAK1HoS+GqoLDqxxyqqjF9YM53QM
E+O6Rk1x2XOv6rtWneSQAYRiYA8fzR+aamVKazGe+VWvTLcZlEvwn3/leMAx
2kPsUZlqPbXjWRavp+0s4EpxpVPWVXO8iYDlxjaoCEOV/9OaQjzohlhK5G2Z
xDT0+UgvtrUa/E/LcjViLe8snnxMm/UqfJ8Segmff8h6tSQW+B6t1Qk7JtJH
nvqlfTc+xM0X6WCoWrDZSkDANKty1J0+let5tPv8YmcX9K2WytVevh9W6a+9
TuMPojq73PUhevo+qPW969x5MXzyJYr2Wr60hjf9DtxpLYeyqpxCbIHRpNhe
4EMdY+Fcb313AmunH1SPnw6/yCbxB4DqbHR88VBQGWuQJooa7d9cw4F/bwbr
UXE93I3xiws8o7hz5t78aZzXqRUxbKXgd0LpidKxFSZ8mxXtqnddAyzJeiZz
meQLzVbUQzNsRCyEvQZxL31S1UxH5rRtWJbE6bRHCUVc1aYwwph46bu4mcyo
XgsmPpm/ONgd0w/HBXCJ8ob/LRktWr9Fe9z9BXWUoUJGOpDWVi11dNLaKoT8
MitzgXaXweyG9EbclCZsH7eOeVm8BnyD/s1R/P8gnW5MUlJux8A0f2eLlB4l
+ebAHDPHAUR9AbStmpO8Hoib3WSs9EgcwxbkZvAhNjdeDSQ6PQE+Vg8CkhPC
OptnaPNXh70CkLQ9o+RpaXMppKoO5gDvA2hsNsi0KA0YRcZi7PqVJCUp68eV
C7yjMl9N4sILy/zr+4OL8K/Oq+HtLT7DymTUlMtfIVUr86I6ZhnG+HLMicFl
nIVxwtXgghMWfUano72t0ejEwVt01V1RPKnrJglub/dfR6OLvZODvfMDTfDH
qBkYIYIRuD5O+46ZeBcKbpWQdE9Ik06M2k+QqkWsAv9sDJxBVMJNcrVbzLfD
nCdvOBqht/emWwGHS5j79ckpzOEOXxIFKaIoiqJzhchMNfZNH1kEXrLkUpqd
8ufAwinJUMRS6bQa2NrylCtfVnwG7uOymsMxSNV0jub03NzWjmhiT1FCVRui
//Jm+6FW+nFzTqZuJHcRWNckRzvzLJKgNG1Pp3RI9BuTIyxpErasn2RetYMo
pJwTRYX4I5sarBx6TJaHHzV813SoCPqTeKjJhy2D7brNCxB946RTWg5n4sjp
H9kJOEXJnbI5LUS050CuYdWFVe/a4yn0Ttl6hmn3RMDR1mN0Hm1dyWTSqfsj
UTWGPDI0sPcvRhPjObSScgaqUuhfpmCQPvA/AFJRNeNO6vxhkXQ+lldbT+VN
v2cOjIcwSpZ5mui8fI/lL2QrCNlJXDdH6DqQjCKOFdY66aSABS2LqtMtEpMA
WAFfUjW4llXGLZ6sTDnAMb3aRmi1XkqINOKfBJnhgdBBwZHkaXxte11gCznj
QSVO5ZUhmV9mV8tyqVqm6zFQ3cup48o6JmMP8BpaJKowVSYX4jxdpA1b9zOT
ejtd5qqHz52S1FITTWiZafNgO1RlFH3Jcdls1XFdHSJp7UtjyRadibo7iaQH
JQUTir7IAhEpsao+06nIqwPbdtNgtsKCAtJNQVztxiYR+mle3qzVPX8xHsy2
d7ZX/7yXZc2K4qIJaHf3Rb3lOJy3rnfaJrSWIXCz87VmbnUfvddTMt+P3oyi
nd2dJy+3t7c3aJd3KMcG3g9ewBnWnl9SM7O4qNFZVG1YRrcTl78ORqj7qGot
7fyXTn9pci5v9Fe33M3PH6DaeYuWNM77gK61ajH4tOVRvtNc1851PfuQ125J
pKUh1Z3TH+t34RmZbGRCVwc02DhwMWNgjmdg9/wQzQ7oTDcyruVNJc5GhMSI
ZG4bRGPh6oTexVw5rOibotUcR6JgW18PTO8H+EMq+ggnkmLeVSquTRYjtFNw
npraCBkb9oyI4MS5GgnVNPtCBpYaY5LpkWvnsL5bpFmDgAzX0hCZdVGbeWV7
FnNa3TvMUkMjXhccbrpM5lQJaIslZimc8oaDyWIZVCjlmD5BDH4+45Yx8/Y7
YROCM59ZCvIfmrIJvue6JawOnNg4yZI9Gp2q7dVK5l5zUvLgeiuyBtVm1geh
H6WspCKEm0GsmEFFwLj0dLvuuxUEDeB0l7bwutPGhEU9gyu8c09+fBW2dqDs
222/5snm6v2oevLaTaIZbU6XhuKuNBEOejt/oWDSzGAhmBc14MBNKlJCPQdZ
y7ee2YXpBynFKkFZ1VxDr53Xyk0SlMUMQ8MfJJ5LfgjmmoNh/UGUkUdGKlNK
n7NTNKBYStl4/dzbODEw3l4dtk0ijIcIcfy1lVXsUteKTMJ8yQ9m6OkXSE1r
BZ9zkMKrEfGGP0byAViyPycqP60Azl8r/jiAPiLjv133cpkljwyvJZHrpzL5
Em5LUJJANCqAhrdzzr1a0BunklE/uz2fwSWgLgV4famXwWR2E+fzDRxXJ3i9
Wfpih9RZXE36Y+/u2BcffCI7W9Awoa1sLme9ZlviqxGnWMgd4wnhd55v8lZU
5af7b63q2xXc140Bb5XUWrHJhBLMmaTXmDJj4tL7d/YwW/rx7q6xpV+cnh7v
7D55saX28i+XZ809OaVr8qDAyqut4/XOrjUS6QaTvn/FBu5VGrRQcGDPbc0+
HmjTR6mgm8EAdFIpYzmN9PoBPfzZDZZZiQ/Zqevhaoucw2Fz9WqD8JTbEJh6
wFxIl6QdKfotkaluA3AJ5Gmxip5uUlLS0i1NS6H4PesYeKO4uNI3jhZCNgav
heljTAYDZygvv4QHUkezlVr8RmJOFYI/Sf1IlTy1VMBA5c3Qypv2onCLdLNN
ETNUQjAio0prMVUHyY0ZXtESTfUcLyihMXqc3JzUKdbupM9RkzvspS4VMCVd
ROw8g3YBapPG4ZSePj883sOS62jOdrvGKdfrcFinuK/lVm9XSVW+qeLFrO9C
O4yWniuTdr4yv/XwQmbDyKrOUTps/eLMQ1l6frArJhjWzD6l696j77acLWyd
m3EfmdhXL/7WJRO//8yucOLOH7TW4WujHjAGrSVa2ryRFLlE2QHCA47P+cr8
pkGavEz87chVwNeerrzpyTnC5L3DoJ2f8ALueBUJwwlI3/cZtinv+yb343mH
QTq1/7ayLdeycudByr4H7s4G3toHzuq+9GhdLHvoAfemdXjH7PPRuw/7vqKt
ixnndIN6715LFqTfeuXcips9G+nJ/+Se9kHvMMM1OSLe+lriTO9kayMl6G2L
TxsJRN5Do3QbdE17gOjwI4Il6e/+7Ow+ld3cj476e8U4x+4HlvhvWUTZ8ijb
fclhR5BzkGbgHdFDLlDgxHkeeV0XyJekM4w9EYPsRo6AzgIFxqpjIjBzVgmJ
ELe0DWt3A4nHj87Po53tJ7uPxsaKtF7DQMHR/Bp9vQhpVKWsuOYgxcxpzkcC
FFr/0GPU8qNm83maoLnKjIWJ2dkkQ6sctwpzCi8F0q0v/N4Poq5Ff2PN7Qc3
YdPLCebV1QG9T5YXMg6IVKsrIEn3aHQakv3LM4WZ3r46QiAfGaCvVVgR5vrj
7wDyfs17E6glTsaMMDU1fjtwAggJweGGh7YlIExwIuUtDAKFBQaoynpcOZRq
B5jwU1MKiY6nCPr0GZRwyXTGzVbC1+WRevZKqgU6sHnJtV/UmfvZYzdBbSzg
9K2s/dBY6hSfhk6QytAYpPR+BW7apr8TD1bmOmo5uUE7rRMTRcm3g+UdQ7W/
DX2DvqfVGJM+PLX2rntiiPX8ERnRMOOuqd+a3Uxd3UxqkVUxB8lEEyy1Cljw
ykmFMROwzZ06pDj5L5dZjB0RbC69Lb3ClRd62nAOw0O1ogLymZAnTi8vEvLS
hFdVuVzQrUXLJwyDbohpaKpPxjljKnezkR0MOaUq1nBjJ3cgvo6znHMyFi1Q
cEMQW95BOkSnSRBT2xTqhCNWFGxpYY0tpkguIWXt5C44c9S2/VC+sq5Zrk3l
DGZCrSs6S03L0bhqtZZ+7zqfMQDgh44B1RTKFEOo54TGqN3fw4hqvcc/LUHn
BAL+sNBlsZt9m+hlNSZ8VfSyzcMVR+mCc8mkVoTx+vUaCn/HcGaTrfpVu6G8
OMc9gz0ssBGG3ot77+PJpn3YMBp/D1nxgUrK30fDaK2ea+SGCTssLBO7FLRz
K9avRxgv/OZui0KNYTstFU7B7In4aZGsfW2zYMpTDHiIL1DeCDU/5F+Rgf71
VlLnEg/8Wzdo4e3AwYGeDXyBhbQVw4VSrl81GWP8EPM7mKMRRdKnSMpbdFpH
k3mTzX2B62iOayvvE9nm6sya0GsYsX2pE0AmsX9qZjQZj2ye3S+xzo1Um3Ti
YLWYhQkGomKuqds6VOO8aO0UZcohe4EzFZdBa2d4mR1KayHdk+ukVkCLM1qB
3J68nXjfS2+so/l+AAnXAyS4D0B0J35oH2zGPND9rCM4mubmNMjgnorcXZme
c2tV3FtrHjyLLz6D9mC+R17TrKSKSePVDydEENstGsuxoEsQA1+rCm6ZkVxn
IF+vbKvDkKsSONVSJISukQryMUUqayxh1gRX2TX7u6mAFHrMqR7Rqu9KGbmj
naaoNc6l5fNNWaHb3C3tqqGPA2uLxpRU/oyjANq3DITxvh84KJPL63VDODlv
lSr2kd08SRd4qkXzKowDAZxFAW6rkWJLxFm51OYbIqzFbrWhPJYWvlmxbCSh
bm3rEYRRJFHOtH1QiHhhrO6ZLnQt1HCjKscU88TPL502IjnVPZeUXfT6XGbm
vtAnpvmCKMbbL4xivP2CGh+3ZjXRH3ET2BHUzYJ5iYyqpo79VIKEyEkBErDp
ZErnbqJZAvOBlMI2BYeo5sL62lUxpaPGtdSpIhHoEaL4o4NlJRZ1ala5wj0O
DOZ2mgoQtKlOk5Xc200SbasO4o+wpjcVVtfPYrgjCMIXz7Z3aOTz1/vh48eP
X5oy3FwMthX9LOhtAnQ4pN8ngpgJsL52Pkev+v6lFu00o69VNF4TnuCWhSL+
xEACunMPnWOqX0d8htGl+foB6oe9i4xErRsJ1wLrZvokT1omwPva9sQ0FNS0
U6kXZ6KAA58JeB8r1VzDA4brFKS9rJJwmT2hsQ9UkOBSfhvtKMZGxFcwwocb
gGV58wHLMNT3Uy1+PyWHiPAdC6OEiK9d2eOHrgyYQGtdcoAfDJrcWxVbu6qn
d6+qm0iwblmfFpi1/JWLenGxfQ9QtfMYOmnDxYfFfPfpQ1SS5dXW/PHvqpbI
1dmM73cg3caz33ACHUh8tW4j4kpHwYlIheyVwG1nFLZUVCZ+oyMjWSmzd9Yv
kMuDhygq/VtGOaxnwynVnrlju2mRPHizNN8ftdWeBKGOHvJlZ9sSy9YoEH/w
yXYyn7qbffC53m+jX3qqD1Qs90KpvMGHwW1WEj/qmFcoUfPYdFcdFyAlgQZE
CoHIWcFE+k+KVC0NldVmLCleLL5LmSg/AnmJJvlZnE8jqq80/i9a1wDW9IOC
ShqgofKyrsXVj07cfEHd4UpbIAM7TOsOWmImRzNPszxdb8J2BOxDHPrehmz7
YUQd66w5e5FjLxsKrc+uyUeDirnJNh4YXV3ip+mYOSt7knIjZ9Yx1lq8R+IG
PF8+0NRdLdXMvS5O1+T9fWAXwAfi119i6z0TMJAYOzU+BScw7B6yyZO7xQAv
U7ElllDO4lfvxFqtO1uQ9GZ0h96/qAhs6vmrnd1Nm7LZlm3r9RUVfflqd0Ib
1wQZ08RRLu63lZevHm88Hy+1tBVk/E08LxvEMcH/jbi+Hnd6zqC7kS+Qsfzk
W6A95sF6w+YNuxdN16f1p4i8qDXDH2Xh9JOIkajqA2PhVCLR2aDYrZWIUqa3
P9wftQsn8xm2wH/dcTBkBmixAUMhcCvumH/UProJ2xjILQ8jsrXqtl7rU2Xn
nt2di893j0xwUoeUCOgmwEK3bMrFrfcs49vLf3t2VWI4caKIzQaMB4X63hqL
MNoA22L62JZhfaBJdy8wS+l2Y+A9i3GIDUBcCo4rGjo2XDZrYs511nRju1pF
0GJuX8ZClDPfj9qxWiqOk6GzZb7iETSpveak9Ka0TSnZ+s1dwaSHBkhuCxM5
4KDeMfyqZk8P+3L4IUrkF0BAfcnUkKcgJAs3QB23x2jS8jWI7UxeCLyPzbm6
yOgvzMdHwsBxYn6ljhBUKRTuhaAqZXwGBupUOsRGr78/OaKmTHfXUeeEsCa+
SvUK/g+KZeA7/Pv4/s1xGOe5pRJ3yx0gdNwpF3bojL8Z/VlsLV8SDtDfGrcf
2dYDvRVw8f+HgAC8zevFbXV7rIOrufsU9cZ3XTzjLfq3rrTBxbO390AM9863
qyqkSYa+xQ//80Ib7CUcdJF44/ofJJlekHrfaWptG2rQecyA9FJtSrGGiMTp
9ZQ35ZjIFyZ1bzRq8s76N90Urr4ITq5I0xPSKIr/iPp0r83z5TbeTmKviK/0
mORW+hf8MCKO4O3WlPEuK/3BBKM6BMA2JQIaSHw4DtxcMW5Zj93FgQNQmTr8
AvYMfDS1Rd+pZhIJw7K4ftnJllZCgSz7ZGs5sdxjEtjQ301RHmNmDszeCgog
uEL3LVUluJAoM7//odP6y/FCsiOxU22J1ikxvKYFGOMBS1FYfHvsMM390/PD
z5/RcW7qk3GVnEY99iYXfq7bwdgGSolzcuYr25jxOoud7jcuFHvjGFwPdjuW
YS/keE8F6bIObK1g/oV8fcjVbEIh+4lleFlslUqYg1TUL9KbgEcU9ypIEzyi
FmVzF05iZqvIAB2RZEIOO786IRhXZcmNTcUXOeBCzFRRwKsx0C1B8KO9Hs6A
DTXZMqVzKVSYSzJwwEZTUUMdIRCK8m7cCPbHvtHiErqytq91ot2V67tc74xw
gVMqOa6dkPC7BTIbXHpubSL3Fsf+MPYhhJ8B+YFP5j4SYDsjHSsPGnpOpVOY
xPEFgCuSTlYTL0QTbi0xXec8kTMpEaOcZEPGKM9FqZjDoj327Y60wezHe9zA
PT3oD9rAeVBpU6R/YyybcS06gC3mZ59qJT/3Pa3j53QnwHtiioaL+hDbdOFu
Nw53PL9QHzWgPTA/h7+F76SRVKvvrNaCxQapZ9oaxKTPXK7aaqgNGgeYaD91
JyNGO7hqDLw3LgxXL+fzuMp+5XAp4TwiQJjWJcospXChdkXFQn/OwN/f3pq/
Pn/+Qdu2x/lkyZVWW1OjTYxLk9Mnob6ZaecAd3BDsnFqGdpUZMKRj7wMDCCo
UjcI48EYfgOukw6CAxbhMXVTtSU81lXpW6QUXKEm1ZK/Qe4KEtywEqU5AupR
ew6sNuMShBKKNQDFfEmXlWuju4007L5gLhZPhCkFDipghzwHjszlsSbmVYkN
QWwaDxa2K5fVhLtI4IIHQV1Om5u44jRzgHic5Rxd55Zit9V4gKzD8k0PkFck
Gskiff6O4VgcTqfwsln1ZSUlY/kNfiiqgWBXxuYmujN6bIBCZ+enP0eniD/C
OwUBiH26yJRk19rM1MGc2rVDzJ1EL8s7XZQW9Cdpwo3PksQcyn63tzarO0si
z6LzTMkIB8qxrAPzAf6UREsow4qKyKY51s0JMAAQbja6/k2hZH0WfwKkY6mL
u8xxOyqAd51qI3Vuwefenaz2AOWULWT5TrJW0k+LXAQ7zDmalco8grHDa8YK
qbaY2Gk2YyMRJRkG7Tk5oPISkGkD91/EwHGwQr8/a0U+QkIsLNbr7I8vuJZd
kH6uVDJYqgx7mEGXJEudzscgAjXcp/AGvrCdBEmWw/2VoSmlzDVn63YKlVMi
lJOAzUO9ldr6IKtqXlAtR6Po6VxvXRgqSO51JOmnkE41ruFwXsKgN9z8jazv
pusnymtGV3GmkHoONCxKu8FaNoJI1qYJnYFQN1RuAKQmawYBZcBxOWfM7KI+
PnWDYqtrGLTz6Ka5bGuIRYVdmhlYmkk5fx7R1LaPpKcZrkRdJOUMtWH3geEw
c0EL/3IwMrmchOiMMgM3URSPF3a5AE0qnC/hACivzZ483NCFEx5oy/xOymWO
UAhvKizNizT/piDaYtVKb00gd1AJXiCgl2WlPY6x1PYMLipwSpxCX5rjWfCy
AgYhFVlFREjSm3BRZphwcIksT6lsrAICe3OkvrzWMpefgtlyniWoUhAXNIkZ
yljaqyZgs9iPOW+oC5lQbg4tNfA3rLYNfKwZHbiHoeVTGPUp/MDEZbo1KliH
GVBbbVK/AHdQb6dGbcv5grFGDedZxZ1sX6n6XC1K2gRgcp7LjZoynwTJrsae
t9RxF2Xyj4452+NduMhrbDqbEUHCYnnXVBwNpRwpRI0ws9sbBBphXZdIgbXV
oIGbd0fEB2HuGc/qVX8PnI5fjPfcKnbPgbkPUrerdQeoSRmQksxVCwftoBK+
5H/SLih+QIewV/J12pBZe/1v6FIYAm/rLSOu5bHkSZC11mSGqAcEYBRYGGFP
nhz3aEy5LlJntXublThqU2X8ITDiC6+SOhk5UGhQxqeiiGinIyKTcTOhGJSR
VZ3VbIhBVKOS+IxIac7d5MzsAy+eXgjkUvOJ1GxjQOWtgTDf2mKI+VnKJA3u
4zlGHPus38U2n7Th2q5AJwQcyVcB0Ko8xcpEXTnBdlm3UoLHq7mhPTFKw9UD
qQYtpjTAt5pCZ2CpJUVvW5ayQTTg3vJxoLKslcbZ1sKSfLOS3t8Wu0SQUgNm
rULnPcwIozQm0+F5itnYD/TpYOcO/PgD2kA+3ceQ0FLr903VUhgrYtDzWPe3
Mzhjq+RKpgo++M1VaVsbeLjq7YjCThl9oxZqCf11ArOVya2A0VIyfI08EI7m
aa5wzO9QRGqPxDbR6ZJqFniN7ZgrsG4JlAQYp8gYmL8DW57gy7kJr0OpzCzv
ctkQv4C7LzW4YBxTjoEeGxGeFJG4+OgrbUTWhh5YGlMSn/uMoTCK14AYuweZ
gF8oMN1B2/mhlCfCRsxdrCsjSsUtwPLn1EKzDtyvTJs4es2ej/mcWmY4YqmZ
Xy0j7oYydx1Z02cfGenbG80jBaroe1YYIs1J+U2qBg+qGkKvvsuSJHcaKhCb
w8qqbGl31H96G/FmipcClRrvI+dlECjnaAP/LTxOkeOse48VOHzvDdlT179a
82sXoGPl3V9BhCwa/P1kqXXbVIsu2gNJS5IDkAzEFPWb7TSZ6NPuHNcxJh9N
CAo/y7+7b5F8ha8cSD0HDHFxBPwr3SciR26BQ7aRXqQw1ZcNVmj/nLFi2ljr
1Rk5wmC6/MD2Ivu+xpya3jIcUCG9HobOq0EPIr5WDP/NaZHZi5OKl5ZEIGxa
f3JRDlY4bWqoaCryanzlAhtpa14LyItm9hZUPap/wifw0Y7qFBbAwVQyJYTB
taKuYcur6OnYkY9BjfiigZcLOyydM52wt3PTMwljMPCUeHrx0/yaVqVgSV2H
pmXfDET3SjwwgazJ6Qms3i6EFZBEUjXR8tY7sVbXvuFyMgY7UCxz32+1RTTf
EdLcZHX6Y+ivJHBHDlsju+eFzk4HymsmCsxEQDl/wgZ4Tn9baa5CbV64bYvL
JbjmplJWx88ntoeg4QIm7CvUjtAUu+Qv2/2yTtFvw82QC8rNlL4qUrAlnHGW
JMaQU8fDDlMKe5iSnorwmEBJF68cmRtZyca34SMdi+QWmPNR+Hnsrga9UpYp
Ay4gMgXo1rUY1J6PnNiGcuPBKHk23j5kzFK6nnzh7Y+VnNPHMpLjn72ZsV5E
NLKWJgnpJ2oWHLA5ck/aZLEoYarGqK/LFBxqnP2J7dB8WE6D7eHLpx0m76E0
bOPl02H4i5U7tKMKpxJwR0+2TQSmK47aMgyKhRTus5LIMbTtqaORiDxrcXPs
F0aheyzaqCHZroct1tNyWTWzaMaXw3JCI71h7XNzfgHZfbJPzSqaopldDGIv
Xw53XsANcc4/5iQPMwygaMq1iuiDZ8PnzQzt4GEhXm3ENdsOwAGi8Tcage1j
Ud4QxgPtJlOL9FVSQj0jPY80qz5vhSpPMZBHutgkw7FwmaKfTZXCgPpexpU4
o53Cdk7lAI1g51jPFdkvMOtUzyQH/ZP6xE7K+Zx0Rg/DGMMV2ykCY5JKoRqm
DAjnuPaPrmuGb9u8HQs5boAssba0FokolIxbNSi9BqJeChFyfWZIPZ1xfWGg
qzPITnRA48fufZlH49hHf1ZqsmXe5/K7zpZqRn9T9l8cZlR/ADDAGvx0IvoA
8EWMh+14VJMsQ9uNJ5OlOpaom1Nr+xK+I0SSxES6aR1nGdxN0yFD0JwL/kuX
7ZaN0YmYcCfl3dzeOr5SU8b3ho0mWpC4JOlTm3vtuZEHaHtyFAYnFowLLLN0
TehJxNHT+wJrWEa6Z70hKOdLnEXLQSI025mHsQZFRaJnPS2xcSSuScbWFTwq
IFO2/25o+levrP23r0+zHQnptoFlbczUWjEtp8uVZx9TbciXpVKgwVPdFk56
nhkOLjtQ9C7hg6cvm5mro3JQSXc9ZLqKqdZAixLzNZpmU/tsg1WGQkP0SvOq
qRafu/M6iHGf4bIg6Y6IW0d39HTGMAbpULvfmdAhDwTu3fPcI0q03Z6EEuAc
mJaTrVh4Dpa+Is5CSV8NlS1xwrV5wRtaZpmPpdz5BpcYrw8rl6oeHvDysTlH
dcXve5IdyU8tJ1C7YqNCcxgcNW2eAwSWIg0BENlVQeW78Rk5jXgNNkdqyT/S
wVIZTUA+7S3O/G7gm8rxBMUaeLkSAchlGlycnX0OgYltK9iu1Yi5Dq/FUuuY
bwgO4vdSG/5kHYB3GfPeEp3Yy6oLaxIeMZn5ytYd/AD7HvS1PVAl/AMuZAtY
tNvIVxsImz4ek2mkH0S0cmOc+z37mB38chDtbD9+sfvlPcyQ7H4wUc13x5V/
08IPtBiJnP6KpXx9pQfnaD+QsvKlPcNbtuB3qYh3rj8DO6XS3cftr2m0tvNl
7cZ9c7GhRY7l2TxStWw9HOJ7Wb/vAwZjOfsSUDwZvvwDQMFiyL3jwzHEzblK
AweXBz3otAa8Dw0S1whBtkMZu+0mNq4yiN8vOjCA5+LUSCqAS0gghStTiYZv
xldrHLvxLjWNyYgAHAp7tURHM4cLr62Uc44yZN0cA2oUk9WdNL035JNLd/xP
oWeynK+naLCYp19H0XKG6ofFywfVZJnXay+xnJNnBH35VCUG0+RvTULRzu6L
P4CktexOVpqhwpT2r1e48s9rAPbyWwLs5X0B9nRnd/iQZpvfHGAvFWAbqKN3
HwfehRj4ODnwIf77UEK2jvRaqpI4c7RNrQZfVnO0YYr0W4Tlr9SZ0rHHqFRH
va7JkN6OrDKKpVVyJAPUEaZFicJ3C+P/SdDKIAR2lcakOKKxqnBJ5v8y/0FZ
+vBV+Kf//SeK7wxvKmkCD/NQibkXz1/uhvb9/xW0KpMVBWzqFLf4+wjQ9xWe
/7dgXhjOAXs/TKuYEO5DOf1AAP+QFR8A5l8rVINq8mCJ+v0o2n62/fj59vbO
sy8XqvHwvoYJPY22d+D/LogDfS0TosV8DQv6wqV0WBDfwA9yAz/QDUSx58OL
3pZC6yjsfy0Wl39fS2Rfb7rmLyKUykJHBGvt+NmL4fYfTWOtb4nyJIBgwdMn
TnZov63xEVX3YDntfqXQcHgHMwcOagw2n86DqPF34X6JVnD2Oe459pvb77BI
QMLtiiPHsvPZBpvQG/Rp7YabOB/WGnHivaqWWqxMULeim41Zj1rXU6GCHPtK
BCYsGCOuaNFib7VJ/calwJ38NOBdvWbkKoWxKFLsCi37Ddty3dFq6y4lK0k9
w6YQYv+lBRBZqyVWTkOEyDqCnQUoJDQrJN7T9HJ7RdYV8jZGNykbf3HegfgQ
qPWE7W0Aj4Mki6+KsqbCmom4cMwcXL+XYp+lmIPs0prOpN+wRGanNQYTiolM
D4CVhdp6kg2DAOK9yo1NXYyxeF7chrmAhdaBwBcLeooDaIGRg5mYxLNGTjjW
PsImDyGmg8CPtAeFqdDgrcnmIJpRnUcWfwqEAYxLljq0foNUAJqSj3b2dR/J
bmZYm8tx+erya9MhSN1OmI5FK+smH3lTOR5z9flyzuL54V/fH50fHmCyoYB6
LPZf+xPy0PGa0Ampz4V3qjUCfxbay966ipE9XGzTi29/poLeZhTHvCneZS5p
Ym4hlyi3e4sv4aahbfD9+VFwewtyzOOXL559/owWxoHEqsuy0AGC3GJMlk7u
vq0VSsa2C9W/UovDs5Ko5b+h27mT50pnRt1CyKRPY1l/Hcdk6WGKoRY3gFEn
vBQvl8lQBWqJ7WSfNc51CzhcVF8lyRX7pjTlwKQruNZTFARto0v6hMJUrwDX
fxXXKme38Y34B+y35grcgIdNhd3UJXoZP67Vw8LLsFmrrKonAWaC2XMcaEIT
7/eVgGCJAw9C7gE7kVA5TRBhZxX5JwJ2A4+zuhzz9JamaA8dSuqCf2JuBmFv
Vk2qeNroaSB9lV9xwJsShpvEOt7QQQq8IYu0cK/fjyLf5zn7fiXUCkfSfGoi
qRgq9BckSfI/ACQCdStm7WZeRoQAFLhmSagI77+8OyUmWIfn2hrm9hYeArod
HGItEo7VIWj8hqG2WB2aboSEdmi2Og6Gvz3eefZMwc2Yx5W48TleDX3vye7O
c3Ma7ov4A98h8+6zxy/tUTmvwnOzQlBTyomE0SF9eH+ydXyKm7CnZi4yfP3+
hH+1O6QD4i3u7506vNfbYh8KAORhOfDR85c725SKzoxhLVaYD148e/LYriBu
Yl3B3gUzZkm+LOlY8Gn7XOLCfnOixytvn+xFZ+enF7DP4xFC1N3HsYJztLxs
4iv39OnD472TNxd7b5yZJgljECXoVZoMI0a6X96ehqRgFFoGYl9oycS8d5DV
KfVeAgR7exod7R+YwWuUGpNo0vAUo5PTd8AJ9i/CNDEVl9xC4HiC/FK0f2FG
yYGOTPT8j0+PTvZDbGV1idHft7f0wLwbN+ZNXPsensycmjTBI9BO0yVqw/uz
lB9O/N3wDvYu9h30qxf1xCLf6Gy0H1IgBGWx0Fnyuvk38yFxBdo1tt6KCFfk
bnZqI3DQgsuqmT4aIk9O1ttbM1IN2GjrGGGI3IU3LtNfE4M4NU2CCWcHTmSX
W+xhIKceIBmjyZ1wZrpfVM8TRUSUIozsrPlMXZ6IgzljEBB6mJgdSl12UsUC
NA59jxhIwJAyyfzA2yh0qOZYAY1UcJogdsfwWKDJQNJuYZpWOgzeths6Izuz
4nfKfEeLeWA60wITlaTkgbxlWC2IEghsSrVm0QfDpgbWhqPpL2Zl2kWDnnv1
NUZwqYxcXrutKTwSP9DNsUDNmyeWjmHKculI2IDF/RjEzk2E1UuKheUrVorC
2EhAlYaCc2M6BVFOnLoigdtLQXa8TgzHoihpntMhqoeYsqqNzmOXUVPmAuch
aWaLG/xYpVIClzpu5zEINXW3N56jstcD2/CsbiXzeAei2oZ44NXYNo8To4xN
l7k5L6tccmFeI0ZlXo8GQijnQGhOOJCO298mYeHsdFwkpkqiZQNcMh/gl8BS
V9RSoAb+YlKuJVHbCJRe7qPI3+L4bkvYYp4QpdeAsm3o7FMErQ6GAokBJdw1
G+zKrw8MFWx4PIkcFNpUc2QvCHHl8mpmsuAkqm+tQ2e0rKagvLW7Az+0ntod
LZcfyV5+4a30mZJgG493rTHGUauct9fYMlnOB4FvCKNsXS6n1RN6Ns3jq63t
aHc72t62Vesda6WREbVH7SZzubPXQWdHD7G9vLN1IrDiEn+CV9o3xDjlJKKJ
85pjiXFecQdyrTLrRomEuKilZu1QJr7O1oOUUDIQX53AFrRRBm6gC8WYY5Cj
e3Ullo1YrTOl3pKBlwYuGoD0GSK3JxUOpBdukKOaHaVOMBgF97gxYByH2Y4A
Q6LD6011pZljtGBr0ECCai/hHnHMM9aJKIhmmpZShRRrCJhskZcD9byMyxsh
AaRsvb3IzFdjnrV2KySO/jf7Izk0KglOzTDhdZJdmil5T2LZmvOagSlg6JLj
rKg1LR8QFctvc4Cle14YloWJnpTgSK3PbEa8S2t5kWL+iq9ilBxEYUzDWZYk
lKhp6o43rqVJjrVrNlmLbutMKEV4enZxdHqydxyMzS7IWmJ+AKkK9vOL92Pi
v5BzoSKrMrMQEbTyVPYaSaJxalawetzKcWDzXEuuDBy5UstgUpkwx4hjt6CW
m9U9LmtkPkMTjguGGw+8TtZY96o6QpseD9p3QCJZq5Sb0nZWDTf8p2cGurKg
Tx3uP9t59nw32vn8mbR2NjevzTJjhc7uUbOw8PF+5/Gv+PhvwPOiFlJjOyPk
/QvAa06AMlD38eNBkKfmBx7428i27gjokn0r6PuDfyHgpzHnIr2mNG5vRNVT
QZKhjDaUaLpvEG3J5otlXnf2a0q+aI2rEJYXPnu6YzIW5tKyCRN+pNBFkKdX
MaAUqrGoPWLUfk2dxNiJy6DTBo8ENtFK7GG37rp72vSTNYziaXYog3+cbjC2
JYpUAAx9PdeoEohEyqVuAhuoDGoP02sJyVexni10nXViYHwM6kq5L5xmHHx/
e0tPovbCP/+giarKIN0iUuahtbYDc5to1kNR37gRRRTZYys2aOpL46YzUPm7
vLziqhgYG4yl8Ib3wDFieGc4DHXS/k38GspoAGi728DGJgC1GAcVS9fOsxeP
UVOT0ncMdcsRST0kVrqQofkdQVvMOR7hCnsnTLKrDPM+8S3eCBMQk0zJ0zFH
9PuzJfOsqTeuKvnp9chcDddygegB+GoVKU0By9ba2EPHxh64XcaNqqzbstUO
dFnY4/BSNi7KFFZ/zBsuDxQsyptUCm3YA3eDwDmU4gqjz7i9YeG2wsbSmcZQ
nGGNx7Y6ZswZfHl4wZdlkhmS5pdD5dqVWvoKTerG3OE1lidq4MQrS860qaPA
TcpNjUV2NJn3RTA0YFK5Bhm+k9FiA/oNiDuq4J2s437qoSseDsIpd89E1I5a
qL1OlTspszo952JVDy2ggNVW7tLhaDHHDy3VmPxkn60R+nwFz3AO/Dp2tTaP
4VKIh5b/lhd8Skp7cKnO/ZQ8hcXA2/FD9DuzgpCbPAJJbOLoAs2ShC7GRsnN
FY11l19GVsd2rdQp/8MlCLncB3Z7cCokiVURjZiBY0Hi0VQQd2yOnuuv/rZu
Oc25iJuOw47juQLniVe9ZhiO2MDGhmFSchRyIjFhPYGsAFaUrwLH+U6VWrg8
jqFGSJ8uyTKCySZY2M9J9RtLgd1/yTBJpRkHdpNH785Ozy/IhyB6KafZuVYi
8shTUTihPJzBlDWpCTWwFm7J+ZSCYqxvrCnb4xjIgIovGFytTzqW8rJgw+rc
tuM0CEWpPggeHiQQU5/k8lNxBq4ixg/Il9VavnjuGO6rXieszVWT4jSY6Jka
dTnIarJbcsEetRVjGlAt6S1xpHtBb5H5KXJ+wgOxdlRL87Uqq9dka2jtJQbJ
uXurtZLYe4M5Rp5/3Gv02rjJVOQ2EGAhBlF9Ih9JsYQxtTUJSHJS2j9wOyRl
dOhwwszl6AiktpAMbnfH1yEQOPc78U2wo8nBstVObGRKVyVv7binQIOKeK8d
CFg8bkt8WryA1DdjBO00H6GtL6Suqf0GRF7TU6xN1Wpb55Sdcoc5MRUqSGrN
8FJTEyu6pZyJ5czU+hCm4yebJhP+5W8IXfLkSImp9ezGSXUAGY99nAKiv5oK
2+YxwbeKKVEYL2imAqg3qB2F5E0uGKAX1gg8JtkcKIISEV9JaCEA5gw7yI0q
QRtFiCqbwCCfjIWaHmupWIBUzBhlugXQ4a5w3idKa1pKjj0SXDye0qyFJEkc
LabzGzRneLQWSRYeqtnHdWV5S1JzKFhf/opb9xnzPAWNODdehX8Lai4Fp/S9
UDBLxBiNFht+bLrzETlc1sQ8L0XylpckSo2pbZN2RQVT7YESI63sj+zPp9nA
/LFt/ThQ3kLUHvdDWZiMqrVHMUyIF1wNu4j+64G+RfLWO2ucVhRm4y1RfIiC
cCAyoBAL4/PHztj0MQ8dOG0JrWTlm8p7KIUfuojU33jTMjFS1qlWiuSuBx3S
JKVoRaXmelhYJK9dxlOqfDi9IMjkytoymUOQJgzXp6Q7FeJNnS1mkbXp7KGl
YICFxhNSXwoi9mOsZgdiC3ekHEuIINsoiissJc3X0vRn5/GDCchs8YTTj2qx
uzROlD631MbW7Cz0pFiaZG0f88Dbglms8Q1zeXtb5XQ8iRNmXM6H9XKClxE2
ENjmSUi00k8LKgOIw8D6lpXD09fB1DL3dmvaSt5R18e6Eexd5YTinsLk9pA6
/a9IRMe6S06E8quwHZ/MRDQH6dIw4gypiLbWorvqoJo0OBABmH0TVUpYyfp4
t03ouMPq++uA3WHA4YAB4rHn0nVAqiiqrSC7pFYn3b5ns5gaKRIJ7IJJwkia
LD8BYa9nfKHBePt0RHqd6TJ8IyU6WKlvMiSlDsw0jkcCsZ0J/CsQ20as3U5Z
tnWR3A/upqbForx6EnaCjHqY8i9oPbvWmll3zcRVnQzI6cY4IGpHPEuJVuou
J8fQwUdXnchcIanbDs4FFtWD8rfXnp07f8rpr2321tvH2S0dYKqcE+mJpVAq
SxhzQn0l/ugmx6oQlXF3O7oxW2PdOvBcMK9nzS3SGThCfj/t5AouslOnvdqE
qlXDxcVi/DxmxN+Q8HjaSJ0ptYRz2Hdtu1NiUiZyYnMWXBghaEdzDMNDrx0z
F+FxGA+zWXH9UZ3TVadhnYXvUPsYCYvjsPZ1bChut5cyITjW2WnKuv4oe/VL
QQ4so+EqsVSk3THo+80Ngk5zgwtKduXtyYn/KtMoK8b2GKlJ1YN/UNd4AN3r
sgqcWyRVV5nncNhJm6B4nQdRWLYUJjCopLUqUJiSVKOBLSZsVT5z2E4TAPYX
cswZWswGFgOkf6MU4macGYLewXWHjXmVdxvbfQTpJ4yN+9FI7VqsQ/EOG16T
1Ml5a+EpRRSxRYbKjivZsZUegCK0qilguew8qduEuJ8Ck/UEbgeyf+tCdnlG
m1hR5TcQxOM8H6+hommgjbpp8HD94ILvK+r9vb6RDUdyfEkBWj3se3f+u6PF
XV+CMjKL3o41Dx19fQ40Fbv7Xebo5JW1sOeLixTcP91rfUaWoQCt1kCCbw/K
JH5II6J7LM3ls3cnjLlo14csvae75kDaQHhYOplWIfY1EacSsc8TtRyx/3pP
oFGLC/cLZaZAjSfODbSqeUdyE83GqjV+H7Obckgmz7igUj5oS3SITohBncCL
l7hEiWbtVsbXakYByXlSNqtOm4YVbetog73OF9rajKP5iPZyM1teOh2mFl0z
viDtrqbr4ja4HGBA5fxgUqk7lUtpW0xim8WL9JUDW5QwuP2dhNeKy4H2xWX9
pYhRwXFJVg8tXKCSHzCwWqSsHd6tjSV/ioBUfxf2zKF6l5Y84xREvtVaaapM
O3b1jAKNamvJmXL9ya49s4Ve98jNYpB0E7NYwANV5UTTsiwXIBAvUD5rGm3o
q/EHPJoTd+Dfg4jf4OgDftfBfSmN1ZVAuVEgu+SNrn1tK4LAPwLGVK251bYb
kWI1YX+N5PLRDl2plsSlUHsfKgNA9xH+WxpKyiPXc23X02oLjBFw3DVn/cLQ
BMjOa4mbGpja1RiC3FTLSUMNNHSvQcsxrzEyaklTl4r0WUA5GgMLxPhgi+xh
vO2YYTx2z1BOfsMZ8ht4hvquCRVB/4RBbv8c+2FOroIFe4OTvgrJd8VYsLL1
mwSldYdHSuIsQ50o1bIgENygp1/LfEmzryLZMCDzlHUjXsaTj4hgPFiwZgwR
u1VYs2bhfk2SiworrKV0ZdW4/ZbuGok0T1YAZZyAOoQUfucZp09j5hl0NSUV
da2Bf5TBg7dlpnQSmqVg6iBwMGZGBUKFIUqKqOZk2b0L0ajSOdFRX3eU+ANp
4F47RojW9VhrMNP7IsShCHrOc8xnYe8OxjMRGrFlcvxfTRjJRgB6Pwi5dQ5V
KoPiaZtP4M3w/5SvfuDOpD3kvVVIWip4bKgEGjiWDiRofl3QTu6EU3+6StdZ
WkYb+9t7Jg8O8BW7R2D1cr9piSBiM6PgQE4D7FolGLsEQahCMMpFpNCX1FG2
qWLsnWd7eBna1DIaXGIrIy+Od/hlZh3j4Rb3eboyVRJVthHDlWkW5105jfuB
uyYZOgm7LNxQZZPjwWWWxQVsA5GozSnlNctVxEqtOBruGmUTY42x/ll29Iih
3JUO5fnElMHFgWXVGGnF/istZYr1YiiAiDyvdDVfBRhLXuI7NC19hFQUDXE3
8MIqYukyvImvrf2Ez5gkO66PoXJgIHIg+905cr0riOYpW2BJgKM2P0CWFxTk
50pflLHLJ0MGHzqsYUeS8s01cgpk7nTbOWPlBoYz/yhsUUMzGBw2hI7Qdo0k
GjiSqJMQVhYTkzIoIqInycM3NYtldOYYoiEYRp41tYdYgojtROCCcPwjwkrQ
j5YoMkPnvVhNXpUNuYhN/pfIMVQ/mjLxeDQqRO3Vc6M9UfoaLq1Raz+ukAth
kw7B9R7Iq1ZY2T/n9ktWMQHEI9DjVwFzDl2+pJQTEgnl8OGAF8gOZcpWE3zF
vcmolPMx6cBclBwxLQ1Ny8UpqiIoY1LxWix1u3IWGXDYDK/FNuAaOt4h26iT
ojw7Jki0EBpp7gctCe7ja1zDuI2NgeBzM13GHdOZ2vY/cfZ9xVIC+sCwy5jm
MVSaF0E4K1YzD3UZWq5DNrxmg7Z1uYsnP1CtjwMqTfr3HFZEIZrGVIoMn6fU
q+mdTWj6yCuNBThlaBNG7YhQU6vtSnctTzrwD1q6UAW2vbHfJ5JCOTkm1NXU
3bIIggHY36oQ/yJWDuH6tGSwc+4q9YvjkEuN4zamR7yplKSmNNOyhwdo6cEa
LT3UJgRs+ADYYkhwn72R8ZS8/CxI+706RHPXgi2cBCQNGwyRdRuqWFq7visW
b/wPsUluKGz49GFVpVqmP0ekeogV85tXffxAOPMgc99W/SX2vi+o8PqQwlJ2
GJfscSwvX0t8/exiZ/sdBrWylI2PsKpUq6LiH2cEbXVJk7Z0DzaS3nvzb/29
c32te5RH7DGy9mB0F62+yqB60at+9kja3LrFTjs2zkggJWNn7WNJHUSnKOhT
cImebP9tENLl/hsoVK6/xR2iu9fuSNs0ElZ0ppFUCFJBEt/M4wUJmNoKRCus
k5qrJJgZBgcLl+XHDrlW2yha/FBzCljkiJsGJM6ldEtEIv2nmug5CR6+VES6
j8kGWxPL4hiuN4QgihF77SAm8tovHt81frkh0NKdBI0mVPW9ShsuDsTFyrqh
FZizLhY22NkRRus0IPmpw1Y/yDlW16mzhmJGqeHV7RBejmoOmHtZm4hGcbv9
w2ggjC0buNGbNvvN6RTmNVP2Q4S61tu1cL3TjuvVtjIt+MJWnS2nOZ+TH2p3
4PTuC7xXQE5sTjF6Tt+5n1mYrKHm/Cj+XyOz3cgMEjgbaotIXyhBdXooBoga
ILpRPya00dCLaI+ZX2ZXy3JZM75IeKRfDcJxCq+pKeaYOtdjv58753xNp2Mi
ObguW8faa9GtUxklkLownknZT1AIH5SgEPQkKAStBAXbceyeSVhDi0So1AZs
9HRukS0c5mScGUJwR+kK9mj9jqUrrM7i1Jpx3mcNMSnRaChNDqkH9cCP09XL
wZbpPLMl//hTF6G8onR34JKWpONvnFpsG8CKsHAByvFwkgsaOPl2Wlm4W1Us
XFdVzJAcD0gtW3t5NYmaSoqLSW1CNUacvtnf4H3RIh/tgh68Rqr7tfNyZ/uF
JEDiP03RJJpVITnR6d+8A7qkQbL756NxKMEnoo7ietzWVvQrzG/CfVnzMksG
YXyJTpMqu8o0fsqGIcs2dHU7O58/wx8wR3Rxena0v7uxwpM1INjUCe5I1Y0t
t9R4wMH1plOeLUapfhUOCcNYZbcG1A8cEU+0WQ4eXUwUyz3FWqpp1UEvQKbb
W4ukyyrDYlJUb0pifrQkkA1n1iMFkCMSs50AcJdbxXP1Pr0TknWz/jayf0+P
huyizn67vjtL7I1K7vgUtBuOBOqDHhoIrOjmkgshtX5EbKy7oo45qVvz0zvg
p5h+I4SSY+bcJABOI2IrCIxC2INcHRPaMBC0rIx5ynxlW5WzEZdyN02ZCxsL
TL4pp8kSTsCFPATZ7GVz6os728VAdK2xQwFMQz8tOAlaqROaNvFAbJXd0Dj4
B5UIUSe8jOQdsTnFoUQ1G0FEJbZAc8AciqypW4V42XgvSIsRbq1cMbszLN6x
9gqZ3F9HKjEMCtaAuEUGnhYnxRBLyvdlz7Stutc6fKeESY3Bk5OqrGs5ykFg
rbuSxuf3PHc4jIXQ/biMvo+cxn4L8xnBUGUvL1K2Vok6kUKdLbGXMiqwe1hV
zrLLjAxGKk3YuqlEcWLJ7DHHJvhgRgxEkGb0sZiiEomuVPw3OKjBAVe27ono
PQJQKgXE0WryedB2A5tvhO62gmMwrZTLmTiNJo1Qe1vhnFrpDg36FMQokpAW
Sa5EBs3TT1RNkAYY/r/cvft2G0eSPvh/PgWOPHs80wNQJCVLsrSz59Cy7NGM
byPS3W339JpFoEhWC0ChUQVRtNrn7EPsE+6TbMYXl4wsVIGkZPdcZvf82gLr
kpUZGRmXL77Agcm6yIFop5dVyZUL8YYzitQv5W30BieuC/QYry6WqPBDDfq6
QZkCx2Cvqll7mdeUx8tCa629ufYlyWHpNIzaxxXFnsg4U8oOpyKc+aquenfL
0SlD+kUwPbPqTTVThDp/xtjRPjPDGoMjorFeVPN8+D2EaMk9bLlfi+0Lt3K3
2xh0wwRzQlsjc2+sMiNbfdEX6pRKJQRl/B0ZRkJ5yKLfpQThW31Vl6iEMQpC
/Fktp1RCZFYdp2bm6HWcJB83EhThpjspLbiOVm1+s3bPTtNC157xV7SXjv7Q
RhdXA/3MvcmFYlo+v+hFq5raUdcAXAh6q9E65ULx0eeA3thTaeBOM02rVjgK
kgrmw0n2Ob+yuCqu5b0Bdh3XP+OlhSd5JaL5uPF4i1grZtrHF2U9ry+IxIjO
BybKCNnp6KeHWvbadO/lEqUVHYY6yniTxhKUcGEDVnFZZaiAzGohGKQLoGcd
dCovoPSi6xshUSnsOHDsaWgOJSfOGsMUYXTOVeMh8TqfyxYN4DrE1VrQlwxe
CX1lPDX0hOeCma7QvGTnVqU3Tqb++l9UA/W5LL6cT6NIGVd8twbTMEdqX2o9
JnbnCzU0OxWXmHLnKNkXzS0vm+/jI/Iw2DCCSHGVBzVgnhXrsXPW2OV+QGzH
eCwAZdtQNMWhEYKDD53TEb+H90CUAjLAqNAx2lBCfZn24d8E5pa6nK+1FwCW
GI9aXkuMx8ztv9nLOn2+1TRIRCK+Ftq740Nrxfainq7F24rysMYlZmcmDHDr
1Ev3MIplM90svse/vL5IiyJJyKLFe/ZGL2gagldX0k6sWkpVQsNdGWQyGbjZ
aGJcf15U8/gB/LdghbPcxgyupKMwn+bqMcNY5AwLNFgAE3TiyeAn7tkFKS6t
+LfwMRX6RJmbvo7PILpZCmGK6wUNuu1CextWQ2XGh6s7BrxJthqqbGRLF2rf
B8ljKAyOq1+3V074drJd0LknaHDRfJtsmI5FAjK65VLhuUR5SIZocN9FC27z
QBEEDV5wzLZwWh7PyFkEWBgDS0W99jNUm2uetBmvRDcKCbZmJvKCpaihH2VC
wor6GE5G35w5JAJ/oTcjFAjOa66naTfrJU+y4ohw8kVTUC0v1nJmp2D3MtIU
hVOQbS0jyy0y7pHN1uM4JOqM+NNZtfQGJSOcmB3CtoPU9oyyCraQV7ABvkLd
riSMdZT2PR9RA8qDXsgjyqBrQGBoQ/LoCq7R4MGCOmr3puyUI5sJ32XswNJc
JPmvy0ST2LiQtU/i0/pN5zULg7oPAPDogNQ3JbO8aru1/Mh0BcVeAYcl3FeA
tGPbW18HzLEPMrt8mmUmglAoiKVxylMxz3p0j04x5u9yz95pczfxAHIILcEz
cRnULfDxm3Vp6KnkWfHgPmZPCkMMhhNit3sFXEwaJLyjxracPj1zglhvh8wP
ElsGCbqbvZ7M1ckxCv/ARzt68oKIt3l6/z79eWI47b16fXGflva+yoQvy7//
Zv/+Rwxg+IdqpnS+9BR+crMnEAA8Zl1MiVMLWc6JywryA6w/Ja46potuRWnM
mgC90v7kk9U/xQH9+a5d1WjofsgUuYlfWUa1Pi955PffHHQ7pskdk2nUU9HM
3t0wrTPEjK9rs6lmia0LbOZyTTeT322vdsfWaXEpyp+wMfoe7qb3NlgRu24g
4TfM/pyyQPc+uu+MiftRCMrnft/eS5263MRjwO533Q74CN5nxhiWYAnbi8IL
Izf4H4dnXBAQeVc02rcT7NvMTpghrCwRlPl1/ox+kMyj+6/uH+8/uP/V/sHD
+/sHh5/s731y7892n5+MpkTt507mN74w6oS2I3DM2Z1dFg3smy9SypyfZoSq
67xcYSYOYKI4Db8QW0iNbBnG6cvGOvYxj268/X65P+GJdmI0/Fa4M4To9eL+
5a9bMyioiBuRNbtI7zpqZezUxzjb72P95JuxLLjAbcukxLb3p5tAp8k7F427
c9zVNN1G3jU4ZXAisO2xd+/GfTwdGNeH7GYf9GsEzzuwn7O0ArSlDuW/3+79
/NfZvJ0p/3OSU4+GYttxIFvFs0BJ8YqicvEr2FAzai7e52KGB4ZMx2sMjOss
KDasyC7sDzPH+ztG4d7omN4rIQMlpaL9M1EeOnFgtqPeVSNeBFwR+ArOKEwF
DT5XKPm7p4InH/zoPIRFpp1C0M3wC5p94Rls2KNrmZX6a6HYgjfG8x/dp+9P
nuMqiaTInYzFNlKrLTqO5no5jY7OUrsnaUURPKDc0XF9JhUE7npMCtRb20vq
FdbZ0IhzjDJI0fkuAyUfndiGrNFADnjoyaMcucQ+0dlI9HSLbQV8elT3oP+K
M8n0yicpVkWh1mnRtC+bZlPK76hvywmBlNEJwCxwrQv6KWOg8iwgwvfc061Q
J+wW1bAeJqU1Wg4pJcWSd6uJ3YKFyIA6GJCsDFbWEbxPnNtdFS113ErlWXkW
QWAcQ2TnpJkpD+AchA7LlODXLzbUpSIR8hCJ0Fp+3noAWB6TG91/e718jnjF
0N20WFbRWkopvMQ4mpzKXua/by6tyt4u2spyuk5UMh83pDHDLaqOB/CNvVXH
IQ8/9+y0VH7cG/PNyo/DHcqPd4zQyo/DLcuPu7zg/eXH0P6EtYgXtZsZ8hYo
oFhIeHBdrKqZFdLIJFdn825RhpS6By7OGElliY9XxCumWQE+Ql7T6g2RtFSg
PDS8KKHtiJu1RSlIFtTlHAfRmS+IH12af0sx0IJIGbU/WdHK1qGCqBpnq2RH
+MS4pHKgZS0X6KdxvSna4xKtvTSXwsZ7+GT0+l9/HhWzN3SINYH2NVMJcrHQ
wf2HT/b396VnG8bMYY44KPsy/SyOoIOmn87dcqb5Hup5Qks8SqR+jYuHEFOk
AZ8ZWRNNiPNoHihqSMPb1MWL6i1JefIAMdi90R/WlUVRZC3QFgwTMb9OEczL
cr6ySqGQlqqDp5BMMmx9DTyjNoYCewsJCWaseQGB+XKWiOKGr9XVz8CCDiqn
jwKjIa8s2yW82Ir3gZS64DRhfnFxHuTT7hgVIAjDnII3ccCyPEqN8MqqvXxO
grmYaQwfR1m64nyGdWFjnIJS+VEITqOSK5KNisOVPPOcGjpAMDG4YsAWZbm0
qlm9VwZkwewoLaqf2JBaK1RLsxI15oxCL9mWFDalSHZWNZU6qFGHUzorpMwM
4kmqYlbOK4il5FXB0oQuyX7J4kivUw8JSfd4lIpOj0G4uQZX1bfYDpKCShDc
7795eXKc2jfYrtPAdEDdV6mB9qWYL7wgvHkVymZKUBi3UXir+RNtlzym1s/L
RtJglEHoYSxfVVKzJu0Xlh5rE9fgm7rTqbxI1q9LTbveAshflT0ZAvpE9GWy
2WQeTEwoKrPP7ekqOxmn8seNEM+uTUNYxylmT6PrrQVPp2KdJan17pLbyGy6
Bvs2NemdCpIC+iLZ69lp0mHfDSl/Q3kAF+rlCHwfCrQ1385svoKIwuaF5cmQ
dCPABbW36EOF3cwVHcLztGEZaK3bgol6IFVVvIm7QbBJHK8YC26SmOSWcSoC
15KmFN4At941IAmm4/kuljOuQ3bcmI0rKWdeCfyjkaJT+uSUYOITd+nZIEOi
sOPC1fxzKc0Nw1ZalwhlH+/GlupkXDm9JmfFPFiyV/aGqzAdC4/p+FRYbI9D
mjC1F7WunEfLYL/2gSwE/8xpB6HKm+bLVi0BTbdWpIEphH3XEznjeEtXTYMx
nlH1MeHQQKPsNGg0b8jzLGeJX2mLD1pai7ieqWM9NEQIjHsfg7+ArcHjMxrA
KBwMnIu+fiv6udj6TqhxWlnKwLJESn8SaT0eGIMIJn+UDpyV7VVZCrc8+7m5
ruUGdlwEgWEKq7RoYuIfiEs+p5JXISx2Y0mUhUrnxESpTCk2JkorSlUTL0ED
uNtZeU2UTny6Fo7+N2Uf4xSqYSv271LwVMKGSIniKZps81l+UazyU+8sLs8Z
eUfxFKNuf3ujF4VCAUisAAcg45XO0MDxHftcvBEF4ApclCWXSh7LZC7U7xJ1
zM5kfR5s7XkrLYndeVouG0dYwVoeWeSKyUaRyFuW6AeolgbYLcmrrdpr6hxD
unMtlNVQWpI9HaYsjMtw+1xXXz5Jo8O3rhLuhDlfSkle/GBBL1yWviBbAF+3
quo9uGOVceoVygKbB3I1ywP3NkvzaIWolMRqcPLvXh+8KyDv12WcDef2RaRH
pj3buhYfE8B6O7/HiUnDm/WyMQbF7oh8tmOs4xfk7NxN5OAf/UR4kLd9cxuP
o0cPB+WN3+rRlC1X4K9h7eux/l+ZfXSzg/zF7ZKPBpKEzDLkczv7+J6SftAr
4+x0/0R26MBC+Ia8KuP/+vNNi8Pc/fCghOGPj2sAP2R9soHQbQiM3GavfdC2
8rI3zmdg7MfxIdmtrfXvSW5tXXPX3Bbfy20SZDfw9pUQkc30LVJePCl4yFDC
K9+UH7Ax9+6e7tqdPPKDv0v+tj+/pFEnTCGcrBViPYXwhJhBzzUt1vRHPw8g
pRRYQZGFZwBSTI/L+cgz/Jqpja7ZGfkdSZkXlneRaN1aK+Jo4lFnkEC5PHBx
NAMb1jrQdFw7t0w/j/FvGo+QU8RRdkvAbsKzhomS+DECIRz9ogAcF5ZawLGl
mNRcaL8QGjyD8bqKsvm2WtBZ9HR0+t3J/t5+/L/D/ScPHjw4Rpg6mpcsSUWI
Ih7tJfSBm7yu5nUcV/uzfCsF7mDcxUmlq5gLdVVNa5mw1DfKSEZl9tMqF9IR
kkWao3p4Ho1VJz4OJQ76It5E52i0+QmwHDT+z2xFCC9FrwN9gRoXRkE3hM2y
QXeTY8JL7mhu0vDfB3ubwPg1toFObxNyL4H1IrdjLyv0BpRN8gBasF0sA5EE
rSkKk3dmK7bC5d1yM5f/obhJt3DRKGglDlZn9UuW5xzEUNPj8oCXJ0EotAEN
8RqWxAqhmU1if593ieiiGrB2MFzfxS4S+/pvRwZFNAQe2/9RMNhY4hbmPllp
WModdBI7++hoTnP4QQOUEn0tgkJflS6nlnkDuJvEDce0VUu/jkiIhu6SQOfA
w7EqJGT5urnG4Q/59TkcZtlf06ubU5DHXd8xT9nPh7Br+e7AiLCrpVMX2hs6
NRyKB6Pjh1YH3VeB/NY26cCnpwoYV32q6PQt0oXRzaQLv0FXyJtIF8Ju0oVd
7AC9pAvkEe2sqaOZ9Y3v4/sTNw2hyYG9yBJ+1luxfLuqha6T1uQGhgcAmX9N
hocdCfZdMvs/lnkhoz54/ur4loQHfOJQ+yw+gyWiT5czeJzkNGseKYXv3xx9
/eLYiA3KVXPBr0/8ePScF98dfzn6soxTFR2U0XcFWRRUjPi5dDF/946u2MmP
wBznrmObkkRoizaNBpvlhx5tjFwplxdxWqVIcw201FwVy6/CjLC70n73ALr1
96G3/r7buhCqSKYihal5BqxauWqJN4anyzW85dnhPrGULM2OhVFPOX06GYL0
Uc2mPr4pAXOl3EXqxOL8S0pz2XkNarQYdpVfb49FkQ3obaU7QLcLn5IHaPXR
XjjKdPxYCTtAZZMqrfL8Y54yYWvLsR3UW90A42of+0auzcjhDgrPeZFVT2px
puYihsg0Rncg0/ho28pqbq/l3E2k7LaWh4WMUjjlYgVqLD5jYTgwia+UrK2y
Opi98AK+ATYNHiQ9gfj4k2J/zymci1vHrtrL24MDWUEDQLhi9HO5rjWiLEVo
Byk3a9snfVxQ7vu281R+Hry47HGH0moo2kmiu01YuVWwMJOYLM+qhXTttUR7
lyUGLqTuQIFGMt0nZ9FywlQRNN/dDs0411KyGfL5p5mTRErnWNbjmgtwdXpQ
iZksM2gzrN32po2qMFtLezFrY2VBO8UKUbZZ9Y9nXqEz3z9lqddLni/JjaSE
4RYDORq6Q3IU76o3VJ5ESDg1pfQOXMCm50OwUyMjSDYOCfs8vk+polnZBEZi
mRIeUGO7haMMTkjVf7Sc4qZhjKFNqGgayylCMTGfIwMw7NTbaU0nSu7Ew50B
QAo7N6g0iuF2FPJRVSy9anVYDMkBm5u91LkTmAJGPEnBJ05b4T7Ihmozjvxv
uKF4d5yqdU1gtut5yd2Oe6WJHjf3paHly0EJUa4pknQuooFtSJpItudYZ4fs
87SCsjyjdr1pkMXTykADOMMGI3wK1V/G75UwiEAMvOFab9bI48uHYNuu32g5
NKUbeQtTRzxmjeZTGJWk3BjDTWOOHW5QV9rpeZAigFAoiVEg2/Hq568kYJn7
1SJzqf60NTIRpTRoivNyfi37HGcfdhGreM7aE6iXePgpRx608ix1fONszMaR
gYhlRopqu7g8oTwg4ACXWf30Duc7D6LYc2VgIDHZzNuKo7k2Q7oj2Q8gc8Uv
A8J8y7JJp9pNFHfuZhThNxTWG82u4/LkhandPd0YSsouYc1GQa+E1t+DUR+l
8slDslc4CIfg/thwmIMJrufr5snDrO6kN7s1OMc7agSf3r9/dXW1R75StHL2
lmVLyaP70Z+5Hwd8/2DvwX0MulslKE6P/uxWBmHwORc6xS9DAcVwAeF8INE7
kNGclRd5rmaeV+vc/v7+hMyc85v01NsnNsmJevrwweEjc6h4iWEfZ2UHutLj
tPzOIxhc/xfRv6Pn/91FgL7m/v59evddBcBN5P96ASB34Pf0p6n0U3iuhTU8
+c1NHsEbuXkSb55oVY4LxFI7c3n8LvNC6d2FoANtrf2hQtBQMZ3ReUPOfNGN
4qEqF0DrEeGXSG8IS0S5oj5tGmotgAv3/WHEGEMGRsGB2swFFs2VUropHkcj
gWxWK71CHjiM01I2KZXXzzCjaDKDQ3ubpamtyYK54lWTEPqbFdq16j9nBMbp
dNfg7giJJlEtx/4A5vj9HN3UmkRmIsWsyrfTOOutAUEvis0FtzGX8NE3R7//
/MkTWa9BhfIl3favuOZWUJ3fRq188nj/wR3VyhWRaf0ECNoNekX6WfTphm65
eSd1/K1i5GhyaVr1Uf2goe+PvzyeHBwePPx0f39/B1rohiL2OyOffr1+BJ1W
BG6K74I1GpzPP4AATXtmRCF/s2M6D/cePh4e953AFbZsoy34kpeiW2t5xX2j
xzNZp472nKPyoiUZG0m7kbMrchak+EfRho7G7qgwBEN8RgUAeGmn5Mx+pT+Z
B8UIqmO9Jy3y7FKiSYL3YxY2GhRvqYjfZqs/evDw0/e3IOL/8NTyns8XhFRs
NvGNhruMlpXn2o6OngUkH0eI3CqJd2u/cRegUGescPfRA7XFUkNoWgp1yRlK
rUYrq45kt0aD0y0X9N7gHOH5QaISHPQeeUjotqMz3LuFBQG78SuI/v9Cdf/T
qqeEfwjDdPNn3vlT+3ymHR/cL/i57+R08w7QlJjRuyrfyfTNq+u7lfpD9+yG
PHVNZlxxa8aKDz9uftvjI0nUex8csK7zLN4Wwz6FBixv4mMJWkUNDdXl4Drp
ZOc5eZN6NJDNzHpPWNwPDhKzdTKgHbOW4UcYvmIbA8DaxmNH+ALnzDDOUmEj
A/cPQEaSKyNoTWUV48Bqm3MiUEsARtdI4+pqB1ykS2cMTS1hcG68lz9LQqDR
9blYiofOlJwpvaWeTYdGi9J+8e1/4cuaUa3Epik4jK8bK3qHi5lwqliX2yMB
fiExEbbgFd4l4tWm0VK9mZDjqyO2qN9oPZOk4EjmguOoU4jSmJNkUqd4o3c5
Tq3l6IMhsnsp9ZxC3GgmiowZDV1n9+nOWCD7NaneTEp6KbPqq8aoyd4u6JKU
YoYhKdz1mm1Z04mCsCjEdSlNfrL1oISJZa1sj+fE6sz8aW4gv74Sl07MtvdN
JgQNlzfMYXpREiJwdVlNDc+D0DzZKxC/zHAdc5B7CyZnWDYiluU3+jQw/beu
Lo+/9xMt0J3AjZo6WGzaDfCoUiCIJAKNTIK8Z+pzT4v5Nq5rYI37MqkCvXrh
stthAPuVwFue8489fIut6CzhF0dGQVWvBd/hy0FV2niWHDKAUpBIm1ndWBBj
f2tX5XH1juoap+S9abNK20QkDnsKbHBZeD/EzCExXbZiUOVnSNCZgXj6H4h0
VKukiBwAalbFtLSEIv6g9U2Q5LBDZdxKFzDQEKGxGRU6EWQWmuRppp87cSVl
YRABcfvcOQWBN5IyshaO8VRb+P5FyZ+XLg/POKkjjy7Ytdkz2F1+CsA7rNC6
N3DuCqqctxhU+xslFrDv1mYTr/B2eCTIEYHKXfs/G3Acb4C7IqdztZR8JUtE
I2cqNbwrE0Y1fVqcpGuMhPoboxLPDrkrj8zW5GeKjnF+29Cy0iGgg7dJeByH
QeK94O/vROI4mSUNQzhFrLFG7CBM84pQhfTB3ZLhLigGMoSexUxCwBWyqHXs
aMRRt19GB1FiSsUDSoa2XrqcoSTpZtALlUhB5lFgOpdSJ4g+DWkICzV1hARY
Pc94fJARSk/hrD2oqMYCTV/KynIvCULI9yBPfEI6YQkknrEuhWHUQ5zMnAp+
uwq7hYxD+TcSDgFybiQX9AFLWGDDgxtCVJhwJrFKkCn0Vw79H5UDJAr3qj5o
hEVwwt2hEaPPXBS+c4aHrTNca0rGHlEgbAaIhFg8hPsaIn4P/cIkyS4dHTzy
iKEiSRDvjkTqIrwF/QPhcPUp2Vt4uZOuZoSUqOWQmmcLi8lZZ5K4oRNbRiJe
Zqd0wUe4QItpx5ZTEOiQ5FfO08bAZgFlwnUfYkaP+u50qDB3gCwJ6mKuEStT
rYFn3NadEE5aLcM9wBXj5NWSWTSZUpIfSfWkCzptOjIuO2BBpLSBvRDQRTBD
jTfrwu6GHK/wpKbsYnFhlxc8lpawrCf5CMyBdlx7+TjGXBlTN0KGESUJdDwL
az8Rnf96SpbVrBbg7LS+0xsr8KkIWGRVJ46NG4YSTflZZcPQgDo4EeYymKA0
P6dfnxqAcVHEE/6tWAASf/RQiqzgiAiaQuevQm2tx2+UTJr6d+/s2yaJLoXw
lOQg0tkRsuWI3wsUx+kbOpw4nXf69ejNqTEEdC+8ShfSPumdN/rQQuraW+o9
Kx1fO3Op2c1VAYY9+uCnwXsurqdU/YbbnOu+qrXR+tLvg8G2K7kM0mgK7XFO
oZpiM2+DT5e6GAaHhM9bpl2DNRWncVGzI7/IhLEZB5HECpM9nUa9IuX6fPiA
fKsZS4WfG1Q6m2zOSUM22btU2iSmlElbk0ytmpu55eok+hxE9Y/mNVyZQ8i5
aUW9QOOKEO8h2ABPLrsUH7Q5qoZRZBzeJ2ODrU5pAkE1daO15jXA/T7OJrRX
TtwtapusDXb0sjVBk7dTr9mmrpdSJ3edvZyKrQRSTlUlZbH2XeFlQyqpuhDq
B7ay4oELZaCPEG1M1Jr5Bu1onmlZNNyo5qwMUf9SK4lqCkY/CTLp69FjT1gn
tVwEnE6bdZlUSBpdPH/gKMTTk2WOJfVqTZKgpEC8m3LwnnDDTJQyqvFhAy08
1NR0vnHWSNeQflpbYSHMKrw0/h5gSrq+OKlMUsAD8b+0bx2A3TQNK3J1lq2c
W18rbIwjAhxQuAR9yHPXSHDQtFbYmf6bfFuUEM1yq/uEeoEY6vToB7QLSJ5s
Fj+wr6DT0boH8LxXbH8EQ3dvxzhzTW3Ok6yLGJVxBGelhVtCHjCQgRreFGaB
7AdTeQ2XSglM8G2lJHwF4x8Si4p+o/N5l4j7jdWioO+k95qa9QRjwW1u/zUn
hgW17doxWD52oi3yGAyACPtF671m/AGCy5afdLLGKSnozbbAYxoboJutL6lL
IW5CzjjsdRY/oag9vCZv3JjkwgWJCAOyoMRjG2QC97yMAvKveGG9TSxWpIrd
h4KKRwIeRUhqklh+KdAMmO5SaX0LayO0ZXs0nL72VjP5ylJGjDFKBVuSO0BK
k/BRAJjc84EIHT2L9d/OAI+aw5jXbo/vIiNf5heFyjccraS5KcKVPZ2iPGw0
ibpcf1avl2WwK7stKmWH7opjUsexnVHo7V3ebQqG6LqhmNCJBw0tQS5VVEL9
ZStpW42dVG+LEvVbrg/okwNXYFCbQwAVEFGJJl7PkMFsRn/ZzvtQnI2drfbS
MWZxqIbZMdnPkQg6+2EKCKs04JJ3DQoppU+zED+NisEBB9M67Pxgty9YSi8k
ibJSoC9ujCBQq/N6Y9FYdI4W9287WWPyQLdEeVYzERtkWVuGhmqIcFKm6TYY
V6OgOon4paLOos04HOAiz8viTebY5QhyT+QWCJ/nfWfMwhKw+ymdgxqfcQAy
ZhGIqxEfNp/TUbWM5tiFFqpMSyJkMFOgyDAuIXk/eyOGvX76+FO299m8louf
wW6TyWbSAw6QEYJGA6Y1OXkqBylwKRtCXSCZfvO66HRt7OVPtGs1ykro8Rdl
PBCW6Cf0x/HoB37CjxTqVEsltdDUYknr3SNJEop3BPIDso9SjRFfODefLU/J
shWDcAnaPfmRB86YdU3XZBO0HWtYoSXGDACZ32p8owCPb2wZv6je/t0hwlEO
fjWAD8bZqzTvaXeNdwmK8D5jfZLgA0PIjHtpJ2O4cRl/AksP/ce1/sfPrkHA
n28COd8WnXF7ZIZcL5N3i9YHcgN/zE3X32/yO67vfMfPt7vjRix2EpDxaHgl
bo3I+NrlMpQR2iViUidciyyDpzYpTwIHoKg6XhRVBbk0mv2gGMlVzWA7tSOZ
EMFnOiyRIFXpzuyWDIJ0EQaUW4p7xQROblrR+k7nYIJku+707C3nHoNnNoZB
ZuW0HboUd3CprytcjskvsCZg6j4q4m0+rJaO62gIgBkQkzesmN5jww+Snn3Z
CBWcAy31Up11d/kZBOvs+qeLBnJ69jP+688es3TXoSw+eCgLG8riVvrm7Ma9
vTxJG1W+9i53/HznO/gz7vqO293Rrz4GlrJ3Tj+AX81ErYdXzf62xacG92UQ
Mv1lsmGwfUYvpnP661Ri5TeTqL3N/jkMqOt7+4uCDF3uBs1WyfFmudff8ef6
vd/j/yBKttSvXM0Lsox0CLNN83rMQaNJdFxm5WxgND//KqMhooz5nOhF6s6w
anI5rUBkGbXw5d4uajheZRJGyCLOqp9zZXLP9EOv/Cx+Hfn5GudV3awukaD8
3ylF3/WFRWcVrZqco383ERKBhhyTp/DWMVq78fxaouRR8c6coJNarY50Uvta
LY1rm591baG/aIOEZIPYTbAhEEh4m4Jn/WstWLaqCR6yiIcrN9E3R8dHo2Pz
RI+rdsO+0XNqOLNWF1oyWQ38IYnOjd69Oz5+Pnn+7bevPicqnFvibM2t5Dpf
YczOvbiglg+/qQ9nm5C1HdCQYWkteNhm5V7OjovOYDk/N9YLB74diL4k8O1Q
EEbAtwP3/1rgW378h4Nv0b3KP+qaMVMX62omIJEEziREWCJJTI2NOEbS1kg1
kKFbXFBBe0uBEkJqLV9rHBqNYhhjoYgWShpU09fUKYDBIRvfY4LG8ZQj7o7S
b6wAGGF3bxqWobWrYg/KPMQ8AWRfK0ygGJ3Fx14Q1ST1PiGq8+m6INpKSvAs
KxtF4zdqwNVECkFE3n/dlOXPJGyIWiUuCk7VUUKqNMZBmpE2RVClwQB5BrVG
5OSrG2q6oYHdlqfuIFn/HzfdqJ5riyUBrk6eZjD0+Y/v3g3hx3/5J961DLO5
Hp3y76eum1tLMTICq6ELu7SHOzqjeI0btMSRmCEgfizNFQrRzqN6EF9GUkgJ
dxQlB3+v0CJgR+Q6DG2yaY2EVEJie4xc3EcLiRI1lwgTxeWM33IdwPeG2d1G
uA686QMRrp6g8Fw/jG7PmQ0dyEawvGOlIUmA1+Z6QT28r5UC0dEbapQ15zYE
gcUuBCz6qewGv3Z0h4er6Pc4sMqAykya027y3H9KuZTJHM9iRnTYSxTpYK86
C1mjCURDU/txynu+14bpAJR0T1AaHvqd9oSGKzELKawqof9lCnK+puupzUD9
xgqlO5mxhLwEOdDotSFDpJk36esuKCl8m3DfeYqys6x4piUQG+Vl9QpXsiCW
+4jWTdUQUceiRracv1KTQBpH1WlhNECclMmhXIkoiasY1LhNmjGXl1diVw85
TKeQAe2qDBpZNPIBFv0VVA5+/LdiWp9VBSGCeediWpFLhty77LmTl4rYAA2D
9QvztdBRI9CrYIvLsENdYYFhNV0clss4tF4IeLO62XObzwgnkXfUBmDUHoz/
joaiHgQkYSgaWwV0Cjd/SnPQe0vC0pFYJKSQ4IEVKpeDBJi8gM4/gpOOcqMu
b+HhDJAlQWFgTVLWQr9aKlAgNQ+yXZQS8qSnzuk8B34mupA8cauq/LmOungK
f0z4o+IpoceMlnqsr6kVCWNJl9LJk1/0FOaqPCEg5GiYp5QFhpmuLW9gtOkT
2RBgdO6qqAw8iByMJNxsOKBEiDYRnfLEHH3t8zc+F6uP10qC/vDfd/7rn7uv
Hg4E9h5324HA8/x3/zf8/VbRuef8EUfx47LiyG6Qrs9X/N/3NvmvVEGZhSTv
uabdw7HH3g4lOEdTvGFRLV9ScUb804P0Y/F2+8dKfnFBif5nDjx14Lm9T97x
7MGnDz7fv6E3gCm0avTr8/vfpCpb5/wn5347uvlhLc+9aPTEnfyf7xh6+nYd
HbMLtM1jrWjVgqov1Fa8Tfzp4AMCUF+k4IUi7yXu1Rv4eXv4Ae86ZitAiHfQ
bxcQN+S66Zx9ezD02gcf8NqTy2o9uyG2tSuSdECSGD98jHH0BJNOmc5GGAb4
IJiV5crMdDOaQezvj0xXi8YtwxRokqA3+cFy6qTuVIuauH4jHtxLYvcjeJ+S
0OFsjSdUdCnqRllEM5ZdqSqQg1KOTbF7yR6slkuuCrO2FVlpiTE9aiuzRvwq
/hzXX8454Ig6EtAkUZD//uirl58fkadENlqGAMRrLgsJC6lhwts869gZfPrP
GS7z8rzVSKdSbhLiKPljhoo7K9Wj1DaK2dppiYw3lIn8bnkR7MR3jUeyholD
eDbtVWugQMYHxV+aVVm8Nprot84GxbrANIQJCpjtGynec5Qoiv6L1gwwPXJL
P1LO9RFZv9EaX3urIOGSIRy0qCiVIOiEVlMqAm1el1fH7gcqDqJuaqdWLxVl
nX8RFDMjxfdG33N2Nj0tj66NgEq+GlVi5s43i+XoL0zX3PRf+hd/afVM87/5
EIXUhCR8WV4YIYy0SeGwdMFKO15G1L7sUuo4Sxf2YwR3VDYoUVpG3096zuM5
UWCknGRR/IWaVGdPgBkbvWjYwXGdlslTAKI8uAbDwIDT5IkigfXqst3KZ6Oe
hjKVa2oaRNfmZZKAvKlmgOfdotxuKFgwXG4HSUFcvFslJ2GC+BPvfRc1I/GV
Ln6sv+JWFnTt0kWKpYpYEG32oGK2AMWgUfSvCoQaQRUh6GUNhKcCDcYfaDrA
c5wq21iqWUI0liM6ogzuxCMtMd+8os4Vm3keXztj6qSKgCNcRa2q8Qaoop44
x9J0Gfvs6ViQoyc/d0TLh+RVssNtB5Yyzkuvy+sEAaF12ayXvrgUxwi9LMDg
k2JAisq5ckDyjOkLORLM2QT6MtZWjtculZn1fJ24tFuAP3Qhja+Qbq487nH3
eYngPbVD1bDG7iIzi/v6Rk7BaGk9ya9Eb0BYZXW5UAm27Pz9cmBWVDYgJ2l8
wdCx6TYNH5jZBlEtOzojJaLvESBltX1CcrxMlkOngK6wZhdcaRoV7IT1WFKy
/EP464Zu9ymmeNo0pcLSRSnZxHmVX/fo5yZoog6tQJfc8km7J9FmjMYHO/BW
D+sjek7zwatvtahErqLdDiqIUXHeSlwPAp2Gz2WotXsj64PUNE8Uwna1cF9E
1MeQsf9OQ7ctjqqQ0wGWBLmvLyAbaBB8lr2xbuhNLlru2LxBZ1A8Xzcz91XP
I6I6gDk3vteC3J2bREKl8srr0es9/8F4IqKOt1aowaiWuX5qS8O86ByRBtJK
OGRQWtKkQkiWtR4ZibPYt0Ix6+D3dXXRTpr2ep4KSzGF02pN2XYkTS0UaPW3
Fxsg7Zl/e7hoNw7DW53EY8BhT9ZHKgVs9xujRucWaZii1qhxmxoG2onx2MOa
LQq9rGWlMAsMuBZqbjOnhSPO2ddU8bdzb1skO/UXIhuNZeVZEHuNjcUy3+Eq
dhiikYzueHfYfrfmLcQqwf5cVOt1jToYCQamFoHZK8eBTzl6LfL+YHbAfHl1
ag1bUM6OEhHRzqlNO5KBaeSWFtjiixn18sUo/70ML9yRMYZe8uW8PovS9Pxr
YiiPbmZ9Ec2s1cZINYQKfmRtkChezwvieLxDSVCHKJevlWaDwhsTsb9b0qja
Ox1JvnRsSYYAWkbfwYh1o2cBycH8WmcvkZVzPZ+x8jJQ4Wkc11vJeEwkj5HO
eE6C02cx5sfiMcbdge2+WUUzgfMsGy3bWqFxYhSa6MR+Gedr8s3n/05Ngk6y
08YET05LfFcckG0dUA1QPtuyTcEfJeTxe13gpko6gpyn0wSp/lV0GufS/4LV
VhCuyz9ccsylLGYpe4/FOKfkwmJDlmBdv+bPTWaDHP2DweuvMbkn+Ob/HvHq
77eBrbj5Nwgf3/FVW7Fj3e10rQnLENo1jZO6u3Iv5j/tj0f7fx5beBBPWqzX
2YD89Qfj0cHW9W07eP3heHS4df1qNXj9ft/z18PP3+97/nr4+Qd917erFBvu
Yn//59G9o0D3G4E7blEyGygS6MW6moGeOI+gKxFyKpb4jYsr4KjdJoz/2hVY
kJje4pbZ9XJv6m9rh79l121RaN/ntvX7vW39fm9r73Zbb96jK0XjjqwIcWoq
G+HVc6sy5lke86yNeRbG/FVjHqXtr/dLrny/AxH+/XshwvXH485ZLiddn2nD
pl/R3o/zcItMy6C0djIO36/2chLZQQnqZkjIvujcOygPW1Dipt3r46FNqQys
K9ZxNQiKtSLIVLq+ShR7qzX5fjODSzTM/cEmGGfgzfQLZ+WyLKJB/GI+Oi7m
b4oZ2pyPDkb/Viw3RTQZD/f3P9HSRLKKzDBTjsloulTWH8yo76qfbVGp/JBJ
ZwT+QMQhANrEHVJOSOorOlM1FeKM2nXF1egl80ywGU0uz5VYR+XSnEN0D55X
7B2IizhWIrPtOBGAdWzu0/ObMhquzViDr+NEckMNSDlOzfmXLRvLnwT3ntN8
7R/Q/3e4fySFivkZcI8umewfxP//ZP/g6eH+0/1P9g5+5Gv5DDh4sPf4Ef8b
gjN58une/hPZqKzEDx4d7vEvrKH39548eFIePuCfoH0n1O37E/sNqnVC1z2w
36A3D/bikNNPctmDR5+mx63whv2HD+NPXhQ5xiuuX7wsWr+I5HJI/8CH9A8T
Vsu3o6rPg3f9VpvW0THw4+Vph/5pBwTM48pycTJ0hQPQn039VATxraFQUabq
zPpltcwBwUswq009tjlQSkmyV+b8jLeN+/RxlhUO4VSVJJPsSNtOVw9MVrzz
V+Dfoo1rzsTKgyoCOPx0GzFUveKNKBh1vkC0AsBNl7tbVvVQEqCYP31OX9MP
xx4IiBIiLEruLtO/1acK4Rgw/ApWFVtN+38Y7Iw0isUNmNxuzeCiqt2iyhh1
qDIkkaKdXwy1zvnCKVQDs/lqJXItCEyKO6GmndF0HeqBTi5xG2HH60vgLLwz
PjL4LxoJ7ZTATYuWuycJdG7sQGP6iQ27p8U8euzAvgJiGf1QRQAgeLw3CKk1
5hydE/2iIDX1xO9LLLmUw6QVg5xZPxufuSwFO+fK9emWkdGo2P5C5DqvQLBE
opTH67jwlsSCMJaktdBWAG2AaHvKrr/YzMHzAbZfo3lhKHheuk6MOvWawvp0
PmhkJD618UDKvu60glLc+giB1J7or4xjxW8TuxSI7xS22TA1TNxnxcxVRGw9
KNVCbD1PiiC2bukpfxiuV5BQK1ar//NMZrsFFNx0D7IrsSfbN2fcpE/onl0F
xd7O/vSy3UNqO7GbU2SLrXxA3oNefmfOEFbje6OjsC1FS+tQUTelNk+F/nMo
zET9k8JDuiOM26Pisg9jQ9nEQc4lmrtMvHnxuXy2MPoFWWVKqSLXxWQTqpcp
4hz35kJSyD0s7qQtmrJt57BZnjNgf7Uu4mxOS/mL/0Zq/0RlTB83o8TAgPcd
LafVPJ7Y1+HlMk3QF0X8FVzNHIaj+uvWMJttXc9fV9IcBOVjLZmTi6ppEC8U
rg7usZmlxUz7x7uqqJXIpeAjBnS8HJjlcko4LcsLSbxtpppOSorFOHOihcIk
o0U8OKYVs9YSAIW+ZtqosqFHLYU8l0pxlNXL6ucBgOCTBJrVRjNOh0I0iS+K
pTSRj4sxq1ctWNA0U22+Vpq71+AyXCyi564lXxVBTKOtfC+8e/fN0csvJv/x
/dGJxi85OVCgp6q0hi8FLmzxQ4QLlY1FdqyjUpIiHLFrn7rCHivnE9jXZr1s
LBRu8CyW3XHwvcjs4XyPgcyhh9ZLF0FOfKMs+XQSWrK/dIlkQIO0hTXTu/s7
eQOtN0t3CzVL1bTV2sr5xIAYC4Ddnz5XdiyQn1GsxYxF0oAO23gKYxd2wAhI
TGrsdXRcvYU2odpNpK0ua0aGK9BBeDCjIuaF4zYedMU9g8SknCiBxNbRXoxb
BuILSUO+agrAVEEYAz3OpcuPMasR8Lx8CzdLr/D8l2C/oqaza828h4voCcbX
3WPxelVHO2n0LTftiLuGFTgJ1lSJooUwbTmdb9DMFn3l+Jg2LnEBiUH6p/Vm
XRAU/95sg6NFsn+HD0cfI+//sQN3MPFeSHbWrF5At3DL3PS7vwVNqeFe3hu9
e/fqxXeTg/0HqKjs1CFtnai3rECytM0gxz6JICGr2pr+36gpalqyXqJ9LToK
p7ppjsu/blzBDQ4kzjvdnn8/3L36qGuwNd5GDfFga+Kyse13RfNYcYMJ8TKc
9+/JsSpoZO71LCkc5gTUhesWazow03O3pvAiPlcv4gsQNL37qJ+wVdmbeeen
hsRYFGa+rtNae5wpZtfT24WE3VFop3kfuXK0x9GGRCYt0XhxUUdXY8pOaRXf
yZg2cTKt6JM/RSUIYAarM1NniiR6syJmUMWsWm9p7bVm8bXEq1as4QcYf7RN
lOCyWLjgDnVsoj7SXc+DyB4jT/cAC+/25bQmypyspL9vE+mvv9nzf/e9Ddvm
7ceDN6fAgj4j5EOQSqktSxBXCRMx67T4mtG/jL4eKT1NZ7fygWIap5hxlRIT
UTbp7tE/j5ha1/qWho4bwGOQU67DpK6VdCpwuOqp+lbs791EBywbjk4PxqCQ
pUgIHi4WPkZLi8+LtrAesGaraXCRB0dXUyOd5N2y5hAt5Sjv7uGg5lEc0bTw
f352j6bgXu4ZaogiGRZw/Ux363lfNVafalTJRxC/dEXYuuKze8miljo28lUN
CIZFc2CSs+tw+sfPaOk+Oxr9bvTHo9N40Dx/fvz58eTo869T8b6FPYxRDp3W
a3Gq0yrWivFtpQue9fEBQa7CK3SUzJMky6NM0MR1NwMqlwrFGQcYzewNfdJM
iQ6iYKW2EPrJjhDc2t/oIokhhBkE5FyagBCAnAgV5nPs4XjKHZ2cvDz5/vMX
P33+8tUp+VnYwkeHn7HO/ezwSA40sl9fvPomnno/nfzw3Qu9Npx+8fLV8Qlf
/dUR/Zeb1AOyeOnDJOfOXzaLJ3Ir1JxjOeFkGgPbNMUcwIZ7x9WCDLbK8dGL
yX4vWYP081WFUnCGZjOGWq01QkaKkHA7lwZNdaPddhJ17Ju6msFKY0fO8Niz
uGnudeUjnmC23FPyjXgbyZDExYBfRSLA5zV/XjOK/hDXsllIKVxRlbMe9iDl
k2tRpSzWZDGH80qva3CQJPkUh9SekWOBuZxcRTLrIKlAG1RKKnaRXG4nQhU1
JQE+h4VpMi+k8JHsjp7LR/nlLMrWqIn5nX0jZAvSS0sFQR5mNbxctoOeLVld
NZ0abGbVne5A3TjMhC4Ga3Jbc3l1di8jTslK3F2a3qmnLkL6kzRjcjXV3EqI
XRCTuYxy5JoJ36ip0PuXWmuZCHSEUKPtbhMkgYg9X8prUVggW3A0sykxDtpM
qGOSbYWgKsFuCqovA4cWvjJ+a/Z38VSDmCN/kQvbhGiyzc1L940yEA3QK1Nd
bCFMDcS3Qj18ksRBTcS96EXMjH+Px9+SLb2KBCvdIUeswOPzUI8PLmkmq9tP
EaGqUIym85pMLY0QWBitECmLyqSJak9MUMFfJ4UCqcaVwcrGl7AfLxdgDdTu
Vq1xmXcD/nvU7eKFWrF/Gz2XdF0Ugk7Li6QJqPvEF47Y9qnzzGHBLF1ceJDM
mFiipa8FmdlHJLf9T5Zw840PToSnaFKDR5fk7+LZDTfNoFu3ny7PoD82myll
LwTuGw//Jk6kCzThsfrvr2GU0JO/qZaObwESoYVsWtos917Wi5q8+XrTpNuP
q7dtaUVn6QkgEI4PoP+l5gstN+IZFZsLWsasmxcGFzqOibTaG0G3J3KBjLDb
k0BbFiSaPvGwDZ6ckRs82nznrOpYnmkSn8ziDv/ou3i4v1BQnsr7axQaoZa9
b4LcZsq5xjEsjDSexxccdpIYixiMp18/PO2duczvIaP/T28/JuAVmY8PR396
S/996tk0JbcpVqo357gUb11f8YngfpSbrPIvTXz0V8bGEd1e6tO5ELHieJZ/
kCa4UloFP4vAZLMtzMCSTgBMNrg3SREKN9kspMeo/A1VYeqtUoGWlcApW4Ek
ZuW90P/d7ZCMdv8BNj06JXAXe1Z77NI0xFdWS6cLHNlGUb1sk6vP/MYAf0et
2tbUoAQH24oSL+sKndfY0+gWy6RkZaX02IwCouhd3ErV+TU0p37TQNLU3tml
O/VkIH0fm2Jb5i68Qf+SVEnBp40EDLTP35sypPSkiLrjKt9uHaIni1zLxky2
6tQ9jxVB7f3YPkmwDIaeUJgYVTpZgVcuvUr/kck8C9HAto+SGhzrFPZQ2ZhL
pG5hk2IrczC3GFg4HwAFj5oN24Da0YR2E2j4ETAuurtph+7CEVKtuR/q+/UZ
JQNd6LFQmRasPiOjri94hOc1l6h6tnQxzSR2DCkRdIQTiL7pVQgScNJsJ7sW
snWjiHkNlCX2uZQjGaVYj1a/9cGuNdYsDFjB6gLtawGDJ4NGP+0W5ZNb5tpw
3SS/uL3stOJNbWb7E+NcoRQY09U4qzGO7gtyiJ1ZNPaWjISUvf0x7ulX56qN
KJRi3UHyWh23c3rKH61HBeMPRMMFAECwY+PvqVGdPEfryAlCpbaCMp/tjb6F
byY98GA9c9yaKrYqq3B0ulDTr3lnt5TykbofqQkIrOns2wCqsViK3lQJYVrq
j8I/muxTyiRI8Z+uR9cywyr0nTG9ayEhVpL2pQRmsxYrdysxvaqmbLcyf4D4
Tg1Yaqw5QH2ldYtW5aYbyZm4yk1EwjgEKgGx3w2dM7DDlL9JYHhBK5+kmri3
5G2MQwIqfW/0jcwTdrqUP5JNKVWMVEHmixitOxOBwa0l0Oh8TiaffjSsCqrk
zizhAFMmVVfJ1HJ1FT7GoINcRIuV1F0Nxa+ISNCe9YkHbGxSPz1yYollr9yk
A2noL6Aay6dw0p4f3Pda/VCMq09CrUxYiwUZOtKtVvTFgvGDx9SGecUmwpwd
hz1fzCV93Kf1hphP0auHq9/RZ8Rtribk1WkuQ4EzZ8lMVGeSAk7FZqy4Pxr9
R0rzR13tkv6/KFB2o5SIXHh93lGopBfG1qh07LR3MnUQeOJYqEWKyw6845be
6FgTDkzrIRRzxpehtIkpDVKkTAYnmzqOaMg6rfUmXzo5Fjk0TjVaz4c+E6+4
L+X2f80/FvcP/+k0yYm8Xq23NQehT6N5IVcSkpedqLyYOqM7OC1PE6UuareW
HDGFFGh1Z2oUhP4qW/AWM6y0H4ByBcsiWV2z0Qxo4Vp5nVerVd3aZ4KJ0Q2r
y+sGIPUUOcdbrTlvJeVxQcxNlrXUXIrmiWEXer7bebVTBMbgj+BWX8trz3mA
FfDHopN0hTMXr8mdVmdVTEIEC7HYSy4cVbgqL7gZjlk9sqrSOAB2RPIoiHIC
FfHp83NuFCOK+yqaG50gPuUTr+o18bFNi6Z0zXaQP9obfVW2XWkVoGAm1fQa
SpSGuJHXKAGn9w6gU1yutXUcQ009MgghjpzgmXbcAC4LpStJrjxVT41H+30Z
SEaw5zFtCyvJVO/vPd5/fCDx4bdVJthUKDaWK8Sf0nynAtqyhqZbk0OCfcAP
GRh7mGSDd9lXJofWvSXSlKUvFJGvSon2X6DFFFZM6cCWxLXiFuvkwJVL6h45
Ag0wU2GyEjj+7uXzFwYXQ0aqCW66Eu9kxzeuNSW/KAvqCcmF4SyURSeSYwwP
1iJNOiRlkKFUWNonSuPQOwYYprBK4004Kr0+9iw1ndMg5M+SuyCblr4uWILf
lDnoYluSVEq2ZGnCF0kvWU4TNdbOnXykBR3CEgbXaF6XdYX81qcjAqFZgokr
JURZc17QyKjpVUTVOJHfAx3zKZqS0FbbApOV4svzSGmZRhLYMWWKVcDL83M4
KufcMdVM3wxbqbJwL+VSg7rPcGDdrs3OuWx00HYssmSfYAGXJbenfGPv5eWR
wzeK2LIV4puLItnlFsHhgzTH+EGrk62cjhBpZqN8IdVFn1ApCymRmHI80ncg
NWRgRc3iXpfMkwFmbwUYZTUVbEBJvoF6khbzaDDjSLhCrrogx8z3BS4WZ9XF
BtlLWiIFrMSPjUKscANtP0Q98a7M4cxgRxboLaTHXdefr7RcSNBNyBxmu4MC
0mONek036zWTTeXghJR5Vd9UO+vBBmFZ30Zvjawb0ZB68o9zbjWHHQYaDFHK
b7ouztsjGeVwqXYHwdZXpF0vOpVxt6mV/qyeXW8XS/eWSrvqtXr4Te/Tyqyn
XHfrnRpToIvSzh3sQfTXKZXU/RU8gX8FT+BfH9yqAxGSfTdV7v71oLcAMP39
8Ia/P7jh79OBv/dTavKYt793jCd9SEVoEo+ektD0xztSbSbBj5b87Prv0tXl
yPpkOqTiGekQOvZ/9fYuo3vUBpcwK41yair0sCmHXvf+LVwImJJ6mDRoncOB
EFLv5a/ToOWoQ79lrnBmmIvJL1aMAMC1gnW7mFK2GxVJPpjsfzp5sH9y8PDp
4ZOnB5/sHRw8PpQ6Sey4/b19/seh/8cD/IOMnv1HXCGJ7WM/6fARQjjSkiOE
UEfvPiKLHFgPGJI7Awkuq3zLOIIYp+8TRuCU84lFAkCJX7Rd6yZ/2E3RgLHa
zkbNeQNW1dWfdDyXrpsZlqD6csBGxiLLOCeoN7PAMDs3OiGzmn3x+VwCbVRP
Rw91CXUfhytGp/RXBpBpCf6pO3I5sAVvVZrYJ3q27795eXIMZjZAVaivfCFd
3GclmVGNFJ60ngyqOJuroxDgKQ3PDI+Rwln9qWcyxMCmtCCHmDM947zBquaW
bHERHNMEgqSnty7StJaGy7iCjnMFUdKROWAxRzIjQzJYj5JtcHr6UpZVMYWW
eYeNwsrsEvrBmghoBEUynmR95Zhp138hNPJi9n/EhDS8hDQ7ERyFNKHkvKDV
m+Qecg6+pgXk66NybkvLCKRAT7dwJX2IwiFnnYcGd3P+1DRz9NF9D5bb9Mkc
lePijmgv28Z2bjtTscIPemtwEo6HKw6Z2Z8sakgqDwMulhnDMMMvUomyhdgE
BM9LaXB+DQDYAllxZ+EKNLrQJCvbji4I4R8Je2KYyOAQMfoJBkZi3Il9o732
shAqSP2L0j8WRPxkGkev/+UXlqRntL9R9NKyp90kBtgCzQ/cR2PqA2Wpx1ln
ekQeZajS8JzZ4yQ121RCR6r4KPpzQ/WzMgfNJTkaQkfpYKCFlM7x9VUrDjy7
MVsY63SnK6Tz9UQIxNj8SG0DN1olSAMF85bl29GiwGFdaZnfmzIPALl+K4Dh
cj8OBiCjzJdyDZp3uC6LtSbslABaUThdhK9LxW5Xw7iE7PZqhr76GU1dKFE0
6lYcvo6i1pm+s/qPb74F2a7eaFx3jMZh1Jw+Xc7qy4KKKnFwrYsrKac9/SOl
AH84Zeq50x/jv4Trr5j9pZhyfZjdyDsbcmvpKybFba+ImUKicU/D6R9/wIP/
+MOP+J8f+V8//oC3/VH+B3/7gf/2A//txz/K/+BvP+IpqFv4MT6JhUsIexts
hgkd/xWHXBixy0S2qIbHkDaruCgThKiY9YixD0LhenLJaRsIsX2py5J7xcPa
dJ0c5Dh77tLzDgF+adFhqA3EgzHZWXhe5h1qRUL1NzX34QjiWy1ZYN3dxVJj
2vRQd6kBHhrxEF4hBxkF/o2P7sdpnc/TK54iuywMtImGHA0Ux6CC4E9goDlN
COJ2+Ct9qlDbpe+sGJRO2sbLDEYvwdfEBJiyKxUV8DHjbfYXIxIMolJM8xLy
JHEZsJFFAepo6BvrgrAOCBWhxNmakFG+1/VrbSbEoqfM1xKdXAM/lYpbWIVk
wwjCAS0ngWEsgWsWdLjT4okvx6cxms7JY49jqxRy50XBo36qJeJia8I1SuWD
nYvu1boW6fKRMP59xgcIftsbvcJ/6FP0pYjpBUqD61/0e5YcMDeqBHs4s0SM
JWbsz2Nb+SB0nrAciEeTD6gEC0P7N24tuAbJjdhesv/TAWcJOajJpQnSlR+r
TVNT7wbOAKFoEwkB+rgRi4knMzVQQqg6vyvBGvliCgMyCHnbcvjbqHt0iCT+
LfPAoC4cWlkRy6SLR+l/Rcmo/uFByIU/4sIfb7zwR3nijzde+AMu/OGmC+lM
GKX/3XWhjPHGC22MN16oY7zhwh9tjD/edKGO8aYLbWVuvFBXZteFTB9dvTXJ
UYJmL4kkn15NsBWqO5J9b+WZCnwLPYJRq5oPQZJVWoDGM6Yk9uxrdntZMq3G
JamyIMT2ab/wts/JBaLpRf0ZEfBH0fZMFK7G/GFphlmNrofH9aLknznHdZI2
cvSB5/O0neUcSHY5rw6HzstZ6Brn/Ger3JGHAuER1ZmM31icneZK2bwE+hKK
I2W8xUGFRHOaB3jCfnx/nMRblpMf+H9+HPkk4QExXe7zRz3Y1wBA4MmWPEwC
yEmJT4/9SSgHs7Fyx1jaD/Tou/RC9ZNbTR13rqQh6t+6+u9gn1croRBV6jSu
QqkY1Z7V2psJ8a/R1xQRe2Y2Xwdc15cJaVHPxkVz8VCTYrJOOskFZLIsolvC
q8IZGmMDmo58us6CTcRCRN11ljlLVUrvU0cJsjol60XDtmYvyleVubM8iCy/
K5jtQpHBJPZkBILwKR6QcXPtUSh0y/nOOtbodgDChfOJyMeR2iBnqZU6G2oI
OSd6OzGsV9RQmjthOHwUuWkJBk2KSRaxXys5RyMppqyNKYkT4mLbXqj2lRCO
kRkvdeJzkB/usRkV5Yl8dWKoYBEg6Aj4Ie7tcPkyNLTvXtKLig49xdaO3aGv
62lezd8BwYYPAMGOPAg2JBCsKJ72srcGnQMtBjfx4SlfH79VnC4AJN/cyWFV
bvJu6HGLPF172rKuysrRczy6J1gggKfweUmUS2KPDoabfVkanBKhDX45Y55a
S7tfxZVDlArqjOTqjhD44InTcxHr6yXVFyLoA01yQ/G8vsAjPrZLZzRjb6Xy
QkPWGRSichgKY/T8SGhqekcD413aI5sX26m+Ar+bquIUqZRiK9fJi6UVbDFB
ldi5QIc14KTxn6u1tuuUfrYdwjrRTf/+8uTkJSqhSUwSSz3EWK+1Ukv0H4tX
rimHj6ZmEuNOpQFxrkkRsfNMNShnQmEDgnQ9BLPu48LxB27QAnygtDh1hw5H
m0vwKJigx06nrZIwt3JhvXEmCQ9fpF3G+u4dpoEK2b9JAHAe8VI8N34hLZXy
KTG3nv8QoBbJXDT4c/MMN88ImUw6bPTalXAwkIEoXqeXdGLkzA2gMyIxmsrh
L7XXBrJOsb51cRW2plplnhi5NtoNipH6J4JdSXHRtcwYU5XU54HzF56NqLep
sDVrQFQpRf0FTKzWRUZDSFilRnGI0B/fqh1jgM5OSS2HjbgpGNNi4FxlA4FR
Ki6uapHpLOPjyqVtcQW53kobG1ghY+58bAyow6T9xxjRke6Svz8Y5CuS5V8V
DTLc4hU75c7v8iiQHAI/gAS5l2BgNt60lZH1bpH2bpH3bn++FUjEbY7bEL3b
GP6HNZjtB6AkFIF+X/v2NvzojlEdHQLudMPPt72hHyHTXbCxF4zRlgh8AGLG
7aEeyIz76x0xM1943nQee1SF2eH5GyNovqjXBDGRxt2IUJTRkpgP9aX9EPDM
SS0B0fM2gR53vWxQPnpp4O+GgREZ9Cqrr/Ww+/MHrW3H8vmNV1Vmmrv+at3l
orj4LVb1c+7ideM7PgQHlXBe9arlsx84FjPYdFZ/DUQUWQ0GiWK7oZdvPppf
2yaxmm1GZhRmIBTJjYPto+be4f7B4WT/weTgk5ODg6cPHj89eCQoKXfQsEXw
J6KEf/zJgwePH34CbPin8f8eHzwcM1n8/qODR4/2D6X1DV188PDJ/uHDT6km
If758eGT/ccPHuidTz7119IPjw4P+NLHnxw+eMy30SMef/LJn+0ExfGA9z3c
f/Tp40ePxLCRXx8/enDw6ICRW9Dz8cfDxwePn+w/0nl+JVx7ZAyPXYqQGyGz
15/Q8tvpQ7HL1W0O7WUf5IqVqaNrRySODdNFsVIom2jB9PjAN9aKt/KCl4+g
43t5q9SpOOKgp9QQf7MY/mNwCssoFrnfrCiYOYc6MnKLnARMTei+1pHZ0Kjp
bCNB0nn0ITlZZISE5XLWOJJrcrWK9Rb7c6K65gtcBSmXYxjl9cADeoivMWJc
7TQlPy28e/fy+NuDT6MA/vKL4DW0NJSo+DELl9RMu1reTKBNAY8alfUoa1wT
/dg2s+jAwF1Mqo83NDjOorHRQcnDXrB7r7FkQeydpqR7/DVxicqfX8Qn8PW2
4HYHYXBEWDol0hYPzPAYibfKheaGVjD9AmRGuhdTIAt3bQ55z7JZf0BMA+Iw
pO+p93NIPK2Iu6VbT5Nn8X/+2/G334y+q7FO/9fol1PXi/X5t69eRFmgKo7Q
XMZPBo6PnhWS9SaAh1a7HFZtFlM8Q9O7cvT9q5fEMvvF8wdR7ykts0nmzD1w
m/pg6+NpE1LGpZ4pehTLKEEaRoFVy2kcMGWHJ/pnx47u76JQWVJZslQaJkL0
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
XNPrqLhXgvTKGWJV8r7/AUpaWzT2jgMA

-->

</rfc>
