<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.3.8) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-yang-spring-srv6-verification-04" category="std" consensus="true" submissionType="IETF" xml:lang="en">
  <front>
    <title abbrev="SRv6 Path Verification">SRv6 Path Verification</title>

    <author initials="F." surname="Yang" fullname="Feng Yang">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <country>CN</country>
        </postal>
        <email>yangfeng@chinamobile.com</email>
      </address>
    </author>
    <author initials="X." surname="Zhang" fullname="Xiaoqiu Zhang">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <country>CN</country>
        </postal>
        <email>zhangxiaoqiu@chinamobile.com</email>
      </address>
    </author>
    <author initials="C." surname="Lin" fullname="Changwang Lin">
      <organization>New H3C Technologies</organization>
      <address>
        <postal>
          <country>CN</country>
        </postal>
        <email>linchangwang.04414@h3c.com</email>
      </address>
    </author>
    <author initials="H." surname="Zhang" fullname="Han Zhang">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <country>CN</country>
        </postal>
        <email>zhhan@tsinghua.edu.cn</email>
      </address>
    </author>

    <date year="2026" month="February" day="10"/>

    <area>RTG</area>
    <workgroup>SPRING</workgroup>
    

    <abstract>


<?line 47?>

<t>SRv6 is being rapidly deployed and is currently primarily used in trusted-domain backbone networks. However, we have also observed that SRv6 is beginning to extend toward customer site devices, e.g., SD-WAN and enterprise network deployments. Both of the scenarios can be deployed in third-party clouds or at customer sites. This introduces certain security risks, such as packet injection and path manipulation attacks. Section 6 of <xref target="I-D.draft-ietf-spring-srv6-security"></xref> identifies these risks as well, including Section 6.2.1 on Modification Attacks and Section 6.2.3 on Packet Insertion. This proposal mitigates these risks by enhancing the HMAC mechanism defined in <xref target="RFC8754"></xref>.</t>



    </abstract>



  </front>

  <middle>


<?line 51?>

<section anchor="introduction"><name>Introduction</name>

<t>SRv6 is being rapidly deployed and is currently primarily used in trusted-domain backbone networks. However, we have also observed that SRv6 is beginning to extend toward end-user devices, e.g., in SD-WAN deployments. SD-WAN can be deployed in third-party clouds or at customer sites, causing the physical boundary of SRv6 to become blurred. This introduces certain security risks, such as packet injection and path manipulation attacks. Section 6 of <xref target="I-D.draft-ietf-spring-srv6-security"></xref> identifies these risks as well, including Section 6.2.1 on Modification Attacks and Section 6.2.3 on Packet Insertion. This proposal mitigates these risks by enhancing the HMAC mechanism defined in <xref target="RFC8754"></xref>.</t>

<t><xref target="RFC8754"></xref> describes how to use the HMAC TLV to verify the integrity and authenticity of the SRH during the transmission process, and to prevent the SRH from being maliciously tampered with or forged. Although the HMAC mechanism specified in RFC 8754 can verify the integrity of the entire SID List, if we want to force the SRv6 endpoints the packet must pass through during forwarding, it is necessary to retain some information each time the packet passes through an SRv6 endpoint. This draft proposes an enhancement to HMAC specified by RFC 8754 that provides the capability to enforce the packet's forwarding path to go through all or certain SRv6 endpoints in the SID List. Meanwhile, the SRv6 HMAC mechanism performs end-to-end cryptographic verification of the entire IPv6 header and SRH header, which significantly increases the processing performance and storage overhead of forwarding chips, making it challenging to implement in practical commercial deployments.</t>

<t>This document proposes a path verification mechanism for SRv6, which adopts a hop-by-hop cryptographic computation on the destination segment identifier at each node, combined with an end-to-end verification at the last hop. Although the HMAC mechanism specified in RFC 8754 can verify the integrity of the entire SID List, if we want to force the SRv6 endpoints the packet must pass through during forwarding, it is necessary to retain some information each time the packet passes through an SRv6 endpoint. This draft proposes an enhancement to HMAC specified by RFC 8754 that provides the capability to enforce the packet's forwarding path to go through all or certain SRv6 endpoints in the SID List. And this approach also significantly reduces the processing overhead associated with hop-by-hop path verification.</t>

<section anchor="requirements-language"><name>Requirements Language</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

</section>
<section anchor="terminology"><name>Terminology</name>

<t>ALG:  authentication algorithm</t>

<t>DA:   destination address in IPv6 header</t>

<t>HMAC: Hashed Message Authentication Code</t>

<t>SID:  Segment Identifier, defined in <xref target="RFC8402"></xref></t>

<t>SRH:  Segment Routing Header, defined in <xref target="RFC8402"></xref></t>

<t>SRv6: SR over IPv6, defined in <xref target="RFC8402"></xref></t>

</section>
</section>
<section anchor="process"><name>Process</name>

<t>The improved SRv6 path verification mechanism proposed in this document follows the processing flow at the head node, intermediate nodes, and tail nodes as described below:</t>

<figure align="center" title="Example topology"><artwork type="ascii-art"><![CDATA[
Attack traffic: SRH (P1, P3, PE2) w/ HMAC captured from user traffic
                  |         
                  |     +----+                      
                  +---->| P2 |                     
                       /+----+\                    
                      /        \                   
     +------+      +-+--+     +-+--+      +------+   
     | Head |------| P1 |-----| P3 |------| Tail |   
     +---+--+      +----+     +----+      +------+   
         |
         +<----  User traffic: SRH (P1, P3, PE2) w/ correct HMAC
]]></artwork></figure>

<t>Head Node:</t>

<t>The head node sends an IPv6/SRv6 packet. It encrypts the destination segment identifier (i.e., the SID of the first intermediate node) using a predefined encryption algorithm (e.g., HMAC, CRC, or other generic algorithms) and a pre-shared key, generating verification information 1. This verification information 1 is then inserted into a specified field of the packet (e.g., the Segment Routing Header (SRH) label field, SRH TLV field, path segment field, or IPv6 extension header), In this document, it is assumed that the mechanism is implemented by extending the "SRv6 SID Verify TLV" and incorporating it into the SRH (Segment Routing Header). The packet, now containing verification information 1, is forwarded to the first intermediate node.</t>

<t>Intermediate Nodes:</t>

<t>The first intermediate node receives the IPv6/SRv6 packet from the head node, which includes verification information 1 and the destination segment identifier of the next hop (i.e., the SID of the second intermediate node). The intermediate node reads verification information 1 and the segment identifier of the next hop from the packet, and then encrypts the verification information 1 and the segment identifier of the next hop using the same predefined encryption algorithm and pre-shared key, respectively. It then sums up verification information 2 through a predefined operation (e.g., weighted summation), generating verification information 2, which will be inserted into the same specified field of the packet, which is then forwarded to the second intermediate node. Subsequent intermediate nodes repeat this process, sequentially propagating the combined results of their own and all preceding nodes' calculations.</t>

<t>Tail Node:</t>

<t>The tail node receives the packet from the last intermediate node, which carries the combined verification information. It will compare the combined verification information with pre-calculated path verification value. If they do not match, the packet is considered routed by unexpected path and can be discarded. If they match, the packet strictly follows the SID List carried in the packet. In case of a mismatch, tail node can compare these results with its own calculations to identify the specific node where the verification failed, enabling traceability of the verification anomaly.</t>

<t>In summary, the algorithm works in the following way. Define ALG_n(x) as the authentication algorithm, in which n is the node index along the path, with the head being the 0th node.</t>

<figure align="center"><artwork><![CDATA[
ALG_n(x) = ALG(k(n), x), k(n) is the key for node n, n >= 0

]]></artwork></figure>

<t>Define auth(n) as the path verification information, HMAC authentication code, which is calculated by node n and sent out in packet towards next SRv6 end point. the auth(n) <bcp14>SHOULD</bcp14> be calculated in the following manner.</t>

<figure align="center"><artwork><![CDATA[
if n == 0: auth(0) = 0
if n >= 1: auth(n) = ALG_n(auth(n-1) + DA)

]]></artwork></figure>

<t>Suppose the SRv6 path starts from Node1 and ends on Node4, the path verification information would be computed as below on each node. Node1: auth(1) = ALG_1(auth(0) + DA) = ALG_1(DA); Node2: auth(2) = ALG_2(auth(1) + DA); Node3: auth(3) = ALG_3(auth(2) + DA); Node4: auth(4) = ALG_4(auth(3) + DA). Operator can enable either hop by hop verification or tail node verification, because auth(n) can be pre-computed by SDN controller and updated to each node.</t>

<t>In this way, the intermediate nodes specified by in the SID list will not be allowed to be bypassed since every hop will have fingerprint in the auth(n).</t>

</section>
<section anchor="extensions"><name>Extensions</name>

<section anchor="srv6-sid-verify-tlv"><name>SRv6 SID Verify TLV</name>

<t>A new SRv6 SID Verify TLV is requested from "Segment Routing Header TLVs" in this document.</t>

<figure align="center" title="SRv6 SID Verify TLV"><artwork type="ascii-art"><![CDATA[
0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Type(TBD)   |    Length     | Algorithm ID  |    Key Len    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Auth Key ID (variable)                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                              //
|                      Signature (variable)
//
|                                                              //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type (1 octets): TBD, SRv6 SID Verify TLV

Length (1 octets): The length of the variable-length data in bytes.

Algorithm ID(1 octets): The ID of encryption Algorithm.

Key Len(1 octet): Length of pre-shared

Auth Key ID:  pre-shared key to encrypt the SID.

Signature:  encrypted SID data, variable, in multiples of 8 octets.

]]></artwork></figure>

</section>
</section>
<section anchor="IANA"><name>IANA Considerations</name>

<section anchor="srv6-sid-verify-tlv-1"><name>SRv6 SID Verify TLV</name>

<t>A new SRv6 SID Verify TLV is requested from "Segment Routing Header TLVs".</t>

<texttable align="center" title="Code Point">
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>TBD</c>
      <c>SRv6 SID Verify TLV</c>
      <c>This document</c>
</texttable>

</section>
</section>
<section anchor="Security"><name>Security Considerations</name>

<t>This document should not affect the security of the Internet.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC8402">
  <front>
    <title>Segment Routing Architecture</title>
    <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
    <author fullname="S. Previdi" initials="S." role="editor" surname="Previdi"/>
    <author fullname="L. Ginsberg" initials="L." surname="Ginsberg"/>
    <author fullname="B. Decraene" initials="B." surname="Decraene"/>
    <author fullname="S. Litkowski" initials="S." surname="Litkowski"/>
    <author fullname="R. Shakir" initials="R." surname="Shakir"/>
    <date month="July" year="2018"/>
    <abstract>
      <t>Segment Routing (SR) leverages the source routing paradigm. A node steers a packet through an ordered list of instructions, called "segments". A segment can represent any instruction, topological or service based. A segment can have a semantic local to an SR node or global within an SR domain. SR provides a mechanism that allows a flow to be restricted to a specific topological path, while maintaining per-flow state only at the ingress node(s) to the SR domain.</t>
      <t>SR can be directly applied to the MPLS architecture with no change to the forwarding plane. A segment is encoded as an MPLS label. An ordered list of segments is encoded as a stack of labels. The segment to process is on the top of the stack. Upon completion of a segment, the related label is popped from the stack.</t>
      <t>SR can be applied to the IPv6 architecture, with a new type of routing header. A segment is encoded as an IPv6 address. An ordered list of segments is encoded as an ordered list of IPv6 addresses in the routing header. The active segment is indicated by the Destination Address (DA) of the packet. The next active segment is indicated by a pointer in the new routing header.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8402"/>
  <seriesInfo name="DOI" value="10.17487/RFC8402"/>
</reference>
<reference anchor="RFC8754">
  <front>
    <title>IPv6 Segment Routing Header (SRH)</title>
    <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
    <author fullname="D. Dukes" initials="D." role="editor" surname="Dukes"/>
    <author fullname="S. Previdi" initials="S." surname="Previdi"/>
    <author fullname="J. Leddy" initials="J." surname="Leddy"/>
    <author fullname="S. Matsushima" initials="S." surname="Matsushima"/>
    <author fullname="D. Voyer" initials="D." surname="Voyer"/>
    <date month="March" year="2020"/>
    <abstract>
      <t>Segment Routing can be applied to the IPv6 data plane using a new type of Routing Extension Header called the Segment Routing Header (SRH). This document describes the SRH and how it is used by nodes that are Segment Routing (SR) capable.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8754"/>
  <seriesInfo name="DOI" value="10.17487/RFC8754"/>
</reference>
<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>



    </references>

    <references title='Informative References' anchor="sec-informative-references">




<reference anchor="I-D.draft-ietf-spring-srv6-security">
   <front>
      <title>Segment Routing IPv6 Security Considerations</title>
      <author fullname="Nick Buraglio" initials="N." surname="Buraglio">
         <organization>Energy Sciences Network</organization>
      </author>
      <author fullname="Tal Mizrahi" initials="T." surname="Mizrahi">
         <organization>Huawei</organization>
      </author>
      <author fullname="tongtian124" initials="" surname="tongtian124">
         <organization>China Unicom</organization>
      </author>
      <author fullname="Luis M. Contreras" initials="L. M." surname="Contreras">
         <organization>Telefonica</organization>
      </author>
      <author fullname="Fernando Gont" initials="F." surname="Gont">
         <organization>SI6 Networks</organization>
      </author>
      <date day="2" month="February" year="2026"/>
      <abstract>
	 <t>   SRv6 is a traffic engineering, encapsulation and steering mechanism
   utilizing IPv6 addresses to identify segments in a pre-defined
   policy.  This document discusses security considerations in SRv6
   networks, including the potential threats and the possible mitigation
   methods.  The document does not define any new security protocols or
   extensions to existing protocols.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-spring-srv6-security-11"/>
   
</reference>



    </references>

</references>



  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+1a63YbtxH+v0+B0j9C1SQtSorjsLEbRpIjnUqyKslu0tQn
B9wFSdR7y2JXNGs5z9Jn6ZP1mwGwXN5spUlzTnuiHEdYLAaY64eZWXW73cCU
Mo2+l3GWqoEoi0oFOi94ZMq93d3Pd/eCUJYDYcooMNUo0cboLC3nOZafHt88
D2Sh5EBc3XwdzCYDcX15dXrxdRBEWZjKBGuiQo7L7lymk67JC02/itvH3VtV
6LHGztisu3sQBKUuYyy/vrp9LC5lORWvGisCORoV6nbr6xjbD4RKg0BW5TQr
BkE3EEKnZiCe98S3eItHy89zlU78TFaA6nCqUynOs5GOFebCrErLYo75Czyp
ROp4IIj9MQi/DGlxwmt7YZYsjvmmJ/46bZ7zjZbZD7qqZ+991j+I4K2l3n7e
YU+c6bQ+7ZCIZvjnZvm0CzUTJ/uH4kaF0zSLs4lWZtupsU5Dv0dv9+Cgf/Dl
dD9cPvPEySjqY09kuizgjYGFp5UUL1MNExtdzrfLCcIvS0fQU1HVC2HANCsS
GPVWDbD06vnhk4PdPT/87NODQaDTcXPJafeoZ31Mq3K85GNGhVUBDgZB0O12
hRyZspBhGQTsRdqIkcJaUchcR/FcRCqPs7mKBAKC3oK4UGmJN9gzkYXGqDJ4
r1MbHirqRhmEScVIhm9GiCCRqnKWFW9MT5xkMwUNdMRMiam8VULGJhPZyKji
FnuUU1mKBR8TnabES5kJ9bZUYKDMZrKIwIQps0QVAqpUYPFWh8p0hOpNeh1x
fdT9y/CC+QWjqgCfpubByZPgDdj5KkPMZGOcq4QJVQpxMogI+43UQnKSbKqL
qJvLopyLMM6qyMCyAswucYIdb6bgXMOuWVSBJxGqoiRdeK0LMPMGrJoqnApp
RA4dqRIUf1chBS2znVMoJzLVeRVLO1uWWIj9r92yx8T2d/cw82uhIwgLVAA3
kBOqYBbo8JmK4w7ODuMqIj3Xm/f2en2BwXkW1XAihpYH5rC5cp9WXlo5TlNY
kt44TeRFlmdGxiLRpZ7IcoWH0RwmgsOHbGUY4eR8eCgSRUGnTQITjHVqLfCd
c/XXPeu3iY4iwEXwAGdabTPm/S95MYZdHFqsOjAOdT685Kxu7j/3zg5oK+NV
nU/nBqaNxQg4FMliTh7FXIPRkQLGKTGKSU/Rb279q7h1PcYCExZ6hG2n2Yzs
ATdZbHRz9ormOFmY8zQsoyZsB5KCbnvSTUgTDt2ur05EVBWeIUB+alzWQtLA
prCeZN/EM7w7LWu6cZElLp4SGWPbrDKIl1ImuYJ3iJkmFC0EbqAJOcswRrZR
TaabRDe5CsloLDzkFSQw+/RGcRz3JE0BZk6PcJObEsYdU+zhWi6JYRwcKscu
/BdxlWfYw1g/tyZMEAoYG5osmDunDhBTNGKIbUsK2VSROigisHehrKNTONSX
LJSmJDy91IlqHkL7q8UJkGqJIec97NrOhxQ5nvMWlSgrD+tsoSm4U60pxhaQ
3sL9rXyhzCUyIdIWIUy6UIZl6hPTENHGINZNsgWXcUzW8yG9okKGl4Xqe+Jc
yXQ2RerVWWh8xchwC1KUYYQrsy5hXljM8zKbAJCnOhTNRHfFyKeX2HCqZATY
4piEB9pH4C1opwCzScrUDOCIc+TaxmnD+TKLarkgxfJGgMJCTpTIcDhtSOc2
NIOkMkcMJPINPcETIE0cI7112K2TPLYW0hQySJkYPYGTANhQY9hE6yCwps7C
imkW1rYmWFLAQnPghzXqRZVRlpdENM3y7mjexa8VTeL8vCqdIq2t4BklEmSe
MmpiefZoyfcCO2+aRbAh6EcMRhzF7Iu1zZaYlBYQYok4Ahu/hfn/d5gP6S4g
MWQOPkgLnOQsxx7Qn9OBlcirIwx6yhAapXevhhevRQFC5sEDcaV+qOADHETi
DDVUhZClYFLijZoLJGBIblrnL69vWh37W1y84PHV8Z9fnl4dH9H4+mR4dlYP
Arfi+uTFy7OjxWhBefji/Pz44sgSY1YsTQWt8+G3LXs9tl5c3py+uBietVzi
1Yhx1Pw2d2LPRt2hSHBpAn+dczR8dXj5r3/2D8S7d7+Duff6/c/fv3cPT/qf
HeBhhtvbnpalULJ9hIrnAWyhZEG7kDXhErqEVTqU9BhkCimAslBQ5O+/I828
HogvRmHeP3jmJkjgpUmvs6VJ1tn6zBqxVeKGqQ3H1Npcml/R9DK/w2+Xnr3e
G5Nf/BH1uRLd/pM/PgvYe25UkWgu6udBMDz7eiAWyZBDsXiSAXKmSRAcDfF6
CSxlFBVwYdJv4xYKAgpUKuvNFCY8J9DANTJc3vgQaIrq4/QIm1470D2tQbez
lvOhgH9N1cpJY/1VVpUUPyfuuttGc/uYej4cZszotpUPxKUNShtAuMGAKCqy
sf+ha8iBVrTu4+MsjrPZWsSPMelvCI58e7lwHCQqIgjgKZ9kSh3bZ3LdRXiM
FPYZBMG7AQwFpHnaCrmEbyG2uPjqUovtaUuaUOsu5lqCO2RPW8dvJd3PiL+c
zd96HwQ//vhjYLN7ynfHkHPA2UT7st8Rl/v4d7y3I2aPLBAjmsqK0llOd7ku
c1SBWPu5q0dbXz5Eldp9uP52CxEvf3YnLvcam3+Ehn8e2YP+9hNoHvnBJqJg
wU7N/8PuQz9uDJuLLNUdu664s/MQpu/GGO4vpm/I/HdLZ61s+nB1uH4Wn7cY
PvyCXgvxsmG4LeYOMxS1YclmZycJmOsL+OPARkrtwsif0ojvboqzRy5w6L7t
iVPkUSknY+Y+aVdb91SvU9+yLuUZ68KU63GyI2yhLqkY88HtTluCMdG2PQOS
pSMOr/A/XPIZti7ERKUI73Cx2OzY+pA27ZqpJG/HrdqxKyVjzxIiNDOhvktr
ti+gpIowkfqiyDIYPnAfykaOg//FkZfdZVNOAlbMRiAUbZhxB5kn4MHu0GHD
Uh3sHhnMvNLdXGbB0TZduNC1eL7TQT2/DGs+JUS+gmfXwSGGFpBI/Q9fAdhk
zTZzfEXdYt8gy76yGS64a9l2UwqHyzOnX11arfjiur1Z5h3StldRBz4xg9um
lLl92EgdYtQlgoqr+Q94GTKF0+YcRYBxIbCFBClfqPSty/lWg8Ji58olYCsZ
245RH/Qfvho+HknOfVIYgDLKLZFlFBQWbQgtq9lNksnoXuzdg6VaD96AjjZd
hoxf5rBFT8/IRH0UMbgVtwIASHty6n3dqnjOyMa8IhiMqPLtbO4tqovmsVnO
aIIFLrZnSk+mFDbY0ZLu3A909rz7zDQSXs6sm9BSy/xBhKld0MHTWnhsc5We
uK5GBhWJrfpXcxloDel4aaGkbqK59RoZ+pwTKTmxQnIV56ttKLyK4QWWUQ2j
zmyTlBL7nIKMkYXP+QS5SRy6nim3Fuj+bFxXdTq1HJ2rMcml+5oYXjuhLArt
i03P5jbDsI+wTaj/wIXPfchsFUjO5yVS0YZE9FbGFZR/yrqZA6XBKEp7WYbT
TlMyauRDIwgNcmQ4okPmCqFB7uw3J736trk2Idt+sf36vqbEtUn1bTPb9aWx
U1TkS+Y6HUjxxiiyqBQJrgy3bW0b4qChLeoWOydgrWjyhlm6ZGvuO9nAty0T
5+eh3XFG5d46kIxxpMIFqFI5itnzChkq3z1wobHc20mzRCLy6T6wMVrMrUYW
sMHfPrzQVjG090wCMI448AUqru/T9tsdSuqZeEvtxZ84rNelLiqtQDqN1FtB
n93dNwpYr2PVU18qthFNj7vl1F9jawWDS/+DmqWnxF37TZuQ5y3+0cifTZ0F
6rwxD6i1U/Hsqdh1OzjZSBYikabmbKub23RsVfyweRsa0YgAuKw92vYpCW3g
y9xntA5pPxgZC/m+cyNcs8lrmrhzBfhINbdfs1kiU0DvZrWxzHoMXp5CBwO7
8y7pb9dOQzX9QX3gU2d0+9zt74iH4mi443R3XeVURy56djZPK1G5GYtLhGJ9
962WPlulPHPQ+biS4ZBVHLGo3ALlVoutIIVv3FkQ5zMcy33Pcr/tJWOG61mM
/8AUe45iz7/ba/sdmMKu2ner9v2q/banaqw6cKsO/KqDtqfiVT3xgq9M6s9x
nxCBq4TSnMbTFQ8PoV/LbfOiAS7NNx36fCfpk5G3kgM/Bl6vLGx5fXTBWWUB
z3Dd9iqP2Geox1hrkGGBbzlEe6fu3a7chkudzEY/MSbQ5LuCUHxEmAIb2TPw
NJpzOxV+r6lTTx9WrbBMwp9XEYAT/o5vm+8Nh6emoTj2Cb7hJtCGRBw4gNiZ
bXpFoVjQlU3ffK1PtraUIVht1tt+m8Loo+2KTcWCh6zdDUV5f8Pc3oa5fVD3
8WZfHIhPxWPxmXgiPhc/aS6gCv9n/RdQaX8Dyds3Xx3tCNcQOVPpBOFs2wTD
+lqBDuz7PwGEscaW9b8MDxt/qG/Hh+Hk9q0sNMXaztqy/yoP9/t59GjbDtdw
NkndqoYEwfblP+HAny90QJYX7b7IkICVZmcg4AWdzVHpfGJpMSWqdtpnKk7C
rpsGQEmKwtGc/uIGod3wpdWdbDnYKIPqxSB0HudpQHJWH7wokHDAwmMGYqV0
sh9jeHsPeNi5tg/Wu7fUdgU3xHynFokToQQ5oM5jxcXAE8d/z4HBA3E6vBiK
Q5fmurTw3QOaff8rwN1GdHMgRi1vcUlJCGHXnXhFabugcD7ijq7V+NLPnbhS
YySthPT8DDK4h3u3iV/3avlr6h0p5tr/7cmacvyb96tfYc2Ucwa6h+R4TD1A
V/5Vzc+Q3BNJVen+0oj+ACj4NzFoRKYVKgAA

-->

</rfc>

