From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30386 invoked by alias); 11 Jan 2014 20:08:13 -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 30373 invoked by uid 89); 11 Jan 2014 20:08:12 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.5 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-qa0-f53.google.com Received: from mail-qa0-f53.google.com (HELO mail-qa0-f53.google.com) (209.85.216.53) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Sat, 11 Jan 2014 20:08:09 +0000 Received: by mail-qa0-f53.google.com with SMTP id cm18so4697160qab.26 for ; Sat, 11 Jan 2014 12:08:07 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.49.101.105 with SMTP id ff9mr22261114qeb.34.1389470887041; Sat, 11 Jan 2014 12:08:07 -0800 (PST) Received: by 10.229.195.196 with HTTP; Sat, 11 Jan 2014 12:08:06 -0800 (PST) In-Reply-To: <87r48f4io8.fsf@fleche.redhat.com> References: <87zjn47ref.fsf@fleche.redhat.com> <87r48f4io8.fsf@fleche.redhat.com> Date: Sat, 11 Jan 2014 20:08:00 -0000 Message-ID: Subject: Re: [PATCH 5/5] Fix for D demangling in GDB From: Iain Buclaw To: Tom Tromey Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=001a11c2c59ea5f25404efb76680 X-IsSubscribed: yes X-SW-Source: 2014-01/txt/msg00307.txt.bz2 --001a11c2c59ea5f25404efb76680 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 775 On 10 January 2014 21:43, Tom Tromey wrote: > > Other than the nits and the remaining test suite thing, this looks good. > Thanks again for splitting the patch. > > Tom Updated with nits, testsuite, and explicit null pointer checks. Changelog entry same as before: gdb/ * d-lang.h (d_parse_symbol): Add declaration. * d-lang.c (extract_identifiers) (extract_type_info): Remove functions. (parse_call_convention, parse_attributes) (parse_function_types, parse_function_args) (parse_type, parse_identifier, call_convention_p) (d_parse_symbol): New functions. (d_demangle): Use d_parse_symbol to demangle D symbols. gdb/testsuite/ * gdb.dlang/demangle.exp: New file. --- --001a11c2c59ea5f25404efb76680 Content-Type: text/x-diff; charset=US-ASCII; name="dlang-p5a.patch" Content-Disposition: attachment; filename="dlang-p5a.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hqbb2twl0 Content-length: 48996 IGdkYi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMSAr CiBnZGIvZC1sYW5nLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCA3MzUg KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIGdkYi9kLWxh bmcuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBnZGIvdGVz dHN1aXRlL0NoYW5nZUxvZyAgICAgICAgICAgICAgfCAgIDQgKwogZ2RiL3Rl c3RzdWl0ZS9nZGIuZGxhbmcvZGVtYW5nbGUuZXhwIHwgMjA2ICsrKysrKysr KysKIDUgZmlsZXMgY2hhbmdlZCwgODIxIGluc2VydGlvbnMoKyksIDEzNyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9nZGIvZC1sYW5nLmMgYi9nZGIv ZC1sYW5nLmMKaW5kZXggNzFhMjUyNC4uOWM1ZWVhZCAxMDA2NDQKLS0tIGEv Z2RiL2QtbGFuZy5jCisrKyBiL2dkYi9kLWxhbmcuYwpAQCAtMjMsMTEgKzIz LDEzIEBACiAjaW5jbHVkZSAidmFyb2JqLmgiCiAjaW5jbHVkZSAiZC1sYW5n LmgiCiAjaW5jbHVkZSAiYy1sYW5nLmgiCi0jaW5jbHVkZSA8c3RyaW5nLmg+ CiAjaW5jbHVkZSAicGFyc2VyLWRlZnMuaCIKICNpbmNsdWRlICJnZGJfb2Jz dGFjay5oIgogCi0jaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlICJzYWZl LWN0eXBlLmgiCisKK3N0YXRpYyBjb25zdCBjaGFyICpwYXJzZV9mdW5jdGlv bl9hcmdzIChzdHJ1Y3Qgb2JzdGFjayAqLCBjb25zdCBjaGFyICopOworc3Rh dGljIGNvbnN0IGNoYXIgKnBhcnNlX3R5cGUgKHN0cnVjdCBvYnN0YWNrICos IGNvbnN0IGNoYXIgKik7CiAKIC8qIFRoZSBuYW1lIG9mIHRoZSBzeW1ib2wg dG8gdXNlIHRvIGdldCB0aGUgbmFtZSBvZiB0aGUgbWFpbiBzdWJwcm9ncmFt LiAgKi8KIHN0YXRpYyBjb25zdCBjaGFyIERfTUFJTltdID0gIkQgbWFpbiI7 CkBAIC01MCwxNzUgKzUyLDYzNCBAQCBkX21haW5fbmFtZSAodm9pZCkKICAg cmV0dXJuIE5VTEw7CiB9CiAKLS8qIEV4dHJhY3QgaWRlbnRpZmllcnMgZnJv bSBNQU5HTEVEX1NUUiBhbmQgYXBwZW5kIGl0IHRvIFRFTVBCVUYuCi0gICBS ZXR1cm4gMSBvbiBzdWNjZXNzIG9yIDAgb24gZmFpbHVyZS4gICovCi1zdGF0 aWMgaW50Ci1leHRyYWN0X2lkZW50aWZpZXJzIChjb25zdCBjaGFyICptYW5n bGVkX3N0ciwgc3RydWN0IG9ic3RhY2sgKnRlbXBidWYpCisvKiBEZW1hbmds ZSB0aGUgY2FsbGluZyBjb252ZW50aW9uIGZyb20gTUFOR0xFIGFuZCBhcHBl bmQgaXQgdG8gVEVNUEJVRi4KKyAgIFJldHVybiB0aGUgcmVtYWluaW5nIHN0 cmluZyBvbiBzdWNjZXNzIG9yIE5VTEwgb24gZmFpbHVyZS4gICovCisKK3N0 YXRpYyBjb25zdCBjaGFyICoKK3BhcnNlX2NhbGxfY29udmVudGlvbiAoc3Ry dWN0IG9ic3RhY2sgKnRlbXBidWYsIGNvbnN0IGNoYXIgKm1hbmdsZSkKIHsK LSAgbG9uZyBpID0gMDsKKyAgaWYgKChtYW5nbGUgPT0gTlVMTCkgfHwgKCpt YW5nbGUgPT0gJ1wwJykpCisgICAgcmV0dXJuIG1hbmdsZTsKIAotICB3aGls ZSAoaXNkaWdpdCAoKm1hbmdsZWRfc3RyKSkKKyAgc3dpdGNoICgqbWFuZ2xl KQogICAgIHsKLSAgICAgIGNoYXIgKmVuZF9wdHI7Ci0KLSAgICAgIGkgPSBz dHJ0b2wgKG1hbmdsZWRfc3RyLCAmZW5kX3B0ciwgMTApOwotICAgICAgbWFu Z2xlZF9zdHIgPSBlbmRfcHRyOwotICAgICAgaWYgKGkgPD0gMCB8fCBzdHJs ZW4gKG1hbmdsZWRfc3RyKSA8IGkpCi0gICAgICAgIHJldHVybiAwOwotICAg ICAgb2JzdGFja19ncm93ICh0ZW1wYnVmLCBtYW5nbGVkX3N0ciwgaSk7Ci0g ICAgICBtYW5nbGVkX3N0ciArPSBpOwotICAgICAgb2JzdGFja19ncm93X3N0 ciAodGVtcGJ1ZiwgIi4iKTsKKyAgICBjYXNlICdGJzogLyogKEQpICovCisg ICAgICBtYW5nbGUrKzsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ1UnOiAv KiAoQykgKi8KKyAgICAgIG1hbmdsZSsrOworICAgICAgb2JzdGFja19ncm93 X3N0ciAodGVtcGJ1ZiwgImV4dGVybihDKSAiKTsKKyAgICAgIGJyZWFrOwor ICAgIGNhc2UgJ1cnOiAvKiAoV2luZG93cykgKi8KKyAgICAgIG1hbmdsZSsr OworICAgICAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImV4dGVybihX aW5kb3dzKSAiKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ1YnOiAvKiAo UGFzY2FsKSAqLworICAgICAgbWFuZ2xlKys7CisgICAgICBvYnN0YWNrX2dy b3dfc3RyICh0ZW1wYnVmLCAiZXh0ZXJuKFBhc2NhbCkgIik7CisgICAgICBi cmVhazsKKyAgICBjYXNlICdSJzogLyogKEMrKykgKi8KKyAgICAgIG1hbmds ZSsrOworICAgICAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImV4dGVy bihDKyspICIpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg IHJldHVybiBOVUxMOwogICAgIH0KLSAgaWYgKCptYW5nbGVkX3N0ciA9PSAn XDAnIHx8IGkgPT0gMCkKLSAgICByZXR1cm4gMDsKLSAgb2JzdGFja19ibGFu ayAodGVtcGJ1ZiwgLTEpOwotICByZXR1cm4gMTsKKworICByZXR1cm4gbWFu Z2xlOworfQorCisvKiBEZW1hbmdsZSB0aGUgRCBmdW5jdGlvbiBhdHRyaWJ1 dGVzIGZyb20gTUFOR0xFIGFuZCBhcHBlbmQgaXQgdG8gVEVNUEJVRi4KKyAg IFJldHVybiB0aGUgcmVtYWluaW5nIHN0cmluZyBvbiBzdWNjZXNzIG9yIE5V TEwgb24gZmFpbHVyZS4gICovCisKK3N0YXRpYyBjb25zdCBjaGFyICoKK3Bh cnNlX2F0dHJpYnV0ZXMgKHN0cnVjdCBvYnN0YWNrICp0ZW1wYnVmLCBjb25z dCBjaGFyICptYW5nbGUpCit7CisgIGlmICgobWFuZ2xlID09IE5VTEwpIHx8 ICgqbWFuZ2xlID09ICdcMCcpKQorICAgIHJldHVybiBtYW5nbGU7CisKKyAg d2hpbGUgKCptYW5nbGUgPT0gJ04nKQorICAgIHsKKyAgICAgIG1hbmdsZSsr OworICAgICAgc3dpdGNoICgqbWFuZ2xlKQorCXsKKwljYXNlICdhJzogLyog cHVyZSAqLworCSAgbWFuZ2xlKys7CisJICBvYnN0YWNrX2dyb3dfc3RyICh0 ZW1wYnVmLCAicHVyZSAiKTsKKwkgIGNvbnRpbnVlOworCWNhc2UgJ2InOiAv KiBub3Rocm93ICovCisJICBtYW5nbGUrKzsKKwkgIG9ic3RhY2tfZ3Jvd19z dHIgKHRlbXBidWYsICJub3Rocm93ICIpOworCSAgY29udGludWU7CisJY2Fz ZSAnYyc6IC8qIHJlZiAqLworCSAgbWFuZ2xlKys7CisJICBvYnN0YWNrX2dy b3dfc3RyICh0ZW1wYnVmLCAicmVmICIpOworCSAgY29udGludWU7CisJY2Fz ZSAnZCc6IC8qIEBwcm9wZXJ0eSAqLworCSAgbWFuZ2xlKys7CisJICBvYnN0 YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiQHByb3BlcnR5ICIpOworCSAgY29u dGludWU7CisJY2FzZSAnZSc6IC8qIEB0cnVzdGVkICovCisJICBtYW5nbGUr KzsKKwkgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJAdHJ1c3RlZCAi KTsKKwkgIGNvbnRpbnVlOworCWNhc2UgJ2YnOiAvKiBAc2FmZSAqLworCSAg bWFuZ2xlKys7CisJICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiQHNh ZmUgIik7CisJICBjb250aW51ZTsKKwljYXNlICdnJzoKKwljYXNlICdoJzoK KwkgIC8qIGlub3V0IHBhcmFtZXRlciBpcyByZXByZXNlbnRlZCBhcyAnTmcn LgorCSAgICAgdmVjdG9yIHBhcmFtZXRlciBpcyByZXByZXNlbnRlZCBhcyAn TmgnLgorCSAgICAgSWYgd2Ugc2VlIHRoaXMsIHRoZW4gd2Uga25vdyB3ZSdy ZSByZWFsbHkgaW4gdGhlCisJICAgICBwYXJhbWV0ZXIgbGlzdC4gIFJld2lu ZCBhbmQgYnJlYWsuICAqLworCSAgbWFuZ2xlLS07CisJfQorICAgICAgYnJl YWs7CisgICAgfQorICByZXR1cm4gbWFuZ2xlOworfQorCisvKiBEZW1hbmds ZSB0aGUgZnVuY3Rpb24gdHlwZSBmcm9tIE1BTkdMRSBhbmQgYXBwZW5kIGl0 IHRvIFRFTVBCVUYuCisgICBSZXR1cm4gdGhlIHJlbWFpbmluZyBzdHJpbmcg b24gc3VjY2VzcyBvciBOVUxMIG9uIGZhaWx1cmUuICAqLworCitzdGF0aWMg Y29uc3QgY2hhciAqCitwYXJzZV9mdW5jdGlvbl90eXBlIChzdHJ1Y3Qgb2Jz dGFjayAqdGVtcGJ1ZiwgY29uc3QgY2hhciAqbWFuZ2xlKQoreworICBzdHJ1 Y3Qgb2JzdGFjayBvYmF0dHIsIG9iYXJncywgb2J0eXBlOworICBjaGFyICph dHRyLCAqYXJncywgKnR5cGU7CisgIHNpemVfdCBzemF0dHIsIHN6YXJncywg c3p0eXBlOworCisgIGlmICgobWFuZ2xlID09IE5VTEwpIHx8ICgqbWFuZ2xl ID09ICdcMCcpKQorICAgIHJldHVybiBtYW5nbGU7CisKKyAgLyogVGhlIG9y ZGVyIG9mIHRoZSBtYW5nbGVkIHN0cmluZyBpczoKKyAgICAgVHlwZUZ1bmN0 aW9uIDo6CisgICAgICAgIENhbGxDb252ZW50aW9uIEZ1bmNBdHRycyBBcmd1 bWVudHMgQXJnQ2xvc2UgVHlwZQorCisgICAgIFRoZSBkZW1hbmdsZWQgc3Ry aW5nIGlzIHJlLW9yZGVyZWQgYXM6CisgICAgICAgIENhbGxDb252ZW50aW9u IFR5cGUgQXJndW1lbnRzIEZ1bmNBdHRycworICAgKi8KKyAgb2JzdGFja19p bml0ICgmb2JhdHRyKTsKKyAgb2JzdGFja19pbml0ICgmb2JhcmdzKTsKKyAg b2JzdGFja19pbml0ICgmb2J0eXBlKTsKKworICAvKiBGdW5jdGlvbiBjYWxs IGNvbnZlbnRpb24uICAqLworICBtYW5nbGUgPSBwYXJzZV9jYWxsX2NvbnZl bnRpb24gKHRlbXBidWYsIG1hbmdsZSk7CisKKyAgLyogRnVuY3Rpb24gYXR0 cmlidXRlcy4gICovCisgIG1hbmdsZSA9IHBhcnNlX2F0dHJpYnV0ZXMgKCZv YmF0dHIsIG1hbmdsZSk7CisgIHN6YXR0ciA9IG9ic3RhY2tfb2JqZWN0X3Np emUgKCZvYmF0dHIpOworICBhdHRyID0gb2JzdGFja19maW5pc2ggKCZvYmF0 dHIpOworCisgIC8qIEZ1bmN0aW9uIGFyZ3VtZW50cy4gICovCisgIG1hbmds ZSA9IHBhcnNlX2Z1bmN0aW9uX2FyZ3MgKCZvYmFyZ3MsIG1hbmdsZSk7Cisg IHN6YXJncyA9IG9ic3RhY2tfb2JqZWN0X3NpemUgKCZvYmFyZ3MpOworICBh cmdzID0gb2JzdGFja19maW5pc2ggKCZvYmFyZ3MpOworCisgIC8qIEZ1bmN0 aW9uIHJldHVybiB0eXBlLiAgKi8KKyAgbWFuZ2xlID0gcGFyc2VfdHlwZSAo Jm9idHlwZSwgbWFuZ2xlKTsKKyAgc3p0eXBlID0gb2JzdGFja19vYmplY3Rf c2l6ZSAoJm9idHlwZSk7CisgIHR5cGUgPSBvYnN0YWNrX2ZpbmlzaCAoJm9i dHlwZSk7CisKKyAgLyogQXBwZW5kIHRvIGJ1ZmZlciBpbiBvcmRlci4gKi8K KyAgb2JzdGFja19ncm93ICh0ZW1wYnVmLCB0eXBlLCBzenR5cGUpOworICBv YnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiKCIpOworICBvYnN0YWNrX2dy b3cgKHRlbXBidWYsIGFyZ3MsIHN6YXJncyk7CisgIG9ic3RhY2tfZ3Jvd19z dHIgKHRlbXBidWYsICIpICIpOworICBvYnN0YWNrX2dyb3cgKHRlbXBidWYs IGF0dHIsIHN6YXR0cik7CisKKyAgb2JzdGFja19mcmVlICgmb2JhdHRyLCBO VUxMKTsKKyAgb2JzdGFja19mcmVlICgmb2JhcmdzLCBOVUxMKTsKKyAgb2Jz dGFja19mcmVlICgmb2J0eXBlLCBOVUxMKTsKKyAgcmV0dXJuIG1hbmdsZTsK K30KKworLyogRGVtYW5nbGUgdGhlIGFyZ3VtZW50IGxpc3QgZnJvbSBNQU5H TEUgYW5kIGFwcGVuZCBpdCB0byBURU1QQlVGLgorICAgUmV0dXJuIHRoZSBy ZW1haW5pbmcgc3RyaW5nIG9uIHN1Y2Nlc3Mgb3IgTlVMTCBvbiBmYWlsdXJl LiAgKi8KKworc3RhdGljIGNvbnN0IGNoYXIgKgorcGFyc2VfZnVuY3Rpb25f YXJncyAoc3RydWN0IG9ic3RhY2sgKnRlbXBidWYsIGNvbnN0IGNoYXIgKm1h bmdsZSkKK3sKKyAgc2l6ZV90IG4gPSAwOworCisgIHdoaWxlICgobWFuZ2xl ICE9IE5VTEwpICYmICgqbWFuZ2xlICE9ICdcMCcpKQorICAgIHsKKyAgICAg IHN3aXRjaCAoKm1hbmdsZSkKKwl7CisJY2FzZSAnWCc6IC8qICh2YXJpYWRp YyBUIHQuLi4pIHN0eWxlLiAgKi8KKwkgIG1hbmdsZSsrOworCSAgb2JzdGFj a19ncm93X3N0ciAodGVtcGJ1ZiwgIi4uLiIpOworCSAgcmV0dXJuIG1hbmds ZTsKKwljYXNlICdZJzogLyogKHZhcmlhZGljIFQgdCwgLi4uKSBzdHlsZS4g ICovCisJICBtYW5nbGUrKzsKKwkgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBi dWYsICIsIC4uLiIpOworCSAgcmV0dXJuIG1hbmdsZTsKKwljYXNlICdaJzog LyogTm9ybWFsIGZ1bmN0aW9uLiAgKi8KKwkgIG1hbmdsZSsrOworCSAgcmV0 dXJuIG1hbmdsZTsKKwl9CisKKyAgICAgIGlmIChuKyspCisJb2JzdGFja19n cm93X3N0ciAodGVtcGJ1ZiwgIiwgIik7CisKKyAgICAgIGlmICgqbWFuZ2xl ID09ICdNJykgLyogc2NvcGUoVCkgKi8KKwl7CisJICBtYW5nbGUrKzsKKwkg IG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJzY29wZSAiKTsKKwl9CisK KyAgICAgIHN3aXRjaCAoKm1hbmdsZSkKKwl7CisJY2FzZSAnSic6IC8qIG91 dChUKSAqLworCSAgbWFuZ2xlKys7CisJICBvYnN0YWNrX2dyb3dfc3RyICh0 ZW1wYnVmLCAib3V0ICIpOworCSAgYnJlYWs7CisJY2FzZSAnSyc6IC8qIHJl ZihUKSAqLworCSAgbWFuZ2xlKys7CisJICBvYnN0YWNrX2dyb3dfc3RyICh0 ZW1wYnVmLCAicmVmICIpOworCSAgYnJlYWs7CisJY2FzZSAnTCc6IC8qIGxh enkoVCkgKi8KKwkgIG1hbmdsZSsrOworCSAgb2JzdGFja19ncm93X3N0ciAo dGVtcGJ1ZiwgImxhenkgIik7CisJICBicmVhazsKKwl9CisgICAgICBtYW5n bGUgPSBwYXJzZV90eXBlICh0ZW1wYnVmLCBtYW5nbGUpOworICAgIH0KKyAg cmV0dXJuIG1hbmdsZTsKK30KKworLyogRGVtYW5nbGUgdGhlIHR5cGUgZnJv bSBNQU5HTEUgYW5kIGFwcGVuZCBpdCB0byBURU1QQlVGLgorICAgUmV0dXJu IHRoZSByZW1haW5pbmcgc3RyaW5nIG9uIHN1Y2Nlc3Mgb3IgTlVMTCBvbiBm YWlsdXJlLiAgKi8KKworc3RhdGljIGNvbnN0IGNoYXIgKgorcGFyc2VfdHlw ZSAoc3RydWN0IG9ic3RhY2sgKnRlbXBidWYsIGNvbnN0IGNoYXIgKm1hbmds ZSkKK3sKKyAgaWYgKChtYW5nbGUgPT0gTlVMTCkgfHwgKCptYW5nbGUgPT0g J1wwJykpCisgICAgcmV0dXJuIG1hbmdsZTsKKworICBzd2l0Y2ggKCptYW5n bGUpCisgICAgeworICAgIGNhc2UgJ08nOiAvKiBzaGFyZWQoVCkgKi8KKyAg ICAgIG1hbmdsZSsrOworICAgICAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1 ZiwgInNoYXJlZCgiKTsKKyAgICAgIG1hbmdsZSA9IHBhcnNlX3R5cGUgKHRl bXBidWYsIG1hbmdsZSk7CisgICAgICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1w YnVmLCAiKSIpOworICAgICAgcmV0dXJuIG1hbmdsZTsKKyAgICBjYXNlICd4 JzogLyogY29uc3QoVCkgKi8KKyAgICAgIG1hbmdsZSsrOworICAgICAgb2Jz dGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImNvbnN0KCIpOworICAgICAgbWFu Z2xlID0gcGFyc2VfdHlwZSAodGVtcGJ1ZiwgbWFuZ2xlKTsKKyAgICAgIG9i c3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICIpIik7CisgICAgICByZXR1cm4g bWFuZ2xlOworICAgIGNhc2UgJ3knOiAvKiBpbW11dGFibGUoVCkgKi8KKyAg ICAgIG1hbmdsZSsrOworICAgICAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1 ZiwgImltbXV0YWJsZSgiKTsKKyAgICAgIG1hbmdsZSA9IHBhcnNlX3R5cGUg KHRlbXBidWYsIG1hbmdsZSk7CisgICAgICBvYnN0YWNrX2dyb3dfc3RyICh0 ZW1wYnVmLCAiKSIpOworICAgICAgcmV0dXJuIG1hbmdsZTsKKyAgICBjYXNl ICdOJzoKKyAgICAgIG1hbmdsZSsrOworICAgICAgaWYgKCptYW5nbGUgPT0g J2cnKSAvKiB3aWxkKFQpICovCisJeworCSAgbWFuZ2xlKys7CisJICBvYnN0 YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiaW5vdXQoIik7CisJICBtYW5nbGUg PSBwYXJzZV90eXBlICh0ZW1wYnVmLCBtYW5nbGUpOworCSAgb2JzdGFja19n cm93X3N0ciAodGVtcGJ1ZiwgIikiKTsKKwkgIHJldHVybiBtYW5nbGU7CisJ fQorICAgICAgZWxzZSBpZiAoKm1hbmdsZSA9PSAnaCcpIC8qIHZlY3RvcihU KSAqLworCXsKKwkgIG1hbmdsZSsrOworCSAgLyogVGhlIGJhc2V0eXBlIGZv ciB2ZWN0b3JzIGFyZSBhbHdheXMgc3RhdGljIGFycmF5cy4gICovCisJICBp ZiAoKm1hbmdsZSAhPSAnRycpCisJICAgIHJldHVybiBOVUxMOworCSAgb2Jz dGFja19ncm93X3N0ciAodGVtcGJ1ZiwgIl9fdmVjdG9yKCIpOworCSAgbWFu Z2xlID0gcGFyc2VfdHlwZSAodGVtcGJ1ZiwgbWFuZ2xlKTsKKwkgIG9ic3Rh Y2tfZ3Jvd19zdHIgKHRlbXBidWYsICIpIik7CisJICByZXR1cm4gbWFuZ2xl OworCX0KKyAgICAgIGVsc2UKKwlyZXR1cm4gTlVMTDsKKyAgICBjYXNlICdB JzogLyogZHluYW1pYyBhcnJheSAoVFtdKSAqLworICAgICAgbWFuZ2xlKys7 CisgICAgICBtYW5nbGUgPSBwYXJzZV90eXBlICh0ZW1wYnVmLCBtYW5nbGUp OworICAgICAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgIltdIik7Cisg ICAgICByZXR1cm4gbWFuZ2xlOworICAgIGNhc2UgJ0cnOiAvKiBzdGF0aWMg YXJyYXkgKFRbTl0pICovCisgICAgeworICAgICAgY29uc3QgY2hhciAqbnVt cHRyOworICAgICAgc2l6ZV90IG51bSA9IDA7CisgICAgICBtYW5nbGUrKzsK KworICAgICAgbnVtcHRyID0gbWFuZ2xlOworICAgICAgd2hpbGUgKElTRElH SVQgKCptYW5nbGUpKQorCXsKKwkgIG51bSsrOworCSAgbWFuZ2xlKys7CisJ fQorICAgICAgbWFuZ2xlID0gcGFyc2VfdHlwZSAodGVtcGJ1ZiwgbWFuZ2xl KTsKKyAgICAgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJbIik7Cisg ICAgICBvYnN0YWNrX2dyb3cgKHRlbXBidWYsIG51bXB0ciwgbnVtKTsKKyAg ICAgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJdIik7CisgICAgICBy ZXR1cm4gbWFuZ2xlOworICAgIH0KKyAgICBjYXNlICdIJzogLyogYXNzb2Np YXRpdmUgYXJyYXkgKFRbVF0pICovCisgICAgeworICAgICAgc3RydWN0IG9i c3RhY2sgb2J0eXBlOworICAgICAgY2hhciAqdHlwZTsKKyAgICAgIHNpemVf dCBzenR5cGU7CisgICAgICBtYW5nbGUrKzsKKworICAgICAgb2JzdGFja19p bml0ICgmb2J0eXBlKTsKKyAgICAgIG1hbmdsZSA9IHBhcnNlX3R5cGUgKCZv YnR5cGUsIG1hbmdsZSk7CisgICAgICBzenR5cGUgPSBvYnN0YWNrX29iamVj dF9zaXplICgmb2J0eXBlKTsKKyAgICAgIHR5cGUgPSBvYnN0YWNrX2Zpbmlz aCAoJm9idHlwZSk7CisKKyAgICAgIG1hbmdsZSA9IHBhcnNlX3R5cGUgKHRl bXBidWYsIG1hbmdsZSk7CisgICAgICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1w YnVmLCAiWyIpOworICAgICAgb2JzdGFja19ncm93ICh0ZW1wYnVmLCB0eXBl LCBzenR5cGUpOworICAgICAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1Ziwg Il0iKTsKKworICAgICAgb2JzdGFja19mcmVlICgmb2J0eXBlLCBOVUxMKTsK KyAgICAgIHJldHVybiBtYW5nbGU7CisgICAgfQorICAgIGNhc2UgJ1AnOiAv KiBwb2ludGVyIChUKikgKi8KKyAgICAgIG1hbmdsZSsrOworICAgICAgbWFu Z2xlID0gcGFyc2VfdHlwZSAodGVtcGJ1ZiwgbWFuZ2xlKTsKKyAgICAgIG9i c3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICIqIik7CisgICAgICByZXR1cm4g bWFuZ2xlOworICAgIGNhc2UgJ0knOiAvKiBpZGVudCBUICovCisgICAgY2Fz ZSAnQyc6IC8qIGNsYXNzIFQgKi8KKyAgICBjYXNlICdTJzogLyogc3RydWN0 IFQgKi8KKyAgICBjYXNlICdFJzogLyogZW51bSBUICovCisgICAgY2FzZSAn VCc6IC8qIHR5cGVkZWYgVCAqLworICAgICAgbWFuZ2xlKys7CisgICAgICBy ZXR1cm4gZF9wYXJzZV9zeW1ib2wgKHRlbXBidWYsIG1hbmdsZSk7CisgICAg Y2FzZSAnRCc6IC8qIGRlbGVnYXRlIFQgKi8KKyAgICAgIG1hbmdsZSsrOwor ICAgICAgbWFuZ2xlID0gcGFyc2VfZnVuY3Rpb25fdHlwZSAodGVtcGJ1Ziwg bWFuZ2xlKTsKKyAgICAgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJk ZWxlZ2F0ZSIpOworICAgICAgcmV0dXJuIG1hbmdsZTsKKyAgICBjYXNlICdC JzogLyogdHVwbGUgVCAqLworICAgICAgLyogVE9ETzogSGFuZGxlIHRoaXMu ICAqLworICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBGdW5jdGlvbiB0 eXBlcyAqLworICAgIGNhc2UgJ0YnOiBjYXNlICdVJzogY2FzZSAnVyc6Cisg ICAgY2FzZSAnVic6IGNhc2UgJ1InOgorICAgICAgbWFuZ2xlID0gcGFyc2Vf ZnVuY3Rpb25fdHlwZSAodGVtcGJ1ZiwgbWFuZ2xlKTsKKyAgICAgIG9ic3Rh Y2tfZ3Jvd19zdHIgKHRlbXBidWYsICJmdW5jdGlvbiIpOworICAgICAgcmV0 dXJuIG1hbmdsZTsKKworICAgIC8qIEJhc2ljIHR5cGVzICovCisgICAgY2Fz ZSAnbic6CisgICAgICBtYW5nbGUrKzsKKyAgICAgIG9ic3RhY2tfZ3Jvd19z dHIgKHRlbXBidWYsICJub25lIik7CisgICAgICByZXR1cm4gbWFuZ2xlOwor ICAgIGNhc2UgJ3YnOgorICAgICAgbWFuZ2xlKys7CisgICAgICBvYnN0YWNr X2dyb3dfc3RyICh0ZW1wYnVmLCAidm9pZCIpOworICAgICAgcmV0dXJuIG1h bmdsZTsKKyAgICBjYXNlICdnJzoKKyAgICAgIG1hbmdsZSsrOworICAgICAg b2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImJ5dGUiKTsKKyAgICAgIHJl dHVybiBtYW5nbGU7CisgICAgY2FzZSAnaCc6CisgICAgICBtYW5nbGUrKzsK KyAgICAgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJ1Ynl0ZSIpOwor ICAgICAgcmV0dXJuIG1hbmdsZTsKKyAgICBjYXNlICdzJzoKKyAgICAgIG1h bmdsZSsrOworICAgICAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgInNo b3J0Iik7CisgICAgICByZXR1cm4gbWFuZ2xlOworICAgIGNhc2UgJ3QnOgor ICAgICAgbWFuZ2xlKys7CisgICAgICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1w YnVmLCAidXNob3J0Iik7CisgICAgICByZXR1cm4gbWFuZ2xlOworICAgIGNh c2UgJ2knOgorICAgICAgbWFuZ2xlKys7CisgICAgICBvYnN0YWNrX2dyb3df c3RyICh0ZW1wYnVmLCAiaW50Iik7CisgICAgICByZXR1cm4gbWFuZ2xlOwor ICAgIGNhc2UgJ2snOgorICAgICAgbWFuZ2xlKys7CisgICAgICBvYnN0YWNr X2dyb3dfc3RyICh0ZW1wYnVmLCAidWludCIpOworICAgICAgcmV0dXJuIG1h bmdsZTsKKyAgICBjYXNlICdsJzoKKyAgICAgIG1hbmdsZSsrOworICAgICAg b2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImxvbmciKTsKKyAgICAgIHJl dHVybiBtYW5nbGU7CisgICAgY2FzZSAnbSc6CisgICAgICBtYW5nbGUrKzsK KyAgICAgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJ1bG9uZyIpOwor ICAgICAgcmV0dXJuIG1hbmdsZTsKKyAgICBjYXNlICdmJzoKKyAgICAgIG1h bmdsZSsrOworICAgICAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImZs b2F0Iik7CisgICAgICByZXR1cm4gbWFuZ2xlOworICAgIGNhc2UgJ2QnOgor ICAgICAgbWFuZ2xlKys7CisgICAgICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1w YnVmLCAiZG91YmxlIik7CisgICAgICByZXR1cm4gbWFuZ2xlOworICAgIGNh c2UgJ2UnOgorICAgICAgbWFuZ2xlKys7CisgICAgICBvYnN0YWNrX2dyb3df c3RyICh0ZW1wYnVmLCAicmVhbCIpOworICAgICAgcmV0dXJuIG1hbmdsZTsK KworICAgIC8qIEltYWdpbmFyeSBhbmQgQ29tcGxleCB0eXBlcyAqLworICAg IGNhc2UgJ28nOgorICAgICAgbWFuZ2xlKys7CisgICAgICBvYnN0YWNrX2dy b3dfc3RyICh0ZW1wYnVmLCAiaWZsb2F0Iik7CisgICAgICByZXR1cm4gbWFu Z2xlOworICAgIGNhc2UgJ3AnOgorICAgICAgbWFuZ2xlKys7CisgICAgICBv YnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiaWRvdWJsZSIpOworICAgICAg cmV0dXJuIG1hbmdsZTsKKyAgICBjYXNlICdqJzoKKyAgICAgIG1hbmdsZSsr OworICAgICAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImlyZWFsIik7 CisgICAgICByZXR1cm4gbWFuZ2xlOworICAgIGNhc2UgJ3EnOgorICAgICAg bWFuZ2xlKys7CisgICAgICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAi Y2Zsb2F0Iik7CisgICAgICByZXR1cm4gbWFuZ2xlOworICAgIGNhc2UgJ3In OgorICAgICAgbWFuZ2xlKys7CisgICAgICBvYnN0YWNrX2dyb3dfc3RyICh0 ZW1wYnVmLCAiY2RvdWJsZSIpOworICAgICAgcmV0dXJuIG1hbmdsZTsKKyAg ICBjYXNlICdjJzoKKyAgICAgIG1hbmdsZSsrOworICAgICAgb2JzdGFja19n cm93X3N0ciAodGVtcGJ1ZiwgImNyZWFsIik7CisgICAgICByZXR1cm4gbWFu Z2xlOworCisgICAgLyogT3RoZXIgdHlwZXMgKi8KKyAgICBjYXNlICdiJzoK KyAgICAgIG1hbmdsZSsrOworICAgICAgb2JzdGFja19ncm93X3N0ciAodGVt cGJ1ZiwgImJvb2wiKTsKKyAgICAgIHJldHVybiBtYW5nbGU7CisgICAgY2Fz ZSAnYSc6CisgICAgICBtYW5nbGUrKzsKKyAgICAgIG9ic3RhY2tfZ3Jvd19z dHIgKHRlbXBidWYsICJjaGFyIik7CisgICAgICByZXR1cm4gbWFuZ2xlOwor ICAgIGNhc2UgJ3UnOgorICAgICAgbWFuZ2xlKys7CisgICAgICBvYnN0YWNr X2dyb3dfc3RyICh0ZW1wYnVmLCAid2NoYXIiKTsKKyAgICAgIHJldHVybiBt YW5nbGU7CisgICAgY2FzZSAndyc6CisgICAgICBtYW5nbGUrKzsKKyAgICAg IG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJkY2hhciIpOworICAgICAg cmV0dXJuIG1hbmdsZTsKKworICAgIGRlZmF1bHQ6IC8qIHVuaGFuZGxlZCAq LworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorfQorCisvKiBFeHRyYWN0 IHRoZSBpZGVudGlmaWVyIGZyb20gTUFOR0xFIGFuZCBhcHBlbmQgaXQgdG8g VEVNUEJVRi4KKyAgIFJldHVybiB0aGUgcmVtYWluaW5nIHN0cmluZyBvbiBz dWNjZXNzIG9yIE5VTEwgb24gZmFpbHVyZS4gICovCisKK3N0YXRpYyBjb25z dCBjaGFyICoKK3BhcnNlX2lkZW50aWZpZXIgKHN0cnVjdCBvYnN0YWNrICp0 ZW1wYnVmLCBjb25zdCBjaGFyICptYW5nbGUpCit7CisgIGlmICgobWFuZ2xl ID09IE5VTEwpIHx8ICgqbWFuZ2xlID09ICdcMCcpKQorICAgIHJldHVybiBt YW5nbGU7CisKKyAgaWYgKElTRElHSVQgKCptYW5nbGUpKQorICAgIHsKKyAg ICAgIGNoYXIgKmVuZHB0cjsKKyAgICAgIGxvbmcgaSA9IHN0cnRvbCAobWFu Z2xlLCAmZW5kcHRyLCAxMCk7CisKKyAgICAgIGlmIChpIDw9IDAgfHwgc3Ry bGVuIChlbmRwdHIpIDwgaSkKKwlyZXR1cm4gTlVMTDsKKworICAgICAgbWFu Z2xlID0gZW5kcHRyOworCisgICAgICAvKiBObyBzdXBwb3J0IGZvciBkZW1h bmdsaW5nIHRlbXBsYXRlcy4gICovCisgICAgICBpZiAoaSA+PSA1ICYmIHN0 cm5jbXAgKG1hbmdsZSwgIl9fVCIsIDMpID09IDApCisJcmV0dXJuIE5VTEw7 CisKKyAgICAgIGlmIChzdHJuY21wIChtYW5nbGUsICJfX2N0b3IiLCBpKSA9 PSAwKQorCXsKKwkgIC8qIENvbnN0cnVjdG9yIHN5bWJvbCBmb3IgYSBjbGFz cy9zdHJ1Y3QuICAqLworCSAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1Ziwg InRoaXMiKTsKKwkgIG1hbmdsZSArPSBpOworCSAgcmV0dXJuIG1hbmdsZTsK Kwl9CisgICAgICBlbHNlIGlmIChzdHJuY21wIChtYW5nbGUsICJfX2R0b3Ii LCBpKSA9PSAwKQorCXsKKwkgIC8qIERlc3RydWN0b3Igc3ltYm9sIGZvciBh IGNsYXNzL3N0cnVjdC4gICovCisJICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1w YnVmLCAifnRoaXMiKTsKKwkgIG1hbmdsZSArPSBpOworCSAgcmV0dXJuIG1h bmdsZTsKKwl9CisgICAgICBlbHNlIGlmIChzdHJuY21wIChtYW5nbGUsICJf X3Bvc3RibGl0IiwgaSkgPT0gMCkKKwl7CisJICAvKiBQb3N0YmxpdCBzeW1i b2wgZm9yIGEgc3RydWN0LiAgKi8KKwkgIG9ic3RhY2tfZ3Jvd19zdHIgKHRl bXBidWYsICJ0aGlzKHRoaXMpIik7CisJICBtYW5nbGUgKz0gaTsKKwkgIHJl dHVybiBtYW5nbGU7CisJfQorICAgICAgZWxzZSBpZiAoc3RybmNtcCAobWFu Z2xlLCAiX19pbml0WiIsIGkrMSkgPT0gMCkKKwl7CisJICAvKiBUaGUgc3Rh dGljIGluaXRpYWxpc2VyIGZvciBhIGdpdmVuIHN5bWJvbC4gICovCisJICBv YnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiaW5pdCQiKTsKKwkgIG1hbmds ZSArPSBpICsgMTsKKwkgIHJldHVybiBtYW5nbGU7CisJfQorICAgICAgZWxz ZSBpZiAoc3RybmNtcCAobWFuZ2xlLCAiX19DbGFzc1oiLCBpKzEpID09IDAp CisJeworCSAgLyogVGhlIGNsYXNzaW5mbyBzeW1ib2wgZm9yIGEgZ2l2ZW4g Y2xhc3MuICAqLworCSAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImNs YXNzaW5mbyQiKTsKKwkgIG1hbmdsZSArPSBpICsgMTsKKwkgIHJldHVybiBt YW5nbGU7CisJfQorICAgICAgZWxzZSBpZiAoc3RybmNtcCAobWFuZ2xlLCAi X192dGJsWiIsIGkrMSkgPT0gMCkKKwl7CisJICAvKiBUaGUgdnRhYmxlIHN5 bWJvbCBmb3IgYSBnaXZlbiBjbGFzcy4gICovCisJICBvYnN0YWNrX2dyb3df c3RyICh0ZW1wYnVmLCAidnRibCQiKTsKKwkgIG1hbmdsZSArPSBpICsgMTsK KwkgIHJldHVybiBtYW5nbGU7CisJfQorICAgICAgZWxzZSBpZiAoc3RybmNt cCAobWFuZ2xlLCAiX19JbnRlcmZhY2VaIiwgaSsxKSA9PSAwKQorCXsKKwkg IC8qIFRoZSBpbnRlcmZhY2Ugc3ltYm9sIGZvciBhIGdpdmVuIGNsYXNzLiAg Ki8KKwkgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJpbnRlcmZhY2Uk Iik7CisJICBtYW5nbGUgKz0gaSArIDE7CisJICByZXR1cm4gbWFuZ2xlOwor CX0KKyAgICAgIGVsc2UgaWYgKHN0cm5jbXAgKG1hbmdsZSwgIl9fTW9kdWxl SW5mb1oiLCBpKzEpID09IDApCisJeworCSAgLyogVGhlIE1vZHVsZUluZm8g c3ltYm9sIGZvciBhIGdpdmVuIG1vZHVsZS4gICovCisJICBvYnN0YWNrX2dy b3dfc3RyICh0ZW1wYnVmLCAibW9kdWxlaW5mbyQiKTsKKwkgIG1hbmdsZSAr PSBpICsgMTsKKwkgIHJldHVybiBtYW5nbGU7CisJfQorICAgICAgb2JzdGFj a19ncm93ICh0ZW1wYnVmLCBtYW5nbGUsIGkpOworICAgICAgbWFuZ2xlICs9 IGk7CisgICAgfQorICBlbHNlCisgICAgcmV0dXJuIE5VTEw7CisKKyAgcmV0 dXJuIG1hbmdsZTsKIH0KIAotLyogRXh0cmFjdCBhbmQgZGVtYW5nbGUgdHlw ZSBmcm9tIE1BTkdMRURfU1RSIGFuZCBhcHBlbmQgaXQgdG8gVEVNUEJVRi4K LSAgIFJldHVybiAxIG9uIHN1Y2Nlc3Mgb3IgMCBvbiBmYWlsdXJlLiAgKi8K Ky8qIFRlc3Qgd2hldGhlciB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiBNQU5H TEUgaXMgcG9pbnRpbmcgdG8gdGhlCisgICBiZWdpbm5pbmcgb2YgYSBtYW5n bGVkIGZ1bmN0aW9uIHBhcmFtZXRlciBsaXN0LCB3aGljaCBzdGFydHMgd2l0 aAorICAgdGhlIGNhbGxpbmcgY29udmVudGlvbi4gIFJldHVybnMgMSBvbiBz dWNjZXNzIG9yIDAgb24gZmFpbHVyZS4gICovCisKIHN0YXRpYyBpbnQKLWV4 dHJhY3RfdHlwZV9pbmZvIChjb25zdCBjaGFyICptYW5nbGVkX3N0ciwgc3Ry dWN0IG9ic3RhY2sgKnRlbXBidWYpCitjYWxsX2NvbnZlbnRpb25fcCAoY29u c3QgY2hhciAqbWFuZ2xlKQogewotICBpZiAoKm1hbmdsZWRfc3RyID09ICdc MCcpCisgIHNpemVfdCBpOworCisgIGlmICgobWFuZ2xlID09IE5VTEwpIHx8 ICgqbWFuZ2xlID09ICdcMCcpKQogICAgIHJldHVybiAwOwotICBzd2l0Y2gg KCptYW5nbGVkX3N0cisrKQorCisgIHN3aXRjaCAoKm1hbmdsZSkKICAgICB7 Ci0gICAgICBjYXNlICdBJzogLyogZHluYW1pYyBhcnJheSAqLwotICAgICAg Y2FzZSAnRyc6IC8qIHN0YXRpYyBhcnJheSAqLwotICAgICAgY2FzZSAnSCc6 IC8qIGFzc29jaWF0aXZlIGFycmF5ICovCi0JaWYgKCFleHRyYWN0X3R5cGVf aW5mbyAobWFuZ2xlZF9zdHIsIHRlbXBidWYpKQotCSAgcmV0dXJuIDA7Ci0J b2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgIltdIik7Ci0JcmV0dXJuIDE7 Ci0gICAgICBjYXNlICdQJzogLyogcG9pbnRlciAqLwotCWlmICghZXh0cmFj dF90eXBlX2luZm8gKG1hbmdsZWRfc3RyLCB0ZW1wYnVmKSkKLQkgIHJldHVy biAwOwotCW9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICIqIik7Ci0JcmV0 dXJuIDE7Ci0gICAgICBjYXNlICdSJzogLyogcmVmZXJlbmNlICovCi0JaWYg KCFleHRyYWN0X3R5cGVfaW5mbyAobWFuZ2xlZF9zdHIsIHRlbXBidWYpKQot CSAgcmV0dXJuIDA7Ci0Jb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgIiYi KTsKLQlyZXR1cm4gMTsKLSAgICAgIGNhc2UgJ1onOiAvKiByZXR1cm4gdmFs dWUgKi8KLQlyZXR1cm4gZXh0cmFjdF90eXBlX2luZm8gKG1hbmdsZWRfc3Ry LCB0ZW1wYnVmKTsKLSAgICAgIGNhc2UgJ0onOiAvKiBvdXQgKi8KLQlvYnN0 YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAib3V0ICIpOwotCXJldHVybiBleHRy YWN0X3R5cGVfaW5mbyAobWFuZ2xlZF9zdHIsIHRlbXBidWYpOwotICAgICAg Y2FzZSAnSyc6IC8qIGlub3V0ICovCi0Jb2JzdGFja19ncm93X3N0ciAodGVt cGJ1ZiwgImlub3V0ICIpOwotCXJldHVybiBleHRyYWN0X3R5cGVfaW5mbyAo bWFuZ2xlZF9zdHIsIHRlbXBidWYpOwotICAgICAgY2FzZSAnRSc6IC8qIGVu dW0gKi8KLSAgICAgIGNhc2UgJ1QnOiAvKiB0eXBlZGVmICovCi0gICAgICBj YXNlICdEJzogLyogZGVsZWdhdGUgKi8KLSAgICAgIGNhc2UgJ0MnOiAvKiBj bGFzcyAqLwotICAgICAgY2FzZSAnUyc6IC8qIHN0cnVjdCAqLwotCXJldHVy biBleHRyYWN0X2lkZW50aWZpZXJzIChtYW5nbGVkX3N0ciwgdGVtcGJ1Zik7 Ci0KLSAgICAgIC8qIGJhc2ljIHR5cGVzOiAqLwotICAgICAgY2FzZSAnbic6 IG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJub25lIik7IHJldHVybiAx OwotICAgICAgY2FzZSAndic6IG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYs ICJ2b2lkIik7IHJldHVybiAxOwotICAgICAgY2FzZSAnZyc6IG9ic3RhY2tf Z3Jvd19zdHIgKHRlbXBidWYsICJieXRlIik7IHJldHVybiAxOwotICAgICAg Y2FzZSAnaCc6IG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJ1Ynl0ZSIp OyByZXR1cm4gMTsKLSAgICAgIGNhc2UgJ3MnOiBvYnN0YWNrX2dyb3dfc3Ry ICh0ZW1wYnVmLCAic2hvcnQiKTsgcmV0dXJuIDE7Ci0gICAgICBjYXNlICd0 Jzogb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgInVzaG9ydCIpOyByZXR1 cm4gMTsKLSAgICAgIGNhc2UgJ2knOiBvYnN0YWNrX2dyb3dfc3RyICh0ZW1w YnVmLCAiaW50Iik7IHJldHVybiAxOwotICAgICAgY2FzZSAnayc6IG9ic3Rh Y2tfZ3Jvd19zdHIgKHRlbXBidWYsICJ1aW50Iik7IHJldHVybiAxOwotICAg ICAgY2FzZSAnbCc6IG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJsb25n Iik7IHJldHVybiAxOwotICAgICAgY2FzZSAnbSc6IG9ic3RhY2tfZ3Jvd19z dHIgKHRlbXBidWYsICJ1bG9uZyIpOyByZXR1cm4gMTsKLSAgICAgIGNhc2Ug J2YnOiBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiZmxvYXQiKTsgcmV0 dXJuIDE7Ci0gICAgICBjYXNlICdkJzogb2JzdGFja19ncm93X3N0ciAodGVt cGJ1ZiwgImRvdWJsZSIpOyByZXR1cm4gMTsKLSAgICAgIGNhc2UgJ2UnOiBv YnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAicmVhbCIpOyByZXR1cm4gMTsK LQotICAgICAgLyogaW1hZ2luYXJ5IGFuZCBjb21wbGV4OiAqLwotICAgICAg Y2FzZSAnbyc6IG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJpZmxvYXQi KTsgcmV0dXJuIDE7Ci0gICAgICBjYXNlICdwJzogb2JzdGFja19ncm93X3N0 ciAodGVtcGJ1ZiwgImlkb3VibGUiKTsgcmV0dXJuIDE7Ci0gICAgICBjYXNl ICdqJzogb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImlyZWFsIik7IHJl dHVybiAxOwotICAgICAgY2FzZSAncSc6IG9ic3RhY2tfZ3Jvd19zdHIgKHRl bXBidWYsICJjZmxvYXQiKTsgcmV0dXJuIDE7Ci0gICAgICBjYXNlICdyJzog b2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImNkb3VibGUiKTsgcmV0dXJu IDE7Ci0gICAgICBjYXNlICdjJzogb2JzdGFja19ncm93X3N0ciAodGVtcGJ1 ZiwgImNyZWFsIik7IHJldHVybiAxOwotCi0gICAgICAvKiBvdGhlciB0eXBl czogKi8KLSAgICAgIGNhc2UgJ2InOiBvYnN0YWNrX2dyb3dfc3RyICh0ZW1w YnVmLCAiYml0Iik7IHJldHVybiAxOwotICAgICAgY2FzZSAnYSc6IG9ic3Rh Y2tfZ3Jvd19zdHIgKHRlbXBidWYsICJjaGFyIik7IHJldHVybiAxOwotICAg ICAgY2FzZSAndSc6IG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJ3Y2hh ciIpOyByZXR1cm4gMTsKLSAgICAgIGNhc2UgJ3cnOiBvYnN0YWNrX2dyb3df c3RyICh0ZW1wYnVmLCAiZGNoYXIiKTsgcmV0dXJuIDE7Ci0KLSAgICAgIGRl ZmF1bHQ6Ci0Jb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgInVua25vd24i KTsKLQlyZXR1cm4gMTsKKyAgICBjYXNlICdGJzogY2FzZSAnVSc6IGNhc2Ug J1YnOgorICAgIGNhc2UgJ1cnOiBjYXNlICdSJzoKKyAgICAgIHJldHVybiAx OworCisgICAgY2FzZSAnTSc6IC8qIFByZWZpeCBmb3IgZnVuY3Rpb25zIG5l ZWRpbmcgJ3RoaXMnLiAgKi8KKyAgICAgIGkgPSAxOworICAgICAgaWYgKG1h bmdsZVtpXSA9PSAneCcpCisJaSsrOworCisgICAgICBzd2l0Y2ggKG1hbmds ZVtpXSkKKwl7CisJY2FzZSAnRic6IGNhc2UgJ1UnOiBjYXNlICdWJzoKKwlj YXNlICdXJzogY2FzZSAnUic6CisJICByZXR1cm4gMTsKKwl9CisKKyAgICBk ZWZhdWx0OgorICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCisvKiBFeHRy YWN0IGFuZCBkZW1hbmdsZSB0aGUgc3ltYm9sIGluIE1BTkdMRSBhbmQgYXBw ZW5kIGl0IHRvIFRFTVBCVUYuCisgICBSZXR1cm4gdGhlIHJlbWFpbmluZyBz aWduYXR1cmUgb24gc3VjY2VzcyBvciBOVUxMIG9uIGZhaWx1cmUuICAqLwor Citjb25zdCBjaGFyICoKK2RfcGFyc2Vfc3ltYm9sIChzdHJ1Y3Qgb2JzdGFj ayAqdGVtcGJ1ZiwgY29uc3QgY2hhciAqbWFuZ2xlKQoreworICBzaXplX3Qg biA9IDA7CisgIGRvCisgICAgeworICAgICAgaWYgKG4rKykKKwlvYnN0YWNr X2dyb3dfc3RyICh0ZW1wYnVmLCAiLiIpOworCisgICAgICBtYW5nbGUgPSBw YXJzZV9pZGVudGlmaWVyICh0ZW1wYnVmLCBtYW5nbGUpOworCisgICAgICBp ZiAoY2FsbF9jb252ZW50aW9uX3AgKG1hbmdsZSkpCisJeworCSAgY2hhciAq c2F2ZWQ7CisKKwkgIC8qIFNraXAgb3ZlciAndGhpcycgcGFyYW1ldGVyLiAg Ki8KKwkgIGlmICgqbWFuZ2xlID09ICdNJykKKwkgICAgbWFuZ2xlICs9ICht YW5nbGVbMV0gPT0gJ3gnKSA/IDIgOiAxOworCisJICAvKiBTa2lwIG92ZXIg Y2FsbGluZyBjb252ZW50aW9uIGFuZCBhdHRyaWJ1dGVzIGluIHF1YWxpZmll ZCBuYW1lLiAgKi8KKwkgIHNhdmVkID0gb2JzdGFja19uZXh0X2ZyZWUgKHRl bXBidWYpOworCSAgbWFuZ2xlID0gcGFyc2VfY2FsbF9jb252ZW50aW9uICh0 ZW1wYnVmLCBtYW5nbGUpOworCSAgbWFuZ2xlID0gcGFyc2VfYXR0cmlidXRl cyAodGVtcGJ1ZiwgbWFuZ2xlKTsKKwkgIG9ic3RhY2tfbmV4dF9mcmVlICh0 ZW1wYnVmKSA9IHNhdmVkOworCisJICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1w YnVmLCAiKCIpOworCSAgbWFuZ2xlID0gcGFyc2VfZnVuY3Rpb25fYXJncyAo dGVtcGJ1ZiwgbWFuZ2xlKTsKKwkgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBi dWYsICIpIik7CisKKwkgIC8qIERlbWFuZ2xlIHRoZSBmdW5jdGlvbiByZXR1 cm4gdHlwZSBhcyBhIGtpbmQgb2Ygc2FuaXR5IHRlc3QuICAqLworCSAgaWYg KChtYW5nbGUgIT0gTlVMTCkgJiYgIUlTRElHSVQgKCptYW5nbGUpKQorCSAg ICB7CisJICAgICAgc2F2ZWQgPSBvYnN0YWNrX25leHRfZnJlZSAodGVtcGJ1 Zik7CisJICAgICAgbWFuZ2xlID0gcGFyc2VfdHlwZSAodGVtcGJ1ZiwgbWFu Z2xlKTsKKwkgICAgICBvYnN0YWNrX25leHRfZnJlZSAodGVtcGJ1ZikgPSBz YXZlZDsKKwkgICAgfQorCX0KKyAgICB9CisgIHdoaWxlICgobWFuZ2xlICE9 IE5VTEwpICYmIElTRElHSVQgKCptYW5nbGUpKTsKKworICByZXR1cm4gbWFu Z2xlOworfQorCiAvKiBJbXBsZW1lbnRzIHRoZSBsYV9kZW1hbmdsZSBsYW5n dWFnZV9kZWZuIHJvdXRpbmUgZm9yIGxhbmd1YWdlIEQuICAqLworCiBjaGFy ICoKIGRfZGVtYW5nbGUgKGNvbnN0IGNoYXIgKnN5bWJvbCwgaW50IG9wdGlv bnMpCiB7CiAgIHN0cnVjdCBvYnN0YWNrIHRlbXBidWY7Ci0gIGNoYXIgKm91 dF9zdHI7Ci0gIHVuc2lnbmVkIGNoYXIgaXNfZnVuYyA9IDA7CisgIGNoYXIg KnJlc3VsdDsKIAotICBpZiAoc3ltYm9sID09IE5VTEwpCisgIGlmICgoc3lt Ym9sID09IE5VTEwpIHx8ICgqc3ltYm9sID09ICdcMCcpKQogICAgIHJldHVy biBOVUxMOwogICBlbHNlIGlmIChzdHJjbXAgKHN5bWJvbCwgIl9EbWFpbiIp ID09IDApCiAgICAgcmV0dXJuIHhzdHJkdXAgKCJEIG1haW4iKTsKIAogICBv YnN0YWNrX2luaXQgKCZ0ZW1wYnVmKTsKLSAgCi0gIGlmIChzeW1ib2xbMF0g PT0gJ18nICYmIHN5bWJvbFsxXSA9PSAnRCcpCi0gICAgewotICAgICAgc3lt Ym9sICs9IDI7Ci0gICAgICBpc19mdW5jID0gMTsKLSAgICB9Ci0gIGVsc2Ug aWYgKHN0cm5jbXAgKHN5bWJvbCwgIl9fQ2xhc3NfIiwgOCkgPT0gMCkKLSAg ICBzeW1ib2wgKz0gODsKLSAgZWxzZSBpZiAoc3RybmNtcCAoc3ltYm9sLCAi X19pbml0XyIsIDcpID09IDApCi0gICAgc3ltYm9sICs9IDc7Ci0gIGVsc2Ug aWYgKHN0cm5jbXAgKHN5bWJvbCwgIl9fdnRibF8iLCA3KSA9PSAwKQotICAg IHN5bWJvbCArPSA3OwotICBlbHNlIGlmIChzdHJuY21wIChzeW1ib2wsICJf X21vZGN0b3JfIiwgMTApID09IDApCi0gICAgc3ltYm9sICs9IDEwOwotICBl bHNlIGlmIChzdHJuY21wIChzeW1ib2wsICJfX21vZGR0b3JfIiwgMTApID09 IDApCi0gICAgc3ltYm9sICs9IDEwOwotICBlbHNlIGlmIChzdHJuY21wIChz eW1ib2wsICJfX01vZHVsZUluZm9fIiwgMTMpID09IDApCi0gICAgc3ltYm9s ICs9IDEzOworCisgIGlmIChzdHJuY21wIChzeW1ib2wsICJfRCIsIDIpID09 IDApCisgICAgc3ltYm9sICs9IDI7CiAgIGVsc2UKICAgICB7CiAgICAgICBv YnN0YWNrX2ZyZWUgKCZ0ZW1wYnVmLCBOVUxMKTsKICAgICAgIHJldHVybiBO VUxMOwogICAgIH0KLSAgCi0gIGlmICghZXh0cmFjdF9pZGVudGlmaWVycyAo c3ltYm9sLCAmdGVtcGJ1ZikpCisKKyAgaWYgKGRfcGFyc2Vfc3ltYm9sICgm dGVtcGJ1Ziwgc3ltYm9sKSAhPSBOVUxMKQogICAgIHsKKyAgICAgIG9ic3Rh Y2tfZ3Jvd19zdHIwICgmdGVtcGJ1ZiwgIiIpOworICAgICAgcmVzdWx0ID0g eHN0cmR1cCAob2JzdGFja19maW5pc2ggKCZ0ZW1wYnVmKSk7CiAgICAgICBv YnN0YWNrX2ZyZWUgKCZ0ZW1wYnVmLCBOVUxMKTsKLSAgICAgIHJldHVybiBO VUxMOwogICAgIH0KLQotICBvYnN0YWNrX2dyb3dfc3RyICgmdGVtcGJ1Ziwg IigiKTsKLSAgaWYgKGlzX2Z1bmMgPT0gMSAmJiAqc3ltYm9sID09ICdGJykK KyAgZWxzZQogICAgIHsKLSAgICAgIHN5bWJvbCsrOwotICAgICAgd2hpbGUg KCpzeW1ib2wgIT0gJ1wwJyAmJiAqc3ltYm9sICE9ICdaJykKLQl7Ci0JICBp ZiAoaXNfZnVuYyA9PSAxKQotCSAgICBpc19mdW5jKys7Ci0JICBlbHNlCi0J ICAgIG9ic3RhY2tfZ3Jvd19zdHIgKCZ0ZW1wYnVmLCAiLCAiKTsKLQkgIGlm ICghZXh0cmFjdF90eXBlX2luZm8gKHN5bWJvbCwgJnRlbXBidWYpKQotCSAg ICB7Ci0JICAgICAgb2JzdGFja19mcmVlICgmdGVtcGJ1ZiwgTlVMTCk7Ci0J ICAgICAgcmV0dXJuIE5VTEw7Ci0JICAgfQotCX0KLSAgICAgfQotICBvYnN0 YWNrX2dyb3dfc3RyMCAoJnRlbXBidWYsICIpIik7Ci0KLSAgLyogRG9lc24n dCBkaXNwbGF5IHRoZSByZXR1cm4gdHlwZSwgYnV0IHdvdWxkbid0IGJlIHRv byBoYXJkIHRvIGRvLiAgKi8KKyAgICAgIG9ic3RhY2tfZnJlZSAoJnRlbXBi dWYsIE5VTEwpOworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gIG91 dF9zdHIgPSB4c3RyZHVwIChvYnN0YWNrX2ZpbmlzaCAoJnRlbXBidWYpKTsK LSAgb2JzdGFja19mcmVlICgmdGVtcGJ1ZiwgTlVMTCk7Ci0gIHJldHVybiBv dXRfc3RyOworICByZXR1cm4gcmVzdWx0OwogfQogCiAvKiBUYWJsZSBtYXBw aW5nIG9wY29kZXMgaW50byBzdHJpbmdzIGZvciBwcmludGluZyBvcGVyYXRv cnMKZGlmZiAtLWdpdCBhL2dkYi9kLWxhbmcuaCBiL2dkYi9kLWxhbmcuaApp bmRleCA0NTVjODA4Li5hMWI0NDU2IDEwMDY0NAotLS0gYS9nZGIvZC1sYW5n LmgKKysrIGIvZ2RiL2QtbGFuZy5oCkBAIC02Miw2ICs2Miw4IEBAIGV4dGVy biBjaGFyICpkX2RlbWFuZ2xlIChjb25zdCBjaGFyICptYW5nbGVkLCBpbnQg b3B0aW9ucyk7CiAKIGV4dGVybiBjb25zdCBzdHJ1Y3QgYnVpbHRpbl9kX3R5 cGUgKmJ1aWx0aW5fZF90eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqKTsKIAorZXh0 ZXJuIGNvbnN0IGNoYXIgKmRfcGFyc2Vfc3ltYm9sIChzdHJ1Y3Qgb2JzdGFj ayAqLCBjb25zdCBjaGFyICopOworCiAvKiBEZWZpbmVkIGluIGQtdmFscHJp bnQuYyAgKi8KIAogZXh0ZXJuIHZvaWQgZF92YWxfcHJpbnQgKHN0cnVjdCB0 eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmRsYW5nL2RlbWFuZ2xlLmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmRsYW5nL2RlbWFuZ2xlLmV4cApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTJjYTM1Ci0tLSAvZGV2L251 bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZGxhbmcvZGVtYW5nbGUuZXhw CkBAIC0wLDAgKzEsMjA2IEBACisjIENvcHlyaWdodCAoQykgMjAxNCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K KworIyBUZXN0IHN1cHBvcnQgZm9yIEQgZGVtYW5nbGluZy4gIFRoZSB0ZXN0 cyBoZXJlIGludGVudGlvbmFsbHkgZG8gbm90CisjIHJlcXVpcmUgYSBEIGNv bXBpbGVyLCBpdCBzaW1wbHkgY2FsbHMgdGhlIGludGVybmFsIGRlbWFuZ2xl ciB3aXRoCisjIHN5bnRoZXNpemVkIHN0cmluZ3MgYW5kIHRlc3RzIHRoZSBy ZXN1bHRzLgorCitsb2FkX2xpYiAiZC1zdXBwb3J0LmV4cCIKKworaWYgeyBb c2tpcF9kX3Rlc3RzXSB9IHsgY29udGludWUgfQorCisjIyMgVXRpbGl0eSBm dW5jdGlvbiBmb3IgdGVzdF9kZW1hbmdsaW5nIGFuZCB0ZXN0X2RlbWFuZ2xp bmdfZXhhY3QuCitwcm9jIHRlc3RfZGVtYW5nbGluZyB7dGVzdCByZXN1bHR9 IHsKKyAgICBnZGJfdGVzdF9leGFjdCAibWFpbnRlbmFuY2UgZGVtYW5nbGUg JHRlc3QiICRyZXN1bHQgJHRlc3QKK30KKworcHJvYyB0ZXN0X2RfZGVtYW5n bGluZyB7fSB7CisKKyAgICAjICBUZXN0IEQgZGVtYW5nbGVyCisgICAgdGVz dF9kZW1hbmdsaW5nICJfRG1haW4iICJEIG1haW4iCisKKyAgICB0ZXN0X2Rl bWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGYVp2IiAiZGVtYW5nbGUudGVz dChjaGFyKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRl c3RGYlp2IiAiZGVtYW5nbGUudGVzdChib29sKSIKKyAgICB0ZXN0X2RlbWFu Z2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGY1p2IiAiZGVtYW5nbGUudGVzdChj cmVhbCkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0 RmRadiIgImRlbWFuZ2xlLnRlc3QoZG91YmxlKSIKKyAgICB0ZXN0X2RlbWFu Z2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGZVp2IiAiZGVtYW5nbGUudGVzdChy ZWFsKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RG Zlp2IiAiZGVtYW5nbGUudGVzdChmbG9hdCkiCisgICAgdGVzdF9kZW1hbmds aW5nICJfRDhkZW1hbmdsZTR0ZXN0RmdadiIgImRlbWFuZ2xlLnRlc3QoYnl0 ZSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0Rmha diIgImRlbWFuZ2xlLnRlc3QodWJ5dGUpIgorICAgIHRlc3RfZGVtYW5nbGlu ZyAiX0Q4ZGVtYW5nbGU0dGVzdEZpWnYiICJkZW1hbmdsZS50ZXN0KGludCki CisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RmpadiIg ImRlbWFuZ2xlLnRlc3QoaXJlYWwpIgorICAgIHRlc3RfZGVtYW5nbGluZyAi X0Q4ZGVtYW5nbGU0dGVzdEZrWnYiICJkZW1hbmdsZS50ZXN0KHVpbnQpIgor ICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZsWnYiICJk ZW1hbmdsZS50ZXN0KGxvbmcpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4 ZGVtYW5nbGU0dGVzdEZtWnYiICJkZW1hbmdsZS50ZXN0KHVsb25nKSIKKyAg ICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGblp2IiAiZGVt YW5nbGUudGVzdChub25lKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRl bWFuZ2xlNHRlc3RGb1p2IiAiZGVtYW5nbGUudGVzdChpZmxvYXQpIgorICAg IHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZwWnYiICJkZW1h bmdsZS50ZXN0KGlkb3VibGUpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4 ZGVtYW5nbGU0dGVzdEZxWnYiICJkZW1hbmdsZS50ZXN0KGNmbG9hdCkiCisg ICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RnJadiIgImRl bWFuZ2xlLnRlc3QoY2RvdWJsZSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJf RDhkZW1hbmdsZTR0ZXN0RnNadiIgImRlbWFuZ2xlLnRlc3Qoc2hvcnQpIgor ICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZ0WnYiICJk ZW1hbmdsZS50ZXN0KHVzaG9ydCkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJf RDhkZW1hbmdsZTR0ZXN0RnVadiIgImRlbWFuZ2xlLnRlc3Qod2NoYXIpIgor ICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZ2WnYiICJk ZW1hbmdsZS50ZXN0KHZvaWQpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4 ZGVtYW5nbGU0dGVzdEZ3WnYiICJkZW1hbmdsZS50ZXN0KGRjaGFyKSIKKwor ICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZPYVp2IiAi ZGVtYW5nbGUudGVzdChzaGFyZWQoY2hhcikpIgorICAgIHRlc3RfZGVtYW5n bGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZ4YVp2IiAiZGVtYW5nbGUudGVzdChj b25zdChjaGFyKSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmds ZTR0ZXN0RnlhWnYiICJkZW1hbmdsZS50ZXN0KGltbXV0YWJsZShjaGFyKSki CisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0Rk5nYVp2 IiAiZGVtYW5nbGUudGVzdChpbm91dChjaGFyKSkiCisgICAgdGVzdF9kZW1h bmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0Rk94YVp2IiAiZGVtYW5nbGUudGVz dChzaGFyZWQoY29uc3QoY2hhcikpKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcg Il9EOGRlbWFuZ2xlNHRlc3RGT05nYVp2IiAiZGVtYW5nbGUudGVzdChzaGFy ZWQoaW5vdXQoY2hhcikpKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRl bWFuZ2xlNHRlc3RGQWFadiIgImRlbWFuZ2xlLnRlc3QoY2hhclxbXF0pIgor ICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZBQWFadiIg ImRlbWFuZ2xlLnRlc3QoY2hhclxbXF1cW1xdKSIKKyAgICB0ZXN0X2RlbWFu Z2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGQUFBYVp2IiAiZGVtYW5nbGUudGVz dChjaGFyXFtcXVxbXF1cW1xdKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9E OGRlbWFuZ2xlNHRlc3RGRzQyYVp2IiAiZGVtYW5nbGUudGVzdChjaGFyXFs0 MlxdKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RG RzQyRzQyYVp2IiAiZGVtYW5nbGUudGVzdChjaGFyXFs0MlxdXFs0MlxdKSIK KyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGRzQyRzQy RzQyYVp2IiAiZGVtYW5nbGUudGVzdChjaGFyXFs0MlxdXFs0MlxdXFs0Mlxd KSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGRzEy MzQ1Njc4OTBhWnYiICJkZW1hbmdsZS50ZXN0KGNoYXJcWzEyMzQ1Njc4OTBc XSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0Rkhh YVp2IiAiZGVtYW5nbGUudGVzdChjaGFyXFtjaGFyXF0pIgorICAgIHRlc3Rf ZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZISGFhYVp2IiAiZGVtYW5n bGUudGVzdChjaGFyXFtjaGFyXFtjaGFyXF1cXSkiCisgICAgdGVzdF9kZW1h bmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RlBhWnYiICJkZW1hbmdsZS50ZXN0 KGNoYXIqKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRl c3RGUFBhWnYiICJkZW1hbmdsZS50ZXN0KGNoYXIqKikiCisgICAgdGVzdF9k ZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RlBQUGFadiIgImRlbWFuZ2xl LnRlc3QoY2hhcioqKikiCisKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRl bWFuZ2xlNHRlc3RGTmhHOGdadiIgImRlbWFuZ2xlLnRlc3QoX192ZWN0b3Io Ynl0ZVxbOFxdKSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmds ZTR0ZXN0Rk5oRzE2Z1p2IiAiZGVtYW5nbGUudGVzdChfX3ZlY3RvcihieXRl XFsxNlxdKSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0 ZXN0Rk5oRzMyZ1p2IiAiZGVtYW5nbGUudGVzdChfX3ZlY3RvcihieXRlXFsz MlxdKSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0 Rk5oRzRzWnYiICJkZW1hbmdsZS50ZXN0KF9fdmVjdG9yKHNob3J0XFs0XF0p KSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGTmhH OHNadiIgImRlbWFuZ2xlLnRlc3QoX192ZWN0b3Ioc2hvcnRcWzhcXSkpIgor ICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZOaEcxNnNa diIgImRlbWFuZ2xlLnRlc3QoX192ZWN0b3Ioc2hvcnRcWzE2XF0pKSIKKyAg ICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGTmhHMmladiIg ImRlbWFuZ2xlLnRlc3QoX192ZWN0b3IoaW50XFsyXF0pKSIKKyAgICB0ZXN0 X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGTmhHNGladiIgImRlbWFu Z2xlLnRlc3QoX192ZWN0b3IoaW50XFs0XF0pKSIKKyAgICB0ZXN0X2RlbWFu Z2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGTmhHOGladiIgImRlbWFuZ2xlLnRl c3QoX192ZWN0b3IoaW50XFs4XF0pKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcg Il9EOGRlbWFuZ2xlNHRlc3RGTmhHMWxadiIgImRlbWFuZ2xlLnRlc3QoX192 ZWN0b3IobG9uZ1xbMVxdKSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhk ZW1hbmdsZTR0ZXN0Rk5oRzJsWnYiICJkZW1hbmdsZS50ZXN0KF9fdmVjdG9y KGxvbmdcWzJcXSkpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5n bGU0dGVzdEZOaEc0bFp2IiAiZGVtYW5nbGUudGVzdChfX3ZlY3Rvcihsb25n XFs0XF0pKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRl c3RGTmhHMmZadiIgImRlbWFuZ2xlLnRlc3QoX192ZWN0b3IoZmxvYXRcWzJc XSkpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZO aEc0Zlp2IiAiZGVtYW5nbGUudGVzdChfX3ZlY3RvcihmbG9hdFxbNFxdKSki CisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0Rk5oRzhm WnYiICJkZW1hbmdsZS50ZXN0KF9fdmVjdG9yKGZsb2F0XFs4XF0pKSIKKyAg ICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGTmhHMWRadiIg ImRlbWFuZ2xlLnRlc3QoX192ZWN0b3IoZG91YmxlXFsxXF0pKSIKKyAgICB0 ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGTmhHMmRadiIgImRl bWFuZ2xlLnRlc3QoX192ZWN0b3IoZG91YmxlXFsyXF0pKSIKKyAgICB0ZXN0 X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGTmhHNGRadiIgImRlbWFu Z2xlLnRlc3QoX192ZWN0b3IoZG91YmxlXFs0XF0pKSIKKworICAgIHRlc3Rf ZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZJNWlkZW50WnYiICJkZW1h bmdsZS50ZXN0KGlkZW50KSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRl bWFuZ2xlNHRlc3RGSTVpZGVudDR0ZXN0WnYiICJkZW1hbmdsZS50ZXN0KGlk ZW50LnRlc3QpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0 dGVzdEZDNWNsYXNzWnYiICJkZW1hbmdsZS50ZXN0KGNsYXNzKSIKKyAgICB0 ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGQzVjbGFzczR0ZXN0 WnYiICJkZW1hbmdsZS50ZXN0KGNsYXNzLnRlc3QpIgorICAgIHRlc3RfZGVt YW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZTNnN0cnVjdFp2IiAiZGVtYW5n bGUudGVzdChzdHJ1Y3QpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVt YW5nbGU0dGVzdEZTNnN0cnVjdDR0ZXN0WnYiICJkZW1hbmdsZS50ZXN0KHN0 cnVjdC50ZXN0KSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xl NHRlc3RGRTRlbnVtWnYiICJkZW1hbmdsZS50ZXN0KGVudW0pIgorICAgIHRl c3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZFNGVudW00dGVzdFp2 IiAiZGVtYW5nbGUudGVzdChlbnVtLnRlc3QpIgorICAgIHRlc3RfZGVtYW5n bGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZUN3R5cGVkZWZadiIgImRlbWFuZ2xl LnRlc3QodHlwZWRlZikiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1h bmdsZTR0ZXN0RlQ3dHlwZWRlZjR0ZXN0WnYiICJkZW1hbmdsZS50ZXN0KHR5 cGVkZWYudGVzdCkiCisKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFu Z2xlNHRlc3RGSmFadiIgImRlbWFuZ2xlLnRlc3Qob3V0IGNoYXIpIgorICAg IHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZLYVp2IiAiZGVt YW5nbGUudGVzdChyZWYgY2hhcikiCisgICAgdGVzdF9kZW1hbmdsaW5nICJf RDhkZW1hbmdsZTR0ZXN0RkxhWnYiICJkZW1hbmdsZS50ZXN0KGxhenkgY2hh cikiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0Rk1h WnYiICJkZW1hbmdsZS50ZXN0KHNjb3BlIGNoYXIpIgorICAgIHRlc3RfZGVt YW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZhWHYiICJkZW1hbmdsZS50ZXN0 KGNoYXIuLi4pIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0 dGVzdEZhWXYiICJkZW1hbmdsZS50ZXN0KGNoYXIsIC4uLikiCisgICAgdGVz dF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RmFhWXYiICJkZW1hbmds ZS50ZXN0KGNoYXIsIGNoYXIsIC4uLikiCisgICAgdGVzdF9kZW1hbmdsaW5n ICJfRDhkZW1hbmdsZTR0ZXN0RmFhWnYiICJkZW1hbmdsZS50ZXN0KGNoYXIs IGNoYXIpIgorCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0 ZXN0RkRGWmFadiIgImRlbWFuZ2xlLnRlc3QoY2hhcigpIGRlbGVnYXRlKSIK KyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGRFVaYVp2 IiAiZGVtYW5nbGUudGVzdChleHRlcm4oQykgY2hhcigpIGRlbGVnYXRlKSIK KyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGRFdaYVp2 IiAiZGVtYW5nbGUudGVzdChleHRlcm4oV2luZG93cykgY2hhcigpIGRlbGVn YXRlKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RG RFZaYVp2IiAiZGVtYW5nbGUudGVzdChleHRlcm4oUGFzY2FsKSBjaGFyKCkg ZGVsZWdhdGUpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0 dGVzdEZEUlphWnYiICJkZW1hbmdsZS50ZXN0KGV4dGVybihDKyspIGNoYXIo KSBkZWxlZ2F0ZSkiCisKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFu Z2xlNHRlc3RGRlphWnYiICJkZW1hbmdsZS50ZXN0KGNoYXIoKSBmdW5jdGlv bikiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RlVa YVp2IiAiZGVtYW5nbGUudGVzdChleHRlcm4oQykgY2hhcigpIGZ1bmN0aW9u KSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGV1ph WnYiICJkZW1hbmdsZS50ZXN0KGV4dGVybihXaW5kb3dzKSBjaGFyKCkgZnVu Y3Rpb24pIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVz dEZWWmFadiIgImRlbWFuZ2xlLnRlc3QoZXh0ZXJuKFBhc2NhbCkgY2hhcigp IGZ1bmN0aW9uKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xl NHRlc3RGUlphWnYiICJkZW1hbmdsZS50ZXN0KGV4dGVybihDKyspIGNoYXIo KSBmdW5jdGlvbikiCisKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFu Z2xlNHRlc3RGREZOYVphWnYiICJkZW1hbmdsZS50ZXN0KGNoYXIoKSBwdXJl IGRlbGVnYXRlKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xl NHRlc3RGREZOYlphWnYiICJkZW1hbmdsZS50ZXN0KGNoYXIoKSBub3Rocm93 IGRlbGVnYXRlKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xl NHRlc3RGREZOY1phWnYiICJkZW1hbmdsZS50ZXN0KGNoYXIoKSByZWYgZGVs ZWdhdGUpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVz dEZERk5kWmFadiIgImRlbWFuZ2xlLnRlc3QoY2hhcigpIEBwcm9wZXJ0eSBk ZWxlZ2F0ZSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0 ZXN0RkRGTmVaYVp2IiAiZGVtYW5nbGUudGVzdChjaGFyKCkgQHRydXN0ZWQg ZGVsZWdhdGUpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0 dGVzdEZERk5mWmFadiIgImRlbWFuZ2xlLnRlc3QoY2hhcigpIEBzYWZlIGRl bGVnYXRlKSIKKworICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0 dGVzdEZGTmFaYVp2IiAiZGVtYW5nbGUudGVzdChjaGFyKCkgcHVyZSBmdW5j dGlvbikiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0 RkZOYlphWnYiICJkZW1hbmdsZS50ZXN0KGNoYXIoKSBub3Rocm93IGZ1bmN0 aW9uKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RG Rk5jWmFadiIgImRlbWFuZ2xlLnRlc3QoY2hhcigpIHJlZiBmdW5jdGlvbiki CisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RkZOZFph WnYiICJkZW1hbmdsZS50ZXN0KGNoYXIoKSBAcHJvcGVydHkgZnVuY3Rpb24p IgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZGTmVa YVp2IiAiZGVtYW5nbGUudGVzdChjaGFyKCkgQHRydXN0ZWQgZnVuY3Rpb24p IgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZGTmZa YVp2IiAiZGVtYW5nbGUudGVzdChjaGFyKCkgQHNhZmUgZnVuY3Rpb24pIgor ICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZGTmFOYlph WnYiICJkZW1hbmdsZS50ZXN0KGNoYXIoKSBwdXJlIG5vdGhyb3cgZnVuY3Rp b24pIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZG TmJOYVphWnYiICJkZW1hbmdsZS50ZXN0KGNoYXIoKSBub3Rocm93IHB1cmUg ZnVuY3Rpb24pIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0 dGVzdEZGTmROZk5hWmFadiIgImRlbWFuZ2xlLnRlc3QoY2hhcigpIEBwcm9w ZXJ0eSBAc2FmZSBwdXJlIGZ1bmN0aW9uKSIKKworICAgIHRlc3RfZGVtYW5n bGluZyAiX0Q4ZGVtYW5nbGU0dGVzdDZfX3Z0YmxaIiAiZGVtYW5nbGUudGVz dC52dGJsJCIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRl c3Q2X19pbml0WiIgImRlbWFuZ2xlLnRlc3QuaW5pdCQiCisgICAgdGVzdF9k ZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0MTJfX01vZHVsZUluZm9aIiAi ZGVtYW5nbGUudGVzdC5tb2R1bGVpbmZvJCIKKyAgICB0ZXN0X2RlbWFuZ2xp bmcgIl9EOGRlbWFuZ2xlNHRlc3Q3X19DbGFzc1oiICJkZW1hbmdsZS50ZXN0 LmNsYXNzaW5mbyQiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmds ZTR0ZXN0MTFfX0ludGVyZmFjZVoiICJkZW1hbmdsZS50ZXN0LmludGVyZmFj ZSQiCisKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3Q2 X19jdG9yTUZadiIgImRlbWFuZ2xlLnRlc3QudGhpcygpIgorICAgIHRlc3Rf ZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdDZfX2R0b3JNRlp2IiAiZGVt YW5nbGUudGVzdC5+dGhpcygpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4 ZGVtYW5nbGU0dGVzdDZfX3Bvc3RibGl0TUZadiIgImRlbWFuZ2xlLnRlc3Qu dGhpcyh0aGlzKSIKKworICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5n bGU0dGVzdEZIQWJhWnYiICJkZW1hbmdsZS50ZXN0KGNoYXJcW2Jvb2xcW1xd XF0pIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZI RzQyY2FadiIgImRlbWFuZ2xlLnRlc3QoY2hhclxbY3JlYWxcWzQyXF1cXSki CisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RkFpWHYi ICJkZW1hbmdsZS50ZXN0KGludFxbXF0uLi4pIgorICAgIHRlc3RfZGVtYW5n bGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZMQWlYdiIgImRlbWFuZ2xlLnRlc3Qo bGF6eSBpbnRcW1xdLi4uKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRl bWFuZ2xlNHRlc3RGQWlZdiIgImRlbWFuZ2xlLnRlc3QoaW50XFtcXSwgLi4u KSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGTEFp WXYiICJkZW1hbmdsZS50ZXN0KGxhenkgaW50XFtcXSwgLi4uKSIKKyAgICB0 ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGTGlsWnYiICJkZW1h bmdsZS50ZXN0KGxhenkgaW50LCBsb25nKSIKKyAgICB0ZXN0X2RlbWFuZ2xp bmcgIl9EOGRlbWFuZ2xlNHRlc3RGTGxpWnYiICJkZW1hbmdsZS50ZXN0KGxh enkgbG9uZywgaW50KSIKKworICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVt YW5nbGU0dGVzdFBGTEFpWWkiICJkZW1hbmdsZS50ZXN0IgorICAgIHRlc3Rf ZGVtYW5nbGluZyAiX0QxYTFiaSIgImEuYiIKKyAgICB0ZXN0X2RlbWFuZ2xp bmcgIl9EMWExYlBGaVppIiAiYS5iIgorICAgIHRlc3RfZGVtYW5nbGluZyAi X0Q0dGVzdDNmb29BYSIgInRlc3QuZm9vIgorICAgIHRlc3RfZGVtYW5nbGlu ZyAiX0Q0dGVzdDJkZ0RGaVlkIiAidGVzdC5kZyIKKyAgICB0ZXN0X2RlbWFu Z2xpbmcgIl9EOGRlbWFuZ2xlOGRlbWFuZ2xlRkFhWkFhIiAiZGVtYW5nbGUu ZGVtYW5nbGUoY2hhclxbXF0pIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q2 b2JqZWN0Nk9iamVjdDhvcEFzc2lnbkZDNk9iamVjdFppIiAib2JqZWN0Lk9i amVjdC5vcEFzc2lnbihPYmplY3QpIgorICAgIHRlc3RfZGVtYW5nbGluZyAi X0Q2b2JqZWN0Nk9iamVjdDhvcEVxdWFsc0ZDNk9iamVjdFppIiAib2JqZWN0 Lk9iamVjdC5vcEVxdWFscyhPYmplY3QpIgorICAgIHRlc3RfZGVtYW5nbGlu ZyAiX0Q4ZGVtYW5nbGU0dGVzdEZMQzZPYmplY3RMREZMaVppWmkiICJkZW1h bmdsZS50ZXN0KGxhenkgT2JqZWN0LCBsYXp5IGludChsYXp5IGludCkgZGVs ZWdhdGUpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q2cGx1Z2luOGdlbmVy YXRlRmlpWkF5YSIgInBsdWdpbi5nZW5lcmF0ZShpbnQsIGludCkiCisgICAg dGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTNmbkFGWnYzZm5CTUZadiIg ImRlbWFuZ2xlLmZuQSgpLmZuQigpIgorICAgIHRlc3RfZGVtYW5nbGluZyAi X0Q4ZGVtYW5nbGU0bWFpbkZadjFTM2ZuQ0ZadiIgImRlbWFuZ2xlLm1haW4o KS5TLmZuQygpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0 bWFpbkZadjFTM2ZuRE1GWnYiICJkZW1hbmdsZS5tYWluKCkuUy5mbkQoKSIK KyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlMmZuRk5naVpOZ2ki ICJkZW1hbmdsZS5mbihpbm91dChpbnQpKSIKKyAgICB0ZXN0X2RlbWFuZ2xp bmcgIl9EOGRlbWFuZ2xlNG1haW5GWnY1bG9jYWxNRlppIiAiZGVtYW5nbGUu bWFpbigpLmxvY2FsKCkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDNzdGQ1 YXNjaWk5dXBwZXJjYXNleUFhIiAic3RkLmFzY2lpLnVwcGVyY2FzZSIKKyAg ICB0ZXN0X2RlbWFuZ2xpbmcgIl9EM3N0ZDZzdHJlYW05Qk9NRW5kaWFueUc1 RTNzdGQ2c3lzdGVtNkVuZGlhbiIgInN0ZC5zdHJlYW0uQk9NRW5kaWFuIgor ICAgIHRlc3RfZGVtYW5nbGluZyAiX0Qzc3RkOGludGVybmFsN3VuaV90YWIx MHVuaWNvZGVOa295UzNzdGQ4aW50ZXJuYWwzdW5pMTJDb2RlcG9pbnRTZXQi ICJzdGQuaW50ZXJuYWwudW5pX3RhYi51bmljb2RlTmtvIgorICAgIHRlc3Rf ZGVtYW5nbGluZyAiX0QyZ2MyZ2MyR0M2YWRkck9mTUZQdlpQdiIgImdjLmdj LkdDLmFkZHJPZih2b2lkKikiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDNz dGQ3cHJvY2VzczEwc2V0Q0xPRVhFQ0ZpYlp2IiAic3RkLnByb2Nlc3Muc2V0 Q0xPRVhFQyhpbnQsIGJvb2wpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Qz c3RkNmRpZ2VzdDJtZDNNRDUzcHV0TUZOYU5iTmVNQXhoWHYiICJzdGQuZGln ZXN0Lm1kLk1ENS5wdXQoc2NvcGUgY29uc3QodWJ5dGUpXFtcXS4uLikiCisg ICAgdGVzdF9kZW1hbmdsaW5nICJfRDNzdGQ2bW1maWxlNk1tRmlsZTEzb3BJ bmRleEFzc2lnbk1GaG1aaCIgInN0ZC5tbWZpbGUuTW1GaWxlLm9wSW5kZXhB c3NpZ24odWJ5dGUsIHVsb25nKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9E M3N0ZDdwcm9jZXNzMThlc2NhcGVTaGVsbENvbW1hbmRGeEFBYVhBeWEiICJz dGQucHJvY2Vzcy5lc2NhcGVTaGVsbENvbW1hbmQoY29uc3QoY2hhclxbXF1c W1xdKS4uLikiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDRjb3JlNHN5bmM1 bXV0ZXg1TXV0ZXg2X19jdG9yTUZDNk9iamVjdFpDNGNvcmU0c3luYzVtdXRl eDVNdXRleCIgImNvcmUuc3luYy5tdXRleC5NdXRleC50aGlzKE9iamVjdCki CisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDZvYmplY3QxNFR5cGVJbmZvX0Fy cmF5OGFyZ1R5cGVzTUZOYk5mSkM4VHlwZUluZm9KQzhUeXBlSW5mb1ppIiAi b2JqZWN0LlR5cGVJbmZvX0FycmF5LmFyZ1R5cGVzKG91dCBUeXBlSW5mbywg b3V0IFR5cGVJbmZvKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EMnJ0NmRt YWluMjExX2RfcnVuX21haW5VaVBQYVBVQUFhWmlaaTd0cnlFeGVjTUZNREZa dlp2IiAicnQuZG1haW4yLl9kX3J1bl9tYWluKGludCwgY2hhcioqLCBleHRl cm4oQykgaW50KGNoYXJcW1xdXFtcXSkgZnVuY3Rpb24qKS50cnlFeGVjKHNj b3BlIHZvaWQoKSBkZWxlZ2F0ZSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJf RDZvYmplY3Q5RXhjZXB0aW9uNl9fY3Rvck1GTmFOYk5mQXlhQXlhbUM2b2Jq ZWN0OVRocm93YWJsZVpDOUV4Y2VwdGlvbiIgIm9iamVjdC5FeGNlcHRpb24u dGhpcyhpbW11dGFibGUoY2hhcilcW1xdLCBpbW11dGFibGUoY2hhcilcW1xd LCB1bG9uZywgb2JqZWN0LlRocm93YWJsZSkiCisgICAgdGVzdF9kZW1hbmds aW5nICJfRDNnY2MzZGVoMTdwYXJzZV9sc2RhX2hlYWRlckZQUzNnY2M2dW53 aW5kN2dlbmVyaWMxNV9VbndpbmRfQ29udGV4dFBoUFMzZ2NjM2RlaDE2bHNk YV9oZWFkZXJfaW5mb1pQaCIgImdjYy5kZWgucGFyc2VfbHNkYV9oZWFkZXIo Z2NjLnVud2luZC5nZW5lcmljLl9VbndpbmRfQ29udGV4dCosIHVieXRlKiwg Z2NjLmRlaC5sc2RhX2hlYWRlcl9pbmZvKikiCisgICAgdGVzdF9kZW1hbmds aW5nICJfRDNzdGQ2c29ja2V0MjNVbmtub3duQWRkcmVzc1JlZmVyZW5jZTZf X2N0b3JNRlBTNGNvcmUzc3lzNXBvc2l4M3N5czZzb2NrZXQ4c29ja2FkZHJr WkMzc3RkNnNvY2tldDIzVW5rbm93bkFkZHJlc3NSZWZlcmVuY2UiICJzdGQu c29ja2V0LlVua25vd25BZGRyZXNzUmVmZXJlbmNlLnRoaXMoY29yZS5zeXMu cG9zaXguc3lzLnNvY2tldC5zb2NrYWRkciosIHVpbnQpIgorfQorCisjIFN0 YXJ0IHdpdGggYSBmcmVzaCBnZGIuCisKK2dkYl9leGl0CitnZGJfc3RhcnQK KworaWYgW3NldF9sYW5nX2RdIHsKKyAgICBnZGJfdGVzdF9ub19vdXRwdXQg InNldCB3aWR0aCAwIgorCisgICAgdGVzdF9kX2RlbWFuZ2xpbmcKK30gZWxz ZSB7CisgICAgd2FybmluZyAiRCBkZW1hbmdsaW5nIHRlc3RzIHN1cHByZXNz ZWQuIgorfQo= --001a11c2c59ea5f25404efb76680--