<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.1 (Ruby 3.0.2) -->
<?rfc strict="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-uuidrev-rfc4122bis-13" category="std" consensus="true" submissionType="IETF" obsoletes="4122" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.1 -->
  <front>
    <title abbrev="UUID">Universally Unique IDentifiers (UUID)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-uuidrev-rfc4122bis-13"/>
    <author initials="K. R." surname="Davis" fullname="Kyzer R. Davis">
      <organization>Cisco Systems</organization>
      <address>
        <email>kydavis@cisco.com</email>
      </address>
    </author>
    <author initials="B. G." surname="Peabody" fullname="Brad G. Peabody">
      <organization>Uncloud</organization>
      <address>
        <email>brad@peabody.io</email>
      </address>
    </author>
    <author initials="P." surname="Leach" fullname="P. Leach">
      <organization>University of Washington</organization>
      <address>
        <email>pjl7@uw.edu</email>
      </address>
    </author>
    <date year="2023"/>
    <area>ART</area>
    <workgroup>uuidrev</workgroup>
    <keyword>uuid</keyword>
    <abstract>
      <?line 274?>

<t>This specification defines the UUIDs (Universally Unique IDentifiers) and the UUID Uniform Resource Name (URN) namespace. UUIDs are also known as GUIDs (Globally Unique IDentifiers).
A UUID is 128 bits long and is intended to guarantee
uniqueness across space and time.  UUIDs were originally used in the
Apollo Network Computing System and later in the Open Software
Foundation's (OSF) Distributed Computing Environment (DCE), and then
in Microsoft Windows platforms.</t>
      <t>This specification is derived from the DCE specification with the
kind permission of the OSF (now known as The Open Group).
Information from earlier versions of the DCE specification have been
incorporated into this document. This document obsoletes RFC4122.</t>
    </abstract>
  </front>
  <middle>
    <?line 288?>

<section anchor="Background">
      <name>Introduction</name>
      <t>This specification defines the UUIDs (Universally Unique IDentifiers) and the UUID Uniform Resource Name (URN) namespace. UUIDs are also known as GUIDs (Globally Unique IDentifiers).
A UUID is 128 bits long and requires no central
registration process.</t>
      <t>The use of UUIDs is extremely pervasive in computing.  They comprise
the core identifier infrastructure for many operating systems
such as Microsoft Windows and applications such as the Mozilla Web browser and in
many cases, become exposed in many non-standard ways.</t>
      <t>This specification attempts to standardize that practice as openly as
possible and in a way that attempts to benefit the entire Internet.
The information here is meant to be a concise guide for those wishing
to implement services using UUIDs either in combination with URNs <xref target="RFC8141"/> or otherwise.</t>
      <t>There is an ITU-T Recommendation and an ISO/IEC Standard <xref target="X667"/> that are
derived from <xref target="RFC4122"/>.  Both sets of
specifications have been aligned and are fully technically
compatible.
Nothing in this document should be construed to override the DCE standards that defined UUIDs.</t>
    </section>
    <section anchor="motivation">
      <name>Motivation</name>
      <t>One of the main reasons for using UUIDs is that no centralized
authority is required to administer them (although two formats may leverage optional
IEEE 802 node identifiers, others do not).  As a result, generation
on demand can be completely automated and used for a variety of
purposes.  The UUID generation algorithm described here supports very
high allocation rates of 10 million per second per machine or more if
necessary, so that they could even be used as transaction IDs.</t>
      <t>UUIDs are of a fixed size (128 bits), which is reasonably small
compared to other alternatives.  This lends itself well to sorting,
ordering, and hashing of all sorts, storing in databases, simple
allocation, and ease of programming in general.</t>
      <t>Since UUIDs are unique and persistent, they make excellent Uniform
Resource Names.  The unique ability to generate a new UUID without a
registration process allows for UUIDs to be one of the URNs with the
lowest minting cost.</t>
      <section anchor="update-motivation">
        <name>Update Motivation</name>
        <t>Many things have changed in the time since UUIDs were originally created.
Modern applications have a need to create and utilize UUIDs as the primary
identifier for a variety of different items in complex computational systems,
including but not limited to database keys, file names, machine or system
names, and identifiers for event-driven transactions.</t>
        <t>One area in which UUIDs have gained popularity is database keys.
This stems from the increasingly distributed nature of modern applications.
In such cases, "auto increment" schemes often used by databases do not work
well, as the effort required to coordinate sequential numeric identifiers across
a network can easily become a burden.
The fact that UUIDs can be used to create unique, reasonably short values
in distributed systems without requiring coordination makes them a good
alternative, but UUID versions 1-5, which were originally defined by <xref target="RFC4122"/>, lack certain other desirable characteristics:</t>
        <ol spacing="normal" type="1"><li>
            <t>Non-time-ordered UUID versions such as UUIDv4 (described in <xref target="uuidv4"/>) have poor database index
  locality.
  This means that new values created in succession are not close to each other in
  the index and thus require inserts to be performed at random
  locations.
  The resulting negative performance effects on common structures used for
  this (B-tree and its variants) can be dramatic.</t>
          </li>
          <li>
            <t>The 100-nanosecond Gregorian epoch used in UUIDv1 (described in <xref target="uuidv1"/>) timestamps is uncommon
  and difficult to represent accurately using a standard number format such
  as <xref target="IEEE754"/>.</t>
          </li>
          <li>
            <t>Introspection/parsing is required to order by time sequence, as opposed to
  being able to perform a simple byte-by-byte comparison.</t>
          </li>
          <li>
            <t>Privacy and network security issues arise from using a MAC address in the
  node field of UUID version 1.
  Exposed MAC addresses can be used as an attack surface to locate network interfaces
  and reveal various other
  information about such machines (minimally manufacturer, potentially other
  details). Additionally, with the advent of virtual machines and containers,
  MAC address uniqueness is no longer guaranteed.</t>
          </li>
          <li>
            <t>Many of the implementation details specified in <xref target="RFC4122"/> involved trade
  offs that are neither possible to specify for all applications nor
  necessary to produce interoperable implementations.</t>
          </li>
          <li>
            <t><xref target="RFC4122"/> did not distinguish between the requirements for generating a UUID
and those for simply storing one, although they are often different.</t>
          </li>
        </ol>
        <t>Due to the aforementioned issues, many widely distributed database applications
and large application vendors have sought to solve the problem of creating
a better
time-based, sortable unique identifier for use as a database key. This has
led to numerous implementations
over the past 10+ years solving the same problem in slightly different ways.</t>
        <t>While preparing this specification, the following 16 different implementations
were analyzed for trends in total ID length, bit layout, lexical formatting/encoding,
timestamp type, timestamp format, timestamp accuracy, node format/components,
collision handling, and multi-timestamp tick generation sequencing:</t>
        <ol spacing="compact" type="1"><li>
            <t><xref target="ULID"/> by A. Feerasta</t>
          </li>
          <li>
            <t><xref target="LexicalUUID"/> by Twitter</t>
          </li>
          <li>
            <t><xref target="Snowflake"/> by Twitter</t>
          </li>
          <li>
            <t><xref target="Flake"/> by Boundary</t>
          </li>
          <li>
            <t><xref target="ShardingID"/> by Instagram</t>
          </li>
          <li>
            <t><xref target="KSUID"/> by Segment</t>
          </li>
          <li>
            <t><xref target="Elasticflake"/> by P. Pearcy</t>
          </li>
          <li>
            <t><xref target="FlakeID"/> by T. Pawlak</t>
          </li>
          <li>
            <t><xref target="Sonyflake"/> by Sony</t>
          </li>
          <li>
            <t><xref target="orderedUuid"/> by IT. Cabrera</t>
          </li>
          <li>
            <t><xref target="COMBGUID"/> by R. Tallent</t>
          </li>
          <li>
            <t><xref target="SID"/> by A. Chilton</t>
          </li>
          <li>
            <t><xref target="pushID"/> by Google</t>
          </li>
          <li>
            <t><xref target="XID"/> by O. Poitrey</t>
          </li>
          <li>
            <t><xref target="ObjectID"/> by MongoDB</t>
          </li>
          <li>
            <t><xref target="CUID"/> by E. Elliott</t>
          </li>
        </ol>
        <t>An inspection of these implementations and the issues described above has
led to this document which intends to adapt new UUIDs to address these issues.</t>
        <t>Further, <xref target="RFC4122"/> itself was in need an overhaul to address a number of topics such as but not limited to the following:</t>
        <ol spacing="normal" type="1"><li>
            <t>Miscellaneous erratas. Mostly around bit layout clarifications which lead to inconsistent implementations.</t>
          </li>
          <li>
            <t>Decouple other UUID versions from UUIDv1 bit layout so that fields like "time_hi_and_version" do not need to be referenced within a non-time-based UUID while also providing "UUIDv1 like" definition sections for UUIDv3, UUIDv4, and UUIDv5.</t>
          </li>
          <li>
            <t>Provide implementation best practices around many real-world scenarios and corner cases observed by existing and prototype implementations.</t>
          </li>
          <li>
            <t>Update the document to address security best practices and considerations for the modern age as it pertains MAC addresses, hashing algorithms, secure randomness, and other topics.</t>
          </li>
          <li>
            <t>Provide implementations a standard-based option for implementation specific and/or experimental UUID designs.</t>
          </li>
          <li>
            <t>Provide more test vectors that illustrate real UUIDs created as per the specification.</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <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="acronyms">
        <name>Abbreviations</name>
        <t>The following abbreviations are used in this document:</t>
        <dl indent="14">
          <dt>UUID</dt>
          <dd>
            <t>Universally Unique Identifier</t>
          </dd>
          <dt>UUIDv1</dt>
          <dd>
            <t>Universally Unique Identifier Version 1</t>
          </dd>
          <dt>UUIDv2</dt>
          <dd>
            <t>Universally Unique Identifier Version 2</t>
          </dd>
          <dt>UUIDv3</dt>
          <dd>
            <t>Universally Unique Identifier Version 3</t>
          </dd>
          <dt>UUIDv4</dt>
          <dd>
            <t>Universally Unique Identifier Version 4</t>
          </dd>
          <dt>UUIDv5</dt>
          <dd>
            <t>Universally Unique Identifier Version 5</t>
          </dd>
          <dt>UUIDv6</dt>
          <dd>
            <t>Universally Unique Identifier Version 6</t>
          </dd>
          <dt>UUIDv7</dt>
          <dd>
            <t>Universally Unique Identifier Version 7</t>
          </dd>
          <dt>UUIDv8</dt>
          <dd>
            <t>Universally Unique Identifier Version 8</t>
          </dd>
          <dt>URN</dt>
          <dd>
            <t>Uniform Resource Names</t>
          </dd>
          <dt>ABNF</dt>
          <dd>
            <t>Augmented Backus-Naur Form</t>
          </dd>
          <dt>CSPRNG</dt>
          <dd>
            <t>Cryptographically Secure Pseudo-Random Number Generator</t>
          </dd>
          <dt>MAC</dt>
          <dd>
            <t>Media Access Control</t>
          </dd>
          <dt>MSB</dt>
          <dd>
            <t>Most Significant Bit</t>
          </dd>
          <dt>DBMS</dt>
          <dd>
            <t>Database Management System</t>
          </dd>
          <dt>IEEE</dt>
          <dd>
            <t>Institute of Electrical and Electronics Engineers, Inc.</t>
          </dd>
          <dt>ITU</dt>
          <dd>
            <t>International Telecommunication Union</t>
          </dd>
          <dt>MD5</dt>
          <dd>
            <t>Message Digest 5</t>
          </dd>
          <dt>SHA</dt>
          <dd>
            <t>Secure Hash Algorithm</t>
          </dd>
          <dt>SHA-1</dt>
          <dd>
            <t>Secure Hash Algorithm 1 with message digest of 160 bits</t>
          </dd>
          <dt>SHA-224</dt>
          <dd>
            <t>Secure Hash Algorithm with message digest size of 224 bits</t>
          </dd>
          <dt>SHA-256</dt>
          <dd>
            <t>Secure Hash Algorithm with message digest size of 256 bits</t>
          </dd>
          <dt>SHA-512</dt>
          <dd>
            <t>Secure Hash Algorithm with message digest size of 512 bits</t>
          </dd>
          <dt>SHA-3</dt>
          <dd>
            <t>Secure Hash Algorithm 3</t>
          </dd>
          <dt>SHAKE</dt>
          <dd>
            <t>Secure Hash Algorithm 3 based on KECCAK algorithm</t>
          </dd>
          <dt>UTC</dt>
          <dd>
            <t>Coordinated Universal Time</t>
          </dd>
          <dt>OID</dt>
          <dd>
            <t>Object Identifier</t>
          </dd>
        </dl>
      </section>
      <section anchor="changelog" removeInRFC="true">
        <name>Changelog</name>
        <t>draft-13</t>
        <ul spacing="compact">
          <li>
            <t>Request IANA Registry #144</t>
          </li>
          <li>
            <t>Describe allocation logic of Namespace ID #161</t>
          </li>
          <li>
            <t>Move citation of Namesapce ID up to first instance in v3/v5 #167</t>
          </li>
          <li>
            <t>Further normalize Namespace verbiage #166</t>
          </li>
          <li>
            <t>Fix Timestamp of Time-Based UUIDv8 Example #164</t>
          </li>
          <li>
            <t>Change RFC8937 and RFC4086 to Informative References #163</t>
          </li>
          <li>
            <t>Discuss why v3/v5 are bad for Database Usage #155</t>
          </li>
        </ul>
        <t>draft-12</t>
        <ul spacing="compact">
          <li>
            <t>Typos #148 #156</t>
          </li>
          <li>
            <t>SECDIR Review #141</t>
          </li>
          <li>
            <t>SECDIR Review 2 #142</t>
          </li>
          <li>
            <t>OPSDIR Review #145</t>
          </li>
          <li>
            <t>INDIR Review 2 #140</t>
          </li>
          <li>
            <t>IESG Grammar #146</t>
          </li>
          <li>
            <t>Revise 16-bit MAC Node Usage #149</t>
          </li>
          <li>
            <t>Add MSB3 to Variant Table #153</t>
          </li>
          <li>
            <t>Additional Update Motivations #157</t>
          </li>
          <li>
            <t>Expand v8 Time-based Example to larger timestamp #159</t>
          </li>
          <li>
            <t>Fix Randomized Node value's mcast bit in Appendix #151</t>
          </li>
          <li>
            <t>Clarify "Name-Based" is the same as "Hash-Based" #154</t>
          </li>
          <li>
            <t>Move UUIDv8 Examples out of Test Vectors #150</t>
          </li>
          <li>
            <t>Simplify UUIDv8 Hash-based Example #147</t>
          </li>
        </ul>
        <t>draft-11</t>
        <ul spacing="compact">
          <li>
            <t>Normalize "name space" to "namespace" everywhere #137</t>
          </li>
          <li>
            <t>IANA Review: Verbiage to update RFC4122 references #134</t>
          </li>
          <li>
            <t>DNSDIR re-review: Better Define "a canonical sequence of octets" #136</t>
          </li>
          <li>
            <t>Crosspost: Typo in Approximate UUID timestamp calculations #135</t>
          </li>
          <li>
            <t>INTDIR Review #139</t>
          </li>
        </ul>
        <t>draft-10</t>
        <ul spacing="compact">
          <li>
            <t>ARTART Review and Feedback #130</t>
          </li>
          <li>
            <t>Clarify Hash Space IDs listed are not the only options #132</t>
          </li>
          <li>
            <t>Add example to timestamp fuzzing #133</t>
          </li>
        </ul>
        <t>draft-09</t>
        <ul spacing="compact">
          <li>
            <t>Late addition of IETF reference for CSPRNG guidance #123</t>
          </li>
          <li>
            <t>DNSDIR Review: Typos! #122</t>
          </li>
          <li>
            <t>DNSDIR Review: DNS Considerations Update #121</t>
          </li>
          <li>
            <t>Error in UUIDv8 Name-based Test Vector #129</t>
          </li>
          <li>
            <t>Improve consistency of layout field definitions #128</t>
          </li>
        </ul>
        <t>draft-08</t>
        <ul spacing="compact">
          <li>
            <t>Fix typos #113</t>
          </li>
          <li>
            <t>Fix errata 6225 (again) #117 #118</t>
          </li>
          <li>
            <t>AD Review: BCP 14 - <bcp14>SHOULD</bcp14> #114</t>
          </li>
          <li>
            <t>AD Review: Add proper references to v1 and v6 #116</t>
          </li>
          <li>
            <t>AD Review: Remove <bcp14>SHOULD</bcp14> in section 4 #120</t>
          </li>
          <li>
            <t>Discuss "front-loaded rollover counter" for 32-bit epoch with Padding method #115</t>
          </li>
        </ul>
        <t>draft-07</t>
        <ul spacing="compact">
          <li>
            <t>Even more grammar tweaks! #109</t>
          </li>
          <li>
            <t>Remove unnecessary "32 bit" in UUIDv7 example #108</t>
          </li>
          <li>
            <t>Change "fixed millisecond" -&gt; "millisecond by default" relating to v7 #110</t>
          </li>
          <li>
            <t>Revert Max UUID Naming #107</t>
          </li>
          <li>
            <t>Author Changes</t>
          </li>
        </ul>
        <t>draft-06</t>
        <ul spacing="compact">
          <li>
            <t>More Grammar edits! #102</t>
          </li>
          <li>
            <t>Tweak v7 description to de-emphasize optional components #103</t>
          </li>
          <li>
            <t>Better Clarify Case in ABNF #104</t>
          </li>
          <li>
            <t>Verbiage change in 6.2 #105</t>
          </li>
        </ul>
        <t>draft-05</t>
        <ul spacing="compact">
          <li>
            <t>Changed Max UUID to Max UUID to better complement Latin Nil UUID verbiage. #95</t>
          </li>
          <li>
            <t>Align Method 3 text with the 12 bits limitation #96</t>
          </li>
          <li>
            <t>Make Version/version casing consistent across 5. UUID Layouts #97</t>
          </li>
          <li>
            <t>Cite MS COM GUID as little-endian #95</t>
          </li>
        </ul>
        <t>draft-04</t>
        <ul spacing="compact">
          <li>
            <t>Remove extra words #82, #88, and #93</t>
          </li>
          <li>
            <t>Punctuation and minor style fixes #84</t>
          </li>
          <li>
            <t>Change rounding mode of Method 4 Section 6.2 #90 (from #86)</t>
          </li>
          <li>
            <t>Add verbal description of v7 generation to 5.7. UUID Version 7 #91</t>
          </li>
          <li>
            <t>Remove Re-randomize Until Monotonic (Method 3) from Monotonicity and Counters #92</t>
          </li>
          <li>
            <t>Fix ambiguous text around UUIDv6 clock sequence #89</t>
          </li>
          <li>
            <t>Move endianness statement from layout to format section #85</t>
          </li>
          <li>
            <t>Further modified abstract to separate URN topic from UUID definition #83</t>
          </li>
          <li>
            <t>Provided three more UUID format examples #83</t>
          </li>
          <li>
            <t>Added text further clarifying version construct is for the variant in this doc #83</t>
          </li>
          <li>
            <t>Provided further clarification for local/global bit vs multicast bit #83</t>
          </li>
        </ul>
        <t>draft-03</t>
        <ul spacing="compact">
          <li>
            <t>Revised IANA Considerations #71</t>
          </li>
          <li>
            <t>Fix "integral numbers of octets" verbiage #67</t>
          </li>
          <li>
            <t>Transpose UUID Namespaces to match UUID Hashspaces #70</t>
          </li>
          <li>
            <t>Reference all Hash Algorithms. #69</t>
          </li>
          <li>
            <t>Normalize SHA abbreviation formats #66</t>
          </li>
          <li>
            <t>Add other Hash Abbreviations #65</t>
          </li>
          <li>
            <t>Remove URN from title #73</t>
          </li>
          <li>
            <t>Move Community Considerations to Introduction #68</t>
          </li>
          <li>
            <t>Move some Normative Reference to Informative #74</t>
          </li>
          <li>
            <t>Misc formatting changes to address IDNITS feedback</t>
          </li>
          <li>
            <t>Downgrade <bcp14>MUST NOT</bcp14> to <bcp14>SHOULD NOT</bcp14> for guessability of UUIDs #75</t>
          </li>
          <li>
            <t>Misc. text formatting, typo fixes #78</t>
          </li>
          <li>
            <t>Misc. text clarifications #79</t>
          </li>
          <li>
            <t>Misc. <bcp14>SHOULD</bcp14>/<bcp14>MUST</bcp14> adjustments #80</t>
          </li>
          <li>
            <t>Method 3 and 4 added to monotonic section #81</t>
          </li>
        </ul>
        <t>draft-02</t>
        <ul spacing="compact">
          <li>
            <t>Change md5_high in SHA-1 section to sha1_mid #59</t>
          </li>
          <li>
            <t>Describe Nil/Max UUID in variant table #16</t>
          </li>
          <li>
            <t>Further Clarify that non-descript node IDs are the preferred method in distributed UUID Generation #49</t>
          </li>
          <li>
            <t>Appendix B, consistent naming #55</t>
          </li>
          <li>
            <t>Remove duplicate ABNF from IANA considerations #56</t>
          </li>
          <li>
            <t>Monotonic Error Checking missing newline #57</t>
          </li>
          <li>
            <t>More Security Considerations Randomness #26</t>
          </li>
          <li>
            <t>SHA-256 UUID Generation #50</t>
          </li>
          <li>
            <t>Expand multiplexed fields within v1 and v6 bit definitions #43</t>
          </li>
          <li>
            <t>Clean up text in UUIDs that Do Not Identify the Host #61</t>
          </li>
          <li>
            <t>Revise UUID Generator States section #47</t>
          </li>
          <li>
            <t>Expand upon why unix epoch rollover is not a problem #44</t>
          </li>
          <li>
            <t>Delete Sample Code Appendix #62</t>
          </li>
        </ul>
        <t>draft-01</t>
        <ul spacing="compact">
          <li>
            <t>Mixed Case Spelling error #18</t>
          </li>
          <li>
            <t>Add "UUIDs that Do Not Identify the Host as well" reference to security considerations #19</t>
          </li>
          <li>
            <t>Out of Place Distributed node text #20</t>
          </li>
          <li>
            <t>v6 clock_seq and node usage ambiguity #21</t>
          </li>
          <li>
            <t>Figure 2 and 3 Fix Title #22</t>
          </li>
          <li>
            <t>Move Namespace Registration Template to IANA Considerations #23</t>
          </li>
          <li>
            <t>Verify ABNF formatting against RFC5234 #24</t>
          </li>
          <li>
            <t>Bump ABNF reference to RFC 5234 #25</t>
          </li>
          <li>
            <t>Modify v8 <bcp14>SHOULD NOT</bcp14> to <bcp14>MUST NOT</bcp14> #27</t>
          </li>
          <li>
            <t>Remove "time-based" constraint from version 8 UUID #29</t>
          </li>
          <li>
            <t>Further clarify v7 field description #125 #30</t>
          </li>
          <li>
            <t>Typo: Section 4.2, Version Field, "UUID from in this" #33</t>
          </li>
          <li>
            <t>Create better ABNF to represent Hex Digit #39</t>
          </li>
          <li>
            <t>Break Binary form of UUID into two lines. #40</t>
          </li>
          <li>
            <t>Move octet text from section 4 to section 5 #41</t>
          </li>
          <li>
            <t>Add forward reference to UUIDv1 and UUIDv4 in Section 2 #42</t>
          </li>
          <li>
            <t>Erroneous reference to v1 in monotonicity #45</t>
          </li>
          <li>
            <t>Add Label for "Monotonic Error Checking" paragraph to frame the topic #46</t>
          </li>
          <li>
            <t>Remove IEEE paragraph from "uuids that do not identify the host" #48</t>
          </li>
          <li>
            <t>Grammar Review #52</t>
          </li>
        </ul>
        <t>draft-00</t>
        <ul spacing="compact">
          <li>
            <t>Merge RFC4122 with draft-peabody-dispatch-new-uuid-format-04.md</t>
          </li>
          <li>
            <t>Change: Reference RFC1321 to RFC6151</t>
          </li>
          <li>
            <t>Change: Reference RFC2141 to RFC8141</t>
          </li>
          <li>
            <t>Change: Reference RFC2234 to RFC5234</t>
          </li>
          <li>
            <t>Change: Reference FIPS 180-1 to FIPS 180-4 for SHA-1</t>
          </li>
          <li>
            <t>Change: Converted UUIDv1 to match UUIDv6 section from Draft 04</t>
          </li>
          <li>
            <t>Change: Trimmed down the ABNF representation</t>
          </li>
          <li>
            <t>Change: http websites to https equivalent</t>
          </li>
          <li>
            <t>Errata: Bad Reference to RFC1750 | 3641 #4</t>
          </li>
          <li>
            <t>Errata: Change MD5 website to example.com | 3476 #6 (Also Fixes Errata: Fix uuid_create_md5_from_name() | 1352 #2)</t>
          </li>
          <li>
            <t>Errata: Typo in code comment | 6665 #11</t>
          </li>
          <li>
            <t>Errata: Fix BAD OID acronym | 6225 #9</t>
          </li>
          <li>
            <t>Errata: Incorrect Parenthesis usage Section 4.3 | 184 #5</t>
          </li>
          <li>
            <t>Errata: Lexicographically Sorting Paragraph Fix | 1428 #3</t>
          </li>
          <li>
            <t>Errata: Fix 4.1.3 reference to the correct bits | 1957 #13</t>
          </li>
          <li>
            <t>Errata: Fix reference to variant in octet 8 | 4975 #7</t>
          </li>
          <li>
            <t>Errata: Further clarify 3rd/last bit of Variant for spec | 5560 #8</t>
          </li>
          <li>
            <t>Errata: Fix clock_seq_hi_and_reserved most-significant bit verbiage | 4976 #10</t>
          </li>
          <li>
            <t>Errata: Better Clarify network byte order when referencing most significant bits | 3546 #12</t>
          </li>
          <li>
            <t>Draft 05: B.2. Example of a UUIDv7 Value two "var" in table #120</t>
          </li>
          <li>
            <t>Draft 05: <bcp14>MUST</bcp14> verbiage in Reliability of 6.1 #121</t>
          </li>
          <li>
            <t>Draft 05: Further discourage centralized registry for distributed UUID Generation.</t>
          </li>
          <li>
            <t>New: Further Clarity of exact octet and bit of var/ver in this spec</t>
          </li>
          <li>
            <t>New: Block diagram, bit layout, test vectors for UUIDv4</t>
          </li>
          <li>
            <t>New: Block diagram, bit layout, test vectors for UUIDv3</t>
          </li>
          <li>
            <t>New: Block diagram, bit layout, test vectors for UUIDv5</t>
          </li>
          <li>
            <t>New: Add MD5 Security Considerations reference, RFC6151</t>
          </li>
          <li>
            <t>New: Add SHA-1 Security Considerations reference, RFC6194</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="format">
      <name>UUID Format</name>
      <t>The UUID format is 16 octets (128 bits) in size; the variant bits in conjunction with the version
bits described in the next sections determine finer structure. While discussing UUID formats and layout, bit definitions start at 0 and end at 127 while octet definitions start at 0 and end at 15.</t>
      <t>In the absence of explicit application or presentation protocol
specification to the contrary, each field is encoded with the Most
Significant Byte first (known as network byte order).</t>
      <t>Saving UUIDs to binary format is done by sequencing all fields in big-endian format.
However there is a known caveat that Microsoft's Component Object Model (COM) GUIDs leverage little-endian when saving GUIDs.
The discussion of this <xref target="MS_COM_GUID"/> is outside the scope of this specification.</t>
      <t>UUIDs <bcp14>MAY</bcp14> be represented as binary data or integers.
When in use with URNs or as text in applications, any given UUID should
be represented by the "hex-and-dash" string format consisting of multiple
groups of upper or lowercase alphanumeric hexadecimal characters separated by single dashes/hyphens.
When used with databases please refer to <xref target="database_considerations"/>.</t>
      <t>The formal definition of the UUID string representation is provided by the following (ABNF) <xref target="RFC5234"/>.</t>
      <sourcecode type="abnf"><![CDATA[
UUID     = 4hexOctet "-"
           2hexOctet "-"
           2hexOctet "-"
           2hexOctet "-"
           6hexOctet
hexOctet = HEXDIG HEXDIG
DIGIT    = %x30-39
HEXDIG   = DIGIT / "A" / "B" / "C" / "D" / "E" / "F"
]]></sourcecode>
      <t>Note that the alphabetic characters may be all uppercase, all lowercase, or mixed case, as per <xref section="2.3" sectionFormat="comma" target="RFC5234"/>.
An example UUID using this textual representation from the above ABNF is shown in <xref target="sampleStringUUID"/>.</t>
      <figure anchor="sampleStringUUID">
        <name>Example String UUID format</name>
        <artwork><![CDATA[
f81d4fae-7dec-11d0-a765-00a0c91e6bf6
]]></artwork>
      </figure>
      <t>The same UUID from <xref target="sampleStringUUID"/> is represented in Binary (<xref target="sampleBinaryUUID"/>), Integer (<xref target="sampleIntegerUUID"/>) and as a URN (<xref target="sampleURNUUID"/>) defined by <xref target="RFC8141"/>.</t>
      <figure anchor="sampleBinaryUUID">
        <name>Example Binary UUID</name>
        <artwork><![CDATA[
111110000001110101001111101011100111110111101100000100011101000\
01010011101100101000000001010000011001001000111100110101111110110
]]></artwork>
      </figure>
      <figure anchor="sampleIntegerUUID">
        <name>Example Integer UUID (shown as a decimal number)</name>
        <artwork><![CDATA[
329800735698586629295641978511506172918
]]></artwork>
      </figure>
      <figure anchor="sampleURNUUID">
        <name>Example URN UUID</name>
        <artwork><![CDATA[
urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6
]]></artwork>
      </figure>
      <t>There are many other ways to define a UUID format; some examples are detailed below.
Please note that this is not an exhaustive list and is only provided for informational purposes.</t>
      <ul spacing="compact">
        <li>
          <t>Some UUID implementations, such as those found in <xref target="Python"/> and <xref target="Microsoft"/>, will output UUID with the string format, including dashes, enclosed in curly braces.</t>
        </li>
        <li>
          <t><xref target="X667"/> provides UUID format definitions for use of UUID with an OID.</t>
        </li>
        <li>
          <t>The legacy <xref target="IBM_NCS"/> implementation produces a unique UUID format compatible with Variant 0xx of <xref target="table1"/>.</t>
        </li>
      </ul>
      <section anchor="variant_field">
        <name>Variant Field</name>
        <t>The variant field determines the layout of the UUID.  That is, the
interpretation of all other bits in the UUID depends on the setting
of the bits in the variant field.  As such, it could more accurately
be called a type field; we retain the original term for
compatibility.  The variant field consists of a variable number of
the most significant bits of octet 8 of the UUID.</t>
        <t><xref target="table1"/> lists the contents of the variant field, where
the letter "x" indicates a "don't-care" value.</t>
        <table anchor="table1">
          <name>UUID Variants</name>
          <thead>
            <tr>
              <th align="left">Msb0</th>
              <th align="left">Msb1</th>
              <th align="left">Msb2</th>
              <th align="left">Msb3</th>
              <th align="left">Variant</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">x</td>
              <td align="left">x</td>
              <td align="left">x</td>
              <td align="left">1-7</td>
              <td align="left">Reserved, NCS backward compatibility and includes Nil UUID as per <xref target="niluuid"/>.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">x</td>
              <td align="left">x</td>
              <td align="left">8-9,A-B</td>
              <td align="left">The variant specified in this document.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">x</td>
              <td align="left">C-D</td>
              <td align="left">Reserved, Microsoft Corporation backward compatibility.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">x</td>
              <td align="left">E-F</td>
              <td align="left">Reserved for future definition and includes Max UUID as per <xref target="maxuuid"/>.</td>
            </tr>
          </tbody>
        </table>
        <t>Interoperability, in any form, with variants other than the one
defined here is not guaranteed but is not likely to be an issue in
practice.</t>
        <t>Specifically for UUIDs in this document, bits 64 and 65 of the UUID (bits 0 and 1 of octet 8) <bcp14>MUST</bcp14> be set to 1 and 0 as specified in row 2 of <xref target="table1"/>.
Accordingly, all bit and field layouts avoid the use of these bits.</t>
      </section>
      <section anchor="version_field">
        <name>Version Field</name>
        <t>The version number is in the most significant 4 bits of octet 6
(bits 48 through 51 of the UUID).</t>
        <t><xref target="table2"/> lists all of the versions for this UUID variant 10xx specified in this document.</t>
        <table anchor="table2">
          <name>UUID variant 10xx versions defined by this specification</name>
          <thead>
            <tr>
              <th align="left">Msb0</th>
              <th align="left">Msb1</th>
              <th align="left">Msb2</th>
              <th align="left">Msb3</th>
              <th align="left">Version</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">Unused</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">The Gregorian time-based UUID specified in this document.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">2</td>
              <td align="left">Reserved for DCE Security version, with embedded POSIX UUIDs.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">3</td>
              <td align="left">The name-based version specified in this document that uses MD5 hashing.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">4</td>
              <td align="left">The randomly or pseudo-randomly generated version specified in this document.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">5</td>
              <td align="left">The name-based version specified in this document that uses SHA-1 hashing.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">6</td>
              <td align="left">Reordered Gregorian time-based UUID specified in this document.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">7</td>
              <td align="left">Unix Epoch time-based UUID specified in this document.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">8</td>
              <td align="left">Reserved for custom UUID formats specified in this document.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">9</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">10</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">11</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">12</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">13</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">14</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">15</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
          </tbody>
        </table>
        <t>An example version/variant layout for UUIDv4 follows the table
where M represents the version placement for the hexadecimal representation of 0x4 (0b0100)
and the N represents the variant placement for one of the four possible hexadecimal representation of variant 10xx:
0x8 (0b1000), 0x9 (0b1001), 0xA (0b1010), 0xB (0b1011)</t>
        <figure>
          <name>UUIDv4 Variant Examples</name>
          <artwork><![CDATA[
00000000-0000-4000-8000-000000000000
00000000-0000-4000-9000-000000000000
00000000-0000-4000-A000-000000000000
00000000-0000-4000-B000-000000000000
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
]]></artwork>
        </figure>
        <t>It should be noted that the other remaining UUID variants found in <xref target="table1"/> leverage different sub-typing/versioning mechanisms.
The recording and definition of the remaining UUID variant and sub-typing combinations are outside of the scope of this document.</t>
      </section>
    </section>
    <section anchor="layout">
      <name>UUID Layouts</name>
      <t>To minimize confusion about bit assignments within octets and among differing versions, the UUID record definition is provided as a grouping of fields within a bit layout consisting of four octets per row.
The fields are presented with the most significant one first.</t>
      <section anchor="uuidv1">
        <name>UUID Version 1</name>
        <t>UUID version 1 is a time-based UUID featuring a 60 bit timestamp
represented by Coordinated Universal Time (UTC) as a count of 100-
nanosecond intervals since 00:00:00.00, 15 October 1582 (the date of
Gregorian reform to the Christian calendar).</t>
        <t>UUIDv1 also features a clock sequence field which is used to help avoid
duplicates that could arise when the clock is set backwards in time
or if the node ID changes.</t>
        <t>The node field consists of an IEEE 802 MAC
address, usually the host address or a randomly derived value per <xref target="unguessability"/> and <xref target="unidentifiable"/>.</t>
        <figure>
          <name>UUIDv1 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           time_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           time_mid            |  ver  |       time_high       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|         clock_seq         |             node              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              node                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>time_low:</dt>
          <dd>
            <t>The least significant 32 bits of the 60 bit starting timestamp.
Occupies bits 0 through 31 (octets 0-3).</t>
          </dd>
          <dt>time_mid:</dt>
          <dd>
            <t>The middle 16 bits of the 60 bit starting timestamp.
Occupies bits 32 through 47 (octets 4-5).</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/>, set to 0b0001 (1).
Occupies bits 48 through 51 of octet 6.</t>
          </dd>
          <dt>time_high:</dt>
          <dd>
            <t>12 bits that will contain the most significant 12 bits from the 60 bit starting timestamp.
Occupies bits 52 through 63 (octets 6-7).</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/>, set to 0b10.
Occupies bits 64 and 65 of octet 8.</t>
          </dd>
          <dt>clock_seq:</dt>
          <dd>
            <t>The 14 bits containing the clock sequence.
Occupies bits 66 through 79 (octets 8-9).</t>
          </dd>
          <dt>node:</dt>
          <dd>
            <t>48 bit spatially unique identifier.
Occupies bits 80 through 127 (octets 10-15).</t>
          </dd>
        </dl>
        <t>For systems that do not have UTC available, but do have the local
time, they may use that instead of UTC, as long as they do so
consistently throughout the system.  However, this is not recommended
since generating the UTC from local time only needs a time zone
offset.</t>
        <t>If the clock is set backwards, or might have been set backwards
(e.g., while the system was powered off), and the UUID generator can
not be sure that no UUIDs were generated with timestamps larger than
the value to which the clock was set, then the clock sequence <bcp14>MUST</bcp14>
be changed.  If the previous value of the clock sequence is known, it
<bcp14>MAY</bcp14> be incremented; otherwise it <bcp14>SHOULD</bcp14> be set to a random or
high-quality pseudo-random value.</t>
        <t>Similarly, if the node ID changes (e.g., because a network card has
been moved between machines), setting the clock sequence to a random
number minimizes the probability of a duplicate due to slight
differences in the clock settings of the machines.  If the value of
the clock sequence associated with the changed node ID were known, then
the clock sequence <bcp14>MAY</bcp14> be incremented, but that is unlikely.</t>
        <t>The clock sequence <bcp14>MUST</bcp14> be originally (i.e., once in the lifetime of
a system) initialized to a random number to minimize the correlation
across systems.  This provides maximum protection against node
identifiers that may move or switch from system to system rapidly.
The initial value <bcp14>MUST NOT</bcp14> be correlated to the node identifier.</t>
        <t>Notes about IEEE 802 derived nodes:</t>
        <ul spacing="compact">
          <li>
            <t>Systems with multiple IEEE 802 addresses, any available one <bcp14>MAY</bcp14> be used.</t>
          </li>
          <li>
            <t>Systems with no IEEE address, a randomly or pseudo-randomly generated value <bcp14>MUST</bcp14> be used; see <xref target="unguessability"/> and <xref target="unidentifiable"/>.</t>
          </li>
          <li>
            <t>Systems utilizing a 64 bit MAC address the least significant, right-most 48 bits <bcp14>MAY</bcp14> be used.</t>
          </li>
          <li>
            <t>Systems utilizing an IEEE 802.15.4 16 bit address <bcp14>SHOULD</bcp14> instead utilize their 64 bit MAC address where least significant, right-most 48 bits <bcp14>MAY</bcp14> be used. An alternative is to generate 32 bits of random data and postfix at the end of the 16 bit MAC address to create a 48 bit value.</t>
          </li>
        </ul>
      </section>
      <section anchor="uuidv2">
        <name>UUID Version 2</name>
        <t>UUID version 2 is known as DCE Security UUIDs <xref target="C309"/> and <xref target="C311"/>.
As such, the definition of these UUIDs is outside the scope of this specification.</t>
      </section>
      <section anchor="uuidv3">
        <name>UUID Version 3</name>
        <t>UUID version 3 is meant for generating UUIDs from "names"
that are drawn from, and unique within, some "namespace" as per <xref target="name_based_uuid_generation"/>.</t>
        <t>UUIDv3 values are created by computing an MD5 <xref target="RFC1321"/>
hash over a given namespace ID value (<xref target="namespaces"/>)  concatenated with the desired name value
after both have been converted to a canonical sequence of octets, as defined by the standards or conventions of its namespace, in network byte order.
This MD5 value is then used to populate all 128 bits of the UUID layout.
The UUID version and variant then replace the respective bits as defined by <xref target="version_field"/> and <xref target="variant_field"/>. An example of this bit substitution can be found in <xref target="uuidv3_example"/>.</t>
        <t>Information around selecting a desired name's canonical format within a given namespace can be found in <xref target="name_based_uuid_generation"/>, "A note on names".</t>
        <t>Where possible UUIDv5 <bcp14>SHOULD</bcp14> be used in lieu of UUIDv3.
For more information on MD5 security considerations see <xref target="RFC6151"/>.</t>
        <figure>
          <name>UUIDv3 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            md5_high                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          md5_high             |  ver  |       md5_mid         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                        md5_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            md5_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>md5_high:</dt>
          <dd>
            <t>The first 48 bits of the layout are filled
with the most significant, left-most 48 bits
from the computed MD5 value. Occupies bits 0 through 47 (octets 0-5).</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/>, set to 0b0011 (3).
Occupies bits 48 through 51 of octet 6.</t>
          </dd>
          <dt>md5_mid:</dt>
          <dd>
            <t>12 more bits of the layout consisting of the least significant,
right-most 12 bits of 16 bits immediately following md5_high
from the computed MD5 value.
Occupies bits 52 through 63 (octets 6-7).</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/>, set to 0b10.
Occupies bits 64 and 65 of octet 8.</t>
          </dd>
          <dt>md5_low:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled with the least-significant, right-most bits of the final 64 bits
from the computed MD5 value. Occupies bits 66 through 127 (octets 8-15)</t>
          </dd>
        </dl>
      </section>
      <section anchor="uuidv4">
        <name>UUID Version 4</name>
        <t>UUID version 4 is meant for generating UUIDs from truly-random or
pseudo-random numbers.</t>
        <t>An implementation may generate 128 bits of random data which is
used to fill out the UUID fields in <xref target="uuidv4fields"/>. The UUID version
and variant then replace the respective bits as defined by <xref target="version_field"/>
and <xref target="variant_field"/>.</t>
        <t>Alternatively, an implementation <bcp14>MAY</bcp14> choose to randomly generate the exact required number of bits for
random_a, random_b, and random_c (122 bits total), and then concatenate the version and variant in the required position.</t>
        <t>For guidelines on random data generation see <xref target="unguessability"/>.</t>
        <figure anchor="uuidv4fields">
          <name>UUIDv4 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           random_a                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          random_a             |  ver  |       random_b        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                       random_c                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           random_c                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>random_a:</dt>
          <dd>
            <t>The first 48 bits of the layout that can be filled with random data as specified in <xref target="unguessability"/>. Occupies bits 0 through 47 (octets 0-5).</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/>, set to 0b0100 (4).
Occupies bits 48 through 51 of octet 6.</t>
          </dd>
          <dt>random_b:</dt>
          <dd>
            <t>12 more bits of the layout that can be filled random data as per <xref target="unguessability"/>. Occupies bits 52 through 63 (octets 6-7).</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/>, set to 0b10.
Occupies bits 64 and 65 of octet 8.</t>
          </dd>
          <dt>random_c:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled with random data as per <xref target="unguessability"/>. Occupies bits 66 through 127 (octets 8-15).</t>
          </dd>
        </dl>
      </section>
      <section anchor="uuidv5">
        <name>UUID Version 5</name>
        <t>UUID version 5 is meant for generating UUIDs from "names"
that are drawn from, and unique within, some "namespace" as per <xref target="name_based_uuid_generation"/>.</t>
        <t>UUIDv5 values are created by computing an SHA-1 <xref target="FIPS180-4"/>
hash over a given namespace ID value (<xref target="namespaces"/>) concatenated with the desired name value
after both have been converted to a canonical sequence of octets, as defined by the standards or conventions of its namespace, in network byte order.
The most significant, left-most 128 bits of the SHA-1 value is then used to populate all 128 bits of the UUID layout and the remaining 32 least significant, right-most bits of SHA-1 output are discarded.
The UUID version and variant then replace the respective bits as defined by <xref target="version_field"/> and <xref target="variant_field"/>. An example of this bit substitution and discarding excess bits can be found in <xref target="uuidv5_example"/>.</t>
        <t>Information around selecting a desired name's canonical format within a given namespace can be found in <xref target="name_based_uuid_generation"/>, "A note on names".</t>
        <t>There may be scenarios, usually depending on organizational security policies, where SHA-1 libraries may not be available or deemed unsafe for use.
As such, it may be desirable to generate name-based UUIDs derived from SHA-256 or newer SHA methods. These name-based UUIDs <bcp14>MUST NOT</bcp14> utilize UUIDv5 and <bcp14>MUST</bcp14> be within the UUIDv8 space defined by <xref target="uuidv8"/>.
An illustrative example of UUIDv8 for SHA-256 name-based UUIDs is provided in the appendix <xref target="uuidv8_example_name"/>.</t>
        <t>For more information on SHA-1 security considerations see <xref target="RFC6194"/>.</t>
        <figure>
          <name>UUIDv5 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           sha1_high                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         sha1_high             |  ver  |      sha1_mid         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                       sha1_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           sha1_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>sha1_high:</dt>
          <dd>
            <t>The first 48 bits of the layout are filled
with the most significant, left-most 48 bits
from the computed SHA-1 value.
Occupies bits 0 through 47 (octets 0-5).</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/>, set to 0b0101 (5).
Occupies bits 48 through 51 of octet 6.</t>
          </dd>
          <dt>sha1_mid:</dt>
          <dd>
            <t>12 more bits of the layout consisting of the least significant,
right-most 12 bits of 16 bits immediately following sha1_high
from the computed SHA-1 value.
Occupies bits 52 through 63 (octets 6-7).</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/>, set to 0b10.
Occupies bits 64 and 65 of octet 8.</t>
          </dd>
          <dt>sha1_low:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled by skipping the 2 most significant, left-most bits of the remaining SHA-1 hash
and then using the next 62 most significant, left-most bits.
Any leftover SHA-1 bits are discarded and unused. Occupies bits 66 through 127 (octets 8-15).</t>
          </dd>
        </dl>
      </section>
      <section anchor="uuidv6">
        <name>UUID Version 6</name>
        <t>UUID version 6 is a field-compatible version of UUIDv1 <xref target="uuidv1"/>, reordered for improved
DB locality.
It is expected that UUIDv6 will primarily be used in contexts where UUIDv1 is used.
Systems that do not involve legacy UUIDv1 <bcp14>SHOULD</bcp14> use UUIDv7 instead.</t>
        <t>Instead of splitting the timestamp into the low, mid, and high sections from
UUIDv1, UUIDv6 changes this sequence so timestamp bytes are stored from most
to least significant.
That is, given a 60 bit timestamp value as specified for UUIDv1 in <xref target="uuidv1"/>,
for UUIDv6, the first 48 most significant bits are stored
first, followed by the 4 bit version (same position), followed by the remaining
12 bits of the original 60 bit timestamp.</t>
        <t>The clock sequence  and node bits remain unchanged from their position in <xref target="uuidv1"/>.</t>
        <t>The clock sequence and node bits <bcp14>SHOULD</bcp14> be reset to a pseudo-random value for each new UUIDv6 generated; however, implementations <bcp14>MAY</bcp14> choose to retain the old clock sequence and MAC address behavior from <xref target="uuidv1"/>. For more information on MAC address usage within UUIDs see the <xref target="Security"/>.</t>
        <t>The format for the 16-byte, 128 bit UUIDv6 is shown in <xref target="v6layout"/>.</t>
        <figure anchor="v6layout">
          <name>UUIDv6 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           time_high                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           time_mid            |  ver  |       time_low        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|         clock_seq         |             node              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              node                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>time_high:</dt>
          <dd>
            <t>The most significant 32 bits of the 60 bit starting timestamp.
Occupies bits 0 through 31 (octets 0-3).</t>
          </dd>
          <dt>time_mid:</dt>
          <dd>
            <t>The middle 16 bits of the 60 bit starting timestamp.
Occupies bits 32 through 47 (octets 4-5).</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/>, set to 0b0110 (6).
Occupies bits 48 through 51 of octet 6.</t>
          </dd>
          <dt>time_low:</dt>
          <dd>
            <t>12 bits that will contain the least significant 12 bits from the 60 bit starting timestamp.
Occupies bits 52 through 63 (octets 6-7).</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/>, set to 0b10.
Occupies bits 64 and 65 of octet 8.</t>
          </dd>
          <dt>clock_seq:</dt>
          <dd>
            <t>The 14 bits containing the clock sequence.
Occupies bits 66 through 79 (octets 8-9).</t>
          </dd>
          <dt>node:</dt>
          <dd>
            <t>48 bit spatially unique identifier.
Occupies bits 80 through 127 (octets 10-15).</t>
          </dd>
        </dl>
        <t>With UUIDv6, the steps for splitting the timestamp into time_high and time_mid
are <bcp14>OPTIONAL</bcp14>
since the 48 bits of time_high and time_mid will remain in the same order.
An extra step of splitting the first 48 bits of the timestamp into the most
significant
32 bits and least significant 16 bits proves useful when reusing an existing
UUIDv1 implementation.</t>
      </section>
      <section anchor="uuidv7">
        <name>UUID Version 7</name>
        <t>UUID version 7 features a time-ordered value field derived from the widely
implemented and well known Unix Epoch timestamp source, the number of milliseconds
since midnight 1 Jan 1970 UTC, leap seconds excluded.
UUIDv7 generally has improved entropy characteristics over UUIDv1 <xref target="uuidv1"/> or UUIDv6 <xref target="uuidv6"/>.</t>
        <t>UUIDv7 values are created by allocating a Unix timestamp in milliseconds in the most significant 48 bits and filling the remaining 74 bits, excluding the required version and variant bits, with random bits for each new UUIDv7 generated to provide uniqueness as per <xref target="unguessability"/>. Alternatively, implementations <bcp14>MAY</bcp14> fill the 74 bits, jointly, with a combination of the following subfields, in this order from the most significant bits to the least, to guarantee additional monotonicity within a millisecond:</t>
        <ol spacing="normal" type="1"><li>
            <t>An <bcp14>OPTIONAL</bcp14> sub-millisecond timestamp fraction (12 bits at maximum) as per <xref target="monotonicity_counters"/> (Method 3).</t>
          </li>
          <li>
            <t>An <bcp14>OPTIONAL</bcp14> carefully seeded counter as per <xref target="monotonicity_counters"/> (Method 1 or 2).</t>
          </li>
          <li>
            <t>Random data for each new UUIDv7 generated for any remaining space.</t>
          </li>
        </ol>
        <t>Implementations <bcp14>SHOULD</bcp14> utilize UUIDv7 instead of UUIDv1 and UUIDv6 if
possible.</t>
        <figure>
          <name>UUIDv7 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           unix_ts_ms                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          unix_ts_ms           |  ver  |       rand_a          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                        rand_b                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            rand_b                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>unix_ts_ms:</dt>
          <dd>
            <t>48 bit big-endian unsigned number of Unix epoch timestamp in milliseconds as
per <xref target="timestamp_considerations"/>.
Occupies bits 0 through 47 (octets 0-5).</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/>, set to 0b0111 (7).
Occupies bits 48 through 51 of octet 6.</t>
          </dd>
          <dt>rand_a:</dt>
          <dd>
            <t>12 bits pseudo-random data to provide uniqueness as per <xref target="unguessability"/>
and/or optional constructs to guarantee additional monotonicity as
per <xref target="monotonicity_counters"/>.
Occupies bits 52 through 63 (octets 6-7).</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/>, set to 0b10.
Occupies bits 64 and 65 of octet 8.</t>
          </dd>
          <dt>rand_b:</dt>
          <dd>
            <t>The final 62 bits of pseudo-random data to provide uniqueness as per <xref target="unguessability"/>
and/or an optional counter to guarantee additional monotonicity as per <xref target="monotonicity_counters"/>.
Occupies bits 66 through 127 (octets 8-15).</t>
          </dd>
        </dl>
      </section>
      <section anchor="uuidv8">
        <name>UUID Version 8</name>
        <t>UUID version 8 provides an RFC-compatible format for experimental or vendor-specific
use cases.
The only requirement is that the variant and version bits <bcp14>MUST</bcp14> be set as
defined in <xref target="variant_field"/> and <xref target="version_field"/>.
UUIDv8's uniqueness will be implementation-specific and <bcp14>MUST NOT</bcp14> be assumed.</t>
        <t>The only explicitly defined bits are those of the version and variant fields, leaving 122
bits
for implementation specific UUIDs. To be clear:
UUIDv8 is not a replacement for UUIDv4 <xref target="uuidv4"/> where all 122 extra bits are
filled with random data.</t>
        <t>Some example situations in which UUIDv8 usage could occur:</t>
        <ul spacing="normal">
          <li>
            <t>An implementation would like to embed extra information
within the UUID other than what is defined in this document.</t>
          </li>
          <li>
            <t>An implementation has other application/language restrictions which
inhibit the use of one of the current UUIDs.</t>
          </li>
        </ul>
        <t>The appendix, <xref target="ill_examples"/>, provides two illustrative examples of custom UUIDv8 algorithms to address two example scenarios.</t>
        <figure>
          <name>UUIDv8 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           custom_a                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          custom_a             |  ver  |       custom_b        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                       custom_c                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           custom_c                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>custom_a:</dt>
          <dd>
            <t>The first 48 bits of the layout that can be filled as an implementation sees
fit. Occupies bits 0 through 47 (octets 0-5).</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/>, set to 0b1000 (8).
Occupies bits 48 through 51 of octet 6.</t>
          </dd>
          <dt>custom_b:</dt>
          <dd>
            <t>12 more bits of the layout that can be filled as an implementation sees fit.
Occupies bits 52 through 63 (octets 6-7).</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/>, set to 0b10.
Occupies bits 64 and 65 of octet 8.</t>
          </dd>
          <dt>custom_c:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled as an implementation sees fit.
Occupies bits 66 through 127 (octets 8-15).</t>
          </dd>
        </dl>
      </section>
      <section anchor="niluuid">
        <name>Nil UUID</name>
        <t>The nil UUID is special form of UUID that is specified to have all
128 bits set to zero.</t>
        <figure>
          <name>Nil UUID Format</name>
          <artwork><![CDATA[
00000000-0000-0000-0000-000000000000
]]></artwork>
        </figure>
        <t>A Nil UUID value can be useful to communicate the absence of any other UUID value in situations that otherwise require or use a 128 bit UUID.  A Nil UUID can express the concept "no such value here". Thus it is reserved for such use as needed for implementation-specific situations.</t>
      </section>
      <section anchor="maxuuid">
        <name>Max UUID</name>
        <t>The Max UUID is a special form of UUID that is specified to have all 128 bits
set to 1. This UUID can be thought of as the inverse of Nil UUID defined
in <xref target="niluuid"/>.</t>
        <figure>
          <name>Max UUID Format</name>
          <artwork><![CDATA[
FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF
]]></artwork>
        </figure>
        <t>A Max UUID value can be used as a sentinel value in situations where a 128 bit UUID is required but a concept such as "end of UUID list" needs to be expressed, and is reserved for such use as needed for implementation-specific situations.</t>
      </section>
    </section>
    <section anchor="uuid_best_practices">
      <name>UUID Best Practices</name>
      <t>The minimum requirements for generating UUIDs are
described in this document for each version.
Everything else is an implementation detail and it is
up to the implementer to decide what is appropriate for a given
implementation. Various relevant factors are covered
below to help guide an implementer through the different trade-offs among
differing UUID implementations.</t>
      <section anchor="timestamp_considerations">
        <name>Timestamp Considerations</name>
        <t>UUID timestamp source, precision, and length was the topic of great debate
while creating UUIDv7 for this specification. Choosing the right timestamp for
your application is a very important topic. This section will detail some
of the most common points on this topic.</t>
        <dl newline="true">
          <dt>Reliability:</dt>
          <dd>
            <t>Implementations acquire the current timestamp from a reliable source to
provide values that are time-ordered and continually increasing.
Care must be taken to ensure that timestamp changes from the environment
or operating system are handled in a way that is consistent with implementation
requirements.
For example, if it is possible for the system clock to move backward due
to either manual adjustment or corrections from a time synchronization protocol,
implementations need to determine how to handle such cases. (See Altering, Fuzzing,
or Smearing below.)</t>
          </dd>
          <dt>Source:</dt>
          <dd>
            <t>UUID version 1 and 6 both utilize a Gregorian epoch timestamp while UUIDv7
utilizes a Unix Epoch timestamp. If other timestamp sources or a custom timestamp
epoch are required, UUIDv8 <bcp14>MUST</bcp14> be used.</t>
          </dd>
          <dt>Sub-second Precision and Accuracy:</dt>
          <dd>
            <t>Many levels of precision exist for timestamps: milliseconds, microseconds,
nanoseconds, and beyond.
Additionally fractional representations of sub-second precision may be desired
to mix various levels of precision in a time-ordered manner.
Furthermore, system clocks themselves have an underlying granularity and
it is frequently less than the precision offered by the operating system.
With UUID version 1 and 6, 100-nanoseconds of precision are present while
UUIDv7 features millisecond level of precision by default within the Unix epoch
that does not exceed the granularity capable in most modern systems.
For other levels of precision UUIDv8 is available.
Similar to <xref target="monotonicity_counters"/>, with UUIDv1 or UUIDv6,
a high resolution timestamp can be simulated by keeping a count of
the number of UUIDs that have been generated with the same value of
the system time, and using it to construct the low order bits of the
timestamp.  The count of the high resolution timestamp will range between zero and the number of
100-nanosecond intervals per system time interval.</t>
          </dd>
          <dt>Length:</dt>
          <dd>
            <t>The length of a given timestamp directly impacts how many timestamp ticks can be contained in a UUID before the maximum
value for the timestamp field is reached.
Take care to ensure that the proper length is selected for a given
timestamp.
UUID version 1 and 6 utilize a 60 bit timestamp valid until 5623 AD and UUIDv7 features a 48
bit timestamp valid until the year 10889 AD.</t>
          </dd>
          <dt>Altering, Fuzzing, or Smearing:</dt>
          <dd>
            <t>Implementations <bcp14>MAY</bcp14> alter the actual timestamp. Some examples include security
considerations around providing a real clock value within a UUID, to correct
inaccurate clocks, to handle leap seconds, or instead of dividing a number of microseconds by 1000 to obtain a millisecond value; dividing by 1024 (or some other value) for performance reasons. This specification makes no
requirement or guarantee about how close the clock value needs to be to the actual
time.
If UUIDs do not need to be frequently generated, the UUIDv1 or UUIDv6 timestamp can
simply be the system time multiplied by the number of 100-nanosecond
intervals per system time interval.</t>
          </dd>
          <dt>Padding:</dt>
          <dd>
            <t>When timestamp padding is required, implementations <bcp14>MUST</bcp14> pad the most significant
bits (left-most) bits with data. An example for this padding data is to fill the most significant,
left-most bits of a Unix timestamp with zeroes to complete the 48
bit timestamp in UUIDv7. An alternative approach for padding data is to fill the most significant, left-most bits with the number of 32 bit Unix timestamp roll-overs after 2038-01-19.</t>
          </dd>
          <dt>Truncating:</dt>
          <dd>
            <t>When timestamps need to be truncated, the lower, least significant
bits <bcp14>MUST</bcp14> be used. An example would be truncating a 64 bit Unix timestamp
to the least significant, right-most 48 bits for UUIDv7.</t>
          </dd>
          <dt>Error Handling:</dt>
          <dd>
            <t>If a system overruns the generator by requesting too many UUIDs
within a single system time interval, the UUID service can
return an error, or stall the UUID generator until the system clock
catches up, and <bcp14>MUST NOT</bcp14> return knowingly duplicate values due to a
counter rollover.
Note that if the processors overrun the UUID generation frequently,
additional node identifiers can be allocated to the system, which
will permit higher speed allocation by making multiple UUIDs
potentially available for each time stamp value.
Similar techniques are discussed in <xref target="distributed_shared_knowledge"/>.</t>
          </dd>
        </dl>
      </section>
      <section anchor="monotonicity_counters">
        <name>Monotonicity and Counters</name>
        <t>Monotonicity (each subsequent value being greater than the last) is the backbone of time-based sortable UUIDs. Normally, time-based
UUIDs from this document will be monotonic due to an embedded timestamp; however,
implementations can guarantee additional monotonicity via the concepts covered
in this section.</t>
        <t>Take care to ensure UUIDs generated in batches are
also monotonic. That is, if one thousand UUIDs are generated for the same
timestamp, there should be sufficient logic for organizing the creation order of
those one thousand UUIDs.
Batch UUID creation implementations <bcp14>MAY</bcp14> utilize a monotonic counter that
increments for each UUID created during a given timestamp.</t>
        <t>For single-node UUID implementations that do not need to create batches of
UUIDs, the embedded timestamp within UUID version 6 and 7 can provide
sufficient monotonicity guarantees by simply ensuring that timestamp increments
before creating a new UUID. Distributed nodes are discussed in
<xref target="distributed_shared_knowledge"/>.</t>
        <t>Implementations <bcp14>SHOULD</bcp14> employ the following methods for single-node UUID implementations
that require batch UUID creation, or are otherwise concerned about monotonicity
with high frequency UUID generation.</t>
        <dl newline="true">
          <dt>Fixed-Length Dedicated Counter Bits (Method 1):</dt>
          <dd>
            <t>Some implementations allocate a specific number of bits in the
UUID layout to the sole purpose of tallying the total number of UUIDs created
during a given UUID timestamp tick.
A fixed bit-length counter, if present, <bcp14>MUST</bcp14> be positioned immediately after the
embedded timestamp. This promotes sortability and allows random data generation
for each counter increment.
With this method, the rand_a section (or a subset of its left-most bits) of UUIDv7
is used as fixed-length dedicated counter bits that are incremented for
every UUID generation.
The trailing random bits generated for each new UUID in rand_b can help produce
unguessable UUIDs. In the event more counter bits are required, the most significant
(left-most) bits of rand_b <bcp14>MAY</bcp14> be used as additional counter bits.</t>
          </dd>
          <dt>Monotonic Random (Method 2):</dt>
          <dd>
            <t>With this method, the random data is extended to also function as a counter.
This monotonic value can be thought of as a "randomly seeded counter" which
<bcp14>MUST</bcp14> be incremented in the least significant position for each UUID created
on a given timestamp tick.
UUIDv7's rand_b section <bcp14>SHOULD</bcp14> be utilized with this method to handle batch
UUID generation during a single timestamp tick.
The increment value for every UUID generation is a random integer
of any desired length larger than zero. It ensures the UUIDs retain the required
level of unguessability provided by the underlying entropy.
The increment value <bcp14>MAY</bcp14> be 1 when the number of UUIDs generated in a particular
period of time is important and guessability is not an issue. However, incrementing the counter by 1
<bcp14>SHOULD NOT</bcp14> be used by implementations that favor unguessability, as the resulting
values are easily guessable.</t>
          </dd>
          <dt>Replace Left-Most Random Bits with Increased Clock Precision (Method 3):</dt>
          <dd>
            <t>For UUIDv7, which has millisecond timestamp precision, it is possible
to use additional clock precision available on the system to substitute
for up to 12 random bits immediately following the timestamp.  This can provide
values that are time-ordered with sub-millisecond precision, using
however many bits are appropriate in the implementation environment.
With this method, the additional time precision bits <bcp14>MUST</bcp14> follow the
timestamp as the next available bit, in the rand_a field for UUIDv7.
</t>
            <t>To calculate this value, start with the portion of the timestamp
expressed as a fraction of clock's tick value (fraction of a millisecond
for UUIDv7).  Compute the count of possible values that can be represented in
the available bit space, 4096 for the UUIDv7 rand_a field.
Using floating point or scaled integer arithmetic, multiply this fraction of a millisecond
value by 4096 and round down (toward zero) to an integer result to arrive at a number
between 0 and the maximum allowed for the indicated bits
which sorts monotonically based on time. Each increasing fractional
value will result in an increasing bit field value, to the
precision available with these bits.</t>
            <t>For example, let's assume a system timestamp of 1 Jan 2023 12:34:56.1234567.
Taking the precision greater than 1ms gives us a value of 0.4567, as a
fraction of a millisecond.  If we wish to encode this as 12 bits, we can
take the count of possible values that fit in those bits (4096, or 2 to the 12th power)
and multiply it by our millisecond fraction value of 0.4567 and truncate the result to
an integer, which gives an integer value of 1870. Expressed as hexadecimal it is
0x74E, or the binary bits 0b011101001110.  One can then use those 12 bits
as the most significant (left-most) portion of the random section of the UUID
(e.g., the rand_a field in UUIDv7).
This works for any desired bit length that fits into a UUID, and applications
can decide the appropriate length based on available clock precision, but for
UUIDv7, it is limited to 12 bits at maximum to reserve sufficient space for
random bits.</t>
            <t>The main benefit to encoding additional timestamp precision
is that it utilizes additional time precision already available in the system clock
to provide values that are more likely to be unique, and thus may simplify
certain implementations. This technique can also be used in conjunction with one
of the other methods, where this additional time precision would immediately
follow the timestamp, and then if any bits are to be used as clock sequence
they would follow next.</t>
          </dd>
        </dl>
        <t>The following sub-topics cover topics related solely with creating reliable
fixed-length dedicated counters:</t>
        <dl newline="true">
          <dt>Fixed-Length Dedicated Counter Seeding:</dt>
          <dd>
            <t>Implementations utilizing the fixed-length counter method randomly initialize
the counter with each new timestamp tick.
However, when the timestamp has not increased, the counter is instead incremented by the desired increment logic.
When utilizing a randomly seeded counter alongside Method 1, the random value <bcp14>MAY</bcp14>
be regenerated with each counter increment without impacting sortability.
The downside is that Method 1 is prone to overflows if a counter of adequate
length is not selected or the random data generated leaves little room for
the required number of increments.
Implementations utilizing fixed-length counter method <bcp14>MAY</bcp14> also choose to
randomly initialize a portion of the counter rather than the entire counter. For
example, a 24 bit counter could have the 23 bits in least-significant, right-most,
position randomly initialized. The remaining most significant, left-most
counter bit is initialized as zero for the sole purpose of guarding against
counter rollovers.</t>
          </dd>
          <dt>Fixed-Length Dedicated Counter Length:</dt>
          <dd>
            <t>Select a counter bit-length that can properly handle
the level of timestamp precision in use.
For example, millisecond precision generally requires a larger counter than a
timestamp with nanosecond precision.
General guidance is that the counter <bcp14>SHOULD</bcp14> be at least 12 bits but no longer
than 42 bits.
Care must be taken to ensure that the counter length selected leaves
room for sufficient entropy in the random portion of the UUID after the counter.
This entropy helps improve the unguessability characteristics of UUIDs created
within the batch.</t>
          </dd>
        </dl>
        <t>The following sub-topics cover rollover handling with either type of counter
method:</t>
        <dl newline="true">
          <dt>Counter Rollover Guards:</dt>
          <dd>
            <t>The technique from Fixed-Length Dedicated Counter Seeding that describes
allocating a segment of the fixed-length counter as a rollover guard is also
helpful to mitigate counter rollover issues.
This same technique can be used with monotonic random counter methods
by ensuring that the total length of a possible increment in the least significant,
right most position is less than the total length of the random value being incremented.
As such, the most significant, left-most, bits can be incremented as rollover
guarding.</t>
          </dd>
          <dt>Counter Rollover Handling:</dt>
          <dd>
            <t>Counter rollovers <bcp14>MUST</bcp14> be handled by the application to avoid sorting issues.
The general guidance is that applications that care about absolute monotonicity
and sortability should freeze the counter and wait for the timestamp to advance
which ensures monotonicity is not broken.
Alternatively, implementations <bcp14>MAY</bcp14> increment the timestamp ahead of the actual
time and reinitialize the counter.</t>
          </dd>
        </dl>
        <t>Implementations <bcp14>MAY</bcp14> use the following logic to ensure UUIDs featuring embedded
counters are monotonic in nature:</t>
        <ol spacing="normal" type="1"><li>
            <t>Compare the current timestamp against the previously stored timestamp.</t>
          </li>
          <li>
            <t>If the current timestamp is equal to the previous timestamp, increment the
  counter according to the desired method.</t>
          </li>
          <li>
            <t>If the current timestamp is greater than the previous timestamp, re-initialize
  the desired counter method to the new timestamp and generate new random bytes
  (if the bytes were frozen or being used as the seed for a monotonic counter).</t>
          </li>
        </ol>
        <dl newline="true">
          <dt>Monotonic Error Checking:</dt>
          <dd>
            <t>Implementations <bcp14>SHOULD</bcp14> check if the currently generated UUID is greater
than the previously generated UUID. If this is not the case then any number
of things could have occurred, such as clock rollbacks,
leap second handling, and counter rollovers. Applications <bcp14>SHOULD</bcp14> embed sufficient
logic to catch these scenarios and correct the problem to ensure that the next
UUID generated is greater than the previous, or at least report an appropriate error.
To handle this scenario, the
general guidance is that application <bcp14>MAY</bcp14> reuse the previous timestamp and
increment the previous counter method.</t>
          </dd>
        </dl>
      </section>
      <section anchor="generator_states">
        <name>UUID Generator States</name>
        <t>The (optional) UUID generator state only needs to be read from stable storage once at boot
time, if it is read into a system-wide shared volatile store (and
updated whenever the stable store is updated).</t>
        <t>This stable storage <bcp14>MAY</bcp14> be used to record various portions of the UUID generation
which prove useful for batch UUID generation purposes and monotonic error checking with UUIDv6 and UUIDv7.
These stored values include but are not limited to last known timestamp, clock sequence, counters, and random data.</t>
        <t>If an implementation does not have any stable store available, then
it <bcp14>MAY</bcp14> proceed with UUID generation as if this was the first UUID created within a batch.
This is the least desirable implementation because it will increase the frequency
of creation of values such as clock sequence, counters, or random data, which increases the
probability of duplicates. Further, frequent generation of random numbers also puts more stress on any entropy source and or entropy pool being used as the basis for such random numbers.</t>
        <t>An implementation <bcp14>MAY</bcp14> also return an application error in the event that collision resistance is of the utmost concern.
The semantics of this error are up to the application and implementation.
See <xref target="collision_resistance"/> for more information on weighting collision tolerance in applications.</t>
        <t>For UUIDv1 and UUIDv6, if the node ID can never change (e.g., the network interface card
from which the node ID is derived is inseparable
from the system), or if any change also re-initializes the clock
sequence to a random value, then instead of keeping it in stable
store, the current node ID may be returned.</t>
        <t>For UUIDv1 and UUIDv6, the state does not always need to be written to stable store every
time a UUID is generated.  The timestamp in the stable store can be
periodically set to a value larger than any yet used in a UUID.  As
long as the generated UUIDs have timestamps less than that value, and
the clock sequence and node ID remain unchanged, only the shared
volatile copy of the state needs to be updated.  Furthermore, if the
timestamp value in stable store is in the future by less than the
typical time it takes the system to reboot, a crash will not cause a
re-initialization of the clock sequence.</t>
        <t>If it is too expensive to access shared state each time a UUID is
generated, then the system-wide generator can be implemented to
allocate a block of time stamps each time it is called; a per-
process generator can allocate from that block until it is exhausted.</t>
      </section>
      <section anchor="distributed_shared_knowledge">
        <name>Distributed UUID Generation</name>
        <t>Some implementations <bcp14>MAY</bcp14> desire to utilize multi-node, clustered, applications
which involve two or more
nodes independently generating UUIDs that will be stored in a common location.
While UUIDs already feature sufficient entropy to ensure that the chances
of collision are low, as the total number of UUID generating nodes increase; so does the likelihood
of a collision.</t>
        <t>This section will detail the two additional collision resistance approaches that have been observed by multi-node
UUID implementations in distributed environments.</t>
        <t>It should be noted that, although this section details two methods for the sake of completeness,
implementations should utilize the pseudo-random Node ID option if additional collision resistance for distributed UUID generation is a requirement.
Likewise, utilization of either method is not required for implementing UUID generation in distributed environments.</t>
        <dl newline="true">
          <dt>Node IDs:</dt>
          <dd>
            <t>With this method, a pseudo-random Node ID value is placed within the UUID
layout.
This identifier helps ensure the bit-space for a given node is unique, resulting
in UUIDs that do not conflict with any other UUID created by another node
with a different node id.
Implementations that choose to leverage an embedded node id <bcp14>SHOULD</bcp14> utilize
UUIDv8.
The node id <bcp14>SHOULD NOT</bcp14> be an IEEE 802 MAC address as per <xref target="Security"/>.
The location and bit length are left to implementations and are outside the
scope of this specification.
Furthermore, the creation and negotiation of unique node ids among nodes
is also out of scope for this specification.</t>
          </dd>
          <dt>Centralized Registry:</dt>
          <dd>
            <t>With this method all nodes tasked with creating UUIDs consult a central registry
and confirm the generated value is unique. As applications scale, the communication
with the central registry could become a bottleneck and impact UUID generation
in a negative way. Shared knowledge schemes with central/global
registries are outside the scope of this specification and is <bcp14>NOT RECOMMENDED</bcp14>.</t>
          </dd>
        </dl>
        <t>Distributed applications generating UUIDs at a variety of hosts <bcp14>MUST</bcp14>
be willing to rely on the random number source at all hosts.</t>
      </section>
      <section anchor="name_based_uuid_generation">
        <name>Name-Based UUID Generation</name>
        <t>Although some prefer to use the word "hash-based" to describe UUIDs featuring hashing algorithms (MD5 or SHA-1), this document retains the usage of the adjective "name-based" in order to maintain consistency with historical documents and existing implementations.</t>
        <t>The requirements for name-based UUIDs are as follows:</t>
        <ul spacing="normal">
          <li>
            <t>UUIDs generated at different times from the same name (using the same canonical format) in the
same namespace <bcp14>MUST</bcp14> be equal.</t>
          </li>
          <li>
            <t>UUIDs generated from two different names (same or differing canonical format) in the same namespace
should be different (with very high probability).</t>
          </li>
          <li>
            <t>UUIDs generated from the same name (same or differing canonical format) in two different namespaces
should be different (with very high probability).</t>
          </li>
          <li>
            <t>If two UUIDs that were generated from names (using the same canonical format) are equal, then they
were generated from the same name in the same namespace (with very
high probability).</t>
          </li>
        </ul>
        <dl newline="true">
          <dt>A note on names:</dt>
          <dd>
            <t>The concept of name (and namespace) should be broadly construed and not limited to textual names. A canonical sequence of octets is one that conforms to the specification for that name form's canonical representation. A name can have many usual forms, only one of which can be canonical. An implementer of new namespaces for UUIDs needs to reference the specification for the canonical form of names in that space, or define such a canonical for the namespace if it does not exist.
For example, at the time of this specification, <xref target="RFC8499"/> domain name system (DNS) has three conveyance formats: common (www.example.com), presentation (www.example.com.) and wire format (3www7example3com0).
Looking at <xref target="X500"/> distinguished names (DNs), the previous version of this specification allowed either text based or binary distinguished encoding rules (DER) based names as inputs.
For <xref target="RFC1738"/> uniform resource locators (URLs), one could provide a fully-qualified domain-name (FQDN) with or without the protocol identifier (www.example.com) or (https://www.example.com).
When it comes to <xref target="X660"/> object identifiers (OIDs) one could choose dot-notation without the leading dot (2.999), choose to include the leading dot (.2.999) or select one of the many formats from <xref target="X680"/> such as OID Internationalized Resource Identifier (OID-IRI) (/Joint-ISO-ITU-T/Example).
While most users may default to the common format for DNS, FQDN format for a URL, text format for X.500 and dot-notation without a leading dot for OID; name-based UUID implementations generally <bcp14>SHOULD</bcp14> allow arbitrary input which will compute name-based UUIDs for any of the aforementioned example names and others not defined here.
Each name format within a namespace will output different UUIDs. 
As such, the mechanisms or conventions used for allocating names and ensuring their uniqueness within their namespaces are beyond the scope of this specification.</t>
          </dd>
        </dl>
      </section>
      <section anchor="namespaces">
        <name>Namespace ID Usage and Allocation</name>
        <t>This section and table, <xref target="namespaceIDs"/>, details the namespace IDs for some potentially interesting namespaces such those for
<xref target="RFC8499"/> domain name system (DNS), <xref target="RFC1738"/> uniform resource locators (URLs), <xref target="X660"/> object identifiers (OIDs), and <xref target="X500"/> distinguished names (DNs).</t>
        <t>Further, this section also details allocation, IANA registration and other details pertinent to Namespace IDs.
IANA may use the table <xref target="namespaceIDs"/> as-is replacing "This Document" replaced as required.</t>
        <table anchor="namespaceIDs">
          <name>Namespace IDs</name>
          <thead>
            <tr>
              <th align="left">Namespace</th>
              <th align="left">Namespace ID Value</th>
              <th align="left">Name Reference</th>
              <th align="left">Namespace ID Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">DNS</td>
              <td align="left">6ba7b810-9dad-11d1-80b4-00c04fd430c8</td>
              <td align="left">
                <xref target="RFC8499"/></td>
              <td align="left">
                <xref target="RFC4122"/>, This document</td>
            </tr>
            <tr>
              <td align="left">URL</td>
              <td align="left">6ba7b811-9dad-11d1-80b4-00c04fd430c8</td>
              <td align="left">
                <xref target="RFC1738"/></td>
              <td align="left">
                <xref target="RFC4122"/>, This document</td>
            </tr>
            <tr>
              <td align="left">OID</td>
              <td align="left">6ba7b812-9dad-11d1-80b4-00c04fd430c8</td>
              <td align="left">
                <xref target="X660"/></td>
              <td align="left">
                <xref target="RFC4122"/>, This document</td>
            </tr>
            <tr>
              <td align="left">X500</td>
              <td align="left">6ba7b814-9dad-11d1-80b4-00c04fd430c8</td>
              <td align="left">
                <xref target="X500"/></td>
              <td align="left">
                <xref target="RFC4122"/>, This document</td>
            </tr>
          </tbody>
        </table>
        <t>Items may be added to this table using "Specification Required" policy as per <xref target="RFC8126"/>.</t>
        <t>For designated experts, generally speaking, Namespace IDs are allocated as follows:</t>
        <ul spacing="compact">
          <li>
            <t>The first namespace ID value, for DNS, was calculated from a time-based UUIDv1 and "6ba7b810-9dad-11d1-80b4-00c04fd430c8" used as a starting point.</t>
          </li>
          <li>
            <t>Subsequent namespace ID values increment the least-significant, right-most bit of time_low "6ba7b810" while freezing the rest of the UUID to "9dad-11d1-80b4-00c04fd430c8".</t>
          </li>
          <li>
            <t>New namespace ID values <bcp14>MUST</bcp14> use this same logic and <bcp14>MUST NOT</bcp14> use a previously used Namespace ID value.</t>
          </li>
          <li>
            <t>Thus, "6ba7b815" is the next available time_low for a new Namespace ID value with the full ID being "6ba7b815-9dad-11d1-80b4-00c04fd430c8".</t>
          </li>
          <li>
            <t>The upper bound for time_low in this special use, namespace ID values, is "ffffffff" or "ffffffff-9dad-11d1-80b4-00c04fd430c8" which should be sufficient space for future namespace ID values.</t>
          </li>
        </ul>
        <t>Note that the namespace ID value "6ba7b813-9dad-11d1-80b4-00c04fd430c8" and its usage is not defined by this document or by <xref target="RFC4122"/>, as such it <bcp14>SHOULD NOT</bcp14> be used as a Namespace ID value.</t>
        <t>New Namespace ID values <bcp14>MUST</bcp14> be documented as per <xref target="IANA"/> if they are to be globally available and fully interoperable.
Implementations <bcp14>MAY</bcp14> continue to use vendor-specific, application-specific, and deployment-specific Namespace ID values but know that interoperability is not guaranteed.
These custom Namespace ID values <bcp14>MUST NOT</bcp14> use the logic above and instead are <bcp14>RECOMMENDED</bcp14> to generate a UUIDv4 or UUIDv7 Namespace ID value.
If collision probability (<xref target="collision_resistance"/>) and uniqueness (<xref target="global_local_uniqueness"/>) of the final name-based UUID are not a problem; an implementation <bcp14>MAY</bcp14> also leverage UUIDv8 instead to create a custom, application-specific Namespace ID value.</t>
        <t>Implementations <bcp14>SHOULD</bcp14> provide the ability to input a custom namespace to account for newly registered IANA Namespace ID values outside of those listed in this section or custom, application specific Namespace ID values.</t>
      </section>
      <section anchor="collision_resistance">
        <name>Collision Resistance</name>
        <t>Implementations should weigh the consequences of UUID collisions within their
application and when deciding between UUID versions that use entropy (randomness)
versus the other components such as those in <xref target="timestamp_considerations"/> and <xref target="monotonicity_counters"/>.
This is especially true for distributed node collision resistance as defined
by <xref target="distributed_shared_knowledge"/>.</t>
        <t>There are two example scenarios below which help illustrate the varying seriousness
of a collision within an application.</t>
        <dl newline="true">
          <dt>Low Impact:</dt>
          <dd>
            <t>A UUID collision generated a duplicate log entry which results in incorrect
statistics derived from the data. Implementations that are not negatively
affected by collisions may continue with the entropy and uniqueness provided
by the traditional UUID format.</t>
          </dd>
          <dt>High Impact:</dt>
          <dd>
            <t>A duplicate key causes an airplane to receive the wrong course which puts
people's lives at risk. In this scenario there is no margin for error. Collisions
must be avoided and failure is unacceptable. Applications dealing with this
type of scenario must employ as much collision resistance as possible within
the given application context.</t>
          </dd>
        </dl>
      </section>
      <section anchor="global_local_uniqueness">
        <name>Global and Local Uniqueness</name>
        <t>UUIDs created by this specification <bcp14>MAY</bcp14> be used to provide local uniqueness
guarantees.
For example, ensuring UUIDs created within a local application context are
unique within a database <bcp14>MAY</bcp14> be sufficient for some implementations where
global uniqueness outside of the application context, in other applications,
or around the world is not required.</t>
        <t>Although true global uniqueness is impossible to guarantee without a shared
knowledge scheme, a shared knowledge scheme is not required by UUID to provide
uniqueness for practical implementation purposes.
Implementations <bcp14>MAY</bcp14> implement a shared knowledge scheme introduced in <xref target="distributed_shared_knowledge"/> as they see fit to extend the uniqueness guaranteed by this specification.</t>
      </section>
      <section anchor="unguessability">
        <name>Unguessability</name>
        <t>Implementations <bcp14>SHOULD</bcp14> utilize a cryptographically secure pseudo-random number
generator (CSPRNG) to provide values that are both difficult to predict ("unguessable")
and have a low likelihood of collision ("unique").  The exception is when a
suitable CSPRNG is unavailable in the execution environment.
Take care to ensure the CSPRNG state is properly reseeded upon
state changes, such as process forks, to ensure proper CSPRNG operation.
CSPRNG ensures the best of <xref target="collision_resistance"/> and <xref target="Security"/> are present in modern UUIDs.</t>
        <t>Further advice on generating cryptographic-quality random numbers can be found in <xref target="RFC4086"/>, <xref target="RFC8937"/> and in <xref target="RANDOM"/>.</t>
      </section>
      <section anchor="unidentifiable">
        <name>UUIDs That Do Not Identify the Host</name>
        <t>This section describes how to generate a UUIDv1 or UUIDv6 value if an IEEE
802 address is not available, or its use is not desired.</t>
        <t>Implementations <bcp14>MAY</bcp14> leverage MAC address randomization techniques (IEEE 802.11bh) as an alternative to the pseudo-random logic provided in this section.</t>
        <t>Alternatively, implementations <bcp14>MAY</bcp14> elect to obtain a 48 bit cryptographic-quality random
number as per <xref target="unguessability"/> to use it as the node ID.
After generating the 48 bit fully randomized node value, implementations <bcp14>MUST</bcp14> set the least significant bit of the first octet of the node ID set to 1.
This bit is the unicast/multicast bit, which will never be set in IEEE 802
addresses obtained from network cards.  Hence, there can never be a
conflict between UUIDs generated by machines with and without network
cards.
An example of generating a randomized 48 bit node value and the subsequent bit modification is detailed in the <xref target="test_vectors"/> appendix.
For more information about IEEE 802 address and the unicast/multicast or local/global bits please review <xref target="RFC7042"/>.</t>
        <t>For compatibility with earlier specifications, note that this
document uses the unicast/multicast bit, instead of the arguably more
correct local/global bit because MAC addresses with the local/global bit set or not are both possible in a network.
This is not the case with the unicast/multicast bit.
One node cannot have a MAC address that multicasts to multiple nodes.</t>
        <t>In addition, items such as the computer's name and the name of the
operating system, while not strictly speaking random, will help
differentiate the results from those obtained by other systems.</t>
        <t>The exact algorithm to generate a node ID using these data is system
specific, because both the data available and the functions to obtain
them are often very system specific.  A generic approach, however, is
to accumulate as many sources as possible into a buffer, use a
message digest (such as SHA-256 or SHA-512 defined by <xref target="FIPS180-4"/>), take an arbitrary 6
bytes from the hash value, and set the multicast bit as described
above.</t>
      </section>
      <section anchor="sorting">
        <name>Sorting</name>
        <t>UUIDv6 and UUIDv7 are designed so that implementations that require sorting
(e.g., database indexes) sort as opaque raw bytes, without need for
parsing or introspection.</t>
        <t>Time ordered monotonic UUIDs benefit from greater database index locality
because the new values are near each other in the index.
As a result objects are more easily clustered together for better performance.
The real-world differences in this approach of index locality vs random data
inserts can be one order of magnitude or more.</t>
        <t>UUID formats created by this specification are intended to be lexicographically sortable
while in the textual representation.</t>
        <t>UUIDs created by this specification are crafted with big-endian byte order
(network byte order) in mind. If little-endian style is required, UUIDv8
is available for custom UUID formats.</t>
      </section>
      <section anchor="opacity">
        <name>Opacity</name>
        <t>As general guidance, it is recommend to avoid parsing UUID values unnecessarily,
and instead treating UUIDs as opaquely as possible.  Although application-specific
concerns could of course require some degree of introspection
(e.g., to examine the <xref target="variant_field"/>, <xref target="version_field"/> or perhaps the timestamp of a UUID),
the advice here is to avoid this or other parsing unless absolutely necessary.
Applications typically tend to be simpler, more interoperable, and perform better,
when this advice is followed.</t>
      </section>
      <section anchor="database_considerations">
        <name>DBMS and Database Considerations</name>
        <t>For many applications, such as databases, storing UUIDs as text is unnecessarily
verbose, requiring 288 bits to represent 128 bit UUID values.
Thus, where feasible, UUIDs <bcp14>SHOULD</bcp14> be stored within database applications
as the underlying 128 bit binary value.</t>
        <t>For other systems, UUIDs <bcp14>MAY</bcp14> be stored in binary form or as text, as appropriate.
The trade-offs to both approaches are:</t>
        <ul spacing="normal">
          <li>
            <t>Storing as binary requires less space and may result in faster data access.</t>
          </li>
          <li>
            <t>Storing as text requires more space but may require less translation if the
resulting text form is to be used after retrieval, which thus may make it simpler
to implement.</t>
          </li>
        </ul>
        <t>DBMS vendors are encouraged to provide functionality to generate and store
UUID formats defined by this specification for use as identifiers or left
parts of identifiers such as, but not limited to, primary keys, surrogate
keys for temporal databases, foreign keys included in polymorphic relationships,
and keys for key-value pairs in JSON columns and key-value databases.
Applications using a monolithic database may find using database-generated
UUIDs (as opposed to client-generate UUIDs) provides the best UUID monotonicity.
In addition to UUIDs, additional identifiers <bcp14>MAY</bcp14> be used to ensure integrity
and feedback.</t>
        <t>Designers of database schema are cautioned against using name-based UUIDs (<xref target="uuidv3"/>/<xref target="uuidv5"/>) as primary keys in tables.
A common issue observed in database schema design is the assumption that a particular value will never change, which then later turns out to be an incorrect assumption.
Postal codes, license or other identification numbers, and numerous other such identifiers seem unique and unchanging at a given point time; only to later turn out to have edge cases where they need to change.
The subsequent change of the identifier, used as a "name" input for name-based UUIDs, can invalidate a given database structure.
In such scenarios it is observed that using any non-name-based UUID version would have resulted in the field in question being placed somewhere that would have been easier to adapt to such changes (primary key excluded from this statement).
The general advice is to avoid name-based UUID natural keys and instead utilize time-based UUID surrogate keys based on the aforementioned problems detailed in this section.</t>
      </section>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>All references to <xref target="RFC4122"/> in the IANA registries should be replaced with references to this document.
References to <xref target="RFC4122"/> document's Section 4.1.2 should be updated to refer to this document's <xref target="format"/>.</t>
      <t>The IANA URN namespace registration <xref target="URNNamespaces"/> for UUID filed in <xref target="RFC4122"/> should be updated to reference this document.</t>
      <t>Finally IANA should track UUID Subtypes and Special Case "Namespace IDs Values" as specified in <xref target="iana2"/> and <xref target="iana3"/>.</t>
      <t>When evaluating requests, the designated expert(s) should consider community feedback, how well-defined is the reference specification, and this specification's requirements.
Vendor-specific, application-specific, and deployment-specific values are unable to be registered.
Specification documents should be published in a stable, freely available manner (ideally located with a URL) but need not be standards.
The designated experts will either approve or deny the registration request, and communicate their decision to IANA. Denials should include an explanation and, if applicable, suggestions as to how to make the request successful.</t>
      <section anchor="iana2">
        <name>IANA UUID Subtype Registry and Registration</name>
        <t>This specification defines the "UUID Subtype" registry for common, widely used UUID standards.</t>
        <t><xref target="ianaSubtypes"/> should be used as-is for this registry with "This document" replaced as required.</t>
        <table anchor="ianaSubtypes">
          <name>IANA UUID Subtypes</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">ID</th>
              <th align="left">Hex</th>
              <th align="left">Subtype</th>
              <th align="left">Variant</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Unused</td>
              <td align="left">0</td>
              <td align="left">0x0</td>
              <td align="left">version</td>
              <td align="left">OSF DCE / IETF</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">Gregorian Time-based</td>
              <td align="left">1</td>
              <td align="left">0x1</td>
              <td align="left">version</td>
              <td align="left">OSF DCE / IETF</td>
              <td align="left">
                <xref target="RFC4122"/>, This document</td>
            </tr>
            <tr>
              <td align="left">DCE Security</td>
              <td align="left">2</td>
              <td align="left">0x2</td>
              <td align="left">version</td>
              <td align="left">OSF DCE / IETF</td>
              <td align="left">
                <xref target="C309"/>, <xref target="C311"/></td>
            </tr>
            <tr>
              <td align="left">MD5 Name-based</td>
              <td align="left">3</td>
              <td align="left">0x3</td>
              <td align="left">version</td>
              <td align="left">OSF DCE / IETF</td>
              <td align="left">
                <xref target="RFC4122"/>, This document</td>
            </tr>
            <tr>
              <td align="left">Random</td>
              <td align="left">4</td>
              <td align="left">0x4</td>
              <td align="left">version</td>
              <td align="left">OSF DCE / IETF</td>
              <td align="left">
                <xref target="RFC4122"/>, This document</td>
            </tr>
            <tr>
              <td align="left">SHA-1 Name-based</td>
              <td align="left">5</td>
              <td align="left">0x5</td>
              <td align="left">version</td>
              <td align="left">OSF DCE / IETF</td>
              <td align="left">
                <xref target="RFC4122"/>, This document</td>
            </tr>
            <tr>
              <td align="left">Reordered Gregorian Time-based</td>
              <td align="left">6</td>
              <td align="left">0x6</td>
              <td align="left">version</td>
              <td align="left">OSF DCE / IETF</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">Unix Time-based</td>
              <td align="left">7</td>
              <td align="left">0x7</td>
              <td align="left">version</td>
              <td align="left">OSF DCE / IETF</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">Custom</td>
              <td align="left">8</td>
              <td align="left">0x8</td>
              <td align="left">version</td>
              <td align="left">OSF DCE / IETF</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
        <t>This table may be extended by the "Standards Action" policy, per <xref target="RFC8126"/>.</t>
      </section>
      <section anchor="iana3">
        <name>IANA UUID Namespace ID Registry and Registration</name>
        <t>This specification defines the "UUID Namespace ID" registry for common, widely used Namespace ID values.</t>
        <t>The full details of this registration are found in <xref target="namespaces"/> section.</t>
      </section>
    </section>
    <section anchor="Security">
      <name>Security Considerations</name>
      <t>Implementations <bcp14>SHOULD NOT</bcp14> assume that UUIDs are hard to guess.
For example, they <bcp14>MUST NOT</bcp14> be used
as security capabilities (identifiers whose mere possession grants
access).  Discovery of predictability in a random number source will
result in a vulnerability.</t>
      <t>Implementations <bcp14>MUST NOT</bcp14> assume that it is easy to determine if a UUID has been
slightly modified in order to redirect a reference to another
object.  Humans do not have the ability to easily check the integrity
of a UUID by simply glancing at it.</t>
      <t>MAC addresses pose inherent security risks around privacy and <bcp14>SHOULD NOT</bcp14> be used within
a UUID.
Instead CSPRNG data <bcp14>SHOULD</bcp14> be selected from a source with sufficient entropy
to ensure guaranteed
uniqueness among UUID generation. See <xref target="unguessability"/> and <xref target="unidentifiable"/> for more information.</t>
      <t>Timestamps embedded in the UUID do pose a very small attack surface. The
timestamp in conjunction with
an embedded counter does signal the order of creation for a given UUID and
its corresponding data but
does not define anything about the data itself or the application as a whole.
If UUIDs are required for
use with any security operation within an application context in any shape
or form then UUIDv4, <xref target="uuidv4"/> <bcp14>SHOULD</bcp14> be utilized.</t>
      <t>See <xref target="RFC6151"/> for MD5 Security Considerations and <xref target="RFC6194"/> for SHA-1 security considerations.</t>
    </section>
    <section anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors gratefully acknowledge the contributions of Rich Salz,
Michael Mealling,
Ben Campbell,
Ben Ramsey,
Fabio Lima,
Gonzalo Salgueiro,
Martin Thomson,
Murray S. Kucherawy,
Rick van Rein,
Rob Wilton,
Sean Leonard,
Theodore Y. Ts'o,
Robert Kieffer,
Sergey Prokhorenko,
LiosK.</t>
      <t>As well as all of those in the IETF community and on GitHub to who contributed
to the discussions which resulted in this document.</t>
      <t>This document draws heavily on the OSF DCE specification for UUIDs.
Ted Ts'o provided helpful comments, especially on the byte ordering
section which we mostly plagiarized from a proposed wording he
supplied (all errors in that section are our responsibility,
however).</t>
      <t>We are also grateful to the careful reading and bit-twiddling of Ralf
S. Engelschall, John Larmouth, and Paul Thorpe.  Professor Larmouth
was also invaluable in achieving coordination with ISO/IEC.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="C309" target="https://pubs.opengroup.org/onlinepubs/9696999099/toc.pdf">
          <front>
            <title>DCE: Remote Procedure Call</title>
            <author>
              <organization/>
            </author>
            <date year="1994" month="August"/>
          </front>
          <seriesInfo name="ISBN" value="1-85912-041-5"/>
          <refcontent>Open Group CAE Specification C309</refcontent>
        </reference>
        <reference anchor="X667">
          <front>
            <title>Information Technology, "Procedures for the operation of OSI Registration Authorities: Generation and registration of Universally Unique Identifiers (UUIDs) and their use as ASN.1 Object Identifier components"</title>
            <author>
              <organization/>
            </author>
            <date year="2004"/>
          </front>
          <seriesInfo name="ISO/IEC" value="9834-8:2004"/>
          <seriesInfo name="ITU-T Rec." value="X.667"/>
        </reference>
        <reference anchor="RFC8141">
          <front>
            <title>Uniform Resource Names (URNs)</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="April" year="2017"/>
            <abstract>
              <t>A Uniform Resource Name (URN) is a Uniform Resource Identifier (URI) that is assigned under the "urn" URI scheme and a particular URN namespace, with the intent that the URN will be a persistent, location-independent resource identifier. With regard to URN syntax, this document defines the canonical syntax for URNs (in a way that is consistent with URI syntax), specifies methods for determining URN-equivalence, and discusses URI conformance. With regard to URN namespaces, this document specifies a method for defining a URN namespace and associating it with a namespace identifier, and it describes procedures for registering namespace identifiers with the Internet Assigned Numbers Authority (IANA). This document obsoletes both RFCs 2141 and 3406.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8141"/>
          <seriesInfo name="DOI" value="10.17487/RFC8141"/>
        </reference>
        <reference anchor="FIPS180-4" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf">
          <front>
            <title>Secure Hash Standard</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="FIPS" value="PUB 180-4"/>
        </reference>
        <reference anchor="FIPS202" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf">
          <front>
            <title>SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="FIPS" value="PUB 202"/>
        </reference>
        <reference anchor="C311" target="https://pubs.opengroup.org/onlinepubs/9696989899/toc.pdf">
          <front>
            <title>DCE 1.1: Authentication and Security Services</title>
            <author>
              <organization/>
            </author>
            <date year="1997"/>
          </front>
          <refcontent>Open Group CAE Specification C311</refcontent>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC1321">
          <front>
            <title>The MD5 Message-Digest Algorithm</title>
            <author fullname="R. Rivest" initials="R." surname="Rivest"/>
            <date month="April" year="1992"/>
            <abstract>
              <t>This document describes the MD5 message-digest algorithm. The algorithm takes as input a message of arbitrary length and produces as output a 128-bit "fingerprint" or "message digest" of the input. This memo provides information for the Internet community. It does not specify an Internet standard.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1321"/>
          <seriesInfo name="DOI" value="10.17487/RFC1321"/>
        </reference>
        <reference anchor="RFC1738">
          <front>
            <title>Uniform Resource Locators (URL)</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <author fullname="M. McCahill" initials="M." surname="McCahill"/>
            <date month="December" year="1994"/>
            <abstract>
              <t>This document specifies a Uniform Resource Locator (URL), the syntax and semantics of formalized information for location and access of resources via the Internet. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1738"/>
          <seriesInfo name="DOI" value="10.17487/RFC1738"/>
        </reference>
        <reference anchor="RFC4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="J. Schiller" initials="J." surname="Schiller"/>
            <author fullname="S. Crocker" initials="S." surname="Crocker"/>
            <date month="June" year="2005"/>
            <abstract>
              <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts. However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities. The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
              <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult. This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities. It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications. 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="106"/>
          <seriesInfo name="RFC" value="4086"/>
          <seriesInfo name="DOI" value="10.17487/RFC4086"/>
        </reference>
        <reference anchor="RFC4122">
          <front>
            <title>A Universally Unique IDentifier (UUID) URN Namespace</title>
            <author fullname="P. Leach" initials="P." surname="Leach"/>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <author fullname="R. Salz" initials="R." surname="Salz"/>
            <date month="July" year="2005"/>
            <abstract>
              <t>This specification defines a Uniform Resource Name namespace for UUIDs (Universally Unique IDentifier), also known as GUIDs (Globally Unique IDentifier). A UUID is 128 bits long, and can guarantee uniqueness across space and time. UUIDs were originally used in the Apollo Network Computing System and later in the Open Software Foundation\'s (OSF) Distributed Computing Environment (DCE), and then in Microsoft Windows platforms.</t>
              <t>This specification is derived from the DCE specification with the kind permission of the OSF (now known as The Open Group). Information from earlier versions of the DCE specification have been incorporated into this document. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4122"/>
          <seriesInfo name="DOI" value="10.17487/RFC4122"/>
        </reference>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC6151">
          <front>
            <title>Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="L. Chen" initials="L." surname="Chen"/>
            <date month="March" year="2011"/>
            <abstract>
              <t>This document updates the security considerations for the MD5 message digest algorithm. It also updates the security considerations for HMAC-MD5. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6151"/>
          <seriesInfo name="DOI" value="10.17487/RFC6151"/>
        </reference>
        <reference anchor="RFC6194">
          <front>
            <title>Security Considerations for the SHA-0 and SHA-1 Message-Digest Algorithms</title>
            <author fullname="T. Polk" initials="T." surname="Polk"/>
            <author fullname="L. Chen" initials="L." surname="Chen"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="March" year="2011"/>
            <abstract>
              <t>This document includes security considerations for the SHA-0 and SHA-1 message digest algorithm. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6194"/>
          <seriesInfo name="DOI" value="10.17487/RFC6194"/>
        </reference>
        <reference anchor="RFC7042">
          <front>
            <title>IANA Considerations and IETF Protocol and Documentation Usage for IEEE 802 Parameters</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="J. Abley" initials="J." surname="Abley"/>
            <date month="October" year="2013"/>
            <abstract>
              <t>Some IETF protocols make use of Ethernet frame formats and IEEE 802 parameters. This document discusses several uses of such parameters in IETF protocols, specifies IANA considerations for assignment of points under the IANA OUI (Organizationally Unique Identifier), and provides some values for use in documentation. This document obsoletes RFC 5342.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="141"/>
          <seriesInfo name="RFC" value="7042"/>
          <seriesInfo name="DOI" value="10.17487/RFC7042"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC8499">
          <front>
            <title>DNS Terminology</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="A. Sullivan" initials="A." surname="Sullivan"/>
            <author fullname="K. Fujiwara" initials="K." surname="Fujiwara"/>
            <date month="January" year="2019"/>
            <abstract>
              <t>The Domain Name System (DNS) is defined in literally dozens of different RFCs. The terminology used by implementers and developers of DNS protocols, and by operators of DNS systems, has sometimes changed in the decades since the DNS was first defined. This document gives current definitions for many of the terms used in the DNS in a single document.</t>
              <t>This document obsoletes RFC 7719 and updates RFC 2308.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="219"/>
          <seriesInfo name="RFC" value="8499"/>
          <seriesInfo name="DOI" value="10.17487/RFC8499"/>
        </reference>
        <reference anchor="RFC8937">
          <front>
            <title>Randomness Improvements for Security Protocols</title>
            <author fullname="C. Cremers" initials="C." surname="Cremers"/>
            <author fullname="L. Garratt" initials="L." surname="Garratt"/>
            <author fullname="S. Smyshlyaev" initials="S." surname="Smyshlyaev"/>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="October" year="2020"/>
            <abstract>
              <t>Randomness is a crucial ingredient for Transport Layer Security (TLS) and related security protocols. Weak or predictable "cryptographically secure" pseudorandom number generators (CSPRNGs) can be abused or exploited for malicious purposes. An initial entropy source that seeds a CSPRNG might be weak or broken as well, which can also lead to critical and systemic security problems. This document describes a way for security protocol implementations to augment their CSPRNGs using long-term private keys. This improves randomness from broken or otherwise subverted CSPRNGs.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8937"/>
          <seriesInfo name="DOI" value="10.17487/RFC8937"/>
        </reference>
        <reference anchor="X500">
          <front>
            <title>Information technology – Open Systems Interconnection – The Directory: Overview of concepts, models and services</title>
            <author>
              <organization/>
            </author>
            <date year="2019"/>
          </front>
          <seriesInfo name="ISO/IEC" value="9594-1"/>
          <seriesInfo name="ITU-T Rec." value="X.500"/>
        </reference>
        <reference anchor="X660">
          <front>
            <title>Information technology – Procedures for the operation of object identifier registration authorities: General procedures and top arcs of the international object identifier tree</title>
            <author>
              <organization/>
            </author>
            <date year="2011"/>
          </front>
          <seriesInfo name="ISO/IEC" value="9834-1"/>
          <seriesInfo name="ITU-T Rec." value="X.660"/>
        </reference>
        <reference anchor="X680">
          <front>
            <title>Information Technology - Abstract Syntax Notation One (ASN.1) &amp; ASN.1 encoding rules</title>
            <author>
              <organization/>
            </author>
            <date year="2021"/>
          </front>
          <seriesInfo name="ISO/IEC" value="8824-1:2021"/>
          <seriesInfo name="ITU-T Rec." value="X.680"/>
        </reference>
        <reference anchor="LexicalUUID" target="https://github.com/twitter-archive/cassie">
          <front>
            <title>A Scala client for Cassandra</title>
            <author>
              <organization>Twitter</organization>
            </author>
            <date year="2012" month="November"/>
          </front>
          <seriesInfo name="commit" value="f6da4e0"/>
        </reference>
        <reference anchor="Snowflake" target="https://github.com/twitter-archive/snowflake/releases/tag/snowflake-2010">
          <front>
            <title>Snowflake is a network service for generating unique ID numbers at high scale with some simple guarantees.</title>
            <author>
              <organization>Twitter</organization>
            </author>
            <date year="2014" month="May"/>
          </front>
          <seriesInfo name="Commit" value="b3f6a3c"/>
        </reference>
        <reference anchor="Flake" target="https://github.com/boundary/flake">
          <front>
            <title>Flake: A decentralized, k-ordered id generation service in Erlang</title>
            <author>
              <organization>Boundary</organization>
            </author>
            <date year="2017" month="February"/>
          </front>
          <seriesInfo name="Commit" value="15c933a"/>
        </reference>
        <reference anchor="ShardingID" target="https://instagram-engineering.com/sharding-ids-at-instagram-1cf5a71e5a5c">
          <front>
            <title>Sharding &amp; IDs at Instagram</title>
            <author>
              <organization>Instagram Engineering</organization>
            </author>
            <date year="2012" month="December"/>
          </front>
        </reference>
        <reference anchor="KSUID" target="https://github.com/segmentio/ksuid">
          <front>
            <title>K-Sortable Globally Unique IDs</title>
            <author>
              <organization>Segment</organization>
            </author>
            <date year="2020" month="July"/>
          </front>
          <seriesInfo name="Commit" value="bf376a7"/>
        </reference>
        <reference anchor="Elasticflake" target="https://github.com/ppearcy/elasticflake">
          <front>
            <title>Sequential UUID / Flake ID generator pulled out of elasticsearch common</title>
            <author initials="P." surname="Pearcy" fullname="Paul Pearcy">
              <organization/>
            </author>
            <date year="2015" month="January"/>
          </front>
          <seriesInfo name="Commit" value="dd71c21"/>
        </reference>
        <reference anchor="FlakeID" target="https://github.com/T-PWK/flake-idgen">
          <front>
            <title>Flake ID Generator</title>
            <author initials="T." surname="Pawlak" fullname="Tom Pawlak">
              <organization/>
            </author>
            <date year="2020" month="April"/>
          </front>
          <seriesInfo name="Commit" value="fcd6a2f"/>
        </reference>
        <reference anchor="Sonyflake" target="https://github.com/sony/sonyflake">
          <front>
            <title>A distributed unique ID generator inspired by Twitter's Snowflake</title>
            <author>
              <organization>Sony</organization>
            </author>
            <date year="2020" month="August"/>
          </front>
          <seriesInfo name="Commit" value="848d664"/>
        </reference>
        <reference anchor="orderedUuid" target="https://itnext.io/laravel-the-mysterious-ordered-uuid-29e7500b4f8">
          <front>
            <title>Laravel: The mysterious "Ordered UUID"</title>
            <author initials="I. B." surname="Cabrera" fullname="Italo Baeza Cabrera">
              <organization/>
            </author>
            <date year="2020" month="January"/>
          </front>
        </reference>
        <reference anchor="COMBGUID" target="https://github.com/richardtallent/RT.Comb">
          <front>
            <title>Creating sequential GUIDs in C# for MSSQL or PostgreSql</title>
            <author initials="R." surname="Tallent" fullname="Richard Tallent">
              <organization/>
            </author>
            <date year="2020" month="December"/>
          </front>
          <seriesInfo name="Commit" value="2759820"/>
        </reference>
        <reference anchor="ULID" target="https://github.com/ulid/spec">
          <front>
            <title>Universally Unique Lexicographically Sortable Identifier</title>
            <author initials="A." surname="Feerasta" fullname="Alizain Feerasta">
              <organization/>
            </author>
            <date year="2019" month="May"/>
          </front>
          <seriesInfo name="Commit" value="d0c7170"/>
        </reference>
        <reference anchor="SID" target="https://github.com/chilts/sid">
          <front>
            <title>sid : generate sortable identifiers</title>
            <author initials="A." surname="Chilton" fullname="Andrew Chilton">
              <organization/>
            </author>
            <date year="2019" month="June"/>
          </front>
          <seriesInfo name="Commit" value="660e947"/>
        </reference>
        <reference anchor="pushID" target="https://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html">
          <front>
            <title>The 2^120 Ways to Ensure Unique Identifiers</title>
            <author>
              <organization>Google</organization>
            </author>
            <date year="2015" month="February"/>
          </front>
        </reference>
        <reference anchor="XID" target="https://github.com/rs/xid">
          <front>
            <title>Globally Unique ID Generator</title>
            <author initials="O." surname="Poitrey" fullname="Olivier Poitrey">
              <organization/>
            </author>
            <date year="2020" month="October"/>
          </front>
          <seriesInfo name="Commit" value="efa678f"/>
        </reference>
        <reference anchor="ObjectID" target="https://docs.mongodb.com/manual/reference/method/ObjectId/">
          <front>
            <title>ObjectId - MongoDB Manual</title>
            <author>
              <organization>MongoDB</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="CUID" target="https://github.com/ericelliott/cuid">
          <front>
            <title>Collision-resistant ids optimized for horizontal scaling and performance.</title>
            <author initials="E." surname="Elliott" fullname="Eric Elliott">
              <organization/>
            </author>
            <date year="2020" month="October"/>
          </front>
          <seriesInfo name="Commit" value="215b27b"/>
        </reference>
        <reference anchor="IEEE754" target="https://standards.ieee.org/ieee/754/6210/">
          <front>
            <title>IEEE Standard for Floating-Point Arithmetic.</title>
            <author>
              <organization>IEEE</organization>
            </author>
            <date year="2019" month="July"/>
          </front>
          <seriesInfo name="Series" value="754-2019"/>
        </reference>
        <reference anchor="URNNamespaces" target="https://www.iana.org/assignments/urn-namespaces/urn-namespaces.xhtml">
          <front>
            <title>Uniform Resource Names (URN) Namespaces</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date year="2022" month="November" day="18"/>
          </front>
        </reference>
        <reference anchor="Python" target="https://docs.python.org/3/library/uuid.html">
          <front>
            <title>UUID objects according to RFC</title>
            <author>
              <organization>Python</organization>
            </author>
            <date year="2023" month="May" day="23"/>
          </front>
        </reference>
        <reference anchor="Microsoft" target="https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/a66edeb1-52a0-4d64-a93b-2f5c833d7d92">
          <front>
            <title>curly braced GUID string</title>
            <author>
              <organization>Microsoft</organization>
            </author>
            <date year="2023" month="April" day="03"/>
          </front>
        </reference>
        <reference anchor="MS_COM_GUID" target="https://devblogs.microsoft.com/oldnewthing/20220928-00/?p=107221">
          <front>
            <title>Why does COM express GUIDs in a mix of big-endian and little-endian? Why can’t it just pick a side and stick with it?</title>
            <author initials="R." surname="Chen" fullname="Raymond Chen">
              <organization/>
            </author>
            <date year="2022" month="September" day="28"/>
          </front>
        </reference>
        <reference anchor="IBM_NCS" target="https://www.ibm.com/docs/en/aix/7.1?topic=u-uuid-gen-command-ncs">
          <front>
            <title>uuid_gen Command (NCS)</title>
            <author>
              <organization>IBM</organization>
            </author>
            <date year="2023" month="March" day="23"/>
          </front>
        </reference>
        <reference anchor="RANDOM" target="https://peteroupc.github.io/random.html">
          <front>
            <title>Random Number Generator Recommendations for Applications</title>
            <author initials="P." surname="Occil" fullname="Peter Occil">
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 2049?>

<section anchor="test_vectors">
      <name>Test Vectors</name>
      <t>Both UUIDv1 and UUIDv6 test vectors utilize the same 60 bit timestamp: 0x1EC9414C232AB00
(138648505420000000) Tuesday, February 22, 2022 2:22:22.000000 PM GMT-05:00</t>
      <t>Both UUIDv1 and UUIDv6 utilize the same values in clock_seq,
and node. All of which have been generated with random data.
For the randomized node, the least significant bit of the first octet is set to a value of 1 as per <xref target="unidentifiable"/>. 
Thus the starting value 0x9E6BDECED846 was changed to 0x9F6BDECED846.</t>
      <t>The pseudocode used for converting from a 64 bit Unix timestamp to a 100ns Gregorian timestamp value
has been left in the document for reference purposes.</t>
      <figure>
        <name>Test Vector Timestamp Pseudo-code</name>
        <sourcecode type="code"><![CDATA[
# Gregorian to Unix Offset:
# The number of 100-ns intervals between the
# UUID epoch 1582-10-15 00:00:00
# and the Unix epoch 1970-01-01 00:00:00
# Greg_Unix_offset = 0x01b21dd213814000 or 122192928000000000

# Unix 64 bit Nanosecond Timestamp:
# Unix NS: Tuesday, February 22, 2022 2:22:22 PM GMT-05:00
# Unix_64_bit_ns = 0x16D6320C3D4DCC00 or 1645557742000000000

# Unix Nanosecond precision to Gregorian 100-nanosecond intervals
# Greg_100_ns = (Unix_64_bit_ns/100)+Greg_Unix_offset

# Work:
# Greg_100_ns = (1645557742000000000/100)+122192928000000000
# Unix_64_bit_ns = (138648505420000000-122192928000000000)*100

# Final:
# Greg_100_ns = 0x1EC9414C232AB00 or 138648505420000000
]]></sourcecode>
      </figure>
      <section anchor="uuidv1_example">
        <name>Example of a UUIDv1 Value</name>
        <figure>
          <name>UUIDv1 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field      bits value
-------------------------------------------
time_low   32   0xC232AB00
time_mid   16   0x9414
ver         4   0x1
time_high  12   0x1EC
var         2   0b10
clock_seq  14   0b11, 0x3C8
node       48   0x9F6BDECED846
-------------------------------------------
total      128
-------------------------------------------
final: C232AB00-9414-11EC-B3C8-9E6BDECED846
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv3_example">
        <name>Example of a UUIDv3 Value</name>
        <t>The MD5 computation from is detailed in <xref target="v3md5"/> using the DNS Namespace ID value and the Name "www.example.com".
while the field mapping and all values are illustrated in <xref target="v3fields"/>.
Finally to further illustrate the bit swapping for version and variant see <xref target="v3vervar"/>.</t>
        <figure anchor="v3md5">
          <name>UUIDv3 Example MD5</name>
          <artwork><![CDATA[
Namespace (DNS):  6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:             www.example.com
------------------------------------------------------
MD5:              5df418813aed051548a72f4a814cf09e
]]></artwork>
        </figure>
        <figure anchor="v3fields">
          <name>UUIDv3 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
md5_high  48   0x5df418813aed
ver        4   0x3
md5_mid   12   0x515
var        2   0b10
md5_low   62   0b00, 0x8a72f4a814cf09e
-------------------------------------------
total     128
-------------------------------------------
final: 5df41881-3aed-3515-88a7-2f4a814cf09e
]]></artwork>
        </figure>
        <figure anchor="v3vervar">
          <name>UUIDv3 Example Ver Var bit swaps</name>
          <artwork><![CDATA[
MD5 hex and dash:      5df41881-3aed-0515-48a7-2f4a814cf09e
Ver and Var Overwrite: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                 5df41881-3aed-3515-88a7-2f4a814cf09e
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv4_example">
        <name>Example of a UUIDv4 Value</name>
        <t>This UUIDv4 example was created by generating 16 bytes
of random data resulting in the hexadecimal value of
919108F752D133205BACF847DB4148A8. This is then used to
fill out the fields as shown in <xref target="v4fields"/>.</t>
        <t>Finally to further illustrate the bit swapping for version and variant see <xref target="v4vervar"/>.</t>
        <figure anchor="v4fields">
          <name>UUIDv4 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
random_a  48   0x919108f752d1
ver        4   0x4
random_b  12   0x320
var        2   0b10
random_c  62   0b01, 0xbacf847db4148a8
-------------------------------------------
total     128
-------------------------------------------
final: 919108f7-52d1-4320-9bac-f847db4148a8
]]></artwork>
        </figure>
        <figure anchor="v4vervar">
          <name>UUIDv4 Example Ver/Var bit swaps</name>
          <artwork><![CDATA[
Random hex:            919108f752d133205bacf847db4148a8
Random hex and dash:   919108f7-52d1-3320-5bac-f847db4148a8
Ver and Var Overwrite: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                 919108f7-52d1-4320-9bac-f847db4148a8
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv5_example">
        <name>Example of a UUIDv5 Value</name>
        <t>The SHA-1 computation from is detailed in <xref target="v5sha1"/> using the DNS Namespace ID value and the Name "www.example.com".
while the field mapping and all values are illustrated in <xref target="v5fields"/>.
Finally to further illustrate the bit swapping for version and variant and the unused/discarded part of the SHA-1 value see <xref target="v5vervar"/>.</t>
        <figure anchor="v5sha1">
          <name>UUIDv5 Example SHA-1</name>
          <artwork><![CDATA[
Namespace (DNS):  6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:             www.example.com
----------------------------------------------------------
SHA-1:            2ed6657de927468b55e12665a8aea6a22dee3e35
]]></artwork>
        </figure>
        <figure anchor="v5fields">
          <name>UUIDv5 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field      bits value
-------------------------------------------
sha1_high  48   0x2ed6657de927
ver         4   0x5
sha1_mid   12   0x68b
var         2   0b10
sha1_low   62   0b01, 0x5e12665a8aea6a2
-------------------------------------------
total      128
-------------------------------------------
final: 2ed6657d-e927-568b-95e1-2665a8aea6a2
]]></artwork>
        </figure>
        <figure anchor="v5vervar">
          <name>UUIDv5 Example Ver/Var bit swaps and discarded SHA-1 segment</name>
          <artwork><![CDATA[
SHA-1 hex and dash:    2ed6657d-e927-468b-55e1-2665a8aea6a2-2dee3e35
Ver and Var Overwrite: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                 2ed6657d-e927-568b-95e1-2665a8aea6a2
Discarded:                                                 -2dee3e35
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv6_example">
        <name>Example of a UUIDv6 Value</name>
        <figure>
          <name>UUIDv6 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field       bits value
-------------------------------------------
time_high   32   0x1EC9414C
time_mid    16   0x232A
ver          4   0x6
time_high   12   0xB00
var          2   0b10
clock_seq   14   0b11, 0x3C8
node        48   0x9F6BDECED846
-------------------------------------------
total       128
-------------------------------------------
final: 1EC9414C-232A-6B00-B3C8-9E6BDECED846
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv7_example">
        <name>Example of a UUIDv7 Value</name>
        <t>This example UUIDv7 test vector utilizes a well-known Unix epoch timestamp with
millisecond precision to fill the first 48 bits.</t>
        <t>rand_a and rand_b are filled with random data.</t>
        <t>The timestamp is Tuesday, February 22, 2022 2:22:22.00 PM GMT-05:00 represented
as 0x17F22E279B0 or 1645557742000</t>
        <figure>
          <name>UUIDv7 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field       bits value
-------------------------------------------
unix_ts_ms  48   0x17F22E279B0
ver          4   0x7
rand_a      12   0xCC3
var          2   0b10
rand_b      62   0b01, 0x8C4DC0C0C07398F
-------------------------------------------
total       128
-------------------------------------------
final: 017F22E2-79B0-7CC3-98C4-DC0C0C07398F
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="ill_examples">
      <name>Illustrative Examples</name>
      <t>The following sections contain illustrative examples which serve to show how one may use UUIDv8 <xref target="uuidv8"/> for custom and/or experimental application based logic.
The examples below have not been through the same rigorous testing, prototyping, and feedback loop that other algorithms in this document have undergone.
The authors encouraged implementors to create your own UUIDv8 algorithm rather than use the items defined in this section.</t>
      <section anchor="uuidv8_example">
        <name>Example of a UUIDv8 Value (time-based)</name>
        <t>This example UUIDv8 test vector utilizes a well-known 64 bit Unix epoch timestamp with
10ns precision, truncated to the least-significant, right-most, bits
to fill the first 60 bits of custom_a and custom_b while setting the version bits between these two segments to the version value of 8.</t>
        <t>The variant bits are set and the final segment, custom_c, is filled with random data.</t>
        <t>Timestamp is Tuesday, February 22, 2022 2:22:22.000000 PM GMT-05:00 represented
as 0x2489E9AD2EE2E00 or 164555774200000000 (10ns-steps).</t>
        <figure>
          <name>UUIDv8 Example Time-based Illustrative Example</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
custom_a  48   0x2489E9AD2EE2
ver        4   0x8
custom_b  12   0xE00
var        2   0b10
custom_c  62   0b00, 0xEC932D5F69181C0
-------------------------------------------
total     128
-------------------------------------------
final: 2489E9AD-2EE2-8E00-8EC9-32D5F69181C0
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv8_example_name">
        <name>Example of a UUIDv8 Value (name-based)</name>
        <t>As per <xref target="uuidv5"/> name-based UUIDs that desire to use modern hashing algorithms <bcp14>MUST</bcp14> be created within the UUIDv8 space.
These <bcp14>MAY</bcp14> leverage newer hashing algorithms such as SHA-256 or SHA-512 defined by <xref target="FIPS180-4"/>, SHA-3 or SHAKE defined by <xref target="FIPS202"/>, or even algorithms that have not been defined yet.</t>
        <t>A SHA-256 version of <xref target="uuidv5_example"/> is detailed in <xref target="v8sha256"/> as an illustrative example detailing how this can be achieved.
The creation of the name-based UUIDv8 value in this section follows the same logic defined in <xref target="uuidv5"/> with the difference being SHA-256 in place of SHA-1.</t>
        <t>The field mapping and all values are illustrated in <xref target="v8fieldssha256"/>.
Finally to further illustrate the bit swapping for version and variant and the unused/discarded part of the SHA-256 value see <xref target="v8vervar"/>.
An important note for secure hashing algorithms that produce outputs of an arbitrary size, such as those found in SHAKE, the output hash <bcp14>MUST</bcp14> be 128 bits or larger.</t>
        <figure anchor="v8sha256">
          <name>UUIDv8 Example SHA256</name>
          <artwork><![CDATA[
Namespace (DNS):       6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:                  www.example.com
----------------------------------------------------------------
SHA-256:
5c146b143c524afd938a375d0df1fbf6fe12a66b645f72f6158759387e51f3c8
]]></artwork>
        </figure>
        <figure anchor="v8fieldssha256">
          <name>UUIDv8 Example Name-Based SHA-256 Illustrative Example</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
custom_a  48   0x5c146b143c52
ver        4   0x8
custom_b  12   0xafd
var        2   0b10
custom_c  62   0b00, 0x38a375d0df1fbf6
-------------------------------------------
total     128
-------------------------------------------
final: 5c146b14-3c52-8afd-938a-375d0df1fbf6
]]></artwork>
        </figure>
        <figure anchor="v8vervar">
          <name>UUIDv8 Example Ver/Var bit swaps and discarded SHA-256 segment</name>
          <artwork><![CDATA[
A: 5c146b14-3c52-4afd-938a-375d0df1fbf6-fe12a66b645f72f6158759387e51f3c8
B: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
C: 5c146b14-3c52-8afd-938a-375d0df1fbf6
D:                                     -fe12a66b645f72f6158759387e51f3c8
]]></artwork>
        </figure>
        <t>Examining <xref target="v8vervar"/>:</t>
        <ul spacing="compact">
          <li>
            <t>Line A details the full SHA-256 as a hexadecimal value with the dashes inserted.</t>
          </li>
          <li>
            <t>Line B details the version and variant hexadecimal positions which must be overwritten.</t>
          </li>
          <li>
            <t>Line C details the final value after the ver/var have been overwritten.</t>
          </li>
          <li>
            <t>Line D details the discarded, leftover values from the original SHA-256 computation.</t>
          </li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+y96XIbWZYm+J9mfAdv0qZFVgMgAIJrdlYWRUkRrAwtLVKZ
UTY9I3MADtIzADjK3cElFBrrd5hf82+eZR6ln2TOd5Z7rzscFBVLZlVnKdMY
JOB+l3PPPfvSbrc3N25Po/3NjXE2msez5DQa5/GkbKdJOWkvl+k4T27b+WQ0
6PX7w7Ro9+jRUVyeRkU53tzIhkU2TcqkOI2e4Yln9GU2L5J5scRHZb5M6KNi
OZylRZFm8/JhQTNcvLx6tbmxSE83NyIaJ09HNN6zh6R4hg/KbFT9a5wsyhv6
aJ8/KB5meTIpgkeKLC+Dj6LtKB6N0nEyL+Pp9CEaZXmejMp0fu0+j07bu5sb
ZVpOaTUf5ultkhf8LP3+r8skunhBD6WTlD6Odj58uHhBT8fDIYGCHqc/6a88
iU+js/dXmxt316eRAmpz44c7+YPgGZc0eL/bJ4DR88vyJstpw+1IoPzHhx+T
PHrfiV7Et2mBbSSzOJ2eRj88jPHJP43SYpR1RtkM32U5TXKOT6LLh6JMZoUf
6Xkej6NvOtG7JB5m44dgqCF9808L+biTZm6gD/PRNFuOMUQ6J7C960TfJfHo
Bg/ImOEnOtjiL9Ojf1redZLxMhiIQZeWD1E2if4cFzcE5TKbY8fzLJ/FJX3P
p3y+3z3hX+hE4/w6oQO/KctFcbq3t1gOi062SObXebZcdGjgvWw+TecJvtg7
OaT/nZx0T072CBU6i/FER5HD23px/vI0ep/MsjKJ3uXZiJaXJ9E5neaWPJgT
Nr2l0aNvMHx0fvYyulwkIzpdQmNCSV6aPFokeZoU6XyS6VKj6OLy+ZvTqNc+
Pjjp9dvdQa99IF/J8Z4tr5dFGfVOTgb4+PvDw6PTR8Z6u3fx8pzQ9OR4f9A+
Pu13u4Nn7turD+0r2smocxp936GBKvv8R/cYjciApZVfJaObeTbNrh9a0Zbb
fBHRE1F5k9grBNtcXqBDent5QZNcp3Tt5LMzxsy0THGJv0nm9mw8H9sAefg8
jdF0Y8a1G1PsYgQsI81tnGWRRHERnV2+6fSit8O/0K0MXqSLOltkc/qz2Aph
DCjh7/evzo97g96p/YLPXl28u+wdd9uDNbg1v50yes1p/Z3r7HYPvzBe4c29
NxeXVx381uFBVrDrMhkBm74lxI4uS9pPnCtQ3H3GH225DW8YQPGUzqigAZaE
kQQse69gePgja0Cjfrd3sBZ7sEy6mB+eR7xW2z0RmF+6dxpi9V5dfnvW3neL
p4mTfLYseYft53GRjAUq2NPL+zKhp4bTpP12STOU0avlfIQn7SD/ltCi3QkB
6vV+PgE6pv+tJ0BRr9M75YsEXB65+yP4A+p4meS36Sgpnk6Ter1wy0RgjkBU
U7v9SlbpKvT2+3In8It9drR/fGq/6GeD7vHhqf1inxHLPrVf9LOD/v7g1H7R
zw57BzIHfnGfnQxO7Rf97Kg7kPHwi7uz/cNT+8U+G5ycnNov9tnJ/tGp/cLE
9KDbfRIxPTgZtHtr6CiN8WU6Wjo0i/7n//i/5WSUzdJzZZKTTDNPGKP5gaub
JHqRQqjI8gc6yVucbnIH/KUnRySuFK1olo2TqaBxoadfpWq9E2UZT9slWMa6
XdIYX73LVX5RZRSZ0OfU0+cKG4hX2cY0WvgxmfhniyjORwWGw/gpYDm3e786
AUlxSQ1GPYHR8ZNgdHzcJxgRW+2vBdTxEwDlqQ7RqrMhtkzrvHwgefI+epMJ
EYzezpNoh1nZbvSflacl81E2hqCZL6f145bL+V1yT3d8Cg65hhpdp+XNcgjB
b6+8S0uCWJtgeEM3fm8UkxCdVDZwFl3ScHE0mqaQa3GS5/QUQT+P19PeKxm4
But+24hOA5RpPbOUljk5HMeDhKF4Oc/uJtP4h+Trd1LYq3t5Mk2InRR7ZXzt
P27TctaclJs1SgnLonlS3mX5D3bHGALXKsXQQSxNoI/my9kQ0klcRjfp9Y0N
VxD4koiWd0N6xCyJinS2oA+ul3EeE7omRedrwThod9fzpXMF43B/chjvj5iL
Pw2Ew2wJzviwx5uvwOaZDEHIME5GhAZ0FdMfk3Er+qGd5eMkJ2adjh1UCHcN
WOk8eplP4/n1s/WbfK7z1nZ51Ba++uguewejk/19RsTLG+LqdCJr8Z40EUKB
PJ61iRET86VR59e880Jfbafjoh2Tauqe7I0mB/FRLzmID0ZVwU1foZtJoijO
/MJeWr9T90j00q9g9Y7wtv94+aQbXCTXM5C3bO+HgrXCYI1/bF+S4gqxKfpm
mg2r+mexfpmXMmaNunTb3aMvY91k/+gw5udeTmMSu0ZPvL8L0iLz0cNeErxV
k5Rp3bRRouugbdGeoDUunuId3cvFcjolXMxIQiSOoGMVGPmG6QsUx4Zdq0oa
L6fQcWkZtTM5aHfX0y3b+nh81BsJDeaVPeX0rtrv/vxHuW+Ee7SPypbdBr+x
DT6y+qtsRju4o1dWz23wxcVPRuPDuM+C52U2f3jioRX0KP9YPS6iFGDl6ZDE
7nFAJP1Z0SVbpKAcwwejc88KT3wfQU+acHWPx1/c4/HgeHx4yLBQovWBbsw6
YlHOk/uyQ/dqSnT6Npm2Sb5ozyCz5Wm2LIzusQWr3T9JjkgQHA4mx1W6+Z28
fMoSnX872nqrZBO4vNVMHOVcL8p4mkXP4+THmBjvME+M7YabZ6w7f/v6+TdP
Ihp5OgL5gvWKrtTe+6sOwWhYWfl5ngh/K/y9w+AFSPr5NnPB15eX/+07gmX0
LivK6zy5/NfpIxt5L5NGVzLryiZ6X6b2z/pHByfH/S7D68N3T9nqcpqO9wpS
fSq7a7AvsNyUEXFe3EB+oi8c8fQWhEe2d0YcMSbYvCKqTmSndki9k6fw7HF3
dNQ7EtHnKZsjUWdaFntFje4/ow+iU7tqCZsveSNeEi4eQ7kzku1I2TjH6EYx
w40cfnEjpC4kJwNmA4tlcbN2LxMiAEMSzjrXWXY9TYYkEvPGQHP3uv093Ll+
j5DjLn4o2mXWht03T9pCTz4eHnduytm0snlctP7/Se9Ef6Z3SEMgXot3GuxI
60nMN7ycVS7AKPr9k65YsXdfO5ZVHvwkwv52mt5Cd3mXpaS+rFI+E2MfOY5k
Eh8eHTN1F6PY2h2Ms1HRITZ5nY1lH7N4voynJERPiFyR5rk3S2iN4z0dZ7xX
2aJ9Sot/jUFePI9e8wDrQa3PhduaxNMiibaj77//PhrdJCPmaOdPomwEg1Ey
naZZWe6N6vLQeUbfwEnQJv2RuBOJ33QlSHlclOkM8ixTNSidP2Yw7bPozlZ9
UjVJc2UFjmDQLLDLab2kBZDowyv4OUfV7x0M+0dMiy9evnx5dLDO8FiYHauT
JknCNiX8skdv7B32e93qwWAsZ/ribb6aZkzg24RXBIcz0rRv6GzT0SPqCEZZ
JQfrpcJL/ug0ojW1zRzx4f2bNwSpYhGP6Kvmvd3d3XXSeB7zrqCSXs8hkBZ7
y3zenru3a3927leIAd00HBpp50W2zEkf4amjHVrEbuSX8ciOz96c1Y4RSmy7
x3z+3QO9MX/sKi34Cd7H/t40HebQryAyrBIulmrFZFHAj5SJfkEE7P2r8/Ur
lDXU1rhP3KYNv1AUvU5HeVZkk3LNMkk5zuedmT0lt2jeXhZ7MFiCcxZ7d+l8
nN0VHxd5VmajbFrszYr2uHxY7MWHh8k4GfbaB/242x6MDwft+GR/2O5PDkbH
+/vjo/FJv7LL0TInCkhwGNF1g0DB7jnTghoJhC1tdY+kCMseLz+S8PPxEeFn
nNyCuRS1jWbT8Ty5K+FU2sPRdk/6x+1ud+8Pi9/3ukf9fq+y9j/fPETjjPCH
JouS+wVRkcILRXE0S++hdgzTa+JTY0JgJhxTEm2niX7yBx5kFM//5//4f4j4
lNFfYGhepKMf6H1i24mY80p8wCaDtPzDYzJV/EDEekysOqmjQL/dPWn3GU0v
nr/++Ob88rHLNpwxPICzdPp7cXq/d9Tp/aHMaGm/X4qQS/JEG0oUrbA9HxUV
0OCBj/QA0zFsYYcm3H3kXj1/vXqc+4qy78/evHj7ep0tPSEZOlsuRh0l+ySi
5zRjNlu9Ulvv+YvoDVtmPLeFtY7WCZ8COxGYIJ4tFlO1jq/xKqiaiAVEb0ej
dFrfAgzo7XY7itWkh7+vbtIiKiq293EyIeW/YIsle7KIID3qInaeLiESjVRN
iZojhx0dOibRh/hpFv1AmtUc3jHB2J1VccTPRzzgTOaixff6x4TTRJSmmfLC
tGBL63ycwATrTVmbGyKYzXExYlw0bJ0WI+tPZ7QqXdYdiROECul1OudFLOHw
oVvEXsWzBXHqLHqjljfCqcWSlRGxmcu1inEM8oYa1OlW39F2NzdesUUJsCaN
cuft5avd6EWgjfrxXs5v0zxj5hLtvDh/udsySM/hCvG0J/qzkMBoQfMC+LDa
NR4ufUCaHZ0msdmccA/Lgwen+hTfbd7rD6kIFxq/YJZsWnS0Qyfmj+3K9sku
HRxRaFLmuYiUTyEqsssceK2Drc5/Q1ppNExkm8RqFhk0BZwAnWeJXREpWAIu
negq/DNyARnm1ekY1s/S8RhC8+bGNpwaeTZeikfj0/bzePQDfF/z8ef/Ve9E
TnpyCr/EPIvURLq5UXFosO+iMMRJ2FkNX7cwkII4Csn3s4RmJ3S4jQvaPfB7
ZNhKd4dee+AP8rQgSGP3dHihYkdvTKB/5gR7aD2gbESQH8z1Ao3e4juK5egG
m1/FcmwoDuhhZI9ixtfZj+l0Gkd/TobEyOlxmpWpAiETTzWCub1F6DWCvZsY
ZaaXm7+dk/xtwmsEvW7dTYpLWuaiZB3OXiApndYQE8sEfYWFOYb8nswJajFt
iaYqUqi6siBiqjSDvBEONyQSNSHui+0AcgQodsPNk7Ijh5MGd+sGtIqWN0ug
MfDrNDAccXQKRP3AtsXDRRulq81BKnQ6WcSmfr425qGjU8cZyKEnRAWEiBGk
huk8oA2EuEX06ZNGInz+DDNLhqdp+MRQSJZFcobzQQVcTQ5xbt4rL/1/+oQo
EhpSwAKCWaFYPCtu9ufPhHLPMzgukhLEhFAmPKHCkxG6TiSkJ2OZFHi3xDVi
j6CYUxC3NVvQe3Q6tP43GUtdQsBD+lLcZMvpGCBGnBfiu5jHZEQKcgDa0TPn
x+dtCP0Qe5pg1DYhapnexkqCZu4PJkFwril1nMFskydxYZJAeESpju9vNRRF
C7eC552e0LvPC43HsxRxEAl7PGfRTjylJ5fXRO7vskiQilCJsHKa0J7i64T1
TzgsiaJDTTvu9mm6ccVc05LDB5zou3KXDuYMzikiOMtp2QpcL5sbTE1ZCCM5
UwAJNCxBWWjZ2YwpPb5nposdx9FtTKoaR1nRJVrmuLKFEByheYFvJ55eZ6wt
0jTFiJgqDcK4WCwXxEdod7QvOm84wejhaab3GRyGWVKvS7wCKvIclI6Qa5QJ
DySwjAgrIBhEM6ZrtJp5AqpJelMrKjI5jFLIIPCEYMh75K2AQJEkUsTCdwwT
PNGnyeNokt7TswVIyY7RcWL8dzcp0Tg+TaBCPCRwFTNav2Kuni+fA21LHc23
CiZ6b0o3jxCmLJLphOSb6ZQJFwGEsKlFxwKLL35l0N9IKBuviJ7EY3TIBQmn
eivoEsdDIaTiMSScc7CUMeDWxADEWOBUmumbclRT3volcfck4HpqiFeDBowg
hGItAegM3obkHvYTXETlqJsbVeVZkcIGGqZTXAJIgWZuhMv0TrAGpAzOmLiZ
FTJ23MmlkzUKcc385WQ66KUlejwhhYm2yqxslBWlXPbt6MMCgnhw6fH5a3Ac
pjRKrEY38fzaiZoskxJ8PZDqcukIdvBkTJO8piuZz6tskYfEfgU35GG5WmUK
SmGgF85JbHvGjs6AX9evXzROJ2xrg3qI+BAVAabJvYoCFt6gfLzFItx0ydYC
EnBBH0jpnKWlLMoQKfoheSBkmqTEHVkiaoXXTQaj2ybfMPsMIu6wSly1sj0G
p5iH90wuGQgqYlaxXrlKsnUG0XXMxHmRLZbT2KhmZWEdEwF4z05ypp3hOtLW
6CxCjxLdvaVc6NnqubBsLDKLyiJbIHwyGrjMVlSMiDgzOaIbINRj+OAvndLZ
CPrH5gYuc8sOMZkQMMoKzR9lbKxhW7t3l8yJocEaGMJRlCK6yi6sADQaO4RV
RASmmE6RaMVcJZEJYkOY7AlAlajzkj3OyX1sVYjXDdZ5G0+XsHCBpATwU+Rx
N1S2I3dKN4OLCppQCCOLo+ssA+fzpK/F+MY33akcvfaB0dL6XTIeTYAOZIwW
qXIjgkOSl2DEQl+Js6Q5+yzgNCIIECTZl3sKXNvc6HWiNyRH4vq6CITqOkxi
xae3g2jH8yqa5NMnGCxuB58/7wqCLmjTHiFJCk7uodyD3oK+sU2U8RMyoIkE
ROUEukYlMDTNC9LGjJK2DyQaTSEX0lkh4Fk3mLK9RlCcJlNlZulkCbhHk9yk
VbM+g8fRWbFVw9ZnGC90WQQCnOM8ueZDCi3XQF62L2Zz9YdHTlUonDggK6PN
7jxvI2JKqAH4Ot1dEoFJ91IkHBPbicVmzGeCFfS63fY8nmfK1r8hwp/htShZ
ZLR9U/T5XHrN59LDueBsScibLVgIW869/x7LAZVMR7RVAChPYIsDyYxHoyWY
EFsU2HTvBEWNz1ERjPGDB4OYraZ2Enh1I6y/QtgFdPeI+fNgNVGPEQ/YLFyE
b/4oaYlKIkpPyTHxw4SXAnSm1/Q82ODHoUDDhzJpDx/a+G8kskZKl9jW8o4o
bjx64G37YCSN+0yLAgiINxIhm7bv12fnJIyO2UhphpVIBEuiRSQ6qe5pVybq
MRK9VHUteD2pEp2YVQ5Sp3Bti2U+gYGH9sXImLglcizexMzroiLfJkQXgUXw
gfNFwHehrhUPQY348ip3IjSERD1jEgJ3FAgi4WveoltbCq2lb9xo44ToyJT0
9ehsPE6FV05JeDQhgnZ1y4aMSXSb5uWSVuRmYqEZvh/6KwdnjSpgDKxbKSv6
0P4JBZwBbGxnxnKHBSWaEmiWDl6fKbuG+I4e0p+32RTaGPHYMR9aNpkUTlsj
AIva6HRdiJk82INIEyRPVqSUuVxpJ0gzErJ5RiMm2TbADuLKUgvbTbi6cTpm
ogZmQoi2JG2XMKO8gxJYMgHiC8L+mnqsXKy5LVGk9A50Ec/wRXhw4i/Jf63I
600QTkV6B6928hGv7sWS98/nSiMlEgwFLiM3oyVGhztiwjUJwlH7EFbE3ti2
mF9XPqc7QiQ3V2mmwLJKke7poFS0ywiAM47Q1dAJcHmCDMfvMaPCbOOWd8er
DF0TBjWHIa7IR2qFu4GNYyrUh8UL3KPaoZGmcSvKZ7SIkTrS/S/RQ0IUjFfL
LiX6qoB5zBYNtkX6+03JIDLx09lm/nwDmZFILAgTv1+31bAGQauHOI8neoeh
GFtfH8sFMV3LB/O5Epdh3YlQKIPjlagS6SDX5U0L2hmdxwNRBRIUJLZVSThg
vGcBsS2BMTOMCElgLc9A9PnwE+ETIyILQhD5gT2fH9KC0qfeYoL6fDx1mtsM
/LUdTAZfTSX0kfkAPa+yyqdTNoLTB7/fYuo+Krc+671CEAtdKuIhZ50gdIS/
CyJ55REXDcpfu0ippi9f+S98eKW85sIk5esgbJG/57hD+crFAfIXYTyffP+u
48Ll/KRusR0XjibzWpiYjs1BXPxNEIylS6J3XagTP2KhTfL9+44PIpKxAyC6
qBX+RqJP5EsL6uAvvrdP33Z8ZAV/YxES8rULT5B1uDW87Hgv/+bG2ZzD2TSC
X+h+sUJOncVambYXfYjrER0Jb3fVKKa2Cfa5FGJlihel07P1I2FSOjVPwdf3
1TIHv2hVmYyaKWK+dazAElMH5bhBGGQwXmyCE7YFf6CXrRu0zQodODVumBaw
KsTzBPQqyemmxAV9TNo7bFLsGAguOgnMRGi8lVF2P01ingH+irlaLtYxrBck
ey4hWomwXdUMWEpS8TOY1IxLLBwVtKcfkmgL1/zjTfqRTu6jDrBluqFp/UMw
PQ2PGbOYwYbnueknTPbVHsKUlF0PRHtvU9bZt3QtmHFLlKRUKcnIuyf5of2W
6jNCivj3Ay8nYsQVeWMIg4mZywuDNnNFYlTTNglrJAzSAc0hl5kMlM+RL8eq
cDaE8Vr0NiJJRelCYhAOAFq77hjUJAOccKgcYJYTYutLFCkM7vA8cNCyrVaV
/WvmkXR4C1Ebi6q82nL2NWeshB1Nku1EfYIUJ1AUHBHUfhyWRaBO6LGK7ZbX
V4O7MUjMsQfzyT2tNeXvNYQZSu71fGVOtnyWAMktJwCp6JdOp0s2oCV8bmYN
UM2ToLFQrl/hzGoKv4KDUVNOPm2X/q/Paj17H4pt38Uk2AHGn7ZDce7jVD//
bC4skkxgIqHrsvX6w+XVVkv+G715y7+/f/nfPly8f/kCv19+e/bdd+6XDX3i
8tu3H7574X/zbxLJf/3yzQt5mT6NKh9tbL0++5ctOb+tt++uLt6+Oftua9Wb
ALFRrigLuiTDCLA2Kmrn8/N3/9//2xsQgfxPRCH7vd4JUUj547h3RGohXdxE
ja4ZXE3yJwTTjZgj19nXRHL3KF6kdL4FK4HFDbyLMI13Njb+4X8HZP6P0+i/
DkeL3uAf9QNsuPKhwazyIcNs9ZOVlwWIDR81TOOgWfm8Bunqes/+pfK3wT34
8L/+AWmNUbt3/Id/3FDUOuO89lRv0Kdt2MDmD7PCYZGXG+PKo2ywdnEBwbGe
qlgF08m8/P1WbwCBSnSL5nT7IIJXHrztffHR6E+mGLuX+k9/qe9e2n/6S/vu
pcHTXxq4lw6e/tKBe+nw6S8dupeOnv7SkXvp+OkvHYvo/OH9G32nIYyPBa/n
b17hibMli6qEKwg1WBbtN/Eyj16x/2Jz4/zy3fs33+C58/xhUVajvIUpvCuS
5ThrrwkYYlfC2TlGeJ2M0zg6YyNfdJ7BTjTlry+f89ck00SXRNaZAhMFep6y
hPji+etLfP/ClLrXpABdi2/4Um3v4v/DU5WM5ZdTYgM5Kz6cDM1/ZnMIYpZG
RPTmYi5WuIurDzJCmAl5lUzZN7ycm0JLIFUPyYsD2VZRgOK/SK/BeRg9iMbg
qzBH/czYqX7f7q19IuqJyWWmI49lZPj/DrvsdLMx+v3B+lGaxmDfHQ1EL1YH
Ojj8mQMdHFYGOuj1f95A9GJloP31w+zrM398+cgzkUoZ8+iPL8/Pz/7o5Rm+
HleMkufO/TD21yu6IlmDHTNCFVeqISh1PmeHGIkCRJlH9vtnkFfi+qQPpPN8
MmJSLWVbevuP6LRtliMAEATOWhmIh2i7Nxjg2xfKdUO3ME1HQhLBzsXjQv3f
7h328MZrKEajtHRZw/xUvJCnlgtw90ma04yctDeXnMPb/b3bA4xxhDFUAYq4
YAh75fxUBKxhioOkhw/54fSeQSfKPU2IP7QggVCx6OV9zHZbeoV3JSC0zHK+
pJoFj9Vd+Ix6AojqCQVe3meQkG60LKDkPOiywfaGsRhGHLn4UMgiDw6Co+g/
ehRXD4sM8wyO8R5v7vLl+YuL97QMzibf5hoX9U/7+LyPz9++u6w+fYBPL97U
H+7yxy8vv4m+gRuapCH68FCw4RZ26d5hG4oWRPQ3MLfYZgYneOhsPI6Ieu4D
WH8SDwPp90MG8MG+PqGG3FUvL3Z4wMf88n4B0NMBXXm1y84K9mlY9fLACEQv
ntiRC+HnJABeIjt2nhXRbAQbGlZPaHVGst58TE9vc5UCOnlWVB9IQI0NSbYk
ZEQtbCQFbuFO23f04sChdRWdCktbvML9+ZOK/vQCg/cS2gWm0pd40OoWCZ5H
AXL0HkWON+4ubMHlK2GaWwDTlguX24LLN3+44+CO7d4+Q1kvNk7/FOxabg+9
t5STURODV4mxh325/W8Yn/Kknev7z9k8SmQBjsFoK4afIeOAIedO4UoBozIp
C0Bvn9HqHE5UQu7ylJFcjybP7lPEtohy5Y+ZRhstpw5Z9hWLryq4vX8SgK77
KOjO3l/R/+1VoNyrJBkP4Q2hcbohXkhdF6VpsCkUrH6oX5ArIkCdECWSF9e3
G5F4xA0Mmcsff4ScTA/u+/V2Tx5d73cck6BXCOBEdSx/PpLSzxISx7IxDd3u
9feDI7PzZpLyn/Btv+Fb+hMSUai363WlF/i+vMxzzvw0LOZrI1gcYD0e54t5
MYOVRCLB2OAzYqeKGmzEi+XtJYBf/zgAy/GjYMGtL5VE9vbtEzFORYf9/kG0
EyNuYRffH+HHMZ/NC7dfUhsj0hrpcoqORY8Mao/gJBfsXwkvBJ3pbY8x5/YQ
bx3W3nrPnNeGTZ0lKBpgi92QbWxNSBQs29MsRjB2Dk3qlisdLSEAbvHh7veZ
/Ir/laWXd0AHwiNJ5sISArbSPXoEbnyKCABhK8W10vvyLol/YMTongjd5w0s
597ntLXPktGWO/0jh+L01nHAR7ckQItDxMSJvBW1/zHaCj7gWI1kEi+nNGCe
TMW9BLDyQXWV9yQ5MZ34XggC4ZpcnS7TMalKpXMWwe4Pv7D719i4MTpSBkrZ
N1+IK8ABixDzgtiGEIOTtJPZ4iYWMVHD/YJyVBiAUVAJotGPc4lGiKDm4BlG
L0d0RVzD94cdMOJueIgHX9jGuQZCOfjQMsPfxXOloUespnwHKEdv0qmzp/Iy
OtH2CZPUM4SAkiLBKEXcPLkvvdNV5WIxFYswt33CeP8aYWeq9+2ZL3rEMT9R
YOnVdIIDieGmxYAGEOBO+DTPUwgFl5yZw1lFcVFNvJFFOugMvgAdRWCEZMdq
4do+7rfox7GYgbZP+LzeoQ7V0sfbwqyWR0X5ME04zhCvhTIiG1/55kHIIFqm
4BpAAeBR+ChPutEOm6m3jw93jSMA4IQ1IWrBh30UOp/o4A46Rwojp4HTgL1g
V++JAZu4QwpDSSf6OiOGBM4b7dgB7oqh3H0DQy22eC6kBaDvG9WMZ8P0egnj
Pp+62pjFvIDwFwQKGD/fPj5xEpCcDTvUicGVgmc8rdL4MnPxGgqf7eODUKYn
OIoT3XJu2C0LTyVLAu/fiGHXG/1DA/v2sRyiGF7hm0G0C1M2flSnTkxA0+fp
MPAwdjrRZYjH4gEn61BYwpdRgMjbrzWCJrRorayiOqYp7BiBw5H2rjlJgWXS
20LckU5I5bEclj+mqnnxfCwyXY1zbx/17HS3YDu9ziWkjUvcBDKZV6BE2bpC
YCBCSBzV1SRLHAxBUwMDWTTSL7aPlGCbRAJLalUTLojKHJ5UBVfSnSsGQxdc
vS2aHO6M2PZlrIptcfvwILgRwBOJOUTiGC1o36HouZhNCPlrAGLVLshy2T48
di9xoZ83q2pfXR/cPhJtgJh54NRWwl7x6l28eHNxdRlNVNJkESC7m18jRCQy
QzJe8PZeib5Ygv9qlK7LNtk+OrB5O4rIbvYWS0VGvY6Oaw/WfHPbRyf+AZl7
j5cTj5HaKP6E7WM+YMcaQEYG2Jo40GaO+PhL3gvQ+DE1N6Cts/HBR445p8vF
pik3HEjCTdz7OEuJcIvO5ywRxM/2HN+D6UBvaKka6GFIbYwva0rAvG3EWMII
LMpaAkJw6IgUUyGrFoDJ8wXVMLdVGTYV83kr5H5zFV4OQqwdLyVAJRH5gBGY
r3LNebYtyr+n8SKGnyO1nnkRUs84YvCOrffbok+zoOMKDNaw/71zokXbfbEt
iAFudWOiwKp2zuQKwcwgdOJpVY+pl4hByCpi/WBflKqE+DhMPsBDFSPVOfYi
Q900s2498Al8C1Ps9mEvMESEayMIXJackuCwbhDaEZYL5OLcPCBM516FZydf
c/gXMToXQrNtBi4kWkSXItieAym80eCwHyD1Y+q53CiAiAXAywVKGtABJXxu
26qIEHnbegoI4oKzEbYClY95pB5sHVl6jIdvxRbxbgrdNUyeZETnE9gWTcQ4
/Efi8BKjiCeWbOIRuQCzbPeVnVzDzNnnB/fV2MYkVzRKpp7eOlepI3tFIvSU
/clZM8cSlZWkHmxfroSnqazLETS07iQ9zQf2fElqNT9bgQ49FeljQikhZjzA
thTQV0jMRnm3+0fBzdzyjv8tFQTi1EQbExCOBR23Rdd9VZUkINeZguvlPdL+
DqJtsTFAFz91YuOgQ9KpCXyv8GJLsEPmVHlji16WuyRR4yrk8/4rcbTfJvdw
BUCi2OflPc+h2TxP59Dl2Blj4aOSMnqXRaAd4NNiD+STZCFBGQyW4fVYwUD+
g3YkdkhgNA19h2DdymlogIQLeRgwidfXSVwWcyWomkSYVF6mF5F6GIqx22LJ
xHzfxcOEA8qirXX0cSuCNMk+I5ZHc9jLOHmEJcttM3XyyXMGl3+ed72FoGbL
U5PYkTS8pTd0S+lkBnytTbM0y9RBSDQeN0y9TvJrb4Bj1Uve0wrdbeI/C0hg
baL0ktMvF4T0oc5s7FnpaSCxaN1XvRSHZvhseq7fG9hzx2pabn4OF0uekxKw
Tc+hvi4XIuYh3V8DPiv1PPn3iBRA2zcbfa8qbBKJMmTjA3kBqETdysxXeTpD
fP0YPnucihIFvRGaUeSfRz0CoqvDIi1FUuMCBRHCJW5jiU1jlIzL+DR6Ho+r
QiBXzj3oRv/9p2j/kKC2PQgfV4Hm9YsDm4GzB0QNQaEGfm9wdEg8Jdo5QzjR
KxbXbADQVS7JIOEhHyEaYecfYdvd2cXrvf0Dujn93XBeM6aOQMEll7TEs4eH
h/Cm9MJnMcXzsxfRWyjb4tHnR2E42z4Jn7yYa4H86F2MgNAbFN9RBuHJ1z4v
6pgo7kH4cnNZLhD0d+6SYSl4edA/JnJVX+Sg06PBKyRB86Z5TWyVwNsnB7Ad
rbxepSVefRPSdoxXBydHtOejyps1ar6fj/empqQR5TQ/Bwc/L5IRhjk4OOyS
5FtfgGOuFocGhOR4rBnRjXYR+JpZJTR9TBYG+2K3gopVC5NF63PugSQ0ILjF
bVtsFezhrMzDMNs/GGB8sQXLnTqgGTr9jnNKcMal2vv+BJ8Ks4otAqRE66iU
rUZNNwbzVbcVevB9Mk0DNeaw03NGZf+WQX2MPgZLzq0NknatvLBEyT8ii3dY
z4QhtiL3y8x0Cwlr5PRjDVuEGSbO926tIIWGR7thnrMFZJxynG01pLkS5+Xi
/AY//9X9n//qgXuVXXJEfdZJ/+5StEKm4F4V7eupL58MJEaNT+GVmFw+bQtn
cjFCoT0G9RcO1QARpPCyoZwO+ncVSwvjKtO0+V+0aLy3SqootrnBT1ViwvA1
SkD6KMxxInFzsOwhOtJlTnUiiZAfi03eksedPUJSCgTydd2mKOMctQmirqT0
zjnDq9c/0lhRQbQnvCFhoBey8HhYmO8suYeSSLOG6QwolRrwtcgKO9US/D2t
xCVCBjZnsIlciooVCL7XmFctDVGUSDoOwl9AV8RBv+OqbawSnV3JVo5vfeY9
bNBe3JRjHyMzePgQxNizrUgVSTq1oPaSvEXjfpvdJZoRoQUTtO7HKL5NYs2t
dDUwnhVcH4bt8hY0gdTfabRz/vb1rlYKcbn7VSMzk85CdvGNViIA9hpmWHB4
iqSzoGoVArLZ/1tYiQMiYIvEPbwa0ikwen32LxJ+rKcpgaAKNuSPROxuK5Nr
QvQOMjkSRKpzjokvM4GcocJp1WE6DGzdD9E1Z/wySkt1Brov1UmHIshu3ST3
bZSHGsfFzZZW9rLjU2uGJr2bHWBzg3sisElxuYCfjO2cd0k+4tyc6YJkIU2k
pdHjMQFiBt+JpYUWztrLy+BUYQI4LSAp9m4eFrRjt3MOJhS52CX6Lrg6uBAl
4NynT/bdx6pmrMmBErAIG2RoSbZsdV/QrCY64nwXZuFVcPm4xx0Im7sSoA+R
WOf6v+gf3eX5RM6ba+r9PhoQHN4yWdhqb1mpPf7X/1W/ObRvNjfcM7+Pvn35
/YuLb/Q/mxv04+JK1vW/3e9329AW9RF8Jl/vRVtnW/j5nH+e888X/PMl/3y1
JZvFpt9kZeLKPAgCDFGXMDxylM+QKCJBGuBKi/90qNPiIhJsRNFvJULawbjl
NcjOPgP8bO5ckgxuyaTkC4jLgUzB2qG6PHVJ4GCVIbXAX07rK3i8S0YJyeRx
J7u5MTnujQeTOGkfEVq3e71xtx0fHR6Qnhd3Rye95HA4ObRnSevbrg8m5urf
PzNhS74Jmc8zx0A5HMUbBJpWJvmt/lYjMlpIyY49Ln/L47stjjJETI37Xj/Q
B6QaDAguDOzuIfrDHqinhEuxmwBEPfzr8j/8gv915bMef2B/yA95zj3b7f73
zQ33Dn8vH+tz+jx/bK/xszK4vrN6Ah4K9RNQeOErAb28ut8/Oe52j/YPDk+O
D44PD/sn/ZMD0vtOjo4Per2D7mHvqH8Cs159pgCe9akM9vzdjqCc5A0qiRRn
zW64jmU+P4VeePrzME8Prr4SHK7fsdQlghlc6k6xAH2ntXjlvFUlUBz9nbhL
nJcNr0qSLBAjoRtN+PBOyPQ8IA5p4cywuLg38bJgpwqibKxMHYfXOLrLWRo+
2Rj9RKzUzRessZeZ3Z5aRkgrKI0l2azLuWb0SmVOulZYC7F7kzBQ8uAuJVqV
SS8jVylFGH/INFuRL+0hLK0FoWtqBbWCapoFay2utpPuuagIzqEYaammZsbj
BRAgSZ/nkUAzpsk1Es8/fdIKkiAR1SQXTSMG2mk2azifr/gkw5vW273nQpmf
PrH6Zxd+e9s9wAZMUgJUiP/IAp4jZSbam31UxXIJu1PHccCQuWINy48tyYJ3
qSAuqBScQxDV1AXHzcfJgpPuMvmsSErJ7dUJwucr65IKTUCOFvKUpFoRu5Z9
jQKWo2DVgNzGWavy7u+iO0gkXA+Dg8S0hkaEnUqFBgMta8Rak6cKF5W3ClHB
+TschEvmk/Jxzbq9+Xej4wog+ZK4Q+OLVjgFgT19+nRlJSgHkuRarm4q5oet
e6j/Y/ZeAXm2SLJ/VrZHdPe3JPaSJ/spel0MuxH/pyf/6ct/9uk/hi0/vQhM
5L/Cv58wMf3DxPTvnv5zz5/bf3rtI3nwvZpiWhHdjgiOWTZeVw5HS9HhGtNW
XfiME0fm6XTJqa8dN3EvcvNXJz5un7TO2s+jn8LjrhQSqNVu/Mod68T4T7cy
8Xn7RX3HvmrgudaP5GzDRhisXUjDxL3KxC/br6oTM+GaLLn6TyCAV4Ds/LkO
yLP43oDsJgZfE1w2hiZRM1rkRLjZha+PwDtpsYo0F6VUi0pYWRTLJCSNRWM7
ubSeSDimfIJf+XoRnEKrnyL/c/pg9QXnksLLhWIsNVKUZNMFYQz1lbPqZ9+S
m3w4YNAcHlRUlB3+TgwIveC274rhbch0DisRp0uXs9lCNMszxH7XafiZVa1G
vQ3QVFg7MIBQpKnGbMW3WSqJ0MqAJGUZa3KMIPRkgRHI344RXHnjjVG01NHh
FZo2qFE1Em0EAoNjxPxwlYmDXgih3ZDW9R2tYz4xCU1HFtqTKqe1S9kDj3vk
Zj6Buun2fop+XfJWo26N/9HfPsxZY/6V/j06cc9NjN9wvL5wUD2L+msJXvPE
vfqOAfsKlUGZSWfE1PPWK58QynH4yru3lxffa9XJr5vY73hfdzz30dCG2+u3
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
UIKmAQA=

-->

</rfc>
