From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6738 invoked by alias); 21 Oct 2008 19:33:28 -0000 Received: (qmail 6728 invoked by uid 22791); 21 Oct 2008 19:33:27 -0000 X-Spam-Check-By: sourceware.org Received: from mx2.redhat.com (HELO mx2.redhat.com) (66.187.237.31) by sourceware.org (qpsmtpd/0.31) with ESMTP; Tue, 21 Oct 2008 19:32:52 +0000 Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id m9LJWDda008708; Tue, 21 Oct 2008 15:32:13 -0400 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id m9LJWAfj008119; Tue, 21 Oct 2008 15:32:10 -0400 Received: from opsy.redhat.com (vpn-13-238.rdu.redhat.com [10.11.13.238]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id m9LJW7Zb009798; Tue, 21 Oct 2008 15:32:07 -0400 Received: by opsy.redhat.com (Postfix, from userid 500) id 6CE0F88810D; Tue, 21 Oct 2008 13:32:01 -0600 (MDT) To: "Ulrich Weigand" Cc: brobecker@adacore.com (Joel Brobecker), gdb-patches@sourceware.org Subject: Re: [RFC/RFA] add struct parse_context to all command functions References: <200810211811.m9LIBW3I020177@d12av02.megacenter.de.ibm.com> From: Tom Tromey Reply-To: Tom Tromey X-Attribution: Tom Date: Tue, 21 Oct 2008 19:33:00 -0000 In-Reply-To: <200810211811.m9LIBW3I020177@d12av02.megacenter.de.ibm.com> (Ulrich Weigand's message of "Tue\, 21 Oct 2008 20\:11\:32 +0200 \(CEST\)") Message-ID: User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.2 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" 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: 2008-10/txt/msg00519.txt.bz2 --=-=-= Content-length: 2113 >>>>> "Ulrich" == Ulrich Weigand writes: Ulrich> Great! I was just about to start implementing something along those Ulrich> lines (to pull current_gdbarch out of the print routines) ... Do you Ulrich> already have a version of that patch you could share? I've been meaning to do this for a while, so I went ahead today and updated my patch to apply to cvs trunk. I have not written a ChangeLog entry yet, sorry. And, I haven't sent this through the tester yet either. IOW, this is a raw patch, use at your own risk, etc. Basically I moved all print-formatting globals into a structure. To ensure I didn't miss anything in the value_print/val_print hierarchy, I actually removed the globals everywhere and replaced remaining references to them with references to user_print_options (where the global state now resides). A couple spots needed to make their own print-options structure; here I made a couple of convenience functions to copy the global structure and modify it to suit. I wrote them to initialize an argument to avoid any possible confusion about ownership (a previous patch had get_raw_print_options, e.g., return a pointer to a static struct -- but this could be confusing, or even wrong if there is any recursion). My motivation here is that I wanted to add a new value-printing flag to control Python-based pretty-printing. I didn't think that adding a new enum value to val_prettyprint would yield good results; but adding a new argument to the whole hierarchy looked ugly. On the python branch, I just used a global -- also ugly, but at least easy to implement and maintain separately from the trunk. This patch, I believe, fixes a latent bug. print_command_1 may set the global inspect_it, but the value is not reset on error. I.e., this function is missing a cleanup. I found this by inspection; I haven't tried testing this theory. Let me know what you think. I'd like to get something along these lines into gdb. If this looks reasonable, I'll write a ChangeLog entry and send it through testing. Or, if you want changes, let me know that. Tom --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=P Content-Transfer-Encoding: base64 Content-Description: the patch Content-length: 239482 ZGlmZiAtLWdpdCBhL2dkYi9hZGEtbGFuZy5jIGIvZ2RiL2FkYS1sYW5nLmMK aW5kZXggMmUyOTc3MC4uY2JkMDMxZSAxMDA2NDQKLS0tIGEvZ2RiL2FkYS1s YW5nLmMKKysrIGIvZ2RiL2FkYS1sYW5nLmMKQEAgLTM1Myw5ICszNTMsOSBA QCBhZGFfZ2V0X2dkYl9jb21wbGV0ZXJfd29yZF9icmVha19jaGFyYWN0ZXJz ICh2b2lkKQogCiBzdGF0aWMgdm9pZAogYWRhX3ByaW50X2FycmF5X2luZGV4 IChzdHJ1Y3QgdmFsdWUgKmluZGV4X3ZhbHVlLCBzdHJ1Y3QgdWlfZmlsZSAq c3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICBpbnQgZm9ybWF0LCBl bnVtIHZhbF9wcmV0dHlwcmludCBwcmV0dHkpCisgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRp b25zKQogewotICBMQV9WQUxVRV9QUklOVCAoaW5kZXhfdmFsdWUsIHN0cmVh bSwgZm9ybWF0LCBwcmV0dHkpOworICBMQV9WQUxVRV9QUklOVCAoaW5kZXhf dmFsdWUsIHN0cmVhbSwgb3B0aW9ucyk7CiAgIGZwcmludGZfZmlsdGVyZWQg KHN0cmVhbSwgIiA9PiAiKTsKIH0KIApAQCAtMTAwNjAsNyArMTAwNjAsNyBA QCBzdGF0aWMgdm9pZAogcHJpbnRfb25lX2V4Y2VwdGlvbiAoZW51bSBleGNl cHRpb25fY2F0Y2hwb2ludF9raW5kIGV4LAogICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGJyZWFrcG9pbnQgKmIsIENPUkVfQUREUiAqbGFzdF9hZGRy KQogeyAKLSAgaWYgKGFkZHJlc3NwcmludCkKKyAgaWYgKHVzZXJfcHJpbnRf b3B0aW9ucy5hZGRyZXNzcHJpbnQpCiAgICAgewogICAgICAgYW5ub3RhdGVf ZmllbGQgKDQpOwogICAgICAgdWlfb3V0X2ZpZWxkX2NvcmVfYWRkciAodWlv dXQsICJhZGRyIiwgYi0+bG9jLT5hZGRyZXNzKTsKZGlmZiAtLWdpdCBhL2dk Yi9hZGEtbGFuZy5oIGIvZ2RiL2FkYS1sYW5nLmgKaW5kZXggMmQxMzYwMy4u ZTY1YTgzOCAxMDA2NDQKLS0tIGEvZ2RiL2FkYS1sYW5nLmgKKysrIGIvZ2Ri L2FkYS1sYW5nLmgKQEAgLTI1OCwxMSArMjU4LDExIEBAIGV4dGVybiB2b2lk IGFkYV9wcmludF90eXBlIChzdHJ1Y3QgdHlwZSAqLCBjaGFyICosIHN0cnVj dCB1aV9maWxlICosIGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQpOwogCiBleHRlcm4gaW50IGFkYV92YWxfcHJpbnQgKHN0cnVjdCB0 eXBlICosIGNvbnN0IGdkYl9ieXRlICosIGludCwgQ09SRV9BRERSLAotICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQs IGludCwgaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHZh bF9wcmV0dHlwcmludCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCB1aV9maWxlICosIGludCwKKwkJCSAgY29uc3Qgc3RydWN0IHZhbHVl X3ByaW50X29wdGlvbnMgKik7CiAKLWV4dGVybiBpbnQgYWRhX3ZhbHVlX3By aW50IChzdHJ1Y3QgdmFsdWUgKiwgc3RydWN0IHVpX2ZpbGUgKiwgaW50LAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gdmFsX3ByZXR0eXBy aW50KTsKK2V4dGVybiBpbnQgYWRhX3ZhbHVlX3ByaW50IChzdHJ1Y3QgdmFs dWUgKiwgc3RydWN0IHVpX2ZpbGUgKiwKKwkJCSAgICBjb25zdCBzdHJ1Y3Qg dmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvKiBEZWZpbmVkIGluIGFkYS1sYW5nLmMgKi8KIApA QCAtMjc1LDcgKzI3NSw4IEBAIGV4dGVybiB2b2lkIGFkYV9lbWl0X2NoYXIg KGludCwgc3RydWN0IHVpX2ZpbGUgKiwgaW50LCBpbnQpOwogZXh0ZXJuIHZv aWQgYWRhX3ByaW50Y2hhciAoaW50LCBzdHJ1Y3QgdWlfZmlsZSAqKTsKIAog ZXh0ZXJuIHZvaWQgYWRhX3ByaW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqLCBj b25zdCBnZGJfYnl0ZSAqLAotCQkJICB1bnNpZ25lZCBpbnQsIGludCwgaW50 KTsKKwkJCSAgdW5zaWduZWQgaW50LCBpbnQsIGludCwKKwkJCSAgY29uc3Qg c3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKik7CiAKIHN0cnVjdCB2YWx1 ZSAqYWRhX2NvbnZlcnRfYWN0dWFsIChzdHJ1Y3QgdmFsdWUgKmFjdHVhbCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdHlw ZSAqZm9ybWFsX3R5cGUwLApkaWZmIC0tZ2l0IGEvZ2RiL2FkYS12YWxwcmlu dC5jIGIvZ2RiL2FkYS12YWxwcmludC5jCmluZGV4IGUyZjc3NDAuLjc5NGY3 OTkgMTAwNjQ0Ci0tLSBhL2dkYi9hZGEtdmFscHJpbnQuYworKysgYi9nZGIv YWRhLXZhbHByaW50LmMKQEAgLTQzLDE4ICs0MywxNyBAQCBzdHJ1Y3QgYWRh X3ZhbF9wcmludF9hcmdzCiAgIGludCBlbWJlZGRlZF9vZmZzZXQ7CiAgIENP UkVfQUREUiBhZGRyZXNzOwogICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtOwot ICBpbnQgZm9ybWF0OwotICBpbnQgZGVyZWZfcmVmOwogICBpbnQgcmVjdXJz ZTsKLSAgZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5OworICBjb25zdCBz dHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9uczsKIH07CiAKIHN0 YXRpYyB2b2lkIHByaW50X3JlY29yZCAoc3RydWN0IHR5cGUgKiwgY29uc3Qg Z2RiX2J5dGUgKiwgc3RydWN0IHVpX2ZpbGUgKiwKLQkJCSAgaW50LCBpbnQs IGVudW0gdmFsX3ByZXR0eXByaW50KTsKKwkJCSAgaW50LCBjb25zdCBzdHJ1 Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKIAogc3RhdGljIGludCBwcmlu dF9maWVsZF92YWx1ZXMgKHN0cnVjdCB0eXBlICosIGNvbnN0IGdkYl9ieXRl ICosCi0JCQkgICAgICAgc3RydWN0IHVpX2ZpbGUgKiwgaW50LCBpbnQsCi0J CQkgICAgICAgZW51bSB2YWxfcHJldHR5cHJpbnQsIGludCwgc3RydWN0IHR5 cGUgKiwKKwkJCSAgICAgICBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCisJCQkg ICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKiwKKwkJ CSAgICAgICBpbnQsIHN0cnVjdCB0eXBlICosCiAJCQkgICAgICAgY29uc3Qg Z2RiX2J5dGUgKik7CiAKIHN0YXRpYyB2b2lkIGFkanVzdF90eXBlX3NpZ25l ZG5lc3MgKHN0cnVjdCB0eXBlICopOwpAQCAtNjIsOCArNjEsOCBAQCBzdGF0 aWMgdm9pZCBhZGp1c3RfdHlwZV9zaWduZWRuZXNzIChzdHJ1Y3QgdHlwZSAq KTsKIHN0YXRpYyBpbnQgYWRhX3ZhbF9wcmludF9zdHViICh2b2lkICphcmdz MCk7CiAKIHN0YXRpYyBpbnQgYWRhX3ZhbF9wcmludF8xIChzdHJ1Y3QgdHlw ZSAqLCBjb25zdCBnZGJfYnl0ZSAqLCBpbnQsIENPUkVfQUREUiwKLQkJCSAg ICBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsIGludCwgaW50LAotCQkJICAgIGVu dW0gdmFsX3ByZXR0eXByaW50KTsKKwkJCSAgICBzdHJ1Y3QgdWlfZmlsZSAq LCBpbnQsCisJCQkgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlv bnMgKik7CiAMCiAKIC8qIE1ha2UgVFlQRSB1bnNpZ25lZCBpZiBpdHMgcmFu Z2Ugb2YgdmFsdWVzIGluY2x1ZGVzIG5vIG5lZ2F0aXZlcy4gICovCkBAIC04 MSwxMyArODAsMTQgQEAgYWRqdXN0X3R5cGVfc2lnbmVkbmVzcyAoc3RydWN0 IHR5cGUgKnR5cGUpCiAgICBvdGhlcndpc2UgMC4gICovCiAKIHN0YXRpYyBp bnQKLXByaW50X29wdGlvbmFsX2xvd19ib3VuZCAoc3RydWN0IHVpX2ZpbGUg KnN0cmVhbSwgc3RydWN0IHR5cGUgKnR5cGUpCitwcmludF9vcHRpb25hbF9s b3dfYm91bmQgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIHN0cnVjdCB0eXBl ICp0eXBlLAorCQkJICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9u cyAqb3B0aW9ucykKIHsKICAgc3RydWN0IHR5cGUgKmluZGV4X3R5cGU7CiAg IGxvbmcgbG93X2JvdW5kOwogICBsb25nIGhpZ2hfYm91bmQ7CiAKLSAgaWYg KHByaW50X2FycmF5X2luZGV4ZXNfcCAoKSkKKyAgaWYgKG9wdGlvbnMtPnBy aW50X2FycmF5X2luZGV4ZXMpCiAgICAgcmV0dXJuIDA7CiAKICAgaWYgKCFn ZXRfYXJyYXlfYm91bmRzICh0eXBlLCAmbG93X2JvdW5kLCAmaGlnaF9ib3Vu ZCkpCkBAIC0xNDUsOCArMTQ1LDggQEAgcHJpbnRfb3B0aW9uYWxfbG93X2Jv dW5kIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBzdHJ1Y3QgdHlwZSAqdHlw ZSkKIHN0YXRpYyB2b2lkCiB2YWxfcHJpbnRfcGFja2VkX2FycmF5X2VsZW1l bnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFk ZHIsCiAJCQkJIGludCBiaXRvZmZzZXQsIHN0cnVjdCB1aV9maWxlICpzdHJl YW0sCi0JCQkJIGludCBmb3JtYXQsIGludCByZWN1cnNlLAotCQkJCSBlbnVt IHZhbF9wcmV0dHlwcmludCBwcmV0dHkpCisJCQkJIGludCByZWN1cnNlLAor CQkJCSBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9u cykKIHsKICAgdW5zaWduZWQgaW50IGk7CiAgIHVuc2lnbmVkIGludCB0aGlu Z3NfcHJpbnRlZCA9IDA7CkBAIC0xNzIsMTQgKzE3MiwxNCBAQCB2YWxfcHJp bnRfcGFja2VkX2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwg Y29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgIGkgPSAwOwogICBhbm5vdGF0 ZV9hcnJheV9zZWN0aW9uX2JlZ2luIChpLCBlbHR0eXBlKTsKIAotICB3aGls ZSAoaSA8IGxlbiAmJiB0aGluZ3NfcHJpbnRlZCA8IHByaW50X21heCkKKyAg d2hpbGUgKGkgPCBsZW4gJiYgdGhpbmdzX3ByaW50ZWQgPCBvcHRpb25zLT5w cmludF9tYXgpCiAgICAgewogICAgICAgc3RydWN0IHZhbHVlICp2MCwgKnYx OwogICAgICAgaW50IGkwOwogCiAgICAgICBpZiAoaSAhPSAwKQogCXsKLQkg IGlmIChwcmV0dHlwcmludF9hcnJheXMpCisJICBpZiAob3B0aW9ucy0+cHJl dHR5cHJpbnRfYXJyYXlzKQogCSAgICB7CiAJICAgICAgZnByaW50Zl9maWx0 ZXJlZCAoc3RyZWFtLCAiLFxuIik7CiAJICAgICAgcHJpbnRfc3BhY2VzX2Zp bHRlcmVkICgyICsgMiAqIHJlY3Vyc2UsIHN0cmVhbSk7CkBAIC0xOTAsNyAr MTkwLDcgQEAgdmFsX3ByaW50X3BhY2tlZF9hcnJheV9lbGVtZW50cyAoc3Ry dWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCSAg ICB9CiAJfQogICAgICAgd3JhcF9oZXJlIChuX3NwYWNlcyAoMiArIDIgKiBy ZWN1cnNlKSk7Ci0gICAgICBtYXliZV9wcmludF9hcnJheV9pbmRleCAoaW5k ZXhfdHlwZSwgaSArIGxvdywgc3RyZWFtLCBmb3JtYXQsIHByZXR0eSk7Cisg ICAgICBtYXliZV9wcmludF9hcnJheV9pbmRleCAoaW5kZXhfdHlwZSwgaSAr IGxvdywgc3RyZWFtLCBvcHRpb25zKTsKIAogICAgICAgaTAgPSBpOwogICAg ICAgdjAgPSBhZGFfdmFsdWVfcHJpbWl0aXZlX3BhY2tlZF92YWwgKE5VTEws IHZhbGFkZHIsCkBAIC0yMTAsMTAgKzIxMCwxMCBAQCB2YWxfcHJpbnRfcGFj a2VkX2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3Qg Z2RiX2J5dGUgKnZhbGFkZHIsCiAJICAgIGJyZWFrOwogCX0KIAotICAgICAg aWYgKGkgLSBpMCA+IHJlcGVhdF9jb3VudF90aHJlc2hvbGQpCisgICAgICBp ZiAoaSAtIGkwID4gb3B0aW9ucy0+cmVwZWF0X2NvdW50X3RocmVzaG9sZCkK IAl7Ci0JICB2YWxfcHJpbnQgKGVsdHR5cGUsIHZhbHVlX2NvbnRlbnRzICh2 MCksIDAsIDAsIHN0cmVhbSwgZm9ybWF0LAotCQkgICAgIDAsIHJlY3Vyc2Ug KyAxLCBwcmV0dHksIGN1cnJlbnRfbGFuZ3VhZ2UpOworCSAgdmFsX3ByaW50 IChlbHR0eXBlLCB2YWx1ZV9jb250ZW50cyAodjApLCAwLCAwLCBzdHJlYW0s CisJCSAgICAgcmVjdXJzZSArIDEsIG9wdGlvbnMsIGN1cnJlbnRfbGFuZ3Vh Z2UpOwogCSAgYW5ub3RhdGVfZWx0X3JlcCAoaSAtIGkwKTsKIAkgIGZwcmlu dGZfZmlsdGVyZWQgKHN0cmVhbSwgXygiIDxyZXBlYXRzICV1IHRpbWVzPiIp LCBpIC0gaTApOwogCSAgYW5ub3RhdGVfZWx0X3JlcF9lbmQgKCk7CkBAIC0y MjYsNyArMjI2LDcgQEAgdmFsX3ByaW50X3BhY2tlZF9hcnJheV9lbGVtZW50 cyAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRy LAogCSAgICB7CiAJICAgICAgaWYgKGogPiBpMCkKIAkJewotCQkgIGlmIChw cmV0dHlwcmludF9hcnJheXMpCisJCSAgaWYgKG9wdGlvbnMtPnByZXR0eXBy aW50X2FycmF5cykKIAkJICAgIHsKIAkJICAgICAgZnByaW50Zl9maWx0ZXJl ZCAoc3RyZWFtLCAiLFxuIik7CiAJCSAgICAgIHByaW50X3NwYWNlc19maWx0 ZXJlZCAoMiArIDIgKiByZWN1cnNlLCBzdHJlYW0pOwpAQCAtMjM3LDEwICsy MzcsMTAgQEAgdmFsX3ByaW50X3BhY2tlZF9hcnJheV9lbGVtZW50cyAoc3Ry dWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCQkg ICAgfQogCQkgIHdyYXBfaGVyZSAobl9zcGFjZXMgKDIgKyAyICogcmVjdXJz ZSkpOwogCQkgIG1heWJlX3ByaW50X2FycmF5X2luZGV4IChpbmRleF90eXBl LCBqICsgbG93LAotCQkJCQkgICBzdHJlYW0sIGZvcm1hdCwgcHJldHR5KTsK KwkJCQkJICAgc3RyZWFtLCBvcHRpb25zKTsKIAkJfQotCSAgICAgIHZhbF9w cmludCAoZWx0dHlwZSwgdmFsdWVfY29udGVudHMgKHYwKSwgMCwgMCwgc3Ry ZWFtLCBmb3JtYXQsCi0JCQkgMCwgcmVjdXJzZSArIDEsIHByZXR0eSwgY3Vy cmVudF9sYW5ndWFnZSk7CisJICAgICAgdmFsX3ByaW50IChlbHR0eXBlLCB2 YWx1ZV9jb250ZW50cyAodjApLCAwLCAwLCBzdHJlYW0sCisJCQkgcmVjdXJz ZSArIDEsIG9wdGlvbnMsIGN1cnJlbnRfbGFuZ3VhZ2UpOwogCSAgICAgIGFu bm90YXRlX2VsdCAoKTsKIAkgICAgfQogCX0KQEAgLTQ1Miw3ICs0NTIsOCBA QCBhZGFfcHJpbnRfc2NhbGFyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgTE9OR0VT VCB2YWwsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCiAKIHN0YXRpYyB2b2lk CiBwcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgY29uc3QgZ2Ri X2J5dGUgKnN0cmluZywKLQkgIHVuc2lnbmVkIGludCBsZW5ndGgsIGludCBm b3JjZV9lbGxpcHNlcywgaW50IHR5cGVfbGVuKQorCSAgdW5zaWduZWQgaW50 IGxlbmd0aCwgaW50IGZvcmNlX2VsbGlwc2VzLCBpbnQgdHlwZV9sZW4sCisJ ICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykK IHsKICAgdW5zaWduZWQgaW50IGk7CiAgIHVuc2lnbmVkIGludCB0aGluZ3Nf cHJpbnRlZCA9IDA7CkBAIC00NjUsNyArNDY2LDcgQEAgcHJpbnRzdHIgKHN0 cnVjdCB1aV9maWxlICpzdHJlYW0sIGNvbnN0IGdkYl9ieXRlICpzdHJpbmcs CiAgICAgICByZXR1cm47CiAgICAgfQogCi0gIGZvciAoaSA9IDA7IGkgPCBs ZW5ndGggJiYgdGhpbmdzX3ByaW50ZWQgPCBwcmludF9tYXg7IGkgKz0gMSkK KyAgZm9yIChpID0gMDsgaSA8IGxlbmd0aCAmJiB0aGluZ3NfcHJpbnRlZCA8 IG9wdGlvbnMtPnByaW50X21heDsgaSArPSAxKQogICAgIHsKICAgICAgIC8q IFBvc2l0aW9uIG9mIHRoZSBjaGFyYWN0ZXIgd2UgYXJlIGV4YW1pbmluZwog ICAgICAgICAgdG8gc2VlIHdoZXRoZXIgaXQgaXMgcmVwZWF0ZWQuICAqLwpA QCAtNDkxLDExICs0OTIsMTEgQEAgcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxl ICpzdHJlYW0sIGNvbnN0IGdkYl9ieXRlICpzdHJpbmcsCiAJICByZXBzICs9 IDE7CiAJfQogCi0gICAgICBpZiAocmVwcyA+IHJlcGVhdF9jb3VudF90aHJl c2hvbGQpCisgICAgICBpZiAocmVwcyA+IG9wdGlvbnMtPnJlcGVhdF9jb3Vu dF90aHJlc2hvbGQpCiAJewogCSAgaWYgKGluX3F1b3RlcykKIAkgICAgewot CSAgICAgIGlmIChpbnNwZWN0X2l0KQorCSAgICAgIGlmIChvcHRpb25zLT5p bnNwZWN0X2l0KQogCQlmcHV0c19maWx0ZXJlZCAoIlxcXCIsICIsIHN0cmVh bSk7CiAJICAgICAgZWxzZQogCQlmcHV0c19maWx0ZXJlZCAoIlwiLCAiLCBz dHJlYW0pOwpAQCAtNTA3LDE0ICs1MDgsMTQgQEAgcHJpbnRzdHIgKHN0cnVj dCB1aV9maWxlICpzdHJlYW0sIGNvbnN0IGdkYl9ieXRlICpzdHJpbmcsCiAJ ICBmcHV0c19maWx0ZXJlZCAoIiciLCBzdHJlYW0pOwogCSAgZnByaW50Zl9m aWx0ZXJlZCAoc3RyZWFtLCBfKCIgPHJlcGVhdHMgJXUgdGltZXM+IiksIHJl cHMpOwogCSAgaSA9IHJlcDEgLSAxOwotCSAgdGhpbmdzX3ByaW50ZWQgKz0g cmVwZWF0X2NvdW50X3RocmVzaG9sZDsKKwkgIHRoaW5nc19wcmludGVkICs9 IG9wdGlvbnMtPnJlcGVhdF9jb3VudF90aHJlc2hvbGQ7CiAJICBuZWVkX2Nv bW1hID0gMTsKIAl9CiAgICAgICBlbHNlCiAJewogCSAgaWYgKCFpbl9xdW90 ZXMpCiAJICAgIHsKLQkgICAgICBpZiAoaW5zcGVjdF9pdCkKKwkgICAgICBp ZiAob3B0aW9ucy0+aW5zcGVjdF9pdCkKIAkJZnB1dHNfZmlsdGVyZWQgKCJc XFwiIiwgc3RyZWFtKTsKIAkgICAgICBlbHNlCiAJCWZwdXRzX2ZpbHRlcmVk ICgiXCIiLCBzdHJlYW0pOwpAQCAtNTI5LDcgKzUzMCw3IEBAIHByaW50c3Ry IChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBjb25zdCBnZGJfYnl0ZSAqc3Ry aW5nLAogICAvKiBUZXJtaW5hdGUgdGhlIHF1b3RlcyBpZiBuZWNlc3Nhcnku ICAqLwogICBpZiAoaW5fcXVvdGVzKQogICAgIHsKLSAgICAgIGlmIChpbnNw ZWN0X2l0KQorICAgICAgaWYgKG9wdGlvbnMtPmluc3BlY3RfaXQpCiAJZnB1 dHNfZmlsdGVyZWQgKCJcXFwiIiwgc3RyZWFtKTsKICAgICAgIGVsc2UKIAlm cHV0c19maWx0ZXJlZCAoIlwiIiwgc3RyZWFtKTsKQEAgLTU0MSw5ICs1NDIs MTAgQEAgcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGNvbnN0 IGdkYl9ieXRlICpzdHJpbmcsCiAKIHZvaWQKIGFkYV9wcmludHN0ciAoc3Ry dWN0IHVpX2ZpbGUgKnN0cmVhbSwgY29uc3QgZ2RiX2J5dGUgKnN0cmluZywK LQkgICAgICB1bnNpZ25lZCBpbnQgbGVuZ3RoLCBpbnQgd2lkdGgsIGludCBm b3JjZV9lbGxpcHNlcykKKwkgICAgICB1bnNpZ25lZCBpbnQgbGVuZ3RoLCBp bnQgd2lkdGgsIGludCBmb3JjZV9lbGxpcHNlcywKKwkgICAgICBjb25zdCBz dHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKIHsKLSAgcHJp bnRzdHIgKHN0cmVhbSwgc3RyaW5nLCBsZW5ndGgsIGZvcmNlX2VsbGlwc2Vz LCB3aWR0aCk7CisgIHByaW50c3RyIChzdHJlYW0sIHN0cmluZywgbGVuZ3Ro LCBmb3JjZV9lbGxpcHNlcywgd2lkdGgsIG9wdGlvbnMpOwogfQogCiAKQEAg LTU2OSw4ICs1NzEsOCBAQCBhZGFfcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxl ICpzdHJlYW0sIGNvbnN0IGdkYl9ieXRlICpzdHJpbmcsCiBpbnQKIGFkYV92 YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAq dmFsYWRkcjAsCiAJICAgICAgIGludCBlbWJlZGRlZF9vZmZzZXQsIENPUkVf QUREUiBhZGRyZXNzLAotCSAgICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFt LCBpbnQgZm9ybWF0LCBpbnQgZGVyZWZfcmVmLAotCSAgICAgICBpbnQgcmVj dXJzZSwgZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5KQorCSAgICAgICBz dHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKKwkgICAgICAg Y29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCiB7 CiAgIHN0cnVjdCBhZGFfdmFsX3ByaW50X2FyZ3MgYXJnczsKICAgYXJncy50 eXBlID0gdHlwZTsKQEAgLTU3OCwxMCArNTgwLDggQEAgYWRhX3ZhbF9wcmlu dCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRy MCwKICAgYXJncy5lbWJlZGRlZF9vZmZzZXQgPSBlbWJlZGRlZF9vZmZzZXQ7 CiAgIGFyZ3MuYWRkcmVzcyA9IGFkZHJlc3M7CiAgIGFyZ3Muc3RyZWFtID0g c3RyZWFtOwotICBhcmdzLmZvcm1hdCA9IGZvcm1hdDsKLSAgYXJncy5kZXJl Zl9yZWYgPSBkZXJlZl9yZWY7CiAgIGFyZ3MucmVjdXJzZSA9IHJlY3Vyc2U7 Ci0gIGFyZ3MucHJldHR5ID0gcHJldHR5OworICBhcmdzLm9wdGlvbnMgPSBv cHRpb25zOwogCiAgIHJldHVybiBjYXRjaF9lcnJvcnMgKGFkYV92YWxfcHJp bnRfc3R1YiwgJmFyZ3MsIE5VTEwsIFJFVFVSTl9NQVNLX0FMTCk7CiB9CkBA IC01OTQsOCArNTk0LDcgQEAgYWRhX3ZhbF9wcmludF9zdHViICh2b2lkICph cmdzMCkKICAgc3RydWN0IGFkYV92YWxfcHJpbnRfYXJncyAqYXJnc3AgPSAo c3RydWN0IGFkYV92YWxfcHJpbnRfYXJncyAqKSBhcmdzMDsKICAgcmV0dXJu IGFkYV92YWxfcHJpbnRfMSAoYXJnc3AtPnR5cGUsIGFyZ3NwLT52YWxhZGRy MCwKIAkJCSAgYXJnc3AtPmVtYmVkZGVkX29mZnNldCwgYXJnc3AtPmFkZHJl c3MsCi0JCQkgIGFyZ3NwLT5zdHJlYW0sIGFyZ3NwLT5mb3JtYXQsIGFyZ3Nw LT5kZXJlZl9yZWYsCi0JCQkgIGFyZ3NwLT5yZWN1cnNlLCBhcmdzcC0+cHJl dHR5KTsKKwkJCSAgYXJnc3AtPnN0cmVhbSwgYXJnc3AtPnJlY3Vyc2UsIGFy Z3NwLT5vcHRpb25zKTsKIH0KIAogLyogQXNzdW1pbmcgVFlQRSBpcyBhIHNp bXBsZSBhcnJheSwgcHJpbnQgdGhlIHZhbHVlIG9mIHRoaXMgYXJyYXkgbG9j YXRlZApAQCAtNjA1LDggKzYwNCw4IEBAIGFkYV92YWxfcHJpbnRfc3R1YiAo dm9pZCAqYXJnczApCiAKIHN0YXRpYyBpbnQKIGFkYV92YWxfcHJpbnRfYXJy YXkgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRk ciwKLQkJICAgICBDT1JFX0FERFIgYWRkcmVzcywgc3RydWN0IHVpX2ZpbGUg KnN0cmVhbSwgaW50IGZvcm1hdCwKLQkJICAgICBpbnQgZGVyZWZfcmVmLCBp bnQgcmVjdXJzZSwgZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5KQorCQkg ICAgIENPUkVfQUREUiBhZGRyZXNzLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFt LCBpbnQgcmVjdXJzZSwKKwkJICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJp bnRfb3B0aW9ucyAqb3B0aW9ucykKIHsKICAgc3RydWN0IHR5cGUgKmVsdHR5 cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKTsKICAgdW5zaWduZWQgaW50 IGVsdGxlbjsKQEAgLTYyMyw0MCArNjIyLDQwIEBAIGFkYV92YWxfcHJpbnRf YXJyYXkgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFs YWRkciwKICAgICBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSkgLyBlbHRsZW47 CiAKICAgLyogRm9yIGFuIGFycmF5IG9mIGNoYXJzLCBwcmludCB3aXRoIHN0 cmluZyBzeW50YXguICAqLwotICBpZiAoYWRhX2lzX3N0cmluZ190eXBlICh0 eXBlKSAmJiAoZm9ybWF0ID09IDAgfHwgZm9ybWF0ID09ICdzJykpCisgIGlm IChhZGFfaXNfc3RyaW5nX3R5cGUgKHR5cGUpCisgICAgICAmJiAob3B0aW9u cy0+b3V0cHV0X2Zvcm1hdCA9PSAwIHx8IG9wdGlvbnMtPm91dHB1dF9mb3Jt YXQgPT0gJ3MnKSkKICAgICB7Ci0gICAgICBpZiAocHJldHR5cHJpbnRfYXJy YXlzKQorICAgICAgaWYgKG9wdGlvbnMtPnByZXR0eXByaW50X2FycmF5cykK ICAgICAgICAgcHJpbnRfc3BhY2VzX2ZpbHRlcmVkICgyICsgMiAqIHJlY3Vy c2UsIHN0cmVhbSk7CiAKICAgICAgIC8qIElmIHJlcXVlc3RlZCwgbG9vayBm b3IgdGhlIGZpcnN0IG51bGwgY2hhciBhbmQgb25seSBwcmludAogICAgICAg ICAgZWxlbWVudHMgdXAgdG8gaXQuICAqLwotICAgICAgaWYgKHN0b3BfcHJp bnRfYXRfbnVsbCkKKyAgICAgIGlmIChvcHRpb25zLT5zdG9wX3ByaW50X2F0 X251bGwpCiAgICAgICAgIHsKICAgICAgICAgICBpbnQgdGVtcF9sZW47CiAK ICAgICAgICAgICAvKiBMb29rIGZvciBhIE5VTEwgY2hhci4gICovCiAgICAg ICAgICAgZm9yICh0ZW1wX2xlbiA9IDA7CiAgICAgICAgICAgICAgICAodGVt cF9sZW4gPCBsZW4KLSAgICAgICAgICAgICAgICAmJiB0ZW1wX2xlbiA8IHBy aW50X21heAorICAgICAgICAgICAgICAgICYmIHRlbXBfbGVuIDwgb3B0aW9u cy0+cHJpbnRfbWF4CiAgICAgICAgICAgICAgICAgJiYgY2hhcl9hdCAodmFs YWRkciwgdGVtcF9sZW4sIGVsdGxlbikgIT0gMCk7CiAgICAgICAgICAgICAg ICB0ZW1wX2xlbiArPSAxKTsKICAgICAgICAgICBsZW4gPSB0ZW1wX2xlbjsK ICAgICAgICAgfQogCi0gICAgICBwcmludHN0ciAoc3RyZWFtLCB2YWxhZGRy LCBsZW4sIDAsIGVsdGxlbik7CisgICAgICBwcmludHN0ciAoc3RyZWFtLCB2 YWxhZGRyLCBsZW4sIDAsIGVsdGxlbiwgb3B0aW9ucyk7CiAgICAgICByZXN1 bHQgPSBsZW47CiAgICAgfQogICBlbHNlCiAgICAgewogICAgICAgZnByaW50 Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKCIpOwotICAgICAgcHJpbnRfb3B0aW9u YWxfbG93X2JvdW5kIChzdHJlYW0sIHR5cGUpOworICAgICAgcHJpbnRfb3B0 aW9uYWxfbG93X2JvdW5kIChzdHJlYW0sIHR5cGUsIG9wdGlvbnMpOwogICAg ICAgaWYgKFRZUEVfRklFTERfQklUU0laRSAodHlwZSwgMCkgPiAwKQogICAg ICAgICB2YWxfcHJpbnRfcGFja2VkX2FycmF5X2VsZW1lbnRzICh0eXBlLCB2 YWxhZGRyLCAwLCBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGZvcm1hdCwgcmVjdXJzZSwgcHJldHR5KTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdXJz ZSwgb3B0aW9ucyk7CiAgICAgICBlbHNlCiAgICAgICAgIHZhbF9wcmludF9h cnJheV9lbGVtZW50cyAodHlwZSwgdmFsYWRkciwgYWRkcmVzcywgc3RyZWFt LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwg ZGVyZWZfcmVmLCByZWN1cnNlLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHByZXR0eSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVjdXJzZSwgb3B0aW9ucywgMCk7CiAgICAgICBmcHJp bnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpIik7CiAgICAgfQogCkBAIC02Njks OCArNjY4LDggQEAgYWRhX3ZhbF9wcmludF9hcnJheSAoc3RydWN0IHR5cGUg KnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogc3RhdGljIGludAog YWRhX3ZhbF9wcmludF8xIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2Ri X2J5dGUgKnZhbGFkZHIwLAogCQkgaW50IGVtYmVkZGVkX29mZnNldCwgQ09S RV9BRERSIGFkZHJlc3MsCi0JCSBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBp bnQgZm9ybWF0LAotCQkgaW50IGRlcmVmX3JlZiwgaW50IHJlY3Vyc2UsIGVu dW0gdmFsX3ByZXR0eXByaW50IHByZXR0eSkKKwkJIHN0cnVjdCB1aV9maWxl ICpzdHJlYW0sIGludCByZWN1cnNlLAorCQkgY29uc3Qgc3RydWN0IHZhbHVl X3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCiB7CiAgIHVuc2lnbmVkIGludCBs ZW47CiAgIGludCBpOwpAQCAtNjk1LDggKzY5NCw3IEBAIGFkYV92YWxfcHJp bnRfMSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxh ZGRyMCwKIAl9CiAgICAgICBlbHNlCiAJcmV0biA9IGFkYV92YWxfcHJpbnRf MSAodmFsdWVfdHlwZSAodmFsKSwgdmFsdWVfY29udGVudHMgKHZhbCksIDAs Ci0JCQkJVkFMVUVfQUREUkVTUyAodmFsKSwgc3RyZWFtLCBmb3JtYXQsCi0J CQkJZGVyZWZfcmVmLCByZWN1cnNlLCBwcmV0dHkpOworCQkJCVZBTFVFX0FE RFJFU1MgKHZhbCksIHN0cmVhbSwgcmVjdXJzZSwgb3B0aW9ucyk7CiAgICAg ICB2YWx1ZV9mcmVlX3RvX21hcmsgKG1hcmspOwogICAgICAgcmV0dXJuIHJl dG47CiAgICAgfQpAQCAtNzA5LDEyICs3MDcsMTIgQEAgYWRhX3ZhbF9wcmlu dF8xIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFk ZHIwLAogICAgIHsKICAgICBkZWZhdWx0OgogICAgICAgcmV0dXJuIGNfdmFs X3ByaW50ICh0eXBlLCB2YWxhZGRyMCwgZW1iZWRkZWRfb2Zmc2V0LCBhZGRy ZXNzLCBzdHJlYW0sCi0JCQkgIGZvcm1hdCwgZGVyZWZfcmVmLCByZWN1cnNl LCBwcmV0dHkpOworCQkJICByZWN1cnNlLCBvcHRpb25zKTsKIAogICAgIGNh c2UgVFlQRV9DT0RFX1BUUjoKICAgICAgIHsKIAlpbnQgcmV0ID0gY192YWxf cHJpbnQgKHR5cGUsIHZhbGFkZHIwLCBlbWJlZGRlZF9vZmZzZXQsIGFkZHJl c3MsIAotCQkJICAgICAgIHN0cmVhbSwgZm9ybWF0LCBkZXJlZl9yZWYsIHJl Y3Vyc2UsIHByZXR0eSk7CisJCQkgICAgICAgc3RyZWFtLCByZWN1cnNlLCBv cHRpb25zKTsKIAlpZiAoYWRhX2lzX3RhZ190eXBlICh0eXBlKSkKIAkgIHsK IAkgICAgc3RydWN0IHZhbHVlICp2YWwgPSAKQEAgLTc3OCwxNyArNzc2LDE2 IEBAIGFkYV92YWxfcHJpbnRfMSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0 IGdkYl9ieXRlICp2YWxhZGRyMCwKIAkJCQkJICAgIHZhbHVlX2Zyb21fY29u dGVudHNfYW5kX2FkZHJlc3MKIAkJCQkJICAgICh0eXBlLCB2YWxhZGRyLCAw KSk7CiAJICAgICAgcmV0dXJuIGFkYV92YWxfcHJpbnRfMSAodGFyZ2V0X3R5 cGUsIHZhbHVlX2NvbnRlbnRzICh2KSwgMCwgMCwKLQkJCQkgICAgICBzdHJl YW0sIGZvcm1hdCwgMCwgcmVjdXJzZSArIDEsIHByZXR0eSk7CisJCQkJICAg ICAgc3RyZWFtLCByZWN1cnNlICsgMSwgb3B0aW9ucyk7CiAJICAgIH0KIAkg IGVsc2UKIAkgICAgcmV0dXJuIGFkYV92YWxfcHJpbnRfMSAoVFlQRV9UQVJH RVRfVFlQRSAodHlwZSksCiAJCQkJICAgIHZhbGFkZHIwLCBlbWJlZGRlZF9v ZmZzZXQsCi0JCQkJICAgIGFkZHJlc3MsIHN0cmVhbSwgZm9ybWF0LCBkZXJl Zl9yZWYsCi0JCQkJICAgIHJlY3Vyc2UsIHByZXR0eSk7CisJCQkJICAgIGFk ZHJlc3MsIHN0cmVhbSwgcmVjdXJzZSwgb3B0aW9ucyk7CiAJfQogICAgICAg ZWxzZQogCXsKLQkgIGZvcm1hdCA9IGZvcm1hdCA/IGZvcm1hdCA6IG91dHB1 dF9mb3JtYXQ7CisJICBpbnQgZm9ybWF0ID0gb3B0aW9ucy0+b3V0cHV0X2Zv cm1hdDsKIAkgIGlmIChmb3JtYXQpCiAJICAgIHsKIAkgICAgICBwcmludF9z Y2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyLCB0eXBlLCBmb3JtYXQsIDAsIHN0 cmVhbSk7CkBAIC04MzAsOSArODI3LDEwIEBAIGFkYV92YWxfcHJpbnRfMSAo c3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyMCwK IAl9CiAKICAgICBjYXNlIFRZUEVfQ09ERV9FTlVNOgotICAgICAgaWYgKGZv cm1hdCkKKyAgICAgIGlmIChvcHRpb25zLT5vdXRwdXRfZm9ybWF0KQogCXsK LQkgIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIsIHR5cGUsIGZv cm1hdCwgMCwgc3RyZWFtKTsKKwkgIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQg KHZhbGFkZHIsIHR5cGUsIG9wdGlvbnMtPm91dHB1dF9mb3JtYXQsCisJCQkJ ICAwLCBzdHJlYW0pOwogCSAgYnJlYWs7CiAJfQogICAgICAgbGVuID0gVFlQ RV9ORklFTERTICh0eXBlKTsKQEAgLTg2MCwxNiArODU4LDE3IEBAIGFkYV92 YWxfcHJpbnRfMSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRl ICp2YWxhZGRyMCwKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUWVBFX0NP REVfRkxBR1M6Ci0gICAgICBpZiAoZm9ybWF0KQotCSAgcHJpbnRfc2NhbGFy X2Zvcm1hdHRlZCAodmFsYWRkciwgdHlwZSwgZm9ybWF0LCAwLCBzdHJlYW0p OworICAgICAgaWYgKG9wdGlvbnMtPm91dHB1dF9mb3JtYXQpCisJICBwcmlu dF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyLCB0eXBlLCBvcHRpb25zLT5v dXRwdXRfZm9ybWF0LAorCQkJCSAgMCwgc3RyZWFtKTsKICAgICAgIGVsc2UK IAl2YWxfcHJpbnRfdHlwZV9jb2RlX2ZsYWdzICh0eXBlLCB2YWxhZGRyLCBz dHJlYW0pOwogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRZUEVfQ09ERV9G TFQ6Ci0gICAgICBpZiAoZm9ybWF0KQorICAgICAgaWYgKG9wdGlvbnMtPm91 dHB1dF9mb3JtYXQpCiAJcmV0dXJuIGNfdmFsX3ByaW50ICh0eXBlLCB2YWxh ZGRyMCwgZW1iZWRkZWRfb2Zmc2V0LCBhZGRyZXNzLCBzdHJlYW0sCi0JCQkg ICAgZm9ybWF0LCBkZXJlZl9yZWYsIHJlY3Vyc2UsIHByZXR0eSk7CisJCQkg ICAgcmVjdXJzZSwgb3B0aW9ucyk7CiAgICAgICBlbHNlCiAJYWRhX3ByaW50 X2Zsb2F0aW5nICh2YWxhZGRyMCArIGVtYmVkZGVkX29mZnNldCwgdHlwZSwg c3RyZWFtKTsKICAgICAgIGJyZWFrOwpAQCAtODgzLDEzICs4ODIsMTMgQEAg YWRhX3ZhbF9wcmludF8xIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2Ri X2J5dGUgKnZhbGFkZHIwLAogCX0KICAgICAgIGVsc2UKIAl7Ci0JICBwcmlu dF9yZWNvcmQgKHR5cGUsIHZhbGFkZHIsIHN0cmVhbSwgZm9ybWF0LCByZWN1 cnNlLCBwcmV0dHkpOworCSAgcHJpbnRfcmVjb3JkICh0eXBlLCB2YWxhZGRy LCBzdHJlYW0sIHJlY3Vyc2UsIG9wdGlvbnMpOwogCSAgcmV0dXJuIDA7CiAJ fQogCiAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6Ci0gICAgICByZXR1cm4g YWRhX3ZhbF9wcmludF9hcnJheSAodHlwZSwgdmFsYWRkciwgYWRkcmVzcywg c3RyZWFtLCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGVyZWZfcmVmLCByZWN1cnNlLCBwcmV0dHkpOworICAgICAgcmV0 dXJuIGFkYV92YWxfcHJpbnRfYXJyYXkgKHR5cGUsIHZhbGFkZHIsIGFkZHJl c3MsIHN0cmVhbSwKKwkJCQkgIHJlY3Vyc2UsIG9wdGlvbnMpOwogCiAgICAg Y2FzZSBUWVBFX0NPREVfUkVGOgogICAgICAgLyogRm9yIHJlZmVyZW5jZXMs IHRoZSBkZWJ1Z2dlciBpcyBleHBlY3RlZCB0byBwcmludCB0aGUgdmFsdWUg YXMKQEAgLTkxMCw4ICs5MDksOCBAQCBhZGFfdmFsX3ByaW50XzEgKHN0cnVj dCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkcjAsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcmVmX3ZhbF9pbnQpKTsK ICAgICAgICAgICAgICAgdmFsX3ByaW50ICh2YWx1ZV90eXBlIChkZXJlZl92 YWwpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2NvbnRlbnRz IChkZXJlZl92YWwpLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgIFZB TFVFX0FERFJFU1MgKGRlcmVmX3ZhbCksIHN0cmVhbSwgZm9ybWF0LAotICAg ICAgICAgICAgICAgICAgICAgICAgIGRlcmVmX3JlZiwgcmVjdXJzZSArIDEs IHByZXR0eSwgY3VycmVudF9sYW5ndWFnZSk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgVkFMVUVfQUREUkVTUyAoZGVyZWZfdmFsKSwgc3RyZWFtLCBy ZWN1cnNlICsgMSwKKwkJCSBvcHRpb25zLCBjdXJyZW50X2xhbmd1YWdlKTsK ICAgICAgICAgICAgIH0KICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICBm cHV0c19maWx0ZXJlZCAoIihudWxsKSIsIHN0cmVhbSk7CkBAIC05MjcsOCAr OTI2LDggQEAgYWRhX3ZhbF9wcmludF8xIChzdHJ1Y3QgdHlwZSAqdHlwZSwg Y29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIwLAogCiBzdGF0aWMgaW50CiBwcmlu dF92YXJpYW50X3BhcnQgKHN0cnVjdCB0eXBlICp0eXBlLCBpbnQgZmllbGRf bnVtLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKLQkJICAgIHN0cnVjdCB1 aV9maWxlICpzdHJlYW0sIGludCBmb3JtYXQsIGludCByZWN1cnNlLAotCQkg ICAgZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5LCBpbnQgY29tbWFfbmVl ZGVkLAorCQkgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vy c2UsCisJCSAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAq b3B0aW9ucywgaW50IGNvbW1hX25lZWRlZCwKIAkJICAgIHN0cnVjdCB0eXBl ICpvdXRlcl90eXBlLCBjb25zdCBnZGJfYnl0ZSAqb3V0ZXJfdmFsYWRkcikK IHsKICAgc3RydWN0IHR5cGUgKnZhcl90eXBlID0gVFlQRV9GSUVMRF9UWVBF ICh0eXBlLCBmaWVsZF9udW0pOwpAQCAtOTQxLDEzICs5NDAsMTMgQEAgcHJp bnRfdmFyaWFudF9wYXJ0IChzdHJ1Y3QgdHlwZSAqdHlwZSwgaW50IGZpZWxk X251bSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgICAgICAoVFlQRV9G SUVMRF9UWVBFICh2YXJfdHlwZSwgd2hpY2gpLAogICAgICAgIHZhbGFkZHIg KyBUWVBFX0ZJRUxEX0JJVFBPUyAodHlwZSwgZmllbGRfbnVtKSAvIEhPU1Rf Q0hBUl9CSVQKICAgICAgICArIFRZUEVfRklFTERfQklUUE9TICh2YXJfdHlw ZSwgd2hpY2gpIC8gSE9TVF9DSEFSX0JJVCwKLSAgICAgICBzdHJlYW0sIGZv cm1hdCwgcmVjdXJzZSwgcHJldHR5LAorICAgICAgIHN0cmVhbSwgcmVjdXJz ZSwgb3B0aW9ucywKICAgICAgICBjb21tYV9uZWVkZWQsIG91dGVyX3R5cGUs IG91dGVyX3ZhbGFkZHIpOwogfQogCiBpbnQKLWFkYV92YWx1ZV9wcmludCAo c3RydWN0IHZhbHVlICp2YWwwLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBp bnQgZm9ybWF0LAotCQkgZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5KQor YWRhX3ZhbHVlX3ByaW50IChzdHJ1Y3QgdmFsdWUgKnZhbDAsIHN0cnVjdCB1 aV9maWxlICpzdHJlYW0sCisJCSBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRf b3B0aW9ucyAqb3B0aW9ucykKIHsKICAgY29uc3QgZ2RiX2J5dGUgKnZhbGFk ZHIgPSB2YWx1ZV9jb250ZW50cyAodmFsMCk7CiAgIENPUkVfQUREUiBhZGRy ZXNzID0gVkFMVUVfQUREUkVTUyAodmFsMCkgKyB2YWx1ZV9vZmZzZXQgKHZh bDApOwpAQCAtOTg1LDIwICs5ODQsMjAgQEAgYWRhX3ZhbHVlX3ByaW50IChz dHJ1Y3QgdmFsdWUgKnZhbDAsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGlu dCBmb3JtYXQsCiAgICAgfQogCiAgIHJldHVybiAodmFsX3ByaW50ICh0eXBl LCB2YWx1ZV9jb250ZW50cyAodmFsKSwgMCwgYWRkcmVzcywKLQkJICAgICBz dHJlYW0sIGZvcm1hdCwgMSwgMCwgcHJldHR5LCBjdXJyZW50X2xhbmd1YWdl KSk7CisJCSAgICAgc3RyZWFtLCAwLCBvcHRpb25zLCBjdXJyZW50X2xhbmd1 YWdlKSk7CiB9CiAKIHN0YXRpYyB2b2lkCiBwcmludF9yZWNvcmQgKHN0cnVj dCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKLQkgICAg ICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgZm9ybWF0LCBpbnQgcmVj dXJzZSwKLQkgICAgICBlbnVtIHZhbF9wcmV0dHlwcmludCBwcmV0dHkpCisJ ICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCisJ ICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlv bnMpCiB7CiAgIHR5cGUgPSBhZGFfY2hlY2tfdHlwZWRlZiAodHlwZSk7CiAK ICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKCIpOwogCi0gIGlmIChw cmludF9maWVsZF92YWx1ZXMgKHR5cGUsIHZhbGFkZHIsIHN0cmVhbSwgZm9y bWF0LCByZWN1cnNlLCBwcmV0dHksCi0JCQkgIDAsIHR5cGUsIHZhbGFkZHIp ICE9IDAgJiYgcHJldHR5KQorICBpZiAocHJpbnRfZmllbGRfdmFsdWVzICh0 eXBlLCB2YWxhZGRyLCBzdHJlYW0sIHJlY3Vyc2UsIG9wdGlvbnMsCisJCQkg IDAsIHR5cGUsIHZhbGFkZHIpICE9IDAgJiYgb3B0aW9ucy0+cHJldHR5KQog ICAgIHsKICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIlxuIik7 CiAgICAgICBwcmludF9zcGFjZXNfZmlsdGVyZWQgKDIgKiByZWN1cnNlLCBz dHJlYW0pOwpAQCAtMTAyMyw4ICsxMDIyLDkgQEAgcHJpbnRfcmVjb3JkIChz dHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAK IHN0YXRpYyBpbnQKIHByaW50X2ZpZWxkX3ZhbHVlcyAoc3RydWN0IHR5cGUg KnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAotCQkgICAgc3RydWN0 IHVpX2ZpbGUgKnN0cmVhbSwgaW50IGZvcm1hdCwgaW50IHJlY3Vyc2UsCi0J CSAgICBlbnVtIHZhbF9wcmV0dHlwcmludCBwcmV0dHksIGludCBjb21tYV9u ZWVkZWQsCisJCSAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVj dXJzZSwKKwkJICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25z ICpvcHRpb25zLAorCQkgICAgaW50IGNvbW1hX25lZWRlZCwKIAkJICAgIHN0 cnVjdCB0eXBlICpvdXRlcl90eXBlLCBjb25zdCBnZGJfYnl0ZSAqb3V0ZXJf dmFsYWRkcikKIHsKICAgaW50IGksIGxlbjsKQEAgLTEwNDIsNyArMTA0Miw3 IEBAIHByaW50X2ZpZWxkX3ZhbHVlcyAoc3RydWN0IHR5cGUgKnR5cGUsIGNv bnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCSAgICBwcmludF9maWVsZF92YWx1 ZXMgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSksCiAJCQkJdmFsYWRkcgog CQkJCSsgVFlQRV9GSUVMRF9CSVRQT1MgKHR5cGUsIGkpIC8gSE9TVF9DSEFS X0JJVCwKLQkJCQlzdHJlYW0sIGZvcm1hdCwgcmVjdXJzZSwgcHJldHR5LAor CQkJCXN0cmVhbSwgcmVjdXJzZSwgb3B0aW9ucywKIAkJCQljb21tYV9uZWVk ZWQsIHR5cGUsIHZhbGFkZHIpOwogCSAgY29udGludWU7CiAJfQpAQCAtMTA1 MCw3ICsxMDUwLDcgQEAgcHJpbnRfZmllbGRfdmFsdWVzIChzdHJ1Y3QgdHlw ZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAJewogCSAgY29t bWFfbmVlZGVkID0KIAkgICAgcHJpbnRfdmFyaWFudF9wYXJ0ICh0eXBlLCBp LCB2YWxhZGRyLAotCQkJCXN0cmVhbSwgZm9ybWF0LCByZWN1cnNlLCBwcmV0 dHksIGNvbW1hX25lZWRlZCwKKwkJCQlzdHJlYW0sIHJlY3Vyc2UsIG9wdGlv bnMsIGNvbW1hX25lZWRlZCwKIAkJCQlvdXRlcl90eXBlLCBvdXRlcl92YWxh ZGRyKTsKIAkgIGNvbnRpbnVlOwogCX0KQEAgLTEwNTksNyArMTA1OSw3IEBA IHByaW50X2ZpZWxkX3ZhbHVlcyAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0 IGdkYl9ieXRlICp2YWxhZGRyLAogCWZwcmludGZfZmlsdGVyZWQgKHN0cmVh bSwgIiwgIik7CiAgICAgICBjb21tYV9uZWVkZWQgPSAxOwogCi0gICAgICBp ZiAocHJldHR5KQorICAgICAgaWYgKG9wdGlvbnMtPnByZXR0eSkKIAl7CiAJ ICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJcbiIpOwogCSAgcHJpbnRf c3BhY2VzX2ZpbHRlcmVkICgyICsgMiAqIHJlY3Vyc2UsIHN0cmVhbSk7CkBA IC0xMDY4LDcgKzEwNjgsNyBAQCBwcmludF9maWVsZF92YWx1ZXMgKHN0cnVj dCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIAl7CiAJ ICB3cmFwX2hlcmUgKG5fc3BhY2VzICgyICsgMiAqIHJlY3Vyc2UpKTsKIAl9 Ci0gICAgICBpZiAoaW5zcGVjdF9pdCkKKyAgICAgIGlmIChvcHRpb25zLT5p bnNwZWN0X2l0KQogCXsKIAkgIGlmIChUWVBFX0NPREUgKFRZUEVfRklFTERf VFlQRSAodHlwZSwgaSkpID09IFRZUEVfQ09ERV9QVFIpCiAJICAgIGZwdXRz X2ZpbHRlcmVkICgiXCIoIHB0ciBcIiIsIHN0cmVhbSk7CkBAIC0xMTE1LDE0 ICsxMTE1LDEzIEBAIHByaW50X2ZpZWxkX3ZhbHVlcyAoc3RydWN0IHR5cGUg KnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCQkJCQkJICBiaXRf c2l6ZSwKIAkJCQkJCSAgVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSk7CiAJ ICAgICAgdmFsX3ByaW50IChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLCB2 YWx1ZV9jb250ZW50cyAodiksIDAsIDAsCi0JCQkgc3RyZWFtLCBmb3JtYXQs IDAsIHJlY3Vyc2UgKyAxLCBwcmV0dHksCi0JCQkgY3VycmVudF9sYW5ndWFn ZSk7CisJCQkgc3RyZWFtLCByZWN1cnNlICsgMSwgb3B0aW9ucywgY3VycmVu dF9sYW5ndWFnZSk7CiAJICAgIH0KIAl9CiAgICAgICBlbHNlCiAJYWRhX3Zh bF9wcmludCAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSwKIAkJICAgICAg IHZhbGFkZHIgKyBUWVBFX0ZJRUxEX0JJVFBPUyAodHlwZSwgaSkgLyBIT1NU X0NIQVJfQklULAotCQkgICAgICAgMCwgMCwgc3RyZWFtLCBmb3JtYXQsIDAs IHJlY3Vyc2UgKyAxLCBwcmV0dHkpOworCQkgICAgICAgMCwgMCwgc3RyZWFt LCByZWN1cnNlICsgMSwgb3B0aW9ucyk7CiAgICAgICBhbm5vdGF0ZV9maWVs ZF9lbmQgKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9nZGIvYXV4di5jIGIv Z2RiL2F1eHYuYwppbmRleCBhZmM3ZmRkLi5lZDAyMDFjIDEwMDY0NAotLS0g YS9nZGIvYXV4di5jCisrKyBiL2dkYi9hdXh2LmMKQEAgLTE3Miw3ICsxNzIs NiBAQCBmcHJpbnRfdGFyZ2V0X2F1eHYgKHN0cnVjdCB1aV9maWxlICpmaWxl LCBzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzKQogCiAgIHdoaWxlICh0YXJnZXRf YXV4dl9wYXJzZSAob3BzLCAmcHRyLCBkYXRhICsgbGVuLCAmdHlwZSwgJnZh bCkgPiAwKQogICAgIHsKLSAgICAgIGV4dGVybiBpbnQgYWRkcmVzc3ByaW50 OwogICAgICAgY29uc3QgY2hhciAqbmFtZSA9ICI/Pz8iOwogICAgICAgY29u c3QgY2hhciAqZGVzY3JpcHRpb24gPSAiIjsKICAgICAgIGVudW0geyBkZWMs IGhleCwgc3RyIH0gZmxhdm9yID0gaGV4OwpAQCAtMjQwLDkgKzIzOSw5IEBA IGZwcmludF90YXJnZXRfYXV4diAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIHN0 cnVjdCB0YXJnZXRfb3BzICpvcHMpCiAJICBmcHJpbnRmX2ZpbHRlcmVkIChm aWxlLCAiMHglc1xuIiwgcGFkZHJfbnogKHZhbCkpOwogCSAgYnJlYWs7CiAJ Y2FzZSBzdHI6Ci0JICBpZiAoYWRkcmVzc3ByaW50KQorCSAgaWYgKHVzZXJf cHJpbnRfb3B0aW9ucy5hZGRyZXNzcHJpbnQpCiAJICAgIGZwcmludGZfZmls dGVyZWQgKGZpbGUsICIweCVzIiwgcGFkZHJfbnogKHZhbCkpOwotCSAgdmFs X3ByaW50X3N0cmluZyAodmFsLCAtMSwgMSwgZmlsZSk7CisJICB2YWxfcHJp bnRfc3RyaW5nICh2YWwsIC0xLCAxLCBmaWxlLCAmdXNlcl9wcmludF9vcHRp b25zKTsKIAkgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsICJcbiIpOwogCSAg YnJlYWs7CiAJfQpkaWZmIC0tZ2l0IGEvZ2RiL2JyZWFrcG9pbnQuYyBiL2dk Yi9icmVha3BvaW50LmMKaW5kZXggMTgwZjZjOS4uM2NhNGMwOCAxMDA2NDQK LS0tIGEvZ2RiL2JyZWFrcG9pbnQuYworKysgYi9nZGIvYnJlYWtwb2ludC5j CkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAiYWRhLWxhbmcuaCIKICNp bmNsdWRlICJ0b3AuaCIKICNpbmNsdWRlICJ3cmFwcGVyLmgiCisjaW5jbHVk ZSAidmFscHJpbnQuaCIKIAogI2luY2x1ZGUgIm1pL21pLWNvbW1vbi5oIgog CkBAIC0yODMsOCArMjg0LDYgQEAgYnJlYWtwb2ludHNfYWx3YXlzX2luc2Vy dGVkX21vZGUgKHZvaWQpCiAKIHZvaWQgX2luaXRpYWxpemVfYnJlYWtwb2lu dCAodm9pZCk7CiAKLWV4dGVybiBpbnQgYWRkcmVzc3ByaW50OwkvKiBQcmlu dCBtYWNoaW5lIGFkZHJlc3Nlcz8gKi8KLQogLyogQXJlIHdlIGV4ZWN1dGlu ZyBicmVha3BvaW50IGNvbW1hbmRzPyAgKi8KIHN0YXRpYyBpbnQgZXhlY3V0 aW5nX2JyZWFrcG9pbnRfY29tbWFuZHM7CiAKQEAgLTIyNTksNyArMjI1OCw3 IEBAIHdhdGNocG9pbnRfdmFsdWVfcHJpbnQgKHN0cnVjdCB2YWx1ZSAqdmFs LCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQogICBpZiAodmFsID09IE5VTEwp CiAgICAgZnByaW50Zl91bmZpbHRlcmVkIChzdHJlYW0sIF8oIjx1bnJlYWRh YmxlPiIpKTsKICAgZWxzZQotICAgIHZhbHVlX3ByaW50ICh2YWwsIHN0cmVh bSwgMCwgVmFsX3ByZXR0eV9kZWZhdWx0KTsKKyAgICB2YWx1ZV9wcmludCAo dmFsLCBzdHJlYW0sICZ1c2VyX3ByaW50X29wdGlvbnMpOwogfQogCiAvKiBU aGlzIGlzIHRoZSBub3JtYWwgcHJpbnQgZnVuY3Rpb24gZm9yIGEgYnBzdGF0 LiAgSW4gdGhlIGZ1dHVyZSwKQEAgLTM2NDAsNyArMzYzOSw3IEBAIHByaW50 X29uZV9icmVha3BvaW50X2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAq YiwKICAgCiAgIC8qIDUgYW5kIDYgKi8KICAgc3RyY3B5ICh3cmFwX2luZGVu dCwgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICIpOwotICBpZiAoYWRk cmVzc3ByaW50KQorICBpZiAodXNlcl9wcmludF9vcHRpb25zLmFkZHJlc3Nw cmludCkKICAgICB7CiAgICAgICBpZiAoZ2RiYXJjaF9hZGRyX2JpdCAoY3Vy cmVudF9nZGJhcmNoKSA8PSAzMikKIAlzdHJjYXQgKHdyYXBfaW5kZW50LCAi ICAgICAgICAgICAiKTsKQEAgLTM2NzIsNyArMzY3MSw3IEBAIHByaW50X29u ZV9icmVha3BvaW50X2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwK IAkvKiBGaWVsZCA0LCB0aGUgYWRkcmVzcywgaXMgb21pdHRlZCAod2hpY2gg bWFrZXMgdGhlIGNvbHVtbnMKIAkgICBub3QgbGluZSB1cCB0b28gbmljZWx5 IHdpdGggdGhlIGhlYWRlcnMsIGJ1dCB0aGUgZWZmZWN0CiAJICAgaXMgcmVs YXRpdmVseSByZWFkYWJsZSkuICAqLwotCWlmIChhZGRyZXNzcHJpbnQpCisJ aWYgKHVzZXJfcHJpbnRfb3B0aW9ucy5hZGRyZXNzcHJpbnQpCiAJICB1aV9v dXRfZmllbGRfc2tpcCAodWlvdXQsICJhZGRyIik7CiAJYW5ub3RhdGVfZmll bGQgKDUpOwogCXByaW50X2V4cHJlc3Npb24gKGItPmV4cCwgc3RiLT5zdHJl YW0pOwpAQCAtMzY4NCw3ICszNjgzLDcgQEAgcHJpbnRfb25lX2JyZWFrcG9p bnRfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiLAogCS8qIEZpZWxk IDQsIHRoZSBhZGRyZXNzLCBpcyBvbWl0dGVkICh3aGljaCBtYWtlcyB0aGUg Y29sdW1ucwogCSAgIG5vdCBsaW5lIHVwIHRvbyBuaWNlbHkgd2l0aCB0aGUg aGVhZGVycywgYnV0IHRoZSBlZmZlY3QKIAkgICBpcyByZWxhdGl2ZWx5IHJl YWRhYmxlKS4gICovCi0JaWYgKGFkZHJlc3NwcmludCkKKwlpZiAodXNlcl9w cmludF9vcHRpb25zLmFkZHJlc3NwcmludCkKIAkgIHVpX291dF9maWVsZF9z a2lwICh1aW91dCwgImFkZHIiKTsKIAlhbm5vdGF0ZV9maWVsZCAoNSk7CiAJ aWYgKGItPmRsbF9wYXRobmFtZSA9PSBOVUxMKQpAQCAtMzcwNCw3ICszNzAz LDcgQEAgcHJpbnRfb25lX2JyZWFrcG9pbnRfbG9jYXRpb24gKHN0cnVjdCBi cmVha3BvaW50ICpiLAogCS8qIEZpZWxkIDQsIHRoZSBhZGRyZXNzLCBpcyBv bWl0dGVkICh3aGljaCBtYWtlcyB0aGUgY29sdW1ucwogCSAgIG5vdCBsaW5l IHVwIHRvbyBuaWNlbHkgd2l0aCB0aGUgaGVhZGVycywgYnV0IHRoZSBlZmZl Y3QKIAkgICBpcyByZWxhdGl2ZWx5IHJlYWRhYmxlKS4gICovCi0JaWYgKGFk ZHJlc3NwcmludCkKKwlpZiAodXNlcl9wcmludF9vcHRpb25zLmFkZHJlc3Nw cmludCkKIAkgIHVpX291dF9maWVsZF9za2lwICh1aW91dCwgImFkZHIiKTsK IAlhbm5vdGF0ZV9maWVsZCAoNSk7CiAJaWYgKGItPmV4ZWNfcGF0aG5hbWUg IT0gTlVMTCkKQEAgLTM3MjcsNyArMzcyNiw3IEBAIHByaW50X29uZV9icmVh a3BvaW50X2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKICAgICAg IGNhc2UgYnBfc2hsaWJfZXZlbnQ6CiAgICAgICBjYXNlIGJwX3RocmVhZF9l dmVudDoKICAgICAgIGNhc2UgYnBfb3ZlcmxheV9ldmVudDoKLQlpZiAoYWRk cmVzc3ByaW50KQorCWlmICh1c2VyX3ByaW50X29wdGlvbnMuYWRkcmVzc3By aW50KQogCSAgewogCSAgICBhbm5vdGF0ZV9maWVsZCAoNCk7CiAJICAgIGlm IChoZWFkZXJfb2ZfbXVsdGlwbGUpCkBAIC0zOTQ0LDcgKzM5NDMsNyBAQCBi cmVha3BvaW50XzEgKGludCBibnVtLCBpbnQgYWxsZmxhZykKIAkgIG5yX3By aW50YWJsZV9icmVha3BvaW50cysrOwogICAgICAgfQogCi0gIGlmIChhZGRy ZXNzcHJpbnQpCisgIGlmICh1c2VyX3ByaW50X29wdGlvbnMuYWRkcmVzc3By aW50KQogICAgIGJrcHR0YmxfY2hhaW4gCiAgICAgICA9IG1ha2VfY2xlYW51 cF91aV9vdXRfdGFibGVfYmVnaW5fZW5kICh1aW91dCwgNiwgbnJfcHJpbnRh YmxlX2JyZWFrcG9pbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIkJyZWFrcG9pbnRUYWJsZSIpOwpAQCAtMzk2 Nyw3ICszOTY2LDcgQEAgYnJlYWtwb2ludF8xIChpbnQgYm51bSwgaW50IGFs bGZsYWcpCiAgIGlmIChucl9wcmludGFibGVfYnJlYWtwb2ludHMgPiAwKQog ICAgIGFubm90YXRlX2ZpZWxkICgzKTsKICAgdWlfb3V0X3RhYmxlX2hlYWRl ciAodWlvdXQsIDMsIHVpX2xlZnQsICJlbmFibGVkIiwgIkVuYiIpOwkvKiA0 ICovCi0gIGlmIChhZGRyZXNzcHJpbnQpCisgIGlmICh1c2VyX3ByaW50X29w dGlvbnMuYWRkcmVzc3ByaW50KQogCXsKIAkgIGlmIChucl9wcmludGFibGVf YnJlYWtwb2ludHMgPiAwKQogCSAgICBhbm5vdGF0ZV9maWVsZCAoNCk7CkBA IC00NzYzLDcgKzQ3NjIsNyBAQCBwcmludF9vbmVfY2F0Y2hfZm9yayAoc3Ry dWN0IGJyZWFrcG9pbnQgKmIsIENPUkVfQUREUiAqbGFzdF9hZGRyKQogICAv KiBGaWVsZCA0LCB0aGUgYWRkcmVzcywgaXMgb21pdHRlZCAod2hpY2ggbWFr ZXMgdGhlIGNvbHVtbnMKICAgICAgbm90IGxpbmUgdXAgdG9vIG5pY2VseSB3 aXRoIHRoZSBoZWFkZXJzLCBidXQgdGhlIGVmZmVjdAogICAgICBpcyByZWxh dGl2ZWx5IHJlYWRhYmxlKS4gICovCi0gIGlmIChhZGRyZXNzcHJpbnQpCisg IGlmICh1c2VyX3ByaW50X29wdGlvbnMuYWRkcmVzc3ByaW50KQogICAgIHVp X291dF9maWVsZF9za2lwICh1aW91dCwgImFkZHIiKTsKICAgYW5ub3RhdGVf ZmllbGQgKDUpOwogICB1aV9vdXRfdGV4dCAodWlvdXQsICJmb3JrIik7CkBA IC00ODQxLDcgKzQ4NDAsNyBAQCBwcmludF9vbmVfY2F0Y2hfdmZvcmsgKHN0 cnVjdCBicmVha3BvaW50ICpiLCBDT1JFX0FERFIgKmxhc3RfYWRkcikKICAg LyogRmllbGQgNCwgdGhlIGFkZHJlc3MsIGlzIG9taXR0ZWQgKHdoaWNoIG1h a2VzIHRoZSBjb2x1bW5zCiAgICAgIG5vdCBsaW5lIHVwIHRvbyBuaWNlbHkg d2l0aCB0aGUgaGVhZGVycywgYnV0IHRoZSBlZmZlY3QKICAgICAgaXMgcmVs YXRpdmVseSByZWFkYWJsZSkuICAqLwotICBpZiAoYWRkcmVzc3ByaW50KQor ICBpZiAodXNlcl9wcmludF9vcHRpb25zLmFkZHJlc3NwcmludCkKICAgICB1 aV9vdXRfZmllbGRfc2tpcCAodWlvdXQsICJhZGRyIik7CiAgIGFubm90YXRl X2ZpZWxkICg1KTsKICAgdWlfb3V0X3RleHQgKHVpb3V0LCAidmZvcmsiKTsK QEAgLTUxODQsNyArNTE4Myw3IEBAIG1lbnRpb24gKHN0cnVjdCBicmVha3Bv aW50ICpiKQogCX0KICAgICAgIGVsc2UKIAl7Ci0JICBpZiAoYWRkcmVzc3By aW50IHx8IGItPnNvdXJjZV9maWxlID09IE5VTEwpCisJICBpZiAodXNlcl9w cmludF9vcHRpb25zLmFkZHJlc3NwcmludCB8fCBiLT5zb3VyY2VfZmlsZSA9 PSBOVUxMKQogCSAgICB7CiAJICAgICAgcHJpbnRmX2ZpbHRlcmVkICgiIGF0 ICIpOwogCSAgICAgIGZwdXRzX2ZpbHRlcmVkIChwYWRkcmVzcyAoYi0+bG9j LT5hZGRyZXNzKSwgZ2RiX3N0ZG91dCk7CkBAIC02NzQ2LDcgKzY3NDUsNyBA QCBwcmludF9leGNlcHRpb25fY2F0Y2hwb2ludCAoc3RydWN0IGJyZWFrcG9p bnQgKmIpCiBzdGF0aWMgdm9pZAogcHJpbnRfb25lX2V4Y2VwdGlvbl9jYXRj aHBvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwgQ09SRV9BRERSICpsYXN0 X2FkZHIpCiB7Ci0gIGlmIChhZGRyZXNzcHJpbnQpCisgIGlmICh1c2VyX3By aW50X29wdGlvbnMuYWRkcmVzc3ByaW50KQogICAgIHsKICAgICAgIGFubm90 YXRlX2ZpZWxkICg0KTsKICAgICAgIGlmIChiLT5sb2MgPT0gTlVMTCB8fCBi LT5sb2MtPnNobGliX2Rpc2FibGVkKQpkaWZmIC0tZ2l0IGEvZ2RiL2MtbGFu Zy5jIGIvZ2RiL2MtbGFuZy5jCmluZGV4IGE5NzhiMTcuLjA2N2U0MjkgMTAw NjQ0Ci0tLSBhL2dkYi9jLWxhbmcuYworKysgYi9nZGIvYy1sYW5nLmMKQEAg LTg2LDcgKzg2LDggQEAgY19wcmludGNoYXIgKGludCBjLCBzdHJ1Y3QgdWlf ZmlsZSAqc3RyZWFtKQogCiB2b2lkCiBjX3ByaW50c3RyIChzdHJ1Y3QgdWlf ZmlsZSAqc3RyZWFtLCBjb25zdCBnZGJfYnl0ZSAqc3RyaW5nLAotCSAgICB1 bnNpZ25lZCBpbnQgbGVuZ3RoLCBpbnQgd2lkdGgsIGludCBmb3JjZV9lbGxp cHNlcykKKwkgICAgdW5zaWduZWQgaW50IGxlbmd0aCwgaW50IHdpZHRoLCBp bnQgZm9yY2VfZWxsaXBzZXMsCisJICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9w cmludF9vcHRpb25zICpvcHRpb25zKQogewogICB1bnNpZ25lZCBpbnQgaTsK ICAgdW5zaWduZWQgaW50IHRoaW5nc19wcmludGVkID0gMDsKQEAgLTEwOCw3 ICsxMDksNyBAQCBjX3ByaW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFt LCBjb25zdCBnZGJfYnl0ZSAqc3RyaW5nLAogICAgICAgcmV0dXJuOwogICAg IH0KIAotICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoICYmIHRoaW5nc19wcmlu dGVkIDwgcHJpbnRfbWF4OyArK2kpCisgIGZvciAoaSA9IDA7IGkgPCBsZW5n dGggJiYgdGhpbmdzX3ByaW50ZWQgPCBvcHRpb25zLT5wcmludF9tYXg7ICsr aSkKICAgICB7CiAgICAgICAvKiBQb3NpdGlvbiBvZiB0aGUgY2hhcmFjdGVy IHdlIGFyZSBleGFtaW5pbmcKICAgICAgICAgIHRvIHNlZSB3aGV0aGVyIGl0 IGlzIHJlcGVhdGVkLiAgKi8KQEAgLTEzNywxMSArMTM4LDExIEBAIGNfcHJp bnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGNvbnN0IGdkYl9ieXRl ICpzdHJpbmcsCiAJICArK3JlcHM7CiAJfQogCi0gICAgICBpZiAocmVwcyA+ IHJlcGVhdF9jb3VudF90aHJlc2hvbGQpCisgICAgICBpZiAocmVwcyA+IG9w dGlvbnMtPnJlcGVhdF9jb3VudF90aHJlc2hvbGQpCiAJewogCSAgaWYgKGlu X3F1b3RlcykKIAkgICAgewotCSAgICAgIGlmIChpbnNwZWN0X2l0KQorCSAg ICAgIGlmIChvcHRpb25zLT5pbnNwZWN0X2l0KQogCQlmcHV0c19maWx0ZXJl ZCAoIlxcXCIsICIsIHN0cmVhbSk7CiAJICAgICAgZWxzZQogCQlmcHV0c19m aWx0ZXJlZCAoIlwiLCAiLCBzdHJlYW0pOwpAQCAtMTUwLDE0ICsxNTEsMTQg QEAgY19wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgY29uc3Qg Z2RiX2J5dGUgKnN0cmluZywKIAkgIExBX1BSSU5UX0NIQVIgKGN1cnJlbnRf Y2hhciwgc3RyZWFtKTsKIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwg XygiIDxyZXBlYXRzICV1IHRpbWVzPiIpLCByZXBzKTsKIAkgIGkgPSByZXAx IC0gMTsKLQkgIHRoaW5nc19wcmludGVkICs9IHJlcGVhdF9jb3VudF90aHJl c2hvbGQ7CisJICB0aGluZ3NfcHJpbnRlZCArPSBvcHRpb25zLT5yZXBlYXRf Y291bnRfdGhyZXNob2xkOwogCSAgbmVlZF9jb21tYSA9IDE7CiAJfQogICAg ICAgZWxzZQogCXsKIAkgIGlmICghaW5fcXVvdGVzKQogCSAgICB7Ci0JICAg ICAgaWYgKGluc3BlY3RfaXQpCisJICAgICAgaWYgKG9wdGlvbnMtPmluc3Bl Y3RfaXQpCiAJCWZwdXRzX2ZpbHRlcmVkICgiXFxcIiIsIHN0cmVhbSk7CiAJ ICAgICAgZWxzZQogCQlmcHV0c19maWx0ZXJlZCAoIlwiIiwgc3RyZWFtKTsK QEAgLTE3MSw3ICsxNzIsNyBAQCBjX3ByaW50c3RyIChzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLCBjb25zdCBnZGJfYnl0ZSAqc3RyaW5nLAogICAvKiBUZXJt aW5hdGUgdGhlIHF1b3RlcyBpZiBuZWNlc3NhcnkuICAqLwogICBpZiAoaW5f cXVvdGVzKQogICAgIHsKLSAgICAgIGlmIChpbnNwZWN0X2l0KQorICAgICAg aWYgKG9wdGlvbnMtPmluc3BlY3RfaXQpCiAJZnB1dHNfZmlsdGVyZWQgKCJc XFwiIiwgc3RyZWFtKTsKICAgICAgIGVsc2UKIAlmcHV0c19maWx0ZXJlZCAo IlwiIiwgc3RyZWFtKTsKZGlmZiAtLWdpdCBhL2dkYi9jLWxhbmcuaCBiL2dk Yi9jLWxhbmcuaAppbmRleCBmZTE5MzlhLi5jYzlhYmRlIDEwMDY0NAotLS0g YS9nZGIvYy1sYW5nLmgKKysrIGIvZ2RiL2MtbGFuZy5oCkBAIC00MCwxMSAr NDAsMTEgQEAgZXh0ZXJuIHZvaWQgY19wcmludF90eXBlIChzdHJ1Y3QgdHlw ZSAqLCBjaGFyICosIHN0cnVjdCB1aV9maWxlICosIGludCwKIGV4dGVybiB2 b2lkIGNfcHJpbnRfdHlwZWRlZiAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHN5 bWJvbCAqLCBzdHJ1Y3QgdWlfZmlsZSAqKTsKIAogZXh0ZXJuIGludCBjX3Zh bF9wcmludCAoc3RydWN0IHR5cGUgKiwgY29uc3QgZ2RiX2J5dGUgKiwgaW50 LCBDT1JFX0FERFIsCi0JCQlzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsIGludCwg aW50LAotCQkJZW51bSB2YWxfcHJldHR5cHJpbnQpOworCQkJc3RydWN0IHVp X2ZpbGUgKiwgaW50LAorCQkJY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29w dGlvbnMgKik7CiAKLWV4dGVybiBpbnQgY192YWx1ZV9wcmludCAoc3RydWN0 IHZhbHVlICosIHN0cnVjdCB1aV9maWxlICosIGludCwKLQkJCSAgZW51bSB2 YWxfcHJldHR5cHJpbnQpOworZXh0ZXJuIGludCBjX3ZhbHVlX3ByaW50IChz dHJ1Y3QgdmFsdWUgKiwgc3RydWN0IHVpX2ZpbGUgKiwKKwkJCSAgY29uc3Qg c3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKik7CiAKIC8qIFRoZXNlIGFy ZSBpbiBjLWxhbmcuYzogKi8KIApAQCAtNTIsNyArNTIsOCBAQCBleHRlcm4g dm9pZCBjX3ByaW50Y2hhciAoaW50LCBzdHJ1Y3QgdWlfZmlsZSAqKTsKIAog ZXh0ZXJuIHZvaWQgY19wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKiBzdHJl YW0sIGNvbnN0IGdkYl9ieXRlICpzdHJpbmcsCiAJCQl1bnNpZ25lZCBpbnQg bGVuZ3RoLCBpbnQgd2lkdGgsCi0JCQlpbnQgZm9yY2VfZWxsaXBzZXMpOwor CQkJaW50IGZvcmNlX2VsbGlwc2VzLAorCQkJY29uc3Qgc3RydWN0IHZhbHVl X3ByaW50X29wdGlvbnMgKm9wdGlvbnMpOwogCiBleHRlcm4gdm9pZCBzY2Fu X21hY3JvX2V4cGFuc2lvbiAoY2hhciAqZXhwYW5zaW9uKTsKIGV4dGVybiBp bnQgc2Nhbm5pbmdfbWFjcm9fZXhwYW5zaW9uICh2b2lkKTsKQEAgLTcwLDE3 ICs3MSwxMyBAQCBleHRlcm4gdm9pZCBjX3R5cGVfcHJpbnRfYmFzZSAoc3Ry dWN0IHR5cGUgKiwgc3RydWN0IHVpX2ZpbGUgKiwgaW50LCBpbnQpOwogCiAv KiBUaGVzZSBhcmUgaW4gY3AtdmFscHJpbnQuYyAqLwogCi1leHRlcm4gaW50 IHZ0YmxwcmludDsJCS8qIENvbnRyb2xzIHByaW50aW5nIG9mIHZ0YmwncyAq LwotCi1leHRlcm4gaW50IHN0YXRpY19maWVsZF9wcmludDsKLQogZXh0ZXJu IHZvaWQgY3BfcHJpbnRfY2xhc3NfbWVtYmVyIChjb25zdCBnZGJfYnl0ZSAq LCBzdHJ1Y3QgdHlwZSAqLAogCQkJCSAgIHN0cnVjdCB1aV9maWxlICosIGNo YXIgKik7CiAKIGV4dGVybiB2b2lkIGNwX3ByaW50X3ZhbHVlX2ZpZWxkcyAo c3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwKIAkJCQkgICBjb25zdCBn ZGJfYnl0ZSAqLCBpbnQsIENPUkVfQUREUiwKIAkJCQkgICBzdHJ1Y3QgdWlf ZmlsZSAqLCBpbnQsCi0JCQkJICAgaW50LCBlbnVtIHZhbF9wcmV0dHlwcmlu dCwKKwkJCQkgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAq LAogCQkJCSAgIHN0cnVjdCB0eXBlICoqLCBpbnQpOwogCiBleHRlcm4gaW50 IGNwX2lzX3Z0YmxfcHRyX3R5cGUgKHN0cnVjdCB0eXBlICopOwpkaWZmIC0t Z2l0IGEvZ2RiL2MtdmFscHJpbnQuYyBiL2dkYi9jLXZhbHByaW50LmMKaW5k ZXggMWRmZjZjYi4uZmI3MTQ4ZSAxMDA2NDQKLS0tIGEvZ2RiL2MtdmFscHJp bnQuYworKysgYi9nZGIvYy12YWxwcmludC5jCkBAIC0zNiw3ICszNiw4IEBA CiAgICBzdHJlYW0gU1RSRUFNLiAgKi8KIAogc3RhdGljIHZvaWQKLXByaW50 X2Z1bmN0aW9uX3BvaW50ZXJfYWRkcmVzcyAoQ09SRV9BRERSIGFkZHJlc3Ms IHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCitwcmludF9mdW5jdGlvbl9wb2lu dGVyX2FkZHJlc3MgKENPUkVfQUREUiBhZGRyZXNzLCBzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLAorCQkJCWludCBhZGRyZXNzcHJpbnQpCiB7CiAgIENPUkVf QUREUiBmdW5jX2FkZHIgPSBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0 cl9hZGRyIChjdXJyZW50X2dkYmFyY2gsCiAJCQkJCQkJICAgIGFkZHJlc3Ms CkBAIC0xMTUsOCArMTE2LDggQEAgdGV4dHVhbF9lbGVtZW50X3R5cGUgKHN0 cnVjdCB0eXBlICp0eXBlLCBjaGFyIGZvcm1hdCkKIAogaW50CiBjX3ZhbF9w cmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxh ZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAotCSAgICAgQ09SRV9BRERSIGFk ZHJlc3MsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCBmb3JtYXQsCi0J ICAgICBpbnQgZGVyZWZfcmVmLCBpbnQgcmVjdXJzZSwgZW51bSB2YWxfcHJl dHR5cHJpbnQgcHJldHR5KQorCSAgICAgQ09SRV9BRERSIGFkZHJlc3MsIHN0 cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAorCSAgICAgY29u c3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCiB7CiAg IHVuc2lnbmVkIGludCBpID0gMDsJLyogTnVtYmVyIG9mIGNoYXJhY3RlcnMg cHJpbnRlZCAqLwogICB1bnNpZ25lZCBsZW47CkBAIC0xMzQsMjkgKzEzNSwy OSBAQCBjX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdk Yl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAogCXsKIAkg IGVsdGxlbiA9IFRZUEVfTEVOR1RIIChlbHR0eXBlKTsKIAkgIGxlbiA9IFRZ UEVfTEVOR1RIICh0eXBlKSAvIGVsdGxlbjsKLQkgIGlmIChwcmV0dHlwcmlu dF9hcnJheXMpCisJICBpZiAob3B0aW9ucy0+cHJldHR5cHJpbnRfYXJyYXlz KQogCSAgICB7CiAJICAgICAgcHJpbnRfc3BhY2VzX2ZpbHRlcmVkICgyICsg MiAqIHJlY3Vyc2UsIHN0cmVhbSk7CiAJICAgIH0KIAogCSAgLyogUHJpbnQg YXJyYXlzIG9mIHRleHR1YWwgY2hhcnMgd2l0aCBhIHN0cmluZyBzeW50YXgu ICAqLwotICAgICAgICAgIGlmICh0ZXh0dWFsX2VsZW1lbnRfdHlwZSAoZWx0 dHlwZSwgZm9ybWF0KSkKKyAgICAgICAgICBpZiAodGV4dHVhbF9lbGVtZW50 X3R5cGUgKGVsdHR5cGUsIG9wdGlvbnMtPm91dHB1dF9mb3JtYXQpKQogCSAg ICB7CiAJICAgICAgLyogSWYgcmVxdWVzdGVkLCBsb29rIGZvciB0aGUgZmly c3QgbnVsbCBjaGFyIGFuZCBvbmx5IHByaW50CiAJICAgICAgICAgZWxlbWVu dHMgdXAgdG8gaXQuICAqLwotCSAgICAgIGlmIChzdG9wX3ByaW50X2F0X251 bGwpCisJICAgICAgaWYgKG9wdGlvbnMtPnN0b3BfcHJpbnRfYXRfbnVsbCkK IAkJewogCQkgIHVuc2lnbmVkIGludCB0ZW1wX2xlbjsKIAogCQkgIC8qIExv b2sgZm9yIGEgTlVMTCBjaGFyLiAqLwogCQkgIGZvciAodGVtcF9sZW4gPSAw OwogCQkgICAgICAgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQpW3RlbXBf bGVuXQotCQkgICAgICAgJiYgdGVtcF9sZW4gPCBsZW4gJiYgdGVtcF9sZW4g PCBwcmludF9tYXg7CisJCSAgICAgICAmJiB0ZW1wX2xlbiA8IGxlbiAmJiB0 ZW1wX2xlbiA8IG9wdGlvbnMtPnByaW50X21heDsKIAkJICAgICAgIHRlbXBf bGVuKyspOwogCQkgIGxlbiA9IHRlbXBfbGVuOwogCQl9CiAKLQkgICAgICBM QV9QUklOVF9TVFJJTkcgKHN0cmVhbSwgdmFsYWRkciArIGVtYmVkZGVkX29m ZnNldCwgbGVuLCBlbHRsZW4sIDApOworCSAgICAgIExBX1BSSU5UX1NUUklO RyAoc3RyZWFtLCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCBsZW4sIGVs dGxlbiwgMCwgb3B0aW9ucyk7CiAJICAgICAgaSA9IGxlbjsKIAkgICAgfQog CSAgZWxzZQpAQCAtMTc0LDcgKzE3NSw3IEBAIGNfdmFsX3ByaW50IChzdHJ1 Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBl bWJlZGRlZF9vZmZzZXQsCiAJCSAgaSA9IDA7CiAJCX0KIAkgICAgICB2YWxf cHJpbnRfYXJyYXlfZWxlbWVudHMgKHR5cGUsIHZhbGFkZHIgKyBlbWJlZGRl ZF9vZmZzZXQsIGFkZHJlc3MsIHN0cmVhbSwKLQkJCQkgICAgIGZvcm1hdCwg ZGVyZWZfcmVmLCByZWN1cnNlLCBwcmV0dHksIGkpOworCQkJCQlyZWN1cnNl LCBvcHRpb25zLCBpKTsKIAkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJl YW0sICJ9Iik7CiAJICAgIH0KIAkgIGJyZWFrOwpAQCAtMTg0LDkgKzE4NSwx MCBAQCBjX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdk Yl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAogICAgICAg Z290byBwcmludF91bnBhY2tlZF9wb2ludGVyOwogCiAgICAgY2FzZSBUWVBF X0NPREVfTUVNQkVSUFRSOgotICAgICAgaWYgKGZvcm1hdCkKKyAgICAgIGlm IChvcHRpb25zLT5vdXRwdXRfZm9ybWF0KQogCXsKLQkgIHByaW50X3NjYWxh cl9mb3JtYXR0ZWQgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUs IGZvcm1hdCwgMCwgc3RyZWFtKTsKKwkgIHByaW50X3NjYWxhcl9mb3JtYXR0 ZWQgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUsCisJCQkJICBv cHRpb25zLT5vdXRwdXRfZm9ybWF0LCAwLCBzdHJlYW0pOwogCSAgYnJlYWs7 CiAJfQogICAgICAgY3BfcHJpbnRfY2xhc3NfbWVtYmVyICh2YWxhZGRyICsg ZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLCBzdHJlYW0sICImIik7CkBAIC0xOTcs MTkgKzE5OSwyMCBAQCBjX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUs IGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0 LAogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRZUEVfQ09ERV9QVFI6Ci0g ICAgICBpZiAoZm9ybWF0ICYmIGZvcm1hdCAhPSAncycpCisgICAgICBpZiAo b3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCAmJiBvcHRpb25zLT5vdXRwdXRfZm9y bWF0ICE9ICdzJykKIAl7Ci0JICBwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2 YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLCBmb3JtYXQsIDAsIHN0 cmVhbSk7CisJICBwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyICsg ZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLAorCQkJCSAgb3B0aW9ucy0+b3V0cHV0 X2Zvcm1hdCwgMCwgc3RyZWFtKTsKIAkgIGJyZWFrOwogCX0KLSAgICAgIGlm ICh2dGJscHJpbnQgJiYgY3BfaXNfdnRibF9wdHJfdHlwZSAodHlwZSkpCisg ICAgICBpZiAob3B0aW9ucy0+dnRibHByaW50ICYmIGNwX2lzX3Z0YmxfcHRy X3R5cGUgKHR5cGUpKQogCXsKIAkgIC8qIFByaW50IHRoZSB1bm1hbmdsZWQg bmFtZSBpZiBkZXNpcmVkLiAgKi8KIAkgIC8qIFByaW50IHZ0YWJsZSBlbnRy eSAtIHdlIG9ubHkgZ2V0IGhlcmUgaWYgd2UgQVJFIHVzaW5nCiAJICAgICAt ZnZ0YWJsZV90aHVua3MuICAoT3RoZXJ3aXNlLCBsb29rIHVuZGVyIFRZUEVf Q09ERV9TVFJVQ1QuKSAqLwogCSAgQ09SRV9BRERSIGFkZHIKIAkgICAgPSBl eHRyYWN0X3R5cGVkX2FkZHJlc3MgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZz ZXQsIHR5cGUpOwotCSAgcHJpbnRfZnVuY3Rpb25fcG9pbnRlcl9hZGRyZXNz IChhZGRyLCBzdHJlYW0pOworCSAgcHJpbnRfZnVuY3Rpb25fcG9pbnRlcl9h ZGRyZXNzIChhZGRyLCBzdHJlYW0sIG9wdGlvbnMtPmFkZHJlc3NwcmludCk7 CiAJICBicmVhazsKIAl9CiAgICAgICBlbHR0eXBlID0gY2hlY2tfdHlwZWRl ZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOwpAQCAtMjIwLDIxICsyMjMs MjQgQEAgY192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBn ZGJfYnl0ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwKIAkgIGlm IChUWVBFX0NPREUgKGVsdHR5cGUpID09IFRZUEVfQ09ERV9GVU5DKQogCSAg ICB7CiAJICAgICAgLyogVHJ5IHRvIHByaW50IHdoYXQgZnVuY3Rpb24gaXQg cG9pbnRzIHRvLiAgKi8KLQkgICAgICBwcmludF9mdW5jdGlvbl9wb2ludGVy X2FkZHJlc3MgKGFkZHIsIHN0cmVhbSk7CisJICAgICAgcHJpbnRfZnVuY3Rp b25fcG9pbnRlcl9hZGRyZXNzIChhZGRyLCBzdHJlYW0sCisJCQkJCSAgICAg IG9wdGlvbnMtPmFkZHJlc3NwcmludCk7CiAJICAgICAgLyogUmV0dXJuIHZh bHVlIGlzIGlycmVsZXZhbnQgZXhjZXB0IGZvciBzdHJpbmcgcG9pbnRlcnMu ICAqLwogCSAgICAgIHJldHVybiAoMCk7CiAJICAgIH0KIAotCSAgaWYgKGFk ZHJlc3NwcmludCkKKwkgIGlmIChvcHRpb25zLT5hZGRyZXNzcHJpbnQpCiAJ ICAgIGZwdXRzX2ZpbHRlcmVkIChwYWRkcmVzcyAoYWRkciksIHN0cmVhbSk7 CiAKIAkgIC8qIEZvciBhIHBvaW50ZXIgdG8gYSB0ZXh0dWFsIHR5cGUsIGFs c28gcHJpbnQgdGhlIHN0cmluZwogCSAgICAgcG9pbnRlZCB0bywgdW5sZXNz IHBvaW50ZXIgaXMgbnVsbC4gICovCiAJICAvKiBGSVhNRTogbmVlZCB0byBo YW5kbGUgd2NoYXJfdCBoZXJlLi4uICovCiAKLQkgIGlmICh0ZXh0dWFsX2Vs ZW1lbnRfdHlwZSAoZWx0dHlwZSwgZm9ybWF0KSAmJiBhZGRyICE9IDApCisJ ICBpZiAodGV4dHVhbF9lbGVtZW50X3R5cGUgKGVsdHR5cGUsIG9wdGlvbnMt Pm91dHB1dF9mb3JtYXQpCisJICAgICAgJiYgYWRkciAhPSAwKQogCSAgICB7 Ci0JICAgICAgaSA9IHZhbF9wcmludF9zdHJpbmcgKGFkZHIsIC0xLCBUWVBF X0xFTkdUSCAoZWx0dHlwZSksIHN0cmVhbSk7CisJICAgICAgaSA9IHZhbF9w cmludF9zdHJpbmcgKGFkZHIsIC0xLCBUWVBFX0xFTkdUSCAoZWx0dHlwZSks IHN0cmVhbSwKKwkJCQkgICAgb3B0aW9ucyk7CiAJICAgIH0KIAkgIGVsc2Ug aWYgKGNwX2lzX3Z0YmxfbWVtYmVyICh0eXBlKSkKIAkgICAgewpAQCAtMjUw LDcgKzI1Niw3IEBAIGNfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwg Y29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZzZXQs CiAJCSAgZnB1dHNfZmlsdGVyZWQgKFNZTUJPTF9QUklOVF9OQU1FIChtc3lt Ym9sKSwgc3RyZWFtKTsKIAkJICBmcHV0c19maWx0ZXJlZCAoIj4iLCBzdHJl YW0pOwogCQl9Ci0JICAgICAgaWYgKHZ0X2FkZHJlc3MgJiYgdnRibHByaW50 KQorCSAgICAgIGlmICh2dF9hZGRyZXNzICYmIG9wdGlvbnMtPnZ0Ymxwcmlu dCkKIAkJewogCQkgIHN0cnVjdCB2YWx1ZSAqdnRfdmFsOwogCQkgIHN0cnVj dCBzeW1ib2wgKndzeW0gPSAoc3RydWN0IHN5bWJvbCAqKSBOVUxMOwpAQCAt MjcxLDEwICsyNzcsOSBAQCBjX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5 cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zm c2V0LAogCQkgICAgICB3dHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUp OwogCQkgICAgfQogCQkgIHZ0X3ZhbCA9IHZhbHVlX2F0ICh3dHlwZSwgdnRf YWRkcmVzcyk7Ci0JCSAgY29tbW9uX3ZhbF9wcmludCAodnRfdmFsLCBzdHJl YW0sIGZvcm1hdCwKLQkJCQkgICAgZGVyZWZfcmVmLCByZWN1cnNlICsgMSwg cHJldHR5LAorCQkgIGNvbW1vbl92YWxfcHJpbnQgKHZ0X3ZhbCwgc3RyZWFt LCByZWN1cnNlICsgMSwgb3B0aW9ucywKIAkJCQkgICAgY3VycmVudF9sYW5n dWFnZSk7Ci0JCSAgaWYgKHByZXR0eSkKKwkJICBpZiAob3B0aW9ucy0+cHJl dHR5KQogCQkgICAgewogCQkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJl YW0sICJcbiIpOwogCQkgICAgICBwcmludF9zcGFjZXNfZmlsdGVyZWQgKDIg KyAyICogcmVjdXJzZSwgc3RyZWFtKTsKQEAgLTI5MSwxNyArMjk2LDE3IEBA IGNfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5 dGUgKnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZzZXQsCiAKICAgICBjYXNl IFRZUEVfQ09ERV9SRUY6CiAgICAgICBlbHR0eXBlID0gY2hlY2tfdHlwZWRl ZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOwotICAgICAgaWYgKGFkZHJl c3NwcmludCkKKyAgICAgIGlmIChvcHRpb25zLT5hZGRyZXNzcHJpbnQpCiAJ ewogCSAgQ09SRV9BRERSIGFkZHIKIAkgICAgPSBleHRyYWN0X3R5cGVkX2Fk ZHJlc3MgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUpOwogCSAg ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiQCIpOwogCSAgZnB1dHNfZmls dGVyZWQgKHBhZGRyZXNzIChhZGRyKSwgc3RyZWFtKTsKLQkgIGlmIChkZXJl Zl9yZWYpCisJICBpZiAob3B0aW9ucy0+ZGVyZWZfcmVmKQogCSAgICBmcHV0 c19maWx0ZXJlZCAoIjogIiwgc3RyZWFtKTsKIAl9CiAgICAgICAvKiBEZS1y ZWZlcmVuY2UgdGhlIHJlZmVyZW5jZS4gICovCi0gICAgICBpZiAoZGVyZWZf cmVmKQorICAgICAgaWYgKG9wdGlvbnMtPmRlcmVmX3JlZikKIAl7CiAJICBp ZiAoVFlQRV9DT0RFIChlbHR0eXBlKSAhPSBUWVBFX0NPREVfVU5ERUYpCiAJ ICAgIHsKQEAgLTMwOSw4ICszMTQsOCBAQCBjX3ZhbF9wcmludCAoc3RydWN0 IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQgZW1i ZWRkZWRfb2Zmc2V0LAogCSAgICAgIHZhbHVlX2F0CiAJICAgICAgKFRZUEVf VEFSR0VUX1RZUEUgKHR5cGUpLAogCSAgICAgICB1bnBhY2tfcG9pbnRlciAo dHlwZSwgdmFsYWRkciArIGVtYmVkZGVkX29mZnNldCkpOwotCSAgICAgIGNv bW1vbl92YWxfcHJpbnQgKGRlcmVmX3ZhbCwgc3RyZWFtLCBmb3JtYXQsIGRl cmVmX3JlZiwKLQkJCQlyZWN1cnNlLCBwcmV0dHksIGN1cnJlbnRfbGFuZ3Vh Z2UpOworCSAgICAgIGNvbW1vbl92YWxfcHJpbnQgKGRlcmVmX3ZhbCwgc3Ry ZWFtLCByZWN1cnNlLCBvcHRpb25zLAorCQkJCWN1cnJlbnRfbGFuZ3VhZ2Up OwogCSAgICB9CiAJICBlbHNlCiAJICAgIGZwdXRzX2ZpbHRlcmVkICgiPz8/ Iiwgc3RyZWFtKTsKQEAgLTMxOCw3ICszMjMsNyBAQCBjX3ZhbF9wcmludCAo c3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLCBp bnQgZW1iZWRkZWRfb2Zmc2V0LAogICAgICAgYnJlYWs7CiAKICAgICBjYXNl IFRZUEVfQ09ERV9VTklPTjoKLSAgICAgIGlmIChyZWN1cnNlICYmICF1bmlv bnByaW50KQorICAgICAgaWYgKHJlY3Vyc2UgJiYgIW9wdGlvbnMtPnVuaW9u cHJpbnQpCiAJewogCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiey4u Ln0iKTsKIAkgIGJyZWFrOwpAQCAtMzI2LDcgKzMzMSw3IEBAIGNfdmFsX3By aW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFk ZHIsIGludCBlbWJlZGRlZF9vZmZzZXQsCiAgICAgICAvKiBGYWxsIHRocm91 Z2guICAqLwogICAgIGNhc2UgVFlQRV9DT0RFX1NUUlVDVDoKICAgICAgIC8q RklYTUU6IEFic3RyYWN0IHRoaXMgYXdheSAqLwotICAgICAgaWYgKHZ0Ymxw cmludCAmJiBjcF9pc192dGJsX3B0cl90eXBlICh0eXBlKSkKKyAgICAgIGlm IChvcHRpb25zLT52dGJscHJpbnQgJiYgY3BfaXNfdnRibF9wdHJfdHlwZSAo dHlwZSkpCiAJewogCSAgLyogUHJpbnQgdGhlIHVubWFuZ2xlZCBuYW1lIGlm IGRlc2lyZWQuICAqLwogCSAgLyogUHJpbnQgdnRhYmxlIGVudHJ5IC0gd2Ug b25seSBnZXQgaGVyZSBpZiBOT1QgdXNpbmcKQEAgLTMzNywxNyArMzQyLDE4 IEBAIGNfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2Ri X2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZzZXQsCiAJICBDT1JF X0FERFIgYWRkcgogCSAgICA9IGV4dHJhY3RfdHlwZWRfYWRkcmVzcyAodmFs YWRkciArIG9mZnNldCwgZmllbGRfdHlwZSk7CiAKLQkgIHByaW50X2Z1bmN0 aW9uX3BvaW50ZXJfYWRkcmVzcyAoYWRkciwgc3RyZWFtKTsKKwkgIHByaW50 X2Z1bmN0aW9uX3BvaW50ZXJfYWRkcmVzcyAoYWRkciwgc3RyZWFtLCBvcHRp b25zLT5hZGRyZXNzcHJpbnQpOwogCX0KICAgICAgIGVsc2UKLQljcF9wcmlu dF92YWx1ZV9maWVsZHMgKHR5cGUsIHR5cGUsIHZhbGFkZHIsIGVtYmVkZGVk X29mZnNldCwgYWRkcmVzcywgc3RyZWFtLCBmb3JtYXQsCi0JCQkgICAgICAg cmVjdXJzZSwgcHJldHR5LCBOVUxMLCAwKTsKKwljcF9wcmludF92YWx1ZV9m aWVsZHMgKHR5cGUsIHR5cGUsIHZhbGFkZHIsIGVtYmVkZGVkX29mZnNldCwg YWRkcmVzcywgc3RyZWFtLAorCQkJICAgICAgIHJlY3Vyc2UsIG9wdGlvbnMs IE5VTEwsIDApOwogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRZUEVfQ09E RV9FTlVNOgotICAgICAgaWYgKGZvcm1hdCkKKyAgICAgIGlmIChvcHRpb25z LT5vdXRwdXRfZm9ybWF0KQogCXsKLQkgIHByaW50X3NjYWxhcl9mb3JtYXR0 ZWQgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUsIGZvcm1hdCwg MCwgc3RyZWFtKTsKKwkgIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFk ZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUsCisJCQkJICBvcHRpb25zLT5v dXRwdXRfZm9ybWF0LCAwLCBzdHJlYW0pOwogCSAgYnJlYWs7CiAJfQogICAg ICAgbGVuID0gVFlQRV9ORklFTERTICh0eXBlKTsKQEAgLTM3MSwxNyArMzc3 LDE5IEBAIGNfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3Qg Z2RiX2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZzZXQsCiAgICAg ICBicmVhazsKIAogICAgIGNhc2UgVFlQRV9DT0RFX0ZMQUdTOgotICAgICAg aWYgKGZvcm1hdCkKLQkgIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFk ZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUsIGZvcm1hdCwgMCwgc3RyZWFt KTsKKyAgICAgIGlmIChvcHRpb25zLT5vdXRwdXRfZm9ybWF0KQorCSAgcHJp bnRfc2NhbGFyX2Zvcm1hdHRlZCAodmFsYWRkciArIGVtYmVkZGVkX29mZnNl dCwgdHlwZSwKKwkJCQkgIG9wdGlvbnMtPm91dHB1dF9mb3JtYXQsIDAsIHN0 cmVhbSk7CiAgICAgICBlbHNlCiAJdmFsX3ByaW50X3R5cGVfY29kZV9mbGFn cyAodHlwZSwgdmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwgc3RyZWFtKTsK ICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUWVBFX0NPREVfRlVOQzoKICAg ICBjYXNlIFRZUEVfQ09ERV9NRVRIT0Q6Ci0gICAgICBpZiAoZm9ybWF0KQor ICAgICAgaWYgKG9wdGlvbnMtPm91dHB1dF9mb3JtYXQpCiAJewotCSAgcHJp bnRfc2NhbGFyX2Zvcm1hdHRlZCAodmFsYWRkciArIGVtYmVkZGVkX29mZnNl dCwgdHlwZSwgZm9ybWF0LCAwLCBzdHJlYW0pOworCSAgcHJpbnRfc2NhbGFy X2Zvcm1hdHRlZCAodmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwgdHlwZSwK KwkJCQkgIG9wdGlvbnMtPm91dHB1dF9mb3JtYXQsIDAsIHN0cmVhbSk7CiAJ ICBicmVhazsKIAl9CiAgICAgICAvKiBGSVhNRSwgd2Ugc2hvdWxkIGNvbnNp ZGVyLCBhdCBsZWFzdCBmb3IgQU5TSSBDIGxhbmd1YWdlLCBlbGltaW5hdGlu ZwpAQCAtMzk0LDkgKzQwMiw5IEBAIGNfdmFsX3ByaW50IChzdHJ1Y3QgdHlw ZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRl ZF9vZmZzZXQsCiAgICAgICBicmVhazsKIAogICAgIGNhc2UgVFlQRV9DT0RF X0JPT0w6Ci0gICAgICBmb3JtYXQgPSBmb3JtYXQgPyBmb3JtYXQgOiBvdXRw dXRfZm9ybWF0OwotICAgICAgaWYgKGZvcm1hdCkKLQlwcmludF9zY2FsYXJf Zm9ybWF0dGVkICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLCBm b3JtYXQsIDAsIHN0cmVhbSk7CisgICAgICBpZiAob3B0aW9ucy0+b3V0cHV0 X2Zvcm1hdCkKKwlwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyICsg ZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLAorCQkJCW9wdGlvbnMtPm91dHB1dF9m b3JtYXQsIDAsIHN0cmVhbSk7CiAgICAgICBlbHNlCiAJewogCSAgdmFsID0g dW5wYWNrX2xvbmcgKHR5cGUsIHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQp OwpAQCAtNDIwLDEwICs0MjgsMTAgQEAgY192YWxfcHJpbnQgKHN0cnVjdCB0 eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwgaW50IGVtYmVk ZGVkX29mZnNldCwKICAgICAgIC8qIEZBTExUSFJPVUdIICovCiAKICAgICBj YXNlIFRZUEVfQ09ERV9JTlQ6Ci0gICAgICBmb3JtYXQgPSBmb3JtYXQgPyBm b3JtYXQgOiBvdXRwdXRfZm9ybWF0OwotICAgICAgaWYgKGZvcm1hdCkKKyAg ICAgIGlmIChvcHRpb25zLT5vdXRwdXRfZm9ybWF0KQogCXsKLQkgIHByaW50 X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQs IHR5cGUsIGZvcm1hdCwgMCwgc3RyZWFtKTsKKwkgIHByaW50X3NjYWxhcl9m b3JtYXR0ZWQgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUsCisJ CQkJICBvcHRpb25zLT5vdXRwdXRfZm9ybWF0LCAwLCBzdHJlYW0pOwogCX0K ICAgICAgIGVsc2UKIAl7CkBAIC00MzIsNyArNDQwLDcgQEAgY192YWxfcHJp bnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRk ciwgaW50IGVtYmVkZGVkX29mZnNldCwKIAkgICAgIFNpbmNlIHdlIGRvbid0 IGtub3cgd2hldGhlciB0aGUgdmFsdWUgaXMgcmVhbGx5IGludGVuZGVkIHRv CiAJICAgICBiZSB1c2VkIGFzIGFuIGludGVnZXIgb3IgYSBjaGFyYWN0ZXIs IHByaW50IHRoZSBjaGFyYWN0ZXIKIAkgICAgIGVxdWl2YWxlbnQgYXMgd2Vs bC4gICovCi0JICBpZiAodGV4dHVhbF9lbGVtZW50X3R5cGUgKHR5cGUsIGZv cm1hdCkpCisJICBpZiAodGV4dHVhbF9lbGVtZW50X3R5cGUgKHR5cGUsIG9w dGlvbnMtPm91dHB1dF9mb3JtYXQpKQogCSAgICB7CiAJICAgICAgZnB1dHNf ZmlsdGVyZWQgKCIgIiwgc3RyZWFtKTsKIAkgICAgICBMQV9QUklOVF9DSEFS ICgodW5zaWduZWQgY2hhcikgdW5wYWNrX2xvbmcgKHR5cGUsIHZhbGFkZHIg KyBlbWJlZGRlZF9vZmZzZXQpLApAQCAtNDQyLDEwICs0NTAsMTAgQEAgY192 YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAq dmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwKICAgICAgIGJyZWFrOwog CiAgICAgY2FzZSBUWVBFX0NPREVfQ0hBUjoKLSAgICAgIGZvcm1hdCA9IGZv cm1hdCA/IGZvcm1hdCA6IG91dHB1dF9mb3JtYXQ7Ci0gICAgICBpZiAoZm9y bWF0KQorICAgICAgaWYgKG9wdGlvbnMtPm91dHB1dF9mb3JtYXQpCiAJewot CSAgcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAodmFsYWRkciArIGVtYmVkZGVk X29mZnNldCwgdHlwZSwgZm9ybWF0LCAwLCBzdHJlYW0pOworCSAgcHJpbnRf c2NhbGFyX2Zvcm1hdHRlZCAodmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwg dHlwZSwKKwkJCQkgIG9wdGlvbnMtPm91dHB1dF9mb3JtYXQsIDAsIHN0cmVh bSk7CiAJfQogICAgICAgZWxzZQogCXsKQEAgLTQ2MCw5ICs0NjgsMTAgQEAg Y192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0 ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwKICAgICAgIGJyZWFr OwogCiAgICAgY2FzZSBUWVBFX0NPREVfRkxUOgotICAgICAgaWYgKGZvcm1h dCkKKyAgICAgIGlmIChvcHRpb25zLT5vdXRwdXRfZm9ybWF0KQogCXsKLQkg IHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIgKyBlbWJlZGRlZF9v ZmZzZXQsIHR5cGUsIGZvcm1hdCwgMCwgc3RyZWFtKTsKKwkgIHByaW50X3Nj YWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5 cGUsCisJCQkJICBvcHRpb25zLT5vdXRwdXRfZm9ybWF0LCAwLCBzdHJlYW0p OwogCX0KICAgICAgIGVsc2UKIAl7CkBAIC00NzEsOCArNDgwLDkgQEAgY192 YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAq dmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwKICAgICAgIGJyZWFrOwog CiAgICAgY2FzZSBUWVBFX0NPREVfREVDRkxPQVQ6Ci0gICAgICBpZiAoZm9y bWF0KQotCXByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIgKyBlbWJl ZGRlZF9vZmZzZXQsIHR5cGUsIGZvcm1hdCwgMCwgc3RyZWFtKTsKKyAgICAg IGlmIChvcHRpb25zLT5vdXRwdXRfZm9ybWF0KQorCXByaW50X3NjYWxhcl9m b3JtYXR0ZWQgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUsCisJ CQkJb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCwgMCwgc3RyZWFtKTsKICAgICAg IGVsc2UKIAlwcmludF9kZWNpbWFsX2Zsb2F0aW5nICh2YWxhZGRyICsgZW1i ZWRkZWRfb2Zmc2V0LCB0eXBlLCBzdHJlYW0pOwogICAgICAgYnJlYWs7CkBA IC00OTMsMTkgKzUwMywxOSBAQCBjX3ZhbF9wcmludCAoc3RydWN0IHR5cGUg KnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRf b2Zmc2V0LAogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRZUEVfQ09ERV9D T01QTEVYOgotICAgICAgaWYgKGZvcm1hdCkKKyAgICAgIGlmIChvcHRpb25z LT5vdXRwdXRfZm9ybWF0KQogCXByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZh bGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsCiAJCQkJVFlQRV9UQVJHRVRfVFlQ RSAodHlwZSksCi0JCQkJZm9ybWF0LCAwLCBzdHJlYW0pOworCQkJCW9wdGlv bnMtPm91dHB1dF9mb3JtYXQsIDAsIHN0cmVhbSk7CiAgICAgICBlbHNlCiAJ cHJpbnRfZmxvYXRpbmcgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIFRZ UEVfVEFSR0VUX1RZUEUgKHR5cGUpLAogCQkJc3RyZWFtKTsKICAgICAgIGZw cmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiArICIpOwotICAgICAgaWYgKGZv cm1hdCkKKyAgICAgIGlmIChvcHRpb25zLT5vdXRwdXRfZm9ybWF0KQogCXBy aW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZz ZXQKIAkJCQkrIFRZUEVfTEVOR1RIIChUWVBFX1RBUkdFVF9UWVBFICh0eXBl KSksCiAJCQkJVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCi0JCQkJZm9ybWF0 LCAwLCBzdHJlYW0pOworCQkJCW9wdGlvbnMtPm91dHB1dF9mb3JtYXQsIDAs IHN0cmVhbSk7CiAgICAgICBlbHNlCiAJcHJpbnRfZmxvYXRpbmcgKHZhbGFk ZHIgKyBlbWJlZGRlZF9vZmZzZXQKIAkJCSsgVFlQRV9MRU5HVEggKFRZUEVf VEFSR0VUX1RZUEUgKHR5cGUpKSwKQEAgLTUyMiw4ICs1MzIsOCBAQCBjX3Zh bF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2 YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAogfQogDAogaW50Ci1jX3Zh bHVlX3ByaW50IChzdHJ1Y3QgdmFsdWUgKnZhbCwgc3RydWN0IHVpX2ZpbGUg KnN0cmVhbSwgaW50IGZvcm1hdCwKLQkgICAgICAgZW51bSB2YWxfcHJldHR5 cHJpbnQgcHJldHR5KQorY192YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICp2 YWwsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIAorCSAgICAgICBjb25zdCBz dHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKIHsKICAgc3Ry dWN0IHR5cGUgKnR5cGUsICpyZWFsX3R5cGU7CiAgIGludCBmdWxsLCB0b3As IHVzaW5nX2VuYzsKQEAgLTU1MSw3ICs1NjEsOCBAQCBjX3ZhbHVlX3ByaW50 IChzdHJ1Y3QgdmFsdWUgKnZhbCwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwg aW50IGZvcm1hdCwKIAl7CiAJICAvKiBQcmludCBub3RoaW5nICovCiAJfQot ICAgICAgZWxzZSBpZiAob2JqZWN0cHJpbnQgJiYgKFRZUEVfQ09ERSAoVFlQ RV9UQVJHRVRfVFlQRSAodHlwZSkpID09IFRZUEVfQ09ERV9DTEFTUykpCisg ICAgICBlbHNlIGlmIChvcHRpb25zLT5vYmplY3RwcmludAorCSAgICAgICAm JiAoVFlQRV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgPT0gVFlQ RV9DT0RFX0NMQVNTKSkKIAl7CiAKIAkgIGlmIChUWVBFX0NPREUodHlwZSkg PT0gVFlQRV9DT0RFX1JFRikKQEAgLTYwMiw3ICs2MTMsNyBAQCBjX3ZhbHVl X3ByaW50IChzdHJ1Y3QgdmFsdWUgKnZhbCwgc3RydWN0IHVpX2ZpbGUgKnN0 cmVhbSwgaW50IGZvcm1hdCwKICAgaWYgKCF2YWx1ZV9pbml0aWFsaXplZCAo dmFsKSkKICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIgW3VuaW5p dGlhbGl6ZWRdICIpOwogCi0gIGlmIChvYmplY3RwcmludCAmJiAoVFlQRV9D T0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQ0xBU1MpKQorICBpZiAob3B0aW9u cy0+b2JqZWN0cHJpbnQgJiYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9D T0RFX0NMQVNTKSkKICAgICB7CiAgICAgICAvKiBBdHRlbXB0IHRvIGRldGVy bWluZSByZWFsIHR5cGUgb2Ygb2JqZWN0ICovCiAgICAgICByZWFsX3R5cGUg PSB2YWx1ZV9ydHRpX3R5cGUgKHZhbCwgJmZ1bGwsICZ0b3AsICZ1c2luZ19l bmMpOwpAQCAtNjE2LDggKzYyNyw4IEBAIGNfdmFsdWVfcHJpbnQgKHN0cnVj dCB2YWx1ZSAqdmFsLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgZm9y bWF0LAogCSAgLyogUHJpbnQgb3V0IG9iamVjdDogZW5jbG9zaW5nIHR5cGUg aXMgc2FtZSBhcyByZWFsX3R5cGUgaWYgZnVsbCAqLwogCSAgcmV0dXJuIHZh bF9wcmludCAodmFsdWVfZW5jbG9zaW5nX3R5cGUgKHZhbCksCiAJCQkgICAg dmFsdWVfY29udGVudHNfYWxsICh2YWwpLCAwLAotCQkJICAgIFZBTFVFX0FE RFJFU1MgKHZhbCksIHN0cmVhbSwgZm9ybWF0LCAxLCAwLAotCQkJICAgIHBy ZXR0eSwgY3VycmVudF9sYW5ndWFnZSk7CisJCQkgICAgVkFMVUVfQUREUkVT UyAodmFsKSwgc3RyZWFtLCAwLAorCQkJICAgIG9wdGlvbnMsIGN1cnJlbnRf bGFuZ3VhZ2UpOwogICAgICAgICAgIC8qIE5vdGU6IFdoZW4gd2UgbG9vayB1 cCBSVFRJIGVudHJpZXMsIHdlIGRvbid0IGdldCBhbnkgaW5mb3JtYXRpb24g b24KICAgICAgICAgICAgICBjb25zdCBvciB2b2xhdGlsZSBhdHRyaWJ1dGVz ICovCiAJfQpAQCAtNjI4LDggKzYzOSw4IEBAIGNfdmFsdWVfcHJpbnQgKHN0 cnVjdCB2YWx1ZSAqdmFsLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQg Zm9ybWF0LAogCQkJICAgIFRZUEVfTkFNRSAodmFsdWVfZW5jbG9zaW5nX3R5 cGUgKHZhbCkpKTsKIAkgIHJldHVybiB2YWxfcHJpbnQgKHZhbHVlX2VuY2xv c2luZ190eXBlICh2YWwpLAogCQkJICAgIHZhbHVlX2NvbnRlbnRzX2FsbCAo dmFsKSwgMCwKLQkJCSAgICBWQUxVRV9BRERSRVNTICh2YWwpLCBzdHJlYW0s IGZvcm1hdCwgMSwgMCwKLQkJCSAgICBwcmV0dHksIGN1cnJlbnRfbGFuZ3Vh Z2UpOworCQkJICAgIFZBTFVFX0FERFJFU1MgKHZhbCksIHN0cmVhbSwgMCwK KwkJCSAgICBvcHRpb25zLCBjdXJyZW50X2xhbmd1YWdlKTsKIAl9CiAgICAg ICAvKiBPdGhlcndpc2UsIHdlIGVuZCB1cCBhdCB0aGUgcmV0dXJuIG91dHNp ZGUgdGhpcyAiaWYiICovCiAgICAgfQpAQCAtNjM3LDUgKzY0OCw1IEBAIGNf dmFsdWVfcHJpbnQgKHN0cnVjdCB2YWx1ZSAqdmFsLCBzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLCBpbnQgZm9ybWF0LAogICByZXR1cm4gdmFsX3ByaW50ICh0 eXBlLCB2YWx1ZV9jb250ZW50c19hbGwgKHZhbCksCiAJCSAgICB2YWx1ZV9l bWJlZGRlZF9vZmZzZXQgKHZhbCksCiAJCSAgICBWQUxVRV9BRERSRVNTICh2 YWwpICsgdmFsdWVfb2Zmc2V0ICh2YWwpLAotCQkgICAgc3RyZWFtLCBmb3Jt YXQsIDEsIDAsIHByZXR0eSwgY3VycmVudF9sYW5ndWFnZSk7CisJCSAgICBz dHJlYW0sIDAsIG9wdGlvbnMsIGN1cnJlbnRfbGFuZ3VhZ2UpOwogfQpkaWZm IC0tZ2l0IGEvZ2RiL2NwLXZhbHByaW50LmMgYi9nZGIvY3AtdmFscHJpbnQu YwppbmRleCA2MTU1OWFmLi5iYmI3Njg5IDEwMDY0NAotLS0gYS9nZGIvY3At dmFscHJpbnQuYworKysgYi9nZGIvY3AtdmFscHJpbnQuYwpAQCAtMzgsNyAr MzgsNiBAQAogI2luY2x1ZGUgImxhbmd1YWdlLmgiCiAKIC8qIENvbnRyb2xz IHByaW50aW5nIG9mIHZ0YmwncyAqLwotaW50IHZ0YmxwcmludDsKIHN0YXRp YyB2b2lkCiBzaG93X3Z0YmxwcmludCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUs IGludCBmcm9tX3R0eSwKIAkJc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMs IGNvbnN0IGNoYXIgKnZhbHVlKQpAQCAtNTAsNyArNDksNiBAQCBQcmludGlu ZyBvZiBDKysgdmlydHVhbCBmdW5jdGlvbiB0YWJsZXMgaXMgJXMuXG4iKSwK IAogLyogQ29udHJvbHMgbG9va2luZyB1cCBhbiBvYmplY3QncyBkZXJpdmVk IHR5cGUgdXNpbmcgd2hhdCB3ZSBmaW5kIGluCiAgICBpdHMgdnRhYmxlcy4g ICovCi1pbnQgb2JqZWN0cHJpbnQ7CiBzdGF0aWMgdm9pZAogc2hvd19vYmpl Y3RwcmludCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwK IAkJICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywKQEAgLTYxLDcgKzU5 LDYgQEAgUHJpbnRpbmcgb2Ygb2JqZWN0J3MgZGVyaXZlZCB0eXBlIGJhc2Vk IG9uIHZ0YWJsZSBpbmZvIGlzICVzLlxuIiksCiAJCSAgICB2YWx1ZSk7CiB9 CiAKLWludCBzdGF0aWNfZmllbGRfcHJpbnQ7CQkvKiBDb250cm9scyBwcmlu dGluZyBvZiBzdGF0aWMgZmllbGRzLiAqLwogc3RhdGljIHZvaWQKIHNob3df c3RhdGljX2ZpZWxkX3ByaW50IChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50 IGZyb21fdHR5LAogCQkJIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBj b25zdCBjaGFyICp2YWx1ZSkKQEAgLTc3LDEyICs3NCwxMiBAQCBzdGF0aWMg c3RydWN0IG9ic3RhY2sgZG9udF9wcmludF9zdGF0bWVtX29ic3RhY2s7CiBl eHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV9jcF92YWxwcmludCAodm9pZCk7CiAK IHN0YXRpYyB2b2lkIGNwX3ByaW50X3N0YXRpY19maWVsZCAoc3RydWN0IHR5 cGUgKiwgc3RydWN0IHZhbHVlICosCi0JCQkJICAgc3RydWN0IHVpX2ZpbGUg KiwgaW50LCBpbnQsCi0JCQkJICAgZW51bSB2YWxfcHJldHR5cHJpbnQpOwor CQkJCSAgIHN0cnVjdCB1aV9maWxlICosIGludCwKKwkJCQkgICBjb25zdCBz dHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKIAogc3RhdGljIHZvaWQg Y3BfcHJpbnRfdmFsdWUgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICos IGNvbnN0IGdkYl9ieXRlICosCi0JCQkgICAgaW50LCBDT1JFX0FERFIsIHN0 cnVjdCB1aV9maWxlICosIGludCwgaW50LAotCQkJICAgIGVudW0gdmFsX3By ZXR0eXByaW50LCBzdHJ1Y3QgdHlwZSAqKik7CisJCQkgICAgaW50LCBDT1JF X0FERFIsIHN0cnVjdCB1aV9maWxlICosIGludCwKKwkJCSAgICBjb25zdCBz dHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqLCBzdHJ1Y3QgdHlwZSAqKik7 CiAKIAogLyogR0NDIHZlcnNpb25zIGFmdGVyIDIuNC41IHVzZSB0aGlzLiAg Ki8KQEAgLTE1MSw5ICsxNDgsOSBAQCBjcF9pc192dGJsX21lbWJlciAoc3Ry dWN0IHR5cGUgKnR5cGUpCiB2b2lkCiBjcF9wcmludF92YWx1ZV9maWVsZHMg KHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqcmVhbF90eXBlLAog CQkgICAgICAgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBvZmZzZXQs IENPUkVfQUREUiBhZGRyZXNzLAotCQkgICAgICAgc3RydWN0IHVpX2ZpbGUg KnN0cmVhbSwgaW50IGZvcm1hdCwgaW50IHJlY3Vyc2UsCi0JCSAgICAgICBl bnVtIHZhbF9wcmV0dHlwcmludCBwcmV0dHksCi0JCSAgICAgICBzdHJ1Y3Qg dHlwZSAqKmRvbnRfcHJpbnRfdmIsaW50IGRvbnRfcHJpbnRfc3RhdG1lbSkK KwkJICAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNl LAorCQkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMg Km9wdGlvbnMsCisJCSAgICAgICBzdHJ1Y3QgdHlwZSAqKmRvbnRfcHJpbnRf dmIsIGludCBkb250X3ByaW50X3N0YXRtZW0pCiB7CiAgIGludCBpLCBsZW4s IG5fYmFzZWNsYXNzZXM7CiAgIGNoYXIgKmxhc3RfZG9udF9wcmludCA9IG9i c3RhY2tfbmV4dF9mcmVlICgmZG9udF9wcmludF9zdGF0bWVtX29ic3RhY2sp OwpAQCAtMTcwLDcgKzE2Nyw3IEBAIGNwX3ByaW50X3ZhbHVlX2ZpZWxkcyAo c3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICpyZWFsX3R5cGUsCiAK ICAgaWYgKG5fYmFzZWNsYXNzZXMgPiAwKQogICAgIGNwX3ByaW50X3ZhbHVl ICh0eXBlLCByZWFsX3R5cGUsIHZhbGFkZHIsIG9mZnNldCwgYWRkcmVzcywg c3RyZWFtLAotCQkgICAgZm9ybWF0LCByZWN1cnNlICsgMSwgcHJldHR5LCBk b250X3ByaW50X3ZiKTsKKwkJICAgIHJlY3Vyc2UgKyAxLCBvcHRpb25zLCBk b250X3ByaW50X3ZiKTsKIAogICAvKiBTZWNvbmQsIHByaW50IG91dCBkYXRh IGZpZWxkcyAqLwogCkBAIC0xOTIsNyArMTg5LDcgQEAgY3BfcHJpbnRfdmFs dWVfZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKnJl YWxfdHlwZSwKICAgICAgIGZvciAoaSA9IG5fYmFzZWNsYXNzZXM7IGkgPCBs ZW47IGkrKykKIAl7CiAJICAvKiBJZiByZXF1ZXN0ZWQsIHNraXAgcHJpbnRp bmcgb2Ygc3RhdGljIGZpZWxkcy4gICovCi0JICBpZiAoIXN0YXRpY19maWVs ZF9wcmludAorCSAgaWYgKCFvcHRpb25zLT5zdGF0aWNfZmllbGRfcHJpbnQK IAkgICAgICAmJiBmaWVsZF9pc19zdGF0aWMgKCZUWVBFX0ZJRUxEICh0eXBl LCBpKSkpCiAJICAgIGNvbnRpbnVlOwogCkBAIC0yMDAsNyArMTk3LDcgQEAg Y3BfcHJpbnRfdmFsdWVfZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3Ry dWN0IHR5cGUgKnJlYWxfdHlwZSwKIAkgICAgZnByaW50Zl9maWx0ZXJlZCAo c3RyZWFtLCAiLCAiKTsKIAkgIGVsc2UgaWYgKG5fYmFzZWNsYXNzZXMgPiAw KQogCSAgICB7Ci0JICAgICAgaWYgKHByZXR0eSkKKwkgICAgICBpZiAob3B0 aW9ucy0+cHJldHR5KQogCQl7CiAJCSAgZnByaW50Zl9maWx0ZXJlZCAoc3Ry ZWFtLCAiXG4iKTsKIAkJICBwcmludF9zcGFjZXNfZmlsdGVyZWQgKDIgKyAy ICogcmVjdXJzZSwgc3RyZWFtKTsKQEAgLTIxMSw3ICsyMDgsNyBAQCBjcF9w cmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3Qg dHlwZSAqcmVhbF90eXBlLAogCSAgICB9CiAJICBmaWVsZHNfc2VlbiA9IDE7 CiAKLQkgIGlmIChwcmV0dHkpCisJICBpZiAob3B0aW9ucy0+cHJldHR5KQog CSAgICB7CiAJICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiXG4i KTsKIAkgICAgICBwcmludF9zcGFjZXNfZmlsdGVyZWQgKDIgKyAyICogcmVj dXJzZSwgc3RyZWFtKTsKQEAgLTIyMCw3ICsyMTcsNyBAQCBjcF9wcmludF92 YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAq cmVhbF90eXBlLAogCSAgICB7CiAJICAgICAgd3JhcF9oZXJlIChuX3NwYWNl cyAoMiArIDIgKiByZWN1cnNlKSk7CiAJICAgIH0KLQkgIGlmIChpbnNwZWN0 X2l0KQorCSAgaWYgKG9wdGlvbnMtPmluc3BlY3RfaXQpCiAJICAgIHsKIAkg ICAgICBpZiAoVFlQRV9DT0RFIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkp KSA9PSBUWVBFX0NPREVfUFRSKQogCQlmcHV0c19maWx0ZXJlZCAoIlwiKCBw dHIgXCIiLCBzdHJlYW0pOwpAQCAtMjcwLDcgKzI2Nyw3IEBAIGNwX3ByaW50 X3ZhbHVlX2ZpZWxkcyAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBl ICpyZWFsX3R5cGUsCiAJCSAgICAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBp KSwgCiAJCSAgICAgdW5wYWNrX2ZpZWxkX2FzX2xvbmcgKHR5cGUsIHZhbGFk ZHIgKyBvZmZzZXQsIGkpKTsKIAotCQkgIGNvbW1vbl92YWxfcHJpbnQgKHYs IHN0cmVhbSwgZm9ybWF0LCAwLCByZWN1cnNlICsgMSwgcHJldHR5LAorCQkg IGNvbW1vbl92YWxfcHJpbnQgKHYsIHN0cmVhbSwgcmVjdXJzZSArIDEsIG9w dGlvbnMsCiAJCQkJICAgIGN1cnJlbnRfbGFuZ3VhZ2UpOwogCQl9CiAJICAg IH0KQEAgLTI4NywxNSArMjg0LDE0IEBAIGNwX3ByaW50X3ZhbHVlX2ZpZWxk cyAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICpyZWFsX3R5cGUs CiAJCSAgICBmcHV0c19maWx0ZXJlZCAoIjxvcHRpbWl6ZWQgb3V0PiIsIHN0 cmVhbSk7CiAJCSAgZWxzZQogCQkgICAgY3BfcHJpbnRfc3RhdGljX2ZpZWxk IChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLCB2LAotCQkJCQkgICBzdHJl YW0sIGZvcm1hdCwgcmVjdXJzZSArIDEsCi0JCQkJCSAgIHByZXR0eSk7CisJ CQkJCSAgIHN0cmVhbSwgcmVjdXJzZSArIDEsIG9wdGlvbnMpOwogCQl9CiAJ ICAgICAgZWxzZQogCQl7CiAJCSAgdmFsX3ByaW50IChUWVBFX0ZJRUxEX1RZ UEUgKHR5cGUsIGkpLAogCQkJICAgICB2YWxhZGRyLCBvZmZzZXQgKyBUWVBF X0ZJRUxEX0JJVFBPUyAodHlwZSwgaSkgLyA4LAogCQkJICAgICBhZGRyZXNz ICsgVFlQRV9GSUVMRF9CSVRQT1MgKHR5cGUsIGkpIC8gOCwKLQkJCSAgICAg c3RyZWFtLCBmb3JtYXQsIDAsIHJlY3Vyc2UgKyAxLCBwcmV0dHksCisJCQkg ICAgIHN0cmVhbSwgcmVjdXJzZSArIDEsIG9wdGlvbnMsCiAJCQkgICAgIGN1 cnJlbnRfbGFuZ3VhZ2UpOwogCQl9CiAJICAgIH0KQEAgLTMxMCw3ICszMDYs NyBAQCBjcF9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eXBl LCBzdHJ1Y3QgdHlwZSAqcmVhbF90eXBlLAogCSAgZG9udF9wcmludF9zdGF0 bWVtX29ic3RhY2sgPSB0bXBfb2JzdGFjazsKIAl9CiAKLSAgICAgIGlmIChw cmV0dHkpCisgICAgICBpZiAob3B0aW9ucy0+cHJldHR5KQogCXsKIAkgIGZw cmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIlxuIik7CiAJICBwcmludF9zcGFj ZXNfZmlsdGVyZWQgKDIgKiByZWN1cnNlLCBzdHJlYW0pOwpAQCAtMzI2LDgg KzMyMiw5IEBAIGNwX3ByaW50X3ZhbHVlX2ZpZWxkcyAoc3RydWN0IHR5cGUg KnR5cGUsIHN0cnVjdCB0eXBlICpyZWFsX3R5cGUsCiBzdGF0aWMgdm9pZAog Y3BfcHJpbnRfdmFsdWUgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlw ZSAqcmVhbF90eXBlLAogCQljb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwgaW50 IG9mZnNldCwgQ09SRV9BRERSIGFkZHJlc3MsCi0JCXN0cnVjdCB1aV9maWxl ICpzdHJlYW0sIGludCBmb3JtYXQsIGludCByZWN1cnNlLAotCQllbnVtIHZh bF9wcmV0dHlwcmludCBwcmV0dHksIHN0cnVjdCB0eXBlICoqZG9udF9wcmlu dF92YikKKwkJc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2Us CisJCWNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25z LAorCQlzdHJ1Y3QgdHlwZSAqKmRvbnRfcHJpbnRfdmIpCiB7CiAgIHN0cnVj dCB0eXBlICoqbGFzdF9kb250X3ByaW50CiAgICAgPSAoc3RydWN0IHR5cGUg KiopIG9ic3RhY2tfbmV4dF9mcmVlICgmZG9udF9wcmludF92Yl9vYnN0YWNr KTsKQEAgLTQwMiw3ICszOTksNyBAQCBjcF9wcmludF92YWx1ZSAoc3RydWN0 IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICpyZWFsX3R5cGUsCiAJYmFzZV92 YWxhZGRyID0gdmFsYWRkcjsKIAogICAgICAgLyogbm93IGRvIHRoZSBwcmlu dGluZyAqLwotICAgICAgaWYgKHByZXR0eSkKKyAgICAgIGlmIChvcHRpb25z LT5wcmV0dHkpCiAJewogCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAi XG4iKTsKIAkgIHByaW50X3NwYWNlc19maWx0ZXJlZCAoMiAqIHJlY3Vyc2Us IHN0cmVhbSk7CkBAIC00MTksOCArNDE2LDcgQEAgY3BfcHJpbnRfdmFsdWUg KHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqcmVhbF90eXBlLAog ICAgICAgZWxzZQogCWNwX3ByaW50X3ZhbHVlX2ZpZWxkcyAoYmFzZWNsYXNz LCB0aGlzdHlwZSwgYmFzZV92YWxhZGRyLAogCQkJICAgICAgIHRoaXNvZmZz ZXQgKyBib2Zmc2V0LCBhZGRyZXNzICsgYm9mZnNldCwKLQkJCSAgICAgICBz dHJlYW0sIGZvcm1hdCwKLQkJCSAgICAgICByZWN1cnNlLCBwcmV0dHksCisJ CQkgICAgICAgc3RyZWFtLCByZWN1cnNlLCBvcHRpb25zLAogCQkJICAgICAg ICgoc3RydWN0IHR5cGUgKiopCiAJCQkJb2JzdGFja19iYXNlICgmZG9udF9w cmludF92Yl9vYnN0YWNrKSksCiAJCQkgICAgICAgMCk7CkBAIC00NTQsOSAr NDUwLDggQEAgc3RhdGljIHZvaWQKIGNwX3ByaW50X3N0YXRpY19maWVsZCAo c3RydWN0IHR5cGUgKnR5cGUsCiAJCSAgICAgICBzdHJ1Y3QgdmFsdWUgKnZh bCwKIAkJICAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCi0JCSAgICAg ICBpbnQgZm9ybWF0LAogCQkgICAgICAgaW50IHJlY3Vyc2UsCi0JCSAgICAg ICBlbnVtIHZhbF9wcmV0dHlwcmludCBwcmV0dHkpCisJCSAgICAgICBjb25z dCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKIHsKICAg aWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1NUUlVDVCkKICAg ICB7CkBAIC00ODUsMTIgKzQ4MCwxMiBAQCBjcF9wcmludF9zdGF0aWNfZmll bGQgKHN0cnVjdCB0eXBlICp0eXBlLAogICAgICAgQ0hFQ0tfVFlQRURFRiAo dHlwZSk7CiAgICAgICBjcF9wcmludF92YWx1ZV9maWVsZHMgKHR5cGUsIHR5 cGUsIHZhbHVlX2NvbnRlbnRzX2FsbCAodmFsKSwKIAkJCSAgICAgdmFsdWVf ZW1iZWRkZWRfb2Zmc2V0ICh2YWwpLCBWQUxVRV9BRERSRVNTICh2YWwpLAot CQkJICAgICBzdHJlYW0sIGZvcm1hdCwgcmVjdXJzZSwgcHJldHR5LCBOVUxM LCAxKTsKKwkJCSAgICAgc3RyZWFtLCByZWN1cnNlLCBvcHRpb25zLCBOVUxM LCAxKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIHZhbF9wcmludCAodHlw ZSwgdmFsdWVfY29udGVudHNfYWxsICh2YWwpLCAKIAkgICAgIHZhbHVlX2Vt YmVkZGVkX29mZnNldCAodmFsKSwgVkFMVUVfQUREUkVTUyAodmFsKSwKLQkg ICAgIHN0cmVhbSwgZm9ybWF0LCAwLCByZWN1cnNlLCBwcmV0dHksIGN1cnJl bnRfbGFuZ3VhZ2UpOworCSAgICAgc3RyZWFtLCByZWN1cnNlLCBvcHRpb25z LCBjdXJyZW50X2xhbmd1YWdlKTsKIH0KIAogCkBAIC01ODksMzIgKzU4NCwy OSBAQCB2b2lkCiBfaW5pdGlhbGl6ZV9jcF92YWxwcmludCAodm9pZCkKIHsK ICAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJzdGF0aWMtbWVtYmVycyIs IGNsYXNzX3N1cHBvcnQsCi0JCQkgICAmc3RhdGljX2ZpZWxkX3ByaW50LCBf KCJcCisJCQkgICAmdXNlcl9wcmludF9vcHRpb25zLnN0YXRpY19maWVsZF9w cmludCwgXygiXAogU2V0IHByaW50aW5nIG9mIEMrKyBzdGF0aWMgbWVtYmVy cy4iKSwgXygiXAogU2hvdyBwcmludGluZyBvZiBDKysgc3RhdGljIG1lbWJl cnMuIiksIE5VTEwsCiAJCQkgICBOVUxMLAogCQkJICAgc2hvd19zdGF0aWNf ZmllbGRfcHJpbnQsCiAJCQkgICAmc2V0cHJpbnRsaXN0LCAmc2hvd3ByaW50 bGlzdCk7Ci0gIC8qIFR1cm4gb24gcHJpbnRpbmcgb2Ygc3RhdGljIGZpZWxk cy4gICovCi0gIHN0YXRpY19maWVsZF9wcmludCA9IDE7CiAKLSAgYWRkX3Nl dHNob3dfYm9vbGVhbl9jbWQgKCJ2dGJsIiwgY2xhc3Nfc3VwcG9ydCwgJnZ0 YmxwcmludCwgXygiXAorICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoInZ0 YmwiLCBjbGFzc19zdXBwb3J0LAorCQkJICAgJnVzZXJfcHJpbnRfb3B0aW9u cy52dGJscHJpbnQsIF8oIlwKIFNldCBwcmludGluZyBvZiBDKysgdmlydHVh bCBmdW5jdGlvbiB0YWJsZXMuIiksIF8oIlwKIFNob3cgcHJpbnRpbmcgb2Yg QysrIHZpcnR1YWwgZnVuY3Rpb24gdGFibGVzLiIpLCBOVUxMLAogCQkJICAg TlVMTCwKIAkJCSAgIHNob3dfdnRibHByaW50LAogCQkJICAgJnNldHByaW50 bGlzdCwgJnNob3dwcmludGxpc3QpOwogCi0gIGFkZF9zZXRzaG93X2Jvb2xl YW5fY21kICgib2JqZWN0IiwgY2xhc3Nfc3VwcG9ydCwgJm9iamVjdHByaW50 LCBfKCJcCisgIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgib2JqZWN0Iiwg Y2xhc3Nfc3VwcG9ydCwKKwkJCSAgICZ1c2VyX3ByaW50X29wdGlvbnMub2Jq ZWN0cHJpbnQsIF8oIlwKIFNldCBwcmludGluZyBvZiBvYmplY3QncyBkZXJp dmVkIHR5cGUgYmFzZWQgb24gdnRhYmxlIGluZm8uIiksIF8oIlwKIFNob3cg cHJpbnRpbmcgb2Ygb2JqZWN0J3MgZGVyaXZlZCB0eXBlIGJhc2VkIG9uIHZ0 YWJsZSBpbmZvLiIpLCBOVUxMLAogCQkJICAgTlVMTCwKIAkJCSAgIHNob3df b2JqZWN0cHJpbnQsCiAJCQkgICAmc2V0cHJpbnRsaXN0LCAmc2hvd3ByaW50 bGlzdCk7CiAKLSAgLyogR2l2ZSBwZW9wbGUgdGhlIGRlZmF1bHRzIHdoaWNo IHRoZXkgYXJlIHVzZWQgdG8uICAqLwotICBvYmplY3RwcmludCA9IDA7Ci0g IHZ0YmxwcmludCA9IDA7CiAgIG9ic3RhY2tfYmVnaW4gKCZkb250X3ByaW50 X3ZiX29ic3RhY2ssIDMyICogc2l6ZW9mIChzdHJ1Y3QgdHlwZSAqKSk7CiAg IG9ic3RhY2tfc3BlY2lmeV9hbGxvY2F0aW9uICgmZG9udF9wcmludF9zdGF0 bWVtX29ic3RhY2ssCiAJCQkgICAgICAzMiAqIHNpemVvZiAoQ09SRV9BRERS KSwgc2l6ZW9mIChDT1JFX0FERFIpLApkaWZmIC0tZ2l0IGEvZ2RiL2V2YWwu YyBiL2dkYi9ldmFsLmMKaW5kZXggY2YzZTg3Ni4uYmMwNzY1OCAxMDA2NDQK LS0tIGEvZ2RiL2V2YWwuYworKysgYi9nZGIvZXZhbC5jCkBAIC0zOSwxNiAr MzksMTMgQEAKICNpbmNsdWRlICJleGNlcHRpb25zLmgiCiAjaW5jbHVkZSAi cmVnY2FjaGUuaCIKICNpbmNsdWRlICJ1c2VyLXJlZ3MuaCIKKyNpbmNsdWRl ICJ2YWxwcmludC5oIgogCiAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgogCiAv KiBUaGlzIGlzIGRlZmluZWQgaW4gdmFsb3BzLmMgKi8KIGV4dGVybiBpbnQg b3ZlcmxvYWRfcmVzb2x1dGlvbjsKIAotLyogSllHOiBsb29rdXAgcnR0aSB0 eXBlIG9mIFNUUlVDVE9QX1BUUiB3aGVuIHRoaXMgaXMgc2V0IHRvIGNvbnRp bnVlCi0gICBvbiB3aXRoIHN1Y2Nlc3NmdWwgbG9va3VwIGZvciBtZW1iZXIv bWV0aG9kIG9mIHRoZSBydHRpIHR5cGUuICovCi1leHRlcm4gaW50IG9iamVj dHByaW50OwotCiAvKiBQcm90b3R5cGVzIGZvciBsb2NhbCBmdW5jdGlvbnMu ICovCiAKIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKmV2YWx1YXRlX3N1YmV4cF9m b3Jfc2l6ZW9mIChzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBpbnQgKik7CkBAIC0x NjI5LDcgKzE2MjYsNyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0 cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAgICAgICAgc3RydWN0IHR5cGUg KnJlYWxfdHlwZTsKICAgICAgICAgaW50IGZ1bGwsIHRvcCwgdXNpbmdfZW5j OwogICAgICAgICAKLSAgICAgICAgaWYgKG9iamVjdHByaW50ICYmIFRZUEVf VEFSR0VUX1RZUEUodHlwZSkgJiYKKyAgICAgICAgaWYgKHVzZXJfcHJpbnRf b3B0aW9ucy5vYmplY3RwcmludCAmJiBUWVBFX1RBUkdFVF9UWVBFKHR5cGUp ICYmCiAgICAgICAgICAgICAoVFlQRV9DT0RFIChUWVBFX1RBUkdFVF9UWVBF ICh0eXBlKSkgPT0gVFlQRV9DT0RFX0NMQVNTKSkKICAgICAgICAgICB7CiAg ICAgICAgICAgICByZWFsX3R5cGUgPSB2YWx1ZV9ydHRpX3RhcmdldF90eXBl IChhcmcxLCAmZnVsbCwgJnRvcCwgJnVzaW5nX2VuYyk7CmRpZmYgLS1naXQg YS9nZGIvZXhwcHJpbnQuYyBiL2dkYi9leHBwcmludC5jCmluZGV4IDA3OWYy YTkuLmNlNjVhODEgMTAwNjQ0Ci0tLSBhL2dkYi9leHBwcmludC5jCisrKyBi L2dkYi9leHBwcmludC5jCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi YmxvY2suaCIKICNpbmNsdWRlICJvYmpmaWxlcy5oIgogI2luY2x1ZGUgImdk Yl9hc3NlcnQuaCIKKyNpbmNsdWRlICJ2YWxwcmludC5oIgogCiAjaWZkZWYg SEFWRV9DVFlQRV9ICiAjaW5jbHVkZSA8Y3R5cGUuaD4KQEAgLTkyLDE3ICs5 MywyNSBAQCBwcmludF9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNz aW9uICpleHAsIGludCAqcG9zLAogICAgICAgcmV0dXJuOwogCiAgICAgY2Fz ZSBPUF9MT05HOgotICAgICAgKCpwb3MpICs9IDM7Ci0gICAgICB2YWx1ZV9w cmludCAodmFsdWVfZnJvbV9sb25nZXN0IChleHAtPmVsdHNbcGMgKyAxXS50 eXBlLAotCQkJCSAgICAgICBleHAtPmVsdHNbcGMgKyAyXS5sb25nY29uc3Qp LAotCQkgICBzdHJlYW0sIDAsIFZhbF9ub19wcmV0dHlwcmludCk7CisgICAg ICB7CisJc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsKKwlnZXRf cmF3X3ByaW50X29wdGlvbnMgKCZvcHRzKTsKKwkoKnBvcykgKz0gMzsKKwl2 YWx1ZV9wcmludCAodmFsdWVfZnJvbV9sb25nZXN0IChleHAtPmVsdHNbcGMg KyAxXS50eXBlLAorCQkJCQkgZXhwLT5lbHRzW3BjICsgMl0ubG9uZ2NvbnN0 KSwKKwkJICAgICBzdHJlYW0sICZvcHRzKTsKKyAgICAgIH0KICAgICAgIHJl dHVybjsKIAogICAgIGNhc2UgT1BfRE9VQkxFOgotICAgICAgKCpwb3MpICs9 IDM7Ci0gICAgICB2YWx1ZV9wcmludCAodmFsdWVfZnJvbV9kb3VibGUgKGV4 cC0+ZWx0c1twYyArIDFdLnR5cGUsCi0JCQkJICAgICAgZXhwLT5lbHRzW3Bj ICsgMl0uZG91YmxlY29uc3QpLAotCQkgICBzdHJlYW0sIDAsIFZhbF9ub19w cmV0dHlwcmludCk7CisgICAgICB7CisJc3RydWN0IHZhbHVlX3ByaW50X29w dGlvbnMgb3B0czsKKwlnZXRfcmF3X3ByaW50X29wdGlvbnMgKCZvcHRzKTsK KwkoKnBvcykgKz0gMzsKKwl2YWx1ZV9wcmludCAodmFsdWVfZnJvbV9kb3Vi bGUgKGV4cC0+ZWx0c1twYyArIDFdLnR5cGUsCisJCQkJCWV4cC0+ZWx0c1tw YyArIDJdLmRvdWJsZWNvbnN0KSwKKwkJICAgICBzdHJlYW0sICZvcHRzKTsK KyAgICAgIH0KICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgT1BfVkFSX1ZB TFVFOgpAQCAtMTc0LDcgKzE4Myw4IEBAIHByaW50X3N1YmV4cF9zdGFuZGFy ZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsCiAgICAgICAv KiBMQV9QUklOVF9TVFJJTkcgd2lsbCBwcmludCB1c2luZyB0aGUgY3VycmVu dCByZXBlYXQgY291bnQgdGhyZXNob2xkLgogICAgICAgICAgSWYgbmVjZXNz YXJ5LCB3ZSBjYW4gdGVtcG9yYXJpbHkgc2V0IGl0IHRvIHplcm8sIG9yIHBh c3MgaXQgYXMgYW4KICAgICAgICAgIGFkZGl0aW9uYWwgcGFyYW1ldGVyIHRv IExBX1BSSU5UX1NUUklORy4gIC1mbmYgKi8KLSAgICAgIExBX1BSSU5UX1NU UklORyAoc3RyZWFtLCAmZXhwLT5lbHRzW3BjICsgMl0uc3RyaW5nLCBuYXJn cywgMSwgMCk7CisgICAgICBMQV9QUklOVF9TVFJJTkcgKHN0cmVhbSwgJmV4 cC0+ZWx0c1twYyArIDJdLnN0cmluZywgbmFyZ3MsIDEsIDAsCisJCSAgICAg ICAmdXNlcl9wcmludF9vcHRpb25zKTsKICAgICAgIHJldHVybjsKIAogICAg IGNhc2UgT1BfQklUU1RSSU5HOgpAQCAtMTg4LDcgKzE5OCw4IEBAIHByaW50 X3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50 ICpwb3MsCiAgICAgICBuYXJncyA9IGxvbmdlc3RfdG9faW50IChleHAtPmVs dHNbcGMgKyAxXS5sb25nY29uc3QpOwogICAgICAgKCpwb3MpICs9IDMgKyBC WVRFU19UT19FWFBfRUxFTSAobmFyZ3MgKyAxKTsKICAgICAgIGZwdXRzX2Zp bHRlcmVkICgiQFwiIiwgc3RyZWFtKTsKLSAgICAgIExBX1BSSU5UX1NUUklO RyAoc3RyZWFtLCAmZXhwLT5lbHRzW3BjICsgMl0uc3RyaW5nLCBuYXJncywg MSwgMCk7CisgICAgICBMQV9QUklOVF9TVFJJTkcgKHN0cmVhbSwgJmV4cC0+ ZWx0c1twYyArIDJdLnN0cmluZywgbmFyZ3MsIDEsIDAsCisJCSAgICAgICAm dXNlcl9wcmludF9vcHRpb25zKTsKICAgICAgIGZwdXRzX2ZpbHRlcmVkICgi XCIiLCBzdHJlYW0pOwogICAgICAgcmV0dXJuOwogCkBAIC0yNzAsNyArMjgx LDggQEAgcHJpbnRfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lv biAqZXhwLCBpbnQgKnBvcywKIAl9CiAgICAgICBpZiAodGVtID4gMCkKIAl7 Ci0JICBMQV9QUklOVF9TVFJJTkcgKHN0cmVhbSwgdGVtcHN0ciwgbmFyZ3Mg LSAxLCAxLCAwKTsKKwkgIExBX1BSSU5UX1NUUklORyAoc3RyZWFtLCB0ZW1w c3RyLCBuYXJncyAtIDEsIDEsIDAsCisJCQkgICAmdXNlcl9wcmludF9vcHRp b25zKTsKIAkgICgqcG9zKSA9IHBjOwogCX0KICAgICAgIGVsc2UKQEAgLTM5 NCw2ICs0MDYsOCBAQCBwcmludF9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCBl eHByZXNzaW9uICpleHAsIGludCAqcG9zLAogICAgICAgaWYgKFRZUEVfQ09E RSAoZXhwLT5lbHRzW3BjICsgMV0udHlwZSkgPT0gVFlQRV9DT0RFX0ZVTkMg JiYKIAkgIGV4cC0+ZWx0c1twYyArIDNdLm9wY29kZSA9PSBPUF9MT05HKQog CXsKKwkgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7CisKIAkg IC8qIFdlIGhhdmUgYSBtaW5pbWFsIHN5bWJvbCBmbiwgcHJvYmFibHkuICBJ dCdzIGVuY29kZWQKIAkgICAgIGFzIGEgVU5PUF9NRU1WQUwgKGZ1bmN0aW9u LXR5cGUpIG9mIGFuIE9QX0xPTkcgKGludCwgYWRkcmVzcykuCiAJICAgICBT d2FsbG93IHRoZSBPUF9MT05HIChpbmNsdWRpbmcgYm90aCBpdHMgb3Bjb2Rl cyk7IGlnbm9yZQpAQCAtNDAxLDcgKzQxNSw4IEBAIHByaW50X3N1YmV4cF9z dGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsCiAJ ICAoKnBvcykgKz0gNDsKIAkgIHZhbCA9IHZhbHVlX2F0X2xhenkgKGV4cC0+ ZWx0c1twYyArIDFdLnR5cGUsCiAJCQkgICAgICAgKENPUkVfQUREUikgZXhw LT5lbHRzW3BjICsgNV0ubG9uZ2NvbnN0KTsKLQkgIHZhbHVlX3ByaW50ICh2 YWwsIHN0cmVhbSwgMCwgVmFsX25vX3ByZXR0eXByaW50KTsKKwkgIGdldF9y YXdfcHJpbnRfb3B0aW9ucyAoJm9wdHMpOworCSAgdmFsdWVfcHJpbnQgKHZh bCwgc3RyZWFtLCAmb3B0cyk7CiAJfQogICAgICAgZWxzZQogCXsKZGlmZiAt LWdpdCBhL2dkYi9mLWxhbmcuYyBiL2dkYi9mLWxhbmcuYwppbmRleCA3MzZk NmM2Li40ZDRkNGQ3IDEwMDY0NAotLS0gYS9nZGIvZi1sYW5nLmMKKysrIGIv Z2RiL2YtbGFuZy5jCkBAIC0xNDIsNyArMTQyLDggQEAgZl9wcmludGNoYXIg KGludCBjLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQogCiBzdGF0aWMgdm9p ZAogZl9wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgY29uc3Qg Z2RiX2J5dGUgKnN0cmluZywKLQkgICAgdW5zaWduZWQgaW50IGxlbmd0aCwg aW50IHdpZHRoLCBpbnQgZm9yY2VfZWxsaXBzZXMpCisJICAgIHVuc2lnbmVk IGludCBsZW5ndGgsIGludCB3aWR0aCwgaW50IGZvcmNlX2VsbGlwc2VzLAor CSAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9u cykKIHsKICAgdW5zaWduZWQgaW50IGk7CiAgIHVuc2lnbmVkIGludCB0aGlu Z3NfcHJpbnRlZCA9IDA7CkBAIC0xNTUsNyArMTU2LDcgQEAgZl9wcmludHN0 ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgY29uc3QgZ2RiX2J5dGUgKnN0 cmluZywKICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgZm9yIChpID0gMDsg aSA8IGxlbmd0aCAmJiB0aGluZ3NfcHJpbnRlZCA8IHByaW50X21heDsgKytp KQorICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoICYmIHRoaW5nc19wcmludGVk IDwgb3B0aW9ucy0+cHJpbnRfbWF4OyArK2kpCiAgICAgewogICAgICAgLyog UG9zaXRpb24gb2YgdGhlIGNoYXJhY3RlciB3ZSBhcmUgZXhhbWluaW5nCiAg ICAgICAgICB0byBzZWUgd2hldGhlciBpdCBpcyByZXBlYXRlZC4gICovCkBA IC0xNzksMTEgKzE4MCwxMSBAQCBmX3ByaW50c3RyIChzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLCBjb25zdCBnZGJfYnl0ZSAqc3RyaW5nLAogCSAgKytyZXBz OwogCX0KIAotICAgICAgaWYgKHJlcHMgPiByZXBlYXRfY291bnRfdGhyZXNo b2xkKQorICAgICAgaWYgKHJlcHMgPiBvcHRpb25zLT5yZXBlYXRfY291bnRf dGhyZXNob2xkKQogCXsKIAkgIGlmIChpbl9xdW90ZXMpCiAJICAgIHsKLQkg ICAgICBpZiAoaW5zcGVjdF9pdCkKKwkgICAgICBpZiAob3B0aW9ucy0+aW5z cGVjdF9pdCkKIAkJZnB1dHNfZmlsdGVyZWQgKCJcXCcsICIsIHN0cmVhbSk7 CiAJICAgICAgZWxzZQogCQlmcHV0c19maWx0ZXJlZCAoIicsICIsIHN0cmVh bSk7CkBAIC0xOTIsMTQgKzE5MywxNCBAQCBmX3ByaW50c3RyIChzdHJ1Y3Qg dWlfZmlsZSAqc3RyZWFtLCBjb25zdCBnZGJfYnl0ZSAqc3RyaW5nLAogCSAg Zl9wcmludGNoYXIgKHN0cmluZ1tpXSwgc3RyZWFtKTsKIAkgIGZwcmludGZf ZmlsdGVyZWQgKHN0cmVhbSwgIiA8cmVwZWF0cyAldSB0aW1lcz4iLCByZXBz KTsKIAkgIGkgPSByZXAxIC0gMTsKLQkgIHRoaW5nc19wcmludGVkICs9IHJl cGVhdF9jb3VudF90aHJlc2hvbGQ7CisJICB0aGluZ3NfcHJpbnRlZCArPSBv cHRpb25zLT5yZXBlYXRfY291bnRfdGhyZXNob2xkOwogCSAgbmVlZF9jb21t YSA9IDE7CiAJfQogICAgICAgZWxzZQogCXsKIAkgIGlmICghaW5fcXVvdGVz KQogCSAgICB7Ci0JICAgICAgaWYgKGluc3BlY3RfaXQpCisJICAgICAgaWYg KG9wdGlvbnMtPmluc3BlY3RfaXQpCiAJCWZwdXRzX2ZpbHRlcmVkICgiXFwn Iiwgc3RyZWFtKTsKIAkgICAgICBlbHNlCiAJCWZwdXRzX2ZpbHRlcmVkICgi JyIsIHN0cmVhbSk7CkBAIC0yMTMsNyArMjE0LDcgQEAgZl9wcmludHN0ciAo c3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgY29uc3QgZ2RiX2J5dGUgKnN0cmlu ZywKICAgLyogVGVybWluYXRlIHRoZSBxdW90ZXMgaWYgbmVjZXNzYXJ5LiAg Ki8KICAgaWYgKGluX3F1b3RlcykKICAgICB7Ci0gICAgICBpZiAoaW5zcGVj dF9pdCkKKyAgICAgIGlmIChvcHRpb25zLT5pbnNwZWN0X2l0KQogCWZwdXRz X2ZpbHRlcmVkICgiXFwnIiwgc3RyZWFtKTsKICAgICAgIGVsc2UKIAlmcHV0 c19maWx0ZXJlZCAoIiciLCBzdHJlYW0pOwpAQCAtMzA1LDggKzMwNiw4IEBA IGZfbGFuZ3VhZ2VfYXJjaF9pbmZvIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwKIAogLyogVGhpcyBpcyBkZWNsYXJlZCBpbiBjLWxhbmcuaCBidXQgaXQg aXMgc2lsbHkgdG8gaW1wb3J0IHRoYXQgZmlsZSBmb3Igd2hhdAogICAgaXMg YWxyZWFkeSBqdXN0IGEgaGFjay4gKi8KLWV4dGVybiBpbnQgY192YWx1ZV9w cmludCAoc3RydWN0IHZhbHVlICosIHN0cnVjdCB1aV9maWxlICosIGludCwK LQkJCSAgZW51bSB2YWxfcHJldHR5cHJpbnQpOworZXh0ZXJuIGludCBjX3Zh bHVlX3ByaW50IChzdHJ1Y3QgdmFsdWUgKiwgc3RydWN0IHVpX2ZpbGUgKiwK KwkJCSAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKik7CiAK IGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuIGZfbGFuZ3VhZ2VfZGVmbiA9 CiB7CmRpZmYgLS1naXQgYS9nZGIvZi1sYW5nLmggYi9nZGIvZi1sYW5nLmgK aW5kZXggMjUyZDI1ZC4uM2IzNDg3ZSAxMDA2NDQKLS0tIGEvZ2RiL2YtbGFu Zy5oCisrKyBiL2dkYi9mLWxhbmcuaApAQCAtMjksOCArMjksOCBAQCBleHRl cm4gdm9pZCBmX3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlICosIGNoYXIgKiwg c3RydWN0IHVpX2ZpbGUgKiwgaW50LAogCQkJICBpbnQpOwogCiBleHRlcm4g aW50IGZfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqLCBjb25zdCBnZGJfYnl0 ZSAqLCBpbnQsIENPUkVfQUREUiwKLQkJCXN0cnVjdCB1aV9maWxlICosIGlu dCwgaW50LCBpbnQsCi0JCQllbnVtIHZhbF9wcmV0dHlwcmludCk7CisJCQlz dHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCisJCQljb25zdCBzdHJ1Y3QgdmFsdWVf cHJpbnRfb3B0aW9ucyAqKTsKIAogLyogTGFuZ3VhZ2Utc3BlY2lmaWMgZGF0 YSBzdHJ1Y3R1cmVzICovCiAKZGlmZiAtLWdpdCBhL2dkYi9mLXZhbHByaW50 LmMgYi9nZGIvZi12YWxwcmludC5jCmluZGV4IDY3MmU5NWMuLjNmYWUwYTcg MTAwNjQ0Ci0tLSBhL2dkYi9mLXZhbHByaW50LmMKKysrIGIvZ2RiL2YtdmFs cHJpbnQuYwpAQCAtMTY0LDQyICsxNjQsNDIgQEAgZjc3X2NyZWF0ZV9hcnJh eXByaW50X29mZnNldF90YmwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3Qg dWlfZmlsZSAqc3RyZWFtKQogc3RhdGljIHZvaWQKIGY3N19wcmludF9hcnJh eV8xIChpbnQgbnNzLCBpbnQgbmRpbWVuc2lvbnMsIHN0cnVjdCB0eXBlICp0 eXBlLAogCQkgICBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwgQ09SRV9BRERS IGFkZHJlc3MsCi0JCSAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCBm b3JtYXQsCi0JCSAgIGludCBkZXJlZl9yZWYsIGludCByZWN1cnNlLCBlbnVt IHZhbF9wcmV0dHlwcmludCBwcmV0dHksCisJCSAgIHN0cnVjdCB1aV9maWxl ICpzdHJlYW0sIGludCByZWN1cnNlLAorCQkgICBjb25zdCBzdHJ1Y3QgdmFs dWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucywKIAkJICAgaW50ICplbHRzKQog ewogICBpbnQgaTsKIAogICBpZiAobnNzICE9IG5kaW1lbnNpb25zKQogICAg IHsKLSAgICAgIGZvciAoaSA9IDA7IChpIDwgRjc3X0RJTV9TSVpFIChuc3Mp ICYmICgqZWx0cykgPCBwcmludF9tYXgpOyBpKyspCisgICAgICBmb3IgKGkg PSAwOyAoaSA8IEY3N19ESU1fU0laRSAobnNzKSAmJiAoKmVsdHMpIDwgb3B0 aW9ucy0+cHJpbnRfbWF4KTsgaSsrKQogCXsKIAkgIGZwcmludGZfZmlsdGVy ZWQgKHN0cmVhbSwgIiggIik7CiAJICBmNzdfcHJpbnRfYXJyYXlfMSAobnNz ICsgMSwgbmRpbWVuc2lvbnMsIFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLAog CQkJICAgICB2YWxhZGRyICsgaSAqIEY3N19ESU1fT0ZGU0VUIChuc3MpLAog CQkJICAgICBhZGRyZXNzICsgaSAqIEY3N19ESU1fT0ZGU0VUIChuc3MpLAot CQkJICAgICBzdHJlYW0sIGZvcm1hdCwgZGVyZWZfcmVmLCByZWN1cnNlLCBw cmV0dHksIGVsdHMpOworCQkJICAgICBzdHJlYW0sIHJlY3Vyc2UsIG9wdGlv bnMsIGVsdHMpOwogCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSAi KTsKIAl9Ci0gICAgICBpZiAoKmVsdHMgPj0gcHJpbnRfbWF4ICYmIGkgPCBG NzdfRElNX1NJWkUgKG5zcykpIAorICAgICAgaWYgKCplbHRzID49IG9wdGlv bnMtPnByaW50X21heCAmJiBpIDwgRjc3X0RJTV9TSVpFIChuc3MpKSAKIAlm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4iKTsKICAgICB9CiAgIGVs c2UKICAgICB7Ci0gICAgICBmb3IgKGkgPSAwOyBpIDwgRjc3X0RJTV9TSVpF IChuc3MpICYmICgqZWx0cykgPCBwcmludF9tYXg7IAorICAgICAgZm9yIChp ID0gMDsgaSA8IEY3N19ESU1fU0laRSAobnNzKSAmJiAoKmVsdHMpIDwgb3B0 aW9ucy0+cHJpbnRfbWF4OwogCSAgIGkrKywgKCplbHRzKSsrKQogCXsKIAkg IHZhbF9wcmludCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCiAJCSAgICAg dmFsYWRkciArIGkgKiBGNzdfRElNX09GRlNFVCAobmRpbWVuc2lvbnMpLAog CQkgICAgIDAsCiAJCSAgICAgYWRkcmVzcyArIGkgKiBGNzdfRElNX09GRlNF VCAobmRpbWVuc2lvbnMpLAotCQkgICAgIHN0cmVhbSwgZm9ybWF0LCBkZXJl Zl9yZWYsIHJlY3Vyc2UsIHByZXR0eSwKLQkJICAgICBjdXJyZW50X2xhbmd1 YWdlKTsKKwkJICAgICBzdHJlYW0sIHJlY3Vyc2UsIG9wdGlvbnMsIGN1cnJl bnRfbGFuZ3VhZ2UpOwogCiAJICBpZiAoaSAhPSAoRjc3X0RJTV9TSVpFIChu c3MpIC0gMSkpCiAJICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiwg Iik7CiAKLQkgIGlmICgoKmVsdHMgPT0gcHJpbnRfbWF4IC0gMSkgJiYgKGkg IT0gKEY3N19ESU1fU0laRSAobnNzKSAtIDEpKSkKKwkgIGlmICgoKmVsdHMg PT0gb3B0aW9ucy0+cHJpbnRfbWF4IC0gMSkKKwkgICAgICAmJiAoaSAhPSAo Rjc3X0RJTV9TSVpFIChuc3MpIC0gMSkpKQogCSAgICBmcHJpbnRmX2ZpbHRl cmVkIChzdHJlYW0sICIuLi4iKTsKIAl9CiAgICAgfQpAQCAtMjExLDggKzIx MSw3IEBAIGY3N19wcmludF9hcnJheV8xIChpbnQgbnNzLCBpbnQgbmRpbWVu c2lvbnMsIHN0cnVjdCB0eXBlICp0eXBlLAogc3RhdGljIHZvaWQKIGY3N19w cmludF9hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRl ICp2YWxhZGRyLAogCQkgQ09SRV9BRERSIGFkZHJlc3MsIHN0cnVjdCB1aV9m aWxlICpzdHJlYW0sCi0JCSBpbnQgZm9ybWF0LCBpbnQgZGVyZWZfcmVmLCBp bnQgcmVjdXJzZSwKLQkJIGVudW0gdmFsX3ByZXR0eXByaW50IHByZXR0eSkK KwkJIGludCByZWN1cnNlLCBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0 aW9ucyAqb3B0aW9ucykKIHsKICAgaW50IG5kaW1lbnNpb25zOwogICBpbnQg ZWx0cyA9IDA7CkBAIC0yMjksOCArMjI4LDggQEAgZjc3X3ByaW50X2FycmF5 IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIs CiAKICAgZjc3X2NyZWF0ZV9hcnJheXByaW50X29mZnNldF90YmwgKHR5cGUs IHN0cmVhbSk7CiAKLSAgZjc3X3ByaW50X2FycmF5XzEgKDEsIG5kaW1lbnNp b25zLCB0eXBlLCB2YWxhZGRyLCBhZGRyZXNzLCBzdHJlYW0sIGZvcm1hdCwK LQkJICAgICBkZXJlZl9yZWYsIHJlY3Vyc2UsIHByZXR0eSwgJmVsdHMpOwor ICBmNzdfcHJpbnRfYXJyYXlfMSAoMSwgbmRpbWVuc2lvbnMsIHR5cGUsIHZh bGFkZHIsIGFkZHJlc3MsIHN0cmVhbSwKKwkJICAgICByZWN1cnNlLCBvcHRp b25zLCAmZWx0cyk7CiB9CiAMCiAKQEAgLTI0OSw4ICsyNDgsOCBAQCBmNzdf cHJpbnRfYXJyYXkgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0 ZSAqdmFsYWRkciwKIAogaW50CiBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUg KnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRf b2Zmc2V0LAotCSAgICAgQ09SRV9BRERSIGFkZHJlc3MsIHN0cnVjdCB1aV9m aWxlICpzdHJlYW0sIGludCBmb3JtYXQsCi0JICAgICBpbnQgZGVyZWZfcmVm LCBpbnQgcmVjdXJzZSwgZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5KQor CSAgICAgQ09SRV9BRERSIGFkZHJlc3MsIHN0cnVjdCB1aV9maWxlICpzdHJl YW0sIGludCByZWN1cnNlLAorCSAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3By aW50X29wdGlvbnMgKm9wdGlvbnMpCiB7CiAgIHVuc2lnbmVkIGludCBpID0g MDsJLyogTnVtYmVyIG9mIGNoYXJhY3RlcnMgcHJpbnRlZCAqLwogICBzdHJ1 Y3QgdHlwZSAqZWx0dHlwZTsKQEAgLTI2MywyMCArMjYyLDIwIEBAIGZfdmFs X3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZh bGFkZHIsIGludCBlbWJlZGRlZF9vZmZzZXQsCiAgICAgewogICAgIGNhc2Ug VFlQRV9DT0RFX1NUUklORzoKICAgICAgIGY3N19nZXRfZHluYW1pY19sZW5n dGhfb2ZfYWdncmVnYXRlICh0eXBlKTsKLSAgICAgIExBX1BSSU5UX1NUUklO RyAoc3RyZWFtLCB2YWxhZGRyLCBUWVBFX0xFTkdUSCAodHlwZSksIDEsIDAp OworICAgICAgTEFfUFJJTlRfU1RSSU5HIChzdHJlYW0sIHZhbGFkZHIsIFRZ UEVfTEVOR1RIICh0eXBlKSwgMSwgMCwgb3B0aW9ucyk7CiAgICAgICBicmVh azsKIAogICAgIGNhc2UgVFlQRV9DT0RFX0FSUkFZOgogICAgICAgZnByaW50 Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKCIpOwotICAgICAgZjc3X3ByaW50X2Fy cmF5ICh0eXBlLCB2YWxhZGRyLCBhZGRyZXNzLCBzdHJlYW0sIGZvcm1hdCwK LQkJICAgICAgIGRlcmVmX3JlZiwgcmVjdXJzZSwgcHJldHR5KTsKKyAgICAg IGY3N19wcmludF9hcnJheSAodHlwZSwgdmFsYWRkciwgYWRkcmVzcywgc3Ry ZWFtLCByZWN1cnNlLCBvcHRpb25zKTsKICAgICAgIGZwcmludGZfZmlsdGVy ZWQgKHN0cmVhbSwgIikiKTsKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBU WVBFX0NPREVfUFRSOgotICAgICAgaWYgKGZvcm1hdCAmJiBmb3JtYXQgIT0g J3MnKQorICAgICAgaWYgKG9wdGlvbnMtPm91dHB1dF9mb3JtYXQgJiYgb3B0 aW9ucy0+b3V0cHV0X2Zvcm1hdCAhPSAncycpCiAJewotCSAgcHJpbnRfc2Nh bGFyX2Zvcm1hdHRlZCAodmFsYWRkciwgdHlwZSwgZm9ybWF0LCAwLCBzdHJl YW0pOworCSAgcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAodmFsYWRkciwgdHlw ZSwgb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCwKKwkJCQkgIDAsIHN0cmVhbSk7 CiAJICBicmVhazsKIAl9CiAgICAgICBlbHNlCkBAIC0yOTIsMTYgKzI5MSwx NyBAQCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdk Yl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAogCSAgICAg IHJldHVybiAwOwogCSAgICB9CiAKLQkgIGlmIChhZGRyZXNzcHJpbnQgJiYg Zm9ybWF0ICE9ICdzJykKKwkgIGlmIChvcHRpb25zLT5hZGRyZXNzcHJpbnQg JiYgb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCAhPSAncycpCiAJICAgIGZwdXRz X2ZpbHRlcmVkIChwYWRkcmVzcyAoYWRkciksIHN0cmVhbSk7CiAKIAkgIC8q IEZvciBhIHBvaW50ZXIgdG8gY2hhciBvciB1bnNpZ25lZCBjaGFyLCBhbHNv IHByaW50IHRoZSBzdHJpbmcKIAkgICAgIHBvaW50ZWQgdG8sIHVubGVzcyBw b2ludGVyIGlzIG51bGwuICAqLwogCSAgaWYgKFRZUEVfTEVOR1RIIChlbHR0 eXBlKSA9PSAxCiAJICAgICAgJiYgVFlQRV9DT0RFIChlbHR0eXBlKSA9PSBU WVBFX0NPREVfSU5UCi0JICAgICAgJiYgKGZvcm1hdCA9PSAwIHx8IGZvcm1h dCA9PSAncycpCisJICAgICAgJiYgKG9wdGlvbnMtPm91dHB1dF9mb3JtYXQg PT0gMCB8fCBvcHRpb25zLT5vdXRwdXRfZm9ybWF0ID09ICdzJykKIAkgICAg ICAmJiBhZGRyICE9IDApCi0JICAgIGkgPSB2YWxfcHJpbnRfc3RyaW5nIChh ZGRyLCAtMSwgVFlQRV9MRU5HVEggKGVsdHR5cGUpLCBzdHJlYW0pOworCSAg ICBpID0gdmFsX3ByaW50X3N0cmluZyAoYWRkciwgLTEsIFRZUEVfTEVOR1RI IChlbHR0eXBlKSwgc3RyZWFtLAorCQkJCSAgb3B0aW9ucyk7CiAKIAkgIC8q IFJldHVybiBudW1iZXIgb2YgY2hhcmFjdGVycyBwcmludGVkLCBpbmNsdWRp bmcgdGhlIHRlcm1pbmF0aW5nCiAJICAgICAnXDAnIGlmIHdlIHJlYWNoZWQg dGhlIGVuZC4gIHZhbF9wcmludF9zdHJpbmcgdGFrZXMgY2FyZSBpbmNsdWRp bmcKQEAgLTMxMiwxNyArMzEyLDE3IEBAIGZfdmFsX3ByaW50IChzdHJ1Y3Qg dHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBlbWJl ZGRlZF9vZmZzZXQsCiAKICAgICBjYXNlIFRZUEVfQ09ERV9SRUY6CiAgICAg ICBlbHR0eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAo dHlwZSkpOwotICAgICAgaWYgKGFkZHJlc3NwcmludCkKKyAgICAgIGlmIChv cHRpb25zLT5hZGRyZXNzcHJpbnQpCiAJewogCSAgQ09SRV9BRERSIGFkZHIK IAkgICAgPSBleHRyYWN0X3R5cGVkX2FkZHJlc3MgKHZhbGFkZHIgKyBlbWJl ZGRlZF9vZmZzZXQsIHR5cGUpOwogCSAgZnByaW50Zl9maWx0ZXJlZCAoc3Ry ZWFtLCAiQCIpOwogCSAgZnB1dHNfZmlsdGVyZWQgKHBhZGRyZXNzIChhZGRy KSwgc3RyZWFtKTsKLQkgIGlmIChkZXJlZl9yZWYpCisJICBpZiAob3B0aW9u cy0+ZGVyZWZfcmVmKQogCSAgICBmcHV0c19maWx0ZXJlZCAoIjogIiwgc3Ry ZWFtKTsKIAl9CiAgICAgICAvKiBEZS1yZWZlcmVuY2UgdGhlIHJlZmVyZW5j ZS4gICovCi0gICAgICBpZiAoZGVyZWZfcmVmKQorICAgICAgaWYgKG9wdGlv bnMtPmRlcmVmX3JlZikKIAl7CiAJICBpZiAoVFlQRV9DT0RFIChlbHR0eXBl KSAhPSBUWVBFX0NPREVfVU5ERUYpCiAJICAgIHsKQEAgLTMzMCw4ICszMzAs OCBAQCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdk Yl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAogCSAgICAg IHZhbHVlX2F0CiAJICAgICAgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLAog CSAgICAgICB1bnBhY2tfcG9pbnRlciAodHlwZSwgdmFsYWRkciArIGVtYmVk ZGVkX29mZnNldCkpOwotCSAgICAgIGNvbW1vbl92YWxfcHJpbnQgKGRlcmVm X3ZhbCwgc3RyZWFtLCBmb3JtYXQsIGRlcmVmX3JlZiwgcmVjdXJzZSwKLQkJ CQlwcmV0dHksIGN1cnJlbnRfbGFuZ3VhZ2UpOworCSAgICAgIGNvbW1vbl92 YWxfcHJpbnQgKGRlcmVmX3ZhbCwgc3RyZWFtLCByZWN1cnNlLAorCQkJCW9w dGlvbnMsIGN1cnJlbnRfbGFuZ3VhZ2UpOwogCSAgICB9CiAJICBlbHNlCiAJ ICAgIGZwdXRzX2ZpbHRlcmVkICgiPz8/Iiwgc3RyZWFtKTsKQEAgLTMzOSw5 ICszMzksMTAgQEAgZl92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBj b25zdCBnZGJfYnl0ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwK ICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUWVBFX0NPREVfRlVOQzoKLSAg ICAgIGlmIChmb3JtYXQpCisgICAgICBpZiAob3B0aW9ucy0+b3V0cHV0X2Zv cm1hdCkKIAl7Ci0JICBwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRy LCB0eXBlLCBmb3JtYXQsIDAsIHN0cmVhbSk7CisJICBwcmludF9zY2FsYXJf Zm9ybWF0dGVkICh2YWxhZGRyLCB0eXBlLCBvcHRpb25zLT5vdXRwdXRfZm9y bWF0LAorCQkJCSAgMCwgc3RyZWFtKTsKIAkgIGJyZWFrOwogCX0KICAgICAg IC8qIEZJWE1FLCB3ZSBzaG91bGQgY29uc2lkZXIsIGF0IGxlYXN0IGZvciBB TlNJIEMgbGFuZ3VhZ2UsIGVsaW1pbmF0aW5nCkBAIC0zNTQsOSArMzU1LDkg QEAgZl92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJf Ynl0ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwKICAgICAgIGJy ZWFrOwogCiAgICAgY2FzZSBUWVBFX0NPREVfSU5UOgotICAgICAgZm9ybWF0 ID0gZm9ybWF0ID8gZm9ybWF0IDogb3V0cHV0X2Zvcm1hdDsKLSAgICAgIGlm IChmb3JtYXQpCi0JcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAodmFsYWRkciwg dHlwZSwgZm9ybWF0LCAwLCBzdHJlYW0pOworICAgICAgaWYgKG9wdGlvbnMt Pm91dHB1dF9mb3JtYXQpCisJcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAodmFs YWRkciwgdHlwZSwgb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCwKKwkJCQkwLCBz dHJlYW0pOwogICAgICAgZWxzZQogCXsKIAkgIHZhbF9wcmludF90eXBlX2Nv ZGVfaW50ICh0eXBlLCB2YWxhZGRyLCBzdHJlYW0pOwpAQCAtMzc0LDE1ICsz NzUsMTcgQEAgZl92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25z dCBnZGJfYnl0ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwKICAg ICAgIGJyZWFrOwogCiAgICAgY2FzZSBUWVBFX0NPREVfRkxBR1M6Ci0gICAg ICBpZiAoZm9ybWF0KQotCSAgcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAodmFs YWRkciwgdHlwZSwgZm9ybWF0LCAwLCBzdHJlYW0pOworICAgICAgaWYgKG9w dGlvbnMtPm91dHB1dF9mb3JtYXQpCisJICBwcmludF9zY2FsYXJfZm9ybWF0 dGVkICh2YWxhZGRyLCB0eXBlLCBvcHRpb25zLT5vdXRwdXRfZm9ybWF0LAor CQkJCSAgMCwgc3RyZWFtKTsKICAgICAgIGVsc2UKIAl2YWxfcHJpbnRfdHlw ZV9jb2RlX2ZsYWdzICh0eXBlLCB2YWxhZGRyLCBzdHJlYW0pOwogICAgICAg YnJlYWs7CiAKICAgICBjYXNlIFRZUEVfQ09ERV9GTFQ6Ci0gICAgICBpZiAo Zm9ybWF0KQotCXByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIsIHR5 cGUsIGZvcm1hdCwgMCwgc3RyZWFtKTsKKyAgICAgIGlmIChvcHRpb25zLT5v dXRwdXRfZm9ybWF0KQorCXByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFk ZHIsIHR5cGUsIG9wdGlvbnMtPm91dHB1dF9mb3JtYXQsCisJCQkJMCwgc3Ry ZWFtKTsKICAgICAgIGVsc2UKIAlwcmludF9mbG9hdGluZyAodmFsYWRkciwg dHlwZSwgc3RyZWFtKTsKICAgICAgIGJyZWFrOwpAQCAtNDAxLDkgKzQwNCw5 IEBAIGZfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2Ri X2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZzZXQsCiAgICAgICBi cmVhazsKIAogICAgIGNhc2UgVFlQRV9DT0RFX0JPT0w6Ci0gICAgICBmb3Jt YXQgPSBmb3JtYXQgPyBmb3JtYXQgOiBvdXRwdXRfZm9ybWF0OwotICAgICAg aWYgKGZvcm1hdCkKLQlwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRy LCB0eXBlLCBmb3JtYXQsIDAsIHN0cmVhbSk7CisgICAgICBpZiAob3B0aW9u cy0+b3V0cHV0X2Zvcm1hdCkKKwlwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2 YWxhZGRyLCB0eXBlLCBvcHRpb25zLT5vdXRwdXRfZm9ybWF0LAorCQkJCTAs IHN0cmVhbSk7CiAgICAgICBlbHNlCiAJewogCSAgdmFsID0gZXh0cmFjdF91 bnNpZ25lZF9pbnRlZ2VyICh2YWxhZGRyLCBUWVBFX0xFTkdUSCAodHlwZSkp OwpAQCAtNDE3LDggKzQyMCw3IEBAIGZfdmFsX3ByaW50IChzdHJ1Y3QgdHlw ZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRl ZF9vZmZzZXQsCiAJICAgIHsKIAkgICAgICAvKiBCYXNoIHRoZSB0eXBlIGNv ZGUgdGVtcG9yYXJpbHkuICAqLwogCSAgICAgIFRZUEVfQ09ERSAodHlwZSkg PSBUWVBFX0NPREVfSU5UOwotCSAgICAgIGZfdmFsX3ByaW50ICh0eXBlLCB2 YWxhZGRyLCAwLCBhZGRyZXNzLCBzdHJlYW0sIGZvcm1hdCwKLQkJCSAgIGRl cmVmX3JlZiwgcmVjdXJzZSwgcHJldHR5KTsKKwkgICAgICBmX3ZhbF9wcmlu dCAodHlwZSwgdmFsYWRkciwgMCwgYWRkcmVzcywgc3RyZWFtLCByZWN1cnNl LCBvcHRpb25zKTsKIAkgICAgICAvKiBSZXN0b3JlIHRoZSB0eXBlIGNvZGUg c28gbGF0ZXIgdXNlcyB3b3JrIGFzIGludGVuZGVkLiAqLwogCSAgICAgIFRZ UEVfQ09ERSAodHlwZSkgPSBUWVBFX0NPREVfQk9PTDsKIAkgICAgfQpAQCAt NDUwLDggKzQ1Miw3IEBAIGZfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlw ZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZz ZXQsCiAgICAgICAgIHsKICAgICAgICAgICBpbnQgb2Zmc2V0ID0gVFlQRV9G SUVMRF9CSVRQT1MgKHR5cGUsIGluZGV4KSAvIDg7CiAgICAgICAgICAgZl92 YWxfcHJpbnQgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaW5kZXgpLCB2YWxh ZGRyICsgb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICBlbWJlZGRl ZF9vZmZzZXQsIGFkZHJlc3MsIHN0cmVhbSwKLSAgICAgICAgICAgICAgICAg ICAgICAgZm9ybWF0LCBkZXJlZl9yZWYsIHJlY3Vyc2UsIHByZXR0eSk7Cisg ICAgICAgICAgICAgICAgICAgICAgIGVtYmVkZGVkX29mZnNldCwgYWRkcmVz cywgc3RyZWFtLCByZWN1cnNlLCBvcHRpb25zKTsKICAgICAgICAgICBpZiAo aW5kZXggIT0gVFlQRV9ORklFTERTICh0eXBlKSAtIDEpCiAgICAgICAgICAg ICBmcHV0c19maWx0ZXJlZCAoIiwgIiwgc3RyZWFtKTsKICAgICAgICAgfQpk aWZmIC0tZ2l0IGEvZ2RiL2luZmNtZC5jIGIvZ2RiL2luZmNtZC5jCmluZGV4 IDRmNTVjMzMuLmY0NzUzMzAgMTAwNjQ0Ci0tLSBhL2dkYi9pbmZjbWQuYwor KysgYi9nZGIvaW5mY21kLmMKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRl ICJleGNlcHRpb25zLmgiCiAjaW5jbHVkZSAiY2xpL2NsaS1kZWNvZGUuaCIK ICNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKKyNpbmNsdWRlICJ2YWxwcmludC5o IgogCiAvKiBGdW5jdGlvbnMgZXhwb3J0ZWQgZm9yIGdlbmVyYWwgdXNlLCBp biBpbmZlcmlvci5oOiAqLwogCkBAIC0xMjgyLDYgKzEyODMsOCBAQCBwcmlu dF9yZXR1cm5fdmFsdWUgKHN0cnVjdCB0eXBlICpmdW5jX3R5cGUsIHN0cnVj dCB0eXBlICp2YWx1ZV90eXBlKQogCiAgIGlmICh2YWx1ZSkKICAgICB7Cisg ICAgICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOworCiAgICAg ICAvKiBQcmludCBpdC4gICovCiAgICAgICBzdGIgPSB1aV9vdXRfc3RyZWFt X25ldyAodWlvdXQpOwogICAgICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVw X3VpX291dF9zdHJlYW1fZGVsZXRlIChzdGIpOwpAQCAtMTI4OSw3ICsxMjky LDggQEAgcHJpbnRfcmV0dXJuX3ZhbHVlIChzdHJ1Y3QgdHlwZSAqZnVuY190 eXBlLCBzdHJ1Y3QgdHlwZSAqdmFsdWVfdHlwZSkKICAgICAgIHVpX291dF9m aWVsZF9mbXQgKHVpb3V0LCAiZ2RiLXJlc3VsdC12YXIiLCAiJCVkIiwKIAkJ CXJlY29yZF9sYXRlc3RfdmFsdWUgKHZhbHVlKSk7CiAgICAgICB1aV9vdXRf dGV4dCAodWlvdXQsICIgPSAiKTsKLSAgICAgIHZhbHVlX3ByaW50ICh2YWx1 ZSwgc3RiLT5zdHJlYW0sIDAsIFZhbF9ub19wcmV0dHlwcmludCk7CisgICAg ICBnZXRfcmF3X3ByaW50X29wdGlvbnMgKCZvcHRzKTsKKyAgICAgIHZhbHVl X3ByaW50ICh2YWx1ZSwgc3RiLT5zdHJlYW0sICZvcHRzKTsKICAgICAgIHVp X291dF9maWVsZF9zdHJlYW0gKHVpb3V0LCAicmV0dXJuLXZhbHVlIiwgc3Ri KTsKICAgICAgIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7CiAgICAgICBk b19jbGVhbnVwcyAob2xkX2NoYWluKTsKQEAgLTE4MDUsNyArMTgwOSw3IEBA IGRlZmF1bHRfcHJpbnRfcmVnaXN0ZXJzX2luZm8gKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLAogCSAgaW50IGo7CiAKIAkgIHZhbF9wcmludCAocmVnaXN0 ZXJfdHlwZSAoZ2RiYXJjaCwgaSksIGJ1ZmZlciwgMCwgMCwKLQkJICAgICBm aWxlLCAwLCAxLCAwLCBWYWxfcHJldHR5X2RlZmF1bHQsIGN1cnJlbnRfbGFu Z3VhZ2UpOworCQkgICAgIGZpbGUsIDAsICZ1c2VyX3ByaW50X29wdGlvbnMs IGN1cnJlbnRfbGFuZ3VhZ2UpOwogCiAJICBmcHJpbnRmX2ZpbHRlcmVkIChm aWxlLCAiXHQocmF3IDB4Iik7CiAJICBmb3IgKGogPSAwOyBqIDwgcmVnaXN0 ZXJfc2l6ZSAoZ2RiYXJjaCwgaSk7IGorKykKQEAgLTE4MjEsMTYgKzE4MjUs MjAgQEAgZGVmYXVsdF9wcmludF9yZWdpc3RlcnNfaW5mbyAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsCiAJfQogICAgICAgZWxzZQogCXsKKwkgIHN0cnVj dCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7CisKIAkgIC8qIFByaW50IHRo ZSByZWdpc3RlciBpbiBoZXguICAqLworCSAgZ2V0X2Zvcm1hdHRlZF9wcmlu dF9vcHRpb25zICgmb3B0cywgJ3gnKTsKIAkgIHZhbF9wcmludCAocmVnaXN0 ZXJfdHlwZSAoZ2RiYXJjaCwgaSksIGJ1ZmZlciwgMCwgMCwKLQkJICAgICBm aWxlLCAneCcsIDEsIDAsIFZhbF9wcmV0dHlfZGVmYXVsdCwgY3VycmVudF9s YW5ndWFnZSk7CisJCSAgICAgZmlsZSwgMCwgJm9wdHMsCisJCSAgICAgY3Vy cmVudF9sYW5ndWFnZSk7CiAgICAgICAgICAgLyogSWYgbm90IGEgdmVjdG9y IHJlZ2lzdGVyLCBwcmludCBpdCBhbHNvIGFjY29yZGluZyB0byBpdHMKICAg ICAgICAgICAgICBuYXR1cmFsIGZvcm1hdC4gICovCiAJICBpZiAoVFlQRV9W RUNUT1IgKHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIGkpKSA9PSAwKQogCSAg ICB7CiAJICAgICAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgIlx0Iik7CiAJ ICAgICAgdmFsX3ByaW50IChyZWdpc3Rlcl90eXBlIChnZGJhcmNoLCBpKSwg YnVmZmVyLCAwLCAwLAotCQkJIGZpbGUsIDAsIDEsIDAsIFZhbF9wcmV0dHlf ZGVmYXVsdCwgY3VycmVudF9sYW5ndWFnZSk7CisJCQkgZmlsZSwgMCwgJnVz ZXJfcHJpbnRfb3B0aW9ucywgY3VycmVudF9sYW5ndWFnZSk7CiAJICAgIH0K IAl9CiAKZGlmZiAtLWdpdCBhL2dkYi9qdi1sYW5nLmggYi9nZGIvanYtbGFu Zy5oCmluZGV4IDUxYmFkYTIuLjA0YmEzODMgMTAwNjQ0Ci0tLSBhL2dkYi9q di1sYW5nLmgKKysrIGIvZ2RiL2p2LWxhbmcuaApAQCAtNDEsMTEgKzQxLDEx IEBAIGV4dGVybiBzdHJ1Y3QgdHlwZSAqamF2YV9kb3VibGVfdHlwZTsKIGV4 dGVybiBzdHJ1Y3QgdHlwZSAqamF2YV92b2lkX3R5cGU7CiAKIGV4dGVybiBp bnQgamF2YV92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICosIGNvbnN0IGdkYl9i eXRlICosIGludCwgQ09SRV9BRERSLAotCQkJICAgc3RydWN0IHVpX2ZpbGUg KiwgaW50LCBpbnQsIGludCwKLQkJCSAgIGVudW0gdmFsX3ByZXR0eXByaW50 KTsKKwkJCSAgIHN0cnVjdCB1aV9maWxlICosIGludCwKKwkJCSAgIGNvbnN0 IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICopOwogCi1leHRlcm4gaW50 IGphdmFfdmFsdWVfcHJpbnQgKHN0cnVjdCB2YWx1ZSAqLCBzdHJ1Y3QgdWlf ZmlsZSAqLCBpbnQsCi0JCQkgICAgIGVudW0gdmFsX3ByZXR0eXByaW50KTsK K2V4dGVybiBpbnQgamF2YV92YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICos IHN0cnVjdCB1aV9maWxlICosCisJCQkgICAgIGNvbnN0IHN0cnVjdCB2YWx1 ZV9wcmludF9vcHRpb25zICopOwogCiBleHRlcm4gc3RydWN0IHZhbHVlICpq YXZhX2NsYXNzX2Zyb21fb2JqZWN0IChzdHJ1Y3QgdmFsdWUgKik7CiAKZGlm ZiAtLWdpdCBhL2dkYi9qdi12YWxwcmludC5jIGIvZ2RiL2p2LXZhbHByaW50 LmMKaW5kZXggOWUzNmFhNC4uOTc1MDY4YiAxMDA2NDQKLS0tIGEvZ2RiL2p2 LXZhbHByaW50LmMKKysrIGIvZ2RiL2p2LXZhbHByaW50LmMKQEAgLTM1LDgg KzM1LDggQEAKIC8qIExvY2FsIGZ1bmN0aW9ucyAqLwogCiBpbnQKLWphdmFf dmFsdWVfcHJpbnQgKHN0cnVjdCB2YWx1ZSAqdmFsLCBzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLCBpbnQgZm9ybWF0LAotCQkgIGVudW0gdmFsX3ByZXR0eXBy aW50IHByZXR0eSkKK2phdmFfdmFsdWVfcHJpbnQgKHN0cnVjdCB2YWx1ZSAq dmFsLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCAKKwkJICBjb25zdCBzdHJ1 Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKIHsKICAgc3RydWN0 IHR5cGUgKnR5cGU7CiAgIENPUkVfQUREUiBhZGRyZXNzOwpAQCAtODksNyAr ODksNyBAQCBqYXZhX3ZhbHVlX3ByaW50IChzdHJ1Y3QgdmFsdWUgKnZhbCwg c3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IGZvcm1hdCwKIAogCSAgYWRk cmVzcyArPSBKQVZBX09CSkVDVF9TSVpFICsgNDsJLyogU2tpcCBvYmplY3Qg aGVhZGVyIGFuZCBsZW5ndGguICovCiAKLQkgIHdoaWxlIChpIDwgbGVuZ3Ro ICYmIHRoaW5nc19wcmludGVkIDwgcHJpbnRfbWF4KQorCSAgd2hpbGUgKGkg PCBsZW5ndGggJiYgdGhpbmdzX3ByaW50ZWQgPCBvcHRpb25zLT5wcmludF9t YXgpCiAJICAgIHsKIAkgICAgICBnZGJfYnl0ZSAqYnVmOwogCkBAIC0xNDUs NyArMTQ1LDcgQEAgamF2YV92YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICp2 YWwsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCBmb3JtYXQsCiAJICBW QUxVRV9BRERSRVNTICh2KSA9IGFkZHJlc3MgKyBKQVZBX09CSkVDVF9TSVpF ICsgNDsKIAkgIFZBTFVFX0FERFJFU1MgKG5leHRfdikgPSBWQUxVRV9BRERS RVNTICh2KTsKIAotCSAgd2hpbGUgKGkgPCBsZW5ndGggJiYgdGhpbmdzX3By aW50ZWQgPCBwcmludF9tYXgpCisJICB3aGlsZSAoaSA8IGxlbmd0aCAmJiB0 aGluZ3NfcHJpbnRlZCA8IG9wdGlvbnMtPnByaW50X21heCkKIAkgICAgewog CSAgICAgIGZwdXRzX2ZpbHRlcmVkICgiLCAiLCBzdHJlYW0pOwogCSAgICAg IHdyYXBfaGVyZSAobl9zcGFjZXMgKDIpKTsKQEAgLTE4MCw4ICsxODAsNyBA QCBqYXZhX3ZhbHVlX3ByaW50IChzdHJ1Y3QgdmFsdWUgKnZhbCwgc3RydWN0 IHVpX2ZpbGUgKnN0cmVhbSwgaW50IGZvcm1hdCwKIAkgICAgICBlbHNlCiAJ CWZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiVkLi4lZDogIiwgaSwgaSAr IHJlcHMgLSAxKTsKIAotCSAgICAgIGNvbW1vbl92YWxfcHJpbnQgKHYsIHN0 cmVhbSwgZm9ybWF0LCAyLCAxLCBwcmV0dHksCi0JCQkJY3VycmVudF9sYW5n dWFnZSk7CisJICAgICAgY29tbW9uX3ZhbF9wcmludCAodiwgc3RyZWFtLCAx LCBvcHRpb25zLCBjdXJyZW50X2xhbmd1YWdlKTsKIAogCSAgICAgIHRoaW5n c19wcmludGVkKys7CiAJICAgICAgaSArPSByZXBzOwpAQCAtMjAzLDcgKzIw Miw3IEBAIGphdmFfdmFsdWVfcHJpbnQgKHN0cnVjdCB2YWx1ZSAqdmFsLCBz dHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgZm9ybWF0LAogICAgICAgJiYg VFlQRV9UQUdfTkFNRSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpCiAgICAg ICAmJiBzdHJjbXAgKFRZUEVfVEFHX05BTUUgKFRZUEVfVEFSR0VUX1RZUEUg KHR5cGUpKSwKIAkJICJqYXZhLmxhbmcuU3RyaW5nIikgPT0gMAotICAgICAg JiYgKGZvcm1hdCA9PSAwIHx8IGZvcm1hdCA9PSAncycpCisgICAgICAmJiAo b3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCA9PSAwIHx8IG9wdGlvbnMtPm91dHB1 dF9mb3JtYXQgPT0gJ3MnKQogICAgICAgJiYgYWRkcmVzcyAhPSAwCiAgICAg ICAmJiB2YWx1ZV9hc19hZGRyZXNzICh2YWwpICE9IDApCiAgICAgewpAQCAt MjI4LDEzICsyMjcsMTIgQEAgamF2YV92YWx1ZV9wcmludCAoc3RydWN0IHZh bHVlICp2YWwsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCBmb3JtYXQs CiAKICAgICAgIHZhbHVlX2ZyZWVfdG9fbWFyayAobWFyayk7CS8qIFJlbGVh c2UgdW5uZWNlc3NhcnkgdmFsdWVzICovCiAKLSAgICAgIHZhbF9wcmludF9z dHJpbmcgKGRhdGEgKyBib2Zmc2V0LCBjb3VudCwgMiwgc3RyZWFtKTsKKyAg ICAgIHZhbF9wcmludF9zdHJpbmcgKGRhdGEgKyBib2Zmc2V0LCBjb3VudCwg Miwgc3RyZWFtLCBvcHRpb25zKTsKIAogICAgICAgcmV0dXJuIDA7CiAgICAg fQogCi0gIHJldHVybiBjb21tb25fdmFsX3ByaW50ICh2YWwsIHN0cmVhbSwg Zm9ybWF0LCAxLCAwLCBwcmV0dHksCi0JCQkgICBjdXJyZW50X2xhbmd1YWdl KTsKKyAgcmV0dXJuIGNvbW1vbl92YWxfcHJpbnQgKHZhbCwgc3RyZWFtLCAw LCBvcHRpb25zLCBjdXJyZW50X2xhbmd1YWdlKTsKIH0KIAogLyogVFlQRSwg VkFMQUREUiwgQUREUkVTUywgU1RSRUFNLCBSRUNVUlNFLCBhbmQgUFJFVFRZ IGhhdmUgdGhlCkBAIC0yNDYsNyArMjQ0LDggQEAgamF2YV92YWx1ZV9wcmlu dCAoc3RydWN0IHZhbHVlICp2YWwsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0s IGludCBmb3JtYXQsCiBzdGF0aWMgdm9pZAogamF2YV9wcmludF92YWx1ZV9m aWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFs YWRkciwKIAkJCSBDT1JFX0FERFIgYWRkcmVzcywgc3RydWN0IHVpX2ZpbGUg KnN0cmVhbSwKLQkJCSBpbnQgZm9ybWF0LCBpbnQgcmVjdXJzZSwgZW51bSB2 YWxfcHJldHR5cHJpbnQgcHJldHR5KQorCQkJIGludCByZWN1cnNlLAorCQkJ IGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQog ewogICBpbnQgaSwgbGVuLCBuX2Jhc2VjbGFzc2VzOwogCkBAIC0yNzUsNyAr Mjc0LDcgQEAgamF2YV9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBl ICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIAogCSAgYm9mZnNl dCA9IDA7CiAKLQkgIGlmIChwcmV0dHkpCisJICBpZiAob3B0aW9ucy0+cHJl dHR5KQogCSAgICB7CiAJICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFt LCAiXG4iKTsKIAkgICAgICBwcmludF9zcGFjZXNfZmlsdGVyZWQgKDIgKiAo cmVjdXJzZSArIDEpLCBzdHJlYW0pOwpAQCAtMjg5LDcgKzI4OCw3IEBAIGph dmFfcHJpbnRfdmFsdWVfZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29u c3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAJICBiYXNlX3ZhbGFkZHIgPSB2YWxh ZGRyOwogCiAJICBqYXZhX3ByaW50X3ZhbHVlX2ZpZWxkcyAoYmFzZWNsYXNz LCBiYXNlX3ZhbGFkZHIsIGFkZHJlc3MgKyBib2Zmc2V0LAotCQkJCSAgIHN0 cmVhbSwgZm9ybWF0LCByZWN1cnNlICsgMSwgcHJldHR5KTsKKwkJCQkgICBz dHJlYW0sIHJlY3Vyc2UgKyAxLCBvcHRpb25zKTsKIAkgIGZwdXRzX2ZpbHRl cmVkICgiLCAiLCBzdHJlYW0pOwogCX0KIApAQCAtMzA3LDcgKzMwNiw3IEBA IGphdmFfcHJpbnRfdmFsdWVfZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwg Y29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAJICBpZiAoZmllbGRfaXNfc3Rh dGljICgmVFlQRV9GSUVMRCAodHlwZSwgaSkpKQogCSAgICB7CiAJICAgICAg Y2hhciAqbmFtZSA9IFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSk7Ci0JICAg ICAgaWYgKCFzdGF0aWNfZmllbGRfcHJpbnQpCisJICAgICAgaWYgKCFvcHRp b25zLT5zdGF0aWNfZmllbGRfcHJpbnQpCiAJCWNvbnRpbnVlOwogCSAgICAg IGlmIChuYW1lICE9IE5VTEwgJiYgc3RyY21wIChuYW1lLCAiY2xhc3MiKSA9 PSAwKQogCQljb250aW51ZTsKQEAgLTMxNiw3ICszMTUsNyBAQCBqYXZhX3By aW50X3ZhbHVlX2ZpZWxkcyAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdk Yl9ieXRlICp2YWxhZGRyLAogCSAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJl YW0sICIsICIpOwogCSAgZWxzZSBpZiAobl9iYXNlY2xhc3NlcyA+IDApCiAJ ICAgIHsKLQkgICAgICBpZiAocHJldHR5KQorCSAgICAgIGlmIChvcHRpb25z LT5wcmV0dHkpCiAJCXsKIAkJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0s ICJcbiIpOwogCQkgIHByaW50X3NwYWNlc19maWx0ZXJlZCAoMiArIDIgKiBy ZWN1cnNlLCBzdHJlYW0pOwpAQCAtMzI3LDcgKzMyNiw3IEBAIGphdmFfcHJp bnRfdmFsdWVfZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2Ri X2J5dGUgKnZhbGFkZHIsCiAJICAgIH0KIAkgIGZpZWxkc19zZWVuID0gMTsK IAotCSAgaWYgKHByZXR0eSkKKwkgIGlmIChvcHRpb25zLT5wcmV0dHkpCiAJ ICAgIHsKIAkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJcbiIp OwogCSAgICAgIHByaW50X3NwYWNlc19maWx0ZXJlZCAoMiArIDIgKiByZWN1 cnNlLCBzdHJlYW0pOwpAQCAtMzM2LDcgKzMzNSw3IEBAIGphdmFfcHJpbnRf dmFsdWVfZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5 dGUgKnZhbGFkZHIsCiAJICAgIHsKIAkgICAgICB3cmFwX2hlcmUgKG5fc3Bh Y2VzICgyICsgMiAqIHJlY3Vyc2UpKTsKIAkgICAgfQotCSAgaWYgKGluc3Bl Y3RfaXQpCisJICBpZiAob3B0aW9ucy0+aW5zcGVjdF9pdCkKIAkgICAgewog CSAgICAgIGlmIChUWVBFX0NPREUgKFRZUEVfRklFTERfVFlQRSAodHlwZSwg aSkpID09IFRZUEVfQ09ERV9QVFIpCiAJCWZwdXRzX2ZpbHRlcmVkICgiXCIo IHB0ciBcIiIsIHN0cmVhbSk7CkBAIC0zODMsOCArMzgyLDggQEAgamF2YV9w cmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBn ZGJfYnl0ZSAqdmFsYWRkciwKIAkJICB2ID0gdmFsdWVfZnJvbV9sb25nZXN0 IChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLAogCQkJCSAgIHVucGFja19m aWVsZF9hc19sb25nICh0eXBlLCB2YWxhZGRyLCBpKSk7CiAKLQkJICBjb21t b25fdmFsX3ByaW50ICh2LCBzdHJlYW0sIGZvcm1hdCwgMCwgcmVjdXJzZSAr IDEsCi0JCQkJICAgIHByZXR0eSwgY3VycmVudF9sYW5ndWFnZSk7CisJCSAg Y29tbW9uX3ZhbF9wcmludCAodiwgc3RyZWFtLCByZWN1cnNlICsgMSwKKwkJ CQkgICAgb3B0aW9ucywgY3VycmVudF9sYW5ndWFnZSk7CiAJCX0KIAkgICAg fQogCSAgZWxzZQpAQCAtNDAzLDggKzQwMiw4IEBAIGphdmFfcHJpbnRfdmFs dWVfZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUg KnZhbGFkZHIsCiAJCSAgICAgIHN0cnVjdCB0eXBlICp0ID0gY2hlY2tfdHlw ZWRlZiAodmFsdWVfdHlwZSAodikpOwogCQkgICAgICBpZiAoVFlQRV9DT0RF ICh0KSA9PSBUWVBFX0NPREVfU1RSVUNUKQogCQkJdiA9IHZhbHVlX2FkZHIg KHYpOwotCQkgICAgICBjb21tb25fdmFsX3ByaW50ICh2LCBzdHJlYW0sIGZv cm1hdCwgMCwgcmVjdXJzZSArIDEsCi0JCQkJCXByZXR0eSwgY3VycmVudF9s YW5ndWFnZSk7CisJCSAgICAgIGNvbW1vbl92YWxfcHJpbnQgKHYsIHN0cmVh bSwgcmVjdXJzZSArIDEsCisJCQkJCW9wdGlvbnMsIGN1cnJlbnRfbGFuZ3Vh Z2UpOwogCQkgICAgfQogCQl9CiAJICAgICAgZWxzZSBpZiAoVFlQRV9GSUVM RF9UWVBFICh0eXBlLCBpKSA9PSBOVUxMKQpAQCAtNDE0LDE0ICs0MTMsMTQg QEAgamF2YV9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eXBl LCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIAkJICB2YWxfcHJpbnQgKFRZ UEVfRklFTERfVFlQRSAodHlwZSwgaSksCiAJCQkgICAgIHZhbGFkZHIgKyBU WVBFX0ZJRUxEX0JJVFBPUyAodHlwZSwgaSkgLyA4LCAwLAogCQkJICAgICBh ZGRyZXNzICsgVFlQRV9GSUVMRF9CSVRQT1MgKHR5cGUsIGkpIC8gOCwKLQkJ CSAgICAgc3RyZWFtLCBmb3JtYXQsIDAsIHJlY3Vyc2UgKyAxLCBwcmV0dHks CisJCQkgICAgIHN0cmVhbSwgcmVjdXJzZSArIDEsIG9wdGlvbnMsCiAJCQkg ICAgIGN1cnJlbnRfbGFuZ3VhZ2UpOwogCQl9CiAJICAgIH0KIAkgIGFubm90 YXRlX2ZpZWxkX2VuZCAoKTsKIAl9CiAKLSAgICAgIGlmIChwcmV0dHkpCisg ICAgICBpZiAob3B0aW9ucy0+cHJldHR5KQogCXsKIAkgIGZwcmludGZfZmls dGVyZWQgKHN0cmVhbSwgIlxuIik7CiAJICBwcmludF9zcGFjZXNfZmlsdGVy ZWQgKDIgKiByZWN1cnNlLCBzdHJlYW0pOwpAQCAtNDQ2LDggKzQ0NSw4IEBA IGphdmFfcHJpbnRfdmFsdWVfZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwg Y29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiBpbnQKIGphdmFfdmFsX3ByaW50 IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIs CiAJCWludCBlbWJlZGRlZF9vZmZzZXQsIENPUkVfQUREUiBhZGRyZXNzLAot CQlzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgZm9ybWF0LCBpbnQgZGVy ZWZfcmVmLAotCQlpbnQgcmVjdXJzZSwgZW51bSB2YWxfcHJldHR5cHJpbnQg cHJldHR5KQorCQlzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJz ZSwKKwkJY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlv bnMpCiB7CiAgIHVuc2lnbmVkIGludCBpID0gMDsJLyogTnVtYmVyIG9mIGNo YXJhY3RlcnMgcHJpbnRlZCAqLwogICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5 cGU7CkBAIC00NTcsMTMgKzQ1NiwxMyBAQCBqYXZhX3ZhbF9wcmludCAoc3Ry dWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogICBz d2l0Y2ggKFRZUEVfQ09ERSAodHlwZSkpCiAgICAgewogICAgIGNhc2UgVFlQ RV9DT0RFX1BUUjoKLSAgICAgIGlmIChmb3JtYXQgJiYgZm9ybWF0ICE9ICdz JykKKyAgICAgIGlmIChvcHRpb25zLT5vdXRwdXRfZm9ybWF0ICYmIG9wdGlv bnMtPm91dHB1dF9mb3JtYXQgIT0gJ3MnKQogCXsKLQkgIHByaW50X3NjYWxh cl9mb3JtYXR0ZWQgKHZhbGFkZHIsIHR5cGUsIGZvcm1hdCwgMCwgc3RyZWFt KTsKKwkgIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIsIHR5cGUs IG9wdGlvbnMtPm91dHB1dF9mb3JtYXQsIDAsIHN0cmVhbSk7CiAJICBicmVh azsKIAl9CiAjaWYgMAotICAgICAgaWYgKHZ0YmxwcmludCAmJiBjcF9pc192 dGJsX3B0cl90eXBlICh0eXBlKSkKKyAgICAgIGlmIChvcHRpb25zLT52dGJs cHJpbnQgJiYgY3BfaXNfdnRibF9wdHJfdHlwZSAodHlwZSkpCiAJewogCSAg LyogUHJpbnQgdGhlIHVubWFuZ2xlZCBuYW1lIGlmIGRlc2lyZWQuICAqLwog CSAgLyogUHJpbnQgdnRhYmxlIGVudHJ5IC0gd2Ugb25seSBnZXQgaGVyZSBp ZiB3ZSBBUkUgdXNpbmcKQEAgLTQ5MCw3ICs0ODksNyBAQCBqYXZhX3ZhbF9w cmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxh ZGRyLAogCSAgcmV0dXJuICgwKTsKIAl9CiAKLSAgICAgIGlmIChhZGRyZXNz cHJpbnQgJiYgZm9ybWF0ICE9ICdzJykKKyAgICAgIGlmIChvcHRpb25zLT5h ZGRyZXNzcHJpbnQgJiYgb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCAhPSAncycp CiAJewogCSAgZnB1dHNfZmlsdGVyZWQgKCJAIiwgc3RyZWFtKTsKIAkgIHBy aW50X2xvbmdlc3QgKHN0cmVhbSwgJ3gnLCAwLCAoVUxPTkdFU1QpIGFkZHIp OwpAQCAtNTAyLDkgKzUwMSw5IEBAIGphdmFfdmFsX3ByaW50IChzdHJ1Y3Qg dHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgICAgY2Fz ZSBUWVBFX0NPREVfSU5UOgogICAgICAgLyogQ2FuJ3QganVzdCBjYWxsIGNf dmFsX3ByaW50IGJlY2F1c2UgdGhhdCBwcmludHMgYnl0ZXMgYXMgQwogCSBj aGFycy4gICovCi0gICAgICBmb3JtYXQgPSBmb3JtYXQgPyBmb3JtYXQgOiBv dXRwdXRfZm9ybWF0OwotICAgICAgaWYgKGZvcm1hdCkKLQlwcmludF9zY2Fs YXJfZm9ybWF0dGVkICh2YWxhZGRyLCB0eXBlLCBmb3JtYXQsIDAsIHN0cmVh bSk7CisgICAgICBpZiAob3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCkKKwlwcmlu dF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyLCB0eXBlLCBvcHRpb25zLT5v dXRwdXRfZm9ybWF0LAorCQkJCTAsIHN0cmVhbSk7CiAgICAgICBlbHNlIGlm IChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9DSEFSCiAJICAgICAg IHx8IChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9JTlQKIAkJICAg JiYgVFlQRV9MRU5HVEggKHR5cGUpID09IDIKQEAgLTUxNSwxMyArNTE0LDEz IEBAIGphdmFfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3Qg Z2RiX2J5dGUgKnZhbGFkZHIsCiAgICAgICBicmVhazsKIAogICAgIGNhc2Ug VFlQRV9DT0RFX1NUUlVDVDoKLSAgICAgIGphdmFfcHJpbnRfdmFsdWVfZmll bGRzICh0eXBlLCB2YWxhZGRyLCBhZGRyZXNzLCBzdHJlYW0sIGZvcm1hdCwK LQkJCSAgICAgICByZWN1cnNlLCBwcmV0dHkpOworICAgICAgamF2YV9wcmlu dF92YWx1ZV9maWVsZHMgKHR5cGUsIHZhbGFkZHIsIGFkZHJlc3MsIHN0cmVh bSwgcmVjdXJzZSwKKwkJCSAgICAgICBvcHRpb25zKTsKICAgICAgIGJyZWFr OwogCiAgICAgZGVmYXVsdDoKICAgICAgIHJldHVybiBjX3ZhbF9wcmludCAo dHlwZSwgdmFsYWRkciwgZW1iZWRkZWRfb2Zmc2V0LCBhZGRyZXNzLCBzdHJl YW0sCi0JCQkgIGZvcm1hdCwgZGVyZWZfcmVmLCByZWN1cnNlLCBwcmV0dHkp OworCQkJICByZWN1cnNlLCBvcHRpb25zKTsKICAgICB9CiAKICAgcmV0dXJu IDA7CmRpZmYgLS1naXQgYS9nZGIvbGFuZ3VhZ2UuYyBiL2dkYi9sYW5ndWFn ZS5jCmluZGV4IDEyMWZjNTUuLjQ2ZTIzOGQgMTAwNjQ0Ci0tLSBhL2dkYi9s YW5ndWFnZS5jCisrKyBiL2dkYi9sYW5ndWFnZS5jCkBAIC03Miw3ICs3Miw4 IEBAIHN0YXRpYyB2b2lkIHVua19sYW5nX3ByaW50Y2hhciAoaW50IGMsIHN0 cnVjdCB1aV9maWxlICpzdHJlYW0pOwogc3RhdGljIHZvaWQgdW5rX2xhbmdf cHJpbnRfdHlwZSAoc3RydWN0IHR5cGUgKiwgY2hhciAqLCBzdHJ1Y3QgdWlf ZmlsZSAqLAogCQkJCSBpbnQsIGludCk7CiAKLXN0YXRpYyBpbnQgdW5rX2xh bmdfdmFsdWVfcHJpbnQgKHN0cnVjdCB2YWx1ZSAqLCBzdHJ1Y3QgdWlfZmls ZSAqLCBpbnQsIGVudW0gdmFsX3ByZXR0eXByaW50KTsKK3N0YXRpYyBpbnQg dW5rX2xhbmdfdmFsdWVfcHJpbnQgKHN0cnVjdCB2YWx1ZSAqLCBzdHJ1Y3Qg dWlfZmlsZSAqLAorCQkJCSBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0 aW9ucyAqKTsKIAogc3RhdGljIENPUkVfQUREUiB1bmtfbGFuZ190cmFtcG9s aW5lIChzdHJ1Y3QgZnJhbWVfaW5mbyAqLCBDT1JFX0FERFIgcGMpOwogCkBA IC0xMDM1LDEwICsxMDM2LDEwIEBAIGRlZmF1bHRfd29yZF9icmVha19jaGFy YWN0ZXJzICh2b2lkKQogCiB2b2lkCiBkZWZhdWx0X3ByaW50X2FycmF5X2lu ZGV4IChzdHJ1Y3QgdmFsdWUgKmluZGV4X3ZhbHVlLCBzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZv cm1hdCwgZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5KQorCQkJICAgY29u c3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCiB7CiAg IGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIlsiKTsKLSAgTEFfVkFMVUVf UFJJTlQgKGluZGV4X3ZhbHVlLCBzdHJlYW0sIGZvcm1hdCwgcHJldHR5KTsK KyAgTEFfVkFMVUVfUFJJTlQgKGluZGV4X3ZhbHVlLCBzdHJlYW0sIG9wdGlv bnMpOwogICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJdID0gIik7CiB9 CiAKQEAgLTEwNzAsNyArMTA3MSw4IEBAIHVua19sYW5nX3ByaW50Y2hhciAo aW50IGMsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCiAKIHN0YXRpYyB2b2lk CiB1bmtfbGFuZ19wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwg Y29uc3QgZ2RiX2J5dGUgKnN0cmluZywKLQkJICAgdW5zaWduZWQgaW50IGxl bmd0aCwgaW50IHdpZHRoLCBpbnQgZm9yY2VfZWxsaXBzZXMpCisJCSAgIHVu c2lnbmVkIGludCBsZW5ndGgsIGludCB3aWR0aCwgaW50IGZvcmNlX2VsbGlw c2VzLAorCQkgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAq b3B0aW9ucykKIHsKICAgZXJyb3IgKF8oImludGVybmFsIGVycm9yIC0gdW5p bXBsZW1lbnRlZCBmdW5jdGlvbiB1bmtfbGFuZ19wcmludHN0ciBjYWxsZWQu IikpOwogfQpAQCAtMTA4NSwxNSArMTA4NywxNSBAQCB1bmtfbGFuZ19wcmlu dF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY2hhciAqdmFyc3RyaW5nLCBz dHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAogc3RhdGljIGludAogdW5rX2xhbmdf dmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUg KnZhbGFkZHIsCiAJCSAgICBpbnQgZW1iZWRkZWRfb2Zmc2V0LCBDT1JFX0FE RFIgYWRkcmVzcywKLQkJICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGlu dCBmb3JtYXQsCi0JCSAgICBpbnQgZGVyZWZfcmVmLCBpbnQgcmVjdXJzZSwg ZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5KQorCQkgICAgc3RydWN0IHVp X2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCisJCSAgICBjb25zdCBzdHJ1 Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKIHsKICAgZXJyb3Ig KF8oImludGVybmFsIGVycm9yIC0gdW5pbXBsZW1lbnRlZCBmdW5jdGlvbiB1 bmtfbGFuZ192YWxfcHJpbnQgY2FsbGVkLiIpKTsKIH0KIAogc3RhdGljIGlu dAotdW5rX2xhbmdfdmFsdWVfcHJpbnQgKHN0cnVjdCB2YWx1ZSAqdmFsLCBz dHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgZm9ybWF0LAotCQkgICAgICBl bnVtIHZhbF9wcmV0dHlwcmludCBwcmV0dHkpCit1bmtfbGFuZ192YWx1ZV9w cmludCAoc3RydWN0IHZhbHVlICp2YWwsIHN0cnVjdCB1aV9maWxlICpzdHJl YW0sCisJCSAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25z ICpvcHRpb25zKQogewogICBlcnJvciAoXygiaW50ZXJuYWwgZXJyb3IgLSB1 bmltcGxlbWVudGVkIGZ1bmN0aW9uIHVua19sYW5nX3ZhbHVlX3ByaW50IGNh bGxlZC4iKSk7CiB9CmRpZmYgLS1naXQgYS9nZGIvbGFuZ3VhZ2UuaCBiL2dk Yi9sYW5ndWFnZS5oCmluZGV4IGNjMTBmZjIuLmM5MmM1N2MgMTAwNjQ0Ci0t LSBhL2dkYi9sYW5ndWFnZS5oCisrKyBiL2dkYi9sYW5ndWFnZS5oCkBAIC0z MCw2ICszMCw3IEBAIHN0cnVjdCBvYmpmaWxlOwogc3RydWN0IGZyYW1lX2lu Zm87CiBzdHJ1Y3QgZXhwcmVzc2lvbjsKIHN0cnVjdCB1aV9maWxlOworc3Ry dWN0IHZhbHVlX3ByaW50X29wdGlvbnM7CiAKICNkZWZpbmUgTUFYX0ZPUlRS QU5fRElNUyAgNwkvKiBNYXhpbXVtIG51bWJlciBvZiBGNzcgYXJyYXkgZGlt cyAqLwogCkBAIC0xODksNyArMTkwLDggQEAgc3RydWN0IGxhbmd1YWdlX2Rl Zm4KIAogICAgIHZvaWQgKCpsYV9wcmludHN0cikgKHN0cnVjdCB1aV9maWxl ICogc3RyZWFtLCBjb25zdCBnZGJfYnl0ZSAqc3RyaW5nLAogCQkJIHVuc2ln bmVkIGludCBsZW5ndGgsIGludCB3aWR0aCwKLQkJCSBpbnQgZm9yY2VfZWxs aXBzZXMpOworCQkJIGludCBmb3JjZV9lbGxpcHNlcywKKwkJCSBjb25zdCBz dHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKIAogICAgIHZvaWQgKCps YV9lbWl0Y2hhcikgKGludCBjaCwgc3RydWN0IHVpX2ZpbGUgKiBzdHJlYW0s IGludCBxdW90ZXIpOwogCkBAIC0yMDgsMTMgKzIxMCwxMyBAQCBzdHJ1Y3Qg bGFuZ3VhZ2VfZGVmbgogICAgIC8qIFByaW50IGEgdmFsdWUgdXNpbmcgc3lu dGF4IGFwcHJvcHJpYXRlIGZvciB0aGlzIGxhbmd1YWdlLiAqLwogCiAgICAg aW50ICgqbGFfdmFsX3ByaW50KSAoc3RydWN0IHR5cGUgKiwgY29uc3QgZ2Ri X2J5dGUgKiwgaW50LCBDT1JFX0FERFIsCi0JCQkgc3RydWN0IHVpX2ZpbGUg KiwgaW50LCBpbnQsIGludCwKLQkJCSBlbnVtIHZhbF9wcmV0dHlwcmludCk7 CisJCQkgc3RydWN0IHVpX2ZpbGUgKiwgaW50LAorCQkJIGNvbnN0IHN0cnVj dCB2YWx1ZV9wcmludF9vcHRpb25zICopOwogCiAgICAgLyogUHJpbnQgYSB0 b3AtbGV2ZWwgdmFsdWUgdXNpbmcgc3ludGF4IGFwcHJvcHJpYXRlIGZvciB0 aGlzIGxhbmd1YWdlLiAqLwogCiAgICAgaW50ICgqbGFfdmFsdWVfcHJpbnQp IChzdHJ1Y3QgdmFsdWUgKiwgc3RydWN0IHVpX2ZpbGUgKiwKLQkJCSAgIGlu dCwgZW51bSB2YWxfcHJldHR5cHJpbnQpOworCQkJICAgY29uc3Qgc3RydWN0 IHZhbHVlX3ByaW50X29wdGlvbnMgKik7CiAKICAgICAvKiBQQyBpcyBwb3Nz aWJseSBhbiB1bmtub3duIGxhbmd1YWdlcyB0cmFtcG9saW5lLgogICAgICAg IElmIHRoYXQgUEMgZmFsbHMgaW4gYSB0cmFtcG9saW5lIGJlbG9uZ2luZyB0 byB0aGlzIGxhbmd1YWdlLApAQCAtMjc0LDggKzI3Niw3IEBAIHN0cnVjdCBs YW5ndWFnZV9kZWZuCiAgICAgLyogUHJpbnQgdGhlIGluZGV4IG9mIGFuIGVs ZW1lbnQgb2YgYW4gYXJyYXkuICAqLwogICAgIHZvaWQgKCpsYV9wcmludF9h cnJheV9pbmRleCkgKHN0cnVjdCB2YWx1ZSAqaW5kZXhfdmFsdWUsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHVpX2ZpbGUg KnN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGVudW0gdmFsX3ByZXR0eXByaW50IHByZXR0eSk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50 X29wdGlvbnMgKm9wdGlvbnMpOwogCiAgICAgLyogUmV0dXJuIG5vbi16ZXJv IGlmIFRZUEUgc2hvdWxkIGJlIHBhc3NlZCAoYW5kIHJldHVybmVkKSBieQog ICAgICAgIHJlZmVyZW5jZSBhdCB0aGUgbGFuZ3VhZ2UgbGV2ZWwuICAqLwpA QCAtMzY2LDIxICszNjcsMjIgQEAgZXh0ZXJuIGVudW0gbGFuZ3VhZ2Ugc2V0 X2xhbmd1YWdlIChlbnVtIGxhbmd1YWdlKTsKICNkZWZpbmUgTEFfUFJJTlRf VFlQRURFRih0eXBlLG5ld19zeW1ib2wsc3RyZWFtKSBcCiAgIChjdXJyZW50 X2xhbmd1YWdlLT5sYV9wcmludF90eXBlZGVmKHR5cGUsbmV3X3N5bWJvbCxz dHJlYW0pKQogCi0jZGVmaW5lIExBX1ZBTF9QUklOVCh0eXBlLHZhbGFkZHIs b2Zmc2V0LGFkZHIsc3RyZWFtLGZtdCxkZXJlZixyZWN1cnNlLHByZXR0eSkg XAotICAoY3VycmVudF9sYW5ndWFnZS0+bGFfdmFsX3ByaW50KHR5cGUsdmFs YWRkcixvZmZzZXQsYWRkcixzdHJlYW0sZm10LGRlcmVmLCBcCi0JCQkJICBy ZWN1cnNlLHByZXR0eSkpCi0jZGVmaW5lIExBX1ZBTFVFX1BSSU5UKHZhbCxz dHJlYW0sZm10LHByZXR0eSkgXAotICAoY3VycmVudF9sYW5ndWFnZS0+bGFf dmFsdWVfcHJpbnQodmFsLHN0cmVhbSxmbXQscHJldHR5KSkKKyNkZWZpbmUg TEFfVkFMX1BSSU5UKHR5cGUsdmFsYWRkcixvZmZzZXQsYWRkcixzdHJlYW0s cmVjdXJzZSxvcHRpb25zKSBcCisgIChjdXJyZW50X2xhbmd1YWdlLT5sYV92 YWxfcHJpbnQodHlwZSx2YWxhZGRyLG9mZnNldCxhZGRyLHN0cmVhbSwgXAor CQkJCSAgcmVjdXJzZSxvcHRpb25zKSkKKyNkZWZpbmUgTEFfVkFMVUVfUFJJ TlQodmFsLHN0cmVhbSxvcHRpb25zKSBcCisgIChjdXJyZW50X2xhbmd1YWdl LT5sYV92YWx1ZV9wcmludCh2YWwsc3RyZWFtLG9wdGlvbnMpKQogCiAjZGVm aW5lIExBX1BSSU5UX0NIQVIoY2gsIHN0cmVhbSkgXAogICAoY3VycmVudF9s YW5ndWFnZS0+bGFfcHJpbnRjaGFyKGNoLCBzdHJlYW0pKQotI2RlZmluZSBM QV9QUklOVF9TVFJJTkcoc3RyZWFtLCBzdHJpbmcsIGxlbmd0aCwgd2lkdGgs IGZvcmNlX2VsbGlwc2VzKSBcCi0gIChjdXJyZW50X2xhbmd1YWdlLT5sYV9w cmludHN0cihzdHJlYW0sIHN0cmluZywgbGVuZ3RoLCB3aWR0aCwgZm9yY2Vf ZWxsaXBzZXMpKQorI2RlZmluZSBMQV9QUklOVF9TVFJJTkcoc3RyZWFtLCBz dHJpbmcsIGxlbmd0aCwgd2lkdGgsIGZvcmNlX2VsbGlwc2VzLG9wdGlvbnMp IFwKKyAgKGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX3ByaW50c3RyKHN0cmVhbSwg c3RyaW5nLCBsZW5ndGgsIHdpZHRoLCBcCisJCQkJIGZvcmNlX2VsbGlwc2Vz LG9wdGlvbnMpKQogI2RlZmluZSBMQV9FTUlUX0NIQVIoY2gsIHN0cmVhbSwg cXVvdGVyKSBcCiAgIChjdXJyZW50X2xhbmd1YWdlLT5sYV9lbWl0Y2hhcihj aCwgc3RyZWFtLCBxdW90ZXIpKQogCi0jZGVmaW5lIExBX1BSSU5UX0FSUkFZ X0lOREVYKGluZGV4X3ZhbHVlLCBzdHJlYW0sIGZvcm1hdCwgcHJldHR5KSBc Ci0gIChjdXJyZW50X2xhbmd1YWdlLT5sYV9wcmludF9hcnJheV9pbmRleChp bmRleF92YWx1ZSwgc3RyZWFtLCBmb3JtYXQsIHByZXR0eSkpCisjZGVmaW5l IExBX1BSSU5UX0FSUkFZX0lOREVYKGluZGV4X3ZhbHVlLCBzdHJlYW0sIG9w dGlucykgXAorICAoY3VycmVudF9sYW5ndWFnZS0+bGFfcHJpbnRfYXJyYXlf aW5kZXgoaW5kZXhfdmFsdWUsIHN0cmVhbSwgb3B0aW9ucykpCiAKIC8qIFRl c3QgYSBjaGFyYWN0ZXIgdG8gZGVjaWRlIHdoZXRoZXIgaXQgY2FuIGJlIHBy aW50ZWQgaW4gbGl0ZXJhbCBmb3JtCiAgICBvciBuZWVkcyB0byBiZSBwcmlu dGVkIGluIGFub3RoZXIgcmVwcmVzZW50YXRpb24uICBGb3IgZXhhbXBsZSwK QEAgLTQ3Miw4ICs0NzQsNyBAQCBleHRlcm4gY2hhciAqZGVmYXVsdF93b3Jk X2JyZWFrX2NoYXJhY3RlcnMgKHZvaWQpOwogLyogUHJpbnQgdGhlIGluZGV4 IG9mIGFuIGFycmF5IGVsZW1lbnQgdXNpbmcgdGhlIEM5OSBzeW50YXguICAq LwogZXh0ZXJuIHZvaWQgZGVmYXVsdF9wcmludF9hcnJheV9pbmRleCAoc3Ry dWN0IHZhbHVlICppbmRleF92YWx1ZSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZm9y bWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5KTsKKwkJCQkgICAgICAgY29u c3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpOwogCiAv KiBSZXR1cm4gbm9uLXplcm8gaWYgVFlQRSBzaG91bGQgYmUgcGFzc2VkIChh bmQgcmV0dXJuZWQpIGJ5CiAgICByZWZlcmVuY2UgYXQgdGhlIGxhbmd1YWdl IGxldmVsLiAgKi8KZGlmZiAtLWdpdCBhL2dkYi9tMi1sYW5nLmMgYi9nZGIv bTItbGFuZy5jCmluZGV4IGVhNTk0MDMuLmUwOWI2NGIgMTAwNjQ0Ci0tLSBh L2dkYi9tMi1sYW5nLmMKKysrIGIvZ2RiL20yLWxhbmcuYwpAQCAtMTA0LDcg KzEwNCw4IEBAIG0yX3ByaW50Y2hhciAoaW50IGMsIHN0cnVjdCB1aV9maWxl ICpzdHJlYW0pCiAKIHN0YXRpYyB2b2lkCiBtMl9wcmludHN0ciAoc3RydWN0 IHVpX2ZpbGUgKnN0cmVhbSwgY29uc3QgZ2RiX2J5dGUgKnN0cmluZywKLQkg ICAgIHVuc2lnbmVkIGludCBsZW5ndGgsIGludCB3aWR0aCwgaW50IGZvcmNl X2VsbGlwc2VzKQorCSAgICAgdW5zaWduZWQgaW50IGxlbmd0aCwgaW50IHdp ZHRoLCBpbnQgZm9yY2VfZWxsaXBzZXMsCisJICAgICBjb25zdCBzdHJ1Y3Qg dmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKIHsKICAgdW5zaWduZWQg aW50IGk7CiAgIHVuc2lnbmVkIGludCB0aGluZ3NfcHJpbnRlZCA9IDA7CkBA IC0xMTcsNyArMTE4LDcgQEAgbTJfcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxl ICpzdHJlYW0sIGNvbnN0IGdkYl9ieXRlICpzdHJpbmcsCiAgICAgICByZXR1 cm47CiAgICAgfQogCi0gIGZvciAoaSA9IDA7IGkgPCBsZW5ndGggJiYgdGhp bmdzX3ByaW50ZWQgPCBwcmludF9tYXg7ICsraSkKKyAgZm9yIChpID0gMDsg aSA8IGxlbmd0aCAmJiB0aGluZ3NfcHJpbnRlZCA8IG9wdGlvbnMtPnByaW50 X21heDsgKytpKQogICAgIHsKICAgICAgIC8qIFBvc2l0aW9uIG9mIHRoZSBj aGFyYWN0ZXIgd2UgYXJlIGV4YW1pbmluZwogICAgICAgICAgdG8gc2VlIHdo ZXRoZXIgaXQgaXMgcmVwZWF0ZWQuICAqLwpAQCAtMTQxLDExICsxNDIsMTEg QEAgbTJfcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGNvbnN0 IGdkYl9ieXRlICpzdHJpbmcsCiAJICArK3JlcHM7CiAJfQogCi0gICAgICBp ZiAocmVwcyA+IHJlcGVhdF9jb3VudF90aHJlc2hvbGQpCisgICAgICBpZiAo cmVwcyA+IG9wdGlvbnMtPnJlcGVhdF9jb3VudF90aHJlc2hvbGQpCiAJewog CSAgaWYgKGluX3F1b3RlcykKIAkgICAgewotCSAgICAgIGlmIChpbnNwZWN0 X2l0KQorCSAgICAgIGlmIChvcHRpb25zLT5pbnNwZWN0X2l0KQogCQlmcHV0 c19maWx0ZXJlZCAoIlxcXCIsICIsIHN0cmVhbSk7CiAJICAgICAgZWxzZQog CQlmcHV0c19maWx0ZXJlZCAoIlwiLCAiLCBzdHJlYW0pOwpAQCAtMTU0LDE0 ICsxNTUsMTQgQEAgbTJfcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJl YW0sIGNvbnN0IGdkYl9ieXRlICpzdHJpbmcsCiAJICBtMl9wcmludGNoYXIg KHN0cmluZ1tpXSwgc3RyZWFtKTsKIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0 cmVhbSwgIiA8cmVwZWF0cyAldSB0aW1lcz4iLCByZXBzKTsKIAkgIGkgPSBy ZXAxIC0gMTsKLQkgIHRoaW5nc19wcmludGVkICs9IHJlcGVhdF9jb3VudF90 aHJlc2hvbGQ7CisJICB0aGluZ3NfcHJpbnRlZCArPSBvcHRpb25zLT5yZXBl YXRfY291bnRfdGhyZXNob2xkOwogCSAgbmVlZF9jb21tYSA9IDE7CiAJfQog ICAgICAgZWxzZQogCXsKIAkgIGlmICghaW5fcXVvdGVzKQogCSAgICB7Ci0J ICAgICAgaWYgKGluc3BlY3RfaXQpCisJICAgICAgaWYgKG9wdGlvbnMtPmlu c3BlY3RfaXQpCiAJCWZwdXRzX2ZpbHRlcmVkICgiXFxcIiIsIHN0cmVhbSk7 CiAJICAgICAgZWxzZQogCQlmcHV0c19maWx0ZXJlZCAoIlwiIiwgc3RyZWFt KTsKQEAgLTE3NSw3ICsxNzYsNyBAQCBtMl9wcmludHN0ciAoc3RydWN0IHVp X2ZpbGUgKnN0cmVhbSwgY29uc3QgZ2RiX2J5dGUgKnN0cmluZywKICAgLyog VGVybWluYXRlIHRoZSBxdW90ZXMgaWYgbmVjZXNzYXJ5LiAgKi8KICAgaWYg KGluX3F1b3RlcykKICAgICB7Ci0gICAgICBpZiAoaW5zcGVjdF9pdCkKKyAg ICAgIGlmIChvcHRpb25zLT5pbnNwZWN0X2l0KQogCWZwdXRzX2ZpbHRlcmVk ICgiXFxcIiIsIHN0cmVhbSk7CiAgICAgICBlbHNlCiAJZnB1dHNfZmlsdGVy ZWQgKCJcIiIsIHN0cmVhbSk7CmRpZmYgLS1naXQgYS9nZGIvbTItbGFuZy5o IGIvZ2RiL20yLWxhbmcuaAppbmRleCA4Y2U0NThjLi5mOTllMzFhIDEwMDY0 NAotLS0gYS9nZGIvbTItbGFuZy5oCisrKyBiL2dkYi9tMi1sYW5nLmgKQEAg LTMzLDggKzMzLDggQEAgZXh0ZXJuIGludCBtMl9pc19sb25nX3NldCAoc3Ry dWN0IHR5cGUgKnR5cGUpOwogZXh0ZXJuIGludCBtMl9pc191bmJvdW5kZWRf YXJyYXkgKHN0cnVjdCB0eXBlICp0eXBlKTsKIAogZXh0ZXJuIGludCBtMl92 YWxfcHJpbnQgKHN0cnVjdCB0eXBlICosIGNvbnN0IGdkYl9ieXRlICosIGlu dCwgQ09SRV9BRERSLAotCQkJIHN0cnVjdCB1aV9maWxlICosIGludCwgaW50 LCBpbnQsCi0JCQkgZW51bSB2YWxfcHJldHR5cHJpbnQpOworCQkJIHN0cnVj dCB1aV9maWxlICosIGludCwKKwkJCSBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJp bnRfb3B0aW9ucyAqKTsKIAogZXh0ZXJuIGludCBnZXRfbG9uZ19zZXRfYm91 bmRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgTE9OR0VTVCAqbG93LAogCQkJCUxP TkdFU1QgKmhpZ2gpOwpkaWZmIC0tZ2l0IGEvZ2RiL20yLXZhbHByaW50LmMg Yi9nZGIvbTItdmFscHJpbnQuYwppbmRleCA4MmZmMzBlLi5lMjc2ZTg2IDEw MDY0NAotLS0gYS9nZGIvbTItdmFscHJpbnQuYworKysgYi9nZGIvbTItdmFs cHJpbnQuYwpAQCAtMzAsMjIgKzMwLDI0IEBACiAjaW5jbHVkZSAibTItbGFu Zy5oIgogI2luY2x1ZGUgInRhcmdldC5oIgogCi1pbnQgcHJpbnRfdW5wYWNr ZWRfcG9pbnRlciAoc3RydWN0IHR5cGUgKnR5cGUsCi0JCQkgICAgQ09SRV9B RERSIGFkZHJlc3MsIENPUkVfQUREUiBhZGRyLAotCQkJICAgIGludCBmb3Jt YXQsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pOworc3RhdGljIGludCBwcmlu dF91bnBhY2tlZF9wb2ludGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwKKwkJCQkg ICBDT1JFX0FERFIgYWRkcmVzcywgQ09SRV9BRERSIGFkZHIsCisJCQkJICAg Y29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMsCisJ CQkJICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSk7CiBzdGF0aWMgdm9pZAog bTJfcHJpbnRfYXJyYXlfY29udGVudHMgKHN0cnVjdCB0eXBlICp0eXBlLCBj b25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIAkJCSBpbnQgZW1iZWRkZWRfb2Zm c2V0LCBDT1JFX0FERFIgYWRkcmVzcywKLQkJCSBzdHJ1Y3QgdWlfZmlsZSAq c3RyZWFtLCBpbnQgZm9ybWF0LAotCQkJIGVudW0gdmFsX3ByZXR0eXByaW50 IHByZXR0eSwKLQkJCSBpbnQgZGVyZWZfcmVmLCBpbnQgcmVjdXJzZSwgaW50 IGxlbik7CisJCQkgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vy c2UsCisJCQkgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9w dGlvbnMsCisJCQkgaW50IGxlbik7CiAKIAogLyogUHJpbnQgZnVuY3Rpb24g cG9pbnRlciB3aXRoIGluZmVyaW9yIGFkZHJlc3MgQUREUkVTUyBvbnRvIHN0 ZGlvCiAgICBzdHJlYW0gU1RSRUFNLiAgKi8KIAogc3RhdGljIHZvaWQKLXBy aW50X2Z1bmN0aW9uX3BvaW50ZXJfYWRkcmVzcyAoQ09SRV9BRERSIGFkZHJl c3MsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCitwcmludF9mdW5jdGlvbl9w b2ludGVyX2FkZHJlc3MgKENPUkVfQUREUiBhZGRyZXNzLCBzdHJ1Y3QgdWlf ZmlsZSAqc3RyZWFtLAorCQkJCWludCBhZGRyZXNzcHJpbnQpCiB7CiAgIENP UkVfQUREUiBmdW5jX2FkZHIgPSBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5j X3B0cl9hZGRyIChjdXJyZW50X2dkYmFyY2gsCiAJCQkJCQkJICAgIGFkZHJl c3MsCkBAIC04OCw4ICs5MCw3IEBAIGdldF9sb25nX3NldF9ib3VuZHMgKHN0 cnVjdCB0eXBlICp0eXBlLCBMT05HRVNUICpsb3csIExPTkdFU1QgKmhpZ2gp CiBzdGF0aWMgdm9pZAogbTJfcHJpbnRfbG9uZ19zZXQgKHN0cnVjdCB0eXBl ICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIAkJICAgaW50IGVt YmVkZGVkX29mZnNldCwgQ09SRV9BRERSIGFkZHJlc3MsCi0JCSAgIHN0cnVj dCB1aV9maWxlICpzdHJlYW0sIGludCBmb3JtYXQsCi0JCSAgIGVudW0gdmFs X3ByZXR0eXByaW50IHByZXR0eSkKKwkJICAgc3RydWN0IHVpX2ZpbGUgKnN0 cmVhbSkKIHsKICAgaW50IGVtcHR5X3NldCAgICAgICAgPSAxOwogICBpbnQg ZWxlbWVudF9zZWVuICAgICA9IDA7CkBAIC0xODQsOSArMTg1LDggQEAgbTJf cHJpbnRfbG9uZ19zZXQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJf Ynl0ZSAqdmFsYWRkciwKIHN0YXRpYyB2b2lkCiBtMl9wcmludF91bmJvdW5k ZWRfYXJyYXkgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAq dmFsYWRkciwKIAkJCSAgaW50IGVtYmVkZGVkX29mZnNldCwgQ09SRV9BRERS IGFkZHJlc3MsCi0JCQkgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCBm b3JtYXQsCi0JCQkgIGludCBkZXJlZl9yZWYsIGVudW0gdmFsX3ByZXR0eXBy aW50IHByZXR0eSwKLQkJCSAgaW50IHJlY3Vyc2UpCisJCQkgIHN0cnVjdCB1 aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAorCQkJICBjb25zdCBzdHJ1 Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKIHsKICAgc3RydWN0 IHR5cGUgKmNvbnRlbnRfdHlwZTsKICAgQ09SRV9BRERSIGFkZHI7CkBAIC0y MDcsMjYgKzIwNywyNyBAQCBtMl9wcmludF91bmJvdW5kZWRfYXJyYXkgKHN0 cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKICAg ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAieyIpOyAgCiAgIG0yX3ByaW50 X2FycmF5X2NvbnRlbnRzICh2YWx1ZV90eXBlICh2YWwpLCB2YWx1ZV9jb250 ZW50cyh2YWwpLAogCQkJICAgdmFsdWVfZW1iZWRkZWRfb2Zmc2V0ICh2YWwp LCBhZGRyLCBzdHJlYW0sCi0JCQkgICBmb3JtYXQsIGRlcmVmX3JlZiwgcHJl dHR5LCByZWN1cnNlLCBsZW4pOworCQkJICAgcmVjdXJzZSwgb3B0aW9ucywg bGVuKTsKICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLCBISUdIID0g JWR9IiwgKGludCkgbGVuKTsKIH0KIAotaW50CitzdGF0aWMgaW50CiBwcmlu dF91bnBhY2tlZF9wb2ludGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwKIAkJCUNP UkVfQUREUiBhZGRyZXNzLCBDT1JFX0FERFIgYWRkciwKLQkJCWludCBmb3Jt YXQsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCisJCQljb25zdCBzdHJ1Y3Qg dmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucywKKwkJCXN0cnVjdCB1aV9m aWxlICpzdHJlYW0pCiB7CiAgIHN0cnVjdCB0eXBlICplbHR0eXBlID0gY2hl Y2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOwogCiAgIGlm IChUWVBFX0NPREUgKGVsdHR5cGUpID09IFRZUEVfQ09ERV9GVU5DKQogICAg IHsKICAgICAgIC8qIFRyeSB0byBwcmludCB3aGF0IGZ1bmN0aW9uIGl0IHBv aW50cyB0by4gICovCi0gICAgICBwcmludF9mdW5jdGlvbl9wb2ludGVyX2Fk ZHJlc3MgKGFkZHIsIHN0cmVhbSk7CisgICAgICBwcmludF9mdW5jdGlvbl9w b2ludGVyX2FkZHJlc3MgKGFkZHIsIHN0cmVhbSwgb3B0aW9ucy0+YWRkcmVz c3ByaW50KTsKICAgICAgIC8qIFJldHVybiB2YWx1ZSBpcyBpcnJlbGV2YW50 IGV4Y2VwdCBmb3Igc3RyaW5nIHBvaW50ZXJzLiAgKi8KICAgICAgIHJldHVy biAwOwogICAgIH0KIAotICBpZiAoYWRkcmVzc3ByaW50ICYmIGZvcm1hdCAh PSAncycpCisgIGlmIChvcHRpb25zLT5hZGRyZXNzcHJpbnQgJiYgb3B0aW9u cy0+b3V0cHV0X2Zvcm1hdCAhPSAncycpCiAgICAgZnB1dHNfZmlsdGVyZWQg KHBhZGRyZXNzIChhZGRyZXNzKSwgc3RyZWFtKTsKIAogICAvKiBGb3IgYSBw b2ludGVyIHRvIGNoYXIgb3IgdW5zaWduZWQgY2hhciwgYWxzbyBwcmludCB0 aGUgc3RyaW5nCkBAIC0yMzQsOSArMjM1LDkgQEAgcHJpbnRfdW5wYWNrZWRf cG9pbnRlciAoc3RydWN0IHR5cGUgKnR5cGUsCiAKICAgaWYgKFRZUEVfTEVO R1RIIChlbHR0eXBlKSA9PSAxCiAgICAgICAmJiBUWVBFX0NPREUgKGVsdHR5 cGUpID09IFRZUEVfQ09ERV9JTlQKLSAgICAgICYmIChmb3JtYXQgPT0gMCB8 fCBmb3JtYXQgPT0gJ3MnKQorICAgICAgJiYgKG9wdGlvbnMtPm91dHB1dF9m b3JtYXQgPT0gMCB8fCBvcHRpb25zLT5vdXRwdXRfZm9ybWF0ID09ICdzJykK ICAgICAgICYmIGFkZHIgIT0gMCkKLSAgICAgIHJldHVybiB2YWxfcHJpbnRf c3RyaW5nIChhZGRyLCAtMSwgVFlQRV9MRU5HVEggKGVsdHR5cGUpLCBzdHJl YW0pOworICAgIHJldHVybiB2YWxfcHJpbnRfc3RyaW5nIChhZGRyLCAtMSwg VFlQRV9MRU5HVEggKGVsdHR5cGUpLCBzdHJlYW0sIG9wdGlvbnMpOwogICAK ICAgcmV0dXJuIDA7CiB9CkBAIC0yNDQsOSArMjQ1LDkgQEAgcHJpbnRfdW5w YWNrZWRfcG9pbnRlciAoc3RydWN0IHR5cGUgKnR5cGUsCiBzdGF0aWMgdm9p ZAogcHJpbnRfdmFyaWFibGVfYXRfYWRkcmVzcyAoc3RydWN0IHR5cGUgKnR5 cGUsCiAJCQkgICBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKLQkJCSAgIHN0 cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCBmb3JtYXQsCi0JCQkgICBpbnQg ZGVyZWZfcmVmLCBpbnQgcmVjdXJzZSwKLQkJCSAgIGVudW0gdmFsX3ByZXR0 eXByaW50IHByZXR0eSkKKwkJCSAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0s CisJCQkgICBpbnQgcmVjdXJzZSwKKwkJCSAgIGNvbnN0IHN0cnVjdCB2YWx1 ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQogewogICBDT1JFX0FERFIgYWRk ciA9IHVucGFja19wb2ludGVyICh0eXBlLCB2YWxhZGRyKTsKICAgc3RydWN0 IHR5cGUgKmVsdHR5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9U WVBFICh0eXBlKSk7CkBAIC0yNTksOCArMjYwLDcgQEAgcHJpbnRfdmFyaWFi bGVfYXRfYWRkcmVzcyAoc3RydWN0IHR5cGUgKnR5cGUsCiAgICAgewogICAg ICAgc3RydWN0IHZhbHVlICpkZXJlZl92YWwgPQogCXZhbHVlX2F0IChUWVBF X1RBUkdFVF9UWVBFICh0eXBlKSwgdW5wYWNrX3BvaW50ZXIgKHR5cGUsIHZh bGFkZHIpKTsKLSAgICAgIGNvbW1vbl92YWxfcHJpbnQgKGRlcmVmX3ZhbCwg c3RyZWFtLCBmb3JtYXQsIGRlcmVmX3JlZiwKLQkJCXJlY3Vyc2UsIHByZXR0 eSwgY3VycmVudF9sYW5ndWFnZSk7CisgICAgICBjb21tb25fdmFsX3ByaW50 IChkZXJlZl92YWwsIHN0cmVhbSwgcmVjdXJzZSwgb3B0aW9ucywgY3VycmVu dF9sYW5ndWFnZSk7CiAgICAgfQogICBlbHNlCiAgICAgZnB1dHNfZmlsdGVy ZWQgKCI/Pz8iLCBzdHJlYW0pOwpAQCAtMjc2LDkgKzI3Niw5IEBAIHByaW50 X3ZhcmlhYmxlX2F0X2FkZHJlc3MgKHN0cnVjdCB0eXBlICp0eXBlLAogc3Rh dGljIHZvaWQKIG0yX3ByaW50X2FycmF5X2NvbnRlbnRzIChzdHJ1Y3QgdHlw ZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAJCQkgaW50IGVt YmVkZGVkX29mZnNldCwgQ09SRV9BRERSIGFkZHJlc3MsCi0JCQkgc3RydWN0 IHVpX2ZpbGUgKnN0cmVhbSwgaW50IGZvcm1hdCwKLQkJCSBlbnVtIHZhbF9w cmV0dHlwcmludCBwcmV0dHksCi0JCQkgaW50IGRlcmVmX3JlZiwgaW50IHJl Y3Vyc2UsIGludCBsZW4pCisJCQkgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwg aW50IHJlY3Vyc2UsCisJCQkgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29w dGlvbnMgKm9wdGlvbnMsCisJCQkgaW50IGxlbikKIHsKICAgaW50IGVsdGxl bjsKICAgQ0hFQ0tfVFlQRURFRiAodHlwZSk7CkBAIC0yODYsMjEgKzI4Niwy MCBAQCBtMl9wcmludF9hcnJheV9jb250ZW50cyAoc3RydWN0IHR5cGUgKnR5 cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogICBpZiAoVFlQRV9MRU5H VEggKHR5cGUpID4gMCkKICAgICB7CiAgICAgICBlbHRsZW4gPSBUWVBFX0xF TkdUSCAodHlwZSk7Ci0gICAgICBpZiAocHJldHR5cHJpbnRfYXJyYXlzKQor ICAgICAgaWYgKG9wdGlvbnMtPnByZXR0eXByaW50X2FycmF5cykKIAlwcmlu dF9zcGFjZXNfZmlsdGVyZWQgKDIgKyAyICogcmVjdXJzZSwgc3RyZWFtKTsK ICAgICAgIC8qIEZvciBhbiBhcnJheSBvZiBjaGFycywgcHJpbnQgd2l0aCBz dHJpbmcgc3ludGF4LiAgKi8KICAgICAgIGlmIChlbHRsZW4gPT0gMSAmJgog CSAgKChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9JTlQpCiAJICAg fHwgKChjdXJyZW50X2xhbmd1YWdlLT5sYV9sYW5ndWFnZSA9PSBsYW5ndWFn ZV9tMikKIAkgICAgICAgJiYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9D T0RFX0NIQVIpKSkKLQkgICYmIChmb3JtYXQgPT0gMCB8fCBmb3JtYXQgPT0g J3MnKSkKLQl2YWxfcHJpbnRfc3RyaW5nIChhZGRyZXNzLCBsZW4rMSwgZWx0 bGVuLCBzdHJlYW0pOworCSAgJiYgKG9wdGlvbnMtPm91dHB1dF9mb3JtYXQg PT0gMCB8fCBvcHRpb25zLT5vdXRwdXRfZm9ybWF0ID09ICdzJykpCisJdmFs X3ByaW50X3N0cmluZyAoYWRkcmVzcywgbGVuKzEsIGVsdGxlbiwgc3RyZWFt LCBvcHRpb25zKTsKICAgICAgIGVsc2UKIAl7CiAJICBmcHJpbnRmX2ZpbHRl cmVkIChzdHJlYW0sICJ7Iik7CiAJICB2YWxfcHJpbnRfYXJyYXlfZWxlbWVu dHMgKHR5cGUsIHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsCi0JCQkJICAg IGFkZHJlc3MsIHN0cmVhbSwgZm9ybWF0LAotCQkJCSAgICBkZXJlZl9yZWYs IHJlY3Vyc2UsIHByZXR0eSwgMCk7CisJCQkJICAgIGFkZHJlc3MsIHN0cmVh bSwgcmVjdXJzZSwgb3B0aW9ucywgMCk7CiAJICBmcHJpbnRmX2ZpbHRlcmVk IChzdHJlYW0sICJ9Iik7CiAJfQogICAgIH0KQEAgLTMyMiw4ICszMjEsOCBA QCBtMl9wcmludF9hcnJheV9jb250ZW50cyAoc3RydWN0IHR5cGUgKnR5cGUs IGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCiBpbnQKIG0yX3ZhbF9wcmlu dCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRy LCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAotCSAgICAgIENPUkVfQUREUiBhZGRy ZXNzLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgZm9ybWF0LAotCSAg ICAgIGludCBkZXJlZl9yZWYsIGludCByZWN1cnNlLCBlbnVtIHZhbF9wcmV0 dHlwcmludCBwcmV0dHkpCisJICAgICAgQ09SRV9BRERSIGFkZHJlc3MsIHN0 cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAorCSAgICAgIGNv bnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQogewog ICB1bnNpZ25lZCBpbnQgaSA9IDA7CS8qIE51bWJlciBvZiBjaGFyYWN0ZXJz IHByaW50ZWQgKi8KICAgdW5zaWduZWQgbGVuOwpAQCAtMzQzLDc0ICszNDIs NzMgQEAgbTJfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3Qg Z2RiX2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZzZXQsCiAJICBl bHR0eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlw ZSkpOwogCSAgZWx0bGVuID0gVFlQRV9MRU5HVEggKGVsdHR5cGUpOwogCSAg bGVuID0gVFlQRV9MRU5HVEggKHR5cGUpIC8gZWx0bGVuOwotCSAgaWYgKHBy ZXR0eXByaW50X2FycmF5cykKKwkgIGlmIChvcHRpb25zLT5wcmV0dHlwcmlu dF9hcnJheXMpCiAJICAgIHByaW50X3NwYWNlc19maWx0ZXJlZCAoMiArIDIg KiByZWN1cnNlLCBzdHJlYW0pOwogCSAgLyogRm9yIGFuIGFycmF5IG9mIGNo YXJzLCBwcmludCB3aXRoIHN0cmluZyBzeW50YXguICAqLwogCSAgaWYgKGVs dGxlbiA9PSAxICYmCiAJICAgICAgKChUWVBFX0NPREUgKGVsdHR5cGUpID09 IFRZUEVfQ09ERV9JTlQpCiAJICAgICAgIHx8ICgoY3VycmVudF9sYW5ndWFn ZS0+bGFfbGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfbTIpCiAJCSAgICYmIChUWVBF X0NPREUgKGVsdHR5cGUpID09IFRZUEVfQ09ERV9DSEFSKSkpCi0JICAgICAg JiYgKGZvcm1hdCA9PSAwIHx8IGZvcm1hdCA9PSAncycpKQorCSAgICAgICYm IChvcHRpb25zLT5vdXRwdXRfZm9ybWF0ID09IDAgfHwgb3B0aW9ucy0+b3V0 cHV0X2Zvcm1hdCA9PSAncycpKQogCSAgICB7CiAJICAgICAgLyogSWYgcmVx dWVzdGVkLCBsb29rIGZvciB0aGUgZmlyc3QgbnVsbCBjaGFyIGFuZCBvbmx5 IHByaW50CiAJICAgICAgICAgZWxlbWVudHMgdXAgdG8gaXQuICAqLwotCSAg ICAgIGlmIChzdG9wX3ByaW50X2F0X251bGwpCisJICAgICAgaWYgKG9wdGlv bnMtPnN0b3BfcHJpbnRfYXRfbnVsbCkKIAkJewogCQkgIHVuc2lnbmVkIGlu dCB0ZW1wX2xlbjsKIAogCQkgIC8qIExvb2sgZm9yIGEgTlVMTCBjaGFyLiAq LwogCQkgIGZvciAodGVtcF9sZW4gPSAwOwogCQkgICAgICAgKHZhbGFkZHIg KyBlbWJlZGRlZF9vZmZzZXQpW3RlbXBfbGVuXQotCQkJICYmIHRlbXBfbGVu IDwgbGVuICYmIHRlbXBfbGVuIDwgcHJpbnRfbWF4OworCQkJICYmIHRlbXBf bGVuIDwgbGVuICYmIHRlbXBfbGVuIDwgb3B0aW9ucy0+cHJpbnRfbWF4Owog CQkgICAgICAgdGVtcF9sZW4rKyk7CiAJCSAgbGVuID0gdGVtcF9sZW47CiAJ CX0KIAotCSAgICAgIExBX1BSSU5UX1NUUklORyAoc3RyZWFtLCB2YWxhZGRy ICsgZW1iZWRkZWRfb2Zmc2V0LCBsZW4sIDEsIDApOworCSAgICAgIExBX1BS SU5UX1NUUklORyAoc3RyZWFtLCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0 LCBsZW4sIDEsIDAsCisJCQkgICAgICAgb3B0aW9ucyk7CiAJICAgICAgaSA9 IGxlbjsKIAkgICAgfQogCSAgZWxzZQogCSAgICB7CiAJICAgICAgZnByaW50 Zl9maWx0ZXJlZCAoc3RyZWFtLCAieyIpOwogCSAgICAgIHZhbF9wcmludF9h cnJheV9lbGVtZW50cyAodHlwZSwgdmFsYWRkciArIGVtYmVkZGVkX29mZnNl dCwKLQkJCQkJYWRkcmVzcywgc3RyZWFtLCBmb3JtYXQsIGRlcmVmX3JlZiwK LQkJCQkJcmVjdXJzZSwgcHJldHR5LCAwKTsKKwkJCQkJYWRkcmVzcywgc3Ry ZWFtLCByZWN1cnNlLCBvcHRpb25zLCAwKTsKIAkgICAgICBmcHJpbnRmX2Zp bHRlcmVkIChzdHJlYW0sICJ9Iik7CiAJICAgIH0KIAkgIGJyZWFrOwogCX0K ICAgICAgIC8qIEFycmF5IG9mIHVuc3BlY2lmaWVkIGxlbmd0aDogdHJlYXQg bGlrZSBwb2ludGVyIHRvIGZpcnN0IGVsdC4gICovCi0gICAgICBwcmludF91 bnBhY2tlZF9wb2ludGVyICh0eXBlLCBhZGRyZXNzLCBhZGRyZXNzLCBmb3Jt YXQsIHN0cmVhbSk7CisgICAgICBwcmludF91bnBhY2tlZF9wb2ludGVyICh0 eXBlLCBhZGRyZXNzLCBhZGRyZXNzLCBvcHRpb25zLCBzdHJlYW0pOwogICAg ICAgYnJlYWs7CiAKICAgICBjYXNlIFRZUEVfQ09ERV9QVFI6CiAgICAgICBp ZiAoVFlQRV9DT05TVCAodHlwZSkpCiAJcHJpbnRfdmFyaWFibGVfYXRfYWRk cmVzcyAodHlwZSwgdmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwKLQkJCQkg ICBzdHJlYW0sIGZvcm1hdCwgZGVyZWZfcmVmLCByZWN1cnNlLAotCQkJCSAg IHByZXR0eSk7Ci0gICAgICBlbHNlIGlmIChmb3JtYXQgJiYgZm9ybWF0ICE9 ICdzJykKLQlwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyICsgZW1i ZWRkZWRfb2Zmc2V0LCB0eXBlLCBmb3JtYXQsCi0JCQkJMCwgc3RyZWFtKTsK KwkJCQkgICBzdHJlYW0sIHJlY3Vyc2UsIG9wdGlvbnMpOworICAgICAgZWxz ZSBpZiAob3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCAmJiBvcHRpb25zLT5vdXRw dXRfZm9ybWF0ICE9ICdzJykKKwlwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2 YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLAorCQkJCW9wdGlvbnMt Pm91dHB1dF9mb3JtYXQsIDAsIHN0cmVhbSk7CiAgICAgICBlbHNlCiAJewog CSAgYWRkciA9IHVucGFja19wb2ludGVyICh0eXBlLCB2YWxhZGRyICsgZW1i ZWRkZWRfb2Zmc2V0KTsKLQkgIHByaW50X3VucGFja2VkX3BvaW50ZXIgKHR5 cGUsIGFkZHIsIGFkZHJlc3MsIGZvcm1hdCwgc3RyZWFtKTsKKwkgIHByaW50 X3VucGFja2VkX3BvaW50ZXIgKHR5cGUsIGFkZHIsIGFkZHJlc3MsIG9wdGlv bnMsIHN0cmVhbSk7CiAJfQogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRZ UEVfQ09ERV9SRUY6CiAgICAgICBlbHR0eXBlID0gY2hlY2tfdHlwZWRlZiAo VFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOwotICAgICAgaWYgKGFkZHJlc3Nw cmludCkKKyAgICAgIGlmIChvcHRpb25zLT5hZGRyZXNzcHJpbnQpCiAJewog CSAgQ09SRV9BRERSIGFkZHIKIAkgICAgPSBleHRyYWN0X3R5cGVkX2FkZHJl c3MgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUpOwogCSAgZnBy aW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiQCIpOwogCSAgZnB1dHNfZmlsdGVy ZWQgKHBhZGRyZXNzIChhZGRyKSwgc3RyZWFtKTsKLQkgIGlmIChkZXJlZl9y ZWYpCisJICBpZiAob3B0aW9ucy0+ZGVyZWZfcmVmKQogCSAgICBmcHV0c19m aWx0ZXJlZCAoIjogIiwgc3RyZWFtKTsKIAl9CiAgICAgICAvKiBEZS1yZWZl cmVuY2UgdGhlIHJlZmVyZW5jZS4gICovCi0gICAgICBpZiAoZGVyZWZfcmVm KQorICAgICAgaWYgKG9wdGlvbnMtPmRlcmVmX3JlZikKIAl7CiAJICBpZiAo VFlQRV9DT0RFIChlbHR0eXBlKSAhPSBUWVBFX0NPREVfVU5ERUYpCiAJICAg IHsKQEAgLTQxOCw4ICs0MTYsOCBAQCBtMl92YWxfcHJpbnQgKHN0cnVjdCB0 eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwgaW50IGVtYmVk ZGVkX29mZnNldCwKIAkJdmFsdWVfYXQKIAkJKFRZUEVfVEFSR0VUX1RZUEUg KHR5cGUpLAogCQkgdW5wYWNrX3BvaW50ZXIgKHR5cGUsIHZhbGFkZHIgKyBl bWJlZGRlZF9vZmZzZXQpKTsKLQkgICAgICBjb21tb25fdmFsX3ByaW50IChk ZXJlZl92YWwsIHN0cmVhbSwgZm9ybWF0LCBkZXJlZl9yZWYsCi0JCQkJcmVj dXJzZSwgcHJldHR5LCBjdXJyZW50X2xhbmd1YWdlKTsKKwkgICAgICBjb21t b25fdmFsX3ByaW50IChkZXJlZl92YWwsIHN0cmVhbSwgcmVjdXJzZSwgb3B0 aW9ucywKKwkJCQljdXJyZW50X2xhbmd1YWdlKTsKIAkgICAgfQogCSAgZWxz ZQogCSAgICBmcHV0c19maWx0ZXJlZCAoIj8/PyIsIHN0cmVhbSk7CkBAIC00 MjcsNyArNDI1LDcgQEAgbTJfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlw ZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZz ZXQsCiAgICAgICBicmVhazsKIAogICAgIGNhc2UgVFlQRV9DT0RFX1VOSU9O OgotICAgICAgaWYgKHJlY3Vyc2UgJiYgIXVuaW9ucHJpbnQpCisgICAgICBp ZiAocmVjdXJzZSAmJiAhb3B0aW9ucy0+dW5pb25wcmludCkKIAl7CiAJICBm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ7Li4ufSIpOwogCSAgYnJlYWs7 CkBAIC00MzYsMjIgKzQzNCwyMCBAQCBtMl92YWxfcHJpbnQgKHN0cnVjdCB0 eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwgaW50IGVtYmVk ZGVkX29mZnNldCwKICAgICBjYXNlIFRZUEVfQ09ERV9TVFJVQ1Q6CiAgICAg ICBpZiAobTJfaXNfbG9uZ19zZXQgKHR5cGUpKQogCW0yX3ByaW50X2xvbmdf c2V0ICh0eXBlLCB2YWxhZGRyLCBlbWJlZGRlZF9vZmZzZXQsIGFkZHJlc3Ms Ci0JCQkgICBzdHJlYW0sIGZvcm1hdCwgcHJldHR5KTsKKwkJCSAgIHN0cmVh bSk7CiAgICAgICBlbHNlIGlmIChtMl9pc191bmJvdW5kZWRfYXJyYXkgKHR5 cGUpKQogCW0yX3ByaW50X3VuYm91bmRlZF9hcnJheSAodHlwZSwgdmFsYWRk ciwgZW1iZWRkZWRfb2Zmc2V0LAotCQkJCSAgYWRkcmVzcywgc3RyZWFtLCBm b3JtYXQsIGRlcmVmX3JlZiwKLQkJCQkgIHByZXR0eSwgcmVjdXJzZSk7CisJ CQkJICBhZGRyZXNzLCBzdHJlYW0sIHJlY3Vyc2UsIG9wdGlvbnMpOwogICAg ICAgZWxzZQogCWNwX3ByaW50X3ZhbHVlX2ZpZWxkcyAodHlwZSwgdHlwZSwg dmFsYWRkciwgZW1iZWRkZWRfb2Zmc2V0LAotCQkJICAgICAgIGFkZHJlc3Ms IHN0cmVhbSwgZm9ybWF0LAotCQkJICAgICAgIHJlY3Vyc2UsIHByZXR0eSwg TlVMTCwgMCk7CisJCQkgICAgICAgYWRkcmVzcywgc3RyZWFtLCByZWN1cnNl LCBvcHRpb25zLCBOVUxMLCAwKTsKICAgICAgIGJyZWFrOwogCiAgICAgY2Fz ZSBUWVBFX0NPREVfRU5VTToKLSAgICAgIGlmIChmb3JtYXQpCisgICAgICBp ZiAob3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCkKIAl7CiAJICBwcmludF9zY2Fs YXJfZm9ybWF0dGVkICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCB0eXBl LAotCQkJCSAgZm9ybWF0LCAwLCBzdHJlYW0pOworCQkJCSAgb3B0aW9ucy0+ b3V0cHV0X2Zvcm1hdCwgMCwgc3RyZWFtKTsKIAkgIGJyZWFrOwogCX0KICAg ICAgIGxlbiA9IFRZUEVfTkZJRUxEUyAodHlwZSk7CkBAIC00NzUsMTAgKzQ3 MSwxMCBAQCBtMl92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25z dCBnZGJfYnl0ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwKICAg ICAgIGJyZWFrOwogCiAgICAgY2FzZSBUWVBFX0NPREVfRlVOQzoKLSAgICAg IGlmIChmb3JtYXQpCisgICAgICBpZiAob3B0aW9ucy0+b3V0cHV0X2Zvcm1h dCkKIAl7CiAJICBwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyICsg ZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLAotCQkJCSAgZm9ybWF0LCAwLCBzdHJl YW0pOworCQkJCSAgb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCwgMCwgc3RyZWFt KTsKIAkgIGJyZWFrOwogCX0KICAgICAgIC8qIEZJWE1FLCB3ZSBzaG91bGQg Y29uc2lkZXIsIGF0IGxlYXN0IGZvciBBTlNJIEMgbGFuZ3VhZ2UsIGVsaW1p bmF0aW5nCkBAIC00OTEsMTAgKzQ4Nyw5IEBAIG0yX3ZhbF9wcmludCAoc3Ry dWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQg ZW1iZWRkZWRfb2Zmc2V0LAogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRZ UEVfQ09ERV9CT09MOgotICAgICAgZm9ybWF0ID0gZm9ybWF0ID8gZm9ybWF0 IDogb3V0cHV0X2Zvcm1hdDsKLSAgICAgIGlmIChmb3JtYXQpCisgICAgICBp ZiAob3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCkKIAlwcmludF9zY2FsYXJfZm9y bWF0dGVkICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLAotCQkJ CWZvcm1hdCwgMCwgc3RyZWFtKTsKKwkJCQlvcHRpb25zLT5vdXRwdXRfZm9y bWF0LCAwLCBzdHJlYW0pOwogICAgICAgZWxzZQogCXsKIAkgIHZhbCA9IHVu cGFja19sb25nICh0eXBlLCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0KTsK QEAgLTUxMSw3ICs1MDYsNyBAQCBtMl92YWxfcHJpbnQgKHN0cnVjdCB0eXBl ICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVk X29mZnNldCwKICAgICAgIGlmIChUWVBFX0xFTkdUSCAodHlwZSkgPT0gVFlQ RV9MRU5HVEggKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSkKIAl7CiAJICBt Ml92YWxfcHJpbnQgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCB2YWxhZGRy LCBlbWJlZGRlZF9vZmZzZXQsCi0JCQlhZGRyZXNzLCBzdHJlYW0sIGZvcm1h dCwgZGVyZWZfcmVmLCByZWN1cnNlLCBwcmV0dHkpOworCQkJYWRkcmVzcywg c3RyZWFtLCByZWN1cnNlLCBvcHRpb25zKTsKIAkgIGJyZWFrOwogCX0KICAg ICAgIC8qIEZJWE1FOiBjcmVhdGVfcmFuZ2VfdHlwZSBkb2VzIG5vdCBzZXQg dGhlIHVuc2lnbmVkIGJpdCBpbiBhCkBAIC01MjQsMTkgKzUxOSwxNyBAQCBt Ml92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0 ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwKICAgICAgIC8qIEZB TExUSFJPVUdIICovCiAKICAgICBjYXNlIFRZUEVfQ09ERV9JTlQ6Ci0gICAg ICBmb3JtYXQgPSBmb3JtYXQgPyBmb3JtYXQgOiBvdXRwdXRfZm9ybWF0Owot ICAgICAgaWYgKGZvcm1hdCkKLQlwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2 YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLCBmb3JtYXQsCi0JCQkJ MCwgc3RyZWFtKTsKKyAgICAgIGlmIChvcHRpb25zLT5vdXRwdXRfZm9ybWF0 KQorCXByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIgKyBlbWJlZGRl ZF9vZmZzZXQsIHR5cGUsCisJCQkJb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCwg MCwgc3RyZWFtKTsKICAgICAgIGVsc2UKIAl2YWxfcHJpbnRfdHlwZV9jb2Rl X2ludCAodHlwZSwgdmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwgc3RyZWFt KTsKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUWVBFX0NPREVfQ0hBUjoK LSAgICAgIGZvcm1hdCA9IGZvcm1hdCA/IGZvcm1hdCA6IG91dHB1dF9mb3Jt YXQ7Ci0gICAgICBpZiAoZm9ybWF0KQorICAgICAgaWYgKG9wdGlvbnMtPm91 dHB1dF9mb3JtYXQpCiAJcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAodmFsYWRk ciArIGVtYmVkZGVkX29mZnNldCwgdHlwZSwKLQkJCQlmb3JtYXQsIDAsIHN0 cmVhbSk7CisJCQkJb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCwgMCwgc3RyZWFt KTsKICAgICAgIGVsc2UKIAl7CiAJICB2YWwgPSB1bnBhY2tfbG9uZyAodHlw ZSwgdmFsYWRkciArIGVtYmVkZGVkX29mZnNldCk7CkBAIC01NTAsOSArNTQz LDkgQEAgbTJfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3Qg Z2RiX2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZzZXQsCiAgICAg ICBicmVhazsKIAogICAgIGNhc2UgVFlQRV9DT0RFX0ZMVDoKLSAgICAgIGlm IChmb3JtYXQpCisgICAgICBpZiAob3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCkK IAlwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyICsgZW1iZWRkZWRf b2Zmc2V0LCB0eXBlLAotCQkJCWZvcm1hdCwgMCwgc3RyZWFtKTsKKwkJCQlv cHRpb25zLT5vdXRwdXRfZm9ybWF0LCAwLCBzdHJlYW0pOwogICAgICAgZWxz ZQogCXByaW50X2Zsb2F0aW5nICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0 LCB0eXBlLCBzdHJlYW0pOwogICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9n ZGIvbWkvbWktY21kLXN0YWNrLmMgYi9nZGIvbWkvbWktY21kLXN0YWNrLmMK aW5kZXggYmFmOWI2ZC4uOWM1NWI0YiAxMDA2NDQKLS0tIGEvZ2RiL21pL21p LWNtZC1zdGFjay5jCisrKyBiL2dkYi9taS9taS1jbWQtc3RhY2suYwpAQCAt MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImRpY3Rpb25hcnkuaCIKICNpbmNs dWRlICJnZGJfc3RyaW5nLmgiCiAjaW5jbHVkZSAibGFuZ3VhZ2UuaCIKKyNp bmNsdWRlICJ2YWxwcmludC5oIgogCiBzdGF0aWMgdm9pZCBsaXN0X2FyZ3Nf b3JfbG9jYWxzIChpbnQgbG9jYWxzLCBpbnQgdmFsdWVzLCBzdHJ1Y3QgZnJh bWVfaW5mbyAqZmkpOwogCkBAIC0yODAsMjEgKzI4MSwyNyBAQCBsaXN0X2Fy Z3Nfb3JfbG9jYWxzIChpbnQgbG9jYWxzLCBpbnQgdmFsdWVzLCBzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZmkpCiAJCSAgICAgICYmIFRZUEVfQ09ERSAodHlwZSkg IT0gVFlQRV9DT0RFX1NUUlVDVAogCQkgICAgICAmJiBUWVBFX0NPREUgKHR5 cGUpICE9IFRZUEVfQ09ERV9VTklPTikKIAkJICAgIHsKKwkJICAgICAgc3Ry dWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsKIAkJICAgICAgdmFsID0g cmVhZF92YXJfdmFsdWUgKHN5bTIsIGZpKTsKKwkJICAgICAgZ2V0X3Jhd19w cmludF9vcHRpb25zICgmb3B0cyk7CiAJCSAgICAgIGNvbW1vbl92YWxfcHJp bnQKLQkJCSh2YWwsIHN0Yi0+c3RyZWFtLCAwLCAxLCAwLCBWYWxfbm9fcHJl dHR5cHJpbnQsCisJCQkodmFsLCBzdGItPnN0cmVhbSwgMCwgJm9wdHMsCiAJ CQkgbGFuZ3VhZ2VfZGVmIChTWU1CT0xfTEFOR1VBR0UgKHN5bTIpKSk7CiAJ CSAgICAgIHVpX291dF9maWVsZF9zdHJlYW0gKHVpb3V0LCAidmFsdWUiLCBz dGIpOwogCQkgICAgfQogCQkgIGRvX2NsZWFudXBzIChjbGVhbnVwX3R1cGxl KTsKIAkJICBicmVhazsKIAkJY2FzZSBQUklOVF9BTExfVkFMVUVTOgotCQkg IHZhbCA9IHJlYWRfdmFyX3ZhbHVlIChzeW0yLCBmaSk7Ci0JCSAgY29tbW9u X3ZhbF9wcmludAotCQkgICAgKHZhbCwgc3RiLT5zdHJlYW0sIDAsIDEsIDAs IFZhbF9ub19wcmV0dHlwcmludCwKLQkJICAgICBsYW5ndWFnZV9kZWYgKFNZ TUJPTF9MQU5HVUFHRSAoc3ltMikpKTsKLQkJICB1aV9vdXRfZmllbGRfc3Ry ZWFtICh1aW91dCwgInZhbHVlIiwgc3RiKTsKLQkJICBkb19jbGVhbnVwcyAo Y2xlYW51cF90dXBsZSk7CisJCSAgeworCQkgICAgc3RydWN0IHZhbHVlX3By aW50X29wdGlvbnMgb3B0czsKKwkJICAgIHZhbCA9IHJlYWRfdmFyX3ZhbHVl IChzeW0yLCBmaSk7CisJCSAgICBnZXRfcmF3X3ByaW50X29wdGlvbnMgKCZv cHRzKTsKKwkJICAgIGNvbW1vbl92YWxfcHJpbnQKKwkJICAgICAgKHZhbCwg c3RiLT5zdHJlYW0sIDAsICZvcHRzLAorCQkgICAgICAgbGFuZ3VhZ2VfZGVm IChTWU1CT0xfTEFOR1VBR0UgKHN5bTIpKSk7CisJCSAgICB1aV9vdXRfZmll bGRfc3RyZWFtICh1aW91dCwgInZhbHVlIiwgc3RiKTsKKwkJICAgIGRvX2Ns ZWFudXBzIChjbGVhbnVwX3R1cGxlKTsKKwkJICB9CiAJCSAgYnJlYWs7CiAJ CX0KIAkgICAgfQpkaWZmIC0tZ2l0IGEvZ2RiL21pL21pLW1haW4uYyBiL2dk Yi9taS9taS1tYWluLmMKaW5kZXggNzc4MDIwNy4uNGZkYmRiNSAxMDA2NDQK LS0tIGEvZ2RiL21pL21pLW1haW4uYworKysgYi9nZGIvbWkvbWktbWFpbi5j CkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiZnJhbWUuaCIKICNpbmNs dWRlICJtaS1tYWluLmgiCiAjaW5jbHVkZSAibGFuZ3VhZ2UuaCIKKyNpbmNs dWRlICJ2YWxwcmludC5oIgogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KICNpbmNs dWRlIDxzeXMvdGltZS5oPgpAQCAtNTAwLDggKzUwMSw3IEBAIGdldF9yZWdp c3RlciAoaW50IHJlZ251bSwgaW50IGZvcm1hdCkKICAgZWxzZQogICAgIHsK ICAgICAgIHZhbF9wcmludCAocmVnaXN0ZXJfdHlwZSAoY3VycmVudF9nZGJh cmNoLCByZWdudW0pLCBidWZmZXIsIDAsIDAsCi0JCSBzdGItPnN0cmVhbSwg Zm9ybWF0LCAxLCAwLCBWYWxfcHJldHR5X2RlZmF1bHQsCi0JCSBjdXJyZW50 X2xhbmd1YWdlKTsKKwkJIHN0Yi0+c3RyZWFtLCAwLCAmdXNlcl9wcmludF9v cHRpb25zLCBjdXJyZW50X2xhbmd1YWdlKTsKICAgICAgIHVpX291dF9maWVs ZF9zdHJlYW0gKHVpb3V0LCAidmFsdWUiLCBzdGIpOwogICAgICAgdWlfb3V0 X3N0cmVhbV9kZWxldGUgKHN0Yik7CiAgICAgfQpAQCAtNTg4LDcgKzU4OCw3 IEBAIG1pX2NtZF9kYXRhX2V2YWx1YXRlX2V4cHJlc3Npb24gKGNoYXIgKmNv bW1hbmQsIGNoYXIgKiphcmd2LCBpbnQgYXJnYykKICAgLyogUHJpbnQgdGhl IHJlc3VsdCBvZiB0aGUgZXhwcmVzc2lvbiBldmFsdWF0aW9uLiAgKi8KICAg dmFsX3ByaW50ICh2YWx1ZV90eXBlICh2YWwpLCB2YWx1ZV9jb250ZW50cyAo dmFsKSwKIAkgICAgIHZhbHVlX2VtYmVkZGVkX29mZnNldCAodmFsKSwgVkFM VUVfQUREUkVTUyAodmFsKSwKLQkgICAgIHN0Yi0+c3RyZWFtLCAwLCAwLCAw LCAwLCBjdXJyZW50X2xhbmd1YWdlKTsKKwkgICAgIHN0Yi0+c3RyZWFtLCAw LCAmdXNlcl9wcmludF9vcHRpb25zLCBjdXJyZW50X2xhbmd1YWdlKTsKIAog ICB1aV9vdXRfZmllbGRfc3RyZWFtICh1aW91dCwgInZhbHVlIiwgc3RiKTsK ICAgdWlfb3V0X3N0cmVhbV9kZWxldGUgKHN0Yik7CmRpZmYgLS1naXQgYS9n ZGIvbXQtdGRlcC5jIGIvZ2RiL210LXRkZXAuYwppbmRleCBkYTRhZmUzLi5h ZTZmMzgyIDEwMDY0NAotLS0gYS9nZGIvbXQtdGRlcC5jCisrKyBiL2dkYi9t dC10ZGVwLmMKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJpbmZjYWxs LmgiCiAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgogI2luY2x1ZGUgImxhbmd1 YWdlLmgiCisjaW5jbHVkZSAidmFscHJpbnQuaCIKIAogZW51bSBtdF9hcmNo X2NvbnN0YW50cwogewpAQCAtNjc1LDYgKzY3Niw3IEBAIG10X3JlZ2lzdGVy c19pbmZvIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKIAl7CiAJICAvKiBT cGVjaWFsIG91dHB1dCBoYW5kbGluZyBmb3IgdGhlICdjb3Byb2Nlc3Nvcicg cmVnaXN0ZXIuICAqLwogCSAgZ2RiX2J5dGUgKmJ1ZjsKKwkgIHN0cnVjdCB2 YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7CiAKIAkgIGJ1ZiA9IGFsbG9jYSAo cmVnaXN0ZXJfc2l6ZSAoZ2RiYXJjaCwgTVRfQ09QUk9fUkVHTlVNKSk7CiAJ ICBmcmFtZV9yZWdpc3Rlcl9yZWFkIChmcmFtZSwgTVRfQ09QUk9fUkVHTlVN LCBidWYpOwpAQCAtNjg1LDggKzY4Nyw5IEBAIG10X3JlZ2lzdGVyc19pbmZv IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKIAkgIHByaW50X3NwYWNlc19m aWx0ZXJlZCAoMTUgLSBzdHJsZW4gKGdkYmFyY2hfcmVnaXN0ZXJfbmFtZQog CQkJCQkgICAgICAgIChnZGJhcmNoLCByZWdudW0pKSwKIAkJCQkgZmlsZSk7 CisJICBnZXRfcmF3X3ByaW50X29wdGlvbnMgKCZvcHRzKTsKIAkgIHZhbF9w cmludCAocmVnaXN0ZXJfdHlwZSAoZ2RiYXJjaCwgcmVnbnVtKSwgYnVmLAot CQkgICAgIDAsIDAsIGZpbGUsIDAsIDEsIDAsIFZhbF9ub19wcmV0dHlwcmlu dCwKKwkJICAgICAwLCAwLCBmaWxlLCAwLCAmb3B0cywKIAkJICAgICBjdXJy ZW50X2xhbmd1YWdlKTsKIAkgIGZwdXRzX2ZpbHRlcmVkICgiXG4iLCBmaWxl KTsKIAl9CmRpZmYgLS1naXQgYS9nZGIvb2JqYy1sYW5nLmMgYi9nZGIvb2Jq Yy1sYW5nLmMKaW5kZXggN2QyODdhMC4uM2E5NTJmNSAxMDA2NDQKLS0tIGEv Z2RiL29iamMtbGFuZy5jCisrKyBiL2dkYi9vYmpjLWxhbmcuYwpAQCAtMzQx LDcgKzM0MSw4IEBAIG9iamNfcHJpbnRjaGFyIChpbnQgYywgc3RydWN0IHVp X2ZpbGUgKnN0cmVhbSkKIAogc3RhdGljIHZvaWQKIG9iamNfcHJpbnRzdHIg KHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGNvbnN0IGdkYl9ieXRlICpzdHJp bmcsIAotCSAgICAgICB1bnNpZ25lZCBpbnQgbGVuZ3RoLCBpbnQgd2lkdGgs IGludCBmb3JjZV9lbGxpcHNlcykKKwkgICAgICAgdW5zaWduZWQgaW50IGxl bmd0aCwgaW50IHdpZHRoLCBpbnQgZm9yY2VfZWxsaXBzZXMsCisJICAgICAg IGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQog ewogICB1bnNpZ25lZCBpbnQgaTsKICAgdW5zaWduZWQgaW50IHRoaW5nc19w cmludGVkID0gMDsKQEAgLTM2MCw3ICszNjEsNyBAQCBvYmpjX3ByaW50c3Ry IChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBjb25zdCBnZGJfYnl0ZSAqc3Ry aW5nLAogICAgICAgcmV0dXJuOwogICAgIH0KIAotICBmb3IgKGkgPSAwOyBp IDwgbGVuZ3RoICYmIHRoaW5nc19wcmludGVkIDwgcHJpbnRfbWF4OyArK2kp CisgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGggJiYgdGhpbmdzX3ByaW50ZWQg PCBvcHRpb25zLT5wcmludF9tYXg7ICsraSkKICAgICB7CiAgICAgICAvKiBQ b3NpdGlvbiBvZiB0aGUgY2hhcmFjdGVyIHdlIGFyZSBleGFtaW5pbmcgdG8g c2VlIHdoZXRoZXIgaXQKIAkgaXMgcmVwZWF0ZWQuICAqLwpAQCAtMzg0LDEx ICszODUsMTEgQEAgb2JqY19wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0 cmVhbSwgY29uc3QgZ2RiX2J5dGUgKnN0cmluZywKIAkgICsrcmVwczsKIAl9 CiAKLSAgICAgIGlmIChyZXBzID4gcmVwZWF0X2NvdW50X3RocmVzaG9sZCkK KyAgICAgIGlmIChyZXBzID4gb3B0aW9ucy0+cmVwZWF0X2NvdW50X3RocmVz aG9sZCkKIAl7CiAJICBpZiAoaW5fcXVvdGVzKQogCSAgICB7Ci0JICAgICAg aWYgKGluc3BlY3RfaXQpCisJICAgICAgaWYgKG9wdGlvbnMtPmluc3BlY3Rf aXQpCiAJCWZwdXRzX2ZpbHRlcmVkICgiXFxcIiwgIiwgc3RyZWFtKTsKIAkg ICAgICBlbHNlCiAJCWZwdXRzX2ZpbHRlcmVkICgiXCIsICIsIHN0cmVhbSk7 CkBAIC0zOTcsMTQgKzM5OCwxNCBAQCBvYmpjX3ByaW50c3RyIChzdHJ1Y3Qg dWlfZmlsZSAqc3RyZWFtLCBjb25zdCBnZGJfYnl0ZSAqc3RyaW5nLAogCSAg b2JqY19wcmludGNoYXIgKHN0cmluZ1tpXSwgc3RyZWFtKTsKIAkgIGZwcmlu dGZfZmlsdGVyZWQgKHN0cmVhbSwgIiA8cmVwZWF0cyAldSB0aW1lcz4iLCBy ZXBzKTsKIAkgIGkgPSByZXAxIC0gMTsKLQkgIHRoaW5nc19wcmludGVkICs9 IHJlcGVhdF9jb3VudF90aHJlc2hvbGQ7CisJICB0aGluZ3NfcHJpbnRlZCAr PSBvcHRpb25zLT5yZXBlYXRfY291bnRfdGhyZXNob2xkOwogCSAgbmVlZF9j b21tYSA9IDE7CiAJfQogICAgICAgZWxzZQogCXsKIAkgIGlmICghaW5fcXVv dGVzKQogCSAgICB7Ci0JICAgICAgaWYgKGluc3BlY3RfaXQpCisJICAgICAg aWYgKG9wdGlvbnMtPmluc3BlY3RfaXQpCiAJCWZwdXRzX2ZpbHRlcmVkICgi XFxcIiIsIHN0cmVhbSk7CiAJICAgICAgZWxzZQogCQlmcHV0c19maWx0ZXJl ZCAoIlwiIiwgc3RyZWFtKTsKQEAgLTQxOCw3ICs0MTksNyBAQCBvYmpjX3By aW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBjb25zdCBnZGJfYnl0 ZSAqc3RyaW5nLAogICAvKiBUZXJtaW5hdGUgdGhlIHF1b3RlcyBpZiBuZWNl c3NhcnkuICAqLwogICBpZiAoaW5fcXVvdGVzKQogICAgIHsKLSAgICAgIGlm IChpbnNwZWN0X2l0KQorICAgICAgaWYgKG9wdGlvbnMtPmluc3BlY3RfaXQp CiAJZnB1dHNfZmlsdGVyZWQgKCJcXFwiIiwgc3RyZWFtKTsKICAgICAgIGVs c2UKIAlmcHV0c19maWx0ZXJlZCAoIlwiIiwgc3RyZWFtKTsKZGlmZiAtLWdp dCBhL2dkYi9wLWxhbmcuYyBiL2dkYi9wLWxhbmcuYwppbmRleCA3ZWNkZDhk Li5jZDQyODVkIDEwMDY0NAotLS0gYS9nZGIvcC1sYW5nLmMKKysrIGIvZ2Ri L3AtbGFuZy5jCkBAIC0yMDcsNyArMjA3LDggQEAgcGFzY2FsX3ByaW50Y2hh ciAoaW50IGMsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCiAKIHZvaWQKIHBh c2NhbF9wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgY29uc3Qg Z2RiX2J5dGUgKnN0cmluZywKLQkJIHVuc2lnbmVkIGludCBsZW5ndGgsIGlu dCB3aWR0aCwgaW50IGZvcmNlX2VsbGlwc2VzKQorCQkgdW5zaWduZWQgaW50 IGxlbmd0aCwgaW50IHdpZHRoLCBpbnQgZm9yY2VfZWxsaXBzZXMsCisJCSBj b25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKIHsK ICAgdW5zaWduZWQgaW50IGk7CiAgIHVuc2lnbmVkIGludCB0aGluZ3NfcHJp bnRlZCA9IDA7CkBAIC0yMjYsNyArMjI3LDcgQEAgcGFzY2FsX3ByaW50c3Ry IChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBjb25zdCBnZGJfYnl0ZSAqc3Ry aW5nLAogICAgICAgcmV0dXJuOwogICAgIH0KIAotICBmb3IgKGkgPSAwOyBp IDwgbGVuZ3RoICYmIHRoaW5nc19wcmludGVkIDwgcHJpbnRfbWF4OyArK2kp CisgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGggJiYgdGhpbmdzX3ByaW50ZWQg PCBvcHRpb25zLT5wcmludF9tYXg7ICsraSkKICAgICB7CiAgICAgICAvKiBQ b3NpdGlvbiBvZiB0aGUgY2hhcmFjdGVyIHdlIGFyZSBleGFtaW5pbmcKICAg ICAgICAgIHRvIHNlZSB3aGV0aGVyIGl0IGlzIHJlcGVhdGVkLiAgKi8KQEAg LTI1MCwxMSArMjUxLDExIEBAIHBhc2NhbF9wcmludHN0ciAoc3RydWN0IHVp X2ZpbGUgKnN0cmVhbSwgY29uc3QgZ2RiX2J5dGUgKnN0cmluZywKIAkgICsr cmVwczsKIAl9CiAKLSAgICAgIGlmIChyZXBzID4gcmVwZWF0X2NvdW50X3Ro cmVzaG9sZCkKKyAgICAgIGlmIChyZXBzID4gb3B0aW9ucy0+cmVwZWF0X2Nv dW50X3RocmVzaG9sZCkKIAl7CiAJICBpZiAoaW5fcXVvdGVzKQogCSAgICB7 Ci0JICAgICAgaWYgKGluc3BlY3RfaXQpCisJICAgICAgaWYgKG9wdGlvbnMt Pmluc3BlY3RfaXQpCiAJCWZwdXRzX2ZpbHRlcmVkICgiXFwnLCAiLCBzdHJl YW0pOwogCSAgICAgIGVsc2UKIAkJZnB1dHNfZmlsdGVyZWQgKCInLCAiLCBz dHJlYW0pOwpAQCAtMjYzLDcgKzI2NCw3IEBAIHBhc2NhbF9wcmludHN0ciAo c3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgY29uc3QgZ2RiX2J5dGUgKnN0cmlu ZywKIAkgIHBhc2NhbF9wcmludGNoYXIgKHN0cmluZ1tpXSwgc3RyZWFtKTsK IAkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiA8cmVwZWF0cyAldSB0 aW1lcz4iLCByZXBzKTsKIAkgIGkgPSByZXAxIC0gMTsKLQkgIHRoaW5nc19w cmludGVkICs9IHJlcGVhdF9jb3VudF90aHJlc2hvbGQ7CisJICB0aGluZ3Nf cHJpbnRlZCArPSBvcHRpb25zLT5yZXBlYXRfY291bnRfdGhyZXNob2xkOwog CSAgbmVlZF9jb21tYSA9IDE7CiAJfQogICAgICAgZWxzZQpAQCAtMjcxLDcg KzI3Miw3IEBAIHBhc2NhbF9wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0 cmVhbSwgY29uc3QgZ2RiX2J5dGUgKnN0cmluZywKIAkgIGludCBjID0gc3Ry aW5nW2ldOwogCSAgaWYgKCghaW5fcXVvdGVzKSAmJiAoUFJJTlRfTElURVJB TF9GT1JNIChjKSkpCiAJICAgIHsKLQkgICAgICBpZiAoaW5zcGVjdF9pdCkK KwkgICAgICBpZiAob3B0aW9ucy0+aW5zcGVjdF9pdCkKIAkJZnB1dHNfZmls dGVyZWQgKCJcXCciLCBzdHJlYW0pOwogCSAgICAgIGVsc2UKIAkJZnB1dHNf ZmlsdGVyZWQgKCInIiwgc3RyZWFtKTsKQEAgLTI4NSw3ICsyODYsNyBAQCBw YXNjYWxfcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGNvbnN0 IGdkYl9ieXRlICpzdHJpbmcsCiAgIC8qIFRlcm1pbmF0ZSB0aGUgcXVvdGVz IGlmIG5lY2Vzc2FyeS4gICovCiAgIGlmIChpbl9xdW90ZXMpCiAgICAgewot ICAgICAgaWYgKGluc3BlY3RfaXQpCisgICAgICBpZiAob3B0aW9ucy0+aW5z cGVjdF9pdCkKIAlmcHV0c19maWx0ZXJlZCAoIlxcJyIsIHN0cmVhbSk7CiAg ICAgICBlbHNlCiAJZnB1dHNfZmlsdGVyZWQgKCInIiwgc3RyZWFtKTsKZGlm ZiAtLWdpdCBhL2dkYi9wLWxhbmcuaCBiL2dkYi9wLWxhbmcuaAppbmRleCBh NGY4NzhmLi40ZWJmYmMxIDEwMDY0NAotLS0gYS9nZGIvcC1sYW5nLmgKKysr IGIvZ2RiL3AtbGFuZy5oCkBAIC0zNSwxMCArMzUsMTEgQEAgZXh0ZXJuIHZv aWQgcGFzY2FsX3ByaW50X3R5cGVkZWYgKHN0cnVjdCB0eXBlICosIHN0cnVj dCBzeW1ib2wgKiwKIAkJCQkgIHN0cnVjdCB1aV9maWxlICopOwogCiBleHRl cm4gaW50IHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICosIGNvbnN0 IGdkYl9ieXRlICosIGludCwKLQkJCSAgICAgQ09SRV9BRERSLCBzdHJ1Y3Qg dWlfZmlsZSAqLCBpbnQsIGludCwKLQkJCSAgICAgaW50LCBlbnVtIHZhbF9w cmV0dHlwcmludCk7CisJCQkgICAgIENPUkVfQUREUiwgc3RydWN0IHVpX2Zp bGUgKiwgaW50LAorCQkJICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRf b3B0aW9ucyAqKTsKIAotZXh0ZXJuIGludCBwYXNjYWxfdmFsdWVfcHJpbnQg KHN0cnVjdCB2YWx1ZSAqLCBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsIGVudW0g dmFsX3ByZXR0eXByaW50KTsKK2V4dGVybiBpbnQgcGFzY2FsX3ZhbHVlX3By aW50IChzdHJ1Y3QgdmFsdWUgKiwgc3RydWN0IHVpX2ZpbGUgKiwKKwkJCSAg ICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKIAog ZXh0ZXJuIHZvaWQgcGFzY2FsX3R5cGVfcHJpbnRfbWV0aG9kX2FyZ3MgKGNo YXIgKiwgY2hhciAqLAogCQkJCQkgICBzdHJ1Y3QgdWlfZmlsZSAqKTsKQEAg LTUxLDcgKzUyLDggQEAgZXh0ZXJuIGludAogZXh0ZXJuIHZvaWQgcGFzY2Fs X3ByaW50Y2hhciAoaW50LCBzdHJ1Y3QgdWlfZmlsZSAqKTsKIAogZXh0ZXJu IHZvaWQgcGFzY2FsX3ByaW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqLCBjb25z dCBnZGJfYnl0ZSAqLAotCQkJICAgICB1bnNpZ25lZCBpbnQsIGludCwgaW50 KTsKKwkJCSAgICAgdW5zaWduZWQgaW50LCBpbnQsIGludCwKKwkJCSAgICAg Y29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKik7CiAKIGV4dGVy biBzdHJ1Y3QgdHlwZSAqKmNvbnN0IChwYXNjYWxfYnVpbHRpbl90eXBlc1td KTsKIApAQCAtNjMsMTUgKzY1LDEwIEBAIGV4dGVybiB2b2lkCiBleHRlcm4g dm9pZAogICBwYXNjYWxfdHlwZV9wcmludF92YXJzcGVjX3ByZWZpeCAoc3Ry dWN0IHR5cGUgKiwgc3RydWN0IHVpX2ZpbGUgKiwgaW50LCBpbnQpOwogCi0v KiBUaGVzZSBhcmUgaW4gY3AtdmFscHJpbnQuYyAqLwotCi1leHRlcm4gaW50 IHZ0YmxwcmludDsJCS8qIENvbnRyb2xzIHByaW50aW5nIG9mIHZ0YmwncyAq LwotCi1leHRlcm4gaW50IHN0YXRpY19maWVsZF9wcmludDsKLQogZXh0ZXJu IHZvaWQgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVj dCB0eXBlICosIGNvbnN0IGdkYl9ieXRlICosCiAJCQkJCSAgICAgIENPUkVf QUREUiwgc3RydWN0IHVpX2ZpbGUgKiwKLQkJCQkJICAgICAgaW50LCBpbnQs IGVudW0gdmFsX3ByZXR0eXByaW50LAorCQkJCQkgICAgICBpbnQsCisJCQkJ CSAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICosCiAJ CQkJCSAgICAgIHN0cnVjdCB0eXBlICoqLCBpbnQpOwogCiBleHRlcm4gaW50 IHBhc2NhbF9vYmplY3RfaXNfdnRibF9wdHJfdHlwZSAoc3RydWN0IHR5cGUg Kik7CmRpZmYgLS1naXQgYS9nZGIvcC12YWxwcmludC5jIGIvZ2RiL3AtdmFs cHJpbnQuYwppbmRleCBiYzRmYmUxLi5lMDc0NDEzIDEwMDY0NAotLS0gYS9n ZGIvcC12YWxwcmludC5jCisrKyBiL2dkYi9wLXZhbHByaW50LmMKQEAgLTU5 LDggKzU5LDggQEAKIGludAogcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5 cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCQkgIGludCBl bWJlZGRlZF9vZmZzZXQsIENPUkVfQUREUiBhZGRyZXNzLAotCQkgIHN0cnVj dCB1aV9maWxlICpzdHJlYW0sIGludCBmb3JtYXQsIGludCBkZXJlZl9yZWYs Ci0JCSAgaW50IHJlY3Vyc2UsIGVudW0gdmFsX3ByZXR0eXByaW50IHByZXR0 eSkKKwkJICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwK KwkJICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9u cykKIHsKICAgdW5zaWduZWQgaW50IGkgPSAwOwkvKiBOdW1iZXIgb2YgY2hh cmFjdGVycyBwcmludGVkICovCiAgIHVuc2lnbmVkIGxlbjsKQEAgLTgwLDcg KzgwLDcgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUs IGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCSAgZWx0dHlwZSA9IGNoZWNr X3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKIAkgIGVsdGxl biA9IFRZUEVfTEVOR1RIIChlbHR0eXBlKTsKIAkgIGxlbiA9IFRZUEVfTEVO R1RIICh0eXBlKSAvIGVsdGxlbjsKLQkgIGlmIChwcmV0dHlwcmludF9hcnJh eXMpCisJICBpZiAob3B0aW9ucy0+cHJldHR5cHJpbnRfYXJyYXlzKQogCSAg ICB7CiAJICAgICAgcHJpbnRfc3BhY2VzX2ZpbHRlcmVkICgyICsgMiAqIHJl Y3Vyc2UsIHN0cmVhbSk7CiAJICAgIH0KQEAgLTg5LDIzICs4OSwyNCBAQCBw YXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2Ri X2J5dGUgKnZhbGFkZHIsCiAJICAgICAgJiYgKChUWVBFX0NPREUgKGVsdHR5 cGUpID09IFRZUEVfQ09ERV9JTlQpCiAJICAgICAgIHx8ICgoY3VycmVudF9s YW5ndWFnZS0+bGFfbGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfcGFzY2FsKQogCQkg ICAmJiAoVFlQRV9DT0RFIChlbHR0eXBlKSA9PSBUWVBFX0NPREVfQ0hBUikp KQotCSAgICAgICYmIChmb3JtYXQgPT0gMCB8fCBmb3JtYXQgPT0gJ3MnKSkK KwkgICAgICAmJiAob3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCA9PSAwIHx8IG9w dGlvbnMtPm91dHB1dF9mb3JtYXQgPT0gJ3MnKSkKIAkgICAgewogCSAgICAg IC8qIElmIHJlcXVlc3RlZCwgbG9vayBmb3IgdGhlIGZpcnN0IG51bGwgY2hh ciBhbmQgb25seSBwcmludAogCSAgICAgICAgIGVsZW1lbnRzIHVwIHRvIGl0 LiAgKi8KLQkgICAgICBpZiAoc3RvcF9wcmludF9hdF9udWxsKQorCSAgICAg IGlmIChvcHRpb25zLT5zdG9wX3ByaW50X2F0X251bGwpCiAJCXsKIAkJICB1 bnNpZ25lZCBpbnQgdGVtcF9sZW47CiAKIAkJICAvKiBMb29rIGZvciBhIE5V TEwgY2hhci4gKi8KIAkJICBmb3IgKHRlbXBfbGVuID0gMDsKIAkJICAgICAg ICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0KVt0ZW1wX2xlbl0KLQkJICAg ICAgICYmIHRlbXBfbGVuIDwgbGVuICYmIHRlbXBfbGVuIDwgcHJpbnRfbWF4 OworCQkgICAgICAgJiYgdGVtcF9sZW4gPCBsZW4gJiYgdGVtcF9sZW4gPCBv cHRpb25zLT5wcmludF9tYXg7CiAJCSAgICAgICB0ZW1wX2xlbisrKTsKIAkJ ICBsZW4gPSB0ZW1wX2xlbjsKIAkJfQogCi0JICAgICAgTEFfUFJJTlRfU1RS SU5HIChzdHJlYW0sIHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIGxlbiwg MSwgMCk7CisJICAgICAgTEFfUFJJTlRfU1RSSU5HIChzdHJlYW0sIHZhbGFk ZHIgKyBlbWJlZGRlZF9vZmZzZXQsIGxlbiwgMSwgMCwKKwkJCSAgICAgICBv cHRpb25zKTsKIAkgICAgICBpID0gbGVuOwogCSAgICB9CiAJICBlbHNlCkBA IC0xMjMsNyArMTI0LDcgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5 cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCQkgIGkgPSAw OwogCQl9CiAJICAgICAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzICh0eXBl LCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCBhZGRyZXNzLCBzdHJlYW0s Ci0JCQkJICAgICBmb3JtYXQsIGRlcmVmX3JlZiwgcmVjdXJzZSwgcHJldHR5 LCBpKTsKKwkJCQkJcmVjdXJzZSwgb3B0aW9ucywgaSk7CiAJICAgICAgZnBy aW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAifSIpOwogCSAgICB9CiAJICBicmVh azsKQEAgLTEzMywxMiArMTM0LDEzIEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0 cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKICAg ICAgIGdvdG8gcHJpbnRfdW5wYWNrZWRfcG9pbnRlcjsKIAogICAgIGNhc2Ug VFlQRV9DT0RFX1BUUjoKLSAgICAgIGlmIChmb3JtYXQgJiYgZm9ybWF0ICE9 ICdzJykKKyAgICAgIGlmIChvcHRpb25zLT5vdXRwdXRfZm9ybWF0ICYmIG9w dGlvbnMtPm91dHB1dF9mb3JtYXQgIT0gJ3MnKQogCXsKLQkgIHByaW50X3Nj YWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5 cGUsIGZvcm1hdCwgMCwgc3RyZWFtKTsKKwkgIHByaW50X3NjYWxhcl9mb3Jt YXR0ZWQgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUsCisJCQkJ ICBvcHRpb25zLT5vdXRwdXRfZm9ybWF0LCAwLCBzdHJlYW0pOwogCSAgYnJl YWs7CiAJfQotICAgICAgaWYgKHZ0YmxwcmludCAmJiBwYXNjYWxfb2JqZWN0 X2lzX3Z0YmxfcHRyX3R5cGUgKHR5cGUpKQorICAgICAgaWYgKG9wdGlvbnMt PnZ0YmxwcmludCAmJiBwYXNjYWxfb2JqZWN0X2lzX3Z0YmxfcHRyX3R5cGUg KHR5cGUpKQogCXsKIAkgIC8qIFByaW50IHRoZSB1bm1hbmdsZWQgbmFtZSBp ZiBkZXNpcmVkLiAgKi8KIAkgIC8qIFByaW50IHZ0YWJsZSBlbnRyeSAtIHdl IG9ubHkgZ2V0IGhlcmUgaWYgd2UgQVJFIHVzaW5nCkBAIC0xNjIsNyArMTY0 LDcgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNv bnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCSAgICAgIHJldHVybiAoMCk7CiAJ ICAgIH0KIAotCSAgaWYgKGFkZHJlc3NwcmludCAmJiBmb3JtYXQgIT0gJ3Mn KQorCSAgaWYgKG9wdGlvbnMtPmFkZHJlc3NwcmludCAmJiBvcHRpb25zLT5v dXRwdXRfZm9ybWF0ICE9ICdzJykKIAkgICAgewogCSAgICAgIGZwdXRzX2Zp bHRlcmVkIChwYWRkcmVzcyAoYWRkciksIHN0cmVhbSk7CiAJICAgIH0KQEAg LTE3MiwxMSArMTc0LDExIEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0 eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIAkgIGlmIChU WVBFX0xFTkdUSCAoZWx0dHlwZSkgPT0gMQogCSAgICAgICYmIChUWVBFX0NP REUgKGVsdHR5cGUpID09IFRZUEVfQ09ERV9JTlQKIAkJICB8fCBUWVBFX0NP REUoZWx0dHlwZSkgPT0gVFlQRV9DT0RFX0NIQVIpCi0JICAgICAgJiYgKGZv cm1hdCA9PSAwIHx8IGZvcm1hdCA9PSAncycpCisJICAgICAgJiYgKG9wdGlv bnMtPm91dHB1dF9mb3JtYXQgPT0gMCB8fCBvcHRpb25zLT5vdXRwdXRfZm9y bWF0ID09ICdzJykKIAkgICAgICAmJiBhZGRyICE9IDApCiAJICAgIHsKIAkg ICAgICAvKiBubyB3aWRlIHN0cmluZyB5ZXQgKi8KLQkgICAgICBpID0gdmFs X3ByaW50X3N0cmluZyAoYWRkciwgLTEsIDEsIHN0cmVhbSk7CisJICAgICAg aSA9IHZhbF9wcmludF9zdHJpbmcgKGFkZHIsIC0xLCAxLCBzdHJlYW0sIG9w dGlvbnMpOwogCSAgICB9CiAJICAvKiBhbHNvIGZvciBwb2ludGVycyB0byBw YXNjYWwgc3RyaW5ncyAqLwogCSAgLyogTm90ZTogdGhpcyBpcyBGcmVlIFBh c2NhbCBzcGVjaWZpYzoKQEAgLTE5Myw3ICsxOTUsNyBAQCBwYXNjYWxfdmFs X3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZh bGFkZHIsCiAgICAgICAgICAgICAgIHJlYWRfbWVtb3J5IChhZGRyICsgbGVu Z3RoX3BvcywgYnVmZmVyLCBsZW5ndGhfc2l6ZSk7CiAJICAgICAgc3RyaW5n X2xlbmd0aCA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAoYnVmZmVyLCBs ZW5ndGhfc2l6ZSk7CiAgICAgICAgICAgICAgIHhmcmVlIChidWZmZXIpOwot ICAgICAgICAgICAgICBpID0gdmFsX3ByaW50X3N0cmluZyAoYWRkciArIHN0 cmluZ19wb3MsIHN0cmluZ19sZW5ndGgsIGNoYXJfc2l6ZSwgc3RyZWFtKTsK KyAgICAgICAgICAgICAgaSA9IHZhbF9wcmludF9zdHJpbmcgKGFkZHIgKyBz dHJpbmdfcG9zLCBzdHJpbmdfbGVuZ3RoLCBjaGFyX3NpemUsIHN0cmVhbSwg b3B0aW9ucyk7CiAJICAgIH0KIAkgIGVsc2UgaWYgKHBhc2NhbF9vYmplY3Rf aXNfdnRibF9tZW1iZXIgKHR5cGUpKQogCSAgICB7CkBAIC0yMDksNyArMjEx LDcgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNv bnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCQkgIGZwdXRzX2ZpbHRlcmVkIChT WU1CT0xfUFJJTlRfTkFNRSAobXN5bWJvbCksIHN0cmVhbSk7CiAJCSAgZnB1 dHNfZmlsdGVyZWQgKCI+Iiwgc3RyZWFtKTsKIAkJfQotCSAgICAgIGlmICh2 dF9hZGRyZXNzICYmIHZ0YmxwcmludCkKKwkgICAgICBpZiAodnRfYWRkcmVz cyAmJiBvcHRpb25zLT52dGJscHJpbnQpCiAJCXsKIAkJICBzdHJ1Y3QgdmFs dWUgKnZ0X3ZhbDsKIAkJICBzdHJ1Y3Qgc3ltYm9sICp3c3ltID0gKHN0cnVj dCBzeW1ib2wgKikgTlVMTDsKQEAgLTIzMCw5ICsyMzIsOSBAQCBwYXNjYWxf dmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUg KnZhbGFkZHIsCiAJCSAgICAgIHd0eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAo dHlwZSk7CiAJCSAgICB9CiAJCSAgdnRfdmFsID0gdmFsdWVfYXQgKHd0eXBl LCB2dF9hZGRyZXNzKTsKLQkJICBjb21tb25fdmFsX3ByaW50ICh2dF92YWws IHN0cmVhbSwgZm9ybWF0LCBkZXJlZl9yZWYsCi0JCQkJICAgIHJlY3Vyc2Ug KyAxLCBwcmV0dHksIGN1cnJlbnRfbGFuZ3VhZ2UpOwotCQkgIGlmIChwcmV0 dHkpCisJCSAgY29tbW9uX3ZhbF9wcmludCAodnRfdmFsLCBzdHJlYW0sIHJl Y3Vyc2UgKyAxLCBvcHRpb25zLAorCQkJCSAgICBjdXJyZW50X2xhbmd1YWdl KTsKKwkJICBpZiAob3B0aW9ucy0+cHJldHR5KQogCQkgICAgewogCQkgICAg ICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJcbiIpOwogCQkgICAgICBw cmludF9zcGFjZXNfZmlsdGVyZWQgKDIgKyAyICogcmVjdXJzZSwgc3RyZWFt KTsKQEAgLTI0OSwxOCArMjUxLDE4IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0 cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIAog ICAgIGNhc2UgVFlQRV9DT0RFX1JFRjoKICAgICAgIGVsdHR5cGUgPSBjaGVj a190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7Ci0gICAgICBp ZiAoYWRkcmVzc3ByaW50KQorICAgICAgaWYgKG9wdGlvbnMtPmFkZHJlc3Nw cmludCkKIAl7CiAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJAIik7 CiAJICAvKiBFeHRyYWN0IHRoZSBhZGRyZXNzLCBhc3N1bWUgdGhhdCBpdCBp cyB1bnNpZ25lZC4gICovCiAJICBmcHV0c19maWx0ZXJlZCAocGFkZHJlc3Mg KAogCSAgICBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKHZhbGFkZHIgKyBl bWJlZGRlZF9vZmZzZXQsCiAJICAgICAgIGdkYmFyY2hfcHRyX2JpdCAoY3Vy cmVudF9nZGJhcmNoKSAvIEhPU1RfQ0hBUl9CSVQpKSwgc3RyZWFtKTsKLQkg IGlmIChkZXJlZl9yZWYpCisJICBpZiAob3B0aW9ucy0+ZGVyZWZfcmVmKQog CSAgICBmcHV0c19maWx0ZXJlZCAoIjogIiwgc3RyZWFtKTsKIAl9CiAgICAg ICAvKiBEZS1yZWZlcmVuY2UgdGhlIHJlZmVyZW5jZS4gICovCi0gICAgICBp ZiAoZGVyZWZfcmVmKQorICAgICAgaWYgKG9wdGlvbnMtPmRlcmVmX3JlZikK IAl7CiAJICBpZiAoVFlQRV9DT0RFIChlbHR0eXBlKSAhPSBUWVBFX0NPREVf VU5ERUYpCiAJICAgIHsKQEAgLTI2OCw4ICsyNzAsOCBAQCBwYXNjYWxfdmFs X3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZh bGFkZHIsCiAJICAgICAgdmFsdWVfYXQKIAkgICAgICAoVFlQRV9UQVJHRVRf VFlQRSAodHlwZSksCiAJICAgICAgIHVucGFja19wb2ludGVyICh0eXBlLCB2 YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0KSk7Ci0JICAgICAgY29tbW9uX3Zh bF9wcmludCAoZGVyZWZfdmFsLCBzdHJlYW0sIGZvcm1hdCwgZGVyZWZfcmVm LAotCQkJCXJlY3Vyc2UgKyAxLCBwcmV0dHksIGN1cnJlbnRfbGFuZ3VhZ2Up OworCSAgICAgIGNvbW1vbl92YWxfcHJpbnQgKGRlcmVmX3ZhbCwgc3RyZWFt LCByZWN1cnNlICsgMSwgb3B0aW9ucywKKwkJCQljdXJyZW50X2xhbmd1YWdl KTsKIAkgICAgfQogCSAgZWxzZQogCSAgICBmcHV0c19maWx0ZXJlZCAoIj8/ PyIsIHN0cmVhbSk7CkBAIC0yNzcsMTQgKzI3OSwxNCBAQCBwYXNjYWxfdmFs X3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZh bGFkZHIsCiAgICAgICBicmVhazsKIAogICAgIGNhc2UgVFlQRV9DT0RFX1VO SU9OOgotICAgICAgaWYgKHJlY3Vyc2UgJiYgIXVuaW9ucHJpbnQpCisgICAg ICBpZiAocmVjdXJzZSAmJiAhb3B0aW9ucy0+dW5pb25wcmludCkKIAl7CiAJ ICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ7Li4ufSIpOwogCSAgYnJl YWs7CiAJfQogICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KICAgICBjYXNl IFRZUEVfQ09ERV9TVFJVQ1Q6Ci0gICAgICBpZiAodnRibHByaW50ICYmIHBh c2NhbF9vYmplY3RfaXNfdnRibF9wdHJfdHlwZSAodHlwZSkpCisgICAgICBp ZiAob3B0aW9ucy0+dnRibHByaW50ICYmIHBhc2NhbF9vYmplY3RfaXNfdnRi bF9wdHJfdHlwZSAodHlwZSkpCiAJewogCSAgLyogUHJpbnQgdGhlIHVubWFu Z2xlZCBuYW1lIGlmIGRlc2lyZWQuICAqLwogCSAgLyogUHJpbnQgdnRhYmxl IGVudHJ5IC0gd2Ugb25seSBnZXQgaGVyZSBpZiBOT1QgdXNpbmcKQEAgLTMw MSwxOCArMzAzLDE5IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBl ICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyaW5nX3BvcywgJmNoYXJf c2l6ZSwgTlVMTCkpCiAJICAgIHsKIAkgICAgICBsZW4gPSBleHRyYWN0X3Vu c2lnbmVkX2ludGVnZXIgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQgKyBs ZW5ndGhfcG9zLCBsZW5ndGhfc2l6ZSk7Ci0JICAgICAgTEFfUFJJTlRfU1RS SU5HIChzdHJlYW0sIHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQgKyBzdHJp bmdfcG9zLCBsZW4sIGNoYXJfc2l6ZSwgMCk7CisJICAgICAgTEFfUFJJTlRf U1RSSU5HIChzdHJlYW0sIHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQgKyBz dHJpbmdfcG9zLCBsZW4sIGNoYXJfc2l6ZSwgMCwgb3B0aW9ucyk7CiAJICAg IH0KIAkgIGVsc2UKLQkgICAgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZV9m aWVsZHMgKHR5cGUsIHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIGFkZHJl c3MsIHN0cmVhbSwgZm9ybWF0LAotCQkJCQkgICAgICByZWN1cnNlLCBwcmV0 dHksIE5VTEwsIDApOworCSAgICBwYXNjYWxfb2JqZWN0X3ByaW50X3ZhbHVl X2ZpZWxkcyAodHlwZSwgdmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwgYWRk cmVzcywgc3RyZWFtLAorCQkJCQkgICAgICByZWN1cnNlLCBvcHRpb25zLCBO VUxMLCAwKTsKIAl9CiAgICAgICBicmVhazsKIAogICAgIGNhc2UgVFlQRV9D T0RFX0VOVU06Ci0gICAgICBpZiAoZm9ybWF0KQorICAgICAgaWYgKG9wdGlv bnMtPm91dHB1dF9mb3JtYXQpCiAJewotCSAgcHJpbnRfc2NhbGFyX2Zvcm1h dHRlZCAodmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwgdHlwZSwgZm9ybWF0 LCAwLCBzdHJlYW0pOworCSAgcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAodmFs YWRkciArIGVtYmVkZGVkX29mZnNldCwgdHlwZSwKKwkJCQkgIG9wdGlvbnMt Pm91dHB1dF9mb3JtYXQsIDAsIHN0cmVhbSk7CiAJICBicmVhazsKIAl9CiAg ICAgICBsZW4gPSBUWVBFX05GSUVMRFMgKHR5cGUpOwpAQCAtMzM2LDE2ICsz MzksMTggQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUs IGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogICAgICAgYnJlYWs7CiAKICAg ICBjYXNlIFRZUEVfQ09ERV9GTEFHUzoKLSAgICAgIGlmIChmb3JtYXQpCi0J ICBwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyICsgZW1iZWRkZWRf b2Zmc2V0LCB0eXBlLCBmb3JtYXQsIDAsIHN0cmVhbSk7CisgICAgICBpZiAo b3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCkKKwkgIHByaW50X3NjYWxhcl9mb3Jt YXR0ZWQgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUsCisJCQkJ ICBvcHRpb25zLT5vdXRwdXRfZm9ybWF0LCAwLCBzdHJlYW0pOwogICAgICAg ZWxzZQogCXZhbF9wcmludF90eXBlX2NvZGVfZmxhZ3MgKHR5cGUsIHZhbGFk ZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHN0cmVhbSk7CiAgICAgICBicmVhazsK IAogICAgIGNhc2UgVFlQRV9DT0RFX0ZVTkM6Ci0gICAgICBpZiAoZm9ybWF0 KQorICAgICAgaWYgKG9wdGlvbnMtPm91dHB1dF9mb3JtYXQpCiAJewotCSAg cHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAodmFsYWRkciArIGVtYmVkZGVkX29m ZnNldCwgdHlwZSwgZm9ybWF0LCAwLCBzdHJlYW0pOworCSAgcHJpbnRfc2Nh bGFyX2Zvcm1hdHRlZCAodmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwgdHlw ZSwKKwkJCQkgIG9wdGlvbnMtPm91dHB1dF9mb3JtYXQsIDAsIHN0cmVhbSk7 CiAJICBicmVhazsKIAl9CiAgICAgICAvKiBGSVhNRSwgd2Ugc2hvdWxkIGNv bnNpZGVyLCBhdCBsZWFzdCBmb3IgQU5TSSBDIGxhbmd1YWdlLCBlbGltaW5h dGluZwpAQCAtMzU4LDkgKzM2Myw5IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0 cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKICAg ICAgIGJyZWFrOwogCiAgICAgY2FzZSBUWVBFX0NPREVfQk9PTDoKLSAgICAg IGZvcm1hdCA9IGZvcm1hdCA/IGZvcm1hdCA6IG91dHB1dF9mb3JtYXQ7Ci0g ICAgICBpZiAoZm9ybWF0KQotCXByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZh bGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUsIGZvcm1hdCwgMCwgc3Ry ZWFtKTsKKyAgICAgIGlmIChvcHRpb25zLT5vdXRwdXRfZm9ybWF0KQorCXBy aW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZz ZXQsIHR5cGUsCisJCQkJb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCwgMCwgc3Ry ZWFtKTsKICAgICAgIGVsc2UKIAl7CiAJICB2YWwgPSB1bnBhY2tfbG9uZyAo dHlwZSwgdmFsYWRkciArIGVtYmVkZGVkX29mZnNldCk7CkBAIC0zODcsMTAg KzM5MiwxMCBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlw ZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgICAgICAvKiBGQUxMVEhS T1VHSCAqLwogCiAgICAgY2FzZSBUWVBFX0NPREVfSU5UOgotICAgICAgZm9y bWF0ID0gZm9ybWF0ID8gZm9ybWF0IDogb3V0cHV0X2Zvcm1hdDsKLSAgICAg IGlmIChmb3JtYXQpCisgICAgICBpZiAob3B0aW9ucy0+b3V0cHV0X2Zvcm1h dCkKIAl7Ci0JICBwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyICsg ZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLCBmb3JtYXQsIDAsIHN0cmVhbSk7CisJ ICBwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyICsgZW1iZWRkZWRf b2Zmc2V0LCB0eXBlLAorCQkJCSAgb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCwg MCwgc3RyZWFtKTsKIAl9CiAgICAgICBlbHNlCiAJewpAQCAtMzk5LDEwICs0 MDQsMTAgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUs IGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogICAgICAgYnJlYWs7CiAKICAg ICBjYXNlIFRZUEVfQ09ERV9DSEFSOgotICAgICAgZm9ybWF0ID0gZm9ybWF0 ID8gZm9ybWF0IDogb3V0cHV0X2Zvcm1hdDsKLSAgICAgIGlmIChmb3JtYXQp CisgICAgICBpZiAob3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCkKIAl7Ci0JICBw cmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zm c2V0LCB0eXBlLCBmb3JtYXQsIDAsIHN0cmVhbSk7CisJICBwcmludF9zY2Fs YXJfZm9ybWF0dGVkICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCB0eXBl LAorCQkJCSAgb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCwgMCwgc3RyZWFtKTsK IAl9CiAgICAgICBlbHNlCiAJewpAQCAtNDE3LDkgKzQyMiwxMCBAQCBwYXNj YWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5 dGUgKnZhbGFkZHIsCiAgICAgICBicmVhazsKIAogICAgIGNhc2UgVFlQRV9D T0RFX0ZMVDoKLSAgICAgIGlmIChmb3JtYXQpCisgICAgICBpZiAob3B0aW9u cy0+b3V0cHV0X2Zvcm1hdCkKIAl7Ci0JICBwcmludF9zY2FsYXJfZm9ybWF0 dGVkICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLCBmb3JtYXQs IDAsIHN0cmVhbSk7CisJICBwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxh ZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLAorCQkJCSAgb3B0aW9ucy0+ b3V0cHV0X2Zvcm1hdCwgMCwgc3RyZWFtKTsKIAl9CiAgICAgICBlbHNlCiAJ ewpAQCAtNTE3LDggKzUyMyw4IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVj dCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIH0KIAwK IGludAotcGFzY2FsX3ZhbHVlX3ByaW50IChzdHJ1Y3QgdmFsdWUgKnZhbCwg c3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IGZvcm1hdCwKLQkJICAgIGVu dW0gdmFsX3ByZXR0eXByaW50IHByZXR0eSkKK3Bhc2NhbF92YWx1ZV9wcmlu dCAoc3RydWN0IHZhbHVlICp2YWwsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0s CisJCSAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0 aW9ucykKIHsKICAgc3RydWN0IHR5cGUgKnR5cGUgPSB2YWx1ZV90eXBlICh2 YWwpOwogCkBAIC01NDcsMTkgKzU1MywxMCBAQCBwYXNjYWxfdmFsdWVfcHJp bnQgKHN0cnVjdCB2YWx1ZSAqdmFsLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFt LCBpbnQgZm9ybWF0LAogCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAi KSAiKTsKIAl9CiAgICAgfQotICByZXR1cm4gY29tbW9uX3ZhbF9wcmludCAo dmFsLCBzdHJlYW0sIGZvcm1hdCwgMSwgMCwgcHJldHR5LAotCQkJICAgY3Vy cmVudF9sYW5ndWFnZSk7CisgIHJldHVybiBjb21tb25fdmFsX3ByaW50ICh2 YWwsIHN0cmVhbSwgMCwgb3B0aW9ucywgY3VycmVudF9sYW5ndWFnZSk7CiB9 CiAKIAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAg ICAgICAgICAgICAgICAgICBJbnNlcnRlZCBmcm9tIGNwLXZhbHByaW50Ci0q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLWV4dGVybiBp bnQgdnRibHByaW50OwkJLyogQ29udHJvbHMgcHJpbnRpbmcgb2YgdnRibCdz ICovCi1leHRlcm4gaW50IG9iamVjdHByaW50OwkJLyogQ29udHJvbHMgbG9v a2luZyB1cCBhbiBvYmplY3QncyBkZXJpdmVkIHR5cGUKLQkJCQkgICB1c2lu ZyB3aGF0IHdlIGZpbmQgaW4gaXRzIHZ0YWJsZXMuICAqLwotc3RhdGljIGlu dCBwYXNjYWxfc3RhdGljX2ZpZWxkX3ByaW50OwkvKiBDb250cm9scyBwcmlu dGluZyBvZiBzdGF0aWMgZmllbGRzLiAqLwogc3RhdGljIHZvaWQKIHNob3df cGFzY2FsX3N0YXRpY19maWVsZF9wcmludCAoc3RydWN0IHVpX2ZpbGUgKmZp bGUsIGludCBmcm9tX3R0eSwKIAkJCQlzdHJ1Y3QgY21kX2xpc3RfZWxlbWVu dCAqYywgY29uc3QgY2hhciAqdmFsdWUpCkBAIC01NzIsMTIgKzU2OSwxMiBA QCBzdGF0aWMgc3RydWN0IG9ic3RhY2sgZG9udF9wcmludF92Yl9vYnN0YWNr Owogc3RhdGljIHN0cnVjdCBvYnN0YWNrIGRvbnRfcHJpbnRfc3RhdG1lbV9v YnN0YWNrOwogCiBzdGF0aWMgdm9pZCBwYXNjYWxfb2JqZWN0X3ByaW50X3N0 YXRpY19maWVsZCAoc3RydWN0IHZhbHVlICosCi0JCQkJCSAgICAgIHN0cnVj dCB1aV9maWxlICosIGludCwgaW50LAotCQkJCQkgICAgICBlbnVtIHZhbF9w cmV0dHlwcmludCk7CisJCQkJCSAgICAgIHN0cnVjdCB1aV9maWxlICosIGlu dCwKKwkJCQkJICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlv bnMgKik7CiAKIHN0YXRpYyB2b2lkIHBhc2NhbF9vYmplY3RfcHJpbnRfdmFs dWUgKHN0cnVjdCB0eXBlICosIGNvbnN0IGdkYl9ieXRlICosCi0JCQkJICAg ICAgIENPUkVfQUREUiwgc3RydWN0IHVpX2ZpbGUgKiwKLQkJCQkgICAgICAg aW50LCBpbnQsIGVudW0gdmFsX3ByZXR0eXByaW50LAorCQkJCSAgICAgICBD T1JFX0FERFIsIHN0cnVjdCB1aV9maWxlICosIGludCwKKwkJCQkgICAgICAg Y29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKiwKIAkJCQkgICAg ICAgc3RydWN0IHR5cGUgKiopOwogCiAvKiBJdCB3YXMgY2hhbmdlZCB0byB0 aGlzIGFmdGVyIDIuNC41LiAgKi8KQEAgLTYzMyw4ICs2MzAsOCBAQCBwYXNj YWxfb2JqZWN0X2lzX3Z0YmxfbWVtYmVyIChzdHJ1Y3QgdHlwZSAqdHlwZSkK IHZvaWQKIHBhc2NhbF9vYmplY3RfcHJpbnRfdmFsdWVfZmllbGRzIChzdHJ1 Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAJCQkJ ICBDT1JFX0FERFIgYWRkcmVzcywgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwK LQkJCQkgIGludCBmb3JtYXQsIGludCByZWN1cnNlLAotCQkJCSAgZW51bSB2 YWxfcHJldHR5cHJpbnQgcHJldHR5LAorCQkJCSAgaW50IHJlY3Vyc2UsCisJ CQkJICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9u cywKIAkJCQkgIHN0cnVjdCB0eXBlICoqZG9udF9wcmludF92YiwKIAkJCQkg IGludCBkb250X3ByaW50X3N0YXRtZW0pCiB7CkBAIC02NTEsNyArNjQ4LDcg QEAgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0 eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKICAgICAgZHVw bGljYXRlcyBvZiB2aXJ0dWFsIGJhc2VjbGFzc2VzLiAgKi8KICAgaWYgKG5f YmFzZWNsYXNzZXMgPiAwKQogICAgIHBhc2NhbF9vYmplY3RfcHJpbnRfdmFs dWUgKHR5cGUsIHZhbGFkZHIsIGFkZHJlc3MsIHN0cmVhbSwKLQkJCSAgICAg ICBmb3JtYXQsIHJlY3Vyc2UgKyAxLCBwcmV0dHksIGRvbnRfcHJpbnRfdmIp OworCQkJICAgICAgIHJlY3Vyc2UgKyAxLCBvcHRpb25zLCBkb250X3ByaW50 X3ZiKTsKIAogICBpZiAoIWxlbiAmJiBuX2Jhc2VjbGFzc2VzID09IDEpCiAg ICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiPE5vIGRhdGEgZmllbGRz PiIpOwpAQCAtNjcxLDE0ICs2NjgsMTQgQEAgcGFzY2FsX29iamVjdF9wcmlu dF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJf Ynl0ZSAqdmFsYWRkciwKICAgICAgIGZvciAoaSA9IG5fYmFzZWNsYXNzZXM7 IGkgPCBsZW47IGkrKykKIAl7CiAJICAvKiBJZiByZXF1ZXN0ZWQsIHNraXAg cHJpbnRpbmcgb2Ygc3RhdGljIGZpZWxkcy4gICovCi0JICBpZiAoIXBhc2Nh bF9zdGF0aWNfZmllbGRfcHJpbnQKKwkgIGlmICghb3B0aW9ucy0+cGFzY2Fs X3N0YXRpY19maWVsZF9wcmludAogCSAgICAgICYmIGZpZWxkX2lzX3N0YXRp YyAoJlRZUEVfRklFTEQgKHR5cGUsIGkpKSkKIAkgICAgY29udGludWU7CiAJ ICBpZiAoZmllbGRzX3NlZW4pCiAJICAgIGZwcmludGZfZmlsdGVyZWQgKHN0 cmVhbSwgIiwgIik7CiAJICBlbHNlIGlmIChuX2Jhc2VjbGFzc2VzID4gMCkK IAkgICAgewotCSAgICAgIGlmIChwcmV0dHkpCisJICAgICAgaWYgKG9wdGlv bnMtPnByZXR0eSkKIAkJewogCQkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVh bSwgIlxuIik7CiAJCSAgcHJpbnRfc3BhY2VzX2ZpbHRlcmVkICgyICsgMiAq IHJlY3Vyc2UsIHN0cmVhbSk7CkBAIC02ODksNyArNjg2LDcgQEAgcGFzY2Fs X29iamVjdF9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eXBl LCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIAkgICAgfQogCSAgZmllbGRz X3NlZW4gPSAxOwogCi0JICBpZiAocHJldHR5KQorCSAgaWYgKG9wdGlvbnMt PnByZXR0eSkKIAkgICAgewogCSAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0 cmVhbSwgIlxuIik7CiAJICAgICAgcHJpbnRfc3BhY2VzX2ZpbHRlcmVkICgy ICsgMiAqIHJlY3Vyc2UsIHN0cmVhbSk7CkBAIC02OTgsNyArNjk1LDcgQEAg cGFzY2FsX29iamVjdF9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBl ICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIAkgICAgewogCSAg ICAgIHdyYXBfaGVyZSAobl9zcGFjZXMgKDIgKyAyICogcmVjdXJzZSkpOwog CSAgICB9Ci0JICBpZiAoaW5zcGVjdF9pdCkKKwkgIGlmIChvcHRpb25zLT5p bnNwZWN0X2l0KQogCSAgICB7CiAJICAgICAgaWYgKFRZUEVfQ09ERSAoVFlQ RV9GSUVMRF9UWVBFICh0eXBlLCBpKSkgPT0gVFlQRV9DT0RFX1BUUikKIAkJ ZnB1dHNfZmlsdGVyZWQgKCJcIiggcHRyIFwiIiwgc3RyZWFtKTsKQEAgLTc0 NSw4ICs3NDIsOCBAQCBwYXNjYWxfb2JqZWN0X3ByaW50X3ZhbHVlX2ZpZWxk cyAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRy LAogCQkgIHYgPSB2YWx1ZV9mcm9tX2xvbmdlc3QgKFRZUEVfRklFTERfVFlQ RSAodHlwZSwgaSksCiAJCQkJICAgdW5wYWNrX2ZpZWxkX2FzX2xvbmcgKHR5 cGUsIHZhbGFkZHIsIGkpKTsKIAotCQkgIGNvbW1vbl92YWxfcHJpbnQgKHYs IHN0cmVhbSwgZm9ybWF0LCAwLCByZWN1cnNlICsgMSwKLQkJCQkgICAgcHJl dHR5LCBjdXJyZW50X2xhbmd1YWdlKTsKKwkJICBjb21tb25fdmFsX3ByaW50 ICh2LCBzdHJlYW0sIHJlY3Vyc2UgKyAxLCBvcHRpb25zLAorCQkJCSAgICBj dXJyZW50X2xhbmd1YWdlKTsKIAkJfQogCSAgICB9CiAJICBlbHNlCkBAIC03 NjUsOCArNzYyLDggQEAgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZV9maWVs ZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRk ciwKIAkJICBpZiAodiA9PSBOVUxMKQogCQkgICAgZnB1dHNfZmlsdGVyZWQg KCI8b3B0aW1pemVkIG91dD4iLCBzdHJlYW0pOwogCQkgIGVsc2UKLQkJICAg IHBhc2NhbF9vYmplY3RfcHJpbnRfc3RhdGljX2ZpZWxkICh2LCBzdHJlYW0s IGZvcm1hdCwKLQkJCQkJCSAgICAgIHJlY3Vyc2UgKyAxLCBwcmV0dHkpOwor CQkgICAgcGFzY2FsX29iamVjdF9wcmludF9zdGF0aWNfZmllbGQgKHYsIHN0 cmVhbSwgcmVjdXJzZSArIDEsCisJCQkJCQkgICAgICBvcHRpb25zKTsKIAkJ fQogCSAgICAgIGVsc2UKIAkJewpAQCAtNzc3LDcgKzc3NCw3IEBAIHBhc2Nh bF9vYmplY3RfcHJpbnRfdmFsdWVfZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHlw ZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAJCSAgdmFsX3ByaW50IChU WVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLAogCQkJICAgICB2YWxhZGRyLCBU WVBFX0ZJRUxEX0JJVFBPUyAodHlwZSwgaSkgLyA4LAogCQkJICAgICBhZGRy ZXNzICsgVFlQRV9GSUVMRF9CSVRQT1MgKHR5cGUsIGkpIC8gOCwKLQkJCSAg ICAgc3RyZWFtLCBmb3JtYXQsIDAsIHJlY3Vyc2UgKyAxLCBwcmV0dHksCisJ CQkgICAgIHN0cmVhbSwgcmVjdXJzZSArIDEsIG9wdGlvbnMsCiAJCQkgICAg IGN1cnJlbnRfbGFuZ3VhZ2UpOwogCQl9CiAJICAgIH0KQEAgLTc5Miw3ICs3 ODksNyBAQCBwYXNjYWxfb2JqZWN0X3ByaW50X3ZhbHVlX2ZpZWxkcyAoc3Ry dWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCSAg ZG9udF9wcmludF9zdGF0bWVtX29ic3RhY2sgPSB0bXBfb2JzdGFjazsKIAl9 CiAKLSAgICAgIGlmIChwcmV0dHkpCisgICAgICBpZiAob3B0aW9ucy0+cHJl dHR5KQogCXsKIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIlxuIik7 CiAJICBwcmludF9zcGFjZXNfZmlsdGVyZWQgKDIgKiByZWN1cnNlLCBzdHJl YW0pOwpAQCAtODA3LDggKzgwNCw4IEBAIHBhc2NhbF9vYmplY3RfcHJpbnRf dmFsdWVfZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5 dGUgKnZhbGFkZHIsCiBzdGF0aWMgdm9pZAogcGFzY2FsX29iamVjdF9wcmlu dF92YWx1ZSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2 YWxhZGRyLAogCQkJICAgQ09SRV9BRERSIGFkZHJlc3MsIHN0cnVjdCB1aV9m aWxlICpzdHJlYW0sCi0JCQkgICBpbnQgZm9ybWF0LCBpbnQgcmVjdXJzZSwK LQkJCSAgIGVudW0gdmFsX3ByZXR0eXByaW50IHByZXR0eSwKKwkJCSAgIGlu dCByZWN1cnNlLAorCQkJICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29w dGlvbnMgKm9wdGlvbnMsCiAJCQkgICBzdHJ1Y3QgdHlwZSAqKmRvbnRfcHJp bnRfdmIpCiB7CiAgIHN0cnVjdCB0eXBlICoqbGFzdF9kb250X3ByaW50CkBA IC04NDksNyArODQ2LDcgQEAgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZSAo c3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAog CiAgICAgICBib2Zmc2V0ID0gYmFzZWNsYXNzX29mZnNldCAodHlwZSwgaSwg dmFsYWRkciwgYWRkcmVzcyk7CiAKLSAgICAgIGlmIChwcmV0dHkpCisgICAg ICBpZiAob3B0aW9ucy0+cHJldHR5KQogCXsKIAkgIGZwcmludGZfZmlsdGVy ZWQgKHN0cmVhbSwgIlxuIik7CiAJICBwcmludF9zcGFjZXNfZmlsdGVyZWQg KDIgKiByZWN1cnNlLCBzdHJlYW0pOwpAQCAtODgxLDcgKzg3OCw3IEBAIHBh c2NhbF9vYmplY3RfcHJpbnRfdmFsdWUgKHN0cnVjdCB0eXBlICp0eXBlLCBj b25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIAlmcHJpbnRmX2ZpbHRlcmVkIChz dHJlYW0sICI8aW52YWxpZCBhZGRyZXNzPiIpOwogICAgICAgZWxzZQogCXBh c2NhbF9vYmplY3RfcHJpbnRfdmFsdWVfZmllbGRzIChiYXNlY2xhc3MsIGJh c2VfdmFsYWRkciwgYWRkcmVzcyArIGJvZmZzZXQsCi0JCQkJCSAgc3RyZWFt LCBmb3JtYXQsIHJlY3Vyc2UsIHByZXR0eSwKKwkJCQkJICBzdHJlYW0sIHJl Y3Vyc2UsIG9wdGlvbnMsCiAJCSAgICAgKHN0cnVjdCB0eXBlICoqKSBvYnN0 YWNrX2Jhc2UgKCZkb250X3ByaW50X3ZiX29ic3RhY2spLAogCQkJCQkgIDAp OwogICAgICAgZnB1dHNfZmlsdGVyZWQgKCIsICIsIHN0cmVhbSk7CkBAIC05 MTIsOCArOTA5LDkgQEAgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZSAoc3Ry dWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCiBz dGF0aWMgdm9pZAogcGFzY2FsX29iamVjdF9wcmludF9zdGF0aWNfZmllbGQg KHN0cnVjdCB2YWx1ZSAqdmFsLAotCQkJCSAgc3RydWN0IHVpX2ZpbGUgKnN0 cmVhbSwgaW50IGZvcm1hdCwKLQkJCQkgIGludCByZWN1cnNlLCBlbnVtIHZh bF9wcmV0dHlwcmludCBwcmV0dHkpCisJCQkJICBzdHJ1Y3QgdWlfZmlsZSAq c3RyZWFtLAorCQkJCSAgaW50IHJlY3Vyc2UsCisJCQkJICBjb25zdCBzdHJ1 Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKIHsKICAgc3RydWN0 IHR5cGUgKnR5cGUgPSB2YWx1ZV90eXBlICh2YWwpOwogCkBAIC05NDIsMTEg Kzk0MCwxMCBAQCBwYXNjYWxfb2JqZWN0X3ByaW50X3N0YXRpY19maWVsZCAo c3RydWN0IHZhbHVlICp2YWwsCiAKICAgICAgIENIRUNLX1RZUEVERUYgKHR5 cGUpOwogICAgICAgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZV9maWVsZHMg KHR5cGUsIHZhbHVlX2NvbnRlbnRzICh2YWwpLCBWQUxVRV9BRERSRVNTICh2 YWwpLAotCQkJCSAgc3RyZWFtLCBmb3JtYXQsIHJlY3Vyc2UsIHByZXR0eSwg TlVMTCwgMSk7CisJCQkJCXN0cmVhbSwgcmVjdXJzZSwgb3B0aW9ucywgTlVM TCwgMSk7CiAgICAgICByZXR1cm47CiAgICAgfQotICBjb21tb25fdmFsX3By aW50ICh2YWwsIHN0cmVhbSwgZm9ybWF0LCAwLCByZWN1cnNlLCBwcmV0dHks Ci0JCSAgICBjdXJyZW50X2xhbmd1YWdlKTsKKyAgY29tbW9uX3ZhbF9wcmlu dCAodmFsLCBzdHJlYW0sIHJlY3Vyc2UsIG9wdGlvbnMsIGN1cnJlbnRfbGFu Z3VhZ2UpOwogfQogCiBleHRlcm4gaW5pdGlhbGl6ZV9maWxlX2Z0eXBlIF9p bml0aWFsaXplX3Bhc2NhbF92YWxwcmludDsgLyogLVdtaXNzaW5nLXByb3Rv dHlwZXMgKi8KQEAgLTk1NSwxMyArOTUyLDEwIEBAIHZvaWQKIF9pbml0aWFs aXplX3Bhc2NhbF92YWxwcmludCAodm9pZCkKIHsKICAgYWRkX3NldHNob3df Ym9vbGVhbl9jbWQgKCJwYXNjYWxfc3RhdGljLW1lbWJlcnMiLCBjbGFzc19z dXBwb3J0LAotCQkJICAgJnBhc2NhbF9zdGF0aWNfZmllbGRfcHJpbnQsIF8o IlwKKwkJCSAgICZ1c2VyX3ByaW50X29wdGlvbnMucGFzY2FsX3N0YXRpY19m aWVsZF9wcmludCwgXygiXAogU2V0IHByaW50aW5nIG9mIHBhc2NhbCBzdGF0 aWMgbWVtYmVycy4iKSwgXygiXAogU2hvdyBwcmludGluZyBvZiBwYXNjYWwg c3RhdGljIG1lbWJlcnMuIiksIE5VTEwsCiAJCQkgICBOVUxMLAogCQkJICAg c2hvd19wYXNjYWxfc3RhdGljX2ZpZWxkX3ByaW50LAogCQkJICAgJnNldHBy aW50bGlzdCwgJnNob3dwcmludGxpc3QpOwotICAvKiBUdXJuIG9uIHByaW50 aW5nIG9mIHN0YXRpYyBmaWVsZHMuICAqLwotICBwYXNjYWxfc3RhdGljX2Zp ZWxkX3ByaW50ID0gMTsKLQogfQpkaWZmIC0tZ2l0IGEvZ2RiL3ByaW50Y21k LmMgYi9nZGIvcHJpbnRjbWQuYwppbmRleCAwMjFlMTkxLi4yZGUzZWYzIDEw MDY0NAotLS0gYS9nZGIvcHJpbnRjbWQuYworKysgYi9nZGIvcHJpbnRjbWQu YwpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgImJsb2NrLmgiCiAjaW5j bHVkZSAiZGlzYXNtLmgiCiAjaW5jbHVkZSAiZGZwLmgiCisjaW5jbHVkZSAi dmFscHJpbnQuaCIKIAogI2lmZGVmIFRVSQogI2luY2x1ZGUgInR1aS90dWku aCIJCS8qIEZvciB0dWlfYWN0aXZlIGV0LmFsLiAgICovCkBAIC01NSw3ICs1 Niw2IEBACiAjZW5kaWYKIAogZXh0ZXJuIGludCBhc21fZGVtYW5nbGU7CS8q IFdoZXRoZXIgdG8gZGVtYW5nbGUgc3ltcyBpbiBhc20gcHJpbnRvdXRzICov Ci1leHRlcm4gaW50IGFkZHJlc3NwcmludDsJLyogV2hldGhlciB0byBwcmlu dCBoZXggYWRkcmVzc2VzIGluIEhMTCAiICovCiAKIHN0cnVjdCBmb3JtYXRf ZGF0YQogICB7CkBAIC0xMjAsMTMgKzEyMCw2IEBAIFByaW50aW5nIG9mIHNv dXJjZSBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIgd2l0aCA8c3ltYm9sPiBp cyAlcy5cbiIpLAogCiBpbnQgY3VycmVudF9kaXNwbGF5X251bWJlcjsKIAot LyogRmxhZyB0byBsb3ctbGV2ZWwgcHJpbnQgcm91dGluZXMgdGhhdCB0aGlz IHZhbHVlIGlzIGJlaW5nIHByaW50ZWQKLSAgIGluIGFuIGVwb2NoIHdpbmRv dy4gIFdlJ2QgbGlrZSB0byBwYXNzIHRoaXMgYXMgYSBwYXJhbWV0ZXIsIGJ1 dAotICAgZXZlcnkgcm91dGluZSB3b3VsZCBuZWVkIHRvIHRha2UgaXQuICBQ ZXJoYXBzIHdlIGNhbiBlbmNhcHN1bGF0ZQotICAgdGhpcyBpbiB0aGUgSS9P IHN0cmVhbSBvbmNlIHdlIGhhdmUgR05VIHN0ZGlvLiAqLwotCi1pbnQgaW5z cGVjdF9pdCA9IDA7Ci0KIHN0cnVjdCBkaXNwbGF5CiAgIHsKICAgICAvKiBD aGFpbiBsaW5rIHRvIG5leHQgYXV0by1kaXNwbGF5IGl0ZW0uICAqLwpAQCAt Mjc4LDcgKzI3MSw4IEBAIHByaW50X2Zvcm1hdHRlZCAoc3RydWN0IHZhbHVl ICp2YWwsIGludCBmb3JtYXQsIGludCBzaXplLAogCWNhc2UgJ3MnOgogCSAg LyogRklYTUU6IE5lZWQgdG8gaGFuZGxlIHdjaGFyX3QncyBoZXJlLi4uICov CiAJICBuZXh0X2FkZHJlc3MgPSBWQUxVRV9BRERSRVNTICh2YWwpCi0JICAg ICsgdmFsX3ByaW50X3N0cmluZyAoVkFMVUVfQUREUkVTUyAodmFsKSwgLTEs IDEsIHN0cmVhbSk7CisJICAgICsgdmFsX3ByaW50X3N0cmluZyAoVkFMVUVf QUREUkVTUyAodmFsKSwgLTEsIDEsIHN0cmVhbSwKKwkJCQkmdXNlcl9wcmlu dF9vcHRpb25zKTsKIAkgIHJldHVybjsKIAogCWNhc2UgJ2knOgpAQCAtMjk4 LDEwICsyOTIsMTQgQEAgcHJpbnRfZm9ybWF0dGVkIChzdHJ1Y3QgdmFsdWUg KnZhbCwgaW50IGZvcm1hdCwgaW50IHNpemUsCiAgICAgICB8fCBUWVBFX0NP REUgKHR5cGUpID09IFRZUEVfQ09ERV9TVFJVQ1QKICAgICAgIHx8IFRZUEVf Q09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1VOSU9OCiAgICAgICB8fCBUWVBF X0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9OQU1FU1BBQ0UpCi0gICAgLyog SWYgZm9ybWF0IGlzIDAsIHVzZSB0aGUgJ25hdHVyYWwnIGZvcm1hdCBmb3Ig dGhhdCB0eXBlIG9mCi0gICAgICAgdmFsdWUuICBJZiB0aGUgdHlwZSBpcyBu b24tc2NhbGFyLCB3ZSBoYXZlIHRvIHVzZSBsYW5ndWFnZQotICAgICAgIHJ1 bGVzIHRvIHByaW50IGl0IGFzIGEgc2VyaWVzIG9mIHNjYWxhcnMuICAqLwot ICAgIHZhbHVlX3ByaW50ICh2YWwsIHN0cmVhbSwgZm9ybWF0LCBWYWxfcHJl dHR5X2RlZmF1bHQpOworICAgIHsKKyAgICAgIC8qIElmIGZvcm1hdCBpcyAw LCB1c2UgdGhlICduYXR1cmFsJyBmb3JtYXQgZm9yIHRoYXQgdHlwZSBvZgor CSB2YWx1ZS4gIElmIHRoZSB0eXBlIGlzIG5vbi1zY2FsYXIsIHdlIGhhdmUg dG8gdXNlIGxhbmd1YWdlCisJIHJ1bGVzIHRvIHByaW50IGl0IGFzIGEgc2Vy aWVzIG9mIHNjYWxhcnMuICAqLworICAgICAgc3RydWN0IHZhbHVlX3ByaW50 X29wdGlvbnMgb3B0aW9ucyA9IHVzZXJfcHJpbnRfb3B0aW9uczsKKyAgICAg IG9wdGlvbnMub3V0cHV0X2Zvcm1hdCA9IGZvcm1hdDsKKyAgICAgIHZhbHVl X3ByaW50ICh2YWwsIHN0cmVhbSwgJm9wdGlvbnMpOworICAgIH0KICAgZWxz ZQogICAgIC8qIFVzZXIgc3BlY2lmaWVkIGZvcm1hdCwgc28gZG9uJ3QgbG9v ayB0byB0aGUgdGhlIHR5cGUgdG8KICAgICAgICB0ZWxsIHVzIHdoYXQgdG8g ZG8uICAqLwpAQCAtMzQ3LDcgKzM0NSw3IEBAIHByaW50X3NjYWxhcl9mb3Jt YXR0ZWQgKGNvbnN0IHZvaWQgKnZhbGFkZHIsIHN0cnVjdCB0eXBlICp0eXBl LAogICAgICBhZ2Fpbi4gICovCiAgIGlmIChmb3JtYXQgPT0gJ3MnKQogICAg IHsKLSAgICAgIHZhbF9wcmludCAodHlwZSwgdmFsYWRkciwgMCwgMCwgc3Ry ZWFtLCAwLCAwLCAwLCBWYWxfcHJldHR5X2RlZmF1bHQsCisgICAgICB2YWxf cHJpbnQgKHR5cGUsIHZhbGFkZHIsIDAsIDAsIHN0cmVhbSwgMCwgJnVzZXJf cHJpbnRfb3B0aW9ucywKIAkJIGN1cnJlbnRfbGFuZ3VhZ2UpOwogICAgICAg cmV0dXJuOwogICAgIH0KQEAgLTQ0NSwxMCArNDQzLDEwIEBAIHByaW50X3Nj YWxhcl9mb3JtYXR0ZWQgKGNvbnN0IHZvaWQgKnZhbGFkZHIsIHN0cnVjdCB0 eXBlICp0eXBlLAogICAgICAgaWYgKFRZUEVfVU5TSUdORUQgKHR5cGUpKQog CXZhbHVlX3ByaW50ICh2YWx1ZV9mcm9tX2xvbmdlc3QgKGJ1aWx0aW5fdHlw ZV90cnVlX3Vuc2lnbmVkX2NoYXIsCiAJCQkJCSB2YWxfbG9uZyksCi0JCSAg ICAgc3RyZWFtLCAwLCBWYWxfcHJldHR5X2RlZmF1bHQpOworCQkgICAgIHN0 cmVhbSwgJnVzZXJfcHJpbnRfb3B0aW9ucyk7CiAgICAgICBlbHNlCiAJdmFs dWVfcHJpbnQgKHZhbHVlX2Zyb21fbG9uZ2VzdCAoYnVpbHRpbl90eXBlX3Ry dWVfY2hhciwgdmFsX2xvbmcpLAotCQkgICAgIHN0cmVhbSwgMCwgVmFsX3By ZXR0eV9kZWZhdWx0KTsKKwkJICAgICBzdHJlYW0sICZ1c2VyX3ByaW50X29w dGlvbnMpOwogICAgICAgYnJlYWs7CiAKICAgICBjYXNlICdmJzoKQEAgLTcx MSw3ICs3MDksNyBAQCBwcmludF9hZGRyZXNzX2RlbWFuZ2xlIChDT1JFX0FE RFIgYWRkciwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKICAgICB7CiAgICAg ICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIwIik7CiAgICAgfQotICBl bHNlIGlmIChhZGRyZXNzcHJpbnQpCisgIGVsc2UgaWYgKHVzZXJfcHJpbnRf b3B0aW9ucy5hZGRyZXNzcHJpbnQpCiAgICAgewogICAgICAgZnB1dHNfZmls dGVyZWQgKHBhZGRyZXNzIChhZGRyKSwgc3RyZWFtKTsKICAgICAgIHByaW50 X2FkZHJlc3Nfc3ltYm9saWMgKGFkZHIsIHN0cmVhbSwgZG9fZGVtYW5nbGUs ICIgIik7CkBAIC04NDYsMTAgKzg0NCwxMCBAQCBwcmludF9jb21tYW5kXzEg KGNoYXIgKmV4cCwgaW50IGluc3BlY3QsIGludCB2b2lkcHJpbnQpCiAgIHN0 cnVjdCB2YWx1ZSAqdmFsOwogICBzdHJ1Y3QgZm9ybWF0X2RhdGEgZm10Owog ICBpbnQgY2xlYW51cCA9IDA7CisgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRp b25zIG9wdHM7CiAKLSAgLyogUGFzcyBpbnNwZWN0IGZsYWcgdG8gdGhlIHJl c3Qgb2YgdGhlIHByaW50IHJvdXRpbmVzIGluIGEgZ2xvYmFsCi0gICAgIChz aWdoKS4gICovCi0gIGluc3BlY3RfaXQgPSBpbnNwZWN0OworICBvcHRzID0g dXNlcl9wcmludF9vcHRpb25zOworICBvcHRzLmluc3BlY3RfaXQgPSBpbnNw ZWN0OwogCiAgIGlmIChleHAgJiYgKmV4cCA9PSAnLycpCiAgICAgewpAQCAt OTA5LDcgKzkwNyw2IEBAIHByaW50X2NvbW1hbmRfMSAoY2hhciAqZXhwLCBp bnQgaW5zcGVjdCwgaW50IHZvaWRwcmludCkKIAogICBpZiAoY2xlYW51cCkK ICAgICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSAgaW5zcGVjdF9pdCA9 IDA7CQkvKiBSZXNldCBwcmludCByb3V0aW5lcyB0byBub3JtYWwuICAqLwog fQogCiBzdGF0aWMgdm9pZApAQCAtMTY3OCw3ICsxNjc1LDcgQEAgcHJpbnRf dmFyaWFibGVfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZy YW1lX2luZm8gKmZyYW1lLAogewogICBzdHJ1Y3QgdmFsdWUgKnZhbCA9IHJl YWRfdmFyX3ZhbHVlICh2YXIsIGZyYW1lKTsKIAotICB2YWx1ZV9wcmludCAo dmFsLCBzdHJlYW0sIDAsIFZhbF9wcmV0dHlfZGVmYXVsdCk7CisgIHZhbHVl X3ByaW50ICh2YWwsIHN0cmVhbSwgJnVzZXJfcHJpbnRfb3B0aW9ucyk7CiB9 CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhv bi12YWx1ZS5jIGIvZ2RiL3B5dGhvbi9weXRob24tdmFsdWUuYwppbmRleCA2 YzRiZTU0Li42OTE3OWI2IDEwMDY0NAotLS0gYS9nZGIvcHl0aG9uL3B5dGhv bi12YWx1ZS5jCisrKyBiL2dkYi9weXRob24vcHl0aG9uLXZhbHVlLmMKQEAg LTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJleGNlcHRpb25zLmgiCiAjaW5j bHVkZSAibGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJkZnAuaCIKKyNpbmNsdWRl ICJ2YWxwcmludC5oIgogCiAvKiBMaXN0IG9mIGFsbCB2YWx1ZXMgd2hpY2gg YXJlIGN1cnJlbnRseSBleHBvc2VkIHRvIFB5dGhvbi4gSXQgaXMKICAgIG1h aW50YWluZWQgc28gdGhhdCB3aGVuIGFuIG9iamZpbGUgaXMgZGlzY2FyZGVk LCBwcmVzZXJ2ZV92YWx1ZXMKQEAgLTE5NCw4ICsxOTUsOCBAQCB2YWxweV9z dHIgKFB5T2JqZWN0ICpzZWxmKQogCiAgIFRSWV9DQVRDSCAoZXhjZXB0LCBS RVRVUk5fTUFTS19BTEwpCiAgICAgewotICAgICAgY29tbW9uX3ZhbF9wcmlu dCAoKCh2YWx1ZV9vYmplY3QgKikgc2VsZiktPnZhbHVlLCBzdGIsIDAsIDAs IDAsCi0JCQlWYWxfcHJldHR5X2RlZmF1bHQsIGN1cnJlbnRfbGFuZ3VhZ2Up OworICAgICAgY29tbW9uX3ZhbF9wcmludCAoKCh2YWx1ZV9vYmplY3QgKikg c2VsZiktPnZhbHVlLCBzdGIsIDAsCisJCQkmdXNlcl9wcmludF9vcHRpb25z LCBjdXJyZW50X2xhbmd1YWdlKTsKICAgICAgIHMgPSB1aV9maWxlX3hzdHJk dXAgKHN0YiwgJmR1bW15KTsKICAgICB9CiAgIEdEQl9QWV9IQU5ETEVfRVhD RVBUSU9OIChleGNlcHQpOwpkaWZmIC0tZ2l0IGEvZ2RiL3NjbS1sYW5nLmMg Yi9nZGIvc2NtLWxhbmcuYwppbmRleCA0MmQyNTAyLi4wYjI1NTkwIDEwMDY0 NAotLS0gYS9nZGIvc2NtLWxhbmcuYworKysgYi9nZGIvc2NtLWxhbmcuYwpA QCAtNTAsNyArNTAsOCBAQCBzY21fcHJpbnRjaGFyIChpbnQgYywgc3RydWN0 IHVpX2ZpbGUgKnN0cmVhbSkKIAogc3RhdGljIHZvaWQKIHNjbV9wcmludHN0 ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgY29uc3QgZ2RiX2J5dGUgKnN0 cmluZywKLQkgICAgICB1bnNpZ25lZCBpbnQgbGVuZ3RoLCBpbnQgd2lkdGgs IGludCBmb3JjZV9lbGxpcHNlcykKKwkgICAgICB1bnNpZ25lZCBpbnQgbGVu Z3RoLCBpbnQgd2lkdGgsIGludCBmb3JjZV9lbGxpcHNlcywKKwkgICAgICBj b25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKIHsK ICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiXCIlc1wiIiwgc3RyaW5n KTsKIH0KZGlmZiAtLWdpdCBhL2dkYi9zY20tbGFuZy5oIGIvZ2RiL3NjbS1s YW5nLmgKaW5kZXggNjU0MDk1Yy4uMzY5OTA1YiAxMDA2NDQKLS0tIGEvZ2Ri L3NjbS1sYW5nLmgKKysrIGIvZ2RiL3NjbS1sYW5nLmgKQEAgLTQ2LDE2ICs0 NiwxNiBAQAogc3RydWN0IHZhbHVlOwogCiBleHRlcm4gaW50IHNjbV92YWx1 ZV9wcmludCAoc3RydWN0IHZhbHVlICosIHN0cnVjdCB1aV9maWxlICosCi0J CQkgICAgaW50LCBlbnVtIHZhbF9wcmV0dHlwcmludCk7CisJCQkgICAgY29u c3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKik7CiAKIGV4dGVybiBp bnQgc2NtX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKiwgY29uc3QgZ2RiX2J5 dGUgKiwgaW50LCBDT1JFX0FERFIsCi0JCQkgIHN0cnVjdCB1aV9maWxlICos IGludCwgaW50LCBpbnQsCi0JCQkgIGVudW0gdmFsX3ByZXR0eXByaW50KTsK KwkJCSAgc3RydWN0IHVpX2ZpbGUgKiwgaW50LAorCQkJICBjb25zdCBzdHJ1 Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKIAogZXh0ZXJuIExPTkdFU1Qg c2NtX2dldF9maWVsZCAoTE9OR0VTVCwgaW50KTsKIAotZXh0ZXJuIHZvaWQg c2NtX3NjbXZhbF9wcmludCAoTE9OR0VTVCwgc3RydWN0IHVpX2ZpbGUgKiwg aW50LCBpbnQsIGludCwKLQkJCSAgICAgIGVudW0gdmFsX3ByZXR0eXByaW50 KTsKK2V4dGVybiB2b2lkIHNjbV9zY212YWxfcHJpbnQgKExPTkdFU1QsIHN0 cnVjdCB1aV9maWxlICosIGludCwKKwkJCSAgICAgIGNvbnN0IHN0cnVjdCB2 YWx1ZV9wcmludF9vcHRpb25zICopOwogCiBleHRlcm4gaW50IGlzX3NjbXZh bHVlX3R5cGUgKHN0cnVjdCB0eXBlICopOwogCmRpZmYgLS1naXQgYS9nZGIv c2NtLXZhbHByaW50LmMgYi9nZGIvc2NtLXZhbHByaW50LmMKaW5kZXggZmVi NDNkZC4uYmYyZTkwNyAxMDA2NDQKLS0tIGEvZ2RiL3NjbS12YWxwcmludC5j CisrKyBiL2dkYi9zY20tdmFscHJpbnQuYwpAQCAtMzMsMTggKzMzLDE4IEBA CiAjaW5jbHVkZSAib2JqZmlsZXMuaCIKIAogc3RhdGljIHZvaWQgc2NtX2lw cnVrIChjaGFyICosIExPTkdFU1QsIHN0cnVjdCB1aV9maWxlICopOwotc3Rh dGljIHZvaWQgc2NtX3NjbWxpc3RfcHJpbnQgKExPTkdFU1QsIHN0cnVjdCB1 aV9maWxlICosIGludCwgaW50LAotCQkJICAgICAgIGludCwgZW51bSB2YWxf cHJldHR5cHJpbnQpOwotc3RhdGljIGludCBzY21faW5mZXJpb3JfcHJpbnQg KExPTkdFU1QsIHN0cnVjdCB1aV9maWxlICosIGludCwgaW50LAotCQkJICAg ICAgIGludCwgZW51bSB2YWxfcHJldHR5cHJpbnQpOworc3RhdGljIHZvaWQg c2NtX3NjbWxpc3RfcHJpbnQgKExPTkdFU1QsIHN0cnVjdCB1aV9maWxlICos IGludCwKKwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0 aW9ucyAqKTsKK3N0YXRpYyBpbnQgc2NtX2luZmVyaW9yX3ByaW50IChMT05H RVNULCBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCisJCQkgICAgICAgY29uc3Qg c3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKik7CiAKIC8qIFByaW50cyB0 aGUgU0NNIHZhbHVlIFZBTFVFIGJ5IGludm9raW5nIHRoZSBpbmZlcmlvciwg aWYgYXBwcm9wcmFpdGUuCiAgICBSZXR1cm5zID49IDAgb24gc3VjY2Vzczsg IHJldHVybiAtMSBpZiB0aGUgaW5mZXJpb3IgY2Fubm90L3Nob3VsZCBub3QK ICAgIHByaW50IFZBTFVFLiAqLwogCiBzdGF0aWMgaW50Ci1zY21faW5mZXJp b3JfcHJpbnQgKExPTkdFU1QgdmFsdWUsIHN0cnVjdCB1aV9maWxlICpzdHJl YW0sIGludCBmb3JtYXQsCi0JCSAgICBpbnQgZGVyZWZfcmVmLCBpbnQgcmVj dXJzZSwgZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5KQorc2NtX2luZmVy aW9yX3ByaW50IChMT05HRVNUIHZhbHVlLCBzdHJ1Y3QgdWlfZmlsZSAqc3Ry ZWFtLAorCQkgICAgaW50IHJlY3Vyc2UsIGNvbnN0IHN0cnVjdCB2YWx1ZV9w cmludF9vcHRpb25zICpvcHRpb25zKQogewogICBzdHJ1Y3Qgb2JqZmlsZSAq b2JqZjsKICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2g7CkBAIC0xMjksMTcg KzEyOSwxNiBAQCBzdGF0aWMgY2hhciAqc2NtX2lzeW1uYW1lc1tdID0KIH07 CiAKIHN0YXRpYyB2b2lkCi1zY21fc2NtbGlzdF9wcmludCAoTE9OR0VTVCBz dmFsdWUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCBmb3JtYXQsCi0J CSAgIGludCBkZXJlZl9yZWYsIGludCByZWN1cnNlLCBlbnVtIHZhbF9wcmV0 dHlwcmludCBwcmV0dHkpCitzY21fc2NtbGlzdF9wcmludCAoTE9OR0VTVCBz dmFsdWUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAor CQkgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9u cykKIHsKLSAgdW5zaWduZWQgaW50IG1vcmUgPSBwcmludF9tYXg7CisgIHVu c2lnbmVkIGludCBtb3JlID0gb3B0aW9ucy0+cHJpbnRfbWF4OwogICBpZiAo cmVjdXJzZSA+IDYpCiAgICAgewogICAgICAgZnB1dHNfZmlsdGVyZWQgKCIu Li4iLCBzdHJlYW0pOwogICAgICAgcmV0dXJuOwogICAgIH0KLSAgc2NtX3Nj bXZhbF9wcmludCAoU0NNX0NBUiAoc3ZhbHVlKSwgc3RyZWFtLCBmb3JtYXQs Ci0JCSAgICBkZXJlZl9yZWYsIHJlY3Vyc2UgKyAxLCBwcmV0dHkpOworICBz Y21fc2NtdmFsX3ByaW50IChTQ01fQ0FSIChzdmFsdWUpLCBzdHJlYW0sIHJl Y3Vyc2UgKyAxLCBvcHRpb25zKTsKICAgc3ZhbHVlID0gU0NNX0NEUiAoc3Zh bHVlKTsKICAgZm9yICg7IFNDTV9OSU1QIChzdmFsdWUpOyBzdmFsdWUgPSBT Q01fQ0RSIChzdmFsdWUpKQogICAgIHsKQEAgLTE1MSwxNCArMTUwLDEyIEBA IHNjbV9zY21saXN0X3ByaW50IChMT05HRVNUIHN2YWx1ZSwgc3RydWN0IHVp X2ZpbGUgKnN0cmVhbSwgaW50IGZvcm1hdCwKIAkgIGZwdXRzX2ZpbHRlcmVk ICgiLi4uIiwgc3RyZWFtKTsKIAkgIHJldHVybjsKIAl9Ci0gICAgICBzY21f c2NtdmFsX3ByaW50IChTQ01fQ0FSIChzdmFsdWUpLCBzdHJlYW0sIGZvcm1h dCwKLQkJCWRlcmVmX3JlZiwgcmVjdXJzZSArIDEsIHByZXR0eSk7CisgICAg ICBzY21fc2NtdmFsX3ByaW50IChTQ01fQ0FSIChzdmFsdWUpLCBzdHJlYW0s IHJlY3Vyc2UgKyAxLCBvcHRpb25zKTsKICAgICB9CiAgIGlmIChTQ01fTk5V TExQIChzdmFsdWUpKQogICAgIHsKICAgICAgIGZwdXRzX2ZpbHRlcmVkICgi IC4gIiwgc3RyZWFtKTsKLSAgICAgIHNjbV9zY212YWxfcHJpbnQgKHN2YWx1 ZSwgc3RyZWFtLCBmb3JtYXQsCi0JCQlkZXJlZl9yZWYsIHJlY3Vyc2UgKyAx LCBwcmV0dHkpOworICAgICAgc2NtX3NjbXZhbF9wcmludCAoc3ZhbHVlLCBz dHJlYW0sIHJlY3Vyc2UgKyAxLCBvcHRpb25zKTsKICAgICB9CiB9CiAKQEAg LTE3NCwxNSArMTcxLDE3IEBAIHNjbV9pcHJ1ayAoY2hhciAqaGRyLCBMT05H RVNUIHB0ciwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKIH0KIAogdm9pZAot c2NtX3NjbXZhbF9wcmludCAoTE9OR0VTVCBzdmFsdWUsIHN0cnVjdCB1aV9m aWxlICpzdHJlYW0sIGludCBmb3JtYXQsCi0JCSAgaW50IGRlcmVmX3JlZiwg aW50IHJlY3Vyc2UsIGVudW0gdmFsX3ByZXR0eXByaW50IHByZXR0eSkKK3Nj bV9zY212YWxfcHJpbnQgKExPTkdFU1Qgc3ZhbHVlLCBzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLAorCQkgIGludCByZWN1cnNlLCBjb25zdCBzdHJ1Y3QgdmFs dWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKIHsKIHRhbG9vcDoKICAgc3dp dGNoICg3ICYgKGludCkgc3ZhbHVlKQogICAgIHsKICAgICBjYXNlIDI6CiAg ICAgY2FzZSA2OgotICAgICAgcHJpbnRfbG9uZ2VzdCAoc3RyZWFtLCBmb3Jt YXQgPyBmb3JtYXQgOiAnZCcsIDEsIHN2YWx1ZSA+PiAyKTsKKyAgICAgIHBy aW50X2xvbmdlc3QgKHN0cmVhbSwKKwkJICAgICBvcHRpb25zLT5vdXRwdXRf Zm9ybWF0ID8gb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCA6ICdkJywKKwkJICAg ICAxLCBzdmFsdWUgPj4gMik7CiAgICAgICBicmVhazsKICAgICBjYXNlIDQ6 CiAgICAgICBpZiAoU0NNX0lDSFJQIChzdmFsdWUpKQpAQCAtMjQzLDE0ICsy NDIsMTIgQEAgdGFsb29wOgogCWNhc2Ugc2NtX3Rjc19jb25zX2ltY2FyOgog CWNhc2Ugc2NtX3Rjc19jb25zX25pbWNhcjoKIAkgIGZwdXRzX2ZpbHRlcmVk ICgiKCIsIHN0cmVhbSk7Ci0JICBzY21fc2NtbGlzdF9wcmludCAoc3ZhbHVl LCBzdHJlYW0sIGZvcm1hdCwKLQkJCSAgICAgZGVyZWZfcmVmLCByZWN1cnNl ICsgMSwgcHJldHR5KTsKKwkgIHNjbV9zY21saXN0X3ByaW50IChzdmFsdWUs IHN0cmVhbSwgcmVjdXJzZSArIDEsIG9wdGlvbnMpOwogCSAgZnB1dHNfZmls dGVyZWQgKCIpIiwgc3RyZWFtKTsKIAkgIGJyZWFrOwogCWNhc2Ugc2NtX3Rj c19jbG9zdXJlczoKIAkgIGZwdXRzX2ZpbHRlcmVkICgiIzxDTE9TVVJFICIs IHN0cmVhbSk7Ci0JICBzY21fc2NtbGlzdF9wcmludCAoU0NNX0NPREUgKHN2 YWx1ZSksIHN0cmVhbSwgZm9ybWF0LAotCQkJICAgICBkZXJlZl9yZWYsIHJl Y3Vyc2UgKyAxLCBwcmV0dHkpOworCSAgc2NtX3NjbWxpc3RfcHJpbnQgKFND TV9DT0RFIChzdmFsdWUpLCBzdHJlYW0sIHJlY3Vyc2UgKyAxLCBvcHRpb25z KTsKIAkgIGZwdXRzX2ZpbHRlcmVkICgiPiIsIHN0cmVhbSk7CiAJICBicmVh azsKIAljYXNlIHNjbV90Yzdfc3RyaW5nOgpAQCAtMjYxLDkgKzI1OCw5IEBA IHRhbG9vcDoKIAkgICAgaW50IGRvbmUgPSAwOwogCSAgICBpbnQgYnVmX3Np emU7CiAJICAgIGdkYl9ieXRlIGJ1ZmZlcls2NF07Ci0JICAgIGludCB0cnVu Y2F0ZSA9IHByaW50X21heCAmJiBsZW4gPiAoaW50KSBwcmludF9tYXg7CisJ ICAgIGludCB0cnVuY2F0ZSA9IG9wdGlvbnMtPnByaW50X21heCAmJiBsZW4g PiAoaW50KSBvcHRpb25zLT5wcmludF9tYXg7CiAJICAgIGlmICh0cnVuY2F0 ZSkKLQkgICAgICBsZW4gPSBwcmludF9tYXg7CisJICAgICAgbGVuID0gb3B0 aW9ucy0+cHJpbnRfbWF4OwogCSAgICBmcHV0c19maWx0ZXJlZCAoIlwiIiwg c3RyZWFtKTsKIAkgICAgZm9yICg7IGRvbmUgPCBsZW47IGRvbmUgKz0gYnVm X3NpemUpCiAJICAgICAgewpAQCAtMzA1LDggKzMwMiw4IEBAIHRhbG9vcDoK IAkgICAgICB7CiAJCWlmIChpID4gMCkKIAkJICBmcHV0c19maWx0ZXJlZCAo IiAiLCBzdHJlYW0pOwotCQlzY21fc2NtdmFsX3ByaW50IChzY21fZ2V0X2Zp ZWxkIChlbGVtZW50cywgaSksIHN0cmVhbSwgZm9ybWF0LAotCQkJCSAgZGVy ZWZfcmVmLCByZWN1cnNlICsgMSwgcHJldHR5KTsKKwkJc2NtX3NjbXZhbF9w cmludCAoc2NtX2dldF9maWVsZCAoZWxlbWVudHMsIGkpLCBzdHJlYW0sCisJ CQkJICByZWN1cnNlICsgMSwgb3B0aW9ucyk7CiAJICAgICAgfQogCSAgICBm cHV0c19maWx0ZXJlZCAoIikiLCBzdHJlYW0pOwogCSAgfQpAQCAtNDAxLDIx ICszOTgsMTkgQEAgdGFsb29wOgogaW50CiBzY21fdmFsX3ByaW50IChzdHJ1 Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAJICAg ICAgIGludCBlbWJlZGRlZF9vZmZzZXQsIENPUkVfQUREUiBhZGRyZXNzLAot CSAgICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgZm9ybWF0LCBp bnQgZGVyZWZfcmVmLAotCSAgICAgICBpbnQgcmVjdXJzZSwgZW51bSB2YWxf cHJldHR5cHJpbnQgcHJldHR5KQorCSAgICAgICBzdHJ1Y3QgdWlfZmlsZSAq c3RyZWFtLCBpbnQgcmVjdXJzZSwKKwkgICAgICAgY29uc3Qgc3RydWN0IHZh bHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCiB7CiAgIGlmIChpc19zY212 YWx1ZV90eXBlICh0eXBlKSkKICAgICB7CiAgICAgICBMT05HRVNUIHN2YWx1 ZSA9IGV4dHJhY3Rfc2lnbmVkX2ludGVnZXIgKHZhbGFkZHIsIFRZUEVfTEVO R1RIICh0eXBlKSk7CiAKLSAgICAgIGlmIChzY21faW5mZXJpb3JfcHJpbnQg KHN2YWx1ZSwgc3RyZWFtLCBmb3JtYXQsCi0JCQkgICAgICBkZXJlZl9yZWYs IHJlY3Vyc2UsIHByZXR0eSkgPj0gMCkKKyAgICAgIGlmIChzY21faW5mZXJp b3JfcHJpbnQgKHN2YWx1ZSwgc3RyZWFtLCByZWN1cnNlLCBvcHRpb25zKSA+ PSAwKQogCXsKIAl9CiAgICAgICBlbHNlCiAJewotCSAgc2NtX3NjbXZhbF9w cmludCAoc3ZhbHVlLCBzdHJlYW0sIGZvcm1hdCwKLQkJCSAgICBkZXJlZl9y ZWYsIHJlY3Vyc2UsIHByZXR0eSk7CisJICBzY21fc2NtdmFsX3ByaW50IChz dmFsdWUsIHN0cmVhbSwgcmVjdXJzZSwgb3B0aW9ucyk7CiAJfQogCiAgICAg ICBnZGJfZmx1c2ggKHN0cmVhbSk7CkBAIC00MjMsMTUgKzQxOCwxMyBAQCBz Y21fdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5 dGUgKnZhbGFkZHIsCiAgICAgfQogICBlbHNlCiAgICAgewotICAgICAgcmV0 dXJuIGNfdmFsX3ByaW50ICh0eXBlLCB2YWxhZGRyLCAwLCBhZGRyZXNzLCBz dHJlYW0sIGZvcm1hdCwKLQkJCSAgZGVyZWZfcmVmLCByZWN1cnNlLCBwcmV0 dHkpOworICAgICAgcmV0dXJuIGNfdmFsX3ByaW50ICh0eXBlLCB2YWxhZGRy LCAwLCBhZGRyZXNzLCBzdHJlYW0sIHJlY3Vyc2UsIG9wdGlvbnMpOwogICAg IH0KIH0KIAogaW50Ci1zY21fdmFsdWVfcHJpbnQgKHN0cnVjdCB2YWx1ZSAq dmFsLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgZm9ybWF0LAotCQkg ZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5KQorc2NtX3ZhbHVlX3ByaW50 IChzdHJ1Y3QgdmFsdWUgKnZhbCwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwK KwkJIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25z KQogewotICByZXR1cm4gKGNvbW1vbl92YWxfcHJpbnQgKHZhbCwgc3RyZWFt LCBmb3JtYXQsIDEsIDAsIHByZXR0eSwKLQkJCSAgICBjdXJyZW50X2xhbmd1 YWdlKSk7CisgIHJldHVybiAoY29tbW9uX3ZhbF9wcmludCAodmFsLCBzdHJl YW0sIDAsIG9wdGlvbnMsIGN1cnJlbnRfbGFuZ3VhZ2UpKTsKIH0KZGlmZiAt LWdpdCBhL2dkYi9zaDY0LXRkZXAuYyBiL2dkYi9zaDY0LXRkZXAuYwppbmRl eCA0NzRkNDlhLi40MDcyMDZkIDEwMDY0NAotLS0gYS9nZGIvc2g2NC10ZGVw LmMKKysrIGIvZ2RiL3NoNjQtdGRlcC5jCkBAIC00MCw2ICs0MCw3IEBACiAj aW5jbHVkZSAiYXJjaC11dGlscy5oIgogI2luY2x1ZGUgInJlZ2NhY2hlLmgi CiAjaW5jbHVkZSAib3NhYmkuaCIKKyNpbmNsdWRlICJ2YWxwcmludC5oIgog CiAjaW5jbHVkZSAiZWxmLWJmZC5oIgogCkBAIC0yMDkyLDYgKzIwOTMsNyBA QCBzaDY0X2RvX3JlZ2lzdGVyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwg c3RydWN0IHVpX2ZpbGUgKmZpbGUsCiAJCSAgc3RydWN0IGZyYW1lX2luZm8g KmZyYW1lLCBpbnQgcmVnbnVtKQogewogICB1bnNpZ25lZCBjaGFyIHJhd19i dWZmZXJbTUFYX1JFR0lTVEVSX1NJWkVdOworICBzdHJ1Y3QgdmFsdWVfcHJp bnRfb3B0aW9ucyBvcHRzOwogCiAgIGZwdXRzX2ZpbHRlcmVkIChnZGJhcmNo X3JlZ2lzdGVyX25hbWUgKGdkYmFyY2gsIHJlZ251bSksIGZpbGUpOwogICBw cmludF9zcGFjZXNfZmlsdGVyZWQgKDE1IC0gc3RybGVuIChnZGJhcmNoX3Jl Z2lzdGVyX25hbWUKQEAgLTIxMDAsMTIgKzIxMDIsMTQgQEAgc2g2NF9kb19y ZWdpc3RlciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB1aV9m aWxlICpmaWxlLAogICAvKiBHZXQgdGhlIGRhdGEgaW4gcmF3IGZvcm1hdC4g ICovCiAgIGlmICghZnJhbWVfcmVnaXN0ZXJfcmVhZCAoZnJhbWUsIHJlZ251 bSwgcmF3X2J1ZmZlcikpCiAgICAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwg Iip2YWx1ZSBub3QgYXZhaWxhYmxlKlxuIik7Ci0gICAgICAKKworICBnZXRf Zm9ybWF0dGVkX3ByaW50X29wdGlvbnMgKCZvcHRzLCAneCcpOwogICB2YWxf cHJpbnQgKHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHJlZ251bSksIHJhd19i dWZmZXIsIDAsIDAsCi0JICAgICBmaWxlLCAneCcsIDEsIDAsIFZhbF9wcmV0 dHlfZGVmYXVsdCwgY3VycmVudF9sYW5ndWFnZSk7CisJICAgICBmaWxlLCAw LCAmb3B0cywgY3VycmVudF9sYW5ndWFnZSk7CiAgIGZwcmludGZfZmlsdGVy ZWQgKGZpbGUsICJcdCIpOworICBnZXRfZm9ybWF0dGVkX3ByaW50X29wdGlv bnMgKCZvcHRzLCAwKTsKICAgdmFsX3ByaW50IChyZWdpc3Rlcl90eXBlIChn ZGJhcmNoLCByZWdudW0pLCByYXdfYnVmZmVyLCAwLCAwLAotCSAgICAgZmls ZSwgMCwgMSwgMCwgVmFsX3ByZXR0eV9kZWZhdWx0LCBjdXJyZW50X2xhbmd1 YWdlKTsKKwkgICAgIGZpbGUsIDAsICZvcHRzLCBjdXJyZW50X2xhbmd1YWdl KTsKICAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgIlxuIik7CiB9CiAKZGlm ZiAtLWdpdCBhL2dkYi9zdGFjay5jIGIvZ2RiL3N0YWNrLmMKaW5kZXggMmMz YzBiYi4uODIzNmFlMyAxMDA2NDQKLS0tIGEvZ2RiL3N0YWNrLmMKKysrIGIv Z2RiL3N0YWNrLmMKQEAgLTM2OCw2ICszNjgsNyBAQCBwcmludF9mcmFtZV9h cmdzIChzdHJ1Y3Qgc3ltYm9sICpmdW5jLCBzdHJ1Y3QgZnJhbWVfaW5mbyAq ZnJhbWUsCiAJICAgICAgaWYgKHZhbCkKIAkgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuICpsYW5ndWFn ZTsKKwkJICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOwogCiAg ICAgICAgICAgICAgICAgICAvKiBVc2UgdGhlIGFwcHJvcHJpYXRlIGxhbmd1 YWdlIHRvIGRpc3BsYXkgb3VyIHN5bWJvbCwKICAgICAgICAgICAgICAgICAg ICAgIHVubGVzcyB0aGUgdXNlciBmb3JjZWQgdGhlIGxhbmd1YWdlIHRvIGEg c3BlY2lmaWMKQEAgLTM3Nyw4ICszNzgsOSBAQCBwcmludF9mcmFtZV9hcmdz IChzdHJ1Y3Qgc3ltYm9sICpmdW5jLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJh bWUsCiAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg ICAgIGxhbmd1YWdlID0gY3VycmVudF9sYW5ndWFnZTsKIAotCQkgIGNvbW1v bl92YWxfcHJpbnQgKHZhbCwgc3RiLT5zdHJlYW0sIDAsIDAsIDIsCi0JCQkJ ICAgIFZhbF9ub19wcmV0dHlwcmludCwgbGFuZ3VhZ2UpOworCQkgIGdldF9y YXdfcHJpbnRfb3B0aW9ucyAoJm9wdHMpOworCQkgIGNvbW1vbl92YWxfcHJp bnQgKHZhbCwgc3RiLT5zdHJlYW0sIDIsCisJCQkJICAgICZvcHRzLCBsYW5n dWFnZSk7CiAJCSAgdWlfb3V0X2ZpZWxkX3N0cmVhbSAodWlvdXQsICJ2YWx1 ZSIsIHN0Yik7CiAJICAgICAgICB9CiAJICAgICAgZWxzZQpAQCAtNTU1LDcg KzU1Nyw3IEBAIHByaW50X2ZyYW1lX2luZm8gKHN0cnVjdCBmcmFtZV9pbmZv ICpmcmFtZSwgaW50IHByaW50X2xldmVsLAogCQkgbGluZS4gT25seSB0aGUg Y29tbWFuZCBsaW5lIHJlYWxseSB3YW50cyB0aGlzCiAJCSBiZWhhdmlvci4g T3RoZXIgVUlzIHByb2JhYmx5IHdvdWxkIGxpa2UgdGhlCiAJCSBhYmlsaXR5 IHRvIGRlY2lkZSBmb3IgdGhlbXNlbHZlcyBpZiBpdCBpcyBkZXNpcmVkLiAg Ki8KLQkgICAgICBpZiAoYWRkcmVzc3ByaW50ICYmIG1pZF9zdGF0ZW1lbnQp CisJICAgICAgaWYgKHVzZXJfcHJpbnRfb3B0aW9ucy5hZGRyZXNzcHJpbnQg JiYgbWlkX3N0YXRlbWVudCkKIAkJewogCQkgIHVpX291dF9maWVsZF9jb3Jl X2FkZHIgKHVpb3V0LCAiYWRkciIsIGdldF9mcmFtZV9wYyAoZnJhbWUpKTsK IAkJICB1aV9vdXRfdGV4dCAodWlvdXQsICJcdCIpOwpAQCAtNjY1LDcgKzY2 Nyw3IEBAIHByaW50X2ZyYW1lIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUs IGludCBwcmludF9sZXZlbCwKICAgICAgIHVpX291dF9maWVsZF9mbXRfaW50 ICh1aW91dCwgMiwgdWlfbGVmdCwgImxldmVsIiwKIAkJCSAgICBmcmFtZV9y ZWxhdGl2ZV9sZXZlbCAoZnJhbWUpKTsKICAgICB9Ci0gIGlmIChhZGRyZXNz cHJpbnQpCisgIGlmICh1c2VyX3ByaW50X29wdGlvbnMuYWRkcmVzc3ByaW50 KQogICAgIGlmIChnZXRfZnJhbWVfcGMgKGZyYW1lKSAhPSBzYWwucGMgfHwg IXNhbC5zeW10YWIKIAl8fCBwcmludF93aGF0ID09IExPQ19BTkRfQUREUkVT UykKICAgICAgIHsKQEAgLTE0MDgsNyArMTQxMCw3IEBAIHByaW50X2Jsb2Nr X2ZyYW1lX2xhYmVscyAoc3RydWN0IGJsb2NrICpiLCBpbnQgKmhhdmVfZGVm YXVsdCwKIAkgIHNhbCA9IGZpbmRfcGNfbGluZSAoU1lNQk9MX1ZBTFVFX0FE RFJFU1MgKHN5bSksIDApOwogCSAgdmFsdWVzX3ByaW50ZWQgPSAxOwogCSAg ZnB1dHNfZmlsdGVyZWQgKFNZTUJPTF9QUklOVF9OQU1FIChzeW0pLCBzdHJl YW0pOwotCSAgaWYgKGFkZHJlc3NwcmludCkKKwkgIGlmICh1c2VyX3ByaW50 X29wdGlvbnMuYWRkcmVzc3ByaW50KQogCSAgICB7CiAJICAgICAgZnByaW50 Zl9maWx0ZXJlZCAoc3RyZWFtLCAiICIpOwogCSAgICAgIGZwdXRzX2ZpbHRl cmVkIChwYWRkcmVzcyAoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKHN5bSkpLCBz dHJlYW0pOwpkaWZmIC0tZ2l0IGEvZ2RiL3RyYWNlcG9pbnQuYyBiL2dkYi90 cmFjZXBvaW50LmMKaW5kZXggNGY1YzU2YS4uYzg1OTU3NCAxMDA2NDQKLS0t IGEvZ2RiL3RyYWNlcG9pbnQuYworKysgYi9nZGIvdHJhY2Vwb2ludC5jCkBA IC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiZGljdGlvbmFyeS5oIgogI2lu Y2x1ZGUgIm9ic2VydmVyLmgiCiAjaW5jbHVkZSAidXNlci1yZWdzLmgiCisj aW5jbHVkZSAidmFscHJpbnQuaCIKIAogI2luY2x1ZGUgImF4LmgiCiAjaW5j bHVkZSAiYXgtZ2RiLmgiCkBAIC02Nyw3ICs2OCw2IEBACiBleHRlcm4gdm9p ZCAoKmRlcHJlY2F0ZWRfcmVhZGxpbmVfYmVnaW5faG9vaykgKGNoYXIgKiwg Li4uKTsKIGV4dGVybiBjaGFyICooKmRlcHJlY2F0ZWRfcmVhZGxpbmVfaG9v aykgKGNoYXIgKik7CiBleHRlcm4gdm9pZCAoKmRlcHJlY2F0ZWRfcmVhZGxp bmVfZW5kX2hvb2spICh2b2lkKTsKLWV4dGVybiBpbnQgYWRkcmVzc3ByaW50 OwkvKiBQcmludCBtYWNoaW5lIGFkZHJlc3Nlcz8gKi8KIAogLyogR0RCIGNv bW1hbmRzIGltcGxlbWVudGVkIGluIG90aGVyIG1vZHVsZXM6CiAgKi8gIApA QCAtNDM2LDcgKzQzNiw3IEBAIHRyYWNlX21lbnRpb24gKHN0cnVjdCB0cmFj ZXBvaW50ICp0cCkKIHsKICAgcHJpbnRmX2ZpbHRlcmVkICgiVHJhY2Vwb2lu dCAlZCIsIHRwLT5udW1iZXIpOwogCi0gIGlmIChhZGRyZXNzcHJpbnQgfHwg KHRwLT5zb3VyY2VfZmlsZSA9PSBOVUxMKSkKKyAgaWYgKHVzZXJfcHJpbnRf b3B0aW9ucy5hZGRyZXNzcHJpbnQgfHwgKHRwLT5zb3VyY2VfZmlsZSA9PSBO VUxMKSkKICAgICB7CiAgICAgICBwcmludGZfZmlsdGVyZWQgKCIgYXQgIik7 CiAgICAgICBwcmludGZfZmlsdGVyZWQgKCIlcyIsIHBhZGRyZXNzICh0cC0+ YWRkcmVzcykpOwpAQCAtNDY3LDEyICs0NjcsMTAgQEAgdHJhY2Vwb2ludHNf aW5mbyAoY2hhciAqdHBudW1fZXhwLCBpbnQgZnJvbV90dHkpCiAgIEFMTF9U UkFDRVBPSU5UUyAodCkKICAgICBpZiAodHBudW0gPT0gLTEgfHwgdHBudW0g PT0gdC0+bnVtYmVyKQogICAgIHsKLSAgICAgIGV4dGVybiBpbnQgYWRkcmVz c3ByaW50OwkvKiBQcmludCBtYWNoaW5lIGFkZHJlc3Nlcz8gICovCi0KICAg ICAgIGlmICghZm91bmRfYV90cmFjZXBvaW50KyspCiAJewogCSAgcHJpbnRm X2ZpbHRlcmVkICgiTnVtIEVuYiAiKTsKLQkgIGlmIChhZGRyZXNzcHJpbnQp CisJICBpZiAodXNlcl9wcmludF9vcHRpb25zLmFkZHJlc3NwcmludCkKIAkg ICAgewogCSAgICAgIGlmIChnZGJhcmNoX2FkZHJfYml0IChjdXJyZW50X2dk YmFyY2gpIDw9IDMyKQogCQlwcmludGZfZmlsdGVyZWQgKCJBZGRyZXNzICAg ICIpOwpAQCAtNDgyLDcgKzQ4MCw3IEBAIHRyYWNlcG9pbnRzX2luZm8gKGNo YXIgKnRwbnVtX2V4cCwgaW50IGZyb21fdHR5KQogCSAgcHJpbnRmX2ZpbHRl cmVkICgiUGFzc0MgU3RlcEMgV2hhdFxuIik7CiAJfQogICAgICAgc3RyY3B5 ICh3cmFwX2luZGVudCwgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICIp OwotICAgICAgaWYgKGFkZHJlc3NwcmludCkKKyAgICAgIGlmICh1c2VyX3By aW50X29wdGlvbnMuYWRkcmVzc3ByaW50KQogCXsKIAkgIGlmIChnZGJhcmNo X2FkZHJfYml0IChjdXJyZW50X2dkYmFyY2gpIDw9IDMyKQogCSAgICBzdHJj YXQgKHdyYXBfaW5kZW50LCAiICAgICAgICAgICAiKTsKQEAgLTQ5Miw3ICs0 OTAsNyBAQCB0cmFjZXBvaW50c19pbmZvIChjaGFyICp0cG51bV9leHAsIGlu dCBmcm9tX3R0eSkKIAogICAgICAgcHJpbnRmX2ZpbHRlcmVkICgiJS0zZCAl LTNzICIsIHQtPm51bWJlciwKIAkJICAgICAgIHQtPmVuYWJsZWRfcCA/ICJ5 IiA6ICJuIik7Ci0gICAgICBpZiAoYWRkcmVzc3ByaW50KQorICAgICAgaWYg KHVzZXJfcHJpbnRfb3B0aW9ucy5hZGRyZXNzcHJpbnQpCiAJewogCSAgY2hh ciAqdG1wOwogCmRpZmYgLS1naXQgYS9nZGIvdHlwZXByaW50LmMgYi9nZGIv dHlwZXByaW50LmMKaW5kZXggNDRmMWE3Ny4uYWY5NmYxMCAxMDA2NDQKLS0t IGEvZ2RiL3R5cGVwcmludC5jCisrKyBiL2dkYi90eXBlcHJpbnQuYwpAQCAt MzMsMTIgKzMzLDkgQEAKICNpbmNsdWRlICJjcC1hYmkuaCIKICNpbmNsdWRl ICJ0eXBlcHJpbnQuaCIKICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCisjaW5j bHVkZSAidmFscHJpbnQuaCIKICNpbmNsdWRlIDxlcnJuby5oPgogCi0vKiBG b3IgcmVhbC10eXBlIHByaW50aW5nIGluIHdoYXRpc19leHAoKSAqLwotZXh0 ZXJuIGludCBvYmplY3RwcmludDsJCS8qIENvbnRyb2xzIGxvb2tpbmcgdXAg YW4gb2JqZWN0J3MgZGVyaXZlZCB0eXBlCi0JCQkJICAgdXNpbmcgd2hhdCB3 ZSBmaW5kIGluIGl0cyB2dGFibGVzLiAgKi8KLQogZXh0ZXJuIHZvaWQgX2lu aXRpYWxpemVfdHlwZXByaW50ICh2b2lkKTsKIAogc3RhdGljIHZvaWQgcHR5 cGVfY29tbWFuZCAoY2hhciAqLCBpbnQpOwpAQCAtMTA3LDcgKzEwNCw3IEBA IHdoYXRpc19leHAgKGNoYXIgKmV4cCwgaW50IHNob3cpCiAKICAgdHlwZSA9 IHZhbHVlX3R5cGUgKHZhbCk7CiAKLSAgaWYgKG9iamVjdHByaW50KQorICBp ZiAodXNlcl9wcmludF9vcHRpb25zLm9iamVjdHByaW50KQogICAgIHsKICAg ICAgIGlmICgoKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1BUUikK IAkgICB8fCAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUkVGKSkK ZGlmZiAtLWdpdCBhL2dkYi92YWxwcmludC5jIGIvZ2RiL3ZhbHByaW50LmMK aW5kZXggOTljMzc2Zi4uNzM0ODE3NiAxMDA2NDQKLS0tIGEvZ2RiL3ZhbHBy aW50LmMKKysrIGIvZ2RiL3ZhbHByaW50LmMKQEAgLTYwLDEzICs2MCw0OSBA QCBzdGF0aWMgdm9pZCBzZXRfb3V0cHV0X3JhZGl4XzEgKGludCwgdW5zaWdu ZWQpOwogCiB2b2lkIF9pbml0aWFsaXplX3ZhbHByaW50ICh2b2lkKTsKIAot LyogTWF4aW11bSBudW1iZXIgb2YgY2hhcnMgdG8gcHJpbnQgZm9yIGEgc3Ry aW5nIHBvaW50ZXIgdmFsdWUgb3IgdmVjdG9yCi0gICBjb250ZW50cywgb3Ig VUlOVF9NQVggZm9yIG5vIGxpbWl0LiAgTm90ZSB0aGF0ICJzZXQgcHJpbnQg ZWxlbWVudHMgMCIKLSAgIHN0b3JlcyBVSU5UX01BWCBpbiBwcmludF9tYXgs IHdoaWNoIGRpc3BsYXlzIGluIGEgc2hvdyBjb21tYW5kIGFzCi0gICAidW5s aW1pdGVkIi4gKi8KLQotdW5zaWduZWQgaW50IHByaW50X21heDsKICNkZWZp bmUgUFJJTlRfTUFYX0RFRkFVTFQgMjAwCS8qIFN0YXJ0IHByaW50X21heCBv ZmYgYXQgdGhpcyB2YWx1ZS4gKi8KKworc3RydWN0IHZhbHVlX3ByaW50X29w dGlvbnMgdXNlcl9wcmludF9vcHRpb25zID0KK3sKKyAgVmFsX3ByZXR0eV9k ZWZhdWx0LAkJLyogcHJldHR5ICovCisgIDAsCQkJCS8qIHByZXR0eXByaW50 X2FycmF5cyAqLworICAwLAkJCQkvKiBwcmV0dHlwcmludF9zdHJ1Y3RzICov CisgIDAsCQkJCS8qIHZ0YmxwcmludCAqLworICAxLAkJCQkvKiB1bmlvbnBy aW50ICovCisgIDEsCQkJCS8qIGFkZHJlc3NwcmludCAqLworICAwLAkJCQkv KiBvYmplY3RwcmludCAqLworICBQUklOVF9NQVhfREVGQVVMVCwJCS8qIHBy aW50X21heCAqLworICAxMCwJCQkJLyogcmVwZWF0X2NvdW50X3RocmVzaG9s ZCAqLworICAwLAkJCQkvKiBvdXRwdXRfZm9ybWF0ICovCisgIDAsCQkJCS8q IHN0b3BfcHJpbnRfYXRfbnVsbCAqLworICAwLAkJCQkvKiByYXcgKi8KKyAg MCwJCQkJLyogaW5zcGVjdF9pdCAqLworICAwLAkJCQkvKiBwcmludF9hcnJh eV9pbmRleGVzICovCisgIDAsCQkJCS8qIGRlcmVmX3JlZiAqLworICAxLAkJ CQkvKiBzdGF0aWNfZmllbGRfcHJpbnQgKi8KKyAgMQkJCQkvKiBwYXNjYWxf c3RhdGljX2ZpZWxkX3ByaW50ICovCit9OworCisvKiBJbml0aWFsaXplICpP UFRTIHRvIGJlIGEgY29weSBvZiB0aGUgdXNlciBwcmludCBvcHRpb25zLCBi dXQgd2l0aAorICAgcHJldHR5LXByaW50aW5nIGRpc2FibGVkLiAgKi8KK3Zv aWQKK2dldF9yYXdfcHJpbnRfb3B0aW9ucyAoc3RydWN0IHZhbHVlX3ByaW50 X29wdGlvbnMgKm9wdHMpCit7ICAKKyAgKm9wdHMgPSB1c2VyX3ByaW50X29w dGlvbnM7CisgIG9wdHMtPnByZXR0eSA9IFZhbF9ub19wcmV0dHlwcmludDsK KyAgb3B0cy0+cmF3ID0gMTsKK30KKworLyogSW5pdGlhbGl6ZSAqT1BUUyB0 byBiZSBhIGNvcHkgb2YgdGhlIHVzZXIgcHJpbnQgb3B0aW9ucywgYnV0IHVz aW5nCisgICBGT1JNQVQgYXMgdGhlIGZvcm1hdHRpbmcgb3B0aW9uLiAgKi8K K3ZvaWQKK2dldF9mb3JtYXR0ZWRfcHJpbnRfb3B0aW9ucyAoc3RydWN0IHZh bHVlX3ByaW50X29wdGlvbnMgKm9wdHMsCisJCQkgICAgIGNoYXIgZm9ybWF0 KQoreworICAqb3B0cyA9IHVzZXJfcHJpbnRfb3B0aW9uczsKKyAgb3B0cy0+ b3V0cHV0X2Zvcm1hdCA9IGZvcm1hdDsKK30KKwogc3RhdGljIHZvaWQKIHNo b3dfcHJpbnRfbWF4IChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21f dHR5LAogCQlzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hh ciAqdmFsdWUpCkBAIC0xMDMsNyArMTM5LDYgQEAgaW50IG91dHB1dF9mb3Jt YXQgPSAwOwogLyogQnkgZGVmYXVsdCB3ZSBwcmludCBhcnJheXMgd2l0aG91 dCBwcmludGluZyB0aGUgaW5kZXggb2YgZWFjaCBlbGVtZW50IGluCiAgICB0 aGUgYXJyYXkuICBUaGlzIGJlaGF2aW9yIGNhbiBiZSBjaGFuZ2VkIGJ5IHNl dHRpbmcgUFJJTlRfQVJSQVlfSU5ERVhFUy4gICovCiAKLXN0YXRpYyBpbnQg cHJpbnRfYXJyYXlfaW5kZXhlcyA9IDA7CiBzdGF0aWMgdm9pZAogc2hvd19w cmludF9hcnJheV9pbmRleGVzIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50 IGZyb21fdHR5LAogCQkgICAgICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1l bnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQpAQCAtMTE1LDcgKzE1MCw2IEBA IHNob3dfcHJpbnRfYXJyYXlfaW5kZXhlcyAoc3RydWN0IHVpX2ZpbGUgKmZp bGUsIGludCBmcm9tX3R0eSwKICAgIGVsZW1lbnQgaW4gYW4gYXJyYXkuICBS ZWZlcmVuY2VkIGJ5IHRoZSBsb3cgbGV2ZWwgbGFuZ3VhZ2UgZGVwZW5kZW50 CiAgICBwcmludCByb3V0aW5lcy4gKi8KIAotdW5zaWduZWQgaW50IHJlcGVh dF9jb3VudF90aHJlc2hvbGQgPSAxMDsKIHN0YXRpYyB2b2lkCiBzaG93X3Jl cGVhdF9jb3VudF90aHJlc2hvbGQgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBp bnQgZnJvbV90dHksCiAJCQkgICAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50 ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKQEAgLTEyNiw3ICsxNjAsNiBAQCBz aG93X3JlcGVhdF9jb3VudF90aHJlc2hvbGQgKHN0cnVjdCB1aV9maWxlICpm aWxlLCBpbnQgZnJvbV90dHksCiAKIC8qIElmIG5vbnplcm8sIHN0b3BzIHBy aW50aW5nIG9mIGNoYXIgYXJyYXlzIGF0IGZpcnN0IG51bGwuICovCiAKLWlu dCBzdG9wX3ByaW50X2F0X251bGw7CiBzdGF0aWMgdm9pZAogc2hvd19zdG9w X3ByaW50X2F0X251bGwgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJv bV90dHksCiAJCQkgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0 IGNoYXIgKnZhbHVlKQpAQCAtMTM4LDcgKzE3MSw2IEBAIFByaW50aW5nIG9m IGNoYXIgYXJyYXlzIHRvIHN0b3AgYXQgZmlyc3QgbnVsbCBjaGFyIGlzICVz LlxuIiksCiAKIC8qIENvbnRyb2xzIHByZXR0eSBwcmludGluZyBvZiBzdHJ1 Y3R1cmVzLiAqLwogCi1pbnQgcHJldHR5cHJpbnRfc3RydWN0czsKIHN0YXRp YyB2b2lkCiBzaG93X3ByZXR0eXByaW50X3N0cnVjdHMgKHN0cnVjdCB1aV9m aWxlICpmaWxlLCBpbnQgZnJvbV90dHksCiAJCQkgIHN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKQEAgLTE0OCw3ICsx ODAsNiBAQCBzaG93X3ByZXR0eXByaW50X3N0cnVjdHMgKHN0cnVjdCB1aV9m aWxlICpmaWxlLCBpbnQgZnJvbV90dHksCiAKIC8qIENvbnRyb2xzIHByZXR0 eSBwcmludGluZyBvZiBhcnJheXMuICAqLwogCi1pbnQgcHJldHR5cHJpbnRf YXJyYXlzOwogc3RhdGljIHZvaWQKIHNob3dfcHJldHR5cHJpbnRfYXJyYXlz IChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAogCQkJIHN0 cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkK QEAgLTE1OSw3ICsxOTAsNiBAQCBzaG93X3ByZXR0eXByaW50X2FycmF5cyAo c3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKIC8qIElmIG5v bnplcm8sIGNhdXNlcyB1bmlvbnMgaW5zaWRlIHN0cnVjdHVyZXMgb3Igb3Ro ZXIgdW5pb25zIHRvIGJlCiAgICBwcmludGVkLiAqLwogCi1pbnQgdW5pb25w cmludDsJCQkvKiBDb250cm9scyBwcmludGluZyBvZiBuZXN0ZWQgdW5pb25z LiAgKi8KIHN0YXRpYyB2b2lkCiBzaG93X3VuaW9ucHJpbnQgKHN0cnVjdCB1 aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCiAJCSBzdHJ1Y3QgY21kX2xp c3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCkBAIC0xNzEsNyAr MjAxLDYgQEAgUHJpbnRpbmcgb2YgdW5pb25zIGludGVyaW9yIHRvIHN0cnVj dHVyZXMgaXMgJXMuXG4iKSwKIAogLyogSWYgbm9uemVybywgY2F1c2VzIG1h Y2hpbmUgYWRkcmVzc2VzIHRvIGJlIHByaW50ZWQgaW4gY2VydGFpbiBjb250 ZXh0cy4gKi8KIAotaW50IGFkZHJlc3NwcmludDsJCS8qIENvbnRyb2xzIHBy aW50aW5nIG9mIG1hY2hpbmUgYWRkcmVzc2VzICovCiBzdGF0aWMgdm9pZAog c2hvd19hZGRyZXNzcHJpbnQgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQg ZnJvbV90dHksCiAJCSAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBj b25zdCBjaGFyICp2YWx1ZSkKQEAgLTIwMywxNyArMjMyLDE4IEBAIHNob3df YWRkcmVzc3ByaW50IChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21f dHR5LAogCiBpbnQKIHZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNv bnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAot CSAgIENPUkVfQUREUiBhZGRyZXNzLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFt LCBpbnQgZm9ybWF0LAotCSAgIGludCBkZXJlZl9yZWYsIGludCByZWN1cnNl LCBlbnVtIHZhbF9wcmV0dHlwcmludCBwcmV0dHksCisJICAgQ09SRV9BRERS IGFkZHJlc3MsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNl LAorCSAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRp b25zLAogCSAgIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuICpsYW5ndWFn ZSkKIHsKICAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXhjZXB0 OwotICB2b2xhdGlsZSBlbnVtIHZhbF9wcmV0dHlwcmludCByZWFsX3ByZXR0 eSA9IHByZXR0eTsKICAgaW50IHJldCA9IDA7Ci0KKyAgc3RydWN0IHZhbHVl X3ByaW50X29wdGlvbnMgbG9jYWxfb3B0cyA9ICpvcHRpb25zOwogICBzdHJ1 Y3QgdHlwZSAqcmVhbF90eXBlID0gY2hlY2tfdHlwZWRlZiAodHlwZSk7Ci0g IGlmIChwcmV0dHkgPT0gVmFsX3ByZXR0eV9kZWZhdWx0KQotICAgIHJlYWxf cHJldHR5ID0gcHJldHR5cHJpbnRfc3RydWN0cyA/IFZhbF9wcmV0dHlwcmlu dCA6IFZhbF9ub19wcmV0dHlwcmludDsKKworICBpZiAobG9jYWxfb3B0cy5w cmV0dHkgPT0gVmFsX3ByZXR0eV9kZWZhdWx0KQorICAgIGxvY2FsX29wdHMu cHJldHR5ID0gKGxvY2FsX29wdHMucHJldHR5cHJpbnRfc3RydWN0cworCQkJ ID8gVmFsX3ByZXR0eXByaW50IDogVmFsX25vX3ByZXR0eXByaW50KTsKIAog ICBRVUlUOwogCkBAIC0yMzEsOCArMjYxLDcgQEAgdmFsX3ByaW50IChzdHJ1 Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBl bWJlZGRlZF9vZmZzZXQsCiAgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5f TUFTS19FUlJPUikKICAgICB7CiAgICAgICByZXQgPSBsYW5ndWFnZS0+bGFf dmFsX3ByaW50ICh0eXBlLCB2YWxhZGRyLCBlbWJlZGRlZF9vZmZzZXQsIGFk ZHJlc3MsCi0JCQkJICAgIHN0cmVhbSwgZm9ybWF0LCBkZXJlZl9yZWYsIHJl Y3Vyc2UsCi0JCQkJICAgIHJlYWxfcHJldHR5KTsKKwkJCQkgICAgc3RyZWFt LCByZWN1cnNlLCAmbG9jYWxfb3B0cyk7CiAgICAgfQogICBpZiAoZXhjZXB0 LnJlYXNvbiA8IDApCiAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCBf KCI8ZXJyb3IgcmVhZGluZyB2YXJpYWJsZT4iKSk7CkBAIC0yNzcsOCArMzA2 LDggQEAgdmFsdWVfY2hlY2tfcHJpbnRhYmxlIChzdHJ1Y3QgdmFsdWUgKnZh bCwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKICAgIEdEQidzIHZhbHVlIG1l Y2hhbmlzbS4gICovCiAKIGludAotY29tbW9uX3ZhbF9wcmludCAoc3RydWN0 IHZhbHVlICp2YWwsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCBmb3Jt YXQsCi0JCSAgaW50IGRlcmVmX3JlZiwgaW50IHJlY3Vyc2UsIGVudW0gdmFs X3ByZXR0eXByaW50IHByZXR0eSwKK2NvbW1vbl92YWxfcHJpbnQgKHN0cnVj dCB2YWx1ZSAqdmFsLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVj dXJzZSwKKwkJICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAq b3B0aW9ucywKIAkJICBjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiAqbGFu Z3VhZ2UpCiB7CiAgIGlmICghdmFsdWVfY2hlY2tfcHJpbnRhYmxlICh2YWws IHN0cmVhbSkpCkBAIC0yODYsOCArMzE1LDcgQEAgY29tbW9uX3ZhbF9wcmlu dCAoc3RydWN0IHZhbHVlICp2YWwsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0s IGludCBmb3JtYXQsCiAKICAgcmV0dXJuIHZhbF9wcmludCAodmFsdWVfdHlw ZSAodmFsKSwgdmFsdWVfY29udGVudHNfYWxsICh2YWwpLAogCQkgICAgdmFs dWVfZW1iZWRkZWRfb2Zmc2V0ICh2YWwpLCBWQUxVRV9BRERSRVNTICh2YWwp LAotCQkgICAgc3RyZWFtLCBmb3JtYXQsIGRlcmVmX3JlZiwgcmVjdXJzZSwg cHJldHR5LAotCQkgICAgbGFuZ3VhZ2UpOworCQkgICAgc3RyZWFtLCByZWN1 cnNlLCBvcHRpb25zLCBsYW5ndWFnZSk7CiB9CiAKIC8qIFByaW50IHRoZSB2 YWx1ZSBWQUwgaW4gQy1pc2ggc3ludGF4IG9uIHN0cmVhbSBTVFJFQU0uCkBA IC0yOTYsMTMgKzMyNCwxMyBAQCBjb21tb25fdmFsX3ByaW50IChzdHJ1Y3Qg dmFsdWUgKnZhbCwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IGZvcm1h dCwKICAgIHRoZSBudW1iZXIgb2Ygc3RyaW5nIGJ5dGVzIHByaW50ZWQuICAq LwogCiBpbnQKLXZhbHVlX3ByaW50IChzdHJ1Y3QgdmFsdWUgKnZhbCwgc3Ry dWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IGZvcm1hdCwKLQkgICAgIGVudW0g dmFsX3ByZXR0eXByaW50IHByZXR0eSkKK3ZhbHVlX3ByaW50IChzdHJ1Y3Qg dmFsdWUgKnZhbCwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKKwkgICAgIGNv bnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQogewog ICBpZiAoIXZhbHVlX2NoZWNrX3ByaW50YWJsZSAodmFsLCBzdHJlYW0pKQog ICAgIHJldHVybiAwOwogCi0gIHJldHVybiBMQV9WQUxVRV9QUklOVCAodmFs LCBzdHJlYW0sIGZvcm1hdCwgcHJldHR5KTsKKyAgcmV0dXJuIExBX1ZBTFVF X1BSSU5UICh2YWwsIHN0cmVhbSwgb3B0aW9ucyk7CiB9CiAKIC8qIENhbGxl ZCBieSB2YXJpb3VzIDxsYW5nPl92YWxfcHJpbnQgcm91dGluZXMgdG8gcHJp bnQKQEAgLTkyOCwxNSArOTU2LDYgQEAgcHJpbnRfY2hhcl9jaGFycyAoc3Ry dWN0IHVpX2ZpbGUgKnN0cmVhbSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIs CiAgICAgfQogfQogCi0vKiBSZXR1cm4gbm9uLXplcm8gaWYgdGhlIGRlYnVn Z2VyIHNob3VsZCBwcmludCB0aGUgaW5kZXggb2YgZWFjaCBlbGVtZW50Ci0g ICB3aGVuIHByaW50aW5nIGFycmF5IHZhbHVlcy4gICovCi0KLWludAotcHJp bnRfYXJyYXlfaW5kZXhlc19wICh2b2lkKQoteyAgICAgICAgICAgICAgCi0g IHJldHVybiBwcmludF9hcnJheV9pbmRleGVzOwotfSAKLQogLyogQXNzdW1p bmcgVFlQRSBpcyBhIHNpbXBsZSwgbm9uLWVtcHR5IGFycmF5IHR5cGUsIGNv bXB1dGUgaXRzIHVwcGVyCiAgICBhbmQgbG93ZXIgYm91bmQuICBTYXZlIHRo ZSBsb3cgYm91bmQgaW50byBMT1dfQk9VTkQgaWYgbm90IE5VTEwuCiAgICBT YXZlIHRoZSBoaWdoIGJvdW5kIGludG8gSElHSF9CT1VORCBpZiBub3QgTlVM TC4KQEAgLTk5NywxOCArMTAxNiwxOCBAQCBnZXRfYXJyYXlfYm91bmRzIChz dHJ1Y3QgdHlwZSAqdHlwZSwgbG9uZyAqbG93X2JvdW5kLCBsb25nICpoaWdo X2JvdW5kKQogICAgIAogdm9pZCAgCiBtYXliZV9wcmludF9hcnJheV9pbmRl eCAoc3RydWN0IHR5cGUgKmluZGV4X3R5cGUsIExPTkdFU1QgaW5kZXgsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVh bSwgaW50IGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBlbnVt IHZhbF9wcmV0dHlwcmludCBwcmV0dHkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKKwkJCSBjb25zdCBzdHJ1 Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKIHsKICAgc3RydWN0 IHZhbHVlICppbmRleF92YWx1ZTsKIAotICBpZiAoIXByaW50X2FycmF5X2lu ZGV4ZXMpCisgIGlmICghb3B0aW9ucy0+cHJpbnRfYXJyYXlfaW5kZXhlcykK ICAgICByZXR1cm47IAogICAgIAogICBpbmRleF92YWx1ZSA9IHZhbHVlX2Zy b21fbG9uZ2VzdCAoaW5kZXhfdHlwZSwgaW5kZXgpOwogCi0gIExBX1BSSU5U X0FSUkFZX0lOREVYIChpbmRleF92YWx1ZSwgc3RyZWFtLCBmb3JtYXQsIHBy ZXR0eSk7Ci19ICAgCisgIExBX1BSSU5UX0FSUkFZX0lOREVYIChpbmRleF92 YWx1ZSwgc3RyZWFtLCBvcHRpb25zKTsKK30KIAogLyogIENhbGxlZCBieSB2 YXJpb3VzIDxsYW5nPl92YWxfcHJpbnQgcm91dGluZXMgdG8gcHJpbnQgZWxl bWVudHMgb2YgYW4KICAgIGFycmF5IGluIHRoZSBmb3JtICI8ZWxlbTE+LCA8 ZWxlbTI+LCA8ZWxlbTM+LCAuLi4iLgpAQCAtMTAyMiw4ICsxMDQxLDggQEAg bWF5YmVfcHJpbnRfYXJyYXlfaW5kZXggKHN0cnVjdCB0eXBlICppbmRleF90 eXBlLCBMT05HRVNUIGluZGV4LAogdm9pZAogdmFsX3ByaW50X2FycmF5X2Vs ZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZh bGFkZHIsCiAJCQkgIENPUkVfQUREUiBhZGRyZXNzLCBzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLAotCQkJICBpbnQgZm9ybWF0LCBpbnQgZGVyZWZfcmVmLAot CQkJICBpbnQgcmVjdXJzZSwgZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5 LAorCQkJICBpbnQgcmVjdXJzZSwKKwkJCSAgY29uc3Qgc3RydWN0IHZhbHVl X3ByaW50X29wdGlvbnMgKm9wdGlvbnMsCiAJCQkgIHVuc2lnbmVkIGludCBp KQogewogICB1bnNpZ25lZCBpbnQgdGhpbmdzX3ByaW50ZWQgPSAwOwpAQCAt MTA3MCwxMSArMTA4OSwxMSBAQCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMg KHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwK IAogICBhbm5vdGF0ZV9hcnJheV9zZWN0aW9uX2JlZ2luIChpLCBlbHR0eXBl KTsKIAotICBmb3IgKDsgaSA8IGxlbiAmJiB0aGluZ3NfcHJpbnRlZCA8IHBy aW50X21heDsgaSsrKQorICBmb3IgKDsgaSA8IGxlbiAmJiB0aGluZ3NfcHJp bnRlZCA8IG9wdGlvbnMtPnByaW50X21heDsgaSsrKQogICAgIHsKICAgICAg IGlmIChpICE9IDApCiAJewotCSAgaWYgKHByZXR0eXByaW50X2FycmF5cykK KwkgIGlmIChvcHRpb25zLT5wcmV0dHlwcmludF9hcnJheXMpCiAJICAgIHsK IAkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIsXG4iKTsKIAkg ICAgICBwcmludF9zcGFjZXNfZmlsdGVyZWQgKDIgKyAyICogcmVjdXJzZSwg c3RyZWFtKTsKQEAgLTEwODYsNyArMTEwNSw3IEBAIHZhbF9wcmludF9hcnJh eV9lbGVtZW50cyAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRl ICp2YWxhZGRyLAogCX0KICAgICAgIHdyYXBfaGVyZSAobl9zcGFjZXMgKDIg KyAyICogcmVjdXJzZSkpOwogICAgICAgbWF5YmVfcHJpbnRfYXJyYXlfaW5k ZXggKGluZGV4X3R5cGUsIGkgKyBsb3dfYm91bmRfaW5kZXgsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLCBmb3JtYXQsIHByZXR0 eSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLCBv cHRpb25zKTsKIAogICAgICAgcmVwMSA9IGkgKyAxOwogICAgICAgcmVwcyA9 IDE7CkBAIC0xMDk3LDIxICsxMTE2LDIxIEBAIHZhbF9wcmludF9hcnJheV9l bGVtZW50cyAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2 YWxhZGRyLAogCSAgKytyZXAxOwogCX0KIAotICAgICAgaWYgKHJlcHMgPiBy ZXBlYXRfY291bnRfdGhyZXNob2xkKQorICAgICAgaWYgKHJlcHMgPiBvcHRp b25zLT5yZXBlYXRfY291bnRfdGhyZXNob2xkKQogCXsKLQkgIHZhbF9wcmlu dCAoZWx0dHlwZSwgdmFsYWRkciArIGkgKiBlbHRsZW4sIDAsIDAsIHN0cmVh bSwgZm9ybWF0LAotCQkgICAgIGRlcmVmX3JlZiwgcmVjdXJzZSArIDEsIHBy ZXR0eSwgY3VycmVudF9sYW5ndWFnZSk7CisJICB2YWxfcHJpbnQgKGVsdHR5 cGUsIHZhbGFkZHIgKyBpICogZWx0bGVuLCAwLCAwLCBzdHJlYW0sCisJCSAg ICAgcmVjdXJzZSArIDEsIG9wdGlvbnMsIGN1cnJlbnRfbGFuZ3VhZ2UpOwog CSAgYW5ub3RhdGVfZWx0X3JlcCAocmVwcyk7CiAJICBmcHJpbnRmX2ZpbHRl cmVkIChzdHJlYW0sICIgPHJlcGVhdHMgJXUgdGltZXM+IiwgcmVwcyk7CiAJ ICBhbm5vdGF0ZV9lbHRfcmVwX2VuZCAoKTsKIAogCSAgaSA9IHJlcDEgLSAx OwotCSAgdGhpbmdzX3ByaW50ZWQgKz0gcmVwZWF0X2NvdW50X3RocmVzaG9s ZDsKKwkgIHRoaW5nc19wcmludGVkICs9IG9wdGlvbnMtPnJlcGVhdF9jb3Vu dF90aHJlc2hvbGQ7CiAJfQogICAgICAgZWxzZQogCXsKLQkgIHZhbF9wcmlu dCAoZWx0dHlwZSwgdmFsYWRkciArIGkgKiBlbHRsZW4sIDAsIDAsIHN0cmVh bSwgZm9ybWF0LAotCQkgICAgIGRlcmVmX3JlZiwgcmVjdXJzZSArIDEsIHBy ZXR0eSwgY3VycmVudF9sYW5ndWFnZSk7CisJICB2YWxfcHJpbnQgKGVsdHR5 cGUsIHZhbGFkZHIgKyBpICogZWx0bGVuLCAwLCAwLCBzdHJlYW0sCisJCSAg ICAgcmVjdXJzZSArIDEsIG9wdGlvbnMsIGN1cnJlbnRfbGFuZ3VhZ2UpOwog CSAgYW5ub3RhdGVfZWx0ICgpOwogCSAgdGhpbmdzX3ByaW50ZWQrKzsKIAl9 CkBAIC0xMTczLDcgKzExOTIsOCBAQCBwYXJ0aWFsX21lbW9yeV9yZWFkIChD T1JFX0FERFIgbWVtYWRkciwgZ2RiX2J5dGUgKm15YWRkciwgaW50IGxlbiwg aW50ICplcnJub3B0cgogLyogRklYTUU6IFVzZSB0YXJnZXRfcmVhZF9zdHJp bmcuICAqLwogCiBpbnQKLXZhbF9wcmludF9zdHJpbmcgKENPUkVfQUREUiBh ZGRyLCBpbnQgbGVuLCBpbnQgd2lkdGgsIHN0cnVjdCB1aV9maWxlICpzdHJl YW0pCit2YWxfcHJpbnRfc3RyaW5nIChDT1JFX0FERFIgYWRkciwgaW50IGxl biwgaW50IHdpZHRoLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAorCQkgIGNv bnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQogewog ICBpbnQgZm9yY2VfZWxsaXBzaXMgPSAwOwkvKiBGb3JjZSBlbGxpcHNpcyB0 byBiZSBwcmludGVkIGlmIG5vbnplcm8uICovCiAgIGludCBlcnJjb2RlOwkJ CS8qIEVycm5vIHJldHVybmVkIGZyb20gYmFkIHJlYWRzLiAqLwpAQCAtMTE5 NCw3ICsxMjE0LDcgQEAgdmFsX3ByaW50X3N0cmluZyAoQ09SRV9BRERSIGFk ZHIsIGludCBsZW4sIGludCB3aWR0aCwgc3RydWN0IHVpX2ZpbGUgKnN0cmVh bSkKICAgICAgYmVjYXVzZSBmaW5kaW5nIHRoZSBudWxsIGJ5dGUgKG9yIGF2 YWlsYWJsZSBtZW1vcnkpIGlzIHdoYXQgYWN0dWFsbHkKICAgICAgbGltaXRz IHRoZSBmZXRjaC4gKi8KIAotICBmZXRjaGxpbWl0ID0gKGxlbiA9PSAtMSA/ IHByaW50X21heCA6IG1pbiAobGVuLCBwcmludF9tYXgpKTsKKyAgZmV0Y2hs aW1pdCA9IChsZW4gPT0gLTEgPyBvcHRpb25zLT5wcmludF9tYXggOiBtaW4g KGxlbiwgb3B0aW9ucy0+cHJpbnRfbWF4KSk7CiAKICAgLyogTm93IGRlY2lk ZSBob3cgbGFyZ2Ugb2YgY2h1bmtzIHRvIHRyeSB0byByZWFkIGluIG9uZSBv cGVyYXRpb24uICBUaGlzCiAgICAgIGlzIGFsc28gcHJldHR5IHNpbXBsZS4g IElmIExFTiA+PSB6ZXJvLCB0aGVuIHdlIHdhbnQgZmV0Y2hsaW1pdCBjaGFy cywKQEAgLTEzMTcsMTEgKzEzMzcsMTEgQEAgdmFsX3ByaW50X3N0cmluZyAo Q09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB3aWR0aCwgc3RydWN0IHVp X2ZpbGUgKnN0cmVhbSkKICAgICAgYW5kIHRoZW4gdGhlIGVycm9yIG1lc3Nh Z2UuICAqLwogICBpZiAoZXJyY29kZSA9PSAwIHx8IGJ1ZnB0ciA+IGJ1ZmZl cikKICAgICB7Ci0gICAgICBpZiAoYWRkcmVzc3ByaW50KQorICAgICAgaWYg KG9wdGlvbnMtPmFkZHJlc3NwcmludCkKIAl7CiAJICBmcHV0c19maWx0ZXJl ZCAoIiAiLCBzdHJlYW0pOwogCX0KLSAgICAgIExBX1BSSU5UX1NUUklORyAo c3RyZWFtLCBidWZmZXIsIChidWZwdHIgLSBidWZmZXIpIC8gd2lkdGgsIHdp ZHRoLCBmb3JjZV9lbGxpcHNpcyk7CisgICAgICBMQV9QUklOVF9TVFJJTkcg KHN0cmVhbSwgYnVmZmVyLCAoYnVmcHRyIC0gYnVmZmVyKSAvIHdpZHRoLCB3 aWR0aCwgZm9yY2VfZWxsaXBzaXMsIG9wdGlvbnMpOwogICAgIH0KIAogICBp ZiAoZXJyY29kZSAhPSAwKQpAQCAtMTQ5NCw3ICsxNTE0LDggQEAgX2luaXRp YWxpemVfdmFscHJpbnQgKHZvaWQpCiAgIGFkZF9hbGlhc19jbWQgKCJwIiwg InByaW50Iiwgbm9fY2xhc3MsIDEsICZzaG93bGlzdCk7CiAgIGFkZF9hbGlh c19jbWQgKCJwciIsICJwcmludCIsIG5vX2NsYXNzLCAxLCAmc2hvd2xpc3Qp OwogCi0gIGFkZF9zZXRzaG93X3VpbnRlZ2VyX2NtZCAoImVsZW1lbnRzIiwg bm9fY2xhc3MsICZwcmludF9tYXgsIF8oIlwKKyAgYWRkX3NldHNob3dfdWlu dGVnZXJfY21kICgiZWxlbWVudHMiLCBub19jbGFzcywKKwkJCSAgICAmdXNl cl9wcmludF9vcHRpb25zLnByaW50X21heCwgXygiXAogU2V0IGxpbWl0IG9u IHN0cmluZyBjaGFycyBvciBhcnJheSBlbGVtZW50cyB0byBwcmludC4iKSwg XygiXAogU2hvdyBsaW1pdCBvbiBzdHJpbmcgY2hhcnMgb3IgYXJyYXkgZWxl bWVudHMgdG8gcHJpbnQuIiksIF8oIlwKIFwic2V0IHByaW50IGVsZW1lbnRz IDBcIiBjYXVzZXMgdGhlcmUgdG8gYmUgbm8gbGltaXQuIiksCkBAIC0xNTAy LDcgKzE1MjMsOCBAQCBTaG93IGxpbWl0IG9uIHN0cmluZyBjaGFycyBvciBh cnJheSBlbGVtZW50cyB0byBwcmludC4iKSwgXygiXAogCQkJICAgIHNob3df cHJpbnRfbWF4LAogCQkJICAgICZzZXRwcmludGxpc3QsICZzaG93cHJpbnRs aXN0KTsKIAotICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoIm51bGwtc3Rv cCIsIG5vX2NsYXNzLCAmc3RvcF9wcmludF9hdF9udWxsLCBfKCJcCisgIGFk ZF9zZXRzaG93X2Jvb2xlYW5fY21kICgibnVsbC1zdG9wIiwgbm9fY2xhc3Ms CisJCQkgICAmdXNlcl9wcmludF9vcHRpb25zLnN0b3BfcHJpbnRfYXRfbnVs bCwgXygiXAogU2V0IHByaW50aW5nIG9mIGNoYXIgYXJyYXlzIHRvIHN0b3Ag YXQgZmlyc3QgbnVsbCBjaGFyLiIpLCBfKCJcCiBTaG93IHByaW50aW5nIG9m IGNoYXIgYXJyYXlzIHRvIHN0b3AgYXQgZmlyc3QgbnVsbCBjaGFyLiIpLCBO VUxMLAogCQkJICAgTlVMTCwKQEAgLTE1MTAsNyArMTUzMiw3IEBAIFNob3cg cHJpbnRpbmcgb2YgY2hhciBhcnJheXMgdG8gc3RvcCBhdCBmaXJzdCBudWxs IGNoYXIuIiksIE5VTEwsCiAJCQkgICAmc2V0cHJpbnRsaXN0LCAmc2hvd3By aW50bGlzdCk7CiAKICAgYWRkX3NldHNob3dfdWludGVnZXJfY21kICgicmVw ZWF0cyIsIG5vX2NsYXNzLAotCQkJICAgICZyZXBlYXRfY291bnRfdGhyZXNo b2xkLCBfKCJcCisJCQkgICAgJnVzZXJfcHJpbnRfb3B0aW9ucy5yZXBlYXRf Y291bnRfdGhyZXNob2xkLCBfKCJcCiBTZXQgdGhyZXNob2xkIGZvciByZXBl YXRlZCBwcmludCBlbGVtZW50cy4iKSwgXygiXAogU2hvdyB0aHJlc2hvbGQg Zm9yIHJlcGVhdGVkIHByaW50IGVsZW1lbnRzLiIpLCBfKCJcCiBcInNldCBw cmludCByZXBlYXRzIDBcIiBjYXVzZXMgYWxsIGVsZW1lbnRzIHRvIGJlIGlu ZGl2aWR1YWxseSBwcmludGVkLiIpLApAQCAtMTUxOCwyOCArMTU0MCwzMiBA QCBTaG93IHRocmVzaG9sZCBmb3IgcmVwZWF0ZWQgcHJpbnQgZWxlbWVudHMu IiksIF8oIlwKIAkJCSAgICBzaG93X3JlcGVhdF9jb3VudF90aHJlc2hvbGQs CiAJCQkgICAgJnNldHByaW50bGlzdCwgJnNob3dwcmludGxpc3QpOwogCi0g IGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgicHJldHR5IiwgY2xhc3Nfc3Vw cG9ydCwgJnByZXR0eXByaW50X3N0cnVjdHMsIF8oIlwKKyAgYWRkX3NldHNo b3dfYm9vbGVhbl9jbWQgKCJwcmV0dHkiLCBjbGFzc19zdXBwb3J0LAorCQkJ ICAgJnVzZXJfcHJpbnRfb3B0aW9ucy5wcmV0dHlwcmludF9zdHJ1Y3RzLCBf KCJcCiBTZXQgcHJldHR5cHJpbnRpbmcgb2Ygc3RydWN0dXJlcy4iKSwgXygi XAogU2hvdyBwcmV0dHlwcmludGluZyBvZiBzdHJ1Y3R1cmVzLiIpLCBOVUxM LAogCQkJICAgTlVMTCwKIAkJCSAgIHNob3dfcHJldHR5cHJpbnRfc3RydWN0 cywKIAkJCSAgICZzZXRwcmludGxpc3QsICZzaG93cHJpbnRsaXN0KTsKIAot ICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoInVuaW9uIiwgY2xhc3Nfc3Vw cG9ydCwgJnVuaW9ucHJpbnQsIF8oIlwKKyAgYWRkX3NldHNob3dfYm9vbGVh bl9jbWQgKCJ1bmlvbiIsIGNsYXNzX3N1cHBvcnQsCisJCQkgICAmdXNlcl9w cmludF9vcHRpb25zLnVuaW9ucHJpbnQsIF8oIlwKIFNldCBwcmludGluZyBv ZiB1bmlvbnMgaW50ZXJpb3IgdG8gc3RydWN0dXJlcy4iKSwgXygiXAogU2hv dyBwcmludGluZyBvZiB1bmlvbnMgaW50ZXJpb3IgdG8gc3RydWN0dXJlcy4i KSwgTlVMTCwKIAkJCSAgIE5VTEwsCiAJCQkgICBzaG93X3VuaW9ucHJpbnQs CiAJCQkgICAmc2V0cHJpbnRsaXN0LCAmc2hvd3ByaW50bGlzdCk7CiAKLSAg YWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJhcnJheSIsIGNsYXNzX3N1cHBv cnQsICZwcmV0dHlwcmludF9hcnJheXMsIF8oIlwKKyAgYWRkX3NldHNob3df Ym9vbGVhbl9jbWQgKCJhcnJheSIsIGNsYXNzX3N1cHBvcnQsCisJCQkgICAm dXNlcl9wcmludF9vcHRpb25zLnByZXR0eXByaW50X2FycmF5cywgXygiXAog U2V0IHByZXR0eXByaW50aW5nIG9mIGFycmF5cy4iKSwgXygiXAogU2hvdyBw cmV0dHlwcmludGluZyBvZiBhcnJheXMuIiksIE5VTEwsCiAJCQkgICBOVUxM LAogCQkJICAgc2hvd19wcmV0dHlwcmludF9hcnJheXMsCiAJCQkgICAmc2V0 cHJpbnRsaXN0LCAmc2hvd3ByaW50bGlzdCk7CiAKLSAgYWRkX3NldHNob3df Ym9vbGVhbl9jbWQgKCJhZGRyZXNzIiwgY2xhc3Nfc3VwcG9ydCwgJmFkZHJl c3NwcmludCwgXygiXAorICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImFk ZHJlc3MiLCBjbGFzc19zdXBwb3J0LAorCQkJICAgJnVzZXJfcHJpbnRfb3B0 aW9ucy5hZGRyZXNzcHJpbnQsIF8oIlwKIFNldCBwcmludGluZyBvZiBhZGRy ZXNzZXMuIiksIF8oIlwKIFNob3cgcHJpbnRpbmcgb2YgYWRkcmVzc2VzLiIp LCBOVUxMLAogCQkJICAgTlVMTCwKQEAgLTE1NzgsMTUgKzE2MDQsOCBAQCBV c2UgJ3Nob3cgaW5wdXQtcmFkaXgnIG9yICdzaG93IG91dHB1dC1yYWRpeCcg dG8gaW5kZXBlbmRlbnRseSBzaG93IGVhY2guIiksCiAJICAgJnNob3dsaXN0 KTsKIAogICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImFycmF5LWluZGV4 ZXMiLCBjbGFzc19zdXBwb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgJnByaW50X2FycmF5X2luZGV4ZXMsIF8oIlwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICZ1c2VyX3ByaW50X29wdGlvbnMucHJpbnRfYXJyYXlf aW5kZXhlcywgXygiXAogU2V0IHByaW50aW5nIG9mIGFycmF5IGluZGV4ZXMu IiksIF8oIlwKIFNob3cgcHJpbnRpbmcgb2YgYXJyYXkgaW5kZXhlcyIpLCBO VUxMLCBOVUxMLCBzaG93X3ByaW50X2FycmF5X2luZGV4ZXMsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmc2V0cHJpbnRsaXN0LCAmc2hvd3ByaW50 bGlzdCk7Ci0KLSAgLyogR2l2ZSBwZW9wbGUgdGhlIGRlZmF1bHRzIHdoaWNo IHRoZXkgYXJlIHVzZWQgdG8uICAqLwotICBwcmV0dHlwcmludF9zdHJ1Y3Rz ID0gMDsKLSAgcHJldHR5cHJpbnRfYXJyYXlzID0gMDsKLSAgdW5pb25wcmlu dCA9IDE7Ci0gIGFkZHJlc3NwcmludCA9IDE7Ci0gIHByaW50X21heCA9IFBS SU5UX01BWF9ERUZBVUxUOwogfQpkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHByaW50 LmggYi9nZGIvdmFscHJpbnQuaAppbmRleCAzYjIwNTE2Li5mOWQ3NTAxIDEw MDY0NAotLS0gYS9nZGIvdmFscHJpbnQuaAorKysgYi9nZGIvdmFscHJpbnQu aApAQCAtMjEsNDUgKzIxLDkxIEBACiAjaWZuZGVmIFZBTFBSSU5UX0gKICNk ZWZpbmUgVkFMUFJJTlRfSAogCi1leHRlcm4gaW50IHByZXR0eXByaW50X2Fy cmF5czsJLyogQ29udHJvbHMgcHJldHR5IHByaW50aW5nIG9mIGFycmF5cy4g ICovCi1leHRlcm4gaW50IHByZXR0eXByaW50X3N0cnVjdHM7CS8qIENvbnRy b2xzIHByZXR0eSBwcmludGluZyBvZiBzdHJ1Y3R1cmVzICovCi1leHRlcm4g aW50IHByZXR0eXByaW50X2FycmF5czsJLyogQ29udHJvbHMgcHJldHR5IHBy aW50aW5nIG9mIGFycmF5cy4gICovCisvKiBUaGlzIGlzIHVzZWQgdG8gcGFz cyBmb3JtYXR0aW5nIG9wdGlvbnMgdG8gdmFyaW91cyB2YWx1ZS1wcmludGlu ZworICAgZnVuY3Rpb25zLiAgKi8KK3N0cnVjdCB2YWx1ZV9wcmludF9vcHRp b25zCit7CisgIC8qIFByZXR0eS1wcmludGluZyBjb250cm9sLiAgKi8KKyAg ZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5OwogCi1leHRlcm4gaW50IHZ0 YmxwcmludDsJCS8qIENvbnRyb2xzIHByaW50aW5nIG9mIHZ0YmwncyAqLwot ZXh0ZXJuIGludCB1bmlvbnByaW50OwkJLyogQ29udHJvbHMgcHJpbnRpbmcg b2YgbmVzdGVkIHVuaW9ucy4gICovCi1leHRlcm4gaW50IGFkZHJlc3Nwcmlu dDsJLyogQ29udHJvbHMgcHJldHR5IHByaW50aW5nIG9mIGFkZHJlc3Nlcy4g ICovCi1leHRlcm4gaW50IG9iamVjdHByaW50OwkJLyogQ29udHJvbHMgbG9v a2luZyB1cCBhbiBvYmplY3QncyBkZXJpdmVkIHR5cGUKLQkJCQkgICB1c2lu ZyB3aGF0IHdlIGZpbmQgaW4gaXRzIHZ0YWJsZXMuICAqLworICAvKiBDb250 cm9scyBwcmV0dHkgcHJpbnRpbmcgb2YgYXJyYXlzLiAgKi8KKyAgaW50IHBy ZXR0eXByaW50X2FycmF5czsKIAotZXh0ZXJuIHVuc2lnbmVkIGludCBwcmlu dF9tYXg7CS8qIE1heCAjIG9mIGNoYXJzIGZvciBzdHJpbmdzL3ZlY3RvcnMg Ki8KKyAgLyogQ29udHJvbHMgcHJldHR5IHByaW50aW5nIG9mIHN0cnVjdHVy ZXMuICAqLworICBpbnQgcHJldHR5cHJpbnRfc3RydWN0czsKIAotLyogRmxh ZyB0byBsb3ctbGV2ZWwgcHJpbnQgcm91dGluZXMgdGhhdCB0aGlzIHZhbHVl IGlzIGJlaW5nIHByaW50ZWQKLSAgIGluIGFuIGVwb2NoIHdpbmRvdy4gIFdl J2QgbGlrZSB0byBwYXNzIHRoaXMgYXMgYSBwYXJhbWV0ZXIsIGJ1dAotICAg ZXZlcnkgcm91dGluZSB3b3VsZCBuZWVkIHRvIHRha2UgaXQuICBQZXJoYXBz IHdlIGNhbiBlbmNhcHN1bGF0ZQotICAgdGhpcyBpbiB0aGUgSS9PIHN0cmVh bSBvbmNlIHdlIGhhdmUgR05VIHN0ZGlvLiAqLwotZXh0ZXJuIGludCBpbnNw ZWN0X2l0OworICAvKiBDb250cm9scyBwcmludGluZyBvZiB2aXJ0dWFsIHRh Ymxlcy4gICovCisgIGludCB2dGJscHJpbnQ7CiAKLS8qIFByaW50IHJlcGVh dCBjb3VudHMgaWYgdGhlcmUgYXJlIG1vcmUgdGhhbiB0aGlzIG1hbnkgcmVw ZXRpdGlvbnMgb2YgYW4KLSAgIGVsZW1lbnQgaW4gYW4gYXJyYXkuICBSZWZl cmVuY2VkIGJ5IHRoZSBsb3cgbGV2ZWwgbGFuZ3VhZ2UgZGVwZW5kZW50Ci0g ICBwcmludCByb3V0aW5lcy4gKi8KLWV4dGVybiB1bnNpZ25lZCBpbnQgcmVw ZWF0X2NvdW50X3RocmVzaG9sZDsKKyAgLyogQ29udHJvbHMgcHJpbnRpbmcg b2YgbmVzdGVkIHVuaW9ucy4gICovCisgIGludCB1bmlvbnByaW50OwogCi1l eHRlcm4gaW50IG91dHB1dF9mb3JtYXQ7CisgIC8qIENvbnRyb2xzIHByaW50 aW5nIG9mIGFkZHJlc3Nlcy4gICovCisgIGludCBhZGRyZXNzcHJpbnQ7CiAK LWV4dGVybiBpbnQgc3RvcF9wcmludF9hdF9udWxsOwkvKiBTdG9wIHByaW50 aW5nIGF0IG51bGwgY2hhcj8gKi8KKyAgLyogQ29udHJvbHMgbG9va2luZyB1 cCBhbiBvYmplY3QncyBkZXJpdmVkIHR5cGUgdXNpbmcgd2hhdCB3ZSBmaW5k CisgICAgIGluIGl0cyB2dGFibGVzLiAgKi8KKyAgaW50IG9iamVjdHByaW50 OworCisgIC8qIE1heGltdW0gbnVtYmVyIG9mIGNoYXJzIHRvIHByaW50IGZv ciBhIHN0cmluZyBwb2ludGVyIHZhbHVlIG9yIHZlY3RvcgorICAgICBjb250 ZW50cywgb3IgVUlOVF9NQVggZm9yIG5vIGxpbWl0LiAgTm90ZSB0aGF0ICJz ZXQgcHJpbnQgZWxlbWVudHMgMCIKKyAgICAgc3RvcmVzIFVJTlRfTUFYIGlu IHByaW50X21heCwgd2hpY2ggZGlzcGxheXMgaW4gYSBzaG93IGNvbW1hbmQg YXMKKyAgICAgInVubGltaXRlZCIuICovCisgIHVuc2lnbmVkIGludCBwcmlu dF9tYXg7CisKKyAgLyogUHJpbnQgcmVwZWF0IGNvdW50cyBpZiB0aGVyZSBh cmUgbW9yZSB0aGFuIHRoaXMgbWFueSByZXBldGl0aW9ucworICAgICBvZiBh biBlbGVtZW50IGluIGFuIGFycmF5LiAgKi8KKyAgdW5zaWduZWQgaW50IHJl cGVhdF9jb3VudF90aHJlc2hvbGQ7CisKKyAgaW50IG91dHB1dF9mb3JtYXQ7 CisKKyAgLyogU3RvcCBwcmludGluZyBhdCBudWxsIGNoYXJhY3Rlcj8gICov CisgIGludCBzdG9wX3ByaW50X2F0X251bGw7CisKKyAgLyogSWYgdHJ1ZSwg cHJpbnQgInJhdyIgLS0gYnlwYXNzIGFueSBQeXRob24gcHJldHR5LXByaW50 ZXJzLiAgKi8KKyAgaW50IHJhdzsKKworICAvKiBUcnVlIGlmIHRoaXMgdmFs dWUgaXMgYmVpbmcgcHJpbnRlZCBpbiBhbiBlcG9jaCB3aW5kb3cuICAqLwor ICBpbnQgaW5zcGVjdF9pdDsKKworICAvKiBUcnVlIGlmIHdlIHNob3VsZCBw cmludCB0aGUgaW5kZXggb2YgZWFjaCBlbGVtZW50IHdoZW4gcHJpbnRpbmcK KyAgICAgYW4gYXJyYXkuICAqLworICBpbnQgcHJpbnRfYXJyYXlfaW5kZXhl czsKKworICAvKiBJZiBub256ZXJvLCB0aGVuIGRlcmVmZXJlbmNlIHJlZmVy ZW5jZXMsIG90aGVyd2lzZSBqdXN0IHByaW50CisgICAgIHRoZW0gbGlrZSBw b2ludGVycy4gICovCisgIGludCBkZXJlZl9yZWY7CisKKyAgLyogSWYgbm9u emVybywgcHJpbnQgc3RhdGljIGZpZWxkcy4gICovCisgIGludCBzdGF0aWNf ZmllbGRfcHJpbnQ7CisKKyAgLyogSWYgbm9uemVybywgcHJpbnQgc3RhdGlj IGZpZWxkcyBmb3IgUGFzY2FsLiAgRklYTUU6IEMrKyBhbmQgSmF2YQorICAg ICBzaGFyZSBvbmUgZmxhZywgd2h5IG5vdCBQYXNjYWwgdG9vPyAgKi8KKyAg aW50IHBhc2NhbF9zdGF0aWNfZmllbGRfcHJpbnQ7Cit9OworCisvKiBUaGUg Z2xvYmFsIHByaW50IG9wdGlvbnMgc2V0IGJ5IHRoZSB1c2VyLiAgKi8KK2V4 dGVybiBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyB1c2VyX3ByaW50X29w dGlvbnM7CisKKy8qIEluaXRpYWxpemUgKk9QVFMgdG8gYmUgYSBjb3B5IG9m IHRoZSB1c2VyIHByaW50IG9wdGlvbnMsIGJ1dCB3aXRoCisgICBwcmV0dHkt cHJpbnRpbmcgZGlzYWJsZWQuICAqLworZXh0ZXJuIHZvaWQgZ2V0X3Jhd19w cmludF9vcHRpb25zIChzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0 cyk7CisKKy8qIEluaXRpYWxpemUgKk9QVFMgdG8gYmUgYSBjb3B5IG9mIHRo ZSB1c2VyIHByaW50IG9wdGlvbnMsIGJ1dCB1c2luZworICAgRk9STUFUIGFz IHRoZSBmb3JtYXR0aW5nIG9wdGlvbi4gICovCitleHRlcm4gdm9pZCBnZXRf Zm9ybWF0dGVkX3ByaW50X29wdGlvbnMgKHN0cnVjdCB2YWx1ZV9wcmludF9v cHRpb25zICpvcHRzLAorCQkJCQkgY2hhciBmb3JtYXQpOwogCi1leHRlcm4g aW50IHByaW50X2FycmF5X2luZGV4ZXNfcCAodm9pZCk7Ci0gCiBleHRlcm4g aW50IGdldF9hcnJheV9ib3VuZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBsb25n ICpsb3dfYm91bmQsCiAJCQkgICAgIGxvbmcgKmhpZ2hfYm91bmQpOwogCiBl eHRlcm4gdm9pZCBtYXliZV9wcmludF9hcnJheV9pbmRleCAoc3RydWN0IHR5 cGUgKmluZGV4X3R5cGUsIExPTkdFU1QgaW5kZXgsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVh bSwgaW50IGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBlbnVtIHZhbF9wcmV0dHlwcmludCBwcmV0dHkpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB1aV9maWxl ICpzdHJlYW0sCisJCQkJICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRf b3B0aW9ucyAqb3B0aW9ucyk7CiAKIGV4dGVybiB2b2lkIHZhbF9wcmludF9h cnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUgKiwgY29uc3QgZ2RiX2J5dGUg KiwKIAkJCQkgICAgICBDT1JFX0FERFIsIHN0cnVjdCB1aV9maWxlICosIGlu dCwKLQkJCQkgICAgICBpbnQsIGludCwgZW51bSB2YWxfcHJldHR5cHJpbnQs CisJCQkJICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMg KiwKIAkJCQkgICAgICB1bnNpZ25lZCBpbnQpOwogCiBleHRlcm4gdm9pZCB2 YWxfcHJpbnRfdHlwZV9jb2RlX2ludCAoc3RydWN0IHR5cGUgKiwgY29uc3Qg Z2RiX2J5dGUgKiwKZGlmZiAtLWdpdCBhL2dkYi92YWx1ZS5jIGIvZ2RiL3Zh bHVlLmMKaW5kZXggMGI1MzBmMC4uNTE0YjNmYyAxMDA2NDQKLS0tIGEvZ2Ri L3ZhbHVlLmMKKysrIGIvZ2RiL3ZhbHVlLmMKQEAgLTM2LDYgKzM2LDcgQEAK ICNpbmNsdWRlICJibG9jay5oIgogI2luY2x1ZGUgImRmcC5oIgogI2luY2x1 ZGUgIm9iamZpbGVzLmgiCisjaW5jbHVkZSAidmFscHJpbnQuaCIKIAogI2lu Y2x1ZGUgInB5dGhvbi9weXRob24uaCIKIApAQCAtNzEwLDcgKzcxMSw3IEBA IHNob3dfdmFsdWVzIChjaGFyICpudW1fZXhwLCBpbnQgZnJvbV90dHkpCiAg ICAgewogICAgICAgdmFsID0gYWNjZXNzX3ZhbHVlX2hpc3RvcnkgKGkpOwog ICAgICAgcHJpbnRmX2ZpbHRlcmVkICgoIiQlZCA9ICIpLCBpKTsKLSAgICAg IHZhbHVlX3ByaW50ICh2YWwsIGdkYl9zdGRvdXQsIDAsIFZhbF9wcmV0dHlf ZGVmYXVsdCk7CisgICAgICB2YWx1ZV9wcmludCAodmFsLCBnZGJfc3Rkb3V0 LCAmdXNlcl9wcmludF9vcHRpb25zKTsKICAgICAgIHByaW50Zl9maWx0ZXJl ZCAoKCJcbiIpKTsKICAgICB9CiAKQEAgLTk3OCw3ICs5NzksNyBAQCBzaG93 X2NvbnZlbmllbmNlIChjaGFyICppZ25vcmUsIGludCBmcm9tX3R0eSkKIAl9 CiAgICAgICBwcmludGZfZmlsdGVyZWQgKCgiJCVzID0gIiksIHZhci0+bmFt ZSk7CiAgICAgICB2YWx1ZV9wcmludCAodmFsdWVfb2ZfaW50ZXJuYWx2YXIg KHZhciksIGdkYl9zdGRvdXQsCi0JCSAgIDAsIFZhbF9wcmV0dHlfZGVmYXVs dCk7CisJCSAgICZ1c2VyX3ByaW50X29wdGlvbnMpOwogICAgICAgcHJpbnRm X2ZpbHRlcmVkICgoIlxuIikpOwogICAgIH0KICAgaWYgKCF2YXJzZWVuKQpk aWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmggYi9nZGIvdmFsdWUuaAppbmRleCBm NTNkMzMzLi42NWZlYTk5IDEwMDY0NAotLS0gYS9nZGIvdmFsdWUuaAorKysg Yi9nZGIvdmFsdWUuaApAQCAtMzIsNiArMzIsNyBAQCBzdHJ1Y3Qgc3ltYm9s Owogc3RydWN0IHR5cGU7CiBzdHJ1Y3QgdWlfZmlsZTsKIHN0cnVjdCBsYW5n dWFnZV9kZWZuOworc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnM7CiAKIC8q IFRoZSBzdHJ1Y3R1cmUgd2hpY2ggZGVmaW5lcyB0aGUgdHlwZSBvZiBhIHZh bHVlLiAgSXQgc2hvdWxkIG5ldmVyCiAgICBiZSBwb3NzaWJsZSBmb3IgYSBw cm9ncmFtIGx2YWwgdmFsdWUgdG8gc3Vydml2ZSBvdmVyIGEgY2FsbCB0byB0 aGUKQEAgLTUyNiw4ICs1MjcsOCBAQCBleHRlcm4gdm9pZCBwcmludF9mbG9h dGluZyAoY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIHN0cnVjdCB0eXBlICp0 eXBlLAogZXh0ZXJuIHZvaWQgcHJpbnRfZGVjaW1hbF9mbG9hdGluZyAoY29u c3QgZ2RiX2J5dGUgKnZhbGFkZHIsIHN0cnVjdCB0eXBlICp0eXBlLAogCQkJ CSAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKTsKIAotZXh0ZXJuIGludCB2 YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICp2YWwsIHN0cnVjdCB1aV9maWxl ICpzdHJlYW0sIGludCBmb3JtYXQsCi0JCQllbnVtIHZhbF9wcmV0dHlwcmlu dCBwcmV0dHkpOworZXh0ZXJuIGludCB2YWx1ZV9wcmludCAoc3RydWN0IHZh bHVlICp2YWwsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCisJCQljb25zdCBz dHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucyk7CiAKIGV4dGVy biB2b2lkIHZhbHVlX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdmFs dWUgKnZhbCwKIAkJCQkJc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IGZv cm1hdCwKQEAgLTUzNywxOSArNTM4LDE4IEBAIGV4dGVybiBzdHJ1Y3QgdmFs dWUgKnZhbHVlX3JlbGVhc2VfdG9fbWFyayAoc3RydWN0IHZhbHVlICptYXJr KTsKIAogZXh0ZXJuIGludCB2YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBl LCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIAkJICAgICAgaW50IGVtYmVk ZGVkX29mZnNldCwgQ09SRV9BRERSIGFkZHJlc3MsCi0JCSAgICAgIHN0cnVj dCB1aV9maWxlICpzdHJlYW0sIGludCBmb3JtYXQsCi0JCSAgICAgIGludCBk ZXJlZl9yZWYsIGludCByZWN1cnNlLAotCQkgICAgICBlbnVtIHZhbF9wcmV0 dHlwcmludCBwcmV0dHksCisJCSAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJl YW0sIGludCByZWN1cnNlLAorCQkgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVf cHJpbnRfb3B0aW9ucyAqb3B0aW9ucywKIAkJICAgICAgY29uc3Qgc3RydWN0 IGxhbmd1YWdlX2RlZm4gKmxhbmd1YWdlKTsKIAogZXh0ZXJuIGludCBjb21t b25fdmFsX3ByaW50IChzdHJ1Y3QgdmFsdWUgKnZhbCwKLQkJCSAgICAgc3Ry dWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IGZvcm1hdCwKLQkJCSAgICAgaW50 IGRlcmVmX3JlZiwgaW50IHJlY3Vyc2UsCi0JCQkgICAgIGVudW0gdmFsX3By ZXR0eXByaW50IHByZXR0eSwKKwkJCSAgICAgc3RydWN0IHVpX2ZpbGUgKnN0 cmVhbSwgaW50IHJlY3Vyc2UsCisJCQkgICAgIGNvbnN0IHN0cnVjdCB2YWx1 ZV9wcmludF9vcHRpb25zICpvcHRpb25zLAogCQkJICAgICBjb25zdCBzdHJ1 Y3QgbGFuZ3VhZ2VfZGVmbiAqbGFuZ3VhZ2UpOwogCiBleHRlcm4gaW50IHZh bF9wcmludF9zdHJpbmcgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQg d2lkdGgsCi0JCQkgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pOworCQkJ ICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAorCQkJICAgICBjb25zdCBz dHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucyk7CiAKIGV4dGVy biB2b2lkIHByaW50X3ZhcmlhYmxlX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2 YXIsCiAJCQkJICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCmRpZmYgLS1n aXQgYS9nZGIvdmFyb2JqLmMgYi9nZGIvdmFyb2JqLmMKaW5kZXggMTVjYmQ0 NS4uYTliNjU3OSAxMDA2NDQKLS0tIGEvZ2RiL3Zhcm9iai5jCisrKyBiL2dk Yi92YXJvYmouYwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIndyYXBw ZXIuaCIKICNpbmNsdWRlICJnZGJjbWQuaCIKICNpbmNsdWRlICJibG9jay5o IgorI2luY2x1ZGUgInZhbHByaW50LmgiCiAKICNpbmNsdWRlICJnZGJfYXNz ZXJ0LmgiCiAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgpAQCAtMTc5MSw2ICsx NzkyLDcgQEAgdmFsdWVfZ2V0X3ByaW50X3ZhbHVlIChzdHJ1Y3QgdmFsdWUg KnZhbHVlLCBlbnVtIHZhcm9ial9kaXNwbGF5X2Zvcm1hdHMgZm9ybWF0KQog ICBzdHJ1Y3QgdWlfZmlsZSAqc3RiOwogICBzdHJ1Y3QgY2xlYW51cCAqb2xk X2NoYWluOwogICBjaGFyICp0aGV2YWx1ZTsKKyAgc3RydWN0IHZhbHVlX3By aW50X29wdGlvbnMgb3B0czsKIAogICBpZiAodmFsdWUgPT0gTlVMTCkKICAg ICByZXR1cm4gTlVMTDsKQEAgLTE3OTgsNyArMTgwMCw4IEBAIHZhbHVlX2dl dF9wcmludF92YWx1ZSAoc3RydWN0IHZhbHVlICp2YWx1ZSwgZW51bSB2YXJv YmpfZGlzcGxheV9mb3JtYXRzIGZvcm1hdCkKICAgc3RiID0gbWVtX2ZpbGVv cGVuICgpOwogICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfdWlfZmlsZV9k ZWxldGUgKHN0Yik7CiAKLSAgY29tbW9uX3ZhbF9wcmludCAodmFsdWUsIHN0 YiwgZm9ybWF0X2NvZGVbKGludCkgZm9ybWF0XSwgMSwgMCwgMCwKKyAgZ2V0 X2Zvcm1hdHRlZF9wcmludF9vcHRpb25zICgmb3B0cywgZm9ybWF0X2NvZGVb KGludCkgZm9ybWF0XSk7CisgIGNvbW1vbl92YWxfcHJpbnQgKHZhbHVlLCBz dGIsIDAsICZvcHRzLAogCQkgICAgY3VycmVudF9sYW5ndWFnZSk7CiAgIHRo ZXZhbHVlID0gdWlfZmlsZV94c3RyZHVwIChzdGIsICZkdW1teSk7CiAK --=-=-=--