WHO SMART Guidelines - HIV
0.3.0 - ci-build

WHO SMART Guidelines - HIV - Local Development build (v0.3.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

: HIV.IND.38 Logic - XML Representation

Draft as of 2024-08-21

Raw xml | Download



<Library xmlns="http://hl7.org/fhir">
  <id value="HIVIND38Logic"/>
  <meta>
    <profile
             value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary"/>
    <profile
             value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary"/>
    <profile
             value="http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library"/>
    <profile
             value="http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module"/>
  </meta>
  <text>
    <status value="generated"/>
    <div xmlns="http://www.w3.org/1999/xhtml"><p class="res-header-id"><b>Generated Narrative: Library HIVIND38Logic</b></p><a name="HIVIND38Logic"> </a><a name="hcHIVIND38Logic"> </a><a name="HIVIND38Logic-en-US"> </a><h2>Related Artifacts</h2><table class="grid"><tr><td>Depends On</td><td>Library HIC</td><td><code>http://smart.who.int/hiv/Library/HIVCommon|0.0.1</code></td></tr><tr><td>Depends On</td><td>Library WCom</td><td><a href="Library-WHOCommon.html">WHOCommon</a></td></tr><tr><td>Depends On</td><td>Library HE</td><td><a href="Library-HIVElements.html">HIVElements</a></td></tr><tr><td>Depends On</td><td>Library HIE</td><td><a href="Library-HIVIndicatorElements.html">HIVIndicatorElements</a></td></tr></table><h2>Parameters</h2><table class="grid"><tr><td>Measurement Period</td><td>in</td><td>0</td><td>1</td><td>Period</td></tr><tr><td>Patient</td><td>out</td><td>0</td><td>1</td><td>Patient</td></tr><tr><td>Initial Population</td><td>out</td><td>0</td><td>1</td><td>boolean</td></tr><tr><td>Numerator</td><td>out</td><td>0</td><td>1</td><td>boolean</td></tr><tr><td>Denominator</td><td>out</td><td>0</td><td>1</td><td>boolean</td></tr><tr><td>Geographic Region Stratifier</td><td>out</td><td>0</td><td>1</td><td>string</td></tr></table><h2>Data Requirements</h2><table class="grid"><tr><td colspan="2"><b>Type</b>: <a href="http://hl7.org/fhir/R4/patient.html">Patient</a> (<a href="http://hl7.org/fhir/R4/patient.html">Patient</a>)</td></tr></table><table class="grid"><tr><td colspan="2"><b>Type</b>: <a href="http://hl7.org/fhir/R4/patient.html">Patient</a> (<a href="http://hl7.org/fhir/R4/patient.html">Patient</a>)</td></tr></table><h2>Contents</h2><p><code>text/cql</code></p><pre><code class="language-sql">/**
 * Library: HIV.IND.38 Logic
 * Ref No: VER.2
 * Short Name: Early infant diagnosis (EID) coverage
 *
 * Definition: % of HIV-exposed infants who receive a virological test for HIV within two months (and 12 months) of birth
 *
 * Numerator: Number of HIV-exposed infants born during the reporting period who received a virological HIV test within two months (and 12 months) of birth
 * Numerator Calculation: COUNT of infants who are an &quot;HIV-exposed infant or child&quot; with &quot;Infant date of birth&quot; within the reporting period AND with &quot;Date of viral load sample collection&quot; LESS THAN 2 months AFTER &quot;Infant date of birth&quot; AND &quot;HIV test type&quot;='Nucleic acid test for HIV'
 * Numerator Exclusions: 
 *
 * Denominator: Estimated number of HIV-positive women who delivered during the reporting period.   |  | Note: The denominator is a proxy measure for the number of infants born to HIV-infected women.
 * Denominator Calculation: *Estimated number of HIV-positive women who delivered during the reporting period
 * Denominator Exclusions: 
 *
 * Disaggregations:
 * • Test result (HIV-positive, HIV-negative, indeterminate, other) to enable calculation of the percentage positive and the percentage with an indeterminate result among HIV-exposed infants receiving a virological test 
 *  • Age of infant (&lt;2 months, 2-12 months) to allow the separate calculation of the proportion of exposed infants receiving virological testing within two months of birth and within 12 months of birth 
 *  • Cities and other administrative regions of epidemiologic importance
 *
 * Disaggregation Elements: HIV test date (at 2 months, at 12 months) | Age of infant (&lt;2 months, 2-12 months)
 *
 * Numerator and Denominator Elements:
 * Date of viral load sample collection 
 *  HIV test type 
 *  HIV-exposed infant or child 
 *  Infant date of birth
 *
 * Reference: Consolidated guidelines on person-centred HIV strategic information: strengthening routine data for impact. Geneva: World Health Organization; 2022
 * 
 * Data Concepts:
 * HIV.B.DE81: HIV test type | Type of HIV test
 * HIV.B.DE82: Rapid diagnostic test for HIV | Antibody test for HIV performed with a rapid diagnostic
 * HIV.B.DE83: Enzyme immunoassay for HIV | Antibody test for HIV performed with an enzyme immunoassay
 * HIV.B.DE84: Nucleic acid test for HIV | Virological test, which includes testing for early infant diagnosis
 * HIV.B.DE85: Dual HIV/syphilis rapid diagnostic test | Antibody test for HIV and syphilis performed with a rapid diagnostic
 * HIV.B.DE86: HIV self-test | Antibody test for HIV performed by self-tester using a rapid diagnostic
 * HIV.B.DE110: HIV test date | Date of the HIV test
 * HIV.D.DE194: Date of viral load sample collection | Date and time when the sample was collected to test the client's HIV viral load
 * HIV.E.DE87: Infant date of birth | The infant's date of birth (DOB) if known
 * HIV.E.DE90: Age of infant | Infant age calculated using date of birth
 * HIV.E.DE112: HIV-exposed infant or child | Whether the infant or child was determined to have had HIV exposure
 * HIV.E.DE168: HIV test type | Type of HIV test
 * HIV.E.DE169: Rapid diagnostic test for HIV | Antibody test for HIV performed with a rapid diagnostic (RDT)
 * HIV.E.DE170: Enzyme immunoassay for HIV | Antibody test for HIV performed with an enzyme immunoassay (EIA)
 * HIV.E.DE171: Nucleic acid test for HIV | Virological test, which includes testing for early infant diagnosis
 * HIV.E.DE172: Dual HIV/syphilis rapid diagnostic test | Antibody test for HIV and syphilis performed with a rapid diagnostic
 * HIV.E.DE224: HIV test date | Date of the HIV test
 * HIV.G.DE8: Date of viral load sample collection | Date and time when the sample was collected to test the client's HIV viral load
 * HIV.SRV.DE1: HIV test date | Date of the HIV test
 * HIV.SRV.DE12: Date of viral load sample collection | Date and time when the sample was collected to test the client's HIV viral load
 * HIV.SRV.DE20: HIV-exposed infant or child | Whether the infant or child was determined to have had HIV exposure
 *
 * Additional Context
 * - what it measures: This indicator measures early HIV diagnosis in infants.
 * - rationale: • High coverage of early virological testing of infants helps initiate ART early in children with confirmed HIV infection and supports counselling on efforts to prevent seroconversion of those with a negative early test result. | • Current PMTCT guidelines recommend virological testing for HIV-exposed infants within two months of birth.
 * - method: For the numerator: Programme records (for example, PMTCT registers, laboratory records). |  | For the denominator: Modelling-based estimates (for example, Spectrum AIM) |  | The recommended reporting period is 12 months.
 * 
 * Suggested Scoring Method: proportion | http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/proportion-measure-cqfm
 */

library HIVIND38Logic

// Included Libraries
using FHIR version '4.0.1'

include HIVCommon version '0.0.1' called HIC
include FHIRHelpers version '4.0.1'

include WHOCommon called WCom
include HIVElements called HE
include HIVIndicatorElements called HIE

// Indicator Definition
parameter &quot;Measurement Period&quot; Interval&lt;Date&gt; default Interval[@2023-01-01, @2023-01-30]

context Patient
/* Populations */

/*
 *Initial Population
 */

define &quot;Initial Population&quot;:
  true

/**
 * Numerator
 * 
 * Definition: Number of HIV-exposed infants born during the reporting period who received a virological HIV test within two months (and 12 months) of birth
 * Calculation: COUNT of infants who are an &quot;HIV-exposed infant or child&quot; with &quot;Infant date of birth&quot; within the reporting period AND with &quot;Date of viral load sample collection&quot; LESS THAN 2 months AFTER &quot;Infant date of birth&quot; AND &quot;HIV test type&quot;='Nucleic acid test for HIV'
 */


define &quot;Numerator&quot;:
  exists(HIE.&quot;HIV-exposed infant or child E.DE112&quot; O
  with [Patient] P
      such that O.subject.references(P) and P.birthDate during &quot;Measurement Period&quot;)
   and exists(
    HE.&quot;Nucleic acid test for HIV B.DE84&quot; O 
    with [Patient] Pt
    such that O.subject.references(Pt) 
    and months between start of O.effective.toInterval() and FHIRHelpers.ToDate(Pt.birthDate) &lt; 2 months)


/**
 * Denominator - THiS SHOULDN'T BE PROPORTION
 *
 * Definition: Estimated number of HIV-positive women who delivered during the reporting period.   |  | Note: The denominator is a proxy measure for the number of infants born to HIV-infected women.
 * Calculation: *Estimated number of HIV-positive women who delivered during the reporting period
 */

define &quot;Denominator&quot;:
  true
    

/* end Populations */

/*
 * Disaggregators
 */


define &quot;Geographic Region Stratifier&quot;:
	HIE.&quot;By Geographic Region Stratifier&quot;</code></pre><p><code>Content not shown - (</code><code>application/elm+xml</code>, size = 27Kb )</p></div>
  </text>
  <extension
             url="http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability">
    <valueCode value="computable"/>
  </extension>
  <url value="http://smart.who.int/hiv/Library/HIVIND38Logic"/>
  <version value="0.3.0"/>
  <name value="HIVIND38Logic"/>
  <title value="HIV.IND.38 Logic"/>
  <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-21T16:05:17+00:00"/>
  <publisher value="WHO"/>
  <contact>
    <name value="WHO"/>
    <telecom>
      <system value="url"/>
      <value value="http://who.int"/>
    </telecom>
  </contact>
  <description
               value="% of HIV-exposed infants who receive a virological test for HIV within two months (and 12 months) of birth"/>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library HIC"/>
    <resource value="http://smart.who.int/hiv/Library/HIVCommon|0.0.1"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library WCom"/>
    <resource value="http://smart.who.int/hiv/Library/WHOCommon"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library HE"/>
    <resource value="http://smart.who.int/hiv/Library/HIVElements"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library HIE"/>
    <resource value="http://smart.who.int/hiv/Library/HIVIndicatorElements"/>
  </relatedArtifact>
  <parameter>
    <name value="Measurement Period"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <type value="Period"/>
  </parameter>
  <parameter>
    <name value="Patient"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="Patient"/>
  </parameter>
  <parameter>
    <name value="Initial Population"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Numerator"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Denominator"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Geographic Region Stratifier"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="string"/>
  </parameter>
  <dataRequirement>
    <type value="Patient"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Patient"/>
  </dataRequirement>
  <dataRequirement>
    <type value="Patient"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Patient"/>
  </dataRequirement>
  <content>
    <contentType value="text/cql"/>
    <data
          value="LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuMzggTG9naWMKICogUmVmIE5vOiBWRVIuMgogKiBTaG9ydCBOYW1lOiBFYXJseSBpbmZhbnQgZGlhZ25vc2lzIChFSUQpIGNvdmVyYWdlCiAqCiAqIERlZmluaXRpb246ICUgb2YgSElWLWV4cG9zZWQgaW5mYW50cyB3aG8gcmVjZWl2ZSBhIHZpcm9sb2dpY2FsIHRlc3QgZm9yIEhJViB3aXRoaW4gdHdvIG1vbnRocyAoYW5kIDEyIG1vbnRocykgb2YgYmlydGgKICoKICogTnVtZXJhdG9yOiBOdW1iZXIgb2YgSElWLWV4cG9zZWQgaW5mYW50cyBib3JuIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZCB3aG8gcmVjZWl2ZWQgYSB2aXJvbG9naWNhbCBISVYgdGVzdCB3aXRoaW4gdHdvIG1vbnRocyAoYW5kIDEyIG1vbnRocykgb2YgYmlydGgKICogTnVtZXJhdG9yIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBpbmZhbnRzIHdobyBhcmUgYW4gIkhJVi1leHBvc2VkIGluZmFudCBvciBjaGlsZCIgd2l0aCAiSW5mYW50IGRhdGUgb2YgYmlydGgiIHdpdGhpbiB0aGUgcmVwb3J0aW5nIHBlcmlvZCBBTkQgd2l0aCAiRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIiBMRVNTIFRIQU4gMiBtb250aHMgQUZURVIgIkluZmFudCBkYXRlIG9mIGJpcnRoIiBBTkQgIkhJViB0ZXN0IHR5cGUiPSdOdWNsZWljIGFjaWQgdGVzdCBmb3IgSElWJwogKiBOdW1lcmF0b3IgRXhjbHVzaW9uczogCiAqCiAqIERlbm9taW5hdG9yOiBFc3RpbWF0ZWQgbnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSB3b21lbiB3aG8gZGVsaXZlcmVkIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZC4gICB8ICB8IE5vdGU6IFRoZSBkZW5vbWluYXRvciBpcyBhIHByb3h5IG1lYXN1cmUgZm9yIHRoZSBudW1iZXIgb2YgaW5mYW50cyBib3JuIHRvIEhJVi1pbmZlY3RlZCB3b21lbi4KICogRGVub21pbmF0b3IgQ2FsY3VsYXRpb246ICpFc3RpbWF0ZWQgbnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSB3b21lbiB3aG8gZGVsaXZlcmVkIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKiBEZW5vbWluYXRvciBFeGNsdXNpb25zOiAKICoKICogRGlzYWdncmVnYXRpb25zOgogKiDigKLCoFRlc3QgcmVzdWx0IChISVYtcG9zaXRpdmUsIEhJVi1uZWdhdGl2ZSwgaW5kZXRlcm1pbmF0ZSwgb3RoZXIpIHRvIGVuYWJsZSBjYWxjdWxhdGlvbiBvZiB0aGUgcGVyY2VudGFnZSBwb3NpdGl2ZSBhbmQgdGhlIHBlcmNlbnRhZ2Ugd2l0aCBhbiBpbmRldGVybWluYXRlIHJlc3VsdCBhbW9uZyBISVYtZXhwb3NlZCBpbmZhbnRzIHJlY2VpdmluZyBhIHZpcm9sb2dpY2FsIHRlc3QgCiAqICDigKLCoEFnZSBvZiBpbmZhbnQgKDwyIG1vbnRocywgMi0xMiBtb250aHMpIHRvIGFsbG93IHRoZSBzZXBhcmF0ZSBjYWxjdWxhdGlvbiBvZiB0aGUgcHJvcG9ydGlvbiBvZiBleHBvc2VkIGluZmFudHMgcmVjZWl2aW5nIHZpcm9sb2dpY2FsIHRlc3Rpbmcgd2l0aGluIHR3byBtb250aHMgb2YgYmlydGggYW5kIHdpdGhpbiAxMiBtb250aHMgb2YgYmlydGggCiAqICDigKLCoENpdGllcyBhbmQgb3RoZXIgYWRtaW5pc3RyYXRpdmUgcmVnaW9ucyBvZiBlcGlkZW1pb2xvZ2ljIGltcG9ydGFuY2UKICoKICogRGlzYWdncmVnYXRpb24gRWxlbWVudHM6IEhJViB0ZXN0IGRhdGUgKGF0IDIgbW9udGhzLCBhdCAxMiBtb250aHMpIHwgQWdlIG9mIGluZmFudCAoPDIgbW9udGhzLCAyLTEyIG1vbnRocykKICoKICogTnVtZXJhdG9yIGFuZCBEZW5vbWluYXRvciBFbGVtZW50czoKICogRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIAogKiAgSElWIHRlc3QgdHlwZSAKICogIEhJVi1leHBvc2VkIGluZmFudCBvciBjaGlsZCAKICogIEluZmFudCBkYXRlIG9mIGJpcnRoCiAqCiAqIFJlZmVyZW5jZTogQ29uc29saWRhdGVkIGd1aWRlbGluZXMgb24gcGVyc29uLWNlbnRyZWQgSElWIHN0cmF0ZWdpYyBpbmZvcm1hdGlvbjogc3RyZW5ndGhlbmluZyByb3V0aW5lIGRhdGEgZm9yIGltcGFjdC4gR2VuZXZhOiBXb3JsZCBIZWFsdGggT3JnYW5pemF0aW9uOyAyMDIyCiAqIAogKiBEYXRhIENvbmNlcHRzOgogKiBISVYuQi5ERTgxOiBISVYgdGVzdCB0eXBlIHwgVHlwZSBvZiBISVYgdGVzdAogKiBISVYuQi5ERTgyOiBSYXBpZCBkaWFnbm9zdGljIHRlc3QgZm9yIEhJViB8IEFudGlib2R5IHRlc3QgZm9yIEhJViBwZXJmb3JtZWQgd2l0aCBhIHJhcGlkIGRpYWdub3N0aWMKICogSElWLkIuREU4MzogRW56eW1lIGltbXVub2Fzc2F5IGZvciBISVYgfCBBbnRpYm9keSB0ZXN0IGZvciBISVYgcGVyZm9ybWVkIHdpdGggYW4gZW56eW1lIGltbXVub2Fzc2F5CiAqIEhJVi5CLkRFODQ6IE51Y2xlaWMgYWNpZCB0ZXN0IGZvciBISVYgfCBWaXJvbG9naWNhbCB0ZXN0LCB3aGljaCBpbmNsdWRlcyB0ZXN0aW5nIGZvciBlYXJseSBpbmZhbnQgZGlhZ25vc2lzCiAqIEhJVi5CLkRFODU6IER1YWwgSElWL3N5cGhpbGlzIHJhcGlkIGRpYWdub3N0aWMgdGVzdCB8IEFudGlib2R5IHRlc3QgZm9yIEhJViBhbmQgc3lwaGlsaXMgcGVyZm9ybWVkIHdpdGggYSByYXBpZCBkaWFnbm9zdGljCiAqIEhJVi5CLkRFODY6IEhJViBzZWxmLXRlc3QgfCBBbnRpYm9keSB0ZXN0IGZvciBISVYgcGVyZm9ybWVkIGJ5IHNlbGYtdGVzdGVyIHVzaW5nIGEgcmFwaWQgZGlhZ25vc3RpYwogKiBISVYuQi5ERTExMDogSElWIHRlc3QgZGF0ZSB8IERhdGUgb2YgdGhlIEhJViB0ZXN0CiAqIEhJVi5ELkRFMTk0OiBEYXRlIG9mIHZpcmFsIGxvYWQgc2FtcGxlIGNvbGxlY3Rpb24gfCBEYXRlIGFuZCB0aW1lIHdoZW4gdGhlIHNhbXBsZSB3YXMgY29sbGVjdGVkIHRvIHRlc3QgdGhlIGNsaWVudCdzIEhJViB2aXJhbCBsb2FkCiAqIEhJVi5FLkRFODc6IEluZmFudCBkYXRlIG9mIGJpcnRoIHwgVGhlIGluZmFudCdzIGRhdGUgb2YgYmlydGggKERPQikgaWYga25vd24KICogSElWLkUuREU5MDogQWdlIG9mIGluZmFudCB8IEluZmFudCBhZ2UgY2FsY3VsYXRlZCB1c2luZyBkYXRlIG9mIGJpcnRoCiAqIEhJVi5FLkRFMTEyOiBISVYtZXhwb3NlZCBpbmZhbnQgb3IgY2hpbGQgfCBXaGV0aGVyIHRoZSBpbmZhbnQgb3IgY2hpbGQgd2FzIGRldGVybWluZWQgdG8gaGF2ZSBoYWQgSElWIGV4cG9zdXJlCiAqIEhJVi5FLkRFMTY4OiBISVYgdGVzdCB0eXBlIHwgVHlwZSBvZiBISVYgdGVzdAogKiBISVYuRS5ERTE2OTogUmFwaWQgZGlhZ25vc3RpYyB0ZXN0IGZvciBISVYgfCBBbnRpYm9keSB0ZXN0IGZvciBISVYgcGVyZm9ybWVkIHdpdGggYSByYXBpZCBkaWFnbm9zdGljIChSRFQpCiAqIEhJVi5FLkRFMTcwOiBFbnp5bWUgaW1tdW5vYXNzYXkgZm9yIEhJViB8IEFudGlib2R5IHRlc3QgZm9yIEhJViBwZXJmb3JtZWQgd2l0aCBhbiBlbnp5bWUgaW1tdW5vYXNzYXkgKEVJQSkKICogSElWLkUuREUxNzE6IE51Y2xlaWMgYWNpZCB0ZXN0IGZvciBISVYgfCBWaXJvbG9naWNhbCB0ZXN0LCB3aGljaCBpbmNsdWRlcyB0ZXN0aW5nIGZvciBlYXJseSBpbmZhbnQgZGlhZ25vc2lzCiAqIEhJVi5FLkRFMTcyOiBEdWFsIEhJVi9zeXBoaWxpcyByYXBpZCBkaWFnbm9zdGljIHRlc3QgfCBBbnRpYm9keSB0ZXN0IGZvciBISVYgYW5kIHN5cGhpbGlzIHBlcmZvcm1lZCB3aXRoIGEgcmFwaWQgZGlhZ25vc3RpYwogKiBISVYuRS5ERTIyNDogSElWIHRlc3QgZGF0ZSB8IERhdGUgb2YgdGhlIEhJViB0ZXN0CiAqIEhJVi5HLkRFODogRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIHwgRGF0ZSBhbmQgdGltZSB3aGVuIHRoZSBzYW1wbGUgd2FzIGNvbGxlY3RlZCB0byB0ZXN0IHRoZSBjbGllbnQncyBISVYgdmlyYWwgbG9hZAogKiBISVYuU1JWLkRFMTogSElWIHRlc3QgZGF0ZSB8IERhdGUgb2YgdGhlIEhJViB0ZXN0CiAqIEhJVi5TUlYuREUxMjogRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIHwgRGF0ZSBhbmQgdGltZSB3aGVuIHRoZSBzYW1wbGUgd2FzIGNvbGxlY3RlZCB0byB0ZXN0IHRoZSBjbGllbnQncyBISVYgdmlyYWwgbG9hZAogKiBISVYuU1JWLkRFMjA6IEhJVi1leHBvc2VkIGluZmFudCBvciBjaGlsZCB8IFdoZXRoZXIgdGhlIGluZmFudCBvciBjaGlsZCB3YXMgZGV0ZXJtaW5lZCB0byBoYXZlIGhhZCBISVYgZXhwb3N1cmUKICoKICogQWRkaXRpb25hbCBDb250ZXh0CiAqIC0gd2hhdCBpdCBtZWFzdXJlczogVGhpcyBpbmRpY2F0b3IgbWVhc3VyZXMgZWFybHkgSElWIGRpYWdub3NpcyBpbiBpbmZhbnRzLgogKiAtIHJhdGlvbmFsZTog4oCiwqBIaWdoIGNvdmVyYWdlIG9mIGVhcmx5IHZpcm9sb2dpY2FsIHRlc3Rpbmcgb2YgaW5mYW50cyBoZWxwcyBpbml0aWF0ZSBBUlQgZWFybHkgaW4gY2hpbGRyZW4gd2l0aCBjb25maXJtZWQgSElWIGluZmVjdGlvbiBhbmQgc3VwcG9ydHMgY291bnNlbGxpbmcgb24gZWZmb3J0cyB0byBwcmV2ZW50IHNlcm9jb252ZXJzaW9uIG9mIHRob3NlIHdpdGggYSBuZWdhdGl2ZSBlYXJseSB0ZXN0IHJlc3VsdC4gfCDigKIgQ3VycmVudCBQTVRDVCBndWlkZWxpbmVzIHJlY29tbWVuZCB2aXJvbG9naWNhbCB0ZXN0aW5nIGZvciBISVYtZXhwb3NlZCBpbmZhbnRzIHdpdGhpbiB0d28gbW9udGhzIG9mIGJpcnRoLgogKiAtIG1ldGhvZDogRm9yIHRoZSBudW1lcmF0b3I6IFByb2dyYW1tZSByZWNvcmRzIChmb3IgZXhhbXBsZSwgUE1UQ1QgcmVnaXN0ZXJzLCBsYWJvcmF0b3J5IHJlY29yZHMpLiB8ICB8IEZvciB0aGUgZGVub21pbmF0b3I6IE1vZGVsbGluZy1iYXNlZCBlc3RpbWF0ZXMgKGZvciBleGFtcGxlLCBTcGVjdHJ1bSBBSU0pIHwgIHwgVGhlIHJlY29tbWVuZGVkIHJlcG9ydGluZyBwZXJpb2QgaXMgMTIgbW9udGhzLgogKiAKICogU3VnZ2VzdGVkIFNjb3JpbmcgTWV0aG9kOiBwcm9wb3J0aW9uIHwgaHR0cDovL2hsNy5vcmcvZmhpci91cy9jcWZtZWFzdXJlcy9TdHJ1Y3R1cmVEZWZpbml0aW9uL3Byb3BvcnRpb24tbWVhc3VyZS1jcWZtCiAqLwoKbGlicmFyeSBISVZJTkQzOExvZ2ljCgovLyBJbmNsdWRlZCBMaWJyYXJpZXMKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgSElWQ29tbW9uIHZlcnNpb24gJzAuMC4xJyBjYWxsZWQgSElDCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIFdIT0NvbW1vbiBjYWxsZWQgV0NvbQppbmNsdWRlIEhJVkVsZW1lbnRzIGNhbGxlZCBIRQppbmNsdWRlIEhJVkluZGljYXRvckVsZW1lbnRzIGNhbGxlZCBISUUKCi8vIEluZGljYXRvciBEZWZpbml0aW9uCnBhcmFtZXRlciAiTWVhc3VyZW1lbnQgUGVyaW9kIiBJbnRlcnZhbDxEYXRlPiBkZWZhdWx0IEludGVydmFsW0AyMDIzLTAxLTAxLCBAMjAyMy0wMS0zMF0KCmNvbnRleHQgUGF0aWVudAovKiBQb3B1bGF0aW9ucyAqLwoKLyoKICpJbml0aWFsIFBvcHVsYXRpb24KICovCgpkZWZpbmUgIkluaXRpYWwgUG9wdWxhdGlvbiI6CiAgdHJ1ZQoKLyoqCiAqIE51bWVyYXRvcgogKiAKICogRGVmaW5pdGlvbjogTnVtYmVyIG9mIEhJVi1leHBvc2VkIGluZmFudHMgYm9ybiBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2Qgd2hvIHJlY2VpdmVkIGEgdmlyb2xvZ2ljYWwgSElWIHRlc3Qgd2l0aGluIHR3byBtb250aHMgKGFuZCAxMiBtb250aHMpIG9mIGJpcnRoCiAqIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBpbmZhbnRzIHdobyBhcmUgYW4gIkhJVi1leHBvc2VkIGluZmFudCBvciBjaGlsZCIgd2l0aCAiSW5mYW50IGRhdGUgb2YgYmlydGgiIHdpdGhpbiB0aGUgcmVwb3J0aW5nIHBlcmlvZCBBTkQgd2l0aCAiRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIiBMRVNTIFRIQU4gMiBtb250aHMgQUZURVIgIkluZmFudCBkYXRlIG9mIGJpcnRoIiBBTkQgIkhJViB0ZXN0IHR5cGUiPSdOdWNsZWljIGFjaWQgdGVzdCBmb3IgSElWJwogKi8KCgpkZWZpbmUgIk51bWVyYXRvciI6CiAgZXhpc3RzKEhJRS4iSElWLWV4cG9zZWQgaW5mYW50IG9yIGNoaWxkIEUuREUxMTIiIE8KICB3aXRoIFtQYXRpZW50XSBQCiAgICAgIHN1Y2ggdGhhdCBPLnN1YmplY3QucmVmZXJlbmNlcyhQKSBhbmQgUC5iaXJ0aERhdGUgZHVyaW5nICJNZWFzdXJlbWVudCBQZXJpb2QiKQogICBhbmQgZXhpc3RzKAogICAgSEUuIk51Y2xlaWMgYWNpZCB0ZXN0IGZvciBISVYgQi5ERTg0IiBPIAogICAgd2l0aCBbUGF0aWVudF0gUHQKICAgIHN1Y2ggdGhhdCBPLnN1YmplY3QucmVmZXJlbmNlcyhQdCkgCiAgICBhbmQgbW9udGhzIGJldHdlZW4gc3RhcnQgb2YgTy5lZmZlY3RpdmUudG9JbnRlcnZhbCgpIGFuZCBGSElSSGVscGVycy5Ub0RhdGUoUHQuYmlydGhEYXRlKSA8IDIgbW9udGhzKQoKCi8qKgogKiBEZW5vbWluYXRvciAtIFRIaVMgU0hPVUxETidUIEJFIFBST1BPUlRJT04KICoKICogRGVmaW5pdGlvbjogRXN0aW1hdGVkIG51bWJlciBvZiBISVYtcG9zaXRpdmUgd29tZW4gd2hvIGRlbGl2ZXJlZCBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QuICAgfCAgfCBOb3RlOiBUaGUgZGVub21pbmF0b3IgaXMgYSBwcm94eSBtZWFzdXJlIGZvciB0aGUgbnVtYmVyIG9mIGluZmFudHMgYm9ybiB0byBISVYtaW5mZWN0ZWQgd29tZW4uCiAqIENhbGN1bGF0aW9uOiAqRXN0aW1hdGVkIG51bWJlciBvZiBISVYtcG9zaXRpdmUgd29tZW4gd2hvIGRlbGl2ZXJlZCBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QKICovCgpkZWZpbmUgIkRlbm9taW5hdG9yIjoKICB0cnVlCiAgICAKCi8qIGVuZCBQb3B1bGF0aW9ucyAqLwoKLyoKICogRGlzYWdncmVnYXRvcnMKICovCgoKZGVmaW5lICJHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyIjoKCUhJRS4iQnkgR2VvZ3JhcGhpYyBSZWdpb24gU3RyYXRpZmllciI="/>
  </content>
  <content>
    <contentType value="application/elm+xml"/>
    <data
          value="PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGxpYnJhcnkgeG1sbnM9InVybjpobDctb3JnOmVsbTpyMSIgeG1sbnM6dD0idXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczpmaGlyPSJodHRwOi8vaGw3Lm9yZy9maGlyIiB4bWxuczpxZG00Mz0idXJuOmhlYWx0aGl0LWdvdjpxZG06djRfMyIgeG1sbnM6cWRtNTM9InVybjpoZWFsdGhpdC1nb3Y6cWRtOnY1XzMiIHhtbG5zOmE9InVybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMSI+CiAgIDxhbm5vdGF0aW9uIHRyYW5zbGF0b3JPcHRpb25zPSJFbmFibGVBbm5vdGF0aW9ucyxFbmFibGVMb2NhdG9ycyxEaXNhYmxlTGlzdERlbW90aW9uLERpc2FibGVMaXN0UHJvbW90aW9uIiBzaWduYXR1cmVMZXZlbD0iTm9uZSIgeHNpOnR5cGU9ImE6Q3FsVG9FbG1JbmZvIi8+CiAgIDxhbm5vdGF0aW9uIG1lc3NhZ2U9IlRoZSBmdW5jdGlvbiBGSElSSGVscGVycy5Ub0ludGVydmFsIGhhcyBtdWx0aXBsZSBvdmVybG9hZHMgYW5kIGR1ZSB0byB0aGUgU2lnbmF0dXJlTGV2ZWwgc2V0dGluZyAoTm9uZSksIHRoZSBvdmVybG9hZCBzaWduYXR1cmUgaXMgbm90IGJlaW5nIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuIFRoaXMgbWF5IHJlc3VsdCBpbiBhbWJpZ3VvdXMgZnVuY3Rpb24gcmVzb2x1dGlvbiBhdCBydW50aW1lLCBjb25zaWRlciBzZXR0aW5nIHRoZSBTaWduYXR1cmVMZXZlbCB0byBPdmVybG9hZHMgb3IgQWxsIHRvIGVuc3VyZSB0aGF0IHRoZSBvdXRwdXQgaW5jbHVkZXMgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byBzdXBwb3J0IGNvcnJlY3Qgb3ZlcmxvYWQgc2VsZWN0aW9uIGF0IHJ1bnRpbWUuIiBlcnJvclR5cGU9InNlbWFudGljIiBlcnJvclNldmVyaXR5PSJ3YXJuaW5nIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUVycm9yIi8+CiAgIDxhbm5vdGF0aW9uIG1lc3NhZ2U9IlRoZSBmdW5jdGlvbiBGSElSSGVscGVycy5Ub0ludGVydmFsIGhhcyBtdWx0aXBsZSBvdmVybG9hZHMgYW5kIGR1ZSB0byB0aGUgU2lnbmF0dXJlTGV2ZWwgc2V0dGluZyAoTm9uZSksIHRoZSBvdmVybG9hZCBzaWduYXR1cmUgaXMgbm90IGJlaW5nIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuIFRoaXMgbWF5IHJlc3VsdCBpbiBhbWJpZ3VvdXMgZnVuY3Rpb24gcmVzb2x1dGlvbiBhdCBydW50aW1lLCBjb25zaWRlciBzZXR0aW5nIHRoZSBTaWduYXR1cmVMZXZlbCB0byBPdmVybG9hZHMgb3IgQWxsIHRvIGVuc3VyZSB0aGF0IHRoZSBvdXRwdXQgaW5jbHVkZXMgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byBzdXBwb3J0IGNvcnJlY3Qgb3ZlcmxvYWQgc2VsZWN0aW9uIGF0IHJ1bnRpbWUuIiBlcnJvclR5cGU9InNlbWFudGljIiBlcnJvclNldmVyaXR5PSJ3YXJuaW5nIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUVycm9yIi8+CiAgIDxhbm5vdGF0aW9uIG1lc3NhZ2U9IlRoZSBmdW5jdGlvbiBXSE9Db21tb24ucmVmZXJlbmNlcyBoYXMgbXVsdGlwbGUgb3ZlcmxvYWRzIGFuZCBkdWUgdG8gdGhlIFNpZ25hdHVyZUxldmVsIHNldHRpbmcgKE5vbmUpLCB0aGUgb3ZlcmxvYWQgc2lnbmF0dXJlIGlzIG5vdCBiZWluZyBpbmNsdWRlZCBpbiB0aGUgb3V0cHV0LiBUaGlzIG1heSByZXN1bHQgaW4gYW1iaWd1b3VzIGZ1bmN0aW9uIHJlc29sdXRpb24gYXQgcnVudGltZSwgY29uc2lkZXIgc2V0dGluZyB0aGUgU2lnbmF0dXJlTGV2ZWwgdG8gT3ZlcmxvYWRzIG9yIEFsbCB0byBlbnN1cmUgdGhhdCB0aGUgb3V0cHV0IGluY2x1ZGVzIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gdG8gc3VwcG9ydCBjb3JyZWN0IG92ZXJsb2FkIHNlbGVjdGlvbiBhdCBydW50aW1lLiIgZXJyb3JUeXBlPSJzZW1hbnRpYyIgZXJyb3JTZXZlcml0eT0id2FybmluZyIgeHNpOnR5cGU9ImE6Q3FsVG9FbG1FcnJvciIvPgogICA8YW5ub3RhdGlvbiBtZXNzYWdlPSJUaGUgZnVuY3Rpb24gV0hPQ29tbW9uLnJlZmVyZW5jZXMgaGFzIG11bHRpcGxlIG92ZXJsb2FkcyBhbmQgZHVlIHRvIHRoZSBTaWduYXR1cmVMZXZlbCBzZXR0aW5nIChOb25lKSwgdGhlIG92ZXJsb2FkIHNpZ25hdHVyZSBpcyBub3QgYmVpbmcgaW5jbHVkZWQgaW4gdGhlIG91dHB1dC4gVGhpcyBtYXkgcmVzdWx0IGluIGFtYmlndW91cyBmdW5jdGlvbiByZXNvbHV0aW9uIGF0IHJ1bnRpbWUsIGNvbnNpZGVyIHNldHRpbmcgdGhlIFNpZ25hdHVyZUxldmVsIHRvIE92ZXJsb2FkcyBvciBBbGwgdG8gZW5zdXJlIHRoYXQgdGhlIG91dHB1dCBpbmNsdWRlcyBzdWZmaWNpZW50IGluZm9ybWF0aW9uIHRvIHN1cHBvcnQgY29ycmVjdCBvdmVybG9hZCBzZWxlY3Rpb24gYXQgcnVudGltZS4iIGVycm9yVHlwZT0ic2VtYW50aWMiIGVycm9yU2V2ZXJpdHk9Indhcm5pbmciIHhzaTp0eXBlPSJhOkNxbFRvRWxtRXJyb3IiLz4KICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgIDxhOnMgcj0iNjAiPgogICAgICAgICA8YTpzPi8qKgogKiBMaWJyYXJ5OiBISVYuSU5ELjM4IExvZ2ljCiAqIFJlZiBObzogVkVSLjIKICogU2hvcnQgTmFtZTogRWFybHkgaW5mYW50IGRpYWdub3NpcyAoRUlEKSBjb3ZlcmFnZQogKgogKiBEZWZpbml0aW9uOiAlIG9mIEhJVi1leHBvc2VkIGluZmFudHMgd2hvIHJlY2VpdmUgYSB2aXJvbG9naWNhbCB0ZXN0IGZvciBISVYgd2l0aGluIHR3byBtb250aHMgKGFuZCAxMiBtb250aHMpIG9mIGJpcnRoCiAqCiAqIE51bWVyYXRvcjogTnVtYmVyIG9mIEhJVi1leHBvc2VkIGluZmFudHMgYm9ybiBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2Qgd2hvIHJlY2VpdmVkIGEgdmlyb2xvZ2ljYWwgSElWIHRlc3Qgd2l0aGluIHR3byBtb250aHMgKGFuZCAxMiBtb250aHMpIG9mIGJpcnRoCiAqIE51bWVyYXRvciBDYWxjdWxhdGlvbjogQ09VTlQgb2YgaW5mYW50cyB3aG8gYXJlIGFuICZxdW90O0hJVi1leHBvc2VkIGluZmFudCBvciBjaGlsZCZxdW90OyB3aXRoICZxdW90O0luZmFudCBkYXRlIG9mIGJpcnRoJnF1b3Q7IHdpdGhpbiB0aGUgcmVwb3J0aW5nIHBlcmlvZCBBTkQgd2l0aCAmcXVvdDtEYXRlIG9mIHZpcmFsIGxvYWQgc2FtcGxlIGNvbGxlY3Rpb24mcXVvdDsgTEVTUyBUSEFOIDIgbW9udGhzIEFGVEVSICZxdW90O0luZmFudCBkYXRlIG9mIGJpcnRoJnF1b3Q7IEFORCAmcXVvdDtISVYgdGVzdCB0eXBlJnF1b3Q7PSdOdWNsZWljIGFjaWQgdGVzdCBmb3IgSElWJwogKiBOdW1lcmF0b3IgRXhjbHVzaW9uczogCiAqCiAqIERlbm9taW5hdG9yOiBFc3RpbWF0ZWQgbnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSB3b21lbiB3aG8gZGVsaXZlcmVkIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZC4gICB8ICB8IE5vdGU6IFRoZSBkZW5vbWluYXRvciBpcyBhIHByb3h5IG1lYXN1cmUgZm9yIHRoZSBudW1iZXIgb2YgaW5mYW50cyBib3JuIHRvIEhJVi1pbmZlY3RlZCB3b21lbi4KICogRGVub21pbmF0b3IgQ2FsY3VsYXRpb246ICpFc3RpbWF0ZWQgbnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSB3b21lbiB3aG8gZGVsaXZlcmVkIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKiBEZW5vbWluYXRvciBFeGNsdXNpb25zOiAKICoKICogRGlzYWdncmVnYXRpb25zOgogKiDigKLCoFRlc3QgcmVzdWx0IChISVYtcG9zaXRpdmUsIEhJVi1uZWdhdGl2ZSwgaW5kZXRlcm1pbmF0ZSwgb3RoZXIpIHRvIGVuYWJsZSBjYWxjdWxhdGlvbiBvZiB0aGUgcGVyY2VudGFnZSBwb3NpdGl2ZSBhbmQgdGhlIHBlcmNlbnRhZ2Ugd2l0aCBhbiBpbmRldGVybWluYXRlIHJlc3VsdCBhbW9uZyBISVYtZXhwb3NlZCBpbmZhbnRzIHJlY2VpdmluZyBhIHZpcm9sb2dpY2FsIHRlc3QgCiAqICDigKLCoEFnZSBvZiBpbmZhbnQgKCZsdDsyIG1vbnRocywgMi0xMiBtb250aHMpIHRvIGFsbG93IHRoZSBzZXBhcmF0ZSBjYWxjdWxhdGlvbiBvZiB0aGUgcHJvcG9ydGlvbiBvZiBleHBvc2VkIGluZmFudHMgcmVjZWl2aW5nIHZpcm9sb2dpY2FsIHRlc3Rpbmcgd2l0aGluIHR3byBtb250aHMgb2YgYmlydGggYW5kIHdpdGhpbiAxMiBtb250aHMgb2YgYmlydGggCiAqICDigKLCoENpdGllcyBhbmQgb3RoZXIgYWRtaW5pc3RyYXRpdmUgcmVnaW9ucyBvZiBlcGlkZW1pb2xvZ2ljIGltcG9ydGFuY2UKICoKICogRGlzYWdncmVnYXRpb24gRWxlbWVudHM6IEhJViB0ZXN0IGRhdGUgKGF0IDIgbW9udGhzLCBhdCAxMiBtb250aHMpIHwgQWdlIG9mIGluZmFudCAoJmx0OzIgbW9udGhzLCAyLTEyIG1vbnRocykKICoKICogTnVtZXJhdG9yIGFuZCBEZW5vbWluYXRvciBFbGVtZW50czoKICogRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIAogKiAgSElWIHRlc3QgdHlwZSAKICogIEhJVi1leHBvc2VkIGluZmFudCBvciBjaGlsZCAKICogIEluZmFudCBkYXRlIG9mIGJpcnRoCiAqCiAqIFJlZmVyZW5jZTogQ29uc29saWRhdGVkIGd1aWRlbGluZXMgb24gcGVyc29uLWNlbnRyZWQgSElWIHN0cmF0ZWdpYyBpbmZvcm1hdGlvbjogc3RyZW5ndGhlbmluZyByb3V0aW5lIGRhdGEgZm9yIGltcGFjdC4gR2VuZXZhOiBXb3JsZCBIZWFsdGggT3JnYW5pemF0aW9uOyAyMDIyCiAqIAogKiBEYXRhIENvbmNlcHRzOgogKiBISVYuQi5ERTgxOiBISVYgdGVzdCB0eXBlIHwgVHlwZSBvZiBISVYgdGVzdAogKiBISVYuQi5ERTgyOiBSYXBpZCBkaWFnbm9zdGljIHRlc3QgZm9yIEhJViB8IEFudGlib2R5IHRlc3QgZm9yIEhJViBwZXJmb3JtZWQgd2l0aCBhIHJhcGlkIGRpYWdub3N0aWMKICogSElWLkIuREU4MzogRW56eW1lIGltbXVub2Fzc2F5IGZvciBISVYgfCBBbnRpYm9keSB0ZXN0IGZvciBISVYgcGVyZm9ybWVkIHdpdGggYW4gZW56eW1lIGltbXVub2Fzc2F5CiAqIEhJVi5CLkRFODQ6IE51Y2xlaWMgYWNpZCB0ZXN0IGZvciBISVYgfCBWaXJvbG9naWNhbCB0ZXN0LCB3aGljaCBpbmNsdWRlcyB0ZXN0aW5nIGZvciBlYXJseSBpbmZhbnQgZGlhZ25vc2lzCiAqIEhJVi5CLkRFODU6IER1YWwgSElWL3N5cGhpbGlzIHJhcGlkIGRpYWdub3N0aWMgdGVzdCB8IEFudGlib2R5IHRlc3QgZm9yIEhJViBhbmQgc3lwaGlsaXMgcGVyZm9ybWVkIHdpdGggYSByYXBpZCBkaWFnbm9zdGljCiAqIEhJVi5CLkRFODY6IEhJViBzZWxmLXRlc3QgfCBBbnRpYm9keSB0ZXN0IGZvciBISVYgcGVyZm9ybWVkIGJ5IHNlbGYtdGVzdGVyIHVzaW5nIGEgcmFwaWQgZGlhZ25vc3RpYwogKiBISVYuQi5ERTExMDogSElWIHRlc3QgZGF0ZSB8IERhdGUgb2YgdGhlIEhJViB0ZXN0CiAqIEhJVi5ELkRFMTk0OiBEYXRlIG9mIHZpcmFsIGxvYWQgc2FtcGxlIGNvbGxlY3Rpb24gfCBEYXRlIGFuZCB0aW1lIHdoZW4gdGhlIHNhbXBsZSB3YXMgY29sbGVjdGVkIHRvIHRlc3QgdGhlIGNsaWVudCdzIEhJViB2aXJhbCBsb2FkCiAqIEhJVi5FLkRFODc6IEluZmFudCBkYXRlIG9mIGJpcnRoIHwgVGhlIGluZmFudCdzIGRhdGUgb2YgYmlydGggKERPQikgaWYga25vd24KICogSElWLkUuREU5MDogQWdlIG9mIGluZmFudCB8IEluZmFudCBhZ2UgY2FsY3VsYXRlZCB1c2luZyBkYXRlIG9mIGJpcnRoCiAqIEhJVi5FLkRFMTEyOiBISVYtZXhwb3NlZCBpbmZhbnQgb3IgY2hpbGQgfCBXaGV0aGVyIHRoZSBpbmZhbnQgb3IgY2hpbGQgd2FzIGRldGVybWluZWQgdG8gaGF2ZSBoYWQgSElWIGV4cG9zdXJlCiAqIEhJVi5FLkRFMTY4OiBISVYgdGVzdCB0eXBlIHwgVHlwZSBvZiBISVYgdGVzdAogKiBISVYuRS5ERTE2OTogUmFwaWQgZGlhZ25vc3RpYyB0ZXN0IGZvciBISVYgfCBBbnRpYm9keSB0ZXN0IGZvciBISVYgcGVyZm9ybWVkIHdpdGggYSByYXBpZCBkaWFnbm9zdGljIChSRFQpCiAqIEhJVi5FLkRFMTcwOiBFbnp5bWUgaW1tdW5vYXNzYXkgZm9yIEhJViB8IEFudGlib2R5IHRlc3QgZm9yIEhJViBwZXJmb3JtZWQgd2l0aCBhbiBlbnp5bWUgaW1tdW5vYXNzYXkgKEVJQSkKICogSElWLkUuREUxNzE6IE51Y2xlaWMgYWNpZCB0ZXN0IGZvciBISVYgfCBWaXJvbG9naWNhbCB0ZXN0LCB3aGljaCBpbmNsdWRlcyB0ZXN0aW5nIGZvciBlYXJseSBpbmZhbnQgZGlhZ25vc2lzCiAqIEhJVi5FLkRFMTcyOiBEdWFsIEhJVi9zeXBoaWxpcyByYXBpZCBkaWFnbm9zdGljIHRlc3QgfCBBbnRpYm9keSB0ZXN0IGZvciBISVYgYW5kIHN5cGhpbGlzIHBlcmZvcm1lZCB3aXRoIGEgcmFwaWQgZGlhZ25vc3RpYwogKiBISVYuRS5ERTIyNDogSElWIHRlc3QgZGF0ZSB8IERhdGUgb2YgdGhlIEhJViB0ZXN0CiAqIEhJVi5HLkRFODogRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIHwgRGF0ZSBhbmQgdGltZSB3aGVuIHRoZSBzYW1wbGUgd2FzIGNvbGxlY3RlZCB0byB0ZXN0IHRoZSBjbGllbnQncyBISVYgdmlyYWwgbG9hZAogKiBISVYuU1JWLkRFMTogSElWIHRlc3QgZGF0ZSB8IERhdGUgb2YgdGhlIEhJViB0ZXN0CiAqIEhJVi5TUlYuREUxMjogRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIHwgRGF0ZSBhbmQgdGltZSB3aGVuIHRoZSBzYW1wbGUgd2FzIGNvbGxlY3RlZCB0byB0ZXN0IHRoZSBjbGllbnQncyBISVYgdmlyYWwgbG9hZAogKiBISVYuU1JWLkRFMjA6IEhJVi1leHBvc2VkIGluZmFudCBvciBjaGlsZCB8IFdoZXRoZXIgdGhlIGluZmFudCBvciBjaGlsZCB3YXMgZGV0ZXJtaW5lZCB0byBoYXZlIGhhZCBISVYgZXhwb3N1cmUKICoKICogQWRkaXRpb25hbCBDb250ZXh0CiAqIC0gd2hhdCBpdCBtZWFzdXJlczogVGhpcyBpbmRpY2F0b3IgbWVhc3VyZXMgZWFybHkgSElWIGRpYWdub3NpcyBpbiBpbmZhbnRzLgogKiAtIHJhdGlvbmFsZTog4oCiwqBIaWdoIGNvdmVyYWdlIG9mIGVhcmx5IHZpcm9sb2dpY2FsIHRlc3Rpbmcgb2YgaW5mYW50cyBoZWxwcyBpbml0aWF0ZSBBUlQgZWFybHkgaW4gY2hpbGRyZW4gd2l0aCBjb25maXJtZWQgSElWIGluZmVjdGlvbiBhbmQgc3VwcG9ydHMgY291bnNlbGxpbmcgb24gZWZmb3J0cyB0byBwcmV2ZW50IHNlcm9jb252ZXJzaW9uIG9mIHRob3NlIHdpdGggYSBuZWdhdGl2ZSBlYXJseSB0ZXN0IHJlc3VsdC4gfCDigKIgQ3VycmVudCBQTVRDVCBndWlkZWxpbmVzIHJlY29tbWVuZCB2aXJvbG9naWNhbCB0ZXN0aW5nIGZvciBISVYtZXhwb3NlZCBpbmZhbnRzIHdpdGhpbiB0d28gbW9udGhzIG9mIGJpcnRoLgogKiAtIG1ldGhvZDogRm9yIHRoZSBudW1lcmF0b3I6IFByb2dyYW1tZSByZWNvcmRzIChmb3IgZXhhbXBsZSwgUE1UQ1QgcmVnaXN0ZXJzLCBsYWJvcmF0b3J5IHJlY29yZHMpLiB8ICB8IEZvciB0aGUgZGVub21pbmF0b3I6IE1vZGVsbGluZy1iYXNlZCBlc3RpbWF0ZXMgKGZvciBleGFtcGxlLCBTcGVjdHJ1bSBBSU0pIHwgIHwgVGhlIHJlY29tbWVuZGVkIHJlcG9ydGluZyBwZXJpb2QgaXMgMTIgbW9udGhzLgogKiAKICogU3VnZ2VzdGVkIFNjb3JpbmcgTWV0aG9kOiBwcm9wb3J0aW9uIHwgaHR0cDovL2hsNy5vcmcvZmhpci91cy9jcWZtZWFzdXJlcy9TdHJ1Y3R1cmVEZWZpbml0aW9uL3Byb3BvcnRpb24tbWVhc3VyZS1jcWZtCiAqLwoKbGlicmFyeSBISVZJTkQzOExvZ2ljPC9hOnM+CiAgICAgIDwvYTpzPgogICA8L2Fubm90YXRpb24+CiAgIDxpZGVudGlmaWVyIGlkPSJISVZJTkQzOExvZ2ljIiBzeXN0ZW09Imh0dHA6Ly9zbWFydC53aG8uaW50L2hpdiIvPgogICA8c2NoZW1hSWRlbnRpZmllciBpZD0idXJuOmhsNy1vcmc6ZWxtIiB2ZXJzaW9uPSJyMSIvPgogICA8dXNpbmdzPgogICAgICA8ZGVmIGxvY2FsSWRlbnRpZmllcj0iU3lzdGVtIiB1cmk9InVybjpobDctb3JnOmVsbS10eXBlczpyMSIvPgogICAgICA8ZGVmIGxvY2FsSWQ9IjEiIGxvY2F0b3I9IjY1OjEtNjU6MjYiIGxvY2FsSWRlbnRpZmllcj0iRkhJUiIgdXJpPSJodHRwOi8vaGw3Lm9yZy9maGlyIiB2ZXJzaW9uPSI0LjAuMSI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjEiPgogICAgICAgICAgICAgICA8YTpzPi8vIEluY2x1ZGVkIExpYnJhcmllcwp1c2luZyA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiB2ZXJzaW9uICc0LjAuMSc8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgPC9kZWY+CiAgIDwvdXNpbmdzPgogICA8aW5jbHVkZXM+CiAgICAgIDxkZWYgbG9jYWxJZD0iMiIgbG9jYXRvcj0iNjc6MS02Nzo0NCIgbG9jYWxJZGVudGlmaWVyPSJISUMiIHBhdGg9Imh0dHA6Ly9zbWFydC53aG8uaW50L2hpdi9ISVZDb21tb24iIHZlcnNpb249IjAuMC4xIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMiI+CiAgICAgICAgICAgICAgIDxhOnM+aW5jbHVkZSA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgPGE6cz5ISVZDb21tb248L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+IHZlcnNpb24gJzAuMC4xJyBjYWxsZWQgSElDPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjMiIGxvY2F0b3I9IjY4OjEtNjg6MzUiIGxvY2FsSWRlbnRpZmllcj0iRkhJUkhlbHBlcnMiIHBhdGg9Imh0dHA6Ly9obDcub3JnL2ZoaXIvRkhJUkhlbHBlcnMiIHZlcnNpb249IjQuMC4xIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMyI+CiAgICAgICAgICAgICAgIDxhOnM+aW5jbHVkZSA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSSGVscGVyczwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4gdmVyc2lvbiAnNC4wLjEnPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjQiIGxvY2F0b3I9IjcwOjEtNzA6MjkiIGxvY2FsSWRlbnRpZmllcj0iV0NvbSIgcGF0aD0iaHR0cDovL3NtYXJ0Lndoby5pbnQvaGl2L1dIT0NvbW1vbiI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjQiPgogICAgICAgICAgICAgICA8YTpzPmluY2x1ZGUgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+V0hPQ29tbW9uPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiBjYWxsZWQgV0NvbTwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSI1IiBsb2NhdG9yPSI3MToxLTcxOjI5IiBsb2NhbElkZW50aWZpZXI9IkhFIiBwYXRoPSJodHRwOi8vc21hcnQud2hvLmludC9oaXYvSElWRWxlbWVudHMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSI1Ij4KICAgICAgICAgICAgICAgPGE6cz5pbmNsdWRlIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICA8YTpzPkhJVkVsZW1lbnRzPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiBjYWxsZWQgSEU8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iNiIgbG9jYXRvcj0iNzI6MS03MjozOSIgbG9jYWxJZGVudGlmaWVyPSJISUUiIHBhdGg9Imh0dHA6Ly9zbWFydC53aG8uaW50L2hpdi9ISVZJbmRpY2F0b3JFbGVtZW50cyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjYiPgogICAgICAgICAgICAgICA8YTpzPmluY2x1ZGUgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+SElWSW5kaWNhdG9yRWxlbWVudHM8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+IGNhbGxlZCBISUU8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgPC9kZWY+CiAgIDwvaW5jbHVkZXM+CiAgIDxwYXJhbWV0ZXJzPgogICAgICA8ZGVmIGxvY2FsSWQ9IjEyIiBsb2NhdG9yPSI3NToxLTc1Ojg4IiBuYW1lPSJNZWFzdXJlbWVudCBQZXJpb2QiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIxMiI+CiAgICAgICAgICAgICAgIDxhOnM+Ly8gSW5kaWNhdG9yIERlZmluaXRpb24KcGFyYW1ldGVyICZxdW90O01lYXN1cmVtZW50IFBlcmlvZCZxdW90OyA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIxMSI+CiAgICAgICAgICAgICAgICAgIDxhOnM+SW50ZXJ2YWwmbHQ7PC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTAiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPkRhdGU8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+PjwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4gZGVmYXVsdCA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSI5Ij4KICAgICAgICAgICAgICAgICAgPGE6cyByPSI3Ij5JbnRlcnZhbFtAMjAyMy0wMS0wMSwgQDIwMjMtMDEtMzBdPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZGVmYXVsdCBsb2NhbElkPSI5IiBsb2NhdG9yPSI3NTo1NS03NTo4OCIgbG93Q2xvc2VkPSJ0cnVlIiBoaWdoQ2xvc2VkPSJ0cnVlIiB4c2k6dHlwZT0iSW50ZXJ2YWwiPgogICAgICAgICAgICA8bG93IGxvY2FsSWQ9IjciIGxvY2F0b3I9Ijc1OjY0LTc1Ojc0IiB4c2k6dHlwZT0iRGF0ZSI+CiAgICAgICAgICAgICAgIDx5ZWFyIHZhbHVlVHlwZT0idDpJbnRlZ2VyIiB2YWx1ZT0iMjAyMyIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgPG1vbnRoIHZhbHVlVHlwZT0idDpJbnRlZ2VyIiB2YWx1ZT0iMSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgPGRheSB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjEiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgIDwvbG93PgogICAgICAgICAgICA8aGlnaCBsb2NhbElkPSI4IiBsb2NhdG9yPSI3NTo3Ny03NTo4NyIgeHNpOnR5cGU9IkRhdGUiPgogICAgICAgICAgICAgICA8eWVhciB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjIwMjMiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgIDxtb250aCB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjEiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgIDxkYXkgdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSIzMCIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgPC9oaWdoPgogICAgICAgICA8L2RlZmF1bHQ+CiAgICAgICAgIDxwYXJhbWV0ZXJUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjExIiBsb2NhdG9yPSI3NTozMi03NTo0NSIgeHNpOnR5cGU9IkludGVydmFsVHlwZVNwZWNpZmllciI+CiAgICAgICAgICAgIDxwb2ludFR5cGUgbG9jYWxJZD0iMTAiIGxvY2F0b3I9Ijc1OjQxLTc1OjQ0IiBuYW1lPSJ0OkRhdGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgPC9wYXJhbWV0ZXJUeXBlU3BlY2lmaWVyPgogICAgICA8L2RlZj4KICAgPC9wYXJhbWV0ZXJzPgogICA8Y29udGV4dHM+CiAgICAgIDxkZWYgbG9jYXRvcj0iNzc6MS03NzoxNSIgbmFtZT0iUGF0aWVudCIvPgogICA8L2NvbnRleHRzPgogICA8c3RhdGVtZW50cz4KICAgICAgPGRlZiBsb2NhdG9yPSI3NzoxLTc3OjE1IiBuYW1lPSJQYXRpZW50IiBjb250ZXh0PSJQYXRpZW50Ij4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9IlNpbmdsZXRvbkZyb20iPgogICAgICAgICAgICA8b3BlcmFuZCBsb2NhdG9yPSI3NzoxLTc3OjE1IiBkYXRhVHlwZT0iZmhpcjpQYXRpZW50IiB0ZW1wbGF0ZUlkPSJodHRwOi8vaGw3Lm9yZy9maGlyL1N0cnVjdHVyZURlZmluaXRpb24vUGF0aWVudCIgeHNpOnR5cGU9IlJldHJpZXZlIi8+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iMTQiIGxvY2F0b3I9Ijg0OjEtODU6NiIgbmFtZT0iSW5pdGlhbCBQb3B1bGF0aW9uIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMTQiPgogICAgICAgICAgICAgICA8YTpzIHI9IjEzIj4vKiBQb3B1bGF0aW9ucyAqLwoKLyoKICpJbml0aWFsIFBvcHVsYXRpb24KICovCgpkZWZpbmUgJnF1b3Q7SW5pdGlhbCBQb3B1bGF0aW9uJnF1b3Q7OgogIHRydWU8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMTMiIGxvY2F0b3I9Ijg1OjMtODU6NiIgdmFsdWVUeXBlPSJ0OkJvb2xlYW4iIHZhbHVlPSJ0cnVlIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSI1NSIgbG9jYXRvcj0iOTU6MS0xMDM6MTA1IiBuYW1lPSJOdW1lcmF0b3IiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSI1NSI+CiAgICAgICAgICAgICAgIDxhOnM+LyoqCiAqIE51bWVyYXRvcgogKiAKICogRGVmaW5pdGlvbjogTnVtYmVyIG9mIEhJVi1leHBvc2VkIGluZmFudHMgYm9ybiBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2Qgd2hvIHJlY2VpdmVkIGEgdmlyb2xvZ2ljYWwgSElWIHRlc3Qgd2l0aGluIHR3byBtb250aHMgKGFuZCAxMiBtb250aHMpIG9mIGJpcnRoCiAqIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBpbmZhbnRzIHdobyBhcmUgYW4gJnF1b3Q7SElWLWV4cG9zZWQgaW5mYW50IG9yIGNoaWxkJnF1b3Q7IHdpdGggJnF1b3Q7SW5mYW50IGRhdGUgb2YgYmlydGgmcXVvdDsgd2l0aGluIHRoZSByZXBvcnRpbmcgcGVyaW9kIEFORCB3aXRoICZxdW90O0RhdGUgb2YgdmlyYWwgbG9hZCBzYW1wbGUgY29sbGVjdGlvbiZxdW90OyBMRVNTIFRIQU4gMiBtb250aHMgQUZURVIgJnF1b3Q7SW5mYW50IGRhdGUgb2YgYmlydGgmcXVvdDsgQU5EICZxdW90O0hJViB0ZXN0IHR5cGUmcXVvdDs9J051Y2xlaWMgYWNpZCB0ZXN0IGZvciBISVYnCiAqLwoKCmRlZmluZSAmcXVvdDtOdW1lcmF0b3ImcXVvdDs6CiAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnMgcj0iNTQiPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjMwIj4KICAgICAgICAgICAgICAgICAgICAgPGE6cz5leGlzdHM8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyOSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+KDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPkhJRS4mcXVvdDtISVYtZXhwb3NlZCBpbmZhbnQgb3IgY2hpbGQgRS5ERTExMiZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+IE88L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPgogIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz53aXRoIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjE4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxNyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPltQYXRpZW50XTwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+IFA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+CiAgICAgIHN1Y2ggdGhhdCA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxOSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+TzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnN1YmplY3Q8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+cmVmZXJlbmNlcyg8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+UDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4pPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4gYW5kIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPlA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5iaXJ0aERhdGU8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI2Ij4gZHVyaW5nIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtNZWFzdXJlbWVudCBQZXJpb2QmcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPik8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzPgogICBhbmQgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTMiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPmV4aXN0czwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjUyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4oCiAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1MiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjMxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5IRS4mcXVvdDtOdWNsZWljIGFjaWQgdGVzdCBmb3IgSElWIEIuREU4NCZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+IE88L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiAKICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjUxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz53aXRoIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjM0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPltQYXRpZW50XTwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+IFB0PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPgogICAgc3VjaCB0aGF0IDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjUwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjM1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5PPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+c3ViamVjdDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjM4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5yZWZlcmVuY2VzKDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjM3Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5QdDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4pPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4gCiAgICBhbmQgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ3Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5tb250aHMgYmV0d2VlbiA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0MiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+c3RhcnQgb2YgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzOSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+TzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPmVmZmVjdGl2ZTwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz50b0ludGVydmFsKCk8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4gYW5kIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0MyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUkhlbHBlcnM8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5Ub0RhdGUoPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5QdDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPmJpcnRoRGF0ZTwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+KTwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiAmbHQ7IDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4yIG1vbnRoczwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+KTwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI1NCIgbG9jYXRvcj0iOTY6My0xMDM6MTA1IiB4c2k6dHlwZT0iQW5kIj4KICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMzAiIGxvY2F0b3I9Ijk2OjMtOTg6ODQiIHhzaTp0eXBlPSJFeGlzdHMiPgogICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIyOSIgbG9jYXRvcj0iOTY6OS05ODo4NCIgeHNpOnR5cGU9IlF1ZXJ5Ij4KICAgICAgICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIxNiIgbG9jYXRvcj0iOTY6MTAtOTY6NTIiIGFsaWFzPSJPIj4KICAgICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMTUiIGxvY2F0b3I9Ijk2OjEwLTk2OjUwIiBuYW1lPSJISVYtZXhwb3NlZCBpbmZhbnQgb3IgY2hpbGQgRS5ERTExMiIgbGlicmFyeU5hbWU9IkhJRSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgPC9zb3VyY2U+CiAgICAgICAgICAgICAgICAgIDxyZWxhdGlvbnNoaXAgbG9jYWxJZD0iMjgiIGxvY2F0b3I9Ijk3OjMtOTg6ODMiIGFsaWFzPSJQIiB4c2k6dHlwZT0iV2l0aCI+CiAgICAgICAgICAgICAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjE3IiBsb2NhdG9yPSI5Nzo4LTk3OjE2IiBkYXRhVHlwZT0iZmhpcjpQYXRpZW50IiB0ZW1wbGF0ZUlkPSJodHRwOi8vaGw3Lm9yZy9maGlyL1N0cnVjdHVyZURlZmluaXRpb24vUGF0aWVudCIgeHNpOnR5cGU9IlJldHJpZXZlIi8+CiAgICAgICAgICAgICAgICAgICAgIDxzdWNoVGhhdCBsb2NhbElkPSIyNyIgbG9jYXRvcj0iOTg6MTctOTg6ODMiIHhzaTp0eXBlPSJBbmQiPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIyMiIgbG9jYXRvcj0iOTg6MTctOTg6MzkiIG5hbWU9InJlZmVyZW5jZXMiIGxpYnJhcnlOYW1lPSJXQ29tIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIyMCIgbG9jYXRvcj0iOTg6MTctOTg6MjUiIHBhdGg9InN1YmplY3QiIHNjb3BlPSJPIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjEiIGxvY2F0b3I9Ijk4OjM4IiBuYW1lPSJQIiB4c2k6dHlwZT0iQWxpYXNSZWYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIyNiIgbG9jYXRvcj0iOTg6NDUtOTg6ODMiIHhzaTp0eXBlPSJJbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlRvRGF0ZSIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIyNCIgbG9jYXRvcj0iOTg6NDUtOTg6NTUiIHBhdGg9ImJpcnRoRGF0ZSIgc2NvcGU9IlAiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjI1IiBsb2NhdG9yPSI5ODo2NC05ODo4MyIgbmFtZT0iTWVhc3VyZW1lbnQgUGVyaW9kIiB4c2k6dHlwZT0iUGFyYW1ldGVyUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgPC9zdWNoVGhhdD4KICAgICAgICAgICAgICAgICAgPC9yZWxhdGlvbnNoaXA+CiAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI1MyIgbG9jYXRvcj0iOTk6OC0xMDM6MTA1IiB4c2k6dHlwZT0iRXhpc3RzIj4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNTIiIGxvY2F0b3I9Ijk5OjE0LTEwMzoxMDUiIHhzaTp0eXBlPSJRdWVyeSI+CiAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMzIiIGxvY2F0b3I9IjEwMDo1LTEwMDo0MyIgYWxpYXM9Ik8iPgogICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIzMSIgbG9jYXRvcj0iMTAwOjUtMTAwOjQxIiBuYW1lPSJOdWNsZWljIGFjaWQgdGVzdCBmb3IgSElWIEIuREU4NCIgbGlicmFyeU5hbWU9IkhFIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgICAgICAgPHJlbGF0aW9uc2hpcCBsb2NhbElkPSI1MSIgbG9jYXRvcj0iMTAxOjUtMTAzOjEwNCIgYWxpYXM9IlB0IiB4c2k6dHlwZT0iV2l0aCI+CiAgICAgICAgICAgICAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjMzIiBsb2NhdG9yPSIxMDE6MTAtMTAxOjE4IiBkYXRhVHlwZT0iZmhpcjpQYXRpZW50IiB0ZW1wbGF0ZUlkPSJodHRwOi8vaGw3Lm9yZy9maGlyL1N0cnVjdHVyZURlZmluaXRpb24vUGF0aWVudCIgeHNpOnR5cGU9IlJldHJpZXZlIi8+CiAgICAgICAgICAgICAgICAgICAgIDxzdWNoVGhhdCBsb2NhbElkPSI1MCIgbG9jYXRvcj0iMTAyOjE1LTEwMzoxMDQiIHhzaTp0eXBlPSJBbmQiPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIzOCIgbG9jYXRvcj0iMTAyOjE1LTEwMjozOCIgbmFtZT0icmVmZXJlbmNlcyIgbGlicmFyeU5hbWU9IldDb20iIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjM2IiBsb2NhdG9yPSIxMDI6MTUtMTAyOjIzIiBwYXRoPSJzdWJqZWN0IiBzY29wZT0iTyIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjM3IiBsb2NhdG9yPSIxMDI6MzYtMTAyOjM3IiBuYW1lPSJQdCIgeHNpOnR5cGU9IkFsaWFzUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNDkiIGxvY2F0b3I9IjEwMzo5LTEwMzoxMDQiIHhzaTp0eXBlPSJMZXNzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IlRvUXVhbnRpdHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI0NyIgbG9jYXRvcj0iMTAzOjktMTAzOjkzIiBwcmVjaXNpb249Ik1vbnRoIiB4c2k6dHlwZT0iRHVyYXRpb25CZXR3ZWVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNDIiIGxvY2F0b3I9IjEwMzoyNC0xMDM6NTYiIHhzaTp0eXBlPSJTdGFydCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjQxIiBsb2NhdG9yPSIxMDM6MzMtMTAzOjU2IiBuYW1lPSJ0b0ludGVydmFsIiBsaWJyYXJ5TmFtZT0iV0NvbSIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNDAiIGxvY2F0b3I9IjEwMzozMy0xMDM6NDMiIHBhdGg9ImVmZmVjdGl2ZSIgc2NvcGU9Ik8iIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IlRvRGF0ZVRpbWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI0NiIgbG9jYXRvcj0iMTAzOjYyLTEwMzo5MyIgbmFtZT0iVG9EYXRlIiBsaWJyYXJ5TmFtZT0iRkhJUkhlbHBlcnMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjQ1IiBsb2NhdG9yPSIxMDM6ODEtMTAzOjkyIiBwYXRoPSJiaXJ0aERhdGUiIHNjb3BlPSJQdCIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNDgiIGxvY2F0b3I9IjEwMzo5Ny0xMDM6MTA0IiB2YWx1ZT0iMiIgdW5pdD0ibW9udGhzIiB4c2k6dHlwZT0iUXVhbnRpdHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICA8L3N1Y2hUaGF0PgogICAgICAgICAgICAgICAgICA8L3JlbGF0aW9uc2hpcD4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iNTciIGxvY2F0b3I9IjExMzoxLTExNDo2IiBuYW1lPSJEZW5vbWluYXRvciIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjU3Ij4KICAgICAgICAgICAgICAgPGE6cyByPSI1NiI+LyoqCiAqIERlbm9taW5hdG9yIC0gVEhpUyBTSE9VTEROJ1QgQkUgUFJPUE9SVElPTgogKgogKiBEZWZpbml0aW9uOiBFc3RpbWF0ZWQgbnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSB3b21lbiB3aG8gZGVsaXZlcmVkIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZC4gICB8ICB8IE5vdGU6IFRoZSBkZW5vbWluYXRvciBpcyBhIHByb3h5IG1lYXN1cmUgZm9yIHRoZSBudW1iZXIgb2YgaW5mYW50cyBib3JuIHRvIEhJVi1pbmZlY3RlZCB3b21lbi4KICogQ2FsY3VsYXRpb246ICpFc3RpbWF0ZWQgbnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSB3b21lbiB3aG8gZGVsaXZlcmVkIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKi8KCmRlZmluZSAmcXVvdDtEZW5vbWluYXRvciZxdW90OzoKICB0cnVlPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjU2IiBsb2NhdG9yPSIxMTQ6My0xMTQ6NiIgdmFsdWVUeXBlPSJ0OkJvb2xlYW4iIHZhbHVlPSJ0cnVlIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSI2MCIgbG9jYXRvcj0iMTI0OjEtMTI1OjM4IiBuYW1lPSJHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iNjAiPgogICAgICAgICAgICAgICA8YTpzPi8qIGVuZCBQb3B1bGF0aW9ucyAqLwoKLyoKICogRGlzYWdncmVnYXRvcnMKICovCgoKZGVmaW5lICZxdW90O0dlb2dyYXBoaWMgUmVnaW9uIFN0cmF0aWZpZXImcXVvdDs6Cgk8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSI1OSI+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTgiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPkhJRTwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTkiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O0J5IEdlb2dyYXBoaWMgUmVnaW9uIFN0cmF0aWZpZXImcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI1OSIgbG9jYXRvcj0iMTI1OjItMTI1OjM4IiBuYW1lPSJCeSBHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyIiBsaWJyYXJ5TmFtZT0iSElFIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICA8L2RlZj4KICAgPC9zdGF0ZW1lbnRzPgo8L2xpYnJhcnk+Cg=="/>
  </content>
</Library>