Draft dQM CMS Content Implementation Guide
2025.1.0 - CI Build
Draft dQM CMS Content Implementation Guide, published by cqframework. This guide is not an authorized publication; it is the continuous build for version 2025.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-2025/ and changes regularly. See the Directory of published versions
| Draft as of 2026-09-19 |
<Library xmlns="http://hl7.org/fhir">
<id value="CMS159FHIRDepRemissionat12Months"/>
<text>
<status value="extensions"/>
<div xmlns="http://www.w3.org/1999/xhtml">
<table class="narrative-table">
<tbody>
<tr>
<th colspan="2" scope="row" class="row-header"><a name="metadata"> </a>Metadata</th>
</tr>
<tr>
<th scope="row" class="row-header">Version</th>
<td class="content-container">1.1.000</td>
</tr>
<tr>
<th scope="row" class="row-header">Status</th>
<td class="content-container">Draft</td>
</tr>
<tr>
<th scope="row" class="row-header">Type</th>
<td class="content-container">
<a href="http://terminology.hl7.org/7.1.0/CodeSystem-library-type.html">http://terminology.hl7.org/CodeSystem/library-type</a>#logic-library
</td>
</tr>
<tr>
<th colspan="2" scope="row" class="row-header"><a name="parameters"> </a>Parameters</th>
</tr>
<tr>
<th scope="row" class="row-header">Parameter</th>
<td class="content-container">None</td>
</tr>
<tr>
<th colspan="2" scope="row" class="row-header">Library Content</th>
</tr>
<tr>
<th scope="row" class="row-header">CQL Content</th>
<td>
<a name="cql-content"> </a>
<pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">/*
NOTE: For use by March 2026 US Realm Connectathon participants for internal use only. Not for use or distribution in commercial products.
*/
library CMS159FHIRDepRemissionat12Months version '1.1.000'
using USQualityCore version '0.1.0-cibuild'
using USCore version '6.1.0-derived'
using FHIR version '4.0.1'
include hl7.fhir.uv.cql.FHIRHelpers version '4.0.1' called FHIRHelpers
include hl7.fhir.uv.cql.FHIRCommon version '2.0.0' called FHIRCommon
include hl7.fhir.us.cql.USCoreCommon version '2.0.0-ballot' called USCoreCommon
include hl7.fhir.us.cql.USCoreElements version '2.0.0-ballot' called USCoreElements
include CQMCommon version '5.1.000' called CQMCommon
include USQualityCoreCommon version '0.1.0-cibuild' called USQualityCoreCommon
include SupplementalDataElements version '6.1.000' called SDE
include Status version '2.1.000' called Status
codesystem "LOINC": 'http://loinc.org'
codesystem "SNOMEDCT": 'http://snomed.info/sct'
codesystem "ConditionVerificationStatusCodes": 'http://terminology.hl7.org/CodeSystem/condition-ver-status'
valueset "Bipolar Disorder": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.67.1.101.1.128'
valueset "Contact or Office Visit": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1080.5'
valueset "Dysthymia": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.67.1.101.1.254'
valueset "Encounter Inpatient": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307'
valueset "Hospice Care Ambulatory": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1584'
valueset "Hospice Diagnosis": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1165'
valueset "Hospice Encounter": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1003'
valueset "Major Depression Including Remission": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.113883.3.67.1.101.3.2444'
valueset "Palliative Care Diagnosis": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1167'
valueset "Palliative Care Encounter": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1090'
valueset "Palliative Care Intervention": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1135'
valueset "Palliative or Hospice Care": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.600.1.1579'
valueset "Personality Disorder Emotionally Labile": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.67.1.101.1.246'
valueset "Pervasive Developmental Disorder": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.105.12.1152'
valueset "PHQ 9 and PHQ 9M Tools": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.67.1.101.1.263'
valueset "Schizophrenia or Psychotic Disorder": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.105.12.1104'
code "Discharge to healthcare facility for hospice care (procedure)": '428371000124100' from "SNOMEDCT" display 'Discharge to healthcare facility for hospice care (procedure)'
code "Discharge to home for hospice care (procedure)": '428361000124107' from "SNOMEDCT" display 'Discharge to home for hospice care (procedure)'
code "Functional Assessment of Chronic Illness Therapy - Palliative Care Questionnaire (FACIT-Pal)": '71007-9' from "LOINC" display 'Functional Assessment of Chronic Illness Therapy - Palliative Care Questionnaire (FACIT-Pal)'
code "Hospice care [Minimum Data Set]": '45755-6' from "LOINC" display 'Hospice care [Minimum Data Set]'
code "Yes (qualifier value)": '373066001' from "SNOMEDCT" display 'Yes (qualifier value)'
parameter "Measurement Period" Interval<DateTime>
default Interval[@2026-01-01T00:00:00.000Z, @2027-01-01T00:00:00.000Z)
context Patient
define "Initial Population":
AgeInYearsAt(date from start of("Index Depression Assessment".effective.toInterval())) >= 12
define "Denominator":
"Initial Population"
define "Denominator Exclusions":
"Has Hospice Services prior to or during the Measure Assessment Period"
or "Has Palliative Care prior to or during the Measure Assessment Period"
or "Patient Expired"
or "Has Mental Health Disorder Diagnoses"
define "Numerator":
Last([ObservationScreeningAssessment: "PHQ 9 and PHQ 9M Tools"] DepressionAssessment
where start of DepressionAssessment.effective.toInterval() during day of "Measure Assessment Period"
and DepressionAssessment.status in { 'final', 'amended', 'corrected' }
sort by start of effective.toInterval()
).value < 5
define "SDE Ethnicity":
SDE."SDE Ethnicity"
define "SDE Payer":
SDE."SDE Payer"
define "SDE Race":
SDE."SDE Race"
define "SDE Sex":
SDE."SDE Sex"
define "Denominator Identification Period":
Interval[start of "Measurement Period" - 14 months, start of "Measurement Period" - 2 months )
define "Depression Assessments Greater Than 9":
[ObservationScreeningAssessment: "PHQ 9 and PHQ 9M Tools"] DepressionAssessment
where DepressionAssessment.value > 9
and DepressionAssessment.status in { 'final', 'amended', 'corrected' }
define "Depression Diagnoses":
// [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)
// Original:
// ( [ConditionProblemsHealthConcerns: "Major Depression Including Remission"]
// union [ConditionEncounterDiagnosis: "Major Depression Including Remission"]
// union [ConditionProblemsHealthConcerns: "Dysthymia"]
// union [ConditionEncounterDiagnosis: "Dysthymia"] ) Depression
( [Condition: "Major Depression Including Remission"]
union [Condition: "Dysthymia"] ) Depression
where Depression.isVerified ( )
define "Depression Encounter":
[Encounter: "Contact or Office Visit"] ValidEncounter
with "Depression Diagnoses" Depression
such that ValidEncounter.period overlaps Depression.prevalenceInterval ( )
and ValidEncounter.period ends during day of "Denominator Identification Period"
and ValidEncounter.status = 'finished'
define "Has Mental Health Disorder Diagnoses":
// [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)
// Original:
// exists ( ( [ConditionProblemsHealthConcerns: "Bipolar Disorder"]
// union [ConditionEncounterDiagnosis: "Bipolar Disorder"]
// union [ConditionProblemsHealthConcerns: "Personality Disorder Emotionally Labile"]
// union [ConditionEncounterDiagnosis: "Personality Disorder Emotionally Labile"]
// union [ConditionProblemsHealthConcerns: "Schizophrenia or Psychotic Disorder"]
// union [ConditionEncounterDiagnosis: "Schizophrenia or Psychotic Disorder"]
// union [ConditionProblemsHealthConcerns: "Pervasive Developmental Disorder"]
// union [ConditionEncounterDiagnosis: "Pervasive Developmental Disorder"] ) MentalHealthDisorderDiagnoses
exists ( ( [Condition: "Bipolar Disorder"]
union [Condition: "Personality Disorder Emotionally Labile"]
union [Condition: "Schizophrenia or Psychotic Disorder"]
union [Condition: "Pervasive Developmental Disorder"] ) MentalHealthDisorderDiagnoses
where start of MentalHealthDisorderDiagnoses.prevalenceInterval ( ) on or before day of end of "Measure Assessment Period"
and MentalHealthDisorderDiagnoses.isVerified ( )
)
define "Measure Assessment Period":
"Index Depression Assessment" FirstIndexAssessment
let YearAfterIndexAssessment: date from start of FirstIndexAssessment.effective.toInterval ( ) + 12 months
return Interval[YearAfterIndexAssessment - 60 days, YearAfterIndexAssessment + 60 days]
define "Patient Expired":
Patient.deceased occurs on or before day of end of "Measure Assessment Period"
define "Has Hospice Services prior to or during the Measure Assessment Period":
exists ( [Encounter: "Encounter Inpatient"] InpatientEncounter
where ( InpatientEncounter.hospitalization.dischargeDisposition ~ "Discharge to home for hospice care (procedure)"
or InpatientEncounter.hospitalization.dischargeDisposition ~ "Discharge to healthcare facility for hospice care (procedure)"
)
and InpatientEncounter.period ends during day of Interval[start of "Denominator Identification Period", end of "Measure Assessment Period"]
and InpatientEncounter.status = 'finished'
)
or exists ( [Encounter: "Hospice Encounter"] HospiceEncounter
where HospiceEncounter.period overlaps day of Interval[start of "Denominator Identification Period", end of "Measure Assessment Period"]
and not ( HospiceEncounter.status in { 'cancelled', 'entered-in-error', 'unknown' } )
)
or exists ( [ObservationScreeningAssessment: "Hospice care [Minimum Data Set]"] HospiceAssessment
where HospiceAssessment.value ~ "Yes (qualifier value)"
and HospiceAssessment.effective.toInterval ( ) overlaps day of Interval[start of "Denominator Identification Period", end of "Measure Assessment Period"]
and HospiceAssessment.status in { 'final', 'amended', 'corrected' }
)
or exists ( [ServiceRequest: "Hospice Care Ambulatory"] HospiceOrder
where HospiceOrder.authoredOn during day of Interval[start of "Denominator Identification Period", end of "Measure Assessment Period"]
and HospiceOrder.status in { 'active', 'completed' }
and HospiceOrder.intent in { 'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order' }
)
or exists ( [Procedure: "Hospice Care Ambulatory"] HospicePerformed
where HospicePerformed.performed.toInterval ( ) overlaps day of Interval[start of "Denominator Identification Period", end of "Measure Assessment Period"]
and not ( HospicePerformed.status in { 'not-done', 'entered-in-error', 'unknown' } )
)
// [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)
// Original:
// or exists ( ( [ConditionProblemsHealthConcerns: "Hospice Diagnosis"]
// union [ConditionEncounterDiagnosis: "Hospice Diagnosis"] ) HospiceCareDiagnosis
or exists ( [Condition: "Hospice Diagnosis"] HospiceCareDiagnosis
where HospiceCareDiagnosis.prevalenceInterval ( ) overlaps day of Interval[start of "Denominator Identification Period", end of "Measure Assessment Period"]
and HospiceCareDiagnosis.isVerified ( )
)
define "Index Depression Assessment":
First("Depression Assessments Greater Than 9" DepressionAssessment
with "Depression Encounter" DepressionEncounter
such that DepressionAssessment.effective.toInterval() during day of Interval[start of DepressionEncounter.period - 7 days,
end of DepressionEncounter.period]
sort by start of effective.toInterval()
)
define "Has Palliative Care prior to or during the Measure Assessment Period":
exists ( [ObservationScreeningAssessment: "Functional Assessment of Chronic Illness Therapy - Palliative Care Questionnaire (FACIT-Pal)"] PalliativeAssessment
where PalliativeAssessment.effective.toInterval ( ) overlaps day of Interval[start of "Denominator Identification Period", end of "Measure Assessment Period"]
and PalliativeAssessment.status in { 'final', 'amended', 'corrected' }
)
// [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)
// Original:
// or exists ( ( [ConditionProblemsHealthConcerns: "Palliative Care Diagnosis"]
// union [ConditionEncounterDiagnosis: "Palliative Care Diagnosis"] ) PalliativeDiagnosis
or exists ( [Condition: "Palliative Care Diagnosis"] PalliativeDiagnosis
where PalliativeDiagnosis.prevalenceInterval ( ) overlaps day of Interval[start of "Denominator Identification Period", end of "Measure Assessment Period"]
and PalliativeDiagnosis.isVerified ( )
)
or exists ( [Encounter: "Palliative Care Encounter"] PalliativeEncounter
where PalliativeEncounter.period overlaps day of Interval[start of "Denominator Identification Period", end of "Measure Assessment Period"]
and PalliativeEncounter.status = 'finished'
)
or exists ( [Procedure: "Palliative Care Intervention"] PalliativeIntervention
where PalliativeIntervention.performed.toInterval ( ) overlaps day of Interval[start of "Denominator Identification Period", end of "Measure Assessment Period"]
and not ( PalliativeIntervention.status in { 'not-done', 'entered-in-error', 'unknown' } )
)
define fluent function isVerified(condition Choice<ConditionEncounterDiagnosis, ConditionProblemsHealthConcerns>):
condition.verificationStatus is not null implies ( condition.verificationStatus ~ Status."confirmed"
or condition.verificationStatus ~ Status."unconfirmed"
or condition.verificationStatus ~ Status."provisional"
or condition.verificationStatus ~ Status."differential"
)
define "Stratification 1":
"Index Depression Assessment" IndexAssessment
return AgeInYearsAt(date from start of IndexAssessment.effective.toInterval()) in Interval[12, 17]
define "Stratification 2":
"Index Depression Assessment" IndexAssessment
return AgeInYearsAt(date from start of IndexAssessment.effective.toInterval()) >= 18</code></pre>
</td>
</tr>
<tr>
<th colspan="2" scope="row" class="row-header">Generated using version 0.5.6 of the sample-content-ig Liquid templates</th>
</tr>
</tbody>
</table>
</div>
</text>
<extension
url="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-softwaresystem">
<valueReference>
<reference value="Device/cqf-tooling"/>
</valueReference>
</extension>
<url
value="https://madie.cms.gov/Library/CMS159FHIRDepRemissionat12Months"/>
<version value="1.1.000"/>
<name value="CMS159FHIRDepRemissionat12Months"/>
<status value="draft"/>
<type>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/library-type"/>
<code value="logic-library"/>
</coding>
</type>
<date value="2026-09-19T16:31:14+00:00"/>
<content>
<contentType value="text/cql"/>
<data
value="LyoKTk9URTogRm9yIHVzZSBieSBNYXJjaCAyMDI2IFVTIFJlYWxtIENvbm5lY3RhdGhvbiBwYXJ0aWNpcGFudHMgZm9yIGludGVybmFsIHVzZSBvbmx5LiBOb3QgZm9yIHVzZSBvciBkaXN0cmlidXRpb24gaW4gY29tbWVyY2lhbCBwcm9kdWN0cy4KKi8KbGlicmFyeSBDTVMxNTlGSElSRGVwUmVtaXNzaW9uYXQxMk1vbnRocyB2ZXJzaW9uICcxLjEuMDAwJwoKdXNpbmcgVVNRdWFsaXR5Q29yZSB2ZXJzaW9uICcwLjEuMC1jaWJ1aWxkJwp1c2luZyBVU0NvcmUgdmVyc2lvbiAnNi4xLjAtZGVyaXZlZCcKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgaGw3LmZoaXIudXYuY3FsLkZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJyBjYWxsZWQgRkhJUkhlbHBlcnMKaW5jbHVkZSBobDcuZmhpci51di5jcWwuRkhJUkNvbW1vbiB2ZXJzaW9uICcyLjAuMCcgY2FsbGVkIEZISVJDb21tb24KaW5jbHVkZSBobDcuZmhpci51cy5jcWwuVVNDb3JlQ29tbW9uIHZlcnNpb24gJzIuMC4wLWJhbGxvdCcgY2FsbGVkIFVTQ29yZUNvbW1vbgppbmNsdWRlIGhsNy5maGlyLnVzLmNxbC5VU0NvcmVFbGVtZW50cyB2ZXJzaW9uICcyLjAuMC1iYWxsb3QnIGNhbGxlZCBVU0NvcmVFbGVtZW50cwoKaW5jbHVkZSBDUU1Db21tb24gdmVyc2lvbiAnNS4xLjAwMCcgY2FsbGVkIENRTUNvbW1vbgppbmNsdWRlIFVTUXVhbGl0eUNvcmVDb21tb24gdmVyc2lvbiAnMC4xLjAtY2lidWlsZCcgY2FsbGVkIFVTUXVhbGl0eUNvcmVDb21tb24KaW5jbHVkZSBTdXBwbGVtZW50YWxEYXRhRWxlbWVudHMgdmVyc2lvbiAnNi4xLjAwMCcgY2FsbGVkIFNERQppbmNsdWRlIFN0YXR1cyB2ZXJzaW9uICcyLjEuMDAwJyBjYWxsZWQgU3RhdHVzCgpjb2Rlc3lzdGVtICJMT0lOQyI6ICdodHRwOi8vbG9pbmMub3JnJwpjb2Rlc3lzdGVtICJTTk9NRURDVCI6ICdodHRwOi8vc25vbWVkLmluZm8vc2N0Jwpjb2Rlc3lzdGVtICJDb25kaXRpb25WZXJpZmljYXRpb25TdGF0dXNDb2RlcyI6ICdodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9Db2RlU3lzdGVtL2NvbmRpdGlvbi12ZXItc3RhdHVzJwoKdmFsdWVzZXQgIkJpcG9sYXIgRGlzb3JkZXIiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNjcuMS4xMDEuMS4xMjgnCnZhbHVlc2V0ICJDb250YWN0IG9yIE9mZmljZSBWaXNpdCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEwODAuNScKdmFsdWVzZXQgIkR5c3RoeW1pYSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy42Ny4xLjEwMS4xLjI1NCcKdmFsdWVzZXQgIkVuY291bnRlciBJbnBhdGllbnQiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNjY2LjUuMzA3Jwp2YWx1ZXNldCAiSG9zcGljZSBDYXJlIEFtYnVsYXRvcnkiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNTI2LjMuMTU4NCcKdmFsdWVzZXQgIkhvc3BpY2UgRGlhZ25vc2lzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjExNjUnCnZhbHVlc2V0ICJIb3NwaWNlIEVuY291bnRlciI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDAzJwp2YWx1ZXNldCAiTWFqb3IgRGVwcmVzc2lvbiBJbmNsdWRpbmcgUmVtaXNzaW9uIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xMTM4ODMuMy42Ny4xLjEwMS4zLjI0NDQnCnZhbHVlc2V0ICJQYWxsaWF0aXZlIENhcmUgRGlhZ25vc2lzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjExNjcnCnZhbHVlc2V0ICJQYWxsaWF0aXZlIENhcmUgRW5jb3VudGVyIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDkwJwp2YWx1ZXNldCAiUGFsbGlhdGl2ZSBDYXJlIEludGVydmVudGlvbiI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xOTguMTIuMTEzNScKdmFsdWVzZXQgIlBhbGxpYXRpdmUgb3IgSG9zcGljZSBDYXJlIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjYwMC4xLjE1NzknCnZhbHVlc2V0ICJQZXJzb25hbGl0eSBEaXNvcmRlciBFbW90aW9uYWxseSBMYWJpbGUiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNjcuMS4xMDEuMS4yNDYnCnZhbHVlc2V0ICJQZXJ2YXNpdmUgRGV2ZWxvcG1lbnRhbCBEaXNvcmRlciI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDUuMTIuMTE1MicKdmFsdWVzZXQgIlBIUSA5IGFuZCBQSFEgOU0gVG9vbHMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNjcuMS4xMDEuMS4yNjMnCnZhbHVlc2V0ICJTY2hpem9waHJlbmlhIG9yIFBzeWNob3RpYyBEaXNvcmRlciI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDUuMTIuMTEwNCcKCmNvZGUgIkRpc2NoYXJnZSB0byBoZWFsdGhjYXJlIGZhY2lsaXR5IGZvciBob3NwaWNlIGNhcmUgKHByb2NlZHVyZSkiOiAnNDI4MzcxMDAwMTI0MTAwJyBmcm9tICJTTk9NRURDVCIgZGlzcGxheSAnRGlzY2hhcmdlIHRvIGhlYWx0aGNhcmUgZmFjaWxpdHkgZm9yIGhvc3BpY2UgY2FyZSAocHJvY2VkdXJlKScKY29kZSAiRGlzY2hhcmdlIHRvIGhvbWUgZm9yIGhvc3BpY2UgY2FyZSAocHJvY2VkdXJlKSI6ICc0MjgzNjEwMDAxMjQxMDcnIGZyb20gIlNOT01FRENUIiBkaXNwbGF5ICdEaXNjaGFyZ2UgdG8gaG9tZSBmb3IgaG9zcGljZSBjYXJlIChwcm9jZWR1cmUpJwpjb2RlICJGdW5jdGlvbmFsIEFzc2Vzc21lbnQgb2YgQ2hyb25pYyBJbGxuZXNzIFRoZXJhcHkgLSBQYWxsaWF0aXZlIENhcmUgUXVlc3Rpb25uYWlyZSAoRkFDSVQtUGFsKSI6ICc3MTAwNy05JyBmcm9tICJMT0lOQyIgZGlzcGxheSAnRnVuY3Rpb25hbCBBc3Nlc3NtZW50IG9mIENocm9uaWMgSWxsbmVzcyBUaGVyYXB5IC0gUGFsbGlhdGl2ZSBDYXJlIFF1ZXN0aW9ubmFpcmUgKEZBQ0lULVBhbCknCmNvZGUgIkhvc3BpY2UgY2FyZSBbTWluaW11bSBEYXRhIFNldF0iOiAnNDU3NTUtNicgZnJvbSAiTE9JTkMiIGRpc3BsYXkgJ0hvc3BpY2UgY2FyZSBbTWluaW11bSBEYXRhIFNldF0nCmNvZGUgIlllcyAocXVhbGlmaWVyIHZhbHVlKSI6ICczNzMwNjYwMDEnIGZyb20gIlNOT01FRENUIiBkaXNwbGF5ICdZZXMgKHF1YWxpZmllciB2YWx1ZSknCgpwYXJhbWV0ZXIgIk1lYXN1cmVtZW50IFBlcmlvZCIgSW50ZXJ2YWw8RGF0ZVRpbWU+CiAgZGVmYXVsdCBJbnRlcnZhbFtAMjAyNi0wMS0wMVQwMDowMDowMC4wMDBaLCBAMjAyNy0wMS0wMVQwMDowMDowMC4wMDBaKQoKY29udGV4dCBQYXRpZW50CgpkZWZpbmUgIkluaXRpYWwgUG9wdWxhdGlvbiI6CiAgQWdlSW5ZZWFyc0F0KGRhdGUgZnJvbSBzdGFydCBvZigiSW5kZXggRGVwcmVzc2lvbiBBc3Nlc3NtZW50Ii5lZmZlY3RpdmUudG9JbnRlcnZhbCgpKSkgPj0gMTIKCmRlZmluZSAiRGVub21pbmF0b3IiOgogICJJbml0aWFsIFBvcHVsYXRpb24iCgpkZWZpbmUgIkRlbm9taW5hdG9yIEV4Y2x1c2lvbnMiOgogICJIYXMgSG9zcGljZSBTZXJ2aWNlcyBwcmlvciB0byBvciBkdXJpbmcgdGhlIE1lYXN1cmUgQXNzZXNzbWVudCBQZXJpb2QiCiAgICBvciAiSGFzIFBhbGxpYXRpdmUgQ2FyZSBwcmlvciB0byBvciBkdXJpbmcgdGhlIE1lYXN1cmUgQXNzZXNzbWVudCBQZXJpb2QiCiAgICBvciAiUGF0aWVudCBFeHBpcmVkIgogICAgb3IgIkhhcyBNZW50YWwgSGVhbHRoIERpc29yZGVyIERpYWdub3NlcyIKCmRlZmluZSAiTnVtZXJhdG9yIjoKICBMYXN0KFtPYnNlcnZhdGlvblNjcmVlbmluZ0Fzc2Vzc21lbnQ6ICJQSFEgOSBhbmQgUEhRIDlNIFRvb2xzIl0gRGVwcmVzc2lvbkFzc2Vzc21lbnQKICAgICAgd2hlcmUgc3RhcnQgb2YgRGVwcmVzc2lvbkFzc2Vzc21lbnQuZWZmZWN0aXZlLnRvSW50ZXJ2YWwoKSBkdXJpbmcgZGF5IG9mICJNZWFzdXJlIEFzc2Vzc21lbnQgUGVyaW9kIgogICAgICAgIGFuZCBEZXByZXNzaW9uQXNzZXNzbWVudC5zdGF0dXMgaW4geyAnZmluYWwnLCAnYW1lbmRlZCcsICdjb3JyZWN0ZWQnIH0KICAgICAgc29ydCBieSBzdGFydCBvZiBlZmZlY3RpdmUudG9JbnRlcnZhbCgpCiAgKS52YWx1ZSA8IDUKCmRlZmluZSAiU0RFIEV0aG5pY2l0eSI6CiAgU0RFLiJTREUgRXRobmljaXR5IgoKZGVmaW5lICJTREUgUGF5ZXIiOgogIFNERS4iU0RFIFBheWVyIgoKZGVmaW5lICJTREUgUmFjZSI6CiAgU0RFLiJTREUgUmFjZSIKCmRlZmluZSAiU0RFIFNleCI6CiAgU0RFLiJTREUgU2V4IgoKZGVmaW5lICJEZW5vbWluYXRvciBJZGVudGlmaWNhdGlvbiBQZXJpb2QiOgogIEludGVydmFsW3N0YXJ0IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiIC0gMTQgbW9udGhzLCBzdGFydCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIiAtIDIgbW9udGhzICkKCmRlZmluZSAiRGVwcmVzc2lvbiBBc3Nlc3NtZW50cyBHcmVhdGVyIFRoYW4gOSI6CiAgW09ic2VydmF0aW9uU2NyZWVuaW5nQXNzZXNzbWVudDogIlBIUSA5IGFuZCBQSFEgOU0gVG9vbHMiXSBEZXByZXNzaW9uQXNzZXNzbWVudAogICAgd2hlcmUgRGVwcmVzc2lvbkFzc2Vzc21lbnQudmFsdWUgPiA5CiAgICAgIGFuZCBEZXByZXNzaW9uQXNzZXNzbWVudC5zdGF0dXMgaW4geyAnZmluYWwnLCAnYW1lbmRlZCcsICdjb3JyZWN0ZWQnIH0KCmRlZmluZSAiRGVwcmVzc2lvbiBEaWFnbm9zZXMiOgogIC8vIFtFLTEzXSBiYXNlIEZISVIuQ29uZGl0aW9uIHJldHJpZXZlIChkZWZlY3QtdHJhY2tpbmcvZW5naW5lLWlzc3Vlcy5tZCBFLTEzKQogIC8vIE9yaWdpbmFsOgogIC8vICggW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJNYWpvciBEZXByZXNzaW9uIEluY2x1ZGluZyBSZW1pc3Npb24iXQogIC8vICAgdW5pb24gW0NvbmRpdGlvbkVuY291bnRlckRpYWdub3NpczogIk1ham9yIERlcHJlc3Npb24gSW5jbHVkaW5nIFJlbWlzc2lvbiJdCiAgLy8gICB1bmlvbiBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIkR5c3RoeW1pYSJdCiAgLy8gICB1bmlvbiBbQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzOiAiRHlzdGh5bWlhIl0gKSBEZXByZXNzaW9uCiAgKCBbQ29uZGl0aW9uOiAiTWFqb3IgRGVwcmVzc2lvbiBJbmNsdWRpbmcgUmVtaXNzaW9uIl0KICAgIHVuaW9uIFtDb25kaXRpb246ICJEeXN0aHltaWEiXSApIERlcHJlc3Npb24KICAgIHdoZXJlIERlcHJlc3Npb24uaXNWZXJpZmllZCAoICkKCmRlZmluZSAiRGVwcmVzc2lvbiBFbmNvdW50ZXIiOgogIFtFbmNvdW50ZXI6ICJDb250YWN0IG9yIE9mZmljZSBWaXNpdCJdIFZhbGlkRW5jb3VudGVyCiAgICB3aXRoICJEZXByZXNzaW9uIERpYWdub3NlcyIgRGVwcmVzc2lvbgogICAgICBzdWNoIHRoYXQgVmFsaWRFbmNvdW50ZXIucGVyaW9kIG92ZXJsYXBzIERlcHJlc3Npb24ucHJldmFsZW5jZUludGVydmFsICggKQogICAgICAgIGFuZCBWYWxpZEVuY291bnRlci5wZXJpb2QgZW5kcyBkdXJpbmcgZGF5IG9mICJEZW5vbWluYXRvciBJZGVudGlmaWNhdGlvbiBQZXJpb2QiCiAgICAgICAgYW5kIFZhbGlkRW5jb3VudGVyLnN0YXR1cyA9ICdmaW5pc2hlZCcKCmRlZmluZSAiSGFzIE1lbnRhbCBIZWFsdGggRGlzb3JkZXIgRGlhZ25vc2VzIjoKICAvLyBbRS0xM10gYmFzZSBGSElSLkNvbmRpdGlvbiByZXRyaWV2ZSAoZGVmZWN0LXRyYWNraW5nL2VuZ2luZS1pc3N1ZXMubWQgRS0xMykKICAvLyBPcmlnaW5hbDoKICAvLyBleGlzdHMgKCAoIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiQmlwb2xhciBEaXNvcmRlciJdCiAgLy8gICAgIHVuaW9uIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJCaXBvbGFyIERpc29yZGVyIl0KICAvLyAgICAgdW5pb24gW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJQZXJzb25hbGl0eSBEaXNvcmRlciBFbW90aW9uYWxseSBMYWJpbGUiXQogIC8vICAgICB1bmlvbiBbQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzOiAiUGVyc29uYWxpdHkgRGlzb3JkZXIgRW1vdGlvbmFsbHkgTGFiaWxlIl0KICAvLyAgICAgdW5pb24gW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJTY2hpem9waHJlbmlhIG9yIFBzeWNob3RpYyBEaXNvcmRlciJdCiAgLy8gICAgIHVuaW9uIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJTY2hpem9waHJlbmlhIG9yIFBzeWNob3RpYyBEaXNvcmRlciJdCiAgLy8gICAgIHVuaW9uIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiUGVydmFzaXZlIERldmVsb3BtZW50YWwgRGlzb3JkZXIiXQogIC8vICAgICB1bmlvbiBbQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzOiAiUGVydmFzaXZlIERldmVsb3BtZW50YWwgRGlzb3JkZXIiXSApIE1lbnRhbEhlYWx0aERpc29yZGVyRGlhZ25vc2VzCiAgZXhpc3RzICggKCBbQ29uZGl0aW9uOiAiQmlwb2xhciBEaXNvcmRlciJdCiAgICAgIHVuaW9uIFtDb25kaXRpb246ICJQZXJzb25hbGl0eSBEaXNvcmRlciBFbW90aW9uYWxseSBMYWJpbGUiXQogICAgICB1bmlvbiBbQ29uZGl0aW9uOiAiU2NoaXpvcGhyZW5pYSBvciBQc3ljaG90aWMgRGlzb3JkZXIiXQogICAgICB1bmlvbiBbQ29uZGl0aW9uOiAiUGVydmFzaXZlIERldmVsb3BtZW50YWwgRGlzb3JkZXIiXSApIE1lbnRhbEhlYWx0aERpc29yZGVyRGlhZ25vc2VzCiAgICAgIHdoZXJlIHN0YXJ0IG9mIE1lbnRhbEhlYWx0aERpc29yZGVyRGlhZ25vc2VzLnByZXZhbGVuY2VJbnRlcnZhbCAoICkgb24gb3IgYmVmb3JlIGRheSBvZiBlbmQgb2YgIk1lYXN1cmUgQXNzZXNzbWVudCBQZXJpb2QiCiAgICAgICAgYW5kIE1lbnRhbEhlYWx0aERpc29yZGVyRGlhZ25vc2VzLmlzVmVyaWZpZWQgKCApCiAgKQoKZGVmaW5lICJNZWFzdXJlIEFzc2Vzc21lbnQgUGVyaW9kIjoKICAiSW5kZXggRGVwcmVzc2lvbiBBc3Nlc3NtZW50IiBGaXJzdEluZGV4QXNzZXNzbWVudAogICAgbGV0IFllYXJBZnRlckluZGV4QXNzZXNzbWVudDogZGF0ZSBmcm9tIHN0YXJ0IG9mIEZpcnN0SW5kZXhBc3Nlc3NtZW50LmVmZmVjdGl2ZS50b0ludGVydmFsICggKSArIDEyIG1vbnRocwogICAgcmV0dXJuIEludGVydmFsW1llYXJBZnRlckluZGV4QXNzZXNzbWVudCAtIDYwIGRheXMsIFllYXJBZnRlckluZGV4QXNzZXNzbWVudCArIDYwIGRheXNdCgpkZWZpbmUgIlBhdGllbnQgRXhwaXJlZCI6CiAgUGF0aWVudC5kZWNlYXNlZCBvY2N1cnMgb24gb3IgYmVmb3JlIGRheSBvZiBlbmQgb2YgIk1lYXN1cmUgQXNzZXNzbWVudCBQZXJpb2QiCgpkZWZpbmUgIkhhcyBIb3NwaWNlIFNlcnZpY2VzIHByaW9yIHRvIG9yIGR1cmluZyB0aGUgTWVhc3VyZSBBc3Nlc3NtZW50IFBlcmlvZCI6CiAgZXhpc3RzICggW0VuY291bnRlcjogIkVuY291bnRlciBJbnBhdGllbnQiXSBJbnBhdGllbnRFbmNvdW50ZXIKICAgICAgd2hlcmUgKCBJbnBhdGllbnRFbmNvdW50ZXIuaG9zcGl0YWxpemF0aW9uLmRpc2NoYXJnZURpc3Bvc2l0aW9uIH4gIkRpc2NoYXJnZSB0byBob21lIGZvciBob3NwaWNlIGNhcmUgKHByb2NlZHVyZSkiCiAgICAgICAgICBvciBJbnBhdGllbnRFbmNvdW50ZXIuaG9zcGl0YWxpemF0aW9uLmRpc2NoYXJnZURpc3Bvc2l0aW9uIH4gIkRpc2NoYXJnZSB0byBoZWFsdGhjYXJlIGZhY2lsaXR5IGZvciBob3NwaWNlIGNhcmUgKHByb2NlZHVyZSkiCiAgICAgICkKICAgICAgICBhbmQgSW5wYXRpZW50RW5jb3VudGVyLnBlcmlvZCBlbmRzIGR1cmluZyBkYXkgb2YgSW50ZXJ2YWxbc3RhcnQgb2YgIkRlbm9taW5hdG9yIElkZW50aWZpY2F0aW9uIFBlcmlvZCIsIGVuZCBvZiAiTWVhc3VyZSBBc3Nlc3NtZW50IFBlcmlvZCJdCiAgICAgICAgYW5kIElucGF0aWVudEVuY291bnRlci5zdGF0dXMgPSAnZmluaXNoZWQnCiAgKQogICAgb3IgZXhpc3RzICggW0VuY291bnRlcjogIkhvc3BpY2UgRW5jb3VudGVyIl0gSG9zcGljZUVuY291bnRlcgogICAgICAgIHdoZXJlIEhvc3BpY2VFbmNvdW50ZXIucGVyaW9kIG92ZXJsYXBzIGRheSBvZiBJbnRlcnZhbFtzdGFydCBvZiAiRGVub21pbmF0b3IgSWRlbnRpZmljYXRpb24gUGVyaW9kIiwgZW5kIG9mICJNZWFzdXJlIEFzc2Vzc21lbnQgUGVyaW9kIl0KICAgICAgICAgIGFuZCBub3QgKCBIb3NwaWNlRW5jb3VudGVyLnN0YXR1cyBpbiB7ICdjYW5jZWxsZWQnLCAnZW50ZXJlZC1pbi1lcnJvcicsICd1bmtub3duJyB9ICkKICAgICkKICAgIG9yIGV4aXN0cyAoIFtPYnNlcnZhdGlvblNjcmVlbmluZ0Fzc2Vzc21lbnQ6ICJIb3NwaWNlIGNhcmUgW01pbmltdW0gRGF0YSBTZXRdIl0gSG9zcGljZUFzc2Vzc21lbnQKICAgICAgICB3aGVyZSBIb3NwaWNlQXNzZXNzbWVudC52YWx1ZSB+ICJZZXMgKHF1YWxpZmllciB2YWx1ZSkiCiAgICAgICAgICBhbmQgSG9zcGljZUFzc2Vzc21lbnQuZWZmZWN0aXZlLnRvSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiBJbnRlcnZhbFtzdGFydCBvZiAiRGVub21pbmF0b3IgSWRlbnRpZmljYXRpb24gUGVyaW9kIiwgZW5kIG9mICJNZWFzdXJlIEFzc2Vzc21lbnQgUGVyaW9kIl0KICAgICAgICAgIGFuZCBIb3NwaWNlQXNzZXNzbWVudC5zdGF0dXMgaW4geyAnZmluYWwnLCAnYW1lbmRlZCcsICdjb3JyZWN0ZWQnIH0KICAgICkKICAgIG9yIGV4aXN0cyAoIFtTZXJ2aWNlUmVxdWVzdDogIkhvc3BpY2UgQ2FyZSBBbWJ1bGF0b3J5Il0gSG9zcGljZU9yZGVyCiAgICAgICAgd2hlcmUgSG9zcGljZU9yZGVyLmF1dGhvcmVkT24gZHVyaW5nIGRheSBvZiBJbnRlcnZhbFtzdGFydCBvZiAiRGVub21pbmF0b3IgSWRlbnRpZmljYXRpb24gUGVyaW9kIiwgZW5kIG9mICJNZWFzdXJlIEFzc2Vzc21lbnQgUGVyaW9kIl0KICAgICAgICAgIGFuZCBIb3NwaWNlT3JkZXIuc3RhdHVzIGluIHsgJ2FjdGl2ZScsICdjb21wbGV0ZWQnIH0KICAgICAgICAgIGFuZCBIb3NwaWNlT3JkZXIuaW50ZW50IGluIHsgJ29yZGVyJywgJ29yaWdpbmFsLW9yZGVyJywgJ3JlZmxleC1vcmRlcicsICdmaWxsZXItb3JkZXInLCAnaW5zdGFuY2Utb3JkZXInIH0KICAgICkKICAgIG9yIGV4aXN0cyAoIFtQcm9jZWR1cmU6ICJIb3NwaWNlIENhcmUgQW1idWxhdG9yeSJdIEhvc3BpY2VQZXJmb3JtZWQKICAgICAgICB3aGVyZSBIb3NwaWNlUGVyZm9ybWVkLnBlcmZvcm1lZC50b0ludGVydmFsICggKSBvdmVybGFwcyBkYXkgb2YgSW50ZXJ2YWxbc3RhcnQgb2YgIkRlbm9taW5hdG9yIElkZW50aWZpY2F0aW9uIFBlcmlvZCIsIGVuZCBvZiAiTWVhc3VyZSBBc3Nlc3NtZW50IFBlcmlvZCJdCiAgICAgICAgICBhbmQgbm90ICggSG9zcGljZVBlcmZvcm1lZC5zdGF0dXMgaW4geyAnbm90LWRvbmUnLCAnZW50ZXJlZC1pbi1lcnJvcicsICd1bmtub3duJyB9ICkKICAgICkKICAgIC8vIFtFLTEzXSBiYXNlIEZISVIuQ29uZGl0aW9uIHJldHJpZXZlIChkZWZlY3QtdHJhY2tpbmcvZW5naW5lLWlzc3Vlcy5tZCBFLTEzKQogICAgLy8gT3JpZ2luYWw6CiAgICAvLyBvciBleGlzdHMgKCAoIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiSG9zcGljZSBEaWFnbm9zaXMiXQogICAgLy8gICAgIHVuaW9uIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJIb3NwaWNlIERpYWdub3NpcyJdICkgSG9zcGljZUNhcmVEaWFnbm9zaXMKICAgIG9yIGV4aXN0cyAoIFtDb25kaXRpb246ICJIb3NwaWNlIERpYWdub3NpcyJdICBIb3NwaWNlQ2FyZURpYWdub3NpcwogICAgICAgIHdoZXJlIEhvc3BpY2VDYXJlRGlhZ25vc2lzLnByZXZhbGVuY2VJbnRlcnZhbCAoICkgb3ZlcmxhcHMgZGF5IG9mIEludGVydmFsW3N0YXJ0IG9mICJEZW5vbWluYXRvciBJZGVudGlmaWNhdGlvbiBQZXJpb2QiLCBlbmQgb2YgIk1lYXN1cmUgQXNzZXNzbWVudCBQZXJpb2QiXQogICAgICAgICAgYW5kIEhvc3BpY2VDYXJlRGlhZ25vc2lzLmlzVmVyaWZpZWQgKCApCiAgICApCgpkZWZpbmUgIkluZGV4IERlcHJlc3Npb24gQXNzZXNzbWVudCI6CiAgRmlyc3QoIkRlcHJlc3Npb24gQXNzZXNzbWVudHMgR3JlYXRlciBUaGFuIDkiIERlcHJlc3Npb25Bc3Nlc3NtZW50CiAgICAgIHdpdGggIkRlcHJlc3Npb24gRW5jb3VudGVyIiBEZXByZXNzaW9uRW5jb3VudGVyCiAgICAgICAgc3VjaCB0aGF0IERlcHJlc3Npb25Bc3Nlc3NtZW50LmVmZmVjdGl2ZS50b0ludGVydmFsKCkgZHVyaW5nIGRheSBvZiBJbnRlcnZhbFtzdGFydCBvZiBEZXByZXNzaW9uRW5jb3VudGVyLnBlcmlvZCAtIDcgZGF5cywgCiAgICAgICAgZW5kIG9mIERlcHJlc3Npb25FbmNvdW50ZXIucGVyaW9kXQogICAgICBzb3J0IGJ5IHN0YXJ0IG9mIGVmZmVjdGl2ZS50b0ludGVydmFsKCkKICApCgpkZWZpbmUgIkhhcyBQYWxsaWF0aXZlIENhcmUgcHJpb3IgdG8gb3IgZHVyaW5nIHRoZSBNZWFzdXJlIEFzc2Vzc21lbnQgUGVyaW9kIjoKICBleGlzdHMgKCBbT2JzZXJ2YXRpb25TY3JlZW5pbmdBc3Nlc3NtZW50OiAiRnVuY3Rpb25hbCBBc3Nlc3NtZW50IG9mIENocm9uaWMgSWxsbmVzcyBUaGVyYXB5IC0gUGFsbGlhdGl2ZSBDYXJlIFF1ZXN0aW9ubmFpcmUgKEZBQ0lULVBhbCkiXSBQYWxsaWF0aXZlQXNzZXNzbWVudAogICAgICB3aGVyZSBQYWxsaWF0aXZlQXNzZXNzbWVudC5lZmZlY3RpdmUudG9JbnRlcnZhbCAoICkgb3ZlcmxhcHMgZGF5IG9mIEludGVydmFsW3N0YXJ0IG9mICJEZW5vbWluYXRvciBJZGVudGlmaWNhdGlvbiBQZXJpb2QiLCBlbmQgb2YgIk1lYXN1cmUgQXNzZXNzbWVudCBQZXJpb2QiXQogICAgICAgIGFuZCBQYWxsaWF0aXZlQXNzZXNzbWVudC5zdGF0dXMgaW4geyAnZmluYWwnLCAnYW1lbmRlZCcsICdjb3JyZWN0ZWQnIH0KICApCiAgICAgIC8vIFtFLTEzXSBiYXNlIEZISVIuQ29uZGl0aW9uIHJldHJpZXZlIChkZWZlY3QtdHJhY2tpbmcvZW5naW5lLWlzc3Vlcy5tZCBFLTEzKQogICAgICAvLyBPcmlnaW5hbDoKICAgICAgLy8gb3IgZXhpc3RzICggKCBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIlBhbGxpYXRpdmUgQ2FyZSBEaWFnbm9zaXMiXQogICAgICAvLyAgIHVuaW9uIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJQYWxsaWF0aXZlIENhcmUgRGlhZ25vc2lzIl0gKSBQYWxsaWF0aXZlRGlhZ25vc2lzCiAgICAgIG9yIGV4aXN0cyAoIFtDb25kaXRpb246ICJQYWxsaWF0aXZlIENhcmUgRGlhZ25vc2lzIl0gUGFsbGlhdGl2ZURpYWdub3NpcwogICAgICAgIHdoZXJlIFBhbGxpYXRpdmVEaWFnbm9zaXMucHJldmFsZW5jZUludGVydmFsICggKSBvdmVybGFwcyBkYXkgb2YgSW50ZXJ2YWxbc3RhcnQgb2YgIkRlbm9taW5hdG9yIElkZW50aWZpY2F0aW9uIFBlcmlvZCIsIGVuZCBvZiAiTWVhc3VyZSBBc3Nlc3NtZW50IFBlcmlvZCJdCiAgICAgICAgICBhbmQgUGFsbGlhdGl2ZURpYWdub3Npcy5pc1ZlcmlmaWVkICggKQogICAgKQogICAgb3IgZXhpc3RzICggW0VuY291bnRlcjogIlBhbGxpYXRpdmUgQ2FyZSBFbmNvdW50ZXIiXSBQYWxsaWF0aXZlRW5jb3VudGVyCiAgICAgICAgd2hlcmUgUGFsbGlhdGl2ZUVuY291bnRlci5wZXJpb2Qgb3ZlcmxhcHMgZGF5IG9mIEludGVydmFsW3N0YXJ0IG9mICJEZW5vbWluYXRvciBJZGVudGlmaWNhdGlvbiBQZXJpb2QiLCBlbmQgb2YgIk1lYXN1cmUgQXNzZXNzbWVudCBQZXJpb2QiXQogICAgICAgICAgYW5kIFBhbGxpYXRpdmVFbmNvdW50ZXIuc3RhdHVzID0gJ2ZpbmlzaGVkJwogICAgKQogICAgb3IgZXhpc3RzICggW1Byb2NlZHVyZTogIlBhbGxpYXRpdmUgQ2FyZSBJbnRlcnZlbnRpb24iXSBQYWxsaWF0aXZlSW50ZXJ2ZW50aW9uCiAgICAgICAgd2hlcmUgUGFsbGlhdGl2ZUludGVydmVudGlvbi5wZXJmb3JtZWQudG9JbnRlcnZhbCAoICkgb3ZlcmxhcHMgZGF5IG9mIEludGVydmFsW3N0YXJ0IG9mICJEZW5vbWluYXRvciBJZGVudGlmaWNhdGlvbiBQZXJpb2QiLCBlbmQgb2YgIk1lYXN1cmUgQXNzZXNzbWVudCBQZXJpb2QiXQogICAgICAgICAgYW5kIG5vdCAoIFBhbGxpYXRpdmVJbnRlcnZlbnRpb24uc3RhdHVzIGluIHsgJ25vdC1kb25lJywgJ2VudGVyZWQtaW4tZXJyb3InLCAndW5rbm93bicgfSApCiAgICApCgpkZWZpbmUgZmx1ZW50IGZ1bmN0aW9uIGlzVmVyaWZpZWQoY29uZGl0aW9uIENob2ljZTxDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXMsIENvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM+KToKICBjb25kaXRpb24udmVyaWZpY2F0aW9uU3RhdHVzIGlzIG5vdCBudWxsIGltcGxpZXMgKCBjb25kaXRpb24udmVyaWZpY2F0aW9uU3RhdHVzIH4gU3RhdHVzLiJjb25maXJtZWQiCiAgICAgIG9yIGNvbmRpdGlvbi52ZXJpZmljYXRpb25TdGF0dXMgfiBTdGF0dXMuInVuY29uZmlybWVkIgogICAgICBvciBjb25kaXRpb24udmVyaWZpY2F0aW9uU3RhdHVzIH4gU3RhdHVzLiJwcm92aXNpb25hbCIKICAgICAgb3IgY29uZGl0aW9uLnZlcmlmaWNhdGlvblN0YXR1cyB+IFN0YXR1cy4iZGlmZmVyZW50aWFsIgogICkKCmRlZmluZSAiU3RyYXRpZmljYXRpb24gMSI6CiAgIkluZGV4IERlcHJlc3Npb24gQXNzZXNzbWVudCIgSW5kZXhBc3Nlc3NtZW50CiAgICByZXR1cm4gQWdlSW5ZZWFyc0F0KGRhdGUgZnJvbSBzdGFydCBvZiBJbmRleEFzc2Vzc21lbnQuZWZmZWN0aXZlLnRvSW50ZXJ2YWwoKSkgaW4gSW50ZXJ2YWxbMTIsIDE3XQoKZGVmaW5lICJTdHJhdGlmaWNhdGlvbiAyIjoKICAiSW5kZXggRGVwcmVzc2lvbiBBc3Nlc3NtZW50IiBJbmRleEFzc2Vzc21lbnQKICAgIHJldHVybiBBZ2VJblllYXJzQXQoZGF0ZSBmcm9tIHN0YXJ0IG9mIEluZGV4QXNzZXNzbWVudC5lZmZlY3RpdmUudG9JbnRlcnZhbCgpKSA+PSAxOA=="/>
<url
value="https://madie.cms.gov/Library-CMS159FHIRDepRemissionat12Months.cql"/>
</content>
</Library>