dQM CMS Content Implementation Guide
2026.1.0 - CI Build
dQM CMS Content Implementation Guide, published by cqframework. This guide is not an authorized publication; it is the continuous build for version 2026.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/cqframework/dqm-content-cms-2026/ and changes regularly. See the Directory of published versions
| Page standards status: Informative | Maturity Level: 1 |
{
"resourceType" : "Library",
"id" : "Status",
"text" : {
"status" : "extensions",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n <table class=\"narrative-table\">\n <tbody>\n<tr>\n\n\n<th colspan=\"2\" scope=\"row\" class=\"row-header\">Metadata</th>\n\n\n</tr>\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Title</th>\n\n\n\n<td class=\"content-container\">Status</td>\n\n\n</tr>\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Version</th>\n\n\n\n<td class=\"content-container\">2026.1.0</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Topic</th>\n\n\n\n<td class=\"content-container\">FHIR\n</td>\n\n\n</tr>\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Topic</th>\n\n\n\n<td class=\"content-container\">CQL\n</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n\n\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Description</th>\n\n\n\n<td class=\"content-container\"><div><p>Status logic.</p>\n</div></td>\n\n\n</tr>\n\n\n\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Type</th>\n\n\n\n<td class=\"content-container\">\n logic-library from <a href=\"http://terminology.hl7.org/7.3.0/CodeSystem-library-type.html\">http://terminology.hl7.org/CodeSystem/library-type</a> \n\n\n</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n<tr>\n\n\n<th colspan=\"2\" scope=\"row\" class=\"row-header\"><a name=\"parameters\"> </a>Parameters</th>\n\n\n</tr>\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Parameter</th>\n\n\n\n<td class=\"content-container\">None</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n <tr>\n\n\n<th colspan=\"2\" scope=\"row\" class=\"row-header\">Library Content</th>\n\n\n</tr>\n \n \n <tr>\n <th scope=\"row\" class=\"row-header\">CQL Content</th>\n <td>\n <a name=\"cql-content\"> </a>\n <pre style=\"border: none;\" class=\"content-container highlight language-cql\"><code class=\"language-cql\">/*\n@description: This library contains functions used to constrain FHIR resource elements for measures \nauthored by NCQA, based on QICore 7.0.0 resources then refactoring to use USQualityCore 0.1.0 including IG and authoring patterns. The functions \nmay appear similar to some QICoreCommon functions but differ in that they have constraints that are \nrelevant for measures authored by NCQA.\n\nNOTE: For use by March 2026 US Realm Connectathon participants for internal use only. Not for use or distribution in commercial products.\n*/\nlibrary Status version '2.1.000'\n\nusing USQualityCore version '0.5.0'\nusing USCore version '6.1.0-derived'\nusing FHIR version '4.0.1'\n\ninclude hl7.fhir.uv.cql.FHIRHelpers version '4.0.1' called FHIRHelpers\ninclude hl7.fhir.uv.cql.FHIRCommon version '2.0.0' called FHIRCommon\n\n// TODO: Consider whether to refactor to use the FHIRCommon declarations here\ncodesystem "ObservationCategoryCodes": 'http://terminology.hl7.org/CodeSystem/observation-category'\ncodesystem "ConditionVerificationStatusCodes": 'http://terminology.hl7.org/CodeSystem/condition-ver-status'\n\ncode "exam": 'exam' from "ObservationCategoryCodes" display 'exam'\ncode "imaging": 'imaging' from "ObservationCategoryCodes" display 'imaging'\ncode "confirmed": 'confirmed' from ConditionVerificationStatusCodes display 'confirmed'\ncode "unconfirmed": 'unconfirmed' from ConditionVerificationStatusCodes display 'unconfirmed'\ncode "provisional": 'provisional' from ConditionVerificationStatusCodes display 'provisional'\ncode "differential": 'differential' from ConditionVerificationStatusCodes display 'differential'\ncode "entered-in-error": 'entered-in-error' from ConditionVerificationStatusCodes display 'entered-in-error'\ncode "refuted": 'refuted' from ConditionVerificationStatusCodes display 'refuted'\ncode "inactive": 'inactive' from ConditionVerificationStatusCodes display 'inactive'\ncode "resolved": 'resolved' from ConditionVerificationStatusCodes display 'resolved'\ncode "remission": 'remission' from ConditionVerificationStatusCodes display 'remission'\n\ncontext Patient\n\n// TODO: Deprecate because this is now in FHIRCommon\n//Condition\n/*\n@description: Returns conditions in the given list that either have no verification status or have a verification status of confirmed, unconfirmed, provisional, or differential\n@deprecated: Use the USCoreCommon verified function insteada\n*/\ndefine fluent function verified(conditions List<Choice<ConditionProblemsHealthConcerns, ConditionEncounterDiagnosis>>):\n conditions C\n where C.verificationStatus is not null implies\n (C.verificationStatus ~ "confirmed"\n or C.verificationStatus ~ "unconfirmed"\n or C.verificationStatus ~ "provisional"\n or C.verificationStatus ~ "differential"\n )\n\n//Assessment, Performed\ndefine fluent function isAssessmentPerformed(Obs List<ObservationScreeningAssessment>):\n Obs O\n where O.status in { 'final', 'amended', 'corrected' }\n\n//Device, Order - Personal Use Devices\ndefine fluent function isDeviceOrderPersonalUseDevices(DeviceRequest List<FHIR.DeviceRequest>):\n DeviceRequest D\n where D.status in { 'active', 'completed' }\n and D.intent in {'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order'}\n\n//Diagnostic Study, Order\ndefine fluent function isDiagnosticStudyOrder(ServiceRequest List<FHIR.ServiceRequest>):\n ServiceRequest S\n where S.status in { 'active', 'completed' }\n and S.intent in {'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order'}\n \n//Intervention, Order\ndefine fluent function isInterventionOrder(ServiceRequest List<FHIR.ServiceRequest>):\n ServiceRequest S\n where S.status in { 'active', 'completed' }\n and S.intent in {'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order'} \n\n//Laboratory Test, Order\ndefine fluent function isLaboratoryTestOrder(ServiceRequest List<FHIR.ServiceRequest>):\n ServiceRequest S\n where S.status in { 'active', 'completed' }\n and S.intent in {'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order'} \n\n//Diagnostic Study, Performed\ndefine fluent function isDiagnosticStudyPerformed(Obs List<ObservationClinicalResult>):\n Obs O\n where O.status in { 'final', 'amended', 'corrected' }\n and exists ( O.category ObservationCategory\n where ( ObservationCategory ) ~ "imaging"\n )\n \n//Encounter, Performed\n//General usage unless required otherwise by measure intent (e.g., follow-up encounters)\ndefine fluent function isEncounterPerformed(Enc List<FHIR.Encounter>):\n Enc E\n where E.status = 'finished'\n\n//Immunization, Administered\ndefine fluent function isImmunizationAdministered(Immunization List<FHIR.Immunization>):\n Immunization I\n where I.status ~ 'completed'\n\n//Intervention, Performed\ndefine fluent function isInterventionPerformed(Proc List<FHIR.Procedure>):\n Proc P\n where P.status ~ 'completed'\n\n//Procedure, Performed\ndefine fluent function isProcedurePerformed(Proc List<FHIR.Procedure>):\n Proc P\n where P.status ~ 'completed'\n\n//Laboratory Test, Performed\ndefine fluent function isLaboratoryTestPerformed(Obs List<LaboratoryResultObservation>):\n Obs O\n where O.status in { 'final', 'amended', 'corrected' }\n\n//Medication, Active\ndefine fluent function isMedicationActive(MedicationRequest List<FHIR.MedicationRequest>):\n MedicationRequest M\n where M.status = 'active'\n and M.intent in {'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order'}\n\n//Medication, Dispensed\ndefine fluent function isMedicationDispensed(Med List<FHIR.MedicationDispense>):\n Med M\n where M.status in { 'completed', 'in-progress', 'on-hold' }\n\n//Medication, Order\ndefine fluent function isMedicationOrder(MedicationRequest List<FHIR.MedicationRequest>):\n MedicationRequest M\n where M.status in { 'active', 'completed' }\n and M.intent in {'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order'}\n\n//Physical Exam, Performed\ndefine fluent function isPhysicalExamPerformed(Obs List<ObservationClinicalResult>):\n Obs O\n where O.status in { 'final', 'amended', 'corrected' }\n and exists ( O.category ObservationCategory\n where ( ObservationCategory ) ~ "exam"\n )\n\n//Observation Vital Signs\ndefine fluent function isObservationBP(Obs List<BloodPressureProfile>):\n Obs O\n where O.status in { 'final', 'amended', 'corrected' }\n \ndefine fluent function isObservationBodyHeight(Obs List<BodyHeightProfile>):\n Obs O\n where O.status in { 'final', 'amended', 'corrected' }\n \ndefine fluent function isObservationBodyWeight(Obs List<BodyWeightProfile>):\n Obs O\n where O.status in { 'final', 'amended', 'corrected' }\n \ndefine fluent function isObservationBMI(Obs List<BMIProfile>):\n Obs O\n where O.status in { 'final', 'amended', 'corrected' }\n \n//Observation Pediatric BMI\ndefine fluent function isObservationPediatricBMI(Obs List<PediatricBMIforAgeObservationProfile>):\n Obs O\n where O.status in { 'final', 'amended', 'corrected' } \n \n//Observation Smoking Status\ndefine fluent function isObservationSmokingStatus(Obs List<SmokingStatusProfile>):\n Obs O\n where O.status = 'final' \n\n//Symptom\ndefine fluent function isSymptom(Obs List<SimpleObservation>):\n Obs O\n where O.status in { 'preliminary', 'final', 'amended', 'corrected' }</code></pre>\n </td>\n </tr>\n \n \n\n<tr>\n <th colspan=\"2\" scope=\"row\" class=\"row-header\">Generated using version 0.5.6-cibuild of the sample-content-ig Liquid templates</th>\n</tr>\n\n </tbody>\n </table>\n</div>"
},
"extension" : [
{
"url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm",
"valueInteger" : 1
},
{
"url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg",
"valueCode" : "cds"
},
{
"url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status",
"valueCode" : "informative"
}
],
"url" : "https://madie.cms.gov/Library/Status",
"version" : "2026.1.0",
"name" : "Status",
"title" : "Status",
"status" : "active",
"experimental" : false,
"type" : {
"coding" : [
{
"system" : "http://terminology.hl7.org/CodeSystem/library-type",
"code" : "logic-library"
}
]
},
"date" : "2026-07-30T20:17:17+00:00",
"description" : "Status logic.",
"topic" : [
{
"text" : "FHIR"
},
{
"text" : "CQL"
}
],
"content" : [
{
"contentType" : "text/cql",
"data" : "LyoKQGRlc2NyaXB0aW9uOiBUaGlzIGxpYnJhcnkgY29udGFpbnMgZnVuY3Rpb25zIHVzZWQgdG8gY29uc3RyYWluIEZISVIgcmVzb3VyY2UgZWxlbWVudHMgZm9yIG1lYXN1cmVzIAphdXRob3JlZCBieSBOQ1FBLCBiYXNlZCBvbiBRSUNvcmUgNy4wLjAgcmVzb3VyY2VzIHRoZW4gcmVmYWN0b3JpbmcgdG8gdXNlIFVTUXVhbGl0eUNvcmUgMC4xLjAgaW5jbHVkaW5nIElHIGFuZCBhdXRob3JpbmcgcGF0dGVybnMuIFRoZSBmdW5jdGlvbnMgCm1heSBhcHBlYXIgc2ltaWxhciB0byBzb21lIFFJQ29yZUNvbW1vbiBmdW5jdGlvbnMgYnV0IGRpZmZlciBpbiB0aGF0IHRoZXkgaGF2ZSBjb25zdHJhaW50cyB0aGF0IGFyZSAKcmVsZXZhbnQgZm9yIG1lYXN1cmVzIGF1dGhvcmVkIGJ5IE5DUUEuCgpOT1RFOiBGb3IgdXNlIGJ5IE1hcmNoIDIwMjYgVVMgUmVhbG0gQ29ubmVjdGF0aG9uIHBhcnRpY2lwYW50cyBmb3IgaW50ZXJuYWwgdXNlIG9ubHkuIE5vdCBmb3IgdXNlIG9yIGRpc3RyaWJ1dGlvbiBpbiBjb21tZXJjaWFsIHByb2R1Y3RzLgoqLwpsaWJyYXJ5IFN0YXR1cyB2ZXJzaW9uICcyLjEuMDAwJwoKdXNpbmcgVVNRdWFsaXR5Q29yZSB2ZXJzaW9uICcwLjUuMCcKdXNpbmcgVVNDb3JlIHZlcnNpb24gJzYuMS4wLWRlcml2ZWQnCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIGhsNy5maGlyLnV2LmNxbC5GSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScgY2FsbGVkIEZISVJIZWxwZXJzCmluY2x1ZGUgaGw3LmZoaXIudXYuY3FsLkZISVJDb21tb24gdmVyc2lvbiAnMi4wLjAnIGNhbGxlZCBGSElSQ29tbW9uCgovLyBUT0RPOiBDb25zaWRlciB3aGV0aGVyIHRvIHJlZmFjdG9yIHRvIHVzZSB0aGUgRkhJUkNvbW1vbiBkZWNsYXJhdGlvbnMgaGVyZQpjb2Rlc3lzdGVtICJPYnNlcnZhdGlvbkNhdGVnb3J5Q29kZXMiOiAnaHR0cDovL3Rlcm1pbm9sb2d5LmhsNy5vcmcvQ29kZVN5c3RlbS9vYnNlcnZhdGlvbi1jYXRlZ29yeScKY29kZXN5c3RlbSAiQ29uZGl0aW9uVmVyaWZpY2F0aW9uU3RhdHVzQ29kZXMiOiAnaHR0cDovL3Rlcm1pbm9sb2d5LmhsNy5vcmcvQ29kZVN5c3RlbS9jb25kaXRpb24tdmVyLXN0YXR1cycKCmNvZGUgImV4YW0iOiAnZXhhbScgZnJvbSAiT2JzZXJ2YXRpb25DYXRlZ29yeUNvZGVzIiBkaXNwbGF5ICdleGFtJwpjb2RlICJpbWFnaW5nIjogJ2ltYWdpbmcnIGZyb20gIk9ic2VydmF0aW9uQ2F0ZWdvcnlDb2RlcyIgZGlzcGxheSAnaW1hZ2luZycKY29kZSAiY29uZmlybWVkIjogJ2NvbmZpcm1lZCcgZnJvbSBDb25kaXRpb25WZXJpZmljYXRpb25TdGF0dXNDb2RlcyBkaXNwbGF5ICdjb25maXJtZWQnCmNvZGUgInVuY29uZmlybWVkIjogJ3VuY29uZmlybWVkJyBmcm9tIENvbmRpdGlvblZlcmlmaWNhdGlvblN0YXR1c0NvZGVzIGRpc3BsYXkgJ3VuY29uZmlybWVkJwpjb2RlICJwcm92aXNpb25hbCI6ICdwcm92aXNpb25hbCcgZnJvbSBDb25kaXRpb25WZXJpZmljYXRpb25TdGF0dXNDb2RlcyBkaXNwbGF5ICdwcm92aXNpb25hbCcKY29kZSAiZGlmZmVyZW50aWFsIjogJ2RpZmZlcmVudGlhbCcgZnJvbSBDb25kaXRpb25WZXJpZmljYXRpb25TdGF0dXNDb2RlcyBkaXNwbGF5ICdkaWZmZXJlbnRpYWwnCmNvZGUgImVudGVyZWQtaW4tZXJyb3IiOiAnZW50ZXJlZC1pbi1lcnJvcicgZnJvbSBDb25kaXRpb25WZXJpZmljYXRpb25TdGF0dXNDb2RlcyBkaXNwbGF5ICdlbnRlcmVkLWluLWVycm9yJwpjb2RlICJyZWZ1dGVkIjogJ3JlZnV0ZWQnIGZyb20gQ29uZGl0aW9uVmVyaWZpY2F0aW9uU3RhdHVzQ29kZXMgZGlzcGxheSAncmVmdXRlZCcKY29kZSAiaW5hY3RpdmUiOiAnaW5hY3RpdmUnIGZyb20gQ29uZGl0aW9uVmVyaWZpY2F0aW9uU3RhdHVzQ29kZXMgZGlzcGxheSAnaW5hY3RpdmUnCmNvZGUgInJlc29sdmVkIjogJ3Jlc29sdmVkJyBmcm9tIENvbmRpdGlvblZlcmlmaWNhdGlvblN0YXR1c0NvZGVzIGRpc3BsYXkgJ3Jlc29sdmVkJwpjb2RlICJyZW1pc3Npb24iOiAncmVtaXNzaW9uJyBmcm9tIENvbmRpdGlvblZlcmlmaWNhdGlvblN0YXR1c0NvZGVzIGRpc3BsYXkgJ3JlbWlzc2lvbicKCmNvbnRleHQgUGF0aWVudAoKLy8gVE9ETzogRGVwcmVjYXRlIGJlY2F1c2UgdGhpcyBpcyBub3cgaW4gRkhJUkNvbW1vbgovL0NvbmRpdGlvbgovKgpAZGVzY3JpcHRpb246IFJldHVybnMgY29uZGl0aW9ucyBpbiB0aGUgZ2l2ZW4gbGlzdCB0aGF0IGVpdGhlciBoYXZlIG5vIHZlcmlmaWNhdGlvbiBzdGF0dXMgb3IgaGF2ZSBhIHZlcmlmaWNhdGlvbiBzdGF0dXMgb2YgY29uZmlybWVkLCB1bmNvbmZpcm1lZCwgcHJvdmlzaW9uYWwsIG9yIGRpZmZlcmVudGlhbApAZGVwcmVjYXRlZDogVXNlIHRoZSBVU0NvcmVDb21tb24gdmVyaWZpZWQgZnVuY3Rpb24gaW5zdGVhZGEKKi8KZGVmaW5lIGZsdWVudCBmdW5jdGlvbiB2ZXJpZmllZChjb25kaXRpb25zIExpc3Q8Q2hvaWNlPENvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnMsIENvbmRpdGlvbkVuY291bnRlckRpYWdub3Npcz4+KToKICBjb25kaXRpb25zIEMKICAgIHdoZXJlIEMudmVyaWZpY2F0aW9uU3RhdHVzIGlzIG5vdCBudWxsIGltcGxpZXMKICAgICAgKEMudmVyaWZpY2F0aW9uU3RhdHVzIH4gImNvbmZpcm1lZCIKICAgICAgICBvciBDLnZlcmlmaWNhdGlvblN0YXR1cyB+ICJ1bmNvbmZpcm1lZCIKICAgICAgICBvciBDLnZlcmlmaWNhdGlvblN0YXR1cyB+ICJwcm92aXNpb25hbCIKICAgICAgICBvciBDLnZlcmlmaWNhdGlvblN0YXR1cyB+ICJkaWZmZXJlbnRpYWwiCiAgICAgICkKCi8vQXNzZXNzbWVudCwgUGVyZm9ybWVkCmRlZmluZSBmbHVlbnQgZnVuY3Rpb24gaXNBc3Nlc3NtZW50UGVyZm9ybWVkKE9icyBMaXN0PE9ic2VydmF0aW9uU2NyZWVuaW5nQXNzZXNzbWVudD4pOgogIE9icyBPCiAgICB3aGVyZSBPLnN0YXR1cyBpbiB7ICdmaW5hbCcsICdhbWVuZGVkJywgJ2NvcnJlY3RlZCcgfQoKLy9EZXZpY2UsIE9yZGVyIC0gUGVyc29uYWwgVXNlIERldmljZXMKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiBpc0RldmljZU9yZGVyUGVyc29uYWxVc2VEZXZpY2VzKERldmljZVJlcXVlc3QgTGlzdDxGSElSLkRldmljZVJlcXVlc3Q+KToKICBEZXZpY2VSZXF1ZXN0IEQKICAgIHdoZXJlIEQuc3RhdHVzIGluIHsgJ2FjdGl2ZScsICdjb21wbGV0ZWQnIH0KICAgICAgYW5kIEQuaW50ZW50IGluIHsnb3JkZXInLCAnb3JpZ2luYWwtb3JkZXInLCAncmVmbGV4LW9yZGVyJywgJ2ZpbGxlci1vcmRlcicsICdpbnN0YW5jZS1vcmRlcid9CgovL0RpYWdub3N0aWMgU3R1ZHksIE9yZGVyCmRlZmluZSBmbHVlbnQgZnVuY3Rpb24gaXNEaWFnbm9zdGljU3R1ZHlPcmRlcihTZXJ2aWNlUmVxdWVzdCBMaXN0PEZISVIuU2VydmljZVJlcXVlc3Q+KToKICBTZXJ2aWNlUmVxdWVzdCBTCiAgICB3aGVyZSBTLnN0YXR1cyBpbiB7ICdhY3RpdmUnLCAnY29tcGxldGVkJyB9CiAgICAgIGFuZCBTLmludGVudCBpbiB7J29yZGVyJywgJ29yaWdpbmFsLW9yZGVyJywgJ3JlZmxleC1vcmRlcicsICdmaWxsZXItb3JkZXInLCAnaW5zdGFuY2Utb3JkZXInfQogICAgICAKLy9JbnRlcnZlbnRpb24sIE9yZGVyCmRlZmluZSBmbHVlbnQgZnVuY3Rpb24gaXNJbnRlcnZlbnRpb25PcmRlcihTZXJ2aWNlUmVxdWVzdCBMaXN0PEZISVIuU2VydmljZVJlcXVlc3Q+KToKICBTZXJ2aWNlUmVxdWVzdCBTCiAgICB3aGVyZSBTLnN0YXR1cyBpbiB7ICdhY3RpdmUnLCAnY29tcGxldGVkJyB9CiAgICAgIGFuZCBTLmludGVudCBpbiB7J29yZGVyJywgJ29yaWdpbmFsLW9yZGVyJywgJ3JlZmxleC1vcmRlcicsICdmaWxsZXItb3JkZXInLCAnaW5zdGFuY2Utb3JkZXInfSAgICAKCi8vTGFib3JhdG9yeSBUZXN0LCBPcmRlcgpkZWZpbmUgZmx1ZW50IGZ1bmN0aW9uIGlzTGFib3JhdG9yeVRlc3RPcmRlcihTZXJ2aWNlUmVxdWVzdCBMaXN0PEZISVIuU2VydmljZVJlcXVlc3Q+KToKICBTZXJ2aWNlUmVxdWVzdCBTCiAgICB3aGVyZSBTLnN0YXR1cyBpbiB7ICdhY3RpdmUnLCAnY29tcGxldGVkJyB9CiAgICAgIGFuZCBTLmludGVudCBpbiB7J29yZGVyJywgJ29yaWdpbmFsLW9yZGVyJywgJ3JlZmxleC1vcmRlcicsICdmaWxsZXItb3JkZXInLCAnaW5zdGFuY2Utb3JkZXInfSAgICAgICAKCi8vRGlhZ25vc3RpYyBTdHVkeSwgUGVyZm9ybWVkCmRlZmluZSBmbHVlbnQgZnVuY3Rpb24gaXNEaWFnbm9zdGljU3R1ZHlQZXJmb3JtZWQoT2JzIExpc3Q8T2JzZXJ2YXRpb25DbGluaWNhbFJlc3VsdD4pOgogIE9icyBPCiAgICB3aGVyZSBPLnN0YXR1cyBpbiB7ICdmaW5hbCcsICdhbWVuZGVkJywgJ2NvcnJlY3RlZCcgfQogICAgICAgIGFuZCBleGlzdHMgKCBPLmNhdGVnb3J5IE9ic2VydmF0aW9uQ2F0ZWdvcnkKICAgICAgICB3aGVyZSAoIE9ic2VydmF0aW9uQ2F0ZWdvcnkgKSB+ICJpbWFnaW5nIgogICAgKQogICAgCi8vRW5jb3VudGVyLCBQZXJmb3JtZWQKLy9HZW5lcmFsIHVzYWdlIHVubGVzcyByZXF1aXJlZCBvdGhlcndpc2UgYnkgbWVhc3VyZSBpbnRlbnQgKGUuZy4sIGZvbGxvdy11cCBlbmNvdW50ZXJzKQpkZWZpbmUgZmx1ZW50IGZ1bmN0aW9uIGlzRW5jb3VudGVyUGVyZm9ybWVkKEVuYyBMaXN0PEZISVIuRW5jb3VudGVyPik6CiAgRW5jIEUKICAgIHdoZXJlIEUuc3RhdHVzID0gJ2ZpbmlzaGVkJwoKLy9JbW11bml6YXRpb24sIEFkbWluaXN0ZXJlZApkZWZpbmUgZmx1ZW50IGZ1bmN0aW9uIGlzSW1tdW5pemF0aW9uQWRtaW5pc3RlcmVkKEltbXVuaXphdGlvbiBMaXN0PEZISVIuSW1tdW5pemF0aW9uPik6CiAgSW1tdW5pemF0aW9uIEkKICAgIHdoZXJlIEkuc3RhdHVzIH4gJ2NvbXBsZXRlZCcKCi8vSW50ZXJ2ZW50aW9uLCBQZXJmb3JtZWQKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiBpc0ludGVydmVudGlvblBlcmZvcm1lZChQcm9jIExpc3Q8RkhJUi5Qcm9jZWR1cmU+KToKICBQcm9jIFAKICAgIHdoZXJlIFAuc3RhdHVzIH4gJ2NvbXBsZXRlZCcKCi8vUHJvY2VkdXJlLCBQZXJmb3JtZWQKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiBpc1Byb2NlZHVyZVBlcmZvcm1lZChQcm9jIExpc3Q8RkhJUi5Qcm9jZWR1cmU+KToKICBQcm9jIFAKICAgIHdoZXJlIFAuc3RhdHVzIH4gJ2NvbXBsZXRlZCcKCi8vTGFib3JhdG9yeSBUZXN0LCBQZXJmb3JtZWQKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiBpc0xhYm9yYXRvcnlUZXN0UGVyZm9ybWVkKE9icyBMaXN0PExhYm9yYXRvcnlSZXN1bHRPYnNlcnZhdGlvbj4pOgogIE9icyBPCiAgICB3aGVyZSBPLnN0YXR1cyBpbiB7ICdmaW5hbCcsICdhbWVuZGVkJywgJ2NvcnJlY3RlZCcgfQoKLy9NZWRpY2F0aW9uLCBBY3RpdmUKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiBpc01lZGljYXRpb25BY3RpdmUoTWVkaWNhdGlvblJlcXVlc3QgTGlzdDxGSElSLk1lZGljYXRpb25SZXF1ZXN0Pik6CiAgTWVkaWNhdGlvblJlcXVlc3QgTQogICAgd2hlcmUgTS5zdGF0dXMgPSAnYWN0aXZlJwogICAgICBhbmQgTS5pbnRlbnQgaW4geydvcmRlcicsICdvcmlnaW5hbC1vcmRlcicsICdyZWZsZXgtb3JkZXInLCAnZmlsbGVyLW9yZGVyJywgJ2luc3RhbmNlLW9yZGVyJ30KCi8vTWVkaWNhdGlvbiwgRGlzcGVuc2VkCmRlZmluZSBmbHVlbnQgZnVuY3Rpb24gaXNNZWRpY2F0aW9uRGlzcGVuc2VkKE1lZCBMaXN0PEZISVIuTWVkaWNhdGlvbkRpc3BlbnNlPik6CiAgTWVkIE0KICAgIHdoZXJlIE0uc3RhdHVzIGluIHsgJ2NvbXBsZXRlZCcsICdpbi1wcm9ncmVzcycsICdvbi1ob2xkJyB9CgovL01lZGljYXRpb24sIE9yZGVyCmRlZmluZSBmbHVlbnQgZnVuY3Rpb24gaXNNZWRpY2F0aW9uT3JkZXIoTWVkaWNhdGlvblJlcXVlc3QgTGlzdDxGSElSLk1lZGljYXRpb25SZXF1ZXN0Pik6CiAgTWVkaWNhdGlvblJlcXVlc3QgTQogICAgd2hlcmUgTS5zdGF0dXMgaW4geyAnYWN0aXZlJywgJ2NvbXBsZXRlZCcgfQogICAgYW5kIE0uaW50ZW50IGluIHsnb3JkZXInLCAnb3JpZ2luYWwtb3JkZXInLCAncmVmbGV4LW9yZGVyJywgJ2ZpbGxlci1vcmRlcicsICdpbnN0YW5jZS1vcmRlcid9CgovL1BoeXNpY2FsIEV4YW0sIFBlcmZvcm1lZApkZWZpbmUgZmx1ZW50IGZ1bmN0aW9uIGlzUGh5c2ljYWxFeGFtUGVyZm9ybWVkKE9icyBMaXN0PE9ic2VydmF0aW9uQ2xpbmljYWxSZXN1bHQ+KToKICBPYnMgTwogICAgd2hlcmUgTy5zdGF0dXMgaW4geyAnZmluYWwnLCAnYW1lbmRlZCcsICdjb3JyZWN0ZWQnIH0KICAgICAgYW5kIGV4aXN0cyAoIE8uY2F0ZWdvcnkgT2JzZXJ2YXRpb25DYXRlZ29yeQogICAgICAgICAgd2hlcmUgKCBPYnNlcnZhdGlvbkNhdGVnb3J5ICkgfiAiZXhhbSIKICAgICAgKQoKLy9PYnNlcnZhdGlvbiBWaXRhbCBTaWducwpkZWZpbmUgZmx1ZW50IGZ1bmN0aW9uIGlzT2JzZXJ2YXRpb25CUChPYnMgTGlzdDxCbG9vZFByZXNzdXJlUHJvZmlsZT4pOgogIE9icyBPCiAgICB3aGVyZSBPLnN0YXR1cyBpbiB7ICdmaW5hbCcsICdhbWVuZGVkJywgJ2NvcnJlY3RlZCcgfQogICAgICAKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiBpc09ic2VydmF0aW9uQm9keUhlaWdodChPYnMgTGlzdDxCb2R5SGVpZ2h0UHJvZmlsZT4pOgogIE9icyBPCiAgICB3aGVyZSBPLnN0YXR1cyBpbiB7ICdmaW5hbCcsICdhbWVuZGVkJywgJ2NvcnJlY3RlZCcgfQogICAgICAKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiBpc09ic2VydmF0aW9uQm9keVdlaWdodChPYnMgTGlzdDxCb2R5V2VpZ2h0UHJvZmlsZT4pOgogIE9icyBPCiAgICB3aGVyZSBPLnN0YXR1cyBpbiB7ICdmaW5hbCcsICdhbWVuZGVkJywgJ2NvcnJlY3RlZCcgfQogICAgICAKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiBpc09ic2VydmF0aW9uQk1JKE9icyBMaXN0PEJNSVByb2ZpbGU+KToKICBPYnMgTwogICAgd2hlcmUgTy5zdGF0dXMgaW4geyAnZmluYWwnLCAnYW1lbmRlZCcsICdjb3JyZWN0ZWQnIH0KIAovL09ic2VydmF0aW9uIFBlZGlhdHJpYyBCTUkKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiBpc09ic2VydmF0aW9uUGVkaWF0cmljQk1JKE9icyBMaXN0PFBlZGlhdHJpY0JNSWZvckFnZU9ic2VydmF0aW9uUHJvZmlsZT4pOgogIE9icyBPCiAgICB3aGVyZSBPLnN0YXR1cyBpbiB7ICdmaW5hbCcsICdhbWVuZGVkJywgJ2NvcnJlY3RlZCcgfSAKICAgCi8vT2JzZXJ2YXRpb24gU21va2luZyBTdGF0dXMKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiBpc09ic2VydmF0aW9uU21va2luZ1N0YXR1cyhPYnMgTGlzdDxTbW9raW5nU3RhdHVzUHJvZmlsZT4pOgogIE9icyBPCiAgICB3aGVyZSBPLnN0YXR1cyA9ICdmaW5hbCcgCgovL1N5bXB0b20KZGVmaW5lIGZsdWVudCBmdW5jdGlvbiBpc1N5bXB0b20oT2JzIExpc3Q8U2ltcGxlT2JzZXJ2YXRpb24+KToKICBPYnMgTwogICAgd2hlcmUgTy5zdGF0dXMgaW4geyAncHJlbGltaW5hcnknLCAnZmluYWwnLCAnYW1lbmRlZCcsICdjb3JyZWN0ZWQnIH0="
}
]
}