eCQM QICore Content Implementation Guide
2025.0.0 - CI Build
eCQM QICore Content Implementation Guide, published by cqframework. This guide is not an authorized publication; it is the continuous build for version 2025.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/cqframework/ecqm-content-qicore-2025/ and changes regularly. See the Directory of published versions
Active as of 2025-04-16 |
<Library xmlns="http://hl7.org/fhir">
<id value="OncologyPainIntensityQuantifiedFHIR"/>
<meta>
<profile
value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary"/>
<profile
value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-computablelibrary"/>
<profile
value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary"/>
<profile
value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-executablelibrary"/>
<profile
value="http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library"/>
<profile
value="http://hl7.org/fhir/uv/cql/StructureDefinition/elm-json-library"/>
<profile
value="http://hl7.org/fhir/uv/cql/StructureDefinition/elm-xml-library"/>
</meta>
<language value="en"/>
<text>
<status value="extensions"/>
<div xmlns="http://www.w3.org/1999/xhtml">
<table class="grid dict">
<tr>
<th scope="row"><b>Title: </b></th>
<td style="padding-left: 4px;">OncologyPainIntensityQuantifiedFHIR</td>
</tr>
<tr>
<th scope="row"><b>Id: </b></th>
<td style="padding-left: 4px;">OncologyPainIntensityQuantifiedFHIR</td>
</tr>
<tr>
<th scope="row"><b>Version: </b></th>
<td style="padding-left: 4px;">0.3.000</td>
</tr>
<tr>
<th scope="row"><b>Url: </b></th>
<td style="padding-left: 4px;">https://madie.cms.gov/Library/OncologyPainIntensityQuantifiedFHIR</td>
</tr>
<tr>
<th scope="row">
<b>
official
</b>
</th>
<td style="padding-left: 4px;">
<p style="margin-bottom: 5px;">
<span>OncologyPainIntensityQuantifiedFHIR</span>
</p>
</td>
</tr>
<tr>
<th scope="row"><b>Type: </b></th>
<td style="padding-left: 4px;">
<p style="margin-bottom: 5px;">
<b>system: </b> <span>http://terminology.hl7.org/CodeSystem/library-type</span>
</p>
<p style="margin-bottom: 5px;">
<b>code: </b> <span>logic-library</span>
</p>
</td>
</tr>
<tr>
<th scope="row"><b>Date: </b></th>
<td style="padding-left: 4px;">2025-04-16T15:15:42+00:00</td>
</tr>
<tr>
<th scope="row"><b>Publisher: </b></th>
<td style="padding-left: 4px;">American Society of Clinical Oncology</td>
</tr>
<tr>
<th scope="row"><b>Description: </b></th>
<td style="padding-left: 4px;">OncologyPainIntensityQuantifiedFHIR</td>
</tr>
<tr>
<th scope="row"><b>Related Artifacts: </b></th>
<td style="padding-left: 4px;">
<p><b>Dependencies</b></p>
<ul>
<li>https://madie.cms.gov/Library/QICoreCommon|4.0.000</li>
<li>http://www.ama-assn.org/go/cpt</li>
<li>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1026</li>
<li>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1010</li>
<li>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001</li>
<li>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.1444.5.215</li>
<li>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1027</li>
<li>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1028</li>
</ul>
</td>
</tr>
<tr>
<th scope="row"><b>Data Requirements:</b></th>
<td style="padding-left: 4px;">
<table class="grid-dict">
<tr><th><b>Type</b></th><th><b>Profile</b></th><th><b>MS</b></th><th><b>Code Filter</b></th></tr>
<tr>
<th>Encounter</th>
<th>http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter</th>
<th>;;</th>
<th>
<b>code filter: </b>
<br/>
<span style="padding-left: 4px;">
<b>path: </b><span>type</span>
</span>
<br/>
<span style="padding-left: 4px;">
<b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001</span>
</span>
</th>
</tr>
<tr>
<th>Encounter</th>
<th>http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter</th>
<th>;;</th>
<th>
<b>code filter: </b>
<br/>
<span style="padding-left: 4px;">
<b>path: </b><span>type</span>
</span>
<br/>
<span style="padding-left: 4px;">
<b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.1444.5.215</span>
</span>
</th>
</tr>
<tr>
<th>Observation</th>
<th>http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation-screening-assessment</th>
<th>;;;;;</th>
<th>
<b>code filter: </b>
<br/>
<span style="padding-left: 4px;">
<b>path: </b><span>code</span>
</span>
<br/>
<span style="padding-left: 4px;">
<b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1028</span>
</span>
</th>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2">
<table>
<tr><th><a id="cql-content"><b>Content: </b></a> text/cql</th></tr>
<tr><td><pre><code class="language-cql">library OncologyPainIntensityQuantifiedFHIR version '0.3.000'
using QICore version '6.0.0'
include FHIRHelpers version '4.4.000' called FHIRHelpers
include CQMCommon version '4.0.000' called CQMCommon
include QICoreCommon version '4.0.000' called QICoreCommon
include SupplementalDataElements version '5.1.000' called SDE
codesystem "CPT": 'http://www.ama-assn.org/go/cpt'
valueset "Audio Visual Telehealth Encounter": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.1444.5.215'
valueset "Cancer": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1010'
valueset "Chemotherapy Administration": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1027'
valueset "Office Visit": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001'
valueset "Radiation Treatment Management": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1026'
valueset "Standardized Pain Assessment Tool": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1028'
code "Radiation treatment management, 5 treatments": '77427' from "CPT" display 'Radiation treatment management, 5 treatments'
parameter "Measurement Period" Interval<DateTime>
context Patient
define "Denominator 1":
"Initial Population 1"
define "Denominator 2":
"Initial Population 2"
define "Initial Population 1":
"Face to Face or Telehealth Encounter with Ongoing Chemotherapy"
define "Initial Population 2":
"Radiation Treatment Management During Measurement Period with Cancer Diagnosis"
define "Chemotherapy Within 31 Days Prior and During Measurement Period":
[Procedure: "Chemotherapy Administration"] ChemoAdministration
where ChemoAdministration.performed.toInterval ( ) during Interval[start of "Measurement Period" - 31 days, end of "Measurement Period"]
and ChemoAdministration.status = 'completed'
define "Face to Face or Telehealth Encounter with Ongoing Chemotherapy":
from
( [Encounter: "Office Visit"]
union [Encounter: "Audio Visual Telehealth Encounter"] ) FaceToFaceOrTelehealthEncounter,
"Chemotherapy Within 31 Days Prior and During Measurement Period" ChemoBeforeEncounter,
"Chemotherapy Within 31 Days Prior and During Measurement Period" ChemoAfterEncounter,
[ConditionProblemsHealthConcerns: "Cancer"] CancerDx
where CancerDx.prevalenceInterval ( ) overlaps FaceToFaceOrTelehealthEncounter.period
and ChemoBeforeEncounter.performed.toInterval ( ) starts 30 days or less on or before day of end of FaceToFaceOrTelehealthEncounter.period
and ChemoAfterEncounter.performed.toInterval ( ) starts 30 days or less on or after day of end of FaceToFaceOrTelehealthEncounter.period
and not ( ChemoAfterEncounter.performed.toInterval ( ) same day as ChemoBeforeEncounter.performed.toInterval ( ) )
and FaceToFaceOrTelehealthEncounter.period during "Measurement Period"
and FaceToFaceOrTelehealthEncounter.status = 'finished'
return FaceToFaceOrTelehealthEncounter
define "Numerator 1":
"Face to Face or Telehealth Encounter with Ongoing Chemotherapy" FaceToFaceOrTelehealthEncounterWithChemo
with "Standard Pain Assessment with Result" PainAssessed
such that PainAssessed.effective.toInterval ( ) during FaceToFaceOrTelehealthEncounterWithChemo.period
define "Radiation Treatment Management During Measurement Period with Cancer Diagnosis":
( [Encounter: "Radiation Treatment Management"] ) RadiationTreatmentManagement
with [ConditionProblemsHealthConcerns: "Cancer"] CancerDx
such that CancerDx.isActive ( )
and CancerDx.prevalenceInterval ( ) overlaps RadiationTreatmentManagement.period
where RadiationTreatmentManagement.period during "Measurement Period"
and RadiationTreatmentManagement.status = 'finished'
define "Numerator 2":
"Radiation Treatment Management During Measurement Period with Cancer Diagnosis" RadiationManagementEncounter
with "Standard Pain Assessment with Result" PainAssessed
such that case
when exists ( ( RadiationManagementEncounter.type ) RadiationManagement
where RadiationManagement ~ "Radiation treatment management, 5 treatments"
) then PainAssessed.effective.toInterval ( ) 6 days or less on or before day of start of RadiationManagementEncounter.period
else PainAssessed.effective.toInterval ( ) during day of RadiationManagementEncounter.period end
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 "Standard Pain Assessment with Result":
[ObservationScreeningAssessment: "Standardized Pain Assessment Tool"] AssessedPain
where AssessedPain.value is not null
and AssessedPain.status = 'final'</code></pre></td></tr>
</table>
</td>
</tr>
</table>
</div>
</text>
<contained>
<Parameters>
<id value="options"/>
<parameter>
<name value="translatorVersion"/>
<valueString value="3.25.0"/>
</parameter>
<parameter>
<name value="option"/>
<valueString value="EnableAnnotations"/>
</parameter>
<parameter>
<name value="option"/>
<valueString value="EnableLocators"/>
</parameter>
<parameter>
<name value="option"/>
<valueString value="DisableListDemotion"/>
</parameter>
<parameter>
<name value="option"/>
<valueString value="DisableListPromotion"/>
</parameter>
<parameter>
<name value="format"/>
<valueString value="JSON"/>
</parameter>
<parameter>
<name value="format"/>
<valueString value="XML"/>
</parameter>
<parameter>
<name value="analyzeDataRequirements"/>
<valueBoolean value="false"/>
</parameter>
<parameter>
<name value="collapseDataRequirements"/>
<valueBoolean value="false"/>
</parameter>
<parameter>
<name value="compatibilityLevel"/>
<valueString value="1.5"/>
</parameter>
<parameter>
<name value="enableCqlOnly"/>
<valueBoolean value="false"/>
</parameter>
<parameter>
<name value="errorLevel"/>
<valueString value="Info"/>
</parameter>
<parameter>
<name value="signatureLevel"/>
<valueString value="Overloads"/>
</parameter>
<parameter>
<name value="validateUnits"/>
<valueBoolean value="true"/>
</parameter>
<parameter>
<name value="verifyOnly"/>
<valueBoolean value="false"/>
</parameter>
</Parameters>
</contained>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-directReferenceCode">
<valueCoding>
<system value="http://www.ama-assn.org/go/cpt"/>
<code value="77427"/>
<display value="Radiation treatment management, 5 treatments"/>
</valueCoding>
</extension>
<extension url="http://hl7.org/fhir/StructureDefinition/cqf-cqlOptions">
<valueReference>
<reference value="#options"/>
</valueReference>
</extension>
<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/OncologyPainIntensityQuantifiedFHIR"/>
<identifier>
<use value="official"/>
<system value="https://madie.cms.gov/login"/>
<value value="OncologyPainIntensityQuantifiedFHIR"/>
</identifier>
<version value="0.3.000"/>
<name value="OncologyPainIntensityQuantifiedFHIR"/>
<title value="OncologyPainIntensityQuantifiedFHIR"/>
<status value="active"/>
<experimental value="false"/>
<type>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/library-type"/>
<code value="logic-library"/>
</coding>
</type>
<date value="2025-04-16T15:15:42+00:00"/>
<publisher value="American Society of Clinical Oncology"/>
<description value="OncologyPainIntensityQuantifiedFHIR"/>
<content>
<contentType value="text/cql"/>
<data
value="bGlicmFyeSBPbmNvbG9neVBhaW5JbnRlbnNpdHlRdWFudGlmaWVkRkhJUiB2ZXJzaW9uICcwLjMuMDAwJw0KDQp1c2luZyBRSUNvcmUgdmVyc2lvbiAnNi4wLjAnDQoNCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC40LjAwMCcgY2FsbGVkIEZISVJIZWxwZXJzDQppbmNsdWRlIENRTUNvbW1vbiB2ZXJzaW9uICc0LjAuMDAwJyBjYWxsZWQgQ1FNQ29tbW9uDQppbmNsdWRlIFFJQ29yZUNvbW1vbiB2ZXJzaW9uICc0LjAuMDAwJyBjYWxsZWQgUUlDb3JlQ29tbW9uDQppbmNsdWRlIFN1cHBsZW1lbnRhbERhdGFFbGVtZW50cyB2ZXJzaW9uICc1LjEuMDAwJyBjYWxsZWQgU0RFDQoNCmNvZGVzeXN0ZW0gIkNQVCI6ICdodHRwOi8vd3d3LmFtYS1hc3NuLm9yZy9nby9jcHQnDQoNCnZhbHVlc2V0ICJBdWRpbyBWaXN1YWwgVGVsZWhlYWx0aCBFbmNvdW50ZXIiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuMTQ0NC41LjIxNScNCnZhbHVlc2V0ICJDYW5jZXIiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNTI2LjMuMTAxMCcNCnZhbHVlc2V0ICJDaGVtb3RoZXJhcHkgQWRtaW5pc3RyYXRpb24iOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNTI2LjMuMTAyNycNCnZhbHVlc2V0ICJPZmZpY2UgVmlzaXQiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwMDEnDQp2YWx1ZXNldCAiUmFkaWF0aW9uIFRyZWF0bWVudCBNYW5hZ2VtZW50IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjEwMjYnDQp2YWx1ZXNldCAiU3RhbmRhcmRpemVkIFBhaW4gQXNzZXNzbWVudCBUb29sIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjEwMjgnDQoNCmNvZGUgIlJhZGlhdGlvbiB0cmVhdG1lbnQgbWFuYWdlbWVudCwgNSB0cmVhdG1lbnRzIjogJzc3NDI3JyBmcm9tICJDUFQiIGRpc3BsYXkgJ1JhZGlhdGlvbiB0cmVhdG1lbnQgbWFuYWdlbWVudCwgNSB0cmVhdG1lbnRzJw0KDQpwYXJhbWV0ZXIgIk1lYXN1cmVtZW50IFBlcmlvZCIgSW50ZXJ2YWw8RGF0ZVRpbWU+DQoNCmNvbnRleHQgUGF0aWVudA0KDQpkZWZpbmUgIkRlbm9taW5hdG9yIDEiOg0KICAiSW5pdGlhbCBQb3B1bGF0aW9uIDEiDQoNCmRlZmluZSAiRGVub21pbmF0b3IgMiI6DQogICJJbml0aWFsIFBvcHVsYXRpb24gMiINCg0KZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24gMSI6DQogICJGYWNlIHRvIEZhY2Ugb3IgVGVsZWhlYWx0aCBFbmNvdW50ZXIgd2l0aCBPbmdvaW5nIENoZW1vdGhlcmFweSINCg0KZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24gMiI6DQogICJSYWRpYXRpb24gVHJlYXRtZW50IE1hbmFnZW1lbnQgRHVyaW5nIE1lYXN1cmVtZW50IFBlcmlvZCB3aXRoIENhbmNlciBEaWFnbm9zaXMiDQoNCmRlZmluZSAiQ2hlbW90aGVyYXB5IFdpdGhpbiAzMSBEYXlzIFByaW9yIGFuZCBEdXJpbmcgTWVhc3VyZW1lbnQgUGVyaW9kIjoNCiAgW1Byb2NlZHVyZTogIkNoZW1vdGhlcmFweSBBZG1pbmlzdHJhdGlvbiJdIENoZW1vQWRtaW5pc3RyYXRpb24NCiAgICB3aGVyZSBDaGVtb0FkbWluaXN0cmF0aW9uLnBlcmZvcm1lZC50b0ludGVydmFsICggKSBkdXJpbmcgSW50ZXJ2YWxbc3RhcnQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIgLSAzMSBkYXlzLCBlbmQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCJdDQogICAgICBhbmQgQ2hlbW9BZG1pbmlzdHJhdGlvbi5zdGF0dXMgPSAnY29tcGxldGVkJw0KDQpkZWZpbmUgIkZhY2UgdG8gRmFjZSBvciBUZWxlaGVhbHRoIEVuY291bnRlciB3aXRoIE9uZ29pbmcgQ2hlbW90aGVyYXB5IjoNCiAgZnJvbQ0KICAgICggW0VuY291bnRlcjogIk9mZmljZSBWaXNpdCJdDQogICAgICB1bmlvbiBbRW5jb3VudGVyOiAiQXVkaW8gVmlzdWFsIFRlbGVoZWFsdGggRW5jb3VudGVyIl0gKSBGYWNlVG9GYWNlT3JUZWxlaGVhbHRoRW5jb3VudGVyLA0KICAgICJDaGVtb3RoZXJhcHkgV2l0aGluIDMxIERheXMgUHJpb3IgYW5kIER1cmluZyBNZWFzdXJlbWVudCBQZXJpb2QiIENoZW1vQmVmb3JlRW5jb3VudGVyLA0KICAgICJDaGVtb3RoZXJhcHkgV2l0aGluIDMxIERheXMgUHJpb3IgYW5kIER1cmluZyBNZWFzdXJlbWVudCBQZXJpb2QiIENoZW1vQWZ0ZXJFbmNvdW50ZXIsDQogICAgW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJDYW5jZXIiXSBDYW5jZXJEeA0KICAgIHdoZXJlIENhbmNlckR4LnByZXZhbGVuY2VJbnRlcnZhbCAoICkgb3ZlcmxhcHMgRmFjZVRvRmFjZU9yVGVsZWhlYWx0aEVuY291bnRlci5wZXJpb2QNCiAgICAgIGFuZCBDaGVtb0JlZm9yZUVuY291bnRlci5wZXJmb3JtZWQudG9JbnRlcnZhbCAoICkgc3RhcnRzIDMwIGRheXMgb3IgbGVzcyBvbiBvciBiZWZvcmUgZGF5IG9mIGVuZCBvZiBGYWNlVG9GYWNlT3JUZWxlaGVhbHRoRW5jb3VudGVyLnBlcmlvZA0KICAgICAgYW5kIENoZW1vQWZ0ZXJFbmNvdW50ZXIucGVyZm9ybWVkLnRvSW50ZXJ2YWwgKCApIHN0YXJ0cyAzMCBkYXlzIG9yIGxlc3Mgb24gb3IgYWZ0ZXIgZGF5IG9mIGVuZCBvZiBGYWNlVG9GYWNlT3JUZWxlaGVhbHRoRW5jb3VudGVyLnBlcmlvZA0KICAgICAgYW5kIG5vdCAoIENoZW1vQWZ0ZXJFbmNvdW50ZXIucGVyZm9ybWVkLnRvSW50ZXJ2YWwgKCApIHNhbWUgZGF5IGFzIENoZW1vQmVmb3JlRW5jb3VudGVyLnBlcmZvcm1lZC50b0ludGVydmFsICggKSApDQogICAgICBhbmQgRmFjZVRvRmFjZU9yVGVsZWhlYWx0aEVuY291bnRlci5wZXJpb2QgZHVyaW5nICJNZWFzdXJlbWVudCBQZXJpb2QiDQogICAgICBhbmQgRmFjZVRvRmFjZU9yVGVsZWhlYWx0aEVuY291bnRlci5zdGF0dXMgPSAnZmluaXNoZWQnDQogICAgcmV0dXJuIEZhY2VUb0ZhY2VPclRlbGVoZWFsdGhFbmNvdW50ZXINCg0KZGVmaW5lICJOdW1lcmF0b3IgMSI6DQogICJGYWNlIHRvIEZhY2Ugb3IgVGVsZWhlYWx0aCBFbmNvdW50ZXIgd2l0aCBPbmdvaW5nIENoZW1vdGhlcmFweSIgRmFjZVRvRmFjZU9yVGVsZWhlYWx0aEVuY291bnRlcldpdGhDaGVtbw0KICAgIHdpdGggIlN0YW5kYXJkIFBhaW4gQXNzZXNzbWVudCB3aXRoIFJlc3VsdCIgUGFpbkFzc2Vzc2VkDQogICAgICBzdWNoIHRoYXQgUGFpbkFzc2Vzc2VkLmVmZmVjdGl2ZS50b0ludGVydmFsICggKSBkdXJpbmcgRmFjZVRvRmFjZU9yVGVsZWhlYWx0aEVuY291bnRlcldpdGhDaGVtby5wZXJpb2QNCg0KZGVmaW5lICJSYWRpYXRpb24gVHJlYXRtZW50IE1hbmFnZW1lbnQgRHVyaW5nIE1lYXN1cmVtZW50IFBlcmlvZCB3aXRoIENhbmNlciBEaWFnbm9zaXMiOg0KICAoIFtFbmNvdW50ZXI6ICJSYWRpYXRpb24gVHJlYXRtZW50IE1hbmFnZW1lbnQiXSApIFJhZGlhdGlvblRyZWF0bWVudE1hbmFnZW1lbnQNCiAgICB3aXRoIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiQ2FuY2VyIl0gQ2FuY2VyRHgNCiAgICAgIHN1Y2ggdGhhdCBDYW5jZXJEeC5pc0FjdGl2ZSAoICkNCiAgICAgICAgYW5kIENhbmNlckR4LnByZXZhbGVuY2VJbnRlcnZhbCAoICkgb3ZlcmxhcHMgUmFkaWF0aW9uVHJlYXRtZW50TWFuYWdlbWVudC5wZXJpb2QNCiAgICB3aGVyZSBSYWRpYXRpb25UcmVhdG1lbnRNYW5hZ2VtZW50LnBlcmlvZCBkdXJpbmcgIk1lYXN1cmVtZW50IFBlcmlvZCINCiAgICAgIGFuZCBSYWRpYXRpb25UcmVhdG1lbnRNYW5hZ2VtZW50LnN0YXR1cyA9ICdmaW5pc2hlZCcNCg0KZGVmaW5lICJOdW1lcmF0b3IgMiI6DQogICJSYWRpYXRpb24gVHJlYXRtZW50IE1hbmFnZW1lbnQgRHVyaW5nIE1lYXN1cmVtZW50IFBlcmlvZCB3aXRoIENhbmNlciBEaWFnbm9zaXMiIFJhZGlhdGlvbk1hbmFnZW1lbnRFbmNvdW50ZXINCiAgICB3aXRoICJTdGFuZGFyZCBQYWluIEFzc2Vzc21lbnQgd2l0aCBSZXN1bHQiIFBhaW5Bc3Nlc3NlZA0KICAgICAgc3VjaCB0aGF0IGNhc2UNCiAgICAgICAgd2hlbiBleGlzdHMgKCAoIFJhZGlhdGlvbk1hbmFnZW1lbnRFbmNvdW50ZXIudHlwZSApIFJhZGlhdGlvbk1hbmFnZW1lbnQNCiAgICAgICAgICAgIHdoZXJlIFJhZGlhdGlvbk1hbmFnZW1lbnQgfiAiUmFkaWF0aW9uIHRyZWF0bWVudCBtYW5hZ2VtZW50LCA1IHRyZWF0bWVudHMiDQogICAgICAgICkgdGhlbiBQYWluQXNzZXNzZWQuZWZmZWN0aXZlLnRvSW50ZXJ2YWwgKCApIDYgZGF5cyBvciBsZXNzIG9uIG9yIGJlZm9yZSBkYXkgb2Ygc3RhcnQgb2YgUmFkaWF0aW9uTWFuYWdlbWVudEVuY291bnRlci5wZXJpb2QgDQogICAgICAgIGVsc2UgUGFpbkFzc2Vzc2VkLmVmZmVjdGl2ZS50b0ludGVydmFsICggKSBkdXJpbmcgZGF5IG9mIFJhZGlhdGlvbk1hbmFnZW1lbnRFbmNvdW50ZXIucGVyaW9kIGVuZA0KDQpkZWZpbmUgIlNERSBFdGhuaWNpdHkiOg0KICBTREUuIlNERSBFdGhuaWNpdHkiDQoNCmRlZmluZSAiU0RFIFBheWVyIjoNCiAgU0RFLiJTREUgUGF5ZXIiDQoNCmRlZmluZSAiU0RFIFJhY2UiOg0KICBTREUuIlNERSBSYWNlIg0KDQpkZWZpbmUgIlNERSBTZXgiOg0KICBTREUuIlNERSBTZXgiDQoNCmRlZmluZSAiU3RhbmRhcmQgUGFpbiBBc3Nlc3NtZW50IHdpdGggUmVzdWx0IjoNCiAgW09ic2VydmF0aW9uU2NyZWVuaW5nQXNzZXNzbWVudDogIlN0YW5kYXJkaXplZCBQYWluIEFzc2Vzc21lbnQgVG9vbCJdIEFzc2Vzc2VkUGFpbg0KICAgIHdoZXJlIEFzc2Vzc2VkUGFpbi52YWx1ZSBpcyBub3QgbnVsbA0KICAgICAgYW5kIEFzc2Vzc2VkUGFpbi5zdGF0dXMgPSAnZmluYWwn"/>
</content>
</Library>