<?xml version='1.0' encoding='utf-8'?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
  <xs:annotation>
    <xs:documentation>Структурная XML-грамматика. До XML-разбора требуется строгий UTF-8 без BOM, деклараций и NUL; автоопределение другой кодировки запрещено. XSD применяется совместно с байтовыми и межполевыми ограничениями нормативного текста, в том числе mode=test требует purpose=technical. Для session.start и readiness.get обязательны полная форма выбранного режима и согласованные длительности; для audio.prepare — число отсчетов только у записи, точные поля маршрута и допустимые сочетания буфера. Автоматы владения и исполнения проверяются отдельно от структуры XML.</xs:documentation>
  </xs:annotation>
  <xs:simpleType name="text">
    <xs:restriction base="xs:string">
      <xs:maxLength value="128" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="id">
    <xs:restriction base="xs:string">
      <xs:pattern value="[0-9a-f]{32}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="token">
    <xs:restriction base="xs:string">
      <xs:pattern value="[A-Za-z0-9_.:-]{1,32}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="uint64">
    <xs:restriction base="xs:unsignedLong">
      <xs:pattern value="0|[1-9][0-9]*" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="bool">
    <xs:restriction base="xs:string">
      <xs:pattern value="true|false" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="alarm">
    <xs:complexType>
      <xs:attribute name="alarmId" use="optional" type="id" />
      <xs:attribute name="changedAtMs" use="optional" type="uint64" />
      <xs:attribute name="conditionId" use="optional" type="text" />
      <xs:attribute name="continuity" use="optional" type="text" />
      <xs:attribute name="freshness" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="fresh" />
            <xs:enumeration value="stale" />
            <xs:enumeration value="never" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="observedAtMs" use="optional" type="uint64" />
      <xs:attribute name="pointId" use="optional" type="text" />
      <xs:attribute name="severity" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="info" />
            <xs:enumeration value="warning" />
            <xs:enumeration value="critical" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="state" use="optional" type="text" />
      <xs:attribute name="validity" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="valid" />
            <xs:enumeration value="invalid" />
            <xs:enumeration value="unavailable" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="audio">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="clock" />
        <xs:element ref="groupStats" />
      </xs:choice>
      <xs:attribute name="bufferedMs" use="optional" type="uint64" />
      <xs:attribute name="duplicatePackets" use="optional" type="uint64" />
      <xs:attribute name="emittedSamples" use="optional" type="uint64" />
      <xs:attribute name="lastPacketAtMs" use="optional" type="uint64" />
      <xs:attribute name="latePackets" use="optional" type="uint64" />
      <xs:attribute name="lostPackets" use="optional" type="uint64" />
      <xs:attribute name="mediaId" use="optional" type="id" />
      <xs:attribute name="receivedPackets" use="optional" type="uint64" />
      <xs:attribute name="sessionId" use="optional" type="id" />
      <xs:attribute name="state" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="buffer">
    <xs:complexType>
      <xs:attribute name="initialMs" use="optional" type="uint64" />
      <xs:attribute name="maxMs" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="cancellation">
    <xs:complexType>
      <xs:attribute name="activeMatch" use="optional" type="bool" />
      <xs:attribute name="history" use="optional" type="text" />
      <xs:attribute name="lateStartBlocked" use="optional" type="bool" />
      <xs:attribute name="startSeq" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="cancelled">
    <xs:complexType>
      <xs:attribute name="id" use="optional" type="text" />
      <xs:attribute name="operationId" use="optional" type="id" />
    </xs:complexType>
  </xs:element>
  <xs:element name="capabilities">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="command" />
        <xs:element ref="limit" />
        <xs:element ref="mode" />
        <xs:element ref="resource" />
        <xs:element ref="mediaProfile" />
      </xs:choice>
      <xs:attribute name="capabilityRevision" use="optional" type="uint64" />
      <xs:attribute name="cursor" use="optional" type="token" />
      <xs:attribute name="more" use="optional" type="bool" />
      <xs:attribute name="snapshotId" use="optional" type="id" />
    </xs:complexType>
  </xs:element>
  <xs:element name="channel">
    <xs:complexType>
      <xs:attribute name="leaseRemainingMs" use="optional" type="uint64" />
      <xs:attribute name="uptimeMs" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="check">
    <xs:complexType>
      <xs:attribute name="id" use="optional" type="text" />
      <xs:attribute name="phase" use="optional" type="text" />
      <xs:attribute name="reason" use="optional" type="text" />
      <xs:attribute name="resourceId" use="optional" type="text" />
      <xs:attribute name="status" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="clock">
    <xs:complexType>
      <xs:attribute name="utcMs" use="optional" type="uint64" />
      <xs:attribute name="errorMs" use="optional" type="uint64" />
      <xs:attribute name="sourceSamples" use="optional" type="uint64" />
      <xs:attribute name="concealedSamples" use="optional" type="uint64" />
      <xs:attribute name="rateCorrectionPpm" use="optional" type="text" />
      <xs:attribute name="state" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="command">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="response" />
      </xs:choice>
      <xs:attribute name="action" use="optional" type="text" />
      <xs:attribute name="cmdSeq" use="optional" type="uint64" />
      <xs:attribute name="name" use="optional" type="text" />
      <xs:attribute name="state" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="committed">
    <xs:complexType>
      <xs:attribute name="appliedRevision" use="optional" type="uint64" />
      <xs:attribute name="configRevision" use="optional" type="uint64" />
      <xs:attribute name="id" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="completion">
    <xs:complexType>
      <xs:attribute name="state" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="pending" />
            <xs:enumeration value="complete" />
            <xs:enumeration value="interrupted" />
            <xs:enumeration value="unknown" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="condition">
    <xs:complexType>
      <xs:attribute name="code" use="optional" type="text" />
      <xs:attribute name="effect" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="none" />
            <xs:enumeration value="degraded" />
            <xs:enumeration value="failed" />
            <xs:enumeration value="unknown" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="id" use="optional" type="text" />
      <xs:attribute name="mode" use="optional" type="text" />
      <xs:attribute name="pointId" use="optional" type="text" />
      <xs:attribute name="resourceId" use="optional" type="text" />
      <xs:attribute name="severity" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="info" />
            <xs:enumeration value="warning" />
            <xs:enumeration value="critical" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="configuration">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="entry" />
        <xs:element ref="transaction" />
      </xs:choice>
      <xs:attribute name="appliedRevision" use="optional" type="uint64" />
      <xs:attribute name="configRevision" use="optional" type="uint64" />
      <xs:attribute name="cursor" use="optional" type="token" />
      <xs:attribute name="more" use="optional" type="bool" />
      <xs:attribute name="onControlLoss" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="stop" />
            <xs:enumeration value="finish" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="snapshotId" use="optional" type="id" />
    </xs:complexType>
  </xs:element>
  <xs:element name="content">
    <xs:complexType>
      <xs:attribute name="bytes" use="optional" type="uint64" />
      <xs:attribute name="codec" use="optional" type="text" />
      <xs:attribute name="hash" use="optional" type="text" />
      <xs:attribute name="hashAlgorithm" use="optional" type="text" />
      <xs:attribute name="id" use="optional" type="text" />
      <xs:attribute name="revision" use="optional" type="text" />
      <xs:attribute name="sampleCount" use="optional" type="uint64" />
      <xs:attribute name="state" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="contents">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="content" />
        <xs:element ref="verification" />
      </xs:choice>
      <xs:attribute name="cursor" use="optional" type="token" />
      <xs:attribute name="more" use="optional" type="text" />
      <xs:attribute name="snapshotId" use="optional" type="id" />
      <xs:attribute name="capabilityRevision" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="control">
    <xs:complexType>
      <xs:attribute name="acquireSeq" use="optional" type="uint64" />
      <xs:attribute name="attachSeq" use="optional" type="uint64" />
      <xs:attribute name="controlEpoch" use="optional" type="id" />
      <xs:attribute name="current" use="optional" type="bool" />
      <xs:attribute name="highWater" use="optional" type="uint64" />
      <xs:attribute name="idleDeadlineMs" use="optional" type="uint64" />
      <xs:attribute name="instanceId" use="optional" type="id" />
      <xs:attribute name="leaseRemainingMs" use="optional" type="uint64" />
      <xs:attribute name="purpose" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="device">
    <xs:complexType>
      <xs:attribute name="deviceId" use="optional" type="id" />
      <xs:attribute name="kind" use="optional" type="text" />
      <xs:attribute name="manufacturer" use="optional" type="text" />
      <xs:attribute name="securityPolicy" use="optional" type="text" />
      <xs:attribute name="softwareDeveloper" use="optional" type="text" />
      <xs:attribute name="uptimeMs" use="optional" type="uint64" />
      <xs:attribute name="version" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="diagnostics">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="metric" />
      </xs:choice>
      <xs:attribute name="more" use="optional" type="bool" />
      <xs:attribute name="snapshotId" use="optional" type="id" />
      <xs:attribute name="uptimeMs" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="discarded">
    <xs:complexType>
      <xs:attribute name="mediaId" use="optional" type="id" />
    </xs:complexType>
  </xs:element>
  <xs:element name="entry">
    <xs:complexType>
      <xs:attribute name="atMs" use="optional" type="text" />
      <xs:attribute name="code" use="optional" type="text" />
      <xs:attribute name="facet" use="optional" type="text" />
      <xs:attribute name="id" use="optional" type="text" />
      <xs:attribute name="level" use="optional" type="text" />
      <xs:attribute name="part" use="optional" type="uint64" />
      <xs:attribute name="parts" use="optional" type="uint64" />
      <xs:attribute name="seq" use="optional" type="text" />
      <xs:attribute name="sessionId" use="optional" type="id" />
      <xs:attribute name="text" use="optional" type="text" />
      <xs:attribute name="type" use="optional" type="text" />
      <xs:attribute name="value" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="enum">
    <xs:complexType>
      <xs:attribute name="code" use="optional" type="text" />
      <xs:attribute name="label" use="optional" type="text" />
      <xs:attribute name="pointId" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="error">
    <xs:complexType>
      <xs:attribute name="cancelSeq" use="optional" type="uint64" />
      <xs:attribute name="code" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="incompatibleProfile" />
            <xs:enumeration value="staleAttachment" />
            <xs:enumeration value="unsupportedVersion" />
            <xs:enumeration value="unsupported" />
            <xs:enumeration value="invalidArgument" />
            <xs:enumeration value="forbidden" />
            <xs:enumeration value="staleBoot" />
            <xs:enumeration value="staleEpoch" />
            <xs:enumeration value="busy" />
            <xs:enumeration value="unsafeState" />
            <xs:enumeration value="startWindowExpired" />
            <xs:enumeration value="confirmationWindowExpired" />
            <xs:enumeration value="startBlockedByCancel" />
            <xs:enumeration value="conflict" />
            <xs:enumeration value="resultExpired" />
            <xs:enumeration value="notFound" />
            <xs:enumeration value="snapshotExpired" />
            <xs:enumeration value="cursorExpired" />
            <xs:enumeration value="sourceUnavailable" />
            <xs:enumeration value="storageFault" />
            <xs:enumeration value="incompatible" />
            <xs:enumeration value="incomplete" />
            <xs:enumeration value="noSpace" />
            <xs:enumeration value="invalidSignature" />
            <xs:enumeration value="rollbackDenied" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="detail" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="roleDenied" />
            <xs:enumeration value="scopeDenied" />
            <xs:enumeration value="ownerMismatch" />
            <xs:enumeration value="ownershipHeld" />
            <xs:enumeration value="executionActive" />
            <xs:enumeration value="localControl" />
            <xs:enumeration value="serviceActive" />
            <xs:enumeration value="capacityExhausted" />
            <xs:enumeration value="requestMismatch" />
            <xs:enumeration value="configRevisionMismatch" />
            <xs:enumeration value="capabilityRevisionMismatch" />
            <xs:enumeration value="bindingChanged" />
            <xs:enumeration value="contentRevisionMismatch" />
            <xs:enumeration value="instanceMismatch" />
            <xs:enumeration value="operationStateMismatch" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="resource" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="event">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="alarm" />
        <xs:element ref="execution" />
        <xs:element ref="fault" />
        <xs:element ref="point" />
        <xs:element ref="resource" />
        <xs:element ref="session" />
      </xs:choice>
      <xs:attribute name="atMs" use="optional" type="text" />
      <xs:attribute name="capabilityRevision" use="optional" type="uint64" />
      <xs:attribute name="eventSeq" use="optional" type="text" />
      <xs:attribute name="resourceId" use="optional" type="text" />
      <xs:attribute name="seq" use="optional" type="uint64" />
      <xs:attribute name="sessionId" use="optional" type="id" />
      <xs:attribute name="stateRevision" use="optional" type="uint64" />
      <xs:attribute name="type" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="session.started" />
            <xs:enumeration value="session.finished" />
            <xs:enumeration value="resource.changed" />
            <xs:enumeration value="sensor.qualityChanged" />
            <xs:enumeration value="inventory.changed" />
            <xs:enumeration value="alarm.raised" />
            <xs:enumeration value="alarm.cleared" />
            <xs:enumeration value="alarm.qualityChanged" />
            <xs:enumeration value="session.execution" />
            <xs:enumeration value="session.fault" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="events">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="event" />
      </xs:choice>
      <xs:attribute name="afterSeq" use="optional" type="uint64" />
      <xs:attribute name="bootId" use="optional" type="id" />
      <xs:attribute name="gap" use="optional" type="bool" />
      <xs:attribute name="more" use="optional" type="bool" />
      <xs:attribute name="nextSeq" use="optional" type="uint64" />
      <xs:attribute name="oldestSeq" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="evidence">
    <xs:complexType>
      <xs:attribute name="observedAtMs" use="optional" type="text" />
      <xs:attribute name="resourceId" use="optional" type="text" />
      <xs:attribute name="validity" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="valid" />
            <xs:enumeration value="invalid" />
            <xs:enumeration value="unavailable" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="pointId" use="optional" type="text" />
      <xs:attribute name="required" use="optional" type="bool" />
      <xs:attribute name="validUntilMs" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="execution">
    <xs:complexType>
      <xs:attribute name="criterionId" use="optional" type="text" />
      <xs:attribute name="evidence" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="none" />
            <xs:enumeration value="commandSent" />
            <xs:enumeration value="reportedMode" />
            <xs:enumeration value="electrical" />
            <xs:enumeration value="acoustic" />
            <xs:enumeration value="localConfirmation" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="observedAtMs" use="optional" type="uint64" />
      <xs:attribute name="passIndex" use="optional" type="uint64" />
      <xs:attribute name="resourceId" use="optional" type="text" />
      <xs:attribute name="sessionId" use="optional" type="id" />
      <xs:attribute name="sourceId" use="optional" type="text" />
      <xs:attribute name="stageIndex" use="optional" type="uint64" />
      <xs:attribute name="status" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="pending" />
            <xs:enumeration value="confirmed" />
            <xs:enumeration value="notExecuted" />
            <xs:enumeration value="unknown" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="executionCriterion">
    <xs:complexType>
      <xs:attribute name="criterionId" use="optional" type="text" />
      <xs:attribute name="evidence" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="none" />
            <xs:enumeration value="commandSent" />
            <xs:enumeration value="reportedMode" />
            <xs:enumeration value="electrical" />
            <xs:enumeration value="acoustic" />
            <xs:enumeration value="localConfirmation" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="maxAgeMs" use="optional" type="uint64" />
      <xs:attribute name="mode" use="optional" type="text" />
      <xs:attribute name="resourceId" use="optional" type="text" />
      <xs:attribute name="sourceId" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="fault">
    <xs:complexType>
      <xs:attribute name="alarmId" use="optional" type="id" />
      <xs:attribute name="clearedAtMs" use="optional" type="uint64" />
      <xs:attribute name="code" use="optional" type="text" />
      <xs:attribute name="conditionId" use="optional" type="text" />
      <xs:attribute name="effect" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="none" />
            <xs:enumeration value="degraded" />
            <xs:enumeration value="failed" />
            <xs:enumeration value="unknown" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="id" use="optional" type="text" />
      <xs:attribute name="occurredAtMs" use="optional" type="uint64" />
      <xs:attribute name="passIndex" use="optional" type="uint64" />
      <xs:attribute name="resourceId" use="optional" type="text" />
      <xs:attribute name="sessionId" use="optional" type="id" />
      <xs:attribute name="severity" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="info" />
            <xs:enumeration value="warning" />
            <xs:enumeration value="critical" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="stageIndex" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="firmware">
    <xs:complexType>
      <xs:attribute name="operationId" use="optional" type="id" />
      <xs:attribute name="progressBytes" use="optional" type="text" />
      <xs:attribute name="reason" use="optional" type="text" />
      <xs:attribute name="receivedBytes" use="optional" type="uint64" />
      <xs:attribute name="remainingBudgetMs" use="optional" type="uint64" />
      <xs:attribute name="state" use="optional" type="text" />
      <xs:attribute name="version" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="group">
    <xs:complexType>
      <xs:attribute name="id" use="optional" type="text" />
      <xs:attribute name="key" use="optional" type="text" />
      <xs:attribute name="revision" use="optional" type="text" />
      <xs:attribute name="source" use="optional" type="text" />
      <xs:attribute name="streamId" use="optional" type="id" />
      <xs:attribute name="totalSamples" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="hello">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="profile" />
      </xs:choice>
      <xs:attribute name="clientId" use="optional" type="id" />
      <xs:attribute name="deviceId" use="optional" type="id" />
      <xs:attribute name="security" use="optional" type="text" />
      <xs:attribute name="selectedProfile" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="image">
    <xs:complexType>
      <xs:attribute name="bytes" use="optional" type="uint64" />
      <xs:attribute name="deviceKind" use="optional" type="text" />
      <xs:attribute name="hardwareRevision" use="optional" type="text" />
      <xs:attribute name="hash" use="optional" type="text" />
      <xs:attribute name="hashAlgorithm" use="optional" type="text" />
      <xs:attribute name="id" use="optional" type="text" />
      <xs:attribute name="keyId" use="optional" type="text" />
      <xs:attribute name="signature" use="optional" type="text" />
      <xs:attribute name="version" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="info">
    <xs:complexType>
      <xs:attribute name="protocolName" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="Открытый протокол систем оповещения" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="inventory">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="condition" />
        <xs:element ref="enum" />
        <xs:element ref="point" />
        <xs:element ref="threshold" />
      </xs:choice>
      <xs:attribute name="bindingGeneration" use="optional" type="uint64" />
      <xs:attribute name="capabilityRevision" use="optional" type="uint64" />
      <xs:attribute name="cursor" use="optional" type="token" />
      <xs:attribute name="more" use="optional" type="bool" />
      <xs:attribute name="snapshotId" use="optional" type="id" />
    </xs:complexType>
  </xs:element>
  <xs:element name="limit">
    <xs:complexType>
      <xs:attribute name="name" use="optional" type="text" />
      <xs:attribute name="value" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="log">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="entry" />
      </xs:choice>
      <xs:attribute name="gap" use="optional" type="bool" />
      <xs:attribute name="more" use="optional" type="bool" />
      <xs:attribute name="nextSeq" use="optional" type="uint64" />
      <xs:attribute name="oldestSeq" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="metric">
    <xs:complexType>
      <xs:attribute name="name" use="optional" type="text" />
      <xs:attribute name="type" use="optional" type="text" />
      <xs:attribute name="unit" use="optional" type="text" />
      <xs:attribute name="value" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="mode">
    <xs:complexType>
      <xs:attribute name="id" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="network">
    <xs:complexType>
      <xs:attribute name="address" use="optional" type="text" />
      <xs:attribute name="confirmMs" use="optional" type="uint64" />
      <xs:attribute name="gateway" use="optional" type="text" />
      <xs:attribute name="id" use="optional" type="text" />
      <xs:attribute name="prefix" use="optional" type="uint64" />
      <xs:attribute name="state" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="observation">
    <xs:complexType>
      <xs:attribute name="freshness" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="fresh" />
            <xs:enumeration value="stale" />
            <xs:enumeration value="never" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="id" use="optional" type="text" />
      <xs:attribute name="observedAtMs" use="optional" type="uint64" />
      <xs:attribute name="phase" use="optional" type="text" />
      <xs:attribute name="pointId" use="optional" type="text" />
      <xs:attribute name="reason" use="optional" type="text" />
      <xs:attribute name="resourceId" use="optional" type="text" />
      <xs:attribute name="sourceId" use="optional" type="text" />
      <xs:attribute name="sourceKind" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="localInput" />
            <xs:enumeration value="ouReply" />
            <xs:enumeration value="controllerMetric" />
            <xs:enumeration value="derived" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="type" use="optional" type="text" />
      <xs:attribute name="validity" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="valid" />
            <xs:enumeration value="invalid" />
            <xs:enumeration value="unavailable" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="value" use="optional" type="bool" />
    </xs:complexType>
  </xs:element>
  <xs:element name="operation">
    <xs:complexType>
      <xs:attribute name="id" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="ownership">
    <xs:complexType>
      <xs:attribute name="state" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="free" />
            <xs:enumeration value="held" />
            <xs:enumeration value="detached" />
            <xs:enumeration value="draining" />
            <xs:enumeration value="blocked" />
            <xs:enumeration value="released" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="principalId" use="optional" type="id" />
      <xs:attribute name="controlEpoch" use="optional" type="id" />
      <xs:attribute name="idleDeadlineMs" use="optional" type="uint64" />
      <xs:attribute name="purpose" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="real" />
            <xs:enumeration value="exercise" />
            <xs:enumeration value="technical" />
            <xs:enumeration value="maintenance" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="parameter">
    <xs:complexType>
      <xs:attribute name="name" use="optional" type="text" />
      <xs:attribute name="part" use="optional" type="uint64" />
      <xs:attribute name="parts" use="optional" type="uint64" />
      <xs:attribute name="type" use="optional" type="text" />
      <xs:attribute name="value" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="plan">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="program" />
        <xs:element ref="recording" />
        <xs:element ref="resources" />
        <xs:element ref="siren" />
        <xs:element ref="stream" />
        <xs:element ref="test" />
      </xs:choice>
      <xs:attribute name="capabilityRevision" use="optional" type="uint64" />
      <xs:attribute name="configRevision" use="optional" type="uint64" />
      <xs:attribute name="maxDurationMs" use="optional" type="uint64" />
      <xs:attribute name="mode" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="point">
    <xs:complexType>
      <xs:attribute name="changedAtMs" use="optional" type="uint64" />
      <xs:attribute name="evaluatedAtMs" use="optional" type="uint64" />
      <xs:attribute name="facet" use="optional" type="text" />
      <xs:attribute name="freshness" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="fresh" />
            <xs:enumeration value="stale" />
            <xs:enumeration value="never" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="id" use="optional" type="text" />
      <xs:attribute name="kind" use="optional" type="text" />
      <xs:attribute name="maxAgeMs" use="optional" type="uint64" />
      <xs:attribute name="observedAtMs" use="optional" type="uint64" />
      <xs:attribute name="ouId" use="optional" type="text" />
      <xs:attribute name="presence" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="present" />
            <xs:enumeration value="absent" />
            <xs:enumeration value="expectedMissing" />
            <xs:enumeration value="unknown" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="readMethod" use="optional" type="text" />
      <xs:attribute name="reason" use="optional" type="text" />
      <xs:attribute name="resourceId" use="optional" type="text" />
      <xs:attribute name="sampleSeq" use="optional" type="uint64" />
      <xs:attribute name="scale" use="optional" type="uint64" />
      <xs:attribute name="sourceId" use="optional" type="text" />
      <xs:attribute name="sourceKind" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="localInput" />
            <xs:enumeration value="ouReply" />
            <xs:enumeration value="controllerMetric" />
            <xs:enumeration value="derived" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="support" use="optional" type="text" />
      <xs:attribute name="type" use="optional" type="text" />
      <xs:attribute name="unit" use="optional" type="text" />
      <xs:attribute name="validity" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="valid" />
            <xs:enumeration value="invalid" />
            <xs:enumeration value="unavailable" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="value" use="optional" type="bool" />
    </xs:complexType>
  </xs:element>
  <xs:element name="poll">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="point" />
      </xs:choice>
      <xs:attribute name="clientOperationId" use="optional" type="id" />
      <xs:attribute name="complete" use="optional" type="bool" />
      <xs:attribute name="deadlineMs" use="optional" type="uint64" />
      <xs:attribute name="evaluatedAtMs" use="optional" type="uint64" />
      <xs:attribute name="expectedCount" use="optional" type="uint64" />
      <xs:attribute name="more" use="optional" type="bool" />
      <xs:attribute name="operationId" use="optional" type="id" />
      <xs:attribute name="refresh" use="optional" type="text" />
      <xs:attribute name="snapshotId" use="optional" type="id" />
      <xs:attribute name="state" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="prepared">
    <xs:complexType>
      <xs:attribute name="capabilityRevision" use="optional" type="uint64" />
      <xs:attribute name="configRevision" use="optional" type="uint64" />
      <xs:attribute name="expiresAtMs" use="optional" type="uint64" />
      <xs:attribute name="mediaId" use="optional" type="id" />
    </xs:complexType>
  </xs:element>
  <xs:element name="profile">
    <xs:complexType>
      <xs:attribute name="id" use="optional" type="text" />
      <xs:attribute name="revision" use="optional">
        <xs:simpleType>
          <xs:restriction base="uint64">
            <xs:minInclusive value="1" />
            <xs:maxInclusive value="18446744073709551615" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="kind" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="vau" />
            <xs:enumeration value="siren" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="profiles">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="executionCriterion" />
        <xs:element ref="parameter" />
        <xs:element ref="profile" />
      </xs:choice>
      <xs:attribute name="bindingGeneration" use="optional" type="uint64" />
      <xs:attribute name="capabilityRevision" use="optional" type="uint64" />
      <xs:attribute name="cursor" use="optional" type="token" />
      <xs:attribute name="more" use="optional" type="bool" />
      <xs:attribute name="resourceId" use="optional" type="text" />
      <xs:attribute name="snapshotId" use="optional" type="id" />
    </xs:complexType>
  </xs:element>
  <xs:element name="program">
    <xs:complexType>
      <xs:attribute name="id" use="optional" type="text" />
      <xs:attribute name="revision" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="readiness">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="evidence" />
        <xs:element ref="resource" />
        <xs:element ref="summary" />
      </xs:choice>
      <xs:attribute name="cursor" use="optional" type="token" />
      <xs:attribute name="evaluatedAtMs" use="optional" type="uint64" />
      <xs:attribute name="more" use="optional" type="text" />
      <xs:attribute name="snapshotId" use="optional" type="id" />
      <xs:attribute name="stateRevision" use="optional" type="uint64" />
      <xs:attribute name="validUntilMs" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="ready">
    <xs:complexType>
      <xs:attribute name="blockBytes" use="optional" type="uint64" />
      <xs:attribute name="id" use="optional" type="text" />
      <xs:attribute name="mediaId" use="optional" type="id" />
      <xs:attribute name="receivedBytes" use="optional" type="uint64" />
      <xs:attribute name="remainingBudgetMs" use="optional" type="uint64" />
      <xs:attribute name="windowBlocks" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="recording">
    <xs:complexType>
      <xs:attribute name="contentId" use="optional" type="text" />
      <xs:attribute name="hash" use="optional" type="text" />
      <xs:attribute name="hashAlgorithm" use="optional" type="text" />
      <xs:attribute name="revision" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="recovery">
    <xs:complexType>
      <xs:attribute name="state" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="reconciling" />
            <xs:enumeration value="ready" />
            <xs:enumeration value="localInterventionRequired" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="released">
    <xs:complexType>
      <xs:attribute name="controlEpoch" use="optional" type="id" />
      <xs:attribute name="released" use="optional" type="bool" />
    </xs:complexType>
  </xs:element>
  <xs:element name="request">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="clock" />
        <xs:element ref="content" />
        <xs:element ref="control" />
        <xs:element ref="events" />
        <xs:element ref="group" />
        <xs:element ref="hello" />
        <xs:element ref="image" />
        <xs:element ref="network" />
        <xs:element ref="plan" />
        <xs:element ref="poll" />
        <xs:element ref="prepared" />
        <xs:element ref="selection" />
        <xs:element ref="session" />
        <xs:element ref="stream" />
        <xs:element ref="transaction" />
        <xs:element ref="transfer" />
        <xs:element ref="upload" />
      </xs:choice>
      <xs:attribute name="action" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="transfer.capabilities" />
            <xs:enumeration value="transfer.hello" />
            <xs:enumeration value="firmware.cancel" />
            <xs:enumeration value="profiles.get" />
            <xs:enumeration value="programs.list" />
            <xs:enumeration value="audio.prepare" />
            <xs:enumeration value="audio.state" />
            <xs:enumeration value="audio.finish" />
            <xs:enumeration value="audio.discard" />
            <xs:enumeration value="content.begin" />
            <xs:enumeration value="content.commit" />
            <xs:enumeration value="content.status" />
            <xs:enumeration value="content.cancel" />
            <xs:enumeration value="media.hello" />
            <xs:enumeration value="audio.group.prepare" />
            <xs:enumeration value="protocol.hello" />
            <xs:enumeration value="readiness.get" />
            <xs:enumeration value="content.describe" />
            <xs:enumeration value="device.describe" />
            <xs:enumeration value="device.capabilities" />
            <xs:enumeration value="device.state" />
            <xs:enumeration value="inventory.get" />
            <xs:enumeration value="sensors.read" />
            <xs:enumeration value="diagnostics.read" />
            <xs:enumeration value="tests.list" />
            <xs:enumeration value="log.read" />
            <xs:enumeration value="poll.start" />
            <xs:enumeration value="poll.get" />
            <xs:enumeration value="poll.cancel" />
            <xs:enumeration value="control.acquire" />
            <xs:enumeration value="control.resume" />
            <xs:enumeration value="control.release" />
            <xs:enumeration value="channel.ping" />
            <xs:enumeration value="session.start" />
            <xs:enumeration value="session.stop" />
            <xs:enumeration value="session.cancel" />
            <xs:enumeration value="session.get" />
            <xs:enumeration value="command.get" />
            <xs:enumeration value="events.read" />
            <xs:enumeration value="config.get" />
            <xs:enumeration value="config.stage" />
            <xs:enumeration value="config.commit" />
            <xs:enumeration value="config.cancel" />
            <xs:enumeration value="network.stage" />
            <xs:enumeration value="network.confirm" />
            <xs:enumeration value="network.cancel" />
            <xs:enumeration value="time.set" />
            <xs:enumeration value="firmware.begin" />
            <xs:enumeration value="firmware.verify" />
            <xs:enumeration value="firmware.commit" />
            <xs:enumeration value="firmware.status" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="bootId" use="optional" type="id" />
      <xs:attribute name="cmdSeq" use="optional" type="uint64" />
      <xs:attribute name="controlEpoch" use="optional" type="id" />
      <xs:attribute name="id" use="required" type="text" />
      <xs:attribute name="profile" use="required" type="text" />
      <xs:attribute name="v" use="required" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="resource">
    <xs:complexType>
      <xs:attribute name="bindingGeneration" use="optional" type="uint64" />
      <xs:attribute name="conflictGroup" use="optional" type="text" />
      <xs:attribute name="evidence" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="none" />
            <xs:enumeration value="commandSent" />
            <xs:enumeration value="reportedMode" />
            <xs:enumeration value="electrical" />
            <xs:enumeration value="acoustic" />
            <xs:enumeration value="localConfirmation" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="id" use="optional" type="text" />
      <xs:attribute name="observedAtMs" use="optional" type="uint64" />
      <xs:attribute name="ouId" use="optional" type="text" />
      <xs:attribute name="output" use="optional" type="text" />
      <xs:attribute name="state" use="optional" type="text" />
      <xs:attribute name="reason" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="resources">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="resource" />
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="response">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="audio" />
        <xs:element ref="cancellation" />
        <xs:element ref="cancelled" />
        <xs:element ref="capabilities" />
        <xs:element ref="channel" />
        <xs:element ref="clock" />
        <xs:element ref="command" />
        <xs:element ref="committed" />
        <xs:element ref="configuration" />
        <xs:element ref="content" />
        <xs:element ref="contents" />
        <xs:element ref="control" />
        <xs:element ref="device" />
        <xs:element ref="diagnostics" />
        <xs:element ref="discarded" />
        <xs:element ref="error" />
        <xs:element ref="events" />
        <xs:element ref="firmware" />
        <xs:element ref="hello" />
        <xs:element ref="info" />
        <xs:element ref="inventory" />
        <xs:element ref="log" />
        <xs:element ref="network" />
        <xs:element ref="operation" />
        <xs:element ref="poll" />
        <xs:element ref="prepared" />
        <xs:element ref="profiles" />
        <xs:element ref="readiness" />
        <xs:element ref="ready" />
        <xs:element ref="released" />
        <xs:element ref="result" />
        <xs:element ref="session" />
        <xs:element ref="snapshot" />
        <xs:element ref="staged" />
        <xs:element ref="state" />
        <xs:element ref="tests" />
        <xs:element ref="transfer" />
        <xs:element ref="upload" />
      </xs:choice>
      <xs:attribute name="bootId" use="required" type="id" />
      <xs:attribute name="profile" use="required" type="text" />
      <xs:attribute name="status" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="ok" />
            <xs:enumeration value="accepted" />
            <xs:enumeration value="error" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="to" use="required" type="text" />
      <xs:attribute name="v" use="required" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="result">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="check" />
        <xs:element ref="completion" />
        <xs:element ref="execution" />
        <xs:element ref="fault" />
        <xs:element ref="observation" />
        <xs:element ref="resource" />
        <xs:element ref="session" />
        <xs:element ref="stageResult" />
        <xs:element ref="timeline" />
      </xs:choice>
      <xs:attribute name="checkCount" use="optional" type="uint64" />
      <xs:attribute name="cursor" use="optional" type="token" />
      <xs:attribute name="evaluatedAtMs" use="optional" type="uint64" />
      <xs:attribute name="executionCount" use="optional">
        <xs:simpleType>
          <xs:restriction base="uint64">
            <xs:minInclusive value="0" />
            <xs:maxInclusive value="512" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="faultCount" use="optional">
        <xs:simpleType>
          <xs:restriction base="uint64">
            <xs:minInclusive value="0" />
            <xs:maxInclusive value="65535" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="mode" use="optional" type="text" />
      <xs:attribute name="more" use="optional" type="bool" />
      <xs:attribute name="observationCount" use="optional" type="uint64" />
      <xs:attribute name="resourceCount" use="optional">
        <xs:simpleType>
          <xs:restriction base="uint64">
            <xs:minInclusive value="1" />
            <xs:maxInclusive value="4" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="snapshotId" use="optional" type="id" />
      <xs:attribute name="stateRevision" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="route">
    <xs:complexType>
      <xs:attribute name="delivery" use="optional" type="text" />
      <xs:attribute name="destinationAddress" use="optional" type="text" />
      <xs:attribute name="destinationPort" use="optional">
        <xs:simpleType>
          <xs:restriction base="uint64">
            <xs:minInclusive value="1" />
            <xs:maxInclusive value="65535" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="sourceAddress" use="optional" type="text" />
      <xs:attribute name="sourcePort" use="optional">
        <xs:simpleType>
          <xs:restriction base="uint64">
            <xs:minInclusive value="1" />
            <xs:maxInclusive value="65535" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="transport" use="optional" type="text" />
      <xs:attribute name="ttl" use="optional">
        <xs:simpleType>
          <xs:restriction base="uint64">
            <xs:minInclusive value="1" />
            <xs:maxInclusive value="255" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="selection">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="point" />
      </xs:choice>
      <xs:attribute name="afterSeq" use="optional" type="uint64" />
      <xs:attribute name="cmdSeq" use="optional" type="uint64" />
      <xs:attribute name="contentId" use="optional" type="text" />
      <xs:attribute name="controlEpoch" use="optional" type="id" />
      <xs:attribute name="cursor" use="optional" type="token" />
      <xs:attribute name="limit" use="optional" type="uint64" />
      <xs:attribute name="mediaId" use="optional" type="id" />
      <xs:attribute name="operationId" use="optional" type="id" />
      <xs:attribute name="pointId" use="optional" type="text" />
      <xs:attribute name="programId" use="optional" type="text" />
      <xs:attribute name="resourceId" use="optional" type="text" />
      <xs:attribute name="revision" use="optional" type="text" />
      <xs:attribute name="scope" use="optional" type="text" />
      <xs:attribute name="sessionId" use="optional" type="id" />
      <xs:attribute name="snapshotId" use="optional" type="id" />
      <xs:attribute name="startSeq" use="optional" type="uint64" />
      <xs:attribute name="testId" use="optional" type="text" />
      <xs:attribute name="transactionId" use="optional" type="text" />
      <xs:attribute name="uploadId" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="session">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="program" />
        <xs:element ref="recording" />
        <xs:element ref="resources" />
        <xs:element ref="siren" />
        <xs:element ref="stream" />
        <xs:element ref="test" />
      </xs:choice>
      <xs:attribute name="acceptBeforeMs" use="optional" type="uint64" />
      <xs:attribute name="acceptedAtMs" use="optional" type="uint64" />
      <xs:attribute name="capabilityRevision" use="optional" type="uint64" />
      <xs:attribute name="configRevision" use="optional" type="uint64" />
      <xs:attribute name="id" use="optional" type="text" />
      <xs:attribute name="maxDurationMs" use="optional" type="uint64" />
      <xs:attribute name="mode" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="siren" />
            <xs:enumeration value="recording" />
            <xs:enumeration value="test" />
            <xs:enumeration value="program" />
            <xs:enumeration value="stream" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="onControlLoss" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="stop" />
            <xs:enumeration value="finish" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="purpose" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="real" />
            <xs:enumeration value="exercise" />
            <xs:enumeration value="technical" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="reason" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="completed" />
            <xs:enumeration value="operatorStop" />
            <xs:enumeration value="controlLostStop" />
            <xs:enumeration value="maxDurationExceeded" />
            <xs:enumeration value="prepareTimeout" />
            <xs:enumeration value="stopDispatchTimeout" />
            <xs:enumeration value="stopConfirmTimeout" />
            <xs:enumeration value="sourceUnavailable" />
            <xs:enumeration value="driverFault" />
            <xs:enumeration value="storageFault" />
            <xs:enumeration value="contentMismatch" />
            <xs:enumeration value="mediaIncomplete" />
            <xs:enumeration value="hardwareProtection" />
            <xs:enumeration value="testFailed" />
            <xs:enumeration value="stopUnconfirmed" />
            <xs:enumeration value="observationLost" />
            <xs:enumeration value="recoveryUncertain" />
            <xs:enumeration value="mediaClockFault" />
            <xs:enumeration value="equipmentFault" />
            <xs:enumeration value="programAborted" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="result" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="succeeded" />
            <xs:enumeration value="failed" />
            <xs:enumeration value="cancelled" />
            <xs:enumeration value="unknown" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="startSeq" use="optional" type="uint64" />
      <xs:attribute name="state" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="starting" />
            <xs:enumeration value="running" />
            <xs:enumeration value="stopping" />
            <xs:enumeration value="finished" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="siren">
    <xs:complexType>
      <xs:attribute name="durationMs" use="optional" type="uint64" />
      <xs:attribute name="pattern" use="optional" type="text" />
      <xs:attribute name="stopMode" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="snapshot">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="point" />
      </xs:choice>
      <xs:attribute name="bindingGeneration" use="optional" type="uint64" />
      <xs:attribute name="capabilityRevision" use="optional" type="uint64" />
      <xs:attribute name="complete" use="optional" type="bool" />
      <xs:attribute name="evaluatedAtMs" use="optional" type="uint64" />
      <xs:attribute name="eventSeq" use="optional" type="uint64" />
      <xs:attribute name="more" use="optional" type="bool" />
      <xs:attribute name="snapshotId" use="optional" type="id" />
      <xs:attribute name="stateRevision" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="stageResult">
    <xs:complexType>
      <xs:attribute name="finishedAtMs" use="optional" type="uint64" />
      <xs:attribute name="passIndex" use="optional" type="uint64" />
      <xs:attribute name="reason" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="completed" />
            <xs:enumeration value="operatorStop" />
            <xs:enumeration value="controlLostStop" />
            <xs:enumeration value="maxDurationExceeded" />
            <xs:enumeration value="prepareTimeout" />
            <xs:enumeration value="stopDispatchTimeout" />
            <xs:enumeration value="stopConfirmTimeout" />
            <xs:enumeration value="sourceUnavailable" />
            <xs:enumeration value="driverFault" />
            <xs:enumeration value="storageFault" />
            <xs:enumeration value="contentMismatch" />
            <xs:enumeration value="mediaIncomplete" />
            <xs:enumeration value="hardwareProtection" />
            <xs:enumeration value="testFailed" />
            <xs:enumeration value="stopUnconfirmed" />
            <xs:enumeration value="observationLost" />
            <xs:enumeration value="recoveryUncertain" />
            <xs:enumeration value="mediaClockFault" />
            <xs:enumeration value="equipmentFault" />
            <xs:enumeration value="programAborted" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="result" use="optional" type="text" />
      <xs:attribute name="runningAtMs" use="optional" type="uint64" />
      <xs:attribute name="stageIndex" use="optional" type="uint64" />
      <xs:attribute name="state" use="optional" type="text" />
      <xs:attribute name="stoppingAtMs" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="staged">
    <xs:complexType>
      <xs:attribute name="expiresAtMs" use="optional" type="uint64" />
      <xs:attribute name="id" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="state">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="alarm" />
        <xs:element ref="configuration" />
        <xs:element ref="ownership" />
        <xs:element ref="recovery" />
        <xs:element ref="resource" />
        <xs:element ref="session" />
      </xs:choice>
      <xs:attribute name="alarmCount" use="optional" type="uint64" />
      <xs:attribute name="capabilityRevision" use="optional" type="uint64" />
      <xs:attribute name="cursor" use="optional" type="token" />
      <xs:attribute name="eventSeq" use="optional" type="uint64" />
      <xs:attribute name="more" use="optional" type="bool" />
      <xs:attribute name="resourceCount" use="optional" type="uint64" />
      <xs:attribute name="sessionCount" use="optional">
        <xs:simpleType>
          <xs:restriction base="uint64">
            <xs:minInclusive value="0" />
            <xs:maxInclusive value="1" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="snapshotId" use="optional" type="id" />
      <xs:attribute name="stateRevision" use="optional" type="uint64" />
      <xs:attribute name="uptimeMs" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="stream">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="buffer" />
        <xs:element ref="resources" />
        <xs:element ref="route" />
      </xs:choice>
      <xs:attribute name="codec" use="optional" type="text" />
      <xs:attribute name="firstSeq" use="optional" type="uint64" />
      <xs:attribute name="firstTimestamp" use="optional" type="uint64" />
      <xs:attribute name="lastPacketIndex" use="optional" type="uint64" />
      <xs:attribute name="mediaId" use="optional" type="id" />
      <xs:attribute name="packetMs" use="optional" type="uint64" />
      <xs:attribute name="sampleCount" use="optional" type="uint64" />
      <xs:attribute name="source" use="optional" type="text" />
      <xs:attribute name="ssrc" use="optional" type="text" />
      <xs:attribute name="totalSamples" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="summary">
    <xs:complexType>
      <xs:attribute name="reason" use="optional" type="text" />
      <xs:attribute name="state" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="test">
    <xs:complexType>
      <xs:attribute name="effects" use="optional" type="text" />
      <xs:attribute name="id" use="optional" type="text" />
      <xs:attribute name="kind" use="optional" type="text" />
      <xs:attribute name="maxDurationMs" use="optional" type="uint64" />
      <xs:attribute name="resourceId" use="optional" type="text" />
      <xs:attribute name="revision" use="optional" type="text" />
      <xs:attribute name="stopBeginMs" use="optional" type="uint64" />
      <xs:attribute name="stopConfirmMs" use="optional" type="uint64" />
      <xs:attribute name="testId" use="optional" type="text" />
      <xs:attribute name="testRevision" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="tests">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="32">
        <xs:element ref="test" />
      </xs:choice>
      <xs:attribute name="capabilityRevision" use="optional" type="uint64" />
      <xs:attribute name="cursor" use="optional" type="token" />
      <xs:attribute name="more" use="optional" type="bool" />
      <xs:attribute name="snapshotId" use="optional" type="id" />
    </xs:complexType>
  </xs:element>
  <xs:element name="threshold">
    <xs:complexType>
      <xs:attribute name="conditionId" use="optional" type="text" />
      <xs:attribute name="hysteresis" use="optional" type="uint64" />
      <xs:attribute name="operator" use="optional" type="text" />
      <xs:attribute name="pointId" use="optional" type="text" />
      <xs:attribute name="severity" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="info" />
            <xs:enumeration value="warning" />
            <xs:enumeration value="critical" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="value" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="timeline">
    <xs:complexType>
      <xs:attribute name="finishedAtMs" use="optional" type="uint64" />
      <xs:attribute name="prepareDeadlineMs" use="optional" type="uint64" />
      <xs:attribute name="runDeadlineMs" use="optional" type="uint64" />
      <xs:attribute name="runningAtMs" use="optional" type="uint64" />
      <xs:attribute name="sessionId" use="optional" type="id" />
      <xs:attribute name="stopBeginDeadlineMs" use="optional" type="uint64" />
      <xs:attribute name="stopConfirmDeadlineMs" use="optional" type="uint64" />
      <xs:attribute name="stopIssuedAtMs" use="optional" type="uint64" />
      <xs:attribute name="stopRequestedAtMs" use="optional" type="uint64" />
      <xs:attribute name="stoppingAtMs" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="transaction">
    <xs:complexType>
      <xs:attribute name="baseRevision" use="optional" type="uint64" />
      <xs:attribute name="hash" use="optional" type="text" />
      <xs:attribute name="hashAlgorithm" use="optional" type="text" />
      <xs:attribute name="id" use="optional" type="text" />
      <xs:attribute name="receivedBytes" use="optional" type="uint64" />
      <xs:attribute name="remainingBudgetMs" use="optional" type="uint64" />
      <xs:attribute name="state" use="optional" type="text" />
      <xs:attribute name="totalBytes" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="transfer">
    <xs:complexType>
      <xs:attribute name="blockBytes" use="optional" type="uint64" />
      <xs:attribute name="id" use="optional" type="text" />
      <xs:attribute name="kind" use="optional" type="text" />
      <xs:attribute name="maxBlockBytes" use="optional" type="uint64" />
      <xs:attribute name="maxInFlightBytes" use="optional" type="uint64" />
      <xs:attribute name="maxWindowBlocks" use="optional" type="uint64" />
      <xs:attribute name="port" use="optional" type="uint64" />
      <xs:attribute name="profile" use="optional" type="text" />
      <xs:attribute name="windowBlocks" use="optional" type="uint64" />
      <xs:attribute name="windowRoundTripMaxMs" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="upload">
    <xs:complexType>
      <xs:attribute name="id" use="optional" type="text" />
      <xs:attribute name="receivedBytes" use="optional" type="uint64" />
      <xs:attribute name="remainingBudgetMs" use="optional" type="uint64" />
      <xs:attribute name="state" use="optional" type="text" />
      <xs:attribute name="totalBytes" use="optional" type="uint64" />
    </xs:complexType>
  </xs:element>
  <xs:element name="verification">
    <xs:complexType>
      <xs:attribute name="contentId" use="optional" type="text" />
      <xs:attribute name="revision" use="optional" type="text" />
      <xs:attribute name="state" use="optional" type="text" />
      <xs:attribute name="observedAtMs" use="optional" type="uint64" />
      <xs:attribute name="sourceId" use="optional" type="text" />
      <xs:attribute name="actualHash" use="optional" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="mediaProfile">
    <xs:complexType>
      <xs:attribute name="id" use="required" type="text" />
      <xs:attribute name="security" use="required" type="text" />
      <xs:attribute name="codec" use="required" type="text" />
      <xs:attribute name="packetMs" use="required" type="text" />
    </xs:complexType>
  </xs:element>
  <xs:element name="groupStats">
    <xs:complexType>
      <xs:attribute name="recoveredParts" use="required" type="uint64" />
      <xs:attribute name="receivedParityParts" use="required" type="uint64" />
      <xs:attribute name="missingDataParts" use="required" type="uint64" />
    </xs:complexType>
  </xs:element>
</xs:schema>
