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.25 Logic - XML Representation

Draft as of 2024-11-07

Raw xml | Download


<Library xmlns="http://hl7.org/fhir">
  <id value="HIVIND25Logic"/>
  <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 HIVIND25Logic</b></p><a name="HIVIND25Logic"> </a><a name="hcHIVIND25Logic"> </a><a name="HIVIND25Logic-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 Config</td><td><a href="Library-HIVConfig.html">HIVConfig</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>Administrative Gender Stratifier</td><td>out</td><td>0</td><td>1</td><td>Coding</td></tr><tr><td>Age Stratifier</td><td>out</td><td>0</td><td>1</td><td>string</td></tr><tr><td>Geographic Region Stratifier</td><td>out</td><td>0</td><td>1</td><td>string</td></tr><tr><td>patientGroups Stratifier</td><td>out</td><td>0</td><td>*</td><td>string</td></tr><tr><td>Stratification</td><td>out</td><td>0</td><td>1</td><td>string</td></tr></table><h2>Contents</h2><p><code>text/cql</code></p><pre><code class="language-sql">/**
 * Library: HIV.IND.25 Logic
 * Ref No: HTS.8
 * Short Name: HIV retesting coverage
 *
 * Definition: % of people testing HIV-negative who tested again within a defined period of time after their previous test
 *
 * Numerator: Number of individuals who tested HIV-negative assessed to be at elevated risk for HIV acquisition who had another HIV test within a defined period after previous test.
 * Numerator Calculation: COUNT of clients with &quot;At elevated risk for HIV acquisition&quot;=True AND with a second &quot;HIV test date&quot; within fixed period after &quot;HIV test date&quot; in the reporting period with &quot;HIV test result&quot;='HIV-negative'
 * Numerator Exclusions: 
 *
 * Denominator: Number of people assessed as being at elevated risk for HIV acquisition (includes people requesting/receiving any HIV prevention intervention, people from key populations, people with known risk factors or those assessed as being at risk of HIV acquisition) who received an HIV-negative test result in the reporting period.
 * Denominator Calculation: COUNT of clients with &quot;At elevated risk for HIV acquisition&quot;=True AND with an &quot;HIV test date&quot; in the reporting period with &quot;HIV test result&quot;='HIV-negative'
 * Denominator Exclusions: 
 *
 * Disaggregations:
 * • Gender (female, male, other*) 
 *  • Age (&lt;15, 15–19, 20–24, 25–49, 50+ years)** 
 *  • Key populations (men who have sex with men, people living in prisons and other closed settings, people who inject drugs, sex workers, trans and gender diverse people)*** 
 *  • Provider type (key population-led or community-led organization, public sector provider, other entities such as private for-profit and not-for-profit organizations, including faith-based, international, nongovernmental) 
 *  • Cities and other administrative regions of epidemiologic importance
 *
 * Disaggregation Elements: Gender | Age | Key population member type
 *
 * Numerator and Denominator Elements:
 * At elevated risk for HIV acquisition 
 *  HIV test date 
 *  HIV test result
 *
 * Reference: Consolidated guidelines on person-centred HIV strategic information: strengthening routine data for impact. Geneva: World Health Organization; 2022
 * 
 * Data Concepts:
 * HIV.A.DE17: Age | Calculated age (number of years) of the client based on date of birth
 * HIV.A.DE18: Gender* | Gender of the client*
 * HIV.A.DE19: Female | Client identifies as female
 * HIV.A.DE20: Male | Client identifies as male
 * HIV.A.DE21: Transgender male | Client identifies as transgender male
 * HIV.A.DE22: Transgender female | Client identifies as transgender female
 * HIV.A.DE23: Other | Additional category
 * HIV.B.DE50: Key population member type* | The type of key population that the client is included in
 * HIV.B.DE51: Sex worker | Client is a sex worker
 * HIV.B.DE52: Men who have sex with men | Client is a man who has sex with men
 * HIV.B.DE53: Trans and gender-diverse people | Client identifies as trans and gender-diverse
 * HIV.B.DE54: People who inject drugs | Client is a person who injects drugs
 * HIV.B.DE55: People living in prisons and other closed settings | Client lives in a prison or another closed setting
 * HIV.B.DE110: HIV test date | Date of the HIV test
 * HIV.B.DE111: HIV test result | The result from HIV testing after applying the testing algorithm
 * HIV.B.DE112: HIV-positive | Test result is HIV-positive
 * HIV.B.DE113: HIV-negative | Test result is HIV-negative
 * HIV.B.DE114: HIV-inconclusive | Test result is HIV-inconclusive
 * HIV.B.DE225: At elevated risk for HIV acquisition | Client is at elevated risk for HIV acquisition
 * HIV.E.DE114: Key population member type* | The type of key population that the infant's mother is included in
 * HIV.E.DE115: Sex worker | Infant's mother is a sex worker
 * HIV.E.DE116: People who inject drugs | Infant's mother is a person who injects drugs
 * HIV.E.DE117: Trans and gender-diverse people | Infant's mother identifies as trans and gender-diverse
 * HIV.E.DE118: People living in prisons and other closed setting | Infant's mother is in a prison or closed setting
 * HIV.E.DE224: HIV test date | Date of the HIV test
 * HIV.PRV.DE1: At elevated risk for HIV acquisition | Client is at elevated risk for HIV acquisition, defined according to country/programme context
 * HIV.SRV.DE1: HIV test date | Date of the HIV test
 * HIV.SRV.DE2: HIV test result | The result from HIV testing after applying the testing algorithm
 *
 * Additional Context
 * - what it measures: This indicator measures the rate of retesting for HIV among those at ongoing risk of HIV acquisition.
 * - rationale: For those individuals who test negative for HIV but are at ongoing risk of HIV acquisition, retesting is encouraged. The recommended frequency of re-testing will differ for different groups in different settings. The level of retesting examined by this indicator should aligned with national recommendations.
 * - method: Individual-level data obtained from programme records
 * 
 * Suggested Scoring Method: proportion | http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/proportion-measure-cqfm
 */

library HIVIND25Logic

// 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 HIVConfig called Config
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 individuals who tested HIV-negative assessed to be at elevated risk for HIV acquisition who had another HIV test within a defined period after previous test.
 * Calculation: COUNT of clients with &quot;At elevated risk for HIV acquisition&quot;=True AND with a second &quot;HIV test date&quot; within fixed period after &quot;HIV test date&quot; in the reporting period with &quot;HIV test result&quot;='HIV-negative'
 */

define &quot;Numerator&quot;:
  exists(HIE.&quot;Negative Tests after First Negative Test&quot;)


/**
 * Denominator
 *
 * Definition: Number of people assessed as being at elevated risk for HIV acquisition (includes people requesting/receiving any HIV prevention intervention, people from key populations, people with known risk factors or those assessed as being at risk of HIV acquisition) who received an HIV-negative test result in the reporting period.
 * Calculation: COUNT of clients with &quot;At elevated risk for HIV acquisition&quot;=True AND with an &quot;HIV test date&quot; in the reporting period with &quot;HIV test result&quot;='HIV-negative'
 */

define &quot;Denominator&quot;:
  exists(HIE.&quot;Negative Tests within Measurement Period&quot;)
    

/* end Populations */


/*
 * Disaggregators
 */

define &quot;Administrative Gender Stratifier&quot;:
	HIE.&quot;By Administrative Gender Stratifier&quot;

define &quot;Age Stratifier&quot;:
	HIE.&quot;By Age Stratifier 2&quot;

define &quot;Geographic Region Stratifier&quot;:
	HIE.&quot;By Geographic Region Stratifier&quot;

define &quot;patientGroups Stratifier&quot;:
	HIE.&quot;patientGroups&quot;

define &quot;Stratification&quot;:
 HIE.&quot;By Administrative Gender Stratifier&quot;.code 
 + ':' + HIE.&quot;HIV status of partner or contact&quot;.code
  + ':' + HIE.&quot;By Age Stratifier 2&quot;
+ ':' + HIE.&quot;By Geographic Region Stratifier&quot;
+ Combine(HIE.patientGroups, ':')</code></pre><p><code>Content not shown - (</code><code>application/elm+xml</code>, size = 25Kb )</p></div>
  </text>
  <extension
             url="http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability">
    <valueCode value="computable"/>
  </extension>
  <url value="http://smart.who.int/hiv/Library/HIVIND25Logic"/>
  <version value="0.3.0"/>
  <name value="HIVIND25Logic"/>
  <title value="HIV.IND.25 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-11-07T21:07:17+00:00"/>
  <publisher value="WHO"/>
  <contact>
    <name value="WHO"/>
    <telecom>
      <system value="url"/>
      <value value="http://who.int"/>
    </telecom>
  </contact>
  <description
               value="% of people testing HIV-negative who tested again within a defined period of time after their previous test"/>
  <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 Config"/>
    <resource value="http://smart.who.int/hiv/Library/HIVConfig"/>
  </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="Administrative Gender Stratifier"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="Coding"/>
  </parameter>
  <parameter>
    <name value="Age Stratifier"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="string"/>
  </parameter>
  <parameter>
    <name value="Geographic Region Stratifier"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="string"/>
  </parameter>
  <parameter>
    <name value="patientGroups Stratifier"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="string"/>
  </parameter>
  <parameter>
    <name value="Stratification"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="string"/>
  </parameter>
  <content>
    <contentType value="text/cql"/>
    <data
          value="LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuMjUgTG9naWMKICogUmVmIE5vOiBIVFMuOAogKiBTaG9ydCBOYW1lOiBISVYgcmV0ZXN0aW5nIGNvdmVyYWdlCiAqCiAqIERlZmluaXRpb246ICUgb2YgcGVvcGxlIHRlc3RpbmcgSElWLW5lZ2F0aXZlIHdobyB0ZXN0ZWQgYWdhaW4gd2l0aGluIGEgZGVmaW5lZCBwZXJpb2Qgb2YgdGltZSBhZnRlciB0aGVpciBwcmV2aW91cyB0ZXN0CiAqCiAqIE51bWVyYXRvcjogTnVtYmVyIG9mIGluZGl2aWR1YWxzIHdobyB0ZXN0ZWQgSElWLW5lZ2F0aXZlIGFzc2Vzc2VkIHRvIGJlIGF0IGVsZXZhdGVkIHJpc2sgZm9yIEhJViBhY3F1aXNpdGlvbiB3aG8gaGFkIGFub3RoZXIgSElWIHRlc3Qgd2l0aGluIGEgZGVmaW5lZCBwZXJpb2QgYWZ0ZXIgcHJldmlvdXMgdGVzdC4KICogTnVtZXJhdG9yIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBjbGllbnRzIHdpdGggIkF0IGVsZXZhdGVkIHJpc2sgZm9yIEhJViBhY3F1aXNpdGlvbiI9VHJ1ZSBBTkQgd2l0aCBhIHNlY29uZCAiSElWIHRlc3QgZGF0ZSIgd2l0aGluIGZpeGVkIHBlcmlvZCBhZnRlciAiSElWIHRlc3QgZGF0ZSIgaW4gdGhlIHJlcG9ydGluZyBwZXJpb2Qgd2l0aCAiSElWIHRlc3QgcmVzdWx0Ij0nSElWLW5lZ2F0aXZlJwogKiBOdW1lcmF0b3IgRXhjbHVzaW9uczogCiAqCiAqIERlbm9taW5hdG9yOiBOdW1iZXIgb2YgcGVvcGxlIGFzc2Vzc2VkIGFzIGJlaW5nIGF0IGVsZXZhdGVkIHJpc2sgZm9yIEhJViBhY3F1aXNpdGlvbiAoaW5jbHVkZXMgcGVvcGxlIHJlcXVlc3RpbmcvcmVjZWl2aW5nIGFueSBISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24sIHBlb3BsZSBmcm9tIGtleSBwb3B1bGF0aW9ucywgcGVvcGxlIHdpdGgga25vd24gcmlzayBmYWN0b3JzIG9yIHRob3NlIGFzc2Vzc2VkIGFzIGJlaW5nIGF0IHJpc2sgb2YgSElWIGFjcXVpc2l0aW9uKSB3aG8gcmVjZWl2ZWQgYW4gSElWLW5lZ2F0aXZlIHRlc3QgcmVzdWx0IGluIHRoZSByZXBvcnRpbmcgcGVyaW9kLgogKiBEZW5vbWluYXRvciBDYWxjdWxhdGlvbjogQ09VTlQgb2YgY2xpZW50cyB3aXRoICJBdCBlbGV2YXRlZCByaXNrIGZvciBISVYgYWNxdWlzaXRpb24iPVRydWUgQU5EIHdpdGggYW4gIkhJViB0ZXN0IGRhdGUiIGluIHRoZSByZXBvcnRpbmcgcGVyaW9kIHdpdGggIkhJViB0ZXN0IHJlc3VsdCI9J0hJVi1uZWdhdGl2ZScKICogRGVub21pbmF0b3IgRXhjbHVzaW9uczogCiAqCiAqIERpc2FnZ3JlZ2F0aW9uczoKICog4oCiIEdlbmRlciAoZmVtYWxlLCBtYWxlLCBvdGhlciopIAogKiAg4oCiIEFnZSAoPDE1LCAxNeKAkzE5LCAyMOKAkzI0LCAyNeKAkzQ5LCA1MCsgeWVhcnMpKiogCiAqICDigKIgS2V5IHBvcHVsYXRpb25zIChtZW4gd2hvIGhhdmUgc2V4IHdpdGggbWVuLCBwZW9wbGUgbGl2aW5nIGluIHByaXNvbnMgYW5kIG90aGVyIGNsb3NlZCBzZXR0aW5ncywgcGVvcGxlIHdobyBpbmplY3QgZHJ1Z3MsIHNleCB3b3JrZXJzLCB0cmFucyBhbmQgZ2VuZGVyIGRpdmVyc2UgcGVvcGxlKSoqKiAKICogIOKAoiBQcm92aWRlciB0eXBlIChrZXkgcG9wdWxhdGlvbi1sZWQgb3IgY29tbXVuaXR5LWxlZCBvcmdhbml6YXRpb24sIHB1YmxpYyBzZWN0b3IgcHJvdmlkZXIsIG90aGVyIGVudGl0aWVzIHN1Y2ggYXMgcHJpdmF0ZSBmb3ItcHJvZml0IGFuZCBub3QtZm9yLXByb2ZpdCBvcmdhbml6YXRpb25zLCBpbmNsdWRpbmcgZmFpdGgtYmFzZWQsIGludGVybmF0aW9uYWwsIG5vbmdvdmVybm1lbnRhbCkgCiAqICDigKLCoENpdGllcyBhbmQgb3RoZXIgYWRtaW5pc3RyYXRpdmUgcmVnaW9ucyBvZiBlcGlkZW1pb2xvZ2ljIGltcG9ydGFuY2UKICoKICogRGlzYWdncmVnYXRpb24gRWxlbWVudHM6IEdlbmRlciB8IEFnZSB8IEtleSBwb3B1bGF0aW9uIG1lbWJlciB0eXBlCiAqCiAqIE51bWVyYXRvciBhbmQgRGVub21pbmF0b3IgRWxlbWVudHM6CiAqIEF0IGVsZXZhdGVkIHJpc2sgZm9yIEhJViBhY3F1aXNpdGlvbiAKICogIEhJViB0ZXN0IGRhdGUgCiAqICBISVYgdGVzdCByZXN1bHQKICoKICogUmVmZXJlbmNlOiBDb25zb2xpZGF0ZWQgZ3VpZGVsaW5lcyBvbiBwZXJzb24tY2VudHJlZCBISVYgc3RyYXRlZ2ljIGluZm9ybWF0aW9uOiBzdHJlbmd0aGVuaW5nIHJvdXRpbmUgZGF0YSBmb3IgaW1wYWN0LiBHZW5ldmE6IFdvcmxkIEhlYWx0aCBPcmdhbml6YXRpb247IDIwMjIKICogCiAqIERhdGEgQ29uY2VwdHM6CiAqIEhJVi5BLkRFMTc6IEFnZSB8IENhbGN1bGF0ZWQgYWdlIChudW1iZXIgb2YgeWVhcnMpIG9mIHRoZSBjbGllbnQgYmFzZWQgb24gZGF0ZSBvZiBiaXJ0aAogKiBISVYuQS5ERTE4OiBHZW5kZXIqIHwgR2VuZGVyIG9mIHRoZSBjbGllbnQqCiAqIEhJVi5BLkRFMTk6IEZlbWFsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIGZlbWFsZQogKiBISVYuQS5ERTIwOiBNYWxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgbWFsZQogKiBISVYuQS5ERTIxOiBUcmFuc2dlbmRlciBtYWxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgdHJhbnNnZW5kZXIgbWFsZQogKiBISVYuQS5ERTIyOiBUcmFuc2dlbmRlciBmZW1hbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyB0cmFuc2dlbmRlciBmZW1hbGUKICogSElWLkEuREUyMzogT3RoZXIgfCBBZGRpdGlvbmFsIGNhdGVnb3J5CiAqIEhJVi5CLkRFNTA6IEtleSBwb3B1bGF0aW9uIG1lbWJlciB0eXBlKiB8IFRoZSB0eXBlIG9mIGtleSBwb3B1bGF0aW9uIHRoYXQgdGhlIGNsaWVudCBpcyBpbmNsdWRlZCBpbgogKiBISVYuQi5ERTUxOiBTZXggd29ya2VyIHwgQ2xpZW50IGlzIGEgc2V4IHdvcmtlcgogKiBISVYuQi5ERTUyOiBNZW4gd2hvIGhhdmUgc2V4IHdpdGggbWVuIHwgQ2xpZW50IGlzIGEgbWFuIHdobyBoYXMgc2V4IHdpdGggbWVuCiAqIEhJVi5CLkRFNTM6IFRyYW5zIGFuZCBnZW5kZXItZGl2ZXJzZSBwZW9wbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyB0cmFucyBhbmQgZ2VuZGVyLWRpdmVyc2UKICogSElWLkIuREU1NDogUGVvcGxlIHdobyBpbmplY3QgZHJ1Z3MgfCBDbGllbnQgaXMgYSBwZXJzb24gd2hvIGluamVjdHMgZHJ1Z3MKICogSElWLkIuREU1NTogUGVvcGxlIGxpdmluZyBpbiBwcmlzb25zIGFuZCBvdGhlciBjbG9zZWQgc2V0dGluZ3MgfCBDbGllbnQgbGl2ZXMgaW4gYSBwcmlzb24gb3IgYW5vdGhlciBjbG9zZWQgc2V0dGluZwogKiBISVYuQi5ERTExMDogSElWIHRlc3QgZGF0ZSB8IERhdGUgb2YgdGhlIEhJViB0ZXN0CiAqIEhJVi5CLkRFMTExOiBISVYgdGVzdCByZXN1bHQgfCBUaGUgcmVzdWx0IGZyb20gSElWIHRlc3RpbmcgYWZ0ZXIgYXBwbHlpbmcgdGhlIHRlc3RpbmcgYWxnb3JpdGhtCiAqIEhJVi5CLkRFMTEyOiBISVYtcG9zaXRpdmUgfCBUZXN0IHJlc3VsdCBpcyBISVYtcG9zaXRpdmUKICogSElWLkIuREUxMTM6IEhJVi1uZWdhdGl2ZSB8IFRlc3QgcmVzdWx0IGlzIEhJVi1uZWdhdGl2ZQogKiBISVYuQi5ERTExNDogSElWLWluY29uY2x1c2l2ZSB8IFRlc3QgcmVzdWx0IGlzIEhJVi1pbmNvbmNsdXNpdmUKICogSElWLkIuREUyMjU6IEF0IGVsZXZhdGVkIHJpc2sgZm9yIEhJViBhY3F1aXNpdGlvbiB8IENsaWVudCBpcyBhdCBlbGV2YXRlZCByaXNrIGZvciBISVYgYWNxdWlzaXRpb24KICogSElWLkUuREUxMTQ6IEtleSBwb3B1bGF0aW9uIG1lbWJlciB0eXBlKiB8IFRoZSB0eXBlIG9mIGtleSBwb3B1bGF0aW9uIHRoYXQgdGhlIGluZmFudCdzIG1vdGhlciBpcyBpbmNsdWRlZCBpbgogKiBISVYuRS5ERTExNTogU2V4IHdvcmtlciB8IEluZmFudCdzIG1vdGhlciBpcyBhIHNleCB3b3JrZXIKICogSElWLkUuREUxMTY6IFBlb3BsZSB3aG8gaW5qZWN0IGRydWdzIHwgSW5mYW50J3MgbW90aGVyIGlzIGEgcGVyc29uIHdobyBpbmplY3RzIGRydWdzCiAqIEhJVi5FLkRFMTE3OiBUcmFucyBhbmQgZ2VuZGVyLWRpdmVyc2UgcGVvcGxlIHwgSW5mYW50J3MgbW90aGVyIGlkZW50aWZpZXMgYXMgdHJhbnMgYW5kIGdlbmRlci1kaXZlcnNlCiAqIEhJVi5FLkRFMTE4OiBQZW9wbGUgbGl2aW5nIGluIHByaXNvbnMgYW5kIG90aGVyIGNsb3NlZCBzZXR0aW5nIHwgSW5mYW50J3MgbW90aGVyIGlzIGluIGEgcHJpc29uIG9yIGNsb3NlZCBzZXR0aW5nCiAqIEhJVi5FLkRFMjI0OiBISVYgdGVzdCBkYXRlIHwgRGF0ZSBvZiB0aGUgSElWIHRlc3QKICogSElWLlBSVi5ERTE6IEF0IGVsZXZhdGVkIHJpc2sgZm9yIEhJViBhY3F1aXNpdGlvbiB8IENsaWVudCBpcyBhdCBlbGV2YXRlZCByaXNrIGZvciBISVYgYWNxdWlzaXRpb24sIGRlZmluZWQgYWNjb3JkaW5nIHRvIGNvdW50cnkvcHJvZ3JhbW1lIGNvbnRleHQKICogSElWLlNSVi5ERTE6IEhJViB0ZXN0IGRhdGUgfCBEYXRlIG9mIHRoZSBISVYgdGVzdAogKiBISVYuU1JWLkRFMjogSElWIHRlc3QgcmVzdWx0IHwgVGhlIHJlc3VsdCBmcm9tIEhJViB0ZXN0aW5nIGFmdGVyIGFwcGx5aW5nIHRoZSB0ZXN0aW5nIGFsZ29yaXRobQogKgogKiBBZGRpdGlvbmFsIENvbnRleHQKICogLSB3aGF0IGl0IG1lYXN1cmVzOiBUaGlzIGluZGljYXRvciBtZWFzdXJlcyB0aGUgcmF0ZSBvZiByZXRlc3RpbmcgZm9yIEhJViBhbW9uZyB0aG9zZSBhdCBvbmdvaW5nIHJpc2sgb2YgSElWIGFjcXVpc2l0aW9uLgogKiAtIHJhdGlvbmFsZTogRm9yIHRob3NlIGluZGl2aWR1YWxzIHdobyB0ZXN0IG5lZ2F0aXZlIGZvciBISVYgYnV0IGFyZSBhdCBvbmdvaW5nIHJpc2sgb2YgSElWIGFjcXVpc2l0aW9uLCByZXRlc3RpbmcgaXMgZW5jb3VyYWdlZC4gVGhlIHJlY29tbWVuZGVkIGZyZXF1ZW5jeSBvZiByZS10ZXN0aW5nIHdpbGwgZGlmZmVyIGZvciBkaWZmZXJlbnQgZ3JvdXBzIGluIGRpZmZlcmVudCBzZXR0aW5ncy4gVGhlIGxldmVsIG9mIHJldGVzdGluZyBleGFtaW5lZCBieSB0aGlzIGluZGljYXRvciBzaG91bGQgYWxpZ25lZCB3aXRoIG5hdGlvbmFsIHJlY29tbWVuZGF0aW9ucy4KICogLSBtZXRob2Q6IEluZGl2aWR1YWwtbGV2ZWwgZGF0YSBvYnRhaW5lZCBmcm9tIHByb2dyYW1tZSByZWNvcmRzCiAqIAogKiBTdWdnZXN0ZWQgU2NvcmluZyBNZXRob2Q6IHByb3BvcnRpb24gfCBodHRwOi8vaGw3Lm9yZy9maGlyL3VzL2NxZm1lYXN1cmVzL1N0cnVjdHVyZURlZmluaXRpb24vcHJvcG9ydGlvbi1tZWFzdXJlLWNxZm0KICovCgpsaWJyYXJ5IEhJVklORDI1TG9naWMKCi8vIEluY2x1ZGVkIExpYnJhcmllcwp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4xJwoKaW5jbHVkZSBISVZDb21tb24gdmVyc2lvbiAnMC4wLjEnIGNhbGxlZCBISUMKaW5jbHVkZSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScKaW5jbHVkZSBXSE9Db21tb24gY2FsbGVkIFdDb20KaW5jbHVkZSBISVZDb25maWcgY2FsbGVkIENvbmZpZwppbmNsdWRlIEhJVkVsZW1lbnRzIGNhbGxlZCBIRQppbmNsdWRlIEhJVkluZGljYXRvckVsZW1lbnRzIGNhbGxlZCBISUUKCi8vIEluZGljYXRvciBEZWZpbml0aW9uCnBhcmFtZXRlciAiTWVhc3VyZW1lbnQgUGVyaW9kIiBJbnRlcnZhbDxEYXRlPiBkZWZhdWx0IEludGVydmFsW0AyMDIzLTAxLTAxLCBAMjAyMy0wMS0zMF0KCmNvbnRleHQgUGF0aWVudAovKiBQb3B1bGF0aW9ucyAqLwoKLyoKICpJbml0aWFsIFBvcHVsYXRpb24KICovCgpkZWZpbmUgIkluaXRpYWwgUG9wdWxhdGlvbiI6CiAgdHJ1ZQoKLyoqCiAqIE51bWVyYXRvcgogKiAKICogRGVmaW5pdGlvbjogTnVtYmVyIG9mIGluZGl2aWR1YWxzIHdobyB0ZXN0ZWQgSElWLW5lZ2F0aXZlIGFzc2Vzc2VkIHRvIGJlIGF0IGVsZXZhdGVkIHJpc2sgZm9yIEhJViBhY3F1aXNpdGlvbiB3aG8gaGFkIGFub3RoZXIgSElWIHRlc3Qgd2l0aGluIGEgZGVmaW5lZCBwZXJpb2QgYWZ0ZXIgcHJldmlvdXMgdGVzdC4KICogQ2FsY3VsYXRpb246IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiQXQgZWxldmF0ZWQgcmlzayBmb3IgSElWIGFjcXVpc2l0aW9uIj1UcnVlIEFORCB3aXRoIGEgc2Vjb25kICJISVYgdGVzdCBkYXRlIiB3aXRoaW4gZml4ZWQgcGVyaW9kIGFmdGVyICJISVYgdGVzdCBkYXRlIiBpbiB0aGUgcmVwb3J0aW5nIHBlcmlvZCB3aXRoICJISVYgdGVzdCByZXN1bHQiPSdISVYtbmVnYXRpdmUnCiAqLwoKZGVmaW5lICJOdW1lcmF0b3IiOgogIGV4aXN0cyhISUUuIk5lZ2F0aXZlIFRlc3RzIGFmdGVyIEZpcnN0IE5lZ2F0aXZlIFRlc3QiKQoKCi8qKgogKiBEZW5vbWluYXRvcgogKgogKiBEZWZpbml0aW9uOiBOdW1iZXIgb2YgcGVvcGxlIGFzc2Vzc2VkIGFzIGJlaW5nIGF0IGVsZXZhdGVkIHJpc2sgZm9yIEhJViBhY3F1aXNpdGlvbiAoaW5jbHVkZXMgcGVvcGxlIHJlcXVlc3RpbmcvcmVjZWl2aW5nIGFueSBISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24sIHBlb3BsZSBmcm9tIGtleSBwb3B1bGF0aW9ucywgcGVvcGxlIHdpdGgga25vd24gcmlzayBmYWN0b3JzIG9yIHRob3NlIGFzc2Vzc2VkIGFzIGJlaW5nIGF0IHJpc2sgb2YgSElWIGFjcXVpc2l0aW9uKSB3aG8gcmVjZWl2ZWQgYW4gSElWLW5lZ2F0aXZlIHRlc3QgcmVzdWx0IGluIHRoZSByZXBvcnRpbmcgcGVyaW9kLgogKiBDYWxjdWxhdGlvbjogQ09VTlQgb2YgY2xpZW50cyB3aXRoICJBdCBlbGV2YXRlZCByaXNrIGZvciBISVYgYWNxdWlzaXRpb24iPVRydWUgQU5EIHdpdGggYW4gIkhJViB0ZXN0IGRhdGUiIGluIHRoZSByZXBvcnRpbmcgcGVyaW9kIHdpdGggIkhJViB0ZXN0IHJlc3VsdCI9J0hJVi1uZWdhdGl2ZScKICovCgpkZWZpbmUgIkRlbm9taW5hdG9yIjoKICBleGlzdHMoSElFLiJOZWdhdGl2ZSBUZXN0cyB3aXRoaW4gTWVhc3VyZW1lbnQgUGVyaW9kIikKICAgIAoKLyogZW5kIFBvcHVsYXRpb25zICovCgoKLyoKICogRGlzYWdncmVnYXRvcnMKICovCgpkZWZpbmUgIkFkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyIjoKCUhJRS4iQnkgQWRtaW5pc3RyYXRpdmUgR2VuZGVyIFN0cmF0aWZpZXIiCgpkZWZpbmUgIkFnZSBTdHJhdGlmaWVyIjoKCUhJRS4iQnkgQWdlIFN0cmF0aWZpZXIgMiIKCmRlZmluZSAiR2VvZ3JhcGhpYyBSZWdpb24gU3RyYXRpZmllciI6CglISUUuIkJ5IEdlb2dyYXBoaWMgUmVnaW9uIFN0cmF0aWZpZXIiCgpkZWZpbmUgInBhdGllbnRHcm91cHMgU3RyYXRpZmllciI6CglISUUuInBhdGllbnRHcm91cHMiCgpkZWZpbmUgIlN0cmF0aWZpY2F0aW9uIjoKIEhJRS4iQnkgQWRtaW5pc3RyYXRpdmUgR2VuZGVyIFN0cmF0aWZpZXIiLmNvZGUgCiArICc6JyArIEhJRS4iSElWIHN0YXR1cyBvZiBwYXJ0bmVyIG9yIGNvbnRhY3QiLmNvZGUKICArICc6JyArIEhJRS4iQnkgQWdlIFN0cmF0aWZpZXIgMiIKKyAnOicgKyBISUUuIkJ5IEdlb2dyYXBoaWMgUmVnaW9uIFN0cmF0aWZpZXIiCisgQ29tYmluZShISUUucGF0aWVudEdyb3VwcywgJzonKQ=="/>
  </content>
  <content>
    <contentType value="application/elm+xml"/>
    <data
          value="PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGxpYnJhcnkgeG1sbnM9InVybjpobDctb3JnOmVsbTpyMSIgeG1sbnM6dD0idXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczpmaGlyPSJodHRwOi8vaGw3Lm9yZy9maGlyIiB4bWxuczpxZG00Mz0idXJuOmhlYWx0aGl0LWdvdjpxZG06djRfMyIgeG1sbnM6cWRtNTM9InVybjpoZWFsdGhpdC1nb3Y6cWRtOnY1XzMiIHhtbG5zOmE9InVybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMSI+CiAgIDxhbm5vdGF0aW9uIHRyYW5zbGF0b3JPcHRpb25zPSJFbmFibGVBbm5vdGF0aW9ucyxFbmFibGVMb2NhdG9ycyxEaXNhYmxlTGlzdERlbW90aW9uLERpc2FibGVMaXN0UHJvbW90aW9uIiBzaWduYXR1cmVMZXZlbD0iTm9uZSIgeHNpOnR5cGU9ImE6Q3FsVG9FbG1JbmZvIi8+CiAgIDxhbm5vdGF0aW9uIG1lc3NhZ2U9IlRoZSBmdW5jdGlvbiBGSElSSGVscGVycy5Ub0ludGVydmFsIGhhcyBtdWx0aXBsZSBvdmVybG9hZHMgYW5kIGR1ZSB0byB0aGUgU2lnbmF0dXJlTGV2ZWwgc2V0dGluZyAoTm9uZSksIHRoZSBvdmVybG9hZCBzaWduYXR1cmUgaXMgbm90IGJlaW5nIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuIFRoaXMgbWF5IHJlc3VsdCBpbiBhbWJpZ3VvdXMgZnVuY3Rpb24gcmVzb2x1dGlvbiBhdCBydW50aW1lLCBjb25zaWRlciBzZXR0aW5nIHRoZSBTaWduYXR1cmVMZXZlbCB0byBPdmVybG9hZHMgb3IgQWxsIHRvIGVuc3VyZSB0aGF0IHRoZSBvdXRwdXQgaW5jbHVkZXMgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byBzdXBwb3J0IGNvcnJlY3Qgb3ZlcmxvYWQgc2VsZWN0aW9uIGF0IHJ1bnRpbWUuIiBlcnJvclR5cGU9InNlbWFudGljIiBlcnJvclNldmVyaXR5PSJ3YXJuaW5nIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUVycm9yIi8+CiAgIDxhbm5vdGF0aW9uIG1lc3NhZ2U9IlRoZSBmdW5jdGlvbiBGSElSSGVscGVycy5Ub0ludGVydmFsIGhhcyBtdWx0aXBsZSBvdmVybG9hZHMgYW5kIGR1ZSB0byB0aGUgU2lnbmF0dXJlTGV2ZWwgc2V0dGluZyAoTm9uZSksIHRoZSBvdmVybG9hZCBzaWduYXR1cmUgaXMgbm90IGJlaW5nIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuIFRoaXMgbWF5IHJlc3VsdCBpbiBhbWJpZ3VvdXMgZnVuY3Rpb24gcmVzb2x1dGlvbiBhdCBydW50aW1lLCBjb25zaWRlciBzZXR0aW5nIHRoZSBTaWduYXR1cmVMZXZlbCB0byBPdmVybG9hZHMgb3IgQWxsIHRvIGVuc3VyZSB0aGF0IHRoZSBvdXRwdXQgaW5jbHVkZXMgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byBzdXBwb3J0IGNvcnJlY3Qgb3ZlcmxvYWQgc2VsZWN0aW9uIGF0IHJ1bnRpbWUuIiBlcnJvclR5cGU9InNlbWFudGljIiBlcnJvclNldmVyaXR5PSJ3YXJuaW5nIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUVycm9yIi8+CiAgIDxhbm5vdGF0aW9uIG1lc3NhZ2U9IlRoZSBmdW5jdGlvbiBGSElSSGVscGVycy5Ub1N0cmluZyBoYXMgbXVsdGlwbGUgb3ZlcmxvYWRzIGFuZCBkdWUgdG8gdGhlIFNpZ25hdHVyZUxldmVsIHNldHRpbmcgKE5vbmUpLCB0aGUgb3ZlcmxvYWQgc2lnbmF0dXJlIGlzIG5vdCBiZWluZyBpbmNsdWRlZCBpbiB0aGUgb3V0cHV0LiBUaGlzIG1heSByZXN1bHQgaW4gYW1iaWd1b3VzIGZ1bmN0aW9uIHJlc29sdXRpb24gYXQgcnVudGltZSwgY29uc2lkZXIgc2V0dGluZyB0aGUgU2lnbmF0dXJlTGV2ZWwgdG8gT3ZlcmxvYWRzIG9yIEFsbCB0byBlbnN1cmUgdGhhdCB0aGUgb3V0cHV0IGluY2x1ZGVzIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gdG8gc3VwcG9ydCBjb3JyZWN0IG92ZXJsb2FkIHNlbGVjdGlvbiBhdCBydW50aW1lLiIgZXJyb3JUeXBlPSJzZW1hbnRpYyIgZXJyb3JTZXZlcml0eT0id2FybmluZyIgeHNpOnR5cGU9ImE6Q3FsVG9FbG1FcnJvciIvPgogICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgPGE6cyByPSI2MCI+CiAgICAgICAgIDxhOnM+LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuMjUgTG9naWMKICogUmVmIE5vOiBIVFMuOAogKiBTaG9ydCBOYW1lOiBISVYgcmV0ZXN0aW5nIGNvdmVyYWdlCiAqCiAqIERlZmluaXRpb246ICUgb2YgcGVvcGxlIHRlc3RpbmcgSElWLW5lZ2F0aXZlIHdobyB0ZXN0ZWQgYWdhaW4gd2l0aGluIGEgZGVmaW5lZCBwZXJpb2Qgb2YgdGltZSBhZnRlciB0aGVpciBwcmV2aW91cyB0ZXN0CiAqCiAqIE51bWVyYXRvcjogTnVtYmVyIG9mIGluZGl2aWR1YWxzIHdobyB0ZXN0ZWQgSElWLW5lZ2F0aXZlIGFzc2Vzc2VkIHRvIGJlIGF0IGVsZXZhdGVkIHJpc2sgZm9yIEhJViBhY3F1aXNpdGlvbiB3aG8gaGFkIGFub3RoZXIgSElWIHRlc3Qgd2l0aGluIGEgZGVmaW5lZCBwZXJpb2QgYWZ0ZXIgcHJldmlvdXMgdGVzdC4KICogTnVtZXJhdG9yIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBjbGllbnRzIHdpdGggJnF1b3Q7QXQgZWxldmF0ZWQgcmlzayBmb3IgSElWIGFjcXVpc2l0aW9uJnF1b3Q7PVRydWUgQU5EIHdpdGggYSBzZWNvbmQgJnF1b3Q7SElWIHRlc3QgZGF0ZSZxdW90OyB3aXRoaW4gZml4ZWQgcGVyaW9kIGFmdGVyICZxdW90O0hJViB0ZXN0IGRhdGUmcXVvdDsgaW4gdGhlIHJlcG9ydGluZyBwZXJpb2Qgd2l0aCAmcXVvdDtISVYgdGVzdCByZXN1bHQmcXVvdDs9J0hJVi1uZWdhdGl2ZScKICogTnVtZXJhdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEZW5vbWluYXRvcjogTnVtYmVyIG9mIHBlb3BsZSBhc3Nlc3NlZCBhcyBiZWluZyBhdCBlbGV2YXRlZCByaXNrIGZvciBISVYgYWNxdWlzaXRpb24gKGluY2x1ZGVzIHBlb3BsZSByZXF1ZXN0aW5nL3JlY2VpdmluZyBhbnkgSElWIHByZXZlbnRpb24gaW50ZXJ2ZW50aW9uLCBwZW9wbGUgZnJvbSBrZXkgcG9wdWxhdGlvbnMsIHBlb3BsZSB3aXRoIGtub3duIHJpc2sgZmFjdG9ycyBvciB0aG9zZSBhc3Nlc3NlZCBhcyBiZWluZyBhdCByaXNrIG9mIEhJViBhY3F1aXNpdGlvbikgd2hvIHJlY2VpdmVkIGFuIEhJVi1uZWdhdGl2ZSB0ZXN0IHJlc3VsdCBpbiB0aGUgcmVwb3J0aW5nIHBlcmlvZC4KICogRGVub21pbmF0b3IgQ2FsY3VsYXRpb246IENPVU5UIG9mIGNsaWVudHMgd2l0aCAmcXVvdDtBdCBlbGV2YXRlZCByaXNrIGZvciBISVYgYWNxdWlzaXRpb24mcXVvdDs9VHJ1ZSBBTkQgd2l0aCBhbiAmcXVvdDtISVYgdGVzdCBkYXRlJnF1b3Q7IGluIHRoZSByZXBvcnRpbmcgcGVyaW9kIHdpdGggJnF1b3Q7SElWIHRlc3QgcmVzdWx0JnF1b3Q7PSdISVYtbmVnYXRpdmUnCiAqIERlbm9taW5hdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEaXNhZ2dyZWdhdGlvbnM6CiAqIOKAoiBHZW5kZXIgKGZlbWFsZSwgbWFsZSwgb3RoZXIqKSAKICogIOKAoiBBZ2UgKCZsdDsxNSwgMTXigJMxOSwgMjDigJMyNCwgMjXigJM0OSwgNTArIHllYXJzKSoqIAogKiAg4oCiIEtleSBwb3B1bGF0aW9ucyAobWVuIHdobyBoYXZlIHNleCB3aXRoIG1lbiwgcGVvcGxlIGxpdmluZyBpbiBwcmlzb25zIGFuZCBvdGhlciBjbG9zZWQgc2V0dGluZ3MsIHBlb3BsZSB3aG8gaW5qZWN0IGRydWdzLCBzZXggd29ya2VycywgdHJhbnMgYW5kIGdlbmRlciBkaXZlcnNlIHBlb3BsZSkqKiogCiAqICDigKIgUHJvdmlkZXIgdHlwZSAoa2V5IHBvcHVsYXRpb24tbGVkIG9yIGNvbW11bml0eS1sZWQgb3JnYW5pemF0aW9uLCBwdWJsaWMgc2VjdG9yIHByb3ZpZGVyLCBvdGhlciBlbnRpdGllcyBzdWNoIGFzIHByaXZhdGUgZm9yLXByb2ZpdCBhbmQgbm90LWZvci1wcm9maXQgb3JnYW5pemF0aW9ucywgaW5jbHVkaW5nIGZhaXRoLWJhc2VkLCBpbnRlcm5hdGlvbmFsLCBub25nb3Zlcm5tZW50YWwpIAogKiAg4oCiwqBDaXRpZXMgYW5kIG90aGVyIGFkbWluaXN0cmF0aXZlIHJlZ2lvbnMgb2YgZXBpZGVtaW9sb2dpYyBpbXBvcnRhbmNlCiAqCiAqIERpc2FnZ3JlZ2F0aW9uIEVsZW1lbnRzOiBHZW5kZXIgfCBBZ2UgfCBLZXkgcG9wdWxhdGlvbiBtZW1iZXIgdHlwZQogKgogKiBOdW1lcmF0b3IgYW5kIERlbm9taW5hdG9yIEVsZW1lbnRzOgogKiBBdCBlbGV2YXRlZCByaXNrIGZvciBISVYgYWNxdWlzaXRpb24gCiAqICBISVYgdGVzdCBkYXRlIAogKiAgSElWIHRlc3QgcmVzdWx0CiAqCiAqIFJlZmVyZW5jZTogQ29uc29saWRhdGVkIGd1aWRlbGluZXMgb24gcGVyc29uLWNlbnRyZWQgSElWIHN0cmF0ZWdpYyBpbmZvcm1hdGlvbjogc3RyZW5ndGhlbmluZyByb3V0aW5lIGRhdGEgZm9yIGltcGFjdC4gR2VuZXZhOiBXb3JsZCBIZWFsdGggT3JnYW5pemF0aW9uOyAyMDIyCiAqIAogKiBEYXRhIENvbmNlcHRzOgogKiBISVYuQS5ERTE3OiBBZ2UgfCBDYWxjdWxhdGVkIGFnZSAobnVtYmVyIG9mIHllYXJzKSBvZiB0aGUgY2xpZW50IGJhc2VkIG9uIGRhdGUgb2YgYmlydGgKICogSElWLkEuREUxODogR2VuZGVyKiB8IEdlbmRlciBvZiB0aGUgY2xpZW50KgogKiBISVYuQS5ERTE5OiBGZW1hbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyBmZW1hbGUKICogSElWLkEuREUyMDogTWFsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIG1hbGUKICogSElWLkEuREUyMTogVHJhbnNnZW5kZXIgbWFsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIHRyYW5zZ2VuZGVyIG1hbGUKICogSElWLkEuREUyMjogVHJhbnNnZW5kZXIgZmVtYWxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgdHJhbnNnZW5kZXIgZmVtYWxlCiAqIEhJVi5BLkRFMjM6IE90aGVyIHwgQWRkaXRpb25hbCBjYXRlZ29yeQogKiBISVYuQi5ERTUwOiBLZXkgcG9wdWxhdGlvbiBtZW1iZXIgdHlwZSogfCBUaGUgdHlwZSBvZiBrZXkgcG9wdWxhdGlvbiB0aGF0IHRoZSBjbGllbnQgaXMgaW5jbHVkZWQgaW4KICogSElWLkIuREU1MTogU2V4IHdvcmtlciB8IENsaWVudCBpcyBhIHNleCB3b3JrZXIKICogSElWLkIuREU1MjogTWVuIHdobyBoYXZlIHNleCB3aXRoIG1lbiB8IENsaWVudCBpcyBhIG1hbiB3aG8gaGFzIHNleCB3aXRoIG1lbgogKiBISVYuQi5ERTUzOiBUcmFucyBhbmQgZ2VuZGVyLWRpdmVyc2UgcGVvcGxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgdHJhbnMgYW5kIGdlbmRlci1kaXZlcnNlCiAqIEhJVi5CLkRFNTQ6IFBlb3BsZSB3aG8gaW5qZWN0IGRydWdzIHwgQ2xpZW50IGlzIGEgcGVyc29uIHdobyBpbmplY3RzIGRydWdzCiAqIEhJVi5CLkRFNTU6IFBlb3BsZSBsaXZpbmcgaW4gcHJpc29ucyBhbmQgb3RoZXIgY2xvc2VkIHNldHRpbmdzIHwgQ2xpZW50IGxpdmVzIGluIGEgcHJpc29uIG9yIGFub3RoZXIgY2xvc2VkIHNldHRpbmcKICogSElWLkIuREUxMTA6IEhJViB0ZXN0IGRhdGUgfCBEYXRlIG9mIHRoZSBISVYgdGVzdAogKiBISVYuQi5ERTExMTogSElWIHRlc3QgcmVzdWx0IHwgVGhlIHJlc3VsdCBmcm9tIEhJViB0ZXN0aW5nIGFmdGVyIGFwcGx5aW5nIHRoZSB0ZXN0aW5nIGFsZ29yaXRobQogKiBISVYuQi5ERTExMjogSElWLXBvc2l0aXZlIHwgVGVzdCByZXN1bHQgaXMgSElWLXBvc2l0aXZlCiAqIEhJVi5CLkRFMTEzOiBISVYtbmVnYXRpdmUgfCBUZXN0IHJlc3VsdCBpcyBISVYtbmVnYXRpdmUKICogSElWLkIuREUxMTQ6IEhJVi1pbmNvbmNsdXNpdmUgfCBUZXN0IHJlc3VsdCBpcyBISVYtaW5jb25jbHVzaXZlCiAqIEhJVi5CLkRFMjI1OiBBdCBlbGV2YXRlZCByaXNrIGZvciBISVYgYWNxdWlzaXRpb24gfCBDbGllbnQgaXMgYXQgZWxldmF0ZWQgcmlzayBmb3IgSElWIGFjcXVpc2l0aW9uCiAqIEhJVi5FLkRFMTE0OiBLZXkgcG9wdWxhdGlvbiBtZW1iZXIgdHlwZSogfCBUaGUgdHlwZSBvZiBrZXkgcG9wdWxhdGlvbiB0aGF0IHRoZSBpbmZhbnQncyBtb3RoZXIgaXMgaW5jbHVkZWQgaW4KICogSElWLkUuREUxMTU6IFNleCB3b3JrZXIgfCBJbmZhbnQncyBtb3RoZXIgaXMgYSBzZXggd29ya2VyCiAqIEhJVi5FLkRFMTE2OiBQZW9wbGUgd2hvIGluamVjdCBkcnVncyB8IEluZmFudCdzIG1vdGhlciBpcyBhIHBlcnNvbiB3aG8gaW5qZWN0cyBkcnVncwogKiBISVYuRS5ERTExNzogVHJhbnMgYW5kIGdlbmRlci1kaXZlcnNlIHBlb3BsZSB8IEluZmFudCdzIG1vdGhlciBpZGVudGlmaWVzIGFzIHRyYW5zIGFuZCBnZW5kZXItZGl2ZXJzZQogKiBISVYuRS5ERTExODogUGVvcGxlIGxpdmluZyBpbiBwcmlzb25zIGFuZCBvdGhlciBjbG9zZWQgc2V0dGluZyB8IEluZmFudCdzIG1vdGhlciBpcyBpbiBhIHByaXNvbiBvciBjbG9zZWQgc2V0dGluZwogKiBISVYuRS5ERTIyNDogSElWIHRlc3QgZGF0ZSB8IERhdGUgb2YgdGhlIEhJViB0ZXN0CiAqIEhJVi5QUlYuREUxOiBBdCBlbGV2YXRlZCByaXNrIGZvciBISVYgYWNxdWlzaXRpb24gfCBDbGllbnQgaXMgYXQgZWxldmF0ZWQgcmlzayBmb3IgSElWIGFjcXVpc2l0aW9uLCBkZWZpbmVkIGFjY29yZGluZyB0byBjb3VudHJ5L3Byb2dyYW1tZSBjb250ZXh0CiAqIEhJVi5TUlYuREUxOiBISVYgdGVzdCBkYXRlIHwgRGF0ZSBvZiB0aGUgSElWIHRlc3QKICogSElWLlNSVi5ERTI6IEhJViB0ZXN0IHJlc3VsdCB8IFRoZSByZXN1bHQgZnJvbSBISVYgdGVzdGluZyBhZnRlciBhcHBseWluZyB0aGUgdGVzdGluZyBhbGdvcml0aG0KICoKICogQWRkaXRpb25hbCBDb250ZXh0CiAqIC0gd2hhdCBpdCBtZWFzdXJlczogVGhpcyBpbmRpY2F0b3IgbWVhc3VyZXMgdGhlIHJhdGUgb2YgcmV0ZXN0aW5nIGZvciBISVYgYW1vbmcgdGhvc2UgYXQgb25nb2luZyByaXNrIG9mIEhJViBhY3F1aXNpdGlvbi4KICogLSByYXRpb25hbGU6IEZvciB0aG9zZSBpbmRpdmlkdWFscyB3aG8gdGVzdCBuZWdhdGl2ZSBmb3IgSElWIGJ1dCBhcmUgYXQgb25nb2luZyByaXNrIG9mIEhJViBhY3F1aXNpdGlvbiwgcmV0ZXN0aW5nIGlzIGVuY291cmFnZWQuIFRoZSByZWNvbW1lbmRlZCBmcmVxdWVuY3kgb2YgcmUtdGVzdGluZyB3aWxsIGRpZmZlciBmb3IgZGlmZmVyZW50IGdyb3VwcyBpbiBkaWZmZXJlbnQgc2V0dGluZ3MuIFRoZSBsZXZlbCBvZiByZXRlc3RpbmcgZXhhbWluZWQgYnkgdGhpcyBpbmRpY2F0b3Igc2hvdWxkIGFsaWduZWQgd2l0aCBuYXRpb25hbCByZWNvbW1lbmRhdGlvbnMuCiAqIC0gbWV0aG9kOiBJbmRpdmlkdWFsLWxldmVsIGRhdGEgb2J0YWluZWQgZnJvbSBwcm9ncmFtbWUgcmVjb3JkcwogKiAKICogU3VnZ2VzdGVkIFNjb3JpbmcgTWV0aG9kOiBwcm9wb3J0aW9uIHwgaHR0cDovL2hsNy5vcmcvZmhpci91cy9jcWZtZWFzdXJlcy9TdHJ1Y3R1cmVEZWZpbml0aW9uL3Byb3BvcnRpb24tbWVhc3VyZS1jcWZtCiAqLwoKbGlicmFyeSBISVZJTkQyNUxvZ2ljPC9hOnM+CiAgICAgIDwvYTpzPgogICA8L2Fubm90YXRpb24+CiAgIDxpZGVudGlmaWVyIGlkPSJISVZJTkQyNUxvZ2ljIiBzeXN0ZW09Imh0dHA6Ly9zbWFydC53aG8uaW50L2hpdiIvPgogICA8c2NoZW1hSWRlbnRpZmllciBpZD0idXJuOmhsNy1vcmc6ZWxtIiB2ZXJzaW9uPSJyMSIvPgogICA8dXNpbmdzPgogICAgICA8ZGVmIGxvY2FsSWRlbnRpZmllcj0iU3lzdGVtIiB1cmk9InVybjpobDctb3JnOmVsbS10eXBlczpyMSIvPgogICAgICA8ZGVmIGxvY2FsSWQ9IjEiIGxvY2F0b3I9IjczOjEtNzM6MjYiIGxvY2FsSWRlbnRpZmllcj0iRkhJUiIgdXJpPSJodHRwOi8vaGw3Lm9yZy9maGlyIiB2ZXJzaW9uPSI0LjAuMSI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjEiPgogICAgICAgICAgICAgICA8YTpzPi8vIEluY2x1ZGVkIExpYnJhcmllcwp1c2luZyA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiB2ZXJzaW9uICc0LjAuMSc8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgPC9kZWY+CiAgIDwvdXNpbmdzPgogICA8aW5jbHVkZXM+CiAgICAgIDxkZWYgbG9jYWxJZD0iMiIgbG9jYXRvcj0iNzU6MS03NTo0NCIgbG9jYWxJZGVudGlmaWVyPSJISUMiIHBhdGg9Imh0dHA6Ly9zbWFydC53aG8uaW50L2hpdi9ISVZDb21tb24iIHZlcnNpb249IjAuMC4xIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMiI+CiAgICAgICAgICAgICAgIDxhOnM+aW5jbHVkZSA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgPGE6cz5ISVZDb21tb248L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+IHZlcnNpb24gJzAuMC4xJyBjYWxsZWQgSElDPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjMiIGxvY2F0b3I9Ijc2OjEtNzY6MzUiIGxvY2FsSWRlbnRpZmllcj0iRkhJUkhlbHBlcnMiIHBhdGg9Imh0dHA6Ly9obDcub3JnL2ZoaXIvRkhJUkhlbHBlcnMiIHZlcnNpb249IjQuMC4xIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMyI+CiAgICAgICAgICAgICAgIDxhOnM+aW5jbHVkZSA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSSGVscGVyczwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4gdmVyc2lvbiAnNC4wLjEnPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjQiIGxvY2F0b3I9Ijc3OjEtNzc6MjkiIGxvY2FsSWRlbnRpZmllcj0iV0NvbSIgcGF0aD0iaHR0cDovL3NtYXJ0Lndoby5pbnQvaGl2L1dIT0NvbW1vbiI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjQiPgogICAgICAgICAgICAgICA8YTpzPmluY2x1ZGUgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+V0hPQ29tbW9uPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiBjYWxsZWQgV0NvbTwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSI1IiBsb2NhdG9yPSI3ODoxLTc4OjMxIiBsb2NhbElkZW50aWZpZXI9IkNvbmZpZyIgcGF0aD0iaHR0cDovL3NtYXJ0Lndoby5pbnQvaGl2L0hJVkNvbmZpZyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjUiPgogICAgICAgICAgICAgICA8YTpzPmluY2x1ZGUgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+SElWQ29uZmlnPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiBjYWxsZWQgQ29uZmlnPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjYiIGxvY2F0b3I9Ijc5OjEtNzk6MjkiIGxvY2FsSWRlbnRpZmllcj0iSEUiIHBhdGg9Imh0dHA6Ly9zbWFydC53aG8uaW50L2hpdi9ISVZFbGVtZW50cyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjYiPgogICAgICAgICAgICAgICA8YTpzPmluY2x1ZGUgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+SElWRWxlbWVudHM8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+IGNhbGxlZCBIRTwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSI3IiBsb2NhdG9yPSI4MDoxLTgwOjM5IiBsb2NhbElkZW50aWZpZXI9IkhJRSIgcGF0aD0iaHR0cDovL3NtYXJ0Lndoby5pbnQvaGl2L0hJVkluZGljYXRvckVsZW1lbnRzIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iNyI+CiAgICAgICAgICAgICAgIDxhOnM+aW5jbHVkZSA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgPGE6cz5ISVZJbmRpY2F0b3JFbGVtZW50czwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4gY2FsbGVkIEhJRTwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICA8L2RlZj4KICAgPC9pbmNsdWRlcz4KICAgPHBhcmFtZXRlcnM+CiAgICAgIDxkZWYgbG9jYWxJZD0iMTMiIGxvY2F0b3I9IjgzOjEtODM6ODgiIG5hbWU9Ik1lYXN1cmVtZW50IFBlcmlvZCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjEzIj4KICAgICAgICAgICAgICAgPGE6cz4vLyBJbmRpY2F0b3IgRGVmaW5pdGlvbgpwYXJhbWV0ZXIgJnF1b3Q7TWVhc3VyZW1lbnQgUGVyaW9kJnF1b3Q7IDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjEyIj4KICAgICAgICAgICAgICAgICAgPGE6cz5JbnRlcnZhbCZsdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMSI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+RGF0ZTwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cz4+PC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiBkZWZhdWx0IDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjEwIj4KICAgICAgICAgICAgICAgICAgPGE6cyByPSI4Ij5JbnRlcnZhbFtAMjAyMy0wMS0wMSwgQDIwMjMtMDEtMzBdPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZGVmYXVsdCBsb2NhbElkPSIxMCIgbG9jYXRvcj0iODM6NTUtODM6ODgiIGxvd0Nsb3NlZD0idHJ1ZSIgaGlnaENsb3NlZD0idHJ1ZSIgeHNpOnR5cGU9IkludGVydmFsIj4KICAgICAgICAgICAgPGxvdyBsb2NhbElkPSI4IiBsb2NhdG9yPSI4Mzo2NC04Mzo3NCIgeHNpOnR5cGU9IkRhdGUiPgogICAgICAgICAgICAgICA8eWVhciB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjIwMjMiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgIDxtb250aCB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjEiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgIDxkYXkgdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSIxIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICA8L2xvdz4KICAgICAgICAgICAgPGhpZ2ggbG9jYWxJZD0iOSIgbG9jYXRvcj0iODM6NzctODM6ODciIHhzaTp0eXBlPSJEYXRlIj4KICAgICAgICAgICAgICAgPHllYXIgdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSIyMDIzIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICA8bW9udGggdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSIxIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICA8ZGF5IHZhbHVlVHlwZT0idDpJbnRlZ2VyIiB2YWx1ZT0iMzAiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgIDwvaGlnaD4KICAgICAgICAgPC9kZWZhdWx0PgogICAgICAgICA8cGFyYW1ldGVyVHlwZVNwZWNpZmllciBsb2NhbElkPSIxMiIgbG9jYXRvcj0iODM6MzItODM6NDUiIHhzaTp0eXBlPSJJbnRlcnZhbFR5cGVTcGVjaWZpZXIiPgogICAgICAgICAgICA8cG9pbnRUeXBlIGxvY2FsSWQ9IjExIiBsb2NhdG9yPSI4Mzo0MS04Mzo0NCIgbmFtZT0idDpEYXRlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgIDwvcGFyYW1ldGVyVHlwZVNwZWNpZmllcj4KICAgICAgPC9kZWY+CiAgIDwvcGFyYW1ldGVycz4KICAgPGNvbnRleHRzPgogICAgICA8ZGVmIGxvY2F0b3I9Ijg1OjEtODU6MTUiIG5hbWU9IlBhdGllbnQiLz4KICAgPC9jb250ZXh0cz4KICAgPHN0YXRlbWVudHM+CiAgICAgIDxkZWYgbG9jYXRvcj0iODU6MS04NToxNSIgbmFtZT0iUGF0aWVudCIgY29udGV4dD0iUGF0aWVudCI+CiAgICAgICAgIDxleHByZXNzaW9uIHhzaTp0eXBlPSJTaW5nbGV0b25Gcm9tIj4KICAgICAgICAgICAgPG9wZXJhbmQgbG9jYXRvcj0iODU6MS04NToxNSIgZGF0YVR5cGU9ImZoaXI6UGF0aWVudCIgdGVtcGxhdGVJZD0iaHR0cDovL2hsNy5vcmcvZmhpci9TdHJ1Y3R1cmVEZWZpbml0aW9uL1BhdGllbnQiIHhzaTp0eXBlPSJSZXRyaWV2ZSIvPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjE1IiBsb2NhdG9yPSI5MjoxLTkzOjYiIG5hbWU9IkluaXRpYWwgUG9wdWxhdGlvbiIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjE1Ij4KICAgICAgICAgICAgICAgPGE6cyByPSIxNCI+LyogUG9wdWxhdGlvbnMgKi8KCi8qCiAqSW5pdGlhbCBQb3B1bGF0aW9uCiAqLwoKZGVmaW5lICZxdW90O0luaXRpYWwgUG9wdWxhdGlvbiZxdW90OzoKICB0cnVlPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjE0IiBsb2NhdG9yPSI5MzozLTkzOjYiIHZhbHVlVHlwZT0idDpCb29sZWFuIiB2YWx1ZT0idHJ1ZSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iMTkiIGxvY2F0b3I9IjEwMjoxLTEwMzo1NiIgbmFtZT0iTnVtZXJhdG9yIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMTkiPgogICAgICAgICAgICAgICA8YTpzPi8qKgogKiBOdW1lcmF0b3IKICogCiAqIERlZmluaXRpb246IE51bWJlciBvZiBpbmRpdmlkdWFscyB3aG8gdGVzdGVkIEhJVi1uZWdhdGl2ZSBhc3Nlc3NlZCB0byBiZSBhdCBlbGV2YXRlZCByaXNrIGZvciBISVYgYWNxdWlzaXRpb24gd2hvIGhhZCBhbm90aGVyIEhJViB0ZXN0IHdpdGhpbiBhIGRlZmluZWQgcGVyaW9kIGFmdGVyIHByZXZpb3VzIHRlc3QuCiAqIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBjbGllbnRzIHdpdGggJnF1b3Q7QXQgZWxldmF0ZWQgcmlzayBmb3IgSElWIGFjcXVpc2l0aW9uJnF1b3Q7PVRydWUgQU5EIHdpdGggYSBzZWNvbmQgJnF1b3Q7SElWIHRlc3QgZGF0ZSZxdW90OyB3aXRoaW4gZml4ZWQgcGVyaW9kIGFmdGVyICZxdW90O0hJViB0ZXN0IGRhdGUmcXVvdDsgaW4gdGhlIHJlcG9ydGluZyBwZXJpb2Qgd2l0aCAmcXVvdDtISVYgdGVzdCByZXN1bHQmcXVvdDs9J0hJVi1uZWdhdGl2ZScKICovCgpkZWZpbmUgJnF1b3Q7TnVtZXJhdG9yJnF1b3Q7OgogIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjE4Ij4KICAgICAgICAgICAgICAgICAgPGE6cz5leGlzdHM8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIxNyI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+KDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjE3Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+SElFPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxNyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7TmVnYXRpdmUgVGVzdHMgYWZ0ZXIgRmlyc3QgTmVnYXRpdmUgVGVzdCZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+KTwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjE4IiBsb2NhdG9yPSIxMDM6My0xMDM6NTYiIHhzaTp0eXBlPSJFeGlzdHMiPgogICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIxNyIgbG9jYXRvcj0iMTAzOjktMTAzOjU2IiBuYW1lPSJOZWdhdGl2ZSBUZXN0cyBhZnRlciBGaXJzdCBOZWdhdGl2ZSBUZXN0IiBsaWJyYXJ5TmFtZT0iSElFIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjIzIiBsb2NhdG9yPSIxMTM6MS0xMTQ6NTYiIG5hbWU9IkRlbm9taW5hdG9yIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMjMiPgogICAgICAgICAgICAgICA8YTpzPi8qKgogKiBEZW5vbWluYXRvcgogKgogKiBEZWZpbml0aW9uOiBOdW1iZXIgb2YgcGVvcGxlIGFzc2Vzc2VkIGFzIGJlaW5nIGF0IGVsZXZhdGVkIHJpc2sgZm9yIEhJViBhY3F1aXNpdGlvbiAoaW5jbHVkZXMgcGVvcGxlIHJlcXVlc3RpbmcvcmVjZWl2aW5nIGFueSBISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24sIHBlb3BsZSBmcm9tIGtleSBwb3B1bGF0aW9ucywgcGVvcGxlIHdpdGgga25vd24gcmlzayBmYWN0b3JzIG9yIHRob3NlIGFzc2Vzc2VkIGFzIGJlaW5nIGF0IHJpc2sgb2YgSElWIGFjcXVpc2l0aW9uKSB3aG8gcmVjZWl2ZWQgYW4gSElWLW5lZ2F0aXZlIHRlc3QgcmVzdWx0IGluIHRoZSByZXBvcnRpbmcgcGVyaW9kLgogKiBDYWxjdWxhdGlvbjogQ09VTlQgb2YgY2xpZW50cyB3aXRoICZxdW90O0F0IGVsZXZhdGVkIHJpc2sgZm9yIEhJViBhY3F1aXNpdGlvbiZxdW90Oz1UcnVlIEFORCB3aXRoIGFuICZxdW90O0hJViB0ZXN0IGRhdGUmcXVvdDsgaW4gdGhlIHJlcG9ydGluZyBwZXJpb2Qgd2l0aCAmcXVvdDtISVYgdGVzdCByZXN1bHQmcXVvdDs9J0hJVi1uZWdhdGl2ZScKICovCgpkZWZpbmUgJnF1b3Q7RGVub21pbmF0b3ImcXVvdDs6CiAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnMgcj0iMjIiPgogICAgICAgICAgICAgICAgICA8YTpzPmV4aXN0czwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjIxIj4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4oPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjEiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5ISUU8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtOZWdhdGl2ZSBUZXN0cyB3aXRoaW4gTWVhc3VyZW1lbnQgUGVyaW9kJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4pPC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMjIiIGxvY2F0b3I9IjExNDozLTExNDo1NiIgeHNpOnR5cGU9IkV4aXN0cyI+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjIxIiBsb2NhdG9yPSIxMTQ6OS0xMTQ6NTYiIG5hbWU9Ik5lZ2F0aXZlIFRlc3RzIHdpdGhpbiBNZWFzdXJlbWVudCBQZXJpb2QiIGxpYnJhcnlOYW1lPSJISUUiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iMjYiIGxvY2F0b3I9IjEyNDoxLTEyNTo0MiIgbmFtZT0iQWRtaW5pc3RyYXRpdmUgR2VuZGVyIFN0cmF0aWZpZXIiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIyNiI+CiAgICAgICAgICAgICAgIDxhOnM+LyogZW5kIFBvcHVsYXRpb25zICovCgoKLyoKICogRGlzYWdncmVnYXRvcnMKICovCgpkZWZpbmUgJnF1b3Q7QWRtaW5pc3RyYXRpdmUgR2VuZGVyIFN0cmF0aWZpZXImcXVvdDs6Cgk8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIyNSI+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjQiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPkhJRTwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjUiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O0J5IEFkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMjUiIGxvY2F0b3I9IjEyNToyLTEyNTo0MiIgbmFtZT0iQnkgQWRtaW5pc3RyYXRpdmUgR2VuZGVyIFN0cmF0aWZpZXIiIGxpYnJhcnlOYW1lPSJISUUiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjI5IiBsb2NhdG9yPSIxMjc6MS0xMjg6MjYiIG5hbWU9IkFnZSBTdHJhdGlmaWVyIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMjkiPgogICAgICAgICAgICAgICA8YTpzPmRlZmluZSAmcXVvdDtBZ2UgU3RyYXRpZmllciZxdW90OzoKCTwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjI4Ij4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNyI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+SElFPC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIyOCI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7QnkgQWdlIFN0cmF0aWZpZXIgMiZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjI4IiBsb2NhdG9yPSIxMjg6Mi0xMjg6MjYiIG5hbWU9IkJ5IEFnZSBTdHJhdGlmaWVyIDIiIGxpYnJhcnlOYW1lPSJISUUiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjMyIiBsb2NhdG9yPSIxMzA6MS0xMzE6MzgiIG5hbWU9Ikdlb2dyYXBoaWMgUmVnaW9uIFN0cmF0aWZpZXIiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIzMiI+CiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lICZxdW90O0dlb2dyYXBoaWMgUmVnaW9uIFN0cmF0aWZpZXImcXVvdDs6Cgk8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIzMSI+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzAiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPkhJRTwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzEiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O0J5IEdlb2dyYXBoaWMgUmVnaW9uIFN0cmF0aWZpZXImcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIzMSIgbG9jYXRvcj0iMTMxOjItMTMxOjM4IiBuYW1lPSJCeSBHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyIiBsaWJyYXJ5TmFtZT0iSElFIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIzNSIgbG9jYXRvcj0iMTMzOjEtMTM0OjIwIiBuYW1lPSJwYXRpZW50R3JvdXBzIFN0cmF0aWZpZXIiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIzNSI+CiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lICZxdW90O3BhdGllbnRHcm91cHMgU3RyYXRpZmllciZxdW90OzoKCTwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjM0Ij4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMyI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+SElFPC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzNCI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7cGF0aWVudEdyb3VwcyZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjM0IiBsb2NhdG9yPSIxMzQ6Mi0xMzQ6MjAiIG5hbWU9InBhdGllbnRHcm91cHMiIGxpYnJhcnlOYW1lPSJISUUiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjYwIiBsb2NhdG9yPSIxMzY6MS0xNDE6MzMiIG5hbWU9IlN0cmF0aWZpY2F0aW9uIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iNjAiPgogICAgICAgICAgICAgICA8YTpzPmRlZmluZSAmcXVvdDtTdHJhdGlmaWNhdGlvbiZxdW90OzoKIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjU5Ij4KICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NCI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTEiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0NiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjM2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5ISUU8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjM3Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtCeSBBZG1pbmlzdHJhdGl2ZSBHZW5kZXIgU3RyYXRpZmllciZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjM4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5jb2RlPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4gCiArIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjM5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4nOic8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiArIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0MiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPkhJRTwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O0hJViBzdGF0dXMgb2YgcGFydG5lciBvciBjb250YWN0JnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPmNvZGU8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4KICArIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4nOic8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiArIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0NyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+SElFPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0OCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7QnkgQWdlIFN0cmF0aWZpZXIgMiZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPgorIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjUwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4nOic8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzPiArIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjUzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1MiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+SElFPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1MyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7QnkgR2VvZ3JhcGhpYyBSZWdpb24gU3RyYXRpZmllciZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzPgorIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjU4Ij4KICAgICAgICAgICAgICAgICAgICAgPGE6cz5Db21iaW5lKDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjU2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+SElFPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+cGF0aWVudEdyb3VwczwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LCA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JzonPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzPik8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI1OSIgbG9jYXRvcj0iMTM3OjItMTQxOjMzIiB4c2k6dHlwZT0iQ29uY2F0ZW5hdGUiPgogICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI1NCIgbG9jYXRvcj0iMTM3OjItMTQwOjQ1IiB4c2k6dHlwZT0iQ29uY2F0ZW5hdGUiPgogICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI1MSIgbG9jYXRvcj0iMTM3OjItMTQwOjUiIHhzaTp0eXBlPSJDb25jYXRlbmF0ZSI+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjQ5IiBsb2NhdG9yPSIxMzc6Mi0xMzk6MzUiIHhzaTp0eXBlPSJDb25jYXRlbmF0ZSI+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjQ2IiBsb2NhdG9yPSIxMzc6Mi0xMzk6NyIgeHNpOnR5cGU9IkNvbmNhdGVuYXRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNDQiIGxvY2F0b3I9IjEzNzoyLTEzODo1MiIgeHNpOnR5cGU9IkNvbmNhdGVuYXRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNDAiIGxvY2F0b3I9IjEzNzoyLTEzODo2IiB4c2k6dHlwZT0iQ29uY2F0ZW5hdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIzOCIgbG9jYXRvcj0iMTM3OjItMTM3OjQ3IiBwYXRoPSJjb2RlIiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjM3IiBsb2NhdG9yPSIxMzc6Mi0xMzc6NDIiIG5hbWU9IkJ5IEFkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyIiBsaWJyYXJ5TmFtZT0iSElFIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjM5IiBsb2NhdG9yPSIxMzg6NC0xMzg6NiIgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9IjoiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNDMiIGxvY2F0b3I9IjEzODoxMC0xMzg6NTIiIHBhdGg9ImNvZGUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNDIiIGxvY2F0b3I9IjEzODoxMC0xMzg6NDciIG5hbWU9IkhJViBzdGF0dXMgb2YgcGFydG5lciBvciBjb250YWN0IiBsaWJyYXJ5TmFtZT0iSElFIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNDUiIGxvY2F0b3I9IjEzOTo1LTEzOTo3IiB2YWx1ZVR5cGU9InQ6U3RyaW5nIiB2YWx1ZT0iOiIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI0OCIgbG9jYXRvcj0iMTM5OjExLTEzOTozNSIgbmFtZT0iQnkgQWdlIFN0cmF0aWZpZXIgMiIgbGlicmFyeU5hbWU9IkhJRSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI1MCIgbG9jYXRvcj0iMTQwOjMtMTQwOjUiIHZhbHVlVHlwZT0idDpTdHJpbmciIHZhbHVlPSI6IiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlRvU3RyaW5nIiBsaWJyYXJ5TmFtZT0iRkhJUkhlbHBlcnMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjUzIiBsb2NhdG9yPSIxNDA6OS0xNDA6NDUiIG5hbWU9IkJ5IEdlb2dyYXBoaWMgUmVnaW9uIFN0cmF0aWZpZXIiIGxpYnJhcnlOYW1lPSJISUUiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI1OCIgbG9jYXRvcj0iMTQxOjMtMTQxOjMzIiB4c2k6dHlwZT0iQ29tYmluZSI+CiAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNTYiIGxvY2F0b3I9IjE0MToxMS0xNDE6MjciIG5hbWU9InBhdGllbnRHcm91cHMiIGxpYnJhcnlOYW1lPSJISUUiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgIDxzZXBhcmF0b3IgbG9jYWxJZD0iNTciIGxvY2F0b3I9IjE0MTozMC0xNDE6MzIiIHZhbHVlVHlwZT0idDpTdHJpbmciIHZhbHVlPSI6IiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgIDwvc3RhdGVtZW50cz4KPC9saWJyYXJ5Pgo="/>
  </content>
</Library>