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.46 Logic - JSON Representation

Draft as of 2025-02-07

Raw json | Download

{
  "resourceType" : "Library",
  "id" : "HIVIND46Logic",
  "meta" : {
    "profile" : [
      🔗 "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary"🔗 ,
      "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary"🔗 ,
      "http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library"🔗 ,
      "http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module"
    ]
  },
  "text" : {
    "status" : "extensions",
    "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n<div>\n    <table class=\"grid dict\">\n        \n        \n        <tr>\n            <th scope=\"row\"><b>Title: </b></th>\n            <td style=\"padding-left: 4px;\">HIV.IND.46 Logic</td>\n        </tr>\n        \n\n        \n        \n        <tr>\n            <th scope=\"row\"><b>Id: </b></th>\n            <td style=\"padding-left: 4px;\">HIVIND46Logic</td>\n        </tr>\n        \n\n        \n        \n        <tr>\n            <th scope=\"row\"><b>Version: </b></th>\n            <td style=\"padding-left: 4px;\">0.4.3</td>\n        </tr>\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Url: </b></th>\n            <td style=\"padding-left: 4px;\"><a href=\"Library-HIVIND46Logic.html\">HIV.IND.46 Logic</a></td>\n        </tr>\n        \n\n        \n\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Status: </b></th>\n            <td style=\"padding-left: 4px;\">draft</td>\n        </tr>\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Experimental: </b></th>\n            <td style=\"padding-left: 4px;\">true</td>\n        </tr>\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Type: </b></th>\n            <td style=\"padding-left: 4px;\">\n                \n                    \n                        \n                        <p style=\"margin-bottom: 5px;\">\n                            <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>\n                        </p>\n                        \n                        \n                        <p style=\"margin-bottom: 5px;\">\n                            <b>code: </b> <span>logic-library</span>\n                        </p>\n                        \n                        \n                    \n                \n                \n            </td>\n        </tr>\n        \n\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Date: </b></th>\n            <td style=\"padding-left: 4px;\">2025-02-07 14:15:45+0000</td>\n        </tr>\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Publisher: </b></th>\n            <td style=\"padding-left: 4px;\">WHO</td>\n        </tr>\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Description: </b></th>\n            <td style=\"padding-left: 4px;\"><div><p>% of people living with HIV with TB symptoms who receive a rapid molecular test, for example, Xpert MTB/RIF, as a first test for diagnosis of TB</p>\n</div></td>\n        </tr>\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n        \n        <tr>\n          <td colspan=\"2\">\n            <table>\n              <tr><th><a id=\"cql-content\"><b>Content: </b></a> text/cql</th></tr>\n              <tr><td><pre><code class=\"language-cql\">/**\n * Library: HIV.IND.46 Logic\n * Ref No: TBH.3\n * Short Name: TB diagnostic testing type\n *\n * Definition: % of people living with HIV with TB symptoms who receive a rapid molecular test, for example, Xpert MTB/RIF, as a first test for diagnosis of TB\n *\n * Numerator: Number of people living with HIV and having TB symptoms who were tested using a rapid molecular test (for example, Xpert MTB/RIF) as a first test during the reporting period\n * Numerator Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;TB screening date&quot; in the reporting period AND &quot;TB screening result&quot;='Screen positive for TB' AND &quot;TB diagnostic test category&quot;='mWRD test for TB'\n * Numerator Exclusions: \n *\n * Denominator: Number of people living with HIV who are screened for TB and found to have symptoms during the reporting period\n * Denominator Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;TB screening date&quot; in the reporting period AND &quot;TB screening result&quot;='Screen positive for TB'\n * Denominator Exclusions: \n *\n * Disaggregations:\n * •\u00a0Gender (female, male, other*) \n *  •\u00a0Age (0–4, 5–9, 10–14, 15–19, 20–24, 25–29, 30–34, 35–39, 40–44, 45–49, 50+ years)** \n *  •\u00a0Key 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)*** \n *  •\u00a0Pregnant or breastfeeding women \n *  • Cities and other administrative regions of epidemiologic importance\n *\n * Disaggregation Elements: Gender | Age | Key population member type | Currently pregnant | Breastfeeding\n *\n * Numerator and Denominator Elements:\n * HIV status \n *  TB diagnostic test category \n *  TB screening date \n *  TB screening result\n *\n * Reference: Consolidated guidelines on person-centred HIV strategic information: strengthening routine data for impact. Geneva: World Health Organization; 2022\n * \n * Data Concepts:\n * HIV.A.DE17: Age | Calculated age (number of years) of the client based on date of birth\n * HIV.A.DE18: Gender* | Gender of the client*\n * HIV.A.DE19: Female | Client identifies as female\n * HIV.A.DE20: Male | Client identifies as male\n * HIV.A.DE21: Transgender male | Client identifies as transgender male\n * HIV.A.DE22: Transgender female | Client identifies as transgender female\n * HIV.A.DE23: Other | Additional category\n * HIV.B.DE29: Currently pregnant | Client is currently pregnant\n * HIV.B.DE32: Breastfeeding | Infant is being breastfed by mother\n * HIV.B.DE50: Key population member type* | The type of key population that the client is included in\n * HIV.B.DE51: Sex worker | Client is a sex worker\n * HIV.B.DE52: Men who have sex with men | Client is a man who has sex with men\n * HIV.B.DE53: Trans and gender-diverse people | Client identifies as trans and gender-diverse\n * HIV.B.DE54: People who inject drugs | Client is a person who injects drugs\n * HIV.B.DE55: People living in prisons and other closed settings | Client lives in a prison or another closed setting\n * 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.\n * HIV.B.DE116: HIV-positive | Client is HIV-positive\n * HIV.B.DE117: HIV-negative | Client is HIV-negative\n * HIV.B.DE118: Unknown | Client has unknown HIV status\n * HIV.D.DE31: Currently pregnant | Client is currently pregnant\n * HIV.D.DE32: Breastfeeding | Client is giving infant breast milk\n * HIV.D.DE986: TB screening result | Record the result of the tuberculosis (TB) screening\n * HIV.D.DE987: Screen positive for TB | Screening result was positive for tuberculosis (TB)\n * HIV.D.DE988: Screen negative for TB | Screening result was negative for tuberculosis (TB)\n * HIV.D.DE989: Inconclusive | Screening result was inconclusive for tuberculosis (TB)\n * HIV.D.DE990: TB screening date | Date the TB screening was conducted\n * HIV.D.DE992: TB diagnostic test category | The type of diagnostic test performed to detect tuberculosis (TB) disease\n * HIV.D.DE993: LF-LAM | Client tested for tuberculosis with a lateral flow urine lipoarabinomannan assay\n * HIV.D.DE994: mWRD test for TB | Client tested with a WHO-recommended molecular diagnostic test to detect Mycobacterium tuberculosis (MTB)\n * HIV.D.DE995: Microscopy - Sputum acid-fast bacilli (AFB) | Client tested for tuberculosis with a sputum acid-fast bacilli (AFB)\n * HIV.D.DE996: TB Culture | Client tested for tuberculosis (TB) with a culture\n * HIV.E.DE114: Key population member type* | The type of key population that the infant's mother is included in\n * HIV.E.DE115: Sex worker | Infant's mother is a sex worker\n * HIV.E.DE116: People who inject drugs | Infant's mother is a person who injects drugs\n * HIV.E.DE117: Trans and gender-diverse people | Infant's mother identifies as trans and gender-diverse\n * HIV.E.DE118: People living in prisons and other closed setting | Infant's mother is in a prison or closed setting\n * HIV.SRV.DE7: Currently pregnant | Client is currently pregnant\n *\n * Additional Context\n * - what it measures: This indicator measures the proportion of people living with HIV who screen positive for TB symptoms who receive a recommended test for diagnosis of TB.\n * - rationale: • People living with HIV should be screened for TB symptoms and, if found positive, be tested for TB. | • WHO recommends rapid-diagnostic molecular tests, for example, Xpert MTB/RIF, as the first test for diagnosis of TB among people living with HIV.\n * - method: For the numerator and denominator: Programme records (for example, laboratory register for smear microscopy and Xpert MTB/RIF, ART registers)\n * \n * Suggested Scoring Method: proportion | http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/proportion-measure-cqfm\n */\n\nlibrary HIVIND46Logic\n\n// Included Libraries\nusing FHIR version '4.0.1'\n\ninclude HIVCommon version '0.0.1' called HIC\ninclude FHIRHelpers version '4.0.1'\n\ninclude WHOCommon called WCom\ninclude HIVElements called HE\ninclude HIVIndicatorElements called HIE\n\n// Indicator Definition\nparameter &quot;Measurement Period&quot; Interval&lt;Date&gt; default Interval[@2023-01-01, @2023-01-30]\n\ncontext Patient\n/* Populations */\n\n/*\n *Initial Population\n */\n\ndefine &quot;Initial Population&quot;:\n  true\n\n/**\n * Numerator\n * \n * Definition: Number of people living with HIV and having TB symptoms who were tested using a rapid molecular test (for example, Xpert MTB/RIF) as a first test during the reporting period\n * Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;TB screening date&quot; in the reporting period AND &quot;TB screening result&quot;='Screen positive for TB' AND &quot;TB diagnostic test category&quot;='mWRD test for TB'\n */\n\n\n\ndefine &quot;Numerator&quot;:\n  HIE.&quot;Has HIV-positive Status&quot;\n  and \n  //I related the two because otherwise a positive observation could come from another test type and be counted. \n  exists(\n    HE.&quot;mWRD test for TB&quot; P\n    with HE.&quot;Screen positive for TB&quot; O\n      such that P.partOf.references(O)\n    where P.performed.toInterval() during &quot;Measurement Period&quot;\n  )\n\n/**\n * Denominator\n *\n * Definition: Number of people living with HIV who are screened for TB and found to have symptoms during the reporting period\n * Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;TB screening date&quot; in the reporting period AND &quot;TB screening result&quot;='Screen positive for TB'\n */\n\ndefine &quot;Denominator&quot;:\n  HIE.&quot;Has HIV-positive Status&quot;\n  and \n  exists(\n    HE.&quot;TB diagnostic test category&quot; P\n    with HE.&quot;Screen positive for TB&quot; O\n      such that P.partOf.references(O)\n    where P.performed.toInterval() during &quot;Measurement Period&quot;\n  )\n    \n\n/* end Populations */\n\n/*\n * Disaggregators\n */\n\ndefine &quot;Administrative Gender Stratifier&quot;:\n\tHIE.&quot;By Administrative Gender Stratifier&quot;\n\ndefine &quot;Age Stratifier&quot;:\n\tHIE.&quot;By Age Stratifier&quot;\n\ndefine &quot;Geographic Region Stratifier&quot;:\n\tHIE.&quot;By Geographic Region Stratifier&quot;\n\ndefine &quot;patientGroups Stratifier&quot;:\n\tHIE.&quot;patientGroups&quot;\n\ndefine &quot;pregnancy stratifier&quot;:\n  HIE.&quot;pregnancy stratifier&quot;\n\ndefine &quot;Stratification&quot;:\n HIE.&quot;By Administrative Gender Stratifier&quot;.code \n  + ':' + HIE.&quot;By Age Stratifier&quot;\n+ ':' + HIE.&quot;By Geographic Region Stratifier&quot;\n+ Combine(HIE.patientGroups, ':')\n+ HIE.&quot;pregnancy stratifier&quot;.code\n</code></pre></td></tr>\n            </table>\n          </td>\n        </tr>\n        \n        \n        \n    </table>\n</div>\n</div>"
  },
  "extension" : [
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability",
      "valueCode" : "computable"
    }
  ],
  "url" : "http://smart.who.int/hiv/Library/HIVIND46Logic",
  "version" : "0.4.3",
  "name" : "HIVIND46Logic",
  "title" : "HIV.IND.46 Logic",
  "status" : "draft",
  "experimental" : true,
  "type" : {
    "coding" : [
      {
        "system" : "http://terminology.hl7.org/CodeSystem/library-type",
        "code" : "logic-library"
      }
    ]
  },
  "date" : "2025-02-07T14:15:45+00:00",
  "publisher" : "WHO",
  "contact" : [
    {
      "name" : "WHO",
      "telecom" : [
        {
          "system" : "url",
          "value" : "http://who.int"
        }
      ]
    }
  ],
  "description" : "% of people living with HIV with TB symptoms who receive a rapid molecular test, for example, Xpert MTB/RIF, as a first test for diagnosis of TB",
  "content" : [
    {
      "contentType" : "text/cql",
      "data" : "LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuNDYgTG9naWMKICogUmVmIE5vOiBUQkguMwogKiBTaG9ydCBOYW1lOiBUQiBkaWFnbm9zdGljIHRlc3RpbmcgdHlwZQogKgogKiBEZWZpbml0aW9uOiAlIG9mIHBlb3BsZSBsaXZpbmcgd2l0aCBISVYgd2l0aCBUQiBzeW1wdG9tcyB3aG8gcmVjZWl2ZSBhIHJhcGlkIG1vbGVjdWxhciB0ZXN0LCBmb3IgZXhhbXBsZSwgWHBlcnQgTVRCL1JJRiwgYXMgYSBmaXJzdCB0ZXN0IGZvciBkaWFnbm9zaXMgb2YgVEIKICoKICogTnVtZXJhdG9yOiBOdW1iZXIgb2YgcGVvcGxlIGxpdmluZyB3aXRoIEhJViBhbmQgaGF2aW5nIFRCIHN5bXB0b21zIHdobyB3ZXJlIHRlc3RlZCB1c2luZyBhIHJhcGlkIG1vbGVjdWxhciB0ZXN0IChmb3IgZXhhbXBsZSwgWHBlcnQgTVRCL1JJRikgYXMgYSBmaXJzdCB0ZXN0IGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKiBOdW1lcmF0b3IgQ2FsY3VsYXRpb246IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgQU5EICJUQiBzY3JlZW5pbmcgZGF0ZSIgaW4gdGhlIHJlcG9ydGluZyBwZXJpb2QgQU5EICJUQiBzY3JlZW5pbmcgcmVzdWx0Ij0nU2NyZWVuIHBvc2l0aXZlIGZvciBUQicgQU5EICJUQiBkaWFnbm9zdGljIHRlc3QgY2F0ZWdvcnkiPSdtV1JEIHRlc3QgZm9yIFRCJwogKiBOdW1lcmF0b3IgRXhjbHVzaW9uczogCiAqCiAqIERlbm9taW5hdG9yOiBOdW1iZXIgb2YgcGVvcGxlIGxpdmluZyB3aXRoIEhJViB3aG8gYXJlIHNjcmVlbmVkIGZvciBUQiBhbmQgZm91bmQgdG8gaGF2ZSBzeW1wdG9tcyBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QKICogRGVub21pbmF0b3IgQ2FsY3VsYXRpb246IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgQU5EICJUQiBzY3JlZW5pbmcgZGF0ZSIgaW4gdGhlIHJlcG9ydGluZyBwZXJpb2QgQU5EICJUQiBzY3JlZW5pbmcgcmVzdWx0Ij0nU2NyZWVuIHBvc2l0aXZlIGZvciBUQicKICogRGVub21pbmF0b3IgRXhjbHVzaW9uczogCiAqCiAqIERpc2FnZ3JlZ2F0aW9uczoKICog4oCiwqBHZW5kZXIgKGZlbWFsZSwgbWFsZSwgb3RoZXIqKSAKICogIOKAosKgQWdlICgw4oCTNCwgNeKAkzksIDEw4oCTMTQsIDE14oCTMTksIDIw4oCTMjQsIDI14oCTMjksIDMw4oCTMzQsIDM14oCTMzksIDQw4oCTNDQsIDQ14oCTNDksIDUwKyB5ZWFycykqKiAKICogIOKAosKgS2V5IHBvcHVsYXRpb25zIChtZW4gd2hvIGhhdmUgc2V4IHdpdGggbWVuLCBwZW9wbGUgbGl2aW5nIGluIHByaXNvbnMgYW5kIG90aGVyIGNsb3NlZCBzZXR0aW5ncywgcGVvcGxlIHdobyBpbmplY3QgZHJ1Z3MsIHNleCB3b3JrZXJzLCB0cmFucyBhbmQgZ2VuZGVyIGRpdmVyc2UgcGVvcGxlKSoqKiAKICogIOKAosKgUHJlZ25hbnQgb3IgYnJlYXN0ZmVlZGluZyB3b21lbiAKICogIOKAoiBDaXRpZXMgYW5kIG90aGVyIGFkbWluaXN0cmF0aXZlIHJlZ2lvbnMgb2YgZXBpZGVtaW9sb2dpYyBpbXBvcnRhbmNlCiAqCiAqIERpc2FnZ3JlZ2F0aW9uIEVsZW1lbnRzOiBHZW5kZXIgfCBBZ2UgfCBLZXkgcG9wdWxhdGlvbiBtZW1iZXIgdHlwZSB8IEN1cnJlbnRseSBwcmVnbmFudCB8IEJyZWFzdGZlZWRpbmcKICoKICogTnVtZXJhdG9yIGFuZCBEZW5vbWluYXRvciBFbGVtZW50czoKICogSElWIHN0YXR1cyAKICogIFRCIGRpYWdub3N0aWMgdGVzdCBjYXRlZ29yeSAKICogIFRCIHNjcmVlbmluZyBkYXRlIAogKiAgVEIgc2NyZWVuaW5nIHJlc3VsdAogKgogKiBSZWZlcmVuY2U6IENvbnNvbGlkYXRlZCBndWlkZWxpbmVzIG9uIHBlcnNvbi1jZW50cmVkIEhJViBzdHJhdGVnaWMgaW5mb3JtYXRpb246IHN0cmVuZ3RoZW5pbmcgcm91dGluZSBkYXRhIGZvciBpbXBhY3QuIEdlbmV2YTogV29ybGQgSGVhbHRoIE9yZ2FuaXphdGlvbjsgMjAyMgogKiAKICogRGF0YSBDb25jZXB0czoKICogSElWLkEuREUxNzogQWdlIHwgQ2FsY3VsYXRlZCBhZ2UgKG51bWJlciBvZiB5ZWFycykgb2YgdGhlIGNsaWVudCBiYXNlZCBvbiBkYXRlIG9mIGJpcnRoCiAqIEhJVi5BLkRFMTg6IEdlbmRlciogfCBHZW5kZXIgb2YgdGhlIGNsaWVudCoKICogSElWLkEuREUxOTogRmVtYWxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgZmVtYWxlCiAqIEhJVi5BLkRFMjA6IE1hbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyBtYWxlCiAqIEhJVi5BLkRFMjE6IFRyYW5zZ2VuZGVyIG1hbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyB0cmFuc2dlbmRlciBtYWxlCiAqIEhJVi5BLkRFMjI6IFRyYW5zZ2VuZGVyIGZlbWFsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIHRyYW5zZ2VuZGVyIGZlbWFsZQogKiBISVYuQS5ERTIzOiBPdGhlciB8IEFkZGl0aW9uYWwgY2F0ZWdvcnkKICogSElWLkIuREUyOTogQ3VycmVudGx5IHByZWduYW50IHwgQ2xpZW50IGlzIGN1cnJlbnRseSBwcmVnbmFudAogKiBISVYuQi5ERTMyOiBCcmVhc3RmZWVkaW5nIHwgSW5mYW50IGlzIGJlaW5nIGJyZWFzdGZlZCBieSBtb3RoZXIKICogSElWLkIuREU1MDogS2V5IHBvcHVsYXRpb24gbWVtYmVyIHR5cGUqIHwgVGhlIHR5cGUgb2Yga2V5IHBvcHVsYXRpb24gdGhhdCB0aGUgY2xpZW50IGlzIGluY2x1ZGVkIGluCiAqIEhJVi5CLkRFNTE6IFNleCB3b3JrZXIgfCBDbGllbnQgaXMgYSBzZXggd29ya2VyCiAqIEhJVi5CLkRFNTI6IE1lbiB3aG8gaGF2ZSBzZXggd2l0aCBtZW4gfCBDbGllbnQgaXMgYSBtYW4gd2hvIGhhcyBzZXggd2l0aCBtZW4KICogSElWLkIuREU1MzogVHJhbnMgYW5kIGdlbmRlci1kaXZlcnNlIHBlb3BsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIHRyYW5zIGFuZCBnZW5kZXItZGl2ZXJzZQogKiBISVYuQi5ERTU0OiBQZW9wbGUgd2hvIGluamVjdCBkcnVncyB8IENsaWVudCBpcyBhIHBlcnNvbiB3aG8gaW5qZWN0cyBkcnVncwogKiBISVYuQi5ERTU1OiBQZW9wbGUgbGl2aW5nIGluIHByaXNvbnMgYW5kIG90aGVyIGNsb3NlZCBzZXR0aW5ncyB8IENsaWVudCBsaXZlcyBpbiBhIHByaXNvbiBvciBhbm90aGVyIGNsb3NlZCBzZXR0aW5nCiAqIEhJVi5CLkRFMTE1OiBISVYgc3RhdHVzIHwgSElWIHN0YXR1cyByZXBvcnRlZCBhZnRlciBhcHBseWluZyB0aGUgbmF0aW9uYWwgSElWIHRlc3RpbmcgYWxnb3JpdGhtLiBObyBzaW5nbGUgSElWIHRlc3QgY2FuIHByb3ZpZGUgYW4gSElWLXBvc2l0aXZlIGRpYWdub3Npcy4KICogSElWLkIuREUxMTY6IEhJVi1wb3NpdGl2ZSB8IENsaWVudCBpcyBISVYtcG9zaXRpdmUKICogSElWLkIuREUxMTc6IEhJVi1uZWdhdGl2ZSB8IENsaWVudCBpcyBISVYtbmVnYXRpdmUKICogSElWLkIuREUxMTg6IFVua25vd24gfCBDbGllbnQgaGFzIHVua25vd24gSElWIHN0YXR1cwogKiBISVYuRC5ERTMxOiBDdXJyZW50bHkgcHJlZ25hbnQgfCBDbGllbnQgaXMgY3VycmVudGx5IHByZWduYW50CiAqIEhJVi5ELkRFMzI6IEJyZWFzdGZlZWRpbmcgfCBDbGllbnQgaXMgZ2l2aW5nIGluZmFudCBicmVhc3QgbWlsawogKiBISVYuRC5ERTk4NjogVEIgc2NyZWVuaW5nIHJlc3VsdCB8IFJlY29yZCB0aGUgcmVzdWx0IG9mIHRoZSB0dWJlcmN1bG9zaXMgKFRCKSBzY3JlZW5pbmcKICogSElWLkQuREU5ODc6IFNjcmVlbiBwb3NpdGl2ZSBmb3IgVEIgfCBTY3JlZW5pbmcgcmVzdWx0IHdhcyBwb3NpdGl2ZSBmb3IgdHViZXJjdWxvc2lzIChUQikKICogSElWLkQuREU5ODg6IFNjcmVlbiBuZWdhdGl2ZSBmb3IgVEIgfCBTY3JlZW5pbmcgcmVzdWx0IHdhcyBuZWdhdGl2ZSBmb3IgdHViZXJjdWxvc2lzIChUQikKICogSElWLkQuREU5ODk6IEluY29uY2x1c2l2ZSB8IFNjcmVlbmluZyByZXN1bHQgd2FzIGluY29uY2x1c2l2ZSBmb3IgdHViZXJjdWxvc2lzIChUQikKICogSElWLkQuREU5OTA6IFRCIHNjcmVlbmluZyBkYXRlIHwgRGF0ZSB0aGUgVEIgc2NyZWVuaW5nIHdhcyBjb25kdWN0ZWQKICogSElWLkQuREU5OTI6IFRCIGRpYWdub3N0aWMgdGVzdCBjYXRlZ29yeSB8IFRoZSB0eXBlIG9mIGRpYWdub3N0aWMgdGVzdCBwZXJmb3JtZWQgdG8gZGV0ZWN0IHR1YmVyY3Vsb3NpcyAoVEIpIGRpc2Vhc2UKICogSElWLkQuREU5OTM6IExGLUxBTSB8IENsaWVudCB0ZXN0ZWQgZm9yIHR1YmVyY3Vsb3NpcyB3aXRoIGEgbGF0ZXJhbCBmbG93IHVyaW5lIGxpcG9hcmFiaW5vbWFubmFuIGFzc2F5CiAqIEhJVi5ELkRFOTk0OiBtV1JEIHRlc3QgZm9yIFRCIHwgQ2xpZW50IHRlc3RlZCB3aXRoIGEgV0hPLXJlY29tbWVuZGVkIG1vbGVjdWxhciBkaWFnbm9zdGljIHRlc3QgdG8gZGV0ZWN0IE15Y29iYWN0ZXJpdW0gdHViZXJjdWxvc2lzIChNVEIpCiAqIEhJVi5ELkRFOTk1OiBNaWNyb3Njb3B5IC0gU3B1dHVtIGFjaWQtZmFzdCBiYWNpbGxpIChBRkIpIHwgQ2xpZW50IHRlc3RlZCBmb3IgdHViZXJjdWxvc2lzIHdpdGggYSBzcHV0dW0gYWNpZC1mYXN0IGJhY2lsbGkgKEFGQikKICogSElWLkQuREU5OTY6IFRCIEN1bHR1cmUgfCBDbGllbnQgdGVzdGVkIGZvciB0dWJlcmN1bG9zaXMgKFRCKSB3aXRoIGEgY3VsdHVyZQogKiBISVYuRS5ERTExNDogS2V5IHBvcHVsYXRpb24gbWVtYmVyIHR5cGUqIHwgVGhlIHR5cGUgb2Yga2V5IHBvcHVsYXRpb24gdGhhdCB0aGUgaW5mYW50J3MgbW90aGVyIGlzIGluY2x1ZGVkIGluCiAqIEhJVi5FLkRFMTE1OiBTZXggd29ya2VyIHwgSW5mYW50J3MgbW90aGVyIGlzIGEgc2V4IHdvcmtlcgogKiBISVYuRS5ERTExNjogUGVvcGxlIHdobyBpbmplY3QgZHJ1Z3MgfCBJbmZhbnQncyBtb3RoZXIgaXMgYSBwZXJzb24gd2hvIGluamVjdHMgZHJ1Z3MKICogSElWLkUuREUxMTc6IFRyYW5zIGFuZCBnZW5kZXItZGl2ZXJzZSBwZW9wbGUgfCBJbmZhbnQncyBtb3RoZXIgaWRlbnRpZmllcyBhcyB0cmFucyBhbmQgZ2VuZGVyLWRpdmVyc2UKICogSElWLkUuREUxMTg6IFBlb3BsZSBsaXZpbmcgaW4gcHJpc29ucyBhbmQgb3RoZXIgY2xvc2VkIHNldHRpbmcgfCBJbmZhbnQncyBtb3RoZXIgaXMgaW4gYSBwcmlzb24gb3IgY2xvc2VkIHNldHRpbmcKICogSElWLlNSVi5ERTc6IEN1cnJlbnRseSBwcmVnbmFudCB8IENsaWVudCBpcyBjdXJyZW50bHkgcHJlZ25hbnQKICoKICogQWRkaXRpb25hbCBDb250ZXh0CiAqIC0gd2hhdCBpdCBtZWFzdXJlczogVGhpcyBpbmRpY2F0b3IgbWVhc3VyZXMgdGhlIHByb3BvcnRpb24gb2YgcGVvcGxlIGxpdmluZyB3aXRoIEhJViB3aG8gc2NyZWVuIHBvc2l0aXZlIGZvciBUQiBzeW1wdG9tcyB3aG8gcmVjZWl2ZSBhIHJlY29tbWVuZGVkIHRlc3QgZm9yIGRpYWdub3NpcyBvZiBUQi4KICogLSByYXRpb25hbGU6IOKAoiBQZW9wbGUgbGl2aW5nIHdpdGggSElWIHNob3VsZCBiZSBzY3JlZW5lZCBmb3IgVEIgc3ltcHRvbXMgYW5kLCBpZiBmb3VuZCBwb3NpdGl2ZSwgYmUgdGVzdGVkIGZvciBUQi4gfCDigKIgV0hPIHJlY29tbWVuZHMgcmFwaWQtZGlhZ25vc3RpYyBtb2xlY3VsYXIgdGVzdHMsIGZvciBleGFtcGxlLCBYcGVydCBNVEIvUklGLCBhcyB0aGUgZmlyc3QgdGVzdCBmb3IgZGlhZ25vc2lzIG9mIFRCIGFtb25nIHBlb3BsZSBsaXZpbmcgd2l0aCBISVYuCiAqIC0gbWV0aG9kOiBGb3IgdGhlIG51bWVyYXRvciBhbmQgZGVub21pbmF0b3I6IFByb2dyYW1tZSByZWNvcmRzIChmb3IgZXhhbXBsZSwgbGFib3JhdG9yeSByZWdpc3RlciBmb3Igc21lYXIgbWljcm9zY29weSBhbmQgWHBlcnQgTVRCL1JJRiwgQVJUIHJlZ2lzdGVycykKICogCiAqIFN1Z2dlc3RlZCBTY29yaW5nIE1ldGhvZDogcHJvcG9ydGlvbiB8IGh0dHA6Ly9obDcub3JnL2ZoaXIvdXMvY3FmbWVhc3VyZXMvU3RydWN0dXJlRGVmaW5pdGlvbi9wcm9wb3J0aW9uLW1lYXN1cmUtY3FmbQogKi8KCmxpYnJhcnkgSElWSU5ENDZMb2dpYwoKLy8gSW5jbHVkZWQgTGlicmFyaWVzCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIEhJVkNvbW1vbiB2ZXJzaW9uICcwLjAuMScgY2FsbGVkIEhJQwppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJwoKaW5jbHVkZSBXSE9Db21tb24gY2FsbGVkIFdDb20KaW5jbHVkZSBISVZFbGVtZW50cyBjYWxsZWQgSEUKaW5jbHVkZSBISVZJbmRpY2F0b3JFbGVtZW50cyBjYWxsZWQgSElFCgovLyBJbmRpY2F0b3IgRGVmaW5pdGlvbgpwYXJhbWV0ZXIgIk1lYXN1cmVtZW50IFBlcmlvZCIgSW50ZXJ2YWw8RGF0ZT4gZGVmYXVsdCBJbnRlcnZhbFtAMjAyMy0wMS0wMSwgQDIwMjMtMDEtMzBdCgpjb250ZXh0IFBhdGllbnQKLyogUG9wdWxhdGlvbnMgKi8KCi8qCiAqSW5pdGlhbCBQb3B1bGF0aW9uCiAqLwoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24iOgogIHRydWUKCi8qKgogKiBOdW1lcmF0b3IKICogCiAqIERlZmluaXRpb246IE51bWJlciBvZiBwZW9wbGUgbGl2aW5nIHdpdGggSElWIGFuZCBoYXZpbmcgVEIgc3ltcHRvbXMgd2hvIHdlcmUgdGVzdGVkIHVzaW5nIGEgcmFwaWQgbW9sZWN1bGFyIHRlc3QgKGZvciBleGFtcGxlLCBYcGVydCBNVEIvUklGKSBhcyBhIGZpcnN0IHRlc3QgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBjbGllbnRzIHdpdGggIkhJViBzdGF0dXMiPSdISVYtcG9zaXRpdmUnIEFORCAiVEIgc2NyZWVuaW5nIGRhdGUiIGluIHRoZSByZXBvcnRpbmcgcGVyaW9kIEFORCAiVEIgc2NyZWVuaW5nIHJlc3VsdCI9J1NjcmVlbiBwb3NpdGl2ZSBmb3IgVEInIEFORCAiVEIgZGlhZ25vc3RpYyB0ZXN0IGNhdGVnb3J5Ij0nbVdSRCB0ZXN0IGZvciBUQicKICovCgoKCmRlZmluZSAiTnVtZXJhdG9yIjoKICBISUUuIkhhcyBISVYtcG9zaXRpdmUgU3RhdHVzIgogIGFuZCAKICAvL0kgcmVsYXRlZCB0aGUgdHdvIGJlY2F1c2Ugb3RoZXJ3aXNlIGEgcG9zaXRpdmUgb2JzZXJ2YXRpb24gY291bGQgY29tZSBmcm9tIGFub3RoZXIgdGVzdCB0eXBlIGFuZCBiZSBjb3VudGVkLiAKICBleGlzdHMoCiAgICBIRS4ibVdSRCB0ZXN0IGZvciBUQiIgUAogICAgd2l0aCBIRS4iU2NyZWVuIHBvc2l0aXZlIGZvciBUQiIgTwogICAgICBzdWNoIHRoYXQgUC5wYXJ0T2YucmVmZXJlbmNlcyhPKQogICAgd2hlcmUgUC5wZXJmb3JtZWQudG9JbnRlcnZhbCgpIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICkKCi8qKgogKiBEZW5vbWluYXRvcgogKgogKiBEZWZpbml0aW9uOiBOdW1iZXIgb2YgcGVvcGxlIGxpdmluZyB3aXRoIEhJViB3aG8gYXJlIHNjcmVlbmVkIGZvciBUQiBhbmQgZm91bmQgdG8gaGF2ZSBzeW1wdG9tcyBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QKICogQ2FsY3VsYXRpb246IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgQU5EICJUQiBzY3JlZW5pbmcgZGF0ZSIgaW4gdGhlIHJlcG9ydGluZyBwZXJpb2QgQU5EICJUQiBzY3JlZW5pbmcgcmVzdWx0Ij0nU2NyZWVuIHBvc2l0aXZlIGZvciBUQicKICovCgpkZWZpbmUgIkRlbm9taW5hdG9yIjoKICBISUUuIkhhcyBISVYtcG9zaXRpdmUgU3RhdHVzIgogIGFuZCAKICBleGlzdHMoCiAgICBIRS4iVEIgZGlhZ25vc3RpYyB0ZXN0IGNhdGVnb3J5IiBQCiAgICB3aXRoIEhFLiJTY3JlZW4gcG9zaXRpdmUgZm9yIFRCIiBPCiAgICAgIHN1Y2ggdGhhdCBQLnBhcnRPZi5yZWZlcmVuY2VzKE8pCiAgICB3aGVyZSBQLnBlcmZvcm1lZC50b0ludGVydmFsKCkgZHVyaW5nICJNZWFzdXJlbWVudCBQZXJpb2QiCiAgKQogICAgCgovKiBlbmQgUG9wdWxhdGlvbnMgKi8KCi8qCiAqIERpc2FnZ3JlZ2F0b3JzCiAqLwoKZGVmaW5lICJBZG1pbmlzdHJhdGl2ZSBHZW5kZXIgU3RyYXRpZmllciI6CglISUUuIkJ5IEFkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyIgoKZGVmaW5lICJBZ2UgU3RyYXRpZmllciI6CglISUUuIkJ5IEFnZSBTdHJhdGlmaWVyIgoKZGVmaW5lICJHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyIjoKCUhJRS4iQnkgR2VvZ3JhcGhpYyBSZWdpb24gU3RyYXRpZmllciIKCmRlZmluZSAicGF0aWVudEdyb3VwcyBTdHJhdGlmaWVyIjoKCUhJRS4icGF0aWVudEdyb3VwcyIKCmRlZmluZSAicHJlZ25hbmN5IHN0cmF0aWZpZXIiOgogIEhJRS4icHJlZ25hbmN5IHN0cmF0aWZpZXIiCgpkZWZpbmUgIlN0cmF0aWZpY2F0aW9uIjoKIEhJRS4iQnkgQWRtaW5pc3RyYXRpdmUgR2VuZGVyIFN0cmF0aWZpZXIiLmNvZGUgCiAgKyAnOicgKyBISUUuIkJ5IEFnZSBTdHJhdGlmaWVyIgorICc6JyArIEhJRS4iQnkgR2VvZ3JhcGhpYyBSZWdpb24gU3RyYXRpZmllciIKKyBDb21iaW5lKEhJRS5wYXRpZW50R3JvdXBzLCAnOicpCisgSElFLiJwcmVnbmFuY3kgc3RyYXRpZmllciIuY29kZQo="
    }
  ]
}