From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19055 invoked by alias); 26 Oct 2011 01:06:32 -0000 Received: (qmail 19025 invoked by uid 22791); 26 Oct 2011 01:06:25 -0000 X-SWARE-Spam-Status: No, hits=2.5 required=5.0 tests=AWL,BAYES_50,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KAM_STOCKTIP,RCVD_IN_DNSWL_LOW,TW_BJ,TW_GB,TW_YM X-Spam-Check-By: sourceware.org Received: from mail-fx0-f41.google.com (HELO mail-fx0-f41.google.com) (209.85.161.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 26 Oct 2011 01:06:04 +0000 Received: by faat2 with SMTP id t2so1441375faa.0 for ; Tue, 25 Oct 2011 18:06:02 -0700 (PDT) Received: by 10.223.75.25 with SMTP id w25mr56795843faj.15.1319591162318; Tue, 25 Oct 2011 18:06:02 -0700 (PDT) MIME-Version: 1.0 Received: by 10.152.22.6 with HTTP; Tue, 25 Oct 2011 18:05:41 -0700 (PDT) In-Reply-To: <4EA753C4.60408@mentor.com> References: <4E8DCE67.80507@earthlink.net> <4E92E639.7000402@earthlink.net> <83ipnjs9i1.fsf@gnu.org> <83ipndc92n.fsf@gnu.org> <83ehy0ded8.fsf@gnu.org> <4EA753C4.60408@mentor.com> From: Justin Lebar Date: Wed, 26 Oct 2011 03:45:00 -0000 Message-ID: Subject: Re: Status of 'blacklist' patch? To: Stan Shebs , Tom Tromey Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=0015174c17747a905804b02942ec X-IsSubscribed: yes 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 X-SW-Source: 2011-10/txt/msg00690.txt.bz2 --0015174c17747a905804b02942ec Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-length: 2894 Rollup patch is attached, incorporating all feedback so far (I think!). As usual, you should be able to use interdiff to view the changes. Let me know if that doesn't work and I can make git spit it out. Unfortunately the tests are randomly failing on me. I'm not sure what's going on, but it looks like we're not always waiting long enough after runto_main, somehow. The relevant expect code (in gdb.base/skip.exp) is: if ![runto_main] { fail "skip tests suppressed" } send_gdb "step\n" # XXX This gdb_test sometimes fails, due to an apparent race. gdb_test "bt" "\\s*\\#0\\s+main.*" "step after all ignored" Here's a diff of gdb.log in a successful run (-) and an unsuccessful run (+= ). @@ -112,20 +112,20 @@ Start it from the beginning? (y or n) y Starting program: /home/jlebar/code/gdb/debug/gdb/testsuite/gdb.base/skip Breakpoint 2, main () at ../../../src/gdb/testsuite/gdb.base/skip.c:7 7 return baz(foo(), bar()); (gdb) step bt 8 } -(gdb) bt +(gdb) FAIL: gdb.base/skip.exp: step after all ignored +bt #0 main () at ../../../src/gdb/testsuite/gdb.base/skip.c:8 -(gdb) PASS: gdb.base/skip.exp: step after all ignored -skip delete 1 +(gdb) skip delete 1 (gdb) info skip Num Type Enb Address What 2 function y 0x00000000004004e4 main at ../../../src/gdb/testsuite/gdb.base/skip.c:5 3 file y ../../../src/gdb/testsuite/gdb.base/skip1.c 4 function y 0x000000000040052b baz at ../../../src/gdb/testsuite/gdb.base/skip1.c:6 (gdb) PASS: gdb.base/skip.exp: info skip delete breakpoints Delete all breakpoints? (y or n) y @@ -226,17 +226,16 @@ Any ideas what's going on here? -Justin On Tue, Oct 25, 2011 at 8:26 PM, Stan Shebs wrote: > On 10/25/2011 01:16 PM, Justin Lebar wrote: >> >> In the unlikely case that I actually opened the manual (not because >> it's no good, but because most people I know who use GDB aren't aware >> of the manual -- it's not well-linked on the web), I think the fact >> that there are |skip file| and |skip function| commands would clear >> things up pretty quickly. >> >> There's a cost to a comment like this; it's not useful to most >> readers, but they have to parse it anyway. =C2=A0(What the heck does "sk= ip >> function file" mean?) > > Another purpose for having niggling details in the manual is that in the > absence of a formal specification, the manual is our promise to users of > what they should expect to work, and how it will work. =C2=A0So users find > themselves referring to the manual when they try something that seems > obvious, and are surprised that it doesn't work as expected. > >> But again, I don't really have a stake in this either way. =C2=A0I just >> want to get my patch in. =C2=A0:) > > I'd like to see a new rollup with all the feedback incorporated, I've lost > track of the state... :-) > > Stan > > --0015174c17747a905804b02942ec Content-Type: text/x-patch; charset=US-ASCII; name="skip-4.diff" Content-Disposition: attachment; filename="skip-4.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gu7mg1l90 Content-length: 76527 ZGlmZiAtLWdpdCBhL2dkYi9DaGFuZ2VMb2cgYi9nZGIvQ2hhbmdlTG9nCmlu ZGV4IGExNjZkMTQuLjBmMTAyMjUgMTAwNjQ0Ci0tLSBhL2dkYi9DaGFuZ2VM b2cKKysrIGIvZ2RiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEx LTEwLTA2ICBKdXN0aW4gTGViYXIgIDxqdXN0aW4ubGViYXJAZ21haWwuY29t PgorCisJKiBNYWtlZmlsZS5pbjogKFNGSUxFUyk6IEFkZCBza2lwLmMuCisJ KEhGSUxFU19OT19TUkNESVIpOiBBZGQgc2tpcC5oLgorCShDT01NT05fT0JT KTogQWRkIHNraXAuby4KKwkqIHNraXAuaCwgc2tpcC5jOiBOZXcuCisJKiBi cmVha3BvaW50LmggKHNldF9kZWZhdWx0X2JyZWFrcG9pbnQpOiBSZW1vdmUu CisJKGdldF9zYWxfYXJjaCk6IERlY2xhcmUuCisJKiBicmVha3BvaW50LmM6 IFJlbW92ZSBkZWZhdWx0X2JyZWFrcG9pbnRfdmFsaWQsCisJZGVmYXVsdF9i cmVha3BvaW50X2FkZHJlc3MsIGRlZmF1bHRfYnJlYWtwb2ludF9zeW10YWIs CisJZGVmYXVsdF9icmVha3BvaW50X2xpbmUsIGRlZmF1bHRfYnJlYWtwb2lu dF9wc3BhY2UgdmFyaWFibGVzLgorCShnZXRfc2FsX2FyY2gpOiBNYWtlIHB1 YmxpYy4KKwkoc2V0X2RlZmF1bHRfYnJlYWtwb2ludCk6IFJlbW92ZS4KKwko cGFyc2VfYnJlYWtwb2ludF9zYWxzLCBjcmVhdGVfYnJlYWtwb2ludCwgY2xl YXJfY29tbWFuZCwKKwlkZWNvZGVfbGluZV9zcGVjXzEpOiBSZW1vdmUgdXNl cyBvZiBkZWZhdWx0X2JyZWFrcG9pbnQgdmFyaWFibGVzOworCXJlcGxhY2Vk IHdpdGggZnVuY3Rpb24gY2FsbHMgaW50byBzdGFjay5jLgorCSogY2xpL2Ns aS1jbWRzLmg6IEFkZCBjbWRfbGlzdF9lbGVtZW50ICpza2lwbGlzdC4KKwkq IGNsaS9jbGktY21kcy5jOiBBZGQgc2tpcGxpc3QuCisJKGluaXRfY21kX2xp c3RzKTogSW5pdGlhbGl6ZSBza2lwbGlzdC4KKwkoaW5pdF9jbGlfY21kcyk6 IEZpeCBjb21tZW50IChjbGFzc2VzIG9mIGNvbW1hbmRzIGFwcGVhciBpbgor CWFscGhhYmV0aWNhbCBvcmRlcikuCisJKiBpbmZydW4uYyAoaGFuZGxlX2lu ZmVyaW9yX2V2ZW50KTogQWRkIGNoZWNrIHRoYXQgd2UgZG9uJ3Qgc3RlcCBp bnRvCisJYSBmdW5jdGlvbiB3aG9zZSBwYyBpcyBtYXJrZWQgZm9yIHNraXAu CisJKiBzdGFjay5jOiBEZWNsYXJlIGxhc3RfZGlzcGxheWVkX3NhbF92YWxp ZCwgbGFzdF9kaXNwbGF5ZWRfcHNwYWNlLAorCWxhc3RfZGlzcGxheWVkX2Fk ZHIsIGxhc3RfZGlzcGxheWVkX3N5bXRhYiwgbGFzdF9kaXNwbGF5ZWRfbGlu ZQorCXZhcmlhYmxlcy4KKwkoc2V0X2xhc3RfZGlzcGxheWVkX3NhbCk6IE5l dyBzdGF0aWMgZnVuY3Rpb24uCisJKHByaW50X2ZyYW1lX2luZm8pOiBTd2l0 Y2ggY2FsbCB0byBzZXRfZGVmYXVsdF9icmVha3BvaW50IHRvIGNhbGwgdG8K KwlzZXRfbGFzdF9kaXNwbGF5ZWRfc2FsLgorCShjbGVhcl9sYXN0X2Rpc3Bs YXllZF9zYWwsIGxhc3RfZGlzcGxheWVkX3NhbF9pc192YWxpZCwKKwlnZXRf bGFzdF9kaXNwbGF5ZWRfcHNwYWNlLCBnZXRfbGFzdF9kaXNwbGF5ZWRfYWRk ciwKKwlnZXRfbGFzdF9kaXNwbGF5ZWRfc3ltdGFiLCBnZXRfbGFzdF9kaXNw bGF5ZWRfbGluZSwKKwlnZXRfbGFzdF9kaXNwbGF5ZWRfc2FsKTogTmV3IHB1 YmxpYyBmdW5jdGlvbnMuCisJKiBzdGFjay5oIChjbGVhcl9sYXN0X2Rpc3Bs YXllZF9zYWwsIGxhc3RfZGlzcGxheWVkX3NhbF9pc192YWxpZCwKKwlnZXRf bGFzdF9kaXNwbGF5ZWRfcHNwYWNlLCBnZXRfbGFzdF9kaXNwbGF5ZWRfYWRk ciwKKwlnZXRfbGFzdF9kaXNwbGF5ZWRfc3ltdGFiLCBnZXRfbGFzdF9kaXNw bGF5ZWRfbGluZSwKKwlnZXRfbGFzdF9kaXNwbGF5ZWRfc2FsKTogRGVjbGFy ZS4KKwogMjAxMS0xMC0wNSAgVHJpc3RhbiBHaW5nb2xkICA8Z2luZ29sZEBh ZGFjb3JlLmNvbT4KIAogCSogYWRhLXRhc2tzLmMgKHJlYWRfYXRjYik6IE1h a2UgcmF2ZW5zY2FyX3Rhc2tfbmFtZSBzdGF0aWMuCmRpZmYgLS1naXQgYS9n ZGIvTWFrZWZpbGUuaW4gYi9nZGIvTWFrZWZpbGUuaW4KaW5kZXggODI2ZDMz OS4uZDZiMDA0YiAxMDA2NDQKLS0tIGEvZ2RiL01ha2VmaWxlLmluCisrKyBi L2dkYi9NYWtlZmlsZS5pbgpAQCAtNzE5LDcgKzcxOSw3IEBAIFNGSUxFUyA9 IGFkYS1leHAueSBhZGEtbGFuZy5jIGFkYS10eXBlcHJpbnQuYyBhZGEtdmFs cHJpbnQuYyBhZGEtdGFza3MuYyBcCiAJcHJvbG9ndWUtdmFsdWUuYyBwc3lt dGFiLmMgXAogCXJlZ2NhY2hlLmMgcmVnZ3JvdXBzLmMgcmVtb3RlLmMgcmVt b3RlLWZpbGVpby5jIHJldmVyc2UuYyBcCiAJc2VudGluZWwtZnJhbWUuYyBc Ci0Jc2VyaWFsLmMgc2VyLWJhc2UuYyBzZXItdW5peC5jIFwKKwlzZXJpYWwu YyBzZXItYmFzZS5jIHNlci11bml4LmMgc2tpcC5jIFwKIAlzb2xpYi5jIHNv bGliLXRhcmdldC5jIHNvdXJjZS5jIFwKIAlzdGFic3JlYWQuYyBzdGFjay5j IHN0ZC1yZWdzLmMgc3ltZmlsZS5jIHN5bWZpbGUtbWVtLmMgc3ltbWlzYy5j IFwKIAlzeW10YWIuYyBcCkBAIC04MTksNyArODE5LDcgQEAgb3NkYXRhLmgg cHJvY2ZzLmggcHl0aG9uL3B5LWV2ZW50LmggcHl0aG9uL3B5LWV2ZW50cy5o IHB5dGhvbi9weS1zdG9wZXZlbnQuaCBcCiBweXRob24vcHl0aG9uLWludGVy bmFsLmggcHl0aG9uL3B5dGhvbi5oIHJhdmVuc2Nhci10aHJlYWQuaCByZWNv cmQuaCBcCiBzb2xpYi1kYXJ3aW4uaCBzb2xpYi1pYTY0LWhwdXguaCBzb2xp Yi1zcHUuaCB3aW5kb3dzLW5hdC5oIHhjb2ZmcmVhZC5oIFwKIGdudWxpYi9l eHRyYS9hcmctbm9ubnVsbC5oIGdudWxpYi9leHRyYS9jKytkZWZzLmggZ251 bGliL2V4dHJhL3dhcm4tb24tdXNlLmggXAotZ251bGliL3N0ZGRlZi5pbi5o IGlubGluZS1mcmFtZS5oIFwKK2dudWxpYi9zdGRkZWYuaW4uaCBpbmxpbmUt ZnJhbWUuaCBza2lwLmggXAogY29tbW9uL2NvbW1vbi11dGlscy5oIGNvbW1v bi94bWwtdXRpbHMuaCBjb21tb24vYnVmZmVyLmggY29tbW9uL3B0aWQuaCBc CiBjb21tb24vbGludXgtb3NkYXRhLmgKIApAQCAtOTA3LDcgKzkwNyw3IEBA IENPTU1PTl9PQlMgPSAkKERFUEZJTEVTKSAkKENPTkZJR19PQlMpICQoWVlP QkopIFwKIAl4bWwtc3VwcG9ydC5vIHhtbC1zeXNjYWxsLm8geG1sLXV0aWxz Lm8gXAogCXRhcmdldC1kZXNjcmlwdGlvbnMubyB0YXJnZXQtbWVtb3J5Lm8g eG1sLXRkZXNjLm8geG1sLWJ1aWx0aW4ubyBcCiAJaW5mZXJpb3IubyBvc2Rh dGEubyBnZGJfdXNsZWVwLm8gcmVjb3JkLm8gZ2NvcmUubyBcCi0Jaml0Lm8g cHJvZ3NwYWNlLm8gXAorCWppdC5vIHByb2dzcGFjZS5vIHNraXAubyBcCiAJ Y29tbW9uLXV0aWxzLm8gYnVmZmVyLm8gcHRpZC5vCiAKIFRTT0JTID0gaW5m bG93Lm8KZGlmZiAtLWdpdCBhL2dkYi9ORVdTIGIvZ2RiL05FV1MKaW5kZXgg NGQ0MzRjNS4uODIyNWNmOCAxMDA2NDQKLS0tIGEvZ2RiL05FV1MKKysrIGIv Z2RiL05FV1MKQEAgLTMsNiArMyw5IEBACiAKICoqKiBDaGFuZ2VzIHNpbmNl IEdEQiA3LjMuMQogCisqIEdEQiBub3cgYWxsb3dzIHlvdSB0byBza2lwIHVu aW50ZXJlc3RpbmcgZnVuY3Rpb25zIGFuZCBmaWxlcyB3aGVuCisgIHN0ZXBw aW5nIHdpdGggdGhlICJza2lwIGZ1bmN0aW9uIiBhbmQgInNraXAgZmlsZSIg Y29tbWFuZHMuCisKICogR0RCIGhhcyB0d28gbmV3IGNvbW1hbmRzOiAic2V0 IHJlbW90ZSBoYXJkd2FyZS13YXRjaHBvaW50LWxlbmd0aC1saW1pdCIKICAg YW5kICJzaG93IHJlbW90ZSBoYXJkd2FyZS13YXRjaHBvaW50LWxlbmd0aC1s aW1pdCIuICBUaGVzZSBhbGxvd3MgdG8KICAgc2V0IG9yIHNob3cgdGhlIG1h eGltdW0gbGVuZ3RoIGxpbWl0IChpbiBieXRlcykgb2YgYSByZW1vdGUKZGlm ZiAtLWdpdCBhL2dkYi9icmVha3BvaW50LmMgYi9nZGIvYnJlYWtwb2ludC5j CmluZGV4IDA4ZmY2OWIuLmI0MWZiNzkgMTAwNjQ0Ci0tLSBhL2dkYi9icmVh a3BvaW50LmMKKysrIGIvZ2RiL2JyZWFrcG9pbnQuYwpAQCAtNjUsNiArNjUs OCBAQAogI2luY2x1ZGUgInBhcnNlci1kZWZzLmgiCiAjaW5jbHVkZSAiY2xp L2NsaS11dGlscy5oIgogI2luY2x1ZGUgImNvbnRpbnVhdGlvbnMuaCIKKyNp bmNsdWRlICJzdGFjay5oIgorI2luY2x1ZGUgInNraXAuaCIKIAogLyogcmVh ZGxpbmUgaW5jbHVkZSBmaWxlcyAqLwogI2luY2x1ZGUgInJlYWRsaW5lL3Jl YWRsaW5lLmgiCkBAIC01NzIsMTkgKzU3NCw2IEBAIG1ha2VfY2xlYW51cF9k ZWNyZWZfY291bnRlZF9jb21tYW5kX2xpbmUgKHN0cnVjdCBjb3VudGVkX2Nv bW1hbmRfbGluZSAqKmNtZHApCiAgIHJldHVybiBtYWtlX2NsZWFudXAgKGRv X2NsZWFudXBfY291bnRlZF9jb21tYW5kX2xpbmUsIGNtZHApOwogfQogCi0v KiBEZWZhdWx0IGFkZHJlc3MsIHN5bXRhYiBhbmQgbGluZSB0byBwdXQgYSBi cmVha3BvaW50IGF0Ci0gICBmb3IgImJyZWFrIiBjb21tYW5kIHdpdGggbm8g YXJnLgotICAgSWYgZGVmYXVsdF9icmVha3BvaW50X3ZhbGlkIGlzIHplcm8s IHRoZSBvdGhlciB0aHJlZSBhcmUKLSAgIG5vdCB2YWxpZCwgYW5kICJicmVh ayIgd2l0aCBubyBhcmcgaXMgYW4gZXJyb3IuCi0KLSAgIFRoaXMgc2V0IGJ5 IHByaW50X3N0YWNrX2ZyYW1lLCB3aGljaCBjYWxscyBzZXRfZGVmYXVsdF9i cmVha3BvaW50LiAgKi8KLQotaW50IGRlZmF1bHRfYnJlYWtwb2ludF92YWxp ZDsKLUNPUkVfQUREUiBkZWZhdWx0X2JyZWFrcG9pbnRfYWRkcmVzczsKLXN0 cnVjdCBzeW10YWIgKmRlZmF1bHRfYnJlYWtwb2ludF9zeW10YWI7Ci1pbnQg ZGVmYXVsdF9icmVha3BvaW50X2xpbmU7Ci1zdHJ1Y3QgcHJvZ3JhbV9zcGFj ZSAqZGVmYXVsdF9icmVha3BvaW50X3BzcGFjZTsKLQogDAogLyogUmV0dXJu IHRoZSBicmVha3BvaW50IHdpdGggdGhlIHNwZWNpZmllZCBudW1iZXIsIG9y IE5VTEwKICAgIGlmIHRoZSBudW1iZXIgZG9lcyBub3QgcmVmZXIgdG8gYW4g ZXhpc3RpbmcgYnJlYWtwb2ludC4gICovCkBAIC01MzM5LDIwICs1MzI4LDYg QEAgZGVzY3JpYmVfb3RoZXJfYnJlYWtwb2ludHMgKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLAogICAgIH0KIH0KIAwKLS8qIFNldCB0aGUgZGVmYXVsdCBw bGFjZSB0byBwdXQgYSBicmVha3BvaW50Ci0gICBmb3IgdGhlIGBicmVhaycg Y29tbWFuZCB3aXRoIG5vIGFyZ3VtZW50cy4gICovCi0KLXZvaWQKLXNldF9k ZWZhdWx0X2JyZWFrcG9pbnQgKGludCB2YWxpZCwgc3RydWN0IHByb2dyYW1f c3BhY2UgKnBzcGFjZSwKLQkJCUNPUkVfQUREUiBhZGRyLCBzdHJ1Y3Qgc3lt dGFiICpzeW10YWIsCi0JCQlpbnQgbGluZSkKLXsKLSAgZGVmYXVsdF9icmVh a3BvaW50X3ZhbGlkID0gdmFsaWQ7Ci0gIGRlZmF1bHRfYnJlYWtwb2ludF9w c3BhY2UgPSBwc3BhY2U7Ci0gIGRlZmF1bHRfYnJlYWtwb2ludF9hZGRyZXNz ID0gYWRkcjsKLSAgZGVmYXVsdF9icmVha3BvaW50X3N5bXRhYiA9IHN5bXRh YjsKLSAgZGVmYXVsdF9icmVha3BvaW50X2xpbmUgPSBsaW5lOwotfQogCiAv KiBSZXR1cm4gdHJ1ZSBpZmYgaXQgaXMgbWVhbmluZ2Z1bCB0byB1c2UgdGhl IGFkZHJlc3MgbWVtYmVyIG9mCiAgICBCUFQuICBGb3Igc29tZSBicmVha3Bv aW50IHR5cGVzLCB0aGUgYWRkcmVzcyBtZW1iZXIgaXMgaXJyZWxldmFudApA QCAtNTc2NCw3ICs1NzM5LDcgQEAgc2V0X2JyZWFrcG9pbnRfbG9jYXRpb25f ZnVuY3Rpb24gKHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jLCBpbnQgZXhwbGlj aXRfbG9jKQogfQogCiAvKiBBdHRlbXB0IHRvIGRldGVybWluZSBhcmNoaXRl Y3R1cmUgb2YgbG9jYXRpb24gaWRlbnRpZmllZCBieSBTQUwuICAqLwotc3Rh dGljIHN0cnVjdCBnZGJhcmNoICoKK3N0cnVjdCBnZGJhcmNoICoKIGdldF9z YWxfYXJjaCAoc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWwpCiB7CiAgIGlm IChzYWwuc2VjdGlvbikKQEAgLTc1NDMsMjQgKzc1MTgsMjYgQEAgcGFyc2Vf YnJlYWtwb2ludF9zYWxzIChjaGFyICoqYWRkcmVzcywKICAgaWYgKCgqYWRk cmVzcykgPT0gTlVMTAogICAgICAgfHwgKHN0cm5jbXAgKCgqYWRkcmVzcyks ICJpZiIsIDIpID09IDAgJiYgaXNzcGFjZSAoKCphZGRyZXNzKVsyXSkpKQog ICAgIHsKLSAgICAgIGlmIChkZWZhdWx0X2JyZWFrcG9pbnRfdmFsaWQpCisg ICAgICAvKiBUaGUgbGFzdCBkaXNwbGF5ZWQgY29kZXBvaW50LCBpZiBpdCdz IHZhbGlkLCBpcyBvdXIgZGVmYXVsdCBicmVha3BvaW50CisgICAgICAgICBh ZGRyZXNzLiAqLworICAgICAgaWYgKGxhc3RfZGlzcGxheWVkX3NhbF9pc192 YWxpZCAoKSkKIAl7CiAJICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbDsK IAogCSAgaW5pdF9zYWwgKCZzYWwpOwkJLyogSW5pdGlhbGl6ZSB0byB6ZXJv ZXMuICAqLwogCSAgc2Fscy0+c2FscyA9IChzdHJ1Y3Qgc3ltdGFiX2FuZF9s aW5lICopCiAJICAgIHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IHN5bXRhYl9h bmRfbGluZSkpOwotCSAgc2FsLnBjID0gZGVmYXVsdF9icmVha3BvaW50X2Fk ZHJlc3M7Ci0JICBzYWwubGluZSA9IGRlZmF1bHRfYnJlYWtwb2ludF9saW5l OwotCSAgc2FsLnN5bXRhYiA9IGRlZmF1bHRfYnJlYWtwb2ludF9zeW10YWI7 Ci0JICBzYWwucHNwYWNlID0gZGVmYXVsdF9icmVha3BvaW50X3BzcGFjZTsK LQkgIHNhbC5zZWN0aW9uID0gZmluZF9wY19vdmVybGF5IChzYWwucGMpOwor CisJICAvKiBTZXQgc2FsJ3MgcHNwYWNlLCBwYywgc3ltdGFiLCBhbmQgbGlu ZSB0byB0aGUgdmFsdWVzCisJICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBs YXN0IGNhbGwgdG8gcHJpbnRfZnJhbWVfaW5mby4gKi8KKwkgIGdldF9sYXN0 X2Rpc3BsYXllZF9zYWwgKCZzYWwpOworICAgICAgICAgIHNhbC5zZWN0aW9u ID0gZmluZF9wY19vdmVybGF5IChzYWwucGMpOwogCiAJICAvKiAiYnJlYWsi IHdpdGhvdXQgYXJndW1lbnRzIGlzIGVxdWl2YWxlbnQgdG8gImJyZWFrICpQ QyIKLQkgICAgIHdoZXJlIFBDIGlzIHRoZSBkZWZhdWx0X2JyZWFrcG9pbnRf YWRkcmVzcy4gIFNvIG1ha2Ugc3VyZQotCSAgICAgdG8gc2V0IHNhbC5leHBs aWNpdF9wYyB0byBwcmV2ZW50IEdEQiBmcm9tIHRyeWluZyB0bwotCSAgICAg ZXhwYW5kIHRoZSBsaXN0IG9mIHNhbHMgdG8gaW5jbHVkZSBhbGwgb3RoZXIg aW5zdGFuY2VzCi0JICAgICB3aXRoIHRoZSBzYW1lIHN5bXRhYiBhbmQgbGlu ZS4gICovCisJICAgICB3aGVyZSBQQyBpcyB0aGUgbGFzdCBkaXNwbGF5ZWQg Y29kZXBvaW50J3MgYWRkcmVzcy4gIFNvCisJICAgICBtYWtlIHN1cmUgdG8g c2V0IHNhbC5leHBsaWNpdF9wYyB0byBwcmV2ZW50IEdEQiBmcm9tCisJICAg ICB0cnlpbmcgdG8gZXhwYW5kIHRoZSBsaXN0IG9mIHNhbHMgdG8gaW5jbHVk ZSBhbGwgb3RoZXIKKwkgICAgIGluc3RhbmNlcyB3aXRoIHRoZSBzYW1lIHN5 bXRhYiBhbmQgbGluZS4gICovCiAJICBzYWwuZXhwbGljaXRfcGMgPSAxOwog CiAJICBzYWxzLT5zYWxzWzBdID0gc2FsOwpAQCAtNzU3NCwxOSArNzU1MSwy MiBAQCBwYXJzZV9icmVha3BvaW50X3NhbHMgKGNoYXIgKiphZGRyZXNzLAog ICAgICAgLyogRm9yY2UgYWxtb3N0IGFsbCBicmVha3BvaW50cyB0byBiZSBp biB0ZXJtcyBvZiB0aGUKICAgICAgICAgIGN1cnJlbnRfc291cmNlX3N5bXRh YiAod2hpY2ggaXMgZGVjb2RlX2xpbmVfMSdzIGRlZmF1bHQpLgogICAgICAg ICAgVGhpcyBzaG91bGQgcHJvZHVjZSB0aGUgcmVzdWx0cyB3ZSB3YW50IGFs bW9zdCBhbGwgb2YgdGhlCi0gICAgICAgICB0aW1lIHdoaWxlIGxlYXZpbmcg ZGVmYXVsdF9icmVha3BvaW50XyogYWxvbmUuCisJIHRpbWUgd2hpbGUgbGVh dmluZyB0aGUgbGFzdCBkaXNwbGF5ZWQgY29kZXBvaW50IHBvaW50ZXJzCisJ IGFsb25lLgogCiAgICAgICAgICBPYmpDOiBIb3dldmVyLCBkb24ndCBtYXRj aCBhbiBPYmplY3RpdmUtQyBtZXRob2QgbmFtZSB3aGljaAogICAgICAgICAg bWF5IGhhdmUgYSAnKycgb3IgJy0nIHN1Y2NlZWRlZCBieSBhICdbJyAqLwog CSAKICAgICAgIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgY3Vyc2FsID0gZ2V0 X2N1cnJlbnRfc291cmNlX3N5bXRhYl9hbmRfbGluZSAoKTsKIAkJCQotICAg ICAgaWYgKGRlZmF1bHRfYnJlYWtwb2ludF92YWxpZAorICAgICAgaWYgKGxh c3RfZGlzcGxheWVkX3NhbF9pc192YWxpZCAoKQogCSAgJiYgKCFjdXJzYWwu c3ltdGFiCiAgCSAgICAgIHx8ICgoc3RyY2hyICgiKy0iLCAoKmFkZHJlc3Mp WzBdKSAhPSBOVUxMKQogIAkJICAmJiAoKCphZGRyZXNzKVsxXSAhPSAnWycp KSkpCi0JKnNhbHMgPSBkZWNvZGVfbGluZV8xIChhZGRyZXNzLCAxLCBkZWZh dWx0X2JyZWFrcG9pbnRfc3ltdGFiLAotCQkJICAgICAgIGRlZmF1bHRfYnJl YWtwb2ludF9saW5lLCBjYW5vbmljYWwpOworCSpzYWxzID0gZGVjb2RlX2xp bmVfMSAoYWRkcmVzcywgMSwKKwkJCSAgICAgICBnZXRfbGFzdF9kaXNwbGF5 ZWRfc3ltdGFiICgpLAorCQkJICAgICAgIGdldF9sYXN0X2Rpc3BsYXllZF9s aW5lICgpLAorCQkJICAgICAgIGNhbm9uaWNhbCk7CiAgICAgICBlbHNlCiAJ KnNhbHMgPSBkZWNvZGVfbGluZV8xIChhZGRyZXNzLCAxLCAoc3RydWN0IHN5 bXRhYiAqKSBOVUxMLCAwLAogCQkgICAgICAgICAgICAgICBjYW5vbmljYWwp OwpAQCAtOTYxMSw5ICs5NTkxLDExIEBAIHVudGlsX2JyZWFrX2NvbW1hbmQg KGNoYXIgKmFyZywgaW50IGZyb21fdHR5LCBpbnQgYW55d2hlcmUpCiAgIC8q IFNldCBhIGJyZWFrcG9pbnQgd2hlcmUgdGhlIHVzZXIgd2FudHMgaXQgYW5k IGF0IHJldHVybiBmcm9tCiAgICAgIHRoaXMgZnVuY3Rpb24uICAqLwogCi0g IGlmIChkZWZhdWx0X2JyZWFrcG9pbnRfdmFsaWQpCi0gICAgc2FscyA9IGRl Y29kZV9saW5lXzEgKCZhcmcsIDEsIGRlZmF1bHRfYnJlYWtwb2ludF9zeW10 YWIsCi0JCQkgIGRlZmF1bHRfYnJlYWtwb2ludF9saW5lLCBOVUxMKTsKKyAg aWYgKGxhc3RfZGlzcGxheWVkX3NhbF9pc192YWxpZCAoKSkKKyAgICBzYWxz ID0gZGVjb2RlX2xpbmVfMSAoJmFyZywgMSwKKwkJCSAgZ2V0X2xhc3RfZGlz cGxheWVkX3N5bXRhYiAoKSwKKwkJCSAgZ2V0X2xhc3RfZGlzcGxheWVkX2xp bmUgKCksCisJCQkgIE5VTEwpOwogICBlbHNlCiAgICAgc2FscyA9IGRlY29k ZV9saW5lXzEgKCZhcmcsIDEsIChzdHJ1Y3Qgc3ltdGFiICopIE5VTEwsIDAs IE5VTEwpOwogCkBAIC0xMDEzNSwxMCArMTAxMTcsMTEgQEAgY2xlYXJfY29t bWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCiAJeG1hbGxvYyAoc2l6 ZW9mIChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lKSk7CiAgICAgICBtYWtlX2Ns ZWFudXAgKHhmcmVlLCBzYWxzLnNhbHMpOwogICAgICAgaW5pdF9zYWwgKCZz YWwpOwkJLyogSW5pdGlhbGl6ZSB0byB6ZXJvZXMuICAqLwotICAgICAgc2Fs LmxpbmUgPSBkZWZhdWx0X2JyZWFrcG9pbnRfbGluZTsKLSAgICAgIHNhbC5z eW10YWIgPSBkZWZhdWx0X2JyZWFrcG9pbnRfc3ltdGFiOwotICAgICAgc2Fs LnBjID0gZGVmYXVsdF9icmVha3BvaW50X2FkZHJlc3M7Ci0gICAgICBzYWwu cHNwYWNlID0gZGVmYXVsdF9icmVha3BvaW50X3BzcGFjZTsKKworICAgICAg LyogU2V0IHNhbCdzIGxpbmUsIHN5bXRhYiwgcGMsIGFuZCBwc3BhY2UgdG8g dGhlIHZhbHVlcworCSBjb3JyZXNwb25kaW5nIHRvIHRoZSBsYXN0IGNhbGwg dG8gcHJpbnRfZnJhbWVfaW5mby4gIElmIHRoZQorCSBjb2RlcG9pbnQgaXMg bm90IHZhbGlkLCB0aGlzIHdpbGwgc2V0IGFsbCB0aGUgZmllbGRzIHRvIDAu ICovCisgICAgICBnZXRfbGFzdF9kaXNwbGF5ZWRfc2FsICgmc2FsKTsKICAg ICAgIGlmIChzYWwuc3ltdGFiID09IDApCiAJZXJyb3IgKF8oIk5vIHNvdXJj ZSBmaWxlIHNwZWNpZmllZC4iKSk7CiAKQEAgLTExOTg2LDYgKzExOTY5LDkg QEAgYnJlYWtwb2ludF9yZV9zZXQgKHZvaWQpCiAgIGNyZWF0ZV9sb25nam1w X21hc3Rlcl9icmVha3BvaW50ICgpOwogICBjcmVhdGVfc3RkX3Rlcm1pbmF0 ZV9tYXN0ZXJfYnJlYWtwb2ludCAoKTsKICAgY3JlYXRlX2V4Y2VwdGlvbl9t YXN0ZXJfYnJlYWtwb2ludCAoKTsKKworICAvKiBXaGlsZSB3ZSdyZSBhdCBp dCwgcmVzZXQgdGhlIHNraXAgbGlzdCB0b28uICovCisgIHNraXBfcmVfc2V0 ICgpOwogfQogDAogLyogUmVzZXQgdGhlIHRocmVhZCBudW1iZXIgb2YgdGhp cyBicmVha3BvaW50OgpAQCAtMTI0MzUsNyArMTI0MjEsOCBAQCBpbnZhbGlk YXRlX2JwX3ZhbHVlX29uX21lbW9yeV9jaGFuZ2UgKENPUkVfQUREUiBhZGRy LCBpbnQgbGVuLAogICAgICAgfQogfQogCi0vKiBVc2UgZGVmYXVsdF9icmVh a3BvaW50XydzLCBvciBub3RoaW5nIGlmIHRoZXkgYXJlbid0IHZhbGlkLiAg Ki8KKy8qIFVzZSB0aGUgbGFzdCBkaXNwbGF5ZWQgY29kZXBvaW50J3MgdmFs dWVzLCBvciBub3RoaW5nCisgICBpZiB0aGV5IGFyZW4ndCB2YWxpZC4gKi8K IAogc3RydWN0IHN5bXRhYnNfYW5kX2xpbmVzCiBkZWNvZGVfbGluZV9zcGVj XzEgKGNoYXIgKnN0cmluZywgaW50IGZ1bmZpcnN0bGluZSkKQEAgLTEyNDQ0 LDEwICsxMjQzMSwxMCBAQCBkZWNvZGVfbGluZV9zcGVjXzEgKGNoYXIgKnN0 cmluZywgaW50IGZ1bmZpcnN0bGluZSkKIAogICBpZiAoc3RyaW5nID09IDAp CiAgICAgZXJyb3IgKF8oIkVtcHR5IGxpbmUgc3BlY2lmaWNhdGlvbi4iKSk7 Ci0gIGlmIChkZWZhdWx0X2JyZWFrcG9pbnRfdmFsaWQpCisgIGlmIChsYXN0 X2Rpc3BsYXllZF9zYWxfaXNfdmFsaWQgKCkpCiAgICAgc2FscyA9IGRlY29k ZV9saW5lXzEgKCZzdHJpbmcsIGZ1bmZpcnN0bGluZSwKLQkJCSAgZGVmYXVs dF9icmVha3BvaW50X3N5bXRhYiwKLQkJCSAgZGVmYXVsdF9icmVha3BvaW50 X2xpbmUsCisJCQkgIGdldF9sYXN0X2Rpc3BsYXllZF9zeW10YWIgKCksCisJ CQkgIGdldF9sYXN0X2Rpc3BsYXllZF9saW5lICgpLAogCQkJICBOVUxMKTsK ICAgZWxzZQogICAgIHNhbHMgPSBkZWNvZGVfbGluZV8xICgmc3RyaW5nLCBm dW5maXJzdGxpbmUsCmRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2ludC5oIGIv Z2RiL2JyZWFrcG9pbnQuaAppbmRleCA1ZTVkMWI5Li5mMTcxMDM1IDEwMDY0 NAotLS0gYS9nZGIvYnJlYWtwb2ludC5oCisrKyBiL2dkYi9icmVha3BvaW50 LmgKQEAgLTEwMzMsOSArMTAzMyw2IEBAIGV4dGVybiBzdHJ1Y3QgYnJlYWtw b2ludCAqY2xvbmVfbW9tZW50YXJ5X2JyZWFrcG9pbnQgKHN0cnVjdCBicmVh a3BvaW50ICpicGt0KTsKIAogZXh0ZXJuIHZvaWQgc2V0X2lnbm9yZV9jb3Vu dCAoaW50LCBpbnQsIGludCk7CiAKLWV4dGVybiB2b2lkIHNldF9kZWZhdWx0 X2JyZWFrcG9pbnQgKGludCwgc3RydWN0IHByb2dyYW1fc3BhY2UgKiwKLQkJ CQkgICAgQ09SRV9BRERSLCBzdHJ1Y3Qgc3ltdGFiICosIGludCk7Ci0KIGV4 dGVybiB2b2lkIGJyZWFrcG9pbnRfaW5pdF9pbmZlcmlvciAoZW51bSBpbmZf Y29udGV4dCk7CiAKIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVh bnVwX2RlbGV0ZV9icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqKTsK QEAgLTEzNTksNCArMTM1Niw4IEBAIGV4dGVybiBzdHJ1Y3QgYnJlYWtwb2lu dCAqaXRlcmF0ZV9vdmVyX2JyZWFrcG9pbnRzIChpbnQgKCopIChzdHJ1Y3Qg YnJlYWtwb2ludCAqCiAKIGV4dGVybiBpbnQgdXNlcl9icmVha3BvaW50X3Ag KHN0cnVjdCBicmVha3BvaW50ICopOwogCisvKiBBdHRlbXB0IHRvIGRldGVy bWluZSBhcmNoaXRlY3R1cmUgb2YgbG9jYXRpb24gaWRlbnRpZmllZCBieSBT QUwuICAqLworZXh0ZXJuIHN0cnVjdCBnZGJhcmNoICoKK2dldF9zYWxfYXJj aCAoc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWwpOworCiAjZW5kaWYgLyog IWRlZmluZWQgKEJSRUFLUE9JTlRfSCkgKi8KZGlmZiAtLWdpdCBhL2dkYi9j bGkvY2xpLWNtZHMuYyBiL2dkYi9jbGkvY2xpLWNtZHMuYwppbmRleCBjY2Y2 ZWE2Li5kYWIzYTEyIDEwMDY0NAotLS0gYS9nZGIvY2xpL2NsaS1jbWRzLmMK KysrIGIvZ2RiL2NsaS9jbGktY21kcy5jCkBAIC0xODUsNiArMTg1LDggQEAg c3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnNldGNoZWNrbGlzdDsKIAogc3Ry dWN0IGNtZF9saXN0X2VsZW1lbnQgKnNob3djaGVja2xpc3Q7CiAKK3N0cnVj dCBjbWRfbGlzdF9lbGVtZW50ICpza2lwbGlzdDsKKwogLyogQ29tbWFuZCB0 cmFjaW5nIHN0YXRlLiAgKi8KIAogaW50IHNvdXJjZV92ZXJib3NlID0gMDsK QEAgLTEzMjksNiArMTMzMSw3IEBAIGluaXRfY21kX2xpc3RzICh2b2lkKQog ICBzaG93cHJpbnRsaXN0ID0gTlVMTDsKICAgc2V0Y2hlY2tsaXN0ID0gTlVM TDsKICAgc2hvd2NoZWNrbGlzdCA9IE5VTEw7CisgIHNraXBsaXN0ID0gTlVM TDsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTEzOTQsNyArMTM5Nyw3IEBAIGlu aXRfY2xpX2NtZHMgKHZvaWQpCiAgIGNoYXIgKnNvdXJjZV9oZWxwX3RleHQ7 CiAKICAgLyogRGVmaW5lIHRoZSBjbGFzc2VzIG9mIGNvbW1hbmRzLgotICAg ICBUaGV5IHdpbGwgYXBwZWFyIGluIHRoZSBoZWxwIGxpc3QgaW4gdGhlIHJl dmVyc2Ugb2YgdGhpcyBvcmRlci4gICovCisgICAgIFRoZXkgd2lsbCBhcHBl YXIgaW4gdGhlIGhlbHAgbGlzdCBpbiBhbHBoYWJldGljYWwgb3JkZXIuICAq LwogCiAgIGFkZF9jbWQgKCJpbnRlcm5hbHMiLCBjbGFzc19tYWludGVuYW5j ZSwgTlVMTCwgXygiXAogTWFpbnRlbmFuY2UgY29tbWFuZHMuXG5cCmRpZmYg LS1naXQgYS9nZGIvY2xpL2NsaS1jbWRzLmggYi9nZGIvY2xpL2NsaS1jbWRz LmgKaW5kZXggZTc5ZGNmMC4uNzNjY2RkMiAxMDA2NDQKLS0tIGEvZ2RiL2Ns aS9jbGktY21kcy5oCisrKyBiL2dkYi9jbGkvY2xpLWNtZHMuaApAQCAtMTA2 LDYgKzEwNiw4IEBAIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAq c2V0Y2hlY2tsaXN0OwogCiBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1l bnQgKnNob3djaGVja2xpc3Q7CiAKK2V4dGVybiBzdHJ1Y3QgY21kX2xpc3Rf ZWxlbWVudCAqc2tpcGxpc3Q7CisKIC8qIEV4cG9ydGVkIHRvIGdkYi90b3Au YyAqLwogCiB2b2lkIGluaXRfY21kX2xpc3RzICh2b2lkKTsKZGlmZiAtLWdp dCBhL2dkYi9kb2MvZ2RiLnRleGluZm8gYi9nZGIvZG9jL2dkYi50ZXhpbmZv CmluZGV4IGRkMGY3ZjYuLjM4MmRmZDQgMTAwNjQ0Ci0tLSBhL2dkYi9kb2Mv Z2RiLnRleGluZm8KKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwpAQCAtNDg1 NCw2ICs0ODU0LDExMSBAQCBwcm9jZWVkIHVudGlsIHRoZSBmdW5jdGlvbiBy ZXR1cm5zLgogQW4gYXJndW1lbnQgaXMgYSByZXBlYXQgY291bnQsIGFzIGlu IEBjb2Rle25leHR9LgogQGVuZCB0YWJsZQogCitAbm9kZSBTa2lwcGluZyBP dmVyIEZ1bmN0aW9ucyBhbmQgRmlsZXMKK0BzdWJzZWN0aW9uIFNraXBwaW5n IE92ZXIgRnVuY3Rpb25zIGFuZCBGaWxlcworQGNpbmRleCBza2lwcGluZyBv dmVyIGZ1bmN0aW9ucyBhbmQgZmlsZXMKKworVGhlIHByb2dyYW0geW91IGFy ZSBkZWJ1Z2dpbmcgbWF5IGNvbnRhaW4gc29tZSBmdW5jdGlvbnMgd2hpY2gg YXJlCit1bmludGVyZXN0aW5nIHRvIGRlYnVnLiAgVGhlIEBjb2Rle3NraXB9 IGNvbWFuZCBsZXRzIHlvdSB0ZWxsIEB2YWx1ZXtHREJOfSB0bworc2tpcCBh IGZ1bmN0aW9uIG9yIGFsbCBmdW5jdGlvbnMgaW4gYSBmaWxlIHdoZW4gc3Rl cHBpbmcuCisKK0ZvciBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5n IEMgZnVuY3Rpb246CisKK0BzbWFsbGV4YW1wbGUKKzEwMSAgICAgaW50IGZ1 bmMoKQorMTAyICAgICBAeworMTAzICAgICAgICAgZm9vKGJvcmluZygpKTsK KzEwNCAgICAgICAgIGJhcihib3JpbmcoKSk7CisxMDUgICAgIEB9CitAZW5k IHNtYWxsZXhhbXBsZQorCitAbm9pbmRlbnQKK1N1cHBvc2UgeW91IHdpc2gg dG8gc3RlcCBpbnRvIHRoZSBmdW5jdGlvbnMgQGNvZGV7Zm9vfSBhbmQgQGNv ZGV7YmFyfSwgYnV0IHlvdQorYXJlIG5vdCBpbnRlcmVzdGVkIGluIHN0ZXBw aW5nIHRocm91Z2ggQGNvZGV7Ym9yaW5nfS4gIElmIHlvdSBydW4gQGNvZGV7 c3RlcH0KK2F0IGxpbmUgMTAzLCB5b3UnbGwgZW50ZXIgQGNvZGV7Ym9yaW5n KCl9LCBidXQgaWYgeW91IHJ1biBAY29kZXtuZXh0fSwgeW91J2xsCitzdGVw IG92ZXIgYm90aCBAY29kZXtmb299IGFuZCBAY29kZXtib3Jpbmd9IQorCitP bmUgc29sdXRpb24gaXMgdG8gQGNvZGV7c3RlcH0gaW50byBAY29kZXtib3Jp bmd9IGFuZCB1c2UgdGhlIEBjb2Rle2ZpbmlzaH0KK2NvbW1hbmQgdG8gaW1t ZWRpYXRlbHkgZXhpdCBpdC4gIEJ1dCB0aGlzIGNhbiBiZWNvbWUgdGVkaW91 cyBpZiBAY29kZXtib3Jpbmd9CitpcyBjYWxsZWQgZnJvbSBtYW55IHBsYWNl cy4KKworQSBtb3JlIGZsZXhpYmxlIHNvbHV0aW9uIGlzIHRvIGV4ZWN1dGUg QGtiZHtza2lwIGJvcmluZ30uICBUaGlzIGluc3RydWN0cworQHZhbHVle0dE Qk59IG5ldmVyIHRvIHN0ZXAgaW50byBAY29kZXtib3Jpbmd9LiAgTm93IHdo ZW4geW91IGV4ZWN1dGUKK0Bjb2Rle3N0ZXB9IGF0IGxpbmUgMTAzLCB5b3Un bGwgc3RlcCBvdmVyIEBjb2Rle2JvcmluZ30gYW5kIGRpcmVjdGx5IGludG8K K0Bjb2Rle2Zvb30uCisKK1lvdSBjYW4gYWxzbyBpbnN0cnVjdCBAdmFsdWV7 R0RCTn0gdG8gc2tpcCBhbGwgZnVuY3Rpb25zIGluIGEgZmlsZSwgd2l0aCwg Zm9yCitleGFtcGxlLCBAY29kZXtza2lwIGZpbGUgYm9yaW5nLmN9LgorCitA dGFibGUgQGNvZGUKK0BraW5kZXggc2tpcCBmdW5jdGlvbgorQGl0ZW0gc2tp cCBAcntbfUB2YXJ7bGluZXNwZWN9QHJ7XX0KK0BpdGVteCBza2lwIGZ1bmN0 aW9uIEBye1t9QHZhcntsaW5lc3BlY31AcntdfQorQWZ0ZXIgcnVubmluZyB0 aGlzIGNvbW1hbmQsIHRoZSBmdW5jdGlvbiBuYW1lZCBieSBAdmFye2xpbmVz cGVjfSBvciB0aGUKK2Z1bmN0aW9uIGNvbnRhaW5pbmcgdGhlIGxpbmUgbmFt ZWQgYnkgQHZhcntsaW5lc3BlY30gd2lsbCBiZSBza2lwcGVkIG92ZXIgd2hl bgorc3RlcHBpbmcuICBAeHJlZntTcGVjaWZ5IExvY2F0aW9ufQorCitJZiB5 b3UgZG8gbm90IHNwZWNpZnkgQHZhcntsaW5lc3BlY30sIHRoZSBmdW5jdGlv biB5b3UncmUgY3VycmVudGx5IGRlYnVnZ2luZword2lsbCBiZSBza2lwcGVk LgorCisoSWYgeW91IGhhdmUgYSBmdW5jdGlvbiBjYWxsZWQgQGNvZGV7Zmls ZX0gdGhhdCB5b3Ugd2FudCB0byBza2lwLCB1c2UKK0BrYmR7c2tpcCBmdW5j dGlvbiBmaWxlfS4pCisKK0BraW5kZXggc2tpcCBmaWxlCitAaXRlbSBza2lw IGZpbGUgQHJ7W31AdmFye2ZpbGVuYW1lfUBye119CitBZnRlciBydW5uaW5n IHRoaXMgY29tbWFuZCwgYW55IGZ1bmN0aW9uIHdob3NlIHNvdXJjZSBsaXZl cyBpbiBAdmFye2ZpbGVuYW1lfQord2lsbCBiZSBza2lwcGVkIG92ZXIgd2hl biBzdGVwcGluZy4KKworSWYgeW91IGRvIG5vdCBzcGVjaWZ5IEB2YXJ7Zmls ZW5hbWV9LCBmdW5jdGlvbnMgd2hvc2Ugc291cmNlIGxpdmVzIGluIHRoZSBm aWxlCit5b3UncmUgY3VycmVudGx5IGRlYnVnZ2luZyB3aWxsIGJlIHNraXBw ZWQuCitAZW5kIHRhYmxlCisKK1NraXBzIGNhbiBiZSBsaXN0ZWQsIGRlbGV0 ZWQsIGRpc2FibGVkLCBhbmQgZW5hYmxlZCwgbXVjaCBsaWtlIGJyZWFrcG9p bnRzLgorVGhlc2UgYXJlIHRoZSBjb21tYW5kcyBmb3IgbWFuYWdpbmcgeW91 ciBsaXN0IG9mIHNraXBzOgorCitAdGFibGUgQGNvZGUKK0BraW5kZXggaW5m byBza2lwCitAaXRlbSBpbmZvIHNraXAgQHJ7W31AdmFye3JhbmdlfUBye119 CitQcmludCBkZXRhaWxzIGFib3V0IHRoZSBzcGVjaWZpZWQgc2tpcChzKS4g IElmIEB2YXJ7cmFuZ2V9IGlzIG5vdCBzcGVjaWZpZWQsCitwcmludCBhIHRh YmxlIHdpdGggZGV0YWlscyBhYm91dCBhbGwgZnVuY3Rpb25zIGFuZCBmaWxl cyBtYXJrZWQgZm9yIHNraXBwaW5nLgorQGNvZGV7aW5mbyBza2lwfSBwcmlu dHMgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBhYm91dCBlYWNoIHNraXA6 CisKK0B0YWJsZSBAZW1waAorQGl0ZW0gSWRlbnRpZmllcgorQSBudW1iZXIg aWRlbnRpZnlpbmcgdGhpcyBza2lwLgorQGl0ZW0gVHlwZQorVGhlIHR5cGUg b2YgdGhpcyBza2lwLCBlaXRoZXIgQHNhbXB7ZnVuY3Rpb259IG9yIEBzYW1w e2ZpbGV9LgorQGl0ZW0gRW5hYmxlZCBvciBEaXNhYmxlZAorRW5hYmxlZCBz a2lwcyBhcmUgbWFya2VkIHdpdGggQHNhbXB7eX0uICBEaXNhYmxlZCBza2lw cyBhcmUgbWFya2VkIHdpdGggQHNhbXB7bn0uCitAaXRlbSBBZGRyZXNzCitG b3IgZnVuY3Rpb24gc2tpcHMsIHRoaXMgY29sdW1uIGluZGljYXRlcyB0aGUg YWRkcmVzcyBpbiBtZW1vcnkgb2YgdGhlIGZ1bmN0aW9uCitiZWluZyBza2lw cGVkLiAgSWYgeW91J3ZlIHNldCBhIGZ1bmN0aW9uIHNraXAgb24gYSBmdW5j dGlvbiB3aGljaCBoYXMgbm90IHlldAorYmVlbiBsb2FkZWQsIHRoaXMgZmll bGQgd2lsbCBjb250YWluIEBzYW1wezxQRU5ESU5HPn0uICBPbmNlIGEgc2hh cmVkIGxpYnJhcnkKK3doaWNoIGhhcyB0aGUgZnVuY3Rpb24gaXMgbG9hZGVk LCBAY29kZXtpbmZvIHNraXB9IHdpbGwgc2hvdyB0aGUgZnVuY3Rpb24ncwor YWRkcmVzcyBoZXJlLgorQGl0ZW0gV2hhdAorRm9yIGZpbGUgc2tpcHMsIHRo aXMgZmllbGQgY29udGFpbnMgdGhlIGZpbGVuYW1lIGJlaW5nIHNraXBwZWQu ICBGb3IgZnVuY3Rpb25zCitza2lwcywgdGhpcyBmaWVsZCBjb250YWlucyB0 aGUgZnVuY3Rpb24gbmFtZSBhbmQgaXRzIGxpbmUgbnVtYmVyIGluIHRoZSBm aWxlCit3aGVyZSBpdCBpcyBkZWZpbmVkLgorQGVuZCB0YWJsZQorCitAa2lu ZGV4IHNraXAgZGVsZXRlCitAaXRlbSBza2lwIGRlbGV0ZSBAcntbfUB2YXJ7 cmFuZ2V9QHJ7XX0KK0RlbGV0ZSB0aGUgc3BlY2lmaWVkIHNraXAocykuICBJ ZiBAdmFye3JhbmdlfSBpcyBub3Qgc3BlY2lmaWVkLCBkZWxldGUgYWxsCitz a2lwcy4KKworQGtpbmRleCBza2lwIGVuYWJsZQorQGl0ZW0gc2tpcCBlbmFi bGUgQHJ7W31AdmFye3JhbmdlfUBye119CitFbmFibGUgdGhlIHNwZWNpZmll ZCBza2lwKHMpLiAgSWYgQHZhcntyYW5nZX0gaXMgbm90IHNwZWNpZmllZCwg ZW5hYmxlIGFsbAorc2tpcHMuCisKK0BraW5kZXggc2tpcCBkaXNhYmxlCitA aXRlbSBza2lwIGRpc2FibGUgQHJ7W31AdmFye3JhbmdlfUBye119CitEaXNh YmxlIHRoZSBzcGVjaWZpZWQgc2tpcChzKS4gIElmIEB2YXJ7cmFuZ2V9IGlz IG5vdCBzcGVjaWZpZWQsIGRpc2FibGUgYWxsCitza2lwcy4KKworQGVuZCB0 YWJsZQorCiBAbm9kZSBTaWduYWxzCiBAc2VjdGlvbiBTaWduYWxzCiBAY2lu ZGV4IHNpZ25hbHMKZGlmZiAtLWdpdCBhL2dkYi9nZGJjbWQuaCBiL2dkYi9n ZGJjbWQuaAppbmRleCBjMDJjZTY5Li42MDZiODEyIDEwMDY0NAotLS0gYS9n ZGIvZ2RiY21kLmgKKysrIGIvZ2RiL2dkYmNtZC5oCkBAIC0xMjQsNiArMTI0 LDggQEAgZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpzZXRjaGVj a2xpc3Q7CiAKIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqc2hv d2NoZWNrbGlzdDsKIAorZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50 ICpza2lwbGlzdDsKKwogLyogQ2hhaW4gY29udGFpbmluZyBhbGwgZGVmaW5l ZCAic2F2ZSIgc3ViY29tbWFuZHMuICAqLwogCiBleHRlcm4gc3RydWN0IGNt ZF9saXN0X2VsZW1lbnQgKnNhdmVfY21kbGlzdDsKZGlmZiAtLWdpdCBhL2dk Yi9pbmZydW4uYyBiL2dkYi9pbmZydW4uYwppbmRleCAyMjUwMzRjLi5lOGJl MTIxIDEwMDY0NAotLS0gYS9nZGIvaW5mcnVuLmMKKysrIGIvZ2RiL2luZnJ1 bi5jCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAidHJhY2Vwb2ludC5o IgogI2luY2x1ZGUgImNvbnRpbnVhdGlvbnMuaCIKICNpbmNsdWRlICJpbnRl cnBzLmgiCisjaW5jbHVkZSAic2tpcC5oIgogCiAvKiBQcm90b3R5cGVzIGZv ciBsb2NhbCBmdW5jdGlvbnMgKi8KIApAQCAtNDgyOSw3ICs0ODMwLDggQEAg cHJvY2Vzc19ldmVudF9zdG9wX3Rlc3Q6CiAJfQogCiAgICAgICAvKiBJZiB3 ZSBoYXZlIGxpbmUgbnVtYmVyIGluZm9ybWF0aW9uIGZvciB0aGUgZnVuY3Rp b24gd2UgYXJlCi0gICAgICAgICB0aGlua2luZyBvZiBzdGVwcGluZyBpbnRv LCBzdGVwIGludG8gaXQuCisJIHRoaW5raW5nIG9mIHN0ZXBwaW5nIGludG8g YW5kIHRoZSBmdW5jdGlvbiBpc24ndCBvbiB0aGUgc2tpcAorCSBsaXN0LCBz dGVwIGludG8gaXQuCiAKICAgICAgICAgIElmIHRoZXJlIGFyZSBzZXZlcmFs IHN5bXRhYnMgYXQgdGhhdCBQQyAoZS5nLiB3aXRoIGluY2x1ZGUKICAgICAg ICAgIGZpbGVzKSwganVzdCB3YW50IHRvIGtub3cgd2hldGhlciAqYW55KiBv ZiB0aGVtIGhhdmUgbGluZQpAQCAtNDgzOCw3ICs0ODQwLDggQEAgcHJvY2Vz c19ldmVudF9zdG9wX3Rlc3Q6CiAJc3RydWN0IHN5bXRhYl9hbmRfbGluZSB0 bXBfc2FsOwogCiAJdG1wX3NhbCA9IGZpbmRfcGNfbGluZSAoZWNzLT5zdG9w X2Z1bmNfc3RhcnQsIDApOwotCWlmICh0bXBfc2FsLmxpbmUgIT0gMCkKKwlp ZiAodG1wX3NhbC5saW5lICE9IDAgJiYKKwkgICAgIWZ1bmN0aW9uX3BjX2lz X21hcmtlZF9mb3Jfc2tpcCAoZWNzLT5zdG9wX2Z1bmNfc3RhcnQpKQogCSAg ewogCSAgICBpZiAoZXhlY3V0aW9uX2RpcmVjdGlvbiA9PSBFWEVDX1JFVkVS U0UpCiAJICAgICAgaGFuZGxlX3N0ZXBfaW50b19mdW5jdGlvbl9iYWNrd2Fy ZCAoZ2RiYXJjaCwgZWNzKTsKZGlmZiAtLWdpdCBhL2dkYi9za2lwLmMgYi9n ZGIvc2tpcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmQyZjA2NGYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvc2tpcC5jCkBAIC0w LDAgKzEsNTk4IEBACisvKiBTa2lwcGluZyB1bmludGVyZXN0aW5nIGZpbGVz IGFuZCBmdW5jdGlvbnMgd2hpbGUgc3RlcHBpbmcuCisKKyAgIENvcHlyaWdo dCAoQykgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKwor ICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1ZGUgImRlZnMu aCIKKyNpbmNsdWRlICJza2lwLmgiCisjaW5jbHVkZSAidmFsdWUuaCIKKyNp bmNsdWRlICJ2YWxwcmludC5oIgorI2luY2x1ZGUgInVpLW91dC5oIgorI2lu Y2x1ZGUgImdkYl9zdHJpbmcuaCIKKyNpbmNsdWRlICJzeW10YWIuaCIKKyNp bmNsdWRlICJnZGJjbWQuaCIKKyNpbmNsdWRlICJjb21tYW5kLmgiCisjaW5j bHVkZSAiY29tcGxldGVyLmgiCisjaW5jbHVkZSAic3RhY2suaCIKKyNpbmNs dWRlICJjbGkvY2xpLXV0aWxzLmgiCisjaW5jbHVkZSAiYXJjaC11dGlscy5o IgorI2luY2x1ZGUgImxpbmVzcGVjLmgiCisjaW5jbHVkZSAib2JqZmlsZXMu aCIKKyNpbmNsdWRlICJleGNlcHRpb25zLmgiCisjaW5jbHVkZSAiYnJlYWtw b2ludC5oIiAvKiBmb3IgZ2V0X3NhbF9hcmNoKCkgKi8KKworc3RydWN0IHNr aXBsaXN0X2VudHJ5Cit7CisgIGludCBudW1iZXI7CisKKyAgLyogTlVMTCBp ZiB0aGlzIGlzbid0IGEgc2tpcGxpc3QgZW50cnkgZm9yIGFuIGVudGlyZSBm aWxlLgorICAgICBUaGUgc2tpcGxpc3QgZW50cnkgb3ducyB0aGlzIHBvaW50 ZXIuICAqLworICBjaGFyICpmaWxlbmFtZTsKKworICAvKiBUaGUgbmFtZSBv ZiB0aGUgbWFya2VkLWZvci1za2lwIGZ1bmN0aW9uLCBpZiB0aGlzIGlzIGEg c2tpcGxpc3QKKyAgICAgZW50cnkgZm9yIGEgZnVuY3Rpb24uICBOb3RlIHRo YXQgdGhpcyBtaWdodCBiZSBub24tbnVsbCBldmVuIGlmCisgICAgIHRoZSBw YyBpcyAwIGlmIHRoZSBlbnRyeSBpcyBwZW5kaW5nIGEgc2hhcmVkIGxpYnJh cnkgbG9hZC4KKworICAgICBUaGUgc2tpcGxpc3QgZW50cnkgb3ducyB0aGlz IHBvaW50ZXIuICAqLworICBjaGFyICpmdW5jdGlvbl9uYW1lOworCisgIC8q IDAgaWYgdGhpcyBpcyBhIHNraXBsaXN0IGVudHJ5IGZvciBhbiBlbnRpcmUg ZmlsZSwgb3IgaWYgdGhpcworICAgICBlbnRyeSB3aWxsIGJlIG9uIGEgZnVu Y3Rpb24sIHBlbmRpbmcgYSBzaGFyZWQgbGlicmFyeSBsb2FkLiAgKi8KKyAg Q09SRV9BRERSIHBjOworCisgIC8qIEFyY2hpdGVjdHVyZSB3ZSB1c2VkIHRv IGNyZWF0ZSB0aGUgc2tpcGxpc3QgZW50cnkuIE1heSBiZSBudWxsCisgICAg IGlmIHRoZSBlbnRyeSBpcyBwZW5kaW5nIGEgc2hhcmVkIGxpYnJhcnkgbG9h ZC4gICovCisgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOworCisgIGludCBl bmFibGVkOworICBpbnQgcGVuZGluZzsKKworICBzdHJ1Y3Qgc2tpcGxpc3Rf ZW50cnkgKm5leHQ7Cit9OworCitzdGF0aWMgdm9pZCBza2lwX2Z1bmN0aW9u X2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KTsKK3N0YXRpYyB2 b2lkIHNraXBfZmlsZV9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0 eSk7CitzdGF0aWMgdm9pZCBza2lwX2luZm8gKGNoYXIgKmFyZywgaW50IGZy b21fdHR5KTsKKworc3RhdGljIHZvaWQgYWRkX3NraXBsaXN0X2VudHJ5IChz dHJ1Y3Qgc2tpcGxpc3RfZW50cnkgKmUpOworc3RhdGljIHZvaWQgc2tpcF9m dW5jdGlvbl9wYyAoQ09SRV9BRERSIHBjLCBjaGFyICpuYW1lLAorCQkJICAg ICAgc3RydWN0IGdkYmFyY2ggKmFyY2gsCisJCQkgICAgICBpbnQgcGVuZGlu Zyk7CisKK3N0YXRpYyBzdHJ1Y3Qgc2tpcGxpc3RfZW50cnkgKnNraXBsaXN0 X2VudHJ5X2NoYWluOworc3RhdGljIGludCBza2lwbGlzdF9lbnRyeV9jb3Vu dDsKKworI2RlZmluZSBBTExfU0tJUExJU1RfRU5UUklFUyhFKSBcCisgIGZv ciAoRSA9IHNraXBsaXN0X2VudHJ5X2NoYWluOyBFOyBFID0gRS0+bmV4dCkK KworI2RlZmluZSBBTExfU0tJUExJU1RfRU5UUklFU19TQUZFKEUsVE1QKSBc CisgIGZvciAoRSA9IHNraXBsaXN0X2VudHJ5X2NoYWluOyAgICAgICAgIFwK KyAgICAgICBFID8gKFRNUCA9IEUtPm5leHQsIDEpIDogMDsgICAgICAgXAor ICAgICAgIEUgPSBUTVApCisKK3N0YXRpYyB2b2lkCitza2lwX2ZpbGVfY29t bWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCit7CisgIHN0cnVjdCBz a2lwbGlzdF9lbnRyeSAqZTsKKyAgc3RydWN0IHN5bXRhYiAqc3ltdGFiOwor ICBpbnQgcGVuZGluZyA9IDA7CisgIGNoYXIgKmZpbGVuYW1lID0gMDsKKwor ICAvKiBJZiBubyBhcmd1bWVudCB3YXMgZ2l2ZW4sIHRyeSB0byBkZWZhdWx0 IHRvIHRoZSBsYXN0CisgICAgIGRpc3BsYXllZCBjb2RlcG9pbnQuICovCisg IGlmIChhcmcgPT0gMCkKKyAgICB7CisgICAgICBzeW10YWIgPSBnZXRfbGFz dF9kaXNwbGF5ZWRfc3ltdGFiICgpOworICAgICAgaWYgKHN5bXRhYiA9PSAw KQorCWVycm9yIChfKCJObyBkZWZhdWx0IGZpbGUgbm93LiIpKTsKKyAgICAg IGVsc2UKKwlmaWxlbmFtZSA9IHN5bXRhYi0+ZmlsZW5hbWU7CisgICAgfQor ICBlbHNlCisgICAgeworICAgICAgc3ltdGFiID0gbG9va3VwX3N5bXRhYiAo YXJnKTsKKyAgICAgIGlmIChzeW10YWIgPT0gMCkKKwl7CisJICBmcHJpbnRm X2ZpbHRlcmVkIChnZGJfc3RkZXJyLCBfKCJObyBzb3VyY2UgZmlsZSBuYW1l ZCAlcy5cbiIpLCBhcmcpOworCSAgaWYgKCFucXVlcnkgKF8oIlwKK0lnbm9y ZSBmaWxlIHBlbmRpbmcgZnV0dXJlIHNoYXJlZCBsaWJyYXJ5IGxvYWQ/ICIp KSkKKwkgICAgcmV0dXJuOworCisJICBwZW5kaW5nID0gMTsKKwkgIGZpbGVu YW1lID0gYXJnOworCX0KKyAgICAgIGVsc2UKKwlmaWxlbmFtZSA9IHN5bXRh Yi0+ZmlsZW5hbWU7CisgICAgfQorCisgIGUgPSBYWkFMTE9DIChzdHJ1Y3Qg c2tpcGxpc3RfZW50cnkpOworICBlLT5maWxlbmFtZSA9IHhzdHJkdXAgKGZp bGVuYW1lKTsKKyAgZS0+ZW5hYmxlZCA9IDE7CisgIGUtPnBlbmRpbmcgPSBw ZW5kaW5nOworICBpZiAoc3ltdGFiICE9IDApCisgICAgZS0+Z2RiYXJjaCA9 IGdldF9vYmpmaWxlX2FyY2ggKHN5bXRhYi0+b2JqZmlsZSk7CisKKyAgYWRk X3NraXBsaXN0X2VudHJ5IChlKTsKKworICBwcmludGZfZmlsdGVyZWQgKF8o IkZpbGUgJXMgd2lsbCBiZSBza2lwcGVkIHdoZW4gc3RlcHBpbmcuXG4iKSwg ZmlsZW5hbWUpOworfQorCitzdGF0aWMgdm9pZAorc2tpcF9mdW5jdGlvbl9j b21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKK3sKKyAgQ09SRV9B RERSIGZ1bmNfcGM7CisgIGNoYXIgKm5hbWUgPSBOVUxMOworCisgIC8qIERl ZmF1bHQgdG8gdGhlIGN1cnJlbnQgZnVuY3Rpb24gaWYgbm8gYXJndW1lbnQg aXMgZ2l2ZW4uICovCisgIGlmIChhcmcgPT0gMCkKKyAgICB7CisgICAgICBD T1JFX0FERFIgcGM7CisgICAgICBpZiAoIWxhc3RfZGlzcGxheWVkX3NhbF9p c192YWxpZCAoKSkKKwllcnJvciAoXygiTm8gZGVmYXVsdCBmdW5jdGlvbiBu b3cuIikpOworCisgICAgICBwYyA9IGdldF9sYXN0X2Rpc3BsYXllZF9hZGRy ICgpOworICAgICAgaWYgKCFmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKHBj LCAmbmFtZSwgJmZ1bmNfcGMsIDApKQorCXsKKwkgIGVycm9yIChfKCJObyBm dW5jdGlvbiBmb3VuZCBjb250YWluaW5nIGN1cnJlbnQgcHJvZ3JhbSBwb2lu dCAlcy4iKSwKKwkJICBwYWRkcmVzcyAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwg cGMpKTsKKwl9CisgICAgICBza2lwX2Z1bmN0aW9uX3BjIChmdW5jX3BjLCBu YW1lLCBnZXRfY3VycmVudF9hcmNoICgpLCAwKTsKKyAgICB9CisgIGVsc2UK KyAgICB7CisgICAgICAvKiBEZWNvZGUgYXJnLiAgV2Ugc2V0IGZ1bmZpcnN0 bGluZT0xIHNvIGRlY29kZV9saW5lXzEgd2lsbCBnaXZlIHVzIHRoZQorCSBm aXJzdCBsaW5lIG9mIHRoZSBmdW5jdGlvbiBzcGVjaWZpZWQsIGlmIGl0IGNh biwgYW5kIHNvIHRoYXQgd2UnbGwKKwkgcmVqZWN0IHZhcmlhYmxlIG5hbWVz IGFuZCB0aGUgbGlrZS4gKi8KKworICAgICAgaW50IGk7CisgICAgICBpbnQg cGVuZGluZyA9IDA7CisgICAgICBjaGFyICpvcmlnX2FyZyA9IGFyZzsgLyog ZGVjb2RlX2xpbmVfMSBtb2RpZmllcyB0aGUgYXJnIHBvaW50ZXIuICovCisg ICAgICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBkZWNvZGVfZXhj ZXB0aW9uOworICAgICAgc3RydWN0IHN5bXRhYnNfYW5kX2xpbmVzIHNhbHM7 CisKKyAgICAgIFRSWV9DQVRDSCAoZGVjb2RlX2V4Y2VwdGlvbiwgTk9UX0ZP VU5EX0VSUk9SKQorCXsKKwkgIHNhbHMgPSBkZWNvZGVfbGluZV8xICgmYXJn LCAxLCAwLCAwLCAwKTsKKwl9CisKKyAgICAgIGlmIChkZWNvZGVfZXhjZXB0 aW9uLnJlYXNvbiA8IDApCisgICAgICAgIHsKKwkgIGZwcmludGZfZmlsdGVy ZWQgKGdkYl9zdGRlcnIsCisJCQkgICAgXygiTm8gZnVuY3Rpb24gZm91bmQg bmFtZWQgJXMuXG4iKSwgb3JpZ19hcmcpOworCisJICBpZiAobnF1ZXJ5IChf KCJcCitJZ25vcmUgZnVuY3Rpb24gcGVuZGluZyBmdXR1cmUgc2hhcmVkIGxp YnJhcnkgbG9hZD8gIikpKQorCSAgICB7CisJICAgICAgLyogQWRkIHRoZSBw ZW5kaW5nIHNraXBsaXN0IGVudHJ5LiAqLworCSAgICAgIHNraXBfZnVuY3Rp b25fcGMgKDAsIG9yaWdfYXJnLCAwLCAxKTsKKwkgICAgfQorCisJICByZXR1 cm47CisJfQorCisgICAgICBpZiAoc2Fscy5uZWx0cyA+IDEpCisJZXJyb3Ig KF8oIlNwZWNpZnkganVzdCBvbmUgZnVuY3Rpb24gYXQgYSB0aW1lLiIpKTsK KyAgICAgIGlmIChzdHJsZW4gKGFyZykgIT0gMCkKKwllcnJvciAoXygiSnVu ayBhdCBlbmQgb2YgYXJndW1lbnRzLiIpKTsKKworICAgICAgLyogVGhlIHBj IGRlY29kZV9saW5lXzEgZ2l2ZXMgdXMgaXMgdGhlIGZpcnN0IGxpbmUgb2Yg dGhlIGZ1bmN0aW9uLAorCSBidXQgd2UgYWN0dWFsbHkgd2FudCB0aGUgbGlu ZSBiZWZvcmUgdGhhdC4gIFRoZSBjYWxsIHRvCisJIGZpbmRfcGNfcGFydGlh bF9mdW5jdGlvbiBnZXRzIHVzIHRoZSB2YWx1ZSB3ZSBhY3R1YWxseSB3YW50 LiAqLworICAgICAgeworCXN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc2FsID0g c2Fscy5zYWxzWzBdOworCUNPUkVfQUREUiBwYyA9IHNhbC5wYzsKKwlDT1JF X0FERFIgZnVuY19zdGFydCA9IDA7CisJc3RydWN0IGdkYmFyY2ggKmFyY2gg PSBnZXRfc2FsX2FyY2ggKHNhbCk7CisKKwlpZiAoIWZpbmRfcGNfcGFydGlh bF9mdW5jdGlvbiAocGMsICZuYW1lLCAmZnVuY19zdGFydCwgMCkpCisJICB7 CisJICAgIGVycm9yIChfKCJObyBmdW5jdGlvbiBmb3VuZCBjb250YWluaW5n IHByb2dyYW0gcG9pbnQgJXMuIiksCisJCSAgICAgcGFkZHJlc3MgKGFyY2gs IHBjKSk7CisJICB9CisKKwlza2lwX2Z1bmN0aW9uX3BjIChmdW5jX3N0YXJ0 LCBuYW1lLCBhcmNoLCAwKTsKKyAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRp YyB2b2lkCitza2lwX2luZm8gKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQor eworICBzdHJ1Y3Qgc2tpcGxpc3RfZW50cnkgKmU7CisgIGludCBudW1fcHJp bnRhYmxlX2VudHJpZXMgPSAwOworICBpbnQgYWRkcmVzc193aWR0aCA9IDEw OworICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOworICBzdHJ1 Y3QgY2xlYW51cCAqdGJsX2NoYWluOworCisgIGdldF91c2VyX3ByaW50X29w dGlvbnMgKCZvcHRzKTsKKworICAvKiBDb3VudCB0aGUgbnVtYmVyIG9mIHJv d3MgaW4gdGhlIHRhYmxlIGFuZCBzZWUgaWYgd2UgbmVlZCBzcGFjZSBmb3Ig YQorICAgICA2NC1iaXQgYWRkcmVzcyBhbnl3aGVyZS4gKi8KKyAgQUxMX1NL SVBMSVNUX0VOVFJJRVMgKGUpCisgICAgaWYgKGFyZyA9PSAwIHx8IG51bWJl cl9pc19pbl9saXN0KGFyZywgZS0+bnVtYmVyKSkKKyAgICAgIHsKKwludW1f cHJpbnRhYmxlX2VudHJpZXMrKzsKKwlpZiAoZS0+Z2RiYXJjaCAmJiBnZGJh cmNoX2FkZHJfYml0IChlLT5nZGJhcmNoKSA+IDMyKQorCSAgYWRkcmVzc193 aWR0aCA9IDE4OworICAgICAgfQorCisgIGlmIChudW1fcHJpbnRhYmxlX2Vu dHJpZXMgPT0gMCkKKyAgICB7CisgICAgICBpZiAoYXJnID09IDApCisJdWlf b3V0X21lc3NhZ2UgKGN1cnJlbnRfdWlvdXQsIDAsIF8oIlwKK05vdCBza2lw cGluZyBhbnkgZmlsZXMgb3IgZnVuY3Rpb25zLlxuIikpOworICAgICAgZWxz ZQorCXVpX291dF9tZXNzYWdlIChjdXJyZW50X3Vpb3V0LCAwLAorCQkJXygi Tm8gc2tpcGxpc3QgZW50cmllcyBmb3VuZCB3aXRoIG51bWJlciAlcy5cbiIp LCBhcmcpOworCisgICAgICByZXR1cm47CisgICAgfQorCisgIGlmIChvcHRz LmFkZHJlc3NwcmludCkKKyAgICB0YmxfY2hhaW4gPSBtYWtlX2NsZWFudXBf dWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAoY3VycmVudF91aW91dCwgNSwKKwkJ CQkJCSAgICAgbnVtX3ByaW50YWJsZV9lbnRyaWVzLAorCQkJCQkJICAgICAi U2tpcGxpc3RUYWJsZSIpOworICBlbHNlCisgICAgdGJsX2NoYWluCisgICAg ICAgPSBtYWtlX2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAoY3Vy cmVudF91aW91dCwgNCwKKwkJCQkJICAgICAgbnVtX3ByaW50YWJsZV9lbnRy aWVzLAorCQkJCQkgICAgICAiU2tpcGxpc3RUYWJsZSIpOworCisgIHVpX291 dF90YWJsZV9oZWFkZXIgKGN1cnJlbnRfdWlvdXQsIDcsIHVpX2xlZnQsICJu dW1iZXIiLCAiTnVtIik7ICAgICAgLyogMSAqLworICB1aV9vdXRfdGFibGVf aGVhZGVyIChjdXJyZW50X3Vpb3V0LCAxNCwgdWlfbGVmdCwgInR5cGUiLCAi VHlwZSIpOyAgICAgIC8qIDIgKi8KKyAgdWlfb3V0X3RhYmxlX2hlYWRlciAo Y3VycmVudF91aW91dCwgMywgdWlfbGVmdCwgImVuYWJsZWQiLCAiRW5iIik7 ICAgICAvKiAzICovCisgIGlmIChvcHRzLmFkZHJlc3NwcmludCkKKyAgICB7 CisgICAgICB1aV9vdXRfdGFibGVfaGVhZGVyIChjdXJyZW50X3Vpb3V0LCBh ZGRyZXNzX3dpZHRoLCB1aV9sZWZ0LAorCQkJICAgImFkZHIiLCAiQWRkcmVz cyIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDQgKi8KKyAgICB9 CisgIHVpX291dF90YWJsZV9oZWFkZXIgKGN1cnJlbnRfdWlvdXQsIDQwLCB1 aV9ub2FsaWduLCAid2hhdCIsICJXaGF0Iik7ICAgLyogNSAqLworICB1aV9v dXRfdGFibGVfYm9keSAoY3VycmVudF91aW91dCk7CisKKyAgQUxMX1NLSVBM SVNUX0VOVFJJRVMgKGUpCisgICAgeworICAgICAgc3RydWN0IGNsZWFudXAg KmVudHJ5X2NoYWluOworCisgICAgICBRVUlUOworICAgICAgaWYgKGFyZyAh PSAwICYmICFudW1iZXJfaXNfaW5fbGlzdChhcmcsIGUtPm51bWJlcikpCisJ Y29udGludWU7CisKKyAgICAgIGVudHJ5X2NoYWluID0gbWFrZV9jbGVhbnVw X3VpX291dF90dXBsZV9iZWdpbl9lbmQgKGN1cnJlbnRfdWlvdXQsCisJCQkJ CQkJICJibGtsc3QtZW50cnkiKTsKKyAgICAgIHVpX291dF9maWVsZF9pbnQg KGN1cnJlbnRfdWlvdXQsICJudW1iZXIiLCBlLT5udW1iZXIpOyAgICAgICAg ICAgICAvKiAxICovCisKKyAgICAgIGlmIChlLT5mdW5jdGlvbl9uYW1lICE9 IDApCisJdWlfb3V0X2ZpZWxkX3N0cmluZyAoY3VycmVudF91aW91dCwgInR5 cGUiLCAiZnVuY3Rpb24iKTsgICAgICAgICAvKiAyICovCisgICAgICBlbHNl IGlmIChlLT5maWxlbmFtZSAhPSAwKQorCXVpX291dF9maWVsZF9zdHJpbmcg KGN1cnJlbnRfdWlvdXQsICJ0eXBlIiwgImZpbGUiKTsgICAgICAgICAgICAg LyogMiAqLworICAgICAgZWxzZQorCWludGVybmFsX2Vycm9yIChfX0ZJTEVf XywgX19MSU5FX18sIF8oIlwKK1NraXBsaXN0IGVudHJ5IHNob3VsZCBoYXZl IGVpdGhlciBhIGZpbGVuYW1lIG9yIGEgZnVuY3Rpb24gbmFtZS4iKSk7CisK KyAgICAgIGlmIChlLT5lbmFibGVkKQorCXVpX291dF9maWVsZF9zdHJpbmcg KGN1cnJlbnRfdWlvdXQsICJlbmFibGVkIiwgInkiKTsgICAgICAgICAgICAg LyogMyAqLworICAgICAgZWxzZQorCXVpX291dF9maWVsZF9zdHJpbmcgKGN1 cnJlbnRfdWlvdXQsICJlbmFibGVkIiwgIm4iKTsgICAgICAgICAgICAgLyog MyAqLworCisgICAgICBpZiAob3B0cy5hZGRyZXNzcHJpbnQpCisJeworCSAg aWYgKGUtPnBjICE9IDApCisJICAgIHVpX291dF9maWVsZF9jb3JlX2FkZHIg KGN1cnJlbnRfdWlvdXQsICJhZGRyIiwKKwkJCQkgICAgZS0+Z2RiYXJjaCwg ZS0+cGMpOyAgICAgICAgICAgICAgICAgIC8qIDQgKi8KKwkgIGVsc2UKKwkg ICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAoY3VycmVudF91aW91dCwgImFkZHIi LCAiIik7ICAgICAgICAgICAgIC8qIDQgKi8KKwl9CisKKyAgICAgIGlmICgh ZS0+cGVuZGluZyAmJiBlLT5mdW5jdGlvbl9uYW1lICE9IDApCisJeworCSAg IHN0cnVjdCBzeW1ib2wgKnN5bTsKKworCSAgIGdkYl9hc3NlcnQgKGUtPnBj ICE9IDApOworCSAgIHN5bSA9IGZpbmRfcGNfZnVuY3Rpb24gKGUtPnBjKTsK KwkgICBpZiAoc3ltKQorCSAgICAgdWlfb3V0X2ZpZWxkX2ZtdCAoY3VycmVu dF91aW91dCwgIndoYXQiLCAiJXMgYXQgJXM6JWQiLAorCQkJICAgICAgIHN5 bS0+Z2luZm8ubmFtZSwKKwkJCSAgICAgICBzeW0tPnN5bXRhYi0+ZmlsZW5h bWUsCisJCQkgICAgICAgc3ltLT5saW5lKTsKKwkgICBlbHNlCisJICAgICB1 aV9vdXRfZmllbGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAid2hhdCIsICI/ Iik7CisJfQorICAgICAgZWxzZSBpZiAoZS0+cGVuZGluZyAmJiBlLT5mdW5j dGlvbl9uYW1lICE9IDApCisJeworCSAgdWlfb3V0X2ZpZWxkX2ZtdCAoY3Vy cmVudF91aW91dCwgIndoYXQiLCAiJXMgKFBFTkRJTkcpIiwKKwkJCSAgICBl LT5mdW5jdGlvbl9uYW1lKTsKKwl9CisgICAgICBlbHNlIGlmICghZS0+cGVu ZGluZyAmJiBlLT5maWxlbmFtZSAhPSAwKQorCXVpX291dF9maWVsZF9zdHJp bmcgKGN1cnJlbnRfdWlvdXQsICJ3aGF0IiwgZS0+ZmlsZW5hbWUpOworICAg ICAgZWxzZSBpZiAoZS0+cGVuZGluZyAmJiBlLT5maWxlbmFtZSAhPSAwKQor CXVpX291dF9maWVsZF9mbXQgKGN1cnJlbnRfdWlvdXQsICJ3aGF0IiwgIiVz IChQRU5ESU5HKSIsCisJCQkgIGUtPmZpbGVuYW1lKTsKKworICAgICAgdWlf b3V0X3RleHQgKGN1cnJlbnRfdWlvdXQsICJcbiIpOworICAgICAgZG9fY2xl YW51cHMgKGVudHJ5X2NoYWluKTsKKyAgICB9CisKKyAgZG9fY2xlYW51cHMg KHRibF9jaGFpbik7Cit9CisKK3N0YXRpYyB2b2lkCitza2lwX2VuYWJsZV9j b21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKK3sKKyAgc3RydWN0 IHNraXBsaXN0X2VudHJ5ICplOworICBpbnQgZm91bmQgPSAwOworCisgIEFM TF9TS0lQTElTVF9FTlRSSUVTIChlKQorICAgIGlmIChhcmcgPT0gMCB8fCBu dW1iZXJfaXNfaW5fbGlzdChhcmcsIGUtPm51bWJlcikpCisgICAgICB7Cisg ICAgICAgIGUtPmVuYWJsZWQgPSAxOworICAgICAgICBmb3VuZCA9IDE7Cisg ICAgICB9CisKKyAgaWYgKCFmb3VuZCkKKyAgICBlcnJvciAoXygiTm8gc2tp cGxpc3QgZW50cmllcyBmb3VuZCB3aXRoIG51bWJlciAlcy4iKSwgYXJnKTsK K30KKworc3RhdGljIHZvaWQKK3NraXBfZGlzYWJsZV9jb21tYW5kIChjaGFy ICphcmcsIGludCBmcm9tX3R0eSkKK3sKKyAgc3RydWN0IHNraXBsaXN0X2Vu dHJ5ICplOworICBpbnQgZm91bmQgPSAwOworCisgIEFMTF9TS0lQTElTVF9F TlRSSUVTIChlKQorICAgIGlmIChhcmcgPT0gMCB8fCBudW1iZXJfaXNfaW5f bGlzdChhcmcsIGUtPm51bWJlcikpCisgICAgICB7CisJZS0+ZW5hYmxlZCA9 IDA7CisgICAgICAgIGZvdW5kID0gMTsKKyAgICAgIH0KKworICBpZiAoIWZv dW5kKQorICAgIGVycm9yIChfKCJObyBza2lwbGlzdCBlbnRyaWVzIGZvdW5k IHdpdGggbnVtYmVyICVzLiIpLCBhcmcpOworfQorCitzdGF0aWMgdm9pZAor c2tpcF9kZWxldGVfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkp Cit7CisgIHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqZSwgKnRlbXAsICpiX3By ZXY7CisgIGludCBmb3VuZCA9IDA7CisKKyAgYl9wcmV2ID0gMDsKKyAgQUxM X1NLSVBMSVNUX0VOVFJJRVNfU0FGRSAoZSwgdGVtcCkKKyAgICBpZiAoYXJn ID09IDAgfHwgbnVtYmVyX2lzX2luX2xpc3QoYXJnLCBlLT5udW1iZXIpKQor ICAgICAgeworCWlmIChiX3ByZXYgIT0gMCkKKwkgIGJfcHJldi0+bmV4dCA9 IGUtPm5leHQ7CisJZWxzZQorCSAgc2tpcGxpc3RfZW50cnlfY2hhaW4gPSBl LT5uZXh0OworCisJeGZyZWUgKGUtPmZ1bmN0aW9uX25hbWUpOworCXhmcmVl IChlLT5maWxlbmFtZSk7CisJeGZyZWUgKGUpOworICAgICAgICBmb3VuZCA9 IDE7CisgICAgICB9CisgICAgZWxzZQorICAgICAgeworCWJfcHJldiA9IGU7 CisgICAgICB9CisKKyAgaWYgKCFmb3VuZCkKKyAgICBlcnJvciAoXygiTm8g c2tpcGxpc3QgZW50cmllcyBmb3VuZCB3aXRoIG51bWJlciAlcy4iKSwgYXJn KTsKK30KKworLyogQ3JlYXRlIGEgc2tpcGxpc3QgZW50cnkgZm9yIHRoZSBn aXZlbiBwYyBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbgorICAgZnVuY3Rp b24gbmFtZSBhbmQgYWRkIGl0IHRvIHRoZSBsaXN0LiAqLworc3RhdGljIHZv aWQKK3NraXBfZnVuY3Rpb25fcGMgKENPUkVfQUREUiBwYywgY2hhciAqbmFt ZSwgc3RydWN0IGdkYmFyY2ggKmFyY2gsCisJCSAgaW50IHBlbmRpbmcpCit7 CisgIHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqZSA9IFhaQUxMT0MgKHN0cnVj dCBza2lwbGlzdF9lbnRyeSk7CisKKyAgZS0+cGMgPSBwYzsKKyAgZS0+Z2Ri YXJjaCA9IGFyY2g7CisgIGUtPmVuYWJsZWQgPSAxOworICBlLT5wZW5kaW5n ID0gcGVuZGluZzsKKyAgZS0+ZnVuY3Rpb25fbmFtZSA9IHhzdHJkdXAgKG5h bWUpOworCisgIGFkZF9za2lwbGlzdF9lbnRyeSAoZSk7CisKKyAgaWYgKCFw ZW5kaW5nKQorICAgIHByaW50Zl9maWx0ZXJlZCAoXygiRnVuY3Rpb24gJXMg YXQgJXMgd2lsbCBiZSBza2lwcGVkIHdoZW4gc3RlcHBpbmcuXG4iKSwKKwkJ ICAgICBuYW1lLCBwYWRkcmVzcyAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwgcGMp KTsKKyAgZWxzZQorICAgIHByaW50Zl9maWx0ZXJlZCAoXygiRnVuY3Rpb24g JXMgd2lsbCBiZSBza2lwcGVkIHdoZW4gc3RlcHBpbmcsICIKKwkJICAgICAg ICJwZW5kaW5nIHNoYXJlZCBsaWJyYXJ5IGxvYWQuXG4iKSwKKwkJICAgICBu YW1lKTsKK30KKworLyogQWRkIHRoZSBnaXZlbiBza2lwbGlzdCBlbnRyeSB0 byBvdXIgbGlzdCwgYW5kIHNldCB0aGUgZW50cnkncyBudW1iZXIuICovCitz dGF0aWMgdm9pZAorYWRkX3NraXBsaXN0X2VudHJ5IChzdHJ1Y3Qgc2tpcGxp c3RfZW50cnkgKmUpCit7CisgIHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqZTE7 CisKKyAgZS0+bnVtYmVyID0gKytza2lwbGlzdF9lbnRyeV9jb3VudDsKKwor ICAvKiBBZGQgdG8gdGhlIGVuZCBvZiB0aGUgY2hhaW4gc28gdGhhdCB0aGUg bGlzdCBvZgorICAgICBza2lwbGlzdCBlbnRyaWVzIHdpbGwgYmUgaW4gbnVt ZXJpY2FsIG9yZGVyLiAqLworCisgIGUxID0gc2tpcGxpc3RfZW50cnlfY2hh aW47CisgIGlmIChlMSA9PSAwKQorICAgIHNraXBsaXN0X2VudHJ5X2NoYWlu ID0gZTsKKyAgZWxzZQorICAgIHsKKyAgICAgIHdoaWxlIChlMS0+bmV4dCkK KwllMSA9IGUxLT5uZXh0OworICAgICAgZTEtPm5leHQgPSBlOworICAgIH0K K30KKworLyogRG9lcyB0aGUgZ2l2ZW4gcGMgY29ycmVzcG9uZCB0byB0aGUg YmVnaW5uaW5nIG9mIGEgc2tpcHBlZCBmdW5jdGlvbj8gKi8KK2ludAorZnVu Y3Rpb25fcGNfaXNfbWFya2VkX2Zvcl9za2lwIChDT1JFX0FERFIgcGMpCit7 CisgIGludCBzZWFyY2hlZF9mb3Jfc2FsID0gMDsKKyAgc3RydWN0IHN5bXRh Yl9hbmRfbGluZSBzYWw7CisgIGNoYXIgKmZpbGVuYW1lID0gTlVMTDsKKyAg c3RydWN0IHNraXBsaXN0X2VudHJ5ICplOworCisgIHNhbCA9IGZpbmRfcGNf bGluZSAocGMsIDApOworICBmaWxlbmFtZSA9IHNhbC5zeW10YWItPmZpbGVu YW1lOworCisgIEFMTF9TS0lQTElTVF9FTlRSSUVTIChlKQorICAgIHsKKyAg ICAgIGlmICghZS0+ZW5hYmxlZCB8fCBlLT5wZW5kaW5nKQorCWNvbnRpbnVl OworCisgICAgICAvKiBEb2VzIHRoZSBwYyB3ZSdyZSBzdGVwcGluZyBpbnRv IG1hdGNoIGUncyBzdG9yZWQgcGM/ICovCisgICAgICBpZiAoZS0+cGMgIT0g MCAmJiBwYyA9PSBlLT5wYykKKwlyZXR1cm4gMTsKKworICAgICAgaWYgKGUt PmZpbGVuYW1lICE9IDApCisJeworCSAgLyogR2V0IHRoZSBmaWxlbmFtZSBj b3JyZXNwb25kaW5nIHRvIHRoaXMgcGMsIGlmIHdlIGhhdmVuJ3QKKwkgICAq IHlldC4gKi8KKwkgIGlmICghc2VhcmNoZWRfZm9yX3NhbCkKKwkgICAgewor CSAgICAgIHNhbCA9IGZpbmRfcGNfbGluZSAocGMsIDApOworCSAgICAgIGZp bGVuYW1lID0gc2FsLnN5bXRhYi0+ZmlsZW5hbWU7CisJICAgICAgc2VhcmNo ZWRfZm9yX3NhbCA9IDE7CisJICAgIH0KKwkgIGlmIChmaWxlbmFtZSAhPSAw ICYmIHN0cmNtcCAoZmlsZW5hbWUsIGUtPmZpbGVuYW1lKSA9PSAwKQorCSAg ICByZXR1cm4gMTsKKwl9CisgICAgfQorCisgIHJldHVybiAwOworfQorCisv KiBSZS1zZXQgdGhlIHNraXAgbGlzdCBhZnRlciBzeW1ib2xzIGhhdmUgYmVl biByZS1sb2FkZWQuICovCit2b2lkCitza2lwX3JlX3NldCAodm9pZCkKK3sK KyAgc3RydWN0IHNraXBsaXN0X2VudHJ5ICplOworCisgIEFMTF9TS0lQTElT VF9FTlRSSUVTIChlKQorICAgIHsKKyAgICAgIGlmIChlLT5maWxlbmFtZSAh PSAwKQorCXsKKwkgIC8qIElmIGl0J3MgYW4gZW50cnkgdGVsbGluZyB1cyB0 byBza2lwIGEgZmlsZSwgYnV0IHRoZSBlbnRyeSBpcworCSAgICAgY3VycmVu dGx5IHBlbmRpbmcgYSBzb2xpYiBsb2FkLCBsZXQncyBzZWUgaWYgd2Ugbm93 IGtub3cKKwkgICAgIGFib3V0IHRoZSBmaWxlLiAqLworCSAgc3RydWN0IHN5 bXRhYiAqc3ltdGFiID0gbG9va3VwX3N5bXRhYiAoZS0+ZmlsZW5hbWUpOwor CSAgaWYgKHN5bXRhYiAhPSAwKQorCSAgICB7CisJICAgICAgeGZyZWUgKGUt PmZpbGVuYW1lKTsKKwkgICAgICBlLT5maWxlbmFtZSA9IHhzdHJkdXAgKHN5 bXRhYi0+ZmlsZW5hbWUpOworCSAgICAgIGUtPmdkYmFyY2ggPSBnZXRfb2Jq ZmlsZV9hcmNoIChzeW10YWItPm9iamZpbGUpOworCSAgICAgIGUtPnBlbmRp bmcgPSAwOworCSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAgICBlLT5w ZW5kaW5nID0gMTsKKwkgICAgfQorCX0KKyAgICAgIGVsc2UgaWYgKGUtPmZ1 bmN0aW9uX25hbWUgIT0gMCkKKyAgICAgICAgeworCSAgY2hhciAqZnVuY19u YW1lID0gZS0+ZnVuY3Rpb25fbmFtZTsKKwkgIHN0cnVjdCBzeW10YWJzX2Fu ZF9saW5lcyBzYWxzOworCSAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRp b24gZGVjb2RlX2V4Y2VwdGlvbjsKKworCSAgVFJZX0NBVENIIChkZWNvZGVf ZXhjZXB0aW9uLCBOT1RfRk9VTkRfRVJST1IpCisJICAgIHsKKwkgICAgICBz YWxzID0gZGVjb2RlX2xpbmVfMSAoJmZ1bmNfbmFtZSwgMSwgMCwgMCwgMCk7 CisJICAgIH0KKworCSAgaWYgKGRlY29kZV9leGNlcHRpb24ucmVhc29uID49 IDAKKyAgICAgICAgICAgICAgJiYgc2Fscy5uZWx0cyA9PSAxICYmIHN0cmxl biAoZnVuY19uYW1lKSA9PSAwKQorCSAgICB7CisJICAgICAgc3RydWN0IHN5 bXRhYl9hbmRfbGluZSBzYWwgPSBzYWxzLnNhbHNbMF07CisJICAgICAgQ09S RV9BRERSIHBjID0gc2FsLnBjOworCSAgICAgIENPUkVfQUREUiBmdW5jX3N0 YXJ0ID0gMDsKKwkgICAgICBzdHJ1Y3QgZ2RiYXJjaCAqYXJjaCA9IGdldF9z YWxfYXJjaCAoc2FsKTsKKyAgICAgICAgICAgICAgY2hhciAqZnVuY19uYW1l OworCisJICAgICAgaWYgKGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAocGMs ICZmdW5jX25hbWUsICZmdW5jX3N0YXJ0LCAwKSkKKwkJeworCQkgIGUtPnBl bmRpbmcgPSAwOworICAgICAgICAgICAgICAgICAgZS0+ZnVuY3Rpb25fbmFt ZSA9IHhzdHJkdXAgKGZ1bmNfbmFtZSk7CisJCSAgZS0+cGMgPSBmdW5jX3N0 YXJ0OworCQkgIGUtPmdkYmFyY2ggPSBhcmNoOworCQl9CisJICAgIH0KKwkg IGVsc2UKKwkgICAgeworCSAgICAgIGUtPnBlbmRpbmcgPSAxOworCSAgICB9 CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQKK19pbml0aWFsaXplX3N0 ZXBfc2tpcCAodm9pZCkKK3sKKyAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQg KmM7CisKKyAgc2tpcGxpc3RfZW50cnlfY2hhaW4gPSAwOworICBza2lwbGlz dF9lbnRyeV9jb3VudCA9IDA7CisKKyAgYWRkX3ByZWZpeF9jbWQgKCJza2lw IiwgY2xhc3NfYnJlYWtwb2ludCwgc2tpcF9mdW5jdGlvbl9jb21tYW5kLCBf KCJcCitJZ25vcmUgYSBmdW5jdGlvbiB3aGlsZSBzdGVwcGluZy5cblwKK1Vz YWdlOiBza2lwIFtGVU5DVElPTiBOQU1FXVxuXAorSWYgbm8gZnVuY3Rpb24g bmFtZSBpcyBnaXZlbiwgaWdub3JlIHRoZSBjdXJyZW50IGZ1bmN0aW9uLiIp LAorICAgICAgICAgICAgICAgICAgJnNraXBsaXN0LCAic2tpcCAiLCAxLCAm Y21kbGlzdCk7CisKKyAgYyA9IGFkZF9jbWQgKCJmaWxlIiwgY2xhc3NfYnJl YWtwb2ludCwgc2tpcF9maWxlX2NvbW1hbmQsIF8oIlwKK0lnbm9yZSBhIGZp bGUgd2hpbGUgc3RlcHBpbmcuXG5cCitVc2FnZTogc2tpcCBmaWxlIFtGSUxF TkFNRV1cblwKK0lmIG5vIGZpbGVuYW1lIGlzIGdpdmVuLCBpZ25vcmUgdGhl IGN1cnJlbnQgZmlsZS4iKSwKKwkgICAgICAgJnNraXBsaXN0KTsKKyAgc2V0 X2NtZF9jb21wbGV0ZXIgKGMsIGZpbGVuYW1lX2NvbXBsZXRlcik7CisKKyAg YyA9IGFkZF9jbWQgKCJmdW5jdGlvbiIsIGNsYXNzX2JyZWFrcG9pbnQsIHNr aXBfZnVuY3Rpb25fY29tbWFuZCwgXygiXAorSWdub3JlIGEgZnVuY3Rpb24g d2hpbGUgc3RlcHBpbmcuXG5cCitVc2FnZTogc2tpcCBmdW5jdGlvbiBbRlVO Q1RJT04gTkFNRV1cblwKK0lmIG5vIGZ1bmN0aW9uIG5hbWUgaXMgZ2l2ZW4s IHNraXAgdGhlIGN1cnJlbnQgZnVuY3Rpb24uIiksCisJICAgICAgICZza2lw bGlzdCk7CisgIHNldF9jbWRfY29tcGxldGVyIChjLCBsb2NhdGlvbl9jb21w bGV0ZXIpOworCisgIGFkZF9jbWQgKCJlbmFibGUiLCBjbGFzc19icmVha3Bv aW50LCBza2lwX2VuYWJsZV9jb21tYW5kLCBfKCJcCitFbmFibGUgc2tpcCBl bnRyaWVzLiAgWW91IGNhbiBzcGVjaWZ5IG51bWJlcnMgKGUuZy4gXCJza2lw IGVuYWJsZSAxIDNcIiksIFwKK3JhbmdlcyAoZS5nLiBcInNraXAgZW5hYmxl IDQtOFwiKSwgb3IgYm90aCAoZS5nLiBcInNraXAgZW5hYmxlIDEgMyA0LThc IikuXG5cblwKK0lmIHlvdSBkb24ndCBzcGVjaWZ5IGFueSBudW1iZXJzIG9y IHJhbmdlcywgd2UnbGwgZW5hYmxlIGFsbCBza2lwIGVudHJpZXMuXG5cblwK K1VzYWdlOiBza2lwIGVuYWJsZSBbTlVNQkVSUyBBTkQvT1IgUkFOR0VTXSIp LAorCSAgICZza2lwbGlzdCk7CisKKyAgYWRkX2NtZCAoImRpc2FibGUiLCBj bGFzc19icmVha3BvaW50LCBza2lwX2Rpc2FibGVfY29tbWFuZCwgXygiXAor RGlzYWJsZSBza2lwIGVudHJpZXMuICBZb3UgY2FuIHNwZWNpZnkgbnVtYmVy cyAoZS5nLiBcInNraXAgZGlzYWJsZSAxIDNcIiksIFwKK3JhbmdlcyAoZS5n LiBcInNraXAgZGlzYWJsZSA0LThcIiksIG9yIGJvdGggKGUuZy4gXCJza2lw IGRpc2FibGUgMSAzIDQtOFwiKS5cblxuXAorSWYgeW91IGRvbid0IHNwZWNp ZnkgYW55IG51bWJlcnMgb3IgcmFuZ2VzLCB3ZSdsbCBkaXNhYmxlIGFsbCBz a2lwIGVudHJpZXMuXG5cblwKK1VzYWdlOiBza2lwIGRpc2FibGUgW05VTUJF UlMgQU5EL09SIFJBTkdFU10iKSwKKwkgICAmc2tpcGxpc3QpOworCisgIGFk ZF9jbWQgKCJkZWxldGUiLCBjbGFzc19icmVha3BvaW50LCBza2lwX2RlbGV0 ZV9jb21tYW5kLCBfKCJcCitEZWxldGUgc2tpcCBlbnRyaWVzLiAgWW91IGNh biBzcGVjaWZ5IG51bWJlcnMgKGUuZy4gXCJza2lwIGRlbGV0ZSAxIDNcIiks IFwKK3JhbmdlcyAoZS5nLiBcInNraXAgZGVsZXRlIDQtOFwiKSwgb3IgYm90 aCAoZS5nLiBcInNraXAgZGVsZXRlIDEgMyA0LThcIikuXG5cblwKK0lmIHlv dSBkb24ndCBzcGVjaWZ5IGFueSBudW1iZXJzIG9yIHJhbmdlcywgd2UnbGwg ZGVsZXRlIGFsbCBza2lwIGVudHJpZXMuXG5cblwKK1VzYWdlOiBza2lwIGRl bGV0ZSBbTlVNQkVSUyBBTkQvT1IgUkFOR0VTXSIpLAorICAgICAgICAgICAm c2tpcGxpc3QpOworCisgIGFkZF9pbmZvICgic2tpcCIsIHNraXBfaW5mbywg XygiXAorRGlzcGxheSB0aGUgc3RhdHVzIG9mIHNraXBzLiAgWW91IGNhbiBz cGVjaWZ5IG51bWJlcnMgKGUuZy4gXCJza2lwIGluZm8gMSAzXCIpLCBcCity YW5nZXMgKGUuZy4gXCJza2lwIGluZm8gNC04XCIpLCBvciBib3RoIChlLmcu IFwic2tpcCBpbmZvIDEgMyA0LThcIikuXG5cblwKK0lmIHlvdSBkb24ndCBz cGVjaWZ5IGFueSBudW1iZXJzIG9yIHJhbmdlcywgd2UnbGwgc2hvdyBhbGwg c2tpcHMuXG5cblwKK1VzYWdlOiBza2lwIGluZm8gW05VTUJFUlMgQU5EL09S IFJBTkdFU11cblwKK1RoZSBcIlR5cGVcIiBjb2x1bW4gaW5kaWNhdGVzIG9u ZSBvZjpcblwKK1x0ZmlsZSAgICAgICAgLSBpZ25vcmVkIGZpbGVcblwKK1x0 ZnVuY3Rpb24gICAgLSBpZ25vcmVkIGZ1bmN0aW9uIikpOworfQpkaWZmIC0t Z2l0IGEvZ2RiL3NraXAuaCBiL2dkYi9za2lwLmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMTQzZjdlZAotLS0gL2Rldi9udWxsCisr KyBiL2dkYi9za2lwLmgKQEAgLTAsMCArMSwyOCBAQAorLyogSGVhZGVyIGZv ciBza2lwcGluZyBvdmVyIHVuaW50ZXJlc3RpbmcgZmlsZXMgYW5kIGZ1bmN0 aW9ucyB3aGVuIGRlYnVnZ2luZy4KKworICAgQ29weXJpZ2h0IChDKSAyMDEx IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisg ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLworCisjaWYgIWRlZmluZWQgKFNLSVBfSCkKKyNk ZWZpbmUgU0tJUF9ICisKKy8qIFJldHVybnMgMSBpZiB0aGUgZ2l2ZW4gcGMg aXMgbWFya2VkIGZvciBza2lwIGFuZCBzaG91bGRuJ3QgYmUKKyAgIHN0ZXBw ZWQgaW50by4gIE90aGVyd2lzZSwgcmV0dXJucyAwLiAqLworaW50IGZ1bmN0 aW9uX3BjX2lzX21hcmtlZF9mb3Jfc2tpcCAoQ09SRV9BRERSIHBjKTsKKwor LyogUmUtc2V0IHRoZSBza2lwIGxpc3QgYWZ0ZXIgc3ltYm9scyBoYXZlIGJl ZW4gcmVsb2FkZWQuICovCit2b2lkIHNraXBfcmVfc2V0ICh2b2lkKTsKKwor I2VuZGlmIC8qICFkZWZpbmVkIChTS0lQX0gpICovCmRpZmYgLS1naXQgYS9n ZGIvc3RhY2suYyBiL2dkYi9zdGFjay5jCmluZGV4IDE1NjY2ZWUuLmNmMjVl YjcgMTAwNjQ0Ci0tLSBhL2dkYi9zdGFjay5jCisrKyBiL2dkYi9zdGFjay5j CkBAIC03Myw2ICs3MywxMiBAQCBzdGF0aWMgdm9pZCBwcmludF9mcmFtZSAo c3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCBpbnQgcHJpbnRfbGV2ZWwsCiAJ CQkgZW51bSBwcmludF93aGF0IHByaW50X3doYXQsICBpbnQgcHJpbnRfYXJn cywKIAkJCSBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbCk7CiAKK3N0YXRp YyB2b2lkIHNldF9sYXN0X2Rpc3BsYXllZF9zYWwgKGludCB2YWxpZCwKKwkJ CQkgICAgc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSwKKwkJCQkgICAg Q09SRV9BRERSIGFkZHIsCisJCQkJICAgIHN0cnVjdCBzeW10YWIgKnN5bXRh YiwKKwkJCQkgICAgaW50IGxpbmUpOworCiAvKiBaZXJvIG1lYW5zIGRvIHRo aW5ncyBub3JtYWxseTsgd2UgYXJlIGludGVyYWN0aW5nIGRpcmVjdGx5IHdp dGggdGhlCiAgICB1c2VyLiAgT25lIG1lYW5zIHByaW50IHRoZSBmdWxsIGZp bGVuYW1lIGFuZCBsaW5lbnVtYmVyIHdoZW4gYQogICAgZnJhbWUgaXMgcHJp bnRlZCwgYW5kIGRvIHNvIGluIGEgZm9ybWF0IGVtYWNzMTgvZW1hY3MxOS4y MiBjYW4KQEAgLTgwLDYgKzg2LDE0IEBAIHN0YXRpYyB2b2lkIHByaW50X2Zy YW1lIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIGludCBwcmludF9sZXZl bCwKICAgIGNhc2VzIGFuZCBpbiBhIHNsaWdodGx5IGRpZmZlcmVudCBzeW50 YXguICAqLwogCiBpbnQgYW5ub3RhdGlvbl9sZXZlbCA9IDA7CisKKy8qIFRo ZXNlIHZhcmlhYmxlcyBob2xkIHRoZSBsYXN0IHN5bXRhYiBhbmQgbGluZSB3 ZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuCisgKiBUaGlzIGlzIHdoZXJlIHdl IGluc2VydCBhIGJyZWFrcG9pbnQgb3IgYSBza2lwbGlzdCBlbnRyeSBieSBk ZWZhdWx0LiAqLworc3RhdGljIGludCBsYXN0X2Rpc3BsYXllZF9zYWxfdmFs aWQgPSAwOworc3RhdGljIHN0cnVjdCBwcm9ncmFtX3NwYWNlICpsYXN0X2Rp c3BsYXllZF9wc3BhY2UgPSAwOworc3RhdGljIENPUkVfQUREUiBsYXN0X2Rp c3BsYXllZF9hZGRyID0gMDsKK3N0YXRpYyBzdHJ1Y3Qgc3ltdGFiICpsYXN0 X2Rpc3BsYXllZF9zeW10YWIgPSAwOworc3RhdGljIGludCBsYXN0X2Rpc3Bs YXllZF9saW5lID0gMDsKIAwKIAogLyogUmV0dXJuIDEgaWYgd2Ugc2hvdWxk IGRpc3BsYXkgdGhlIGFkZHJlc3MgaW4gYWRkaXRpb24gdG8gdGhlIGxvY2F0 aW9uLApAQCAtNTk5LDkgKzYxMyw5IEBAIHByaW50X2ZyYW1lX2luZm8gKHN0 cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgaW50IHByaW50X2xldmVsLAogICAg ICAgQ09SRV9BRERSIHBjOwogCiAgICAgICBpZiAoZ2V0X2ZyYW1lX3BjX2lm X2F2YWlsYWJsZSAoZnJhbWUsICZwYykpCi0Jc2V0X2RlZmF1bHRfYnJlYWtw b2ludCAoMSwgc2FsLnBzcGFjZSwgcGMsIHNhbC5zeW10YWIsIHNhbC5saW5l KTsKKwlzZXRfbGFzdF9kaXNwbGF5ZWRfc2FsICgxLCBzYWwucHNwYWNlLCBw Yywgc2FsLnN5bXRhYiwgc2FsLmxpbmUpOwogICAgICAgZWxzZQotCXNldF9k ZWZhdWx0X2JyZWFrcG9pbnQgKDAsIDAsIDAsIDAsIDApOworCXNldF9sYXN0 X2Rpc3BsYXllZF9zYWwgKDAsIDAsIDAsIDAsIDApOwogICAgIH0KIAogICBh bm5vdGF0ZV9mcmFtZV9lbmQgKCk7CkBAIC02MDksNiArNjIzLDk4IEBAIHBy aW50X2ZyYW1lX2luZm8gKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgaW50 IHByaW50X2xldmVsLAogICBnZGJfZmx1c2ggKGdkYl9zdGRvdXQpOwogfQog CisvKiBSZW1lbWJlciB0aGUgbGFzdCBzeW10YWIgYW5kIGxpbmUgd2UgZGlz cGxheWVkLCB3aGljaCB3ZSB1c2UgZS5nLgorICogYXMgdGhlIHBsYWNlIHRv IHB1dCBhIGJyZWFrcG9pbnQgd2hlbiB0aGUgYGJyZWFrJyBjb21tYW5kIGlz CisgKiBpbnZva2VkIHdpdGggbm8gYXJndW1lbnRzLiAgKi8KK3N0YXRpYyB2 b2lkCitzZXRfbGFzdF9kaXNwbGF5ZWRfc2FsIChpbnQgdmFsaWQsIHN0cnVj dCBwcm9ncmFtX3NwYWNlICpwc3BhY2UsCisJCQlDT1JFX0FERFIgYWRkciwg c3RydWN0IHN5bXRhYiAqc3ltdGFiLAorCQkJaW50IGxpbmUpCit7CisgIGxh c3RfZGlzcGxheWVkX3NhbF92YWxpZCA9IHZhbGlkOworICBsYXN0X2Rpc3Bs YXllZF9wc3BhY2UgPSBwc3BhY2U7CisgIGxhc3RfZGlzcGxheWVkX2FkZHIg PSBhZGRyOworICBsYXN0X2Rpc3BsYXllZF9zeW10YWIgPSBzeW10YWI7Cisg IGxhc3RfZGlzcGxheWVkX2xpbmUgPSBsaW5lOworfQorCisvKiBGb3JnZXQg dGhlIGxhc3Qgc2FsIHdlIGRpc3BsYXllZC4gICovCit2b2lkCitjbGVhcl9s YXN0X2Rpc3BsYXllZF9zYWwgKHZvaWQpCit7CisgIGxhc3RfZGlzcGxheWVk X3NhbF92YWxpZCA9IDA7CisgIGxhc3RfZGlzcGxheWVkX3BzcGFjZSA9IDA7 CisgIGxhc3RfZGlzcGxheWVkX2FkZHIgPSAwOworICBsYXN0X2Rpc3BsYXll ZF9zeW10YWIgPSAwOworICBsYXN0X2Rpc3BsYXllZF9saW5lID0gMDsKK30K KworLyogSXMgb3VyIHJlY29yZCBvZiB0aGUgbGFzdCBzYWwgd2UgZGlzcGxh eWVkIHZhbGlkPyAgSWYgbm90LAorICogdGhlIGdldF9sYXN0X2Rpc3BsYXll ZF8qIGZ1bmN0aW9ucyB3aWxsIHJldHVybiBOVUxMIG9yIDAsIGFzCisgKiBh cHByb3ByaWF0ZS4gICovCitpbnQKK2xhc3RfZGlzcGxheWVkX3NhbF9pc192 YWxpZCAodm9pZCkKK3sKKyAgcmV0dXJuIGxhc3RfZGlzcGxheWVkX3NhbF92 YWxpZDsKK30KKworLyogR2V0IHRoZSBwc3BhY2Ugb2YgdGhlIGxhc3Qgc2Fs IHdlIGRpc3BsYXllZCwgaWYgaXQncyB2YWxpZC4gICovCitzdHJ1Y3QgcHJv Z3JhbV9zcGFjZSAqCitnZXRfbGFzdF9kaXNwbGF5ZWRfcHNwYWNlICh2b2lk KQoreworICBpZiAobGFzdF9kaXNwbGF5ZWRfc2FsX3ZhbGlkKQorICAgIHJl dHVybiBsYXN0X2Rpc3BsYXllZF9wc3BhY2U7CisgIHJldHVybiAwOworfQor CisvKiBHZXQgdGhlIGFkZHJlc3Mgb2YgdGhlIGxhc3Qgc2FsIHdlIGRpc3Bs YXllZCwgaWYgaXQncyB2YWxpZC4gICovCitDT1JFX0FERFIKK2dldF9sYXN0 X2Rpc3BsYXllZF9hZGRyICh2b2lkKQoreworICBpZiAobGFzdF9kaXNwbGF5 ZWRfc2FsX3ZhbGlkKQorICAgIHJldHVybiBsYXN0X2Rpc3BsYXllZF9hZGRy OworICByZXR1cm4gMDsKK30KKworLyogR2V0IHRoZSBzeW10YWIgb2YgdGhl IGxhc3Qgc2FsIHdlIGRpc3BsYXllZCwgaWYgaXQncyB2YWxpZC4gICovCitz dHJ1Y3Qgc3ltdGFiKgorZ2V0X2xhc3RfZGlzcGxheWVkX3N5bXRhYiAodm9p ZCkKK3sKKyAgaWYgKGxhc3RfZGlzcGxheWVkX3NhbF92YWxpZCkKKyAgICBy ZXR1cm4gbGFzdF9kaXNwbGF5ZWRfc3ltdGFiOworICByZXR1cm4gMDsKK30K KworLyogR2V0IHRoZSBsaW5lIG9mIHRoZSBsYXN0IHNhbCB3ZSBkaXNwbGF5 ZWQsIGlmIGl0J3MgdmFsaWQuICAqLworaW50CitnZXRfbGFzdF9kaXNwbGF5 ZWRfbGluZSAodm9pZCkKK3sKKyAgaWYgKGxhc3RfZGlzcGxheWVkX3NhbF92 YWxpZCkKKyAgICByZXR1cm4gbGFzdF9kaXNwbGF5ZWRfbGluZTsKKyAgcmV0 dXJuIDA7Cit9CisKKy8qIEdldCB0aGUgbGFzdCBzYWwgd2UgZGlzcGxheWVk LCBpZiBpdCdzIHZhbGlkLiAgKi8KK3ZvaWQKK2dldF9sYXN0X2Rpc3BsYXll ZF9zYWwgKHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgKnNhbCkKK3sKKyAgaWYg KGxhc3RfZGlzcGxheWVkX3NhbF92YWxpZCkKKyAgICB7CisgICAgICBzYWwt PnBzcGFjZSA9IGxhc3RfZGlzcGxheWVkX3BzcGFjZTsKKyAgICAgIHNhbC0+ cGMgPSBsYXN0X2Rpc3BsYXllZF9hZGRyOworICAgICAgc2FsLT5zeW10YWIg PSBsYXN0X2Rpc3BsYXllZF9zeW10YWI7CisgICAgICBzYWwtPmxpbmUgPSBs YXN0X2Rpc3BsYXllZF9saW5lOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAg ICAgIHNhbC0+cHNwYWNlID0gMDsKKyAgICAgIHNhbC0+cGMgPSAwOworICAg ICAgc2FsLT5zeW10YWIgPSAwOworICAgICAgc2FsLT5saW5lID0gMDsKKyAg ICB9Cit9CisKKwogLyogQXR0ZW1wdCB0byBvYnRhaW4gdGhlIEZVTk5BTUUs IEZVTkxBTkcgYW5kIG9wdGlvbmFsbHkgRlVOQ1Agb2YgdGhlIGZ1bmN0aW9u CiAgICBjb3JyZXNwb25kaW5nIHRvIEZSQU1FLiAgKi8KIApkaWZmIC0tZ2l0 IGEvZ2RiL3N0YWNrLmggYi9nZGIvc3RhY2suaAppbmRleCAzY2NlNjIzLi4z MTJlOGZmIDEwMDY0NAotLS0gYS9nZGIvc3RhY2suaAorKysgYi9nZGIvc3Rh Y2suaApAQCAtMzgsNCArMzgsMTQgQEAgdm9pZCBpdGVyYXRlX292ZXJfYmxv Y2tfbG9jYWxfdmFycyAoc3RydWN0IGJsb2NrICpibG9jaywKIAkJCQkgICAg aXRlcmF0ZV9vdmVyX2Jsb2NrX2FyZ19sb2NhbF92YXJzX2NiIGNiLAogCQkJ CSAgICB2b2lkICpjYl9kYXRhKTsKIAorLyogR2V0IG9yIHNldCB0aGUgbGFz dCBkaXNwbGF5ZWQgc3ltdGFiIGFuZCBsaW5lLCB3aGljaCBpcywgZS5nLiB3 aGVyZSB3ZSBzZXQgYQorICogYnJlYWtwb2ludCB3aGVuIGBicmVhaycgaXMg c3VwcGxpZWQgd2l0aCBubyBhcmd1bWVudHMuICAqLwordm9pZCBjbGVhcl9s YXN0X2Rpc3BsYXllZF9zYWwgKHZvaWQpOworaW50IGxhc3RfZGlzcGxheWVk X3NhbF9pc192YWxpZCAodm9pZCk7CitzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSog Z2V0X2xhc3RfZGlzcGxheWVkX3BzcGFjZSAodm9pZCk7CitDT1JFX0FERFIg Z2V0X2xhc3RfZGlzcGxheWVkX2FkZHIgKHZvaWQpOworc3RydWN0IHN5bXRh YiogZ2V0X2xhc3RfZGlzcGxheWVkX3N5bXRhYiAodm9pZCk7CitpbnQgZ2V0 X2xhc3RfZGlzcGxheWVkX2xpbmUgKHZvaWQpOwordm9pZCBnZXRfbGFzdF9k aXNwbGF5ZWRfc2FsIChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lICpzYWwpOwor CiAjZW5kaWYgLyogI2lmbmRlZiBTVEFDS19IICovCmRpZmYgLS1naXQgYS9n ZGIvc3ltZmlsZS5jIGIvZ2RiL3N5bWZpbGUuYwppbmRleCAxNTQwY2I3Li4x YzRkMGM5IDEwMDY0NAotLS0gYS9nZGIvc3ltZmlsZS5jCisrKyBiL2dkYi9z eW1maWxlLmMKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJlbGYtYmZk LmgiCiAjaW5jbHVkZSAic29saWIuaCIKICNpbmNsdWRlICJyZW1vdGUuaCIK KyNpbmNsdWRlICJzdGFjay5oIgogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+ CiAjaW5jbHVkZSA8ZmNudGwuaD4KQEAgLTI3ODAsNyArMjc4MSw3IEBAIGNs ZWFyX3N5bXRhYl91c2VycyAoaW50IGFkZF9mbGFncykKICAgY2xlYXJfZGlz cGxheXMgKCk7CiAgIGlmICgoYWRkX2ZsYWdzICYgU1lNRklMRV9ERUZFUl9C UF9SRVNFVCkgPT0gMCkKICAgICBicmVha3BvaW50X3JlX3NldCAoKTsKLSAg c2V0X2RlZmF1bHRfYnJlYWtwb2ludCAoMCwgTlVMTCwgMCwgMCwgMCk7Cisg IGNsZWFyX2xhc3RfZGlzcGxheWVkX3NhbCAoKTsKICAgY2xlYXJfcGNfZnVu Y3Rpb25fY2FjaGUgKCk7CiAgIG9ic2VydmVyX25vdGlmeV9uZXdfb2JqZmls ZSAoTlVMTCk7CiAKZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvQ2hhbmdl TG9nIGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKaW5kZXggOGY5ZWZkMS4u N2RlZWEzZSAxMDA2NDQKLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cK KysrIGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA QAorMjAxMS0xMC0wNiAgSnVzdGluIExlYmFyIDxqdXN0aW4ubGViYXJAZ21h aWwuY29tPgorCisJQWRkIHRlc3RzIGZvciBza2lwIGNvbW1hbmQuCisJKiB0 ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC1zb2xpYi1saWIuYzogTmV3CisJKiB0 ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC1zb2xpYi1tYWluLmM6IE5ldworCSog dGVzdHN1aXRlL2dkYi5iYXNlL3NraXAtc29saWIuZXhwOiBOZXcKKwkqIHRl c3RzdWl0ZS9nZGIuYmFzZS9za2lwLmM6IE5ldworCSogdGVzdHN1aXRlL2dk Yi5iYXNlL3NraXAuZXhwOiBOZXcKKwkqIHRlc3RzdWl0ZS9nZGIuYmFzZS9z a2lwMS5jOiBOZXcKKwkqIHRlc3RzdWl0ZS9nZGIuYmFzZS9NYWtlZmlsZS5p bjogQWRkaW5nIG5ldyBmaWxlcy4KKwogMjAxMS0xMC0wNSAgUGllcnJlIE11 bGxlciAgPG11bGxlckBpY3MudS1zdHJhc2JnLmZyPgogCiAJQWRkIHRlc3Rz IGZvciBwYXNzaW5nIG9mIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBpbmZl cmlvci4KZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvTWFr ZWZpbGUuaW4gYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL01ha2VmaWxlLmlu CmluZGV4IDcyZjFiYTQuLjdjZWIxMjEgMTAwNjQ0Ci0tLSBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvTWFrZWZpbGUuaW4KKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9NYWtlZmlsZS5pbgpAQCAtMzAsOCArMzAsOCBAQCBFWEVD VVRBQkxFUyA9IGEyLXJ1biBhZHZhbmNlIGFsbC10eXBlcyBhbm5vdGExIGFu bm90YTEtd2F0Y2hfdGhyZWFkX251bSBcCiAJc2Vwc3ltdGFiLmRlYnVnIHNl cHN5bXRhYi5zdHJpcHBlZCBzZXRzaG93IHNldHZhciBzaG1haW4gc2hyZWxv YyBcCiAJc2lnYWxsIHNpZ2FsdHN0YWNrIHNpZ2JwdCBzaWdjaGxkIHNpZ2lu Zm8gc2lnaW5mby1hZGRyIFwKIAlzaWdpbmZvLWluZmNhbGwgc2lnaW5mby1v Ymogc2lnbmFscyBzaWdudWxsIHNpZ3JlcGVhdCBzaWdzdGVwIFwKLQlzaXpl b2Ygc29saWIgc29saWItY29ycnVwdGVkIHNvbGliLWRpc3BsYXktbWFpbiBz b2xpYi1ub2RpciBcCi0Jc29saWItb3ZlcmxhcC1tYWluLTB4NDAwMDAwMDAg c29saWItc3ltYm9sLW1haW4gc29saWItd2VhayBcCisJc2l6ZW9mIHNraXAg c2tpcC1zb2xpYiBzb2xpYiBzb2xpYi1jb3JydXB0ZWQgc29saWItZGlzcGxh eS1tYWluCisJc29saWItbm9kaXIgc29saWItb3ZlcmxhcC1tYWluLTB4NDAw MDAwMDAgc29saWItc3ltYm9sLW1haW4gc29saWItd2VhayBcCiAJc29saWIt d2Vhay1saWIyIHNvbGliX3NsIHNvLWltcGwtbGQgc28taW5kci1jbCBcCiAJ c3RhY2stY2hlY2tpbmcgc3RhcnQgc3RlcC1icmVhayBzdGVwLWJ0IHN0ZXAt bGluZSBzdGVwLXJlc3VtZS1pbmZjYWxsIFwKIAlzdGVwLXRlc3Qgc3RvcmUg c3RydWN0cy10KiBzdHJ1Y3RzMiBzdHJ1Y3RzMyBcCmRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAtc29saWItbGliLmMgYi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3NraXAtc29saWItbGliLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzkyY2QwMQotLS0gL2Rldi9u dWxsCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC1zb2xpYi1s aWIuYwpAQCAtMCwwICsxLDExIEBACisvKiBTaW1wbGUgc2hhcmVkIGxpYnJh cnkgKi8KKworaW50IHNxdWFyZShpbnQgbnVtKQoreworICByZXR1cm4gbXVs dGlwbHkobnVtLCBudW0pOworfQorCitpbnQgbXVsdGlwbHkoaW50IGEsIGlu dCBiKQoreworICByZXR1cm4gYSAqIGI7Cit9CmRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3NraXAtc29saWItbWFpbi5jIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9za2lwLXNvbGliLW1haW4uYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDZiYjVmCi0tLSAvZGV2L251 bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLXNvbGliLW1h aW4uYwpAQCAtMCwwICsxLDYgQEAKK2ludCBzcXVhcmUoaW50IG51bSk7CisK K2ludCBtYWluKCkKK3sKKyAgcmV0dXJuIHNxdWFyZSgwKTsKK30KZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC1zb2xpYi5leHAg Yi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAtc29saWIuZXhwCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmODgzOGQKLS0tIC9k ZXYvbnVsbAorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAtc29s aWIuZXhwCkBAIC0wLDAgKzEsMTI5IEBACisjICAgQ29weXJpZ2h0IDIwMTEg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisKKyMgVGhpcyBmaWxlIHdhcyB3cml0dGVuIGJ5IEp1c3RpbiBMZWJh ci4gKGp1c3Rpbi5sZWJhckBnbWFpbC5jb20pCisKKyMKKyMgVGVzdHMgc2tp cHBpbmcgc2hhcmVkIGxpYnJhcmllcy4KKyMKKworIyBUaGlzIG9ubHkgd29y a3Mgb24gR05VL0xpbnV4LgoraWYgeyAhW2lzbmF0aXZlXSB8fCBbaXNfcmVt b3RlIGhvc3RdIHx8ICFbaXN0YXJnZXQgKi1saW51eCpdIHx8IFtza2lwX3No bGliX3Rlc3RzXX0geworICAgIGNvbnRpbnVlCit9CisKK3NldCB0ZXN0ICJz a2lwLXNvbGliIgorc2V0IHNyY2ZpbGVfbWFpbiAiJHt0ZXN0fS1tYWluLmMi CitzZXQgYmluZmlsZV9tYWluICIke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVz dH0tdGVzdCIKK3NldCBzcmNmaWxlX2xpYiAiJHt0ZXN0fS1saWIuYyIKK3Nl dCBsaWJuYW1lICJsaWIke3Rlc3R9Igorc2V0IGJpbmZpbGVfbGliICR7b2Jq ZGlyfS8ke3N1YmRpcn0vJHtsaWJuYW1lfS5zbworCisjCisjIENvbXBpbGUg b3VyIHByb2dyYW0gdW5kZXIgdGVzdC4gIFRoZSBtYWluIHByb2dyYW0gcmVm ZXJlbmNlcyBhIHNoYXJlZCBsaWJyYXJ5CisjIGxpYnNraXAtc29saWIuc28s IHdoaWNoIGNvbnRhaW5zIHR3byBmdW5jdGlvbnMsIHNxdWFyZSgpLCB3aGlj aCBpcworIyByZWZlcmVuY2VkIGJ5IHRoZSBtYWluIHByb2dyYW0sIGFuZCBt dWx0aXBseSgpLCB3aGljaCBpcyBub3QgcmVmZXJlbmNlZCBieQorIyB0aGUg bWFpbiBwcm9ncmFtLgorIworCitpZiB7W2dkYl9jb21waWxlX3NobGliICR7 c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlX2xpYn0gJHtiaW5maWxlX2xp Yn0gW2xpc3QgZGVidWcgYWRkaXRpb25hbF9mbGFncz0tZlBJQyAtV2wsLXNv bmFtZSwke2xpYm5hbWV9LnNvXV0gIT0gIiJ9IHsKKyAgICByZXR1cm4gLTEK K30KKworaWYge1tnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8k e3NyY2ZpbGVfbWFpbn0iICIke2JpbmZpbGVfbWFpbn0ubyIgb2JqZWN0IGRl YnVnXSAhPSAiIn0geworICAgIHJldHVybiAtMQorfQorCitpZiB7W2dkYl9j b21waWxlICIke2JpbmZpbGVfbWFpbn0ubyIgIiR7YmluZmlsZV9tYWlufSIg ZXhlY3V0YWJsZSBcCisgICAgICAgICAgICAgICAgIFtsaXN0IGRlYnVnICJh ZGRpdGlvbmFsX2ZsYWdzPS1MJHtvYmpkaXJ9LyR7c3ViZGlyfSAtbCR7dGVz dH0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtV2wsLXJwYXRoPSR7b2JqZGlyfS8ke3N1YmRpcn0iXV0gIT0g IiJ9IHsKKyAgICByZXR1cm4gLTEKK30KKworZ2RiX3N0YXJ0CitnZGJfbG9h ZCAke2JpbmZpbGVfbWFpbn0KKworIworIyBBdCB0aGlzIHBvaW50LCBpZiB3 ZSB0cnkgdG8gc2tpcCB0aGUgZmlsZSAke3NyY2ZpbGVfbGlifSBvciB0aGUg ZnVuY3Rpb24KKyMgbXVsdGlwbHkoKSwgd2Ugc2hvdWxkIGdldCBhIHByb21w dCBhc2tpbmcgdXMgaWYgd2Ugd2FudCB0byBlbmFibGUgdGhlCisjIHNraXAg ZW50cnkgcGVuZGluZyBhIHNoYXJlZCBsaWJyYXJ5IGxvYWQuCisjCisKK2dk Yl90ZXN0ICJza2lwIGZpbGUgJHtzcmNmaWxlX2xpYn0iIFwKKyJGaWxlICR7 c3JjZmlsZV9saWJ9IHdpbGwgYmUgc2tpcHBlZCB3aGVuIHN0ZXBwaW5nLiIg XAorImlnbm9yaW5nIGZpbGUgaW4gc29saWIiIFwKKyJObyBzb3VyY2UgZmls ZSBuYW1lZCAke3NyY2ZpbGVfbGlifS4qCitJZ25vcmUgZmlsZSBwZW5kaW5n IGZ1dHVyZSBzaGFyZWQgbGlicmFyeSBsb2FkLioiXAorInkiCisKKyMKKyMg RG9lcyBpbmZvIHNraXAgbGlzdCB0aGlzIGVudHJ5IGFzIHBlbmRpbmc/Cisj CitnZGJfdGVzdCAiaW5mbyBza2lwIiBcCisiTnVtXFxzK1R5cGVcXHMrRW5i XFxzK0FkZHJlc3NcXHMrV2hhdFxccyoKKzFcXHMrZmlsZVxccyt5XFxzK1xc cyske3NyY2ZpbGVfbGlifSBcXChQRU5ESU5HXFwpXFxzKiIgXAorImluZm8g c2tpcCB3aXRoIHBlbmRpbmcgZmlsZSIKKworaWYgIVtydW50b19tYWluXSB7 IGZhaWwgInNraXAgdGVzdHMgc3VwcHJlc3NlZCIgfQorCisjCisjIFdlIHNo b3VsZG4ndCBzdGVwIGludG8gc3F1YXJlKCksIHNpbmNlIHdlIHNraXBwZWQg c2tpcC1zb2xpYi1saWIuYy4KKyMKK2dkYl90ZXN0ICJzdGVwIiAiIgorZ2Ri X3Rlc3QgImJ0IiAiIzBcXHMrbWFpbi4qIiAic3RlcCBhZnRlciBpZ25vcmlu ZyBzb2xpYiBmaWxlLiIKKworIworIyBPdXIgZW50cnkgc2hvdWxkIG5vIGxv bmdlciBiZSBwZW5kaW5nLiAgTm90ZSB0aGF0IHdlIHVuZm9ydHVuYXRlbHkg bmVlZCB0byBkbworIyBhdCBsZWFzdCBvbmUgc3RlcCBiZWZvcmUgdGhlIGVu dHJ5IHdpbGwgYmUgdW5tYXJrZWQgYXMgcGVuZGluZy4KKyMKK2dkYl90ZXN0 ICJpbmZvIHNraXAiIFwKKyJOdW1cXHMrVHlwZVxccytFbmJcXHMrQWRkcmVz c1xccytXaGF0XFxzKgorMVxccytmaWxlXFxzK3lcXHMrXFxzKy4qJHtzcmNm aWxlX2xpYn1cXHMqIiBcCisiaW5mbyBza2lwIHdpdGggcGVuZGluZyBmaWxl IgorCisjCisjIE5vdyByZXN0YXJ0IGdkYiBhbmQgdGVzdGluZyBpZ25vcmlu ZyBvZiBhIGZ1bmN0aW9uIGluc2lkZSBhIHNvbGliLgorIworZ2RiX2V4aXQK K2dkYl9zdGFydAorZ2RiX2xvYWQgJHtiaW5maWxlX21haW59CisKK2dkYl90 ZXN0ICJza2lwIGZ1bmN0aW9uIG11bHRpcGx5IiBcCisiRnVuY3Rpb24gbXVs dGlwbHkgd2lsbCBiZSBza2lwcGVkIHdoZW4gc3RlcHBpbmcsIHBlbmRpbmcg c2hhcmVkIGxpYnJhcnkgbG9hZC4iIFwKKyJpZ25vcmluZyBmdW5jdGlvbiBp biBzb2xpYiIgXAorIk5vIGZ1bmN0aW9uIGZvdW5kIG5hbWVkIG11bHRpcGx5 Li4qCitJZ25vcmUgZnVuY3Rpb24gcGVuZGluZyBmdXR1cmUgc2hhcmVkIGxp YnJhcnkgbG9hZC4qIlwKKyJ5IgorCitpZiAhW3J1bnRvX21haW5dIHsgZmFp bCAic2tpcCB0ZXN0cyBzdXBwcmVzc2VkIiB9CisKKyMKKyMgT3VyIGZpcnN0 IHN0ZXAgc2hvdWxkIHRha2UgdXMgaW50byBzcXVhcmUuCisjCitnZGJfdGVz dCAic3RlcCIgInNxdWFyZS4qIgorCisjCisjIE5vdyBvdXIgZW50cnkgc2hv dWxkIG5vIGxvbmdlciBiZSBwZW5kaW5nLgorIworZ2RiX3Rlc3QgImluZm8g c2tpcCIgXAorIk51bVxccytUeXBlXFxzK0VuYlxccytBZGRyZXNzXFxzK1do YXRcXHMqCisxXFxzK2Z1bmN0aW9uXFxzK3lcXHMrMHhcWzAtOWEtZlxdK1xc cyttdWx0aXBseSBhdCAuKiR7c3JjZmlsZV9saWJ9Oi4qXFxzKiIgXAorCisj CisjIFRoaXMgc3RlcCBzaG91bGRuJ3QgZ28gaW50byBtdWx0aXBseSAtLSB3 ZSBzaG91bGQgc2tpcCBpdCBhbmQgZ28gb24gdG8gdGhlCisjIGxhc3QgbGlu ZSBvZiBzcXVhcmUuCisjCitnZGJfdGVzdCAic3RlcCIgIiIKK2dkYl90ZXN0 ICJidCIgIiMwXFxzK3NxdWFyZS4qIgpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9za2lwLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L3NraXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41 NjViYTkzCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9za2lwLmMKQEAgLTAsMCArMSwxMyBAQAoraW50IGZvbygpOworaW50 IGJhcigpOworaW50IGJheihpbnQsIGludCk7CisKK2ludCBtYWluKCkKK3sK KyAgcmV0dXJuIGJheihmb28oKSwgYmFyKCkpOworfQorCitpbnQgZm9vKCkK K3sKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3NraXAuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9z a2lwLmV4cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5k MjZhM2MzCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9za2lwLmV4cApAQCAtMCwwICsxLDE4MCBAQAorIyAgIENvcHlyaWdo dCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisjIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisj IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorCisjIFRoaXMgZmlsZSB3YXMgd3JpdHRlbiBieSBKdXN0 aW4gTGViYXIuIChqdXN0aW4ubGViYXJAZ21haWwuY29tKQorCitpZiB7IFtw cmVwYXJlX2Zvcl90ZXN0aW5nIHNraXAuZXhwICJza2lwIiBcCisgICAgICAg ICAgICAgICAgICAgICAgICAgIHtza2lwLmMgc2tpcDEuYyB9IFwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAge2RlYnVnIG5vd2FybmluZ3N9XSB9IHsK KyAgICByZXR1cm4gLTEKK30KKworc2V0IHNyY2ZpbGUgc2tpcC5jCitzZXQg c3JjZmlsZTEgc2tpcDEuYworCisjCisjIFJpZ2h0IGFmdGVyIHdlIHN0YXJ0 IGdkYiwgdGhlcmUncyBubyBkZWZhdWx0IGZpbGUgb3IgZnVuY3Rpb24gdG8g c2tpcC4KKyMKK2dkYl90ZXN0ICJza2lwIGZpbGUiICJObyBkZWZhdWx0IGZp bGUgbm93LiIKK2dkYl90ZXN0ICJza2lwIGZ1bmN0aW9uIiAiTm8gZGVmYXVs dCBmdW5jdGlvbiBub3cuIgorZ2RiX3Rlc3QgInNraXAiICJObyBkZWZhdWx0 IGZ1bmN0aW9uIG5vdy4iCisKK2lmICFbcnVudG9fbWFpbl0geyBmYWlsICJz a2lwIHRlc3RzIHN1cHByZXNzZWQiIH0KKworIworIyBUZXN0IHxpbmZvIHNr aXB8IHdpdGggYW4gZW1wdHkgc2tpcGxpc3QuCisjCitnZGJfdGVzdCAiaW5m byBza2lwIiAiTm90IHNraXBwaW5nIGFueSBmaWxlcyBvciBmdW5jdGlvbnNc LiIgImluZm8gc2tpcCBlbXB0eSIKKworIworIyBDcmVhdGUgYSBza2lwbGlz dCBlbnRyeSBmb3IgdGhlIGN1cnJlbnQgZmlsZSBhbmQgZnVuY3Rpb24uCisj CitnZGJfdGVzdCAic2tpcCBmaWxlIiAiRmlsZSAuKiRzcmNmaWxlIHdpbGwg YmUgc2tpcHBlZCB3aGVuIHN0ZXBwaW5nXC4iCitnZGJfdGVzdCAic2tpcCIg IkZ1bmN0aW9uIG1haW4gYXQgLiogd2lsbCBiZSBza2lwcGVkIHdoZW4gc3Rl cHBpbmdcLiIKKworIworIyBDcmVhdGUgYSBza2lwbGlzdCBlbnRyeSBmb3Ig YSBzcGVjaWZpZWQgZmlsZSBhbmQgZnVuY3Rpb24uCisjCitnZGJfdGVzdCAi c2tpcCBmaWxlIHNraXAxLmMiICJGaWxlIC4qJHNyY2ZpbGUxIHdpbGwgYmUg c2tpcHBlZCB3aGVuIHN0ZXBwaW5nXC4iCitnZGJfdGVzdCAic2tpcCBmdW5j dGlvbiBiYXoiICJGdW5jdGlvbiBiYXogYXQgLiogd2lsbCBiZSBza2lwcGVk IHdoZW4gc3RlcHBpbmdcLiIKKworIworIyBUZXN0IGJhZCBza2lwbGlzdCBl bnRyeSBtb2RpZmljYXRpb24gY29tbWFuZHMKKyMKK2dkYl90ZXN0ICJza2lw IGVuYWJsZSA5OTkiICJObyBza2lwbGlzdCBlbnRyaWVzIGZvdW5kIHdpdGgg bnVtYmVyIDk5OS4iCitnZGJfdGVzdCAic2tpcCBkaXNhYmxlIDk5OSIgIk5v IHNraXBsaXN0IGVudHJpZXMgZm91bmQgd2l0aCBudW1iZXIgOTk5LiIKK2dk Yl90ZXN0ICJza2lwIGRlbGV0ZSA5OTkiICJObyBza2lwbGlzdCBlbnRyaWVz IGZvdW5kIHdpdGggbnVtYmVyIDk5OS4iCitnZGJfdGVzdCAic2tpcCBlbmFi bGUgYSIgIkFyZ3MgbXVzdCBiZSBudW1iZXJzIG9yICdcXCQnIHZhcmlhYmxl cy4iCitnZGJfdGVzdCAic2tpcCBkaXNhYmxlIGEiICJBcmdzIG11c3QgYmUg bnVtYmVycyBvciAnXFwkJyB2YXJpYWJsZXMuIgorZ2RiX3Rlc3QgInNraXAg ZGVsZXRlIGEiICJBcmdzIG11c3QgYmUgbnVtYmVycyBvciAnXFwkJyB2YXJp YWJsZXMuIgorCisjCisjIEFzayBmb3IgaW5mbyBvbiBhIHNraXBsaXN0IGVu dHJ5IHdoaWNoIGRvZXNuJ3QgZXhpc3QuCisjCitnZGJfdGVzdCAiaW5mbyBz a2lwIDk5OSIgIk5vIHNraXBsaXN0IGVudHJpZXMgZm91bmQgd2l0aCBudW1i ZXIgOTk5LiIKKworIworIyBEb2VzIHxpbmZvIHNraXB8IGxvb2sgcmlnaHQ/ CisjCitnZGJfdGVzdCAiaW5mbyBza2lwIiBcCisiTnVtXFxzK1R5cGVcXHMr RW5iXFxzK0FkZHJlc3NcXHMrV2hhdFxccyoKKzFcXHMrZmlsZVxccyt5XFxz Ky4qJHNyY2ZpbGVcXHMqCisyXFxzK2Z1bmN0aW9uXFxzK3lcXHMrMHhcWzAt OWEtZlxdKyBtYWluIGF0IC4qJHNyY2ZpbGU6XFswLTlcXStcXHMqCiszXFxz K2ZpbGVcXHMreVxccysuKiRzcmNmaWxlMVxccyoKKzRcXHMrZnVuY3Rpb25c XHMreVxccysweFxbMC05YS1mXF0rIGJheiBhdCAuKiRzcmNmaWxlMTpcWzAt OVxdK1xccyoiCisKKyMKKyMgUmlnaHQgbm93LCB3ZSBoYXZlIGFuIG91dHN0 YW5kaW5nIHNraXBsaXN0IGVudHJ5IG9uIGJvdGggc291cmNlCisjIGZpbGVz LCBzbyB3aGVuIHdlIHN0ZXAgaW50byB0aGUgZmlyc3QgbGluZSBpbiBtYWlu KCksIHdlIHNob3VsZCBzdGVwCisjIHJpZ2h0IG92ZXIgaXQgYW5kIGdvIHRv IHRoZSBzZWNvbmQgbGluZSBvZiBtYWluKCkuCisjCisKKyMgWFhYIFRoaXMg Z2RiX3Rlc3Qgc29tZXRpbWVzIGZhaWxzLCBkdWUgdG8gYW4gYXBwYXJlbnQg cmFjZS4KK2lmICFbcnVudG9fbWFpbl0geyBmYWlsICJza2lwIHRlc3RzIHN1 cHByZXNzZWQiIH0KK3NlbmRfZ2RiICJzdGVwXG4iCitnZGJfdGVzdCAiYnQi ICJcXHMqXFwjMFxccyttYWluLioiICJzdGVwIGFmdGVyIGFsbCBpZ25vcmVk IgorCisjCisjIE5vdyByZW1vdmUgc2tpcC5jIGZyb20gdGhlIHNraXBsaXN0 LiAgT3VyIGZpcnN0IHN0ZXAgc2hvdWxkIHRha2UgdXMKKyMgaW50byBmb28o KSwgYW5kIG91ciBzZWNvbmQgc3RlcCBzaG91bGQgdGFrZSB1cyB0byB0aGUg bmV4dCBsaW5lIGluCisjIG1haW4oKS4KKyMKK3NlbmRfZ2RiICJza2lwIGRl bGV0ZSAxXG4iCisjIENoZWNrIHRoYXQgZW50cnkgMSBpcyBtaXNzaW5nIGZy b20gfGluZm8gc2tpcHwKK2dkYl90ZXN0ICJpbmZvIHNraXAiIFwKKyJOdW1c XHMrVHlwZVxccytFbmJcXHMrQWRkcmVzc1xccytXaGF0XFxzKgorMlxccytm dW5jdGlvblxccyt5XFxzKzB4XFswLTlhLWZcXSsgbWFpbiBhdCAuKiRzcmNm aWxlOlxbMC05XF0rXFxzKgorM1xccytmaWxlXFxzK3lcXHMrLiokc3JjZmls ZTFcXHMqCis0XFxzK2Z1bmN0aW9uXFxzK3lcXHMrMHhcWzAtOWEtZlxdKyBi YXogYXQgLiokc3JjZmlsZTE6XFswLTlcXStcXHMqIgorCitpZiAhW3J1bnRv X21haW5dIHsgZmFpbCAic2tpcCB0ZXN0cyBzdXBwcmVzc2VkIiB9CitnZGJf dGVzdCAic3RlcCIgImZvbyBcXChcXCkgYXQuKiIgInN0ZXAgYWZ0ZXIgZGVs ZXRpbmcgMSAoMSkiCitzZW5kX2dkYiAic3RlcFxuIjsgIyBSZXR1cm4gZnJv bSBmb28oKQorZ2RiX3Rlc3QgInN0ZXAiICJtYWluIFxcKFxcKSBhdC4qIiAi c3RlcCBhZnRlciBkZWxldGluZyAxICgyKSIKKworIworIyBOb3cgZGlzYWJs ZSB0aGUgc2tpcGxpc3QgZW50cnkgZm9yICBza2lwMS5jLiAgV2Ugc2hvdWxk IG5vdworIyBzdGVwIGludG8gZm9vKCksIHRoZW4gaW50byBiYXIoKSwgYnV0 IG5vdCBpbnRvIGJheigpLgorIworc2VuZF9nZGIgInNraXAgZGlzYWJsZSAz XG4iCisjIElzIGVudHJ5IDMgZGlzYWJsZWQgaW4gfGluZm8gc2tpcHw/Citn ZGJfdGVzdCAiaW5mbyBza2lwIDMiICIuKlxcbjNcXHMrZmlsZVxccytuLioi IFwKKyAgICAgICAgICJpbmZvIHNraXAgc2hvd3MgZW50cnkgYXMgZGlzYWJs ZWQiCisKK2lmICFbcnVudG9fbWFpbl0geyBmYWlsICJza2lwIHRlc3RzIHN1 cHByZXNzZWQiIH0KK2dkYl90ZXN0ICJzdGVwIiAiYmFyIFxcKFxcKSBhdC4q IiAic3RlcCBhZnRlciBkaXNhYmxpbmcgMyAoMSkiCitzZW5kX2dkYiAic3Rl cFxuIjsgIyBSZXR1cm4gZnJvbSBmb28oKQorZ2RiX3Rlc3QgInN0ZXAiICJm b28gXFwoXFwpIGF0LioiICJzdGVwIGFmdGVyIGRpc2FibGluZyAzICgyKSIK K3NlbmRfZ2RiICJzdGVwXG4iOyAjIFJldHVybiBmcm9tIGJhcigpCitnZGJf dGVzdCAic3RlcCIgIm1haW4gXFwoXFwpIGF0LioiICJzdGVwIGFmdGVyIGRp c2FibGluZyAzICgzKSIKKworIworIyBFbmFibGUgc2tpcGxpc3QgZW50cnkg MyBhbmQgbWFrZSBzdXJlIHdlIHN0ZXAgb3ZlciBpdCBsaWtlIGJlZm9yZS4K KyMKK3NlbmRfZ2RiICJza2lwIGVuYWJsZSAzXG4iCisjIElzIGVudHJ5IDMg ZW5hYmxlZCBpbiB8aW5mbyBza2lwfD8KK2dkYl90ZXN0ICJpbmZvIHNraXAg MyIgIi4qXFxuM1xccytmaWxlXFxzK3kuKiIgXAorICAgICAgICAgImluZm8g c2tpcCBzaG93cyBlbnRyeSBhcyBlbmFibGVkIgoraWYgIVtydW50b19tYWlu XSB7IGZhaWwgInNraXAgdGVzdHMgc3VwcHJlc3NlZCIgfQorZ2RiX3Rlc3Qg InN0ZXAiICJmb28gXFwoXFwpIGF0LioiICJzdGVwIGFmdGVyIGRlbGV0aW5n IDEgKDEpIgorc2VuZF9nZGIgInN0ZXBcbiI7ICMgUmV0dXJuIGZyb20gZm9v KCkKK2dkYl90ZXN0ICJzdGVwIiAibWFpbiBcXChcXCkgYXQuKiIgInN0ZXAg YWZ0ZXIgZGVsZXRpbmcgMSAoMikiCisKK3NlbmRfZ2RiICJza2lwIGRpc2Fi bGVcbiIKK2dkYl90ZXN0ICJpbmZvIHNraXAiIFwKKyJOdW1cXHMrVHlwZVxc cytFbmJcXHMrQWRkcmVzc1xccytXaGF0XFxzKgorMlxccytmdW5jdGlvblxc cytuXFxzKzB4XFswLTlhLWZcXSsgbWFpbiBhdCAuKiRzcmNmaWxlOlxbMC05 XF0rXFxzKgorM1xccytmaWxlXFxzK25cXHMrLiokc3JjZmlsZTFcXHMqCis0 XFxzK2Z1bmN0aW9uXFxzK25cXHMrMHhcWzAtOWEtZlxdKyBiYXogYXQgLiok c3JjZmlsZTE6XFswLTlcXStcXHMqIiBcCisiaW5mbyBza2lwIGFmdGVyIGRp c2FibGluZyBhbGwiCisKK3NlbmRfZ2RiICJza2lwIGVuYWJsZVxuIgorZ2Ri X3Rlc3QgImluZm8gc2tpcCIgXAorIk51bVxccytUeXBlXFxzK0VuYlxccytB ZGRyZXNzXFxzK1doYXRcXHMqCisyXFxzK2Z1bmN0aW9uXFxzK3lcXHMrMHhc WzAtOWEtZlxdKyBtYWluIGF0IC4qJHNyY2ZpbGU6XFswLTlcXStcXHMqCisz XFxzK2ZpbGVcXHMreVxccysuKiRzcmNmaWxlMVxccyoKKzRcXHMrZnVuY3Rp b25cXHMreVxccysweFxbMC05YS1mXF0rIGJheiBhdCAuKiRzcmNmaWxlMTpc WzAtOVxdK1xccyoiIFwKKyJpbmZvIHNraXAgYWZ0ZXIgZW5hYmxpbmcgYWxs IgorCitzZW5kX2dkYiAic2tpcCBkaXNhYmxlIDQgMi0zXG4iCitnZGJfdGVz dCAiaW5mbyBza2lwIiBcCisiTnVtXFxzK1R5cGVcXHMrRW5iXFxzK0FkZHJl c3NcXHMrV2hhdFxccyoKKzJcXHMrZnVuY3Rpb25cXHMrblxccysweFxbMC05 YS1mXF0rIG1haW4gYXQgLiokc3JjZmlsZTpcWzAtOVxdK1xccyoKKzNcXHMr ZmlsZVxccytuXFxzKy4qJHNyY2ZpbGUxXFxzKgorNFxccytmdW5jdGlvblxc cytuXFxzKzB4XFswLTlhLWZcXSsgYmF6IGF0IC4qJHNyY2ZpbGUxOlxbMC05 XF0rXFxzKiIgXAorImluZm8gc2tpcCBhZnRlciBkaXNhYmxpbmcgNCAyLTMi CisKK3NlbmRfZ2RiICJza2lwIGVuYWJsZSAyLTNcbiIKK2dkYl90ZXN0ICJp bmZvIHNraXAiIFwKKyJOdW1cXHMrVHlwZVxccytFbmJcXHMrQWRkcmVzc1xc cytXaGF0XFxzKgorMlxccytmdW5jdGlvblxccyt5XFxzKzB4XFswLTlhLWZc XSsgbWFpbiBhdCAuKiRzcmNmaWxlOlxbMC05XF0rXFxzKgorM1xccytmaWxl XFxzK3lcXHMrLiokc3JjZmlsZTFcXHMqCis0XFxzK2Z1bmN0aW9uXFxzK25c XHMrMHhcWzAtOWEtZlxdKyBiYXogYXQgLiokc3JjZmlsZTE6XFswLTlcXStc XHMqIiBcCisiaW5mbyBza2lwIGFmdGVyIGVuYWJsaW5nIDItMyIKKworZ2Ri X3Rlc3QgImluZm8gc2tpcCAyLTMiIFwKKyJOdW1cXHMrVHlwZVxccytFbmJc XHMrQWRkcmVzc1xccytXaGF0XFxzKgorMlxccytmdW5jdGlvblxccyt5XFxz KzB4XFswLTlhLWZcXSsgbWFpbiBhdCAuKiRzcmNmaWxlOlxbMC05XF0rXFxz KgorM1xccytmaWxlXFxzK3lcXHMrLiokc3JjZmlsZTFcXHMqIiBcCisiaW5m byBza2lwIDItMyIKKworc2VuZF9nZGIgInNraXAgZGVsZXRlIDIgM1xuIgor Z2RiX3Rlc3QgImluZm8gc2tpcCIgXAorIjRcXHMrZnVuY3Rpb25cXHMrblxc cysweFxbMC05YS1mXF0rIGJheiBhdCAuKiRzcmNmaWxlMTpcWzAtOVxdK1xc cyoiIFwKKyJpbmZvIHNraXAgYWZ0ZXIgZGVsZXRpbmcgMiAzIgorCitzZW5k X2dkYiAic2tpcCBkZWxldGVcbiIKK2dkYl90ZXN0ICJpbmZvIHNraXAiICJO b3Qgc2tpcHBpbmcgYW55IGZpbGVzIG9yIGZ1bmN0aW9uc1wuIiBcCisiaW5m byBza2lwIGFmdGVyIGRlbGV0aW5nIGFsbCIKZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcDEuYyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2Uvc2tpcDEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4yZGFiNWMzCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9za2lwMS5jCkBAIC0wLDAgKzEsOSBAQAoraW50IGJhcigp Cit7CisgIHJldHVybiAxOworfQorCitpbnQgYmF6KGludCBhLCBpbnQgYikK K3sKKyAgcmV0dXJuIGEgKyBiOworfQo= --0015174c17747a905804b02942ec--