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

Draft as of 2025-02-07

Raw json | Download

{
  "resourceType" : "Library",
  "id" : "HIVC23DTLogic",
  "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.C23.DT Logic</td>\n        </tr>\n        \n\n        \n        \n        <tr>\n            <th scope=\"row\"><b>Id: </b></th>\n            <td style=\"padding-left: 4px;\">HIVC23DTLogic</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-HIVC23DTLogic.html\">HIV.C23.DT 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>HIV.C23.DT Logic</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\">/**\nLibrary: HIV.C23.DT Logic\n\n@DecisionID: HIV.C23.DT\n@BusinessRule: Determine PEP or PrEP regimen\n@Trigger: HIV.C23 Prescribe or administer PrEP or PEP\n@HitPolicy: Rule Order\n@Description: Determine PEP or PrEP regimen\n\nData Concepts:\n  \n\nConsolidated guidelines on HIV prevention, testing, treatment, service delivery and monitoring: recommendations for a public health approach (2021) Chapter 5: Advanced HIV Disease. Figure 5.1: Algorithm for providing a package of care for people with advanced HIV disease.\n*/\n\nlibrary HIVC23DTLogic\n\nusing FHIR version '4.0.1'\n\ninclude HIVCommon version '0.0.1' called HIC\ninclude HIVConcepts called Concepts\ninclude HIVEncounterElements called Elements\ninclude FHIRHelpers version '4.0.1'\n\ninclude WHOCommon called WCom\n\nparameter Today Date default Today()\n\ncontext Patient\n\n /*\n  @input: Age\n  @pseudocode: &quot;Age&quot; &gt;= 10 years\n  */\ndefine &quot;Age 10 or older&quot;:\n  Elements.&quot;Current Patient Age In Years&quot; &gt;= 10\n\n /*\n  @input: Age\n  @pseudocode: 2 years &lt; &quot;Age&quot; &lt; 10 years\n  */\ndefine &quot;Age between 2 and 10&quot;:\n  2 &lt; Elements.&quot;Current Patient Age In Years&quot; and Elements.&quot;Current Patient Age In Years&quot; &lt; 10\n\n/*\n @input: Date/time of suscepted exposure to HIV\n @pseudocode: &quot;Date/time of suspected exposure to HIV&quot; &lt; 72 hours from Current DateTime\n */\ndefine &quot;Suspected exposure to HIV within 72 hours&quot;:\n  exists(\n    Elements.&quot;Date/time of suspected exposure to HIV B.DE14&quot; O\n      where FHIRHelpers.ToInteger(O.value) &lt; 72\n        or O.value &lt; Today + 72 hours\n        or O.value.end &lt; Today + 72 hours\n  )\n\n/*\n @input: Suitable for PrEP\n @pseudocode: &quot;Suitable for PrEP&quot;=True\n */\ndefine &quot;Client is suitable for PrEP&quot;:\n  exists(\n    Elements.&quot;Suitable for PrEP&quot; O\n      where O.value = true\n  )\n\n/*\n @output: What to use in HIV post-exposure prophylaxis (PEP) for adults and adolescents\n */\ndefine &quot;What to use in HIV post-exposure prophylaxis (PEP) for adults and adolescents&quot;:\n  &quot;Suspected exposure to HIV within 72 hours&quot; and (&quot;Age between 2 and 10&quot; or &quot;Age 10 or older&quot;)\n\n/*\n @output: What to use in HIV pre-exposure prophylaxis (PrEP) for adults and adolescents\n */\ndefine &quot;What to use in HIV pre-exposure prophylaxis (PrEP) for adults and adolescents&quot;:\n  &quot;Client is suitable for PrEP&quot; and &quot;Age 10 or older&quot;\n\n/*\n @dynamicValue: Preferred PEP backbone regimen\n */\ndefine &quot;Preferred PEP backbone regimen&quot;:\n  case\n  when &quot;Suspected exposure to HIV within 72 hours&quot; and &quot;Age 10 or older&quot;\n    then { Concepts.&quot;TDF + 3TC - HIV.C.DE20&quot;, Concepts.&quot;TDF + FTC - HIV.C.DE18&quot; }\n  when &quot;Suspected exposure to HIV within 72 hours&quot; and &quot;Age between 2 and 10&quot;\n    then { Concepts.&quot;AZT + 3TC&quot; }\n  else null\n  end\n\n/*\n @dynamicValue: Alternative PEP backbone regimen\n */\ndefine &quot;Alternative PEP backbone regimen&quot;:\n  case\n  when &quot;Suspected exposure to HIV within 72 hours&quot; and &quot;Age between 2 and 10&quot;\n    then { Concepts.&quot;ABC + 3TC&quot;, Concepts.&quot;TDF + 3TC - HIV.C.DE20&quot;, Concepts.&quot;TDF + FTC - HIV.C.DE18&quot; }\n  else null\n  end\n\n/*\n @dynamicValue: Preferred third PEP drug\n */\ndefine &quot;Preferred third PEP drug&quot;:\n  case\n  when &quot;Suspected exposure to HIV within 72 hours&quot; and &quot;Age 10 or older&quot;\n    then { Concepts.&quot;DTG - HIV.C.DE100&quot; }\n  when &quot;Suspected exposure to HIV within 72 hours&quot; and &quot;Age between 2 and 10&quot;\n    then { Concepts.&quot;DTG - HIV.C.DE100&quot; }\n  else null\n  end\n\n/*\n @dynamicValue: Alternative third PEP drug\n */\ndefine &quot;Alternative third PEP drug&quot;:\n  case\n  when &quot;Suspected exposure to HIV within 72 hours&quot; and (&quot;Age 10 or older&quot; or &quot;Age between 2 and 10&quot;)\n    then { \n      Concepts.&quot;ATV/r - HIV.C.DE102&quot;,\n      Concepts.&quot;DRV/r - HIV.C.DE103&quot;,\n      Concepts.&quot;LPV/r - HIV.C.DE104&quot;,\n      Concepts.&quot;RAL - HIV.C.DE105&quot; \n    }\n  else null\n  end\n\n/*\n @dynamicValue: Recommended PrEP regimen\n */\ndefine &quot;Recommended PrEP regimen&quot;:\n  case\n  when &quot;Age 10 or older&quot; and &quot;Client is suitable for PrEP&quot;\n    then {\n      Concepts.&quot;TDF + FTC - HIV.C.DE18&quot;,\n      Concepts.&quot;TDF - HIV.C.DE19&quot;,\n      Concepts.&quot;TDF + 3TC - HIV.C.DE20&quot;,\n      Concepts.&quot;Other TDF-based regimen&quot;,\n      Concepts.&quot;Dapivirine vaginal ring DVR - HIV.C.DE22&quot;,\n      Concepts.&quot;CAB-LA - HIV.C.DE23&quot;\n    }\n  else null\n  end\n\n/*\n @dynamicValue: Guidance\n */\ndefine &quot;Guidance&quot;:\n  Combine({\n    if &quot;Age 10 or older&quot; and &quot;Suspected exposure to HIV within 72 hours&quot;\n      then 'An HIV post-exposure prophylaxis (PEP) regimen with two ARV drugs is effective, but three drugs are preferred.\n\n  TDF + 3TC (or FTC) is recommended as the preferred backbone regimen for HIV post-exposure prophylaxis for adults and adolescents. \n\n  DTG is recommended as the preferred third drug for HIV PEP.\n\n  When available, ATV/r, DRV/r, LPV/r and RAL may be considered as alternative third drug options for PEP.\n\n  NVP should not be used for PEP for adults, adolescents and older children because of the risk of life-threatening serious adverse events associated with HIV-negative adults using this drug.'\n      else '',\n    if &quot;Age between 2 and 10&quot; and &quot;Suspected exposure to HIV within 72 hours&quot;\n      then 'An HIV PEP regimen with two ARV drugs is effective, but three drugs are preferred.\n\n  AZT + 3TC is recommended as the preferred backbone regimen for HIV PEP for children 10 years and younger. \n\n  ABC + 3TC or TDF + 3TC (or FTC) can be considered as alternative regimens.\n\n  DTG is recommended as the preferred third drug for HIV PEP with approved DTG dosing.\n\n  When available, ATV/r, DRV/r, LPV/r and RAL may be considered as alternative third drug options for PEP.\n\n  The choice of ARV drugs for children will depend on the availability of approved dosing and age-appropriate formulations.\n  for children. \n\n  DTG was approved in June 2020 for all children older than 4 weeks weighing more than 3kg and available with dispersible tablets that can be easily administered for all children weighting less than 20 kg. For children weighting more than 20 kg, 50 mg adult film-coated tablets can be use.'\n      else '',\n    if &quot;Age 10 or older&quot; and &quot;Client is suitable for PrEP&quot;\n      then 'If PrEP is suitable for client, prescribe one of the PrEP regimens: \\'TDF + FTC\\', \\'TDF\\',\n  \\'TDF + 3TC\\', \\'Other TDF-based regimen\\', \\'Dapivirine vaginal ring (DVR)\\', \\'CAB-LA\\'.\n\n  The dapivirine vaginal ring may be offered as an additional prevention choice for women* at substantial risk of HIV infection as part of combination prevention approaches.\n\n  *For the recommendation on dapirivirine vaginal ring, the term women applies to cisgender women, meaning women assigned female at birth.  There is no research at this time to support the dapivirine vaginal ring for other populations.'\n      else ''\n  })\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/HIVC23DTLogic",
  "version" : "0.4.3",
  "name" : "HIVC23DTLogic",
  "title" : "HIV.C23.DT 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" : "HIV.C23.DT Logic",
  "content" : [
    {
      "contentType" : "text/cql",
      "data" : "LyoqCkxpYnJhcnk6IEhJVi5DMjMuRFQgTG9naWMKCkBEZWNpc2lvbklEOiBISVYuQzIzLkRUCkBCdXNpbmVzc1J1bGU6IERldGVybWluZSBQRVAgb3IgUHJFUCByZWdpbWVuCkBUcmlnZ2VyOiBISVYuQzIzIFByZXNjcmliZSBvciBhZG1pbmlzdGVyIFByRVAgb3IgUEVQCkBIaXRQb2xpY3k6IFJ1bGUgT3JkZXIKQERlc2NyaXB0aW9uOiBEZXRlcm1pbmUgUEVQIG9yIFByRVAgcmVnaW1lbgoKRGF0YSBDb25jZXB0czoKICAKCkNvbnNvbGlkYXRlZCBndWlkZWxpbmVzIG9uIEhJViBwcmV2ZW50aW9uLCB0ZXN0aW5nLCB0cmVhdG1lbnQsIHNlcnZpY2UgZGVsaXZlcnkgYW5kIG1vbml0b3Jpbmc6IHJlY29tbWVuZGF0aW9ucyBmb3IgYSBwdWJsaWMgaGVhbHRoIGFwcHJvYWNoICgyMDIxKSBDaGFwdGVyIDU6IEFkdmFuY2VkIEhJViBEaXNlYXNlLiBGaWd1cmUgNS4xOiBBbGdvcml0aG0gZm9yIHByb3ZpZGluZyBhIHBhY2thZ2Ugb2YgY2FyZSBmb3IgcGVvcGxlIHdpdGggYWR2YW5jZWQgSElWIGRpc2Vhc2UuCiovCgpsaWJyYXJ5IEhJVkMyM0RUTG9naWMKCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIEhJVkNvbW1vbiB2ZXJzaW9uICcwLjAuMScgY2FsbGVkIEhJQwppbmNsdWRlIEhJVkNvbmNlcHRzIGNhbGxlZCBDb25jZXB0cwppbmNsdWRlIEhJVkVuY291bnRlckVsZW1lbnRzIGNhbGxlZCBFbGVtZW50cwppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJwoKaW5jbHVkZSBXSE9Db21tb24gY2FsbGVkIFdDb20KCnBhcmFtZXRlciBUb2RheSBEYXRlIGRlZmF1bHQgVG9kYXkoKQoKY29udGV4dCBQYXRpZW50CgogLyoKICBAaW5wdXQ6IEFnZQogIEBwc2V1ZG9jb2RlOiAiQWdlIiA+PSAxMCB5ZWFycwogICovCmRlZmluZSAiQWdlIDEwIG9yIG9sZGVyIjoKICBFbGVtZW50cy4iQ3VycmVudCBQYXRpZW50IEFnZSBJbiBZZWFycyIgPj0gMTAKCiAvKgogIEBpbnB1dDogQWdlCiAgQHBzZXVkb2NvZGU6IDIgeWVhcnMgPCAiQWdlIiA8IDEwIHllYXJzCiAgKi8KZGVmaW5lICJBZ2UgYmV0d2VlbiAyIGFuZCAxMCI6CiAgMiA8IEVsZW1lbnRzLiJDdXJyZW50IFBhdGllbnQgQWdlIEluIFllYXJzIiBhbmQgRWxlbWVudHMuIkN1cnJlbnQgUGF0aWVudCBBZ2UgSW4gWWVhcnMiIDwgMTAKCi8qCiBAaW5wdXQ6IERhdGUvdGltZSBvZiBzdXNjZXB0ZWQgZXhwb3N1cmUgdG8gSElWCiBAcHNldWRvY29kZTogIkRhdGUvdGltZSBvZiBzdXNwZWN0ZWQgZXhwb3N1cmUgdG8gSElWIiA8IDcyIGhvdXJzIGZyb20gQ3VycmVudCBEYXRlVGltZQogKi8KZGVmaW5lICJTdXNwZWN0ZWQgZXhwb3N1cmUgdG8gSElWIHdpdGhpbiA3MiBob3VycyI6CiAgZXhpc3RzKAogICAgRWxlbWVudHMuIkRhdGUvdGltZSBvZiBzdXNwZWN0ZWQgZXhwb3N1cmUgdG8gSElWIEIuREUxNCIgTwogICAgICB3aGVyZSBGSElSSGVscGVycy5Ub0ludGVnZXIoTy52YWx1ZSkgPCA3MgogICAgICAgIG9yIE8udmFsdWUgPCBUb2RheSArIDcyIGhvdXJzCiAgICAgICAgb3IgTy52YWx1ZS5lbmQgPCBUb2RheSArIDcyIGhvdXJzCiAgKQoKLyoKIEBpbnB1dDogU3VpdGFibGUgZm9yIFByRVAKIEBwc2V1ZG9jb2RlOiAiU3VpdGFibGUgZm9yIFByRVAiPVRydWUKICovCmRlZmluZSAiQ2xpZW50IGlzIHN1aXRhYmxlIGZvciBQckVQIjoKICBleGlzdHMoCiAgICBFbGVtZW50cy4iU3VpdGFibGUgZm9yIFByRVAiIE8KICAgICAgd2hlcmUgTy52YWx1ZSA9IHRydWUKICApCgovKgogQG91dHB1dDogV2hhdCB0byB1c2UgaW4gSElWIHBvc3QtZXhwb3N1cmUgcHJvcGh5bGF4aXMgKFBFUCkgZm9yIGFkdWx0cyBhbmQgYWRvbGVzY2VudHMKICovCmRlZmluZSAiV2hhdCB0byB1c2UgaW4gSElWIHBvc3QtZXhwb3N1cmUgcHJvcGh5bGF4aXMgKFBFUCkgZm9yIGFkdWx0cyBhbmQgYWRvbGVzY2VudHMiOgogICJTdXNwZWN0ZWQgZXhwb3N1cmUgdG8gSElWIHdpdGhpbiA3MiBob3VycyIgYW5kICgiQWdlIGJldHdlZW4gMiBhbmQgMTAiIG9yICJBZ2UgMTAgb3Igb2xkZXIiKQoKLyoKIEBvdXRwdXQ6IFdoYXQgdG8gdXNlIGluIEhJViBwcmUtZXhwb3N1cmUgcHJvcGh5bGF4aXMgKFByRVApIGZvciBhZHVsdHMgYW5kIGFkb2xlc2NlbnRzCiAqLwpkZWZpbmUgIldoYXQgdG8gdXNlIGluIEhJViBwcmUtZXhwb3N1cmUgcHJvcGh5bGF4aXMgKFByRVApIGZvciBhZHVsdHMgYW5kIGFkb2xlc2NlbnRzIjoKICAiQ2xpZW50IGlzIHN1aXRhYmxlIGZvciBQckVQIiBhbmQgIkFnZSAxMCBvciBvbGRlciIKCi8qCiBAZHluYW1pY1ZhbHVlOiBQcmVmZXJyZWQgUEVQIGJhY2tib25lIHJlZ2ltZW4KICovCmRlZmluZSAiUHJlZmVycmVkIFBFUCBiYWNrYm9uZSByZWdpbWVuIjoKICBjYXNlCiAgd2hlbiAiU3VzcGVjdGVkIGV4cG9zdXJlIHRvIEhJViB3aXRoaW4gNzIgaG91cnMiIGFuZCAiQWdlIDEwIG9yIG9sZGVyIgogICAgdGhlbiB7IENvbmNlcHRzLiJUREYgKyAzVEMgLSBISVYuQy5ERTIwIiwgQ29uY2VwdHMuIlRERiArIEZUQyAtIEhJVi5DLkRFMTgiIH0KICB3aGVuICJTdXNwZWN0ZWQgZXhwb3N1cmUgdG8gSElWIHdpdGhpbiA3MiBob3VycyIgYW5kICJBZ2UgYmV0d2VlbiAyIGFuZCAxMCIKICAgIHRoZW4geyBDb25jZXB0cy4iQVpUICsgM1RDIiB9CiAgZWxzZSBudWxsCiAgZW5kCgovKgogQGR5bmFtaWNWYWx1ZTogQWx0ZXJuYXRpdmUgUEVQIGJhY2tib25lIHJlZ2ltZW4KICovCmRlZmluZSAiQWx0ZXJuYXRpdmUgUEVQIGJhY2tib25lIHJlZ2ltZW4iOgogIGNhc2UKICB3aGVuICJTdXNwZWN0ZWQgZXhwb3N1cmUgdG8gSElWIHdpdGhpbiA3MiBob3VycyIgYW5kICJBZ2UgYmV0d2VlbiAyIGFuZCAxMCIKICAgIHRoZW4geyBDb25jZXB0cy4iQUJDICsgM1RDIiwgQ29uY2VwdHMuIlRERiArIDNUQyAtIEhJVi5DLkRFMjAiLCBDb25jZXB0cy4iVERGICsgRlRDIC0gSElWLkMuREUxOCIgfQogIGVsc2UgbnVsbAogIGVuZAoKLyoKIEBkeW5hbWljVmFsdWU6IFByZWZlcnJlZCB0aGlyZCBQRVAgZHJ1ZwogKi8KZGVmaW5lICJQcmVmZXJyZWQgdGhpcmQgUEVQIGRydWciOgogIGNhc2UKICB3aGVuICJTdXNwZWN0ZWQgZXhwb3N1cmUgdG8gSElWIHdpdGhpbiA3MiBob3VycyIgYW5kICJBZ2UgMTAgb3Igb2xkZXIiCiAgICB0aGVuIHsgQ29uY2VwdHMuIkRURyAtIEhJVi5DLkRFMTAwIiB9CiAgd2hlbiAiU3VzcGVjdGVkIGV4cG9zdXJlIHRvIEhJViB3aXRoaW4gNzIgaG91cnMiIGFuZCAiQWdlIGJldHdlZW4gMiBhbmQgMTAiCiAgICB0aGVuIHsgQ29uY2VwdHMuIkRURyAtIEhJVi5DLkRFMTAwIiB9CiAgZWxzZSBudWxsCiAgZW5kCgovKgogQGR5bmFtaWNWYWx1ZTogQWx0ZXJuYXRpdmUgdGhpcmQgUEVQIGRydWcKICovCmRlZmluZSAiQWx0ZXJuYXRpdmUgdGhpcmQgUEVQIGRydWciOgogIGNhc2UKICB3aGVuICJTdXNwZWN0ZWQgZXhwb3N1cmUgdG8gSElWIHdpdGhpbiA3MiBob3VycyIgYW5kICgiQWdlIDEwIG9yIG9sZGVyIiBvciAiQWdlIGJldHdlZW4gMiBhbmQgMTAiKQogICAgdGhlbiB7IAogICAgICBDb25jZXB0cy4iQVRWL3IgLSBISVYuQy5ERTEwMiIsCiAgICAgIENvbmNlcHRzLiJEUlYvciAtIEhJVi5DLkRFMTAzIiwKICAgICAgQ29uY2VwdHMuIkxQVi9yIC0gSElWLkMuREUxMDQiLAogICAgICBDb25jZXB0cy4iUkFMIC0gSElWLkMuREUxMDUiIAogICAgfQogIGVsc2UgbnVsbAogIGVuZAoKLyoKIEBkeW5hbWljVmFsdWU6IFJlY29tbWVuZGVkIFByRVAgcmVnaW1lbgogKi8KZGVmaW5lICJSZWNvbW1lbmRlZCBQckVQIHJlZ2ltZW4iOgogIGNhc2UKICB3aGVuICJBZ2UgMTAgb3Igb2xkZXIiIGFuZCAiQ2xpZW50IGlzIHN1aXRhYmxlIGZvciBQckVQIgogICAgdGhlbiB7CiAgICAgIENvbmNlcHRzLiJUREYgKyBGVEMgLSBISVYuQy5ERTE4IiwKICAgICAgQ29uY2VwdHMuIlRERiAtIEhJVi5DLkRFMTkiLAogICAgICBDb25jZXB0cy4iVERGICsgM1RDIC0gSElWLkMuREUyMCIsCiAgICAgIENvbmNlcHRzLiJPdGhlciBUREYtYmFzZWQgcmVnaW1lbiIsCiAgICAgIENvbmNlcHRzLiJEYXBpdmlyaW5lIHZhZ2luYWwgcmluZyBEVlIgLSBISVYuQy5ERTIyIiwKICAgICAgQ29uY2VwdHMuIkNBQi1MQSAtIEhJVi5DLkRFMjMiCiAgICB9CiAgZWxzZSBudWxsCiAgZW5kCgovKgogQGR5bmFtaWNWYWx1ZTogR3VpZGFuY2UKICovCmRlZmluZSAiR3VpZGFuY2UiOgogIENvbWJpbmUoewogICAgaWYgIkFnZSAxMCBvciBvbGRlciIgYW5kICJTdXNwZWN0ZWQgZXhwb3N1cmUgdG8gSElWIHdpdGhpbiA3MiBob3VycyIKICAgICAgdGhlbiAnQW4gSElWIHBvc3QtZXhwb3N1cmUgcHJvcGh5bGF4aXMgKFBFUCkgcmVnaW1lbiB3aXRoIHR3byBBUlYgZHJ1Z3MgaXMgZWZmZWN0aXZlLCBidXQgdGhyZWUgZHJ1Z3MgYXJlIHByZWZlcnJlZC4KCiAgVERGICsgM1RDIChvciBGVEMpIGlzIHJlY29tbWVuZGVkIGFzIHRoZSBwcmVmZXJyZWQgYmFja2JvbmUgcmVnaW1lbiBmb3IgSElWIHBvc3QtZXhwb3N1cmUgcHJvcGh5bGF4aXMgZm9yIGFkdWx0cyBhbmQgYWRvbGVzY2VudHMuIAoKICBEVEcgaXMgcmVjb21tZW5kZWQgYXMgdGhlIHByZWZlcnJlZCB0aGlyZCBkcnVnIGZvciBISVYgUEVQLgoKICBXaGVuIGF2YWlsYWJsZSwgQVRWL3IsIERSVi9yLCBMUFYvciBhbmQgUkFMIG1heSBiZSBjb25zaWRlcmVkIGFzIGFsdGVybmF0aXZlIHRoaXJkIGRydWcgb3B0aW9ucyBmb3IgUEVQLgoKICBOVlAgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBQRVAgZm9yIGFkdWx0cywgYWRvbGVzY2VudHMgYW5kIG9sZGVyIGNoaWxkcmVuIGJlY2F1c2Ugb2YgdGhlIHJpc2sgb2YgbGlmZS10aHJlYXRlbmluZyBzZXJpb3VzIGFkdmVyc2UgZXZlbnRzIGFzc29jaWF0ZWQgd2l0aCBISVYtbmVnYXRpdmUgYWR1bHRzIHVzaW5nIHRoaXMgZHJ1Zy4nCiAgICAgIGVsc2UgJycsCiAgICBpZiAiQWdlIGJldHdlZW4gMiBhbmQgMTAiIGFuZCAiU3VzcGVjdGVkIGV4cG9zdXJlIHRvIEhJViB3aXRoaW4gNzIgaG91cnMiCiAgICAgIHRoZW4gJ0FuIEhJViBQRVAgcmVnaW1lbiB3aXRoIHR3byBBUlYgZHJ1Z3MgaXMgZWZmZWN0aXZlLCBidXQgdGhyZWUgZHJ1Z3MgYXJlIHByZWZlcnJlZC4KCiAgQVpUICsgM1RDIGlzIHJlY29tbWVuZGVkIGFzIHRoZSBwcmVmZXJyZWQgYmFja2JvbmUgcmVnaW1lbiBmb3IgSElWIFBFUCBmb3IgY2hpbGRyZW4gMTAgeWVhcnMgYW5kIHlvdW5nZXIuIAoKICBBQkMgKyAzVEMgb3IgVERGICsgM1RDIChvciBGVEMpIGNhbiBiZSBjb25zaWRlcmVkIGFzIGFsdGVybmF0aXZlIHJlZ2ltZW5zLgoKICBEVEcgaXMgcmVjb21tZW5kZWQgYXMgdGhlIHByZWZlcnJlZCB0aGlyZCBkcnVnIGZvciBISVYgUEVQIHdpdGggYXBwcm92ZWQgRFRHIGRvc2luZy4KCiAgV2hlbiBhdmFpbGFibGUsIEFUVi9yLCBEUlYvciwgTFBWL3IgYW5kIFJBTCBtYXkgYmUgY29uc2lkZXJlZCBhcyBhbHRlcm5hdGl2ZSB0aGlyZCBkcnVnIG9wdGlvbnMgZm9yIFBFUC4KCiAgVGhlIGNob2ljZSBvZiBBUlYgZHJ1Z3MgZm9yIGNoaWxkcmVuIHdpbGwgZGVwZW5kIG9uIHRoZSBhdmFpbGFiaWxpdHkgb2YgYXBwcm92ZWQgZG9zaW5nIGFuZCBhZ2UtYXBwcm9wcmlhdGUgZm9ybXVsYXRpb25zLgogIGZvciBjaGlsZHJlbi4gCgogIERURyB3YXMgYXBwcm92ZWQgaW4gSnVuZSAyMDIwIGZvciBhbGwgY2hpbGRyZW4gb2xkZXIgdGhhbiA0IHdlZWtzIHdlaWdoaW5nIG1vcmUgdGhhbiAza2cgYW5kIGF2YWlsYWJsZSB3aXRoIGRpc3BlcnNpYmxlIHRhYmxldHMgdGhhdCBjYW4gYmUgZWFzaWx5IGFkbWluaXN0ZXJlZCBmb3IgYWxsIGNoaWxkcmVuIHdlaWdodGluZyBsZXNzIHRoYW4gMjAga2cuIEZvciBjaGlsZHJlbiB3ZWlnaHRpbmcgbW9yZSB0aGFuIDIwIGtnLCA1MCBtZyBhZHVsdCBmaWxtLWNvYXRlZCB0YWJsZXRzIGNhbiBiZSB1c2UuJwogICAgICBlbHNlICcnLAogICAgaWYgIkFnZSAxMCBvciBvbGRlciIgYW5kICJDbGllbnQgaXMgc3VpdGFibGUgZm9yIFByRVAiCiAgICAgIHRoZW4gJ0lmIFByRVAgaXMgc3VpdGFibGUgZm9yIGNsaWVudCwgcHJlc2NyaWJlIG9uZSBvZiB0aGUgUHJFUCByZWdpbWVuczogXCdUREYgKyBGVENcJywgXCdUREZcJywKICBcJ1RERiArIDNUQ1wnLCBcJ090aGVyIFRERi1iYXNlZCByZWdpbWVuXCcsIFwnRGFwaXZpcmluZSB2YWdpbmFsIHJpbmcgKERWUilcJywgXCdDQUItTEFcJy4KCiAgVGhlIGRhcGl2aXJpbmUgdmFnaW5hbCByaW5nIG1heSBiZSBvZmZlcmVkIGFzIGFuIGFkZGl0aW9uYWwgcHJldmVudGlvbiBjaG9pY2UgZm9yIHdvbWVuKiBhdCBzdWJzdGFudGlhbCByaXNrIG9mIEhJViBpbmZlY3Rpb24gYXMgcGFydCBvZiBjb21iaW5hdGlvbiBwcmV2ZW50aW9uIGFwcHJvYWNoZXMuCgogICpGb3IgdGhlIHJlY29tbWVuZGF0aW9uIG9uIGRhcGlyaXZpcmluZSB2YWdpbmFsIHJpbmcsIHRoZSB0ZXJtIHdvbWVuIGFwcGxpZXMgdG8gY2lzZ2VuZGVyIHdvbWVuLCBtZWFuaW5nIHdvbWVuIGFzc2lnbmVkIGZlbWFsZSBhdCBiaXJ0aC4gIFRoZXJlIGlzIG5vIHJlc2VhcmNoIGF0IHRoaXMgdGltZSB0byBzdXBwb3J0IHRoZSBkYXBpdmlyaW5lIHZhZ2luYWwgcmluZyBmb3Igb3RoZXIgcG9wdWxhdGlvbnMuJwogICAgICBlbHNlICcnCiAgfSkK"
    }
  ]
}