CDC National Healthcare Safety Network (NHSN) Digital Quality Measures (dQM) Content Package IG
3.0.0 - Release 3 - draft United States of America flag

CDC National Healthcare Safety Network (NHSN) Digital Quality Measures (dQM) Content Package IG - Local Development build (v3.0.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

: NHSN Acute Care Hospital Monthly Initial Population Library - XML Representation

Page standards status: Trial-use Maturity Level: 2

Raw xml | Download


<Library xmlns="http://hl7.org/fhir">
  <id value="NHSNAcuteCareHospitalMonthlyInitialPopulation"/>
  <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">Metadata</th>


</tr>



<tr>


<th scope="row" class="row-header">Version</th>



<td class="content-container">3.0.0</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">Jurisdiction</th>



<td class="content-container">
    US from <a href="https://en.wikipedia.org/wiki/ISO_3166-2">urn:iso:std:iso:3166</a> 


</td>


</tr>








<tr>


<th scope="row" class="row-header">Steward (Publisher)</th>



<td class="content-container">CDC National Healthcare Safety Network (NHSN)</td>


</tr>



<tr>


<th scope="row" class="row-header">Steward Contact</th>



<td class="content-container">CDC National Healthcare Safety Network (NHSN)</td>


</tr>












<tr>


<th scope="row" class="row-header">Type</th>



<td class="content-container">
    logic-library from <a href="http://terminology.hl7.org/7.1.0/CodeSystem-library-type.html">http://terminology.hl7.org/CodeSystem/library-type</a> 


</td>


</tr>



<tr>
  
  
  
  
  

<th scope="row" class="row-header">Dependency</th>


  
  
  <td class="content-container">
    
    <em>Description</em>: Library FHIRHelpers
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <code>http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/FHIRHelpers|4.0.2</code>
    <br/>
    <em>Canonical URL</em>: <tt>http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/FHIRHelpers|4.0.2</tt>
    
    
    
  </td>
</tr>

<tr>
  
  
  
  
  

<th scope="row" class="row-header">Dependency</th>


  
  
  <td class="content-container">
    
    <em>Description</em>: Library NHSNHelpers
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <code>http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/NHSNHelpers|0.0.002</code>
    <br/>
    <em>Canonical URL</em>: <tt>http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/NHSNHelpers|0.0.002</tt>
    
    
    
  </td>
</tr>

<tr>
  
  
  
  
  

<th scope="row" class="row-header">Dependency</th>


  
  
  <td class="content-container">
    
    <em>Description</em>: Library SharedResource
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <code>http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/SharedResourceCreation|0.1.010-cibuild</code>
    <br/>
    <em>Canonical URL</em>: <tt>http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/SharedResourceCreation|0.1.010-cibuild</tt>
    
    
    
  </td>
</tr>

<tr>
  
  
  
  
  

<th scope="row" class="row-header">Dependency</th>


  
  
  <td class="content-container">
    
    <em>Description</em>: Code system ActCode
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="http://terminology.hl7.org/7.1.0/CodeSystem-v3-ActCode.html">ActCode</a> version: 10.0.0
    <br/>
    <em>Canonical URL</em>: <tt>http://terminology.hl7.org/CodeSystem/v3-ActCode|10.0.0</tt>
    
    
    
  </td>
</tr>

<tr>
  
  
  
  
  

<th scope="row" class="row-header">Dependency</th>


  
  
  <td class="content-container">
    
    <em>Description</em>: Code system Observation Category
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="http://terminology.hl7.org/7.1.0/CodeSystem-observation-category.html">Observation Category Codes</a> version: 2.0.0
    <br/>
    <em>Canonical URL</em>: <tt>http://terminology.hl7.org/CodeSystem/observation-category|2.0.0</tt>
    
    
    
  </td>
</tr>

<tr>
  
  
  
  
  

<th scope="row" class="row-header">Dependency</th>


  
  
  <td class="content-container">
    
    <em>Description</em>: Code system LOINC
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="http://terminology.hl7.org/6.5.0/CodeSystem-v3-loinc.html">Logical Observation Identifiers, Names and Codes (LOINC)</a>
    <br/>
    <em>Canonical URL</em>: <tt>http://loinc.org</tt>
    
    
    
  </td>
</tr>

<tr>
  
  
  
  
  

<th scope="row" class="row-header">Dependency</th>


  
  
  <td class="content-container">
    
    <em>Description</em>: Code system V2-0074
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="http://terminology.hl7.org/7.1.0/CodeSystem-v2-0074.html">diagnosticServiceSectionId</a> version: 3.0.0
    <br/>
    <em>Canonical URL</em>: <tt>http://terminology.hl7.org/CodeSystem/v2-0074|3.0.0</tt>
    
    
    
  </td>
</tr>

<tr>
  
  
  
  
  

<th scope="row" class="row-header">Dependency</th>


  
  
  <td class="content-container">
    
    <em>Description</em>: Code system Condition Category
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="http://terminology.hl7.org/7.1.0/CodeSystem-condition-category.html">Condition Category Codes</a> version: 2.0.0
    <br/>
    <em>Canonical URL</em>: <tt>http://terminology.hl7.org/CodeSystem/condition-category|2.0.0</tt>
    
    
    
  </td>
</tr>

<tr>
  
  
  
  
  

<th scope="row" class="row-header">Dependency</th>


  
  
  <td class="content-container">
    
    <em>Description</em>: Code system US Core Condition Category
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="http://hl7.org/fhir/us/core/STU6.1/CodeSystem-condition-category.html">US Core Condition Category Extension Codes</a> version: 6.1.0
    <br/>
    <em>Canonical URL</em>: <tt>http://hl7.org/fhir/us/core/CodeSystem/condition-category|6.1.0</tt>
    
    
    
  </td>
</tr>

<tr>
  
  
  
  
  

<th scope="row" class="row-header">Dependency</th>


  
  
  <td class="content-container">
    
    <em>Description</em>: Code system Condition Clinical Status
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="http://terminology.hl7.org/7.1.0/CodeSystem-condition-clinical.html">Condition Clinical Status Codes</a> version: 3.0.0
    <br/>
    <em>Canonical URL</em>: <tt>http://terminology.hl7.org/CodeSystem/condition-clinical|3.0.0</tt>
    
    
    
  </td>
</tr>

<tr>
  
  
  
  
  

<th scope="row" class="row-header">Dependency</th>


  
  
  <td class="content-container">
    
    <em>Description</em>: Code system SNOMEDCT
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="http://hl7.org/fhir/R4/codesystem-snomedct.html">SNOMED CT (all versions)</a>
    <br/>
    <em>Canonical URL</em>: <tt>http://snomed.info/sct</tt>
    
    
    
  </td>
</tr>

<tr>
  
  
  
  
  

<th scope="row" class="row-header">Dependency</th>


  
  
  <td class="content-container">
    
    <em>Description</em>: Code system MedicationRequest Category
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="http://terminology.hl7.org/7.1.0/CodeSystem-medicationrequest-category.html">MedicationRequest Category Codes</a> version: 2.0.0
    <br/>
    <em>Canonical URL</em>: <tt>http://terminology.hl7.org/CodeSystem/medicationrequest-category|2.0.0</tt>
    
    
    
  </td>
</tr>

<tr>
  
  
  
  
  

<th scope="row" class="row-header">Dependency</th>


  
  
  <td class="content-container">
    
    <em>Description</em>: Value set Inpatient, Emergency, and Observation Locations
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1046.265/expansion">Inpatient, Emergency, and Observation Locations</a>
    <br/>
    <em>Canonical URL</em>: <tt>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.265</tt>
    
    
    
  </td>
</tr>

<tr>
  
  
  
  
  

<th scope="row" class="row-header">Dependency</th>


  
  
  <td class="content-container">
    
    <em>Description</em>: Value set Emergency Department Visit
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.117.1.7.1.292/expansion">Emergency Department Visit</a>
    <br/>
    <em>Canonical URL</em>: <tt>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292</tt>
    
    
    
  </td>
</tr>

<tr>
  
  
  
  
  

<th scope="row" class="row-header">Dependency</th>


  
  
  <td class="content-container">
    
    <em>Description</em>: Value set Encounter Inpatient
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.666.5.307/expansion">Encounter Inpatient</a>
    <br/>
    <em>Canonical URL</em>: <tt>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307</tt>
    
    
    
  </td>
</tr>

<tr>
  
  
  
  
  

<th scope="row" class="row-header">Dependency</th>


  
  
  <td class="content-container">
    
    <em>Description</em>: Value set Observation Services
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1111.143/expansion">Observation Services</a>
    <br/>
    <em>Canonical URL</em>: <tt>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143</tt>
    
    
    
  </td>
</tr>

<tr>
  
  
  
  
  

<th scope="row" class="row-header">Dependency</th>


  
  
  <td class="content-container">
    
    <em>Description</em>: Value set NHSN Inpatient Encounter Class Codes
    
    <br/>
    
    
    
    
    
    
    <em>Resource</em>: <a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1046.274/expansion">NHSN Inpatient Encounter Class Codes</a>
    <br/>
    <em>Canonical URL</em>: <tt>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.274</tt>
    
    
    
  </td>
</tr>








<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Patient
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/patient.html">Patient</a>
    <br/>        
  
   
   
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Encounter
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/encounter.html">Encounter</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: type, status, period, location, diagnosis, id, extension, identifier, statusHistory, class, classHistory, subject, reasonCode, hospitalization, partOf
    <br/>
   
  
    <em>Code Filter(s)</em>: 
    <br/>
  
  
    <span class="tab-one"><em>Path</em>: type</span>
    <br/>
  
  
  
    <span class="tab-one"><em>ValueSet</em>:</span> <a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.666.5.307/expansion">Encounter Inpatient</a>
    <br/> 
  
  
  
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Encounter
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/encounter.html">Encounter</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: type, status, period, location, diagnosis, id, extension, identifier, statusHistory, class, classHistory, subject, reasonCode, hospitalization, partOf
    <br/>
   
  
    <em>Code Filter(s)</em>: 
    <br/>
  
  
    <span class="tab-one"><em>Path</em>: type</span>
    <br/>
  
  
  
    <span class="tab-one"><em>ValueSet</em>:</span> <a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.117.1.7.1.292/expansion">Emergency Department Visit</a>
    <br/> 
  
  
  
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Encounter
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/encounter.html">Encounter</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: type, status, period, location, diagnosis, id, extension, identifier, statusHistory, class, classHistory, subject, reasonCode, hospitalization, partOf
    <br/>
   
  
    <em>Code Filter(s)</em>: 
    <br/>
  
  
    <span class="tab-one"><em>Path</em>: type</span>
    <br/>
  
  
  
    <span class="tab-one"><em>ValueSet</em>:</span> <a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1111.143/expansion">Observation Services</a>
    <br/> 
  
  
  
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Encounter
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/encounter.html">Encounter</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: class, status, period, location, diagnosis, id, extension, identifier, statusHistory, classHistory, type, subject, reasonCode, hospitalization, partOf
    <br/>
   
  
    <em>Code Filter(s)</em>: 
    <br/>
  
  
    <span class="tab-one"><em>Path</em>: class</span>
    <br/>
  
  
  
    <span class="tab-one"><em>ValueSet</em>:</span> <a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1046.274/expansion">NHSN Inpatient Encounter Class Codes</a>
    <br/> 
  
  
  
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Encounter
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/encounter.html">Encounter</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: class, status, period, location, diagnosis, id, extension, identifier, statusHistory, classHistory, type, subject, reasonCode, hospitalization, partOf
    <br/>
   
  
    <em>Code Filter(s)</em>: 
    <br/>
  
  
    <span class="tab-one"><em>Path</em>: class</span>
    <br/>
  
  
  
  
    <span class="tab-one"><em>Code(s)</em>: 
    
      
      <a href="http://terminology.hl7.org/7.1.0/CodeSystem-v3-ActCode.html#v3-ActCode-EMER">ActCode: EMER</a> (emergency)
      
    
    </span>
    <br/>
  
  
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Encounter
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/encounter.html">Encounter</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: class, status, period, location, diagnosis, id, extension, identifier, statusHistory, classHistory, type, subject, reasonCode, hospitalization, partOf
    <br/>
   
  
    <em>Code Filter(s)</em>: 
    <br/>
  
  
    <span class="tab-one"><em>Path</em>: class</span>
    <br/>
  
  
  
  
    <span class="tab-one"><em>Code(s)</em>: 
    
      
      <a href="http://terminology.hl7.org/7.1.0/CodeSystem-v3-ActCode.html#v3-ActCode-OBSENC">ActCode: OBSENC</a> (observation encounter)
      
    
    </span>
    <br/>
  
  
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Encounter
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/encounter.html">Encounter</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: status, period, location, diagnosis, id, extension, identifier, statusHistory, class, classHistory, type, subject, reasonCode, hospitalization, partOf
    <br/>
   
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Condition
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/condition.html">Condition</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: id, extension, clinicalStatus, verificationStatus, category, code, subject, encounter, onset, abatement, recordedDate, encounter.reference
    <br/>
   
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: DiagnosticReport
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/diagnosticreport.html">DiagnosticReport</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: id, extension, basedOn, status, category, code, subject, encounter, effective, issued, specimen, result, conclusion, conclusionCode
    <br/>
   
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Observation
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/observation.html">Observation</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: id, extension, partOf, status, category, code, subject, encounter, effective, issued, value, dataAbsentReason, interpretation, bodySite, method, specimen, referenceRange, hasMember, derivedFrom, component
    <br/>
   
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: MedicationRequest
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/medicationrequest.html">MedicationRequest</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: authoredOn, id, extension, status, statusReason, intent, category, priority, doNotPerform, reported, medication, subject, encounter, recorder, reasonCode, reasonReference, instantiatesCanonical, instantiatesUri, courseOfTherapyType, dosageInstruction
    <br/>
   
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: MedicationAdministration
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/medicationadministration.html">MedicationAdministration</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: effective, id, extension, instantiates, partOf, status, statusReason, category, medication, subject, context, supportingInformation, reasonCode, reasonReference, request, device, note, dosage, eventHistory
    <br/>
   
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Coverage
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/coverage.html">Coverage</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: period, id, extension, status, type, beneficiary, payor
    <br/>
   
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Device
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/device.html">Device</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: id, extension, status, expirationDate, lotNumber, serialNumber, modelNumber, partNumber, type, patient, parent
    <br/>
   
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Medication
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/medication.html">Medication</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: id
    <br/>
   
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Procedure
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/procedure.html">Procedure</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: performed, category, id, basedOn, partOf, status, code, subject, encounter, location, reasonCode, reasonReference, bodySite
    <br/>
   
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: Specimen
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/specimen.html">Specimen</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: collection, collection.collected, id, extension, identifier, accessionIdentifier, status, type, subject, parent, request, note
    <br/>
   
   
  </td>
</tr>

<tr>
  <th scope="row" class="row-header">Data Requirement</th>
  <td class="content-container">
    <em>Type</em>: ServiceRequest
    <br/>
  
    <em>Profile(s)</em>: 
  
    <a href="http://hl7.org/fhir/R4/servicerequest.html">ServiceRequest</a>
    <br/>        
  
   
   
    <em>Must Support Elements</em>: authoredOn, category, id, extension, basedOn, status, intent, priority, doNotPerform, code, quantity, subject, encounter, occurrence, asNeeded, specimen
    <br/>
   
   
  </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"/>


  <td class="content-container">
    <table>
      <thead>
        <tr>
          <td><em>Name</em></td>
          <td><em>Use</em></td>
          <td><em>Card.</em></td>
          <td><em>Type</em></td>
          <td><em>Documentation</em></td>
        </tr>
      </thead>
      <tbody>
      
        <tr>
          <td>Measurement Period</td>
          <td>In</td>
          <td>0..1</td>
          <td>Period</td>
          <td/>
        </tr>
      
        <tr>
          <td>Patient</td>
          <td>Out</td>
          <td>0..1</td>
          <td>Patient</td>
          <td/>
        </tr>
      
        <tr>
          <td>Qualifying Encounters During Measurement Period</td>
          <td>Out</td>
          <td>0..*</td>
          <td>Encounter</td>
          <td/>
        </tr>
      
        <tr>
          <td>Encounters</td>
          <td>Out</td>
          <td>0..*</td>
          <td>Encounter</td>
          <td/>
        </tr>
      
        <tr>
          <td>Encounters with Patient Hospital Locations</td>
          <td>Out</td>
          <td>0..*</td>
          <td>Encounter</td>
          <td/>
        </tr>
      
        <tr>
          <td>Initial Population</td>
          <td>Out</td>
          <td>0..*</td>
          <td>Encounter</td>
          <td/>
        </tr>
      
        <tr>
          <td>Conditions</td>
          <td>Out</td>
          <td>0..*</td>
          <td>Condition</td>
          <td/>
        </tr>
      
        <tr>
          <td>DiagnosticReports</td>
          <td>Out</td>
          <td>0..*</td>
          <td>DiagnosticReport</td>
          <td/>
        </tr>
      
        <tr>
          <td>Observations</td>
          <td>Out</td>
          <td>0..*</td>
          <td>Observation</td>
          <td/>
        </tr>
      
        <tr>
          <td>Get Locations from IP Encounters in Measurement Period</td>
          <td>Out</td>
          <td>0..*</td>
          <td>Location</td>
          <td/>
        </tr>
      
        <tr>
          <td>SDE Medication Request</td>
          <td>Out</td>
          <td>0..*</td>
          <td>MedicationRequest</td>
          <td/>
        </tr>
      
        <tr>
          <td>SDE Medication Administration</td>
          <td>Out</td>
          <td>0..*</td>
          <td>MedicationAdministration</td>
          <td/>
        </tr>
      
        <tr>
          <td>Medication IDs</td>
          <td>Out</td>
          <td>0..*</td>
          <td>string</td>
          <td/>
        </tr>
      
        <tr>
          <td>SDE Condition</td>
          <td>Out</td>
          <td>0..*</td>
          <td>Condition</td>
          <td/>
        </tr>
      
        <tr>
          <td>SDE Coverage</td>
          <td>Out</td>
          <td>0..*</td>
          <td>Coverage</td>
          <td/>
        </tr>
      
        <tr>
          <td>SDE Device</td>
          <td>Out</td>
          <td>0..*</td>
          <td>Device</td>
          <td/>
        </tr>
      
        <tr>
          <td>SDE DiagnosticReport Lab</td>
          <td>Out</td>
          <td>0..*</td>
          <td>DiagnosticReport</td>
          <td/>
        </tr>
      
        <tr>
          <td>SDE DiagnosticReport Note</td>
          <td>Out</td>
          <td>0..*</td>
          <td>DiagnosticReport</td>
          <td/>
        </tr>
      
        <tr>
          <td>SDE Encounter</td>
          <td>Out</td>
          <td>0..*</td>
          <td>Encounter</td>
          <td/>
        </tr>
      
        <tr>
          <td>SDE IP Encounters</td>
          <td>Out</td>
          <td>0..*</td>
          <td>Encounter</td>
          <td/>
        </tr>
      
        <tr>
          <td>SDE Location</td>
          <td>Out</td>
          <td>0..*</td>
          <td>Location</td>
          <td/>
        </tr>
      
        <tr>
          <td>SDE Medication</td>
          <td>Out</td>
          <td>0..*</td>
          <td>Medication</td>
          <td/>
        </tr>
      
        <tr>
          <td>SDE Observation Lab Category</td>
          <td>Out</td>
          <td>0..*</td>
          <td>Observation</td>
          <td/>
        </tr>
      
        <tr>
          <td>SDE Observation Vital Signs Category</td>
          <td>Out</td>
          <td>0..*</td>
          <td>Observation</td>
          <td/>
        </tr>
      
        <tr>
          <td>SDE Observation Category</td>
          <td>Out</td>
          <td>0..*</td>
          <td>Observation</td>
          <td/>
        </tr>
      
        <tr>
          <td>SDE Procedure</td>
          <td>Out</td>
          <td>0..*</td>
          <td>Procedure</td>
          <td/>
        </tr>
      
        <tr>
          <td>SDE Specimen</td>
          <td>Out</td>
          <td>0..*</td>
          <td>Specimen</td>
          <td/>
        </tr>
      
        <tr>
          <td>SDE Service Request</td>
          <td>Out</td>
          <td>0..*</td>
          <td>ServiceRequest</td>
          <td/>
        </tr>
      
        <tr>
          <td>SDE Minimal Patient</td>
          <td>Out</td>
          <td>0..1</td>
          <td>Patient</td>
          <td/>
        </tr>
      
      </tbody>
    </table>
  </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">library NHSNAcuteCareHospitalMonthlyInitialPopulation version '3.0.0-cibuild'

using FHIR version '4.0.1'

include FHIRHelpers version '4.0.2' called FHIRHelpers
include NHSNHelpers version '0.0.002' called NHSNHelpers
include SharedResourceCreation version '0.1.010-cibuild' called SharedResource 

codesystem &quot;ActCode&quot;: 'http://terminology.hl7.org/CodeSystem/v3-ActCode'
codesystem &quot;Observation Category&quot;: 'http://terminology.hl7.org/CodeSystem/observation-category'
codesystem &quot;LOINC&quot;: 'http://loinc.org' 
codesystem &quot;V2-0074&quot;: 'http://terminology.hl7.org/CodeSystem/v2-0074'
codesystem &quot;Condition Category&quot;: 'http://terminology.hl7.org/CodeSystem/condition-category'
codesystem &quot;US Core Condition Category&quot;: 'http://hl7.org/fhir/us/core/CodeSystem/condition-category'
codesystem &quot;Condition Clinical Status&quot;: 'http://terminology.hl7.org/CodeSystem/condition-clinical'
codesystem &quot;SNOMEDCT&quot;: 'http://snomed.info/sct'
codesystem &quot;MedicationRequest Category&quot;: 'http://terminology.hl7.org/CodeSystem/medicationrequest-category'

valueset &quot;Inpatient, Emergency, and Observation Locations&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.265'
valueset &quot;Emergency Department Visit&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292'
valueset &quot;Encounter Inpatient&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307'
valueset &quot;Observation Services&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143'
valueset &quot;NHSN Inpatient Encounter Class Codes&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.274'

//code for Observation Category
code &quot;laboratory&quot;: 'laboratory' from &quot;Observation Category&quot; display 'Laboratory'
code &quot;social-history&quot;: 'social-history' from &quot;Observation Category&quot; display 'Social History'
code &quot;vital-signs&quot;: 'vital-signs' from &quot;Observation Category&quot; display 'Vital Signs'
code &quot;imaging&quot;: 'imaging' from &quot;Observation Category&quot; display 'Imaging'
code &quot;procedure&quot;: 'procedure' from &quot;Observation Category&quot; display 'Procedure'
code &quot;survey&quot;: 'survey' from &quot;Observation Category&quot; display 'Survey'

//code for Condition category
//code &quot;problem-list-item&quot;: 'problem-list-item' from &quot;Condition Category&quot; display 'Problem List Item'
code &quot;encounter-diagnosis&quot;: 'encounter-diagnosis' from &quot;Condition Category&quot; display 'Encounter Diagnosis'
//code &quot;health-concern&quot;: 'health-concern' from &quot;US Core Condition Category&quot; display 'Health Concern'

//code for Diagnostic Report Category
code &quot;LAB&quot;: 'LAB' from &quot;V2-0074&quot; display 'Laboratory'
code &quot;Radiology&quot;: 'LP29684-5' from &quot;LOINC&quot; display 'Radiology'
code &quot;Pathology&quot;: 'LP7839-6' from &quot;LOINC&quot; display 'Pathology'
code &quot;Cardiology&quot;: 'LP29708-2' from &quot;LOINC&quot; display 'Cardiology'

//code for Emergency Encounter Class
code &quot;emergency&quot;: 'EMER' from &quot;ActCode&quot; display 'emergency'
code &quot;observation encounter&quot;: 'OBSENC' from &quot;ActCode&quot; display 'observation encounter'

//code for Condition clinicalStatus
code &quot;active&quot;: 'active' from &quot;Condition Clinical Status&quot; display 'active'

//code for Procedure category
code &quot;Surgical procedure&quot;: '387713003' from &quot;SNOMEDCT&quot; display 'Surgical procedure'
code &quot;Diagnostic procedure&quot;: '103693007' from &quot;SNOMEDCT&quot; display 'Diagnostic procedure' //Code deprecated in SNOMED version 2023-09-01
//code &quot;Diagnostic intent (qualifier value)&quot;: '261004008' from &quot;SNOMEDCT&quot; display 'Diagnostic intent'

//code for MedicationRequest category
code &quot;inpatient&quot;: 'inpatient' from &quot;MedicationRequest Category&quot; display 'Inpatient'
code &quot;outpatient&quot;: 'outpatient' from &quot;MedicationRequest Category&quot; display 'Outpatient'

//code for ServiceRequest category (also uses Surgical procedure from Procedure categories)
code &quot;Laboratory procedure&quot;: '108252007' from &quot;SNOMEDCT&quot; display 'Laboratory procedure'
code &quot;Imaging&quot;: '363679005' from &quot;SNOMEDCT&quot; display 'Imaging'

parameter &quot;Measurement Period&quot; 
    default Interval[@2022-01-01T00:00:00.0, @2022-01-31T23:59:59.0)

context Patient 

define &quot;Qualifying Encounters During Measurement Period&quot;:
 ( [Encounter: &quot;Encounter Inpatient&quot;]
  union [Encounter: &quot;Emergency Department Visit&quot;]
  union [Encounter: &quot;Observation Services&quot;]
  union [Encounter: class in &quot;NHSN Inpatient Encounter Class Codes&quot;]
  union [Encounter: class ~ &quot;emergency&quot;]
  union [Encounter: class ~ &quot;observation encounter&quot;]) QualifyingEncounters
  where QualifyingEncounters.status in {'in-progress', 'finished', 'triaged', 'onleave', 'entered-in-error'}
    and QualifyingEncounters.period overlaps &quot;Measurement Period&quot; 

define &quot;Encounters with Patient Hospital Locations&quot;:
  &quot;Encounters&quot; Encounters
  where exists(
    Encounters.location EncounterLocation
    where NHSNHelpers.GetLocation(EncounterLocation.location).type in &quot;Inpatient, Emergency, and Observation Locations&quot;
      and EncounterLocation.period overlaps Encounters.period
  )
  and Encounters.status in {'in-progress', 'finished', 'triaged', 'onleave', 'entered-in-error'}
  and Encounters.period overlaps &quot;Measurement Period&quot;

define &quot;Initial Population&quot;:
  &quot;Qualifying Encounters During Measurement Period&quot;
  union &quot;Encounters with Patient Hospital Locations&quot;

define &quot;Encounters&quot;:
  [Encounter]

define &quot;Conditions&quot;:
  [Condition]

define &quot;DiagnosticReports&quot;:
  [DiagnosticReport]

define &quot;Observations&quot;:
  [Observation]

define &quot;Get Locations from IP Encounters in Measurement Period&quot;:
  flatten(&quot;Initial Population&quot; IP
  let locationElements: IP.location
  return
    locationElements LE
    let locationReference: LE.location
    return NHSNHelpers.GetLocation(locationReference))

define &quot;Medication IDs&quot;:
  (&quot;SDE Medication Request&quot;
  union &quot;SDE Medication Administration&quot;) MedReqOrAdmin
  where MedReqOrAdmin.medication is FHIR.Reference
    and exists(&quot;Initial Population&quot;) //No longer need to check for timing here because it's checked in SDE Medication Request/Administriation
  return NHSNHelpers.GetId(MedReqOrAdmin.medication.reference)

//============================================================================
//Supplemental Data Element
//When FHIR.canonical value is present, US Core 3.1.1 profiles are used
//When FHIR.canonical value is not present, FHIR Base profiles are used
//============================================================================
define &quot;SDE Condition&quot;:
  &quot;Conditions&quot; Conditions 
    where exists(
    &quot;Initial Population&quot; IP
//Check for Problem List Conditions that were recorded before or during IP 
     where 
      (exists(IP.diagnosis Diagnoses
          where NHSNHelpers.GetId(Diagnoses.condition.reference) = Conditions.id
        )
        or NHSNHelpers.GetId(Conditions.encounter.reference) = IP.id
      )
      and exists (Conditions.category categories
        where categories ~ &quot;encounter-diagnosis&quot;
    )
  )
  return ConditionResource(Conditions,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-condition'}},
   {&quot;encounter-diagnosis&quot;})

define &quot;SDE Coverage&quot;: 
	[Coverage] Coverages
  where exists(
    &quot;Initial Population&quot; IP
    where Coverages.period overlaps IP.period)
  return CoverageResource(Coverages,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-coverage'}})

define &quot;SDE Device&quot;:
  [Device] Devices 
  where exists(&quot;Initial Population&quot;)
  return DeviceResource(Devices,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-device'}})

//This block collects all DiagnosticReport resources while also marking Lab and Note DiagnosticReports with the appropriate profiles
//#Start DiagnosticReport block
define &quot;SDE DiagnosticReport Lab&quot;:
  &quot;DiagnosticReports&quot; DiagnosticReports
  where (exists(DiagnosticReports.category Category where Category ~ &quot;LAB&quot;)
    and exists(
      &quot;Initial Population&quot; IP
      where NHSNHelpers.&quot;Normalize Interval&quot;(DiagnosticReports.effective) overlaps IP.period))
  return DiagnosticReportLabResource(DiagnosticReports,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-diagnosticreport-lab'}},
  {&quot;LAB&quot;, &quot;Radiology&quot;, &quot;Pathology&quot;, &quot;Cardiology&quot;})
 
define &quot;SDE DiagnosticReport Note&quot;:
  &quot;DiagnosticReports&quot; DiagnosticReports
  where ((exists(DiagnosticReports.category Category where Category ~ &quot;Radiology&quot;))
    or exists((DiagnosticReports.category Category where Category ~ &quot;Pathology&quot;))
    or exists((DiagnosticReports.category Category where Category ~ &quot;Cardiology&quot;)))
    and exists(
      &quot;Initial Population&quot; IP
      where NHSNHelpers.&quot;Normalize Interval&quot;(DiagnosticReports.effective) overlaps IP.period)
  return DiagnosticReportResource(DiagnosticReports,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-diagnosticreport-note'}},
  {&quot;Radiology&quot;, &quot;Pathology&quot;, &quot;Cardiology&quot;, &quot;LAB&quot;})
//#End DiagnosticReport block

define &quot;SDE Encounter&quot;: 
  &quot;Encounters&quot; Encounters
  where not CheckIP(Encounters)
  and exists(
    &quot;Initial Population&quot; IP
    where Encounters.period overlaps IP.period)
  return EncounterResource(Encounters,
  {FHIR.canonical{value: 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter'}})

define &quot;SDE IP Encounters&quot;:
  &quot;Initial Population&quot; IP
  return EncounterResource(IP, 
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-encounter'}})

define &quot;SDE Location&quot;:
  &quot;Get Locations from IP Encounters in Measurement Period&quot; Locations
  where exists(&quot;Initial Population&quot;)
  and Locations is not null
  return LocationResource(Locations,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-location'}})
 
define &quot;SDE Medication Administration&quot;:
  [MedicationAdministration] MedicationAdministrations 
  where exists(
    &quot;Initial Population&quot; IP
    where NHSNHelpers.&quot;Normalize Interval&quot;(MedicationAdministrations.effective) overlaps IP.period)
  return MedicationAdministrationResource(MedicationAdministrations,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-medicationadministration'}},
  {&quot;inpatient&quot;, &quot;outpatient&quot;})
 
define &quot;SDE Medication Request&quot;:
  [MedicationRequest] MedicationRequests 
  where exists(
    &quot;Initial Population&quot; IP
    where MedicationRequests.authoredOn during IP.period)
  return MedicationRequestResource(MedicationRequests,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-medicationrequest'}},
  {&quot;inpatient&quot;, &quot;outpatient&quot;})
  
define &quot;SDE Medication&quot;:
  [Medication] Medications
  where Medications.id in &quot;Medication IDs&quot;
  return SharedResource.MedicationResource(Medications,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-medication'}})

define &quot;SDE Observation Lab Category&quot;:
  &quot;Observations&quot; Observations 
  where (exists(Observations.category Category where Category ~ &quot;laboratory&quot;))
    and exists(
      &quot;Initial Population&quot; IP
      where NHSNHelpers.&quot;Normalize Interval&quot;(Observations.effective) overlaps IP.period)
  return ObservationLabResource(Observations,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-observation-lab'}},
  {&quot;imaging&quot;, &quot;procedure&quot;, &quot;vital-signs&quot;, &quot;laboratory&quot;})

//Vital Signs Observation has its own profile in FHIR Base
define &quot;SDE Observation Vital Signs Category&quot;:
  &quot;Observations&quot; Observations 
  where (exists(Observations.category Category where Category ~ &quot;vital-signs&quot;))
    and exists(
      &quot;Initial Population&quot; IP
      where NHSNHelpers.&quot;Normalize Interval&quot;(Observations.effective) overlaps IP.period)
  return ObservationVitalSignsResource(Observations,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-observation-vitals'}},
  {&quot;imaging&quot;, &quot;procedure&quot;, &quot;vital-signs&quot;, &quot;laboratory&quot;})

//Defaulting to base FHIR profile as there are no individual profiles in US Core 3.1.1 that cover these Observation categories
define &quot;SDE Observation Category&quot;:
  &quot;Observations&quot; Observations 
  where (/*(exists(Observations.category Category where Category ~ &quot;social-history&quot;))
    or (exists(Observations.category Category where Category ~ &quot;survey&quot;))
    or */(exists(Observations.category Category where Category ~ &quot;imaging&quot;))
    or (exists(Observations.category Category where Category ~ &quot;procedure&quot;)))
    and exists(
      &quot;Initial Population&quot; IP
      where NHSNHelpers.&quot;Normalize Interval&quot;(Observations.effective) overlaps IP.period)
  return ObservationResource(Observations,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-observation'}},
  {&quot;imaging&quot;, &quot;procedure&quot;, &quot;vital-signs&quot;, &quot;laboratory&quot;})

define &quot;SDE Procedure&quot;:
  [Procedure] Procedures 
  where exists(
    &quot;Initial Population&quot; IP
    where NHSNHelpers.&quot;Normalize Interval&quot;(Procedures.performed) overlaps IP.period)
      and (
      Procedures.category ~ &quot;Surgical procedure&quot;
      or Procedures.category ~ &quot;Diagnostic procedure&quot;)
     return ProcedureResource(Procedures,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-procedure'}},
  {&quot;Surgical procedure&quot;, &quot;Diagnostic procedure&quot;})

define &quot;SDE Specimen&quot;:
  [Specimen] Specimens
  where exists(
    &quot;Initial Population&quot; IP
    where NHSNHelpers.&quot;Normalize Interval&quot;(Specimens.collection.collected) overlaps IP.period
  )
  return SpecimenResource(Specimens,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-specimen'}})

define &quot;SDE Service Request&quot;:
  [ServiceRequest] ServiceRequests
  where exists(&quot;Initial Population&quot; IP
    where ServiceRequests.authoredOn during IP.period)
    and exists(
      ServiceRequests.category C 
      where C ~ &quot;Laboratory procedure&quot;
         or C ~ &quot;Surgical procedure&quot;
         or C ~ &quot;Imaging&quot;
    )
  return ServiceRequestResource(ServiceRequests,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-servicerequest'}},
  {&quot;Laboratory procedure&quot;, &quot;Surgical procedure&quot;, &quot;Imaging&quot;})

define &quot;SDE Minimal Patient&quot;:
  Patient p
  return SharedResource.PatientResource(p,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/cross-measure-patient'}})

//
//Functions
//
define function &quot;CheckIP&quot;(encounter Encounter):
  exists(&quot;Initial Population&quot; IP
  where encounter.id = IP.id)

define function &quot;GetMedicationFrom&quot;(choice Choice&lt;FHIR.CodeableConcept, FHIR.Reference&gt;):
  case
    when choice is FHIR.Reference then
      GetMedication(choice as FHIR.Reference)
    else
      null
  end

define function &quot;GetMedication&quot;(reference Reference):
  singleton from (
    [Medication] Medications
    where Medications.id = NHSNHelpers.GetId(reference.reference)
  )

define function &quot;GetCondition&quot;(reference Reference):
  singleton from (
    &quot;Conditions&quot; Conditions
    where Conditions.id = NHSNHelpers.GetId(reference.reference)
  )

define function &quot;GetEncounter&quot;(reference Reference):
  singleton from (
    &quot;Encounters&quot; Encounters
    where Encounters.id = NHSNHelpers.GetId(reference.reference)
  )

define function RemoveUnaccepted(codes List&lt;FHIR.CodeableConcept&gt;, accepted List&lt;System.Code&gt;):
  codes c
  where exists(
    accepted a
    where c ~ a
  )

define function FilterCodeableConcepts(codes List&lt;FHIR.CodeableConcept&gt;, accepted List&lt;System.Code&gt;):
  if Count(accepted) &gt; 0
    then RemoveUnaccepted(codes, accepted)
  else codes    

//
//Measure Specific Resource Creation Functions
//

define function ConditionResource(condition Condition, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
  condition c
  return Condition{
    id: FHIR.id {value: 'LCR-' + c.id},
    meta: SharedResource.MetaElement(c, profileURLs),
    extension: c.extension,
    clinicalStatus: c.clinicalStatus,
    verificationStatus: c.verificationStatus,
    category: FilterCodeableConcepts(c.category, acceptedCategories),
    code: c.code,
    subject: c.subject,
    encounter: c.encounter,
    onset: c.onset,
    abatement: c.abatement,
    recordedDate: c.recordedDate
  }

define function CoverageResource(coverage Coverage, profileURLs List&lt;FHIR.canonical&gt;):
  coverage c
  return Coverage{
    id: FHIR.id{value: 'LCR-' + c.id},
    meta: SharedResource.MetaElement(c, profileURLs),
    extension: c.extension,
    status: c.status,
    type: c.type,
    beneficiary: c.beneficiary,
    period: c.period,
    payor: c.payor
  }

define function DeviceResource(device Device, profileURLs List&lt;FHIR.canonical&gt;):
  device d
  return Device{
    id: FHIR.id{value: 'LCR-' + d.id},
    meta: SharedResource.MetaElement(d, profileURLs),
    extension: d.extension,
    status: d.status,
    expirationDate: d.expirationDate,
    lotNumber: d.lotNumber,
    serialNumber: d.serialNumber,
    modelNumber: d.modelNumber,
    partNumber: d.partNumber,
    type: d.type,
    patient: d.patient,
    parent: d.parent
  }

define function DiagnosticReportCoding(coding List&lt;Coding&gt;):
  coding c
  return Coding{
    system: c.system,
    version: c.version,
    code: c.code,
    display: c.display
  }

define function DiagnosticReportCategory(category List&lt;CodeableConcept&gt;):
  category c
  return CodeableConcept{
    coding: DiagnosticReportCoding(c.coding)
  }

define function DiagnosticReportLabResource(diagnosticReport DiagnosticReport, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
  diagnosticReport d
  return DiagnosticReport{
    id: FHIR.id{value: 'LCR-' + d.id},
    meta: SharedResource.MetaElement(d, profileURLs),
    extension: d.extension,
    basedOn: d.basedOn,
    status: d.status,
    category: FilterCodeableConcepts(DiagnosticReportCategory(d.category), acceptedCategories),
    code: d.code,
    subject: d.subject,
    encounter: d.encounter,
    effective: d.effective,
    issued: d.issued,
    specimen: d.specimen,
    result: d.result,
    conclusion: d.conclusion,
    conclusionCode: d.conclusionCode
  }

define function DiagnosticReportResource(diagnosticReport DiagnosticReport, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
  diagnosticReport d
  return DiagnosticReport{
    id: FHIR.id{value: 'LCR-' + d.id},
    meta: SharedResource.MetaElement(d, profileURLs),
    extension: d.extension,
    basedOn: d.basedOn,
    status: d.status,
    category: FilterCodeableConcepts(d.category, acceptedCategories),
    code: d.code,
    subject: d.subject,
    encounter: d.encounter,
    effective: d.effective,
    issued: d.issued,
    specimen: d.specimen,
    result: d.result,
    conclusion: d.conclusion,
    conclusionCode: d.conclusionCode
  }

define function EncounterHospitalization(hospitalization FHIR.Encounter.Hospitalization):
  hospitalization h
  return FHIR.Encounter.Hospitalization{
    extension: h.extension,
    origin: h.origin,
    admitSource: h.admitSource,
    reAdmission: h.reAdmission,
    dietPreference: h.dietPreference,
    dischargeDisposition: h.dischargeDisposition
  }

define function EncounterResource(encounter Encounter, profileURLs List&lt;FHIR.canonical&gt;):
  encounter e
  return Encounter{
    id: FHIR.id{value: 'LCR-' + e.id},
    meta: SharedResource.MetaElement(e, profileURLs),
    extension: e.extension,
    identifier: SharedResource.EncounterIdentifier(e.identifier),
    status: e.status,
    statusHistory: SharedResource.EncounterStatusHistory(e.statusHistory),
    class: e.class,
    classHistory: SharedResource.EncounterClassHistory(e.classHistory),
    type: e.type,
    subject: e.subject,
    period: e.period,
    reasonCode: e.reasonCode,
    diagnosis: SharedResource.EncounterDiagnosis(e.diagnosis),
    hospitalization: EncounterHospitalization(e.hospitalization),
    location: SharedResource.EncounterLocation(e.location),
    partOf: e.partOf
  }

define function LocationResource(location Location, profileURLs List&lt;FHIR.canonical&gt;):
  location l
  return Location{
    id: FHIR.id {value: 'LCR-' + l.id},
    meta: SharedResource.MetaElement(l, profileURLs),
    extension: l.extension,
    status: l.status,
    name: l.name,
    alias: l.alias,
    type: l.type,
    physicalType: l.physicalType,
    managingOrganization: l.managingOrganization,
    partOf: l.partOf
  }

define function MedicationRequestRepeat(repeat FHIR.Timing.Repeat):
  repeat r
  return FHIR.Timing.Repeat{
    bounds: r.bounds,
    count: r.count,
    countMax: r.countMax,
    &quot;duration&quot;: r.&quot;duration&quot;,
    durationMax: r.durationMax,
    durationUnit: r.durationUnit,
    frequency: r.frequency,
    frequencyMax: r.frequencyMax,
    period: r.period,
    periodMax: r.periodMax,
    periodUnit: r.periodUnit,
    dayOfWeek: r.dayOfWeek,
    timeOfDay: r.timeOfDay,
    &quot;when&quot;: r.&quot;when&quot;,
    offset: r.offset
  }

define function MedicationRequestTiming(timing FHIR.Timing):
  timing t
  return FHIR.Timing{
    event: t.event,
    repeat: MedicationRequestRepeat(t.repeat),
    code: t.code
  }

define function MedicationRequestDosageInstruction(dosageInstruction List&lt;FHIR.Dosage&gt;):
  dosageInstruction dI
  return FHIR.Dosage{
    text: dI.text,
    patientInstruction: dI.patientInstruction,
    timing: MedicationRequestTiming(dI.timing),
    asNeeded: dI.asNeeded,
    site: dI.site,
    route: dI.route,
    method: dI.method,
    doseAndRate: SharedResource.MedicationRequestDoseAndRate(dI.doseAndRate)
  }

define function MedicationRequestResource(medicationRequest MedicationRequest, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
  medicationRequest m
  return MedicationRequest{
    id: FHIR.id {value: 'LCR-' + m.id},
    meta: SharedResource.MetaElement(medicationRequest, profileURLs),
    extension: m.extension,
    status: m.status,
    statusReason: m.statusReason,
    intent: m.intent,
    category: FilterCodeableConcepts(m.category, acceptedCategories),
    priority: m.priority,
    doNotPerform: m.doNotPerform,
    reported: m.reported,
    medication: m.medication,
    subject: m.subject,
    encounter: m.encounter,
    authoredOn: m.authoredOn,
    //*requester: m.requester,
    recorder: m.recorder,
    reasonCode: m.reasonCode,
    reasonReference: m.reasonReference,
    instantiatesCanonical: m.instantiatesCanonical,
    instantiatesUri: m.instantiatesUri,
    courseOfTherapyType: m.courseOfTherapyType,
    dosageInstruction: SharedResource.MedicationRequestDosageInstruction(m.dosageInstruction)
  }

  define function MedicationAdministrationResource(medicationAdministration MedicationAdministration, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
  medicationAdministration m
  return MedicationAdministration{
    id: FHIR.id {value: 'LCR-' + m.id},
    meta: SharedResource.MetaElement(m, profileURLs),
    extension: m.extension,
    instantiates: m.instantiates,
    partOf: m.partOf,
    status: m.status,
    statusReason: m.statusReason,
    category: FilterCodeableConcepts({m.category}, acceptedCategories)[0],
    medication: m.medication,
    subject: m.subject,
    context: m.context,
    supportingInformation: m.supportingInformation,
    effective: m.effective,
    //*performer: SharedResource.MedicationAdministrationPerformer(m.performer),
    reasonCode: m.reasonCode,
    reasonReference: m.reasonReference,
    request: m.request,
    device: m.device,
    note: m.note,
    dosage: SharedResource.MedicationAdministrationDosage(m.dosage),
    eventHistory: m.eventHistory
  }

define function ObservationLabReferenceRange(referenceRange List&lt;FHIR.Observation.ReferenceRange&gt;):
  referenceRange rR
  return FHIR.Observation.ReferenceRange{
    low: rR.low,
    high: rR.high,
    type: rR.type,
    appliesTo: rR.appliesTo,
    age: rR.age
  }

define function ObservationLabCoding(coding List&lt;Coding&gt;):
  coding c
  return Coding{
    system: c.system,
    version: c.version,
    code: c.code,
    display: c.display,
    userSelected: c.userSelected
  }

define function ObservationLabCategory(category List&lt;CodeableConcept&gt;):
  category c
  return CodeableConcept{
    coding: ObservationLabCoding(c.coding),
    text: c.text
  }

define function ObservationLabResource(observation Observation, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
  observation o
  return Observation{
    id: FHIR.id {value: 'LCR-' + o.id},
    meta: SharedResource.MetaElement(o, profileURLs),
    extension: o.extension,
    partOf: o.partOf,
    status: o.status,
    category: FilterCodeableConcepts(ObservationLabCategory(o.category), acceptedCategories),
    code: o.code,
    subject: o.subject,
    encounter: o.encounter,
    effective: o.effective,
    issued: o.issued,
    value: o.value,
    dataAbsentReason: o.dataAbsentReason,
    interpretation: o.interpretation,
    bodySite: o.bodySite,
    method: o.method,
    specimen: o.specimen,
    referenceRange: ObservationLabReferenceRange(o.referenceRange),
    hasMember: o.hasMember,
    derivedFrom: o.derivedFrom,
    component: SharedResource.ObservationComponent(o.component)
  }

define function ObservationReferenceRange(referenceRange List&lt;FHIR.Observation.ReferenceRange&gt;):
  referenceRange rR
  return FHIR.Observation.ReferenceRange{
    low: rR.low,
    high: rR.high,
    type: rR.type,
    appliesTo: rR.appliesTo,
    age: rR.age
  }

define function ObservationResource(observation Observation, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
  observation o
  return Observation{
    id: FHIR.id {value: 'LCR-' + o.id},
    meta: SharedResource.MetaElement(o, profileURLs),
    extension: o.extension,
    partOf: o.partOf,
    status: o.status,
    category: FilterCodeableConcepts(o.category, acceptedCategories),
    code: o.code,
    subject: o.subject,
    encounter: o.encounter,
    effective: o.effective,
    issued: o.issued,
    value: o.value,
    dataAbsentReason: o.dataAbsentReason,
    interpretation: o.interpretation,
    bodySite: o.bodySite,
    method: o.method,
    specimen: o.specimen,
    referenceRange: ObservationReferenceRange(o.referenceRange),
    hasMember: o.hasMember,
    derivedFrom: o.derivedFrom,
    component: SharedResource.ObservationComponent(o.component)
  }

define function ObservationVitalSignsCoding(coding List&lt;Coding&gt;):
  coding c
  return Coding{
    system: c.system,
    version: c.version,
    code: c.code,
    display: c.display,
    userSelected: c.userSelected
  }

define function ObservationVitalSignsCategory(category List&lt;CodeableConcept&gt;):
  category c
  return CodeableConcept{
    coding: ObservationVitalSignsCoding(c.coding),
    text: c.text
  }

define function ObservationVitalSignsComponent(component List&lt;FHIR.Observation.Component&gt;):
  component c
  return FHIR.Observation.Component{
    code: c.code,
    value: c.value,
    dataAbsentReason: c.dataAbsentReason,
    interpretation: c.interpretation,
    referenceRange: SharedResource.ObservationReferenceRange(c.referenceRange)
  }

define function ObservationVitalSignsReferenceRange(referenceRange List&lt;FHIR.Observation.ReferenceRange&gt;):
  referenceRange rR
  return FHIR.Observation.ReferenceRange{
    low: rR.low,
    high: rR.high,
    type: rR.type,
    appliesTo: rR.appliesTo,
    age: rR.age
  }

define function ObservationVitalSignsResource(observation Observation, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
  observation o
  return Observation{
    id: FHIR.id {value: 'LCR-' + o.id},
    meta: SharedResource.MetaElement(o, profileURLs),
    extension: o.extension,
    partOf: o.partOf,
    status: o.status,
    category: FilterCodeableConcepts(ObservationVitalSignsCategory(o.category), acceptedCategories),
    code: o.code,
    subject: o.subject,
    encounter: o.encounter,
    effective: o.effective,
    issued: o.issued,
    value: o.value,
    dataAbsentReason: o.dataAbsentReason,
    interpretation: o.interpretation,
    bodySite: o.bodySite,
    method: o.method,
    specimen: o.specimen,
    referenceRange: ObservationVitalSignsReferenceRange(o.referenceRange),
    hasMember: o.hasMember,
    derivedFrom: o.derivedFrom,
    component: ObservationVitalSignsComponent(o.component)
  }

 define function &quot;GetProcedureExtensions&quot;(domainResource DomainResource):
  domainResource.extension E
    where E.url != 'http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-recorded'
     return E
 
define function ProcedureResource(procedure Procedure, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
  procedure p
  return Procedure{
    id: FHIR.id {value: 'LCR-' + p.id},
    meta: SharedResource.MetaElement(p, profileURLs),
    extension: GetProcedureExtensions(p), 
    basedOn: p.basedOn,
    partOf: p.partOf,
    status: p.status,
    category: FilterCodeableConcepts({p.category}, acceptedCategories)[0],
    code: p.code,
    subject: p.subject,
    encounter: p.encounter,
    performed: p.performed,
    location: p.location,
    reasonCode: p.reasonCode,
    reasonReference: p.reasonReference,
    bodySite: p.bodySite
  }

  define function ServiceRequestResource(serviceRequest ServiceRequest, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
  serviceRequest sR
  return ServiceRequest{
    id: FHIR.id {value: 'LCR-' + sR.id},
    meta: SharedResource.MetaElement(sR, profileURLs),
    extension: sR.extension,
    basedOn: sR.basedOn,
    status: sR.status,
    intent: sR.intent,
    category: FilterCodeableConcepts(sR.category, acceptedCategories),
    priority: sR.priority,
    doNotPerform: sR.doNotPerform,
    code: sR.code,
    quantity: sR.quantity,
    subject: sR.subject,
    encounter: sR.encounter,
    occurrence: sR.occurrence,
    asNeeded: sR.asNeeded,
    authoredOn: sR.authoredOn,
    specimen: sR.specimen
  }

  define function SpecimenCollection(collection FHIR.Specimen.Collection):
  collection c
  return FHIR.Specimen.Collection{
    collector: c.collector,
    collected: c.collected,
    quantity: c.quantity,
    bodySite: c.bodySite
  }

  define function SpecimenResource(specimen Specimen, profileURLs List&lt;FHIR.canonical&gt;):
  specimen s
  return Specimen{
    id: FHIR.id {value: 'LCR-' + s.id},
    meta: SharedResource.MetaElement(s, profileURLs),
    extension: s.extension,
    identifier: s.identifier,
    accessionIdentifier: s.accessionIdentifier,
    status: s.status,
    type: s.type,
    subject: s.subject,
    parent: s.parent,
    request: s.request,
    collection: SpecimenCollection(s.collection),
    note: s.note
  }</code></pre>
      </td>
    </tr>
    
  

<tr>
  <th colspan="2" scope="row" class="row-header">Generated using version 0.5.6-cibuild of the sample-content-ig Liquid templates</th>
</tr>

    </tbody>
  </table>
</div>
  </text>
  <contained>
    <Parameters>
      <id value="options"/>
      <parameter>
        <name value="translatorVersion"/>
        <valueString value="3.27.0"/>
      </parameter>
      <parameter>
        <name value="option"/>
        <valueString value="EnableDateRangeOptimization"/>
      </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="analyzeDataRequirements"/>
        <valueBoolean value="false"/>
      </parameter>
      <parameter>
        <name value="collapseDataRequirements"/>
        <valueBoolean value="true"/>
      </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-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="http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/NHSNAcuteCareHospitalMonthlyInitialPopulation"/>
  <version value="3.0.0"/>
  <name value="NHSNAcuteCareHospitalMonthlyInitialPopulation"/>
  <status value="draft"/>
  <type>
    <coding>
      <system value="http://terminology.hl7.org/CodeSystem/library-type"/>
      <code value="logic-library"/>
    </coding>
  </type>
  <date value="2026-08-14T18:33:45+00:00"/>
  <publisher value="CDC National Healthcare Safety Network (NHSN)"/>
  <contact>
    <name value="CDC National Healthcare Safety Network (NHSN)"/>
    <telecom>
      <system value="url"/>
      <value value="http://www.cdc.gov/nhsn"/>
    </telecom>
    <telecom>
      <system value="email"/>
      <value value="nhsn@cdc.gov"/>
    </telecom>
  </contact>
  <jurisdiction>
    <coding>
      <system value="urn:iso:std:iso:3166"/>
      <code value="US"/>
    </coding>
  </jurisdiction>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library FHIRHelpers"/>
    <resource
              value="http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/FHIRHelpers|4.0.2"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library NHSNHelpers"/>
    <resource
              value="http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/NHSNHelpers|0.0.002"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library SharedResource"/>
    <resource
              value="http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/SharedResourceCreation|0.1.010-cibuild"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Code system ActCode"/>
    <resource
              value="http://terminology.hl7.org/CodeSystem/v3-ActCode|10.0.0"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Code system Observation Category"/>
    <resource
              value="http://terminology.hl7.org/CodeSystem/observation-category|2.0.0"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Code system LOINC"/>
    <resource value="http://loinc.org"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Code system V2-0074"/>
    <resource value="http://terminology.hl7.org/CodeSystem/v2-0074|3.0.0"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Code system Condition Category"/>
    <resource
              value="http://terminology.hl7.org/CodeSystem/condition-category|2.0.0"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Code system US Core Condition Category"/>
    <resource
              value="http://hl7.org/fhir/us/core/CodeSystem/condition-category|6.1.0"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Code system Condition Clinical Status"/>
    <resource
              value="http://terminology.hl7.org/CodeSystem/condition-clinical|3.0.0"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Code system SNOMEDCT"/>
    <resource value="http://snomed.info/sct"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Code system MedicationRequest Category"/>
    <resource
              value="http://terminology.hl7.org/CodeSystem/medicationrequest-category|2.0.0"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display
             value="Value set Inpatient, Emergency, and Observation Locations"/>
    <resource
              value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.265"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Value set Emergency Department Visit"/>
    <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"/>
    <display value="Value set Encounter Inpatient"/>
    <resource
              value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Value set Observation Services"/>
    <resource
              value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Value set NHSN Inpatient Encounter Class Codes"/>
    <resource
              value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.274"/>
  </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="Qualifying Encounters During Measurement Period"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Encounter"/>
  </parameter>
  <parameter>
    <name value="Encounters"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Encounter"/>
  </parameter>
  <parameter>
    <name value="Encounters with Patient Hospital Locations"/>
    <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="Conditions"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="DiagnosticReports"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="DiagnosticReport"/>
  </parameter>
  <parameter>
    <name value="Observations"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="Get Locations from IP Encounters in Measurement Period"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Location"/>
  </parameter>
  <parameter>
    <name value="SDE Medication Request"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="MedicationRequest"/>
  </parameter>
  <parameter>
    <name value="SDE Medication Administration"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="MedicationAdministration"/>
  </parameter>
  <parameter>
    <name value="Medication IDs"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="string"/>
  </parameter>
  <parameter>
    <name value="SDE Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="SDE Coverage"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Coverage"/>
  </parameter>
  <parameter>
    <name value="SDE Device"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Device"/>
  </parameter>
  <parameter>
    <name value="SDE DiagnosticReport Lab"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="DiagnosticReport"/>
  </parameter>
  <parameter>
    <name value="SDE DiagnosticReport Note"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="DiagnosticReport"/>
  </parameter>
  <parameter>
    <name value="SDE Encounter"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Encounter"/>
  </parameter>
  <parameter>
    <name value="SDE IP Encounters"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Encounter"/>
  </parameter>
  <parameter>
    <name value="SDE Location"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Location"/>
  </parameter>
  <parameter>
    <name value="SDE Medication"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Medication"/>
  </parameter>
  <parameter>
    <name value="SDE Observation Lab Category"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="SDE Observation Vital Signs Category"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="SDE Observation Category"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="SDE Procedure"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Procedure"/>
  </parameter>
  <parameter>
    <name value="SDE Specimen"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Specimen"/>
  </parameter>
  <parameter>
    <name value="SDE Service Request"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="ServiceRequest"/>
  </parameter>
  <parameter>
    <name value="SDE Minimal Patient"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="Patient"/>
  </parameter>
  <dataRequirement>
    <type value="Patient"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Patient"/>
  </dataRequirement>
  <dataRequirement>
    <type value="Encounter"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
    <mustSupport value="type"/>
    <mustSupport value="status"/>
    <mustSupport value="period"/>
    <mustSupport value="location"/>
    <mustSupport value="diagnosis"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="identifier"/>
    <mustSupport value="statusHistory"/>
    <mustSupport value="class"/>
    <mustSupport value="classHistory"/>
    <mustSupport value="subject"/>
    <mustSupport value="reasonCode"/>
    <mustSupport value="hospitalization"/>
    <mustSupport value="partOf"/>
    <codeFilter>
      <path value="type"/>
      <valueSet
                value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307"/>
    </codeFilter>
  </dataRequirement>
  <dataRequirement>
    <type value="Encounter"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
    <mustSupport value="type"/>
    <mustSupport value="status"/>
    <mustSupport value="period"/>
    <mustSupport value="location"/>
    <mustSupport value="diagnosis"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="identifier"/>
    <mustSupport value="statusHistory"/>
    <mustSupport value="class"/>
    <mustSupport value="classHistory"/>
    <mustSupport value="subject"/>
    <mustSupport value="reasonCode"/>
    <mustSupport value="hospitalization"/>
    <mustSupport value="partOf"/>
    <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="Encounter"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
    <mustSupport value="type"/>
    <mustSupport value="status"/>
    <mustSupport value="period"/>
    <mustSupport value="location"/>
    <mustSupport value="diagnosis"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="identifier"/>
    <mustSupport value="statusHistory"/>
    <mustSupport value="class"/>
    <mustSupport value="classHistory"/>
    <mustSupport value="subject"/>
    <mustSupport value="reasonCode"/>
    <mustSupport value="hospitalization"/>
    <mustSupport value="partOf"/>
    <codeFilter>
      <path value="type"/>
      <valueSet
                value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143"/>
    </codeFilter>
  </dataRequirement>
  <dataRequirement>
    <type value="Encounter"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
    <mustSupport value="class"/>
    <mustSupport value="status"/>
    <mustSupport value="period"/>
    <mustSupport value="location"/>
    <mustSupport value="diagnosis"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="identifier"/>
    <mustSupport value="statusHistory"/>
    <mustSupport value="classHistory"/>
    <mustSupport value="type"/>
    <mustSupport value="subject"/>
    <mustSupport value="reasonCode"/>
    <mustSupport value="hospitalization"/>
    <mustSupport value="partOf"/>
    <codeFilter>
      <path value="class"/>
      <valueSet
                value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.274"/>
    </codeFilter>
  </dataRequirement>
  <dataRequirement>
    <type value="Encounter"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
    <mustSupport value="class"/>
    <mustSupport value="status"/>
    <mustSupport value="period"/>
    <mustSupport value="location"/>
    <mustSupport value="diagnosis"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="identifier"/>
    <mustSupport value="statusHistory"/>
    <mustSupport value="classHistory"/>
    <mustSupport value="type"/>
    <mustSupport value="subject"/>
    <mustSupport value="reasonCode"/>
    <mustSupport value="hospitalization"/>
    <mustSupport value="partOf"/>
    <codeFilter>
      <path value="class"/>
      <code>
        <system value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
        <code value="EMER"/>
        <display value="emergency"/>
      </code>
    </codeFilter>
  </dataRequirement>
  <dataRequirement>
    <type value="Encounter"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
    <mustSupport value="class"/>
    <mustSupport value="status"/>
    <mustSupport value="period"/>
    <mustSupport value="location"/>
    <mustSupport value="diagnosis"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="identifier"/>
    <mustSupport value="statusHistory"/>
    <mustSupport value="classHistory"/>
    <mustSupport value="type"/>
    <mustSupport value="subject"/>
    <mustSupport value="reasonCode"/>
    <mustSupport value="hospitalization"/>
    <mustSupport value="partOf"/>
    <codeFilter>
      <path value="class"/>
      <code>
        <system value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
        <code value="OBSENC"/>
        <display value="observation encounter"/>
      </code>
    </codeFilter>
  </dataRequirement>
  <dataRequirement>
    <type value="Encounter"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
    <mustSupport value="status"/>
    <mustSupport value="period"/>
    <mustSupport value="location"/>
    <mustSupport value="diagnosis"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="identifier"/>
    <mustSupport value="statusHistory"/>
    <mustSupport value="class"/>
    <mustSupport value="classHistory"/>
    <mustSupport value="type"/>
    <mustSupport value="subject"/>
    <mustSupport value="reasonCode"/>
    <mustSupport value="hospitalization"/>
    <mustSupport value="partOf"/>
  </dataRequirement>
  <dataRequirement>
    <type value="Condition"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Condition"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="clinicalStatus"/>
    <mustSupport value="verificationStatus"/>
    <mustSupport value="category"/>
    <mustSupport value="code"/>
    <mustSupport value="subject"/>
    <mustSupport value="encounter"/>
    <mustSupport value="onset"/>
    <mustSupport value="abatement"/>
    <mustSupport value="recordedDate"/>
    <mustSupport value="encounter.reference"/>
  </dataRequirement>
  <dataRequirement>
    <type value="DiagnosticReport"/>
    <profile
             value="http://hl7.org/fhir/StructureDefinition/DiagnosticReport"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="basedOn"/>
    <mustSupport value="status"/>
    <mustSupport value="category"/>
    <mustSupport value="code"/>
    <mustSupport value="subject"/>
    <mustSupport value="encounter"/>
    <mustSupport value="effective"/>
    <mustSupport value="issued"/>
    <mustSupport value="specimen"/>
    <mustSupport value="result"/>
    <mustSupport value="conclusion"/>
    <mustSupport value="conclusionCode"/>
  </dataRequirement>
  <dataRequirement>
    <type value="Observation"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Observation"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="partOf"/>
    <mustSupport value="status"/>
    <mustSupport value="category"/>
    <mustSupport value="code"/>
    <mustSupport value="subject"/>
    <mustSupport value="encounter"/>
    <mustSupport value="effective"/>
    <mustSupport value="issued"/>
    <mustSupport value="value"/>
    <mustSupport value="dataAbsentReason"/>
    <mustSupport value="interpretation"/>
    <mustSupport value="bodySite"/>
    <mustSupport value="method"/>
    <mustSupport value="specimen"/>
    <mustSupport value="referenceRange"/>
    <mustSupport value="hasMember"/>
    <mustSupport value="derivedFrom"/>
    <mustSupport value="component"/>
  </dataRequirement>
  <dataRequirement>
    <type value="MedicationRequest"/>
    <profile
             value="http://hl7.org/fhir/StructureDefinition/MedicationRequest"/>
    <mustSupport value="authoredOn"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="status"/>
    <mustSupport value="statusReason"/>
    <mustSupport value="intent"/>
    <mustSupport value="category"/>
    <mustSupport value="priority"/>
    <mustSupport value="doNotPerform"/>
    <mustSupport value="reported"/>
    <mustSupport value="medication"/>
    <mustSupport value="subject"/>
    <mustSupport value="encounter"/>
    <mustSupport value="recorder"/>
    <mustSupport value="reasonCode"/>
    <mustSupport value="reasonReference"/>
    <mustSupport value="instantiatesCanonical"/>
    <mustSupport value="instantiatesUri"/>
    <mustSupport value="courseOfTherapyType"/>
    <mustSupport value="dosageInstruction"/>
  </dataRequirement>
  <dataRequirement>
    <type value="MedicationAdministration"/>
    <profile
             value="http://hl7.org/fhir/StructureDefinition/MedicationAdministration"/>
    <mustSupport value="effective"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="instantiates"/>
    <mustSupport value="partOf"/>
    <mustSupport value="status"/>
    <mustSupport value="statusReason"/>
    <mustSupport value="category"/>
    <mustSupport value="medication"/>
    <mustSupport value="subject"/>
    <mustSupport value="context"/>
    <mustSupport value="supportingInformation"/>
    <mustSupport value="reasonCode"/>
    <mustSupport value="reasonReference"/>
    <mustSupport value="request"/>
    <mustSupport value="device"/>
    <mustSupport value="note"/>
    <mustSupport value="dosage"/>
    <mustSupport value="eventHistory"/>
  </dataRequirement>
  <dataRequirement>
    <type value="Coverage"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Coverage"/>
    <mustSupport value="period"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="status"/>
    <mustSupport value="type"/>
    <mustSupport value="beneficiary"/>
    <mustSupport value="payor"/>
  </dataRequirement>
  <dataRequirement>
    <type value="Device"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Device"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="status"/>
    <mustSupport value="expirationDate"/>
    <mustSupport value="lotNumber"/>
    <mustSupport value="serialNumber"/>
    <mustSupport value="modelNumber"/>
    <mustSupport value="partNumber"/>
    <mustSupport value="type"/>
    <mustSupport value="patient"/>
    <mustSupport value="parent"/>
  </dataRequirement>
  <dataRequirement>
    <type value="Medication"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Medication"/>
    <mustSupport value="id"/>
  </dataRequirement>
  <dataRequirement>
    <type value="Procedure"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Procedure"/>
    <mustSupport value="performed"/>
    <mustSupport value="category"/>
    <mustSupport value="id"/>
    <mustSupport value="basedOn"/>
    <mustSupport value="partOf"/>
    <mustSupport value="status"/>
    <mustSupport value="code"/>
    <mustSupport value="subject"/>
    <mustSupport value="encounter"/>
    <mustSupport value="location"/>
    <mustSupport value="reasonCode"/>
    <mustSupport value="reasonReference"/>
    <mustSupport value="bodySite"/>
  </dataRequirement>
  <dataRequirement>
    <type value="Specimen"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Specimen"/>
    <mustSupport value="collection"/>
    <mustSupport value="collection.collected"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="identifier"/>
    <mustSupport value="accessionIdentifier"/>
    <mustSupport value="status"/>
    <mustSupport value="type"/>
    <mustSupport value="subject"/>
    <mustSupport value="parent"/>
    <mustSupport value="request"/>
    <mustSupport value="note"/>
  </dataRequirement>
  <dataRequirement>
    <type value="ServiceRequest"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/ServiceRequest"/>
    <mustSupport value="authoredOn"/>
    <mustSupport value="category"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="basedOn"/>
    <mustSupport value="status"/>
    <mustSupport value="intent"/>
    <mustSupport value="priority"/>
    <mustSupport value="doNotPerform"/>
    <mustSupport value="code"/>
    <mustSupport value="quantity"/>
    <mustSupport value="subject"/>
    <mustSupport value="encounter"/>
    <mustSupport value="occurrence"/>
    <mustSupport value="asNeeded"/>
    <mustSupport value="specimen"/>
  </dataRequirement>
  <content>
    <contentType value="text/cql"/>
    <data
          value="bGlicmFyeSBOSFNOQWN1dGVDYXJlSG9zcGl0YWxNb250aGx5SW5pdGlhbFBvcHVsYXRpb24gdmVyc2lvbiAnMy4wLjAtY2lidWlsZCcKCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4yJyBjYWxsZWQgRkhJUkhlbHBlcnMKaW5jbHVkZSBOSFNOSGVscGVycyB2ZXJzaW9uICcwLjAuMDAyJyBjYWxsZWQgTkhTTkhlbHBlcnMKaW5jbHVkZSBTaGFyZWRSZXNvdXJjZUNyZWF0aW9uIHZlcnNpb24gJzAuMS4wMTAtY2lidWlsZCcgY2FsbGVkIFNoYXJlZFJlc291cmNlIAoKY29kZXN5c3RlbSAiQWN0Q29kZSI6ICdodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9Db2RlU3lzdGVtL3YzLUFjdENvZGUnCmNvZGVzeXN0ZW0gIk9ic2VydmF0aW9uIENhdGVnb3J5IjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vb2JzZXJ2YXRpb24tY2F0ZWdvcnknCmNvZGVzeXN0ZW0gIkxPSU5DIjogJ2h0dHA6Ly9sb2luYy5vcmcnIApjb2Rlc3lzdGVtICJWMi0wMDc0IjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vdjItMDA3NCcKY29kZXN5c3RlbSAiQ29uZGl0aW9uIENhdGVnb3J5IjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vY29uZGl0aW9uLWNhdGVnb3J5Jwpjb2Rlc3lzdGVtICJVUyBDb3JlIENvbmRpdGlvbiBDYXRlZ29yeSI6ICdodHRwOi8vaGw3Lm9yZy9maGlyL3VzL2NvcmUvQ29kZVN5c3RlbS9jb25kaXRpb24tY2F0ZWdvcnknCmNvZGVzeXN0ZW0gIkNvbmRpdGlvbiBDbGluaWNhbCBTdGF0dXMiOiAnaHR0cDovL3Rlcm1pbm9sb2d5LmhsNy5vcmcvQ29kZVN5c3RlbS9jb25kaXRpb24tY2xpbmljYWwnCmNvZGVzeXN0ZW0gIlNOT01FRENUIjogJ2h0dHA6Ly9zbm9tZWQuaW5mby9zY3QnCmNvZGVzeXN0ZW0gIk1lZGljYXRpb25SZXF1ZXN0IENhdGVnb3J5IjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vbWVkaWNhdGlvbnJlcXVlc3QtY2F0ZWdvcnknCgp2YWx1ZXNldCAiSW5wYXRpZW50LCBFbWVyZ2VuY3ksIGFuZCBPYnNlcnZhdGlvbiBMb2NhdGlvbnMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMDQ2LjI2NScKdmFsdWVzZXQgIkVtZXJnZW5jeSBEZXBhcnRtZW50IFZpc2l0IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjExNy4xLjcuMS4yOTInCnZhbHVlc2V0ICJFbmNvdW50ZXIgSW5wYXRpZW50IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjY2Ni41LjMwNycKdmFsdWVzZXQgIk9ic2VydmF0aW9uIFNlcnZpY2VzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTExMS4xNDMnCnZhbHVlc2V0ICJOSFNOIElucGF0aWVudCBFbmNvdW50ZXIgQ2xhc3MgQ29kZXMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMDQ2LjI3NCcKCi8vY29kZSBmb3IgT2JzZXJ2YXRpb24gQ2F0ZWdvcnkKY29kZSAibGFib3JhdG9yeSI6ICdsYWJvcmF0b3J5JyBmcm9tICJPYnNlcnZhdGlvbiBDYXRlZ29yeSIgZGlzcGxheSAnTGFib3JhdG9yeScKY29kZSAic29jaWFsLWhpc3RvcnkiOiAnc29jaWFsLWhpc3RvcnknIGZyb20gIk9ic2VydmF0aW9uIENhdGVnb3J5IiBkaXNwbGF5ICdTb2NpYWwgSGlzdG9yeScKY29kZSAidml0YWwtc2lnbnMiOiAndml0YWwtc2lnbnMnIGZyb20gIk9ic2VydmF0aW9uIENhdGVnb3J5IiBkaXNwbGF5ICdWaXRhbCBTaWducycKY29kZSAiaW1hZ2luZyI6ICdpbWFnaW5nJyBmcm9tICJPYnNlcnZhdGlvbiBDYXRlZ29yeSIgZGlzcGxheSAnSW1hZ2luZycKY29kZSAicHJvY2VkdXJlIjogJ3Byb2NlZHVyZScgZnJvbSAiT2JzZXJ2YXRpb24gQ2F0ZWdvcnkiIGRpc3BsYXkgJ1Byb2NlZHVyZScKY29kZSAic3VydmV5IjogJ3N1cnZleScgZnJvbSAiT2JzZXJ2YXRpb24gQ2F0ZWdvcnkiIGRpc3BsYXkgJ1N1cnZleScKCi8vY29kZSBmb3IgQ29uZGl0aW9uIGNhdGVnb3J5Ci8vY29kZSAicHJvYmxlbS1saXN0LWl0ZW0iOiAncHJvYmxlbS1saXN0LWl0ZW0nIGZyb20gIkNvbmRpdGlvbiBDYXRlZ29yeSIgZGlzcGxheSAnUHJvYmxlbSBMaXN0IEl0ZW0nCmNvZGUgImVuY291bnRlci1kaWFnbm9zaXMiOiAnZW5jb3VudGVyLWRpYWdub3NpcycgZnJvbSAiQ29uZGl0aW9uIENhdGVnb3J5IiBkaXNwbGF5ICdFbmNvdW50ZXIgRGlhZ25vc2lzJwovL2NvZGUgImhlYWx0aC1jb25jZXJuIjogJ2hlYWx0aC1jb25jZXJuJyBmcm9tICJVUyBDb3JlIENvbmRpdGlvbiBDYXRlZ29yeSIgZGlzcGxheSAnSGVhbHRoIENvbmNlcm4nCgovL2NvZGUgZm9yIERpYWdub3N0aWMgUmVwb3J0IENhdGVnb3J5CmNvZGUgIkxBQiI6ICdMQUInIGZyb20gIlYyLTAwNzQiIGRpc3BsYXkgJ0xhYm9yYXRvcnknCmNvZGUgIlJhZGlvbG9neSI6ICdMUDI5Njg0LTUnIGZyb20gIkxPSU5DIiBkaXNwbGF5ICdSYWRpb2xvZ3knCmNvZGUgIlBhdGhvbG9neSI6ICdMUDc4MzktNicgZnJvbSAiTE9JTkMiIGRpc3BsYXkgJ1BhdGhvbG9neScKY29kZSAiQ2FyZGlvbG9neSI6ICdMUDI5NzA4LTInIGZyb20gIkxPSU5DIiBkaXNwbGF5ICdDYXJkaW9sb2d5JwoKLy9jb2RlIGZvciBFbWVyZ2VuY3kgRW5jb3VudGVyIENsYXNzCmNvZGUgImVtZXJnZW5jeSI6ICdFTUVSJyBmcm9tICJBY3RDb2RlIiBkaXNwbGF5ICdlbWVyZ2VuY3knCmNvZGUgIm9ic2VydmF0aW9uIGVuY291bnRlciI6ICdPQlNFTkMnIGZyb20gIkFjdENvZGUiIGRpc3BsYXkgJ29ic2VydmF0aW9uIGVuY291bnRlcicKCi8vY29kZSBmb3IgQ29uZGl0aW9uIGNsaW5pY2FsU3RhdHVzCmNvZGUgImFjdGl2ZSI6ICdhY3RpdmUnIGZyb20gIkNvbmRpdGlvbiBDbGluaWNhbCBTdGF0dXMiIGRpc3BsYXkgJ2FjdGl2ZScKCi8vY29kZSBmb3IgUHJvY2VkdXJlIGNhdGVnb3J5CmNvZGUgIlN1cmdpY2FsIHByb2NlZHVyZSI6ICczODc3MTMwMDMnIGZyb20gIlNOT01FRENUIiBkaXNwbGF5ICdTdXJnaWNhbCBwcm9jZWR1cmUnCmNvZGUgIkRpYWdub3N0aWMgcHJvY2VkdXJlIjogJzEwMzY5MzAwNycgZnJvbSAiU05PTUVEQ1QiIGRpc3BsYXkgJ0RpYWdub3N0aWMgcHJvY2VkdXJlJyAvL0NvZGUgZGVwcmVjYXRlZCBpbiBTTk9NRUQgdmVyc2lvbiAyMDIzLTA5LTAxCi8vY29kZSAiRGlhZ25vc3RpYyBpbnRlbnQgKHF1YWxpZmllciB2YWx1ZSkiOiAnMjYxMDA0MDA4JyBmcm9tICJTTk9NRURDVCIgZGlzcGxheSAnRGlhZ25vc3RpYyBpbnRlbnQnCgovL2NvZGUgZm9yIE1lZGljYXRpb25SZXF1ZXN0IGNhdGVnb3J5CmNvZGUgImlucGF0aWVudCI6ICdpbnBhdGllbnQnIGZyb20gIk1lZGljYXRpb25SZXF1ZXN0IENhdGVnb3J5IiBkaXNwbGF5ICdJbnBhdGllbnQnCmNvZGUgIm91dHBhdGllbnQiOiAnb3V0cGF0aWVudCcgZnJvbSAiTWVkaWNhdGlvblJlcXVlc3QgQ2F0ZWdvcnkiIGRpc3BsYXkgJ091dHBhdGllbnQnCgovL2NvZGUgZm9yIFNlcnZpY2VSZXF1ZXN0IGNhdGVnb3J5IChhbHNvIHVzZXMgU3VyZ2ljYWwgcHJvY2VkdXJlIGZyb20gUHJvY2VkdXJlIGNhdGVnb3JpZXMpCmNvZGUgIkxhYm9yYXRvcnkgcHJvY2VkdXJlIjogJzEwODI1MjAwNycgZnJvbSAiU05PTUVEQ1QiIGRpc3BsYXkgJ0xhYm9yYXRvcnkgcHJvY2VkdXJlJwpjb2RlICJJbWFnaW5nIjogJzM2MzY3OTAwNScgZnJvbSAiU05PTUVEQ1QiIGRpc3BsYXkgJ0ltYWdpbmcnCgpwYXJhbWV0ZXIgIk1lYXN1cmVtZW50IFBlcmlvZCIgCiAgICBkZWZhdWx0IEludGVydmFsW0AyMDIyLTAxLTAxVDAwOjAwOjAwLjAsIEAyMDIyLTAxLTMxVDIzOjU5OjU5LjApCgpjb250ZXh0IFBhdGllbnQgCgpkZWZpbmUgIlF1YWxpZnlpbmcgRW5jb3VudGVycyBEdXJpbmcgTWVhc3VyZW1lbnQgUGVyaW9kIjoKICggW0VuY291bnRlcjogIkVuY291bnRlciBJbnBhdGllbnQiXQogIHVuaW9uIFtFbmNvdW50ZXI6ICJFbWVyZ2VuY3kgRGVwYXJ0bWVudCBWaXNpdCJdCiAgdW5pb24gW0VuY291bnRlcjogIk9ic2VydmF0aW9uIFNlcnZpY2VzIl0KICB1bmlvbiBbRW5jb3VudGVyOiBjbGFzcyBpbiAiTkhTTiBJbnBhdGllbnQgRW5jb3VudGVyIENsYXNzIENvZGVzIl0KICB1bmlvbiBbRW5jb3VudGVyOiBjbGFzcyB+ICJlbWVyZ2VuY3kiXQogIHVuaW9uIFtFbmNvdW50ZXI6IGNsYXNzIH4gIm9ic2VydmF0aW9uIGVuY291bnRlciJdKSBRdWFsaWZ5aW5nRW5jb3VudGVycwogIHdoZXJlIFF1YWxpZnlpbmdFbmNvdW50ZXJzLnN0YXR1cyBpbiB7J2luLXByb2dyZXNzJywgJ2ZpbmlzaGVkJywgJ3RyaWFnZWQnLCAnb25sZWF2ZScsICdlbnRlcmVkLWluLWVycm9yJ30KICAgIGFuZCBRdWFsaWZ5aW5nRW5jb3VudGVycy5wZXJpb2Qgb3ZlcmxhcHMgIk1lYXN1cmVtZW50IFBlcmlvZCIgCgpkZWZpbmUgIkVuY291bnRlcnMgd2l0aCBQYXRpZW50IEhvc3BpdGFsIExvY2F0aW9ucyI6CiAgIkVuY291bnRlcnMiIEVuY291bnRlcnMKICB3aGVyZSBleGlzdHMoCiAgICBFbmNvdW50ZXJzLmxvY2F0aW9uIEVuY291bnRlckxvY2F0aW9uCiAgICB3aGVyZSBOSFNOSGVscGVycy5HZXRMb2NhdGlvbihFbmNvdW50ZXJMb2NhdGlvbi5sb2NhdGlvbikudHlwZSBpbiAiSW5wYXRpZW50LCBFbWVyZ2VuY3ksIGFuZCBPYnNlcnZhdGlvbiBMb2NhdGlvbnMiCiAgICAgIGFuZCBFbmNvdW50ZXJMb2NhdGlvbi5wZXJpb2Qgb3ZlcmxhcHMgRW5jb3VudGVycy5wZXJpb2QKICApCiAgYW5kIEVuY291bnRlcnMuc3RhdHVzIGluIHsnaW4tcHJvZ3Jlc3MnLCAnZmluaXNoZWQnLCAndHJpYWdlZCcsICdvbmxlYXZlJywgJ2VudGVyZWQtaW4tZXJyb3InfQogIGFuZCBFbmNvdW50ZXJzLnBlcmlvZCBvdmVybGFwcyAiTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24iOgogICJRdWFsaWZ5aW5nIEVuY291bnRlcnMgRHVyaW5nIE1lYXN1cmVtZW50IFBlcmlvZCIKICB1bmlvbiAiRW5jb3VudGVycyB3aXRoIFBhdGllbnQgSG9zcGl0YWwgTG9jYXRpb25zIgoKZGVmaW5lICJFbmNvdW50ZXJzIjoKICBbRW5jb3VudGVyXQoKZGVmaW5lICJDb25kaXRpb25zIjoKICBbQ29uZGl0aW9uXQoKZGVmaW5lICJEaWFnbm9zdGljUmVwb3J0cyI6CiAgW0RpYWdub3N0aWNSZXBvcnRdCgpkZWZpbmUgIk9ic2VydmF0aW9ucyI6CiAgW09ic2VydmF0aW9uXQoKZGVmaW5lICJHZXQgTG9jYXRpb25zIGZyb20gSVAgRW5jb3VudGVycyBpbiBNZWFzdXJlbWVudCBQZXJpb2QiOgogIGZsYXR0ZW4oIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICBsZXQgbG9jYXRpb25FbGVtZW50czogSVAubG9jYXRpb24KICByZXR1cm4KICAgIGxvY2F0aW9uRWxlbWVudHMgTEUKICAgIGxldCBsb2NhdGlvblJlZmVyZW5jZTogTEUubG9jYXRpb24KICAgIHJldHVybiBOSFNOSGVscGVycy5HZXRMb2NhdGlvbihsb2NhdGlvblJlZmVyZW5jZSkpCgpkZWZpbmUgIk1lZGljYXRpb24gSURzIjoKICAoIlNERSBNZWRpY2F0aW9uIFJlcXVlc3QiCiAgdW5pb24gIlNERSBNZWRpY2F0aW9uIEFkbWluaXN0cmF0aW9uIikgTWVkUmVxT3JBZG1pbgogIHdoZXJlIE1lZFJlcU9yQWRtaW4ubWVkaWNhdGlvbiBpcyBGSElSLlJlZmVyZW5jZQogICAgYW5kIGV4aXN0cygiSW5pdGlhbCBQb3B1bGF0aW9uIikgLy9ObyBsb25nZXIgbmVlZCB0byBjaGVjayBmb3IgdGltaW5nIGhlcmUgYmVjYXVzZSBpdCdzIGNoZWNrZWQgaW4gU0RFIE1lZGljYXRpb24gUmVxdWVzdC9BZG1pbmlzdHJpYXRpb24KICByZXR1cm4gTkhTTkhlbHBlcnMuR2V0SWQoTWVkUmVxT3JBZG1pbi5tZWRpY2F0aW9uLnJlZmVyZW5jZSkKCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovL1N1cHBsZW1lbnRhbCBEYXRhIEVsZW1lbnQKLy9XaGVuIEZISVIuY2Fub25pY2FsIHZhbHVlIGlzIHByZXNlbnQsIFVTIENvcmUgMy4xLjEgcHJvZmlsZXMgYXJlIHVzZWQKLy9XaGVuIEZISVIuY2Fub25pY2FsIHZhbHVlIGlzIG5vdCBwcmVzZW50LCBGSElSIEJhc2UgcHJvZmlsZXMgYXJlIHVzZWQKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRlZmluZSAiU0RFIENvbmRpdGlvbiI6CiAgIkNvbmRpdGlvbnMiIENvbmRpdGlvbnMgCiAgICB3aGVyZSBleGlzdHMoCiAgICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUAovL0NoZWNrIGZvciBQcm9ibGVtIExpc3QgQ29uZGl0aW9ucyB0aGF0IHdlcmUgcmVjb3JkZWQgYmVmb3JlIG9yIGR1cmluZyBJUCAKICAgICB3aGVyZSAKICAgICAgKGV4aXN0cyhJUC5kaWFnbm9zaXMgRGlhZ25vc2VzCiAgICAgICAgICB3aGVyZSBOSFNOSGVscGVycy5HZXRJZChEaWFnbm9zZXMuY29uZGl0aW9uLnJlZmVyZW5jZSkgPSBDb25kaXRpb25zLmlkCiAgICAgICAgKQogICAgICAgIG9yIE5IU05IZWxwZXJzLkdldElkKENvbmRpdGlvbnMuZW5jb3VudGVyLnJlZmVyZW5jZSkgPSBJUC5pZAogICAgICApCiAgICAgIGFuZCBleGlzdHMgKENvbmRpdGlvbnMuY2F0ZWdvcnkgY2F0ZWdvcmllcwogICAgICAgIHdoZXJlIGNhdGVnb3JpZXMgfiAiZW5jb3VudGVyLWRpYWdub3NpcyIKICAgICkKICApCiAgcmV0dXJuIENvbmRpdGlvblJlc291cmNlKENvbmRpdGlvbnMsCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtbW9udGhseS1jb25kaXRpb24nfX0sCiAgIHsiZW5jb3VudGVyLWRpYWdub3NpcyJ9KQoKZGVmaW5lICJTREUgQ292ZXJhZ2UiOiAKCVtDb3ZlcmFnZV0gQ292ZXJhZ2VzCiAgd2hlcmUgZXhpc3RzKAogICAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICAgIHdoZXJlIENvdmVyYWdlcy5wZXJpb2Qgb3ZlcmxhcHMgSVAucGVyaW9kKQogIHJldHVybiBDb3ZlcmFnZVJlc291cmNlKENvdmVyYWdlcywKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1tb250aGx5LWNvdmVyYWdlJ319KQoKZGVmaW5lICJTREUgRGV2aWNlIjoKICBbRGV2aWNlXSBEZXZpY2VzIAogIHdoZXJlIGV4aXN0cygiSW5pdGlhbCBQb3B1bGF0aW9uIikKICByZXR1cm4gRGV2aWNlUmVzb3VyY2UoRGV2aWNlcywKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1tb250aGx5LWRldmljZSd9fSkKCi8vVGhpcyBibG9jayBjb2xsZWN0cyBhbGwgRGlhZ25vc3RpY1JlcG9ydCByZXNvdXJjZXMgd2hpbGUgYWxzbyBtYXJraW5nIExhYiBhbmQgTm90ZSBEaWFnbm9zdGljUmVwb3J0cyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBwcm9maWxlcwovLyNTdGFydCBEaWFnbm9zdGljUmVwb3J0IGJsb2NrCmRlZmluZSAiU0RFIERpYWdub3N0aWNSZXBvcnQgTGFiIjoKICAiRGlhZ25vc3RpY1JlcG9ydHMiIERpYWdub3N0aWNSZXBvcnRzCiAgd2hlcmUgKGV4aXN0cyhEaWFnbm9zdGljUmVwb3J0cy5jYXRlZ29yeSBDYXRlZ29yeSB3aGVyZSBDYXRlZ29yeSB+ICJMQUIiKQogICAgYW5kIGV4aXN0cygKICAgICAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICAgICAgd2hlcmUgTkhTTkhlbHBlcnMuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoRGlhZ25vc3RpY1JlcG9ydHMuZWZmZWN0aXZlKSBvdmVybGFwcyBJUC5wZXJpb2QpKQogIHJldHVybiBEaWFnbm9zdGljUmVwb3J0TGFiUmVzb3VyY2UoRGlhZ25vc3RpY1JlcG9ydHMsCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtbW9udGhseS1kaWFnbm9zdGljcmVwb3J0LWxhYid9fSwKICB7IkxBQiIsICJSYWRpb2xvZ3kiLCAiUGF0aG9sb2d5IiwgIkNhcmRpb2xvZ3kifSkKIApkZWZpbmUgIlNERSBEaWFnbm9zdGljUmVwb3J0IE5vdGUiOgogICJEaWFnbm9zdGljUmVwb3J0cyIgRGlhZ25vc3RpY1JlcG9ydHMKICB3aGVyZSAoKGV4aXN0cyhEaWFnbm9zdGljUmVwb3J0cy5jYXRlZ29yeSBDYXRlZ29yeSB3aGVyZSBDYXRlZ29yeSB+ICJSYWRpb2xvZ3kiKSkKICAgIG9yIGV4aXN0cygoRGlhZ25vc3RpY1JlcG9ydHMuY2F0ZWdvcnkgQ2F0ZWdvcnkgd2hlcmUgQ2F0ZWdvcnkgfiAiUGF0aG9sb2d5IikpCiAgICBvciBleGlzdHMoKERpYWdub3N0aWNSZXBvcnRzLmNhdGVnb3J5IENhdGVnb3J5IHdoZXJlIENhdGVnb3J5IH4gIkNhcmRpb2xvZ3kiKSkpCiAgICBhbmQgZXhpc3RzKAogICAgICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUAogICAgICB3aGVyZSBOSFNOSGVscGVycy4iTm9ybWFsaXplIEludGVydmFsIihEaWFnbm9zdGljUmVwb3J0cy5lZmZlY3RpdmUpIG92ZXJsYXBzIElQLnBlcmlvZCkKICByZXR1cm4gRGlhZ25vc3RpY1JlcG9ydFJlc291cmNlKERpYWdub3N0aWNSZXBvcnRzLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktZGlhZ25vc3RpY3JlcG9ydC1ub3RlJ319LAogIHsiUmFkaW9sb2d5IiwgIlBhdGhvbG9neSIsICJDYXJkaW9sb2d5IiwgIkxBQiJ9KQovLyNFbmQgRGlhZ25vc3RpY1JlcG9ydCBibG9jawoKZGVmaW5lICJTREUgRW5jb3VudGVyIjogCiAgIkVuY291bnRlcnMiIEVuY291bnRlcnMKICB3aGVyZSBub3QgQ2hlY2tJUChFbmNvdW50ZXJzKQogIGFuZCBleGlzdHMoCiAgICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUAogICAgd2hlcmUgRW5jb3VudGVycy5wZXJpb2Qgb3ZlcmxhcHMgSVAucGVyaW9kKQogIHJldHVybiBFbmNvdW50ZXJSZXNvdXJjZShFbmNvdW50ZXJzLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly9obDcub3JnL2ZoaXIvdXMvY29yZS9TdHJ1Y3R1cmVEZWZpbml0aW9uL3VzLWNvcmUtZW5jb3VudGVyJ319KQoKZGVmaW5lICJTREUgSVAgRW5jb3VudGVycyI6CiAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICByZXR1cm4gRW5jb3VudGVyUmVzb3VyY2UoSVAsIAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktZW5jb3VudGVyJ319KQoKZGVmaW5lICJTREUgTG9jYXRpb24iOgogICJHZXQgTG9jYXRpb25zIGZyb20gSVAgRW5jb3VudGVycyBpbiBNZWFzdXJlbWVudCBQZXJpb2QiIExvY2F0aW9ucwogIHdoZXJlIGV4aXN0cygiSW5pdGlhbCBQb3B1bGF0aW9uIikKICBhbmQgTG9jYXRpb25zIGlzIG5vdCBudWxsCiAgcmV0dXJuIExvY2F0aW9uUmVzb3VyY2UoTG9jYXRpb25zLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktbG9jYXRpb24nfX0pCiAKZGVmaW5lICJTREUgTWVkaWNhdGlvbiBBZG1pbmlzdHJhdGlvbiI6CiAgW01lZGljYXRpb25BZG1pbmlzdHJhdGlvbl0gTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9ucyAKICB3aGVyZSBleGlzdHMoCiAgICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUAogICAgd2hlcmUgTkhTTkhlbHBlcnMuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9ucy5lZmZlY3RpdmUpIG92ZXJsYXBzIElQLnBlcmlvZCkKICByZXR1cm4gTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uUmVzb3VyY2UoTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9ucywKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1tb250aGx5LW1lZGljYXRpb25hZG1pbmlzdHJhdGlvbid9fSwKICB7ImlucGF0aWVudCIsICJvdXRwYXRpZW50In0pCiAKZGVmaW5lICJTREUgTWVkaWNhdGlvbiBSZXF1ZXN0IjoKICBbTWVkaWNhdGlvblJlcXVlc3RdIE1lZGljYXRpb25SZXF1ZXN0cyAKICB3aGVyZSBleGlzdHMoCiAgICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUAogICAgd2hlcmUgTWVkaWNhdGlvblJlcXVlc3RzLmF1dGhvcmVkT24gZHVyaW5nIElQLnBlcmlvZCkKICByZXR1cm4gTWVkaWNhdGlvblJlcXVlc3RSZXNvdXJjZShNZWRpY2F0aW9uUmVxdWVzdHMsCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtbW9udGhseS1tZWRpY2F0aW9ucmVxdWVzdCd9fSwKICB7ImlucGF0aWVudCIsICJvdXRwYXRpZW50In0pCiAgCmRlZmluZSAiU0RFIE1lZGljYXRpb24iOgogIFtNZWRpY2F0aW9uXSBNZWRpY2F0aW9ucwogIHdoZXJlIE1lZGljYXRpb25zLmlkIGluICJNZWRpY2F0aW9uIElEcyIKICByZXR1cm4gU2hhcmVkUmVzb3VyY2UuTWVkaWNhdGlvblJlc291cmNlKE1lZGljYXRpb25zLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktbWVkaWNhdGlvbid9fSkKCmRlZmluZSAiU0RFIE9ic2VydmF0aW9uIExhYiBDYXRlZ29yeSI6CiAgIk9ic2VydmF0aW9ucyIgT2JzZXJ2YXRpb25zIAogIHdoZXJlIChleGlzdHMoT2JzZXJ2YXRpb25zLmNhdGVnb3J5IENhdGVnb3J5IHdoZXJlIENhdGVnb3J5IH4gImxhYm9yYXRvcnkiKSkKICAgIGFuZCBleGlzdHMoCiAgICAgICJJbml0aWFsIFBvcHVsYXRpb24iIElQCiAgICAgIHdoZXJlIE5IU05IZWxwZXJzLiJOb3JtYWxpemUgSW50ZXJ2YWwiKE9ic2VydmF0aW9ucy5lZmZlY3RpdmUpIG92ZXJsYXBzIElQLnBlcmlvZCkKICByZXR1cm4gT2JzZXJ2YXRpb25MYWJSZXNvdXJjZShPYnNlcnZhdGlvbnMsCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtbW9udGhseS1vYnNlcnZhdGlvbi1sYWInfX0sCiAgeyJpbWFnaW5nIiwgInByb2NlZHVyZSIsICJ2aXRhbC1zaWducyIsICJsYWJvcmF0b3J5In0pCgovL1ZpdGFsIFNpZ25zIE9ic2VydmF0aW9uIGhhcyBpdHMgb3duIHByb2ZpbGUgaW4gRkhJUiBCYXNlCmRlZmluZSAiU0RFIE9ic2VydmF0aW9uIFZpdGFsIFNpZ25zIENhdGVnb3J5IjoKICAiT2JzZXJ2YXRpb25zIiBPYnNlcnZhdGlvbnMgCiAgd2hlcmUgKGV4aXN0cyhPYnNlcnZhdGlvbnMuY2F0ZWdvcnkgQ2F0ZWdvcnkgd2hlcmUgQ2F0ZWdvcnkgfiAidml0YWwtc2lnbnMiKSkKICAgIGFuZCBleGlzdHMoCiAgICAgICJJbml0aWFsIFBvcHVsYXRpb24iIElQCiAgICAgIHdoZXJlIE5IU05IZWxwZXJzLiJOb3JtYWxpemUgSW50ZXJ2YWwiKE9ic2VydmF0aW9ucy5lZmZlY3RpdmUpIG92ZXJsYXBzIElQLnBlcmlvZCkKICByZXR1cm4gT2JzZXJ2YXRpb25WaXRhbFNpZ25zUmVzb3VyY2UoT2JzZXJ2YXRpb25zLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktb2JzZXJ2YXRpb24tdml0YWxzJ319LAogIHsiaW1hZ2luZyIsICJwcm9jZWR1cmUiLCAidml0YWwtc2lnbnMiLCAibGFib3JhdG9yeSJ9KQoKLy9EZWZhdWx0aW5nIHRvIGJhc2UgRkhJUiBwcm9maWxlIGFzIHRoZXJlIGFyZSBubyBpbmRpdmlkdWFsIHByb2ZpbGVzIGluIFVTIENvcmUgMy4xLjEgdGhhdCBjb3ZlciB0aGVzZSBPYnNlcnZhdGlvbiBjYXRlZ29yaWVzCmRlZmluZSAiU0RFIE9ic2VydmF0aW9uIENhdGVnb3J5IjoKICAiT2JzZXJ2YXRpb25zIiBPYnNlcnZhdGlvbnMgCiAgd2hlcmUgKC8qKGV4aXN0cyhPYnNlcnZhdGlvbnMuY2F0ZWdvcnkgQ2F0ZWdvcnkgd2hlcmUgQ2F0ZWdvcnkgfiAic29jaWFsLWhpc3RvcnkiKSkKICAgIG9yIChleGlzdHMoT2JzZXJ2YXRpb25zLmNhdGVnb3J5IENhdGVnb3J5IHdoZXJlIENhdGVnb3J5IH4gInN1cnZleSIpKQogICAgb3IgKi8oZXhpc3RzKE9ic2VydmF0aW9ucy5jYXRlZ29yeSBDYXRlZ29yeSB3aGVyZSBDYXRlZ29yeSB+ICJpbWFnaW5nIikpCiAgICBvciAoZXhpc3RzKE9ic2VydmF0aW9ucy5jYXRlZ29yeSBDYXRlZ29yeSB3aGVyZSBDYXRlZ29yeSB+ICJwcm9jZWR1cmUiKSkpCiAgICBhbmQgZXhpc3RzKAogICAgICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUAogICAgICB3aGVyZSBOSFNOSGVscGVycy4iTm9ybWFsaXplIEludGVydmFsIihPYnNlcnZhdGlvbnMuZWZmZWN0aXZlKSBvdmVybGFwcyBJUC5wZXJpb2QpCiAgcmV0dXJuIE9ic2VydmF0aW9uUmVzb3VyY2UoT2JzZXJ2YXRpb25zLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktb2JzZXJ2YXRpb24nfX0sCiAgeyJpbWFnaW5nIiwgInByb2NlZHVyZSIsICJ2aXRhbC1zaWducyIsICJsYWJvcmF0b3J5In0pCgpkZWZpbmUgIlNERSBQcm9jZWR1cmUiOgogIFtQcm9jZWR1cmVdIFByb2NlZHVyZXMgCiAgd2hlcmUgZXhpc3RzKAogICAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICAgIHdoZXJlIE5IU05IZWxwZXJzLiJOb3JtYWxpemUgSW50ZXJ2YWwiKFByb2NlZHVyZXMucGVyZm9ybWVkKSBvdmVybGFwcyBJUC5wZXJpb2QpCiAgICAgIGFuZCAoCiAgICAgIFByb2NlZHVyZXMuY2F0ZWdvcnkgfiAiU3VyZ2ljYWwgcHJvY2VkdXJlIgogICAgICBvciBQcm9jZWR1cmVzLmNhdGVnb3J5IH4gIkRpYWdub3N0aWMgcHJvY2VkdXJlIikKICAgICByZXR1cm4gUHJvY2VkdXJlUmVzb3VyY2UoUHJvY2VkdXJlcywKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1tb250aGx5LXByb2NlZHVyZSd9fSwKICB7IlN1cmdpY2FsIHByb2NlZHVyZSIsICJEaWFnbm9zdGljIHByb2NlZHVyZSJ9KQoKZGVmaW5lICJTREUgU3BlY2ltZW4iOgogIFtTcGVjaW1lbl0gU3BlY2ltZW5zCiAgd2hlcmUgZXhpc3RzKAogICAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICAgIHdoZXJlIE5IU05IZWxwZXJzLiJOb3JtYWxpemUgSW50ZXJ2YWwiKFNwZWNpbWVucy5jb2xsZWN0aW9uLmNvbGxlY3RlZCkgb3ZlcmxhcHMgSVAucGVyaW9kCiAgKQogIHJldHVybiBTcGVjaW1lblJlc291cmNlKFNwZWNpbWVucywKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1tb250aGx5LXNwZWNpbWVuJ319KQoKZGVmaW5lICJTREUgU2VydmljZSBSZXF1ZXN0IjoKICBbU2VydmljZVJlcXVlc3RdIFNlcnZpY2VSZXF1ZXN0cwogIHdoZXJlIGV4aXN0cygiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUAogICAgd2hlcmUgU2VydmljZVJlcXVlc3RzLmF1dGhvcmVkT24gZHVyaW5nIElQLnBlcmlvZCkKICAgIGFuZCBleGlzdHMoCiAgICAgIFNlcnZpY2VSZXF1ZXN0cy5jYXRlZ29yeSBDIAogICAgICB3aGVyZSBDIH4gIkxhYm9yYXRvcnkgcHJvY2VkdXJlIgogICAgICAgICBvciBDIH4gIlN1cmdpY2FsIHByb2NlZHVyZSIKICAgICAgICAgb3IgQyB+ICJJbWFnaW5nIgogICAgKQogIHJldHVybiBTZXJ2aWNlUmVxdWVzdFJlc291cmNlKFNlcnZpY2VSZXF1ZXN0cywKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1tb250aGx5LXNlcnZpY2VyZXF1ZXN0J319LAogIHsiTGFib3JhdG9yeSBwcm9jZWR1cmUiLCAiU3VyZ2ljYWwgcHJvY2VkdXJlIiwgIkltYWdpbmcifSkKCmRlZmluZSAiU0RFIE1pbmltYWwgUGF0aWVudCI6CiAgUGF0aWVudCBwCiAgcmV0dXJuIFNoYXJlZFJlc291cmNlLlBhdGllbnRSZXNvdXJjZShwLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vY3Jvc3MtbWVhc3VyZS1wYXRpZW50J319KQoKLy8KLy9GdW5jdGlvbnMKLy8KZGVmaW5lIGZ1bmN0aW9uICJDaGVja0lQIihlbmNvdW50ZXIgRW5jb3VudGVyKToKICBleGlzdHMoIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICB3aGVyZSBlbmNvdW50ZXIuaWQgPSBJUC5pZCkKCmRlZmluZSBmdW5jdGlvbiAiR2V0TWVkaWNhdGlvbkZyb20iKGNob2ljZSBDaG9pY2U8RkhJUi5Db2RlYWJsZUNvbmNlcHQsIEZISVIuUmVmZXJlbmNlPik6CiAgY2FzZQogICAgd2hlbiBjaG9pY2UgaXMgRkhJUi5SZWZlcmVuY2UgdGhlbgogICAgICBHZXRNZWRpY2F0aW9uKGNob2ljZSBhcyBGSElSLlJlZmVyZW5jZSkKICAgIGVsc2UKICAgICAgbnVsbAogIGVuZAoKZGVmaW5lIGZ1bmN0aW9uICJHZXRNZWRpY2F0aW9uIihyZWZlcmVuY2UgUmVmZXJlbmNlKToKICBzaW5nbGV0b24gZnJvbSAoCiAgICBbTWVkaWNhdGlvbl0gTWVkaWNhdGlvbnMKICAgIHdoZXJlIE1lZGljYXRpb25zLmlkID0gTkhTTkhlbHBlcnMuR2V0SWQocmVmZXJlbmNlLnJlZmVyZW5jZSkKICApCgpkZWZpbmUgZnVuY3Rpb24gIkdldENvbmRpdGlvbiIocmVmZXJlbmNlIFJlZmVyZW5jZSk6CiAgc2luZ2xldG9uIGZyb20gKAogICAgIkNvbmRpdGlvbnMiIENvbmRpdGlvbnMKICAgIHdoZXJlIENvbmRpdGlvbnMuaWQgPSBOSFNOSGVscGVycy5HZXRJZChyZWZlcmVuY2UucmVmZXJlbmNlKQogICkKCmRlZmluZSBmdW5jdGlvbiAiR2V0RW5jb3VudGVyIihyZWZlcmVuY2UgUmVmZXJlbmNlKToKICBzaW5nbGV0b24gZnJvbSAoCiAgICAiRW5jb3VudGVycyIgRW5jb3VudGVycwogICAgd2hlcmUgRW5jb3VudGVycy5pZCA9IE5IU05IZWxwZXJzLkdldElkKHJlZmVyZW5jZS5yZWZlcmVuY2UpCiAgKQoKZGVmaW5lIGZ1bmN0aW9uIFJlbW92ZVVuYWNjZXB0ZWQoY29kZXMgTGlzdDxGSElSLkNvZGVhYmxlQ29uY2VwdD4sIGFjY2VwdGVkIExpc3Q8U3lzdGVtLkNvZGU+KToKICBjb2RlcyBjCiAgd2hlcmUgZXhpc3RzKAogICAgYWNjZXB0ZWQgYQogICAgd2hlcmUgYyB+IGEKICApCgpkZWZpbmUgZnVuY3Rpb24gRmlsdGVyQ29kZWFibGVDb25jZXB0cyhjb2RlcyBMaXN0PEZISVIuQ29kZWFibGVDb25jZXB0PiwgYWNjZXB0ZWQgTGlzdDxTeXN0ZW0uQ29kZT4pOgogIGlmIENvdW50KGFjY2VwdGVkKSA+IDAKICAgIHRoZW4gUmVtb3ZlVW5hY2NlcHRlZChjb2RlcywgYWNjZXB0ZWQpCiAgZWxzZSBjb2RlcyAgICAKCi8vCi8vTWVhc3VyZSBTcGVjaWZpYyBSZXNvdXJjZSBDcmVhdGlvbiBGdW5jdGlvbnMKLy8KCmRlZmluZSBmdW5jdGlvbiBDb25kaXRpb25SZXNvdXJjZShjb25kaXRpb24gQ29uZGl0aW9uLCBwcm9maWxlVVJMcyBMaXN0PEZISVIuY2Fub25pY2FsPiwgYWNjZXB0ZWRDYXRlZ29yaWVzIExpc3Q8U3lzdGVtLkNvZGU+KToKICBjb25kaXRpb24gYwogIHJldHVybiBDb25kaXRpb257CiAgICBpZDogRkhJUi5pZCB7dmFsdWU6ICdMQ1ItJyArIGMuaWR9LAogICAgbWV0YTogU2hhcmVkUmVzb3VyY2UuTWV0YUVsZW1lbnQoYywgcHJvZmlsZVVSTHMpLAogICAgZXh0ZW5zaW9uOiBjLmV4dGVuc2lvbiwKICAgIGNsaW5pY2FsU3RhdHVzOiBjLmNsaW5pY2FsU3RhdHVzLAogICAgdmVyaWZpY2F0aW9uU3RhdHVzOiBjLnZlcmlmaWNhdGlvblN0YXR1cywKICAgIGNhdGVnb3J5OiBGaWx0ZXJDb2RlYWJsZUNvbmNlcHRzKGMuY2F0ZWdvcnksIGFjY2VwdGVkQ2F0ZWdvcmllcyksCiAgICBjb2RlOiBjLmNvZGUsCiAgICBzdWJqZWN0OiBjLnN1YmplY3QsCiAgICBlbmNvdW50ZXI6IGMuZW5jb3VudGVyLAogICAgb25zZXQ6IGMub25zZXQsCiAgICBhYmF0ZW1lbnQ6IGMuYWJhdGVtZW50LAogICAgcmVjb3JkZWREYXRlOiBjLnJlY29yZGVkRGF0ZQogIH0KCmRlZmluZSBmdW5jdGlvbiBDb3ZlcmFnZVJlc291cmNlKGNvdmVyYWdlIENvdmVyYWdlLCBwcm9maWxlVVJMcyBMaXN0PEZISVIuY2Fub25pY2FsPik6CiAgY292ZXJhZ2UgYwogIHJldHVybiBDb3ZlcmFnZXsKICAgIGlkOiBGSElSLmlke3ZhbHVlOiAnTENSLScgKyBjLmlkfSwKICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KGMsIHByb2ZpbGVVUkxzKSwKICAgIGV4dGVuc2lvbjogYy5leHRlbnNpb24sCiAgICBzdGF0dXM6IGMuc3RhdHVzLAogICAgdHlwZTogYy50eXBlLAogICAgYmVuZWZpY2lhcnk6IGMuYmVuZWZpY2lhcnksCiAgICBwZXJpb2Q6IGMucGVyaW9kLAogICAgcGF5b3I6IGMucGF5b3IKICB9CgpkZWZpbmUgZnVuY3Rpb24gRGV2aWNlUmVzb3VyY2UoZGV2aWNlIERldmljZSwgcHJvZmlsZVVSTHMgTGlzdDxGSElSLmNhbm9uaWNhbD4pOgogIGRldmljZSBkCiAgcmV0dXJuIERldmljZXsKICAgIGlkOiBGSElSLmlke3ZhbHVlOiAnTENSLScgKyBkLmlkfSwKICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KGQsIHByb2ZpbGVVUkxzKSwKICAgIGV4dGVuc2lvbjogZC5leHRlbnNpb24sCiAgICBzdGF0dXM6IGQuc3RhdHVzLAogICAgZXhwaXJhdGlvbkRhdGU6IGQuZXhwaXJhdGlvbkRhdGUsCiAgICBsb3ROdW1iZXI6IGQubG90TnVtYmVyLAogICAgc2VyaWFsTnVtYmVyOiBkLnNlcmlhbE51bWJlciwKICAgIG1vZGVsTnVtYmVyOiBkLm1vZGVsTnVtYmVyLAogICAgcGFydE51bWJlcjogZC5wYXJ0TnVtYmVyLAogICAgdHlwZTogZC50eXBlLAogICAgcGF0aWVudDogZC5wYXRpZW50LAogICAgcGFyZW50OiBkLnBhcmVudAogIH0KCmRlZmluZSBmdW5jdGlvbiBEaWFnbm9zdGljUmVwb3J0Q29kaW5nKGNvZGluZyBMaXN0PENvZGluZz4pOgogIGNvZGluZyBjCiAgcmV0dXJuIENvZGluZ3sKICAgIHN5c3RlbTogYy5zeXN0ZW0sCiAgICB2ZXJzaW9uOiBjLnZlcnNpb24sCiAgICBjb2RlOiBjLmNvZGUsCiAgICBkaXNwbGF5OiBjLmRpc3BsYXkKICB9CgpkZWZpbmUgZnVuY3Rpb24gRGlhZ25vc3RpY1JlcG9ydENhdGVnb3J5KGNhdGVnb3J5IExpc3Q8Q29kZWFibGVDb25jZXB0Pik6CiAgY2F0ZWdvcnkgYwogIHJldHVybiBDb2RlYWJsZUNvbmNlcHR7CiAgICBjb2Rpbmc6IERpYWdub3N0aWNSZXBvcnRDb2RpbmcoYy5jb2RpbmcpCiAgfQoKZGVmaW5lIGZ1bmN0aW9uIERpYWdub3N0aWNSZXBvcnRMYWJSZXNvdXJjZShkaWFnbm9zdGljUmVwb3J0IERpYWdub3N0aWNSZXBvcnQsIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+LCBhY2NlcHRlZENhdGVnb3JpZXMgTGlzdDxTeXN0ZW0uQ29kZT4pOgogIGRpYWdub3N0aWNSZXBvcnQgZAogIHJldHVybiBEaWFnbm9zdGljUmVwb3J0ewogICAgaWQ6IEZISVIuaWR7dmFsdWU6ICdMQ1ItJyArIGQuaWR9LAogICAgbWV0YTogU2hhcmVkUmVzb3VyY2UuTWV0YUVsZW1lbnQoZCwgcHJvZmlsZVVSTHMpLAogICAgZXh0ZW5zaW9uOiBkLmV4dGVuc2lvbiwKICAgIGJhc2VkT246IGQuYmFzZWRPbiwKICAgIHN0YXR1czogZC5zdGF0dXMsCiAgICBjYXRlZ29yeTogRmlsdGVyQ29kZWFibGVDb25jZXB0cyhEaWFnbm9zdGljUmVwb3J0Q2F0ZWdvcnkoZC5jYXRlZ29yeSksIGFjY2VwdGVkQ2F0ZWdvcmllcyksCiAgICBjb2RlOiBkLmNvZGUsCiAgICBzdWJqZWN0OiBkLnN1YmplY3QsCiAgICBlbmNvdW50ZXI6IGQuZW5jb3VudGVyLAogICAgZWZmZWN0aXZlOiBkLmVmZmVjdGl2ZSwKICAgIGlzc3VlZDogZC5pc3N1ZWQsCiAgICBzcGVjaW1lbjogZC5zcGVjaW1lbiwKICAgIHJlc3VsdDogZC5yZXN1bHQsCiAgICBjb25jbHVzaW9uOiBkLmNvbmNsdXNpb24sCiAgICBjb25jbHVzaW9uQ29kZTogZC5jb25jbHVzaW9uQ29kZQogIH0KCmRlZmluZSBmdW5jdGlvbiBEaWFnbm9zdGljUmVwb3J0UmVzb3VyY2UoZGlhZ25vc3RpY1JlcG9ydCBEaWFnbm9zdGljUmVwb3J0LCBwcm9maWxlVVJMcyBMaXN0PEZISVIuY2Fub25pY2FsPiwgYWNjZXB0ZWRDYXRlZ29yaWVzIExpc3Q8U3lzdGVtLkNvZGU+KToKICBkaWFnbm9zdGljUmVwb3J0IGQKICByZXR1cm4gRGlhZ25vc3RpY1JlcG9ydHsKICAgIGlkOiBGSElSLmlke3ZhbHVlOiAnTENSLScgKyBkLmlkfSwKICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KGQsIHByb2ZpbGVVUkxzKSwKICAgIGV4dGVuc2lvbjogZC5leHRlbnNpb24sCiAgICBiYXNlZE9uOiBkLmJhc2VkT24sCiAgICBzdGF0dXM6IGQuc3RhdHVzLAogICAgY2F0ZWdvcnk6IEZpbHRlckNvZGVhYmxlQ29uY2VwdHMoZC5jYXRlZ29yeSwgYWNjZXB0ZWRDYXRlZ29yaWVzKSwKICAgIGNvZGU6IGQuY29kZSwKICAgIHN1YmplY3Q6IGQuc3ViamVjdCwKICAgIGVuY291bnRlcjogZC5lbmNvdW50ZXIsCiAgICBlZmZlY3RpdmU6IGQuZWZmZWN0aXZlLAogICAgaXNzdWVkOiBkLmlzc3VlZCwKICAgIHNwZWNpbWVuOiBkLnNwZWNpbWVuLAogICAgcmVzdWx0OiBkLnJlc3VsdCwKICAgIGNvbmNsdXNpb246IGQuY29uY2x1c2lvbiwKICAgIGNvbmNsdXNpb25Db2RlOiBkLmNvbmNsdXNpb25Db2RlCiAgfQoKZGVmaW5lIGZ1bmN0aW9uIEVuY291bnRlckhvc3BpdGFsaXphdGlvbihob3NwaXRhbGl6YXRpb24gRkhJUi5FbmNvdW50ZXIuSG9zcGl0YWxpemF0aW9uKToKICBob3NwaXRhbGl6YXRpb24gaAogIHJldHVybiBGSElSLkVuY291bnRlci5Ib3NwaXRhbGl6YXRpb257CiAgICBleHRlbnNpb246IGguZXh0ZW5zaW9uLAogICAgb3JpZ2luOiBoLm9yaWdpbiwKICAgIGFkbWl0U291cmNlOiBoLmFkbWl0U291cmNlLAogICAgcmVBZG1pc3Npb246IGgucmVBZG1pc3Npb24sCiAgICBkaWV0UHJlZmVyZW5jZTogaC5kaWV0UHJlZmVyZW5jZSwKICAgIGRpc2NoYXJnZURpc3Bvc2l0aW9uOiBoLmRpc2NoYXJnZURpc3Bvc2l0aW9uCiAgfQoKZGVmaW5lIGZ1bmN0aW9uIEVuY291bnRlclJlc291cmNlKGVuY291bnRlciBFbmNvdW50ZXIsIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+KToKICBlbmNvdW50ZXIgZQogIHJldHVybiBFbmNvdW50ZXJ7CiAgICBpZDogRkhJUi5pZHt2YWx1ZTogJ0xDUi0nICsgZS5pZH0sCiAgICBtZXRhOiBTaGFyZWRSZXNvdXJjZS5NZXRhRWxlbWVudChlLCBwcm9maWxlVVJMcyksCiAgICBleHRlbnNpb246IGUuZXh0ZW5zaW9uLAogICAgaWRlbnRpZmllcjogU2hhcmVkUmVzb3VyY2UuRW5jb3VudGVySWRlbnRpZmllcihlLmlkZW50aWZpZXIpLAogICAgc3RhdHVzOiBlLnN0YXR1cywKICAgIHN0YXR1c0hpc3Rvcnk6IFNoYXJlZFJlc291cmNlLkVuY291bnRlclN0YXR1c0hpc3RvcnkoZS5zdGF0dXNIaXN0b3J5KSwKICAgIGNsYXNzOiBlLmNsYXNzLAogICAgY2xhc3NIaXN0b3J5OiBTaGFyZWRSZXNvdXJjZS5FbmNvdW50ZXJDbGFzc0hpc3RvcnkoZS5jbGFzc0hpc3RvcnkpLAogICAgdHlwZTogZS50eXBlLAogICAgc3ViamVjdDogZS5zdWJqZWN0LAogICAgcGVyaW9kOiBlLnBlcmlvZCwKICAgIHJlYXNvbkNvZGU6IGUucmVhc29uQ29kZSwKICAgIGRpYWdub3NpczogU2hhcmVkUmVzb3VyY2UuRW5jb3VudGVyRGlhZ25vc2lzKGUuZGlhZ25vc2lzKSwKICAgIGhvc3BpdGFsaXphdGlvbjogRW5jb3VudGVySG9zcGl0YWxpemF0aW9uKGUuaG9zcGl0YWxpemF0aW9uKSwKICAgIGxvY2F0aW9uOiBTaGFyZWRSZXNvdXJjZS5FbmNvdW50ZXJMb2NhdGlvbihlLmxvY2F0aW9uKSwKICAgIHBhcnRPZjogZS5wYXJ0T2YKICB9CgpkZWZpbmUgZnVuY3Rpb24gTG9jYXRpb25SZXNvdXJjZShsb2NhdGlvbiBMb2NhdGlvbiwgcHJvZmlsZVVSTHMgTGlzdDxGSElSLmNhbm9uaWNhbD4pOgogIGxvY2F0aW9uIGwKICByZXR1cm4gTG9jYXRpb257CiAgICBpZDogRkhJUi5pZCB7dmFsdWU6ICdMQ1ItJyArIGwuaWR9LAogICAgbWV0YTogU2hhcmVkUmVzb3VyY2UuTWV0YUVsZW1lbnQobCwgcHJvZmlsZVVSTHMpLAogICAgZXh0ZW5zaW9uOiBsLmV4dGVuc2lvbiwKICAgIHN0YXR1czogbC5zdGF0dXMsCiAgICBuYW1lOiBsLm5hbWUsCiAgICBhbGlhczogbC5hbGlhcywKICAgIHR5cGU6IGwudHlwZSwKICAgIHBoeXNpY2FsVHlwZTogbC5waHlzaWNhbFR5cGUsCiAgICBtYW5hZ2luZ09yZ2FuaXphdGlvbjogbC5tYW5hZ2luZ09yZ2FuaXphdGlvbiwKICAgIHBhcnRPZjogbC5wYXJ0T2YKICB9CgpkZWZpbmUgZnVuY3Rpb24gTWVkaWNhdGlvblJlcXVlc3RSZXBlYXQocmVwZWF0IEZISVIuVGltaW5nLlJlcGVhdCk6CiAgcmVwZWF0IHIKICByZXR1cm4gRkhJUi5UaW1pbmcuUmVwZWF0ewogICAgYm91bmRzOiByLmJvdW5kcywKICAgIGNvdW50OiByLmNvdW50LAogICAgY291bnRNYXg6IHIuY291bnRNYXgsCiAgICAiZHVyYXRpb24iOiByLiJkdXJhdGlvbiIsCiAgICBkdXJhdGlvbk1heDogci5kdXJhdGlvbk1heCwKICAgIGR1cmF0aW9uVW5pdDogci5kdXJhdGlvblVuaXQsCiAgICBmcmVxdWVuY3k6IHIuZnJlcXVlbmN5LAogICAgZnJlcXVlbmN5TWF4OiByLmZyZXF1ZW5jeU1heCwKICAgIHBlcmlvZDogci5wZXJpb2QsCiAgICBwZXJpb2RNYXg6IHIucGVyaW9kTWF4LAogICAgcGVyaW9kVW5pdDogci5wZXJpb2RVbml0LAogICAgZGF5T2ZXZWVrOiByLmRheU9mV2VlaywKICAgIHRpbWVPZkRheTogci50aW1lT2ZEYXksCiAgICAid2hlbiI6IHIuIndoZW4iLAogICAgb2Zmc2V0OiByLm9mZnNldAogIH0KCmRlZmluZSBmdW5jdGlvbiBNZWRpY2F0aW9uUmVxdWVzdFRpbWluZyh0aW1pbmcgRkhJUi5UaW1pbmcpOgogIHRpbWluZyB0CiAgcmV0dXJuIEZISVIuVGltaW5newogICAgZXZlbnQ6IHQuZXZlbnQsCiAgICByZXBlYXQ6IE1lZGljYXRpb25SZXF1ZXN0UmVwZWF0KHQucmVwZWF0KSwKICAgIGNvZGU6IHQuY29kZQogIH0KCmRlZmluZSBmdW5jdGlvbiBNZWRpY2F0aW9uUmVxdWVzdERvc2FnZUluc3RydWN0aW9uKGRvc2FnZUluc3RydWN0aW9uIExpc3Q8RkhJUi5Eb3NhZ2U+KToKICBkb3NhZ2VJbnN0cnVjdGlvbiBkSQogIHJldHVybiBGSElSLkRvc2FnZXsKICAgIHRleHQ6IGRJLnRleHQsCiAgICBwYXRpZW50SW5zdHJ1Y3Rpb246IGRJLnBhdGllbnRJbnN0cnVjdGlvbiwKICAgIHRpbWluZzogTWVkaWNhdGlvblJlcXVlc3RUaW1pbmcoZEkudGltaW5nKSwKICAgIGFzTmVlZGVkOiBkSS5hc05lZWRlZCwKICAgIHNpdGU6IGRJLnNpdGUsCiAgICByb3V0ZTogZEkucm91dGUsCiAgICBtZXRob2Q6IGRJLm1ldGhvZCwKICAgIGRvc2VBbmRSYXRlOiBTaGFyZWRSZXNvdXJjZS5NZWRpY2F0aW9uUmVxdWVzdERvc2VBbmRSYXRlKGRJLmRvc2VBbmRSYXRlKQogIH0KCmRlZmluZSBmdW5jdGlvbiBNZWRpY2F0aW9uUmVxdWVzdFJlc291cmNlKG1lZGljYXRpb25SZXF1ZXN0IE1lZGljYXRpb25SZXF1ZXN0LCBwcm9maWxlVVJMcyBMaXN0PEZISVIuY2Fub25pY2FsPiwgYWNjZXB0ZWRDYXRlZ29yaWVzIExpc3Q8U3lzdGVtLkNvZGU+KToKICBtZWRpY2F0aW9uUmVxdWVzdCBtCiAgcmV0dXJuIE1lZGljYXRpb25SZXF1ZXN0ewogICAgaWQ6IEZISVIuaWQge3ZhbHVlOiAnTENSLScgKyBtLmlkfSwKICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KG1lZGljYXRpb25SZXF1ZXN0LCBwcm9maWxlVVJMcyksCiAgICBleHRlbnNpb246IG0uZXh0ZW5zaW9uLAogICAgc3RhdHVzOiBtLnN0YXR1cywKICAgIHN0YXR1c1JlYXNvbjogbS5zdGF0dXNSZWFzb24sCiAgICBpbnRlbnQ6IG0uaW50ZW50LAogICAgY2F0ZWdvcnk6IEZpbHRlckNvZGVhYmxlQ29uY2VwdHMobS5jYXRlZ29yeSwgYWNjZXB0ZWRDYXRlZ29yaWVzKSwKICAgIHByaW9yaXR5OiBtLnByaW9yaXR5LAogICAgZG9Ob3RQZXJmb3JtOiBtLmRvTm90UGVyZm9ybSwKICAgIHJlcG9ydGVkOiBtLnJlcG9ydGVkLAogICAgbWVkaWNhdGlvbjogbS5tZWRpY2F0aW9uLAogICAgc3ViamVjdDogbS5zdWJqZWN0LAogICAgZW5jb3VudGVyOiBtLmVuY291bnRlciwKICAgIGF1dGhvcmVkT246IG0uYXV0aG9yZWRPbiwKICAgIC8vKnJlcXVlc3RlcjogbS5yZXF1ZXN0ZXIsCiAgICByZWNvcmRlcjogbS5yZWNvcmRlciwKICAgIHJlYXNvbkNvZGU6IG0ucmVhc29uQ29kZSwKICAgIHJlYXNvblJlZmVyZW5jZTogbS5yZWFzb25SZWZlcmVuY2UsCiAgICBpbnN0YW50aWF0ZXNDYW5vbmljYWw6IG0uaW5zdGFudGlhdGVzQ2Fub25pY2FsLAogICAgaW5zdGFudGlhdGVzVXJpOiBtLmluc3RhbnRpYXRlc1VyaSwKICAgIGNvdXJzZU9mVGhlcmFweVR5cGU6IG0uY291cnNlT2ZUaGVyYXB5VHlwZSwKICAgIGRvc2FnZUluc3RydWN0aW9uOiBTaGFyZWRSZXNvdXJjZS5NZWRpY2F0aW9uUmVxdWVzdERvc2FnZUluc3RydWN0aW9uKG0uZG9zYWdlSW5zdHJ1Y3Rpb24pCiAgfQoKICBkZWZpbmUgZnVuY3Rpb24gTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uUmVzb3VyY2UobWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uIE1lZGljYXRpb25BZG1pbmlzdHJhdGlvbiwgcHJvZmlsZVVSTHMgTGlzdDxGSElSLmNhbm9uaWNhbD4sIGFjY2VwdGVkQ2F0ZWdvcmllcyBMaXN0PFN5c3RlbS5Db2RlPik6CiAgbWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uIG0KICByZXR1cm4gTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uewogICAgaWQ6IEZISVIuaWQge3ZhbHVlOiAnTENSLScgKyBtLmlkfSwKICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KG0sIHByb2ZpbGVVUkxzKSwKICAgIGV4dGVuc2lvbjogbS5leHRlbnNpb24sCiAgICBpbnN0YW50aWF0ZXM6IG0uaW5zdGFudGlhdGVzLAogICAgcGFydE9mOiBtLnBhcnRPZiwKICAgIHN0YXR1czogbS5zdGF0dXMsCiAgICBzdGF0dXNSZWFzb246IG0uc3RhdHVzUmVhc29uLAogICAgY2F0ZWdvcnk6IEZpbHRlckNvZGVhYmxlQ29uY2VwdHMoe20uY2F0ZWdvcnl9LCBhY2NlcHRlZENhdGVnb3JpZXMpWzBdLAogICAgbWVkaWNhdGlvbjogbS5tZWRpY2F0aW9uLAogICAgc3ViamVjdDogbS5zdWJqZWN0LAogICAgY29udGV4dDogbS5jb250ZXh0LAogICAgc3VwcG9ydGluZ0luZm9ybWF0aW9uOiBtLnN1cHBvcnRpbmdJbmZvcm1hdGlvbiwKICAgIGVmZmVjdGl2ZTogbS5lZmZlY3RpdmUsCiAgICAvLypwZXJmb3JtZXI6IFNoYXJlZFJlc291cmNlLk1lZGljYXRpb25BZG1pbmlzdHJhdGlvblBlcmZvcm1lcihtLnBlcmZvcm1lciksCiAgICByZWFzb25Db2RlOiBtLnJlYXNvbkNvZGUsCiAgICByZWFzb25SZWZlcmVuY2U6IG0ucmVhc29uUmVmZXJlbmNlLAogICAgcmVxdWVzdDogbS5yZXF1ZXN0LAogICAgZGV2aWNlOiBtLmRldmljZSwKICAgIG5vdGU6IG0ubm90ZSwKICAgIGRvc2FnZTogU2hhcmVkUmVzb3VyY2UuTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uRG9zYWdlKG0uZG9zYWdlKSwKICAgIGV2ZW50SGlzdG9yeTogbS5ldmVudEhpc3RvcnkKICB9CgpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25MYWJSZWZlcmVuY2VSYW5nZShyZWZlcmVuY2VSYW5nZSBMaXN0PEZISVIuT2JzZXJ2YXRpb24uUmVmZXJlbmNlUmFuZ2U+KToKICByZWZlcmVuY2VSYW5nZSByUgogIHJldHVybiBGSElSLk9ic2VydmF0aW9uLlJlZmVyZW5jZVJhbmdlewogICAgbG93OiByUi5sb3csCiAgICBoaWdoOiByUi5oaWdoLAogICAgdHlwZTogclIudHlwZSwKICAgIGFwcGxpZXNUbzogclIuYXBwbGllc1RvLAogICAgYWdlOiByUi5hZ2UKICB9CgpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25MYWJDb2RpbmcoY29kaW5nIExpc3Q8Q29kaW5nPik6CiAgY29kaW5nIGMKICByZXR1cm4gQ29kaW5newogICAgc3lzdGVtOiBjLnN5c3RlbSwKICAgIHZlcnNpb246IGMudmVyc2lvbiwKICAgIGNvZGU6IGMuY29kZSwKICAgIGRpc3BsYXk6IGMuZGlzcGxheSwKICAgIHVzZXJTZWxlY3RlZDogYy51c2VyU2VsZWN0ZWQKICB9CgpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25MYWJDYXRlZ29yeShjYXRlZ29yeSBMaXN0PENvZGVhYmxlQ29uY2VwdD4pOgogIGNhdGVnb3J5IGMKICByZXR1cm4gQ29kZWFibGVDb25jZXB0ewogICAgY29kaW5nOiBPYnNlcnZhdGlvbkxhYkNvZGluZyhjLmNvZGluZyksCiAgICB0ZXh0OiBjLnRleHQKICB9CgpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25MYWJSZXNvdXJjZShvYnNlcnZhdGlvbiBPYnNlcnZhdGlvbiwgcHJvZmlsZVVSTHMgTGlzdDxGSElSLmNhbm9uaWNhbD4sIGFjY2VwdGVkQ2F0ZWdvcmllcyBMaXN0PFN5c3RlbS5Db2RlPik6CiAgb2JzZXJ2YXRpb24gbwogIHJldHVybiBPYnNlcnZhdGlvbnsKICAgIGlkOiBGSElSLmlkIHt2YWx1ZTogJ0xDUi0nICsgby5pZH0sCiAgICBtZXRhOiBTaGFyZWRSZXNvdXJjZS5NZXRhRWxlbWVudChvLCBwcm9maWxlVVJMcyksCiAgICBleHRlbnNpb246IG8uZXh0ZW5zaW9uLAogICAgcGFydE9mOiBvLnBhcnRPZiwKICAgIHN0YXR1czogby5zdGF0dXMsCiAgICBjYXRlZ29yeTogRmlsdGVyQ29kZWFibGVDb25jZXB0cyhPYnNlcnZhdGlvbkxhYkNhdGVnb3J5KG8uY2F0ZWdvcnkpLCBhY2NlcHRlZENhdGVnb3JpZXMpLAogICAgY29kZTogby5jb2RlLAogICAgc3ViamVjdDogby5zdWJqZWN0LAogICAgZW5jb3VudGVyOiBvLmVuY291bnRlciwKICAgIGVmZmVjdGl2ZTogby5lZmZlY3RpdmUsCiAgICBpc3N1ZWQ6IG8uaXNzdWVkLAogICAgdmFsdWU6IG8udmFsdWUsCiAgICBkYXRhQWJzZW50UmVhc29uOiBvLmRhdGFBYnNlbnRSZWFzb24sCiAgICBpbnRlcnByZXRhdGlvbjogby5pbnRlcnByZXRhdGlvbiwKICAgIGJvZHlTaXRlOiBvLmJvZHlTaXRlLAogICAgbWV0aG9kOiBvLm1ldGhvZCwKICAgIHNwZWNpbWVuOiBvLnNwZWNpbWVuLAogICAgcmVmZXJlbmNlUmFuZ2U6IE9ic2VydmF0aW9uTGFiUmVmZXJlbmNlUmFuZ2Uoby5yZWZlcmVuY2VSYW5nZSksCiAgICBoYXNNZW1iZXI6IG8uaGFzTWVtYmVyLAogICAgZGVyaXZlZEZyb206IG8uZGVyaXZlZEZyb20sCiAgICBjb21wb25lbnQ6IFNoYXJlZFJlc291cmNlLk9ic2VydmF0aW9uQ29tcG9uZW50KG8uY29tcG9uZW50KQogIH0KCmRlZmluZSBmdW5jdGlvbiBPYnNlcnZhdGlvblJlZmVyZW5jZVJhbmdlKHJlZmVyZW5jZVJhbmdlIExpc3Q8RkhJUi5PYnNlcnZhdGlvbi5SZWZlcmVuY2VSYW5nZT4pOgogIHJlZmVyZW5jZVJhbmdlIHJSCiAgcmV0dXJuIEZISVIuT2JzZXJ2YXRpb24uUmVmZXJlbmNlUmFuZ2V7CiAgICBsb3c6IHJSLmxvdywKICAgIGhpZ2g6IHJSLmhpZ2gsCiAgICB0eXBlOiByUi50eXBlLAogICAgYXBwbGllc1RvOiByUi5hcHBsaWVzVG8sCiAgICBhZ2U6IHJSLmFnZQogIH0KCmRlZmluZSBmdW5jdGlvbiBPYnNlcnZhdGlvblJlc291cmNlKG9ic2VydmF0aW9uIE9ic2VydmF0aW9uLCBwcm9maWxlVVJMcyBMaXN0PEZISVIuY2Fub25pY2FsPiwgYWNjZXB0ZWRDYXRlZ29yaWVzIExpc3Q8U3lzdGVtLkNvZGU+KToKICBvYnNlcnZhdGlvbiBvCiAgcmV0dXJuIE9ic2VydmF0aW9uewogICAgaWQ6IEZISVIuaWQge3ZhbHVlOiAnTENSLScgKyBvLmlkfSwKICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KG8sIHByb2ZpbGVVUkxzKSwKICAgIGV4dGVuc2lvbjogby5leHRlbnNpb24sCiAgICBwYXJ0T2Y6IG8ucGFydE9mLAogICAgc3RhdHVzOiBvLnN0YXR1cywKICAgIGNhdGVnb3J5OiBGaWx0ZXJDb2RlYWJsZUNvbmNlcHRzKG8uY2F0ZWdvcnksIGFjY2VwdGVkQ2F0ZWdvcmllcyksCiAgICBjb2RlOiBvLmNvZGUsCiAgICBzdWJqZWN0OiBvLnN1YmplY3QsCiAgICBlbmNvdW50ZXI6IG8uZW5jb3VudGVyLAogICAgZWZmZWN0aXZlOiBvLmVmZmVjdGl2ZSwKICAgIGlzc3VlZDogby5pc3N1ZWQsCiAgICB2YWx1ZTogby52YWx1ZSwKICAgIGRhdGFBYnNlbnRSZWFzb246IG8uZGF0YUFic2VudFJlYXNvbiwKICAgIGludGVycHJldGF0aW9uOiBvLmludGVycHJldGF0aW9uLAogICAgYm9keVNpdGU6IG8uYm9keVNpdGUsCiAgICBtZXRob2Q6IG8ubWV0aG9kLAogICAgc3BlY2ltZW46IG8uc3BlY2ltZW4sCiAgICByZWZlcmVuY2VSYW5nZTogT2JzZXJ2YXRpb25SZWZlcmVuY2VSYW5nZShvLnJlZmVyZW5jZVJhbmdlKSwKICAgIGhhc01lbWJlcjogby5oYXNNZW1iZXIsCiAgICBkZXJpdmVkRnJvbTogby5kZXJpdmVkRnJvbSwKICAgIGNvbXBvbmVudDogU2hhcmVkUmVzb3VyY2UuT2JzZXJ2YXRpb25Db21wb25lbnQoby5jb21wb25lbnQpCiAgfQoKZGVmaW5lIGZ1bmN0aW9uIE9ic2VydmF0aW9uVml0YWxTaWduc0NvZGluZyhjb2RpbmcgTGlzdDxDb2Rpbmc+KToKICBjb2RpbmcgYwogIHJldHVybiBDb2Rpbmd7CiAgICBzeXN0ZW06IGMuc3lzdGVtLAogICAgdmVyc2lvbjogYy52ZXJzaW9uLAogICAgY29kZTogYy5jb2RlLAogICAgZGlzcGxheTogYy5kaXNwbGF5LAogICAgdXNlclNlbGVjdGVkOiBjLnVzZXJTZWxlY3RlZAogIH0KCmRlZmluZSBmdW5jdGlvbiBPYnNlcnZhdGlvblZpdGFsU2lnbnNDYXRlZ29yeShjYXRlZ29yeSBMaXN0PENvZGVhYmxlQ29uY2VwdD4pOgogIGNhdGVnb3J5IGMKICByZXR1cm4gQ29kZWFibGVDb25jZXB0ewogICAgY29kaW5nOiBPYnNlcnZhdGlvblZpdGFsU2lnbnNDb2RpbmcoYy5jb2RpbmcpLAogICAgdGV4dDogYy50ZXh0CiAgfQoKZGVmaW5lIGZ1bmN0aW9uIE9ic2VydmF0aW9uVml0YWxTaWduc0NvbXBvbmVudChjb21wb25lbnQgTGlzdDxGSElSLk9ic2VydmF0aW9uLkNvbXBvbmVudD4pOgogIGNvbXBvbmVudCBjCiAgcmV0dXJuIEZISVIuT2JzZXJ2YXRpb24uQ29tcG9uZW50ewogICAgY29kZTogYy5jb2RlLAogICAgdmFsdWU6IGMudmFsdWUsCiAgICBkYXRhQWJzZW50UmVhc29uOiBjLmRhdGFBYnNlbnRSZWFzb24sCiAgICBpbnRlcnByZXRhdGlvbjogYy5pbnRlcnByZXRhdGlvbiwKICAgIHJlZmVyZW5jZVJhbmdlOiBTaGFyZWRSZXNvdXJjZS5PYnNlcnZhdGlvblJlZmVyZW5jZVJhbmdlKGMucmVmZXJlbmNlUmFuZ2UpCiAgfQoKZGVmaW5lIGZ1bmN0aW9uIE9ic2VydmF0aW9uVml0YWxTaWduc1JlZmVyZW5jZVJhbmdlKHJlZmVyZW5jZVJhbmdlIExpc3Q8RkhJUi5PYnNlcnZhdGlvbi5SZWZlcmVuY2VSYW5nZT4pOgogIHJlZmVyZW5jZVJhbmdlIHJSCiAgcmV0dXJuIEZISVIuT2JzZXJ2YXRpb24uUmVmZXJlbmNlUmFuZ2V7CiAgICBsb3c6IHJSLmxvdywKICAgIGhpZ2g6IHJSLmhpZ2gsCiAgICB0eXBlOiByUi50eXBlLAogICAgYXBwbGllc1RvOiByUi5hcHBsaWVzVG8sCiAgICBhZ2U6IHJSLmFnZQogIH0KCmRlZmluZSBmdW5jdGlvbiBPYnNlcnZhdGlvblZpdGFsU2lnbnNSZXNvdXJjZShvYnNlcnZhdGlvbiBPYnNlcnZhdGlvbiwgcHJvZmlsZVVSTHMgTGlzdDxGSElSLmNhbm9uaWNhbD4sIGFjY2VwdGVkQ2F0ZWdvcmllcyBMaXN0PFN5c3RlbS5Db2RlPik6CiAgb2JzZXJ2YXRpb24gbwogIHJldHVybiBPYnNlcnZhdGlvbnsKICAgIGlkOiBGSElSLmlkIHt2YWx1ZTogJ0xDUi0nICsgby5pZH0sCiAgICBtZXRhOiBTaGFyZWRSZXNvdXJjZS5NZXRhRWxlbWVudChvLCBwcm9maWxlVVJMcyksCiAgICBleHRlbnNpb246IG8uZXh0ZW5zaW9uLAogICAgcGFydE9mOiBvLnBhcnRPZiwKICAgIHN0YXR1czogby5zdGF0dXMsCiAgICBjYXRlZ29yeTogRmlsdGVyQ29kZWFibGVDb25jZXB0cyhPYnNlcnZhdGlvblZpdGFsU2lnbnNDYXRlZ29yeShvLmNhdGVnb3J5KSwgYWNjZXB0ZWRDYXRlZ29yaWVzKSwKICAgIGNvZGU6IG8uY29kZSwKICAgIHN1YmplY3Q6IG8uc3ViamVjdCwKICAgIGVuY291bnRlcjogby5lbmNvdW50ZXIsCiAgICBlZmZlY3RpdmU6IG8uZWZmZWN0aXZlLAogICAgaXNzdWVkOiBvLmlzc3VlZCwKICAgIHZhbHVlOiBvLnZhbHVlLAogICAgZGF0YUFic2VudFJlYXNvbjogby5kYXRhQWJzZW50UmVhc29uLAogICAgaW50ZXJwcmV0YXRpb246IG8uaW50ZXJwcmV0YXRpb24sCiAgICBib2R5U2l0ZTogby5ib2R5U2l0ZSwKICAgIG1ldGhvZDogby5tZXRob2QsCiAgICBzcGVjaW1lbjogby5zcGVjaW1lbiwKICAgIHJlZmVyZW5jZVJhbmdlOiBPYnNlcnZhdGlvblZpdGFsU2lnbnNSZWZlcmVuY2VSYW5nZShvLnJlZmVyZW5jZVJhbmdlKSwKICAgIGhhc01lbWJlcjogby5oYXNNZW1iZXIsCiAgICBkZXJpdmVkRnJvbTogby5kZXJpdmVkRnJvbSwKICAgIGNvbXBvbmVudDogT2JzZXJ2YXRpb25WaXRhbFNpZ25zQ29tcG9uZW50KG8uY29tcG9uZW50KQogIH0KCiBkZWZpbmUgZnVuY3Rpb24gIkdldFByb2NlZHVyZUV4dGVuc2lvbnMiKGRvbWFpblJlc291cmNlIERvbWFpblJlc291cmNlKToKICBkb21haW5SZXNvdXJjZS5leHRlbnNpb24gRQogICAgd2hlcmUgRS51cmwgIT0gJ2h0dHA6Ly9obDcub3JnL2ZoaXIvdXMvcWljb3JlL1N0cnVjdHVyZURlZmluaXRpb24vcWljb3JlLXJlY29yZGVkJwogICAgIHJldHVybiBFCiAKZGVmaW5lIGZ1bmN0aW9uIFByb2NlZHVyZVJlc291cmNlKHByb2NlZHVyZSBQcm9jZWR1cmUsIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+LCBhY2NlcHRlZENhdGVnb3JpZXMgTGlzdDxTeXN0ZW0uQ29kZT4pOgogIHByb2NlZHVyZSBwCiAgcmV0dXJuIFByb2NlZHVyZXsKICAgIGlkOiBGSElSLmlkIHt2YWx1ZTogJ0xDUi0nICsgcC5pZH0sCiAgICBtZXRhOiBTaGFyZWRSZXNvdXJjZS5NZXRhRWxlbWVudChwLCBwcm9maWxlVVJMcyksCiAgICBleHRlbnNpb246IEdldFByb2NlZHVyZUV4dGVuc2lvbnMocCksIAogICAgYmFzZWRPbjogcC5iYXNlZE9uLAogICAgcGFydE9mOiBwLnBhcnRPZiwKICAgIHN0YXR1czogcC5zdGF0dXMsCiAgICBjYXRlZ29yeTogRmlsdGVyQ29kZWFibGVDb25jZXB0cyh7cC5jYXRlZ29yeX0sIGFjY2VwdGVkQ2F0ZWdvcmllcylbMF0sCiAgICBjb2RlOiBwLmNvZGUsCiAgICBzdWJqZWN0OiBwLnN1YmplY3QsCiAgICBlbmNvdW50ZXI6IHAuZW5jb3VudGVyLAogICAgcGVyZm9ybWVkOiBwLnBlcmZvcm1lZCwKICAgIGxvY2F0aW9uOiBwLmxvY2F0aW9uLAogICAgcmVhc29uQ29kZTogcC5yZWFzb25Db2RlLAogICAgcmVhc29uUmVmZXJlbmNlOiBwLnJlYXNvblJlZmVyZW5jZSwKICAgIGJvZHlTaXRlOiBwLmJvZHlTaXRlCiAgfQoKICBkZWZpbmUgZnVuY3Rpb24gU2VydmljZVJlcXVlc3RSZXNvdXJjZShzZXJ2aWNlUmVxdWVzdCBTZXJ2aWNlUmVxdWVzdCwgcHJvZmlsZVVSTHMgTGlzdDxGSElSLmNhbm9uaWNhbD4sIGFjY2VwdGVkQ2F0ZWdvcmllcyBMaXN0PFN5c3RlbS5Db2RlPik6CiAgc2VydmljZVJlcXVlc3Qgc1IKICByZXR1cm4gU2VydmljZVJlcXVlc3R7CiAgICBpZDogRkhJUi5pZCB7dmFsdWU6ICdMQ1ItJyArIHNSLmlkfSwKICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KHNSLCBwcm9maWxlVVJMcyksCiAgICBleHRlbnNpb246IHNSLmV4dGVuc2lvbiwKICAgIGJhc2VkT246IHNSLmJhc2VkT24sCiAgICBzdGF0dXM6IHNSLnN0YXR1cywKICAgIGludGVudDogc1IuaW50ZW50LAogICAgY2F0ZWdvcnk6IEZpbHRlckNvZGVhYmxlQ29uY2VwdHMoc1IuY2F0ZWdvcnksIGFjY2VwdGVkQ2F0ZWdvcmllcyksCiAgICBwcmlvcml0eTogc1IucHJpb3JpdHksCiAgICBkb05vdFBlcmZvcm06IHNSLmRvTm90UGVyZm9ybSwKICAgIGNvZGU6IHNSLmNvZGUsCiAgICBxdWFudGl0eTogc1IucXVhbnRpdHksCiAgICBzdWJqZWN0OiBzUi5zdWJqZWN0LAogICAgZW5jb3VudGVyOiBzUi5lbmNvdW50ZXIsCiAgICBvY2N1cnJlbmNlOiBzUi5vY2N1cnJlbmNlLAogICAgYXNOZWVkZWQ6IHNSLmFzTmVlZGVkLAogICAgYXV0aG9yZWRPbjogc1IuYXV0aG9yZWRPbiwKICAgIHNwZWNpbWVuOiBzUi5zcGVjaW1lbgogIH0KCiAgZGVmaW5lIGZ1bmN0aW9uIFNwZWNpbWVuQ29sbGVjdGlvbihjb2xsZWN0aW9uIEZISVIuU3BlY2ltZW4uQ29sbGVjdGlvbik6CiAgY29sbGVjdGlvbiBjCiAgcmV0dXJuIEZISVIuU3BlY2ltZW4uQ29sbGVjdGlvbnsKICAgIGNvbGxlY3RvcjogYy5jb2xsZWN0b3IsCiAgICBjb2xsZWN0ZWQ6IGMuY29sbGVjdGVkLAogICAgcXVhbnRpdHk6IGMucXVhbnRpdHksCiAgICBib2R5U2l0ZTogYy5ib2R5U2l0ZQogIH0KCiAgZGVmaW5lIGZ1bmN0aW9uIFNwZWNpbWVuUmVzb3VyY2Uoc3BlY2ltZW4gU3BlY2ltZW4sIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+KToKICBzcGVjaW1lbiBzCiAgcmV0dXJuIFNwZWNpbWVuewogICAgaWQ6IEZISVIuaWQge3ZhbHVlOiAnTENSLScgKyBzLmlkfSwKICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KHMsIHByb2ZpbGVVUkxzKSwKICAgIGV4dGVuc2lvbjogcy5leHRlbnNpb24sCiAgICBpZGVudGlmaWVyOiBzLmlkZW50aWZpZXIsCiAgICBhY2Nlc3Npb25JZGVudGlmaWVyOiBzLmFjY2Vzc2lvbklkZW50aWZpZXIsCiAgICBzdGF0dXM6IHMuc3RhdHVzLAogICAgdHlwZTogcy50eXBlLAogICAgc3ViamVjdDogcy5zdWJqZWN0LAogICAgcGFyZW50OiBzLnBhcmVudCwKICAgIHJlcXVlc3Q6IHMucmVxdWVzdCwKICAgIGNvbGxlY3Rpb246IFNwZWNpbWVuQ29sbGVjdGlvbihzLmNvbGxlY3Rpb24pLAogICAgbm90ZTogcy5ub3RlCiAgfQ=="/>
    <url
         value="http://www.cdc.gov/nhsn/fhirportal/dqm/ig/NHSNAcuteCareHospitalMonthlyInitialPopulation.cql"/>
  </content>
</Library>