<?xml version="1.0" encoding="utf-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.9 (Ruby 3.1.3) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc comments="yes"?>

<rfc ipr="trust200902" docName="draft-eckert-detnet-tcqf-03" category="std" consensus="true" submissionType="IETF" tocDepth="5" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="detnet-tcqf">Deterministic Networking (DetNet) Data Plane - Tagged Cyclic Queuing and Forwarding (TCQF) for bounded latency with low jitter in large scale DetNets</title>

    <author initials="T." surname="Eckert" fullname="Toerless Eckert" role="editor">
      <organization>Futurewei Technologies USA</organization>
      <address>
        <postal>
          <street>2220 Central Expressway</street>
          <city>Santa Clara</city>
          <code>CA 95050</code>
          <country>USA</country>
        </postal>
        <email>tte@cs.fau.de</email>
      </address>
    </author>
    <author initials="Y." surname="Li" fullname="Yizhou Li" role="editor">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <city>Nanjing</city>
          <country>China</country>
        </postal>
        <email>liyizhou@huawei.com</email>
      </address>
    </author>
    <author initials="S." surname="Bryant" fullname="Stewart Bryant">
      <organization>University of Surrey ICS</organization>
      <address>
        <postal>
          <country>United Kingdom</country>
        </postal>
        <email>s.bryant@surrey.ac.uk</email>
      </address>
    </author>
    <author initials="A. G." surname="Malis" fullname="Andrew G. Malis">
      <organization>Malis Consulting</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>agmalis@gmail.com</email>
      </address>
    </author>
    <author initials="J.-d." surname="Ryoo" fullname="Jeong-dong Ryoo">
      <organization>ETRI</organization>
      <address>
        <postal>
          <country>South Korea</country>
        </postal>
        <email>ryoo@etri.re.kr</email>
      </address>
    </author>
    <author initials="P." surname="Liu" fullname="Peng Liu">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>liupengyjy@chinamobile.com</email>
      </address>
    </author>
    <author initials="G." surname="Li" fullname="Guangpeng Li">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>liguangpeng@huawei.com</email>
      </address>
    </author>
    <author initials="S." surname="Ren" fullname="Shoushou Ren">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>renshoushou@huawei.com</email>
      </address>
    </author>
    <author initials="F." surname="Yang" fullname="Fan Yang">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>shirley.yangfan@huawei.com</email>
      </address>
    </author>

    <date year="2023" month="June" day="19"/>

    
    <workgroup>DETNET</workgroup>
    

    <abstract>


<t>This memo specifies a forwarding method for bounded latency and bounded jitter for Deterministic Networks and is a variant of the IEEE TSN Cyclic Queuing and Forwarding (CQF) method. Tagged CQF (TCQF) supports more than 2 cycles and indicates the cycle number via an existing or new packet header field called the tag to replace the cycle mapping in CQF which is based purely on synchronized reception clock.</t>

<t>This memo standardizes TCQF as a mechanism independent of the tagging method used. It also specifies tagging via the (1) the existing MPLS packet Traffic Class (TC) field for MPLS packets, (2)  the IP/IPv6 DSCP field for IP/IPv6 packets, and (3) a new TCQF Option header for IPv6 packets.</t>

<t>Target benefits of TCQF include low end-to-end jitter, ease of high-speed hardware implementation, optional ability to support large number of flow in large networks via DiffServ style aggregation by applying TCQF to
the DetNet aggregate instead of each DetNet flow individually, and support of wide-area DetNet
networks with arbitrary link latencies and latency variations as well as low accuracy clock synchronization.</t>



    </abstract>



  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>

<section anchor="terminology"><name>Terminology</name>

<dl>
  <dt>CQF</dt>
  <dd>
    <t>Cyclic Queuing and Forwarding.  A queuing mechanism defined by annex T of <xref target="IEEE802.1Q"/>.</t>
  </dd>
  <dt>DT</dt>
  <dd>
    <t>Dead Time. A term from CQF indicating the time during each cycle in which no frames can be sent because the the receiving node could not receive it into the desired cycle buffer.</t>
  </dd>
  <dt>TCQF</dt>
  <dd>
    <t>Tagged Cyclic Queuing and Forwarding. The mechanism specified in this memo.</t>
  </dd>
</dl>

</section>
</section>
<section anchor="overview-informative"><name>Overview (informative)</name>

<section anchor="cyclic-queuing-and-forwarding-cqf"><name>Cyclic Queuing and Forwarding (CQF)</name>

<t>Cyclic Queuing and Forwarding (CQF) is a bounded (guaranteed) per-hop
latency forwarding mechanism standardized for use in ethernet switched
networks by the IEEE TSN working group originally via <xref target="IEEE802.1Qch"/>
(802.1 Qch), which later became annex T of <xref target="IEEE802.1Q"/>.  See also <xref target="RFC9320"/>, Section 6.6.</t>

<t>CQF is not a separate forwarding mechanism, but it is simple a profile
of the IEEE Time Aware Shaper (TAS) standard, <xref target="IEEE802.1Qbv"/>, which introduce
Time-Gated Queues.</t>

<t>CQF uses a two-queue based forwarding mechanism on every switch along a
path between a sender and receiver. One queue is used to receive and
store frames destined toward a particular outgoing interface on the switch,
the other queue is used simultaneously to send frames to the same outgoing
interface. At every cycle time T_c interval these two queues are swapped, or
in terms of Time-Gated Queus, one is closed for sending, the other is opened
for sending. This operation is synchronized across all switches in the 
network by network wide synchronized clocks, so that all queues
open and close at the same time.</t>

<t>For a path of h hops, the end-to-end latency bound is between (h-1) * T_c + DT
and (h+1) * T_c. DT is the so-called dead time at the end of a cycle
during which no frames can be transmitted from the sending queue to ensure
that the last byte of the last frame will be received earlier than
the end of the same cycle on the receiving switch.</t>

<t>A core contributor to DT is the (physical) link between the sending
and receiving switch. DT needs to be larger than the latency of
this link, including physical propagation latency (speed of light), possible
error correction latencies, and interface serialization latency.</t>

<t>T_c needs to be choosen carefully: The larger it is, the higher the
bounded latency. The smaller it is, the fewer bytes (and hence frames)
will fit into a cycle.</t>

<t>To admit flows into a CQF network, the ingress switch uses per-flow
Time-Gated Queues. In the most simple case, such a gate is configured
to admit a maximum amount of bytes from the flow into every cycle. More
advanced admission control can be performed for bursty flows. For example
N bursty flows f_i = 0...(N-1) could share admitted bandwidth by each having their
burst admitted in different cycles c_i = c % N + c_i, where c is a continuous
increasing cycle number.</t>

</section>
<section anchor="highspeed"><name>Benefits of CQF with higher speed links</name>

<t>The typical CQF deployments in manufacturing networks with 1Gbps links
uses no less than hundreds of microseconds as a cycle interval.  In a
network with a small diameter, say less than 8 hops, it is sufficiently good to provide an
end-to-end latency bound in the order of several milliseconds.</t>

<t>With the increasing of link speed from 100Mbps to 1Gbps, 10Gbps, 100Gbps
or even higher in larger networks, either more bytes can be transmitted
within the same cycle interval or the smaller cycle interval is
required to transmit the same amount of bytes in a cycle as that in
low speed networks. Likewise, the serialization latency reduces with
higher speed links and DT reduces. This overall makes CQF for higher speed
networks more attractive than for lower speed networks.</t>

<t><xref target="Fig1"/> shows a simple calculation on the number of bytes that can
be transmitted in a cycle with different cycle intervals and link
speeds. A minimum of 1500 bytes is labeled with * as a baseline because
a typical maximum Ethernet frame is 1500 bytes and a selected cycle interval
should at least allow one such frame size to be transmitted unless
otherwise specified.</t>

<t>TBD: These numbers probbly need to be adjusted to reflect reducing DT based on
serialization latency.</t>

<figure title="Bytes transmitted within one cycle interval" anchor="Fig1"><artwork><![CDATA[
+----------+------------------------------------------------+
|          |           Bytes Transmitted in a Cycle         |
|Cycle Time+------------------------------------------------+
|          |             Link Speed                         |
|  (us)    |   100Mbps  |   1Gbps     |   10Gbps  | 100Gbps |
+----------+------------+-------------+-----------+---------+
|    1     |    12.5    |    125      |    1250   |   12500*|
+----------+------------+-------------+-----------+---------+
|   1.2    |     15     |    150      |    1500*  |   15000 |
+----------+------------+-------------+-----------+---------+
|    2     |     25     |    250      |    2500   |   25000 |
+----------+------------+-------------+-----------+---------+
|    4     |     50     |    500      |    5000   |   50000 |
+----------+------------+-------------+-----------+---------+
|    10    |    125     |   1250      |   12500   |  125000 |
+----------+------------+-------------+-----------+---------+
|    12    |    150     |   1500*     |   15000   |  150000 |
+----------+------------+-------------+-----------+---------+
|   120    |    1500*   |   15000     |   150000  | 1500000 |
+----------+------------+-------------+-----------+---------+
]]></artwork></figure>

<t>When the link speed is at 10Gbps, the cycle interval could be as
small as 1.2 us if a 1500 byte frame needs to be transmitted in one
cycle interval, and with 100Gbps links even 1 usec cycle time
allows for 8 frames of 1500 byte each.  These are not accurate calculations because there are
certainly other factors to determine the cycle interval.  However, it
shows that as the link speed increases, cycle interval can be greatly
reduced in practice while satisfying the minimum amount of data
transmitted in a single cycle.  The end-to-end latency bound when
applying CQF is determined by cycle interval and number of hops.
That is to say, CQFs with a smaller cycle interval have the potential
to meet more strict end-to-end latency requirements in higher link
speed networks or meet the same end-to-end latency requirement in
networks with much larger network diameter (number of hops).</t>

<t>Industry automation has some typical application period requirement,
e.g.  100 us to 2 ms for isochronous traffic, 500 us to 1 ms for
cyclic-synchronous and 2 to 20 ms for cyclic-asynchronous traffic.
The network cycle interval is usually a fraction of the application
period.  When the cycle interval is in the order of tens of
microseconds, CQF can be used to meet the most strict end-to-end
latency requirements.  For instance, if we assume the number of hops
is 24, when cycle interval is set to 10us, the end-to-end latency
bound can be around (24+1)*10 = 250 us which has the potential to
meet the latency bound requirement for isochronous traffic.</t>

<t>In summary a higher speed network makes the shorter cycle interval
feasible because sufficiently large traffic volume can be transmitted
within one cycle interval.  A shorter cycle interval further offers
shorter end-to-end latency and jitter bounds which provide CQF with
the potentials to meet more strict latency requirements in wider
deployments while preserving its simplicity of latency calculation
and provisioning.  Therefore there is a strong motivation to leverage
CQF and at the same time to make cycle interval as short as possible.</t>

</section>
<section anchor="cqfdt"><name>Challenges of CQF with higher latency links</name>

<t>Unlike the original targets for IEEE TSN work, DetNet not only targets
to support IETF forwarding planes (IP, MPLS,...), but also wide-area
networks with therefore longer physcial propagation latencies.</t>

<t>As shown in <xref target="Fig2"/> for fundamental (two buffer) CQF, the last byte
sent by node A in cycle (i-1) has to be ready for sending at node B
before the start of cycle i.  To realize it, DT or dead time is
imposed.  It is a time interval usually at the end of a cycle so that
a node should not send the scheduled CQF packets.</t>

<t>Dead time is at least the sum of the maximum propagation delay to the
next node, the maximum processing delay at the next node and the
maximum other time variations.  Therefore either the longer
propagation or longer processing delay makes dead time larger.
Packets from DetNet service is likely to be propagated over long
links in the wider area.  It takes around 5us per kilometer to
propagate, i.e. 0.5ms every hundred kilometers.  Hence the dead time
can be as large as milliseconds or tens of milliseconds in case of
hundred kilometers of longer links and larger processing delays.
That would make the dead time eat up most of the cycle interval when
cycle interval is short (e.g., at the same order or one order higher
of magnitude in time as dead time).  Then the useful time in a cycle
will be much reduced.  In some extreme cases, when the link is long
and the cycle interval is set to extremely short, the first packet
sent in a cycle by a node will not be possibly received in the same
cycle interval at the next node.  That makes the useful time in a
cycle reaches zero in two buffer CQF.  Then two buffer CQF will be no
longer suitable.</t>

<t>In result of these considerations, reasonable limits for the size
of TSN CQF networks are in the order of at most few Km per hop,
beyond which DT exceeds common cycle times and possible through
of CQF traffic is hence 0.</t>

<figure title="Fundamental Two Buffer CQF" anchor="Fig2"><artwork><![CDATA[
--------------------------------------------------------> Time

          |             |             |             |
Node A    |  cycle i-1  |   cycle i   |  cycle i+1  |
          |             |             |             |
Sending  ---------------+----------------------------------
          |+------+     |+------+     |+------+     |
          ||//////|     ||//////|     ||//////|     |
          |+------+     |+------+     |+------+     |
          |  buf_1      |  buf_2      |  buf_1      |
          |       |     |       |     |       |     |
          |       | DT  |       | DT  |       | DT  |
Node B    |       |<--->|       |<--->|       |<--->|
          |             |             |             |
Receiving--------------------------------------------------
          |     +------+|     +------+|     +------+|
          |     |//////||     |//////||     |//////||
          |     +------+|     +------+|     +------+|
          |       buf_1 |       buf_2 |       buf_1 |
          |             |             |             |
          |             |             |             |
Node B    |             |             |             |
          |             |             |             |
Sending  --------------------------------------------------
          |             |+------+     |+------+     |
          |             ||//////|     ||//////|     |
          |             |+------+     |+------+     |
          |             |  buf_1      |  buf_2

DT=Dead Time
]]></artwork></figure>

</section>
<section anchor="cqf-review"><name>Review of CQF benefits and challenges for DetNet</name>

<t>In review, CQF has a range of benefits for DetNet.</t>

<t><list style="numbers">
  <t>It provides bounded latency.</t>
  <t>It provided tightly bounded jitter.</t>
  <t>It has a very simple and easily standardized calculus for its bounded latency and jitter.</t>
  <t>It has very simple per-hop forwarding machinery (cyclic queues) easily supportable in high-speed network equipment.</t>
  <t>Like Diffserv forwarding, it does not use per-hop,per-flow state in the forwarding plane and therefore does not require per-hop,per-flow signaling with the DetNet controller-plane, allowing it to scale to large number of flows.</t>
  <t>The faster the links are, the lower the per-hop latency impact of the cyclic queuing mechanism.</t>
</list></t>

<t>The core limitation of CQF, which TCQF intends to solve, lies in its use of arrival time clock to determine the cycle into which the packet is to be placed, see <xref target="I-D.eckert-detnet-bounded-latency-problems"/> for more details.</t>

<t><list style="numbers">
  <t>Cycles times should be as short as feasible to support lower end to end latency (<xref target="highspeed"/>).</t>
  <t>When networks have longer links, or links with higher propagation jitter as in Metro and WAN, this increases the dead time, and hence reduces the possible utilization or need to increase cycle times.</t>
  <t>When shorter cycle times are feasible because of higher speed links, this would require an increase in clock-synchronization accuracy.</t>
</list></t>

</section>
<section anchor="tagged-cqf"><name>Tagged CQF</name>

<t>Tagging of CQF packets with cycle identifiers can be used to solve
the dilemma aforementioned with minor changes to the fundamental two buffer CQF.
This section introduces this mechanism with multipl buffers and
CQF cycle identification in the packet header. Note that we are also now
using the term packet (as used for IP, MPLS and other IETF forwarding planes) and
buffers for packets, as opposed to frames as used by IEEE.</t>

<section anchor="cqf-with-more-than-two-buffers"><name>CQF with more than two buffers</name>

<t>CQF can use more than two buffers to minimize the dead time and
increase the useful time in a cycle so as to support long link delay.
<xref target="Fig3"/> shows how a three buffer CQF works in a rotating manner in
general.  Node A sends packets in cycle (i-1).  The time interval
over which node B receives these packet spans two cycles, cycle (i-1)
and cycle i.  Hence a method is needed to make node B send them all
at once in cycle (i+1) in order to ensure packets in a single cycle
from the previous node always being sent out in one cycle at the
current node.</t>

<figure title="Three Buffer CQF" anchor="Fig3"><artwork><![CDATA[
--------------------------------------------------------> Time

          |             |             |             |
Node A    |  cycle i-1  |   cycle i   |  cycle i+1  |
          |             |             |             |
Sending  ---------------+----------------------------------
          |+----------+ |+----------+ |+----------+ |
          ||//////////| ||//////////| ||//////////| |
          |+----------+ |+----------+ |+----------+ |
          |  buf_1      |  buf_2         buf_3      |
          |           | |           | |           | |
          |         ->| |<-       ->| |<-       ->| |<-
          |            DT            DT            DT
          |
          -------------------------------------------------
Node B    |     +-----------+ +-----------+ +-----------+
          |     |///////////| |///////////| |///////////|
Receiving |     +-----------+ +-----------+ +-----------+
          |       buf_1 |       buf_2 |       buf_3 |
          |             |             |             |
          |             |             |             |
          |             |             |             |
          |             |             |             |
         ---------------|----------------------------------
Node B    |             |             |+----------+ |+----------+
          |             |             ||//////////| ||//////////|
Sending   |             |             |+----------+ |+----------+
          |             |                buf_1         buf_2

DT=Dead Time
]]></artwork></figure>

<t>More than three buffers will be required when the receiving interval
at node B for packets sent in a single cycle interval from node A
spans over more than two cycle interval boundaries.  This can happen
when the time variance (jitter) including propagation, processing, regulation,
clock synchronization variance (so called Maximum Time Interval Error - MTIE)
and other factors between two neighbouring DetNet nodes can become larger
than a single cycle tim.</t>

</section>
<section anchor="from-cqf-with-multiple-buffers-to-tcqf"><name>From CQF with multiple buffers to TCQF</name>

<t>Note that due to the variance in time, the receiving interval at the
downstream node can be much larger than one cycle interval in which
the upstream node transmits.  When time variance is large and cycle
interval and dead time are set small, the possible receiving time of
the last few packets from node A’s cycle (i-1) at node B can overlap
with the possible receiving time of the first few packets from node
A’s cycle i in different rounds of buffer rotations.  Hence, when the
buffer number is larger than two, if the receiving side still uses
the traditional CQF implicit time borderline to demarcate the
receiving packets from the consecutive cycles of the upstream node,
it may cause the ambiguity in identifying the right sending cycle at
the upstream node and further affect the correctness of the decision
of which output buffer to put the received packets at the current
node.</t>

<t><xref target="Fig4"/> shows such an ambiguity when time based cycle demarcation is
used.  The packet sent by node A in its cycle (i-1) can be received
at any time in the receiving interval indicated as “receiving window
for A’s buf_1” in Figure 4.  The receiving window refers to the time
interval between the earliest time that the first packet sent in a
given cycle from an upstream node is processed and enqueued in an
output buffer and the latest time that the last packet of the cycle
is processed and enqueued in an output buffer.  Network operators may
configure the size of the receiving window, taking the time variance
of their networks into account.  It can be seen that the spanning
time period of receiving window is longer than the cycle interval.
This is because there is a large time variance experienced between A
and B, e.g. varying processing time for different packets in
different cycles.  It does not mean the receiving interval for every
cycle always constantly span over such a large receiving window.  The
receiving window time interval indeed is determined by the worst case
time variance value and that should be used for regular time cycle
demarcation.</t>

<figure title="Three Buffer ambiguity" anchor="Fig4"><artwork><![CDATA[
--------------------------------------------------------> Time

           |        |        |        |        |
Node A     | cycle  | cycle  | cycle  | cycle  |
           |  i-1   |   i    |  i+1   |  i+2   |
Sending   ----------+--------+--------+--------+
           |+-----+ |+-----+ |+-----+ |+-----+ |
           ||/////| ||/////| ||/////| ||/////| |
           |+-----+ |+-----+ |+-----+ |+-----+ |
           | buf_1  | buf_2  | buf_3  | buf_4  |
           |      | |      | |      | |      | |
           |    ->| |<-  ->| |    ->| |    ->| |
           |      DT       DT       DT       DT
           |
          --------------------------------------
           |      +-----------+receiving window
Node B     |      |///////////|for A's buf_1
           |      +-----------+
Receiving  |    put to B's buf_1
           |
           |             ->|  |<- ambiguity window 1
           |
           |               +-----------+receiving window
           |               |///////////|for A's buf_2
           |        |      +-----------+
           |        |     put to B's buf_2
           |        |
           |        |             ->|  |<- ambiguity window 2
           |        |        |
           |        |        |      +-----------+receiving window
           |        |        |      |///////////|for A's buf_3
           |        |        |      +-----------+
           |        |        |     put to B's buf_3
           |        |        |
           |        |        |             ..........
           |        |        |
          -|--------|--------|--------|---------------
Node B     |        |        |        |        |        |
           |        |        | +-----+|+-----+ |+-----+ |+-----+
Sending    |        |        | |/////|||/////| ||/////| ||/////|
           |        |        | +-----+|+-----+ |+-----+ |+-----+
           |        |        |  buf_4 | buf_1  | buf_2  | buf_3

DT=Dead Time
]]></artwork></figure>

<t>When a packet is received in ambiguity window 1 in <xref target="Fig4"/>, node B
is not able to use the receiving time to determine which buffer is
the correct one to put the packet in because it cannot tell if the
packet is sent from cycle (i-1) or cycle i on node A.  If node B puts
the packet to the wrong output buffer, the packet may experience the
unexpected delay.  At the same time, the packet occupying the non-
designated buffer may break the contracts between the end hosts and
DetNet networks and then cause the unpredictable consequences.</t>

<t>It has been noted that the DT can be greatly increased to beat the
time variance in order to make the receiving windows do not overlap
so as to remove such ambiguity.  However, it is not always practical
and usually not desired because large DT will eat useful cycle time
and bring the low utilization issue as illustrated in <xref target="cqfdt"/>.
Therefore, it would be desired to keep DT as small as possible and at
the same time identify the cycle interval correctly.</t>

<t>With tagged CQF, the sending router A encodes the sending cycle identification in some
existing or new packet header field as specified later in this document.
This allows the receiving router B to determine the correct output port cycle buffer to
place the data packet into. Except for the need for the operator to
pre-configure this mapping on router B, based on the above described latency and jitter
of the link (and processing between the sending and receiving router,
tagging does not change the fundamental mechanism and benefits of CQF.
makes no change from the fundamental CQF.</t>

<t>Compared to CQF with multiple buffers, Tagged CQF allows to
operate with clock synchronization at significantly reduced accuracy
requirements than CQF. In CQF, the MTIE is an addend determing DT 
and should hence typically be less than 1% of the cycle time. In TCQF it
is an addent in the permitted receive window and can hence be for  example
as large as the cycle time, and such 100 times larger. A network using
TCQF with 100Gbps interfaces can hence can hence use the same or less
expensive clock synchronization setup than a CQF network with 1Gbps interfaces.
In addition, when conditions of the network connections change, the mappings
can dynamically changed from network operations.</t>

<t>CQF with multiple buffers but without tagging has been proposed to IEEE TSN
in <xref target="multipleCQF"/>, but has not been adopted. Instead of relying on a cycle
tag in a packet header, it still relies solely on the arrival time of packet,
and can hence not equally resolve arrival time ambiguities as TCQF can,
because it does not know the cycle from which the packet was sent.</t>

</section>
</section>
<section anchor="summary-of-tcqf-benefits-and-goals-for-detnet"><name>Summary of TCQF benefits and goals for DetNet</name>

<t>TCQF inherits the benefits of CQF for DetNet as outlined in <xref target="cqf-review"/>, and byusing a configurable number of three or more cycles, and signaling the cycle as part of a packet header, it resolves these problems as follows.</t>

<t><list style="numbers">
  <t>With three cycles, TCQF can support arbitrary latency links at arbitrary speeds without reduction of utilization because of longer links or higher link speeds (same cycle time, same clock accuracy, only change in lengths and speeds).</t>
  <t>With four or more cycles, TCQF can also eliminate Dead Time caused by variation of clock synchronization inaccuracies (MTIE) as well as jitter caused by link propagation and processing variation. The sum of cycles times needs to be larger than the total jitter to achieve this.</t>
</list></t>

<t>Prior documents describing the concept of TCQF (without using that name) include <xref target="I-D.qiang-detnet-large-scale-detnet"/> and <xref target="I-D.dang-queuing-with-multiple-cyclic-buffers"/>. TCQF does not depend on other elements of <xref target="RFC8655"/>, so it can also be used stand alone in otherwise non-deterministic IP/IPv6 or MPLS networks to achieve bounded latency and low jitter.</t>

<t>TCQF is likely especially beneficial when networks are architected to avoid per-hop, per-flow state even for traffic steering, which is the case for networks using SR-MPLS <xref target="RFC8402"/> for traffic steering of MPLS unicast traffic, SRv6 <xref target="RFC8986"/> for traffic steeering of IPv6 unicast traffic and/or BIER-TE <xref target="I-D.ietf-bier-te-arch"/> for tree engineering of MPLS multicast traffic by using the TC and/or DSCP header fields of BIER packets according to <xref target="RFC8296"/>.</t>

<t>In these networks, it is specifically undesirable to require per-flow signaling to non-edge forwarders (such as P-LSR in MPLS networks) solely for DetNet QoS because such per-flow state is unnecessary for traffic steering and would only be required for the bounded latency QoS mechanism and require likely even more complex hardware and manageability support than what was previously required for per-hop steering state (such as in RSVP-TE, <xref target="RFC4875"/>). Note that the DetNet architecture <xref target="RFC8655"/> does not include full support for this DiffServ model, which is why this memo describes how to use TCQF with the DetNet architecture per-hop, per-flow processing as well as without it.</t>

</section>
</section>
<section anchor="using-tcqf-in-the-detnet-architecture-and-mpls-forwarding-plane-informative"><name>Using TCQF in the DetNet Architecture and MPLS forwarding plane (informative)</name>

<t>This section gives an overview of how the operations of TCQF relates
to the DetNet architecture. We first revisit QoS with DetNet in the absence of TCQF
using an MPLS network as an example.</t>

<figure title="A DetNet MPLS Network" anchor="FIG-DetNet-MPLS"><artwork><![CDATA[
 DetNet MPLS       Relay       Transit         Relay       DetNet MPLS
 End System        Node         Node           Node        End System
    T-PE1          S-PE1        LSR-P          S-PE2       T-PE2
 +----------+                                             +----------+
 |   Appl.  |<------------ End-to-End Service ----------->|   Appl.  |
 +----------+   +---------+                 +---------+   +----------+
 | Service  |<--| Service |-- DetNet flow --| Service |-->| Service  |
 +----------+   +---------+  +----------+   +---------+   +----------+
 |Forwarding|   |Fwd| |Fwd|  |Forwarding|   |Fwd| |Fwd|   |Forwarding|
 +-------.--+   +-.-+ +-.-+  +----.---.-+   +-.-+ +-.-+   +---.------+
         :  Link  :    /  ,-----.  \   : Link :    /  ,-----.  \
         +........+    +-[ Sub-  ]-+   +......+    +-[ Sub-  ]-+
                         [Network]                   [Network]
                          `-----'                     `-----'
         |<- LSP -->| |<-------- LSP -----------| |<--- LSP -->|
  
         |<----------------- DetNet MPLS --------------------->|
]]></artwork></figure>

<t>The above <xref target="FIG-DetNet-MPLS"/>, is copied from <xref target="RFC8964"/>, Figure 2, 
and only enhanced by numbering the nodes to be able to better refer
to them in the following text.</t>

<t>Assume a DetNet flow is sent from T-PE1 to T-PE2 across S-PE1, LSR, S-PE2. 
In general, bounded latency QoS processing is then required on the
outgoing interface of T-PE1 towards S-PE1, and any further outgoing
interface along the path. When T-PE1 and S-PE2 know that their next-hop
is a service LSR, their DetNet flow label stack may simply have the
DetNet flows Service Label (S-Label) as its Top of Stack (ToS) LSE,
explicitly indicating one DetNet flow.</t>

<t>On S-PE1, the next-hop LSR is
not DetNet aware, which is why S-PE1 would need to send a label stack
where the S-Label is followed by a Forwarding Label (F-Label), and
LSR-P would need to perform bounded latency based QoS on that F-Label.</t>

<t>For bounded latency QoS mechanisms relying on per-flow regulator state (aka:
per-flow packet scheduling), such as in <xref target="TSN-ATS"/>, this requires the use of a
per-detnet flow F-Labels across the network from S-PE1 to S-PE2. These could
for for example be assigned/managed through RSVP-TE <xref target="RFC3209"/>
enhanced as necessary with QoS parameters matching the underlying bounded
latency mechanism (such as <xref target="TSN-ATS"/>).</t>

<t>With TCQF, a sequence of LSR and DetNet service node implements
TCQF with MPLS TC, ideally from T-PE1 (ingress) to T-PE2 (egress).  The ingress
node needs to perform per-DetNet-flow per-packet "shaping"/"regulating" to  assign
each packet of a flow to a particular TCQF cycle. This is specified in <xref target="ingress"/>.</t>

<t>All LSR/Service nodes after the ingress node only have to map a
received TCQF tagged DetNet packet to the configured cycle
on the output interface, not requiring any per-DetNet-flow QoS state.
These LSR/Service nodes do therefore also not require per-flow
interactions with the controller plane for the purpose of bounded latency.</t>

<t>Per-flow state therefore is only required on nodes that are 
DetNet service nodes, or when explicit, per-DetNet flow steering
state is desired, instead of ingress steering through e.g.: SR-MPLS.</t>

<t>Operating TCQF per-flow stateless across a service node, such as S-PE1, S-PE2
in the picture is only one option. It is of course equally feasible to
Have one TCQF domain from T-PE1 to S-PE2, start a new TCQF domain there,
running for example up to S-PE2 and start another one to T-PE2.</t>

<t>A service node must act as an egress/ingress edge of a TCQF domain if it needs
to perform operations that do change the timing of packets other than
the type of latency that can be considered in configuration of TCQF (see <xref target="calculation"></xref>).</t>

<t>For example, if T-PE1 is ingress for a TCQF domain, and T-PE2 is the egress,
S-PE1 could perform the DetNet Packet Replication Function (PRF)  without having to be a TQCF 
edge node as long as it does not introduce latencies not included in the TCQF
setup and the controller plane reserves resources for the multitude of flows
created by the replication taking the allocation of resources in the TCQF cycles into account.</t>

<t>Likewise, S-PE2 could perform the Packet Elimination Function without being
a TCQF edge node as this most likely does not introduce any non-TCQF acceptable
latency - and the controller plane accordingly reserves only for one flow
the resources on the S-PE2-&gt;T-PE2 leg.</t>

<t>If on the other hand, S-PE2 was to perform the Packet Reordering Function (PRF), this could
create large peaks of packets when out-of-order packets are released together.
A PRF would either have to take care of shaping out those bursts for the traffic
of a flow to again conform to the admitted CIR/PIR, or else the service node
would have to be a TCQF egress/ingress, performing that shaping itself as an
ingress function.</t>

</section>
<section anchor="forwarding"><name>TCQF per-flow stateless forwarding (normative)</name>

<section anchor="model"><name>Configuration Data model and tag processing for MPLS TC tags</name>

<t>The following data model summarizes the configuration parameters
as required for TCQF and discussed in further sections. 'tcqf' 
includes the parameters independent of the tagging on an interface.
'tcqf_*' describes the parameters for interfaces using MPLS TC and
IP DSCP tagging.</t>

<figure title="Encapsulation independent TCQF Configuration Data Model" anchor="FIG-Data-Model"><artwork><![CDATA[
# Encapsulation agnostic data
tcqf 
+-- uint16 cycles
+-- uint16 cycle_time
+-- uint32 cycle_clock_offset
+-- if_config[oif] # Outgoing InterFace
    +-- uint32 cycle_clock_offset
    +-- cycle_map[iif] # Incoming InterFace
        +--uint8 oif_cycle[iif_cycle]
]]></artwork></figure>

</section>
<section anchor="processing"><name>Packet processing</name>

<t>This section explains the TCQF packet processing and through
it, introduces the semantic of the objects in <xref target="FIG-Data-Model"/></t>

<t>tcqf contains the router wide configuration of TCQF parameters,
independent of the specific tagging mechanism on any interface. Any
interface can have a different tagging method. This document uses the term
router when it is irrelevant whether forwarding is for IP or MPLS packet,
and the term Label Switched Router (LSR) to indicate MPLS is used, or IP
router to indicate IP or IPv6 are used - independent of the specific encapsulation
used for IP or MPLS to carry the cycle identification.</t>

<t>The model represents a single TQCF domain, which is a set of
interfaces acting both as ingress (iif) and egress (oif)
interfaces, capable to forward TCQF packets amongst each other. A router
may have multiple TCQF domains each with a set of interfaces disjoint
from those of any other TCQF domain.</t>

<t>tcqf.cycles is the number of cycles used across all interfaces in the TCQF domain.
routers MUST support 3 and 4 cycles. The maximum number of supportable cycles
depends on the encapsulation. For example, to support interfaces with MPLS TC tagging,
7 or fewer cycles MUST be used across all interfaces in the CQF domain. See <xref target="mpls"/>.</t>

<t>The unit of tcqf.cycle_time is micro-seconds.
routers MUST support configuration of cycle-times of 20,50,100,200,500,1000,2000 usec.</t>

<t>Cycles start at an offset of tcqf.cycle_clock_offset in units of nsec as follows. 
Let clock1 be a timestamp of the local reference clock for TCQF, at which
cycle 1 starts, then:</t>

<t>tcqf.cycle_clock_offset = (clock1 mod (tcqf.cycle_time * tcqf.cycles) )</t>

<t>The local reference clock of the router is expected to be synchronized with
the neighboring LSR/router in TCQF domain.  tcqf.cycle_clock_offset can be configurable
by the operator, or it can be read-only. In either case will the operator be
able to configure working TCQF forwarding through appropriately calculated
cycle mapping.</t>

<t>tcqf.if_config[oif] is optional per-interface configuration of TCQF parameters.
tcqf.if_config[oif].cycle_clock_offset may be different from tcqf.cycle_clock_offset,
for example, when interfaces are on line cards with independently synchronized clocks,
or when non-uniform ingress-to-egress propagation latency over a complex router/LSR
fabric makes it beneficial to allow per-egress interface or line card configuration
of cycle_clock_offset. It may be configurable or read-only.</t>

<t>The value of -1 for tcqf.if_config[oif].cycle_clock_offset is used to indicate
that the domain wide tcqf.cycle_clock_offset is to be used for oif.
This is the only permitted negative number for this parameter.</t>

<t>When a packet is received from iif with a cycle value of iif_cycle and the
packet is routed towards oif, then the cycle value (and buffer) to use on
oif is tcqf.if_config[oif].cycle_map[iif].oif_cycle[iif_cycle]. This is
called the cycle mapping and is must be configurable. This cycle mapping
always happens when the packet is received with a cycle tag on an interface
in a TCQF domain and forwarded to another interface in the same TCQF domain.</t>

<t>This encapsulation independent data model only defines how to map from
a received packets cycle to a sending interface cycle buffer and hence sent
packet cycle. It does not specify how the cycle identifier is encoded in
the received or sent packet. This is amended by the specification in the following
sections.</t>

<t>This data model does therefore also not determine whether interfaces use IP/IPv6, MPLS
or any other encapsulation. This is determined by the configuration of the DetNet domain. A mixed
use of MPLS and IP/IPv6 interfaces is possible with this data model, but
at the time of writing this document not supported by DetNet.</t>

</section>
<section anchor="mpls"><name>TCQF for MPLS with TC tagging</name>

<t>This section describes operation of TCQF for MPLS packets using the
Traffic Class (TC) field of MPLS label to carry the cycle-id. To support
this encapsulation, the TCQF Data Model as defined in <xref target="FIG-Data-Model"/>
is expanded as follows.</t>

<figure title="TCQF Configuration Data for MPLS TC" anchor="FIG-Data-Model-TC"><artwork><![CDATA[
# MPLS TC tagging specific data
tcqf_tc[oif]
+--uint8 tc[oif_cycle]
]]></artwork></figure>

<t>tcqf_tc[oif].tc[oif_cycle] defines how to map from the internal cycle number
oif_cycle to an MPLS TC value on interface oif. tcqf_tc[oif] MUST be
configured, when oif uses MPLS. This oif_cycle &lt;=&gt; tc mapping is not only
 used to map from internal cycle number to MPLS TC tag when sending
packets, but also to map from MPLS TC tag to the internal cycle number when
receiving packets.</t>

<t>In the terminology of <xref target="RFC3270"/>, TCQF QoS as defined here, is 
TC-Inferred-PSC LSP (E-LSP) behavior: Packets are determined to
belong to the TCQF PSC solely based on the TC of the received
packet.</t>

<t>The internal cycle number SHOULD be assigned from the Top of Stack (ToS)
MPLS label TC bits before any other label stack operations
happens. On the egress side, the TC value of the ToS MPLS label
SHOULD be assigned from the internal cycle number after any label
stack processing.</t>

<t>With this order of processing, TCQF can support forwarding of
packets with any label stack operations such as label swap in the
case of LDP or RSVP-TE created LSP, Penultimate Hop Popping (PHP),
or no label changes from SID hop-by-hop forwarding and/or SID/label
pop as in the case of SR-MPLS traffic steering.</t>

</section>
<section anchor="dscp"><name>TCQF for IP/IPv6 with DSCP tagging</name>

<t>This section describes operation of TCQF for IP/IPv6 packets using the
Differentiated Services Code Point (DSCP) field of IP/IPv6 packets to carry the cycle-id.
To support this encapsulation, the TCQF Data Model as defined in <xref target="FIG-Data-Model"/>
is expanded as follows.</t>

<figure title="TCQF Configuration Data for IP/IPv6 DSCP" anchor="FIG-Data-Model-DSCP"><artwork><![CDATA[
# IP/IPv6 DSCP tagging specific data
tcqf_dscp[oif]
+--uint8 dscp[oif_cycle]
]]></artwork></figure>

<t>tcqf_dscp[oif].dscp[oif_cycle] defines how to map from the internal cycle number
oif_cycle to an IP/IPv6 DSCP value on interface oif. tcqf_dscp[oif] MUST be
configured, when oif uses DSCP tagging of IP/IPv6 packets for TCQF. This
oif_cycle &lt;=&gt; idscp mapping is not only used to map from internal cycle number to the
DSCP tag when sending packets, but also to map from IP/IPv6 DSCP to the internal cycle number when
receiving packets.</t>

<t>As how DetNet domains are currently assumed to be single administrative network
operator domains, this document does not ask for standardization
of the DSCP to use with TCQF. Instead, deployments wanting to use TCQF with
IP/IPv6 encapsulation and DSCP tagging need to assign within their domain DSCP from the
xxxx11 "EXP/LU" Codepoint space according to <xref target="RFC2474"/>, Section 6. This
allows up to 16 DSCP for intradomain use and hence up to 16 cycle identifiers.</t>

</section>
<section anchor="option"><name>TCQF for IPv6 with IPv6 Option tagging</name>

<t>This section describes operation of TCQF for IPv6 packets without having
to rely on DSCP by defining a new IPv6 option for DetNet.  This option is to be placed in the
IPv6 HbH (Hop-by-Hop) Options or DOH (Destination Option Header) header.
To support this encapsulation, the TCQF Data Model as defined in <xref target="FIG-Data-Model"/>
is expanded as follows.</t>

<figure title="TCQF Configuration Data for IPv6 TCQF Option Header" anchor="FIG-Data-Model-IPV6OH"><artwork><![CDATA[
# IPv6 TCQF Option tagging specific data
tcqf_ipv6oh[oif]
+--uint8 ipv6oh[oif_cycle]
]]></artwork></figure>

<section anchor="tcqf-option-format"><name>TCQF Option Format</name>

<t>The TCQF Option helps the receiving port to identify in which
time cycle interval the packet is sent from the upstream router.  It
can be used to determine the output port cycle buffer to enqueue the
packet.</t>

<figure title="TCQF Option Format" anchor="Fig5"><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Option Type  |  Opt Data Len |E|    Flags    |   Cycle Id    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
.                                                               .
~         (64-bit extension if flag E-bit is 1)                 ~
.                                                               .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>TCQF-Option fields:</t>

<t><list style="symbols">
  <t>Option Type: 8-bit identifier of the type of option.  Value TBD by
IANA.  If the processing IPv6 node does not recognize the Option
Type it must discard the packet and return an ICMPv6 message (the
highest-order 2 bits = 10).  The Option Data of this option may
change en route to the packet's final destination (the third-
highest-order bit=1).</t>
  <t>Opt Data Len: 8-bit length of the option data.</t>
  <t>Flags: 8-bit field to indicate what TCQF Option information
follows.  The leftmost bit is called E-bit.  When E-bit set to 1,
there is a 64-bit extension in length after Cycle Id.</t>
  <t>Cycle Id: 8-bit field to indicate the time cycle ID at output port
of the upstream node when the packet is sent out. This is the
packet header field name for the data model ipv6oh[oif_cycle]
element.</t>
  <t>64-bit extension: This field contains values required for a
possible additional options, such as timestamp.  This field exists only
when E-bit in Flags field is set to one.  [Editor's Note: Text
will be modified or added as specific uses for this field are
identified]</t>
</list></t>

</section>
<section anchor="tcqf-option-processing"><name>TCQF Option Processing</name>

<t>A packet carrying the TCQF Option with Cycle Id does not change
the fundamental cyclic queuing and forwarding behaviors of TCQF over
the encapsulation independent forwarding behavior described above (<xref target="processing"/>).</t>

<t>Compared to DSCP it does not introduce a limited number of cycle-ids, and
eliminates the possible operation consideration to use multiple DSCP for
effectively a single per-hop forwarding behavior, which otherwise would
be a novel aspect that could cause issues for example with diagnostics or
other operational standards. It also allows easier extensions with other
potentially beneficial DetNet features in the same Option header.</t>

<t>As part of the packet processing of <xref target="processing"/>, the Cycle ID field
of the option heade is rewritting from tcqf.ipv6oh[oif_cycle], in the
same way as DSCP wold be rewritten from tcqf.dscp[oif_cycle].</t>

</section>
<section anchor="encapsulation-of-tcqf-option-for-deterministic-ip-dip-data-plane"><name>Encapsulation of TCQF Option for Deterministic IP (DIP) data plane</name>

<t>When used in IPv6 (<xref target="RFC8200"/>) networks, the TCQF Option can be placed in
an HbH extension header or Destination Option Header (DOH).</t>

<figure title="TCQF Option Encapsulated in HbH for Deterministic IP data plane" anchor="Fig6"><artwork><![CDATA[
+-----------------------------------+
|         DetNet IP Packet          |
+-----------------------------------+
|            other EHs              |
+-----------------------------------+
|        IPv6 Hop-by-Hop Ex Hdr     |
|         (DIP-TCQF Option)         |
+-----------------------------------+
|            IPv6 Header            |
+-----------------------------------+
|             Data-Link             |
+-----------------------------------+
|             Physical              |
+-----------------------------------+
]]></artwork></figure>

<t><xref target="Fig6"/> shows the encapsulation of TCQF option in HbH
extension header for deterministic IP (DIP）data plane.  When every DetNet forwarding node along the path
is provisioned to use TCQF as the queuing mechanism, this
option should be placed here.  If a router does not support this
option, it discards the packet and returns an ICMP message.</t>

<t>In some deployments the path selection is indicated using IPv6
routing header (RH) by specifying a set of nodes that must be
traversed by the packet along its path to the destination.  When such
a source routing mechanism is used, TCQF Option is placed in
DOH (Destination Option Header) as shown in <xref target="Fig7"/> for Deterministic IP data plane. Then the TCQF
Option will be processed by the specified in-path routers.</t>

<figure title="TCQF Option Encapsulated in DOH for Deterministic IP data plane" anchor="Fig7"><artwork><![CDATA[
+-----------------------------------+
|         DetNet IP Packet          |
+-----------------------------------+
|         other EHs including RH    |
+-----------------------------------+
|       IPv6 Destination Ex Hdr     |
|         (DIP-TCQF Option)         |
+-----------------------------------+
|            IPv6 Header            |
+-----------------------------------+
|             Data-Link             |
+-----------------------------------+
|             Physical              |
+-----------------------------------+
]]></artwork></figure>

<t>(TBD: Should and how TCQF Option be used in SRv6 ?)</t>

</section>
</section>
<section anchor="tcqf-pseudocode-normative"><name>TCQF Pseudocode (normative)</name>

<t>The following pseudocode restates the forwarding behavior of <xref target="forwarding"/>
in an algorithmic fashion as pseudocode. It uses the objects of the TCQF configuration
data model defined in <xref target="model"></xref>.</t>

<figure title="TCQF Pseudocode" anchor="FIG-Pseudocode"><artwork><![CDATA[
void receive(pak) {
  // Receive side TCQF - retrieve cycle of received packet
  // from packet internal header
  iif = pak.context.iif
  if (tcqf.if_config[iif]) { // TCQF enabled on iif
    if (tcqf_tc[iif]) {      // MPLS TCQF enabled on iif
      tc = pak.mpls_header.lse[tos].tc
      pak.context.tcqf_cycle = map_tc2cycle( tc, tcqf_tc[iif])
    } else
    if (tcqf_ipv6oh[iif]) {    // IPv6 Option Header used on iif
      cycle_id = pak.ipv6_header.tcqf_oh[cycle_id]
      pak.context.tcqf_cycle = 
        map_ipv6oh2cycle( cycle_id, tcqf_ipv6oh[iif])
    } else
    if (tcqf_dscp[iif]) {      // IP DSCP TCQF used on iif
      dscp = pak.ip_header.dscp
      pak.context.tcqf_cycle = map_dscp2cycle( dscp, tcqf_dscp[iif])
    } else // ... other encaps
  }
  forward(pak);
}

// ... Forwarding including any label stack operations

void forward(pak) {
  oif = pak.context.oif = forward_process(pak)

  if(ingres_flow_enqueue(pak))
    return // ingress packets are only enqueued here.

  if(pak.context.tcqf_cycle) // non TCQF packets cycle is 0
    if(tcqf.if_config[oif]) {    // TCQF enabled on OIF
      // Map tcqf_cycle iif to oif - encap agnostic
      cycle = pak.context.tcqf_cycle
            = map_cycle(cycle,
              tcqf.if_config[oif].cycle_map[[iif])
  
      // MPLS TC-TCQF
      if(tcqf.tc[oif]) {
        pak.mpls_header.lse[tos].tc = map_cycle2tc(cycle, tcqf_tc[oif])
      } else
      if (tcqf_ipv6oh[oif]) { // IPv6 Option Header used on iif
        pak.ipv6_header.tcqf_oh[cycle_id] =
          map_cycle2ipv6oh(cycle, tcqf_ipv6oh[oif])
      } else
      // IP DSCP TCQF enabled on iif
      if (tcqf_dscp[oif]) {
        pak.ip_header.dscp = map_cycle2dscp(cycle, tcqf_dscp[oif])
      } // else...  other future encap/tagging options for TCQF
  
      tcqf_enqueue(pak, oif.cycleq[cycle,iif])  // [3]
      return
    } else {
      // Forwarding of egress TCQF packets [1]
    }
  }
  // ... non TCQF OIF forwarding [2]
}

// Started when TCQF is enabled on an interface
// dequeues packets from oif.cycleq
// independent of encapsulation
void send_tcqf(oif) {
  cycle = 1
  cc =  tcqf.cycle_time *
        tcqf.cycle_time
  o =   tcqf.cycle_clock_offset
  nextcyclestart = floor(tnow / cc) * cc + cc + o

  while(1) {
    ingress_flow_2_tcqf(oif,cycle) // [5]
    wait_until(tnow >= nextcyclestart); // wait until next cycle
    nextcyclestart += tcqf.cycle_time
    forall(iif) {
      forall(pak = tcqf_dequeue(oif.cycleq[cycle,iif]) {
        schedule to send pak on oif before nextcyclestart; // [4]
      }
    }
    cycle = (cycle + 1) mod tcqf.cycles + 1
  }
}
]]></artwork></figure>

<t>Processing of ingress TCQF packets is performed
via ingres_flow_enqueue(pak) and
ingress_flow_2_tcqf(oif,cycle) as explained in <xref target="ingres_pseudocode"/>.</t>

<t>Packets in a cycle buffer can be sent almost arbitrarily within the time
period of the cycle. They also do not need to be sent as soon as possible,
as long as all will be sent within that period. There is no need to send them
in the order of their arrival except that packets from the same ingres
flow that end up in the same cycle must not be reordered across any number of
tcqf hops. The pseudocode describes this by using a queue oif.cycleq[cycle,iif] ([3]) for
all packets from the same iif. The pseudocode describes the oterwise
arbitrary scheduling of all packets within the cycle time via the
statement shown in [4].</t>

<t>Ingress packets are passed from their ingress queues to the next cycle queue via [5].</t>

<t>Processing of egres TCQF packets is out-of-scope. 
It can performed by any non-TCQF packet forwarding mechanism such as
some strict priority queuing in step [2], and packets could accordingly be
marked with an according packet header traffic class indicator for
such a traffic class in step [1].</t>

</section>
</section>
<section anchor="ingress"><name>TCQF Per-flow Ingress forwarding (normative)</name>

<t>Ingress flows in the context of this text
are packets of flows that enter the router from a non-TCQF interface
and need to be forwarded to an interface with TCQF.</t>

<t>In the most simple case, these packets are sent by the
source and the router is the first-hop router.
In another case, the routers ingress interface
connects to a hop where the previous router(s) did
perform a different bounded latency forwarding mechanism
than TCQF.</t>

<section anchor="ingress-flows-configuration-data-model"><name>Ingress Flows Configuration Data Model</name>

<figure title="TCQF Ingress Configuration Data Model" anchor="FIG-IData-Model"><artwork><![CDATA[
# Extends above defined tcqf
tcqf
...
| Ingress Flows, see below (TBD:
+-- iflow[flowid]
    +-- uint32 csize # in bits
]]></artwork></figure>

<t>The data model shown in <xref target="FIG-IData-Model"/> expands the tcqf data
model  from <xref target="FIG-Data-Model"/>. For every DetNet flow for which
this router is the TCQF ingress, the controller plane has to specify a maximum 
number of bits called csize (cycle size) that are permitted to 
go into each individual cycle.</t>

<t>Note, that iflow[flowid].csize is not specific to the sending
interface because it is a property of the DetNet flow.</t>

</section>
<section anchor="ingres_pseudocode"><name>Ingress Flows Pseudocode</name>

<t>When a TCQF ingress is received, it first has to be enqueued into a
per-flow queue. This is necessary because the permitted
burst size for the flow may be larger than what can fit
into a single cycle, or even into the number of cycles
used in the network.</t>

<figure title="TCQF Ingress Enqueue Pseudocode" anchor="FIG-Ingress-enqueue"><artwork><![CDATA[
bool ingres_flow_enqueue(pak) {
  if(!pak.context.tcqf_cycle &&
      flowid = match_detnetflow(pak)) {
    police(pak) // according to RFC9016 5.5
    enqueue(pak, flowq[oif][flowid])
    return true
  }
  return false
}
]]></artwork></figure>

<t>ingres_flow_enqueue(pak) as shown in <xref target="FIG-Ingress-enqueue"/>
performs this enqueuing of the packet. Its position
in the DetNet/TCQF forwarding code is shown in 
<xref target="FIG-Pseudocode"/>.</t>

<t>police(pak): If the router is not only the TCQF ingress router, but also
the first-hop router from the source, ingres_flow_enqueue(pak)
will also be the place where policing of the flows packet
according to the Traffic Specification of the flow would happen -
to ensure that packets violating the Traffic Specification
will not be forwarded, or be forwarded with lower priority
(e.g.: as best effort). This policing and resulting forwarding
action is not specific to TCQF and therefore out of scope for
this text. See <xref target="RFC9016"/>, section 5.5.</t>

<figure title="TCQF Ingress Pseudocode" anchor="FIG-Ingress-2-TCQF"><artwork><![CDATA[
void ingress_flow_2_tcqf(oif, cycle) {
  foreach flowid in flowq[oif][*] {
    free = tcqf.iflow[flowid].csize
    q = flowq[oif][flowid]
    while(notempty(q) &&
          (l = head(q).size) <= free) {
      pak = dequeue(q)
      free -= l
      tcqf_enqueue(pak, oif.cycleq[cycle,internal])
    }
  }
}
]]></artwork></figure>

<t>ingress_flow_2_tcqf(oif, cycle) as shown in
<xref target="FIG-Ingress-2-TCQF"/> transfers ingress DetNet flow
packets from their per-flow queue into the queue of the cycle
that will be sent next. The position of ingress_flow_2_tcqf() 
in the DetNet/TCQF forwarding code is shown in <xref target="FIG-Pseudocode"/>.</t>

</section>
</section>
<section anchor="implementation-deployment-operations-and-validation-considerations-informative"><name>Implementation, Deployment, Operations and Validation considerations (informative)</name>

<section anchor="high-speed-implementation"><name>High-Speed Implementation</name>

<t>High-speed implementations with programmable forwarding planes of TCQF
packet forwarding require Time-Gated Queues for the cycle queues,
such as introduced by <xref target="IEEE802.1Qbv"/> and also employed in CQF <xref target="IEEE802.1Qch"/>.</t>

<t>Compared to CQF, the accuracy of clock synchronization across the nodes
is reduced as explained in <xref target="calculation"/> below.</t>

<t>High-speed forwarding for ingress packets as specified in <xref target="ingress"/>
above would require to pass packets first into a per-flow queue and
then re-queue them into a cycle queue. This is not ideal for
high speed implementations.  The pseudocode for ingres_flow_enqueue()
and ingress_flow_2_tcqf(), like the rest of the pseudocode in this
document is only meant to serve as the most compact and hopefully
most easy to read specification of the desired externally observable
behavior of TCQF - but not as a guidance for implementation, especially not
for high-speed forwarding planes.</t>

<t>High-speed forward could be implemented with single-enqueueing into
cycle queues as follows:</t>

<t>Let B[f] be the maximum amount of data that the router would need to
buffer for ingress flow f at any point in time. This can be calculated
from the flows Traffic Specification. For example, when using the
parameters of <xref target="RFC9016"/>, section 5.5.</t>

<figure><artwork><![CDATA[
B[f] <= MaxPacketsPerInterval*MaxPayloadSize*8

maxcycles = max( ceil( B[f] / tcqf.iflow[f].csize) | f)
]]></artwork></figure>

<t>Maxcycles is the maximum number of cycles required so that packets
from all ingress flows can be directly enqueued into maxcycles queues.
The router would then not cycle across tcqf.cycles number of queues,
but across maxcycles number of queues, but still cycling across tcqf.cycles
number of cycle tags.</t>

<t>Calculation of B[f] and in result maxcycles may further be refined (lowered)
by additionally known constraints such as the bitrates of the ingress interface(s)
and TCQF output interface(s).</t>

</section>
<section anchor="calculation"><name>Controller plane computation of cycle mappings</name>

<t>The cycle mapping is computed by the controller plane by taking at minimum
the link, interface serialization and node internal forwarding latencies as well
as the cycle_clock_offsets into account.</t>

<figure title="Calculation reference" anchor="Calc1"><artwork><![CDATA[
Router  . O1
 R1     . | cycle 1 | cycle 2 | cycle 3 | cycle 1 |
        .    .
        .     ............... Delay D
        .                    .
        .                    O1'
        .                     | cycle 1 |
Router  .   | cycle 1 | cycle 2 | cycle 3 | cycle 1 |
  R2    .   O2

CT  = cycle_time
C   = cycles
CC  = CT * C
O1  = cycle_clock_offset router R1, interface towards R2
O2  = cycle_clock_offset router R2, output interface of interest
O1' = O1 + D
]]></artwork></figure>

<t>Consider in <xref target="Calc1"/> that Router R1 sends packets via C = 3 cycles with a
cycle_clock offset of O1 towards Router R2. These packets arrive
at R2 with a cycle_clock offset of O1' which includes through D all latencies
incurred between releasing a packet on R1 from the cycle buffer until
it can be put into a cycle buffer on R2: serialization delay on R1,
link delay, non_CQF delays in R1 and R2, especially forwarding in
R2, potentially across an internal fabric to the output interface
with the sending cycle buffers.</t>

<figure title="Calculating cycle mapping" anchor="Calc2"><artwork><![CDATA[
A = ( ceil( ( O1' - O2 ) / CT) + C + 1) mod CC
map(i) = (i - 1 + A) mod C + 1
]]></artwork></figure>

<t><xref target="Calc2"/> shows a formula to calculate the cycle mapping between
R1 and R2, using the first available cycle on R2. In the example
of <xref target="Calc1"/> with CT = 1, (O1' - O2) =~ 1.8, A will be 0, resulting
in map(1) to be 1, map(2) to be 2 and map(3) to be 3.</t>

<t>The offset "C" for the calculation of A is included so that
a negative (O1 - O2) will still lead to a positive A.</t>

<t>In general, D will be variable [Dmin...Dmax], for example because
of differences in serialization latency between min and max size
packets, variable link latency because of temperature based length
variations, link-layer variability (radio links) or in-router
processing variability. In addition, D also needs to account for the
drift between the synchronized clocks for R1 and R2. This
is called the Maximum Time Interval Error (MTIE).</t>

<t>Let A(d) be A where O1' is calculated with D = d. To account for
the variability of latency and clock synchronization, map(i) has to
be calculated with A(Dmax), and the controller plane needs to
ensure that that A(Dmin)...A(Dmax) does cover at most (C - 1) cycles.</t>

<t>If it does cover C cycles, then C and/or CT are chosen too small,
and the controller plane needs to use larger numbers for either.</t>

<t>This (C - 1) limitation is based on the understanding that there is only
one buffer for each cycle, so a cycle cannot receive packets
when it is sending packets. While this could be changed by
using double buffers, this would create additional implementation
complexity and not solve the limitation for all cases, because
the number of cycles to cover [Dmin...Dmax] could also be (C + 1)
or larger, in which case a tag of 1...C would not suffice.</t>

</section>
<section anchor="link-speed-and-bandwidth-sharing"><name>Link speed and bandwidth sharing</name>

<t>TCQF hops along a path do not need to have the same bitrate, they
just need to use the same cycle time. The controller plane has to then
be able to take the TCQF capacity of each hop into account when
admitting flows based on their Traffic Specification and TCQF csize.</t>

<t>TCQF does not require to be allocated 100% of the
link bitrate. When TCQF has to share a link with other traffic
classes, queuing just has to be set up to ensure that all
data of a TCQF cycle buffer can be sent within the TCQF
cycle time. For example by making the TCQF cycle queues the
highest priority queues and then limiting their capacity through
admission control to leave time for other queues to be served
as well.</t>

</section>
<section anchor="controller-plane-considerations"><name>Controller-plane considerations</name>

<t>TCQF is applicable to both centralized as well as decentralized/distributed
controller-plane models. From the perspective of the controller plane. If
the controller-plane is centralized, then it is logically very simple to
perform admission control for any additional flow by checking that there
is sufficient bandwidth for the amount of bits required for the flow on
every cycle along the intended path. Likewise, path computation can be
done to determine on which non-shortest path those resources are available.</t>

<t>More efficient use of resources can be achieved by considering that flows
with low bit rates would not need bits reserved in every cycle, but only in
every N'th cyce. This requires different gates on ingres to admit packets
from such flows than shown in this document and more complex admission control
that attempts for example to interleave multiple flows across different
set of cycles to as best as possible utilize all cycles. This is the same
complexity as possible in TSN technologies. Beside the admission control
and different ingres policing, such enhancements have no impact on the
per-hop TCQF forwarding and can thus potentially be added incrementally.</t>

<t>Decentralized or distributed controller planes including on-path, per-flow
signaling, such as one using the mechanisms of RSVP-TE, <xref target="RFC3209"/> is
equally feasible with TCQF. In this case one of the potential benefits of TCQ is not
leveraged, which is the complete removal of per-hop,per-flow awarenes on
each router. Nevertheless, the controller-plane only introduces the need
for this state maintenance into the control-plane of each router, but
does not change the TCQF forwarding plane, but maintains its per-hop, per-flow
non-stateful nature and resulting performance/cost benefits.</t>

</section>
<section anchor="validation"><name>Validation</name>

<t><xref target="LDN"/> describes an accurate simualtion based validation of TCQF 
and provides further details on the mathematical models.</t>

<t><xref target="CENI"/> is a report summary of a
100Gbps link speed commercial router validation implementation of TCQF deployed and measured in a research
testbed with a range of up to 2000km across China, operated by the China Environment for Network Innovations (CENI).
The report also provides a reference to a more detailled version of the report. Note that both reports are in chinese. 
TCQF is called DIP in these reports.</t>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>TBD.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document defines a new TCQF-Variant Option for the “Destination
Options and Hop-by-Hop Options” under the “Internet Protocol Version
6 (IPv6) Parameters” registry <xref target="IPV6-PARMS"/> with the suggested values
in <xref target="Fig9"/>.</t>

<figure title="TCQF Option Code in Destination Options and Hop-by-Hop Options" anchor="Fig9"><artwork><![CDATA[
+------+-----+-----+-------+--------------------+-------------+
| Hexa | act | chg | rest  | Description        | Reference   |
+------+-----+-----+-------+--------------------+-------------+
| 0xB1 | 10  | 1   | 10001 | TCQF Option        |this document|
+------+-----+-----+-------+--------------------+-------------+
]]></artwork></figure>

</section>
<section anchor="acknowledgement"><name>Acknowledgement</name>

<t>Many thanks for review by David Black (DetNet techadvisor).</t>

</section>
<section anchor="contributors"><name>Contributors</name>

<t>The following co-authors have contributed to this document.</t>

<t>Xiaoliang Zheng Huawei Email: zhengxiaoliang@huawei.com</t>

</section>
<section anchor="changelog"><name>Changelog</name>

<t>[RFC-editor: please remove]</t>

<t>Initial draft name: draft-eckert-detnet-mpls-tc-tcqf</t>

<t>00</t>

<t>Initial version</t>

<t>01</t>

<t>Added new co-author.</t>

<t>Changed Data Model to "Configuration Data Model",</t>

<t>and changed syntax from YANG tree to a non-YANG tree, removed empty section
targeted for YANG model. Reason: the configuration parameters that we need
to specify the forwarding behavior is only a subset of what likely would
be a good YANG model, and any work to define such a YANG model not necessary
to specify the algorithm would be scope creep for this specification. Better
done in a separate YANG document. 
Example additional YANG aspects for such a document are
how to map parameters to configuration/operational space, what additional
operational/monitoring parameter to support and how to map the
YANG objects required into various pre-existing YANG trees.</t>

<t>Improved text in forwarding section, simplified sentences, used simplified
configuration data model.</t>

<t>02</t>

<t>Refresh</t>

<t>03</t>

<t>Added ingress processing, and further implementation considerations.</t>

<t>New draft name: draft-eckert-detnet-tcqf</t>

<t>00</t>

<t>Added text for DSCP based tagging of IP/IPv6 packets, therefore changing the
original, MPLS-only centric scope of the document, necessitating a change
in name and title.</t>

<t>This was triggered by the observation of David Black at the IETF114 DetNet
meeting that with DetNet domains being single administrative domains, it
is not necessary to have standardized (cross administrative domain) DSCP
for the tagging of IP/IP6 packets for TCQF. Instead it is sufficient
to use EXP/LU DSCP code space and assignment of these is a local matter
of a domain as is that of TC values when MPLS is used. Standardized DSCP
in the other hand would have required likely work/oversight by TSVWG.</t>

<t>In any case, the authors feel that with this insight, there is no need to
constrain single-domain definition of TCQF to only MPLS, but instead both
MPLS and IP/IPv6 tagging can be easily specified in this one draft.</t>

<t>01</t>

<t>Added new co-author.</t>

<t>02</t>

<t>Attempt to resolve issues from https://github.com/toerless/detnet/issues/1.</t>

<t><list style="symbols">
  <t>Review from David Black, refine queueing/scheduling of pseudocode/explanation to highlight the non-sequential requirements.</t>
  <t>Comment from Lou Berger re. applicability of controller-plane resulting in new section about controller-plane.</t>
  <t>Reference to CENI chinese validation deployment.</t>
</list></t>

<t>03</t>

<t>Merged draft with draft-yizhou-detnet-ipv6-options-for-cqf-variant-02.</t>

<t>Changed specification to be independent of encapsulation/forwarding plane and moved MPLS and IP/DSCP (from old TCQF draft) and IPv6 with extension header into separate seconds.</t>

<t>Human translation of CENI report, uploaded CENI report with permission from CENI onto web page accessible from outside chinese firewall.</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>





<reference anchor='RFC2474' target='https://www.rfc-editor.org/info/rfc2474'>
<front>
<title>Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers</title>
<author fullname='K. Nichols' initials='K.' surname='Nichols'><organization/></author>
<author fullname='S. Blake' initials='S.' surname='Blake'><organization/></author>
<author fullname='F. Baker' initials='F.' surname='Baker'><organization/></author>
<author fullname='D. Black' initials='D.' surname='Black'><organization/></author>
<date month='December' year='1998'/>
<abstract><t>This document defines the IP header field, called the DS (for differentiated services) field.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='2474'/>
<seriesInfo name='DOI' value='10.17487/RFC2474'/>
</reference>



<reference anchor='RFC3270' target='https://www.rfc-editor.org/info/rfc3270'>
<front>
<title>Multi-Protocol Label Switching (MPLS) Support of Differentiated Services</title>
<author fullname='F. Le Faucheur' initials='F.' surname='Le Faucheur'><organization/></author>
<author fullname='L. Wu' initials='L.' surname='Wu'><organization/></author>
<author fullname='B. Davie' initials='B.' surname='Davie'><organization/></author>
<author fullname='S. Davari' initials='S.' surname='Davari'><organization/></author>
<author fullname='P. Vaananen' initials='P.' surname='Vaananen'><organization/></author>
<author fullname='R. Krishnan' initials='R.' surname='Krishnan'><organization/></author>
<author fullname='P. Cheval' initials='P.' surname='Cheval'><organization/></author>
<author fullname='J. Heinanen' initials='J.' surname='Heinanen'><organization/></author>
<date month='May' year='2002'/>
<abstract><t>This document defines a flexible solution for support of Differentiated Services (Diff-Serv) over Multi-Protocol Label Switching (MPLS) networks.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='3270'/>
<seriesInfo name='DOI' value='10.17487/RFC3270'/>
</reference>



<reference anchor='RFC8655' target='https://www.rfc-editor.org/info/rfc8655'>
<front>
<title>Deterministic Networking Architecture</title>
<author fullname='N. Finn' initials='N.' surname='Finn'><organization/></author>
<author fullname='P. Thubert' initials='P.' surname='Thubert'><organization/></author>
<author fullname='B. Varga' initials='B.' surname='Varga'><organization/></author>
<author fullname='J. Farkas' initials='J.' surname='Farkas'><organization/></author>
<date month='October' year='2019'/>
<abstract><t>This document provides the overall architecture for Deterministic Networking (DetNet), which provides a capability to carry specified unicast or multicast data flows for real-time applications with extremely low data loss rates and bounded latency within a network domain.  Techniques used include 1) reserving data-plane resources for individual (or aggregated) DetNet flows in some or all of the intermediate nodes along the path of the flow, 2) providing explicit routes for DetNet flows that do not immediately change with the network topology, and 3) distributing data from DetNet flow packets over time and/or space to ensure delivery of each packet's data in spite of the loss of a path.  DetNet operates at the IP layer and delivers service over lower-layer technologies such as MPLS and Time- Sensitive Networking (TSN) as defined by IEEE 802.1.</t></abstract>
</front>
<seriesInfo name='RFC' value='8655'/>
<seriesInfo name='DOI' value='10.17487/RFC8655'/>
</reference>



<reference anchor='RFC8200' target='https://www.rfc-editor.org/info/rfc8200'>
<front>
<title>Internet Protocol, Version 6 (IPv6) Specification</title>
<author fullname='S. Deering' initials='S.' surname='Deering'><organization/></author>
<author fullname='R. Hinden' initials='R.' surname='Hinden'><organization/></author>
<date month='July' year='2017'/>
<abstract><t>This document specifies version 6 of the Internet Protocol (IPv6). It obsoletes RFC 2460.</t></abstract>
</front>
<seriesInfo name='STD' value='86'/>
<seriesInfo name='RFC' value='8200'/>
<seriesInfo name='DOI' value='10.17487/RFC8200'/>
</reference>



<reference anchor='RFC8964' target='https://www.rfc-editor.org/info/rfc8964'>
<front>
<title>Deterministic Networking (DetNet) Data Plane: MPLS</title>
<author fullname='B. Varga' initials='B.' role='editor' surname='Varga'><organization/></author>
<author fullname='J. Farkas' initials='J.' surname='Farkas'><organization/></author>
<author fullname='L. Berger' initials='L.' surname='Berger'><organization/></author>
<author fullname='A. Malis' initials='A.' surname='Malis'><organization/></author>
<author fullname='S. Bryant' initials='S.' surname='Bryant'><organization/></author>
<author fullname='J. Korhonen' initials='J.' surname='Korhonen'><organization/></author>
<date month='January' year='2021'/>
<abstract><t>This document specifies the Deterministic Networking (DetNet) data plane when operating over an MPLS Packet Switched Network.  It leverages existing pseudowire (PW) encapsulations and MPLS Traffic Engineering (MPLS-TE) encapsulations and mechanisms.  This document builds on the DetNet architecture and data plane framework.</t></abstract>
</front>
<seriesInfo name='RFC' value='8964'/>
<seriesInfo name='DOI' value='10.17487/RFC8964'/>
</reference>




    </references>

    <references title='Informative References'>





<reference anchor='RFC3209' target='https://www.rfc-editor.org/info/rfc3209'>
<front>
<title>RSVP-TE: Extensions to RSVP for LSP Tunnels</title>
<author fullname='D. Awduche' initials='D.' surname='Awduche'><organization/></author>
<author fullname='L. Berger' initials='L.' surname='Berger'><organization/></author>
<author fullname='D. Gan' initials='D.' surname='Gan'><organization/></author>
<author fullname='T. Li' initials='T.' surname='Li'><organization/></author>
<author fullname='V. Srinivasan' initials='V.' surname='Srinivasan'><organization/></author>
<author fullname='G. Swallow' initials='G.' surname='Swallow'><organization/></author>
<date month='December' year='2001'/>
<abstract><t>This document describes the use of RSVP (Resource Reservation Protocol), including all the necessary extensions, to establish label-switched paths (LSPs) in MPLS (Multi-Protocol Label Switching).  Since the flow along an LSP is completely identified by the label applied at the ingress node of the path, these paths may be treated as tunnels.  A key application of LSP tunnels is traffic engineering with MPLS as specified in RFC 2702.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='3209'/>
<seriesInfo name='DOI' value='10.17487/RFC3209'/>
</reference>



<reference anchor='RFC4875' target='https://www.rfc-editor.org/info/rfc4875'>
<front>
<title>Extensions to Resource Reservation Protocol - Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE Label Switched Paths (LSPs)</title>
<author fullname='R. Aggarwal' initials='R.' role='editor' surname='Aggarwal'><organization/></author>
<author fullname='D. Papadimitriou' initials='D.' role='editor' surname='Papadimitriou'><organization/></author>
<author fullname='S. Yasukawa' initials='S.' role='editor' surname='Yasukawa'><organization/></author>
<date month='May' year='2007'/>
<abstract><t>This document describes extensions to Resource Reservation Protocol - Traffic Engineering (RSVP-TE) for the set up of Traffic Engineered (TE) point-to-multipoint (P2MP) Label Switched Paths (LSPs) in Multi- Protocol Label Switching (MPLS) and Generalized MPLS (GMPLS) networks.  The solution relies on RSVP-TE without requiring a multicast routing protocol in the Service Provider core.  Protocol elements and procedures for this solution are described.</t><t>There can be various applications for P2MP TE LSPs such as IP multicast.  Specification of how such applications will use a P2MP TE LSP is outside the scope of this document.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4875'/>
<seriesInfo name='DOI' value='10.17487/RFC4875'/>
</reference>



<reference anchor='RFC8296' target='https://www.rfc-editor.org/info/rfc8296'>
<front>
<title>Encapsulation for Bit Index Explicit Replication (BIER) in MPLS and Non-MPLS Networks</title>
<author fullname='IJ. Wijnands' initials='IJ.' role='editor' surname='Wijnands'><organization/></author>
<author fullname='E. Rosen' initials='E.' role='editor' surname='Rosen'><organization/></author>
<author fullname='A. Dolganow' initials='A.' surname='Dolganow'><organization/></author>
<author fullname='J. Tantsura' initials='J.' surname='Tantsura'><organization/></author>
<author fullname='S. Aldrin' initials='S.' surname='Aldrin'><organization/></author>
<author fullname='I. Meilik' initials='I.' surname='Meilik'><organization/></author>
<date month='January' year='2018'/>
<abstract><t>Bit Index Explicit Replication (BIER) is an architecture that provides optimal multicast forwarding through a &quot;multicast domain&quot;, without requiring intermediate routers to maintain any per-flow state or to engage in an explicit tree-building protocol.  When a multicast data packet enters the domain, the ingress router determines the set of egress routers to which the packet needs to be sent.  The ingress router then encapsulates the packet in a BIER header.  The BIER header contains a bit string in which each bit represents exactly one egress router in the domain; to forward the packet to a given set of egress routers, the bits corresponding to those routers are set in the BIER header.  The details of the encapsulation depend on the type of network used to realize the multicast domain.  This document specifies a BIER encapsulation that can be used in an MPLS network or, with slight differences, in a non-MPLS network.</t></abstract>
</front>
<seriesInfo name='RFC' value='8296'/>
<seriesInfo name='DOI' value='10.17487/RFC8296'/>
</reference>



<reference anchor='RFC8402' target='https://www.rfc-editor.org/info/rfc8402'>
<front>
<title>Segment Routing Architecture</title>
<author fullname='C. Filsfils' initials='C.' role='editor' surname='Filsfils'><organization/></author>
<author fullname='S. Previdi' initials='S.' role='editor' surname='Previdi'><organization/></author>
<author fullname='L. Ginsberg' initials='L.' surname='Ginsberg'><organization/></author>
<author fullname='B. Decraene' initials='B.' surname='Decraene'><organization/></author>
<author fullname='S. Litkowski' initials='S.' surname='Litkowski'><organization/></author>
<author fullname='R. Shakir' initials='R.' surname='Shakir'><organization/></author>
<date month='July' year='2018'/>
<abstract><t>Segment Routing (SR) leverages the source routing paradigm.  A node steers a packet through an ordered list of instructions, called &quot;segments&quot;.  A segment can represent any instruction, topological or service based.  A segment can have a semantic local to an SR node or global within an SR domain.  SR provides a mechanism that allows a flow to be restricted to a specific topological path, while maintaining per-flow state only at the ingress node(s) to the SR domain.</t><t>SR can be directly applied to the MPLS architecture with no change to the forwarding plane.  A segment is encoded as an MPLS label.  An ordered list of segments is encoded as a stack of labels.  The segment to process is on the top of the stack.  Upon completion of a segment, the related label is popped from the stack.</t><t>SR can be applied to the IPv6 architecture, with a new type of routing header.  A segment is encoded as an IPv6 address.  An ordered list of segments is encoded as an ordered list of IPv6 addresses in the routing header.  The active segment is indicated by the Destination Address (DA) of the packet.  The next active segment is indicated by a pointer in the new routing header.</t></abstract>
</front>
<seriesInfo name='RFC' value='8402'/>
<seriesInfo name='DOI' value='10.17487/RFC8402'/>
</reference>



<reference anchor='RFC8938' target='https://www.rfc-editor.org/info/rfc8938'>
<front>
<title>Deterministic Networking (DetNet) Data Plane Framework</title>
<author fullname='B. Varga' initials='B.' role='editor' surname='Varga'><organization/></author>
<author fullname='J. Farkas' initials='J.' surname='Farkas'><organization/></author>
<author fullname='L. Berger' initials='L.' surname='Berger'><organization/></author>
<author fullname='A. Malis' initials='A.' surname='Malis'><organization/></author>
<author fullname='S. Bryant' initials='S.' surname='Bryant'><organization/></author>
<date month='November' year='2020'/>
<abstract><t>This document provides an overall framework for the Deterministic Networking (DetNet) data plane.  It covers concepts and considerations that are generally common to any DetNet data plane specification. It describes related Controller Plane considerations as well.</t></abstract>
</front>
<seriesInfo name='RFC' value='8938'/>
<seriesInfo name='DOI' value='10.17487/RFC8938'/>
</reference>



<reference anchor='RFC8986' target='https://www.rfc-editor.org/info/rfc8986'>
<front>
<title>Segment Routing over IPv6 (SRv6) Network Programming</title>
<author fullname='C. Filsfils' initials='C.' role='editor' surname='Filsfils'><organization/></author>
<author fullname='P. Camarillo' initials='P.' role='editor' surname='Camarillo'><organization/></author>
<author fullname='J. Leddy' initials='J.' surname='Leddy'><organization/></author>
<author fullname='D. Voyer' initials='D.' surname='Voyer'><organization/></author>
<author fullname='S. Matsushima' initials='S.' surname='Matsushima'><organization/></author>
<author fullname='Z. Li' initials='Z.' surname='Li'><organization/></author>
<date month='February' year='2021'/>
<abstract><t>The Segment Routing over IPv6 (SRv6) Network Programming framework enables a network operator or an application to specify a packet processing program by encoding a sequence of instructions in the IPv6 packet header.</t><t>Each instruction is implemented on one or several nodes in the network and identified by an SRv6 Segment Identifier in the packet.</t><t>This document defines the SRv6 Network Programming concept and specifies the base set of SRv6 behaviors that enables the creation of interoperable overlays with underlay optimization.</t></abstract>
</front>
<seriesInfo name='RFC' value='8986'/>
<seriesInfo name='DOI' value='10.17487/RFC8986'/>
</reference>



<reference anchor='RFC9016' target='https://www.rfc-editor.org/info/rfc9016'>
<front>
<title>Flow and Service Information Model for Deterministic Networking (DetNet)</title>
<author fullname='B. Varga' initials='B.' surname='Varga'><organization/></author>
<author fullname='J. Farkas' initials='J.' surname='Farkas'><organization/></author>
<author fullname='R. Cummings' initials='R.' surname='Cummings'><organization/></author>
<author fullname='Y. Jiang' initials='Y.' surname='Jiang'><organization/></author>
<author fullname='D. Fedyk' initials='D.' surname='Fedyk'><organization/></author>
<date month='March' year='2021'/>
<abstract><t>This document describes the flow and service information model for Deterministic Networking (DetNet). These models are defined for IP and MPLS DetNet data planes.</t></abstract>
</front>
<seriesInfo name='RFC' value='9016'/>
<seriesInfo name='DOI' value='10.17487/RFC9016'/>
</reference>



<reference anchor='RFC9320' target='https://www.rfc-editor.org/info/rfc9320'>
<front>
<title>Deterministic Networking (DetNet) Bounded Latency</title>
<author fullname='N. Finn' initials='N.' surname='Finn'><organization/></author>
<author fullname='J.-Y. Le Boudec' initials='J.-Y.' surname='Le Boudec'><organization/></author>
<author fullname='E. Mohammadpour' initials='E.' surname='Mohammadpour'><organization/></author>
<author fullname='J. Zhang' initials='J.' surname='Zhang'><organization/></author>
<author fullname='B. Varga' initials='B.' surname='Varga'><organization/></author>
<date month='November' year='2022'/>
<abstract><t>This document presents a timing model for sources, destinations, and Deterministic Networking (DetNet) transit nodes. Using the model, it provides a methodology to compute end-to-end latency and backlog bounds for various queuing methods. The methodology can be used by the management and control planes and by resource reservation algorithms to provide bounded latency and zero congestion loss for the DetNet service.</t></abstract>
</front>
<seriesInfo name='RFC' value='9320'/>
<seriesInfo name='DOI' value='10.17487/RFC9320'/>
</reference>


<reference anchor='I-D.ietf-bier-te-arch' target='https://datatracker.ietf.org/doc/html/draft-ietf-bier-te-arch-13'>
   <front>
      <title>Tree Engineering for Bit Index Explicit Replication (BIER-TE)</title>
      <author fullname='Toerless Eckert' initials='T. T.' surname='Eckert'>
         <organization>Futurewei Technologies Inc.</organization>
      </author>
      <author fullname='Michael Menth' initials='M.' surname='Menth'>
         <organization>University of Tuebingen</organization>
      </author>
      <author fullname='Gregory Cauchie' initials='G.' surname='Cauchie'>
         <organization>KOEVOO</organization>
      </author>
      <date day='25' month='April' year='2022'/>
      <abstract>
	 <t>This memo describes per-packet stateless strict and loose path steered replication and forwarding for &quot;Bit Index Explicit Replication&quot; (BIER) packets (RFC 8279); it is called &quot;Tree Engineering for Bit Index Explicit Replication&quot; (BIER-TE) and is intended to be used as the path steering mechanism for Traffic Engineering with BIER.

 BIER-TE introduces a new semantic for &quot;bit positions&quot; (BPs). These BPs indicate adjacencies of the network topology, as opposed to (non-TE) BIER in which BPs indicate &quot;Bit-Forwarding Egress Routers&quot; (BFERs). A BIER-TE &quot;packets BitString&quot; therefore indicates the edges of the (loop-free) tree across which the packets are forwarded by BIER-TE. BIER-TE can leverage BIER forwarding engines with little changes. Co-existence of BIER and BIER-TE forwarding in the same domain is possible -- for example, by using separate BIER &quot;subdomains&quot; (SDs). Except for the optional routed adjacencies, BIER-TE does not require a BIER routing underlay and can therefore operate without depending on a routing protocol such as the &quot;Interior Gateway Protocol&quot; (IGP).
	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-bier-te-arch-13'/>
   
</reference>


<reference anchor='I-D.eckert-detnet-bounded-latency-problems' target='https://datatracker.ietf.org/doc/html/draft-eckert-detnet-bounded-latency-problems-00'>
   <front>
      <title>Problems with existing DetNet bounded latency queuing mechanisms</title>
      <author fullname='Toerless Eckert' initials='T. T.' surname='Eckert'>
         <organization>Futurewei Technologies USA</organization>
      </author>
      <author fullname='Stewart Bryant' initials='S.' surname='Bryant'>
         <organization>Stewart Bryant Ltd</organization>
      </author>
      <date day='12' month='July' year='2021'/>
      <abstract>
	 <t>   The purpose of this memo is to explain the challenges and limitations
   of existing (standardized) bounded latency queuing mechanisms for
   desirable (large scale) MPLS and/or IP based networks to allow them
   to support DetNet services.  These challenges relate to low-cost,
   high-speed hardware implementations, desirable network design
   approaches, system complexity, reliability, scalability, cost of
   signaling, performance and jitter experience for the DetNet
   applications.  Many of these problems are rooted in the use of per-
   hop, per-flow (DetNet) forwarding and queuing state, but highly
   accurate network wide time synchronization can be another challenge
   for some networks.

   This memo does not intend to propose a specific queuing solution, but
   in the same way in which it describes the challenges of mechanisms,
   it reviews how those problem are addressed by currently proposed new
   queuing mechanisms.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-eckert-detnet-bounded-latency-problems-00'/>
   
</reference>


<reference anchor='I-D.qiang-detnet-large-scale-detnet' target='https://datatracker.ietf.org/doc/html/draft-qiang-detnet-large-scale-detnet-05'>
   <front>
      <title>Large-Scale Deterministic IP Network</title>
      <author fullname='Li Qiang' initials='L.' surname='Qiang'>
         <organization>Huawei</organization>
      </author>
      <author fullname='Xuesong Geng' initials='X.' surname='Geng'>
         <organization>Huawei</organization>
      </author>
      <author fullname='Bingyang Liu' initials='B.' surname='Liu'>
         <organization>Huawei</organization>
      </author>
      <author fullname='Toerless Eckert' initials='T. T.' surname='Eckert'>
         <organization>Huawei</organization>
      </author>
      <author fullname='Liang Geng' initials='L.' surname='Geng'>
         <organization>China Mobile</organization>
      </author>
      <author fullname='Guangpeng Li' initials='G.' surname='Li'>
         </author>
      <date day='2' month='September' year='2019'/>
      <abstract>
	 <t>   This document presents the overall framework and key method for
   Large-scale Deterministic Network (LDN).  LDN can provide bounded
   latency and delay variation (jitter) without requiring precise time
   synchronization among nodes, or per-flow state in transit nodes.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-qiang-detnet-large-scale-detnet-05'/>
   
</reference>


<reference anchor='I-D.dang-queuing-with-multiple-cyclic-buffers' target='https://datatracker.ietf.org/doc/html/draft-dang-queuing-with-multiple-cyclic-buffers-00'>
   <front>
      <title>A Queuing Mechanism with Multiple Cyclic Buffers</title>
      <author fullname='Bingyang Liu' initials='B.' surname='Liu'>
         <organization>Huawei</organization>
      </author>
      <author fullname='Joanna Dang' initials='J.' surname='Dang'>
         <organization>Huawei</organization>
      </author>
      <date day='22' month='February' year='2021'/>
      <abstract>
	 <t>   This document presents a queuing mechanism with multiple cyclic
   buffers.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-dang-queuing-with-multiple-cyclic-buffers-00'/>
   
</reference>


<reference anchor="CENI" target="https://raw.githubusercontent.com/network2030/publications/main/CENI_DIP_Networking_Test_Report.pdf">
  <front>
    <title>CENI DIP Networking Test Report</title>
    <author >
      <organization>China Environment for Network Innovations (CENI)</organization>
    </author>
    <date year="2020"/>
  </front>
<annotation>Translated with permission from chinese version at: https://ceni.org.cn/406.html</annotation></reference>
<reference anchor="IEEE802.1Q" target="https://doi.org/10.1109/ieeestd.2018.8403927">
  <front>
    <title>IEEE Standard for Local and Metropolitan Area Network — Bridges and Bridged Networks (IEEE Std 802.1Q)</title>
    <author >
      <organization>IEEE 802.1 Working Group</organization>
    </author>
    <date year="2018"/>
  </front>
  <seriesInfo name="doi" value="10.1109/ieeestd.2018.8403927"/>
</reference>
<reference anchor="IEEE802.1Qbv" >
  <front>
    <title>IEEE Standard for Local and metropolitan area networks -- Bridges and Bridged Networks - Amendment 25: Enhancements for Scheduled Traffic</title>
    <author >
      <organization>IEEE Time-Sensitive Networking (TSN) Task Group.</organization>
    </author>
    <date year="2015"/>
  </front>
</reference>
<reference anchor="IEEE802.1Qch" >
  <front>
    <title>IEEE Std 802.1Qch-2017: IEEE Standard for Local and Metropolitan Area Networks - Bridges and Bridged Networks - Amendment 29: Cyclic Queuing and Forwarding</title>
    <author >
      <organization>IEEE Time-Sensitive Networking (TSN) Task Group.</organization>
    </author>
    <date year="2017"/>
  </front>
</reference>
<reference anchor="TSN-ATS" target="https://1.ieee802.org/tsn/802-1qcr/">
  <front>
    <title>P802.1Qcr - Bridges and Bridged Networks Amendment: Asynchronous Traffic Shaping</title>
    <author initials="J." surname="Specht" fullname="Johannes Specht">
      <organization></organization>
    </author>
    <date year="2020" month="July" day="09"/>
  </front>
  <seriesInfo name="IEEE" value=""/>
</reference>
<reference anchor="IPV6-PARMS" target="https://www.iana.org/assignments/ipv6-parameters/ipv6-parameters.xhtml">
  <front>
    <title>Internet Protocol Version 6 (IPv6) Parameters</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
  <seriesInfo name="IANA" value=""/>
</reference>
<reference anchor="LDN" target="https://dl.ifip.org/db/conf/networking/networking2021/1570696888.pdf">
  <front>
    <title>Towards Large-Scale Deterministic IP Networks</title>
    <author initials="B." surname="Liu" fullname="Binyang Liu">
      <organization></organization>
    </author>
    <author initials="S." surname="Ren" fullname="Shoushou Ren">
      <organization></organization>
    </author>
    <author initials="C." surname="Wang" fullname="Chuang Wang">
      <organization></organization>
    </author>
    <author initials="V." surname="Angilella" fullname="Vincent Angilella">
      <organization></organization>
    </author>
    <author initials="P." surname="Medagliani" fullname="Paolo Medagliani">
      <organization></organization>
    </author>
    <author initials="S." surname="Martin" fullname="Sebastien Martin">
      <organization></organization>
    </author>
    <author initials="J." surname="Leguay" fullname="Jeremie Leguay">
      <organization></organization>
    </author>
    <date year="2021"/>
  </front>
  <seriesInfo name="IEEE" value="2021 IFIP Networking Conference (IFIP Networking)"/>
  <seriesInfo name="doi" value="10.23919/IFIPNetworking52078.2021.9472798"/>
</reference>
<reference anchor="multipleCQF" target="https://www.ieee802.org/1/files/public/docs2021/new-finn-multiple-CQF-0921-v02.pdf">
  <front>
    <title>Multiple Cyclic Queuing and Forwarding</title>
    <author initials="N." surname="Finn" fullname="Norm Finn">
      <organization></organization>
    </author>
    <date year="2021" month="October"/>
  </front>
</reference>


    </references>


<section anchor="multiple-buffer-cqf"><name>Multiple Buffer CQF</name>

<t>CQF with multiple buffers but without tagging has been proposed to IEEE TSN
in <xref target="multipleCQF"/>, but has not been adopted. Instead of relying on a cycle
tag in a packet header as proposed in this memo, it still relies solely on
the arrival time of packet, and can hence not equally resolve arrival time
ambiguities as TCQF can, because it does not know the cycle from which the packet was sent.</t>

<t>Consider that multiple buffer CQF is like TCQF, except the cycle id is
missing from the packet that is sent. Upon arrival at the receiving router,
the sending cycle ID has to be determined solely by the time the packet
is received (reception timestamp) because this time is an indicator of the
sending timestamp and hence the sending cycle. The sum of MTIE, processing
variation link propagation latency and other variations from layer 1 and layer
2 processing (forward error correction, retransmissions) is the erorr of
the sending time that the receiving router can determine. As soon as this
error is so large, that the receiving router can not unambiguously determine
a sending cycle, the mechanism does not work anymore. The receiving router can
also not simply assume for a packet to be sent by one of the possible cycles,
because when this is not the actul sending cycle, then such an assumption will
cause possible overruns of cycle buffers and hence failure of admission control
and pckets drop or congestiono
simply</t>

<t>for the 
The total</t>

<t>https://www.iana.org/assignments/ipv6-parameters/ipv6-parameters.xhtml</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+192XIbWXbg+/2KO6qwCygBIEEtJclWT1MUVaKthS2yq+1R
VWiSyASQLSATlZkghZbk6Nd5n5eJsP9kvqZ/YH5hznqXRIKSquXxPFgOdxFA
5l3OPffsy3A4NJMyzYvZA7tupsN7xjR5s8ge2MdZk1XLvMjrJp/YF1lzVVZv
4Tnbg1/gY98+TprEni6SIrNDe57MZllqjzaTBTz+u3W2xmeTIrVPyuoqqVJ6
9fzod0/6dlpW9qJcFym8sEiarJhs7FXezO2ivLJ/zBuY2OYF/FTNMltPkkVm
ec7aJBcXVXb5wKZZU2TNsJn8MjVpOSmSJSw5rZJpM8wmb7OqGQZPDPdvmSvY
4OPj8xfH52YCU87KavPA1k1q8lX1wDbVum4O9vfv7x+YuqmyZPnAnhyfPzHw
CfbwJlmUBUywyWqzyh8Ya21TTvgz/51mq2b+wN7Bj3VZwRDT2v1eb5bR50m5
XGZFI1+YZN3MywpHHeKv+I/3c15m1SKra3tMW9Ifywr28mTdrKvsKsvteTaZ
F+WinOVZbX9/dqiP4T6y5oE9ODjYt0cwX5Us7PG7VQUjXiUbfWySNwCJs6SA
wzwCkCfuhzKFNRwd2vt39u/s+2/XMBK8EcyULZN8AUBsst9O6tE0WY/STH+r
SkSmLM2bstre4T/nf5qXa/ssj/b2dJ20N9aaapFv6M3fzunREUA03s+LpPgj
YNzWqo/meZF83trOmgzwtrGPqg0AJ1rg74v8MqtqmMmWU3u2rqpsY0+Ozlqr
rEcX9O5va3pilExG67fbgCzyBi7CP8JyU9pGax2HRQoHbX8Y2efJIq+jhdA3
9qgs6vWiCfYrC0hmS3zgtzP8GAEpPsXWjP+QlcVsmML/2FebsoxmPD5/ddKa
pYJnfps1VT6qstHbamuOsxIQ3P5jCddqe67TDGZ5lq+jSeiU7PPyIl9kWye/
XsErmz9ufjvBp5b0UOfe9KxbM/6wTorZiqe1X4x3M317J+o9yvJrUa+NZoDG
NV6CV1nxhaupsqKWt7/Wap4khf3nxD//mSup5zlQqs0IsH02TYpfuRr4V5TV
MmngdiE5fPXk6OD297flz1sH3+/Ln/fu3rmjfwLV1j/v34VnTV5MW4PcOti/
L3/evve9f/P+Xf3z9v6BG+TWPffnPX3g/v7Y/QmjwSzWngwfj/IMeOZFnlXD
Jhsm1WT+QH6ImZAwu6Ewu+GqKi8W2bLWp3/JE7xw/DCxvSGxPflKH0vxqV+Y
tQ6RYQ6XeO1X8OCE+O7wYj2dAmGi9R0dvzghVmWFo9/Ab+zjk9OQm59ndQOo
twKedYMe9tzInb/cx+PiMq/KAlkXsXAZxZ4URXkJ8AYqZHs4R5+vVQq7Bfaz
f8DMo8F9AT+aN82qfrC3VyVXoxlsYn2xrrNqUhYAmwZRZq/ggQ/2b+3vrdYX
sDEefQ+QrdjDGd7ALt74XbzBXbzhXYxW6ZQ3UhSw5/MqKWqEe8oixgqFmrqG
4ey0KpcWiUhWZ5boOXyZBCucZEU+AgiMJsXe7f27o3mzXNygoz8+Pr63fzAa
/y4GMH4PfAMkBhB4CEbPSjhHEoOeA4UsV+Uih5/tIdBCB7+//Pl/ApPJ0xnw
b3yS/071dwCqjJtanrS/86ToQXrI/kEO+IeqXK+i8xjfo48AdLjIeFt0iLTM
H9jx/mg83r+/l2cZADUd4fMjuCC37h9833mO8BYCae/aFyOgXVx+PtiWIdgS
BFuhYBkOrwfb0B4CrqaErwd3gHUV86SYZCR60Sxnk3mWrhfwDmDJdJpProfr
eb7MhmdAc3OkLZFIfH72og8icP2WwT2KL8D4Trx/JhNb+9fjncyH8M73MuuX
ohPu+/PBcv/B9SL7vxdECCPgmeHh+VkMjFMBQvWpfbhdgIhUb4rJHGgTMEM9
S2CsycrtYBvZcQMP2oRquP/9cP9+J5qPR4jYuDhE9qYu9uDv4fiXSbXXASMR
pErAOCAv9mwFvLMhLDj98e7w9PDV89a2T4D8VYDa9rQqQZ8oF/ZHoUh34f6f
Xt7t21MQzpeoldU793T44vBB5+qvrq5GwGQSWnwC9G9GdLzey1eXd4crN3L7
8+gdEj1c+LPHL+IVn5eII7V9RvzqTNW0QGn0nEZW7AA9vvZQbuAT9uRJzKlA
ygXeBvwzA4DEvwlBFAp2AyjRwa374/t7+Jh/6s7B/vf3Rjj26P7t7w++v3/v
RgSrG46iLUb5NF8RrNKLPWBNU+VJMEzwJ461N77z/f7d+3fv3buHrKfrwjgZ
S9DiUV6goBSIve0nOoTC9iNHc5RE7R+8sNZ+4sccYAWX/LCYgYi8WCQ7njtN
QKgDgpImswXgiOpiQ9teVHaRwLlmBagdFWgbO4b7BzikZZ7ZZxnIyhtEHZVS
QPmPUei5/PDlNKg96QsQ+eyTvCgCPHs5acqLrPL41nkpgks93psCoGqROYCx
TWo64SK7Gk5hbC9uwU6AThyMh5fwKgocxgyBHSUXoHQnE7jo53PQy5bZsrQ1
XH3AJqRiSMLVFALXa16mnaYQ3L1+J9YQfKzTIMO0McfBL5MKTq9BjbSZZ0Kg
z158yiRDFhlezchZcX73RG019XqFUhVsBvQ3GBi4zYFFaVPIcl6kKJ7BJ5yU
frDFeolwv8wTeMRm73DFMBXsASBpVwnIxo2dZ0mKO8uzRWqBeCAbxiGaZGab
EnSb1SKZZMGoy2SF9BwtQ7i+q3k+mePOASnh1dW6yhagjhdWeUH+J/i6yibZ
CoVHO1mUk7ej6GSEs8KDwDVwzAThuARSDbegXuLeMlD10sxDFVY3C44PJFeA
2kljk0UdHrU+hiDA13rjPv3XweL56bMzhYQyrKMFEGaEe1+ggqcePFgPbO+g
b/l0T/eQKdjHZ0enwdP6tXsBj6h3q28TAj1t8iXDQ+FPb/lXEEJ0TexFVmTT
HE4etk4vAjlZrNOMrHQAlWFTDuE/gqIDm8E54LPzfDYfAigA+nOALiBaZvMl
3BpkOCTID2xJa0BRBrR3NKPAiQumidlPcAjGm+J8zhzopD8E7eN8Oj3Lqks4
yg1gCAC9ymY0hb2Ae7RaLTak4+Dqm9Ig4NiQ6B6FpRV1A6DAmbIEMEoekFnT
/DJP14CdG4alLhKevspT1PlA8uJXjFsaKRpJdZEDMag2dpEXb+Vy53Jr9KrT
nWXNCXDvCog0/henTiaTNZCSDeNtgNT0+IjpzTJP00VmzDegg4E4mK4n+CN8
/gb0OqQVqK0DCYb9m08IeiNrD63olsEVSAEFCjhJBCdIMu/sOW79/XsvzH78
CLKdeXxu0GQMcESZcARjIbFiFYtxh8gEDk7XCB6y6brCzwR1vuJwynytixJe
BcJeA2WAs8xAVCgQIycJ3DgeAf4fLzecD4xRlICXk3IN16AoG/kBxmtgSEAt
fDgFSaOCnfBMrCgjsjNsPsd8DeQRxvGw0euORBCmELICY8J5vAR98jKHK9cL
zBF9OpnPoMdwYp9BtInqK6PoAbMFVbeBa9dHJXc4L1dG0SziO275nvwx8UDQ
wk6AsrEkWgMeo4bkERuwIGItKprNUMQH+p4D0cO7QpczRJLJ/ONH02PFFD70
B3LOuMCKzhXw4RoEA9kjYxr7/r3YYD5+HMC3hPD27uguIiEhWk0YkADGoBQL
F7xr8wNAgIbQo7Y1ESd4Y1WVyP9NxEARUQ+JhqE+AYvtnR+e9R3wBtFSLy5x
VcKZ5EZmhrSkH8gEgeeZ1bpWADgeIQCXrDqZsLLO04JdZoBTGzkVix4JwAuz
SoDWXMABZSCX4a4LpOqIL3IJqpF9WWSWJ4DtIstiBst3BB41dYPMXW4cXJSG
7nxDAj4CBsW9yRoIsC3XzaxkLgwnN0UOXRYELl7XgIhsiSjUmhLADNJTUmQg
2S6Y4CP3kEnlktaIBzqHcXMAPWlk+3x9iX6cv5nwMi6BkcDbSBmuSp62RlsB
rAl4QAaHVFYG7yiQJGZn8YkAnywLWikQWzkBWh0sYmD9huCBEuQBuBHBA0gV
+IeKOQ+iVCiCJJOqBL4O90JvVM0EI7N6s/Bi6Z/IVuIBiAPAGmuEUdLQSLxJ
g8uhw6aFW/jRQRFBBLQIqAadIGAJ8mYLZKHmPQUsXOkEEROSqQShevMhSC7f
EahvWiDyJE/Mb+qXI/gOn6dZy6GIcSnyAToiWRDOAbMnfHpGCP8OUt+gxW6J
QkXK/IMGZ2ALTgG2ZEUNEp8hgOADIDsBg9g0mUpq9AWNDCAFiF0ov4Bhs6Ra
5HCgKM6aYIEOeIxlgtmezfD5AVQPgdlUyHHgkudASgDIsCYPi95qvqmB4S36
zP0VnsFWjL+jwdA4RgE0nG7ERcZCDy9UdsUnVU4NcRwcfSCSGQ6j8yIxWyUi
C+lLPZbKYKMLkNEaoMIrwMz8Ao4kqyrYA2yqEpLq5JWBiPl63VFpTxYih+jQ
yEgBRcKVT+YloCTI3XARp2tgCg+IfcqGiPQyHqK8SFvMTEsTYoZbLxGrolem
2RWyjQ2qHT1c3pzMAoxHfUPnPVXmL1iHS4QPKWAWCXe1/oqUWC4fjw5wRB+p
Ulqi0shR8a0uYn7CR7MsAeGEmUyAkMOFXSOhtixm1ogt03wGWJuaRlcC6kby
Dijj0iZLdIbg4fC+HOqLJIo47yngyD4HBDRJeokmzZRGY6s24WS50NsEC0f5
Q4jaxboCUZn3P0KJAjSSBFdsXkS/2emb3D60+6PRqPcCSQDLVvUcqSqtHAFw
AaAHcoUMaMNi3Dy5FBEvrwwN6J8GmpfmUzLhNKpBTmiaif0b+wLoC3xC7pnh
zWLpBjeTF2tgGUC/JyBr1zh8qGWyYRHlqkeBvkIKIkrhglyM+HhZavv+G/yS
vvmI6iCQk82K7gy+BRrfotywjRhWvEyKNaB9wxQrlvDHP1ys+AbWhpAESBm5
6+m2ztfot01pOcsceUAGu0lrVjJV3mXuBQIOIFFiPA9ABYIxH4DGtjjAp2QT
THBPaLlIMWvUIXNYNzDXWVkSjwcicInsBKjcbmrP2FtWKatbNWIZAGMJlyiX
NcPd+QMuiW+HOwciJEDdGLqEsOP9/ecIFZicwDOAb/S/9IdBnLsEuiAno4pd
5YALmmRO7JYsDnwZtlmDQRjJ2gOS7eSBsuKfhHi0fs1rU2W/rEkhQNFDxvWj
tW9jXrhDS2pmw3lh8Gby5nXxI/ssf5td5Xj9mdh3UEsg+ygYMhqZDhRFkgaM
QB5TCYPOBQ4meQuvIq7ijQ7f9oI6gS5pyBiFQh4hDD4OK3ZzuTUb8/79k3w2
/vgRbjje/sTTsQXKfbR44YZeMWfIECzgfEyLdQcQI3Ru3X13FqIQw74NLatG
5RHNXEgUYZbxnf19PQS4bclFtlBf3nd8l1Bqhvcz1Q9N4m60Etdj1WlYIICB
gmFxfpScF8D6nIKoyzNohgXSB5tcZChSwBHAqaO8SOSdB6xBUBO+F8JgXeB1
NSQ9Ik54lRG50aPHxBJrhWmN9/XiYrEhPirDJekf13WjIvsU18h4gRcQcIRV
BlD6d/FlNHzeHLp/wZ+f9+8mjfDBun/Bn/YRAfC8fexHBEL3Ao/AXyL//Lpr
sHDlgAidEU7v+vdBR+it676OoMSKPxA19z/9IL8I3ZIRdkEy3tLNzr+DXYz9
LsYHozvBhzs2/OnOvq4H/tz/7muuYTw68JAc3wlmpUmDT/vfyRvw5/7XhcNB
cJoHwRoOojXg3uXvg6+/htvBGmTaD/x3uAaal//GP7/yGsb7Wyigp26jT7KG
8b8DHMYeH8YBHAQBbIgDvIavD4fxwX64Bpo3nDX4tE93k/76Omt4/8B+g0yQ
nVMPbzBpC6m5SBxI+mMecQPkyD/MRb0LJCIUYRsnAHlPhhNDWKpGKl8bFvaA
oeHFXAOzQ33ZcSnhM6GC1WK2sCwTD8+aG4uqQsRYvCD5a4yKzSSwpxjibBwZ
cU918pABk4gPoirzLNQEyNJGhuomkhXq0FRb0bNmklVNkhfooyHpDqXqsqLN
pOLZyjpgBPM9BZnlEuXfvDEsn7AZpN6CN4umqLO2Ac3yI+h1CcjHhgUrAtuK
RCRQHq/m+QKFvyavpxu1U6sc4sXBNGkSsyXnoDi8yFQ1I7V1p8ANCk5hnG9C
bJYOBGRqb60ej9GLXSj1j0BvSUjuRztashngOHWkN2wLvaCcMYRXJYZagbSA
eugyA7GI5MW6qXKQLjoWLrKy04pE6PRCm9eMAHloRCdJXz8cStGxVrVck104
VAmcCmR7MRj6IN+cFCkISKAXJ+umXLL0MwfcqMul1+wQ3BJFhhpxXqbhIgYm
G6EDBG4J3jwAyoFd8kXI69IFljTspxsQZ+DnxvKckfi7MA4FT+2ABtvX0eSp
JHxMRh2RJqob3lJXYD7yQqETmTAWBXI2WAV7M7w32IojR9sjtRU+OBO85yZU
Ugmf9NaoxdidK1s62thiurAFloJWBnSyoaFigGTtCuldvV5mLX0CT9TAAg9u
kxWg6Fh7jSsAsO+vdxox2Yika08q+tQ7uH1z3P8O2OxDki0A7mx9nAsVcVcC
/YRuo/HFDdF2B24QPoJisFyi4y+JzQ96uKzA0QWZl1WzdVHNFPXri4VTaGLl
nv2gMqG9LBcIyd0K8ja7Ildf99R2uq6IOpcUR2r0qY5LnDjXL4NHIao2BzXB
mAi8te0iObvoDNrCKxOaZJhKYw4D+tfQD9GIByefSDi+DhbwI7K10sLQRMbe
znPkTFMOakAeRfYmWA+6VZYlaM1MLRq06aDmPcvIZ0PKYsvMTnuCQ92i2zWD
Gf9QS+uIfYBzpNDFLOu0VukO1F41+WWaNiBj/L5Y5G8zub3sa5OYFiYvkV9u
oJ5sZNIl8l151AS+dsxxCf1NK8zmwYDT0wFFHgxGo1GfnWXkfXM+7xbRbhww
0S0FW0A79CTvtEPnGVocDgk2VwUeM1kfDj5+pE1MAZcSChVY2B76c9hV20co
DWJTv2Gv8Ibdv4c4FJ9AL0ebJd3tkg3/SboJvTp4hPTSI3PhkACdeuzal3NE
LEGtG9VqdCYPUOGGQbx/IweCtVyVFAWCYSCERPyLIoEj3F2uEPXpmISXI8YG
PDLyjtGqXJQq4okP03gcrMKbJ+gNtpwQqRYDSHgMabZINuJxg3N8x6AYtJ+f
ZDVZ+fhxWb57nC4CDqBvsFRH6/FRDdE9E7MeHSFhiQlXRcYpxp323EwwPdRZ
OhiZU4YFWx4F24kuTAgmeFnY04h2cJkKjSWXGc9l+IIJQyRiQyHGfJYNzSoM
5M6afAD2bb4oWRQBPuHGBLY2Arlvf3RnWYuVXsy//gWExVNyU3A0gmzGKKOq
hbDDH6HplQyZzKHj7xHZOeLGbM9FdJCh6S2KIlS1wavC5BWhHtGxaIUg9jd2
vWKuL2jVInQk0nZwayJ+PRSuBhHRFNmjIubEH5j0oe99mcyKvMFAIzwY8iIG
h99nlOIjA944XS/0wjn/ovr7SJQUWZ9N7CQUAgojjyHw1SJqOE0C8aYU71y3
/CQyiIwCCEbbFMdUji4PvqNMnQIzKMbQ8N2hBeIlR8RkxrDx3snAqt0GavsW
EjDgSy9StEEiI1Sou8Ejf8qqkiZwhBWpioNp9K3zmxalEWSq13mTMBcDaAIX
Xi8UJ2pyh9Z4ifjuD3DSuizweYDtMhcuRXsDgopnTfGJ3v/GXvu2gIr7Q9yb
Zlf2H5d0DUFUHADl3pSkT6HYAZQ5ezch9RjTK8si0GwZ/ZUDw+Bwp2dzI5xX
JSk4WnYj7ovVdPgr//2GjJw0hItSDSxJn/eJ3nzBfI1/FVQYjvlZ+Rj9dnOs
b/76Oc+EQ7a3/xlG2/bM8srNT39qv/lhj/59+PSnrzenRdR/M44+HXT+tgPC
Hz79aeebgL7Xf/L48Ch68+8R4a799FfiwysNUfjyi9A5sx7CtZ8639SDv/bT
V55TDz78dND+7a+E8K9/cxsf/v3n3EUffi0+uE9fdlfDT19CH77WnJ3UwtP8
x+cPXTSsmpYP1LT8JFBxzoHlPnIsFy3JoB6+yih2VBiUC8SmQC+vOUpSAEq9
pCMOK3rto/Bm/JvtOHNyk1YJvEV+Wx3PDwAcb0xx7KK91+2khJE5CH9HWWw2
R2tEnKgwMrfoMZ6R4xUlvLLAsKs6R3kpDDxlLX0t1rZma+LAzhAOHg4t0a5R
3GRCeZ3wTI9tbhIw13drYAWYZBMxaA5jKw2aIlZ4SCNzm736FG6O+kUwE4Vf
pGXGUadoq5HVDDRiCLfbOKGmrWurGiUqkhtJLCEdo+UzUPspfE4jMgQHJPBn
AU/S0AN2VbORhOzElKKFBo2OCHvQAu5wvNUU1EhV01h3qEQ55OABsucIyPWQ
4CCSSaQdCMijINYRh9tQ6BwJhInaMUm3Z0FOUg1gXPZ01OXiEuZf5ByFgSiy
5kSDpKpyCv1EWZfD5Hc7E0oZnlbPeRe5mgco0yQdgGSfYTjvZ6dvi8WCLFnw
aJIvar5IRxzdxLKn6PSs4zl7kLPxhZkPBF/S+0sb2tp679/7mKWPfbqMZOF1
cjPZ9kONb0AKNZ1faFoKNW6x3iUEV8onJWz8w+GLAYezO39KrBCyX4llZY1k
YSOfCNjrJneBCJT0w/ZjHS6UzOlO01Zig6SI7RiV3DaGSopJHDIjK2YdVi9P
Uvg5c8kAGrYyKVyiBRvmfAIU5sFwEo+QYbG8MDgFrzA1COM5qrptLCe0Jdtn
mgOuLBOb4A1HggKzagQLpmhUSNOJoEsQdGgBa+lpnL1US4ymCzGvNf1Ao8XF
k0LZavI+sQ8yYcZrF6+I0KcoOWsEAkaTsbftij1+ZAUsyiuzrl0uByZ6yHu9
RKK9Oa2IjYiELmwe6rY39mlpukx81ecvYWQ1GdgQOuKU1ElAoUaTJ53cN96K
6jPVPPRqjrjHQ0Ic6nyEzLjo8KNgnsgEgutzqLTb8oDmPDY6+isNuyTDAtla
RhxpdctFWs0x1Qc10iyLNG+61DRwVTacN7PE/Ah0pZgZMPCK7PiiINZELBVB
YzOouCMjo6QhE5jGX5MMKdaHWlR5Oc96lRQ1wYgDNgfhyGQj8aZSNm4lmhqH
iRhwPcV1hFYlmUkNm0vkTyZB4/QkCxeN0eXouCD934V6h9uLHa7GhcquUOpB
dwxbKBdXyQZd0RRfTUl868ZGLhG2p5gJ1ucpxKTyn8r/11T+WaC+9tMO5Z+F
+Gs/fb05r1H+LX+6FcKpG4ofrv+0801U2UFZv+7TdeeK9oHdn9pvtj5/FlJv
nXNb8YyCaq77dJ1ir6e6+1NskPgqc39awb/1H6jg/4e+2Tr4D78SN3bMtft2
fsn6d1OHmJ79P1iLjWiI/SyTwC01CZyTBBAbAp57ISWQD+ognUki2J0Hw6cT
OU7vHJ2hXGW9ayJkpEEYAHJU9qoalgFIYojFptY7pCUlWNGDRI6cReI5ZuAV
xi3ROwipkAfrIP0wg8lrKIPAV4XehJm48wemMyk6GBbkMMlFey7uSUrkPNG1
HlO609A+Pz85ZjkmDkpz+VqwzSIDbQM2RxkgzqeeuqyESelckoZg0wIq7Fgk
1CeaDR2K51koflI2svFSd8rJbgg4tznxig12nLjKNGl5VXApS8mOZv0kDK+i
1W7Hh7g0bFJf1qtwFA0wqV2MUXSeufNiqmhooii2QKLG6A+UMDFWbRDrj35T
9CjlumlCnysgUYdI+pc//6868v17tMd9I/IukpVxJpPdUwVuvM65TDhXHic1
VRwHgyY2vsgsu7MfnMRj720UdUetMAq4yl0vCpVqpR9SamiD1x/zjQgqcCBp
LsUUyHIioTC8nwsSoik5gkwjy6TCYh20AD9utEmymsCSs8maUkckU0sgE2HD
wOToesRQG03LT5YX+WyNkThoq2EV00VTVmgzdCEYKoF3YBmiikYiJQCmSSPL
ovTEAlOgZD1pNqGYHnTmsT4DMv4KxHwBLyZBrZsAjlgqRLYrzlQR/o0I/6Sg
3XYKGufwFcHGrhzac+4F70NhyxnAhguDkOalqtRWrAqaskKclRuq60TSnRQb
p2PuuO5agCVFzfMvf/5X/8gV/ASaOtJ9RlpiT3/587/haE8oE9HelkW238Jc
E6FJSrX9TQ6zWTmVthZ8c+m4oSPccxszyy9dXB9hG+rj0dHntRJ93BEajQsy
3XKgLZxzdLzqpUdD2dYaiGDIEsK4BfOJOWIUQi1bTMKc4438AZDeuHRO59HW
WdrAHGAsSVT6Qgmm1BrIffabZKVOqDQmB6K4EhgEco2jAK6MkWyGxpOYVhht
6yAloCFMIm6FA7JRKW8HbVMskwQbRkQ+e4fTZZR3qqhwSEz00cBSJC08uhFe
rqEmNASioieXXqE37cRQ3rizhi+zZCf+TzmhsNpIpINo/UjCmoQCJhFULL9I
Qi5vqg0pvglmC4BxOBfWBOLQ/jhkmyKISkR6DCsxMcTgxbWa+uH8vEXY2cpY
uJH4KcmS9xTl380m4UXY6/5omSPgFwb1tX90zETmCxo3129ujvWPAzeTF9oD
QfyaP7ZmuhlL8p1/bL30IVYiOv/4OjOpmvBBrQwf1MDAf9zuhh7/57o/Ol9y
5gT6w33j/tgxkzMjdP2x9c6vMirsmDnS2be4GT7hNUy3+dBKQAzvW2F3nzNJ
y6zAz5DYUNpHOwfaeZUYBBiGgXAPBAemJ1860udA5JqXd4Lm4FO04DrjSfvh
FrSuGfvTFIj+7YbfJ9f9WZN8NrJ9zig7YXzr1y3kc99qQf1zZvsCBkD/Ru7f
lw/uTUbX/BESg+2L/SUc6hO7EoK8m1S3mE/nIMIKdjOJr7eSTwwirGInN7ne
8HS70/Dk7prLaEwCZ3kYoLpN1Vwg/22sgSXB9VqNSxzdqiW2tO7Ia89anMj3
OSu5oviRrSLQ6HRphZNcc5KWccoGa+mxBm38FkgT4brfgeJVujQYLHLAChpK
oFO1IcCEvBAZSbSiK0oWibSFQbgwVI29sExLWRf4BdUZYIegxdJWUTZJNEQ5
maxXToEuymJosJDdrCCNT6CE81yACvVWlXeq+1DHehq67Muao4iMmrHCIqIN
pVw5TX5drKoMVEuOkSGLAChJxYSyNyQK5wJHB2hnqVdMQEyIsy2dD15KGoh9
qmU4Cvx9LgS9TY9B5i45nUXsOc7dWmVL+E7ke0XNOHXUVYZj/UDyPtFCWqQu
SQMf0EKBilOsLcC2yO5KwfDs/A1TZ7Fka6XHhHE6YQxEXtdriv6AATBXMZG8
0ffvObPnIyX/cQgQLfVK9QNdC2zxbZatcBUYRKKpws6MxVlJJs5KUvNLVxy7
3KjFxpV2cYEPWriE6WAF6A3HcggINCGjZ/jjrkgCDLM3n1P3FTfjqihyMUCt
pZiWkzWHX5F6KsnJMVrI4h51xP0oxeDLSb74sPIjpW+4ArOY1OupSVOO7PE7
rBvr4tUphEU/qBmAU0CyYWgIwCgMqVMLoND1DVyZDjaSXSCyAjAnVX7RGeqm
NQgpcqAn2WuqSncUEwsK/nm4DIyWoXWKNEeabEWZ+MARQuS4kNLIcHZBUerr
vjRVMAY9aY7K5SoRjN1p6R6EdYb1YEvDcJVyMd0WflSegfgRspFur5ncGsVj
ohRCsnhQfsNJ4VEbjf5k3YDx0jQjszTjDlVUocssKjoHOUkWMUY7ZkEBpvHf
xOkwVHEPZ+IQtsYEczQuwAYnosRxLcAoDDSRpFWe8oKNJa48V5geFM+odWkn
lOUvgVOSIQXXVsMZKV6Hqp3GFQFcYbc6mN3/pdxA0nZo9wZZWFGTcbjzlOqs
Wa+s+EKC9I6wbJafd4ThqgCknF0+nPlbFvzZGXpdZnRZFBz+VAs6auIa3bqa
8qnSTZEs5cj4ISlPVUSWPLLMc2BQt0cG8x7xF4wb0bvk+B46qjQwSTMvDVH1
oN45ykI4Cr7FCT8oVKXlqqHC0b72MFavFqqhaUxYCTsPRDCmnMQg2AkA72BU
ZF0upPQ1EZcwKhIG5pcHJsYvXAvcFIJQlVGwWvymctGc463OJXoKs26cqOXI
ytsC7WQOLQnUW+GWVwnLXxxodyY50lpcOgpynpWYKezDk7lMLwADuGTe8A1o
UakwGhqDxtbNgkxzymY1OPoj35eLDQewJa4qH4k5PiaWXa4a3anRT3TVXASu
3zHyYskd7TougbALrpL4UYoDLRccfYtxo1JkDWfWGRXwLqIsqCsdpQkn4U9c
ScvhLlFJjbUNJZMgpjJKF/SFxXx5jdr2gkJrTHr4CyICSoEHnGwsrALLu2XF
rJnzwfJAEsCKm52W62oLym7PFG2YYagwyru+vjSLqWR3dbmmlLfbSY7gZV4b
4nKPXL5htW0Jg/VD0pbDQNkW/3VTSn1KzradhDG/15XwbEpklzIr2frneXbJ
wgOgwWmVo5VcpJ9axQSHbxgtt2rcvenpGWtAJno+4VTUpa4RzZ9oMfXxI+2S
n/3sPlNYmplW4SgBF8xHWsQO9WwhrJiKOkvrLryEcLCsrPEhqy2ccgOouDHr
BI1WTkPVJ211F+Fa91ok3ykzAUy7kgl8k8mR0hWXK5yRNCqsHukL5bBfRaHW
FAZbwQQN63E43WWZpy5W37ZC/6ncDgmPkmkIRD+rKKbBNTGgo8Xg0mkZ+IL4
TM9eDWmDDL/b+5op3x4OYUwPrgvgfegO04IlZ68ATvz6/Xt3O1537xNEW+8j
1PbghUcnx6+G58eCJFutz9ywGWqbwCtbqyIcisaFu+bDiM+PdB7qaRCqCYQ9
OLt33U5AwCfBt5GS4NjNDRUpw9VY6yyoJykVMlnRYKkA0QJUKzVMhOkWrTSL
piTcy9KZy95A0aDHumZtT4fPzl5RBH2IhH3lygFb+l15FlT0mMzbeIJVXlC4
ATKDNLzziKmiE4mmRGXDKCBVT9o4j9PGAr7uVpEe8ZMJcInC5jvft4E6cCVF
Msu0UYOyISJnVxQZjsxPAm8Xm3g9mifi1s87dcADsL06+/EUsGrAx4j9+TDD
IYg8D1Jc3LVDZSsgJ57+KNHDisNurQwZAK/rF7EEVXYRXL+r+ca6Cv5OM+Pw
bLFbedF514K273/ANAKGoxQ7J1HI/r52PSpER5DBD8PBqecXYthWBlGrw0CU
ITCjkG5xf2pO2VyENS8EO24CEiV60o0YuDp2CXxbvft45nXOeE2Akcdz1XJr
EjVlbMkYSOKLQhU8C1VzxM+pA9GD/O8VFYLgf1RuEua1Hb8Fb/JQxwC3sw3g
31IfJyNz54f4o3/TmWPPh6fHPr7PnoUfgQoMT+PfDoLXxGsRRRp+yb/toES0
BR+uVpgGQJm+7h+uHKv10AakHEbw82/CFztXdTP6tGsdN3esSqekVfmPH2Bh
YW+V1m+/CV/89KquXXHHqnzzjA/08Sr9IP977W/Rj/GqRjrXiOKMR25VI/r/
rd/ox1G0Kv33QEqY4h/W7lk74Bms/Yl+pR+3f4sHual+mpu8ytegYl0Mrf2Z
J9/1W9vVEP97LaEvP1/32/VD2P9OC/72ut/iEdDr9+zs1A7Fda1ozd+5f/Kb
e9S0oxviW8FjhJRl61f8B+OQi+TkhyE/y7KXeEsOowEEAOgsocRGtuu9f996
GcVdKv++ytUOIbLYXfKVSCjWwYBNT8TYM+5VSfoIK6XeB5Bmqlqo+HKRkTJB
MVtCu5c+41SzQJvsXUOVl6j2WhJ3Ogp9I0zmMByViJg0sCBqN0A6N2DqNrIo
bEky0qBT7ggYIAu5hZcP2F5hujqKTN0SuMWgTE2qQbHxRcq2GoVIWxS2OjRz
SS3kwfBtpspirmDZgmKv3jXUL4drgAkZoo3yAyGkqAI1yjGTt+R4oSTkjSuu
aIJna0fSntFLvbMh/UHqJ5ouzkE0wgbiNFjvvDzrw6zHAzSwURAnOU9c4yTU
iYLR4ShfFgqaRqrCkLRFAmltUB5SDn5FSbyRvMPci4VJTdGk3Kwk3KPhevw4
vqwe32ekkr5QYWci2egT2SidmWHWGM8kfQm2sIYN5Yg7pUS7yVjSy+Ra6bYO
zWhOCpPAcaz+xdJn8jZ5YLyQJkGKXGYLXu5r54aarUfSphSvKsmIgsGu3g5Z
fWg81qUZT2TZtV6f0IhJt+xMb5lcpnOpoQNQopjNqe/OwMnDqJNk6R7L4+hx
ozI2KkAzTcFW1x8/Gkc+0OzoNAoS0uhauv6egMINpsrPxOeH0cIEQIGzK+ro
NQgnvAeQ6asb6Zys7HiJ2FmIsEF0pIr2cYUuDvfUxnB1YJsm4np+NEDPEmlr
AVXqSXeOvqdPvYy/kVBWeYDieb0hRvENj0loM58+psszBtyopWPs3g3NNYAP
+LIA31CPCx9RmvBJUxeRoEfSuUuylcr9eR33Cnv/XtZICushaAUAor2zAC6A
NVNNwtd2JLQfYg5Ma9BRugLEc255bnPHnhWBdeyv9g1IxMIsJmNxkjkqOghK
ELDMvtmCG6IRXSfyXdZZxxbSkiNJqbKBJA43W6o2E+9ETPpOwfLVDETNUfV2
ta7Q7E5R9u0aFeY01qj99Ng/oQi1U3H0ay1heMR04Cen0ZP9R2nyIACFlblY
uTVOjRe37cAGzQVdVxlVhfX+YsTsAzXyIFFntUx1wthIQN4n7SgVLdUTLWEJ
RFaMup1yViMVDlR4bcVGTK5biCbMcl0BZNUvEJQoME8R5fAlMfdhJ/aWsEDz
DaSIYtBvUh6msxiYak1hyxF1Q2eRvM9WYh6iYBOiBH3QXafWSxEBWa6xJ8Ok
UUWSgLynwCarDd3UcCn5FE1CRBpMQBoCfZiTb8rQX9rkS7FmqRFKKh5qD6lm
s8rC+qPaGIOaIUllNL7/zuWgdmu25GL5idc/974JCpf2+8L2BFSUFMIQp/oM
vMsp9fgKdsiiElNHMS4yYAaGuQ4XHteNB6o+l1QEldrXS36yLtiY0Dt99aRv
nflCe/2wJGrPf3f0xBoCOOdwcNw5izqhgUZqFgQdMQPDjat+RyYDdiS6Unxt
ksBVYLOa/CvrapL5AnNkbKQiglrfxGAQSuODtatgi0F4PrqjJ+5g/MDBstTU
H0XqG+MbvzAmb8NYgHssDo0IuApVylY3cpoRNNk+hYXwxG7XAVOk1Git5G62
E/QUoI7guPhwNzCdSZU9ggxYohVTKdRI1JpBp1ARBkIbHv6GEW6RzdAMO9Uf
+ZrALUkVMldJxJID0LzKKAoIDyNGOxG9WDrikxSH+CpL3tbhtSRqDaAcltMh
xxQ5q3GFa19oLNKMOl2OgKLADCKeSo1S5bANVfXF97AzEosHVEUADqvOuGWW
Rzqx1ppYNJglcuVpr8yJXVOso5NXe6cnr4jNgLAozvaAwBlely6IrxrhRkTp
BgpN5wTS1YKekS2mTB6NoxgCXDJA7mIzgaWxVzgLo33/jf+By1UdRfTsMQbT
kIGVkS2J8kBcT+PzI/wJyxvTs9KKy2urqR+G62lTm+ZQjJFy7k6WxSCJyPp8
rgWb07yerCnbB7mWaI9iI61H9ttm8sv0W2uEBkk1Gy8jX9MHmryDXnIaGRrr
zXffBkbk1mhU6MpHXbBZVEGC6tLJKbtAZA4xin5jj4tJsqq1HVMyK0ryg1FH
AnwCZ7baCcOuYY7xXaFVnd++aTQrRH+5Ja2935Aj9U2J5a4a90Q+fcOgf13m
059hQS9Vdae82iewHWeA+fSI+hT/DKLs65xHPSkm5bJ7VHkHB75nS1wPvowv
8l8/e9sNAGX4nLBHTDcx9MIjJTTpwGF6XSqyCX0KEBkQ13/62LK7o7AI1772
PGO1NQBTYi5FimJlVM0HiQAoeni+gnHlxR+zSSMqabxFUPgMHT4SdTetBJ9R
P9FuicMj5cB04Lg6zIKm50E3WmQ1YYPWYhOYYTjzG2NKgnyvuHe66Ebq6OY2
i3S1smppdPFIy9l9l1dIui+xwz18Szc4IFC5VEA/de7gMO5FhxXzxJk0Nrav
eJYe6C59rlDFuZQ8gnSuJdp8cqpLCh/j6chnijyCPNjDLnLhQJmFWGiCUklu
3Q2mrldVFLUZBVhKFTUmjSDFILNGD7tLOydJTAVBZ/JJKN26nJqA9qDWRbp+
I9YO5g49uFB9ToyUL+Cu9YMXB7DElRof5RRCNK+xYUoxA1GFNGaSADAYjUFo
0GxG2OECrgLZteZ3tJUJa9rBmoGW/xGITqNVf0QXRHRkSSMYa8T3YqQCm1hh
XJCPfE/HELTpDWYLxT4dk3dR2+e/Pzt3PsZbBK/bLn+RjkhqD/gJw7KDQpkZ
V5woFSFI1KJzENaVCpYYmkz0jg3M94hQ3CdVdknL1TiLa3cbbJYab79/D/Oz
seKcrEQ5I7YD7RstQ089RIaua2QnpLZoEQ0x5MAZ+HiwP7izPxjv7w8O9vFP
+ps+7FPLohF3R8fAN9YTG3JwEmdpLStkOrg5XDnNgentYfSVNc+wgiI+PmYZ
i5bTAOBdP+ESG8mQiZ1jJCnWSMUMqm/ORRP4zo55ddympHgQImK8rIe2J/PC
jba9NlC/C/ZT922fj6B7MZp+zIQKjsPlGrDkGHWVdr05pL4FCd1oxNHXiwjr
7U64ehXXxdEZ0bE0UppIaN74DPckHaJqQdGyInJT9AuF2Ecx1heZUULj46y1
7/y5BP4pF1CTSrLC8C2M0kI9SfXpLJWzkVhRpQ5OrvkJBZuffuY+31JTAeXi
gK99go+OukfsAhslbWQBe2R61g3kgZmGhIDZYkDHK2pWTXUeJuQxIaIQMCJM
g+7oKW7UuoVKI9wO0lGEDVDDF6b/Xc2kKaE6cSEjjDV7gEBmmlxUwOo4ajxv
wkgq1IcWanaVwQO/T+W3EIPaKJmIoEKmK4FjFMZJCdWKY3xjOAUbhhmOWV/7
3HPS/vUB3/ddx8WgRDLWTrqj3jrH7WEun3RP2I5qto8ML7IZ6VrKOFz8ikO0
0XXpWYRIOTZaYh7KSO8A4KRl18IjGANPMXV+N1go069AGOFxKCdBO7NIhAwe
E5rW6muBC5fvJ5TY4Qsnwf/kRXj4Wo3mRkr4+Lk1tSLhLvVk+2udvbwdPW8k
54drEdW+XlIH8CKYoe7a0vAMRWSH1kQqViKBYRwNKIZLj9hhn+JYPKHFZjtV
k0AJJhxJ4SIVPi4JHQB42ibZrm4iOyhJiOIkkYCOhakwvporCpKKDeLACMsw
sBS7cQFE7SKolvdSshlPTEWyLO69ox4J7xjB9JHUW+VckF5YlNQZBYzT2QVy
AXxolR3+hjCzMIvPhSsJSxwp1ypFguhFyZYwpmvervywxRcCk6oyUOxq/A54
kHgMXWVUjWMN5bAgtUs8ItFmKafACA3SQP+rKm+YCYZqFZ0bS168XFfw+5tv
HP/kxVyxA8/pae+/IbGvpdp6u4azlztGOI2Vr9qHd5pziWQ8WiSoUJwf9SUF
TEHBPudt7WeYo6roJF/TbN2YgRfRvd7OTWOmPgdgS2Vm+Sgh7IsC8dna0pKo
vQoX2VveNBOyhpjINMFf7rZJDHFcyb/dYXwI7GQ3RL2HuZSUyl9KMnfRBfEf
Al6hKMPXlXmKcW8zxXLbFTZRhGwZ2JWNF6DKhC+Ck4pUghyAVHnyZknncjfX
3z/8DYzk6LikZCJpM77NoC6+c+H4RHA0PKkQOOPKBruGZeF44Wtih+2egtoZ
bZXHcrHFlm9/uShnGxfXfuvg+32MEKDzROdogH/k+cLNmvOj4UkBNBfgNTw9
O6LYpd7xEP7TB2iiR6WsHtjTwF4d0JqmNHBFysKtnubCYSTWOEoyhI1G5YiA
8gjtZYGoe+tnT1/+/tnjMN7AI9J2tIoJbi7Md0H1+4X+OiIaBsx4F5sRZjyy
L4vAQUU1zvRCe5mFpz8LKIW5bqXde2OXOi6MR+AleYucS4UlnNXuQ2EJwq1k
nED3KKfGeSBIhtB5trbuHLXy8xUgKHM6Ix297LPHZBDS0A51XQGeDOxpVqDZ
ZIkGqKdwJKclX6be6dPTPkn0RSlDa2Fxjjc5eYx9k4YXm3a3BIm7hwf2GDIr
+D1x5gBdlOYhtIPSW7xE+RmHBAeGbGAoaT1ZfSlD0fG2ecpj1Z1ygo5EH9RA
TkEcP0Ujke3hAgJW0x6sm98Yz2/s/yt+oyuLILaD6SAYO9iOfn0N4+HRP816
wtU4/oPjKwdyf39FHhSB4FpGFKzkM1hRBNIOJFAjDrMrE7OrHOfq4lhfwLAI
WWUREcey13OsGCd+Fcs65AOJZFHmLFL3EFtTUkSosxKxFRldlJhpVYkqyqFr
xhlmZKhBS950ykJSs3XMd3txmjwJx7KldZ2p4Ml52hQwM7BR01d0hDDbizIx
jMInVqAo1iw8co05ZEahfdw5tFOUOHpe0dW8g3/jsb1x/E+ne89+f4MIyoro
Sb2iKNOt9KOD299TLO+ZELW7gkuS3c4RLmM5SfEAVolMjpvySph7dqvHxBah
VSpLf71cSSyDElu2YX05uQ1uRhzrYShTilONaSMXopFyJi1G/HBGHq8kaC8k
BYHlh1bjFWV+9O7Ti6e295TZFPynL9uilNTHL+G3xxlWleB1y5afUq5YX7tW
/MdQb1g7Ddo6hh0UPF9d3i3nHTTc/3ANFT85/fEuwOKz6HhrXQwr9mp+E/3y
hFz8LByG38+zxapdeINhW/oSI75ksCtg6IuNxKYWH2dOIada/ZMNiFT40bR6
qcSlPa4p6aGFPAOrlqYU7XdkH4w7vjvo+O6WDjGGn2/Z2/aOvWu/t/fs/S/5
Ts75r/w/GuWD1cM5x6Az+cyn/gy4y4djKhT1ZIEBFvw89ySyJyl9/oprGXUA
7Ev+cV2xf3Gfe3dvD0GRwP6qWGSipHC9KezEHtP3gEHj/tYo//IV1/LXw0WK
bN2Jbmh0zfAC4rdD+ZbzXB8Y8110tA/sPd60t7FpAIpEG2oQp/2R5KXzR6AS
bXAbJ4cvpIgVXT8fd0AkgYLKgm5jk3JWaNsbnh/HIOzCGs9oaMUgGjTMB7eZ
k0mbdUU20pOj5zj0EqPNZ5nt4SWEQaiQQN1ILNYBa4kP7XhfA7Zlv4S9tDvP
KbDOLgwhYZiZVNRRUYhX8S1QY2qFngacoUcwmudVOtxeA6zg4RgjK7+L741C
mysWuMALXgrSb36FrpU+y5pFGBRASbHhibv8TAaq8znS5hfZtKGgPsFtsXkT
rmuNdUZ86Ts8HuAgjS/Ru31ftOaCaLx683n1+mn3BpxRkakrqI1JVEgJ5+8q
B95lV9e2O954KljRVQ0K6xa4YLrAtMs8MdI2cAipLcDbakPhAU/IA7u4GFIq
WlFixJV9Ja3UlVPng699YLXzCas8w6NToatarFiWoSC0qhAazA/65tFlga2b
f3p9DJOVFWAwpjvDkmH5NIQ2sC5TThrAZaYiejiJgnQb5xuSgloVQdfRixRA
tcXpTx0xwHBqtfejGuyT8f3TJGE67tEqJUVG/rAMVKv3X+AcoUgTsXH5jGN0
I5qtwIfICdLxflA8i5Pueu/fB9FYlI8SlqIiabU7DDnhVoTodovjQoag+XH+
kqtA0upz5wXoqPO16ikuukWFfpNRLXtQp1DpUkWro32lblPDd3wZDIoGNRSh
UMC+UXBdcXl8DDanUFEpz4M15+oozJ4OMs01cBBFaiMh9rqRZOH0tZp8P6SS
ihKD6QDoFNErJoYuGsKsAIHRENMqnaF5ElmC6QfOpESeMCdfstSOqqoW0QmI
SMC5yNYaHjPL8kdKpugKmJhs0+js4UMHCemR3tPeQVkGqo7QGq8SVI/5BK9K
LsonI2VFMNCWOURafsRRh4r0LyMFKappAgrOyWlfKtJhYLZ4etcSvUrcuycl
L/b3AdWDQhftqytytFOzDHxGBcvzCqG/tJAdehWs6OXTvsjRn9EIzMuo8k9w
APYmUZTu34dfPSayIELd46d1LMP96jFZ/XSapz1+Z5+mVTCmnx3PaBgAuv/X
z+5XwED/Gjti6KPayOnlX23M0/mmxkIqvx7yIiHf7ZKQ/Z1hlEeM7bwq/pKg
OE3FZ++6xh3bPMWxHBXLcGSzdReoSUHXrfw///t/+BlVNqPWA47MeRIuHQjD
bGTpO3FJDUuYLzlzlpT122qZy+Y1I0v2jQPkSqMUyEJ+omFf3lsfmEBkAO5W
zHJ83S3I1yrJqxzPbi+s6BnZ5HRTINEstB1pHTQjWTtdg6IA8YPAt/fqaR8t
RxJNwLYjid0LUvIkuMM0VQIgrr2vXZdMsEVdgpYhKkGgA+gJofRmYAZKWbG6
GB/L7MJ8I5m9Dqjmp+xO3Nf3qnAlkL+XWkjXYCxFiAapTk7YYsnP9yeJAyNo
QUPasQRX/n9GmD1V9i29Xj39a8ZkC3gA/f8kzDvH/GqE+fvPIcx4Lz6DMPfO
Hz1+YM+YdpGdu7yKLpua+mBIqlT2X/ve0H1aZ+u0xJiiMAmpnSy08k9VGWUw
1RI5tK06kBQZpDB9NNz1J1nMSpDr5kvYwzSp5+RKqIOhSSB2aQqaj6HeaXIN
RzGLYXCSty1jhid9qSIV1Y4TH31vlbzt2/eS8LK3J10pMm79RXMMkVBXVN2O
9XPX9McFf/nXSUD1hY3ZccR0WB7COMGH8MjbESrJWCEEvtHfphKP7DN/MEcH
FohjcxZagUF3FHTg3/NvYniMvqJrkjCM3S+jiVzWhAFIb0RBWNTZ66asMfgl
eDRcOc3IQHmITjSY/YA+9mDEgY0W5Ib4SHl32ysXQ3ywelh76GgRerCuu3bA
sY5wsLwPHEz3QaPDyPrIz5+zmygFCrfGy9Pt6VgDu7X2T26UvMbtQ9IcNDqn
7i2SX1S3p5vDLz/3dPBZ3QD+PbCt9bSWjusajUZRbJ488lH+K9eartHfGf7F
yJbw1aBSiWdPuyM1ggsajuwuaLl1efgbefiNcHF6ybhLJSUs3mC65RvxWNAj
fsNiVIVVa05OmMMqFYKkZxnJgMHo3TDv42BFWcRpOuKoqe1+gBftO19GV6B9
c1+ePAkOHO93srLBWSOBQYsX/GfIh+ZSF9v3pQVLP8hWhSlGIMYd+t9BRxGq
jm34GOTXDsVaq2fqREJE8ItCRcL9PAp4PN9Bq8K1HjQTWW4UPNgPxmrd0m2C
VHoK/NnUyH6aCNmHLQj6RfPE0cLDtVy3+DYl2UnxY2q0C8QxnYkgi19ES/QD
RQuEFeEakRhoz9c1VcYg1NxzUSLiddbQkBhPaILg5g4oNIVm/4VBOmCCitO9
vhVSeL7Zbcr2PobZkzCsTCPjoov7euwHVeKn/xVa5y473NBQEHp98HOLMp5h
plImfYS1Im5wVFH8u7yTZrR7T5hI1PBg0OdayZBx/iM+Q9QVw2HeIFQp09CB
Q6mCtsya4G3ayjv7LsKT1q9KqfHFXSka8gzWz+I8K8ore4gp/GXVa7Ba2B7M
3bff4Qpu8v+USnKv5jlQoXGIr0K0mcIfuI0NPCV+fcef31WSN2/WRZMveK7f
PGwtpf93+Ao+Zukx+tnGlLG1+JsPdwCCeGSyWHCOZ4h38j2gs30oV4jPuLcD
ueP7KfWzMldGDAcqOQpLYkLjNdKmXt8OL8fHLZz2OMCXGwAPkMZMuTCx86bD
kI+C2ho0EagPoULjv0YF5TQyMSvHje4b2gO4wEKWmss8sbt4ODkMPnH+Sa0J
4nE9qDde16BkS40Dzl1PAA11cC1BCzSEkP9Qi7/ni00Q4cTtaXx7UBfmSPaH
Ddv3pauOhkm5gbG1gChB4vIYmKCsCyaPqr2CXnDTJo10JKVZ2FFZlHGVOVjJ
UqsTuWBbjsnSRgQZN2Hh8do9isk8z3AzXGsDH8OR16vIzSCpQGhO4g4MQINp
wiANtth47w+n0s/LlWTxBrplWNMB+6Vq/erEctiJvyg/+Zvy08+299PrWz/B
jUEfEEJtx2YwvPGaGbGUCruBTFDp35WtoyzoYPAACSTIkjouAe6SdwOVZIrY
c6arn17fJr/FSYfIuUrIGKULzit3TYQNiP3NUyYBCc730+s7NHB8z4itbd0y
KdxST0AKxwKTnDTq7h4VHAyL3IhyG/A3b9kTv60h42UNSvME3Uk5avkbZ2rF
dkVNtoJFHqDzh2r9q3TMFougMM5FZpZJ9dbliRVBKGDs0dYg6Qnlu4hdlKv6
GWlD235E1zFm75HYP7Quy4kv9tRdlUVryvkD5BqUigMsVbsIC/xg+GilnJUU
StKLpPXnxK7M7Zo94L1EgCALaEcrFy6I3/Vxni6VgkgXldDkOHPyYdVZhHva
OZvQlq24WtTBpzqTtQfLUpMvVYLJqLOMZOO50dVw6jDY70Say3ALASQB1le/
1BLn8nqv7ts0T40WMQoLXbRrVHYhp6EC6gKMb75xx/uEjmBXNRJXCgadFmnt
OkmxdQkJl1EZiAOipG3jh3j8ATaTtphMcmXJOqcGQpDD4bvX+D+hYSKs5kKN
rr9BrMJAHsdoT7YrrhCa6LzX1VchY15Y7ycwpsdDf/woUZhSKgQpNQVW8ota
XLcdvSl1FCJXDe59SunPFLY41+xXh02C5VJeSa9QVDNrzoWsNC8ycRUfjI8l
oHAnieph4Ikkg3/3rSs/6NN/YUQzK7m8GNXCQOpxmadrDfoGumgwYGTAb9OZ
/SSHhnm2NEse5mxiERcm0Joq5W9l0NCH4okw2Turmk0rjVFKzm6haiBhKQ0K
5RiXqByCM8y4JZ8UF5QXcF5kYUN2vIq+WCt97YOJfG3ToHe5B6WhAl3cm13j
imgYSRoPW7Ncabm+KXbuKjhxliM0RK1kFCp4TU1HIRGjVmzmhOSVF8vMRVku
dsuMKknn095/2WEy+9u/DUV1OmrSf5vJ/A2XncUv2YwUSOarcpFPZBYQt6PA
9VdPju7vj+/aO6M77vlIqcURfyEdWinCloWqqdZZJHq7X6aJmgK8NC6YM3Rh
uh2E4lh+i0V0s1verrfoRTzLx49KpGsNB1feH0WaoHmfJF2K/1LRlLF/r11p
gvA9D6Y2PPdpLMEH4H+goZieyrhMkja50QZ+LivEdLG3QHwkrjjYiWCGxHRt
tENbpt6HzN1okQE4WAoQV0KEMbROkVrOokzt4FWrFeswv88ODYVl19weMRDk
gZlyhd3do/KyRWh3YgVdxEjOILkC61FXTrwzPS6rSs3asA7RFB5v+kI53I7Z
711joBbXppPzNYlzabeJqCsq17hcc8yQwOI+KLOSgOcELK2fI1eNGh+Jtxxu
XegA2qUyWtEZ9UrjhMgThARgPTt/S7/7Obj6U2zE81CtoAFbZwbhnvuFLR2t
m+6tE2TewCavy1Wz6f3Sj0kR/ustYAiUe+HXEbO1v39I88dGAjYtqFXhl9Aw
R4sdPrSLL7SyiU8r9BXssAQoVThg8bWL9HSSnN1HElAeE1MengOElQZblUxD
YTPgpqatBuaVjRmdZzWiXwYKPBchifTvgjDunEMUc72XXdvo2y+lb53kDWQB
rd8tuTWPXYjIwL70Ga94X35MFnnaES5ZtzvYgIjxNJ/Nh2fYLK41gzH0E/WR
88XDk6B4NIgvsypZLqkQTLtZjos7Ndt6oxamxgZzwx/Ix/071m1VdAj02npg
fI14CSUl5fT9e+wFeW//YDT+3cWltFXjPnZLBA0LCAjt8EnsnrXdPZWlTm2s
t7vBXVhhHgNoDIlX0hh1y9YUlBeG5ZESMIrAGsCEM9Va5oDd1cwN6yPMABSe
WOk1Cd5nWU8krBa+o/Gs4S4RQ5fJs9SHA/gHImDZcJ14orwY6G87sUPi7QPb
it9czDH7pNF2XpsB1d6VZKjah6r6QaV9sXEJkVpxe5lh6UKyflWXro8r6b9Y
Q4lKWFNsxAqbSy82hn7KknrDDcqStFUcRebWFtEYx4akENPzLnAOLsQVRD1I
+ADKFJygCSCdreFOYtYhAaN1mYNuePAClaCad6IJ361OLBIjykVQ6l85NkvX
KqZJgZrShLcsSLV7YKhG2yNQdH76WcUY1beSJRZhxk2SGunqM2kZybD1hBEb
aojbrA1yKbmN5VRPPEnq6MsFhaTKma8l5rsgk7zUKcG0CvhdcSSv5q8HRWG1
jMRuKeHR6+nPyFafJ+/ELnyaVSeSYvcdfbtZlEl6Bvz3u3v0Cv0PgEis5Kgu
vOtZULsWPR5uL5IORDDo2w92CmT4uXtRFOLtcobyu0unwPTlQMZjEHGNwdAi
JbBMc25B3tL2/IIZB6jBQHySDZcsU0uj0r/AI+DXqOSaRGl+0M+w9RjdDu6u
S5kMKCNujW5aEKBCxki+PWWljoWMqkxMRMwM5kYdVGsRk1GajTg9EmSztI9F
9Hw2CoAJ29Yw7wSxIscgTJeYAgAig3CTuYCkLetWr2bCxjGwrZYPPWzKKrWc
YxsHEqd1ExdrdN2WQeUP2QlbcuJaXVS1G4eIqiXFc+D3XIIdAz/zAtGMVB5s
xToILIhA14AeOb6HhkcmuhLaFNAkX15eWu+ZsHV25P/bKuWO90Zqw9qRfSnO
pVecLzqC+8FbHLu/Dtxft8JfIzmZkhNH21/ZUfwPZCjsZ/e448nWv67BWv9e
jr/99ENbS/Z7t1+82VcHOs/LA0+Fjs4xaKPljTyy7ksO5Dk6wi/g2e/skeHl
+9eionpCDl6NQ+zQsnWveOKXB594+WCwdQ9csVng7rKCb2EQWMdNOBHUJfCS
j1V9CG+8q8ZJysORiLgsIdFLqA8gdXylaydjXB1oxAmA5CFAVSgE+xhMsIOg
zOlL3x5LB3RNhLz1vAKRGguFwamEle06RvtWSwX7IuhcTPMxUXB3nbBKOlaO
QJ7eXGUkq2FJffaDaXOcArfnOGTkuyQXtvHVQAX+ZdvHiWMcPGhd+ZTuBg0/
MNSomb7BjjXFG6qshx+5sSi3/MJTDgSZsGZ0YfDHMHPJ+QMDksLVLEUPa+OL
cQ1rtKJHuAcNzj5E/7Uw3h7BeojY2QcGfHTeB9Q68n7toyNh26te3sf3cngY
0e9Qfidvt2LiwRYmuiUIASZsZAw8cMkRVBxgCc9zARyRaYKzUuotZ2wCYPqW
vSzJJ5dJvvAVjfncqLIrpWCw7GNIwNFrwCmF5xjZMbA9hQfs9l/seHRvAPBS
vXZ/4O0zqLIiWMZ9sRLDy/j5QD8fSL/aVe+WfnVLql0Jpt84uuG1uZhbH3L+
gnQhEUnGJL4YJ6xTlkmLYyFhgXI5azKkcsNzh0SWo9Z4j91+qHc4wuqn14+B
0QG5fwwSAToe43ZfZMxGoKlXScozx7fBNU2Tm7iUcpQwJBm9fUE0Ny/dGf+e
a/+O5h1UyNFOx3XEOIfYuG7n9YBeHsL9gtvJA3JP4F6VpHnJreP7VOq3GEqp
73bbdH6DsENlmwFRmLr0vbqEEetJmbTKp43bJF227Vq29LRDUym/4hOq8a3n
IsBSC3kVne1xVcGb3Bd+xErGYS/FemyIh2QhRQzloUT4l+JWaM2i4oTBiklu
CaETtATCtXWq8AO97+wCMZGmwZMd9hBTuKNetxSl8DOhuZX+B9/Niz5gm4zC
WUITruHbsBbaO0JC09cK5tTCRVNm+ckj+U1qwrqG3XCTqaAQ1mLH7FfQcZcA
dV97f+dSKQFKvDAsVEvKKtWE1iqfujJK1E3UMBtVu6POdZS6mmsDlEYjTygx
GxvYBIof2VDFr1N71gMsSeohUNS96jFBG4JW4SbsMJkvMuu705CWSLnRKO9K
1+O0XF94riA1k1iXkWY2Qd55rIYbqbCMqMQCb4P1/rjbZAgSymVHvQXggoqM
0JAuRxVX08YjbZEhDXkQT0GP+RLWlONDGrhCL1wVLuESuVMg26PRkerZlHyG
yjB5KkGpoCwXNgtQ3WD4n6s8RRPAPKHOadz8D2NuJK8r4ayuVmSSNtnkeBnR
eAgbN+aPFOCT+by6VgCQ6vK73biI1CboqkrNf3xuRwJHLveZsAcdMaHewDW4
uLMP2c5I1w2xNK92eE+cWkYKOAJNqgS7+hzOlHbhWlTBsOP9/b8RfY+FIQGJ
9j0loIqPek793Jn++7xt17OIglAQb9Q3RvD0HlnknlyZKqQusBROc/E91nbG
qQXxSGSBDY/lScj8Nlg6PKpEEJmEcLNSzyOO5slqpY0F3wsZI6/84WnDFTym
uhZbNGID7gyY+aWESVGZbgKQj2+64M5MWWpEo2xrzEPVmEPrtpwlutZX1HFM
e/Zi041JhmXAFsTGgg7xaRb8sJdiFbb8Yk0F7NuTUeADkKEnKmsDF6eSAEi/
1F/QQnhgv1MT/yCjIRHzMwudZ8K3KGeYWQZCMoVRSMwOcBsXAbMF0qkUUw5o
Gxna4IQn82zyNibVyKyZbOQUROOIhAps3shHMRVREQ/nfASCyXEeYhpyGbgo
slNUDjcG9t3aiNCEVg5GWpNK40FffapU2odBUCBIVw3hIKWfUh8S3xiNLpsK
xoAnz9FPmLnNidDln5eLAnQFM7vIUqJo5KDEbezU2UkFY9ji48ku0T+BDuMq
EuwAIGzgIoN0rpB68W1DvFBNna6/rY9omrFlqRCrEglpSOhiSx+Zo1wMWeGd
R3GJQJJQER7aO2ALc9i3lTTkc4yLWFChGjgQvquuxAbPKuqbW7cR7dZzPfUH
BzGtdg2SPEaIJGL04/Ytvjo/MpGICwfvYpeMsxcgPU/mVBA4x5cfZZSuRzi7
tTXuR6aAFXiqQ1pqzUj7Xs60JqZXlCgWoJOAWYnRqiFtxx2JmAk+s65tXJRD
SsiAjlOxeLGg7giPQ2KD0ntAb7ZIR5jWW3Ii8sC3csXyisnC7yOpqXGg1xiD
Ts1wLFLedhC2Lsa6/1sNSKMCkSJrUVHawtE4t1WpPtKoq098RGaByI6Nk4Oe
SEwD8WAbvLzLEvUBrPnLwB047xT1zyb3oTQB1mp1L3BUGGbRESQmNFUuW9Tc
C++pcaV7uG8sloKEPZA3xvl9ZTQdSkSPIDzEtAryeKbZ9s/w1adZqBYSpc7L
Rv0REmnD9UzXC1uwPhhHSQi9x3XuTahylQBchD3v50W7w7PHL+BQfRgzh8xi
HCBGwC3hoDkFmMSkS+8iVn8V3ReqmoA2KbWXA00G2uqaJi0TdBPCi5j6LByR
jB7HL04IpbA8QkbVELiX4IZ7doP89MMFyJwLL58COiyzimrXiJkwWFQsmbs1
cl0EEW6XgLRrafSaEBlOKgwwBKpz4ftLVHRWMADLVNjc6O1S6dcRyEnJQPIQ
vdmcvrbHxWUOiuNSKiMBBnJP8RPQXC7VoY4b74vjhPdNIr2DYxL0DiLrBdFj
hipqy1hxIfAx8hgjqlLFvIikF/6amR32uJxj/V8UX1XiEd378cmpRMXVOhbV
MsVqqWsS347aItOjx4RNVMVu+9e44qzUHfYth4c/ovoNPwV1dnAbf/nzvwZ1
BIxWFsVTC+q+yNd/+fO/sVapr5LBANu7n1ZlU05AvvmRoWTu2h6m4vXtqXPo
4dtVNkNKSjEBpz/eHZ4evnp+ptYvYizr2QzWw4i/JtMq14+4T9EAaAaUpP2b
W//r/xsn8HeWCHgK3BP+g+zjAxzTDP6X3Nfw38d0MxlOzhvwyiFHq3jAX7mO
/XeP0I0w3scPY/oKe3vhd2E9AF1HJDZ8nXVIeYP7XeUNjsR/v13pYxeOUBlV
ezhBz9wCm/USQqLrtKD+z4WYpTB0PCO593ECF9A+WlAJfYkFQuEhSS/zuqzI
CccaBTLgsqrblQ4m5TBZg7RZiWAw0WdZ8Y1ABoP9U56AaAHExv43EOVn9uk6
ucpyewxsYPHA/gm/e6eP/HZOP46ABBpaBjEUEGqM+ek1MOhhRtXqHgA7wRa6
zDCznzGWPyfOm4Iu2VAVvwf89xCEfGCPQw5QHWKG7LCZDCk83ezv+zeF3sCX
YwDfIckpeJvdbtG7KkaVoGovbPjGzsDygSHeobaYegNk+x37JP758MUPoPlm
QvyQ57mvBrKv1FLAm3riTYMGkEbUDXqaGM0ILktSY71BYdedrWmZaF4J4w9C
xpsdRSo0aiQBInEhUixFKEvv56AO3Kws02BBbCBEBCS2QAoMEkiRyIInRWOQ
COr2qlw5DFEvUPulAEeQHrOVrztYx/EOj7IG7b6kPBEHrDMEA/ANmtihpjXH
ItEH2iE9whXt+OLImr3qAGpiUF8+BHAZA38vqmmHVbsHDEA/nQke2VuWBSI3
m/Zk1LDhotYtkZlRBKfVahkQp42S6Ib2X8wVWVXZkMpD4rgOxci4ukRmjJcW
k3LyIsQCQbkBK9kcaIUmFPICDDjH2/9kYqTzeRQwy/6BMUDMgdjP4cMtvVou
pCvobUGVGkW8ask5sUEDhn0BV/NTl91fcp6T9knVYqhyOPfg3lmTfxCE19IN
1pgZOKIZVnvldk3U4Y1NFtiQgvBT46IEZwaC4mQmJcuiVK4EmFPBUbIZITdQ
czO1J4dpZpQiqK0MOaZK5b6Qjkus0cnx+ZPx+LZEVJplljVOdWd3QVyDnzq9
76i274rrYy5CHV9UZwj1lfUxbEQ8l13j9AnmRsWgNtS7GiFIHX41ejuzjBHj
KlfG57OkuDcpjI+kh6rsL33321oK1XLTymVCBIIMhtpBTVTtpGGRWsu0ktk9
bMU7wlR1v2falaaQNtpl3gYd092tdGSzertXEreZzSmp7Pzsxz/8wPloSDN9
lphy2WmGjMYdItE8OBp8f+B9DD671bgAHQ1wk11ypfxIcaBKsLAs3COrZ7nA
HeVrs9UiTE9OrEWoHi82cTQmV08G4kt3EoXo/fEujorU4ZCNLBxjyH4FLR2K
nHLeNKv6wd7eDPa+vkDRYK8p0fpS13t80ff48b0xDDgEZkiSDr0b3JGBhDdZ
DfXbi/NWfQDlHkWrFq6QKlp6F3RYHN4K2inGj7OqL8dLdpIRzH6EyptWl39W
roEbkWsJi+Sp9dU55bYUda/iImmAXWgQXnKBEf7t50e03UCLQqVLlaBQa/Rl
80ZMhJ/jqlKhoFyVlQjoJv/TvFwrAcUaG0OpQzGEmzkEgjq8ZM1muH8wMl4k
igND2VR9XeGFvbZtQGxyyI9CpKPr3ePKDgtxUdBS+/KENqDYKqJIXNCxftcQ
2DxdL9E4hWHx3vVOgGO9ELjbCqMYYSHBtxLZjWZYNqbRkuiBEie6yi6Ahs0o
VjoTyxyvet2QKU5PZQrYcpWQ5R7UAeBCk7co6T5XM+Ijdluge8JolxFvZBT3
HV1U7YyhV3JOlkWgV5g+V0rjAgzwRvsgK3Y6DqUG8HXHtzi/BXPkUjhtJHJK
fMlCvNiwrU19lAY9bnnQ+lMgntR+aqUDS5BkKb+OgxVgMIyHk25hJXdo1GR7
bSMofdOdIZGbkuAi1SyndCJ80yTLC5BBgLxxwJ12ynJ+yKj6MupLQbAJHRUb
5Xw6FrHhmi+NC6aSypDReVgxNlBkNvdidoUDfI9KtCsS9rj6v34mzqKU2ezv
Vwhs2ZvGEbvOF2J6M9shP9hey7nLgrZt2pyN5QgCs5/bhL1He/iXtA/RUuP9
ILMx5xLkxE2LIKdcPIC6HN+62jeV2Vouu0Lr9ZIaMJ6fHA8CadAHfbBprKv/
L47NTNdHiDBkOUCEIzHob3MQVnHuaWR4RoEXk7KqVN7FynZAGeSW13210Wbw
IJdmCLYhkNxxQoS77hRG9tAXs6D4fJ4cD71k3/bgE2Mh3q4LRnMQ7akZq4xu
khi2g9jW7fGeNDIQM9DaxgfQNZVxvUtJyNf+TOxOczjr63RcbGJDuBBAidUw
ij9Snd9nTXBySbNedKy+ENWr4Ml9cVLDg/ka6CBMVeui9rHBSiU98k2TfIF2
ZJT5Ov0hKxY/0wo7DCJKYNc6nLI0AgLjpFeyhzQl1po3RsWTq6urEfDFZFRW
sz0vgNZ7xES9mtj+PHo3b5YL838BToUI+gYTAQA=

-->

</rfc>

