CDC National Healthcare Safety Network (NHSN) Digital Quality Measures (dQM) Content Package IG
3.0.0 - Release 3 - draft
CDC National Healthcare Safety Network (NHSN) Digital Quality Measures (dQM) Content Package IG - Local Development build (v3.0.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
| Page standards status: Trial-use | Maturity Level: 2 |
{
"resourceType" : "Library",
"id" : "NHSNAcuteCareHospitalDailyInitialPopulation",
"text" : {
"status" : "extensions",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p><b style=\"color: maroon\">Exception generating Narrative: Unable to read attribute on <FHIR.CodeableConcept> at line 1603 column 71</b></p></div>"
},
"contained" : [
{
"resourceType" : "Parameters",
"id" : "options",
"parameter" : [
{
"name" : "translatorVersion",
"valueString" : "3.27.0"
},
{
"name" : "option",
"valueString" : "EnableDateRangeOptimization"
},
{
"name" : "option",
"valueString" : "EnableAnnotations"
},
{
"name" : "option",
"valueString" : "EnableLocators"
},
{
"name" : "option",
"valueString" : "DisableListDemotion"
},
{
"name" : "option",
"valueString" : "DisableListPromotion"
},
{
"name" : "analyzeDataRequirements",
"valueBoolean" : false
},
{
"name" : "collapseDataRequirements",
"valueBoolean" : true
},
{
"name" : "compatibilityLevel",
"valueString" : "1.5"
},
{
"name" : "enableCqlOnly",
"valueBoolean" : false
},
{
"name" : "errorLevel",
"valueString" : "Info"
},
{
"name" : "signatureLevel",
"valueString" : "Overloads"
},
{
"name" : "validateUnits",
"valueBoolean" : true
},
{
"name" : "verifyOnly",
"valueBoolean" : false
}
]
}
],
"extension" : [
{
"url" : "http://hl7.org/fhir/StructureDefinition/cqf-cqlOptions",
"valueReference" : {
"reference" : "#options"
}
}
],
"url" : "http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/NHSNAcuteCareHospitalDailyInitialPopulation",
"version" : "3.0.0",
"name" : "NHSNAcuteCareHospitalDailyInitialPopulation",
"status" : "draft",
"type" : {
"coding" : [
{
"system" : "http://terminology.hl7.org/CodeSystem/library-type",
"code" : "logic-library"
}
]
},
"date" : "2026-06-24T15:27:22+00:00",
"publisher" : "CDC National Healthcare Safety Network (NHSN)",
"contact" : [
{
"name" : "CDC National Healthcare Safety Network (NHSN)",
"telecom" : [
{
"system" : "url",
"value" : "http://www.cdc.gov/nhsn"
},
{
"system" : "email",
"value" : "nhsn@cdc.gov"
}
]
}
],
"jurisdiction" : [
{
"coding" : [
{
"system" : "urn:iso:std:iso:3166",
"code" : "US"
}
]
}
],
"relatedArtifact" : [
{
"type" : "depends-on",
"display" : "Library FHIRHelpers",
"resource" : "http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/FHIRHelpers|4.0.2"
},
{
"type" : "depends-on",
"display" : "Library NHSNHelpers",
"resource" : "http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/NHSNHelpers|0.0.002"
},
{
"type" : "depends-on",
"display" : "Library SharedResource",
"resource" : "http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/SharedResourceCreation|0.1.010"
},
{
"type" : "depends-on",
"display" : "Code system ActCode",
"resource" : "http://terminology.hl7.org/CodeSystem/v3-ActCode|10.0.0"
},
{
"type" : "depends-on",
"display" : "Code system LOINC",
"resource" : "http://loinc.org"
},
{
"type" : "depends-on",
"display" : "Code system Observation Category",
"resource" : "http://terminology.hl7.org/CodeSystem/observation-category|2.0.0"
},
{
"type" : "depends-on",
"display" : "Code system RXNORM",
"resource" : "http://www.nlm.nih.gov/research/umls/rxnorm"
},
{
"type" : "depends-on",
"display" : "Value set Encounter Inpatient",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307"
},
{
"type" : "depends-on",
"display" : "Value set Inpatient, Emergency, and Observation Locations",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.265"
},
{
"type" : "depends-on",
"display" : "Value set Observation Services",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143"
},
{
"type" : "depends-on",
"display" : "Value set Discharge Disposition",
"resource" : "http://terminology.hl7.org/ValueSet/clinical-discharge-disposition|2.0.0"
},
{
"type" : "depends-on",
"display" : "Value set COVID_19 (Tests for SARS_CoV_2 Nucleic Acid)",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.1142|20250218"
},
{
"type" : "depends-on",
"display" : "Value set COVID_19 (Tests for SARS_CoV_2 Antigen)",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.1158|20240123"
},
{
"type" : "depends-on",
"display" : "Value set COVID_19 (Organism or Substance in Lab Results)",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.1143|20250218"
},
{
"type" : "depends-on",
"display" : "Value set Influenza (Tests for influenza A or B virus Nucleic Acid)",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.336|20250218"
},
{
"type" : "depends-on",
"display" : "Value set Influenza (Tests for influenza A or B virus Antigen)",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.337"
},
{
"type" : "depends-on",
"display" : "Value set Influenza (influenza A or B virus in Lab Results)",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.340"
},
{
"type" : "depends-on",
"display" : "Value set RSV (Tests for RSV Antigen)",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.1311"
},
{
"type" : "depends-on",
"display" : "Value set RSV (Tests for RSV Nucleic Acid)",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.1312|20250218"
},
{
"type" : "depends-on",
"display" : "Value set RSV (Organism or Substance in Lab Results)",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.1308"
},
{
"type" : "depends-on",
"display" : "Value set LIVD SARS CoV2 Test Result Codes",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1114.10"
},
{
"type" : "depends-on",
"display" : "Value set Baricitinib",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3616.200.110.102.2046"
},
{
"type" : "depends-on",
"display" : "Value set Anakinra",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3616.200.110.102.2054"
},
{
"type" : "depends-on",
"display" : "Value set Sarilumab",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3616.200.110.102.2084"
},
{
"type" : "depends-on",
"display" : "Value set COVID19 RxNorm Value Set for Tocilizumab",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3616.200.110.102.2087"
},
{
"type" : "depends-on",
"display" : "Value set Casirivimab",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3616.200.110.102.2097"
},
{
"type" : "depends-on",
"display" : "Value set Imdevimab",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3616.200.110.102.2098"
},
{
"type" : "depends-on",
"display" : "Value set Bamlanivimab",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3616.200.110.102.2099"
},
{
"type" : "depends-on",
"display" : "Value set Etesevimab",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3616.200.110.102.2100"
},
{
"type" : "depends-on",
"display" : "Value set Sotrovimab",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3616.200.110.102.2101"
},
{
"type" : "depends-on",
"display" : "Value set Tofacitinib",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3616.200.110.102.2102"
},
{
"type" : "depends-on",
"display" : "Value set Casirivimab / Imdevimab",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3616.200.110.102.2103"
},
{
"type" : "depends-on",
"display" : "Value set Molnupiravir",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3616.200.110.102.2119"
},
{
"type" : "depends-on",
"display" : "Value set Remdesivir",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3616.200.110.102.2081"
},
{
"type" : "depends-on",
"display" : "Value set Nirmatrelvir / Ritonavir",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3616.200.110.102.2104"
},
{
"type" : "depends-on",
"display" : "Value set Bebtelovimab",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3616.200.110.102.2105"
},
{
"type" : "depends-on",
"display" : "Value set Baloxavir",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1190.85"
},
{
"type" : "depends-on",
"display" : "Value set Peramivir",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1190.86"
},
{
"type" : "depends-on",
"display" : "Value set Zanamivir",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1190.87"
},
{
"type" : "depends-on",
"display" : "Value set Oseltamivir",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3616.200.110.102.2078"
},
{
"type" : "depends-on",
"display" : "Value set Transmission Based Precaution Types",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.10.20.22.5.300|20240607"
},
{
"type" : "depends-on",
"display" : "Value set NHSN Inpatient Encounter Class Codes",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.274"
}
],
"parameter" : [
{
"name" : "Measurement Period",
"use" : "in",
"min" : 0,
"max" : "1",
"type" : "Period"
},
{
"name" : "Patient",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "Patient"
},
{
"name" : "EncounterInpatient",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Encounter"
},
{
"name" : "EncounterObservation",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Encounter"
},
{
"name" : "Encounters with Patient Hospital Locations",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Encounter"
},
{
"name" : "Initial Population",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Encounter"
},
{
"name" : "COVID And Influenza Observation",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Observation"
},
{
"name" : "RSV Observation",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Observation"
},
{
"name" : "ACH Daily Observation",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Observation"
},
{
"name" : "COVID And Influenza PRE Admission Observation",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Observation"
},
{
"name" : "RSV PRE Admission Observation",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Observation"
},
{
"name" : "COVID And Influenza DiagnosticReport",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "DiagnosticReport"
},
{
"name" : "RSV DiagnosticReport",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "DiagnosticReport"
},
{
"name" : "ACH Daily DiagnosticReport",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "DiagnosticReport"
},
{
"name" : "COVID And Influenza DiagnosticReport PRE Admission",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "DiagnosticReport"
},
{
"name" : "RSV DiagnosticReport PRE Admission",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "DiagnosticReport"
},
{
"name" : "DiagnosticReports",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "DiagnosticReport"
},
{
"name" : "Observations",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Observation"
},
{
"name" : "COVID and Influenza DiagnosticReport Observations",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Observation"
},
{
"name" : "COVID and Influenza DiagnosticReport Result from Lab",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "DiagnosticReport"
},
{
"name" : "RSV Observations",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Observation"
},
{
"name" : "RSV DiagnosticReport Observations",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "DiagnosticReport"
},
{
"name" : "RSV DiagnosticReport Result from Lab",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "DiagnosticReport"
},
{
"name" : "ACH Daily DiagnosticReport Result from Lab",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "DiagnosticReport"
},
{
"name" : "COVID and Influenza DiagnosticReport Result from Lab PRE Admission",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "DiagnosticReport"
},
{
"name" : "RSV DiagnosticReport Result from Lab PRE Admission",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "DiagnosticReport"
},
{
"name" : "SDE IP Encounters",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Encounter"
},
{
"name" : "Encounters",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Encounter"
},
{
"name" : "SDE Encounter",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Encounter"
},
{
"name" : "SDE Minimal Patient",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "Patient"
},
{
"name" : "SDE Location",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Location"
},
{
"name" : "SDE Encounter Discharge Dispositions",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Encounter"
},
{
"name" : "SDE ACH Daily Observation",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Observation"
},
{
"name" : "SDE RSV PRE Admission Observation",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Observation"
},
{
"name" : "SDE COVID And Influenza PRE Admission Observation",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Observation"
},
{
"name" : "SDE ACH Daily Specimen",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Specimen"
},
{
"name" : "SDE RSV Specimen",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Specimen"
},
{
"name" : "SDE COVID And Influenza Specimen",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Specimen"
},
{
"name" : "SDE ACH Daily DiagnosticReport",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "DiagnosticReport"
},
{
"name" : "SDE COVID And Influenza DiagnosticReport",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "DiagnosticReport"
},
{
"name" : "SDE RSV DiagnosticReport",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "DiagnosticReport"
},
{
"name" : "SDE ACH Daily DiagnosticReport Result from Lab",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "DiagnosticReport"
},
{
"name" : "SDE COVID and Influenza DiagnosticReport Result from Lab",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "DiagnosticReport"
},
{
"name" : "SDE RSV DiagnosticReport Result from Lab",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "DiagnosticReport"
},
{
"name" : "SDE ACH Daily ServiceRequest",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "ServiceRequest"
},
{
"name" : "SDE Isolation Precautions Implemented",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Procedure"
},
{
"name" : "SDE Covid or Influenza Medication Administered",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "MedicationAdministration"
},
{
"name" : "SDE Covid or Influenza Medication Ordered",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "MedicationRequest"
},
{
"name" : "SDE Medication",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Medication"
},
{
"name" : "SDE All Observations",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Observation"
},
{
"name" : "SDE All ServiceRequests",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "ServiceRequest"
},
{
"name" : "SDE All Procedures",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Procedure"
}
],
"dataRequirement" : [
{
"type" : "Patient",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/Patient"
]
},
{
"type" : "Encounter",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/Encounter"
],
"mustSupport" : [
"type",
"status",
"period",
"id",
"extension",
"identifier",
"statusHistory",
"class",
"classHistory",
"serviceType",
"priority",
"subject",
"length",
"reasonCode",
"reasonReference",
"diagnosis",
"account",
"hospitalization",
"location",
"partOf",
"hospitalization.dischargeDisposition"
],
"codeFilter" : [
{
"path" : "type",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307"
}
]
},
{
"type" : "Encounter",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/Encounter"
],
"mustSupport" : [
"class",
"status",
"period",
"id",
"extension",
"identifier",
"statusHistory",
"classHistory",
"type",
"serviceType",
"priority",
"subject",
"length",
"reasonCode",
"reasonReference",
"diagnosis",
"account",
"hospitalization",
"location",
"partOf",
"hospitalization.dischargeDisposition"
],
"codeFilter" : [
{
"path" : "class",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.274"
}
]
},
{
"type" : "Encounter",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/Encounter"
],
"mustSupport" : [
"type",
"status",
"period",
"id",
"extension",
"identifier",
"statusHistory",
"class",
"classHistory",
"serviceType",
"priority",
"subject",
"length",
"reasonCode",
"reasonReference",
"diagnosis",
"account",
"hospitalization",
"location",
"partOf",
"hospitalization.dischargeDisposition"
],
"codeFilter" : [
{
"path" : "type",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143"
}
]
},
{
"type" : "Encounter",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/Encounter"
],
"mustSupport" : [
"class",
"status",
"period",
"id",
"extension",
"identifier",
"statusHistory",
"classHistory",
"type",
"serviceType",
"priority",
"subject",
"length",
"reasonCode",
"reasonReference",
"diagnosis",
"account",
"hospitalization",
"location",
"partOf",
"hospitalization.dischargeDisposition"
],
"codeFilter" : [
{
"path" : "class",
"code" : [
{
"system" : "http://terminology.hl7.org/CodeSystem/v3-ActCode",
"code" : "OBSENC",
"display" : "observation encounter"
}
]
}
]
},
{
"type" : "Encounter",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/Encounter"
],
"mustSupport" : [
"location",
"period",
"status",
"id",
"extension",
"identifier",
"statusHistory",
"class",
"classHistory",
"type",
"serviceType",
"priority",
"subject",
"length",
"reasonCode",
"reasonReference",
"diagnosis",
"account",
"hospitalization",
"partOf",
"hospitalization.dischargeDisposition"
]
},
{
"type" : "Observation",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/Observation"
],
"mustSupport" : [
"code",
"category",
"status",
"effective",
"specimen",
"specimen.collection",
"specimen.collection.collected",
"id",
"extension",
"basedOn",
"partOf",
"subject",
"focus",
"encounter",
"issued",
"performer",
"value",
"dataAbsentReason",
"interpretation",
"note",
"bodySite",
"method",
"device",
"referenceRange",
"hasMember",
"derivedFrom",
"component"
],
"codeFilter" : [
{
"path" : "code",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.336|20250218"
}
]
},
{
"type" : "Observation",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/Observation"
],
"mustSupport" : [
"code",
"category",
"status",
"effective",
"specimen",
"specimen.collection",
"specimen.collection.collected",
"id",
"extension",
"basedOn",
"partOf",
"subject",
"focus",
"encounter",
"issued",
"performer",
"value",
"dataAbsentReason",
"interpretation",
"note",
"bodySite",
"method",
"device",
"referenceRange",
"hasMember",
"derivedFrom",
"component"
],
"codeFilter" : [
{
"path" : "code",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.337"
}
]
},
{
"type" : "Observation",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/Observation"
],
"mustSupport" : [
"code",
"category",
"status",
"effective",
"specimen",
"specimen.collection",
"specimen.collection.collected",
"id",
"extension",
"basedOn",
"partOf",
"subject",
"focus",
"encounter",
"issued",
"performer",
"value",
"dataAbsentReason",
"interpretation",
"note",
"bodySite",
"method",
"device",
"referenceRange",
"hasMember",
"derivedFrom",
"component"
],
"codeFilter" : [
{
"path" : "code",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.1142|20250218"
}
]
},
{
"type" : "Observation",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/Observation"
],
"mustSupport" : [
"code",
"category",
"status",
"effective",
"specimen",
"specimen.collection",
"specimen.collection.collected",
"id",
"extension",
"basedOn",
"partOf",
"subject",
"focus",
"encounter",
"issued",
"performer",
"value",
"dataAbsentReason",
"interpretation",
"note",
"bodySite",
"method",
"device",
"referenceRange",
"hasMember",
"derivedFrom",
"component"
],
"codeFilter" : [
{
"path" : "code",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.1158|20240123"
}
]
},
{
"type" : "Observation",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/Observation"
],
"mustSupport" : [
"code",
"category",
"status",
"effective",
"specimen",
"specimen.collection",
"specimen.collection.collected",
"id",
"extension",
"basedOn",
"partOf",
"subject",
"focus",
"encounter",
"issued",
"performer",
"value",
"dataAbsentReason",
"interpretation",
"note",
"bodySite",
"method",
"device",
"referenceRange",
"hasMember",
"derivedFrom",
"component"
],
"codeFilter" : [
{
"path" : "code",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.1312|20250218"
}
]
},
{
"type" : "Observation",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/Observation"
],
"mustSupport" : [
"code",
"category",
"status",
"effective",
"specimen",
"specimen.collection",
"specimen.collection.collected",
"id",
"extension",
"basedOn",
"partOf",
"subject",
"focus",
"encounter",
"issued",
"performer",
"value",
"dataAbsentReason",
"interpretation",
"note",
"bodySite",
"method",
"device",
"referenceRange",
"hasMember",
"derivedFrom",
"component"
],
"codeFilter" : [
{
"path" : "code",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.1311"
}
]
},
{
"type" : "Observation",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/Observation"
],
"mustSupport" : [
"category",
"status",
"effective",
"specimen",
"specimen.collection",
"specimen.collection.collected",
"id",
"extension",
"basedOn",
"partOf",
"code",
"subject",
"focus",
"encounter",
"issued",
"performer",
"value",
"dataAbsentReason",
"interpretation",
"note",
"bodySite",
"method",
"device",
"referenceRange",
"hasMember",
"derivedFrom",
"component"
]
},
{
"type" : "Specimen",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/Specimen"
],
"mustSupport" : [
"id"
]
},
{
"type" : "DiagnosticReport",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/DiagnosticReport"
],
"mustSupport" : [
"code",
"status",
"effective"
],
"codeFilter" : [
{
"path" : "code",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.1142|20250218"
}
]
},
{
"type" : "DiagnosticReport",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/DiagnosticReport"
],
"mustSupport" : [
"code",
"status",
"effective"
],
"codeFilter" : [
{
"path" : "code",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.1158|20240123"
}
]
},
{
"type" : "DiagnosticReport",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/DiagnosticReport"
],
"mustSupport" : [
"code",
"status",
"effective"
],
"codeFilter" : [
{
"path" : "code",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.336|20250218"
}
]
},
{
"type" : "DiagnosticReport",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/DiagnosticReport"
],
"mustSupport" : [
"code",
"status",
"effective"
],
"codeFilter" : [
{
"path" : "code",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.337"
}
]
},
{
"type" : "DiagnosticReport",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/DiagnosticReport"
],
"mustSupport" : [
"code",
"status",
"effective"
],
"codeFilter" : [
{
"path" : "code",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.1312|20250218"
}
]
},
{
"type" : "DiagnosticReport",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/DiagnosticReport"
],
"mustSupport" : [
"code",
"status",
"effective"
],
"codeFilter" : [
{
"path" : "code",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.1311"
}
]
},
{
"type" : "DiagnosticReport",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/DiagnosticReport"
],
"mustSupport" : [
"status",
"effective",
"result"
]
},
{
"type" : "Location",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/Location"
]
},
{
"type" : "ServiceRequest",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/ServiceRequest"
],
"mustSupport" : [
"code",
"id",
"extension",
"instantiatesCanonical",
"instantiatesUri",
"basedOn",
"replaces",
"requisition",
"status",
"intent",
"category",
"priority",
"doNotPerform",
"orderDetail",
"quantity",
"subject",
"encounter",
"occurrence",
"asNeeded",
"authoredOn",
"performerType",
"performer",
"locationCode",
"locationReference",
"reasonCode",
"reasonReference",
"insurance",
"supportingInfo",
"specimen",
"bodySite",
"note",
"patientInstruction",
"relevantHistory"
],
"codeFilter" : [
{
"path" : "code",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.1142|20250218"
}
]
},
{
"type" : "ServiceRequest",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/ServiceRequest"
],
"mustSupport" : [
"code",
"id",
"extension",
"instantiatesCanonical",
"instantiatesUri",
"basedOn",
"replaces",
"requisition",
"status",
"intent",
"category",
"priority",
"doNotPerform",
"orderDetail",
"quantity",
"subject",
"encounter",
"occurrence",
"asNeeded",
"authoredOn",
"performerType",
"performer",
"locationCode",
"locationReference",
"reasonCode",
"reasonReference",
"insurance",
"supportingInfo",
"specimen",
"bodySite",
"note",
"patientInstruction",
"relevantHistory"
],
"codeFilter" : [
{
"path" : "code",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.1158|20240123"
}
]
},
{
"type" : "ServiceRequest",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/ServiceRequest"
],
"mustSupport" : [
"code",
"id",
"extension",
"instantiatesCanonical",
"instantiatesUri",
"basedOn",
"replaces",
"requisition",
"status",
"intent",
"category",
"priority",
"doNotPerform",
"orderDetail",
"quantity",
"subject",
"encounter",
"occurrence",
"asNeeded",
"authoredOn",
"performerType",
"performer",
"locationCode",
"locationReference",
"reasonCode",
"reasonReference",
"insurance",
"supportingInfo",
"specimen",
"bodySite",
"note",
"patientInstruction",
"relevantHistory"
],
"codeFilter" : [
{
"path" : "code",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.336|20250218"
}
]
},
{
"type" : "ServiceRequest",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/ServiceRequest"
],
"mustSupport" : [
"code",
"id",
"extension",
"instantiatesCanonical",
"instantiatesUri",
"basedOn",
"replaces",
"requisition",
"status",
"intent",
"category",
"priority",
"doNotPerform",
"orderDetail",
"quantity",
"subject",
"encounter",
"occurrence",
"asNeeded",
"authoredOn",
"performerType",
"performer",
"locationCode",
"locationReference",
"reasonCode",
"reasonReference",
"insurance",
"supportingInfo",
"specimen",
"bodySite",
"note",
"patientInstruction",
"relevantHistory"
],
"codeFilter" : [
{
"path" : "code",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.337"
}
]
},
{
"type" : "ServiceRequest",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/ServiceRequest"
],
"mustSupport" : [
"code",
"id",
"extension",
"instantiatesCanonical",
"instantiatesUri",
"basedOn",
"replaces",
"requisition",
"status",
"intent",
"category",
"priority",
"doNotPerform",
"orderDetail",
"quantity",
"subject",
"encounter",
"occurrence",
"asNeeded",
"authoredOn",
"performerType",
"performer",
"locationCode",
"locationReference",
"reasonCode",
"reasonReference",
"insurance",
"supportingInfo",
"specimen",
"bodySite",
"note",
"patientInstruction",
"relevantHistory"
],
"codeFilter" : [
{
"path" : "code",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.1312|20250218"
}
]
},
{
"type" : "ServiceRequest",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/ServiceRequest"
],
"mustSupport" : [
"code",
"id",
"extension",
"instantiatesCanonical",
"instantiatesUri",
"basedOn",
"replaces",
"requisition",
"status",
"intent",
"category",
"priority",
"doNotPerform",
"orderDetail",
"quantity",
"subject",
"encounter",
"occurrence",
"asNeeded",
"authoredOn",
"performerType",
"performer",
"locationCode",
"locationReference",
"reasonCode",
"reasonReference",
"insurance",
"supportingInfo",
"specimen",
"bodySite",
"note",
"patientInstruction",
"relevantHistory"
],
"codeFilter" : [
{
"path" : "code",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.1311"
}
]
},
{
"type" : "ServiceRequest",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/ServiceRequest"
],
"mustSupport" : [
"id",
"extension",
"instantiatesCanonical",
"instantiatesUri",
"basedOn",
"replaces",
"requisition",
"status",
"intent",
"category",
"priority",
"doNotPerform",
"code",
"orderDetail",
"quantity",
"subject",
"encounter",
"occurrence",
"asNeeded",
"authoredOn",
"performerType",
"performer",
"locationCode",
"locationReference",
"reasonCode",
"reasonReference",
"insurance",
"supportingInfo",
"specimen",
"bodySite",
"note",
"patientInstruction",
"relevantHistory"
]
},
{
"type" : "Procedure",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/Procedure"
],
"mustSupport" : [
"code",
"performed",
"id",
"instantiatesCanonical",
"instantiatesUri",
"basedOn",
"partOf",
"status",
"statusReason",
"category",
"subject",
"encounter",
"recorder",
"asserter",
"performer",
"location",
"reasonCode",
"reasonReference",
"bodySite",
"outcome",
"report",
"complication",
"complicationDetail",
"followUp",
"note",
"focalDevice",
"usedReference",
"usedCode"
],
"codeFilter" : [
{
"path" : "code",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.10.20.22.5.300|20240607"
}
]
},
{
"type" : "Procedure",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/Procedure"
],
"mustSupport" : [
"id",
"instantiatesCanonical",
"instantiatesUri",
"basedOn",
"partOf",
"status",
"statusReason",
"category",
"code",
"subject",
"encounter",
"performed",
"recorder",
"asserter",
"performer",
"location",
"reasonCode",
"reasonReference",
"bodySite",
"outcome",
"report",
"complication",
"complicationDetail",
"followUp",
"note",
"focalDevice",
"usedReference",
"usedCode"
]
},
{
"type" : "Medication",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/Medication"
],
"mustSupport" : [
"id"
],
"codeFilter" : [
{
"path" : "id"
}
]
},
{
"type" : "MedicationAdministration",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/MedicationAdministration"
],
"mustSupport" : [
"medication",
"status",
"effective"
]
},
{
"type" : "MedicationRequest",
"profile" : [
🔗 "http://hl7.org/fhir/StructureDefinition/MedicationRequest"
],
"mustSupport" : [
"medication",
"authoredOn",
"id",
"extension",
"status",
"intent",
"category",
"priority",
"doNotPerform",
"reported",
"subject",
"encounter",
"requester",
"recorder",
"reasonCode",
"reasonReference",
"instantiatesCanonical",
"instantiatesUri",
"courseOfTherapyType",
"dosageInstruction"
]
}
],
"content" : [
{
"contentType" : "text/cql",
"data" : "bGlicmFyeSBOSFNOQWN1dGVDYXJlSG9zcGl0YWxEYWlseUluaXRpYWxQb3B1bGF0aW9uIHZlcnNpb24gJzIuMC4wJwoKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjInIGNhbGxlZCBGSElSSGVscGVycwppbmNsdWRlIE5IU05IZWxwZXJzIHZlcnNpb24gJzAuMC4wMDInIGNhbGxlZCBOSFNOSGVscGVycwppbmNsdWRlIFNoYXJlZFJlc291cmNlQ3JlYXRpb24gdmVyc2lvbiAnMC4xLjAxMCcgY2FsbGVkIFNoYXJlZFJlc291cmNlCgpjb2Rlc3lzdGVtICJBY3RDb2RlIjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vdjMtQWN0Q29kZScgCmNvZGVzeXN0ZW0gIkxPSU5DIjogJ2h0dHA6Ly9sb2luYy5vcmcnIApjb2Rlc3lzdGVtICJPYnNlcnZhdGlvbiBDYXRlZ29yeSI6ICdodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9Db2RlU3lzdGVtL29ic2VydmF0aW9uLWNhdGVnb3J5JyAKY29kZXN5c3RlbSAiUlhOT1JNIjogJ2h0dHA6Ly93d3cubmxtLm5paC5nb3YvcmVzZWFyY2gvdW1scy9yeG5vcm0nCgp2YWx1ZXNldCAiRW5jb3VudGVyIElucGF0aWVudCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy42NjYuNS4zMDcnIAp2YWx1ZXNldCAiSW5wYXRpZW50LCBFbWVyZ2VuY3ksIGFuZCBPYnNlcnZhdGlvbiBMb2NhdGlvbnMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMDQ2LjI2NScgCnZhbHVlc2V0ICJPYnNlcnZhdGlvbiBTZXJ2aWNlcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjExMTEuMTQzJyAKdmFsdWVzZXQgIkRpc2NoYXJnZSBEaXNwb3NpdGlvbiI6ICdodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9WYWx1ZVNldC9jbGluaWNhbC1kaXNjaGFyZ2UtZGlzcG9zaXRpb24nCgovL0NPVklELTE5IGxhYiB0ZXN0cwp2YWx1ZXNldCAiQ09WSURfMTkgKFRlc3RzIGZvciBTQVJTX0NvVl8yIE51Y2xlaWMgQWNpZCkiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMTQ2LjExNDInCnZhbHVlc2V0ICJDT1ZJRF8xOSAoVGVzdHMgZm9yIFNBUlNfQ29WXzIgQW50aWdlbikiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMTQ2LjExNTgnCgovL0NPVklELTE5IHRlc3QgcmVzdWx0cyAodW51c2VkKQp2YWx1ZXNldCAiQ09WSURfMTkgKE9yZ2FuaXNtIG9yIFN1YnN0YW5jZSBpbiBMYWIgUmVzdWx0cykiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMTQ2LjExNDMnCgovL0luZmx1ZW56YSBsYWIgdGVzdHMKdmFsdWVzZXQgIkluZmx1ZW56YSAoVGVzdHMgZm9yIGluZmx1ZW56YSBBIG9yIEIgdmlydXMgTnVjbGVpYyBBY2lkKSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjExNDYuMzM2Jwp2YWx1ZXNldCAiSW5mbHVlbnphIChUZXN0cyBmb3IgaW5mbHVlbnphIEEgb3IgQiB2aXJ1cyBBbnRpZ2VuKSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjExNDYuMzM3JwoKLy9JbmZsdWVuemEgdGVzdCBSZXN1bHRzICh1bnVzZWQpCnZhbHVlc2V0ICJJbmZsdWVuemEgKGluZmx1ZW56YSBBIG9yIEIgdmlydXMgaW4gTGFiIFJlc3VsdHMpIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTE0Ni4zNDAnCgovL1JTViBsYWIgdGVzdHMKdmFsdWVzZXQgIlJTViAoVGVzdHMgZm9yIFJTViBBbnRpZ2VuKSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjExNDYuMTMxMScKdmFsdWVzZXQgIlJTViAoVGVzdHMgZm9yIFJTViBOdWNsZWljIEFjaWQpIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTE0Ni4xMzEyJwoKLy9SU1YgdGVzdCByZXN1bHRzICh1bnVzZWQpCnZhbHVlc2V0ICJSU1YgKE9yZ2FuaXNtIG9yIFN1YnN0YW5jZSBpbiBMYWIgUmVzdWx0cykiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMTQ2LjEzMDgnCgovL1Rlc3QgcmVzdWx0cyBzaGFyZWQgYW1vbmcgQ09WSUQtMTksIEluZmx1ZW56YSBhbmQgUlNWICh1bnVzZWQpCnZhbHVlc2V0ICJMSVZEIFNBUlMgQ29WMiBUZXN0IFJlc3VsdCBDb2RlcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjExMTQuMTAnCgovL0NPVklELTE5IG1lZGljYXRpb25zCnZhbHVlc2V0ICJCYXJpY2l0aW5pYiI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy4zNjE2LjIwMC4xMTAuMTAyLjIwNDYnCnZhbHVlc2V0ICJBbmFraW5yYSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy4zNjE2LjIwMC4xMTAuMTAyLjIwNTQnCnZhbHVlc2V0ICJTYXJpbHVtYWIiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuMzYxNi4yMDAuMTEwLjEwMi4yMDg0Jwp2YWx1ZXNldCAiQ09WSUQxOSBSeE5vcm0gVmFsdWUgU2V0IGZvciBUb2NpbGl6dW1hYiI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy4zNjE2LjIwMC4xMTAuMTAyLjIwODcnCnZhbHVlc2V0ICJDYXNpcml2aW1hYiI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy4zNjE2LjIwMC4xMTAuMTAyLjIwOTcnCnZhbHVlc2V0ICJJbWRldmltYWIiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuMzYxNi4yMDAuMTEwLjEwMi4yMDk4Jwp2YWx1ZXNldCAiQmFtbGFuaXZpbWFiIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjM2MTYuMjAwLjExMC4xMDIuMjA5OScKdmFsdWVzZXQgIkV0ZXNldmltYWIiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuMzYxNi4yMDAuMTEwLjEwMi4yMTAwJwp2YWx1ZXNldCAiU290cm92aW1hYiI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy4zNjE2LjIwMC4xMTAuMTAyLjIxMDEnCnZhbHVlc2V0ICJUb2ZhY2l0aW5pYiI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy4zNjE2LjIwMC4xMTAuMTAyLjIxMDInCnZhbHVlc2V0ICJDYXNpcml2aW1hYiAvIEltZGV2aW1hYiI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy4zNjE2LjIwMC4xMTAuMTAyLjIxMDMnCnZhbHVlc2V0ICJNb2xudXBpcmF2aXIiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuMzYxNi4yMDAuMTEwLjEwMi4yMTE5Jwp2YWx1ZXNldCAiUmVtZGVzaXZpciI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy4zNjE2LjIwMC4xMTAuMTAyLjIwODEnCnZhbHVlc2V0ICJOaXJtYXRyZWx2aXIgLyBSaXRvbmF2aXIiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuMzYxNi4yMDAuMTEwLjEwMi4yMTA0Jwp2YWx1ZXNldCAiQmVidGVsb3ZpbWFiIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjM2MTYuMjAwLjExMC4xMDIuMjEwNScKCi8vSW5mbHVlbnphIG1lZGljYXRpb25zCnZhbHVlc2V0ICJCYWxveGF2aXIiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMTkwLjg1Jwp2YWx1ZXNldCAiUGVyYW1pdmlyIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTE5MC44NicKdmFsdWVzZXQgIlphbmFtaXZpciI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjExOTAuODcnCnZhbHVlc2V0ICJPc2VsdGFtaXZpciI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy4zNjE2LjIwMC4xMTAuMTAyLjIwNzgnCgovL0lzb2xhdGlvbiBQcmVjYXV0aW9ucwp2YWx1ZXNldCAiVHJhbnNtaXNzaW9uIEJhc2VkIFByZWNhdXRpb24gVHlwZXMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjEwLjIwLjIyLjUuMzAwJwoKLy9FbmNvdW50ZXIgQ2xhc3MgQ29kZXMKdmFsdWVzZXQgIk5IU04gSW5wYXRpZW50IEVuY291bnRlciBDbGFzcyBDb2RlcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEwNDYuMjc0JwoKLy9PYnNlcnZhdGlvbiBDYXRlZ29yeSBDb2Rlcwpjb2RlICJsYWJvcmF0b3J5IjogJ2xhYm9yYXRvcnknIGZyb20gIk9ic2VydmF0aW9uIENhdGVnb3J5IiBkaXNwbGF5ICdMYWJvcmF0b3J5JwoKLy9PYnNlcnZhdGlvbiBFbmNvdW50ZXIgQ2xhc3MgQ29kZQpjb2RlICJvYnNlcnZhdGlvbiBlbmNvdW50ZXIiOiAnT0JTRU5DJyBmcm9tICJBY3RDb2RlIiBkaXNwbGF5ICdvYnNlcnZhdGlvbiBlbmNvdW50ZXInCgpwYXJhbWV0ZXIgIk1lYXN1cmVtZW50IFBlcmlvZCIgCiAgZGVmYXVsdCBJbnRlcnZhbFtAMjAyMi0wMS0wMVQwMDowMDowMC4wLCBAMjAyMi0wMi0wMlQwMDowMDowMC4wKQoKY29udGV4dCBQYXRpZW50CgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gSW5pdGlhbCBQb3B1bGF0aW9uCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkZWZpbmUgIkluaXRpYWwgUG9wdWxhdGlvbiI6CiAgRW5jb3VudGVySW5wYXRpZW50CiAgdW5pb24gRW5jb3VudGVyT2JzZXJ2YXRpb24KICB1bmlvbiAiRW5jb3VudGVycyB3aXRoIFBhdGllbnQgSG9zcGl0YWwgTG9jYXRpb25zIgoKZGVmaW5lICJFbmNvdW50ZXJJbnBhdGllbnQiOgogIChbRW5jb3VudGVyOiAiRW5jb3VudGVyIElucGF0aWVudCJdCiAgICB1bmlvbiBbRW5jb3VudGVyOiBjbGFzcyBpbiAiTkhTTiBJbnBhdGllbnQgRW5jb3VudGVyIENsYXNzIENvZGVzIl0pIEVuY291bnRlcnMKICB3aGVyZSBFbmNvdW50ZXJzLnN0YXR1cyBpbiB7J2luLXByb2dyZXNzJywgJ2ZpbmlzaGVkJywgJ3RyaWFnZWQnLCAnb25sZWF2ZScsICdlbnRlcmVkLWluLWVycm9yJ30KICAgIGFuZCBFbmNvdW50ZXJzLnBlcmlvZCBvdmVybGFwcyAiTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJFbmNvdW50ZXJPYnNlcnZhdGlvbiI6CiAgKFtFbmNvdW50ZXI6ICJPYnNlcnZhdGlvbiBTZXJ2aWNlcyJdCiAgICB1bmlvbiBbRW5jb3VudGVyOiBjbGFzcyBpbiB7Im9ic2VydmF0aW9uIGVuY291bnRlciJ9XSkgRW5jb3VudGVycwogIHdoZXJlIEVuY291bnRlcnMuc3RhdHVzIGluIHsnaW4tcHJvZ3Jlc3MnLCAnZmluaXNoZWQnLCAndHJpYWdlZCcsICdvbmxlYXZlJywgJ2VudGVyZWQtaW4tZXJyb3InfQogICAgYW5kIEVuY291bnRlcnMucGVyaW9kIG92ZXJsYXBzICJNZWFzdXJlbWVudCBQZXJpb2QiCgpkZWZpbmUgIkVuY291bnRlcnMgd2l0aCBQYXRpZW50IEhvc3BpdGFsIExvY2F0aW9ucyI6CiAgW0VuY291bnRlcl0gRW5jb3VudGVycwogIHdoZXJlIGV4aXN0cygKICAgIEVuY291bnRlcnMubG9jYXRpb24gRW5jb3VudGVyTG9jYXRpb24KICAgIGxldCB0eXBlczogTkhTTkhlbHBlcnMuR2V0TG9jYXRpb24oRW5jb3VudGVyTG9jYXRpb24ubG9jYXRpb24pLnR5cGUKICAgIHdoZXJlIGV4aXN0cygKICAgICAgdHlwZXMgdHlwZQogICAgICB3aGVyZSB0eXBlIGluICJJbnBhdGllbnQsIEVtZXJnZW5jeSwgYW5kIE9ic2VydmF0aW9uIExvY2F0aW9ucyIKICAgICkKICAgIGFuZCBFbmNvdW50ZXJMb2NhdGlvbi5wZXJpb2Qgb3ZlcmxhcHMgRW5jb3VudGVycy5wZXJpb2QKICAgIGFuZCBFbmNvdW50ZXJzLnN0YXR1cyBpbiB7J2luLXByb2dyZXNzJywgJ2ZpbmlzaGVkJywgJ3RyaWFnZWQnLCAnb25sZWF2ZScsICdlbnRlcmVkLWluLWVycm9yJyB9CiAgICBhbmQgRW5jb3VudGVycy5wZXJpb2Qgb3ZlcmxhcHMgIk1lYXN1cmVtZW50IFBlcmlvZCIKICApCgoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBMb2dpYyByZWxhdGVkIHRvIExhYm9yYXRvcnkKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovL0xhYiBPYnNlcnZhdGlvbnMKZGVmaW5lICJDT1ZJRCBBbmQgSW5mbHVlbnphIE9ic2VydmF0aW9uIjoKICAoW09ic2VydmF0aW9uOiAiSW5mbHVlbnphIChUZXN0cyBmb3IgaW5mbHVlbnphIEEgb3IgQiB2aXJ1cyBOdWNsZWljIEFjaWQpIl0gCiAgdW5pb24gW09ic2VydmF0aW9uOiAiSW5mbHVlbnphIChUZXN0cyBmb3IgaW5mbHVlbnphIEEgb3IgQiB2aXJ1cyBBbnRpZ2VuKSJdCiAgdW5pb24gW09ic2VydmF0aW9uOiAiQ09WSURfMTkgKFRlc3RzIGZvciBTQVJTX0NvVl8yIE51Y2xlaWMgQWNpZCkiXQogIHVuaW9uIFtPYnNlcnZhdGlvbjogIkNPVklEXzE5IChUZXN0cyBmb3IgU0FSU19Db1ZfMiBBbnRpZ2VuKSJdCiAgKSBPYnNlcnZhdGlvbnMKICAgIHdoZXJlIGV4aXN0cyhPYnNlcnZhdGlvbnMuY2F0ZWdvcnkgQ2F0ZWdvcnkgd2hlcmUgQ2F0ZWdvcnkgfiAibGFib3JhdG9yeSIpCiAgICAgIGFuZCBPYnNlcnZhdGlvbnMuc3RhdHVzIGluIHsnZmluYWwnLCdyZWdpc3RlcmVkJywncHJlbGltaW5hcnknLCdwYXJ0aWFsJ30KICAgICAgYW5kIGV4aXN0cygiSW5pdGlhbCBQb3B1bGF0aW9uIikKCmRlZmluZSAiUlNWIE9ic2VydmF0aW9uIjoKICAoW09ic2VydmF0aW9uOiAiUlNWIChUZXN0cyBmb3IgUlNWIE51Y2xlaWMgQWNpZCkiXQogIHVuaW9uIFtPYnNlcnZhdGlvbjogIlJTViAoVGVzdHMgZm9yIFJTViBBbnRpZ2VuKSJdICAgCiAgKSBPYnNlcnZhdGlvbnMKICAgIHdoZXJlIGV4aXN0cyhPYnNlcnZhdGlvbnMuY2F0ZWdvcnkgQ2F0ZWdvcnkgd2hlcmUgQ2F0ZWdvcnkgfiAibGFib3JhdG9yeSIpCiAgICAgIGFuZCBPYnNlcnZhdGlvbnMuc3RhdHVzIGluIHsnZmluYWwnLCdyZWdpc3RlcmVkJywncHJlbGltaW5hcnknLCdwYXJ0aWFsJ30KICAgICAgYW5kIGV4aXN0cygiSW5pdGlhbCBQb3B1bGF0aW9uIikKCmRlZmluZSAiQUNIIERhaWx5IE9ic2VydmF0aW9uIjoKICAiUlNWIE9ic2VydmF0aW9uIgogIHVuaW9uICJDT1ZJRCBBbmQgSW5mbHVlbnphIE9ic2VydmF0aW9uIgoKLy9mdXJ0aGVyIGNvbnN0cmFpbiBDT1ZJRC0xOSBhbmQgSW5mbHVlbnphIE9ic2VydmF0aW9ucyBmb3IgMTQgZGF5IGxvb2tiYWNrCmRlZmluZSAiQ09WSUQgQW5kIEluZmx1ZW56YSBQUkUgQWRtaXNzaW9uIE9ic2VydmF0aW9uIjoKICAiQ09WSUQgQW5kIEluZmx1ZW56YSBPYnNlcnZhdGlvbiIgTyAKICAgd2hlcmUgZXhpc3RzKCBFbmNvdW50ZXJJbnBhdGllbnQgRSAKICAgIHdoZXJlICgKICAgICAgTkhTTkhlbHBlcnMuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoTy5lZmZlY3RpdmUpIDE0IGRheXMgb3IgbGVzcyBvbiBvciBiZWZvcmUgc3RhcnQgb2YgRS5wZXJpb2QKICAgICAgb3IgTkhTTkhlbHBlcnMuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoR2V0U3BlY2ltZW4oTy5zcGVjaW1lbikuY29sbGVjdGlvbi5jb2xsZWN0ZWQpIDE0IGRheXMgb3IgbGVzcyBvbiBvciBiZWZvcmUgc3RhcnQgb2YgRS5wZXJpb2QKICAgICAgKQogICAgICBhbmQgc3RhcnQgb2YgRS5wZXJpb2QgZHVyaW5nICJNZWFzdXJlbWVudCBQZXJpb2QiCiAgICApICAKCi8vZnVydGhlciBjb25zdHJhaW4gUlNWIG9ic2VydmF0aW9uIGZvciA4IGRheSBsb29rYmFjawpkZWZpbmUgIlJTViBQUkUgQWRtaXNzaW9uIE9ic2VydmF0aW9uIjoKICAiUlNWIE9ic2VydmF0aW9uIiBPIAogIHdoZXJlIGV4aXN0cyhFbmNvdW50ZXJJbnBhdGllbnQgRSAKICAgIHdoZXJlICgKICAgICAgTkhTTkhlbHBlcnMuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoTy5lZmZlY3RpdmUpIDggZGF5cyBvciBsZXNzIG9uIG9yIGJlZm9yZSBzdGFydCBvZiBFLnBlcmlvZAogICAgICBvciBOSFNOSGVscGVycy4iTm9ybWFsaXplIEludGVydmFsIihHZXRTcGVjaW1lbihPLnNwZWNpbWVuKS5jb2xsZWN0aW9uLmNvbGxlY3RlZCkgOCBkYXlzIG9yIGxlc3Mgb24gb3IgYmVmb3JlIHN0YXJ0IG9mIEUucGVyaW9kCiAgICAgICkKICAgICAgYW5kIHN0YXJ0IG9mIEUucGVyaW9kIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgKQoKLy9MYWIgRGlhZ25vc3RpY1JlcG9ydApkZWZpbmUgIkNPVklEIEFuZCBJbmZsdWVuemEgRGlhZ25vc3RpY1JlcG9ydCI6CiAgKFtEaWFnbm9zdGljUmVwb3J0OiAiQ09WSURfMTkgKFRlc3RzIGZvciBTQVJTX0NvVl8yIE51Y2xlaWMgQWNpZCkiXQogICAgdW5pb24gW0RpYWdub3N0aWNSZXBvcnQ6ICJDT1ZJRF8xOSAoVGVzdHMgZm9yIFNBUlNfQ29WXzIgQW50aWdlbikiXQogICAgdW5pb24gW0RpYWdub3N0aWNSZXBvcnQ6ICJJbmZsdWVuemEgKFRlc3RzIGZvciBpbmZsdWVuemEgQSBvciBCIHZpcnVzIE51Y2xlaWMgQWNpZCkiXQogICAgdW5pb24gW0RpYWdub3N0aWNSZXBvcnQ6ICJJbmZsdWVuemEgKFRlc3RzIGZvciBpbmZsdWVuemEgQSBvciBCIHZpcnVzIEFudGlnZW4pIl0KICApIFJlcG9ydHMKICAgIHdoZXJlIGV4aXN0cygiSW5pdGlhbCBQb3B1bGF0aW9uIikKICAgICAgYW5kIFJlcG9ydHMuc3RhdHVzIGluIHsnZmluYWwnLCdyZWdpc3RlcmVkJywncHJlbGltaW5hcnknLCdwYXJ0aWFsJ30KCmRlZmluZSAiUlNWIERpYWdub3N0aWNSZXBvcnQiOgogIChbRGlhZ25vc3RpY1JlcG9ydDogIlJTViAoVGVzdHMgZm9yIFJTViBOdWNsZWljIEFjaWQpIl0KICAgIHVuaW9uIFtEaWFnbm9zdGljUmVwb3J0OiAiUlNWIChUZXN0cyBmb3IgUlNWIEFudGlnZW4pIl0KICApIFJlcG9ydHMKICAgIHdoZXJlIGV4aXN0cygiSW5pdGlhbCBQb3B1bGF0aW9uIikKICAgICAgYW5kIFJlcG9ydHMuc3RhdHVzIGluIHsnZmluYWwnLCdyZWdpc3RlcmVkJywncHJlbGltaW5hcnknLCdwYXJ0aWFsJ30KCmRlZmluZSAiQUNIIERhaWx5IERpYWdub3N0aWNSZXBvcnQiOgogICJDT1ZJRCBBbmQgSW5mbHVlbnphIERpYWdub3N0aWNSZXBvcnQiCiAgICB1bmlvbiAiUlNWIERpYWdub3N0aWNSZXBvcnQiCgovL2Z1cnRoZXIgY29uc3RyYWluIENPVklELTE5IGFuZCBJbmZsdWVuemEgd2l0aCAxNCBkYXkgbG9va2JhY2sgCmRlZmluZSAiQ09WSUQgQW5kIEluZmx1ZW56YSBEaWFnbm9zdGljUmVwb3J0IFBSRSBBZG1pc3Npb24iOgogICJDT1ZJRCBBbmQgSW5mbHVlbnphIERpYWdub3N0aWNSZXBvcnQiIFIgCiAgd2hlcmUgZXhpc3RzKEVuY291bnRlcklucGF0aWVudCBFIAogICAgd2hlcmUgKAogICAgICBOSFNOSGVscGVycy4iTm9ybWFsaXplIEludGVydmFsIihSLmVmZmVjdGl2ZSkgMTQgZGF5cyBvciBsZXNzIG9uIG9yIGJlZm9yZSBzdGFydCBvZiBFLnBlcmlvZCkKICAgICAgYW5kIHN0YXJ0IG9mIEUucGVyaW9kIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgKQoKLy9mdXJ0aGVyIGNvbnN0cmFpbiBSU1YgZm9yIDggZGF5IGxvb2tiYWNrCmRlZmluZSAiUlNWIERpYWdub3N0aWNSZXBvcnQgUFJFIEFkbWlzc2lvbiI6CiAgIlJTViBEaWFnbm9zdGljUmVwb3J0IiBSIAogIHdoZXJlIGV4aXN0cyhFbmNvdW50ZXJJbnBhdGllbnQgRSAKICAgIHdoZXJlICgKICAgICAgTkhTTkhlbHBlcnMuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoUi5lZmZlY3RpdmUpIDggZGF5cyBvciBsZXNzIG9uIG9yIGJlZm9yZSBzdGFydCBvZiBFLnBlcmlvZCkKICAgICAgYW5kIHN0YXJ0IG9mIEUucGVyaW9kIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgKQoKZGVmaW5lICJDT1ZJRCBhbmQgSW5mbHVlbnphIERpYWdub3N0aWNSZXBvcnQgUmVzdWx0IGZyb20gTGFiIjoKICAiRGlhZ25vc3RpY1JlcG9ydHMiIFJlcG9ydHMKICAgIHdoZXJlIGV4aXN0cygKICAgICAgIkNPVklEIGFuZCBJbmZsdWVuemEgRGlhZ25vc3RpY1JlcG9ydCBPYnNlcnZhdGlvbnMiIE9ic2VydmF0aW9ucwogICAgICB3aGVyZSBSZXBvcnRzLnJlc3VsdC5yZWZlcmVuY2VzKE9ic2VydmF0aW9ucykKICAgICkKICAgIGFuZCBSZXBvcnRzLnN0YXR1cyBpbiB7J2ZpbmFsJywncmVnaXN0ZXJlZCcsJ3ByZWxpbWluYXJ5JywncGFydGlhbCd9CiAgICBhbmQgZXhpc3RzKCJJbml0aWFsIFBvcHVsYXRpb24iKQoKZGVmaW5lICJDT1ZJRCBhbmQgSW5mbHVlbnphIERpYWdub3N0aWNSZXBvcnQgT2JzZXJ2YXRpb25zIjoKICAiT2JzZXJ2YXRpb25zIiBPYnNlcnZhdGlvbnMKICB3aGVyZSBPYnNlcnZhdGlvbnMuY29kZSBpbiAiQ09WSURfMTkgKFRlc3RzIGZvciBTQVJTX0NvVl8yIE51Y2xlaWMgQWNpZCkiCiAgICBvciBPYnNlcnZhdGlvbnMuY29kZSBpbiAiQ09WSURfMTkgKFRlc3RzIGZvciBTQVJTX0NvVl8yIEFudGlnZW4pIgogICAgb3IgT2JzZXJ2YXRpb25zLmNvZGUgaW4gIkluZmx1ZW56YSAoVGVzdHMgZm9yIGluZmx1ZW56YSBBIG9yIEIgdmlydXMgTnVjbGVpYyBBY2lkKSIKICAgIG9yIE9ic2VydmF0aW9ucy5jb2RlIGluICJJbmZsdWVuemEgKFRlc3RzIGZvciBpbmZsdWVuemEgQSBvciBCIHZpcnVzIEFudGlnZW4pIgoKIApkZWZpbmUgIlJTViBEaWFnbm9zdGljUmVwb3J0IFJlc3VsdCBmcm9tIExhYiI6CiAgW0RpYWdub3N0aWNSZXBvcnRdIFJlcG9ydHMKICAgIHdoZXJlIGV4aXN0cygiUlNWIERpYWdub3N0aWNSZXBvcnQgT2JzZXJ2YXRpb25zIikKICAgICAgYW5kIFJlcG9ydHMuc3RhdHVzIGluIHsnZmluYWwnLCdyZWdpc3RlcmVkJywncHJlbGltaW5hcnknLCdwYXJ0aWFsJ30KICAgICAgYW5kIGV4aXN0cygiSW5pdGlhbCBQb3B1bGF0aW9uIikKCmRlZmluZSAiUlNWIE9ic2VydmF0aW9ucyI6CiAgIk9ic2VydmF0aW9ucyIgT2JzZXJ2YXRpb25zCiAgd2hlcmUgT2JzZXJ2YXRpb25zLmNvZGUgaW4gIlJTViAoVGVzdHMgZm9yIFJTViBOdWNsZWljIEFjaWQpIgogICAgb3IgT2JzZXJ2YXRpb25zLmNvZGUgaW4gIlJTViAoVGVzdHMgZm9yIFJTViBBbnRpZ2VuKSIKICAgIApkZWZpbmUgIlJTViBEaWFnbm9zdGljUmVwb3J0IE9ic2VydmF0aW9ucyI6CiAgIkRpYWdub3N0aWNSZXBvcnRzIiBSZXBvcnRzCiAgd2hlcmUgZXhpc3RzKAogICAgIlJTViBPYnNlcnZhdGlvbnMiIE9ic2VydmF0aW9ucwogICAgd2hlcmUgUmVwb3J0cy5yZXN1bHQucmVmZXJlbmNlcyhPYnNlcnZhdGlvbnMpCiAgKQoKZGVmaW5lICJBQ0ggRGFpbHkgRGlhZ25vc3RpY1JlcG9ydCBSZXN1bHQgZnJvbSBMYWIiOgogICJDT1ZJRCBhbmQgSW5mbHVlbnphIERpYWdub3N0aWNSZXBvcnQgUmVzdWx0IGZyb20gTGFiIgogICAgdW5pb24gIlJTViBEaWFnbm9zdGljUmVwb3J0IFJlc3VsdCBmcm9tIExhYiIKCi8vZnVydGhlciBjb25zdHJhaW4gQ09WSUQtMTkgYW5kIEluZmx1ZW56YSB3aXRoIDE0IGRheSBsb29rYmFjawpkZWZpbmUgIkNPVklEIGFuZCBJbmZsdWVuemEgRGlhZ25vc3RpY1JlcG9ydCBSZXN1bHQgZnJvbSBMYWIgUFJFIEFkbWlzc2lvbiI6CiAgIkNPVklEIGFuZCBJbmZsdWVuemEgRGlhZ25vc3RpY1JlcG9ydCBSZXN1bHQgZnJvbSBMYWIiIFIgCiAgd2hlcmUgZXhpc3RzKEVuY291bnRlcklucGF0aWVudCBFIAogICAgd2hlcmUgKAogICAgICBOSFNOSGVscGVycy4iTm9ybWFsaXplIEludGVydmFsIihSLmVmZmVjdGl2ZSkgMTQgZGF5cyBvciBsZXNzIG9uIG9yIGJlZm9yZSBzdGFydCBvZiBFLnBlcmlvZCkKICAgICAgYW5kIHN0YXJ0IG9mIEUucGVyaW9kIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgKQoKLy9mdXJ0aGVyIGNvbnN0cmFpbiBSU1Ygd2l0aCA4IGRheSBsb29rYmFjawpkZWZpbmUgIlJTViBEaWFnbm9zdGljUmVwb3J0IFJlc3VsdCBmcm9tIExhYiBQUkUgQWRtaXNzaW9uIjoKICAiUlNWIERpYWdub3N0aWNSZXBvcnQgUmVzdWx0IGZyb20gTGFiIiBSIAogIHdoZXJlIGV4aXN0cyhFbmNvdW50ZXJJbnBhdGllbnQgRSAKICAgIHdoZXJlICgKICAgICAgTkhTTkhlbHBlcnMuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoUi5lZmZlY3RpdmUpIDggZGF5cyBvciBsZXNzIG9uIG9yIGJlZm9yZSBzdGFydCBvZiBFLnBlcmlvZCkKICAgICAgYW5kIHN0YXJ0IG9mIEUucGVyaW9kIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgKQogICAgCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBTREUKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRlZmluZSAiU0RFIElQIEVuY291bnRlcnMiOgogICJJbml0aWFsIFBvcHVsYXRpb24iIElQCiAgcmV0dXJuIEVuY291bnRlclJlc291cmNlKElQLCAKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1kYWlseS1lbmNvdW50ZXInfX0pCgpkZWZpbmUgIlNERSBFbmNvdW50ZXIiOiAKICAiRW5jb3VudGVycyIgRW5jb3VudGVycwogIHdoZXJlIG5vdCBDaGVja0lQKEVuY291bnRlcnMpCiAgYW5kIGV4aXN0cygKICAgICJJbml0aWFsIFBvcHVsYXRpb24iIElQCiAgICB3aGVyZSBFbmNvdW50ZXJzLnBlcmlvZCBvdmVybGFwcyBJUC5wZXJpb2QpCiAgcmV0dXJuIEVuY291bnRlclJlc291cmNlKEVuY291bnRlcnMsCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL2hsNy5vcmcvZmhpci91cy9jb3JlL1N0cnVjdHVyZURlZmluaXRpb24vdXMtY29yZS1lbmNvdW50ZXInfX0pCgpkZWZpbmUgIlNERSBNaW5pbWFsIFBhdGllbnQiOgogIFBhdGllbnQgcAogIHJldHVybiBTaGFyZWRSZXNvdXJjZS5QYXRpZW50UmVzb3VyY2UocCwgCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9jcm9zcy1tZWFzdXJlLXBhdGllbnQnfX0pCgpkZWZpbmUgIlNERSBMb2NhdGlvbiI6CiAgW0xvY2F0aW9uXSBMb2NhdGlvbnMKICB3aGVyZSBleGlzdHMoIkluaXRpYWwgUG9wdWxhdGlvbiIpCiAgcmV0dXJuIFNoYXJlZFJlc291cmNlLkxvY2F0aW9uUmVzb3VyY2UoTG9jYXRpb25zLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLWRhaWx5LWxvY2F0aW9uJ319KQogICAKZGVmaW5lICJTREUgRW5jb3VudGVyIERpc2NoYXJnZSBEaXNwb3NpdGlvbnMiOgoJIkluaXRpYWwgUG9wdWxhdGlvbiIgRGlzY2hhcmdlRGlzcG9zaXRpb25zIAogIHdoZXJlIERpc2NoYXJnZURpc3Bvc2l0aW9ucy5ob3NwaXRhbGl6YXRpb24uZGlzY2hhcmdlRGlzcG9zaXRpb24gaW4gIkRpc2NoYXJnZSBEaXNwb3NpdGlvbiIKICByZXR1cm4gRW5jb3VudGVyUmVzb3VyY2UoRGlzY2hhcmdlRGlzcG9zaXRpb25zLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLWRhaWx5LWVuY291bnRlcid9fSkKCi8vcmV0dXJuIHRoZSBPYnNlcnZhdGlvbiBkdXJpbmcgdGhlIE1lYXN1cmVtZW50IFBlcmlvZApkZWZpbmUgIlNERSBBQ0ggRGFpbHkgT2JzZXJ2YXRpb24iOgogICJBQ0ggRGFpbHkgT2JzZXJ2YXRpb24iIE9ic2VydmF0aW9ucwogICAgcmV0dXJuIE9ic2VydmF0aW9uTGFiUmVzb3VyY2UoT2JzZXJ2YXRpb25zLAogICAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtZGFpbHktb2JzZXJ2YXRpb24tbGFiJ319KQoKLy9yZXR1cm4gdGhlIFJTViBPYnNlcnZhdGlvbiBQcmUgQWRtaXNzaW9uICAgIApkZWZpbmUgIlNERSBSU1YgUFJFIEFkbWlzc2lvbiBPYnNlcnZhdGlvbiI6CiAgIlJTViBQUkUgQWRtaXNzaW9uIE9ic2VydmF0aW9uIiBPYnNlcnZhdGlvbnMKICAgIHJldHVybiBPYnNlcnZhdGlvbkxhYlJlc291cmNlKE9ic2VydmF0aW9ucywgCiAgICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1kYWlseS1vYnNlcnZhdGlvbi1sYWInfX0pCgovL3JldHVybiB0aGUgQ09WSUQtMTkgYW5kIEluZmx1ZW56YSBPYnNlcnZhdGlvbiBQcmUgQWRtaXNzaW9uCmRlZmluZSAiU0RFIENPVklEIEFuZCBJbmZsdWVuemEgUFJFIEFkbWlzc2lvbiBPYnNlcnZhdGlvbiI6CiAgIkNPVklEIEFuZCBJbmZsdWVuemEgUFJFIEFkbWlzc2lvbiBPYnNlcnZhdGlvbiIgT2JzZXJ2YXRpb25zCiAgICByZXR1cm4gT2JzZXJ2YXRpb25MYWJSZXNvdXJjZShPYnNlcnZhdGlvbnMsCiAgICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1kYWlseS1vYnNlcnZhdGlvbi1sYWInfX0pCgovL3JldHVybiB0aGUgU3BlY2ltZW4gcmVsYXRlZCB0byB0aGUgT2JzZXJ2YXRpb24gZHVyaW5nIHRoZSBNZWFzdXJlbWVudCBQZXJpb2QKZGVmaW5lICJTREUgQUNIIERhaWx5IFNwZWNpbWVuIjoKICAiQUNIIERhaWx5IE9ic2VydmF0aW9uIiBPYnNlcnZhdGlvbldpdGhTcGVjaW1lbgogICAgbGV0IFNwZWNpbWVuOiBHZXRTcGVjaW1lbihPYnNlcnZhdGlvbldpdGhTcGVjaW1lbi5zcGVjaW1lbikKICAgIHJldHVybiBTaGFyZWRSZXNvdXJjZS5TcGVjaW1lblJlc291cmNlKFNwZWNpbWVuLAogICAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtZGFpbHktc3BlY2ltZW4nfX0pCgovL3JldHVybiB0aGUgU3BlY2ltZW4gcmVsYXRlZCB0byB0aGUgUlNWIE9ic2VydmF0aW9uIFByZSBBZG1pc3Npb24KZGVmaW5lICJTREUgUlNWIFNwZWNpbWVuIjoKICAiUlNWIFBSRSBBZG1pc3Npb24gT2JzZXJ2YXRpb24iIE9ic2VydmF0aW9uV2l0aFNwZWNpbWVuCiAgICBsZXQgU3BlY2ltZW46IEdldFNwZWNpbWVuKE9ic2VydmF0aW9uV2l0aFNwZWNpbWVuLnNwZWNpbWVuKQogICAgcmV0dXJuIFNoYXJlZFJlc291cmNlLlNwZWNpbWVuUmVzb3VyY2UoU3BlY2ltZW4sCiAgICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1kYWlseS1zcGVjaW1lbid9fSkKCi8vcmV0dXJuIHRoZSBTcGVjaW1lbiByZWxhdGVkIHRvIHRoZSBDT1ZJRC0xOSBBbmQgSW5mbHVlbnphIE9ic2VydmF0aW9uIFByZSBBZG1pc3Npb24KZGVmaW5lICJTREUgQ09WSUQgQW5kIEluZmx1ZW56YSBTcGVjaW1lbiI6CiAgIkNPVklEIEFuZCBJbmZsdWVuemEgUFJFIEFkbWlzc2lvbiBPYnNlcnZhdGlvbiIgT2JzZXJ2YXRpb25XaXRoU3BlY2ltZW4KICAgIGxldCBTcGVjaW1lbjogR2V0U3BlY2ltZW4oT2JzZXJ2YXRpb25XaXRoU3BlY2ltZW4uc3BlY2ltZW4pCiAgICByZXR1cm4gU2hhcmVkUmVzb3VyY2UuU3BlY2ltZW5SZXNvdXJjZShTcGVjaW1lbiwKICAgIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLWRhaWx5LXNwZWNpbWVuJ319KQoKLy9yZXR1cm4gdGhlIERpYWdub3N0aWNSZXBvcnQgZHVyaW5nIHRoZSBNZWFzdXJlbWVudCBQZXJpb2QKZGVmaW5lICJTREUgQUNIIERhaWx5IERpYWdub3N0aWNSZXBvcnQiOgogICJBQ0ggRGFpbHkgRGlhZ25vc3RpY1JlcG9ydCIgUmVwb3J0cwogICAgcmV0dXJuIFNoYXJlZFJlc291cmNlLkRpYWdub3N0aWNSZXBvcnRMYWJSZXNvdXJjZShSZXBvcnRzLAogICAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtZGFpbHktZGlhZ25vc3RpY3JlcG9ydC1sYWInfX0pCgovL3JldHVybiB0aGUgQ09WSUQtMTkgQW5kIEluZmx1ZW56YSBEaWFnbm9zdGljUmVwb3J0IHByZSBhZG1pc3Npb24KZGVmaW5lICJTREUgQ09WSUQgQW5kIEluZmx1ZW56YSBEaWFnbm9zdGljUmVwb3J0IjoKICAiQ09WSUQgQW5kIEluZmx1ZW56YSBEaWFnbm9zdGljUmVwb3J0IiBSZXBvcnRzCiAgICByZXR1cm4gU2hhcmVkUmVzb3VyY2UuRGlhZ25vc3RpY1JlcG9ydExhYlJlc291cmNlKFJlcG9ydHMsCiAgICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1kYWlseS1kaWFnbm9zdGljcmVwb3J0LWxhYid9fSkKCi8vcmV0dXJuIHRoZSBSU1YgRGlhZ25vc3RpY1JlcG9ydCBwcmUgYWRtaXNzaW9uCmRlZmluZSAiU0RFIFJTViBEaWFnbm9zdGljUmVwb3J0IjoKICAiUlNWIERpYWdub3N0aWNSZXBvcnQiIFJlcG9ydHMKICAgIHJldHVybiBTaGFyZWRSZXNvdXJjZS5EaWFnbm9zdGljUmVwb3J0TGFiUmVzb3VyY2UoUmVwb3J0cywKICAgIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLWRhaWx5LWRpYWdub3N0aWNyZXBvcnQtbGFiJ319KQoKLy9yZXR1cm4gdGhlIERpYWdub3N0aWNSZXBvcnQgYmFzZWQgb24gdGhlIHJlc3VsdCBkdXJpbmcgdGhlIE1lYXN1cmVtZW50IFBlcmlvZCAgICAKZGVmaW5lICJTREUgQUNIIERhaWx5IERpYWdub3N0aWNSZXBvcnQgUmVzdWx0IGZyb20gTGFiIjoKICAiQUNIIERhaWx5IERpYWdub3N0aWNSZXBvcnQgUmVzdWx0IGZyb20gTGFiIiBSZXBvcnRzCiAgICByZXR1cm4gU2hhcmVkUmVzb3VyY2UuRGlhZ25vc3RpY1JlcG9ydExhYlJlc291cmNlKFJlcG9ydHMsCiAgICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1kYWlseS1kaWFnbm9zdGljcmVwb3J0LWxhYid9fSkKCi8vcmV0dXJuIHRoZSBDT1ZJRC0xOSBhbmQgSW5mbHVlbnphIERpYWdub3N0aWNSZXBvcnQgYmFzZWQgb24gdGhlIHJlc3VsdCBwcmUgYWRtaXNzaW9uCmRlZmluZSAiU0RFIENPVklEIGFuZCBJbmZsdWVuemEgRGlhZ25vc3RpY1JlcG9ydCBSZXN1bHQgZnJvbSBMYWIiOgogICJDT1ZJRCBhbmQgSW5mbHVlbnphIERpYWdub3N0aWNSZXBvcnQgUmVzdWx0IGZyb20gTGFiIiBSZXBvcnRzCiAgICByZXR1cm4gU2hhcmVkUmVzb3VyY2UuRGlhZ25vc3RpY1JlcG9ydExhYlJlc291cmNlKFJlcG9ydHMsCiAgICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1kYWlseS1kaWFnbm9zdGljcmVwb3J0LWxhYid9fSkKCi8vcmV0dXJuIHRoZSBSU1YgRGlhZ25vc3RpY1JlcG9ydCBiYXNlZCBvbiB0aGUgcmVzdWx0IHByZSBhZG1pc3Npb24KZGVmaW5lICJTREUgUlNWIERpYWdub3N0aWNSZXBvcnQgUmVzdWx0IGZyb20gTGFiIjoKICAiUlNWIERpYWdub3N0aWNSZXBvcnQgUmVzdWx0IGZyb20gTGFiIiBSZXBvcnRzCiAgICByZXR1cm4gU2hhcmVkUmVzb3VyY2UuRGlhZ25vc3RpY1JlcG9ydExhYlJlc291cmNlKFJlcG9ydHMsCiAgICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1kYWlseS1kaWFnbm9zdGljcmVwb3J0LWxhYid9fSkKICAKZGVmaW5lICJTREUgQUNIIERhaWx5IFNlcnZpY2VSZXF1ZXN0IjoKICAoW1NlcnZpY2VSZXF1ZXN0OiAiQ09WSURfMTkgKFRlc3RzIGZvciBTQVJTX0NvVl8yIE51Y2xlaWMgQWNpZCkiXSAKICB1bmlvbiAgW1NlcnZpY2VSZXF1ZXN0OiAiQ09WSURfMTkgKFRlc3RzIGZvciBTQVJTX0NvVl8yIEFudGlnZW4pIl0gCiAgdW5pb24gIFtTZXJ2aWNlUmVxdWVzdDogIkluZmx1ZW56YSAoVGVzdHMgZm9yIGluZmx1ZW56YSBBIG9yIEIgdmlydXMgTnVjbGVpYyBBY2lkKSJdCiAgdW5pb24gIFtTZXJ2aWNlUmVxdWVzdDogIkluZmx1ZW56YSAoVGVzdHMgZm9yIGluZmx1ZW56YSBBIG9yIEIgdmlydXMgQW50aWdlbikiXQogIHVuaW9uICBbU2VydmljZVJlcXVlc3Q6ICJSU1YgKFRlc3RzIGZvciBSU1YgTnVjbGVpYyBBY2lkKSJdCiAgdW5pb24gIFtTZXJ2aWNlUmVxdWVzdDogIlJTViAoVGVzdHMgZm9yIFJTViBBbnRpZ2VuKSJdCiAgKSBTZXJ2aWNlUmVxdWVzdHMKICAgIHdoZXJlIFNlcnZpY2VSZXF1ZXN0cy5pbnRlbnQgfiAnb3JkZXInCiAgICAgIGFuZCBTZXJ2aWNlUmVxdWVzdHMuc3RhdHVzIH4gJ2NvbXBsZXRlZCcKICAgICAgYW5kIGV4aXN0cygiSW5pdGlhbCBQb3B1bGF0aW9uIikKICByZXR1cm4gU2VydmljZVJlcXVlc3RSZXNvdXJjZShTZXJ2aWNlUmVxdWVzdHMsCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtZGFpbHktc2VydmljZXJlcXVlc3QnfX0pCgpkZWZpbmUgIlNERSBJc29sYXRpb24gUHJlY2F1dGlvbnMgSW1wbGVtZW50ZWQiOgogIFtQcm9jZWR1cmU6ICJUcmFuc21pc3Npb24gQmFzZWQgUHJlY2F1dGlvbiBUeXBlcyJdIElzb2xhdGlvblByZWNhdXRpb25zCiAgICB3aGVyZSBOSFNOSGVscGVycy4iTm9ybWFsaXplIEludGVydmFsIihJc29sYXRpb25QcmVjYXV0aW9ucy5wZXJmb3JtZWQpIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgYW5kIGV4aXN0cygiSW5pdGlhbCBQb3B1bGF0aW9uIikKICByZXR1cm4gU2hhcmVkUmVzb3VyY2UuUHJvY2VkdXJlUmVzb3VyY2UoSXNvbGF0aW9uUHJlY2F1dGlvbnMsCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtZGFpbHktcHJvY2VkdXJlJ319KQoKZGVmaW5lICJTREUgQ292aWQgb3IgSW5mbHVlbnphIE1lZGljYXRpb24gQWRtaW5pc3RlcmVkIjoKICBbTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uXSBSUFNNZWRBZG1pbgogICAgbGV0IE1lZHM6IEdldE1lZGljYXRpb25Db2RlKFJQU01lZEFkbWluLm1lZGljYXRpb24pCiAgIHdoZXJlIChNZWRzIGluICJBbmFraW5yYSIKICAgICAgICAgICAgb3IgTWVkcyBpbiAiQmFtbGFuaXZpbWFiIgogICAgICAgICAgICBvciBNZWRzIGluICJCYWxveGF2aXIiCiAgICAgICAgICAgIG9yIE1lZHMgaW4gIkJhcmljaXRpbmliIgogICAgICAgICAgICBvciBNZWRzIGluICJCZWJ0ZWxvdmltYWIiCiAgICAgICAgICAgIG9yIE1lZHMgaW4gIkNhc2lyaXZpbWFiIgogICAgICAgICAgICBvciBNZWRzIGluICJDYXNpcml2aW1hYiAvIEltZGV2aW1hYiIKICAgICAgICAgICAgb3IgTWVkcyBpbiAiQ09WSUQxOSBSeE5vcm0gVmFsdWUgU2V0IGZvciBUb2NpbGl6dW1hYiIKICAgICAgICAgICAgb3IgTWVkcyBpbiAiRXRlc2V2aW1hYiIKICAgICAgICAgICAgb3IgTWVkcyBpbiAiSW1kZXZpbWFiIgogICAgICAgICAgICBvciBNZWRzIGluICJNb2xudXBpcmF2aXIiCiAgICAgICAgICAgIG9yIE1lZHMgaW4gIk5pcm1hdHJlbHZpciAvIFJpdG9uYXZpciIKICAgICAgICAgICAgb3IgTWVkcyBpbiAiT3NlbHRhbWl2aXIiCiAgICAgICAgICAgIG9yIE1lZHMgaW4gIlBlcmFtaXZpciIKICAgICAgICAgICAgb3IgTWVkcyBpbiAiUmVtZGVzaXZpciIKICAgICAgICAgICAgb3IgTWVkcyBpbiAiU2FyaWx1bWFiIgogICAgICAgICAgICBvciBNZWRzIGluICJTb3Ryb3ZpbWFiIiAgICAKICAgICAgICAgICAgb3IgTWVkcyBpbiAiVG9mYWNpdGluaWIiCiAgICAgICAgICAgIG9yIE1lZHMgaW4gIlphbmFtaXZpciIpCiAgICAgIGFuZCBSUFNNZWRBZG1pbi5zdGF0dXMgfiAnY29tcGxldGVkJwogICAgICBhbmQgZXhpc3RzKCJJbml0aWFsIFBvcHVsYXRpb24iKQogICAgICBhbmQgTkhTTkhlbHBlcnMuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoUlBTTWVkQWRtaW4uZWZmZWN0aXZlKSBkdXJpbmcgIk1lYXN1cmVtZW50IFBlcmlvZCIKICAgIHJldHVybiBTaGFyZWRSZXNvdXJjZS5NZWRpY2F0aW9uQWRtaW5pc3RyYXRpb25SZXNvdXJjZShSUFNNZWRBZG1pbiwKICAgIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLWRhaWx5LW1lZGljYXRpb25hZG1pbmlzdHJhdGlvbid9fSkKCmRlZmluZSAiU0RFIENvdmlkIG9yIEluZmx1ZW56YSBNZWRpY2F0aW9uIE9yZGVyZWQiOgogIFtNZWRpY2F0aW9uUmVxdWVzdF0gUlBTTWVkUmVxdWVzdAogICAgbGV0IE1lZHM6IEdldE1lZGljYXRpb25Db2RlKFJQU01lZFJlcXVlc3QubWVkaWNhdGlvbikKICAgIHdoZXJlIChNZWRzIGluICJBbmFraW5yYSIKICAgICAgICAgICAgb3IgTWVkcyBpbiAiQmFsb3hhdmlyIgogICAgICAgICAgICBvciBNZWRzIGluICJCYW1sYW5pdmltYWIiCiAgICAgICAgICAgIG9yIE1lZHMgaW4gIkJhcmljaXRpbmliIgogICAgICAgICAgICBvciBNZWRzIGluICJCZWJ0ZWxvdmltYWIiCiAgICAgICAgICAgIG9yIE1lZHMgaW4gIkNhc2lyaXZpbWFiIgogICAgICAgICAgICBvciBNZWRzIGluICJDYXNpcml2aW1hYiAvIEltZGV2aW1hYiIKICAgICAgICAgICAgb3IgTWVkcyBpbiAiQ09WSUQxOSBSeE5vcm0gVmFsdWUgU2V0IGZvciBUb2NpbGl6dW1hYiIKICAgICAgICAgICAgb3IgTWVkcyBpbiAiRXRlc2V2aW1hYiIKICAgICAgICAgICAgb3IgTWVkcyBpbiAiSW1kZXZpbWFiIgogICAgICAgICAgICBvciBNZWRzIGluICJNb2xudXBpcmF2aXIiCiAgICAgICAgICAgIG9yIE1lZHMgaW4gIk5pcm1hdHJlbHZpciAvIFJpdG9uYXZpciIKICAgICAgICAgICAgb3IgTWVkcyBpbiAiT3NlbHRhbWl2aXIiCiAgICAgICAgICAgIG9yIE1lZHMgaW4gIlBlcmFtaXZpciIKICAgICAgICAgICAgb3IgTWVkcyBpbiAiUmVtZGVzaXZpciIKICAgICAgICAgICAgb3IgTWVkcyBpbiAiU2FyaWx1bWFiIgogICAgICAgICAgICBvciBNZWRzIGluICJTb3Ryb3ZpbWFiIiAgICAKICAgICAgICAgICAgb3IgTWVkcyBpbiAiVG9mYWNpdGluaWIiCiAgICAgICAgICAgIG9yIE1lZHMgaW4gIlphbmFtaXZpciIpCiAgICAgIGFuZCBleGlzdHMoIkluaXRpYWwgUG9wdWxhdGlvbiIpCiAgICAgIGFuZCBOSFNOSGVscGVycy4iTm9ybWFsaXplIEludGVydmFsIihSUFNNZWRSZXF1ZXN0LmF1dGhvcmVkT24pIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgcmV0dXJuIE1lZGljYXRpb25SZXF1ZXN0UmVzb3VyY2UoUlBTTWVkUmVxdWVzdCwKICAgIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLWRhaWx5LW1lZGljYXRpb25yZXF1ZXN0J319KQoKZGVmaW5lICJTREUgTWVkaWNhdGlvbiI6CiAgKCJTREUgQ292aWQgb3IgSW5mbHVlbnphIE1lZGljYXRpb24gT3JkZXJlZCIKICB1bmlvbiAiU0RFIENvdmlkIG9yIEluZmx1ZW56YSBNZWRpY2F0aW9uIEFkbWluaXN0ZXJlZCIpIE1lZFJlcU9yQWRtaW4KICB3aGVyZSBNZWRSZXFPckFkbWluLm1lZGljYXRpb24gaXMgRkhJUi5SZWZlcmVuY2UKICByZXR1cm4gU2hhcmVkUmVzb3VyY2UuTWVkaWNhdGlvblJlc291cmNlKEdldE1lZGljYXRpb25Gcm9tKE1lZFJlcU9yQWRtaW4ubWVkaWNhdGlvbiksCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtZGFpbHktbWVkaWNhdGlvbid9fSkKCi8vVG8gY2F0Y2ggYWxsIGlzb2xhdGlvbiBwcmVjYXV0aW9ucwpkZWZpbmUgIlNERSBBbGwgT2JzZXJ2YXRpb25zIjoKICAiT2JzZXJ2YXRpb25zIiBPCiAgd2hlcmUgZXhpc3RzKCJJbml0aWFsIFBvcHVsYXRpb24iKQogIHJldHVybiBPYnNlcnZhdGlvbkxhYlJlc291cmNlKE8sCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtZGFpbHktb2JzZXJ2YXRpb24nfX0pCgovL1RvIGNhdGNoIGFsbCBpc29sYXRpb24gcHJlY2F1dGlvbnMKZGVmaW5lICJTREUgQWxsIFNlcnZpY2VSZXF1ZXN0cyI6CiAgW1NlcnZpY2VSZXF1ZXN0XSBTUgogIHdoZXJlIGV4aXN0cygiSW5pdGlhbCBQb3B1bGF0aW9uIikKICByZXR1cm4gU2VydmljZVJlcXVlc3RSZXNvdXJjZShTUiwKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1kYWlseS1zZXJ2aWNlcmVxdWVzdCd9fSkKCi8vVG8gY2F0Y2ggYWxsIGlzb2xhdGlvbiBwcmVjYXV0aW9ucwpkZWZpbmUgIlNERSBBbGwgUHJvY2VkdXJlcyI6CiAgW1Byb2NlZHVyZV0gUAogIHdoZXJlIGV4aXN0cygiSW5pdGlhbCBQb3B1bGF0aW9uIikKICByZXR1cm4gU2hhcmVkUmVzb3VyY2UuUHJvY2VkdXJlUmVzb3VyY2UoUCwKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1kYWlseS1wcm9jZWR1cmUnfX0pCgoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovL2Z1bmN0aW9ucwovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRlZmluZSBmdW5jdGlvbiAiQ2hlY2tJUCIoZW5jb3VudGVyIEVuY291bnRlcik6CiAgZXhpc3RzKCJJbml0aWFsIFBvcHVsYXRpb24iIElQCiAgd2hlcmUgZW5jb3VudGVyLmlkID0gSVAuaWQpCgpkZWZpbmUgZnVuY3Rpb24gIkdldE1lZGljYXRpb24iKHJlZmVyZW5jZSBSZWZlcmVuY2UgKToKICBzaW5nbGV0b24gZnJvbSAoCiAgICBbTWVkaWNhdGlvbjogaWQgaW4ge05IU05IZWxwZXJzLkdldElkKHJlZmVyZW5jZS5yZWZlcmVuY2UpfV0KICApCgpkZWZpbmUgZnVuY3Rpb24gIkdldE1lZGljYXRpb25Db2RlIihjaG9pY2UgQ2hvaWNlPEZISVIuQ29kZWFibGVDb25jZXB0LCBGSElSLlJlZmVyZW5jZT4pOgogIGNhc2UKICAgIHdoZW4gY2hvaWNlIGlzIEZISVIuQ29kZWFibGVDb25jZXB0IHRoZW4KICAgICAgY2hvaWNlIGFzIEZISVIuQ29kZWFibGVDb25jZXB0CiAgICB3aGVuIGNob2ljZSBpcyBGSElSLlJlZmVyZW5jZSB0aGVuCiAgICAgIEdldE1lZGljYXRpb24oY2hvaWNlIGFzIEZISVIuUmVmZXJlbmNlKS5jb2RlCiAgICBlbHNlCiAgICAgIG51bGwgYXMgRkhJUi5Db2RlYWJsZUNvbmNlcHQKICBlbmQKCmRlZmluZSBmdW5jdGlvbiAiR2V0TWVkaWNhdGlvbkZyb20iKGNob2ljZSBDaG9pY2U8RkhJUi5Db2RlYWJsZUNvbmNlcHQsIEZISVIuUmVmZXJlbmNlPik6CiAgY2FzZQogICAgd2hlbiBjaG9pY2UgaXMgRkhJUi5SZWZlcmVuY2UgdGhlbgogICAgICBHZXRNZWRpY2F0aW9uKGNob2ljZSBhcyBGSElSLlJlZmVyZW5jZSkKICAgIGVsc2UKICAgICAgbnVsbAogIGVuZAoKZGVmaW5lIGZ1bmN0aW9uICJHZXRTcGVjaW1lbiIocmVmZXJlbmNlIEZISVIuUmVmZXJlbmNlKToKICBzaW5nbGV0b24gZnJvbSAoCiAgICBbU3BlY2ltZW5dIFNwZWNpbWVucwogICAgd2hlcmUgU3BlY2ltZW5zLmlkID0gTkhTTkhlbHBlcnMuR2V0SWQocmVmZXJlbmNlLnJlZmVyZW5jZSkKICApCgpkZWZpbmUgZnVuY3Rpb24gIkdldEVuY291bnRlciIocmVmZXJlbmNlIEZISVIuUmVmZXJlbmNlKToKICBzaW5nbGV0b24gZnJvbSAoCiAgICAiRW5jb3VudGVycyIgRW5jb3VudGVycwogICAgd2hlcmUgRW5jb3VudGVycy5pZCA9IE5IU05IZWxwZXJzLkdldElkKHJlZmVyZW5jZS5yZWZlcmVuY2UpCiAgKQoKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiByZWZlcmVuY2VzKHJlZmVyZW5jZSBGSElSLlJlZmVyZW5jZSwgcmVzb3VyY2UgRkhJUi5SZXNvdXJjZSk6CiAgcmVzb3VyY2UuaWQgPSBMYXN0KFNwbGl0KHJlZmVyZW5jZS5yZWZlcmVuY2UsICcvJykpCgpkZWZpbmUgZmx1ZW50IGZ1bmN0aW9uIHJlZmVyZW5jZXMocmVmZXJlbmNlcyBMaXN0PEZISVIuUmVmZXJlbmNlPiwgcmVzb3VyY2UgRkhJUi5SZXNvdXJjZSk6CiAgZXhpc3RzKHJlZmVyZW5jZXMgUiB3aGVyZSBSLnJlZmVyZW5jZXMocmVzb3VyY2UpKQoKLy9Db21tb24gUmV0cmlldmFscwpkZWZpbmUgIkVuY291bnRlcnMiOgogIFtFbmNvdW50ZXJdCgpkZWZpbmUgIk9ic2VydmF0aW9ucyI6CiAgW09ic2VydmF0aW9uXQoKZGVmaW5lICJEaWFnbm9zdGljUmVwb3J0cyI6CiAgW0RpYWdub3N0aWNSZXBvcnRdCgogLy8KIC8vIE1lYXN1cmUgU3BlY2lmaWMgUmVzb3VyY2UgQ3JlYXRpb24gRnVuY3Rpb25zCiAvLwpkZWZpbmUgZnVuY3Rpb24gRW5jb3VudGVySG9zcGl0YWxpemF0aW9uKGhvc3BpdGFsaXphdGlvbiBGSElSLkVuY291bnRlci5Ib3NwaXRhbGl6YXRpb24pOgogIGhvc3BpdGFsaXphdGlvbiBoCiAgcmV0dXJuIEZISVIuRW5jb3VudGVyLkhvc3BpdGFsaXphdGlvbnsKICAgIGV4dGVuc2lvbjogaC5leHRlbnNpb24sCiAgICBwcmVBZG1pc3Npb25JZGVudGlmaWVyOiBoLnByZUFkbWlzc2lvbklkZW50aWZpZXIsCiAgICBvcmlnaW46IGgub3JpZ2luLAogICAgYWRtaXRTb3VyY2U6IGguYWRtaXRTb3VyY2UsCiAgICByZUFkbWlzc2lvbjogaC5yZUFkbWlzc2lvbiwKICAgIGRpZXRQcmVmZXJlbmNlOiBoLmRpZXRQcmVmZXJlbmNlLAogICAgc3BlY2lhbENvdXJ0ZXN5OiBoLnNwZWNpYWxDb3VydGVzeSwKICAgIHNwZWNpYWxBcnJhbmdlbWVudDogaC5zcGVjaWFsQXJyYW5nZW1lbnQsCiAgICBkZXN0aW5hdGlvbjogaC5kZXN0aW5hdGlvbiwKICAgIGRpc2NoYXJnZURpc3Bvc2l0aW9uOiBoLmRpc2NoYXJnZURpc3Bvc2l0aW9uCiAgfQoKZGVmaW5lIGZ1bmN0aW9uIEVuY291bnRlclJlc291cmNlKGVuY291bnRlciBFbmNvdW50ZXIsIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+KToKICBlbmNvdW50ZXIgZQogIHJldHVybiBFbmNvdW50ZXJ7CiAgICBpZDogRkhJUi5pZHt2YWx1ZTogJ0xDUi0nICsgZS5pZH0sCiAgICBtZXRhOiBTaGFyZWRSZXNvdXJjZS5NZXRhRWxlbWVudChlLCBwcm9maWxlVVJMcyksCiAgICBleHRlbnNpb246IGUuZXh0ZW5zaW9uLAogICAgaWRlbnRpZmllcjogU2hhcmVkUmVzb3VyY2UuRW5jb3VudGVySWRlbnRpZmllcihlLmlkZW50aWZpZXIpLAogICAgc3RhdHVzOiBlLnN0YXR1cywKICAgIHN0YXR1c0hpc3Rvcnk6IFNoYXJlZFJlc291cmNlLkVuY291bnRlclN0YXR1c0hpc3RvcnkoZS5zdGF0dXNIaXN0b3J5KSwKICAgIGNsYXNzOiBlLmNsYXNzLAogICAgY2xhc3NIaXN0b3J5OiBTaGFyZWRSZXNvdXJjZS5FbmNvdW50ZXJDbGFzc0hpc3RvcnkoZS5jbGFzc0hpc3RvcnkpLAogICAgdHlwZTogZS50eXBlLAogICAgc2VydmljZVR5cGU6IGUuc2VydmljZVR5cGUsCiAgICBwcmlvcml0eTogZS5wcmlvcml0eSwKICAgIHN1YmplY3Q6IGUuc3ViamVjdCwKICAgIHBlcmlvZDogZS5wZXJpb2QsCiAgICBsZW5ndGg6IGUubGVuZ3RoLAogICAgcmVhc29uQ29kZTogZS5yZWFzb25Db2RlLAogICAgcmVhc29uUmVmZXJlbmNlOiBlLnJlYXNvblJlZmVyZW5jZSwKICAgIGRpYWdub3NpczogU2hhcmVkUmVzb3VyY2UuRW5jb3VudGVyRGlhZ25vc2lzKGUuZGlhZ25vc2lzKSwKICAgIGFjY291bnQ6IGUuYWNjb3VudCwKICAgIGhvc3BpdGFsaXphdGlvbjogRW5jb3VudGVySG9zcGl0YWxpemF0aW9uKGUuaG9zcGl0YWxpemF0aW9uKSwKICAgIGxvY2F0aW9uOiBTaGFyZWRSZXNvdXJjZS5FbmNvdW50ZXJMb2NhdGlvbihlLmxvY2F0aW9uKSwKICAgIHBhcnRPZjogZS5wYXJ0T2YKICB9CgpkZWZpbmUgZnVuY3Rpb24gTWVkaWNhdGlvblJlcXVlc3RSZXBlYXQocmVwZWF0IEZISVIuVGltaW5nLlJlcGVhdCk6CiAgcmVwZWF0IHIKICByZXR1cm4gRkhJUi5UaW1pbmcuUmVwZWF0ewogICAgYm91bmRzOiByLmJvdW5kcywKICAgIGNvdW50OiByLmNvdW50LAogICAgY291bnRNYXg6IHIuY291bnRNYXgsCiAgICAiZHVyYXRpb24iOiByLiJkdXJhdGlvbiIsCiAgICBkdXJhdGlvbk1heDogci5kdXJhdGlvbk1heCwKICAgIGR1cmF0aW9uVW5pdDogci5kdXJhdGlvblVuaXQsCiAgICBmcmVxdWVuY3k6IHIuZnJlcXVlbmN5LAogICAgZnJlcXVlbmN5TWF4OiByLmZyZXF1ZW5jeU1heCwKICAgIHBlcmlvZDogci5wZXJpb2QsCiAgICBwZXJpb2RNYXg6IHIucGVyaW9kTWF4LAogICAgcGVyaW9kVW5pdDogci5wZXJpb2RVbml0LAogICAgZGF5T2ZXZWVrOiByLmRheU9mV2VlaywKICAgIHRpbWVPZkRheTogci50aW1lT2ZEYXksCiAgICAid2hlbiI6IHIuIndoZW4iLAogICAgb2Zmc2V0OiByLm9mZnNldAogIH0KCmRlZmluZSBmdW5jdGlvbiBNZWRpY2F0aW9uUmVxdWVzdFRpbWluZyh0aW1pbmcgRkhJUi5UaW1pbmcpOgogIHRpbWluZyB0CiAgcmV0dXJuIEZISVIuVGltaW5newogICAgZXZlbnQ6IHQuZXZlbnQsCiAgICByZXBlYXQ6IE1lZGljYXRpb25SZXF1ZXN0UmVwZWF0KHQucmVwZWF0KSwKICAgIGNvZGU6IHQuY29kZQogIH0KCmRlZmluZSBmdW5jdGlvbiBNZWRpY2F0aW9uUmVxdWVzdERvc2FnZUluc3RydWN0aW9uKGRvc2FnZUluc3RydWN0aW9uIExpc3Q8RkhJUi5Eb3NhZ2U+KToKICBkb3NhZ2VJbnN0cnVjdGlvbiBkSQogIHJldHVybiBGSElSLkRvc2FnZXsKICAgIHRleHQ6IGRJLnRleHQsCiAgICBwYXRpZW50SW5zdHJ1Y3Rpb246IGRJLnBhdGllbnRJbnN0cnVjdGlvbiwKICAgIHRpbWluZzogTWVkaWNhdGlvblJlcXVlc3RUaW1pbmcoZEkudGltaW5nKSwKICAgIGFzTmVlZGVkOiBkSS5hc05lZWRlZCwKICAgIHNpdGU6IGRJLnNpdGUsCiAgICByb3V0ZTogZEkucm91dGUsCiAgICBtZXRob2Q6IGRJLm1ldGhvZCwKICAgIGRvc2VBbmRSYXRlOiBTaGFyZWRSZXNvdXJjZS5NZWRpY2F0aW9uUmVxdWVzdERvc2VBbmRSYXRlKGRJLmRvc2VBbmRSYXRlKQogIH0KCiBkZWZpbmUgZnVuY3Rpb24gTWVkaWNhdGlvblJlcXVlc3RSZXNvdXJjZShtZWRpY2F0aW9uUmVxdWVzdCBNZWRpY2F0aW9uUmVxdWVzdCwgcHJvZmlsZVVSTHMgTGlzdDxGSElSLmNhbm9uaWNhbD4pOgogIG1lZGljYXRpb25SZXF1ZXN0IG0KICByZXR1cm4gTWVkaWNhdGlvblJlcXVlc3R7CiAgICBpZDogRkhJUi5pZCB7dmFsdWU6ICdMQ1ItJyArIG0uaWR9LAogICAgbWV0YTogU2hhcmVkUmVzb3VyY2UuTWV0YUVsZW1lbnQobWVkaWNhdGlvblJlcXVlc3QsIHByb2ZpbGVVUkxzKSwKICAgIGV4dGVuc2lvbjogbS5leHRlbnNpb24sCiAgICBzdGF0dXM6IG0uc3RhdHVzLAogICAgaW50ZW50OiBtLmludGVudCwKICAgIGNhdGVnb3J5OiBtLmNhdGVnb3J5LAogICAgcHJpb3JpdHk6IG0ucHJpb3JpdHksCiAgICBkb05vdFBlcmZvcm06IG0uZG9Ob3RQZXJmb3JtLAogICAgcmVwb3J0ZWQ6IG0ucmVwb3J0ZWQsCiAgICBtZWRpY2F0aW9uOiBtLm1lZGljYXRpb24sCiAgICBzdWJqZWN0OiBtLnN1YmplY3QsCiAgICBlbmNvdW50ZXI6IG0uZW5jb3VudGVyLAogICAgYXV0aG9yZWRPbjogbS5hdXRob3JlZE9uLAogICAgcmVxdWVzdGVyOiBtLnJlcXVlc3RlciwKICAgIHJlY29yZGVyOiBtLnJlY29yZGVyLAogICAgcmVhc29uQ29kZTogbS5yZWFzb25Db2RlLAogICAgcmVhc29uUmVmZXJlbmNlOiBtLnJlYXNvblJlZmVyZW5jZSwKICAgIGluc3RhbnRpYXRlc0Nhbm9uaWNhbDogbS5pbnN0YW50aWF0ZXNDYW5vbmljYWwsCiAgICBpbnN0YW50aWF0ZXNVcmk6IG0uaW5zdGFudGlhdGVzVXJpLAogICAgY291cnNlT2ZUaGVyYXB5VHlwZTogbS5jb3Vyc2VPZlRoZXJhcHlUeXBlLAogICAgZG9zYWdlSW5zdHJ1Y3Rpb246IE1lZGljYXRpb25SZXF1ZXN0RG9zYWdlSW5zdHJ1Y3Rpb24obS5kb3NhZ2VJbnN0cnVjdGlvbikKICB9CgpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25MYWJDb2RpbmcoY29kaW5nIExpc3Q8Q29kaW5nPik6CiAgY29kaW5nIGMKICByZXR1cm4gQ29kaW5newogICAgc3lzdGVtOiBjLnN5c3RlbSwKICAgIHZlcnNpb246IGMudmVyc2lvbiwKICAgIGNvZGU6IGMuY29kZSwKICAgIGRpc3BsYXk6IGMuZGlzcGxheSwKICAgIHVzZXJTZWxlY3RlZDogYy51c2VyU2VsZWN0ZWQKICB9CgpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25MYWJDYXRlZ29yeShjYXRlZ29yeSBMaXN0PENvZGVhYmxlQ29uY2VwdD4pOgogIGNhdGVnb3J5IGMKICByZXR1cm4gQ29kZWFibGVDb25jZXB0ewogICAgY29kaW5nOiBPYnNlcnZhdGlvbkxhYkNvZGluZyhjLmNvZGluZyksCiAgICB0ZXh0OiBjLnRleHQKICB9CgpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25MYWJSZXNvdXJjZShvYnNlcnZhdGlvbiBPYnNlcnZhdGlvbiwgcHJvZmlsZVVSTHMgTGlzdDxGSElSLmNhbm9uaWNhbD4pOgogIG9ic2VydmF0aW9uIG8KICByZXR1cm4gT2JzZXJ2YXRpb257CiAgICBpZDogRkhJUi5pZCB7dmFsdWU6ICdMQ1ItJyArIG8uaWR9LAogICAgbWV0YTogU2hhcmVkUmVzb3VyY2UuTWV0YUVsZW1lbnQobywgcHJvZmlsZVVSTHMpLAogICAgZXh0ZW5zaW9uOiBvLmV4dGVuc2lvbiwKICAgIGJhc2VkT246IG8uYmFzZWRPbiwKICAgIHBhcnRPZjogby5wYXJ0T2YsCiAgICBzdGF0dXM6IG8uc3RhdHVzLAogICAgY2F0ZWdvcnk6IE9ic2VydmF0aW9uTGFiQ2F0ZWdvcnkoby5jYXRlZ29yeSksCiAgICBjb2RlOiBvLmNvZGUsCiAgICBzdWJqZWN0OiBvLnN1YmplY3QsCiAgICBmb2N1czogby5mb2N1cywKICAgIGVuY291bnRlcjogby5lbmNvdW50ZXIsCiAgICBlZmZlY3RpdmU6IG8uZWZmZWN0aXZlLAogICAgaXNzdWVkOiBvLmlzc3VlZCwKICAgIHBlcmZvcm1lcjogby5wZXJmb3JtZXIsCiAgICB2YWx1ZTogby52YWx1ZSwKICAgIGRhdGFBYnNlbnRSZWFzb246IG8uZGF0YUFic2VudFJlYXNvbiwKICAgIGludGVycHJldGF0aW9uOiBvLmludGVycHJldGF0aW9uLAogICAgbm90ZTogby5ub3RlLAogICAgYm9keVNpdGU6IG8uYm9keVNpdGUsCiAgICBtZXRob2Q6IG8ubWV0aG9kLAogICAgc3BlY2ltZW46IG8uc3BlY2ltZW4sCiAgICBkZXZpY2U6IG8uZGV2aWNlLAogICAgcmVmZXJlbmNlUmFuZ2U6IFNoYXJlZFJlc291cmNlLk9ic2VydmF0aW9uUmVmZXJlbmNlUmFuZ2Uoby5yZWZlcmVuY2VSYW5nZSksCiAgICBoYXNNZW1iZXI6IG8uaGFzTWVtYmVyLAogICAgZGVyaXZlZEZyb206IG8uZGVyaXZlZEZyb20sCiAgICBjb21wb25lbnQ6IFNoYXJlZFJlc291cmNlLk9ic2VydmF0aW9uQ29tcG9uZW50KG8uY29tcG9uZW50KQogIH0KCmRlZmluZSBmdW5jdGlvbiAiR2V0UHJvY2VkdXJlRXh0ZW5zaW9ucyIoZG9tYWluUmVzb3VyY2UgRG9tYWluUmVzb3VyY2UpOgogIGRvbWFpblJlc291cmNlLmV4dGVuc2lvbiBFCiAgICB3aGVyZSBFLnVybCAhPSAnaHR0cDovL2hsNy5vcmcvZmhpci91cy9xaWNvcmUvU3RydWN0dXJlRGVmaW5pdGlvbi9xaWNvcmUtcmVjb3JkZWQnCiAgICAgcmV0dXJuIEUKCmRlZmluZSBmdW5jdGlvbiBQcm9jZWR1cmVSZXNvdXJjZShwcm9jZWR1cmUgUHJvY2VkdXJlLCBwcm9maWxlVVJMcyBMaXN0PEZISVIuY2Fub25pY2FsPik6CiAgcHJvY2VkdXJlIHAKICByZXR1cm4gUHJvY2VkdXJlewogICAgaWQ6IEZISVIuaWQge3ZhbHVlOiAnTENSLScgKyBwLmlkfSwKICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KHAsIHByb2ZpbGVVUkxzKSwKICAgIGV4dGVuc2lvbjogR2V0UHJvY2VkdXJlRXh0ZW5zaW9ucyhwKSwgCiAgICBpbnN0YW50aWF0ZXNDYW5vbmljYWw6IHAuaW5zdGFudGlhdGVzQ2Fub25pY2FsLAogICAgaW5zdGFudGlhdGVzVXJpOiBwLmluc3RhbnRpYXRlc1VyaSwKICAgIGJhc2VkT246IHAuYmFzZWRPbiwKICAgIHBhcnRPZjogcC5wYXJ0T2YsCiAgICBzdGF0dXM6IHAuc3RhdHVzLAogICAgc3RhdHVzUmVhc29uOiBwLnN0YXR1c1JlYXNvbiwKICAgIGNhdGVnb3J5OiBwLmNhdGVnb3J5LAogICAgY29kZTogcC5jb2RlLAogICAgc3ViamVjdDogcC5zdWJqZWN0LAogICAgZW5jb3VudGVyOiBwLmVuY291bnRlciwKICAgIHBlcmZvcm1lZDogcC5wZXJmb3JtZWQsCiAgICByZWNvcmRlcjogcC5yZWNvcmRlciwKICAgIGFzc2VydGVyOiBwLmFzc2VydGVyLAogICAgcGVyZm9ybWVyOiBTaGFyZWRSZXNvdXJjZS5Qcm9jZWR1cmVQZXJmb3JtZXIocC5wZXJmb3JtZXIpLAogICAgbG9jYXRpb246IHAubG9jYXRpb24sCiAgICByZWFzb25Db2RlOiBwLnJlYXNvbkNvZGUsCiAgICByZWFzb25SZWZlcmVuY2U6IHAucmVhc29uUmVmZXJlbmNlLAogICAgYm9keVNpdGU6IHAuYm9keVNpdGUsCiAgICBvdXRjb21lOiBwLm91dGNvbWUsCiAgICByZXBvcnQ6IHAucmVwb3J0LAogICAgY29tcGxpY2F0aW9uOiBwLmNvbXBsaWNhdGlvbiwKICAgIGNvbXBsaWNhdGlvbkRldGFpbDogcC5jb21wbGljYXRpb25EZXRhaWwsCiAgICBmb2xsb3dVcDogcC5mb2xsb3dVcCwKICAgIG5vdGU6IHAubm90ZSwKICAgIGZvY2FsRGV2aWNlOiBTaGFyZWRSZXNvdXJjZS5Qcm9jZWR1cmVGb2NhbERldmljZShwLmZvY2FsRGV2aWNlKSwKICAgIHVzZWRSZWZlcmVuY2U6IHAudXNlZFJlZmVyZW5jZSwKICAgIHVzZWRDb2RlOiBwLnVzZWRDb2RlCiAgfQoKZGVmaW5lIGZ1bmN0aW9uIFNlcnZpY2VSZXF1ZXN0UmVzb3VyY2Uoc2VydmljZVJlcXVlc3QgU2VydmljZVJlcXVlc3QsIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+KToKICBzZXJ2aWNlUmVxdWVzdCBzUgogIHJldHVybiBTZXJ2aWNlUmVxdWVzdHsKICAgIGlkOiBGSElSLmlkIHt2YWx1ZTogJ0xDUi0nICsgc1IuaWR9LAogICAgbWV0YTogU2hhcmVkUmVzb3VyY2UuTWV0YUVsZW1lbnQoc1IsIHByb2ZpbGVVUkxzKSwKICAgIGV4dGVuc2lvbjogc1IuZXh0ZW5zaW9uLAogICAgaW5zdGFudGlhdGVzQ2Fub25pY2FsOiBzUi5pbnN0YW50aWF0ZXNDYW5vbmljYWwsCiAgICBpbnN0YW50aWF0ZXNVcmk6IHNSLmluc3RhbnRpYXRlc1VyaSwKICAgIGJhc2VkT246IHNSLmJhc2VkT24sCiAgICByZXBsYWNlczogc1IucmVwbGFjZXMsCiAgICByZXF1aXNpdGlvbjogc1IucmVxdWlzaXRpb24sCiAgICBzdGF0dXM6IHNSLnN0YXR1cywKICAgIGludGVudDogc1IuaW50ZW50LAogICAgY2F0ZWdvcnk6IHNSLmNhdGVnb3J5LAogICAgcHJpb3JpdHk6IHNSLnByaW9yaXR5LAogICAgZG9Ob3RQZXJmb3JtOiBzUi5kb05vdFBlcmZvcm0sCiAgICBjb2RlOiBzUi5jb2RlLAogICAgb3JkZXJEZXRhaWw6IHNSLm9yZGVyRGV0YWlsLAogICAgcXVhbnRpdHk6IHNSLnF1YW50aXR5LAogICAgc3ViamVjdDogc1Iuc3ViamVjdCwKICAgIGVuY291bnRlcjogc1IuZW5jb3VudGVyLAogICAgb2NjdXJyZW5jZTogc1Iub2NjdXJyZW5jZSwKICAgIGFzTmVlZGVkOiBzUi5hc05lZWRlZCwKICAgIGF1dGhvcmVkT246IHNSLmF1dGhvcmVkT24sCiAgICBwZXJmb3JtZXJUeXBlOiBzUi5wZXJmb3JtZXJUeXBlLAogICAgcGVyZm9ybWVyOiBzUi5wZXJmb3JtZXIsCiAgICBsb2NhdGlvbkNvZGU6IHNSLmxvY2F0aW9uQ29kZSwKICAgIGxvY2F0aW9uUmVmZXJlbmNlOiBzUi5sb2NhdGlvblJlZmVyZW5jZSwKICAgIHJlYXNvbkNvZGU6IHNSLnJlYXNvbkNvZGUsCiAgICByZWFzb25SZWZlcmVuY2U6IHNSLnJlYXNvblJlZmVyZW5jZSwKICAgIGluc3VyYW5jZTogc1IuaW5zdXJhbmNlLAogICAgc3VwcG9ydGluZ0luZm86IHNSLnN1cHBvcnRpbmdJbmZvLAogICAgc3BlY2ltZW46IHNSLnNwZWNpbWVuLAogICAgYm9keVNpdGU6IHNSLmJvZHlTaXRlLAogICAgbm90ZTogc1Iubm90ZSwKICAgIHBhdGllbnRJbnN0cnVjdGlvbjogc1IucGF0aWVudEluc3RydWN0aW9uLAogICAgcmVsZXZhbnRIaXN0b3J5OiBzUi5yZWxldmFudEhpc3RvcnkKICB9CiAgICAKICAgIA==",
"url" : "http://www.cdc.gov/nhsn/fhirportal/dqm/ig/NHSNAcuteCareHospitalDailyInitialPopulation.cql"
}
]
}