From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26652 invoked by alias); 3 Jan 2014 18:18:20 -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 26630 invoked by uid 89); 3 Jan 2014 18:18:18 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=3.1 required=5.0 tests=AWL,BAYES_40,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS,URIBL_BLACK autolearn=no 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; Fri, 03 Jan 2014 18:18:14 +0000 Received: by mail-qa0-f49.google.com with SMTP id ii20so741474qab.8 for ; Fri, 03 Jan 2014 10:18:11 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.49.101.105 with SMTP id ff9mr155788676qeb.34.1388773091735; Fri, 03 Jan 2014 10:18:11 -0800 (PST) Received: by 10.229.195.196 with HTTP; Fri, 3 Jan 2014 10:18:11 -0800 (PST) In-Reply-To: <87bo1gksu3.fsf@fleche.redhat.com> References: <87mwl0mlsa.fsf@fleche.redhat.com> <874n78mge2.fsf@fleche.redhat.com> <39451.43601527$1384894769@news.gmane.org> <87bo1gksu3.fsf@fleche.redhat.com> Date: Fri, 03 Jan 2014 18:18:00 -0000 Message-ID: Subject: Re: [PATCH] Add d_main_name to dlang.c From: Iain Buclaw To: Tom Tromey Cc: Pierre Muller , gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=001a11c2c59ece8fe004ef14ee00 X-IsSubscribed: yes X-SW-Source: 2014-01/txt/msg00009.txt.bz2 --001a11c2c59ece8fe004ef14ee00 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 953 On 19 November 2013 21:03, Tom Tromey wrote: > Pierre> I thought that in general, using the mangled name > Pierre> would allow to find main even if you do not generate > Pierre> any debug information, as long as you do not remove the > Pierre> assembler symbols from the executable. > Pierre> This seems like a valid reason to prefer mangled name > Pierre> over demangled, no? > > The demangled name ends up in the minimal symbol table as well. > It's convoluted but it ends up in symbol_find_demangled_name, which has > a case for language_d. > > Tom Hi Tom, (I've just realised that I my last reply was not cc'd into gdb-patches) The assignments should now be processed. Since November, I've made a few more changes that are reflected in this new patch. I would add some more tests for D, but I feel that should write a complete parser for D expressions first (d-exp.y) - this will be done at a later date. Regards Iain. --001a11c2c59ece8fe004ef14ee00 Content-Type: text/x-diff; charset=US-ASCII; name="dsupport.patch" Content-Disposition: attachment; filename="dsupport.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hpzrmha00 Content-length: 74913 ZGlmZiAtLWdpdCBhL2dkYi9DaGFuZ2VMb2cgYi9nZGIvQ2hhbmdlTG9nCmlu ZGV4IGRiMzI5OTUuLjVkZmM1NjEgMTAwNjQ0Ci0tLSBhL2dkYi9DaGFuZ2VM b2cKKysrIGIvZ2RiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE0 LTAxLTAzICBJYWluIEJ1Y2xhdyAgPGlidWNsYXdAZ2RjcHJvamVjdC5vcmc+ CisKKwkqIGQtbGFuZy5oIChkX21haW5fbmFtZSwgYnVpbHRpbl9kX3R5cGUp CisJKGRfcGFyc2Vfc3ltYm9sKTogQWRkIGRlY2xhcmF0aW9ucy4KKwkoc3Ry dWN0IGJ1aWx0aW5fZF90eXBlKTogTmV3IGRhdGEgdHlwZS4KKwkqIGQtbGFu Zy5jIChkX21haW5fbmFtZSwgZF9sYW5ndWFnZV9hcmNoX2luZm8pCisJKGJ1 aWxkX2RfdHlwZXMsIGJ1aWx0aW5fZF90eXBlKTogTmV3IGZ1bmN0aW9ucy4K KwkoZW51bSBkX3ByaW1pdGl2ZV90eXBlcyk6IE5ldyBkYXRhIHR5cGUuCisJ KGRfbGFuZ3VhZ2VfZGVmbik6IFVwZGF0ZSB0byB1c2UgZF9sYW5ndWFnZV9h cmNoX2luZm8gYW5kCisJbWFjcm9fZXhwYW5zaW9uX25vLgorCShkX3R5cGVf ZGF0YSk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCisJKF9pbml0aWFsaXplX2Rf bGFuZ3VhZ2UpOiBJbml0aWFsaXplIGRfdHlwZV9kYXRhLgorCShleHRyYWN0 X2lkZW50aWZpZXJzLCBleHRyYWN0X3R5cGVfaW5mbyk6IFJlbW92ZSBmdW5j dGlvbnMuCisJKGRfZGVtYW5nbGUpOiBVc2UgZF9wYXJzZV9zeW1ib2wgaW1w bGVtZW50ZWQgaW4gZC1zdXBwb3J0LmMgdG8KKwlkZW1hbmdsZSBEIHN5bWJv bHMuCisJKiBkLXN1cHBvcnQuYzogTmV3IGZpbGUuCisJKiBzeW10YWIuYyAo ZmluZF9tYWluX25hbWUpOiBBZGQgY2FsbCB0byBkX21haW5fbmFtZS4KKwog MjAxNC0wMS0wMSAgSm9lbCBCcm9iZWNrZXIgIDxicm9iZWNrZXJAYWRhY29y ZS5jb20+CiAKIAlVcGRhdGUgeWVhciByYW5nZSBpbiBjb3B5cmlnaHQgbm90 aWNlIG9mIGFsbCBmaWxlcy4KZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5p biBiL2dkYi9NYWtlZmlsZS5pbgppbmRleCA4MjRiMjZiLi5mNTU3YmZlIDEw MDY0NAotLS0gYS9nZGIvTWFrZWZpbGUuaW4KKysrIGIvZ2RiL01ha2VmaWxl LmluCkBAIC03MjcsNyArNzI3LDcgQEAgU0ZJTEVTID0gYWRhLWV4cC55IGFk YS1sYW5nLmMgYWRhLXR5cGVwcmludC5jIGFkYS12YWxwcmludC5jIGFkYS10 YXNrcy5jIFwKIAljaGFyc2V0LmMgY2xlYW51cHMuYyBjbGktb3V0LmMgY29m ZnJlYWQuYyBjb2ZmLXBlLXJlYWQuYyBcCiAJY29tcGxhaW50cy5jIGNvbXBs ZXRlci5jIGNvbnRpbnVhdGlvbnMuYyBjb3JlZmlsZS5jIGNvcmVsb3cuYyBc CiAJY3AtYWJpLmMgY3Atc3VwcG9ydC5jIGNwLW5hbWVzcGFjZS5jIGNwLXZh bHByaW50LmMgXAotCWQtbGFuZy5jIGQtdmFscHJpbnQuYyBcCisJZC1sYW5n LmMgZC1zdXBwb3J0LmMgZC12YWxwcmludC5jIFwKIAljcC1uYW1lLXBhcnNl ci55IFwKIAlkYnhyZWFkLmMgZGVtYW5nbGUuYyBkaWN0aW9uYXJ5LmMgZGlz YXNtLmMgZG91Ymxlc3QuYyBkdW1teS1mcmFtZS5jIFwKIAlkd2FyZjJleHBy LmMgZHdhcmYybG9jLmMgZHdhcmYycmVhZC5jIGR3YXJmMi1mcmFtZS5jIFwK QEAgLTk0Nyw2ICs5NDcsNyBAQCBDT01NT05fT0JTID0gJChERVBGSUxFUykg JChDT05GSUdfT0JTKSAkKFlZT0JKKSBcCiAJaW5saW5lLWZyYW1lLm8gXAog CWdudS12Mi1hYmkubyBnbnUtdjMtYWJpLm8gY3AtYWJpLm8gY3Atc3VwcG9y dC5vIFwKIAljcC1uYW1lc3BhY2UubyBcCisJZC1zdXBwb3J0Lm8gXAogCXJl Z2dyb3Vwcy5vIHJlZ3NldC5vIFwKIAl0cmFkLWZyYW1lLm8gXAogCXRyYW1w LWZyYW1lLm8gXApkaWZmIC0tZ2l0IGEvZ2RiL2QtbGFuZy5jIGIvZ2RiL2Qt bGFuZy5jCmluZGV4IDEzYjU0MzguLjVkNjFkMDIgMTAwNjQ0Ci0tLSBhL2dk Yi9kLWxhbmcuYworKysgYi9nZGIvZC1sYW5nLmMKQEAgLTIzLDExMSArMjMs MjggQEAKICNpbmNsdWRlICJ2YXJvYmouaCIKICNpbmNsdWRlICJkLWxhbmcu aCIKICNpbmNsdWRlICJjLWxhbmcuaCIKLSNpbmNsdWRlIDxzdHJpbmcuaD4K ICNpbmNsdWRlICJwYXJzZXItZGVmcy5oIgogI2luY2x1ZGUgImdkYl9vYnN0 YWNrLmgiCiAKLSNpbmNsdWRlIDxjdHlwZS5oPgorLyogVGhlIG5hbWUgb2Yg dGhlIHN5bWJvbCB0byB1c2UgdG8gZ2V0IHRoZSBuYW1lIG9mIHRoZSBtYWlu IHN1YnByb2dyYW0uICAqLworc3RhdGljIGNvbnN0IGNoYXIgRF9NQUlOW10g PSAiRCBtYWluIjsKIAotLyogRXh0cmFjdCBpZGVudGlmaWVycyBmcm9tIE1B TkdMRURfU1RSIGFuZCBhcHBlbmQgaXQgdG8gVEVNUEJVRi4KLSAgIFJldHVy biAxIG9uIHN1Y2Nlc3Mgb3IgMCBvbiBmYWlsdXJlLiAgKi8KLXN0YXRpYyBp bnQKLWV4dHJhY3RfaWRlbnRpZmllcnMgKGNvbnN0IGNoYXIgKm1hbmdsZWRf c3RyLCBzdHJ1Y3Qgb2JzdGFjayAqdGVtcGJ1ZikKKy8qIEZ1bmN0aW9uIHJl dHVybmluZyB0aGUgc3BlY2lhbCBzeW1ib2wgbmFtZSB1c2VkIGJ5IEQgZm9y IHRoZSBtYWluCisgICBwcm9jZWR1cmUgaW4gdGhlIG1haW4gcHJvZ3JhbSBp ZiBpdCBpcyBmb3VuZCBpbiBtaW5pbWFsIHN5bWJvbCBsaXN0LgorICAgVGhp cyBmdW5jdGlvbiB0cmllcyB0byBmaW5kIG1pbmltYWwgc3ltYm9scyBzbyB0 aGF0IGl0IGZpbmRzIHRoZW0gZXZlbgorICAgaWYgdGhlIHByb2dyYW0gd2Fz IGNvbXBpbGVkIHdpdGhvdXQgZGVidWdnaW5nIGluZm9ybWF0aW9uLiAgKi8K KworY29uc3QgY2hhciAqCitkX21haW5fbmFtZSAodm9pZCkKIHsKLSAgbG9u ZyBpID0gMDsKKyAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltOwogCi0g IHdoaWxlIChpc2RpZ2l0ICgqbWFuZ2xlZF9zdHIpKQotICAgIHsKLSAgICAg IGNoYXIgKmVuZF9wdHI7Ci0KLSAgICAgIGkgPSBzdHJ0b2wgKG1hbmdsZWRf c3RyLCAmZW5kX3B0ciwgMTApOwotICAgICAgbWFuZ2xlZF9zdHIgPSBlbmRf cHRyOwotICAgICAgaWYgKGkgPD0gMCB8fCBzdHJsZW4gKG1hbmdsZWRfc3Ry KSA8IGkpCi0gICAgICAgIHJldHVybiAwOwotICAgICAgb2JzdGFja19ncm93 ICh0ZW1wYnVmLCBtYW5nbGVkX3N0ciwgaSk7Ci0gICAgICBtYW5nbGVkX3N0 ciArPSBpOwotICAgICAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgIi4i KTsKLSAgICB9Ci0gIGlmICgqbWFuZ2xlZF9zdHIgPT0gJ1wwJyB8fCBpID09 IDApCi0gICAgcmV0dXJuIDA7Ci0gIG9ic3RhY2tfYmxhbmsgKHRlbXBidWYs IC0xKTsKLSAgcmV0dXJuIDE7Ci19CisgIG1zeW0gPSBsb29rdXBfbWluaW1h bF9zeW1ib2wgKERfTUFJTiwgTlVMTCwgTlVMTCk7CisgIGlmIChtc3ltICE9 IE5VTEwpCisgICAgcmV0dXJuIERfTUFJTjsKIAotLyogRXh0cmFjdCBhbmQg ZGVtYW5nbGUgdHlwZSBmcm9tIE1BTkdMRURfU1RSIGFuZCBhcHBlbmQgaXQg dG8gVEVNUEJVRi4KLSAgIFJldHVybiAxIG9uIHN1Y2Nlc3Mgb3IgMCBvbiBm YWlsdXJlLiAgKi8KLXN0YXRpYyBpbnQKLWV4dHJhY3RfdHlwZV9pbmZvIChj b25zdCBjaGFyICptYW5nbGVkX3N0ciwgc3RydWN0IG9ic3RhY2sgKnRlbXBi dWYpCi17Ci0gIGlmICgqbWFuZ2xlZF9zdHIgPT0gJ1wwJykKLSAgICByZXR1 cm4gMDsKLSAgc3dpdGNoICgqbWFuZ2xlZF9zdHIrKykKLSAgICB7Ci0gICAg ICBjYXNlICdBJzogLyogZHluYW1pYyBhcnJheSAqLwotICAgICAgY2FzZSAn Ryc6IC8qIHN0YXRpYyBhcnJheSAqLwotICAgICAgY2FzZSAnSCc6IC8qIGFz c29jaWF0aXZlIGFycmF5ICovCi0JaWYgKCFleHRyYWN0X3R5cGVfaW5mbyAo bWFuZ2xlZF9zdHIsIHRlbXBidWYpKQotCSAgcmV0dXJuIDA7Ci0Jb2JzdGFj a19ncm93X3N0ciAodGVtcGJ1ZiwgIltdIik7Ci0JcmV0dXJuIDE7Ci0gICAg ICBjYXNlICdQJzogLyogcG9pbnRlciAqLwotCWlmICghZXh0cmFjdF90eXBl X2luZm8gKG1hbmdsZWRfc3RyLCB0ZW1wYnVmKSkKLQkgIHJldHVybiAwOwot CW9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICIqIik7Ci0JcmV0dXJuIDE7 Ci0gICAgICBjYXNlICdSJzogLyogcmVmZXJlbmNlICovCi0JaWYgKCFleHRy YWN0X3R5cGVfaW5mbyAobWFuZ2xlZF9zdHIsIHRlbXBidWYpKQotCSAgcmV0 dXJuIDA7Ci0Jb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgIiYiKTsKLQly ZXR1cm4gMTsKLSAgICAgIGNhc2UgJ1onOiAvKiByZXR1cm4gdmFsdWUgKi8K LQlyZXR1cm4gZXh0cmFjdF90eXBlX2luZm8gKG1hbmdsZWRfc3RyLCB0ZW1w YnVmKTsKLSAgICAgIGNhc2UgJ0onOiAvKiBvdXQgKi8KLQlvYnN0YWNrX2dy b3dfc3RyICh0ZW1wYnVmLCAib3V0ICIpOwotCXJldHVybiBleHRyYWN0X3R5 cGVfaW5mbyAobWFuZ2xlZF9zdHIsIHRlbXBidWYpOwotICAgICAgY2FzZSAn Syc6IC8qIGlub3V0ICovCi0Jb2JzdGFja19ncm93X3N0ciAodGVtcGJ1Ziwg Imlub3V0ICIpOwotCXJldHVybiBleHRyYWN0X3R5cGVfaW5mbyAobWFuZ2xl ZF9zdHIsIHRlbXBidWYpOwotICAgICAgY2FzZSAnRSc6IC8qIGVudW0gKi8K LSAgICAgIGNhc2UgJ1QnOiAvKiB0eXBlZGVmICovCi0gICAgICBjYXNlICdE JzogLyogZGVsZWdhdGUgKi8KLSAgICAgIGNhc2UgJ0MnOiAvKiBjbGFzcyAq LwotICAgICAgY2FzZSAnUyc6IC8qIHN0cnVjdCAqLwotCXJldHVybiBleHRy YWN0X2lkZW50aWZpZXJzIChtYW5nbGVkX3N0ciwgdGVtcGJ1Zik7Ci0KLSAg ICAgIC8qIGJhc2ljIHR5cGVzOiAqLwotICAgICAgY2FzZSAnbic6IG9ic3Rh Y2tfZ3Jvd19zdHIgKHRlbXBidWYsICJub25lIik7IHJldHVybiAxOwotICAg ICAgY2FzZSAndic6IG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJ2b2lk Iik7IHJldHVybiAxOwotICAgICAgY2FzZSAnZyc6IG9ic3RhY2tfZ3Jvd19z dHIgKHRlbXBidWYsICJieXRlIik7IHJldHVybiAxOwotICAgICAgY2FzZSAn aCc6IG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJ1Ynl0ZSIpOyByZXR1 cm4gMTsKLSAgICAgIGNhc2UgJ3MnOiBvYnN0YWNrX2dyb3dfc3RyICh0ZW1w YnVmLCAic2hvcnQiKTsgcmV0dXJuIDE7Ci0gICAgICBjYXNlICd0Jzogb2Jz dGFja19ncm93X3N0ciAodGVtcGJ1ZiwgInVzaG9ydCIpOyByZXR1cm4gMTsK LSAgICAgIGNhc2UgJ2knOiBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAi aW50Iik7IHJldHVybiAxOwotICAgICAgY2FzZSAnayc6IG9ic3RhY2tfZ3Jv d19zdHIgKHRlbXBidWYsICJ1aW50Iik7IHJldHVybiAxOwotICAgICAgY2Fz ZSAnbCc6IG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJsb25nIik7IHJl dHVybiAxOwotICAgICAgY2FzZSAnbSc6IG9ic3RhY2tfZ3Jvd19zdHIgKHRl bXBidWYsICJ1bG9uZyIpOyByZXR1cm4gMTsKLSAgICAgIGNhc2UgJ2YnOiBv YnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiZmxvYXQiKTsgcmV0dXJuIDE7 Ci0gICAgICBjYXNlICdkJzogb2JzdGFja19ncm93X3N0ciAodGVtcGJ1Ziwg ImRvdWJsZSIpOyByZXR1cm4gMTsKLSAgICAgIGNhc2UgJ2UnOiBvYnN0YWNr X2dyb3dfc3RyICh0ZW1wYnVmLCAicmVhbCIpOyByZXR1cm4gMTsKLQotICAg ICAgLyogaW1hZ2luYXJ5IGFuZCBjb21wbGV4OiAqLwotICAgICAgY2FzZSAn byc6IG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJpZmxvYXQiKTsgcmV0 dXJuIDE7Ci0gICAgICBjYXNlICdwJzogb2JzdGFja19ncm93X3N0ciAodGVt cGJ1ZiwgImlkb3VibGUiKTsgcmV0dXJuIDE7Ci0gICAgICBjYXNlICdqJzog b2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImlyZWFsIik7IHJldHVybiAx OwotICAgICAgY2FzZSAncSc6IG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYs ICJjZmxvYXQiKTsgcmV0dXJuIDE7Ci0gICAgICBjYXNlICdyJzogb2JzdGFj a19ncm93X3N0ciAodGVtcGJ1ZiwgImNkb3VibGUiKTsgcmV0dXJuIDE7Ci0g ICAgICBjYXNlICdjJzogb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImNy ZWFsIik7IHJldHVybiAxOwotCi0gICAgICAvKiBvdGhlciB0eXBlczogKi8K LSAgICAgIGNhc2UgJ2InOiBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAi Yml0Iik7IHJldHVybiAxOwotICAgICAgY2FzZSAnYSc6IG9ic3RhY2tfZ3Jv d19zdHIgKHRlbXBidWYsICJjaGFyIik7IHJldHVybiAxOwotICAgICAgY2Fz ZSAndSc6IG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJ3Y2hhciIpOyBy ZXR1cm4gMTsKLSAgICAgIGNhc2UgJ3cnOiBvYnN0YWNrX2dyb3dfc3RyICh0 ZW1wYnVmLCAiZGNoYXIiKTsgcmV0dXJuIDE7Ci0KLSAgICAgIGRlZmF1bHQ6 Ci0Jb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgInVua25vd24iKTsKLQly ZXR1cm4gMTsKLSAgICB9CisgIC8qIE5vIGtub3duIGVudHJ5IHByb2NlZHVy ZSBmb3VuZCwgdGhlIG1haW4gcHJvZ3JhbSBpcyBwcm9iYWJseSBub3QgRC4g ICovCisgIHJldHVybiBOVUxMOwogfQogCiAvKiBJbXBsZW1lbnRzIHRoZSBs YV9kZW1hbmdsZSBsYW5ndWFnZV9kZWZuIHJvdXRpbmUgZm9yIGxhbmd1YWdl IEQuICAqLwpAQCAtMTM1LDY5ICs1MiwzNiBAQCBjaGFyICoKIGRfZGVtYW5n bGUgKGNvbnN0IGNoYXIgKnN5bWJvbCwgaW50IG9wdGlvbnMpCiB7CiAgIHN0 cnVjdCBvYnN0YWNrIHRlbXBidWY7Ci0gIGNoYXIgKm91dF9zdHI7Ci0gIHVu c2lnbmVkIGNoYXIgaXNfZnVuYyA9IDA7CisgIGNoYXIgKnJlc3VsdDsKIAot ICBpZiAoc3ltYm9sID09IE5VTEwpCisgIGlmIChzeW1ib2wgPT0gTlVMTCB8 fCAqc3ltYm9sID09ICdcMCcpCiAgICAgcmV0dXJuIE5VTEw7CiAgIGVsc2Ug aWYgKHN0cmNtcCAoc3ltYm9sLCAiX0RtYWluIikgPT0gMCkKICAgICByZXR1 cm4geHN0cmR1cCAoIkQgbWFpbiIpOwogCiAgIG9ic3RhY2tfaW5pdCAoJnRl bXBidWYpOwotICAKLSAgaWYgKHN5bWJvbFswXSA9PSAnXycgJiYgc3ltYm9s WzFdID09ICdEJykKLSAgICB7Ci0gICAgICBzeW1ib2wgKz0gMjsKLSAgICAg IGlzX2Z1bmMgPSAxOwotICAgIH0KLSAgZWxzZSBpZiAoc3RybmNtcCAoc3lt Ym9sLCAiX19DbGFzc18iLCA4KSA9PSAwKQotICAgIHN5bWJvbCArPSA4Owot ICBlbHNlIGlmIChzdHJuY21wIChzeW1ib2wsICJfX2luaXRfIiwgNykgPT0g MCkKLSAgICBzeW1ib2wgKz0gNzsKLSAgZWxzZSBpZiAoc3RybmNtcCAoc3lt Ym9sLCAiX192dGJsXyIsIDcpID09IDApCi0gICAgc3ltYm9sICs9IDc7Ci0g IGVsc2UgaWYgKHN0cm5jbXAgKHN5bWJvbCwgIl9fbW9kY3Rvcl8iLCAxMCkg PT0gMCkKLSAgICBzeW1ib2wgKz0gMTA7Ci0gIGVsc2UgaWYgKHN0cm5jbXAg KHN5bWJvbCwgIl9fbW9kZHRvcl8iLCAxMCkgPT0gMCkKLSAgICBzeW1ib2wg Kz0gMTA7Ci0gIGVsc2UgaWYgKHN0cm5jbXAgKHN5bWJvbCwgIl9fTW9kdWxl SW5mb18iLCAxMykgPT0gMCkKLSAgICBzeW1ib2wgKz0gMTM7CisKKyAgaWYg KHN0cm5jbXAgKHN5bWJvbCwgIl9EIiwgMikgPT0gMCkKKyAgICBzeW1ib2wg Kz0gMjsKICAgZWxzZQogICAgIHsKICAgICAgIG9ic3RhY2tfZnJlZSAoJnRl bXBidWYsIE5VTEwpOwogICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAK LSAgaWYgKCFleHRyYWN0X2lkZW50aWZpZXJzIChzeW1ib2wsICZ0ZW1wYnVm KSkKKworICBpZiAoZF9wYXJzZV9zeW1ib2wgKCZ0ZW1wYnVmLCBzeW1ib2wp ICE9IE5VTEwpCisgICAgeworICAgICAgb2JzdGFja19ncm93X3N0cjAgKCZ0 ZW1wYnVmLCAiIik7CisgICAgICByZXN1bHQgPSB4c3RyZHVwIChvYnN0YWNr X2ZpbmlzaCAoJnRlbXBidWYpKTsKKyAgICAgIG9ic3RhY2tfZnJlZSAoJnRl bXBidWYsIE5VTEwpOworICAgIH0KKyAgZWxzZQogICAgIHsKICAgICAgIG9i c3RhY2tfZnJlZSAoJnRlbXBidWYsIE5VTEwpOwogICAgICAgcmV0dXJuIE5V TEw7CiAgICAgfQogCi0gIG9ic3RhY2tfZ3Jvd19zdHIgKCZ0ZW1wYnVmLCAi KCIpOwotICBpZiAoaXNfZnVuYyA9PSAxICYmICpzeW1ib2wgPT0gJ0YnKQot ICAgIHsKLSAgICAgIHN5bWJvbCsrOwotICAgICAgd2hpbGUgKCpzeW1ib2wg IT0gJ1wwJyAmJiAqc3ltYm9sICE9ICdaJykKLQl7Ci0JICBpZiAoaXNfZnVu YyA9PSAxKQotCSAgICBpc19mdW5jKys7Ci0JICBlbHNlCi0JICAgIG9ic3Rh Y2tfZ3Jvd19zdHIgKCZ0ZW1wYnVmLCAiLCAiKTsKLQkgIGlmICghZXh0cmFj dF90eXBlX2luZm8gKHN5bWJvbCwgJnRlbXBidWYpKQotCSAgICB7Ci0JICAg ICAgb2JzdGFja19mcmVlICgmdGVtcGJ1ZiwgTlVMTCk7Ci0JICAgICAgcmV0 dXJuIE5VTEw7Ci0JICAgfQotCX0KLSAgICAgfQotICBvYnN0YWNrX2dyb3df c3RyMCAoJnRlbXBidWYsICIpIik7Ci0KLSAgLyogRG9lc24ndCBkaXNwbGF5 IHRoZSByZXR1cm4gdHlwZSwgYnV0IHdvdWxkbid0IGJlIHRvbyBoYXJkIHRv IGRvLiAgKi8KLQotICBvdXRfc3RyID0geHN0cmR1cCAob2JzdGFja19maW5p c2ggKCZ0ZW1wYnVmKSk7Ci0gIG9ic3RhY2tfZnJlZSAoJnRlbXBidWYsIE5V TEwpOwotICByZXR1cm4gb3V0X3N0cjsKKyAgcmV0dXJuIHJlc3VsdDsKIH0K IAogLyogVGFibGUgbWFwcGluZyBvcGNvZGVzIGludG8gc3RyaW5ncyBmb3Ig cHJpbnRpbmcgb3BlcmF0b3JzCkBAIC0yMzYsNiArMTIwLDk4IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3Qgb3BfcHJpbnQgZF9vcF9wcmludF90YWJbXSA9CiAg IHtOVUxMLCAwLCAwLCAwfQogfTsKIAorZW51bSBkX3ByaW1pdGl2ZV90eXBl cyB7CisgIGRfcHJpbWl0aXZlX3R5cGVfdm9pZCwKKyAgZF9wcmltaXRpdmVf dHlwZV9ib29sLAorICBkX3ByaW1pdGl2ZV90eXBlX2J5dGUsCisgIGRfcHJp bWl0aXZlX3R5cGVfdWJ5dGUsCisgIGRfcHJpbWl0aXZlX3R5cGVfc2hvcnQs CisgIGRfcHJpbWl0aXZlX3R5cGVfdXNob3J0LAorICBkX3ByaW1pdGl2ZV90 eXBlX2ludCwKKyAgZF9wcmltaXRpdmVfdHlwZV91aW50LAorICBkX3ByaW1p dGl2ZV90eXBlX2xvbmcsCisgIGRfcHJpbWl0aXZlX3R5cGVfdWxvbmcsCisg IGRfcHJpbWl0aXZlX3R5cGVfY2VudCwKKyAgZF9wcmltaXRpdmVfdHlwZV91 Y2VudCwKKyAgZF9wcmltaXRpdmVfdHlwZV9mbG9hdCwKKyAgZF9wcmltaXRp dmVfdHlwZV9kb3VibGUsCisgIGRfcHJpbWl0aXZlX3R5cGVfcmVhbCwKKyAg ZF9wcmltaXRpdmVfdHlwZV9pZmxvYXQsCisgIGRfcHJpbWl0aXZlX3R5cGVf aWRvdWJsZSwKKyAgZF9wcmltaXRpdmVfdHlwZV9pcmVhbCwKKyAgZF9wcmlt aXRpdmVfdHlwZV9jZmxvYXQsCisgIGRfcHJpbWl0aXZlX3R5cGVfY2RvdWJs ZSwKKyAgZF9wcmltaXRpdmVfdHlwZV9jcmVhbCwKKyAgZF9wcmltaXRpdmVf dHlwZV9jaGFyLAorICBkX3ByaW1pdGl2ZV90eXBlX3djaGFyLAorICBkX3By aW1pdGl2ZV90eXBlX2RjaGFyLAorICBucl9kX3ByaW1pdGl2ZV90eXBlcwor fTsKKworc3RhdGljIHZvaWQKK2RfbGFuZ3VhZ2VfYXJjaF9pbmZvIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKwkJICAgICAgc3RydWN0IGxhbmd1YWdl X2FyY2hfaW5mbyAqbGFpKQoreworICBjb25zdCBzdHJ1Y3QgYnVpbHRpbl9k X3R5cGUgKmJ1aWx0aW4gPSBidWlsdGluX2RfdHlwZSAoZ2RiYXJjaCk7CisK KyAgbGFpLT5zdHJpbmdfY2hhcl90eXBlID0gYnVpbHRpbi0+YnVpbHRpbl9j aGFyOworICBsYWktPnByaW1pdGl2ZV90eXBlX3ZlY3RvcgorICAgID0gR0RC QVJDSF9PQlNUQUNLX0NBTExPQyAoZ2RiYXJjaCwgbnJfZF9wcmltaXRpdmVf dHlwZXMgKyAxLAorCQkJICAgICAgc3RydWN0IHR5cGUgKik7CisKKyAgbGFp LT5wcmltaXRpdmVfdHlwZV92ZWN0b3IgW2RfcHJpbWl0aXZlX3R5cGVfdm9p ZF0KKyAgICA9IGJ1aWx0aW4tPmJ1aWx0aW5fdm9pZDsKKyAgbGFpLT5wcmlt aXRpdmVfdHlwZV92ZWN0b3IgW2RfcHJpbWl0aXZlX3R5cGVfYm9vbF0KKyAg ICA9IGJ1aWx0aW4tPmJ1aWx0aW5fYm9vbDsKKyAgbGFpLT5wcmltaXRpdmVf dHlwZV92ZWN0b3IgW2RfcHJpbWl0aXZlX3R5cGVfYnl0ZV0KKyAgICA9IGJ1 aWx0aW4tPmJ1aWx0aW5fYnl0ZTsKKyAgbGFpLT5wcmltaXRpdmVfdHlwZV92 ZWN0b3IgW2RfcHJpbWl0aXZlX3R5cGVfdWJ5dGVdCisgICAgPSBidWlsdGlu LT5idWlsdGluX3VieXRlOworICBsYWktPnByaW1pdGl2ZV90eXBlX3ZlY3Rv ciBbZF9wcmltaXRpdmVfdHlwZV9zaG9ydF0KKyAgICA9IGJ1aWx0aW4tPmJ1 aWx0aW5fc2hvcnQ7CisgIGxhaS0+cHJpbWl0aXZlX3R5cGVfdmVjdG9yIFtk X3ByaW1pdGl2ZV90eXBlX3VzaG9ydF0KKyAgICA9IGJ1aWx0aW4tPmJ1aWx0 aW5fdXNob3J0OworICBsYWktPnByaW1pdGl2ZV90eXBlX3ZlY3RvciBbZF9w cmltaXRpdmVfdHlwZV9pbnRdCisgICAgPSBidWlsdGluLT5idWlsdGluX2lu dDsKKyAgbGFpLT5wcmltaXRpdmVfdHlwZV92ZWN0b3IgW2RfcHJpbWl0aXZl X3R5cGVfdWludF0KKyAgICA9IGJ1aWx0aW4tPmJ1aWx0aW5fdWludDsKKyAg bGFpLT5wcmltaXRpdmVfdHlwZV92ZWN0b3IgW2RfcHJpbWl0aXZlX3R5cGVf bG9uZ10KKyAgICA9IGJ1aWx0aW4tPmJ1aWx0aW5fbG9uZzsKKyAgbGFpLT5w cmltaXRpdmVfdHlwZV92ZWN0b3IgW2RfcHJpbWl0aXZlX3R5cGVfdWxvbmdd CisgICAgPSBidWlsdGluLT5idWlsdGluX3Vsb25nOworICBsYWktPnByaW1p dGl2ZV90eXBlX3ZlY3RvciBbZF9wcmltaXRpdmVfdHlwZV9jZW50XQorICAg ID0gYnVpbHRpbi0+YnVpbHRpbl9jZW50OworICBsYWktPnByaW1pdGl2ZV90 eXBlX3ZlY3RvciBbZF9wcmltaXRpdmVfdHlwZV91Y2VudF0KKyAgICA9IGJ1 aWx0aW4tPmJ1aWx0aW5fdWNlbnQ7CisgIGxhaS0+cHJpbWl0aXZlX3R5cGVf dmVjdG9yIFtkX3ByaW1pdGl2ZV90eXBlX2Zsb2F0XQorICAgID0gYnVpbHRp bi0+YnVpbHRpbl9mbG9hdDsKKyAgbGFpLT5wcmltaXRpdmVfdHlwZV92ZWN0 b3IgW2RfcHJpbWl0aXZlX3R5cGVfZG91YmxlXQorICAgID0gYnVpbHRpbi0+ YnVpbHRpbl9kb3VibGU7CisgIGxhaS0+cHJpbWl0aXZlX3R5cGVfdmVjdG9y IFtkX3ByaW1pdGl2ZV90eXBlX3JlYWxdCisgICAgPSBidWlsdGluLT5idWls dGluX3JlYWw7CisgIGxhaS0+cHJpbWl0aXZlX3R5cGVfdmVjdG9yIFtkX3By aW1pdGl2ZV90eXBlX2lmbG9hdF0KKyAgICA9IGJ1aWx0aW4tPmJ1aWx0aW5f aWZsb2F0OworICBsYWktPnByaW1pdGl2ZV90eXBlX3ZlY3RvciBbZF9wcmlt aXRpdmVfdHlwZV9pZG91YmxlXQorICAgID0gYnVpbHRpbi0+YnVpbHRpbl9p ZG91YmxlOworICBsYWktPnByaW1pdGl2ZV90eXBlX3ZlY3RvciBbZF9wcmlt aXRpdmVfdHlwZV9pcmVhbF0KKyAgICA9IGJ1aWx0aW4tPmJ1aWx0aW5faXJl YWw7CisgIGxhaS0+cHJpbWl0aXZlX3R5cGVfdmVjdG9yIFtkX3ByaW1pdGl2 ZV90eXBlX2NmbG9hdF0KKyAgICA9IGJ1aWx0aW4tPmJ1aWx0aW5fY2Zsb2F0 OworICBsYWktPnByaW1pdGl2ZV90eXBlX3ZlY3RvciBbZF9wcmltaXRpdmVf dHlwZV9jZG91YmxlXQorICAgID0gYnVpbHRpbi0+YnVpbHRpbl9jZG91Ymxl OworICBsYWktPnByaW1pdGl2ZV90eXBlX3ZlY3RvciBbZF9wcmltaXRpdmVf dHlwZV9jcmVhbF0KKyAgICA9IGJ1aWx0aW4tPmJ1aWx0aW5fY3JlYWw7Cisg IGxhaS0+cHJpbWl0aXZlX3R5cGVfdmVjdG9yIFtkX3ByaW1pdGl2ZV90eXBl X2NoYXJdCisgICAgPSBidWlsdGluLT5idWlsdGluX2NoYXI7CisgIGxhaS0+ cHJpbWl0aXZlX3R5cGVfdmVjdG9yIFtkX3ByaW1pdGl2ZV90eXBlX3djaGFy XQorICAgID0gYnVpbHRpbi0+YnVpbHRpbl93Y2hhcjsKKyAgbGFpLT5wcmlt aXRpdmVfdHlwZV92ZWN0b3IgW2RfcHJpbWl0aXZlX3R5cGVfZGNoYXJdCisg ICAgPSBidWlsdGluLT5idWlsdGluX2RjaGFyOworCisgIGxhaS0+Ym9vbF90 eXBlX3N5bWJvbCA9ICJib29sIjsKKyAgbGFpLT5ib29sX3R5cGVfZGVmYXVs dCA9IGJ1aWx0aW4tPmJ1aWx0aW5fYm9vbDsKK30KKwogc3RhdGljIGNvbnN0 IHN0cnVjdCBsYW5ndWFnZV9kZWZuIGRfbGFuZ3VhZ2VfZGVmbiA9CiB7CiAg ICJkIiwKQEAgLTI0NCw3ICsyMjAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGxhbmd1YWdlX2RlZm4gZF9sYW5ndWFnZV9kZWZuID0KICAgcmFuZ2VfY2hl Y2tfb2ZmLAogICBjYXNlX3NlbnNpdGl2ZV9vbiwKICAgYXJyYXlfcm93X21h am9yLAotICBtYWNyb19leHBhbnNpb25fYywKKyAgbWFjcm9fZXhwYW5zaW9u X25vLAogICAmZXhwX2Rlc2NyaXB0b3JfYywKICAgY19wYXJzZSwKICAgY19l cnJvciwKQEAgLTI1OSw4ICsyMzUsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGxhbmd1YWdlX2RlZm4gZF9sYW5ndWFnZV9kZWZuID0KICAgY192YWx1ZV9w cmludCwJCS8qIFByaW50IGEgdG9wLWxldmVsIHZhbHVlLiAgKi8KICAgZGVm YXVsdF9yZWFkX3Zhcl92YWx1ZSwJLyogbGFfcmVhZF92YXJfdmFsdWUgKi8K ICAgTlVMTCwJCQkJLyogTGFuZ3VhZ2Ugc3BlY2lmaWMgc2tpcF90cmFtcG9s aW5lLiAgKi8KLSAgInRoaXMiLAotICBiYXNpY19sb29rdXBfc3ltYm9sX25v bmxvY2FsLCAKKyAgInRoaXMiLAkJCS8qIG5hbWVfb2ZfdGhpcyAqLworICBi YXNpY19sb29rdXBfc3ltYm9sX25vbmxvY2FsLAogICBiYXNpY19sb29rdXBf dHJhbnNwYXJlbnRfdHlwZSwKICAgZF9kZW1hbmdsZSwJCQkvKiBMYW5ndWFn ZSBzcGVjaWZpYyBzeW1ib2wgZGVtYW5nbGVyLiAgKi8KICAgTlVMTCwJCQkJ LyogTGFuZ3VhZ2Ugc3BlY2lmaWMKQEAgLTI3MCw3ICsyNDYsNyBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gZF9sYW5ndWFnZV9kZWZu ID0KICAgMCwJCQkJLyogU3RyaW5nIGxvd2VyIGJvdW5kLiAgKi8KICAgZGVm YXVsdF93b3JkX2JyZWFrX2NoYXJhY3RlcnMsCiAgIGRlZmF1bHRfbWFrZV9z eW1ib2xfY29tcGxldGlvbl9saXN0LAotICBjX2xhbmd1YWdlX2FyY2hfaW5m bywKKyAgZF9sYW5ndWFnZV9hcmNoX2luZm8sCiAgIGRlZmF1bHRfcHJpbnRf YXJyYXlfaW5kZXgsCiAgIGRlZmF1bHRfcGFzc19ieV9yZWZlcmVuY2UsCiAg IGNfZ2V0X3N0cmluZywKQEAgLTI4MCwxMSArMjU2LDk4IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiBkX2xhbmd1YWdlX2RlZm4gPQog ICBMQU5HX01BR0lDCiB9OwogCitzdGF0aWMgdm9pZCAqCitidWlsZF9kX3R5 cGVzIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKK3sKKyAgc3RydWN0IGJ1 aWx0aW5fZF90eXBlICpidWlsdGluX2RfdHlwZQorICAgID0gR0RCQVJDSF9P QlNUQUNLX1pBTExPQyAoZ2RiYXJjaCwgc3RydWN0IGJ1aWx0aW5fZF90eXBl KTsKKworICAvKiBCYXNpYyB0eXBlcy4gICovCisgIGJ1aWx0aW5fZF90eXBl LT5idWlsdGluX3ZvaWQKKyAgICA9IGFyY2hfdHlwZSAoZ2RiYXJjaCwgVFlQ RV9DT0RFX1ZPSUQsIDEsICJ2b2lkIik7CisgIGJ1aWx0aW5fZF90eXBlLT5i dWlsdGluX2Jvb2wKKyAgICA9IGFyY2hfYm9vbGVhbl90eXBlIChnZGJhcmNo LCA4LCAxLCAiYm9vbCIpOworICBidWlsdGluX2RfdHlwZS0+YnVpbHRpbl9i eXRlCisgICAgPSBhcmNoX2ludGVnZXJfdHlwZSAoZ2RiYXJjaCwgOCwgMCwg ImJ5dGUiKTsKKyAgYnVpbHRpbl9kX3R5cGUtPmJ1aWx0aW5fdWJ5dGUKKyAg ICA9IGFyY2hfaW50ZWdlcl90eXBlIChnZGJhcmNoLCA4LCAxLCAidWJ5dGUi KTsKKyAgYnVpbHRpbl9kX3R5cGUtPmJ1aWx0aW5fc2hvcnQKKyAgICA9IGFy Y2hfaW50ZWdlcl90eXBlIChnZGJhcmNoLCAxNiwgMCwgInNob3J0Iik7Cisg IGJ1aWx0aW5fZF90eXBlLT5idWlsdGluX3VzaG9ydAorICAgID0gYXJjaF9p bnRlZ2VyX3R5cGUgKGdkYmFyY2gsIDE2LCAxLCAidXNob3J0Iik7CisgIGJ1 aWx0aW5fZF90eXBlLT5idWlsdGluX2ludAorICAgID0gYXJjaF9pbnRlZ2Vy X3R5cGUgKGdkYmFyY2gsIDMyLCAwLCAiaW50Iik7CisgIGJ1aWx0aW5fZF90 eXBlLT5idWlsdGluX3VpbnQKKyAgICA9IGFyY2hfaW50ZWdlcl90eXBlIChn ZGJhcmNoLCAzMiwgMSwgInVpbnQiKTsKKyAgYnVpbHRpbl9kX3R5cGUtPmJ1 aWx0aW5fbG9uZworICAgID0gYXJjaF9pbnRlZ2VyX3R5cGUgKGdkYmFyY2gs IDY0LCAwLCAibG9uZyIpOworICBidWlsdGluX2RfdHlwZS0+YnVpbHRpbl91 bG9uZworICAgID0gYXJjaF9pbnRlZ2VyX3R5cGUgKGdkYmFyY2gsIDY0LCAx LCAidWxvbmciKTsKKyAgYnVpbHRpbl9kX3R5cGUtPmJ1aWx0aW5fY2VudAor ICAgID0gYXJjaF9pbnRlZ2VyX3R5cGUgKGdkYmFyY2gsIDEyOCwgMCwgImNl bnQiKTsKKyAgYnVpbHRpbl9kX3R5cGUtPmJ1aWx0aW5fdWNlbnQKKyAgICA9 IGFyY2hfaW50ZWdlcl90eXBlIChnZGJhcmNoLCAxMjgsIDEsICJ1Y2VudCIp OworICBidWlsdGluX2RfdHlwZS0+YnVpbHRpbl9mbG9hdAorICAgID0gYXJj aF9mbG9hdF90eXBlIChnZGJhcmNoLCBnZGJhcmNoX2Zsb2F0X2JpdCAoZ2Ri YXJjaCksCisJCSAgICAgICAiZmxvYXQiLCBOVUxMKTsKKyAgYnVpbHRpbl9k X3R5cGUtPmJ1aWx0aW5fZG91YmxlCisgICAgPSBhcmNoX2Zsb2F0X3R5cGUg KGdkYmFyY2gsIGdkYmFyY2hfZG91YmxlX2JpdCAoZ2RiYXJjaCksCisJCSAg ICAgICAiZG91YmxlIiwgTlVMTCk7CisgIGJ1aWx0aW5fZF90eXBlLT5idWls dGluX3JlYWwKKyAgICA9IGFyY2hfZmxvYXRfdHlwZSAoZ2RiYXJjaCwgZ2Ri YXJjaF9sb25nX2RvdWJsZV9iaXQgKGdkYmFyY2gpLAorCQkgICAgICAgInJl YWwiLCBOVUxMKTsKKworICBUWVBFX0lOU1RBTkNFX0ZMQUdTIChidWlsdGlu X2RfdHlwZS0+YnVpbHRpbl9ieXRlKQorICAgIHw9IFRZUEVfSU5TVEFOQ0Vf RkxBR19OT1RURVhUOworICBUWVBFX0lOU1RBTkNFX0ZMQUdTIChidWlsdGlu X2RfdHlwZS0+YnVpbHRpbl91Ynl0ZSkKKyAgICB8PSBUWVBFX0lOU1RBTkNF X0ZMQUdfTk9UVEVYVDsKKworICAvKiBJbWFnaW5hcnkgYW5kIGNvbXBsZXgg dHlwZXMuICAqLworICBidWlsdGluX2RfdHlwZS0+YnVpbHRpbl9pZmxvYXQK KyAgICA9IGFyY2hfZmxvYXRfdHlwZSAoZ2RiYXJjaCwgZ2RiYXJjaF9mbG9h dF9iaXQgKGdkYmFyY2gpLAorCQkgICAgICAgImlmbG9hdCIsIE5VTEwpOwor ICBidWlsdGluX2RfdHlwZS0+YnVpbHRpbl9pZG91YmxlCisgICAgPSBhcmNo X2Zsb2F0X3R5cGUgKGdkYmFyY2gsIGdkYmFyY2hfZG91YmxlX2JpdCAoZ2Ri YXJjaCksCisJCSAgICAgICAiaWRvdWJsZSIsIE5VTEwpOworICBidWlsdGlu X2RfdHlwZS0+YnVpbHRpbl9pcmVhbAorICAgID0gYXJjaF9mbG9hdF90eXBl IChnZGJhcmNoLCBnZGJhcmNoX2xvbmdfZG91YmxlX2JpdCAoZ2RiYXJjaCks CisJCSAgICAgICAiaXJlYWwiLCBOVUxMKTsKKyAgYnVpbHRpbl9kX3R5cGUt PmJ1aWx0aW5fY2Zsb2F0CisgICAgPSBhcmNoX2NvbXBsZXhfdHlwZSAoZ2Ri YXJjaCwgImNmbG9hdCIsCisJCQkgYnVpbHRpbl9kX3R5cGUtPmJ1aWx0aW5f ZmxvYXQpOworICBidWlsdGluX2RfdHlwZS0+YnVpbHRpbl9jZG91YmxlCisg ICAgPSBhcmNoX2NvbXBsZXhfdHlwZSAoZ2RiYXJjaCwgImNkb3VibGUiLAor CQkJIGJ1aWx0aW5fZF90eXBlLT5idWlsdGluX2RvdWJsZSk7CisgIGJ1aWx0 aW5fZF90eXBlLT5idWlsdGluX2NyZWFsCisgICAgPSBhcmNoX2NvbXBsZXhf dHlwZSAoZ2RiYXJjaCwgImNyZWFsIiwKKwkJCSBidWlsdGluX2RfdHlwZS0+ YnVpbHRpbl9yZWFsKTsKKworICAvKiBDaGFyYWN0ZXIgdHlwZXMuICAqLwor ICBidWlsdGluX2RfdHlwZS0+YnVpbHRpbl9jaGFyCisgICAgPSBhcmNoX2No YXJhY3Rlcl90eXBlIChnZGJhcmNoLCA4LCAxLCAiY2hhciIpOworICBidWls dGluX2RfdHlwZS0+YnVpbHRpbl93Y2hhcgorICAgID0gYXJjaF9jaGFyYWN0 ZXJfdHlwZSAoZ2RiYXJjaCwgMTYsIDEsICJ3Y2hhciIpOworICBidWlsdGlu X2RfdHlwZS0+YnVpbHRpbl9kY2hhcgorICAgID0gYXJjaF9jaGFyYWN0ZXJf dHlwZSAoZ2RiYXJjaCwgMzIsIDEsICJkY2hhciIpOworCisgIHJldHVybiBi dWlsdGluX2RfdHlwZTsKK30KKworc3RhdGljIHN0cnVjdCBnZGJhcmNoX2Rh dGEgKmRfdHlwZV9kYXRhOworCitjb25zdCBzdHJ1Y3QgYnVpbHRpbl9kX3R5 cGUgKgorYnVpbHRpbl9kX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo KQoreworICByZXR1cm4gZ2RiYXJjaF9kYXRhIChnZGJhcmNoLCBkX3R5cGVf ZGF0YSk7Cit9CisKIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5j ZSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCiBleHRlcm4gaW5pdGlhbGl6 ZV9maWxlX2Z0eXBlIF9pbml0aWFsaXplX2RfbGFuZ3VhZ2U7CiAKIHZvaWQK IF9pbml0aWFsaXplX2RfbGFuZ3VhZ2UgKHZvaWQpCiB7CisgIGRfdHlwZV9k YXRhID0gZ2RiYXJjaF9kYXRhX3JlZ2lzdGVyX3Bvc3RfaW5pdCAoYnVpbGRf ZF90eXBlcyk7CisKICAgYWRkX2xhbmd1YWdlICgmZF9sYW5ndWFnZV9kZWZu KTsKIH0KZGlmZiAtLWdpdCBhL2dkYi9kLWxhbmcuaCBiL2dkYi9kLWxhbmcu aAppbmRleCA4ODM0YTFkLi5kNjFhNTdjIDEwMDY0NAotLS0gYS9nZGIvZC1s YW5nLmgKKysrIGIvZ2RiL2QtbGFuZy5oCkBAIC0yMiw2ICsyMiwzOCBAQAog CiAjaW5jbHVkZSAic3ltdGFiLmgiCiAKK3N0cnVjdCBidWlsdGluX2RfdHlw ZQoreworICBzdHJ1Y3QgdHlwZSAqYnVpbHRpbl92b2lkOworICBzdHJ1Y3Qg dHlwZSAqYnVpbHRpbl9ib29sOworICBzdHJ1Y3QgdHlwZSAqYnVpbHRpbl9i eXRlOworICBzdHJ1Y3QgdHlwZSAqYnVpbHRpbl91Ynl0ZTsKKyAgc3RydWN0 IHR5cGUgKmJ1aWx0aW5fc2hvcnQ7CisgIHN0cnVjdCB0eXBlICpidWlsdGlu X3VzaG9ydDsKKyAgc3RydWN0IHR5cGUgKmJ1aWx0aW5faW50OworICBzdHJ1 Y3QgdHlwZSAqYnVpbHRpbl91aW50OworICBzdHJ1Y3QgdHlwZSAqYnVpbHRp bl9sb25nOworICBzdHJ1Y3QgdHlwZSAqYnVpbHRpbl91bG9uZzsKKyAgc3Ry dWN0IHR5cGUgKmJ1aWx0aW5fY2VudDsKKyAgc3RydWN0IHR5cGUgKmJ1aWx0 aW5fdWNlbnQ7CisgIHN0cnVjdCB0eXBlICpidWlsdGluX2Zsb2F0OworICBz dHJ1Y3QgdHlwZSAqYnVpbHRpbl9kb3VibGU7CisgIHN0cnVjdCB0eXBlICpi dWlsdGluX3JlYWw7CisgIHN0cnVjdCB0eXBlICpidWlsdGluX2lmbG9hdDsK KyAgc3RydWN0IHR5cGUgKmJ1aWx0aW5faWRvdWJsZTsKKyAgc3RydWN0IHR5 cGUgKmJ1aWx0aW5faXJlYWw7CisgIHN0cnVjdCB0eXBlICpidWlsdGluX2Nm bG9hdDsKKyAgc3RydWN0IHR5cGUgKmJ1aWx0aW5fY2RvdWJsZTsKKyAgc3Ry dWN0IHR5cGUgKmJ1aWx0aW5fY3JlYWw7CisgIHN0cnVjdCB0eXBlICpidWls dGluX2NoYXI7CisgIHN0cnVjdCB0eXBlICpidWlsdGluX3djaGFyOworICBz dHJ1Y3QgdHlwZSAqYnVpbHRpbl9kY2hhcjsKK307CisKKy8qIERlZmluZWQg aW4gZC1sYW5nLmMgICovCisKK2V4dGVybiBjb25zdCBjaGFyICpkX21haW5f bmFtZSAodm9pZCk7CisKIGV4dGVybiBjaGFyICpkX2RlbWFuZ2xlIChjb25z dCBjaGFyICptYW5nbGVkLCBpbnQgb3B0aW9ucyk7CiAKIGV4dGVybiB2b2lk IGRfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5 dGUgKnZhbGFkZHIsCkBAIC0zMCw0ICs2MiwxMCBAQCBleHRlcm4gdm9pZCBk X3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRl ICp2YWxhZGRyLAogCQkJIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAogCQkJ IGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKTsK IAorZXh0ZXJuIGNvbnN0IHN0cnVjdCBidWlsdGluX2RfdHlwZSAqYnVpbHRp bl9kX3R5cGUgKHN0cnVjdCBnZGJhcmNoICopOworCisvKiBEZWZpbmVkIGlu IGQtc3VwcG9ydC5jICAqLworCitleHRlcm4gY29uc3QgY2hhciAqZF9wYXJz ZV9zeW1ib2wgKHN0cnVjdCBvYnN0YWNrICosIGNvbnN0IGNoYXIgKik7CisK ICNlbmRpZiAvKiAhZGVmaW5lZCAoRF9MQU5HX0gpICovCmRpZmYgLS1naXQg YS9nZGIvZC1zdXBwb3J0LmMgYi9nZGIvZC1zdXBwb3J0LmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE4YWNmOAotLS0gL2Rldi9u dWxsCisrKyBiL2dkYi9kLXN1cHBvcnQuYwpAQCAtMCwwICsxLDYwNiBAQAor LyogRCBsYW5ndWFnZSBzdXBwb3J0IHJvdXRpbmVzIGZvciBHREIsIHRoZSBH TlUgZGVidWdnZXIuCisKKyAgIENvcHlyaWdodCAoQykgMjAxNCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBmaWxlIGlzIHBh cnQgb2YgR0RCLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor CisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisj aW5jbHVkZSAiZGVmcy5oIgorI2luY2x1ZGUgImQtbGFuZy5oIgorI2luY2x1 ZGUgImdkYl9vYnN0YWNrLmgiCisKKyNpbmNsdWRlICJzYWZlLWN0eXBlLmgi CisKK3N0YXRpYyBjb25zdCBjaGFyICpwYXJzZV9mdW5jdGlvbl9hcmdzIChz dHJ1Y3Qgb2JzdGFjayAqLCBjb25zdCBjaGFyICopOworc3RhdGljIGNvbnN0 IGNoYXIgKnBhcnNlX3R5cGUgKHN0cnVjdCBvYnN0YWNrICosIGNvbnN0IGNo YXIgKik7CisKKy8qIERlbWFuZ2xlIHRoZSBjYWxsaW5nIGNvbnZlbnRpb24g ZnJvbSBNQU5HTEUgYW5kIGFwcGVuZCBpdCB0byBURU1QQlVGLgorICAgUmV0 dXJuIHRoZSByZW1haW5pbmcgc3RyaW5nIG9uIHN1Y2Nlc3Mgb3IgTlVMTCBv biBmYWlsdXJlLiAgKi8KK3N0YXRpYyBjb25zdCBjaGFyICoKK3BhcnNlX2Nh bGxfY29udmVudGlvbiAoc3RydWN0IG9ic3RhY2sgKnRlbXBidWYsIGNvbnN0 IGNoYXIgKm1hbmdsZSkKK3sKKyAgaWYgKG1hbmdsZSA9PSBOVUxMIHx8ICpt YW5nbGUgPT0gJ1wwJykKKyAgICByZXR1cm4gbWFuZ2xlOworCisgIHN3aXRj aCAoKm1hbmdsZSkKKyAgICB7CisgICAgY2FzZSAnRic6IC8qIChEKSAqLwor ICAgICAgbWFuZ2xlKys7CisgICAgICBicmVhazsKKyAgICBjYXNlICdVJzog LyogKEMpICovCisgICAgICBtYW5nbGUrKzsKKyAgICAgIG9ic3RhY2tfZ3Jv d19zdHIgKHRlbXBidWYsICJleHRlcm4oQykgIik7CisgICAgICBicmVhazsK KyAgICBjYXNlICdXJzogLyogKFdpbmRvd3MpICovCisgICAgICBtYW5nbGUr KzsKKyAgICAgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJleHRlcm4o V2luZG93cykgIik7CisgICAgICBicmVhazsKKyAgICBjYXNlICdWJzogLyog KFBhc2NhbCkgKi8KKyAgICAgIG1hbmdsZSsrOworICAgICAgb2JzdGFja19n cm93X3N0ciAodGVtcGJ1ZiwgImV4dGVybihQYXNjYWwpICIpOworICAgICAg YnJlYWs7CisgICAgY2FzZSAnUic6IC8qIChDKyspICovCisgICAgICBtYW5n bGUrKzsKKyAgICAgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJleHRl cm4oQysrKSAiKTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg ICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgcmV0dXJuIG1hbmdsZTsKK30K KworLyogRGVtYW5nbGUgdGhlIEQgZnVuY3Rpb24gYXR0cmlidXRlcyBmcm9t IE1BTkdMRSBhbmQgYXBwZW5kIGl0IHRvIFRFTVBCVUYuCisgICBSZXR1cm4g dGhlIHJlbWFpbmluZyBzdHJpbmcgb24gc3VjY2VzcyBvciBOVUxMIG9uIGZh aWx1cmUuICAqLworc3RhdGljIGNvbnN0IGNoYXIgKgorcGFyc2VfYXR0cmli dXRlcyAoc3RydWN0IG9ic3RhY2sgKnRlbXBidWYsIGNvbnN0IGNoYXIgKm1h bmdsZSkKK3sKKyAgaWYgKG1hbmdsZSA9PSBOVUxMIHx8ICptYW5nbGUgPT0g J1wwJykKKyAgICByZXR1cm4gbWFuZ2xlOworCisgIHdoaWxlICgqbWFuZ2xl ID09ICdOJykKKyAgICB7CisgICAgICBtYW5nbGUrKzsKKyAgICAgIHN3aXRj aCAoKm1hbmdsZSkKKwl7CisJY2FzZSAnYSc6IC8qIHB1cmUgKi8KKwkgIG1h bmdsZSsrOworCSAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgInB1cmUg Iik7CisJICBjb250aW51ZTsKKwljYXNlICdiJzogLyogbm90aHJvdyAqLwor CSAgbWFuZ2xlKys7CisJICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAi bm90aHJvdyAiKTsKKwkgIGNvbnRpbnVlOworCWNhc2UgJ2MnOiAvKiByZWYg Ki8KKwkgIG1hbmdsZSsrOworCSAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1 ZiwgInJlZiAiKTsKKwkgIGNvbnRpbnVlOworCWNhc2UgJ2QnOiAvKiBAcHJv cGVydHkgKi8KKwkgIG1hbmdsZSsrOworCSAgb2JzdGFja19ncm93X3N0ciAo dGVtcGJ1ZiwgIkBwcm9wZXJ0eSAiKTsKKwkgIGNvbnRpbnVlOworCWNhc2Ug J2UnOiAvKiBAdHJ1c3RlZCAqLworCSAgbWFuZ2xlKys7CisJICBvYnN0YWNr X2dyb3dfc3RyICh0ZW1wYnVmLCAiQHRydXN0ZWQgIik7CisJICBjb250aW51 ZTsKKwljYXNlICdmJzogLyogQHNhZmUgKi8KKwkgIG1hbmdsZSsrOworCSAg b2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgIkBzYWZlICIpOworCSAgY29u dGludWU7CisJY2FzZSAnZyc6CisJY2FzZSAnaCc6CisJICAvKiBpbm91dCBw YXJhbWV0ZXIgaXMgcmVwcmVzZW50ZWQgYXMgJ05nJy4KKwkgICAgIHZlY3Rv ciBwYXJhbWV0ZXIgaXMgcmVwcmVzZW50ZWQgYXMgJ05oJy4KKwkgICAgIElm IHdlIHNlZSB0aGlzLCB0aGVuIHdlIGtub3cgd2UncmUgcmVhbGx5IGluIHRo ZQorCSAgICAgcGFyYW1ldGVyIGxpc3QuICBSZXdpbmQgYW5kIGJyZWFrLiAg Ki8KKwkgIG1hbmdsZS0tOworCX0KKyAgICAgIGJyZWFrOworICAgIH0KKyAg cmV0dXJuIG1hbmdsZTsKK30KKworLyogRGVtYW5nbGUgdGhlIGZ1bmN0aW9u IHR5cGUgZnJvbSBNQU5HTEUgYW5kIGFwcGVuZCBpdCB0byBURU1QQlVGLgor ICAgUmV0dXJuIHRoZSByZW1haW5pbmcgc3RyaW5nIG9uIHN1Y2Nlc3Mgb3Ig TlVMTCBvbiBmYWlsdXJlLiAgKi8KK3N0YXRpYyBjb25zdCBjaGFyICoKK3Bh cnNlX2Z1bmN0aW9uX3R5cGUgKHN0cnVjdCBvYnN0YWNrICp0ZW1wYnVmLCBj b25zdCBjaGFyICptYW5nbGUpCit7CisgIHN0cnVjdCBvYnN0YWNrIG9iYXR0 ciwgb2JhcmdzLCBvYnR5cGU7CisgIGNoYXIgKmF0dHIsICphcmdzLCAqdHlw ZTsKKyAgc2l6ZV90IHN6YXR0ciwgc3phcmdzLCBzenR5cGU7CisKKyAgaWYg KG1hbmdsZSA9PSBOVUxMIHx8ICptYW5nbGUgPT0gJ1wwJykKKyAgICByZXR1 cm4gbWFuZ2xlOworCisgIC8qIFRoZSBvcmRlciBvZiB0aGUgbWFuZ2xlZCBz dHJpbmcgaXM6CisgICAgIFR5cGVGdW5jdGlvbiA6OgorICAgICAgICBDYWxs Q29udmVudGlvbiBGdW5jQXR0cnMgQXJndW1lbnRzIEFyZ0Nsb3NlIFR5cGUK KworICAgICBUaGUgZGVtYW5nbGVkIHN0cmluZyBpcyByZS1vcmRlcmVkIGFz OgorICAgICAgICBDYWxsQ29udmVudGlvbiBUeXBlIEFyZ3VtZW50cyBGdW5j QXR0cnMKKyAgICovCisgIG9ic3RhY2tfaW5pdCAoJm9iYXR0cik7CisgIG9i c3RhY2tfaW5pdCAoJm9iYXJncyk7CisgIG9ic3RhY2tfaW5pdCAoJm9idHlw ZSk7CisKKyAgLyogRnVuY3Rpb24gY2FsbCBjb252ZW50aW9uLiAgKi8KKyAg bWFuZ2xlID0gcGFyc2VfY2FsbF9jb252ZW50aW9uICh0ZW1wYnVmLCBtYW5n bGUpOworCisgIC8qIEZ1bmN0aW9uIGF0dHJpYnV0ZXMuICAqLworICBtYW5n bGUgPSBwYXJzZV9hdHRyaWJ1dGVzICgmb2JhdHRyLCBtYW5nbGUpOworICBz emF0dHIgPSBvYnN0YWNrX29iamVjdF9zaXplICgmb2JhdHRyKTsKKyAgYXR0 ciA9IG9ic3RhY2tfZmluaXNoICgmb2JhdHRyKTsKKworICAvKiBGdW5jdGlv biBhcmd1bWVudHMuICAqLworICBtYW5nbGUgPSBwYXJzZV9mdW5jdGlvbl9h cmdzICgmb2JhcmdzLCBtYW5nbGUpOworICBzemFyZ3MgPSBvYnN0YWNrX29i amVjdF9zaXplICgmb2JhcmdzKTsKKyAgYXJncyA9IG9ic3RhY2tfZmluaXNo ICgmb2JhcmdzKTsKKworICAvKiBGdW5jdGlvbiByZXR1cm4gdHlwZS4gICov CisgIG1hbmdsZSA9IHBhcnNlX3R5cGUgKCZvYnR5cGUsIG1hbmdsZSk7Cisg IHN6dHlwZSA9IG9ic3RhY2tfb2JqZWN0X3NpemUgKCZvYnR5cGUpOworICB0 eXBlID0gb2JzdGFja19maW5pc2ggKCZvYnR5cGUpOworCisgIC8qIEFwcGVu ZCB0byBidWZmZXIgaW4gb3JkZXIuICovCisgIG9ic3RhY2tfZ3JvdyAodGVt cGJ1ZiwgdHlwZSwgc3p0eXBlKTsKKyAgb2JzdGFja19ncm93X3N0ciAodGVt cGJ1ZiwgIigiKTsKKyAgb2JzdGFja19ncm93ICh0ZW1wYnVmLCBhcmdzLCBz emFyZ3MpOworICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiKSAiKTsK KyAgb2JzdGFja19ncm93ICh0ZW1wYnVmLCBhdHRyLCBzemF0dHIpOworCisg IG9ic3RhY2tfZnJlZSAoJm9iYXR0ciwgTlVMTCk7CisgIG9ic3RhY2tfZnJl ZSAoJm9iYXJncywgTlVMTCk7CisgIG9ic3RhY2tfZnJlZSAoJm9idHlwZSwg TlVMTCk7CisgIHJldHVybiBtYW5nbGU7Cit9CisKKy8qIERlbWFuZ2xlIHRo ZSBhcmd1bWVudCBsaXN0IGZyb20gTUFOR0xFIGFuZCBhcHBlbmQgaXQgdG8g VEVNUEJVRi4KKyAgIFJldHVybiB0aGUgcmVtYWluaW5nIHN0cmluZyBvbiBz dWNjZXNzIG9yIE5VTEwgb24gZmFpbHVyZS4gICovCitzdGF0aWMgY29uc3Qg Y2hhciAqCitwYXJzZV9mdW5jdGlvbl9hcmdzIChzdHJ1Y3Qgb2JzdGFjayAq dGVtcGJ1ZiwgY29uc3QgY2hhciAqbWFuZ2xlKQoreworICBzaXplX3QgbiA9 IDA7CisKKyAgd2hpbGUgKG1hbmdsZSAmJiAqbWFuZ2xlICE9ICdcMCcpCisg ICAgeworICAgICAgc3dpdGNoICgqbWFuZ2xlKQorCXsKKwljYXNlICdYJzog LyogKHZhcmlhZGljIFQgdC4uLikgc3R5bGUuICAqLworCSAgbWFuZ2xlKys7 CisJICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiLi4uIik7CisJICBy ZXR1cm4gbWFuZ2xlOworCWNhc2UgJ1knOiAvKiAodmFyaWFkaWMgVCB0LCAu Li4pIHN0eWxlLiAgKi8KKwkgIG1hbmdsZSsrOworCSAgb2JzdGFja19ncm93 X3N0ciAodGVtcGJ1ZiwgIiwgLi4uIik7CisJICByZXR1cm4gbWFuZ2xlOwor CWNhc2UgJ1onOiAvKiBOb3JtYWwgZnVuY3Rpb24uICAqLworCSAgbWFuZ2xl Kys7CisJICByZXR1cm4gbWFuZ2xlOworCX0KKworICAgICAgaWYgKG4rKykK KwlvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiLCAiKTsKKworICAgICAg aWYgKCptYW5nbGUgPT0gJ00nKSAvKiBzY29wZShUKSAqLworCXsKKwkgIG1h bmdsZSsrOworCSAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgInNjb3Bl ICIpOworCX0KKworICAgICAgc3dpdGNoICgqbWFuZ2xlKQorCXsKKwljYXNl ICdKJzogLyogb3V0KFQpICovCisJICBtYW5nbGUrKzsKKwkgIG9ic3RhY2tf Z3Jvd19zdHIgKHRlbXBidWYsICJvdXQgIik7CisJICBicmVhazsKKwljYXNl ICdLJzogLyogcmVmKFQpICovCisJICBtYW5nbGUrKzsKKwkgIG9ic3RhY2tf Z3Jvd19zdHIgKHRlbXBidWYsICJyZWYgIik7CisJICBicmVhazsKKwljYXNl ICdMJzogLyogbGF6eShUKSAqLworCSAgbWFuZ2xlKys7CisJICBvYnN0YWNr X2dyb3dfc3RyICh0ZW1wYnVmLCAibGF6eSAiKTsKKwkgIGJyZWFrOworCX0K KyAgICAgIG1hbmdsZSA9IHBhcnNlX3R5cGUgKHRlbXBidWYsIG1hbmdsZSk7 CisgICAgfQorICByZXR1cm4gbWFuZ2xlOworfQorCisvKiBEZW1hbmdsZSB0 aGUgdHlwZSBmcm9tIE1BTkdMRSBhbmQgYXBwZW5kIGl0IHRvIFRFTVBCVUYu CisgICBSZXR1cm4gdGhlIHJlbWFpbmluZyBzdHJpbmcgb24gc3VjY2VzcyBv ciBOVUxMIG9uIGZhaWx1cmUuICAqLworc3RhdGljIGNvbnN0IGNoYXIgKgor cGFyc2VfdHlwZSAoc3RydWN0IG9ic3RhY2sgKnRlbXBidWYsIGNvbnN0IGNo YXIgKm1hbmdsZSkKK3sKKyAgaWYgKG1hbmdsZSA9PSBOVUxMIHx8ICptYW5n bGUgPT0gJ1wwJykKKyAgICByZXR1cm4gbWFuZ2xlOworCisgIHN3aXRjaCAo Km1hbmdsZSkKKyAgICB7CisgICAgY2FzZSAnTyc6IC8qIHNoYXJlZChUKSAq LworICAgICAgbWFuZ2xlKys7CisgICAgICBvYnN0YWNrX2dyb3dfc3RyICh0 ZW1wYnVmLCAic2hhcmVkKCIpOworICAgICAgbWFuZ2xlID0gcGFyc2VfdHlw ZSAodGVtcGJ1ZiwgbWFuZ2xlKTsKKyAgICAgIG9ic3RhY2tfZ3Jvd19zdHIg KHRlbXBidWYsICIpIik7CisgICAgICByZXR1cm4gbWFuZ2xlOworICAgIGNh c2UgJ3gnOiAvKiBjb25zdChUKSAqLworICAgICAgbWFuZ2xlKys7CisgICAg ICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiY29uc3QoIik7CisgICAg ICBtYW5nbGUgPSBwYXJzZV90eXBlICh0ZW1wYnVmLCBtYW5nbGUpOworICAg ICAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgIikiKTsKKyAgICAgIHJl dHVybiBtYW5nbGU7CisgICAgY2FzZSAneSc6IC8qIGltbXV0YWJsZShUKSAq LworICAgICAgbWFuZ2xlKys7CisgICAgICBvYnN0YWNrX2dyb3dfc3RyICh0 ZW1wYnVmLCAiaW1tdXRhYmxlKCIpOworICAgICAgbWFuZ2xlID0gcGFyc2Vf dHlwZSAodGVtcGJ1ZiwgbWFuZ2xlKTsKKyAgICAgIG9ic3RhY2tfZ3Jvd19z dHIgKHRlbXBidWYsICIpIik7CisgICAgICByZXR1cm4gbWFuZ2xlOworICAg IGNhc2UgJ04nOgorICAgICAgbWFuZ2xlKys7CisgICAgICBpZiAoKm1hbmds ZSA9PSAnZycpIC8qIHdpbGQoVCkgKi8KKwl7CisJICBtYW5nbGUrKzsKKwkg IG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJpbm91dCgiKTsKKwkgIG1h bmdsZSA9IHBhcnNlX3R5cGUgKHRlbXBidWYsIG1hbmdsZSk7CisJICBvYnN0 YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiKSIpOworCSAgcmV0dXJuIG1hbmds ZTsKKwl9CisgICAgICBlbHNlIGlmICgqbWFuZ2xlID09ICdoJykgLyogdmVj dG9yKFQpICovCisJeworCSAgbWFuZ2xlKys7CisJICAvKiBUaGUgYmFzZXR5 cGUgZm9yIHZlY3RvcnMgYXJlIGFsd2F5cyBzdGF0aWMgYXJyYXlzLiAgKi8K KwkgIGlmICgqbWFuZ2xlICE9ICdHJykKKwkgICAgcmV0dXJuIE5VTEw7CisJ ICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiX192ZWN0b3IoIik7CisJ ICBtYW5nbGUgPSBwYXJzZV90eXBlICh0ZW1wYnVmLCBtYW5nbGUpOworCSAg b2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgIikiKTsKKwkgIHJldHVybiBt YW5nbGU7CisJfQorICAgICAgZWxzZQorCXJldHVybiBOVUxMOworICAgIGNh c2UgJ0EnOiAvKiBkeW5hbWljIGFycmF5IChUW10pICovCisgICAgICBtYW5n bGUrKzsKKyAgICAgIG1hbmdsZSA9IHBhcnNlX3R5cGUgKHRlbXBidWYsIG1h bmdsZSk7CisgICAgICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiW10i KTsKKyAgICAgIHJldHVybiBtYW5nbGU7CisgICAgY2FzZSAnRyc6IC8qIHN0 YXRpYyBhcnJheSAoVFtOXSkgKi8KKyAgICB7CisgICAgICBjb25zdCBjaGFy ICpudW1wdHI7CisgICAgICBzaXplX3QgbnVtID0gMDsKKyAgICAgIG1hbmds ZSsrOworCisgICAgICBudW1wdHIgPSBtYW5nbGU7CisgICAgICB3aGlsZSAo SVNESUdJVCAoKm1hbmdsZSkpCisJeworCSAgbnVtKys7CisJICBtYW5nbGUr KzsKKwl9CisgICAgICBtYW5nbGUgPSBwYXJzZV90eXBlICh0ZW1wYnVmLCBt YW5nbGUpOworICAgICAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgIlsi KTsKKyAgICAgIG9ic3RhY2tfZ3JvdyAodGVtcGJ1ZiwgbnVtcHRyLCBudW0p OworICAgICAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgIl0iKTsKKyAg ICAgIHJldHVybiBtYW5nbGU7CisgICAgfQorICAgIGNhc2UgJ0gnOiAvKiBh c3NvY2lhdGl2ZSBhcnJheSAoVFtUXSkgKi8KKyAgICB7CisgICAgICBzdHJ1 Y3Qgb2JzdGFjayBvYnR5cGU7CisgICAgICBjaGFyICp0eXBlOworICAgICAg c2l6ZV90IHN6dHlwZTsKKyAgICAgIG1hbmdsZSsrOworCisgICAgICBvYnN0 YWNrX2luaXQgKCZvYnR5cGUpOworICAgICAgbWFuZ2xlID0gcGFyc2VfdHlw ZSAoJm9idHlwZSwgbWFuZ2xlKTsKKyAgICAgIHN6dHlwZSA9IG9ic3RhY2tf b2JqZWN0X3NpemUgKCZvYnR5cGUpOworICAgICAgdHlwZSA9IG9ic3RhY2tf ZmluaXNoICgmb2J0eXBlKTsKKworICAgICAgbWFuZ2xlID0gcGFyc2VfdHlw ZSAodGVtcGJ1ZiwgbWFuZ2xlKTsKKyAgICAgIG9ic3RhY2tfZ3Jvd19zdHIg KHRlbXBidWYsICJbIik7CisgICAgICBvYnN0YWNrX2dyb3cgKHRlbXBidWYs IHR5cGUsIHN6dHlwZSk7CisgICAgICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1w YnVmLCAiXSIpOworCisgICAgICBvYnN0YWNrX2ZyZWUgKCZvYnR5cGUsIE5V TEwpOworICAgICAgcmV0dXJuIG1hbmdsZTsKKyAgICB9CisgICAgY2FzZSAn UCc6IC8qIHBvaW50ZXIgKFQqKSAqLworICAgICAgbWFuZ2xlKys7CisgICAg ICBtYW5nbGUgPSBwYXJzZV90eXBlICh0ZW1wYnVmLCBtYW5nbGUpOworICAg ICAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgIioiKTsKKyAgICAgIHJl dHVybiBtYW5nbGU7CisgICAgY2FzZSAnSSc6IC8qIGlkZW50IFQgKi8KKyAg ICBjYXNlICdDJzogLyogY2xhc3MgVCAqLworICAgIGNhc2UgJ1MnOiAvKiBz dHJ1Y3QgVCAqLworICAgIGNhc2UgJ0UnOiAvKiBlbnVtIFQgKi8KKyAgICBj YXNlICdUJzogLyogdHlwZWRlZiBUICovCisgICAgICBtYW5nbGUrKzsKKyAg ICAgIHJldHVybiBkX3BhcnNlX3N5bWJvbCAodGVtcGJ1ZiwgbWFuZ2xlKTsK KyAgICBjYXNlICdEJzogLyogZGVsZWdhdGUgVCAqLworICAgICAgbWFuZ2xl Kys7CisgICAgICBtYW5nbGUgPSBwYXJzZV9mdW5jdGlvbl90eXBlICh0ZW1w YnVmLCBtYW5nbGUpOworICAgICAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1 ZiwgImRlbGVnYXRlIik7CisgICAgICByZXR1cm4gbWFuZ2xlOworICAgIGNh c2UgJ0InOiAvKiB0dXBsZSBUICovCisgICAgICAvKiBUT0RPOiBIYW5kbGUg dGhpcy4gICovCisgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIEZ1bmN0 aW9uIHR5cGVzICovCisgICAgY2FzZSAnRic6IGNhc2UgJ1UnOiBjYXNlICdX JzoKKyAgICBjYXNlICdWJzogY2FzZSAnUic6CisgICAgICBtYW5nbGUgPSBw YXJzZV9mdW5jdGlvbl90eXBlICh0ZW1wYnVmLCBtYW5nbGUpOworICAgICAg b2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImZ1bmN0aW9uIik7CisgICAg ICByZXR1cm4gbWFuZ2xlOworCisgICAgLyogQmFzaWMgdHlwZXMgKi8KKyAg ICBjYXNlICduJzoKKyAgICAgIG1hbmdsZSsrOworICAgICAgb2JzdGFja19n cm93X3N0ciAodGVtcGJ1ZiwgIm5vbmUiKTsKKyAgICAgIHJldHVybiBtYW5n bGU7CisgICAgY2FzZSAndic6CisgICAgICBtYW5nbGUrKzsKKyAgICAgIG9i c3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJ2b2lkIik7CisgICAgICByZXR1 cm4gbWFuZ2xlOworICAgIGNhc2UgJ2cnOgorICAgICAgbWFuZ2xlKys7Cisg ICAgICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiYnl0ZSIpOworICAg ICAgcmV0dXJuIG1hbmdsZTsKKyAgICBjYXNlICdoJzoKKyAgICAgIG1hbmds ZSsrOworICAgICAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgInVieXRl Iik7CisgICAgICByZXR1cm4gbWFuZ2xlOworICAgIGNhc2UgJ3MnOgorICAg ICAgbWFuZ2xlKys7CisgICAgICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVm LCAic2hvcnQiKTsKKyAgICAgIHJldHVybiBtYW5nbGU7CisgICAgY2FzZSAn dCc6CisgICAgICBtYW5nbGUrKzsKKyAgICAgIG9ic3RhY2tfZ3Jvd19zdHIg KHRlbXBidWYsICJ1c2hvcnQiKTsKKyAgICAgIHJldHVybiBtYW5nbGU7Cisg ICAgY2FzZSAnaSc6CisgICAgICBtYW5nbGUrKzsKKyAgICAgIG9ic3RhY2tf Z3Jvd19zdHIgKHRlbXBidWYsICJpbnQiKTsKKyAgICAgIHJldHVybiBtYW5n bGU7CisgICAgY2FzZSAnayc6CisgICAgICBtYW5nbGUrKzsKKyAgICAgIG9i c3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJ1aW50Iik7CisgICAgICByZXR1 cm4gbWFuZ2xlOworICAgIGNhc2UgJ2wnOgorICAgICAgbWFuZ2xlKys7Cisg ICAgICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAibG9uZyIpOworICAg ICAgcmV0dXJuIG1hbmdsZTsKKyAgICBjYXNlICdtJzoKKyAgICAgIG1hbmds ZSsrOworICAgICAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgInVsb25n Iik7CisgICAgICByZXR1cm4gbWFuZ2xlOworICAgIGNhc2UgJ2YnOgorICAg ICAgbWFuZ2xlKys7CisgICAgICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVm LCAiZmxvYXQiKTsKKyAgICAgIHJldHVybiBtYW5nbGU7CisgICAgY2FzZSAn ZCc6CisgICAgICBtYW5nbGUrKzsKKyAgICAgIG9ic3RhY2tfZ3Jvd19zdHIg KHRlbXBidWYsICJkb3VibGUiKTsKKyAgICAgIHJldHVybiBtYW5nbGU7Cisg ICAgY2FzZSAnZSc6CisgICAgICBtYW5nbGUrKzsKKyAgICAgIG9ic3RhY2tf Z3Jvd19zdHIgKHRlbXBidWYsICJyZWFsIik7CisgICAgICByZXR1cm4gbWFu Z2xlOworCisgICAgLyogSW1hZ2luYXJ5IGFuZCBDb21wbGV4IHR5cGVzICov CisgICAgY2FzZSAnbyc6CisgICAgICBtYW5nbGUrKzsKKyAgICAgIG9ic3Rh Y2tfZ3Jvd19zdHIgKHRlbXBidWYsICJpZmxvYXQiKTsKKyAgICAgIHJldHVy biBtYW5nbGU7CisgICAgY2FzZSAncCc6CisgICAgICBtYW5nbGUrKzsKKyAg ICAgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJpZG91YmxlIik7Cisg ICAgICByZXR1cm4gbWFuZ2xlOworICAgIGNhc2UgJ2onOgorICAgICAgbWFu Z2xlKys7CisgICAgICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiaXJl YWwiKTsKKyAgICAgIHJldHVybiBtYW5nbGU7CisgICAgY2FzZSAncSc6Cisg ICAgICBtYW5nbGUrKzsKKyAgICAgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBi dWYsICJjZmxvYXQiKTsKKyAgICAgIHJldHVybiBtYW5nbGU7CisgICAgY2Fz ZSAncic6CisgICAgICBtYW5nbGUrKzsKKyAgICAgIG9ic3RhY2tfZ3Jvd19z dHIgKHRlbXBidWYsICJjZG91YmxlIik7CisgICAgICByZXR1cm4gbWFuZ2xl OworICAgIGNhc2UgJ2MnOgorICAgICAgbWFuZ2xlKys7CisgICAgICBvYnN0 YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiY3JlYWwiKTsKKyAgICAgIHJldHVy biBtYW5nbGU7CisKKyAgICAvKiBPdGhlciB0eXBlcyAqLworICAgIGNhc2Ug J2InOgorICAgICAgbWFuZ2xlKys7CisgICAgICBvYnN0YWNrX2dyb3dfc3Ry ICh0ZW1wYnVmLCAiYm9vbCIpOworICAgICAgcmV0dXJuIG1hbmdsZTsKKyAg ICBjYXNlICdhJzoKKyAgICAgIG1hbmdsZSsrOworICAgICAgb2JzdGFja19n cm93X3N0ciAodGVtcGJ1ZiwgImNoYXIiKTsKKyAgICAgIHJldHVybiBtYW5n bGU7CisgICAgY2FzZSAndSc6CisgICAgICBtYW5nbGUrKzsKKyAgICAgIG9i c3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJ3Y2hhciIpOworICAgICAgcmV0 dXJuIG1hbmdsZTsKKyAgICBjYXNlICd3JzoKKyAgICAgIG1hbmdsZSsrOwor ICAgICAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImRjaGFyIik7Cisg ICAgICByZXR1cm4gbWFuZ2xlOworCisgICAgZGVmYXVsdDogLyogdW5oYW5k bGVkICovCisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKKy8qIEV4 dHJhY3QgdGhlIGlkZW50aWZpZXIgZnJvbSBNQU5HTEUgYW5kIGFwcGVuZCBp dCB0byBURU1QQlVGLgorICAgUmV0dXJuIHRoZSByZW1haW5pbmcgc3RyaW5n IG9uIHN1Y2Nlc3Mgb3IgTlVMTCBvbiBmYWlsdXJlLiAgKi8KK3N0YXRpYyBj b25zdCBjaGFyICoKK3BhcnNlX2lkZW50aWZpZXIgKHN0cnVjdCBvYnN0YWNr ICp0ZW1wYnVmLCBjb25zdCBjaGFyICptYW5nbGUpCit7CisgIGlmIChtYW5n bGUgPT0gTlVMTCB8fCAqbWFuZ2xlID09ICdcMCcpCisgICAgcmV0dXJuIG1h bmdsZTsKKworICBpZiAoSVNESUdJVCAoKm1hbmdsZSkpCisgICAgeworICAg ICAgY2hhciAqZW5kcHRyOworICAgICAgbG9uZyBpID0gc3RydG9sIChtYW5n bGUsICZlbmRwdHIsIDEwKTsKKworICAgICAgaWYgKGkgPD0gMCB8fCBzdHJs ZW4gKGVuZHB0cikgPCBpKQorCXJldHVybiBOVUxMOworCisgICAgICBtYW5n bGUgPSBlbmRwdHI7CisKKyAgICAgIC8qIE5vIHN1cHBvcnQgZm9yIGRlbWFu Z2xpbmcgdGVtcGxhdGVzLiAgKi8KKyAgICAgIGlmIChpID49IDUgJiYgc3Ry bmNtcCAobWFuZ2xlLCAiX19UIiwgMykgPT0gMCkKKwlyZXR1cm4gTlVMTDsK KworICAgICAgaWYgKHN0cm5jbXAgKG1hbmdsZSwgIl9fY3RvciIsIGkpID09 IDApCisJeworCSAgLyogQ29uc3RydWN0b3Igc3ltYm9sIGZvciBhIGNsYXNz L3N0cnVjdC4gICovCisJICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAi dGhpcyIpOworCSAgbWFuZ2xlICs9IGk7CisJICByZXR1cm4gbWFuZ2xlOwor CX0KKyAgICAgIGVsc2UgaWYgKHN0cm5jbXAgKG1hbmdsZSwgIl9fZHRvciIs IGkpID09IDApCisJeworCSAgLyogRGVzdHJ1Y3RvciBzeW1ib2wgZm9yIGEg Y2xhc3Mvc3RydWN0LiAgKi8KKwkgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBi dWYsICJ+dGhpcyIpOworCSAgbWFuZ2xlICs9IGk7CisJICByZXR1cm4gbWFu Z2xlOworCX0KKyAgICAgIGVsc2UgaWYgKHN0cm5jbXAgKG1hbmdsZSwgIl9f cG9zdGJsaXQiLCBpKSA9PSAwKQorCXsKKwkgIC8qIFBvc3RibGl0IHN5bWJv bCBmb3IgYSBzdHJ1Y3QuICAqLworCSAgb2JzdGFja19ncm93X3N0ciAodGVt cGJ1ZiwgInRoaXModGhpcykiKTsKKwkgIG1hbmdsZSArPSBpOworCSAgcmV0 dXJuIG1hbmdsZTsKKwl9CisgICAgICBlbHNlIGlmIChzdHJuY21wIChtYW5n bGUsICJfX2luaXRaIiwgaSsxKSA9PSAwKQorCXsKKwkgIC8qIFRoZSBzdGF0 aWMgaW5pdGlhbGlzZXIgZm9yIGEgZ2l2ZW4gc3ltYm9sLiAgKi8KKwkgIG9i c3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJpbml0JCIpOworCSAgbWFuZ2xl ICs9IGkgKyAxOworCSAgcmV0dXJuIG1hbmdsZTsKKwl9CisgICAgICBlbHNl IGlmIChzdHJuY21wIChtYW5nbGUsICJfX0NsYXNzWiIsIGkrMSkgPT0gMCkK Kwl7CisJICAvKiBUaGUgY2xhc3NpbmZvIHN5bWJvbCBmb3IgYSBnaXZlbiBj bGFzcy4gICovCisJICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiY2xh c3NpbmZvJCIpOworCSAgbWFuZ2xlICs9IGkgKyAxOworCSAgcmV0dXJuIG1h bmdsZTsKKwl9CisgICAgICBlbHNlIGlmIChzdHJuY21wIChtYW5nbGUsICJf X3Z0YmxaIiwgaSsxKSA9PSAwKQorCXsKKwkgIC8qIFRoZSB2dGFibGUgc3lt Ym9sIGZvciBhIGdpdmVuIGNsYXNzLiAgKi8KKwkgIG9ic3RhY2tfZ3Jvd19z dHIgKHRlbXBidWYsICJ2dGJsJCIpOworCSAgbWFuZ2xlICs9IGkgKyAxOwor CSAgcmV0dXJuIG1hbmdsZTsKKwl9CisgICAgICBlbHNlIGlmIChzdHJuY21w IChtYW5nbGUsICJfX0ludGVyZmFjZVoiLCBpKzEpID09IDApCisJeworCSAg LyogVGhlIGludGVyZmFjZSBzeW1ib2wgZm9yIGEgZ2l2ZW4gY2xhc3MuICAq LworCSAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImludGVyZmFjZSQi KTsKKwkgIG1hbmdsZSArPSBpICsgMTsKKwkgIHJldHVybiBtYW5nbGU7CisJ fQorICAgICAgZWxzZSBpZiAoc3RybmNtcCAobWFuZ2xlLCAiX19Nb2R1bGVJ bmZvWiIsIGkrMSkgPT0gMCkKKwl7CisJICAvKiBUaGUgTW9kdWxlSW5mbyBz eW1ib2wgZm9yIGEgZ2l2ZW4gbW9kdWxlLiAgKi8KKwkgIG9ic3RhY2tfZ3Jv d19zdHIgKHRlbXBidWYsICJtb2R1bGVpbmZvJCIpOworCSAgbWFuZ2xlICs9 IGkgKyAxOworCSAgcmV0dXJuIG1hbmdsZTsKKwl9CisgICAgICBvYnN0YWNr X2dyb3cgKHRlbXBidWYsIG1hbmdsZSwgaSk7CisgICAgICBtYW5nbGUgKz0g aTsKKyAgICB9CisgIGVsc2UKKyAgICByZXR1cm4gTlVMTDsKKworICByZXR1 cm4gbWFuZ2xlOworfQorCitzdGF0aWMgaW50CitjYWxsX2NvbnZlbnRpb25f cCAoY29uc3QgY2hhciAqbWFuZ2xlKQoreworICBzaXplX3QgaTsKKworICBz d2l0Y2ggKCptYW5nbGUpCisgICAgeworICAgIGNhc2UgJ0YnOiBjYXNlICdV JzogY2FzZSAnVic6CisgICAgY2FzZSAnVyc6IGNhc2UgJ1InOgorICAgICAg cmV0dXJuIDE7CisKKyAgICBjYXNlICdNJzogLyogUHJlZml4IGZvciBmdW5j dGlvbnMgbmVlZGluZyAndGhpcycgKi8KKyAgICAgIGkgPSAxOworICAgICAg aWYgKG1hbmdsZVtpXSA9PSAneCcpCisJaSsrOworCisgICAgICBzd2l0Y2gg KG1hbmdsZVtpXSkKKwl7CisJY2FzZSAnRic6IGNhc2UgJ1UnOiBjYXNlICdW JzoKKwljYXNlICdXJzogY2FzZSAnUic6CisJICByZXR1cm4gMTsKKwl9CisK KyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCisv KiBFeHRyYWN0IGFuZCBkZW1hbmdsZSB0aGUgc3ltYm9sIGluIE1BTkdMRSBh bmQgYXBwZW5kIGl0IHRvIFRFTVBCVUYuCisgICBSZXR1cm4gdGhlIHJlbWFp bmluZyBzaWduYXR1cmUgb24gc3VjY2VzcyBvciBOVUxMIG9uIGZhaWx1cmUu ICAqLworY29uc3QgY2hhciAqCitkX3BhcnNlX3N5bWJvbCAoc3RydWN0IG9i c3RhY2sgKnRlbXBidWYsIGNvbnN0IGNoYXIgKm1hbmdsZSkKK3sKKyAgc2l6 ZV90IG4gPSAwOworICBkbworICAgIHsKKyAgICAgIGlmIChuKyspCisJb2Jz dGFja19ncm93X3N0ciAodGVtcGJ1ZiwgIi4iKTsKKworICAgICAgbWFuZ2xl ID0gcGFyc2VfaWRlbnRpZmllciAodGVtcGJ1ZiwgbWFuZ2xlKTsKKworICAg ICAgaWYgKG1hbmdsZSAmJiBjYWxsX2NvbnZlbnRpb25fcCAobWFuZ2xlKSkK Kwl7CisJICBjaGFyICpzYXZlZDsKKworCSAgLyogU2tpcCBvdmVyICd0aGlz JyBwYXJhbWV0ZXIuICAqLworCSAgaWYgKCptYW5nbGUgPT0gJ00nKQorCSAg ICBtYW5nbGUgKz0gKG1hbmdsZVsxXSA9PSAneCcpID8gMiA6IDE7CisKKwkg IC8qIFNraXAgb3ZlciBjYWxsaW5nIGNvbnZlbnRpb24gYW5kIGF0dHJpYnV0 ZXMgaW4gcXVhbGlmaWVkIG5hbWUuICAqLworCSAgc2F2ZWQgPSBvYnN0YWNr X25leHRfZnJlZSAodGVtcGJ1Zik7CisJICBtYW5nbGUgPSBwYXJzZV9jYWxs X2NvbnZlbnRpb24gKHRlbXBidWYsIG1hbmdsZSk7CisJICBtYW5nbGUgPSBw YXJzZV9hdHRyaWJ1dGVzICh0ZW1wYnVmLCBtYW5nbGUpOworCSAgb2JzdGFj a19uZXh0X2ZyZWUgKHRlbXBidWYpID0gc2F2ZWQ7CisKKwkgIG9ic3RhY2tf Z3Jvd19zdHIgKHRlbXBidWYsICIoIik7CisJICBtYW5nbGUgPSBwYXJzZV9m dW5jdGlvbl9hcmdzICh0ZW1wYnVmLCBtYW5nbGUpOworCSAgb2JzdGFja19n cm93X3N0ciAodGVtcGJ1ZiwgIikiKTsKKworCSAgLyogRGVtYW5nbGUgdGhl IGZ1bmN0aW9uIHJldHVybiB0eXBlIGFzIGEga2luZCBvZiBzYW5pdHkgdGVz dC4gICovCisJICBpZiAobWFuZ2xlICYmICFJU0RJR0lUICgqbWFuZ2xlKSkK KwkgICAgeworCSAgICAgIHNhdmVkID0gb2JzdGFja19uZXh0X2ZyZWUgKHRl bXBidWYpOworCSAgICAgIG1hbmdsZSA9IHBhcnNlX3R5cGUgKHRlbXBidWYs IG1hbmdsZSk7CisJICAgICAgb2JzdGFja19uZXh0X2ZyZWUgKHRlbXBidWYp ID0gc2F2ZWQ7CisJICAgIH0KKwl9CisgICAgfQorICB3aGlsZSAobWFuZ2xl ICYmIElTRElHSVQgKCptYW5nbGUpKTsKKworICByZXR1cm4gbWFuZ2xlOwor fQorCmRpZmYgLS1naXQgYS9nZGIvc3ltdGFiLmMgYi9nZGIvc3ltdGFiLmMK aW5kZXggZjIxNTU4Ni4uNGJmZmYwYSAxMDA2NDQKLS0tIGEvZ2RiL3N5bXRh Yi5jCisrKyBiL2dkYi9zeW10YWIuYwpAQCAtNTA1NSw2ICs1MDU1LDEzIEBA IGZpbmRfbWFpbl9uYW1lICh2b2lkKQogICAgICAgcmV0dXJuOwogICAgIH0K IAorICBuZXdfbWFpbl9uYW1lID0gZF9tYWluX25hbWUgKCk7CisgIGlmIChu ZXdfbWFpbl9uYW1lICE9IE5VTEwpCisgICAgeworICAgICAgc2V0X21haW5f bmFtZSAobmV3X21haW5fbmFtZSk7CisgICAgICByZXR1cm47CisgICAgfQor CiAgIG5ld19tYWluX25hbWUgPSBnb19tYWluX25hbWUgKCk7CiAgIGlmIChu ZXdfbWFpbl9uYW1lICE9IE5VTEwpCiAgICAgewpkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9DaGFuZ2VMb2cgYi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxv ZwppbmRleCA2NjJkMTYxLi41NGFmMTQ1IDEwMDY0NAotLS0gYS9nZGIvdGVz dHN1aXRlL0NoYW5nZUxvZworKysgYi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxv ZwpAQCAtMSwzICsxLDEzIEBACisyMDE0LTAxLTAzICBJYWluIEJ1Y2xhdyAg PGlidWNsYXdAZ2RjcHJvamVjdC5vcmc+CisKKwkqIGNvbmZpZ3VyZS5hYzog Q3JlYXRlIGdkYi5kbGFuZy9NYWtlZmlsZS4KKwkqIGNvbmZpZ3VyZTogUmVn ZW5lcmF0ZS4KKwkqIE1ha2VmaWxlLmluIChBTExfU1VCRElSUyk6IEFkZCBn ZGIuZGxhbmcuCisJKiBnZGIuZGxhbmcvTWFrZWZpbGUuaW46IE5ldyBmaWxl LgorCSogZ2RiLmRsYW5nL2RlbWFuZ2xlLmV4cDogTmV3IGZpbGUuCisJKiBs aWIvZ2RiLmV4cCAoc2tpcF9kX3Rlc3RzKTogTmV3IHByb2MuCisJKiBsaWIv ZC1zdXBwb3J0LmV4cDogTmV3IGZpbGUuCisKIDIwMTMtMTItMTkgIFNlcmdp byBEdXJpZ2FuIEp1bmlvciAgPHNlcmdpb2RqQHJlZGhhdC5jb20+CiAKIAlQ UiBicmVha3BvaW50cy8xNjI5NwpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9NYWtlZmlsZS5pbiBiL2dkYi90ZXN0c3VpdGUvTWFrZWZpbGUuaW4KaW5k ZXggMjIwNGEzYy4uN2E0NDY2MCAxMDA2NDQKLS0tIGEvZ2RiL3Rlc3RzdWl0 ZS9NYWtlZmlsZS5pbgorKysgYi9nZGIvdGVzdHN1aXRlL01ha2VmaWxlLmlu CkBAIC0zMyw3ICszMyw3IEBAIEVYRUVYVCA9IEBFWEVFWFRACiBTVUJESVJT ID0gQHN1YmRpcnNACiBSUEFUSF9FTlZWQVIgPSBAUlBBVEhfRU5WVkFSQAog QUxMX1NVQkRJUlMgPSBnZGIuYWRhIGdkYi5hcmNoIGdkYi5hc20gZ2RiLmJh c2UgZ2RiLmJ0cmFjZSBnZGIuY2VsbCBnZGIuY3AgXAotCWdkYi5kaXNhc20g Z2RiLmR3YXJmMiBnZGIuZm9ydHJhbiBnZGIuZ2RiIGdkYi5nbyBnZGIuaHAg XAorCWdkYi5kaXNhc20gZ2RiLmRsYW5nIGdkYi5kd2FyZjIgZ2RiLmZvcnRy YW4gZ2RiLmdkYiBnZGIuZ28gZ2RiLmhwIFwKIAlnZGIuamF2YSBnZGIubGlu ZXNwZWMgZ2RiLm1pIGdkYi5tb2R1bGEyIGdkYi5tdWx0aSBcCiAJZ2RiLm9i amMgZ2RiLm9wZW5jbCBnZGIub3B0IGdkYi5wYXNjYWwgZ2RiLnB5dGhvbiBn ZGIuc2VydmVyIFwKIAlnZGIuc3RhYnMgZ2RiLnJldmVyc2UgZ2RiLnRocmVh ZHMgZ2RiLnRyYWNlIGdkYi54bWwgXApkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9jb25maWd1cmUgYi9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZQppbmRl eCBkYTU5MGYzLi45NDU0MmE2IDEwMDc1NQotLS0gYS9nZGIvdGVzdHN1aXRl L2NvbmZpZ3VyZQorKysgYi9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZQpAQCAt MzQ0OCw3ICszNDQ4LDcgQEAgZG9uZQogCiAKIAotYWNfY29uZmlnX2ZpbGVz PSIkYWNfY29uZmlnX2ZpbGVzIE1ha2VmaWxlIGdkYi5hZGEvTWFrZWZpbGUg Z2RiLmFyY2gvTWFrZWZpbGUgZ2RiLmFzbS9NYWtlZmlsZSBnZGIuYmFzZS9N YWtlZmlsZSBnZGIuYnRyYWNlL01ha2VmaWxlIGdkYi5jZWxsL01ha2VmaWxl IGdkYi5jcC9NYWtlZmlsZSBnZGIuZGlzYXNtL01ha2VmaWxlIGdkYi5kd2Fy ZjIvTWFrZWZpbGUgZ2RiLmZvcnRyYW4vTWFrZWZpbGUgZ2RiLmdvL01ha2Vm aWxlIGdkYi5zZXJ2ZXIvTWFrZWZpbGUgZ2RiLmphdmEvTWFrZWZpbGUgZ2Ri LmhwL01ha2VmaWxlIGdkYi5ocC9nZGIub2JqZGJnL01ha2VmaWxlIGdkYi5o cC9nZGIuYmFzZS1ocC9NYWtlZmlsZSBnZGIuaHAvZ2RiLmFDQy9NYWtlZmls ZSBnZGIuaHAvZ2RiLmNvbXBhdC9NYWtlZmlsZSBnZGIuaHAvZ2RiLmRlZmVj dHMvTWFrZWZpbGUgZ2RiLmxpbmVzcGVjL01ha2VmaWxlIGdkYi5taS9NYWtl ZmlsZSBnZGIubW9kdWxhMi9NYWtlZmlsZSBnZGIubXVsdGkvTWFrZWZpbGUg Z2RiLm9iamMvTWFrZWZpbGUgZ2RiLm9wZW5jbC9NYWtlZmlsZSBnZGIub3B0 L01ha2VmaWxlIGdkYi5wYXNjYWwvTWFrZWZpbGUgZ2RiLnBlcmYvTWFrZWZp bGUgZ2RiLnB5dGhvbi9NYWtlZmlsZSBnZGIucmV2ZXJzZS9NYWtlZmlsZSBn ZGIuc3RhYnMvTWFrZWZpbGUgZ2RiLnRocmVhZHMvTWFrZWZpbGUgZ2RiLnRy YWNlL01ha2VmaWxlIGdkYi54bWwvTWFrZWZpbGUiCithY19jb25maWdfZmls ZXM9IiRhY19jb25maWdfZmlsZXMgTWFrZWZpbGUgZ2RiLmFkYS9NYWtlZmls ZSBnZGIuYXJjaC9NYWtlZmlsZSBnZGIuYXNtL01ha2VmaWxlIGdkYi5iYXNl L01ha2VmaWxlIGdkYi5idHJhY2UvTWFrZWZpbGUgZ2RiLmNlbGwvTWFrZWZp bGUgZ2RiLmNwL01ha2VmaWxlIGdkYi5kaXNhc20vTWFrZWZpbGUgZ2RiLmR3 YXJmMi9NYWtlZmlsZSBnZGIuZGxhbmcvTWFrZWZpbGUgZ2RiLmZvcnRyYW4v TWFrZWZpbGUgZ2RiLmdvL01ha2VmaWxlIGdkYi5zZXJ2ZXIvTWFrZWZpbGUg Z2RiLmphdmEvTWFrZWZpbGUgZ2RiLmhwL01ha2VmaWxlIGdkYi5ocC9nZGIu b2JqZGJnL01ha2VmaWxlIGdkYi5ocC9nZGIuYmFzZS1ocC9NYWtlZmlsZSBn ZGIuaHAvZ2RiLmFDQy9NYWtlZmlsZSBnZGIuaHAvZ2RiLmNvbXBhdC9NYWtl ZmlsZSBnZGIuaHAvZ2RiLmRlZmVjdHMvTWFrZWZpbGUgZ2RiLmxpbmVzcGVj L01ha2VmaWxlIGdkYi5taS9NYWtlZmlsZSBnZGIubW9kdWxhMi9NYWtlZmls ZSBnZGIubXVsdGkvTWFrZWZpbGUgZ2RiLm9iamMvTWFrZWZpbGUgZ2RiLm9w ZW5jbC9NYWtlZmlsZSBnZGIub3B0L01ha2VmaWxlIGdkYi5wYXNjYWwvTWFr ZWZpbGUgZ2RiLnBlcmYvTWFrZWZpbGUgZ2RiLnB5dGhvbi9NYWtlZmlsZSBn ZGIucmV2ZXJzZS9NYWtlZmlsZSBnZGIuc3RhYnMvTWFrZWZpbGUgZ2RiLnRo cmVhZHMvTWFrZWZpbGUgZ2RiLnRyYWNlL01ha2VmaWxlIGdkYi54bWwvTWFr ZWZpbGUiCiAKIGNhdCA+Y29uZmNhY2hlIDw8XF9BQ0VPRgogIyBUaGlzIGZp bGUgaXMgYSBzaGVsbCBzY3JpcHQgdGhhdCBjYWNoZXMgdGhlIHJlc3VsdHMg b2YgY29uZmlndXJlCkBAIC00MTU4LDYgKzQxNTgsNyBAQCBkbwogICAgICJn ZGIuY3AvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMg Z2RiLmNwL01ha2VmaWxlIiA7OwogICAgICJnZGIuZGlzYXNtL01ha2VmaWxl IikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdkYi5kaXNhc20vTWFr ZWZpbGUiIDs7CiAgICAgImdkYi5kd2FyZjIvTWFrZWZpbGUiKSBDT05GSUdf RklMRVM9IiRDT05GSUdfRklMRVMgZ2RiLmR3YXJmMi9NYWtlZmlsZSIgOzsK KyAgICAiZ2RiLmRsYW5nL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09O RklHX0ZJTEVTIGdkYi5kbGFuZy9NYWtlZmlsZSIgOzsKICAgICAiZ2RiLmZv cnRyYW4vTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMg Z2RiLmZvcnRyYW4vTWFrZWZpbGUiIDs7CiAgICAgImdkYi5nby9NYWtlZmls ZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnZGIuZ28vTWFrZWZp bGUiIDs7CiAgICAgImdkYi5zZXJ2ZXIvTWFrZWZpbGUiKSBDT05GSUdfRklM RVM9IiRDT05GSUdfRklMRVMgZ2RiLnNlcnZlci9NYWtlZmlsZSIgOzsKZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvY29uZmlndXJlLmFjIGIvZ2RiL3Rl c3RzdWl0ZS9jb25maWd1cmUuYWMKaW5kZXggZjI1YjkzOS4uNjFkMGJmZiAx MDA2NDQKLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUuYWMKKysrIGIv Z2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUuYWMKQEAgLTkxLDcgKzkxLDggQEAg QUNfT1VUUFVUKFtNYWtlZmlsZSBcCiAgIGdkYi5hZGEvTWFrZWZpbGUgXAog ICBnZGIuYXJjaC9NYWtlZmlsZSBnZGIuYXNtL01ha2VmaWxlIGdkYi5iYXNl L01ha2VmaWxlIGdkYi5idHJhY2UvTWFrZWZpbGUgXAogICBnZGIuY2VsbC9N YWtlZmlsZSBnZGIuY3AvTWFrZWZpbGUgZ2RiLmRpc2FzbS9NYWtlZmlsZSBn ZGIuZHdhcmYyL01ha2VmaWxlIFwKLSAgZ2RiLmZvcnRyYW4vTWFrZWZpbGUg Z2RiLmdvL01ha2VmaWxlIGdkYi5zZXJ2ZXIvTWFrZWZpbGUgZ2RiLmphdmEv TWFrZWZpbGUgXAorICBnZGIuZGxhbmcvTWFrZWZpbGUgZ2RiLmZvcnRyYW4v TWFrZWZpbGUgZ2RiLmdvL01ha2VmaWxlIFwKKyAgZ2RiLnNlcnZlci9NYWtl ZmlsZSBnZGIuamF2YS9NYWtlZmlsZSBcCiAgIGdkYi5ocC9NYWtlZmlsZSBn ZGIuaHAvZ2RiLm9iamRiZy9NYWtlZmlsZSBnZGIuaHAvZ2RiLmJhc2UtaHAv TWFrZWZpbGUgXAogICBnZGIuaHAvZ2RiLmFDQy9NYWtlZmlsZSBnZGIuaHAv Z2RiLmNvbXBhdC9NYWtlZmlsZSBcCiAgIGdkYi5ocC9nZGIuZGVmZWN0cy9N YWtlZmlsZSBnZGIubGluZXNwZWMvTWFrZWZpbGUgXApkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZGxhbmcvTWFrZWZpbGUuaW4gYi9nZGIvdGVz dHN1aXRlL2dkYi5kbGFuZy9NYWtlZmlsZS5pbgpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi41NTI3YzNlCi0tLSAvZGV2L251bGwKKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZGxhbmcvTWFrZWZpbGUuaW4KQEAgLTAs MCArMSwxNSBAQAorVlBBVEggPSBAc3JjZGlyQAorc3JjZGlyID0gQHNyY2Rp ckAKKworRVhFQ1VUQUJMRVMgPQorCithbGwgaW5mbyBpbnN0YWxsLWluZm8g ZHZpIGluc3RhbGwgdW5pbnN0YWxsIGluc3RhbGxjaGVjayBjaGVjazoKKwlA ZWNobyAiTm90aGluZyB0byBiZSBkb25lIGZvciAkQC4uLiIKKworY2xlYW4g bW9zdGx5Y2xlYW46CisJLXJtIC1mICp+ICoubyAqLmNpCisJLXJtIC1mICou ZHdvICouZHdwCisJLXJtIC1mIGNvcmUgJHtFWEVDVVRBQkxFU30KKworZGlz dGNsZWFuIG1haW50YWluZXItY2xlYW4gcmVhbGNsZWFuOiBjbGVhbgorCS1y bSAtZiBNYWtlZmlsZSBjb25maWcuc3RhdHVzIGNvbmZpZy5sb2cgZ2RiLmxv ZyBnZGIuc3VtCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kbGFu Zy9kZW1hbmdsZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5kbGFuZy9kZW1h bmdsZS5leHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u YjM4ZmNiZAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmRsYW5nL2RlbWFuZ2xlLmV4cApAQCAtMCwwICsxLDIyNyBAQAorIyBDb3B5 cmlnaHQgKEMpIDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCisKKyMgVGVzdCBEIGRlbWFuZ2xpbmcuCisj IFRoZSB0ZXN0cyBoZXJlIGludGVudGlvbmFsbHkgZG8gbm90IHJlcXVpcmUg YSBEIGNvbXBpbGVyLgorCitsb2FkX2xpYiAiZC1zdXBwb3J0LmV4cCIKKwor aWYgeyBbc2tpcF9kX3Rlc3RzXSB9IHsgY29udGludWUgfQorCisjIyMgVXRp bGl0eSBmdW5jdGlvbiBmb3IgdGVzdF9kZW1hbmdsaW5nIGFuZCB0ZXN0X2Rl bWFuZ2xpbmdfZXhhY3QuCitwcm9jIHRlc3RfZGVtYW5nbGluZyB7dGVzdCBy ZXN1bHR9IHsKKyAgICBnZGJfdGVzdF9leGFjdCAibWFpbnRlbmFuY2UgZGVt YW5nbGUgJHRlc3QiICRyZXN1bHQgJHRlc3QKK30KKworIworIyAgVGVzdCBE IGRlbWFuZ2xlcgorIworCitwcm9jIHRlc3RfZF9kZW1hbmdsaW5nIHt9IHsK KyAgICBnbG9iYWwgZ2RiX3Byb21wdAorCisgICAgdGVzdF9kZW1hbmdsaW5n ICJfRG1haW4iICJEIG1haW4iCisKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9E OGRlbWFuZ2xlNHRlc3RGYVp2IiAiZGVtYW5nbGUudGVzdChjaGFyKSIKKyAg ICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGYlp2IiAiZGVt YW5nbGUudGVzdChib29sKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRl bWFuZ2xlNHRlc3RGY1p2IiAiZGVtYW5nbGUudGVzdChjcmVhbCkiCisgICAg dGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RmRadiIgImRlbWFu Z2xlLnRlc3QoZG91YmxlKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRl bWFuZ2xlNHRlc3RGZVp2IiAiZGVtYW5nbGUudGVzdChyZWFsKSIKKyAgICB0 ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGZlp2IiAiZGVtYW5n bGUudGVzdChmbG9hdCkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1h bmdsZTR0ZXN0RmdadiIgImRlbWFuZ2xlLnRlc3QoYnl0ZSkiCisgICAgdGVz dF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RmhadiIgImRlbWFuZ2xl LnRlc3QodWJ5dGUpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5n bGU0dGVzdEZpWnYiICJkZW1hbmdsZS50ZXN0KGludCkiCisgICAgdGVzdF9k ZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RmpadiIgImRlbWFuZ2xlLnRl c3QoaXJlYWwpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0 dGVzdEZrWnYiICJkZW1hbmdsZS50ZXN0KHVpbnQpIgorICAgIHRlc3RfZGVt YW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZsWnYiICJkZW1hbmdsZS50ZXN0 KGxvbmcpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVz dEZtWnYiICJkZW1hbmdsZS50ZXN0KHVsb25nKSIKKyAgICB0ZXN0X2RlbWFu Z2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGblp2IiAiZGVtYW5nbGUudGVzdChu b25lKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RG b1p2IiAiZGVtYW5nbGUudGVzdChpZmxvYXQpIgorICAgIHRlc3RfZGVtYW5n bGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZwWnYiICJkZW1hbmdsZS50ZXN0KGlk b3VibGUpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVz dEZxWnYiICJkZW1hbmdsZS50ZXN0KGNmbG9hdCkiCisgICAgdGVzdF9kZW1h bmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RnJadiIgImRlbWFuZ2xlLnRlc3Qo Y2RvdWJsZSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0 ZXN0RnNadiIgImRlbWFuZ2xlLnRlc3Qoc2hvcnQpIgorICAgIHRlc3RfZGVt YW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZ0WnYiICJkZW1hbmdsZS50ZXN0 KHVzaG9ydCkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0 ZXN0RnVadiIgImRlbWFuZ2xlLnRlc3Qod2NoYXIpIgorICAgIHRlc3RfZGVt YW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZ2WnYiICJkZW1hbmdsZS50ZXN0 KHZvaWQpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVz dEZ3WnYiICJkZW1hbmdsZS50ZXN0KGRjaGFyKSIKKworICAgIHRlc3RfZGVt YW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZPYVp2IiAiZGVtYW5nbGUudGVz dChzaGFyZWQoY2hhcikpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVt YW5nbGU0dGVzdEZ4YVp2IiAiZGVtYW5nbGUudGVzdChjb25zdChjaGFyKSki CisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RnlhWnYi ICJkZW1hbmdsZS50ZXN0KGltbXV0YWJsZShjaGFyKSkiCisgICAgdGVzdF9k ZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0Rk5nYVp2IiAiZGVtYW5nbGUu dGVzdChpbm91dChjaGFyKSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhk ZW1hbmdsZTR0ZXN0Rk94YVp2IiAiZGVtYW5nbGUudGVzdChzaGFyZWQoY29u c3QoY2hhcikpKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xl NHRlc3RGT05nYVp2IiAiZGVtYW5nbGUudGVzdChzaGFyZWQoaW5vdXQoY2hh cikpKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RG QWFadiIgImRlbWFuZ2xlLnRlc3QoY2hhclxbXF0pIgorICAgIHRlc3RfZGVt YW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZBQWFadiIgImRlbWFuZ2xlLnRl c3QoY2hhclxbXF1cW1xdKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRl bWFuZ2xlNHRlc3RGQUFBYVp2IiAiZGVtYW5nbGUudGVzdChjaGFyXFtcXVxb XF1cW1xdKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRl c3RGRzQyYVp2IiAiZGVtYW5nbGUudGVzdChjaGFyXFs0MlxdKSIKKyAgICB0 ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGRzQyRzQyYVp2IiAi ZGVtYW5nbGUudGVzdChjaGFyXFs0MlxdXFs0MlxdKSIKKyAgICB0ZXN0X2Rl bWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGRzQyRzQyRzQyYVp2IiAiZGVt YW5nbGUudGVzdChjaGFyXFs0MlxdXFs0MlxdXFs0MlxdKSIKKyAgICB0ZXN0 X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGRzEyMzQ1Njc4OTBhWnYi ICJkZW1hbmdsZS50ZXN0KGNoYXJcWzEyMzQ1Njc4OTBcXSkiCisgICAgdGVz dF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RkhhYVp2IiAiZGVtYW5n bGUudGVzdChjaGFyXFtjaGFyXF0pIgorICAgIHRlc3RfZGVtYW5nbGluZyAi X0Q4ZGVtYW5nbGU0dGVzdEZISGFhYVp2IiAiZGVtYW5nbGUudGVzdChjaGFy XFtjaGFyXFtjaGFyXF1cXSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhk ZW1hbmdsZTR0ZXN0RlBhWnYiICJkZW1hbmdsZS50ZXN0KGNoYXIqKSIKKyAg ICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGUFBhWnYiICJk ZW1hbmdsZS50ZXN0KGNoYXIqKikiCisgICAgdGVzdF9kZW1hbmdsaW5nICJf RDhkZW1hbmdsZTR0ZXN0RlBQUGFadiIgImRlbWFuZ2xlLnRlc3QoY2hhcioq KikiCisKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RG TmhHOGdadiIgImRlbWFuZ2xlLnRlc3QoX192ZWN0b3IoYnl0ZVxbOFxdKSki CisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0Rk5oRzE2 Z1p2IiAiZGVtYW5nbGUudGVzdChfX3ZlY3RvcihieXRlXFsxNlxdKSkiCisg ICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0Rk5oRzMyZ1p2 IiAiZGVtYW5nbGUudGVzdChfX3ZlY3RvcihieXRlXFszMlxdKSkiCisgICAg dGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0Rk5oRzRzWnYiICJk ZW1hbmdsZS50ZXN0KF9fdmVjdG9yKHNob3J0XFs0XF0pKSIKKyAgICB0ZXN0 X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGTmhHOHNadiIgImRlbWFu Z2xlLnRlc3QoX192ZWN0b3Ioc2hvcnRcWzhcXSkpIgorICAgIHRlc3RfZGVt YW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZOaEcxNnNadiIgImRlbWFuZ2xl LnRlc3QoX192ZWN0b3Ioc2hvcnRcWzE2XF0pKSIKKyAgICB0ZXN0X2RlbWFu Z2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGTmhHMmladiIgImRlbWFuZ2xlLnRl c3QoX192ZWN0b3IoaW50XFsyXF0pKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcg Il9EOGRlbWFuZ2xlNHRlc3RGTmhHNGladiIgImRlbWFuZ2xlLnRlc3QoX192 ZWN0b3IoaW50XFs0XF0pKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRl bWFuZ2xlNHRlc3RGTmhHOGladiIgImRlbWFuZ2xlLnRlc3QoX192ZWN0b3Io aW50XFs4XF0pKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xl NHRlc3RGTmhHMWxadiIgImRlbWFuZ2xlLnRlc3QoX192ZWN0b3IobG9uZ1xb MVxdKSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0 Rk5oRzJsWnYiICJkZW1hbmdsZS50ZXN0KF9fdmVjdG9yKGxvbmdcWzJcXSkp IgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZOaEc0 bFp2IiAiZGVtYW5nbGUudGVzdChfX3ZlY3Rvcihsb25nXFs0XF0pKSIKKyAg ICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGTmhHMmZadiIg ImRlbWFuZ2xlLnRlc3QoX192ZWN0b3IoZmxvYXRcWzJcXSkpIgorICAgIHRl c3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZOaEc0Zlp2IiAiZGVt YW5nbGUudGVzdChfX3ZlY3RvcihmbG9hdFxbNFxdKSkiCisgICAgdGVzdF9k ZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0Rk5oRzhmWnYiICJkZW1hbmds ZS50ZXN0KF9fdmVjdG9yKGZsb2F0XFs4XF0pKSIKKyAgICB0ZXN0X2RlbWFu Z2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGTmhHMWRadiIgImRlbWFuZ2xlLnRl c3QoX192ZWN0b3IoZG91YmxlXFsxXF0pKSIKKyAgICB0ZXN0X2RlbWFuZ2xp bmcgIl9EOGRlbWFuZ2xlNHRlc3RGTmhHMmRadiIgImRlbWFuZ2xlLnRlc3Qo X192ZWN0b3IoZG91YmxlXFsyXF0pKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcg Il9EOGRlbWFuZ2xlNHRlc3RGTmhHNGRadiIgImRlbWFuZ2xlLnRlc3QoX192 ZWN0b3IoZG91YmxlXFs0XF0pKSIKKworICAgIHRlc3RfZGVtYW5nbGluZyAi X0Q4ZGVtYW5nbGU0dGVzdEZJNWlkZW50WnYiICJkZW1hbmdsZS50ZXN0KGlk ZW50KSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RG STVpZGVudDR0ZXN0WnYiICJkZW1hbmdsZS50ZXN0KGlkZW50LnRlc3QpIgor ICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZDNWNsYXNz WnYiICJkZW1hbmdsZS50ZXN0KGNsYXNzKSIKKyAgICB0ZXN0X2RlbWFuZ2xp bmcgIl9EOGRlbWFuZ2xlNHRlc3RGQzVjbGFzczR0ZXN0WnYiICJkZW1hbmds ZS50ZXN0KGNsYXNzLnRlc3QpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4 ZGVtYW5nbGU0dGVzdEZTNnN0cnVjdFp2IiAiZGVtYW5nbGUudGVzdChzdHJ1 Y3QpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZT NnN0cnVjdDR0ZXN0WnYiICJkZW1hbmdsZS50ZXN0KHN0cnVjdC50ZXN0KSIK KyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGRTRlbnVt WnYiICJkZW1hbmdsZS50ZXN0KGVudW0pIgorICAgIHRlc3RfZGVtYW5nbGlu ZyAiX0Q4ZGVtYW5nbGU0dGVzdEZFNGVudW00dGVzdFp2IiAiZGVtYW5nbGUu dGVzdChlbnVtLnRlc3QpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVt YW5nbGU0dGVzdEZUN3R5cGVkZWZadiIgImRlbWFuZ2xlLnRlc3QodHlwZWRl ZikiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RlQ3 dHlwZWRlZjR0ZXN0WnYiICJkZW1hbmdsZS50ZXN0KHR5cGVkZWYudGVzdCki CisKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGSmFa diIgImRlbWFuZ2xlLnRlc3Qob3V0IGNoYXIpIgorICAgIHRlc3RfZGVtYW5n bGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZLYVp2IiAiZGVtYW5nbGUudGVzdChy ZWYgY2hhcikiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0 ZXN0RkxhWnYiICJkZW1hbmdsZS50ZXN0KGxhenkgY2hhcikiCisgICAgdGVz dF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0Rk1hWnYiICJkZW1hbmds ZS50ZXN0KHNjb3BlIGNoYXIpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4 ZGVtYW5nbGU0dGVzdEZhWHYiICJkZW1hbmdsZS50ZXN0KGNoYXIuLi4pIgor ICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZhWXYiICJk ZW1hbmdsZS50ZXN0KGNoYXIsIC4uLikiCisgICAgdGVzdF9kZW1hbmdsaW5n ICJfRDhkZW1hbmdsZTR0ZXN0RmFhWXYiICJkZW1hbmdsZS50ZXN0KGNoYXIs IGNoYXIsIC4uLikiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmds ZTR0ZXN0RmFhWnYiICJkZW1hbmdsZS50ZXN0KGNoYXIsIGNoYXIpIgorCisg ICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RkRGWmFadiIg ImRlbWFuZ2xlLnRlc3QoY2hhcigpIGRlbGVnYXRlKSIKKyAgICB0ZXN0X2Rl bWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGRFVaYVp2IiAiZGVtYW5nbGUu dGVzdChleHRlcm4oQykgY2hhcigpIGRlbGVnYXRlKSIKKyAgICB0ZXN0X2Rl bWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGRFdaYVp2IiAiZGVtYW5nbGUu dGVzdChleHRlcm4oV2luZG93cykgY2hhcigpIGRlbGVnYXRlKSIKKyAgICB0 ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGRFZaYVp2IiAiZGVt YW5nbGUudGVzdChleHRlcm4oUGFzY2FsKSBjaGFyKCkgZGVsZWdhdGUpIgor ICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZEUlphWnYi ICJkZW1hbmdsZS50ZXN0KGV4dGVybihDKyspIGNoYXIoKSBkZWxlZ2F0ZSki CisKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGRlph WnYiICJkZW1hbmdsZS50ZXN0KGNoYXIoKSBmdW5jdGlvbikiCisgICAgdGVz dF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RlVaYVp2IiAiZGVtYW5n bGUudGVzdChleHRlcm4oQykgY2hhcigpIGZ1bmN0aW9uKSIKKyAgICB0ZXN0 X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGV1phWnYiICJkZW1hbmds ZS50ZXN0KGV4dGVybihXaW5kb3dzKSBjaGFyKCkgZnVuY3Rpb24pIgorICAg IHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZWWmFadiIgImRl bWFuZ2xlLnRlc3QoZXh0ZXJuKFBhc2NhbCkgY2hhcigpIGZ1bmN0aW9uKSIK KyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGUlphWnYi ICJkZW1hbmdsZS50ZXN0KGV4dGVybihDKyspIGNoYXIoKSBmdW5jdGlvbiki CisKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGREZO YVphWnYiICJkZW1hbmdsZS50ZXN0KGNoYXIoKSBwdXJlIGRlbGVnYXRlKSIK KyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGREZOYlph WnYiICJkZW1hbmdsZS50ZXN0KGNoYXIoKSBub3Rocm93IGRlbGVnYXRlKSIK KyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGREZOY1ph WnYiICJkZW1hbmdsZS50ZXN0KGNoYXIoKSByZWYgZGVsZWdhdGUpIgorICAg IHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZERk5kWmFadiIg ImRlbWFuZ2xlLnRlc3QoY2hhcigpIEBwcm9wZXJ0eSBkZWxlZ2F0ZSkiCisg ICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RkRGTmVaYVp2 IiAiZGVtYW5nbGUudGVzdChjaGFyKCkgQHRydXN0ZWQgZGVsZWdhdGUpIgor ICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZERk5mWmFa diIgImRlbWFuZ2xlLnRlc3QoY2hhcigpIEBzYWZlIGRlbGVnYXRlKSIKKwor ICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZGTmFaYVp2 IiAiZGVtYW5nbGUudGVzdChjaGFyKCkgcHVyZSBmdW5jdGlvbikiCisgICAg dGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RkZOYlphWnYiICJk ZW1hbmdsZS50ZXN0KGNoYXIoKSBub3Rocm93IGZ1bmN0aW9uKSIKKyAgICB0 ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGRk5jWmFadiIgImRl bWFuZ2xlLnRlc3QoY2hhcigpIHJlZiBmdW5jdGlvbikiCisgICAgdGVzdF9k ZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RkZOZFphWnYiICJkZW1hbmds ZS50ZXN0KGNoYXIoKSBAcHJvcGVydHkgZnVuY3Rpb24pIgorICAgIHRlc3Rf ZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZGTmVaYVp2IiAiZGVtYW5n bGUudGVzdChjaGFyKCkgQHRydXN0ZWQgZnVuY3Rpb24pIgorICAgIHRlc3Rf ZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZGTmZaYVp2IiAiZGVtYW5n bGUudGVzdChjaGFyKCkgQHNhZmUgZnVuY3Rpb24pIgorICAgIHRlc3RfZGVt YW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZGTmFOYlphWnYiICJkZW1hbmds ZS50ZXN0KGNoYXIoKSBwdXJlIG5vdGhyb3cgZnVuY3Rpb24pIgorICAgIHRl c3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZGTmJOYVphWnYiICJk ZW1hbmdsZS50ZXN0KGNoYXIoKSBub3Rocm93IHB1cmUgZnVuY3Rpb24pIgor ICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZGTmROZk5h WmFadiIgImRlbWFuZ2xlLnRlc3QoY2hhcigpIEBwcm9wZXJ0eSBAc2FmZSBw dXJlIGZ1bmN0aW9uKSIKKworICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVt YW5nbGU0dGVzdDZfX3Z0YmxaIiAiZGVtYW5nbGUudGVzdC52dGJsJCIKKyAg ICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3Q2X19pbml0WiIg ImRlbWFuZ2xlLnRlc3QuaW5pdCQiCisgICAgdGVzdF9kZW1hbmdsaW5nICJf RDhkZW1hbmdsZTR0ZXN0MTJfX01vZHVsZUluZm9aIiAiZGVtYW5nbGUudGVz dC5tb2R1bGVpbmZvJCIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFu Z2xlNHRlc3Q3X19DbGFzc1oiICJkZW1hbmdsZS50ZXN0LmNsYXNzaW5mbyQi CisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0MTFfX0lu dGVyZmFjZVoiICJkZW1hbmdsZS50ZXN0LmludGVyZmFjZSQiCisKKyAgICB0 ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3Q2X19jdG9yTUZadiIg ImRlbWFuZ2xlLnRlc3QudGhpcygpIgorICAgIHRlc3RfZGVtYW5nbGluZyAi X0Q4ZGVtYW5nbGU0dGVzdDZfX2R0b3JNRlp2IiAiZGVtYW5nbGUudGVzdC5+ dGhpcygpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVz dDZfX3Bvc3RibGl0TUZadiIgImRlbWFuZ2xlLnRlc3QudGhpcyh0aGlzKSIK KworICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZIQWJh WnYiICJkZW1hbmdsZS50ZXN0KGNoYXJcW2Jvb2xcW1xdXF0pIgorICAgIHRl c3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZIRzQyY2FadiIgImRl bWFuZ2xlLnRlc3QoY2hhclxbY3JlYWxcWzQyXF1cXSkiCisgICAgdGVzdF9k ZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RkFpWHYiICJkZW1hbmdsZS50 ZXN0KGludFxbXF0uLi4pIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVt YW5nbGU0dGVzdEZMQWlYdiIgImRlbWFuZ2xlLnRlc3QobGF6eSBpbnRcW1xd Li4uKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RG QWlZdiIgImRlbWFuZ2xlLnRlc3QoaW50XFtcXSwgLi4uKSIKKyAgICB0ZXN0 X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGTEFpWXYiICJkZW1hbmds ZS50ZXN0KGxhenkgaW50XFtcXSwgLi4uKSIKKyAgICB0ZXN0X2RlbWFuZ2xp bmcgIl9EOGRlbWFuZ2xlNHRlc3RGTGlsWnYiICJkZW1hbmdsZS50ZXN0KGxh enkgaW50LCBsb25nKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFu Z2xlNHRlc3RGTGxpWnYiICJkZW1hbmdsZS50ZXN0KGxhenkgbG9uZywgaW50 KSIKKworICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdFBG TEFpWWkiICJkZW1hbmdsZS50ZXN0IgorICAgIHRlc3RfZGVtYW5nbGluZyAi X0QxYTFiaSIgImEuYiIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EMWExYlBG aVppIiAiYS5iIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q0dGVzdDNmb29B YSIgInRlc3QuZm9vIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q0dGVzdDJk Z0RGaVlkIiAidGVzdC5kZyIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRl bWFuZ2xlOGRlbWFuZ2xlRkFhWkFhIiAiZGVtYW5nbGUuZGVtYW5nbGUoY2hh clxbXF0pIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q2b2JqZWN0Nk9iamVj dDhvcEFzc2lnbkZDNk9iamVjdFppIiAib2JqZWN0Lk9iamVjdC5vcEFzc2ln bihPYmplY3QpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q2b2JqZWN0Nk9i amVjdDhvcEVxdWFsc0ZDNk9iamVjdFppIiAib2JqZWN0Lk9iamVjdC5vcEVx dWFscyhPYmplY3QpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5n bGU0dGVzdEZMQzZPYmplY3RMREZMaVppWmkiICJkZW1hbmdsZS50ZXN0KGxh enkgT2JqZWN0LCBsYXp5IGludChsYXp5IGludCkgZGVsZWdhdGUpIgorICAg IHRlc3RfZGVtYW5nbGluZyAiX0Q2cGx1Z2luOGdlbmVyYXRlRmlpWkF5YSIg InBsdWdpbi5nZW5lcmF0ZShpbnQsIGludCkiCisgICAgdGVzdF9kZW1hbmds aW5nICJfRDhkZW1hbmdsZTNmbkFGWnYzZm5CTUZadiIgImRlbWFuZ2xlLmZu QSgpLmZuQigpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0 bWFpbkZadjFTM2ZuQ0ZadiIgImRlbWFuZ2xlLm1haW4oKS5TLmZuQygpIgor ICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0bWFpbkZadjFTM2Zu RE1GWnYiICJkZW1hbmdsZS5tYWluKCkuUy5mbkQoKSIKKyAgICB0ZXN0X2Rl bWFuZ2xpbmcgIl9EOGRlbWFuZ2xlMmZuRk5naVpOZ2kiICJkZW1hbmdsZS5m bihpbm91dChpbnQpKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFu Z2xlNG1haW5GWnY1bG9jYWxNRlppIiAiZGVtYW5nbGUubWFpbigpLmxvY2Fs KCkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDNzdGQ1YXNjaWk5dXBwZXJj YXNleUFhIiAic3RkLmFzY2lpLnVwcGVyY2FzZSIKKyAgICB0ZXN0X2RlbWFu Z2xpbmcgIl9EM3N0ZDZzdHJlYW05Qk9NRW5kaWFueUc1RTNzdGQ2c3lzdGVt NkVuZGlhbiIgInN0ZC5zdHJlYW0uQk9NRW5kaWFuIgorICAgIHRlc3RfZGVt YW5nbGluZyAiX0Qzc3RkOGludGVybmFsN3VuaV90YWIxMHVuaWNvZGVOa295 UzNzdGQ4aW50ZXJuYWwzdW5pMTJDb2RlcG9pbnRTZXQiICJzdGQuaW50ZXJu YWwudW5pX3RhYi51bmljb2RlTmtvIgorICAgIHRlc3RfZGVtYW5nbGluZyAi X0QyZ2MyZ2MyR0M2YWRkck9mTUZQdlpQdiIgImdjLmdjLkdDLmFkZHJPZih2 b2lkKikiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDNzdGQ3cHJvY2VzczEw c2V0Q0xPRVhFQ0ZpYlp2IiAic3RkLnByb2Nlc3Muc2V0Q0xPRVhFQyhpbnQs IGJvb2wpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Qzc3RkNmRpZ2VzdDJt ZDNNRDUzcHV0TUZOYU5iTmVNQXhoWHYiICJzdGQuZGlnZXN0Lm1kLk1ENS5w dXQoc2NvcGUgY29uc3QodWJ5dGUpXFtcXS4uLikiCisgICAgdGVzdF9kZW1h bmdsaW5nICJfRDNzdGQ2bW1maWxlNk1tRmlsZTEzb3BJbmRleEFzc2lnbk1G aG1aaCIgInN0ZC5tbWZpbGUuTW1GaWxlLm9wSW5kZXhBc3NpZ24odWJ5dGUs IHVsb25nKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EM3N0ZDdwcm9jZXNz MThlc2NhcGVTaGVsbENvbW1hbmRGeEFBYVhBeWEiICJzdGQucHJvY2Vzcy5l c2NhcGVTaGVsbENvbW1hbmQoY29uc3QoY2hhclxbXF1cW1xdKS4uLikiCisg ICAgdGVzdF9kZW1hbmdsaW5nICJfRDRjb3JlNHN5bmM1bXV0ZXg1TXV0ZXg2 X19jdG9yTUZDNk9iamVjdFpDNGNvcmU0c3luYzVtdXRleDVNdXRleCIgImNv cmUuc3luYy5tdXRleC5NdXRleC50aGlzKE9iamVjdCkiCisgICAgdGVzdF9k ZW1hbmdsaW5nICJfRDZvYmplY3QxNFR5cGVJbmZvX0FycmF5OGFyZ1R5cGVz TUZOYk5mSkM4VHlwZUluZm9KQzhUeXBlSW5mb1ppIiAib2JqZWN0LlR5cGVJ bmZvX0FycmF5LmFyZ1R5cGVzKG91dCBUeXBlSW5mbywgb3V0IFR5cGVJbmZv KSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EMnJ0NmRtYWluMjExX2RfcnVu X21haW5VaVBQYVBVQUFhWmlaaTd0cnlFeGVjTUZNREZadlp2IiAicnQuZG1h aW4yLl9kX3J1bl9tYWluKGludCwgY2hhcioqLCBleHRlcm4oQykgaW50KGNo YXJcW1xdXFtcXSkgZnVuY3Rpb24qKS50cnlFeGVjKHNjb3BlIHZvaWQoKSBk ZWxlZ2F0ZSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDZvYmplY3Q5RXhj ZXB0aW9uNl9fY3Rvck1GTmFOYk5mQXlhQXlhbUM2b2JqZWN0OVRocm93YWJs ZVpDOUV4Y2VwdGlvbiIgIm9iamVjdC5FeGNlcHRpb24udGhpcyhpbW11dGFi bGUoY2hhcilcW1xdLCBpbW11dGFibGUoY2hhcilcW1xdLCB1bG9uZywgb2Jq ZWN0LlRocm93YWJsZSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDNnY2Mz ZGVoMTdwYXJzZV9sc2RhX2hlYWRlckZQUzNnY2M2dW53aW5kN2dlbmVyaWMx NV9VbndpbmRfQ29udGV4dFBoUFMzZ2NjM2RlaDE2bHNkYV9oZWFkZXJfaW5m b1pQaCIgImdjYy5kZWgucGFyc2VfbHNkYV9oZWFkZXIoZ2NjLnVud2luZC5n ZW5lcmljLl9VbndpbmRfQ29udGV4dCosIHVieXRlKiwgZ2NjLmRlaC5sc2Rh X2hlYWRlcl9pbmZvKikiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDNzdGQ2 c29ja2V0MjNVbmtub3duQWRkcmVzc1JlZmVyZW5jZTZfX2N0b3JNRlBTNGNv cmUzc3lzNXBvc2l4M3N5czZzb2NrZXQ4c29ja2FkZHJrWkMzc3RkNnNvY2tl dDIzVW5rbm93bkFkZHJlc3NSZWZlcmVuY2UiICJzdGQuc29ja2V0LlVua25v d25BZGRyZXNzUmVmZXJlbmNlLnRoaXMoY29yZS5zeXMucG9zaXguc3lzLnNv Y2tldC5zb2NrYWRkciosIHVpbnQpIgorfQorCitwcm9jIGNhdGNoX2RlbWFu Z2xpbmdfZXJyb3JzIHtjb21tYW5kfSB7CisgICAgaWYge1tjYXRjaCAkY29t bWFuZCByZXN1bHRdfSB7CisJcHV0cyAiRVJST1I6IGRlbWFuZ2xlLmV4cDog d2hpbGUgcnVubmluZyAkY29tbWFuZDogJHJlc3VsdCIKKyAgICB9Cit9CisK KyMgVGVzdCBzdXBwb3J0IGZvciBkaWZmZXJlbnQgZGVtYW5nbGluZyBzdHls ZXMuICBOb3RlIHRoYXQgdGhpcyBkb2VzCisjIG5vdCBkZXBlbmQgdXBvbiBy dW5uaW5nIHRoZSB0ZXN0IHByb2dyYW0gYW5kIGRvZXMgbm90IGRlcGVuZCB1 cG9uCisjIGdkYiBiZWluZyBhYmxlIHRvIGxvb2t1cCBhbnkgRCBzeW1ib2xz LiAgSXQgc2ltcGx5IGNhbGxzIHRoZSAKKyMgaW50ZXJuYWwgZGVtYW5nbGVy IHdpdGggc3ludGhlc2l6ZWQgc3RyaW5ncyBhbmQgdGVzdHMgdGhlIHJlc3Vs dHMuCisKK3Byb2MgZG9fdGVzdHMge30geworICAgIGdsb2JhbCBzdWJkaXIK KyAgICBnbG9iYWwgZ2RiX3Byb21wdAorCisgICAgIyBTdGFydCB3aXRoIGEg ZnJlc2ggZ2RiLgorCisgICAgZ2RiX2V4aXQKKyAgICBnZGJfc3RhcnQKKwor ICAgIGdkYl90ZXN0X25vX291dHB1dCAic2V0IGxhbmd1YWdlIGQiCisgICAg Z2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgd2lkdGggMCIKKworICAgICMgVXNp bmcgY2F0Y2hfZGVtYW5nbGluZ19lcnJvcnMgdGhpcyB3YXkgZW5zdXJlcyB0 aGF0LCBpZiBvbmUgb2YKKyAgICAjIHRoZSBmdW5jdGlvbnMgcmFpc2VzIGEg VGNsIGVycm9yLCB0aGVuIGl0J2xsIGdldCByZXBvcnRlZCwgYW5kCisgICAg IyB0aGUgcmVzdCBvZiB0aGUgZnVuY3Rpb25zIHdpbGwgc3RpbGwgcnVuLgor ICAgIGNhdGNoX2RlbWFuZ2xpbmdfZXJyb3JzIHRlc3RfZF9kZW1hbmdsaW5n Cit9CisKK2RvX3Rlc3RzCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xp Yi9kLXN1cHBvcnQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZC1zdXBwb3J0 LmV4cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTg2 Nzg3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZC1z dXBwb3J0LmV4cApAQCAtMCwwICsxLDM0IEBACisjIENvcHlyaWdodCAyMDE0 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIwor IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KKworIyBBdXhpbGlhcnkgZnVuY3Rpb24gdG8gc2V0IHRoZSBsYW5n dWFnZSB0byBELgorIyBUaGUgcmVzdWx0IGlzIDEgKHRydWUpIGZvciBzdWNj ZXNzLCAwIChmYWxzZSkgZm9yIGZhaWx1cmUuCisKK3Byb2Mgc2V0X2xhbmdf ZCB7fSB7CisgICAgaWYgW2dkYl90ZXN0X25vX291dHB1dCAic2V0IGxhbmd1 YWdlIGQiXSB7CisJcmV0dXJuIDAKKyAgICB9CisgICAgaWYgW2dkYl90ZXN0 ICJzaG93IGxhbmd1YWdlIiAiLiogc291cmNlIGxhbmd1YWdlIGlzIFwiZFwi LiIgXAorCSAgICJzZXQgbGFuZ3VhZ2UgdG8gXCJkXCIiXSB7CisJcmV0dXJu IDAKKyAgICB9CisgICAgcmV0dXJuIDEKK30KKworIyBEIHZlcnNpb24gb2Yg cnVudG9fbWFpbi4KKworcHJvYyBkX3J1bnRvX21haW4geyB9IHsKKyAgICBy ZXR1cm4gW3J1bnRvIF9EbWFpbl0KK30KZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvbGliL2dkYi5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhw CmluZGV4IDI3MTNkZGYuLjYzNjc2MzIgMTAwNjQ0Ci0tLSBhL2dkYi90ZXN0 c3VpdGUvbGliL2dkYi5leHAKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ri LmV4cApAQCAtMTU2OCw2ICsxNTY4LDEyIEBAIHByb2Mgc2tpcF9qYXZhX3Rl c3RzIHt9IHsKICAgICByZXR1cm4gMAogfQogCisjIFJldHVybiBhIDEgaWYg SSBkb24ndCBldmVuIHdhbnQgdG8gdHJ5IHRvIHRlc3QgRC4KKworcHJvYyBz a2lwX2RfdGVzdHMge30geworICAgIHJldHVybiAwCit9CisKICMgUmV0dXJu IGEgMSBmb3IgY29uZmlndXJhdGlvbnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBQ eXRob24gc2NyaXB0aW5nLgogCiBwcm9jIHNraXBfcHl0aG9uX3Rlc3RzIHt9 IHsK --001a11c2c59ece8fe004ef14ee00--