WHO Clinical Care in Crisis Implementation Guide for Children
0.1.0 - ci-build

WHO Clinical Care in Crisis Implementation Guide for Children - Local Development build (v0.1.0). See the Directory of published versions

: tricepsSkinfoldForAge - XML Representation

Active as of 2023-10-04

Raw xml | Download



<Library xmlns="http://hl7.org/fhir">
  <id value="tricepsSkinfoldForAge"/>
  <text>
    <status value="generated"/>
    <div xmlns="http://www.w3.org/1999/xhtml"><h2>Related Artifacts</h2><table class="grid"><tr><td>depends-on</td><td><a href="Library-anthrobase.html">anthrobase</a></td></tr><tr><td>depends-on</td><td><code>http://fhir.org/guides/who/anc-cds/Library/FHIRHelpers</code></td></tr></table><h2>Parameters</h2><table class="grid"><tr><td>zscore</td><td>in</td><td/><td/><td>decimal</td></tr><tr><td>Age</td><td>in</td><td/><td/><td>decimal</td></tr><tr><td>sex</td><td>in</td><td/><td/><td>decimal</td></tr><tr><td>generatetricepsSkinfoldFromAge</td><td>out</td><td/><td/><td>decimal</td></tr><tr><td>generateZScoretricepsSkinfoldForAge</td><td>out</td><td/><td/><td>decimal</td></tr><tr><td>ZscoretricepsSkinfoldForAgetables_s</td><td>out</td><td/><td/><td>decimal</td></tr><tr><td>ZscoretricepsSkinfoldForAgetables_m</td><td>out</td><td/><td/><td>decimal</td></tr><tr><td>ZscoretricepsSkinfoldForAgetables_l</td><td>out</td><td/><td/><td>decimal</td></tr></table><h2>Data Requirements</h2><table class="grid"><tr><td colspan="2"><b>Type</b>: <a href="http://hl7.org/fhir/R4/patient.html">Patient</a> (<a href="http://hl7.org/fhir/R4/patient.html">Patient</a>)</td></tr></table><h2>Contents</h2><p><code>text/cql</code></p><pre><code class="language-sql">
library tricepsSkinfoldForAge version '1.0.4'
using FHIR version '4.0.1'
include anthrobase version '1.0.4' called base
include FHIRHelpers version '4.0.1' called FHIRHelpers

// Antrho library for tricepsSkinfoldForAge  Z-Score from the tsanthro files
codesystem &quot;administrative-gender&quot;: 'http://hl7.org/fhir/administrative-gender'
//code &quot;Female&quot; : 'female' from &quot;administrative-gender&quot;  display 'Female'


define tricepsSkinfoldForAgeFemale:
{
	{y:91.0,l:0.1882,s:0.17525,m:9.7533},
	{y:98.0,l:0.1725,s:0.17725,m:9.7169},
	{y:105.0,l:0.1578,s:0.17914,m:9.6809},
	{y:112.0,l:0.1438,s:0.18096,m:9.6434},
	{y:119.0,l:0.1306,s:0.18271,m:9.6033},
	{y:126.0,l:0.1181,s:0.18439,m:9.5598},
	{y:133.0,l:0.1062,s:0.186,m:9.5132},
	{y:140.0,l:0.0948,s:0.18755,m:9.4638},
	{y:147.0,l:0.0839,s:0.18902,m:9.4118},
	{y:154.0,l:0.0734,s:0.19042,m:9.3572},
	{y:161.0,l:0.0635,s:0.19175,m:9.3008},
	{y:168.0,l:0.0539,s:0.19301,m:9.2429},
	{y:175.0,l:0.0446,s:0.19419,m:9.1842},
	{y:182.0,l:0.0357,s:0.1953,m:9.1247},
	{y:197.0,l:0.0176,s:0.19743,m:8.9969},
	{y:227.0,l:-0.0148,s:0.20068,m:8.7491},
	{y:257.0,l:-0.0429,s:0.20268,m:8.5268},
	{y:287.0,l:-0.0674,s:0.20377,m:8.3391},
	{y:317.0,l:-0.0884,s:0.20429,m:8.1869},
	{y:347.0,l:-0.1065,s:0.20446,m:8.0654},
	{y:377.0,l:-0.1219,s:0.20441,m:7.9691},
	{y:407.0,l:-0.135,s:0.20424,m:7.8932},
	{y:437.0,l:-0.1463,s:0.204,m:7.8344},
	{y:467.0,l:-0.1559,s:0.20376,m:7.7903},
	{y:497.0,l:-0.1641,s:0.20357,m:7.759},
	{y:527.0,l:-0.1712,s:0.20349,m:7.7392},
	{y:557.0,l:-0.1773,s:0.20353,m:7.7296},
	{y:587.0,l:-0.1825,s:0.20371,m:7.7295},
	{y:617.0,l:-0.1871,s:0.20403,m:7.7377},
	{y:647.0,l:-0.1911,s:0.20451,m:7.7531},
	{y:677.0,l:-0.1948,s:0.20513,m:7.7751},
	{y:707.0,l:-0.198,s:0.20586,m:7.8026},
	{y:737.0,l:-0.201,s:0.20672,m:7.8346},
	{y:767.0,l:-0.2037,s:0.20769,m:7.8701},
	{y:797.0,l:-0.2062,s:0.20876,m:7.9078},
	{y:827.0,l:-0.2085,s:0.20992,m:7.9463},
	{y:857.0,l:-0.2106,s:0.21116,m:7.9846},
	{y:887.0,l:-0.2125,s:0.21247,m:8.022},
	{y:917.0,l:-0.2142,s:0.21384,m:8.0581},
	{y:947.0,l:-0.2157,s:0.21526,m:8.0926},
	{y:977.0,l:-0.2171,s:0.21672,m:8.1256},
	{y:1007.0,l:-0.2184,s:0.21822,m:8.1572},
	{y:1037.0,l:-0.2196,s:0.21975,m:8.1876},
	{y:1067.0,l:-0.2207,s:0.22131,m:8.2172},
	{y:1097.0,l:-0.2218,s:0.22289,m:8.2462},
	{y:1127.0,l:-0.2228,s:0.22449,m:8.2745},
	{y:1157.0,l:-0.2237,s:0.2261,m:8.3023},
	{y:1187.0,l:-0.2246,s:0.22772,m:8.3293},
	{y:1217.0,l:-0.2254,s:0.22934,m:8.3555},
	{y:1247.0,l:-0.2262,s:0.23096,m:8.381},
	{y:1277.0,l:-0.227,s:0.23257,m:8.4057},
	{y:1307.0,l:-0.2277,s:0.23417,m:8.4297},
	{y:1337.0,l:-0.2284,s:0.23576,m:8.4533},
	{y:1367.0,l:-0.2291,s:0.23733,m:8.4765},
	{y:1397.0,l:-0.2297,s:0.23888,m:8.4995},
	{y:1427.0,l:-0.2303,s:0.24042,m:8.5223},
	{y:1457.0,l:-0.2309,s:0.24194,m:8.5451},
	{y:1487.0,l:-0.2315,s:0.24345,m:8.5678},
	{y:1517.0,l:-0.232,s:0.24493,m:8.5905},
	{y:1547.0,l:-0.2325,s:0.24639,m:8.6133},
	{y:1577.0,l:-0.233,s:0.24783,m:8.6362},
	{y:1607.0,l:-0.2335,s:0.24925,m:8.6593},
	{y:1637.0,l:-0.234,s:0.25064,m:8.6824},
	{y:1667.0,l:-0.2345,s:0.25201,m:8.7057},
	{y:1697.0,l:-0.2349,s:0.25336,m:8.7291},
	{y:1727.0,l:-0.2354,s:0.25468,m:8.7524},
	{y:1757.0,l:-0.2358,s:0.25597,m:8.7758},
	{y:1787.0,l:-0.2362,s:0.25724,m:8.7992},
	{y:1817.0,l:-0.2366,s:0.25849,m:8.8226},
	{y:1847.0,l:-0.237,s:0.25972,m:8.8458}
}

define tricepsSkinfoldForAgeMale:
{
	{y:91.0,l:0.003,s:0.16611,m:9.7658},
	{y:98.0,l:-0.0018,s:0.1677,m:9.7236},
	{y:105.0,l:-0.0064,s:0.16922,m:9.6826},
	{y:112.0,l:-0.0107,s:0.17069,m:9.6418},
	{y:119.0,l:-0.0149,s:0.1721,m:9.6005},
	{y:126.0,l:-0.0189,s:0.17347,m:9.5581},
	{y:133.0,l:-0.0227,s:0.1748,m:9.5145},
	{y:140.0,l:-0.0265,s:0.17609,m:9.4697},
	{y:147.0,l:-0.03,s:0.17734,m:9.4235},
	{y:154.0,l:-0.0335,s:0.17855,m:9.3761},
	{y:161.0,l:-0.0368,s:0.17972,m:9.3275},
	{y:168.0,l:-0.0401,s:0.18085,m:9.278},
	{y:175.0,l:-0.0433,s:0.18192,m:9.2279},
	{y:182.0,l:-0.0463,s:0.18295,m:9.1775},
	{y:197.0,l:-0.0526,s:0.18496,m:9.0689},
	{y:227.0,l:-0.0643,s:0.18826,m:8.8555},
	{y:257.0,l:-0.075,s:0.19065,m:8.656},
	{y:287.0,l:-0.0848,s:0.19231,m:8.4759},
	{y:317.0,l:-0.0939,s:0.19342,m:8.3169},
	{y:347.0,l:-0.1024,s:0.19416,m:8.1785},
	{y:377.0,l:-0.1104,s:0.19474,m:8.06},
	{y:407.0,l:-0.118,s:0.19526,m:7.9605},
	{y:437.0,l:-0.1252,s:0.19577,m:7.8788},
	{y:467.0,l:-0.1321,s:0.19631,m:7.8135},
	{y:497.0,l:-0.1387,s:0.19688,m:7.7626},
	{y:527.0,l:-0.145,s:0.19748,m:7.724},
	{y:557.0,l:-0.151,s:0.19813,m:7.6961},
	{y:587.0,l:-0.1568,s:0.19883,m:7.6776},
	{y:617.0,l:-0.1625,s:0.19958,m:7.6677},
	{y:647.0,l:-0.1679,s:0.2004,m:7.6653},
	{y:677.0,l:-0.1731,s:0.20126,m:7.6689},
	{y:707.0,l:-0.1782,s:0.20218,m:7.6773},
	{y:737.0,l:-0.1832,s:0.20314,m:7.6891},
	{y:767.0,l:-0.188,s:0.20414,m:7.7033},
	{y:797.0,l:-0.1927,s:0.20517,m:7.7185},
	{y:827.0,l:-0.1972,s:0.20621,m:7.7338},
	{y:857.0,l:-0.2017,s:0.20727,m:7.7486},
	{y:887.0,l:-0.206,s:0.20833,m:7.7621},
	{y:917.0,l:-0.2102,s:0.20942,m:7.7741},
	{y:947.0,l:-0.2144,s:0.21052,m:7.7843},
	{y:977.0,l:-0.2184,s:0.21164,m:7.7928},
	{y:1007.0,l:-0.2224,s:0.21279,m:7.7994},
	{y:1037.0,l:-0.2263,s:0.21398,m:7.8043},
	{y:1067.0,l:-0.2301,s:0.2152,m:7.8076},
	{y:1097.0,l:-0.2338,s:0.21646,m:7.8094},
	{y:1127.0,l:-0.2375,s:0.21776,m:7.8101},
	{y:1157.0,l:-0.241,s:0.21911,m:7.8096},
	{y:1187.0,l:-0.2446,s:0.22049,m:7.808},
	{y:1217.0,l:-0.248,s:0.22192,m:7.8051},
	{y:1247.0,l:-0.2514,s:0.22339,m:7.801},
	{y:1277.0,l:-0.2548,s:0.22489,m:7.7956},
	{y:1307.0,l:-0.2581,s:0.22644,m:7.789},
	{y:1337.0,l:-0.2613,s:0.22801,m:7.781},
	{y:1367.0,l:-0.2645,s:0.22961,m:7.7719},
	{y:1397.0,l:-0.2676,s:0.23123,m:7.7616},
	{y:1427.0,l:-0.2707,s:0.23286,m:7.7503},
	{y:1457.0,l:-0.2738,s:0.23451,m:7.7381},
	{y:1487.0,l:-0.2768,s:0.23617,m:7.7252},
	{y:1517.0,l:-0.2798,s:0.23784,m:7.7118},
	{y:1547.0,l:-0.2827,s:0.23951,m:7.698},
	{y:1577.0,l:-0.2856,s:0.24119,m:7.6839},
	{y:1607.0,l:-0.2884,s:0.24287,m:7.6698},
	{y:1637.0,l:-0.2912,s:0.24457,m:7.6557},
	{y:1667.0,l:-0.294,s:0.24626,m:7.6416},
	{y:1697.0,l:-0.2967,s:0.24797,m:7.6277},
	{y:1727.0,l:-0.2994,s:0.24967,m:7.6139},
	{y:1757.0,l:-0.3021,s:0.25138,m:7.6005},
	{y:1787.0,l:-0.3047,s:0.25309,m:7.5873},
	{y:1817.0,l:-0.3073,s:0.2548,m:7.5745},
	{y:1847.0,l:-0.3099,s:0.25651,m:7.562}
}




define function ZscoretricepsSkinfoldForAgetables(sex String, age Decimal):
	if sex = 'female' then  
        First(tricepsSkinfoldForAgeFemale c where c.y = base.AgeToMini(age) )
	else 
        First(tricepsSkinfoldForAgeMale c where  c.y = base.AgeToMini(age))
            
define function generateZScoretricepsSkinfoldForAge(sex System.String, age System.Decimal, weight  System.Decimal)  : 
	 generateZScoretricepsSkinfoldForAgedet(ZscoretricepsSkinfoldForAgetables(sex,age), weight )

define function generateZScoretricepsSkinfoldForAgedet(row Tuple {y System.Decimal,l System.Decimal,s System.Decimal,m System.Decimal}, weight  System.Decimal):
    if row is not null then 
        base.computeZScore(
            weight,
            row.m , 
            row.l ,
            row.s 
        )
    else null


define function generatetricepsSkinfoldFromAge(sex System.String, age System.Decimal, zscore  System.Decimal) : 
	 generatetricepsSkinfoldFromAgedet(ZscoretricepsSkinfoldForAgetables(sex,age),zscore  )

define function generatetricepsSkinfoldFromAgedet(row Tuple {y System.Decimal,l System.Decimal,s System.Decimal,m System.Decimal},zscore  System.Decimal) : 
    if row is not null then 
        base.computeReverseZScore(
            zscore,
            row.m , 
            row.l ,
            row.s 
        )
    else null    

    
</code></pre></div>
  </text>
  <url
       value="https://fhir.dk.swisstph-mis.ch/matchbox/fhir/Library/tricepsSkinfoldForAge"/>
  <version value="0.1.0"/>
  <name value="tricepsSkinfoldForAge"/>
  <status value="active"/>
  <type>
    <coding>
      <system value="http://hl7.org/fhir/ValueSet/library-type"/>
      <code value="logic-library"/>
    </coding>
  </type>
  <date value="2023-10-04T12:32:21+00:00"/>
  <publisher value="WHO"/>
  <contact>
    <name value="WHO"/>
    <telecom>
      <system value="url"/>
      <value value="http://who.int"/>
    </telecom>
  </contact>
  <relatedArtifact>
    <type value="depends-on"/>
    <resource
              value="https://fhir.dk.swisstph-mis.ch/matchbox/fhir/Library/anthrobase"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <resource value="http://fhir.org/guides/who/anc-cds/Library/FHIRHelpers"/>
  </relatedArtifact>
  <parameter>
    <name value="zscore"/>
    <use value="in"/>
    <type value="decimal"/>
  </parameter>
  <parameter>
    <name value="Age"/>
    <use value="in"/>
    <type value="decimal"/>
  </parameter>
  <parameter>
    <name value="sex"/>
    <use value="in"/>
    <type value="decimal"/>
  </parameter>
  <parameter>
    <name value="generatetricepsSkinfoldFromAge"/>
    <use value="out"/>
    <type value="decimal"/>
  </parameter>
  <parameter>
    <name value="generateZScoretricepsSkinfoldForAge"/>
    <use value="out"/>
    <type value="decimal"/>
  </parameter>
  <parameter>
    <name value="ZscoretricepsSkinfoldForAgetables_s"/>
    <use value="out"/>
    <type value="decimal"/>
  </parameter>
  <parameter>
    <name value="ZscoretricepsSkinfoldForAgetables_m"/>
    <use value="out"/>
    <type value="decimal"/>
  </parameter>
  <parameter>
    <name value="ZscoretricepsSkinfoldForAgetables_l"/>
    <use value="out"/>
    <type value="decimal"/>
  </parameter>
  <dataRequirement>
    <type value="Patient"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Patient"/>
  </dataRequirement>
  <content id="ig-loader-tricepsSkinfoldForAge.cql">
    <contentType value="text/cql"/>
    <data
          value="CmxpYnJhcnkgdHJpY2Vwc1NraW5mb2xkRm9yQWdlIHZlcnNpb24gJzEuMC40Jwp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4xJwppbmNsdWRlIGFudGhyb2Jhc2UgdmVyc2lvbiAnMS4wLjQnIGNhbGxlZCBiYXNlCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnIGNhbGxlZCBGSElSSGVscGVycwoKLy8gQW50cmhvIGxpYnJhcnkgZm9yIHRyaWNlcHNTa2luZm9sZEZvckFnZSAgWi1TY29yZSBmcm9tIHRoZSB0c2FudGhybyBmaWxlcwpjb2Rlc3lzdGVtICJhZG1pbmlzdHJhdGl2ZS1nZW5kZXIiOiAnaHR0cDovL2hsNy5vcmcvZmhpci9hZG1pbmlzdHJhdGl2ZS1nZW5kZXInCi8vY29kZSAiRmVtYWxlIiA6ICdmZW1hbGUnIGZyb20gImFkbWluaXN0cmF0aXZlLWdlbmRlciIgIGRpc3BsYXkgJ0ZlbWFsZScKCgpkZWZpbmUgdHJpY2Vwc1NraW5mb2xkRm9yQWdlRmVtYWxlOgp7Cgl7eTo5MS4wLGw6MC4xODgyLHM6MC4xNzUyNSxtOjkuNzUzM30sCgl7eTo5OC4wLGw6MC4xNzI1LHM6MC4xNzcyNSxtOjkuNzE2OX0sCgl7eToxMDUuMCxsOjAuMTU3OCxzOjAuMTc5MTQsbTo5LjY4MDl9LAoJe3k6MTEyLjAsbDowLjE0MzgsczowLjE4MDk2LG06OS42NDM0fSwKCXt5OjExOS4wLGw6MC4xMzA2LHM6MC4xODI3MSxtOjkuNjAzM30sCgl7eToxMjYuMCxsOjAuMTE4MSxzOjAuMTg0MzksbTo5LjU1OTh9LAoJe3k6MTMzLjAsbDowLjEwNjIsczowLjE4NixtOjkuNTEzMn0sCgl7eToxNDAuMCxsOjAuMDk0OCxzOjAuMTg3NTUsbTo5LjQ2Mzh9LAoJe3k6MTQ3LjAsbDowLjA4MzksczowLjE4OTAyLG06OS40MTE4fSwKCXt5OjE1NC4wLGw6MC4wNzM0LHM6MC4xOTA0MixtOjkuMzU3Mn0sCgl7eToxNjEuMCxsOjAuMDYzNSxzOjAuMTkxNzUsbTo5LjMwMDh9LAoJe3k6MTY4LjAsbDowLjA1MzksczowLjE5MzAxLG06OS4yNDI5fSwKCXt5OjE3NS4wLGw6MC4wNDQ2LHM6MC4xOTQxOSxtOjkuMTg0Mn0sCgl7eToxODIuMCxsOjAuMDM1NyxzOjAuMTk1MyxtOjkuMTI0N30sCgl7eToxOTcuMCxsOjAuMDE3NixzOjAuMTk3NDMsbTo4Ljk5Njl9LAoJe3k6MjI3LjAsbDotMC4wMTQ4LHM6MC4yMDA2OCxtOjguNzQ5MX0sCgl7eToyNTcuMCxsOi0wLjA0MjksczowLjIwMjY4LG06OC41MjY4fSwKCXt5OjI4Ny4wLGw6LTAuMDY3NCxzOjAuMjAzNzcsbTo4LjMzOTF9LAoJe3k6MzE3LjAsbDotMC4wODg0LHM6MC4yMDQyOSxtOjguMTg2OX0sCgl7eTozNDcuMCxsOi0wLjEwNjUsczowLjIwNDQ2LG06OC4wNjU0fSwKCXt5OjM3Ny4wLGw6LTAuMTIxOSxzOjAuMjA0NDEsbTo3Ljk2OTF9LAoJe3k6NDA3LjAsbDotMC4xMzUsczowLjIwNDI0LG06Ny44OTMyfSwKCXt5OjQzNy4wLGw6LTAuMTQ2MyxzOjAuMjA0LG06Ny44MzQ0fSwKCXt5OjQ2Ny4wLGw6LTAuMTU1OSxzOjAuMjAzNzYsbTo3Ljc5MDN9LAoJe3k6NDk3LjAsbDotMC4xNjQxLHM6MC4yMDM1NyxtOjcuNzU5fSwKCXt5OjUyNy4wLGw6LTAuMTcxMixzOjAuMjAzNDksbTo3LjczOTJ9LAoJe3k6NTU3LjAsbDotMC4xNzczLHM6MC4yMDM1MyxtOjcuNzI5Nn0sCgl7eTo1ODcuMCxsOi0wLjE4MjUsczowLjIwMzcxLG06Ny43Mjk1fSwKCXt5OjYxNy4wLGw6LTAuMTg3MSxzOjAuMjA0MDMsbTo3LjczNzd9LAoJe3k6NjQ3LjAsbDotMC4xOTExLHM6MC4yMDQ1MSxtOjcuNzUzMX0sCgl7eTo2NzcuMCxsOi0wLjE5NDgsczowLjIwNTEzLG06Ny43NzUxfSwKCXt5OjcwNy4wLGw6LTAuMTk4LHM6MC4yMDU4NixtOjcuODAyNn0sCgl7eTo3MzcuMCxsOi0wLjIwMSxzOjAuMjA2NzIsbTo3LjgzNDZ9LAoJe3k6NzY3LjAsbDotMC4yMDM3LHM6MC4yMDc2OSxtOjcuODcwMX0sCgl7eTo3OTcuMCxsOi0wLjIwNjIsczowLjIwODc2LG06Ny45MDc4fSwKCXt5OjgyNy4wLGw6LTAuMjA4NSxzOjAuMjA5OTIsbTo3Ljk0NjN9LAoJe3k6ODU3LjAsbDotMC4yMTA2LHM6MC4yMTExNixtOjcuOTg0Nn0sCgl7eTo4ODcuMCxsOi0wLjIxMjUsczowLjIxMjQ3LG06OC4wMjJ9LAoJe3k6OTE3LjAsbDotMC4yMTQyLHM6MC4yMTM4NCxtOjguMDU4MX0sCgl7eTo5NDcuMCxsOi0wLjIxNTcsczowLjIxNTI2LG06OC4wOTI2fSwKCXt5Ojk3Ny4wLGw6LTAuMjE3MSxzOjAuMjE2NzIsbTo4LjEyNTZ9LAoJe3k6MTAwNy4wLGw6LTAuMjE4NCxzOjAuMjE4MjIsbTo4LjE1NzJ9LAoJe3k6MTAzNy4wLGw6LTAuMjE5NixzOjAuMjE5NzUsbTo4LjE4NzZ9LAoJe3k6MTA2Ny4wLGw6LTAuMjIwNyxzOjAuMjIxMzEsbTo4LjIxNzJ9LAoJe3k6MTA5Ny4wLGw6LTAuMjIxOCxzOjAuMjIyODksbTo4LjI0NjJ9LAoJe3k6MTEyNy4wLGw6LTAuMjIyOCxzOjAuMjI0NDksbTo4LjI3NDV9LAoJe3k6MTE1Ny4wLGw6LTAuMjIzNyxzOjAuMjI2MSxtOjguMzAyM30sCgl7eToxMTg3LjAsbDotMC4yMjQ2LHM6MC4yMjc3MixtOjguMzI5M30sCgl7eToxMjE3LjAsbDotMC4yMjU0LHM6MC4yMjkzNCxtOjguMzU1NX0sCgl7eToxMjQ3LjAsbDotMC4yMjYyLHM6MC4yMzA5NixtOjguMzgxfSwKCXt5OjEyNzcuMCxsOi0wLjIyNyxzOjAuMjMyNTcsbTo4LjQwNTd9LAoJe3k6MTMwNy4wLGw6LTAuMjI3NyxzOjAuMjM0MTcsbTo4LjQyOTd9LAoJe3k6MTMzNy4wLGw6LTAuMjI4NCxzOjAuMjM1NzYsbTo4LjQ1MzN9LAoJe3k6MTM2Ny4wLGw6LTAuMjI5MSxzOjAuMjM3MzMsbTo4LjQ3NjV9LAoJe3k6MTM5Ny4wLGw6LTAuMjI5NyxzOjAuMjM4ODgsbTo4LjQ5OTV9LAoJe3k6MTQyNy4wLGw6LTAuMjMwMyxzOjAuMjQwNDIsbTo4LjUyMjN9LAoJe3k6MTQ1Ny4wLGw6LTAuMjMwOSxzOjAuMjQxOTQsbTo4LjU0NTF9LAoJe3k6MTQ4Ny4wLGw6LTAuMjMxNSxzOjAuMjQzNDUsbTo4LjU2Nzh9LAoJe3k6MTUxNy4wLGw6LTAuMjMyLHM6MC4yNDQ5MyxtOjguNTkwNX0sCgl7eToxNTQ3LjAsbDotMC4yMzI1LHM6MC4yNDYzOSxtOjguNjEzM30sCgl7eToxNTc3LjAsbDotMC4yMzMsczowLjI0NzgzLG06OC42MzYyfSwKCXt5OjE2MDcuMCxsOi0wLjIzMzUsczowLjI0OTI1LG06OC42NTkzfSwKCXt5OjE2MzcuMCxsOi0wLjIzNCxzOjAuMjUwNjQsbTo4LjY4MjR9LAoJe3k6MTY2Ny4wLGw6LTAuMjM0NSxzOjAuMjUyMDEsbTo4LjcwNTd9LAoJe3k6MTY5Ny4wLGw6LTAuMjM0OSxzOjAuMjUzMzYsbTo4LjcyOTF9LAoJe3k6MTcyNy4wLGw6LTAuMjM1NCxzOjAuMjU0NjgsbTo4Ljc1MjR9LAoJe3k6MTc1Ny4wLGw6LTAuMjM1OCxzOjAuMjU1OTcsbTo4Ljc3NTh9LAoJe3k6MTc4Ny4wLGw6LTAuMjM2MixzOjAuMjU3MjQsbTo4Ljc5OTJ9LAoJe3k6MTgxNy4wLGw6LTAuMjM2NixzOjAuMjU4NDksbTo4LjgyMjZ9LAoJe3k6MTg0Ny4wLGw6LTAuMjM3LHM6MC4yNTk3MixtOjguODQ1OH0KfQoKZGVmaW5lIHRyaWNlcHNTa2luZm9sZEZvckFnZU1hbGU6CnsKCXt5OjkxLjAsbDowLjAwMyxzOjAuMTY2MTEsbTo5Ljc2NTh9LAoJe3k6OTguMCxsOi0wLjAwMTgsczowLjE2NzcsbTo5LjcyMzZ9LAoJe3k6MTA1LjAsbDotMC4wMDY0LHM6MC4xNjkyMixtOjkuNjgyNn0sCgl7eToxMTIuMCxsOi0wLjAxMDcsczowLjE3MDY5LG06OS42NDE4fSwKCXt5OjExOS4wLGw6LTAuMDE0OSxzOjAuMTcyMSxtOjkuNjAwNX0sCgl7eToxMjYuMCxsOi0wLjAxODksczowLjE3MzQ3LG06OS41NTgxfSwKCXt5OjEzMy4wLGw6LTAuMDIyNyxzOjAuMTc0OCxtOjkuNTE0NX0sCgl7eToxNDAuMCxsOi0wLjAyNjUsczowLjE3NjA5LG06OS40Njk3fSwKCXt5OjE0Ny4wLGw6LTAuMDMsczowLjE3NzM0LG06OS40MjM1fSwKCXt5OjE1NC4wLGw6LTAuMDMzNSxzOjAuMTc4NTUsbTo5LjM3NjF9LAoJe3k6MTYxLjAsbDotMC4wMzY4LHM6MC4xNzk3MixtOjkuMzI3NX0sCgl7eToxNjguMCxsOi0wLjA0MDEsczowLjE4MDg1LG06OS4yNzh9LAoJe3k6MTc1LjAsbDotMC4wNDMzLHM6MC4xODE5MixtOjkuMjI3OX0sCgl7eToxODIuMCxsOi0wLjA0NjMsczowLjE4Mjk1LG06OS4xNzc1fSwKCXt5OjE5Ny4wLGw6LTAuMDUyNixzOjAuMTg0OTYsbTo5LjA2ODl9LAoJe3k6MjI3LjAsbDotMC4wNjQzLHM6MC4xODgyNixtOjguODU1NX0sCgl7eToyNTcuMCxsOi0wLjA3NSxzOjAuMTkwNjUsbTo4LjY1Nn0sCgl7eToyODcuMCxsOi0wLjA4NDgsczowLjE5MjMxLG06OC40NzU5fSwKCXt5OjMxNy4wLGw6LTAuMDkzOSxzOjAuMTkzNDIsbTo4LjMxNjl9LAoJe3k6MzQ3LjAsbDotMC4xMDI0LHM6MC4xOTQxNixtOjguMTc4NX0sCgl7eTozNzcuMCxsOi0wLjExMDQsczowLjE5NDc0LG06OC4wNn0sCgl7eTo0MDcuMCxsOi0wLjExOCxzOjAuMTk1MjYsbTo3Ljk2MDV9LAoJe3k6NDM3LjAsbDotMC4xMjUyLHM6MC4xOTU3NyxtOjcuODc4OH0sCgl7eTo0NjcuMCxsOi0wLjEzMjEsczowLjE5NjMxLG06Ny44MTM1fSwKCXt5OjQ5Ny4wLGw6LTAuMTM4NyxzOjAuMTk2ODgsbTo3Ljc2MjZ9LAoJe3k6NTI3LjAsbDotMC4xNDUsczowLjE5NzQ4LG06Ny43MjR9LAoJe3k6NTU3LjAsbDotMC4xNTEsczowLjE5ODEzLG06Ny42OTYxfSwKCXt5OjU4Ny4wLGw6LTAuMTU2OCxzOjAuMTk4ODMsbTo3LjY3NzZ9LAoJe3k6NjE3LjAsbDotMC4xNjI1LHM6MC4xOTk1OCxtOjcuNjY3N30sCgl7eTo2NDcuMCxsOi0wLjE2NzksczowLjIwMDQsbTo3LjY2NTN9LAoJe3k6Njc3LjAsbDotMC4xNzMxLHM6MC4yMDEyNixtOjcuNjY4OX0sCgl7eTo3MDcuMCxsOi0wLjE3ODIsczowLjIwMjE4LG06Ny42NzczfSwKCXt5OjczNy4wLGw6LTAuMTgzMixzOjAuMjAzMTQsbTo3LjY4OTF9LAoJe3k6NzY3LjAsbDotMC4xODgsczowLjIwNDE0LG06Ny43MDMzfSwKCXt5Ojc5Ny4wLGw6LTAuMTkyNyxzOjAuMjA1MTcsbTo3LjcxODV9LAoJe3k6ODI3LjAsbDotMC4xOTcyLHM6MC4yMDYyMSxtOjcuNzMzOH0sCgl7eTo4NTcuMCxsOi0wLjIwMTcsczowLjIwNzI3LG06Ny43NDg2fSwKCXt5Ojg4Ny4wLGw6LTAuMjA2LHM6MC4yMDgzMyxtOjcuNzYyMX0sCgl7eTo5MTcuMCxsOi0wLjIxMDIsczowLjIwOTQyLG06Ny43NzQxfSwKCXt5Ojk0Ny4wLGw6LTAuMjE0NCxzOjAuMjEwNTIsbTo3Ljc4NDN9LAoJe3k6OTc3LjAsbDotMC4yMTg0LHM6MC4yMTE2NCxtOjcuNzkyOH0sCgl7eToxMDA3LjAsbDotMC4yMjI0LHM6MC4yMTI3OSxtOjcuNzk5NH0sCgl7eToxMDM3LjAsbDotMC4yMjYzLHM6MC4yMTM5OCxtOjcuODA0M30sCgl7eToxMDY3LjAsbDotMC4yMzAxLHM6MC4yMTUyLG06Ny44MDc2fSwKCXt5OjEwOTcuMCxsOi0wLjIzMzgsczowLjIxNjQ2LG06Ny44MDk0fSwKCXt5OjExMjcuMCxsOi0wLjIzNzUsczowLjIxNzc2LG06Ny44MTAxfSwKCXt5OjExNTcuMCxsOi0wLjI0MSxzOjAuMjE5MTEsbTo3LjgwOTZ9LAoJe3k6MTE4Ny4wLGw6LTAuMjQ0NixzOjAuMjIwNDksbTo3LjgwOH0sCgl7eToxMjE3LjAsbDotMC4yNDgsczowLjIyMTkyLG06Ny44MDUxfSwKCXt5OjEyNDcuMCxsOi0wLjI1MTQsczowLjIyMzM5LG06Ny44MDF9LAoJe3k6MTI3Ny4wLGw6LTAuMjU0OCxzOjAuMjI0ODksbTo3Ljc5NTZ9LAoJe3k6MTMwNy4wLGw6LTAuMjU4MSxzOjAuMjI2NDQsbTo3Ljc4OX0sCgl7eToxMzM3LjAsbDotMC4yNjEzLHM6MC4yMjgwMSxtOjcuNzgxfSwKCXt5OjEzNjcuMCxsOi0wLjI2NDUsczowLjIyOTYxLG06Ny43NzE5fSwKCXt5OjEzOTcuMCxsOi0wLjI2NzYsczowLjIzMTIzLG06Ny43NjE2fSwKCXt5OjE0MjcuMCxsOi0wLjI3MDcsczowLjIzMjg2LG06Ny43NTAzfSwKCXt5OjE0NTcuMCxsOi0wLjI3MzgsczowLjIzNDUxLG06Ny43MzgxfSwKCXt5OjE0ODcuMCxsOi0wLjI3NjgsczowLjIzNjE3LG06Ny43MjUyfSwKCXt5OjE1MTcuMCxsOi0wLjI3OTgsczowLjIzNzg0LG06Ny43MTE4fSwKCXt5OjE1NDcuMCxsOi0wLjI4MjcsczowLjIzOTUxLG06Ny42OTh9LAoJe3k6MTU3Ny4wLGw6LTAuMjg1NixzOjAuMjQxMTksbTo3LjY4Mzl9LAoJe3k6MTYwNy4wLGw6LTAuMjg4NCxzOjAuMjQyODcsbTo3LjY2OTh9LAoJe3k6MTYzNy4wLGw6LTAuMjkxMixzOjAuMjQ0NTcsbTo3LjY1NTd9LAoJe3k6MTY2Ny4wLGw6LTAuMjk0LHM6MC4yNDYyNixtOjcuNjQxNn0sCgl7eToxNjk3LjAsbDotMC4yOTY3LHM6MC4yNDc5NyxtOjcuNjI3N30sCgl7eToxNzI3LjAsbDotMC4yOTk0LHM6MC4yNDk2NyxtOjcuNjEzOX0sCgl7eToxNzU3LjAsbDotMC4zMDIxLHM6MC4yNTEzOCxtOjcuNjAwNX0sCgl7eToxNzg3LjAsbDotMC4zMDQ3LHM6MC4yNTMwOSxtOjcuNTg3M30sCgl7eToxODE3LjAsbDotMC4zMDczLHM6MC4yNTQ4LG06Ny41NzQ1fSwKCXt5OjE4NDcuMCxsOi0wLjMwOTksczowLjI1NjUxLG06Ny41NjJ9Cn0KCgoKCmRlZmluZSBmdW5jdGlvbiBac2NvcmV0cmljZXBzU2tpbmZvbGRGb3JBZ2V0YWJsZXMoc2V4IFN0cmluZywgYWdlIERlY2ltYWwpOgoJaWYgc2V4ID0gJ2ZlbWFsZScgdGhlbiAgCiAgICAgICAgRmlyc3QodHJpY2Vwc1NraW5mb2xkRm9yQWdlRmVtYWxlIGMgd2hlcmUgYy55ID0gYmFzZS5BZ2VUb01pbmkoYWdlKSApCgllbHNlIAogICAgICAgIEZpcnN0KHRyaWNlcHNTa2luZm9sZEZvckFnZU1hbGUgYyB3aGVyZSAgYy55ID0gYmFzZS5BZ2VUb01pbmkoYWdlKSkKICAgICAgICAgICAgCmRlZmluZSBmdW5jdGlvbiBnZW5lcmF0ZVpTY29yZXRyaWNlcHNTa2luZm9sZEZvckFnZShzZXggU3lzdGVtLlN0cmluZywgYWdlIFN5c3RlbS5EZWNpbWFsLCB3ZWlnaHQgIFN5c3RlbS5EZWNpbWFsKSAgOiAKCSBnZW5lcmF0ZVpTY29yZXRyaWNlcHNTa2luZm9sZEZvckFnZWRldChac2NvcmV0cmljZXBzU2tpbmZvbGRGb3JBZ2V0YWJsZXMoc2V4LGFnZSksIHdlaWdodCApCgpkZWZpbmUgZnVuY3Rpb24gZ2VuZXJhdGVaU2NvcmV0cmljZXBzU2tpbmZvbGRGb3JBZ2VkZXQocm93IFR1cGxlIHt5IFN5c3RlbS5EZWNpbWFsLGwgU3lzdGVtLkRlY2ltYWwscyBTeXN0ZW0uRGVjaW1hbCxtIFN5c3RlbS5EZWNpbWFsfSwgd2VpZ2h0ICBTeXN0ZW0uRGVjaW1hbCk6CiAgICBpZiByb3cgaXMgbm90IG51bGwgdGhlbiAKICAgICAgICBiYXNlLmNvbXB1dGVaU2NvcmUoCiAgICAgICAgICAgIHdlaWdodCwKICAgICAgICAgICAgcm93Lm0gLCAKICAgICAgICAgICAgcm93LmwgLAogICAgICAgICAgICByb3cucyAKICAgICAgICApCiAgICBlbHNlIG51bGwKCgpkZWZpbmUgZnVuY3Rpb24gZ2VuZXJhdGV0cmljZXBzU2tpbmZvbGRGcm9tQWdlKHNleCBTeXN0ZW0uU3RyaW5nLCBhZ2UgU3lzdGVtLkRlY2ltYWwsIHpzY29yZSAgU3lzdGVtLkRlY2ltYWwpIDogCgkgZ2VuZXJhdGV0cmljZXBzU2tpbmZvbGRGcm9tQWdlZGV0KFpzY29yZXRyaWNlcHNTa2luZm9sZEZvckFnZXRhYmxlcyhzZXgsYWdlKSx6c2NvcmUgICkKCmRlZmluZSBmdW5jdGlvbiBnZW5lcmF0ZXRyaWNlcHNTa2luZm9sZEZyb21BZ2VkZXQocm93IFR1cGxlIHt5IFN5c3RlbS5EZWNpbWFsLGwgU3lzdGVtLkRlY2ltYWwscyBTeXN0ZW0uRGVjaW1hbCxtIFN5c3RlbS5EZWNpbWFsfSx6c2NvcmUgIFN5c3RlbS5EZWNpbWFsKSA6IAogICAgaWYgcm93IGlzIG5vdCBudWxsIHRoZW4gCiAgICAgICAgYmFzZS5jb21wdXRlUmV2ZXJzZVpTY29yZSgKICAgICAgICAgICAgenNjb3JlLAogICAgICAgICAgICByb3cubSAsIAogICAgICAgICAgICByb3cubCAsCiAgICAgICAgICAgIHJvdy5zIAogICAgICAgICkKICAgIGVsc2UgbnVsbCAgICAKCiAgICAK"/>
  </content>
</Library>