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 1oBW2y-0001kF-Mx for pgsql-hackers@arkaria.postgresql.org; Wed, 13 Jul 2022 06:40:33 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oBW2x-00047i-IT for pgsql-hackers@arkaria.postgresql.org; Wed, 13 Jul 2022 06:40:31 +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 1oBW2w-00047Z-Jp for pgsql-hackers@lists.postgresql.org; Wed, 13 Jul 2022 06:40:31 +0000 Received: from mail-vs1-xe34.google.com ([2607:f8b0:4864:20::e34]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1oBW2t-0001iB-Uq for pgsql-hackers@postgresql.org; Wed, 13 Jul 2022 06:40:29 +0000 Received: by mail-vs1-xe34.google.com with SMTP id l190so9924185vsc.0 for ; Tue, 12 Jul 2022 23:40:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=/AXSiHpvumlIvngsXJq/ZUtiFfWjVjKwJAnF/N/cfwE=; b=EA5pMfFq8vzXY1WrDroRbi+5a/QGqlztndBvvuhNqbKXC09J/atKiFmI+IJYADCwhO J6H+r6V60jcoUeLePAJqlmpJ+Qj6lXebw2BmELX9SAwD5ZIcduviUbYTsTOSLYSxopyK zZTTk+Dr9N+JSxU9j9/jQoHh2N+LH6ZIzFqpAjXmrhtKGvQSQh5DX74tgZRZprTXBycM BZUJ50wR+VYTBnncsJx/IMC1ql3y7v+/WRrl0W17qAtAbTs2AilzFRcG1GiDeGRL/+0l aYz9TM8kDcA2AYhWTvwXU1P2Ac1e9bmsQXFcs8FDj602fDcwv1ETwtyn1ilQoFoxMIz1 /lEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=/AXSiHpvumlIvngsXJq/ZUtiFfWjVjKwJAnF/N/cfwE=; b=1Y5X3GApBwSdWp2SH+2wbSzL5OU9dXwrwg6+s7RkDnOosIWBOtUUOkdDLoPpgnjj/M l2q8sruFNE+OZ6xB/GP1mf5cKUZEKQgmDNYuqOElkI9rqBqnSKBdKjtRgxBWB/jehjpZ nZwiSPRcug6byU506fN9lhwyJ7Km0WZ6+E9VUDiOEbMqwsyVR2b8lbx9bkgQ+EjbWtMJ WYRUIAryJ6cAKintgnwsAvfp5tjBj/3rCESLsLJUOB/sHE6Amr/7E24qtX8rP2frmJBC CYWBCEzcBqN1jDigyyCjvEZjUPdjua1ct/SceSUEC3L/m325ygCF4y81/XphMFQ8Ep3Y AUiA== X-Gm-Message-State: AJIora+kbbJDVlQW53QQq16H0sw8hSRASgJVtuZD/6DKW5NHvqn16kuF 3osovIE09gPSEmd4q2bqJgrqratlnFxmnOmcDcg= X-Google-Smtp-Source: AGRyM1s+RfOBysnRC/HWVI3UomXw12VyugEauPyBsRSSzBMmUOCPqDL5cW3Lmtc1geBIR0qVfRe4v2wJfvs46ZZNu1Y= X-Received: by 2002:a67:c58b:0:b0:354:37fb:d7cb with SMTP id h11-20020a67c58b000000b0035437fbd7cbmr567268vsk.19.1657694427164; Tue, 12 Jul 2022 23:40:27 -0700 (PDT) MIME-Version: 1.0 References: <215356.1647286703@sss.pgh.pa.us> In-Reply-To: From: Amit Langote Date: Wed, 13 Jul 2022 15:40:10 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Jacob Champion Cc: Zhihong Yu , David Rowley , Robert Haas , Tom Lane , PostgreSQL-development Content-Type: multipart/mixed; boundary="0000000000007ac1f305e3aa0ff6" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007ac1f305e3aa0ff6 Content-Type: text/plain; charset="UTF-8" Rebased over 964d01ae90c. -- Thanks, Amit Langote EDB: http://www.enterprisedb.com --0000000000007ac1f305e3aa0ff6 Content-Type: application/octet-stream; name="v18-0002-Optimize-AcquireExecutorLocks-by-locking-only-un.patch" Content-Disposition: attachment; filename="v18-0002-Optimize-AcquireExecutorLocks-by-locking-only-un.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l5j8fq0e0 RnJvbSA1NjcwNTkwNTdlZTM1YmNkOGNhMDY2ZjQ2ZDRjNmIyMzY0MWFmMDkwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBEZWMgMjAyMSAxNjo1NToxNyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjE4IDIv Ml0gT3B0aW1pemUgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBieSBsb2NraW5nIG9ubHkKIHVucHJ1 bmVkIHBhcnRpdGlvbnMKClRoaXMgY29tbWl0IHRlYWNoZXMgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo KSB0byBwZXJmb3JtIGluaXRpYWwKcGFydGl0aW9uIHBydW5pbmcgdG8gbm90aW9uYWxseSBlbGlt aW5hdGUgdGhlIHN1Ym5vZGVzIGNvbnRhaW5lZCBpbiBhCmdlbmVyaWMgY2FjaGVkIHBsYW4gdGhh dCBuZWVkIG5vdCBiZSBpbml0aWFsaXplZCBkdXJpbmcgdGhlIGFjdHVhbApleGVjdXRpb24gb2Yg dGhlIHBsYW4gYW5kIHNraXAgbG9ja2luZyB0aGUgcGFydGl0aW9uIHNjYW5uZWQgYnkgdGhvc2UK c3Vibm9kZXMuCgpUaGUgcmVzdWx0IG9mIHBlcmZvcm1pbmcgaW5pdGlhbCBwYXJ0aXRpb24gcHJ1 bmluZyB0aGlzIHdheSBiZWZvcmUgdGhlCmFjdHVhbCBleGVjdXRpb24gaGFzIHN0YXJ0ZWQgaXMg bWFkZSBhdmFpbGFibGUgdG8gdGhlIGFjdHVhbCBleGVjdXRpb24gdmlhClBhcnRpdGlvblBydW5l UmVzdWx0LCBtYWRlIGF2YWlsYWJsZSBhbG9uZyB3aXRoIHRoZSBQbGFubmVkU3RtdCBieSB0aGUK Y2FsbGVycyBvZiB0aGUgZXhlY3V0b3IgdGhhdCB1c2VkIHBsYW5jYWNoZS5jIHRvIGdldCB0aGUg cGxhbi4gIEl0IGlzIE5VTEwKaW4gdGhlIGNhc2VzIGluIHdoaWNoIHRoZSBwbGFuIGlzIG9idGFp bmVkIGJ5IGNhbGxpbmcgdGhlIHBsYW5uZXIKZGlyZWN0bHkgb3IgaWYgdGhlIHBsYW4gb2J0YWlu ZWQgYnkgcGxhbmNhY2hlLmMgaXMgbm90IGEgZ2VuZXJpYyBvbmUuCi0tLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weXRvLmMgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2NyZWF0ZWFzLmMgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMgICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgICAg ICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICB8ICAyNiArKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRSAgICAgICAgICAgIHwgIDMyICsrKysKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgIHwgIDUzICsrKysrKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgfCAgMjcgKystCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFydGl0aW9uLmMgICB8IDIzNCArKysrKysrKysrKysrKysrKysrKystLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUFwcGVuZC5jICAgICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVNZXJnZUFwcGVuZC5jIHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyAg ICAgICAgICAgICB8ICAyNyArKy0KIHNyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jICAgICAg ICAgIHwgICAxIC0KIHNyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMgICAgICAgICAgIHwgICAx IC0KIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICAgIHwgIDI5ICsrKwogc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgfCAgIDIgKwogc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jICAgfCAgNDYgKysrKysKIHNyYy9iYWNrZW5kL3BhcnRp dGlvbmluZy9wYXJ0cHJ1bmUuYyAgIHwgIDQxICsrKystCiBzcmMvYmFja2VuZC90Y29wL3Bvc3Rn cmVzLmMgICAgICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyAgICAg ICAgICAgICAgfCAgMjggKystCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyAg ICB8IDE4NyArKysrKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0 YWxtZW0uYyAgICAgfCAgMTkgKysKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCAgICAg ICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmggICB8ICAg OSArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCAgICAgICAgfCAgIDMgKwogc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgfCAgMjcgKysrCiBzcmMvaW5jbHVkZS9ub2Rlcy9u b2Rlcy5oICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMu aCAgICAgICAgICB8ICAxMyArKwogc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggICAgICAg ICAgfCAgMjEgKysrCiBzcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCAgICAgICAgICB8ICAg MyArLQogc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggICAgICAgICAgICAgfCAgIDMgKwogMzQg ZmlsZXMgY2hhbmdlZCwgNzgyIGluc2VydGlvbnMoKyksIDk4IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY29weXRvLmMKaW5kZXggZmNhMjlhOWExMC4uZDgzOTUxNzY5MyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29w eXRvLmMKQEAgLTU0MSw3ICs1NDEsNyBAQCBCZWdpbkNvcHlUbyhQYXJzZVN0YXRlICpwc3RhdGUs CiAJCSgoRFJfY29weSAqKSBkZXN0KS0+Y3N0YXRlID0gY3N0YXRlOwogCiAJCS8qIENyZWF0ZSBh IFF1ZXJ5RGVzYyByZXF1ZXN0aW5nIG5vIG91dHB1dCAqLwotCQljc3RhdGUtPnF1ZXJ5RGVzYyA9 IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4dCwKKwkJY3N0YXRlLT5x dWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwgcHN0YXRlLT5wX3NvdXJjZXRl eHQsCiAJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJCQkJCUludmFsaWRT bmFwc2hvdCwKIAkJCQkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3Jl YXRlYXMuYwppbmRleCA5YWJiYjZiNTU1Li5mNjYwN2YyNDU0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0 ZWFzLmMKQEAgLTMyNSw3ICszMjUsNyBAQCBFeGVjQ3JlYXRlVGFibGVBcyhQYXJzZVN0YXRlICpw c3RhdGUsIENyZWF0ZVRhYmxlQXNTdG10ICpzdG10LAogCQlVcGRhdGVBY3RpdmVTbmFwc2hvdENv bW1hbmRJZCgpOwogCiAJCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0cHV0 IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2Mo cGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVz YyhwbGFuLCBOVUxMLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJCUdldEFjdGl2ZVNu YXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlF bnYsIDApOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggZTI5YzJhZTIwNi4uZTQxYjEzYTNl YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtNDA3LDcgKzQwNyw3IEBAIEV4cGxhaW5PbmVR dWVyeShRdWVyeSAqcXVlcnksIGludCBjdXJzb3JPcHRpb25zLAogCQl9CiAKIAkJLyogcnVuIGl0 IChpZiBuZWVkZWQpIGFuZCBwcm9kdWNlIG91dHB1dCAqLwotCQlFeHBsYWluT25lUGxhbihwbGFu LCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlFbnYsCisJCUV4cGxhaW5PbmVQ bGFuKHBsYW4sIE5VTEwsIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwK IAkJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCkp OwogCX0KIH0KQEAgLTUxNSw3ICs1MTUsOCBAQCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGls aXR5U3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKICAqIHRvIGNhbGwg aXQuCiAgKi8KIHZvaWQKLUV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwg SW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKK0V4cGxhaW5PbmVQbGFuKFBsYW5u ZWRTdG10ICpwbGFubmVkc3RtdCwgUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBhcnRfcHJ1bmVfcmVz dWx0LAorCQkJICAgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJCSAgIGNv bnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSAgIFF1ZXJ5 RW52aXJvbm1lbnQgKnF1ZXJ5RW52LCBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24sCiAJ CQkgICBjb25zdCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2UpCkBAIC01NjMsNyArNTY0LDcgQEAgRXhw bGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBF eHBsYWluU3RhdGUgKmVzLAogCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKIAogCS8qIENyZWF0ZSBh IFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5ICovCi0JcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNj KHBsYW5uZWRzdG10LCBxdWVyeVN0cmluZywKKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2Mo cGxhbm5lZHN0bXQsIHBhcnRfcHJ1bmVfcmVzdWx0LCBxdWVyeVN0cmluZywKIAkJCQkJCQkJR2V0 QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0LCBwYXJhbXMs IHF1ZXJ5RW52LCBpbnN0cnVtZW50X29wdGlvbik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2V4dGVuc2lvbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMK aW5kZXggM2RiODU5YzNlYS4uNjMxY2MwNzIxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXh0ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMK QEAgLTc3Niw3ICs3NzYsNyBAQCBleGVjdXRlX3NxbF9zdHJpbmcoY29uc3QgY2hhciAqc3FsKQog CQkJewogCQkJCVF1ZXJ5RGVzYyAgKnFkZXNjOwogCi0JCQkJcWRlc2MgPSBDcmVhdGVRdWVyeURl c2Moc3RtdCwKKwkJCQlxZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LCBOVUxMLAogCQkJCQkJ CQkJCXNxbCwKIAkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBOVUxMLAogCQkJCQkJCQkJ CWRlc3QsIE5VTEwsIE5VTEwsIDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv bWF0dmlldy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCmluZGV4IDlhYzAzODM0 NTkuLmIwZWQ5NmU1NmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKQEAgLTQwOCw3ICs0MDgsNyBA QCByZWZyZXNoX21hdHZpZXdfZGF0YWZpbGwoRGVzdFJlY2VpdmVyICpkZXN0LCBRdWVyeSAqcXVl cnksCiAJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKIAogCS8qIENyZWF0ZSBhIFF1 ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCXF1 ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBxdWVyeVN0cmluZywKKwlxdWVyeURlc2Mg PSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFj dGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgTlVMTCwgTlVM TCwgMCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCAyMzMzYWFlNDY3Li44MzQ2NWU0MGY4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCkBAIC0xNTUsNiArMTU1LDcgQEAgRXhlY3V0ZVF1ZXJ5 KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAlQcmVwYXJlZFN0YXRlbWVudCAqZW50cnk7CiAJQ2FjaGVk UGxhbiAqY3BsYW47CiAJTGlzdAkgICAqcGxhbl9saXN0OworCUxpc3QJICAgKnBhcnRfcHJ1bmVf cmVzdWx0X2xpc3Q7CiAJUGFyYW1MaXN0SW5mbyBwYXJhbUxJID0gTlVMTDsKIAlFU3RhdGUJICAg KmVzdGF0ZSA9IE5VTEw7CiAJUG9ydGFsCQlwb3J0YWw7CkBAIC0xOTMsNyArMTk0LDEwIEBAIEV4 ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkgICBlbnRyeS0+cGxhbnNv dXJjZS0+cXVlcnlfc3RyaW5nKTsKIAogCS8qIFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBpbmNyZW1l bnQgcGxhbiByZWZjb3VudCBmb3IgcG9ydGFsICovCi0JY3BsYW4gPSBHZXRDYWNoZWRQbGFuKGVu dHJ5LT5wbGFuc291cmNlLCBwYXJhbUxJLCBOVUxMLCBOVUxMKTsKKwljcGxhbiA9IEdldENhY2hl ZFBsYW4oZW50cnktPnBsYW5zb3VyY2UsIHBhcmFtTEksIE5VTEwsIE5VTEwsCisJCQkJCQkgICZw YXJ0X3BydW5lX3Jlc3VsdF9saXN0KTsKKwlBc3NlcnQobGlzdF9sZW5ndGgoY3BsYW4tPnN0bXRf bGlzdCkgPT0KKwkJICAgbGlzdF9sZW5ndGgocGFydF9wcnVuZV9yZXN1bHRfbGlzdCkpOwogCXBs YW5fbGlzdCA9IGNwbGFuLT5zdG10X2xpc3Q7CiAKIAkvKgpAQCAtMjA3LDYgKzIxMSw5IEBAIEV4 ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCSAgcGxhbl9saXN0LAogCQkJCQkg IGNwbGFuKTsKIAorCS8qIENvcHkgUGFydGl0aW9uUHJ1bmVSZXN1bHRzIGludG8gdGhlIHBvcnRh bCdzIGNvbnRleHQuICovCisJUG9ydGFsU3RvcmVQYXJ0aXRpb25QcnVuZVJlc3VsdHMocG9ydGFs LCBwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KTsKKwogCS8qCiAJICogRm9yIENSRUFURSBUQUJMRSAu Li4gQVMgRVhFQ1VURSwgd2UgbXVzdCB2ZXJpZnkgdGhhdCB0aGUgcHJlcGFyZWQKIAkgKiBzdGF0 ZW1lbnQgaXMgb25lIHRoYXQgcHJvZHVjZXMgdHVwbGVzLiAgQ3VycmVudGx5IHdlIGluc2lzdCB0 aGF0IGl0IGJlCkBAIC01NzYsNyArNTgzLDkgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRl U3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJY29u c3QgY2hhciAqcXVlcnlfc3RyaW5nOwogCUNhY2hlZFBsYW4gKmNwbGFuOwogCUxpc3QJICAgKnBs YW5fbGlzdDsKLQlMaXN0Q2VsbCAgICpwOworCUxpc3QJICAgKnBhcnRfcHJ1bmVfcmVzdWx0X2xp c3Q7CisJTGlzdENlbGwgICAqcCwKKwkJCSAgICpwcDsKIAlQYXJhbUxpc3RJbmZvIHBhcmFtTEkg PSBOVUxMOwogCUVTdGF0ZQkgICAqZXN0YXRlID0gTlVMTDsKIAlpbnN0cl90aW1lCXBsYW5zdGFy dDsKQEAgLTYxOSw3ICs2MjgsMTAgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAq ZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAKIAkvKiBSZXBs YW4gaWYgbmVlZGVkLCBhbmQgYWNxdWlyZSBhIHRyYW5zaWVudCByZWZjb3VudCAqLwogCWNwbGFu ID0gR2V0Q2FjaGVkUGxhbihlbnRyeS0+cGxhbnNvdXJjZSwgcGFyYW1MSSwKLQkJCQkJCSAgQ3Vy cmVudFJlc291cmNlT3duZXIsIHF1ZXJ5RW52KTsKKwkJCQkJCSAgQ3VycmVudFJlc291cmNlT3du ZXIsIHF1ZXJ5RW52LAorCQkJCQkJICAmcGFydF9wcnVuZV9yZXN1bHRfbGlzdCk7CisJQXNzZXJ0 KGxpc3RfbGVuZ3RoKGNwbGFuLT5zdG10X2xpc3QpID09CisJCSAgIGxpc3RfbGVuZ3RoKHBhcnRf cHJ1bmVfcmVzdWx0X2xpc3QpKTsKIAogCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQocGxhbmR1cmF0 aW9uKTsKIAlJTlNUUl9USU1FX1NVQlRSQUNUKHBsYW5kdXJhdGlvbiwgcGxhbnN0YXJ0KTsKQEAg LTYzNCwxMyArNjQ2LDE1IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNz dG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCXBsYW5fbGlzdCA9IGNw bGFuLT5zdG10X2xpc3Q7CiAKIAkvKiBFeHBsYWluIGVhY2ggcXVlcnkgKi8KLQlmb3JlYWNoKHAs IHBsYW5fbGlzdCkKKwlmb3Jib3RoKHAsIHBsYW5fbGlzdCwgcHAsIHBhcnRfcHJ1bmVfcmVzdWx0 X2xpc3QpCiAJewogCQlQbGFubmVkU3RtdCAqcHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3Rt dCwgcCk7CisJCVBhcnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdCA9IGxmaXJz dF9ub2RlKFBhcnRpdGlvblBydW5lUmVzdWx0LCBwcCk7CiAKIAkJaWYgKHBzdG10LT5jb21tYW5k VHlwZSAhPSBDTURfVVRJTElUWSkKLQkJCUV4cGxhaW5PbmVQbGFuKHBzdG10LCBpbnRvLCBlcywg cXVlcnlfc3RyaW5nLCBwYXJhbUxJLCBxdWVyeUVudiwKLQkJCQkJCSAgICZwbGFuZHVyYXRpb24s IChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpKTsKKwkJCUV4cGxhaW5PbmVQbGFuKHBz dG10LCBwYXJ0X3BydW5lX3Jlc3VsdCwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywKKwkJCQkJCSAg IHBhcmFtTEksIHF1ZXJ5RW52LCAmcGxhbmR1cmF0aW9uLAorCQkJCQkJICAgKGVzLT5idWZmZXJz ID8gJmJ1ZnVzYWdlIDogTlVMTCkpOwogCQllbHNlCiAJCQlFeHBsYWluT25lVXRpbGl0eShwc3Rt dC0+dXRpbGl0eVN0bXQsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsCiAJCQkJCQkJICBwYXJhbUxJ LCBxdWVyeUVudik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUgYi9z cmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKaW5kZXggMGI1MTgzZmM0YS4uOTUzYTQ3NmVhNSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL1JFQURNRQpAQCAtNjUsNiArNjUsMzQgQEAgZm91bmQgdGhlcmUuICBUaGlzIGN1 cnJlbnRseSBvbmx5IG9jY3VycyBmb3IgQXBwZW5kIGFuZCBNZXJnZUFwcGVuZCBub2Rlcy4gIElu CiB0aGlzIGNhc2UgdGhlIG5vbi1yZXF1aXJlZCBzdWJwbGFucyBhcmUgaWdub3JlZCBhbmQgdGhl IGV4ZWN1dG9yIHN0YXRlJ3MKIHN1Ym5vZGUgYXJyYXkgd2lsbCBiZWNvbWUgb3V0IG9mIHNlcXVl bmNlIHRvIHRoZSBwbGFuJ3Mgc3VicGxhbiBsaXN0LgogCitBY3R1YWxseSwgdGhlIHNvLWNhbGxl ZCBleGVjdXRpb24gdGltZSBwcnVuaW5nIG1heSBhbHNvIG9jY3VyIGV2ZW4gYmVmb3JlIHRoZQor ZXhlY3V0aW9uIGhhcyBzdGFydGVkLiAgT25lIGNhc2Ugd2hlcmUgdGhhdCBvY2N1cnMgaXMgd2hl biBhIGNhY2hlZCBnZW5lcmljCitwbGFuIGlzIGJlaW5nIHZhbGlkYXRlZCBmb3IgZXhlY3V0aW9u IGJ5IHBsYW5jYWNoZS5jOiBHZXRDYWNoZWRQbGFuKCksIHdoaWNoCit3b3JrcyBieSBsb2NraW5n IGFsbCB0aGUgcmVsYXRpb25zIHRoYXQgd2lsbCBiZSBzY2FubmVkIGJ5IHRoYXQgcGxhbi4gIElm IHRoZQorZ2VuZXJpYyBwbGFuIGNvbnRhaW5zIG5vZGVzIHRoYXQgY2FuIHBlcmZvcm0gZXhlY3V0 aW9uIHRpbWUgcGFydGl0aW9uIHBydW5pbmcKKyh0aGF0IGlzLCBjb250YWluIGEgUGFydGl0aW9u UHJ1bmVJbmZvKSwgYSBzdWJzZXQgb2YgcHJ1bmluZyBzdGVwcyBjb250YWluZWQKK2luIGEgZ2l2 ZW4gbm9kZSdzIFBhcnRpdGlvblBydW5lSW5mbyB0aGF0IGRvIG5vdCBkZXBlbmQgb24gdGhlIGV4 ZWN1dGlvbgorYWN0dWFsbHkgaGF2aW5nIHN0YXJ0ZWQgKGNhbGxlZCAiaW5pdGlhbCIgcHJ1bmlu ZyBzdGVwcykgYXJlIHBlcmZvcm1lZCBhdCB0aGlzCitwb2ludCB0byBmaWd1cmUgb3V0IHRoZSBt aW5pbWFsIHNldCBvZiBjaGlsZCBzdWJwbGFucyB0aGF0IHNhdGlzZnkgdGhvc2UKK3BydW5pbmcg c3RlcHMuICBBY3F1aXJlRXhlY3V0b3JMb2NrcygpIGxvb2tpbmcgYXQgYSBnaXZlbiBwbGFuIHRy ZWUgd2lsbCB0aGVuCitsb2NrIG9ubHkgdGhlIHJlbGF0aW9ucyBzY2FubmVkIGJ5IHRoZSBjaGls ZCBzdWJwbGFucyB0aGF0IHN1cnZpdmVkIHN1Y2gKK3BydW5pbmcsIGFsb25nIHdpdGggdGhvc2Ug cHJlc2VudCBpbiBQbGFubmVkU3RtdC5taW5Mb2NrUmVsaWRzLiAgTm90ZSB0aGF0IHRoZQorc3Vi cGxhbnMgYXJlIG9ubHkgbm90aW9uYWxseSBwcnVuZWQgaW4gdGhhdCB0aGV5IGFyZSBub3QgcmVt b3ZlZCBmcm9tIHRoZSBwbGFuCit0cmVlIGFzIHN1Y2guCisKK1RvIHByZXZlbnQgdGhlIGV4ZWN1 dG9yIGFuZCBhbnkgdGhpcmQgcGFydHkgZXhlY3V0aW9uIGNvZGUgdGhhdCBjYW4gbG9vayBhdAor dGhlIHBsYW4gdHJlZSBmcm9tIHRyeWluZyB0byBleGVjdXRlIHRoZSBzdWJwbGFucyB0aGF0IHdl cmUgcHJ1bmVkIGFzCitkZXNjcmliZWQgYWJvdmUsIHRoZSByZXN1bHQgb2YgcHJ1bmluZyBpcyBw YXNzZWQgdG8gdGhlIGV4ZWN1dG9yIGFzIGEKK1BhcnRpdGlvblBydW5lUmVzdWx0IG5vZGUgdmlh IHRoZSBRdWVyeURlc2MuICBJdCBjb25zaXN0cyBvZiB0aGUgc2V0IG9mCitpbmRleGVzIG9mIHN1 cnZpdmluZyBzdWJwbGFucyBpbiB0aGVpciByZXNwZWN0aXZlIHBhcmVudCBwbGFuIG5vZGUncyBs aXN0IG9mCitjaGlsZCBzdWJwbGFucywgc2F2ZWQgYXMgYSBsaXN0IG9mIGJpdG1hcHNldHMsIHdp dGggb25lIGVsZW1lbnQgZm9yIGV2ZXJ5CitwYXJlbnQgcGxhbiBub2RlIHdob3NlIFBhcnRpdGlv blBydW5lSW5mbyBpcyBwcmVzZW50IGluCitQbGFubmVkU3RtdC5wYXJ0UHJ1bmVJbmZvcy4gIElu IG90aGVyIHdvcmRzLCB0aGUgZXhlY3V0b3Igc2hvdWxkIG5vdAorcmUtZXZhbHVhdGUgdGhlIHNl dCBvZiBpbml0aWFsbHkgdmFsaWQgc3VicGxhbnMgYnkgcmVkb2luZyB0aGUgaW5pdGlhbCBwcnVu aW5nCitpZiBpdCB3YXMgYWxyZWFkeSBkb25lIGJ5IEFjcXVpcmVFeGVjdXRvckxvY2tzKCksIGJl Y2F1c2UgdGhlIHJlLWV2YWx1YXRpb24gbWF5Cit2ZXJ5IHdlbGwgZW5kIHVwIHJlc3VsdGluZyBp biBhIGRpZmZlcmVudCBzZXQgb2Ygc3VicGxhbnMsIGNvbnRhaW5pbmcgc29tZQord2hvc2UgcmVs YXRpb25zIHdlcmUgbm90IGxvY2tlZCBieSBBY3F1aXJlRXhlY3V0b3JMb2NrcygpLgorCiBFYWNo IFBsYW4gbm9kZSBtYXkgaGF2ZSBleHByZXNzaW9uIHRyZWVzIGFzc29jaWF0ZWQgd2l0aCBpdCwg dG8gcmVwcmVzZW50CiBpdHMgdGFyZ2V0IGxpc3QsIHF1YWxpZmljYXRpb24gY29uZGl0aW9ucywg ZXRjLiAgVGhlc2UgdHJlZXMgYXJlIGFsc28KIHJlYWQtb25seSB0byB0aGUgZXhlY3V0b3IsIGJ1 dCB0aGUgZXhlY3V0b3Igc3RhdGUgZm9yIGV4cHJlc3Npb24gZXZhbHVhdGlvbgpAQCAtMjg2LDYg KzMxNCwxMCBAQCBRdWVyeSBQcm9jZXNzaW5nIENvbnRyb2wgRmxvdwogCiBUaGlzIGlzIGEgc2tl dGNoIG9mIGNvbnRyb2wgZmxvdyBmb3IgZnVsbCBxdWVyeSBwcm9jZXNzaW5nOgogCisgIFsgRXhl Y3V0b3JEb0luaXRpYWxQcnVuaW5nIF0gLS0tIGFuIG9wdGlvbmFsIHN0ZXAgdG8gcGVyZm9ybSBp bml0aWFsCisJCXBhcnRpdGlvbiBwcnVuaW5nIG9uIHRoZSBwbGFuIHRyZWUgdGhlIHJlc3VsdCBv ZiB3aGljaCBpcyBwYXNzZWQKKwkJdG8gdGhlIGV4ZWN1dG9yIHZpYSBRdWVyeURlc2MKKwogCUNy ZWF0ZVF1ZXJ5RGVzYwogCiAJRXhlY3V0b3JTdGFydApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5k ZXggNzJmYzI3MzUyNC4uNDU4MjQ2MjRmOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC00 OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvbWF0dmlldy5oIgogI2luY2x1ZGUgImNv bW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjZGVidWcuaCIKKyNpbmNs dWRlICJleGVjdXRvci9leGVjUGFydGl0aW9uLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZVN1 YnBsYW4uaCIKICNpbmNsdWRlICJmb3JlaWduL2Zkd2FwaS5oIgogI2luY2x1ZGUgImppdC9qaXQu aCIKQEAgLTEwNCw2ICsxMDUsNTYgQEAgc3RhdGljIHZvaWQgRXZhbFBsYW5RdWFsU3RhcnQoRVBR U3RhdGUgKmVwcXN0YXRlLCBQbGFuICpwbGFuVHJlZSk7CiAKIC8qIGVuZCBvZiBsb2NhbCBkZWNs cyAqLwogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nCisgKgorICoJ CUZvciBlYWNoIHBsYW4gdHJlZSBub2RlIHRoYXQgaGFzIGJlZW4gYXNzaWduZWQgYSBQYXJ0aXRp b25QcnVuZUluZm8sCisgKgkJdGhpcyBwZXJmb3JtcyBpbml0aWFsIHBhcnRpdGlvbiBwcnVuaW5n IHVzaW5nIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyAqCQl0aGVyZWluIHRvIGRldGVybWlu ZSB0aGUgc2V0IG9mIGNoaWxkIHN1YnBsYW5zIHRoYXQgc2F0aXNmeSB0aGUgaW5pdGlhbAorICoJ CXBydW5pbmcgc3RlcHMsIHRvIGJlIHJldHVybmVkIGFzIGEgYml0bWFwc2V0IG9mIHRoZWlyIGlu ZGV4ZXMgaW4gdGhlCisgKgkJbm9kZSdzIGxpc3Qgb2YgY2hpbGQgc3VicGxhbnMgKGZvciBleGFt cGxlLCBhbiBBcHBlbmQncyBhcHBlbmRwbGFucykuCisgKgorICogUmV0dXJuIHZhbHVlIGlzIGEg UGFydGl0aW9uUHJ1bmVSZXN1bHQgbm9kZSB0aGF0IGNvbnRhaW5zIGEgbGlzdCBvZiB0aG9zZQor ICogYml0bWFwc2V0cywgd2l0aCBvbmUgZWxlbWVudCBmb3IgZXZlcnkgUGFydGl0aW9uUHJ1bmVJ bmZvLCBhbmQgYSBiaXRtYXBzZXQKKyAqIG9mIHRoZSBSVCBpbmRleGVzIG9mIGFsbCB0aGUgbGVh ZiBwYXJ0aXRpb25zIHNjYW5uZWQgYnkgdGhvc2UgY2hvc2VuCisgKiBzdWJwbGFucy4gIE5vdGUg dGhhdCB0aGUgbGF0dGVyIGlzIHNoYXJlZCBhY3Jvc3MgYWxsIFBhcnRpdGlvblBydW5lSW5mb3Mu CisgKgorICogVGhlIGV4ZWN1dG9yIG11c3Qgc2VlIHRoZSBleGFjdGx5IHNhbWUgc2V0IG9mIHN1 YnBsYW5zIGFzIHZhbGlkIGZvcgorICogZXhlY3V0aW9uIHdoZW4gZG9pbmcgRXhlY0luaXROb2Rl KCkgb24gdGhlIHBsYW4gbm9kZXMgd2hvc2UKKyAqIFBhcnRpdGlvblBydW5lSW5mb3MgYXJlIHBy b2Nlc3NlZCBoZXJlLiAgU28sIGl0IG11c3QgZ2V0IHRoZSBzZXQgZnJvbSB0aGUKKyAqIGFmb3Jl bWVudGlvbmVkIFBhcnRpdGlvblBydW5lUmVzdWx0LCBpbnN0ZWFkIG9mIGNvbXB1dGluZyBpdCBh bGwgb3ZlcgorICogYWdhaW4gYnkgcmVkb2luZyB0aGUgaW5pdGlhbCBwcnVuaW5nLiAgSXQncyB0 aGUgY2FsbGVyJ3Mgam9iIHRvIHBhc3MgdGhlCisgKiBQYXJ0aXRpb25QcnVuZVJlc3VsdCB0byB0 aGUgZXhlY3V0b3IuCisgKgorICogTm90ZTogUGFydGl0aW9uZWQgdGFibGVzIG1lbnRpb25lZCBp biBQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyBub2RlcyB0aGF0CisgKiBkcml2ZSB0aGUgcHJ1bmlu ZyB3aWxsIGJlIGxvY2tlZCBiZWZvcmUgZG9pbmcgdGhlIHBydW5pbmcuCisgKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Ki8KK1BhcnRpdGlvblBydW5lUmVzdWx0ICoKK0V4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZyhQbGFu bmVkU3RtdCAqcGxhbm5lZHN0bXQsIFBhcmFtTGlzdEluZm8gcGFyYW1zKQoreworCVBhcnRpdGlv blBydW5lUmVzdWx0ICpyZXN1bHQ7CisJTGlzdENlbGwgKmxjOworCisJLyogT25seSBnZXQgaGVy ZSBpZiB0aGVyZSBpcyBhbnkgcHJ1bmluZyB0byBkby4gKi8KKwlBc3NlcnQocGxhbm5lZHN0bXQt PmNvbnRhaW5zSW5pdGlhbFBydW5pbmcpOworCisJcmVzdWx0ID0gbWFrZU5vZGUoUGFydGl0aW9u UHJ1bmVSZXN1bHQpOworCWZvcmVhY2gobGMsIHBsYW5uZWRzdG10LT5wYXJ0UHJ1bmVJbmZvcykK Kwl7CisJCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvID0gbGZpcnN0KGxjKTsKKwkJQml0 bWFwc2V0ICp2YWxpZF9zdWJwbGFuX29mZnM7CisKKwkJdmFsaWRfc3VicGxhbl9vZmZzID0KKwkJ CUV4ZWNQYXJ0aXRpb25Eb0luaXRpYWxQcnVuaW5nKHBsYW5uZWRzdG10LCBwYXJhbXMsIHBydW5l aW5mbywKKwkJCQkJCQkJCQkgICZyZXN1bHQtPnNjYW5fbGVhZnBhcnRfcnRpcyk7CisJCXJlc3Vs dC0+dmFsaWRfc3VicGxhbl9vZmZzX2xpc3QgPQorCQkJbGFwcGVuZChyZXN1bHQtPnZhbGlkX3N1 YnBsYW5fb2Zmc19saXN0LAorCQkJCQl2YWxpZF9zdWJwbGFuX29mZnMpOworCX0KKworCXJldHVy biByZXN1bHQ7Cit9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjdXRvclN0YXJ0CkBAIC04MDYsNiAr ODU3LDcgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiB7CiAJ Q21kVHlwZQkJb3BlcmF0aW9uID0gcXVlcnlEZXNjLT5vcGVyYXRpb247CiAJUGxhbm5lZFN0bXQg KnBsYW5uZWRzdG10ID0gcXVlcnlEZXNjLT5wbGFubmVkc3RtdDsKKwlQYXJ0aXRpb25QcnVuZVJl c3VsdCAqcGFydF9wcnVuZV9yZXN1bHQgPSBxdWVyeURlc2MtPnBhcnRfcHJ1bmVfcmVzdWx0Owog CVBsYW4JICAgKnBsYW4gPSBwbGFubmVkc3RtdC0+cGxhblRyZWU7CiAJTGlzdAkgICAqcmFuZ2VU YWJsZSA9IHBsYW5uZWRzdG10LT5ydGFibGU7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBxdWVyeURl c2MtPmVzdGF0ZTsKQEAgLTgyNiw2ICs4NzgsNyBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5 RGVzYywgaW50IGVmbGFncykKIAogCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBwbGFubmVkc3Rt dDsKIAllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MgPSBwbGFubmVkc3RtdC0+cGFydFBydW5l SW5mb3M7CisJZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdCA9IHBhcnRfcHJ1bmVfcmVzdWx0 OwogCiAJLyoKIAkgKiBOZXh0LCBidWlsZCB0aGUgRXhlY1Jvd01hcmsgYXJyYXkgZnJvbSB0aGUg UGxhblJvd01hcmsocyksIGlmIGFueS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5k ZXggZjczYjhjMjYwNy4uN2U2ZGFiNTYyMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVs LmMKQEAgLTY2LDYgKzY2LDcgQEAKICNkZWZpbmUgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQJCVVJ TlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwOCkKICNkZWZpbmUgUEFSQUxMRUxfS0VZX0pJVF9J TlNUUlVNRU5UQVRJT04gVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDA5KQogI2RlZmluZSBQ QVJBTExFTF9LRVlfV0FMX1VTQUdFCQkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDBBKQor I2RlZmluZSBQQVJBTExFTF9LRVlfUEFSVElUSU9OUFJVTkVSRVNVTFQJVUlOVDY0Q09OU1QoMHhF MDAwMDAwMDAwMDAwMDBCKQogCiAjZGVmaW5lIFBBUkFMTEVMX1RVUExFX1FVRVVFX1NJWkUJCTY1 NTM2CiAKQEAgLTE4Miw2ICsxODMsNyBAQCBFeGVjU2VyaWFsaXplUGxhbihQbGFuICpwbGFuLCBF U3RhdGUgKmVzdGF0ZSkKIAlwc3RtdC0+dHJhbnNpZW50UGxhbiA9IGZhbHNlOwogCXBzdG10LT5k ZXBlbmRzT25Sb2xlID0gZmFsc2U7CiAJcHN0bXQtPnBhcmFsbGVsTW9kZU5lZWRlZCA9IGZhbHNl OworCXBzdG10LT5jb250YWluc0luaXRpYWxQcnVuaW5nID0gZmFsc2U7CiAJcHN0bXQtPnBsYW5U cmVlID0gcGxhbjsKIAlwc3RtdC0+cGFydFBydW5lSW5mb3MgPSBlc3RhdGUtPmVzX3BhcnRfcHJ1 bmVfaW5mb3M7CiAJcHN0bXQtPnJ0YWJsZSA9IGVzdGF0ZS0+ZXNfcmFuZ2VfdGFibGU7CkBAIC01 OTcsMTIgKzU5OSwxNSBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0 ZSwgRVN0YXRlICplc3RhdGUsCiAJRml4ZWRQYXJhbGxlbEV4ZWN1dG9yU3RhdGUgKmZwZXM7CiAJ Y2hhcgkgICAqcHN0bXRfZGF0YTsKIAljaGFyCSAgICpwc3RtdF9zcGFjZTsKKwljaGFyCSAgICpw YXJ0X3BydW5lX3Jlc3VsdF9kYXRhOworCWNoYXIJICAgKnBhcnRfcHJ1bmVfcmVzdWx0X3NwYWNl OwogCWNoYXIJICAgKnBhcmFtbGlzdGluZm9fc3BhY2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdl X3NwYWNlOwogCVdhbFVzYWdlICAgKndhbHVzYWdlX3NwYWNlOwogCVNoYXJlZEV4ZWN1dG9ySW5z dHJ1bWVudGF0aW9uICppbnN0cnVtZW50YXRpb24gPSBOVUxMOwogCVNoYXJlZEppdEluc3RydW1l bnRhdGlvbiAqaml0X2luc3RydW1lbnRhdGlvbiA9IE5VTEw7CiAJaW50CQkJcHN0bXRfbGVuOwor CWludAkJCXBhcnRfcHJ1bmVfcmVzdWx0X2xlbjsKIAlpbnQJCQlwYXJhbWxpc3RpbmZvX2xlbjsK IAlpbnQJCQlpbnN0cnVtZW50YXRpb25fbGVuID0gMDsKIAlpbnQJCQlqaXRfaW5zdHJ1bWVudGF0 aW9uX2xlbiA9IDA7CkBAIC02MzEsNiArNjM2LDcgQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxh blN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCiAJLyogRml4IHVwIGFuZCBzZXJp YWxpemUgcGxhbiB0byBiZSBzZW50IHRvIHdvcmtlcnMuICovCiAJcHN0bXRfZGF0YSA9IEV4ZWNT ZXJpYWxpemVQbGFuKHBsYW5zdGF0ZS0+cGxhbiwgZXN0YXRlKTsKKwlwYXJ0X3BydW5lX3Jlc3Vs dF9kYXRhID0gbm9kZVRvU3RyaW5nKGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9yZXN1bHQpOwogCiAJ LyogQ3JlYXRlIGEgcGFyYWxsZWwgY29udGV4dC4gKi8KIAlwY3h0ID0gQ3JlYXRlUGFyYWxsZWxD b250ZXh0KCJwb3N0Z3JlcyIsICJQYXJhbGxlbFF1ZXJ5TWFpbiIsIG53b3JrZXJzKTsKQEAgLTY1 Nyw2ICs2NjMsMTEgQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUs IEVTdGF0ZSAqZXN0YXRlLAogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRv ciwgcHN0bXRfbGVuKTsKIAlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwg MSk7CiAKKwkvKiBFc3RpbWF0ZSBzcGFjZSBmb3Igc2VyaWFsaXplZCBQYXJ0aXRpb25QcnVuZVJl c3VsdC4gKi8KKwlwYXJ0X3BydW5lX3Jlc3VsdF9sZW4gPSBzdHJsZW4ocGFydF9wcnVuZV9yZXN1 bHRfZGF0YSkgKyAxOworCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwg cGFydF9wcnVuZV9yZXN1bHRfbGVuKTsKKwlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVz dGltYXRvciwgMSk7CisKIAkvKiBFc3RpbWF0ZSBzcGFjZSBmb3Igc2VyaWFsaXplZCBQYXJhbUxp c3RJbmZvLiAqLwogCXBhcmFtbGlzdGluZm9fbGVuID0gRXN0aW1hdGVQYXJhbUxpc3RTcGFjZShl c3RhdGUtPmVzX3BhcmFtX2xpc3RfaW5mbyk7CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4 dC0+ZXN0aW1hdG9yLCBwYXJhbWxpc3RpbmZvX2xlbik7CkBAIC03NTEsNiArNzYyLDEyIEBAIEV4 ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwK IAltZW1jcHkocHN0bXRfc3BhY2UsIHBzdG10X2RhdGEsIHBzdG10X2xlbik7CiAJc2htX3RvY19p bnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfUExBTk5FRFNUTVQsIHBzdG10X3NwYWNlKTsK IAorCS8qIFN0b3JlIHNlcmlhbGl6ZWQgUGFydGl0aW9uUHJ1bmVSZXN1bHQgKi8KKwlwYXJ0X3By dW5lX3Jlc3VsdF9zcGFjZSA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBwYXJ0X3BydW5l X3Jlc3VsdF9sZW4pOworCW1lbWNweShwYXJ0X3BydW5lX3Jlc3VsdF9zcGFjZSwgcGFydF9wcnVu ZV9yZXN1bHRfZGF0YSwgcGFydF9wcnVuZV9yZXN1bHRfbGVuKTsKKwlzaG1fdG9jX2luc2VydChw Y3h0LT50b2MsIFBBUkFMTEVMX0tFWV9QQVJUSVRJT05QUlVORVJFU1VMVCwKKwkJCQkgICBwYXJ0 X3BydW5lX3Jlc3VsdF9zcGFjZSk7CisKIAkvKiBTdG9yZSBzZXJpYWxpemVkIFBhcmFtTGlzdElu Zm8uICovCiAJcGFyYW1saXN0aW5mb19zcGFjZSA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9j LCBwYXJhbWxpc3RpbmZvX2xlbik7CiAJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExF TF9LRVlfUEFSQU1MSVNUSU5GTywgcGFyYW1saXN0aW5mb19zcGFjZSk7CkBAIC0xMjMyLDggKzEy NDksMTAgQEAgRXhlY1BhcmFsbGVsR2V0UXVlcnlEZXNjKHNobV90b2MgKnRvYywgRGVzdFJlY2Vp dmVyICpyZWNlaXZlciwKIAkJCQkJCSBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKQogewogCWNoYXIJ ICAgKnBzdG10c3BhY2U7CisJY2hhcgkgICAqcGFydF9wcnVuZV9yZXN1bHRfc3BhY2U7CiAJY2hh cgkgICAqcGFyYW1zcGFjZTsKIAlQbGFubmVkU3RtdCAqcHN0bXQ7CisJUGFydGl0aW9uUHJ1bmVS ZXN1bHQgKnBhcnRfcHJ1bmVfcmVzdWx0OwogCVBhcmFtTGlzdEluZm8gcGFyYW1MSTsKIAljaGFy CSAgICpxdWVyeVN0cmluZzsKIApAQCAtMTI0NCwxMiArMTI2MywxOCBAQCBFeGVjUGFyYWxsZWxH ZXRRdWVyeURlc2Moc2htX3RvYyAqdG9jLCBEZXN0UmVjZWl2ZXIgKnJlY2VpdmVyLAogCXBzdG10 c3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9QTEFOTkVEU1RNVCwgZmFs c2UpOwogCXBzdG10ID0gKFBsYW5uZWRTdG10ICopIHN0cmluZ1RvTm9kZShwc3RtdHNwYWNlKTsK IAorCS8qIFJlY29uc3RydWN0IGxlYWRlci1zdXBwbGllZCBQYXJ0aXRpb25QcnVuZVJlc3VsdC4g Ki8KKwlwYXJ0X3BydW5lX3Jlc3VsdF9zcGFjZSA9CisJCXNobV90b2NfbG9va3VwKHRvYywgUEFS QUxMRUxfS0VZX1BBUlRJVElPTlBSVU5FUkVTVUxULCBmYWxzZSk7CisJcGFydF9wcnVuZV9yZXN1 bHQgPSAoUGFydGl0aW9uUHJ1bmVSZXN1bHQgKikKKwkJc3RyaW5nVG9Ob2RlKHBhcnRfcHJ1bmVf cmVzdWx0X3NwYWNlKTsKKwogCS8qIFJlY29uc3RydWN0IFBhcmFtTGlzdEluZm8uICovCiAJcGFy YW1zcGFjZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1BBUkFNTElTVElORk8s IGZhbHNlKTsKIAlwYXJhbUxJID0gUmVzdG9yZVBhcmFtTGlzdCgmcGFyYW1zcGFjZSk7CiAKIAkv KiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeS4gKi8KLQlyZXR1cm4gQ3JlYXRlUXVl cnlEZXNjKHBzdG10LAorCXJldHVybiBDcmVhdGVRdWVyeURlc2MocHN0bXQsIHBhcnRfcHJ1bmVf cmVzdWx0LAogCQkJCQkJICAgcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBHZXRBY3RpdmVTbmFwc2hv dCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkgICByZWNlaXZlciwgcGFyYW1MSSwgTlVMTCwg aW5zdHJ1bWVudF9vcHRpb25zKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwppbmRl eCBiNTVjZGQyNTgwLi4yNGU2ZjZlOTg4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFydGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlv bi5jCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKICNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKKyNpbmNsdWRlICJw YXJzZXIvcGFyc2V0cmVlLmgiCiAjaW5jbHVkZSAicGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCIK ICNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGRlc2MuaCIKICNpbmNsdWRlICJwYXJ0aXRpb25p bmcvcGFydHBydW5lLmgiCkBAIC0xODUsNyArMTg2LDExIEBAIHN0YXRpYyBjaGFyICpFeGVjQnVp bGRTbG90UGFydGl0aW9uS2V5RGVzY3JpcHRpb24oUmVsYXRpb24gcmVsLAogc3RhdGljIExpc3Qg KmFkanVzdF9wYXJ0aXRpb25fY29sbm9zKExpc3QgKmNvbG5vcywgUmVzdWx0UmVsSW5mbyAqbGVh Zl9wYXJ0X3JyaSk7CiBzdGF0aWMgTGlzdCAqYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdf bWFwKExpc3QgKmNvbG5vcywgQXR0ck1hcCAqYXR0ck1hcCk7CiBzdGF0aWMgUGFydGl0aW9uUHJ1 bmVTdGF0ZSAqQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwK LQkJCQkJCQkJCQkJCQkgIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKTsKKwkJCQkJCQkJ CQkJCQkgIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAorCQkJCQkJCQkJCQkJCSAgYm9v bCBjb25zaWRlcl9pbml0aWFsX3N0ZXBzLAorCQkJCQkJCQkJCQkJCSAgYm9vbCBjb25zaWRlcl9l eGVjX3N0ZXBzLAorCQkJCQkJCQkJCQkJCSAgTGlzdCAqcnRhYmxlLCBFeHByQ29udGV4dCAqZWNv bnRleHQsCisJCQkJCQkJCQkJCQkJICBQYXJ0aXRpb25EaXJlY3RvcnkgcGFydGRpcik7CiBzdGF0 aWMgdm9pZCBJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KFBhcnRpdGlvblBydW5lQ29udGV4dCAq Y29udGV4dCwKIAkJCQkJCQkJCSAgTGlzdCAqcHJ1bmluZ19zdGVwcywKIAkJCQkJCQkJCSAgUGFy dGl0aW9uRGVzYyBwYXJ0ZGVzYywKQEAgLTE5OCw3ICsyMDMsOCBAQCBzdGF0aWMgdm9pZCBQYXJ0 aXRpb25QcnVuZUZpeFN1YlBsYW5NYXAoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwK IHN0YXRpYyB2b2lkIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShQYXJ0aXRpb25QcnVu aW5nRGF0YSAqcHJ1bmVkYXRhLAogCQkJCQkJCQkJCSAgIFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0Rh dGEgKnBwcnVuZSwKIAkJCQkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1bmUsCi0JCQkJCQkJCQkJ ICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFucyk7CisJCQkJCQkJCQkJICAgQml0bWFwc2V0ICoq dmFsaWRzdWJwbGFucywKKwkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKipzY2FuX2xlYWZwYXJ0X3J0 aXMpOwogCiAKIC8qCkBAIC0xNTkzLDggKzE1OTksMTAgQEAgYWRqdXN0X3BhcnRpdGlvbl9jb2xu b3NfdXNpbmdfbWFwKExpc3QgKmNvbG5vcywgQXR0ck1hcCAqYXR0ck1hcCkKICAqIGNvbnNpZGVy ZWQgdG8gYmUgYSBzdGFibGUgZXhwcmVzc2lvbiwgaXQgY2FuIGNoYW5nZSB2YWx1ZSBmcm9tIG9u ZSBwbGFuCiAgKiBub2RlIHNjYW4gdG8gdGhlIG5leHQgZHVyaW5nIHF1ZXJ5IGV4ZWN1dGlvbi4g IFN0YWJsZSBjb21wYXJpc29uCiAgKiBleHByZXNzaW9ucyB0aGF0IGRvbid0IGludm9sdmUgc3Vj aCBQYXJhbXMgYWxsb3cgcGFydGl0aW9uIHBydW5pbmcgdG8gYmUKLSAqIGRvbmUgb25jZSBkdXJp bmcgZXhlY3V0b3Igc3RhcnR1cC4gIEV4cHJlc3Npb25zIHRoYXQgZG8gaW52b2x2ZSBzdWNoIFBh cmFtcwotICogcmVxdWlyZSB1cyB0byBwcnVuZSBzZXBhcmF0ZWx5IGZvciBlYWNoIHNjYW4gb2Yg dGhlIHBhcmVudCBwbGFuIG5vZGUuCisgKiBkb25lIG9uY2UgZHVyaW5nIGV4ZWN1dG9yIHN0YXJ0 dXAgb3IgZHVyaW5nIEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpIHRoYXQKKyAqIHJ1bnMgYXMg cGFydCBvZiBwZXJmb3JtaW5nIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgb24gYSBnaXZlbiBwbGFu IHRyZWUuCisgKiBFeHByZXNzaW9ucyB0aGF0IGRvIGludm9sdmUgc3VjaCBQYXJhbXMgcmVxdWly ZSB1cyB0byBwcnVuZSBzZXBhcmF0ZWx5IGZvcgorICogZWFjaCBzY2FuIG9mIHRoZSBwYXJlbnQg cGxhbiBub2RlLgogICoKICAqIE5vdGUgdGhhdCBwcnVuaW5nIGF3YXkgdW5uZWVkZWQgc3VicGxh bnMgZHVyaW5nIGV4ZWN1dG9yIHN0YXJ0dXAgaGFzIHRoZQogICogYWRkZWQgYmVuZWZpdCBvZiBu b3QgaGF2aW5nIHRvIGluaXRpYWxpemUgdGhlIHVubmVlZGVkIHN1YnBsYW5zIGF0IGFsbC4KQEAg LTE2MTEsNiArMTYxOSwxMyBAQCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlz dCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFwKQogICoJCWFjY291bnQgZm9yIGluaXRpYWwgcHJ1 bmluZyBwb3NzaWJseSBoYXZpbmcgZWxpbWluYXRlZCBzb21lIG9mIHRoZQogICoJCXN1YnBsYW5z LgogICoKKyAqIEV4ZWNQYXJ0aXRpb25Eb0luaXRpYWxQcnVuaW5nOgorICoJCURvIGluaXRpYWwg cHJ1bmluZyB3aXRoIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgaW4gYSBnaXZlbgorICoJCVBh cnRpdGlvblBydW5lSW5mbyB0byBkZXRlcm1pbmUgdGhlIG1pbmltYWwgc2V0IG9mIGNoaWxkIHN1 YnBsYW5zCisgKgkJdG8gYmUgZXhlY3V0ZWQgb2YgdGhlIHBhcmVudCBwbGFuIG5vZGUgdG8gd2hp Y2ggdGhlIFBhcnRpdGlvblBydW5lSW5mbworICoJCWJlbG9uZ3MgYW5kIGFsc28gdGhlIHNldCBv ZiB0aGUgUlQgaW5kZXhlcyBvZiBsZWFmIHBhcnRpdGlvbnMgdGhhdCB3aWxsCisgKgkJYmUgc2Nh bm5lZCB3aXRoIHRob3NlIHN1YnBsYW5zLgorICoKICAqIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFu czoKICAqCQlSZXR1cm5zIGluZGV4ZXMgb2YgbWF0Y2hpbmcgc3VicGxhbnMgYWZ0ZXIgZXZhbHVh dGluZyB0aGUgZXhwcmVzc2lvbnMKICAqCQl0aGF0IGFyZSBzYWZlIHRvIGV2YWx1YXRlIGF0IGEg Z2l2ZW4gcG9pbnQuICBUaGlzIGZ1bmN0aW9uIGlzIGZpcnN0CkBAIC0xNjI4LDggKzE2NDMsOSBA QCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFw ICphdHRyTWFwKQogICoKICAqIE9uIHJldHVybiwgKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyBp cyBhc3NpZ25lZCB0aGUgc2V0IG9mIGluZGV4ZXMgb2YKICAqIGNoaWxkIHN1YnBsYW5zIHRoYXQg bXVzdCBiZSBpbml0aWFsaXplZCBhbG9uZyB3aXRoIHRoZSBwYXJlbnQgcGxhbiBub2RlLgotICog SW5pdGlhbCBwcnVuaW5nIGlzIHBlcmZvcm1lZCBoZXJlIGlmIG5lZWRlZCBhbmQgaW4gdGhhdCBj YXNlIG9ubHkgdGhlCi0gKiBzdXJ2aXZpbmcgc3VicGxhbnMnIGluZGV4ZXMgYXJlIGFkZGVkLgor ICogSW5pdGlhbCBwcnVuaW5nIGlzIHBlcmZvcm1lZCBoZXJlIGlmIG5lZWRlZCAodW5sZXNzIGl0 IGhhcyBhbHJlYWR5IGJlZW4gZG9uZQorICogYnkgRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKCkp LCBhbmQgaW4gdGhhdCBjYXNlIG9ubHkgdGhlIHN1cnZpdmluZworICogc3VicGxhbnMnIGluZGV4 ZXMgYXJlIGFkZGVkLgogICoKICAqIElmIHN1YnBsYW5zIGFyZSBpbmRlZWQgcHJ1bmVkLCBzdWJw bGFuX21hcCBhcnJheXMgY29udGFpbmVkIGluIHRoZSByZXR1cm5lZAogICogUGFydGl0aW9uUHJ1 bmVTdGF0ZSBhcmUgcmUtc2VxdWVuY2VkIHRvIG5vdCBjb3VudCB0aG9zZSwgdGhvdWdoIG9ubHkg aWYgdGhlCkBAIC0xNjQ1LDI0ICsxNjYxLDU5IEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQ bGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IHBsYW5zdGF0ZS0+c3Rh dGU7CiAJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8gPSBsaXN0X250aChlc3RhdGUtPmVz X3BhcnRfcHJ1bmVfaW5mb3MsCiAJCQkJCQkJCQkJCSBwYXJ0X3BydW5lX2luZGV4KTsKKwlQYXJ0 aXRpb25QcnVuZVJlc3VsdCAqcHJ1bmVyZXN1bHQgPSBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVz dWx0OworCWJvb2wJZG9fcHJ1bmluZyA9IChwcnVuZWluZm8tPm5lZWRzX2luaXRfcHJ1bmluZyB8 fAorCQkJCQkJICBwcnVuZWluZm8tPm5lZWRzX2V4ZWNfcHJ1bmluZyk7CiAKLQkvKiBXZSBtYXkg bmVlZCBhbiBleHByZXNzaW9uIGNvbnRleHQgdG8gZXZhbHVhdGUgcGFydGl0aW9uIGV4cHJzICov Ci0JRXhlY0Fzc2lnbkV4cHJDb250ZXh0KGVzdGF0ZSwgcGxhbnN0YXRlKTsKKwkvKgorCSAqIE5v IG5lZWQgdG8gZG8gaW5pdGlhbCBwcnVuaW5nIGlmIGl0IHdhcyBkb25lIGFscmVhZHkgYnkKKwkg KiBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoKSwgd2hpY2ggaXQgd291bGQgYmUgaWYgZXNfcGFy dF9wcnVuZV9yZXN1bHQKKwkgKiBoYXMgYmVlbiBzZXQuCisJICovCisJaWYgKHBydW5lcmVzdWx0 KQorCQlkb19wcnVuaW5nID0gcHJ1bmVpbmZvLT5uZWVkc19leGVjX3BydW5pbmc7CiAKLQkvKiBD cmVhdGUgdGhlIHdvcmtpbmcgZGF0YSBzdHJ1Y3R1cmUgZm9yIHBydW5pbmcgKi8KLQlwcnVuZXN0 YXRlID0gQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShwbGFuc3RhdGUsIHBydW5laW5mbyk7CisJ cHJ1bmVzdGF0ZSA9IE5VTEw7CisJaWYgKGRvX3BydW5pbmcpCisJeworCQkvKiBXZSBtYXkgbmVl ZCBhbiBleHByZXNzaW9uIGNvbnRleHQgdG8gZXZhbHVhdGUgcGFydGl0aW9uIGV4cHJzICovCisJ CUV4ZWNBc3NpZ25FeHByQ29udGV4dChlc3RhdGUsIHBsYW5zdGF0ZSk7CisKKwkJLyogRm9yIGRh dGEgcmVhZGluZywgZXhlY3V0b3IgYWx3YXlzIG9taXRzIGRldGFjaGVkIHBhcnRpdGlvbnMgKi8K KwkJaWYgKGVzdGF0ZS0+ZXNfcGFydGl0aW9uX2RpcmVjdG9yeSA9PSBOVUxMKQorCQkJZXN0YXRl LT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5ID0KKwkJCQlDcmVhdGVQYXJ0aXRpb25EaXJlY3Rvcnko ZXN0YXRlLT5lc19xdWVyeV9jeHQsIGZhbHNlKTsKKworCQkvKgorCQkgKiBDcmVhdGUgdGhlIHdv cmtpbmcgZGF0YSBzdHJ1Y3R1cmUgZm9yIHBydW5pbmcuICBObyBuZWVkIHRvIGNvbnNpZGVyCisJ CSAqIGluaXRpYWwgcHJ1bmluZyBzdGVwcyBpZiB3ZSBoYXZlIGEgUGFydGl0aW9uUHJ1bmVSZXN1 bHQuCisJCSAqLworCQlwcnVuZXN0YXRlID0gQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShwbGFu c3RhdGUsIHBydW5laW5mbywKKwkJCQkJCQkJCQkJICAgcHJ1bmVyZXN1bHQgPT0gTlVMTCwgdHJ1 ZSwKKwkJCQkJCQkJCQkJICAgTklMLCBwbGFuc3RhdGUtPnBzX0V4cHJDb250ZXh0LAorCQkJCQkJ CQkJCQkgICBlc3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3RvcnkpOworCX0KIAogCS8qCiAJICog UGVyZm9ybSBhbiBpbml0aWFsIHBhcnRpdGlvbiBwcnVuZSBwYXNzLCBpZiByZXF1aXJlZC4KIAkg Ki8KLQlpZiAocHJ1bmVzdGF0ZS0+ZG9faW5pdGlhbF9wcnVuZSkKLQkJKmluaXRpYWxseV92YWxp ZF9zdWJwbGFucyA9IEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhwcnVuZXN0YXRlLCB0cnVlKTsK KwlpZiAocHJ1bmVyZXN1bHQpCisJeworCQkqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zID0KKwkJ CWxpc3RfbnRoKHBydW5lcmVzdWx0LT52YWxpZF9zdWJwbGFuX29mZnNfbGlzdCwgcGFydF9wcnVu ZV9pbmRleCk7CisJfQorCWVsc2UgaWYgKHBydW5lc3RhdGUgJiYgcHJ1bmVzdGF0ZS0+ZG9faW5p dGlhbF9wcnVuZSkKKwl7CisJCSppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMgPSBFeGVjRmluZE1h dGNoaW5nU3ViUGxhbnMocHJ1bmVzdGF0ZSwgdHJ1ZSwKKwkJCQkJCQkJCQkJCQkJCSBOVUxMKTsK Kwl9CiAJZWxzZQogCXsKIAkJLyogTm8gcHJ1bmluZywgc28gd2UnbGwgbmVlZCB0byBpbml0aWFs aXplIGFsbCBzdWJwbGFucyAqLwogCQlBc3NlcnQobl90b3RhbF9zdWJwbGFucyA+IDApOwogCQkq aW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zID0gYm1zX2FkZF9yYW5nZShOVUxMLCAwLAogCQkJCQkJ CQkJCQkJICBuX3RvdGFsX3N1YnBsYW5zIC0gMSk7CisJCXJldHVybiBwcnVuZXN0YXRlOwogCX0K IAogCS8qCkBAIC0xNjcwLDcgKzE3MjEsOCBAQCBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxh blN0YXRlICpwbGFuc3RhdGUsCiAJICogdGhhdCB3ZXJlIHJlbW92ZWQgYWJvdmUgZHVlIHRvIGlu aXRpYWwgcHJ1bmluZy4gIE5vIG5lZWQgdG8gZG8gdGhpcyBpZgogCSAqIG5vIHN0ZXBzIHdlcmUg cmVtb3ZlZC4KIAkgKi8KLQlpZiAoYm1zX251bV9tZW1iZXJzKCppbml0aWFsbHlfdmFsaWRfc3Vi cGxhbnMpIDwgbl90b3RhbF9zdWJwbGFucykKKwlpZiAocHJ1bmVzdGF0ZSAmJgorCQlibXNfbnVt X21lbWJlcnMoKmluaXRpYWxseV92YWxpZF9zdWJwbGFucykgPCBuX3RvdGFsX3N1YnBsYW5zKQog CXsKIAkJLyoKIAkJICogV2UgY2FuIHNhZmVseSBza2lwIHRoaXMgd2hlbiAhZG9fZXhlY19wcnVu ZSwgZXZlbiB0aG91Z2ggdGhhdApAQCAtMTY4NiwxMSArMTczOCw3MyBAQCBFeGVjSW5pdFBhcnRp dGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJcmV0dXJuIHBydW5lc3RhdGU7CiB9 CiAKKy8qCisgKiBFeGVjUGFydGl0aW9uRG9Jbml0aWFsUHJ1bmluZworICoJCVBlcmZvcm0gaW5p dGlhbCBwcnVuaW5nIHVzaW5nIGdpdmVuIFBhcnRpdGlvblBydW5lSW5mbyB0byBkZXRlcm1pbmUK KyAqCQl0aGUgbWluaW1hbCBzZXQgb2YgY2hpbGQgc3VicGxhbnMgdGhhdCB3aWxsIGJlIGV4ZWN1 dGVkIGFuZCBhbHNvIHRoZQorICoJCXNldCBvZiBSVCBpbmRleGVzIG9mIHRoZSBsZWFmIHBhcnRp dGlvbnMgc2Nhbm5lZCBieSB0aG9zZSBzdWJwbGFucy4KKyAqLworQml0bWFwc2V0ICoKK0V4ZWNQ YXJ0aXRpb25Eb0luaXRpYWxQcnVuaW5nKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgUGFyYW1M aXN0SW5mbyBwYXJhbXMsCisJCQkJCQkJICBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbywK KwkJCQkJCQkgIEJpdG1hcHNldCAqKnNjYW5fbGVhZnBhcnRfcnRpcykKK3sKKwlMaXN0CQkgKnJ0 YWJsZSA9IHBsYW5uZWRzdG10LT5ydGFibGU7CisJRXhwckNvbnRleHQJICplY29udGV4dDsKKwlQ YXJ0aXRpb25EaXJlY3RvcnkgcGRpcjsKKwlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQsCisJCQkJ ICB0bXBjb250ZXh0OworCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CisJQml0bWFw c2V0CSAqdmFsaWRfc3VicGxhbl9vZmZzOworCisJLyoKKwkgKiBBIHRlbXBvcmFyeSBjb250ZXh0 IGZvciBtZW1vcnkgYWxsb2NhdGlvbnMgcmVxdWlyZWQgd2hpbGUgZXhlY3V0aW5nCisJICogcGFy dGl0aW9uIHBydW5pbmcgc3RlcHMuCisJICovCisJdG1wY29udGV4dCA9IEFsbG9jU2V0Q29udGV4 dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJCSAgICJpbml0aWFsIHBydW5p bmcgd29ya2luZyBkYXRhIiwKKwkJCQkJCQkJCSAgIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOwor CW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8odG1wY29udGV4dCk7CisKKwkvKgor CSAqIFBhcnRpdGlvbkRpcmVjdG9yeSB0byBsb29rIHVwIHBhcnRpdGlvbiBkZXNjcmlwdG9ycywg d2hpY2ggb21pdHMKKwkgKiBkZXRhY2hlZCBwYXJ0aXRpb25zLCBqdXN0IGxpa2UgaW4gdGhlIGV4 ZWN1dG9yIHByb3Blci4KKwkgKi8KKwlwZGlyID0gQ3JlYXRlUGFydGl0aW9uRGlyZWN0b3J5KEN1 cnJlbnRNZW1vcnlDb250ZXh0LCBmYWxzZSk7CisKKwkvKgorCSAqIFdlIGRvbid0IHlldCBoYXZl IGEgUGxhblN0YXRlIGZvciB0aGUgcGFyZW50IHBsYW4gbm9kZSwgc28gd2UgbXVzdAorCSAqIGNy ZWF0ZSBhIHN0YW5kYWxvbmUgRXhwckNvbnRleHQgdG8gZXZhbHVhdGUgcHJ1bmluZyBleHByZXNz aW9ucywKKwkgKiBlcXVpcHBlZCB3aXRoIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgRVhURVJO IHBhcmFtZXRlcnMgdGhhdCB0aGUKKwkgKiBjYWxsZXIgcGFzc2VkIHVzLiAgTm90ZSB0aGF0IHRo YXQncyBva2F5IGJlY2F1c2UgdGhlIGluaXRpYWwgcHJ1bmluZworCSAqIHN0ZXBzIGRvIG5vdCBj b250YWluIGFueXRoaW5nIHRoYXQgcmVxdWlyZXMgdGhlIGV4ZWN1dGlvbiB0byBoYXZlCisJICog c3RhcnRlZC4KKwkgKi8KKwllY29udGV4dCA9IENyZWF0ZVN0YW5kYWxvbmVFeHByQ29udGV4dCgp OworCWVjb250ZXh0LT5lY3h0X3BhcmFtX2xpc3RfaW5mbyA9IHBhcmFtczsKKwlwcnVuZXN0YXRl ID0gQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShOVUxMLCBwcnVuZWluZm8sIHRydWUsIGZhbHNl LAorCQkJCQkJCQkJCSAgIHJ0YWJsZSwgZWNvbnRleHQsIHBkaXIpOworCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCS8qIERvIHRoZSBpbml0aWFsIHBydW5pbmcuICovCisJ dmFsaWRfc3VicGxhbl9vZmZzID0gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKHBydW5lc3RhdGUs IHRydWUsCisJCQkJCQkJCQkJCQkgIHNjYW5fbGVhZnBhcnRfcnRpcyk7CisKKwlGcmVlRXhwckNv bnRleHQoZWNvbnRleHQsIHRydWUpOworCURlc3Ryb3lQYXJ0aXRpb25EaXJlY3RvcnkocGRpcik7 CisJTWVtb3J5Q29udGV4dERlbGV0ZSh0bXBjb250ZXh0KTsKKworCXJldHVybiB2YWxpZF9zdWJw bGFuX29mZnM7Cit9CisKIC8qCiAgKiBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlCiAgKgkJQnVp bGQgdGhlIGRhdGEgc3RydWN0dXJlIHJlcXVpcmVkIGZvciBjYWxsaW5nIEV4ZWNGaW5kTWF0Y2hp bmdTdWJQbGFucwogICoKLSAqICdwbGFuc3RhdGUnIGlzIHRoZSBwYXJlbnQgcGxhbiBub2RlJ3Mg ZXhlY3V0aW9uIHN0YXRlLgorICogJ3BsYW5zdGF0ZScsIGlmIG5vdCBOVUxMLCBpcyB0aGUgcGFy ZW50IHBsYW4gbm9kZSdzIGV4ZWN1dGlvbiBzdGF0ZS4gIEl0CisgKiBjYW4gYmUgTlVMTCBpZiBi ZWluZyBjYWxsZWQgYmVmb3JlIEV4ZWN1dG9yU3RhcnQoKSwgaW4gd2hpY2ggY2FzZSwKKyAqICdy dGFibGUnIChyYW5nZSB0YWJsZSksICdlY29udGV4dCcsIGFuZCAncGFydGRpcicgbXVzdCBiZSBl eHBsaWNpdGx5CisgKiBwcm92aWRlZC4KICAqCiAgKiAncHJ1bmVpbmZvJyBpcyBhIFBhcnRpdGlv blBydW5lSW5mbyBhcyBnZW5lcmF0ZWQgYnkKICAqIG1ha2VfcGFydGl0aW9uX3BydW5laW5mby4g IEhlcmUgd2UgYnVpbGQgYSBQYXJ0aXRpb25QcnVuZVN0YXRlIGNvbnRhaW5pbmcgYQpAQCAtMTcw NCwxOSArMTgxOCwyMSBAQCBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFu c3RhdGUsCiAgKiBQYXJ0aXRpb25lZFJlbFBydW5lSW5mby4KICAqLwogc3RhdGljIFBhcnRpdGlv blBydW5lU3RhdGUgKgotQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5z dGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCitDcmVhdGVQYXJ0aXRpb25QcnVu ZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAorCQkJCQkJICBQYXJ0aXRpb25QcnVuZUluZm8g KnBydW5laW5mbywKKwkJCQkJCSAgYm9vbCBjb25zaWRlcl9pbml0aWFsX3N0ZXBzLAorCQkJCQkJ ICBib29sIGNvbnNpZGVyX2V4ZWNfc3RlcHMsCisJCQkJCQkgIExpc3QgKnJ0YWJsZSwgRXhwckNv bnRleHQgKmVjb250ZXh0LAorCQkJCQkJICBQYXJ0aXRpb25EaXJlY3RvcnkgcGFydGRpcikKIHsK LQlFU3RhdGUJICAgKmVzdGF0ZSA9IHBsYW5zdGF0ZS0+c3RhdGU7CisJRVN0YXRlCSAgICplc3Rh dGUgPSBwbGFuc3RhdGUgPyBwbGFuc3RhdGUtPnN0YXRlIDogTlVMTDsKIAlQYXJ0aXRpb25QcnVu ZVN0YXRlICpwcnVuZXN0YXRlOwogCWludAkJCW5fcGFydF9oaWVyYXJjaGllczsKIAlMaXN0Q2Vs bCAgICpsYzsKIAlpbnQJCQlpOwotCUV4cHJDb250ZXh0ICplY29udGV4dCA9IHBsYW5zdGF0ZS0+ cHNfRXhwckNvbnRleHQ7CiAKLQkvKiBGb3IgZGF0YSByZWFkaW5nLCBleGVjdXRvciBhbHdheXMg b21pdHMgZGV0YWNoZWQgcGFydGl0aW9ucyAqLwotCWlmIChlc3RhdGUtPmVzX3BhcnRpdGlvbl9k aXJlY3RvcnkgPT0gTlVMTCkKLQkJZXN0YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5ID0KLQkJ CUNyZWF0ZVBhcnRpdGlvbkRpcmVjdG9yeShlc3RhdGUtPmVzX3F1ZXJ5X2N4dCwgZmFsc2UpOwor CUFzc2VydCgoZXN0YXRlICE9IE5VTEwpIHx8CisJCQkocGFydGRpciAhPSBOVUxMICYmIGVjb250 ZXh0ICE9IE5VTEwgJiYgcnRhYmxlICE9IE5JTCkpOwogCiAJbl9wYXJ0X2hpZXJhcmNoaWVzID0g bGlzdF9sZW5ndGgocHJ1bmVpbmZvLT5wcnVuZV9pbmZvcyk7CiAJQXNzZXJ0KG5fcGFydF9oaWVy YXJjaGllcyA+IDApOwpAQCAtMTc3MSwxNSArMTg4Nyw0MiBAQCBDcmVhdGVQYXJ0aXRpb25QcnVu ZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5m bykKIAkJCVBhcnRpdGlvbktleSBwYXJ0a2V5OwogCiAJCQkvKgotCQkJICogV2UgY2FuIHJlbHkg b24gdGhlIGNvcGllcyBvZiB0aGUgcGFydGl0aW9uZWQgdGFibGUncyBwYXJ0aXRpb24KLQkJCSAq IGtleSBhbmQgcGFydGl0aW9uIGRlc2NyaXB0b3IgYXBwZWFyaW5nIGluIGl0cyByZWxjYWNoZSBl bnRyeSwKLQkJCSAqIGJlY2F1c2UgdGhhdCBlbnRyeSB3aWxsIGJlIGhlbGQgb3BlbiBhbmQgbG9j a2VkIGZvciB0aGUKLQkJCSAqIGR1cmF0aW9uIG9mIHRoaXMgZXhlY3V0b3IgcnVuLgorCQkJICog TXVzdCBvcGVuIHRoZSByZWxhdGlvbiBieSBvdXJzZWx2ZXMgd2hlbiBjYWxsZWQgYmVmb3JlIHRo ZQorCQkJICogZXhlY3V0aW9uIGhhcyBzdGFydGVkLCBzdWNoIGFzLCB3aGVuIGNhbGxlZCBkdXJp bmcKKwkJCSAqIEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpIG9uIGEgY2FjaGVkIHBsYW4uICBJ biB0aGF0IGNhc2UsCisJCQkgKiBzdWItcGFydGl0aW9ucyBtdXN0IGJlIGxvY2tlZCwgYmVjYXVz ZSBBY3F1aXJlUGxhbm5lckxvY2tzKCkKKwkJCSAqIHdvdWxkIG5vdCBoYXZlIHNlZW4gdGhlbS4g KDFzdCByZWxhdGlvbiBpbiBhIHBhcnRyZWxwcnVuZWluZm9zCisJCQkgKiBsaXN0IGlzIGFsd2F5 cyB0aGUgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZSBhcHBlYXJpbmcgaW4gdGhlCisJCQkgKiBxdWVy eSwgd2hpY2ggQWNxdWlyZVBsYW5uZXJMb2NrcygpIHdvdWxkIGhhdmUgbG9ja2VkOyB0aGUKKwkJ CSAqIEFzc2VydCBpbiByZWxhdGlvbl9vcGVuKCkgZ3VhcmRzIHRoYXQgYXNzdW1wdGlvbi4pCisJ CQkgKi8KKwkJCWlmIChlc3RhdGUgPT0gTlVMTCkKKwkJCXsKKwkJCQlSYW5nZVRibEVudHJ5ICpy dGUgPSBydF9mZXRjaChwaW5mby0+cnRpbmRleCwgcnRhYmxlKTsKKwkJCQlpbnQJCWxvY2ttb2Rl ID0gKGogPT0gMCkgPyBOb0xvY2sgOiBydGUtPnJlbGxvY2ttb2RlOworCisJCQkJcGFydHJlbCA9 IHRhYmxlX29wZW4ocnRlLT5yZWxpZCwgbG9ja21vZGUpOworCQkJfQorCQkJZWxzZQorCQkJCXBh cnRyZWwgPSBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0ZSwgcGluZm8tPnJ0aW5kZXgp OworCisJCQkvKgorCQkJICogV2UgY2FuIHJlbHkgb24gdGhlIGNvcHkgb2YgdGhlIHBhcnRpdGlv bmVkIHRhYmxlJ3MgcGFydGl0aW9uCisJCQkgKiBrZXkgZnJvbSBpbiBpdHMgcmVsY2FjaGUgZW50 cnksIGJlY2F1c2UgaXQgY2FuJ3QgY2hhbmdlIChvcgorCQkJICogZ2V0IGRlc3Ryb3llZCkgYXMg bG9uZyBhcyB0aGUgcmVsYXRpb24gaXMgbG9ja2VkLiAgUGFydGl0aW9uCisJCQkgKiBkZXNjcmlw dG9yIGlzIHRha2VuIGZyb20gdGhlIFBhcnRpdGlvbkRpcmVjdG9yeSBhc3NvY2lhdGVkIHdpdGgK KwkJCSAqIHRoZSB0YWJsZSB0aGF0IGlzIGhlbGQgb3BlbiBsb25nIGVub3VnaCBmb3IgdGhlIGRl c2NyaXB0b3IgdG8KKwkJCSAqIHJlbWFpbiB2YWxpZCB3aGlsZSBpdCdzIHVzZWQgdG8gcGVyZm9y bSB0aGUgcHJ1bmluZyBzdGVwcy4KIAkJCSAqLwotCQkJcGFydHJlbCA9IEV4ZWNHZXRSYW5nZVRh YmxlUmVsYXRpb24oZXN0YXRlLCBwaW5mby0+cnRpbmRleCk7CiAJCQlwYXJ0a2V5ID0gUmVsYXRp b25HZXRQYXJ0aXRpb25LZXkocGFydHJlbCk7Ci0JCQlwYXJ0ZGVzYyA9IFBhcnRpdGlvbkRpcmVj dG9yeUxvb2t1cChlc3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3RvcnksCi0JCQkJCQkJCQkJCQlw YXJ0cmVsKTsKKwkJCXBhcnRkZXNjID0gUGFydGl0aW9uRGlyZWN0b3J5TG9va3VwKHBhcnRkaXIs IHBhcnRyZWwpOworCisJCQkvKgorCQkJICogTXVzdCBjbG9zZSBwYXJ0cmVsLCBrZWVwaW5nIHRo ZSBsb2NrIHRha2VuLCBpZiB3ZSdyZSBub3QgdXNpbmcKKwkJCSAqIEVTdGF0ZSdzIGVudHJ5Lgor CQkJICovCisJCQlpZiAoZXN0YXRlID09IE5VTEwpCisJCQkJdGFibGVfY2xvc2UocGFydHJlbCwg Tm9Mb2NrKTsKIAogCQkJLyoKIAkJCSAqIEluaXRpYWxpemUgdGhlIHN1YnBsYW5fbWFwIGFuZCBz dWJwYXJ0X21hcC4KQEAgLTE3OTMsNiArMTkzNiw3IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3Rh dGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQog CQkJQXNzZXJ0KHBhcnRkZXNjLT5ucGFydHMgPj0gcGluZm8tPm5wYXJ0cyk7CiAJCQlwcHJ1bmUt Pm5wYXJ0cyA9IHBhcnRkZXNjLT5ucGFydHM7CiAJCQlwcHJ1bmUtPnN1YnBsYW5fbWFwID0gcGFs bG9jKHNpemVvZihpbnQpICogcGFydGRlc2MtPm5wYXJ0cyk7CisJCQlwcHJ1bmUtPnJ0aV9tYXAg PSBwYWxsb2Moc2l6ZW9mKEluZGV4KSAqIHBhcnRkZXNjLT5ucGFydHMpOwogCQkJaWYgKHBhcnRk ZXNjLT5ucGFydHMgPT0gcGluZm8tPm5wYXJ0cykKIAkJCXsKIAkJCQkvKgpAQCAtMTgwMyw2ICsx OTQ3LDggQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwg UGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQkJcHBydW5lLT5zdWJwYXJ0X21hcCA9 IHBpbmZvLT5zdWJwYXJ0X21hcDsKIAkJCQltZW1jcHkocHBydW5lLT5zdWJwbGFuX21hcCwgcGlu Zm8tPnN1YnBsYW5fbWFwLAogCQkJCQkgICBzaXplb2YoaW50KSAqIHBpbmZvLT5ucGFydHMpOwor CQkJCW1lbWNweShwcHJ1bmUtPnJ0aV9tYXAsIHBpbmZvLT5ydGlfbWFwLAorCQkJCQkgICBzaXpl b2YoaW50KSAqIHBpbmZvLT5ucGFydHMpOwogCiAJCQkJLyoKIAkJCQkgKiBEb3VibGUtY2hlY2sg dGhhdCB0aGUgbGlzdCBvZiB1bnBydW5lZCByZWxhdGlvbnMgaGFzIG5vdApAQCAtMTg1Myw2ICsx OTk5LDggQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwg UGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQkJCQkJcGluZm8tPnN1YnBsYW5fbWFw W3BkX2lkeF07CiAJCQkJCQlwcHJ1bmUtPnN1YnBhcnRfbWFwW3BwX2lkeF0gPQogCQkJCQkJCXBp bmZvLT5zdWJwYXJ0X21hcFtwZF9pZHhdOworCQkJCQkJcHBydW5lLT5ydGlfbWFwW3BwX2lkeF0g PQorCQkJCQkJCXBpbmZvLT5ydGlfbWFwW3BkX2lkeF07CiAJCQkJCQlwZF9pZHgrKzsKIAkJCQkJ fQogCQkJCQllbHNlCkBAIC0xODYwLDYgKzIwMDgsNyBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0 YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykK IAkJCQkJCS8qIHRoaXMgcGFydGRlc2MgZW50cnkgaXMgbm90IGluIHRoZSBwbGFuICovCiAJCQkJ CQlwcHJ1bmUtPnN1YnBsYW5fbWFwW3BwX2lkeF0gPSAtMTsKIAkJCQkJCXBwcnVuZS0+c3VicGFy dF9tYXBbcHBfaWR4XSA9IC0xOworCQkJCQkJcHBydW5lLT5ydGlfbWFwW3BwX2lkeF0gPSAwOwog CQkJCQl9CiAJCQkJfQogCkBAIC0xODgxLDcgKzIwMzAsNyBAQCBDcmVhdGVQYXJ0aXRpb25QcnVu ZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5m bykKIAkJCSAqIEluaXRpYWxpemUgcHJ1bmluZyBjb250ZXh0cyBhcyBuZWVkZWQuCiAJCQkgKi8K IAkJCXBwcnVuZS0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzID0gcGluZm8tPmluaXRpYWxfcHJ1bmlu Z19zdGVwczsKLQkJCWlmIChwaW5mby0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzKQorCQkJaWYgKGNv bnNpZGVyX2luaXRpYWxfc3RlcHMgJiYgcGluZm8tPmluaXRpYWxfcHJ1bmluZ19zdGVwcykKIAkJ CXsKIAkJCQlJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KCZwcHJ1bmUtPmluaXRpYWxfY29udGV4 dCwKIAkJCQkJCQkJCQkgIHBpbmZvLT5pbml0aWFsX3BydW5pbmdfc3RlcHMsCkBAIC0xODkxLDcg KzIwNDAsNyBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRl LCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCQlwcnVuZXN0YXRlLT5kb19pbml0 aWFsX3BydW5lID0gdHJ1ZTsKIAkJCX0KIAkJCXBwcnVuZS0+ZXhlY19wcnVuaW5nX3N0ZXBzID0g cGluZm8tPmV4ZWNfcHJ1bmluZ19zdGVwczsKLQkJCWlmIChwaW5mby0+ZXhlY19wcnVuaW5nX3N0 ZXBzKQorCQkJaWYgKGNvbnNpZGVyX2V4ZWNfc3RlcHMgJiYgcGluZm8tPmV4ZWNfcHJ1bmluZ19z dGVwcykKIAkJCXsKIAkJCQlJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KCZwcHJ1bmUtPmV4ZWNf Y29udGV4dCwKIAkJCQkJCQkJCQkgIHBpbmZvLT5leGVjX3BydW5pbmdfc3RlcHMsCkBAIC0yMTE5 LDEwICsyMjY4LDE0IEBAIFBhcnRpdGlvblBydW5lRml4U3ViUGxhbk1hcChQYXJ0aXRpb25QcnVu ZVN0YXRlICpwcnVuZXN0YXRlLAogICogUGFzcyBpbml0aWFsX3BydW5lIGlmIFBBUkFNX0VYRUMg UGFyYW1zIGNhbm5vdCB5ZXQgYmUgZXZhbHVhdGVkLiAgVGhpcwogICogZGlmZmVyZW50aWF0ZXMg dGhlIGluaXRpYWwgZXhlY3V0b3ItdGltZSBwcnVuaW5nIHN0ZXAgZnJvbSBsYXRlcgogICogcnVu dGltZSBwcnVuaW5nLgorICoKKyAqIFJUIGluZGV4ZXMgb2YgbGVhZiBwYXJ0aXRpb25zIHNjYW5u ZWQgYnkgdGhlIGNob3NlbiBzdWJwbGFucyBhcmUgYWRkZWQgdG8KKyAqICpzY2FuX2xlYWZwYXJ0 X3J0aXMgaWYgdGhlIHBvaW50ZXIgaXMgbm9uLU5VTEwuCiAgKi8KIEJpdG1hcHNldCAqCiBFeGVj RmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKLQkJ CQkJCSBib29sIGluaXRpYWxfcHJ1bmUpCisJCQkJCQkgYm9vbCBpbml0aWFsX3BydW5lLAorCQkJ CQkJIEJpdG1hcHNldCAqKnNjYW5fbGVhZnBhcnRfcnRpcykKIHsKIAlCaXRtYXBzZXQgICpyZXN1 bHQgPSBOVUxMOwogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKQEAgLTIxNTcsNyArMjMxMCw3 IEBAIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0 YXRlLAogCQkgKi8KIAkJcHBydW5lID0gJnBydW5lZGF0YS0+cGFydHJlbHBydW5lZGF0YVswXTsK IAkJZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKHBydW5lZGF0YSwgcHBydW5lLCBpbml0 aWFsX3BydW5lLAotCQkJCQkJCQkJICAgJnJlc3VsdCk7CisJCQkJCQkJCQkgICAmcmVzdWx0LCBz Y2FuX2xlYWZwYXJ0X3J0aXMpOwogCiAJCS8qIEV4cHJlc3Npb24gZXZhbCBtYXkgaGF2ZSB1c2Vk IHNwYWNlIGluIEV4cHJDb250ZXh0IHRvbyAqLwogCQlpZiAocHBydW5lLT5leGVjX3BydW5pbmdf c3RlcHMpCkBAIC0yMTcxLDYgKzIzMjQsOCBAQCBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoUGFy dGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAogCS8qIENvcHkgcmVzdWx0IG91dCBvZiB0 aGUgdGVtcCBjb250ZXh0IGJlZm9yZSB3ZSByZXNldCBpdCAqLwogCXJlc3VsdCA9IGJtc19jb3B5 KHJlc3VsdCk7CisJaWYgKHNjYW5fbGVhZnBhcnRfcnRpcykKKwkJKnNjYW5fbGVhZnBhcnRfcnRp cyA9IGJtc19jb3B5KCpzY2FuX2xlYWZwYXJ0X3J0aXMpOwogCiAJTWVtb3J5Q29udGV4dFJlc2V0 KHBydW5lc3RhdGUtPnBydW5lX2NvbnRleHQpOwogCkBAIC0yMTgxLDEzICsyMzM2LDE1IEBAIEV4 ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAog ICogZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlCiAgKgkJUmVjdXJzaXZlIHdvcmtlciBm dW5jdGlvbiBmb3IgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zCiAgKgotICogQWRkcyB2YWxpZCAo bm9uLXBydW5hYmxlKSBzdWJwbGFuIElEcyB0byAqdmFsaWRzdWJwbGFucworICogQWRkcyB2YWxp ZCAobm9uLXBydW5hYmxlKSBzdWJwbGFuIElEcyB0byAqdmFsaWRzdWJwbGFucyBhbmQgUlQgaW5k ZXhlcyBvZgorICogb2YgdGhlIGNvcnJlc3BvbmRpbmcgbGVhZiBwYXJ0aXRpb25zIHRvICpzY2Fu X2xlYWZwYXJ0X3J0aXMgKGlmIGFza2VkIGZvcikuCiAgKi8KIHN0YXRpYyB2b2lkCiBmaW5kX21h dGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBydW5lZGF0YSwK IAkJCQkJCQkgICBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpwcHJ1bmUsCiAJCQkJCQkJICAg Ym9vbCBpbml0aWFsX3BydW5lLAotCQkJCQkJCSAgIEJpdG1hcHNldCAqKnZhbGlkc3VicGxhbnMp CisJCQkJCQkJICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFucywKKwkJCQkJCQkgICBCaXRtYXBz ZXQgKipzY2FuX2xlYWZwYXJ0X3J0aXMpCiB7CiAJQml0bWFwc2V0ICAqcGFydHNldDsKIAlpbnQJ CQlpOwpAQCAtMjIxNCw4ICsyMzcxLDE0IEBAIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJz ZShQYXJ0aXRpb25QcnVuaW5nRGF0YSAqcHJ1bmVkYXRhLAogCXdoaWxlICgoaSA9IGJtc19uZXh0 X21lbWJlcihwYXJ0c2V0LCBpKSkgPj0gMCkKIAl7CiAJCWlmIChwcHJ1bmUtPnN1YnBsYW5fbWFw W2ldID49IDApCisJCXsKIAkJCSp2YWxpZHN1YnBsYW5zID0gYm1zX2FkZF9tZW1iZXIoKnZhbGlk c3VicGxhbnMsCiAJCQkJCQkJCQkJCXBwcnVuZS0+c3VicGxhbl9tYXBbaV0pOworCQkJQXNzZXJ0 KHBwcnVuZS0+cnRpX21hcFtpXSA+IDApOworCQkJaWYgKHNjYW5fbGVhZnBhcnRfcnRpcykKKwkJ CQkqc2Nhbl9sZWFmcGFydF9ydGlzID0gYm1zX2FkZF9tZW1iZXIoKnNjYW5fbGVhZnBhcnRfcnRp cywKKwkJCQkJCQkJCQkJCQkgcHBydW5lLT5ydGlfbWFwW2ldKTsKKwkJfQogCQllbHNlCiAJCXsK IAkJCWludAkJCXBhcnRpZHggPSBwcHJ1bmUtPnN1YnBhcnRfbWFwW2ldOwpAQCAtMjIyMyw3ICsy Mzg2LDggQEAgZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKFBhcnRpdGlvblBydW5pbmdE YXRhICpwcnVuZWRhdGEsCiAJCQlpZiAocGFydGlkeCA+PSAwKQogCQkJCWZpbmRfbWF0Y2hpbmdf c3VicGxhbnNfcmVjdXJzZShwcnVuZWRhdGEsCiAJCQkJCQkJCQkJCSAgICZwcnVuZWRhdGEtPnBh cnRyZWxwcnVuZWRhdGFbcGFydGlkeF0sCi0JCQkJCQkJCQkJCSAgIGluaXRpYWxfcHJ1bmUsIHZh bGlkc3VicGxhbnMpOworCQkJCQkJCQkJCQkgICBpbml0aWFsX3BydW5lLCB2YWxpZHN1YnBsYW5z LAorCQkJCQkJCQkJCQkgICBzY2FuX2xlYWZwYXJ0X3J0aXMpOwogCQkJZWxzZQogCQkJewogCQkJ CS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCmluZGV4IGY5NDYwYWU1MDYuLmEyMTgyYTZiMWYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCkBAIC04NDQsNyArODQ0LDcgQEAgcG9zdHF1ZWxf c3RhcnQoZXhlY3V0aW9uX3N0YXRlICplcywgU1FMRnVuY3Rpb25DYWNoZVB0ciBmY2FjaGUpCiAJ ZWxzZQogCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKIAotCWVzLT5xZCA9IENyZWF0ZVF1ZXJ5RGVz Yyhlcy0+c3RtdCwKKwllcy0+cWQgPSBDcmVhdGVRdWVyeURlc2MoZXMtPnN0bXQsIE5VTEwsCiAJ CQkJCQkJIGZjYWNoZS0+c3JjLAogCQkJCQkJCSBHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJ CSBJbnZhbGlkU25hcHNob3QsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl QXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKaW5kZXggYzZmODZh NjUxMC4uOTY4ODBlMTIyYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFw cGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwpAQCAtMTU1LDcg KzE1NSw4IEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJCSAqIHN1YnBsYW4sIHdlIGNhbiBmaWxsIGFzX3ZhbGlkX3N1YnBsYW5zIGlt bWVkaWF0ZWx5LCBwcmV2ZW50aW5nCiAJCSAqIGxhdGVyIGNhbGxzIHRvIEV4ZWNGaW5kTWF0Y2hp bmdTdWJQbGFucy4KIAkJICovCi0JCWlmICghcHJ1bmVzdGF0ZS0+ZG9fZXhlY19wcnVuZSAmJiBu cGxhbnMgPiAwKQorCQlpZiAoYXBwZW5kc3RhdGUtPmFzX3BydW5lX3N0YXRlID09IE5VTEwgfHwK KwkJCSghYXBwZW5kc3RhdGUtPmFzX3BydW5lX3N0YXRlLT5kb19leGVjX3BydW5lICYmIG5wbGFu cyA+IDApKQogCQkJYXBwZW5kc3RhdGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0gYm1zX2FkZF9yYW5n ZShOVUxMLCAwLCBucGxhbnMgLSAxKTsKIAl9CiAJZWxzZQpAQCAtNTc3LDcgKzU3OCw3IEBAIGNo b29zZV9uZXh0X3N1YnBsYW5fbG9jYWxseShBcHBlbmRTdGF0ZSAqbm9kZSkKIAkJfQogCQllbHNl IGlmIChub2RlLT5hc192YWxpZF9zdWJwbGFucyA9PSBOVUxMKQogCQkJbm9kZS0+YXNfdmFsaWRf c3VicGxhbnMgPQotCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9z dGF0ZSwgZmFsc2UpOworCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVu ZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwogCiAJCXdoaWNocGxhbiA9IC0xOwogCX0KQEAgLTY0Miw3 ICs2NDMsNyBAQCBjaG9vc2VfbmV4dF9zdWJwbGFuX2Zvcl9sZWFkZXIoQXBwZW5kU3RhdGUgKm5v ZGUpCiAJCWlmIChub2RlLT5hc192YWxpZF9zdWJwbGFucyA9PSBOVUxMKQogCQl7CiAJCQlub2Rl LT5hc192YWxpZF9zdWJwbGFucyA9Ci0JCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUt PmFzX3BydW5lX3N0YXRlLCBmYWxzZSk7CisJCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5v ZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CiAKIAkJCS8qCiAJCQkgKiBNYXJrIGVh Y2ggaW52YWxpZCBwbGFuIGFzIGZpbmlzaGVkIHRvIGFsbG93IHRoZSBsb29wIGJlbG93IHRvCkBA IC03MTcsNyArNzE4LDcgQEAgY2hvb3NlX25leHRfc3VicGxhbl9mb3Jfd29ya2VyKEFwcGVuZFN0 YXRlICpub2RlKQogCWVsc2UgaWYgKG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID09IE5VTEwpCiAJ ewogCQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9Ci0JCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxh bnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlKTsKKwkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQ bGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwogCQltYXJrX2ludmFsaWRf c3VicGxhbnNfYXNfZmluaXNoZWQobm9kZSk7CiAJfQogCkBAIC04NjgsNyArODY5LDcgQEAgRXhl Y0FwcGVuZEFzeW5jQmVnaW4oQXBwZW5kU3RhdGUgKm5vZGUpCiAJaWYgKG5vZGUtPmFzX3ZhbGlk X3N1YnBsYW5zID09IE5VTEwpCiAJewogCQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9Ci0JCQlF eGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlKTsKKwkJ CUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5V TEwpOwogCiAJCWNsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zKG5vZGUpOwogCX0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKaW5kZXggOGQzNTg2MGMzMC4uMjMxMmU1YTYzMyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKQEAgLTEwMyw3ICsxMDMsOCBA QCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAkJICogc3VicGxhbiwgd2UgY2FuIGZpbGwgbXNfdmFsaWRfc3VicGxhbnMg aW1tZWRpYXRlbHksIHByZXZlbnRpbmcKIAkJICogbGF0ZXIgY2FsbHMgdG8gRXhlY0ZpbmRNYXRj aGluZ1N1YlBsYW5zLgogCQkgKi8KLQkJaWYgKCFwcnVuZXN0YXRlLT5kb19leGVjX3BydW5lICYm IG5wbGFucyA+IDApCisJCWlmIChtZXJnZXN0YXRlLT5tc19wcnVuZV9zdGF0ZSA9PSBOVUxMIHx8 CisJCQkoIW1lcmdlc3RhdGUtPm1zX3BydW5lX3N0YXRlLT5kb19leGVjX3BydW5lICYmIG5wbGFu cyA+IDApKQogCQkJbWVyZ2VzdGF0ZS0+bXNfdmFsaWRfc3VicGxhbnMgPSBibXNfYWRkX3Jhbmdl KE5VTEwsIDAsIG5wbGFucyAtIDEpOwogCX0KIAllbHNlCkBAIC0yMTgsNyArMjE5LDcgQEAgRXhl Y01lcmdlQXBwZW5kKFBsYW5TdGF0ZSAqcHN0YXRlKQogCQkgKi8KIAkJaWYgKG5vZGUtPm1zX3Zh bGlkX3N1YnBsYW5zID09IE5VTEwpCiAJCQlub2RlLT5tc192YWxpZF9zdWJwbGFucyA9Ci0JCQkJ RXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPm1zX3BydW5lX3N0YXRlLCBmYWxzZSk7CisJ CQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPm1zX3BydW5lX3N0YXRlLCBmYWxzZSwg TlVMTCk7CiAKIAkJLyoKIAkJICogRmlyc3QgdGltZSB0aHJvdWdoOiBwdWxsIHRoZSBmaXJzdCB0 dXBsZSBmcm9tIGVhY2ggdmFsaWQgc3VicGxhbiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL3NwaS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKaW5kZXggMjliYzI2NjY5 Yi4uMzAzYTU3MmMwMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKQEAgLTE1NzgsNiArMTU3OCw3IEBAIFNQSV9j dXJzb3Jfb3Blbl9pbnRlcm5hbChjb25zdCBjaGFyICpuYW1lLCBTUElQbGFuUHRyIHBsYW4sCiAJ Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZTsKIAlDYWNoZWRQbGFuICpjcGxhbjsKIAlMaXN0 CSAgICpzdG10X2xpc3Q7CisJTGlzdAkgICAqcGFydF9wcnVuZV9yZXN1bHRfbGlzdDsKIAljaGFy CSAgICpxdWVyeV9zdHJpbmc7CiAJU25hcHNob3QJc25hcHNob3Q7CiAJTWVtb3J5Q29udGV4dCBv bGRjb250ZXh0OwpAQCAtMTY1Nyw3ICsxNjU4LDEwIEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5h bChjb25zdCBjaGFyICpuYW1lLCBTUElQbGFuUHRyIHBsYW4sCiAJICovCiAKIAkvKiBSZXBsYW4g aWYgbmVlZGVkLCBhbmQgaW5jcmVtZW50IHBsYW4gcmVmY291bnQgZm9yIHBvcnRhbCAqLwotCWNw bGFuID0gR2V0Q2FjaGVkUGxhbihwbGFuc291cmNlLCBwYXJhbUxJLCBOVUxMLCBfU1BJX2N1cnJl bnQtPnF1ZXJ5RW52KTsKKwljcGxhbiA9IEdldENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgcGFyYW1M SSwgTlVMTCwgX1NQSV9jdXJyZW50LT5xdWVyeUVudiwKKwkJCQkJCSAgJnBhcnRfcHJ1bmVfcmVz dWx0X2xpc3QpOworCUFzc2VydChsaXN0X2xlbmd0aChjcGxhbi0+c3RtdF9saXN0KSA9PQorCQkg ICBsaXN0X2xlbmd0aChwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KSk7CiAJc3RtdF9saXN0ID0gY3Bs YW4tPnN0bXRfbGlzdDsKIAogCWlmICghcGxhbi0+c2F2ZWQpCkBAIC0xNjg1LDYgKzE2ODksOSBA QCBTUElfY3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBw bGFuLAogCQkJCQkgIHN0bXRfbGlzdCwKIAkJCQkJICBjcGxhbik7CiAKKwkvKiBDb3B5IFBhcnRp dGlvblBydW5lUmVzdWx0cyBpbnRvIHRoZSBwb3J0YWwncyBjb250ZXh0LiAqLworCVBvcnRhbFN0 b3JlUGFydGl0aW9uUHJ1bmVSZXN1bHRzKHBvcnRhbCwgcGFydF9wcnVuZV9yZXN1bHRfbGlzdCk7 CisKIAkvKgogCSAqIFNldCB1cCBvcHRpb25zIGZvciBwb3J0YWwuICBEZWZhdWx0IFNDUk9MTCB0 eXBlIGlzIGNob3NlbiB0aGUgc2FtZSB3YXkKIAkgKiBhcyBQZXJmb3JtQ3Vyc29yT3BlbiBkb2Vz IGl0LgpAQCAtMjA5Miw3ICsyMDk5LDggQEAgU1BJX3BsYW5fZ2V0X2NhY2hlZF9wbGFuKFNQSVBs YW5QdHIgcGxhbikKIAkvKiBHZXQgdGhlIGdlbmVyaWMgcGxhbiBmb3IgdGhlIHF1ZXJ5ICovCiAJ Y3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIE5VTEwsCiAJCQkJCQkgIHBsYW4tPnNh dmVkID8gQ3VycmVudFJlc291cmNlT3duZXIgOiBOVUxMLAotCQkJCQkJICBfU1BJX2N1cnJlbnQt PnF1ZXJ5RW52KTsKKwkJCQkJCSAgX1NQSV9jdXJyZW50LT5xdWVyeUVudiwKKwkJCQkJCSAgTlVM TCAvKiBOb3QgaW50ZXJlc3RlZCBpbiBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgKi8pOwogCUFzc2Vy dChjcGxhbiA9PSBwbGFuc291cmNlLT5ncGxhbik7CiAKIAkvKiBQb3AgdGhlIGVycm9yIGNvbnRl eHQgc3RhY2sgKi8KQEAgLTI0NzMsNyArMjQ4MSw5IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBs YW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJewogCQlDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlID0gKENhY2hlZFBsYW5Tb3VyY2UgKikgbGZpcnN0KGxj MSk7CiAJCUxpc3QJICAgKnN0bXRfbGlzdDsKLQkJTGlzdENlbGwgICAqbGMyOworCQlMaXN0CSAg ICpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0OworCQlMaXN0Q2VsbCAgICpsYzIsCisJCQkJICAgKmxj MzsKIAogCQlzcGljYWxsYmFja2FyZy5xdWVyeSA9IHBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmluZzsK IApAQCAtMjU0OSw4ICsyNTU5LDEwIEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxh biwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCSAqIHBsYW4sIHRoZSByZWZj b3VudCBtdXN0IGJlIGJhY2tlZCBieSB0aGUgcGxhbl9vd25lci4KIAkJICovCiAJCWNwbGFuID0g R2V0Q2FjaGVkUGxhbihwbGFuc291cmNlLCBvcHRpb25zLT5wYXJhbXMsCi0JCQkJCQkJICBwbGFu X293bmVyLCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52KTsKLQorCQkJCQkJCSAgcGxhbl9vd25lciwg X1NQSV9jdXJyZW50LT5xdWVyeUVudiwKKwkJCQkJCQkgJnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3Qp OworCQlBc3NlcnQobGlzdF9sZW5ndGgoY3BsYW4tPnN0bXRfbGlzdCkgPT0KKwkJCSAgIGxpc3Rf bGVuZ3RoKHBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpKTsKIAkJc3RtdF9saXN0ID0gY3BsYW4tPnN0 bXRfbGlzdDsKIAogCQkvKgpAQCAtMjU4OSw5ICsyNjAxLDEwIEBAIF9TUElfZXhlY3V0ZV9wbGFu KFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQl9 CiAJCX0KIAotCQlmb3JlYWNoKGxjMiwgc3RtdF9saXN0KQorCQlmb3Jib3RoKGxjMiwgc3RtdF9s aXN0LCBsYzMsIHBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpCiAJCXsKIAkJCVBsYW5uZWRTdG10ICpz dG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIGxjMik7CisJCQlQYXJ0aXRpb25QcnVuZVJl c3VsdCAqcGFydF9wcnVuZV9yZXN1bHQgPSBsZmlyc3Rfbm9kZShQYXJ0aXRpb25QcnVuZVJlc3Vs dCwgbGMzKTsKIAkJCWJvb2wJCWNhblNldFRhZyA9IHN0bXQtPmNhblNldFRhZzsKIAkJCURlc3RS ZWNlaXZlciAqZGVzdDsKIApAQCAtMjY2Myw3ICsyNjc2LDcgQEAgX1NQSV9leGVjdXRlX3BsYW4o U1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCQll bHNlCiAJCQkJCXNuYXAgPSBJbnZhbGlkU25hcHNob3Q7CiAKLQkJCQlxZGVzYyA9IENyZWF0ZVF1 ZXJ5RGVzYyhzdG10LAorCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsIHBhcnRfcHJ1 bmVfcmVzdWx0LAogCQkJCQkJCQkJCXBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmluZywKIAkJCQkJCQkJ CQlzbmFwLCBjcm9zc2NoZWNrX3NuYXBzaG90LAogCQkJCQkJCQkJCWRlc3QsCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlm dW5jcy5jCmluZGV4IGU3NmZkYThlYmEuLmFmZDAzMzJkZGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL25vZGVzL2NvcHlmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5j CkBAIC0xNjAsNyArMTYwLDYgQEAgX2NvcHlFeHRlbnNpYmxlTm9kZShjb25zdCBFeHRlbnNpYmxl Tm9kZSAqZnJvbSkKIAlyZXR1cm4gbmV3bm9kZTsKIH0KIAotCiAvKgogICogY29weU9iamVjdElt cGwgLS0gaW1wbGVtZW50YXRpb24gb2YgY29weU9iamVjdCgpOyBzZWUgbm9kZXMvbm9kZXMuaAog ICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMgYi9zcmMvYmFja2Vu ZC9ub2Rlcy9vdXRmdW5jcy5jCmluZGV4IDgxZjZhOTA5M2MuLjg0YTE5NWFkY2EgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMv b3V0ZnVuY3MuYwpAQCAtMjk0LDcgKzI5NCw2IEBAIG91dERhdHVtKFN0cmluZ0luZm8gc3RyLCBE YXR1bSB2YWx1ZSwgaW50IHR5cGxlbiwgYm9vbCB0eXBieXZhbCkKIAogI2luY2x1ZGUgIm91dGZ1 bmNzLmZ1bmNzLmMiCiAKLQogLyoKICAqIFN1cHBvcnQgZnVuY3Rpb25zIGZvciBub2RlcyB3aXRo IGN1c3RvbV9yZWFkX3dyaXRlIGF0dHJpYnV0ZSBvcgogICogc3BlY2lhbF9yZWFkX3dyaXRlIGF0 dHJpYnV0ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgYi9zcmMv YmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwppbmRleCAxNDIxNjg2OTM4Li5kNTc0NzhiZGU5IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMvYmFja2Vu ZC9ub2Rlcy9yZWFkZnVuY3MuYwpAQCAtMTU4LDYgKzE1OCwxMSBAQAogCXRva2VuID0gcGdfc3Ry dG9rKCZsZW5ndGgpOwkJLyogc2tpcCA6ZmxkbmFtZSAqLyBcCiAJbG9jYWxfbm9kZS0+ZmxkbmFt ZSA9IHJlYWRJbnRDb2xzKGxlbikKIAorLyogUmVhZCBhbiBJbmRleCBhcnJheSAqLworI2RlZmlu ZSBSRUFEX0lOREVYX0FSUkFZKGZsZG5hbWUsIGxlbikgXAorCXRva2VuID0gcGdfc3RydG9rKCZs ZW5ndGgpOwkJLyogc2tpcCA6ZmxkbmFtZSAqLyBcCisJbG9jYWxfbm9kZS0+ZmxkbmFtZSA9IHJl YWRJbmRleENvbHMobGVuKQorCiAvKiBSZWFkIGEgYm9vbCBhcnJheSAqLwogI2RlZmluZSBSRUFE X0JPT0xfQVJSQVkoZmxkbmFtZSwgbGVuKSBcCiAJdG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0aCk7 CQkvKiBza2lwIDpmbGRuYW1lICovIFwKQEAgLTYyMyw2ICs2MjgsMzAgQEAgcmVhZEludENvbHMo aW50IG51bUNvbHMpCiAJcmV0dXJuIGludF92YWxzOwogfQogCisvKgorICogcmVhZEluZGV4Q29s cworICovCitJbmRleCAqCityZWFkSW5kZXhDb2xzKGludCBudW1Db2xzKQoreworCWludAkJCXRv a2VuTGVuZ3RoLAorCQkJCWk7CisJY29uc3QgY2hhciAqdG9rZW47CisJSW5kZXgJICAgKmluZGV4 X3ZhbHM7CisKKwlpZiAobnVtQ29scyA8PSAwKQorCQlyZXR1cm4gTlVMTDsKKworCWluZGV4X3Zh bHMgPSAoSW5kZXggKikgcGFsbG9jKG51bUNvbHMgKiBzaXplb2YoSW5kZXgpKTsKKwlmb3IgKGkg PSAwOyBpIDwgbnVtQ29sczsgaSsrKQorCXsKKwkJdG9rZW4gPSBwZ19zdHJ0b2soJnRva2VuTGVu Z3RoKTsKKwkJaW5kZXhfdmFsc1tpXSA9IGF0b3VpKHRva2VuKTsKKwl9CisKKwlyZXR1cm4gaW5k ZXhfdmFsczsKK30KKwogLyoKICAqIHJlYWRCb29sQ29scwogICovCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9wbGFubmVyLmMKaW5kZXggYjExMjQ5ZWQ4Zi4uNzE0MTAzNWNjNCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNTE5LDcgKzUxOSw5IEBAIHN0YW5kYXJkX3BsYW5u ZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsIGludCBjdXJzb3JPcHRp b25zLAogCXJlc3VsdC0+cGFyYWxsZWxNb2RlTmVlZGVkID0gZ2xvYi0+cGFyYWxsZWxNb2RlTmVl ZGVkOwogCXJlc3VsdC0+cGxhblRyZWUgPSB0b3BfcGxhbjsKIAlyZXN1bHQtPnBhcnRQcnVuZUlu Zm9zID0gZ2xvYi0+cGFydFBydW5lSW5mb3M7CisJcmVzdWx0LT5jb250YWluc0luaXRpYWxQcnVu aW5nID0gZ2xvYi0+Y29udGFpbnNJbml0aWFsUHJ1bmluZzsKIAlyZXN1bHQtPnJ0YWJsZSA9IGds b2ItPmZpbmFscnRhYmxlOworCXJlc3VsdC0+bWluTG9ja1JlbGlkcyA9IGdsb2ItPm1pbkxvY2tS ZWxpZHM7CiAJcmVzdWx0LT5yZXN1bHRSZWxhdGlvbnMgPSBnbG9iLT5yZXN1bHRSZWxhdGlvbnM7 CiAJcmVzdWx0LT5hcHBlbmRSZWxhdGlvbnMgPSBnbG9iLT5hcHBlbmRSZWxhdGlvbnM7CiAJcmVz dWx0LT5zdWJwbGFucyA9IGdsb2ItPnN1YnBsYW5zOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0 cmVmcy5jCmluZGV4IGI4ZDU2MTA1OTMuLmRhNzQ5ZTMzMWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9zZXRyZWZzLmMKQEAgLTI3MCw2ICsyNzAsMTYgQEAgc2V0X3BsYW5fcmVmZXJlbmNlcyhQ bGFubmVySW5mbyAqcm9vdCwgUGxhbiAqcGxhbikKIAkgKi8KIAlhZGRfcnRlc190b19mbGF0X3J0 YWJsZShyb290LCBmYWxzZSk7CiAKKwkvKgorCSAqIEFkZCB0aGUgcXVlcnkncyBhZGp1c3RlZCBy YW5nZSBvZiBSVCBpbmRleGVzIHRvIGdsb2ItPm1pbkxvY2tSZWxpZHMuCisJICogVGhlIGFkanVz dGVkIFJUIGluZGV4ZXMgb2YgcHJ1bmFibGUgcmVsYXRpb25zIHdpbGwgYmUgZGVsZXRlZCBmcm9t IHRoZQorCSAqIHNldCBiZWxvdyB3aGVyZSBQYXJ0aXRpb25QcnVuZUluZm9zIGFyZSBwcm9jZXNz ZWQuCisJICovCisJZ2xvYi0+bWluTG9ja1JlbGlkcyA9CisJCWJtc19hZGRfcmFuZ2UoZ2xvYi0+ bWluTG9ja1JlbGlkcywKKwkJCQkJICBydG9mZnNldCArIDEsCisJCQkJCSAgcnRvZmZzZXQgKyBs aXN0X2xlbmd0aChyb290LT5wYXJzZS0+cnRhYmxlKSk7CisKIAkvKgogCSAqIEFkanVzdCBSVCBp bmRleGVzIG9mIFBsYW5Sb3dNYXJrcyBhbmQgYWRkIHRvIGZpbmFsIHJvd21hcmtzIGxpc3QKIAkg Ki8KQEAgLTM1Miw2ICszNjIsNyBAQCBzZXRfcGxhbl9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpy b290LCBQbGFuICpwbGFuKQogCWZvcmVhY2ggKGxjLCByb290LT5wYXJ0UHJ1bmVJbmZvcykKIAl7 CiAJCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvID0gbGZpcnN0KGxjKTsKKwkJQml0bWFw c2V0ICpsZWFmcGFydF9ydGlzID0gTlVMTDsKIAkJTGlzdENlbGwgICpsOwogCiAJCWZvcmVhY2go bCwgcHJ1bmVpbmZvLT5wcnVuZV9pbmZvcykKQEAgLTM2MiwxNSArMzczLDUwIEBAIHNldF9wbGFu X3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsIFBsYW4gKnBsYW4pCiAJCQlmb3JlYWNoKGwy LCBwcnVuZV9pbmZvcykKIAkJCXsKIAkJCQlQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyAqcGluZm8g PSBsZmlyc3QobDIpOworCQkJCWludAkJaTsKIAogCQkJCS8qIFJUIGluZGV4IG9mIHRoZSB0YWJs ZSB0byB3aGljaCB0aGUgcGluZm8gYmVsb25ncy4gKi8KIAkJCQlwaW5mby0+cnRpbmRleCArPSBy dG9mZnNldDsKKworCQkJCS8qIEFsc28gb2YgdGhlIGxlYWYgcGFydGl0aW9ucyB0aGF0IG1pZ2h0 IGJlIHNjYW5uZWQuICovCisJCQkJZm9yIChpID0gMDsgaSA8IHBpbmZvLT5ucGFydHM7IGkrKykK KwkJCQl7CisJCQkJCWlmIChwaW5mby0+cnRpX21hcFtpXSA+IDAgJiYgcGluZm8tPnN1YnBsYW5f bWFwW2ldID49IDApCisJCQkJCXsKKwkJCQkJCXBpbmZvLT5ydGlfbWFwW2ldICs9IHJ0b2Zmc2V0 OworCQkJCQkJbGVhZnBhcnRfcnRpcyA9IGJtc19hZGRfbWVtYmVyKGxlYWZwYXJ0X3J0aXMsCisJ CQkJCQkJCQkJCQkJICAgcGluZm8tPnJ0aV9tYXBbaV0pOworCQkJCQl9CisJCQkJfQogCQkJfQog CQl9CiAKKwkJaWYgKHBydW5laW5mby0+bmVlZHNfaW5pdF9wcnVuaW5nKQorCQl7CisJCQlnbG9i LT5jb250YWluc0luaXRpYWxQcnVuaW5nID0gdHJ1ZTsKKworCQkJLyoKKwkJCSAqIERlbGV0ZSB0 aGUgbGVhZiBwYXJ0aXRpb24gUlRJcyBmcm9tIHRoZSBnbG9iYWwgc2V0IG9mIHJlbGF0aW9ucwor CQkJICogdG8gYmUgbG9ja2VkIGJlZm9yZSBleGVjdXRpbmcgdGhlIHBsYW4uICBBY3F1aXJlRXhl Y3V0b3JMb2NrcygpCisJCQkgKiB3aWxsIGZpbmQgdGhlIG9uZXMgdG8gYWRkIHRvIHRoZSBzZXQg YWZ0ZXIgcGVyZm9ybWluZyBpbml0aWFsCisJCQkgKiBwcnVuaW5nLgorCQkJICovCisJCQlnbG9i LT5taW5Mb2NrUmVsaWRzID0gYm1zX2RlbF9tZW1iZXJzKGdsb2ItPm1pbkxvY2tSZWxpZHMsCisJ CQkJCQkJCQkJCQkgIGxlYWZwYXJ0X3J0aXMpOworCQl9CisKIAkJZ2xvYi0+cGFydFBydW5lSW5m b3MgPSBsYXBwZW5kKGdsb2ItPnBhcnRQcnVuZUluZm9zLCBwcnVuZWluZm8pOwogCX0KIAorCS8q CisJICogSXQgc2VlbXMgd29ydGggZG9pbmcgYSBibXNfY29weSgpIG9uIGdsb2ItPm1pbkxvY2tS ZWxpZHMgaWYgd2UgZGVsZXRlZAorCSAqIGJpdHMgZnJvbSBpdCBhYm92ZSB0byBnZXQgcmlkIG9m IGFueSBlbXB0eSB0YWlsIGJpdHMuICBJdCBzZWVtcyBiZXR0ZXIKKwkgKiBmb3IgdGhlIGxvb3Ag b3ZlciB0aGlzIHNldCBpbiBBY3F1aXJlRXhlY3V0b3JMb2NrcygpIHRvIG5vdCBoYXZlIHRvIGdv CisJICogdGhyb3VnaCB0aG9zZSB1c2VsZXNzIGJpdCB3b3Jkcy4KKwkgKi8KKwlpZiAoZ2xvYi0+ Y29udGFpbnNJbml0aWFsUHJ1bmluZykKKwkJZ2xvYi0+bWluTG9ja1JlbGlkcyA9IGJtc19jb3B5 KGdsb2ItPm1pbkxvY2tSZWxpZHMpOworCiAJcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jIGIvc3JjL2JhY2tlbmQvcGFy dGl0aW9uaW5nL3BhcnRwcnVuZS5jCmluZGV4IGQ3N2Y3ZDNhZWYuLjk1MmM1YjgzMjcgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYworKysgYi9zcmMvYmFj a2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKQEAgLTE0NCw3ICsxNDQsOSBAQCBzdGF0aWMg TGlzdCAqbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsCiAJ CQkJCQkJCQkJICAgTGlzdCAqcHJ1bmVxdWFsLAogCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqcGFy dHJlbGlkcywKIAkJCQkJCQkJCQkgICBpbnQgKnJlbGlkX3N1YnBsYW5fbWFwLAotCQkJCQkJCQkJ CSAgIEJpdG1hcHNldCAqKm1hdGNoZWRzdWJwbGFucyk7CisJCQkJCQkJCQkJICAgQml0bWFwc2V0 ICoqbWF0Y2hlZHN1YnBsYW5zLAorCQkJCQkJCQkJCSAgIGJvb2wgKm5lZWRzX2luaXRfcHJ1bmlu ZywKKwkJCQkJCQkJCQkgICBib29sICpuZWVkc19leGVjX3BydW5pbmcpOwogc3RhdGljIHZvaWQg Z2VuX3BhcnRwcnVuZV9zdGVwcyhSZWxPcHRJbmZvICpyZWwsIExpc3QgKmNsYXVzZXMsCiAJCQkJ CQkJCVBhcnRDbGF1c2VUYXJnZXQgdGFyZ2V0LAogCQkJCQkJCQlHZW5lcmF0ZVBydW5pbmdTdGVw c0NvbnRleHQgKmNvbnRleHQpOwpAQCAtMjM0LDYgKzIzNiw4IEBAIG1ha2VfcGFydGl0aW9uX3By dW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCWludAkJ ICAgKnJlbGlkX3N1YnBsYW5fbWFwOwogCUxpc3RDZWxsICAgKmxjOwogCWludAkJCWk7CisJYm9v bAkJbmVlZHNfaW5pdF9wcnVuaW5nID0gZmFsc2U7CisJYm9vbAkJbmVlZHNfZXhlY19wcnVuaW5n ID0gZmFsc2U7CiAKIAkvKgogCSAqIFNjYW4gdGhlIHN1YnBhdGhzIHRvIHNlZSB3aGljaCBvbmVz IGFyZSBzY2FucyBvZiBwYXJ0aXRpb24gY2hpbGQKQEAgLTMxMywxMiArMzE3LDE2IEBAIG1ha2Vf cGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50 cmVsLAogCQlCaXRtYXBzZXQgICpwYXJ0cmVsaWRzID0gKEJpdG1hcHNldCAqKSBsZmlyc3QobGMp OwogCQlMaXN0CSAgICpwaW5mb2xpc3Q7CiAJCUJpdG1hcHNldCAgKm1hdGNoZWRzdWJwbGFucyA9 IE5VTEw7CisJCWJvb2wJCXBhcnRyZWxfbmVlZHNfaW5pdF9wcnVuaW5nOworCQlib29sCQlwYXJ0 cmVsX25lZWRzX2V4ZWNfcHJ1bmluZzsKIAogCQlwaW5mb2xpc3QgPSBtYWtlX3BhcnRpdGlvbmVk cmVsX3BydW5laW5mbyhyb290LCBwYXJlbnRyZWwsCiAJCQkJCQkJCQkJCQkgIHBydW5lcXVhbCwK IAkJCQkJCQkJCQkJCSAgcGFydHJlbGlkcywKIAkJCQkJCQkJCQkJCSAgcmVsaWRfc3VicGxhbl9t YXAsCi0JCQkJCQkJCQkJCQkgICZtYXRjaGVkc3VicGxhbnMpOworCQkJCQkJCQkJCQkJICAmbWF0 Y2hlZHN1YnBsYW5zLAorCQkJCQkJCQkJCQkJICAmcGFydHJlbF9uZWVkc19pbml0X3BydW5pbmcs CisJCQkJCQkJCQkJCQkgICZwYXJ0cmVsX25lZWRzX2V4ZWNfcHJ1bmluZyk7CiAKIAkJLyogV2hl biBwcnVuaW5nIGlzIHBvc3NpYmxlLCByZWNvcmQgdGhlIG1hdGNoZWQgc3VicGxhbnMgKi8KIAkJ aWYgKHBpbmZvbGlzdCAhPSBOSUwpCkBAIC0zMjcsNiArMzM1LDkgQEAgbWFrZV9wYXJ0aXRpb25f cHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCQlh bGxtYXRjaGVkc3VicGxhbnMgPSBibXNfam9pbihtYXRjaGVkc3VicGxhbnMsCiAJCQkJCQkJCQkJ ICBhbGxtYXRjaGVkc3VicGxhbnMpOwogCQl9CisKKwkJbmVlZHNfaW5pdF9wcnVuaW5nIHw9IHBh cnRyZWxfbmVlZHNfaW5pdF9wcnVuaW5nOworCQluZWVkc19leGVjX3BydW5pbmcgfD0gcGFydHJl bF9uZWVkc19leGVjX3BydW5pbmc7CiAJfQogCiAJcGZyZWUocmVsaWRfc3VicGxhbl9tYXApOwpA QCAtMzQxLDYgKzM1Miw4IEBAIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCS8qIEVsc2UgYnVpbGQgdGhlIHJlc3VsdCBk YXRhIHN0cnVjdHVyZSAqLwogCXBydW5laW5mbyA9IG1ha2VOb2RlKFBhcnRpdGlvblBydW5lSW5m byk7CiAJcHJ1bmVpbmZvLT5wcnVuZV9pbmZvcyA9IHBydW5lcmVsaW5mb3M7CisJcHJ1bmVpbmZv LT5uZWVkc19pbml0X3BydW5pbmcgPSBuZWVkc19pbml0X3BydW5pbmc7CisJcHJ1bmVpbmZvLT5u ZWVkc19leGVjX3BydW5pbmcgPSBuZWVkc19leGVjX3BydW5pbmc7CiAKIAkvKgogCSAqIFNvbWUg c3VicGxhbnMgbWF5IG5vdCBiZWxvbmcgdG8gYW55IG9mIHRoZSBpZGVudGlmaWVkIHBhcnRpdGlv bmVkIHJlbHMuCkBAIC00NDEsMTMgKzQ1NCwxOCBAQCBhZGRfcGFydF9yZWxpZHMoTGlzdCAqYWxs cGFydHJlbGlkcywgQml0bWFwc2V0ICpwYXJ0cmVsaWRzKQogICogSWYgd2UgY2Fubm90IGZpbmQg YW55IHVzZWZ1bCBydW4tdGltZSBwcnVuaW5nIHN0ZXBzLCByZXR1cm4gTklMLgogICogSG93ZXZl ciwgb24gc3VjY2VzcywgZWFjaCByZWwgaWRlbnRpZmllZCBpbiBwYXJ0cmVsaWRzIHdpbGwgaGF2 ZQogICogYW4gZWxlbWVudCBpbiB0aGUgcmVzdWx0IGxpc3QsIGV2ZW4gaWYgc29tZSBvZiB0aGVt IGFyZSB1c2VsZXNzLgorICogKm5lZWRzX2luaXRfcHJ1bmluZyBhbmQgKm5lZWRzX2V4ZWNfcHJ1 bmluZyBhcmUgc2V0IHRvIGluZGljYXRlIHRoYXQgdGhlCisgKiByZXR1cm5lZCBQYXJ0aXRpb25l ZFJlbFBydW5lSW5mb3MgY29udGFpbnMgcHJ1bmluZyBzdGVwcyB0aGF0IGNhbiBiZQorICogcGVy Zm9ybWVkIGJlZm9yZSBhbmQgYWZ0ZXIgZXhlY3V0aW9uIGJlZ2lucywgcmVzcGVjdGl2ZWx5Lgog ICovCiBzdGF0aWMgTGlzdCAqCiBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJCQkJCSAgTGlzdCAqcHJ1bmVx dWFsLAogCQkJCQkJCSAgQml0bWFwc2V0ICpwYXJ0cmVsaWRzLAogCQkJCQkJCSAgaW50ICpyZWxp ZF9zdWJwbGFuX21hcCwKLQkJCQkJCQkgIEJpdG1hcHNldCAqKm1hdGNoZWRzdWJwbGFucykKKwkJ CQkJCQkgIEJpdG1hcHNldCAqKm1hdGNoZWRzdWJwbGFucywKKwkJCQkJCQkgIGJvb2wgKm5lZWRz X2luaXRfcHJ1bmluZywKKwkJCQkJCQkgIGJvb2wgKm5lZWRzX2V4ZWNfcHJ1bmluZykKIHsKIAlS ZWxPcHRJbmZvICp0YXJnZXRwYXJ0ID0gTlVMTDsKIAlMaXN0CSAgICpwaW5mb2xpc3QgPSBOSUw7 CkBAIC00NTgsNiArNDc2LDEwIEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5u ZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJaW50CQkJcnRpOwogCWludAkJ CWk7CiAKKwkvKiBXaWxsIGZpbmQgb3V0IGJlbG93LiAqLworCSpuZWVkc19pbml0X3BydW5pbmcg PSBmYWxzZTsKKwkqbmVlZHNfZXhlY19wcnVuaW5nID0gZmFsc2U7CisKIAkvKgogCSAqIEV4YW1p bmUgZWFjaCBwYXJ0aXRpb25lZCByZWwsIGNvbnN0cnVjdGluZyBhIHRlbXBvcmFyeSBhcnJheSB0 byBtYXAKIAkgKiBmcm9tIHBsYW5uZXIgcmVsaWRzIHRvIGluZGV4IG9mIHRoZSBwYXJ0aXRpb25l ZCByZWwsIGFuZCBidWlsZGluZyBhCkBAIC01NDUsNiArNTY3LDkgQEAgbWFrZV9wYXJ0aXRpb25l ZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwK IAkJICogZXhlY3V0b3IgcGVyLXNjYW4gcHJ1bmluZyBzdGVwcy4gIFRoaXMgZmlyc3QgcGFzcyBj cmVhdGVzIHN0YXJ0dXAKIAkJICogcHJ1bmluZyBzdGVwcyBhbmQgZGV0ZWN0cyB3aGV0aGVyIHRo ZXJlJ3MgYW55IHBvc3NpYmx5LXVzZWZ1bCBxdWFscwogCQkgKiB0aGF0IHdvdWxkIHJlcXVpcmUg cGVyLXNjYW4gcHJ1bmluZy4KKwkJICoKKwkJICogSW4gdGhlIGZpcnN0IHBhc3MsIHdlIG5vdGUg d2hldGhlciB0aGUgMm5kIHBhc3MgaXMgbmVjZXNzYXJ5IGJ5CisJCSAqIG5vdGluZyB0aGUgcHJl c2VuY2Ugb2YgRVhFQyBwYXJhbWV0ZXJzLgogCQkgKi8KIAkJZ2VuX3BhcnRwcnVuZV9zdGVwcyhz dWJwYXJ0LCBwYXJ0cHJ1bmVxdWFsLCBQQVJUVEFSR0VUX0lOSVRJQUwsCiAJCQkJCQkJJmNvbnRl eHQpOwpAQCAtNjE5LDYgKzY0NCwxMiBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQ bGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlwaW5mby0+ZXhlY3Bh cmFtaWRzID0gZXhlY3BhcmFtaWRzOwogCQkvKiBSZW1haW5pbmcgZmllbGRzIHdpbGwgYmUgZmls bGVkIGluIHRoZSBuZXh0IGxvb3AgKi8KIAorCQkvKiByZWNvcmQgd2hpY2ggdHlwZXMgb2YgcHJ1 bmluZyBzdGVwcyB3ZSd2ZSBzZWVuIHNvIGZhciAqLworCQlpZiAoaW5pdGlhbF9wcnVuaW5nX3N0 ZXBzICE9IE5JTCkKKwkJCSpuZWVkc19pbml0X3BydW5pbmcgPSB0cnVlOworCQlpZiAoZXhlY19w cnVuaW5nX3N0ZXBzICE9IE5JTCkKKwkJCSpuZWVkc19leGVjX3BydW5pbmcgPSB0cnVlOworCiAJ CXBpbmZvbGlzdCA9IGxhcHBlbmQocGluZm9saXN0LCBwaW5mbyk7CiAJfQogCkBAIC02NDYsNiAr Njc3LDcgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3Qs IFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJaW50CQkgICAqc3VicGxhbl9tYXA7CiAJCWludAkJ ICAgKnN1YnBhcnRfbWFwOwogCQlPaWQJCSAgICpyZWxpZF9tYXA7CisJCUluZGV4CSAgICpydGlf bWFwOwogCiAJCS8qCiAJCSAqIENvbnN0cnVjdCB0aGUgc3VicGxhbiBhbmQgc3VicGFydCBtYXBz IGZvciB0aGlzIHBhcnRpdGlvbmluZyBsZXZlbC4KQEAgLTY1OCw2ICs2OTAsNyBAQCBtYWtlX3Bh cnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFy ZW50cmVsLAogCQlzdWJwYXJ0X21hcCA9IChpbnQgKikgcGFsbG9jKG5wYXJ0cyAqIHNpemVvZihp bnQpKTsKIAkJbWVtc2V0KHN1YnBhcnRfbWFwLCAtMSwgbnBhcnRzICogc2l6ZW9mKGludCkpOwog CQlyZWxpZF9tYXAgPSAoT2lkICopIHBhbGxvYzAobnBhcnRzICogc2l6ZW9mKE9pZCkpOworCQly dGlfbWFwID0gKEluZGV4ICopIHBhbGxvYzAobnBhcnRzICogc2l6ZW9mKEluZGV4KSk7CiAJCXBy ZXNlbnRfcGFydHMgPSBOVUxMOwogCiAJCWkgPSAtMTsKQEAgLTY3Miw2ICs3MDUsNyBAQCBtYWtl X3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAq cGFyZW50cmVsLAogCQkJc3VicGxhbl9tYXBbaV0gPSBzdWJwbGFuaWR4ID0gcmVsaWRfc3VicGxh bl9tYXBbcGFydHJlbC0+cmVsaWRdIC0gMTsKIAkJCXN1YnBhcnRfbWFwW2ldID0gc3VicGFydGlk eCA9IHJlbGlkX3N1YnBhcnRfbWFwW3BhcnRyZWwtPnJlbGlkXSAtIDE7CiAJCQlyZWxpZF9tYXBb aV0gPSBwbGFubmVyX3J0X2ZldGNoKHBhcnRyZWwtPnJlbGlkLCByb290KS0+cmVsaWQ7CisJCQly dGlfbWFwW2ldID0gcGFydHJlbC0+cmVsaWQ7CiAJCQlpZiAoc3VicGxhbmlkeCA+PSAwKQogCQkJ ewogCQkJCXByZXNlbnRfcGFydHMgPSBibXNfYWRkX21lbWJlcihwcmVzZW50X3BhcnRzLCBpKTsK QEAgLTY5Niw2ICs3MzAsNyBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlwaW5mby0+c3VicGxhbl9tYXAg PSBzdWJwbGFuX21hcDsKIAkJcGluZm8tPnN1YnBhcnRfbWFwID0gc3VicGFydF9tYXA7CiAJCXBp bmZvLT5yZWxpZF9tYXAgPSByZWxpZF9tYXA7CisJCXBpbmZvLT5ydGlfbWFwID0gcnRpX21hcDsK IAl9CiAKIAlwZnJlZShyZWxpZF9zdWJwYXJ0X21hcCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggNmYx OGI2ODg1Ni4uMTZiZGE0MmYxMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jl cy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtMTU5Niw2ICsxNTk2LDcg QEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdlKQogCWludDE2CSAg ICpyZm9ybWF0cyA9IE5VTEw7CiAJQ2FjaGVkUGxhblNvdXJjZSAqcHNyYzsKIAlDYWNoZWRQbGFu ICpjcGxhbjsKKwlMaXN0CSAgICpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0OwogCVBvcnRhbAkJcG9y dGFsOwogCWNoYXIJICAgKnF1ZXJ5X3N0cmluZzsKIAljaGFyCSAgICpzYXZlZF9zdG10X25hbWU7 CkBAIC0xOTcxLDcgKzE5NzIsOSBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0 X21lc3NhZ2UpCiAJICogd2lsbCBiZSBnZW5lcmF0ZWQgaW4gTWVzc2FnZUNvbnRleHQuICBUaGUg cGxhbiByZWZjb3VudCB3aWxsIGJlCiAJICogYXNzaWduZWQgdG8gdGhlIFBvcnRhbCwgc28gaXQg d2lsbCBiZSByZWxlYXNlZCBhdCBwb3J0YWwgZGVzdHJ1Y3Rpb24uCiAJICovCi0JY3BsYW4gPSBH ZXRDYWNoZWRQbGFuKHBzcmMsIHBhcmFtcywgTlVMTCwgTlVMTCk7CisJY3BsYW4gPSBHZXRDYWNo ZWRQbGFuKHBzcmMsIHBhcmFtcywgTlVMTCwgTlVMTCwgJnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3Qp OworCUFzc2VydChsaXN0X2xlbmd0aChjcGxhbi0+c3RtdF9saXN0KSA9PQorCQkgICBsaXN0X2xl bmd0aChwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KSk7CiAKIAkvKgogCSAqIE5vdyB3ZSBjYW4gZGVm aW5lIHRoZSBwb3J0YWwuCkBAIC0xOTg2LDYgKzE5ODksOSBAQCBleGVjX2JpbmRfbWVzc2FnZShT dHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJCQkJCSAgY3BsYW4tPnN0bXRfbGlzdCwKIAkJCQkJ ICBjcGxhbik7CiAKKwkvKiBDb3B5IFBhcnRpdGlvblBydW5lUmVzdWx0cyBpbnRvIHRoZSBwb3J0 YWwncyBjb250ZXh0LiAqLworCVBvcnRhbFN0b3JlUGFydGl0aW9uUHJ1bmVSZXN1bHRzKHBvcnRh bCwgcGFydF9wcnVuZV9yZXN1bHRfbGlzdCk7CisKIAkvKiBEb25lIHdpdGggdGhlIHNuYXBzaG90 IHVzZWQgZm9yIHBhcmFtZXRlciBJL08gYW5kIHBhcnNpbmcvcGxhbm5pbmcgKi8KIAlpZiAoc25h cHNob3Rfc2V0KQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5kZXggNWFhNWEz NTBmMy4uOGNjMmUyMTYyZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwor KysgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCkBAIC0zNSw3ICszNSw3IEBACiBQb3J0YWwJ CUFjdGl2ZVBvcnRhbCA9IE5VTEw7CiAKIAotc3RhdGljIHZvaWQgUHJvY2Vzc1F1ZXJ5KFBsYW5u ZWRTdG10ICpwbGFuLAorc3RhdGljIHZvaWQgUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFu LCBQYXJ0aXRpb25QcnVuZVJlc3VsdCAqcGFydF9wcnVuZV9yZXN1bHQsCiAJCQkJCQkgY29uc3Qg Y2hhciAqc291cmNlVGV4dCwKIAkJCQkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJCSBR dWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKQEAgLTY1LDYgKzY1LDcgQEAgc3RhdGljIHZvaWQg RG9Qb3J0YWxSZXdpbmQoUG9ydGFsIHBvcnRhbCk7CiAgKi8KIFF1ZXJ5RGVzYyAqCiBDcmVhdGVR dWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAorCQkJCVBhcnRpdGlvblBydW5lUmVz dWx0ICpwYXJ0X3BydW5lX3Jlc3VsdCwKIAkJCQljb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJ CVNuYXBzaG90IHNuYXBzaG90LAogCQkJCVNuYXBzaG90IGNyb3NzY2hlY2tfc25hcHNob3QsCkBA IC03Nyw2ICs3OCw4IEBAIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQs CiAKIAlxZC0+b3BlcmF0aW9uID0gcGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBlOwkvKiBvcGVyYXRp b24gKi8KIAlxZC0+cGxhbm5lZHN0bXQgPSBwbGFubmVkc3RtdDsJLyogcGxhbiAqLworCXFkLT5w YXJ0X3BydW5lX3Jlc3VsdCA9IHBhcnRfcHJ1bmVfcmVzdWx0OwkvKiBFeGVjdXRvckRvSW5pdGlh bFBydW5pbmcoKQorCQkJCQkJCQkJCQkJICogb3V0cHV0IGZvciBwbGFuICovCiAJcWQtPnNvdXJj ZVRleHQgPSBzb3VyY2VUZXh0OwkvKiBxdWVyeSB0ZXh0ICovCiAJcWQtPnNuYXBzaG90ID0gUmVn aXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CS8qIHNuYXBzaG90ICovCiAJLyogUkkgY2hlY2sgc25h cHNob3QgKi8KQEAgLTEyMiw2ICsxMjUsNyBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRl c2MpCiAgKgkJUE9SVEFMX09ORV9SRVRVUk5JTkcsIG9yIFBPUlRBTF9PTkVfTU9EX1dJVEggcG9y dGFsCiAgKgogICoJcGxhbjogdGhlIHBsYW4gdHJlZSBmb3IgdGhlIHF1ZXJ5CisgKglwYXJ0X3By dW5lX3Jlc3VsdDogRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKCkgb3V0cHV0IGZvciB0aGUgcGxh biB0cmVlCiAgKglzb3VyY2VUZXh0OiB0aGUgc291cmNlIHRleHQgb2YgdGhlIHF1ZXJ5CiAgKglw YXJhbXM6IGFueSBwYXJhbWV0ZXJzIG5lZWRlZAogICoJZGVzdDogd2hlcmUgdG8gc2VuZCByZXN1 bHRzCkBAIC0xMzQsNiArMTM4LDcgQEAgRnJlZVF1ZXJ5RGVzYyhRdWVyeURlc2MgKnFkZXNjKQog ICovCiBzdGF0aWMgdm9pZAogUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLAorCQkJIFBh cnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdCwKIAkJCSBjb25zdCBjaGFyICpz b3VyY2VUZXh0LAogCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJIFF1ZXJ5RW52aXJvbm1l bnQgKnF1ZXJ5RW52LApAQCAtMTQ1LDcgKzE1MCw3IEBAIFByb2Nlc3NRdWVyeShQbGFubmVkU3Rt dCAqcGxhbiwKIAkvKgogCSAqIENyZWF0ZSB0aGUgUXVlcnlEZXNjIG9iamVjdAogCSAqLwotCXF1 ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBzb3VyY2VUZXh0LAorCXF1ZXJ5RGVzYyA9 IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwYXJ0X3BydW5lX3Jlc3VsdCwgc291cmNlVGV4dCwKIAkJ CQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0 LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKIApAQCAtNDkxLDggKzQ5NiwxMyBAQCBQb3J0YWxTdGFy dChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkvKgogCQkJCSAqIENy ZWF0ZSBRdWVyeURlc2MgaW4gcG9ydGFsJ3MgY29udGV4dDsgZm9yIHRoZSBtb21lbnQsIHNldAog CQkJCSAqIHRoZSBkZXN0aW5hdGlvbiB0byBEZXN0Tm9uZS4KKwkJCQkgKgorCQkJCSAqIFRoZXJl IGlzIG5vIFBhcnRpdGlvblBydW5lUmVzdWx0IHVubGVzcyB0aGUgUGxhbm5lZFN0bXQgaXMKKwkJ CQkgKiBmcm9tIGEgQ2FjaGVkUGxhbi4KIAkJCQkgKi8KIAkJCQlxdWVyeURlc2MgPSBDcmVhdGVR dWVyeURlc2MobGluaXRpYWxfbm9kZShQbGFubmVkU3RtdCwgcG9ydGFsLT5zdG10cyksCisJCQkJ CQkJCQkJCXBvcnRhbC0+cGFydF9wcnVuZV9yZXN1bHRzID09IE5JTCA/IE5VTEwgOgorCQkJCQkJ CQkJCQlsaW5pdGlhbChwb3J0YWwtPnBhcnRfcHJ1bmVfcmVzdWx0cyksCiAJCQkJCQkJCQkJCXBv cnRhbC0+c291cmNlVGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJ CQkJCQkJSW52YWxpZFNuYXBzaG90LApAQCAtMTIyNSw2ICsxMjM1LDggQEAgUG9ydGFsUnVuTXVs dGkoUG9ydGFsIHBvcnRhbCwKIAogCQlpZiAocHN0bXQtPnV0aWxpdHlTdG10ID09IE5VTEwpCiAJ CXsKKwkJCVBhcnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdCA9IE5VTEw7CisK IAkJCS8qCiAJCQkgKiBwcm9jZXNzIGEgcGxhbm5hYmxlIHF1ZXJ5LgogCQkJICovCkBAIC0xMjcx LDEwICsxMjgzLDE4IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQllbHNlCiAJ CQkJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKIAorCQkJLyoKKwkJCSAqIERldGVy bWluZSBpZiB0aGVyZSdzIGEgY29ycmVzcG9uZGluZyBQYXJ0aXRpb25QcnVuZVJlc3VsdCBmb3IK KwkJCSAqIHRoaXMgUGxhbm5lZFN0bXQuCisJCQkgKi8KKwkJCWlmIChwb3J0YWwtPnBhcnRfcHJ1 bmVfcmVzdWx0cyAhPSBOSUwpCisJCQkJcGFydF9wcnVuZV9yZXN1bHQgPSBsaXN0X250aChwb3J0 YWwtPnBhcnRfcHJ1bmVfcmVzdWx0cywKKwkJCQkJCQkJCQkJIGZvcmVhY2hfY3VycmVudF9pbmRl eChzdG10bGlzdF9pdGVtKSk7CisKIAkJCWlmIChwc3RtdC0+Y2FuU2V0VGFnKQogCQkJewogCQkJ CS8qIHN0YXRlbWVudCBjYW4gc2V0IHRhZyBzdHJpbmcgKi8KLQkJCQlQcm9jZXNzUXVlcnkocHN0 bXQsCisJCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LCBwYXJ0X3BydW5lX3Jlc3VsdCwKIAkJCQkJCQkg cG9ydGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywKIAkJCQkJ CQkgcG9ydGFsLT5xdWVyeUVudiwKQEAgLTEyODMsNyArMTMwMyw3IEBAIFBvcnRhbFJ1bk11bHRp KFBvcnRhbCBwb3J0YWwsCiAJCQllbHNlCiAJCQl7CiAJCQkJLyogc3RtdCBhZGRlZCBieSByZXdy aXRlIGNhbm5vdCBzZXQgdGFnICovCi0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAorCQkJCVByb2Nl c3NRdWVyeShwc3RtdCwgcGFydF9wcnVuZV9yZXN1bHQsCiAJCQkJCQkJIHBvcnRhbC0+c291cmNl VGV4dCwKIAkJCQkJCQkgcG9ydGFsLT5wb3J0YWxQYXJhbXMsCiAJCQkJCQkJIHBvcnRhbC0+cXVl cnlFbnYsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCmluZGV4IDBkNmEyOTU2NzQuLmQx Yzk2MDU5NzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCkBAIC05OSwxNCArOTks MTkgQEAgc3RhdGljIGRsaXN0X2hlYWQgY2FjaGVkX2V4cHJlc3Npb25fbGlzdCA9IERMSVNUX1NU QVRJQ19JTklUKGNhY2hlZF9leHByZXNzaW9uX2wKIHN0YXRpYyB2b2lkIFJlbGVhc2VHZW5lcmlj UGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKTsKIHN0YXRpYyBMaXN0ICpSZXZhbGlk YXRlQ2FjaGVkUXVlcnkoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkJICAg UXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOwotc3RhdGljIGJvb2wgQ2hlY2tDYWNoZWRQbGFu KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpOworc3RhdGljIGJvb2wgQ2hlY2tDYWNoZWRQ bGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJh bXMsCisJCQkJCQkJTGlzdCAqKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpOwogc3RhdGljIENhY2hl ZFBsYW4gKkJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBMaXN0 ICpxbGlzdCwKLQkJCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywgUXVlcnlFbnZp cm9ubWVudCAqcXVlcnlFbnYpOworCQkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1z LCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKKwkJCQkJCQkJICAgTGlzdCAqKnBhcnRfcHJ1 bmVfcmVzdWx0X2xpc3QpOwogc3RhdGljIGJvb2wgY2hvb3NlX2N1c3RvbV9wbGFuKENhY2hlZFBs YW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFt cyk7CiBzdGF0aWMgZG91YmxlIGNhY2hlZF9wbGFuX2Nvc3QoQ2FjaGVkUGxhbiAqcGxhbiwgYm9v bCBpbmNsdWRlX3BsYW5uZXIpOwogc3RhdGljIFF1ZXJ5ICpRdWVyeUxpc3RHZXRQcmltYXJ5U3Rt dChMaXN0ICpzdG10cyk7Ci1zdGF0aWMgdm9pZCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpz dG10X2xpc3QsIGJvb2wgYWNxdWlyZSk7CitzdGF0aWMgdm9pZCBBY3F1aXJlRXhlY3V0b3JMb2Nr cyhMaXN0ICpzdG10X2xpc3QsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCisJCQkJCQkJCSBM aXN0ICoqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCwKKwkJCQkJCQkJIExpc3QgKipsb2NrZWRSZWxp ZHNfcGVyX3N0bXQpOworc3RhdGljIHZvaWQgUmVsZWFzZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3Rt dF9saXN0LCBMaXN0ICpsb2NrZWRSZWxpZHNfcGVyX3N0bXQpOwogc3RhdGljIHZvaWQgQWNxdWly ZVBsYW5uZXJMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSk7CiBzdGF0aWMgdm9p ZCBTY2FuUXVlcnlGb3JMb2NrcyhRdWVyeSAqcGFyc2V0cmVlLCBib29sIGFjcXVpcmUpOwogc3Rh dGljIGJvb2wgU2NhblF1ZXJ5V2Fsa2VyKE5vZGUgKm5vZGUsIGJvb2wgKmFjcXVpcmUpOwpAQCAt NzkwLDE1ICs3OTUsMjAgQEAgUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2Ug KnBsYW5zb3VyY2UsCiAgKgogICogT24gYSAidHJ1ZSIgcmV0dXJuLCB3ZSBoYXZlIGFjcXVpcmVk IHRoZSBsb2NrcyBuZWVkZWQgdG8gcnVuIHRoZSBwbGFuLgogICogKFdlIG11c3QgZG8gdGhpcyBm b3IgdGhlICJ0cnVlIiByZXN1bHQgdG8gYmUgcmFjZS1jb25kaXRpb24tZnJlZS4pCisgKgorICog U2VlIEdldENhY2hlZFBsYW4oKSdzIGNvbW1lbnQgZm9yIGEgZGVzY3JpcHRpb24gb2YgcGFydF9w cnVuZV9yZXN1bHRfbGlzdC4KICAqLwogc3RhdGljIGJvb2wKLUNoZWNrQ2FjaGVkUGxhbihDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlKQorQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3Vy Y2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCisJCQkJTGlzdCAqKnBh cnRfcHJ1bmVfcmVzdWx0X2xpc3QpCiB7CiAJQ2FjaGVkUGxhbiAqcGxhbiA9IHBsYW5zb3VyY2Ut PmdwbGFuOwogCiAJLyogQXNzZXJ0IHRoYXQgY2FsbGVyIGNoZWNrZWQgdGhlIHF1ZXJ5dHJlZSAq LwogCUFzc2VydChwbGFuc291cmNlLT5pc192YWxpZCk7CiAKKwkqcGFydF9wcnVuZV9yZXN1bHRf bGlzdCA9IE5JTDsKKwogCS8qIElmIHRoZXJlJ3Mgbm8gZ2VuZXJpYyBwbGFuLCBqdXN0IHNheSAi ZmFsc2UiICovCiAJaWYgKCFwbGFuKQogCQlyZXR1cm4gZmFsc2U7CkBAIC04MjAsMTMgKzgzMCwy MSBAQCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKIAkgKi8K IAlpZiAocGxhbi0+aXNfdmFsaWQpCiAJeworCQlMaXN0ICAgKmxvY2tlZFJlbGlkc19wZXJfc3Rt dDsKKwogCQkvKgogCQkgKiBQbGFuIG11c3QgaGF2ZSBwb3NpdGl2ZSByZWZjb3VudCBiZWNhdXNl IGl0IGlzIHJlZmVyZW5jZWQgYnkKIAkJICogcGxhbnNvdXJjZTsgc28gbm8gbmVlZCB0byBmZWFy IGl0IGRpc2FwcGVhcnMgdW5kZXIgdXMgaGVyZS4KIAkJICovCiAJCUFzc2VydChwbGFuLT5yZWZj b3VudCA+IDApOwogCi0JCUFjcXVpcmVFeGVjdXRvckxvY2tzKHBsYW4tPnN0bXRfbGlzdCwgdHJ1 ZSk7CisJCS8qCisJCSAqIExvY2sgcmVsYXRpb25zIHNjYW5uZWQgYnkgdGhlIHBsYW4uICBUaGlz IGlzIHdoZXJlIHRoZSBwcnVuaW5nCisJCSAqIGhhcHBlbnMgaWYgbmVlZGVkLgorCQkgKi8KKwkJ QWNxdWlyZUV4ZWN1dG9yTG9ja3MocGxhbi0+c3RtdF9saXN0LCBib3VuZFBhcmFtcywKKwkJCQkJ CQkgcGFydF9wcnVuZV9yZXN1bHRfbGlzdCwKKwkJCQkJCQkgJmxvY2tlZFJlbGlkc19wZXJfc3Rt dCk7CiAKIAkJLyoKIAkJICogSWYgcGxhbiB3YXMgdHJhbnNpZW50LCBjaGVjayB0byBzZWUgaWYg VHJhbnNhY3Rpb25YbWluIGhhcwpAQCAtODQ4LDcgKzg2NiwxNCBAQCBDaGVja0NhY2hlZFBsYW4o Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKIAkJfQogCiAJCS8qIE9vcHMsIHRoZSByYWNl IGNhc2UgaGFwcGVuZWQuICBSZWxlYXNlIHVzZWxlc3MgbG9ja3MuICovCi0JCUFjcXVpcmVFeGVj dXRvckxvY2tzKHBsYW4tPnN0bXRfbGlzdCwgZmFsc2UpOworCQlSZWxlYXNlRXhlY3V0b3JMb2Nr cyhwbGFuLT5zdG10X2xpc3QsIGxvY2tlZFJlbGlkc19wZXJfc3RtdCk7CisKKwkJLyoKKwkJICog VGhlIG91dHB1dCBsaXN0IGFuZCBhbnkgb2JqZWN0cyB0aGVyZWluIGhhdmUgYmVlbiBhbGxvY2F0 ZWQgaW4gdGhlCisJCSAqIGNhbGxlcidzIGhvcGVmdWxseSBzaG9ydC1saXZlZCBjb250ZXh0LCBz byB3aWxsIG5vdCByZW1haW4gbGVha2VkCisJCSAqIGZvciBsb25nLCB0aG91Z2ggcmVzZXQgdG8g YXZvaWQgaXRzIGFjY2lkZW50YWxseSBiZWluZyBsb29rZWQgYXQuCisJCSAqLworCQkqcGFydF9w cnVuZV9yZXN1bHRfbGlzdCA9IE5JTDsKIAl9CiAKIAkvKgpAQCAtODc0LDEwICs4OTksMTUgQEAg Q2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCiAgKiBQbGFubmlu ZyB3b3JrIGlzIGRvbmUgaW4gdGhlIGNhbGxlcidzIG1lbW9yeSBjb250ZXh0LiAgVGhlIGZpbmlz aGVkIHBsYW4KICAqIGlzIGluIGEgY2hpbGQgbWVtb3J5IGNvbnRleHQsIHdoaWNoIHR5cGljYWxs eSBzaG91bGQgZ2V0IHJlcGFyZW50ZWQKICAqICh1bmxlc3MgdGhpcyBpcyBhIG9uZS1zaG90IHBs YW4sIGluIHdoaWNoIGNhc2Ugd2UgZG9uJ3QgY29weSB0aGUgcGxhbikuCisgKgorICogQSBsaXN0 IG9mIE5VTExzIGlzIHJldHVybmVkIGluICpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0LCBtZWFuaW5n IHRoYXQgbm8KKyAqIFBhcnRpdGlvblBydW5lUmVzdWx0IG5vZGVzIGhhdmUgeWV0IGJlZW4gY3Jl YXRlZCBmb3IgdGhlIHBsYW5zIGluCisgKiBzdG10X2xpc3QuCiAgKi8KIHN0YXRpYyBDYWNoZWRQ bGFuICoKIEJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBMaXN0 ICpxbGlzdCwKLQkJCQlQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVyeUVudmlyb25tZW50 ICpxdWVyeUVudikKKwkJCQlQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVyeUVudmlyb25t ZW50ICpxdWVyeUVudiwKKwkJCQlMaXN0ICoqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCkKIHsKIAlD YWNoZWRQbGFuICpwbGFuOwogCUxpc3QJICAgKnBsaXN0OwpAQCAtMTAwNyw2ICsxMDM3LDE3IEBA IEJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlz dCwKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCisJLyoKKwkgKiBObyBhY3R1 YWwgUGFydGl0aW9uUHJ1bmVSZXN1bHRzIHlldCB0byBhZGQsIHRob3VnaCBtdXN0IGluaXRpYWxp emUKKwkgKiB0aGUgbGlzdCB0byBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBlbGVtZW50cyBhcyB0 aGUgbGlzdCBvZgorCSAqIFBsYW5uZWRTdG10cy4KKwkgKi8KKwkqcGFydF9wcnVuZV9yZXN1bHRf bGlzdCA9IE5JTDsKKwlmb3JlYWNoKGxjLCBwbGlzdCkKKwl7CisJCSpwYXJ0X3BydW5lX3Jlc3Vs dF9saXN0ID0gbGFwcGVuZCgqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCwgTlVMTCk7CisJfQorCiAJ cmV0dXJuIHBsYW47CiB9CiAKQEAgLTExMjYsNiArMTE2NywxNyBAQCBjYWNoZWRfcGxhbl9jb3N0 KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVkZV9wbGFubmVyKQogICogcGxhbiBvciBhIGN1 c3RvbSBwbGFuIGZvciB0aGUgZ2l2ZW4gcGFyYW1ldGVyczogdGhlIGNhbGxlciBkb2VzIG5vdCBr bm93CiAgKiB3aGljaCBpdCB3aWxsIGdldC4KICAqCisgKiBGb3IgZXZlcnkgUGxhbm5lZFN0bXQg Zm91bmQgaW4gdGhlIHJldHVybmVkIENhY2hlZFBsYW4sIGFuIGVsZW1lbnQgdGhhdAorICogaXMg ZWl0aGVyIGEgUGFydGl0aW9uUHJ1bmVSZXN1bHQgb3IgYSBOVUxMIGlzIGFkZGVkIHRvCisgKiAq cGFydF9wcnVuZV9yZXN1bHRfbGlzdCBpZiBuZWVkZWQuICBUaGUgZm9ybWVyIGlmIHRoZSBQbGFu bmVkU3RtdCBpcyBmcm9tCisgKiB0aGUgZXhpc3RpbmcgQ2FjaGVkUGxhbiB0aGF0IGlzIG90aGVy d2lzZSB2YWxpZCBhbmQgY29udGFpbnMgYXQgbGVhc3Qgb25lCisgKiBQYXJ0aXRpb25QcnVuZUlu Zm8gdGhhdCBoYXMgImluaXRpYWwiIHBydW5pbmcgc3RlcHMuICBUaG9zZSBzdGVwcyBhcmUKKyAq IHBlcmZvcm1lZCBieSBjYWxsaW5nIEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpIHRvIGRldGVy bWluZSBvbmx5IHRob3NlCisgKiBsZWFmIHBhcnRpdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGxvY2tl ZCBieSBBY3F1aXJlRXhlY3V0b3JMb2NrcygpIGJ5IHBydW5pbmcKKyAqIGF3YXkgc3VicGxhbnMg dGhhdCBkb24ndCBtYXRjaCB0aGUgcHJ1bmluZyBjb25kaXRpb25zLiAgVGhlCisgKiBQYXJ0aXRp b25QcnVuZVJlc3VsdCBjb250YWlucyBhIGxpc3Qgb2YgYml0bWFwc2V0cyBvZiB0aGUgaW5kZXhl cyBvZgorICogbWF0Y2hpbmcgc3VicGxhbnMsIG9uZSBmb3IgZWFjaCBQYXJ0aXRpb25QcnVuZUlu Zm8uCisgKgogICogT24gcmV0dXJuLCB0aGUgcGxhbiBpcyB2YWxpZCBhbmQgd2UgaGF2ZSBzdWZm aWNpZW50IGxvY2tzIHRvIGJlZ2luCiAgKiBleGVjdXRpb24uCiAgKgpAQCAtMTEzOSwxMSArMTE5 MSwxMyBAQCBjYWNoZWRfcGxhbl9jb3N0KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVkZV9w bGFubmVyKQogICovCiBDYWNoZWRQbGFuICoKIEdldENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJj ZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKLQkJCSAgUmVzb3VyY2VP d25lciBvd25lciwgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpCisJCQkgIFJlc291cmNlT3du ZXIgb3duZXIsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAorCQkJICBMaXN0ICoqcGFydF9w cnVuZV9yZXN1bHRfbGlzdCkKIHsKIAlDYWNoZWRQbGFuICpwbGFuID0gTlVMTDsKIAlMaXN0CSAg ICpxbGlzdDsKIAlib29sCQljdXN0b21wbGFuOworCUxpc3QJICAgKm15X3BhcnRfcHJ1bmVfcmVz dWx0X2xpc3Q7CiAKIAkvKiBBc3NlcnQgY2FsbGVyIGlzIGRvaW5nIHRoaW5ncyBpbiBhIHNhbmUg b3JkZXIgKi8KIAlBc3NlcnQocGxhbnNvdXJjZS0+bWFnaWMgPT0gQ0FDSEVEUExBTlNPVVJDRV9N QUdJQyk7CkBAIC0xMTYwLDcgKzEyMTQsOCBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3Vy Y2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAKIAlpZiAoIWN1c3Rv bXBsYW4pCiAJewotCQlpZiAoQ2hlY2tDYWNoZWRQbGFuKHBsYW5zb3VyY2UpKQorCQlpZiAoQ2hl Y2tDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIGJvdW5kUGFyYW1zLAorCQkJCQkJCSZteV9wYXJ0X3By dW5lX3Jlc3VsdF9saXN0KSkKIAkJewogCQkJLyogV2Ugd2FudCBhIGdlbmVyaWMgcGxhbiwgYW5k IHdlIGFscmVhZHkgaGF2ZSBhIHZhbGlkIG9uZSAqLwogCQkJcGxhbiA9IHBsYW5zb3VyY2UtPmdw bGFuOwpAQCAtMTE2OSw3ICsxMjI0LDggQEAgR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNl ICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCQllbHNlCiAJCXsKIAkJ CS8qIEJ1aWxkIGEgbmV3IGdlbmVyaWMgcGxhbiAqLwotCQkJcGxhbiA9IEJ1aWxkQ2FjaGVkUGxh bihwbGFuc291cmNlLCBxbGlzdCwgTlVMTCwgcXVlcnlFbnYpOworCQkJcGxhbiA9IEJ1aWxkQ2Fj aGVkUGxhbihwbGFuc291cmNlLCBxbGlzdCwgTlVMTCwgcXVlcnlFbnYsCisJCQkJCQkJCSAgICZt eV9wYXJ0X3BydW5lX3Jlc3VsdF9saXN0KTsKIAkJCS8qIEp1c3QgbWFrZSByZWFsIHN1cmUgcGxh bnNvdXJjZS0+Z3BsYW4gaXMgY2xlYXIgKi8KIAkJCVJlbGVhc2VHZW5lcmljUGxhbihwbGFuc291 cmNlKTsKIAkJCS8qIExpbmsgdGhlIG5ldyBnZW5lcmljIHBsYW4gaW50byB0aGUgcGxhbnNvdXJj ZSAqLwpAQCAtMTIxNCw3ICsxMjcwLDggQEAgR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNl ICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCWlmIChjdXN0b21wbGFu KQogCXsKIAkJLyogQnVpbGQgYSBjdXN0b20gcGxhbiAqLwotCQlwbGFuID0gQnVpbGRDYWNoZWRQ bGFuKHBsYW5zb3VyY2UsIHFsaXN0LCBib3VuZFBhcmFtcywgcXVlcnlFbnYpOworCQlwbGFuID0g QnVpbGRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHFsaXN0LCBib3VuZFBhcmFtcywgcXVlcnlFbnYs CisJCQkJCQkJICAgJm15X3BhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpOwogCQkvKiBBY2N1bXVsYXRl IHRvdGFsIGNvc3RzIG9mIGN1c3RvbSBwbGFucyAqLwogCQlwbGFuc291cmNlLT50b3RhbF9jdXN0 b21fY29zdCArPSBjYWNoZWRfcGxhbl9jb3N0KHBsYW4sIHRydWUpOwogCkBAIC0xMjQ2LDYgKzEz MDMsOSBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFt TGlzdEluZm8gYm91bmRQYXJhbXMsCiAJCXBsYW4tPmlzX3NhdmVkID0gdHJ1ZTsKIAl9CiAKKwlp ZiAocGFydF9wcnVuZV9yZXN1bHRfbGlzdCkKKwkJKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QgPSBt eV9wYXJ0X3BydW5lX3Jlc3VsdF9saXN0OworCiAJcmV0dXJuIHBsYW47CiB9CiAKQEAgLTE3Mzcs MTcgKzE3OTcsMjkgQEAgUXVlcnlMaXN0R2V0UHJpbWFyeVN0bXQoTGlzdCAqc3RtdHMpCiAKIC8q CiAgKiBBY3F1aXJlRXhlY3V0b3JMb2NrczogYWNxdWlyZSBsb2NrcyBuZWVkZWQgZm9yIGV4ZWN1 dGlvbiBvZiBhIGNhY2hlZCBwbGFuOwotICogb3IgcmVsZWFzZSB0aGVtIGlmIGFjcXVpcmUgaXMg ZmFsc2UuCisgKgorICogU2VlIEdldENhY2hlZFBsYW4oKSdzIGNvbW1lbnQgZm9yIGEgZGVzY3Jp cHRpb24gb2YgcGFydF9wcnVuZV9yZXN1bHRfbGlzdC4KKyAqCisgKiBPbiByZXR1cm4sICpsb2Nr ZWRSZWxpZHNfcGVyX3N0bXQgd2lsbCBjb250YWluIGEgYml0bWFwc2V0IGZvciBldmVyeQorICog UGxhbm5lZFN0bXQgaW4gc3RtdF9saXN0LCBjb250YWluaW5nIHRoZSBSVCBpbmRleGVzIG9mIHJl bGF0aW9uIGVudHJpZXMKKyAqIGluIGl0cyByYW5nZSB0YWJsZSB0aGF0IHdlcmUgYWN0dWFsbHkg bG9ja2VkLCBvciBOVUxMIGlmIHRoZSBQbGFubmVkU3RtdAorICogY29udGFpbnMgYSB1dGlsaXR5 IHN0YXRlbWVudC4KICAqLwogc3RhdGljIHZvaWQKLUFjcXVpcmVFeGVjdXRvckxvY2tzKExpc3Qg KnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKQorQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3Rt dF9saXN0LCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAorCQkJCQkgTGlzdCAqKnBhcnRfcHJ1 bmVfcmVzdWx0X2xpc3QsCisJCQkJCSBMaXN0ICoqbG9ja2VkUmVsaWRzX3Blcl9zdG10KQogewog CUxpc3RDZWxsICAgKmxjMTsKIAorCSpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0ID0gKmxvY2tlZFJl bGlkc19wZXJfc3RtdCA9IE5JTDsKIAlmb3JlYWNoKGxjMSwgc3RtdF9saXN0KQogCXsKIAkJUGxh bm5lZFN0bXQgKnBsYW5uZWRzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIGxjMSk7Ci0J CUxpc3RDZWxsICAgKmxjMjsKKwkJUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBhcnRfcHJ1bmVfcmVz dWx0ID0gTlVMTDsKKwkJQml0bWFwc2V0ICAqYWxsTG9ja1JlbGlkczsKKwkJQml0bWFwc2V0ICAq bG9ja2VkUmVsaWRzID0gTlVMTDsKKwkJaW50CQkJcnRpOwogCiAJCWlmIChwbGFubmVkc3RtdC0+ Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJVFkpCiAJCXsKQEAgLTE3NjEsMTMgKzE4MzMsMzggQEAg QWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpCiAJCQlR dWVyeQkgICAqcXVlcnkgPSBVdGlsaXR5Q29udGFpbnNRdWVyeShwbGFubmVkc3RtdC0+dXRpbGl0 eVN0bXQpOwogCiAJCQlpZiAocXVlcnkpCi0JCQkJU2NhblF1ZXJ5Rm9yTG9ja3MocXVlcnksIGFj cXVpcmUpOworCQkJCVNjYW5RdWVyeUZvckxvY2tzKHF1ZXJ5LCB0cnVlKTsKKwkJCSpwYXJ0X3By dW5lX3Jlc3VsdF9saXN0ID0gbGFwcGVuZCgqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCwgTlVMTCk7 CiAJCQljb250aW51ZTsKIAkJfQogCi0JCWZvcmVhY2gobGMyLCBwbGFubmVkc3RtdC0+cnRhYmxl KQorCQkvKgorCQkgKiBGaWd1cmUgb3V0IHRoZSBzZXQgb2YgcmVsYXRpb25zIHRoYXQgd291bGQg bmVlZCB0byBiZSBsb2NrZWQKKwkJICogYmVmb3JlIGV4ZWN1dGluZyB0aGUgcGxhbi4KKwkJICov CisJCWlmIChwbGFubmVkc3RtdC0+Y29udGFpbnNJbml0aWFsUHJ1bmluZykKIAkJewotCQkJUmFu Z2VUYmxFbnRyeSAqcnRlID0gKFJhbmdlVGJsRW50cnkgKikgbGZpcnN0KGxjMik7CisJCQkvKgor CQkJICogT2J0YWluIHRoZSBzZXQgb2YgbGVhZiBwYXJ0aXRpb25zIHRvIGJlIGxvY2tlZC4KKwkJ CSAqCisJCQkgKiBUaGUgZm9sbG93aW5nIGRvZXMgaW5pdGlhbCBwYXJ0aXRpb24gcHJ1bmluZyB1 c2luZyB0aGUKKwkJCSAqIFBhcnRpdGlvblBydW5lSW5mb3MgZm91bmQgaW4gcGxhbm5lZHN0bXQt PnBhcnRQcnVuZUluZm9zIGFuZAorCQkJICogZmluZHMgbGVhZiBwYXJ0aXRpb25zIHRoYXQgc3Vy dml2ZSB0aGF0IHBydW5pbmcgYWNyb3NzIGFsbCB0aGUKKwkJCSAqIG5vZGVzIGluIHRoZSBwbGFu IHRyZWUuCisJCQkgKi8KKwkJCVBhcnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3Vs dCA9CisJCQkJRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKHBsYW5uZWRzdG10LCBib3VuZFBhcmFt cyk7CisKKwkJCWFsbExvY2tSZWxpZHMgPSBibXNfdW5pb24ocGxhbm5lZHN0bXQtPm1pbkxvY2tS ZWxpZHMsCisJCQkJCQkJCQkgIHBhcnRfcHJ1bmVfcmVzdWx0LT5zY2FuX2xlYWZwYXJ0X3J0aXMp OworCQl9CisJCWVsc2UKKwkJCWFsbExvY2tSZWxpZHMgPSBwbGFubmVkc3RtdC0+bWluTG9ja1Jl bGlkczsKKworCQlydGkgPSAtMTsKKwkJd2hpbGUgKChydGkgPSBibXNfbmV4dF9tZW1iZXIoYWxs TG9ja1JlbGlkcywgcnRpKSkgPiAwKQorCQl7CisJCQlSYW5nZVRibEVudHJ5ICpydGUgPSBydF9m ZXRjaChydGksIHBsYW5uZWRzdG10LT5ydGFibGUpOwogCiAJCQlpZiAocnRlLT5ydGVraW5kICE9 IFJURV9SRUxBVElPTikKIAkJCQljb250aW51ZTsKQEAgLTE3NzgsMTAgKzE4NzUsNTggQEAgQWNx dWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpCiAJCQkgKiBm YWlsIGlmIGl0J3MgYmVlbiBkcm9wcGVkIGVudGlyZWx5IC0tLSB3ZSdsbCBqdXN0IHRyYW5zaWVu dGx5CiAJCQkgKiBhY3F1aXJlIGEgbm9uLWNvbmZsaWN0aW5nIGxvY2suCiAJCQkgKi8KLQkJCWlm IChhY3F1aXJlKQotCQkJCUxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2tt b2RlKTsKLQkJCWVsc2UKLQkJCQlVbmxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJl bGxvY2ttb2RlKTsKKwkJCUxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2tt b2RlKTsKKwkJCWxvY2tlZFJlbGlkcyA9IGJtc19hZGRfbWVtYmVyKGxvY2tlZFJlbGlkcywgcnRp KTsKKwkJfQorCisJCSpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0ID0gbGFwcGVuZCgqcGFydF9wcnVu ZV9yZXN1bHRfbGlzdCwKKwkJCQkJCQkJCQkgIHBhcnRfcHJ1bmVfcmVzdWx0KTsKKwkJKmxvY2tl ZFJlbGlkc19wZXJfc3RtdCA9IGxhcHBlbmQoKmxvY2tlZFJlbGlkc19wZXJfc3RtdCwgbG9ja2Vk UmVsaWRzKTsKKwl9Cit9CisKKy8qCisgKiBSZWxlYXNlRXhlY3V0b3JMb2NrcworICogCQlSZWxl YXNlIGxvY2tzIHRoYXQgd291bGQndmUgYmVlbiBhY3F1aXJlZCBieSBhbiBlYXJsaWVyIGNhbGwg dG8KKyAqIAkJQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKQorICovCitzdGF0aWMgdm9pZAorUmVsZWFz ZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBMaXN0ICpsb2NrZWRSZWxpZHNfcGVyX3N0 bXQpCit7CisJTGlzdENlbGwgICAqbGMxLAorCQkJICAgKmxjMjsKKworCWZvcmJvdGgobGMxLCBz dG10X2xpc3QsIGxjMiwgbG9ja2VkUmVsaWRzX3Blcl9zdG10KQorCXsKKwkJUGxhbm5lZFN0bXQg KnBsYW5uZWRzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIGxjMSk7CisJCUJpdG1hcHNl dCAgKmxvY2tlZFJlbGlkcyA9IGxmaXJzdChsYzIpOworCQlpbnQJCQlydGk7CisKKwkJaWYgKHBs YW5uZWRzdG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSkKKwkJeworCQkJLyoKKwkJCSAq IElnbm9yZSB1dGlsaXR5IHN0YXRlbWVudHMsIGV4Y2VwdCB0aG9zZSAoc3VjaCBhcyBFWFBMQUlO KSB0aGF0CisJCQkgKiBjb250YWluIGEgcGFyc2VkLWJ1dC1ub3QtcGxhbm5lZCBxdWVyeS4gIE5v dGU6IGl0J3Mgb2theSB0byB1c2UKKwkJCSAqIFNjYW5RdWVyeUZvckxvY2tzLCBldmVuIHRob3Vn aCB0aGUgcXVlcnkgaGFzbid0IGJlZW4gdGhyb3VnaAorCQkJICogcnVsZSByZXdyaXRpbmcsIGJl Y2F1c2UgcmV3cml0aW5nIGRvZXNuJ3QgY2hhbmdlIHRoZSBxdWVyeQorCQkJICogcmVwcmVzZW50 YXRpb24uCisJCQkgKi8KKwkJCVF1ZXJ5CSAgICpxdWVyeSA9IFV0aWxpdHlDb250YWluc1F1ZXJ5 KHBsYW5uZWRzdG10LT51dGlsaXR5U3RtdCk7CisKKwkJCWlmIChxdWVyeSkKKwkJCQlTY2FuUXVl cnlGb3JMb2NrcyhxdWVyeSwgZmFsc2UpOworCQkJY29udGludWU7CisJCX0KKworCQlydGkgPSAt MTsKKwkJd2hpbGUgKChydGkgPSBibXNfbmV4dF9tZW1iZXIobG9ja2VkUmVsaWRzLCBydGkpKSA+ PSAwKQorCQl7CisJCQlSYW5nZVRibEVudHJ5ICpydGUgPSBydF9mZXRjaChydGksIHBsYW5uZWRz dG10LT5ydGFibGUpOworCisJCQlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTik7 CisKKwkJCS8qIFNlZSB0aGUgY29tbWVudCBpbiBBY3F1aXJlRXhlY3V0b3JMb2NrcygpLiAqLwor CQkJVW5sb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7CiAJCX0K IAl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwppbmRleCBkNTQ5ZjY2ZDRhLi4xYmJl NmI3MDRiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKQEAgLTMwMyw2ICszMDMsMjUg QEAgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwKIAlwb3J0YWwtPnN0YXR1cyA9IFBP UlRBTF9ERUZJTkVEOwogfQogCisvKgorICogUG9ydGFsU3RvcmVQYXJ0aXRpb25QcnVuZVJlc3Vs dHMKKyAqCQlDb3B5IHRoZSBnaXZlbiBsaXN0IG9mIFBhcnRpdGlvblBydW5lUmVzdWx0cyBpbnRv IHRoZSBwb3J0YWwncworICoJCWNvbnRleHQKKyAqCisgKiBUaGlzIGFsbG93cyB0aGUgY2FsbGVy IHRvIGVuc3VyZSB0aGF0IHRoZSBsaXN0IGV4aXN0cyBhcyBsb25nIGFzIHRoZSBwb3J0YWwKKyAq IGRvZXMuCisgKi8KK3ZvaWQKK1BvcnRhbFN0b3JlUGFydGl0aW9uUHJ1bmVSZXN1bHRzKFBvcnRh bCBwb3J0YWwsIExpc3QgKnBhcnRfcHJ1bmVfcmVzdWx0cykKK3sKKwlNZW1vcnlDb250ZXh0CW9s ZGN4dDsKKworCUFzc2VydEFyZyhQb3J0YWxJc1ZhbGlkKHBvcnRhbCkpOworCW9sZGN4dCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyhwb3J0YWwtPnBvcnRhbENvbnRleHQpOworCXBvcnRhbC0+cGFy dF9wcnVuZV9yZXN1bHRzID0gY29weU9iamVjdChwYXJ0X3BydW5lX3Jlc3VsdHMpOworCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworfQorCiAvKgogICogUG9ydGFsUmVsZWFzZUNhY2hl ZFBsYW4KICAqCQlSZWxlYXNlIGEgcG9ydGFsJ3MgcmVmZXJlbmNlIHRvIGl0cyBjYWNoZWQgcGxh biwgaWYgYW55LgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCmluZGV4IDllYmRlMDg5YWUuLmU1N2UxMzNm MGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAorKysgYi9zcmMv aW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKQEAgLTg3LDcgKzg3LDkgQEAgZXh0ZXJuIHZvaWQg RXhwbGFpbk9uZVV0aWxpdHkoTm9kZSAqdXRpbGl0eVN0bXQsIEludG9DbGF1c2UgKmludG8sCiAJ CQkJCQkJICBFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJ CQkgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CiAK LWV4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50 b0NsYXVzZSAqaW50bywKK2V4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpw bGFubmVkc3RtdCwKKwkJCQkJCSAgIFBhcnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jl c3VsdCwKKwkJCQkJCSAgIEludG9DbGF1c2UgKmludG8sCiAJCQkJCQkgICBFeHBsYWluU3RhdGUg KmVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCSAgIFBhcmFtTGlzdEluZm8gcGFy YW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKIAkJCQkJCSAgIGNvbnN0IGluc3RyX3Rp bWUgKnBsYW5kdXJhdGlvbiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQ YXJ0aXRpb24uaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAppbmRleCBi Zjk2MmFmN2FmLi5iZDg3NzY0MDJlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjUGFydGl0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5o CkBAIC00NSw2ICs0NSw3IEBAIGV4dGVybiB2b2lkIEV4ZWNDbGVhbnVwVHVwbGVSb3V0aW5nKE1v ZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsCiAgKiBucGFydHMJCQkJCQlMZW5ndGggb2Ygc3VicGxh bl9tYXBbXSBhbmQgc3VicGFydF9tYXBbXS4KICAqIHN1YnBsYW5fbWFwCQkJCQlTdWJwbGFuIGlu ZGV4IGJ5IHBhcnRpdGlvbiBpbmRleCwgb3IgLTEuCiAgKiBzdWJwYXJ0X21hcAkJCQkJU3VicGFy dCBpbmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIC0xLgorICogcnRpX21hcAkJCQkJCVJhbmdl IHRhYmxlIGluZGV4IGJ5IHBhcnRpdGlvbiBpbmRleCwgb3IgMC4KICAqIHByZXNlbnRfcGFydHMJ CQkJQSBCaXRtYXBzZXQgb2YgdGhlIHBhcnRpdGlvbiBpbmRleGVzIHRoYXQgd2UKICAqCQkJCQkJ CQloYXZlIHN1YnBsYW5zIG9yIHN1YnBhcnRzIGZvci4KICAqIGluaXRpYWxfcHJ1bmluZ19zdGVw cwkJTGlzdCBvZiBQYXJ0aXRpb25QcnVuZVN0ZXBzIHVzZWQgdG8KQEAgLTYxLDYgKzYyLDcgQEAg dHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YQogCWludAkJCW5wYXJ0czsK IAlpbnQJCSAgICpzdWJwbGFuX21hcDsKIAlpbnQJCSAgICpzdWJwYXJ0X21hcDsKKwlJbmRleAkg ICAqcnRpX21hcDsKIAlCaXRtYXBzZXQgICpwcmVzZW50X3BhcnRzOwogCUxpc3QJICAgKmluaXRp YWxfcHJ1bmluZ19zdGVwczsKIAlMaXN0CSAgICpleGVjX3BydW5pbmdfc3RlcHM7CkBAIC0xMjYs NSArMTI4LDEwIEBAIGV4dGVybiBQYXJ0aXRpb25QcnVuZVN0YXRlICpFeGVjSW5pdFBhcnRpdGlv blBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkJCQkJCQkJIGludCBwYXJ0X3By dW5lX2luZGV4LAogCQkJCQkJCQkJCQkJCSBCaXRtYXBzZXQgKippbml0aWFsbHlfdmFsaWRfc3Vi cGxhbnMpOwogZXh0ZXJuIEJpdG1hcHNldCAqRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRp dGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCi0JCQkJCQkJCQkJICAgYm9vbCBpbml0aWFsX3By dW5lKTsKKwkJCQkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1bmUsCisJCQkJCQkJCQkJICAgQml0 bWFwc2V0ICoqc2Nhbl9sZWFmcGFydF9ydGlzKTsKK2V4dGVybiBCaXRtYXBzZXQgKkV4ZWNQYXJ0 aXRpb25Eb0luaXRpYWxQcnVuaW5nKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJCQkJCQkJ UGFyYW1MaXN0SW5mbyBwYXJhbXMsCisJCQkJCQkJCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVp bmZvLAorCQkJCQkJCQlCaXRtYXBzZXQgKipzY2FuX2xlYWZwYXJ0X3J0aXMpOwogI2VuZGlmCQkJ CQkJCS8qIEVYRUNQQVJUSVRJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY2Rlc2MuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKaW5kZXggZTc5 ZTJjMDAxZi4uNjBkNTY0NDkwOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y2Rlc2MuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCkBAIC0zNSw2ICsz NSw4IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCS8qIFRoZXNlIGZpZWxkcyBhcmUgcHJv dmlkZWQgYnkgQ3JlYXRlUXVlcnlEZXNjICovCiAJQ21kVHlwZQkJb3BlcmF0aW9uOwkJLyogQ01E X1NFTEVDVCwgQ01EX1VQREFURSwgZXRjLiAqLwogCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdDsJ LyogcGxhbm5lcidzIG91dHB1dCAoY291bGQgYmUgdXRpbGl0eSwgdG9vKSAqLworCVBhcnRpdGlv blBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdDsgLyogRXhlY3V0b3JEb0luaXRpYWxQcnVu aW5nKCkncworCQkJCQkJCQkJCQkgICogb3V0cHV0IGZvciBwbGFubmVkc3RtdCAqLwogCWNvbnN0 IGNoYXIgKnNvdXJjZVRleHQ7CQkvKiBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkgKi8KIAlTbmFw c2hvdAlzbmFwc2hvdDsJCS8qIHNuYXBzaG90IHRvIHVzZSBmb3IgcXVlcnkgKi8KIAlTbmFwc2hv dAljcm9zc2NoZWNrX3NuYXBzaG90OwkvKiBjcm9zc2NoZWNrIGZvciBSSSB1cGRhdGUvZGVsZXRl ICovCkBAIC01Nyw2ICs1OSw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCiAvKiBpbiBw cXVlcnkuYyAqLwogZXh0ZXJuIFF1ZXJ5RGVzYyAqQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10 ICpwbGFubmVkc3RtdCwKKwkJCQkJCQkJICBQYXJ0aXRpb25QcnVuZVJlc3VsdCAqcGFydF9wcnVu ZV9yZXN1bHQsCiAJCQkJCQkJCSAgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCQkJICBT bmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJICBTbmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90 LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggZDY4YTZiOWQyOC4uNWM0YTI4MmJlMCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0xODUsNiArMTg1LDggQEAgRXhlY0dldEp1bmtBdHRy aWJ1dGUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIEF0dHJOdW1iZXIgYXR0bm8sIGJvb2wgKmlzTnVs bCkKIC8qCiAgKiBwcm90b3R5cGVzIGZyb20gZnVuY3Rpb25zIGluIGV4ZWNNYWluLmMKICAqLwor ZXh0ZXJuIFBhcnRpdGlvblBydW5lUmVzdWx0ICpFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoUGxh bm5lZFN0bXQgKnBsYW5uZWRzdG10LAorCQkJCQkJCQkJCQkJCSAgUGFyYW1MaXN0SW5mbyBwYXJh bXMpOwogZXh0ZXJuIHZvaWQgRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50 IGVmbGFncyk7CiBleHRlcm4gdm9pZCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIGV4dGVybiB2b2lkIEV4ZWN1dG9yUnVuKFF1ZXJ5RGVz YyAqcXVlcnlEZXNjLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCA2M2E4OTQ3NGRiLi4xMmVhMDZj MmY2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMv aW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTAwMSw2ICsxMDAxLDMzIEBAIHR5cGVkZWYg c3RydWN0IERvbWFpbkNvbnN0cmFpbnRTdGF0ZQogICovCiB0eXBlZGVmIFR1cGxlVGFibGVTbG90 ICooKkV4ZWNQcm9jTm9kZU10ZCkgKHN0cnVjdCBQbGFuU3RhdGUgKnBzdGF0ZSk7CiAKKy8qLS0t LS0tLS0tLS0tLS0tLQorICogUGFydGl0aW9uUHJ1bmVSZXN1bHQKKyAqCisgKiBUaGUgcmVzdWx0 IG9mIHBlcmZvcm1pbmcgRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKCkgaW52b2NhdGlvbiBvbiBh IGdpdmVuCisgKiBQbGFubmVkU3RtdC4KKyAqCisgKiBDb250YWlucyBhIGxpc3Qgb2YgQml0bWFw c2V0IG9mIHRoZSBpbmRleGVzIG9mIHRoZSBzdWJwbGFucyByZW1haW5pbmcgYWZ0ZXIKKyAqIHBl cmZvcm1pbmcgaW5pdGlhbCBwcnVuaW5nIGJ5IGNhbGxpbmcgRXhlY0ZpbmRNYXRjaGluZ1N1YlBs YW5zKCkgZm9yIGV2ZXJ5CisgKiBQYXJ0aXRpb25QcnVuZUluZm8gZm91bmQgaW4gUGxhbm5lZFN0 bXQucGFydFBydW5lSW5mb3MuICBSVCBpbmRleGVzIG9mIHRoZQorICogbGVhZiBwYXJ0aXRpb25z IHNjYW5uZWQgYnkgdGhvc2Ugc3VicGxhbnMgYWNyb3NzIGFsbCBQYXJ0aXRpb25QcnVuZUluZm9z CisgKiBhcmUgYWRkZWQgaW50byBzY2FuX2xlYWZwYXJ0X3J0aXMuCisgKgorICogVGhpcyBpcyB1 c2VkIGJ5IEdldENhY2hlZFBsYW4oKSB0byBpbmZvcm0gaXRzIGNhbGxlcnMgb2YgdGhlIHBydW5p bmcKKyAqIGRlY2lzaW9ucyBtYWRlIHdoZW4gcGVyZm9ybWluZyBBY3F1aXJlRXhlY3V0b3JMb2Nr cygpIG9uIGEgZ2l2ZW4gY2FjaGVkCisgKiBQbGFubmVkU3RtdCwgd2hpY2ggdGhlIGNhbGxlcnMg dGhlbiBwYXNzIG9uIHRvIHRoZSBleGVjdXRvci4gIFRoZSBleGVjdXRvcgorICogcmVmZXJzIHRv IHRoaXMgbm9kZSB3aGVuIGluaXRpYWxpemluZyB0aGUgcGxhbiBub2RlcyB3aGljaCBjb250YWlu IHN1YnBsYW5zCisgKiB0aGF0IG1heSBoYXZlIGJlZW4gcHJ1bmVkIGJ5IEV4ZWN1dG9yRG9Jbml0 aWFsUHJ1bmluZygpLCByYXRoZXIgdGhhbgorICogcmVkb2luZyBpbml0aWFsIHBydW5pbmcuCisg Ki8KK3R5cGVkZWYgc3RydWN0IFBhcnRpdGlvblBydW5lUmVzdWx0Cit7CisJTm9kZVRhZwkJdHlw ZTsKKworCUxpc3QJCSAgICp2YWxpZF9zdWJwbGFuX29mZnNfbGlzdDsKKwlCaXRtYXBzZXQJICAg KnNjYW5fbGVhZnBhcnRfcnRpczsKK30gUGFydGl0aW9uUHJ1bmVSZXN1bHQ7CisKIC8qIC0tLS0t LS0tLS0tLS0tLS0KICAqCQlQbGFuU3RhdGUgbm9kZQogICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL25vZGVzL25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCmluZGV4IGNkZDZk ZWJmYTAuLmIzM2Q5ZTQyNmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaApAQCAtMjEyLDYgKzIxMiw3IEBAIGV4dGVy biBzdHJ1Y3QgQml0bWFwc2V0ICpyZWFkQml0bWFwc2V0KHZvaWQpOwogZXh0ZXJuIHVpbnRwdHJf dCByZWFkRGF0dW0oYm9vbCB0eXBieXZhbCk7CiBleHRlcm4gYm9vbCAqcmVhZEJvb2xDb2xzKGlu dCBudW1Db2xzKTsKIGV4dGVybiBpbnQgKnJlYWRJbnRDb2xzKGludCBudW1Db2xzKTsKK2V4dGVy biBJbmRleCAqcmVhZEluZGV4Q29scyhpbnQgbnVtQ29scyk7CiBleHRlcm4gT2lkICpyZWFkT2lk Q29scyhpbnQgbnVtQ29scyk7CiBleHRlcm4gaW50MTYgKnJlYWRBdHRyTnVtYmVyQ29scyhpbnQg bnVtQ29scyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oIGIv c3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKaW5kZXggZDg3OTU3ZmY2Yy4uNzk1N2FlYjZk NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTEyNSw2ICsxMjUsMTkgQEAgdHlwZWRlZiBzdHJ1 Y3QgUGxhbm5lckdsb2JhbAogCS8qIExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVJbmZvIGNvbnRhaW5l ZCBpbiB0aGUgcGxhbiAqLwogCUxpc3QJICAgKnBhcnRQcnVuZUluZm9zOwogCisJLyoKKwkgKiBE byBhbnkgb2YgdGhvc2UgUGFydGl0aW9uUHJ1bmVJbmZvcyBoYXZlIGluaXRpYWwgKHByZS1leGVj KSBwcnVuaW5nCisJICogc3RlcHMgaW4gdGhlbT8KKwkgKi8KKwlib29sCQljb250YWluc0luaXRp YWxQcnVuaW5nOworCisJLyoKKwkgKiBJbmRleGVzIG9mIGFsbCByYW5nZSB0YWJsZSBlbnRyaWVz IG1pbnVzIGluZGV4ZXMgb2YgcmFuZ2UgdGFibGUgZW50cmllcworCSAqIG9mIHRoZSBsZWFmIHBh cnRpdGlvbnMgc2Nhbm5lZCBieSBwcnVuYWJsZSBzdWJwbGFuczsgc2VlCisJICogQWNxdWlyZUV4 ZWN1dG9yTG9ja3MoKQorCSAqLworCUJpdG1hcHNldCAgKm1pbkxvY2tSZWxpZHM7CisKIAkvKiBP SURzIG9mIHJlbGF0aW9ucyB0aGUgcGxhbiBkZXBlbmRzIG9uICovCiAJTGlzdAkgICAqcmVsYXRp b25PaWRzOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IGYyZGFhYmIzYjcuLjFkMmMwZDliZGYg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNs dWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC03Miw4ICs3MiwxNyBAQCB0eXBlZGVmIHN0cnVjdCBQ bGFubmVkU3RtdAogCUxpc3QJICAgKnBhcnRQcnVuZUluZm9zOwkvKiBMaXN0IG9mIFBhcnRpdGlv blBydW5lSW5mbyBjb250YWluZWQgaW4KIAkJCQkJCQkJICogdGhlIHBsYW4gKi8KIAorCWJvb2wJ CWNvbnRhaW5zSW5pdGlhbFBydW5pbmc7CS8qIERvIGFueSBvZiB0aG9zZSBQYXJ0aXRpb25QcnVu ZUluZm9zCisJCQkJCQkJCQkJICogaGF2ZSBpbml0aWFsIChwcmUtZXhlYykgcHJ1bmluZworCQkJ CQkJCQkJCSAqIHN0ZXBzIGluIHRoZW0/ICovCisKIAlMaXN0CSAgICpydGFibGU7CQkJLyogbGlz dCBvZiBSYW5nZVRibEVudHJ5IG5vZGVzICovCiAKKwlCaXRtYXBzZXQgICptaW5Mb2NrUmVsaWRz OwkvKiBJbmRleGVzIG9mIGFsbCByYW5nZSB0YWJsZSBlbnRyaWVzIG1pbnVzCisJCQkJCQkJCSAq IGluZGV4ZXMgb2YgcmFuZ2UgdGFibGUgZW50cmllcyBvZiB0aGUgbGVhZgorCQkJCQkJCQkgKiBw YXJ0aXRpb25zIHNjYW5uZWQgYnkgcHJ1bmFibGUgc3VicGxhbnM7CisJCQkJCQkJCSAqIHNlZSBB Y3F1aXJlRXhlY3V0b3JMb2NrcygpICovCisKIAkvKiBydGFibGUgaW5kZXhlcyBvZiB0YXJnZXQg cmVsYXRpb25zIGZvciBJTlNFUlQvVVBEQVRFL0RFTEVURSAqLwogCUxpc3QJICAgKnJlc3VsdFJl bGF0aW9uczsJLyogaW50ZWdlciBsaXN0IG9mIFJUIGluZGV4ZXMsIG9yIE5JTCAqLwogCkBAIC0x NDA5LDYgKzE0MTgsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhblJvd01hcmsKICAqIHBydW5lX2lu Zm9zCQkJTGlzdCBvZiBMaXN0cyBjb250YWluaW5nIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvIG5v ZGVzLAogICoJCQkJCQlvbmUgc3VibGlzdCBwZXIgcnVuLXRpbWUtcHJ1bmFibGUgcGFydGl0aW9u IGhpZXJhcmNoeQogICoJCQkJCQlhcHBlYXJpbmcgaW4gdGhlIHBhcmVudCBwbGFuIG5vZGUncyBz dWJwbGFucy4KKyAqCisgKiBuZWVkc19pbml0X3BydW5pbmcJRG9lcyBhbnkgb2YgdGhlIFBhcnRp dGlvbmVkUmVsUHJ1bmVJbmZvcyBpbgorICoJCQkJCQlwcnVuZV9pbmZvcyBoYXZlIGl0cyBpbml0 aWFsX3BydW5pbmdfc3RlcHMgc2V0PworICoKKyAqIG5lZWRzX2V4ZWNfcHJ1bmluZwlEb2VzIGFu eSBvZiB0aGUgUGFydGl0aW9uZWRSZWxQcnVuZUluZm9zIGluCisgKgkJCQkJCXBydW5lX2luZm9z IGhhdmUgaXRzIGV4ZWNfcHJ1bmluZ19zdGVwcyBzZXQ/CisgKgogICogb3RoZXJfc3VicGxhbnMJ CUluZGV4ZXMgb2YgYW55IHN1YnBsYW5zIHRoYXQgYXJlIG5vdCBhY2NvdW50ZWQgZm9yCiAgKgkJ CQkJCWJ5IGFueSBvZiB0aGUgUGFydGl0aW9uZWRSZWxQcnVuZUluZm8gbm9kZXMgaW4KICAqCQkJ CQkJInBydW5lX2luZm9zIi4gIFRoZXNlIHN1YnBsYW5zIG11c3Qgbm90IGJlIHBydW5lZC4KQEAg LTE0MTksNiArMTQzNSw4IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvblBydW5lSW5mbwogCiAJ Tm9kZVRhZwkJdHlwZTsKIAlMaXN0CSAgICpwcnVuZV9pbmZvczsKKwlib29sCQluZWVkc19pbml0 X3BydW5pbmc7CisJYm9vbAkJbmVlZHNfZXhlY19wcnVuaW5nOwogCUJpdG1hcHNldCAgKm90aGVy X3N1YnBsYW5zOwogfSBQYXJ0aXRpb25QcnVuZUluZm87CiAKQEAgLTE0NjMsNiArMTQ4MSw5IEBA IHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvCiAJLyogcmVsYXRpb24gT0lE IGJ5IHBhcnRpdGlvbiBpbmRleCwgb3IgMCAqLwogCU9pZAkJICAgKnJlbGlkX21hcCBwZ19ub2Rl X2F0dHIoYXJyYXlfc2l6ZShucGFydHMpKTsKIAorCS8qIFJhbmdlIHRhYmxlIGluZGV4IGJ5IHBh cnRpdGlvbiBpbmRleCwgb3IgMC4gKi8KKwlJbmRleAkgICAqcnRpX21hcCBwZ19ub2RlX2F0dHIo YXJyYXlfc2l6ZShucGFydHMpKTsKKwogCS8qCiAJICogaW5pdGlhbF9wcnVuaW5nX3N0ZXBzIHNo b3dzIGhvdyB0byBwcnVuZSBkdXJpbmcgZXhlY3V0b3Igc3RhcnR1cCAoaS5lLiwKIAkgKiB3aXRo b3V0IHVzZSBvZiBhbnkgUEFSQU1fRVhFQyBQYXJhbXMpOyBpdCBpcyBOSUwgaWYgbm8gc3RhcnR1 cCBwcnVuaW5nCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCmluZGV4IDA0OTk2MzVmNTkuLjFjNWJiNWVjZTEg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCisrKyBiL3NyYy9pbmNs dWRlL3V0aWxzL3BsYW5jYWNoZS5oCkBAIC0yMjAsNyArMjIwLDggQEAgZXh0ZXJuIExpc3QgKkNh Y2hlZFBsYW5HZXRUYXJnZXRMaXN0KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiBleHRl cm4gQ2FjaGVkUGxhbiAqR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNl LAogCQkJCQkJCQkgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKIAkJCQkJCQkJIFJlc291cmNl T3duZXIgb3duZXIsCi0JCQkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CisJCQkJ CQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKKwkJCQkJCQkJIExpc3QgKipwYXJ0X3By dW5lX3Jlc3VsdF9saXN0KTsKIGV4dGVybiB2b2lkIFJlbGVhc2VDYWNoZWRQbGFuKENhY2hlZFBs YW4gKnBsYW4sIFJlc291cmNlT3duZXIgb3duZXIpOwogCiBleHRlcm4gYm9vbCBDYWNoZWRQbGFu QWxsb3dzU2ltcGxlVmFsaWRpdHlDaGVjayhDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggYi9zcmMvaW5jbHVkZS91dGls cy9wb3J0YWwuaAppbmRleCBhZWRkYmRhZmU1Li45Zjc3MjdhODM3IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS91dGlscy9wb3J0YWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaApA QCAtMTM4LDYgKzEzOCw3IEBAIHR5cGVkZWYgc3RydWN0IFBvcnRhbERhdGEKIAlRdWVyeUNvbXBs ZXRpb24gcWM7CQkJLyogY29tbWFuZCBjb21wbGV0aW9uIGRhdGEgZm9yIGV4ZWN1dGVkIHF1ZXJ5 ICovCiAJTGlzdAkgICAqc3RtdHM7CQkJLyogbGlzdCBvZiBQbGFubmVkU3RtdHMgKi8KIAlDYWNo ZWRQbGFuICpjcGxhbjsJCQkvKiBDYWNoZWRQbGFuLCBpZiBzdG10cyBhcmUgZnJvbSBvbmUgKi8K KwlMaXN0CSAgICpwYXJ0X3BydW5lX3Jlc3VsdHM7CS8qIGxpc3Qgb2YgUGFydGl0aW9uUHJ1bmVS ZXN1bHRzICovCiAKIAlQYXJhbUxpc3RJbmZvIHBvcnRhbFBhcmFtczsgLyogcGFyYW1zIHRvIHBh c3MgdG8gcXVlcnkgKi8KIAlRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudjsgLyogZW52aXJvbm1l bnQgZm9yIHF1ZXJ5ICovCkBAIC0yNDIsNiArMjQzLDggQEAgZXh0ZXJuIHZvaWQgUG9ydGFsRGVm aW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwKIAkJCQkJCQkgIENvbW1hbmRUYWcgY29tbWFuZFRhZywK IAkJCQkJCQkgIExpc3QgKnN0bXRzLAogCQkJCQkJCSAgQ2FjaGVkUGxhbiAqY3BsYW4pOworZXh0 ZXJuIHZvaWQgUG9ydGFsU3RvcmVQYXJ0aXRpb25QcnVuZVJlc3VsdHMoUG9ydGFsIHBvcnRhbCwK KwkJCQkJCQkJCQkJIExpc3QgKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpOwogZXh0ZXJuIFBsYW5u ZWRTdG10ICpQb3J0YWxHZXRQcmltYXJ5U3RtdChQb3J0YWwgcG9ydGFsKTsKIGV4dGVybiB2b2lk IFBvcnRhbENyZWF0ZUhvbGRTdG9yZShQb3J0YWwgcG9ydGFsKTsKIGV4dGVybiB2b2lkIFBvcnRh bEhhc2hUYWJsZURlbGV0ZUFsbCh2b2lkKTsKLS0gCjIuMzUuMwoK --0000000000007ac1f305e3aa0ff6 Content-Type: application/octet-stream; name="v18-0001-Move-PartitioPruneInfo-out-of-plan-nodes-into-Pl.patch" Content-Disposition: attachment; filename="v18-0001-Move-PartitioPruneInfo-out-of-plan-nodes-into-Pl.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l5j8fq0k1 RnJvbSA1NzE0MjRkN2YxZDVjYjhiM2VlNTk4NTM2NDlkMzU3MzFiMDMzYjAzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCAyNyBNYXkgMjAyMiAxNjowMDoyOCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjE4IDEv Ml0gTW92ZSBQYXJ0aXRpb1BydW5lSW5mbyBvdXQgb2YgcGxhbiBub2RlcyBpbnRvCiBQbGFubmVk U3RtdAoKVGhlIHBsYW5uZXIgd2lsbCBub3cgYWRkIGEgZ2l2ZW4gUGFydGl0aW9QcnVuZUluZm8g dG8KUGxhbm5lZFN0bXQucGFydFBydW5lSW5mb3MgaW5zdGVhZCBvZiBkaXJlY3RseSB0byB0aGUK QXBwZW5kL01lcmdlQXBwZW5kIHBsYW4gbm9kZS4gIFdoYXQgZ2V0cyBzZXQgaW5zdGVhZCBpbiB0 aGUKbGF0dGVyIGlzIGFuIGluZGV4IGZpZWxkIHdoaWNoIHBvaW50cyB0byB0aGUgbGlzdCBlbGVt ZW50Cm9mIFBsYW5uZWRTdG10LnBhcnRQcnVuZUluZm9zIGNvbnRhaW5pbmcgdGhlIFBhcnRpdGlv UHJ1bmVJbmZvCmJlbG9uZ2luZyB0byB0aGUgcGxhbiBub2RlLgoKQSBsYXRlciBjb21taXQgd2ls bCBtYWtlIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgZG8gdGhlIGluaXRpYWwKcGFydGl0aW9uIHBy dW5pbmcgdG8gZGV0ZXJtaW5lIGEgbWluaW1hbCBzZXQgb2YgcGFydGl0aW9ucyB0byBiZQpsb2Nr ZWQgd2hlbiB2YWxpZGF0aW5nIGEgcGxhbiB0cmVlIGFuZCBpdCB3aWxsIG5lZWQgdG8gY29uc3Vs dCB0aGUKUGFydGl0aW9QcnVuZUluZm9zIHJlZmVyZW5jZWQgdGhlcmVpbiB0byBkbyBzby4gIEl0 IHdvdWxkIGJlIGJldHRlcgpmb3IgdGhlIFBhcnRpdGlvUHJ1bmVJbmZvcyB0byBiZSBhY2Nlc3Np YmxlIGRpcmVjdGx5IHRoYW4gcmVxdWlyaW5nCmEgd2FsayBvZiB0aGUgcGxhbiB0cmVlIHRvIGZp bmQgdGhlbSwgd2hpY2ggaXMgZWFzaWVyIHdoZW4gaXQgY2FuIGJlCmRvbmUgYnkgc2ltcGx5IGl0 ZXJhdGluZyBvdmVyIFBsYW5uZWRTdG10LnBhcnRQcnVuZUluZm9zLgotLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQYXJhbGxlbC5jICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uYyAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyAgICAg ICAgfCAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgICAgICAgfCAgNCAr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgIHwgIDQgKy0KIHNyYy9i YWNrZW5kL25vZGVzL291dGZ1bmNzLmMgICAgICAgICAgICB8ICAxIC0KIHNyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyB8IDI0ICsrKystLS0tLQogc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm5lci5jICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vc2V0cmVmcy5jICAgIHwgNjUgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogc3JjL2JhY2tl bmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jICAgIHwgMTggKysrKy0tLQogc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oICAgIHwgIDMgKy0KIHNyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oICAgICAgICAgICB8ICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5o ICAgICAgICAgICB8ICA2ICsrKwogc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggICAgICAg ICAgIHwgMTEgKysrLS0KIHNyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaCAgICB8 ICA4ICstLQogMTYgZmlsZXMgY2hhbmdlZCwgOTIgaW5zZXJ0aW9ucygrKSwgNjMgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggZWYyZmQ0NjA5Mi4uNzJmYzI3MzUyNCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC04MjUsNiArODI1LDcgQEAgSW5pdFBsYW4oUXVl cnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJRXhlY0luaXRSYW5nZVRhYmxlKGVzdGF0 ZSwgcmFuZ2VUYWJsZSk7CiAKIAllc3RhdGUtPmVzX3BsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7 CisJZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zID0gcGxhbm5lZHN0bXQtPnBhcnRQcnVuZUlu Zm9zOwogCiAJLyoKIAkgKiBOZXh0LCBidWlsZCB0aGUgRXhlY1Jvd01hcmsgYXJyYXkgZnJvbSB0 aGUgUGxhblJvd01hcmsocyksIGlmIGFueS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMK aW5kZXggZjFmZDdmN2U4Yi4uZjczYjhjMjYwNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFs bGVsLmMKQEAgLTE4Myw2ICsxODMsNyBAQCBFeGVjU2VyaWFsaXplUGxhbihQbGFuICpwbGFuLCBF U3RhdGUgKmVzdGF0ZSkKIAlwc3RtdC0+ZGVwZW5kc09uUm9sZSA9IGZhbHNlOwogCXBzdG10LT5w YXJhbGxlbE1vZGVOZWVkZWQgPSBmYWxzZTsKIAlwc3RtdC0+cGxhblRyZWUgPSBwbGFuOworCXBz dG10LT5wYXJ0UHJ1bmVJbmZvcyA9IGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvczsKIAlwc3Rt dC0+cnRhYmxlID0gZXN0YXRlLT5lc19yYW5nZV90YWJsZTsKIAlwc3RtdC0+cmVzdWx0UmVsYXRp b25zID0gTklMOwogCXBzdG10LT5hcHBlbmRSZWxhdGlvbnMgPSBOSUw7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFydGl0aW9uLmMKaW5kZXggZTAzZWEyNzI5OS4uYjU1Y2RkMjU4MCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtMTYzOCwxMSArMTYzOCwxMyBAQCBhZGp1c3Rf cGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFw KQogUGFydGl0aW9uUHJ1bmVTdGF0ZSAqCiBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0 YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkgaW50IG5fdG90YWxfc3VicGxhbnMsCi0JCQkJCQkgUGFy dGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCisJCQkJCQkgaW50IHBhcnRfcHJ1bmVfaW5kZXgs CiAJCQkJCQkgQml0bWFwc2V0ICoqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKQogewogCVBhcnRp dGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBwbGFuc3Rh dGUtPnN0YXRlOworCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvID0gbGlzdF9udGgoZXN0 YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zLAorCQkJCQkJCQkJCQkgcGFydF9wcnVuZV9pbmRleCk7 CiAKIAkvKiBXZSBtYXkgbmVlZCBhbiBleHByZXNzaW9uIGNvbnRleHQgdG8gZXZhbHVhdGUgcGFy dGl0aW9uIGV4cHJzICovCiAJRXhlY0Fzc2lnbkV4cHJDb250ZXh0KGVzdGF0ZSwgcGxhbnN0YXRl KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKaW5kZXggOWRmMWY4MWVhOC4uZjljNzk3NmZmMiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKQEAgLTExOSw2ICsxMTksOCBAQCBDcmVhdGVFeGVj dXRvclN0YXRlKHZvaWQpCiAJZXN0YXRlLT5lc19yZWxhdGlvbnMgPSBOVUxMOwogCWVzdGF0ZS0+ ZXNfcm93bWFya3MgPSBOVUxMOwogCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBOVUxMOworCWVz dGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcyA9IE5JTDsKKwllc3RhdGUtPmVzX3BhcnRfcHJ1bmVf cmVzdWx0ID0gTlVMTDsKIAogCWVzdGF0ZS0+ZXNfanVua0ZpbHRlciA9IE5VTEw7CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVBcHBlbmQuYwppbmRleCAzNTdlMTBhMWQ3Li5jNmY4NmE2NTEwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC0xMzQsNyArMTM0LDcgQEAgRXhlY0luaXRBcHBlbmQo QXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlhcHBlbmRzdGF0ZS0+ YXNfYmVndW4gPSBmYWxzZTsKIAogCS8qIElmIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGlz IGVuYWJsZWQsIHRoZW4gc2V0IHRoYXQgdXAgbm93ICovCi0JaWYgKG5vZGUtPnBhcnRfcHJ1bmVf aW5mbyAhPSBOVUxMKQorCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZGV4ID49IDApCiAJewogCQlQ YXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwogCkBAIC0xNDUsNyArMTQ1LDcgQEAgRXhl Y0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJ ICovCiAJCXBydW5lc3RhdGUgPSBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoJmFwcGVuZHN0YXRl LT5wcywKIAkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5hcHBlbmRwbGFucyksCi0JCQkJ CQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmZvLAorCQkJCQkJCQkJCQkgIG5vZGUtPnBhcnRf cHJ1bmVfaW5kZXgsCiAJCQkJCQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOwogCQlhcHBlbmRzdGF0 ZS0+YXNfcHJ1bmVfc3RhdGUgPSBwcnVuZXN0YXRlOwogCQlucGxhbnMgPSBibXNfbnVtX21lbWJl cnModmFsaWRzdWJwbGFucyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWVyZ2VBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCmlu ZGV4IGM1YzYyZmE1YzcuLjhkMzU4NjBjMzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVNZXJnZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJn ZUFwcGVuZC5jCkBAIC04Miw3ICs4Miw3IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBl bmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCW1lcmdlc3RhdGUtPnBzLkV4 ZWNQcm9jTm9kZSA9IEV4ZWNNZXJnZUFwcGVuZDsKIAogCS8qIElmIHJ1bi10aW1lIHBhcnRpdGlv biBwcnVuaW5nIGlzIGVuYWJsZWQsIHRoZW4gc2V0IHRoYXQgdXAgbm93ICovCi0JaWYgKG5vZGUt PnBhcnRfcHJ1bmVfaW5mbyAhPSBOVUxMKQorCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZGV4ID49 IDApCiAJewogCQlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwogCkBAIC05Myw3ICs5 Myw3IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogCQkgKi8KIAkJcHJ1bmVzdGF0ZSA9IEV4ZWNJbml0UGFydGl0aW9u UHJ1bmluZygmbWVyZ2VzdGF0ZS0+cHMsCiAJCQkJCQkJCQkJCSAgbGlzdF9sZW5ndGgobm9kZS0+ bWVyZ2VwbGFucyksCi0JCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmZvLAorCQkJCQkJ CQkJCQkgIG5vZGUtPnBhcnRfcHJ1bmVfaW5kZXgsCiAJCQkJCQkJCQkJCSAgJnZhbGlkc3VicGxh bnMpOwogCQltZXJnZXN0YXRlLT5tc19wcnVuZV9zdGF0ZSA9IHBydW5lc3RhdGU7CiAJCW5wbGFu cyA9IGJtc19udW1fbWVtYmVycyh2YWxpZHN1YnBsYW5zKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL25vZGVzL291dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCmluZGV4 IDRkNzc2ZTdiNTEuLjgxZjZhOTA5M2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL291 dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwpAQCAtMjk5LDcgKzI5 OSw2IEBAIG91dERhdHVtKFN0cmluZ0luZm8gc3RyLCBEYXR1bSB2YWx1ZSwgaW50IHR5cGxlbiwg Ym9vbCB0eXBieXZhbCkKICAqIFN1cHBvcnQgZnVuY3Rpb25zIGZvciBub2RlcyB3aXRoIGN1c3Rv bV9yZWFkX3dyaXRlIGF0dHJpYnV0ZSBvcgogICogc3BlY2lhbF9yZWFkX3dyaXRlIGF0dHJpYnV0 ZQogICovCi0KIHN0YXRpYyB2b2lkCiBfb3V0Q29uc3QoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IENv bnN0ICpub2RlKQogewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3Jl YXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCmluZGV4 IDc2NjA2ZmFhM2UuLjU4YTA1Y2Y2NzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL2NyZWF0ZXBsYW4uYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVh dGVwbGFuLmMKQEAgLTEyMDMsNyArMTIwMyw2IEBAIGNyZWF0ZV9hcHBlbmRfcGxhbihQbGFubmVy SW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRoLCBpbnQgZmxhZ3MpCiAJTGlzdENlbGwg ICAqc3VicGF0aHM7CiAJaW50CQkJbmFzeW5jcGxhbnMgPSAwOwogCVJlbE9wdEluZm8gKnJlbCA9 IGJlc3RfcGF0aC0+cGF0aC5wYXJlbnQ7Ci0JUGFydGl0aW9uUHJ1bmVJbmZvICpwYXJ0cHJ1bmVp bmZvID0gTlVMTDsKIAlpbnQJCQlub2RlbnVtc29ydGtleXMgPSAwOwogCUF0dHJOdW1iZXIgKm5v ZGVTb3J0Q29sSWR4ID0gTlVMTDsKIAlPaWQJCSAgICpub2RlU29ydE9wZXJhdG9ycyA9IE5VTEw7 CkBAIC0xMzU0LDYgKzEzNTMsOSBAQCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJv b3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCQlzdWJwbGFucyA9IGxhcHBl bmQoc3VicGxhbnMsIHN1YnBsYW4pOwogCX0KIAorCS8qIFNldCBiZWxvdyBpZiB3ZSBmaW5kIHF1 YWxzIHRoYXQgd2UgY2FuIHVzZSB0byBydW4tdGltZSBwcnVuZSAqLworCXBsYW4tPnBhcnRfcHJ1 bmVfaW5kZXggPSAtMTsKKwogCS8qCiAJICogSWYgYW55IHF1YWxzIGV4aXN0LCB0aGV5IG1heSBi ZSB1c2VmdWwgdG8gcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlvbgogCSAqIHBydW5pbmcgZHVyaW5n IGV4ZWN1dGlvbi4gIEdhdGhlciBpbmZvcm1hdGlvbiBuZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRv CkBAIC0xMzc3LDE2ICsxMzc5LDE0IEBAIGNyZWF0ZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAq cm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRoLCBpbnQgZmxhZ3MpCiAJCX0KIAogCQlpZiAocHJ1 bmVxdWFsICE9IE5JTCkKLQkJCXBhcnRwcnVuZWluZm8gPQotCQkJCW1ha2VfcGFydGl0aW9uX3By dW5laW5mbyhyb290LCByZWwsCi0JCQkJCQkJCQkJIGJlc3RfcGF0aC0+c3VicGF0aHMsCi0JCQkJ CQkJCQkJIHBydW5lcXVhbCk7CisJCQlwbGFuLT5wYXJ0X3BydW5lX2luZGV4ID0gbWFrZV9wYXJ0 aXRpb25fcHJ1bmVpbmZvKHJvb3QsIHJlbCwKKwkJCQkJCQkJCQkJCQkJCSAgYmVzdF9wYXRoLT5z dWJwYXRocywKKwkJCQkJCQkJCQkJCQkJCSAgcHJ1bmVxdWFsKTsKIAl9CiAKIAlwbGFuLT5hcHBl bmRwbGFucyA9IHN1YnBsYW5zOwogCXBsYW4tPm5hc3luY3BsYW5zID0gbmFzeW5jcGxhbnM7CiAJ cGxhbi0+Zmlyc3RfcGFydGlhbF9wbGFuID0gYmVzdF9wYXRoLT5maXJzdF9wYXJ0aWFsX3BhdGg7 Ci0JcGxhbi0+cGFydF9wcnVuZV9pbmZvID0gcGFydHBydW5laW5mbzsKIAogCWNvcHlfZ2VuZXJp Y19wYXRoX2luZm8oJnBsYW4tPnBsYW4sIChQYXRoICopIGJlc3RfcGF0aCk7CiAKQEAgLTE0MjYs NyArMTQyNiw2IEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwg TWVyZ2VBcHBlbmRQYXRoICpiZXN0X3BhdGgsCiAJTGlzdAkgICAqc3VicGxhbnMgPSBOSUw7CiAJ TGlzdENlbGwgICAqc3VicGF0aHM7CiAJUmVsT3B0SW5mbyAqcmVsID0gYmVzdF9wYXRoLT5wYXRo LnBhcmVudDsKLQlQYXJ0aXRpb25QcnVuZUluZm8gKnBhcnRwcnVuZWluZm8gPSBOVUxMOwogCiAJ LyoKIAkgKiBXZSBkb24ndCBoYXZlIHRoZSBhY3R1YWwgY3JlYXRpb24gb2YgdGhlIE1lcmdlQXBw ZW5kIG5vZGUgc3BsaXQgb3V0CkBAIC0xNTE5LDYgKzE1MTgsOSBAQCBjcmVhdGVfbWVyZ2VfYXBw ZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAog CQlzdWJwbGFucyA9IGxhcHBlbmQoc3VicGxhbnMsIHN1YnBsYW4pOwogCX0KIAorCS8qIFNldCBi ZWxvdyBpZiB3ZSBmaW5kIHF1YWxzIHRoYXQgd2UgY2FuIHVzZSB0byBydW4tdGltZSBwcnVuZSAq LworCW5vZGUtPnBhcnRfcHJ1bmVfaW5kZXggPSAtMTsKKwogCS8qCiAJICogSWYgYW55IHF1YWxz IGV4aXN0LCB0aGV5IG1heSBiZSB1c2VmdWwgdG8gcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlvbgog CSAqIHBydW5pbmcgZHVyaW5nIGV4ZWN1dGlvbi4gIEdhdGhlciBpbmZvcm1hdGlvbiBuZWVkZWQg YnkgdGhlIGV4ZWN1dG9yIHRvCkBAIC0xNTQyLDEzICsxNTQ0LDEzIEBAIGNyZWF0ZV9tZXJnZV9h cHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0X3BhdGgs CiAJCX0KIAogCQlpZiAocHJ1bmVxdWFsICE9IE5JTCkKLQkJCXBhcnRwcnVuZWluZm8gPSBtYWtl X3BhcnRpdGlvbl9wcnVuZWluZm8ocm9vdCwgcmVsLAotCQkJCQkJCQkJCQkJCSBiZXN0X3BhdGgt PnN1YnBhdGhzLAotCQkJCQkJCQkJCQkJCSBwcnVuZXF1YWwpOworCQkJbm9kZS0+cGFydF9wcnVu ZV9pbmRleCA9IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290LCByZWwsCisJCQkJCQkJCQkJ CQkJCQkgIGJlc3RfcGF0aC0+c3VicGF0aHMsCisJCQkJCQkJCQkJCQkJCQkgIHBydW5lcXVhbCk7 CiAJfQogCiAJbm9kZS0+bWVyZ2VwbGFucyA9IHN1YnBsYW5zOwotCW5vZGUtPnBhcnRfcHJ1bmVf aW5mbyA9IHBhcnRwcnVuZWluZm87CisKIAogCS8qCiAJICogSWYgcHJlcGFyZV9zb3J0X2Zyb21f cGF0aGtleXMgYWRkZWQgc29ydCBjb2x1bW5zLCBidXQgd2Ugd2VyZSB0b2xkIHRvCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggMDZhZDg1NmVhYy4uYjExMjQ5ZWQ4ZiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNTE4LDYgKzUxOCw3IEBAIHN0YW5k YXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsIGludCBj dXJzb3JPcHRpb25zLAogCXJlc3VsdC0+ZGVwZW5kc09uUm9sZSA9IGdsb2ItPmRlcGVuZHNPblJv bGU7CiAJcmVzdWx0LT5wYXJhbGxlbE1vZGVOZWVkZWQgPSBnbG9iLT5wYXJhbGxlbE1vZGVOZWVk ZWQ7CiAJcmVzdWx0LT5wbGFuVHJlZSA9IHRvcF9wbGFuOworCXJlc3VsdC0+cGFydFBydW5lSW5m b3MgPSBnbG9iLT5wYXJ0UHJ1bmVJbmZvczsKIAlyZXN1bHQtPnJ0YWJsZSA9IGdsb2ItPmZpbmFs cnRhYmxlOwogCXJlc3VsdC0+cmVzdWx0UmVsYXRpb25zID0gZ2xvYi0+cmVzdWx0UmVsYXRpb25z OwogCXJlc3VsdC0+YXBwZW5kUmVsYXRpb25zID0gZ2xvYi0+YXBwZW5kUmVsYXRpb25zOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IDljZWY5MmNhYjIuLmI4ZDU2MTA1OTMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAgLTM0OCw2ICszNDgsMjkgQEAg c2V0X3BsYW5fcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqcGxhbikKIAkJfQog CX0KIAorCS8qIEFsc28gZml4IHVwIHRoZSBpbmZvcm1hdGlvbiBpbiBQYXJ0aXRpb25QcnVuZUlu Zm9zLiAqLworCWZvcmVhY2ggKGxjLCByb290LT5wYXJ0UHJ1bmVJbmZvcykKKwl7CisJCVBhcnRp dGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvID0gbGZpcnN0KGxjKTsKKwkJTGlzdENlbGwgICpsOwor CisJCWZvcmVhY2gobCwgcHJ1bmVpbmZvLT5wcnVuZV9pbmZvcykKKwkJeworCQkJTGlzdAkgICAq cHJ1bmVfaW5mb3MgPSBsZmlyc3QobCk7CisJCQlMaXN0Q2VsbCAgICpsMjsKKworCQkJZm9yZWFj aChsMiwgcHJ1bmVfaW5mb3MpCisJCQl7CisJCQkJUGFydGl0aW9uZWRSZWxQcnVuZUluZm8gKnBp bmZvID0gbGZpcnN0KGwyKTsKKworCQkJCS8qIFJUIGluZGV4IG9mIHRoZSB0YWJsZSB0byB3aGlj aCB0aGUgcGluZm8gYmVsb25ncy4gKi8KKwkJCQlwaW5mby0+cnRpbmRleCArPSBydG9mZnNldDsK KwkJCX0KKwkJfQorCisJCWdsb2ItPnBhcnRQcnVuZUluZm9zID0gbGFwcGVuZChnbG9iLT5wYXJ0 UHJ1bmVJbmZvcywgcHJ1bmVpbmZvKTsKKwl9CisKIAlyZXR1cm4gcmVzdWx0OwogfQogCkBAIC0x NjU1LDIxICsxNjc4LDEyIEBAIHNldF9hcHBlbmRfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9v dCwKIAogCWFwbGFuLT5hcHByZWxpZHMgPSBvZmZzZXRfcmVsaWRfc2V0KGFwbGFuLT5hcHByZWxp ZHMsIHJ0b2Zmc2V0KTsKIAotCWlmIChhcGxhbi0+cGFydF9wcnVuZV9pbmZvKQotCXsKLQkJZm9y ZWFjaChsLCBhcGxhbi0+cGFydF9wcnVuZV9pbmZvLT5wcnVuZV9pbmZvcykKLQkJewotCQkJTGlz dAkgICAqcHJ1bmVfaW5mb3MgPSBsZmlyc3QobCk7Ci0JCQlMaXN0Q2VsbCAgICpsMjsKLQotCQkJ Zm9yZWFjaChsMiwgcHJ1bmVfaW5mb3MpCi0JCQl7Ci0JCQkJUGFydGl0aW9uZWRSZWxQcnVuZUlu Zm8gKnBpbmZvID0gbGZpcnN0KGwyKTsKLQotCQkJCXBpbmZvLT5ydGluZGV4ICs9IHJ0b2Zmc2V0 OwotCQkJfQotCQl9Ci0JfQorCS8qCisJICogUGFydGl0aW9uUHJ1bmVJbmZvcyB3aWxsIGJlIGFk ZGVkIHRvIGEgbGlzdCBpbiBQbGFubmVyR2xvYmFsLCBzbyB1cGRhdGUKKwkgKiB0aGUgaW5kZXgu CisJICovCisJaWYgKGFwbGFuLT5wYXJ0X3BydW5lX2luZGV4ID49IDApCisJCWFwbGFuLT5wYXJ0 X3BydW5lX2luZGV4ICs9IGxpc3RfbGVuZ3RoKHJvb3QtPmdsb2ItPnBhcnRQcnVuZUluZm9zKTsK IAogCS8qIFdlIGRvbid0IG5lZWQgdG8gcmVjdXJzZSB0byBsZWZ0dHJlZSBvciByaWdodHRyZWUg Li4uICovCiAJQXNzZXJ0KGFwbGFuLT5wbGFuLmxlZnR0cmVlID09IE5VTEwpOwpAQCAtMTcyNywy MSArMTc0MSwxMiBAQCBzZXRfbWVyZ2VhcHBlbmRfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9v dCwKIAogCW1wbGFuLT5hcHByZWxpZHMgPSBvZmZzZXRfcmVsaWRfc2V0KG1wbGFuLT5hcHByZWxp ZHMsIHJ0b2Zmc2V0KTsKIAotCWlmIChtcGxhbi0+cGFydF9wcnVuZV9pbmZvKQotCXsKLQkJZm9y ZWFjaChsLCBtcGxhbi0+cGFydF9wcnVuZV9pbmZvLT5wcnVuZV9pbmZvcykKLQkJewotCQkJTGlz dAkgICAqcHJ1bmVfaW5mb3MgPSBsZmlyc3QobCk7Ci0JCQlMaXN0Q2VsbCAgICpsMjsKLQotCQkJ Zm9yZWFjaChsMiwgcHJ1bmVfaW5mb3MpCi0JCQl7Ci0JCQkJUGFydGl0aW9uZWRSZWxQcnVuZUlu Zm8gKnBpbmZvID0gbGZpcnN0KGwyKTsKLQotCQkJCXBpbmZvLT5ydGluZGV4ICs9IHJ0b2Zmc2V0 OwotCQkJfQotCQl9Ci0JfQorCS8qCisJICogUGFydGl0aW9uUHJ1bmVJbmZvcyB3aWxsIGJlIGFk ZGVkIHRvIGEgbGlzdCBpbiBQbGFubmVyR2xvYmFsLCBzbyB1cGRhdGUKKwkgKiB0aGUgaW5kZXgu CisJICovCisJaWYgKG1wbGFuLT5wYXJ0X3BydW5lX2luZGV4ID49IDApCisJCW1wbGFuLT5wYXJ0 X3BydW5lX2luZGV4ICs9IGxpc3RfbGVuZ3RoKHJvb3QtPmdsb2ItPnBhcnRQcnVuZUluZm9zKTsK IAogCS8qIFdlIGRvbid0IG5lZWQgdG8gcmVjdXJzZSB0byBsZWZ0dHJlZSBvciByaWdodHRyZWUg Li4uICovCiAJQXNzZXJ0KG1wbGFuLT5wbGFuLmxlZnR0cmVlID09IE5VTEwpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jIGIvc3JjL2JhY2tlbmQvcGFy dGl0aW9uaW5nL3BhcnRwcnVuZS5jCmluZGV4IDlkM2MwNWFlZDMuLmQ3N2Y3ZDNhZWYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYworKysgYi9zcmMvYmFj a2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKQEAgLTIwOSwxNiArMjA5LDIwIEBAIHN0YXRp YyB2b2lkIHBhcnRrZXlfZGF0dW1fZnJvbV9leHByKFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29u dGV4dCwKIAogLyoKICAqIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbwotICoJCUJ1aWxkcyBhIFBh cnRpdGlvblBydW5lSW5mbyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgZXhlY3V0b3IgdG8gYWxs b3cKLSAqCQlhZGRpdGlvbmFsIHBhcnRpdGlvbiBwcnVuaW5nIHRvIHRha2UgcGxhY2UuICBSZXR1 cm5zIE5VTEwgd2hlbgotICoJCXBhcnRpdGlvbiBwcnVuaW5nIHdvdWxkIGJlIHVzZWxlc3MuCisg KgkJQ2hlY2tzIGlmIHRoZSBnaXZlbiBzZXQgb2YgcXVhbHMgY2FuIGJlIHVzZWQgdG8gYnVpbGQg cHJ1bmluZyBzdGVwcworICoJCXRoYXQgdGhlIGV4ZWN1dG9yIGNhbiB1c2UgdG8gcHJ1bmUgYXdh eSB1bm5lZWRlZCBwYXJ0aXRpb25zLiAgSWYKKyAqCQlzdWl0YWJsZSBxdWFscyBhcmUgZm91bmQg dGhlbiBhIFBhcnRpdGlvblBydW5lSW5mbyBpcyBidWlsdCBhbmQgdGFnZ2VkCisgKgkJb250byB0 aGUgUGxhbm5lckluZm8ncyBwYXJ0UHJ1bmVJbmZvcyBsaXN0LgorICoKKyAqIFRoZSByZXR1cm4g dmFsdWUgaXMgdGhlIDAtYmFzZWQgaW5kZXggb2YgdGhlIGl0ZW0gYWRkZWQgdG8gdGhlCisgKiBw YXJ0UHJ1bmVJbmZvcyBsaXN0IG9yIC0xIGlmIG5vdGhpbmcgd2FzIGFkZGVkLgogICoKICAqICdw YXJlbnRyZWwnIGlzIHRoZSBSZWxPcHRJbmZvIGZvciBhbiBhcHBlbmRyZWwsIGFuZCAnc3VicGF0 aHMnIGlzIHRoZSBsaXN0CiAgKiBvZiBzY2FuIHBhdGhzIGZvciBpdHMgY2hpbGQgcmVscy4KICAq ICdwcnVuZXF1YWwnIGlzIGEgbGlzdCBvZiBwb3RlbnRpYWwgcHJ1bmluZyBxdWFscyAoaS5lLiwg cmVzdHJpY3Rpb24KICAqIGNsYXVzZXMgdGhhdCBhcmUgYXBwbGljYWJsZSB0byB0aGUgYXBwZW5k cmVsKS4KICAqLwotUGFydGl0aW9uUHJ1bmVJbmZvICoKK2ludAogbWFrZV9wYXJ0aXRpb25fcHJ1 bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCQkJCQkg TGlzdCAqc3VicGF0aHMsCiAJCQkJCQkgTGlzdCAqcHJ1bmVxdWFsKQpAQCAtMzMyLDcgKzMzNiw3 IEBAIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5m byAqcGFyZW50cmVsLAogCSAqIHF1YWxzLCB0aGVuIHdlIGNhbiBqdXN0IG5vdCBib3RoZXIgd2l0 aCBydW4tdGltZSBwcnVuaW5nLgogCSAqLwogCWlmIChwcnVuZXJlbGluZm9zID09IE5JTCkKLQkJ cmV0dXJuIE5VTEw7CisJCXJldHVybiAtMTsKIAogCS8qIEVsc2UgYnVpbGQgdGhlIHJlc3VsdCBk YXRhIHN0cnVjdHVyZSAqLwogCXBydW5laW5mbyA9IG1ha2VOb2RlKFBhcnRpdGlvblBydW5lSW5m byk7CkBAIC0zNTgsNyArMzYyLDkgQEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJZWxzZQogCQlwcnVuZWluZm8tPm90 aGVyX3N1YnBsYW5zID0gTlVMTDsKIAotCXJldHVybiBwcnVuZWluZm87CisJcm9vdC0+cGFydFBy dW5lSW5mb3MgPSBsYXBwZW5kKHJvb3QtPnBhcnRQcnVuZUluZm9zLCBwcnVuZWluZm8pOworCisJ cmV0dXJuIGxpc3RfbGVuZ3RoKHJvb3QtPnBhcnRQcnVuZUluZm9zKSAtIDE7CiB9CiAKIC8qCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmggYi9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKaW5kZXggNzA4NDM1ZTk1Mi4uYmY5NjJhZjdh ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCisrKyBi L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaApAQCAtMTIzLDkgKzEyMyw4IEBA IHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvblBydW5lU3RhdGUKIAogZXh0ZXJuIFBhcnRpdGlvblBy dW5lU3RhdGUgKkV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwK IAkJCQkJCQkJCQkJCQkgaW50IG5fdG90YWxfc3VicGxhbnMsCi0JCQkJCQkJCQkJCQkJIFBhcnRp dGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAorCQkJCQkJCQkJCQkJCSBpbnQgcGFydF9wcnVuZV9p bmRleCwKIAkJCQkJCQkJCQkJCQkgQml0bWFwc2V0ICoqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5z KTsKIGV4dGVybiBCaXRtYXBzZXQgKkV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25Q cnVuZVN0YXRlICpwcnVuZXN0YXRlLAogCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSk7 Ci0KICNlbmRpZgkJCQkJCQkvKiBFWEVDUEFSVElUSU9OX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgK aW5kZXggMDFiMTcyN2ZjMC4uNjNhODk0NzRkYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTYx MSw2ICs2MTEsOCBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAlzdHJ1Y3QgRXhlY1Jvd01hcmsg Kiplc19yb3dtYXJrczsJLyogQXJyYXkgb2YgcGVyLXJhbmdlLXRhYmxlLWVudHJ5CiAJCQkJCQkJ CQkJICogRXhlY1Jvd01hcmtzLCBvciBOVUxMIGlmIG5vbmUgKi8KIAlQbGFubmVkU3RtdCAqZXNf cGxhbm5lZHN0bXQ7CS8qIGxpbmsgdG8gdG9wIG9mIHBsYW4gdHJlZSAqLworCUxpc3QJCSplc19w YXJ0X3BydW5lX2luZm9zOwkvKiBQbGFubmVkU3RtdC5wYXJ0UHJ1bmVJbmZvcyAqLworCXN0cnVj dCBQYXJ0aXRpb25QcnVuZVJlc3VsdCAqZXNfcGFydF9wcnVuZV9yZXN1bHQ7IC8qIFF1ZXJ5RGVz Yy5wYXJ0X3BydW5lX3Jlc3VsdCAqLwogCWNvbnN0IGNoYXIgKmVzX3NvdXJjZVRleHQ7CS8qIFNv dXJjZSB0ZXh0IGZyb20gUXVlcnlEZXNjICovCiAKIAlKdW5rRmlsdGVyICplc19qdW5rRmlsdGVy OwkvKiB0b3AtbGV2ZWwganVuayBmaWx0ZXIsIGlmIGFueSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApp bmRleCA0NGZmYzczZjE1Li5kODc5NTdmZjZjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtMTIy LDYgKzEyMiw5IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZXJHbG9iYWwKIAkvKiAiZmxhdCIgbGlz dCBvZiBBcHBlbmRSZWxJbmZvcyAqLwogCUxpc3QJICAgKmFwcGVuZFJlbGF0aW9uczsKIAorCS8q IExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVJbmZvIGNvbnRhaW5lZCBpbiB0aGUgcGxhbiAqLworCUxp c3QJICAgKnBhcnRQcnVuZUluZm9zOworCiAJLyogT0lEcyBvZiByZWxhdGlvbnMgdGhlIHBsYW4g ZGVwZW5kcyBvbiAqLwogCUxpc3QJICAgKnJlbGF0aW9uT2lkczsKIApAQCAtNDgwLDYgKzQ4Myw5 IEBAIHN0cnVjdCBQbGFubmVySW5mbwogCiAJLyogRG9lcyB0aGlzIHF1ZXJ5IG1vZGlmeSBhbnkg cGFydGl0aW9uIGtleSBjb2x1bW5zPyAqLwogCWJvb2wJCXBhcnRDb2xzVXBkYXRlZDsKKworCS8q IFBhcnRpdGlvblBydW5lSW5mb3MgYWRkZWQgaW4gdGhpcyBxdWVyeSdzIHBsYW4uICovCisJTGlz dAkgICAqcGFydFBydW5lSW5mb3M7CiB9OwogCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25v ZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggZGNh MmEyMWU3YS4uZjJkYWFiYjNiNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTY5LDYgKzY5LDkg QEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lZFN0bXQKIAogCXN0cnVjdCBQbGFuICpwbGFuVHJlZTsJ CS8qIHRyZWUgb2YgUGxhbiBub2RlcyAqLwogCisJTGlzdAkgICAqcGFydFBydW5lSW5mb3M7CS8q IExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVJbmZvIGNvbnRhaW5lZCBpbgorCQkJCQkJCQkgKiB0aGUg cGxhbiAqLworCiAJTGlzdAkgICAqcnRhYmxlOwkJCS8qIGxpc3Qgb2YgUmFuZ2VUYmxFbnRyeSBu b2RlcyAqLwogCiAJLyogcnRhYmxlIGluZGV4ZXMgb2YgdGFyZ2V0IHJlbGF0aW9ucyBmb3IgSU5T RVJUL1VQREFURS9ERUxFVEUgKi8KQEAgLTI2OSw4ICsyNzIsOCBAQCB0eXBlZGVmIHN0cnVjdCBB cHBlbmQKIAkgKi8KIAlpbnQJCQlmaXJzdF9wYXJ0aWFsX3BsYW47CiAKLQkvKiBJbmZvIGZvciBy dW4tdGltZSBzdWJwbGFuIHBydW5pbmc7IE5VTEwgaWYgd2UncmUgbm90IGRvaW5nIHRoYXQgKi8K LQlzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVJbmZvICpwYXJ0X3BydW5lX2luZm87CisJLyogSW5kZXgg dG8gUGxhbm5lckluZm8ucGFydFBydW5lSW5mb3Mgb3IgLTEgaWYgbm8gcnVuLXRpbWUgcHJ1bmlu ZyAqLworCWludAkJCXBhcnRfcHJ1bmVfaW5kZXg7CiB9IEFwcGVuZDsKIAogLyogLS0tLS0tLS0t LS0tLS0tLQpAQCAtMzA0LDggKzMwNyw4IEBAIHR5cGVkZWYgc3RydWN0IE1lcmdlQXBwZW5kCiAJ LyogTlVMTFMgRklSU1QvTEFTVCBkaXJlY3Rpb25zICovCiAJYm9vbAkgICAqbnVsbHNGaXJzdCBw Z19ub2RlX2F0dHIoYXJyYXlfc2l6ZShudW1Db2xzKSk7CiAKLQkvKiBJbmZvIGZvciBydW4tdGlt ZSBzdWJwbGFuIHBydW5pbmc7IE5VTEwgaWYgd2UncmUgbm90IGRvaW5nIHRoYXQgKi8KLQlzdHJ1 Y3QgUGFydGl0aW9uUHJ1bmVJbmZvICpwYXJ0X3BydW5lX2luZm87CisJLyogSW5kZXggdG8gUGxh bm5lckluZm8ucGFydFBydW5lSW5mb3Mgb3IgLTEgaWYgbm8gcnVuLXRpbWUgcHJ1bmluZyAqLwor CWludAkJCXBhcnRfcHJ1bmVfaW5kZXg7CiB9IE1lcmdlQXBwZW5kOwogCiAvKiAtLS0tLS0tLS0t LS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmgg Yi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmgKaW5kZXggOTA2ODRlZmEyNS4u ZWJmMGRjZmY4YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVu ZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaApAQCAtNzAsMTAg KzcwLDEwIEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvblBydW5lQ29udGV4dAogI2RlZmluZSBQ cnVuZUN4dFN0YXRlSWR4KHBhcnRuYXR0cywgc3RlcF9pZCwga2V5bm8pIFwKIAkoKHBhcnRuYXR0 cykgKiAoc3RlcF9pZCkgKyAoa2V5bm8pKQogCi1leHRlcm4gUGFydGl0aW9uUHJ1bmVJbmZvICpt YWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oc3RydWN0IFBsYW5uZXJJbmZvICpyb290LAotCQkJCQkJ CQkJCQkJCXN0cnVjdCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCi0JCQkJCQkJCQkJCQkJTGlzdCAq c3VicGF0aHMsCi0JCQkJCQkJCQkJCQkJTGlzdCAqcHJ1bmVxdWFsKTsKK2V4dGVybiBpbnQgbWFr ZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHN0cnVjdCBQbGFubmVySW5mbyAqcm9vdCwKKwkJCQkJCQkJ CXN0cnVjdCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCisJCQkJCQkJCQlMaXN0ICpzdWJwYXRocywK KwkJCQkJCQkJCUxpc3QgKnBydW5lcXVhbCk7CiBleHRlcm4gQml0bWFwc2V0ICpwcnVuZV9hcHBl bmRfcmVsX3BhcnRpdGlvbnMoc3RydWN0IFJlbE9wdEluZm8gKnJlbCk7CiBleHRlcm4gQml0bWFw c2V0ICpnZXRfbWF0Y2hpbmdfcGFydGl0aW9ucyhQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRl eHQsCiAJCQkJCQkJCQkJICBMaXN0ICpwcnVuaW5nX3N0ZXBzKTsKLS0gCjIuMzUuMwoK --0000000000007ac1f305e3aa0ff6--