WHO SMART Guidelines - HIV
0.4.3 - ci-build
WHO SMART Guidelines - HIV - Local Development build (v0.4.3) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
Draft as of 2025-02-07 |
{
"resourceType" : "Library",
"id" : "HIVIND42Logic",
"meta" : {
"profile" : [
🔗 "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary"🔗 ,
"http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary"🔗 ,
"http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library"🔗 ,
"http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module"
]
},
"text" : {
"status" : "extensions",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n<div>\n <table class=\"grid dict\">\n \n \n <tr>\n <th scope=\"row\"><b>Title: </b></th>\n <td style=\"padding-left: 4px;\">HIV.IND.42 Logic</td>\n </tr>\n \n\n \n \n <tr>\n <th scope=\"row\"><b>Id: </b></th>\n <td style=\"padding-left: 4px;\">HIVIND42Logic</td>\n </tr>\n \n\n \n \n <tr>\n <th scope=\"row\"><b>Version: </b></th>\n <td style=\"padding-left: 4px;\">0.4.3</td>\n </tr>\n \n\n \n <tr>\n <th scope=\"row\"><b>Url: </b></th>\n <td style=\"padding-left: 4px;\"><a href=\"Library-HIVIND42Logic.html\">HIV.IND.42 Logic</a></td>\n </tr>\n \n\n \n\n \n\n \n <tr>\n <th scope=\"row\"><b>Status: </b></th>\n <td style=\"padding-left: 4px;\">draft</td>\n </tr>\n \n\n \n <tr>\n <th scope=\"row\"><b>Experimental: </b></th>\n <td style=\"padding-left: 4px;\">true</td>\n </tr>\n \n\n \n <tr>\n <th scope=\"row\"><b>Type: </b></th>\n <td style=\"padding-left: 4px;\">\n \n \n \n <p style=\"margin-bottom: 5px;\">\n <b>system: </b> <span><a href=\"http://terminology.hl7.org/6.0.2/CodeSystem-library-type.html\">http://terminology.hl7.org/CodeSystem/library-type</a></span>\n </p>\n \n \n <p style=\"margin-bottom: 5px;\">\n <b>code: </b> <span>logic-library</span>\n </p>\n \n \n \n \n \n </td>\n </tr>\n \n\n \n\n \n <tr>\n <th scope=\"row\"><b>Date: </b></th>\n <td style=\"padding-left: 4px;\">2025-02-07 14:15:45+0000</td>\n </tr>\n \n\n \n <tr>\n <th scope=\"row\"><b>Publisher: </b></th>\n <td style=\"padding-left: 4px;\">WHO</td>\n </tr>\n \n\n \n <tr>\n <th scope=\"row\"><b>Description: </b></th>\n <td style=\"padding-left: 4px;\"><div><p>% of HIV-exposed infants whose final HIV outcome status is known</p>\n</div></td>\n </tr>\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n \n <tr>\n <td colspan=\"2\">\n <table>\n <tr><th><a id=\"cql-content\"><b>Content: </b></a> text/cql</th></tr>\n <tr><td><pre><code class=\"language-cql\">/**\n * Library: HIV.IND.42 Logic\n * Ref No: VER.6\n * Short Name: Final outcome of PMTCT\n *\n * Definition: % of HIV-exposed infants whose final HIV outcome status is known\n *\n * Numerator: HIV-exposed infants born within the past 12 months (or 24 months in breastfeeding settings) who have known final HIV outcome status\n * Numerator Calculation: COUNT of infants who are an "HIV-exposed infant or child" AND [(with an "Infant date of birth" in past 12 months) OR (with an "Infant date of birth" in past 24 months IF mothers are "Breastfeeding")] AND "Registered in birth cohort"=True AND with a "Final diagnosis of HIV-exposed infant" of NOT NULL\n * Numerator Exclusions: \n *\n * Denominator: a) Programme-based/service delivery denominator | Number of HIV-exposed infants who were born within the 12 months (or 24 months in breastfeeding settings) prior to the reporting period and registered in the birth cohort | For example, for the reporting period January to December 2021 the denominator would be the number of HIV-exposed infants born between January to December 2020 in non-breast feeding settings and January to December 2019 in breastfeeding settings. | | b) Population-based denominator | Estimated number of HIV-positive women who delivered within the past 12 months | (or 24 months in breastfeeding settings)\n * Denominator Calculation: COUNT of infants who are an "HIV-exposed infant or child" AND [(with an "Infant date of birth" within past 12 months) OR (with an "Infant date of birth" within past 24 months IF mothers are "Breastfeeding")] AND "Registered in birth cohort"=True\n * Denominator Exclusions: \n *\n * Disaggregations:\n * •\u00a0Outcome status (HIV-positive, HIV-negative, no longer breastfeeding) \n * •\u00a0Cities and other administrative regions of epidemiologic importance\n *\n * Disaggregation Elements: Infant HIV status\n *\n * Numerator and Denominator Elements:\n * Breastfeeding \n * Final diagnosis of HIV-exposed infant \n * HIV-exposed infant or child \n * Infant date of birth \n * Registered in birth cohort\n *\n * Reference: Consolidated guidelines on person-centred HIV strategic information: strengthening routine data for impact. Geneva: World Health Organization; 2022\n * \n * Data Concepts:\n * HIV.B.DE32: Breastfeeding | Infant is being breastfed by mother\n * HIV.D.DE32: Breastfeeding | Client is giving infant breast milk\n * HIV.E.DE87: Infant date of birth | The infant's date of birth (DOB) if known\n * HIV.E.DE112: HIV-exposed infant or child | Whether the infant or child was determined to have had HIV exposure\n * HIV.E.DE179: Registered in birth cohort | Whether the infant has been registered in a birth cohort\n * HIV.E.DE225: Infant HIV status | HIV status reported after applying the HIV testing algorithm. No single HIV test can provide an HIV-positive diagnosis.\n * HIV.E.DE226: HIV-positive | Infant is HIV-positive\n * HIV.E.DE227: HIV-negative | Infant is HIV-negative\n * HIV.E.DE228: Unknown | Infant has unknown HIV status\n * HIV.E.DE230: Final diagnosis of HIV-exposed infant | HIV-exposed infant final status at 18 months or 3 months after cessation of breastfeeding (whichever is later).\n * HIV.E.DE231: HIV-positive | The infant is HIV-positive\n * HIV.E.DE232: HIV-negative and no longer breastfeeding | The infant is HIV-negative and the mother has quit breastfeeding\n * HIV.E.DE233: HIV status unknown | The final HIV status of the child is unknown because the infant died, was lost to follow-up or transferred out without ever having an HIV-positive diagnosis or is active in care but was not tested at 18 months\n * HIV.SRV.DE20: HIV-exposed infant or child | Whether the infant or child was determined to have had HIV exposure\n * HIV.SRV.DE22: Final diagnosis of HIV-exposed infant | HIV-exposed infant final status at 18 months or 3 months after cessation of breastfeeding (whichever is later).\n *\n * Additional Context\n * - what it measures: This indicator measures quality of programme follow-up to track exposed infants and ascertain final HIV status.\n * - rationale: •\u00a0Effective PMTCT programmes must follow HIV-exposed infants until the end of the breastfeeding period to ensure that the full cascade of services and support is provided to HIV-positive mothers and their infants. | •\u00a0The ability to ascertain final outcome status through routine programme data across multiple points of care is a key challenge.\n * - method: This indicator measures quality of programme follow-up to track exposed infants and ascertain final HIV status.\n * \n * Suggested Scoring Method: proportion | http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/proportion-measure-cqfm\n */\n\nlibrary HIVIND42Logic\n\n// Included Libraries\nusing FHIR version '4.0.1'\n\ninclude HIVCommon version '0.0.1' called HIC\ninclude FHIRHelpers version '4.0.1'\n\ninclude WHOCommon called WCom\n\ninclude HIVElements called HE\ninclude HIVIndicatorElements called HIE\n\n\n// Indicator Definition\nparameter "Measurement Period" Interval<Date> default Interval[@2023-01-01, @2023-01-30]\n\ncontext Patient\n/* Populations */\n\n/*\n *Initial Population\n */\n\ndefine "Initial Population":\n true\n\n/**\n * Numerator\n * \n * Definition: HIV-exposed infants born within the past 12 months (or 24 months in breastfeeding settings) who have known final HIV outcome status\n * Calculation: COUNT of infants who are an "HIV-exposed infant or child" AND [(with an "Infant date of birth" in past 12 months) OR (with an "Infant date of birth" in past 24 months IF mothers are "Breastfeeding")] AND "Registered in birth cohort"=True AND with a "Final diagnosis of HIV-exposed infant" of NOT NULL\n */\n\ndefine "Numerator":\n HIE."is HIV-exposed infant or child E.DE112"\n and\n (exists(HIE."Live Birth Delivery" B where months between end of B.effective.toInterval() and end of "Measurement Period" < 12 months)\n or \n (\n exists(HIE."Breastfeeding B.DE32" B) and\n exists(HIE."Live Birth Delivery" B where months between end of B.effective.toInterval() and end of "Measurement Period" < 24 months)\n )\n )\n and HIE."Registered in birth cohort"\n and HE."Final diagnosis of HIV-exposed infant E.DE230" is not null\n\n\n/**\n * Denominator\n *\n * Definition: a) Programme-based/service delivery denominator | Number of HIV-exposed infants who were born within the 12 months (or 24 months in breastfeeding settings) prior to the reporting period and registered in the birth cohort | For example, for the reporting period January to December 2021 the denominator would be the number of HIV-exposed infants born between January to December 2020 in non-breast feeding settings and January to December 2019 in breastfeeding settings. | | b) Population-based denominator | Estimated number of HIV-positive women who delivered within the past 12 months | (or 24 months in breastfeeding settings)\n * Calculation: COUNT of infants who are an "HIV-exposed infant or child" AND [(with an "Infant date of birth" within past 12 months) OR (with an "Infant date of birth" within past 24 months IF mothers are "Breastfeeding")] AND "Registered in birth cohort"=True\n */\n\ndefine "Denominator":\n HIE."is HIV-exposed infant or child E.DE112"\n and\n (exists(HIE."Live Birth Delivery" B where months between end of B.effective.toInterval() and end of "Measurement Period" < 12 months)\n or \n (\n exists(HIE."Breastfeeding B.DE32" B) and\n exists(HIE."Live Birth Delivery" B where months between end of B.effective.toInterval() and end of "Measurement Period" < 24 months)\n )\n )\n and HIE."Registered in birth cohort"\n \n\n/* end Populations */\n\n/* \n * Disaggregators\n */\n \ndefine "Geographic Region Stratifier":\n\tHIE."By Geographic Region Stratifier"\n\ndefine "HIV Status Stratifier infant":\n HIE."HIV Status Stratifier infant"\n\ndefine "Stratification":\nHIE."HIV Status Stratifier infant".code\n+ ':' + HIE."By Geographic Region Stratifier"\n\n\n\n\n</code></pre></td></tr>\n </table>\n </td>\n </tr>\n \n \n \n </table>\n</div>\n</div>"
},
"extension" : [
{
"url" : "http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability",
"valueCode" : "computable"
}
],
"url" : "http://smart.who.int/hiv/Library/HIVIND42Logic",
"version" : "0.4.3",
"name" : "HIVIND42Logic",
"title" : "HIV.IND.42 Logic",
"status" : "draft",
"experimental" : true,
"type" : {
"coding" : [
{
"system" : "http://terminology.hl7.org/CodeSystem/library-type",
"code" : "logic-library"
}
]
},
"date" : "2025-02-07T14:15:45+00:00",
"publisher" : "WHO",
"contact" : [
{
"name" : "WHO",
"telecom" : [
{
"system" : "url",
"value" : "http://who.int"
}
]
}
],
"description" : "% of HIV-exposed infants whose final HIV outcome status is known",
"content" : [
{
"contentType" : "text/cql",
"data" : "LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuNDIgTG9naWMKICogUmVmIE5vOiBWRVIuNgogKiBTaG9ydCBOYW1lOiBGaW5hbCBvdXRjb21lIG9mIFBNVENUCiAqCiAqIERlZmluaXRpb246ICUgb2YgSElWLWV4cG9zZWQgaW5mYW50cyB3aG9zZSBmaW5hbCBISVYgb3V0Y29tZSBzdGF0dXMgaXMga25vd24KICoKICogTnVtZXJhdG9yOiBISVYtZXhwb3NlZCBpbmZhbnRzIGJvcm4gd2l0aGluIHRoZSBwYXN0IDEyIG1vbnRocyAob3IgMjQgbW9udGhzIGluIGJyZWFzdGZlZWRpbmcgc2V0dGluZ3MpIHdobyBoYXZlIGtub3duIGZpbmFsIEhJViBvdXRjb21lIHN0YXR1cwogKiBOdW1lcmF0b3IgQ2FsY3VsYXRpb246IENPVU5UIG9mIGluZmFudHMgd2hvIGFyZSBhbiAiSElWLWV4cG9zZWQgaW5mYW50IG9yIGNoaWxkIiBBTkQgWyh3aXRoIGFuICJJbmZhbnQgZGF0ZSBvZiBiaXJ0aCIgaW4gcGFzdCAxMiBtb250aHMpIE9SICh3aXRoIGFuICJJbmZhbnQgZGF0ZSBvZiBiaXJ0aCIgaW4gcGFzdCAyNCBtb250aHMgSUYgbW90aGVycyBhcmUgIkJyZWFzdGZlZWRpbmciKV0gQU5EICJSZWdpc3RlcmVkIGluIGJpcnRoIGNvaG9ydCI9VHJ1ZSBBTkQgd2l0aCBhICJGaW5hbCBkaWFnbm9zaXMgb2YgSElWLWV4cG9zZWQgaW5mYW50IiBvZiBOT1QgTlVMTAogKiBOdW1lcmF0b3IgRXhjbHVzaW9uczogCiAqCiAqIERlbm9taW5hdG9yOiBhKSBQcm9ncmFtbWUtYmFzZWQvc2VydmljZSBkZWxpdmVyeSBkZW5vbWluYXRvciB8IE51bWJlciBvZiBISVYtZXhwb3NlZCBpbmZhbnRzIHdobyB3ZXJlIGJvcm4gd2l0aGluIHRoZSAxMiBtb250aHMgKG9yIDI0IG1vbnRocyBpbiBicmVhc3RmZWVkaW5nIHNldHRpbmdzKSBwcmlvciB0byB0aGUgcmVwb3J0aW5nIHBlcmlvZCBhbmQgcmVnaXN0ZXJlZCBpbiB0aGUgYmlydGggY29ob3J0IHwgRm9yIGV4YW1wbGUsIGZvciB0aGUgcmVwb3J0aW5nIHBlcmlvZCBKYW51YXJ5IHRvIERlY2VtYmVyIDIwMjEgdGhlIGRlbm9taW5hdG9yIHdvdWxkIGJlIHRoZSBudW1iZXIgb2YgSElWLWV4cG9zZWQgaW5mYW50cyBib3JuIGJldHdlZW4gSmFudWFyeSB0byBEZWNlbWJlciAyMDIwIGluIG5vbi1icmVhc3QgZmVlZGluZyBzZXR0aW5ncyBhbmQgSmFudWFyeSB0byBEZWNlbWJlciAyMDE5IGluIGJyZWFzdGZlZWRpbmcgc2V0dGluZ3MuIHwgIHwgYikgUG9wdWxhdGlvbi1iYXNlZCBkZW5vbWluYXRvciB8IEVzdGltYXRlZCBudW1iZXIgb2YgSElWLXBvc2l0aXZlIHdvbWVuIHdobyBkZWxpdmVyZWQgd2l0aGluIHRoZSBwYXN0IDEyIG1vbnRocyB8IChvciAyNCBtb250aHMgaW4gYnJlYXN0ZmVlZGluZyBzZXR0aW5ncykKICogRGVub21pbmF0b3IgQ2FsY3VsYXRpb246IENPVU5UIG9mIGluZmFudHMgd2hvIGFyZSBhbiAiSElWLWV4cG9zZWQgaW5mYW50IG9yIGNoaWxkIiBBTkQgWyh3aXRoIGFuICJJbmZhbnQgZGF0ZSBvZiBiaXJ0aCIgd2l0aGluIHBhc3QgMTIgbW9udGhzKSBPUiAod2l0aCBhbiAiSW5mYW50IGRhdGUgb2YgYmlydGgiIHdpdGhpbiBwYXN0IDI0IG1vbnRocyBJRiBtb3RoZXJzIGFyZSAiQnJlYXN0ZmVlZGluZyIpXSBBTkQgIlJlZ2lzdGVyZWQgaW4gYmlydGggY29ob3J0Ij1UcnVlCiAqIERlbm9taW5hdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEaXNhZ2dyZWdhdGlvbnM6CiAqIOKAosKgT3V0Y29tZSBzdGF0dXMgKEhJVi1wb3NpdGl2ZSwgSElWLW5lZ2F0aXZlLCBubyBsb25nZXIgYnJlYXN0ZmVlZGluZykgCiAqICDigKLCoENpdGllcyBhbmQgb3RoZXIgYWRtaW5pc3RyYXRpdmUgcmVnaW9ucyBvZiBlcGlkZW1pb2xvZ2ljIGltcG9ydGFuY2UKICoKICogRGlzYWdncmVnYXRpb24gRWxlbWVudHM6IEluZmFudCBISVYgc3RhdHVzCiAqCiAqIE51bWVyYXRvciBhbmQgRGVub21pbmF0b3IgRWxlbWVudHM6CiAqIEJyZWFzdGZlZWRpbmcgCiAqICBGaW5hbCBkaWFnbm9zaXMgb2YgSElWLWV4cG9zZWQgaW5mYW50IAogKiAgSElWLWV4cG9zZWQgaW5mYW50IG9yIGNoaWxkIAogKiAgSW5mYW50IGRhdGUgb2YgYmlydGggCiAqICBSZWdpc3RlcmVkIGluIGJpcnRoIGNvaG9ydAogKgogKiBSZWZlcmVuY2U6IENvbnNvbGlkYXRlZCBndWlkZWxpbmVzIG9uIHBlcnNvbi1jZW50cmVkIEhJViBzdHJhdGVnaWMgaW5mb3JtYXRpb246IHN0cmVuZ3RoZW5pbmcgcm91dGluZSBkYXRhIGZvciBpbXBhY3QuIEdlbmV2YTogV29ybGQgSGVhbHRoIE9yZ2FuaXphdGlvbjsgMjAyMgogKiAKICogRGF0YSBDb25jZXB0czoKICogSElWLkIuREUzMjogQnJlYXN0ZmVlZGluZyB8IEluZmFudCBpcyBiZWluZyBicmVhc3RmZWQgYnkgbW90aGVyCiAqIEhJVi5ELkRFMzI6IEJyZWFzdGZlZWRpbmcgfCBDbGllbnQgaXMgZ2l2aW5nIGluZmFudCBicmVhc3QgbWlsawogKiBISVYuRS5ERTg3OiBJbmZhbnQgZGF0ZSBvZiBiaXJ0aCB8IFRoZSBpbmZhbnQncyBkYXRlIG9mIGJpcnRoIChET0IpIGlmIGtub3duCiAqIEhJVi5FLkRFMTEyOiBISVYtZXhwb3NlZCBpbmZhbnQgb3IgY2hpbGQgfCBXaGV0aGVyIHRoZSBpbmZhbnQgb3IgY2hpbGQgd2FzIGRldGVybWluZWQgdG8gaGF2ZSBoYWQgSElWIGV4cG9zdXJlCiAqIEhJVi5FLkRFMTc5OiBSZWdpc3RlcmVkIGluIGJpcnRoIGNvaG9ydCB8IFdoZXRoZXIgdGhlIGluZmFudCBoYXMgYmVlbiByZWdpc3RlcmVkIGluIGEgYmlydGggY29ob3J0CiAqIEhJVi5FLkRFMjI1OiBJbmZhbnQgSElWIHN0YXR1cyB8IEhJViBzdGF0dXMgcmVwb3J0ZWQgYWZ0ZXIgYXBwbHlpbmcgdGhlIEhJViB0ZXN0aW5nIGFsZ29yaXRobS4gTm8gc2luZ2xlIEhJViB0ZXN0IGNhbiBwcm92aWRlIGFuIEhJVi1wb3NpdGl2ZSBkaWFnbm9zaXMuCiAqIEhJVi5FLkRFMjI2OiBISVYtcG9zaXRpdmUgfCBJbmZhbnQgaXMgSElWLXBvc2l0aXZlCiAqIEhJVi5FLkRFMjI3OiBISVYtbmVnYXRpdmUgfCBJbmZhbnQgaXMgSElWLW5lZ2F0aXZlCiAqIEhJVi5FLkRFMjI4OiBVbmtub3duIHwgSW5mYW50IGhhcyB1bmtub3duIEhJViBzdGF0dXMKICogSElWLkUuREUyMzA6IEZpbmFsIGRpYWdub3NpcyBvZiBISVYtZXhwb3NlZCBpbmZhbnQgfCBISVYtZXhwb3NlZCBpbmZhbnQgZmluYWwgc3RhdHVzIGF0IDE4IG1vbnRocyBvciAzIG1vbnRocyBhZnRlciBjZXNzYXRpb24gb2YgYnJlYXN0ZmVlZGluZyAod2hpY2hldmVyIGlzIGxhdGVyKS4KICogSElWLkUuREUyMzE6IEhJVi1wb3NpdGl2ZSB8IFRoZSBpbmZhbnQgaXMgSElWLXBvc2l0aXZlCiAqIEhJVi5FLkRFMjMyOiBISVYtbmVnYXRpdmUgYW5kIG5vIGxvbmdlciBicmVhc3RmZWVkaW5nIHwgVGhlIGluZmFudCBpcyBISVYtbmVnYXRpdmUgYW5kIHRoZSBtb3RoZXIgaGFzIHF1aXQgYnJlYXN0ZmVlZGluZwogKiBISVYuRS5ERTIzMzogSElWIHN0YXR1cyB1bmtub3duIHwgVGhlIGZpbmFsIEhJViBzdGF0dXMgb2YgdGhlIGNoaWxkIGlzIHVua25vd24gYmVjYXVzZSB0aGUgaW5mYW50IGRpZWQsIHdhcyBsb3N0IHRvIGZvbGxvdy11cCBvciB0cmFuc2ZlcnJlZCBvdXQgd2l0aG91dCBldmVyIGhhdmluZyBhbiBISVYtcG9zaXRpdmUgZGlhZ25vc2lzIG9yIGlzIGFjdGl2ZSBpbiBjYXJlIGJ1dCB3YXMgbm90IHRlc3RlZCBhdCAxOCBtb250aHMKICogSElWLlNSVi5ERTIwOiBISVYtZXhwb3NlZCBpbmZhbnQgb3IgY2hpbGQgfCBXaGV0aGVyIHRoZSBpbmZhbnQgb3IgY2hpbGQgd2FzIGRldGVybWluZWQgdG8gaGF2ZSBoYWQgSElWIGV4cG9zdXJlCiAqIEhJVi5TUlYuREUyMjogRmluYWwgZGlhZ25vc2lzIG9mIEhJVi1leHBvc2VkIGluZmFudCB8IEhJVi1leHBvc2VkIGluZmFudCBmaW5hbCBzdGF0dXMgYXQgMTggbW9udGhzIG9yIDMgbW9udGhzIGFmdGVyIGNlc3NhdGlvbiBvZiBicmVhc3RmZWVkaW5nICh3aGljaGV2ZXIgaXMgbGF0ZXIpLgogKgogKiBBZGRpdGlvbmFsIENvbnRleHQKICogLSB3aGF0IGl0IG1lYXN1cmVzOiBUaGlzIGluZGljYXRvciBtZWFzdXJlcyBxdWFsaXR5IG9mIHByb2dyYW1tZSBmb2xsb3ctdXAgdG8gdHJhY2sgZXhwb3NlZCBpbmZhbnRzIGFuZCBhc2NlcnRhaW4gZmluYWwgSElWIHN0YXR1cy4KICogLSByYXRpb25hbGU6IOKAosKgRWZmZWN0aXZlIFBNVENUIHByb2dyYW1tZXMgbXVzdCBmb2xsb3cgSElWLWV4cG9zZWQgaW5mYW50cyB1bnRpbCB0aGUgZW5kIG9mIHRoZSBicmVhc3RmZWVkaW5nIHBlcmlvZCB0byBlbnN1cmUgdGhhdCB0aGUgZnVsbCBjYXNjYWRlIG9mIHNlcnZpY2VzIGFuZCBzdXBwb3J0IGlzIHByb3ZpZGVkIHRvIEhJVi1wb3NpdGl2ZSBtb3RoZXJzIGFuZCB0aGVpciBpbmZhbnRzLiB8IOKAosKgVGhlIGFiaWxpdHkgdG8gYXNjZXJ0YWluIGZpbmFsIG91dGNvbWUgc3RhdHVzIHRocm91Z2ggcm91dGluZSBwcm9ncmFtbWUgZGF0YSBhY3Jvc3MgbXVsdGlwbGUgcG9pbnRzIG9mIGNhcmUgaXMgYSBrZXkgY2hhbGxlbmdlLgogKiAtIG1ldGhvZDogVGhpcyBpbmRpY2F0b3IgbWVhc3VyZXMgcXVhbGl0eSBvZiBwcm9ncmFtbWUgZm9sbG93LXVwIHRvIHRyYWNrIGV4cG9zZWQgaW5mYW50cyBhbmQgYXNjZXJ0YWluIGZpbmFsIEhJViBzdGF0dXMuCiAqIAogKiBTdWdnZXN0ZWQgU2NvcmluZyBNZXRob2Q6IHByb3BvcnRpb24gfCBodHRwOi8vaGw3Lm9yZy9maGlyL3VzL2NxZm1lYXN1cmVzL1N0cnVjdHVyZURlZmluaXRpb24vcHJvcG9ydGlvbi1tZWFzdXJlLWNxZm0KICovCgpsaWJyYXJ5IEhJVklORDQyTG9naWMKCi8vIEluY2x1ZGVkIExpYnJhcmllcwp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4xJwoKaW5jbHVkZSBISVZDb21tb24gdmVyc2lvbiAnMC4wLjEnIGNhbGxlZCBISUMKaW5jbHVkZSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgV0hPQ29tbW9uIGNhbGxlZCBXQ29tCgppbmNsdWRlIEhJVkVsZW1lbnRzIGNhbGxlZCBIRQppbmNsdWRlIEhJVkluZGljYXRvckVsZW1lbnRzIGNhbGxlZCBISUUKCgovLyBJbmRpY2F0b3IgRGVmaW5pdGlvbgpwYXJhbWV0ZXIgIk1lYXN1cmVtZW50IFBlcmlvZCIgSW50ZXJ2YWw8RGF0ZT4gZGVmYXVsdCBJbnRlcnZhbFtAMjAyMy0wMS0wMSwgQDIwMjMtMDEtMzBdCgpjb250ZXh0IFBhdGllbnQKLyogUG9wdWxhdGlvbnMgKi8KCi8qCiAqSW5pdGlhbCBQb3B1bGF0aW9uCiAqLwoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24iOgogIHRydWUKCi8qKgogKiBOdW1lcmF0b3IKICogCiAqIERlZmluaXRpb246IEhJVi1leHBvc2VkIGluZmFudHMgYm9ybiB3aXRoaW4gdGhlIHBhc3QgMTIgbW9udGhzIChvciAyNCBtb250aHMgaW4gYnJlYXN0ZmVlZGluZyBzZXR0aW5ncykgd2hvIGhhdmUga25vd24gZmluYWwgSElWIG91dGNvbWUgc3RhdHVzCiAqIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBpbmZhbnRzIHdobyBhcmUgYW4gIkhJVi1leHBvc2VkIGluZmFudCBvciBjaGlsZCIgQU5EIFsod2l0aCBhbiAiSW5mYW50IGRhdGUgb2YgYmlydGgiIGluIHBhc3QgMTIgbW9udGhzKSBPUiAod2l0aCBhbiAiSW5mYW50IGRhdGUgb2YgYmlydGgiIGluIHBhc3QgMjQgbW9udGhzIElGIG1vdGhlcnMgYXJlICJCcmVhc3RmZWVkaW5nIildIEFORCAiUmVnaXN0ZXJlZCBpbiBiaXJ0aCBjb2hvcnQiPVRydWUgQU5EIHdpdGggYSAiRmluYWwgZGlhZ25vc2lzIG9mIEhJVi1leHBvc2VkIGluZmFudCIgb2YgTk9UIE5VTEwKICovCgpkZWZpbmUgIk51bWVyYXRvciI6CiAgSElFLiJpcyBISVYtZXhwb3NlZCBpbmZhbnQgb3IgY2hpbGQgRS5ERTExMiIKICBhbmQKICAoZXhpc3RzKEhJRS4iTGl2ZSBCaXJ0aCBEZWxpdmVyeSIgQiB3aGVyZSBtb250aHMgYmV0d2VlbiBlbmQgb2YgQi5lZmZlY3RpdmUudG9JbnRlcnZhbCgpIGFuZCBlbmQgb2YgICJNZWFzdXJlbWVudCBQZXJpb2QiIDwgMTIgbW9udGhzKQogIG9yIAogICgKICBleGlzdHMoSElFLiJCcmVhc3RmZWVkaW5nIEIuREUzMiIgQikgYW5kCiAgZXhpc3RzKEhJRS4iTGl2ZSBCaXJ0aCBEZWxpdmVyeSIgQiB3aGVyZSBtb250aHMgYmV0d2VlbiBlbmQgb2YgQi5lZmZlY3RpdmUudG9JbnRlcnZhbCgpIGFuZCBlbmQgb2YgICJNZWFzdXJlbWVudCBQZXJpb2QiIDwgMjQgbW9udGhzKQogICkKICApCiAgYW5kIEhJRS4iUmVnaXN0ZXJlZCBpbiBiaXJ0aCBjb2hvcnQiCiAgYW5kIEhFLiJGaW5hbCBkaWFnbm9zaXMgb2YgSElWLWV4cG9zZWQgaW5mYW50IEUuREUyMzAiIGlzIG5vdCBudWxsCgoKLyoqCiAqIERlbm9taW5hdG9yCiAqCiAqIERlZmluaXRpb246IGEpIFByb2dyYW1tZS1iYXNlZC9zZXJ2aWNlIGRlbGl2ZXJ5IGRlbm9taW5hdG9yIHwgTnVtYmVyIG9mIEhJVi1leHBvc2VkIGluZmFudHMgd2hvIHdlcmUgYm9ybiB3aXRoaW4gdGhlIDEyIG1vbnRocyAob3IgMjQgbW9udGhzIGluIGJyZWFzdGZlZWRpbmcgc2V0dGluZ3MpIHByaW9yIHRvIHRoZSByZXBvcnRpbmcgcGVyaW9kIGFuZCByZWdpc3RlcmVkIGluIHRoZSBiaXJ0aCBjb2hvcnQgfCBGb3IgZXhhbXBsZSwgZm9yIHRoZSByZXBvcnRpbmcgcGVyaW9kIEphbnVhcnkgdG8gRGVjZW1iZXIgMjAyMSB0aGUgZGVub21pbmF0b3Igd291bGQgYmUgdGhlIG51bWJlciBvZiBISVYtZXhwb3NlZCBpbmZhbnRzIGJvcm4gYmV0d2VlbiBKYW51YXJ5IHRvIERlY2VtYmVyIDIwMjAgaW4gbm9uLWJyZWFzdCBmZWVkaW5nIHNldHRpbmdzIGFuZCBKYW51YXJ5IHRvIERlY2VtYmVyIDIwMTkgaW4gYnJlYXN0ZmVlZGluZyBzZXR0aW5ncy4gfCAgfCBiKSBQb3B1bGF0aW9uLWJhc2VkIGRlbm9taW5hdG9yIHwgRXN0aW1hdGVkIG51bWJlciBvZiBISVYtcG9zaXRpdmUgd29tZW4gd2hvIGRlbGl2ZXJlZCB3aXRoaW4gdGhlIHBhc3QgMTIgbW9udGhzIHwgKG9yIDI0IG1vbnRocyBpbiBicmVhc3RmZWVkaW5nIHNldHRpbmdzKQogKiBDYWxjdWxhdGlvbjogQ09VTlQgb2YgaW5mYW50cyB3aG8gYXJlIGFuICJISVYtZXhwb3NlZCBpbmZhbnQgb3IgY2hpbGQiIEFORCBbKHdpdGggYW4gIkluZmFudCBkYXRlIG9mIGJpcnRoIiB3aXRoaW4gcGFzdCAxMiBtb250aHMpIE9SICh3aXRoIGFuICJJbmZhbnQgZGF0ZSBvZiBiaXJ0aCIgd2l0aGluIHBhc3QgMjQgbW9udGhzIElGIG1vdGhlcnMgYXJlICJCcmVhc3RmZWVkaW5nIildIEFORCAiUmVnaXN0ZXJlZCBpbiBiaXJ0aCBjb2hvcnQiPVRydWUKICovCgpkZWZpbmUgIkRlbm9taW5hdG9yIjoKICBISUUuImlzIEhJVi1leHBvc2VkIGluZmFudCBvciBjaGlsZCBFLkRFMTEyIgogIGFuZAogIChleGlzdHMoSElFLiJMaXZlIEJpcnRoIERlbGl2ZXJ5IiBCIHdoZXJlIG1vbnRocyBiZXR3ZWVuIGVuZCBvZiBCLmVmZmVjdGl2ZS50b0ludGVydmFsKCkgYW5kIGVuZCBvZiAgIk1lYXN1cmVtZW50IFBlcmlvZCIgPCAxMiBtb250aHMpCiAgb3IgCiAgKAogIGV4aXN0cyhISUUuIkJyZWFzdGZlZWRpbmcgQi5ERTMyIiBCKSBhbmQKICBleGlzdHMoSElFLiJMaXZlIEJpcnRoIERlbGl2ZXJ5IiBCIHdoZXJlIG1vbnRocyBiZXR3ZWVuIGVuZCBvZiBCLmVmZmVjdGl2ZS50b0ludGVydmFsKCkgYW5kIGVuZCBvZiAgIk1lYXN1cmVtZW50IFBlcmlvZCIgPCAyNCBtb250aHMpCiAgKQogICkKICBhbmQgSElFLiJSZWdpc3RlcmVkIGluIGJpcnRoIGNvaG9ydCIKICAgIAoKLyogZW5kIFBvcHVsYXRpb25zICovCgovKiAKICogRGlzYWdncmVnYXRvcnMKICovCiAgCmRlZmluZSAiR2VvZ3JhcGhpYyBSZWdpb24gU3RyYXRpZmllciI6CglISUUuIkJ5IEdlb2dyYXBoaWMgUmVnaW9uIFN0cmF0aWZpZXIiCgpkZWZpbmUgIkhJViBTdGF0dXMgU3RyYXRpZmllciBpbmZhbnQiOgogIEhJRS4iSElWIFN0YXR1cyBTdHJhdGlmaWVyIGluZmFudCIKCmRlZmluZSAiU3RyYXRpZmljYXRpb24iOgpISUUuIkhJViBTdGF0dXMgU3RyYXRpZmllciBpbmZhbnQiLmNvZGUKKyAnOicgKyBISUUuIkJ5IEdlb2dyYXBoaWMgUmVnaW9uIFN0cmF0aWZpZXIiCgoKCgo="
}
]
}