From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31231 invoked by alias); 29 Sep 2014 18:42:19 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 31204 invoked by uid 89); 29 Sep 2014 18:42:16 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_40,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-qa0-f49.google.com Received: from mail-qa0-f49.google.com (HELO mail-qa0-f49.google.com) (209.85.216.49) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Mon, 29 Sep 2014 18:42:09 +0000 Received: by mail-qa0-f49.google.com with SMTP id n8so9334393qaq.36 for ; Mon, 29 Sep 2014 11:42:06 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.140.97.53 with SMTP id l50mr3533396qge.97.1412016126449; Mon, 29 Sep 2014 11:42:06 -0700 (PDT) Received: by 10.229.236.2 with HTTP; Mon, 29 Sep 2014 11:42:06 -0700 (PDT) Date: Mon, 29 Sep 2014 18:42:00 -0000 Message-ID: Subject: [PATCH] Sync libiberty with gcc From: Iain Buclaw To: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=001a113a0b22a287070504389fbb X-IsSubscribed: yes X-SW-Source: 2014-09/txt/msg00848.txt.bz2 --001a113a0b22a287070504389fbb Content-Type: text/plain; charset=UTF-8 Content-length: 1958 This patch to syncs libiberty with upstream gcc. Largest change here is the addition of demangling dlang symbols, which means following this will be the removal of dlang demangling on gdb's side. -- Iain. libiberty/ 2014-09-26 Jason Merrill * cp-demangle.c (d_substitution): Handle abi tags on abbreviation. 2014-09-26 Max Ostapenko * pex-common.h (struct pex_funcs): Add new parameter for open_write field. * pex-unix.c (pex_unix_open_write): Add support for new parameter. * pex-djgpp.c (pex_djgpp_open_write): Likewise. * pex-win32.c (pex_win32_open_write): Likewise. * pex-common.c (pex_run_in_environment): Likewise. 2014-09-23 Iain Buclaw * Makefile.in (CFILES): Add d-demangle.c. (REQUIRED_OFILES): Add d-demangle.o. * cplus-dem.c (libiberty_demanglers): Add dlang_demangling case. (cplus_demangle): Likewise. * d-demangle.c: New file. * testsuite/Makefile.in (really-check): Add check-d-demangle. * testsuite/d-demangle-expected: New file. 2014-09-19 Ian Lance Taylor * simple-object-elf.c (simple_object_elf_write_ehdr): Correctly handle objects with more than SHN_LORESERVE sections. (simple_object_elf_write_shdr): Add sh_link parameter. (simple_object_elf_write_to_file): Correctly handle objects with more than SHN_LORESERVE sections. 2014-08-29 Andrew Burgess * cp-demangle.c (d_dump): Only access field from s_fixed part of the union for DEMANGLE_COMPONENT_FIXED_TYPE. (d_count_templates_scopes): Likewise. 2014-08-13 Gary Benson * testsuite/demangler-fuzzer.c: New file. * testsuite/Makefile.in (fuzz-demangler): New rule. (demangler-fuzzer): Likewise. (mostlyclean): Clean up demangler fuzzer. --- --001a113a0b22a287070504389fbb Content-Type: text/x-patch; charset=US-ASCII; name="libiberty.patch" Content-Disposition: attachment; filename="libiberty.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i0o5x5400 Content-length: 96714 IGxpYmliZXJ0eS9NYWtlZmlsZS5pbiAgICAgICAgICAgICAgICAgICB8ICAg MTIgKy0KIGxpYmliZXJ0eS9jcC1kZW1hbmdsZS5jICAgICAgICAgICAgICAg ICB8ICAgMjEgKy0KIGxpYmliZXJ0eS9jcGx1cy1kZW0uYyAgICAgICAgICAg ICAgICAgICB8ICAgMTMgKwogbGliaWJlcnR5L2QtZGVtYW5nbGUuYyAgICAg ICAgICAgICAgICAgIHwgMTMzOCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiBsaWJpYmVydHkvcGV4LWNvbW1vbi5jICAgICAgICAgICAgICAg ICAgfCAgICA4ICstCiBsaWJpYmVydHkvcGV4LWNvbW1vbi5oICAgICAgICAg ICAgICAgICAgfCAgICAyICstCiBsaWJpYmVydHkvcGV4LWRqZ3BwLmMgICAg ICAgICAgICAgICAgICAgfCAgICA2ICstCiBsaWJpYmVydHkvcGV4LXVuaXgu YyAgICAgICAgICAgICAgICAgICAgfCAgICA3ICstCiBsaWJpYmVydHkvcGV4 LXdpbjMyLmMgICAgICAgICAgICAgICAgICAgfCAgICA2ICstCiBsaWJpYmVy dHkvc2ltcGxlLW9iamVjdC1lbGYuYyAgICAgICAgICAgfCAgIDM4ICstCiBs aWJpYmVydHkvdGVzdHN1aXRlL01ha2VmaWxlLmluICAgICAgICAgfCAgIDE0 ICstCiBsaWJpYmVydHkvdGVzdHN1aXRlL2QtZGVtYW5nbGUtZXhwZWN0ZWQg fCAgOTM2ICsrKysrKysrKysrKysrKysrKysrKwogbGliaWJlcnR5L3Rlc3Rz dWl0ZS9kZW1hbmdsZS1leHBlY3RlZCAgIHwgICAgOCArCiBsaWJpYmVydHkv dGVzdHN1aXRlL2RlbWFuZ2xlci1mdXp6ZXIuYyAgfCAgMTA4ICsrKwogMTQg ZmlsZXMgY2hhbmdlZCwgMjQ5MSBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9saWJpYmVydHkvTWFrZWZpbGUuaW4gYi9s aWJpYmVydHkvTWFrZWZpbGUuaW4KaW5kZXggNDRlMzQwZi4uOWI4NzcyMCAx MDA2NDQKLS0tIGEvbGliaWJlcnR5L01ha2VmaWxlLmluCisrKyBiL2xpYmli ZXJ0eS9NYWtlZmlsZS5pbgpAQCAtMTI3LDcgKzEyNyw3IEBAIENGSUxFUyA9 IGFsbG9jYS5jIGFyZ3YuYyBhc3ByaW50Zi5jIGF0ZXhpdC5jCQkJCVwKIAli YXNlbmFtZS5jIGJjbXAuYyBiY29weS5jIGJzZWFyY2guYyBiemVyby5jCQkJ XAogCWNhbGxvYy5jIGNob29zZS10ZW1wLmMgY2xvY2suYyBjb25jYXQuYyBj cC1kZW1hbmdsZS5jCQlcCiAJIGNwLWRlbWludC5jIGNwbHVzLWRlbS5jIGNy YzMyLmMJCQkJXAotCWR3YXJmbmFtZXMuYyBkeW4tc3RyaW5nLmMJCQkJCVwK KwlkLWRlbWFuZ2xlLmMgZHdhcmZuYW1lcy5jIGR5bi1zdHJpbmcuYwkJCQlc CiAJZmRtYXRjaC5jIGZmcy5jIGZpYmhlYXAuYyBmaWxlbmFtZV9jbXAuYyBm bG9hdGZvcm1hdC5jCQlcCiAJZm5tYXRjaC5jIGZvcGVuX3VubG9ja2VkLmMJ CQkJCVwKIAlnZXRjd2QuYyBnZXRvcHQuYyBnZXRvcHQxLmMgZ2V0cGFnZXNp emUuYyBnZXRwd2QuYyBnZXRydW50aW1lLmMJXApAQCAtMTY3LDcgKzE2Nyw3 IEBAIFJFUVVJUkVEX09GSUxFUyA9CQkJCQkJCVwKIAkuL21kNS4kKG9iamV4 dCkgLi9zaGExLiQob2JqZXh0KSAuL2FsbG9jYS4kKG9iamV4dCkJCVwKIAku L2FyZ3YuJChvYmpleHQpCQkJCQkJXAogCS4vY2hvb3NlLXRlbXAuJChvYmpl eHQpIC4vY29uY2F0LiQob2JqZXh0KQkJCVwKLQkuL2NwLWRlbWludC4kKG9i amV4dCkgLi9jcmMzMi4kKG9iamV4dCkJCQkJXAorCS4vY3AtZGVtaW50LiQo b2JqZXh0KSAuL2NyYzMyLiQob2JqZXh0KSAuL2QtZGVtYW5nbGUuJChvYmpl eHQpCVwKIAkuL2R3YXJmbmFtZXMuJChvYmpleHQpIC4vZHluLXN0cmluZy4k KG9iamV4dCkJCQlcCiAJLi9mZG1hdGNoLiQob2JqZXh0KSAuL2ZpYmhlYXAu JChvYmpleHQpCQkJCVwKIAkuL2ZpbGVuYW1lX2NtcC4kKG9iamV4dCkgLi9m bG9hdGZvcm1hdC4kKG9iamV4dCkJCVwKQEAgLTcxNCw2ICs3MTQsMTQgQEAg JChDT05GSUdVUkVEX09GSUxFUyk6IHN0YW1wLXBpY2RpciBzdGFtcC1ub2Fz YW5kaXIKIAllbHNlIHRydWU7IGZpCiAJJChDT01QSUxFLmMpICQoc3JjZGly KS9keW4tc3RyaW5nLmMgJChPVVRQVVRfT1BUSU9OKQogCisuL2QtZGVtYW5n bGUuJChvYmpleHQpOiAkKHNyY2RpcikvZC1kZW1hbmdsZS5jIGNvbmZpZy5o ICQoSU5DRElSKS9hbnNpZGVjbC5oIFwKKwkkKHNyY2RpcikvY3AtZGVtYW5n bGUuaCAkKElOQ0RJUikvZGVtYW5nbGUuaCBcCisJJChJTkNESVIpL2R5bi1z dHJpbmcuaCAkKElOQ0RJUikvZ2V0b3B0LmggJChJTkNESVIpL2xpYmliZXJ0 eS5oCisJaWYgWyB4IiQoUElDRkxBRykiICE9IHggXTsgdGhlbiBcCisJICAk KENPTVBJTEUuYykgJChQSUNGTEFHKSAkKHNyY2RpcikvZC1kZW1hbmdsZS5j IC1vIHBpYy8kQDsgXAorCWVsc2UgdHJ1ZTsgZmkKKwkkKENPTVBJTEUuYykg JChzcmNkaXIpL2QtZGVtYW5nbGUuYyAkKE9VVFBVVF9PUFRJT04pCisKIC4v ZmRtYXRjaC4kKG9iamV4dCk6ICQoc3JjZGlyKS9mZG1hdGNoLmMgY29uZmln LmggJChJTkNESVIpL2Fuc2lkZWNsLmggXAogCSQoSU5DRElSKS9saWJpYmVy dHkuaAogCWlmIFsgeCIkKFBJQ0ZMQUcpIiAhPSB4IF07IHRoZW4gXApkaWZm IC0tZ2l0IGEvbGliaWJlcnR5L2NwLWRlbWFuZ2xlLmMgYi9saWJpYmVydHkv Y3AtZGVtYW5nbGUuYwppbmRleCBjMGQyZmZlLi43N2MyY2VlOSAxMDA2NDQK LS0tIGEvbGliaWJlcnR5L2NwLWRlbWFuZ2xlLmMKKysrIGIvbGliaWJlcnR5 L2NwLWRlbWFuZ2xlLmMKQEAgLTcxMyw3ICs3MTMsOSBAQCBkX2R1bXAgKHN0 cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgKmRjLCBpbnQgaW5kZW50KQogICAg ICAgcHJpbnRmICgicG9pbnRlciB0byBtZW1iZXIgdHlwZVxuIik7CiAgICAg ICBicmVhazsKICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9GSVhFRF9U WVBFOgotICAgICAgcHJpbnRmICgiZml4ZWQtcG9pbnQgdHlwZVxuIik7Cisg ICAgICBwcmludGYgKCJmaXhlZC1wb2ludCB0eXBlLCBhY2N1bT8gJWQsIHNh dD8gJWRcbiIsCisgICAgICAgICAgICAgIGRjLT51LnNfZml4ZWQuYWNjdW0s IGRjLT51LnNfZml4ZWQuc2F0KTsKKyAgICAgIGRfZHVtcCAoZGMtPnUuc19m aXhlZC5sZW5ndGgsIGluZGVudCArIDIpCiAgICAgICBicmVhazsKICAgICBj YXNlIERFTUFOR0xFX0NPTVBPTkVOVF9BUkdMSVNUOgogICAgICAgcHJpbnRm ICgiYXJndW1lbnQgbGlzdFxuIik7CkBAIC0zNjg1LDYgKzM2ODcsNyBAQCBk X3N1YnN0aXR1dGlvbiAoc3RydWN0IGRfaW5mbyAqZGksIGludCBwcmVmaXgp CiAJICAgIHsKIAkgICAgICBjb25zdCBjaGFyICpzOwogCSAgICAgIGludCBs ZW47CisJICAgICAgc3RydWN0IGRlbWFuZ2xlX2NvbXBvbmVudCAqYzsKIAog CSAgICAgIGlmIChwLT5zZXRfbGFzdF9uYW1lICE9IE5VTEwpCiAJCWRpLT5s YXN0X25hbWUgPSBkX21ha2Vfc3ViIChkaSwgcC0+c2V0X2xhc3RfbmFtZSwK QEAgLTM3MDAsNyArMzcwMywxNSBAQCBkX3N1YnN0aXR1dGlvbiAoc3RydWN0 IGRfaW5mbyAqZGksIGludCBwcmVmaXgpCiAJCSAgbGVuID0gcC0+c2ltcGxl X2xlbjsKIAkJfQogCSAgICAgIGRpLT5leHBhbnNpb24gKz0gbGVuOwotCSAg ICAgIHJldHVybiBkX21ha2Vfc3ViIChkaSwgcywgbGVuKTsKKwkgICAgICBj ID0gZF9tYWtlX3N1YiAoZGksIHMsIGxlbik7CisJICAgICAgaWYgKGRfcGVl a19jaGFyIChkaSkgPT0gJ0InKQorCQl7CisJCSAgLyogSWYgdGhlcmUgYXJl IEFCSSB0YWdzIG9uIHRoZSBhYmJyZXZpYXRpb24sIGl0IGJlY29tZXMKKwkJ ICAgICBhIHN1YnN0aXR1dGlvbiBjYW5kaWRhdGUuICAqLworCQkgIGMgPSBk X2FiaV90YWdzIChkaSwgYyk7CisJCSAgZF9hZGRfc3Vic3RpdHV0aW9uIChk aSwgYyk7CisJCX0KKwkgICAgICByZXR1cm4gYzsKIAkgICAgfQogCX0KIApA QCAtMzg3NSw3ICszODg2LDYgQEAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVz IChpbnQgKm51bV90ZW1wbGF0ZXMsIGludCAqbnVtX3Njb3BlcywKICAgICBj YXNlIERFTUFOR0xFX0NPTVBPTkVOVF9GVU5DVElPTl9UWVBFOgogICAgIGNh c2UgREVNQU5HTEVfQ09NUE9ORU5UX0FSUkFZX1RZUEU6CiAgICAgY2FzZSBE RU1BTkdMRV9DT01QT05FTlRfUFRSTUVNX1RZUEU6Ci0gICAgY2FzZSBERU1B TkdMRV9DT01QT05FTlRfRklYRURfVFlQRToKICAgICBjYXNlIERFTUFOR0xF X0NPTVBPTkVOVF9WRUNUT1JfVFlQRToKICAgICBjYXNlIERFTUFOR0xFX0NP TVBPTkVOVF9BUkdMSVNUOgogICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5U X1RFTVBMQVRFX0FSR0xJU1Q6CkBAIC0zOTIwLDYgKzM5MzAsMTEgQEAgZF9j b3VudF90ZW1wbGF0ZXNfc2NvcGVzIChpbnQgKm51bV90ZW1wbGF0ZXMsIGlu dCAqbnVtX3Njb3BlcywKIAkJCQlkYy0+dS5zX2V4dGVuZGVkX29wZXJhdG9y Lm5hbWUpOwogICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIERFTUFOR0xFX0NP TVBPTkVOVF9GSVhFRF9UWVBFOgorICAgICAgZF9jb3VudF90ZW1wbGF0ZXNf c2NvcGVzIChudW1fdGVtcGxhdGVzLCBudW1fc2NvcGVzLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkYy0+dS5zX2ZpeGVkLmxlbmd0aCk7 CisgICAgICBicmVhazsKKwogICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5U X0dMT0JBTF9DT05TVFJVQ1RPUlM6CiAgICAgY2FzZSBERU1BTkdMRV9DT01Q T05FTlRfR0xPQkFMX0RFU1RSVUNUT1JTOgogICAgICAgZF9jb3VudF90ZW1w bGF0ZXNfc2NvcGVzIChudW1fdGVtcGxhdGVzLCBudW1fc2NvcGVzLApkaWZm IC0tZ2l0IGEvbGliaWJlcnR5L2NwbHVzLWRlbS5jIGIvbGliaWJlcnR5L2Nw bHVzLWRlbS5jCmluZGV4IDUyNzY3Y2MuLmM2OGI5ODEgMTAwNjQ0Ci0tLSBh L2xpYmliZXJ0eS9jcGx1cy1kZW0uYworKysgYi9saWJpYmVydHkvY3BsdXMt ZGVtLmMKQEAgLTMwNiw2ICszMDYsMTIgQEAgY29uc3Qgc3RydWN0IGRlbWFu Z2xlcl9lbmdpbmUgbGliaWJlcnR5X2RlbWFuZ2xlcnNbXSA9CiAgIH0KICAg LAogICB7CisgICAgRExBTkdfREVNQU5HTElOR19TVFlMRV9TVFJJTkcsCisg ICAgZGxhbmdfZGVtYW5nbGluZywKKyAgICAiRExBTkcgc3R5bGUgZGVtYW5n bGluZyIKKyAgfQorICAsCisgIHsKICAgICBOVUxMLCB1bmtub3duX2RlbWFu Z2xpbmcsIE5VTEwKICAgfQogfTsKQEAgLTg3MCw2ICs4NzYsMTMgQEAgY3Bs dXNfZGVtYW5nbGUgKGNvbnN0IGNoYXIgKm1hbmdsZWQsIGludCBvcHRpb25z KQogICBpZiAoR05BVF9ERU1BTkdMSU5HKQogICAgIHJldHVybiBhZGFfZGVt YW5nbGUgKG1hbmdsZWQsIG9wdGlvbnMpOwogCisgIGlmIChETEFOR19ERU1B TkdMSU5HKQorICAgIHsKKyAgICAgIHJldCA9IGRsYW5nX2RlbWFuZ2xlICht YW5nbGVkLCBvcHRpb25zKTsKKyAgICAgIGlmIChyZXQpCisJcmV0dXJuIHJl dDsKKyAgICB9CisKICAgcmV0ID0gaW50ZXJuYWxfY3BsdXNfZGVtYW5nbGUg KHdvcmssIG1hbmdsZWQpOwogICBzcXVhbmdsZV9tb3BfdXAgKHdvcmspOwog ICByZXR1cm4gKHJldCk7CmRpZmYgLS1naXQgYS9saWJpYmVydHkvZC1kZW1h bmdsZS5jIGIvbGliaWJlcnR5L2QtZGVtYW5nbGUuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzFiZjk0Ci0tLSAvZGV2L251bGwK KysrIGIvbGliaWJlcnR5L2QtZGVtYW5nbGUuYwpAQCAtMCwwICsxLDEzMzgg QEAKKy8qIERlbWFuZ2xlciBmb3IgdGhlIEQgcHJvZ3JhbW1pbmcgbGFuZ3Vh Z2UKKyAgIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorICAgV3JpdHRlbiBieSBJYWluIEJ1Y2xhdyAoaWJ1Y2xhd0Bn ZGNwcm9qZWN0Lm9yZykKKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGxp YmliZXJ0eSBsaWJyYXJ5LgorTGliaWJlcnR5IGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs aWMKK0xpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlcgordmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCitJ biBhZGRpdGlvbiB0byB0aGUgcGVybWlzc2lvbnMgaW4gdGhlIEdOVSBMaWJy YXJ5IEdlbmVyYWwgUHVibGljCitMaWNlbnNlLCB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uIGdpdmVzIHlvdSB1bmxpbWl0ZWQgcGVybWlzc2lvbgor dG8gbGluayB0aGUgY29tcGlsZWQgdmVyc2lvbiBvZiB0aGlzIGZpbGUgaW50 byBjb21iaW5hdGlvbnMgd2l0aCBvdGhlcgorcHJvZ3JhbXMsIGFuZCB0byBk aXN0cmlidXRlIHRob3NlIGNvbWJpbmF0aW9ucyB3aXRob3V0IGFueSByZXN0 cmljdGlvbgorY29taW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIGZpbGUuICAo VGhlIExpYnJhcnkgUHVibGljIExpY2Vuc2UKK3Jlc3RyaWN0aW9ucyBkbyBh cHBseSBpbiBvdGhlciByZXNwZWN0czsgZm9yIGV4YW1wbGUsIHRoZXkgY292 ZXIKK21vZGlmaWNhdGlvbiBvZiB0aGUgZmlsZSwgYW5kIGRpc3RyaWJ1dGlv biB3aGVuIG5vdCBsaW5rZWQgaW50byBhCitjb21iaW5lZCBleGVjdXRhYmxl LikKKworTGliaWJlcnR5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCitidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUKK0xpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCitZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp YworTGljZW5zZSBhbG9uZyB3aXRoIGxpYmliZXJ0eTsgc2VlIHRoZSBmaWxl IENPUFlJTkcuTElCLgorSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LiAgKi8KKworLyogVGhpcyBmaWxlIGV4cG9ydHMgb25l IGZ1bmN0aW9uOyBkbGFuZ19kZW1hbmdsZS4KKworICAgVGhpcyBmaWxlIGlt cG9ydHMgc3RydG9sIGFuZCBzdHJ0b2xkIGZvciBkZWNvZGluZyBtYW5nbGVk IGxpdGVyYWxzLiAgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNs dWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAic2FmZS1jdHlw ZS5oIgorCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3Ry aW5nLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2lmZGVmIEhBVkVfU1RE TElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbHNlCitleHRlcm4gbG9u ZyBzdHJ0b2wgKGNvbnN0IGNoYXIgKm5wdHIsIGNoYXIgKiplbmRwdHIsIGlu dCBiYXNlKTsKK2V4dGVybiBsb25nIGRvdWJsZSBzdHJ0b2xkIChjb25zdCBj aGFyICpucHRyLCBjaGFyICoqZW5kcHRyKTsKKyNlbmRpZgorCisjaW5jbHVk ZSA8ZGVtYW5nbGUuaD4KKyNpbmNsdWRlICJsaWJpYmVydHkuaCIKKworLyog QSBtaW5pIHN0cmluZy1oYW5kbGluZyBwYWNrYWdlICovCisKK3R5cGVkZWYg c3RydWN0IHN0cmluZwkJLyogQmV3YXJlOiB0aGVzZSBhcmVuJ3QgcmVxdWly ZWQgdG8gYmUgKi8KK3sJCQkJLyogICdcMCcgdGVybWluYXRlZC4gICovCisg IGNoYXIgKmI7CQkJLyogcG9pbnRlciB0byBzdGFydCBvZiBzdHJpbmcgKi8K KyAgY2hhciAqcDsJCQkvKiBwb2ludGVyIGFmdGVyIGxhc3QgY2hhcmFjdGVy ICovCisgIGNoYXIgKmU7CQkJLyogcG9pbnRlciBhZnRlciBlbmQgb2YgYWxs b2NhdGVkIHNwYWNlICovCit9IHN0cmluZzsKKworc3RhdGljIHZvaWQKK3N0 cmluZ19uZWVkIChzdHJpbmcgKnMsIGludCBuKQoreworICBpbnQgdGVtOwor CisgIGlmIChzLT5iID09IE5VTEwpCisgICAgeworICAgICAgaWYgKG4gPCAz MikKKwl7CisJICBuID0gMzI7CisJfQorICAgICAgcy0+cCA9IHMtPmIgPSBY TkVXVkVDIChjaGFyLCBuKTsKKyAgICAgIHMtPmUgPSBzLT5iICsgbjsKKyAg ICB9CisgIGVsc2UgaWYgKHMtPmUgLSBzLT5wIDwgbikKKyAgICB7CisgICAg ICB0ZW0gPSBzLT5wIC0gcy0+YjsKKyAgICAgIG4gKz0gdGVtOworICAgICAg biAqPSAyOworICAgICAgcy0+YiA9IFhSRVNJWkVWRUMgKGNoYXIsIHMtPmIs IG4pOworICAgICAgcy0+cCA9IHMtPmIgKyB0ZW07CisgICAgICBzLT5lID0g cy0+YiArIG47CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorc3RyaW5nX2Rl bGV0ZSAoc3RyaW5nICpzKQoreworICBpZiAocy0+YiAhPSBOVUxMKQorICAg IHsKKyAgICAgIFhERUxFVEVWRUMgKHMtPmIpOworICAgICAgcy0+YiA9IHMt PmUgPSBzLT5wID0gTlVMTDsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitz dHJpbmdfaW5pdCAoc3RyaW5nICpzKQoreworICBzLT5iID0gcy0+cCA9IHMt PmUgPSBOVUxMOworfQorCitzdGF0aWMgaW50CitzdHJpbmdfbGVuZ3RoIChz dHJpbmcgKnMpCit7CisgIGlmIChzLT5wID09IHMtPmIpCisgICAgeworICAg ICAgcmV0dXJuIDA7CisgICAgfQorICByZXR1cm4gcy0+cCAtIHMtPmI7Cit9 CisKK3N0YXRpYyB2b2lkCitzdHJpbmdfc2V0bGVuZ3RoIChzdHJpbmcgKnMs IGludCBuKQoreworICBpZiAobiAtIHN0cmluZ19sZW5ndGggKHMpIDwgMCkK KyAgICB7CisgICAgICBzLT5wID0gcy0+YiArIG47CisgICAgfQorfQorCitz dGF0aWMgdm9pZAorc3RyaW5nX2FwcGVuZCAoc3RyaW5nICpwLCBjb25zdCBj aGFyICpzKQoreworICBpbnQgbiA9IHN0cmxlbiAocyk7CisgIHN0cmluZ19u ZWVkIChwLCBuKTsKKyAgbWVtY3B5IChwLT5wLCBzLCBuKTsKKyAgcC0+cCAr PSBuOworfQorCitzdGF0aWMgdm9pZAorc3RyaW5nX2FwcGVuZG4gKHN0cmlu ZyAqcCwgY29uc3QgY2hhciAqcywgaW50IG4pCit7CisgIGlmIChuICE9IDAp CisgICAgeworICAgICAgc3RyaW5nX25lZWQgKHAsIG4pOworICAgICAgbWVt Y3B5IChwLT5wLCBzLCBuKTsKKyAgICAgIHAtPnAgKz0gbjsKKyAgICB9Cit9 CisKK3N0YXRpYyB2b2lkCitzdHJpbmdfcHJlcGVuZG4gKHN0cmluZyAqcCwg Y29uc3QgY2hhciAqcywgaW50IG4pCit7CisgIGNoYXIgKnE7CisKKyAgaWYg KG4gIT0gMCkKKyAgICB7CisgICAgICBzdHJpbmdfbmVlZCAocCwgbik7Cisg ICAgICBmb3IgKHEgPSBwLT5wIC0gMTsgcSA+PSBwLT5iOyBxLS0pCisJewor CSAgcVtuXSA9IHFbMF07CisJfQorICAgICAgbWVtY3B5IChwLT5iLCBzLCBu KTsKKyAgICAgIHAtPnAgKz0gbjsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lk CitzdHJpbmdfcHJlcGVuZCAoc3RyaW5nICpwLCBjb25zdCBjaGFyICpzKQor eworICBpZiAocyAhPSBOVUxMICYmICpzICE9ICdcMCcpCisgICAgeworICAg ICAgc3RyaW5nX3ByZXBlbmRuIChwLCBzLCBzdHJsZW4gKHMpKTsKKyAgICB9 Cit9CisKKy8qIFByb3RvdHlwZXMgZm9yIGZvcndhcmQgcmVmZXJlbmNlZCBm dW5jdGlvbnMgKi8KK3N0YXRpYyBjb25zdCBjaGFyICpkbGFuZ19mdW5jdGlv bl9hcmdzIChzdHJpbmcgKiwgY29uc3QgY2hhciAqKTsKKworc3RhdGljIGNv bnN0IGNoYXIgKmRsYW5nX3R5cGUgKHN0cmluZyAqLCBjb25zdCBjaGFyICop OworCitzdGF0aWMgY29uc3QgY2hhciAqZGxhbmdfdmFsdWUgKHN0cmluZyAq LCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY2hhcik7CisKK3N0YXRp YyBjb25zdCBjaGFyICpkbGFuZ19wYXJzZV9zeW1ib2wgKHN0cmluZyAqLCBj b25zdCBjaGFyICopOworCitzdGF0aWMgY29uc3QgY2hhciAqZGxhbmdfcGFy c2VfdHVwbGUgKHN0cmluZyAqLCBjb25zdCBjaGFyICopOworCitzdGF0aWMg Y29uc3QgY2hhciAqZGxhbmdfcGFyc2VfdGVtcGxhdGUgKHN0cmluZyAqLCBj b25zdCBjaGFyICosIGxvbmcpOworCisKKy8qIERlbWFuZ2xlIHRoZSBjYWxs aW5nIGNvbnZlbnRpb24gZnJvbSBNQU5HTEVEIGFuZCBhcHBlbmQgaXQgdG8g REVDTC4KKyAgIFJldHVybiB0aGUgcmVtYWluaW5nIHN0cmluZyBvbiBzdWNj ZXNzIG9yIE5VTEwgb24gZmFpbHVyZS4gICovCitzdGF0aWMgY29uc3QgY2hh ciAqCitkbGFuZ19jYWxsX2NvbnZlbnRpb24gKHN0cmluZyAqZGVjbCwgY29u c3QgY2hhciAqbWFuZ2xlZCkKK3sKKyAgaWYgKG1hbmdsZWQgPT0gTlVMTCB8 fCAqbWFuZ2xlZCA9PSAnXDAnKQorICAgIHJldHVybiBtYW5nbGVkOworCisg IHN3aXRjaCAoKm1hbmdsZWQpCisgICAgeworICAgIGNhc2UgJ0YnOiAvKiAo RCkgKi8KKyAgICAgIG1hbmdsZWQrKzsKKyAgICAgIGJyZWFrOworICAgIGNh c2UgJ1UnOiAvKiAoQykgKi8KKyAgICAgIG1hbmdsZWQrKzsKKyAgICAgIHN0 cmluZ19hcHBlbmQgKGRlY2wsICJleHRlcm4oQykgIik7CisgICAgICBicmVh azsKKyAgICBjYXNlICdXJzogLyogKFdpbmRvd3MpICovCisgICAgICBtYW5n bGVkKys7CisgICAgICBzdHJpbmdfYXBwZW5kIChkZWNsLCAiZXh0ZXJuKFdp bmRvd3MpICIpOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnVic6IC8qIChQ YXNjYWwpICovCisgICAgICBtYW5nbGVkKys7CisgICAgICBzdHJpbmdfYXBw ZW5kIChkZWNsLCAiZXh0ZXJuKFBhc2NhbCkgIik7CisgICAgICBicmVhazsK KyAgICBjYXNlICdSJzogLyogKEMrKykgKi8KKyAgICAgIG1hbmdsZWQrKzsK KyAgICAgIHN0cmluZ19hcHBlbmQgKGRlY2wsICJleHRlcm4oQysrKSAiKTsK KyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gTlVM TDsKKyAgICB9CisKKyAgcmV0dXJuIG1hbmdsZWQ7Cit9CisKKy8qIERlbWFu Z2xlIHRoZSBEIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgZnJvbSBNQU5HTEVEIGFu ZCBhcHBlbmQgaXQgdG8gREVDTC4KKyAgIFJldHVybiB0aGUgcmVtYWluaW5n IHN0cmluZyBvbiBzdWNjZXNzIG9yIE5VTEwgb24gZmFpbHVyZS4gICovCitz dGF0aWMgY29uc3QgY2hhciAqCitkbGFuZ19hdHRyaWJ1dGVzIChzdHJpbmcg KmRlY2wsIGNvbnN0IGNoYXIgKm1hbmdsZWQpCit7CisgIGlmIChtYW5nbGVk ID09IE5VTEwgfHwgKm1hbmdsZWQgPT0gJ1wwJykKKyAgICByZXR1cm4gbWFu Z2xlZDsKKworICB3aGlsZSAoKm1hbmdsZWQgPT0gJ04nKQorICAgIHsKKyAg ICAgIG1hbmdsZWQrKzsKKyAgICAgIHN3aXRjaCAoKm1hbmdsZWQpCisJewor CWNhc2UgJ2EnOiAvKiBwdXJlICovCisJICBtYW5nbGVkKys7CisJICBzdHJp bmdfYXBwZW5kIChkZWNsLCAicHVyZSAiKTsKKwkgIGNvbnRpbnVlOworCWNh c2UgJ2InOiAvKiBub3Rocm93ICovCisJICBtYW5nbGVkKys7CisJICBzdHJp bmdfYXBwZW5kIChkZWNsLCAibm90aHJvdyAiKTsKKwkgIGNvbnRpbnVlOwor CWNhc2UgJ2MnOiAvKiByZWYgKi8KKwkgIG1hbmdsZWQrKzsKKwkgIHN0cmlu Z19hcHBlbmQgKGRlY2wsICJyZWYgIik7CisJICBjb250aW51ZTsKKwljYXNl ICdkJzogLyogQHByb3BlcnR5ICovCisJICBtYW5nbGVkKys7CisJICBzdHJp bmdfYXBwZW5kIChkZWNsLCAiQHByb3BlcnR5ICIpOworCSAgY29udGludWU7 CisJY2FzZSAnZSc6IC8qIEB0cnVzdGVkICovCisJICBtYW5nbGVkKys7CisJ ICBzdHJpbmdfYXBwZW5kIChkZWNsLCAiQHRydXN0ZWQgIik7CisJICBjb250 aW51ZTsKKwljYXNlICdmJzogLyogQHNhZmUgKi8KKwkgIG1hbmdsZWQrKzsK KwkgIHN0cmluZ19hcHBlbmQgKGRlY2wsICJAc2FmZSAiKTsKKwkgIGNvbnRp bnVlOworCWNhc2UgJ2cnOgorCWNhc2UgJ2gnOgorCSAgLyogaW5vdXQgcGFy YW1ldGVyIGlzIHJlcHJlc2VudGVkIGFzICdOZycuCisJICAgICB2ZWN0b3Ig cGFyYW1ldGVyIGlzIHJlcHJlc2VudGVkIGFzICdOaCcuCisJICAgICBJZiB3 ZSBzZWUgdGhpcywgdGhlbiB3ZSBrbm93IHdlJ3JlIHJlYWxseSBpbiB0aGUK KwkgICAgIHBhcmFtZXRlciBsaXN0LiAgUmV3aW5kIGFuZCBicmVhay4gICov CisJICBtYW5nbGVkLS07CisJICBicmVhazsKKwljYXNlICdpJzogLyogQG5v Z2MgKi8KKwkgIG1hbmdsZWQrKzsKKwkgIHN0cmluZ19hcHBlbmQgKGRlY2ws ICJAbm9nYyAiKTsKKwkgIGNvbnRpbnVlOworCX0KKyAgICAgIGJyZWFrOwor ICAgIH0KKworICByZXR1cm4gbWFuZ2xlZDsKK30KKworLyogRGVtYW5nbGUg dGhlIGZ1bmN0aW9uIHR5cGUgZnJvbSBNQU5HTEVEIGFuZCBhcHBlbmQgaXQg dG8gREVDTC4KKyAgIFJldHVybiB0aGUgcmVtYWluaW5nIHN0cmluZyBvbiBz dWNjZXNzIG9yIE5VTEwgb24gZmFpbHVyZS4gICovCitzdGF0aWMgY29uc3Qg Y2hhciAqCitkbGFuZ19mdW5jdGlvbl90eXBlIChzdHJpbmcgKmRlY2wsIGNv bnN0IGNoYXIgKm1hbmdsZWQpCit7CisgIHN0cmluZyBhdHRyLCBhcmdzLCB0 eXBlOworICBzaXplX3Qgc3phdHRyLCBzemFyZ3MsIHN6dHlwZTsKKworICBp ZiAobWFuZ2xlZCA9PSBOVUxMIHx8ICptYW5nbGVkID09ICdcMCcpCisgICAg cmV0dXJuIG1hbmdsZWQ7CisKKyAgLyogVGhlIG9yZGVyIG9mIHRoZSBtYW5n bGVkIHN0cmluZyBpczoKKwlDYWxsQ29udmVudGlvbiBGdW5jQXR0cnMgQXJn dW1lbnRzIEFyZ0Nsb3NlIFR5cGUKKworICAgICBUaGUgZGVtYW5nbGVkIHN0 cmluZyBpcyByZS1vcmRlcmVkIGFzOgorCUNhbGxDb252ZW50aW9uIFR5cGUg QXJndW1lbnRzIEZ1bmNBdHRycworICAgKi8KKyAgc3RyaW5nX2luaXQgKCZh dHRyKTsKKyAgc3RyaW5nX2luaXQgKCZhcmdzKTsKKyAgc3RyaW5nX2luaXQg KCZ0eXBlKTsKKworICAvKiBGdW5jdGlvbiBjYWxsIGNvbnZlbnRpb24uICAq LworICBtYW5nbGVkID0gZGxhbmdfY2FsbF9jb252ZW50aW9uIChkZWNsLCBt YW5nbGVkKTsKKworICAvKiBGdW5jdGlvbiBhdHRyaWJ1dGVzLiAgKi8KKyAg bWFuZ2xlZCA9IGRsYW5nX2F0dHJpYnV0ZXMgKCZhdHRyLCBtYW5nbGVkKTsK KyAgc3phdHRyID0gc3RyaW5nX2xlbmd0aCAoJmF0dHIpOworCisgIC8qIEZ1 bmN0aW9uIGFyZ3VtZW50cy4gICovCisgIG1hbmdsZWQgPSBkbGFuZ19mdW5j dGlvbl9hcmdzICgmYXJncywgbWFuZ2xlZCk7CisgIHN6YXJncyA9IHN0cmlu Z19sZW5ndGggKCZhcmdzKTsKKworICAvKiBGdW5jdGlvbiByZXR1cm4gdHlw ZS4gICovCisgIG1hbmdsZWQgPSBkbGFuZ190eXBlICgmdHlwZSwgbWFuZ2xl ZCk7CisgIHN6dHlwZSA9IHN0cmluZ19sZW5ndGggKCZ0eXBlKTsKKworICAv KiBBcHBlbmQgdG8gZGVjbCBpbiBvcmRlci4gKi8KKyAgc3RyaW5nX2FwcGVu ZG4gKGRlY2wsIHR5cGUuYiwgc3p0eXBlKTsKKyAgc3RyaW5nX2FwcGVuZCAo ZGVjbCwgIigiKTsKKyAgc3RyaW5nX2FwcGVuZG4gKGRlY2wsIGFyZ3MuYiwg c3phcmdzKTsKKyAgc3RyaW5nX2FwcGVuZCAoZGVjbCwgIikgIik7CisgIHN0 cmluZ19hcHBlbmRuIChkZWNsLCBhdHRyLmIsIHN6YXR0cik7CisKKyAgc3Ry aW5nX2RlbGV0ZSAoJmF0dHIpOworICBzdHJpbmdfZGVsZXRlICgmYXJncyk7 CisgIHN0cmluZ19kZWxldGUgKCZ0eXBlKTsKKyAgcmV0dXJuIG1hbmdsZWQ7 Cit9CisKKy8qIERlbWFuZ2xlIHRoZSBhcmd1bWVudCBsaXN0IGZyb20gTUFO R0xFRCBhbmQgYXBwZW5kIGl0IHRvIERFQ0wuCisgICBSZXR1cm4gdGhlIHJl bWFpbmluZyBzdHJpbmcgb24gc3VjY2VzcyBvciBOVUxMIG9uIGZhaWx1cmUu ICAqLworc3RhdGljIGNvbnN0IGNoYXIgKgorZGxhbmdfZnVuY3Rpb25fYXJn cyAoc3RyaW5nICpkZWNsLCBjb25zdCBjaGFyICptYW5nbGVkKQoreworICBz aXplX3QgbiA9IDA7CisKKyAgd2hpbGUgKG1hbmdsZWQgJiYgKm1hbmdsZWQg IT0gJ1wwJykKKyAgICB7CisgICAgICBzd2l0Y2ggKCptYW5nbGVkKQorCXsK KwljYXNlICdYJzogLyogKHZhcmlhZGljIFQgdC4uLikgc3R5bGUuICAqLwor CSAgbWFuZ2xlZCsrOworCSAgc3RyaW5nX2FwcGVuZCAoZGVjbCwgIi4uLiIp OworCSAgcmV0dXJuIG1hbmdsZWQ7CisJY2FzZSAnWSc6IC8qICh2YXJpYWRp YyBUIHQsIC4uLikgc3R5bGUuICAqLworCSAgbWFuZ2xlZCsrOworCSAgc3Ry aW5nX2FwcGVuZCAoZGVjbCwgIiwgLi4uIik7CisJICByZXR1cm4gbWFuZ2xl ZDsKKwljYXNlICdaJzogLyogTm9ybWFsIGZ1bmN0aW9uLiAgKi8KKwkgIG1h bmdsZWQrKzsKKwkgIHJldHVybiBtYW5nbGVkOworCX0KKworICAgICAgaWYg KG4rKykKKwlzdHJpbmdfYXBwZW5kIChkZWNsLCAiLCAiKTsKKworICAgICAg aWYgKCptYW5nbGVkID09ICdNJykgLyogc2NvcGUoVCkgKi8KKwl7CisJICBt YW5nbGVkKys7CisJICBzdHJpbmdfYXBwZW5kIChkZWNsLCAic2NvcGUgIik7 CisJfQorCisgICAgICBzd2l0Y2ggKCptYW5nbGVkKQorCXsKKwljYXNlICdK JzogLyogb3V0KFQpICovCisJICBtYW5nbGVkKys7CisJICBzdHJpbmdfYXBw ZW5kIChkZWNsLCAib3V0ICIpOworCSAgYnJlYWs7CisJY2FzZSAnSyc6IC8q IHJlZihUKSAqLworCSAgbWFuZ2xlZCsrOworCSAgc3RyaW5nX2FwcGVuZCAo ZGVjbCwgInJlZiAiKTsKKwkgIGJyZWFrOworCWNhc2UgJ0wnOiAvKiBsYXp5 KFQpICovCisJICBtYW5nbGVkKys7CisJICBzdHJpbmdfYXBwZW5kIChkZWNs LCAibGF6eSAiKTsKKwkgIGJyZWFrOworCX0KKyAgICAgIG1hbmdsZWQgPSBk bGFuZ190eXBlIChkZWNsLCBtYW5nbGVkKTsKKyAgICB9CisKKyAgcmV0dXJu IG1hbmdsZWQ7Cit9CisKKy8qIERlbWFuZ2xlIHRoZSB0eXBlIGZyb20gTUFO R0xFRCBhbmQgYXBwZW5kIGl0IHRvIERFQ0wuCisgICBSZXR1cm4gdGhlIHJl bWFpbmluZyBzdHJpbmcgb24gc3VjY2VzcyBvciBOVUxMIG9uIGZhaWx1cmUu ICAqLworc3RhdGljIGNvbnN0IGNoYXIgKgorZGxhbmdfdHlwZSAoc3RyaW5n ICpkZWNsLCBjb25zdCBjaGFyICptYW5nbGVkKQoreworICBpZiAobWFuZ2xl ZCA9PSBOVUxMIHx8ICptYW5nbGVkID09ICdcMCcpCisgICAgcmV0dXJuIG1h bmdsZWQ7CisKKyAgc3dpdGNoICgqbWFuZ2xlZCkKKyAgICB7CisgICAgY2Fz ZSAnTyc6IC8qIHNoYXJlZChUKSAqLworICAgICAgbWFuZ2xlZCsrOworICAg ICAgc3RyaW5nX2FwcGVuZCAoZGVjbCwgInNoYXJlZCgiKTsKKyAgICAgIG1h bmdsZWQgPSBkbGFuZ190eXBlIChkZWNsLCBtYW5nbGVkKTsKKyAgICAgIHN0 cmluZ19hcHBlbmQgKGRlY2wsICIpIik7CisgICAgICByZXR1cm4gbWFuZ2xl ZDsKKyAgICBjYXNlICd4JzogLyogY29uc3QoVCkgKi8KKyAgICAgIG1hbmds ZWQrKzsKKyAgICAgIHN0cmluZ19hcHBlbmQgKGRlY2wsICJjb25zdCgiKTsK KyAgICAgIG1hbmdsZWQgPSBkbGFuZ190eXBlIChkZWNsLCBtYW5nbGVkKTsK KyAgICAgIHN0cmluZ19hcHBlbmQgKGRlY2wsICIpIik7CisgICAgICByZXR1 cm4gbWFuZ2xlZDsKKyAgICBjYXNlICd5JzogLyogaW1tdXRhYmxlKFQpICov CisgICAgICBtYW5nbGVkKys7CisgICAgICBzdHJpbmdfYXBwZW5kIChkZWNs LCAiaW1tdXRhYmxlKCIpOworICAgICAgbWFuZ2xlZCA9IGRsYW5nX3R5cGUg KGRlY2wsIG1hbmdsZWQpOworICAgICAgc3RyaW5nX2FwcGVuZCAoZGVjbCwg IikiKTsKKyAgICAgIHJldHVybiBtYW5nbGVkOworICAgIGNhc2UgJ04nOgor ICAgICAgbWFuZ2xlZCsrOworICAgICAgaWYgKCptYW5nbGVkID09ICdnJykg Lyogd2lsZChUKSAqLworCXsKKwkgIG1hbmdsZWQrKzsKKwkgIHN0cmluZ19h cHBlbmQgKGRlY2wsICJpbm91dCgiKTsKKwkgIG1hbmdsZWQgPSBkbGFuZ190 eXBlIChkZWNsLCBtYW5nbGVkKTsKKwkgIHN0cmluZ19hcHBlbmQgKGRlY2ws ICIpIik7CisJICByZXR1cm4gbWFuZ2xlZDsKKwl9CisgICAgICBlbHNlIGlm ICgqbWFuZ2xlZCA9PSAnaCcpIC8qIHZlY3RvcihUKSAqLworCXsKKwkgIG1h bmdsZWQrKzsKKwkgIHN0cmluZ19hcHBlbmQgKGRlY2wsICJfX3ZlY3Rvcigi KTsKKwkgIG1hbmdsZWQgPSBkbGFuZ190eXBlIChkZWNsLCBtYW5nbGVkKTsK KwkgIHN0cmluZ19hcHBlbmQgKGRlY2wsICIpIik7CisJICByZXR1cm4gbWFu Z2xlZDsKKwl9CisgICAgICBlbHNlCisJcmV0dXJuIE5VTEw7CisgICAgY2Fz ZSAnQSc6IC8qIGR5bmFtaWMgYXJyYXkgKFRbXSkgKi8KKyAgICAgIG1hbmds ZWQrKzsKKyAgICAgIG1hbmdsZWQgPSBkbGFuZ190eXBlIChkZWNsLCBtYW5n bGVkKTsKKyAgICAgIHN0cmluZ19hcHBlbmQgKGRlY2wsICJbXSIpOworICAg ICAgcmV0dXJuIG1hbmdsZWQ7CisgICAgY2FzZSAnRyc6IC8qIHN0YXRpYyBh cnJheSAoVFtOXSkgKi8KKyAgICB7CisgICAgICBjb25zdCBjaGFyICpudW1w dHI7CisgICAgICBzaXplX3QgbnVtID0gMDsKKyAgICAgIG1hbmdsZWQrKzsK KworICAgICAgbnVtcHRyID0gbWFuZ2xlZDsKKyAgICAgIHdoaWxlIChJU0RJ R0lUICgqbWFuZ2xlZCkpCisJeworCSAgbnVtKys7CisJICBtYW5nbGVkKys7 CisJfQorICAgICAgbWFuZ2xlZCA9IGRsYW5nX3R5cGUgKGRlY2wsIG1hbmds ZWQpOworICAgICAgc3RyaW5nX2FwcGVuZCAoZGVjbCwgIlsiKTsKKyAgICAg IHN0cmluZ19hcHBlbmRuIChkZWNsLCBudW1wdHIsIG51bSk7CisgICAgICBz dHJpbmdfYXBwZW5kIChkZWNsLCAiXSIpOworICAgICAgcmV0dXJuIG1hbmds ZWQ7CisgICAgfQorICAgIGNhc2UgJ0gnOiAvKiBhc3NvY2lhdGl2ZSBhcnJh eSAoVFtUXSkgKi8KKyAgICB7CisgICAgICBzdHJpbmcgdHlwZTsKKyAgICAg IHNpemVfdCBzenR5cGU7CisgICAgICBtYW5nbGVkKys7CisKKyAgICAgIHN0 cmluZ19pbml0ICgmdHlwZSk7CisgICAgICBtYW5nbGVkID0gZGxhbmdfdHlw ZSAoJnR5cGUsIG1hbmdsZWQpOworICAgICAgc3p0eXBlID0gc3RyaW5nX2xl bmd0aCAoJnR5cGUpOworCisgICAgICBtYW5nbGVkID0gZGxhbmdfdHlwZSAo ZGVjbCwgbWFuZ2xlZCk7CisgICAgICBzdHJpbmdfYXBwZW5kIChkZWNsLCAi WyIpOworICAgICAgc3RyaW5nX2FwcGVuZG4gKGRlY2wsIHR5cGUuYiwgc3p0 eXBlKTsKKyAgICAgIHN0cmluZ19hcHBlbmQgKGRlY2wsICJdIik7CisKKyAg ICAgIHN0cmluZ19kZWxldGUgKCZ0eXBlKTsKKyAgICAgIHJldHVybiBtYW5n bGVkOworICAgIH0KKyAgICBjYXNlICdQJzogLyogcG9pbnRlciAoVCopICov CisgICAgICBtYW5nbGVkKys7CisgICAgICBtYW5nbGVkID0gZGxhbmdfdHlw ZSAoZGVjbCwgbWFuZ2xlZCk7CisgICAgICBzdHJpbmdfYXBwZW5kIChkZWNs LCAiKiIpOworICAgICAgcmV0dXJuIG1hbmdsZWQ7CisgICAgY2FzZSAnSSc6 IC8qIGlkZW50IFQgKi8KKyAgICBjYXNlICdDJzogLyogY2xhc3MgVCAqLwor ICAgIGNhc2UgJ1MnOiAvKiBzdHJ1Y3QgVCAqLworICAgIGNhc2UgJ0UnOiAv KiBlbnVtIFQgKi8KKyAgICBjYXNlICdUJzogLyogdHlwZWRlZiBUICovCisg ICAgICBtYW5nbGVkKys7CisgICAgICByZXR1cm4gZGxhbmdfcGFyc2Vfc3lt Ym9sIChkZWNsLCBtYW5nbGVkKTsKKyAgICBjYXNlICdEJzogLyogZGVsZWdh dGUgVCAqLworICAgICAgbWFuZ2xlZCsrOworICAgICAgbWFuZ2xlZCA9IGRs YW5nX2Z1bmN0aW9uX3R5cGUgKGRlY2wsIG1hbmdsZWQpOworICAgICAgc3Ry aW5nX2FwcGVuZCAoZGVjbCwgImRlbGVnYXRlIik7CisgICAgICByZXR1cm4g bWFuZ2xlZDsKKyAgICBjYXNlICdCJzogLyogdHVwbGUgVCAqLworICAgICAg bWFuZ2xlZCsrOworICAgICAgcmV0dXJuIGRsYW5nX3BhcnNlX3R1cGxlIChk ZWNsLCBtYW5nbGVkKTsKKworICAgIC8qIEZ1bmN0aW9uIHR5cGVzICovCisg ICAgY2FzZSAnRic6IGNhc2UgJ1UnOiBjYXNlICdXJzoKKyAgICBjYXNlICdW JzogY2FzZSAnUic6CisgICAgICBtYW5nbGVkID0gZGxhbmdfZnVuY3Rpb25f dHlwZSAoZGVjbCwgbWFuZ2xlZCk7CisgICAgICBzdHJpbmdfYXBwZW5kIChk ZWNsLCAiZnVuY3Rpb24iKTsKKyAgICAgIHJldHVybiBtYW5nbGVkOworCisg ICAgLyogQmFzaWMgdHlwZXMgKi8KKyAgICBjYXNlICduJzoKKyAgICAgIG1h bmdsZWQrKzsKKyAgICAgIHN0cmluZ19hcHBlbmQgKGRlY2wsICJub25lIik7 CisgICAgICByZXR1cm4gbWFuZ2xlZDsKKyAgICBjYXNlICd2JzoKKyAgICAg IG1hbmdsZWQrKzsKKyAgICAgIHN0cmluZ19hcHBlbmQgKGRlY2wsICJ2b2lk Iik7CisgICAgICByZXR1cm4gbWFuZ2xlZDsKKyAgICBjYXNlICdnJzoKKyAg ICAgIG1hbmdsZWQrKzsKKyAgICAgIHN0cmluZ19hcHBlbmQgKGRlY2wsICJi eXRlIik7CisgICAgICByZXR1cm4gbWFuZ2xlZDsKKyAgICBjYXNlICdoJzoK KyAgICAgIG1hbmdsZWQrKzsKKyAgICAgIHN0cmluZ19hcHBlbmQgKGRlY2ws ICJ1Ynl0ZSIpOworICAgICAgcmV0dXJuIG1hbmdsZWQ7CisgICAgY2FzZSAn cyc6CisgICAgICBtYW5nbGVkKys7CisgICAgICBzdHJpbmdfYXBwZW5kIChk ZWNsLCAic2hvcnQiKTsKKyAgICAgIHJldHVybiBtYW5nbGVkOworICAgIGNh c2UgJ3QnOgorICAgICAgbWFuZ2xlZCsrOworICAgICAgc3RyaW5nX2FwcGVu ZCAoZGVjbCwgInVzaG9ydCIpOworICAgICAgcmV0dXJuIG1hbmdsZWQ7Cisg ICAgY2FzZSAnaSc6CisgICAgICBtYW5nbGVkKys7CisgICAgICBzdHJpbmdf YXBwZW5kIChkZWNsLCAiaW50Iik7CisgICAgICByZXR1cm4gbWFuZ2xlZDsK KyAgICBjYXNlICdrJzoKKyAgICAgIG1hbmdsZWQrKzsKKyAgICAgIHN0cmlu Z19hcHBlbmQgKGRlY2wsICJ1aW50Iik7CisgICAgICByZXR1cm4gbWFuZ2xl ZDsKKyAgICBjYXNlICdsJzoKKyAgICAgIG1hbmdsZWQrKzsKKyAgICAgIHN0 cmluZ19hcHBlbmQgKGRlY2wsICJsb25nIik7CisgICAgICByZXR1cm4gbWFu Z2xlZDsKKyAgICBjYXNlICdtJzoKKyAgICAgIG1hbmdsZWQrKzsKKyAgICAg IHN0cmluZ19hcHBlbmQgKGRlY2wsICJ1bG9uZyIpOworICAgICAgcmV0dXJu IG1hbmdsZWQ7CisgICAgY2FzZSAnZic6CisgICAgICBtYW5nbGVkKys7Cisg ICAgICBzdHJpbmdfYXBwZW5kIChkZWNsLCAiZmxvYXQiKTsKKyAgICAgIHJl dHVybiBtYW5nbGVkOworICAgIGNhc2UgJ2QnOgorICAgICAgbWFuZ2xlZCsr OworICAgICAgc3RyaW5nX2FwcGVuZCAoZGVjbCwgImRvdWJsZSIpOworICAg ICAgcmV0dXJuIG1hbmdsZWQ7CisgICAgY2FzZSAnZSc6CisgICAgICBtYW5n bGVkKys7CisgICAgICBzdHJpbmdfYXBwZW5kIChkZWNsLCAicmVhbCIpOwor ICAgICAgcmV0dXJuIG1hbmdsZWQ7CisKKyAgICAvKiBJbWFnaW5hcnkgYW5k IENvbXBsZXggdHlwZXMgKi8KKyAgICBjYXNlICdvJzoKKyAgICAgIG1hbmds ZWQrKzsKKyAgICAgIHN0cmluZ19hcHBlbmQgKGRlY2wsICJpZmxvYXQiKTsK KyAgICAgIHJldHVybiBtYW5nbGVkOworICAgIGNhc2UgJ3AnOgorICAgICAg bWFuZ2xlZCsrOworICAgICAgc3RyaW5nX2FwcGVuZCAoZGVjbCwgImlkb3Vi bGUiKTsKKyAgICAgIHJldHVybiBtYW5nbGVkOworICAgIGNhc2UgJ2onOgor ICAgICAgbWFuZ2xlZCsrOworICAgICAgc3RyaW5nX2FwcGVuZCAoZGVjbCwg ImlyZWFsIik7CisgICAgICByZXR1cm4gbWFuZ2xlZDsKKyAgICBjYXNlICdx JzoKKyAgICAgIG1hbmdsZWQrKzsKKyAgICAgIHN0cmluZ19hcHBlbmQgKGRl Y2wsICJjZmxvYXQiKTsKKyAgICAgIHJldHVybiBtYW5nbGVkOworICAgIGNh c2UgJ3InOgorICAgICAgbWFuZ2xlZCsrOworICAgICAgc3RyaW5nX2FwcGVu ZCAoZGVjbCwgImNkb3VibGUiKTsKKyAgICAgIHJldHVybiBtYW5nbGVkOwor ICAgIGNhc2UgJ2MnOgorICAgICAgbWFuZ2xlZCsrOworICAgICAgc3RyaW5n X2FwcGVuZCAoZGVjbCwgImNyZWFsIik7CisgICAgICByZXR1cm4gbWFuZ2xl ZDsKKworICAgIC8qIE90aGVyIHR5cGVzICovCisgICAgY2FzZSAnYic6Cisg ICAgICBtYW5nbGVkKys7CisgICAgICBzdHJpbmdfYXBwZW5kIChkZWNsLCAi Ym9vbCIpOworICAgICAgcmV0dXJuIG1hbmdsZWQ7CisgICAgY2FzZSAnYSc6 CisgICAgICBtYW5nbGVkKys7CisgICAgICBzdHJpbmdfYXBwZW5kIChkZWNs LCAiY2hhciIpOworICAgICAgcmV0dXJuIG1hbmdsZWQ7CisgICAgY2FzZSAn dSc6CisgICAgICBtYW5nbGVkKys7CisgICAgICBzdHJpbmdfYXBwZW5kIChk ZWNsLCAid2NoYXIiKTsKKyAgICAgIHJldHVybiBtYW5nbGVkOworICAgIGNh c2UgJ3cnOgorICAgICAgbWFuZ2xlZCsrOworICAgICAgc3RyaW5nX2FwcGVu ZCAoZGVjbCwgImRjaGFyIik7CisgICAgICByZXR1cm4gbWFuZ2xlZDsKKwor ICAgIGRlZmF1bHQ6IC8qIHVuaGFuZGxlZCAqLworICAgICAgcmV0dXJuIE5V TEw7CisgICAgfQorfQorCisvKiBFeHRyYWN0IHRoZSBpZGVudGlmaWVyIGZy b20gTUFOR0xFRCBhbmQgYXBwZW5kIGl0IHRvIERFQ0wuCisgICBSZXR1cm4g dGhlIHJlbWFpbmluZyBzdHJpbmcgb24gc3VjY2VzcyBvciBOVUxMIG9uIGZh aWx1cmUuICAqLworc3RhdGljIGNvbnN0IGNoYXIgKgorZGxhbmdfaWRlbnRp ZmllciAoc3RyaW5nICpkZWNsLCBjb25zdCBjaGFyICptYW5nbGVkKQorewor ICBpZiAobWFuZ2xlZCA9PSBOVUxMIHx8ICptYW5nbGVkID09ICdcMCcpCisg ICAgcmV0dXJuIG1hbmdsZWQ7CisKKyAgaWYgKElTRElHSVQgKCptYW5nbGVk KSkKKyAgICB7CisgICAgICBjaGFyICplbmRwdHI7CisgICAgICBsb25nIGkg PSBzdHJ0b2wgKG1hbmdsZWQsICZlbmRwdHIsIDEwKTsKKworICAgICAgaWYg KGVuZHB0ciA9PSBOVUxMIHx8IGkgPD0gMCB8fCBzdHJsZW4gKGVuZHB0cikg PCAoc2l6ZV90KSBpKQorCXJldHVybiBOVUxMOworCisgICAgICBtYW5nbGVk ID0gZW5kcHRyOworCisgICAgICAvKiBNYXkgYmUgYSB0ZW1wbGF0ZSBpbnN0 YW5jZS4gICovCisgICAgICBpZiAoaSA+PSA1ICYmIHN0cm5jbXAgKG1hbmds ZWQsICJfX1QiLCAzKSA9PSAwKQorCXsKKwkgIC8qIFRlbXBsYXRlIHN5bWJv bC4gICovCisJICBpZiAoSVNESUdJVCAobWFuZ2xlZFszXSkgJiYgbWFuZ2xl ZFszXSAhPSAnMCcpCisJICAgIHJldHVybiBkbGFuZ19wYXJzZV90ZW1wbGF0 ZSAoZGVjbCwgbWFuZ2xlZCwgaSk7CisKKwkgIHJldHVybiBOVUxMOworCX0K KworICAgICAgaWYgKHN0cm5jbXAgKG1hbmdsZWQsICJfX2N0b3IiLCBpKSA9 PSAwKQorCXsKKwkgIC8qIENvbnN0cnVjdG9yIHN5bWJvbCBmb3IgYSBjbGFz cy9zdHJ1Y3QuICAqLworCSAgc3RyaW5nX2FwcGVuZCAoZGVjbCwgInRoaXMi KTsKKwkgIG1hbmdsZWQgKz0gaTsKKwkgIHJldHVybiBtYW5nbGVkOworCX0K KyAgICAgIGVsc2UgaWYgKHN0cm5jbXAgKG1hbmdsZWQsICJfX2R0b3IiLCBp KSA9PSAwKQorCXsKKwkgIC8qIERlc3RydWN0b3Igc3ltYm9sIGZvciBhIGNs YXNzL3N0cnVjdC4gICovCisJICBzdHJpbmdfYXBwZW5kIChkZWNsLCAifnRo aXMiKTsKKwkgIG1hbmdsZWQgKz0gaTsKKwkgIHJldHVybiBtYW5nbGVkOwor CX0KKyAgICAgIGVsc2UgaWYgKHN0cm5jbXAgKG1hbmdsZWQsICJfX3Bvc3Ri bGl0IiwgaSkgPT0gMCkKKwl7CisJICAvKiBQb3N0YmxpdCBzeW1ib2wgZm9y IGEgc3RydWN0LiAgKi8KKwkgIHN0cmluZ19hcHBlbmQgKGRlY2wsICJ0aGlz KHRoaXMpIik7CisJICBtYW5nbGVkICs9IGk7CisJICByZXR1cm4gbWFuZ2xl ZDsKKwl9CisgICAgICBlbHNlIGlmIChzdHJuY21wIChtYW5nbGVkLCAiX19p bml0WiIsIGkrMSkgPT0gMCkKKwl7CisJICAvKiBUaGUgc3RhdGljIGluaXRp YWxpc2VyIGZvciBhIGdpdmVuIHN5bWJvbC4gICovCisJICBzdHJpbmdfYXBw ZW5kIChkZWNsLCAiaW5pdCQiKTsKKwkgIG1hbmdsZWQgKz0gaSArIDE7CisJ ICByZXR1cm4gbWFuZ2xlZDsKKwl9CisgICAgICBlbHNlIGlmIChzdHJuY21w IChtYW5nbGVkLCAiX19DbGFzc1oiLCBpKzEpID09IDApCisJeworCSAgLyog VGhlIGNsYXNzaW5mbyBzeW1ib2wgZm9yIGEgZ2l2ZW4gY2xhc3MuICAqLwor CSAgc3RyaW5nX3ByZXBlbmQgKGRlY2wsICJDbGFzc0luZm8gZm9yICIpOwor CSAgc3RyaW5nX3NldGxlbmd0aCAoZGVjbCwgc3RyaW5nX2xlbmd0aCAoZGVj bCkgLSAxKTsKKwkgIG1hbmdsZWQgKz0gaSArIDE7CisJICByZXR1cm4gbWFu Z2xlZDsKKwl9CisgICAgICBlbHNlIGlmIChzdHJuY21wIChtYW5nbGVkLCAi X192dGJsWiIsIGkrMSkgPT0gMCkKKwl7CisJICAvKiBUaGUgdnRhYmxlIHN5 bWJvbCBmb3IgYSBnaXZlbiBjbGFzcy4gICovCisJICBzdHJpbmdfcHJlcGVu ZCAoZGVjbCwgInZ0YWJsZSBmb3IgIik7CisJICBzdHJpbmdfc2V0bGVuZ3Ro IChkZWNsLCBzdHJpbmdfbGVuZ3RoIChkZWNsKSAtIDEpOworCSAgbWFuZ2xl ZCArPSBpICsgMTsKKwkgIHJldHVybiBtYW5nbGVkOworCX0KKyAgICAgIGVs c2UgaWYgKHN0cm5jbXAgKG1hbmdsZWQsICJfX0ludGVyZmFjZVoiLCBpKzEp ID09IDApCisJeworCSAgLyogVGhlIGludGVyZmFjZSBzeW1ib2wgZm9yIGEg Z2l2ZW4gY2xhc3MuICAqLworCSAgc3RyaW5nX3ByZXBlbmQgKGRlY2wsICJJ bnRlcmZhY2UgZm9yICIpOworCSAgc3RyaW5nX3NldGxlbmd0aCAoZGVjbCwg c3RyaW5nX2xlbmd0aCAoZGVjbCkgLSAxKTsKKwkgIG1hbmdsZWQgKz0gaSAr IDE7CisJICByZXR1cm4gbWFuZ2xlZDsKKwl9CisgICAgICBlbHNlIGlmIChz dHJuY21wIChtYW5nbGVkLCAiX19Nb2R1bGVJbmZvWiIsIGkrMSkgPT0gMCkK Kwl7CisJICAvKiBUaGUgTW9kdWxlSW5mbyBzeW1ib2wgZm9yIGEgZ2l2ZW4g bW9kdWxlLiAgKi8KKwkgIHN0cmluZ19wcmVwZW5kIChkZWNsLCAiTW9kdWxl SW5mbyBmb3IgIik7CisJICBzdHJpbmdfc2V0bGVuZ3RoIChkZWNsLCBzdHJp bmdfbGVuZ3RoIChkZWNsKSAtIDEpOworCSAgbWFuZ2xlZCArPSBpICsgMTsK KwkgIHJldHVybiBtYW5nbGVkOworCX0KKworICAgICAgc3RyaW5nX2FwcGVu ZG4gKGRlY2wsIG1hbmdsZWQsIGkpOworICAgICAgbWFuZ2xlZCArPSBpOwor ICAgIH0KKyAgZWxzZQorICAgIHJldHVybiBOVUxMOworCisgIHJldHVybiBt YW5nbGVkOworfQorCisvKiBFeHRyYWN0IHRoZSBpbnRlZ2VyIHZhbHVlIGZy b20gTUFOR0xFRCBhbmQgYXBwZW5kIGl0IHRvIERFQ0wsCisgICB3aGVyZSBU WVBFIGlzIHRoZSB0eXBlIGl0IHNob3VsZCBiZSByZXByZXNlbnRlZCBhcy4K KyAgIFJldHVybiB0aGUgcmVtYWluaW5nIHN0cmluZyBvbiBzdWNjZXNzIG9y IE5VTEwgb24gZmFpbHVyZS4gICovCitzdGF0aWMgY29uc3QgY2hhciAqCitk bGFuZ19wYXJzZV9pbnRlZ2VyIChzdHJpbmcgKmRlY2wsIGNvbnN0IGNoYXIg Km1hbmdsZWQsIGNoYXIgdHlwZSkKK3sKKyAgaWYgKHR5cGUgPT0gJ2EnIHx8 IHR5cGUgPT0gJ3UnIHx8IHR5cGUgPT0gJ3cnKQorICAgIHsKKyAgICAgIC8q IFBhcnNlIGNoYXJhY3RlciB2YWx1ZS4gICovCisgICAgICBjaGFyIHZhbHVl WzEwXTsKKyAgICAgIGludCBwb3MgPSAxMDsKKyAgICAgIGludCB3aWR0aCA9 IDA7CisgICAgICBjaGFyICplbmRwdHI7CisgICAgICBsb25nIHZhbCA9IHN0 cnRvbCAobWFuZ2xlZCwgJmVuZHB0ciwgMTApOworCisgICAgICBpZiAoZW5k cHRyID09IE5VTEwgfHwgdmFsIDwgMCkKKwlyZXR1cm4gTlVMTDsKKworICAg ICAgc3RyaW5nX2FwcGVuZCAoZGVjbCwgIiciKTsKKworICAgICAgaWYgKHR5 cGUgPT0gJ2EnICYmIHZhbCA+PSAweDIwICYmIHZhbCA8IDB4N0YpCisJewor CSAgLyogUmVwcmVzZW50IGFzIGEgY2hhcmFjdGVyIGxpdGVyYWwuICAqLwor CSAgY2hhciBjID0gKGNoYXIpIHZhbDsKKwkgIHN0cmluZ19hcHBlbmRuIChk ZWNsLCAmYywgMSk7CisJfQorICAgICAgZWxzZQorCXsKKwkgIC8qIFJlcHJl c2VudCBhcyBhIGhleGFkZWNpbWFsIHZhbHVlLiAgKi8KKwkgIHN3aXRjaCAo dHlwZSkKKwkgICAgeworCSAgICBjYXNlICdhJzogLyogY2hhciAqLworCSAg ICAgIHN0cmluZ19hcHBlbmQgKGRlY2wsICJcXHgiKTsKKwkgICAgICB3aWR0 aCA9IDI7CisJICAgICAgYnJlYWs7CisJICAgIGNhc2UgJ3UnOiAvKiB3Y2hh ciAqLworCSAgICAgIHN0cmluZ19hcHBlbmQgKGRlY2wsICJcXHUiKTsKKwkg ICAgICB3aWR0aCA9IDQ7CisJICAgICAgYnJlYWs7CisJICAgIGNhc2UgJ3cn OiAvKiBkY2hhciAqLworCSAgICAgIHN0cmluZ19hcHBlbmQgKGRlY2wsICJc XFUiKTsKKwkgICAgICB3aWR0aCA9IDg7CisJICAgICAgYnJlYWs7CisJICAg IH0KKworCSAgd2hpbGUgKHZhbCA+IDApCisJICAgIHsKKwkgICAgICBpbnQg ZGlnaXQgPSB2YWwgJSAxNjsKKworCSAgICAgIGlmIChkaWdpdCA8IDEwKQor CQl2YWx1ZVstLXBvc10gPSAoY2hhcikoZGlnaXQgKyAnMCcpOworCSAgICAg IGVsc2UKKwkJdmFsdWVbLS1wb3NdID0gKGNoYXIpKChkaWdpdCAtIDEwKSAr ICdhJyk7CisKKwkgICAgICB2YWwgLz0gMTY7CisJICAgICAgd2lkdGgtLTsK KwkgICAgfQorCisJICBmb3IgKDsgd2lkdGggPiAwOyB3aWR0aC0tKQorCSAg ICB2YWx1ZVstLXBvc10gPSAnMCc7CisKKwkgIHN0cmluZ19hcHBlbmRuIChk ZWNsLCAmKHZhbHVlW3Bvc10pLCAxMCAtIHBvcyk7CisJfQorICAgICAgc3Ry aW5nX2FwcGVuZCAoZGVjbCwgIiciKTsKKyAgICAgIG1hbmdsZWQgPSBlbmRw dHI7CisgICAgfQorICBlbHNlIGlmICh0eXBlID09ICdiJykKKyAgICB7Cisg ICAgICAvKiBQYXJzZSBib29sZWFuIHZhbHVlLiAgKi8KKyAgICAgIGNoYXIg KmVuZHB0cjsKKyAgICAgIGxvbmcgdmFsID0gc3RydG9sIChtYW5nbGVkLCAm ZW5kcHRyLCAxMCk7CisKKyAgICAgIGlmIChlbmRwdHIgPT0gTlVMTCB8fCB2 YWwgPCAwKQorCXJldHVybiBOVUxMOworCisgICAgICBzdHJpbmdfYXBwZW5k IChkZWNsLCB2YWwgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICAgIG1hbmds ZWQgPSBlbmRwdHI7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgLyog UGFyc2UgaW50ZWdlciB2YWx1ZS4gICovCisgICAgICBjb25zdCBjaGFyICpu dW1wdHIgPSBtYW5nbGVkOworICAgICAgc2l6ZV90IG51bSA9IDA7CisKKyAg ICAgIHdoaWxlIChJU0RJR0lUICgqbWFuZ2xlZCkpCisJeworCSAgbnVtKys7 CisJICBtYW5nbGVkKys7CisJfQorICAgICAgc3RyaW5nX2FwcGVuZG4gKGRl Y2wsIG51bXB0ciwgbnVtKTsKKworICAgICAgLyogQXBwZW5kIHN1ZmZpeC4g ICovCisgICAgICBzd2l0Y2ggKHR5cGUpCisJeworCWNhc2UgJ2gnOiAvKiB1 Ynl0ZSAqLworCWNhc2UgJ3QnOiAvKiB1c2hvcnQgKi8KKwljYXNlICdrJzog LyogdWludCAqLworCSAgc3RyaW5nX2FwcGVuZCAoZGVjbCwgInUiKTsKKwkg IGJyZWFrOworCWNhc2UgJ2wnOiAvKiBsb25nICovCisJICBzdHJpbmdfYXBw ZW5kIChkZWNsLCAiTCIpOworCSAgYnJlYWs7CisJY2FzZSAnbSc6IC8qIHVs b25nICovCisJICBzdHJpbmdfYXBwZW5kIChkZWNsLCAidUwiKTsKKwkgIGJy ZWFrOworCX0KKyAgICB9CisKKyAgcmV0dXJuIG1hbmdsZWQ7Cit9CisKKy8q IEV4dHJhY3QgdGhlIGZsb2F0aW5nLXBvaW50IHZhbHVlIGZyb20gTUFOR0xF RCBhbmQgYXBwZW5kIGl0IHRvIERFQ0wuCisgICBSZXR1cm4gdGhlIHJlbWFp bmluZyBzdHJpbmcgb24gc3VjY2VzcyBvciBOVUxMIG9uIGZhaWx1cmUuICAq Lworc3RhdGljIGNvbnN0IGNoYXIgKgorZGxhbmdfcGFyc2VfcmVhbCAoc3Ry aW5nICpkZWNsLCBjb25zdCBjaGFyICptYW5nbGVkKQoreworICBjaGFyIGJ1 ZmZlcls2NF07CisgIGludCBsZW4gPSAwOworICBsb25nIGRvdWJsZSB2YWx1 ZTsKKyAgY2hhciAqZW5kcHRyOworCisgIC8qIEhhbmRsZSBOQU4gYW5kICst SU5GLiAgKi8KKyAgaWYgKHN0cm5jbXAgKG1hbmdsZWQsICJOQU4iLCAzKSA9 PSAwKQorICAgIHsKKyAgICAgIHN0cmluZ19hcHBlbmQgKGRlY2wsICJOYU4i KTsKKyAgICAgIG1hbmdsZWQgKz0gMzsKKyAgICAgIHJldHVybiBtYW5nbGVk OworICAgIH0KKyAgZWxzZSBpZiAoc3RybmNtcCAobWFuZ2xlZCwgIklORiIs IDMpID09IDApCisgICAgeworICAgICAgc3RyaW5nX2FwcGVuZCAoZGVjbCwg IkluZiIpOworICAgICAgbWFuZ2xlZCArPSAzOworICAgICAgcmV0dXJuIG1h bmdsZWQ7CisgICAgfQorICBlbHNlIGlmIChzdHJuY21wIChtYW5nbGVkLCAi TklORiIsIDQpID09IDApCisgICAgeworICAgICAgc3RyaW5nX2FwcGVuZCAo ZGVjbCwgIi1JbmYiKTsKKyAgICAgIG1hbmdsZWQgKz0gNDsKKyAgICAgIHJl dHVybiBtYW5nbGVkOworICAgIH0KKworICAvKiBIZXhhZGVjaW1hbCBwcmVm aXggYW5kIGxlYWRpbmcgYml0LiAgKi8KKyAgaWYgKCptYW5nbGVkID09ICdO JykKKyAgICB7CisgICAgICBidWZmZXJbbGVuKytdID0gJy0nOworICAgICAg bWFuZ2xlZCsrOworICAgIH0KKworICBpZiAoIUlTWERJR0lUICgqbWFuZ2xl ZCkpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgYnVmZmVyW2xlbisrXSA9ICcw JzsKKyAgYnVmZmVyW2xlbisrXSA9ICd4JzsKKyAgYnVmZmVyW2xlbisrXSA9 ICptYW5nbGVkOworICBidWZmZXJbbGVuKytdID0gJy4nOworICBtYW5nbGVk Kys7CisKKyAgLyogU2lnbmlmaWNhbmQuICAqLworICB3aGlsZSAoSVNYRElH SVQgKCptYW5nbGVkKSkKKyAgICB7CisgICAgICBidWZmZXJbbGVuKytdID0g Km1hbmdsZWQ7CisgICAgICBtYW5nbGVkKys7CisgICAgfQorCisgIC8qIEV4 cG9uZW50LiAgKi8KKyAgaWYgKCptYW5nbGVkICE9ICdQJykKKyAgICByZXR1 cm4gTlVMTDsKKworICBidWZmZXJbbGVuKytdID0gJ3AnOworICBtYW5nbGVk Kys7CisKKyAgaWYgKCptYW5nbGVkID09ICdOJykKKyAgICB7CisgICAgICBi dWZmZXJbbGVuKytdID0gJy0nOworICAgICAgbWFuZ2xlZCsrOworICAgIH0K KworICB3aGlsZSAoSVNESUdJVCAoKm1hbmdsZWQpKQorICAgIHsKKyAgICAg IGJ1ZmZlcltsZW4rK10gPSAqbWFuZ2xlZDsKKyAgICAgIG1hbmdsZWQrKzsK KyAgICB9CisKKyAgLyogQ29udmVydCBidWZmZXIgZnJvbSBoZXhhZGVjaW1h bCB0byBmbG9hdGluZy1wb2ludC4gICovCisgIGJ1ZmZlcltsZW5dID0gJ1ww JzsKKyAgdmFsdWUgPSBzdHJ0b2xkIChidWZmZXIsICZlbmRwdHIpOworCisg IGlmIChlbmRwdHIgPT0gTlVMTCB8fCBlbmRwdHIgIT0gKGJ1ZmZlciArIGxl bikpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgbGVuID0gc25wcmludGYgKGJ1 ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIlI0xnIiwgdmFsdWUpOworICBzdHJp bmdfYXBwZW5kbiAoZGVjbCwgYnVmZmVyLCBsZW4pOworICByZXR1cm4gbWFu Z2xlZDsKK30KKworLyogQ29udmVydCBWQUwgZnJvbSBhbiBhc2NpaSBoZXhk aWdpdCB0byB2YWx1ZS4gICovCitzdGF0aWMgY2hhcgorYXNjaWkyaGV4IChj aGFyIHZhbCkKK3sKKyAgaWYgKHZhbCA+PSAnYScgJiYgdmFsIDw9ICdmJykK KyAgICByZXR1cm4gKHZhbCAtICdhJyArIDEwKTsKKworICBpZiAodmFsID49 ICdBJyAmJiB2YWwgPD0gJ0YnKQorICAgIHJldHVybiAodmFsIC0gJ0EnICsg MTApOworCisgIGlmICh2YWwgPj0gJzAnICYmIHZhbCA8PSAnOScpCisgICAg cmV0dXJuICh2YWwgLSAnMCcpOworCisgIHJldHVybiAwOworfQorCisvKiBF eHRyYWN0IHRoZSBzdHJpbmcgdmFsdWUgZnJvbSBNQU5HTEVEIGFuZCBhcHBl bmQgaXQgdG8gREVDTC4KKyAgIFJldHVybiB0aGUgcmVtYWluaW5nIHN0cmlu ZyBvbiBzdWNjZXNzIG9yIE5VTEwgb24gZmFpbHVyZS4gICovCitzdGF0aWMg Y29uc3QgY2hhciAqCitkbGFuZ19wYXJzZV9zdHJpbmcgKHN0cmluZyAqZGVj bCwgY29uc3QgY2hhciAqbWFuZ2xlZCkKK3sKKyAgY2hhciB0eXBlID0gKm1h bmdsZWQ7CisgIGNoYXIgKmVuZHB0cjsKKyAgbG9uZyBsZW47CisKKyAgbWFu Z2xlZCsrOworICBsZW4gPSBzdHJ0b2wgKG1hbmdsZWQsICZlbmRwdHIsIDEw KTsKKworICBpZiAoZW5kcHRyID09IE5VTEwgfHwgbGVuIDwgMCkKKyAgICBy ZXR1cm4gTlVMTDsKKworICBtYW5nbGVkID0gZW5kcHRyOworICBpZiAoKm1h bmdsZWQgIT0gJ18nKQorICAgIHJldHVybiBOVUxMOworCisgIG1hbmdsZWQr KzsKKyAgc3RyaW5nX2FwcGVuZCAoZGVjbCwgIlwiIik7CisgIHdoaWxlIChs ZW4tLSkKKyAgICB7CisgICAgICBpZiAoSVNYRElHSVQgKG1hbmdsZWRbMF0p ICYmIElTWERJR0lUIChtYW5nbGVkWzFdKSkKKwl7CisJICBjaGFyIGEgPSBh c2NpaTJoZXggKG1hbmdsZWRbMF0pOworCSAgY2hhciBiID0gYXNjaWkyaGV4 IChtYW5nbGVkWzFdKTsKKwkgIGNoYXIgdmFsID0gKGEgPDwgNCkgfCBiOwor CSAgc3RyaW5nX2FwcGVuZG4gKGRlY2wsICZ2YWwsIDEpOworCX0KKyAgICAg IGVsc2UKKwlyZXR1cm4gTlVMTDsKKworICAgICAgbWFuZ2xlZCArPSAyOwor ICAgIH0KKyAgc3RyaW5nX2FwcGVuZCAoZGVjbCwgIlwiIik7CisKKyAgaWYg KHR5cGUgIT0gJ2EnKQorICAgIHN0cmluZ19hcHBlbmRuIChkZWNsLCAmdHlw ZSwgMSk7CisKKyAgcmV0dXJuIG1hbmdsZWQ7Cit9CisKKy8qIEV4dHJhY3Qg dGhlIHN0YXRpYyBhcnJheSB2YWx1ZSBmcm9tIE1BTkdMRUQgYW5kIGFwcGVu ZCBpdCB0byBERUNMLgorICAgUmV0dXJuIHRoZSByZW1haW5pbmcgc3RyaW5n IG9uIHN1Y2Nlc3Mgb3IgTlVMTCBvbiBmYWlsdXJlLiAgKi8KK3N0YXRpYyBj b25zdCBjaGFyICoKK2RsYW5nX3BhcnNlX2FycmF5bGl0ZXJhbCAoc3RyaW5n ICpkZWNsLCBjb25zdCBjaGFyICptYW5nbGVkKQoreworICBjaGFyICplbmRw dHI7CisgIGxvbmcgZWxlbWVudHMgPSBzdHJ0b2wgKG1hbmdsZWQsICZlbmRw dHIsIDEwKTsKKworICBpZiAoZW5kcHRyID09IE5VTEwgfHwgZWxlbWVudHMg PCAwKQorICAgIHJldHVybiBOVUxMOworCisgIG1hbmdsZWQgPSBlbmRwdHI7 CisgIHN0cmluZ19hcHBlbmQgKGRlY2wsICJbIik7CisgIHdoaWxlIChlbGVt ZW50cy0tKQorICAgIHsKKyAgICAgIG1hbmdsZWQgPSBkbGFuZ192YWx1ZSAo ZGVjbCwgbWFuZ2xlZCwgTlVMTCwgJ1wwJyk7CisgICAgICBpZiAoZWxlbWVu dHMgIT0gMCkKKwlzdHJpbmdfYXBwZW5kIChkZWNsLCAiLCAiKTsKKyAgICB9 CisKKyAgc3RyaW5nX2FwcGVuZCAoZGVjbCwgIl0iKTsKKyAgcmV0dXJuIG1h bmdsZWQ7Cit9CisKKy8qIEV4dHJhY3QgdGhlIGFzc29jaWF0aXZlIGFycmF5 IHZhbHVlIGZyb20gTUFOR0xFRCBhbmQgYXBwZW5kIGl0IHRvIERFQ0wuCisg ICBSZXR1cm4gdGhlIHJlbWFpbmluZyBzdHJpbmcgb24gc3VjY2VzcyBvciBO VUxMIG9uIGZhaWx1cmUuICAqLworc3RhdGljIGNvbnN0IGNoYXIgKgorZGxh bmdfcGFyc2VfYXNzb2NhcnJheSAoc3RyaW5nICpkZWNsLCBjb25zdCBjaGFy ICptYW5nbGVkKQoreworICBjaGFyICplbmRwdHI7CisgIGxvbmcgZWxlbWVu dHMgPSBzdHJ0b2wgKG1hbmdsZWQsICZlbmRwdHIsIDEwKTsKKworICBpZiAo ZW5kcHRyID09IE5VTEwgfHwgZWxlbWVudHMgPCAwKQorICAgIHJldHVybiBO VUxMOworCisgIG1hbmdsZWQgPSBlbmRwdHI7CisgIHN0cmluZ19hcHBlbmQg KGRlY2wsICJbIik7CisgIHdoaWxlIChlbGVtZW50cy0tKQorICAgIHsKKyAg ICAgIG1hbmdsZWQgPSBkbGFuZ192YWx1ZSAoZGVjbCwgbWFuZ2xlZCwgTlVM TCwgJ1wwJyk7CisgICAgICBzdHJpbmdfYXBwZW5kIChkZWNsLCAiOiIpOwor ICAgICAgbWFuZ2xlZCA9IGRsYW5nX3ZhbHVlIChkZWNsLCBtYW5nbGVkLCBO VUxMLCAnXDAnKTsKKworICAgICAgaWYgKGVsZW1lbnRzICE9IDApCisJc3Ry aW5nX2FwcGVuZCAoZGVjbCwgIiwgIik7CisgICAgfQorCisgIHN0cmluZ19h cHBlbmQgKGRlY2wsICJdIik7CisgIHJldHVybiBtYW5nbGVkOworfQorCisv KiBFeHRyYWN0IHRoZSBzdHJ1Y3QgbGl0ZXJhbCB2YWx1ZSBmb3IgTkFNRSBm cm9tIE1BTkdMRUQgYW5kIGFwcGVuZCBpdCB0byBERUNMLgorICAgUmV0dXJu IHRoZSByZW1haW5pbmcgc3RyaW5nIG9uIHN1Y2Nlc3Mgb3IgTlVMTCBvbiBm YWlsdXJlLiAgKi8KK3N0YXRpYyBjb25zdCBjaGFyICoKK2RsYW5nX3BhcnNl X3N0cnVjdGxpdCAoc3RyaW5nICpkZWNsLCBjb25zdCBjaGFyICptYW5nbGVk LCBjb25zdCBjaGFyICpuYW1lKQoreworICBjaGFyICplbmRwdHI7CisgIGxv bmcgYXJncyA9IHN0cnRvbCAobWFuZ2xlZCwgJmVuZHB0ciwgMTApOworCisg IGlmIChlbmRwdHIgPT0gTlVMTCB8fCBhcmdzIDwgMCkKKyAgICByZXR1cm4g TlVMTDsKKworICBtYW5nbGVkID0gZW5kcHRyOworICBpZiAobmFtZSAhPSBO VUxMKQorICAgIHN0cmluZ19hcHBlbmQgKGRlY2wsIG5hbWUpOworCisgIHN0 cmluZ19hcHBlbmQgKGRlY2wsICIoIik7CisgIHdoaWxlIChhcmdzLS0pCisg ICAgeworICAgICAgbWFuZ2xlZCA9IGRsYW5nX3ZhbHVlIChkZWNsLCBtYW5n bGVkLCBOVUxMLCAnXDAnKTsKKyAgICAgIGlmIChhcmdzICE9IDApCisJc3Ry aW5nX2FwcGVuZCAoZGVjbCwgIiwgIik7CisgICAgfQorCisgIHN0cmluZ19h cHBlbmQgKGRlY2wsICIpIik7CisgIHJldHVybiBtYW5nbGVkOworfQorCisv KiBFeHRyYWN0IHRoZSB2YWx1ZSBmcm9tIE1BTkdMRUQgYW5kIGFwcGVuZCBp dCB0byBERUNMLgorICAgUmV0dXJuIHRoZSByZW1haW5pbmcgc3RyaW5nIG9u IHN1Y2Nlc3Mgb3IgTlVMTCBvbiBmYWlsdXJlLiAgKi8KK3N0YXRpYyBjb25z dCBjaGFyICoKK2RsYW5nX3ZhbHVlIChzdHJpbmcgKmRlY2wsIGNvbnN0IGNo YXIgKm1hbmdsZWQsIGNvbnN0IGNoYXIgKm5hbWUsIGNoYXIgdHlwZSkKK3sK KyAgaWYgKG1hbmdsZWQgPT0gTlVMTCB8fCAqbWFuZ2xlZCA9PSAnXDAnKQor ICAgIHJldHVybiBtYW5nbGVkOworCisgIHN3aXRjaCAoKm1hbmdsZWQpCisg ICAgeworICAgICAgLyogTnVsbCB2YWx1ZS4gICovCisgICAgY2FzZSAnbic6 CisgICAgICBtYW5nbGVkKys7CisgICAgICBzdHJpbmdfYXBwZW5kIChkZWNs LCAibnVsbCIpOworICAgICAgYnJlYWs7CisKKyAgICAgIC8qIEludGVncmFs IHZhbHVlcy4gICovCisgICAgY2FzZSAnTic6CisgICAgICBtYW5nbGVkKys7 CisgICAgICBzdHJpbmdfYXBwZW5kIChkZWNsLCAiLSIpOworICAgICAgbWFu Z2xlZCA9IGRsYW5nX3BhcnNlX2ludGVnZXIgKGRlY2wsIG1hbmdsZWQsIHR5 cGUpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlICdpJzoKKyAgICAgIG1h bmdsZWQrKzsKKyAgICAgIGlmICgqbWFuZ2xlZCA8ICcwJyB8fCAqbWFuZ2xl ZCA+ICc5JykKKwlyZXR1cm4gTlVMTDsKKyAgICAgIC8qIEZhbGwgdGhyb3Vn aCAqLworICAgIGNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNhc2Ug JzMnOiBjYXNlICc0JzoKKyAgICBjYXNlICc1JzogY2FzZSAnNic6IGNhc2Ug JzcnOiBjYXNlICc4JzogY2FzZSAnOSc6CisgICAgICBtYW5nbGVkID0gZGxh bmdfcGFyc2VfaW50ZWdlciAoZGVjbCwgbWFuZ2xlZCwgdHlwZSk7CisgICAg ICBicmVhazsKKworICAgICAgLyogUmVhbCB2YWx1ZS4gICovCisgICAgY2Fz ZSAnZSc6CisgICAgICBtYW5nbGVkKys7CisgICAgICBtYW5nbGVkID0gZGxh bmdfcGFyc2VfcmVhbCAoZGVjbCwgbWFuZ2xlZCk7CisgICAgICBicmVhazsK KworICAgICAgLyogQ29tcGxleCB2YWx1ZS4gICovCisgICAgY2FzZSAnYyc6 CisgICAgICBtYW5nbGVkKys7CisgICAgICBtYW5nbGVkID0gZGxhbmdfcGFy c2VfcmVhbCAoZGVjbCwgbWFuZ2xlZCk7CisgICAgICBzdHJpbmdfYXBwZW5k IChkZWNsLCAiKyIpOworICAgICAgaWYgKG1hbmdsZWQgPT0gTlVMTCB8fCAq bWFuZ2xlZCAhPSAnYycpCisJcmV0dXJuIE5VTEw7CisgICAgICBtYW5nbGVk Kys7CisgICAgICBtYW5nbGVkID0gZGxhbmdfcGFyc2VfcmVhbCAoZGVjbCwg bWFuZ2xlZCk7CisgICAgICBzdHJpbmdfYXBwZW5kIChkZWNsLCAiaSIpOwor ICAgICAgYnJlYWs7CisKKyAgICAgIC8qIFN0cmluZyB2YWx1ZXMuICAqLwor ICAgIGNhc2UgJ2EnOiAvKiBVVEY4ICovCisgICAgY2FzZSAndyc6IC8qIFVU RjE2ICovCisgICAgY2FzZSAnZCc6IC8qIFVURjMyICovCisgICAgICBtYW5n bGVkID0gZGxhbmdfcGFyc2Vfc3RyaW5nIChkZWNsLCBtYW5nbGVkKTsKKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBBcnJheSB2YWx1ZXMuICAqLworICAg IGNhc2UgJ0EnOgorICAgICAgbWFuZ2xlZCsrOworICAgICAgaWYgKHR5cGUg PT0gJ0gnKQorCW1hbmdsZWQgPSBkbGFuZ19wYXJzZV9hc3NvY2FycmF5IChk ZWNsLCBtYW5nbGVkKTsKKyAgICAgIGVsc2UKKwltYW5nbGVkID0gZGxhbmdf cGFyc2VfYXJyYXlsaXRlcmFsIChkZWNsLCBtYW5nbGVkKTsKKyAgICAgIGJy ZWFrOworCisgICAgICAvKiBTdHJ1Y3QgdmFsdWVzLiAgKi8KKyAgICBjYXNl ICdTJzoKKyAgICAgIG1hbmdsZWQrKzsKKyAgICAgIG1hbmdsZWQgPSBkbGFu Z19wYXJzZV9zdHJ1Y3RsaXQgKGRlY2wsIG1hbmdsZWQsIG5hbWUpOworICAg ICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIE5VTEw7 CisgICAgfQorCisgIHJldHVybiBtYW5nbGVkOworfQorCitzdGF0aWMgaW50 CitkbGFuZ19jYWxsX2NvbnZlbnRpb25fcCAoY29uc3QgY2hhciAqbWFuZ2xl ZCkKK3sKKyAgc2l6ZV90IGk7CisKKyAgc3dpdGNoICgqbWFuZ2xlZCkKKyAg ICB7CisgICAgY2FzZSAnRic6IGNhc2UgJ1UnOiBjYXNlICdWJzoKKyAgICBj YXNlICdXJzogY2FzZSAnUic6CisgICAgICByZXR1cm4gMTsKKworICAgIGNh c2UgJ00nOiAvKiBQcmVmaXggZm9yIGZ1bmN0aW9ucyBuZWVkaW5nICd0aGlz JyAqLworICAgICAgaSA9IDE7CisgICAgICBpZiAobWFuZ2xlZFtpXSA9PSAn eCcpCisJaSsrOworCisgICAgICBzd2l0Y2ggKG1hbmdsZWRbaV0pCisJewor CWNhc2UgJ0YnOiBjYXNlICdVJzogY2FzZSAnVic6CisJY2FzZSAnVyc6IGNh c2UgJ1InOgorCSAgcmV0dXJuIDE7CisJfQorCisgICAgZGVmYXVsdDoKKyAg ICAgIHJldHVybiAwOworICAgIH0KK30KKworLyogRXh0cmFjdCBhbmQgZGVt YW5nbGUgdGhlIHN5bWJvbCBpbiBNQU5HTEVEIGFuZCBhcHBlbmQgaXQgdG8g REVDTC4KKyAgIFJldHVybnMgdGhlIHJlbWFpbmluZyBzaWduYXR1cmUgb24g c3VjY2VzcyBvciBOVUxMIG9uIGZhaWx1cmUuICAqLworc3RhdGljIGNvbnN0 IGNoYXIgKgorZGxhbmdfcGFyc2Vfc3ltYm9sIChzdHJpbmcgKmRlY2wsIGNv bnN0IGNoYXIgKm1hbmdsZWQpCit7CisgIHNpemVfdCBuID0gMDsKKyAgZG8K KyAgICB7CisgICAgICBpZiAobisrKQorCXN0cmluZ19hcHBlbmQgKGRlY2ws ICIuIik7CisKKyAgICAgIG1hbmdsZWQgPSBkbGFuZ19pZGVudGlmaWVyIChk ZWNsLCBtYW5nbGVkKTsKKworICAgICAgaWYgKG1hbmdsZWQgJiYgZGxhbmdf Y2FsbF9jb252ZW50aW9uX3AgKG1hbmdsZWQpKQorCXsKKwkgIGludCBzYXZl ZDsKKworCSAgLyogU2tpcCBvdmVyICd0aGlzJyBwYXJhbWV0ZXIuICAqLwor CSAgaWYgKCptYW5nbGVkID09ICdNJykKKwkgICAgbWFuZ2xlZCArPSAobWFu Z2xlZFsxXSA9PSAneCcpID8gMiA6IDE7CisKKwkgIC8qIFNraXAgb3ZlciBj YWxsaW5nIGNvbnZlbnRpb24gYW5kIGF0dHJpYnV0ZXMgaW4gcXVhbGlmaWVk IG5hbWUuICAqLworCSAgc2F2ZWQgPSBzdHJpbmdfbGVuZ3RoIChkZWNsKTsK KwkgIG1hbmdsZWQgPSBkbGFuZ19jYWxsX2NvbnZlbnRpb24gKGRlY2wsIG1h bmdsZWQpOworCSAgbWFuZ2xlZCA9IGRsYW5nX2F0dHJpYnV0ZXMgKGRlY2ws IG1hbmdsZWQpOworCSAgc3RyaW5nX3NldGxlbmd0aCAoZGVjbCwgc2F2ZWQp OworCisJICBzdHJpbmdfYXBwZW5kIChkZWNsLCAiKCIpOworCSAgbWFuZ2xl ZCA9IGRsYW5nX2Z1bmN0aW9uX2FyZ3MgKGRlY2wsIG1hbmdsZWQpOworCSAg c3RyaW5nX2FwcGVuZCAoZGVjbCwgIikiKTsKKworCSAgLyogRGVtYW5nbGUg dGhlIGZ1bmN0aW9uIHJldHVybiB0eXBlIGFzIGEga2luZCBvZiBzYW5pdHkg dGVzdC4gICovCisJICBpZiAobWFuZ2xlZCAmJiAhSVNESUdJVCAoKm1hbmds ZWQpKQorCSAgICB7CisJICAgICAgc2F2ZWQgPSBzdHJpbmdfbGVuZ3RoIChk ZWNsKTsKKwkgICAgICBtYW5nbGVkID0gZGxhbmdfdHlwZSAoZGVjbCwgbWFu Z2xlZCk7CisJICAgICAgc3RyaW5nX3NldGxlbmd0aCAoZGVjbCwgc2F2ZWQp OworCSAgICB9CisJfQorICAgIH0KKyAgd2hpbGUgKG1hbmdsZWQgJiYgSVNE SUdJVCAoKm1hbmdsZWQpKTsKKworICByZXR1cm4gbWFuZ2xlZDsKK30KKwor LyogRGVtYW5nbGUgdGhlIHR1cGxlIGZyb20gTUFOR0xFRCBhbmQgYXBwZW5k IGl0IHRvIERFQ0wuCisgICBSZXR1cm4gdGhlIHJlbWFpbmluZyBzdHJpbmcg b24gc3VjY2VzcyBvciBOVUxMIG9uIGZhaWx1cmUuICAqLworc3RhdGljIGNv bnN0IGNoYXIgKgorZGxhbmdfcGFyc2VfdHVwbGUgKHN0cmluZyAqZGVjbCwg Y29uc3QgY2hhciAqbWFuZ2xlZCkKK3sKKyAgY2hhciAqZW5kcHRyOworICBs b25nIGVsZW1lbnRzID0gc3RydG9sIChtYW5nbGVkLCAmZW5kcHRyLCAxMCk7 CisKKyAgaWYgKGVuZHB0ciA9PSBOVUxMIHx8IGVsZW1lbnRzIDwgMCkKKyAg ICByZXR1cm4gTlVMTDsKKworICBtYW5nbGVkID0gZW5kcHRyOworICBzdHJp bmdfYXBwZW5kIChkZWNsLCAiVHVwbGUhKCIpOworCisgIHdoaWxlIChlbGVt ZW50cy0tKQorICAgIHsKKyAgICAgIG1hbmdsZWQgPSBkbGFuZ190eXBlIChk ZWNsLCBtYW5nbGVkKTsKKyAgICAgIGlmIChlbGVtZW50cyAhPSAwKQorCXN0 cmluZ19hcHBlbmQgKGRlY2wsICIsICIpOworICAgIH0KKworICBzdHJpbmdf YXBwZW5kIChkZWNsLCAiKSIpOworICByZXR1cm4gbWFuZ2xlZDsKK30KKwor LyogRGVtYW5nbGUgdGhlIGFyZ3VtZW50IGxpc3QgZnJvbSBNQU5HTEVEIGFu ZCBhcHBlbmQgaXQgdG8gREVDTC4KKyAgIFJldHVybiB0aGUgcmVtYWluaW5n IHN0cmluZyBvbiBzdWNjZXNzIG9yIE5VTEwgb24gZmFpbHVyZS4gICovCitz dGF0aWMgY29uc3QgY2hhciAqCitkbGFuZ190ZW1wbGF0ZV9hcmdzIChzdHJp bmcgKmRlY2wsIGNvbnN0IGNoYXIgKm1hbmdsZWQpCit7CisgIHNpemVfdCBu ID0gMDsKKworICB3aGlsZSAobWFuZ2xlZCAmJiAqbWFuZ2xlZCAhPSAnXDAn KQorICAgIHsKKyAgICAgIHN3aXRjaCAoKm1hbmdsZWQpCisJeworCWNhc2Ug J1onOiAvKiBFbmQgb2YgcGFyYW1ldGVyIGxpc3QuICAqLworCSAgbWFuZ2xl ZCsrOworCSAgcmV0dXJuIG1hbmdsZWQ7CisJfQorCisgICAgICBpZiAobisr KQorCXN0cmluZ19hcHBlbmQgKGRlY2wsICIsICIpOworCisgICAgICBzd2l0 Y2ggKCptYW5nbGVkKQorCXsKKwljYXNlICdTJzogLyogU3ltYm9sIHBhcmFt ZXRlci4gICovCisJICBtYW5nbGVkKys7CisJICBtYW5nbGVkID0gZGxhbmdf cGFyc2Vfc3ltYm9sIChkZWNsLCBtYW5nbGVkKTsKKwkgIGJyZWFrOworCWNh c2UgJ1QnOiAvKiBUeXBlIHBhcmFtZXRlci4gICovCisJICBtYW5nbGVkKys7 CisJICBtYW5nbGVkID0gZGxhbmdfdHlwZSAoZGVjbCwgbWFuZ2xlZCk7CisJ ICBicmVhazsKKwljYXNlICdWJzogLyogVmFsdWUgcGFyYW1ldGVyLiAgKi8K Kwl7CisJICBzdHJpbmcgbmFtZTsKKwkgIGNoYXIgdHlwZTsKKworCSAgLyog UGVlayBhdCB0aGUgdHlwZS4gICovCisJICBtYW5nbGVkKys7CisJICB0eXBl ID0gKm1hbmdsZWQ7CisKKwkgIC8qIEluIHRoZSBmZXcgaW5zdGFuY2VzIHdo ZXJlIHRoZSB0eXBlIGlzIGFjdHVhbGx5IGRlc2lyZWQgaW4KKwkgICAgIHRo ZSBvdXRwdXQsIGl0IHNob3VsZCBwcmVjZWRlIHRoZSB2YWx1ZSBmcm9tIGRs YW5nX3ZhbHVlLiAgKi8KKwkgIHN0cmluZ19pbml0ICgmbmFtZSk7CisJICBt YW5nbGVkID0gZGxhbmdfdHlwZSAoJm5hbWUsIG1hbmdsZWQpOworCSAgc3Ry aW5nX25lZWQgKCZuYW1lLCAxKTsKKwkgICoobmFtZS5wKSA9ICdcMCc7CisK KwkgIG1hbmdsZWQgPSBkbGFuZ192YWx1ZSAoZGVjbCwgbWFuZ2xlZCwgbmFt ZS5iLCB0eXBlKTsKKwkgIHN0cmluZ19kZWxldGUgKCZuYW1lKTsKKwkgIGJy ZWFrOworCX0KKworCWRlZmF1bHQ6CisJICByZXR1cm4gTlVMTDsKKwl9Cisg ICAgfQorCisgIHJldHVybiBtYW5nbGVkOworfQorCisvKiBFeHRyYWN0IGFu ZCBkZW1hbmdsZSB0aGUgdGVtcGxhdGUgc3ltYm9sIGluIE1BTkdMRUQsIGV4 cGVjdGVkIHRvCisgICBiZSBtYWRlIHVwIG9mIExFTiBjaGFyYWN0ZXJzLCBh bmQgYXBwZW5kIGl0IHRvIERFQ0wuCisgICBSZXR1cm5zIHRoZSByZW1haW5p bmcgc2lnbmF0dXJlIG9uIHN1Y2Nlc3Mgb3IgTlVMTCBvbiBmYWlsdXJlLiAg Ki8KK3N0YXRpYyBjb25zdCBjaGFyICoKK2RsYW5nX3BhcnNlX3RlbXBsYXRl IChzdHJpbmcgKmRlY2wsIGNvbnN0IGNoYXIgKm1hbmdsZWQsIGxvbmcgbGVu KQoreworICBjb25zdCBjaGFyICpzdGFydCA9IG1hbmdsZWQ7CisKKyAgLyog VGVtcGxhdGUgaW5zdGFuY2UgbmFtZXMgaGF2ZSB0aGUgdHlwZXMgYW5kIHZh bHVlcyBvZiBpdHMgcGFyYW1ldGVycworICAgICBlbmNvZGVkIGludG8gaXQu CisKKwlUZW1wbGF0ZUluc3RhbmNlTmFtZToKKwkgICAgTnVtYmVyIF9fVCBM TmFtZSBUZW1wbGF0ZUFyZ3MgWgorCQkgICBeCisgICAgIFRoZSBzdGFydCBw b2ludGVyIHNob3VsZCBiZSBhdCB0aGUgYWJvdmUgbG9jYXRpb24sIGFuZCBM RU4gc2hvdWxkIGJlCisgICAgIHRoZSB2YWx1ZSBvZiB0aGUgZGVjb2RlZCBu dW1iZXIuCisgICAqLworICBpZiAoc3RybmNtcCAobWFuZ2xlZCwgIl9fVCIs IDMpICE9IDApCisgICAgcmV0dXJuIE5VTEw7CisKKyAgbWFuZ2xlZCArPSAz OworCisgIC8qIFRlbXBsYXRlIGlkZW50aWZpZXIuICAqLworICBtYW5nbGVk ID0gZGxhbmdfaWRlbnRpZmllciAoZGVjbCwgbWFuZ2xlZCk7CisKKyAgLyog VGVtcGxhdGUgYXJndW1lbnRzLiAgKi8KKyAgc3RyaW5nX2FwcGVuZCAoZGVj bCwgIiEoIik7CisgIG1hbmdsZWQgPSBkbGFuZ190ZW1wbGF0ZV9hcmdzIChk ZWNsLCBtYW5nbGVkKTsKKyAgc3RyaW5nX2FwcGVuZCAoZGVjbCwgIikiKTsK KworICAvKiBDaGVjayBmb3IgdGVtcGxhdGUgbmFtZSBsZW5ndGggbWlzbWF0 Y2guICAqLworICBpZiAobWFuZ2xlZCAmJiAobWFuZ2xlZCAtIHN0YXJ0KSAh PSBsZW4pCisgICAgcmV0dXJuIE5VTEw7CisKKyAgcmV0dXJuIG1hbmdsZWQ7 Cit9CisKKy8qIEV4dHJhY3QgYW5kIGRlbWFuZ2xlIHRoZSBzeW1ib2wgaW4g TUFOR0xFRC4gIFJldHVybnMgdGhlIGRlbWFuZ2xlZAorICAgc2lnbmF0dXJl IG9uIHN1Y2Nlc3Mgb3IgTlVMTCBvbiBmYWlsdXJlLiAgKi8KKworY2hhciAq CitkbGFuZ19kZW1hbmdsZSAoY29uc3QgY2hhciAqbWFuZ2xlZCwgaW50IG9w dGlvbiBBVFRSSUJVVEVfVU5VU0VEKQoreworICBzdHJpbmcgZGVjbDsKKyAg Y2hhciAqZGVtYW5nbGVkID0gTlVMTDsKKworICBpZiAobWFuZ2xlZCA9PSBO VUxMIHx8ICptYW5nbGVkID09ICdcMCcpCisgICAgcmV0dXJuIE5VTEw7CisK KyAgaWYgKHN0cm5jbXAgKG1hbmdsZWQsICJfRCIsIDIpICE9IDApCisgICAg cmV0dXJuIE5VTEw7CisKKyAgc3RyaW5nX2luaXQgKCZkZWNsKTsKKworICBp ZiAoc3RyY21wIChtYW5nbGVkLCAiX0RtYWluIikgPT0gMCkKKyAgICB7Cisg ICAgICBzdHJpbmdfYXBwZW5kICgmZGVjbCwgIkQgbWFpbiIpOworICAgIH0K KyAgZWxzZQorICAgIHsKKyAgICAgIG1hbmdsZWQgKz0gMjsKKworICAgICAg aWYgKGRsYW5nX3BhcnNlX3N5bWJvbCAoJmRlY2wsIG1hbmdsZWQpID09IE5V TEwpCisJc3RyaW5nX2RlbGV0ZSAoJmRlY2wpOworICAgIH0KKworICBpZiAo c3RyaW5nX2xlbmd0aCAoJmRlY2wpID4gMCkKKyAgICB7CisgICAgICBzdHJp bmdfbmVlZCAoJmRlY2wsIDEpOworICAgICAgKihkZWNsLnApID0gJ1wwJzsK KyAgICAgIGRlbWFuZ2xlZCA9IGRlY2wuYjsKKyAgICB9CisKKyAgcmV0dXJu IGRlbWFuZ2xlZDsKK30KKwpkaWZmIC0tZ2l0IGEvbGliaWJlcnR5L3BleC1j b21tb24uYyBiL2xpYmliZXJ0eS9wZXgtY29tbW9uLmMKaW5kZXggNmZkM2Zk ZS4uMTQ2MDEwYSAxMDA2NDQKLS0tIGEvbGliaWJlcnR5L3BleC1jb21tb24u YworKysgYi9saWJpYmVydHkvcGV4LWNvbW1vbi5jCkBAIC0yNjcsNyArMjY3 LDggQEAgcGV4X3J1bl9pbl9lbnZpcm9ubWVudCAoc3RydWN0IHBleF9vYmog Km9iaiwgaW50IGZsYWdzLCBjb25zdCBjaGFyICpleGVjdXRhYmxlLAogICBp ZiAob3V0IDwgMCkKICAgICB7CiAgICAgICBvdXQgPSBvYmotPmZ1bmNzLT5v cGVuX3dyaXRlIChvYmosIG91dG5hbWUsCi0JCQkJICAgIChmbGFncyAmIFBF WF9CSU5BUllfT1VUUFVUKSAhPSAwKTsKKwkJCQkgICAgKGZsYWdzICYgUEVY X0JJTkFSWV9PVVRQVVQpICE9IDAsCisJCQkJICAgIChmbGFncyAmIFBFWF9T VERPVVRfQVBQRU5EKSAhPSAwKTsKICAgICAgIGlmIChvdXQgPCAwKQogCXsK IAkgICplcnIgPSBlcnJubzsKQEAgLTMxOSw4ICszMjAsOSBAQCBwZXhfcnVu X2luX2Vudmlyb25tZW50IChzdHJ1Y3QgcGV4X29iaiAqb2JqLCBpbnQgZmxh Z3MsIGNvbnN0IGNoYXIgKmV4ZWN1dGFibGUsCiAgICAgfQogICBlbHNlCiAg ICAgewotICAgICAgZXJyZGVzID0gb2JqLT5mdW5jcy0+b3Blbl93cml0ZSAo b2JqLCBlcnJuYW1lLCAKLQkJCQkgICAgICAgKGZsYWdzICYgUEVYX0JJTkFS WV9FUlJPUikgIT0gMCk7CisgICAgICBlcnJkZXMgPSBvYmotPmZ1bmNzLT5v cGVuX3dyaXRlIChvYmosIGVycm5hbWUsCisJCQkJICAgICAgIChmbGFncyAm IFBFWF9CSU5BUllfRVJST1IpICE9IDAsCisJCQkJICAgICAgIChmbGFncyAm IFBFWF9TVERFUlJfQVBQRU5EKSAhPSAwKTsKICAgICAgIGlmIChlcnJkZXMg PCAwKQogCXsKIAkgICplcnIgPSBlcnJubzsKZGlmZiAtLWdpdCBhL2xpYmli ZXJ0eS9wZXgtY29tbW9uLmggYi9saWJpYmVydHkvcGV4LWNvbW1vbi5oCmlu ZGV4IGFmMzM4ZTYuLmI2ZGIyNDggMTAwNjQ0Ci0tLSBhL2xpYmliZXJ0eS9w ZXgtY29tbW9uLmgKKysrIGIvbGliaWJlcnR5L3BleC1jb21tb24uaApAQCAt MTA0LDcgKzEwNCw3IEBAIHN0cnVjdCBwZXhfZnVuY3MKICAgLyogT3BlbiBm aWxlIE5BTUUgZm9yIHdyaXRpbmcuICBJZiBCSU5BUlkgaXMgbm9uLXplcm8s IG9wZW4gaW4KICAgICAgYmluYXJ5IG1vZGUuICBSZXR1cm4gPj0gMCBvbiBz dWNjZXNzLCAtMSBvbiBlcnJvci4gICovCiAgIGludCAoKm9wZW5fd3JpdGUp IChzdHJ1Y3QgcGV4X29iaiAqLCBjb25zdCBjaGFyICovKiBuYW1lICovLAot ICAgICAgICAgICAgICAgICAgICAgaW50IC8qIGJpbmFyeSAqLyk7CisgICAg ICAgICAgICAgICAgICAgICBpbnQgLyogYmluYXJ5ICovLCBpbnQgLyogYXBw ZW5kICovKTsKICAgLyogRXhlY3V0ZSBhIGNoaWxkIHByb2Nlc3MuICBGTEFH UywgRVhFQ1VUQUJMRSwgQVJHViwgRVJSIGFyZSBmcm9tCiAgICAgIHBleF9y dW4uICBJTiwgT1VULCBFUlJERVMsIFRPQ0xPU0UgYXJlIGFsbCBkZXNjcmlw dG9ycywgZnJvbQogICAgICBvcGVuX3JlYWQsIG9wZW5fd3JpdGUsIG9yIHBp cGUsIG9yIHRoZXkgYXJlIG9uZSBvZiBTVERJTl9GSUxFX05PLApkaWZmIC0t Z2l0IGEvbGliaWJlcnR5L3BleC1kamdwcC5jIGIvbGliaWJlcnR5L3BleC1k amdwcC5jCmluZGV4IDA3MjExMzkuLmIwMTRmZmEgMTAwNjQ0Ci0tLSBhL2xp YmliZXJ0eS9wZXgtZGpncHAuYworKysgYi9saWJpYmVydHkvcGV4LWRqZ3Bw LmMKQEAgLTQzLDcgKzQzLDcgQEAgZXh0ZXJuIGludCBlcnJubzsKICNlbmRp ZgogCiBzdGF0aWMgaW50IHBleF9kamdwcF9vcGVuX3JlYWQgKHN0cnVjdCBw ZXhfb2JqICosIGNvbnN0IGNoYXIgKiwgaW50KTsKLXN0YXRpYyBpbnQgcGV4 X2RqZ3BwX29wZW5fd3JpdGUgKHN0cnVjdCBwZXhfb2JqICosIGNvbnN0IGNo YXIgKiwgaW50KTsKK3N0YXRpYyBpbnQgcGV4X2RqZ3BwX29wZW5fd3JpdGUg KHN0cnVjdCBwZXhfb2JqICosIGNvbnN0IGNoYXIgKiwgaW50LCBpbnQpOwog c3RhdGljIHBpZF90IHBleF9kamdwcF9leGVjX2NoaWxkIChzdHJ1Y3QgcGV4 X29iaiAqLCBpbnQsIGNvbnN0IGNoYXIgKiwKIAkJCQkgIGNoYXIgKiBjb25z dCAqLCBjaGFyICogY29uc3QgKiwKIAkJCQkgIGludCwgaW50LCBpbnQsIGlu dCwKQEAgLTkwLDEwICs5MCwxMiBAQCBwZXhfZGpncHBfb3Blbl9yZWFkIChz dHJ1Y3QgcGV4X29iaiAqb2JqIEFUVFJJQlVURV9VTlVTRUQsCiAKIHN0YXRp YyBpbnQKIHBleF9kamdwcF9vcGVuX3dyaXRlIChzdHJ1Y3QgcGV4X29iaiAq b2JqIEFUVFJJQlVURV9VTlVTRUQsCi0JCSAgICAgIGNvbnN0IGNoYXIgKm5h bWUsIGludCBiaW5hcnkpCisJCSAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGlu dCBiaW5hcnksIGludCBhcHBlbmQpCiB7CiAgIC8qIE5vdGUgdGhhdCB3ZSBj YW4ndCB1c2UgT19FWENMIGhlcmUgYmVjYXVzZSBnY2MgbWF5IGhhdmUgYWxy ZWFkeQogICAgICBjcmVhdGVkIHRoZSB0ZW1wb3JhcnkgZmlsZSB2aWEgbWFr ZV90ZW1wX2ZpbGUuICAqLworICBpZiAoYXBwZW5kKQorICAgIHJldHVybiAt MTsKICAgcmV0dXJuIG9wZW4gKG5hbWUsCiAJICAgICAgIChPX1dST05MWSB8 IE9fQ1JFQVQgfCBPX1RSVU5DCiAJCXwgKGJpbmFyeSA/IE9fQklOQVJZIDog T19URVhUKSksCmRpZmYgLS1naXQgYS9saWJpYmVydHkvcGV4LXVuaXguYyBi L2xpYmliZXJ0eS9wZXgtdW5peC5jCmluZGV4IGFkZGY4ZWUuLjA3MTUxMTUg MTAwNjQ0Ci0tLSBhL2xpYmliZXJ0eS9wZXgtdW5peC5jCisrKyBiL2xpYmli ZXJ0eS9wZXgtdW5peC5jCkBAIC0zMDEsNyArMzAxLDcgQEAgcGV4X3dhaXQg KHN0cnVjdCBwZXhfb2JqICpvYmosIHBpZF90IHBpZCwgaW50ICpzdGF0dXMs IHN0cnVjdCBwZXhfdGltZSAqdGltZSkKIHN0YXRpYyB2b2lkIHBleF9jaGls ZF9lcnJvciAoc3RydWN0IHBleF9vYmogKiwgY29uc3QgY2hhciAqLCBjb25z dCBjaGFyICosIGludCkKICAgICAgQVRUUklCVVRFX05PUkVUVVJOOwogc3Rh dGljIGludCBwZXhfdW5peF9vcGVuX3JlYWQgKHN0cnVjdCBwZXhfb2JqICos IGNvbnN0IGNoYXIgKiwgaW50KTsKLXN0YXRpYyBpbnQgcGV4X3VuaXhfb3Bl bl93cml0ZSAoc3RydWN0IHBleF9vYmogKiwgY29uc3QgY2hhciAqLCBpbnQp Oworc3RhdGljIGludCBwZXhfdW5peF9vcGVuX3dyaXRlIChzdHJ1Y3QgcGV4 X29iaiAqLCBjb25zdCBjaGFyICosIGludCwgaW50KTsKIHN0YXRpYyBwaWRf dCBwZXhfdW5peF9leGVjX2NoaWxkIChzdHJ1Y3QgcGV4X29iaiAqLCBpbnQs IGNvbnN0IGNoYXIgKiwKIAkJCQkgY2hhciAqIGNvbnN0ICosIGNoYXIgKiBj b25zdCAqLAogCQkJCSBpbnQsIGludCwgaW50LCBpbnQsCkBAIC0zNTAsMTEg KzM1MCwxMiBAQCBwZXhfdW5peF9vcGVuX3JlYWQgKHN0cnVjdCBwZXhfb2Jq ICpvYmogQVRUUklCVVRFX1VOVVNFRCwgY29uc3QgY2hhciAqbmFtZSwKIAog c3RhdGljIGludAogcGV4X3VuaXhfb3Blbl93cml0ZSAoc3RydWN0IHBleF9v YmogKm9iaiBBVFRSSUJVVEVfVU5VU0VELCBjb25zdCBjaGFyICpuYW1lLAot CQkgICAgIGludCBiaW5hcnkgQVRUUklCVVRFX1VOVVNFRCkKKwkJICAgICBp bnQgYmluYXJ5IEFUVFJJQlVURV9VTlVTRUQsIGludCBhcHBlbmQpCiB7CiAg IC8qIE5vdGUgdGhhdCB3ZSBjYW4ndCB1c2UgT19FWENMIGhlcmUgYmVjYXVz ZSBnY2MgbWF5IGhhdmUgYWxyZWFkeQogICAgICBjcmVhdGVkIHRoZSB0ZW1w b3JhcnkgZmlsZSB2aWEgbWFrZV90ZW1wX2ZpbGUuICAqLwotICByZXR1cm4g b3BlbiAobmFtZSwgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQywgUFVC TElDX01PREUpOworICByZXR1cm4gb3BlbiAobmFtZSwgT19XUk9OTFkgfCBP X0NSRUFUCisJCSAgICAgfCAoYXBwZW5kID8gT19BUFBFTkQgOiBPX1RSVU5D KSwgUFVCTElDX01PREUpOwogfQogCiAvKiBDbG9zZSBhIGZpbGUuICAqLwpk aWZmIC0tZ2l0IGEvbGliaWJlcnR5L3BleC13aW4zMi5jIGIvbGliaWJlcnR5 L3BleC13aW4zMi5jCmluZGV4IDhiOWQ0ZjAuLjY2ZDJmMTEgMTAwNjQ0Ci0t LSBhL2xpYmliZXJ0eS9wZXgtd2luMzIuYworKysgYi9saWJpYmVydHkvcGV4 LXdpbjMyLmMKQEAgLTc4LDcgKzc4LDcgQEAgYmFja3NsYXNoaWZ5IChjaGFy ICpzKQogfQogCiBzdGF0aWMgaW50IHBleF93aW4zMl9vcGVuX3JlYWQgKHN0 cnVjdCBwZXhfb2JqICosIGNvbnN0IGNoYXIgKiwgaW50KTsKLXN0YXRpYyBp bnQgcGV4X3dpbjMyX29wZW5fd3JpdGUgKHN0cnVjdCBwZXhfb2JqICosIGNv bnN0IGNoYXIgKiwgaW50KTsKK3N0YXRpYyBpbnQgcGV4X3dpbjMyX29wZW5f d3JpdGUgKHN0cnVjdCBwZXhfb2JqICosIGNvbnN0IGNoYXIgKiwgaW50LCBp bnQpOwogc3RhdGljIHBpZF90IHBleF93aW4zMl9leGVjX2NoaWxkIChzdHJ1 Y3QgcGV4X29iaiAqLCBpbnQsIGNvbnN0IGNoYXIgKiwKIAkJCQkgIGNoYXIg KiBjb25zdCAqLCBjaGFyICogY29uc3QgKiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQsIGludCwgaW50LCBpbnQsCkBAIC0xMjYs MTAgKzEyNiwxMiBAQCBwZXhfd2luMzJfb3Blbl9yZWFkIChzdHJ1Y3QgcGV4 X29iaiAqb2JqIEFUVFJJQlVURV9VTlVTRUQsIGNvbnN0IGNoYXIgKm5hbWUs CiAKIHN0YXRpYyBpbnQKIHBleF93aW4zMl9vcGVuX3dyaXRlIChzdHJ1Y3Qg cGV4X29iaiAqb2JqIEFUVFJJQlVURV9VTlVTRUQsIGNvbnN0IGNoYXIgKm5h bWUsCi0JCSAgICAgIGludCBiaW5hcnkpCisJCSAgICAgIGludCBiaW5hcnks IGludCBhcHBlbmQpCiB7CiAgIC8qIE5vdGUgdGhhdCB3ZSBjYW4ndCB1c2Ug T19FWENMIGhlcmUgYmVjYXVzZSBnY2MgbWF5IGhhdmUgYWxyZWFkeQogICAg ICBjcmVhdGVkIHRoZSB0ZW1wb3JhcnkgZmlsZSB2aWEgbWFrZV90ZW1wX2Zp bGUuICAqLworICBpZiAoYXBwZW5kKQorICAgIHJldHVybiAtMTsKICAgcmV0 dXJuIF9vcGVuIChuYW1lLAogCQkoX09fV1JPTkxZIHwgX09fQ1JFQVQgfCBf T19UUlVOQwogCQkgfCAoYmluYXJ5ID8gX09fQklOQVJZIDogX09fVEVYVCkp LApkaWZmIC0tZ2l0IGEvbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMg Yi9saWJpYmVydHkvc2ltcGxlLW9iamVjdC1lbGYuYwppbmRleCA0MTk2YzUz Li44NTk0Y2Y5IDEwMDY0NAotLS0gYS9saWJpYmVydHkvc2ltcGxlLW9iamVj dC1lbGYuYworKysgYi9saWJpYmVydHkvc2ltcGxlLW9iamVjdC1lbGYuYwpA QCAtNjk4LDYgKzY5OCw3IEBAIHNpbXBsZV9vYmplY3RfZWxmX3dyaXRlX2Vo ZHIgKHNpbXBsZV9vYmplY3Rfd3JpdGUgKnNvYmosIGludCBkZXNjcmlwdG9y LAogICB1bnNpZ25lZCBjaGFyIGJ1ZltzaXplb2YgKEVsZjY0X0V4dGVybmFs X0VoZHIpXTsKICAgc2ltcGxlX29iamVjdF93cml0ZV9zZWN0aW9uICpzZWN0 aW9uOwogICB1bnNpZ25lZCBpbnQgc2hudW07CisgIHVuc2lnbmVkIGludCBz aHN0cm5keDsKIAogICBmbnMgPSBhdHRycy0+dHlwZV9mdW5jdGlvbnM7CiAg IGNsID0gYXR0cnMtPmVpX2NsYXNzOwpAQCAtNzQzLDkgKzc0NCwxNyBAQCBz aW1wbGVfb2JqZWN0X2VsZl93cml0ZV9laGRyIChzaW1wbGVfb2JqZWN0X3dy aXRlICpzb2JqLCBpbnQgZGVzY3JpcHRvciwKIAkJIChjbCA9PSBFTEZDTEFT UzMyCiAJCSAgPyBzaXplb2YgKEVsZjMyX0V4dGVybmFsX1NoZHIpCiAJCSAg OiBzaXplb2YgKEVsZjY0X0V4dGVybmFsX1NoZHIpKSk7Ci0gIEVMRl9TRVRf RklFTEQgKGZucywgY2wsIEVoZHIsIGJ1ZiwgZV9zaG51bSwgRWxmX0hhbGYs IHNobnVtKTsKLSAgRUxGX1NFVF9GSUVMRCAoZm5zLCBjbCwgRWhkciwgYnVm LCBlX3Noc3RybmR4LCBFbGZfSGFsZiwKLQkJIHNobnVtID09IDAgPyAwIDog c2hudW0gLSAxKTsKKyAgRUxGX1NFVF9GSUVMRCAoZm5zLCBjbCwgRWhkciwg YnVmLCBlX3NobnVtLCBFbGZfSGFsZiwKKwkJIHNobnVtID49IFNITl9MT1JF U0VSVkUgPyAwIDogc2hudW0pOworICBpZiAoc2hudW0gPT0gMCkKKyAgICBz aHN0cm5keCA9IDA7CisgIGVsc2UKKyAgICB7CisgICAgICBzaHN0cm5keCA9 IHNobnVtIC0gMTsKKyAgICAgIGlmIChzaHN0cm5keCA+PSBTSE5fTE9SRVNF UlZFKQorCXNoc3RybmR4ID0gU0hOX1hJTkRFWDsKKyAgICB9CisgIEVMRl9T RVRfRklFTEQgKGZucywgY2wsIEVoZHIsIGJ1ZiwgZV9zaHN0cm5keCwgRWxm X0hhbGYsIHNoc3RybmR4KTsKIAogICByZXR1cm4gc2ltcGxlX29iamVjdF9p bnRlcm5hbF93cml0ZSAoZGVzY3JpcHRvciwgMCwgYnVmLCBlaGRyX3NpemUs CiAJCQkJICAgICAgIGVycm1zZywgZXJyKTsKQEAgLTc1OCw4ICs3NjcsOCBA QCBzaW1wbGVfb2JqZWN0X2VsZl93cml0ZV9zaGRyIChzaW1wbGVfb2JqZWN0 X3dyaXRlICpzb2JqLCBpbnQgZGVzY3JpcHRvciwKIAkJCSAgICAgIG9mZl90 IG9mZnNldCwgdW5zaWduZWQgaW50IHNoX25hbWUsCiAJCQkgICAgICB1bnNp Z25lZCBpbnQgc2hfdHlwZSwgdW5zaWduZWQgaW50IHNoX2ZsYWdzLAogCQkJ ICAgICAgdW5zaWduZWQgaW50IHNoX29mZnNldCwgdW5zaWduZWQgaW50IHNo X3NpemUsCi0JCQkgICAgICB1bnNpZ25lZCBpbnQgc2hfYWRkcmFsaWduLCBj b25zdCBjaGFyICoqZXJybXNnLAotCQkJICAgICAgaW50ICplcnIpCisJCQkg ICAgICB1bnNpZ25lZCBpbnQgc2hfbGluaywgdW5zaWduZWQgaW50IHNoX2Fk ZHJhbGlnbiwKKwkJCSAgICAgIGNvbnN0IGNoYXIgKiplcnJtc2csIGludCAq ZXJyKQogewogICBzdHJ1Y3Qgc2ltcGxlX29iamVjdF9lbGZfYXR0cmlidXRl cyAqYXR0cnMgPQogICAgIChzdHJ1Y3Qgc2ltcGxlX29iamVjdF9lbGZfYXR0 cmlidXRlcyAqKSBzb2JqLT5kYXRhOwpAQCAtNzgxLDcgKzc5MCw3IEBAIHNp bXBsZV9vYmplY3RfZWxmX3dyaXRlX3NoZHIgKHNpbXBsZV9vYmplY3Rfd3Jp dGUgKnNvYmosIGludCBkZXNjcmlwdG9yLAogICBFTEZfU0VUX0ZJRUxEIChm bnMsIGNsLCBTaGRyLCBidWYsIHNoX2ZsYWdzLCBFbGZfQWRkciwgc2hfZmxh Z3MpOwogICBFTEZfU0VUX0ZJRUxEIChmbnMsIGNsLCBTaGRyLCBidWYsIHNo X29mZnNldCwgRWxmX0FkZHIsIHNoX29mZnNldCk7CiAgIEVMRl9TRVRfRklF TEQgKGZucywgY2wsIFNoZHIsIGJ1Ziwgc2hfc2l6ZSwgRWxmX0FkZHIsIHNo X3NpemUpOwotICAvKiBzaF9saW5rIGxlZnQgYXMgemVyby4gICovCisgIEVM Rl9TRVRfRklFTEQgKGZucywgY2wsIFNoZHIsIGJ1Ziwgc2hfbGluaywgRWxm X1dvcmQsIHNoX2xpbmspOwogICAvKiBzaF9pbmZvIGxlZnQgYXMgemVyby4g ICovCiAgIEVMRl9TRVRfRklFTEQgKGZucywgY2wsIFNoZHIsIGJ1Ziwgc2hf YWRkcmFsaWduLCBFbGZfQWRkciwgc2hfYWRkcmFsaWduKTsKICAgLyogc2hf ZW50c2l6ZSBsZWZ0IGFzIHplcm8uICAqLwpAQCAtODEyLDYgKzgyMSw4IEBA IHNpbXBsZV9vYmplY3RfZWxmX3dyaXRlX3RvX2ZpbGUgKHNpbXBsZV9vYmpl Y3Rfd3JpdGUgKnNvYmosIGludCBkZXNjcmlwdG9yLAogICB1bnNpZ25lZCBp bnQgc2hudW07CiAgIHNpemVfdCBzaGRyX29mZnNldDsKICAgc2l6ZV90IHNo X29mZnNldDsKKyAgdW5zaWduZWQgaW50IGZpcnN0X3NoX3NpemU7CisgIHVu c2lnbmVkIGludCBmaXJzdF9zaF9saW5rOwogICBzaXplX3Qgc2hfbmFtZTsK ICAgdW5zaWduZWQgY2hhciB6ZXJvOwogCkBAIC04NDIsOCArODUzLDE3IEBA IHNpbXBsZV9vYmplY3RfZWxmX3dyaXRlX3RvX2ZpbGUgKHNpbXBsZV9vYmpl Y3Rfd3JpdGUgKnNvYmosIGludCBkZXNjcmlwdG9yLAogICBzaGRyX29mZnNl dCA9IGVoZHJfc2l6ZTsKICAgc2hfb2Zmc2V0ID0gc2hkcl9vZmZzZXQgKyBz aG51bSAqIHNoZHJfc2l6ZTsKIAorICBpZiAoc2hudW0gPCBTSE5fTE9SRVNF UlZFKQorICAgIGZpcnN0X3NoX3NpemUgPSAwOworICBlbHNlCisgICAgZmly c3Rfc2hfc2l6ZSA9IHNobnVtOworICBpZiAoc2hudW0gLSAxIDwgU0hOX0xP UkVTRVJWRSkKKyAgICBmaXJzdF9zaF9saW5rID0gMDsKKyAgZWxzZQorICAg IGZpcnN0X3NoX2xpbmsgPSBzaG51bSAtIDE7CiAgIGlmICghc2ltcGxlX29i amVjdF9lbGZfd3JpdGVfc2hkciAoc29iaiwgZGVzY3JpcHRvciwgc2hkcl9v ZmZzZXQsCi0JCQkJICAgICAwLCAwLCAwLCAwLCAwLCAwLCAmZXJybXNnLCBl cnIpKQorCQkJCSAgICAgMCwgMCwgMCwgMCwgZmlyc3Rfc2hfc2l6ZSwgZmly c3Rfc2hfbGluaywKKwkJCQkgICAgIDAsICZlcnJtc2csIGVycikpCiAgICAg cmV0dXJuIGVycm1zZzsKIAogICBzaGRyX29mZnNldCArPSBzaGRyX3NpemU7 CkBAIC04ODcsNyArOTA3LDcgQEAgc2ltcGxlX29iamVjdF9lbGZfd3JpdGVf dG9fZmlsZSAoc2ltcGxlX29iamVjdF93cml0ZSAqc29iaiwgaW50IGRlc2Ny aXB0b3IsCiAKICAgICAgIGlmICghc2ltcGxlX29iamVjdF9lbGZfd3JpdGVf c2hkciAoc29iaiwgZGVzY3JpcHRvciwgc2hkcl9vZmZzZXQsCiAJCQkJCSBz aF9uYW1lLCBTSFRfUFJPR0JJVFMsIDAsIHNoX29mZnNldCwKLQkJCQkJIHNo X3NpemUsIDFVIDw8IHNlY3Rpb24tPmFsaWduLAorCQkJCQkgc2hfc2l6ZSwg MCwgMVUgPDwgc2VjdGlvbi0+YWxpZ24sCiAJCQkJCSAmZXJybXNnLCBlcnIp KQogCXJldHVybiBlcnJtc2c7CiAKQEAgLTg5OCw3ICs5MTgsNyBAQCBzaW1w bGVfb2JqZWN0X2VsZl93cml0ZV90b19maWxlIChzaW1wbGVfb2JqZWN0X3dy aXRlICpzb2JqLCBpbnQgZGVzY3JpcHRvciwKIAogICBpZiAoIXNpbXBsZV9v YmplY3RfZWxmX3dyaXRlX3NoZHIgKHNvYmosIGRlc2NyaXB0b3IsIHNoZHJf b2Zmc2V0LAogCQkJCSAgICAgc2hfbmFtZSwgU0hUX1NUUlRBQiwgMCwgc2hf b2Zmc2V0LAotCQkJCSAgICAgc2hfbmFtZSArIHN0cmxlbiAoIi5zaHN0cnRh YiIpICsgMSwKKwkJCQkgICAgIHNoX25hbWUgKyBzdHJsZW4gKCIuc2hzdHJ0 YWIiKSArIDEsIDAsCiAJCQkJICAgICAxLCAmZXJybXNnLCBlcnIpKQogICAg IHJldHVybiBlcnJtc2c7CiAKZGlmZiAtLWdpdCBhL2xpYmliZXJ0eS90ZXN0 c3VpdGUvTWFrZWZpbGUuaW4gYi9saWJpYmVydHkvdGVzdHN1aXRlL01ha2Vm aWxlLmluCmluZGV4IDY5YWMxZjUuLmJiMmRiNjcgMTAwNjQ0Ci0tLSBhL2xp YmliZXJ0eS90ZXN0c3VpdGUvTWFrZWZpbGUuaW4KKysrIGIvbGliaWJlcnR5 L3Rlc3RzdWl0ZS9NYWtlZmlsZS5pbgpAQCAtNDUsMTIgKzQ1LDE1IEBAIGFs bDoKICMgQ0hFQ0sgaXMgc2V0IHRvICJyZWFsbHlfY2hlY2siIG9yIHRoZSBl bXB0eSBzdHJpbmcgYnkgY29uZmlndXJlLgogY2hlY2s6IEBDSEVDS0AKIAot cmVhbGx5LWNoZWNrOiBjaGVjay1jcGx1cy1kZW0gY2hlY2stcGV4ZWN1dGUg Y2hlY2stZXhwYW5kYXJndgorcmVhbGx5LWNoZWNrOiBjaGVjay1jcGx1cy1k ZW0gY2hlY2stZC1kZW1hbmdsZSBjaGVjay1wZXhlY3V0ZSBjaGVjay1leHBh bmRhcmd2CiAKICMgUnVuIHNvbWUgdGVzdHMgb2YgdGhlIGRlbWFuZ2xlci4K IGNoZWNrLWNwbHVzLWRlbTogdGVzdC1kZW1hbmdsZSAkKHNyY2RpcikvZGVt YW5nbGUtZXhwZWN0ZWQKIAkuL3Rlc3QtZGVtYW5nbGUgPCAkKHNyY2Rpcikv ZGVtYW5nbGUtZXhwZWN0ZWQKIAorY2hlY2stZC1kZW1hbmdsZTogdGVzdC1k ZW1hbmdsZSAkKHNyY2RpcikvZC1kZW1hbmdsZS1leHBlY3RlZAorCS4vdGVz dC1kZW1hbmdsZSA8ICQoc3JjZGlyKS9kLWRlbWFuZ2xlLWV4cGVjdGVkCisK ICMgQ2hlY2sgdGhlIHBleGVjdXRlIGNvZGUuCiBjaGVjay1wZXhlY3V0ZTog dGVzdC1wZXhlY3V0ZQogCS4vdGVzdC1wZXhlY3V0ZQpAQCAtNTksNiArNjIs MTAgQEAgY2hlY2stcGV4ZWN1dGU6IHRlc3QtcGV4ZWN1dGUKIGNoZWNrLWV4 cGFuZGFyZ3Y6IHRlc3QtZXhwYW5kYXJndgogCS4vdGVzdC1leHBhbmRhcmd2 CiAKKyMgUnVuIHRoZSBkZW1hbmdsZXIgZnV6emVyCitmdXp6LWRlbWFuZ2xl cjogZGVtYW5nbGVyLWZ1enplcgorCS4vZGVtYW5nbGVyLWZ1enplcgorCiBU RVNUX0NPTVBJTEUgPSAkKENDKSBAREVGU0AgJChMSUJDRkxBR1MpIC1JLi4g LUkkKElOQ0RJUikgJChIREVGSU5FUykKIHRlc3QtZGVtYW5nbGU6ICQoc3Jj ZGlyKS90ZXN0LWRlbWFuZ2xlLmMgLi4vbGliaWJlcnR5LmEKIAkkKFRFU1Rf Q09NUElMRSkgLW8gdGVzdC1kZW1hbmdsZSBcCkBAIC03Miw2ICs3OSwxMCBA QCB0ZXN0LWV4cGFuZGFyZ3Y6ICQoc3JjZGlyKS90ZXN0LWV4cGFuZGFyZ3Yu YyAuLi9saWJpYmVydHkuYQogCSQoVEVTVF9DT01QSUxFKSAtREhBVkVfQ09O RklHX0ggLUkuLiAtbyB0ZXN0LWV4cGFuZGFyZ3YgXAogCQkkKHNyY2Rpcikv dGVzdC1leHBhbmRhcmd2LmMgLi4vbGliaWJlcnR5LmEKIAorZGVtYW5nbGVy LWZ1enplcjogJChzcmNkaXIpL2RlbWFuZ2xlci1mdXp6ZXIuYyAuLi9saWJp YmVydHkuYQorCSQoVEVTVF9DT01QSUxFKSAtbyBkZW1hbmdsZXItZnV6emVy IFwKKwkJJChzcmNkaXIpL2RlbWFuZ2xlci1mdXp6ZXIuYyAuLi9saWJpYmVy dHkuYQorCiAjIFN0YW5kYXJkIChlaXRoZXIgR05VIG9yIEN5Z251cykgcnVs ZXMgd2UgZG9uJ3QgdXNlLgogaHRtbCBpbnN0YWxsLWh0bWwgaW5mbyBpbnN0 YWxsLWluZm8gY2xlYW4taW5mbyBkdmkgcGRmIGluc3RhbGwtcGRmIFwKIGlu c3RhbGwgZXRhZ3MgdGFncyBpbnN0YWxsY2hlY2s6CkBAIC04MSw2ICs5Miw3 IEBAIG1vc3RseWNsZWFuOgogCXJtIC1mIHRlc3QtZGVtYW5nbGUKIAlybSAt ZiB0ZXN0LXBleGVjdXRlCiAJcm0gLWYgdGVzdC1leHBhbmRhcmd2CisJcm0g LWYgZGVtYW5nbGVyLWZ1enplcgogCXJtIC1mIGNvcmUKIGNsZWFuOiBtb3N0 bHljbGVhbgogZGlzdGNsZWFuOiBjbGVhbgpkaWZmIC0tZ2l0IGEvbGliaWJl cnR5L3Rlc3RzdWl0ZS9kLWRlbWFuZ2xlLWV4cGVjdGVkIGIvbGliaWJlcnR5 L3Rlc3RzdWl0ZS9kLWRlbWFuZ2xlLWV4cGVjdGVkCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhZWFjYjgKLS0tIC9kZXYvbnVsbAor KysgYi9saWJpYmVydHkvdGVzdHN1aXRlL2QtZGVtYW5nbGUtZXhwZWN0ZWQK QEAgLTAsMCArMSw5MzYgQEAKKyMgVGhpcyBmaWxlIGhvbGRzIHRlc3QgY2Fz ZXMgZm9yIHRoZSBEIGRlbWFuZ2xlci4KKyMgRWFjaCB0ZXN0IGNhc2UgbG9v a3MgbGlrZSB0aGlzOgorIyAgb3B0aW9ucworIyAgaW5wdXQgdG8gYmUgZGVt YW5nbGVkCisjICBleHBlY3RlZCBvdXRwdXQKKyMKKyMgU2VlIGRlbWFuZ2xl LWV4cGVjdGVkIGZvciBkb2N1bWVudGF0aW9uIG9mIHN1cHBvcnRlZCBvcHRp b25zLgorIworIyBBIGxpbmUgc3RhcnRpbmcgd2l0aCBgIycgaXMgaWdub3Jl ZC4KKyMgSG93ZXZlciwgYmxhbmsgbGluZXMgaW4gdGhpcyBmaWxlIGFyZSBO T1QgaWdub3JlZC4KKyMKKyMjIyMjIyMjIyMjIworIworIyBDb3ZlcmFnZSBU ZXN0cworIworLS1mb3JtYXQ9ZGxhbmcKK19EbWFpbgorRCBtYWluCisjCist LWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGU0dGVzdFBGTEFpWWkKK2RlbWFu Z2xlLnRlc3QKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0 RmFadgorZGVtYW5nbGUudGVzdChjaGFyKQorIworLS1mb3JtYXQ9ZGxhbmcK K19EOGRlbWFuZ2xlNHRlc3RGYlp2CitkZW1hbmdsZS50ZXN0KGJvb2wpCisj CistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGU0dGVzdEZjWnYKK2RlbWFu Z2xlLnRlc3QoY3JlYWwpCisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5n bGU0dGVzdEZkWnYKK2RlbWFuZ2xlLnRlc3QoZG91YmxlKQorIworLS1mb3Jt YXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RGZVp2CitkZW1hbmdsZS50ZXN0 KHJlYWwpCisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGU0dGVzdEZm WnYKK2RlbWFuZ2xlLnRlc3QoZmxvYXQpCisjCistLWZvcm1hdD1kbGFuZwor X0Q4ZGVtYW5nbGU0dGVzdEZnWnYKK2RlbWFuZ2xlLnRlc3QoYnl0ZSkKKyMK Ky0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0RmhadgorZGVtYW5n bGUudGVzdCh1Ynl0ZSkKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmds ZTR0ZXN0RmladgorZGVtYW5nbGUudGVzdChpbnQpCisjCistLWZvcm1hdD1k bGFuZworX0Q4ZGVtYW5nbGU0dGVzdEZqWnYKK2RlbWFuZ2xlLnRlc3QoaXJl YWwpCisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGU0dGVzdEZrWnYK K2RlbWFuZ2xlLnRlc3QodWludCkKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhk ZW1hbmdsZTR0ZXN0RmxadgorZGVtYW5nbGUudGVzdChsb25nKQorIworLS1m b3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RGbVp2CitkZW1hbmdsZS50 ZXN0KHVsb25nKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRl c3RGblp2CitkZW1hbmdsZS50ZXN0KG5vbmUpCisjCistLWZvcm1hdD1kbGFu ZworX0Q4ZGVtYW5nbGU0dGVzdEZvWnYKK2RlbWFuZ2xlLnRlc3QoaWZsb2F0 KQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RGcFp2Citk ZW1hbmdsZS50ZXN0KGlkb3VibGUpCisjCistLWZvcm1hdD1kbGFuZworX0Q4 ZGVtYW5nbGU0dGVzdEZxWnYKK2RlbWFuZ2xlLnRlc3QoY2Zsb2F0KQorIwor LS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RGclp2CitkZW1hbmds ZS50ZXN0KGNkb3VibGUpCisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5n bGU0dGVzdEZzWnYKK2RlbWFuZ2xlLnRlc3Qoc2hvcnQpCisjCistLWZvcm1h dD1kbGFuZworX0Q4ZGVtYW5nbGU0dGVzdEZ0WnYKK2RlbWFuZ2xlLnRlc3Qo dXNob3J0KQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RG dVp2CitkZW1hbmdsZS50ZXN0KHdjaGFyKQorIworLS1mb3JtYXQ9ZGxhbmcK K19EOGRlbWFuZ2xlNHRlc3RGdlp2CitkZW1hbmdsZS50ZXN0KHZvaWQpCisj CistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGU0dGVzdEZ3WnYKK2RlbWFu Z2xlLnRlc3QoZGNoYXIpCisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5n bGU0dGVzdEZPYVp2CitkZW1hbmdsZS50ZXN0KHNoYXJlZChjaGFyKSkKKyMK Ky0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0RnhhWnYKK2RlbWFu Z2xlLnRlc3QoY29uc3QoY2hhcikpCisjCistLWZvcm1hdD1kbGFuZworX0Q4 ZGVtYW5nbGU0dGVzdEZ5YVp2CitkZW1hbmdsZS50ZXN0KGltbXV0YWJsZShj aGFyKSkKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0Rk5n YVp2CitkZW1hbmdsZS50ZXN0KGlub3V0KGNoYXIpKQorIworLS1mb3JtYXQ9 ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RGT3hhWnYKK2RlbWFuZ2xlLnRlc3Qo c2hhcmVkKGNvbnN0KGNoYXIpKSkKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhk ZW1hbmdsZTR0ZXN0Rk9OZ2FadgorZGVtYW5nbGUudGVzdChzaGFyZWQoaW5v dXQoY2hhcikpKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRl c3RGQWFadgorZGVtYW5nbGUudGVzdChjaGFyW10pCisjCistLWZvcm1hdD1k bGFuZworX0Q4ZGVtYW5nbGU0dGVzdEZBQWFadgorZGVtYW5nbGUudGVzdChj aGFyW11bXSkKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0 RkFBQWFadgorZGVtYW5nbGUudGVzdChjaGFyW11bXVtdKQorIworLS1mb3Jt YXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RGRzQyYVp2CitkZW1hbmdsZS50 ZXN0KGNoYXJbNDJdKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xl NHRlc3RGRzQyRzQyYVp2CitkZW1hbmdsZS50ZXN0KGNoYXJbNDJdWzQyXSkK KyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0Rkc0Mkc0Mkc0 MmFadgorZGVtYW5nbGUudGVzdChjaGFyWzQyXVs0Ml1bNDJdKQorIworLS1m b3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RGRzEyMzQ1Njc4OTBhWnYK K2RlbWFuZ2xlLnRlc3QoY2hhclsxMjM0NTY3ODkwXSkKKyMKKy0tZm9ybWF0 PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0RkhhYVp2CitkZW1hbmdsZS50ZXN0 KGNoYXJbY2hhcl0pCisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGU0 dGVzdEZISGFhYVp2CitkZW1hbmdsZS50ZXN0KGNoYXJbY2hhcltjaGFyXV0p CisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGU0dGVzdEZQYVp2Citk ZW1hbmdsZS50ZXN0KGNoYXIqKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRl bWFuZ2xlNHRlc3RGUFBhWnYKK2RlbWFuZ2xlLnRlc3QoY2hhcioqKQorIwor LS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RGUFBQYVp2CitkZW1h bmdsZS50ZXN0KGNoYXIqKiopCisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVt YW5nbGU0dGVzdEZOaEc4Z1p2CitkZW1hbmdsZS50ZXN0KF9fdmVjdG9yKGJ5 dGVbOF0pKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RG TmhHMTZnWnYKK2RlbWFuZ2xlLnRlc3QoX192ZWN0b3IoYnl0ZVsxNl0pKQor IworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RGTmhHMzJnWnYK K2RlbWFuZ2xlLnRlc3QoX192ZWN0b3IoYnl0ZVszMl0pKQorIworLS1mb3Jt YXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RGTmhHNHNadgorZGVtYW5nbGUu dGVzdChfX3ZlY3RvcihzaG9ydFs0XSkpCisjCistLWZvcm1hdD1kbGFuZwor X0Q4ZGVtYW5nbGU0dGVzdEZOaEc4c1p2CitkZW1hbmdsZS50ZXN0KF9fdmVj dG9yKHNob3J0WzhdKSkKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmds ZTR0ZXN0Rk5oRzE2c1p2CitkZW1hbmdsZS50ZXN0KF9fdmVjdG9yKHNob3J0 WzE2XSkpCisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGU0dGVzdEZO aEcyaVp2CitkZW1hbmdsZS50ZXN0KF9fdmVjdG9yKGludFsyXSkpCisjCist LWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGU0dGVzdEZOaEc0aVp2CitkZW1h bmdsZS50ZXN0KF9fdmVjdG9yKGludFs0XSkpCisjCistLWZvcm1hdD1kbGFu ZworX0Q4ZGVtYW5nbGU0dGVzdEZOaEc4aVp2CitkZW1hbmdsZS50ZXN0KF9f dmVjdG9yKGludFs4XSkpCisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5n bGU0dGVzdEZOaEcxbFp2CitkZW1hbmdsZS50ZXN0KF9fdmVjdG9yKGxvbmdb MV0pKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RGTmhH MmxadgorZGVtYW5nbGUudGVzdChfX3ZlY3Rvcihsb25nWzJdKSkKKyMKKy0t Zm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0Rk5oRzRsWnYKK2RlbWFu Z2xlLnRlc3QoX192ZWN0b3IobG9uZ1s0XSkpCisjCistLWZvcm1hdD1kbGFu ZworX0Q4ZGVtYW5nbGU0dGVzdEZOaEcyZlp2CitkZW1hbmdsZS50ZXN0KF9f dmVjdG9yKGZsb2F0WzJdKSkKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1h bmdsZTR0ZXN0Rk5oRzRmWnYKK2RlbWFuZ2xlLnRlc3QoX192ZWN0b3IoZmxv YXRbNF0pKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RG TmhHOGZadgorZGVtYW5nbGUudGVzdChfX3ZlY3RvcihmbG9hdFs4XSkpCisj CistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGU0dGVzdEZOaEcxZFp2Citk ZW1hbmdsZS50ZXN0KF9fdmVjdG9yKGRvdWJsZVsxXSkpCisjCistLWZvcm1h dD1kbGFuZworX0Q4ZGVtYW5nbGU0dGVzdEZOaEcyZFp2CitkZW1hbmdsZS50 ZXN0KF9fdmVjdG9yKGRvdWJsZVsyXSkpCisjCistLWZvcm1hdD1kbGFuZwor X0Q4ZGVtYW5nbGU0dGVzdEZOaEc0ZFp2CitkZW1hbmdsZS50ZXN0KF9fdmVj dG9yKGRvdWJsZVs0XSkpCisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5n bGU0dGVzdEZJNWlkZW50WnYKK2RlbWFuZ2xlLnRlc3QoaWRlbnQpCisjCist LWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGU0dGVzdEZJNWlkZW50NHRlc3Ra dgorZGVtYW5nbGUudGVzdChpZGVudC50ZXN0KQorIworLS1mb3JtYXQ9ZGxh bmcKK19EOGRlbWFuZ2xlNHRlc3RGQzVjbGFzc1p2CitkZW1hbmdsZS50ZXN0 KGNsYXNzKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RG QzVjbGFzczR0ZXN0WnYKK2RlbWFuZ2xlLnRlc3QoY2xhc3MudGVzdCkKKyMK Ky0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0RlM2c3RydWN0WnYK K2RlbWFuZ2xlLnRlc3Qoc3RydWN0KQorIworLS1mb3JtYXQ9ZGxhbmcKK19E OGRlbWFuZ2xlNHRlc3RGUzZzdHJ1Y3Q0dGVzdFp2CitkZW1hbmdsZS50ZXN0 KHN0cnVjdC50ZXN0KQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xl NHRlc3RGRTRlbnVtWnYKK2RlbWFuZ2xlLnRlc3QoZW51bSkKKyMKKy0tZm9y bWF0PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0RkU0ZW51bTR0ZXN0WnYKK2Rl bWFuZ2xlLnRlc3QoZW51bS50ZXN0KQorIworLS1mb3JtYXQ9ZGxhbmcKK19E OGRlbWFuZ2xlNHRlc3RGVDd0eXBlZGVmWnYKK2RlbWFuZ2xlLnRlc3QodHlw ZWRlZikKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0RlQ3 dHlwZWRlZjR0ZXN0WnYKK2RlbWFuZ2xlLnRlc3QodHlwZWRlZi50ZXN0KQor IworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RGSmFadgorZGVt YW5nbGUudGVzdChvdXQgY2hhcikKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhk ZW1hbmdsZTR0ZXN0RkthWnYKK2RlbWFuZ2xlLnRlc3QocmVmIGNoYXIpCisj CistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGU0dGVzdEZMYVp2CitkZW1h bmdsZS50ZXN0KGxhenkgY2hhcikKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhk ZW1hbmdsZTR0ZXN0Rk1hWnYKK2RlbWFuZ2xlLnRlc3Qoc2NvcGUgY2hhcikK KyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0RmFYdgorZGVt YW5nbGUudGVzdChjaGFyLi4uKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRl bWFuZ2xlNHRlc3RGYVl2CitkZW1hbmdsZS50ZXN0KGNoYXIsIC4uLikKKyMK Ky0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0RmFhWXYKK2RlbWFu Z2xlLnRlc3QoY2hhciwgY2hhciwgLi4uKQorIworLS1mb3JtYXQ9ZGxhbmcK K19EOGRlbWFuZ2xlNHRlc3RGYWFadgorZGVtYW5nbGUudGVzdChjaGFyLCBj aGFyKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RGQjBa dgorZGVtYW5nbGUudGVzdChUdXBsZSEoKSkKKyMKKy0tZm9ybWF0PWRsYW5n CitfRDhkZW1hbmdsZTR0ZXN0RkIxYVp2CitkZW1hbmdsZS50ZXN0KFR1cGxl IShjaGFyKSkKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0 RkIyYWFadgorZGVtYW5nbGUudGVzdChUdXBsZSEoY2hhciwgY2hhcikpCisj CistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGU0dGVzdEZCM2FhYVp2Citk ZW1hbmdsZS50ZXN0KFR1cGxlIShjaGFyLCBjaGFyLCBjaGFyKSkKKyMKKy0t Zm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0RkIyT2FhWnYKK2RlbWFu Z2xlLnRlc3QoVHVwbGUhKHNoYXJlZChjaGFyKSwgY2hhcikpCisjCistLWZv cm1hdD1kbGFuZworX0Q4ZGVtYW5nbGU0dGVzdEZCM2FERlphYVp2CitkZW1h bmdsZS50ZXN0KFR1cGxlIShjaGFyLCBjaGFyKCkgZGVsZWdhdGUsIGNoYXIp KQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RGREZaYVp2 CitkZW1hbmdsZS50ZXN0KGNoYXIoKSBkZWxlZ2F0ZSkKKyMKKy0tZm9ybWF0 PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0RkRVWmFadgorZGVtYW5nbGUudGVz dChleHRlcm4oQykgY2hhcigpIGRlbGVnYXRlKQorIworLS1mb3JtYXQ9ZGxh bmcKK19EOGRlbWFuZ2xlNHRlc3RGRFdaYVp2CitkZW1hbmdsZS50ZXN0KGV4 dGVybihXaW5kb3dzKSBjaGFyKCkgZGVsZWdhdGUpCisjCistLWZvcm1hdD1k bGFuZworX0Q4ZGVtYW5nbGU0dGVzdEZEVlphWnYKK2RlbWFuZ2xlLnRlc3Qo ZXh0ZXJuKFBhc2NhbCkgY2hhcigpIGRlbGVnYXRlKQorIworLS1mb3JtYXQ9 ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RGRFJaYVp2CitkZW1hbmdsZS50ZXN0 KGV4dGVybihDKyspIGNoYXIoKSBkZWxlZ2F0ZSkKKyMKKy0tZm9ybWF0PWRs YW5nCitfRDhkZW1hbmdsZTR0ZXN0RkZaYVp2CitkZW1hbmdsZS50ZXN0KGNo YXIoKSBmdW5jdGlvbikKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmds ZTR0ZXN0RlVaYVp2CitkZW1hbmdsZS50ZXN0KGV4dGVybihDKSBjaGFyKCkg ZnVuY3Rpb24pCisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGU0dGVz dEZXWmFadgorZGVtYW5nbGUudGVzdChleHRlcm4oV2luZG93cykgY2hhcigp IGZ1bmN0aW9uKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRl c3RGVlphWnYKK2RlbWFuZ2xlLnRlc3QoZXh0ZXJuKFBhc2NhbCkgY2hhcigp IGZ1bmN0aW9uKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRl c3RGUlphWnYKK2RlbWFuZ2xlLnRlc3QoZXh0ZXJuKEMrKykgY2hhcigpIGZ1 bmN0aW9uKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RG REZOYVphWnYKK2RlbWFuZ2xlLnRlc3QoY2hhcigpIHB1cmUgZGVsZWdhdGUp CisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGU0dGVzdEZERk5iWmFa dgorZGVtYW5nbGUudGVzdChjaGFyKCkgbm90aHJvdyBkZWxlZ2F0ZSkKKyMK Ky0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0RkRGTmNaYVp2Citk ZW1hbmdsZS50ZXN0KGNoYXIoKSByZWYgZGVsZWdhdGUpCisjCistLWZvcm1h dD1kbGFuZworX0Q4ZGVtYW5nbGU0dGVzdEZERk5kWmFadgorZGVtYW5nbGUu dGVzdChjaGFyKCkgQHByb3BlcnR5IGRlbGVnYXRlKQorIworLS1mb3JtYXQ9 ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RGREZOZVphWnYKK2RlbWFuZ2xlLnRl c3QoY2hhcigpIEB0cnVzdGVkIGRlbGVnYXRlKQorIworLS1mb3JtYXQ9ZGxh bmcKK19EOGRlbWFuZ2xlNHRlc3RGREZOZlphWnYKK2RlbWFuZ2xlLnRlc3Qo Y2hhcigpIEBzYWZlIGRlbGVnYXRlKQorIworLS1mb3JtYXQ9ZGxhbmcKK19E OGRlbWFuZ2xlNHRlc3RGREZOaVphWnYKK2RlbWFuZ2xlLnRlc3QoY2hhcigp IEBub2djIGRlbGVnYXRlKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFu Z2xlNHRlc3RGREZOYU5iWmFadgorZGVtYW5nbGUudGVzdChjaGFyKCkgcHVy ZSBub3Rocm93IGRlbGVnYXRlKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRl bWFuZ2xlNHRlc3RGREZOYk5hWmFadgorZGVtYW5nbGUudGVzdChjaGFyKCkg bm90aHJvdyBwdXJlIGRlbGVnYXRlKQorIworLS1mb3JtYXQ9ZGxhbmcKK19E OGRlbWFuZ2xlNHRlc3RGREZOZE5mTmFaYVp2CitkZW1hbmdsZS50ZXN0KGNo YXIoKSBAcHJvcGVydHkgQHNhZmUgcHVyZSBkZWxlZ2F0ZSkKKyMKKy0tZm9y bWF0PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0RkZOYVphWnYKK2RlbWFuZ2xl LnRlc3QoY2hhcigpIHB1cmUgZnVuY3Rpb24pCisjCistLWZvcm1hdD1kbGFu ZworX0Q4ZGVtYW5nbGU0dGVzdEZGTmJaYVp2CitkZW1hbmdsZS50ZXN0KGNo YXIoKSBub3Rocm93IGZ1bmN0aW9uKQorIworLS1mb3JtYXQ9ZGxhbmcKK19E OGRlbWFuZ2xlNHRlc3RGRk5jWmFadgorZGVtYW5nbGUudGVzdChjaGFyKCkg cmVmIGZ1bmN0aW9uKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xl NHRlc3RGRk5kWmFadgorZGVtYW5nbGUudGVzdChjaGFyKCkgQHByb3BlcnR5 IGZ1bmN0aW9uKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRl c3RGRk5lWmFadgorZGVtYW5nbGUudGVzdChjaGFyKCkgQHRydXN0ZWQgZnVu Y3Rpb24pCisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGU0dGVzdEZG TmZaYVp2CitkZW1hbmdsZS50ZXN0KGNoYXIoKSBAc2FmZSBmdW5jdGlvbikK KyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0RkZOaVphWnYK K2RlbWFuZ2xlLnRlc3QoY2hhcigpIEBub2djIGZ1bmN0aW9uKQorIworLS1m b3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RGRk5hTmJaYVp2CitkZW1h bmdsZS50ZXN0KGNoYXIoKSBwdXJlIG5vdGhyb3cgZnVuY3Rpb24pCisjCist LWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGU0dGVzdEZGTmJOYVphWnYKK2Rl bWFuZ2xlLnRlc3QoY2hhcigpIG5vdGhyb3cgcHVyZSBmdW5jdGlvbikKKyMK Ky0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0RkZOZE5mTmFaYVp2 CitkZW1hbmdsZS50ZXN0KGNoYXIoKSBAcHJvcGVydHkgQHNhZmUgcHVyZSBm dW5jdGlvbikKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0 Nl9faW5pdFoKK2RlbWFuZ2xlLnRlc3QuaW5pdCQKKyMKKy0tZm9ybWF0PWRs YW5nCitfRDhkZW1hbmdsZTR0ZXN0Nl9fdnRibFoKK3Z0YWJsZSBmb3IgZGVt YW5nbGUudGVzdAorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRl c3Q3X19DbGFzc1oKK0NsYXNzSW5mbyBmb3IgZGVtYW5nbGUudGVzdAorIwor LS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3QxMV9fSW50ZXJmYWNl WgorSW50ZXJmYWNlIGZvciBkZW1hbmdsZS50ZXN0CisjCistLWZvcm1hdD1k bGFuZworX0Q4ZGVtYW5nbGU0dGVzdDEyX19Nb2R1bGVJbmZvWgorTW9kdWxl SW5mbyBmb3IgZGVtYW5nbGUudGVzdAorIworLS1mb3JtYXQ9ZGxhbmcKK19E OGRlbWFuZ2xlNHRlc3Q2X19jdG9yTUZadgorZGVtYW5nbGUudGVzdC50aGlz KCkKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0Nl9fZHRv ck1GWnYKK2RlbWFuZ2xlLnRlc3QufnRoaXMoKQorIworLS1mb3JtYXQ9ZGxh bmcKK19EOGRlbWFuZ2xlNHRlc3Q2X19wb3N0YmxpdE1GWnYKK2RlbWFuZ2xl LnRlc3QudGhpcyh0aGlzKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFu Z2xlNHRlc3RGSEFiYVp2CitkZW1hbmdsZS50ZXN0KGNoYXJbYm9vbFtdXSkK KyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0RkhHNDJjYVp2 CitkZW1hbmdsZS50ZXN0KGNoYXJbY3JlYWxbNDJdXSkKKyMKKy0tZm9ybWF0 PWRsYW5nCitfRDhkZW1hbmdsZTR0ZXN0RkFpWHYKK2RlbWFuZ2xlLnRlc3Qo aW50W10uLi4pCisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGU0dGVz dEZMQWlYdgorZGVtYW5nbGUudGVzdChsYXp5IGludFtdLi4uKQorIworLS1m b3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RGQWlZdgorZGVtYW5nbGUu dGVzdChpbnRbXSwgLi4uKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFu Z2xlNHRlc3RGTEFpWXYKK2RlbWFuZ2xlLnRlc3QobGF6eSBpbnRbXSwgLi4u KQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlNHRlc3RGTGlsWnYK K2RlbWFuZ2xlLnRlc3QobGF6eSBpbnQsIGxvbmcpCisjCistLWZvcm1hdD1k bGFuZworX0Q4ZGVtYW5nbGU0dGVzdEZMbGladgorZGVtYW5nbGUudGVzdChs YXp5IGxvbmcsIGludCkKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmds ZTR0ZXN0RkxDNk9iamVjdExERkxpWmlaaQorZGVtYW5nbGUudGVzdChsYXp5 IE9iamVjdCwgbGF6eSBpbnQobGF6eSBpbnQpIGRlbGVnYXRlKQorIworLS1m b3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlOV9fVDR0ZXN0WnYKK2RlbWFuZ2xl LnRlc3QhKCkKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTExX19U NHRlc3RUYVp2CitkZW1hbmdsZS50ZXN0IShjaGFyKQorIworLS1mb3JtYXQ9 ZGxhbmcKK19EOGRlbWFuZ2xlMTNfX1Q0dGVzdFRhVGFadgorZGVtYW5nbGUu dGVzdCEoY2hhciwgY2hhcikKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1h bmdsZTE1X19UNHRlc3RUYVRhVGFadgorZGVtYW5nbGUudGVzdCEoY2hhciwg Y2hhciwgY2hhcikKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTE2 X19UNHRlc3RUYVRPaVRhWnYKK2RlbWFuZ2xlLnRlc3QhKGNoYXIsIHNoYXJl ZChpbnQpLCBjaGFyKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xl MTdfX1Q0dGVzdFM2c3ltYm9sWnYKK2RlbWFuZ2xlLnRlc3QhKHN5bWJvbCkK KyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTIxX19UNHRlc3RTNnN5 bWJvbDNmb29adgorZGVtYW5nbGUudGVzdCEoc3ltYm9sLmZvbykKKyMKKy0t Zm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTI1X19UNHRlc3RTNnN5bWJvbDNm b28zYmFyWnYKK2RlbWFuZ2xlLnRlc3QhKHN5bWJvbC5mb28uYmFyKQorIwor LS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlMTlfX1Q0dGVzdFRhUzZzeW1i b2xadgorZGVtYW5nbGUudGVzdCEoY2hhciwgc3ltYm9sKQorIworLS1mb3Jt YXQ9ZGxhbmcKK19EOGRlbWFuZ2xlMTlfX1Q0dGVzdFM2c3ltYm9sVGFadgor ZGVtYW5nbGUudGVzdCEoc3ltYm9sLCBjaGFyKQorIworLS1mb3JtYXQ9ZGxh bmcKK19EOGRlbWFuZ2xlMTNfX1Q0dGVzdFZQaW5adgorZGVtYW5nbGUudGVz dCEobnVsbCkKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTE0X19U NHRlc3RWZzEyM1p2CitkZW1hbmdsZS50ZXN0ISgxMjMpCisjCistLWZvcm1h dD1kbGFuZworX0Q4ZGVtYW5nbGUxNF9fVDR0ZXN0VmkxMjNadgorZGVtYW5n bGUudGVzdCEoMTIzKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xl MTRfX1Q0dGVzdFZzMTIzWnYKK2RlbWFuZ2xlLnRlc3QhKDEyMykKKyMKKy0t Zm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTE0X19UNHRlc3RWaDEyM1p2Citk ZW1hbmdsZS50ZXN0ISgxMjN1KQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRl bWFuZ2xlMTRfX1Q0dGVzdFZrMTIzWnYKK2RlbWFuZ2xlLnRlc3QhKDEyM3Up CisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGUxNF9fVDR0ZXN0VnQx MjNadgorZGVtYW5nbGUudGVzdCEoMTIzdSkKKyMKKy0tZm9ybWF0PWRsYW5n CitfRDhkZW1hbmdsZTE0X19UNHRlc3RWbDEyM1p2CitkZW1hbmdsZS50ZXN0 ISgxMjNMKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlMTRfX1Q0 dGVzdFZtMTIzWnYKK2RlbWFuZ2xlLnRlc3QhKDEyM3VMKQorIworLS1mb3Jt YXQ9ZGxhbmcKK19EOGRlbWFuZ2xlMTVfX1Q0dGVzdFZpTjEyM1p2CitkZW1h bmdsZS50ZXN0ISgtMTIzKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFu Z2xlMTVfX1Q0dGVzdFZrTjEyM1p2CitkZW1hbmdsZS50ZXN0ISgtMTIzdSkK KyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTE1X19UNHRlc3RWbE4x MjNadgorZGVtYW5nbGUudGVzdCEoLTEyM0wpCisjCistLWZvcm1hdD1kbGFu ZworX0Q4ZGVtYW5nbGUxNV9fVDR0ZXN0Vm1OMTIzWnYKK2RlbWFuZ2xlLnRl c3QhKC0xMjN1TCkKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTEy X19UNHRlc3RWYjFadgorZGVtYW5nbGUudGVzdCEodHJ1ZSkKKyMKKy0tZm9y bWF0PWRsYW5nCitfRDhkZW1hbmdsZTEyX19UNHRlc3RWYjBadgorZGVtYW5n bGUudGVzdCEoZmFsc2UpCisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5n bGUxM19fVDR0ZXN0VmExMFp2CitkZW1hbmdsZS50ZXN0ISgnXHgwYScpCisj CistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGUxM19fVDR0ZXN0VmEzMlp2 CitkZW1hbmdsZS50ZXN0ISgnICcpCisjCistLWZvcm1hdD1kbGFuZworX0Q4 ZGVtYW5nbGUxM19fVDR0ZXN0VmE2NVp2CitkZW1hbmdsZS50ZXN0ISgnQScp CisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGUxNF9fVDR0ZXN0VmEx MjZadgorZGVtYW5nbGUudGVzdCEoJ34nKQorIworLS1mb3JtYXQ9ZGxhbmcK K19EOGRlbWFuZ2xlMTVfX1Q0dGVzdFZ1MTAwMFp2CitkZW1hbmdsZS50ZXN0 ISgnXHUwM2U4JykKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTE3 X19UNHRlc3RWdzEwMDAwMFp2CitkZW1hbmdsZS50ZXN0ISgnXFUwMDAxODZh MCcpCisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGUxN19fVDR0ZXN0 VmRlMEE4UDZadgorZGVtYW5nbGUudGVzdCEoNDIuMDAwMCkKKyMKKy0tZm9y bWF0PWRsYW5nCitfRDhkZW1hbmdsZTE2X19UNHRlc3RWZGVBOFAyWnYKK2Rl bWFuZ2xlLnRlc3QhKDQyLjAwMDApCisjCistLWZvcm1hdD1kbGFuZworX0Q4 ZGVtYW5nbGUxOF9fVDR0ZXN0VmRlTjBBOFA2WnYKK2RlbWFuZ2xlLnRlc3Qh KC00Mi4wMDAwKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlMzFf X1Q0dGVzdFZkZTBGNkU5NzhENEZERjNCNjQ2UDdadgorZGVtYW5nbGUudGVz dCEoMTIzLjQ1NikKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTE1 X19UNHRlc3RWZGVOQU5adgorZGVtYW5nbGUudGVzdCEoTmFOKQorIworLS1m b3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlMTVfX1Q0dGVzdFZkZUlORlp2Citk ZW1hbmdsZS50ZXN0IShJbmYpCisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVt YW5nbGUxNl9fVDR0ZXN0VmRlTklORlp2CitkZW1hbmdsZS50ZXN0ISgtSW5m KQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlMjNfX1Q0dGVzdFZm ZTBGRkZGRkZQMTI4WnYKK2RlbWFuZ2xlLnRlc3QhKDMuNDAyODJlKzM4KQor IworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlMzJfX1Q0dGVzdFZkZTBG RkZGRkZGRkZGRkZGOFAxMDI0WnYKK2RlbWFuZ2xlLnRlc3QhKDEuNzk3Njll KzMwOCkKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTE5X19UNHRl c3RWZmUwOFBOMTI1WnYKK2RlbWFuZ2xlLnRlc3QhKDEuMTc1NDllLTM4KQor IworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlMjBfX1Q0dGVzdFZkZTA4 UE4xMDIxWnYKK2RlbWFuZ2xlLnRlc3QhKDIuMjI1MDdlLTMwOCkKKyMKKy0t Zm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTUxX19UNHRlc3RWcmMwQzRDQ0ND Q0NDQ0NDQ0NDRFA0YzBCNjY2NjY2NjY2NjY2NjY2UDZadgorZGVtYW5nbGUu dGVzdCEoMTIuMzAwMCs0NS42MDAwaSkKKyMKKy0tZm9ybWF0PWRsYW5nCitf RDhkZW1hbmdsZTUyX19UNHRlc3RWcmNOMEM0Q0NDQ0NDQ0NDQ0NDQ0RQNGMw QjY2NjY2NjY2NjY2NjY2NlA2WnYKK2RlbWFuZ2xlLnRlc3QhKC0xMi4zMDAw KzQ1LjYwMDBpKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EOGRlbWFuZ2xlMjJf X1Q0dGVzdFZHM3VhM182MTYyNjNadgorZGVtYW5nbGUudGVzdCEoImFiYyIp CisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGUyMl9fVDR0ZXN0Vkcz dWQzXzYxNjI2M1p2CitkZW1hbmdsZS50ZXN0ISgiYWJjImQpCisjCistLWZv cm1hdD1kbGFuZworX0Q4ZGVtYW5nbGUyMl9fVDR0ZXN0VkczdXczXzYxNjI2 M1p2CitkZW1hbmdsZS50ZXN0ISgiYWJjIncpCisjCistLWZvcm1hdD1kbGFu ZworX0Q4ZGVtYW5nbGUyMl9fVDR0ZXN0VkFpQTRpMWkyaTNpNFp2CitkZW1h bmdsZS50ZXN0IShbMSwgMiwgMywgNF0pCisjCistLWZvcm1hdD1kbGFuZwor X0Q4ZGVtYW5nbGUyNV9fVDR0ZXN0VkFkQTJlMDhQMWVOMDhQMVp2CitkZW1h bmdsZS50ZXN0IShbMS4wMDAwMCwgLTEuMDAwMDBdKQorIworLS1mb3JtYXQ9 ZGxhbmcKK19EOGRlbWFuZ2xlMjNfX1Q0dGVzdFZIaWlBMmkxaTJpM2k0WnYK K2RlbWFuZ2xlLnRlc3QhKFsxOjIsIDM6NF0pCisjCistLWZvcm1hdD1kbGFu ZworX0Q4ZGVtYW5nbGUzOV9fVDR0ZXN0VkhBeGFpQTJhM182MTYyNjNpMWEz XzY0NjU2NmkyWnYKK2RlbWFuZ2xlLnRlc3QhKFsiYWJjIjoxLCAiZGVmIjoy XSkKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTI4X19UNHRlc3RW UzhkZW1hbmdsZTFTUzJpMWkyWnYKK2RlbWFuZ2xlLnRlc3QhKGRlbWFuZ2xl LlMoMSwgMikpCisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGUzNV9f VDR0ZXN0VlM4ZGVtYW5nbGUxU1MyaTFhM182MTYyNjNadgorZGVtYW5nbGUu dGVzdCEoZGVtYW5nbGUuUygxLCAiYWJjIikpCisjCisjIFVuaXR0ZXN0cwor IworLS1mb3JtYXQ9ZGxhbmcKK3ByaW50ZgorcHJpbnRmCisjCistLWZvcm1h dD1kbGFuZworX2ZvbworX2ZvbworIworLS1mb3JtYXQ9ZGxhbmcKK19EODgK K19EODgKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDVfX1QxYVp2CitfRDVfX1Qx YVp2CisjCistLWZvcm1hdD1kbGFuZworX0Q0dGVzdDNmb29BYQordGVzdC5m b28KKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZThkZW1hbmdsZUZB YVpBYQorZGVtYW5nbGUuZGVtYW5nbGUoY2hhcltdKQorIworLS1mb3JtYXQ9 ZGxhbmcKK19ENm9iamVjdDZPYmplY3Q4b3BFcXVhbHNGQzZPYmplY3RaaQor b2JqZWN0Lk9iamVjdC5vcEVxdWFscyhPYmplY3QpCisjCistLWZvcm1hdD1k bGFuZworX0Q2b2JqZWN0Nk9iamVjdDhvcEFzc2lnbkZDNk9iamVjdFppCitv YmplY3QuT2JqZWN0Lm9wQXNzaWduKE9iamVjdCkKKyMKKy0tZm9ybWF0PWRs YW5nCitfRDR0ZXN0MmRnREZpWWQKK3Rlc3QuZGcKKyMKKy0tZm9ybWF0PWRs YW5nCitfRDFhMWJpCithLmIKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDFhMWJQ RmlaaQorYS5iCisjCistLWZvcm1hdD1kbGFuZworX0Q0dGVzdDM0X19UM2Jh clZHM3V3M182MTYyNjNWRzN3ZDNfNjQ2NTY2WjF4aQordGVzdC5iYXIhKCJh YmMidywgImRlZiJkKS54CisjCistLWZvcm1hdD1kbGFuZworX0Q2cGx1Z2lu OGdlbmVyYXRlRmlpWkF5YQorcGx1Z2luLmdlbmVyYXRlKGludCwgaW50KQor IworLS1mb3JtYXQ9ZGxhbmcKK19ENnBsdWdpbjhnZW5lcmF0ZUZpaVpBeGEK K3BsdWdpbi5nZW5lcmF0ZShpbnQsIGludCkKKyMKKy0tZm9ybWF0PWRsYW5n CitfRDZwbHVnaW44Z2VuZXJhdGVGaWlaQU9hCitwbHVnaW4uZ2VuZXJhdGUo aW50LCBpbnQpCisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGUzZm5B Rlp2M2ZuQk1GWnYKK2RlbWFuZ2xlLmZuQSgpLmZuQigpCisjCistLWZvcm1h dD1kbGFuZworX0Q4ZGVtYW5nbGU0bWFpbkZadjFTM2ZuQ0ZadgorZGVtYW5n bGUubWFpbigpLlMuZm5DKCkKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1h bmdsZTRtYWluRlp2MVMzZm5ETUZadgorZGVtYW5nbGUubWFpbigpLlMuZm5E KCkKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTRtYWluRlp2NWxv Y2FsTUZaaQorZGVtYW5nbGUubWFpbigpLmxvY2FsKCkKKyMKKy0tZm9ybWF0 PWRsYW5nCitfRDNzdGQ1YXNjaWk5dXBwZXJjYXNleUFhCitzdGQuYXNjaWku dXBwZXJjYXNlCisjCistLWZvcm1hdD1kbGFuZworX0Qzc3RkNnN0cmVhbTlC T01FbmRpYW55RzVFM3N0ZDZzeXN0ZW02RW5kaWFuCitzdGQuc3RyZWFtLkJP TUVuZGlhbgorIworLS1mb3JtYXQ9ZGxhbmcKK19EM3N0ZDhpbnRlcm5hbDd1 bmlfdGFiMTB1bmljb2RlTmtveVMzc3RkOGludGVybmFsM3VuaTEyQ29kZXBv aW50U2V0CitzdGQuaW50ZXJuYWwudW5pX3RhYi51bmljb2RlTmtvCisjCist LWZvcm1hdD1kbGFuZworX0QyZ2MyZ2MyR0M2YWRkck9mTUZQdlpQdgorZ2Mu Z2MuR0MuYWRkck9mKHZvaWQqKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EM3N0 ZDdwcm9jZXNzMTBzZXRDTE9FWEVDRmliWnYKK3N0ZC5wcm9jZXNzLnNldENM T0VYRUMoaW50LCBib29sKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EM3N0ZDZk aWdlc3QybWQzTUQ1M3B1dE1GTmFOYk5lTUF4aFh2CitzdGQuZGlnZXN0Lm1k Lk1ENS5wdXQoc2NvcGUgY29uc3QodWJ5dGUpW10uLi4pCisjCistLWZvcm1h dD1kbGFuZworX0Qzc3RkNm1tZmlsZTZNbUZpbGUxM29wSW5kZXhBc3NpZ25N RmhtWmgKK3N0ZC5tbWZpbGUuTW1GaWxlLm9wSW5kZXhBc3NpZ24odWJ5dGUs IHVsb25nKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EM3N0ZDdwcm9jZXNzMThl c2NhcGVTaGVsbENvbW1hbmRGeEFBYVhBeWEKK3N0ZC5wcm9jZXNzLmVzY2Fw ZVNoZWxsQ29tbWFuZChjb25zdChjaGFyW11bXSkuLi4pCisjCistLWZvcm1h dD1kbGFuZworX0Q0Y29yZTRzeW5jNW11dGV4NU11dGV4Nl9fY3Rvck1GQzZP YmplY3RaQzRjb3JlNHN5bmM1bXV0ZXg1TXV0ZXgKK2NvcmUuc3luYy5tdXRl eC5NdXRleC50aGlzKE9iamVjdCkKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDZv YmplY3QxNFR5cGVJbmZvX0FycmF5OGFyZ1R5cGVzTUZOYk5mSkM4VHlwZUlu Zm9KQzhUeXBlSW5mb1ppCitvYmplY3QuVHlwZUluZm9fQXJyYXkuYXJnVHlw ZXMob3V0IFR5cGVJbmZvLCBvdXQgVHlwZUluZm8pCisjCistLWZvcm1hdD1k bGFuZworX0QycnQ2ZG1haW4yMTFfZF9ydW5fbWFpblVpUFBhUFVBQWFaaVpp N3RyeUV4ZWNNRk1ERlp2WnYKK3J0LmRtYWluMi5fZF9ydW5fbWFpbihpbnQs IGNoYXIqKiwgZXh0ZXJuKEMpIGludChjaGFyW11bXSkgZnVuY3Rpb24qKS50 cnlFeGVjKHNjb3BlIHZvaWQoKSBkZWxlZ2F0ZSkKKyMKKy0tZm9ybWF0PWRs YW5nCitfRDZvYmplY3Q5RXhjZXB0aW9uNl9fY3Rvck1GTmFOYk5mQXlhQXlh bUM2b2JqZWN0OVRocm93YWJsZVpDOUV4Y2VwdGlvbgorb2JqZWN0LkV4Y2Vw dGlvbi50aGlzKGltbXV0YWJsZShjaGFyKVtdLCBpbW11dGFibGUoY2hhcilb XSwgdWxvbmcsIG9iamVjdC5UaHJvd2FibGUpCisjCistLWZvcm1hdD1kbGFu ZworX0QzZ2NjM2RlaDE3cGFyc2VfbHNkYV9oZWFkZXJGUFMzZ2NjNnVud2lu ZDdnZW5lcmljMTVfVW53aW5kX0NvbnRleHRQaFBTM2djYzNkZWgxNmxzZGFf aGVhZGVyX2luZm9aUGgKK2djYy5kZWgucGFyc2VfbHNkYV9oZWFkZXIoZ2Nj LnVud2luZC5nZW5lcmljLl9VbndpbmRfQ29udGV4dCosIHVieXRlKiwgZ2Nj LmRlaC5sc2RhX2hlYWRlcl9pbmZvKikKKyMKKy0tZm9ybWF0PWRsYW5nCitf RDNzdGQ2c29ja2V0MjNVbmtub3duQWRkcmVzc1JlZmVyZW5jZTZfX2N0b3JN RlBTNGNvcmUzc3lzNXBvc2l4M3N5czZzb2NrZXQ4c29ja2FkZHJrWkMzc3Rk NnNvY2tldDIzVW5rbm93bkFkZHJlc3NSZWZlcmVuY2UKK3N0ZC5zb2NrZXQu VW5rbm93bkFkZHJlc3NSZWZlcmVuY2UudGhpcyhjb3JlLnN5cy5wb3NpeC5z eXMuc29ja2V0LnNvY2thZGRyKiwgdWludCkKKyMKKy0tZm9ybWF0PWRsYW5n CitfRDhkZW1hbmdsZTIwX19UMmZuVkFpQTRpMWkyaTNpNFoyZm5GWnYKK2Rl bWFuZ2xlLmZuIShbMSwgMiwgMywgNF0pLmZuKCkKKyMKKy0tZm9ybWF0PWRs YW5nCitfRDhkZW1hbmdsZTEwX19UMmZuVmkxWjJmbkZadgorZGVtYW5nbGUu Zm4hKDEpLmZuKCkKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTI2 X19UMmZuVlM4ZGVtYW5nbGUxU1MyaTFpMloyZm5GWnYKK2RlbWFuZ2xlLmZu IShkZW1hbmdsZS5TKDEsIDIpKS5mbigpCisjCistLWZvcm1hdD1kbGFuZwor X0Q4ZGVtYW5nbGUxM19fVDJmblZlZU5BTloyZm5GWnYKK2RlbWFuZ2xlLmZu IShOYU4pLmZuKCkKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhkZW1hbmdsZTE0 X19UMmZuVmVlTklORloyZm5GWnYKK2RlbWFuZ2xlLmZuISgtSW5mKS5mbigp CisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGUxM19fVDJmblZlZUlO RloyZm5GWnYKK2RlbWFuZ2xlLmZuIShJbmYpLmZuKCkKKyMKKy0tZm9ybWF0 PWRsYW5nCitfRDhkZW1hbmdsZTIxX19UMmZuVkhpaUEyaTFpMmkzaTRaMmZu Rlp2CitkZW1hbmdsZS5mbiEoWzE6MiwgMzo0XSkuZm4oKQorIworLS1mb3Jt YXQ9ZGxhbmcKK19EOGRlbWFuZ2xlMmZuRk5naVpOZ2kKK2RlbWFuZ2xlLmZu KGlub3V0KGludCkpCisjCistLWZvcm1hdD1kbGFuZworX0Q4ZGVtYW5nbGUy OV9fVDJmblZhOTdWYTlWYTBWdTI1N1Z3NjU1MzdaMmZuRlp2CitkZW1hbmds ZS5mbiEoJ2EnLCAnXHgwOScsICdceDAwJywgJ1x1MDEwMScsICdcVTAwMDEw MDAxJykuZm4oKQorIworLS1mb3JtYXQ9ZGxhbmcKK19EMmdjMTFnY3RlbXBs YXRlczU2X19UOG1rQml0bWFwVFMzc3RkNXJhbmdlMTNfX1Q0aW90YVRpVGla NGlvdGFGaWlaNlJlc3VsdFo4bWtCaXRtYXBGTmJOaU5mUG1tWnYKK2djLmdj dGVtcGxhdGVzLm1rQml0bWFwIShzdGQucmFuZ2UuaW90YSEoaW50LCBpbnQp LmlvdGEoaW50LCBpbnQpLlJlc3VsdCkubWtCaXRtYXAodWxvbmcqLCB1bG9u ZykKKyMKKy0tZm9ybWF0PWRsYW5nCitfRDhzZXJlbml0eTlwZXJzaXN0ZXI2 U3FsaXRlNzBfX1QxNVNxbGl0ZVBlcnNpc3RlclRTOHNlcmVuaXR5OXBlcnNp c3RlcjZTcWxpdGUxMV9fdW5pdHRlc3Q2Rlp2NFRlc3RaMTVTcWxpdGVQZXJz aXN0ZXIxMl9fVDdvcEluZGV4WjdvcEluZGV4TUZtWlM4c2VyZW5pdHk5cGVy c2lzdGVyNlNxbGl0ZTExX191bml0dGVzdDZGWnY0VGVzdAorc2VyZW5pdHku cGVyc2lzdGVyLlNxbGl0ZS5TcWxpdGVQZXJzaXN0ZXIhKHNlcmVuaXR5LnBl cnNpc3Rlci5TcWxpdGUuX191bml0dGVzdDYoKS5UZXN0KS5TcWxpdGVQZXJz aXN0ZXIub3BJbmRleCEoKS5vcEluZGV4KHVsb25nKQorIworLS1mb3JtYXQ9 ZGxhbmcKK19ENHRlc3Q0bWFpbkZadjVsb2NhbE1GWmkKK3Rlc3QubWFpbigp LmxvY2FsKCkKZGlmZiAtLWdpdCBhL2xpYmliZXJ0eS90ZXN0c3VpdGUvZGVt YW5nbGUtZXhwZWN0ZWQgYi9saWJpYmVydHkvdGVzdHN1aXRlL2RlbWFuZ2xl LWV4cGVjdGVkCmluZGV4IDg2NGVlN2UuLmEwMzA2ODUgMTAwNjQ0Ci0tLSBh L2xpYmliZXJ0eS90ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQKKysrIGIv bGliaWJlcnR5L3Rlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZApAQCAtNDM0 Myw4ICs0MzQzLDE2IEBAIGNlcmVhbDo6ZGV0YWlsOjpJbnB1dEJpbmRpbmdN YXA8Y2VyZWFsOjpKU09OSW5wdXRBcmNoaXZlPjo6U2VyaWFsaXplcnMgY2Vy ZWFsOjpwCiAtLWZvcm1hdD1nbnUtdjMKIF9aTlN0OV9BbnlfZGF0YTlfTV9h Y2Nlc3NJUFo0cG9zdElTdDhmdW5jdGlvbklGdnZFRUV2T1RfRVVsdkVfRUVS UzVfdgogdm9pZCBwb3N0PHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gPihzdGQ6 OmZ1bmN0aW9uPHZvaWQgKCk+JiYpOjp7bGFtYmRhKCkjMX0qJiBzdGQ6Ol9B bnlfZGF0YTo6X01fYWNjZXNzPHZvaWQgcG9zdDxzdGQ6OmZ1bmN0aW9uPHZv aWQgKCk+ID4odm9pZCBwb3N0PHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gPihz dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYpOjp7bGFtYmRhKCkjMX0qJiYpOjp7 bGFtYmRhKCkjMX0qPigpCisjCistLWZvcm1hdD1hdXRvIC0tbm8tcGFyYW1z CitfWjN4eHhERnl1VmIKK3h4eCh1bnNpZ25lZCBsb25nIGxvbmcgX0ZyYWN0 LCBib29sIHZvbGF0aWxlKQoreHh4CiAjIGh0dHBzOi8vc291cmNld2FyZS5v cmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE2ODE3CiAtLWZvcm1hdD1h dXRvIC0tbm8tcGFyYW1zCiBfUXVldWVOb3RpZmljYXRpb25fUXVldWVDb250 cm9sbGVyX18kNFBQUFBQUFBNX0FfSU5vdGljZV9fX1oKIF9RdWV1ZU5vdGlm aWNhdGlvbl9RdWV1ZUNvbnRyb2xsZXJfXyQ0UFBQUFBQUE1fQV9JTm90aWNl X19fWgogX1F1ZXVlTm90aWZpY2F0aW9uX1F1ZXVlQ29udHJvbGxlcl9fJDRQ UFBQUFBQTV9BX0lOb3RpY2VfX19aCistLWZvcm1hdD1nbnUtdjMKK19aMWZT c0IzZm9vU18KK2Yoc3RkOjpzdHJpbmdbYWJpOmZvb10sIHN0ZDo6c3RyaW5n W2FiaTpmb29dKQpkaWZmIC0tZ2l0IGEvbGliaWJlcnR5L3Rlc3RzdWl0ZS9k ZW1hbmdsZXItZnV6emVyLmMgYi9saWJpYmVydHkvdGVzdHN1aXRlL2RlbWFu Z2xlci1mdXp6ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5hZmY3MDI0Ci0tLSAvZGV2L251bGwKKysrIGIvbGliaWJlcnR5L3Rl c3RzdWl0ZS9kZW1hbmdsZXItZnV6emVyLmMKQEAgLTAsMCArMSwxMDggQEAK Ky8qIERlbWFuZ2xlciBmdXp6ZXIuCisKKyAgIENvcHlyaWdodCAoQykgMjAx NCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBm aWxlIGlzIHBhcnQgb2YgR05VIGxpYmliZXJ0eS4KKworICAgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LiAgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVk ZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8 dGltZS5oPgorI2luY2x1ZGUgImRlbWFuZ2xlLmgiCisKKyNkZWZpbmUgTUFY TEVOIDI1MworI2RlZmluZSBBTFBNSU4gMzMKKyNkZWZpbmUgQUxQTUFYIDEy NworCitzdGF0aWMgY2hhciAqcHJvZ3JhbV9uYW1lOworCisjZGVmaW5lIERF RkFVTFRfTUFYQ09VTlQgNzUwMDAwMAorCitzdGF0aWMgdm9pZAorcHJpbnRf dXNhZ2UgKEZJTEUgKmZwLCBpbnQgZXhpdF92YWx1ZSkKK3sKKyAgZnByaW50 ZiAoZnAsICJVc2FnZTogJXMgW09QVElPTl0uLi5cbiIsIHByb2dyYW1fbmFt ZSk7CisgIGZwcmludGYgKGZwLCAiT3B0aW9uczpcbiIpOworICBmcHJpbnRm IChmcCwgIiAgLWggICAgICAgICAgIERpc3BsYXkgdGhpcyBtZXNzYWdlLlxu Iik7CisgIGZwcmludGYgKGZwLCAiICAtcyBTRUVEICAgICAgU2VsZWN0IHRo ZSByYW5kb20gc2VlZCB0byBiZSB1c2VkLlxuIik7CisgIGZwcmludGYgKGZw LCAiICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgaXMgdG8gYmFzZSBvbmUg b24gdGhlIik7CisgIGZwcmludGYgKGZwLCAiIGN1cnJlbnQgdGltZS5cbiIp OworICBmcHJpbnRmIChmcCwgIiAgLW0gTUFYQ09VTlQgIEV4aXQgYWZ0ZXIg TUFYQ09VTlQgc3ltYm9scy5cbiIpOworICBmcHJpbnRmIChmcCwgIiAgICAg ICAgICAgICAgIFRoZSBkZWZhdWx0IGlzICVkLiIsIERFRkFVTFRfTUFYQ09V TlQpOworICBmcHJpbnRmIChmcCwgIiBTZXQgdG8gYC0xJyBmb3Igbm8gbGlt aXQuXG4iKTsKKworICBleGl0IChleGl0X3ZhbHVlKTsKK30KKworaW50Citt YWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICBjaGFyIHN5bWJv bFsyICsgTUFYTEVOICsgMV0gPSAiX1oiOworICBpbnQgc2VlZCA9IC0xLCBz ZWVkX3NldCA9IDA7CisgIGludCBjb3VudCA9IDAsIG1heGNvdW50ID0gREVG QVVMVF9NQVhDT1VOVDsKKyAgaW50IG9wdGNocjsKKworICBwcm9ncmFtX25h bWUgPSBhcmd2WzBdOworCisgIGRvCisgICAgeworICAgICAgb3B0Y2hyID0g Z2V0b3B0IChhcmdjLCBhcmd2LCAiaHM6bTp0OiIpOworICAgICAgc3dpdGNo IChvcHRjaHIpCisJeworCWNhc2UgJz8nOiAgLyogVW5yZWNvZ25pemVkIG9w dGlvbi4gICovCisJICBwcmludF91c2FnZSAoc3RkZXJyLCAxKTsKKwkgIGJy ZWFrOworCisJY2FzZSAnaCc6CisJICBwcmludF91c2FnZSAoc3Rkb3V0LCAw KTsKKwkgIGJyZWFrOworCisJY2FzZSAncyc6CisJICBzZWVkID0gYXRvaSAo b3B0YXJnKTsKKwkgIHNlZWRfc2V0ID0gMTsKKwkgIGJyZWFrOworCisJY2Fz ZSAnbSc6CisJICBtYXhjb3VudCA9IGF0b2kgKG9wdGFyZyk7CisJICBicmVh azsKKwl9CisgICAgfQorICB3aGlsZSAob3B0Y2hyICE9IC0xKTsKKworICBp ZiAoIXNlZWRfc2V0KQorICAgIHNlZWQgPSB0aW1lIChOVUxMKTsKKyAgc3Jh bmQgKHNlZWQpOworICBwcmludGYgKCIlczogc2VlZCA9ICVkXG4iLCBwcm9n cmFtX25hbWUsIHNlZWQpOworCisgIHdoaWxlIChtYXhjb3VudCA8IDAgfHwg Y291bnQgPCBtYXhjb3VudCkKKyAgICB7CisgICAgICBjaGFyICpidWZmZXIg PSBzeW1ib2wgKyAyOworICAgICAgaW50IGxlbmd0aCwgaTsKKworICAgICAg bGVuZ3RoID0gcmFuZCAoKSAlIE1BWExFTjsKKyAgICAgIGZvciAoaSA9IDA7 IGkgPCBsZW5ndGg7IGkrKykKKwkqYnVmZmVyKysgPSAocmFuZCAoKSAlIChB TFBNQVggLSBBTFBNSU4pKSArIEFMUE1JTjsKKworICAgICAgKmJ1ZmZlcisr ID0gJ1wwJzsKKworICAgICAgY3BsdXNfZGVtYW5nbGUgKHN5bWJvbCwgRE1H TF9BVVRPIHwgRE1HTF9BTlNJIHwgRE1HTF9QQVJBTVMpOworCisgICAgICBj b3VudCsrOworICAgIH0KKworICBwcmludGYgKCIlczogc3VjY2Vzc2Z1bGx5 IGRlbWFuZ2xlZCAlZCBzeW1ib2xzXG4iLCBwcm9ncmFtX25hbWUsIGNvdW50 KTsKKyAgZXhpdCAoMCk7Cit9Cg== --001a113a0b22a287070504389fbb--