WHO SMART Guidelines - HIV
0.4.3 - ci-build

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

: HIV.IND.45 Logic - XML Representation

Draft as of 2025-02-07

Raw xml | Download


<Library xmlns="http://hl7.org/fhir">
  <id value="HIVIND45Logic"/>
  <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="extensions"/>
    <div xmlns="http://www.w3.org/1999/xhtml">
<div>
    <table class="grid dict">
        
        
        <tr>
            <th scope="row"><b>Title: </b></th>
            <td style="padding-left: 4px;">HIV.IND.45 Logic</td>
        </tr>
        

        
        
        <tr>
            <th scope="row"><b>Id: </b></th>
            <td style="padding-left: 4px;">HIVIND45Logic</td>
        </tr>
        

        
        
        <tr>
            <th scope="row"><b>Version: </b></th>
            <td style="padding-left: 4px;">0.4.3</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Url: </b></th>
            <td style="padding-left: 4px;"><a href="Library-HIVIND45Logic.html">HIV.IND.45 Logic</a></td>
        </tr>
        

        

        

        
        <tr>
            <th scope="row"><b>Status: </b></th>
            <td style="padding-left: 4px;">draft</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Experimental: </b></th>
            <td style="padding-left: 4px;">true</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Type: </b></th>
            <td style="padding-left: 4px;">
                
                    
                        
                        <p style="margin-bottom: 5px;">
                            <b>system: </b> <span><a href="http://terminology.hl7.org/6.0.2/CodeSystem-library-type.html">http://terminology.hl7.org/CodeSystem/library-type</a></span>
                        </p>
                        
                        
                        <p style="margin-bottom: 5px;">
                            <b>code: </b> <span>logic-library</span>
                        </p>
                        
                        
                    
                
                
            </td>
        </tr>
        

        

        
        <tr>
            <th scope="row"><b>Date: </b></th>
            <td style="padding-left: 4px;">2025-02-07 14:15:45+0000</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Publisher: </b></th>
            <td style="padding-left: 4px;">WHO</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Description: </b></th>
            <td style="padding-left: 4px;"><div><p>Number and % of people living with HIV on ART who completed a course of TB preventive treatment among those who initiated TPT</p>
</div></td>
        </tr>
        

        

        

        

        

        

        

        

        

        

        

        

        

        

        
        
        <tr>
          <td colspan="2">
            <table>
              <tr><th><a id="cql-content"><b>Content: </b></a> text/cql</th></tr>
              <tr><td><pre><code class="language-cql">/**
 * Library: HIV.IND.45 Logic
 * Ref No: TBH.2
 * Short Name: TPT completion
 *
 * Definition: Number and % of people living with HIV on ART who completed a course of TB preventive treatment among those who initiated TPT
 *
 * Numerator: Number of ART patients who completed a course of TPT during the reporting period
 * Numerator Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;On ART&quot;=True AND &quot;TB preventive treatment (TPT) start date&quot; in the previous period AND &quot;TB preventive treatment (TPT) status&quot;='Completed'
 * Numerator Exclusions: 
 *
 * Denominator: Number of ART patients who initiated any course of TPT during the previous reporting period
 * Denominator Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;On ART&quot;=True AND &quot;TB preventive treatment (TPT) start date&quot; in the prior reporting period
 * Denominator Exclusions: 
 *
 * Disaggregations:
 * • Gender (female, male, other*) 
 *  • Age (0–4, 5–9, 10–14, 15–19, 20–24, 25–29, 30–34, 35–39, 40–44, 45–49, 50+ years)** 
 *  • Type of TPT regimen 
 *  • ART initiation (&lt;12 months on ART, 12+ months on ART) 
 *  • Cities and other administrative regions of epidemiologic importance
 *
 * Disaggregation Elements: Gender | Age | TPT regimen type | ART start date (&lt;12 months on ART, ≥12 months on ART)
 *
 * Numerator and Denominator Elements:
 * HIV status 
 *  On ART 
 *  TB preventive treatment (TPT) start date 
 *  TB preventive treatment (TPT) status
 *
 * 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.DE72: ART start date | The date on which the client started or restarted antiretroviral therapy (ART)
 * 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.D.DE39: ART start date | The date on which the client started or restarted ART
 * HIV.D.DE954: TB preventive treatment (TPT) start date | The date on which the client began taking TPT
 * HIV.D.DE1028: TPT regimen type | Type of TPT regimen the client is currently on
 * HIV.D.DE1029: 3HP | The client's current TPT regimen is 3HP
 * HIV.D.DE1030: 1HP | The client's current TPT regimen is 1HP
 * HIV.D.DE1031: 6H | The client's current TPT regimen is 6H
 * HIV.D.DE1032: Six months of levofloxacin daily | The client's current TPT regimen is six months of levofloxacin daily
 * HIV.D.DE1033: Other TB preventive treatment (TPT) regimen | The client's current TPT regimen is another regimen than those listed above
 * HIV.D.DE1034: TB preventive treatment (TPT) status | Indicates the current status of TB preventive treatment (TPT)
 * HIV.D.DE1035: Not started | The client did not start the TB preventive treatment (TPT)
 * HIV.D.DE1036: On TPT | The client started the TB preventive treatment (TPT) and is currently taking the medication, without treatment interruptions
 * HIV.D.DE1037: On TPT with interruptions | The client started the TB preventive treatment (TPT) and is currently taking the medication, with treatment interruptions
 * HIV.D.DE1038: On hold | The health care worker has temporarily stopped the TB preventive treatment (TPT), but TPT is expected to continue again later. May also be called &quot;suspended&quot;.
 * HIV.D.DE1039: Completed | TB preventive treatment (TPT) was completed
 * HIV.H.DE47: On ART | Client is currently taking ART 
 * HIV.SRV.DE6: ART start date | The date on which the client started or restarted antiretroviral therapy (ART)
 *
 * Additional Context
 * - what it measures: This indicator measures the effectiveness of scaled-up TPT programmes by assessing the proportion of patients who completed the recommended course of TPT.
 * - rationale: • Many countries have made progress in initiating eligible people living with HIV on TPT. However, rates of TPT completion remain poor or unknown. | • Assessment of TPT completion is a critical element of the TB/HIV cascade of services.
 * - method: For the numerator and denominator: Programme records (for example, ART registers) |  | Defining &quot;previous reporting period&quot;: For example, for annual reporting of January to December 2021, the previous reporting period is January to December 2020 (except for programmes with 1HP-exclusive national guidelines and implementation, in which case they may use January to December 2021). For quarterly or semi-annual reporting to the national level, the previous reporting period will depend on the TPT regimen and duration defined by national guidelines. |  | Note: For programmes using continuous isoniazid preventive therapy (IPT), TPT completion is defined as six months of treatment. | 
 * 
 * Suggested Scoring Method: proportion | http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/proportion-measure-cqfm
 */

library HIVIND45Logic

// Included Libraries
using FHIR version '4.0.1'

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

include WHOCommon called WCom

include HIVElements called HE
include HIVIndicatorElements called HIE

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

context Patient

/**
 * Indicator Definition
 */ 

/* Populations */

/*
 *Initial Population
 */

define &quot;Initial Population&quot;:
  true

/**
 * Numerator
 * 
 * Definition: Number of ART patients who completed a course of TPT during the reporting period
 * Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;On ART&quot;=True AND &quot;TB preventive treatment (TPT) start date&quot; in the previous period AND &quot;TB preventive treatment (TPT) status&quot;='Completed'
 */

define &quot;Numerator&quot;:
 HIE.&quot;Has HIV-positive Status&quot; and HIE.&quot;On ART&quot; and exists(HIE.&quot;TB preventive treatment TPT completed in measurement period&quot;)

/**
 * Denominator
 *
 * Definition: Number of ART patients who initiated any course of TPT during the previous reporting period
 * Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;On ART&quot;=True AND &quot;TB preventive treatment (TPT) start date&quot; in the prior reporting period
 */

define &quot;Denominator&quot;:
 HIE.&quot;Has HIV-positive Status&quot; and HIE.&quot;On ART&quot; and exists(HIE.&quot;TB preventive treatment TPT start date in previous measurement period&quot;)
    
/* end Populations */

/*
 * Disaggregation
 *
 *  • Gender (female, male, other*) 
 *  • Age (0–4, 5–9, 10–14, 15–19, 20–24, 25–29, 30–34, 35–39, 40–44, 45–49, 50+ years)** 
 *  • Type of TPT regimen 
 *  • ART initiation (&lt;12 months on ART, 12+ months on ART) 
 *  • Cities and other administrative regions of epidemiologic importance
 *
 */

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

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

define &quot;TPT Regimen Type Stratifier&quot;:
  HIE.&quot;TPT regimen type&quot;

define &quot;ART Initiation Stratifier&quot;:
  HIE.&quot;By ART initiation&quot;

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

/*
 * Combined stratifiers
 */
define &quot;Stratification&quot;:
  HIE.&quot;By Administrative Gender Stratifier&quot;.code 
    + ':' + HIE.&quot;By Age Stratifier&quot;
    + ':' + Combine(HIE.&quot;TPT regimen type&quot;.coding.code)
    + ':' + HIE.&quot;By ART initiation&quot;
	  + ':' + HIE.&quot;By Geographic Region Stratifier&quot;
</code></pre></td></tr>
            </table>
          </td>
        </tr>
        
        
        
    </table>
</div>
</div>
  </text>
  <extension
             url="http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability">
    <valueCode value="computable"/>
  </extension>
  <url value="http://smart.who.int/hiv/Library/HIVIND45Logic"/>
  <version value="0.4.3"/>
  <name value="HIVIND45Logic"/>
  <title value="HIV.IND.45 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="2025-02-07T14:15:45+00:00"/>
  <publisher value="WHO"/>
  <contact>
    <name value="WHO"/>
    <telecom>
      <system value="url"/>
      <value value="http://who.int"/>
    </telecom>
  </contact>
  <description
               value="Number and % of people living with HIV on ART who completed a course of TB preventive treatment among those who initiated TPT"/>
  <content>
    <contentType value="text/cql"/>
    <data
          value="LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuNDUgTG9naWMKICogUmVmIE5vOiBUQkguMgogKiBTaG9ydCBOYW1lOiBUUFQgY29tcGxldGlvbgogKgogKiBEZWZpbml0aW9uOiBOdW1iZXIgYW5kICUgb2YgcGVvcGxlIGxpdmluZyB3aXRoIEhJViBvbiBBUlQgd2hvIGNvbXBsZXRlZCBhIGNvdXJzZSBvZiBUQiBwcmV2ZW50aXZlIHRyZWF0bWVudCBhbW9uZyB0aG9zZSB3aG8gaW5pdGlhdGVkIFRQVAogKgogKiBOdW1lcmF0b3I6IE51bWJlciBvZiBBUlQgcGF0aWVudHMgd2hvIGNvbXBsZXRlZCBhIGNvdXJzZSBvZiBUUFQgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqIE51bWVyYXRvciBDYWxjdWxhdGlvbjogQ09VTlQgb2YgY2xpZW50cyB3aXRoICJISVYgc3RhdHVzIj0nSElWLXBvc2l0aXZlJyBBTkQgIk9uIEFSVCI9VHJ1ZSBBTkQgIlRCIHByZXZlbnRpdmUgdHJlYXRtZW50IChUUFQpIHN0YXJ0IGRhdGUiIGluIHRoZSBwcmV2aW91cyBwZXJpb2QgQU5EICJUQiBwcmV2ZW50aXZlIHRyZWF0bWVudCAoVFBUKSBzdGF0dXMiPSdDb21wbGV0ZWQnCiAqIE51bWVyYXRvciBFeGNsdXNpb25zOiAKICoKICogRGVub21pbmF0b3I6IE51bWJlciBvZiBBUlQgcGF0aWVudHMgd2hvIGluaXRpYXRlZCBhbnkgY291cnNlIG9mIFRQVCBkdXJpbmcgdGhlIHByZXZpb3VzIHJlcG9ydGluZyBwZXJpb2QKICogRGVub21pbmF0b3IgQ2FsY3VsYXRpb246IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgQU5EICJPbiBBUlQiPVRydWUgQU5EICJUQiBwcmV2ZW50aXZlIHRyZWF0bWVudCAoVFBUKSBzdGFydCBkYXRlIiBpbiB0aGUgcHJpb3IgcmVwb3J0aW5nIHBlcmlvZAogKiBEZW5vbWluYXRvciBFeGNsdXNpb25zOiAKICoKICogRGlzYWdncmVnYXRpb25zOgogKiDigKLCoEdlbmRlciAoZmVtYWxlLCBtYWxlLCBvdGhlciopIAogKiAg4oCiIEFnZSAoMOKAkzQsIDXigJM5LCAxMOKAkzE0LCAxNeKAkzE5LCAyMOKAkzI0LCAyNeKAkzI5LCAzMOKAkzM0LCAzNeKAkzM5LCA0MOKAkzQ0LCA0NeKAkzQ5LCA1MCsgeWVhcnMpKiogCiAqICDigKLCoFR5cGUgb2YgVFBUIHJlZ2ltZW4gCiAqICDigKIgQVJUIGluaXRpYXRpb24gKDwxMiBtb250aHMgb24gQVJULCAxMisgbW9udGhzIG9uIEFSVCkgCiAqICDigKIgQ2l0aWVzIGFuZCBvdGhlciBhZG1pbmlzdHJhdGl2ZSByZWdpb25zIG9mIGVwaWRlbWlvbG9naWMgaW1wb3J0YW5jZQogKgogKiBEaXNhZ2dyZWdhdGlvbiBFbGVtZW50czogR2VuZGVyIHwgQWdlIHwgVFBUIHJlZ2ltZW4gdHlwZSB8IEFSVCBzdGFydCBkYXRlICg8MTIgbW9udGhzIG9uIEFSVCwg4omlMTIgbW9udGhzIG9uIEFSVCkKICoKICogTnVtZXJhdG9yIGFuZCBEZW5vbWluYXRvciBFbGVtZW50czoKICogSElWIHN0YXR1cyAKICogIE9uIEFSVCAKICogIFRCIHByZXZlbnRpdmUgdHJlYXRtZW50IChUUFQpIHN0YXJ0IGRhdGUgCiAqICBUQiBwcmV2ZW50aXZlIHRyZWF0bWVudCAoVFBUKSBzdGF0dXMKICoKICogUmVmZXJlbmNlOiBDb25zb2xpZGF0ZWQgZ3VpZGVsaW5lcyBvbiBwZXJzb24tY2VudHJlZCBISVYgc3RyYXRlZ2ljIGluZm9ybWF0aW9uOiBzdHJlbmd0aGVuaW5nIHJvdXRpbmUgZGF0YSBmb3IgaW1wYWN0LiBHZW5ldmE6IFdvcmxkIEhlYWx0aCBPcmdhbml6YXRpb247IDIwMjIKICogCiAqIERhdGEgQ29uY2VwdHM6CiAqIEhJVi5BLkRFMTc6IEFnZSB8IENhbGN1bGF0ZWQgYWdlIChudW1iZXIgb2YgeWVhcnMpIG9mIHRoZSBjbGllbnQgYmFzZWQgb24gZGF0ZSBvZiBiaXJ0aAogKiBISVYuQS5ERTE4OiBHZW5kZXIqIHwgR2VuZGVyIG9mIHRoZSBjbGllbnQqCiAqIEhJVi5BLkRFMTk6IEZlbWFsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIGZlbWFsZQogKiBISVYuQS5ERTIwOiBNYWxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgbWFsZQogKiBISVYuQS5ERTIxOiBUcmFuc2dlbmRlciBtYWxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgdHJhbnNnZW5kZXIgbWFsZQogKiBISVYuQS5ERTIyOiBUcmFuc2dlbmRlciBmZW1hbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyB0cmFuc2dlbmRlciBmZW1hbGUKICogSElWLkEuREUyMzogT3RoZXIgfCBBZGRpdGlvbmFsIGNhdGVnb3J5CiAqIEhJVi5CLkRFNzI6IEFSVCBzdGFydCBkYXRlIHwgVGhlIGRhdGUgb24gd2hpY2ggdGhlIGNsaWVudCBzdGFydGVkIG9yIHJlc3RhcnRlZCBhbnRpcmV0cm92aXJhbCB0aGVyYXB5IChBUlQpCiAqIEhJVi5CLkRFMTE1OiBISVYgc3RhdHVzIHwgSElWIHN0YXR1cyByZXBvcnRlZCBhZnRlciBhcHBseWluZyB0aGUgbmF0aW9uYWwgSElWIHRlc3RpbmcgYWxnb3JpdGhtLiBObyBzaW5nbGUgSElWIHRlc3QgY2FuIHByb3ZpZGUgYW4gSElWLXBvc2l0aXZlIGRpYWdub3Npcy4KICogSElWLkIuREUxMTY6IEhJVi1wb3NpdGl2ZSB8IENsaWVudCBpcyBISVYtcG9zaXRpdmUKICogSElWLkIuREUxMTc6IEhJVi1uZWdhdGl2ZSB8IENsaWVudCBpcyBISVYtbmVnYXRpdmUKICogSElWLkIuREUxMTg6IFVua25vd24gfCBDbGllbnQgaGFzIHVua25vd24gSElWIHN0YXR1cwogKiBISVYuRC5ERTM4OiBPbiBBUlQgfCBDbGllbnQgaXMgY3VycmVudGx5IHRha2luZyBBUlQKICogSElWLkQuREUzOTogQVJUIHN0YXJ0IGRhdGUgfCBUaGUgZGF0ZSBvbiB3aGljaCB0aGUgY2xpZW50IHN0YXJ0ZWQgb3IgcmVzdGFydGVkIEFSVAogKiBISVYuRC5ERTk1NDogVEIgcHJldmVudGl2ZSB0cmVhdG1lbnQgKFRQVCkgc3RhcnQgZGF0ZSB8IFRoZSBkYXRlIG9uIHdoaWNoIHRoZSBjbGllbnQgYmVnYW4gdGFraW5nIFRQVAogKiBISVYuRC5ERTEwMjg6IFRQVCByZWdpbWVuIHR5cGUgfCBUeXBlIG9mIFRQVCByZWdpbWVuIHRoZSBjbGllbnQgaXMgY3VycmVudGx5IG9uCiAqIEhJVi5ELkRFMTAyOTogM0hQIHwgVGhlIGNsaWVudCdzIGN1cnJlbnQgVFBUIHJlZ2ltZW4gaXMgM0hQCiAqIEhJVi5ELkRFMTAzMDogMUhQIHwgVGhlIGNsaWVudCdzIGN1cnJlbnQgVFBUIHJlZ2ltZW4gaXMgMUhQCiAqIEhJVi5ELkRFMTAzMTogNkggfCBUaGUgY2xpZW50J3MgY3VycmVudCBUUFQgcmVnaW1lbiBpcyA2SAogKiBISVYuRC5ERTEwMzI6IFNpeCBtb250aHMgb2YgbGV2b2Zsb3hhY2luIGRhaWx5IHwgVGhlIGNsaWVudCdzIGN1cnJlbnQgVFBUIHJlZ2ltZW4gaXMgc2l4IG1vbnRocyBvZiBsZXZvZmxveGFjaW4gZGFpbHkKICogSElWLkQuREUxMDMzOiBPdGhlciBUQiBwcmV2ZW50aXZlIHRyZWF0bWVudCAoVFBUKSByZWdpbWVuIHwgVGhlIGNsaWVudCdzIGN1cnJlbnQgVFBUIHJlZ2ltZW4gaXMgYW5vdGhlciByZWdpbWVuIHRoYW4gdGhvc2UgbGlzdGVkIGFib3ZlCiAqIEhJVi5ELkRFMTAzNDogVEIgcHJldmVudGl2ZSB0cmVhdG1lbnQgKFRQVCkgc3RhdHVzIHwgSW5kaWNhdGVzIHRoZSBjdXJyZW50IHN0YXR1cyBvZiBUQiBwcmV2ZW50aXZlIHRyZWF0bWVudCAoVFBUKQogKiBISVYuRC5ERTEwMzU6IE5vdCBzdGFydGVkIHwgVGhlIGNsaWVudCBkaWQgbm90IHN0YXJ0IHRoZSBUQiBwcmV2ZW50aXZlIHRyZWF0bWVudCAoVFBUKQogKiBISVYuRC5ERTEwMzY6IE9uIFRQVCB8IFRoZSBjbGllbnQgc3RhcnRlZCB0aGUgVEIgcHJldmVudGl2ZSB0cmVhdG1lbnQgKFRQVCkgYW5kIGlzIGN1cnJlbnRseSB0YWtpbmcgdGhlIG1lZGljYXRpb24sIHdpdGhvdXQgdHJlYXRtZW50IGludGVycnVwdGlvbnMKICogSElWLkQuREUxMDM3OiBPbiBUUFQgd2l0aCBpbnRlcnJ1cHRpb25zIHwgVGhlIGNsaWVudCBzdGFydGVkIHRoZSBUQiBwcmV2ZW50aXZlIHRyZWF0bWVudCAoVFBUKSBhbmQgaXMgY3VycmVudGx5IHRha2luZyB0aGUgbWVkaWNhdGlvbiwgd2l0aCB0cmVhdG1lbnQgaW50ZXJydXB0aW9ucwogKiBISVYuRC5ERTEwMzg6IE9uIGhvbGQgfCBUaGUgaGVhbHRoIGNhcmUgd29ya2VyIGhhcyB0ZW1wb3JhcmlseSBzdG9wcGVkIHRoZSBUQiBwcmV2ZW50aXZlIHRyZWF0bWVudCAoVFBUKSwgYnV0IFRQVCBpcyBleHBlY3RlZCB0byBjb250aW51ZSBhZ2FpbiBsYXRlci4gTWF5IGFsc28gYmUgY2FsbGVkICJzdXNwZW5kZWQiLgogKiBISVYuRC5ERTEwMzk6IENvbXBsZXRlZCB8IFRCIHByZXZlbnRpdmUgdHJlYXRtZW50IChUUFQpIHdhcyBjb21wbGV0ZWQKICogSElWLkguREU0NzogT24gQVJUIHwgQ2xpZW50IGlzIGN1cnJlbnRseSB0YWtpbmcgQVJUIAogKiBISVYuU1JWLkRFNjogQVJUIHN0YXJ0IGRhdGUgfCBUaGUgZGF0ZSBvbiB3aGljaCB0aGUgY2xpZW50IHN0YXJ0ZWQgb3IgcmVzdGFydGVkIGFudGlyZXRyb3ZpcmFsIHRoZXJhcHkgKEFSVCkKICoKICogQWRkaXRpb25hbCBDb250ZXh0CiAqIC0gd2hhdCBpdCBtZWFzdXJlczogVGhpcyBpbmRpY2F0b3IgbWVhc3VyZXMgdGhlIGVmZmVjdGl2ZW5lc3Mgb2Ygc2NhbGVkLXVwIFRQVCBwcm9ncmFtbWVzIGJ5IGFzc2Vzc2luZyB0aGUgcHJvcG9ydGlvbiBvZiBwYXRpZW50cyB3aG8gY29tcGxldGVkIHRoZSByZWNvbW1lbmRlZCBjb3Vyc2Ugb2YgVFBULgogKiAtIHJhdGlvbmFsZTog4oCiwqBNYW55IGNvdW50cmllcyBoYXZlIG1hZGUgcHJvZ3Jlc3MgaW4gaW5pdGlhdGluZyBlbGlnaWJsZSBwZW9wbGUgbGl2aW5nIHdpdGggSElWIG9uIFRQVC4gSG93ZXZlciwgcmF0ZXMgb2YgVFBUIGNvbXBsZXRpb24gcmVtYWluIHBvb3Igb3IgdW5rbm93bi4gfCDigKLCoEFzc2Vzc21lbnQgb2YgVFBUIGNvbXBsZXRpb24gaXMgYSBjcml0aWNhbCBlbGVtZW50IG9mIHRoZSBUQi9ISVYgY2FzY2FkZSBvZiBzZXJ2aWNlcy4KICogLSBtZXRob2Q6IEZvciB0aGUgbnVtZXJhdG9yIGFuZCBkZW5vbWluYXRvcjogUHJvZ3JhbW1lIHJlY29yZHMgKGZvciBleGFtcGxlLCBBUlQgcmVnaXN0ZXJzKSB8ICB8IERlZmluaW5nICJwcmV2aW91cyByZXBvcnRpbmcgcGVyaW9kIjogRm9yIGV4YW1wbGUsIGZvciBhbm51YWwgcmVwb3J0aW5nIG9mIEphbnVhcnkgdG8gRGVjZW1iZXIgMjAyMSwgdGhlIHByZXZpb3VzIHJlcG9ydGluZyBwZXJpb2QgaXMgSmFudWFyeSB0byBEZWNlbWJlciAyMDIwIChleGNlcHQgZm9yIHByb2dyYW1tZXMgd2l0aCAxSFAtZXhjbHVzaXZlIG5hdGlvbmFsIGd1aWRlbGluZXMgYW5kIGltcGxlbWVudGF0aW9uLCBpbiB3aGljaCBjYXNlIHRoZXkgbWF5IHVzZSBKYW51YXJ5IHRvIERlY2VtYmVyIDIwMjEpLiBGb3IgcXVhcnRlcmx5IG9yIHNlbWktYW5udWFsIHJlcG9ydGluZyB0byB0aGUgbmF0aW9uYWwgbGV2ZWwsIHRoZSBwcmV2aW91cyByZXBvcnRpbmcgcGVyaW9kIHdpbGwgZGVwZW5kIG9uIHRoZSBUUFQgcmVnaW1lbiBhbmQgZHVyYXRpb24gZGVmaW5lZCBieSBuYXRpb25hbCBndWlkZWxpbmVzLiB8ICB8IE5vdGU6IEZvciBwcm9ncmFtbWVzIHVzaW5nIGNvbnRpbnVvdXMgaXNvbmlhemlkIHByZXZlbnRpdmUgdGhlcmFweSAoSVBUKSwgVFBUIGNvbXBsZXRpb24gaXMgZGVmaW5lZCBhcyBzaXggbW9udGhzIG9mIHRyZWF0bWVudC4gfCAKICogCiAqIFN1Z2dlc3RlZCBTY29yaW5nIE1ldGhvZDogcHJvcG9ydGlvbiB8IGh0dHA6Ly9obDcub3JnL2ZoaXIvdXMvY3FmbWVhc3VyZXMvU3RydWN0dXJlRGVmaW5pdGlvbi9wcm9wb3J0aW9uLW1lYXN1cmUtY3FmbQogKi8KCmxpYnJhcnkgSElWSU5ENDVMb2dpYwoKLy8gSW5jbHVkZWQgTGlicmFyaWVzCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIEhJVkNvbW1vbiB2ZXJzaW9uICcwLjAuMScgY2FsbGVkIEhJQwppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJwoKaW5jbHVkZSBXSE9Db21tb24gY2FsbGVkIFdDb20KCmluY2x1ZGUgSElWRWxlbWVudHMgY2FsbGVkIEhFCmluY2x1ZGUgSElWSW5kaWNhdG9yRWxlbWVudHMgY2FsbGVkIEhJRQoKcGFyYW1ldGVyICJNZWFzdXJlbWVudCBQZXJpb2QiIEludGVydmFsPERhdGU+IGRlZmF1bHQgSW50ZXJ2YWxbQDIwMjMtMDEtMDEsIEAyMDIzLTAxLTMwXQoKY29udGV4dCBQYXRpZW50CgovKioKICogSW5kaWNhdG9yIERlZmluaXRpb24KICovIAoKLyogUG9wdWxhdGlvbnMgKi8KCi8qCiAqSW5pdGlhbCBQb3B1bGF0aW9uCiAqLwoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24iOgogIHRydWUKCi8qKgogKiBOdW1lcmF0b3IKICogCiAqIERlZmluaXRpb246IE51bWJlciBvZiBBUlQgcGF0aWVudHMgd2hvIGNvbXBsZXRlZCBhIGNvdXJzZSBvZiBUUFQgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBjbGllbnRzIHdpdGggIkhJViBzdGF0dXMiPSdISVYtcG9zaXRpdmUnIEFORCAiT24gQVJUIj1UcnVlIEFORCAiVEIgcHJldmVudGl2ZSB0cmVhdG1lbnQgKFRQVCkgc3RhcnQgZGF0ZSIgaW4gdGhlIHByZXZpb3VzIHBlcmlvZCBBTkQgIlRCIHByZXZlbnRpdmUgdHJlYXRtZW50IChUUFQpIHN0YXR1cyI9J0NvbXBsZXRlZCcKICovCgpkZWZpbmUgIk51bWVyYXRvciI6CiBISUUuIkhhcyBISVYtcG9zaXRpdmUgU3RhdHVzIiBhbmQgSElFLiJPbiBBUlQiIGFuZCBleGlzdHMoSElFLiJUQiBwcmV2ZW50aXZlIHRyZWF0bWVudCBUUFQgY29tcGxldGVkIGluIG1lYXN1cmVtZW50IHBlcmlvZCIpCgovKioKICogRGVub21pbmF0b3IKICoKICogRGVmaW5pdGlvbjogTnVtYmVyIG9mIEFSVCBwYXRpZW50cyB3aG8gaW5pdGlhdGVkIGFueSBjb3Vyc2Ugb2YgVFBUIGR1cmluZyB0aGUgcHJldmlvdXMgcmVwb3J0aW5nIHBlcmlvZAogKiBDYWxjdWxhdGlvbjogQ09VTlQgb2YgY2xpZW50cyB3aXRoICJISVYgc3RhdHVzIj0nSElWLXBvc2l0aXZlJyBBTkQgIk9uIEFSVCI9VHJ1ZSBBTkQgIlRCIHByZXZlbnRpdmUgdHJlYXRtZW50IChUUFQpIHN0YXJ0IGRhdGUiIGluIHRoZSBwcmlvciByZXBvcnRpbmcgcGVyaW9kCiAqLwoKZGVmaW5lICJEZW5vbWluYXRvciI6CiBISUUuIkhhcyBISVYtcG9zaXRpdmUgU3RhdHVzIiBhbmQgSElFLiJPbiBBUlQiIGFuZCBleGlzdHMoSElFLiJUQiBwcmV2ZW50aXZlIHRyZWF0bWVudCBUUFQgc3RhcnQgZGF0ZSBpbiBwcmV2aW91cyBtZWFzdXJlbWVudCBwZXJpb2QiKQogICAgCi8qIGVuZCBQb3B1bGF0aW9ucyAqLwoKLyoKICogRGlzYWdncmVnYXRpb24KICoKICogIOKAosKgR2VuZGVyIChmZW1hbGUsIG1hbGUsIG90aGVyKikgCiAqICDigKIgQWdlICgw4oCTNCwgNeKAkzksIDEw4oCTMTQsIDE14oCTMTksIDIw4oCTMjQsIDI14oCTMjksIDMw4oCTMzQsIDM14oCTMzksIDQw4oCTNDQsIDQ14oCTNDksIDUwKyB5ZWFycykqKiAKICogIOKAosKgVHlwZSBvZiBUUFQgcmVnaW1lbiAKICogIOKAoiBBUlQgaW5pdGlhdGlvbiAoPDEyIG1vbnRocyBvbiBBUlQsIDEyKyBtb250aHMgb24gQVJUKSAKICogIOKAoiBDaXRpZXMgYW5kIG90aGVyIGFkbWluaXN0cmF0aXZlIHJlZ2lvbnMgb2YgZXBpZGVtaW9sb2dpYyBpbXBvcnRhbmNlCiAqCiAqLwoKZGVmaW5lICJBZG1pbmlzdHJhdGl2ZSBHZW5kZXIgU3RyYXRpZmllciI6CglISUUuIkJ5IEFkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyIgoKZGVmaW5lICJBZ2UgU3RyYXRpZmllciI6CiAgSElFLiJCeSBBZ2UgU3RyYXRpZmllciIKCmRlZmluZSAiVFBUIFJlZ2ltZW4gVHlwZSBTdHJhdGlmaWVyIjoKICBISUUuIlRQVCByZWdpbWVuIHR5cGUiCgpkZWZpbmUgIkFSVCBJbml0aWF0aW9uIFN0cmF0aWZpZXIiOgogIEhJRS4iQnkgQVJUIGluaXRpYXRpb24iCgpkZWZpbmUgIkdlb2dyYXBoaWMgUmVnaW9uIFN0cmF0aWZpZXIiOgogIEhJRS4iQnkgR2VvZ3JhcGhpYyBSZWdpb24gU3RyYXRpZmllciIKCi8qCiAqIENvbWJpbmVkIHN0cmF0aWZpZXJzCiAqLwpkZWZpbmUgIlN0cmF0aWZpY2F0aW9uIjoKICBISUUuIkJ5IEFkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyIi5jb2RlIAogICAgKyAnOicgKyBISUUuIkJ5IEFnZSBTdHJhdGlmaWVyIgogICAgKyAnOicgKyBDb21iaW5lKEhJRS4iVFBUIHJlZ2ltZW4gdHlwZSIuY29kaW5nLmNvZGUpCiAgICArICc6JyArIEhJRS4iQnkgQVJUIGluaXRpYXRpb24iCgkgICsgJzonICsgSElFLiJCeSBHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyIgo="/>
  </content>
</Library>