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


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

<!ENTITY RFC8200 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8200.xml">
<!ENTITY RFC8402 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8402.xml">
<!ENTITY RFC8754 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8754.xml">
<!ENTITY RFC8986 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8986.xml">
<!ENTITY RFC9256 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9256.xml">
<!ENTITY RFC9259 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9259.xml">
<!ENTITY RFC9350 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9350.xml">
<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC7942 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7942.xml">
<!ENTITY RFC9252 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9252.xml">
<!ENTITY RFC9352 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9352.xml">
<!ENTITY RFC9513 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9513.xml">
<!ENTITY RFC9514 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9514.xml">
<!ENTITY I-D.ietf-6man-sids SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-6man-sids.xml">
<!ENTITY I-D.ietf-idr-bgp-ls-sr-policy SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-idr-bgp-ls-sr-policy.xml">
<!ENTITY I-D.ietf-idr-segment-routing-te-policy SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-idr-segment-routing-te-policy.xml">
<!ENTITY I-D.ietf-pce-segment-routing-ipv6 SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-pce-segment-routing-ipv6.xml">
]>


<rfc ipr="trust200902" docName="draft-ietf-spring-srv6-srh-compression-11" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title>Compressed SRv6 Segment List Encoding</title>

    <author initials="W." surname="Cheng" fullname="Weiqiang Cheng" role="editor">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>chengweiqiang@chinamobile.com</email>
      </address>
    </author>
    <author initials="C." surname="Filsfils" fullname="Clarence Filsfils">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <country>Belgium</country>
        </postal>
        <email>cf@cisco.com</email>
      </address>
    </author>
    <author initials="Z." surname="Li" fullname="Zhenbin Li">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>lizhenbin@huawei.com</email>
      </address>
    </author>
    <author initials="B." surname="Decraene" fullname="Bruno Decraene">
      <organization>Orange</organization>
      <address>
        <postal>
          <country>France</country>
        </postal>
        <email>bruno.decraene@orange.com</email>
      </address>
    </author>
    <author initials="F." surname="Clad" fullname="Francois Clad" role="editor">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <country>France</country>
        </postal>
        <email>fclad.ietf@gmail.com</email>
      </address>
    </author>

    <date year="2024" month="January" day="18"/>

    <area>General</area>
    <workgroup>SPRING</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 222?>

<t>This document specifies new flavors for the Segment Routing (SR) segment endpoint behaviors defined in RFC 8986, which enable the compression of an SRv6 segment list. Such compression significantly reduces the size of the SRv6 encapsulation needed to steer packets over long segment lists.</t>



    </abstract>



  </front>

  <middle>


<?line 226?>

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

<t>The Segment Routing (SR) architecture <xref target="RFC8402"/> describes two data plane instantiations of SR: SR over MPLS (SR-MPLS) and SR over IPv6 (SRv6).</t>

<t>SRv6 Network Programming <xref target="RFC8986"/> defines a framework to build a network program with topological and service segments (also referred to by their Segment Identifier (SID)) carried in a Segment Routing Header (SRH) <xref target="RFC8754"/>.</t>

<t>The SPRING working group has observed that some use cases, such as
strict path TE, may require long segment lists and that steering packets over such long segment lists using the SRv6 dataplane requires a large SRH. This document specifies new flavors to the SR segment endpoint behaviors defined in <xref target="RFC8986"/> that enable a compressed encoding of the SRv6 segment list.</t>

<t>The flavors defined in this document leverage the SRv6 data plane defined in <xref target="RFC8754"/> and <xref target="RFC8986"/>, and are compatible with the SRv6 control plane extensions for IS-IS <xref target="RFC9352"/>, OSPF <xref target="RFC9513"/>, and BGP <xref target="RFC9252"/>.</t>

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

<t>This document leverages the terms defined in <xref target="RFC8402"/>, <xref target="RFC8754"/>, and <xref target="RFC8986"/>. The reader is assumed to be familiar with this terminology.</t>

<t>This document introduces the following new terms:</t>

<t><list style="symbols">
  <t>Locator-Block: The most significant bits of a SID locator that represent the SRv6 SID block. The Locator-Block is referred to as &quot;B&quot; in Section 3.1 of <xref target="RFC8986"/>.</t>
  <t>Locator-Node: The least significant bits of a SID locator that identify the SR segment endpoint node instantiating the SID. The Locator-Node is referred to as &quot;N&quot; in Section 3.1 of <xref target="RFC8986"/>.</t>
  <t>Compressed-SID (C-SID): A compressed encoding of a SID. The C-SID includes the Locator-Node and Function bits of the SID being compressed.</t>
  <t>C-SID container: A 128-bit container holding a list of one or more C-SIDs.</t>
  <t>C-SID sequence: A group of one or more consecutive segment list entries carrying the common Locator-Block and at least one C-SID container.</t>
  <t>Uncompressed SID sequence: A group of one or more uncompressed SIDs in a segment list.</t>
  <t>Compressed segment list encoding: A segment list encoding that reduces the packet header length thanks to one or more C-SID sequences. A compressed segment list encoding also contains zero, one, or more uncompressed SID sequences.</t>
  <t>Global Identifiers Block (GIB): The pool of C-SID values available for global allocation.</t>
  <t>Local Identifiers Block (LIB): The pool of C-SID values available for local allocation.</t>
</list></t>

<t>In this document, the length of each constituent part of a SID is referred to as follows.</t>

<t><list style="symbols">
  <t>LBL is the Locator-Block length of the SID.</t>
  <t>LNL is the Locator-Node length of the SID.</t>
  <t>FL is the Function length of the SID.</t>
  <t>AL is the Argument length of the SID.</t>
</list></t>

<t>In addition, LNFL is the sum of the Locator-Node length and the Function length of the SID. It is also referred to as the C-SID length.</t>

<section anchor="requirements-language"><name>Requirements Language</name>

<t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;, &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;NOT RECOMMENDED&quot;, &quot;MAY&quot;, and &quot;OPTIONAL&quot; in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>

</section>
</section>
<section anchor="basic-concepts"><name>Basic Concepts</name>

<t>In an SR domain, all SRv6 SIDs instantiated from the same Locator-Block share the same most significant bits. In addition, when the combined length of the SRv6 SID Locator, Function, and Argument is smaller than 128 bits, the least significant bits of the SID are padded with zeros.
The compressed segment list encoding seeks to decrease the packet header length by avoiding the repetition of the same Locator-Block and reducing the use of padding bits.</t>

<t>The compressed segment list encoding is fully compatible with and builds upon the mechanisms specified in <xref target="RFC8754"/> and <xref target="RFC8986"/>. The compressed encoding is achieved by combining a compressed segment list encoding logic on the SR source node (<xref target="sec-source-node"/>) with new flavors of the base SRv6 segment endpoint behaviors that decode this compressed encoding (<xref target="sec-endpoint"/>).</t>

<t>A segment list can be encoded in the packet header using any combination of compressed and uncompressed sequences. The C-SID sequences leverage the flavors defined in this document, while the uncompressed sequences use behaviors and flavors defined in other documents, such as <xref target="RFC8986"/>. An SR source node constructs and compresses the SID-list depending on the capabilities of each SR segment endpoint node that the packet should traverse, as well as its own compression capabilities.</t>

<t>The compressed segment list encoding works with any Locator-Block allocation. For example, each routing domain within the SR domain can be allocated a /48 Locator-Block from a global IPv6 block available to the operator, or from a prefix allocated to SRv6 SIDs as discussed in Section 5 of <xref target="I-D.ietf-6man-sids"/>.</t>

</section>
<section anchor="sec-endpoint"><name>SR Segment Endpoint Flavors</name>

<t>This section defines two SR segment endpoint flavors, NEXT-C-SID and REPLACE-C-SID, for the End, End.X, End.T, End.B6.Encaps, End.B6.Encaps.Red, and End.BM behaviors of <xref target="RFC8986"/>.
This section also defines a REPLACE-C-SID flavor for the End.DX6, End.DX4, End.DT6, End.DT4, End.DT46, End.DX2, End.DX2V, End.DT2U, and End.DT2M behaviors of <xref target="RFC8986"/>.
A counterpart NEXT-C-SID flavor is not defined for these SIDs because they can be included within a C-SID sequence that uses the NEXT-C-SID flavor without any modification of the procedure defined in <xref target="RFC8986"/>.
Future documents may extend the applicability of the NEXT-C-SID and REPLACE-C-SID flavors to other SR segment endpoint behaviors (see <xref target="sec-future"/>).</t>

<t>The use of these flavors, either individually or in combination, enables the compressed segment list encoding.</t>

<t>The NEXT-C-SID flavor and the REPLACE-C-SID flavor both leverage the SID Argument to determine the next segment to be processed, but employ different segment list compression schemes.
With the NEXT-C-SID flavor, each C-SID container is a fully formed SRv6 SID with the common Locator-Block for all the C-SIDs in the C-SID container, a Locator-Node and Function that are those of the first C-SID, and an Argument carrying the subsequent C-SIDs.
With the REPLACE-C-SID flavor, only the first element in a C-SID sequence is a fully formed SRv6 SID. It has the common Locator-Block for all the C-SIDs in the C-SID sequence, and a Locator-Node and Function that are those of the first C-SID. The remaining elements in the C-SID sequence are C-SID containers carrying the subsequent C-SIDs without the Locator-Block.</t>

<t>The SIDs of both flavors can co-exist in the same SR domain, on the same SR segment endpoint node, and even in the same segment list. However, it is RECOMMENDED, for ease of operation, that a single compressed encoding flavor be used in a given routing domain. In a multi-domain deployment, different flavors MAY be used in different routing domains of the SR domain.</t>

<t>In the remainder of this document, the term &quot;a SID of this document&quot; refers to any End, End.X, End.T, End.B6.Encaps, End.B6.Encaps.Red, or End.BM SID with the NEXT-C-SID or the REPLACE-C-SID flavor, and with any combination of PSP, USP, and USD flavor, or any End.DX6, End.DX4, End.DT6, End.DT4, End.DT46, End.DX2, End.DX2V, End.DT2U, or End.DT2M with the REPLACE-C-SID flavor. All the SIDs introduced in this document are listed in <xref target="tbl-iana-endpoint-behaviors"/>.</t>

<t>In the remainder of this document, the terms &quot;NEXT-C-SID flavor SID&quot; and &quot;REPLACE-C-SID flavor SID&quot; refer to any SID of this document with the NEXT-C-SID flavor and with the REPLACE-C-SID flavor, respectively.</t>

<section anchor="sec-next"><name>NEXT-C-SID Flavor</name>

<t>A C-SID sequence using the NEXT-C-SID flavor comprises one or more C-SID containers. Each C-SID container is a fully formed 128-bit SID. It carries a Locator-Block followed by a series of C-SIDs. The Locator-Node and Function of the C-SID container are those of the first C-SID, and its Argument is the contiguous series of subsequent C-SIDs. The second C-SID is encoded in the most significant bits of the C-SID container Argument, the third C-SID is encoded in the bits of the Argument that immediately follow the second C-SID, and so on. When all C-SIDs have the same length, a C-SID container can carry up to K C-SIDs, where K is computed as floor((128-LBL)/LNFL). Each C-SID container for NEXT-C-SID is independent, such that contiguous C-SID containers in a C-SID sequence can be considered as separate C-SID sequences.</t>

<t>The last C-SID in the C-SID sequence is not required to have the NEXT-C-SID flavor. It can be bound to any behavior and flavor(s), including the REPLACE-C-SID flavor, as long as it meets the conditions defined in <xref target="sec-source-node"/>.</t>

<t>The structure of a SID with the NEXT-C-SID flavor is shown in <xref target="fig-next-struct"/>. The same structure is also that of a C-SID container carrying NEXT-C-SID SIDs.</t>

<figure title="Structure of a NEXT-C-SID flavor SID (scaled for a 48-bit Locator-Block, 16-bit combined Locator-Node and Function, and 64-bit Argument)" anchor="fig-next-struct"><artwork><![CDATA[
+------------------------------------------------------------------+
|     Locator-Block      |Loc-Node|            Argument            |
|                        |Function|                                |
+------------------------------------------------------------------+
 <-------- LBL ---------> < LNFL > <------------- AL ------------->
]]></artwork></figure>

<t>An implementation SHOULD support a 32-bit Locator-Block length (LBL) and a 16-bit C-SID length (LNFL) for NEXT-C-SID flavor SIDs, and MAY support any other Locator-Block and C-SID length.
A deployment SHOULD use a consistent Locator-Block length and C-SID length for all SIDs of the SR domain.</t>

<t>The Argument length (AL) for NEXT-C-SID flavor SIDs is equal to 128-LBL-LNFL.</t>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as a SID with the NEXT-C-SID flavor, the SR segment endpoint node applies the procedure specified in the one following subsection that corresponds to the SID behavior. If the SID also has the PSP, USP, or USD flavor, the procedure is modified as described in <xref target="sec-next-flavors"/>.</t>

<t>An SR segment endpoint node instantiating a SID with the NEXT-C-SID flavor MUST accept any Argument value for that SID.</t>

<t>At high level, for any SID with the NEXT-C-SID flavor, the SR segment endpoint node determines the next SID of the SID list as follows. If the Argument value of the active SID is non-zero, the SR segment endpoint node constructs the next SID from the active SID by copying the entire SID Argument value to the bits that immediately follow the Locator-Block, thus overwriting the active SID Locator-Node and Function with those of the next C-SID, and filling the least significant LNFL bits of the Argument with zeros. Otherwise (if the Argument value is 0), the SR segment endpoint node copies the next 128-bit Segment List entry from the SRH to the Destination Address field of the IPv6 header.</t>

<section anchor="sec-next-end"><name>End with NEXT-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End SID with the NEXT-C-SID flavor, the procedure described in Section 4.1 of <xref target="RFC8986"/> is executed with the following modifications.</t>

<t>The below pseudocode is inserted between lines S01 and S02 of the SRH processing in Section 4.1 of <xref target="RFC8986"/>. In addition, this pseudocode is executed before processing any extension header that is not an SRH, a Hop-by-Hop header or a Destination Option header, or before processing the upper-layer header, whichever comes first.</t>

<figure><artwork><![CDATA[
N01. If (DA.Argument != 0) {
N02.   If (IPv6 Hop Limit <= 1) {
N03.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
N04.   }
N05.   Copy the value of DA.Argument into the bits [LBL..(LBL+AL-1)]
         of the Destination Address.
N06.   Set the bits [(LBL+AL)..127] of the Destination Address to
         zero.
N07.   Decrement Hop Limit by 1.
N08.   Submit the packet to the egress IPv6 FIB lookup for
         transmission to the next destination.
N09. }
]]></artwork></figure>

<aside>
  <t>Notes:</t>

  <t><list style="symbols">
    <t><spanx style="verb">DA.Argument</spanx> identifies the bits <spanx style="verb">[(LBL+LNFL)..127]</spanx> in the Destination Address of the IPv6 header.</t>
    <t>The value in the Segments Left field of the SRH is not modified when <spanx style="verb">DA.Argument</spanx> in the received packet has a non-zero value.</t>
  </list></t>
</aside>

<t>A rendering of the complete pseudocode is provided in <xref target="sec-next-end-complete"/>.</t>

</section>
<section anchor="sec-next-endx"><name>End.X with NEXT-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.X SID with the NEXT-C-SID flavor, the procedure described in Section 4.2 of <xref target="RFC8986"/> is executed with the following modifications.</t>

<t>The pseudocode in <xref target="sec-next-end"/> of this document is modified by replacing line N08 as shown below.</t>

<figure><artwork><![CDATA[
N08.   Submit the packet to the IPv6 module for transmission to the
         new destination via a member of J.
]]></artwork></figure>

<aside>
  <t>Note: the variable J is defined in Section 4.2 of <xref target="RFC8986"/>.</t>
</aside>

<t>The resulting pseudocode is inserted between lines S01 and S02 of the SRH processing in Section 4.1 of <xref target="RFC8986"/> after applying the modification described in Section 4.2 of <xref target="RFC8986"/>. In addition, this pseudocode is executed before processing any extension header that is not an SRH, a Hop-by-Hop header or a Destination Option header, or before processing the upper-layer header, whichever comes first.</t>

<t>A rendering of the complete pseudocode is provided in <xref target="sec-next-endx-complete"/>.</t>

</section>
<section anchor="sec-next-endt"><name>End.T with NEXT-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.T SID with the NEXT-C-SID flavor, the procedure described in Section 4.3 of <xref target="RFC8986"/> is executed with the following modifications.</t>

<t>The pseudocode in <xref target="sec-next-end"/> of this document is modified by replacing line N08 as shown below.</t>

<figure><artwork><![CDATA[
N08.1.   Set the packet's associated FIB table to T.
N08.2.   Submit the packet to the egress IPv6 FIB lookup for
           transmission to the new destination.
]]></artwork></figure>

<aside>
  <t>Note: the variable T is defined in Section 4.3 of <xref target="RFC8986"/>.</t>
</aside>

<t>The resulting pseudocode is inserted between lines S01 and S02 of the SRH processing in Section 4.1 of <xref target="RFC8986"/> after applying the modification described in Section 4.3 of <xref target="RFC8986"/>. In addition, this pseudocode is executed before processing any extension header that is not an SRH, a Hop-by-Hop header or a Destination Option header, or before processing the upper-layer header, whichever comes first.</t>

<t>A rendering of the complete pseudocode is provided in <xref target="sec-next-endt-complete"/>.</t>

</section>
<section anchor="sec-next-endb6"><name>End.B6.Encaps with NEXT-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.B6.Encaps SID with the NEXT-C-SID flavor, the procedure described in Section 4.13 of <xref target="RFC8986"/> is executed with the following modifications.</t>

<t>The pseudocode in <xref target="sec-next-end"/> of this document is modified by replacing line N08 as shown below.</t>

<figure><artwork><![CDATA[
N08.1.   Push a new IPv6 header with its own SRH containing B.
N08.2.   Set the outer IPv6 SA to A.
N08.3.   Set the outer IPv6 DA to the first SID of B.
N08.4.   Set the outer Payload Length, Traffic Class, Flow Label,
           Hop Limit, and Next Header fields.
N08.5.   Submit the packet to the egress IPv6 FIB lookup for
           transmission to the next destination.
]]></artwork></figure>

<aside>
  <t>Note: the variables A and B, as well as the values of the Payload Length, Traffic Class, Flow Label, Hop Limit, and Next Header are defined in Section 4.13 of <xref target="RFC8986"/>.</t>
</aside>

<t>The resulting pseudocode is inserted between lines S01 and S02 of the SRH processing in Section 4.13 of <xref target="RFC8986"/>. In addition, this pseudocode is executed before processing any extension header that is not an SRH, a Hop-by-Hop header or a Destination Option header, or before processing the upper-layer header, whichever comes first.</t>

<t>A rendering of the complete pseudocode is provided in <xref target="sec-next-endb6-complete"/>.</t>

<t>Similar to the base End.B6.Encaps SID defined in Section 4.13 of <xref target="RFC8986"/>, the NEXT-C-SID flavor variant updates the Destination Address field of the inner IPv6 header to the next SID in the original segment list before encapsulating the packet with the segment list of SR Policy B. At the endpoint of SR Policy B, the encapsulation is removed and the inner packet is forwarded towards the exposed destination address, which already contains the next SID in the original segment list.</t>

</section>
<section anchor="sec-next-endb6red"><name>End.B6.Encaps.Red with NEXT-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.B6.Encaps.Red SID with the NEXT-C-SID flavor, the procedure described in Section 4.14 of <xref target="RFC8986"/> is executed with the same modifications as in <xref target="sec-next-endb6"/> of this document.</t>

</section>
<section anchor="sec-next-endbm"><name>End.BM with NEXT-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.BM SID with the NEXT-C-SID flavor, the procedure described in Section 4.15 of <xref target="RFC8986"/> is executed with the following modifications.</t>

<t>The pseudocode in <xref target="sec-next-end"/> of this document is modified by replacing line N08 as shown below.</t>

<figure><artwork><![CDATA[
N08.1.   Push the MPLS label stack for B.
N08.2.   Submit the packet to the MPLS engine for transmission.
]]></artwork></figure>

<aside>
  <t>Note: the variable B is defined in Section 4.15 of <xref target="RFC8986"/>.</t>
</aside>

<t>The resulting pseudocode is inserted between lines S01 and S02 of the SRH processing in Section 4.15 of <xref target="RFC8986"/>. In addition, this pseudocode is executed before processing any extension header that is not an SRH, a Hop-by-Hop header or a Destination Option header, or before processing the upper-layer header, whichever comes first.</t>

<t>A rendering of the complete pseudocode is provided in <xref target="sec-next-endbm-complete"/>.</t>

</section>
<section anchor="sec-next-flavors"><name>Combination with PSP, USP and USD flavors</name>

<t>PSP: The PSP flavor defined in Section 4.16.1 of <xref target="RFC8986"/> is unchanged when combined with the NEXT-C-SID flavor.</t>

<t>USP: The USP flavor defined in Section 4.16.2 of <xref target="RFC8986"/> is unchanged when combined with the NEXT-C-SID flavor.</t>

<t>USD: The USP flavor defined in Section 4.16.3 of <xref target="RFC8986"/> is unchanged when combined with the NEXT-C-SID flavor.</t>

</section>
</section>
<section anchor="sec-replace"><name>REPLACE-C-SID Flavor</name>

<t>A C-SID sequence using the REPLACE-C-SID flavor starts with a C-SID container in fully formed 128-bit SID format. The Locator-Block of this SID is the common Locator-Block for all the C-SIDs in the C-SID sequence, its Locator-Node and Function are those of the first C-SID, and its Argument carries the index of the current C-SID in the current C-SID container. The Argument value is initially 0. When more segments are present in the segment list, the C-SID sequence continues with one or more C-SID containers in packed format carrying the subsequent C-SIDs in the sequence. Each container in packed format is a 128-bit Segment List entry split into K &quot;positions&quot; of LNFL bits, where K is computed as floor(128/LNFL). If LNFL does not divide into 128 perfectly, a zero pad is added in the least significant bits of the C-SID container to fill the bits left over. The second C-SID in the C-SID sequence is encoded in the least significant bit position of the first C-SID container in packed format (position K-1), the third C-SID is encoded in position K-2, and so on.</t>

<t>The last C-SID in the C-SID sequence is not required to have the REPLACE-C-SID flavor. It can be bound to any behavior and flavor(s), including the NEXT-C-SID flavor, as long as it meets the conditions defined in <xref target="sec-source-node"/>.</t>

<t>The structure of a SID with the REPLACE-C-SID flavor is shown in <xref target="fig-replace-struct"/>. The same structure is also that of the C-SID container for REPLACE-C-SID in fully formed 128-bit SID format.</t>

<figure title="Structure of a REPLACE-C-SID flavor SID (scaled for a 48-bit Locator-Block, 32-bit combined Locator-Node and Function, and 48-bit Argument)" anchor="fig-replace-struct"><artwork><![CDATA[
+-------------------------------------------------------------------+
|     Locator-Block      |  Locator-Node  |        Argument         |
|                        |   + Function   |                         |
+-------------------------------------------------------------------+
 <-------- LBL ---------> <---- LNFL ----> <--------- AL ---------->
]]></artwork></figure>

<t>The structure of a C-SID container for REPLACE-C-SID in packed format is shown in <xref target="fig-replace-container"/>.</t>

<figure title="Structure of a C-SID container for REPLACE-C-SID using a 32-bit C-SID length (K = 4)" anchor="fig-replace-container"><artwork><![CDATA[
+-------------------------------------------------------------------+
|  Fourth C-SID  |  Third C-SID   |  Second C-SID  |  First C-SID   |
|  (position 0)  |  (position 1)  |  (position 2)  |  (position 3)  |
+-------------------------------------------------------------------+
 <---- LNFL ----> <---- LNFL ----> <---- LNFL ----> <---- LNFL ---->
]]></artwork></figure>

<t>The RECOMMENDED Locator-Block lengths (LBL) for REPLACE-C-SID flavor SIDs are 48, 56, 64, 72, or 80 bits, depending on the needs of the operator.</t>

<t>The REPLACE-C-SID flavor supports both 16- and 32-bit C-SID lengths (LNFL). A C-SID length of 32-bit is RECOMMENDED.</t>

<t>Any other Locator-Block and C-SID length selection is possible, but may lead to suboptimal C-SID encoding in the C-SID containers (e.g., presence of padding bits).</t>

<t>The Argument length (AL) for REPLACE-C-SID flavor SIDs is equal to 128-LBL-LNFL. The index value is encoded in the least significant X bits of the Argument, where X is computed as ceil(log_2(128/LNFL)).</t>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as a SID with the REPLACE-C-SID flavor, the SR segment endpoint node applies the procedure specified in the one following subsection that corresponds to the SID behavior. If the SID also has the PSP, USP, or USD flavor, the procedure is modified as described in <xref target="sec-replace-flavors"/>.</t>

<t>At high level, at the start of a C-SID sequence using the REPLACE-C-SID flavor, the first C-SID container in fully formed 128-bit SID format is copied to the Destination Address of the IPv6 header. Then, for any SID with the REPLACE-C-SID flavor, the SR segment endpoint node determines the next SID of the SID list as follows. When an SRH is present, the SR segment endpoint node decrements the index value in the Argument of the active SID if the index value is not 0 or, if it is 0, decrements the Segments Left value in the SRH and sets the index value in the Argument of the active SID to K-1. The updated index value indicates the position of the next C-SID within the C-SID container in packed format at the &quot;Segment List&quot; index &quot;Segments Left&quot; in the SRH. The SR segment endpoint node then constructs the next SID by copying this next C-SID to the bits that immediately follow the Locator-Block in the Destination Address field of the IPv6 header, thus overwriting the active SID Locator-Node and Function with those of the next C-SID. If no SRH is present, the SR segment endpoint node ignores the index value in the SID Argument (except End.DT2M, see <xref target="sec-replace-enddx"/>) and processes the upper-layer header as per <xref target="RFC8986"/>. The C-SID sequence ends with a last C-SID in the last C-SID container that does not have the REPLACE-C-SID flavor, or with the special C-SID value 0, or when reaching the end of the segment list, whichever comes first.</t>

<section anchor="sec-replace-end"><name>End with REPLACE-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End SID with the REPLACE-C-SID flavor, the SRH processing described in Section 4.1 of <xref target="RFC8986"/> is executed with the following modifications.</t>

<t>Line S02 of SRH processing in Section 4.1 of <xref target="RFC8986"/> is replaced as follows.</t>

<figure><artwork><![CDATA[
S02.   If (Segments Left == 0 and (DA.Arg.Index == 0 or
           Segment List[0][DA.Arg.Index-1] == 0)) {
]]></artwork></figure>

<t>Lines S09 to S15 are replaced by the following pseudo code.</t>

<figure><artwork><![CDATA[
R01. If (DA.Arg.Index != 0) {
R02.   If ((Last Entry > max_LE) or (Segments Left > Last Entry)) {
R03.     Send an ICMP Parameter Problem to the Source Address,
           Code 0 (Erroneous header field encountered),
           Pointer set to the Segments Left field,
           interrupt packet processing and discard the packet.
R04.   }
R05.   Decrement DA.Arg.Index by 1.
R06.   If (Segment List[Segments Left][DA.Arg.Index] == 0) {
R07.     Decrement Segments Left by 1.
R08.     Decrement IPv6 Hop Limit by 1.
R09.     Update IPv6 DA with Segment List[Segments Left]
R10.     Submit the packet to the egress IPv6 FIB lookup for
          transmission to the new destination.
R11.   }
R12. } Else {
R13.   If((Last Entry > max_LE) or (Segments Left > Last Entry+1)){
R14.     Send an ICMP Parameter Problem to the Source Address,
           Code 0 (Erroneous header field encountered),
           Pointer set to the Segments Left field,
           interrupt packet processing and discard the packet.
R15.   }
R16.   Decrement Segments Left by 1.
R17.   Set DA.Arg.Index to (floor(128/LNFL) - 1).
R18. }
R19. Decrement IPv6 Hop Limit by 1.
R20. Write Segment List[Segments Left][DA.Arg.Index] into the bits
       [LBL..LBL+LNFL-1] of the Destination Address of the IPv6
       header.
R21. Submit the packet to the egress IPv6 FIB lookup for
       transmission to the new destination.
]]></artwork></figure>

<aside>
  <t>Notes:</t>

  <t><list style="symbols">
    <t><spanx style="verb">DA.Arg.Index</spanx> identifies the bits <spanx style="verb">[(128-ceil(log_2(128/LNFL)))..127]</spanx> in the Destination Address of the IPv6 header.</t>
    <t><spanx style="verb">Segment List[Segments Left][DA.Arg.Index]</spanx> identifies the bits <spanx style="verb">[DA.Arg.Index*LNFL..(DA.Arg.Index+1)*LNFL-1]</spanx> in the SRH Segment List entry at index Segments Left.</t>
  </list></t>
</aside>

<t>The upper-layer header processing described in Section 4.1.1 of <xref target="RFC8986"/> is unchanged.</t>

<t>A rendering of the complete pseudocode is provided in <xref target="sec-replace-end-complete"/>.</t>

</section>
<section anchor="sec-replace-endx"><name>End.X with REPLACE-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.X SID with the REPLACE-C-SID flavor, the procedure described in Section 4.2 of <xref target="RFC8986"/> is executed with the following modifications.</t>

<t>The pseudocode in <xref target="sec-replace-end"/> of this document is modified by replacing lines R10 and R21 as shown below.</t>

<figure><artwork><![CDATA[
R10. Submit the packet to the IPv6 module for transmission to the
       new destination via a member of J.
]]></artwork></figure>

<figure><artwork><![CDATA[
R21. Submit the packet to the IPv6 module for transmission to the
       new destination via a member of J.
]]></artwork></figure>

<aside>
  <t>Note: the variable J is defined in Section 4.2 of <xref target="RFC8986"/>.</t>
</aside>

<t>The SRH processing in Section 4.2 of <xref target="RFC8986"/> is replaced with the resulting pseudocode. The upper-layer header processing is unchanged.</t>

<t>A rendering of the complete pseudocode is provided in <xref target="sec-replace-endx-complete"/>.</t>

</section>
<section anchor="sec-replace-endt"><name>End.T with REPLACE-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.T SID with the REPLACE-C-SID flavor, the procedure described in Section 4.3 of <xref target="RFC8986"/> is executed with the following modifications.</t>

<t>The pseudocode in <xref target="sec-replace-end"/> of this document is modified by replacing lines R10 and R21 as shown below.</t>

<figure><artwork><![CDATA[
R10.1. Set the packet's associated FIB table to T.
R10.2. Submit the packet to the egress IPv6 FIB lookup for
         transmission to the new destination.
]]></artwork></figure>

<figure><artwork><![CDATA[
R21.1. Set the packet's associated FIB table to T.
R21.2. Submit the packet to the egress IPv6 FIB lookup for
         transmission to the new destination.
]]></artwork></figure>

<aside>
  <t>Note: the variable T is defined in Section 4.3 of <xref target="RFC8986"/>.</t>
</aside>

<t>The SRH processing in Section 4.3 of <xref target="RFC8986"/> is replaced with the resulting pseudocode. The upper-layer header processing is unchanged.</t>

<t>A rendering of the complete pseudocode is provided in <xref target="sec-replace-endt-complete"/>.</t>

</section>
<section anchor="sec-replace-endb6"><name>End.B6.Encaps with REPLACE-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.B6.Encaps SID with the REPLACE-C-SID flavor, the procedure described in Section 4.13 of <xref target="RFC8986"/> is executed with the following modifications.</t>

<t>The pseudocode in <xref target="sec-replace-end"/> of this document is modified by replacing lines R10 and R21 as shown below.</t>

<figure><artwork><![CDATA[
R10.1. Push a new IPv6 header with its own SRH containing B.
R10.2. Set the outer IPv6 SA to A.
R10.3. Set the outer IPv6 DA to the first SID of B.
R10.4. Set the outer Payload Length, Traffic Class, Flow Label,
         Hop Limit, and Next Header fields.
R10.5. Submit the packet to the egress IPv6 FIB lookup for
         transmission to the next destination.
]]></artwork></figure>

<figure><artwork><![CDATA[
R21.1. Push a new IPv6 header with its own SRH containing B.
R21.2. Set the outer IPv6 SA to A.
R21.3. Set the outer IPv6 DA to the first SID of B.
R21.4. Set the outer Payload Length, Traffic Class, Flow Label,
         Hop Limit, and Next Header fields.
R21.5. Submit the packet to the egress IPv6 FIB lookup for
         transmission to the next destination.
]]></artwork></figure>

<aside>
  <t>Note: the variables A and B, as well as the values of the Payload Length, Traffic Class, Flow Label, Hop Limit, and Next Header are defined in Section 4.13 of <xref target="RFC8986"/>.</t>
</aside>

<t>The SRH processing in Section 4.13 of <xref target="RFC8986"/> is replaced with the resulting pseudocode. The upper-layer header processing is unchanged.</t>

<t>A rendering of the complete pseudocode is provided in <xref target="sec-replace-endb6-complete"/>.</t>

</section>
<section anchor="sec-replace-endb6red"><name>End.B6.Encaps.Red with REPLACE-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.B6.Encaps.Red SID with the REPLACE-C-SID flavor, the procedure described in Section 4.14 of <xref target="RFC8986"/> is executed with the same modifications as in <xref target="sec-replace-endb6"/> of this document.</t>

</section>
<section anchor="sec-replace-endbm"><name>End.BM with REPLACE-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.BM SID with the REPLACE-C-SID flavor, the procedure described in Section 4.15 of <xref target="RFC8986"/> is executed with the following modifications.</t>

<t>The pseudocode in <xref target="sec-replace-end"/> of this document is modified by replacing lines R10 and R21 as shown below.</t>

<figure><artwork><![CDATA[
R10.1. Push the MPLS label stack for B.
R10.2. Submit the packet to the MPLS engine for transmission.
]]></artwork></figure>

<figure><artwork><![CDATA[
R21.1. Push the MPLS label stack for B.
R21.2. Submit the packet to the MPLS engine for transmission.
]]></artwork></figure>

<aside>
  <t>Note: the variable B is defined in Section 4.15 of <xref target="RFC8986"/>.</t>
</aside>

<t>The SRH processing in Section 4.15 of <xref target="RFC8986"/> is replaced with the resulting pseudocode. The upper-layer header processing is unchanged.</t>

<t>A rendering of the complete pseudocode is provided in <xref target="sec-replace-endbm-complete"/>.</t>

</section>
<section anchor="sec-replace-enddx"><name>End.DX and End.DT with REPLACE-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.DX6, End.DX4, End.DT6, End.DT4, End.DT46, End.DX2, End.DX2V, or End.DT2U SID with the REPLACE-C-SID flavor, the corresponding procedure described in Sections 4.4 through 4.11 of <xref target="RFC8986"/> is executed.</t>

<t>These SIDs differ from those defined in <xref target="RFC8986"/> by the presence of an Argument as part of the SID structure. The Argument value is effectively ignored by the SR segment endpoint node.</t>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.DT2M SID with the REPLACE-C-SID flavor, the procedure described in Section 4.12 of <xref target="RFC8986"/> is executed with the following modification.</t>

<t>The SR segment endpoint node obtains the value <spanx style="verb">Arg.FE2</spanx> from the 16 most significant bits of <spanx style="verb">DA.Argument</spanx> if <spanx style="verb">DA.Arg.Index</spanx> is zero, or from the 16 least significant bits of the next position in the current C-SID container (<spanx style="verb">Segment List[Segments Left][DA.Arg.Index-1]</spanx>) otherwise (<spanx style="verb">DA.Arg.Index</spanx> is non-zero).</t>

</section>
<section anchor="sec-replace-flavors"><name>Combination with PSP, USP, and USD flavors</name>

<t>PSP:
When combined with the REPLACE-C-SID flavor, the additional PSP flavor instructions defined in Section 4.16.1.2 of <xref target="RFC8986"/> are inserted after lines R09 and R20 of the pseudocode in <xref target="sec-replace-end"/>, and the first line of the inserted instructions after R20 is modified as follows.</t>

<figure><artwork><![CDATA[
R20.1.   If (Segments Left == 0 and (DA.Arg.Index == 0 or
             Segment List[0][DA.Arg.Index-1] == 0)) {
]]></artwork></figure>

<aside>
  <t>Note: <spanx style="verb">Segment List[Segments Left][DA.Arg.Index-1]</spanx> identifies the bits <spanx style="verb">[(DA.Arg.Index-1)*LNFL..DA.Arg.Index*LNFL-1]</spanx> in the SRH Segment List entry at index Segments Left.</t>
</aside>

<t>USP:
When combined with the REPLACE-C-SID flavor, the line S03 of the pseudocode in <xref target="sec-replace-end"/> are substituted by the USP flavor instructions S03.1 to S03.4 defined in Section 4.16.2 of <xref target="RFC8986"/>. Note that S03 is shown in the complete pseudocode in <xref target="sec-replace-end-complete"/>.</t>

<t>USD:
The USD flavor defined in Section 4.16.3 of <xref target="RFC8986"/> is unchanged when combined with the REPLACE-C-SID flavor.</t>

</section>
</section>
</section>
<section anchor="c-sid-allocation"><name>C-SID Allocation</name>

<t>The C-SID value of 0 is RESERVED. It is used to indicate the end of a C-SID container.</t>

<t>In order to efficiently manage the C-SID numbering space, a deployment MAY divide it into two non-overlapping sub-spaces: a Global Identifiers Block (GIB) and a Local Identifiers Block (LIB).</t>

<t>The C-SID values that are allocated from the GIB have a global semantic within the Locator-Block, while those that are allocated from the LIB have a local semantic on an SR segment endpoint node and within the scope of the Locator-Block.</t>

<t>The concept of LIB is applicable to SRv6 and specifically to its NEXT-C-SID and REPLACE-C-SID flavors. The shorter the C-SID, the more benefit the LIB brings.</t>

<t>The opportunity to use these sub-spaces, their size, and their C-SID allocation policy depends on the C-SID length relative to the size of the network (e.g., number of nodes, links, service routes). Some guidelines for a typical deployment scenario are provided in the below subsections.</t>

<section anchor="global-c-sid"><name>Global C-SID</name>

<t>A global C-SID is a C-SID allocated from the GIB.</t>

<t>A global C-SID identifies a segment defined at the Locator-Block level. The tuple (Locator-Block, C-SID) identifies the same segment across all nodes of the SR domain. A typical example is a prefix segment bound to the End behavior.</t>

<t>A node can have multiple global C-SIDs under the same Locator-Block (e.g., one per IGP flexible algorithm (<xref target="RFC9350"/>)). Multiple nodes may share the same global C-SID (e.g., anycast).</t>

</section>
<section anchor="local-c-sid"><name>Local C-SID</name>

<t>A local C-SID is a C-SID allocated from the LIB.</t>

<t>A local C-SID identifies a segment defined at the node level and within the scope of a particular Locator-Block. The tuple (Locator-Block, C-SID) identifies a different segment on each node of the SR domain. A typical example is a non-routed Adjacency segment bound to the End.X behavior.</t>

<t>Let N1 and N2 be two different physical nodes of the SR domain and I a local C-SID value, N1 may allocate value I to SID S1 and N2 may allocate the same value I to SID S2.</t>

</section>
<section anchor="sec-c-sid-lib-recommendation"><name>GIB/LIB Usage</name>

<t>GIB and LIB usage is a local implementation and/or configuration decision, however, some guidelines for determining usage for specific SID behaviors and recommendations are provided.</t>

<t>The GIB number space is shared among all SR segment endpoint nodes using SRv6 locators under a Block space.  The more SIDs assigned from this space, per node, the faster it is exhausted.  Therefore its use is prioritized for global segments, such as SIDs that identify a node.</t>

<t>The LIB number space is unique per node. Each node is able to fully utilize the entire LIB number space without consideration of assignments at other nodes.  Therefore its use is prioritized for local segments, such as SIDs that identify services (of which there may be many) at nodes, cross-connects, or adjacencies.</t>

<t>While a longer C-SID length permits more flexibility in which SID behaviors may be assigned from the GIB, it also reduces the compression efficiency.</t>

<t>Given the previous Locator-Block and C-SID length recommendations, the following GIB/LIB usage is RECOMMENDED:</t>

<t><list style="symbols">
  <t>NEXT-C-SID:
  <list style="symbols">
      <t>GIB: End</t>
      <t>LIB: End.X, End.T, End.DT4/6/46/2U/2M, End.DX4/6/2/2V (including large-scale pseudowire), End.B6.Encaps, End.B6.Encaps.Red, End.BM</t>
    </list></t>
  <t>REPLACE-C-SID:
  <list style="symbols">
      <t>GIB: End, End.X, End.T, End.DT4/6/46/2U/2M, End.DX4/6/2/2V, End.B6.Encaps, End.B6.Encaps.Red, End.BM</t>
      <t>LIB: End.DX2/2V for large-scale pseudowire</t>
    </list></t>
</list></t>

<t>Any other allocation is possible but may lead to a suboptimal use of the C-SID numbering space.</t>

</section>
<section anchor="sec-c-sid-installation"><name>Recommended Installation of C-SIDs in FIB</name>

<t>An SR segment endpoint node instantiating a NEXT-C-SID or REPLACE-C-SID flavor SID SHOULD install the corresponding FIB entry to match only the Locator and Function parts of the SID (i.e., with a prefix length of LBL + LNL + FL). Any other mean of identifying a locally instantiated SID is possible as long as it is compliant with Section 4.3 of <xref target="RFC8754"/> and accepts all valid Argument values for the SID.</t>

<t>In addition, an SR segment endpoint node instantiating NEXT-C-SID flavor SIDs from both GIB and LIB MAY install combined &quot;Global + Local&quot; FIB entries to match a sequence of global and local C-SIDs in a single LPM lookup.</t>

<t>For example, let us consider an SR segment endpoint node 10 instantiating the following two NEXT-C-SID flavor SIDs according to the C-SID length, Locator-Block length, and GIB/LIB recommendations in this section.</t>

<t><list style="symbols">
  <t><spanx style="verb">2001:db8:b1:10::</spanx> bound to the End behavior with the NEXT-C-SID flavor is instantiated from GIB with
  <list style="symbols">
      <t>Locator-Block length (LBL) = 48 (Locator-Block value <spanx style="verb">0x20010db800b1</spanx>),</t>
      <t>Locator-Node length (LNL) = 16 (Locator-Node value <spanx style="verb">0x0010</spanx>),</t>
      <t>Function length (FL) = 0, and</t>
      <t>Argument length (AL) = 64.</t>
    </list></t>
  <t><spanx style="verb">2001:db8:b1:f123::</spanx> bound to the End.X behavior for its local IGP adjacency <spanx style="verb">123</spanx> with the NEXT-C-SID flavor is instantiated from LIB with
  <list style="symbols">
      <t>Locator-Block length (LBL) = 48 (Locator-Block value <spanx style="verb">0x20010db800b1</spanx>),</t>
      <t>Locator-Node length (LNL) = 0,</t>
      <t>Function length (FL) = 16 (Function value <spanx style="verb">0xf123</spanx>), and</t>
      <t>Argument length (AL) = 64.</t>
    </list></t>
</list></t>

<t>For SID <spanx style="verb">2001:db8:b1:10::</spanx>, Node 10 would install the FIB entry <spanx style="verb">2001:db8:b1:10::/64</spanx> bound the End SID with the NEXT-C-SID flavor.</t>

<t>For SID <spanx style="verb">2001:db8:b1:f123::</spanx>, Node 10 would install the FIB entry <spanx style="verb">2001:db8:b1:f123::/64</spanx> bound the End.X SID for adjacency <spanx style="verb">123</spanx> with the NEXT-C-SID flavor.</t>

<t>In addition, Node 10 may also install the combined FIB entry <spanx style="verb">2001:db8:b1:10:f123::/80</spanx> bound the End.X SID for adjacency <spanx style="verb">123</spanx> with the NEXT-C-SID flavor.</t>

<t>As another example, let us consider an SR segment endpoint node 20 instantiating the following two REPLACE-C-SID flavor SIDs according to the C-SID length, Locator-Block length, and GIB/LIB recommendations in this section.</t>

<t><list style="symbols">
  <t><spanx style="verb">2001:db8:b2:20:1::</spanx> from GIB with Locator-Block length (LBL) = 48, Locator-Node length (LNL) = 16, Function length (FL) = 16, Argument length (AL) = 48, and bound to the End behavior with the REPLACE-C-SID flavor.</t>
  <t><spanx style="verb">2001:db8:b2:20:123::</spanx> from GIB with Locator-Block length (LBL) = 48, Locator-Node length (LNL) = 16, Function length (FL) = 16, Argument length (AL) = 48, and bound to the End.X behavior for its local IGP adjacency <spanx style="verb">123</spanx> with the REPLACE-C-SID flavor.</t>
</list></t>

<t>For SID <spanx style="verb">2001:db8:b2:20:1::</spanx>, Node 20 would install the FIB entry <spanx style="verb">2001:db8:b2:20:1::/80</spanx> bound the End SID with the REPLACE-C-SID flavor.</t>

<t>For SID <spanx style="verb">2001:db8:b2:20:123::</spanx>, Node 20 would install the FIB entry <spanx style="verb">2001:db8:b2:20:123::/80</spanx> bound the End.X SID for adjacency <spanx style="verb">123</spanx> with the REPLACE-C-SID flavor.</t>

</section>
</section>
<section anchor="sec-source-node"><name>SR Source Node</name>

<t>An SR source node may learn from a control plane protocol (see <xref target="sec-control-plane"/>) or local configuration the SIDs that it can use in a segment list, along with their respective SR segment endpoint behavior, flavors, structure, and any other relevant attribute (e.g., the set of L3 adjacencies associated with an End.X SID).</t>

<section anchor="segment-validation"><name>Segment Validation</name>

<t>An SR source node MUST validate all SIDs defined in this document that it uses as part of a segment list, regardless of whether the segment list is explicitly configured, locally computed, or advertised by a controller (e.g., via BGP <xref target="I-D.ietf-idr-segment-routing-te-policy"/> or PCEP <xref target="I-D.ietf-pce-segment-routing-ipv6"/>).</t>

<t>A SID of this document is valid if it is associated with a valid SID structure.</t>

<t>The structure of a SID is valid if <strong>all</strong> the following conditions are met.</t>

<t><list style="symbols">
  <t>The Locator-Block length is not 0.</t>
  <t>The sum of the Locator-Node length and Function length is not 0.</t>
  <t>The Argument length is equal to 128-LBL-LNL-FL.</t>
</list></t>

<t>An SR source node MUST NOT include an invalid SID in a segment list. If an explicitly configured or advertised segment list (e.g., from a controller) contains an invalid SID, the segment list MUST be declared invalid (<xref target="RFC9256"/>).</t>

<t><xref target="sec-control-plane"/> discusses how the SIDs of this document and their structure can be advertised to the SR source node through various control plane protocols.</t>

</section>
<section anchor="segment-list-compression"><name>Segment List Compression</name>

<t>An SR source node MAY compress a segment list when it includes NEXT-C-SID and/or REPLACE-C-SID flavor SIDs in order to reduce the packet header length.</t>

<t>It is out of the scope of this document to describe the mechanism through which an uncompressed segment list is derived. As a general guidance for implementation or future specification, such a mechanism should aim to select the combination of SIDs that would result in the shortest compressed segment list. For example, by selecting a C-SID flavor SID over an equivalent non-C-SID flavor SID or by consistently selecting SIDs of the same C-SID flavor within each routing domain.</t>

<t>The segment list that the SR source node pushes onto the packet MUST comply with the rules in <xref target="sec-source-next"/> and <xref target="sec-source-replace"/> and result in a path equivalent to the original segment list.</t>

<t>If an SR source node chooses to compress the segment list, one method is described below for illustrative purposes. Any other method producing a compressed segment list of equal or shorter length than the uncompressed segment list is compliant.</t>

<t>This method walks the uncompressed segment list and compresses each series of consecutive NEXT-C-SID flavor SIDs and each series of consecutive REPLACE-C-SID flavor SIDs.</t>

<t><list style="symbols">
  <t>When the compression method encounters a series of one or more consecutive compressible NEXT-C-SID flavor SIDs, it compresses the series as follows. A SID with the NEXT-C-SID flavor is compressible if its structure is known to the SR source node and its Argument value is 0.</t>
</list></t>

<figure><artwork><![CDATA[
S01. Initialize a C-SID container equal to the first SID in the
       series, and initialize the remaining capacity of the C-SID
       container to the AL of that SID
S02. For each subsequent SID in the series {
S03.   If the current SID Locator-Block matches that of the C-SID
         container and the current SID LNFL is lower than or equal to
         the remaining capacity of the C-SID container {
S04.     Copy the current SID Locator-Node and Function to the most
           significant remaining Argument bits of the C-SID container
           and decrement the remaining capacity by LNFL
S05.   } Else {
S06.     Push the C-SID container onto the compressed segment list
S07.     Initialize a new C-SID container equal to the current SID in
           the series, and initialize the remaining capacity of the
           C-SID container to the AL of that SID
S08.   } // End If
S09. } // End For
S10. If at least one SID remains in the uncompressed segment list
       (following the series of compressible NEXT-C-SID flavor SIDs){
S11.   Set S to the next SID in the uncompressed segment list
S12.   If S is advertised with a SID structure, and the Locator-Block
         of S matches that of the C-SID container, and the sum of the
         Locator-Node, Function, and Argument length of S is lower
         than or equal to the remaining capacity of the C-SID
         container {
S13.     Copy the Locator-Node, Function, and Argument of S to the
           most significant remaining Argument bits of the C-SID
           container
S14.   } // End If
S15. } // End If
S16. Push the C-SID container onto the compressed segment list
]]></artwork></figure>

<t><list style="symbols">
  <t>When the compression method encounters a series of REPLACE-C-SID flavor SIDs of the same C-SID length in the uncompressed segment list, it compresses the series as per the following high-level pseudo code. A compression checking function ComCheck(F, S) is defined to check if two SIDs F and S share the same SID structure and Locator-Block value, and if S has either no Argument or an Argument with value 0. If the check passes, then ComCheck(F,S) returns true.</t>
</list></t>

<figure><artwork><![CDATA[
S01. Initialize the first C-SID container in full SID format equal to
       the first SID in the series
S02. Initialize the second C-SID container in packed format if there
       are more than one SIDs, and initialize the remaining capacity
       of the C-SID container to 128 bits
S03. For each subsequent SID in the uncompressed segment list {
S04.   Set S to the current SID in the uncompressed segment list
S05.   If ComCheck(First SID, S) {
S06.     If the LNFL of S is lower than or equal to
           the remaining capacity of the C-SID container {
S07.       Copy the Locator-Node and Function of S to the least
             significant remaining bits of the C-SID container
             and decrement the remaining capacity by LNFL  // Note
S08.     } Else {
S09.       Push the C-SID container onto the compressed segment list
S10.       Initialize a new C-SID container in packed format with all
             bits set to 0
S11        Copy the Locator-Node and Function of S to the least
             significant remaining bits of the C-SID container
             and decrement the remaining capacity by LNFL  // Note
S12.     }
S13.     If S is not a REPLACE-C-SID flavor SID, then break
S14.   } Else {
S15.     Break
S16.   } // End If
S17. } // End For
S18. Push the C-SID container (if it is not empty) onto the
       compressed segment list
]]></artwork></figure>

<aside>
  <t>Note: When the last C-SID is an End.DT2M SID with the REPLACE-C-SID flavor, if there is 0 or at least two C-SID positions left in the current C-SID container, the C-SID is encoded as described above and the value of the Arg.FE2 argument is placed in the 16 least significant bits of the next C-SID position. Otherwise (if there is only one C-SID position left in the current C-SID container), the current C-SID container is pushed onto the segment list (the value of the C-SID position 0 remains zero) and the End.DT2M SID with the REPLACE-C-SID flavor is encoded in full SID format with the value of the Arg.FE2 argument in the 16 most significant bits of the SID Argument.</t>
</aside>

<t><list style="symbols">
  <t>In all remaining cases (i.e., when the compression method encounters a SID in the uncompressed segment list that is not handled by any of the previous subroutines), it pushes this SID as is onto the compressed segment list.</t>
</list></t>

<t>Regardless of how a compressed segment list is produced, the SR source node writes it in the IPv6 packet as described in Section 4.1 of <xref target="RFC8754"/>. The text is reproduced below for reference.</t>

<blockquote>
  <t>A source node steers a packet into an SR Policy. If the SR Policy
results in a Segment List containing a single segment, and there is
no need to add information to the SRH flag or add TLV; the DA is set
to the single Segment List entry, and the SRH MAY be omitted.</t>

  <t>When needed, the SRH is created as follows:</t>

  <t>The Next Header and Hdr Ext Len fields are set as specified in
  <xref target="RFC8200"></xref>.</t>

  <t>The Routing Type field is set to 4.</t>

  <t>The DA of the packet is set with the value of the first segment.</t>

  <t>The first element of the SRH Segment List is the ultimate segment.
  The second element is the penultimate segment, and so on.</t>

  <t>The Segments Left field is set to n-1, where n is the number of
  elements in the SR Policy.</t>

  <t>The Last Entry field is set to n-1, where n is the number of
  elements in the SR Policy.</t>

  <t>TLVs (including HMAC) may be set according to their specification.</t>

  <t>The packet is forwarded toward the packet&#39;s Destination Address
  (the first segment).</t>

  <t>When a source does not require the entire SID list to be preserved
in the SRH, a reduced SRH may be used.</t>

  <t>A reduced SRH does not contain the first segment of the related SR
Policy (the first segment is the one already in the DA of the IPv6
header), and the Last Entry field is set to n-2, where n is the
number of elements in the SR Policy.</t>
</blockquote>

</section>
<section anchor="sec-source-next"><name>Rules for segment lists containing NEXT-C-SID flavor SIDs</name>

<t><list style="numbers">
  <t>If a Destination Option header would follow an SRH with a segment list of more than one segment compressed as a single NEXT-C-SID container, the SR source node MUST NOT omit the SRH.</t>
  <t>When the last Segment List entry (index 0) in the SRH is a C-SID container representing more than one segment, the PSP operation is performed at the segment preceding the first segment of this C-SID container in the segment list. If the PSP behavior should instead be performed at the penultimate segment along the path, the SR source node MUST NOT compress the ultimate segment of the segment list into a C-SID container.</t>
  <t>If a Destination Option header would follow an SRH with a last Segment List entry being a NEXT-C-SID container representing more than one segment, the SR source node MUST ensure that the PSP operation is not performed before the penultimate SR segment endpoint node along the path.</t>
</list></t>

</section>
<section anchor="sec-source-replace"><name>Rules for segment lists containing REPLACE-C-SID flavor SIDs</name>

<t><list style="numbers">
  <t>All SIDs compressed in a REPLACE-C-SID sequence MUST share the same Locator-Block and the same compression scheme.</t>
  <t>All SIDs except the last one in a C-SID sequence for REPLACE-C-SID MUST have the REPLACE-C-SID flavor. If the last C-SID container is fully filled (i.e., the last C-SID is at position 0 in the C-SID container) and the last SID in the C-SID sequence is not the last segment in the segment list, the last SID in the C-SID sequence MUST NOT have the REPLACE-C-SID flavor.</t>
  <t>When a REPLACE-C-SID flavor C-SID is present as the last SID in a container that is not the last Segment List entry (index 0) in the SRH, the next element in the segment list MUST be a REPLACE-C-SID container in packed format carrying at least one C-SID.</t>
</list></t>

<t>The SR source node determines the compression scheme of REPLACE-C-SID flavor SIDs as follows.</t>

<t>When receiving a SID advertisement for a REPLACE-C-SID flavor SID with LNL=16, FL=0, AL=128-LBL-NL-FL, and the value of the Argument is all 0, the SR source node marks both the SID and its locator as using 16-bit compression. All other SIDs allocated from this locator with LNL=16, FL=16, AL=128-LBL-NL-FL, and the value of the Argument is all 0 are also marked as using 16-bit compression. When receiving a SID advertisement for a REPLACE-C-SID flavor SID with LNFL=32, AL=128-LBL-NL-FL, and the value of the Argument is all 0, the SR source node marks both the SID and its locator as using 32-bit compression.</t>

</section>
<section anchor="sec-source-checksum"><name>Upper-Layer Checksums</name>

<t>The Destination Address used in the IPv6 pseudo-header (Section 8.1 of <xref target="RFC8200"/>) is that of the ultimate destination.</t>

<t>At the originating node, that address will be the Destination Address as it is expected to be received by the ultimate destination. When the last element in the compressed segment list is a C-SID container, this address can be obtained from the last element in the uncompressed segment list or by repeatedly applying the segment behavior as described in <xref target="sec-operations-icmp-error"/>. This applies regardless of whether an SRH in present in the IPv6 packet or omitted.</t>

<t>At the recipient(s), that address will be in the Destination Address field of the IPv6 header.</t>

</section>
</section>
<section anchor="inter-routing-domains-compression"><name>Inter Routing Domains Compression</name>

<t>Some SRv6 traffic may need to cross multiple routing domains, such as different Autonomous Systems (ASes) or different routing areas within an SR domain. Different routing domains may use different addressing schema and Locator-Blocks.</t>

<t>A property of a C-SID sequence is that all C-SIDs in the sequence share the same Locator-Block. Therefore, a segment list that spans across multiple routing domains using different Locator-Blocks may need a separate C-SID sequence for each domain.</t>

<t>This section defines an OPTIONAL solution to improve the efficiency of C-SID compression in multi-domain environments by enabling a C-SID sequence to combine C-SIDs having different Locator-Blocks.</t>

<t>The solution leverages two new SR segment endpoint behaviors, &quot;Endpoint with SRv6 Prefix Swap&quot; (&quot;End.PS&quot; for short) and &quot;Endpoint with L3 cross-connect and SRv6 Prefix Swap&quot; (&quot;End.XPS&quot; for short), that enable modifying the Locator-Block for the next C-SID in the C-SID sequence at the routing domain boundary.</t>

<section anchor="endps-prefix-swap"><name>End.PS: Prefix Swap</name>

<t>The End.PS behavior is a variant of the End behavior that modifies the Locator-Block of the active C-SID sequence. This document defines the End.PS behavior with the NEXT-C-SID flavor and the End.PS behavior with the REPLACE-C-SID flavor.</t>

<t>An End.PS SID is used to transition to a new Locator-Block when the routing domain boundary is on the SR segment endpoint node.</t>

<t>Each instance of an End.PS SID is associated with a target Locator-Block B2/m. The target Locator-Block is a local property of the End.PS SID on the SR segment endpoint node.</t>

<aside>
  <t>Note: a local SID property is an attribute associated with the SID when it is instantiated on the SR segment endpoint node. When the SR segment endpoint node identifies the destination address of a received packet as a locally instantiated SID, it also retrieves any local property associated with this SID. Other examples of local SID properties include the set of L3 adjacencies of an End.X SID (Section 4.2 of <xref target="RFC8986"/>) and the lookup table of an End.DT6 SID (Section 4.6 of <xref target="RFC8986"/>).</t>
</aside>

<t>The means by which an SR source node learns the target Locator-Block associated with an End.PS SID are outside the scope of this document. As examples, it could be learnt via configuration or using a signaling protocol.</t>

<section anchor="sec-next-endps"><name>End.PS with NEXT-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.PS SID with the NEXT-C-SID flavor and associated with the target Locator-Block B2/m, the SR segment endpoint node applies the procedure specified in <xref target="sec-next-end"/> with the lines N05 to N06 replaced as follows.</t>

<figure><artwork><![CDATA[
N05.1. Initialize an IPv6 address A equal to B2.
N05.2. Copy the value of DA.Argument into the bits [m..(m+AL-1)] of
         A.
N06.   Copy A to the Destination Address of the IPv6 header.
]]></artwork></figure>

</section>
<section anchor="sec-replace-endps"><name>End.PS with REPLACE-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.PS SID with the REPLACE-C-SID flavor and associated with the target Locator-Block B2/m, the SR segment endpoint node applies the procedure specified in <xref target="sec-replace-end"/> with the line R20 replaced as follows.</t>

<figure><artwork><![CDATA[
R20.1. Initialize an IPv6 address A equal to B2.
R20.2. Write Segment List[Segments Left][DA.Arg.Index] into the bits
         [m..m+LNFL-1] of the Destination Address of the IPv6 header.
R20.3. Copy A to the Destination Address of the IPv6 header.
]]></artwork></figure>

</section>
</section>
<section anchor="endxps-l3-cross-connect-and-prefix-swap"><name>End.XPS: L3 Cross-Connect and Prefix Swap</name>

<t>The End.XPS behavior is a variant of the End.X behavior that modifies the Locator-Block of the active C-SID sequence. This document defines the End.XPS behavior with the NEXT-C-SID flavor and the End.XPS behavior with the REPLACE-C-SID flavor.</t>

<t>An End.XPS SID is used to transition to a new Locator-Block when the routing domain boundary is on a link adjacent to the SR segment endpoint node.</t>

<t>Each instance of an End.XPS SID is associated with a target Locator-Block B2/m and a set, J, of one or more L3 adjacencies. The target Locator-Block and set of adjacencies are local properties of the End.XPS SID on the SR segment endpoint node.</t>

<t>The means by which an SR source node learns the target Locator-Block associated with an End.XPS SID are outside the scope of this document. As examples, it could be learnt via configuration or using a signaling protocol.</t>

<section anchor="sec-next-endxps"><name>End.XPS with NEXT-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.XPS SID with the NEXT-C-SID flavor and associated with the target Locator-Block B2/m, the SR segment endpoint node applies the procedure specified in <xref target="sec-next-endx"/> with the lines N05 to N06 (of the pseudocode in <xref target="sec-next-end"/>) replaced as follows.</t>

<figure><artwork><![CDATA[
N05.1. Initialize an IPv6 address A equal to B2.
N05.2. Copy the value of DA.Argument into the bits [m..(m+AL-1)] of
         A.
N06.   Copy A to the Destination Address of the IPv6 header.
]]></artwork></figure>

</section>
<section anchor="sec-replace-endxps"><name>End.XPS with REPLACE-C-SID</name>

<t>When processing an IPv6 packet that matches a FIB entry locally instantiated as an End.XPS SID with the REPLACE-C-SID flavor and associated with the target Locator-Block B2/m, the SR segment endpoint node applies the procedure specified in <xref target="sec-replace-endx"/> with the line R20 (of the pseudocode in <xref target="sec-replace-end"/>) replaced as follows.</t>

<figure><artwork><![CDATA[
R20.1. Initialize an IPv6 address A equal to B2.
R20.2. Write Segment List[Segments Left][DA.Arg.Index] into the bits
         [m..m+LNFL-1] of the Destination Address of the IPv6 header.
R20.3. Copy A to the Destination Address of the IPv6 header.
]]></artwork></figure>

</section>
</section>
</section>
<section anchor="sec-control-plane"><name>Control Plane</name>

<t>This document does not require any new extensions to routing protocols.</t>

<t>Section 8 of <xref target="RFC8986"/> provides an overview of the control plane protocols used for signaling of the SRv6 SIDs introduced by that document.
The SRv6 SIDs introduced by this document are advertised using the same SRv6 extensions for various routing protocols, such as</t>

<t><list style="symbols">
  <t>IS-IS <xref target="RFC9352"/></t>
  <t>OSPFv3 <xref target="RFC9513"/></t>
  <t>BGP <xref target="RFC9252"/>, <xref target="RFC9514"/>, <xref target="I-D.ietf-idr-segment-routing-te-policy"/>, <xref target="I-D.ietf-idr-bgp-ls-sr-policy"/></t>
  <t>PCEP <xref target="I-D.ietf-pce-segment-routing-ipv6"/></t>
</list></t>

<t>The SR segment endpoint node MUST set the SID Argument bits to 0 when advertising a locally instantiated SID of this document in the routing protocol (e.g., IS-IS <xref target="RFC9352"/>, OSPF <xref target="RFC9513"/>, or BGP-LS <xref target="RFC9514"/>).</t>

<t>Signaling the SRv6 SID Structure is REQUIRED for all the SIDs introduced in this document. It is used by an SR source node to compress a segment list as described in <xref target="sec-source-node"/>.
The node initiating the SID advertisement MUST set the length values in the SRv6 SID Structure to match the format of the SID on the SR segment endpoint node. For example, for a SID of this document instantiated from a /48 SRv6 SID block and a /64 Locator, and having a 16-bit Function, the SRv6 SID Structure advertisement carries the following values.</t>

<t><list style="symbols">
  <t>Locator-Block length: 48</t>
  <t>Locator-Node length: 16</t>
  <t>Function length: 16</t>
  <t>Argument length: 48 (= 128-48-16-16)</t>
</list></t>

<t>A local C-SID MAY be advertised in the control plane individually and/or in combination with a global C-SID instantiated on the same SR segment endpoint node, with the End behavior, and the same Locator-Block and flavor as the local C-SID. A combined global and local C-SID is advertised as follows.</t>

<t><list style="symbols">
  <t>The SID Locator-Block is that shared by the global and local C-SIDs</t>
  <t>The SID Locator-Node is that of global C-SID</t>
  <t>The SID Function is that of the local C-SID</t>
  <t>The SID Argument length is equal to 128-LBL-LNL-FL and the SID Argument value is 0</t>
  <t>All other attributes of the SID (e.g., endpoint behavior or algorithm) are those of the local C-SID</t>
</list></t>

<t>The local C-SID combined advertisement is needed in particular for control plane protocols mandating that the SID is a subnet of a locator advertised in the same protocol (e.g., Section 8 of <xref target="RFC9352"/> and Section 9 of <xref target="RFC9513"/> for advertising Adjacency SIDs in IS-IS and OSPFv3, respectively).</t>

<t>For a segment list computed by a controller and signaled to an SR source node (e.g., via BGP <xref target="I-D.ietf-idr-segment-routing-te-policy"/> or PCEP <xref target="I-D.ietf-pce-segment-routing-ipv6"/>), the controller provides the ordered segment list comprising the uncompressed SIDs, with their respective behavior and structure, to the SR source node. The SR source node may then compress the segment list as described in <xref target="sec-source-node"/>.</t>

<t>When a node that does not support this specification receives an advertisement of a SID of this document, it handles it as described in the corresponding control plane specification (e.g., Sections 7.2, 8.1, and 8.2 of <xref target="RFC9352"/>, Sections 8, 9.1, and 9.2 of <xref target="RFC9513"/>, and Section 3.1 of <xref target="RFC9252"/>).</t>

</section>
<section anchor="operational-considerations"><name>Operational Considerations</name>

<section anchor="pinging-a-sid"><name>Pinging a SID</name>

<t>An SR source node may ping an SRv6 SID by sending an ICMPv6 echo request packet destined to the SRv6 SID, with or without a segment list. This operation is illustrated in Appendix A.1.2 of <xref target="RFC9259"/>.</t>

<t>When pinging a SID of this document without a segment list, the SR source node places the SID in the destination address of the ICMPv6 echo request and MUST set the Argument of the SID to 0. The Argument value 0 allows the SID SR segment endpoint node (<xref target="sec-endpoint"/>) to identify itself as the ultimate destination of the packet and process the ICMPv6 payload. If the SR source node sets a non-zero Argument value, the SR segment endpoint node would instead attempt to determine the next destination of the packet.</t>

<t>When pinging a SID of this document via a segment list, the SR source node MUST construct the IPv6 packet as described in <xref target="sec-source-node"/> and compute the ICMPv6 checksum as described in <xref target="sec-source-checksum"/>.</t>

</section>
<section anchor="sec-operations-icmp-error"><name>ICMP Error Processing</name>

<t>When an IPv6 node encounters an error while processing a packet, it may report that error by sending an IPv6 error message to the packet source with an enclosed copy of the invoking packet. For the source of an invoking packet to process the ICMP error message, the ultimate destination address of the IPv6 header may be required.</t>

<t>Section 5.4 of <xref target="RFC8754"/> defines the logic that an SR source node follows to determine the ultimate destination of an invoking packet containing an SRH.</t>

<t>For an SR source node that supports the compressed segment list encoding defined in this document, the logic to determine the ultimate destination is generalized as follows.</t>

<t><list style="symbols">
  <t>If the destination address of the invoking IPv6 packet matches a known SRv6 SID, modify the invoking IPv6 packet by applying the SID behavior associated with the matched SRv6 SID;</t>
  <t>Repeat until the application of the SID behavior would result in the processing of the upper-layer header.</t>
</list></t>

<t>The destination address of the resulting IPv6 packet may be used as the ultimate destination of the invoking IPv6 packet.</t>

<t>Since the SR source node that needs to determine the ultimate destination is the same node that originally built the segment list in the invoking packet, it is able to perform this operation for all the SIDs in the packet.</t>

</section>
</section>
<section removeInRFC="true" anchor="implementation-status"><name>Implementation Status</name>

<t>RFC-Editor: Please clean up the references cited by this section before publication.</t>

<t>This section records the status of known implementations of the
protocol defined by this specification at the time of posting of
this Internet-Draft, and is based on a proposal described in
<xref target="RFC7942"/>.  The description of implementations in this section is
intended to assist the IETF in its decision processes in
progressing drafts to RFCs.  Please note that the listing of any
individual implementation here does not imply endorsement by the
IETF.  Furthermore, no effort has been spent to verify the
information presented here that was supplied by IETF contributors.
This is not intended as, and must not be construed to be, a
catalog of available implementations or their features.  Readers
are advised to note that other implementations may exist.</t>

<t>According to <xref target="RFC7942"/>, &quot;this will allow reviewers and working
groups to assign due consideration to documents that have the
benefit of running code, which may serve as evidence of valuable
experimentation and feedback that have made the implemented
protocols more mature.  It is up to the individual working groups
to use this information as they see fit&quot;.</t>

<t>This section is provided in compliance with the SPRING working group policies (<xref target="SPRING-WG-POLICIES"/>).</t>

<section anchor="cisco-systems"><name>Cisco Systems</name>

<t>Cisco Systems reported the following implementations of the SR segment endpoint node NEXT-C-SID flavor (<xref target="sec-next"/>) and the SR source node efficient SID-list encoding (<xref target="sec-source-node"/>) for NEXT-C-SID flavor SIDs. These are used as part of its SRv6 TI-LFA, micro-loop avoidance, and traffic engineering functionalities.</t>

<t><list style="symbols">
  <t>Cisco NCS 540 Series routers running IOS XR 7.3.x or above <xref target="IMPL-CISCO-NCS540"/></t>
  <t>Cisco NCS 560 Series routers running IOS XR 7.6.x or above <xref target="IMPL-CISCO-NCS560"/></t>
  <t>Cisco NCS 5500 Series routers running IOS XR 7.3.x or above <xref target="IMPL-CISCO-NCS5500"/></t>
  <t>Cisco NCS 5700 Series routers running IOS XR 7.5.x or above <xref target="IMPL-CISCO-NCS5700"/></t>
  <t>Cisco 8000 Series routers running IOS XR 7.5.x or above <xref target="IMPL-CISCO-8000"/></t>
  <t>Cisco ASR 9000 Series routers running IOS XR 7.5.x or above <xref target="IMPL-CISCO-ASR9000"/></t>
</list></t>

<t>At the time of this report, all the implementations listed above are in production and follow the specification in the latest version of this document, including all the &quot;MUST&quot; and &quot;SHOULD&quot; clauses for the NEXT-C-SID flavor.</t>

<t>This report was last updated on January 11, 2023.</t>

</section>
<section anchor="huawei-technologies"><name>Huawei Technologies</name>

<t>Huawei Technologies reported the following implementations of the SR segment endpoint node REPLACE-C-SID flavor (<xref target="sec-replace"/>).
These are used as part of its SRv6 TI-LFA, micro-loop avoidance, and traffic engineering functionalities.</t>

<t><list style="symbols">
  <t>Huawei ATN8XX,ATN910C,ATN980B routers running VRPV800R021C00 or above.</t>
  <t>Huawei CX600-M2 routers running VRPV800R021C00 or above.</t>
  <t>Huawei NE40E,ME60-X1X2,ME60-X3X8X16 routers running VRPV800R021C00 or above.</t>
  <t>Huawei NE5000E,NE9000 routers running VRPV800R021C00 or above.</t>
  <t>Huawei NCE-IP Controller running V1R21C00 or above.</t>
</list></t>

<t>At the time of this report, all the implementations listed above are in production and follow the specification in the latest version of this document, including all the &quot;MUST&quot; and &quot;SHOULD&quot; clauses for the REPLACE-C-SID flavor.</t>

<t>This report was last updated on January 11, 2023.</t>

</section>
<section anchor="nokia"><name>Nokia</name>

<t>Nokia reported the following implementations (<xref target="IMPL-NOKIA-20.10"/>) of the SR segment endpoint node NEXT-C-SID flavor (<xref target="sec-next"/>).  These are used as part of its shortest path forwarding (in algorithm 0 and Flex-Algo), remote and TI-LFA repair tunnel, and Traffic Engineering functionalities.</t>

<t><list style="symbols">
  <t>Nokia 7950 XRS 20/20e routers running SROS Release 22.10 or above</t>
  <t>Nokia 7750 SR-12e routers running SROS Release 22.10 or above</t>
  <t>Nokia 7750 SR-7/12 routers running SROS Release 22.10 or above</t>
  <t>Nokia 7750 SR-7s/14s routers running SROS Release 22.10 or above</t>
  <t>Nokia 7750 SR-1/1s/2s routers running SROS Release 22.10 or above</t>
</list></t>

<t>At the time of this report, all the implementations listed above are in production and follow the specification in the latest version of this document, including all the &quot;MUST&quot; and &quot;SHOULD&quot; clauses for the NEXT-C-SID flavor.</t>

<t>This report was last updated on February 3, 2023.</t>

</section>
<section anchor="arrcus"><name>Arrcus</name>

<t>Arrcus reported the following implementations of the SR segment endpoint node NEXT-C-SID flavor (<xref target="sec-next"/>). These are used as part of its SRv6 shortest path forwarding (in algorithm 0 and Flex-Algo),  TI-LFA, micro-loop avoidance and Traffic Engineering functionalities.</t>

<t><list style="symbols">
  <t>Arrcus running on Ufi Space routers S9510-28DC, S9710-76D, S9600-30DX and S9700-23D with ArcOS v5.2.1 or above</t>
  <t>Arrcus running n Ufi Space routers S9600-72XC and S9700-53DX with ArcOS v5.1.1D or above</t>
  <t>Arrcus running on Quanta router IXA and IXAE with ArcOS v5.1.1D or above</t>
</list></t>

<t>At the time of this report, all the implementations listed above are in production and follow the specification in the latest version of this document, including all the &quot;MUST&quot; and &quot;SHOULD&quot; clauses for the NEXT-C-SID flavor.</t>

<t>This report was last updated on March 11, 2023.</t>

</section>
<section anchor="juniper-networks"><name>Juniper Networks</name>

<t>Juniper Networks reported the following implementations of the SR segment endpoint node NEXT-C-SID flavor (<xref target="sec-next"/>). These are used as part of its SRv6 shortest path forwarding (in algorithm 0 and Flex-Algo), TI-LFA, micro-loop avoidance, and Traffic Engineering functionalities.</t>

<t>Juniper release 23.3 onwards supports this functionality.</t>

<t>At the time of this report, all the implementations listed above are in development and follow the specification in the latest version of this document, including all the &quot;MUST&quot; and &quot;SHOULD&quot; clauses for the NEXT-C-SID flavor.</t>

<t>This report was last updated on May 30, 2023.</t>

</section>
<section anchor="marvell"><name>Marvell</name>

<t>Marvell reported support in the Marvell Prestera Packet Processor for the SR segment endpoint node NEXT-C-SID flavor (<xref target="sec-next"/>) and REPLACE-C-SID flavor (<xref target="sec-replace"/>).</t>

<t>This report was last updated on February 15, 2023.</t>

</section>
<section anchor="broadcom"><name>Broadcom</name>

<t>Broadcom reported the following implementations of the SR segment endpoint node NEXT-C-SID flavor (<xref target="sec-next"/>) and REPLACE-C-SID flavor (<xref target="sec-replace"/>).  These are used as part of its SRv6 TI-LFA, micro-loop avoidance, and traffic engineering functionalities. All implementation of the following list is in general availability for customers using BCM SDK 6.5.26 or above.</t>

<t><list style="symbols">
  <t>88850 (Jericho2c+) series</t>
  <t>88690 (Jericho2) series</t>
  <t>88800 (Jericho2c) series</t>
  <t>88480 (Qunran2a) series</t>
  <t>88280 (Qunran2u) series</t>
  <t>88295 (Qunran2n) series</t>
  <t>88830 (Jericho2x) series</t>
</list></t>

<t>At the time of this report, all the implementations listed above are in production and follow the specification in the latest version of this document, including all the &quot;MUST&quot; and &quot;SHOULD&quot; clauses for the NEXT-C-SID and REPLACE-C-SID flavors.</t>

<t>For 78900 (Tomahawk) series-related support, please contact the Broadcom team.</t>

<t>This report was last updated on February 21, 2023.</t>

</section>
<section anchor="zte-corporation"><name>ZTE Corporation</name>

<t>ZTE Corporation reported the following implementations of the SR segment endpoint node REPLACE-C-SID flavor (<xref target="sec-replace"/>). These are used as part of its SRv6 TI-LFA, micro-loop avoidance, and traffic engineering functionalities.</t>

<t><list style="symbols">
  <t>ZTE M6000-18S(BRAS), M6000-8S Plus(BRAS) routers running V5.00.10.09 or above.</t>
  <t>ZTE M6000-18S(SR), M6000-8S Plus(SR) routers running V5.00.10.80 or above.</t>
  <t>ZTE T8000-18 routers running V5.00.10.07 or above.</t>
</list></t>

<t>This report was last updated on March 29, 2023.</t>

</section>
<section anchor="new-h3c-technologies"><name>New H3C Technologies</name>

<t>New H3C Technologies reported the following implementations of the SR segment endpoint node REPLACE-C-SID flavor (<xref target="sec-replace"/>). These are used as part of its SRv6 TI-LFA, micro-loop avoidance, and traffic engineering functionalities.</t>

<t><list style="symbols">
  <t>H3C CR16000-F, SR8800-X routers running Version 7.1.075 or above.</t>
  <t>H3C CR18000, CR19000 routers running Version 7.1.071 or above.</t>
</list></t>

<t>This report was last updated on March 29, 2023.</t>

</section>
<section anchor="ruijie-network"><name>Ruijie Network</name>

<t>Ruijie Network reported the following implementations of the SR segment endpoint node REPLACE-C-SID flavor (<xref target="sec-replace"/>). These are used as part of its SRv6 TI-LFA, micro-loop avoidance, and traffic engineering functionalities.</t>

<t><list style="symbols">
  <t>RUIJIE RG-N8018-R, RG-N8010-R routers running N8000-R_RGOS 12.8(3)B0801 or above.</t>
</list></t>

<t>This report was last updated on March 29, 2023.</t>

</section>
<section anchor="open-source"><name>Open Source</name>

<t>The authors found the following open source implementations of the SR segment endpoint node NEXT-C-SID flavor (<xref target="sec-next"/>).</t>

<t><list style="symbols">
  <t>The Linux kernel, version 6.1 <xref target="IMPL-OSS-LINUX"/></t>
  <t>The Software for Open Networking in the Cloud (SONiC), version 202212 <xref target="IMPL-OSS-SONIC"/>, and Switch Abstraction Interface (SAI), version  1.9.0 <xref target="IMPL-OSS-SAI"/></t>
  <t>The Vector Packet Processor (VPP), version 20.05 <xref target="IMPL-OSS-VPP"/></t>
  <t>A generic P4 implementation <xref target="IMPL-OSS-P4"/></t>
</list></t>

<t>The authors found the following open source implementations of the SR segment endpoint node REPLACE-C-SID flavor (<xref target="sec-replace"/>).</t>

<t><list style="symbols">
  <t>ONOS and P4 Programmable Switch based <xref target="IMPL-OSS-ONOS"/></t>
  <t>Open SRv6 Project <xref target="IMPL-OSS-OPEN-SRV6"/></t>
</list></t>

<t>This section was last updated on January 11, 2023.</t>

</section>
<section anchor="interoperability-reports"><name>Interoperability Reports</name>

<section anchor="bell-canada-ciena-2023"><name>Bell Canada / Ciena 2023</name>

<t>Bell Canada is currently evaluating interoperability between Ciena and Cisco implementations of the NEXT-C-SID flavor defined in this document. Further information will be added to this section when the evaluation is complete.</t>

</section>
<section anchor="eantc-2023"><name>EANTC 2023</name>

<t>In April 2023, the European Advanced Networking Test Center (EANTC) successfully validated multiple implementations of SRv6 NEXT-C-SID flavor (a.k.a., SRv6 uSID) <xref target="EANTC-23"/>.</t>

<t>The participating vendors included Arista, Arrcus, Cisco, Huawei, Juniper, Keysight, Nokia, and Spirent.</t>

</section>
<section anchor="china-mobile-2020"><name>China Mobile 2020</name>

<t>In November 2020, China Mobile successfully validated multiple interoperable implementations of the NEXT-C-SID and REPLACE-C-SID flavors defined in this document.</t>

<t>This testing covered two different implementations of the SRv6 endpoint flavors defined in this document:</t>

<t><list style="symbols">
  <t>Hardware implementation in Cisco ASR 9000 running IOS XR</t>
  <t>Software implementation in Cisco IOS XRv9000 virtual appliance</t>
  <t>Hardware implementation in Huawei NE40E and NE5000E running VRP</t>
</list></t>

<t>The interoperability testing consisted of a packet flow sent by an SR source node N0 via an SR traffic engineering policy with a segment list <spanx style="verb">&lt;S1, S2, S3, S4, S5, S6, S7&gt;</spanx>, where S1..S7 are SIDs instantiated on SR segment endpoint nodes N1..N7, respectively.</t>

<figure><artwork><![CDATA[
N0 --- N1 --- N2 --- N3 --- N4 --- N5 --- N6 --- N7
      (S1)   (S2)   (S3)   (S4)   (S5)   (S6)   (S7)
]]></artwork></figure>

<t><list style="symbols">
  <t>N0 is a generic packet generator.</t>
  <t>N1, N2, and N3 are Huawei routers.</t>
  <t>N4, N5, and N6 are Cisco routers.</t>
  <t>N7 is a generic traffic generator acting as a packet receiver.</t>
</list></t>

<t>The SR source node N0 steers the packets onto the SR policy by setting the IPv6 destination address and creating an SRH (as described in Section 4.1 of <xref target="RFC8754"/>) using a compressed segment list encoding. The length of the compressed segment list encoding varies for each scenario.</t>

<t>All SR segment endpoint nodes execute a variant of the End behavior: regular End behavior (as defined in Section 4.1 of <xref target="RFC8986"/>), End behavior with NEXT-C-SID flavor, and End behavior with REPLACE-C-SID flavor. The variant being used at each SR segment endpoint node varies for each scenario.</t>

<t>The interoperability was validated for the following scenarios:</t>

<t><strong>Scenario 1:</strong></t>

<t><list style="symbols">
  <t>S1 and S2 are associated with the End behavior with the REPLACE-C-SID flavor</t>
  <t>S3 is associated with the regular End behavior (no flavor)</t>
  <t>S4, S5, and S6 are associated with the End behavior with the NEXT-C-SID flavor</t>
  <t>The SR source node imposes a compressed segment list encoding of 3 SIDs.</t>
</list></t>

<t><strong>Scenario 2:</strong></t>

<t><list style="symbols">
  <t>S1, S2..., S6 are associated with the End behavior with the NEXT-C-SID flavor</t>
  <t>The SR source node imposes a compressed segment list encoding of 2 SIDs.</t>
</list></t>

<t><strong>Scenario 3:</strong></t>

<t><list style="symbols">
  <t>S1, S2..., S6 are associated with the End behavior with the REPLACE-C-SID flavor</t>
  <t>The SR source node imposes a compressed segment list encoding of 3 SIDs.</t>
</list></t>

</section>
</section>
</section>
<section anchor="sec-future"><name>Applicability to other SR Segment Endpoint Behaviors</name>

<t>Future documents may extend the applicability of the NEXT-C-SID and REPLACE-C-SID flavors to other SR segment endpoint behaviors.</t>

<t>For an SR segment endpoint behavior that can be used before the last position of a segment list, a C-SID flavor is defined by reproducing the same logic as described in <xref target="sec-next"/> and <xref target="sec-replace"/> of this document to determine the next segment in the segment list.</t>

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

<t>Section 8 of <xref target="RFC8402"/> discusses the security considerations for Segment Routing.</t>

<t>Section 5 of <xref target="RFC8754"/> describes the intra-SR-domain deployment model and how to secure it. Section 7 of <xref target="RFC8754"/> describes the threats applicable to SRv6 and how to mitigate them.</t>

<t>Section 9 of <xref target="RFC8986"/> discusses the security considerations applicable to the SRv6 network programming framework, as well as the SR source node and SR segment endpoint node behaviors that it defines.</t>

<t>This document introduces two new flavors for some of the SR segment endpoint behaviors defined in <xref target="RFC8986"/> and a method by which an SR source node may leverage the SIDs of these flavors to produce a compressed segment list.</t>

<t>An SR source node constructs an IPv6 packet with a compressed segment list as defined in Sections 3.1 and 4.1 of <xref target="RFC8754"/> and Section 5 of <xref target="RFC8986"/>. The paths that an SR source node may enforce using a compressed segment list are the same, from a topology and service perspective, as those that an SR source node could enforce using the SIDs of <xref target="RFC8986"/>.</t>

<t>An SR segment endpoint node processes an IPv6 packet matching a locally instantiated SID as defined in <xref target="RFC8986"/>, with the pseudocode modifications in Section 4 of this document. These modifications change how the SR segment endpoint node determines the next SID in the packet, but not the semantic of either the active or the next SID. For example, an adjacency segment instantiated with the End.X behavior remains an adjacency segment regardless of whether it uses the unflavored End.X behavior defined in Section 4.2 of <xref target="RFC8986"/> or a C-SID flavor of that behavior. This document does not introduce any new SID semantic.</t>

<t>Any other transit node processes the packet as described in Section 4.2 of <xref target="RFC8754"/>.</t>

<t>This document defines a new method of encoding the SIDs inside a segment list at the SR source node and decoding them at the SR segment endpoint node, but it does not change how the segment list itself is encoded in the IPv6 packet nor the semantic of any segment that it comprises. Therefore, this document is subject to the same security considerations that are discussed in <xref target="RFC8402"/>, <xref target="RFC8754"/>, and <xref target="RFC8986"/>.</t>

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

<section anchor="srv6-endpoint-behaviors"><name>SRv6 Endpoint Behaviors</name>

<t>This I-D. requests the IANA to update the reference of the following registrations from the &quot;SRv6 Endpoint Behaviors&quot; registry under the top-level &quot;Segment Routing&quot; registry-group (https://www.iana.org/assignments/segment-routing/) with the RFC number of this document once it is published, and transfer change control to the IETF.</t>

<texttable title="Registration List" anchor="tbl-iana-endpoint-behaviors">
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>43</c>
      <c>End with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>44</c>
      <c>End with NEXT-CSID &amp; PSP</c>
      <c>This I-D.</c>
      <c>45</c>
      <c>End with NEXT-CSID &amp; USP</c>
      <c>This I-D.</c>
      <c>46</c>
      <c>End with NEXT-CSID, PSP &amp; USP</c>
      <c>This I-D.</c>
      <c>47</c>
      <c>End with NEXT-CSID &amp; USD</c>
      <c>This I-D.</c>
      <c>48</c>
      <c>End with NEXT-CSID, PSP &amp; USD</c>
      <c>This I-D.</c>
      <c>49</c>
      <c>End with NEXT-CSID, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>50</c>
      <c>End with NEXT-CSID, PSP, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>52</c>
      <c>End.X with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>53</c>
      <c>End.X with NEXT-CSID &amp; PSP</c>
      <c>This I-D.</c>
      <c>54</c>
      <c>End.X with NEXT-CSID &amp; USP</c>
      <c>This I-D.</c>
      <c>55</c>
      <c>End.X with NEXT-CSID, PSP &amp; USP</c>
      <c>This I-D.</c>
      <c>56</c>
      <c>End.X with NEXT-CSID &amp; USD</c>
      <c>This I-D.</c>
      <c>57</c>
      <c>End.X with NEXT-CSID, PSP &amp; USD</c>
      <c>This I-D.</c>
      <c>58</c>
      <c>End.X with NEXT-CSID, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>59</c>
      <c>End.X with NEXT-CSID, PSP, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>85</c>
      <c>End.T with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>86</c>
      <c>End.T with NEXT-CSID &amp; PSP</c>
      <c>This I-D.</c>
      <c>87</c>
      <c>End.T with NEXT-CSID &amp; USP</c>
      <c>This I-D.</c>
      <c>88</c>
      <c>End.T with NEXT-CSID, PSP &amp; USP</c>
      <c>This I-D.</c>
      <c>89</c>
      <c>End.T with NEXT-CSID &amp; USD</c>
      <c>This I-D.</c>
      <c>90</c>
      <c>End.T with NEXT-CSID, PSP &amp; USD</c>
      <c>This I-D.</c>
      <c>91</c>
      <c>End.T with NEXT-CSID, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>92</c>
      <c>End.T with NEXT-CSID, PSP, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>93</c>
      <c>End.B6.Encaps with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>94</c>
      <c>End.B6.Encaps.Red with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>95</c>
      <c>End.BM with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>101</c>
      <c>End with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>102</c>
      <c>End with REPLACE-CSID &amp; PSP</c>
      <c>This I-D.</c>
      <c>103</c>
      <c>End with REPLACE-CSID &amp; USP</c>
      <c>This I-D.</c>
      <c>104</c>
      <c>End with REPLACE-CSID, PSP &amp; USP</c>
      <c>This I-D.</c>
      <c>105</c>
      <c>End.X with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>106</c>
      <c>End.X with REPLACE-CSID &amp; PSP</c>
      <c>This I-D.</c>
      <c>107</c>
      <c>End.X with REPLACE-CSID &amp; USP</c>
      <c>This I-D.</c>
      <c>108</c>
      <c>End.X with REPLACE-CSID, PSP &amp; USP</c>
      <c>This I-D.</c>
      <c>109</c>
      <c>End.T with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>110</c>
      <c>End.T with REPLACE-CSID &amp; PSP</c>
      <c>This I-D.</c>
      <c>111</c>
      <c>End.T with REPLACE-CSID &amp; USP</c>
      <c>This I-D.</c>
      <c>112</c>
      <c>End.T with REPLACE-CSID, PSP &amp; USP</c>
      <c>This I-D.</c>
      <c>114</c>
      <c>End.B6.Encaps with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>115</c>
      <c>End.BM with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>116</c>
      <c>End.DX6 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>117</c>
      <c>End.DX4 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>118</c>
      <c>End.DT6 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>119</c>
      <c>End.DT4 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>120</c>
      <c>End.DT46 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>121</c>
      <c>End.DX2 with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>122</c>
      <c>End.DX2V with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>123</c>
      <c>End.DT2U with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>124</c>
      <c>End.DT2M with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>127</c>
      <c>End.B6.Encaps.Red with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>128</c>
      <c>End with REPLACE-CSID &amp; USD</c>
      <c>This I-D.</c>
      <c>129</c>
      <c>End with REPLACE-CSID, PSP &amp; USD</c>
      <c>This I-D.</c>
      <c>130</c>
      <c>End with REPLACE-CSID, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>131</c>
      <c>End with REPLACE-CSID, PSP, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>132</c>
      <c>End.X with REPLACE-CSID &amp; USD</c>
      <c>This I-D.</c>
      <c>133</c>
      <c>End.X with REPLACE-CSID, PSP &amp; USD</c>
      <c>This I-D.</c>
      <c>134</c>
      <c>End.X with REPLACE-CSID, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>135</c>
      <c>End.X with REPLACE-CSID, PSP, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>136</c>
      <c>End.T with REPLACE-CSID &amp; USD</c>
      <c>This I-D.</c>
      <c>137</c>
      <c>End.T with REPLACE-CSID, PSP &amp; USD</c>
      <c>This I-D.</c>
      <c>138</c>
      <c>End.T with REPLACE-CSID, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>139</c>
      <c>End.T with REPLACE-CSID, PSP, USP &amp; USD</c>
      <c>This I-D.</c>
      <c>TBA</c>
      <c>End.PS with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>TBA</c>
      <c>End.PS with REPLACE-CSID</c>
      <c>This I-D.</c>
      <c>TBA</c>
      <c>End.XPS with NEXT-CSID</c>
      <c>This I-D.</c>
      <c>TBA</c>
      <c>End.XPS with REPLACE-CSID</c>
      <c>This I-D.</c>
</texttable>

</section>
</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>The authors would like to thank Kamran Raza, Xing Jiang, YuanChao Su, Han Li, Yisong Liu, Martin Vigoureux, Joel Halpern, and Tal Mizrahi for their insightful feedback and suggestions.</t>

<t>The authors would also like to thank Andrew Alston, Linda Dunbar, Adrian Farrel, and Boris Hassanov for their thorough review of this document.</t>

</section>


  </middle>

  <back>


    <references title='Normative References' anchor="sec-normative-references">

&RFC8200;
&RFC8402;
&RFC8754;
&RFC8986;
&RFC9256;
&RFC9259;
&RFC9350;
&RFC2119;
&RFC8174;


    </references>

    <references title='Informative References' anchor="sec-informative-references">

&RFC7942;
&RFC9252;
&RFC9352;
&RFC9513;
&RFC9514;
&I-D.ietf-6man-sids;
&I-D.ietf-idr-bgp-ls-sr-policy;
&I-D.ietf-idr-segment-routing-te-policy;
&I-D.ietf-pce-segment-routing-ipv6;
<reference anchor="SPRING-WG-POLICIES" target="https://wiki.ietf.org/en/group/spring/WG_Policies">
  <front>
    <title>SPRING Working Group Policies</title>
    <author >
      <organization>SPRING Working Group Chairs</organization>
    </author>
    <date year="2022" month="October" day="14"/>
  </front>
</reference>
<reference anchor="IMPL-CISCO-NCS540" target="https://www.cisco.com/c/en/us/td/docs/iosxr/ncs5xx/segment-routing/73x/b-segment-routing-cg-73x-ncs540/configure-srv6.html">
  <front>
    <title>Segment Routing Configuration Guide for Cisco NCS 540 Series Routers</title>
    <author >
      <organization>Cisco Systems</organization>
    </author>
    <date year="2022" month="November" day="02"/>
  </front>
</reference>
<reference anchor="IMPL-CISCO-NCS560" target="https://www.cisco.com/c/en/us/td/docs/iosxr/ncs560/segment-routing/76x/b-segment-routing-cg-76x-ncs560/m-configure-srv6-usid-ncs5xx.html">
  <front>
    <title>Segment Routing Configuration Guide for Cisco NCS 560 Series Routers</title>
    <author >
      <organization>Cisco Systems</organization>
    </author>
    <date year="2022" month="October" day="14"/>
  </front>
</reference>
<reference anchor="IMPL-CISCO-NCS5500" target="https://www.cisco.com/c/en/us/td/docs/iosxr/ncs5500/segment-routing/73x/b-segment-routing-cg-ncs5500-73x/configure-srv6-micro-sid.html">
  <front>
    <title>Segment Routing Configuration Guide for Cisco NCS 5500 Series Routers</title>
    <author >
      <organization>Cisco Systems</organization>
    </author>
    <date year="2022" month="November" day="06"/>
  </front>
</reference>
<reference anchor="IMPL-CISCO-NCS5700" target="https://www.cisco.com/c/en/us/td/docs/iosxr/ncs5500/segment-routing/75x/b-segment-routing-cg-ncs5500-75x/configure-srv6-micro-sid.html">
  <front>
    <title>Segment Routing Configuration Guide for Cisco NCS 5700 Series Routers</title>
    <author >
      <organization>Cisco Systems</organization>
    </author>
    <date year="2022" month="November" day="06"/>
  </front>
</reference>
<reference anchor="IMPL-CISCO-8000" target="https://www.cisco.com/c/en/us/td/docs/iosxr/cisco8000/segment-routing/75x/b-segment-routing-cg-cisco8000-75x/configuring-segment-routing-over-ipv6-srv6-micro-sids.html">
  <front>
    <title>Segment Routing Configuration Guide for Cisco 8000 Series Routers</title>
    <author >
      <organization>Cisco Systems</organization>
    </author>
    <date year="2022" month="November" day="04"/>
  </front>
</reference>
<reference anchor="IMPL-CISCO-ASR9000" target="https://www.cisco.com/c/en/us/td/docs/routers/asr9000/software/asr9k-r7-5/segment-routing/configuration/guide/b-segment-routing-cg-asr9000-75x/configure-srv6-micro-sid.html">
  <front>
    <title>Segment Routing Configuration Guide for Cisco ASR 9000 Series Routers</title>
    <author >
      <organization>Cisco Systems</organization>
    </author>
    <date year="2022" month="November" day="06"/>
  </front>
</reference>
<reference anchor="IMPL-NOKIA-20.10" target="https://documentation.nokia.com/sr/22-10/books/Segment%20Routing%20and%20PCE%20User%20Guide/segment-rout-with-ipv6-data-plane-srv6.html">
  <front>
    <title>Segment Routing and PCE User Guide</title>
    <author >
      <organization>Nokia</organization>
    </author>
    <date year="2022" month="December"/>
  </front>
</reference>
<reference anchor="IMPL-OSS-LINUX" target="https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=cec9d59e89362809f17f2d854faf52966216da13">
  <front>
    <title>Add NEXT-C-SID support for SRv6 End behavior</title>
    <author initials="P." surname="Abeni" fullname="Paolo Abeni">
      <organization></organization>
    </author>
    <date year="2022" month="September" day="20"/>
  </front>
</reference>
<reference anchor="IMPL-OSS-SONIC" target="https://github.com/sonic-net/SONiC/blob/master/doc/srv6/SRv6_uSID.md">
  <front>
    <title>SONiC uSID</title>
    <author initials="S." surname="Shah" fullname="Shitanshu Shah">
      <organization></organization>
    </author>
    <author initials="R." surname="Sudarshan" fullname="Reshma Sudarshan">
      <organization></organization>
    </author>
    <date year="2022" month="August" day="21"/>
  </front>
</reference>
<reference anchor="IMPL-OSS-SAI" target="https://github.com/opencomputeproject/SAI/pull/1231/commits/02e58d95ad966ca9efc24eb9e0c0fa10b21de2a4">
  <front>
    <title>Added new behaviors to support uSID instruction</title>
    <author initials="A." surname="Agrawal" fullname="Ashutosh Agrawal">
      <organization></organization>
    </author>
    <date year="2021" month="June" day="08"/>
  </front>
</reference>
<reference anchor="IMPL-OSS-VPP" target="https://s3-docs.fd.io/vpp/23.02/cli-reference/clis/clicmd_src_vnet_srv6.html">
  <front>
    <title>Srv6 cli reference</title>
    <author >
      <organization>FD.io</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="IMPL-OSS-P4" target="https://github.com/netgroup/p4-srv6-usid">
  <front>
    <title>SRv6 uSID (micro SID) implementation on P4</title>
    <author initials="S." surname="Salsano" fullname="Stefano Salsano">
      <organization></organization>
    </author>
    <author initials="A." surname="Tulumello" fullname="Angelo Tulumello">
      <organization></organization>
    </author>
    <date year="2021" month="January" day="03"/>
  </front>
</reference>
<reference anchor="IMPL-OSS-ONOS" target="https://wiki.opennetworking.org/display/COM/Stratum+CMCC+G-SRv6+Project">
  <front>
    <title>Stratum CMCC G-SRv6 Project</title>
    <author >
      <organization>Open Networking Foundation</organization>
    </author>
    <date year="2021" month="March" day="24"/>
  </front>
</reference>
<reference anchor="IMPL-OSS-OPEN-SRV6" target="http://opensrv6.org.cn/en/srv6-2/">
  <front>
    <title>Open SRv6 Project</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="EANTC-23" target="https://eantc.de/fileadmin/eantc/downloads/events/2023/EANTC-InteropTest2023-TestReport.pdf">
  <front>
    <title>Multi-Vendor MPLS SDN Interoperability Test Report</title>
    <author >
      <organization>European Advanced Networking Test Center (EANTC)</organization>
    </author>
    <date year="2023" month="April" day="18"/>
  </front>
</reference>


    </references>


<?line 1399?>

<section anchor="complete-pseudocodes"><name>Complete pseudocodes</name>

<t>The content of this section is purely informative rendering of the pseudocodes of <xref target="RFC8986"/> with the modifications in this document. This rendering may not be used as a reference.</t>

<section anchor="sec-next-end-complete"><name>End with NEXT-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
N01. If (DA.Argument != 0) {
N02.   If (IPv6 Hop Limit <= 1) {
N03.     Send an ICMP Time Exceeded message to the Source Address
           with Code 0 (Hop limit exceeded in transit),
           interrupt packet processing, and discard the packet.
N04.   }
N05.   Copy the value of DA.Argument into the bits [LBL..(LBL+AL-1)]
         of the Destination Address.
N06.   Set the bits [(LBL+AL)..127] of the Destination Address to
         zero.
N07.   Decrement IPv6 Hop Limit by 1.
N08.   Submit the packet to the egress IPv6 FIB lookup for
         transmission to the next destination.
N09. }
S02. If (Segments Left == 0) {
S03.   Stop processing the SRH, and proceed to process the next
         header in the packet, whose type is identified by
         the Next Header field in the routing header.
S04. }
S05. If (IPv6 Hop Limit <= 1) {
S06.   Send an ICMP Time Exceeded message to the Source Address
         with Code 0 (Hop limit exceeded in transit),
         interrupt packet processing, and discard the packet.
S07. }
S08. max_LE = (Hdr Ext Len / 2) - 1
S09. If ((Last Entry > max_LE) or (Segments Left > Last Entry+1)) {
S10.   Send an ICMP Parameter Problem to the Source Address
         with Code 0 (Erroneous header field encountered)
         and Pointer set to the Segments Left field,
         interrupt packet processing, and discard the packet.
S11. }
S12. Decrement IPv6 Hop Limit by 1.
S13. Decrement Segments Left by 1.
S14. Update IPv6 DA with Segment List[Segments Left].
S15. Submit the packet to the egress IPv6 FIB lookup for
       transmission to the new destination.
]]></artwork></figure>

<t>Before processing the Upper-Layer header or any IPv6 extension header other than Hop-by-Hop or Destination Option of a packet matching a FIB entry locally instantiated as an End SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
N01. If (DA.Argument != 0) {
N02.   If (IPv6 Hop Limit <= 1) {
N03.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
N04.   }
N05.   Copy the value of DA.Argument into the bits [LBL..(LBL+AL-1)]
         of the Destination Address.
N06.   Set the bits [(LBL+AL)..127] of the Destination Address to
         zero.
N07.   Decrement Hop Limit by 1.
N08.   Submit the packet to the egress IPv6 FIB lookup for
         transmission to the next destination.
N09. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. If (Upper-Layer header type is allowed by local configuration) {
S02.   Proceed to process the Upper-Layer header
S03. } Else {
S04.   Send an ICMP Parameter Problem to the Source Address
         with Code 4 (SR Upper-layer Header Error)
         and Pointer set to the offset of the Upper-Layer header,
         interrupt packet processing, and discard the packet.
S05. }
]]></artwork></figure>

</section>
<section anchor="sec-next-endx-complete"><name>End.X with NEXT-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.X SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
N01. If (DA.Argument != 0) {
N02.   If (IPv6 Hop Limit <= 1) {
N03.     Send an ICMP Time Exceeded message to the Source Address
           with Code 0 (Hop limit exceeded in transit),
           interrupt packet processing, and discard the packet.
N04.   }
N05.   Copy the value of DA.Argument into the bits [LBL..(LBL+AL-1)]
         of the Destination Address.
N06.   Set the bits [(LBL+AL)..127] of the Destination Address to
         zero.
N07.   Decrement IPv6 Hop Limit by 1.
N08.   Submit the packet to the IPv6 module for transmission to the
         new destination via a member of J.
N09. }
S02. If (Segments Left == 0) {
S03.   Stop processing the SRH, and proceed to process the next
         header in the packet, whose type is identified by
         the Next Header field in the routing header.
S04. }
S05. If (IPv6 Hop Limit <= 1) {
S06.   Send an ICMP Time Exceeded message to the Source Address
         with Code 0 (Hop limit exceeded in transit),
         interrupt packet processing, and discard the packet.
S07. }
S08. max_LE = (Hdr Ext Len / 2) - 1
S09. If ((Last Entry > max_LE) or (Segments Left > Last Entry+1)) {
S10.   Send an ICMP Parameter Problem to the Source Address
         with Code 0 (Erroneous header field encountered)
         and Pointer set to the Segments Left field,
         interrupt packet processing, and discard the packet.
S11. }
S12. Decrement IPv6 Hop Limit by 1.
S13. Decrement Segments Left by 1.
S14. Update IPv6 DA with Segment List[Segments Left].
S15. Submit the packet to the IPv6 module for transmission
       to the new destination via a member of J.
]]></artwork></figure>

<t>Before processing the Upper-Layer header or any IPv6 extension header other than Hop-by-Hop or Destination Option of a packet matching a FIB entry locally instantiated as an End.X SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
N01. If (DA.Argument != 0) {
N02.   If (IPv6 Hop Limit <= 1) {
N03.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
N04.   }
N05.   Copy the value of DA.Argument into the bits [LBL..(LBL+AL-1)]
         of the Destination Address.
N06.   Set the bits [(LBL+AL)..127] of the Destination Address to
         zero.
N07.   Decrement Hop Limit by 1.
N08.   Submit the packet to the IPv6 module for transmission to the
         new destination via a member of J.
N09. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.X SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. If (Upper-Layer header type is allowed by local configuration) {
S02.   Proceed to process the Upper-Layer header
S03. } Else {
S04.   Send an ICMP Parameter Problem to the Source Address
         with Code 4 (SR Upper-layer Header Error)
         and Pointer set to the offset of the Upper-Layer header,
         interrupt packet processing, and discard the packet.
S05. }
]]></artwork></figure>

</section>
<section anchor="sec-next-endt-complete"><name>End.T with NEXT-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.T SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
N01. If (DA.Argument != 0) {
N02.   If (IPv6 Hop Limit <= 1) {
N03.     Send an ICMP Time Exceeded message to the Source Address
           with Code 0 (Hop limit exceeded in transit),
           interrupt packet processing, and discard the packet.
N04.   }
N05.   Copy the value of DA.Argument into the bits [LBL..(LBL+AL-1)]
         of the Destination Address.
N06.   Set the bits [(LBL+AL)..127] of the Destination Address to
         zero.
N07.   Decrement IPv6 Hop Limit by 1.
N08.1. Set the packet's associated FIB table to T.
N08.2. Submit the packet to the egress IPv6 FIB lookup for
         transmission to the new destination.
N09. }
S02. If (Segments Left == 0) {
S03.   Stop processing the SRH, and proceed to process the next
         header in the packet, whose type is identified by
         the Next Header field in the routing header.
S04. }
S05. If (IPv6 Hop Limit <= 1) {
S06.   Send an ICMP Time Exceeded message to the Source Address
         with Code 0 (Hop limit exceeded in transit),
         interrupt packet processing, and discard the packet.
S07. }
S08. max_LE = (Hdr Ext Len / 2) - 1
S09. If ((Last Entry > max_LE) or (Segments Left > Last Entry+1)) {
S10.   Send an ICMP Parameter Problem to the Source Address
         with Code 0 (Erroneous header field encountered)
         and Pointer set to the Segments Left field,
         interrupt packet processing, and discard the packet.
S11. }
S12. Decrement IPv6 Hop Limit by 1.
S13. Decrement Segments Left by 1.
S14. Update IPv6 DA with Segment List[Segments Left].
S15.1. Set the packet's associated FIB table to T.
S15.2. Submit the packet to the egress IPv6 FIB lookup for
         transmission to the new destination.
]]></artwork></figure>

<t>Before processing the Upper-Layer header or any IPv6 extension header other than Hop-by-Hop or Destination Option of a packet matching a FIB entry locally instantiated as an End.T SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
N01. If (DA.Argument != 0) {
N02.   If (IPv6 Hop Limit <= 1) {
N03.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
N04.   }
N05.   Copy the value of DA.Argument into the bits [LBL..(LBL+AL-1)]
         of the Destination Address.
N06.   Set the bits [(LBL+AL)..127] of the Destination Address to
         zero.
N07.   Decrement Hop Limit by 1.
N08.1. Set the packet's associated FIB table to T.
N08.2. Submit the packet to the egress IPv6 FIB lookup for
         transmission to the new destination.
N09. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.T SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. If (Upper-Layer header type is allowed by local configuration) {
S02.   Proceed to process the Upper-Layer header
S03. } Else {
S04.   Send an ICMP Parameter Problem to the Source Address
         with Code 4 (SR Upper-layer Header Error)
         and Pointer set to the offset of the Upper-Layer header,
         interrupt packet processing, and discard the packet.
S05. }
]]></artwork></figure>

</section>
<section anchor="sec-next-endb6-complete"><name>End.B6.Encaps with NEXT-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.B6.Encaps SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
N01. If (DA.Argument != 0) {
N02.   If (IPv6 Hop Limit <= 1) {
N03.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
N04.   }
N05.   Copy the value of DA.Argument into the bits [LBL..(LBL+AL-1)]
         of the Destination Address.
N06.   Set the bits [(LBL+AL)..127] of the Destination Address to
         zero.
N07.   Decrement Hop Limit by 1.
N08.1. Push a new IPv6 header with its own SRH containing B.
N08.2. Set the outer IPv6 SA to A.
N08.3. Set the outer IPv6 DA to the first SID of B.
N08.4. Set the outer Payload Length, Traffic Class, Flow Label,
         Hop Limit, and Next Header fields.
N08.5. Submit the packet to the egress IPv6 FIB lookup for
         transmission to the next destination.
N09. }
S02. If (Segments Left == 0) {
S03.   Stop processing the SRH, and proceed to process the next
         header in the packet, whose type is identified by
         the Next Header field in the routing header.
S04. }
S05. If (IPv6 Hop Limit <= 1) {
S06.   Send an ICMP Time Exceeded message to the Source Address
         with Code 0 (Hop limit exceeded in transit),
         interrupt packet processing, and discard the packet.
S07. }
S08. max_LE = (Hdr Ext Len / 2) - 1
S09. If ((Last Entry > max_LE) or (Segments Left > Last Entry+1)) {
S10.   Send an ICMP Parameter Problem to the Source Address
         with Code 0 (Erroneous header field encountered)
         and Pointer set to the Segments Left field,
         interrupt packet processing, and discard the packet.
S11. }
S12. Decrement IPv6 Hop Limit by 1.
S13. Decrement Segments Left by 1.
S14. Update IPv6 DA with Segment List[Segments Left].
S15. Push a new IPv6 header with its own SRH containing B.
S16. Set the outer IPv6 SA to A.
S17. Set the outer IPv6 DA to the first SID of B.
S18. Set the outer Payload Length, Traffic Class, Flow Label,
       Hop Limit, and Next Header fields.
S19. Submit the packet to the egress IPv6 FIB lookup for
       transmission to the new destination.
]]></artwork></figure>

<t>Before processing the Upper-Layer header or any IPv6 extension header other than Hop-by-Hop or Destination Option of a packet matching a FIB entry locally instantiated as an End.B6.Encaps SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
N01. If (DA.Argument != 0) {
N02.   If (IPv6 Hop Limit <= 1) {
N03.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
N04.   }
N05.   Copy the value of DA.Argument into the bits [LBL..(LBL+AL-1)]
         of the Destination Address.
N06.   Set the bits [(LBL+AL)..127] of the Destination Address to
         zero.
N07.   Decrement Hop Limit by 1.
N08.1. Push a new IPv6 header with its own SRH containing B.
N08.2. Set the outer IPv6 SA to A.
N08.3. Set the outer IPv6 DA to the first SID of B.
N08.4. Set the outer Payload Length, Traffic Class, Flow Label,
         Hop Limit, and Next Header fields.
N08.5. Submit the packet to the egress IPv6 FIB lookup for
         transmission to the next destination.
N09. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.B6.Encaps SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. If (Upper-Layer header type is allowed by local configuration) {
S02.   Proceed to process the Upper-Layer header
S03. } Else {
S04.   Send an ICMP Parameter Problem to the Source Address
         with Code 4 (SR Upper-layer Header Error)
         and Pointer set to the offset of the Upper-Layer header,
         interrupt packet processing, and discard the packet.
S05. }
]]></artwork></figure>

</section>
<section anchor="sec-next-endbm-complete"><name>End.BM with NEXT-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.BM SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
N01. If (DA.Argument != 0) {
N02.   If (IPv6 Hop Limit <= 1) {
N03.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
N04.   }
N05.   Copy the value of DA.Argument into the bits [LBL..(LBL+AL-1)]
         of the Destination Address.
N06.   Set the bits [(LBL+AL)..127] of the Destination Address to
         zero.
N07.   Decrement Hop Limit by 1.
N08.1. Push the MPLS label stack for B.
N08.2. Submit the packet to the MPLS engine for transmission.
N09. }
S02. If (Segments Left == 0) {
S03.   Stop processing the SRH, and proceed to process the next
         header in the packet, whose type is identified by
         the Next Header field in the routing header.
S04. }
S05. If (IPv6 Hop Limit <= 1) {
S06.   Send an ICMP Time Exceeded message to the Source Address
         with Code 0 (Hop limit exceeded in transit),
         interrupt packet processing, and discard the packet.
S07. }
S08. max_LE = (Hdr Ext Len / 2) - 1
S09. If ((Last Entry > max_LE) or (Segments Left > Last Entry+1)) {
S10.   Send an ICMP Parameter Problem to the Source Address
         with Code 0 (Erroneous header field encountered)
         and Pointer set to the Segments Left field,
         interrupt packet processing, and discard the packet.
S11. }
S12. Decrement IPv6 Hop Limit by 1.
S13. Decrement Segments Left by 1.
S14. Update IPv6 DA with Segment List[Segments Left].
S15. Push the MPLS label stack for B.
S16. Submit the packet to the MPLS engine for transmission.
]]></artwork></figure>

<t>Before processing the Upper-Layer header or any IPv6 extension header other than Hop-by-Hop or Destination Option of a packet matching a FIB entry locally instantiated as an End.BM SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
N01. If (DA.Argument != 0) {
N02.   If (IPv6 Hop Limit <= 1) {
N03.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
N04.   }
N05.   Copy the value of DA.Argument into the bits [LBL..(LBL+AL-1)]
         of the Destination Address.
N06.   Set the bits [(LBL+AL)..127] of the Destination Address to
         zero.
N07.   Decrement Hop Limit by 1.
N08.1. Push the MPLS label stack for B.
N08.2. Submit the packet to the MPLS engine for transmission.
N09. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.BM SID with the NEXT-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. If (Upper-Layer header type is allowed by local configuration) {
S02.   Proceed to process the Upper-Layer header
S03. } Else {
S04.   Send an ICMP Parameter Problem to the Source Address
         with Code 4 (SR Upper-layer Header Error)
         and Pointer set to the offset of the Upper-Layer header,
         interrupt packet processing, and discard the packet.
S05. }
]]></artwork></figure>

</section>
<section anchor="sec-replace-end-complete"><name>End with REPLACE-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End SID with the REPLACE-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. When an SRH is processed {
S02.   If (Segments Left == 0 and (DA.Arg.Index == 0 or
           Segment List[0][DA.Arg.Index-1] == 0)) {
S03.     Stop processing the SRH, and proceed to process the next
           header in the packet, whose type is identified by
           the Next Header field in the routing header.
S04.   }
S05.   If (IPv6 Hop Limit <= 1) {
S06.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
S07.   }
S08.   max_LE = (Hdr Ext Len / 2) - 1
R01.   If (DA.Arg.Index != 0) {
R02.     If ((Last Entry > max_LE) or (Segments Left > Last Entry)) {
R03.       Send an ICMP Parameter Problem to the Source Address,
             Code 0 (Erroneous header field encountered),
             Pointer set to the Segments Left field,
             interrupt packet processing and discard the packet.
R04.     }
R05.     Decrement DA.Arg.Index by 1.
R06.     If (Segment List[Segments Left][DA.Arg.Index] == 0) {
R07.       Decrement Segments Left by 1.
R08.       Decrement IPv6 Hop Limit by 1.
R09.       Update IPv6 DA with Segment List[Segments Left]
R10.       Submit the packet to the egress IPv6 FIB lookup for
            transmission to the new destination.
R11.     }
R12.   } Else {
R13.     If((Last Entry > max_LE) or (Segments Left > Last Entry+1)){
R14.       Send an ICMP Parameter Problem to the Source Address,
             Code 0 (Erroneous header field encountered),
             Pointer set to the Segments Left field,
             interrupt packet processing and discard the packet.
R15.     }
R16.     Decrement Segments Left by 1.
R17.     Set DA.Arg.Index to (128/LNFL - 1).
R18.   }
R19.   Decrement IPv6 Hop Limit by 1.
R20.   Write Segment List[Segments Left][DA.Arg.Index] into the bits
         [LBL..LBL+LNFL-1] of the Destination Address of the IPv6
         header.
R21.   Submit the packet to the egress IPv6 FIB lookup for
         transmission to the new destination.
S16. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End SID with the REPLACE-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. If (Upper-Layer header type is allowed by local configuration) {
S02.   Proceed to process the Upper-Layer header
S03. } Else {
S04.   Send an ICMP Parameter Problem to the Source Address
          with Code 4 (SR Upper-layer Header Error)
          and Pointer set to the offset of the Upper-Layer header,
          interrupt packet processing, and discard the packet.
S05. }
]]></artwork></figure>

</section>
<section anchor="sec-replace-endx-complete"><name>End.X with REPLACE-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.X SID with the REPLACE-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. When an SRH is processed {
S02.   If (Segments Left == 0 and (DA.Arg.Index == 0 or
           Segment List[0][DA.Arg.Index-1] == 0)) {
S03.     Stop processing the SRH, and proceed to process the next
           header in the packet, whose type is identified by
           the Next Header field in the routing header.
S04.   }
S05.   If (IPv6 Hop Limit <= 1) {
S06.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
S07.   }
S08.   max_LE = (Hdr Ext Len / 2) - 1
R01.   If (DA.Arg.Index != 0) {
R02.     If ((Last Entry > max_LE) or (Segments Left > Last Entry)) {
R03.       Send an ICMP Parameter Problem to the Source Address,
             Code 0 (Erroneous header field encountered),
             Pointer set to the Segments Left field,
             interrupt packet processing and discard the packet.
R04.     }
R05.     Decrement DA.Arg.Index by 1.
R06.     If (Segment List[Segments Left][DA.Arg.Index] == 0) {
R07.       Decrement Segments Left by 1.
R08.       Decrement IPv6 Hop Limit by 1.
R09.       Update IPv6 DA with Segment List[Segments Left]
R10.       Submit the packet to the IPv6 module for transmission to
             the new destination via a member of J.
R11.     }
R12.   } Else {
R13.     If((Last Entry > max_LE) or (Segments Left > Last Entry+1)){
R14.       Send an ICMP Parameter Problem to the Source Address,
             Code 0 (Erroneous header field encountered),
             Pointer set to the Segments Left field,
             interrupt packet processing and discard the packet.
R15.     }
R16.     Decrement Segments Left by 1.
R17.     Set DA.Arg.Index to (128/LNFL - 1).
R18.   }
R19.   Decrement IPv6 Hop Limit by 1.
R20.   Write Segment List[Segments Left][DA.Arg.Index] into the bits
         [LBL..LBL+LNFL-1] of the Destination Address of the IPv6
         header.
R21.   Submit the packet to the IPv6 module for transmission to the
         new destination via a member of J.
S16. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.X SID with the REPLACE-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. If (Upper-Layer header type is allowed by local configuration) {
S02.   Proceed to process the Upper-Layer header
S03. } Else {
S04.   Send an ICMP Parameter Problem to the Source Address
          with Code 4 (SR Upper-layer Header Error)
          and Pointer set to the offset of the Upper-Layer header,
          interrupt packet processing, and discard the packet.
S05. }
]]></artwork></figure>

</section>
<section anchor="sec-replace-endt-complete"><name>End.T with REPLACE-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.T SID with the REPLACE-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. When an SRH is processed {
S02.   If (Segments Left == 0 and (DA.Arg.Index == 0 or
           Segment List[0][DA.Arg.Index-1] == 0)) {
S03.     Stop processing the SRH, and proceed to process the next
           header in the packet, whose type is identified by
           the Next Header field in the routing header.
S04.   }
S05.   If (IPv6 Hop Limit <= 1) {
S06.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
S07.   }
S08.   max_LE = (Hdr Ext Len / 2) - 1
R01.   If (DA.Arg.Index != 0) {
R02.     If ((Last Entry > max_LE) or (Segments Left > Last Entry)) {
R03.       Send an ICMP Parameter Problem to the Source Address,
             Code 0 (Erroneous header field encountered),
             Pointer set to the Segments Left field,
             interrupt packet processing and discard the packet.
R04.     }
R05.     Decrement DA.Arg.Index by 1.
R06.     If (Segment List[Segments Left][DA.Arg.Index] == 0) {
R07.       Decrement Segments Left by 1.
R08.       Decrement IPv6 Hop Limit by 1.
R09.       Update IPv6 DA with Segment List[Segments Left]
R10.1.     Set the packet's associated FIB table to T.
R10.2.     Submit the packet to the egress IPv6 FIB lookup for
             transmission to the new destination.
R11.     }
R12.   } Else {
R13.     If((Last Entry > max_LE) or (Segments Left > Last Entry+1)){
R14.       Send an ICMP Parameter Problem to the Source Address,
             Code 0 (Erroneous header field encountered),
             Pointer set to the Segments Left field,
             interrupt packet processing and discard the packet.
R15.     }
R16.     Decrement Segments Left by 1.
R17.     Set DA.Arg.Index to (128/LNFL - 1).
R18.   }
R19.   Decrement IPv6 Hop Limit by 1.
R20.   Write Segment List[Segments Left][DA.Arg.Index] into the bits
         [LBL..LBL+LNFL-1] of the Destination Address of the IPv6
         header.
R21.1. Set the packet's associated FIB table to T.
R21.2. Submit the packet to the egress IPv6 FIB lookup for
         transmission to the new destination.
S16. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.T SID with the REPLACE-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. If (Upper-Layer header type is allowed by local configuration) {
S02.   Proceed to process the Upper-Layer header
S03. } Else {
S04.   Send an ICMP Parameter Problem to the Source Address
          with Code 4 (SR Upper-layer Header Error)
          and Pointer set to the offset of the Upper-Layer header,
          interrupt packet processing, and discard the packet.
S05. }
]]></artwork></figure>

</section>
<section anchor="sec-replace-endb6-complete"><name>End.B6.Encaps with REPLACE-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.B6.Encaps SID with the REPLACE-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. When an SRH is processed {
S02.   If (Segments Left == 0 and (DA.Arg.Index == 0 or
           Segment List[0][DA.Arg.Index-1] == 0)) {
S03.     Stop processing the SRH, and proceed to process the next
           header in the packet, whose type is identified by
           the Next Header field in the routing header.
S04.   }
S05.   If (IPv6 Hop Limit <= 1) {
S06.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
S07.   }
S08.   max_LE = (Hdr Ext Len / 2) - 1
R01.   If (DA.Arg.Index != 0) {
R02.     If ((Last Entry > max_LE) or (Segments Left > Last Entry)) {
R03.       Send an ICMP Parameter Problem to the Source Address,
             Code 0 (Erroneous header field encountered),
             Pointer set to the Segments Left field,
             interrupt packet processing and discard the packet.
R04.     }
R05.     Decrement DA.Arg.Index by 1.
R06.     If (Segment List[Segments Left][DA.Arg.Index] == 0) {
R07.       Decrement Segments Left by 1.
R08.       Decrement IPv6 Hop Limit by 1.
R09.       Update IPv6 DA with Segment List[Segments Left]
R10.1.     Push a new IPv6 header with its own SRH containing B.
R10.2.     Set the outer IPv6 SA to A.
R10.3.     Set the outer IPv6 DA to the first SID of B.
R10.4.     Set the outer Payload Length, Traffic Class, Flow Label,
             Hop Limit, and Next Header fields.
R10.5.     Submit the packet to the egress IPv6 FIB lookup for
             transmission to the next destination.
R11.     }
R12.   } Else {
R13.     If((Last Entry > max_LE) or (Segments Left > Last Entry+1)){
R14.       Send an ICMP Parameter Problem to the Source Address,
             Code 0 (Erroneous header field encountered),
             Pointer set to the Segments Left field,
             interrupt packet processing and discard the packet.
R15.     }
R16.     Decrement Segments Left by 1.
R17.     Set DA.Arg.Index to (128/LNFL - 1).
R18.   }
R19.   Decrement IPv6 Hop Limit by 1.
R20.   Write Segment List[Segments Left][DA.Arg.Index] into the bits
         [LBL..LBL+LNFL-1] of the Destination Address of the IPv6
         header.
R21.1. Push a new IPv6 header with its own SRH containing B.
R21.2. Set the outer IPv6 SA to A.
R21.3. Set the outer IPv6 DA to the first SID of B.
R21.4. Set the outer Payload Length, Traffic Class, Flow Label,
         Hop Limit, and Next Header fields.
R21.5. Submit the packet to the egress IPv6 FIB lookup for
         transmission to the next destination.
S16. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.B6.Encaps SID with the REPLACE-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. If (Upper-Layer header type is allowed by local configuration) {
S02.   Proceed to process the Upper-Layer header
S03. } Else {
S04.   Send an ICMP Parameter Problem to the Source Address
          with Code 4 (SR Upper-layer Header Error)
          and Pointer set to the offset of the Upper-Layer header,
          interrupt packet processing, and discard the packet.
S05. }
]]></artwork></figure>

</section>
<section anchor="sec-replace-endbm-complete"><name>End.BM with REPLACE-C-SID</name>

<t>When processing the SRH of a packet matching a FIB entry locally instantiated as an End.BM SID with the REPLACE-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. When an SRH is processed {
S02.   If (Segments Left == 0 and (DA.Arg.Index == 0 or
           Segment List[0][DA.Arg.Index-1] == 0)) {
S03.     Stop processing the SRH, and proceed to process the next
           header in the packet, whose type is identified by
           the Next Header field in the routing header.
S04.   }
S05.   If (IPv6 Hop Limit <= 1) {
S06.     Send an ICMP Time Exceeded message to the Source Address,
           Code 0 (Hop limit exceeded in transit),
           interrupt packet processing and discard the packet.
S07.   }
S08.   max_LE = (Hdr Ext Len / 2) - 1
R01.   If (DA.Arg.Index != 0) {
R02.     If ((Last Entry > max_LE) or (Segments Left > Last Entry)) {
R03.       Send an ICMP Parameter Problem to the Source Address,
             Code 0 (Erroneous header field encountered),
             Pointer set to the Segments Left field,
             interrupt packet processing and discard the packet.
R04.     }
R05.     Decrement DA.Arg.Index by 1.
R06.     If (Segment List[Segments Left][DA.Arg.Index] == 0) {
R07.       Decrement Segments Left by 1.
R08.       Decrement IPv6 Hop Limit by 1.
R09.       Update IPv6 DA with Segment List[Segments Left]
R10.1.     Push the MPLS label stack for B.
R10.2.     Submit the packet to the MPLS engine for transmission.
R11.     }
R12.   } Else {
R13.     If((Last Entry > max_LE) or (Segments Left > Last Entry+1)){
R14.       Send an ICMP Parameter Problem to the Source Address,
             Code 0 (Erroneous header field encountered),
             Pointer set to the Segments Left field,
             interrupt packet processing and discard the packet.
R15.     }
R16.     Decrement Segments Left by 1.
R17.     Set DA.Arg.Index to (128/LNFL - 1).
R18.   }
R19.   Decrement IPv6 Hop Limit by 1.
R20.   Write Segment List[Segments Left][DA.Arg.Index] into the bits
         [LBL..LBL+LNFL-1] of the Destination Address of the IPv6
         header.
R21.1. Push the MPLS label stack for B.
R21.2. Submit the packet to the MPLS engine for transmission.
S16. }
]]></artwork></figure>

<t>When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.BM SID with the REPLACE-C-SID flavor:</t>

<figure><artwork><![CDATA[
S01. If (Upper-Layer header type is allowed by local configuration) {
S02.   Proceed to process the Upper-Layer header
S03. } Else {
S04.   Send an ICMP Parameter Problem to the Source Address
          with Code 4 (SR Upper-layer Header Error)
          and Pointer set to the offset of the Upper-Layer header,
          interrupt packet processing, and discard the packet.
S05. }
]]></artwork></figure>

</section>
</section>

    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
        <name>Contributors</name>
    <contact initials="L." surname="Aihua" fullname="Liu Aihua">
      <organization>ZTE Corporation</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>liu.aihua@zte.com.cn</email>
      </address>
    </contact>
    <contact initials="D." surname="Cai" fullname="Dennis Cai">
      <organization>Alibaba</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>d.cai@alibaba-inc.com</email>
      </address>
    </contact>
    <contact initials="D." surname="Dukes" fullname="Darren Dukes">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <country>Canada</country>
        </postal>
        <email>ddukes@cisco.com</email>
      </address>
    </contact>
    <contact initials="J." surname="Guichard" fullname="James N Guichard">
      <organization>Futurewei Technologies Ltd.</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>james.n.guichard@futurewei.com</email>
      </address>
    </contact>
    <contact initials="C." surname="Li" fullname="Cheng Li">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>c.l@huawei.com</email>
      </address>
    </contact>
    <contact initials="R." surname="Raszuk" fullname="Robert Raszuk">
      <organization>NTT Network Innovations</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>robert@raszuk.net</email>
      </address>
    </contact>
    <contact initials="K." surname="Talaulikar" fullname="Ketan Talaulikar">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <country>India</country>
        </postal>
        <email>ketant.ietf@gmail.com</email>
      </address>
    </contact>
    <contact initials="D." surname="Voyer" fullname="Daniel Voyer">
      <organization>Bell Canada</organization>
      <address>
        <postal>
          <country>Canada</country>
        </postal>
        <email>daniel.voyer@bell.ca</email>
      </address>
    </contact>
    <contact initials="S." surname="Zadok" fullname="Shay Zadok">
      <organization>Broadcom</organization>
      <address>
        <postal>
          <country>Israel</country>
        </postal>
        <email>shay.zadok@broadcom.com</email>
      </address>
    </contact>
    </section>

  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+29+1cbR7Yw+rv+ij7OuvdAIglJvPnGuREYxyQYcxB2+GZW
VtKSGuhxq1vT3QKTjM/ffverqqv6JfEwtjNkzRiQ6rlr137VfrRarUbqp4G3
4+xFk2nsJYk3dgYnVxvOwLuYeGHqHPpJ6uyHo2jshxcNdziMvaudxjgahe4E
uo1j9zxt+V563kqmMTRpJfHVBvxz2RrJiH4UtrrdxthNvZ3GCP69iOKbHSdJ
x41kNpz41OL0ZgqjHeyfvmw0/Gm846TxLEl7nc52p9dwY8/dcX70Qi92g8Z1
FL+/iKPZdMcZHJ8cHP3YeO/dwIdj6B+mXhx6aesFLqvR4FXvOLOk5SYj329M
/R3nH2k0ajpJFKexd57AbzcT/OXXRsOdpZdRvNNwWg3H8cNkx/ml7exderBx
x+H9/uL5//Ld8EJ/HMUXbuj/4aawCYDipR+6zuto6AcefBlHCFpv7KdRDH96
E9cPdpwRdr2WgX4YYZcJ9WgDyKDZKJqFKYKIRjNWs9d2XvpBcg7/1wvaCwA6
4cgzv8mtyU9GkTO4SVJvAts9CEdtYy3nP4zw+/zUu15w4c8mxuR/bwMu6Gn/
DnsY+iF/ZM/3aubC5pxTb3QZRkF04XtJNl/g/8E9f7ikZvO2vNt2Xnij2IWz
13PvxrMwMj+2538TA1i9bMohNm+PpfkPEX2dn/clfDryjIlfthG0Yz0pNYj8
RH26CIzLj/98BCO08cr8cIGfVCwFkBf+9oez1EbJw7bT9wF4emWH/kx/Yq/q
76f7cK/jKWwZPzBPYdZ2scsPf6QEivYorDuFFwAMNzv8F14YIiTc4uH3A3/o
Dt1sqnF75Po/uPxxywfA5Lb7dtC3Z3oxe+9l+P3CjQG/9Ye3QO3xGPuUo/ee
G7pjc4c/tZ0fZ/7o0o2zI/8J/k2cI/MLe/qXs3QWe3lkdw7TsbGMf+Io7bB9
IaP8cK561UNiz7pvRG5ufdtG7WDBe3bSdk7c5I/Zez3jSTT04jT71J726PTU
OfJSpMUA9jC6os+NqWPq/kNM3dtAk6t3+nPbOXUDdxb4791Yz/+zl7qh/cUt
Dv899k5rbtlBOPZzKP4uuvFiA/FC3wv0h/bcQB4DjUQa4ahH+wp7/DCEFoD6
tUg3aDt/d8dRBvPBpXujP8rNGEfumPcg0yXQuP0HNv5hKF8WNpkAzQsajTCK
JzDOFTBgxzl5ubcFjFX9utbpqV8319fUr9tbG/Lrdm/d+HVb/bq6DiM0/PA8
N/Tm9lova97Lmutf17ur2a804UHrBZ1Ua2Pihq3EHyfWp/44bg0vpq0gAbmi
NY0Cf3RTaJCwvNICwSBFMST1ylpOR16hpT+9og2yMNH65cfW8ZvDg72D/QF+
6jgiIPHXzi+A8dDL+RElEOcYp+Ar5zhafKD/4PgqOu1dun7MXUgocnqdXq/V
7bS6azyhG1946Y5zmabTZGdl5dp/79Py2zDmiheukPSzwvLWyi8//mas4uD1
8WFr72Cw96Z1tDdYX+vYexCh7oS3DswhPPcvZswekM6NPQcOVK4WDODACNAr
RrKGnby4cqvWdSxsrtsCOa50c9fXbU2iV0a4vVmyko5XQMRMVvwo+RCvhKNk
/cOHldzBrWyuflgZFo5zdNGCL1rYZ62zMpIdeiSXti/TSVCE0sa9obTxMFCq
RoEFobTRKUJpowpKGwwl6DNp2XBqzeASthjsFTBb79wbaDDEQ+HWxr2gBgtZ
HLmkAyJZDrtaE38UR0i/KmC2eX+YbX7RMFufB7P1W8Fsq3MvgGH3hwLW3a8l
fY9LWRxcuosFMFKuc42jKy8mBpYDZlICzf7gZPt+AIURnO0HBOpdMDDmOVfc
JN4moEbn6TWowPTB+1a82VovAHpk7mrlAndVDngZdHE8PXrz80G/1eu0u/Vw
dcOxc7y377xNvJjBWgW0o+g9yqU5YJXzTgDIDKehfbVD7EkwS+IV4iYrwyh6
n6zIYv6fXkeWA7/BguBfWBL8i4uCH7QsC3ataz+9ZPSCxbitaeCGJYz0zWDQ
Ojw4entmgaA/HjtH+2enrb3W4OCFk8ymoIemhE1kYNoHkAy9S/fKJ+U4DwwW
iI9d0Gmc/tAL/TxMOtsA91KwXPhp+z3agQISmKaz4UoymqwEfjj7sMJfYJsV
UErG3hX+aIXeh7SNnwH4JvDj//PHz0feaHu8vu1tba9u9LY62+fdzfPeeGt9
7dw9X+9tb2z0uhtjt7tqgmHw5uhgz8aEN0f+njMDEJRssqXlfh/UleRyhhrA
Ze7LEy+5nLjOYDZ2Y5D5wwIgtlq9bhUgLmdDRoko9EewzXSFFrQyDKLhysSF
qxkjGq3goa7gufyGS21Pxtau+gf5o/XGTuhd6wNMnDTSR4wjoIKTxrOR2B3K
T7cPO06j5NLpX8TutRvYO0MCAZubt7No6oVoagSyMI2jf3oj2GL/AE49CFa6
vdWuHGmy0ul561vj7XV3DGc3cre981FvzRtue51R59ztdoa97tjruWvmzt8d
H9unCWByRoHvxN65R3a3qnv8EjSOqHTtyWoLKVn7fAwtVq6m05XearvTW4Fh
W3pY/CvBf0aT8W9JPPrtCs7ut9Krd7xmLxEvFx3BEtEsB35ddvzJNPA0rXDg
f8drdQiZeuduCH3dIIGfuW/74YUH1/J0FgD5CYKocG7wv9V55wb7YT1mupbJ
nOa+3hy9yWlgKVDw2cTZe7235/zYoo0e85FXncIbQA5lp0A6/BI047GrkdJc
82qrV6N+IZaFehyiK2M/AYJ4s7L35vWKLO07XNp3vLTvsqVlWzreP4Iv321Y
+6JFFnZjLgNWgQug44ep26MQuSJBrbcCrff7R6d7rd6qNezrWZD6rXdeOAaS
CysYOIMXR2wih8Fid+gHfnrjnHoJ8CkPb24VFPdn2MMN4eJfoW1ybIKU+u95
OKyzRAtZtmG7CtJTq1t+j2HQdNQGtnPuB547nvghfwQ06ToMInecrHhXMHay
ggOt8D5lCzgxDY+/8Aba0/F5o91uNxqtVstxh0CCXABn4/TSTxzFLZ1k6o38
cxRgkISdB+4VEjBkTOmlV2DdS4OTZUe4ogPAnEY+/JIRvrF37ocAEj9Ek4aD
lpOmc33pjy6htTsMPBrVeAxxonOQB/jA1bhw2dM2kHjoZLZM/IsQVjoCkAQ3
QHPGsxGsGsdL/D88HIhWjCMB0XCnySzg+x16HpJoJMqpBwczdUfvvTRxUF50
ggi2Zc6cCMAm/ngceI3GN4glcTQW8g3gqwCLG4+AcwHGgpjk/PmnmJM+fgSg
JKPYH+JiryNEBdch4YHYAuzGZ3Mh7mBwgjSLV0ZYCiO38JdlkprUVwfHsMkl
3OoyrJa2rOyPcGuAfwCRh2XxIuAMaBF4MonjOufwtUdtASLDmR+M4UO5zs6U
uzso7MD3U7KijtyApgfR6MofeQpcibMEFDFi8h8zhIc3eAp+rEF0MIZ/EcHg
QiDxXXZGbgwCM+GIW4DkK0B8anryalnWv7m+9vFjWwDPJiR13YhmOpcuwG6I
i8M1XLqA1NHEc2YJYJqbePiqhbjkJg24Av4oBQSAzZ3uN52Ji4j0r5kPJ1ZE
BNozj4d4gxNaqEOjlnQD2g2faWTEA+fzlqnwEAK8+/D9q7azyH0EyPJ4C14+
8+RpB3L7XH2joJ0nD5nW1bEuIQNdLcIYP7XWHABZit0Lz96zIHlhVXSeBFtj
lU36AFQXWiBcCFwtI6Eak56AokCGBRkVeADdGyRWB4PWwYAHRPMqDvhmcPxS
Plnvrqopdn88lg972KyNF/zUi+G+IKrf5Mmj2hoTGiC1kxI40zVvmttr5veH
x4wIQNgNE7hJAhPwlQEIuxPgP26sdgwN0mxN7fyifCFIsqrzCMSOazxIRBla
4w7QMOcwGrlpFLd2g2j0focWMImAPxmE1Bn6KREeFyUjQGbqwSgTe4goOJ8+
AmwzxNF4O9YEuCuTEsClfLb7DIE08Ih0OqvtLk5lQsVY5VE09niRwPwWX6XP
9OWm8n6EMK5JadXVBMHe2sQRtSvu4WiBPWT+AqTeLZGWtwyyYdV1c7P5WSP0
w1EwG8uBWktCRHo5C3l6BQjZAeAODphNQouhAfG2uICmMa6i29tqQdfsQ+cy
CmgtLl10HDKCSwVAnUSxrCnJBkuAcKEgjmMxzc11gIETbzTDpw+LgsCmU7KO
ING/UbBHJQQ2Y6MP3f9UDh/Hzu0DV/M2NOC50MJmuR4Jsx2bypkHmF++8pro
l3+hrkp2G5lFOJd81QMvvKAr7YbviYwXwKz3kLRtfCmfjziuACVx/gDZr4lj
Nit3bIwPG/0RVF3g5hlXThwG/9KPB7vLfP+mEVBZgCMv78oNZsiyrlw/IB6C
5PaCh3EDuotocJGbXDr04W2GDmgUc+TGQY7hNAnQAloYzXNJVIQ77qczBNnU
jdOMXhQvNVNMkvScw91DbJEW6Fk2vqIX2Pqo0JpuaWnjl7qtvsCl7fq6XT++
UHyn0A7B4I7HPo7ThIVkowMrUS3LFsViTO0inIOUuFJenHN5Aj4u7oYc8xvQ
kUiUYTHw0A0vZsAkWVx4792ggDYG2vn67eD0WZN/Okdv6PeT/f95e3Cy/wJ/
H7zqHx7qX1SLwas3bw9fZL9lPUG7fL1/9II7w6dO7qPX/f/7jFnvszfHpwdv
jvqHz4riCkoZzHd9VJ7grqSwWzfRgjqx9t29Y6e7BpT+v4DU97rdbRBa+I+t
7iZKMNeXXsiTRSEoJPwnQOvGcaegIMZEaYIASN/UTwGyTZwiuQRdDohD7JHk
sesm/ggNzSNvmiZ8xKgNwWIncMGbNIBivYnBxmCN53E04eMHeT6Hu8klbVJ9
Wcr24dBNhML1K+o8JPkmhyZKAJCZmhqfGAgadQHUyQTW7RGHDpH50Hzq1lYx
d8XTcOVTl6xqJA4hjYOremoojpXUMfE8JrPo4QQzedUkGTQVEGv9sWJKIO54
qZ+KTloBV9woEXvVC5UMaI7rxY8Iro3F1gpwOp8FgDl5iRcnIb0MVIlpxIcy
8UYASz8B8VNpCPNEahYvygQQvOmgq3qoLw1v5MBZGpi7atIHHVkVylvRLAaV
kKSspT//BCmgxR+18KOPH5d5T6YyI+Ad4vFYOkeJTkPsFQ4Th6dbXLYfmVd1
h0nhDHIMG1ANbzz1UTpMHjNYcXNDBRJXYYMxKQLZYrEG+87EOf2hrRvN06TI
ViJGkvJJCOEy8OBqSgaNYIBYj5opwDZ69MP8ARIPRUM1j6wXkKjL2SJYjuGq
hCzKCslwp2xBQ1FPMeRKYZzO1IA+0MRZAOwmdgFUiUd08hp9iuAn0QagmKYh
yJxt0cuGFoNEXa+b/K3OhA3nJYgg3gcXLcRN3oc8iQlJpjF8jf7yoWCXDIRo
4qysbeWmIYLtKtmJbDhDnl8LQKLnk0mSaCysRrrB/s79D8YU0DbjDMi9/GQ0
IxAY+so6aytFpyJRfWELygSzrw7ppSDUn99Yt0q00ERGVgYltGmVHbWgZdN8
90KkOtk/Puzv7fMnTW1phNmb+E/7jH+c8o/djfY+GfNyf7ZPvDHzHfr4tXEn
8uqZtWqScDJbmLUYWbK5pPaLs42m/LImv5yqT071J2u6UU//8k592XubLRT+
qltqn73VQCZBAdYAnKwMNhJGqb7pstDEYxwYeiN3xizvRmGk6JVjhbZujkDx
ZZypK16cEvvBBaBbM4G7hEzbZJLTOBoBQ4xLDD2yKXYMzagRWd3IfMNiKUhL
AQwqFngZtg5pTKsYU7p6u9gSSAUOswh2N2UGcZqxbwaixljPp1F9oHFX/njm
IpOOSJ4z+EJTbGqJZdKuIkAyXxG+SjgvxcQhbC9nXYMvtaRFcg4bivhbfLnV
87OIS+eD62qCTAHrAcIW3QCtOKe3tTTHJE1z++jSQ2fdxi/KCldYvBDInKJO
4oWINugQqYMooJG26JWaABCfUeDVKkei+HRuCrhQNUYSQmmWfyN9vs65H+Pb
DFMdMjaEGSQt80QyG/L1SLUhRMOg7JiarABkk3j8uuiU3bdq4JASdukmd4eP
mkT2dx8QKXslcjeEi2ypYkIaKndGyRygaspS0LyVrR8bwcroEqgrj2RtFLW8
D4iushaS0w2dKbI/LhVCGET4nGaNYj9BvYqu8e41QQrBczOUTeZbpGCgwYnY
NdEEBqyDgmRQLnyrq03ER15BLnxciC1osHrmTOjhUsQMELzg9rKkmF1hBRvQ
fs1hswb2wJmypUCmTCzqwFEWpjYFmwsSG+cZm1XyLZ6x5YDIMnKLO3F0gIww
dItcGKRHmHP5RcRD1UJeTog/Hhw3nbf4D7Z6OzCub6wW/FD8XrZB7P66jnaA
FC4XWq6zWPZLXlnwjiFeKhabDoOW74aultBamuWRcHeLI0Uzd4Ezwa/P2JZS
ypvoazpxdeBlSFF6hAbrqwVOE8ZHbRfNysENG56MYVhOFTEVWd9H1PpylCl7
jCsugK6nj7JP0Sqb0bG2s78Yl1NWdkXL+aEzMQixIuNofWTdG03RsWhNwmyK
rxIW6ZbLm1/OfH6HqpRppGE2E6b+xSyaJcY6ivyPlgRQjmAYea9I8qp05dNS
2WrVOgQFL/24emBznEz0obefCYAdjWF0BghUpuTGQnnrCdrd284vaOJCBioc
CG6LYSRju1BTs+xstcR0kJk5syki+88yABnNAO4/O2KYmIkh8TyIonhpCRHi
cPdweQWNtcsVeISMxEBNH4kAK9gEH9LcabfGWRVYbZmkIRoA6vQ+XH9eWeKB
agEQK7w9MM8NXIUzFYxeNBB5ySYlVEOxcMHkFtAyhuhspCiFIlSG/WIpWW6K
tqIubAWJT/jNnYwDzsTD53hBZTZl5h5oCxYp2SobOlAz0Q8FNbTKV6ZbGvPc
vyCC0+JBlK2NRQg9rjKo0+nRJEXEEgnJmJAFzsb//u//Nr5r3fu/7xr/Jtcl
mwLRf/+Gz4i+cAv5T98w479/N6wm1leKLlW2yAZ5kO04f1O/08uN/uZ752/8
JvJ91oKb9Y1W1JJg++eO803uGNlX7PmzgY0ZpZwRlMqRG4gO7jprTPktKDed
7oa8uopBvZKoM5XaWKPm6gSWnyE/C/PeivImovxLXWe1V5xbGbmXkPyINiCr
Md9y4HukTHkalG0z4ZWhZKknhPvLWnfRNG6/E/UNeVUtGxVul2kSSDJhxbLz
Y2nNR+kEefH1tOTtbKlfuzPiNP8C5R6JklDqFoIDhiNGIZozm4TZXCcGS7rQ
EzcFDRm5+8uDXXrnvuG3S2BG1juNm8wlL8167wWykKjnZW1vsd4ByGoYmr4g
xMUNbW8UxShNAZXM3InIg4BJMdBq4wkGyZZSRTO5GSBnis32cgCcbB8qeUtj
KkxXTZQVIsNigF7AY2MufaYXRneEz2iEoRoZ6I1ZLGVuKi+pfVC0/Qs2rQSs
yykB9s6HpC0xSWaK0RIxg5VsLMbzswJ5brHSwyW5V71gh1HY4tf+2lUYFnxr
Ffqx0BiVnn6mWkPHZ/s4Z2HiBQm6kCBWJ3jlyF96OWNPuevY1343xvzVMq4c
giHN0kYMie7cDwI1ZPFJkRhBqdxovCg6b5CKXYP87yz5pQcBYO8szwX41DeP
XCsBZsoQpg76DAYnrxRMX3hJqnTU/niMxgLYmxeM1cqJ7vD7FClA31CsCG3D
wNBMB0Jt8OMnoGAhzbvIDTEtwgYNUC8SawUPKqLEH9B9yDMUwoySmWZnJagO
PUS6aeLNQNMUzy1YsxfjGEMvvfZg/wHdxkGny86znV7GOl6ZwKldXe6ZnLRb
e1699qF3jgqkBfabzFNRPTPyFWJBml77X6HS8SqatoY3Lfih2pFkYSLIm2ma
DUPkuDgjPR1Op17cCtwbdPSSxuSEjdYsFEe8hNVDkTOPOl2iRUsv+m19Bf7r
OSC/8yd82WuD+IZfEwbhAg/9CaD43547XW6x2iYRb+CxWfVg7/Wxc+qDMLz/
YcTO1zBlQjZs4Tz86CgY32wYcuIeQrXjLOE8Ac3jqUGQz8UuwDJdtrqQG0c8
m6YKva0TGNPLmBuPjTfHNix6DRf9EX5Zb9O0UzbhahpsAgNmMGjgP0BUaLdR
tvquf9jqLv+aLUYQrORa45QbbYJSagwloyy3293e5q81/QF02TRIwXDATRwQ
k7+wwTk7G6DtXWywRTNiZiHryVV2413QyHSuSANAbX0PKu65BKHRfwRxSUyk
+hGlG2drxJm22wBMxCYQrV3UOD82vneOotRLdhrfw68t53cDor8rx01FPAka
vzM4WF0mgPyuhJsyiJSRSJzoVB+jeqhVDuuH3nlq01ckBXIXtfhCrjC51Spj
2sjz0W1COQ6QcKd4M09Kvgcx6u+x4VyN5oEARIQc7QBMvfLHBSkJerdUD36p
ZcLfPptD+j98MtoPUz8I9e89APU3YZiHG4xYMEKasukQXf6ngUsuPMghHLgl
mWsWMRZNF+uvD0EVBp6J62LJVcnuEXrAGFfGufJdNO97kyGbZn9ql96eHSFK
sU8OAj/hXgz7RjVcBVRwUfAFAWMXHoFZOu45hj6hwqLlSuvVeEGk+Isz3Yeg
Dx/KCcTpHAKRfjoCcfowBGL16yIQXZOnMwT/m+I7ohEDCOGXKu+eU2bKvXuz
5SrGfG3z5QVIymklScmfxFdFUgqLfyIp80hKWk5S9BPtHNIy3Ph0tCVbw8Oo
oF8jkTmeJZcUqnltiry8WuUniTdL3hdw5F2T3AiNopwhPMKgj4Sjz41WKxq9
6Cvqwk+KYtSSodeKvY7dG4xWBmGbH9ROY/f8HN3cA6CKTeclau6HLmzRUuK0
7sIGniNUMSQalAT2hOdb/2SUM6/SzCedidPnmELLZVUrkVpBWRwgdVBwbR+7
GmR+HDr9RGBvTWCHGzaFHcBJB26sDazoT1SkdosderPCMk7ICtRnNsUkBMli
Vkc/DNX1V2dhXBPjeTiK/QsYKbD9CAXaRhi+AFxuqyawVi+Kf+csgjeY67af
il1a7K3290350oz0p0ivSXQlfvrZTmRen4KFr92Y8wHgLwwQ78M0QrcpU0Fz
xTgl+QvcAKN3b7LYu4XBUcZK0dtpLjuNvU9nys0t5WG46tpCXFVCkgyGSo/5
xctSwkRNWL6eB8DJJ4RetYPa7UC2/rUKIrgsSlERIOdyAEriobq7iIpDPYEd
+mHRdLKQ1rJbqbUUQPo47LAw6xM7nMsOJ0WFY89w2iT0V8/POa/NxLzs6lG5
0YDWHGkMvygOWI4lG6XvULMQ4+wulBFYu25UX3RY91s16dv5k5aZP+846YuF
Jy3Tdu40KUb+Wl5Zlg8mExKv3g2z1JkUqEecqvisoqtlWOlo6XDK5bJ8FIrs
yQO6YOh9vOpRyap+tL6lB6byDmUhZex90NdoFsfa91Itxf4wS4pA+y4+W4P2
BywLQdYRt0dybdWJeyjGVrJ7KP93Q2Jplmyf/Q9DVGvomOpcZnFMovdjOZ95
sQB6DTyXuEpaGGCPR963NW/tyTTw5dnuZ+cZCHfsGvgMgay9A+b4b8LwynPz
QHqNI09CsDAyyOMJMMAZCOc53LjgBkkyvQVNQeHDVY4NV9b64Oc82sPQ6OaQ
PY8F+HqFDhVlDrlV7po5b9rSJTgKQCWoW3cKS7rfz63u8jxnXqNxz/TLfQDX
03LX+nt5n5ZIdI/helpKHovep0Jqb+eAWoZkSP3sORegtg/mnlrrn+rYxNbR
LqYFH9U6B1X4/3cZkTZGKTZ9oB3VuKjyh0hJjA+4qeWmavuo2odd4aZaFaSx
kKeq+JAu6qkqg1ieqiWIvRCuFeh6BabrYegaPSj+vYQ7mirPfESQU4OG0QcD
k9TiBy8NAin4lxHDzjK1yT7o5j/o5T9YXX5o/Cug2a0+KMU/gzWVouD885YM
CwrfbF/kn53nzprGJSPartRJOBHn5uIkppMvCjprW01nfaPpbKw1nc0e6T9b
HREACqkMMFmk5sgqDr+tllQmurJfdMJxit2NFt2Qkg0m4m2NaZ6sjcNk0twO
MiQP2cWcrYFLBiLwo8YVgU43xAQGGPKL4daYT5SzEg8jUAYnrsTAGDlBSgNt
Yc1e+6LdFGFxVEh2ogKpK52vq4+m0v+aWBmLxFqgnSvFnJX6eyoJ7ywv4Y08
P1gKoovfepmYt/zpPb/LQ1rYtvDXdv5WNMTy/7bdsCUrCOmCJkFZUIls1kuu
c2QaRpCpz4JllZG8xOMMsTWs8CG/w3HfxY2c49pC5csmit3ciUYqf1eav2+h
dYnKHNLPi51YPO84uEX4nslZp5mfyPbFs930YP2cZ/ZOi0Jdr9Vl8sGvHePc
CGM0nKq7lFN5Mg9zM8XLXBVIkPaZqYM+k2mfWXt9ZmyTF1mTIYcsMuWu/Jbb
PkI9W/idHPXrPCyrXNE/lXM/ESJMtX4bTAYuEMVeJcZYAQ1L6Ew8TXV0dtPJ
koMoEgWjjz9g5ipctsqfkVRYSPEiwmfFxFs52uUh6RX7VlHVNT4xhCzKfaUs
DrW6LpHn7IEFmYNm8QyMDjdBxIoxa0cW9aHP17YAVRl+rRAEey2WFfARAxHq
yKxlsf9EAQmH+Ioh7wS3cm2i90qC1thOS4nS9yBzvLdp5vPnQGURN8Vfv31A
SE8f244OJlH6R+fXf5jtW91fqcsyuvDTg8uhvHtsU2qp7joJz3p9w5scFNjK
76BcJis+seMIZF0qkOAk28/SoUuFdPGgv4fj//Db4f4y4mdup987WcNlHqMs
1ODYxZTm5HoSRyD3Tm4RZrAfxyA6YVD1peFsQvImZWLyxnaswXFE0QbIo/Qs
Re/ye4cnnKjwhBMOT8h8/C3Yspv/CQcWGJjCJ24tzD59OXsC6SaDNJvC3pCa
YyvfLBcOotptc7u3xIG1CxFdo5rVNU66HTnaezn3LOQVedLtCnS7gJMfnf0A
mBGAorvKcLwTgn7XXV7GMdb+QzC0u65guGFjaCn6dDeVo5iFwLDApZy13Wk5
3WXssdWm0bfbc3Guh68cIId4dRiWw38rpEcBgyN7VAwKksiagBxDLFL9VRTK
Sa/bvg8i39m3Nx9sw7utjLZBPahUFb5P+M3vCx9C1brMRt+STaBt8RS4at/K
Af1uKg8lD0EoBBOmWetQ6d+K4twC0kL9w/E938YN6ak2AmiO5PV4cUDVwtdn
CwUyJdDbur8kDjAizjnY65b7wRCneoigoEVDgmjSWoryCSZ94DikOrm4DA+0
3KnxoMx/Ryn7ddf401zO+vCbObfz8YJw7nE7P5WL/CPcTrwqt4jIwS69e/Hr
23BsdZtvu0jo8niLfOCQobrbX4ZnX/rtXyxSZg4V+AzxMvcgB58sZOZx6MHd
gmcUZagJncEmq6VNqgNnsM9avs9dwmYWCJrBudY/Cd0oDZgxqNsdQS50rg7k
0OTWIIc+jwZymOsRQf41xyjdKsLoa+AM+RCfmsiPuezhc8V/3IdLPEgIiM0k
F4oCmQfMR4wFuQ/4PlU4yCMyWVxgVWDIPEl7gbCQPIOpnW6OzPwZolBuFUPy
VRC8kiAOToltVL1Y6I5+SqPVvfJ6Z9m83y560zOHGzqn2nufwNGvQa84ml1c
IhrUvUcyGqmSH5zjXWWWwyf1iiKw8npnunGZ9Q/wEVu8btSTufblrIox8M7P
VWpueYLXj4RVT/WfwsEqzDKtPxgVvo9hUt/zCm+FaJiFjzIsf0e79sv93u9Z
hsDuRnU+7VxiqvOCqV+XhYytAeuDD0i21D4x9VEnztLCJn600C+zCyNnWiwu
VmXPWp4XAZZP3J/kSIgdBcaYVgxrqsYLFaznBmb0mC9eOHn3fjuUrGjDRFFY
hxZyDhNhpp1tYaYdBfy5HLup45lZr6FATR2rLZNYK+UZcY6cb57tZIBPZ937
uhnc1tGgwFNvhU5Vb1l2u2V5Nyo8Jd3nzejtnfAqYPeQ1YVPm3AHXTixnmma
kdW3FVgJY7e75LQBv6wtHHrYJugzycXlmb73ldLA3HcqjEskCphd1IeNSyyN
9cFaZvxBXxdzY0JsOkHBbB12sh7sn7zb13VPqWQKwE95CLKWzp5RBbd2Lq0R
xZIVwUM12QcsAeY0cUNVqIk7hTN8ViGPXGBwWHXGzImNabVVIJnKMXkdEUFE
z7rAnU7FmbdF3ZMd6F9fwdeo/FNZirddAIx4CyLaZfXlNO+Acdn7TNeuS7wJ
8uCR6SmZiyhRhQyjxKsd/DAbnCv/6rEjVQu1wi86HJvTJ6NoqkliWTmhERdZ
pQDAA5LbVeExNrFTGSbyPmXXahY3ECng/i9SjkxCsC6jOPXiDAeYBlCY5NAL
4SKket9DxAyltUUURjALsQgazCqF3BLPOH4ayo+Bh//haY4Af8vCNOIDH6cc
GRzckKjQBitgIPYwZ8aVzsiKY2ayQIr1EpXvPyMxfomAh1UAQXuPRSW9+MoH
WRLLC3nJMuhZEWj1FzPAZ+Z0HHGU3kwRmCbiJyMvBBUqkjjUTLsgek6pfTMP
9oTjjgXvaROovFwYf3M4qAWGHAK3i10yLpLVA1eEyi0pS8Vu6nzK6QwIHtwm
G+dp4OU8f7IKS7mjOEoSijcmYGapBXTZp76GmNSh5N1J/Uc1kI5oxN7oEal9
+XGnnJoarg9dLaohhQOZAEBKOxZELal0K2ePYQXo3nrwI7Ie7wNVqXWDiyiG
qzfByqtAvLdX1zsfPy4DBrxWM/HmMPQkV4rYOgOZxA1vRiCbsgAotEufc5D9
OeeYD+WYrR4LnHLItbLhcCuJikvqkT+aYbYem7rcCh/cksp7cDupjB5rB4ui
AzIJunhjpz/+J1CHEC58FXK0z0z0OAQ964iTWxz1MDoWmU62runlTULzlSMo
9TvQ5NrgIk0cFY9cnY1w3QMir9BqoCe1WmncyDfvyc0/2F1BcvmWMkizzD/C
IqatwB+CIIJR/UDniPSB8I/sCqfBLjPqQgDj5eaKaUC7FSoEFZ77F7NYJRQc
+QnFOl6qAnBJCWVTkRrIonke/FRxDyu+hsvp2itNLOInTADXLuSWSD7LZC4V
75lQ6DHVAy9niYkEyBAnCxgV1S13RQCgUdsOIS3xJI6SS1AtzO4SzsryCt59
rpdHygfcUgyCSFkhvnRnWI6Mh4s5pQhyS+RdZDbykUwAY+HgUy08sFCdVSWm
NXC8Al+VG0JwshecCq/MQwUY5b9mnl6fZAwIxWKlmDoH/cxSP0D2xlIdVTko
DKmqEapySbpsHMNG0iakEo1H4F5030quWWDbwlITZwlm5rxTKQWw4YUZ4o/w
ZhmXIZyYuAnGZYbAKxOuZCfUgIsj/0JimEtx615siwBTRF+sx4rrZ+LONVjh
kvPcNg7LGvLIQlhLNRIpcozKo+eqoiIolZw8wkJuP1LBQ7FIweizZF6AY+7y
NHMWGEUj9IU34ih3Go2WIcHtgOr6LXbYQdJIfxzKH7lShS9O11Y2VtY2Vnpv
VzBUROyH8FlvpffOWcoSBgBbuPBaFGgt2tI1YNnyIhUP+QUBVmgJlfYiy+oo
1i/uFjNbAHhxRlsjtC3dkxmTakicRtRpIejUNcNOs4q75SqSJJlRpw1odoAW
vyDQFzJLGYLWQZMd+EbLj7crL2MXmKyMpZcqRjJRiaU3M1jCxsmOmRWHFQy3
o6GmlPjGsLsu+W0PZCIJFRKpL4sUxowC3zmHR/gvBxPr45h4LgFIURPeWanh
VIQpfWR2ZguJlQ0ob6A47pd462yur6GtAhVOKrzDYi0wcX+cMxcnuqb2gOrv
WJmx6pQ8+5gqCjkRHaLoa5P1o3KtzkkbEZ6JFvEdS5nP9HmRsK5OzM3CtmCz
wrZwXEPkkZp7Uuj18Pi1vOLD7qwS8oGH5bU1W6ndbbeT27BN41BMqwABHEAU
c+qSqKDrNUvj51mBVHQzL5v4Un1UdLA2ktDfe51Od2c83NoZdne6nZ2d36u1
kDm19CxkpPPDo8M+TI6qa5k9d9a2coK2MqN3PuACO7DATmfY/Z2iIr61AxGz
smc0VHcjG4q+1yPhQGoEfVdV75fUuUMQpBal0e/PnY21dh5s593eahngDAmd
7gql+2EjDmherpbwf4f+v98auIefA7idWugh6PVXeg4ED4y9CGDpmuHGi2gJ
iohcp+toFowtcp0R6EK/lY01fTCCztaLUllCtNJFyCHfYRncs7gQcbo/N+S7
+biQJ7RqNax8JVGOjQmJrAaQLG6r80CL66NaxKzrTuSyN59c1iQGeWSK2dvp
dXa6ePUtcjfvNjbn0K9m9f1qVt0eHBV3sgDxLre1l2yMqdoXu7U7kteKp4aS
S6+PV65Zb+FLr3oW79X89+y6tZgk6Larufs9r3ycgVsssY60IhbbzeRoWl7n
VnTDRYuIQ8YsKhyaxlHgTAM3JONJGo3gz6UsiF9atKgFBvFrBdw28ogwqhRw
zhRHCnxoWAo5FN4l2Vjt0Y+NsuSl1EmhWlM9DTQzbwrGz6yIauwF3hXK2W4K
UiioTp6yipJZzOMHi1VTrTejBKTYfXY8YkRVr5rvUBqX17AifKlq5hU38bIC
q8Zzne0mpmA1S2gV2mckD7DYu3DjcSBBgteXHm2VN2Qk/CYjEr7B+Ph4ps4H
VVOltKiUPWLZuPLi1E88qZwuRx2gQwKDDGOZduFC//nnQetF2/fS85Y/jlsy
KdlLgeK3Uq/FLyToChc7x3v7VpcpplrLdfGnVxuATWRf1ulYch50rPno1CeF
U5IGtnNNZUZAc8BvvwVofPttjsEZaQfRlDjBqNxGqyQTqtBIlaGlLY2S2ST/
YGZSYktNrRgiT4bLczodtqiqbgX+Hb05ldSL+KgHv2ZgKtxFSi8AjUrRJocj
FqoJgthkBDBnOcvnbs/dLKIrrXZImXMCMsmq5vIK0lsXFCmlRBREPaNMIpeS
hmWgqxmbmJS962VYIWksjd2pyG4boMqJDB0UI5ajSuhlYtMI8nzYy0x1pScF
2rSy5uXOhN/p6QGbDjH/WrpSnwXMeEpn0yGbBaW+HjsxqorSDX6uRzutylmS
PftahCrSvl38/OqhU4GfTDSEJKl/iP4Gsq88zpBrZ4zl/toOyqrOhRd6MSA3
PgS4aB0gUcJ+UUABY5YaKbrYQKasvsZKkktiya5PyQA4gZshimt7V8almIez
+6dOmUvvzUnqVOyi7VjmiOGNShVHxqGCgQv9DuiC/WvmA3J7JGuHRUMY5hC/
Mep4B+a4A6NKNz3sWN3lfY3evIS82oW8rUOgjZdg+nSWoItgpKL4BWHojpLx
6sZwmJ1hHEQhJav3IRX7lfW5ymL9UR5tFLTxDRAGNCAjU1cVfWBSlVv36DKK
EjY26fuUpzT87Ar0/DIaMxYqN0V+Gye0C4IZ0Ad+w5/OYqxfkdjWQOoOdx4u
FZ92FaLDUTHVxvcr8V8Qgg7gZzyrvSbaWkgniA5nPPm1G7xP5nRHIOvvEkaL
xCODHKwLMQz9LnGXVbYvGKCmVyXpIWZJzlz5pwpZvc6wwRRPDW4mvjYn0iOg
QbV8rfRKYmyWDz5mmS7L59afV+1cQK5nI5kjsTP/vg/RlaucTRSSkWf1rnXy
IUzlw1nE8emsmNxT8/n00oy2YrKkvAN5c5L9PBuNLqU3kaCvkQuXF9+dzHcB
NYKVDhu/7R9yOy7mzlmSiMQRCmSZxbPFKBD/2Rh0JMELH7l4tw4O8hlGlQNy
IXFy5vWYrUt5ZlrDYSJVH3XMa07kRYxBgcyI8poPCGMm3IBkl9Hliss2Ucy5
JrBDn2LTcdN0Bs6WobGiJjm5OQpliNEZWiq2BNwCgQI74LQxKufOgHMXGUVF
8rvWJL6CgsAQksHIwlcMO6zFWRNyfmjVB9M4czvMtbL3FJO5l2LvFkNjZYU0
/oNz+AgrKasPALMbA8w3gcwkFR9upEA4Oi9EZ8+vpLFqXUuGcSy7FkQv55Ku
ZTiqrq51OaiqB1W9hkFXpf8acF58LcqKdmTpRZnDs3UzrULbg+p7mgE+GyhT
d7JRzBvTzCW5zus2kayc7rR5he3LfRvi5tiXu7uau9wLLY/Wla827BTjBxa5
4OYA2V0fcE4rC0sx+5P9wUb7HneY/MLvxI6rVYuiBKq01Dm4Ws+mp2LKyC4T
JrFtsQOZmRQP+Li5DcDU0Xtsfq6oMuhce/jh0sumM1g2Q8lQOsRvKNHqdcT7
ecn1iPIedda94efP4gOOEDJEFUzt6/nixmKgUWxFBNGllNSROj0wr2nqIlRI
Qbb2AFuIPVgEBrfEM69CksjEhYokvWZS3jzHLJM15GhYEshNZJXIqCsnQvuL
9QUie0pEUMbbzfR2UW6gBqku64EVQyjtGAkkc6SXatFZywMWSbb52jyqzOwY
zjc7SAVfQkqDQwsSkGxjEcMaAecuIo5w8wo6aAs2BvFj5mjHpZTTvwXlmttJ
Ng4SQwyoUEzdEnK21Z7uIeaoBIkLCDoFBGceGwT2/ggQkiewg/xdffG1Qp5l
DMxKqJmpEjioaloltxBqNow9933G79TxcapDx9mVrzeK7HCzILRt1fDDJW0l
xmV5k2l6s6wxIFN9anhlIYZKs04zu/Ct4yMVISRdkHiCEjqRDXFbXU2JCxLV
xwqapaSMPP5Wknh3GF15Wk7ToTopG5gxNBII8oW2s0s8tMy7WGSjvfK28ybV
EYnmlslXC8m93X6RjUr5o6qQSVw3mqzG2UW3DdSFreeW0NHiPgVLanAtfrq5
Ogp5Xqv7zjkADfbKCFWxbWthgiwt6IoAE5rXGGUr5e62qOC3EGM0KyUCaxoH
8mQUar6j3U6B57IR0qMSUKkyLOrScW7CiFFPnWGLJ9ajF9r4qy1uHFSP1u5x
ltzcMNBgUnWPffF4r2aMdL7AQmmCaXLOk+AEvACcSUDmNOyIsUdu/+R4+efO
v2ZAS5Cm9K3lJKnH0Fd1dEMqpZWV480KSKhPYAw2nYqjnPXYYGT80S50Ah+t
r9GFhFFARsWaLORIOsb9MroaVg2M4gQMv+D3n7Fzevju/9AXL/rkP++lMIwO
c6LJikGfmZ6Iw+FzxxDuwMRPKeYec6oSgcWlZGdGSeqBSalgdLHgcQ5WdrK3
suPADK/GsbMPHx3CYJwviKM9+VzNsh40xD/wLHudzq9tY8wTsZqf3kw9yQbs
az6+ZrYECCiE1xWQE6/qrrNkLQdhDsNfePzOkUWE5IJnfTH1Bujpm3rGQDKM
SONqHGk/9cJ8F6s6XLaMkjTGxsbDVleVewnV2Dp0jcaQibXBJENfYxIj8/On
mOHwXWI6jr963d9bVp71hAQ5vyQ/th+SzKVWV7U2jvy/k7LkvTTGUuHQlw1U
dxUJ0CUIpPQeDS5xFKRVE8mNcAeUXyK+8sYwSBZjjWGv/LY3JqyR7WLULc/X
t77W8wmZKOKmQkEKYqReMIgUBi9uSh0V8nVVxVulNdb3g7I4fy8PjsuG+akO
HXp5dEB6paMla5CBfNzpVYpihgzWkJjEseLFw3aewWesRoMz79fU/ZXXQ6kC
ItVixPSWfw2yVV/1rcHMqLKR0FJjkTmpr+q1P1LZeLASCq7cll1LIvKXOB6/
s2xG7hvRgJmchUyOioZwXo6SffDaMMMDl/dS4QteLMWBVB0iWQaMB5ip/QuL
eAidS/SvvISnWSTOrJ3R5BEY/bIwWmLoFddRQh/FI4kvOTom1kHbemYsjFRS
+0PYezHu/V44VnW0Q68QgXH70yzbuxcms1iCz0tPHElMBm0piZ2HeHX8uXUE
C1/panOldauzUsoA9L5yzDJuIAlV9mA6aIG2n7MSFsOr9FemyJ2MLoFota1Z
pWSOvp8IfZo+N22x3BstZF6R1vO81mopTVK2yw9QhhdloUTLTU1Fqbx2U6Yy
MSpmikRuH4IauqVmI1WFkueMp29iPSQ0IaywUujNqsLNksfRnN3Nlw/K72VB
2trMNGctrRV3rz2i8iuuMUTpQtDWaxZ1MzInGXc5VxCtiKz1jwBWxptfuPzR
yPOvmOiQgqdeomhfnLOgMgCMHZuPDp+Tf/Lh807T6cMf4upGnm7NSkuGtmCg
ItwppVwTN34vpSSVFq0e6wMVPqbifLsbqmirgghfWvb/4N3no+T9bJz8Vsit
+o57keweSUQbYAGhepEPdgyw6tXeZzyBrGyu3hzxgbeUh++Q8vCRUT2ZTXIE
fiQfS7XTsvoasySzcrH+T49LLeG1S0rv3zL1ftAV0evZtx9FNTuzssdiAUYS
jNmBiZisCvbGjC2yjmssQi6OdGXr1EGD3gf0imZdfejJCWfpi0oXkZP9ctSm
xn5SkE+ajN5q1eIyyenWzGjlsnmqTUns6AbsmJR8YEWYNSarZK8SLuiS4qXF
L7XYkbT80WTa8uI4itk8o/LQeEmF17Sq6xhqul9iEoKZta1CnSqA359iYiIq
bl56oneo/EfO/AdUYEiZIV5EbJe0XEgpFwxlIkglkzBqfcqSw1lQdF4S2w3Q
CJHPslL0Z2kURhM02Q1uQFiG+7TUH3gJOfhnzdRIQI/cRLkasqVKJdR4UWgs
09IKMQQgG04ARtHJyGzc4vtqQj7h0xjPmN+1CoKRuoxIdLLgUcYfaVInrbWz
NAPNvLJG4yZTF/2X64EqJCvbm72L7Hhwhqkb40UtEfDoodJw18winuTxmp4c
3hyfHrw56h8CZQ1mylbnTzDbhZgPdDYAHdJtsXaAD22kJUlHvPDKjyNJwwAX
0gvdYWD6sOpFsmMlxrIpWOPVrNm58jpVK8WH/Ni9QHkDk3F517UxHoCsz/bV
hxwrjUh/zHHbg2t3+sxZwhbt48EzVg3Qw5KF0VzPw1U7oQO/91cMd2aPJzec
4CKplTWVsmV/FYptvIuUy62iN9l4xCFBbixGDN7YjrlABid/kRFGotiUNzdT
Oq2YM878yYkKk5JlR1a9V3upQki1+7fCxLRkITVuleaTSmmXiuimfqi6iISu
8slRPmFf4T8/1dq70u8eFVDmtwctp1QkVaXcJxwLqXO72isqBqOkmN4hdxec
3d7KRB4Nyr42EumYBM+AGU43f72Fx0s1Kr14qZH59TKLi8rvQYlnOv4gF/o8
bx2Z6FGdf8BO5WXWTXKzKmhuJupkTzTVmRfMXCmYeeCKaOZNHrDF7fKLlDxe
Kp9+WkEBej45vHNQDTOaskCyDFM4tG9pUFmTydCeuVoB16bJRnhxupEfYyM/
hpBaTFRBVFwHYeRkcIr5Y5CX4mFFAJzgH3JSuE2IYbz30hgRiulQMBSPLzRe
DWX6lKLJ7KBBoAXMRV1693QDSe5MUTVG7mtYCK3LIDEs/CPNbSGKJZ8u1bVA
YQ6dK7tMlSTh/iXqWQ5W2//4MZuUE2odddaRRB51Nmoq4kKjds4tXUCmLmM/
c8Pc7bWpQ6+debNoddBIoexYhSCdf0za7aXJd/3DVncZqz9mbil9HI88P2g8
XWlk0dKI5LaRx5A5KdEfE09Kle3Phip2QlwLWyircTWWSErjxbEEO/QeqICo
Qwg0uWX5UKNuKBUTuheCOSId7iC13yN5cs+QJ0sltbMFRDUzhv5TCmtnd5DW
yvvUi2tnn1BecylHquK1WR3e24twZ3eS4SQNMHD9pvNTMx+1ZEsBNfIevcKz
5GDFn8eeLaz4WZ5Ic83zBcFPKQ2cfTHiwNlceeDDpyT0Z1+BRPChViRYqsmc
nskUy/8ZosPZgrLD4+LUFys9FDCLxIc6jLJEjzqk+g+XNKAzZxc4puwCkonR
ynogFsKM1+ddiVDvRS4Ll9gLE3IqxkQAwlzNhAX6tSNfM0BS6BJqYvj6lQ/j
RaqgUWn+A2b4ZDzTdFt7tV1tqMwEqXaXvOGLktUfO61taqVziK28DcwwtKGX
xjA2j2tSyRsKUNB2cfKnHbQOBo7Kv937+BE+ezM4fnm1Kh+ud1fpQ06Iwgkq
elhKRH29xn8smiql0HZ4MW0FSSuJdROYbfFkKnPq5LATg5RrNL2JmdhixAJL
Ywq4c9JdFjO22IJclkyIU4UU4Nsk8JrApaw0AN7W4cAEKpo5BhqvTKRyBmaE
9sn+/7w9ONmXjEqSlSmPT/kcPFbJCvJpLuQAMTIL5F4Lyl+nzCxMHxm1Jfmm
b2ZWKz7SWkcksXWS71O7EhQ2rrNs4vfiFGD4jM812lnpLPiZuOJ481kQXWdl
bStb0lCLuPDFxpriRvx4LG8Grnq/zmIvK7ZlQwa9HBSjyuIEGTbkDV+WoGfH
WdsyvjJy8ezAMuCbXDYe+TQXp7pDORyfU/qdta0WrL+7sZxPiy/+zQZd0g+u
JsHEeihAW2d0oySVi69qshgVmtxcaYUSK6xQu/JTbWYc2nwTMGJ3y12YlJgh
jjDZBiX2kjMalidwzQUhW8ydkxtho4L9mx/cOCW7vGtXJIgtGeVI0pOrp3kT
akZzfc65V3xjdKP14jmYMhd3s1uW+wGRSfuPaLu7nZ2YiWPhGYx871VZiGWH
HzOjLNezuXSiMOZJ6JOyLxH6LpG7PXsR6foL55yxv5SxT1xKyEgky814B5k0
ktkwFGU2c+Uo3ABCtTwzKAofzBP4hU6+3M6+JPYgmfIy7pQValBvwMxkcBBm
3U0jtVxwsyz5/XJUXCVFK2RBI3WdGI/ESxR4w2PlSWuaxCTgMpQspOHnlPAp
72hBPMvX0pHlkTGg4NvyBHyZ6wXuPssfUJr5hG0dJVkGU6k1VZ6QZzHG2RDv
PcnE5RribjKj6j6OlFYw/PnV0xG/dVn4r1PB5XkbmSc4rolcb/KrY9ibacnt
62IvwEbxxNls95roU8TUd8t4CVJykG661XS2VcNts6GIR+btWDW8lFgSpVSF
zhvlG4PkwCy+kJAx89jH8qziJFaVI3Iqmm3G2zEdFW8dVbK916i9eKPLiBQP
TJcl+i+/6Jn51HgEwTaxJmLCsXwiOlJsLH9inZKJT6E/xepL/gfQ/s3ygLD3
7Qxbpub2ikJM+eSlfmukpCYZxQvrXixJoyuBCh6YJdWZWSbU0Ch6lxYF7ZC/
4XW2iErhfokvkPoQ1Wx0EFFlMEDA94JzxdfL/MZyYU24bjFymHubclFzMzrN
CmvzUlVKB2Mqc9uZY4u4thz3gVtiFC8nnhOHVeqfr9luL3xBNEB6vQAKSPIz
KQ2Yqe0VcYMlRExn45pJXR4BpPJWrB9D+zRyHWDq7Oyjr5tznFmg2E5Q7hKn
aKiYUWhXZvhn6FA7qS5nmrVkk0QakSTEnhBcdIqhPjmaQLhPX0xgDCrbZ2WS
E8AqizKsIoiQF43QYhKp0ptXEaX0kNMk5YSYB3dmM36uFc6Tx1V7Jc1qtM/f
4cwqo6KqxLIyNkwm622jKjtXbTAfXYLowh8xpIoSgwjFRcSuupUlGzbDPUMO
+mG5pqi7knTNzNL2986LCxTITA8wFclqm+beFlo8dJYMj1S6J6cRCAmpOQy9
bfPSZbZVTsiWMRj20aruOcz5mhJfy/xMi1ZVnmqsp/g/WFSGHFdBmkp9ti9I
0UOTFFkDl+WYNO6Z8icuFBqXx5wa8GRly2346FjAReh9GaTI3BJK4tAyhEIt
YlEM9o2ifdkIKsUjqMHDmR/YAWISM1VGEZoqF7DUo5JwI8bUTHgoMQDZTAJo
qZ1mdAA/Z0njzx0MqI+uvIMQ7vbzZ5h35xlQUfijtT/2QcPZcY4xzAIuUoDl
YdBxh85Cor4TZ+SnhtlS+XJKNNR0NgzMutZGC8x/H48FWrQaPCNGcjsnqsKA
htaq1J3Vs1oCqehtcDhEQadRkjLqNagxOR+DItd6EbvnEioMHw/dhK0NLr1K
RgmVnMxYVYPI3+b2Wg8drx1BVvh6qvArv+pcRn8MRwfuz0WJULtKEvbABTK8
f/oSm6NhUlWPU7eGjGG49QvlSTzGdRM+woKwipicUKir8fJThdo2GskbmSkm
n3GWAlC1puFT6lNYZBSLGsFWigauEeZ6OYtRvZ+QM3FI5WuRT2JSqKEHrBeO
gt+rQRMR8tQwY+7FCR1AQPNyXlqMXJ/R2wydKYGDVA40IGBpVEYdCUbSQHQl
o9IExGb6Zugp8UUFEUCDBqCFC3ScIHHl+gFdpgKKxaIangO9AwUQ4XpClClp
iAle5U3O4MyWjvxQSJK8D5zUoW+GYxsY1HSeEW6QJz1JvQ5mlPCuPSn2hwVU
oVvjAjTjaaLw5SJ0xjMvV2QOCZMwLbH3qECxhqoYC1uPZyGnzWB7Gb2VU31N
jLdG0umhgi3OAyjAIpgaGJIR+xmykNUMyOEQKIsx18SVx3ENC2/cMKwqEZWg
o4TljjJAT5XAZKCm7NrhXTd0HVtyzcyQiAk9rh0DatNnedrC6TF0VViVXlaJ
Y0Qmj08Ojn60J+S6t2h3Bf2CG7R++bF1/ObwYO9gfyAa5zfOnp+MIhVG0GhY
f4rg6I1ztttyklatHhTf2Jey92rTnTLHsHQ5aWQELVvUWSqR2JeJeZQHipOS
BvBH/FcMVqXsR1JFgsLpQevwZR/EEX8UR60giqZwyyJOcC0GWAng8FBH8bhW
m8phB7JS6otNm+F4tDdw1tc6oPeTBZxqlMKdUOh78GbgnJ04m+3V9gcyGlLu
nz//PHh9fNjaOxjsvWnBCDAAvSYZQ27MH3KjdsiNwpDrnfsuc71TGHRzgUHX
awfdtAbd6txrQOxujNYHdNu+34gwxDYPqiKNFKeme873p6nlmfzFQZTOcj7F
Hkc24WtXRqA4fpwkC0sy8FWkGGU8Bw6VaNHQNo/p/BpqFc9QN37GQRdcxO8Z
SEQuFbJQARFlNYpOsy0Rm6Pgsdl0rJ42fnLDGbp9dbtNp9fprTKBeTVzrz3f
OfVGl2GEKogHZKbkw4ciNqXOF0uWNwMRv0clB7Lf/unR1tlZE35sdzt79HOr
s1tAvHcnx+8AV086ve5ep6NRr50NtHe20em0Xvfu0PVof62z33y9v9FpnXXP
evLb6tnWWXfjTsPBvYcBj/bpKt1hADirg2PlP4H2cd23e5Lv9Re7ZRVOmXe7
aEegbLmNBv1Y9DItCTU7evPzQb+FLjwUMXtfhs46Rc310pUaqIyAZOwhto4h
irqkeofTLAbeh1YfPlxukoaXcn48vp24UxdE3RSQxgv4Vp7KrdyfcysZVJvb
6x2g8wMA5Uqv4xVQeHACfODEY72k1wMQaYTMxtiEMQYnrW7vfv03V7rFO32r
AZKV7lqRld1qDyvdZKV3uzH+YvfyLtzvpTeM6VaumpeyH8ejGTA8/vlYAvVC
wu6d72AtX7zVBVRQEQwDKL49950BFSFX6DfYXu92Wr2tF3tN+H0Tft/cwHS8
28gBVzsvzvhlbRskxVZvVbww+/EIkPUK3Va7JqbnJiyfDwfe7J3tGQOvr8I8
9sjddvdFzdCwl/+ZuXCiMrBzcNanAeHnfu1QT3fJee3GoNHb7O2nWehjuvEj
L0VFF+5U/pO/xu2aL3QudrsUdGJFsVexXnWIy0jMZwXKK5R1vnlAIWuMaeCj
Kbt+fm0YCIS8Y+If4CTsJmg05JcM25RDg+xCfX8cw2a82HWO2bovz35RnBUA
v5fBZFFFZ3HO1V03N7wbR+54FE0aDfXbo9qDFtzePEnzARU5cgjLlzg7z8FC
pWQBZFAl0sRQ6+PtYoetWZJGE2Q27AG9u/faGbz42dloA8PaMNWdlrO1tQVi
2dJPsKTRZdQbfbescvzjdxvbxnfWN6B0Gb2sr9a24Kv/mYWxG/Zc65ue8c3M
/mZ7XX8T2hOtGhN90F/9dblYFXIm8pK7ubWNsD+NJu6le/1eQaSlEnQKuWg6
U3mMwhdhcVHQNy313Mltrm7P4pV/P90HhTqGblLuNPfBI9taHtf0int9DTJc
p9XdGiztnvQHwFX5g62BcxzMEv6waKtYb3dQA253ti1DhT3g4KQwHHxUPdhW
pzDY6RYPVrOCTZMKLCYu9bYta4B37bxa3cvZ3co+/UsjA25276RLx4WVZU6Q
MLbOipAXerEJwnhnc902VPEYeGhN/KXc0GUN0L3v8Z3M/H/6nhJtGw3777/0
kZ28PfjpYN85+bF1tNXpbrVOmur3TuukAPcjuksnv538CLpUt9feWlpd3u1A
4/uewJupF0qZbnbncGcpyPTIElQd8AzwETaWp6sHVzd0IWM/nH1w3uODf9DU
HG4DNFyx4r0ZDFqHB0dvz+iRA7sMovP0Gs8N+RjtSDCIsEUyHQXRbOwsDd4c
+XvL2bgAiV63Zw4NLQ72tCsrqLAAs/4QvTyZPZMzwjnq0kuD/oExlNNtb7c7
1lD9A73Gd94Ivc8LUvLSu+Njaz3tzro5BnxNY/RZ0ALMOl7Li2dG8+M1FWb1
qQ5yYYG85bw5esOu7rDkY3SHcCcTesoXsLIDh7F67MBhbYSWnAcr+icmMjBb
He8ftQYn7ySizHhFXtyMTKdI7jgisZ7QvUk46HYXNZs9N3THrrPi7Ple6FJf
UBKMb7ASANf+QP8LeoBPGeNyYw8BG9HTggdCgPDTXAXoi1elyuOtrZw7rLd2
levPHY+Vm7MJI5XPQK2YX9/pxd1LkY5w3HH/6HRPNn2Ars2xH9Cf7GW3P8Md
Yvmw8RUSv7F55U5RNt3zKGXgEg20jHGMiPGc3FcVoB9nuetKYEHnX0I33Pb7
tov+6/j9DL5ZBuygaVq9VfJEPSVPKgwf8ad8JlfsH6MyJGExPZDC3aYYtJp8
Ik15rmkqO0zT+dm7SfyLSxBkyX4sZGHqxxQUyrDau/ThXF9HQ3RRBRh1CGRH
QJUpMTx+0rQbzYVGhkLlsFlUWq9GHbk6qcdORyMMpEV0uY6MvHmVxAFdaRVZ
mDfVDokobjwmGp2jXX6Yf6e2H6ahqybvVV255RX1vvLjFP1SyOsRMbN+bvO5
kKAoL33m0x7jU+FWZ5DjkthjDt8QL8dz1N8S8cYqur0eddjFm74okxk4DKc0
Xf/vfxsALRv04P9wGwdr8P91+P8G/H/z+99VgYJBt90ebJI4Iw6GdoheFYFP
nCPoebRpBybppApOq9WCFvyjxz9W+cca/1jnHxv8Y1Oi15cG3WX60eMfq/xj
jX+s848N/rG5rKpDwny+rsMOEBLgss0hRRsXLgbuZo8vJiwFNyynKlIUNQIo
Ha1Low1qxLhjttm0J1PHomej7DaoUhuFcSSYR3nDFo9ZKulkzp1GaSFoLedM
ruqpjrwlX9cyz1ry1sfyM5lrNRDEhcsDLev0JfO8rDncIyuEmi7imY1x7GJO
4PKGI2B4sR+htRVzy1einPcBa2p79Qkj0fP1guIBrTSSvH1Neko3z8nomnbH
fIIWVRENYVxsWJ7LHoGklsx1DVh3SBkAlVJUDaRKiQ1KNhmfUPaaTKJT/RMg
tt9+O5C/nO7Ot9/iPRp0mW/1ODlBiSt5ccNVT/c43GpZdiJ2My47oTCSvsvY
WQgWLWjjlgsqHJdSAex7B4Q+SsgHfy7OAo6squrwBuR6GnJIatttlDe+iMX2
Sha7+gCLrTjqhwPuNxgfh77lin9GKm/9ic6MorPj7qpkuxI8dD5DV1SQ91/S
L4b7LPvuon8xbcO15riNpGSupzr5rx3IUtWMHW0lITknbsiKjZCGootXkNBg
B3qpDMdZET/DfV7VdLOSinDQS3moFivYtPGcllYMOysPZqsph0HnCiR3FiO4
89GcJRlc1joYRD0G3jszKi1Lf8tLmqmjwgxJPW7GOBUjnHjvifgoA/8GNVHl
kx7DrqMbGmsCWMzR+1izD/ZMC4AuoFCp0TfrR08vkQknGt042IPkYmPcCRzx
hcuBdRNj6ds5zrQgPOzJtCAeirlsKio2mZzgFw8/bSJWXKPWKrE2ucvMCacr
uJTGesZnX6fua+fT/Oj8JVkObXWvKOlONPHqLAvZRAYnNwHESTukPGRN5jik
BiqdN8+W1QVPPPOuS2XEairWLos91rGWST6vlkjqVSSxVEhJKEYa91YU1axQ
6vUcwrSlGlx6qRLNl0LCQ6vAyJsr9JmZ6JsqdUoaTdF2fiM5AeMrf0S1qpRS
0GSMihKvagmcT89ehHkm5oY0sEsRMYusyUGdIuDm5AFyq7DKSEJiZAXjJJej
LCRIS5QlKQTZZmx3GV26IWDfpTzgVW4qV+eGSK0RyK3iyYazVFf0SbwJbm2E
K5GK7sT0ODGCmeadUqJYmXMo24BKR5GRdANYpoRg5v5UZWhLRyivYQGkYqbI
2Szka+eN8wOXiu35PNRk4rY5Ip2Dm5GNQoJRHRulyJJOO8Z5SRmKhHQ3wvUl
E2ge37KTqKnC2svd3QJ51IUSaA1CxvAMlaCkr4VPFL+Qximtot1jLxthYrYr
z7qDyOQbAMrhqh3gyDH5vlVDWGunApRQxT8bmImwViMpxiHJPiT5qKptkUvg
RMV5ydyrireicFPFDpnqoDAo3NO43yRmNM0zaYoEZJKcb5yD/lG/LAkFMdai
NCrniglRVAYFCenGcTD4iQzPogpJxGXRfQLujE95I1jMUXVqnlXM+kx1uIG7
NJY7D+S5hZwugG62jJQ1b3GQ1NJlmk6TnZWV6+vrNqiqbjuKL1Y4Oo2E6JVc
UpeVZUMveLlnVLi0DyyiWidc3BjjRrHatX4GCxPYv0IwlY5EzpVCExuNfzvv
KI3EvzEPoQ7M/LdzokH3b2jTwv8c+dkq/EVt1lbhI1RsDKUer/q/nezAqN1a
ebv/l4oFFlqvV7V+W9Z6o7R1k4au6LJZPUHJ4rfmTFDSZbuiy9vKLuud6llq
+/W4X/ts3iGsr1a1LD+G9bXq9mVQXV+vaF93FOsbdZOUbGJz7iQlnbYqO9UA
drtuprqeWwoQp/OOZGujqmX5kWxtVrcvg+7WVkX7uiPZ2q6bpLiJ7c7cSUo6
dSs7VQN2u1c3U21Phfu7G+39cOROk3lHs72W79E+8eYSum119Luv5zXtdrrm
jdfWkfK2vcq25ZjS7azW9Cg79m5nrapHHbZ0O7lrP2cjGzWtq7ayWdunfFVb
1X3qt5PD/vrtdDs1rSu20+3W9ildVbdX3ad2O90CGi+0rTwaz2muDvXF2cZC
7Td1+7WF2qvDxNo3i7Tf1u0XGr/XydovNEGvqzfQW6h9L2v/bqEOq3pFvbcL
dVjLOix0Zr3NPGJk9G1OT0seKmBvWY/tqh51LKK72qnuVk3qu6uVdHUum+iu
5qSpRXa3ulrdp35/a3Ud61ZZQ3IX2GNO6Fhoj5vVfer3uFXXsW6VNXR47h5P
d/vS264IUYbPxba16J81P7vN2MViAsX2f+4436TDoIW6ok7Z1zKswX4aeM+f
nRhqLCW1x0RE3zj9EeYECrzxBflaJLY/GqebCvz3YsR2w/fOz+4E9EXnxP3D
bTpnqCH/BFNfNJ3/O3PDvUs3cgazpvPKxVngQz/BQuyHPnz2Gr18QuedfxHN
Ym/2oen8FIFK/MoNpl4cSiSRGziv/T9i99JXL6d+TIaWi8v0fBZk6VHI0jm7
uMCHd9DM22UrpzJu9vL74Tj2rp1+kKSYL/rQD8eu82IWDt246fTH+DrsvHTj
WEXu7kYxwPoVKOBuGF0Za8J5otnFpWSWKdobGw1UeHGtnI2ffbYM66UAG9Vt
ncMxl2YF4ERWUnEYu0JLBVoVjGRfxnh5Y1yWeyxvJi1YRskbVY1MxUY54Y/y
rnUzE4kuLTmnakpLuamV1Llgw9crywvHMA8vWuhiTuGUHeUI06Uck0tmcZD/
eo411f+EL3tY+QO/JlPZq2gKSDHxU+dvz50ut1htk1vMAN8tJWGpc4pRJPsf
RpwCOZekkJ10VZGGrCaEw4vdQ4Ngx1nCuQKay1MD4dmwcXO5afYjJ4N4NtWp
UTNgMp6iXc2Nx4YNFKuarOHKP1K5FFXeJL1crFzK4e5hu70E/0rJlGw11bUs
dCGVgSQo5aFklOV2GwSI2loYaZRNg0k/ccBNHPCFN4o5YVbulIY3ThdbbdG0
syF+ZtiBZUsepffivohcUiURrlU2H8F94nOFW+mXzw+KM223AaIDRBtEGqs0
iPNcsGrAODNIYZ1FtG9mGVHZ6dNMOIlTZouS7JG5Z4Zrfsm5mVJmcF0GE1/b
jP3glcD1v+IxuGZ0rq6CSg84QFTBba236+7CQB3vfW/C3e7BnW7BADEItwYo
MnE//Ha47zyHOccxLDqFYwudFae37LScLrTZ5u0vHeK7/z6RoO+lF9Wyzp33
907W8LvuMoGo2ymA6NjFJ150sT2Oo2HgTW4FHszRGnpYc+TSPEmdedUbL2c9
yYU7IkBxmmCZyFo2DXBvuHa7BNcu3IQ513PQXTXb2ItRTQAB37JFnsZ40Wco
1BTiwV6Ar/e49eV3/tq+8uTfuCspF+3L/JYybR4amTbpBSy8kQy2qnSM/lKe
AQExAEat4U0LQQVdTGL4Zpo5m/zVeaPF5B6WL/5nscXPzhHplpTJeWV35DFQ
e6BQu2QBinVSbkj21eKSF1YJQeZ4dAeOy5l1cWhm/R+d/QA49J/MVx+OG6wB
AzqRWTm/rzB3yuM9nw1E5+dSMbJ89ffntesaF3Sx03nVFR9BUZAK2l88OXxS
FT67qkCdQGGeBRyjWEIEs4lzsoKUAph46gn+pyeF4UlheFIYvhaFoe7ua5Wh
VEsou/lfp97wtbDKJ83hM2kOn4hBPqL+sCiKP2kQX4YGcTpHg0gfQ4M4/TrI
4pMG8SgaRLetp2UA/LcVY4lYlargn1Pu0ruXpXJBW+WTtvEgd+dJ23jSNh5I
27glpcAuj0IpvlLt5Cthw0/aySfUTr5w5vuYmsyC1+FJk/kyNJnSQIISjWa4
8RgqTbaaJ5r6RFOd41lyKVGvZuVawgtcBBdIfWUWjN3NqKssV0oLYP8BRVn2
uclqaZMXfXXU536cpKq+sgy7lu9zzBWjUSq+SC+bOu/8XgDkv+m8xDxeh+7Q
C4xz15uVhFJ5lSPhue7nR/LkPfaknj2pZ1+jenZHqjfobtTTvEF385YUb9Dd
uj+9W4DaDbrbTz5zTxLRk0T0JBF9ORLRY+rMt7zkT7rzF6I7v56nNE8eRWl+
/cQbnniD8AYc9vXx4cAJkMY6gDCj9+QUsTvf7Ej9OI10wY/iSVN80hSfNMUv
UVOsu/GsFN7tvn+tCtMTN3ziho/GDR9VS1gQs5/Ugy9CPShL/M/qgaTQ/iwp
Ccqyl5t4Q4uQ0hCY70FSmY4zjCiX/QgyQkvbB+HY+8Afm/q3Y7O0zq//MNu3
ur+yFGmIkQ8hSN5LlLyLMOkocbKWgYhA+XUxkAETX5EpnXlS5QlilGNwWcEM
xWZPGKOcO0ueyzyK4MrdyI0FFOc2smeu562Fz7uewgljGZ7DCeOZyQ8tSDNL
PFG4ZtzdMrHSuo+/ap3uhE/dnqZMlD1hrLAblsrFJ8g++b9bir6NE1Yz6Ljv
Yw10Fnw4OOl2NbS7hK+ayZ10VxVc76w44Shr/2H4213PILqRx99SxOpuKmKZ
Q3BY6FK3t7VyePTyEGnOMjbeasvg2ws4T5/0CJ9+if3Uq0O83OWwpOMMJiwm
o3yLK0KeViPdyle4rLzhA9fV/UTx8jkEJyXxM4bLzxNJ/hKi7F1k2QcQZh88
aH6OPPs5QuefRNonkfbuzOhJpP0iRIInkVaO+45BrvYRlPD5skDXJ9H2SbT9
EkXbhw7ofnwJ97YyypOM+yXIuPkczeUy7ucI7n6ScZ9k3LtzpScZ94uQDf7j
ZdxuJulkgKkPlcRugm33tfY+mXs/E94/ycQLysS3DCPGLo8SRvwZ5Odbyj9P
8vOXID9XFWcql6M/a0jxk0D9JFDfnaU9CdRfhGDxJFBz57tFhZmidU1kGDZb
rWxWHR2G/dbK+t0lQgz/WyBKDOdc/6TaQj5a7EldeFIXPqO6cMebL4pD3a2H
JreNB8U+jxUPinM9TjzoZ1B+7iizPilBX4QSlK9bWqH9fJbY0Ce150ntuTtr
flJ7vggB6UntMdQehExViNcijwf1YV5P4v2TeP+5xftaDJ/zBFCP3Z9DtL2l
QPIk035Gmfb/B137zILj0gEA

-->

</rfc>

