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.29 Logic - TTL Representation

Draft as of 2025-02-02

Raw ttl | Download

@prefix fhir: <http://hl7.org/fhir/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

# - resource -------------------------------------------------------------------

 a fhir:Library ;
  fhir:nodeRole fhir:treeRoot ;
  fhir:id [ fhir:v "HIVIND29Logic"] ; # 
  fhir:meta [
    ( fhir:profile [
fhir:v "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary"^^xsd:anyURI ;
fhir:link <http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary>     ] [
fhir:v "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary"^^xsd:anyURI ;
fhir:link <http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary>     ] [
fhir:v "http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library"^^xsd:anyURI ;
fhir:link <http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library>     ] [
fhir:v "http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module"^^xsd:anyURI ;
fhir:link <http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module>     ] )
  ] ; # 
  fhir:text [
fhir:status [ fhir:v "extensions" ] ;
fhir: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.29 Logic</td>\n        </tr>\n        \n\n        \n        \n        <tr>\n            <th scope=\"row\"><b>Id: </b></th>\n            <td style=\"padding-left: 4px;\">HIVIND29Logic</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-HIVIND29Logic.html\">HIV.IND.29 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-02 03:11:41+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 on ART (for at least six months) who have virological suppression</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.29 Logic\n * Ref No: ART.3\n * Short Name: People living with HIV on ART who have suppressed viral load\n *\n * Definition: % of people living with HIV on ART (for at least six months) who have virological suppression\n *\n * Numerator: Number of people living with HIV on ART for at least six months and with at least one routine VL test result who have virological suppression (&lt;1000 copies/mL*) during the reporting period.\n * Numerator Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;On ART&quot;=True and &quot;ART start date&quot; GREATER THAN 6 months before reporting period end date AND &quot;Date of viral load sample collection&quot; within reporting period AND &quot;Reason for HIV viral load test&quot;='Routine viral load test' AND &quot;Viral load test result&quot; LESS THAN 1000 copies/mL\n * Numerator Exclusions: \n *\n * Denominator: Number of people living with HIV on ART at least six months with at least one routine VL result in a medical or laboratory record during the reporting period, to monitor progress towards the third 95 target |  | In addition, this can also be presented as the number with suppressed VL among all people living with HIV to calculate population-level viral suppression.\n * Denominator Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;On ART&quot;=True and &quot;ART start date&quot; GREATER THAN 6 months before reporting period end date AND &quot;Date of viral load sample collection&quot; within reporting period AND &quot;Reason for HIV viral load test&quot;='Routine viral load test'\n * Denominator Exclusions: \n *\n * Disaggregations:\n * • Gender (female, male, other**) \n *  • Age (0–4, 5–9, 10–14, 15–19, 20–24, 25–29, 30–34, 35–39, 40–44, 45–49, 50+ years)*** \n *  • 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)**** \n *  • Cities and other administrative regions of epidemiologic importance\n *\n * Disaggregation Elements: Gender | Age | Key population member type\n *\n * Numerator and Denominator Elements:\n * ART start date \n *  Date of viral load sample collection \n *  HIV status \n *  On ART \n *  Reason for HIV viral load test \n *  Viral load test 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.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.DE72: ART start date | The date on which the client started or restarted antiretroviral therapy (ART)\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.DE38: On ART | Client is currently taking ART\n * HIV.D.DE39: ART start date | The date on which the client started or restarted ART\n * HIV.D.DE194: Date of viral load sample collection | Date and time when the sample was collected to test the client's HIV viral load\n * HIV.D.DE387: Viral load test result | Result from the viral load test in number of copies/mL\n * HIV.D.DE391: Reason for HIV viral load test | Whether the viral load is being tested for routine monitoring on a set schedule or for targeted monitoring for suspected treatment failure\n * HIV.D.DE392: Routine viral load test | Routine refers to viral load tests obtained at standard intervals following ART initiation to monitor viral load response to ART\n * HIV.D.DE393: Targeted viral load monitoring | Targeted refers to viral load tests obtained based on a specific clinical indication (such as concern about disease progression or failure to respond to ART)\n * HIV.D.DE394: Initial viral load test | The first viral load test of the client\n * HIV.D.DE395: Follow-up viral load test after receiving enhanced adherence counselling | A follow-up viral load test within 3-6 months after enhanced adherence counselling after client received a high viral load test result\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.G.DE8: Date of viral load sample collection | Date and time when the sample was collected to test the client's HIV viral load\n * HIV.G.DE12: Viral load test result | Result from the viral load test in number of copies/mL\n * HIV.H.DE47: On ART | Client is currently taking ART \n * HIV.SRV.DE6: ART start date | The date on which the client started or restarted antiretroviral therapy (ART)\n * HIV.SRV.DE12: Date of viral load sample collection | Date and time when the sample was collected to test the client's HIV viral load\n * HIV.SRV.DE13: Viral load test result | Result from the viral load test in number of copies/mL\n *\n * Additional Context\n * - what it measures: Measures clinical outcomes, specifically viral suppression of patients on ART regardless of ART initiation date.\n * - rationale: • Viral load suppression (VLS) represents the expected outcome of ART programme services that is, the third 95 target. | • VLS is also the best available measure of adherence to ART\n * - method: For the numerator and denominator: Patient monitoring tools (for example, ART register, patient records, EMRs, laboratory records) or acquired HIVDR surveillance, population-based surveys (such as, the Population-Based HIV Impact Assessment) that collects data on ART coverage and viral suppression |  | This indicator must be interpreted along with VL testing coverage to assess the potential for bias, that is, whether VL testing occurs in only a particular subset of people receiving ART. |  | Note: First routine VL testing is recommended at six months after ART initiation. As per ART.7, the time window for early VL monitoring can include a margin of +/– one month, that is, for reporting purposes a routine VL test can take place any time from five to seven months after initiation of ART.\n * \n * Suggested Scoring Method: proportion | http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/proportion-measure-cqfm\n */\n\nlibrary HIVIND29Logic\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'\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 on ART for at least six months and with at least one routine VL test result who have virological suppression (&lt;1000 copies/mL*) during the reporting period.\n * Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;On ART&quot;=True and &quot;ART start date&quot; GREATER THAN 6 months before reporting period end date AND &quot;Date of viral load sample collection&quot; within reporting period AND &quot;Reason for HIV viral load test&quot;='Routine viral load test' AND &quot;Viral load test result&quot; LESS THAN 1000 copies/mL\n */\n\ndefine &quot;Numerator&quot;:\n HIE.&quot;Has HIV-positive Status&quot;\n  and HIE.&quot;On ART H.DE47&quot;\n  and \n   (months between (end of &quot;Measurement Period&quot;) and (date from start of HE.&quot;First On ART&quot;.effective.toInterval()) &gt; 6 months)\n   and \n   exists(\n    HIE.&quot;Viral load test result D.DE387&quot; VL\n    with HE.&quot;routine viral load sample collection&quot; P \n    such that VL.partOf.references(P) and P.performed.toInterval() during &quot;Measurement Period&quot;\n    where VL.value &lt; 1000\n    )\n\n/**\n * Denominator\n *\n * Definition: Number of people living with HIV on ART at least six months with at least one routine VL result in a medical or laboratory record during the reporting period, to monitor progress towards the third 95 target |  | In addition, this can also be presented as the number with suppressed VL among all people living with HIV to calculate population-level viral suppression.\n * Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;On ART&quot;=True and &quot;ART start date&quot; GREATER THAN 6 months before reporting period end date AND &quot;Date of viral load sample collection&quot; within reporting period AND &quot;Reason for HIV viral load test&quot;='Routine viral load test'\n */\n\ndefine &quot;Denominator&quot;:\n HIE.&quot;Has HIV-positive Status&quot;\n  and HIE.&quot;On ART H.DE47&quot;\n  and \n   (months between (end of &quot;Measurement Period&quot;) and (date from start of HE.&quot;First On ART&quot;.effective.toInterval()) &gt; 6 months)\n   and \n   exists(\n    HIE.&quot;Viral load test result D.DE387&quot; VL\n    with HE.&quot;routine viral load sample collection&quot; P \n    such that VL.partOf.references(P) and 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	HIE.&quot;By Administrative Gender Stratifier&quot;\n\ndefine &quot;Age Stratifier&quot;:\n	HIE.&quot;By Age Stratifier&quot;\n\ndefine &quot;Geographic Region Stratifier&quot;:\n	HIE.&quot;By Geographic Region Stratifier&quot;\n\ndefine &quot;patientGroups Stratifier&quot;:\n	HIE.&quot;patientGroups&quot;\n\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, ':')</code></pre></td></tr>\n            </table>\n          </td>\n        </tr>\n        \n        \n        \n    </table>\n</div>\n</div>"
  ] ; # 
  fhir:extension ( [
fhir:url [ fhir:v "http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability"^^xsd:anyURI ] ;
fhir:value [ fhir:v "computable" ]
  ] ) ; # 
  fhir:url [ fhir:v "http://smart.who.int/hiv/Library/HIVIND29Logic"^^xsd:anyURI] ; # 
  fhir:version [ fhir:v "0.4.3"] ; # 
  fhir:name [ fhir:v "HIVIND29Logic"] ; # 
  fhir:title [ fhir:v "HIV.IND.29 Logic"] ; # 
  fhir:status [ fhir:v "draft"] ; # 
  fhir:experimental [ fhir:v "true"^^xsd:boolean] ; # 
  fhir:type [
    ( fhir:coding [
fhir:system [ fhir:v "http://terminology.hl7.org/CodeSystem/library-type"^^xsd:anyURI ] ;
fhir:code [ fhir:v "logic-library" ]     ] )
  ] ; # 
  fhir:date [ fhir:v "2025-02-02T03:11:41+00:00"^^xsd:dateTime] ; # 
  fhir:publisher [ fhir:v "WHO"] ; # 
  fhir:contact ( [
fhir:name [ fhir:v "WHO" ] ;
    ( fhir:telecom [
fhir:system [ fhir:v "url" ] ;
fhir:value [ fhir:v "http://who.int" ]     ] )
  ] ) ; # 
  fhir:description [ fhir:v "% of people living with HIV on ART (for at least six months) who have virological suppression"] ; # 
  fhir:content ( [
fhir:contentType [ fhir:v "text/cql" ] ;
fhir:data [ fhir:v "LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuMjkgTG9naWMKICogUmVmIE5vOiBBUlQuMwogKiBTaG9ydCBOYW1lOiBQZW9wbGUgbGl2aW5nIHdpdGggSElWIG9uIEFSVCB3aG8gaGF2ZSBzdXBwcmVzc2VkIHZpcmFsIGxvYWQKICoKICogRGVmaW5pdGlvbjogJSBvZiBwZW9wbGUgbGl2aW5nIHdpdGggSElWIG9uIEFSVCAoZm9yIGF0IGxlYXN0IHNpeCBtb250aHMpIHdobyBoYXZlIHZpcm9sb2dpY2FsIHN1cHByZXNzaW9uCiAqCiAqIE51bWVyYXRvcjogTnVtYmVyIG9mIHBlb3BsZSBsaXZpbmcgd2l0aCBISVYgb24gQVJUIGZvciBhdCBsZWFzdCBzaXggbW9udGhzIGFuZCB3aXRoIGF0IGxlYXN0IG9uZSByb3V0aW5lIFZMIHRlc3QgcmVzdWx0IHdobyBoYXZlIHZpcm9sb2dpY2FsIHN1cHByZXNzaW9uICg8MTAwMCBjb3BpZXMvbUwqKSBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QuCiAqIE51bWVyYXRvciBDYWxjdWxhdGlvbjogQ09VTlQgb2YgY2xpZW50cyB3aXRoICJISVYgc3RhdHVzIj0nSElWLXBvc2l0aXZlJyBBTkQgIk9uIEFSVCI9VHJ1ZSBhbmQgIkFSVCBzdGFydCBkYXRlIiBHUkVBVEVSIFRIQU4gNiBtb250aHMgYmVmb3JlIHJlcG9ydGluZyBwZXJpb2QgZW5kIGRhdGUgQU5EICJEYXRlIG9mIHZpcmFsIGxvYWQgc2FtcGxlIGNvbGxlY3Rpb24iIHdpdGhpbiByZXBvcnRpbmcgcGVyaW9kIEFORCAiUmVhc29uIGZvciBISVYgdmlyYWwgbG9hZCB0ZXN0Ij0nUm91dGluZSB2aXJhbCBsb2FkIHRlc3QnIEFORCAiVmlyYWwgbG9hZCB0ZXN0IHJlc3VsdCIgTEVTUyBUSEFOIDEwMDAgY29waWVzL21MCiAqIE51bWVyYXRvciBFeGNsdXNpb25zOiAKICoKICogRGVub21pbmF0b3I6IE51bWJlciBvZiBwZW9wbGUgbGl2aW5nIHdpdGggSElWIG9uIEFSVCBhdCBsZWFzdCBzaXggbW9udGhzIHdpdGggYXQgbGVhc3Qgb25lIHJvdXRpbmUgVkwgcmVzdWx0IGluIGEgbWVkaWNhbCBvciBsYWJvcmF0b3J5IHJlY29yZCBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QsIHRvIG1vbml0b3IgcHJvZ3Jlc3MgdG93YXJkcyB0aGUgdGhpcmQgOTUgdGFyZ2V0IHwgIHwgSW4gYWRkaXRpb24sIHRoaXMgY2FuIGFsc28gYmUgcHJlc2VudGVkIGFzIHRoZSBudW1iZXIgd2l0aCBzdXBwcmVzc2VkIFZMIGFtb25nIGFsbCBwZW9wbGUgbGl2aW5nIHdpdGggSElWIHRvIGNhbGN1bGF0ZSBwb3B1bGF0aW9uLWxldmVsIHZpcmFsIHN1cHByZXNzaW9uLgogKiBEZW5vbWluYXRvciBDYWxjdWxhdGlvbjogQ09VTlQgb2YgY2xpZW50cyB3aXRoICJISVYgc3RhdHVzIj0nSElWLXBvc2l0aXZlJyBBTkQgIk9uIEFSVCI9VHJ1ZSBhbmQgIkFSVCBzdGFydCBkYXRlIiBHUkVBVEVSIFRIQU4gNiBtb250aHMgYmVmb3JlIHJlcG9ydGluZyBwZXJpb2QgZW5kIGRhdGUgQU5EICJEYXRlIG9mIHZpcmFsIGxvYWQgc2FtcGxlIGNvbGxlY3Rpb24iIHdpdGhpbiByZXBvcnRpbmcgcGVyaW9kIEFORCAiUmVhc29uIGZvciBISVYgdmlyYWwgbG9hZCB0ZXN0Ij0nUm91dGluZSB2aXJhbCBsb2FkIHRlc3QnCiAqIERlbm9taW5hdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEaXNhZ2dyZWdhdGlvbnM6CiAqIOKAosKgR2VuZGVyIChmZW1hbGUsIG1hbGUsIG90aGVyKiopIAogKiAg4oCiIEFnZSAoMOKAkzQsIDXigJM5LCAxMOKAkzE0LCAxNeKAkzE5LCAyMOKAkzI0LCAyNeKAkzI5LCAzMOKAkzM0LCAzNeKAkzM5LCA0MOKAkzQ0LCA0NeKAkzQ5LCA1MCsgeWVhcnMpKioqIAogKiAg4oCiwqBLZXkgcG9wdWxhdGlvbnMgKG1lbiB3aG8gaGF2ZSBzZXggd2l0aCBtZW4sIHBlb3BsZSBsaXZpbmcgaW4gcHJpc29ucyBhbmQgb3RoZXIgY2xvc2VkIHNldHRpbmdzLCBwZW9wbGUgd2hvIGluamVjdCBkcnVncywgc2V4IHdvcmtlcnMsIHRyYW5zIGFuZCBnZW5kZXIgZGl2ZXJzZSBwZW9wbGUpKioqKiAKICogIOKAoiBDaXRpZXMgYW5kIG90aGVyIGFkbWluaXN0cmF0aXZlIHJlZ2lvbnMgb2YgZXBpZGVtaW9sb2dpYyBpbXBvcnRhbmNlCiAqCiAqIERpc2FnZ3JlZ2F0aW9uIEVsZW1lbnRzOiBHZW5kZXIgfCBBZ2UgfCBLZXkgcG9wdWxhdGlvbiBtZW1iZXIgdHlwZQogKgogKiBOdW1lcmF0b3IgYW5kIERlbm9taW5hdG9yIEVsZW1lbnRzOgogKiBBUlQgc3RhcnQgZGF0ZSAKICogIERhdGUgb2YgdmlyYWwgbG9hZCBzYW1wbGUgY29sbGVjdGlvbiAKICogIEhJViBzdGF0dXMgCiAqICBPbiBBUlQgCiAqICBSZWFzb24gZm9yIEhJViB2aXJhbCBsb2FkIHRlc3QgCiAqICBWaXJhbCBsb2FkIHRlc3QgcmVzdWx0CiAqCiAqIFJlZmVyZW5jZTogQ29uc29saWRhdGVkIGd1aWRlbGluZXMgb24gcGVyc29uLWNlbnRyZWQgSElWIHN0cmF0ZWdpYyBpbmZvcm1hdGlvbjogc3RyZW5ndGhlbmluZyByb3V0aW5lIGRhdGEgZm9yIGltcGFjdC4gR2VuZXZhOiBXb3JsZCBIZWFsdGggT3JnYW5pemF0aW9uOyAyMDIyCiAqIAogKiBEYXRhIENvbmNlcHRzOgogKiBISVYuQS5ERTE3OiBBZ2UgfCBDYWxjdWxhdGVkIGFnZSAobnVtYmVyIG9mIHllYXJzKSBvZiB0aGUgY2xpZW50IGJhc2VkIG9uIGRhdGUgb2YgYmlydGgKICogSElWLkEuREUxODogR2VuZGVyKiB8IEdlbmRlciBvZiB0aGUgY2xpZW50KgogKiBISVYuQS5ERTE5OiBGZW1hbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyBmZW1hbGUKICogSElWLkEuREUyMDogTWFsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIG1hbGUKICogSElWLkEuREUyMTogVHJhbnNnZW5kZXIgbWFsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIHRyYW5zZ2VuZGVyIG1hbGUKICogSElWLkEuREUyMjogVHJhbnNnZW5kZXIgZmVtYWxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgdHJhbnNnZW5kZXIgZmVtYWxlCiAqIEhJVi5BLkRFMjM6IE90aGVyIHwgQWRkaXRpb25hbCBjYXRlZ29yeQogKiBISVYuQi5ERTUwOiBLZXkgcG9wdWxhdGlvbiBtZW1iZXIgdHlwZSogfCBUaGUgdHlwZSBvZiBrZXkgcG9wdWxhdGlvbiB0aGF0IHRoZSBjbGllbnQgaXMgaW5jbHVkZWQgaW4KICogSElWLkIuREU1MTogU2V4IHdvcmtlciB8IENsaWVudCBpcyBhIHNleCB3b3JrZXIKICogSElWLkIuREU1MjogTWVuIHdobyBoYXZlIHNleCB3aXRoIG1lbiB8IENsaWVudCBpcyBhIG1hbiB3aG8gaGFzIHNleCB3aXRoIG1lbgogKiBISVYuQi5ERTUzOiBUcmFucyBhbmQgZ2VuZGVyLWRpdmVyc2UgcGVvcGxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgdHJhbnMgYW5kIGdlbmRlci1kaXZlcnNlCiAqIEhJVi5CLkRFNTQ6IFBlb3BsZSB3aG8gaW5qZWN0IGRydWdzIHwgQ2xpZW50IGlzIGEgcGVyc29uIHdobyBpbmplY3RzIGRydWdzCiAqIEhJVi5CLkRFNTU6IFBlb3BsZSBsaXZpbmcgaW4gcHJpc29ucyBhbmQgb3RoZXIgY2xvc2VkIHNldHRpbmdzIHwgQ2xpZW50IGxpdmVzIGluIGEgcHJpc29uIG9yIGFub3RoZXIgY2xvc2VkIHNldHRpbmcKICogSElWLkIuREU3MjogQVJUIHN0YXJ0IGRhdGUgfCBUaGUgZGF0ZSBvbiB3aGljaCB0aGUgY2xpZW50IHN0YXJ0ZWQgb3IgcmVzdGFydGVkIGFudGlyZXRyb3ZpcmFsIHRoZXJhcHkgKEFSVCkKICogSElWLkIuREUxMTU6IEhJViBzdGF0dXMgfCBISVYgc3RhdHVzIHJlcG9ydGVkIGFmdGVyIGFwcGx5aW5nIHRoZSBuYXRpb25hbCBISVYgdGVzdGluZyBhbGdvcml0aG0uIE5vIHNpbmdsZSBISVYgdGVzdCBjYW4gcHJvdmlkZSBhbiBISVYtcG9zaXRpdmUgZGlhZ25vc2lzLgogKiBISVYuQi5ERTExNjogSElWLXBvc2l0aXZlIHwgQ2xpZW50IGlzIEhJVi1wb3NpdGl2ZQogKiBISVYuQi5ERTExNzogSElWLW5lZ2F0aXZlIHwgQ2xpZW50IGlzIEhJVi1uZWdhdGl2ZQogKiBISVYuQi5ERTExODogVW5rbm93biB8IENsaWVudCBoYXMgdW5rbm93biBISVYgc3RhdHVzCiAqIEhJVi5ELkRFMzg6IE9uIEFSVCB8IENsaWVudCBpcyBjdXJyZW50bHkgdGFraW5nIEFSVAogKiBISVYuRC5ERTM5OiBBUlQgc3RhcnQgZGF0ZSB8IFRoZSBkYXRlIG9uIHdoaWNoIHRoZSBjbGllbnQgc3RhcnRlZCBvciByZXN0YXJ0ZWQgQVJUCiAqIEhJVi5ELkRFMTk0OiBEYXRlIG9mIHZpcmFsIGxvYWQgc2FtcGxlIGNvbGxlY3Rpb24gfCBEYXRlIGFuZCB0aW1lIHdoZW4gdGhlIHNhbXBsZSB3YXMgY29sbGVjdGVkIHRvIHRlc3QgdGhlIGNsaWVudCdzIEhJViB2aXJhbCBsb2FkCiAqIEhJVi5ELkRFMzg3OiBWaXJhbCBsb2FkIHRlc3QgcmVzdWx0IHwgUmVzdWx0IGZyb20gdGhlIHZpcmFsIGxvYWQgdGVzdCBpbiBudW1iZXIgb2YgY29waWVzL21MCiAqIEhJVi5ELkRFMzkxOiBSZWFzb24gZm9yIEhJViB2aXJhbCBsb2FkIHRlc3QgfCBXaGV0aGVyIHRoZSB2aXJhbCBsb2FkIGlzIGJlaW5nIHRlc3RlZCBmb3Igcm91dGluZSBtb25pdG9yaW5nIG9uIGEgc2V0IHNjaGVkdWxlIG9yIGZvciB0YXJnZXRlZCBtb25pdG9yaW5nIGZvciBzdXNwZWN0ZWQgdHJlYXRtZW50IGZhaWx1cmUKICogSElWLkQuREUzOTI6IFJvdXRpbmUgdmlyYWwgbG9hZCB0ZXN0IHwgUm91dGluZSByZWZlcnMgdG8gdmlyYWwgbG9hZCB0ZXN0cyBvYnRhaW5lZCBhdCBzdGFuZGFyZCBpbnRlcnZhbHMgZm9sbG93aW5nIEFSVCBpbml0aWF0aW9uIHRvIG1vbml0b3IgdmlyYWwgbG9hZCByZXNwb25zZSB0byBBUlQKICogSElWLkQuREUzOTM6IFRhcmdldGVkIHZpcmFsIGxvYWQgbW9uaXRvcmluZyB8IFRhcmdldGVkIHJlZmVycyB0byB2aXJhbCBsb2FkIHRlc3RzIG9idGFpbmVkIGJhc2VkIG9uIGEgc3BlY2lmaWMgY2xpbmljYWwgaW5kaWNhdGlvbiAoc3VjaCBhcyBjb25jZXJuIGFib3V0IGRpc2Vhc2UgcHJvZ3Jlc3Npb24gb3IgZmFpbHVyZSB0byByZXNwb25kIHRvIEFSVCkKICogSElWLkQuREUzOTQ6IEluaXRpYWwgdmlyYWwgbG9hZCB0ZXN0IHwgVGhlIGZpcnN0IHZpcmFsIGxvYWQgdGVzdCBvZiB0aGUgY2xpZW50CiAqIEhJVi5ELkRFMzk1OiBGb2xsb3ctdXAgdmlyYWwgbG9hZCB0ZXN0IGFmdGVyIHJlY2VpdmluZyBlbmhhbmNlZCBhZGhlcmVuY2UgY291bnNlbGxpbmcgfCBBIGZvbGxvdy11cCB2aXJhbCBsb2FkIHRlc3Qgd2l0aGluIDMtNiBtb250aHMgYWZ0ZXIgZW5oYW5jZWQgYWRoZXJlbmNlIGNvdW5zZWxsaW5nIGFmdGVyIGNsaWVudCByZWNlaXZlZCBhIGhpZ2ggdmlyYWwgbG9hZCB0ZXN0IHJlc3VsdAogKiBISVYuRS5ERTExNDogS2V5IHBvcHVsYXRpb24gbWVtYmVyIHR5cGUqIHwgVGhlIHR5cGUgb2Yga2V5IHBvcHVsYXRpb24gdGhhdCB0aGUgaW5mYW50J3MgbW90aGVyIGlzIGluY2x1ZGVkIGluCiAqIEhJVi5FLkRFMTE1OiBTZXggd29ya2VyIHwgSW5mYW50J3MgbW90aGVyIGlzIGEgc2V4IHdvcmtlcgogKiBISVYuRS5ERTExNjogUGVvcGxlIHdobyBpbmplY3QgZHJ1Z3MgfCBJbmZhbnQncyBtb3RoZXIgaXMgYSBwZXJzb24gd2hvIGluamVjdHMgZHJ1Z3MKICogSElWLkUuREUxMTc6IFRyYW5zIGFuZCBnZW5kZXItZGl2ZXJzZSBwZW9wbGUgfCBJbmZhbnQncyBtb3RoZXIgaWRlbnRpZmllcyBhcyB0cmFucyBhbmQgZ2VuZGVyLWRpdmVyc2UKICogSElWLkUuREUxMTg6IFBlb3BsZSBsaXZpbmcgaW4gcHJpc29ucyBhbmQgb3RoZXIgY2xvc2VkIHNldHRpbmcgfCBJbmZhbnQncyBtb3RoZXIgaXMgaW4gYSBwcmlzb24gb3IgY2xvc2VkIHNldHRpbmcKICogSElWLkcuREU4OiBEYXRlIG9mIHZpcmFsIGxvYWQgc2FtcGxlIGNvbGxlY3Rpb24gfCBEYXRlIGFuZCB0aW1lIHdoZW4gdGhlIHNhbXBsZSB3YXMgY29sbGVjdGVkIHRvIHRlc3QgdGhlIGNsaWVudCdzIEhJViB2aXJhbCBsb2FkCiAqIEhJVi5HLkRFMTI6IFZpcmFsIGxvYWQgdGVzdCByZXN1bHQgfCBSZXN1bHQgZnJvbSB0aGUgdmlyYWwgbG9hZCB0ZXN0IGluIG51bWJlciBvZiBjb3BpZXMvbUwKICogSElWLkguREU0NzogT24gQVJUIHwgQ2xpZW50IGlzIGN1cnJlbnRseSB0YWtpbmcgQVJUIAogKiBISVYuU1JWLkRFNjogQVJUIHN0YXJ0IGRhdGUgfCBUaGUgZGF0ZSBvbiB3aGljaCB0aGUgY2xpZW50IHN0YXJ0ZWQgb3IgcmVzdGFydGVkIGFudGlyZXRyb3ZpcmFsIHRoZXJhcHkgKEFSVCkKICogSElWLlNSVi5ERTEyOiBEYXRlIG9mIHZpcmFsIGxvYWQgc2FtcGxlIGNvbGxlY3Rpb24gfCBEYXRlIGFuZCB0aW1lIHdoZW4gdGhlIHNhbXBsZSB3YXMgY29sbGVjdGVkIHRvIHRlc3QgdGhlIGNsaWVudCdzIEhJViB2aXJhbCBsb2FkCiAqIEhJVi5TUlYuREUxMzogVmlyYWwgbG9hZCB0ZXN0IHJlc3VsdCB8IFJlc3VsdCBmcm9tIHRoZSB2aXJhbCBsb2FkIHRlc3QgaW4gbnVtYmVyIG9mIGNvcGllcy9tTAogKgogKiBBZGRpdGlvbmFsIENvbnRleHQKICogLSB3aGF0IGl0IG1lYXN1cmVzOiBNZWFzdXJlcyBjbGluaWNhbCBvdXRjb21lcywgc3BlY2lmaWNhbGx5IHZpcmFsIHN1cHByZXNzaW9uIG9mIHBhdGllbnRzIG9uIEFSVCByZWdhcmRsZXNzIG9mIEFSVCBpbml0aWF0aW9uIGRhdGUuCiAqIC0gcmF0aW9uYWxlOiDigKLCoFZpcmFsIGxvYWQgc3VwcHJlc3Npb24gKFZMUykgcmVwcmVzZW50cyB0aGUgZXhwZWN0ZWQgb3V0Y29tZSBvZiBBUlQgcHJvZ3JhbW1lIHNlcnZpY2VzIHRoYXQgaXMsIHRoZSB0aGlyZCA5NSB0YXJnZXQuIHwg4oCiwqBWTFMgaXMgYWxzbyB0aGUgYmVzdCBhdmFpbGFibGUgbWVhc3VyZSBvZiBhZGhlcmVuY2UgdG8gQVJUCiAqIC0gbWV0aG9kOiBGb3IgdGhlIG51bWVyYXRvciBhbmQgZGVub21pbmF0b3I6IFBhdGllbnQgbW9uaXRvcmluZyB0b29scyAoZm9yIGV4YW1wbGUsIEFSVCByZWdpc3RlciwgcGF0aWVudCByZWNvcmRzLCBFTVJzLCBsYWJvcmF0b3J5IHJlY29yZHMpIG9yIGFjcXVpcmVkIEhJVkRSIHN1cnZlaWxsYW5jZSwgcG9wdWxhdGlvbi1iYXNlZCBzdXJ2ZXlzIChzdWNoIGFzLCB0aGUgUG9wdWxhdGlvbi1CYXNlZCBISVYgSW1wYWN0IEFzc2Vzc21lbnQpIHRoYXQgY29sbGVjdHMgZGF0YSBvbiBBUlQgY292ZXJhZ2UgYW5kIHZpcmFsIHN1cHByZXNzaW9uIHwgIHwgVGhpcyBpbmRpY2F0b3IgbXVzdCBiZSBpbnRlcnByZXRlZCBhbG9uZyB3aXRoIFZMIHRlc3RpbmcgY292ZXJhZ2UgdG8gYXNzZXNzIHRoZSBwb3RlbnRpYWwgZm9yIGJpYXMsIHRoYXQgaXMsIHdoZXRoZXIgVkwgdGVzdGluZyBvY2N1cnMgaW4gb25seSBhIHBhcnRpY3VsYXIgc3Vic2V0IG9mIHBlb3BsZSByZWNlaXZpbmcgQVJULiB8ICB8IE5vdGU6IEZpcnN0IHJvdXRpbmUgVkwgdGVzdGluZyBpcyByZWNvbW1lbmRlZCBhdCBzaXggbW9udGhzIGFmdGVyIEFSVCBpbml0aWF0aW9uLiBBcyBwZXIgQVJULjcsIHRoZSB0aW1lIHdpbmRvdyBmb3IgZWFybHkgVkwgbW9uaXRvcmluZyBjYW4gaW5jbHVkZSBhIG1hcmdpbiBvZiArL+KAkyBvbmUgbW9udGgsIHRoYXQgaXMsIGZvciByZXBvcnRpbmcgcHVycG9zZXMgYSByb3V0aW5lIFZMIHRlc3QgY2FuIHRha2UgcGxhY2UgYW55IHRpbWUgZnJvbSBmaXZlIHRvIHNldmVuIG1vbnRocyBhZnRlciBpbml0aWF0aW9uIG9mIEFSVC4KICogCiAqIFN1Z2dlc3RlZCBTY29yaW5nIE1ldGhvZDogcHJvcG9ydGlvbiB8IGh0dHA6Ly9obDcub3JnL2ZoaXIvdXMvY3FmbWVhc3VyZXMvU3RydWN0dXJlRGVmaW5pdGlvbi9wcm9wb3J0aW9uLW1lYXN1cmUtY3FmbQogKi8KCmxpYnJhcnkgSElWSU5EMjlMb2dpYwoKLy8gSW5jbHVkZWQgTGlicmFyaWVzCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIEhJVkNvbW1vbiB2ZXJzaW9uICcwLjAuMScgY2FsbGVkIEhJQwppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJwppbmNsdWRlIFdIT0NvbW1vbiBjYWxsZWQgV0NvbQppbmNsdWRlIEhJVkVsZW1lbnRzIGNhbGxlZCBIRQppbmNsdWRlIEhJVkluZGljYXRvckVsZW1lbnRzIGNhbGxlZCBISUUKCi8vIEluZGljYXRvciBEZWZpbml0aW9uCnBhcmFtZXRlciAiTWVhc3VyZW1lbnQgUGVyaW9kIiBJbnRlcnZhbDxEYXRlPiBkZWZhdWx0IEludGVydmFsW0AyMDIzLTAxLTAxLCBAMjAyMy0wMS0zMF0KCmNvbnRleHQgUGF0aWVudAovKiBQb3B1bGF0aW9ucyAqLwoKLyoKICpJbml0aWFsIFBvcHVsYXRpb24KICovCgpkZWZpbmUgIkluaXRpYWwgUG9wdWxhdGlvbiI6CiAgdHJ1ZQoKLyoqCiAqIE51bWVyYXRvcgogKiAKICogRGVmaW5pdGlvbjogTnVtYmVyIG9mIHBlb3BsZSBsaXZpbmcgd2l0aCBISVYgb24gQVJUIGZvciBhdCBsZWFzdCBzaXggbW9udGhzIGFuZCB3aXRoIGF0IGxlYXN0IG9uZSByb3V0aW5lIFZMIHRlc3QgcmVzdWx0IHdobyBoYXZlIHZpcm9sb2dpY2FsIHN1cHByZXNzaW9uICg8MTAwMCBjb3BpZXMvbUwqKSBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QuCiAqIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBjbGllbnRzIHdpdGggIkhJViBzdGF0dXMiPSdISVYtcG9zaXRpdmUnIEFORCAiT24gQVJUIj1UcnVlIGFuZCAiQVJUIHN0YXJ0IGRhdGUiIEdSRUFURVIgVEhBTiA2IG1vbnRocyBiZWZvcmUgcmVwb3J0aW5nIHBlcmlvZCBlbmQgZGF0ZSBBTkQgIkRhdGUgb2YgdmlyYWwgbG9hZCBzYW1wbGUgY29sbGVjdGlvbiIgd2l0aGluIHJlcG9ydGluZyBwZXJpb2QgQU5EICJSZWFzb24gZm9yIEhJViB2aXJhbCBsb2FkIHRlc3QiPSdSb3V0aW5lIHZpcmFsIGxvYWQgdGVzdCcgQU5EICJWaXJhbCBsb2FkIHRlc3QgcmVzdWx0IiBMRVNTIFRIQU4gMTAwMCBjb3BpZXMvbUwKICovCgpkZWZpbmUgIk51bWVyYXRvciI6CiBISUUuIkhhcyBISVYtcG9zaXRpdmUgU3RhdHVzIgogIGFuZCBISUUuIk9uIEFSVCBILkRFNDciCiAgYW5kIAogICAobW9udGhzIGJldHdlZW4gKGVuZCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIikgYW5kIChkYXRlIGZyb20gc3RhcnQgb2YgSEUuIkZpcnN0IE9uIEFSVCIuZWZmZWN0aXZlLnRvSW50ZXJ2YWwoKSkgPiA2IG1vbnRocykKICAgYW5kIAogICBleGlzdHMoCiAgICBISUUuIlZpcmFsIGxvYWQgdGVzdCByZXN1bHQgRC5ERTM4NyIgVkwKICAgIHdpdGggSEUuInJvdXRpbmUgdmlyYWwgbG9hZCBzYW1wbGUgY29sbGVjdGlvbiIgUCAKICAgIHN1Y2ggdGhhdCBWTC5wYXJ0T2YucmVmZXJlbmNlcyhQKSBhbmQgUC5wZXJmb3JtZWQudG9JbnRlcnZhbCgpIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgd2hlcmUgVkwudmFsdWUgPCAxMDAwCiAgICApCgovKioKICogRGVub21pbmF0b3IKICoKICogRGVmaW5pdGlvbjogTnVtYmVyIG9mIHBlb3BsZSBsaXZpbmcgd2l0aCBISVYgb24gQVJUIGF0IGxlYXN0IHNpeCBtb250aHMgd2l0aCBhdCBsZWFzdCBvbmUgcm91dGluZSBWTCByZXN1bHQgaW4gYSBtZWRpY2FsIG9yIGxhYm9yYXRvcnkgcmVjb3JkIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZCwgdG8gbW9uaXRvciBwcm9ncmVzcyB0b3dhcmRzIHRoZSB0aGlyZCA5NSB0YXJnZXQgfCAgfCBJbiBhZGRpdGlvbiwgdGhpcyBjYW4gYWxzbyBiZSBwcmVzZW50ZWQgYXMgdGhlIG51bWJlciB3aXRoIHN1cHByZXNzZWQgVkwgYW1vbmcgYWxsIHBlb3BsZSBsaXZpbmcgd2l0aCBISVYgdG8gY2FsY3VsYXRlIHBvcHVsYXRpb24tbGV2ZWwgdmlyYWwgc3VwcHJlc3Npb24uCiAqIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBjbGllbnRzIHdpdGggIkhJViBzdGF0dXMiPSdISVYtcG9zaXRpdmUnIEFORCAiT24gQVJUIj1UcnVlIGFuZCAiQVJUIHN0YXJ0IGRhdGUiIEdSRUFURVIgVEhBTiA2IG1vbnRocyBiZWZvcmUgcmVwb3J0aW5nIHBlcmlvZCBlbmQgZGF0ZSBBTkQgIkRhdGUgb2YgdmlyYWwgbG9hZCBzYW1wbGUgY29sbGVjdGlvbiIgd2l0aGluIHJlcG9ydGluZyBwZXJpb2QgQU5EICJSZWFzb24gZm9yIEhJViB2aXJhbCBsb2FkIHRlc3QiPSdSb3V0aW5lIHZpcmFsIGxvYWQgdGVzdCcKICovCgpkZWZpbmUgIkRlbm9taW5hdG9yIjoKIEhJRS4iSGFzIEhJVi1wb3NpdGl2ZSBTdGF0dXMiCiAgYW5kIEhJRS4iT24gQVJUIEguREU0NyIKICBhbmQgCiAgIChtb250aHMgYmV0d2VlbiAoZW5kIG9mICJNZWFzdXJlbWVudCBQZXJpb2QiKSBhbmQgKGRhdGUgZnJvbSBzdGFydCBvZiBIRS4iRmlyc3QgT24gQVJUIi5lZmZlY3RpdmUudG9JbnRlcnZhbCgpKSA+IDYgbW9udGhzKQogICBhbmQgCiAgIGV4aXN0cygKICAgIEhJRS4iVmlyYWwgbG9hZCB0ZXN0IHJlc3VsdCBELkRFMzg3IiBWTAogICAgd2l0aCBIRS4icm91dGluZSB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIiBQIAogICAgc3VjaCB0aGF0IFZMLnBhcnRPZi5yZWZlcmVuY2VzKFApIGFuZCBQLnBlcmZvcm1lZC50b0ludGVydmFsKCkgZHVyaW5nICJNZWFzdXJlbWVudCBQZXJpb2QiCiAgICApCiAgICAKCi8qIGVuZCBQb3B1bGF0aW9ucyAqLwoKLyoKICogRGlzYWdncmVnYXRvcnMKICovCgpkZWZpbmUgIkFkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyIjoKCUhJRS4iQnkgQWRtaW5pc3RyYXRpdmUgR2VuZGVyIFN0cmF0aWZpZXIiCgpkZWZpbmUgIkFnZSBTdHJhdGlmaWVyIjoKCUhJRS4iQnkgQWdlIFN0cmF0aWZpZXIiCgpkZWZpbmUgIkdlb2dyYXBoaWMgUmVnaW9uIFN0cmF0aWZpZXIiOgoJSElFLiJCeSBHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyIgoKZGVmaW5lICJwYXRpZW50R3JvdXBzIFN0cmF0aWZpZXIiOgoJSElFLiJwYXRpZW50R3JvdXBzIgoKCmRlZmluZSAiU3RyYXRpZmljYXRpb24iOgogSElFLiJCeSBBZG1pbmlzdHJhdGl2ZSBHZW5kZXIgU3RyYXRpZmllciIuY29kZSAKICArICc6JyArIEhJRS4iQnkgQWdlIFN0cmF0aWZpZXIiCisgJzonICsgSElFLiJCeSBHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyIgorIENvbWJpbmUoSElFLnBhdGllbnRHcm91cHMsICc6Jyk="^^xsd:base64Binary ]
  ] ) . #