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

Draft as of 2024-11-07

Raw xml | Download


<Library xmlns="http://hl7.org/fhir">
  <id value="HIVIND40Logic"/>
  <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 HIVIND40Logic</b></p><a name="HIVIND40Logic"> </a><a name="hcHIVIND40Logic"> </a><a name="HIVIND40Logic-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></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></table><h2>Contents</h2><p><code>text/cql</code></p><pre><code class="language-sql">/**
 * Library: HIV.IND.40 Logic
 * Ref No: VER.4
 * Short Name: ART coverage in pregnant women
 *
 * Definition: % of HIV-positive pregnant women who received ART during pregnancy and/or at labour and delivery
 *
 * Numerator: Number of HIV-positive pregnant women who delivered during the reporting period and received ART during pregnancy and/or at labour and delivery
 * Numerator Calculation: COUNT of women with &quot;HIV status&quot;='HIV-positive' AND &quot;Delivery date&quot; in the reporting period AND ((&quot;On ART&quot;=True at labour and delivery) OR (&quot;On ART&quot;=True during pregnancy, for this pregnancy))
 * Numerator Exclusions: 
 *
 * Denominator: a) Programme-based/service delivery denominator | Number of HIV-positive pregnant women who delivered during the reporting period and attended ANC or had a facility-based delivery | b) Population-based denominator | Number of HIV-positive pregnant women who delivered during the reporting period
 * Denominator Calculation: Programme-based/service delivery denominator: | COUNT of women with &quot;HIV status&quot;='HIV-positive' AND &quot;Delivery date&quot; in the reporting period AND (had an &quot;ANC contact date&quot; during reporting period OR &quot;Place of delivery&quot; was a 'Health facility') |  | Population-based denominator: | *Number of HIV-positive pregnant women who delivered during the reporting period
 * Denominator Exclusions: 
 *
 * Disaggregations:
 * Numerator: 
 *  • Timing of ART initiation (1. already on ART at first ANC visit, 2. newly on ART during pregnancy, 3. newly on ART during labour and delivery, 4. on non-recommended ART regimen) 
 *   
 *  The primary indicator calculation should include ART status categories 1, 2 and 3. Removing the women in category 1 &quot;already on ART at first ANC visit&quot; from the numerator and denominator gives a measure of ART coverage among HIV-positive pregnant women newly diagnosed during ANC. Dividing category 2 by the sum of categories 2 and 3 gives the proportion of new ART initiations occurring during pregnancy rather than at delivery. Calculating the indicator with those in category 4 (non-recommended ARV regimen) included in the numerator gives a broader measure, that is, coverage of HIV-positive pregnant women receiving any ARV drug.
 *
 * Disaggregation Elements: Timing of ART initiation
 *
 * Numerator and Denominator Elements:
 * ANC contact date 
 *  Delivery date 
 *  HIV status 
 *  On ART 
 *  Place of delivery
 *
 * Reference: Consolidated guidelines on person-centred HIV strategic information: strengthening routine data for impact. Geneva: World Health Organization; 2022
 * 
 * Data Concepts:
 * HIV.B.DE115: HIV status | HIV status reported after applying the national HIV testing algorithm. No single HIV test can provide an HIV-positive diagnosis.
 * HIV.B.DE116: HIV-positive | Client is HIV-positive
 * HIV.B.DE117: HIV-negative | Client is HIV-negative
 * HIV.B.DE118: Unknown | Client has unknown HIV status
 * HIV.D.DE38: On ART | Client is currently taking ART
 * HIV.E.DE41: Timing of ART initiation | When the pregnant woman or mother initiated ART, for women living with HIV.
 * HIV.E.DE42: Already on ART at first antenatal care visit | The pregnant woman was already on antiretroviral therapy (ART) at first antenatal care visit
 * HIV.E.DE43: Newly on ART during pregnancy | The pregnant woman started ART during her pregnancy
 * HIV.E.DE44: Newly on ART during labour and delivery | The woman started ART during labour and delivery
 * HIV.E.DE46: Delivery date | Date on which the woman delivered
 * HIV.E.DE67: Place of delivery | The type of place where the woman delivered
 * HIV.E.DE68: Health facility | The woman delivered at a health facility
 * HIV.E.DE69: Home | The woman delivered at home
 * HIV.E.DE70: Other | The woman delivered at another location that is not at home or at a health facility
 * HIV.E.DE85: ANC contact date | The date and time of the client's ANC contact (in the ANC DAK this is called 'Contact date')
 * HIV.H.DE47: On ART | Client is currently taking ART 
 * HIV.SRV.DE18: ANC contact date | The date and time of the client's ANC contact (in the ANC DAK this is called 'Contact date')
 *
 * Additional Context
 * - what it measures: This indicator measures whether a recommended course of ART has been provided to HIV-positive pregnant women.
 * - rationale: • Providing ART for HIV-positive pregnant women is a critical strategy for preventing vertical transmission of HIV. | • In an era of &quot;Treat All&quot;, all HIV-positive pregnant women should be given a recommended regimen of ART as soon as possible after diagnosis, including during labour and delivery.
 * - method: a) For the numerator and programme-based/service delivery denominator: Programme records (for example, PMTCT registers, ARV registers, labour and delivery registers) |  | b) For the population-based 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 HIVIND40Logic

// 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

// 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-positive pregnant women who delivered during the reporting period and received ART during pregnancy and/or at labour and delivery
 * Calculation: COUNT of women with &quot;HIV status&quot;='HIV-positive' AND &quot;Delivery date&quot; in the reporting period AND ((&quot;On ART&quot;=True at labour and delivery) OR (&quot;On ART&quot;=True during pregnancy, for this pregnancy))
 */

define &quot;Numerator&quot;:
  true


/**
 * Denominator
 *
 * Definition: a) Programme-based/service delivery denominator | Number of HIV-positive pregnant women who delivered during the reporting period and attended ANC or had a facility-based delivery | b) Population-based denominator | Number of HIV-positive pregnant women who delivered during the reporting period
 * Calculation: Programme-based/service delivery denominator: | COUNT of women with &quot;HIV status&quot;='HIV-positive' AND &quot;Delivery date&quot; in the reporting period AND (had an &quot;ANC contact date&quot; during reporting period OR &quot;Place of delivery&quot; was a 'Health facility') |  | Population-based denominator: | *Number of HIV-positive pregnant women who delivered during the reporting period
 */

define &quot;Denominator&quot;:
  true
    

/* end Populations */

</code></pre><p><code>Content not shown - (</code><code>application/elm+xml</code>, size = 12Kb )</p></div>
  </text>
  <extension
             url="http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability">
    <valueCode value="computable"/>
  </extension>
  <url value="http://smart.who.int/hiv/Library/HIVIND40Logic"/>
  <version value="0.3.0"/>
  <name value="HIVIND40Logic"/>
  <title value="HIV.IND.40 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 HIV-positive pregnant women who received ART during pregnancy and/or at labour and delivery"/>
  <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>
  <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>
  <content>
    <contentType value="text/cql"/>
    <data
          value="LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuNDAgTG9naWMKICogUmVmIE5vOiBWRVIuNAogKiBTaG9ydCBOYW1lOiBBUlQgY292ZXJhZ2UgaW4gcHJlZ25hbnQgd29tZW4KICoKICogRGVmaW5pdGlvbjogJSBvZiBISVYtcG9zaXRpdmUgcHJlZ25hbnQgd29tZW4gd2hvIHJlY2VpdmVkIEFSVCBkdXJpbmcgcHJlZ25hbmN5IGFuZC9vciBhdCBsYWJvdXIgYW5kIGRlbGl2ZXJ5CiAqCiAqIE51bWVyYXRvcjogTnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSBwcmVnbmFudCB3b21lbiB3aG8gZGVsaXZlcmVkIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZCBhbmQgcmVjZWl2ZWQgQVJUIGR1cmluZyBwcmVnbmFuY3kgYW5kL29yIGF0IGxhYm91ciBhbmQgZGVsaXZlcnkKICogTnVtZXJhdG9yIENhbGN1bGF0aW9uOiBDT1VOVCBvZiB3b21lbiB3aXRoICJISVYgc3RhdHVzIj0nSElWLXBvc2l0aXZlJyBBTkQgIkRlbGl2ZXJ5IGRhdGUiIGluIHRoZSByZXBvcnRpbmcgcGVyaW9kIEFORCAoKCJPbiBBUlQiPVRydWUgYXQgbGFib3VyIGFuZCBkZWxpdmVyeSkgT1IgKCJPbiBBUlQiPVRydWUgZHVyaW5nIHByZWduYW5jeSwgZm9yIHRoaXMgcHJlZ25hbmN5KSkKICogTnVtZXJhdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEZW5vbWluYXRvcjogYSkgUHJvZ3JhbW1lLWJhc2VkL3NlcnZpY2UgZGVsaXZlcnkgZGVub21pbmF0b3IgfCBOdW1iZXIgb2YgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIHdobyBkZWxpdmVyZWQgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kIGFuZCBhdHRlbmRlZCBBTkMgb3IgaGFkIGEgZmFjaWxpdHktYmFzZWQgZGVsaXZlcnkgfCBiKSBQb3B1bGF0aW9uLWJhc2VkIGRlbm9taW5hdG9yIHwgTnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSBwcmVnbmFudCB3b21lbiB3aG8gZGVsaXZlcmVkIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKiBEZW5vbWluYXRvciBDYWxjdWxhdGlvbjogUHJvZ3JhbW1lLWJhc2VkL3NlcnZpY2UgZGVsaXZlcnkgZGVub21pbmF0b3I6IHwgQ09VTlQgb2Ygd29tZW4gd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgQU5EICJEZWxpdmVyeSBkYXRlIiBpbiB0aGUgcmVwb3J0aW5nIHBlcmlvZCBBTkQgKGhhZCBhbiAiQU5DIGNvbnRhY3QgZGF0ZSIgZHVyaW5nIHJlcG9ydGluZyBwZXJpb2QgT1IgIlBsYWNlIG9mIGRlbGl2ZXJ5IiB3YXMgYSAnSGVhbHRoIGZhY2lsaXR5JykgfCAgfCBQb3B1bGF0aW9uLWJhc2VkIGRlbm9taW5hdG9yOiB8ICpOdW1iZXIgb2YgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIHdobyBkZWxpdmVyZWQgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqIERlbm9taW5hdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEaXNhZ2dyZWdhdGlvbnM6CiAqIE51bWVyYXRvcjogCiAqICDigKLCoFRpbWluZyBvZiBBUlQgaW5pdGlhdGlvbiAoMS4gYWxyZWFkeSBvbiBBUlQgYXQgZmlyc3QgQU5DIHZpc2l0LCAyLiBuZXdseSBvbiBBUlQgZHVyaW5nIHByZWduYW5jeSwgMy4gbmV3bHkgb24gQVJUIGR1cmluZyBsYWJvdXIgYW5kIGRlbGl2ZXJ5LCA0LiBvbiBub24tcmVjb21tZW5kZWQgQVJUIHJlZ2ltZW4pIAogKiAgIAogKiAgVGhlIHByaW1hcnkgaW5kaWNhdG9yIGNhbGN1bGF0aW9uIHNob3VsZCBpbmNsdWRlIEFSVCBzdGF0dXMgY2F0ZWdvcmllcyAxLCAyIGFuZCAzLiBSZW1vdmluZyB0aGUgd29tZW4gaW4gY2F0ZWdvcnkgMSAiYWxyZWFkeSBvbiBBUlQgYXQgZmlyc3QgQU5DIHZpc2l0IiBmcm9tIHRoZSBudW1lcmF0b3IgYW5kIGRlbm9taW5hdG9yIGdpdmVzIGEgbWVhc3VyZSBvZiBBUlQgY292ZXJhZ2UgYW1vbmcgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIG5ld2x5IGRpYWdub3NlZCBkdXJpbmcgQU5DLiBEaXZpZGluZyBjYXRlZ29yeSAyIGJ5IHRoZSBzdW0gb2YgY2F0ZWdvcmllcyAyIGFuZCAzIGdpdmVzIHRoZSBwcm9wb3J0aW9uIG9mIG5ldyBBUlQgaW5pdGlhdGlvbnMgb2NjdXJyaW5nIGR1cmluZyBwcmVnbmFuY3kgcmF0aGVyIHRoYW4gYXQgZGVsaXZlcnkuIENhbGN1bGF0aW5nIHRoZSBpbmRpY2F0b3Igd2l0aCB0aG9zZSBpbiBjYXRlZ29yeSA0IChub24tcmVjb21tZW5kZWQgQVJWIHJlZ2ltZW4pIGluY2x1ZGVkIGluIHRoZSBudW1lcmF0b3IgZ2l2ZXMgYSBicm9hZGVyIG1lYXN1cmUsIHRoYXQgaXMsIGNvdmVyYWdlIG9mIEhJVi1wb3NpdGl2ZSBwcmVnbmFudCB3b21lbiByZWNlaXZpbmcgYW55IEFSViBkcnVnLgogKgogKiBEaXNhZ2dyZWdhdGlvbiBFbGVtZW50czogVGltaW5nIG9mIEFSVCBpbml0aWF0aW9uCiAqCiAqIE51bWVyYXRvciBhbmQgRGVub21pbmF0b3IgRWxlbWVudHM6CiAqIEFOQyBjb250YWN0IGRhdGUgCiAqICBEZWxpdmVyeSBkYXRlIAogKiAgSElWIHN0YXR1cyAKICogIE9uIEFSVCAKICogIFBsYWNlIG9mIGRlbGl2ZXJ5CiAqCiAqIFJlZmVyZW5jZTogQ29uc29saWRhdGVkIGd1aWRlbGluZXMgb24gcGVyc29uLWNlbnRyZWQgSElWIHN0cmF0ZWdpYyBpbmZvcm1hdGlvbjogc3RyZW5ndGhlbmluZyByb3V0aW5lIGRhdGEgZm9yIGltcGFjdC4gR2VuZXZhOiBXb3JsZCBIZWFsdGggT3JnYW5pemF0aW9uOyAyMDIyCiAqIAogKiBEYXRhIENvbmNlcHRzOgogKiBISVYuQi5ERTExNTogSElWIHN0YXR1cyB8IEhJViBzdGF0dXMgcmVwb3J0ZWQgYWZ0ZXIgYXBwbHlpbmcgdGhlIG5hdGlvbmFsIEhJViB0ZXN0aW5nIGFsZ29yaXRobS4gTm8gc2luZ2xlIEhJViB0ZXN0IGNhbiBwcm92aWRlIGFuIEhJVi1wb3NpdGl2ZSBkaWFnbm9zaXMuCiAqIEhJVi5CLkRFMTE2OiBISVYtcG9zaXRpdmUgfCBDbGllbnQgaXMgSElWLXBvc2l0aXZlCiAqIEhJVi5CLkRFMTE3OiBISVYtbmVnYXRpdmUgfCBDbGllbnQgaXMgSElWLW5lZ2F0aXZlCiAqIEhJVi5CLkRFMTE4OiBVbmtub3duIHwgQ2xpZW50IGhhcyB1bmtub3duIEhJViBzdGF0dXMKICogSElWLkQuREUzODogT24gQVJUIHwgQ2xpZW50IGlzIGN1cnJlbnRseSB0YWtpbmcgQVJUCiAqIEhJVi5FLkRFNDE6IFRpbWluZyBvZiBBUlQgaW5pdGlhdGlvbiB8IFdoZW4gdGhlIHByZWduYW50IHdvbWFuIG9yIG1vdGhlciBpbml0aWF0ZWQgQVJULCBmb3Igd29tZW4gbGl2aW5nIHdpdGggSElWLgogKiBISVYuRS5ERTQyOiBBbHJlYWR5IG9uIEFSVCBhdCBmaXJzdCBhbnRlbmF0YWwgY2FyZSB2aXNpdCB8IFRoZSBwcmVnbmFudCB3b21hbiB3YXMgYWxyZWFkeSBvbiBhbnRpcmV0cm92aXJhbCB0aGVyYXB5IChBUlQpIGF0IGZpcnN0IGFudGVuYXRhbCBjYXJlIHZpc2l0CiAqIEhJVi5FLkRFNDM6IE5ld2x5IG9uIEFSVCBkdXJpbmcgcHJlZ25hbmN5IHwgVGhlIHByZWduYW50IHdvbWFuIHN0YXJ0ZWQgQVJUIGR1cmluZyBoZXIgcHJlZ25hbmN5CiAqIEhJVi5FLkRFNDQ6IE5ld2x5IG9uIEFSVCBkdXJpbmcgbGFib3VyIGFuZCBkZWxpdmVyeSB8IFRoZSB3b21hbiBzdGFydGVkIEFSVCBkdXJpbmcgbGFib3VyIGFuZCBkZWxpdmVyeQogKiBISVYuRS5ERTQ2OiBEZWxpdmVyeSBkYXRlIHwgRGF0ZSBvbiB3aGljaCB0aGUgd29tYW4gZGVsaXZlcmVkCiAqIEhJVi5FLkRFNjc6IFBsYWNlIG9mIGRlbGl2ZXJ5IHwgVGhlIHR5cGUgb2YgcGxhY2Ugd2hlcmUgdGhlIHdvbWFuIGRlbGl2ZXJlZAogKiBISVYuRS5ERTY4OiBIZWFsdGggZmFjaWxpdHkgfCBUaGUgd29tYW4gZGVsaXZlcmVkIGF0IGEgaGVhbHRoIGZhY2lsaXR5CiAqIEhJVi5FLkRFNjk6IEhvbWUgfCBUaGUgd29tYW4gZGVsaXZlcmVkIGF0IGhvbWUKICogSElWLkUuREU3MDogT3RoZXIgfCBUaGUgd29tYW4gZGVsaXZlcmVkIGF0IGFub3RoZXIgbG9jYXRpb24gdGhhdCBpcyBub3QgYXQgaG9tZSBvciBhdCBhIGhlYWx0aCBmYWNpbGl0eQogKiBISVYuRS5ERTg1OiBBTkMgY29udGFjdCBkYXRlIHwgVGhlIGRhdGUgYW5kIHRpbWUgb2YgdGhlIGNsaWVudCdzIEFOQyBjb250YWN0IChpbiB0aGUgQU5DIERBSyB0aGlzIGlzIGNhbGxlZCAnQ29udGFjdCBkYXRlJykKICogSElWLkguREU0NzogT24gQVJUIHwgQ2xpZW50IGlzIGN1cnJlbnRseSB0YWtpbmcgQVJUIAogKiBISVYuU1JWLkRFMTg6IEFOQyBjb250YWN0IGRhdGUgfCBUaGUgZGF0ZSBhbmQgdGltZSBvZiB0aGUgY2xpZW50J3MgQU5DIGNvbnRhY3QgKGluIHRoZSBBTkMgREFLIHRoaXMgaXMgY2FsbGVkICdDb250YWN0IGRhdGUnKQogKgogKiBBZGRpdGlvbmFsIENvbnRleHQKICogLSB3aGF0IGl0IG1lYXN1cmVzOiBUaGlzIGluZGljYXRvciBtZWFzdXJlcyB3aGV0aGVyIGEgcmVjb21tZW5kZWQgY291cnNlIG9mIEFSVCBoYXMgYmVlbiBwcm92aWRlZCB0byBISVYtcG9zaXRpdmUgcHJlZ25hbnQgd29tZW4uCiAqIC0gcmF0aW9uYWxlOiDigKIgUHJvdmlkaW5nIEFSVCBmb3IgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIGlzIGEgY3JpdGljYWwgc3RyYXRlZ3kgZm9yIHByZXZlbnRpbmcgdmVydGljYWwgdHJhbnNtaXNzaW9uIG9mIEhJVi4gfCDigKIgSW4gYW4gZXJhIG9mICJUcmVhdCBBbGwiLCBhbGwgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIHNob3VsZCBiZSBnaXZlbiBhIHJlY29tbWVuZGVkIHJlZ2ltZW4gb2YgQVJUIGFzIHNvb24gYXMgcG9zc2libGUgYWZ0ZXIgZGlhZ25vc2lzLCBpbmNsdWRpbmcgZHVyaW5nIGxhYm91ciBhbmQgZGVsaXZlcnkuCiAqIC0gbWV0aG9kOiBhKSBGb3IgdGhlIG51bWVyYXRvciBhbmQgcHJvZ3JhbW1lLWJhc2VkL3NlcnZpY2UgZGVsaXZlcnkgZGVub21pbmF0b3I6IFByb2dyYW1tZSByZWNvcmRzIChmb3IgZXhhbXBsZSwgUE1UQ1QgcmVnaXN0ZXJzLCBBUlYgcmVnaXN0ZXJzLCBsYWJvdXIgYW5kIGRlbGl2ZXJ5IHJlZ2lzdGVycykgfCAgfCBiKSBGb3IgdGhlIHBvcHVsYXRpb24tYmFzZWQgZGVub21pbmF0b3I6IE1vZGVsbGluZy1iYXNlZCBlc3RpbWF0ZXMgKGZvciBleGFtcGxlLCBTcGVjdHJ1bSBBSU0pIHwgIHwgVGhlIHJlY29tbWVuZGVkIHJlcG9ydGluZyBwZXJpb2QgaXMgMTIgbW9udGhzLgogKiAKICogU3VnZ2VzdGVkIFNjb3JpbmcgTWV0aG9kOiBwcm9wb3J0aW9uIHwgaHR0cDovL2hsNy5vcmcvZmhpci91cy9jcWZtZWFzdXJlcy9TdHJ1Y3R1cmVEZWZpbml0aW9uL3Byb3BvcnRpb24tbWVhc3VyZS1jcWZtCiAqLwoKbGlicmFyeSBISVZJTkQ0MExvZ2ljCgovLyBJbmNsdWRlZCBMaWJyYXJpZXMKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgSElWQ29tbW9uIHZlcnNpb24gJzAuMC4xJyBjYWxsZWQgSElDCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIFdIT0NvbW1vbiBjYWxsZWQgV0NvbQoKLy8gSW5kaWNhdG9yIERlZmluaXRpb24KcGFyYW1ldGVyICJNZWFzdXJlbWVudCBQZXJpb2QiIEludGVydmFsPERhdGU+IGRlZmF1bHQgSW50ZXJ2YWxbQDIwMjMtMDEtMDEsIEAyMDIzLTAxLTMwXQoKY29udGV4dCBQYXRpZW50Ci8qIFBvcHVsYXRpb25zICovCgovKgogKkluaXRpYWwgUG9wdWxhdGlvbgogKi8KCmRlZmluZSAiSW5pdGlhbCBQb3B1bGF0aW9uIjoKICB0cnVlCgovKioKICogTnVtZXJhdG9yCiAqIAogKiBEZWZpbml0aW9uOiBOdW1iZXIgb2YgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIHdobyBkZWxpdmVyZWQgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kIGFuZCByZWNlaXZlZCBBUlQgZHVyaW5nIHByZWduYW5jeSBhbmQvb3IgYXQgbGFib3VyIGFuZCBkZWxpdmVyeQogKiBDYWxjdWxhdGlvbjogQ09VTlQgb2Ygd29tZW4gd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgQU5EICJEZWxpdmVyeSBkYXRlIiBpbiB0aGUgcmVwb3J0aW5nIHBlcmlvZCBBTkQgKCgiT24gQVJUIj1UcnVlIGF0IGxhYm91ciBhbmQgZGVsaXZlcnkpIE9SICgiT24gQVJUIj1UcnVlIGR1cmluZyBwcmVnbmFuY3ksIGZvciB0aGlzIHByZWduYW5jeSkpCiAqLwoKZGVmaW5lICJOdW1lcmF0b3IiOgogIHRydWUKCgovKioKICogRGVub21pbmF0b3IKICoKICogRGVmaW5pdGlvbjogYSkgUHJvZ3JhbW1lLWJhc2VkL3NlcnZpY2UgZGVsaXZlcnkgZGVub21pbmF0b3IgfCBOdW1iZXIgb2YgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIHdobyBkZWxpdmVyZWQgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kIGFuZCBhdHRlbmRlZCBBTkMgb3IgaGFkIGEgZmFjaWxpdHktYmFzZWQgZGVsaXZlcnkgfCBiKSBQb3B1bGF0aW9uLWJhc2VkIGRlbm9taW5hdG9yIHwgTnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSBwcmVnbmFudCB3b21lbiB3aG8gZGVsaXZlcmVkIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKiBDYWxjdWxhdGlvbjogUHJvZ3JhbW1lLWJhc2VkL3NlcnZpY2UgZGVsaXZlcnkgZGVub21pbmF0b3I6IHwgQ09VTlQgb2Ygd29tZW4gd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgQU5EICJEZWxpdmVyeSBkYXRlIiBpbiB0aGUgcmVwb3J0aW5nIHBlcmlvZCBBTkQgKGhhZCBhbiAiQU5DIGNvbnRhY3QgZGF0ZSIgZHVyaW5nIHJlcG9ydGluZyBwZXJpb2QgT1IgIlBsYWNlIG9mIGRlbGl2ZXJ5IiB3YXMgYSAnSGVhbHRoIGZhY2lsaXR5JykgfCAgfCBQb3B1bGF0aW9uLWJhc2VkIGRlbm9taW5hdG9yOiB8ICpOdW1iZXIgb2YgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIHdobyBkZWxpdmVyZWQgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqLwoKZGVmaW5lICJEZW5vbWluYXRvciI6CiAgdHJ1ZQogICAgCgovKiBlbmQgUG9wdWxhdGlvbnMgKi8KCg=="/>
  </content>
  <content>
    <contentType value="application/elm+xml"/>
    <data
          value="PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGxpYnJhcnkgeG1sbnM9InVybjpobDctb3JnOmVsbTpyMSIgeG1sbnM6dD0idXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczpmaGlyPSJodHRwOi8vaGw3Lm9yZy9maGlyIiB4bWxuczpxZG00Mz0idXJuOmhlYWx0aGl0LWdvdjpxZG06djRfMyIgeG1sbnM6cWRtNTM9InVybjpoZWFsdGhpdC1nb3Y6cWRtOnY1XzMiIHhtbG5zOmE9InVybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMSI+CiAgIDxhbm5vdGF0aW9uIHRyYW5zbGF0b3JPcHRpb25zPSJFbmFibGVBbm5vdGF0aW9ucyxFbmFibGVMb2NhdG9ycyxEaXNhYmxlTGlzdERlbW90aW9uLERpc2FibGVMaXN0UHJvbW90aW9uIiBzaWduYXR1cmVMZXZlbD0iTm9uZSIgeHNpOnR5cGU9ImE6Q3FsVG9FbG1JbmZvIi8+CiAgIDxhbm5vdGF0aW9uIG1lc3NhZ2U9IlRoZSBmdW5jdGlvbiBGSElSSGVscGVycy5Ub0ludGVydmFsIGhhcyBtdWx0aXBsZSBvdmVybG9hZHMgYW5kIGR1ZSB0byB0aGUgU2lnbmF0dXJlTGV2ZWwgc2V0dGluZyAoTm9uZSksIHRoZSBvdmVybG9hZCBzaWduYXR1cmUgaXMgbm90IGJlaW5nIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuIFRoaXMgbWF5IHJlc3VsdCBpbiBhbWJpZ3VvdXMgZnVuY3Rpb24gcmVzb2x1dGlvbiBhdCBydW50aW1lLCBjb25zaWRlciBzZXR0aW5nIHRoZSBTaWduYXR1cmVMZXZlbCB0byBPdmVybG9hZHMgb3IgQWxsIHRvIGVuc3VyZSB0aGF0IHRoZSBvdXRwdXQgaW5jbHVkZXMgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byBzdXBwb3J0IGNvcnJlY3Qgb3ZlcmxvYWQgc2VsZWN0aW9uIGF0IHJ1bnRpbWUuIiBlcnJvclR5cGU9InNlbWFudGljIiBlcnJvclNldmVyaXR5PSJ3YXJuaW5nIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUVycm9yIi8+CiAgIDxhbm5vdGF0aW9uIG1lc3NhZ2U9IlRoZSBmdW5jdGlvbiBGSElSSGVscGVycy5Ub0ludGVydmFsIGhhcyBtdWx0aXBsZSBvdmVybG9hZHMgYW5kIGR1ZSB0byB0aGUgU2lnbmF0dXJlTGV2ZWwgc2V0dGluZyAoTm9uZSksIHRoZSBvdmVybG9hZCBzaWduYXR1cmUgaXMgbm90IGJlaW5nIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuIFRoaXMgbWF5IHJlc3VsdCBpbiBhbWJpZ3VvdXMgZnVuY3Rpb24gcmVzb2x1dGlvbiBhdCBydW50aW1lLCBjb25zaWRlciBzZXR0aW5nIHRoZSBTaWduYXR1cmVMZXZlbCB0byBPdmVybG9hZHMgb3IgQWxsIHRvIGVuc3VyZSB0aGF0IHRoZSBvdXRwdXQgaW5jbHVkZXMgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byBzdXBwb3J0IGNvcnJlY3Qgb3ZlcmxvYWQgc2VsZWN0aW9uIGF0IHJ1bnRpbWUuIiBlcnJvclR5cGU9InNlbWFudGljIiBlcnJvclNldmVyaXR5PSJ3YXJuaW5nIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUVycm9yIi8+CiAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICA8YTpzIHI9IjE2Ij4KICAgICAgICAgPGE6cz4vKioKICogTGlicmFyeTogSElWLklORC40MCBMb2dpYwogKiBSZWYgTm86IFZFUi40CiAqIFNob3J0IE5hbWU6IEFSVCBjb3ZlcmFnZSBpbiBwcmVnbmFudCB3b21lbgogKgogKiBEZWZpbml0aW9uOiAlIG9mIEhJVi1wb3NpdGl2ZSBwcmVnbmFudCB3b21lbiB3aG8gcmVjZWl2ZWQgQVJUIGR1cmluZyBwcmVnbmFuY3kgYW5kL29yIGF0IGxhYm91ciBhbmQgZGVsaXZlcnkKICoKICogTnVtZXJhdG9yOiBOdW1iZXIgb2YgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIHdobyBkZWxpdmVyZWQgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kIGFuZCByZWNlaXZlZCBBUlQgZHVyaW5nIHByZWduYW5jeSBhbmQvb3IgYXQgbGFib3VyIGFuZCBkZWxpdmVyeQogKiBOdW1lcmF0b3IgQ2FsY3VsYXRpb246IENPVU5UIG9mIHdvbWVuIHdpdGggJnF1b3Q7SElWIHN0YXR1cyZxdW90Oz0nSElWLXBvc2l0aXZlJyBBTkQgJnF1b3Q7RGVsaXZlcnkgZGF0ZSZxdW90OyBpbiB0aGUgcmVwb3J0aW5nIHBlcmlvZCBBTkQgKCgmcXVvdDtPbiBBUlQmcXVvdDs9VHJ1ZSBhdCBsYWJvdXIgYW5kIGRlbGl2ZXJ5KSBPUiAoJnF1b3Q7T24gQVJUJnF1b3Q7PVRydWUgZHVyaW5nIHByZWduYW5jeSwgZm9yIHRoaXMgcHJlZ25hbmN5KSkKICogTnVtZXJhdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEZW5vbWluYXRvcjogYSkgUHJvZ3JhbW1lLWJhc2VkL3NlcnZpY2UgZGVsaXZlcnkgZGVub21pbmF0b3IgfCBOdW1iZXIgb2YgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIHdobyBkZWxpdmVyZWQgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kIGFuZCBhdHRlbmRlZCBBTkMgb3IgaGFkIGEgZmFjaWxpdHktYmFzZWQgZGVsaXZlcnkgfCBiKSBQb3B1bGF0aW9uLWJhc2VkIGRlbm9taW5hdG9yIHwgTnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSBwcmVnbmFudCB3b21lbiB3aG8gZGVsaXZlcmVkIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKiBEZW5vbWluYXRvciBDYWxjdWxhdGlvbjogUHJvZ3JhbW1lLWJhc2VkL3NlcnZpY2UgZGVsaXZlcnkgZGVub21pbmF0b3I6IHwgQ09VTlQgb2Ygd29tZW4gd2l0aCAmcXVvdDtISVYgc3RhdHVzJnF1b3Q7PSdISVYtcG9zaXRpdmUnIEFORCAmcXVvdDtEZWxpdmVyeSBkYXRlJnF1b3Q7IGluIHRoZSByZXBvcnRpbmcgcGVyaW9kIEFORCAoaGFkIGFuICZxdW90O0FOQyBjb250YWN0IGRhdGUmcXVvdDsgZHVyaW5nIHJlcG9ydGluZyBwZXJpb2QgT1IgJnF1b3Q7UGxhY2Ugb2YgZGVsaXZlcnkmcXVvdDsgd2FzIGEgJ0hlYWx0aCBmYWNpbGl0eScpIHwgIHwgUG9wdWxhdGlvbi1iYXNlZCBkZW5vbWluYXRvcjogfCAqTnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSBwcmVnbmFudCB3b21lbiB3aG8gZGVsaXZlcmVkIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKiBEZW5vbWluYXRvciBFeGNsdXNpb25zOiAKICoKICogRGlzYWdncmVnYXRpb25zOgogKiBOdW1lcmF0b3I6IAogKiAg4oCiwqBUaW1pbmcgb2YgQVJUIGluaXRpYXRpb24gKDEuIGFscmVhZHkgb24gQVJUIGF0IGZpcnN0IEFOQyB2aXNpdCwgMi4gbmV3bHkgb24gQVJUIGR1cmluZyBwcmVnbmFuY3ksIDMuIG5ld2x5IG9uIEFSVCBkdXJpbmcgbGFib3VyIGFuZCBkZWxpdmVyeSwgNC4gb24gbm9uLXJlY29tbWVuZGVkIEFSVCByZWdpbWVuKSAKICogICAKICogIFRoZSBwcmltYXJ5IGluZGljYXRvciBjYWxjdWxhdGlvbiBzaG91bGQgaW5jbHVkZSBBUlQgc3RhdHVzIGNhdGVnb3JpZXMgMSwgMiBhbmQgMy4gUmVtb3ZpbmcgdGhlIHdvbWVuIGluIGNhdGVnb3J5IDEgJnF1b3Q7YWxyZWFkeSBvbiBBUlQgYXQgZmlyc3QgQU5DIHZpc2l0JnF1b3Q7IGZyb20gdGhlIG51bWVyYXRvciBhbmQgZGVub21pbmF0b3IgZ2l2ZXMgYSBtZWFzdXJlIG9mIEFSVCBjb3ZlcmFnZSBhbW9uZyBISVYtcG9zaXRpdmUgcHJlZ25hbnQgd29tZW4gbmV3bHkgZGlhZ25vc2VkIGR1cmluZyBBTkMuIERpdmlkaW5nIGNhdGVnb3J5IDIgYnkgdGhlIHN1bSBvZiBjYXRlZ29yaWVzIDIgYW5kIDMgZ2l2ZXMgdGhlIHByb3BvcnRpb24gb2YgbmV3IEFSVCBpbml0aWF0aW9ucyBvY2N1cnJpbmcgZHVyaW5nIHByZWduYW5jeSByYXRoZXIgdGhhbiBhdCBkZWxpdmVyeS4gQ2FsY3VsYXRpbmcgdGhlIGluZGljYXRvciB3aXRoIHRob3NlIGluIGNhdGVnb3J5IDQgKG5vbi1yZWNvbW1lbmRlZCBBUlYgcmVnaW1lbikgaW5jbHVkZWQgaW4gdGhlIG51bWVyYXRvciBnaXZlcyBhIGJyb2FkZXIgbWVhc3VyZSwgdGhhdCBpcywgY292ZXJhZ2Ugb2YgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIHJlY2VpdmluZyBhbnkgQVJWIGRydWcuCiAqCiAqIERpc2FnZ3JlZ2F0aW9uIEVsZW1lbnRzOiBUaW1pbmcgb2YgQVJUIGluaXRpYXRpb24KICoKICogTnVtZXJhdG9yIGFuZCBEZW5vbWluYXRvciBFbGVtZW50czoKICogQU5DIGNvbnRhY3QgZGF0ZSAKICogIERlbGl2ZXJ5IGRhdGUgCiAqICBISVYgc3RhdHVzIAogKiAgT24gQVJUIAogKiAgUGxhY2Ugb2YgZGVsaXZlcnkKICoKICogUmVmZXJlbmNlOiBDb25zb2xpZGF0ZWQgZ3VpZGVsaW5lcyBvbiBwZXJzb24tY2VudHJlZCBISVYgc3RyYXRlZ2ljIGluZm9ybWF0aW9uOiBzdHJlbmd0aGVuaW5nIHJvdXRpbmUgZGF0YSBmb3IgaW1wYWN0LiBHZW5ldmE6IFdvcmxkIEhlYWx0aCBPcmdhbml6YXRpb247IDIwMjIKICogCiAqIERhdGEgQ29uY2VwdHM6CiAqIEhJVi5CLkRFMTE1OiBISVYgc3RhdHVzIHwgSElWIHN0YXR1cyByZXBvcnRlZCBhZnRlciBhcHBseWluZyB0aGUgbmF0aW9uYWwgSElWIHRlc3RpbmcgYWxnb3JpdGhtLiBObyBzaW5nbGUgSElWIHRlc3QgY2FuIHByb3ZpZGUgYW4gSElWLXBvc2l0aXZlIGRpYWdub3Npcy4KICogSElWLkIuREUxMTY6IEhJVi1wb3NpdGl2ZSB8IENsaWVudCBpcyBISVYtcG9zaXRpdmUKICogSElWLkIuREUxMTc6IEhJVi1uZWdhdGl2ZSB8IENsaWVudCBpcyBISVYtbmVnYXRpdmUKICogSElWLkIuREUxMTg6IFVua25vd24gfCBDbGllbnQgaGFzIHVua25vd24gSElWIHN0YXR1cwogKiBISVYuRC5ERTM4OiBPbiBBUlQgfCBDbGllbnQgaXMgY3VycmVudGx5IHRha2luZyBBUlQKICogSElWLkUuREU0MTogVGltaW5nIG9mIEFSVCBpbml0aWF0aW9uIHwgV2hlbiB0aGUgcHJlZ25hbnQgd29tYW4gb3IgbW90aGVyIGluaXRpYXRlZCBBUlQsIGZvciB3b21lbiBsaXZpbmcgd2l0aCBISVYuCiAqIEhJVi5FLkRFNDI6IEFscmVhZHkgb24gQVJUIGF0IGZpcnN0IGFudGVuYXRhbCBjYXJlIHZpc2l0IHwgVGhlIHByZWduYW50IHdvbWFuIHdhcyBhbHJlYWR5IG9uIGFudGlyZXRyb3ZpcmFsIHRoZXJhcHkgKEFSVCkgYXQgZmlyc3QgYW50ZW5hdGFsIGNhcmUgdmlzaXQKICogSElWLkUuREU0MzogTmV3bHkgb24gQVJUIGR1cmluZyBwcmVnbmFuY3kgfCBUaGUgcHJlZ25hbnQgd29tYW4gc3RhcnRlZCBBUlQgZHVyaW5nIGhlciBwcmVnbmFuY3kKICogSElWLkUuREU0NDogTmV3bHkgb24gQVJUIGR1cmluZyBsYWJvdXIgYW5kIGRlbGl2ZXJ5IHwgVGhlIHdvbWFuIHN0YXJ0ZWQgQVJUIGR1cmluZyBsYWJvdXIgYW5kIGRlbGl2ZXJ5CiAqIEhJVi5FLkRFNDY6IERlbGl2ZXJ5IGRhdGUgfCBEYXRlIG9uIHdoaWNoIHRoZSB3b21hbiBkZWxpdmVyZWQKICogSElWLkUuREU2NzogUGxhY2Ugb2YgZGVsaXZlcnkgfCBUaGUgdHlwZSBvZiBwbGFjZSB3aGVyZSB0aGUgd29tYW4gZGVsaXZlcmVkCiAqIEhJVi5FLkRFNjg6IEhlYWx0aCBmYWNpbGl0eSB8IFRoZSB3b21hbiBkZWxpdmVyZWQgYXQgYSBoZWFsdGggZmFjaWxpdHkKICogSElWLkUuREU2OTogSG9tZSB8IFRoZSB3b21hbiBkZWxpdmVyZWQgYXQgaG9tZQogKiBISVYuRS5ERTcwOiBPdGhlciB8IFRoZSB3b21hbiBkZWxpdmVyZWQgYXQgYW5vdGhlciBsb2NhdGlvbiB0aGF0IGlzIG5vdCBhdCBob21lIG9yIGF0IGEgaGVhbHRoIGZhY2lsaXR5CiAqIEhJVi5FLkRFODU6IEFOQyBjb250YWN0IGRhdGUgfCBUaGUgZGF0ZSBhbmQgdGltZSBvZiB0aGUgY2xpZW50J3MgQU5DIGNvbnRhY3QgKGluIHRoZSBBTkMgREFLIHRoaXMgaXMgY2FsbGVkICdDb250YWN0IGRhdGUnKQogKiBISVYuSC5ERTQ3OiBPbiBBUlQgfCBDbGllbnQgaXMgY3VycmVudGx5IHRha2luZyBBUlQgCiAqIEhJVi5TUlYuREUxODogQU5DIGNvbnRhY3QgZGF0ZSB8IFRoZSBkYXRlIGFuZCB0aW1lIG9mIHRoZSBjbGllbnQncyBBTkMgY29udGFjdCAoaW4gdGhlIEFOQyBEQUsgdGhpcyBpcyBjYWxsZWQgJ0NvbnRhY3QgZGF0ZScpCiAqCiAqIEFkZGl0aW9uYWwgQ29udGV4dAogKiAtIHdoYXQgaXQgbWVhc3VyZXM6IFRoaXMgaW5kaWNhdG9yIG1lYXN1cmVzIHdoZXRoZXIgYSByZWNvbW1lbmRlZCBjb3Vyc2Ugb2YgQVJUIGhhcyBiZWVuIHByb3ZpZGVkIHRvIEhJVi1wb3NpdGl2ZSBwcmVnbmFudCB3b21lbi4KICogLSByYXRpb25hbGU6IOKAoiBQcm92aWRpbmcgQVJUIGZvciBISVYtcG9zaXRpdmUgcHJlZ25hbnQgd29tZW4gaXMgYSBjcml0aWNhbCBzdHJhdGVneSBmb3IgcHJldmVudGluZyB2ZXJ0aWNhbCB0cmFuc21pc3Npb24gb2YgSElWLiB8IOKAoiBJbiBhbiBlcmEgb2YgJnF1b3Q7VHJlYXQgQWxsJnF1b3Q7LCBhbGwgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIHNob3VsZCBiZSBnaXZlbiBhIHJlY29tbWVuZGVkIHJlZ2ltZW4gb2YgQVJUIGFzIHNvb24gYXMgcG9zc2libGUgYWZ0ZXIgZGlhZ25vc2lzLCBpbmNsdWRpbmcgZHVyaW5nIGxhYm91ciBhbmQgZGVsaXZlcnkuCiAqIC0gbWV0aG9kOiBhKSBGb3IgdGhlIG51bWVyYXRvciBhbmQgcHJvZ3JhbW1lLWJhc2VkL3NlcnZpY2UgZGVsaXZlcnkgZGVub21pbmF0b3I6IFByb2dyYW1tZSByZWNvcmRzIChmb3IgZXhhbXBsZSwgUE1UQ1QgcmVnaXN0ZXJzLCBBUlYgcmVnaXN0ZXJzLCBsYWJvdXIgYW5kIGRlbGl2ZXJ5IHJlZ2lzdGVycykgfCAgfCBiKSBGb3IgdGhlIHBvcHVsYXRpb24tYmFzZWQgZGVub21pbmF0b3I6IE1vZGVsbGluZy1iYXNlZCBlc3RpbWF0ZXMgKGZvciBleGFtcGxlLCBTcGVjdHJ1bSBBSU0pIHwgIHwgVGhlIHJlY29tbWVuZGVkIHJlcG9ydGluZyBwZXJpb2QgaXMgMTIgbW9udGhzLgogKiAKICogU3VnZ2VzdGVkIFNjb3JpbmcgTWV0aG9kOiBwcm9wb3J0aW9uIHwgaHR0cDovL2hsNy5vcmcvZmhpci91cy9jcWZtZWFzdXJlcy9TdHJ1Y3R1cmVEZWZpbml0aW9uL3Byb3BvcnRpb24tbWVhc3VyZS1jcWZtCiAqLwoKbGlicmFyeSBISVZJTkQ0MExvZ2ljPC9hOnM+CiAgICAgIDwvYTpzPgogICA8L2Fubm90YXRpb24+CiAgIDxpZGVudGlmaWVyIGlkPSJISVZJTkQ0MExvZ2ljIiBzeXN0ZW09Imh0dHA6Ly9zbWFydC53aG8uaW50L2hpdiIvPgogICA8c2NoZW1hSWRlbnRpZmllciBpZD0idXJuOmhsNy1vcmc6ZWxtIiB2ZXJzaW9uPSJyMSIvPgogICA8dXNpbmdzPgogICAgICA8ZGVmIGxvY2FsSWRlbnRpZmllcj0iU3lzdGVtIiB1cmk9InVybjpobDctb3JnOmVsbS10eXBlczpyMSIvPgogICAgICA8ZGVmIGxvY2FsSWQ9IjEiIGxvY2F0b3I9IjYzOjEtNjM6MjYiIGxvY2FsSWRlbnRpZmllcj0iRkhJUiIgdXJpPSJodHRwOi8vaGw3Lm9yZy9maGlyIiB2ZXJzaW9uPSI0LjAuMSI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjEiPgogICAgICAgICAgICAgICA8YTpzPi8vIEluY2x1ZGVkIExpYnJhcmllcwp1c2luZyA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiB2ZXJzaW9uICc0LjAuMSc8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgPC9kZWY+CiAgIDwvdXNpbmdzPgogICA8aW5jbHVkZXM+CiAgICAgIDxkZWYgbG9jYWxJZD0iMiIgbG9jYXRvcj0iNjU6MS02NTo0NCIgbG9jYWxJZGVudGlmaWVyPSJISUMiIHBhdGg9Imh0dHA6Ly9zbWFydC53aG8uaW50L2hpdi9ISVZDb21tb24iIHZlcnNpb249IjAuMC4xIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMiI+CiAgICAgICAgICAgICAgIDxhOnM+aW5jbHVkZSA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgPGE6cz5ISVZDb21tb248L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+IHZlcnNpb24gJzAuMC4xJyBjYWxsZWQgSElDPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjMiIGxvY2F0b3I9IjY2OjEtNjY6MzUiIGxvY2FsSWRlbnRpZmllcj0iRkhJUkhlbHBlcnMiIHBhdGg9Imh0dHA6Ly9obDcub3JnL2ZoaXIvRkhJUkhlbHBlcnMiIHZlcnNpb249IjQuMC4xIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMyI+CiAgICAgICAgICAgICAgIDxhOnM+aW5jbHVkZSA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSSGVscGVyczwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4gdmVyc2lvbiAnNC4wLjEnPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjQiIGxvY2F0b3I9IjY4OjEtNjg6MjkiIGxvY2FsSWRlbnRpZmllcj0iV0NvbSIgcGF0aD0iaHR0cDovL3NtYXJ0Lndoby5pbnQvaGl2L1dIT0NvbW1vbiI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjQiPgogICAgICAgICAgICAgICA8YTpzPmluY2x1ZGUgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+V0hPQ29tbW9uPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiBjYWxsZWQgV0NvbTwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICA8L2RlZj4KICAgPC9pbmNsdWRlcz4KICAgPHBhcmFtZXRlcnM+CiAgICAgIDxkZWYgbG9jYWxJZD0iMTAiIGxvY2F0b3I9IjcxOjEtNzE6ODgiIG5hbWU9Ik1lYXN1cmVtZW50IFBlcmlvZCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjEwIj4KICAgICAgICAgICAgICAgPGE6cz4vLyBJbmRpY2F0b3IgRGVmaW5pdGlvbgpwYXJhbWV0ZXIgJnF1b3Q7TWVhc3VyZW1lbnQgUGVyaW9kJnF1b3Q7IDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjkiPgogICAgICAgICAgICAgICAgICA8YTpzPkludGVydmFsJmx0OzwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjgiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPkRhdGU8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+PjwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4gZGVmYXVsdCA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSI3Ij4KICAgICAgICAgICAgICAgICAgPGE6cyByPSI1Ij5JbnRlcnZhbFtAMjAyMy0wMS0wMSwgQDIwMjMtMDEtMzBdPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZGVmYXVsdCBsb2NhbElkPSI3IiBsb2NhdG9yPSI3MTo1NS03MTo4OCIgbG93Q2xvc2VkPSJ0cnVlIiBoaWdoQ2xvc2VkPSJ0cnVlIiB4c2k6dHlwZT0iSW50ZXJ2YWwiPgogICAgICAgICAgICA8bG93IGxvY2FsSWQ9IjUiIGxvY2F0b3I9IjcxOjY0LTcxOjc0IiB4c2k6dHlwZT0iRGF0ZSI+CiAgICAgICAgICAgICAgIDx5ZWFyIHZhbHVlVHlwZT0idDpJbnRlZ2VyIiB2YWx1ZT0iMjAyMyIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgPG1vbnRoIHZhbHVlVHlwZT0idDpJbnRlZ2VyIiB2YWx1ZT0iMSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgPGRheSB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjEiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgIDwvbG93PgogICAgICAgICAgICA8aGlnaCBsb2NhbElkPSI2IiBsb2NhdG9yPSI3MTo3Ny03MTo4NyIgeHNpOnR5cGU9IkRhdGUiPgogICAgICAgICAgICAgICA8eWVhciB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjIwMjMiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgIDxtb250aCB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjEiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgIDxkYXkgdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSIzMCIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgPC9oaWdoPgogICAgICAgICA8L2RlZmF1bHQ+CiAgICAgICAgIDxwYXJhbWV0ZXJUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjkiIGxvY2F0b3I9IjcxOjMyLTcxOjQ1IiB4c2k6dHlwZT0iSW50ZXJ2YWxUeXBlU3BlY2lmaWVyIj4KICAgICAgICAgICAgPHBvaW50VHlwZSBsb2NhbElkPSI4IiBsb2NhdG9yPSI3MTo0MS03MTo0NCIgbmFtZT0idDpEYXRlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgIDwvcGFyYW1ldGVyVHlwZVNwZWNpZmllcj4KICAgICAgPC9kZWY+CiAgIDwvcGFyYW1ldGVycz4KICAgPGNvbnRleHRzPgogICAgICA8ZGVmIGxvY2F0b3I9IjczOjEtNzM6MTUiIG5hbWU9IlBhdGllbnQiLz4KICAgPC9jb250ZXh0cz4KICAgPHN0YXRlbWVudHM+CiAgICAgIDxkZWYgbG9jYXRvcj0iNzM6MS03MzoxNSIgbmFtZT0iUGF0aWVudCIgY29udGV4dD0iUGF0aWVudCI+CiAgICAgICAgIDxleHByZXNzaW9uIHhzaTp0eXBlPSJTaW5nbGV0b25Gcm9tIj4KICAgICAgICAgICAgPG9wZXJhbmQgbG9jYXRvcj0iNzM6MS03MzoxNSIgZGF0YVR5cGU9ImZoaXI6UGF0aWVudCIgdGVtcGxhdGVJZD0iaHR0cDovL2hsNy5vcmcvZmhpci9TdHJ1Y3R1cmVEZWZpbml0aW9uL1BhdGllbnQiIHhzaTp0eXBlPSJSZXRyaWV2ZSIvPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjEyIiBsb2NhdG9yPSI4MDoxLTgxOjYiIG5hbWU9IkluaXRpYWwgUG9wdWxhdGlvbiIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjEyIj4KICAgICAgICAgICAgICAgPGE6cyByPSIxMSI+LyogUG9wdWxhdGlvbnMgKi8KCi8qCiAqSW5pdGlhbCBQb3B1bGF0aW9uCiAqLwoKZGVmaW5lICZxdW90O0luaXRpYWwgUG9wdWxhdGlvbiZxdW90OzoKICB0cnVlPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjExIiBsb2NhdG9yPSI4MTozLTgxOjYiIHZhbHVlVHlwZT0idDpCb29sZWFuIiB2YWx1ZT0idHJ1ZSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iMTQiIGxvY2F0b3I9IjkwOjEtOTE6NiIgbmFtZT0iTnVtZXJhdG9yIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMTQiPgogICAgICAgICAgICAgICA8YTpzIHI9IjEzIj4vKioKICogTnVtZXJhdG9yCiAqIAogKiBEZWZpbml0aW9uOiBOdW1iZXIgb2YgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIHdobyBkZWxpdmVyZWQgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kIGFuZCByZWNlaXZlZCBBUlQgZHVyaW5nIHByZWduYW5jeSBhbmQvb3IgYXQgbGFib3VyIGFuZCBkZWxpdmVyeQogKiBDYWxjdWxhdGlvbjogQ09VTlQgb2Ygd29tZW4gd2l0aCAmcXVvdDtISVYgc3RhdHVzJnF1b3Q7PSdISVYtcG9zaXRpdmUnIEFORCAmcXVvdDtEZWxpdmVyeSBkYXRlJnF1b3Q7IGluIHRoZSByZXBvcnRpbmcgcGVyaW9kIEFORCAoKCZxdW90O09uIEFSVCZxdW90Oz1UcnVlIGF0IGxhYm91ciBhbmQgZGVsaXZlcnkpIE9SICgmcXVvdDtPbiBBUlQmcXVvdDs9VHJ1ZSBkdXJpbmcgcHJlZ25hbmN5LCBmb3IgdGhpcyBwcmVnbmFuY3kpKQogKi8KCmRlZmluZSAmcXVvdDtOdW1lcmF0b3ImcXVvdDs6CiAgdHJ1ZTwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIxMyIgbG9jYXRvcj0iOTE6My05MTo2IiB2YWx1ZVR5cGU9InQ6Qm9vbGVhbiIgdmFsdWU9InRydWUiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjE2IiBsb2NhdG9yPSIxMDE6MS0xMDI6NiIgbmFtZT0iRGVub21pbmF0b3IiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIxNiI+CiAgICAgICAgICAgICAgIDxhOnMgcj0iMTUiPi8qKgogKiBEZW5vbWluYXRvcgogKgogKiBEZWZpbml0aW9uOiBhKSBQcm9ncmFtbWUtYmFzZWQvc2VydmljZSBkZWxpdmVyeSBkZW5vbWluYXRvciB8IE51bWJlciBvZiBISVYtcG9zaXRpdmUgcHJlZ25hbnQgd29tZW4gd2hvIGRlbGl2ZXJlZCBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QgYW5kIGF0dGVuZGVkIEFOQyBvciBoYWQgYSBmYWNpbGl0eS1iYXNlZCBkZWxpdmVyeSB8IGIpIFBvcHVsYXRpb24tYmFzZWQgZGVub21pbmF0b3IgfCBOdW1iZXIgb2YgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIHdobyBkZWxpdmVyZWQgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqIENhbGN1bGF0aW9uOiBQcm9ncmFtbWUtYmFzZWQvc2VydmljZSBkZWxpdmVyeSBkZW5vbWluYXRvcjogfCBDT1VOVCBvZiB3b21lbiB3aXRoICZxdW90O0hJViBzdGF0dXMmcXVvdDs9J0hJVi1wb3NpdGl2ZScgQU5EICZxdW90O0RlbGl2ZXJ5IGRhdGUmcXVvdDsgaW4gdGhlIHJlcG9ydGluZyBwZXJpb2QgQU5EIChoYWQgYW4gJnF1b3Q7QU5DIGNvbnRhY3QgZGF0ZSZxdW90OyBkdXJpbmcgcmVwb3J0aW5nIHBlcmlvZCBPUiAmcXVvdDtQbGFjZSBvZiBkZWxpdmVyeSZxdW90OyB3YXMgYSAnSGVhbHRoIGZhY2lsaXR5JykgfCAgfCBQb3B1bGF0aW9uLWJhc2VkIGRlbm9taW5hdG9yOiB8ICpOdW1iZXIgb2YgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIHdobyBkZWxpdmVyZWQgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqLwoKZGVmaW5lICZxdW90O0Rlbm9taW5hdG9yJnF1b3Q7OgogIHRydWU8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMTUiIGxvY2F0b3I9IjEwMjozLTEwMjo2IiB2YWx1ZVR5cGU9InQ6Qm9vbGVhbiIgdmFsdWU9InRydWUiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgIDwvZGVmPgogICA8L3N0YXRlbWVudHM+CjwvbGlicmFyeT4K"/>
  </content>
</Library>