Clinical Practice Guidelines Example Implementation Guide - Anthrax Post-Exposure Prophylaxis
1.1.0 - ci-build International flag

Clinical Practice Guidelines Example Implementation Guide - Anthrax Post-Exposure Prophylaxis, published by HL7 International - Clinical Decision Support WG. This guide is not an authorized publication; it is the continuous build for version 1.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/cqframework/cpg-example-anthrax/ and changes regularly. See the Directory of published versions

: CDC Common Logic for FHIRv400 - XML Representation

Draft as of 2024-08-23

Raw xml | Download



<Library xmlns="http://hl7.org/fhir">
  <id value="cdc-common-logic-library"/>
  <text>
    <status value="generated"/>
    <div xmlns="http://www.w3.org/1999/xhtml"><p class="res-header-id"><b>Generated Narrative: Library cdc-common-logic-library</b></p><a name="cdc-common-logic-library"> </a><a name="hccdc-common-logic-library"> </a><a name="cdc-common-logic-library-en-US"> </a><h2>Participants</h2><table class="grid"><tr><td>Author</td><td>Alliance to Modernize Healthcare FFRDC</td></tr><tr><td>Endorser</td><td>Centers for Disease Control and Prevention</td></tr></table><h2>Contents</h2><p><code>text/cql</code></p><pre><code class="language-sql">/*  Library: CDC Common Logic for FHIRv400
    Author: CMS Alliance to Modernize Healthcare, operated by THE MITRE Corporation.

    (C) 2019 The MITRE Corporation. All Rights Reserved. Approved for Public Release: 19-2048. Distribution Unlimited.
*/
library CDC_Common_Logic_FHIRv400 version '1.0.0'

using FHIR version '4.0.0'

// Include the FHIRHelpers library for simplifying interacton w/ the FHIR data model
include FHIRHelpers version '4.0.0' called FHIRHelpers

/**
 * Converts a codeable concept to text.
 * @param c - a FHIR codeable concept
 * @returns {System.String} a CQL String of text
 */
define function ConceptText(c FHIR.CodeableConcept):
  Coalesce(c.text.value, Coalesce((c.coding) c2 return c2.display.value))

/**
  * Converts a FHIR Date to text.
  * @param d - a FHIR Date
  * @returns {System.String} a CQL String of text
 */
define function DateText(d FHIR.date):
  ToString(d.value)

/**
  * Converts a FHIR DateTime to text.
  * @param d - a FHIR DateTime
  * @returns {System.String} a CQL String of text
 */
define function DateTimeText(d FHIR.dateTime):
  ToString(d.value)

/**
  * Converts a CQL Code to a Tuple containing the system, code, and display fields.
  * @param d - a CQL code
  * @returns {Tuple} a Tuple
 */
define function FormatCode(c System.Code):
  {
    system: c.system,
    code: c.code,
    display: c.display
  }

/**
  * Forms a local refernce using a type and an id string
  * @param type - A String specifying the resource type of the reference
  * @param id - A String specifying the resource id of the reference
  * @returns {System.String} a string of text containing the local reference
 */
define function GenerateLocalReference(type System.String, id System.String):
  Combine({type, '/', id})

/**
  * Removes null entries from a list of strings
  * @param list - A list of strings
  * @returns {List&lt;System.String&gt;} the input list with the null entries removed
 */
define function CullNullStrings(list List&lt;System.String&gt;):
  list L where L is not null

/**
  * Finds the first non-null meaningful date that can be associated with this Condition.  This will look through the
  * following fields in the following order: onsetDateTime.value, onsetPeriod.start, assertedDate.
  * @param Cond - a Condition
  * @returns {System.DateTime} the first non-null meaningful date, or null if non is found
 */
define function FindConditionDate(Cond Condition):
  Coalesce(Cond.onset.value, Cond.onset.start.value, Cond.recordedDate.value)

/**
  * Finds the most recent Condition in list by examining the following fields in
  * the following order: onsetDateTime.value, onsetPeriod.start, assertedDate.
  * @param CondList - a list of Conditions
  * @returns {Condition} the most recent Condition in the list
 */
define function MostRecentCondition(CondList List&lt;Condition&gt;):
  Last(CondList C sort by Coalesce(onset.value, onset.start.value, recordedDate.value))

/**
  * Finds the first non-null meaningful date that can be associated with this Procedure.
  * This will look through the following fields in the following order: performedDateTime.value,
  * performedPeriod.start.
  * @param Proc - a Procedure
  * @returns {System.DateTime} the first non-null meaningful date, or null if non is found
 */
define function FindProcedureDate(Proc Procedure):
  Coalesce(Proc.performed.value, Proc.performed.start.value)

/**
  * Finds the most recent Procedure in list by examining the following fields in
  * the following order: performedDateTime.value, performedPeriod.start.
  * @param CondList - a list of Procedures
  * @returns {Procedure} the most recent Procedure in the list
 */
define function MostRecentProcedure(ProcList List&lt;Procedure&gt;):
  Last(ProcList P sort by Coalesce(performed.value, performed.start.value))

/**
  * Finds the first non-null meaningful date that can be associated with this MedicationStatement.
  * This will look through the following fields in the following order: effectiveDateTime,
  * s.effectivePeriod.&quot;start&quot;.
  * @param Proc - a MedicationStatement
  * @returns {System.String} the first non-null meaningful date, or null if non is found
 */
define function MedicationStatementDate(s FHIR.MedicationStatement):
  Coalesce(DateTimeText(s.effective), DateTimeText(s.effective.&quot;start&quot;))
</code></pre><p><code>Content not shown - (</code><code>application/elm+xml</code>, size = 37Kb )</p></div>
  </text>
  <url
       value="http://hl7.org/fhir/uv/cpg/anthrax/Library/cdc-common-logic-library"/>
  <identifier>
    <use value="official"/>
    <value value="CDC_Common_Logic_FHIRv400"/>
  </identifier>
  <version value="1.1.0"/>
  <name value="CDC_Common_Logic_FHIRv400_Library"/>
  <title value="CDC Common Logic for FHIRv400"/>
  <status value="draft"/>
  <experimental value="true"/>
  <type>
    <coding>
      <system value="http://terminology.hl7.org/CodeSystem/library-type"/>
      <code value="logic-library"/>
    </coding>
  </type>
  <date value="2024-08-23T15:47:13+00:00"/>
  <publisher value="HL7 International - Clinical Decision Support WG"/>
  <contact>
    <name value="HL7 International - Clinical Decision Support WG"/>
    <telecom>
      <system value="url"/>
      <value value="http://www.hl7.org/Special/committees/dss/index.cfm"/>
    </telecom>
  </contact>
  <description
               value="A library containing common logic used by CDC CDS artifacts"/>
  <jurisdiction>
    <coding>
      <system value="http://unstats.un.org/unsd/methods/m49/m49.htm"/>
      <code value="001"/>
      <display value="World"/>
    </coding>
  </jurisdiction>
  <approvalDate value="2019-06-07"/>
  <topic>
    <text value="Anthrax"/>
  </topic>
  <topic>
    <text value="Emergency Medicine"/>
  </topic>
  <topic>
    <text value="Post-Exposure Prophylaxis"/>
  </topic>
  <author>
    <name value="Alliance to Modernize Healthcare FFRDC"/>
  </author>
  <endorser>
    <name value="Centers for Disease Control and Prevention"/>
  </endorser>
  <content>
    <contentType value="text/cql"/>
    <data
          value="LyogIExpYnJhcnk6IENEQyBDb21tb24gTG9naWMgZm9yIEZISVJ2NDAwCiAgICBBdXRob3I6IENNUyBBbGxpYW5jZSB0byBNb2Rlcm5pemUgSGVhbHRoY2FyZSwgb3BlcmF0ZWQgYnkgVEhFIE1JVFJFIENvcnBvcmF0aW9uLgoKICAgIChDKSAyMDE5IFRoZSBNSVRSRSBDb3Jwb3JhdGlvbi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gQXBwcm92ZWQgZm9yIFB1YmxpYyBSZWxlYXNlOiAxOS0yMDQ4LiBEaXN0cmlidXRpb24gVW5saW1pdGVkLgoqLwpsaWJyYXJ5IENEQ19Db21tb25fTG9naWNfRkhJUnY0MDAgdmVyc2lvbiAnMS4wLjAnCgp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4wJwoKLy8gSW5jbHVkZSB0aGUgRkhJUkhlbHBlcnMgbGlicmFyeSBmb3Igc2ltcGxpZnlpbmcgaW50ZXJhY3RvbiB3LyB0aGUgRkhJUiBkYXRhIG1vZGVsCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjAnIGNhbGxlZCBGSElSSGVscGVycwoKLyoqCiAqIENvbnZlcnRzIGEgY29kZWFibGUgY29uY2VwdCB0byB0ZXh0LgogKiBAcGFyYW0gYyAtIGEgRkhJUiBjb2RlYWJsZSBjb25jZXB0CiAqIEByZXR1cm5zIHtTeXN0ZW0uU3RyaW5nfSBhIENRTCBTdHJpbmcgb2YgdGV4dAogKi8KZGVmaW5lIGZ1bmN0aW9uIENvbmNlcHRUZXh0KGMgRkhJUi5Db2RlYWJsZUNvbmNlcHQpOgogIENvYWxlc2NlKGMudGV4dC52YWx1ZSwgQ29hbGVzY2UoKGMuY29kaW5nKSBjMiByZXR1cm4gYzIuZGlzcGxheS52YWx1ZSkpCgovKioKICAqIENvbnZlcnRzIGEgRkhJUiBEYXRlIHRvIHRleHQuCiAgKiBAcGFyYW0gZCAtIGEgRkhJUiBEYXRlCiAgKiBAcmV0dXJucyB7U3lzdGVtLlN0cmluZ30gYSBDUUwgU3RyaW5nIG9mIHRleHQKICovCmRlZmluZSBmdW5jdGlvbiBEYXRlVGV4dChkIEZISVIuZGF0ZSk6CiAgVG9TdHJpbmcoZC52YWx1ZSkKCi8qKgogICogQ29udmVydHMgYSBGSElSIERhdGVUaW1lIHRvIHRleHQuCiAgKiBAcGFyYW0gZCAtIGEgRkhJUiBEYXRlVGltZQogICogQHJldHVybnMge1N5c3RlbS5TdHJpbmd9IGEgQ1FMIFN0cmluZyBvZiB0ZXh0CiAqLwpkZWZpbmUgZnVuY3Rpb24gRGF0ZVRpbWVUZXh0KGQgRkhJUi5kYXRlVGltZSk6CiAgVG9TdHJpbmcoZC52YWx1ZSkKCi8qKgogICogQ29udmVydHMgYSBDUUwgQ29kZSB0byBhIFR1cGxlIGNvbnRhaW5pbmcgdGhlIHN5c3RlbSwgY29kZSwgYW5kIGRpc3BsYXkgZmllbGRzLgogICogQHBhcmFtIGQgLSBhIENRTCBjb2RlCiAgKiBAcmV0dXJucyB7VHVwbGV9IGEgVHVwbGUKICovCmRlZmluZSBmdW5jdGlvbiBGb3JtYXRDb2RlKGMgU3lzdGVtLkNvZGUpOgogIHsKICAgIHN5c3RlbTogYy5zeXN0ZW0sCiAgICBjb2RlOiBjLmNvZGUsCiAgICBkaXNwbGF5OiBjLmRpc3BsYXkKICB9CgovKioKICAqIEZvcm1zIGEgbG9jYWwgcmVmZXJuY2UgdXNpbmcgYSB0eXBlIGFuZCBhbiBpZCBzdHJpbmcKICAqIEBwYXJhbSB0eXBlIC0gQSBTdHJpbmcgc3BlY2lmeWluZyB0aGUgcmVzb3VyY2UgdHlwZSBvZiB0aGUgcmVmZXJlbmNlCiAgKiBAcGFyYW0gaWQgLSBBIFN0cmluZyBzcGVjaWZ5aW5nIHRoZSByZXNvdXJjZSBpZCBvZiB0aGUgcmVmZXJlbmNlCiAgKiBAcmV0dXJucyB7U3lzdGVtLlN0cmluZ30gYSBzdHJpbmcgb2YgdGV4dCBjb250YWluaW5nIHRoZSBsb2NhbCByZWZlcmVuY2UKICovCmRlZmluZSBmdW5jdGlvbiBHZW5lcmF0ZUxvY2FsUmVmZXJlbmNlKHR5cGUgU3lzdGVtLlN0cmluZywgaWQgU3lzdGVtLlN0cmluZyk6CiAgQ29tYmluZSh7dHlwZSwgJy8nLCBpZH0pCgovKioKICAqIFJlbW92ZXMgbnVsbCBlbnRyaWVzIGZyb20gYSBsaXN0IG9mIHN0cmluZ3MKICAqIEBwYXJhbSBsaXN0IC0gQSBsaXN0IG9mIHN0cmluZ3MKICAqIEByZXR1cm5zIHtMaXN0PFN5c3RlbS5TdHJpbmc+fSB0aGUgaW5wdXQgbGlzdCB3aXRoIHRoZSBudWxsIGVudHJpZXMgcmVtb3ZlZAogKi8KZGVmaW5lIGZ1bmN0aW9uIEN1bGxOdWxsU3RyaW5ncyhsaXN0IExpc3Q8U3lzdGVtLlN0cmluZz4pOgogIGxpc3QgTCB3aGVyZSBMIGlzIG5vdCBudWxsCgovKioKICAqIEZpbmRzIHRoZSBmaXJzdCBub24tbnVsbCBtZWFuaW5nZnVsIGRhdGUgdGhhdCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgQ29uZGl0aW9uLiAgVGhpcyB3aWxsIGxvb2sgdGhyb3VnaCB0aGUKICAqIGZvbGxvd2luZyBmaWVsZHMgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjogb25zZXREYXRlVGltZS52YWx1ZSwgb25zZXRQZXJpb2Quc3RhcnQsIGFzc2VydGVkRGF0ZS4KICAqIEBwYXJhbSBDb25kIC0gYSBDb25kaXRpb24KICAqIEByZXR1cm5zIHtTeXN0ZW0uRGF0ZVRpbWV9IHRoZSBmaXJzdCBub24tbnVsbCBtZWFuaW5nZnVsIGRhdGUsIG9yIG51bGwgaWYgbm9uIGlzIGZvdW5kCiAqLwpkZWZpbmUgZnVuY3Rpb24gRmluZENvbmRpdGlvbkRhdGUoQ29uZCBDb25kaXRpb24pOgogIENvYWxlc2NlKENvbmQub25zZXQudmFsdWUsIENvbmQub25zZXQuc3RhcnQudmFsdWUsIENvbmQucmVjb3JkZWREYXRlLnZhbHVlKQoKLyoqCiAgKiBGaW5kcyB0aGUgbW9zdCByZWNlbnQgQ29uZGl0aW9uIGluIGxpc3QgYnkgZXhhbWluaW5nIHRoZSBmb2xsb3dpbmcgZmllbGRzIGluCiAgKiB0aGUgZm9sbG93aW5nIG9yZGVyOiBvbnNldERhdGVUaW1lLnZhbHVlLCBvbnNldFBlcmlvZC5zdGFydCwgYXNzZXJ0ZWREYXRlLgogICogQHBhcmFtIENvbmRMaXN0IC0gYSBsaXN0IG9mIENvbmRpdGlvbnMKICAqIEByZXR1cm5zIHtDb25kaXRpb259IHRoZSBtb3N0IHJlY2VudCBDb25kaXRpb24gaW4gdGhlIGxpc3QKICovCmRlZmluZSBmdW5jdGlvbiBNb3N0UmVjZW50Q29uZGl0aW9uKENvbmRMaXN0IExpc3Q8Q29uZGl0aW9uPik6CiAgTGFzdChDb25kTGlzdCBDIHNvcnQgYnkgQ29hbGVzY2Uob25zZXQudmFsdWUsIG9uc2V0LnN0YXJ0LnZhbHVlLCByZWNvcmRlZERhdGUudmFsdWUpKQoKLyoqCiAgKiBGaW5kcyB0aGUgZmlyc3Qgbm9uLW51bGwgbWVhbmluZ2Z1bCBkYXRlIHRoYXQgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFByb2NlZHVyZS4KICAqIFRoaXMgd2lsbCBsb29rIHRocm91Z2ggdGhlIGZvbGxvd2luZyBmaWVsZHMgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjogcGVyZm9ybWVkRGF0ZVRpbWUudmFsdWUsCiAgKiBwZXJmb3JtZWRQZXJpb2Quc3RhcnQuCiAgKiBAcGFyYW0gUHJvYyAtIGEgUHJvY2VkdXJlCiAgKiBAcmV0dXJucyB7U3lzdGVtLkRhdGVUaW1lfSB0aGUgZmlyc3Qgbm9uLW51bGwgbWVhbmluZ2Z1bCBkYXRlLCBvciBudWxsIGlmIG5vbiBpcyBmb3VuZAogKi8KZGVmaW5lIGZ1bmN0aW9uIEZpbmRQcm9jZWR1cmVEYXRlKFByb2MgUHJvY2VkdXJlKToKICBDb2FsZXNjZShQcm9jLnBlcmZvcm1lZC52YWx1ZSwgUHJvYy5wZXJmb3JtZWQuc3RhcnQudmFsdWUpCgovKioKICAqIEZpbmRzIHRoZSBtb3N0IHJlY2VudCBQcm9jZWR1cmUgaW4gbGlzdCBieSBleGFtaW5pbmcgdGhlIGZvbGxvd2luZyBmaWVsZHMgaW4KICAqIHRoZSBmb2xsb3dpbmcgb3JkZXI6IHBlcmZvcm1lZERhdGVUaW1lLnZhbHVlLCBwZXJmb3JtZWRQZXJpb2Quc3RhcnQuCiAgKiBAcGFyYW0gQ29uZExpc3QgLSBhIGxpc3Qgb2YgUHJvY2VkdXJlcwogICogQHJldHVybnMge1Byb2NlZHVyZX0gdGhlIG1vc3QgcmVjZW50IFByb2NlZHVyZSBpbiB0aGUgbGlzdAogKi8KZGVmaW5lIGZ1bmN0aW9uIE1vc3RSZWNlbnRQcm9jZWR1cmUoUHJvY0xpc3QgTGlzdDxQcm9jZWR1cmU+KToKICBMYXN0KFByb2NMaXN0IFAgc29ydCBieSBDb2FsZXNjZShwZXJmb3JtZWQudmFsdWUsIHBlcmZvcm1lZC5zdGFydC52YWx1ZSkpCgovKioKICAqIEZpbmRzIHRoZSBmaXJzdCBub24tbnVsbCBtZWFuaW5nZnVsIGRhdGUgdGhhdCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgTWVkaWNhdGlvblN0YXRlbWVudC4KICAqIFRoaXMgd2lsbCBsb29rIHRocm91Z2ggdGhlIGZvbGxvd2luZyBmaWVsZHMgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjogZWZmZWN0aXZlRGF0ZVRpbWUsCiAgKiBzLmVmZmVjdGl2ZVBlcmlvZC4ic3RhcnQiLgogICogQHBhcmFtIFByb2MgLSBhIE1lZGljYXRpb25TdGF0ZW1lbnQKICAqIEByZXR1cm5zIHtTeXN0ZW0uU3RyaW5nfSB0aGUgZmlyc3Qgbm9uLW51bGwgbWVhbmluZ2Z1bCBkYXRlLCBvciBudWxsIGlmIG5vbiBpcyBmb3VuZAogKi8KZGVmaW5lIGZ1bmN0aW9uIE1lZGljYXRpb25TdGF0ZW1lbnREYXRlKHMgRkhJUi5NZWRpY2F0aW9uU3RhdGVtZW50KToKICBDb2FsZXNjZShEYXRlVGltZVRleHQocy5lZmZlY3RpdmUpLCBEYXRlVGltZVRleHQocy5lZmZlY3RpdmUuInN0YXJ0IikpCg=="/>
  </content>
  <content>
    <contentType value="application/elm+xml"/>
    <data
          value="PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGxpYnJhcnkgeG1sbnM9InVybjpobDctb3JnOmVsbTpyMSIgeG1sbnM6dD0idXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczpmaGlyPSJodHRwOi8vaGw3Lm9yZy9maGlyIiB4bWxuczpxZG00Mz0idXJuOmhlYWx0aGl0LWdvdjpxZG06djRfMyIgeG1sbnM6cWRtNTM9InVybjpoZWFsdGhpdC1nb3Y6cWRtOnY1XzMiIHhtbG5zOmE9InVybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMSI+CiAgIDxhbm5vdGF0aW9uIHRyYW5zbGF0b3JPcHRpb25zPSJFbmFibGVBbm5vdGF0aW9ucyxFbmFibGVMb2NhdG9ycyxEaXNhYmxlTGlzdERlbW90aW9uLERpc2FibGVMaXN0UHJvbW90aW9uIiBzaWduYXR1cmVMZXZlbD0iTm9uZSIgeHNpOnR5cGU9ImE6Q3FsVG9FbG1JbmZvIi8+CiAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICA8YTpzIHI9IjEyOSI+CiAgICAgICAgIDxhOnM+LyogIExpYnJhcnk6IENEQyBDb21tb24gTG9naWMgZm9yIEZISVJ2NDAwCiAgICBBdXRob3I6IENNUyBBbGxpYW5jZSB0byBNb2Rlcm5pemUgSGVhbHRoY2FyZSwgb3BlcmF0ZWQgYnkgVEhFIE1JVFJFIENvcnBvcmF0aW9uLgoKICAgIChDKSAyMDE5IFRoZSBNSVRSRSBDb3Jwb3JhdGlvbi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gQXBwcm92ZWQgZm9yIFB1YmxpYyBSZWxlYXNlOiAxOS0yMDQ4LiBEaXN0cmlidXRpb24gVW5saW1pdGVkLgoqLwpsaWJyYXJ5IENEQ19Db21tb25fTG9naWNfRkhJUnY0MDAgdmVyc2lvbiAnMS4wLjAnPC9hOnM+CiAgICAgIDwvYTpzPgogICA8L2Fubm90YXRpb24+CiAgIDxpZGVudGlmaWVyIGlkPSJDRENfQ29tbW9uX0xvZ2ljX0ZISVJ2NDAwIiBzeXN0ZW09Imh0dHA6Ly9obDcub3JnL2ZoaXIvdXYvY3BnL2FudGhyYXgiIHZlcnNpb249IjEuMC4wIi8+CiAgIDxzY2hlbWFJZGVudGlmaWVyIGlkPSJ1cm46aGw3LW9yZzplbG0iIHZlcnNpb249InIxIi8+CiAgIDx1c2luZ3M+CiAgICAgIDxkZWYgbG9jYWxJZGVudGlmaWVyPSJTeXN0ZW0iIHVyaT0idXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIi8+CiAgICAgIDxkZWYgbG9jYWxJZD0iMSIgbG9jYXRvcj0iODoxLTg6MjYiIGxvY2FsSWRlbnRpZmllcj0iRkhJUiIgdXJpPSJodHRwOi8vaGw3Lm9yZy9maGlyIiB2ZXJzaW9uPSI0LjAuMCI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjEiPgogICAgICAgICAgICAgICA8YTpzPnVzaW5nIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICA8YTpzPkZISVI8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+IHZlcnNpb24gJzQuMC4wJzwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICA8L2RlZj4KICAgPC91c2luZ3M+CiAgIDxpbmNsdWRlcz4KICAgICAgPGRlZiBsb2NhbElkPSIyIiBsb2NhdG9yPSIxMToxLTExOjU0IiBsb2NhbElkZW50aWZpZXI9IkZISVJIZWxwZXJzIiBwYXRoPSJodHRwOi8vaGw3Lm9yZy9maGlyL0ZISVJIZWxwZXJzIiB2ZXJzaW9uPSI0LjAuMCI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjIiPgogICAgICAgICAgICAgICA8YTpzPi8vIEluY2x1ZGUgdGhlIEZISVJIZWxwZXJzIGxpYnJhcnkgZm9yIHNpbXBsaWZ5aW5nIGludGVyYWN0b24gdy8gdGhlIEZISVIgZGF0YSBtb2RlbAppbmNsdWRlIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICA8YTpzPkZISVJIZWxwZXJzPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiB2ZXJzaW9uICc0LjAuMCcgY2FsbGVkIEZISVJIZWxwZXJzPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgIDwvZGVmPgogICA8L2luY2x1ZGVzPgogICA8c3RhdGVtZW50cz4KICAgICAgPGRlZiBsb2NhbElkPSIxNyIgbG9jYXRvcj0iMTg6MS0xOTo3MyIgbmFtZT0iQ29uY2VwdFRleHQiIGNvbnRleHQ9IlVuZmlsdGVyZWQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjE3Ij4KICAgICAgICAgICAgICAgPGE6cz4vKioKICogQ29udmVydHMgYSBjb2RlYWJsZSBjb25jZXB0IHRvIHRleHQuCiAqIEBwYXJhbSBjIC0gYSBGSElSIGNvZGVhYmxlIGNvbmNlcHQKICogQHJldHVybnMge1N5c3RlbS5TdHJpbmd9IGEgQ1FMIFN0cmluZyBvZiB0ZXh0CiAqLwpkZWZpbmUgZnVuY3Rpb24gQ29uY2VwdFRleHQoYyBGSElSLkNvZGVhYmxlQ29uY2VwdCk6CiAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnMgcj0iMTYiPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjE2Ij4KICAgICAgICAgICAgICAgICAgICAgPGE6cz5Db2FsZXNjZSg8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5jPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz50ZXh0PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzPiwgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPkNvYWxlc2NlKDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjE0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4oPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+YzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+Y29kaW5nPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4pPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiBjMjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+IDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjEzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5yZXR1cm4gPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjExIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+YzI8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjExIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5kaXNwbGF5PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPik8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+KTwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjE2IiBsb2NhdG9yPSIxOTozLTE5OjczIiB4c2k6dHlwZT0iQ29hbGVzY2UiPgogICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI2IiBsb2NhdG9yPSIxOToxMi0xOToyMyIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+CiAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNSIgbG9jYXRvcj0iMTk6MTItMTk6MTciIHBhdGg9InRleHQiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+CiAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNCIgbG9jYXRvcj0iMTk6MTIiIG5hbWU9ImMiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+CiAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjE1IiBsb2NhdG9yPSIxOToyNi0xOTo3MiIgeHNpOnR5cGU9IkNvYWxlc2NlIj4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMTQiIGxvY2F0b3I9IjE5OjM1LTE5OjcxIiB4c2k6dHlwZT0iUXVlcnkiPgogICAgICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjkiIGxvY2F0b3I9IjE5OjM1LTE5OjQ3IiBhbGlhcz0iYzIiPgogICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI4IiBsb2NhdG9yPSIxOTozNS0xOTo0NCIgcGF0aD0iY29kaW5nIiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjciIGxvY2F0b3I9IjE5OjM2IiBuYW1lPSJjIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPgogICAgICAgICAgICAgICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICAgICAgICA8cmV0dXJuIGxvY2FsSWQ9IjEzIiBsb2NhdG9yPSIxOTo0OS0xOTo3MSI+CiAgICAgICAgICAgICAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjEyIiBsb2NhdG9yPSIxOTo1Ni0xOTo3MSIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMTEiIGxvY2F0b3I9IjE5OjU2LTE5OjY1IiBwYXRoPSJkaXNwbGF5IiBzY29wZT0iYzIiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgICAgICAgICAgICAgIDwvcmV0dXJuPgogICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICAgICA8b3BlcmFuZCBuYW1lPSJjIj4KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjMiIGxvY2F0b3I9IjE4OjMxLTE4OjUwIiBuYW1lPSJmaGlyOkNvZGVhYmxlQ29uY2VwdCIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICA8L29wZXJhbmQ+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjIyIiBsb2NhdG9yPSIyNjoxLTI3OjE5IiBuYW1lPSJEYXRlVGV4dCIgY29udGV4dD0iVW5maWx0ZXJlZCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMjIiPgogICAgICAgICAgICAgICA8YTpzPi8qKgogICogQ29udmVydHMgYSBGSElSIERhdGUgdG8gdGV4dC4KICAqIEBwYXJhbSBkIC0gYSBGSElSIERhdGUKICAqIEByZXR1cm5zIHtTeXN0ZW0uU3RyaW5nfSBhIENRTCBTdHJpbmcgb2YgdGV4dAogKi8KZGVmaW5lIGZ1bmN0aW9uIERhdGVUZXh0KGQgRkhJUi5kYXRlKToKICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIyMSI+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjEiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPlRvU3RyaW5nKDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxOSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+ZDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4pPC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMjEiIGxvY2F0b3I9IjI3OjMtMjc6MTkiIHhzaTp0eXBlPSJUb1N0cmluZyI+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjIwIiBsb2NhdG9yPSIyNzoxMi0yNzoxOCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+CiAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMTkiIGxvY2F0b3I9IjI3OjEyIiBuYW1lPSJkIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgICAgPG9wZXJhbmQgbmFtZT0iZCI+CiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIxOCIgbG9jYXRvcj0iMjY6MjgtMjY6MzYiIG5hbWU9ImZoaXI6ZGF0ZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICA8L29wZXJhbmQ+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjI3IiBsb2NhdG9yPSIzNDoxLTM1OjE5IiBuYW1lPSJEYXRlVGltZVRleHQiIGNvbnRleHQ9IlVuZmlsdGVyZWQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjI3Ij4KICAgICAgICAgICAgICAgPGE6cz4vKioKICAqIENvbnZlcnRzIGEgRkhJUiBEYXRlVGltZSB0byB0ZXh0LgogICogQHBhcmFtIGQgLSBhIEZISVIgRGF0ZVRpbWUKICAqIEByZXR1cm5zIHtTeXN0ZW0uU3RyaW5nfSBhIENRTCBTdHJpbmcgb2YgdGV4dAogKi8KZGVmaW5lIGZ1bmN0aW9uIERhdGVUaW1lVGV4dChkIEZISVIuZGF0ZVRpbWUpOgogIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjI2Ij4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNiI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+VG9TdHJpbmcoPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5kPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzPik8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIyNiIgbG9jYXRvcj0iMzU6My0zNToxOSIgeHNpOnR5cGU9IlRvU3RyaW5nIj4KICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjUiIGxvY2F0b3I9IjM1OjEyLTM1OjE4IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4KICAgICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIyNCIgbG9jYXRvcj0iMzU6MTIiIG5hbWU9ImQiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+CiAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICAgICA8b3BlcmFuZCBuYW1lPSJkIj4KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjIzIiBsb2NhdG9yPSIzNDozMi0zNDo0NCIgbmFtZT0iZmhpcjpkYXRlVGltZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICA8L29wZXJhbmQ+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjM2IiBsb2NhdG9yPSI0MjoxLTQ3OjMiIG5hbWU9IkZvcm1hdENvZGUiIGNvbnRleHQ9IlVuZmlsdGVyZWQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjM2Ij4KICAgICAgICAgICAgICAgPGE6cz4vKioKICAqIENvbnZlcnRzIGEgQ1FMIENvZGUgdG8gYSBUdXBsZSBjb250YWluaW5nIHRoZSBzeXN0ZW0sIGNvZGUsIGFuZCBkaXNwbGF5IGZpZWxkcy4KICAqIEBwYXJhbSBkIC0gYSBDUUwgY29kZQogICogQHJldHVybnMge1R1cGxlfSBhIFR1cGxlCiAqLwpkZWZpbmUgZnVuY3Rpb24gRm9ybWF0Q29kZShjIFN5c3RlbS5Db2RlKToKICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIzNSI+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzUiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPnsKICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnN5c3RlbTogPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5jPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+c3lzdGVtPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LAogICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+Y29kZTogPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjMxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5jPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+Y29kZTwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzPiwKICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPmRpc3BsYXk6IDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjM0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+YzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPmRpc3BsYXk8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4KICB9PC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMzUiIGxvY2F0b3I9IjQzOjMtNDc6MyIgeHNpOnR5cGU9IlR1cGxlIj4KICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0ic3lzdGVtIj4KICAgICAgICAgICAgICAgPHZhbHVlIGxvY2FsSWQ9IjMwIiBsb2NhdG9yPSI0NDoxMy00NDoyMCIgcGF0aD0ic3lzdGVtIiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjI5IiBsb2NhdG9yPSI0NDoxMyIgbmFtZT0iYyIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4KICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgPC9lbGVtZW50PgogICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSJjb2RlIj4KICAgICAgICAgICAgICAgPHZhbHVlIGxvY2FsSWQ9IjMyIiBsb2NhdG9yPSI0NToxMS00NToxNiIgcGF0aD0iY29kZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4KICAgICAgICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIzMSIgbG9jYXRvcj0iNDU6MTEiIG5hbWU9ImMiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+CiAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgIDwvZWxlbWVudD4KICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0iZGlzcGxheSI+CiAgICAgICAgICAgICAgIDx2YWx1ZSBsb2NhbElkPSIzNCIgbG9jYXRvcj0iNDY6MTQtNDY6MjIiIHBhdGg9ImRpc3BsYXkiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+CiAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMzMiIGxvY2F0b3I9IjQ2OjE0IiBuYW1lPSJjIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPgogICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICA8L2VsZW1lbnQ+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgICAgPG9wZXJhbmQgbmFtZT0iYyI+CiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIyOCIgbG9jYXRvcj0iNDI6MzAtNDI6NDAiIG5hbWU9InQ6Q29kZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICA8L29wZXJhbmQ+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjQ0IiBsb2NhdG9yPSI1NToxLTU2OjI2IiBuYW1lPSJHZW5lcmF0ZUxvY2FsUmVmZXJlbmNlIiBjb250ZXh0PSJVbmZpbHRlcmVkIiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSI0NCI+CiAgICAgICAgICAgICAgIDxhOnM+LyoqCiAgKiBGb3JtcyBhIGxvY2FsIHJlZmVybmNlIHVzaW5nIGEgdHlwZSBhbmQgYW4gaWQgc3RyaW5nCiAgKiBAcGFyYW0gdHlwZSAtIEEgU3RyaW5nIHNwZWNpZnlpbmcgdGhlIHJlc291cmNlIHR5cGUgb2YgdGhlIHJlZmVyZW5jZQogICogQHBhcmFtIGlkIC0gQSBTdHJpbmcgc3BlY2lmeWluZyB0aGUgcmVzb3VyY2UgaWQgb2YgdGhlIHJlZmVyZW5jZQogICogQHJldHVybnMge1N5c3RlbS5TdHJpbmd9IGEgc3RyaW5nIG9mIHRleHQgY29udGFpbmluZyB0aGUgbG9jYWwgcmVmZXJlbmNlCiAqLwpkZWZpbmUgZnVuY3Rpb24gR2VuZXJhdGVMb2NhbFJlZmVyZW5jZSh0eXBlIFN5c3RlbS5TdHJpbmcsIGlkIFN5c3RlbS5TdHJpbmcpOgogIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjQzIj4KICAgICAgICAgICAgICAgICAgPGE6cyByPSI0MyI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+Q29tYmluZSg8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0MiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+ezwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjM5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz50eXBlPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiwgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPicvJzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4sIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5pZDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz59PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzPik8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI0MyIgbG9jYXRvcj0iNTY6My01NjoyNiIgeHNpOnR5cGU9IkNvbWJpbmUiPgogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjQyIiBsb2NhdG9yPSI1NjoxMS01NjoyNSIgeHNpOnR5cGU9Ikxpc3QiPgogICAgICAgICAgICAgICA8ZWxlbWVudCBsb2NhbElkPSIzOSIgbG9jYXRvcj0iNTY6MTItNTY6MTUiIG5hbWU9InR5cGUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+CiAgICAgICAgICAgICAgIDxlbGVtZW50IGxvY2FsSWQ9IjQwIiBsb2NhdG9yPSI1NjoxOC01NjoyMCIgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9Ii8iIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgIDxlbGVtZW50IGxvY2FsSWQ9IjQxIiBsb2NhdG9yPSI1NjoyMy01NjoyNCIgbmFtZT0iaWQiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+CiAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InR5cGUiPgogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMzciIGxvY2F0b3I9IjU1OjQ1LTU1OjU3IiBuYW1lPSJ0OlN0cmluZyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgIDxvcGVyYW5kIG5hbWU9ImlkIj4KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjM4IiBsb2NhdG9yPSI1NTo2My01NTo3NSIgbmFtZT0idDpTdHJpbmciIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgPC9vcGVyYW5kPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSI1MiIgbG9jYXRvcj0iNjM6MS02NDoyOCIgbmFtZT0iQ3VsbE51bGxTdHJpbmdzIiBjb250ZXh0PSJVbmZpbHRlcmVkIiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSI1MiI+CiAgICAgICAgICAgICAgIDxhOnM+LyoqCiAgKiBSZW1vdmVzIG51bGwgZW50cmllcyBmcm9tIGEgbGlzdCBvZiBzdHJpbmdzCiAgKiBAcGFyYW0gbGlzdCAtIEEgbGlzdCBvZiBzdHJpbmdzCiAgKiBAcmV0dXJucyB7TGlzdCZsdDtTeXN0ZW0uU3RyaW5nPn0gdGhlIGlucHV0IGxpc3Qgd2l0aCB0aGUgbnVsbCBlbnRyaWVzIHJlbW92ZWQKICovCmRlZmluZSBmdW5jdGlvbiBDdWxsTnVsbFN0cmluZ3MobGlzdCBMaXN0Jmx0O1N5c3RlbS5TdHJpbmc+KToKICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSI1MSI+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTEiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0NyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+bGlzdDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+IEw8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzPiA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1MCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+d2hlcmUgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5MPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiBpcyBub3QgbnVsbDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNTEiIGxvY2F0b3I9IjY0OjMtNjQ6MjgiIHhzaTp0eXBlPSJRdWVyeSI+CiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNDgiIGxvY2F0b3I9IjY0OjMtNjQ6OCIgYWxpYXM9IkwiPgogICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI0NyIgbG9jYXRvcj0iNjQ6My02NDo2IiBuYW1lPSJsaXN0IiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPgogICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgPHdoZXJlIGxvY2FsSWQ9IjUwIiBsb2NhdG9yPSI2NDoxMC02NDoyOCIgeHNpOnR5cGU9Ik5vdCI+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2F0b3I9IjY0OjE2LTY0OjI4IiB4c2k6dHlwZT0iSXNOdWxsIj4KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNDkiIGxvY2F0b3I9IjY0OjE2IiBuYW1lPSJMIiB4c2k6dHlwZT0iQWxpYXNSZWYiLz4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8L3doZXJlPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgICAgIDxvcGVyYW5kIG5hbWU9Imxpc3QiPgogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNDYiIGxvY2F0b3I9IjYzOjM4LTYzOjU2IiB4c2k6dHlwZT0iTGlzdFR5cGVTcGVjaWZpZXIiPgogICAgICAgICAgICAgICA8ZWxlbWVudFR5cGUgbG9jYWxJZD0iNDUiIGxvY2F0b3I9IjYzOjQzLTYzOjU1IiBuYW1lPSJ0OlN0cmluZyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICA8L29wZXJhbmRUeXBlU3BlY2lmaWVyPgogICAgICAgICA8L29wZXJhbmQ+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjY1IiBsb2NhdG9yPSI3MjoxLTczOjc3IiBuYW1lPSJGaW5kQ29uZGl0aW9uRGF0ZSIgY29udGV4dD0iVW5maWx0ZXJlZCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iNjUiPgogICAgICAgICAgICAgICA8YTpzPi8qKgogICogRmluZHMgdGhlIGZpcnN0IG5vbi1udWxsIG1lYW5pbmdmdWwgZGF0ZSB0aGF0IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBDb25kaXRpb24uICBUaGlzIHdpbGwgbG9vayB0aHJvdWdoIHRoZQogICogZm9sbG93aW5nIGZpZWxkcyBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOiBvbnNldERhdGVUaW1lLnZhbHVlLCBvbnNldFBlcmlvZC5zdGFydCwgYXNzZXJ0ZWREYXRlLgogICogQHBhcmFtIENvbmQgLSBhIENvbmRpdGlvbgogICogQHJldHVybnMge1N5c3RlbS5EYXRlVGltZX0gdGhlIGZpcnN0IG5vbi1udWxsIG1lYW5pbmdmdWwgZGF0ZSwgb3IgbnVsbCBpZiBub24gaXMgZm91bmQKICovCmRlZmluZSBmdW5jdGlvbiBGaW5kQ29uZGl0aW9uRGF0ZShDb25kIENvbmRpdGlvbik6CiAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnMgcj0iNjQiPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjY0Ij4KICAgICAgICAgICAgICAgICAgICAgPGE6cz5Db2FsZXNjZSg8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjU0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5Db25kPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+b25zZXQ8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzPiwgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjAiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjU5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1OCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPkNvbmQ8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjU4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5vbnNldDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjU5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5zdGFydDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjYwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LCA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2MyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjYxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5Db25kPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2MiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+cmVjb3JkZWREYXRlPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4pPC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNjQiIGxvY2F0b3I9IjczOjMtNzM6NzciIHhzaTp0eXBlPSJDb2FsZXNjZSI+CiAgICAgICAgICAgIDxvcGVyYW5kIGFzVHlwZT0idDpEYXRlVGltZSIgeHNpOnR5cGU9IkFzIj4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNTYiIGxvY2F0b3I9IjczOjEyLTczOjI3IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4KICAgICAgICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI1NSIgbG9jYXRvcj0iNzM6MTItNzM6MjEiIHBhdGg9Im9uc2V0IiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjU0IiBsb2NhdG9yPSI3MzoxMi03MzoxNSIgbmFtZT0iQ29uZCIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4KICAgICAgICAgICAgICAgICAgPC9zb3VyY2U+CiAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI2MCIgbG9jYXRvcj0iNzM6MzAtNzM6NTEiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjU5IiBsb2NhdG9yPSI3MzozMC03Mzo0NSIgcGF0aD0ic3RhcnQiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+CiAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNTgiIGxvY2F0b3I9IjczOjMwLTczOjM5IiBwYXRoPSJvbnNldCIgeHNpOnR5cGU9IlByb3BlcnR5Ij4KICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI1NyIgbG9jYXRvcj0iNzM6MzAtNzM6MzMiIG5hbWU9IkNvbmQiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+CiAgICAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI2MyIgbG9jYXRvcj0iNzM6NTQtNzM6NzYiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjYyIiBsb2NhdG9yPSI3Mzo1NC03Mzo3MCIgcGF0aD0icmVjb3JkZWREYXRlIiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjYxIiBsb2NhdG9yPSI3Mzo1NC03Mzo1NyIgbmFtZT0iQ29uZCIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4KICAgICAgICAgICAgICAgPC9zb3VyY2U+CiAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICAgICA8b3BlcmFuZCBuYW1lPSJDb25kIj4KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjUzIiBsb2NhdG9yPSI3Mjo0MC03Mjo0OCIgbmFtZT0iZmhpcjpDb25kaXRpb24iIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgPC9vcGVyYW5kPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSI4OSIgbG9jYXRvcj0iODE6MS04Mjo4NyIgbmFtZT0iTW9zdFJlY2VudENvbmRpdGlvbiIgY29udGV4dD0iVW5maWx0ZXJlZCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iODkiPgogICAgICAgICAgICAgICA8YTpzPi8qKgogICogRmluZHMgdGhlIG1vc3QgcmVjZW50IENvbmRpdGlvbiBpbiBsaXN0IGJ5IGV4YW1pbmluZyB0aGUgZm9sbG93aW5nIGZpZWxkcyBpbgogICogdGhlIGZvbGxvd2luZyBvcmRlcjogb25zZXREYXRlVGltZS52YWx1ZSwgb25zZXRQZXJpb2Quc3RhcnQsIGFzc2VydGVkRGF0ZS4KICAqIEBwYXJhbSBDb25kTGlzdCAtIGEgbGlzdCBvZiBDb25kaXRpb25zCiAgKiBAcmV0dXJucyB7Q29uZGl0aW9ufSB0aGUgbW9zdCByZWNlbnQgQ29uZGl0aW9uIGluIHRoZSBsaXN0CiAqLwpkZWZpbmUgZnVuY3Rpb24gTW9zdFJlY2VudENvbmRpdGlvbihDb25kTGlzdCBMaXN0Jmx0O0NvbmRpdGlvbj4pOgogIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9Ijg4Ij4KICAgICAgICAgICAgICAgICAgPGE6cyByPSI4OCI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+TGFzdCg8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4NyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjY4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5Db25kTGlzdDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+IEM8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4NiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+c29ydCBieSA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4NSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPkNvYWxlc2NlKDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijc4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3NyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+b25zZXQ8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijc4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LCA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4MSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijc5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5vbnNldDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnN0YXJ0PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4sIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjgzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4MiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+cmVjb3JkZWREYXRlPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4MyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPik8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+KTwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9Ijg4IiBsb2NhdG9yPSI4MjozLTgyOjg3IiB4c2k6dHlwZT0iTGFzdCI+CiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iODciIGxvY2F0b3I9IjgyOjgtODI6ODYiIHhzaTp0eXBlPSJRdWVyeSI+CiAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNjkiIGxvY2F0b3I9IjgyOjgtODI6MTciIGFsaWFzPSJDIj4KICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNjgiIGxvY2F0b3I9IjgyOjgtODI6MTUiIG5hbWU9IkNvbmRMaXN0IiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPgogICAgICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgICAgPHNvcnQgbG9jYWxJZD0iODYiIGxvY2F0b3I9IjgyOjE5LTgyOjg2Ij4KICAgICAgICAgICAgICAgICAgPGJ5IGxvY2FsSWQ9Ijg1IiBsb2NhdG9yPSI4MjoyNy04Mjo4NiIgZGlyZWN0aW9uPSJhc2MiIHhzaTp0eXBlPSJCeUV4cHJlc3Npb24iPgogICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI4NCIgbG9jYXRvcj0iODI6MjctODI6ODYiIHhzaTp0eXBlPSJDb2FsZXNjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGFzVHlwZT0idDpEYXRlVGltZSIgeHNpOnR5cGU9IkFzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNzgiIGxvY2F0b3I9IjgyOjM2LTgyOjQ2IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI3NyIgbG9jYXRvcj0iODI6MzYtODI6NDAiIG5hbWU9Im9uc2V0IiB4c2k6dHlwZT0iSWRlbnRpZmllclJlZiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iODEiIGxvY2F0b3I9IjgyOjQ5LTgyOjY1IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI4MCIgbG9jYXRvcj0iODI6NDktODI6NTkiIHBhdGg9InN0YXJ0IiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9Ijc5IiBsb2NhdG9yPSI4Mjo0OS04Mjo1MyIgbmFtZT0ib25zZXQiIHhzaTp0eXBlPSJJZGVudGlmaWVyUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjgzIiBsb2NhdG9yPSI4Mjo2OC04Mjo4NSIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iODIiIGxvY2F0b3I9IjgyOjY4LTgyOjc5IiBuYW1lPSJyZWNvcmRlZERhdGUiIHhzaTp0eXBlPSJJZGVudGlmaWVyUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICAgICAgICAgICAgICA8L2J5PgogICAgICAgICAgICAgICA8L3NvcnQ+CiAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgICAgIDxvcGVyYW5kIG5hbWU9IkNvbmRMaXN0Ij4KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjY3IiBsb2NhdG9yPSI4MTo0Ni04MTo2MCIgeHNpOnR5cGU9Ikxpc3RUeXBlU3BlY2lmaWVyIj4KICAgICAgICAgICAgICAgPGVsZW1lbnRUeXBlIGxvY2FsSWQ9IjY2IiBsb2NhdG9yPSI4MTo1MS04MTo1OSIgbmFtZT0iZmhpcjpDb25kaXRpb24iIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgPC9vcGVyYW5kVHlwZVNwZWNpZmllcj4KICAgICAgICAgPC9vcGVyYW5kPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSI5OSIgbG9jYXRvcj0iOTE6MS05Mjo2MCIgbmFtZT0iRmluZFByb2NlZHVyZURhdGUiIGNvbnRleHQ9IlVuZmlsdGVyZWQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9Ijk5Ij4KICAgICAgICAgICAgICAgPGE6cz4vKioKICAqIEZpbmRzIHRoZSBmaXJzdCBub24tbnVsbCBtZWFuaW5nZnVsIGRhdGUgdGhhdCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgUHJvY2VkdXJlLgogICogVGhpcyB3aWxsIGxvb2sgdGhyb3VnaCB0aGUgZm9sbG93aW5nIGZpZWxkcyBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOiBwZXJmb3JtZWREYXRlVGltZS52YWx1ZSwKICAqIHBlcmZvcm1lZFBlcmlvZC5zdGFydC4KICAqIEBwYXJhbSBQcm9jIC0gYSBQcm9jZWR1cmUKICAqIEByZXR1cm5zIHtTeXN0ZW0uRGF0ZVRpbWV9IHRoZSBmaXJzdCBub24tbnVsbCBtZWFuaW5nZnVsIGRhdGUsIG9yIG51bGwgaWYgbm9uIGlzIGZvdW5kCiAqLwpkZWZpbmUgZnVuY3Rpb24gRmluZFByb2NlZHVyZURhdGUoUHJvYyBQcm9jZWR1cmUpOgogIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9Ijk4Ij4KICAgICAgICAgICAgICAgICAgPGE6cyByPSI5OCI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+Q29hbGVzY2UoPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOTMiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjkyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI5MSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+UHJvYzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnBlcmZvcm1lZDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjkzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LCA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI5NyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijk1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI5NCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+UHJvYzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOTUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnBlcmZvcm1lZDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijk2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5zdGFydDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijk3Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+KTwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9Ijk4IiBsb2NhdG9yPSI5MjozLTkyOjYwIiB4c2k6dHlwZT0iQ29hbGVzY2UiPgogICAgICAgICAgICA8b3BlcmFuZCBhc1R5cGU9InQ6RGF0ZVRpbWUiIHhzaTp0eXBlPSJBcyI+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjkzIiBsb2NhdG9yPSI5MjoxMi05MjozMSIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+CiAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iOTIiIGxvY2F0b3I9IjkyOjEyLTkyOjI1IiBwYXRoPSJwZXJmb3JtZWQiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+CiAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iOTEiIGxvY2F0b3I9IjkyOjEyLTkyOjE1IiBuYW1lPSJQcm9jIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPgogICAgICAgICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9Ijk3IiBsb2NhdG9yPSI5MjozNC05Mjo1OSIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+CiAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iOTYiIGxvY2F0b3I9IjkyOjM0LTkyOjUzIiBwYXRoPSJzdGFydCIgeHNpOnR5cGU9IlByb3BlcnR5Ij4KICAgICAgICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI5NSIgbG9jYXRvcj0iOTI6MzQtOTI6NDciIHBhdGg9InBlcmZvcm1lZCIgeHNpOnR5cGU9IlByb3BlcnR5Ij4KICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI5NCIgbG9jYXRvcj0iOTI6MzQtOTI6MzciIG5hbWU9IlByb2MiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+CiAgICAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlByb2MiPgogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iOTAiIGxvY2F0b3I9IjkxOjQwLTkxOjQ4IiBuYW1lPSJmaGlyOlByb2NlZHVyZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICA8L29wZXJhbmQ+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjExOSIgbG9jYXRvcj0iMTAwOjEtMTAxOjc1IiBuYW1lPSJNb3N0UmVjZW50UHJvY2VkdXJlIiBjb250ZXh0PSJVbmZpbHRlcmVkIiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIxMTkiPgogICAgICAgICAgICAgICA8YTpzPi8qKgogICogRmluZHMgdGhlIG1vc3QgcmVjZW50IFByb2NlZHVyZSBpbiBsaXN0IGJ5IGV4YW1pbmluZyB0aGUgZm9sbG93aW5nIGZpZWxkcyBpbgogICogdGhlIGZvbGxvd2luZyBvcmRlcjogcGVyZm9ybWVkRGF0ZVRpbWUudmFsdWUsIHBlcmZvcm1lZFBlcmlvZC5zdGFydC4KICAqIEBwYXJhbSBDb25kTGlzdCAtIGEgbGlzdCBvZiBQcm9jZWR1cmVzCiAgKiBAcmV0dXJucyB7UHJvY2VkdXJlfSB0aGUgbW9zdCByZWNlbnQgUHJvY2VkdXJlIGluIHRoZSBsaXN0CiAqLwpkZWZpbmUgZnVuY3Rpb24gTW9zdFJlY2VudFByb2NlZHVyZShQcm9jTGlzdCBMaXN0Jmx0O1Byb2NlZHVyZT4pOgogIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjExOCI+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTE4Ij4KICAgICAgICAgICAgICAgICAgICAgPGE6cz5MYXN0KDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjExNyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTAzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMDIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPlByb2NMaXN0PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4gUDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+IDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjExNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+c29ydCBieSA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMTUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjExNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+Q29hbGVzY2UoPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMDkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnBlcmZvcm1lZDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LCA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjExMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTExIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5wZXJmb3JtZWQ8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjExMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+c3RhcnQ8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4pPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzPik8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIxMTgiIGxvY2F0b3I9IjEwMTozLTEwMTo3NSIgeHNpOnR5cGU9Ikxhc3QiPgogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjExNyIgbG9jYXRvcj0iMTAxOjgtMTAxOjc0IiB4c2k6dHlwZT0iUXVlcnkiPgogICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjEwMyIgbG9jYXRvcj0iMTAxOjgtMTAxOjE3IiBhbGlhcz0iUCI+CiAgICAgICAgICAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjEwMiIgbG9jYXRvcj0iMTAxOjgtMTAxOjE1IiBuYW1lPSJQcm9jTGlzdCIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4KICAgICAgICAgICAgICAgPC9zb3VyY2U+CiAgICAgICAgICAgICAgIDxzb3J0IGxvY2FsSWQ9IjExNiIgbG9jYXRvcj0iMTAxOjE5LTEwMTo3NCI+CiAgICAgICAgICAgICAgICAgIDxieSBsb2NhbElkPSIxMTUiIGxvY2F0b3I9IjEwMToyNy0xMDE6NzQiIGRpcmVjdGlvbj0iYXNjIiB4c2k6dHlwZT0iQnlFeHByZXNzaW9uIj4KICAgICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMTE0IiBsb2NhdG9yPSIxMDE6MjctMTAxOjc0IiB4c2k6dHlwZT0iQ29hbGVzY2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBhc1R5cGU9InQ6RGF0ZVRpbWUiIHhzaTp0eXBlPSJBcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjExMCIgbG9jYXRvcj0iMTAxOjM2LTEwMTo1MCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMTA5IiBsb2NhdG9yPSIxMDE6MzYtMTAxOjQ0IiBuYW1lPSJwZXJmb3JtZWQiIHhzaTp0eXBlPSJJZGVudGlmaWVyUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIxMTMiIGxvY2F0b3I9IjEwMTo1My0xMDE6NzMiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjExMiIgbG9jYXRvcj0iMTAxOjUzLTEwMTo2NyIgcGF0aD0ic3RhcnQiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMTExIiBsb2NhdG9yPSIxMDE6NTMtMTAxOjYxIiBuYW1lPSJwZXJmb3JtZWQiIHhzaTp0eXBlPSJJZGVudGlmaWVyUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgICAgICAgICAgICAgPC9ieT4KICAgICAgICAgICAgICAgPC9zb3J0PgogICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICAgICA8b3BlcmFuZCBuYW1lPSJQcm9jTGlzdCI+CiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIxMDEiIGxvY2F0b3I9IjEwMDo0Ni0xMDA6NjAiIHhzaTp0eXBlPSJMaXN0VHlwZVNwZWNpZmllciI+CiAgICAgICAgICAgICAgIDxlbGVtZW50VHlwZSBsb2NhbElkPSIxMDAiIGxvY2F0b3I9IjEwMDo1MS0xMDA6NTkiIG5hbWU9ImZoaXI6UHJvY2VkdXJlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgIDwvb3BlcmFuZFR5cGVTcGVjaWZpZXI+CiAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iMTI5IiBsb2NhdG9yPSIxMTA6MS0xMTE6NzIiIG5hbWU9Ik1lZGljYXRpb25TdGF0ZW1lbnREYXRlIiBjb250ZXh0PSJVbmZpbHRlcmVkIiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIxMjkiPgogICAgICAgICAgICAgICA8YTpzPi8qKgogICogRmluZHMgdGhlIGZpcnN0IG5vbi1udWxsIG1lYW5pbmdmdWwgZGF0ZSB0aGF0IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBNZWRpY2F0aW9uU3RhdGVtZW50LgogICogVGhpcyB3aWxsIGxvb2sgdGhyb3VnaCB0aGUgZm9sbG93aW5nIGZpZWxkcyBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOiBlZmZlY3RpdmVEYXRlVGltZSwKICAqIHMuZWZmZWN0aXZlUGVyaW9kLiZxdW90O3N0YXJ0JnF1b3Q7LgogICogQHBhcmFtIFByb2MgLSBhIE1lZGljYXRpb25TdGF0ZW1lbnQKICAqIEByZXR1cm5zIHtTeXN0ZW0uU3RyaW5nfSB0aGUgZmlyc3Qgbm9uLW51bGwgbWVhbmluZ2Z1bCBkYXRlLCBvciBudWxsIGlmIG5vbiBpcyBmb3VuZAogKi8KZGVmaW5lIGZ1bmN0aW9uIE1lZGljYXRpb25TdGF0ZW1lbnREYXRlKHMgRkhJUi5NZWRpY2F0aW9uU3RhdGVtZW50KToKICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIxMjgiPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjEyOCI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+Q29hbGVzY2UoPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTIzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5EYXRlVGltZVRleHQoPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTIyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnM8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjEyMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+ZWZmZWN0aXZlPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4pPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzPiwgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTI3Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5EYXRlVGltZVRleHQoPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTI2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMjUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjEyNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+czwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTI1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5lZmZlY3RpdmU8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMjYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O3N0YXJ0JnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4pPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzPik8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIxMjgiIGxvY2F0b3I9IjExMTozLTExMTo3MiIgeHNpOnR5cGU9IkNvYWxlc2NlIj4KICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMTIzIiBsb2NhdG9yPSIxMTE6MTItMTExOjM2IiBuYW1lPSJEYXRlVGltZVRleHQiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIGFzVHlwZT0iZmhpcjpkYXRlVGltZSIgeHNpOnR5cGU9IkFzIj4KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMTIyIiBsb2NhdG9yPSIxMTE6MjUtMTExOjM1IiBwYXRoPSJlZmZlY3RpdmUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+CiAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMTIxIiBsb2NhdG9yPSIxMTE6MjUiIG5hbWU9InMiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+CiAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjEyNyIgbG9jYXRvcj0iMTExOjM5LTExMTo3MSIgbmFtZT0iRGF0ZVRpbWVUZXh0IiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIxMjYiIGxvY2F0b3I9IjExMTo1Mi0xMTE6NzAiIHBhdGg9InN0YXJ0IiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjEyNSIgbG9jYXRvcj0iMTExOjUyLTExMTo2MiIgcGF0aD0iZWZmZWN0aXZlIiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjEyNCIgbG9jYXRvcj0iMTExOjUyIiBuYW1lPSJzIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPgogICAgICAgICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgICAgPG9wZXJhbmQgbmFtZT0icyI+CiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIxMjAiIGxvY2F0b3I9IjExMDo0My0xMTA6NjYiIG5hbWU9ImZoaXI6TWVkaWNhdGlvblN0YXRlbWVudCIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICA8L29wZXJhbmQ+CiAgICAgIDwvZGVmPgogICA8L3N0YXRlbWVudHM+CjwvbGlicmFyeT4K"/>
  </content>
</Library>