This page is part of the Quality Measure STU2 for FHIR R4 Implementation Guide (v2.0.0: STU 2) based on FHIR R4. The current version which supercedes this version is 3.0.0. For a full list of available versions, see the Directory of published versions
<Library xmlns="http://hl7.org/fhir"> <id value="EXMComputableLibrary"/> <meta> <profile value="http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/computable-library-cqfm"/> </meta> <text> <status value="extensions"/> <div xmlns="http://www.w3.org/1999/xhtml"> <table class="grid dict"> <tr> <th scope="row"><b>Id: </b></th> <td style="padding-left: 25px;">EXMComputableLibrary</td> </tr> <tr> <th scope="row"><b>Url: </b></th> <td style="padding-left: 25px;">http://hl7.org/fhir/us/cqfmeasures/Library/EXMComputableLibrary</td> </tr> <tr> <th scope="row"><b>Version: </b></th> <td style="padding-left: 25px;">2.0.0</td> </tr> <tr> <th scope="row"><b>Identifier: </b></th> <td style="padding-left: 25px;"> <p style="margin-bottom: 5px;"> <b>value: </b> <span>EXMComputableLogic</span> </p> </td> </tr> <tr> <th scope="row"><b>Name: </b></th> <td style="padding-left: 25px;">EXMComputableLibrary</td> </tr> <tr> <th scope="row"><b>Title: </b></th> <td style="padding-left: 25px;">Example Computable Library</td> </tr> <tr> <th scope="row"><b>Status: </b></th> <td style="padding-left: 25px;">active</td> </tr> <tr> <th scope="row"><b>Experimental: </b></th> <td style="padding-left: 25px;">true</td> </tr> <tr> <th scope="row"><b>Type: </b></th> <td style="padding-left: 25px;"> <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: 25px;">2019-09-03</td> </tr> <tr> <th scope="row"><b>Publisher: </b></th> <td style="padding-left: 25px;">Health Level 7 International - Clinical Quality Information Work Group</td> </tr> <tr> <th scope="row"><b>Description: </b></th> <td style="padding-left: 25px;">This library is used as an example in the FHIR Quality Measure Implementation Guide</td> </tr> <tr> <th scope="row"><b>Use Context: </b></th> <td style="padding-left: 25px;"> <table class="grid-dict"> <tr><th><b>code</b></th><th><b>value</b></th></tr> <tr> <td>program</td> <td>eh-cah</td> </tr> </table> </td> </tr> <tr> <th scope="row"><b>Jurisdiction: </b></th> <td style="padding-left: 25px;">US</td> </tr> <tr> <th scope="row"><b>Approval Date: </b></th> <td style="padding-left: 25px;">2019-08-03</td> </tr> <tr> <th scope="row"><b>Last Review Date: </b></th> <td style="padding-left: 25px;">2019-08-03</td> </tr> <tr> <th scope="row"><b>Related Artifacts: </b></th> <td style="padding-left: 25px;"> <table class="grid-dict"> <tr><th><b>Type</b></th><th><b>Resource</b></th></tr> <tr><td>depends-on</td><td>http://hl7.org/fhir/Library/FHIR-ModelInfo|4.0.1</td></tr> <tr><td>depends-on</td><td>http://hl7.org/fhir/Library/FHIRHelpers|4.0.1</td></tr> <tr><td>depends-on</td><td>http://terminology.hl7.org/CodeSystem/diagnosis-role</td></tr> <tr><td>depends-on</td><td>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292</td></tr> <tr><td>depends-on</td><td>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.299</td></tr> <tr><td>depends-on</td><td>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.126</td></tr> <tr><td>depends-on</td><td>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1</td></tr> <tr><td>depends-on</td><td>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.836</td></tr> <tr><td>depends-on</td><td>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.837</td></tr> <tr><td>depends-on</td><td>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591</td></tr> </table> </td> </tr> <tr> <th scope="row"><b>Parameters: </b></th> <td style="padding-left: 25px;"> <table class="grid-dict"> <tr><th><b>Name</b></th><th><b>Type</b></th><th><b>Min</b></th><th><b>Max</b></th><th><b>In/Out</b></th></tr> <tr><th>Measurement Period</th><th>Period</th><th>0</th><th>1</th><th>in</th></tr> <tr><th>Patient</th><th>Patient</th><th>0</th><th>1</th><th>out</th></tr> <tr><th>Inpatient Encounter</th><th>Encounter</th><th>0</th><th>*</th><th>out</th></tr> <tr><th>Initial Population</th><th>Encounter</th><th>0</th><th>*</th><th>out</th></tr> <tr><th>Measure Population</th><th>Encounter</th><th>0</th><th>*</th><th>out</th></tr> <tr><th>Stratifier 1</th><th>Encounter</th><th>0</th><th>*</th><th>out</th></tr> <tr><th>Stratifier 2</th><th>Encounter</th><th>0</th><th>*</th><th>out</th></tr> <tr><th>Stratifier 3</th><th>Encounter</th><th>0</th><th>*</th><th>out</th></tr> <tr><th>Stratifier 4</th><th>Encounter</th><th>0</th><th>*</th><th>out</th></tr> <tr><th>SDE Ethnicity</th><th>Coding</th><th>0</th><th>*</th><th>out</th></tr> <tr><th>SDE Payer</th><th>Any</th><th>0</th><th>*</th><th>out</th></tr> <tr><th>SDE Race</th><th>Coding</th><th>0</th><th>*</th><th>out</th></tr> <tr><th>SDE Sex</th><th>Coding</th><th>0</th><th>1</th><th>out</th></tr> </table> </td> </tr> <tr> <th scope="row"><b>Data Requirements:</b></th> <td style="padding-left: 25px;"> <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/StructureDefinition/Encounter</th> <th></th> <th> </th> </tr> <tr> <th>Encounter</th> <th>http://hl7.org/fhir/StructureDefinition/Encounter</th> <th></th> <th> <p style="margin-bottom: 5px;"> <b>code filter: </b> <br/> <span style="padding-left: 25px;"> <b>path: </b><span>type</span> </span> <br/> <span style="padding-left: 25px;"> <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292</span> </span> </p> </th> </tr> <tr> <th>Condition</th> <th>http://hl7.org/fhir/StructureDefinition/Condition</th> <th></th> <th> <p style="margin-bottom: 5px;"> <b>code filter: </b> <br/> <span style="padding-left: 25px;"> <b>path: </b><span>id</span> </span> </p> </th> </tr> <tr> <th>Coverage</th> <th>http://hl7.org/fhir/StructureDefinition/Coverage</th> <th></th> <th> <p style="margin-bottom: 5px;"> <b>code filter: </b> <br/> <span style="padding-left: 25px;"> <b>path: </b><span>type</span> </span> <br/> <span style="padding-left: 25px;"> <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591</span> </span> </p> </th> </tr> </table> </td> </tr> <tr> <table> <tr><th><a id="cql-content"><b>Content: </b></a> text/cql</th></tr> <tr><td><pre><code>library EXMComputableLibrary version '2.0.0' /* This example is purely for illustration purposes to show how all the elements of a FHIR-based quality measure are represented. It is intentionally simplified to show specific aspects of a measure, and is not intended as an example of a clinically meaningful measure. */ /* NOTE: This is the same library as EXMLogic, being used to illustrate the different flavors of profiles: * Computable: Focusing on computable/design-time aspects * Executable: Focusing on run-time aspects * Publishable: Focusing on knowledge management aspects */ using FHIR version '4.0.1' include FHIRHelpers version '4.0.1' called FHIRHelpers codesystem "Diagnosis Role": 'http://terminology.hl7.org/CodeSystem/diagnosis-role' valueset "Emergency Department Visit" : 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292' valueset "Psychiatric/Mental Health Patient" : 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.299' valueset "Hospital Settings" : 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.126' valueset "ONC Administrative Sex": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1' valueset "Race": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.836' valueset "Ethnicity": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.837' valueset "Payer": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591' code "Billing": 'billing' from "Diagnosis Role" display 'Billing' parameter "Measurement Period" Interval<DateTime> context Patient define "Initial Population" : "Inpatient Encounter" Encounter define "Measure Population" : "Initial Population" define function "Measure Observation" (Encounter "Encounter" ) : duration in minutes of "Related ED Visit"(Encounter).period define "Stratifier 1" : "Inpatient Encounter" Encounter where not (PrincipalDiagnosis(Encounter).code in "Psychiatric/Mental Health Patient") define "Stratifier 2" : "Inpatient Encounter" Encounter where PrincipalDiagnosis(Encounter).code in "Psychiatric/Mental Health Patient" define "Stratifier 3" : "Inpatient Encounter" Encounter where PrincipalDiagnosis(Encounter) is null define "Stratifier 4" : "Inpatient Encounter" Encounter where PrincipalDiagnosis(Encounter) is null define "Inpatient Encounter" : ["Encounter"] Encounter where LengthInDays(Encounter.period) <= 120 and Encounter.period ends during "Measurement Period" define function "PrincipalDiagnosis"(Encounter Encounter): (singleton from (Encounter.diagnosis D where D.use ~ ToConcept("Billing") and D.rank.value = 1)) PD return singleton from ([Condition: id in "GetId"(PD.condition.reference)]) define function "LengthInDays"(Value Interval<DateTime>): difference in days between start of Value and end of Value define function "GetId"(uri String): Last(Split(uri, '/')) //Measure Observation define function "Related ED Visit" (Encounter "Encounter" ) : Last(["Encounter" : "Emergency Department Visit"] ED where ED.status = 'finished' and ED.period ends 1 hour or less before start of Encounter.period sort by start of period ) define "SDE Ethnicity": (flatten ( Patient.extension Extension where Extension.url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity' return Extension.extension )) E where E.url = 'ombCategory' or E.url = 'detailed' return E.value as Coding define "SDE Payer": [Coverage: type in "Payer"] Payer return { code: Payer.type, period: Payer.period } define "SDE Race": (flatten ( Patient.extension Extension where Extension.url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-race' return Extension.extension )) E where E.url = 'ombCategory' or E.url = 'detailed' return E.value as Coding define "SDE Sex": case when Patient.gender = 'male' then Code { code: 'M', system: 'http://hl7.org/fhir/v3/AdministrativeGender', display: 'Male' } when Patient.gender = 'female' then Code { code: 'F', system: 'http://hl7.org/fhir/v3/AdministrativeGender', display: 'Female' } else null end </code></pre></td></tr> </table> </tr> </table> </div> </text> <url value="http://hl7.org/fhir/us/cqfmeasures/Library/EXMComputableLibrary"/> <identifier> <use value="official"/> <system value="http://example.org/fhir/cqi/ecqm/Library/Identifier"/> <value value="EXMComputableLogic"/> </identifier> <version value="2.0.0"/> <name value="EXMComputableLibrary"/> <title value="Example Computable Library"/> <status value="active"/> <experimental value="true"/> <type> <coding> <system value="http://terminology.hl7.org/CodeSystem/library-type"/> <code value="logic-library"/> </coding> </type> <date value="2019-09-03"/> <publisher value="Health Level 7 International - Clinical Quality Information Work Group"/> <contact> <telecom> <system value="url"/> <value value="http://www.hl7.org/Special/committees/cqi/index.cfm"/> </telecom> </contact> <description value="This library is used as an example in the FHIR Quality Measure Implementation Guide"/> <useContext> <code> <system value="http://terminology.hl7.org/CodeSystem/usage-context-type"/> <code value="program"/> </code> <valueCodeableConcept> <coding> <system value="http://hl7.org/fhir/us/cqfmeasures/CodeSystem/quality-programs"/> <code value="eh-cah"/> <display value="EH/CAH"/> </coding> </valueCodeableConcept> </useContext> <jurisdiction> <coding> <system value="urn:iso:std:iso:3166"/> <code value="US"/> <display value="United States of America"/> </coding> </jurisdiction> <approvalDate value="2019-08-03"/> <lastReviewDate value="2019-08-03"/> <relatedArtifact> <type value="depends-on"/> <resource value="http://hl7.org/fhir/Library/FHIR-ModelInfo|4.0.1"/> </relatedArtifact> <relatedArtifact> <type value="depends-on"/> <resource value="http://hl7.org/fhir/Library/FHIRHelpers|4.0.1"/> </relatedArtifact> <relatedArtifact> <type value="depends-on"/> <resource value="http://terminology.hl7.org/CodeSystem/diagnosis-role"/> </relatedArtifact> <relatedArtifact> <type value="depends-on"/> <resource value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292"/> </relatedArtifact> <relatedArtifact> <type value="depends-on"/> <resource value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.299"/> </relatedArtifact> <relatedArtifact> <type value="depends-on"/> <resource value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.126"/> </relatedArtifact> <relatedArtifact> <type value="depends-on"/> <resource value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1"/> </relatedArtifact> <relatedArtifact> <type value="depends-on"/> <resource value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.836"/> </relatedArtifact> <relatedArtifact> <type value="depends-on"/> <resource value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.837"/> </relatedArtifact> <relatedArtifact> <type value="depends-on"/> <resource value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591"/> </relatedArtifact> <parameter> <name value="Measurement Period"/> <use value="in"/> <min value="0"/> <max value="1"/> <type value="Period"/> </parameter> <parameter> <name value="Patient"/> <use value="out"/> <min value="0"/> <max value="1"/> <type value="Patient"/> </parameter> <parameter> <name value="Inpatient Encounter"/> <use value="out"/> <min value="0"/> <max value="*"/> <type value="Encounter"/> </parameter> <parameter> <name value="Initial Population"/> <use value="out"/> <min value="0"/> <max value="*"/> <type value="Encounter"/> </parameter> <parameter> <name value="Measure Population"/> <use value="out"/> <min value="0"/> <max value="*"/> <type value="Encounter"/> </parameter> <parameter> <name value="Stratifier 1"/> <use value="out"/> <min value="0"/> <max value="*"/> <type value="Encounter"/> </parameter> <parameter> <name value="Stratifier 2"/> <use value="out"/> <min value="0"/> <max value="*"/> <type value="Encounter"/> </parameter> <parameter> <name value="Stratifier 3"/> <use value="out"/> <min value="0"/> <max value="*"/> <type value="Encounter"/> </parameter> <parameter> <name value="Stratifier 4"/> <use value="out"/> <min value="0"/> <max value="*"/> <type value="Encounter"/> </parameter> <parameter> <name value="SDE Ethnicity"/> <use value="out"/> <min value="0"/> <max value="*"/> <type value="Coding"/> </parameter> <parameter> <name value="SDE Payer"/> <use value="out"/> <min value="0"/> <max value="*"/> <type value="Any"/> </parameter> <parameter> <name value="SDE Race"/> <use value="out"/> <min value="0"/> <max value="*"/> <type value="Coding"/> </parameter> <parameter> <name value="SDE Sex"/> <use value="out"/> <min value="0"/> <max value="1"/> <type value="Coding"/> </parameter> <dataRequirement> <type value="Encounter"/> <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/> </dataRequirement> <dataRequirement> <type value="Encounter"/> <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/> <codeFilter> <path value="type"/> <valueSet value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292"/> </codeFilter> </dataRequirement> <dataRequirement> <type value="Condition"/> <profile value="http://hl7.org/fhir/StructureDefinition/Condition"/> <codeFilter> <path value="id"/> </codeFilter> </dataRequirement> <dataRequirement> <type value="Coverage"/> <profile value="http://hl7.org/fhir/StructureDefinition/Coverage"/> <codeFilter> <path value="type"/> <valueSet value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591"/> </codeFilter> </dataRequirement> <content> <contentType value="text/cql"/> <data value="bGlicmFyeSBFWE1Db21wdXRhYmxlTGlicmFyeSB2ZXJzaW9uICcyLjAuMCcNCg0KLyoNClRoaXMgZXhhbXBsZSBpcyBwdXJlbHkgZm9yIGlsbHVzdHJhdGlvbiBwdXJwb3NlcyB0byBzaG93IGhvdyBhbGwgdGhlIGVsZW1lbnRzIG9mIGENCkZISVItYmFzZWQgcXVhbGl0eSBtZWFzdXJlIGFyZSByZXByZXNlbnRlZC4gSXQgaXMgaW50ZW50aW9uYWxseSBzaW1wbGlmaWVkIHRvIHNob3cNCnNwZWNpZmljIGFzcGVjdHMgb2YgYSBtZWFzdXJlLCBhbmQgaXMgbm90IGludGVuZGVkIGFzIGFuIGV4YW1wbGUgb2YgYSBjbGluaWNhbGx5DQptZWFuaW5nZnVsIG1lYXN1cmUuDQoqLw0KDQovKg0KTk9URTogVGhpcyBpcyB0aGUgc2FtZSBsaWJyYXJ5IGFzIEVYTUxvZ2ljLCBiZWluZyB1c2VkIHRvIGlsbHVzdHJhdGUgdGhlIGRpZmZlcmVudCBmbGF2b3JzIG9mIHByb2ZpbGVzOg0KKiBDb21wdXRhYmxlOiBGb2N1c2luZyBvbiBjb21wdXRhYmxlL2Rlc2lnbi10aW1lIGFzcGVjdHMNCiogRXhlY3V0YWJsZTogRm9jdXNpbmcgb24gcnVuLXRpbWUgYXNwZWN0cw0KKiBQdWJsaXNoYWJsZTogRm9jdXNpbmcgb24ga25vd2xlZGdlIG1hbmFnZW1lbnQgYXNwZWN0cw0KKi8NCg0KdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScNCg0KaW5jbHVkZSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScgY2FsbGVkIEZISVJIZWxwZXJzDQoNCmNvZGVzeXN0ZW0gIkRpYWdub3NpcyBSb2xlIjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vZGlhZ25vc2lzLXJvbGUnDQoNCnZhbHVlc2V0ICJFbWVyZ2VuY3kgRGVwYXJ0bWVudCBWaXNpdCIgOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuMTE3LjEuNy4xLjI5MicNCnZhbHVlc2V0ICJQc3ljaGlhdHJpYy9NZW50YWwgSGVhbHRoIFBhdGllbnQiIDogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjExNy4xLjcuMS4yOTknDQp2YWx1ZXNldCAiSG9zcGl0YWwgU2V0dGluZ3MiIDogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTExMS4xMjYnDQoNCnZhbHVlc2V0ICJPTkMgQWRtaW5pc3RyYXRpdmUgU2V4IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMScNCnZhbHVlc2V0ICJSYWNlIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExNDIyMi40LjExLjgzNicNCnZhbHVlc2V0ICJFdGhuaWNpdHkiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTE0MjIyLjQuMTEuODM3Jw0KdmFsdWVzZXQgIlBheWVyIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExNDIyMi40LjExLjM1OTEnDQoNCmNvZGUgIkJpbGxpbmciOiAnYmlsbGluZycgZnJvbSAiRGlhZ25vc2lzIFJvbGUiIGRpc3BsYXkgJ0JpbGxpbmcnDQoNCnBhcmFtZXRlciAiTWVhc3VyZW1lbnQgUGVyaW9kIiBJbnRlcnZhbDxEYXRlVGltZT4NCg0KY29udGV4dCBQYXRpZW50DQoNCmRlZmluZSAiSW5pdGlhbCBQb3B1bGF0aW9uIiA6DQogICJJbnBhdGllbnQgRW5jb3VudGVyIiBFbmNvdW50ZXINCg0KZGVmaW5lICJNZWFzdXJlIFBvcHVsYXRpb24iIDoNCiAgIkluaXRpYWwgUG9wdWxhdGlvbiINCg0KZGVmaW5lIGZ1bmN0aW9uICJNZWFzdXJlIE9ic2VydmF0aW9uIiAoRW5jb3VudGVyICJFbmNvdW50ZXIiICkgOg0KICBkdXJhdGlvbiBpbiBtaW51dGVzIG9mICJSZWxhdGVkIEVEIFZpc2l0IihFbmNvdW50ZXIpLnBlcmlvZA0KDQpkZWZpbmUgIlN0cmF0aWZpZXIgMSIgOg0KICAiSW5wYXRpZW50IEVuY291bnRlciIgRW5jb3VudGVyDQogICAgd2hlcmUgbm90IChQcmluY2lwYWxEaWFnbm9zaXMoRW5jb3VudGVyKS5jb2RlIGluICJQc3ljaGlhdHJpYy9NZW50YWwgSGVhbHRoIFBhdGllbnQiKQ0KDQpkZWZpbmUgIlN0cmF0aWZpZXIgMiIgOg0KICAiSW5wYXRpZW50IEVuY291bnRlciIgRW5jb3VudGVyDQogICAgd2hlcmUgUHJpbmNpcGFsRGlhZ25vc2lzKEVuY291bnRlcikuY29kZSBpbiAiUHN5Y2hpYXRyaWMvTWVudGFsIEhlYWx0aCBQYXRpZW50Ig0KDQpkZWZpbmUgIlN0cmF0aWZpZXIgMyIgOg0KICAiSW5wYXRpZW50IEVuY291bnRlciIgRW5jb3VudGVyDQogICAgd2hlcmUgUHJpbmNpcGFsRGlhZ25vc2lzKEVuY291bnRlcikgaXMgbnVsbA0KDQpkZWZpbmUgIlN0cmF0aWZpZXIgNCIgOg0KICAiSW5wYXRpZW50IEVuY291bnRlciIgRW5jb3VudGVyDQogICAgd2hlcmUgUHJpbmNpcGFsRGlhZ25vc2lzKEVuY291bnRlcikgaXMgbnVsbA0KDQpkZWZpbmUgIklucGF0aWVudCBFbmNvdW50ZXIiIDoNCiAgWyJFbmNvdW50ZXIiXSBFbmNvdW50ZXINCiAgICB3aGVyZSBMZW5ndGhJbkRheXMoRW5jb3VudGVyLnBlcmlvZCkgPD0gMTIwDQogICAgICBhbmQgRW5jb3VudGVyLnBlcmlvZCBlbmRzIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIg0KDQpkZWZpbmUgZnVuY3Rpb24gIlByaW5jaXBhbERpYWdub3NpcyIoRW5jb3VudGVyIEVuY291bnRlcik6DQoJKHNpbmdsZXRvbiBmcm9tIChFbmNvdW50ZXIuZGlhZ25vc2lzIEQgd2hlcmUgRC51c2UgfiBUb0NvbmNlcHQoIkJpbGxpbmciKSBhbmQgRC5yYW5rLnZhbHVlID0gMSkpIFBEDQoJCXJldHVybiBzaW5nbGV0b24gZnJvbSAoW0NvbmRpdGlvbjogaWQgaW4gIkdldElkIihQRC5jb25kaXRpb24ucmVmZXJlbmNlKV0pDQoNCmRlZmluZSBmdW5jdGlvbiAiTGVuZ3RoSW5EYXlzIihWYWx1ZSBJbnRlcnZhbDxEYXRlVGltZT4pOg0KCWRpZmZlcmVuY2UgaW4gZGF5cyBiZXR3ZWVuIHN0YXJ0IG9mIFZhbHVlIGFuZCBlbmQgb2YgVmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uICJHZXRJZCIodXJpIFN0cmluZyk6DQoJTGFzdChTcGxpdCh1cmksICcvJykpDQoNCi8vTWVhc3VyZSBPYnNlcnZhdGlvbg0KZGVmaW5lIGZ1bmN0aW9uICJSZWxhdGVkIEVEIFZpc2l0IiAoRW5jb3VudGVyICJFbmNvdW50ZXIiICkgOg0KICBMYXN0KFsiRW5jb3VudGVyIiA6ICJFbWVyZ2VuY3kgRGVwYXJ0bWVudCBWaXNpdCJdIEVEDQogICAgd2hlcmUgRUQuc3RhdHVzID0gJ2ZpbmlzaGVkJw0KICAgICAgYW5kIEVELnBlcmlvZCBlbmRzIDEgaG91ciBvciBsZXNzIGJlZm9yZSBzdGFydCBvZiBFbmNvdW50ZXIucGVyaW9kDQogICAgc29ydCBieSBzdGFydCBvZiBwZXJpb2QgKQ0KDQpkZWZpbmUgIlNERSBFdGhuaWNpdHkiOg0KICAoZmxhdHRlbiAoDQogICAgUGF0aWVudC5leHRlbnNpb24gRXh0ZW5zaW9uDQogICAgICB3aGVyZSBFeHRlbnNpb24udXJsID0gJ2h0dHA6Ly9obDcub3JnL2ZoaXIvdXMvY29yZS9TdHJ1Y3R1cmVEZWZpbml0aW9uL3VzLWNvcmUtZXRobmljaXR5Jw0KICAgICAgICByZXR1cm4gRXh0ZW5zaW9uLmV4dGVuc2lvbg0KICApKSBFDQogICAgd2hlcmUgRS51cmwgPSAnb21iQ2F0ZWdvcnknDQogICAgICBvciBFLnVybCA9ICdkZXRhaWxlZCcNCiAgICByZXR1cm4gRS52YWx1ZSBhcyBDb2RpbmcNCg0KZGVmaW5lICJTREUgUGF5ZXIiOg0KICAgIFtDb3ZlcmFnZTogdHlwZSBpbiAiUGF5ZXIiXSBQYXllcg0KICAgICAgcmV0dXJuIHsNCiAgICAgICAgY29kZTogUGF5ZXIudHlwZSwNCiAgICAgICAgcGVyaW9kOiBQYXllci5wZXJpb2QNCiAgICAgIH0NCg0KZGVmaW5lICJTREUgUmFjZSI6DQogIChmbGF0dGVuICgNCiAgICBQYXRpZW50LmV4dGVuc2lvbiBFeHRlbnNpb24NCiAgICAgIHdoZXJlIEV4dGVuc2lvbi51cmwgPSAnaHR0cDovL2hsNy5vcmcvZmhpci91cy9jb3JlL1N0cnVjdHVyZURlZmluaXRpb24vdXMtY29yZS1yYWNlJw0KICAgICAgICByZXR1cm4gRXh0ZW5zaW9uLmV4dGVuc2lvbg0KICApKSBFDQogICAgd2hlcmUgRS51cmwgPSAnb21iQ2F0ZWdvcnknDQogICAgICBvciBFLnVybCA9ICdkZXRhaWxlZCcNCiAgICByZXR1cm4gRS52YWx1ZSBhcyBDb2RpbmcNCg0KZGVmaW5lICJTREUgU2V4IjoNCiAgY2FzZQ0KICAgIHdoZW4gUGF0aWVudC5nZW5kZXIgPSAnbWFsZScgdGhlbiBDb2RlIHsgY29kZTogJ00nLCBzeXN0ZW06ICdodHRwOi8vaGw3Lm9yZy9maGlyL3YzL0FkbWluaXN0cmF0aXZlR2VuZGVyJywgZGlzcGxheTogJ01hbGUnIH0NCiAgICB3aGVuIFBhdGllbnQuZ2VuZGVyID0gJ2ZlbWFsZScgdGhlbiBDb2RlIHsgY29kZTogJ0YnLCBzeXN0ZW06ICdodHRwOi8vaGw3Lm9yZy9maGlyL3YzL0FkbWluaXN0cmF0aXZlR2VuZGVyJywgZGlzcGxheTogJ0ZlbWFsZScgfQ0KICAgIGVsc2UgbnVsbA0KICBlbmQNCg=="/> </content> </Library>