WHO Immunization Implementation Guide
1.0.0 - release

WHO Immunization Implementation Guide, published by WHO. This guide is not an authorized publication; it is the continuous build for version 1.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/WorldHealthOrganization/smart-immunizations/tree/132/merge and changes regularly. See the Directory of published versions

: IMMZD18SDTPPregnancyStartingWith4DosesLogic - JSON Representation

Draft as of 2026-03-31

Raw json | Download

{
  "resourceType" : "Library",
  "id" : "IMMZD18SDTPPregnancyStartingWith4DosesLogic",
  "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;\">IMMZD18SDTPPregnancyStartingWith4DosesLogic</td>\n        </tr>\n        \n\n        \n        \n        <tr>\n            <th scope=\"row\"><b>Id: </b></th>\n            <td style=\"padding-left: 4px;\">IMMZD18SDTPPregnancyStartingWith4DosesLogic</td>\n        </tr>\n        \n\n        \n        \n        <tr>\n            <th scope=\"row\"><b>Version: </b></th>\n            <td style=\"padding-left: 4px;\">1.0.0</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-IMMZD18SDTPPregnancyStartingWith4DosesLogic.html\">IMMZD18SDTPPregnancyStartingWith4DosesLogic</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\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/7.1.0/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;\">2026-03-31 13:54:17+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>This library defines decision support logic for the IMMZ.D18.S.DTP.Pregnancy starting with 4 doses schedule table in the Immunization CPG</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        <tr>\n            <th scope=\"row\"><b>Related Artifacts: </b></th>\n            <td style=\"padding-left: 4px;\">\n                \n                \n                \n                <p><b>Dependencies</b></p>\n                <ul>\n                  \n                    <li><a href=\"Library-WHOCommon.html\">WHOCommon</a></li>\n                  \n                    <li><a href=\"Library-IMMZCommon.html\">IMMZCommon</a></li>\n                  \n                    <li><a href=\"Library-IMMZConcepts.html\">IMMZConcepts</a></li>\n                  \n                    <li><a href=\"Library-IMMZEncounterElements.html\">IMMZEncounterElements</a></li>\n                  \n                    <li><a href=\"Library-IMMZD2DTDTPEncounterElements.html\">IMMZD2DTDTPEncounterElements</a></li>\n                  \n                </ul>\n                \n                \n                \n                \n                \n            </td>\n        </tr>\n        \n\n        \n        <tr>\n          <th scope=\"row\"><b>Parameters: </b></th>\n          <td style=\"padding-left: 4px;\">\n            <table class=\"grid-dict\">\n              <tr><th><b>Name</b></th><th><b>Type</b></th><th><b>Min</b></th><th><b>Max</b></th><th><b>In/Out</b></th></tr>\n              \n                <tr><th>Today</th><th>date</th><th>0</th><th>1</th><th>In</th></tr>\n              \n                <tr><th>Patient</th><th>Patient</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Second tetanus and diphtheria booster dose was administered</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy)</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy) Due Date</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy) Overdue</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy) Expiration</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy) Create</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Third tetanus and diphtheria-containing booster dose was administered. Tetanus and diphtheria immunization schedule has been completed.</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Tetanus and diphtheria-containing vaccine booster dose 3</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Tetanus and diphtheria-containing vaccine booster dose 3 Due Date</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Tetanus and diphtheria-containing vaccine booster dose 3 Create</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Tetanus and diphtheria-containing vaccine booster dose 3 Overdue</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Tetanus and diphtheria-containing vaccine booster dose 3 Expiration</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Test Validation</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n            </table>\n          </td>\n        </tr>\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: IMMZD18SDTPPregnancyStartingWith4DosesLogic (IMMZ.D18.S.DTP.Pregnancy starting with 4 doses schedule)\n * Schedule Table: Diphtheria and tetanus vaccination schedule in pregnant women who received 4 childhood diphtheria–tetanus–pertussis (DTP) doses\n */\nlibrary IMMZD18SDTPPregnancyStartingWith4DosesLogic\n\nusing FHIR version '4.0.1'\ninclude FHIRHelpers version '4.0.1'\n\ninclude WHOCommon called WC\n\ninclude IMMZCommon called Common\ninclude IMMZConcepts called Concepts\n\ninclude IMMZEncounterElements called IE\ninclude IMMZD2DTDTPEncounterElements called Encounter\n\nparameter Today Date default Today()\n\n\ncontext Patient\n\n\n/*\n@output: Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy)\n@description: Provision of tetanus and diphtheria booster dose 2 for pregnant women who received 4 tetanus-containing vaccines doses during childhood or pre-adulthood\n@trigger: The primary DTP series has been completed, first tetanus and diphtheria booster dose was administered and client is currently pregnant\n@pseudo: &quot;Completed the primary vaccination series&quot; = TRUE (where &quot;Vaccine type&quot; = &quot;DTP-containing vaccines&quot;) AND Count of vaccines administered where &quot;Vaccine type&quot; = &quot;Tetanus and diphtheria-containing vaccines&quot; and &quot;Type of dose&quot; = &quot;Booster dose&quot;) = 1 AND &quot;Currently pregnant&quot; = TRUE\n@triggerDate: First ANC contact date\n&quot;Contact date&quot; WHEN &quot;ANC contact number&quot; = 1\n*/\ndefine &quot;Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy)&quot;:\n  Encounter.&quot;Three DTP primary series doses were administered&quot; and\n  Encounter.&quot;One tetanus and diphtheria booster dose was administered&quot; and\n  Encounter.&quot;Client is currently pregnant&quot; and\n  not &quot;Second tetanus and diphtheria booster dose was administered&quot;\n\n\n/*\n@output: Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy) Create\n@create: Women who received 4 tetanus-containing vaccine doses during childhood or pre-adulthood need only 1 booster dose, which should be given at the first opportunity.\n*/\ndefine &quot;Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy) Create&quot;:\n  if &quot;Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy)&quot;\n  then 'Women who received 4 tetanus-containing vaccine doses during childhood or pre-adulthood need only 1 booster dose, which should be given at the first opportunity.' + '\nDue Date: ' + ToString(&quot;Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy) Due Date&quot;) + '\nOverdue: ' + ToString(&quot;Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy) Overdue&quot;) + '\nExpiration: ' + &quot;Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy) Expiration&quot;\n  else ''\n\n\n/*\n@dynamicValue: Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy) Due Date\n@pseudocode: &quot;Contact date&quot; WHEN &quot;ANC contact number&quot; = 1\n*/\ndefine &quot;Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy) Due Date&quot;:\n  if &quot;Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy)&quot; then Today\n  else null\n\n\n/*\n@dynamicValue: Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy) Overdue\n@pseudocode: Every subsequent contact until 38 weeks\n*/\ndefine &quot;Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy) Overdue&quot;:\n  if &quot;Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy)&quot; then Today\n  else null\n\n\n/*\n@dynamicValue: Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy) Expiration\n@pseudocode: Two weeks before birth for the pregnancy; however individuals remain eligible to be vaccinated\n&quot;Gestational age&quot; &lt; 38 weeks\n*/\ndefine &quot;Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy) Expiration&quot;:\n  if &quot;Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy)&quot; then 'Two weeks before birth'\n  else null\n\n  \n/*\n@complete: Second tetanus and diphtheria booster dose was administered\n@pseudocode: Count of vaccines administered (where &quot;Vaccine type&quot; = &quot;Tetanus and diphtheria-containing vaccines&quot; and &quot;Type of dose&quot; = &quot;Booster dose&quot;) = 2\n*/\ndefine &quot;Second tetanus and diphtheria booster dose was administered&quot;:\n  Encounter.&quot;Two tetanus and diphtheria booster doses were administered&quot;\n\n\n\n/*\n@output: Tetanus and diphtheria-containing vaccine booster dose 3\n@description: Provision of tetanus and diphtheria booster dose 3 for pregnant women who received 4 tetanus-containing vaccines doses during childhood or pre-adulthood\n@trigger: Second tetanus and diphtheria booster dose was administered\n@pseudo: Count of vaccines administered (where &quot;Vaccine type&quot; = &quot;Tetanus and diphtheria-containing vaccines&quot; and &quot;Type of dose&quot; = &quot;Booster dose&quot;) = 2\n@triggerDate: Latest &quot;Date and time of vaccination&quot; where &quot;Vaccine type&quot; = &quot;Tetanus and diphtheria-containing vaccines&quot;\n*/\ndefine &quot;Tetanus and diphtheria-containing vaccine booster dose 3&quot;:\n  &quot;Second tetanus and diphtheria booster dose was administered&quot; and\n  not &quot;Third tetanus and diphtheria-containing booster dose was administered. Tetanus and diphtheria immunization schedule has been completed.&quot;\n\n\n/*\n@output: Tetanus and diphtheria-containing vaccine booster dose 3 Create\n@create: To provide lifelong protection for tetanus, a sixth dose should be provided at least 1 year after the fifth dose, or in next pregnancy.\n*/\ndefine &quot;Tetanus and diphtheria-containing vaccine booster dose 3 Create&quot;:\n  if &quot;Tetanus and diphtheria-containing vaccine booster dose 3&quot;\n  then 'To provide lifelong protection for tetanus, a sixth dose should be provided at least 1 year after the fifth dose, or in next pregnancy.' + '\nDue Date: ' + ToString(&quot;Tetanus and diphtheria-containing vaccine booster dose 3 Due Date&quot;)\n  else ''\n\n\n/*\n@dynamicValue: Tetanus and diphtheria-containing vaccine booster dose 3 Due Date\n@pseudocode: Latest &quot;Date and time of vaccination&quot; (where &quot;Vaccine type&quot; = &quot;Tetanus and diphtheria-containing vaccines&quot;) + 1 year or during next pregnancy\n*/\ndefine &quot;Tetanus and diphtheria-containing vaccine booster dose 3 Due Date&quot;:\n  if &quot;Tetanus and diphtheria-containing vaccine booster dose 3&quot; then Encounter.&quot;Date of Latest Td Dose&quot; + 1 year\n  else null\n\n\n/*\n@dynamicValue: Tetanus and diphtheria-containing vaccine booster dose 3 Overdue\n@pseudocode: To be determined by Member States\n*/\ndefine &quot;Tetanus and diphtheria-containing vaccine booster dose 3 Overdue&quot;:\n  null\n\n\n/*\n@dynamicValue: Tetanus and diphtheria-containing vaccine booster dose 3 Expiration\n@pseudocode: To be determined by Member States. However, there is no recommended expiration date and individuals remain eligible to be vaccinated.\n*/\ndefine &quot;Tetanus and diphtheria-containing vaccine booster dose 3 Expiration&quot;:\n  null\n\n  \n/*\n@complete: Third tetanus and diphtheria-containing booster dose was administered. Tetanus and diphtheria immunization schedule has been completed.\n@pseudocode: Count of vaccines administered (where &quot;Vaccine type&quot; = &quot;Tetanus and diphtheria-containing vaccines&quot; and &quot;Type of dose&quot; = &quot;Booster dose&quot;) = 3\n&quot;Immunization recommendation status&quot; = &quot;Complete&quot; (where &quot;Vaccine type&quot; = &quot;Tetanus and diphtheria-containing vaccines&quot;)\n*/\ndefine &quot;Third tetanus and diphtheria-containing booster dose was administered. Tetanus and diphtheria immunization schedule has been completed.&quot;:\n  Encounter.&quot;Three tetanus and diphtheria booster doses were administered&quot;\n\n\n\n/*\n@test: Test expected results based on example patients\n*/\ndefine &quot;Test Validation&quot;:\n  case\n    when Patient.id = 'DTP79.3' then &quot;Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy)&quot;\n    when Patient.id = 'DTP80.3' then &quot;Tetanus and diphtheria-containing vaccine booster dose 3&quot;\n    when Patient.id = 'DTP81.3' then &quot;Tetanus and diphtheria-containing vaccine booster dose 3&quot;\n    when Patient.id = 'DTP82.2' then &quot;Third tetanus and diphtheria-containing booster dose was administered. Tetanus and diphtheria immunization schedule has been completed.&quot;\n    else 'No test case set'\n  end\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/immunizations/Library/IMMZD18SDTPPregnancyStartingWith4DosesLogic",
  "version" : "1.0.0",
  "name" : "IMMZD18SDTPPregnancyStartingWith4DosesLogic",
  "title" : "IMMZD18SDTPPregnancyStartingWith4DosesLogic",
  "status" : "draft",
  "experimental" : false,
  "type" : {
    "coding" : [
      {
        "system" : "http://terminology.hl7.org/CodeSystem/library-type",
        "code" : "logic-library"
      }
    ]
  },
  "date" : "2026-03-31T13:54:17+00:00",
  "publisher" : "WHO",
  "contact" : [
    {
      "name" : "WHO",
      "telecom" : [
        {
          "system" : "url",
          "value" : "http://who.int"
        }
      ]
    }
  ],
  "description" : "This library defines decision support logic for the IMMZ.D18.S.DTP.Pregnancy starting with 4 doses schedule table in the Immunization CPG",
  "relatedArtifact" : [
    {
      "type" : "depends-on",
      "display" : "Library WC",
      "resource" : "http://smart.who.int/immunizations/Library/WHOCommon"
    },
    {
      "type" : "depends-on",
      "display" : "Library Common",
      "resource" : "http://smart.who.int/immunizations/Library/IMMZCommon"
    },
    {
      "type" : "depends-on",
      "display" : "Library Concepts",
      "resource" : "http://smart.who.int/immunizations/Library/IMMZConcepts"
    },
    {
      "type" : "depends-on",
      "display" : "Library IE",
      "resource" : "http://smart.who.int/immunizations/Library/IMMZEncounterElements"
    },
    {
      "type" : "depends-on",
      "display" : "Library Encounter",
      "resource" : "http://smart.who.int/immunizations/Library/IMMZD2DTDTPEncounterElements"
    }
  ],
  "parameter" : [
    {
      "name" : "Today",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "type" : "date"
    },
    {
      "name" : "Patient",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "Patient"
    },
    {
      "name" : "Second tetanus and diphtheria booster dose was administered",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "boolean"
    },
    {
      "name" : "Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy)",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "boolean"
    },
    {
      "name" : "Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy) Due Date",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "date"
    },
    {
      "name" : "Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy) Overdue",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "date"
    },
    {
      "name" : "Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy) Expiration",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "string"
    },
    {
      "name" : "Tetanus and diphtheria-containing vaccine booster dose 2 (during pregnancy) Create",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "string"
    },
    {
      "name" : "Third tetanus and diphtheria-containing booster dose was administered. Tetanus and diphtheria immunization schedule has been completed.",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "boolean"
    },
    {
      "name" : "Tetanus and diphtheria-containing vaccine booster dose 3",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "boolean"
    },
    {
      "name" : "Tetanus and diphtheria-containing vaccine booster dose 3 Due Date",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "date"
    },
    {
      "name" : "Tetanus and diphtheria-containing vaccine booster dose 3 Create",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "string"
    },
    {
      "name" : "Tetanus and diphtheria-containing vaccine booster dose 3 Overdue",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "Resource"
    },
    {
      "name" : "Tetanus and diphtheria-containing vaccine booster dose 3 Expiration",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "Resource"
    },
    {
      "name" : "Test Validation",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "Resource"
    }
  ],
  "content" : [
    {
      "contentType" : "text/cql",
      "data" : "LyoKICogTGlicmFyeTogSU1NWkQxOFNEVFBQcmVnbmFuY3lTdGFydGluZ1dpdGg0RG9zZXNMb2dpYyAoSU1NWi5EMTguUy5EVFAuUHJlZ25hbmN5IHN0YXJ0aW5nIHdpdGggNCBkb3NlcyBzY2hlZHVsZSkKICogU2NoZWR1bGUgVGFibGU6IERpcGh0aGVyaWEgYW5kIHRldGFudXMgdmFjY2luYXRpb24gc2NoZWR1bGUgaW4gcHJlZ25hbnQgd29tZW4gd2hvIHJlY2VpdmVkIDQgY2hpbGRob29kIGRpcGh0aGVyaWHigJN0ZXRhbnVz4oCTcGVydHVzc2lzIChEVFApIGRvc2VzCiAqLwpsaWJyYXJ5IElNTVpEMThTRFRQUHJlZ25hbmN5U3RhcnRpbmdXaXRoNERvc2VzTG9naWMKCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIFdIT0NvbW1vbiBjYWxsZWQgV0MKCmluY2x1ZGUgSU1NWkNvbW1vbiBjYWxsZWQgQ29tbW9uCmluY2x1ZGUgSU1NWkNvbmNlcHRzIGNhbGxlZCBDb25jZXB0cwoKaW5jbHVkZSBJTU1aRW5jb3VudGVyRWxlbWVudHMgY2FsbGVkIElFCmluY2x1ZGUgSU1NWkQyRFREVFBFbmNvdW50ZXJFbGVtZW50cyBjYWxsZWQgRW5jb3VudGVyCgpwYXJhbWV0ZXIgVG9kYXkgRGF0ZSBkZWZhdWx0IFRvZGF5KCkKCgpjb250ZXh0IFBhdGllbnQKCgovKgpAb3V0cHV0OiBUZXRhbnVzIGFuZCBkaXBodGhlcmlhLWNvbnRhaW5pbmcgdmFjY2luZSBib29zdGVyIGRvc2UgMiAoZHVyaW5nIHByZWduYW5jeSkKQGRlc2NyaXB0aW9uOiBQcm92aXNpb24gb2YgdGV0YW51cyBhbmQgZGlwaHRoZXJpYSBib29zdGVyIGRvc2UgMiBmb3IgcHJlZ25hbnQgd29tZW4gd2hvIHJlY2VpdmVkIDQgdGV0YW51cy1jb250YWluaW5nIHZhY2NpbmVzIGRvc2VzIGR1cmluZyBjaGlsZGhvb2Qgb3IgcHJlLWFkdWx0aG9vZApAdHJpZ2dlcjogVGhlIHByaW1hcnkgRFRQIHNlcmllcyBoYXMgYmVlbiBjb21wbGV0ZWQsIGZpcnN0IHRldGFudXMgYW5kIGRpcGh0aGVyaWEgYm9vc3RlciBkb3NlIHdhcyBhZG1pbmlzdGVyZWQgYW5kIGNsaWVudCBpcyBjdXJyZW50bHkgcHJlZ25hbnQKQHBzZXVkbzogIkNvbXBsZXRlZCB0aGUgcHJpbWFyeSB2YWNjaW5hdGlvbiBzZXJpZXMiID0gVFJVRSAod2hlcmUgIlZhY2NpbmUgdHlwZSIgPSAiRFRQLWNvbnRhaW5pbmcgdmFjY2luZXMiKSBBTkQgQ291bnQgb2YgdmFjY2luZXMgYWRtaW5pc3RlcmVkIHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIlRldGFudXMgYW5kIGRpcGh0aGVyaWEtY29udGFpbmluZyB2YWNjaW5lcyIgYW5kICJUeXBlIG9mIGRvc2UiID0gIkJvb3N0ZXIgZG9zZSIpID0gMSBBTkQgIkN1cnJlbnRseSBwcmVnbmFudCIgPSBUUlVFCkB0cmlnZ2VyRGF0ZTogRmlyc3QgQU5DIGNvbnRhY3QgZGF0ZQoiQ29udGFjdCBkYXRlIiBXSEVOICJBTkMgY29udGFjdCBudW1iZXIiID0gMQoqLwpkZWZpbmUgIlRldGFudXMgYW5kIGRpcGh0aGVyaWEtY29udGFpbmluZyB2YWNjaW5lIGJvb3N0ZXIgZG9zZSAyIChkdXJpbmcgcHJlZ25hbmN5KSI6CiAgRW5jb3VudGVyLiJUaHJlZSBEVFAgcHJpbWFyeSBzZXJpZXMgZG9zZXMgd2VyZSBhZG1pbmlzdGVyZWQiIGFuZAogIEVuY291bnRlci4iT25lIHRldGFudXMgYW5kIGRpcGh0aGVyaWEgYm9vc3RlciBkb3NlIHdhcyBhZG1pbmlzdGVyZWQiIGFuZAogIEVuY291bnRlci4iQ2xpZW50IGlzIGN1cnJlbnRseSBwcmVnbmFudCIgYW5kCiAgbm90ICJTZWNvbmQgdGV0YW51cyBhbmQgZGlwaHRoZXJpYSBib29zdGVyIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCIKCgovKgpAb3V0cHV0OiBUZXRhbnVzIGFuZCBkaXBodGhlcmlhLWNvbnRhaW5pbmcgdmFjY2luZSBib29zdGVyIGRvc2UgMiAoZHVyaW5nIHByZWduYW5jeSkgQ3JlYXRlCkBjcmVhdGU6IFdvbWVuIHdobyByZWNlaXZlZCA0IHRldGFudXMtY29udGFpbmluZyB2YWNjaW5lIGRvc2VzIGR1cmluZyBjaGlsZGhvb2Qgb3IgcHJlLWFkdWx0aG9vZCBuZWVkIG9ubHkgMSBib29zdGVyIGRvc2UsIHdoaWNoIHNob3VsZCBiZSBnaXZlbiBhdCB0aGUgZmlyc3Qgb3Bwb3J0dW5pdHkuCiovCmRlZmluZSAiVGV0YW51cyBhbmQgZGlwaHRoZXJpYS1jb250YWluaW5nIHZhY2NpbmUgYm9vc3RlciBkb3NlIDIgKGR1cmluZyBwcmVnbmFuY3kpIENyZWF0ZSI6CiAgaWYgIlRldGFudXMgYW5kIGRpcGh0aGVyaWEtY29udGFpbmluZyB2YWNjaW5lIGJvb3N0ZXIgZG9zZSAyIChkdXJpbmcgcHJlZ25hbmN5KSIKICB0aGVuICdXb21lbiB3aG8gcmVjZWl2ZWQgNCB0ZXRhbnVzLWNvbnRhaW5pbmcgdmFjY2luZSBkb3NlcyBkdXJpbmcgY2hpbGRob29kIG9yIHByZS1hZHVsdGhvb2QgbmVlZCBvbmx5IDEgYm9vc3RlciBkb3NlLCB3aGljaCBzaG91bGQgYmUgZ2l2ZW4gYXQgdGhlIGZpcnN0IG9wcG9ydHVuaXR5LicgKyAnCkR1ZSBEYXRlOiAnICsgVG9TdHJpbmcoIlRldGFudXMgYW5kIGRpcGh0aGVyaWEtY29udGFpbmluZyB2YWNjaW5lIGJvb3N0ZXIgZG9zZSAyIChkdXJpbmcgcHJlZ25hbmN5KSBEdWUgRGF0ZSIpICsgJwpPdmVyZHVlOiAnICsgVG9TdHJpbmcoIlRldGFudXMgYW5kIGRpcGh0aGVyaWEtY29udGFpbmluZyB2YWNjaW5lIGJvb3N0ZXIgZG9zZSAyIChkdXJpbmcgcHJlZ25hbmN5KSBPdmVyZHVlIikgKyAnCkV4cGlyYXRpb246ICcgKyAiVGV0YW51cyBhbmQgZGlwaHRoZXJpYS1jb250YWluaW5nIHZhY2NpbmUgYm9vc3RlciBkb3NlIDIgKGR1cmluZyBwcmVnbmFuY3kpIEV4cGlyYXRpb24iCiAgZWxzZSAnJwoKCi8qCkBkeW5hbWljVmFsdWU6IFRldGFudXMgYW5kIGRpcGh0aGVyaWEtY29udGFpbmluZyB2YWNjaW5lIGJvb3N0ZXIgZG9zZSAyIChkdXJpbmcgcHJlZ25hbmN5KSBEdWUgRGF0ZQpAcHNldWRvY29kZTogIkNvbnRhY3QgZGF0ZSIgV0hFTiAiQU5DIGNvbnRhY3QgbnVtYmVyIiA9IDEKKi8KZGVmaW5lICJUZXRhbnVzIGFuZCBkaXBodGhlcmlhLWNvbnRhaW5pbmcgdmFjY2luZSBib29zdGVyIGRvc2UgMiAoZHVyaW5nIHByZWduYW5jeSkgRHVlIERhdGUiOgogIGlmICJUZXRhbnVzIGFuZCBkaXBodGhlcmlhLWNvbnRhaW5pbmcgdmFjY2luZSBib29zdGVyIGRvc2UgMiAoZHVyaW5nIHByZWduYW5jeSkiIHRoZW4gVG9kYXkKICBlbHNlIG51bGwKCgovKgpAZHluYW1pY1ZhbHVlOiBUZXRhbnVzIGFuZCBkaXBodGhlcmlhLWNvbnRhaW5pbmcgdmFjY2luZSBib29zdGVyIGRvc2UgMiAoZHVyaW5nIHByZWduYW5jeSkgT3ZlcmR1ZQpAcHNldWRvY29kZTogRXZlcnkgc3Vic2VxdWVudCBjb250YWN0IHVudGlsIDM4IHdlZWtzCiovCmRlZmluZSAiVGV0YW51cyBhbmQgZGlwaHRoZXJpYS1jb250YWluaW5nIHZhY2NpbmUgYm9vc3RlciBkb3NlIDIgKGR1cmluZyBwcmVnbmFuY3kpIE92ZXJkdWUiOgogIGlmICJUZXRhbnVzIGFuZCBkaXBodGhlcmlhLWNvbnRhaW5pbmcgdmFjY2luZSBib29zdGVyIGRvc2UgMiAoZHVyaW5nIHByZWduYW5jeSkiIHRoZW4gVG9kYXkKICBlbHNlIG51bGwKCgovKgpAZHluYW1pY1ZhbHVlOiBUZXRhbnVzIGFuZCBkaXBodGhlcmlhLWNvbnRhaW5pbmcgdmFjY2luZSBib29zdGVyIGRvc2UgMiAoZHVyaW5nIHByZWduYW5jeSkgRXhwaXJhdGlvbgpAcHNldWRvY29kZTogVHdvIHdlZWtzIGJlZm9yZSBiaXJ0aCBmb3IgdGhlIHByZWduYW5jeTsgaG93ZXZlciBpbmRpdmlkdWFscyByZW1haW4gZWxpZ2libGUgdG8gYmUgdmFjY2luYXRlZAoiR2VzdGF0aW9uYWwgYWdlIiA8IDM4IHdlZWtzCiovCmRlZmluZSAiVGV0YW51cyBhbmQgZGlwaHRoZXJpYS1jb250YWluaW5nIHZhY2NpbmUgYm9vc3RlciBkb3NlIDIgKGR1cmluZyBwcmVnbmFuY3kpIEV4cGlyYXRpb24iOgogIGlmICJUZXRhbnVzIGFuZCBkaXBodGhlcmlhLWNvbnRhaW5pbmcgdmFjY2luZSBib29zdGVyIGRvc2UgMiAoZHVyaW5nIHByZWduYW5jeSkiIHRoZW4gJ1R3byB3ZWVrcyBiZWZvcmUgYmlydGgnCiAgZWxzZSBudWxsCgogIAovKgpAY29tcGxldGU6IFNlY29uZCB0ZXRhbnVzIGFuZCBkaXBodGhlcmlhIGJvb3N0ZXIgZG9zZSB3YXMgYWRtaW5pc3RlcmVkCkBwc2V1ZG9jb2RlOiBDb3VudCBvZiB2YWNjaW5lcyBhZG1pbmlzdGVyZWQgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIlRldGFudXMgYW5kIGRpcGh0aGVyaWEtY29udGFpbmluZyB2YWNjaW5lcyIgYW5kICJUeXBlIG9mIGRvc2UiID0gIkJvb3N0ZXIgZG9zZSIpID0gMgoqLwpkZWZpbmUgIlNlY29uZCB0ZXRhbnVzIGFuZCBkaXBodGhlcmlhIGJvb3N0ZXIgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIjoKICBFbmNvdW50ZXIuIlR3byB0ZXRhbnVzIGFuZCBkaXBodGhlcmlhIGJvb3N0ZXIgZG9zZXMgd2VyZSBhZG1pbmlzdGVyZWQiCgoKCi8qCkBvdXRwdXQ6IFRldGFudXMgYW5kIGRpcGh0aGVyaWEtY29udGFpbmluZyB2YWNjaW5lIGJvb3N0ZXIgZG9zZSAzCkBkZXNjcmlwdGlvbjogUHJvdmlzaW9uIG9mIHRldGFudXMgYW5kIGRpcGh0aGVyaWEgYm9vc3RlciBkb3NlIDMgZm9yIHByZWduYW50IHdvbWVuIHdobyByZWNlaXZlZCA0IHRldGFudXMtY29udGFpbmluZyB2YWNjaW5lcyBkb3NlcyBkdXJpbmcgY2hpbGRob29kIG9yIHByZS1hZHVsdGhvb2QKQHRyaWdnZXI6IFNlY29uZCB0ZXRhbnVzIGFuZCBkaXBodGhlcmlhIGJvb3N0ZXIgZG9zZSB3YXMgYWRtaW5pc3RlcmVkCkBwc2V1ZG86IENvdW50IG9mIHZhY2NpbmVzIGFkbWluaXN0ZXJlZCAod2hlcmUgIlZhY2NpbmUgdHlwZSIgPSAiVGV0YW51cyBhbmQgZGlwaHRoZXJpYS1jb250YWluaW5nIHZhY2NpbmVzIiBhbmQgIlR5cGUgb2YgZG9zZSIgPSAiQm9vc3RlciBkb3NlIikgPSAyCkB0cmlnZ2VyRGF0ZTogTGF0ZXN0ICJEYXRlIGFuZCB0aW1lIG9mIHZhY2NpbmF0aW9uIiB3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJUZXRhbnVzIGFuZCBkaXBodGhlcmlhLWNvbnRhaW5pbmcgdmFjY2luZXMiCiovCmRlZmluZSAiVGV0YW51cyBhbmQgZGlwaHRoZXJpYS1jb250YWluaW5nIHZhY2NpbmUgYm9vc3RlciBkb3NlIDMiOgogICJTZWNvbmQgdGV0YW51cyBhbmQgZGlwaHRoZXJpYSBib29zdGVyIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCIgYW5kCiAgbm90ICJUaGlyZCB0ZXRhbnVzIGFuZCBkaXBodGhlcmlhLWNvbnRhaW5pbmcgYm9vc3RlciBkb3NlIHdhcyBhZG1pbmlzdGVyZWQuIFRldGFudXMgYW5kIGRpcGh0aGVyaWEgaW1tdW5pemF0aW9uIHNjaGVkdWxlIGhhcyBiZWVuIGNvbXBsZXRlZC4iCgoKLyoKQG91dHB1dDogVGV0YW51cyBhbmQgZGlwaHRoZXJpYS1jb250YWluaW5nIHZhY2NpbmUgYm9vc3RlciBkb3NlIDMgQ3JlYXRlCkBjcmVhdGU6IFRvIHByb3ZpZGUgbGlmZWxvbmcgcHJvdGVjdGlvbiBmb3IgdGV0YW51cywgYSBzaXh0aCBkb3NlIHNob3VsZCBiZSBwcm92aWRlZCBhdCBsZWFzdCAxIHllYXIgYWZ0ZXIgdGhlIGZpZnRoIGRvc2UsIG9yIGluIG5leHQgcHJlZ25hbmN5LgoqLwpkZWZpbmUgIlRldGFudXMgYW5kIGRpcGh0aGVyaWEtY29udGFpbmluZyB2YWNjaW5lIGJvb3N0ZXIgZG9zZSAzIENyZWF0ZSI6CiAgaWYgIlRldGFudXMgYW5kIGRpcGh0aGVyaWEtY29udGFpbmluZyB2YWNjaW5lIGJvb3N0ZXIgZG9zZSAzIgogIHRoZW4gJ1RvIHByb3ZpZGUgbGlmZWxvbmcgcHJvdGVjdGlvbiBmb3IgdGV0YW51cywgYSBzaXh0aCBkb3NlIHNob3VsZCBiZSBwcm92aWRlZCBhdCBsZWFzdCAxIHllYXIgYWZ0ZXIgdGhlIGZpZnRoIGRvc2UsIG9yIGluIG5leHQgcHJlZ25hbmN5LicgKyAnCkR1ZSBEYXRlOiAnICsgVG9TdHJpbmcoIlRldGFudXMgYW5kIGRpcGh0aGVyaWEtY29udGFpbmluZyB2YWNjaW5lIGJvb3N0ZXIgZG9zZSAzIER1ZSBEYXRlIikKICBlbHNlICcnCgoKLyoKQGR5bmFtaWNWYWx1ZTogVGV0YW51cyBhbmQgZGlwaHRoZXJpYS1jb250YWluaW5nIHZhY2NpbmUgYm9vc3RlciBkb3NlIDMgRHVlIERhdGUKQHBzZXVkb2NvZGU6IExhdGVzdCAiRGF0ZSBhbmQgdGltZSBvZiB2YWNjaW5hdGlvbiIgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIlRldGFudXMgYW5kIGRpcGh0aGVyaWEtY29udGFpbmluZyB2YWNjaW5lcyIpICsgMSB5ZWFyIG9yIGR1cmluZyBuZXh0IHByZWduYW5jeQoqLwpkZWZpbmUgIlRldGFudXMgYW5kIGRpcGh0aGVyaWEtY29udGFpbmluZyB2YWNjaW5lIGJvb3N0ZXIgZG9zZSAzIER1ZSBEYXRlIjoKICBpZiAiVGV0YW51cyBhbmQgZGlwaHRoZXJpYS1jb250YWluaW5nIHZhY2NpbmUgYm9vc3RlciBkb3NlIDMiIHRoZW4gRW5jb3VudGVyLiJEYXRlIG9mIExhdGVzdCBUZCBEb3NlIiArIDEgeWVhcgogIGVsc2UgbnVsbAoKCi8qCkBkeW5hbWljVmFsdWU6IFRldGFudXMgYW5kIGRpcGh0aGVyaWEtY29udGFpbmluZyB2YWNjaW5lIGJvb3N0ZXIgZG9zZSAzIE92ZXJkdWUKQHBzZXVkb2NvZGU6IFRvIGJlIGRldGVybWluZWQgYnkgTWVtYmVyIFN0YXRlcwoqLwpkZWZpbmUgIlRldGFudXMgYW5kIGRpcGh0aGVyaWEtY29udGFpbmluZyB2YWNjaW5lIGJvb3N0ZXIgZG9zZSAzIE92ZXJkdWUiOgogIG51bGwKCgovKgpAZHluYW1pY1ZhbHVlOiBUZXRhbnVzIGFuZCBkaXBodGhlcmlhLWNvbnRhaW5pbmcgdmFjY2luZSBib29zdGVyIGRvc2UgMyBFeHBpcmF0aW9uCkBwc2V1ZG9jb2RlOiBUbyBiZSBkZXRlcm1pbmVkIGJ5IE1lbWJlciBTdGF0ZXMuIEhvd2V2ZXIsIHRoZXJlIGlzIG5vIHJlY29tbWVuZGVkIGV4cGlyYXRpb24gZGF0ZSBhbmQgaW5kaXZpZHVhbHMgcmVtYWluIGVsaWdpYmxlIHRvIGJlIHZhY2NpbmF0ZWQuCiovCmRlZmluZSAiVGV0YW51cyBhbmQgZGlwaHRoZXJpYS1jb250YWluaW5nIHZhY2NpbmUgYm9vc3RlciBkb3NlIDMgRXhwaXJhdGlvbiI6CiAgbnVsbAoKICAKLyoKQGNvbXBsZXRlOiBUaGlyZCB0ZXRhbnVzIGFuZCBkaXBodGhlcmlhLWNvbnRhaW5pbmcgYm9vc3RlciBkb3NlIHdhcyBhZG1pbmlzdGVyZWQuIFRldGFudXMgYW5kIGRpcGh0aGVyaWEgaW1tdW5pemF0aW9uIHNjaGVkdWxlIGhhcyBiZWVuIGNvbXBsZXRlZC4KQHBzZXVkb2NvZGU6IENvdW50IG9mIHZhY2NpbmVzIGFkbWluaXN0ZXJlZCAod2hlcmUgIlZhY2NpbmUgdHlwZSIgPSAiVGV0YW51cyBhbmQgZGlwaHRoZXJpYS1jb250YWluaW5nIHZhY2NpbmVzIiBhbmQgIlR5cGUgb2YgZG9zZSIgPSAiQm9vc3RlciBkb3NlIikgPSAzCiJJbW11bml6YXRpb24gcmVjb21tZW5kYXRpb24gc3RhdHVzIiA9ICJDb21wbGV0ZSIgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIlRldGFudXMgYW5kIGRpcGh0aGVyaWEtY29udGFpbmluZyB2YWNjaW5lcyIpCiovCmRlZmluZSAiVGhpcmQgdGV0YW51cyBhbmQgZGlwaHRoZXJpYS1jb250YWluaW5nIGJvb3N0ZXIgZG9zZSB3YXMgYWRtaW5pc3RlcmVkLiBUZXRhbnVzIGFuZCBkaXBodGhlcmlhIGltbXVuaXphdGlvbiBzY2hlZHVsZSBoYXMgYmVlbiBjb21wbGV0ZWQuIjoKICBFbmNvdW50ZXIuIlRocmVlIHRldGFudXMgYW5kIGRpcGh0aGVyaWEgYm9vc3RlciBkb3NlcyB3ZXJlIGFkbWluaXN0ZXJlZCIKCgoKLyoKQHRlc3Q6IFRlc3QgZXhwZWN0ZWQgcmVzdWx0cyBiYXNlZCBvbiBleGFtcGxlIHBhdGllbnRzCiovCmRlZmluZSAiVGVzdCBWYWxpZGF0aW9uIjoKICBjYXNlCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnRFRQNzkuMycgdGhlbiAiVGV0YW51cyBhbmQgZGlwaHRoZXJpYS1jb250YWluaW5nIHZhY2NpbmUgYm9vc3RlciBkb3NlIDIgKGR1cmluZyBwcmVnbmFuY3kpIgogICAgd2hlbiBQYXRpZW50LmlkID0gJ0RUUDgwLjMnIHRoZW4gIlRldGFudXMgYW5kIGRpcGh0aGVyaWEtY29udGFpbmluZyB2YWNjaW5lIGJvb3N0ZXIgZG9zZSAzIgogICAgd2hlbiBQYXRpZW50LmlkID0gJ0RUUDgxLjMnIHRoZW4gIlRldGFudXMgYW5kIGRpcGh0aGVyaWEtY29udGFpbmluZyB2YWNjaW5lIGJvb3N0ZXIgZG9zZSAzIgogICAgd2hlbiBQYXRpZW50LmlkID0gJ0RUUDgyLjInIHRoZW4gIlRoaXJkIHRldGFudXMgYW5kIGRpcGh0aGVyaWEtY29udGFpbmluZyBib29zdGVyIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZC4gVGV0YW51cyBhbmQgZGlwaHRoZXJpYSBpbW11bml6YXRpb24gc2NoZWR1bGUgaGFzIGJlZW4gY29tcGxldGVkLiIKICAgIGVsc2UgJ05vIHRlc3QgY2FzZSBzZXQnCiAgZW5kCg=="
    }
  ]
}