Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p21iY-0002nT-8S for pgsql-hackers@arkaria.postgresql.org; Mon, 05 Dec 2022 03:00:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1p21iW-00018s-6g for pgsql-hackers@arkaria.postgresql.org; Mon, 05 Dec 2022 03:00:28 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p21iU-00018i-WA for pgsql-hackers@lists.postgresql.org; Mon, 05 Dec 2022 03:00:27 +0000 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1p21iO-0004jq-5f for pgsql-hackers@postgresql.org; Mon, 05 Dec 2022 03:00:26 +0000 Received: by mail-pg1-x530.google.com with SMTP id 136so9321174pga.1 for ; Sun, 04 Dec 2022 19:00:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=LlE+/QklhLkwmiVxsoZSVO4Iq+XHs3i3/4ouipMOSnA=; b=hBnESY9eT/U+q8cTUiuFTp1dDvRcptwxAZhMjMLyw3x/AUd9gbAVGGUUONUynSIiX9 AXxWc7uNr/xpZgr+LX7VBxl/MpBh6NInwvccNlvkRXzACqTUqcRjCUfAOJwGAUjVv7K6 cjj+achUkEZGdk08pZ8OKyjs9Oro1KNyN1UKH37SIvRbIUAEqPnsACM6Uru5rrPrhAru 5pvTMZvqu5qNrnuZk/7+NTA3rYRXg8fcDSTZ163z+8alqqS42KKLV4RhD/5AZH+vmk0J 7IzUjhAk7HOG5sFprnKLIbZhb6Q9kumzuHVibYzFAjX5m7T4YvWXDud41LUP4tocOq3I 7t+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=LlE+/QklhLkwmiVxsoZSVO4Iq+XHs3i3/4ouipMOSnA=; b=1aMGe1ejJnmVzZxa2yh2Qxz6GZpyaX+TOpx1k9Ifu4k3mcyP1zJzKBEnUffF1X8fVg UN4fNb22uR59smwa6H4exU0chTggYNxVN/Y9GiKCs8nSnJbT9OG0gGV/unOBsf6Np9hD D+rGiDqnUxAzRmFMHi9ioDmoCFo7Ydl6q9qpq3VJ39M465rHyaJnJ9W/ufR+4LHsLfol 1CTC/jItkWVAV8CUZC2j7KTsruU9GwZmMJf40itCWtoqSMG9mM+maRjF5JDpiICUUVx3 /IO8w//EImA203nS/obN9Xm6nFsqtaWYzo87GEgec8rZou3rLLd4hI+ouLe7FW0P1Jqr Rtkg== X-Gm-Message-State: ANoB5pmYfHDp7wTiXd8YDRKe882wvWhFaySup7RJ1qaARBoRGhMKfKCX 4gvhlj5qBKtWahOlV4sfvbwcrhiXTMoHjr1ElYo= X-Google-Smtp-Source: AA0mqf75YJmdwzywpJvWmwP8rNDQy/PHKPHH+BzflkcNVYA/OtSSM3IXPPA4ruib2gVD367BsXK0NzExFHlao4/9bfI= X-Received: by 2002:a05:6a00:1696:b0:571:2b7c:6693 with SMTP id k22-20020a056a00169600b005712b7c6693mr64319168pfc.48.1670209218859; Sun, 04 Dec 2022 19:00:18 -0800 (PST) MIME-Version: 1.0 References: <20221201112106.gjlcv6nvndjbnoez@alvherre.pgsql> In-Reply-To: From: Amit Langote Date: Mon, 5 Dec 2022 12:00:01 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Alvaro Herrera Cc: Robert Haas , Jacob Champion , David Rowley , Tom Lane , PostgreSQL-development Content-Type: multipart/mixed; boundary="0000000000003174ab05ef0be339" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000003174ab05ef0be339 Content-Type: text/plain; charset="UTF-8" On Fri, Dec 2, 2022 at 7:40 PM Amit Langote wrote: > On Thu, Dec 1, 2022 at 9:43 PM Amit Langote wrote: > > On Thu, Dec 1, 2022 at 8:21 PM Alvaro Herrera wrote: > > > On 2022-Dec-01, Amit Langote wrote: > > > > Hmm, how about keeping the [Merge]Append's parent relation's RT index > > > > in the PartitionPruneInfo and passing it down to > > > > ExecInitPartitionPruning() from ExecInit[Merge]Append() for > > > > cross-checking? Both Append and MergeAppend already have a > > > > 'apprelids' field that we can save a copy of in the > > > > PartitionPruneInfo. Tried that in the attached delta patch. > > > > > > Ah yeah, that sounds about what I was thinking. I've merged that in and > > > pushed to github, which had a strange pg_upgrade failure on Windows > > > mentioning log files that were not captured by the CI tooling. So I > > > pushed another one trying to grab those files, in case it wasn't an > > > one-off failure. It's running now: > > > https://cirrus-ci.com/task/5857239638999040 > > > > > > If all goes well with this run, I'll get this 0001 pushed. > > > > Thanks for pushing 0001. > > > > Rebased 0002 attached. > > Thought it might be good for PartitionPruneResult to also have > root_parent_relids that matches with the corresponding > PartitionPruneInfo. ExecInitPartitionPruning() does a sanity check > that the root_parent_relids of a given pair of PartitionPrune{Info | > Result} match. > > Posting the patch separately as the attached 0002, just in case you > might think that the extra cross-checking would be an overkill. Rebased over 92c4dafe1eed and fixed some factual mistakes in the comment above ExecutorDoInitialPruning(). -- Thanks, Amit Langote EDB: http://www.enterprisedb.com --0000000000003174ab05ef0be339 Content-Type: application/octet-stream; name="v27-0001-Optimize-AcquireExecutorLocks-by-locking-only-un.patch" Content-Disposition: attachment; filename="v27-0001-Optimize-AcquireExecutorLocks-by-locking-only-un.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lba7elt10 RnJvbSA2YzRjZjBiMGEwM2JmYWM2MmU4N2Y3NmJiM2JlOWMxZTYyMTI1YTBjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBEZWMgMjAyMSAxNjo1NToxNyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjI3IDEv Ml0gT3B0aW1pemUgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBieSBsb2NraW5nIG9ubHkKIHVucHJ1 bmVkIHBhcnRpdGlvbnMKClRoaXMgY29tbWl0IHRlYWNoZXMgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo KSB0byBwZXJmb3JtIGluaXRpYWwKcGFydGl0aW9uIHBydW5pbmcgdG8gbm90aW9uYWxseSBlbGlt aW5hdGUgdGhlIHN1Ym5vZGVzIGNvbnRhaW5lZCBpbiBhCmdlbmVyaWMgY2FjaGVkIHBsYW4gdGhh dCBuZWVkIG5vdCBiZSBpbml0aWFsaXplZCBkdXJpbmcgdGhlIGFjdHVhbApleGVjdXRpb24gb2Yg dGhlIHBsYW4gYW5kIHNraXAgbG9ja2luZyB0aGUgcGFydGl0aW9uIHNjYW5uZWQgYnkgdGhvc2UK c3Vibm9kZXMuCgpUaGUgcmVzdWx0IG9mIHBlcmZvcm1pbmcgaW5pdGlhbCBwYXJ0aXRpb24gcHJ1 bmluZyB0aGlzIHdheSBiZWZvcmUgdGhlCmFjdHVhbCBleGVjdXRpb24gaGFzIHN0YXJ0ZWQgaXMg bWFkZSBhdmFpbGFibGUgdG8gdGhlIGFjdHVhbCBleGVjdXRpb24gdmlhClBhcnRpdGlvblBydW5l UmVzdWx0LCBtYWRlIGF2YWlsYWJsZSBhbG9uZyB3aXRoIHRoZSBQbGFubmVkU3RtdCBieSB0aGUK Y2FsbGVycyBvZiB0aGUgZXhlY3V0b3IgdGhhdCB1c2VkIHBsYW5jYWNoZS5jIHRvIGdldCB0aGUg cGxhbi4gIEl0IGlzIE5VTEwKaW4gdGhlIGNhc2VzIGluIHdoaWNoIHRoZSBwbGFuIGlzIG9idGFp bmVkIGJ5IGNhbGxpbmcgdGhlIHBsYW5uZXIKZGlyZWN0bHkgb3IgaWYgdGhlIHBsYW4gb2J0YWlu ZWQgYnkgcGxhbmNhY2hlLmMgaXMgbm90IGEgZ2VuZXJpYyBvbmUuCi0tLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weXRvLmMgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2NyZWF0ZWFzLmMgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMgICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgICAg ICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICB8ICAyNiArKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRSAgICAgICAgICAgIHwgIDM2ICsrKysKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgIHwgIDUzICsrKysrKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgfCAgMjYgKystCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFydGl0aW9uLmMgICB8IDIzOCArKysrKysrKysrKysrKysrKysrKystLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9l eGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUFwcGVuZC5jICAgICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJn ZUFwcGVuZC5jIHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyAgICAgICAgICAg ICB8ICAyNyArKy0KIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICAgIHwgICA4 ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICB8ICAgMiArCiBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICB8ICA0NiArKysrKwogc3JjL2JhY2tl bmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jICAgfCAgNDEgKysrKy0KIHNyYy9iYWNrZW5kL3Rj b3AvcG9zdGdyZXMuYyAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC90Y29wL3BxdWVy eS5jICAgICAgICAgICAgICB8ICAyOCArKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5j YWNoZS5jICAgIHwgMjA4ICsrKysrKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMv bW1nci9wb3J0YWxtZW0uYyAgICAgfCAgMTkgKysKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxh aW4uaCAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9u LmggICB8ICAgOSArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCAgICAgICAgfCAg IDMgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAgICAgICAgfCAgIDMgKwogc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUv bm9kZXMvbm9kZXMuaCAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGF0 aG5vZGVzLmggICAgICAgICAgfCAgMTIgKysKIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5o ICAgICAgICAgIHwgIDQ2ICsrKysrCiBzcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCAgICAg ICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggICAgICAgICAgICAgfCAg IDMgKwogMzMgZmlsZXMgY2hhbmdlZCwgNzg3IGluc2VydGlvbnMoKyksIDk4IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weXRvLmMKaW5kZXggZjI2Y2MwZDE2Mi4uNDAxYTIyODBhMyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weXRvLmMKQEAgLTU1OCw3ICs1NTgsNyBAQCBCZWdpbkNvcHlUbyhQYXJzZVN0YXRl ICpwc3RhdGUsCiAJCSgoRFJfY29weSAqKSBkZXN0KS0+Y3N0YXRlID0gY3N0YXRlOwogCiAJCS8q IENyZWF0ZSBhIFF1ZXJ5RGVzYyByZXF1ZXN0aW5nIG5vIG91dHB1dCAqLwotCQljc3RhdGUtPnF1 ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4dCwKKwkJ Y3N0YXRlLT5xdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTklMLCBwc3RhdGUtPnBf c291cmNldGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJ SW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9jcmVhdGVhcy5jCmluZGV4IDE1MmMyOWI1NTEuLjk0MjQ0OTU0NGMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY3JlYXRlYXMuYwpAQCAtMzI1LDcgKzMyNSw3IEBAIEV4ZWNDcmVhdGVUYWJsZUFzKFBhcnNl U3RhdGUgKnBzdGF0ZSwgQ3JlYXRlVGFibGVBc1N0bXQgKnN0bXQsCiAJCVVwZGF0ZUFjdGl2ZVNu YXBzaG90Q29tbWFuZElkKCk7CiAKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNjLCByZWRpcmVjdGlu ZyBvdXRwdXQgdG8gb3VyIHR1cGxlIHJlY2VpdmVyICovCi0JCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1 ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4dCwKKwkJcXVlcnlEZXNjID0gQ3JlYXRl UXVlcnlEZXNjKHBsYW4sIE5JTCwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCiAJCQkJCQkJCQlHZXRB Y3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCQlkZXN0LCBwYXJhbXMs IHF1ZXJ5RW52LCAwKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFp bi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IGY4Njk4M2M2NjAuLjJm MmI1NTg2MDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTQwNyw3ICs0MDcsNyBAQCBFeHBs YWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0aW9ucywKIAkJfQogCiAJCS8q IHJ1biBpdCAoaWYgbmVlZGVkKSBhbmQgcHJvZHVjZSBvdXRwdXQgKi8KLQkJRXhwbGFpbk9uZVBs YW4ocGxhbiwgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5RW52LAorCQlFeHBs YWluT25lUGxhbihwbGFuLCBOSUwsIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVy eUVudiwKIAkJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDog TlVMTCkpOwogCX0KIH0KQEAgLTUxNSw3ICs1MTUsOCBAQCBFeHBsYWluT25lVXRpbGl0eShOb2Rl ICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKICAqIHRv IGNhbGwgaXQuCiAgKi8KIHZvaWQKLUV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVk c3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKK0V4cGxhaW5PbmVQbGFu KFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgTGlzdCAqcGFydF9wcnVuZV9yZXN1bHRzLAorCQkJ ICAgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJCSAgIGNvbnN0IGNoYXIg KnF1ZXJ5U3RyaW5nLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSAgIFF1ZXJ5RW52aXJvbm1l bnQgKnF1ZXJ5RW52LCBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24sCiAJCQkgICBjb25z dCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2UpCkBAIC01NjMsNyArNTY0LDcgQEAgRXhwbGFpbk9uZVBs YW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3Rh dGUgKmVzLAogCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKIAogCS8qIENyZWF0ZSBhIFF1ZXJ5RGVz YyBmb3IgdGhlIHF1ZXJ5ICovCi0JcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW5uZWRz dG10LCBxdWVyeVN0cmluZywKKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbm5lZHN0 bXQsIHBhcnRfcHJ1bmVfcmVzdWx0cywgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFjdGl2ZVNu YXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVu diwgaW5zdHJ1bWVudF9vcHRpb24pOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9leHRlbnNpb24uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCmluZGV4IGNm MWIxY2E1NzEuLjkwNGNiY2JhNGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 dGVuc2lvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCkBAIC03Nzks NyArNzc5LDcgQEAgZXhlY3V0ZV9zcWxfc3RyaW5nKGNvbnN0IGNoYXIgKnNxbCkKIAkJCXsKIAkJ CQlRdWVyeURlc2MgICpxZGVzYzsKIAotCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQs CisJCQkJcWRlc2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwgTklMLAogCQkJCQkJCQkJCXNxbCwK IAkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBOVUxMLAogCQkJCQkJCQkJCWRlc3QsIE5V TEwsIE5VTEwsIDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCmluZGV4IDlhYzAzODM0NTkuLjY1Yzhk MGFhNTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKQEAgLTQwOCw3ICs0MDgsNyBAQCByZWZyZXNo X21hdHZpZXdfZGF0YWZpbGwoRGVzdFJlY2VpdmVyICpkZXN0LCBRdWVyeSAqcXVlcnksCiAJVXBk YXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKIAogCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywg cmVkaXJlY3Rpbmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCXF1ZXJ5RGVzYyA9 IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBxdWVyeVN0cmluZywKKwlxdWVyeURlc2MgPSBDcmVhdGVR dWVyeURlc2MocGxhbiwgTklMLCBxdWVyeVN0cmluZywKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNo b3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHJlcGFyZS5jCmluZGV4IDllMjk1ODRkOTMuLjI5YjQ1NTM5ZDMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9wcmVwYXJlLmMKQEAgLTE1NSw2ICsxNTUsNyBAQCBFeGVjdXRlUXVlcnkoUGFyc2VTdGF0 ZSAqcHN0YXRlLAogCVByZXBhcmVkU3RhdGVtZW50ICplbnRyeTsKIAlDYWNoZWRQbGFuICpjcGxh bjsKIAlMaXN0CSAgICpwbGFuX2xpc3Q7CisJTGlzdAkgICAqcGFydF9wcnVuZV9yZXN1bHRzX2xp c3Q7CiAJUGFyYW1MaXN0SW5mbyBwYXJhbUxJID0gTlVMTDsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9 IE5VTEw7CiAJUG9ydGFsCQlwb3J0YWw7CkBAIC0xOTMsNyArMTk0LDEwIEBAIEV4ZWN1dGVRdWVy eShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkgICBlbnRyeS0+cGxhbnNvdXJjZS0+cXVl cnlfc3RyaW5nKTsKIAogCS8qIFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBpbmNyZW1lbnQgcGxhbiBy ZWZjb3VudCBmb3IgcG9ydGFsICovCi0JY3BsYW4gPSBHZXRDYWNoZWRQbGFuKGVudHJ5LT5wbGFu c291cmNlLCBwYXJhbUxJLCBOVUxMLCBOVUxMKTsKKwljcGxhbiA9IEdldENhY2hlZFBsYW4oZW50 cnktPnBsYW5zb3VyY2UsIHBhcmFtTEksIE5VTEwsIE5VTEwsCisJCQkJCQkgICZwYXJ0X3BydW5l X3Jlc3VsdHNfbGlzdCk7CisJQXNzZXJ0KGxpc3RfbGVuZ3RoKGNwbGFuLT5zdG10X2xpc3QpID09 CisJCSAgIGxpc3RfbGVuZ3RoKHBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KSk7CiAJcGxhbl9saXN0 ID0gY3BsYW4tPnN0bXRfbGlzdDsKIAogCS8qCkBAIC0yMDcsNiArMjExLDkgQEAgRXhlY3V0ZVF1 ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJICBwbGFuX2xpc3QsCiAJCQkJCSAgY3BsYW4p OwogCisJLyogQ29weSBMaXN0cyBvZiBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgaW50byB0aGUgcG9y dGFsJ3MgY29udGV4dC4gKi8KKwlQb3J0YWxTdG9yZVBhcnRpdGlvblBydW5lUmVzdWx0cyhwb3J0 YWwsIHBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KTsKKwogCS8qCiAJICogRm9yIENSRUFURSBUQUJM RSAuLi4gQVMgRVhFQ1VURSwgd2UgbXVzdCB2ZXJpZnkgdGhhdCB0aGUgcHJlcGFyZWQKIAkgKiBz dGF0ZW1lbnQgaXMgb25lIHRoYXQgcHJvZHVjZXMgdHVwbGVzLiAgQ3VycmVudGx5IHdlIGluc2lz dCB0aGF0IGl0IGJlCkBAIC01NzYsNyArNTgzLDkgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVj dXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJ Y29uc3QgY2hhciAqcXVlcnlfc3RyaW5nOwogCUNhY2hlZFBsYW4gKmNwbGFuOwogCUxpc3QJICAg KnBsYW5fbGlzdDsKLQlMaXN0Q2VsbCAgICpwOworCUxpc3QJICAgKnBhcnRfcHJ1bmVfcmVzdWx0 c19saXN0OworCUxpc3RDZWxsICAgKnAsCisJCQkgICAqcHA7CiAJUGFyYW1MaXN0SW5mbyBwYXJh bUxJID0gTlVMTDsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IE5VTEw7CiAJaW5zdHJfdGltZQlwbGFu c3RhcnQ7CkBAIC02MTksNyArNjI4LDEwIEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0 bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCiAJLyog UmVwbGFuIGlmIG5lZWRlZCwgYW5kIGFjcXVpcmUgYSB0cmFuc2llbnQgcmVmY291bnQgKi8KIAlj cGxhbiA9IEdldENhY2hlZFBsYW4oZW50cnktPnBsYW5zb3VyY2UsIHBhcmFtTEksCi0JCQkJCQkg IEN1cnJlbnRSZXNvdXJjZU93bmVyLCBxdWVyeUVudik7CisJCQkJCQkgIEN1cnJlbnRSZXNvdXJj ZU93bmVyLCBxdWVyeUVudiwKKwkJCQkJCSAgJnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KTsKKwlB c3NlcnQobGlzdF9sZW5ndGgoY3BsYW4tPnN0bXRfbGlzdCkgPT0KKwkJICAgbGlzdF9sZW5ndGgo cGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpKTsKIAogCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQocGxh bmR1cmF0aW9uKTsKIAlJTlNUUl9USU1FX1NVQlRSQUNUKHBsYW5kdXJhdGlvbiwgcGxhbnN0YXJ0 KTsKQEAgLTYzNCwxMyArNjQ2LDE1IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQg KmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCXBsYW5fbGlz dCA9IGNwbGFuLT5zdG10X2xpc3Q7CiAKIAkvKiBFeHBsYWluIGVhY2ggcXVlcnkgKi8KLQlmb3Jl YWNoKHAsIHBsYW5fbGlzdCkKKwlmb3Jib3RoKHAsIHBsYW5fbGlzdCwgcHAsIHBhcnRfcHJ1bmVf cmVzdWx0c19saXN0KQogCXsKIAkJUGxhbm5lZFN0bXQgKnBzdG10ID0gbGZpcnN0X25vZGUoUGxh bm5lZFN0bXQsIHApOworCQlMaXN0ICpwYXJ0X3BydW5lX3Jlc3VsdHMgPSBsZmlyc3Rfbm9kZShM aXN0LCBwcCk7CiAKIAkJaWYgKHBzdG10LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSkKLQkJ CUV4cGxhaW5PbmVQbGFuKHBzdG10LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLCBx dWVyeUVudiwKLQkJCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2Fn ZSA6IE5VTEwpKTsKKwkJCUV4cGxhaW5PbmVQbGFuKHBzdG10LCBwYXJ0X3BydW5lX3Jlc3VsdHMs IGludG8sIGVzLCBxdWVyeV9zdHJpbmcsCisJCQkJCQkgICBwYXJhbUxJLCBxdWVyeUVudiwgJnBs YW5kdXJhdGlvbiwKKwkJCQkJCSAgIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpKTsK IAkJZWxzZQogCQkJRXhwbGFpbk9uZVV0aWxpdHkocHN0bXQtPnV0aWxpdHlTdG10LCBpbnRvLCBl cywgcXVlcnlfc3RyaW5nLAogCQkJCQkJCSAgcGFyYW1MSSwgcXVlcnlFbnYpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVB RE1FCmluZGV4IDE3Nzc1YTQ5ZTIuLjdmOGNmMTQ5NGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL1JFQURNRQorKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKQEAgLTY1 LDYgKzY1LDM4IEBAIGZvdW5kIHRoZXJlLiAgVGhpcyBjdXJyZW50bHkgb25seSBvY2N1cnMgZm9y IEFwcGVuZCBhbmQgTWVyZ2VBcHBlbmQgbm9kZXMuICBJbgogdGhpcyBjYXNlIHRoZSBub24tcmVx dWlyZWQgc3VicGxhbnMgYXJlIGlnbm9yZWQgYW5kIHRoZSBleGVjdXRvciBzdGF0ZSdzCiBzdWJu b2RlIGFycmF5IHdpbGwgYmVjb21lIG91dCBvZiBzZXF1ZW5jZSB0byB0aGUgcGxhbidzIHN1YnBs YW4gbGlzdC4KIAorVGhlIHNvLWNhbGxlZCBleGVjdXRpb24gdGltZSBwcnVuaW5nIG1heSBhbHNv IG9jY3VyIGV2ZW4gYmVmb3JlIHRoZSBleGVjdXRpb24KK2hhcyBhY3R1YWxseSBzdGFydGVkLiAg T25lIGNhc2Ugd2hlcmUgdGhhdCBvY2N1cnMgaXMgd2hlbiBhIGNhY2hlZCBnZW5lcmljCitwbGFu IGlzIGJlaW5nIHZhbGlkYXRlZCBmb3IgZXhlY3V0aW9uIGJ5IHBsYW5jYWNoZS5jOkdldENhY2hl ZFBsYW4oKSwgd2hpY2gKK3dvcmtzIGJ5IGxvY2tpbmcgYWxsIHRoZSByZWxhdGlvbnMgdGhhdCB3 aWxsIGJlIHNjYW5uZWQgYnkgdGhhdCBwbGFuLiAgSWYgdGhlCitnZW5lcmljIHBsYW4gY29udGFp bnMgbm9kZXMgdGhhdCBjYW4gcGVyZm9ybSBleGVjdXRpb24gdGltZSBwYXJ0aXRpb24gcHJ1bmlu ZworKHRoYXQgaXMsIGNvbnRhaW4gYSBQYXJ0aXRpb25QcnVuZUluZm8pLCBhIHN1YnNldCBvZiBw cnVuaW5nIHN0ZXBzIGNvbnRhaW5lZAoraW4gYSBnaXZlbiBub2RlJ3MgUGFydGl0aW9uUHJ1bmVJ bmZvIHRoYXQgZG8gbm90IGRlcGVuZCBvbiB0aGUgZXhlY3V0aW9uCithY3R1YWxseSBoYXZpbmcg c3RhcnRlZCAoY2FsbGVkICJpbml0aWFsIiBwcnVuaW5nIHN0ZXBzKSBhcmUgcGVyZm9ybWVkIGFz IHBhcnQKK29mIHRoZSBwbGFuIHZhbGlkYXRpb24gc3RlcCwgYnkgY2FsbGluZyBFeGVjdXRvckRv SW5pdGlhbFBydW5pbmcoKS4gIFRoYXQKK3JldHVybnMgdGhlIG1pbmltYWwgc2V0IG9mIGNoaWxk IHN1YnBsYW5zIHRoYXQgc2F0aXNmeSB0aG9lIGluaXRpYWwgcHJ1bmluZworc3RlcHMgY29udGFp bmVkIGluIGVhY2ggUGFydGl0aW9uUHJ1bmVJbmZvLiAgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSB3 aWxsIHRoZW4KK2xvY2sgb25seSB0aGUgcmVsYXRpb25zIHNjYW5uZWQgYnkgdGhvc2Ugc3VicGxh bnMsIGluIGFkZGl0aW9uIHRvIHRob3NlIHByZXNlbnQKK2luUGxhbm5lZFN0bXQubWluTG9ja1Jl bGlkcy4gIE5vdGUgdGhhdCB0aGUgc3VicGxhbnMgYXJlIG5vdCByZWFsbHkgcHJ1bmVkIGFzCitp biBiZWluZyByZW1vdmVkIGZyb20gdGhlIHBsYW4gdHJlZSwgc28gY2FyZSBpcyBuZWVkZWQgYnkg dGhlIGRvd25zdHJlYW1zCit1c2VycyBvZiBzdWNoIGEgcGxhbiB0aGF0IGhhcyB1bmRlcmdvbmUg cHJlLWV4ZWN1dGlvbiBpbml0aWFsIHBydW5pbmcuCisKK1RvIHByZXZlbnQgdGhlIGV4ZWN1dG9y IGFuZCBhbnkgdGhpcmQgcGFydHkgZXhlY3V0aW9uIGNvZGUgdGhhdCBjYW4gbG9vayBhdAordGhl IHBsYW4gdHJlZSBmcm9tIHRyeWluZyB0byBleGVjdXRlIHRoZSBzdWJwbGFucyB0aGF0IHdlcmUg cHJ1bmVkIGFzCitkZXNjcmliZWQgYWJvdmUsIHRoZSByZXN1bHQgb2YgdGhhdCBwcnVuaW5nIGlz IHBhc3NlZCB0byB0aGUgZXhlY3V0b3IgYXMgYQorTGlzdCBvZiBQYXJ0aXRpb25QcnVuZVJlc3Vs dCBub2RlcyB2aWEgdGhlIFF1ZXJ5RGVzYywgd2hpY2ggaXMgc3Vic2VxdWVudGx5Cithc3NpZ25l ZCB0byBFU3RhdGUuZXNfcGFydF9wcnVuZV9yZXN1bHRzLiAgRWFjaCBQYXJ0aXRpb25QcnVuZVJl c3VsdCB0aGVyZWluCitjb25zaXN0cyBvZiB0aGUgc2V0IG9mIGluZGV4ZXMgb2Ygc3Vydml2aW5n IHN1YnBsYW5zIGluIHRoZSByZXNwZWN0aXZlIHBhcmVudAorcGxhbiBub2RlJ3MgKHRoZSBvbmUg dG8gd2hpY2ggdGhlIGNvcnJlc3BvbmRpbmcgUGFydGl0aW9uUHJ1bmVJbmZvIGJlbG9uZ3MpCits aXN0IG9mIGNoaWxkIHN1YnBsYW5zLCBzYXZlZCBhcyBhIGJpdG1hcHNldCB2YWxpZF9zdWJwbGFu X29mZnMuICBUaGUgZXhlY3V0b3IKK29yIGFueSB0aGlyZCBwYXJ0eSBleGVjdXRpb24gY29kZSB3 b3JraW5nIG9uIGEgZ2VuZXJpYyBwbGFuIHNob3VsZCBub3QKK3JlLWV2YWx1YXRlIHRoZSBzZXQg b2YgaW5pdGlhbGx5IHZhbGlkIHN1YnBsYW5zIGZvciBhIGdpdmVuIHBsYW4gbm9kZSBieQorcmVk b2luZyB0aGUgaW5pdGlhbCBwcnVuaW5nIGlmIGEgUGFydGl0aW9uUHJ1bmVSZXN1bHQgYmVsb25n aW5nIHRvIHRoYW50IHBsYW4KK25vZGUgaXMgcHJlc2VudCBpbiBlc19wYXJ0X3BydW5lX3Jlc3Vs dHMuICBOb3RlIHRoYXQgdGhhdCBpcyBub3Qgc2ltcGx5IGEKK3BlcmZvcm1hbmNlIG9wdGltaXph dGlvbiwgYmVjYXVzZSBzdWNoIHJlLWV2YWx1YXRpb24gb2YgdGhlIHBydW5pbmcgc3RlcHMgbWF5 Cit2ZXJ5IHdlbGwgZW5kIHVwIHJlc3VsdGluZyBpbiBhIGRpZmZlcmVudCBzZXQgb2YgaW5pdGlh bGx5IHZhbGlkIHN1YnBsYW5zLAorY29udGFpbmluZyBzb21lIHdob3NlIHJlbGF0aW9ucyB3ZXJl IG5vdCBsb2NrZWQgYnkgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKS4KKwogRWFjaCBQbGFuIG5vZGUg bWF5IGhhdmUgZXhwcmVzc2lvbiB0cmVlcyBhc3NvY2lhdGVkIHdpdGggaXQsIHRvIHJlcHJlc2Vu dAogaXRzIHRhcmdldCBsaXN0LCBxdWFsaWZpY2F0aW9uIGNvbmRpdGlvbnMsIGV0Yy4gIFRoZXNl IHRyZWVzIGFyZSBhbHNvCiByZWFkLW9ubHkgdG8gdGhlIGV4ZWN1dG9yLCBidXQgdGhlIGV4ZWN1 dG9yIHN0YXRlIGZvciBleHByZXNzaW9uIGV2YWx1YXRpb24KQEAgLTI4Niw2ICszMTgsMTAgQEAg UXVlcnkgUHJvY2Vzc2luZyBDb250cm9sIEZsb3cKIAogVGhpcyBpcyBhIHNrZXRjaCBvZiBjb250 cm9sIGZsb3cgZm9yIGZ1bGwgcXVlcnkgcHJvY2Vzc2luZzoKIAorICBbIEV4ZWN1dG9yRG9Jbml0 aWFsUHJ1bmluZyBdIC0tLSBhbiBvcHRpb25hbCBzdGVwIHRvIHBlcmZvcm0gaW5pdGlhbAorCQlw YXJ0aXRpb24gcHJ1bmluZyBvbiB0aGUgcGxhbiB0cmVlIHRoZSByZXN1bHQgb2Ygd2hpY2ggaXMg cGFzc2VkCisJCXRvIHRoZSBleGVjdXRvciB2aWEgUXVlcnlEZXNjCisKIAlDcmVhdGVRdWVyeURl c2MKIAogCUV4ZWN1dG9yU3RhcnQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDEyZmY0ZjNk ZTUuLjRkOGM4ZTJlNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWlu LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtNDksNiArNDksNyBA QAogI2luY2x1ZGUgImNvbW1hbmRzL21hdHZpZXcuaCIKICNpbmNsdWRlICJjb21tYW5kcy90cmln Z2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2RlYnVnLmgiCisjaW5jbHVkZSAiZXhlY3V0 b3IvZXhlY1BhcnRpdGlvbi5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVTdWJwbGFuLmgiCiAj aW5jbHVkZSAiZm9yZWlnbi9mZHdhcGkuaCIKICNpbmNsdWRlICJqaXQvaml0LmgiCkBAIC0xMDQs NiArMTA1LDU2IEBAIHN0YXRpYyB2b2lkIEV2YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFz dGF0ZSwgUGxhbiAqcGxhblRyZWUpOwogCiAvKiBlbmQgb2YgbG9jYWwgZGVjbHMgKi8KIAorLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICoJCUV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZworICoKKyAqCQlGb3IgZWFjaCBw bGFuIHRyZWUgbm9kZSB0aGF0IGhhcyBiZWVuIGFzc2lnbmVkIGEgUGFydGl0aW9uUHJ1bmVJbmZv LAorICoJCXRoaXMgcGVyZm9ybXMgaW5pdGlhbCBwYXJ0aXRpb24gcHJ1bmluZyB1c2luZyB0aGUg aW5mb3JtYXRpb24gY29udGFpbmVkCisgKgkJdGhlcmVpbiB0byBkZXRlcm1pbmUgdGhlIHNldCBv ZiBjaGlsZCBzdWJwbGFucyB0aGF0IHNhdGlzZnkgdGhlIGluaXRpYWwKKyAqCQlwcnVuaW5nIHN0 ZXBzLCB0byBiZSByZXR1cm5lZCBhcyBhIGJpdG1hcHNldCBvZiB0aGVpciBpbmRleGVzIGluIHRo ZQorICoJCW5vZGUncyBsaXN0IG9mIGNoaWxkIHN1YnBsYW5zIChmb3IgZXhhbXBsZSwgYW4gQXBw ZW5kJ3MgYXBwZW5kcGxhbnMpLgorICoKKyAqIFJldHVybiB2YWx1ZSBpcyBhIExpc3Qgb2YgUGFy dGl0aW9uUHJ1bmVSZXN1bHQgbm9kZXMsIG9uZSBmb3IgZWFjaAorICogUGFydGl0aW9uUHJ1bmVJ bmZvIGZvdW5kIGluIHBsYW5uZWRzdG10LT5jb250YWluc0luaXRpYWxQcnVuaW5nLCBlYWNoCisg KiBjb250YWluaW5nIGEgYml0bWFwc2V0IG9mIHRoZSBpbmRleGVzIG9mIHVucHJ1bmVkIGNoaWxk IHN1YnBsYW5zLgorICogQSBiaXRtYXBzZXQgb2YgdGhlIFJUIGluZGV4ZXMgb2YgdGhlIGxlYWYg cGFydGl0aW9ucyBzY2FubmVkIGJ5IHRob3NlCisgKiBzdWJwbGFucyBpcyByZXR1cm5lZCBpbiAq c2Nhbl9sZWFmcGFydF9ydGlzLCB3aGljaCBpcyBzaGFyZWQgYWNyb3NzIGFsbAorICogb2YgdGhv c2UgUGFydGl0aW9uUHJ1bmVSZXN1bHRzLgorICoKKyAqIFRoZSBleGVjdXRvciBtdXN0IHNlZSB0 aGUgZXhhY3RseSBzYW1lIHNldCBvZiBzdWJwbGFucyBhcyB2YWxpZCBmb3IKKyAqIGV4ZWN1dGlv biB3aGVuIGRvaW5nIEV4ZWNJbml0Tm9kZSgpIG9uIHRoZSBwbGFuIG5vZGVzIHdob3NlCisgKiBQ YXJ0aXRpb25QcnVuZUluZm9zIGFyZSBwcm9jZXNzZWQgaGVyZS4gIFNvLCBpdCBtdXN0IGdldCB0 aGUgc2V0IGZyb20gdGhlCisgKiBhZm9yZW1lbnRpb25lZCBQYXJ0aXRpb25QcnVuZVJlc3VsdCwg aW5zdGVhZCBvZiBjb21wdXRpbmcgaXQgYWxsIG92ZXIKKyAqIGFnYWluIGJ5IHJlZG9pbmcgdGhl IGluaXRpYWwgcHJ1bmluZy4gIEl0J3MgdGhlIGNhbGxlcidzIGpvYiB0byBwYXNzIHRoZQorICog UGFydGl0aW9uUHJ1bmVSZXN1bHQgdG8gdGhlIGV4ZWN1dG9yLgorICoKKyAqIE5vdGU6IFBhcnRp dGlvbmVkIHRhYmxlcyBtZW50aW9uZWQgaW4gUGFydGl0aW9uZWRSZWxQcnVuZUluZm8gbm9kZXMg dGhhdAorICogZHJpdmUgdGhlIHBydW5pbmcgd2lsbCBiZSBsb2NrZWQgYmVmb3JlIGRvaW5nIHRo ZSBwcnVuaW5nLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitMaXN0ICoKK0V4ZWN1dG9yRG9Jbml0aWFsUHJ1 bmluZyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAorCQkJ CQkJIEJpdG1hcHNldCAqKnNjYW5fbGVhZnBhcnRfcnRpcykKK3sKKwlMaXN0CSAqcGFydF9wcnVu ZV9yZXN1bHRzID0gTklMOworCUxpc3RDZWxsICpsYzsKKworCS8qIE9ubHkgZ2V0IGhlcmUgaWYg dGhlcmUgaXMgYW55IHBydW5pbmcgdG8gZG8uICovCisJQXNzZXJ0KHBsYW5uZWRzdG10LT5jb250 YWluc0luaXRpYWxQcnVuaW5nKTsKKworCWZvcmVhY2gobGMsIHBsYW5uZWRzdG10LT5wYXJ0UHJ1 bmVJbmZvcykKKwl7CisJCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvID0gbGZpcnN0KGxj KTsKKwkJUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBydW5lcmVzdWx0ID0gbWFrZU5vZGUoUGFydGl0 aW9uUHJ1bmVSZXN1bHQpOworCisJCXBydW5lcmVzdWx0LT52YWxpZF9zdWJwbGFuX29mZnMgPQor CQkJRXhlY1BhcnRpdGlvbkRvSW5pdGlhbFBydW5pbmcocGxhbm5lZHN0bXQsIHBhcmFtcywgcHJ1 bmVpbmZvLAorCQkJCQkJCQkJCSAgc2Nhbl9sZWFmcGFydF9ydGlzKTsKKwkJcGFydF9wcnVuZV9y ZXN1bHRzID0gbGFwcGVuZChwYXJ0X3BydW5lX3Jlc3VsdHMsIHBydW5lcmVzdWx0KTsKKwl9CisK KwlyZXR1cm4gcGFydF9wcnVuZV9yZXN1bHRzOworfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY3V0 b3JTdGFydApAQCAtODA2LDYgKzg1Nyw3IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNj LCBpbnQgZWZsYWdzKQogewogCUNtZFR5cGUJCW9wZXJhdGlvbiA9IHF1ZXJ5RGVzYy0+b3BlcmF0 aW9uOwogCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCA9IHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQ7 CisJTGlzdAkgICAqcGFydF9wcnVuZV9yZXN1bHRzID0gcXVlcnlEZXNjLT5wYXJ0X3BydW5lX3Jl c3VsdHM7CiAJUGxhbgkgICAqcGxhbiA9IHBsYW5uZWRzdG10LT5wbGFuVHJlZTsKIAlMaXN0CSAg ICpyYW5nZVRhYmxlID0gcGxhbm5lZHN0bXQtPnJ0YWJsZTsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9 IHF1ZXJ5RGVzYy0+ZXN0YXRlOwpAQCAtODI2LDYgKzg3OCw3IEBAIEluaXRQbGFuKFF1ZXJ5RGVz YyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCiAJZXN0YXRlLT5lc19wbGFubmVkc3RtdCA9IHBs YW5uZWRzdG10OwogCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcyA9IHBsYW5uZWRzdG10LT5w YXJ0UHJ1bmVJbmZvczsKKwllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cyA9IHBhcnRfcHJ1 bmVfcmVzdWx0czsKIAogCS8qCiAJICogTmV4dCwgYnVpbGQgdGhlIEV4ZWNSb3dNYXJrIGFycmF5 IGZyb20gdGhlIFBsYW5Sb3dNYXJrKHMpLCBpZiBhbnkuCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJh bGxlbC5jCmluZGV4IGFjYTBjNmYzMjMuLjkxNzA3OWEwMzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJhbGxlbC5jCkBAIC02Niw2ICs2Niw3IEBACiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9RVUVS WV9URVhUCQlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDgpCiAjZGVmaW5lIFBBUkFMTEVM X0tFWV9KSVRfSU5TVFJVTUVOVEFUSU9OIFVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwOSkK ICNkZWZpbmUgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRQkJCVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAw MDAwMDAwQSkKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX1BBUlRJVElPTl9QUlVORV9SRVNVTFRTCVVJ TlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwQikKIAogI2RlZmluZSBQQVJBTExFTF9UVVBMRV9R VUVVRV9TSVpFCQk2NTUzNgogCkBAIC0xODIsNiArMTgzLDcgQEAgRXhlY1NlcmlhbGl6ZVBsYW4o UGxhbiAqcGxhbiwgRVN0YXRlICplc3RhdGUpCiAJcHN0bXQtPnRyYW5zaWVudFBsYW4gPSBmYWxz ZTsKIAlwc3RtdC0+ZGVwZW5kc09uUm9sZSA9IGZhbHNlOwogCXBzdG10LT5wYXJhbGxlbE1vZGVO ZWVkZWQgPSBmYWxzZTsKKwlwc3RtdC0+Y29udGFpbnNJbml0aWFsUHJ1bmluZyA9IGZhbHNlOwog CXBzdG10LT5wbGFuVHJlZSA9IHBsYW47CiAJcHN0bXQtPnBhcnRQcnVuZUluZm9zID0gZXN0YXRl LT5lc19wYXJ0X3BydW5lX2luZm9zOwogCXBzdG10LT5ydGFibGUgPSBlc3RhdGUtPmVzX3Jhbmdl X3RhYmxlOwpAQCAtNTk3LDEyICs1OTksMTUgQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0 YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCUZpeGVkUGFyYWxsZWxFeGVjdXRvclN0 YXRlICpmcGVzOwogCWNoYXIJICAgKnBzdG10X2RhdGE7CiAJY2hhcgkgICAqcHN0bXRfc3BhY2U7 CisJY2hhcgkgICAqcGFydF9wcnVuZV9yZXN1bHRzX2RhdGE7CisJY2hhcgkgICAqcGFydF9wcnVu ZV9yZXN1bHRzX3NwYWNlOwogCWNoYXIJICAgKnBhcmFtbGlzdGluZm9fc3BhY2U7CiAJQnVmZmVy VXNhZ2UgKmJ1ZnVzYWdlX3NwYWNlOwogCVdhbFVzYWdlICAgKndhbHVzYWdlX3NwYWNlOwogCVNo YXJlZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50YXRpb24gPSBOVUxMOwogCVNo YXJlZEppdEluc3RydW1lbnRhdGlvbiAqaml0X2luc3RydW1lbnRhdGlvbiA9IE5VTEw7CiAJaW50 CQkJcHN0bXRfbGVuOworCWludAkJCXBhcnRfcHJ1bmVfcmVzdWx0c19sZW47CiAJaW50CQkJcGFy YW1saXN0aW5mb19sZW47CiAJaW50CQkJaW5zdHJ1bWVudGF0aW9uX2xlbiA9IDA7CiAJaW50CQkJ aml0X2luc3RydW1lbnRhdGlvbl9sZW4gPSAwOwpAQCAtNjMxLDYgKzYzNiw3IEBAIEV4ZWNJbml0 UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAogCS8q IEZpeCB1cCBhbmQgc2VyaWFsaXplIHBsYW4gdG8gYmUgc2VudCB0byB3b3JrZXJzLiAqLwogCXBz dG10X2RhdGEgPSBFeGVjU2VyaWFsaXplUGxhbihwbGFuc3RhdGUtPnBsYW4sIGVzdGF0ZSk7CisJ cGFydF9wcnVuZV9yZXN1bHRzX2RhdGEgPSBub2RlVG9TdHJpbmcoZXN0YXRlLT5lc19wYXJ0X3By dW5lX3Jlc3VsdHMpOwogCiAJLyogQ3JlYXRlIGEgcGFyYWxsZWwgY29udGV4dC4gKi8KIAlwY3h0 ID0gQ3JlYXRlUGFyYWxsZWxDb250ZXh0KCJwb3N0Z3JlcyIsICJQYXJhbGxlbFF1ZXJ5TWFpbiIs IG53b3JrZXJzKTsKQEAgLTY1Nyw2ICs2NjMsMTEgQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxh blN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCXNobV90b2NfZXN0aW1hdGVfY2h1 bmsoJnBjeHQtPmVzdGltYXRvciwgcHN0bXRfbGVuKTsKIAlzaG1fdG9jX2VzdGltYXRlX2tleXMo JnBjeHQtPmVzdGltYXRvciwgMSk7CiAKKwkvKiBFc3RpbWF0ZSBzcGFjZSBmb3Igc2VyaWFsaXpl ZCBMaXN0IG9mIFBhcnRpdGlvblBydW5lUmVzdWx0LiAqLworCXBhcnRfcHJ1bmVfcmVzdWx0c19s ZW4gPSBzdHJsZW4ocGFydF9wcnVuZV9yZXN1bHRzX2RhdGEpICsgMTsKKwlzaG1fdG9jX2VzdGlt YXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIHBhcnRfcHJ1bmVfcmVzdWx0c19sZW4pOworCXNo bV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKKwogCS8qIEVzdGltYXRl IHNwYWNlIGZvciBzZXJpYWxpemVkIFBhcmFtTGlzdEluZm8uICovCiAJcGFyYW1saXN0aW5mb19s ZW4gPSBFc3RpbWF0ZVBhcmFtTGlzdFNwYWNlKGVzdGF0ZS0+ZXNfcGFyYW1fbGlzdF9pbmZvKTsK IAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIHBhcmFtbGlzdGluZm9f bGVuKTsKQEAgLTc1MSw2ICs3NjIsMTIgQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRl ICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCW1lbWNweShwc3RtdF9zcGFjZSwgcHN0bXRf ZGF0YSwgcHN0bXRfbGVuKTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tF WV9QTEFOTkVEU1RNVCwgcHN0bXRfc3BhY2UpOwogCisJLyogU3RvcmUgc2VyaWFsaXplZCBMaXN0 IG9mIFBhcnRpdGlvblBydW5lUmVzdWx0ICovCisJcGFydF9wcnVuZV9yZXN1bHRzX3NwYWNlID0g c2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIHBhcnRfcHJ1bmVfcmVzdWx0c19sZW4pOworCW1l bWNweShwYXJ0X3BydW5lX3Jlc3VsdHNfc3BhY2UsIHBhcnRfcHJ1bmVfcmVzdWx0c19kYXRhLCBw YXJ0X3BydW5lX3Jlc3VsdHNfbGVuKTsKKwlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFM TEVMX0tFWV9QQVJUSVRJT05fUFJVTkVfUkVTVUxUUywKKwkJCQkgICBwYXJ0X3BydW5lX3Jlc3Vs dHNfc3BhY2UpOworCiAJLyogU3RvcmUgc2VyaWFsaXplZCBQYXJhbUxpc3RJbmZvLiAqLwogCXBh cmFtbGlzdGluZm9fc3BhY2UgPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywgcGFyYW1saXN0 aW5mb19sZW4pOwogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX1BBUkFN TElTVElORk8sIHBhcmFtbGlzdGluZm9fc3BhY2UpOwpAQCAtMTIzMiw4ICsxMjQ5LDEwIEBAIEV4 ZWNQYXJhbGxlbEdldFF1ZXJ5RGVzYyhzaG1fdG9jICp0b2MsIERlc3RSZWNlaXZlciAqcmVjZWl2 ZXIsCiAJCQkJCQkgaW50IGluc3RydW1lbnRfb3B0aW9ucykKIHsKIAljaGFyCSAgICpwc3RtdHNw YWNlOworCWNoYXIJICAgKnBhcnRfcHJ1bmVfcmVzdWx0c19zcGFjZTsKIAljaGFyCSAgICpwYXJh bXNwYWNlOwogCVBsYW5uZWRTdG10ICpwc3RtdDsKKwlMaXN0CSAgICpwYXJ0X3BydW5lX3Jlc3Vs dHM7CiAJUGFyYW1MaXN0SW5mbyBwYXJhbUxJOwogCWNoYXIJICAgKnF1ZXJ5U3RyaW5nOwogCkBA IC0xMjQ0LDEyICsxMjYzLDE3IEBAIEV4ZWNQYXJhbGxlbEdldFF1ZXJ5RGVzYyhzaG1fdG9jICp0 b2MsIERlc3RSZWNlaXZlciAqcmVjZWl2ZXIsCiAJcHN0bXRzcGFjZSA9IHNobV90b2NfbG9va3Vw KHRvYywgUEFSQUxMRUxfS0VZX1BMQU5ORURTVE1ULCBmYWxzZSk7CiAJcHN0bXQgPSAoUGxhbm5l ZFN0bXQgKikgc3RyaW5nVG9Ob2RlKHBzdG10c3BhY2UpOwogCisJLyogUmVjb25zdHJ1Y3QgbGVh ZGVyLXN1cHBsaWVkIFBhcnRpdGlvblBydW5lUmVzdWx0LiAqLworCXBhcnRfcHJ1bmVfcmVzdWx0 c19zcGFjZSA9CisJCXNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1BBUlRJVElPTl9Q UlVORV9SRVNVTFRTLCBmYWxzZSk7CisJcGFydF9wcnVuZV9yZXN1bHRzID0gKExpc3QgKikgc3Ry aW5nVG9Ob2RlKHBhcnRfcHJ1bmVfcmVzdWx0c19zcGFjZSk7CisKIAkvKiBSZWNvbnN0cnVjdCBQ YXJhbUxpc3RJbmZvLiAqLwogCXBhcmFtc3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFM TEVMX0tFWV9QQVJBTUxJU1RJTkZPLCBmYWxzZSk7CiAJcGFyYW1MSSA9IFJlc3RvcmVQYXJhbUxp c3QoJnBhcmFtc3BhY2UpOwogCiAJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnku ICovCi0JcmV0dXJuIENyZWF0ZVF1ZXJ5RGVzYyhwc3RtdCwKKwlyZXR1cm4gQ3JlYXRlUXVlcnlE ZXNjKHBzdG10LCBwYXJ0X3BydW5lX3Jlc3VsdHMsCiAJCQkJCQkgICBxdWVyeVN0cmluZywKIAkJ CQkJCSAgIEdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCSAgIHJl Y2VpdmVyLCBwYXJhbUxJLCBOVUxMLCBpbnN0cnVtZW50X29wdGlvbnMpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IDg4ZDBlYTNhZGIuLmIwZWIxNWI5ODIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJt Yi9wZ193Y2hhci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21h a2VmdW5jcy5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKICNpbmNsdWRlICJwYXJ0 aXRpb25pbmcvcGFydGJvdW5kcy5oIgogI2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0ZGVzYy5o IgogI2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaCIKQEAgLTE4NSw3ICsxODYsMTEg QEAgc3RhdGljIGNoYXIgKkV4ZWNCdWlsZFNsb3RQYXJ0aXRpb25LZXlEZXNjcmlwdGlvbihSZWxh dGlvbiByZWwsCiBzdGF0aWMgTGlzdCAqYWRqdXN0X3BhcnRpdGlvbl9jb2xub3MoTGlzdCAqY29s bm9zLCBSZXN1bHRSZWxJbmZvICpsZWFmX3BhcnRfcnJpKTsKIHN0YXRpYyBMaXN0ICphZGp1c3Rf cGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFw KTsKIHN0YXRpYyBQYXJ0aXRpb25QcnVuZVN0YXRlICpDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRl KFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAotCQkJCQkJCQkJCQkJCSAgUGFydGl0aW9uUHJ1bmVJbmZv ICpwcnVuZWluZm8pOworCQkJCQkJCQkJCQkJCSAgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWlu Zm8sCisJCQkJCQkJCQkJCQkJICBib29sIGNvbnNpZGVyX2luaXRpYWxfc3RlcHMsCisJCQkJCQkJ CQkJCQkJICBib29sIGNvbnNpZGVyX2V4ZWNfc3RlcHMsCisJCQkJCQkJCQkJCQkJICBMaXN0ICpy dGFibGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwKKwkJCQkJCQkJCQkJCQkgIFBhcnRpdGlvbkRp cmVjdG9yeSBwYXJ0ZGlyKTsKIHN0YXRpYyB2b2lkIEluaXRQYXJ0aXRpb25QcnVuZUNvbnRleHQo UGFydGl0aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkJICBMaXN0ICpwcnVuaW5n X3N0ZXBzLAogCQkJCQkJCQkJICBQYXJ0aXRpb25EZXNjIHBhcnRkZXNjLApAQCAtMTk4LDcgKzIw Myw4IEBAIHN0YXRpYyB2b2lkIFBhcnRpdGlvblBydW5lRml4U3ViUGxhbk1hcChQYXJ0aXRpb25Q cnVuZVN0YXRlICpwcnVuZXN0YXRlLAogc3RhdGljIHZvaWQgZmluZF9tYXRjaGluZ19zdWJwbGFu c19yZWN1cnNlKFBhcnRpdGlvblBydW5pbmdEYXRhICpwcnVuZWRhdGEsCiAJCQkJCQkJCQkJICAg UGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YSAqcHBydW5lLAogCQkJCQkJCQkJCSAgIGJvb2wgaW5p dGlhbF9wcnVuZSwKLQkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5zKTsKKwkJ CQkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5zLAorCQkJCQkJCQkJCSAgIEJpdG1h cHNldCAqKnNjYW5fbGVhZnBhcnRfcnRpcyk7CiAKIAogLyoKQEAgLTE3NDksOCArMTc1NSwxMCBA QCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFw ICphdHRyTWFwKQogICogY29uc2lkZXJlZCB0byBiZSBhIHN0YWJsZSBleHByZXNzaW9uLCBpdCBj YW4gY2hhbmdlIHZhbHVlIGZyb20gb25lIHBsYW4KICAqIG5vZGUgc2NhbiB0byB0aGUgbmV4dCBk dXJpbmcgcXVlcnkgZXhlY3V0aW9uLiAgU3RhYmxlIGNvbXBhcmlzb24KICAqIGV4cHJlc3Npb25z IHRoYXQgZG9uJ3QgaW52b2x2ZSBzdWNoIFBhcmFtcyBhbGxvdyBwYXJ0aXRpb24gcHJ1bmluZyB0 byBiZQotICogZG9uZSBvbmNlIGR1cmluZyBleGVjdXRvciBzdGFydHVwLiAgRXhwcmVzc2lvbnMg dGhhdCBkbyBpbnZvbHZlIHN1Y2ggUGFyYW1zCi0gKiByZXF1aXJlIHVzIHRvIHBydW5lIHNlcGFy YXRlbHkgZm9yIGVhY2ggc2NhbiBvZiB0aGUgcGFyZW50IHBsYW4gbm9kZS4KKyAqIGRvbmUgb25j ZSBkdXJpbmcgZXhlY3V0b3Igc3RhcnR1cCBvciBkdXJpbmcgRXhlY3V0b3JEb0luaXRpYWxQcnVu aW5nKCkgdGhhdAorICogcnVucyBhcyBwYXJ0IG9mIHBlcmZvcm1pbmcgQWNxdWlyZUV4ZWN1dG9y TG9ja3MoKSBvbiBhIGdpdmVuIHBsYW4gdHJlZS4KKyAqIEV4cHJlc3Npb25zIHRoYXQgZG8gaW52 b2x2ZSBzdWNoIFBhcmFtcyByZXF1aXJlIHVzIHRvIHBydW5lIHNlcGFyYXRlbHkgZm9yCisgKiBl YWNoIHNjYW4gb2YgdGhlIHBhcmVudCBwbGFuIG5vZGUuCiAgKgogICogTm90ZSB0aGF0IHBydW5p bmcgYXdheSB1bm5lZWRlZCBzdWJwbGFucyBkdXJpbmcgZXhlY3V0b3Igc3RhcnR1cCBoYXMgdGhl CiAgKiBhZGRlZCBiZW5lZml0IG9mIG5vdCBoYXZpbmcgdG8gaW5pdGlhbGl6ZSB0aGUgdW5uZWVk ZWQgc3VicGxhbnMgYXQgYWxsLgpAQCAtMTc2Nyw2ICsxNzc1LDEzIEBAIGFkanVzdF9wYXJ0aXRp b25fY29sbm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApCiAgKgkJ YWNjb3VudCBmb3IgaW5pdGlhbCBwcnVuaW5nIHBvc3NpYmx5IGhhdmluZyBlbGltaW5hdGVkIHNv bWUgb2YgdGhlCiAgKgkJc3VicGxhbnMuCiAgKgorICogRXhlY1BhcnRpdGlvbkRvSW5pdGlhbFBy dW5pbmc6CisgKgkJRG8gaW5pdGlhbCBwcnVuaW5nIHdpdGggdGhlIGluZm9ybWF0aW9uIGNvbnRh aW5lZCBpbiBhIGdpdmVuCisgKgkJUGFydGl0aW9uUHJ1bmVJbmZvIHRvIGRldGVybWluZSB0aGUg bWluaW1hbCBzZXQgb2YgY2hpbGQgc3VicGxhbnMKKyAqCQl0byBiZSBleGVjdXRlZCBvZiB0aGUg cGFyZW50IHBsYW4gbm9kZSB0byB3aGljaCB0aGUgUGFydGl0aW9uUHJ1bmVJbmZvCisgKgkJYmVs b25ncyBhbmQgYWxzbyB0aGUgc2V0IG9mIHRoZSBSVCBpbmRleGVzIG9mIGxlYWYgcGFydGl0aW9u cyB0aGF0IHdpbGwKKyAqCQliZSBzY2FubmVkIHdpdGggdGhvc2Ugc3VicGxhbnMuCisgKgogICog RXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zOgogICoJCVJldHVybnMgaW5kZXhlcyBvZiBtYXRjaGlu ZyBzdWJwbGFucyBhZnRlciBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucwogICoJCXRoYXQgYXJl IHNhZmUgdG8gZXZhbHVhdGUgYXQgYSBnaXZlbiBwb2ludC4gIFRoaXMgZnVuY3Rpb24gaXMgZmly c3QKQEAgLTE3ODcsOCArMTgwMiw5IEBAIGFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21h cChMaXN0ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApCiAgKgogICogT24gcmV0dXJuLCAqaW5p dGlhbGx5X3ZhbGlkX3N1YnBsYW5zIGlzIGFzc2lnbmVkIHRoZSBzZXQgb2YgaW5kZXhlcyBvZgog ICogY2hpbGQgc3VicGxhbnMgdGhhdCBtdXN0IGJlIGluaXRpYWxpemVkIGFsb25nIHdpdGggdGhl IHBhcmVudCBwbGFuIG5vZGUuCi0gKiBJbml0aWFsIHBydW5pbmcgaXMgcGVyZm9ybWVkIGhlcmUg aWYgbmVlZGVkIGFuZCBpbiB0aGF0IGNhc2Ugb25seSB0aGUKLSAqIHN1cnZpdmluZyBzdWJwbGFu cycgaW5kZXhlcyBhcmUgYWRkZWQuCisgKiBJbml0aWFsIHBydW5pbmcgaXMgcGVyZm9ybWVkIGhl cmUgaWYgbmVlZGVkICh1bmxlc3MgaXQgaGFzIGFscmVhZHkgYmVlbiBkb25lCisgKiBieSBFeGVj dXRvckRvSW5pdGlhbFBydW5pbmcoKSksIGFuZCBpbiB0aGF0IGNhc2Ugb25seSB0aGUgc3Vydml2 aW5nCisgKiBzdWJwbGFucycgaW5kZXhlcyBhcmUgYWRkZWQuCiAgKgogICogSWYgc3VicGxhbnMg YXJlIGluZGVlZCBwcnVuZWQsIHN1YnBsYW5fbWFwIGFycmF5cyBjb250YWluZWQgaW4gdGhlIHJl dHVybmVkCiAgKiBQYXJ0aXRpb25QcnVuZVN0YXRlIGFyZSByZS1zZXF1ZW5jZWQgdG8gbm90IGNv dW50IHRob3NlLCB0aG91Z2ggb25seSBpZiB0aGUKQEAgLTE4MDEsOSArMTgxNywxMCBAQCBFeGVj SW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkgQml0bWFw c2V0ICpyb290X3BhcmVudF9yZWxpZHMsCiAJCQkJCQkgQml0bWFwc2V0ICoqaW5pdGlhbGx5X3Zh bGlkX3N1YnBsYW5zKQogewotCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CisJUGFy dGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSA9IE5VTEw7CiAJRVN0YXRlCSAgICplc3RhdGUg PSBwbGFuc3RhdGUtPnN0YXRlOwogCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvOworCVBh cnRpdGlvblBydW5lUmVzdWx0ICpwcnVuZXJlc3VsdCA9IE5VTEw7CiAKIAkvKiBPYnRhaW4gdGhl IHBydW5laW5mbyB3ZSBuZWVkLCBhbmQgbWFrZSBzdXJlIGl0J3MgdGhlIHJpZ2h0IG9uZSAqLwog CXBydW5laW5mbyA9IGxpc3RfbnRoKGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcywgcGFydF9w cnVuZV9pbmRleCk7CkBAIC0xODE5LDIwICsxODM2LDU3IEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1 bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAkvKiBXZSBtYXkgbmVlZCBhbiBleHByZXNzaW9u IGNvbnRleHQgdG8gZXZhbHVhdGUgcGFydGl0aW9uIGV4cHJzICovCiAJRXhlY0Fzc2lnbkV4cHJD b250ZXh0KGVzdGF0ZSwgcGxhbnN0YXRlKTsKIAotCS8qIENyZWF0ZSB0aGUgd29ya2luZyBkYXRh IHN0cnVjdHVyZSBmb3IgcHJ1bmluZyAqLwotCXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRpb25Q cnVuZVN0YXRlKHBsYW5zdGF0ZSwgcHJ1bmVpbmZvKTsKKwkvKgorCSAqIE5vIG5lZWQgdG8gZG8g aW5pdGlhbCBwcnVuaW5nIGlmIGl0IHdhcyBkb25lIGFscmVhZHkgYnkKKwkgKiBFeGVjdXRvckRv SW5pdGlhbFBydW5pbmcoKSwgd2hpY2ggaXQgd291bGQgYmUgaWYgZXNfcGFydF9wcnVuZV9yZXN1 bHRzCisJICogaXMgc2V0LgorCSAqLworCWlmIChlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0 cykKKwl7CisJCXBydW5lcmVzdWx0ID0gbGlzdF9udGgoZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jl c3VsdHMsIHBhcnRfcHJ1bmVfaW5kZXgpOworCQlBc3NlcnQoSXNBKHBydW5lcmVzdWx0LCBQYXJ0 aXRpb25QcnVuZVJlc3VsdCkpOworCX0KKworCWlmIChwcnVuZXJlc3VsdCA9PSBOVUxMIHx8IHBy dW5laW5mby0+bmVlZHNfZXhlY19wcnVuaW5nKQorCXsKKwkJLyogV2UgbWF5IG5lZWQgYW4gZXhw cmVzc2lvbiBjb250ZXh0IHRvIGV2YWx1YXRlIHBhcnRpdGlvbiBleHBycyAqLworCQlFeGVjQXNz aWduRXhwckNvbnRleHQoZXN0YXRlLCBwbGFuc3RhdGUpOworCisJCS8qIEZvciBkYXRhIHJlYWRp bmcsIGV4ZWN1dG9yIGFsd2F5cyBvbWl0cyBkZXRhY2hlZCBwYXJ0aXRpb25zICovCisJCWlmIChl c3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3RvcnkgPT0gTlVMTCkKKwkJCWVzdGF0ZS0+ZXNfcGFy dGl0aW9uX2RpcmVjdG9yeSA9CisJCQkJQ3JlYXRlUGFydGl0aW9uRGlyZWN0b3J5KGVzdGF0ZS0+ ZXNfcXVlcnlfY3h0LCBmYWxzZSk7CisKKwkJLyoKKwkJICogQ3JlYXRlIHRoZSB3b3JraW5nIGRh dGEgc3RydWN0dXJlIGZvciBwcnVuaW5nLiAgTm8gbmVlZCB0byBjb25zaWRlcgorCQkgKiBpbml0 aWFsIHBydW5pbmcgc3RlcHMgaWYgd2UgaGF2ZSBhIFBhcnRpdGlvblBydW5lUmVzdWx0LgorCQkg Ki8KKwkJcHJ1bmVzdGF0ZSA9IENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUocGxhbnN0YXRlLCBw cnVuZWluZm8sCisJCQkJCQkJCQkJCSAgIHBydW5lcmVzdWx0ID09IE5VTEwsCisJCQkJCQkJCQkJ CSAgIHBydW5laW5mby0+bmVlZHNfZXhlY19wcnVuaW5nLAorCQkJCQkJCQkJCQkgICBOSUwsIHBs YW5zdGF0ZS0+cHNfRXhwckNvbnRleHQsCisJCQkJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfcGFydGl0 aW9uX2RpcmVjdG9yeSk7CisJfQogCiAJLyoKIAkgKiBQZXJmb3JtIGFuIGluaXRpYWwgcGFydGl0 aW9uIHBydW5lIHBhc3MsIGlmIHJlcXVpcmVkLgogCSAqLwotCWlmIChwcnVuZXN0YXRlLT5kb19p bml0aWFsX3BydW5lKQotCQkqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zID0gRXhlY0ZpbmRNYXRj aGluZ1N1YlBsYW5zKHBydW5lc3RhdGUsIHRydWUpOworCWlmIChwcnVuZXJlc3VsdCkKKwl7CisJ CSppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMgPSBibXNfY29weShwcnVuZXJlc3VsdC0+dmFsaWRf c3VicGxhbl9vZmZzKTsKKwl9CisJZWxzZSBpZiAocHJ1bmVzdGF0ZSAmJiBwcnVuZXN0YXRlLT5k b19pbml0aWFsX3BydW5lKQorCXsKKwkJKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyA9IEV4ZWNG aW5kTWF0Y2hpbmdTdWJQbGFucyhwcnVuZXN0YXRlLCB0cnVlLAorCQkJCQkJCQkJCQkJCQkJIE5V TEwpOworCX0KIAllbHNlCiAJewotCQkvKiBObyBwcnVuaW5nLCBzbyB3ZSdsbCBuZWVkIHRvIGlu aXRpYWxpemUgYWxsIHN1YnBsYW5zICovCisJCS8qIE5vIGluaXRpYWwgcHJ1bmluZywgc28gd2Un bGwgbmVlZCB0byBpbml0aWFsaXplIGFsbCBzdWJwbGFucyAqLwogCQlBc3NlcnQobl90b3RhbF9z dWJwbGFucyA+IDApOwogCQkqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zID0gYm1zX2FkZF9yYW5n ZShOVUxMLCAwLAogCQkJCQkJCQkJCQkJICBuX3RvdGFsX3N1YnBsYW5zIC0gMSk7CisJCXJldHVy biBwcnVuZXN0YXRlOwogCX0KIAogCS8qCkBAIC0xODQwLDcgKzE4OTQsOCBAQCBFeGVjSW5pdFBh cnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJICogdGhhdCB3ZXJlIHJlbW92 ZWQgYWJvdmUgZHVlIHRvIGluaXRpYWwgcHJ1bmluZy4gIE5vIG5lZWQgdG8gZG8gdGhpcyBpZgog CSAqIG5vIHN0ZXBzIHdlcmUgcmVtb3ZlZC4KIAkgKi8KLQlpZiAoYm1zX251bV9tZW1iZXJzKCpp bml0aWFsbHlfdmFsaWRfc3VicGxhbnMpIDwgbl90b3RhbF9zdWJwbGFucykKKwlpZiAocHJ1bmVz dGF0ZSAmJgorCQlibXNfbnVtX21lbWJlcnMoKmluaXRpYWxseV92YWxpZF9zdWJwbGFucykgPCBu X3RvdGFsX3N1YnBsYW5zKQogCXsKIAkJLyoKIAkJICogV2UgY2FuIHNhZmVseSBza2lwIHRoaXMg d2hlbiAhZG9fZXhlY19wcnVuZSwgZXZlbiB0aG91Z2ggdGhhdApAQCAtMTg1NiwxMSArMTkxMSw3 NCBAQCBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJcmV0 dXJuIHBydW5lc3RhdGU7CiB9CiAKKy8qCisgKiBFeGVjUGFydGl0aW9uRG9Jbml0aWFsUHJ1bmlu ZworICoJCVBlcmZvcm0gaW5pdGlhbCBwcnVuaW5nIHVzaW5nIGdpdmVuIFBhcnRpdGlvblBydW5l SW5mbyB0byBkZXRlcm1pbmUKKyAqCQl0aGUgbWluaW1hbCBzZXQgb2YgY2hpbGQgc3VicGxhbnMg dGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGFuZCBhbHNvIHRoZQorICoJCXNldCBvZiBSVCBpbmRleGVz IG9mIHRoZSBsZWFmIHBhcnRpdGlvbnMgc2Nhbm5lZCBieSB0aG9zZSBzdWJwbGFucy4KKyAqLwor Qml0bWFwc2V0ICoKK0V4ZWNQYXJ0aXRpb25Eb0luaXRpYWxQcnVuaW5nKFBsYW5uZWRTdG10ICpw bGFubmVkc3RtdCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCisJCQkJCQkJICBQYXJ0aXRpb25QcnVu ZUluZm8gKnBydW5laW5mbywKKwkJCQkJCQkgIEJpdG1hcHNldCAqKnNjYW5fbGVhZnBhcnRfcnRp cykKK3sKKwlMaXN0CQkgKnJ0YWJsZSA9IHBsYW5uZWRzdG10LT5ydGFibGU7CisJRXhwckNvbnRl eHQJICplY29udGV4dDsKKwlQYXJ0aXRpb25EaXJlY3RvcnkgcGRpcjsKKwlNZW1vcnlDb250ZXh0 IG9sZGNvbnRleHQsCisJCQkJICB0bXBjb250ZXh0OworCVBhcnRpdGlvblBydW5lU3RhdGUgKnBy dW5lc3RhdGU7CisJQml0bWFwc2V0CSAqdmFsaWRfc3VicGxhbl9vZmZzOworCisJLyoKKwkgKiBB IHRlbXBvcmFyeSBjb250ZXh0IGZvciBtZW1vcnkgYWxsb2NhdGlvbnMgcmVxdWlyZWQgd2hpbGUg ZXhlY3V0aW5nCisJICogcGFydGl0aW9uIHBydW5pbmcgc3RlcHMuCisJICovCisJdG1wY29udGV4 dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJ CSAgICJpbml0aWFsIHBydW5pbmcgd29ya2luZyBkYXRhIiwKKwkJCQkJCQkJCSAgIEFMTE9DU0VU X0RFRkFVTFRfU0laRVMpOworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8odG1w Y29udGV4dCk7CisKKwkvKgorCSAqIFBhcnRpdGlvbkRpcmVjdG9yeSB0byBsb29rIHVwIHBhcnRp dGlvbiBkZXNjcmlwdG9ycy4KKwkgKiBOb3RlIHRoYXQgd2UgZG9uJ3Qgb21pdCBkZXRhY2hlZCBw YXJ0aXRpb25zLCBqdXN0IGxpa2UgZHVyaW5nCisJICogZXhlY3V0aW9uIHByb3Blci4KKwkgKi8K KwlwZGlyID0gQ3JlYXRlUGFydGl0aW9uRGlyZWN0b3J5KEN1cnJlbnRNZW1vcnlDb250ZXh0LCBm YWxzZSk7CisKKwkvKgorCSAqIFdlIGRvbid0IHlldCBoYXZlIGEgUGxhblN0YXRlIGZvciB0aGUg cGFyZW50IHBsYW4gbm9kZSwgc28gd2UgbXVzdAorCSAqIGNyZWF0ZSBhIHN0YW5kYWxvbmUgRXhw ckNvbnRleHQgdG8gZXZhbHVhdGUgcHJ1bmluZyBleHByZXNzaW9ucywKKwkgKiBlcXVpcHBlZCB3 aXRoIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgRVhURVJOIHBhcmFtZXRlcnMgdGhhdCB0aGUK KwkgKiBjYWxsZXIgcGFzc2VkIHVzLiAgTm90ZSB0aGF0IHRoYXQncyBva2F5IGJlY2F1c2UgdGhl IGluaXRpYWwgcHJ1bmluZworCSAqIHN0ZXBzIGRvIG5vdCBjb250YWluIGFueXRoaW5nIHRoYXQg cmVxdWlyZXMgdGhlIGV4ZWN1dGlvbiB0byBoYXZlCisJICogc3RhcnRlZCBhbmQgdGh1cyBuZWVk IHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgaW4gYSBQbGFuU3RhdGUuCisJICovCisJZWNvbnRl eHQgPSBDcmVhdGVTdGFuZGFsb25lRXhwckNvbnRleHQoKTsKKwllY29udGV4dC0+ZWN4dF9wYXJh bV9saXN0X2luZm8gPSBwYXJhbXM7CisJcHJ1bmVzdGF0ZSA9IENyZWF0ZVBhcnRpdGlvblBydW5l U3RhdGUoTlVMTCwgcHJ1bmVpbmZvLCB0cnVlLCBmYWxzZSwKKwkJCQkJCQkJCQkgICBydGFibGUs IGVjb250ZXh0LCBwZGlyKTsKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisK KwkvKiBEbyB0aGUgaW5pdGlhbCBwcnVuaW5nLiAqLworCXZhbGlkX3N1YnBsYW5fb2ZmcyA9IEV4 ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhwcnVuZXN0YXRlLCB0cnVlLAorCQkJCQkJCQkJCQkJICBz Y2FuX2xlYWZwYXJ0X3J0aXMpOworCisJRnJlZUV4cHJDb250ZXh0KGVjb250ZXh0LCB0cnVlKTsK KwlEZXN0cm95UGFydGl0aW9uRGlyZWN0b3J5KHBkaXIpOworCU1lbW9yeUNvbnRleHREZWxldGUo dG1wY29udGV4dCk7CisKKwlyZXR1cm4gdmFsaWRfc3VicGxhbl9vZmZzOworfQorCiAvKgogICog Q3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZQogICoJCUJ1aWxkIHRoZSBkYXRhIHN0cnVjdHVyZSBy ZXF1aXJlZCBmb3IgY2FsbGluZyBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMKICAqCi0gKiAncGxh bnN0YXRlJyBpcyB0aGUgcGFyZW50IHBsYW4gbm9kZSdzIGV4ZWN1dGlvbiBzdGF0ZS4KKyAqICdw bGFuc3RhdGUnLCBpZiBub3QgTlVMTCwgaXMgdGhlIHBhcmVudCBwbGFuIG5vZGUncyBleGVjdXRp b24gc3RhdGUuICBJdAorICogY2FuIGJlIE5VTEwgaWYgYmVpbmcgY2FsbGVkIGJlZm9yZSBFeGVj dXRvclN0YXJ0KCksIGluIHdoaWNoIGNhc2UsCisgKiAncnRhYmxlJyAocmFuZ2UgdGFibGUpLCAn ZWNvbnRleHQnLCBhbmQgJ3BhcnRkaXInIG11c3QgYmUgZXhwbGljaXRseQorICogcHJvdmlkZWQu CiAgKgogICogJ3BydW5laW5mbycgaXMgYSBQYXJ0aXRpb25QcnVuZUluZm8gYXMgZ2VuZXJhdGVk IGJ5CiAgKiBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8uICBIZXJlIHdlIGJ1aWxkIGEgUGFydGl0 aW9uUHJ1bmVTdGF0ZSBjb250YWluaW5nIGEKQEAgLTE4NzQsMTkgKzE5OTIsMjEgQEAgRXhlY0lu aXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogICogUGFydGl0aW9uZWRS ZWxQcnVuZUluZm8uCiAgKi8KIHN0YXRpYyBQYXJ0aXRpb25QcnVuZVN0YXRlICoKLUNyZWF0ZVBh cnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBydW5lSW5m byAqcHJ1bmVpbmZvKQorQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5z dGF0ZSwKKwkJCQkJCSAgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCisJCQkJCQkgIGJv b2wgY29uc2lkZXJfaW5pdGlhbF9zdGVwcywKKwkJCQkJCSAgYm9vbCBjb25zaWRlcl9leGVjX3N0 ZXBzLAorCQkJCQkJICBMaXN0ICpydGFibGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwKKwkJCQkJ CSAgUGFydGl0aW9uRGlyZWN0b3J5IHBhcnRkaXIpCiB7Ci0JRVN0YXRlCSAgICplc3RhdGUgPSBw bGFuc3RhdGUtPnN0YXRlOworCUVTdGF0ZQkgICAqZXN0YXRlID0gcGxhbnN0YXRlID8gcGxhbnN0 YXRlLT5zdGF0ZSA6IE5VTEw7CiAJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKIAlp bnQJCQluX3BhcnRfaGllcmFyY2hpZXM7CiAJTGlzdENlbGwgICAqbGM7CiAJaW50CQkJaTsKLQlF eHByQ29udGV4dCAqZWNvbnRleHQgPSBwbGFuc3RhdGUtPnBzX0V4cHJDb250ZXh0OwogCi0JLyog Rm9yIGRhdGEgcmVhZGluZywgZXhlY3V0b3IgYWx3YXlzIG9taXRzIGRldGFjaGVkIHBhcnRpdGlv bnMgKi8KLQlpZiAoZXN0YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5ID09IE5VTEwpCi0JCWVz dGF0ZS0+ZXNfcGFydGl0aW9uX2RpcmVjdG9yeSA9Ci0JCQlDcmVhdGVQYXJ0aXRpb25EaXJlY3Rv cnkoZXN0YXRlLT5lc19xdWVyeV9jeHQsIGZhbHNlKTsKKwlBc3NlcnQoKGVzdGF0ZSAhPSBOVUxM KSB8fAorCQkJKHBhcnRkaXIgIT0gTlVMTCAmJiBlY29udGV4dCAhPSBOVUxMICYmIHJ0YWJsZSAh PSBOSUwpKTsKIAogCW5fcGFydF9oaWVyYXJjaGllcyA9IGxpc3RfbGVuZ3RoKHBydW5laW5mby0+ cHJ1bmVfaW5mb3MpOwogCUFzc2VydChuX3BhcnRfaGllcmFyY2hpZXMgPiAwKTsKQEAgLTE5NDEs MTUgKzIwNjEsNDIgQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5z dGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQlQYXJ0aXRpb25LZXkgcGFy dGtleTsKIAogCQkJLyoKLQkJCSAqIFdlIGNhbiByZWx5IG9uIHRoZSBjb3BpZXMgb2YgdGhlIHBh cnRpdGlvbmVkIHRhYmxlJ3MgcGFydGl0aW9uCi0JCQkgKiBrZXkgYW5kIHBhcnRpdGlvbiBkZXNj cmlwdG9yIGFwcGVhcmluZyBpbiBpdHMgcmVsY2FjaGUgZW50cnksCi0JCQkgKiBiZWNhdXNlIHRo YXQgZW50cnkgd2lsbCBiZSBoZWxkIG9wZW4gYW5kIGxvY2tlZCBmb3IgdGhlCi0JCQkgKiBkdXJh dGlvbiBvZiB0aGlzIGV4ZWN1dG9yIHJ1bi4KKwkJCSAqIE11c3Qgb3BlbiB0aGUgcmVsYXRpb24g Ynkgb3Vyc2VsdmVzIHdoZW4gY2FsbGVkIGJlZm9yZSB0aGUKKwkJCSAqIGV4ZWN1dGlvbiBoYXMg c3RhcnRlZCwgc3VjaCBhcywgd2hlbiBjYWxsZWQgZHVyaW5nCisJCQkgKiBFeGVjdXRvckRvSW5p dGlhbFBydW5pbmcoKSBvbiBhIGNhY2hlZCBwbGFuLiAgSW4gdGhhdCBjYXNlLAorCQkJICogc3Vi LXBhcnRpdGlvbnMgbXVzdCBiZSBsb2NrZWQsIGJlY2F1c2UgQWNxdWlyZVBsYW5uZXJMb2Nrcygp CisJCQkgKiB3b3VsZCBub3QgaGF2ZSBzZWVuIHRoZW0uICgxc3QgcmVsYXRpb24gaW4gYSBwYXJ0 cmVscHJ1bmVpbmZvcworCQkJICogbGlzdCBpcyBhbHdheXMgdGhlIHJvb3QgcGFydGl0aW9uZWQg dGFibGUgYXBwZWFyaW5nIGluIHRoZQorCQkJICogcXVlcnksIHdoaWNoIEFjcXVpcmVQbGFubmVy TG9ja3MoKSB3b3VsZCBoYXZlIGxvY2tlZDsgdGhlCisJCQkgKiBBc3NlcnQgaW4gcmVsYXRpb25f b3BlbigpIGd1YXJkcyB0aGF0IGFzc3VtcHRpb24uKQorCQkJICovCisJCQlpZiAoZXN0YXRlID09 IE5VTEwpCisJCQl7CisJCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gcnRfZmV0Y2gocGluZm8tPnJ0 aW5kZXgsIHJ0YWJsZSk7CisJCQkJaW50CQlsb2NrbW9kZSA9IChqID09IDApID8gTm9Mb2NrIDog cnRlLT5yZWxsb2NrbW9kZTsKKworCQkJCXBhcnRyZWwgPSB0YWJsZV9vcGVuKHJ0ZS0+cmVsaWQs IGxvY2ttb2RlKTsKKwkJCX0KKwkJCWVsc2UKKwkJCQlwYXJ0cmVsID0gRXhlY0dldFJhbmdlVGFi bGVSZWxhdGlvbihlc3RhdGUsIHBpbmZvLT5ydGluZGV4KTsKKworCQkJLyoKKwkJCSAqIFdlIGNh biByZWx5IG9uIHRoZSBjb3B5IG9mIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSdzIHBhcnRpdGlvbgor CQkJICoga2V5IGZyb20gaW4gaXRzIHJlbGNhY2hlIGVudHJ5LCBiZWNhdXNlIGl0IGNhbid0IGNo YW5nZSAob3IKKwkJCSAqIGdldCBkZXN0cm95ZWQpIGFzIGxvbmcgYXMgdGhlIHJlbGF0aW9uIGlz IGxvY2tlZC4gIFBhcnRpdGlvbgorCQkJICogZGVzY3JpcHRvciBpcyB0YWtlbiBmcm9tIHRoZSBQ YXJ0aXRpb25EaXJlY3RvcnkgYXNzb2NpYXRlZCB3aXRoCisJCQkgKiB0aGUgdGFibGUgdGhhdCBp cyBoZWxkIG9wZW4gbG9uZyBlbm91Z2ggZm9yIHRoZSBkZXNjcmlwdG9yIHRvCisJCQkgKiByZW1h aW4gdmFsaWQgd2hpbGUgaXQncyB1c2VkIHRvIHBlcmZvcm0gdGhlIHBydW5pbmcgc3RlcHMuCiAJ CQkgKi8KLQkJCXBhcnRyZWwgPSBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0ZSwgcGlu Zm8tPnJ0aW5kZXgpOwogCQkJcGFydGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcnRy ZWwpOwotCQkJcGFydGRlc2MgPSBQYXJ0aXRpb25EaXJlY3RvcnlMb29rdXAoZXN0YXRlLT5lc19w YXJ0aXRpb25fZGlyZWN0b3J5LAotCQkJCQkJCQkJCQkJcGFydHJlbCk7CisJCQlwYXJ0ZGVzYyA9 IFBhcnRpdGlvbkRpcmVjdG9yeUxvb2t1cChwYXJ0ZGlyLCBwYXJ0cmVsKTsKKworCQkJLyoKKwkJ CSAqIE11c3QgY2xvc2UgcGFydHJlbCwga2VlcGluZyB0aGUgbG9jayB0YWtlbiwgaWYgd2UncmUg bm90IHVzaW5nCisJCQkgKiBFU3RhdGUncyBlbnRyeS4KKwkJCSAqLworCQkJaWYgKGVzdGF0ZSA9 PSBOVUxMKQorCQkJCXRhYmxlX2Nsb3NlKHBhcnRyZWwsIE5vTG9jayk7CiAKIAkJCS8qCiAJCQkg KiBJbml0aWFsaXplIHRoZSBzdWJwbGFuX21hcCBhbmQgc3VicGFydF9tYXAuCkBAIC0xOTYzLDYg KzIxMTAsNyBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRl LCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCUFzc2VydChwYXJ0ZGVzYy0+bnBh cnRzID49IHBpbmZvLT5ucGFydHMpOwogCQkJcHBydW5lLT5ucGFydHMgPSBwYXJ0ZGVzYy0+bnBh cnRzOwogCQkJcHBydW5lLT5zdWJwbGFuX21hcCA9IHBhbGxvYyhzaXplb2YoaW50KSAqIHBhcnRk ZXNjLT5ucGFydHMpOworCQkJcHBydW5lLT5ydGlfbWFwID0gcGFsbG9jKHNpemVvZihJbmRleCkg KiBwYXJ0ZGVzYy0+bnBhcnRzKTsKIAkJCWlmIChwYXJ0ZGVzYy0+bnBhcnRzID09IHBpbmZvLT5u cGFydHMpCiAJCQl7CiAJCQkJLyoKQEAgLTE5NzMsNiArMjEyMSw4IEBAIENyZWF0ZVBhcnRpdGlv blBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1 bmVpbmZvKQogCQkJCXBwcnVuZS0+c3VicGFydF9tYXAgPSBwaW5mby0+c3VicGFydF9tYXA7CiAJ CQkJbWVtY3B5KHBwcnVuZS0+c3VicGxhbl9tYXAsIHBpbmZvLT5zdWJwbGFuX21hcCwKIAkJCQkJ ICAgc2l6ZW9mKGludCkgKiBwaW5mby0+bnBhcnRzKTsKKwkJCQltZW1jcHkocHBydW5lLT5ydGlf bWFwLCBwaW5mby0+cnRpX21hcCwKKwkJCQkJICAgc2l6ZW9mKGludCkgKiBwaW5mby0+bnBhcnRz KTsKIAogCQkJCS8qCiAJCQkJICogRG91YmxlLWNoZWNrIHRoYXQgdGhlIGxpc3Qgb2YgdW5wcnVu ZWQgcmVsYXRpb25zIGhhcyBub3QKQEAgLTIwMjMsNiArMjE3Myw4IEBAIENyZWF0ZVBhcnRpdGlv blBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1 bmVpbmZvKQogCQkJCQkJCXBpbmZvLT5zdWJwbGFuX21hcFtwZF9pZHhdOwogCQkJCQkJcHBydW5l LT5zdWJwYXJ0X21hcFtwcF9pZHhdID0KIAkJCQkJCQlwaW5mby0+c3VicGFydF9tYXBbcGRfaWR4 XTsKKwkJCQkJCXBwcnVuZS0+cnRpX21hcFtwcF9pZHhdID0KKwkJCQkJCQlwaW5mby0+cnRpX21h cFtwZF9pZHhdOwogCQkJCQkJcGRfaWR4Kys7CiAJCQkJCX0KIAkJCQkJZWxzZQpAQCAtMjAzMCw2 ICsyMTgyLDcgQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0 ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQkJCQkvKiB0aGlzIHBhcnRkZXNj IGVudHJ5IGlzIG5vdCBpbiB0aGUgcGxhbiAqLwogCQkJCQkJcHBydW5lLT5zdWJwbGFuX21hcFtw cF9pZHhdID0gLTE7CiAJCQkJCQlwcHJ1bmUtPnN1YnBhcnRfbWFwW3BwX2lkeF0gPSAtMTsKKwkJ CQkJCXBwcnVuZS0+cnRpX21hcFtwcF9pZHhdID0gMDsKIAkJCQkJfQogCQkJCX0KIApAQCAtMjA1 MSw3ICsyMjA0LDcgQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5z dGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQkgKiBJbml0aWFsaXplIHBy dW5pbmcgY29udGV4dHMgYXMgbmVlZGVkLgogCQkJICovCiAJCQlwcHJ1bmUtPmluaXRpYWxfcHJ1 bmluZ19zdGVwcyA9IHBpbmZvLT5pbml0aWFsX3BydW5pbmdfc3RlcHM7Ci0JCQlpZiAocGluZm8t PmluaXRpYWxfcHJ1bmluZ19zdGVwcykKKwkJCWlmIChjb25zaWRlcl9pbml0aWFsX3N0ZXBzICYm IHBpbmZvLT5pbml0aWFsX3BydW5pbmdfc3RlcHMpCiAJCQl7CiAJCQkJSW5pdFBhcnRpdGlvblBy dW5lQ29udGV4dCgmcHBydW5lLT5pbml0aWFsX2NvbnRleHQsCiAJCQkJCQkJCQkJICBwaW5mby0+ aW5pdGlhbF9wcnVuaW5nX3N0ZXBzLApAQCAtMjA2MSw3ICsyMjE0LDcgQEAgQ3JlYXRlUGFydGl0 aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpw cnVuZWluZm8pCiAJCQkJcHJ1bmVzdGF0ZS0+ZG9faW5pdGlhbF9wcnVuZSA9IHRydWU7CiAJCQl9 CiAJCQlwcHJ1bmUtPmV4ZWNfcHJ1bmluZ19zdGVwcyA9IHBpbmZvLT5leGVjX3BydW5pbmdfc3Rl cHM7Ci0JCQlpZiAocGluZm8tPmV4ZWNfcHJ1bmluZ19zdGVwcykKKwkJCWlmIChjb25zaWRlcl9l eGVjX3N0ZXBzICYmIHBpbmZvLT5leGVjX3BydW5pbmdfc3RlcHMpCiAJCQl7CiAJCQkJSW5pdFBh cnRpdGlvblBydW5lQ29udGV4dCgmcHBydW5lLT5leGVjX2NvbnRleHQsCiAJCQkJCQkJCQkJICBw aW5mby0+ZXhlY19wcnVuaW5nX3N0ZXBzLApAQCAtMjI4OSwxMCArMjQ0MiwxNCBAQCBQYXJ0aXRp b25QcnVuZUZpeFN1YlBsYW5NYXAoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKICAq IFBhc3MgaW5pdGlhbF9wcnVuZSBpZiBQQVJBTV9FWEVDIFBhcmFtcyBjYW5ub3QgeWV0IGJlIGV2 YWx1YXRlZC4gIFRoaXMKICAqIGRpZmZlcmVudGlhdGVzIHRoZSBpbml0aWFsIGV4ZWN1dG9yLXRp bWUgcHJ1bmluZyBzdGVwIGZyb20gbGF0ZXIKICAqIHJ1bnRpbWUgcHJ1bmluZy4KKyAqCisgKiBS VCBpbmRleGVzIG9mIGxlYWYgcGFydGl0aW9ucyBzY2FubmVkIGJ5IHRoZSBjaG9zZW4gc3VicGxh bnMgYXJlIGFkZGVkIHRvCisgKiAqc2Nhbl9sZWFmcGFydF9ydGlzIGlmIHRoZSBwb2ludGVyIGlz IG5vbi1OVUxMLgogICovCiBCaXRtYXBzZXQgKgogRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBh cnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCi0JCQkJCQkgYm9vbCBpbml0aWFsX3BydW5l KQorCQkJCQkJIGJvb2wgaW5pdGlhbF9wcnVuZSwKKwkJCQkJCSBCaXRtYXBzZXQgKipzY2FuX2xl YWZwYXJ0X3J0aXMpCiB7CiAJQml0bWFwc2V0ICAqcmVzdWx0ID0gTlVMTDsKIAlNZW1vcnlDb250 ZXh0IG9sZGNvbnRleHQ7CkBAIC0yMzI3LDcgKzI0ODQsNyBAQCBFeGVjRmluZE1hdGNoaW5nU3Vi UGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAkJICovCiAJCXBwcnVuZSA9 ICZwcnVuZWRhdGEtPnBhcnRyZWxwcnVuZWRhdGFbMF07CiAJCWZpbmRfbWF0Y2hpbmdfc3VicGxh bnNfcmVjdXJzZShwcnVuZWRhdGEsIHBwcnVuZSwgaW5pdGlhbF9wcnVuZSwKLQkJCQkJCQkJCSAg ICZyZXN1bHQpOworCQkJCQkJCQkJICAgJnJlc3VsdCwgc2Nhbl9sZWFmcGFydF9ydGlzKTsKIAog CQkvKiBFeHByZXNzaW9uIGV2YWwgbWF5IGhhdmUgdXNlZCBzcGFjZSBpbiBFeHByQ29udGV4dCB0 b28gKi8KIAkJaWYgKHBwcnVuZS0+ZXhlY19wcnVuaW5nX3N0ZXBzKQpAQCAtMjM0MSw2ICsyNDk4 LDggQEAgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5l c3RhdGUsCiAKIAkvKiBDb3B5IHJlc3VsdCBvdXQgb2YgdGhlIHRlbXAgY29udGV4dCBiZWZvcmUg d2UgcmVzZXQgaXQgKi8KIAlyZXN1bHQgPSBibXNfY29weShyZXN1bHQpOworCWlmIChzY2FuX2xl YWZwYXJ0X3J0aXMpCisJCSpzY2FuX2xlYWZwYXJ0X3J0aXMgPSBibXNfY29weSgqc2Nhbl9sZWFm cGFydF9ydGlzKTsKIAogCU1lbW9yeUNvbnRleHRSZXNldChwcnVuZXN0YXRlLT5wcnVuZV9jb250 ZXh0KTsKIApAQCAtMjM1MSwxMyArMjUxMCwxNSBAQCBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMo UGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKICAqIGZpbmRfbWF0Y2hpbmdfc3VicGxh bnNfcmVjdXJzZQogICoJCVJlY3Vyc2l2ZSB3b3JrZXIgZnVuY3Rpb24gZm9yIEV4ZWNGaW5kTWF0 Y2hpbmdTdWJQbGFucwogICoKLSAqIEFkZHMgdmFsaWQgKG5vbi1wcnVuYWJsZSkgc3VicGxhbiBJ RHMgdG8gKnZhbGlkc3VicGxhbnMKKyAqIEFkZHMgdmFsaWQgKG5vbi1wcnVuYWJsZSkgc3VicGxh biBJRHMgdG8gKnZhbGlkc3VicGxhbnMgYW5kIFJUIGluZGV4ZXMgb2YKKyAqIG9mIHRoZSBjb3Jy ZXNwb25kaW5nIGxlYWYgcGFydGl0aW9ucyB0byAqc2Nhbl9sZWFmcGFydF9ydGlzIChpZiBhc2tl ZCBmb3IpLgogICovCiBzdGF0aWMgdm9pZAogZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNl KFBhcnRpdGlvblBydW5pbmdEYXRhICpwcnVuZWRhdGEsCiAJCQkJCQkJICAgUGFydGl0aW9uZWRS ZWxQcnVuaW5nRGF0YSAqcHBydW5lLAogCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSwKLQkJ CQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5zKQorCQkJCQkJCSAgIEJpdG1hcHNldCAq KnZhbGlkc3VicGxhbnMsCisJCQkJCQkJICAgQml0bWFwc2V0ICoqc2Nhbl9sZWFmcGFydF9ydGlz KQogewogCUJpdG1hcHNldCAgKnBhcnRzZXQ7CiAJaW50CQkJaTsKQEAgLTIzODQsOCArMjU0NSwx NCBAQCBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9uUHJ1bmluZ0RhdGEg KnBydW5lZGF0YSwKIAl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIocGFydHNldCwgaSkpID49 IDApCiAJewogCQlpZiAocHBydW5lLT5zdWJwbGFuX21hcFtpXSA+PSAwKQorCQl7CiAJCQkqdmFs aWRzdWJwbGFucyA9IGJtc19hZGRfbWVtYmVyKCp2YWxpZHN1YnBsYW5zLAogCQkJCQkJCQkJCQlw cHJ1bmUtPnN1YnBsYW5fbWFwW2ldKTsKKwkJCUFzc2VydChwcHJ1bmUtPnJ0aV9tYXBbaV0gPiAw KTsKKwkJCWlmIChzY2FuX2xlYWZwYXJ0X3J0aXMpCisJCQkJKnNjYW5fbGVhZnBhcnRfcnRpcyA9 IGJtc19hZGRfbWVtYmVyKCpzY2FuX2xlYWZwYXJ0X3J0aXMsCisJCQkJCQkJCQkJCQkJIHBwcnVu ZS0+cnRpX21hcFtpXSk7CisJCX0KIAkJZWxzZQogCQl7CiAJCQlpbnQJCQlwYXJ0aWR4ID0gcHBy dW5lLT5zdWJwYXJ0X21hcFtpXTsKQEAgLTIzOTMsNyArMjU2MCw4IEBAIGZpbmRfbWF0Y2hpbmdf c3VicGxhbnNfcmVjdXJzZShQYXJ0aXRpb25QcnVuaW5nRGF0YSAqcHJ1bmVkYXRhLAogCQkJaWYg KHBhcnRpZHggPj0gMCkKIAkJCQlmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UocHJ1bmVk YXRhLAogCQkJCQkJCQkJCQkgICAmcHJ1bmVkYXRhLT5wYXJ0cmVscHJ1bmVkYXRhW3BhcnRpZHhd LAotCQkJCQkJCQkJCQkgICBpbml0aWFsX3BydW5lLCB2YWxpZHN1YnBsYW5zKTsKKwkJCQkJCQkJ CQkJICAgaW5pdGlhbF9wcnVuZSwgdmFsaWRzdWJwbGFucywKKwkJCQkJCQkJCQkJICAgc2Nhbl9s ZWFmcGFydF9ydGlzKTsKIAkJCWVsc2UKIAkJCXsKIAkJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRp bHMuYwppbmRleCA1NzJjODdlNDUzLi4wNDRiZjNmNDkxIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRp bHMuYwpAQCAtMTM1LDYgKzEzNSw3IEBAIENyZWF0ZUV4ZWN1dG9yU3RhdGUodm9pZCkKIAllc3Rh dGUtPmVzX3BhcmFtX2V4ZWNfdmFscyA9IE5VTEw7CiAKIAllc3RhdGUtPmVzX3F1ZXJ5RW52ID0g TlVMTDsKKwllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cyA9IE5JTDsKIAogCWVzdGF0ZS0+ ZXNfcXVlcnlfY3h0ID0gcWNvbnRleHQ7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2Z1bmN0aW9ucy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKaW5kZXgg ZGMxMzYyNTE3MS4uYmZmYjQyY2U3MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZnVuY3Rpb25zLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKQEAgLTg0 Miw3ICs4NDIsNyBAQCBwb3N0cXVlbF9zdGFydChleGVjdXRpb25fc3RhdGUgKmVzLCBTUUxGdW5j dGlvbkNhY2hlUHRyIGZjYWNoZSkKIAllbHNlCiAJCWRlc3QgPSBOb25lX1JlY2VpdmVyOwogCi0J ZXMtPnFkID0gQ3JlYXRlUXVlcnlEZXNjKGVzLT5zdG10LAorCWVzLT5xZCA9IENyZWF0ZVF1ZXJ5 RGVzYyhlcy0+c3RtdCwgTklMLAogCQkJCQkJCSBmY2FjaGUtPnNyYywKIAkJCQkJCQkgR2V0QWN0 aXZlU25hcHNob3QoKSwKIAkJCQkJCQkgSW52YWxpZFNuYXBzaG90LApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUFwcGVuZC5jCmluZGV4IDk5ODMwMTk4YmQuLjNiOTE3NTg0ZGUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQXBwZW5kLmMKQEAgLTE1Niw3ICsxNTYsOCBAQCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkgKiBzdWJwbGFuLCB3ZSBjYW4gZmls bCBhc192YWxpZF9zdWJwbGFucyBpbW1lZGlhdGVseSwgcHJldmVudGluZwogCQkgKiBsYXRlciBj YWxscyB0byBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMuCiAJCSAqLwotCQlpZiAoIXBydW5lc3Rh dGUtPmRvX2V4ZWNfcHJ1bmUgJiYgbnBsYW5zID4gMCkKKwkJaWYgKGFwcGVuZHN0YXRlLT5hc19w cnVuZV9zdGF0ZSA9PSBOVUxMIHx8CisJCQkoIWFwcGVuZHN0YXRlLT5hc19wcnVuZV9zdGF0ZS0+ ZG9fZXhlY19wcnVuZSAmJiBucGxhbnMgPiAwKSkKIAkJCWFwcGVuZHN0YXRlLT5hc192YWxpZF9z dWJwbGFucyA9IGJtc19hZGRfcmFuZ2UoTlVMTCwgMCwgbnBsYW5zIC0gMSk7CiAJfQogCWVsc2UK QEAgLTU3OCw3ICs1NzksNyBAQCBjaG9vc2VfbmV4dF9zdWJwbGFuX2xvY2FsbHkoQXBwZW5kU3Rh dGUgKm5vZGUpCiAJCX0KIAkJZWxzZSBpZiAobm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPT0gTlVM TCkKIAkJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0KLQkJCQlFeGVjRmluZE1hdGNoaW5nU3Vi UGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlKTsKKwkJCQlFeGVjRmluZE1hdGNoaW5n U3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsKIAogCQl3aGljaHBs YW4gPSAtMTsKIAl9CkBAIC02NDMsNyArNjQ0LDcgQEAgY2hvb3NlX25leHRfc3VicGxhbl9mb3Jf bGVhZGVyKEFwcGVuZFN0YXRlICpub2RlKQogCQlpZiAobm9kZS0+YXNfdmFsaWRfc3VicGxhbnMg PT0gTlVMTCkKIAkJewogCQkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPQotCQkJCUV4ZWNGaW5k TWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UpOworCQkJCUV4ZWNG aW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwog CiAJCQkvKgogCQkJICogTWFyayBlYWNoIGludmFsaWQgcGxhbiBhcyBmaW5pc2hlZCB0byBhbGxv dyB0aGUgbG9vcCBiZWxvdyB0bwpAQCAtNzE4LDcgKzcxOSw3IEBAIGNob29zZV9uZXh0X3N1YnBs YW5fZm9yX3dvcmtlcihBcHBlbmRTdGF0ZSAqbm9kZSkKIAllbHNlIGlmIChub2RlLT5hc192YWxp ZF9zdWJwbGFucyA9PSBOVUxMKQogCXsKIAkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPQotCQkJ RXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSk7CisJ CQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlLCBO VUxMKTsKIAkJbWFya19pbnZhbGlkX3N1YnBsYW5zX2FzX2ZpbmlzaGVkKG5vZGUpOwogCX0KIApA QCAtODY5LDcgKzg3MCw3IEBAIEV4ZWNBcHBlbmRBc3luY0JlZ2luKEFwcGVuZFN0YXRlICpub2Rl KQogCWlmIChub2RlLT5hc192YWxpZF9zdWJwbGFucyA9PSBOVUxMKQogCXsKIAkJbm9kZS0+YXNf dmFsaWRfc3VicGxhbnMgPQotCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3By dW5lX3N0YXRlLCBmYWxzZSk7CisJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNf cHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsKIAogCQljbGFzc2lmeV9tYXRjaGluZ19zdWJwbGFu cyhub2RlKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VB cHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCmluZGV4IGYz NzBmOWYyODcuLmNjZmEwODM5NDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNZXJnZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVu ZC5jCkBAIC0xMDQsNyArMTA0LDggQEAgRXhlY0luaXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCSAqIHN1YnBsYW4sIHdlIGNhbiBm aWxsIG1zX3ZhbGlkX3N1YnBsYW5zIGltbWVkaWF0ZWx5LCBwcmV2ZW50aW5nCiAJCSAqIGxhdGVy IGNhbGxzIHRvIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucy4KIAkJICovCi0JCWlmICghcHJ1bmVz dGF0ZS0+ZG9fZXhlY19wcnVuZSAmJiBucGxhbnMgPiAwKQorCQlpZiAobWVyZ2VzdGF0ZS0+bXNf cHJ1bmVfc3RhdGUgPT0gTlVMTCB8fAorCQkJKCFtZXJnZXN0YXRlLT5tc19wcnVuZV9zdGF0ZS0+ ZG9fZXhlY19wcnVuZSAmJiBucGxhbnMgPiAwKSkKIAkJCW1lcmdlc3RhdGUtPm1zX3ZhbGlkX3N1 YnBsYW5zID0gYm1zX2FkZF9yYW5nZShOVUxMLCAwLCBucGxhbnMgLSAxKTsKIAl9CiAJZWxzZQpA QCAtMjE5LDcgKzIyMCw3IEBAIEV4ZWNNZXJnZUFwcGVuZChQbGFuU3RhdGUgKnBzdGF0ZSkKIAkJ ICovCiAJCWlmIChub2RlLT5tc192YWxpZF9zdWJwbGFucyA9PSBOVUxMKQogCQkJbm9kZS0+bXNf dmFsaWRfc3VicGxhbnMgPQotCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5tc19w cnVuZV9zdGF0ZSwgZmFsc2UpOworCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5t c19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwogCiAJCS8qCiAJCSAqIEZpcnN0IHRpbWUgdGhy b3VnaDogcHVsbCB0aGUgZmlyc3QgdHVwbGUgZnJvbSBlYWNoIHZhbGlkIHN1YnBsYW4sCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L3NwaS5jCmluZGV4IGZkNTc5NmYxYjkuLjkzMDEyYTViM2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL3NwaS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCkBAIC0x NTc4LDYgKzE1NzgsNyBAQCBTUElfY3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hhciAqbmFt ZSwgU1BJUGxhblB0ciBwbGFuLAogCUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2U7CiAJQ2Fj aGVkUGxhbiAqY3BsYW47CiAJTGlzdAkgICAqc3RtdF9saXN0OworCUxpc3QJICAgKnBhcnRfcHJ1 bmVfcmVzdWx0c19saXN0OwogCWNoYXIJICAgKnF1ZXJ5X3N0cmluZzsKIAlTbmFwc2hvdAlzbmFw c2hvdDsKIAlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CkBAIC0xNjU3LDcgKzE2NTgsMTAgQEAg U1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxh biwKIAkgKi8KIAogCS8qIFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBpbmNyZW1lbnQgcGxhbiByZWZj b3VudCBmb3IgcG9ydGFsICovCi0JY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHBh cmFtTEksIE5VTEwsIF9TUElfY3VycmVudC0+cXVlcnlFbnYpOworCWNwbGFuID0gR2V0Q2FjaGVk UGxhbihwbGFuc291cmNlLCBwYXJhbUxJLCBOVUxMLCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52LAor CQkJCQkJICAmcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpOworCUFzc2VydChsaXN0X2xlbmd0aChj cGxhbi0+c3RtdF9saXN0KSA9PQorCQkgICBsaXN0X2xlbmd0aChwYXJ0X3BydW5lX3Jlc3VsdHNf bGlzdCkpOwogCXN0bXRfbGlzdCA9IGNwbGFuLT5zdG10X2xpc3Q7CiAKIAlpZiAoIXBsYW4tPnNh dmVkKQpAQCAtMTY4NSw2ICsxNjg5LDkgQEAgU1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0 IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAkJCQkJICBzdG10X2xpc3QsCiAJCQkJCSAg Y3BsYW4pOwogCisJLyogQ29weSBMaXN0cyBvZiBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgaW50byB0 aGUgcG9ydGFsJ3MgY29udGV4dC4gKi8KKwlQb3J0YWxTdG9yZVBhcnRpdGlvblBydW5lUmVzdWx0 cyhwb3J0YWwsIHBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KTsKKwogCS8qCiAJICogU2V0IHVwIG9w dGlvbnMgZm9yIHBvcnRhbC4gIERlZmF1bHQgU0NST0xMIHR5cGUgaXMgY2hvc2VuIHRoZSBzYW1l IHdheQogCSAqIGFzIFBlcmZvcm1DdXJzb3JPcGVuIGRvZXMgaXQuCkBAIC0yMDkyLDcgKzIwOTks OCBAQCBTUElfcGxhbl9nZXRfY2FjaGVkX3BsYW4oU1BJUGxhblB0ciBwbGFuKQogCS8qIEdldCB0 aGUgZ2VuZXJpYyBwbGFuIGZvciB0aGUgcXVlcnkgKi8KIAljcGxhbiA9IEdldENhY2hlZFBsYW4o cGxhbnNvdXJjZSwgTlVMTCwKIAkJCQkJCSAgcGxhbi0+c2F2ZWQgPyBDdXJyZW50UmVzb3VyY2VP d25lciA6IE5VTEwsCi0JCQkJCQkgIF9TUElfY3VycmVudC0+cXVlcnlFbnYpOworCQkJCQkJICBf U1BJX2N1cnJlbnQtPnF1ZXJ5RW52LAorCQkJCQkJICBOVUxMIC8qIE5vdCBpbnRlcmVzdGVkIGlu IFBhcnRpdGlvblBydW5lUmVzdWx0cyAqLyk7CiAJQXNzZXJ0KGNwbGFuID09IHBsYW5zb3VyY2Ut PmdwbGFuKTsKIAogCS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLwpAQCAtMjQ3Myw3 ICsyNDgxLDkgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElF eGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAl7CiAJCUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3Vy Y2UgPSAoQ2FjaGVkUGxhblNvdXJjZSAqKSBsZmlyc3QobGMxKTsKIAkJTGlzdAkgICAqc3RtdF9s aXN0OwotCQlMaXN0Q2VsbCAgICpsYzI7CisJCUxpc3QJICAgKnBhcnRfcHJ1bmVfcmVzdWx0c19s aXN0OworCQlMaXN0Q2VsbCAgICpsYzIsCisJCQkJICAgKmxjMzsKIAogCQlzcGljYWxsYmFja2Fy Zy5xdWVyeSA9IHBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmluZzsKIApAQCAtMjU0OSw4ICsyNTU5LDEw IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9w dGlvbnMgKm9wdGlvbnMsCiAJCSAqIHBsYW4sIHRoZSByZWZjb3VudCBtdXN0IGJlIGJhY2tlZCBi eSB0aGUgcGxhbl9vd25lci4KIAkJICovCiAJCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwbGFuc291 cmNlLCBvcHRpb25zLT5wYXJhbXMsCi0JCQkJCQkJICBwbGFuX293bmVyLCBfU1BJX2N1cnJlbnQt PnF1ZXJ5RW52KTsKLQorCQkJCQkJCSAgcGxhbl9vd25lciwgX1NQSV9jdXJyZW50LT5xdWVyeUVu diwKKwkJCQkJCQkgJnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KTsKKwkJQXNzZXJ0KGxpc3RfbGVu Z3RoKGNwbGFuLT5zdG10X2xpc3QpID09CisJCQkgICBsaXN0X2xlbmd0aChwYXJ0X3BydW5lX3Jl c3VsdHNfbGlzdCkpOwogCQlzdG10X2xpc3QgPSBjcGxhbi0+c3RtdF9saXN0OwogCiAJCS8qCkBA IC0yNTg5LDkgKzI2MDEsMTAgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBj b25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCX0KIAkJfQogCi0JCWZvcmVhY2go bGMyLCBzdG10X2xpc3QpCisJCWZvcmJvdGgobGMyLCBzdG10X2xpc3QsIGxjMywgcGFydF9wcnVu ZV9yZXN1bHRzX2xpc3QpCiAJCXsKIAkJCVBsYW5uZWRTdG10ICpzdG10ID0gbGZpcnN0X25vZGUo UGxhbm5lZFN0bXQsIGxjMik7CisJCQlMaXN0CSAgICpwYXJ0X3BydW5lX3Jlc3VsdHMgPSBsZmly c3Rfbm9kZShMaXN0LCBsYzMpOwogCQkJYm9vbAkJY2FuU2V0VGFnID0gc3RtdC0+Y2FuU2V0VGFn OwogCQkJRGVzdFJlY2VpdmVyICpkZXN0OwogCkBAIC0yNjYzLDcgKzI2NzYsNyBAQCBfU1BJX2V4 ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRp b25zLAogCQkJCWVsc2UKIAkJCQkJc25hcCA9IEludmFsaWRTbmFwc2hvdDsKIAotCQkJCXFkZXNj ID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsCisJCQkJcWRlc2MgPSBDcmVhdGVRdWVyeURlc2Moc3Rt dCwgcGFydF9wcnVuZV9yZXN1bHRzLAogCQkJCQkJCQkJCXBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmlu ZywKIAkJCQkJCQkJCQlzbmFwLCBjcm9zc2NoZWNrX3NuYXBzaG90LAogCQkJCQkJCQkJCWRlc3Qs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyBiL3NyYy9iYWNrZW5k L25vZGVzL3JlYWRmdW5jcy5jCmluZGV4IDIzNzc2MzY3YzUuLmIwMWY1NWZiNGYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVz L3JlYWRmdW5jcy5jCkBAIC0xNTgsNiArMTU4LDExIEBACiAJdG9rZW4gPSBwZ19zdHJ0b2soJmxl bmd0aCk7CQkvKiBza2lwIDpmbGRuYW1lICovIFwKIAlsb2NhbF9ub2RlLT5mbGRuYW1lID0gcmVh ZEludENvbHMobGVuKQogCisvKiBSZWFkIGFuIEluZGV4IGFycmF5ICovCisjZGVmaW5lIFJFQURf SU5ERVhfQVJSQVkoZmxkbmFtZSwgbGVuKSBcCisJdG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0aCk7 CQkvKiBza2lwIDpmbGRuYW1lICovIFwKKwlsb2NhbF9ub2RlLT5mbGRuYW1lID0gcmVhZEluZGV4 Q29scyhsZW4pCisKIC8qIFJlYWQgYSBib29sIGFycmF5ICovCiAjZGVmaW5lIFJFQURfQk9PTF9B UlJBWShmbGRuYW1lLCBsZW4pIFwKIAl0b2tlbiA9IHBnX3N0cnRvaygmbGVuZ3RoKTsJCS8qIHNr aXAgOmZsZG5hbWUgKi8gXApAQCAtODAwLDcgKzgwNSw2IEBAIGZubmFtZShpbnQgbnVtQ29scykg XAogICovCiBSRUFEX1NDQUxBUl9BUlJBWShyZWFkQXR0ck51bWJlckNvbHMsIGludDE2LCBhdG9p KQogUkVBRF9TQ0FMQVJfQVJSQVkocmVhZE9pZENvbHMsIE9pZCwgYXRvb2lkKQotLyogb3V0ZnVu Y3MuYyBoYXMgd3JpdGVJbmRleENvbHMsIGJ1dCB3ZSBkb24ndCB5ZXQgbmVlZCB0aGF0IGhlcmUg Ki8KLS8qIFJFQURfU0NBTEFSX0FSUkFZKHJlYWRJbmRleENvbHMsIEluZGV4LCBhdG91aSkgKi8K K1JFQURfU0NBTEFSX0FSUkFZKHJlYWRJbmRleENvbHMsIEluZGV4LCBhdG91aSkKIFJFQURfU0NB TEFSX0FSUkFZKHJlYWRJbnRDb2xzLCBpbnQsIGF0b2kpCiBSRUFEX1NDQUxBUl9BUlJBWShyZWFk Qm9vbENvbHMsIGJvb2wsIHN0cnRvYm9vbCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIu YwppbmRleCA3OTk2MDJmNWVhLi5hOTZkMzE2ZGNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v cGxhbm5lci5jCkBAIC01MjAsNyArNTIwLDkgQEAgc3RhbmRhcmRfcGxhbm5lcihRdWVyeSAqcGFy c2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywgaW50IGN1cnNvck9wdGlvbnMsCiAJcmVzdWx0 LT5wYXJhbGxlbE1vZGVOZWVkZWQgPSBnbG9iLT5wYXJhbGxlbE1vZGVOZWVkZWQ7CiAJcmVzdWx0 LT5wbGFuVHJlZSA9IHRvcF9wbGFuOwogCXJlc3VsdC0+cGFydFBydW5lSW5mb3MgPSBnbG9iLT5w YXJ0UHJ1bmVJbmZvczsKKwlyZXN1bHQtPmNvbnRhaW5zSW5pdGlhbFBydW5pbmcgPSBnbG9iLT5j b250YWluc0luaXRpYWxQcnVuaW5nOwogCXJlc3VsdC0+cnRhYmxlID0gZ2xvYi0+ZmluYWxydGFi bGU7CisJcmVzdWx0LT5taW5Mb2NrUmVsaWRzID0gZ2xvYi0+bWluTG9ja1JlbGlkczsKIAlyZXN1 bHQtPnJlc3VsdFJlbGF0aW9ucyA9IGdsb2ItPnJlc3VsdFJlbGF0aW9uczsKIAlyZXN1bHQtPmFw cGVuZFJlbGF0aW9ucyA9IGdsb2ItPmFwcGVuZFJlbGF0aW9uczsKIAlyZXN1bHQtPnN1YnBsYW5z ID0gZ2xvYi0+c3VicGxhbnM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXgg Mzk5YzE4MTJkNC4uNDRmZmU3MWM0OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vc2V0cmVmcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMu YwpAQCAtMjcwLDYgKzI3MCwxNiBAQCBzZXRfcGxhbl9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpy b290LCBQbGFuICpwbGFuKQogCSAqLwogCWFkZF9ydGVzX3RvX2ZsYXRfcnRhYmxlKHJvb3QsIGZh bHNlKTsKIAorCS8qCisJICogQWRkIHRoZSBxdWVyeSdzIGFkanVzdGVkIHJhbmdlIG9mIFJUIGlu ZGV4ZXMgdG8gZ2xvYi0+bWluTG9ja1JlbGlkcy4KKwkgKiBUaGUgYWRqdXN0ZWQgUlQgaW5kZXhl cyBvZiBwcnVuYWJsZSByZWxhdGlvbnMgd2lsbCBiZSBkZWxldGVkIGZyb20gdGhlCisJICogc2V0 IGJlbG93IHdoZXJlIFBhcnRpdGlvblBydW5lSW5mb3MgYXJlIHByb2Nlc3NlZC4KKwkgKi8KKwln bG9iLT5taW5Mb2NrUmVsaWRzID0KKwkJYm1zX2FkZF9yYW5nZShnbG9iLT5taW5Mb2NrUmVsaWRz LAorCQkJCQkgIHJ0b2Zmc2V0ICsgMSwKKwkJCQkJICBydG9mZnNldCArIGxpc3RfbGVuZ3RoKHJv b3QtPnBhcnNlLT5ydGFibGUpKTsKKwogCS8qCiAJICogQWRqdXN0IFJUIGluZGV4ZXMgb2YgUGxh blJvd01hcmtzIGFuZCBhZGQgdG8gZmluYWwgcm93bWFya3MgbGlzdAogCSAqLwpAQCAtMzUzLDYg KzM2Myw3IEBAIHNldF9wbGFuX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsIFBsYW4gKnBs YW4pCiAJewogCQlQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyA9IGxmaXJzdChsYyk7CiAJ CUxpc3RDZWxsICAgKmw7CisJCUJpdG1hcHNldCAgKmxlYWZwYXJ0X3J0aXMgPSBOVUxMOwogCiAJ CXBydW5laW5mby0+cm9vdF9wYXJlbnRfcmVsaWRzID0KIAkJCW9mZnNldF9yZWxpZF9zZXQocHJ1 bmVpbmZvLT5yb290X3BhcmVudF9yZWxpZHMsIHJ0b2Zmc2V0KTsKQEAgLTM2NCwxNSArMzc1LDUw IEBAIHNldF9wbGFuX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsIFBsYW4gKnBsYW4pCiAJ CQlmb3JlYWNoKGwyLCBwcnVuZV9pbmZvcykKIAkJCXsKIAkJCQlQYXJ0aXRpb25lZFJlbFBydW5l SW5mbyAqcGluZm8gPSBsZmlyc3QobDIpOworCQkJCWludAkJaTsKIAogCQkJCS8qIFJUIGluZGV4 IG9mIHRoZSB0YWJsZSB0byB3aGljaCB0aGUgcGluZm8gYmVsb25ncy4gKi8KIAkJCQlwaW5mby0+ cnRpbmRleCArPSBydG9mZnNldDsKKworCQkJCS8qIEFsc28gb2YgdGhlIGxlYWYgcGFydGl0aW9u cyB0aGF0IG1pZ2h0IGJlIHNjYW5uZWQuICovCisJCQkJZm9yIChpID0gMDsgaSA8IHBpbmZvLT5u cGFydHM7IGkrKykKKwkJCQl7CisJCQkJCWlmIChwaW5mby0+cnRpX21hcFtpXSA+IDAgJiYgcGlu Zm8tPnN1YnBsYW5fbWFwW2ldID49IDApCisJCQkJCXsKKwkJCQkJCXBpbmZvLT5ydGlfbWFwW2ld ICs9IHJ0b2Zmc2V0OworCQkJCQkJbGVhZnBhcnRfcnRpcyA9IGJtc19hZGRfbWVtYmVyKGxlYWZw YXJ0X3J0aXMsCisJCQkJCQkJCQkJCQkJICAgcGluZm8tPnJ0aV9tYXBbaV0pOworCQkJCQl9CisJ CQkJfQogCQkJfQogCQl9CiAKKwkJaWYgKHBydW5laW5mby0+bmVlZHNfaW5pdF9wcnVuaW5nKQor CQl7CisJCQlnbG9iLT5jb250YWluc0luaXRpYWxQcnVuaW5nID0gdHJ1ZTsKKworCQkJLyoKKwkJ CSAqIERlbGV0ZSB0aGUgbGVhZiBwYXJ0aXRpb24gUlRJcyBmcm9tIHRoZSBnbG9iYWwgc2V0IG9m IHJlbGF0aW9ucworCQkJICogdG8gYmUgbG9ja2VkIGJlZm9yZSBleGVjdXRpbmcgdGhlIHBsYW4u ICBBY3F1aXJlRXhlY3V0b3JMb2NrcygpCisJCQkgKiB3aWxsIGZpbmQgdGhlIG9uZXMgdG8gYWRk IHRvIHRoZSBzZXQgYWZ0ZXIgcGVyZm9ybWluZyBpbml0aWFsCisJCQkgKiBwcnVuaW5nLgorCQkJ ICovCisJCQlnbG9iLT5taW5Mb2NrUmVsaWRzID0gYm1zX2RlbF9tZW1iZXJzKGdsb2ItPm1pbkxv Y2tSZWxpZHMsCisJCQkJCQkJCQkJCQkgIGxlYWZwYXJ0X3J0aXMpOworCQl9CisKIAkJZ2xvYi0+ cGFydFBydW5lSW5mb3MgPSBsYXBwZW5kKGdsb2ItPnBhcnRQcnVuZUluZm9zLCBwcnVuZWluZm8p OwogCX0KIAorCS8qCisJICogSXQgc2VlbXMgd29ydGggZG9pbmcgYSBibXNfY29weSgpIG9uIGds b2ItPm1pbkxvY2tSZWxpZHMgaWYgd2UgZGVsZXRlZAorCSAqIGJpdHMgZnJvbSBpdCBhYm92ZSB0 byBnZXQgcmlkIG9mIGFueSBlbXB0eSB0YWlsIGJpdHMuICBJdCBzZWVtcyBiZXR0ZXIKKwkgKiBm b3IgdGhlIGxvb3Agb3ZlciB0aGlzIHNldCBpbiBBY3F1aXJlRXhlY3V0b3JMb2NrcygpIHRvIG5v dCBoYXZlIHRvIGdvCisJICogdGhyb3VnaCB0aG9zZSB1c2VsZXNzIGJpdCB3b3Jkcy4KKwkgKi8K KwlpZiAoZ2xvYi0+Y29udGFpbnNJbml0aWFsUHJ1bmluZykKKwkJZ2xvYi0+bWluTG9ja1JlbGlk cyA9IGJtc19jb3B5KGdsb2ItPm1pbkxvY2tSZWxpZHMpOworCiAJcmV0dXJuIHJlc3VsdDsKIH0K IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jIGIvc3Jj L2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCmluZGV4IGQ0OGY2Nzg0YzEuLmQ1NTU2 MzU0ZjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwor KysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKQEAgLTE0NCw3ICsxNDQs OSBAQCBzdGF0aWMgTGlzdCAqbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lcklu Zm8gKnJvb3QsCiAJCQkJCQkJCQkJICAgTGlzdCAqcHJ1bmVxdWFsLAogCQkJCQkJCQkJCSAgIEJp dG1hcHNldCAqcGFydHJlbGlkcywKIAkJCQkJCQkJCQkgICBpbnQgKnJlbGlkX3N1YnBsYW5fbWFw LAotCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqKm1hdGNoZWRzdWJwbGFucyk7CisJCQkJCQkJCQkJ ICAgQml0bWFwc2V0ICoqbWF0Y2hlZHN1YnBsYW5zLAorCQkJCQkJCQkJCSAgIGJvb2wgKm5lZWRz X2luaXRfcHJ1bmluZywKKwkJCQkJCQkJCQkgICBib29sICpuZWVkc19leGVjX3BydW5pbmcpOwog c3RhdGljIHZvaWQgZ2VuX3BhcnRwcnVuZV9zdGVwcyhSZWxPcHRJbmZvICpyZWwsIExpc3QgKmNs YXVzZXMsCiAJCQkJCQkJCVBhcnRDbGF1c2VUYXJnZXQgdGFyZ2V0LAogCQkJCQkJCQlHZW5lcmF0 ZVBydW5pbmdTdGVwc0NvbnRleHQgKmNvbnRleHQpOwpAQCAtMjM0LDYgKzIzNiw4IEBAIG1ha2Vf cGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50 cmVsLAogCWludAkJICAgKnJlbGlkX3N1YnBsYW5fbWFwOwogCUxpc3RDZWxsICAgKmxjOwogCWlu dAkJCWk7CisJYm9vbAkJbmVlZHNfaW5pdF9wcnVuaW5nID0gZmFsc2U7CisJYm9vbAkJbmVlZHNf ZXhlY19wcnVuaW5nID0gZmFsc2U7CiAKIAkvKgogCSAqIFNjYW4gdGhlIHN1YnBhdGhzIHRvIHNl ZSB3aGljaCBvbmVzIGFyZSBzY2FucyBvZiBwYXJ0aXRpb24gY2hpbGQKQEAgLTMxMywxMiArMzE3 LDE2IEBAIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0 SW5mbyAqcGFyZW50cmVsLAogCQlCaXRtYXBzZXQgICpwYXJ0cmVsaWRzID0gKEJpdG1hcHNldCAq KSBsZmlyc3QobGMpOwogCQlMaXN0CSAgICpwaW5mb2xpc3Q7CiAJCUJpdG1hcHNldCAgKm1hdGNo ZWRzdWJwbGFucyA9IE5VTEw7CisJCWJvb2wJCXBhcnRyZWxfbmVlZHNfaW5pdF9wcnVuaW5nOwor CQlib29sCQlwYXJ0cmVsX25lZWRzX2V4ZWNfcHJ1bmluZzsKIAogCQlwaW5mb2xpc3QgPSBtYWtl X3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhyb290LCBwYXJlbnRyZWwsCiAJCQkJCQkJCQkJCQkg IHBydW5lcXVhbCwKIAkJCQkJCQkJCQkJCSAgcGFydHJlbGlkcywKIAkJCQkJCQkJCQkJCSAgcmVs aWRfc3VicGxhbl9tYXAsCi0JCQkJCQkJCQkJCQkgICZtYXRjaGVkc3VicGxhbnMpOworCQkJCQkJ CQkJCQkJICAmbWF0Y2hlZHN1YnBsYW5zLAorCQkJCQkJCQkJCQkJICAmcGFydHJlbF9uZWVkc19p bml0X3BydW5pbmcsCisJCQkJCQkJCQkJCQkgICZwYXJ0cmVsX25lZWRzX2V4ZWNfcHJ1bmluZyk7 CiAKIAkJLyogV2hlbiBwcnVuaW5nIGlzIHBvc3NpYmxlLCByZWNvcmQgdGhlIG1hdGNoZWQgc3Vi cGxhbnMgKi8KIAkJaWYgKHBpbmZvbGlzdCAhPSBOSUwpCkBAIC0zMjcsNiArMzM1LDkgQEAgbWFr ZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJl bnRyZWwsCiAJCQlhbGxtYXRjaGVkc3VicGxhbnMgPSBibXNfam9pbihtYXRjaGVkc3VicGxhbnMs CiAJCQkJCQkJCQkJICBhbGxtYXRjaGVkc3VicGxhbnMpOwogCQl9CisKKwkJbmVlZHNfaW5pdF9w cnVuaW5nIHw9IHBhcnRyZWxfbmVlZHNfaW5pdF9wcnVuaW5nOworCQluZWVkc19leGVjX3BydW5p bmcgfD0gcGFydHJlbF9uZWVkc19leGVjX3BydW5pbmc7CiAJfQogCiAJcGZyZWUocmVsaWRfc3Vi cGxhbl9tYXApOwpAQCAtMzQyLDYgKzM1Myw4IEBAIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQ bGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCXBydW5laW5mbyA9IG1h a2VOb2RlKFBhcnRpdGlvblBydW5lSW5mbyk7CiAJcHJ1bmVpbmZvLT5yb290X3BhcmVudF9yZWxp ZHMgPSBwYXJlbnRyZWwtPnJlbGlkczsKIAlwcnVuZWluZm8tPnBydW5lX2luZm9zID0gcHJ1bmVy ZWxpbmZvczsKKwlwcnVuZWluZm8tPm5lZWRzX2luaXRfcHJ1bmluZyA9IG5lZWRzX2luaXRfcHJ1 bmluZzsKKwlwcnVuZWluZm8tPm5lZWRzX2V4ZWNfcHJ1bmluZyA9IG5lZWRzX2V4ZWNfcHJ1bmlu ZzsKIAogCS8qCiAJICogU29tZSBzdWJwbGFucyBtYXkgbm90IGJlbG9uZyB0byBhbnkgb2YgdGhl IGlkZW50aWZpZWQgcGFydGl0aW9uZWQgcmVscy4KQEAgLTQ0MiwxMyArNDU1LDE4IEBAIGFkZF9w YXJ0X3JlbGlkcyhMaXN0ICphbGxwYXJ0cmVsaWRzLCBCaXRtYXBzZXQgKnBhcnRyZWxpZHMpCiAg KiBJZiB3ZSBjYW5ub3QgZmluZCBhbnkgdXNlZnVsIHJ1bi10aW1lIHBydW5pbmcgc3RlcHMsIHJl dHVybiBOSUwuCiAgKiBIb3dldmVyLCBvbiBzdWNjZXNzLCBlYWNoIHJlbCBpZGVudGlmaWVkIGlu IHBhcnRyZWxpZHMgd2lsbCBoYXZlCiAgKiBhbiBlbGVtZW50IGluIHRoZSByZXN1bHQgbGlzdCwg ZXZlbiBpZiBzb21lIG9mIHRoZW0gYXJlIHVzZWxlc3MuCisgKiAqbmVlZHNfaW5pdF9wcnVuaW5n IGFuZCAqbmVlZHNfZXhlY19wcnVuaW5nIGFyZSBzZXQgdG8gaW5kaWNhdGUgdGhhdCB0aGUKKyAq IHJldHVybmVkIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvcyBjb250YWlucyBwcnVuaW5nIHN0ZXBz IHRoYXQgY2FuIGJlCisgKiBwZXJmb3JtZWQgYmVmb3JlIGFuZCBhZnRlciBleGVjdXRpb24gYmVn aW5zLCByZXNwZWN0aXZlbHkuCiAgKi8KIHN0YXRpYyBMaXN0ICoKIG1ha2VfcGFydGl0aW9uZWRy ZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJ CQkJCQkJICBMaXN0ICpwcnVuZXF1YWwsCiAJCQkJCQkJICBCaXRtYXBzZXQgKnBhcnRyZWxpZHMs CiAJCQkJCQkJICBpbnQgKnJlbGlkX3N1YnBsYW5fbWFwLAotCQkJCQkJCSAgQml0bWFwc2V0ICoq bWF0Y2hlZHN1YnBsYW5zKQorCQkJCQkJCSAgQml0bWFwc2V0ICoqbWF0Y2hlZHN1YnBsYW5zLAor CQkJCQkJCSAgYm9vbCAqbmVlZHNfaW5pdF9wcnVuaW5nLAorCQkJCQkJCSAgYm9vbCAqbmVlZHNf ZXhlY19wcnVuaW5nKQogewogCVJlbE9wdEluZm8gKnRhcmdldHBhcnQgPSBOVUxMOwogCUxpc3QJ ICAgKnBpbmZvbGlzdCA9IE5JTDsKQEAgLTQ1OSw2ICs0NzcsMTAgQEAgbWFrZV9wYXJ0aXRpb25l ZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwK IAlpbnQJCQlydGk7CiAJaW50CQkJaTsKIAorCS8qIFdpbGwgZmluZCBvdXQgYmVsb3cuICovCisJ Km5lZWRzX2luaXRfcHJ1bmluZyA9IGZhbHNlOworCSpuZWVkc19leGVjX3BydW5pbmcgPSBmYWxz ZTsKKwogCS8qCiAJICogRXhhbWluZSBlYWNoIHBhcnRpdGlvbmVkIHJlbCwgY29uc3RydWN0aW5n IGEgdGVtcG9yYXJ5IGFycmF5IHRvIG1hcAogCSAqIGZyb20gcGxhbm5lciByZWxpZHMgdG8gaW5k ZXggb2YgdGhlIHBhcnRpdGlvbmVkIHJlbCwgYW5kIGJ1aWxkaW5nIGEKQEAgLTU0Niw2ICs1Njgs OSBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVs T3B0SW5mbyAqcGFyZW50cmVsLAogCQkgKiBleGVjdXRvciBwZXItc2NhbiBwcnVuaW5nIHN0ZXBz LiAgVGhpcyBmaXJzdCBwYXNzIGNyZWF0ZXMgc3RhcnR1cAogCQkgKiBwcnVuaW5nIHN0ZXBzIGFu ZCBkZXRlY3RzIHdoZXRoZXIgdGhlcmUncyBhbnkgcG9zc2libHktdXNlZnVsIHF1YWxzCiAJCSAq IHRoYXQgd291bGQgcmVxdWlyZSBwZXItc2NhbiBwcnVuaW5nLgorCQkgKgorCQkgKiBJbiB0aGUg Zmlyc3QgcGFzcywgd2Ugbm90ZSB3aGV0aGVyIHRoZSAybmQgcGFzcyBpcyBuZWNlc3NhcnkgYnkK KwkJICogbm90aW5nIHRoZSBwcmVzZW5jZSBvZiBFWEVDIHBhcmFtZXRlcnMuCiAJCSAqLwogCQln ZW5fcGFydHBydW5lX3N0ZXBzKHN1YnBhcnQsIHBhcnRwcnVuZXF1YWwsIFBBUlRUQVJHRVRfSU5J VElBTCwKIAkJCQkJCQkmY29udGV4dCk7CkBAIC02MjAsNiArNjQ1LDEyIEBAIG1ha2VfcGFydGl0 aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRy ZWwsCiAJCXBpbmZvLT5leGVjcGFyYW1pZHMgPSBleGVjcGFyYW1pZHM7CiAJCS8qIFJlbWFpbmlu ZyBmaWVsZHMgd2lsbCBiZSBmaWxsZWQgaW4gdGhlIG5leHQgbG9vcCAqLwogCisJCS8qIHJlY29y ZCB3aGljaCB0eXBlcyBvZiBwcnVuaW5nIHN0ZXBzIHdlJ3ZlIHNlZW4gc28gZmFyICovCisJCWlm IChpbml0aWFsX3BydW5pbmdfc3RlcHMgIT0gTklMKQorCQkJKm5lZWRzX2luaXRfcHJ1bmluZyA9 IHRydWU7CisJCWlmIChleGVjX3BydW5pbmdfc3RlcHMgIT0gTklMKQorCQkJKm5lZWRzX2V4ZWNf cHJ1bmluZyA9IHRydWU7CisKIAkJcGluZm9saXN0ID0gbGFwcGVuZChwaW5mb2xpc3QsIHBpbmZv KTsKIAl9CiAKQEAgLTY0Nyw2ICs2NzgsNyBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5m byhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlpbnQJCSAgICpz dWJwbGFuX21hcDsKIAkJaW50CQkgICAqc3VicGFydF9tYXA7CiAJCU9pZAkJICAgKnJlbGlkX21h cDsKKwkJSW5kZXgJICAgKnJ0aV9tYXA7CiAKIAkJLyoKIAkJICogQ29uc3RydWN0IHRoZSBzdWJw bGFuIGFuZCBzdWJwYXJ0IG1hcHMgZm9yIHRoaXMgcGFydGl0aW9uaW5nIGxldmVsLgpAQCAtNjU5 LDYgKzY5MSw3IEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpy b290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCXN1YnBhcnRfbWFwID0gKGludCAqKSBwYWxs b2MobnBhcnRzICogc2l6ZW9mKGludCkpOwogCQltZW1zZXQoc3VicGFydF9tYXAsIC0xLCBucGFy dHMgKiBzaXplb2YoaW50KSk7CiAJCXJlbGlkX21hcCA9IChPaWQgKikgcGFsbG9jMChucGFydHMg KiBzaXplb2YoT2lkKSk7CisJCXJ0aV9tYXAgPSAoSW5kZXggKikgcGFsbG9jMChucGFydHMgKiBz aXplb2YoSW5kZXgpKTsKIAkJcHJlc2VudF9wYXJ0cyA9IE5VTEw7CiAKIAkJaSA9IC0xOwpAQCAt NjczLDYgKzcwNiw3IEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZv ICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCQlzdWJwbGFuX21hcFtpXSA9IHN1YnBs YW5pZHggPSByZWxpZF9zdWJwbGFuX21hcFtwYXJ0cmVsLT5yZWxpZF0gLSAxOwogCQkJc3VicGFy dF9tYXBbaV0gPSBzdWJwYXJ0aWR4ID0gcmVsaWRfc3VicGFydF9tYXBbcGFydHJlbC0+cmVsaWRd IC0gMTsKIAkJCXJlbGlkX21hcFtpXSA9IHBsYW5uZXJfcnRfZmV0Y2gocGFydHJlbC0+cmVsaWQs IHJvb3QpLT5yZWxpZDsKKwkJCXJ0aV9tYXBbaV0gPSBwYXJ0cmVsLT5yZWxpZDsKIAkJCWlmIChz dWJwbGFuaWR4ID49IDApCiAJCQl7CiAJCQkJcHJlc2VudF9wYXJ0cyA9IGJtc19hZGRfbWVtYmVy KHByZXNlbnRfcGFydHMsIGkpOwpAQCAtNjk3LDYgKzczMSw3IEBAIG1ha2VfcGFydGl0aW9uZWRy ZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJ CXBpbmZvLT5zdWJwbGFuX21hcCA9IHN1YnBsYW5fbWFwOwogCQlwaW5mby0+c3VicGFydF9tYXAg PSBzdWJwYXJ0X21hcDsKIAkJcGluZm8tPnJlbGlkX21hcCA9IHJlbGlkX21hcDsKKwkJcGluZm8t PnJ0aV9tYXAgPSBydGlfbWFwOwogCX0KIAogCXBmcmVlKHJlbGlkX3N1YnBhcnRfbWFwKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3Av cG9zdGdyZXMuYwppbmRleCAzMDgyMDkzZDFlLi45NWFiMWQwZWVmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5j CkBAIC0xNTk4LDYgKzE1OTgsNyBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0 X21lc3NhZ2UpCiAJaW50MTYJICAgKnJmb3JtYXRzID0gTlVMTDsKIAlDYWNoZWRQbGFuU291cmNl ICpwc3JjOwogCUNhY2hlZFBsYW4gKmNwbGFuOworCUxpc3QJICAgKnBhcnRfcHJ1bmVfcmVzdWx0 c19saXN0OwogCVBvcnRhbAkJcG9ydGFsOwogCWNoYXIJICAgKnF1ZXJ5X3N0cmluZzsKIAljaGFy CSAgICpzYXZlZF9zdG10X25hbWU7CkBAIC0xOTcyLDcgKzE5NzMsOSBAQCBleGVjX2JpbmRfbWVz c2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJICogd2lsbCBiZSBnZW5lcmF0ZWQgaW4g TWVzc2FnZUNvbnRleHQuICBUaGUgcGxhbiByZWZjb3VudCB3aWxsIGJlCiAJICogYXNzaWduZWQg dG8gdGhlIFBvcnRhbCwgc28gaXQgd2lsbCBiZSByZWxlYXNlZCBhdCBwb3J0YWwgZGVzdHJ1Y3Rp b24uCiAJICovCi0JY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBzcmMsIHBhcmFtcywgTlVMTCwgTlVM TCk7CisJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBzcmMsIHBhcmFtcywgTlVMTCwgTlVMTCwgJnBh cnRfcHJ1bmVfcmVzdWx0c19saXN0KTsKKwlBc3NlcnQobGlzdF9sZW5ndGgoY3BsYW4tPnN0bXRf bGlzdCkgPT0KKwkJICAgbGlzdF9sZW5ndGgocGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpKTsKIAog CS8qCiAJICogTm93IHdlIGNhbiBkZWZpbmUgdGhlIHBvcnRhbC4KQEAgLTE5ODcsNiArMTk5MCw5 IEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0cmluZ0luZm8gaW5wdXRfbWVzc2FnZSkKIAkJCQkJICBj cGxhbi0+c3RtdF9saXN0LAogCQkJCQkgIGNwbGFuKTsKIAorCS8qIENvcHkgTGlzdHMgb2YgUGFy dGl0aW9uUHJ1bmVSZXN1bHRzIGludG8gdGhlIHBvcnRhbCdzIGNvbnRleHQuICovCisJUG9ydGFs U3RvcmVQYXJ0aXRpb25QcnVuZVJlc3VsdHMocG9ydGFsLCBwYXJ0X3BydW5lX3Jlc3VsdHNfbGlz dCk7CisKIAkvKiBEb25lIHdpdGggdGhlIHNuYXBzaG90IHVzZWQgZm9yIHBhcmFtZXRlciBJL08g YW5kIHBhcnNpbmcvcGxhbm5pbmcgKi8KIAlpZiAoc25hcHNob3Rfc2V0KQogCQlQb3BBY3RpdmVT bmFwc2hvdCgpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9i YWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5kZXggNTJlMmRiNjQ1Mi4uMjgwZWQ3ZDIzOSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bx dWVyeS5jCkBAIC0zNSw3ICszNSw3IEBACiBQb3J0YWwJCUFjdGl2ZVBvcnRhbCA9IE5VTEw7CiAK IAotc3RhdGljIHZvaWQgUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLAorc3RhdGljIHZv aWQgUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLCBMaXN0ICpwYXJ0X3BydW5lX3Jlc3Vs dHMsCiAJCQkJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCSBQYXJhbUxpc3RJbmZv IHBhcmFtcywKIAkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKQEAgLTY1LDYgKzY1 LDcgQEAgc3RhdGljIHZvaWQgRG9Qb3J0YWxSZXdpbmQoUG9ydGFsIHBvcnRhbCk7CiAgKi8KIFF1 ZXJ5RGVzYyAqCiBDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAorCQkJ CUxpc3QgKnBhcnRfcHJ1bmVfcmVzdWx0cywKIAkJCQljb25zdCBjaGFyICpzb3VyY2VUZXh0LAog CQkJCVNuYXBzaG90IHNuYXBzaG90LAogCQkJCVNuYXBzaG90IGNyb3NzY2hlY2tfc25hcHNob3Qs CkBAIC03Nyw2ICs3OCw4IEBAIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0 bXQsCiAKIAlxZC0+b3BlcmF0aW9uID0gcGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBlOwkvKiBvcGVy YXRpb24gKi8KIAlxZC0+cGxhbm5lZHN0bXQgPSBwbGFubmVkc3RtdDsJLyogcGxhbiAqLworCXFk LT5wYXJ0X3BydW5lX3Jlc3VsdHMgPSBwYXJ0X3BydW5lX3Jlc3VsdHM7IC8qIEV4ZWN1dG9yRG9J bml0aWFsUHJ1bmluZygpCisJCQkJCQkJCQkJCQkgICogb3V0cHV0IGZvciBwbGFuICovCiAJcWQt PnNvdXJjZVRleHQgPSBzb3VyY2VUZXh0OwkvKiBxdWVyeSB0ZXh0ICovCiAJcWQtPnNuYXBzaG90 ID0gUmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CS8qIHNuYXBzaG90ICovCiAJLyogUkkgY2hl Y2sgc25hcHNob3QgKi8KQEAgLTEyMiw2ICsxMjUsNyBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVz YyAqcWRlc2MpCiAgKgkJUE9SVEFMX09ORV9SRVRVUk5JTkcsIG9yIFBPUlRBTF9PTkVfTU9EX1dJ VEggcG9ydGFsCiAgKgogICoJcGxhbjogdGhlIHBsYW4gdHJlZSBmb3IgdGhlIHF1ZXJ5CisgKglw YXJ0X3BydW5lX3Jlc3VsdHM6IEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpIG91dHB1dCBmb3Ig dGhlIFBsYW5uZWRTdG10CiAgKglzb3VyY2VUZXh0OiB0aGUgc291cmNlIHRleHQgb2YgdGhlIHF1 ZXJ5CiAgKglwYXJhbXM6IGFueSBwYXJhbWV0ZXJzIG5lZWRlZAogICoJZGVzdDogd2hlcmUgdG8g c2VuZCByZXN1bHRzCkBAIC0xMzQsNiArMTM4LDcgQEAgRnJlZVF1ZXJ5RGVzYyhRdWVyeURlc2Mg KnFkZXNjKQogICovCiBzdGF0aWMgdm9pZAogUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFu LAorCQkJIExpc3QgKnBhcnRfcHJ1bmVfcmVzdWx0cywKIAkJCSBjb25zdCBjaGFyICpzb3VyY2VU ZXh0LAogCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1 ZXJ5RW52LApAQCAtMTQ1LDcgKzE1MCw3IEBAIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxh biwKIAkvKgogCSAqIENyZWF0ZSB0aGUgUXVlcnlEZXNjIG9iamVjdAogCSAqLwotCXF1ZXJ5RGVz YyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBzb3VyY2VUZXh0LAorCXF1ZXJ5RGVzYyA9IENyZWF0 ZVF1ZXJ5RGVzYyhwbGFuLCBwYXJ0X3BydW5lX3Jlc3VsdHMsIHNvdXJjZVRleHQsCiAJCQkJCQkJ CUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgcGFy YW1zLCBxdWVyeUVudiwgMCk7CiAKQEAgLTQ5MSw4ICs0OTYsMTMgQEAgUG9ydGFsU3RhcnQoUG9y dGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJLyoKIAkJCQkgKiBDcmVhdGUg UXVlcnlEZXNjIGluIHBvcnRhbCdzIGNvbnRleHQ7IGZvciB0aGUgbW9tZW50LCBzZXQKIAkJCQkg KiB0aGUgZGVzdGluYXRpb24gdG8gRGVzdE5vbmUuCisJCQkJICoKKwkJCQkgKiBUaGVyZSBpcyBu byBQYXJ0aXRpb25QcnVuZVJlc3VsdCB1bmxlc3MgdGhlIFBsYW5uZWRTdG10IGlzCisJCQkJICog ZnJvbSBhIENhY2hlZFBsYW4uCiAJCQkJICovCiAJCQkJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlE ZXNjKGxpbml0aWFsX25vZGUoUGxhbm5lZFN0bXQsIHBvcnRhbC0+c3RtdHMpLAorCQkJCQkJCQkJ CQlwb3J0YWwtPnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0ID09IE5JTCA/IE5JTCA6CisJCQkJCQkJ CQkJCWxpbml0aWFsKHBvcnRhbC0+cGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpLAogCQkJCQkJCQkJ CQlwb3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksCiAJ CQkJCQkJCQkJCUludmFsaWRTbmFwc2hvdCwKQEAgLTEyMjUsNiArMTIzNSw4IEBAIFBvcnRhbFJ1 bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAKIAkJaWYgKHBzdG10LT51dGlsaXR5U3RtdCA9PSBOVUxM KQogCQl7CisJCQlMaXN0ICpwYXJ0X3BydW5lX3Jlc3VsdHMgPSBOSUw7CisKIAkJCS8qCiAJCQkg KiBwcm9jZXNzIGEgcGxhbm5hYmxlIHF1ZXJ5LgogCQkJICovCkBAIC0xMjcxLDEwICsxMjgzLDE4 IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQllbHNlCiAJCQkJVXBkYXRlQWN0 aXZlU25hcHNob3RDb21tYW5kSWQoKTsKIAorCQkJLyoKKwkJCSAqIERldGVybWluZSBpZiB0aGVy ZSdzIGEgY29ycmVzcG9uZGluZyBMaXN0IG9mIFBhcnRpdGlvblBydW5lUmVzdWx0CisJCQkgKiBm b3IgdGhpcyBQbGFubmVkU3RtdC4KKwkJCSAqLworCQkJaWYgKHBvcnRhbC0+cGFydF9wcnVuZV9y ZXN1bHRzX2xpc3QgIT0gTklMKQorCQkJCXBhcnRfcHJ1bmVfcmVzdWx0cyA9IGxpc3RfbnRoKHBv cnRhbC0+cGFydF9wcnVuZV9yZXN1bHRzX2xpc3QsCisJCQkJCQkJCQkJCSAgZm9yZWFjaF9jdXJy ZW50X2luZGV4KHN0bXRsaXN0X2l0ZW0pKTsKKwogCQkJaWYgKHBzdG10LT5jYW5TZXRUYWcpCiAJ CQl7CiAJCQkJLyogc3RhdGVtZW50IGNhbiBzZXQgdGFnIHN0cmluZyAqLwotCQkJCVByb2Nlc3NR dWVyeShwc3RtdCwKKwkJCQlQcm9jZXNzUXVlcnkocHN0bXQsIHBhcnRfcHJ1bmVfcmVzdWx0cywK IAkJCQkJCQkgcG9ydGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFt cywKIAkJCQkJCQkgcG9ydGFsLT5xdWVyeUVudiwKQEAgLTEyODMsNyArMTMwMyw3IEBAIFBvcnRh bFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQllbHNlCiAJCQl7CiAJCQkJLyogc3RtdCBhZGRl ZCBieSByZXdyaXRlIGNhbm5vdCBzZXQgdGFnICovCi0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAor CQkJCVByb2Nlc3NRdWVyeShwc3RtdCwgcGFydF9wcnVuZV9yZXN1bHRzLAogCQkJCQkJCSBwb3J0 YWwtPnNvdXJjZVRleHQsCiAJCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAogCQkJCQkJCSBw b3J0YWwtPnF1ZXJ5RW52LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxh bmNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwppbmRleCBjYzk0 MzIwNWQzLi5hZjZmYWU2ZTNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9w bGFuY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwpAQCAt OTksMTQgKzk5LDE5IEBAIHN0YXRpYyBkbGlzdF9oZWFkIGNhY2hlZF9leHByZXNzaW9uX2xpc3Qg PSBETElTVF9TVEFUSUNfSU5JVChjYWNoZWRfZXhwcmVzc2lvbl9sCiBzdGF0aWMgdm9pZCBSZWxl YXNlR2VuZXJpY1BsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CiBzdGF0aWMgTGlz dCAqUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJ CQkJCQkJCSAgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKLXN0YXRpYyBib29sIENoZWNr Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKTsKK3N0YXRpYyBib29sIENo ZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZv IGJvdW5kUGFyYW1zLAorCQkJCQkJCUxpc3QgKipwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCk7CiBz dGF0aWMgQ2FjaGVkUGxhbiAqQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UsIExpc3QgKnFsaXN0LAotCQkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1z LCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CisJCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8g Ym91bmRQYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAorCQkJCQkJCQkgICBMaXN0 ICoqcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpOwogc3RhdGljIGJvb2wgY2hvb3NlX2N1c3RvbV9w bGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJICAgUGFyYW1MaXN0SW5m byBib3VuZFBhcmFtcyk7CiBzdGF0aWMgZG91YmxlIGNhY2hlZF9wbGFuX2Nvc3QoQ2FjaGVkUGxh biAqcGxhbiwgYm9vbCBpbmNsdWRlX3BsYW5uZXIpOwogc3RhdGljIFF1ZXJ5ICpRdWVyeUxpc3RH ZXRQcmltYXJ5U3RtdChMaXN0ICpzdG10cyk7Ci1zdGF0aWMgdm9pZCBBY3F1aXJlRXhlY3V0b3JM b2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSk7CitzdGF0aWMgdm9pZCBBY3F1aXJl RXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMs CisJCQkJCQkJCSBMaXN0ICoqcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QsCisJCQkJCQkJCSBMaXN0 ICoqbG9ja2VkUmVsaWRzX3Blcl9zdG10KTsKK3N0YXRpYyB2b2lkIFJlbGVhc2VFeGVjdXRvckxv Y2tzKExpc3QgKnN0bXRfbGlzdCwgTGlzdCAqbG9ja2VkUmVsaWRzX3Blcl9zdG10KTsKIHN0YXRp YyB2b2lkIEFjcXVpcmVQbGFubmVyTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUp Owogc3RhdGljIHZvaWQgU2NhblF1ZXJ5Rm9yTG9ja3MoUXVlcnkgKnBhcnNldHJlZSwgYm9vbCBh Y3F1aXJlKTsKIHN0YXRpYyBib29sIFNjYW5RdWVyeVdhbGtlcihOb2RlICpub2RlLCBib29sICph Y3F1aXJlKTsKQEAgLTc4Miw2ICs3ODcsMjYgQEAgUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KENhY2hl ZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJcmV0dXJuIHRsaXN0OwogfQogCisvKiAKKyAqIEZy ZWVQYXJ0aXRpb25QcnVuZVJlc3VsdHMKKyAqCQlGcmVlcyB0aGUgTGlzdCBvZiBMaXN0cyBvZiBQ YXJ0aXRpb25QcnVuZVJlc3VsdHMgZm9yIENoZWNrQ2FjaGVkUGxhbigpCisgKi8KK3N0YXRpYyB2 b2lkCitGcmVlUGFydGl0aW9uUHJ1bmVSZXN1bHRzKExpc3QgKnBhcnRfcHJ1bmVfcmVzdWx0c19s aXN0KQoreworCUxpc3RDZWxsICpsYzsKKworCWZvcmVhY2gobGMsIHBhcnRfcHJ1bmVfcmVzdWx0 c19saXN0KQorCXsKKwkJTGlzdCAqcGFydF9wcnVuZV9yZXN1bHRzID0gbGZpcnN0KGxjKTsKKwor CQkvKiBGcmVlIGJvdGggdGhlIFBhcnRpdGlvblBydW5lUmVzdWx0cyBhbmQgdGhlIGNvbnRhaW5p bmcgTGlzdC4gKi8KKwkJbGlzdF9mcmVlX2RlZXAocGFydF9wcnVuZV9yZXN1bHRzKTsKKwl9CisK KwlsaXN0X2ZyZWUocGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpOworfQorCiAvKgogICogQ2hlY2tD YWNoZWRQbGFuOiBzZWUgaWYgdGhlIENhY2hlZFBsYW5Tb3VyY2UncyBnZW5lcmljIHBsYW4gaXMg dmFsaWQuCiAgKgpAQCAtNzkwLDE1ICs4MTUsMjAgQEAgUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KENh Y2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAgKgogICogT24gYSAidHJ1ZSIgcmV0dXJuLCB3 ZSBoYXZlIGFjcXVpcmVkIHRoZSBsb2NrcyBuZWVkZWQgdG8gcnVuIHRoZSBwbGFuLgogICogKFdl IG11c3QgZG8gdGhpcyBmb3IgdGhlICJ0cnVlIiByZXN1bHQgdG8gYmUgcmFjZS1jb25kaXRpb24t ZnJlZS4pCisgKgorICogU2VlIEdldENhY2hlZFBsYW4oKSdzIGNvbW1lbnQgZm9yIGEgZGVzY3Jp cHRpb24gb2YgcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QuCiAgKi8KIHN0YXRpYyBib29sCi1DaGVj a0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKK0NoZWNrQ2FjaGVkUGxh bihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1z LAorCQkJCUxpc3QgKipwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCkKIHsKIAlDYWNoZWRQbGFuICpw bGFuID0gcGxhbnNvdXJjZS0+Z3BsYW47CiAKIAkvKiBBc3NlcnQgdGhhdCBjYWxsZXIgY2hlY2tl ZCB0aGUgcXVlcnl0cmVlICovCiAJQXNzZXJ0KHBsYW5zb3VyY2UtPmlzX3ZhbGlkKTsKIAorCSpw YXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCA9IE5JTDsKKwogCS8qIElmIHRoZXJlJ3Mgbm8gZ2VuZXJp YyBwbGFuLCBqdXN0IHNheSAiZmFsc2UiICovCiAJaWYgKCFwbGFuKQogCQlyZXR1cm4gZmFsc2U7 CkBAIC04MjAsMTMgKzg1MCwyMSBAQCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAq cGxhbnNvdXJjZSkKIAkgKi8KIAlpZiAocGxhbi0+aXNfdmFsaWQpCiAJeworCQlMaXN0ICAgKmxv Y2tlZFJlbGlkc19wZXJfc3RtdDsKKwogCQkvKgogCQkgKiBQbGFuIG11c3QgaGF2ZSBwb3NpdGl2 ZSByZWZjb3VudCBiZWNhdXNlIGl0IGlzIHJlZmVyZW5jZWQgYnkKIAkJICogcGxhbnNvdXJjZTsg c28gbm8gbmVlZCB0byBmZWFyIGl0IGRpc2FwcGVhcnMgdW5kZXIgdXMgaGVyZS4KIAkJICovCiAJ CUFzc2VydChwbGFuLT5yZWZjb3VudCA+IDApOwogCi0JCUFjcXVpcmVFeGVjdXRvckxvY2tzKHBs YW4tPnN0bXRfbGlzdCwgdHJ1ZSk7CisJCS8qCisJCSAqIExvY2sgcmVsYXRpb25zIHNjYW5uZWQg YnkgdGhlIHBsYW4uICBUaGlzIGlzIHdoZXJlIHRoZSBwcnVuaW5nCisJCSAqIGhhcHBlbnMgaWYg bmVlZGVkLgorCQkgKi8KKwkJQWNxdWlyZUV4ZWN1dG9yTG9ja3MocGxhbi0+c3RtdF9saXN0LCBi b3VuZFBhcmFtcywKKwkJCQkJCQkgcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QsCisJCQkJCQkJICZs b2NrZWRSZWxpZHNfcGVyX3N0bXQpOwogCiAJCS8qCiAJCSAqIElmIHBsYW4gd2FzIHRyYW5zaWVu dCwgY2hlY2sgdG8gc2VlIGlmIFRyYW5zYWN0aW9uWG1pbiBoYXMKQEAgLTg0OCw3ICs4ODYsMTEg QEAgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCiAJCX0KIAog CQkvKiBPb3BzLCB0aGUgcmFjZSBjYXNlIGhhcHBlbmVkLiAgUmVsZWFzZSB1c2VsZXNzIGxvY2tz LiAqLwotCQlBY3F1aXJlRXhlY3V0b3JMb2NrcyhwbGFuLT5zdG10X2xpc3QsIGZhbHNlKTsKKwkJ UmVsZWFzZUV4ZWN1dG9yTG9ja3MocGxhbi0+c3RtdF9saXN0LCBsb2NrZWRSZWxpZHNfcGVyX3N0 bXQpOworCisJCS8qIFJlbGVhc2UgYW55IFBhcnRpdGlvblBydW5lUmVzdWx0cyB0aGF0IG1heSBi ZWVuIGNyZWF0ZWQuICovCisJCUZyZWVQYXJ0aXRpb25QcnVuZVJlc3VsdHMoKnBhcnRfcHJ1bmVf cmVzdWx0c19saXN0KTsKKwkJKnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0ID0gTklMOwogCX0KIAog CS8qCkBAIC04NzQsMTAgKzkxNiwxNCBAQCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJj ZSAqcGxhbnNvdXJjZSkKICAqIFBsYW5uaW5nIHdvcmsgaXMgZG9uZSBpbiB0aGUgY2FsbGVyJ3Mg bWVtb3J5IGNvbnRleHQuICBUaGUgZmluaXNoZWQgcGxhbgogICogaXMgaW4gYSBjaGlsZCBtZW1v cnkgY29udGV4dCwgd2hpY2ggdHlwaWNhbGx5IHNob3VsZCBnZXQgcmVwYXJlbnRlZAogICogKHVu bGVzcyB0aGlzIGlzIGEgb25lLXNob3QgcGxhbiwgaW4gd2hpY2ggY2FzZSB3ZSBkb24ndCBjb3B5 IHRoZSBwbGFuKS4KKyAqCisgKiBBIGxpc3Qgb2YgTklMcyBpcyByZXR1cm5lZCBpbiAqcGFydF9w cnVuZV9yZXN1bHRzX2xpc3QsIG1lYW5pbmcgdGhhdCBubworICogbm8gcGFydGl0aW9uIHBydW5p bmcgaGFzIGJlZW4gZG9uZSB5ZXQgZm9yIHRoZSBwbGFucyBpbiBzdG10X2xpc3QuCiAgKi8KIHN0 YXRpYyBDYWNoZWRQbGFuICoKIEJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFu c291cmNlLCBMaXN0ICpxbGlzdCwKLQkJCQlQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVy eUVudmlyb25tZW50ICpxdWVyeUVudikKKwkJCQlQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBR dWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKKwkJCQlMaXN0ICoqcGFydF9wcnVuZV9yZXN1bHRz X2xpc3QpCiB7CiAJQ2FjaGVkUGxhbiAqcGxhbjsKIAlMaXN0CSAgICpwbGlzdDsKQEAgLTEwMDcs NiArMTA1MywxNyBAQCBCdWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJj ZSwgTGlzdCAqcWxpc3QsCiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIAorCS8q CisJICogTm8gYWN0dWFsIFBhcnRpdGlvblBydW5lUmVzdWx0cyB5ZXQgdG8gYWRkLCB0aG91Z2gg bXVzdCBpbml0aWFsaXplCisJICogdGhlIGxpc3QgdG8gaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2Yg ZWxlbWVudHMgYXMgdGhlIGxpc3Qgb2YKKwkgKiBQbGFubmVkU3RtdHMuCisJICovCisJKnBhcnRf cHJ1bmVfcmVzdWx0c19saXN0ID0gTklMOworCWZvcmVhY2gobGMsIHBsaXN0KQorCXsKKwkJKnBh cnRfcHJ1bmVfcmVzdWx0c19saXN0ID0gbGFwcGVuZCgqcGFydF9wcnVuZV9yZXN1bHRzX2xpc3Qs IE5JTCk7CisJfQorCiAJcmV0dXJuIHBsYW47CiB9CiAKQEAgLTExMjYsNiArMTE4MywxOSBAQCBj YWNoZWRfcGxhbl9jb3N0KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVkZV9wbGFubmVyKQog ICogcGxhbiBvciBhIGN1c3RvbSBwbGFuIGZvciB0aGUgZ2l2ZW4gcGFyYW1ldGVyczogdGhlIGNh bGxlciBkb2VzIG5vdCBrbm93CiAgKiB3aGljaCBpdCB3aWxsIGdldC4KICAqCisgKiBGb3IgZXZl cnkgUGxhbm5lZFN0bXQgZm91bmQgaW4gdGhlIHJldHVybmVkIENhY2hlZFBsYW4sIGFuIGVsZW1l bnQgdGhhdAorICogaXMgZWl0aGVyIGEgTGlzdCBvZiBQYXJ0aXRpb25QcnVuZVJlc3VsdCBvciBh IE5JTCBpcyBhZGRlZCB0bworICogKnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0LiAgVGhlIGZvcm1l ciBpZiB0aGUgUGxhbm5lZFN0bXQgaXMgZnJvbQorICogdGhlIGV4aXN0aW5nIENhY2hlZFBsYW4g dGhhdCBpcyBvdGhlcndpc2UgdmFsaWQgYW5kIGhhcworICogY29udGFpbnNJbml0aWFsUHJ1bmlu ZyBzZXQgdG8gdHJ1ZS4gIEJlZm9yZSByZXR1cm5pbmcgc3VjaCBhIENhY2hlZFBsYW4sCisgKiB0 aG9zZSAiaW5pdGlhbCIgc3RlcHMgYXJlIHBlcmZvcm1lZCBieSBjYWxsaW5nIEV4ZWN1dG9yRG9J bml0aWFsUHJ1bmluZygpCisgKiB0byBkZXRlcm1pbmUgb25seSB0aG9zZSBsZWFmIHBhcnRpdGlv bnMgdGhhdCBuZWVkIHRvIGJlIGxvY2tlZCBieQorICogQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBi eSBwcnVuaW5nIGF3YXkgc3VicGxhbnMgdGhhdCBkb24ndCBtYXRjaCB0aGUKKyAqICJpbml0aWFs IiBwcnVuaW5nIGNvbmRpdGlvbnMuICBGb3IgZWFjaCBQYXJ0aXRpb25QcnVuZUluZm8gZm91bmQg aW4KKyAqIFBsYW5uZWRTdG10LnBhcnRQcnVuZUluZm9zLCBhIFBhcnRpdGlvblBydW5lUmVzdWx0 IGNvbnRhaW5pbmcgdGhlIGJpdG1hcHNldAorICogb2YgdGhlIGluZGV4ZXMgb2Ygc3Vydml2aW5n IHN1YnBsYW5zIGlzIGFkZGVkIHRvIHRoZSBMaXN0IGZvciB0aGUKKyAqIFBsYW5uZWRTdG10Lgor ICoKICAqIE9uIHJldHVybiwgdGhlIHBsYW4gaXMgdmFsaWQgYW5kIHdlIGhhdmUgc3VmZmljaWVu dCBsb2NrcyB0byBiZWdpbgogICogZXhlY3V0aW9uLgogICoKQEAgLTExMzksMTEgKzEyMDksMTMg QEAgY2FjaGVkX3BsYW5fY29zdChDYWNoZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5l cikKICAqLwogQ2FjaGVkUGxhbiAqCiBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBs YW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCi0JCQkgIFJlc291cmNlT3duZXIg b3duZXIsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KQorCQkJICBSZXNvdXJjZU93bmVyIG93 bmVyLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKKwkJCSAgTGlzdCAqKnBhcnRfcHJ1bmVf cmVzdWx0c19saXN0KQogewogCUNhY2hlZFBsYW4gKnBsYW4gPSBOVUxMOwogCUxpc3QJICAgKnFs aXN0OwogCWJvb2wJCWN1c3RvbXBsYW47CisJTGlzdAkgICAqbXlfcGFydF9wcnVuZV9yZXN1bHRz X2xpc3Q7CiAKIAkvKiBBc3NlcnQgY2FsbGVyIGlzIGRvaW5nIHRoaW5ncyBpbiBhIHNhbmUgb3Jk ZXIgKi8KIAlBc3NlcnQocGxhbnNvdXJjZS0+bWFnaWMgPT0gQ0FDSEVEUExBTlNPVVJDRV9NQUdJ Qyk7CkBAIC0xMTYwLDcgKzEyMzIsOCBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2Ug KnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAKIAlpZiAoIWN1c3RvbXBs YW4pCiAJewotCQlpZiAoQ2hlY2tDYWNoZWRQbGFuKHBsYW5zb3VyY2UpKQorCQlpZiAoQ2hlY2tD YWNoZWRQbGFuKHBsYW5zb3VyY2UsIGJvdW5kUGFyYW1zLAorCQkJCQkJCSZteV9wYXJ0X3BydW5l X3Jlc3VsdHNfbGlzdCkpCiAJCXsKIAkJCS8qIFdlIHdhbnQgYSBnZW5lcmljIHBsYW4sIGFuZCB3 ZSBhbHJlYWR5IGhhdmUgYSB2YWxpZCBvbmUgKi8KIAkJCXBsYW4gPSBwbGFuc291cmNlLT5ncGxh bjsKQEAgLTExNjksNyArMTI0Miw4IEBAIEdldENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAq cGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKIAkJZWxzZQogCQl7CiAJCQkv KiBCdWlsZCBhIG5ldyBnZW5lcmljIHBsYW4gKi8KLQkJCXBsYW4gPSBCdWlsZENhY2hlZFBsYW4o cGxhbnNvdXJjZSwgcWxpc3QsIE5VTEwsIHF1ZXJ5RW52KTsKKwkJCXBsYW4gPSBCdWlsZENhY2hl ZFBsYW4ocGxhbnNvdXJjZSwgcWxpc3QsIE5VTEwsIHF1ZXJ5RW52LAorCQkJCQkJCQkgICAmbXlf cGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpOwogCQkJLyogSnVzdCBtYWtlIHJlYWwgc3VyZSBwbGFu c291cmNlLT5ncGxhbiBpcyBjbGVhciAqLwogCQkJUmVsZWFzZUdlbmVyaWNQbGFuKHBsYW5zb3Vy Y2UpOwogCQkJLyogTGluayB0aGUgbmV3IGdlbmVyaWMgcGxhbiBpbnRvIHRoZSBwbGFuc291cmNl ICovCkBAIC0xMjE0LDcgKzEyODgsOCBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2Ug KnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJaWYgKGN1c3RvbXBsYW4p CiAJewogCQkvKiBCdWlsZCBhIGN1c3RvbSBwbGFuICovCi0JCXBsYW4gPSBCdWlsZENhY2hlZFBs YW4ocGxhbnNvdXJjZSwgcWxpc3QsIGJvdW5kUGFyYW1zLCBxdWVyeUVudik7CisJCXBsYW4gPSBC dWlsZENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgcWxpc3QsIGJvdW5kUGFyYW1zLCBxdWVyeUVudiwK KwkJCQkJCQkgICAmbXlfcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpOwogCQkvKiBBY2N1bXVsYXRl IHRvdGFsIGNvc3RzIG9mIGN1c3RvbSBwbGFucyAqLwogCQlwbGFuc291cmNlLT50b3RhbF9jdXN0 b21fY29zdCArPSBjYWNoZWRfcGxhbl9jb3N0KHBsYW4sIHRydWUpOwogCkBAIC0xMjQ2LDYgKzEz MjEsOSBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFt TGlzdEluZm8gYm91bmRQYXJhbXMsCiAJCXBsYW4tPmlzX3NhdmVkID0gdHJ1ZTsKIAl9CiAKKwlp ZiAocGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpCisJCSpwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCA9 IG15X3BhcnRfcHJ1bmVfcmVzdWx0c19saXN0OworCiAJcmV0dXJuIHBsYW47CiB9CiAKQEAgLTE3 MzcsMTcgKzE4MTUsMjkgQEAgUXVlcnlMaXN0R2V0UHJpbWFyeVN0bXQoTGlzdCAqc3RtdHMpCiAK IC8qCiAgKiBBY3F1aXJlRXhlY3V0b3JMb2NrczogYWNxdWlyZSBsb2NrcyBuZWVkZWQgZm9yIGV4 ZWN1dGlvbiBvZiBhIGNhY2hlZCBwbGFuOwotICogb3IgcmVsZWFzZSB0aGVtIGlmIGFjcXVpcmUg aXMgZmFsc2UuCisgKgorICogU2VlIEdldENhY2hlZFBsYW4oKSdzIGNvbW1lbnQgZm9yIGEgZGVz Y3JpcHRpb24gb2YgcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QuCisgKgorICogT24gcmV0dXJuLCAq bG9ja2VkUmVsaWRzX3Blcl9zdG10IHdpbGwgY29udGFpbiBhIGJpdG1hcHNldCBmb3IgZXZlcnkK KyAqIFBsYW5uZWRTdG10IGluIHN0bXRfbGlzdCwgY29udGFpbmluZyB0aGUgUlQgaW5kZXhlcyBv ZiByZWxhdGlvbiBlbnRyaWVzCisgKiBpbiBpdHMgcmFuZ2UgdGFibGUgdGhhdCB3ZXJlIGFjdHVh bGx5IGxvY2tlZCwgb3IgTlVMTCBpZiB0aGUgUGxhbm5lZFN0bXQKKyAqIGNvbnRhaW5zIGEgdXRp bGl0eSBzdGF0ZW1lbnQuCiAgKi8KIHN0YXRpYyB2b2lkCi1BY3F1aXJlRXhlY3V0b3JMb2NrcyhM aXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSkKK0FjcXVpcmVFeGVjdXRvckxvY2tzKExpc3Qg KnN0bXRfbGlzdCwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKKwkJCQkJIExpc3QgKipwYXJ0 X3BydW5lX3Jlc3VsdHNfbGlzdCwKKwkJCQkJIExpc3QgKipsb2NrZWRSZWxpZHNfcGVyX3N0bXQp CiB7CiAJTGlzdENlbGwgICAqbGMxOwogCisJKnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0ID0gKmxv Y2tlZFJlbGlkc19wZXJfc3RtdCA9IE5JTDsKIAlmb3JlYWNoKGxjMSwgc3RtdF9saXN0KQogCXsK IAkJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIGxj MSk7Ci0JCUxpc3RDZWxsICAgKmxjMjsKKwkJTGlzdAkgICAqcGFydF9wcnVuZV9yZXN1bHRzID0g TklMOworCQlCaXRtYXBzZXQgICphbGxMb2NrUmVsaWRzOworCQlCaXRtYXBzZXQgICpsb2NrZWRS ZWxpZHMgPSBOVUxMOworCQlpbnQJCQlydGk7CiAKIAkJaWYgKHBsYW5uZWRzdG10LT5jb21tYW5k VHlwZSA9PSBDTURfVVRJTElUWSkKIAkJewpAQCAtMTc2MSwxMyArMTg1MSw0MCBAQCBBY3F1aXJl RXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSkKIAkJCVF1ZXJ5CSAg ICpxdWVyeSA9IFV0aWxpdHlDb250YWluc1F1ZXJ5KHBsYW5uZWRzdG10LT51dGlsaXR5U3RtdCk7 CiAKIAkJCWlmIChxdWVyeSkKLQkJCQlTY2FuUXVlcnlGb3JMb2NrcyhxdWVyeSwgYWNxdWlyZSk7 CisJCQkJU2NhblF1ZXJ5Rm9yTG9ja3MocXVlcnksIHRydWUpOworCQkJKnBhcnRfcHJ1bmVfcmVz dWx0c19saXN0ID0gbGFwcGVuZCgqcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QsIE5JTCk7CiAJCQlj b250aW51ZTsKIAkJfQogCi0JCWZvcmVhY2gobGMyLCBwbGFubmVkc3RtdC0+cnRhYmxlKQorCQkv KgorCQkgKiBGaWd1cmUgb3V0IHRoZSBzZXQgb2YgcmVsYXRpb25zIHRoYXQgd291bGQgbmVlZCB0 byBiZSBsb2NrZWQKKwkJICogYmVmb3JlIGV4ZWN1dGluZyB0aGUgcGxhbi4KKwkJICovCisJCWlm IChwbGFubmVkc3RtdC0+Y29udGFpbnNJbml0aWFsUHJ1bmluZykKIAkJewotCQkJUmFuZ2VUYmxF bnRyeSAqcnRlID0gKFJhbmdlVGJsRW50cnkgKikgbGZpcnN0KGxjMik7CisJCQlCaXRtYXBzZXQg KnNjYW5fbGVhZnBhcnRfcnRpcyA9IE5VTEw7CisKKwkJCS8qCisJCQkgKiBPYnRhaW4gdGhlIHNl dCBvZiBsZWFmIHBhcnRpdGlvbnMgdG8gYmUgbG9ja2VkLgorCQkJICoKKwkJCSAqIFRoZSBmb2xs b3dpbmcgZG9lcyBpbml0aWFsIHBhcnRpdGlvbiBwcnVuaW5nIHVzaW5nIHRoZQorCQkJICogUGFy dGl0aW9uUHJ1bmVJbmZvcyBmb3VuZCBpbiBwbGFubmVkc3RtdC0+cGFydFBydW5lSW5mb3MgYW5k CisJCQkgKiBmaW5kcyBsZWFmIHBhcnRpdGlvbnMgdGhhdCBzdXJ2aXZlIHRoYXQgcHJ1bmluZyBh Y3Jvc3MgYWxsIHRoZQorCQkJICogbm9kZXMgaW4gdGhlIHBsYW4gdHJlZS4KKwkJCSAqLworCQkJ cGFydF9wcnVuZV9yZXN1bHRzID0gRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKHBsYW5uZWRzdG10 LAorCQkJCQkJCQkJCQkJCQkgIGJvdW5kUGFyYW1zLAorCQkJCQkJCQkJCQkJCQkgICZzY2FuX2xl YWZwYXJ0X3J0aXMpOworCQkJYWxsTG9ja1JlbGlkcyA9IGJtc191bmlvbihwbGFubmVkc3RtdC0+ bWluTG9ja1JlbGlkcywKKwkJCQkJCQkJCSAgc2Nhbl9sZWFmcGFydF9ydGlzKTsKKwkJfQorCQll bHNlCisJCQlhbGxMb2NrUmVsaWRzID0gcGxhbm5lZHN0bXQtPm1pbkxvY2tSZWxpZHM7CisKKwkJ cnRpID0gLTE7CisJCXdoaWxlICgocnRpID0gYm1zX25leHRfbWVtYmVyKGFsbExvY2tSZWxpZHMs IHJ0aSkpID4gMCkKKwkJeworCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gcnRfZmV0Y2gocnRpLCBw bGFubmVkc3RtdC0+cnRhYmxlKTsKIAogCQkJaWYgKHJ0ZS0+cnRla2luZCAhPSBSVEVfUkVMQVRJ T04pCiAJCQkJY29udGludWU7CkBAIC0xNzc4LDEwICsxODk1LDU5IEBAIEFjcXVpcmVFeGVjdXRv ckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKQogCQkJICogZmFpbCBpZiBpdCdz IGJlZW4gZHJvcHBlZCBlbnRpcmVseSAtLS0gd2UnbGwganVzdCB0cmFuc2llbnRseQogCQkJICog YWNxdWlyZSBhIG5vbi1jb25mbGljdGluZyBsb2NrLgogCQkJICovCi0JCQlpZiAoYWNxdWlyZSkK LQkJCQlMb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7Ci0JCQll bHNlCi0JCQkJVW5sb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7 CisJCQlMb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7CisJCQls b2NrZWRSZWxpZHMgPSBibXNfYWRkX21lbWJlcihsb2NrZWRSZWxpZHMsIHJ0aSk7CisJCX0KKwor CQkqcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QgPSBsYXBwZW5kKCpwYXJ0X3BydW5lX3Jlc3VsdHNf bGlzdCwKKwkJCQkJCQkJCQkgICBwYXJ0X3BydW5lX3Jlc3VsdHMpOworCQkqbG9ja2VkUmVsaWRz X3Blcl9zdG10ID0gbGFwcGVuZCgqbG9ja2VkUmVsaWRzX3Blcl9zdG10LCBsb2NrZWRSZWxpZHMp OworCX0KK30KKworLyoKKyAqIFJlbGVhc2VFeGVjdXRvckxvY2tzCisgKiAJCVJlbGVhc2UgbG9j a3MgdGhhdCB3b3VsZCd2ZSBiZWVuIGFjcXVpcmVkIGJ5IGFuIGVhcmxpZXIgY2FsbCB0bworICog CQlBY3F1aXJlRXhlY3V0b3JMb2NrcygpCisgKi8KK3N0YXRpYyB2b2lkCitSZWxlYXNlRXhlY3V0 b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIExpc3QgKmxvY2tlZFJlbGlkc19wZXJfc3RtdCkKK3sK KwlMaXN0Q2VsbCAgICpsYzEsCisJCQkgICAqbGMyOworCisJZm9yYm90aChsYzEsIHN0bXRfbGlz dCwgbGMyLCBsb2NrZWRSZWxpZHNfcGVyX3N0bXQpCisJeworCQlQbGFubmVkU3RtdCAqcGxhbm5l ZHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMxKTsKKwkJQml0bWFwc2V0ICAqbG9j a2VkUmVsaWRzID0gbGZpcnN0KGxjMik7CisJCWludAkJCXJ0aTsKKworCQlpZiAocGxhbm5lZHN0 bXQtPmNvbW1hbmRUeXBlID09IENNRF9VVElMSVRZKQorCQl7CisJCQkvKgorCQkJICogSWdub3Jl IHV0aWxpdHkgc3RhdGVtZW50cywgZXhjZXB0IHRob3NlIChzdWNoIGFzIEVYUExBSU4pIHRoYXQK KwkJCSAqIGNvbnRhaW4gYSBwYXJzZWQtYnV0LW5vdC1wbGFubmVkIHF1ZXJ5LiAgTm90ZTogaXQn cyBva2F5IHRvIHVzZQorCQkJICogU2NhblF1ZXJ5Rm9yTG9ja3MsIGV2ZW4gdGhvdWdoIHRoZSBx dWVyeSBoYXNuJ3QgYmVlbiB0aHJvdWdoCisJCQkgKiBydWxlIHJld3JpdGluZywgYmVjYXVzZSBy ZXdyaXRpbmcgZG9lc24ndCBjaGFuZ2UgdGhlIHF1ZXJ5CisJCQkgKiByZXByZXNlbnRhdGlvbi4K KwkJCSAqLworCQkJUXVlcnkJICAgKnF1ZXJ5ID0gVXRpbGl0eUNvbnRhaW5zUXVlcnkocGxhbm5l ZHN0bXQtPnV0aWxpdHlTdG10KTsKKworCQkJQXNzZXJ0KGxvY2tlZFJlbGlkcyA9PSBOVUxMKTsK KwkJCWlmIChxdWVyeSkKKwkJCQlTY2FuUXVlcnlGb3JMb2NrcyhxdWVyeSwgZmFsc2UpOworCQkJ Y29udGludWU7CisJCX0KKworCQlydGkgPSAtMTsKKwkJd2hpbGUgKChydGkgPSBibXNfbmV4dF9t ZW1iZXIobG9ja2VkUmVsaWRzLCBydGkpKSA+PSAwKQorCQl7CisJCQlSYW5nZVRibEVudHJ5ICpy dGUgPSBydF9mZXRjaChydGksIHBsYW5uZWRzdG10LT5ydGFibGUpOworCisJCQlBc3NlcnQocnRl LT5ydGVraW5kID09IFJURV9SRUxBVElPTik7CisKKwkJCS8qIFNlZSB0aGUgY29tbWVudCBpbiBB Y3F1aXJlRXhlY3V0b3JMb2NrcygpLiAqLworCQkJVW5sb2NrUmVsYXRpb25PaWQocnRlLT5yZWxp ZCwgcnRlLT5yZWxsb2NrbW9kZSk7CiAJCX0KIAl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxt ZW0uYwppbmRleCA3YjFhZTZmZGNmLi41YjkwOTg5NzFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9y dGFsbWVtLmMKQEAgLTMwMyw2ICszMDMsMjUgQEAgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBv cnRhbCwKIAlwb3J0YWwtPnN0YXR1cyA9IFBPUlRBTF9ERUZJTkVEOwogfQogCisvKgorICogUG9y dGFsU3RvcmVQYXJ0aXRpb25QcnVuZVJlc3VsdHMKKyAqCQlDb3B5IHRoZSBnaXZlbiBMaXN0IG9m IExpc3RzIG9mIFBhcnRpdGlvblBydW5lUmVzdWx0cyBpbnRvIHRoZQorICoJCXBvcnRhbCdzIGNv bnRleHQKKyAqCisgKiBUaGlzIGFsbG93cyB0aGUgY2FsbGVyIHRvIGVuc3VyZSB0aGF0IHRoZSBs aXN0IGV4aXN0cyBhcyBsb25nIGFzIHRoZSBwb3J0YWwKKyAqIGRvZXMuCisgKi8KK3ZvaWQKK1Bv cnRhbFN0b3JlUGFydGl0aW9uUHJ1bmVSZXN1bHRzKFBvcnRhbCBwb3J0YWwsIExpc3QgKnBhcnRf cHJ1bmVfcmVzdWx0c19saXN0KQoreworCU1lbW9yeUNvbnRleHQJb2xkY3h0OworCisJQXNzZXJ0 KFBvcnRhbElzVmFsaWQocG9ydGFsKSk7CisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRv KHBvcnRhbC0+cG9ydGFsQ29udGV4dCk7CisJcG9ydGFsLT5wYXJ0X3BydW5lX3Jlc3VsdHNfbGlz dCA9IGNvcHlPYmplY3QocGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpOworCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhvbGRjeHQpOworfQorCiAvKgogICogUG9ydGFsUmVsZWFzZUNhY2hlZFBsYW4KICAq CQlSZWxlYXNlIGEgcG9ydGFsJ3MgcmVmZXJlbmNlIHRvIGl0cyBjYWNoZWQgcGxhbiwgaWYgYW55 LgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oIGIvc3JjL2luY2x1 ZGUvY29tbWFuZHMvZXhwbGFpbi5oCmluZGV4IDllYmRlMDg5YWUuLjI2OWNjNGQ1NjIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAorKysgYi9zcmMvaW5jbHVkZS9j b21tYW5kcy9leHBsYWluLmgKQEAgLTg3LDcgKzg3LDkgQEAgZXh0ZXJuIHZvaWQgRXhwbGFpbk9u ZVV0aWxpdHkoTm9kZSAqdXRpbGl0eVN0bXQsIEludG9DbGF1c2UgKmludG8sCiAJCQkJCQkJICBF eHBsYWluU3RhdGUgKmVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCQkgIFBhcmFt TGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CiAKLWV4dGVybiB2 b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAq aW50bywKK2V4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3Rt dCwKKwkJCQkJCSAgIExpc3QgKnBhcnRfcHJ1bmVfcmVzdWx0cywKKwkJCQkJCSAgIEludG9DbGF1 c2UgKmludG8sCiAJCQkJCQkgICBFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBjaGFyICpxdWVyeVN0 cmluZywKIAkJCQkJCSAgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpx dWVyeUVudiwKIAkJCQkJCSAgIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlvbiwKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCBiL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAppbmRleCAxN2ZhYmMxOGM5Li40Yjk4ZDBkMmVmIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKKysrIGIvc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCkBAIC00NSw2ICs0NSw3IEBAIGV4dGVy biB2b2lkIEV4ZWNDbGVhbnVwVHVwbGVSb3V0aW5nKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUs CiAgKiBucGFydHMJCQkJCQlMZW5ndGggb2Ygc3VicGxhbl9tYXBbXSBhbmQgc3VicGFydF9tYXBb XS4KICAqIHN1YnBsYW5fbWFwCQkJCQlTdWJwbGFuIGluZGV4IGJ5IHBhcnRpdGlvbiBpbmRleCwg b3IgLTEuCiAgKiBzdWJwYXJ0X21hcAkJCQkJU3VicGFydCBpbmRleCBieSBwYXJ0aXRpb24gaW5k ZXgsIG9yIC0xLgorICogcnRpX21hcAkJCQkJCVJhbmdlIHRhYmxlIGluZGV4IGJ5IHBhcnRpdGlv biBpbmRleCwgb3IgMC4KICAqIHByZXNlbnRfcGFydHMJCQkJQSBCaXRtYXBzZXQgb2YgdGhlIHBh cnRpdGlvbiBpbmRleGVzIHRoYXQgd2UKICAqCQkJCQkJCQloYXZlIHN1YnBsYW5zIG9yIHN1YnBh cnRzIGZvci4KICAqIGluaXRpYWxfcHJ1bmluZ19zdGVwcwkJTGlzdCBvZiBQYXJ0aXRpb25QcnVu ZVN0ZXBzIHVzZWQgdG8KQEAgLTYxLDYgKzYyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9u ZWRSZWxQcnVuaW5nRGF0YQogCWludAkJCW5wYXJ0czsKIAlpbnQJCSAgICpzdWJwbGFuX21hcDsK IAlpbnQJCSAgICpzdWJwYXJ0X21hcDsKKwlJbmRleAkgICAqcnRpX21hcDsKIAlCaXRtYXBzZXQg ICpwcmVzZW50X3BhcnRzOwogCUxpc3QJICAgKmluaXRpYWxfcHJ1bmluZ19zdGVwczsKIAlMaXN0 CSAgICpleGVjX3BydW5pbmdfc3RlcHM7CkBAIC0xMjcsNSArMTI5LDEwIEBAIGV4dGVybiBQYXJ0 aXRpb25QcnVuZVN0YXRlICpFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFu c3RhdGUsCiAJCQkJCQkJCQkJCQkJIEJpdG1hcHNldCAqcm9vdF9wYXJlbnRfcmVsaWRzLAogCQkJ CQkJCQkJCQkJCSBCaXRtYXBzZXQgKippbml0aWFsbHlfdmFsaWRfc3VicGxhbnMpOwogZXh0ZXJu IEJpdG1hcHNldCAqRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5lU3RhdGUg KnBydW5lc3RhdGUsCi0JCQkJCQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lKTsKKwkJCQkJCQkJ CQkgICBib29sIGluaXRpYWxfcHJ1bmUsCisJCQkJCQkJCQkJICAgQml0bWFwc2V0ICoqc2Nhbl9s ZWFmcGFydF9ydGlzKTsKK2V4dGVybiBCaXRtYXBzZXQgKkV4ZWNQYXJ0aXRpb25Eb0luaXRpYWxQ cnVuaW5nKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJCQkJCQkJUGFyYW1MaXN0SW5mbyBw YXJhbXMsCisJCQkJCQkJCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAorCQkJCQkJCQlC aXRtYXBzZXQgKipzY2FuX2xlYWZwYXJ0X3J0aXMpOwogI2VuZGlmCQkJCQkJCS8qIEVYRUNQQVJU SVRJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCBi L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKaW5kZXggZTc5ZTJjMDAxZi4uN2Q0Mzc5 ZGE3YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAorKysgYi9z cmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCkBAIC0zNSw2ICszNSw4IEBAIHR5cGVkZWYg c3RydWN0IFF1ZXJ5RGVzYwogCS8qIFRoZXNlIGZpZWxkcyBhcmUgcHJvdmlkZWQgYnkgQ3JlYXRl UXVlcnlEZXNjICovCiAJQ21kVHlwZQkJb3BlcmF0aW9uOwkJLyogQ01EX1NFTEVDVCwgQ01EX1VQ REFURSwgZXRjLiAqLwogCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdDsJLyogcGxhbm5lcidzIG91 dHB1dCAoY291bGQgYmUgdXRpbGl0eSwgdG9vKSAqLworCUxpc3QJCSpwYXJ0X3BydW5lX3Jlc3Vs dHM7IC8qIEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpJ3MKKwkJCQkJCQkJCSAgKiBvdXRwdXQg Zm9yIHBsYW5uZWRzdG10ICovCiAJY29uc3QgY2hhciAqc291cmNlVGV4dDsJCS8qIHNvdXJjZSB0 ZXh0IG9mIHRoZSBxdWVyeSAqLwogCVNuYXBzaG90CXNuYXBzaG90OwkJLyogc25hcHNob3QgdG8g dXNlIGZvciBxdWVyeSAqLwogCVNuYXBzaG90CWNyb3NzY2hlY2tfc25hcHNob3Q7CS8qIGNyb3Nz Y2hlY2sgZm9yIFJJIHVwZGF0ZS9kZWxldGUgKi8KQEAgLTU3LDYgKzU5LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgUXVlcnlEZXNjCiAKIC8qIGluIHBxdWVyeS5jICovCiBleHRlcm4gUXVlcnlEZXNjICpD cmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAorCQkJCQkJCQkgIExpc3Qg KnBhcnRfcHJ1bmVfcmVzdWx0cywKIAkJCQkJCQkJICBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAog CQkJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkgIFNuYXBzaG90IGNyb3NzY2hl Y2tfc25hcHNob3QsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5o IGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCBhYWYyYmM3OGI5Li4zMmJi YmM1OTI3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBi L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTE4NSw2ICsxODUsOSBAQCBFeGVj R2V0SnVua0F0dHJpYnV0ZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgQXR0ck51bWJlciBhdHRubywg Ym9vbCAqaXNOdWxsKQogLyoKICAqIHByb3RvdHlwZXMgZnJvbSBmdW5jdGlvbnMgaW4gZXhlY01h aW4uYwogICovCitleHRlcm4gTGlzdCAqRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKFBsYW5uZWRT dG10ICpwbGFubmVkc3RtdCwKKwkJCQkJCQkJCSAgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCisJCQkJ CQkJCQkgIEJpdG1hcHNldCAqKnNjYW5fbGVhZnBhcnRfcnRpcyk7CiBleHRlcm4gdm9pZCBFeGVj dXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIGV4dGVybiB2b2lk IHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3Mp OwogZXh0ZXJuIHZvaWQgRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oCmluZGV4IDcxMjQ4YTk0NjYuLjljNmU4ZjVlMTMgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oCkBAIC02MTksNiArNjE5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJCQkJCQkJCQkJ ICogRXhlY1Jvd01hcmtzLCBvciBOVUxMIGlmIG5vbmUgKi8KIAlQbGFubmVkU3RtdCAqZXNfcGxh bm5lZHN0bXQ7CS8qIGxpbmsgdG8gdG9wIG9mIHBsYW4gdHJlZSAqLwogCUxpc3QJCSplc19wYXJ0 X3BydW5lX2luZm9zOwkvKiBQbGFubmVkU3RtdC5wYXJ0UHJ1bmVJbmZvcyAqLworCUxpc3QJCSpl c19wYXJ0X3BydW5lX3Jlc3VsdHM7IC8qIFF1ZXJ5RGVzYy5wYXJ0X3BydW5lX3Jlc3VsdHMgKi8K IAljb25zdCBjaGFyICplc19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBmcm9tIFF1ZXJ5RGVz YyAqLwogCiAJSnVua0ZpbHRlciAqZXNfanVua0ZpbHRlcjsJLyogdG9wLWxldmVsIGp1bmsgZmls dGVyLCBpZiBhbnkgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCmluZGV4IDFmMzM5MDI5NDcuLmMyZjI1NDRkZjUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9k ZXMvbm9kZXMuaApAQCAtMjE4LDYgKzIxOCw3IEBAIGV4dGVybiBzdHJ1Y3QgQml0bWFwc2V0ICpy ZWFkQml0bWFwc2V0KHZvaWQpOwogZXh0ZXJuIHVpbnRwdHJfdCByZWFkRGF0dW0oYm9vbCB0eXBi eXZhbCk7CiBleHRlcm4gYm9vbCAqcmVhZEJvb2xDb2xzKGludCBudW1Db2xzKTsKIGV4dGVybiBp bnQgKnJlYWRJbnRDb2xzKGludCBudW1Db2xzKTsKK2V4dGVybiBJbmRleCAqcmVhZEluZGV4Q29s cyhpbnQgbnVtQ29scyk7CiBleHRlcm4gT2lkICpyZWFkT2lkQ29scyhpbnQgbnVtQ29scyk7CiBl eHRlcm4gaW50MTYgKnJlYWRBdHRyTnVtYmVyQ29scyhpbnQgbnVtQ29scyk7CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0 aG5vZGVzLmgKaW5kZXggZGJhYTliYjU0ZC4uZTBlNWMxNWIwOSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVz LmgKQEAgLTEyNSw2ICsxMjUsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lckdsb2JhbAogCS8q IExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVJbmZvIGNvbnRhaW5lZCBpbiB0aGUgcGxhbiAqLwogCUxp c3QJICAgKnBhcnRQcnVuZUluZm9zOwogCisJLyoKKwkgKiBEbyBhbnkgb2YgdGhvc2UgUGFydGl0 aW9uUHJ1bmVJbmZvcyBoYXZlIGluaXRpYWwgcHJ1bmluZyBzdGVwcyBpbiB0aGVtPworCSAqLwor CWJvb2wJCWNvbnRhaW5zSW5pdGlhbFBydW5pbmc7CisKKwkvKgorCSAqIEluZGV4ZXMgb2YgYWxs IHJhbmdlIHRhYmxlIGVudHJpZXMgbWludXMgaW5kZXhlcyBvZiByYW5nZSB0YWJsZSBlbnRyaWVz CisJICogb2YgdGhlIGxlYWYgcGFydGl0aW9ucyBzY2FubmVkIGJ5IHBydW5hYmxlIHN1YnBsYW5z OyBzZWUKKwkgKiBBY3F1aXJlRXhlY3V0b3JMb2NrcygpCisJICovCisJQml0bWFwc2V0ICAqbWlu TG9ja1JlbGlkczsKKwogCS8qIE9JRHMgb2YgcmVsYXRpb25zIHRoZSBwbGFuIGRlcGVuZHMgb24g Ki8KIAlMaXN0CSAgICpyZWxhdGlvbk9pZHM7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25v ZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggYzM2 YTE1YmQwOS4uNzE0ZTJjZjJjNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTczLDggKzczLDE3 IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZWRTdG10CiAJTGlzdAkgICAqcGFydFBydW5lSW5mb3M7 IC8qIExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVJbmZvIGNvbnRhaW5lZCBpbiB0aGUKIAkJCQkJCQkJ ICogcGxhbiAqLwogCisJYm9vbAkJY29udGFpbnNJbml0aWFsUHJ1bmluZzsJLyogRG8gYW55IG9m IHRob3NlIFBhcnRpdGlvblBydW5lSW5mb3MKKwkJCQkJCQkJCQkgKiBoYXZlIGluaXRpYWwgcHJ1 bmluZyBzdGVwcyBpbiB0aGVtPworCQkJCQkJCQkJCSAqLworCiAJTGlzdAkgICAqcnRhYmxlOwkJ CS8qIGxpc3Qgb2YgUmFuZ2VUYmxFbnRyeSBub2RlcyAqLwogCisJQml0bWFwc2V0ICAqbWluTG9j a1JlbGlkczsJLyogSW5kZXhlcyBvZiBhbGwgcmFuZ2UgdGFibGUgZW50cmllcyBtaW51cworCQkJ CQkJCQkgKiBpbmRleGVzIG9mIHJhbmdlIHRhYmxlIGVudHJpZXMgb2YgdGhlIGxlYWYKKwkJCQkJ CQkJICogcGFydGl0aW9ucyBzY2FubmVkIGJ5IHBydW5hYmxlIHN1YnBsYW5zOworCQkJCQkJCQkg KiBzZWUgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSAqLworCiAJLyogcnRhYmxlIGluZGV4ZXMgb2Yg dGFyZ2V0IHJlbGF0aW9ucyBmb3IgSU5TRVJUL1VQREFURS9ERUxFVEUvTUVSR0UgKi8KIAlMaXN0 CSAgICpyZXN1bHRSZWxhdGlvbnM7CS8qIGludGVnZXIgbGlzdCBvZiBSVCBpbmRleGVzLCBvciBO SUwgKi8KIApAQCAtMTQxNCw2ICsxNDIzLDEzIEBAIHR5cGVkZWYgc3RydWN0IFBsYW5Sb3dNYXJr CiAgKiBwcnVuZV9pbmZvcwkJCUxpc3Qgb2YgTGlzdHMgY29udGFpbmluZyBQYXJ0aXRpb25lZFJl bFBydW5lSW5mbyBub2RlcywKICAqCQkJCQkJb25lIHN1Ymxpc3QgcGVyIHJ1bi10aW1lLXBydW5h YmxlIHBhcnRpdGlvbiBoaWVyYXJjaHkKICAqCQkJCQkJYXBwZWFyaW5nIGluIHRoZSBwYXJlbnQg cGxhbiBub2RlJ3Mgc3VicGxhbnMuCisgKgorICogbmVlZHNfaW5pdF9wcnVuaW5nCURvZXMgYW55 IG9mIHRoZSBQYXJ0aXRpb25lZFJlbFBydW5lSW5mb3MgaW4KKyAqCQkJCQkJcHJ1bmVfaW5mb3Mg aGF2ZSBpdHMgaW5pdGlhbF9wcnVuaW5nX3N0ZXBzIHNldD8KKyAqCisgKiBuZWVkc19leGVjX3By dW5pbmcJRG9lcyBhbnkgb2YgdGhlIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvcyBpbgorICoJCQkJ CQlwcnVuZV9pbmZvcyBoYXZlIGl0cyBleGVjX3BydW5pbmdfc3RlcHMgc2V0PworICoKICAqIG90 aGVyX3N1YnBsYW5zCQlJbmRleGVzIG9mIGFueSBzdWJwbGFucyB0aGF0IGFyZSBub3QgYWNjb3Vu dGVkIGZvcgogICoJCQkJCQlieSBhbnkgb2YgdGhlIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvIG5v ZGVzIGluCiAgKgkJCQkJCSJwcnVuZV9pbmZvcyIuICBUaGVzZSBzdWJwbGFucyBtdXN0IG5vdCBi ZSBwcnVuZWQuCkBAIC0xNDI1LDYgKzE0NDEsOCBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25Q cnVuZUluZm8KIAlOb2RlVGFnCQl0eXBlOwogCUJpdG1hcHNldCAgKnJvb3RfcGFyZW50X3JlbGlk czsKIAlMaXN0CSAgICpwcnVuZV9pbmZvczsKKwlib29sCQluZWVkc19pbml0X3BydW5pbmc7CisJ Ym9vbAkJbmVlZHNfZXhlY19wcnVuaW5nOwogCUJpdG1hcHNldCAgKm90aGVyX3N1YnBsYW5zOwog fSBQYXJ0aXRpb25QcnVuZUluZm87CiAKQEAgLTE0NjksNiArMTQ4Nyw5IEBAIHR5cGVkZWYgc3Ry dWN0IFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvCiAJLyogcmVsYXRpb24gT0lEIGJ5IHBhcnRpdGlv biBpbmRleCwgb3IgMCAqLwogCU9pZAkJICAgKnJlbGlkX21hcCBwZ19ub2RlX2F0dHIoYXJyYXlf c2l6ZShucGFydHMpKTsKIAorCS8qIFJhbmdlIHRhYmxlIGluZGV4IGJ5IHBhcnRpdGlvbiBpbmRl eCwgb3IgMC4gKi8KKwlJbmRleAkgICAqcnRpX21hcCBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShu cGFydHMpKTsKKwogCS8qCiAJICogaW5pdGlhbF9wcnVuaW5nX3N0ZXBzIHNob3dzIGhvdyB0byBw cnVuZSBkdXJpbmcgZXhlY3V0b3Igc3RhcnR1cCAoaS5lLiwKIAkgKiB3aXRob3V0IHVzZSBvZiBh bnkgUEFSQU1fRVhFQyBQYXJhbXMpOyBpdCBpcyBOSUwgaWYgbm8gc3RhcnR1cCBwcnVuaW5nCkBA IC0xNTUzLDYgKzE1NzQsMzEgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVTdGVwQ29t YmluZQogCUxpc3QJICAgKnNvdXJjZV9zdGVwaWRzOwogfSBQYXJ0aXRpb25QcnVuZVN0ZXBDb21i aW5lOwogCisvKi0tLS0tLS0tLS0tLS0tLS0KKyAqIFBhcnRpdGlvblBydW5lUmVzdWx0CisgKgor ICogVGhlIHJlc3VsdCBvZiBwZXJmb3JtaW5nIEV4ZWNQYXJ0aXRpb25Eb0luaXRpYWxQcnVuaW5n KCkgb24gYSBnaXZlbgorICogUGFydGl0aW9uUHJ1bmVJbmZvLgorICoKKyAqIHZhbGlkX3N1YnBs YW5zX29mZnMgY29udGFpbnMgdGhlIGluZGV4ZXMgb2Ygc3VicGxhbnMgcmVtYWluaW5nIGFmdGVy CisgKiBwZXJmb3JtaW5nIGluaXRpYWwgcHJ1bmluZyBieSBjYWxsaW5nIEV4ZWNGaW5kTWF0Y2hp bmdTdWJQbGFucygpIG9uIHRoZQorICogUGFydGl0aW9uUHJ1bmVJbmZvLgorICoKKyAqIFRoaXMg aXMgdXNlZCB0byBzdG9yZSB0aGUgcmVzdWx0IG9mIGluaXRpYWwgcGFydGl0aW9uIHBydW5pbmcg dGhhdCBpcworICogcGVmb3JtZWQgYmVmb3JlIHRoZSBleGVjdXRpb24gaGFzIHN0YXJ0ZWQuICBB IG1vZHVsZSB0aGF0IG5lZWRzIHRvIGRvIHNvCisgKiBzaG91bGQgY2FsbCBFeGVjdXRvckRvSW5p dGlhbFBydW5pbmcoKSBvbiBhIGdpdmVuIFBsYW5uZWRTdG10LCB3aGljaAorICogcmV0dXJucyBh IExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVSZXN1bHQgY29udGFpbmluZyBhbiBlbnRyeSBmb3IgZWFj aAorICogUGFydGl0aW9uUHJ1bmVJbmZvIHByZXNlbnQgaW4gUGxhbm5lZFN0bXQucGFydF9wcnVu ZV9pbmZvcy4gIFRoZSBtb2R1bGUKKyAqIHNob3VsZCB0aGVuIHBhc3MgdGhhdCBsaXN0LCBhbG9u ZyB3aXRoIHRoZSBQbGFubmVkU3RtdCwgdG8gdGhlIGV4ZWN1dG9yLAorICogc28gdGhhdCBpdCBj YW4gcmV1c2UgdGhlIHJlc3VsdCBvZiBpbml0aWFsIHBhcnRpdGlvbiBwcnVuaW5nIHdoZW4KKyAq IGluaXRpYWxpemluZyB0aGUgc3VicGxhbnMgZm9yIGV4ZWN1dGlvbi4KKyAqLwordHlwZWRlZiBz dHJ1Y3QgUGFydGl0aW9uUHJ1bmVSZXN1bHQKK3sKKwlOb2RlVGFnCQl0eXBlOworCisJQml0bWFw c2V0CSAgICp2YWxpZF9zdWJwbGFuX29mZnM7Cit9IFBhcnRpdGlvblBydW5lUmVzdWx0OwogCiAv KgogICogUGxhbiBpbnZhbGlkYXRpb24gaW5mbwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRp bHMvcGxhbmNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaAppbmRleCAwNDk5 NjM1ZjU5Li4zMjU3OWQ0Nzg4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2Fj aGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaApAQCAtMjIwLDcgKzIyMCw4 IEBAIGV4dGVybiBMaXN0ICpDYWNoZWRQbGFuR2V0VGFyZ2V0TGlzdChDYWNoZWRQbGFuU291cmNl ICpwbGFuc291cmNlLAogZXh0ZXJuIENhY2hlZFBsYW4gKkdldENhY2hlZFBsYW4oQ2FjaGVkUGxh blNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkJIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMs CiAJCQkJCQkJCSBSZXNvdXJjZU93bmVyIG93bmVyLAotCQkJCQkJCQkgUXVlcnlFbnZpcm9ubWVu dCAqcXVlcnlFbnYpOworCQkJCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCisJCQkJ CQkJCSBMaXN0ICoqcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpOwogZXh0ZXJuIHZvaWQgUmVsZWFz ZUNhY2hlZFBsYW4oQ2FjaGVkUGxhbiAqcGxhbiwgUmVzb3VyY2VPd25lciBvd25lcik7CiAKIGV4 dGVybiBib29sIENhY2hlZFBsYW5BbGxvd3NTaW1wbGVWYWxpZGl0eUNoZWNrKENhY2hlZFBsYW5T b3VyY2UgKnBsYW5zb3VyY2UsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwu aCBiL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCmluZGV4IGFlZGRiZGFmZTUuLjE5MDFmYzVm MjggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCisrKyBiL3NyYy9pbmNs dWRlL3V0aWxzL3BvcnRhbC5oCkBAIC0xMzgsNiArMTM4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUG9y dGFsRGF0YQogCVF1ZXJ5Q29tcGxldGlvbiBxYzsJCQkvKiBjb21tYW5kIGNvbXBsZXRpb24gZGF0 YSBmb3IgZXhlY3V0ZWQgcXVlcnkgKi8KIAlMaXN0CSAgICpzdG10czsJCQkvKiBsaXN0IG9mIFBs YW5uZWRTdG10cyAqLwogCUNhY2hlZFBsYW4gKmNwbGFuOwkJCS8qIENhY2hlZFBsYW4sIGlmIHN0 bXRzIGFyZSBmcm9tIG9uZSAqLworCUxpc3QJICAgKnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0Owkv KiBMaXN0IG9mIExpc3RzIG9mIFBhcnRpdGlvblBydW5lUmVzdWx0cyAqLwogCiAJUGFyYW1MaXN0 SW5mbyBwb3J0YWxQYXJhbXM7IC8qIHBhcmFtcyB0byBwYXNzIHRvIHF1ZXJ5ICovCiAJUXVlcnlF bnZpcm9ubWVudCAqcXVlcnlFbnY7IC8qIGVudmlyb25tZW50IGZvciBxdWVyeSAqLwpAQCAtMjQy LDYgKzI0Myw4IEBAIGV4dGVybiB2b2lkIFBvcnRhbERlZmluZVF1ZXJ5KFBvcnRhbCBwb3J0YWws CiAJCQkJCQkJICBDb21tYW5kVGFnIGNvbW1hbmRUYWcsCiAJCQkJCQkJICBMaXN0ICpzdG10cywK IAkJCQkJCQkgIENhY2hlZFBsYW4gKmNwbGFuKTsKK2V4dGVybiB2b2lkIFBvcnRhbFN0b3JlUGFy dGl0aW9uUHJ1bmVSZXN1bHRzKFBvcnRhbCBwb3J0YWwsCisJCQkJCQkJCQkJCSBMaXN0ICpwYXJ0 X3BydW5lX3Jlc3VsdHNfbGlzdCk7CiBleHRlcm4gUGxhbm5lZFN0bXQgKlBvcnRhbEdldFByaW1h cnlTdG10KFBvcnRhbCBwb3J0YWwpOwogZXh0ZXJuIHZvaWQgUG9ydGFsQ3JlYXRlSG9sZFN0b3Jl KFBvcnRhbCBwb3J0YWwpOwogZXh0ZXJuIHZvaWQgUG9ydGFsSGFzaFRhYmxlRGVsZXRlQWxsKHZv aWQpOwotLSAKMi4zNS4zCgo= --0000000000003174ab05ef0be339 Content-Type: application/octet-stream; name="v27-0002-Add-root_parent_relids-to-PartitionPruneResult.patch" Content-Disposition: attachment; filename="v27-0002-Add-root_parent_relids-to-PartitionPruneResult.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lba7elud1 RnJvbSA0ZWYxZDkxODQwNWE3YzdjNjNhM2U3Mzc2Y2NlZjU3Y2Y4NDQ3OTZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCAyIERlYyAyMDIyIDE5OjMyOjE0ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2MjcgMi8y XSBBZGQgcm9vdF9wYXJlbnRfcmVsaWRzIHRvIFBhcnRpdGlvblBydW5lUmVzdWx0CgpJdCdzIHNh bWUgYXMgdGhlIGNvcnJlc3BvbmRpbmcgUGFydGl0aW9uUHJ1bmVJbmZvJ3Mgcm9vdF9wYXJlbnRf cmVsaWRzLgpMaWtlIFBhcnRpdGlvblBydW5lSW5mby5yb290X3BhcmVudF9yZWxpZHMsIGl0J3Mg dGhlcmUgZm9yCmNyb3NzLWNoZWNraW5nIGEgUGFydGl0aW9uUHJ1bmVSZXN1bHQgZm91bmQgYXQg YSBnaXZlbiBwbGFuIG5vZGUncwpwYXJ0X3BydW5lX2luZGV4IGFjdHVhbGx5IG1hdGNoZXMgdGhl IHBsYW4gbm9kZS4KLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgfCAg MiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIHwgMTMgKysrKysrKysr KystLQogc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggICAgICAgIHwgIDcgKysrKysrKwog MyBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjTWFpbi5jCmluZGV4IDRkOGM4ZTJlNDMuLjMyOTNhNjVkMTUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYwpAQCAtMTQ3LDYgKzE0Nyw4IEBAIEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmlu ZyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQlQYXJ0 aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyA9IGxmaXJzdChsYyk7CiAJCVBhcnRpdGlvblBydW5l UmVzdWx0ICpwcnVuZXJlc3VsdCA9IG1ha2VOb2RlKFBhcnRpdGlvblBydW5lUmVzdWx0KTsKIAor CQlwcnVuZXJlc3VsdC0+cm9vdF9wYXJlbnRfcmVsaWRzID0KKwkJCWJtc19jb3B5KHBydW5laW5m by0+cm9vdF9wYXJlbnRfcmVsaWRzKTsKIAkJcHJ1bmVyZXN1bHQtPnZhbGlkX3N1YnBsYW5fb2Zm cyA9CiAJCQlFeGVjUGFydGl0aW9uRG9Jbml0aWFsUHJ1bmluZyhwbGFubmVkc3RtdCwgcGFyYW1z LCBwcnVuZWluZm8sCiAJCQkJCQkJCQkJICBzY2FuX2xlYWZwYXJ0X3J0aXMpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IGIwZWIxNWI5ODIuLjJlYWRjMzBlYzggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTE4NDMsOCArMTg0MywxNyBAQCBFeGVj SW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJICovCiAJaWYgKGVz dGF0ZS0+ZXNfcGFydF9wcnVuZV9yZXN1bHRzKQogCXsKLQkJcHJ1bmVyZXN1bHQgPSBsaXN0X250 aChlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cywgcGFydF9wcnVuZV9pbmRleCk7Ci0JCUFz c2VydChJc0EocHJ1bmVyZXN1bHQsIFBhcnRpdGlvblBydW5lUmVzdWx0KSk7CisJCXBydW5lcmVz dWx0ID0gbGlzdF9udGhfbm9kZShQYXJ0aXRpb25QcnVuZVJlc3VsdCwKKwkJCQkJCQkJCWVzdGF0 ZS0+ZXNfcGFydF9wcnVuZV9yZXN1bHRzLAorCQkJCQkJCQkJcGFydF9wcnVuZV9pbmRleCk7CisJ CWlmICghYm1zX2VxdWFsKHJvb3RfcGFyZW50X3JlbGlkcywgcHJ1bmVpbmZvLT5yb290X3BhcmVu dF9yZWxpZHMpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVEVS TkFMX0VSUk9SKSwKKwkJCQkJZXJybXNnX2ludGVybmFsKCJtaXNtYXRjaGluZyBQYXJ0aXRpb25Q cnVuZUluZm8gYW5kIFBhcnRpdGlvblBydW5lUmVzdWx0IGF0IHBhcnRfcHJ1bmVfaW5kZXggJWQi LAorCQkJCQkJCQkJcGFydF9wcnVuZV9pbmRleCksCisJCQkJCWVycmRldGFpbF9pbnRlcm5hbCgi cHJ1bnJlc3VsdCByZWxpZHMgJXMsIHBydW5laW5mbyByZWxpZHMgJXMiLAorCQkJCQkJCQkJICAg Ym1zVG9TdHJpbmcocHJ1bmVyZXN1bHQtPnJvb3RfcGFyZW50X3JlbGlkcyksCisJCQkJCQkJCQkg ICBibXNUb1N0cmluZyhwcnVuZWluZm8tPnJvb3RfcGFyZW50X3JlbGlkcykpKTsKIAl9CiAKIAlp ZiAocHJ1bmVyZXN1bHQgPT0gTlVMTCB8fCBwcnVuZWluZm8tPm5lZWRzX2V4ZWNfcHJ1bmluZykK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggNzE0ZTJjZjJjNy4uZWQ2NjRjNTQ2OSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGxhbm5vZGVzLmgKQEAgLTE1ODAsNiArMTU4MCwxMiBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRp b25QcnVuZVN0ZXBDb21iaW5lCiAgKiBUaGUgcmVzdWx0IG9mIHBlcmZvcm1pbmcgRXhlY1BhcnRp dGlvbkRvSW5pdGlhbFBydW5pbmcoKSBvbiBhIGdpdmVuCiAgKiBQYXJ0aXRpb25QcnVuZUluZm8u CiAgKgorICogcm9vdF9wYXJlbnRfcmVsaWRzIGlzIHNhbWUgYXMgUGFydGl0aW9uUHJ1bmVJbmZv LnJvb3RfcGFyZW50X3JlbGlkcy4gIEl0J3MKKyAqIHRoZXJlIGZvciBjcm9zcy1jaGVja2luZyBp biBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoKSB0aGF0IHRoZQorICogUGFydGl0aW9uUHJ1bmVS ZXN1bHQgYW5kIHRoZSBQYXJ0aXRpb25QcnVuZUluZm8gYXQgYSBnaXZlbiBpbmRleCBpbgorICog RVN0YXRlLmVzX3BhcnRfcHJ1bmVfcmVzdWx0cyBhbmQgRVN0YXRlLmVzX3BhcnRfcHJ1bmVfaW5m b3MsIHJlc3BlY3RpdmVseSwKKyAqIGJlbG9uZyB0byB0aGUgc2FtZSBwYXJlbnQgcGxhbiBub2Rl LgorICoKICAqIHZhbGlkX3N1YnBsYW5zX29mZnMgY29udGFpbnMgdGhlIGluZGV4ZXMgb2Ygc3Vi cGxhbnMgcmVtYWluaW5nIGFmdGVyCiAgKiBwZXJmb3JtaW5nIGluaXRpYWwgcHJ1bmluZyBieSBj YWxsaW5nIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucygpIG9uIHRoZQogICogUGFydGl0aW9uUHJ1 bmVJbmZvLgpAQCAtMTU5Nyw2ICsxNjAzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1 bmVSZXN1bHQKIHsKIAlOb2RlVGFnCQl0eXBlOwogCisJQml0bWFwc2V0CSAgICpyb290X3BhcmVu dF9yZWxpZHM7CiAJQml0bWFwc2V0CSAgICp2YWxpZF9zdWJwbGFuX29mZnM7CiB9IFBhcnRpdGlv blBydW5lUmVzdWx0OwogCi0tIAoyLjM1LjMKCg== --0000000000003174ab05ef0be339--